<?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>72855</bug_id>
          
          <creation_ts>2011-11-20 21:56:49 -0800</creation_ts>
          <short_desc>JavaScriptCore: Mark all exported symbols in the header file automatically.</short_desc>
          <delta_ts>2012-01-12 23:24:26 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>74990</dependson>
    
    <dependson>76147</dependson>
          <blocked>67852</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hajime Morrita">morrita</reporter>
          <assigned_to name="Hajime Morrita">morrita</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>kevino</cc>
    
    <cc>levin+threading</cc>
    
    <cc>mrowe</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>506700</commentid>
    <comment_count>0</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-11-20 21:56:49 -0800</bug_when>
    <thetext>I&apos;m writing a tool for that:
https://github.com/omo/ListExportables
Will announce this effort in webkit-dev shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506757</commentid>
    <comment_count>1</comment_count>
      <attachid>116040</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-11-21 00:22:19 -0800</bug_when>
    <thetext>Created attachment 116040
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506758</commentid>
    <comment_count>2</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-11-21 00:23:07 -0800</bug_when>
    <thetext>This is just a preliminary result. What should land would be generated  from the ToT at that timing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506855</commentid>
    <comment_count>3</comment_count>
      <attachid>116064</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-11-21 04:09:35 -0800</bug_when>
    <thetext>Created attachment 116064
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506857</commentid>
    <comment_count>4</comment_count>
      <attachid>116064</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-11-21 04:11:09 -0800</bug_when>
    <thetext>Comment on attachment 116064
Patch

Uploaded to the wrong bug...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509578</commentid>
    <comment_count>5</comment_count>
      <attachid>116700</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-11-27 23:02:15 -0800</bug_when>
    <thetext>Created attachment 116700
It&apos;s ready to review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509580</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-27 23:05:15 -0800</bug_when>
    <thetext>Attachment 116700 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/API/OpaqueJSString.h...&quot; exit_code: 1

Last 3072 characters of output:
[readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSFunction.h:57:  The parameter name &quot;nativeFunction&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/wtf/FastMalloc.h:32:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/PropertyDescriptor.h:50:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/wtf/MainThread.h:49:  The parameter name &quot;paused&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSWrapperObject.h:31:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSLock.h:96:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/wtf/text/StringImpl.h:279:  The parameter name &quot;buffer&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSGlobalData.h:301:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/wtf/ByteArray.h:86:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/InitializeThreading.h:36:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/wtf/ThreadingPrimitives.h:136:  The parameter name &quot;mutex&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/bytecode/SamplingTool.h:223:  Missing spaces around =  [whitespace/operators] [4]
Source/JavaScriptCore/wtf/RandomNumber.h:33:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSCell.h:79:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSCell.h:80:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSCell.h:81:  Use 0 or null instead of NULL (even in *comments*).  [readability/null] [4]
Source/JavaScriptCore/wtf/text/AtomicString.h:57:  The parameter name &quot;s&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:78:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:78:  The parameter name &quot;entry&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:78:  The parameter name &quot;slot&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/StringObject.h:29:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 25 in 90 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>509581</commentid>
    <comment_count>7</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-11-27 23:06:49 -0800</bug_when>
    <thetext>Blocking bugs being removed, now this is ready for the review for applying the rewrite!
You can validate the build by applying the the preliminary patch on Bug 72854,
which disables export list.

Note that
- The rewrite is based on svn r101220.
- Reported style error is false positive. touched line already contained such errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509591</commentid>
    <comment_count>8</comment_count>
      <attachid>116700</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-11-27 23:19:34 -0800</bug_when>
    <thetext>Comment on attachment 116700
It&apos;s ready to review

Attachment 116700 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/10639428</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509593</commentid>
    <comment_count>9</comment_count>
      <attachid>116700</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-11-27 23:20:39 -0800</bug_when>
    <thetext>Comment on attachment 116700
It&apos;s ready to review

Attachment 116700 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/10643406</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509601</commentid>
    <comment_count>10</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-11-27 23:33:27 -0800</bug_when>
    <thetext>Oops. I need to change WebCore/config.h... Filed at Bug 73191.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509641</commentid>
    <comment_count>11</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2011-11-28 01:18:46 -0800</bug_when>
    <thetext>The fact that we have to switch from inline to JS_INLINE in such a large number of places makes this super ugly. I can also see people being confused as to when JS_INLINE should be used rather than just the regular inline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509695</commentid>
    <comment_count>12</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-11-28 03:03:22 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; The fact that we have to switch from inline to JS_INLINE in such a large number of places makes this super ugly. I can also see people being confused as to when JS_INLINE should be used rather than just the regular inline.

Basically I agree with you that forcing JS_INLINE is ugly.

Fortunately, JS_INLINE will be used in limited places:
We need it only for inline method whose class has exported constructors and a vtable.

Also, that means we can reduce the number of JS_INLINE by making create() methods non-inline.
I can help such inline to non-inline conversion if you are OK.

We need JS_INLINE (explicit &quot;hidden&quot; visibility annotation) because
there is no way to make vtables visible using source annotation except marking classes as visible.

I think this is a reasonable compromise compared to using export lists.
But I&apos;d love to hear your suggestion.

Yet another idea is to #define inline ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510854</commentid>
    <comment_count>13</comment_count>
      <attachid>116700</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-11-29 09:30:22 -0800</bug_when>
    <thetext>Comment on attachment 116700
It&apos;s ready to review

Attachment 116700 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/10678739</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510861</commentid>
    <comment_count>14</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-11-29 09:42:12 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; The fact that we have to switch from inline to JS_INLINE in such a large number of places makes this super ugly. I can also see people being confused as to when JS_INLINE should be used rather than just the regular inline.
&gt; 
&gt; Basically I agree with you that forcing JS_INLINE is ugly.
&gt; 
&gt; Fortunately, JS_INLINE will be used in limited places:
&gt; We need it only for inline method whose class has exported constructors and a vtable.
&gt; 
&gt; Also, that means we can reduce the number of JS_INLINE by making create() methods non-inline.
&gt; I can help such inline to non-inline conversion if you are OK.
&gt; 
&gt; We need JS_INLINE (explicit &quot;hidden&quot; visibility annotation) because
&gt; there is no way to make vtables visible using source annotation except marking classes as visible.
&gt; 
&gt; I think this is a reasonable compromise compared to using export lists.
&gt; But I&apos;d love to hear your suggestion.
&gt; 
&gt; Yet another idea is to #define inline ...

Does the build break if I get it wrong? (I would consider this a nice feature.)

In order words, how can we help people to get this right? (Both when to include it and when not to include it.)

PS I love the idea!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514805</commentid>
    <comment_count>15</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-12-04 18:16:12 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #12)
&gt; &gt; (In reply to comment #11)
&gt; &gt; &gt; The fact that we have to switch from inline to JS_INLINE in such a large number of places makes this super ugly. I can also see people being confused as to when JS_INLINE should be used rather than just the regular inline.
&gt; &gt; 
&gt; &gt; Basically I agree with you that forcing JS_INLINE is ugly.
&gt; &gt; 
&gt; &gt; Fortunately, JS_INLINE will be used in limited places:
&gt; &gt; We need it only for inline method whose class has exported constructors and a vtable.
&gt; &gt; 
&gt; &gt; Also, that means we can reduce the number of JS_INLINE by making create() methods non-inline.
&gt; &gt; I can help such inline to non-inline conversion if you are OK.
&gt; &gt; 
&gt; &gt; We need JS_INLINE (explicit &quot;hidden&quot; visibility annotation) because
&gt; &gt; there is no way to make vtables visible using source annotation except marking classes as visible.
&gt; &gt; 
&gt; &gt; I think this is a reasonable compromise compared to using export lists.
&gt; &gt; But I&apos;d love to hear your suggestion.
&gt; &gt; 
&gt; &gt; Yet another idea is to #define inline ...
&gt; 
&gt; Does the build break if I get it wrong? (I would consider this a nice feature.)
&gt; 
&gt; In order words, how can we help people to get this right? (Both when to include it and when not to include it.)
&gt; 
Oops. Sorry for the slow response...
For Mac the build will simply fail because of the checker script.
For Chromium, maybe we can improve our clang plugin to detect this.
For other port, I have no idea. I guess it&apos;s possible to write a checker script which is similar to Mac&apos;s,
but I&apos;m not sure. Fortunately the EWS has chromium bot so it would help other port developers.

&gt; PS I love the idea!
Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519005</commentid>
    <comment_count>16</comment_count>
      <attachid>116700</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-12-11 21:29:28 -0800</bug_when>
    <thetext>Comment on attachment 116700
It&apos;s ready to review

clearing r? until the blocking bugs are fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533694</commentid>
    <comment_count>17</comment_count>
      <attachid>121986</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-01-11 00:08:55 -0800</bug_when>
    <thetext>Created attachment 121986
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533700</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-11 00:12:00 -0800</bug_when>
    <thetext>Attachment 121986 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/API/OpaqueJSString.h...&quot; exit_code: 1

Last 3072 characters of output:
ty/parameter_name] [5]
Source/JavaScriptCore/runtime/Identifier.h:123:  The parameter name &quot;r&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSFunction.h:54:  The parameter name &quot;nativeFunction&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/wtf/FastMalloc.h:32:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/PropertyDescriptor.h:55:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/wtf/MainThread.h:50:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/wtf/MainThread.h:52:  The parameter name &quot;paused&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSLock.h:96:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/wtf/text/StringImpl.h:278:  The parameter name &quot;buffer&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSGlobalData.h:315:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/wtf/ByteArray.h:86:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/InitializeThreading.h:36:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/wtf/ThreadingPrimitives.h:124:  The parameter name &quot;mutex&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/bytecode/SamplingTool.h:223:  Missing spaces around =  [whitespace/operators] [4]
Source/JavaScriptCore/wtf/RandomNumber.h:33:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSCell.h:85:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSCell.h:86:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSCell.h:87:  Use 0 or null instead of NULL (even in *comments*).  [readability/null] [4]
Source/JavaScriptCore/wtf/text/AtomicString.h:57:  The parameter name &quot;s&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:78:  The parameter name &quot;exec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:78:  The parameter name &quot;entry&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/JSObject.h:78:  The parameter name &quot;slot&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 24 in 89 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>533702</commentid>
    <comment_count>19</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-01-11 00:13:37 -0800</bug_when>
    <thetext>Finally, the patch is ready!
I confirmed that this can be buit even without exp file on SL (The exp list removal patch is on Bug 72854)
Thanks for the clean API design of JSC, we don&apos;t need any extra INLINE macros.

After landing this change, I&apos;ll attack both exp file (on Mac) and def file (on Windows).

Note that style red is false positive. That has been there before this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533723</commentid>
    <comment_count>20</comment_count>
      <attachid>121986</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-11 00:40:58 -0800</bug_when>
    <thetext>Comment on attachment 121986
Patch

Attachment 121986 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11207108</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534430</commentid>
    <comment_count>21</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-01-11 17:09:49 -0800</bug_when>
    <thetext>Darin, thanks you for the review!
I&apos;ll fix the chromium bot problem (it should be done by a separate patch) then land this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535435</commentid>
    <comment_count>22</comment_count>
      <attachid>122369</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-01-12 22:01:17 -0800</bug_when>
    <thetext>Created attachment 122369
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535439</commentid>
    <comment_count>23</comment_count>
      <attachid>122369</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-12 22:04:30 -0800</bug_when>
    <thetext>Comment on attachment 122369
Patch for landing

Rejecting attachment 122369 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
ring.h
patching file Source/JavaScriptCore/wtf/text/StringBuilder.h
patching file Source/JavaScriptCore/wtf/text/StringImpl.h
patching file Source/JavaScriptCore/wtf/text/WTFString.h
patching file Source/JavaScriptCore/wtf/unicode/Collator.h
patching file Source/JavaScriptCore/wtf/unicode/UTF8.h
patching file Source/JavaScriptCore/yarr/Yarr.h
patching file Source/JavaScriptCore/yarr/YarrPattern.h

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;]&quot; exit_code: 1

Full output: http://queues.webkit.org/results/11142891</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535466</commentid>
    <comment_count>24</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-01-12 23:24:26 -0800</bug_when>
    <thetext>Committed r104900: &lt;http://trac.webkit.org/changeset/104900&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116040</attachid>
            <date>2011-11-21 00:22:19 -0800</date>
            <delta_ts>2011-11-27 23:02:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72855-20111121172216.patch</filename>
            <type>text/plain</type>
            <size>186980</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwODg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
NDlkODI5MTk3MjJlMTA0OTZmMmU4MjhjMDQ3NDMwMjMyNDMyODEzLi4xZjFiYTM5YTYxMjJlZThl
M2Q1NTZmNmY5N2QyMWI1ZGU4NmEyYzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMTUgQEAKKzIwMTEtMTEtMjEgIEhhamltZSBNb3JyaXRhICA8bW9ycml0YUBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgSmF2YVNjcmlwdENvcmU6IE1hcmsgYWxsIGV4cG9ydGVkIHN5bWJv
bHMgaW4gdGhlIGhlYWRlciBmaWxlIGF1dG9tYXRpY2FsbHkuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mjg1NQorCisgICAgICAgIEFkZGVkIGV4cG9y
dCBxdWFsaWZpZXJzIHVzaW5nIExpc3RFeHBvcnRhYmxlcyB0b29sLgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQVBJL09wYXF1ZUpTU3RyaW5nLmg6
CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgICogYnl0ZWNvZGUvU2Ft
cGxpbmdUb29sLmg6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXIuaDoKKyAgICAgICAgKiBk
ZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaDoKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dl
ckNhbGxGcmFtZS5oOgorICAgICAgICAqIGhlYXAvQWxsb2NhdGlvblNwYWNlLmg6CisgICAgICAg
ICogaGVhcC9IYW5kbGVIZWFwLmg6CisgICAgICAgICogaGVhcC9IZWFwLmg6CisgICAgICAgICog
aGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuaDoKKyAgICAgICAgKiBoZWFwL01hcmtTdGFjay5oOgor
ICAgICAgICAqIGhlYXAvVlRhYmxlU3BlY3RydW0uaDoKKyAgICAgICAgKiBoZWFwL1dyaXRlQmFy
cmllclN1cHBvcnQuaDoKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoKKyAgICAgICAgKiBwYXJz
ZXIvUGFyc2VyQXJlbmEuaDoKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlLmg6CisgICAgICAg
ICogcnVudGltZS9BcmdMaXN0Lmg6CisgICAgICAgICogcnVudGltZS9DYWxsRGF0YS5oOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29tcGxldGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29uc3RydWN0
RGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZUluc3RhbmNlLmg6CisgICAgICAgICogcnVu
dGltZS9FcnJvci5oOgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oOgorICAg
ICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUv
SGV1cmlzdGljcy5oOgorICAgICAgICAqIHJ1bnRpbWUvSWRlbnRpZmllci5oOgorICAgICAgICAq
IHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50ZXJu
YWxGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5oOgorICAgICAgICAqIHJ1
bnRpbWUvSlNCeXRlQXJyYXkuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5oOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRh
LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5oOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3RSYXJlRGF0
YTo6Y3JlYXRlUmFyZURhdGFJZk5lZWRlZCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
UmFyZURhdGE6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0UmFyZURhdGE6
OkpTR2xvYmFsT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3RSYXJlRGF0YTo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdFJhcmVEYXRhOjpy
ZWdFeHBDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0UmFyZURhdGE6
OmVycm9yQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdFJhcmVEYXRh
OjpldmFsRXJyb3JDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0UmFy
ZURhdGE6OnJhbmdlRXJyb3JDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0UmFyZURhdGE6OnJlZmVyZW5jZUVycm9yQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdFJhcmVEYXRhOjpzeW50YXhFcnJvckNvbnN0cnVjdG9yKToKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxPYmplY3RSYXJlRGF0YTo6dHlwZUVycm9yQ29uc3RydWN0b3IpOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdFJhcmVEYXRhOjpVUklFcnJvckNvbnN0cnVjdG9yKToK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3RSYXJlRGF0YTo6ZXZhbEZ1bmN0aW9uKToKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3RSYXJlRGF0YTo6Y2FsbEZ1bmN0aW9uKToKKyAgICAg
ICAgKEpTQzo6SlNHbG9iYWxPYmplY3RSYXJlRGF0YTo6YXBwbHlGdW5jdGlvbik6CisgICAgICAg
IChKU0M6OkpTR2xvYmFsT2JqZWN0UmFyZURhdGE6OnRocm93VHlwZUVycm9yR2V0dGVyU2V0dGVy
KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3RSYXJlRGF0YTo6b2JqZWN0UHJvdG90eXBl
KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3RSYXJlRGF0YTo6ZnVuY3Rpb25Qcm90b3R5
cGUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdFJhcmVEYXRhOjphcnJheVByb3RvdHlw
ZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0UmFyZURhdGE6OmJvb2xlYW5Qcm90b3R5
cGUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdFJhcmVEYXRhOjpzdHJpbmdQcm90b3R5
cGUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdFJhcmVEYXRhOjpudW1iZXJQcm90b3R5
cGUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdFJhcmVEYXRhOjpkYXRlUHJvdG90eXBl
KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3RSYXJlRGF0YTo6cmVnRXhwUHJvdG90eXBl
KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3RSYXJlRGF0YTo6bWV0aG9kQ2FsbER1bW15
KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3RSYXJlRGF0YTo6YXJndW1lbnRzU3RydWN0
dXJlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3RSYXJlRGF0YTo6YXJyYXlTdHJ1Y3R1
cmUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdFJhcmVEYXRhOjpib29sZWFuT2JqZWN0
U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3RSYXJlRGF0YTo6Y2FsbGJh
Y2tDb25zdHJ1Y3RvclN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0UmFy
ZURhdGE6OmNhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdFJhcmVEYXRhOjpjYWxsYmFja09iamVjdFN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0UmFyZURhdGE6OmRhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdFJhcmVEYXRhOjplbXB0eU9iamVjdFN0cnVjdHVyZSk6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsT2JqZWN0UmFyZURhdGE6Om51bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1cmUp
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdFJhcmVEYXRhOjplcnJvclN0cnVjdHVyZSk6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0UmFyZURhdGE6OmZ1bmN0aW9uU3RydWN0dXJl
KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3RSYXJlRGF0YTo6Ym91bmRGdW5jdGlvblN0
cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0UmFyZURhdGE6Om5hbWVkRnVu
Y3Rpb25TdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdFJhcmVEYXRhOjpm
dW5jdGlvbk5hbWVPZmZzZXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdFJhcmVEYXRh
OjpudW1iZXJPYmplY3RTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdFJh
cmVEYXRhOjppbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3RSYXJlRGF0YTo6c3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uU3RydWN0dXJlKToK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3RSYXJlRGF0YTo6cmVnRXhwTWF0Y2hlc0FycmF5
U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3RSYXJlRGF0YTo6cmVnRXhw
U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3RSYXJlRGF0YTo6c3RyaW5n
T2JqZWN0U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3RSYXJlRGF0YTo6
c2V0UHJvZmlsZUdyb3VwKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3RSYXJlRGF0YTo6
cHJvZmlsZUdyb3VwKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3RSYXJlRGF0YTo6ZGVi
dWdnZXIpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdFJhcmVEYXRhOjpzZXREZWJ1Z2dl
cik6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0UmFyZURhdGE6Omdsb2JhbE9iamVjdE1l
dGhvZFRhYmxlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3RSYXJlRGF0YTo6c3VwcG9y
dHNQcm9maWxpbmcpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdFJhcmVEYXRhOjpzdXBw
b3J0c1JpY2hTb3VyY2VJbmZvKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3RSYXJlRGF0
YTo6Z2xvYmFsU2NvcGVDaGFpbik6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0UmFyZURh
dGE6OnNob3VsZEludGVycnVwdFNjcmlwdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
UmFyZURhdGE6OnNldEV2YWxFbmFibGVkKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3RS
YXJlRGF0YTo6ZXZhbEVuYWJsZWQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdFJhcmVE
YXRhOjpnbG9iYWxEYXRhKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3RSYXJlRGF0YTo6
Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3RSYXJlRGF0YTo6
cmVnaXN0ZXJXZWFrTWFwKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3RSYXJlRGF0YTo6
dW5yZWdpc3RlcldlYWtNYXApOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdFJhcmVEYXRh
Ojp3ZWFrUmFuZG9tTnVtYmVyKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnNldFJl
Z2lzdGVycyk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpoYXNPd25Qcm9wZXJ0eUZv
cldyaXRlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnN5bWJvbFRhYmxlSGFzUHJv
cGVydHkpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aXNEeW5hbWljU2NvcGUpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxUaGlzLmg6CisgICAgICAgICogcnVudGltZS9KU0xv
Y2suaDoKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6b2Zm
c2V0T2ZQcm9wZXJ0eVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6b2Zmc2V0T2ZJ
bmhlcml0b3JJRCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojppc0dsb2JhbE9iamVjdCk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0Ojppc1ZhcmlhYmxlT2JqZWN0KToKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6OmlzQWN0aXZhdGlvbk9iamVjdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpp
c0Vycm9ySW5zdGFuY2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aXNHbG9iYWxUaGlzKToK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OkpTT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OnByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpzZXRQcm90b3R5cGVXaXRo
Q3ljbGVDaGVjayk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpzZXRQcm90b3R5cGUpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6aW5oZXJpdG9ySUQpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6Z2V0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKToKKyAg
ICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0
OjpwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojp0
cmFuc2l0aW9uVG8pOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6dG9QcmltaXRpdmUpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdPYmplY3Q6
OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAoSlNDOjpS
b3BlQnVpbGRlcjo6SlNTdHJpbmcpOgorICAgICAgICAoSlNDOjpSb3BlQnVpbGRlcjo6ZmluaXNo
Q3JlYXRpb24pOgorICAgICAgICAoSlNDOjpSb3BlQnVpbGRlcjo6Y3JlYXRlTnVsbCk6CisgICAg
ICAgIChKU0M6OlJvcGVCdWlsZGVyOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpSb3BlQnVpbGRl
cjo6Y3JlYXRlSGFzT3RoZXJPd25lcik6CisgICAgICAgIChKU0M6OlJvcGVCdWlsZGVyOjp2YWx1
ZSk6CisgICAgICAgIChKU0M6OlJvcGVCdWlsZGVyOjp0cnlHZXRWYWx1ZSk6CisgICAgICAgIChK
U0M6OlJvcGVCdWlsZGVyOjpsZW5ndGgpOgorICAgICAgICAoSlNDOjpSb3BlQnVpbGRlcjo6Y2Fu
R2V0SW5kZXgpOgorICAgICAgICAoSlNDOjpSb3BlQnVpbGRlcjo6Y3JlYXRlU3RydWN0dXJlKToK
KyAgICAgICAgKEpTQzo6Um9wZUJ1aWxkZXI6Om9mZnNldE9mTGVuZ3RoKToKKyAgICAgICAgKEpT
Qzo6Um9wZUJ1aWxkZXI6Om9mZnNldE9mVmFsdWUpOgorICAgICAgICAoSlNDOjpSb3BlQnVpbGRl
cjo6aXNSb3BlKToKKyAgICAgICAgKEpTQzo6Um9wZUJ1aWxkZXI6OmlzOEJpdCk6CisgICAgICAg
IChKU0M6OlJvcGVCdWlsZGVyOjpzdHJpbmcpOgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6Z2V0
SW5kZXgpOgorICAgICAgICAqIHJ1bnRpbWUvSlNWYWx1ZS5oOgorICAgICAgICAqIHJ1bnRpbWUv
SlNWYXJpYWJsZU9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU1ZhcmlhYmxlT2JqZWN0OjpzeW1i
b2xUYWJsZUdldCk6CisgICAgICAgIChKU0M6OkpTVmFyaWFibGVPYmplY3Q6OnN5bWJvbFRhYmxl
UHV0KToKKyAgICAgICAgKEpTQzo6SlNWYXJpYWJsZU9iamVjdDo6c3ltYm9sVGFibGVQdXRXaXRo
QXR0cmlidXRlcyk6CisgICAgICAgIChKU0M6OkpTVmFyaWFibGVPYmplY3Q6OmNvcHlSZWdpc3Rl
ckFycmF5KToKKyAgICAgICAgKEpTQzo6SlNWYXJpYWJsZU9iamVjdDo6c2V0UmVnaXN0ZXJzKToK
KyAgICAgICAgKiBydW50aW1lL0pTV3JhcHBlck9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU1dy
YXBwZXJPYmplY3Q6OkpTV3JhcHBlck9iamVjdCk6CisgICAgICAgIChKU0M6OkpTV3JhcHBlck9i
amVjdDo6aW50ZXJuYWxWYWx1ZSk6CisgICAgICAgIChKU0M6OkpTV3JhcHBlck9iamVjdDo6c2V0
SW50ZXJuYWxWYWx1ZSk6CisgICAgICAgICogcnVudGltZS9Mb29rdXAuaDoKKyAgICAgICAgKiBy
dW50aW1lL01lbW9yeVN0YXRpc3RpY3MuaDoKKyAgICAgICAgKiBydW50aW1lL09iamVjdFByb3Rv
dHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmg6CisgICAgICAg
ICogcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oOgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVy
dHlTbG90Lmg6CisgICAgICAgICogcnVudGltZS9SZWdFeHAuaDoKKyAgICAgICAgKiBydW50aW1l
L1JlZ0V4cE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvU2FtcGxpbmdDb3VudGVyLmg6Cisg
ICAgICAgICogcnVudGltZS9TY29wZUNoYWluLmg6CisgICAgICAgIChKU0M6OlNjb3BlQ2hhaW5O
b2RlOjpwdXNoKToKKyAgICAgICAgKEpTQzo6U2NvcGVDaGFpbk5vZGU6OnBvcCk6CisgICAgICAg
IChKU0M6OlNjb3BlQ2hhaW5Ob2RlOjpiZWdpbik6CisgICAgICAgIChKU0M6OlNjb3BlQ2hhaW5O
b2RlOjplbmQpOgorICAgICAgICAqIHJ1bnRpbWUvU21hbGxTdHJpbmdzLmg6CisgICAgICAgICog
cnVudGltZS9TdHJpbmdPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgor
ICAgICAgICAqIHJ1bnRpbWUvVGltZW91dENoZWNrZXIuaDoKKyAgICAgICAgKiBydW50aW1lL1VT
dHJpbmcuaDoKKyAgICAgICAgKiBydW50aW1lL1dyaXRlQmFycmllci5oOgorICAgICAgICAqIHd0
Zi9CeXRlQXJyYXkuaDoKKyAgICAgICAgKiB3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1i
ZXIuaDoKKyAgICAgICAgKiB3dGYvQ3VycmVudFRpbWUuaDoKKyAgICAgICAgKiB3dGYvRGF0ZU1h
dGguaDoKKyAgICAgICAgKiB3dGYvRGVjaW1hbE51bWJlci5oOgorICAgICAgICAqIHd0Zi9GYXN0
TWFsbG9jLmNwcDoKKyAgICAgICAgKiB3dGYvRmFzdE1hbGxvYy5oOgorICAgICAgICAqIHd0Zi9N
RDUuaDoKKyAgICAgICAgKiB3dGYvTWFpblRocmVhZC5oOgorICAgICAgICAqIHd0Zi9NZXRhQWxs
b2NhdG9yLmg6CisgICAgICAgICogd3RmL01ldGFBbGxvY2F0b3JIYW5kbGUuaDoKKyAgICAgICAg
KiB3dGYvT1NBbGxvY2F0b3IuaDoKKyAgICAgICAgKiB3dGYvUGFnZUJsb2NrLmg6CisgICAgICAg
ICogd3RmL1JhbmRvbU51bWJlci5oOgorICAgICAgICAqIHd0Zi9SZWZDb3VudGVkTGVha0NvdW50
ZXIuaDoKKyAgICAgICAgKiB3dGYvU0hBMS5oOgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmcuY3Bw
OgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmcuaDoKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nUHJp
bWl0aXZlcy5oOgorICAgICAgICAqIHd0Zi9XVEZUaHJlYWREYXRhLmg6CisgICAgICAgICogd3Rm
L2R0b2EuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9BdG9taWNTdHJpbmcuaDoKKyAgICAgICAgKiB3
dGYvdGV4dC9DU3RyaW5nLmg6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oOgor
ICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZT
dHJpbmcuaDoKKyAgICAgICAgKiB3dGYvdW5pY29kZS9Db2xsYXRvci5oOgorICAgICAgICAqIHd0
Zi91bmljb2RlL1VURjguaDoKKyAgICAgICAgKiB5YXJyL1lhcnIuaDoKKyAgICAgICAgKiB5YXJy
L1lhcnJQYXR0ZXJuLmg6CisKIDIwMTEtMTEtMjAgIEhhamltZSBNb3JyaXRhICA8bW9ycml0YUBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgTmVlZHMgV1RGX0lOTElORSBhbmQgSlNfSU5MSU5FCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09wYXF1ZUpTU3RyaW5nLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09wYXF1ZUpTU3RyaW5nLmgKaW5kZXggNWMyNGY3NTEw
MWZiN2IxZmRhYzM4MmY2OGE0MzczMWU3NGM1M2FmOS4uMWM2MzE1MGNmMTU0ZTcxYzhlM2E5NmY0
N2ViZWJkODZmODgyNzk3NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9P
cGFxdWVKU1N0cmluZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT3BhcXVlSlNT
dHJpbmcuaApAQCAtNDYsNyArNDYsNyBAQCBzdHJ1Y3QgT3BhcXVlSlNTdHJpbmcgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8T3BhcXVlSlNTdHJpbmc+IHsKICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBPcGFxdWVKU1N0cmluZyhjaGFyYWN0ZXJzLCBsZW5ndGgpKTsKICAgICB9CiAK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxPcGFxdWVKU1N0cmluZz4gY3JlYXRlKGNvbnN0IEpTQzo6
VVN0cmluZyYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPE9wYXF1
ZUpTU3RyaW5nPiBjcmVhdGUoY29uc3QgSlNDOjpVU3RyaW5nJik7CiAKICAgICBVQ2hhciogY2hh
cmFjdGVycygpIHsgcmV0dXJuIHRoaXMgPyBtX2NoYXJhY3RlcnMgOiAwOyB9CiAgICAgdW5zaWdu
ZWQgbGVuZ3RoKCkgeyByZXR1cm4gdGhpcyA/IG1fbGVuZ3RoIDogMDsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IGM5OTAxZWZjZDU4YjNhMDhhZTk3
NTQyNjU4MTIyNGUxNzI3ZDkwYWYuLjk5Y2U4MzRlMWY3NzRhMzE3YTE4ZDRmOWNkMDhlNTY5ZDU4
Y2Q2ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAg
LTI2Niw3ICsyNjYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSGVhcCogbV9oZWFwOwog
CiAgICAgcHVibGljOgotICAgICAgICB2aXJ0dWFsIH5Db2RlQmxvY2soKTsKKyAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgdmlydHVhbCB+Q29kZUJsb2NrKCk7CiAKICAgICAgICAgQ29kZUJsb2Nr
KiBhbHRlcm5hdGl2ZSgpIHsgcmV0dXJuIG1fYWx0ZXJuYXRpdmUuZ2V0KCk7IH0KICAgICAgICAg
UGFzc093blB0cjxDb2RlQmxvY2s+IHJlbGVhc2VBbHRlcm5hdGl2ZSgpIHsgcmV0dXJuIG1fYWx0
ZXJuYXRpdmUucmVsZWFzZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvU2FtcGxpbmdUb29sLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
U2FtcGxpbmdUb29sLmgKaW5kZXggN2E3Njg4M2FmNjk3M2JhOTAyYzU2N2Q0Mzg2YWUwYjVjMjUz
NjA3NS4uZjIxNTNkNjEwZmExNTNjMzZiNzRkMGQ4NzI3MmVhMjVkM2UwMWE2NiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NhbXBsaW5nVG9vbC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TYW1wbGluZ1Rvb2wuaApAQCAtNDUsOCArNDUs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFNhbXBsaW5nRmxhZ3MgewogICAgIHB1
YmxpYzoKLSAgICAgICAgc3RhdGljIHZvaWQgc3RhcnQoKTsKLSAgICAgICAgc3RhdGljIHZvaWQg
c3RvcCgpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBzdGFydCgpOwor
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBzdG9wKCk7CiAKICNpZiBFTkFC
TEUoU0FNUExJTkdfRkxBR1MpCiAgICAgICAgIHN0YXRpYyB2b2lkIHNldEZsYWcodW5zaWduZWQg
ZmxhZykKQEAgLTg5LDcgKzg5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICNlbmRpZgogICAgIHBy
aXZhdGU6Ci0gICAgICAgIHN0YXRpYyB1aW50MzJfdCBzX2ZsYWdzOworICAgICAgICBKU19FWFBP
UlREQVRBIHN0YXRpYyB1aW50MzJfdCBzX2ZsYWdzOwogI2lmIEVOQUJMRShTQU1QTElOR19GTEFH
UykKICAgICAgICAgc3RhdGljIHVpbnQ2NF90IHNfZmxhZ0NvdW50c1szM107CiAjZW5kaWYKQEAg
LTE3NCw3ICsxNzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBTYW1wbGluZ1JlZ2lv
biB7CiAgICAgcHVibGljOgogICAgICAgICBTYW1wbGluZ1JlZ2lvbihjb25zdCBjaGFyKikgeyB9
Ci0gICAgICAgIHZvaWQgZHVtcCgpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGR1
bXAoKTsKICAgICB9OwogI2VuZGlmIC8vIEVOQUJMRShTQU1QTElOR19SRUdJT05TKQogCkBAIC0y
MjAsOCArMjIwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBz
X2hlcnR6OwogICAgICAgICBzdGF0aWMgVGhyZWFkSWRlbnRpZmllciBzX3NhbXBsaW5nVGhyZWFk
OwogCi0gICAgICAgIHN0YXRpYyB2b2lkIHN0YXJ0KHVuc2lnbmVkIGhlcnR6PTEwMDAwKTsKLSAg
ICAgICAgc3RhdGljIHZvaWQgc3RvcCgpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgdm9pZCBzdGFydCh1bnNpZ25lZCBoZXJ0ej0xMDAwMCk7CisgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyB2b2lkIHN0b3AoKTsKIAogICAgICAgICBzdGF0aWMgdm9pZCogdGhyZWFk
U3RhcnRGdW5jKHZvaWQqKTsKICAgICB9OwpAQCAtMzAxLDcgKzMwMSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogI2VuZGlmCiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHNldHVwKCk7CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0dXAoKTsKICAgICAgICAgdm9pZCBkdW1wKEV4ZWNT
dGF0ZSopOwogCiAgICAgICAgIHZvaWQgbm90aWZ5T2ZTY29wZShKU0dsb2JhbERhdGEmLCBTY3Jp
cHRFeGVjdXRhYmxlKiBzY29wZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGVidWdnZXIvRGVidWdnZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1
Z2dlci5oCmluZGV4IGY0ODI0M2M0NTRhYzM5NGYwZGZiOGNhYjAzZDI5N2JkMjRlZmMxOGUuLmEy
MzczMjkxODc4MDNlZGE5NTdhMzdkM2EwYTkwN2FmZjBiODkyMzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCkBAIC01OCw3ICs1OCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIH07CiAKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGV4aXN0cyBvbmx5IGZvciBiYWNr
d2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIGV4aXN0aW5nIFdlYlNjcmlwdERlYnVnZ2VyIGNsaWVu
dHMuCi0gICAgSlNWYWx1ZSBldmFsdWF0ZUluR2xvYmFsQ2FsbEZyYW1lKGNvbnN0IFVTdHJpbmcm
LCBKU1ZhbHVlJiBleGNlcHRpb24sIEpTR2xvYmFsT2JqZWN0Kik7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgSlNWYWx1ZSBldmFsdWF0ZUluR2xvYmFsQ2FsbEZyYW1lKGNvbnN0IFVTdHJpbmcmLCBK
U1ZhbHVlJiBleGNlcHRpb24sIEpTR2xvYmFsT2JqZWN0Kik7CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJB
Y3RpdmF0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3Rp
dmF0aW9uLmgKaW5kZXggNDRkMDlhMTgwNzhjNGRmZTBmN2M3MDNjYjJhNTc2MjFhMDk2MWE2NS4u
N2ViODMwOTQ2M2RkYmUwYmY3YmZmNDlhOTk2NTA5M2U0MGUyZDY3OSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaApAQCAtNjAs
MTAgKzYwLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByb3RlY3RlZDoKICAgICAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVy
dHlTbG90IHwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IEpTT2JqZWN0OjpTdHJ1Y3R1cmVGbGFn
czsKIAotICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYsIEpTT2JqZWN0
KiBhY3RpdmF0aW9uKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hDcmVh
dGlvbihKU0dsb2JhbERhdGEmLCBKU09iamVjdCogYWN0aXZhdGlvbik7CiAKICAgICBwcml2YXRl
OgotICAgICAgICBEZWJ1Z2dlckFjdGl2YXRpb24oSlNHbG9iYWxEYXRhJik7CisgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIERlYnVnZ2VyQWN0aXZhdGlvbihKU0dsb2JhbERhdGEmKTsKICAgICAg
ICAgV3JpdGVCYXJyaWVyPEpTQWN0aXZhdGlvbj4gbV9hY3RpdmF0aW9uOwogICAgIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFt
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmgK
aW5kZXggZDhmYjlkYWU1ODg0MjY3NTRiMGY0OTU0ODQ1NjM5MjU2NTVkMzM3Yi4uODYwNWFmNTRk
M2ZhNDRmMmM1YmUyMjI5OTgxMjgyMzA5NTYwYTU3ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmgKQEAgLTUwLDcgKzUwLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGR5bmFtaWNHbG9iYWxP
YmplY3QoKSBjb25zdCB7IHJldHVybiBtX2NhbGxGcmFtZS0+ZHluYW1pY0dsb2JhbE9iamVjdCgp
OyB9CiAgICAgICAgIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluKCkgY29uc3QgeyByZXR1cm4g
bV9jYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKTsgfQotICAgICAgICBjb25zdCBVU3RyaW5nKiBmdW5j
dGlvbk5hbWUoKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgVVN0cmlu
ZyogZnVuY3Rpb25OYW1lKCkgY29uc3Q7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFVTdHJp
bmcgY2FsY3VsYXRlZEZ1bmN0aW9uTmFtZSgpIGNvbnN0OwogICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSBUeXBlIHR5cGUoKSBjb25zdDsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmpl
Y3QqIHRoaXNPYmplY3QoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0FsbG9jYXRpb25TcGFjZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxs
b2NhdGlvblNwYWNlLmgKaW5kZXggNTUwY2I5YWEzYjA0NmNjOGM3NDZkZmIwMjc5OTU4YmRmYjk0
NDIxMi4uMDFjMzM5YjgzNjBhZjMzNmMyN2YzOWYwOWRiMzMyODE2NzhjOGYzYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdGlvblNwYWNlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdGlvblNwYWNlLmgKQEAgLTcyLDcgKzcyLDcg
QEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkKiBhbGxvY2F0ZShNYXJrZWRTcGFjZTo6U2l6ZUNs
YXNzJik7CiAgICAgdm9pZCogdHJ5QWxsb2NhdGUoTWFya2VkU3BhY2U6OlNpemVDbGFzcyYpOwot
ICAgIHZvaWQqIGFsbG9jYXRlU2xvd0Nhc2UoTWFya2VkU3BhY2U6OlNpemVDbGFzcyYpOworICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZvaWQqIGFsbG9jYXRlU2xvd0Nhc2UoTWFya2VkU3BhY2U6OlNp
emVDbGFzcyYpOwogICAgIE1hcmtlZEJsb2NrKiBhbGxvY2F0ZUJsb2NrKHNpemVfdCBjZWxsU2l6
ZSwgQWxsb2NhdGlvbkVmZm9ydCk7CiAgICAgCiAgICAgSGVhcCogbV9oZWFwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlSGVhcC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGFuZGxlSGVhcC5oCmluZGV4IGVlNDk5ZTUxYjU1MDBhNDJlNThjMGEz
NTFiNzFlMTg4NjRiZWFhNjcuLmFiMjZhMTQ1NjdmNjQ5NzY1YTFiODg0YTk3YjlkODBmNGNhY2Q0
M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZUhlYXAuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGVIZWFwLmgKQEAgLTQwLDcgKzQw
LDcgQEAgY2xhc3MgSlNHbG9iYWxEYXRhOwogY2xhc3MgSlNWYWx1ZTsKIGNsYXNzIFNsb3RWaXNp
dG9yOwogCi1jbGFzcyBXZWFrSGFuZGxlT3duZXIgeworY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUg
V2Vha0hhbmRsZU93bmVyIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWFrSGFuZGxlT3duZXIo
KTsKICAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSGFuZGxlPFVu
a25vd24+LCB2b2lkKiBjb250ZXh0LCBTbG90VmlzaXRvciYpOwpAQCAtNjUsNyArNjUsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCB2aXNpdFdlYWtIYW5kbGVzKEhlYXBSb290VmlzaXRvciYpOwogICAg
IHZvaWQgZmluYWxpemVXZWFrSGFuZGxlcygpOwogCi0gICAgdm9pZCB3cml0ZUJhcnJpZXIoSGFu
ZGxlU2xvdCwgY29uc3QgSlNWYWx1ZSYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgd3Jp
dGVCYXJyaWVyKEhhbmRsZVNsb3QsIGNvbnN0IEpTVmFsdWUmKTsKIAogI2lmICFBU1NFUlRfRElT
QUJMRUQKICAgICBib29sIGhhc1dlYWtPd25lcihIYW5kbGVTbG90LCBXZWFrSGFuZGxlT3duZXIq
KTsKQEAgLTExMSw3ICsxMTEsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBIYW5kbGVTbG90IHRv
SGFuZGxlKE5vZGUqKTsKICAgICBzdGF0aWMgTm9kZSogdG9Ob2RlKEhhbmRsZVNsb3QpOwogCi0g
ICAgdm9pZCBncm93KCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBncm93KCk7CiAgICAg
CiAjaWYgRU5BQkxFKEdDX1ZBTElEQVRJT04pIHx8ICFBU1NFUlRfRElTQUJMRUQKICAgICBib29s
IGlzVmFsaWRXZWFrTm9kZShOb2RlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKaW5kZXgg
MWIyMjgyNTNiODc2NjYwZmEzMGVlZWJkMDI2NGVjNGJmY2ZhZTEwNS4uM2M3OGQ2MjBmYWU0OTZi
MzQxMmNmY2IxZWMyNTJhYTc5MDFmYTQ5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaApA
QCAtNzgsMTQgKzc4LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIEhlYXAoSlNHbG9i
YWxEYXRhKiwgSGVhcFNpemUpOwogICAgICAgICB+SGVhcCgpOwotICAgICAgICB2b2lkIGRlc3Ry
b3koKTsgLy8gSlNHbG9iYWxEYXRhIG11c3QgY2FsbCBkZXN0cm95KCkgYmVmb3JlIH5IZWFwKCku
CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZGVzdHJveSgpOyAvLyBKU0dsb2JhbERh
dGEgbXVzdCBjYWxsIGRlc3Ryb3koKSBiZWZvcmUgfkhlYXAoKS4KIAogICAgICAgICBKU0dsb2Jh
bERhdGEqIGdsb2JhbERhdGEoKSBjb25zdCB7IHJldHVybiBtX2dsb2JhbERhdGE7IH0KICAgICAg
ICAgQWxsb2NhdGlvblNwYWNlJiBvYmplY3RTcGFjZSgpIHsgcmV0dXJuIG1fb2JqZWN0U3BhY2U7
IH0KICAgICAgICAgTWFjaGluZVRocmVhZHMmIG1hY2hpbmVUaHJlYWRzKCkgeyByZXR1cm4gbV9t
YWNoaW5lVGhyZWFkczsgfQogCi0gICAgICAgIEdDQWN0aXZpdHlDYWxsYmFjayogYWN0aXZpdHlD
YWxsYmFjaygpOwotICAgICAgICB2b2lkIHNldEFjdGl2aXR5Q2FsbGJhY2soUGFzc093blB0cjxH
Q0FjdGl2aXR5Q2FsbGJhY2s+KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgR0NBY3Rpdml0
eUNhbGxiYWNrKiBhY3Rpdml0eUNhbGxiYWNrKCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IHZvaWQgc2V0QWN0aXZpdHlDYWxsYmFjayhQYXNzT3duUHRyPEdDQWN0aXZpdHlDYWxsYmFjaz4p
OwogCiAgICAgICAgIC8vIHRydWUgaWYgYW4gYWxsb2NhdGlvbiBvciBjb2xsZWN0aW9uIGlzIGlu
IHByb2dyZXNzCiAgICAgICAgIGlubGluZSBib29sIGlzQnVzeSgpOwpAQCAtOTQsMjYgKzk0LDI2
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkKiBhbGxvY2F0ZShzaXplX3QpOwogCiAg
ICAgICAgIHR5cGVkZWYgdm9pZCAoKkZpbmFsaXplcikoSlNDZWxsKik7Ci0gICAgICAgIHZvaWQg
YWRkRmluYWxpemVyKEpTQ2VsbCosIEZpbmFsaXplcik7CisgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgYWRkRmluYWxpemVyKEpTQ2VsbCosIEZpbmFsaXplcik7CiAKICAgICAgICAgdm9p
ZCBub3RpZnlJc1NhZmVUb0NvbGxlY3QoKSB7IG1faXNTYWZlVG9Db2xsZWN0ID0gdHJ1ZTsgfQot
ICAgICAgICB2b2lkIGNvbGxlY3RBbGxHYXJiYWdlKCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgY29sbGVjdEFsbEdhcmJhZ2UoKTsKIAogICAgICAgICB2b2lkIHJlcG9ydEV4dHJh
TWVtb3J5Q29zdChzaXplX3QgY29zdCk7CiAKLSAgICAgICAgdm9pZCBwcm90ZWN0KEpTVmFsdWUp
OwotICAgICAgICBib29sIHVucHJvdGVjdChKU1ZhbHVlKTsgLy8gVHJ1ZSB3aGVuIHRoZSBwcm90
ZWN0IGNvdW50IGRyb3BzIHRvIDAuCisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcHJv
dGVjdChKU1ZhbHVlKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCB1bnByb3RlY3Qo
SlNWYWx1ZSk7IC8vIFRydWUgd2hlbiB0aGUgcHJvdGVjdCBjb3VudCBkcm9wcyB0byAwLgogICAg
ICAgICAKICAgICAgICAgdm9pZCBqZXR0aXNvbkRGR0NvZGVCbG9jayhQYXNzT3duUHRyPENvZGVC
bG9jaz4pOwogCi0gICAgICAgIHNpemVfdCBzaXplKCk7Ci0gICAgICAgIHNpemVfdCBjYXBhY2l0
eSgpOwotICAgICAgICBzaXplX3Qgb2JqZWN0Q291bnQoKTsKLSAgICAgICAgc2l6ZV90IGdsb2Jh
bE9iamVjdENvdW50KCk7Ci0gICAgICAgIHNpemVfdCBwcm90ZWN0ZWRPYmplY3RDb3VudCgpOwot
ICAgICAgICBzaXplX3QgcHJvdGVjdGVkR2xvYmFsT2JqZWN0Q291bnQoKTsKLSAgICAgICAgUGFz
c093blB0cjxUeXBlQ291bnRTZXQ+IHByb3RlY3RlZE9iamVjdFR5cGVDb3VudHMoKTsKLSAgICAg
ICAgUGFzc093blB0cjxUeXBlQ291bnRTZXQ+IG9iamVjdFR5cGVDb3VudHMoKTsKKyAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IHNpemUoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc2l6ZV90IGNhcGFjaXR5KCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBv
YmplY3RDb3VudCgpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzaXplX3QgZ2xvYmFsT2Jq
ZWN0Q291bnQoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IHByb3RlY3RlZE9i
amVjdENvdW50KCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBwcm90ZWN0ZWRH
bG9iYWxPYmplY3RDb3VudCgpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBQYXNzT3duUHRy
PFR5cGVDb3VudFNldD4gcHJvdGVjdGVkT2JqZWN0VHlwZUNvdW50cygpOworICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSBQYXNzT3duUHRyPFR5cGVDb3VudFNldD4gb2JqZWN0VHlwZUNvdW50cygp
OwogCiAgICAgICAgIHZvaWQgcHVzaFRlbXBTb3J0VmVjdG9yKFZlY3RvcjxWYWx1ZVN0cmluZ1Bh
aXI+Kik7CiAgICAgICAgIHZvaWQgcG9wVGVtcFNvcnRWZWN0b3IoVmVjdG9yPFZhbHVlU3RyaW5n
UGFpcj4qKTsKQEAgLTE0MSw4ICsxNDEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
IHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShIYW5kbGU8VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpOwog
ICAgICAgICB9OwogCi0gICAgICAgIGJvb2wgaXNWYWxpZEFsbG9jYXRpb24oc2l6ZV90KTsKLSAg
ICAgICAgdm9pZCByZXBvcnRFeHRyYU1lbW9yeUNvc3RTbG93Q2FzZShzaXplX3QpOworICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzVmFsaWRBbGxvY2F0aW9uKHNpemVfdCk7CisgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVwb3J0RXh0cmFNZW1vcnlDb3N0U2xvd0Nhc2Uo
c2l6ZV90KTsKIAogICAgICAgICAvLyBDYWxsIHRoaXMgZnVuY3Rpb24gYmVmb3JlIGFueSBvcGVy
YXRpb24gdGhhdCBuZWVkcyB0byBrbm93IHdoaWNoIGNlbGxzCiAgICAgICAgIC8vIGluIHRoZSBo
ZWFwIGFyZSBsaXZlLiAoRm9yIGV4YW1wbGUsIGNhbGwgdGhpcyBmdW5jdGlvbiBiZWZvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmgKaW5kZXgg
NjljNDUzN2JkYWJlZjY0YmQzZjAwODhiMWU0ZTY4NGU5MmZlYmUyZC4uMGY1YTRjM2FhMmVmMGQ2
NWExMDhkMzEwOWRkNzRkZGJiYWNhZjFlYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmgKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHZvaWQgZ2F0aGVyQ29uc2VydmF0aXZlUm9vdHMoQ29uc2VydmF0aXZlUm9v
dHMmLCB2b2lkKiBzdGFja0N1cnJlbnQpOwogCiAgICAgICAgIHZvaWQgbWFrZVVzYWJsZUZyb21N
dWx0aXBsZVRocmVhZHMoKTsKLSAgICAgICAgdm9pZCBhZGRDdXJyZW50VGhyZWFkKCk7IC8vIE9u
bHkgbmVlZHMgdG8gYmUgY2FsbGVkIGJ5IGNsaWVudHMgdGhhdCBjYW4gdXNlIHRoZSBzYW1lIGhl
YXAgZnJvbSBtdWx0aXBsZSB0aHJlYWRzLgorICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lk
IGFkZEN1cnJlbnRUaHJlYWQoKTsgLy8gT25seSBuZWVkcyB0byBiZSBjYWxsZWQgYnkgY2xpZW50
cyB0aGF0IGNhbiB1c2UgdGhlIHNhbWUgaGVhcCBmcm9tIG11bHRpcGxlIHRocmVhZHMuCiAKICAg
ICBwcml2YXRlOgogICAgICAgICB2b2lkIGdhdGhlckZyb21DdXJyZW50VGhyZWFkKENvbnNlcnZh
dGl2ZVJvb3RzJiwgdm9pZCogc3RhY2tDdXJyZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya1N0YWNrLmgKaW5kZXggYzUwODAxOTQ4ODcwMTljOWE4Y2Q0OGIzNzM3NzZkOGE4Zjk3OGRh
Ny4uN2ZlY2VjMTI4ODAzN2I1N2ZkNTE4MmI0YjYwZDE1NzM5ZWZmZTFiMiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmgKQEAgLTExMSw3ICsxMTEsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICBwcml2YXRlOgogICAgICAgICBNYXJrU3RhY2tTZWdtZW50KiBtX3RvcFNlZ21l
bnQ7CiAgICAgICAgIAotICAgICAgICB2b2lkIGV4cGFuZCgpOworICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIGV4cGFuZCgpOwogICAgICAgICAKICAgICAgICAgTWFya1N0YWNrU2VnbWVu
dEFsbG9jYXRvciYgbV9hbGxvY2F0b3I7CiAKQEAgLTI0MSw3ICsyNDEsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgfQogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICBzdGF0aWMgdm9pZCB2
YWxpZGF0ZShKU0NlbGwqKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQg
dmFsaWRhdGUoSlNDZWxsKik7CiAKICAgICAgICAgdm9pZCBhcHBlbmQoSlNWYWx1ZSopOwogICAg
ICAgICB2b2lkIGFwcGVuZChKU1ZhbHVlKiwgc2l6ZV90IGNvdW50KTsKQEAgLTI1MCw3ICsyNTAs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBpbnRlcm5hbEFwcGVuZChKU0NlbGwq
KTsKICAgICAgICAgdm9pZCBpbnRlcm5hbEFwcGVuZChKU1ZhbHVlKTsKICAgICAgICAgCi0gICAg
ICAgIHZvaWQgbWVyZ2VPcGFxdWVSb290cygpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2
b2lkIG1lcmdlT3BhcXVlUm9vdHMoKTsKICAgICAgICAgCiAgICAgICAgIHZvaWQgbWVyZ2VPcGFx
dWVSb290c0lmTmVjZXNzYXJ5KCkKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvVlRhYmxlU3BlY3RydW0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL1ZUYWJsZVNwZWN0cnVtLmgKaW5kZXggOGE5NzM3ZTliYWJmYzMwZDQxYTFmMzIwZWFiYTlm
ZDQwNTc2ZjFmNi4uYTUwYTA0ZjQ3N2NmZGRiMGI2MzVmNTFkMjgzNDYyNTA4ZDYzNzU3MyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvVlRhYmxlU3BlY3RydW0uaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9WVGFibGVTcGVjdHJ1bS5oCkBAIC0zOSw3ICsz
OSw3IEBAIHB1YmxpYzoKICAgICB+VlRhYmxlU3BlY3RydW0oKTsKICAgICAKICAgICB2b2lkIGNv
dW50VlB0cih2b2lkKik7Ci0gICAgdm9pZCBjb3VudChKU0NlbGwqKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIGNvdW50KEpTQ2VsbCopOwogICAgIAogICAgIHZvaWQgZHVtcChGSUxFKiBv
dXRwdXQsIGNvbnN0IGNoYXIqIGNvbW1lbnQpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL1dyaXRlQmFycmllclN1cHBvcnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL1dyaXRlQmFycmllclN1cHBvcnQuaAppbmRleCAwMGI5YmI5N2ZlNWNhZjFlYjlk
OWRiNjg5ZWFlOGYzNGRjYTBhNDZhLi41ZDdkMmY2ZmUxNWNhOTY1OTNkZWI5OTI2YzRmMGQ3ZTFj
Mjk2NmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Xcml0ZUJhcnJp
ZXJTdXBwb3J0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV3JpdGVCYXJyaWVy
U3VwcG9ydC5oCkBAIC04MSw4ICs4MSw4IEBAIHB1YmxpYzoKICAgICB9CiAjZWxzZQogICAgIC8v
IFRoZXNlIGFyZSBuZWNlc3NhcnkgdG8gd29yayBhcm91bmQgbm90IGhhdmluZyBjb25kaXRpb25h
bCBleHBvcnRzLgotICAgIHN0YXRpYyBjaGFyIHVzZXNXaXRoQmFycmllckZyb21DcHA7Ci0gICAg
c3RhdGljIGNoYXIgdXNlc1dpdGhvdXRCYXJyaWVyRnJvbUNwcDsKKyAgICBKU19FWFBPUlREQVRB
IHN0YXRpYyBjaGFyIHVzZXNXaXRoQmFycmllckZyb21DcHA7CisgICAgSlNfRVhQT1JUREFUQSBz
dGF0aWMgY2hhciB1c2VzV2l0aG91dEJhcnJpZXJGcm9tQ3BwOwogI2VuZGlmIC8vIEVOQUJMRShX
UklURV9CQVJSSUVSX1BST0ZJTElORykKIAogICAgIHN0YXRpYyB2b2lkIGNvdW50V3JpdGVCYXJy
aWVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCAyM2YyY2RlOWM5NTRl
ZTY2NTE2Njc2N2EwOWQ5ZDE5NDkzNzhmYzViLi41MDk4ZGM3NmM3YjI4NDljOTZlN2Y4NzQ2ZGZk
OTE2NThhNjgwOWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05v
ZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC0xODEs
NyArMTgxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFN0YXRlbWVudE5vZGUoaW50KTsK
IAogICAgIHB1YmxpYzoKLSAgICAgICAgdm9pZCBzZXRMb2MoaW50IGZpcnN0TGluZSwgaW50IGxh
c3RMaW5lKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRMb2MoaW50IGZpcnN0
TGluZSwgaW50IGxhc3RMaW5lKTsKICAgICAgICAgaW50IGZpcnN0TGluZSgpIGNvbnN0IHsgcmV0
dXJuIGxpbmVObygpOyB9CiAgICAgICAgIGludCBsYXN0TGluZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bGFzdExpbmU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXJBcmVuYS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5o
CmluZGV4IDM1Njc0YjYwNGZmMmYzYzQ2ODM4ZGQzODJmNTc1MDdhNzBiODg4MDYuLjQ5ZjBhYjZi
Zjg0MjJiODkwNTc5YTBiODRkMDcyM2FmNjQ2MzA4NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlckFyZW5hLmgKQEAgLTE1OSw3ICsxNTksNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgdm9pZCByZW1vdmVMYXN0KCk7CiAKICAgICAgICAgYm9vbCBpc0VtcHR5KCkg
Y29uc3Q7Ci0gICAgICAgIHZvaWQgcmVzZXQoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCByZXNldCgpOwogCiAgICAgICAgIElkZW50aWZpZXJBcmVuYSYgaWRlbnRpZmllckFyZW5h
KCkgeyByZXR1cm4gKm1faWRlbnRpZmllckFyZW5hOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cHJvZmlsZXIvUHJvZmlsZS5oCmluZGV4IDZiZjI5ZjdhNmY4OGI5YWU0ZWVlM2VkNjc5NzYwMjBm
MWViMjdmMGYuLjk0NTVlMzU5NTAzMmYyYzNkOWM1MmEwODA5NWQ1NGFjOTk4NmVhMGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGUuaApAQCAtNDQsMTEgKzQ0LDExIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBkb3VibGUgdG90YWxUaW1lKCkgY29uc3QgeyByZXR1
cm4gbV9oZWFkLT50b3RhbFRpbWUoKTsgfQogICAgICAgICB1bnNpZ25lZCBpbnQgdWlkKCkgY29u
c3QgeyByZXR1cm4gbV91aWQ7IH0KIAotICAgICAgICB2b2lkIGZvckVhY2godm9pZCAoUHJvZmls
ZU5vZGU6OiopKCkpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZvckVhY2godm9p
ZCAoUHJvZmlsZU5vZGU6OiopKCkpOwogCi0gICAgICAgIHZvaWQgZm9jdXMoY29uc3QgUHJvZmls
ZU5vZGUqKTsKLSAgICAgICAgdm9pZCBleGNsdWRlKGNvbnN0IFByb2ZpbGVOb2RlKik7Ci0gICAg
ICAgIHZvaWQgcmVzdG9yZUFsbCgpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZv
Y3VzKGNvbnN0IFByb2ZpbGVOb2RlKik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQg
ZXhjbHVkZShjb25zdCBQcm9maWxlTm9kZSopOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2
b2lkIHJlc3RvcmVBbGwoKTsKIAogI2lmbmRlZiBOREVCVUcKICAgICAgICAgdm9pZCBkZWJ1Z1By
aW50RGF0YSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJnTGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5oCmlu
ZGV4IDA1Yzg4MTk1ZThiOTBmMGJiZmYxODVlNGQ0N2U0MGQ5OTAxNjA0ZmEuLmNiNWNlZTkyMzcy
YTkyZTBmNjYxNjQxYWQwMWZiYmZkNjI1YWM1MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcmdMaXN0LmgKQEAgLTE0MSw3ICsxNDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgc3RhdGljIHZvaWQgbWFya0xpc3RzKEhlYXBSb290VmlzaXRvciYsIExpc3RTZXQmKTsKIAog
ICAgIHByaXZhdGU6Ci0gICAgICAgIHZvaWQgc2xvd0FwcGVuZChKU1ZhbHVlKTsKKyAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzbG93QXBwZW5kKEpTVmFsdWUpOwogICAgICAgICAKICAg
ICAgICAgUmVnaXN0ZXIqIG1fYnVmZmVyOwogICAgICAgICBzaXplX3QgbV9zaXplOwpAQCAtMjE0
LDcgKzIxNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBjb25zdF9pdGVyYXRvciBiZWdp
bigpIGNvbnN0IHsgcmV0dXJuIG1fYXJnczsgfQogICAgICAgICBjb25zdF9pdGVyYXRvciBlbmQo
KSBjb25zdCB7IHJldHVybiBtX2FyZ3MgKyBtX2FyZ0NvdW50OyB9CiAKLSAgICAgICAgdm9pZCBn
ZXRTbGljZShpbnQgc3RhcnRJbmRleCwgQXJnTGlzdCYgcmVzdWx0KSBjb25zdDsKKyAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBnZXRTbGljZShpbnQgc3RhcnRJbmRleCwgQXJnTGlzdCYg
cmVzdWx0KSBjb25zdDsKICAgICBwcml2YXRlOgogICAgICAgICBKU1ZhbHVlKiBtX2FyZ3M7CiAg
ICAgICAgIHNpemVfdCBtX2FyZ0NvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ2FsbERhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nh
bGxEYXRhLmgKaW5kZXggYjEzOGY1NDg0MDVjMjRmYTNjNTlmMTU4MzhmOTA4NjRmNmI1M2ZlNy4u
MTVhNmEwYTQ4ZmI4NjQxYmQ5OGU3ZjU5Y2E4NWYzZmNiM2U2NTk2OCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9DYWxsRGF0YS5oCkBAIC01Nyw3ICs1Nyw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICB9IGpzOwogICAgIH07CiAKLSAgICBKU1ZhbHVlIGNhbGwoRXhlY1N0YXRl
KiwgSlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgQ2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiwgSlNW
YWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBK
U1ZhbHVlIGNhbGwoRXhlY1N0YXRlKiwgSlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgQ2FsbFR5cGUs
IGNvbnN0IENhbGxEYXRhJiwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmKTsKIAog
fSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbXBsZXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBs
ZXRpb24uaAppbmRleCBjM2RiZGZjNThjOGJlNjA1YmFlNDI0YWU2MDhlYjhkMDEzMmRjMWQwLi4z
ZDNiODZmZTQ0ZGM1ZjM1NzNjZmM2ZDg2YmY2NGRkMTQ3ZTc3MDA0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oCkBAIC0zMSw4ICszMSw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIGNsYXNzIFNjb3BlQ2hhaW5Ob2RlOwogICAgIGNsYXNzIFNvdXJjZUNvZGU7
CiAKLSAgICBib29sIGNoZWNrU3ludGF4KEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBK
U1ZhbHVlKiBleGNlcHRpb24gPSAwKTsKLSAgICBKU1ZhbHVlIGV2YWx1YXRlKEV4ZWNTdGF0ZSos
IFNjb3BlQ2hhaW5Ob2RlKiwgY29uc3QgU291cmNlQ29kZSYsIEpTVmFsdWUgdGhpc1ZhbHVlID0g
SlNWYWx1ZSgpLCBKU1ZhbHVlKiBleGNlcHRpb24gPSAwKTsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBib29sIGNoZWNrU3ludGF4KEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1ZhbHVl
KiBleGNlcHRpb24gPSAwKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGV2YWx1YXRl
KEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKiwgY29uc3QgU291cmNlQ29kZSYsIEpTVmFsdWUg
dGhpc1ZhbHVlID0gSlNWYWx1ZSgpLCBKU1ZhbHVlKiBleGNlcHRpb24gPSAwKTsKIAogfSAvLyBu
YW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbnN0cnVjdERhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVj
dERhdGEuaAppbmRleCBjYzhmNDY5NzcwNDkyZjE5ZjUxYjUxZmNkMDJlY2Y2NjVmYTFmOTNkLi5k
N2EzYzczZDNkNzZkN2JjZDE2NDExZjFmNmRiOWE3MjY3NjUzNjQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zdHJ1Y3REYXRhLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0RGF0YS5oCkBAIC01Niw3ICs1Niw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB9IGpzOwogICAgIH07CiAKLSAgICBKU09iamVjdCogY29u
c3RydWN0KEV4ZWNTdGF0ZSosIEpTVmFsdWUgY29uc3RydWN0b3IsIENvbnN0cnVjdFR5cGUsIGNv
bnN0IENvbnN0cnVjdERhdGEmLCBjb25zdCBBcmdMaXN0Jik7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgSlNPYmplY3QqIGNvbnN0cnVjdChFeGVjU3RhdGUqLCBKU1ZhbHVlIGNvbnN0cnVjdG9yLCBD
b25zdHJ1Y3RUeXBlLCBjb25zdCBDb25zdHJ1Y3REYXRhJiwgY29uc3QgQXJnTGlzdCYpOwogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRGF0ZUluc3RhbmNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRl
SW5zdGFuY2UuaAppbmRleCAzMjQxNzBiMWNhZjQwODA3N2QwZmU0NTFkOGJmNTU1ZTA2NjQ5YzAw
Li44YWY4OWE3MjgyMmU5ZDgzOTk4ZWE5YmQ5ZTI5OWYyN2M5NWYzNzgwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuaApAQCAtMzEsOSArMzEsOSBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIERhdGVJbnN0YW5jZSA6IHB1YmxpYyBKU1dyYXBw
ZXJPYmplY3QgewogICAgIHByb3RlY3RlZDoKLSAgICAgICAgRGF0ZUluc3RhbmNlKEV4ZWNTdGF0
ZSosIFN0cnVjdHVyZSopOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBEYXRlSW5zdGFuY2Uo
RXhlY1N0YXRlKiwgU3RydWN0dXJlKik7CiAgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNH
bG9iYWxEYXRhJik7Ci0gICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiwg
ZG91YmxlKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hDcmVhdGlvbihK
U0dsb2JhbERhdGEmLCBkb3VibGUpOwogICAgICAgICAKICAgICBwdWJsaWM6CiAgICAgICAgIHR5
cGVkZWYgSlNXcmFwcGVyT2JqZWN0IEJhc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FcnJvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJy
b3IuaAppbmRleCBhYzczNTRkMzE3MjA0Y2U3YTc3YzllOGUwOWYwM2U3M2VhMWEyZjIzLi42OGZl
ZWJkMDIzMGQyMGMzYjE3ZWYxZjBiZjk0ODA5ZDU2OTUzOWQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9yLmgKQEAgLTQ2LDEyICs0NiwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICBKU09iamVjdCogY3JlYXRlVHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgVVN0cmlu
ZyYpOwogICAgIEpTT2JqZWN0KiBjcmVhdGVVUklFcnJvcihKU0dsb2JhbE9iamVjdCosIGNvbnN0
IFVTdHJpbmcmKTsKICAgICAvLyBFeGVjU3RhdGUgd3JhcHBlcnMuCi0gICAgSlNPYmplY3QqIGNy
ZWF0ZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSBKU09iamVjdCogY3JlYXRlRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOwog
ICAgIEpTT2JqZWN0KiBjcmVhdGVFdmFsRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYp
OwotICAgIEpTT2JqZWN0KiBjcmVhdGVSYW5nZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJp
bmcmKTsKLSAgICBKU09iamVjdCogY3JlYXRlUmVmZXJlbmNlRXJyb3IoRXhlY1N0YXRlKiwgY29u
c3QgVVN0cmluZyYpOwotICAgIEpTT2JqZWN0KiBjcmVhdGVTeW50YXhFcnJvcihFeGVjU3RhdGUq
LCBjb25zdCBVU3RyaW5nJik7Ci0gICAgSlNPYmplY3QqIGNyZWF0ZVR5cGVFcnJvcihFeGVjU3Rh
dGUqLCBjb25zdCBVU3RyaW5nJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIGNy
ZWF0ZVJhbmdlRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOworICAgIEpTX0VYUE9S
VF9QUklWQVRFIEpTT2JqZWN0KiBjcmVhdGVSZWZlcmVuY2VFcnJvcihFeGVjU3RhdGUqLCBjb25z
dCBVU3RyaW5nJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIGNyZWF0ZVN5bnRh
eEVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBKU09iamVjdCogY3JlYXRlVHlwZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsK
ICAgICBKU09iamVjdCogY3JlYXRlVVJJRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYp
OwogCiAgICAgLy8gTWV0aG9kcyB0byBhZGQgCkBAIC02MSwxMiArNjEsMTIgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgSlNPYmplY3QqIGFkZEVycm9ySW5mbyhFeGVjU3RhdGUqLCBKU09iamVjdCog
ZXJyb3IsIGludCBsaW5lLCBjb25zdCBTb3VyY2VDb2RlJik7CiAKICAgICAvLyBNZXRob2RzIHRv
IHRocm93IEVycm9ycy4KLSAgICBKU1ZhbHVlIHRocm93RXJyb3IoRXhlY1N0YXRlKiwgSlNWYWx1
ZSk7Ci0gICAgSlNPYmplY3QqIHRocm93RXJyb3IoRXhlY1N0YXRlKiwgSlNPYmplY3QqKTsKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIHRocm93RXJyb3IoRXhlY1N0YXRlKiwgSlNWYWx1
ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93RXJyb3IoRXhlY1N0YXRl
KiwgSlNPYmplY3QqKTsKIAogICAgIC8vIENvbnZlbmllbmNlIHdyYXBwZXJzLCBjcmVhdGUgYW4g
dGhyb3cgYW4gZXhjZXB0aW9uIHdpdGggYSBkZWZhdWx0IG1lc3NhZ2UuCi0gICAgSlNPYmplY3Qq
IHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSopOwotICAgIEpTT2JqZWN0KiB0aHJvd1N5bnRheEVy
cm9yKEV4ZWNTdGF0ZSopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd1R5
cGVFcnJvcihFeGVjU3RhdGUqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdGhy
b3dTeW50YXhFcnJvcihFeGVjU3RhdGUqKTsKIAogICAgIC8vIENvbnZlbmllbmNlIHdyYXBwZXJz
LCB3cmFwIHJlc3VsdCBhcyBhbiBFbmNvZGVkSlNWYWx1ZS4KICAgICBpbmxpbmUgRW5jb2RlZEpT
VmFsdWUgdGhyb3dWTUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBlcnJvcikgeyByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXJyb3IoZXhlYywgZXJyb3IpKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oCmluZGV4IGMyMjI2
Nzk1NGE4NzIzYzkwZjJjZTIzMDU1Yjg1ZmFlNTFjNzBkOTguLmNjOGU0OTQ1NDA1ZTNiNjkwODlj
MzE5YzkwOTU0YzE0MTkwMzhlZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGNlcHRpb25IZWxwZXJzLmgKQEAgLTMzLDE1ICszMywxNSBAQAogCiBuYW1lc3BhY2Ug
SlNDIHsKIAotSlNPYmplY3QqIGNyZWF0ZUludGVycnVwdGVkRXhlY3V0aW9uRXhjZXB0aW9uKEpT
R2xvYmFsRGF0YSopOworSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIGNyZWF0ZUludGVycnVw
dGVkRXhlY3V0aW9uRXhjZXB0aW9uKEpTR2xvYmFsRGF0YSopOwogYm9vbCBpc0ludGVycnVwdGVk
RXhlY3V0aW9uRXhjZXB0aW9uKEpTT2JqZWN0Kik7CiBib29sIGlzSW50ZXJydXB0ZWRFeGVjdXRp
b25FeGNlcHRpb24oSlNWYWx1ZSk7CiAKIEpTT2JqZWN0KiBjcmVhdGVUZXJtaW5hdGVkRXhlY3V0
aW9uRXhjZXB0aW9uKEpTR2xvYmFsRGF0YSopOwogYm9vbCBpc1Rlcm1pbmF0ZWRFeGVjdXRpb25F
eGNlcHRpb24oSlNPYmplY3QqKTsKLWJvb2wgaXNUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9u
KEpTVmFsdWUpOworSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1Rlcm1pbmF0ZWRFeGVjdXRpb25F
eGNlcHRpb24oSlNWYWx1ZSk7CiAKLUpTT2JqZWN0KiBjcmVhdGVTdGFja092ZXJmbG93RXJyb3Io
RXhlY1N0YXRlKik7CitKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogY3JlYXRlU3RhY2tPdmVy
Zmxvd0Vycm9yKEV4ZWNTdGF0ZSopOwogSlNPYmplY3QqIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJv
cihKU0dsb2JhbE9iamVjdCopOwogSlNPYmplY3QqIGNyZWF0ZU91dE9mTWVtb3J5RXJyb3IoSlNH
bG9iYWxPYmplY3QqKTsKIEpTT2JqZWN0KiBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaAppbmRleCBhOGFjZjFhNDJkNTA2NTU2
NmQ0ZGZlYzdiODUxNzM1ZGU4ZTI2NDRmLi40NmNjMmYyNTU5MTFhZDljYWFlYjEwYjdmNWQ0ZjU4
ZjIxZWEzMjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5j
dGlvbkNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5oCkBAIC01OSw3ICs1OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCos
IGNvbnN0IEFyZ0xpc3QmLCBjb25zdCBJZGVudGlmaWVyJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFVT
dHJpbmcmIHNvdXJjZVVSTCwgY29uc3QgV1RGOjpUZXh0UG9zaXRpb24mKTsKICAgICBKU09iamVj
dCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBB
cmdMaXN0Jik7CiAKLSAgICBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxF
bmFibGVkQ2hlY2soRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBBcmdMaXN0Jiwg
Y29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFVTdHJpbmcmLCBjb25zdCBXVEY6OlRleHRQb3NpdGlv
biYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvblNr
aXBwaW5nRXZhbEVuYWJsZWRDaGVjayhFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0
IEFyZ0xpc3QmLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgVVN0cmluZyYsIGNvbnN0IFdURjo6
VGV4dFBvc2l0aW9uJik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZXVyaXN0aWNzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9IZXVyaXN0aWNzLmgKaW5kZXggYTE0ODU5ZmE4ZGNhMTJhY2MxZGQzMDA1
YmNhNzliYTI4MzhiNzBlMS4uNGI1NjVlNWM4NmI4ZjJmYWE0M2UwZmZhOTgzNWZmNTkyZDYwMWI0
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGV1cmlzdGljcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hldXJpc3RpY3MuaApAQCAtNzAs
OCArNzAsOCBAQCBleHRlcm4gdW5zaWduZWQgZ2NNYXJrU3RhY2tTZWdtZW50U2l6ZTsKIGV4dGVy
biB1bnNpZ25lZCBtaW5pbXVtTnVtYmVyT2ZDZWxsc1RvS2VlcDsKIGV4dGVybiB1bnNpZ25lZCBt
YXhpbXVtTnVtYmVyT2ZTaGFyZWRTZWdtZW50czsKIGV4dGVybiB1bnNpZ25lZCBzaGFyZWRTdGFj
a1dha2V1cFRocmVzaG9sZDsKLWV4dGVybiB1bnNpZ25lZCBudW1iZXJPZkdDTWFya2VyczsKLWV4
dGVybiB1bnNpZ25lZCBvcGFxdWVSb290TWVyZ2VUaHJlc2hvbGQ7CitKU19FWFBPUlREQVRBIGV4
dGVybiB1bnNpZ25lZCBudW1iZXJPZkdDTWFya2VyczsKK0pTX0VYUE9SVERBVEEgZXh0ZXJuIHVu
c2lnbmVkIG9wYXF1ZVJvb3RNZXJnZVRocmVzaG9sZDsKIAogdm9pZCBpbml0aWFsaXplSGV1cmlz
dGljcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVu
dGlmaWVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmgKaW5k
ZXggMmNjODhiMjU2MGE3NTVmN2JkODk0NDc2YWViNzg0ZDUwZWI1YmEyOS4uOTQ3Yzk1YjMzYjJk
ODJhOThmMTAwYzg1YTMwMWQ1YmU4OWMzNmQ2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0lkZW50aWZpZXIuaApAQCAtNTYsMTQgKzU2LDE0IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgICAgIHN0YXRpYyBJZGVudGlmaWVyIGNyZWF0ZUxDaGFyRnJvbVVDaGFyKEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgVUNoYXIqIHMsIGludCBsZW5ndGgpIHsgcmV0dXJuIElk
ZW50aWZpZXIoZ2xvYmFsRGF0YSwgYWRkOChnbG9iYWxEYXRhLCBzLCBsZW5ndGgpKTsgfQogCi0g
ICAgICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb20oRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCB5
KTsKLSAgICAgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbShFeGVjU3RhdGUqIGV4ZWMsIGludCB5
KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIElkZW50aWZpZXIgZnJvbShFeGVj
U3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHkpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgSWRlbnRpZmllciBmcm9tKEV4ZWNTdGF0ZSogZXhlYywgaW50IHkpOwogICAgICAgICBzdGF0
aWMgSWRlbnRpZmllciBmcm9tKEV4ZWNTdGF0ZSogZXhlYywgZG91YmxlIHkpOwogICAgICAgICBz
dGF0aWMgSWRlbnRpZmllciBmcm9tKEpTR2xvYmFsRGF0YSosIHVuc2lnbmVkIHkpOwogICAgICAg
ICBzdGF0aWMgSWRlbnRpZmllciBmcm9tKEpTR2xvYmFsRGF0YSosIGludCB5KTsKICAgICAgICAg
c3RhdGljIElkZW50aWZpZXIgZnJvbShKU0dsb2JhbERhdGEqLCBkb3VibGUgeSk7CiAKLSAgICAg
ICAgc3RhdGljIHVpbnQzMl90IHRvVUludDMyKGNvbnN0IFVTdHJpbmcmLCBib29sJiBvayk7Cisg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB1aW50MzJfdCB0b1VJbnQzMihjb25zdCBV
U3RyaW5nJiwgYm9vbCYgb2spOwogICAgICAgICB1aW50MzJfdCB0b1VJbnQzMihib29sJiBvaykg
Y29uc3QgeyByZXR1cm4gdG9VSW50MzIobV9zdHJpbmcsIG9rKTsgfQogICAgICAgICB1bnNpZ25l
ZCB0b0FycmF5SW5kZXgoYm9vbCYgb2spIGNvbnN0OwogCkBAIC04NCw3ICs4NCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiwg
Y29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgICAgICBzdGF0aWMgYm9vbCBlcXVh
bChjb25zdCBTdHJpbmdJbXBsKiBhLCBjb25zdCBTdHJpbmdJbXBsKiBiKSB7IHJldHVybiA6OmVx
dWFsKGEsIGIpOyB9CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRk
KEV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqKTsgLy8gT25seSB0byBiZSB1c2VkIHdpdGggc3RyaW5n
IGxpdGVyYWxzLgorICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxT
dHJpbmdJbXBsPiBhZGQoRXhlY1N0YXRlKiwgY29uc3QgY2hhciopOyAvLyBPbmx5IHRvIGJlIHVz
ZWQgd2l0aCBzdHJpbmcgbGl0ZXJhbHMuCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmlu
Z0ltcGw+IGFkZChKU0dsb2JhbERhdGEqLCBjb25zdCBjaGFyKik7IC8vIE9ubHkgdG8gYmUgdXNl
ZCB3aXRoIHN0cmluZyBsaXRlcmFscy4KIAogICAgIHByaXZhdGU6CkBAIC0xMTksMTEgKzExOSwx
MSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBhZGRTbG93Q2FzZShnbG9i
YWxEYXRhLCByKTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmlu
Z0ltcGw+IGFkZFNsb3dDYXNlKEV4ZWNTdGF0ZSosIFN0cmluZ0ltcGwqIHIpOwotICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGRTbG93Q2FzZShKU0dsb2JhbERhdGEqLCBT
dHJpbmdJbXBsKiByKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQ
dHI8U3RyaW5nSW1wbD4gYWRkU2xvd0Nhc2UoRXhlY1N0YXRlKiwgU3RyaW5nSW1wbCogcik7Cisg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFk
ZFNsb3dDYXNlKEpTR2xvYmFsRGF0YSosIFN0cmluZ0ltcGwqIHIpOwogCi0gICAgICAgIHN0YXRp
YyB2b2lkIGNoZWNrQ3VycmVudElkZW50aWZpZXJUYWJsZShFeGVjU3RhdGUqKTsKLSAgICAgICAg
c3RhdGljIHZvaWQgY2hlY2tDdXJyZW50SWRlbnRpZmllclRhYmxlKEpTR2xvYmFsRGF0YSopOwor
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBjaGVja0N1cnJlbnRJZGVudGlm
aWVyVGFibGUoRXhlY1N0YXRlKik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2
b2lkIGNoZWNrQ3VycmVudElkZW50aWZpZXJUYWJsZShKU0dsb2JhbERhdGEqKTsKICAgICB9Owog
CiAgICAgdGVtcGxhdGUgPD4gQUxXQVlTX0lOTElORSBib29sIElkZW50aWZpZXI6OmNhblVzZVNp
bmdsZUNoYXJhY3RlclN0cmluZyhMQ2hhcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaAppbmRleCAxYTkzY2NiOWIxYTM4OTMzMTlj
YzAxNzI1NzNjNTY1M2RkMDY3MmM5Li45MTMwMWEwZDhmYTY2ZWI3MWM1NzQ1NDQxMzA1Nzg1MWEz
ZDZiZTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFs
aXplVGhyZWFkaW5nLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlh
bGl6ZVRocmVhZGluZy5oCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
Ly8gVGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4gSXQg
aXMgc2FmZSB0byBjYWxsIGl0IHJlcGVhdGVkbHkuCiAgICAgLy8gRGFyd2luIGlzIGFuIGV4Y2Vw
dGlvbiB0byB0aGlzIHJ1bGU6IGl0IGlzIE9LIHRvIGNhbGwgdGhpcyBmdW5jdGlvbiBmcm9tIGFu
eSB0aHJlYWQsIGV2ZW4gcmVlbnRyYW50bHkuCi0gICAgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5n
KCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCk7CiAK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxG
dW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlv
bi5oCmluZGV4IDhlMjE3OGUzZjY1OTc4YTljMWFlYWU5YTQ1NWY2MjliZjE0Y2FmMDMuLmRlNWVj
ODQxNTMzNmFhNmIyNWY4NTBiZDA1OTdkODNkMDJkOWUzYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgKQEAgLTMxLDcgKzMxLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBGdW5jdGlvblByb3RvdHlwZTsKIAotICAgIGNs
YXNzIEludGVybmFsRnVuY3Rpb24gOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CisgICAgY2xh
c3MgSlNfRVhQT1JUX1BSSVZBVEUgSW50ZXJuYWxGdW5jdGlvbiA6IHB1YmxpYyBKU05vbkZpbmFs
T2JqZWN0IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBC
YXNlOwogCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBjb25zdCBV
U3RyaW5nIGRpc3BsYXlOYW1lKEV4ZWNTdGF0ZSopOwogICAgICAgICBjb25zdCBVU3RyaW5nIGNh
bGN1bGF0ZWREaXNwbGF5TmFtZShFeGVjU3RhdGUqKTsKIAotICAgICAgICBzdGF0aWMgU3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKSAKKyAgICAgICAgSlNfSU5MSU5FIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8pIAogICAgICAgICB7
IAogICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIGdsb2Jh
bE9iamVjdCwgcHJvdG8sIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgJnNf
aW5mbyk7IAogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgK
aW5kZXggYzIwMDZhMGUyZGJkOWYzNTM1MzhlMTUwNmIwNjFlMDRjOWE4ZDE2Yy4uMGE4NjFlODE4
ODcxNDAxZmNmYzdmMmYxYjc5YzI2MGQwYmZjNTI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXkuaApAQCAtNjEsMTggKzYxLDE4IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBmcmllbmQgY2xhc3MgV2Fsa2VyOwogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICBleHBs
aWNpdCBKU0FycmF5KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOworICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSBleHBsaWNpdCBKU0FycmF5KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwog
Ci0gICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJik7CisgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJik7CiAgICAg
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiwgdW5zaWduZWQgaW5pdGlhbExl
bmd0aCwgQXJyYXlDcmVhdGlvbk1vZGUpOwotICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpT
R2xvYmFsRGF0YSYsIGNvbnN0IEFyZ0xpc3QmKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBBcmdMaXN0Jik7CiAgICAg
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiwgY29uc3QgSlNWYWx1ZSosIHNp
emVfdCBsZW5ndGgpOwogICAgIAogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBKU05vbkZp
bmFsT2JqZWN0IEJhc2U7CiAKICAgICAgICAgSlNBcnJheShWUHRyU3RlYWxpbmdIYWNrVHlwZSk7
Ci0gICAgICAgIHZpcnR1YWwgfkpTQXJyYXkoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dmlydHVhbCB+SlNBcnJheSgpOwogCiAgICAgICAgIHN0YXRpYyBKU0FycmF5KiBjcmVhdGUoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgewpA
QCAtMTAzLDE0ICsxMDMsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgICAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1
bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQ2VsbCosIEV4
ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICAgICAgc3Rh
dGljIHZvaWQgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUpOwogCiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENs
YXNzSW5mbyBzX2luZm87CiAgICAgICAgIAogICAgICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25z
dCB7IHJldHVybiBtX3N0b3JhZ2UtPm1fbGVuZ3RoOyB9Ci0gICAgICAgIHZvaWQgc2V0TGVuZ3Ro
KHVuc2lnbmVkKTsgLy8gT0sgdG8gdXNlIG9uIG5ldyBhcnJheXMsIGJ1dCBub3QgaWYgaXQgbWln
aHQgYmUgYSBSZWdFeHBNYXRjaEFycmF5LgorICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lk
IHNldExlbmd0aCh1bnNpZ25lZCk7IC8vIE9LIHRvIHVzZSBvbiBuZXcgYXJyYXlzLCBidXQgbm90
IGlmIGl0IG1pZ2h0IGJlIGEgUmVnRXhwTWF0Y2hBcnJheS4KIAogICAgICAgICB2b2lkIHNvcnQo
RXhlY1N0YXRlKik7CiAgICAgICAgIHZvaWQgc29ydChFeGVjU3RhdGUqLCBKU1ZhbHVlIGNvbXBh
cmVGdW5jdGlvbiwgQ2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJik7CkBAIC0xNzIsNyArMTcyLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpT
QXJyYXksIG1fdmVjdG9yTGVuZ3RoKTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyB2b2lk
IHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYp
OwogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNWaXNpdENo
aWxkcmVuIHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpTT2JqZWN0OjpTdHJ1Y3R1cmVG
bGFnczsKQEAgLTE4Miw4ICsxODIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGlj
IGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSk7CiAgICAgICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMo
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9k
ZSk7CiAKLSAgICAgICAgdm9pZCogc3ViY2xhc3NEYXRhKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQg
c2V0U3ViY2xhc3NEYXRhKHZvaWQqKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCog
c3ViY2xhc3NEYXRhKCkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0
U3ViY2xhc3NEYXRhKHZvaWQqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGJvb2wgZ2V0T3du
UHJvcGVydHlTbG90U2xvd0Nhc2UoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQnl0ZUFycmF5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJh
eS5oCmluZGV4IDAwNDFkMTRjNDQwMDE1OGIzZWFlMWIzYWVmMmQ0YWVkOWZlMWZmM2UuLmRlNTlh
ZWEyNTNiYTA3MmYyMGM0NDNmOWY1MTk5ZGJlY2MxOWIxN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuaApAQCAtNzYsNyArNzYsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgSlNCeXRlQXJyYXkoRXhl
Y1N0YXRlKiwgU3RydWN0dXJlKiwgQnl0ZUFycmF5KiBzdG9yYWdlKTsKKyAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgSlNCeXRlQXJyYXkoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgQnl0ZUFycmF5
KiBzdG9yYWdlKTsKICAgICAgICAgCiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgSlNCeXRl
QXJyYXkqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBCeXRl
QXJyYXkqIHN0b3JhZ2UpCkBAIC04NiwxNSArODYsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgICAgICByZXR1cm4gYXJyYXk7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgU3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwgSlNHbG9iYWxPYmplY3QqLCBKU1Zh
bHVlIHByb3RvdHlwZSwgY29uc3QgSlNDOjpDbGFzc0luZm8qID0gJnNfaW5mbyk7CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0ds
b2JhbERhdGEmLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBKU0M6
OkNsYXNzSW5mbyogPSAmc19pbmZvKTsKIAotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwotICAgICAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3Rh
dGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7Ci0gICAgICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKLSAgICAgICAgc3Rh
dGljIHZvaWQgcHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6Oklk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xv
dCYpOwotICAgICAgICBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpF
eGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSk7CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpT
Q2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNT
dGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKKyAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3Jp
cHRvciYpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBwdXQoSlNDOjpK
U0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7CisgICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkV4
ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlKTsKIAotICAgICAg
ICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOworICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpT
Qzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBF
bnVtZXJhdGlvbk1vZGUpOwogCiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENs
YXNzSW5mbyBzX2luZm87CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGwuaAppbmRleCAzYmMyYmVlMWJjMDQ3OTU5ZDdlMTc4NTAyOWEyNTIyM2Q5ODY0NjZlLi45YWIw
NDhiMWM2NDEwZmEyMjQ5NmFhN2IwOTRlOGYxMGU1YWJkNTk0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NlbGwuaApAQCAtNzYsMjEgKzc2LDIxIEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICB2b2lkIGNsZWFyU3RydWN0dXJlKCkgeyBtX3N0cnVjdHVyZS5jbGVhcigpOyB9CiAK
ICAgICAgICAgLy8gRXh0cmFjdGluZyB0aGUgdmFsdWUuCi0gICAgICAgIGJvb2wgZ2V0U3RyaW5n
KEV4ZWNTdGF0ZSogZXhlYywgVVN0cmluZyYpIGNvbnN0OwotICAgICAgICBVU3RyaW5nIGdldFN0
cmluZyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0OyAvLyBudWxsIHN0cmluZyBpZiBub3QgYSBzdHJp
bmcKLSAgICAgICAgSlNPYmplY3QqIGdldE9iamVjdCgpOyAvLyBOVUxMIGlmIG5vdCBhbiBvYmpl
Y3QKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBnZXRTdHJpbmcoRXhlY1N0YXRlKiBl
eGVjLCBVU3RyaW5nJikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFVTdHJpbmcg
Z2V0U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykgY29uc3Q7IC8vIG51bGwgc3RyaW5nIGlmIG5vdCBh
IHN0cmluZworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogZ2V0T2JqZWN0KCk7
IC8vIE5VTEwgaWYgbm90IGFuIG9iamVjdAogICAgICAgICBjb25zdCBKU09iamVjdCogZ2V0T2Jq
ZWN0KCkgY29uc3Q7IC8vIE5VTEwgaWYgbm90IGFuIG9iamVjdAogICAgICAgICAKLSAgICAgICAg
c3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7Ci0gICAgICAg
IHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0
RGF0YSYpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2Fs
bERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRh
Jik7CiAKICAgICAgICAgLy8gQmFzaWMgY29udmVyc2lvbnMuCi0gICAgICAgIEpTVmFsdWUgdG9Q
cmltaXRpdmUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3Q7CisgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgdG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgUHJl
ZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3Q7CiAgICAgICAgIGJvb2wgZ2V0UHJpbWl0aXZlTnVt
YmVyKEV4ZWNTdGF0ZSosIGRvdWJsZSYgbnVtYmVyLCBKU1ZhbHVlJikgY29uc3Q7CiAgICAgICAg
IGJvb2wgdG9Cb29sZWFuKEV4ZWNTdGF0ZSopIGNvbnN0OwotICAgICAgICBkb3VibGUgdG9OdW1i
ZXIoRXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgICAgIFVTdHJpbmcgdG9TdHJpbmcoRXhlY1N0YXRl
KikgY29uc3Q7Ci0gICAgICAgIEpTT2JqZWN0KiB0b09iamVjdChFeGVjU3RhdGUqLCBKU0dsb2Jh
bE9iamVjdCopIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBkb3VibGUgdG9OdW1i
ZXIoRXhlY1N0YXRlKikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFVTdHJpbmcg
dG9TdHJpbmcoRXhlY1N0YXRlKikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEpT
T2JqZWN0KiB0b09iamVjdChFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCopIGNvbnN0OwogCiAg
ICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCmluZGV4IDFmZmI2
YWZhNmE3ZmM5MTg3MjllZjcyYTZlZGFjZTgyZDU4MTA2OWIuLmM5NzRlODFkNTUwNmFhMDJlYTE5
OTc3NTM2Y2JhYjU3NzEwYTliOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Z1bmN0aW9uLmgKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3Mg
SklUQ29tcGlsZXI7CiAgICAgfQogCi0gICAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
YWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxIb3N0RnVuY3Rpb25Bc0Nv
bnN0cnVjdG9yKEV4ZWNTdGF0ZSopOwogCiAgICAgdm9pZCBjcmVhdGVEZXNjcmlwdG9yRm9yVGhy
b3dpbmdQcm9wZXJ0eShFeGVjU3RhdGUqLCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBjb25zdCBjaGFy
KiBtZXNzYWdlKTsKIApAQCAtNTQsNyArNTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJs
aWM6CiAgICAgICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOwogCi0gICAgICAgIHN0
YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBpbnQg
bGVuZ3RoLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5j
dGlvbiwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlQ29uc3RydWN0b3IgPSBjYWxsSG9zdEZ1bmN0aW9u
QXNDb25zdHJ1Y3Rvcik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0Z1bmN0
aW9uKiBjcmVhdGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBpbnQgbGVuZ3RoLCBjb25z
dCBJZGVudGlmaWVyJiBuYW1lLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbiwgTmF0aXZl
RnVuY3Rpb24gbmF0aXZlQ29uc3RydWN0b3IgPSBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3Rv
cik7CiAgICAgICAgIHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGUoRXhlY1N0YXRlKiwgSlNHbG9i
YWxPYmplY3QqLCBpbnQgbGVuZ3RoLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBOYXRpdmVFeGVj
dXRhYmxlKiBuYXRpdmVFeGVjdXRhYmxlKTsKIAogICAgICAgICBzdGF0aWMgSlNGdW5jdGlvbiog
Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBT
Y29wZUNoYWluTm9kZSogc2NvcGVDaGFpbikKQEAgLTY3LDcgKzY3LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIAogICAgICAgICB2aXJ0dWFsIH5KU0Z1bmN0aW9uKCk7CiAKLSAgICAgICAg
Y29uc3QgVVN0cmluZyYgbmFtZShFeGVjU3RhdGUqKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgY29uc3QgVVN0cmluZyYgbmFtZShFeGVjU3RhdGUqKTsKICAgICAgICAgY29uc3QgVVN0cmlu
ZyBkaXNwbGF5TmFtZShFeGVjU3RhdGUqKTsKICAgICAgICAgY29uc3QgVVN0cmluZyBjYWxjdWxh
dGVkRGlzcGxheU5hbWUoRXhlY1N0YXRlKik7CiAKQEAgLTk3LDcgKzk3LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIGlubGluZSBib29sIGlzSG9zdEZ1bmN0aW9uKCkgY29uc3Q7CiAgICAg
ICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSoganNFeGVjdXRhYmxlKCkgY29uc3Q7CiAKLSAgICAgICAg
Y29uc3QgU291cmNlQ29kZSogc291cmNlQ29kZSgpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBjb25zdCBTb3VyY2VDb2RlKiBzb3VyY2VDb2RlKCkgY29uc3Q7CiAKICAgICAgICAg
c3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIApAQCAtMTI2LDcg
KzEyNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByb3RlY3RlZDoKICAgICAgICAgY29uc3Qg
c3RhdGljIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlT
bG90IHwgSW1wbGVtZW50c0hhc0luc3RhbmNlIHwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IE92
ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAKLSAg
ICAgICAgSlNGdW5jdGlvbihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSop
OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CiAgICAgICAgIEpTRnVuY3Rpb24oRXhlY1N0YXRlKiwg
RnVuY3Rpb25FeGVjdXRhYmxlKiwgU2NvcGVDaGFpbk5vZGUqKTsKICAgICAgICAgCiAgICAgICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwgTmF0aXZlRXhlY3V0YWJsZSosIGludCBs
ZW5ndGgsIGNvbnN0IElkZW50aWZpZXImIG5hbWUpOwpAQCAtMTQ1LDcgKzE0NSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIHByaXZhdGU6CiAgICAgICAgIGV4cGxpY2l0IEpTRnVuY3Rpb24oVlB0
clN0ZWFsaW5nSGFja1R5cGUpOwogCi0gICAgICAgIGJvb2wgaXNIb3N0RnVuY3Rpb25Ob25Jbmxp
bmUoKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0hvc3RGdW5jdGlv
bk5vbklubGluZSgpIGNvbnN0OwogCiAgICAgICAgIHN0YXRpYyBKU1ZhbHVlIGFyZ3VtZW50c0dl
dHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7CiAgICAgICAgIHN0
YXRpYyBKU1ZhbHVlIGNhbGxlckdldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVu
dGlmaWVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbERhdGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRh
LmNwcAppbmRleCBmNmE5MGYyZDNkNjg3ZmE3ZDJmZDZjN2RjNGExNjg1MTQ4Mjk0Mjk2Li45ZmRk
YWI5MTM3Yjc0NzUzZWM2MGJiNjQ1YjVlZjdjOTIzNDI1Njc5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCBl
eHRlcm4gY29uc3QgSGFzaFRhYmxlIGdsb2JhbE9iamVjdFRhYmxlOwogZXh0ZXJuIGNvbnN0IEhh
c2hUYWJsZSBtYXRoVGFibGU7CiBleHRlcm4gY29uc3QgSGFzaFRhYmxlIG51bWJlckNvbnN0cnVj
dG9yVGFibGU7CiBleHRlcm4gY29uc3QgSGFzaFRhYmxlIG51bWJlclByb3RvdHlwZVRhYmxlOwot
ZXh0ZXJuIGNvbnN0IEhhc2hUYWJsZSBvYmplY3RDb25zdHJ1Y3RvclRhYmxlOworSlNfRVhQT1JU
REFUQSBleHRlcm4gY29uc3QgSGFzaFRhYmxlIG9iamVjdENvbnN0cnVjdG9yVGFibGU7CiBleHRl
cm4gY29uc3QgSGFzaFRhYmxlIG9iamVjdFByb3RvdHlwZVRhYmxlOwogZXh0ZXJuIGNvbnN0IEhh
c2hUYWJsZSByZWdFeHBUYWJsZTsKIGV4dGVybiBjb25zdCBIYXNoVGFibGUgcmVnRXhwQ29uc3Ry
dWN0b3JUYWJsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsRGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRh
LmgKaW5kZXggYjgxOTUxYmYxMTU1MGI2ODUwMTNkM2FiNmNhZDhkZjBlZDI0NDliOC4uZDRmM2Uw
NDY5NjdmMjM4MTZkMjQ5MDYwZmU5MmJmYTM4NjlmZTVkYiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgKQEAgLTExNiwxOCArMTE2LDE4IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBlbnVtIEdsb2JhbERhdGFUeXBlIHsgRGVmYXVsdCwgQVBJQ29u
dGV4dEdyb3VwLCBBUElTaGFyZWQgfTsKICAgICAgICAgCiAgICAgICAgIHN0cnVjdCBDbGllbnRE
YXRhIHsKLSAgICAgICAgICAgIHZpcnR1YWwgfkNsaWVudERhdGEoKSA9IDA7CisgICAgICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIH5DbGllbnREYXRhKCkgPSAwOwogICAgICAgICB9
OwogCiAgICAgICAgIGJvb2wgaXNTaGFyZWRJbnN0YW5jZSgpIHsgcmV0dXJuIGdsb2JhbERhdGFU
eXBlID09IEFQSVNoYXJlZDsgfQogICAgICAgICBib29sIHVzaW5nQVBJKCkgeyByZXR1cm4gZ2xv
YmFsRGF0YVR5cGUgIT0gRGVmYXVsdDsgfQogICAgICAgICBzdGF0aWMgYm9vbCBzaGFyZWRJbnN0
YW5jZUV4aXN0cygpOwotICAgICAgICBzdGF0aWMgSlNHbG9iYWxEYXRhJiBzaGFyZWRJbnN0YW5j
ZSgpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNHbG9iYWxEYXRhJiBzaGFy
ZWRJbnN0YW5jZSgpOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4g
Y3JlYXRlKFRocmVhZFN0YWNrVHlwZSwgSGVhcFNpemUgPSBTbWFsbEhlYXApOwotICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxKU0dsb2JhbERhdGE+IGNyZWF0ZUxlYWtlZChUaHJlYWRTdGFja1R5
cGUsIEhlYXBTaXplID0gU21hbGxIZWFwKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIFBhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBjcmVhdGUoVGhyZWFkU3RhY2tUeXBlLCBIZWFw
U2l6ZSA9IFNtYWxsSGVhcCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNz
UmVmUHRyPEpTR2xvYmFsRGF0YT4gY3JlYXRlTGVha2VkKFRocmVhZFN0YWNrVHlwZSwgSGVhcFNp
emUgPSBTbWFsbEhlYXApOwogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU0dsb2JhbERhdGE+
IGNyZWF0ZUNvbnRleHRHcm91cChUaHJlYWRTdGFja1R5cGUsIEhlYXBTaXplID0gU21hbGxIZWFw
KTsKLSAgICAgICAgfkpTR2xvYmFsRGF0YSgpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB+
SlNHbG9iYWxEYXRhKCk7CiAKICAgICAgICAgdm9pZCBtYWtlVXNhYmxlRnJvbU11bHRpcGxlVGhy
ZWFkcygpIHsgaGVhcC5tYWNoaW5lVGhyZWFkcygpLm1ha2VVc2FibGVGcm9tTXVsdGlwbGVUaHJl
YWRzKCk7IH0KIApAQCAtMjk0LDIxICsyOTQsMjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAg
ICAgQ2FjaGVkVHJhbnNjZW5kZW50YWxGdW5jdGlvbjxzaW4+IGNhY2hlZFNpbjsKIAotICAgICAg
ICB2b2lkIHJlc2V0RGF0ZUNhY2hlKCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQg
cmVzZXREYXRlQ2FjaGUoKTsKIAotICAgICAgICB2b2lkIHN0YXJ0U2FtcGxpbmcoKTsKLSAgICAg
ICAgdm9pZCBzdG9wU2FtcGxpbmcoKTsKLSAgICAgICAgdm9pZCBkdW1wU2FtcGxlRGF0YShFeGVj
U3RhdGUqIGV4ZWMpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHN0YXJ0U2FtcGxp
bmcoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzdG9wU2FtcGxpbmcoKTsKKyAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkdW1wU2FtcGxlRGF0YShFeGVjU3RhdGUqIGV4
ZWMpOwogICAgICAgICB2b2lkIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKCk7CiAgICAgICAgIFJl
Z0V4cENhY2hlKiByZWdFeHBDYWNoZSgpIHsgcmV0dXJuIG1fcmVnRXhwQ2FjaGU7IH0KICNpZiBF
TkFCTEUoUkVHRVhQX1RSQUNJTkcpCiAgICAgICAgIHZvaWQgYWRkUmVnRXhwVG9UcmFjZShQYXNz
UmVmUHRyPFJlZ0V4cD4gcmVnRXhwKTsKICNlbmRpZgotICAgICAgICB2b2lkIGR1bXBSZWdFeHBU
cmFjZSgpOwotICAgICAgICB2b2lkIGNsZWFyQnVpbHRpblN0cnVjdHVyZXMoKTsKKyAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkdW1wUmVnRXhwVHJhY2UoKTsKKyAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBjbGVhckJ1aWx0aW5TdHJ1Y3R1cmVzKCk7CiAKICAgICAgICAgYm9v
bCBpc0NvbGxlY3RvckJ1c3koKSB7IHJldHVybiBoZWFwLmlzQnVzeSgpOyB9Ci0gICAgICAgIHZv
aWQgcmVsZWFzZUV4ZWN1dGFibGVNZW1vcnkoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCByZWxlYXNlRXhlY3V0YWJsZU1lbW9yeSgpOwogCiAjaWYgRU5BQkxFKEdDX1ZBTElEQVRJ
T04pCiAgICAgICAgIGJvb2wgaXNJbml0aWFsaXppbmdPYmplY3QoKSBjb25zdDsgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCAzZjkzY2Q4
YjE4MTAxMzM4YzUyY2FjYzg1YTNhZDNhMDAzYzJjN2QxLi45ZDY0ZjVkOWY4ODAyZTRkZDhhMTM5
Nzg3MzJlNTIzNmFmMDVkMzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmgKQEAgLTY2LDcgKzY2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIFNob3VsZEludGVycnVwdFNjcmlwdEZ1bmN0aW9uUHRyIHNob3VsZEludGVycnVwdFNjcmlw
dDsKICAgICB9OwogCi0gICAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNWYXJpYWJs
ZU9iamVjdCB7CisgICAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgSlNHbG9iYWxPYmplY3QgOiBw
dWJsaWMgSlNWYXJpYWJsZU9iamVjdCB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgdHlwZWRlZiBI
YXNoU2V0PFJlZlB0cjxPcGFxdWVKU1dlYWtPYmplY3RNYXA+ID4gV2Vha01hcFNldDsKIApAQCAt
MTQ3LDcgKzE0Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgSlNfRVhQT1JU
REFUQSBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBzX2dsb2JhbE9iamVjdE1ldGhvZFRh
YmxlOwogICAgICAgICBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSogbV9nbG9iYWxPYmpl
Y3RNZXRob2RUYWJsZTsKIAotICAgICAgICB2b2lkIGNyZWF0ZVJhcmVEYXRhSWZOZWVkZWQoKQor
ICAgICAgICBKU19JTkxJTkUgdm9pZCBjcmVhdGVSYXJlRGF0YUlmTmVlZGVkKCkKICAgICAgICAg
ewogICAgICAgICAgICAgaWYgKG1fcmFyZURhdGEpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpA
QCAtMTU4LDcgKzE1OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAg
dHlwZWRlZiBKU1ZhcmlhYmxlT2JqZWN0IEJhc2U7CiAKLSAgICAgICAgc3RhdGljIEpTR2xvYmFs
T2JqZWN0KiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKKyAgICAgICAgSlNfSU5MSU5FIHN0YXRpYyBKU0dsb2JhbE9iamVjdCogY3JlYXRlKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBuZXcgKGFsbG9jYXRl
Q2VsbDxKU0dsb2JhbE9iamVjdD4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNHbG9iYWxPYmplY3QoZ2xv
YmFsRGF0YSwgc3RydWN0dXJlKTsKICAgICAgICAgICAgIGdsb2JhbE9iamVjdC0+ZmluaXNoQ3Jl
YXRpb24oZ2xvYmFsRGF0YSk7CkBAIC0xNjgsNyArMTY4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKICAg
ICBwcm90ZWN0ZWQ6Ci0gICAgICAgIGV4cGxpY2l0IEpTR2xvYmFsT2JqZWN0KEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IEdsb2JhbE9iamVjdE1l
dGhvZFRhYmxlKiBnbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IDApCisgICAgICAgIEpTX0lOTElO
RSBleHBsaWNpdCBKU0dsb2JhbE9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSogZ2xvYmFsT2Jq
ZWN0TWV0aG9kVGFibGUgPSAwKQogICAgICAgICAgICAgOiBKU1ZhcmlhYmxlT2JqZWN0KGdsb2Jh
bERhdGEsIHN0cnVjdHVyZSwgJm1fc3ltYm9sVGFibGUsIDApCiAgICAgICAgICAgICAsIG1fcmVn
aXN0ZXJBcnJheVNpemUoMCkKICAgICAgICAgICAgICwgbV9nbG9iYWxTY29wZUNoYWluKCkKQEAg
LTE3OCwxNCArMTc4LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgIH0K
IAotICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkK
KyAgICAgICAgSlNfSU5MSU5FIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhKQogICAgICAgICB7CiAgICAgICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9i
YWxEYXRhKTsKICAgICAgICAgICAgIHN0cnVjdHVyZSgpLT5zZXRHbG9iYWxPYmplY3QoZ2xvYmFs
RGF0YSwgdGhpcyk7CiAgICAgICAgICAgICBpbml0KHRoaXMpOwogICAgICAgICB9CiAKLSAgICAg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTR2xvYmFs
VGhpcyogdGhpc1ZhbHVlKQorICAgICAgICBKU19JTkxJTkUgdm9pZCBmaW5pc2hDcmVhdGlvbihK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTR2xvYmFsVGhpcyogdGhpc1ZhbHVlKQogICAgICAg
ICB7CiAgICAgICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhKTsKICAgICAg
ICAgICAgIHN0cnVjdHVyZSgpLT5zZXRHbG9iYWxPYmplY3QoZ2xvYmFsRGF0YSwgdGhpcyk7CkBA
IC0xOTksNyArMTk5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXIm
LCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5
RGVzY3JpcHRvciYpOwotICAgICAgICBib29sIGhhc093blByb3BlcnR5Rm9yV3JpdGUoRXhlY1N0
YXRlKiwgY29uc3QgSWRlbnRpZmllciYpOworICAgICAgICBKU19JTkxJTkUgYm9vbCBoYXNPd25Q
cm9wZXJ0eUZvcldyaXRlKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImKTsKICAgICAgICAg
c3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBK
U1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAogICAgICAgICBzdGF0aWMgdm9pZCBwdXRXaXRo
QXR0cmlidXRlcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CkBAIC0yMDksMTE0ICsyMDks
MTE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIC8vIFdlIHVzZSB0aGlzIGluIHRoZSBj
b2RlIGdlbmVyYXRvciBhcyB3ZSBwZXJmb3JtIHN5bWJvbCB0YWJsZQogICAgICAgICAvLyBsb29r
dXBzIHByaW9yIHRvIGluaXRpYWxpemluZyB0aGUgcHJvcGVydGllcwotICAgICAgICBib29sIHN5
bWJvbFRhYmxlSGFzUHJvcGVydHkoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKKyAg
ICAgICAgSlNfSU5MSU5FIGJvb2wgc3ltYm9sVGFibGVIYXNQcm9wZXJ0eShjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUpOwogCiAgICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgYWNjZXNzb3Jz
IHJldHVybiBwcmlzdGluZSB2YWx1ZXMsIGV2ZW4gaWYgYSBzY3JpcHQgCiAgICAgICAgIC8vIHJl
cGxhY2VzIHRoZSBnbG9iYWwgb2JqZWN0J3MgYXNzb2NpYXRlZCBwcm9wZXJ0eS4KIAotICAgICAg
ICBSZWdFeHBDb25zdHJ1Y3RvciogcmVnRXhwQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBt
X3JlZ0V4cENvbnN0cnVjdG9yLmdldCgpOyB9CisgICAgICAgIEpTX0lOTElORSBSZWdFeHBDb25z
dHJ1Y3RvciogcmVnRXhwQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cENvbnN0
cnVjdG9yLmdldCgpOyB9CiAKLSAgICAgICAgRXJyb3JDb25zdHJ1Y3RvciogZXJyb3JDb25zdHJ1
Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQotICAgICAg
ICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBldmFsRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsg
cmV0dXJuIG1fZXZhbEVycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KLSAgICAgICAgTmF0aXZlRXJy
b3JDb25zdHJ1Y3RvciogcmFuZ2VFcnJvckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9y
YW5nZUVycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KLSAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1
Y3RvciogcmVmZXJlbmNlRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVmZXJl
bmNlRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQotICAgICAgICBOYXRpdmVFcnJvckNvbnN0cnVj
dG9yKiBzeW50YXhFcnJvckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9zeW50YXhFcnJv
ckNvbnN0cnVjdG9yLmdldCgpOyB9Ci0gICAgICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIHR5
cGVFcnJvckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV90eXBlRXJyb3JDb25zdHJ1Y3Rv
ci5nZXQoKTsgfQotICAgICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBVUklFcnJvckNvbnN0
cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9VUklFcnJvckNvbnN0cnVjdG9yLmdldCgpOyB9Cisg
ICAgICAgIEpTX0lOTElORSBFcnJvckNvbnN0cnVjdG9yKiBlcnJvckNvbnN0cnVjdG9yKCkgY29u
c3QgeyByZXR1cm4gbV9lcnJvckNvbnN0cnVjdG9yLmdldCgpOyB9CisgICAgICAgIEpTX0lOTElO
RSBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBldmFsRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsg
cmV0dXJuIG1fZXZhbEVycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KKyAgICAgICAgSlNfSU5MSU5F
IE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIHJhbmdlRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsg
cmV0dXJuIG1fcmFuZ2VFcnJvckNvbnN0cnVjdG9yLmdldCgpOyB9CisgICAgICAgIEpTX0lOTElO
RSBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiByZWZlcmVuY2VFcnJvckNvbnN0cnVjdG9yKCkgY29u
c3QgeyByZXR1cm4gbV9yZWZlcmVuY2VFcnJvckNvbnN0cnVjdG9yLmdldCgpOyB9CisgICAgICAg
IEpTX0lOTElORSBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBzeW50YXhFcnJvckNvbnN0cnVjdG9y
KCkgY29uc3QgeyByZXR1cm4gbV9zeW50YXhFcnJvckNvbnN0cnVjdG9yLmdldCgpOyB9CisgICAg
ICAgIEpTX0lOTElORSBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiB0eXBlRXJyb3JDb25zdHJ1Y3Rv
cigpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZUVycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KKyAgICAg
ICAgSlNfSU5MSU5FIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIFVSSUVycm9yQ29uc3RydWN0b3Io
KSBjb25zdCB7IHJldHVybiBtX1VSSUVycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KIAotICAgICAg
ICBKU0Z1bmN0aW9uKiBldmFsRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2V2YWxGdW5jdGlv
bi5nZXQoKTsgfQotICAgICAgICBKU0Z1bmN0aW9uKiBjYWxsRnVuY3Rpb24oKSBjb25zdCB7IHJl
dHVybiBtX2NhbGxGdW5jdGlvbi5nZXQoKTsgfQotICAgICAgICBKU0Z1bmN0aW9uKiBhcHBseUZ1
bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hcHBseUZ1bmN0aW9uLmdldCgpOyB9Ci0gICAgICAg
IEdldHRlclNldHRlciogdGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIoRXhlY1N0YXRlKiBleGVj
KQorICAgICAgICBKU19JTkxJTkUgSlNGdW5jdGlvbiogZXZhbEZ1bmN0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9ldmFsRnVuY3Rpb24uZ2V0KCk7IH0KKyAgICAgICAgSlNfSU5MSU5FIEpTRnVuY3Rp
b24qIGNhbGxGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbEZ1bmN0aW9uLmdldCgpOyB9
CisgICAgICAgIEpTX0lOTElORSBKU0Z1bmN0aW9uKiBhcHBseUZ1bmN0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9hcHBseUZ1bmN0aW9uLmdldCgpOyB9CisgICAgICAgIEpTX0lOTElORSBHZXR0ZXJT
ZXR0ZXIqIHRocm93VHlwZUVycm9yR2V0dGVyU2V0dGVyKEV4ZWNTdGF0ZSogZXhlYykKICAgICAg
ICAgewogICAgICAgICAgICAgaWYgKCFtX3Rocm93VHlwZUVycm9yR2V0dGVyU2V0dGVyKQogICAg
ICAgICAgICAgICAgIGNyZWF0ZVRocm93VHlwZUVycm9yKGV4ZWMpOwogICAgICAgICAgICAgcmV0
dXJuIG1fdGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIuZ2V0KCk7CiAgICAgICAgIH0KIAotICAg
ICAgICBPYmplY3RQcm90b3R5cGUqIG9iamVjdFByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
b2JqZWN0UHJvdG90eXBlLmdldCgpOyB9Ci0gICAgICAgIEZ1bmN0aW9uUHJvdG90eXBlKiBmdW5j
dGlvblByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCk7
IH0KLSAgICAgICAgQXJyYXlQcm90b3R5cGUqIGFycmF5UHJvdG90eXBlKCkgY29uc3QgeyByZXR1
cm4gbV9hcnJheVByb3RvdHlwZS5nZXQoKTsgfQotICAgICAgICBCb29sZWFuUHJvdG90eXBlKiBi
b29sZWFuUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9ib29sZWFuUHJvdG90eXBlLmdldCgp
OyB9Ci0gICAgICAgIFN0cmluZ1Byb3RvdHlwZSogc3RyaW5nUHJvdG90eXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdHJpbmdQcm90b3R5cGUuZ2V0KCk7IH0KLSAgICAgICAgTnVtYmVyUHJvdG90eXBl
KiBudW1iZXJQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX251bWJlclByb3RvdHlwZS5nZXQo
KTsgfQotICAgICAgICBEYXRlUHJvdG90eXBlKiBkYXRlUHJvdG90eXBlKCkgY29uc3QgeyByZXR1
cm4gbV9kYXRlUHJvdG90eXBlLmdldCgpOyB9Ci0gICAgICAgIFJlZ0V4cFByb3RvdHlwZSogcmVn
RXhwUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBQcm90b3R5cGUuZ2V0KCk7IH0K
LQotICAgICAgICBKU09iamVjdCogbWV0aG9kQ2FsbER1bW15KCkgY29uc3QgeyByZXR1cm4gbV9t
ZXRob2RDYWxsRHVtbXkuZ2V0KCk7IH0KLQotICAgICAgICBTdHJ1Y3R1cmUqIGFyZ3VtZW50c1N0
cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXJndW1lbnRzU3RydWN0dXJlLmdldCgpOyB9Ci0g
ICAgICAgIFN0cnVjdHVyZSogYXJyYXlTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2FycmF5
U3RydWN0dXJlLmdldCgpOyB9Ci0gICAgICAgIFN0cnVjdHVyZSogYm9vbGVhbk9iamVjdFN0cnVj
dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYm9vbGVhbk9iamVjdFN0cnVjdHVyZS5nZXQoKTsgfQot
ICAgICAgICBTdHJ1Y3R1cmUqIGNhbGxiYWNrQ29uc3RydWN0b3JTdHJ1Y3R1cmUoKSBjb25zdCB7
IHJldHVybiBtX2NhbGxiYWNrQ29uc3RydWN0b3JTdHJ1Y3R1cmUuZ2V0KCk7IH0KLSAgICAgICAg
U3RydWN0dXJlKiBjYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9j
YWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9Ci0gICAgICAgIFN0cnVjdHVyZSogY2Fs
bGJhY2tPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxiYWNrT2JqZWN0U3Ry
dWN0dXJlLmdldCgpOyB9Ci0gICAgICAgIFN0cnVjdHVyZSogZGF0ZVN0cnVjdHVyZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZGF0ZVN0cnVjdHVyZS5nZXQoKTsgfQotICAgICAgICBTdHJ1Y3R1cmUqIGVt
cHR5T2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9lbXB0eU9iamVjdFN0cnVjdHVy
ZS5nZXQoKTsgfQotICAgICAgICBTdHJ1Y3R1cmUqIG51bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1
cmUoKSBjb25zdCB7IHJldHVybiBtX251bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7
IH0KLSAgICAgICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZXJyb3JTdHJ1Y3R1cmUuZ2V0KCk7IH0KLSAgICAgICAgU3RydWN0dXJlKiBmdW5jdGlvblN0cnVj
dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KLSAgICAg
ICAgU3RydWN0dXJlKiBib3VuZEZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9i
b3VuZEZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9Ci0gICAgICAgIFN0cnVjdHVyZSogbmFtZWRG
dW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZWRGdW5jdGlvblN0cnVjdHVy
ZS5nZXQoKTsgfQotICAgICAgICBzaXplX3QgZnVuY3Rpb25OYW1lT2Zmc2V0KCkgY29uc3QgeyBy
ZXR1cm4gbV9mdW5jdGlvbk5hbWVPZmZzZXQ7IH0KLSAgICAgICAgU3RydWN0dXJlKiBudW1iZXJP
YmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX251bWJlck9iamVjdFN0cnVjdHVyZS5n
ZXQoKTsgfQotICAgICAgICBTdHJ1Y3R1cmUqIGludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUoKSBj
b25zdCB7IHJldHVybiBtX2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KLSAgICAg
ICAgU3RydWN0dXJlKiBzdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25z
dCB7IHJldHVybiBtX3N0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsg
fQotICAgICAgICBTdHJ1Y3R1cmUqIHJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlLmdldCgpOyB9Ci0gICAgICAg
IFN0cnVjdHVyZSogcmVnRXhwU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBTdHJ1
Y3R1cmUuZ2V0KCk7IH0KLSAgICAgICAgU3RydWN0dXJlKiBzdHJpbmdPYmplY3RTdHJ1Y3R1cmUo
KSBjb25zdCB7IHJldHVybiBtX3N0cmluZ09iamVjdFN0cnVjdHVyZS5nZXQoKTsgfQotCi0gICAg
ICAgIHZvaWQgc2V0UHJvZmlsZUdyb3VwKHVuc2lnbmVkIHZhbHVlKSB7IGNyZWF0ZVJhcmVEYXRh
SWZOZWVkZWQoKTsgbV9yYXJlRGF0YS0+cHJvZmlsZUdyb3VwID0gdmFsdWU7IH0KLSAgICAgICAg
dW5zaWduZWQgcHJvZmlsZUdyb3VwKCkgY29uc3QKKyAgICAgICAgSlNfSU5MSU5FIE9iamVjdFBy
b3RvdHlwZSogb2JqZWN0UHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3RQcm90b3R5
cGUuZ2V0KCk7IH0KKyAgICAgICAgSlNfSU5MSU5FIEZ1bmN0aW9uUHJvdG90eXBlKiBmdW5jdGlv
blByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCk7IH0K
KyAgICAgICAgSlNfSU5MSU5FIEFycmF5UHJvdG90eXBlKiBhcnJheVByb3RvdHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fYXJyYXlQcm90b3R5cGUuZ2V0KCk7IH0KKyAgICAgICAgSlNfSU5MSU5FIEJv
b2xlYW5Qcm90b3R5cGUqIGJvb2xlYW5Qcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2Jvb2xl
YW5Qcm90b3R5cGUuZ2V0KCk7IH0KKyAgICAgICAgSlNfSU5MSU5FIFN0cmluZ1Byb3RvdHlwZSog
c3RyaW5nUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmdQcm90b3R5cGUuZ2V0KCk7
IH0KKyAgICAgICAgSlNfSU5MSU5FIE51bWJlclByb3RvdHlwZSogbnVtYmVyUHJvdG90eXBlKCkg
Y29uc3QgeyByZXR1cm4gbV9udW1iZXJQcm90b3R5cGUuZ2V0KCk7IH0KKyAgICAgICAgSlNfSU5M
SU5FIERhdGVQcm90b3R5cGUqIGRhdGVQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2RhdGVQ
cm90b3R5cGUuZ2V0KCk7IH0KKyAgICAgICAgSlNfSU5MSU5FIFJlZ0V4cFByb3RvdHlwZSogcmVn
RXhwUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBQcm90b3R5cGUuZ2V0KCk7IH0K
KworICAgICAgICBKU19JTkxJTkUgSlNPYmplY3QqIG1ldGhvZENhbGxEdW1teSgpIGNvbnN0IHsg
cmV0dXJuIG1fbWV0aG9kQ2FsbER1bW15LmdldCgpOyB9CisKKyAgICAgICAgSlNfSU5MSU5FIFN0
cnVjdHVyZSogYXJndW1lbnRzU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9hcmd1bWVudHNT
dHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICAgICAgSlNfSU5MSU5FIFN0cnVjdHVyZSogYXJyYXlTdHJ1
Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2FycmF5U3RydWN0dXJlLmdldCgpOyB9CisgICAgICAg
IEpTX0lOTElORSBTdHJ1Y3R1cmUqIGJvb2xlYW5PYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX2Jvb2xlYW5PYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICAgICAgSlNfSU5MSU5F
IFN0cnVjdHVyZSogY2FsbGJhY2tDb25zdHJ1Y3RvclN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJu
IG1fY2FsbGJhY2tDb25zdHJ1Y3RvclN0cnVjdHVyZS5nZXQoKTsgfQorICAgICAgICBKU19JTkxJ
TkUgU3RydWN0dXJlKiBjYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4g
bV9jYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CisgICAgICAgIEpTX0lOTElORSBT
dHJ1Y3R1cmUqIGNhbGxiYWNrT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9jYWxs
YmFja09iamVjdFN0cnVjdHVyZS5nZXQoKTsgfQorICAgICAgICBKU19JTkxJTkUgU3RydWN0dXJl
KiBkYXRlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRlU3RydWN0dXJlLmdldCgpOyB9
CisgICAgICAgIEpTX0lOTElORSBTdHJ1Y3R1cmUqIGVtcHR5T2JqZWN0U3RydWN0dXJlKCkgY29u
c3QgeyByZXR1cm4gbV9lbXB0eU9iamVjdFN0cnVjdHVyZS5nZXQoKTsgfQorICAgICAgICBKU19J
TkxJTkUgU3RydWN0dXJlKiBudWxsUHJvdG90eXBlT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyBy
ZXR1cm4gbV9udWxsUHJvdG90eXBlT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CisgICAgICAgIEpT
X0lOTElORSBTdHJ1Y3R1cmUqIGVycm9yU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9lcnJv
clN0cnVjdHVyZS5nZXQoKTsgfQorICAgICAgICBKU19JTkxJTkUgU3RydWN0dXJlKiBmdW5jdGlv
blN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0K
KyAgICAgICAgSlNfSU5MSU5FIFN0cnVjdHVyZSogYm91bmRGdW5jdGlvblN0cnVjdHVyZSgpIGNv
bnN0IHsgcmV0dXJuIG1fYm91bmRGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQorICAgICAgICBK
U19JTkxJTkUgU3RydWN0dXJlKiBuYW1lZEZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1
cm4gbV9uYW1lZEZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CisgICAgICAgIEpTX0lOTElORSBz
aXplX3QgZnVuY3Rpb25OYW1lT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvbk5hbWVP
ZmZzZXQ7IH0KKyAgICAgICAgSlNfSU5MSU5FIFN0cnVjdHVyZSogbnVtYmVyT2JqZWN0U3RydWN0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAg
ICAgICAgSlNfSU5MSU5FIFN0cnVjdHVyZSogaW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZSgpIGNv
bnN0IHsgcmV0dXJuIG1faW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQorICAgICAg
ICBKU19JTkxJTkUgU3RydWN0dXJlKiBzdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb25TdHJ1Y3R1
cmUoKSBjb25zdCB7IHJldHVybiBtX3N0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvblN0cnVjdHVy
ZS5nZXQoKTsgfQorICAgICAgICBKU19JTkxJTkUgU3RydWN0dXJlKiByZWdFeHBNYXRjaGVzQXJy
YXlTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVy
ZS5nZXQoKTsgfQorICAgICAgICBKU19JTkxJTkUgU3RydWN0dXJlKiByZWdFeHBTdHJ1Y3R1cmUo
KSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFN0cnVjdHVyZS5nZXQoKTsgfQorICAgICAgICBKU19J
TkxJTkUgU3RydWN0dXJlKiBzdHJpbmdPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBt
X3N0cmluZ09iamVjdFN0cnVjdHVyZS5nZXQoKTsgfQorCisgICAgICAgIEpTX0lOTElORSB2b2lk
IHNldFByb2ZpbGVHcm91cCh1bnNpZ25lZCB2YWx1ZSkgeyBjcmVhdGVSYXJlRGF0YUlmTmVlZGVk
KCk7IG1fcmFyZURhdGEtPnByb2ZpbGVHcm91cCA9IHZhbHVlOyB9CisgICAgICAgIEpTX0lOTElO
RSB1bnNpZ25lZCBwcm9maWxlR3JvdXAoKSBjb25zdAogICAgICAgICB7IAogICAgICAgICAgICAg
aWYgKCFtX3JhcmVEYXRhKQogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAg
cmV0dXJuIG1fcmFyZURhdGEtPnByb2ZpbGVHcm91cDsKICAgICAgICAgfQogCi0gICAgICAgIERl
YnVnZ2VyKiBkZWJ1Z2dlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdnZXI7IH0KLSAgICAgICAg
dm9pZCBzZXREZWJ1Z2dlcihEZWJ1Z2dlciogZGVidWdnZXIpIHsgbV9kZWJ1Z2dlciA9IGRlYnVn
Z2VyOyB9CisgICAgICAgIEpTX0lOTElORSBEZWJ1Z2dlciogZGVidWdnZXIoKSBjb25zdCB7IHJl
dHVybiBtX2RlYnVnZ2VyOyB9CisgICAgICAgIEpTX0lOTElORSB2b2lkIHNldERlYnVnZ2VyKERl
YnVnZ2VyKiBkZWJ1Z2dlcikgeyBtX2RlYnVnZ2VyID0gZGVidWdnZXI7IH0KIAotICAgICAgICBj
b25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSogZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKSBj
b25zdCB7IHJldHVybiBtX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlOyB9CisgICAgICAgIEpTX0lO
TElORSBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSogZ2xvYmFsT2JqZWN0TWV0aG9kVGFi
bGUoKSBjb25zdCB7IHJldHVybiBtX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlOyB9CiAKLSAgICAg
ICAgc3RhdGljIGJvb2wgc3VwcG9ydHNQcm9maWxpbmcoY29uc3QgSlNHbG9iYWxPYmplY3QqKSB7
IHJldHVybiBmYWxzZTsgfQotICAgICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c1JpY2hTb3VyY2VJ
bmZvKGNvbnN0IEpTR2xvYmFsT2JqZWN0KikgeyByZXR1cm4gdHJ1ZTsgfQorICAgICAgICBKU19J
TkxJTkUgc3RhdGljIGJvb2wgc3VwcG9ydHNQcm9maWxpbmcoY29uc3QgSlNHbG9iYWxPYmplY3Qq
KSB7IHJldHVybiBmYWxzZTsgfQorICAgICAgICBKU19JTkxJTkUgc3RhdGljIGJvb2wgc3VwcG9y
dHNSaWNoU291cmNlSW5mbyhjb25zdCBKU0dsb2JhbE9iamVjdCopIHsgcmV0dXJuIHRydWU7IH0K
IAotICAgICAgICBTY29wZUNoYWluTm9kZSogZ2xvYmFsU2NvcGVDaGFpbigpIHsgcmV0dXJuIG1f
Z2xvYmFsU2NvcGVDaGFpbi5nZXQoKTsgfQorICAgICAgICBKU19JTkxJTkUgU2NvcGVDaGFpbk5v
ZGUqIGdsb2JhbFNjb3BlQ2hhaW4oKSB7IHJldHVybiBtX2dsb2JhbFNjb3BlQ2hhaW4uZ2V0KCk7
IH0KIAogICAgICAgICBFeGVjU3RhdGUqIGdsb2JhbEV4ZWMoKTsKIAotICAgICAgICBzdGF0aWMg
Ym9vbCBzaG91bGRJbnRlcnJ1cHRTY3JpcHQoY29uc3QgSlNHbG9iYWxPYmplY3QqKSB7IHJldHVy
biB0cnVlOyB9CisgICAgICAgIEpTX0lOTElORSBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcnJ1cHRT
Y3JpcHQoY29uc3QgSlNHbG9iYWxPYmplY3QqKSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICAgICAg
Ym9vbCBpc0R5bmFtaWNTY29wZShib29sJiByZXF1aXJlc0R5bmFtaWNDaGVja3MpIGNvbnN0Owor
ICAgICAgICBKU19JTkxJTkUgYm9vbCBpc0R5bmFtaWNTY29wZShib29sJiByZXF1aXJlc0R5bmFt
aWNDaGVja3MpIGNvbnN0OwogCi0gICAgICAgIHZvaWQgc2V0RXZhbEVuYWJsZWQoYm9vbCBlbmFi
bGVkKSB7IG1fZXZhbEVuYWJsZWQgPSBlbmFibGVkOyB9Ci0gICAgICAgIGJvb2wgZXZhbEVuYWJs
ZWQoKSB7IHJldHVybiBtX2V2YWxFbmFibGVkOyB9CisgICAgICAgIEpTX0lOTElORSB2b2lkIHNl
dEV2YWxFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX2V2YWxFbmFibGVkID0gZW5hYmxlZDsgfQor
ICAgICAgICBKU19JTkxJTkUgYm9vbCBldmFsRW5hYmxlZCgpIHsgcmV0dXJuIG1fZXZhbEVuYWJs
ZWQ7IH0KIAogICAgICAgICB2b2lkIHJlc2l6ZVJlZ2lzdGVycyhzaXplX3QgbmV3U2l6ZSk7CiAK
ICAgICAgICAgdm9pZCByZXNldFByb3RvdHlwZShKU0dsb2JhbERhdGEmLCBKU1ZhbHVlIHByb3Rv
dHlwZSk7CiAKLSAgICAgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKCkgY29uc3QgeyByZXR1
cm4gKm1fZ2xvYmFsRGF0YS5nZXQoKTsgfQorICAgICAgICBKU19JTkxJTkUgSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhKCkgY29uc3QgeyByZXR1cm4gKm1fZ2xvYmFsRGF0YS5nZXQoKTsgfQogCi0g
ICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgICAgICBKU19JTkxJTkUgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1
ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZShnbG9iYWxEYXRhLCAwLCBwcm90b3R5cGUsIFR5cGVJbmZvKEdsb2JhbE9iamVjdFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5mbyk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHJl
Z2lzdGVyV2Vha01hcChPcGFxdWVKU1dlYWtPYmplY3RNYXAqIG1hcCkKKyAgICAgICAgSlNfSU5M
SU5FIHZvaWQgcmVnaXN0ZXJXZWFrTWFwKE9wYXF1ZUpTV2Vha09iamVjdE1hcCogbWFwKQogICAg
ICAgICB7CiAgICAgICAgICAgICBjcmVhdGVSYXJlRGF0YUlmTmVlZGVkKCk7CiAgICAgICAgICAg
ICBtX3JhcmVEYXRhLT53ZWFrTWFwcy5hZGQobWFwKTsKICAgICAgICAgfQogCi0gICAgICAgIHZv
aWQgdW5yZWdpc3RlcldlYWtNYXAoT3BhcXVlSlNXZWFrT2JqZWN0TWFwKiBtYXApCisgICAgICAg
IEpTX0lOTElORSB2b2lkIHVucmVnaXN0ZXJXZWFrTWFwKE9wYXF1ZUpTV2Vha09iamVjdE1hcCog
bWFwKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAobV9yYXJlRGF0YSkKICAgICAgICAgICAg
ICAgICBtX3JhcmVEYXRhLT53ZWFrTWFwcy5yZW1vdmUobWFwKTsKICAgICAgICAgfQogCi0gICAg
ICAgIGRvdWJsZSB3ZWFrUmFuZG9tTnVtYmVyKCkgeyByZXR1cm4gbV93ZWFrUmFuZG9tLmdldCgp
OyB9CisgICAgICAgIEpTX0lOTElORSBkb3VibGUgd2Vha1JhbmRvbU51bWJlcigpIHsgcmV0dXJu
IG1fd2Vha1JhbmRvbS5nZXQoKTsgfQogICAgIHByb3RlY3RlZDoKIAogICAgICAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNs
b3QgfCBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8
IEpTVmFyaWFibGVPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwpAQCAtMzQyLDcgKzM0Miw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgY3JlYXRlVGhyb3dUeXBlRXJyb3IoRXhlY1N0
YXRlKik7CiAKLSAgICAgICAgdm9pZCBzZXRSZWdpc3RlcnMoV3JpdGVCYXJyaWVyPFVua25vd24+
KiByZWdpc3RlcnMsIFBhc3NPd25BcnJheVB0cjxXcml0ZUJhcnJpZXI8VW5rbm93bj4gPiByZWdp
c3RlckFycmF5LCBzaXplX3QgY291bnQpOworICAgICAgICBKU19JTkxJTkUgdm9pZCBzZXRSZWdp
c3RlcnMoV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlcnMsIFBhc3NPd25BcnJheVB0cjxX
cml0ZUJhcnJpZXI8VW5rbm93bj4gPiByZWdpc3RlckFycmF5LCBzaXplX3QgY291bnQpOwogICAg
ICAgICBzdGF0aWMgdm9pZCBjbGVhclJhcmVEYXRhKEpTQ2VsbCopOwogICAgIH07CiAKQEAgLTM1
NCwxMyArMzU0LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8SlNHbG9iYWxPYmplY3QqPihhc09iamVjdCh2YWx1ZSkpOwogICAgIH0KIAotICAgIGlubGlu
ZSB2b2lkIEpTR2xvYmFsT2JqZWN0OjpzZXRSZWdpc3RlcnMoV3JpdGVCYXJyaWVyPFVua25vd24+
KiByZWdpc3RlcnMsIFBhc3NPd25BcnJheVB0cjxXcml0ZUJhcnJpZXI8VW5rbm93bj4gPiByZWdp
c3RlckFycmF5LCBzaXplX3QgY291bnQpCisgICAgIEpTX0lOTElORSB2b2lkIEpTR2xvYmFsT2Jq
ZWN0OjpzZXRSZWdpc3RlcnMoV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlcnMsIFBhc3NP
d25BcnJheVB0cjxXcml0ZUJhcnJpZXI8VW5rbm93bj4gPiByZWdpc3RlckFycmF5LCBzaXplX3Qg
Y291bnQpCiAgICAgewogICAgICAgICBKU1ZhcmlhYmxlT2JqZWN0OjpzZXRSZWdpc3RlcnMocmVn
aXN0ZXJzLCByZWdpc3RlckFycmF5KTsKICAgICAgICAgbV9yZWdpc3RlckFycmF5U2l6ZSA9IGNv
dW50OwogICAgIH0KIAotICAgIGlubGluZSBib29sIEpTR2xvYmFsT2JqZWN0OjpoYXNPd25Qcm9w
ZXJ0eUZvcldyaXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lKQorICAgICBKU19JTkxJTkUgYm9vbCBKU0dsb2JhbE9iamVjdDo6aGFzT3duUHJvcGVydHlG
b3JXcml0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkK
ICAgICB7CiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90OwogICAgICAgICBpZiAoSlNWYXJpYWJs
ZU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXMsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xv
dCkpCkBAIC0zNjksNyArMzY5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiBz
eW1ib2xUYWJsZUdldChwcm9wZXJ0eU5hbWUsIHNsb3QsIHNsb3RJc1dyaXRlYWJsZSk7CiAgICAg
fQogCi0gICAgaW5saW5lIGJvb2wgSlNHbG9iYWxPYmplY3Q6OnN5bWJvbFRhYmxlSGFzUHJvcGVy
dHkoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorICAgICBKU19JTkxJTkUgYm9vbCBK
U0dsb2JhbE9iamVjdDo6c3ltYm9sVGFibGVIYXNQcm9wZXJ0eShjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUpCiAgICAgewogICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3lt
Ym9sVGFibGUoKS5pbmxpbmVHZXQocHJvcGVydHlOYW1lLmltcGwoKSk7CiAgICAgICAgIHJldHVy
biAhZW50cnkuaXNOdWxsKCk7CkBAIC00ODEsNyArNDgxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgY2xhc3MgRHluYW1pY0dsb2JhbE9iamVjdFNjb3BlIHsKICAgICAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoRHluYW1pY0dsb2JhbE9iamVjdFNjb3BlKTsKICAgICBwdWJsaWM6Ci0gICAgICAg
IER5bmFtaWNHbG9iYWxPYmplY3RTY29wZShKU0dsb2JhbERhdGEmLCBKU0dsb2JhbE9iamVjdCop
OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBEeW5hbWljR2xvYmFsT2JqZWN0U2NvcGUoSlNH
bG9iYWxEYXRhJiwgSlNHbG9iYWxPYmplY3QqKTsKIAogICAgICAgICB+RHluYW1pY0dsb2JhbE9i
amVjdFNjb3BlKCkKICAgICAgICAgewpAQCAtNDkzLDcgKzQ5Myw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBKU0dsb2JhbE9iamVjdCogbV9zYXZlZER5bmFtaWNHbG9iYWxPYmplY3Q7CiAg
ICAgfTsKIAotICAgIGlubGluZSBib29sIEpTR2xvYmFsT2JqZWN0Ojppc0R5bmFtaWNTY29wZShi
b29sJikgY29uc3QKKyAgICAgSlNfSU5MSU5FIGJvb2wgSlNHbG9iYWxPYmplY3Q6OmlzRHluYW1p
Y1Njb3BlKGJvb2wmKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxUaGlzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbFRoaXMuaAppbmRleCBlMzNj
YTdhMmY1ZGMwNjQwMDQ4ZDlmNGMxMDhhMDEwMjRiMjY5MWJiLi4xZWQ5NjMyNmIxY2YxNjYyYzYw
OTMxZTJjNmRhMTdhNTQ1MGRhNWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbFRoaXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbFRoaXMuaApAQCAtNjMsNyArNjMsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVu
IHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiAKLSAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVu
KEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZv
aWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgV3JpdGVCYXJy
aWVyPEpTR2xvYmFsT2JqZWN0PiBtX3Vud3JhcHBlZE9iamVjdDsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTG9jay5oCmluZGV4IDdiMDdiNGZiM2RhNWU0ZTgyZTAwNWM1MjQ0NTY1
YzlhNjcwYmY4N2YuLmEwZWI5Njk3NWE2NTk3MDBiMjIxNDAyNmQ5MGJmNDI3NGIxZDQzNGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCkBAIC01Niw3ICs1Niw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTTG9jayB7CiAgICAgICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKEpTTG9jayk7CiAgICAgcHVibGljOgotICAgICAgICBKU0xvY2soRXhlY1N0YXRlKik7
CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTTG9jayhFeGVjU3RhdGUqKTsKICAgICAgICAg
SlNMb2NrKEpTR2xvYmFsRGF0YSopOwogCiAgICAgICAgIEpTTG9jayhKU0xvY2tCZWhhdmlvciBs
b2NrQmVoYXZpb3IpCkBAIC04MCwyMiArODAsMjIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICB1bmxvY2sobV9sb2NrQmVoYXZpb3IpOyAKICAgICAgICAgfQogICAgICAgICAKLSAgICAg
ICAgc3RhdGljIHZvaWQgbG9jayhKU0xvY2tCZWhhdmlvcik7Ci0gICAgICAgIHN0YXRpYyB2b2lk
IHVubG9jayhKU0xvY2tCZWhhdmlvcik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyB2b2lkIGxvY2soSlNMb2NrQmVoYXZpb3IpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgdm9pZCB1bmxvY2soSlNMb2NrQmVoYXZpb3IpOwogICAgICAgICBzdGF0aWMgdm9pZCBs
b2NrKEV4ZWNTdGF0ZSopOwogICAgICAgICBzdGF0aWMgdm9pZCB1bmxvY2soRXhlY1N0YXRlKik7
CiAKLSAgICAgICAgc3RhdGljIGludHB0cl90IGxvY2tDb3VudCgpOwotICAgICAgICBzdGF0aWMg
Ym9vbCBjdXJyZW50VGhyZWFkSXNIb2xkaW5nTG9jaygpOworICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgaW50cHRyX3QgbG9ja0NvdW50KCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBib29sIGN1cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2NrKCk7CiAKICAgICAgICAg
SlNMb2NrQmVoYXZpb3IgbV9sb2NrQmVoYXZpb3I7CiAKICAgICAgICAgY2xhc3MgRHJvcEFsbExv
Y2tzIHsKICAgICAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERyb3BBbGxMb2Nrcyk7CiAg
ICAgICAgIHB1YmxpYzoKLSAgICAgICAgICAgIERyb3BBbGxMb2NrcyhFeGVjU3RhdGUqIGV4ZWMp
OwotICAgICAgICAgICAgRHJvcEFsbExvY2tzKEpTTG9ja0JlaGF2aW9yKTsKLSAgICAgICAgICAg
IH5Ecm9wQWxsTG9ja3MoKTsKKyAgICAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIERyb3BBbGxM
b2NrcyhFeGVjU3RhdGUqIGV4ZWMpOworICAgICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgRHJv
cEFsbExvY2tzKEpTTG9ja0JlaGF2aW9yKTsKKyAgICAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IH5Ecm9wQWxsTG9ja3MoKTsKICAgICAgICAgICAgIAogICAgICAgICBwcml2YXRlOgogICAgICAg
ICAgICAgaW50cHRyX3QgbV9sb2NrQ291bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuaAppbmRleCA4OGRkMzViYjg3ZjM1NGFhYjE0MDI0MWI5MzcwODU4NjMyYWNlZjli
Li42YTYwMmFmNmI1YzVhY2NjNTNhOTY2MzZhZWJiZTI4NmNmN2NkZWQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAgLTcwLDEyICs3MCwxMiBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgU2V0dGVyICAgICAgID0gMSA8PCA2ICAgLy8gcHJvcGVydHkgaXMg
YSBzZXR0ZXIKICAgICB9OwogCi0gICAgY2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlNDZWxsIHsK
KyAgICBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewog
ICAgICAgICBmcmllbmQgY2xhc3MgQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXI7CiAgICAgICAg
IGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKU0NlbGw7CiAgICAgICAg
IGZyaWVuZCBjbGFzcyBNYXJrZWRCbG9jazsKLSAgICAgICAgZnJpZW5kIGJvb2wgc2V0VXBTdGF0
aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNoRW50cnkqIGVudHJ5LCBK
U09iamVjdCogdGhpc09iaiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmIHNsb3QpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBmcmllbmQgYm9vbCBzZXRV
cFN0YXRpY0Z1bmN0aW9uU2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hFbnRyeSogZW50
cnksIEpTT2JqZWN0KiB0aGlzT2JqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYgc2xvdCk7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgSlNDZWxs
IEJhc2U7CkBAIC04OCwyMCArODgsMjAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3Rh
dGljIHZvaWQgZmluYWxpemUoSlNDZWxsKik7CiAKLSAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUo
KSBjb25zdDsKLSAgICAgICAgdm9pZCBzZXRQcm90b3R5cGUoSlNHbG9iYWxEYXRhJiwgSlNWYWx1
ZSBwcm90b3R5cGUpOwotICAgICAgICBib29sIHNldFByb3RvdHlwZVdpdGhDeWNsZUNoZWNrKEpT
R2xvYmFsRGF0YSYsIEpTVmFsdWUgcHJvdG90eXBlKTsKKyAgICAgICAgSlNfSU5MSU5FIEpTVmFs
dWUgcHJvdG90eXBlKCkgY29uc3Q7CisgICAgICAgIEpTX0lOTElORSB2b2lkIHNldFByb3RvdHlw
ZShKU0dsb2JhbERhdGEmLCBKU1ZhbHVlIHByb3RvdHlwZSk7CisgICAgICAgIEpTX0lOTElORSBi
b29sIHNldFByb3RvdHlwZVdpdGhDeWNsZUNoZWNrKEpTR2xvYmFsRGF0YSYsIEpTVmFsdWUgcHJv
dG90eXBlKTsKICAgICAgICAgCi0gICAgICAgIFN0cnVjdHVyZSogaW5oZXJpdG9ySUQoSlNHbG9i
YWxEYXRhJik7CisgICAgICAgIEpTX0lOTElORSBTdHJ1Y3R1cmUqIGluaGVyaXRvcklEKEpTR2xv
YmFsRGF0YSYpOwogCi0gICAgICAgIEpTVmFsdWUgZ2V0KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSkgY29uc3Q7Ci0gICAgICAgIEpTVmFsdWUgZ2V0KEV4ZWNTdGF0
ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSkgY29uc3Q7CisgICAgICAgIEpTX0lOTElORSBKU1Zh
bHVlIGdldChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpIGNvbnN0
OworICAgICAgICBKU19JTkxJTkUgSlNWYWx1ZSBnZXQoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJv
cGVydHlOYW1lKSBjb25zdDsKIAotICAgICAgICBib29sIGdldFByb3BlcnR5U2xvdChFeGVjU3Rh
dGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAg
ICAgICBib29sIGdldFByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBKU19JTkxJTkUgYm9vbCBnZXRQcm9wZXJ0eVNs
b3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmKTsKKyAgICAgICAgSlNfSU5MSU5FIGJvb2wgZ2V0UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSos
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIGJvb2wgZ2V0
UHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3du
UHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIEpTX0lOTElORSBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3du
UHJvcGVydHlTbG90QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJv
cGVydHlEZXNjcmlwdG9yJik7CiAKQEAgLTEyNyw3ICsxMjcsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICAgICAgc3Rh
dGljIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKIAotICAgICAgICBKU1ZhbHVlIHRvUHJpbWl0
aXZlKEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgPSBOb1ByZWZlcmVuY2UpIGNv
bnN0OworICAgICAgICBKU19JTkxJTkUgSlNWYWx1ZSB0b1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBQ
cmVmZXJyZWRQcmltaXRpdmVUeXBlID0gTm9QcmVmZXJlbmNlKSBjb25zdDsKICAgICAgICAgYm9v
bCB0b0Jvb2xlYW4oRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIGJvb2wgZ2V0UHJpbWl0aXZl
TnVtYmVyKEV4ZWNTdGF0ZSosIGRvdWJsZSYgbnVtYmVyLCBKU1ZhbHVlJikgY29uc3Q7CiAgICAg
ICAgIGRvdWJsZSB0b051bWJlcihFeGVjU3RhdGUqKSBjb25zdDsKQEAgLTEzOSw0NiArMTM5LDQ2
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIGdldFByb3BlcnR5U3BlY2lmaWNWYWx1
ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDZWxs
KiYgc3BlY2lmaWNGdW5jdGlvbikgY29uc3Q7CiAKICAgICAgICAgLy8gVGhpcyBnZXQgZnVuY3Rp
b24gb25seSBsb29rcyBhdCB0aGUgcHJvcGVydHkgbWFwLgotICAgICAgICBKU1ZhbHVlIGdldERp
cmVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSkgY29uc3QKKyAgICAgICAgSlNfSU5MSU5FIEpTVmFsdWUgZ2V0RGlyZWN0KEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKSBjb25zdAog
ICAgICAgICB7CiAgICAgICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmdldChn
bG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgcmV0dXJuIG9mZnNldCAhPSBX
VEY6Om5vdEZvdW5kID8gZ2V0RGlyZWN0T2Zmc2V0KG9mZnNldCkgOiBKU1ZhbHVlKCk7CiAgICAg
ICAgIH0KIAotICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBnZXREaXJlY3RMb2Nh
dGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSkKKyAgICAgICAgSlNfSU5MSU5FIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGdldERp
cmVjdExvY2F0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lKQogICAgICAgICB7CiAgICAgICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gc3Ry
dWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgcmV0
dXJuIG9mZnNldCAhPSBXVEY6Om5vdEZvdW5kID8gbG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0KSA6
IDA7CiAgICAgICAgIH0KIAotICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBnZXRE
aXJlY3RMb2NhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMpCisgICAgICAgIEpTX0lOTElORSBX
cml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBnZXREaXJlY3RMb2NhdGlvbihKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0
dHJpYnV0ZXMpCiAgICAgICAgIHsKICAgICAgICAgICAgIEpTQ2VsbCogc3BlY2lmaWNGdW5jdGlv
bjsKICAgICAgICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERh
dGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNGdW5jdGlvbik7CiAgICAgICAg
ICAgICByZXR1cm4gb2Zmc2V0ICE9IFdURjo6bm90Rm91bmQgPyBsb2NhdGlvbkZvck9mZnNldChv
ZmZzZXQpIDogMDsKICAgICAgICAgfQogCi0gICAgICAgIHNpemVfdCBvZmZzZXRGb3JMb2NhdGlv
bihXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbikgY29uc3QKKyAgICAgICAgSlNf
SU5MSU5FIHNpemVfdCBvZmZzZXRGb3JMb2NhdGlvbihXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+
KiBsb2NhdGlvbikgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGxvY2F0aW9u
IC0gcHJvcGVydHlTdG9yYWdlKCk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHRyYW5zaXRp
b25UbyhKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKKyAgICAgICAgSlNfSU5MSU5FIHZvaWQg
dHJhbnNpdGlvblRvKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwogCiAgICAgICAgIHZvaWQg
cmVtb3ZlRGlyZWN0KEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSk7Ci0gICAgICAgIGJvb2wgaGFzQ3VzdG9tUHJvcGVydGllcygpIHsgcmV0dXJuIHN0cnVjdHVy
ZSgpLT5kaWRUcmFuc2l0aW9uKCk7IH0KLSAgICAgICAgYm9vbCBoYXNHZXR0ZXJTZXR0ZXJQcm9w
ZXJ0aWVzKCkgeyByZXR1cm4gc3RydWN0dXJlKCktPmhhc0dldHRlclNldHRlclByb3BlcnRpZXMo
KTsgfQorICAgICAgICBKU19JTkxJTkUgYm9vbCBoYXNDdXN0b21Qcm9wZXJ0aWVzKCkgeyByZXR1
cm4gc3RydWN0dXJlKCktPmRpZFRyYW5zaXRpb24oKTsgfQorICAgICAgICBKU19JTkxJTkUgYm9v
bCBoYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkgeyByZXR1cm4gc3RydWN0dXJlKCktPmhhc0dl
dHRlclNldHRlclByb3BlcnRpZXMoKTsgfQogCi0gICAgICAgIGJvb2wgcHV0RGlyZWN0KEpTR2xv
YmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWdu
ZWQgYXR0ciwgYm9vbCBjaGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAg
dm9pZCBwdXREaXJlY3QoSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyID0gMCk7Ci0gICAgICAgIGJvb2wgcHV0RGlyZWN0
KEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwg
UHV0UHJvcGVydHlTbG90Jik7CisgICAgICAgIEpTX0lOTElORSBib29sIHB1dERpcmVjdChKU0ds
b2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2ln
bmVkIGF0dHIsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgICAg
IEpTX0lOTElORSB2b2lkIHB1dERpcmVjdChKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHIgPSAwKTsKKyAgICAgICAgSlNf
SU5MSU5FIGJvb2wgcHV0RGlyZWN0KEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKLSAgICAgICAgdm9pZCBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHIgPSAwKTsKKyAgICAgICAgSlNf
SU5MSU5FIHZvaWQgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyID0gMCk7
CiAKICAgICAgICAgLy8gRmFzdCBhY2Nlc3MgdG8ga25vd24gcHJvcGVydHkgb2Zmc2V0cy4KLSAg
ICAgICAgSlNWYWx1ZSBnZXREaXJlY3RPZmZzZXQoc2l6ZV90IG9mZnNldCkgY29uc3QgeyByZXR1
cm4gcHJvcGVydHlTdG9yYWdlKClbb2Zmc2V0XS5nZXQoKTsgfQotICAgICAgICB2b2lkIHB1dERp
cmVjdE9mZnNldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIHNpemVfdCBvZmZzZXQsIEpTVmFs
dWUgdmFsdWUpIHsgcHJvcGVydHlTdG9yYWdlKClbb2Zmc2V0XS5zZXQoZ2xvYmFsRGF0YSwgdGhp
cywgdmFsdWUpOyB9Ci0gICAgICAgIHZvaWQgcHV0VW5kZWZpbmVkQXREaXJlY3RPZmZzZXQoc2l6
ZV90IG9mZnNldCkgeyBwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRdLnNldFVuZGVmaW5lZCgpOyB9
CisgICAgICAgIEpTX0lOTElORSBKU1ZhbHVlIGdldERpcmVjdE9mZnNldChzaXplX3Qgb2Zmc2V0
KSBjb25zdCB7IHJldHVybiBwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRdLmdldCgpOyB9CisgICAg
ICAgIEpTX0lOTElORSB2b2lkIHB1dERpcmVjdE9mZnNldChKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIHNpemVfdCBvZmZzZXQsIEpTVmFsdWUgdmFsdWUpIHsgcHJvcGVydHlTdG9yYWdlKClbb2Zm
c2V0XS5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgdmFsdWUpOyB9CisgICAgICAgIEpTX0lOTElORSB2
b2lkIHB1dFVuZGVmaW5lZEF0RGlyZWN0T2Zmc2V0KHNpemVfdCBvZmZzZXQpIHsgcHJvcGVydHlT
dG9yYWdlKClbb2Zmc2V0XS5zZXRVbmRlZmluZWQoKTsgfQogCiAgICAgICAgIHZvaWQgZmlsbEdl
dHRlclByb3BlcnR5U2xvdChQcm9wZXJ0eVNsb3QmLCBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+
KiBsb2NhdGlvbik7CiAgICAgICAgIHZvaWQgaW5pdGlhbGl6ZUdldHRlclNldHRlclByb3BlcnR5
KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBHZXR0ZXJTZXR0ZXIqLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzKTsKQEAgLTE4OSw1MiArMTg5LDUyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBKU1ZhbHVlIGxvb2t1cFNldHRlcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUpOwogICAgICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVj
dCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlE
ZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAKLSAgICAgICAgYm9vbCBpc0dsb2JhbE9i
amVjdCgpIGNvbnN0OwotICAgICAgICBib29sIGlzVmFyaWFibGVPYmplY3QoKSBjb25zdDsKLSAg
ICAgICAgYm9vbCBpc0FjdGl2YXRpb25PYmplY3QoKSBjb25zdDsKLSAgICAgICAgYm9vbCBpc0Vy
cm9ySW5zdGFuY2UoKSBjb25zdDsKLSAgICAgICAgYm9vbCBpc0dsb2JhbFRoaXMoKSBjb25zdDsK
KyAgICAgICAgSlNfSU5MSU5FIGJvb2wgaXNHbG9iYWxPYmplY3QoKSBjb25zdDsKKyAgICAgICAg
SlNfSU5MSU5FIGJvb2wgaXNWYXJpYWJsZU9iamVjdCgpIGNvbnN0OworICAgICAgICBKU19JTkxJ
TkUgYm9vbCBpc0FjdGl2YXRpb25PYmplY3QoKSBjb25zdDsKKyAgICAgICAgSlNfSU5MSU5FIGJv
b2wgaXNFcnJvckluc3RhbmNlKCkgY29uc3Q7CisgICAgICAgIEpTX0lOTElORSBib29sIGlzR2xv
YmFsVGhpcygpIGNvbnN0OwogCiAgICAgICAgIHZvaWQgc2VhbChKU0dsb2JhbERhdGEmKTsKICAg
ICAgICAgdm9pZCBmcmVlemUoSlNHbG9iYWxEYXRhJik7CiAgICAgICAgIHZvaWQgcHJldmVudEV4
dGVuc2lvbnMoSlNHbG9iYWxEYXRhJik7Ci0gICAgICAgIGJvb2wgaXNTZWFsZWQoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhKSB7IHJldHVybiBzdHJ1Y3R1cmUoKS0+aXNTZWFsZWQoZ2xvYmFsRGF0
YSk7IH0KLSAgICAgICAgYm9vbCBpc0Zyb3plbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpIHsg
cmV0dXJuIHN0cnVjdHVyZSgpLT5pc0Zyb3plbihnbG9iYWxEYXRhKTsgfQotICAgICAgICBib29s
IGlzRXh0ZW5zaWJsZSgpIHsgcmV0dXJuIHN0cnVjdHVyZSgpLT5pc0V4dGVuc2libGUoKTsgfQor
ICAgICAgICBKU19JTkxJTkUgYm9vbCBpc1NlYWxlZChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEp
IHsgcmV0dXJuIHN0cnVjdHVyZSgpLT5pc1NlYWxlZChnbG9iYWxEYXRhKTsgfQorICAgICAgICBK
U19JTkxJTkUgYm9vbCBpc0Zyb3plbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpIHsgcmV0dXJu
IHN0cnVjdHVyZSgpLT5pc0Zyb3plbihnbG9iYWxEYXRhKTsgfQorICAgICAgICBKU19JTkxJTkUg
Ym9vbCBpc0V4dGVuc2libGUoKSB7IHJldHVybiBzdHJ1Y3R1cmUoKS0+aXNFeHRlbnNpYmxlKCk7
IH0KIAotICAgICAgICBib29sIHN0YXRpY0Z1bmN0aW9uc1JlaWZpZWQoKSB7IHJldHVybiBzdHJ1
Y3R1cmUoKS0+c3RhdGljRnVuY3Rpb25zUmVpZmllZCgpOyB9CisgICAgICAgIEpTX0lOTElORSBi
b29sIHN0YXRpY0Z1bmN0aW9uc1JlaWZpZWQoKSB7IHJldHVybiBzdHJ1Y3R1cmUoKS0+c3RhdGlj
RnVuY3Rpb25zUmVpZmllZCgpOyB9CiAgICAgICAgIHZvaWQgcmVpZnlTdGF0aWNGdW5jdGlvbnNG
b3JEZWxldGUoRXhlY1N0YXRlKiBleGVjKTsKIAogICAgICAgICB2b2lkIGFsbG9jYXRlUHJvcGVy
dHlTdG9yYWdlKEpTR2xvYmFsRGF0YSYsIHNpemVfdCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSk7
Ci0gICAgICAgIGJvb2wgaXNVc2luZ0lubGluZVN0b3JhZ2UoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCB2b2lkKj4obV9wcm9wZXJ0eVN0b3JhZ2UuZ2V0KCkpID09IHN0YXRpY19j
YXN0PGNvbnN0IHZvaWQqPih0aGlzICsgMSk7IH0KKyAgICAgICAgSlNfSU5MSU5FIGJvb2wgaXNV
c2luZ0lubGluZVN0b3JhZ2UoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB2b2lk
Kj4obV9wcm9wZXJ0eVN0b3JhZ2UuZ2V0KCkpID09IHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPih0
aGlzICsgMSk7IH0KIAotICAgICAgICB2b2lkKiBhZGRyZXNzT2ZQcm9wZXJ0eVN0b3JhZ2UoKQor
ICAgICAgICBKU19JTkxJTkUgdm9pZCogYWRkcmVzc09mUHJvcGVydHlTdG9yYWdlKCkKICAgICAg
ICAgewogICAgICAgICAgICAgcmV0dXJuICZtX3Byb3BlcnR5U3RvcmFnZTsKICAgICAgICAgfQog
CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBiYXNlRXh0ZXJuYWxTdG9yYWdlQ2FwYWNp
dHkgPSAxNjsKIAotICAgICAgICB2b2lkIGZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSkKKyAgICAgICAgSlNfSU5MSU5FIHZvaWQgZmxhdHRlbkRpY3Rpb25h
cnlPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQogICAgICAgICB7CiAgICAgICAgICAg
ICBzdHJ1Y3R1cmUoKS0+ZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgdGhp
cyk7CiAgICAgICAgIH0KIAotICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KCkg
Y29uc3QKKyAgICAgICAgSlNfSU5MSU5FIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoKSBj
b25zdAogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmdsb2JhbE9i
amVjdCgpKTsKICAgICAgICAgICAgIEFTU0VSVCghaXNHbG9iYWxPYmplY3QoKSB8fCAoKEpTT2Jq
ZWN0KilzdHJ1Y3R1cmUoKS0+Z2xvYmFsT2JqZWN0KCkpID09IHRoaXMpOwogICAgICAgICAgICAg
cmV0dXJuIHN0cnVjdHVyZSgpLT5nbG9iYWxPYmplY3QoKTsKICAgICAgICAgfQogICAgICAgICAK
LSAgICAgICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZklubGluZVN0b3JhZ2UoKTsKLSAgICAgICAg
c3RhdGljIHNpemVfdCBvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpOwotICAgICAgICBzdGF0aWMg
c2l6ZV90IG9mZnNldE9mSW5oZXJpdG9ySUQoKTsKKyAgICAgICAgSlNfSU5MSU5FIHN0YXRpYyBz
aXplX3Qgb2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCk7CisgICAgICAgIEpTX0lOTElORSBzdGF0aWMg
c2l6ZV90IG9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCk7CisgICAgICAgIEpTX0lOTElORSBzdGF0
aWMgc2l6ZV90IG9mZnNldE9mSW5oZXJpdG9ySUQoKTsKIAogICAgICAgICBzdGF0aWMgSlNfRVhQ
T1JUREFUQSBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCiAgICAgcHJvdGVjdGVkOgotICAgICAg
ICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlT
dG9yYWdlIGlubGluZVN0b3JhZ2UpCisgICAgICAgIEpTX0lOTElORSB2b2lkIGZpbmlzaENyZWF0
aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlTdG9yYWdlIGlubGluZVN0b3Jh
Z2UpCiAgICAgICAgIHsKICAgICAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbERh
dGEpOwogICAgICAgICAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKQEAgLTI0NSw3ICsy
NDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+
aXNPYmplY3QoKSk7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICAgICAgSlNfSU5MSU5FIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgICAgICB7CiAg
ICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgJnNf
aW5mbyk7CiAgICAgICAgIH0KQEAgLTI1NCw4ICsyNTQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgICAgICAvLyBUbyBpbnN0YW50aWF0ZSBvYmplY3RzIHlvdSBsaWtlbHkgd2FudCBKU0ZpbmFs
T2JqZWN0LCBiZWxvdy4KICAgICAgICAgLy8gVG8gY3JlYXRlIGRlcml2ZWQgdHlwZXMgeW91IGxp
a2VseSB3YW50IEpTTm9uRmluYWxPYmplY3QsIGJlbG93LgotICAgICAgICBKU09iamVjdChKU0ds
b2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eVN0b3JhZ2UgaW5saW5lU3RvcmFnZSk7Ci0g
ICAgICAgIEpTT2JqZWN0KFZQdHJTdGVhbGluZ0hhY2tUeXBlLCBQcm9wZXJ0eVN0b3JhZ2UgaW5s
aW5lU3RvcmFnZSkKKyAgICAgICAgSlNfSU5MSU5FIEpTT2JqZWN0KEpTR2xvYmFsRGF0YSYsIFN0
cnVjdHVyZSosIFByb3BlcnR5U3RvcmFnZSBpbmxpbmVTdG9yYWdlKTsKKyAgICAgICAgSlNfSU5M
SU5FIEpTT2JqZWN0KFZQdHJTdGVhbGluZ0hhY2tUeXBlLCBQcm9wZXJ0eVN0b3JhZ2UgaW5saW5l
U3RvcmFnZSkKICAgICAgICAgICAgIDogSlNDZWxsKFZQdHJTdGVhbGluZ0hhY2spCiAgICAgICAg
ICAgICAsIG1fcHJvcGVydHlTdG9yYWdlKGlubGluZVN0b3JhZ2UsIFN0b3JhZ2VCYXJyaWVyOjpV
bmNoZWNrZWQpCiAgICAgICAgIHsKQEAgLTI3MCwyMiArMjcwLDIyIEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB2b2lkIGlzT2JqZWN0KCk7CiAgICAgICAgIHZvaWQgaXNTdHJpbmcoKTsKICAg
ICAgICAgCi0gICAgICAgIENvbnN0UHJvcGVydHlTdG9yYWdlIHByb3BlcnR5U3RvcmFnZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcHJvcGVydHlTdG9yYWdlLmdldCgpOyB9Ci0gICAgICAgIFByb3BlcnR5
U3RvcmFnZSBwcm9wZXJ0eVN0b3JhZ2UoKSB7IHJldHVybiBtX3Byb3BlcnR5U3RvcmFnZS5nZXQo
KTsgfQorICAgICAgICBKU19JTkxJTkUgQ29uc3RQcm9wZXJ0eVN0b3JhZ2UgcHJvcGVydHlTdG9y
YWdlKCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0eVN0b3JhZ2UuZ2V0KCk7IH0KKyAgICAgICAg
SlNfSU5MSU5FIFByb3BlcnR5U3RvcmFnZSBwcm9wZXJ0eVN0b3JhZ2UoKSB7IHJldHVybiBtX3By
b3BlcnR5U3RvcmFnZS5nZXQoKTsgfQogCi0gICAgICAgIGNvbnN0IFdyaXRlQmFycmllckJhc2U8
VW5rbm93bj4qIGxvY2F0aW9uRm9yT2Zmc2V0KHNpemVfdCBvZmZzZXQpIGNvbnN0CisgICAgICAg
IEpTX0lOTElORSBjb25zdCBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbkZvck9m
ZnNldChzaXplX3Qgb2Zmc2V0KSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4g
JnByb3BlcnR5U3RvcmFnZSgpW29mZnNldF07CiAgICAgICAgIH0KIAotICAgICAgICBXcml0ZUJh
cnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbkZvck9mZnNldChzaXplX3Qgb2Zmc2V0KQorICAg
ICAgICBKU19JTkxJTkUgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYXRpb25Gb3JPZmZz
ZXQoc2l6ZV90IG9mZnNldCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuICZwcm9wZXJ0
eVN0b3JhZ2UoKVtvZmZzZXRdOwogICAgICAgICB9CiAKLSAgICAgICAgYm9vbCBwdXREaXJlY3RJ
bnRlcm5hbChKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIHVuc2lnbmVkIGF0dHIsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJvcGVydHlTbG90
JiwgSlNDZWxsKik7CisgICAgICAgIEpTX0lOTElORSBib29sIHB1dERpcmVjdEludGVybmFsKEpT
R2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5z
aWduZWQgYXR0ciwgYm9vbCBjaGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNsb3QmLCBKU0NlbGwq
KTsKIAotICAgICAgICBib29sIGlubGluZUdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBK
U19JTkxJTkUgYm9vbCBpbmxpbmVHZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKIAogICAgICAgICBjb25z
dCBIYXNoRW50cnkqIGZpbmRQcm9wZXJ0eUhhc2hFbnRyeShFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUpIGNvbnN0OwogICAgICAgICBTdHJ1Y3R1cmUqIGNyZWF0ZUlu
aGVyaXRvcklEKEpTR2xvYmFsRGF0YSYpOwpAQCAtMzg3LDQzICszODcsNDMgQEAgQ09NUElMRV9B
U1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcmFnZUNhcGFjaXR5ID49IEpTTm9uRmluYWxP
YmplY3RfaW5saW5lU3QKICAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiBtX2lubGlu
ZVN0b3JhZ2VbSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yYWdlQ2FwYWNpdHldOwogICAgIH07CiAK
LWlubGluZSBzaXplX3QgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpCisgSlNfSU5M
SU5FIHNpemVfdCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkKIHsKICAgICBBU1NF
UlQoT0JKRUNUX09GRlNFVE9GKEpTRmluYWxPYmplY3QsIG1faW5saW5lU3RvcmFnZSkgPT0gT0JK
RUNUX09GRlNFVE9GKEpTTm9uRmluYWxPYmplY3QsIG1faW5saW5lU3RvcmFnZSkpOwogICAgIHJl
dHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNGaW5hbE9iamVjdCwgbV9pbmxpbmVTdG9yYWdlKTsKIH0K
IAotaW5saW5lIHNpemVfdCBKU09iamVjdDo6b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UoKQorIEpT
X0lOTElORSBzaXplX3QgSlNPYmplY3Q6Om9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCkKIHsKICAg
ICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTT2JqZWN0LCBtX3Byb3BlcnR5U3RvcmFnZSk7CiB9
CiAKLWlubGluZSBzaXplX3QgSlNPYmplY3Q6Om9mZnNldE9mSW5oZXJpdG9ySUQoKQorIEpTX0lO
TElORSBzaXplX3QgSlNPYmplY3Q6Om9mZnNldE9mSW5oZXJpdG9ySUQoKQogewogICAgIHJldHVy
biBPQkpFQ1RfT0ZGU0VUT0YoSlNPYmplY3QsIG1faW5oZXJpdG9ySUQpOwogfQogCi1pbmxpbmUg
Ym9vbCBKU09iamVjdDo6aXNHbG9iYWxPYmplY3QoKSBjb25zdAorIEpTX0lOTElORSBib29sIEpT
T2JqZWN0Ojppc0dsb2JhbE9iamVjdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHN0cnVjdHVyZSgp
LT50eXBlSW5mbygpLnR5cGUoKSA9PSBHbG9iYWxPYmplY3RUeXBlOwogfQogCi1pbmxpbmUgYm9v
bCBKU09iamVjdDo6aXNWYXJpYWJsZU9iamVjdCgpIGNvbnN0CisgSlNfSU5MSU5FIGJvb2wgSlNP
YmplY3Q6OmlzVmFyaWFibGVPYmplY3QoKSBjb25zdAogewogICAgIHJldHVybiBzdHJ1Y3R1cmUo
KS0+dHlwZUluZm8oKS50eXBlKCkgPj0gVmFyaWFibGVPYmplY3RUeXBlOwogfQogCi1pbmxpbmUg
Ym9vbCBKU09iamVjdDo6aXNBY3RpdmF0aW9uT2JqZWN0KCkgY29uc3QKKyBKU19JTkxJTkUgYm9v
bCBKU09iamVjdDo6aXNBY3RpdmF0aW9uT2JqZWN0KCkgY29uc3QKIHsKICAgICByZXR1cm4gc3Ry
dWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpID09IEFjdGl2YXRpb25PYmplY3RUeXBlOwogfQog
Ci1pbmxpbmUgYm9vbCBKU09iamVjdDo6aXNFcnJvckluc3RhbmNlKCkgY29uc3QKKyBKU19JTkxJ
TkUgYm9vbCBKU09iamVjdDo6aXNFcnJvckluc3RhbmNlKCkgY29uc3QKIHsKICAgICByZXR1cm4g
c3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpID09IEVycm9ySW5zdGFuY2VUeXBlOwogfQog
Ci1pbmxpbmUgYm9vbCBKU09iamVjdDo6aXNHbG9iYWxUaGlzKCkgY29uc3QKKyBKU19JTkxJTkUg
Ym9vbCBKU09iamVjdDo6aXNHbG9iYWxUaGlzKCkgY29uc3QKIHsKICAgICByZXR1cm4gc3RydWN0
dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpID09IEdsb2JhbFRoaXNUeXBlOwogfQpAQCAtNDYzLDE4
ICs0NjMsMTggQEAgaW5saW5lIEpTT2JqZWN0KiBhc09iamVjdChKU1ZhbHVlIHZhbHVlKQogICAg
IHJldHVybiBhc09iamVjdCh2YWx1ZS5hc0NlbGwoKSk7CiB9CiAKLWlubGluZSBKU09iamVjdDo6
SlNPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
UHJvcGVydHlTdG9yYWdlIGlubGluZVN0b3JhZ2UpCisgSlNfSU5MSU5FIEpTT2JqZWN0OjpKU09i
amVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9w
ZXJ0eVN0b3JhZ2UgaW5saW5lU3RvcmFnZSkKICAgICA6IEpTQ2VsbChnbG9iYWxEYXRhLCBzdHJ1
Y3R1cmUpCiAgICAgLCBtX3Byb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRhLCB0aGlzLCBpbmxpbmVT
dG9yYWdlKQogewogfQogCi1pbmxpbmUgSlNWYWx1ZSBKU09iamVjdDo6cHJvdG90eXBlKCkgY29u
c3QKKyBKU19JTkxJTkUgSlNWYWx1ZSBKU09iamVjdDo6cHJvdG90eXBlKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gc3RydWN0dXJlKCktPnN0b3JlZFByb3RvdHlwZSgpOwogfQogCi1pbmxpbmUgYm9v
bCBKU09iamVjdDo6c2V0UHJvdG90eXBlV2l0aEN5Y2xlQ2hlY2soSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKKyBKU19JTkxJTkUgYm9vbCBKU09iamVjdDo6c2V0
UHJvdG90eXBlV2l0aEN5Y2xlQ2hlY2soSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVl
IHByb3RvdHlwZSkKIHsKICAgICBKU1ZhbHVlIG5leHRQcm90b3R5cGVWYWx1ZSA9IHByb3RvdHlw
ZTsKICAgICB3aGlsZSAobmV4dFByb3RvdHlwZVZhbHVlICYmIG5leHRQcm90b3R5cGVWYWx1ZS5p
c09iamVjdCgpKSB7CkBAIC00ODcsMTMgKzQ4NywxMyBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6
c2V0UHJvdG90eXBlV2l0aEN5Y2xlQ2hlY2soSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1Zh
bAogICAgIHJldHVybiB0cnVlOwogfQogCi1pbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0UHJvdG90
eXBlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCisgSlNfSU5M
SU5FIHZvaWQgSlNPYmplY3Q6OnNldFByb3RvdHlwZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IEpTVmFsdWUgcHJvdG90eXBlKQogewogICAgIEFTU0VSVChwcm90b3R5cGUpOwogICAgIHNldFN0
cnVjdHVyZShnbG9iYWxEYXRhLCBTdHJ1Y3R1cmU6OmNoYW5nZVByb3RvdHlwZVRyYW5zaXRpb24o
Z2xvYmFsRGF0YSwgc3RydWN0dXJlKCksIHByb3RvdHlwZSkpOwogfQogCi1pbmxpbmUgU3RydWN0
dXJlKiBKU09iamVjdDo6aW5oZXJpdG9ySUQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQorIEpT
X0lOTElORSBTdHJ1Y3R1cmUqIEpTT2JqZWN0Ojppbmhlcml0b3JJRChKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEpCiB7CiAgICAgaWYgKG1faW5oZXJpdG9ySUQpIHsKICAgICAgICAgQVNTRVJUKG1f
aW5oZXJpdG9ySUQtPmlzRW1wdHkoKSk7CkBAIC02MDYsNyArNjA2LDcgQEAgQUxXQVlTX0lOTElO
RSBib29sIEpTT2JqZWN0OjpnZXRQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25l
ZCBwcm9wZXJ0eU4KICAgICB9CiB9CiAKLWlubGluZSBKU1ZhbHVlIEpTT2JqZWN0OjpnZXQoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpIGNvbnN0CisgSlNf
SU5MSU5FIEpTVmFsdWUgSlNPYmplY3Q6OmdldChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSkgY29uc3QKIHsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlz
KTsKICAgICBpZiAoY29uc3RfY2FzdDxKU09iamVjdCo+KHRoaXMpLT5nZXRQcm9wZXJ0eVNsb3Qo
ZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KSkKQEAgLTYxNSw3ICs2MTUsNyBAQCBpbmxpbmUgSlNW
YWx1ZSBKU09iamVjdDo6Z2V0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lKSBjbwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCi1pbmxpbmUgSlNW
YWx1ZSBKU09iamVjdDo6Z2V0KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1l
KSBjb25zdAorIEpTX0lOTElORSBKU1ZhbHVlIEpTT2JqZWN0OjpnZXQoRXhlY1N0YXRlKiBleGVj
LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpIGNvbnN0CiB7CiAgICAgUHJvcGVydHlTbG90IHNsb3Qo
dGhpcyk7CiAgICAgaWYgKGNvbnN0X2Nhc3Q8SlNPYmplY3QqPih0aGlzKS0+Z2V0UHJvcGVydHlT
bG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCkpCkBAIC02MjQsNyArNjI0LDcgQEAgaW5saW5l
IEpTVmFsdWUgSlNPYmplY3Q6OmdldChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5
TmFtZSkgY29uc3QKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIAotaW5saW5lIGJvb2wg
SlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRy
aWJ1dGVzLCBib29sIGNoZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5U2xvdCYgc2xvdCwgSlNDZWxs
KiBzcGVjaWZpY0Z1bmN0aW9uKQorIEpTX0lOTElORSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJ
bnRlcm5hbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgYm9vbCBjaGVja1Jl
YWRPbmx5LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTQ2VsbCogc3BlY2lmaWNGdW5jdGlvbikK
IHsKICAgICBBU1NFUlQodmFsdWUpOwogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwg
SGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcCh0aGlzKSk7CkBAIC03MzUsNyArNzM1LDcg
QEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotaW5saW5l
IGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmli
dXRlcywgYm9vbCBjaGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCisgSlNfSU5M
SU5FIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0
cmlidXRlcywgYm9vbCBjaGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAg
ICAgQVNTRVJUKHZhbHVlKTsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhlYXA6
OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpcykpOwpAQCAtNzQzLDE4ICs3NDMsMTggQEAg
aW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IGNvbnN0IElkZW50aWZpZXImIHByb3AKICAgICByZXR1cm4gcHV0RGlyZWN0SW50ZXJuYWwoZ2xv
YmFsRGF0YSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgY2hlY2tSZWFkT25seSwg
c2xvdCwgZ2V0SlNGdW5jdGlvbih2YWx1ZSkpOwogfQogCi1pbmxpbmUgdm9pZCBKU09iamVjdDo6
cHV0RGlyZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQorIEpTX0lOTElO
RSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMpCiB7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Q7CiAgICAgcHV0RGlyZWN0SW50ZXJu
YWwoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgZmFsc2UsIHNs
b3QsIGdldEpTRnVuY3Rpb24odmFsdWUpKTsKIH0KIAotaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1
dERpcmVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorIEpTX0lOTElO
RSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xv
dCYgc2xvdCkKIHsKICAgICByZXR1cm4gcHV0RGlyZWN0SW50ZXJuYWwoZ2xvYmFsRGF0YSwgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgMCwgZmFsc2UsIHNsb3QsIGdldEpTRnVuY3Rpb24odmFsdWUpKTsK
IH0KIAotaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQorIEpTX0lOTElORSB2b2lkIEpTT2Jq
ZWN0OjpwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQg
YXR0cmlidXRlcykKIHsKICAgICBzaXplX3QgY3VycmVudENhcGFjaXR5ID0gc3RydWN0dXJlKCkt
PnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCk7CiAgICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVy
ZSgpLT5hZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHByb3BlcnR5TmFt
ZSwgYXR0cmlidXRlcywgZ2V0SlNGdW5jdGlvbih2YWx1ZSkpOwpAQCAtNzYzLDE0ICs3NjMsMTQg
QEAgaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QKICAgICBwdXREaXJlY3RPZmZzZXQoZ2xvYmFsRGF0
YSwgb2Zmc2V0LCB2YWx1ZSk7CiB9CiAKLWlubGluZSB2b2lkIEpTT2JqZWN0Ojp0cmFuc2l0aW9u
VG8oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSkKKyBK
U19JTkxJTkUgdm9pZCBKU09iamVjdDo6dHJhbnNpdGlvblRvKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUpCiB7CiAgICAgaWYgKHN0cnVjdHVyZSgpLT5w
cm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpICE9IG5ld1N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdl
Q2FwYWNpdHkoKSkKICAgICAgICAgYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0YSwg
c3RydWN0dXJlKCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCksIG5ld1N0cnVjdHVyZS0+cHJv
cGVydHlTdG9yYWdlQ2FwYWNpdHkoKSk7CiAgICAgc2V0U3RydWN0dXJlKGdsb2JhbERhdGEsIG5l
d1N0cnVjdHVyZSk7CiB9CiAKLWlubGluZSBKU1ZhbHVlIEpTT2JqZWN0Ojp0b1ByaW1pdGl2ZShF
eGVjU3RhdGUqIGV4ZWMsIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgcHJlZmVycmVkVHlwZSkgY29u
c3QKKyBKU19JTkxJTkUgSlNWYWx1ZSBKU09iamVjdDo6dG9QcmltaXRpdmUoRXhlY1N0YXRlKiBl
eGVjLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIHByZWZlcnJlZFR5cGUpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIG1ldGhvZFRhYmxlKCktPmRlZmF1bHRWYWx1ZSh0aGlzLCBleGVjLCBwcmVmZXJyZWRU
eXBlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3Ry
aW5nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAppbmRl
eCAwZTZhNDhhMDdhZjllM2I5YjczZjIzZDRhODI0ZDllYWZmYTA4N2RlLi4xOTc3NGEzNmZiMmRi
MGM0YjE3YWRjNjQ5YWFiN2MyNTFkZjg3NmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTdHJpbmcuY3BwCkBAIC0yNDEsNyArMjQxLDcgQEAgVVN0cmluZyBKU1N0cmluZzo6
dG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAgIHJldHVybiB2YWx1ZShleGVjKTsK
IH0KIAotaW5saW5lIFN0cmluZ09iamVjdCogU3RyaW5nT2JqZWN0OjpjcmVhdGUoRXhlY1N0YXRl
KiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1N0cmluZyogc3RyaW5nKQor
IEpTX0lOTElORSBTdHJpbmdPYmplY3QqIFN0cmluZ09iamVjdDo6Y3JlYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTdHJpbmcqIHN0cmluZykKIHsK
ICAgICBTdHJpbmdPYmplY3QqIG9iamVjdCA9IG5ldyAoYWxsb2NhdGVDZWxsPFN0cmluZ09iamVj
dD4oKmV4ZWMtPmhlYXAoKSkpIFN0cmluZ09iamVjdChleGVjLT5nbG9iYWxEYXRhKCksIGdsb2Jh
bE9iamVjdC0+c3RyaW5nT2JqZWN0U3RydWN0dXJlKCkpOwogICAgIG9iamVjdC0+ZmluaXNoQ3Jl
YXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3RyaW5nLmgKaW5kZXggOGY2NTU0YmVmY2RmZDc5ZDZjMmZkZjUwZmVhNDBhMjZi
M2U2ZWUwNi4uNTYwNjJkYzdiY2QyMmFhMDliNTllN2I1N2Y4N2NiZjAxN2I2MmU0OCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCkBAIC0xMDUsMjQgKzEwNSwyNCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEpT
U3RyaW5nKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiB2
YWx1ZSkKKyAgICAgICAgSlNfSU5MSU5FIEpTU3RyaW5nKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiB2YWx1ZSkKICAgICAgICAgICAgIDogSlNDZWxsKGds
b2JhbERhdGEsIGdsb2JhbERhdGEuc3RyaW5nU3RydWN0dXJlLmdldCgpKQogICAgICAgICAgICAg
LCBtX3ZhbHVlKHZhbHVlKQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBKU1N0cmlu
ZyhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCisgICAgICAgIEpTX0lOTElORSBKU1N0cmluZyhK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCiAgICAgICAgICAgICA6IEpTQ2VsbChnbG9iYWxEYXRh
LCBnbG9iYWxEYXRhLnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkKICAgICAgICAgewogICAgICAgICB9
CiAKLSAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEp
CisgICAgICAgIEpTX0lOTElORSB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSkKICAgICAgICAgewogICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xv
YmFsRGF0YSk7CiAgICAgICAgICAgICBtX2xlbmd0aCA9IDA7CiAgICAgICAgIH0KIAotICAgICAg
ICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgc2l6ZV90IGxl
bmd0aCkKKyAgICAgICAgSlNfSU5MSU5FIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBzaXplX3QgbGVuZ3RoKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NF
UlQoIW1fdmFsdWUuaXNOdWxsKCkpOwogICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
Z2xvYmFsRGF0YSk7CkBAIC0xMzAsNyArMTMwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICBtX2lzOEJpdCA9IG1fdmFsdWUuaW1wbCgpLT5pczhCaXQoKTsKICAgICAgICAgfQogCi0g
ICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBzaXpl
X3QgbGVuZ3RoLCBzaXplX3QgY29zdCkKKyAgICAgICAgSlNfSU5MSU5FIHZvaWQgZmluaXNoQ3Jl
YXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBzaXplX3QgbGVuZ3RoLCBzaXplX3QgY29z
dCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKCFtX3ZhbHVlLmlzTnVsbCgpKTsKICAg
ICAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEpOwpAQCAtMTM5LDcgKzEz
OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgSGVhcDo6aGVhcCh0aGlzKS0+cmVw
b3J0RXh0cmFNZW1vcnlDb3N0KGNvc3QpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTU3RyaW5nKiBzMSwgSlNTdHJp
bmcqIHMyKQorICAgICAgICBKU19JTkxJTkUgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIEpTU3RyaW5nKiBzMSwgSlNTdHJpbmcqIHMyKQogICAgICAgICB7CiAg
ICAgICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhKTsKICAgICAgICAgICAg
IG1fbGVuZ3RoID0gczEtPmxlbmd0aCgpICsgczItPmxlbmd0aCgpOwpAQCAtMTQ4LDcgKzE0OCw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgbV9maWJlcnNbMV0uc2V0KGdsb2JhbERh
dGEsIHRoaXMsIHMyKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1N0cmluZyogczEsIEpTU3RyaW5nKiBzMiwgSlNT
dHJpbmcqIHMzKQorICAgICAgICBKU19JTkxJTkUgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIEpTU3RyaW5nKiBzMSwgSlNTdHJpbmcqIHMyLCBKU1N0cmluZyog
czMpCiAgICAgICAgIHsKICAgICAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbERh
dGEpOwogICAgICAgICAgICAgbV9sZW5ndGggPSBzMS0+bGVuZ3RoKCkgKyBzMi0+bGVuZ3RoKCkg
KyBzMy0+bGVuZ3RoKCk7CkBAIC0xNTgsNyArMTU4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgICAgICBtX2ZpYmVyc1syXS5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgczMpOwogICAgICAgICB9
CiAKLSAgICAgICAgc3RhdGljIEpTU3RyaW5nKiBjcmVhdGVOdWxsKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSkKKyAgICAgICAgSlNfSU5MSU5FIHN0YXRpYyBKU1N0cmluZyogY3JlYXRlTnVsbChK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCiAgICAgICAgIHsKICAgICAgICAgICAgIEpTU3RyaW5n
KiBuZXdTdHJpbmcgPSBuZXcgKGFsbG9jYXRlQ2VsbDxKU1N0cmluZz4oZ2xvYmFsRGF0YS5oZWFw
KSkgSlNTdHJpbmcoZ2xvYmFsRGF0YSk7CiAgICAgICAgICAgICBuZXdTdHJpbmctPmZpbmlzaENy
ZWF0aW9uKGdsb2JhbERhdGEpOwpAQCAtMTY2LDcgKzE2Niw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICB9CiAKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBKU1N0cmluZyogY3JlYXRl
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiB2YWx1ZSkK
KyAgICAgICAgSlNfSU5MSU5FIHN0YXRpYyBKU1N0cmluZyogY3JlYXRlKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiB2YWx1ZSkKICAgICAgICAgewogICAg
ICAgICAgICAgQVNTRVJUKHZhbHVlKTsKICAgICAgICAgICAgIHNpemVfdCBsZW5ndGggPSB2YWx1
ZS0+bGVuZ3RoKCk7CkBAIC0xNzUsMTkgKzE3NSwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgICAgIG5ld1N0cmluZy0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSwgbGVuZ3RoLCBjb3N0
KTsKICAgICAgICAgICAgIHJldHVybiBuZXdTdHJpbmc7CiAgICAgICAgIH0KLSAgICAgICAgc3Rh
dGljIEpTU3RyaW5nKiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1N0cmluZyog
czEsIEpTU3RyaW5nKiBzMikKKyAgICAgICAgSlNfSU5MSU5FIHN0YXRpYyBKU1N0cmluZyogY3Jl
YXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNTdHJpbmcqIHMxLCBKU1N0cmluZyogczIp
CiAgICAgICAgIHsKICAgICAgICAgICAgIEpTU3RyaW5nKiBuZXdTdHJpbmcgPSBuZXcgKGFsbG9j
YXRlQ2VsbDxKU1N0cmluZz4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNTdHJpbmcoZ2xvYmFsRGF0YSk7
CiAgICAgICAgICAgICBuZXdTdHJpbmctPmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIHMxLCBz
Mik7CiAgICAgICAgICAgICByZXR1cm4gbmV3U3RyaW5nOwogICAgICAgICB9Ci0gICAgICAgIHN0
YXRpYyBKU1N0cmluZyogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNTdHJpbmcq
IHMxLCBKU1N0cmluZyogczIsIEpTU3RyaW5nKiBzMykKKyAgICAgICAgSlNfSU5MSU5FIHN0YXRp
YyBKU1N0cmluZyogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNTdHJpbmcqIHMx
LCBKU1N0cmluZyogczIsIEpTU3RyaW5nKiBzMykKICAgICAgICAgewogICAgICAgICAgICAgSlNT
dHJpbmcqIG5ld1N0cmluZyA9IG5ldyAoYWxsb2NhdGVDZWxsPEpTU3RyaW5nPihnbG9iYWxEYXRh
LmhlYXApKSBKU1N0cmluZyhnbG9iYWxEYXRhKTsKICAgICAgICAgICAgIG5ld1N0cmluZy0+Zmlu
aXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSwgczEsIHMyLCBzMyk7CiAgICAgICAgICAgICByZXR1cm4g
bmV3U3RyaW5nOwogICAgICAgICB9Ci0gICAgICAgIHN0YXRpYyBKU1N0cmluZyogY3JlYXRlSGFz
T3RoZXJPd25lcihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFBhc3NSZWZQdHI8U3RyaW5nSW1w
bD4gdmFsdWUpCisgICAgICAgIEpTX0lOTElORSBzdGF0aWMgSlNTdHJpbmcqIGNyZWF0ZUhhc090
aGVyT3duZXIoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+
IHZhbHVlKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQodmFsdWUpOwogICAgICAgICAg
ICAgc2l6ZV90IGxlbmd0aCA9IHZhbHVlLT5sZW5ndGgoKTsKQEAgLTE5OCwxOSArMTk4LDE5IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZpcnR1YWwgfkpTU3RyaW5nKCk7CiAKLSAgICAg
ICAgY29uc3QgVVN0cmluZyYgdmFsdWUoRXhlY1N0YXRlKiBleGVjKSBjb25zdAorICAgICAgICBK
U19JTkxJTkUgY29uc3QgVVN0cmluZyYgdmFsdWUoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAg
ICAgICB7CiAgICAgICAgICAgICBpZiAoaXNSb3BlKCkpCiAgICAgICAgICAgICAgICAgcmVzb2x2
ZVJvcGUoZXhlYyk7CiAgICAgICAgICAgICByZXR1cm4gbV92YWx1ZTsKICAgICAgICAgfQotICAg
ICAgICBjb25zdCBVU3RyaW5nJiB0cnlHZXRWYWx1ZSgpIGNvbnN0CisgICAgICAgIEpTX0lOTElO
RSBjb25zdCBVU3RyaW5nJiB0cnlHZXRWYWx1ZSgpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAg
ICAgIGlmIChpc1JvcGUoKSkKICAgICAgICAgICAgICAgICByZXNvbHZlUm9wZSgwKTsKICAgICAg
ICAgICAgIHJldHVybiBtX3ZhbHVlOwogICAgICAgICB9Ci0gICAgICAgIHVuc2lnbmVkIGxlbmd0
aCgpIHsgcmV0dXJuIG1fbGVuZ3RoOyB9CisgICAgICAgIEpTX0lOTElORSB1bnNpZ25lZCBsZW5n
dGgoKSB7IHJldHVybiBtX2xlbmd0aDsgfQogCiAgICAgICAgIEpTVmFsdWUgdG9QcmltaXRpdmUo
RXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3Q7CiAgICAgICAgIGJvb2wg
dG9Cb29sZWFuKEV4ZWNTdGF0ZSopIGNvbnN0OwpAQCAtMjE5LDMwICsyMTksMzAgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIFVTdHJpbmcgdG9TdHJpbmcoRXhlY1N0YXRlKikgY29uc3Q7CiAg
ICAgICAgIGRvdWJsZSB0b051bWJlcihFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAgCi0gICAg
ICAgIGJvb2wgZ2V0U3RyaW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIGJvb2wgZ2V0U3RyaW5n
UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90Jik7CisgICAgICAgIEpTX0lOTElORSBib29sIGdldFN0cmluZ1Byb3BlcnR5U2xvdChFeGVj
U3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwor
ICAgICAgICBKU19JTkxJTkUgYm9vbCBnZXRTdHJpbmdQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwg
dW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgYm9vbCBnZXRT
dHJpbmdQcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAotICAgICAgICBib29sIGNhbkdldElu
ZGV4KHVuc2lnbmVkIGkpIHsgcmV0dXJuIGkgPCBtX2xlbmd0aDsgfQotICAgICAgICBKU1N0cmlu
ZyogZ2V0SW5kZXgoRXhlY1N0YXRlKiwgdW5zaWduZWQpOworICAgICAgICBKU19JTkxJTkUgYm9v
bCBjYW5HZXRJbmRleCh1bnNpZ25lZCBpKSB7IHJldHVybiBpIDwgbV9sZW5ndGg7IH0KKyAgICAg
ICAgSlNfSU5MSU5FIEpTU3RyaW5nKiBnZXRJbmRleChFeGVjU3RhdGUqLCB1bnNpZ25lZCk7CiAg
ICAgICAgIEpTU3RyaW5nKiBnZXRJbmRleFNsb3dDYXNlKEV4ZWNTdGF0ZSosIHVuc2lnbmVkKTsK
IAogICAgICAgICBKU1ZhbHVlIHJlcGxhY2VDaGFyYWN0ZXIoRXhlY1N0YXRlKiwgVUNoYXIsIGNv
bnN0IFVTdHJpbmcmIHJlcGxhY2VtZW50KTsKIAotICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKQorICAgICAgICBKU19JTkxJTkUgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90bykKICAgICAgICAgewogICAgICAg
ICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwg
cHJvdG8sIFR5cGVJbmZvKFN0cmluZ1R5cGUsIE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCks
ICZzX2luZm8pOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZkxl
bmd0aCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU1N0cmluZywgbV9sZW5ndGgpOyB9Ci0g
ICAgICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZWYWx1ZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZT
RVRPRihKU1N0cmluZywgbV92YWx1ZSk7IH0KKyAgICAgICAgSlNfSU5MSU5FIHN0YXRpYyBzaXpl
X3Qgb2Zmc2V0T2ZMZW5ndGgoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNTdHJpbmcsIG1f
bGVuZ3RoKTsgfQorICAgICAgICBKU19JTkxJTkUgc3RhdGljIHNpemVfdCBvZmZzZXRPZlZhbHVl
KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTU3RyaW5nLCBtX3ZhbHVlKTsgfQogCi0gICAg
ICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOworICAgICAgICBKU19FWFBPUlREQVRB
IHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCiAgICAgICAgIHN0YXRpYyB2b2lkIHZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgIHByaXZhdGU6Ci0gICAg
ICAgIEpTU3RyaW5nKFZQdHJTdGVhbGluZ0hhY2tUeXBlKSAKKyAgICAgICAgSlNfSU5MSU5FIEpT
U3RyaW5nKFZQdHJTdGVhbGluZ0hhY2tUeXBlKSAKICAgICAgICAgICAgIDogSlNDZWxsKFZQdHJT
dGVhbGluZ0hhY2spCiAgICAgICAgIHsKICAgICAgICAgfQpAQCAtMjY2LDkgKzI2Niw5IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBtdXRhYmxlIFVTdHJpbmcgbV92YWx1ZTsKICAgICAgICAg
bXV0YWJsZSBGaXhlZEFycmF5PFdyaXRlQmFycmllcjxKU1N0cmluZz4sIHNfbWF4SW50ZXJuYWxS
b3BlTGVuZ3RoPiBtX2ZpYmVyczsKIAotICAgICAgICBib29sIGlzUm9wZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdmFsdWUuaXNOdWxsKCk7IH0KLSAgICAgICAgYm9vbCBpczhCaXQoKSBjb25zdCB7IHJl
dHVybiBtX2lzOEJpdDsgfQotICAgICAgICBVU3RyaW5nJiBzdHJpbmcoKSB7IEFTU0VSVCghaXNS
b3BlKCkpOyByZXR1cm4gbV92YWx1ZTsgfQorICAgICAgICBKU19JTkxJTkUgYm9vbCBpc1JvcGUo
KSBjb25zdCB7IHJldHVybiBtX3ZhbHVlLmlzTnVsbCgpOyB9CisgICAgICAgIEpTX0lOTElORSBi
b29sIGlzOEJpdCgpIGNvbnN0IHsgcmV0dXJuIG1faXM4Qml0OyB9CisgICAgICAgIEpTX0lOTElO
RSBVU3RyaW5nJiBzdHJpbmcoKSB7IEFTU0VSVCghaXNSb3BlKCkpOyByZXR1cm4gbV92YWx1ZTsg
fQogCiAgICAgICAgIGZyaWVuZCBKU1ZhbHVlIGpzU3RyaW5nKEV4ZWNTdGF0ZSosIEpTU3RyaW5n
KiwgSlNTdHJpbmcqKTsKICAgICAgICAgZnJpZW5kIEpTVmFsdWUganNTdHJpbmcoRXhlY1N0YXRl
KiwgUmVnaXN0ZXIqLCB1bnNpZ25lZCBjb3VudCk7CkBAIC0zMzAsNyArMzMwLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHJldHVybiBmaXh1cFZQdHIoZ2xvYmFsRGF0YSwgSlNTdHJpbmc6
OmNyZWF0ZSgqZ2xvYmFsRGF0YSwgcy5pbXBsKCkpKTsKICAgICB9CiAKLSAgICBpbmxpbmUgSlNT
dHJpbmcqIEpTU3RyaW5nOjpnZXRJbmRleChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGkpCisg
ICAgIEpTX0lOTElORSBKU1N0cmluZyogSlNTdHJpbmc6OmdldEluZGV4KEV4ZWNTdGF0ZSogZXhl
YywgdW5zaWduZWQgaSkKICAgICB7CiAgICAgICAgIEFTU0VSVChjYW5HZXRJbmRleChpKSk7CiAg
ICAgICAgIGlmIChpc1JvcGUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUu
aAppbmRleCBhMDAxMDYyNzRmZWI5N2IzMzUxNmI4ODc5YzM0ZmZjYTBjY2MwYWM2Li5lNDNjOTJi
OTI0Y2Y3OWJlNDc0Y2M1MDE2ZjIxMzU3ZGFkNmUwNGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNWYWx1ZS5oCkBAIC05Myw3ICs5Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IH07CiAKICAgICAvLyBUaGlzIGltcGxlbWVudHMgVG9JbnQzMiwgZGVmaW5lZCBpbiBFQ01BLTI2
MiA5LjUuCi0gICAgaW50MzJfdCB0b0ludDMyKGRvdWJsZSk7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgaW50MzJfdCB0b0ludDMyKGRvdWJsZSk7CiAKICAgICAvLyBUaGlzIGltcGxlbWVudHMgVG9V
SW50MzIsIGRlZmluZWQgaW4gRUNNQS0yNjIgOS42LgogICAgIGlubGluZSB1aW50MzJfdCB0b1VJ
bnQzMihkb3VibGUgbnVtYmVyKQpAQCAtMjAzLDcgKzIwMyw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBKU09iamVjdCogdG9PYmplY3QoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqKSBj
b25zdDsKIAogICAgICAgICAvLyBJbnRlZ2VyIGNvbnZlcnNpb25zLgotICAgICAgICBkb3VibGUg
dG9JbnRlZ2VyKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBk
b3VibGUgdG9JbnRlZ2VyKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgICBkb3VibGUgdG9JbnRl
Z2VyUHJlc2VydmVOYU4oRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIGludDMyX3QgdG9JbnQz
MihFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAgdWludDMyX3QgdG9VSW50MzIoRXhlY1N0YXRl
KikgY29uc3Q7CkBAIC0yMzIsNyArMjMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAg
Ym9vbCBpc0NlbGwoKSBjb25zdDsKICAgICAgICAgSlNDZWxsKiBhc0NlbGwoKSBjb25zdDsKLSAg
ICAgICAgYm9vbCBpc1ZhbGlkQ2FsbGVlKCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJv
b2wgaXNWYWxpZENhbGxlZSgpOwogCiAjaWZuZGVmIE5ERUJVRwogICAgICAgICBjaGFyKiBkZXNj
cmlwdGlvbigpOwpAQCAtMjQ1LDExICsyNDUsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IEpTVmFsdWUoSGFzaFRhYmxlRGVsZXRlZFZhbHVlVGFnKTsKIAogICAgICAgICBpbmxpbmUgY29u
c3QgSlNWYWx1ZSBhc1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KLSAgICAgICAgZG91
YmxlIHRvTnVtYmVyU2xvd0Nhc2UoRXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgICAgIEpTT2JqZWN0
KiB0b09iamVjdFNsb3dDYXNlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7Ci0g
ICAgICAgIEpTT2JqZWN0KiB0b1RoaXNPYmplY3RTbG93Q2FzZShFeGVjU3RhdGUqKSBjb25zdDsK
KyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgZG91YmxlIHRvTnVtYmVyU2xvd0Nhc2UoRXhlY1N0
YXRlKikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0b09iamVj
dFNsb3dDYXNlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CisgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0b1RoaXNPYmplY3RTbG93Q2FzZShFeGVjU3RhdGUq
KSBjb25zdDsKIAotICAgICAgICBKU09iamVjdCogc3ludGhlc2l6ZVByb3RvdHlwZShFeGVjU3Rh
dGUqKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHN5bnRoZXNp
emVQcm90b3R5cGUoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIEpTT2JqZWN0KiBzeW50aGVz
aXplT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0OwogCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3Qu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAppbmRl
eCBlNDlmYjcxZGYyZWNiOWRmNzk2YjJlN2I4ZGVkOWU3Njg0YWFkODMwLi5jMGY5OGM5ZDBkZmRi
Y2QyMDM3ODZiNzQzYjNhMDRjNjVlZTRmM2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCkBAIC00MCwxMyArNDAsMTMgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICBjbGFzcyBSZWdpc3RlcjsKIAotICAgIGNsYXNzIEpTVmFyaWFibGVP
YmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CisgICAgY2xhc3MgSlNfRVhQT1JUX1BS
SVZBVEUgSlNWYXJpYWJsZU9iamVjdCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICAg
ICAgZnJpZW5kIGNsYXNzIEpJVDsKIAogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBKU05v
bkZpbmFsT2JqZWN0IEJhc2U7CiAKLSAgICAgICAgU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlKCkg
Y29uc3QgeyByZXR1cm4gKm1fc3ltYm9sVGFibGU7IH0KKyAgICAgICAgSlNfSU5MSU5FIFN5bWJv
bFRhYmxlJiBzeW1ib2xUYWJsZSgpIGNvbnN0IHsgcmV0dXJuICptX3N5bWJvbFRhYmxlOyB9CiAK
ICAgICAgICAgdmlydHVhbCB+SlNWYXJpYWJsZU9iamVjdCgpOwogCkBAIC01NywxMiArNTcsMTIg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBib29sIGlzRHluYW1pY1Njb3Bl
KGJvb2wmIHJlcXVpcmVzRHluYW1pY0NoZWNrcykgY29uc3Q7CiAKLSAgICAgICAgV3JpdGVCYXJy
aWVyPFVua25vd24+JiByZWdpc3RlckF0KGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9yZWdp
c3RlcnNbaW5kZXhdOyB9CisgICAgICAgIEpTX0lOTElORSBXcml0ZUJhcnJpZXI8VW5rbm93bj4m
IHJlZ2lzdGVyQXQoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdGVyc1tpbmRleF07
IH0KIAotICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIGNvbnN0ICogYWRkcmVzc09mUmVn
aXN0ZXJzKCkgY29uc3QgeyByZXR1cm4gJm1fcmVnaXN0ZXJzOyB9Ci0gICAgICAgIHN0YXRpYyBz
aXplX3Qgb2Zmc2V0T2ZSZWdpc3RlcnMoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNWYXJp
YWJsZU9iamVjdCwgbV9yZWdpc3RlcnMpOyB9CisgICAgICAgIEpTX0lOTElORSBXcml0ZUJhcnJp
ZXI8VW5rbm93bj4qIGNvbnN0ICogYWRkcmVzc09mUmVnaXN0ZXJzKCkgY29uc3QgeyByZXR1cm4g
Jm1fcmVnaXN0ZXJzOyB9CisgICAgICAgIEpTX0lOTElORSBzdGF0aWMgc2l6ZV90IG9mZnNldE9m
UmVnaXN0ZXJzKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTVmFyaWFibGVPYmplY3QsIG1f
cmVnaXN0ZXJzKTsgfQogCi0gICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgcHJvdG90eXBlKQorICAgICAgICBKU19JTkxJTkUgc3RhdGljIFN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKICAgICAgICAgICAg
IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3Rv
dHlwZSwgVHlwZUluZm8oVmFyaWFibGVPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksICZzX2lu
Zm8pOwogICAgICAgICB9CkBAIC03MCwzNSArNzAsMzUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
cHJvdGVjdGVkOgogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNOb25GaW5hbE9iamVjdDo6U3RydWN0dXJl
RmxhZ3M7CiAKLSAgICAgICAgSlNWYXJpYWJsZU9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUsIFJlZ2lz
dGVyKiByZWdpc3RlcnMpCisgICAgICAgIEpTX0lOTElORSBKU1ZhcmlhYmxlT2JqZWN0KEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN5bWJvbFRhYmxlKiBz
eW1ib2xUYWJsZSwgUmVnaXN0ZXIqIHJlZ2lzdGVycykKICAgICAgICAgICAgIDogSlNOb25GaW5h
bE9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpCiAgICAgICAgICAgICAsIG1fc3ltYm9sVGFi
bGUoc3ltYm9sVGFibGUpCiAgICAgICAgICAgICAsIG1fcmVnaXN0ZXJzKHJlaW50ZXJwcmV0X2Nh
c3Q8V3JpdGVCYXJyaWVyPFVua25vd24+Kj4ocmVnaXN0ZXJzKSkKICAgICAgICAgewogICAgICAg
ICB9CiAKLSAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEpCisgICAgICAgIEpTX0lOTElORSB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSkKICAgICAgICAgewogICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
Z2xvYmFsRGF0YSk7CiAgICAgICAgICAgICBBU1NFUlQobV9zeW1ib2xUYWJsZSk7CiAgICAgICAg
ICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSA9PSBzaXpl
b2YoUmVnaXN0ZXIpLCBSZWdpc3Rlcl9zaG91bGRfYmVfc2FtZV9zaXplX2FzX1dyaXRlQmFycmll
cik7CiAgICAgICAgIH0KIAotICAgICAgICBQYXNzT3duQXJyYXlQdHI8V3JpdGVCYXJyaWVyPFVu
a25vd24+ID4gY29weVJlZ2lzdGVyQXJyYXkoSlNHbG9iYWxEYXRhJiwgV3JpdGVCYXJyaWVyPFVu
a25vd24+KiBzcmMsIHNpemVfdCBjb3VudCwgc2l6ZV90IGNhbGxmcmFtZVN0YXJ0cyk7Ci0gICAg
ICAgIHZvaWQgc2V0UmVnaXN0ZXJzKFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJzLCBQ
YXNzT3duQXJyYXlQdHI8V3JpdGVCYXJyaWVyPFVua25vd24+ID4gcmVnaXN0ZXJBcnJheSk7Cisg
ICAgICAgIEpTX0lOTElORSBQYXNzT3duQXJyYXlQdHI8V3JpdGVCYXJyaWVyPFVua25vd24+ID4g
Y29weVJlZ2lzdGVyQXJyYXkoSlNHbG9iYWxEYXRhJiwgV3JpdGVCYXJyaWVyPFVua25vd24+KiBz
cmMsIHNpemVfdCBjb3VudCwgc2l6ZV90IGNhbGxmcmFtZVN0YXJ0cyk7CisgICAgICAgIEpTX0lO
TElORSB2b2lkIHNldFJlZ2lzdGVycyhXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHJlZ2lzdGVycywg
UGFzc093bkFycmF5UHRyPFdyaXRlQmFycmllcjxVbmtub3duPiA+IHJlZ2lzdGVyQXJyYXkpOwog
Ci0gICAgICAgIGJvb2wgc3ltYm9sVGFibGVHZXQoY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5
U2xvdCYpOworICAgICAgICBKU19JTkxJTkUgYm9vbCBzeW1ib2xUYWJsZUdldChjb25zdCBJZGVu
dGlmaWVyJiwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIGJvb2wgc3ltYm9sVGFibGVHZXQoY29u
c3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwotICAgICAgICBib29sIHN5bWJv
bFRhYmxlR2V0KGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmLCBib29sJiBzbG90SXNX
cml0ZWFibGUpOwotICAgICAgICBib29sIHN5bWJvbFRhYmxlUHV0KEpTR2xvYmFsRGF0YSYsIGNv
bnN0IElkZW50aWZpZXImLCBKU1ZhbHVlKTsKLSAgICAgICAgYm9vbCBzeW1ib2xUYWJsZVB1dFdp
dGhBdHRyaWJ1dGVzKEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgSlNfSU5MSU5FIGJvb2wgc3ltYm9sVGFibGVH
ZXQoY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYsIGJvb2wmIHNsb3RJc1dyaXRlYWJs
ZSk7CisgICAgICAgIEpTX0lOTElORSBib29sIHN5bWJvbFRhYmxlUHV0KEpTR2xvYmFsRGF0YSYs
IGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlKTsKKyAgICAgICAgSlNfSU5MSU5FIGJvb2wgc3lt
Ym9sVGFibGVQdXRXaXRoQXR0cmlidXRlcyhKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVy
JiwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAKICAgICAgICAgU3ltYm9sVGFibGUq
IG1fc3ltYm9sVGFibGU7IC8vIE1hcHMgbmFtZSAtPiBvZmZzZXQgZnJvbSAiciIgaW4gcmVnaXN0
ZXIgZmlsZS4KICAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiBtX3JlZ2lzdGVyczsgLy8g
InIiIGluIHRoZSByZWdpc3RlciBmaWxlLgogICAgICAgICBPd25BcnJheVB0cjxXcml0ZUJhcnJp
ZXI8VW5rbm93bj4gPiBtX3JlZ2lzdGVyQXJyYXk7IC8vIEluZGVwZW5kZW50IGNvcHkgb2YgcmVn
aXN0ZXJzLCB1c2VkIHdoZW4gYSB2YXJpYWJsZSBvYmplY3QgY29waWVzIGl0cyByZWdpc3RlcnMg
b3V0IG9mIHRoZSByZWdpc3RlciBmaWxlLgogICAgIH07CiAKLSAgICBpbmxpbmUgYm9vbCBKU1Zh
cmlhYmxlT2JqZWN0OjpzeW1ib2xUYWJsZUdldChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKKyAgICAgSlNfSU5MSU5FIGJvb2wgSlNWYXJpYWJsZU9i
amVjdDo6c3ltYm9sVGFibGVHZXQoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpCiAgICAgewogICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0g
c3ltYm9sVGFibGUoKS5pbmxpbmVHZXQocHJvcGVydHlOYW1lLmltcGwoKSk7CiAgICAgICAgIGlm
ICghZW50cnkuaXNOdWxsKCkpIHsKQEAgLTEwOCw3ICsxMDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlubGluZSBib29sIEpTVmFyaWFi
bGVPYmplY3Q6OnN5bWJvbFRhYmxlR2V0KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90JiBzbG90LCBib29sJiBzbG90SXNXcml0ZWFibGUpCisgICAgIEpTX0lOTElO
RSBib29sIEpTVmFyaWFibGVPYmplY3Q6OnN5bWJvbFRhYmxlR2V0KGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90LCBib29sJiBzbG90SXNXcml0ZWFibGUp
CiAgICAgewogICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUoKS5p
bmxpbmVHZXQocHJvcGVydHlOYW1lLmltcGwoKSk7CiAgICAgICAgIGlmICghZW50cnkuaXNOdWxs
KCkpIHsKQEAgLTExOSw3ICsxMTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAotICAgIGlubGluZSBib29sIEpTVmFyaWFibGVPYmplY3Q6OnN5bWJv
bFRhYmxlUHV0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKQorICAgICBKU19JTkxJTkUgYm9vbCBKU1ZhcmlhYmxl
T2JqZWN0OjpzeW1ib2xUYWJsZVB1dChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIEFT
U0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVh
cCh0aGlzKSk7CiAKQEAgLTEzMiw3ICsxMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgaW5saW5lIGJvb2wgSlNWYXJpYWJsZU9iamVjdDo6
c3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlcyhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0
cmlidXRlcykKKyAgICAgSlNfSU5MSU5FIGJvb2wgSlNWYXJpYWJsZU9iamVjdDo6c3ltYm9sVGFi
bGVQdXRXaXRoQXR0cmlidXRlcyhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykK
ICAgICB7CiAgICAgICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2
YWx1ZSkgPT0gSGVhcDo6aGVhcCh0aGlzKSk7CiAKQEAgLTE0Niw3ICsxNDYsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgaW5saW5lIFBhc3NP
d25BcnJheVB0cjxXcml0ZUJhcnJpZXI8VW5rbm93bj4gPiBKU1ZhcmlhYmxlT2JqZWN0Ojpjb3B5
UmVnaXN0ZXJBcnJheShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFdyaXRlQmFycmllcjxVbmtu
b3duPiogc3JjLCBzaXplX3QgY291bnQsIHNpemVfdCBjYWxsZnJhbWVTdGFydHMpCisgICAgIEpT
X0lOTElORSBQYXNzT3duQXJyYXlQdHI8V3JpdGVCYXJyaWVyPFVua25vd24+ID4gSlNWYXJpYWJs
ZU9iamVjdDo6Y29weVJlZ2lzdGVyQXJyYXkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBXcml0
ZUJhcnJpZXI8VW5rbm93bj4qIHNyYywgc2l6ZV90IGNvdW50LCBzaXplX3QgY2FsbGZyYW1lU3Rh
cnRzKQogICAgIHsKICAgICAgICAgT3duQXJyYXlQdHI8V3JpdGVCYXJyaWVyPFVua25vd24+ID4g
cmVnaXN0ZXJBcnJheSA9IGFkb3B0QXJyYXlQdHIobmV3IFdyaXRlQmFycmllcjxVbmtub3duPltj
b3VudF0pOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNhbGxmcmFtZVN0YXJ0czsg
aSsrKQpAQCAtMTU3LDcgKzE1Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4g
cmVnaXN0ZXJBcnJheS5yZWxlYXNlKCk7CiAgICAgfQogCi0gICAgaW5saW5lIHZvaWQgSlNWYXJp
YWJsZU9iamVjdDo6c2V0UmVnaXN0ZXJzKFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJz
LCBQYXNzT3duQXJyYXlQdHI8V3JpdGVCYXJyaWVyPFVua25vd24+ID4gcmVnaXN0ZXJBcnJheSkK
KyAgICAgSlNfSU5MSU5FIHZvaWQgSlNWYXJpYWJsZU9iamVjdDo6c2V0UmVnaXN0ZXJzKFdyaXRl
QmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJzLCBQYXNzT3duQXJyYXlQdHI8V3JpdGVCYXJyaWVy
PFVua25vd24+ID4gcmVnaXN0ZXJBcnJheSkKICAgICB7CiAgICAgICAgIEFTU0VSVChyZWdpc3Rl
ckFycmF5ICE9IG1fcmVnaXN0ZXJBcnJheSk7CiAgICAgICAgIG1fcmVnaXN0ZXJBcnJheSA9IHJl
Z2lzdGVyQXJyYXk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1dyYXBwZXJPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBl
ck9iamVjdC5oCmluZGV4IDczNzEzYzBiMzRjNjQyNDJhODRmMmFlZGQxN2Q1MTU1OTZhMTBlNDYu
LmJhNjBhODNmNTU4M2UwODEyNWI5ZmNiNTZmNmE0MTA2MTYzNjFiZGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5oCkBAIC0yOCwyMCArMjgs
MjAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAvLyBUaGlzIGNsYXNzIGlzIHVzZWQgYXMgYSBi
YXNlIGZvciBjbGFzc2VzIHN1Y2ggYXMgU3RyaW5nLAogICAgIC8vIE51bWJlciwgQm9vbGVhbiBh
bmQgRGF0ZSB3aGljaCBhcmUgd3JhcHBlcnMgZm9yIHByaW1pdGl2ZSB0eXBlcy4KLSAgICBjbGFz
cyBKU1dyYXBwZXJPYmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CisgICAgY2xhc3Mg
SlNfRVhQT1JUX1BSSVZBVEUgSlNXcmFwcGVyT2JqZWN0IDogcHVibGljIEpTTm9uRmluYWxPYmpl
Y3QgewogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7
CiAKLSAgICAgICAgSlNWYWx1ZSBpbnRlcm5hbFZhbHVlKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQg
c2V0SW50ZXJuYWxWYWx1ZShKU0dsb2JhbERhdGEmLCBKU1ZhbHVlKTsKKyAgICAgICAgSlNfSU5M
SU5FIEpTVmFsdWUgaW50ZXJuYWxWYWx1ZSgpIGNvbnN0OworICAgICAgICBKU19JTkxJTkUgdm9p
ZCBzZXRJbnRlcm5hbFZhbHVlKEpTR2xvYmFsRGF0YSYsIEpTVmFsdWUpOwogCi0gICAgICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKSAKKyAgICAg
ICAgSlNfSU5MSU5FIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJv
dG90eXBlKSAKICAgICAgICAgeyAKICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0
ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCAmc19pbmZvKTsKICAgICAgICAgfQogCiAgICAgcHJvdGVjdGVk
OgotICAgICAgICBleHBsaWNpdCBKU1dyYXBwZXJPYmplY3QoSlNHbG9iYWxEYXRhJiwgU3RydWN0
dXJlKik7CisgICAgICAgIEpTX0lOTElORSBleHBsaWNpdCBKU1dyYXBwZXJPYmplY3QoSlNHbG9i
YWxEYXRhJiwgU3RydWN0dXJlKik7CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBKU05vbkZpbmFsT2JqZWN0OjpT
dHJ1Y3R1cmVGbGFnczsKIAogICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2Vs
bCosIFNsb3RWaXNpdG9yJik7CkBAIC01MiwxNyArNTIsMTcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiBtX2ludGVybmFsVmFsdWU7CiAgICAgfTsKIAot
ICAgIGlubGluZSBKU1dyYXBwZXJPYmplY3Q6OkpTV3JhcHBlck9iamVjdChKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICBKU19JTkxJTkUgSlNXcmFw
cGVyT2JqZWN0OjpKU1dyYXBwZXJPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgOiBKU05vbkZpbmFsT2JqZWN0KGdsb2JhbERhdGEs
IHN0cnVjdHVyZSkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEpTVmFsdWUgSlNXcmFwcGVy
T2JqZWN0OjppbnRlcm5hbFZhbHVlKCkgY29uc3QKKyAgICAgSlNfSU5MSU5FIEpTVmFsdWUgSlNX
cmFwcGVyT2JqZWN0OjppbnRlcm5hbFZhbHVlKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVy
biBtX2ludGVybmFsVmFsdWUuZ2V0KCk7CiAgICAgfQogCi0gICAgaW5saW5lIHZvaWQgSlNXcmFw
cGVyT2JqZWN0OjpzZXRJbnRlcm5hbFZhbHVlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNW
YWx1ZSB2YWx1ZSkKKyAgICAgSlNfSU5MSU5FIHZvaWQgSlNXcmFwcGVyT2JqZWN0OjpzZXRJbnRl
cm5hbFZhbHVlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSB2YWx1ZSkKICAgICB7
CiAgICAgICAgIEFTU0VSVCh2YWx1ZSk7CiAgICAgICAgIEFTU0VSVCghdmFsdWUuaXNPYmplY3Qo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCmluZGV4IDE3MTJiMGQ0NDll
NmQyZDEwN2ZlYjYxZTRkNTY2ZmNiYjAzZjVhOWUuLmMzNzI4YmVhYTVlOWY1Zjk2OWFjNDQ1NWMx
MDhkNjMyOWY3NzdlMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0xvb2t1cC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCkBA
IC0xNTQsNyArMTU0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgY3JlYXRl
VGFibGUoJmV4ZWMtPmdsb2JhbERhdGEoKSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGRl
bGV0ZVRhYmxlKCkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZGVsZXRl
VGFibGUoKSBjb25zdDsKIAogICAgICAgICAvLyBGaW5kIGFuIGVudHJ5IGluIHRoZSB0YWJsZSwg
YW5kIHJldHVybiB0aGUgZW50cnkuCiAgICAgICAgIEFMV0FZU19JTkxJTkUgY29uc3QgSGFzaEVu
dHJ5KiBlbnRyeShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50aWZpZXIpIGNvbnN0CkBAIC0yNDYsMTAgKzI0NiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgfQogCiAgICAgICAgIC8vIENvbnZlcnQgdGhlIGhhc2ggdGFibGUga2V5cyB0byBpZGVu
dGlmaWVycy4KLSAgICAgICAgdm9pZCBjcmVhdGVUYWJsZShKU0dsb2JhbERhdGEqKSBjb25zdDsK
KyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBjcmVhdGVUYWJsZShKU0dsb2JhbERhdGEq
KSBjb25zdDsKICAgICB9OwogCi0gICAgYm9vbCBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChFeGVj
U3RhdGUqLCBjb25zdCBIYXNoRW50cnkqLCBKU09iamVjdCogdGhpc09iamVjdCwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSBib29sIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSosIGNvbnN0IEhhc2hF
bnRyeSosIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYpOwogCiAgICAgLyoqCiAgICAgICogVGhpcyBtZXRob2QgZG9lcyBp
dCBhbGwgKGxvb2tpbmcgaW4gdGhlIGhhc2h0YWJsZSwgY2hlY2tpbmcgZm9yIGZ1bmN0aW9uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NZW1vcnlTdGF0aXN0aWNz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NZW1vcnlTdGF0aXN0aWNzLmgKaW5k
ZXggZDRiOGI2ZmMxMDE4YWMwNmE4NDU3MmU2MjljZWZjZWIzYTYwYzRlYi4uOWE4NmRmMjk2ODU4
MjJkYTk1YjU4NGJmN2ViNzQ4YWFhMjE0NGQyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTWVtb3J5U3RhdGlzdGljcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL01lbW9yeVN0YXRpc3RpY3MuaApAQCAtMzcsNyArMzcsNyBAQCBzdHJ1Y3Qg
R2xvYmFsTWVtb3J5U3RhdGlzdGljcyB7CiAgICAgc2l6ZV90IEpJVEJ5dGVzOwogfTsKIAotR2xv
YmFsTWVtb3J5U3RhdGlzdGljcyBnbG9iYWxNZW1vcnlTdGF0aXN0aWNzKCk7CitKU19FWFBPUlRf
UFJJVkFURSBHbG9iYWxNZW1vcnlTdGF0aXN0aWNzIGdsb2JhbE1lbW9yeVN0YXRpc3RpY3MoKTsK
IAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQ
cm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlw
ZS5oCmluZGV4IGI2MDVhNDc3ODBmZGRiNDdlN2JmMDk2MmU2ZDY0ZDA5ZjE4ZTJkNTMuLjU1NGQ2
NTFhYjY3ZmE5Mzk3NzFjNmU5OWEwYTJlYjM2ODJmNWVjMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5oCkBAIC01OSw3ICs1OSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBib29sIG1faGFzTm9Qcm9wZXJ0aWVzV2l0aFVJbnQzMk5h
bWVzOwogICAgIH07CiAKLSAgICBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFBy
b3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRl
Kik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oCmluZGV4IGZmOWYxNjA4Yjg5Yjc0ZWQ0Mjhi
YjUxMWZkOGE5YmRlNTM1ZGEwZjcuLmNmMzAxMjBkYzkzYjRiYjRmN2NmYWJmY2IyNzc5YWFlZmE0
ZGEyNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5
RGVzY3JpcHRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5
RGVzY3JpcHRvci5oCkBAIC0zNiwyNSArMzYsMjUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICAsIG1fc2VlbkF0dHJpYnV0ZXMoMCkKICAgICAgICAgewogICAgICAgICB9Ci0gICAgICAg
IGJvb2wgd3JpdGFibGUoKSBjb25zdDsKLSAgICAgICAgYm9vbCBlbnVtZXJhYmxlKCkgY29uc3Q7
Ci0gICAgICAgIGJvb2wgY29uZmlndXJhYmxlKCkgY29uc3Q7Ci0gICAgICAgIGJvb2wgaXNEYXRh
RGVzY3JpcHRvcigpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHdyaXRh
YmxlKCkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgZW51bWVyYWJsZSgp
IGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGNvbmZpZ3VyYWJsZSgpIGNv
bnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzRGF0YURlc2NyaXB0b3IoKSBj
b25zdDsKICAgICAgICAgYm9vbCBpc0dlbmVyaWNEZXNjcmlwdG9yKCkgY29uc3Q7Ci0gICAgICAg
IGJvb2wgaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgYm9vbCBpc0FjY2Vzc29yRGVzY3JpcHRvcigpIGNvbnN0OwogICAgICAgICB1bnNpZ25l
ZCBhdHRyaWJ1dGVzKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVzOyB9CiAgICAgICAgIEpT
VmFsdWUgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9Ci0gICAgICAgIEpTVmFsdWUg
Z2V0dGVyKCkgY29uc3Q7Ci0gICAgICAgIEpTVmFsdWUgc2V0dGVyKCkgY29uc3Q7Ci0gICAgICAg
IHZvaWQgc2V0VW5kZWZpbmVkKCk7Ci0gICAgICAgIHZvaWQgc2V0RGVzY3JpcHRvcihKU1ZhbHVl
IHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKLSAgICAgICAgdm9pZCBzZXRBY2Nlc3NvckRl
c2NyaXB0b3IoSlNWYWx1ZSBnZXR0ZXIsIEpTVmFsdWUgc2V0dGVyLCB1bnNpZ25lZCBhdHRyaWJ1
dGVzKTsKLSAgICAgICAgdm9pZCBzZXRXcml0YWJsZShib29sKTsKLSAgICAgICAgdm9pZCBzZXRF
bnVtZXJhYmxlKGJvb2wpOwotICAgICAgICB2b2lkIHNldENvbmZpZ3VyYWJsZShib29sKTsKKyAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBnZXR0ZXIoKSBjb25zdDsKKyAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBzZXR0ZXIoKSBjb25zdDsKKyAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBzZXRVbmRlZmluZWQoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgdm9pZCBzZXREZXNjcmlwdG9yKEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMp
OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldEFjY2Vzc29yRGVzY3JpcHRvcihK
U1ZhbHVlIGdldHRlciwgSlNWYWx1ZSBzZXR0ZXIsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldFdyaXRhYmxlKGJvb2wpOworICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSB2b2lkIHNldEVudW1lcmFibGUoYm9vbCk7CisgICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIHZvaWQgc2V0Q29uZmlndXJhYmxlKGJvb2wpOwogICAgICAgICB2b2lkIHNl
dFZhbHVlKEpTVmFsdWUgdmFsdWUpIHsgbV92YWx1ZSA9IHZhbHVlOyB9Ci0gICAgICAgIHZvaWQg
c2V0U2V0dGVyKEpTVmFsdWUpOwotICAgICAgICB2b2lkIHNldEdldHRlcihKU1ZhbHVlKTsKKyAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRTZXR0ZXIoSlNWYWx1ZSk7CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0R2V0dGVyKEpTVmFsdWUpOwogICAgICAgICBib29s
IGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhKG1fdmFsdWUgfHwgbV9nZXR0ZXIgfHwgbV9zZXR0
ZXIgfHwgbV9zZWVuQXR0cmlidXRlcyk7IH0KICAgICAgICAgYm9vbCB3cml0YWJsZVByZXNlbnQo
KSBjb25zdCB7IHJldHVybiBtX3NlZW5BdHRyaWJ1dGVzICYgV3JpdGFibGVQcmVzZW50OyB9CiAg
ICAgICAgIGJvb2wgZW51bWVyYWJsZVByZXNlbnQoKSBjb25zdCB7IHJldHVybiBtX3NlZW5BdHRy
aWJ1dGVzICYgRW51bWVyYWJsZVByZXNlbnQ7IH0KQEAgLTY1LDcgKzY1LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIGJvb2wgYXR0cmlidXRlc0VxdWFsKGNvbnN0IFByb3BlcnR5RGVzY3Jp
cHRvciYgb3RoZXIpIGNvbnN0OwogICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzV2l0aE92ZXJy
aWRlKGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgb3RoZXIpIGNvbnN0OwogICAgIHByaXZhdGU6
Ci0gICAgICAgIHN0YXRpYyB1bnNpZ25lZCBkZWZhdWx0QXR0cmlidXRlczsKKyAgICAgICAgSlNf
RVhQT1JUREFUQSBzdGF0aWMgdW5zaWduZWQgZGVmYXVsdEF0dHJpYnV0ZXM7CiAgICAgICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImKXsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgICAgIGVudW0geyBXcml0YWJsZVByZXNlbnQgPSAxLCBFbnVtZXJhYmxlUHJlc2VudCA9
IDIsIENvbmZpZ3VyYWJsZVByZXNlbnQgPSA0fTsKICAgICAgICAgLy8gTWF5IGJlIGEgZ2V0dGVy
L3NldHRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVy
dHlOYW1lQXJyYXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFt
ZUFycmF5LmgKaW5kZXggMGRhOTMwZjE3M2YxM2Y0YTNlMWI4YzA0ZDY2NmE4YzA0MWE3MWFkNS4u
ZGFiZGE5NDViMTk2NWEzYmYzY2I0NTlmYmQ2NzNhMjg4NGM3MzQxMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oCkBAIC02OSw3ICs2
OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEo
KSB7IHJldHVybiBtX2dsb2JhbERhdGE7IH0KIAogICAgICAgICB2b2lkIGFkZChjb25zdCBJZGVu
dGlmaWVyJiBpZGVudGlmaWVyKSB7IGFkZChpZGVudGlmaWVyLmltcGwoKSk7IH0KLSAgICAgICAg
dm9pZCBhZGQoU3RyaW5nSW1wbCopOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGFk
ZChTdHJpbmdJbXBsKik7CiAgICAgICAgIHZvaWQgYWRkS25vd25VbmlxdWUoU3RyaW5nSW1wbCog
aWRlbnRpZmllcikgeyBtX2RhdGEtPnByb3BlcnR5TmFtZVZlY3RvcigpLmFwcGVuZChJZGVudGlm
aWVyKG1fZ2xvYmFsRGF0YSwgaWRlbnRpZmllcikpOyB9CiAKICAgICAgICAgSWRlbnRpZmllciYg
b3BlcmF0b3JbXSh1bnNpZ25lZCBpKSB7IHJldHVybiBtX2RhdGEtPnByb3BlcnR5TmFtZVZlY3Rv
cigpW2ldOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9w
ZXJ0eVNsb3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5o
CmluZGV4IDg1NTdlNmQyNDc2ZWEwNjlmZDUwN2JlMjE2ZmRhM2M2OTk5Yjg4NGUuLmNmZWRmNzg3
NmZiNjM2NTQ0YmQ5ZThmZjQ3MTdhNDI4MzAwYzY4OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCkBAIC0yMTgsNyArMjE4LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gbV9nZXRWYWx1ZTsKICAgICAgICAgfQogICAgIHBy
aXZhdGU6Ci0gICAgICAgIEpTVmFsdWUgZnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKikgY29uc3Q7
CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgZnVuY3Rpb25HZXR0ZXIoRXhlY1N0
YXRlKikgY29uc3Q7CiAKICAgICAgICAgR2V0VmFsdWVGdW5jIG1fZ2V0VmFsdWU7CiAgICAgICAg
IEdldEluZGV4VmFsdWVGdW5jIG1fZ2V0SW5kZXhWYWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwLmgKaW5kZXggYWEzYTYxZjQ2ZjljMWEzNGY3MzExNmE4YWY0MWZjZTRjMDQ2
NDA2ZS4uYzE4YWQ0YzkwOTk5YWVlYTQwNzE3ZTU2NDUzYzdmZTI2YjhkNjI0ZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgKQEAgLTM1LDE0ICszNSwxNCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICBzdHJ1Y3QgUmVnRXhwUmVwcmVzZW50YXRpb247CiAgICAgY2xhc3MgSlNH
bG9iYWxEYXRhOwogCi0gICAgUmVnRXhwRmxhZ3MgcmVnRXhwRmxhZ3MoY29uc3QgVVN0cmluZyYp
OworICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZ0V4cEZsYWdzIHJlZ0V4cEZsYWdzKGNvbnN0IFVT
dHJpbmcmKTsKIAogICAgIGNsYXNzIFJlZ0V4cCA6IHB1YmxpYyBKU0NlbGwgewogICAgIHB1Ymxp
YzoKICAgICAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKIAotICAgICAgICBzdGF0aWMgUmVnRXhw
KiBjcmVhdGUoSlNHbG9iYWxEYXRhJiwgY29uc3QgVVN0cmluZyYgcGF0dGVybiwgUmVnRXhwRmxh
Z3MpOwotICAgICAgICB+UmVnRXhwKCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBSZWdFeHAqIGNyZWF0ZShKU0dsb2JhbERhdGEmLCBjb25zdCBVU3RyaW5nJiBwYXR0ZXJuLCBS
ZWdFeHBGbGFncyk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIH5SZWdFeHAoKTsKIAogICAg
ICAgICBib29sIGdsb2JhbCgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBGbGFnR2xvYmFsOyB9
CiAgICAgICAgIGJvb2wgaWdub3JlQ2FzZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBGbGFn
SWdub3JlQ2FzZTsgfQpAQCAtNTMsNyArNTMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
Ym9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gIW1fY29uc3RydWN0aW9uRXJyb3IgJiYgbV9m
bGFncyAhPSBJbnZhbGlkRmxhZ3M7IH0KICAgICAgICAgY29uc3QgY2hhciogZXJyb3JNZXNzYWdl
KCkgY29uc3QgeyByZXR1cm4gbV9jb25zdHJ1Y3Rpb25FcnJvcjsgfQogCi0gICAgICAgIGludCBt
YXRjaChKU0dsb2JhbERhdGEmLCBjb25zdCBVU3RyaW5nJiwgaW50IHN0YXJ0T2Zmc2V0LCBWZWN0
b3I8aW50LCAzMj4qIG92ZWN0b3IgPSAwKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgaW50
IG1hdGNoKEpTR2xvYmFsRGF0YSYsIGNvbnN0IFVTdHJpbmcmLCBpbnQgc3RhcnRPZmZzZXQsIFZl
Y3RvcjxpbnQsIDMyPiogb3ZlY3RvciA9IDApOwogICAgICAgICB1bnNpZ25lZCBudW1TdWJwYXR0
ZXJucygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtU3VicGF0dGVybnM7IH0KIAogICAgICAgICBib29s
IGhhc0NvZGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3Qu
aAppbmRleCBhMTE3ZjM2MmMzZTMzYTg3OTEzMmE2Y2EyMmIxYmVmODVkYWM3ZjU5Li5lYmU2NGMy
YTRhNDg1NWRhZjZjYWRkNjFiOTRlNThlODg2YjVlZmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaApAQCAtNzcsOCArNzcsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgfQogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICBSZWdFeHBPYmplY3Qo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWdFeHAqKTsKLSAgICAgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihKU0dsb2JhbE9iamVjdCopOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBS
ZWdFeHBPYmplY3QoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWdFeHAqKTsKKyAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbE9iamVjdCop
OwogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlk
ZXNWaXNpdENoaWxkcmVuIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgQmFzZTo6U3Ry
dWN0dXJlRmxhZ3M7CiAKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwq
LCBTbG90VmlzaXRvciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2FtcGxpbmdDb3VudGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1w
bGluZ0NvdW50ZXIuaAppbmRleCA2NjRiMDI4MGVlYTUxODc5M2E1ZDhkNzU1YmM3ZDFmYTZiNTAy
NjdlLi4zMjlhNWNmZDMzZGI2YTkwNWNlOWYyNjAzNjU2YTMxZDI1ZTViNTcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ0NvdW50ZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ0NvdW50ZXIuaApAQCAtNDYsNyAr
NDYsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fY291bnRlciArPSBjb3VudDsKICAgICB9CiAKLSAg
ICBzdGF0aWMgdm9pZCBkdW1wKCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQg
ZHVtcCgpOwogCiAgICAgaW50NjRfdCogYWRkcmVzc09mQ291bnRlcigpIHsgcmV0dXJuICZtX2Nv
dW50ZXI7IH0KIApAQCAtNzQsNyArNzQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgQWJzdHJhY3RTYW1w
bGluZ0NvdW50ZXIqKiBtX3JlZmVyZXI7CiAgICAgLy8gTnVsbCBvYmplY3QgdXNlZCB0byBkZXRl
Y3QgZW5kIG9mIHN0YXRpYyBjaGFpbi4KICAgICBzdGF0aWMgQWJzdHJhY3RTYW1wbGluZ0NvdW50
ZXIgc19hYnN0cmFjdFNhbXBsaW5nQ291bnRlckNoYWluRW5kOwotICAgIHN0YXRpYyBBYnN0cmFj
dFNhbXBsaW5nQ291bnRlciogc19hYnN0cmFjdFNhbXBsaW5nQ291bnRlckNoYWluOworICAgIEpT
X0VYUE9SVERBVEEgc3RhdGljIEFic3RyYWN0U2FtcGxpbmdDb3VudGVyKiBzX2Fic3RyYWN0U2Ft
cGxpbmdDb3VudGVyQ2hhaW47CiAgICAgc3RhdGljIGJvb2wgc19jb21wbGV0ZWQ7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgKaW5kZXggNDgzODVkMGNi
ZTFhNDg4YWU3OWNhYTZhYTMxNTgxZDc0NjAwYzY4Zi4uNzQ1MTRjOTdiYzhkNjAxMGI5YjE1YWQ2
OWU5ODAwNzRkYTA5NzU1NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2NvcGVDaGFpbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3Bl
Q2hhaW4uaApAQCAtMzMsOSArMzMsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBTY29w
ZUNoYWluSXRlcmF0b3I7CiAgICAgY2xhc3MgU2xvdFZpc2l0b3I7CiAgICAgCi0gICAgY2xhc3Mg
U2NvcGVDaGFpbk5vZGUgOiBwdWJsaWMgSlNDZWxsIHsKKyAgICBjbGFzcyBKU19FWFBPUlRfUFJJ
VkFURSBTY29wZUNoYWluTm9kZSA6IHB1YmxpYyBKU0NlbGwgewogICAgIHByaXZhdGU6Ci0gICAg
ICAgIFNjb3BlQ2hhaW5Ob2RlKFNjb3BlQ2hhaW5Ob2RlKiBuZXh0LCBKU09iamVjdCogb2JqZWN0
LCBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTT2JqZWN0KiBnbG9iYWxUaGlzKQorICAgICAgICBKU19JTkxJTkUgU2NvcGVDaGFpbk5vZGUo
U2NvcGVDaGFpbk5vZGUqIG5leHQsIEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGdsb2JhbFRo
aXMpCiAgICAgICAgICAgICA6IEpTQ2VsbCgqZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS0+c2NvcGVD
aGFpbk5vZGVTdHJ1Y3R1cmUuZ2V0KCkpCiAgICAgICAgICAgICAsIGdsb2JhbERhdGEoZ2xvYmFs
RGF0YSkKICAgICAgICAgICAgICwgbmV4dCgqZ2xvYmFsRGF0YSwgdGhpcywgbmV4dCwgV3JpdGVC
YXJyaWVyPFNjb3BlQ2hhaW5Ob2RlPjo6TWF5QmVOdWxsKQpAQCAtNDgsNyArNDgsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVhbCB+U2NvcGVDaGFpbk5vZGUoKTsKIAogICAgIHBy
b3RlY3RlZDoKLSAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgICAgIEpTX0lOTElORSB2
b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKICAgICAgICAgewogICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24oKmdsb2JhbERhdGEpOwogICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChnbG9iYWxPYmpl
Y3QsIGdsb2JhbE9iamVjdCk7CkBAIC01NywxMyArNTcsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwogCi0gICAgICAgIHN0YXRp
YyBTY29wZUNoYWluTm9kZSogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUq
IG5leHQsIEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGdsb2JhbFRoaXMpCisgICAgICAgIEpT
X0lOTElORSBzdGF0aWMgU2NvcGVDaGFpbk5vZGUqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFNj
b3BlQ2hhaW5Ob2RlKiBuZXh0LCBKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBnbG9iYWxUaGlz
KQogICAgICAgICB7CiAgICAgICAgICAgICBTY29wZUNoYWluTm9kZSogbm9kZSA9IG5ldyAoYWxs
b2NhdGVDZWxsPFNjb3BlQ2hhaW5Ob2RlPigqZXhlYy0+aGVhcCgpKSkgU2NvcGVDaGFpbk5vZGUo
bmV4dCwgb2JqZWN0LCBnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIGdsb2JhbFRoaXMpOwogICAg
ICAgICAgICAgbm9kZS0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0KTsK
ICAgICAgICAgICAgIHJldHVybiBub2RlOwogICAgICAgICB9Ci0gICAgICAgIHN0YXRpYyBTY29w
ZUNoYWluTm9kZSogY3JlYXRlKFNjb3BlQ2hhaW5Ob2RlKiBuZXh0LCBKU09iamVjdCogb2JqZWN0
LCBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTT2JqZWN0KiBnbG9iYWxUaGlzKQorICAgICAgICBKU19JTkxJTkUgc3RhdGljIFNjb3BlQ2hh
aW5Ob2RlKiBjcmVhdGUoU2NvcGVDaGFpbk5vZGUqIG5leHQsIEpTT2JqZWN0KiBvYmplY3QsIEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNP
YmplY3QqIGdsb2JhbFRoaXMpCiAgICAgICAgIHsKICAgICAgICAgICAgIFNjb3BlQ2hhaW5Ob2Rl
KiBub2RlID0gbmV3IChhbGxvY2F0ZUNlbGw8U2NvcGVDaGFpbk5vZGU+KGdsb2JhbERhdGEtPmhl
YXApKSBTY29wZUNoYWluTm9kZShuZXh0LCBvYmplY3QsIGdsb2JhbERhdGEsIGdsb2JhbE9iamVj
dCwgZ2xvYmFsVGhpcyk7CiAgICAgICAgICAgICBub2RlLT5maW5pc2hDcmVhdGlvbihnbG9iYWxE
YXRhLCBnbG9iYWxPYmplY3QpOwpAQCAtNzYsMTEgKzc2LDExIEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBXcml0ZUJhcnJpZXI8SlNHbG9iYWxPYmplY3Q+IGdsb2JhbE9iamVjdDsKICAgICAg
ICAgV3JpdGVCYXJyaWVyPEpTT2JqZWN0PiBnbG9iYWxUaGlzOwogCi0gICAgICAgIFNjb3BlQ2hh
aW5Ob2RlKiBwdXNoKEpTT2JqZWN0Kik7Ci0gICAgICAgIFNjb3BlQ2hhaW5Ob2RlKiBwb3AoKTsK
KyAgICAgICAgSlNfSU5MSU5FIFNjb3BlQ2hhaW5Ob2RlKiBwdXNoKEpTT2JqZWN0Kik7CisgICAg
ICAgIEpTX0lOTElORSBTY29wZUNoYWluTm9kZSogcG9wKCk7CiAKLSAgICAgICAgU2NvcGVDaGFp
bkl0ZXJhdG9yIGJlZ2luKCk7Ci0gICAgICAgIFNjb3BlQ2hhaW5JdGVyYXRvciBlbmQoKTsKKyAg
ICAgICAgSlNfSU5MSU5FIFNjb3BlQ2hhaW5JdGVyYXRvciBiZWdpbigpOworICAgICAgICBKU19J
TkxJTkUgU2NvcGVDaGFpbkl0ZXJhdG9yIGVuZCgpOwogCiAgICAgICAgIGludCBsb2NhbERlcHRo
KCk7CiAKQEAgLTg4LDcgKzg4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgcHJp
bnQoKTsKICNlbmRpZgogICAgICAgICAKLSAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBwcm90bykgeyByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFs
RGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90bywgVHlwZUluZm8oQ29tcG91bmRUeXBlLCBTdHJ1Y3R1
cmVGbGFncyksICZzX2luZm8pOyB9CisgICAgICAgIEpTX0lOTElORSBzdGF0aWMgU3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKSB7IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0
ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvLCBUeXBlSW5mbyhDb21wb3VuZFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5mbyk7IH0KICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRD
aGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogICAgICAgICBzdGF0aWMgSlNfRVhQT1JU
REFUQSBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCkBAIC05NiwxMyArOTYsMTMgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW47CiAgICAgfTsKIAotICAgIGlubGluZSBTY29wZUNoYWlu
Tm9kZSogU2NvcGVDaGFpbk5vZGU6OnB1c2goSlNPYmplY3QqIG8pCisgICAgIEpTX0lOTElORSBT
Y29wZUNoYWluTm9kZSogU2NvcGVDaGFpbk5vZGU6OnB1c2goSlNPYmplY3QqIG8pCiAgICAgewog
ICAgICAgICBBU1NFUlQobyk7CiAgICAgICAgIHJldHVybiBTY29wZUNoYWluTm9kZTo6Y3JlYXRl
KHRoaXMsIG8sIGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdC5nZXQoKSwgZ2xvYmFsVGhpcy5nZXQo
KSk7CiAgICAgfQogCi0gICAgaW5saW5lIFNjb3BlQ2hhaW5Ob2RlKiBTY29wZUNoYWluTm9kZTo6
cG9wKCkKKyAgICAgSlNfSU5MSU5FIFNjb3BlQ2hhaW5Ob2RlKiBTY29wZUNoYWluTm9kZTo6cG9w
KCkKICAgICB7CiAgICAgICAgIEFTU0VSVChuZXh0KTsKICAgICAgICAgcmV0dXJuIG5leHQuZ2V0
KCk7CkBAIC0xMjksMTIgKzEyOSwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU2NvcGVD
aGFpbk5vZGUqIG1fbm9kZTsKICAgICB9OwogCi0gICAgaW5saW5lIFNjb3BlQ2hhaW5JdGVyYXRv
ciBTY29wZUNoYWluTm9kZTo6YmVnaW4oKQorICAgICBKU19JTkxJTkUgU2NvcGVDaGFpbkl0ZXJh
dG9yIFNjb3BlQ2hhaW5Ob2RlOjpiZWdpbigpCiAgICAgewogICAgICAgICByZXR1cm4gU2NvcGVD
aGFpbkl0ZXJhdG9yKHRoaXMpOyAKICAgICB9CiAKLSAgICBpbmxpbmUgU2NvcGVDaGFpbkl0ZXJh
dG9yIFNjb3BlQ2hhaW5Ob2RlOjplbmQoKQorICAgICBKU19JTkxJTkUgU2NvcGVDaGFpbkl0ZXJh
dG9yIFNjb3BlQ2hhaW5Ob2RlOjplbmQoKQogICAgIHsgCiAgICAgICAgIHJldHVybiBTY29wZUNo
YWluSXRlcmF0b3IoMCk7IAogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U21hbGxTdHJpbmdzLmgKaW5kZXggOWM2ZWQ5YTMyOTExNTU4OTUzN2U5YTMxMWRlNTYzZThmMTIx
MzViMC4uNzI2YTJiOTQ2MGFjOTk4MmU3ZGZmNmQ2MzhmYmRhNDlmMzljYzJhZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmgKQEAgLTcyLDggKzcyLDgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIHNpbmdsZUNoYXJhY3RlclN0cmluZ0NvdW50ID0gbWF4U2luZ2xlQ2hhcmFjdGVyU3Ry
aW5nICsgMTsKIAotICAgICAgICB2b2lkIGNyZWF0ZUVtcHR5U3RyaW5nKEpTR2xvYmFsRGF0YSop
OwotICAgICAgICB2b2lkIGNyZWF0ZVNpbmdsZUNoYXJhY3RlclN0cmluZyhKU0dsb2JhbERhdGEq
LCB1bnNpZ25lZCBjaGFyKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBjcmVhdGVF
bXB0eVN0cmluZyhKU0dsb2JhbERhdGEqKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBjcmVhdGVTaW5nbGVDaGFyYWN0ZXJTdHJpbmcoSlNHbG9iYWxEYXRhKiwgdW5zaWduZWQgY2hh
cik7CiAKICAgICAgICAgSlNTdHJpbmcqIG1fZW1wdHlTdHJpbmc7CiAgICAgICAgIEpTU3RyaW5n
KiBtX3NpbmdsZUNoYXJhY3RlclN0cmluZ3Nbc2luZ2xlQ2hhcmFjdGVyU3RyaW5nQ291bnRdOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAppbmRleCBkNjVl
Y2M1NDMyYmExOTVkOWE2ZTQzODdlMmJmMDgxZTVkMjQwNDg5Li4yODUzYzNhNDhkMDdkZTcxYTE4
NmZiYmYxYmY2NjgyNTNjNWJhYTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJpbmdPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdPYmplY3QuaApAQCAtMjYsMjYgKzI2LDI2IEBACiAKIG5hbWVzcGFjZSBKU0Mgewog
Ci0gICAgY2xhc3MgU3RyaW5nT2JqZWN0IDogcHVibGljIEpTV3JhcHBlck9iamVjdCB7CisgICAg
Y2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgU3RyaW5nT2JqZWN0IDogcHVibGljIEpTV3JhcHBlck9i
amVjdCB7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIEpTV3JhcHBlck9iamVjdCBCYXNl
OwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCB2dGFibGVBbmNob3IoKTsKIAotICAgICAgICBzdGF0
aWMgU3RyaW5nT2JqZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKKyAgICAgICAgSlNfSU5MSU5FIHN0YXRpYyBTdHJpbmdPYmplY3QqIGNyZWF0ZShFeGVj
U3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICB7CiAgICAgICAgICAg
ICBKU1N0cmluZyogc3RyaW5nID0ganNFbXB0eVN0cmluZyhleGVjKTsKICAgICAgICAgICAgIFN0
cmluZ09iamVjdCogb2JqZWN0ID0gbmV3IChhbGxvY2F0ZUNlbGw8U3RyaW5nT2JqZWN0PigqZXhl
Yy0+aGVhcCgpKSkgU3RyaW5nT2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlKTsg
IAogICAgICAgICAgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCks
IHN0cmluZyk7CiAgICAgICAgICAgICByZXR1cm4gb2JqZWN0OwogICAgICAgICB9Ci0gICAgICAg
IHN0YXRpYyBTdHJpbmdPYmplY3QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBKU1N0cmluZyogc3RyaW5nKQorICAgICAgICBKU19JTkxJTkUgc3RhdGljIFN0
cmluZ09iamVjdCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEpTU3RyaW5nKiBzdHJpbmcpCiAgICAgICAgIHsKICAgICAgICAgICAgIFN0cmluZ09iamVjdCog
b2JqZWN0ID0gbmV3IChhbGxvY2F0ZUNlbGw8U3RyaW5nT2JqZWN0PigqZXhlYy0+aGVhcCgpKSkg
U3RyaW5nT2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlKTsKICAgICAgICAgICAg
IG9iamVjdC0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJpbmcpOwogICAg
ICAgICAgICAgcmV0dXJuIG9iamVjdDsKICAgICAgICAgfQotICAgICAgICBzdGF0aWMgU3RyaW5n
T2JqZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBKU1N0cmluZyopOwor
ICAgICAgICBKU19JTkxJTkUgc3RhdGljIFN0cmluZ09iamVjdCogY3JlYXRlKEV4ZWNTdGF0ZSos
IEpTR2xvYmFsT2JqZWN0KiwgSlNTdHJpbmcqKTsKIAogICAgICAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJv
cGVydHlTbG90QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYpOwpAQCAtNTgsOSArNTgsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgICAgICBzdGF0aWMgY29uc3QgSlNfRVhQT1JUREFUQSBDbGFzc0luZm8gc19pbmZvOwogCi0g
ICAgICAgIEpTU3RyaW5nKiBpbnRlcm5hbFZhbHVlKCkgY29uc3QgeyByZXR1cm4gYXNTdHJpbmco
SlNXcmFwcGVyT2JqZWN0OjppbnRlcm5hbFZhbHVlKCkpO30KKyAgICAgICAgSlNfSU5MSU5FIEpT
U3RyaW5nKiBpbnRlcm5hbFZhbHVlKCkgY29uc3QgeyByZXR1cm4gYXNTdHJpbmcoSlNXcmFwcGVy
T2JqZWN0OjppbnRlcm5hbFZhbHVlKCkpO30KIAotICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICAgICAgSlNfSU5MSU5FIHN0YXRp
YyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgICAgICB7
CiAgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
JnNfaW5mbyk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmgKaW5kZXggZjVhMGIxOTc3NjM4OGU5MTdkZGM5YzZjMmYxOWYyNGE4ZDk5ZjIwOC4uYWIy
MDFkMGNjMjdkNzRhNThiOWE1MGY4NzE4YzNiMzNmZmExNjk0MiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKQEAgLTg0LDExICs4NCwxMSBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyB2b2lkIGR1bXBTdGF0aXN0aWNzKCk7
CiAKLSAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogYWRkUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xv
YmFsRGF0YSYsIFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5z
aWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNldCk7
Ci0gICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3Rp
bmdTdHJ1Y3R1cmUoU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIHNpemVfdCYgb2Zmc2V0
KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogYWRkUHJvcGVy
dHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVl
LCBzaXplX3QmIG9mZnNldCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1
Y3R1cmUqIGFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJl
KiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBK
U0NlbGwqIHNwZWNpZmljVmFsdWUsIHNpemVfdCYgb2Zmc2V0KTsKICAgICAgICAgc3RhdGljIFN0
cnVjdHVyZSogcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVy
ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgc2l6ZV90JiBvZmZzZXQpOwotICAg
ICAgICBzdGF0aWMgU3RydWN0dXJlKiBjaGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9uKEpTR2xvYmFs
RGF0YSYsIFN0cnVjdHVyZSosIEpTVmFsdWUgcHJvdG90eXBlKTsKLSAgICAgICAgc3RhdGljIFN0
cnVjdHVyZSogZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVj
dHVyZSosIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIFN0cnVjdHVyZSogY2hhbmdlUHJvdG90eXBlVHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBT
dHJ1Y3R1cmUqLCBKU1ZhbHVlIHByb3RvdHlwZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBTdHJ1Y3R1cmUqIGRlc3BlY2lmeUZ1bmN0aW9uVHJhbnNpdGlvbihKU0dsb2JhbERh
dGEmLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJik7CiAgICAgICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIGdldHRlclNldHRlclRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7
CiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHRvQ2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRp
b24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IHRvVW5jYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1
cmUqKTsKQEAgLTEwMywxMCArMTAzLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIFN0
cnVjdHVyZSogZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwgSlNPYmpl
Y3QqKTsKIAotICAgICAgICB+U3RydWN0dXJlKCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IH5TdHJ1Y3R1cmUoKTsKIAogICAgICAgICAvLyBUaGVzZSBzaG91bGQgYmUgdXNlZCB3aXRoIGNh
dXRpb24uICAKLSAgICAgICAgc2l6ZV90IGFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oSlNH
bG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRy
aWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzaXplX3QgYWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCog
c3BlY2lmaWNWYWx1ZSk7CiAgICAgICAgIHNpemVfdCByZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFu
c2l0aW9uKEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CiAg
ICAgICAgIHZvaWQgc2V0UHJvdG90eXBlV2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkgeyBtX3Byb3RvdHlwZS5zZXQoZ2xvYmFsRGF0
YSwgdGhpcywgcHJvdG90eXBlKTsgfQogICAgICAgICAKQEAgLTEzNiw3ICsxMzYsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgICAgICBzaXplX3QgZ2V0KEpTR2xvYmFsRGF0YSYsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIHNpemVfdCBnZXQoSlNHbG9iYWxEYXRh
JiwgY29uc3QgVVN0cmluZyYgbmFtZSk7Ci0gICAgICAgIHNpemVfdCBnZXQoSlNHbG9iYWxEYXRh
JiwgU3RyaW5nSW1wbCogcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcywgSlNDZWxs
KiYgc3BlY2lmaWNWYWx1ZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBnZXQo
SlNHbG9iYWxEYXRhJiwgU3RyaW5nSW1wbCogcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmli
dXRlcywgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSk7CiAgICAgICAgIHNpemVfdCBnZXQoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2ln
bmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKQogICAgICAgICB7CiAgICAg
ICAgICAgICBBU1NFUlQoIXByb3BlcnR5TmFtZS5pc051bGwoKSk7CkBAIC0xNTEsNyArMTUxLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBib29sIGlzRW1wdHkoKSBjb25z
dCB7IHJldHVybiBtX3Byb3BlcnR5VGFibGUgPyBtX3Byb3BlcnR5VGFibGUtPmlzRW1wdHkoKSA6
IG1fb2Zmc2V0ID09IG5vT2Zmc2V0OyB9CiAKLSAgICAgICAgdm9pZCBkZXNwZWNpZnlEaWN0aW9u
YXJ5RnVuY3Rpb24oSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkZXNwZWNpZnlEaWN0aW9uYXJ5RnVu
Y3Rpb24oSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKICAg
ICAgICAgdm9pZCBkaXNhYmxlU3BlY2lmaWNGdW5jdGlvblRyYWNraW5nKCkgeyBtX3NwZWNpZmlj
RnVuY3Rpb25UaHJhc2hDb3VudCA9IG1heFNwZWNpZmljRnVuY3Rpb25UaHJhc2hDb3VudDsgfQog
CiAgICAgICAgIHZvaWQgc2V0RW51bWVyYXRpb25DYWNoZShKU0dsb2JhbERhdGEmLCBKU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yKiBlbnVtZXJhdGlvbkNhY2hlKTsgLy8gRGVmaW5lZCBpbiBKU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yLmguCkBAIC0xOTYsNyArMTk2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKICAg
ICBwcml2YXRlOgotICAgICAgICBTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwgSlNHbG9iYWxPYmpl
Y3QqLCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mLCBjb25zdCBDbGFzc0luZm8q
KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYsIEpT
R2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0IFR5cGVJbmZvJiwgY29uc3Qg
Q2xhc3NJbmZvKik7CiAgICAgICAgIFN0cnVjdHVyZShKU0dsb2JhbERhdGEmKTsKICAgICAgICAg
U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYsIGNvbnN0IFN0cnVjdHVyZSopOwogCkBAIC0yMjYsNyAr
MjI2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgUGFzc093blB0cjxQcm9wZXJ0eVRh
YmxlPiBjb3B5UHJvcGVydHlUYWJsZShKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqIG93bmVyKTsK
ICAgICAgICAgUGFzc093blB0cjxQcm9wZXJ0eVRhYmxlPiBjb3B5UHJvcGVydHlUYWJsZUZvclBp
bm5pbmcoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiBvd25lcik7Ci0gICAgICAgIHZvaWQgbWF0
ZXJpYWxpemVQcm9wZXJ0eU1hcChKU0dsb2JhbERhdGEmKTsKKyAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgdm9pZCBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwKEpTR2xvYmFsRGF0YSYpOwogICAgICAg
ICB2b2lkIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xh
c3NJbmZvKCkgPT0gJnNfaW5mbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9UaW1lb3V0Q2hlY2tlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VGltZW91dENoZWNrZXIuaAppbmRleCA1OTI1NjQxZjgwYTM2NmFkMzQwNjFiNTYyYzc0Y2Q4MjJl
M2NmZTliLi44OWQ2MTU4Y2NkZDY0N2UyMzY5MzJmNmQ0YzljMjFlMDM5YjYwZWY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UaW1lb3V0Q2hlY2tlci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RpbWVvdXRDaGVja2VyLmgKQEAgLTU3LDkg
KzU3LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAtLW1fc3RhcnRDb3VudDsKICAg
ICAgICAgfQogCi0gICAgICAgIHZvaWQgcmVzZXQoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgdm9pZCByZXNldCgpOwogCi0gICAgICAgIGJvb2wgZGlkVGltZU91dChFeGVjU3RhdGUqKTsK
KyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBkaWRUaW1lT3V0KEV4ZWNTdGF0ZSopOwog
CiAgICAgcHJpdmF0ZToKICAgICAgICAgdW5zaWduZWQgbV90aW1lb3V0SW50ZXJ2YWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmgKaW5kZXggNWRhYTAzMWU2NDUyOWU5YjUy
MTA4MWI5MDZkODY4NWM0MjYxODRmMS4uMjI0N2ZiMjdlMDU2ZjFiM2FiZjQyYTU5MWVkZGU1MmFj
ZmMzMDU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmlu
Zy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuaApAQCAtMzMs
MTggKzMzLDE4IEBAIHB1YmxpYzoKICAgICBVU3RyaW5nKCkgeyB9CiAKICAgICAvLyBDb25zdHJ1
Y3QgYSBzdHJpbmcgd2l0aCBVVEYtMTYgZGF0YS4KLSAgICBVU3RyaW5nKGNvbnN0IFVDaGFyKiBj
aGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFVTdHJp
bmcoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCk7CiAKICAgICAvLyBD
b25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBVVEYtMTYgZGF0YSwgZnJvbSBhIG51bGwtdGVybWluYXRl
ZCBzb3VyY2UuCi0gICAgVVN0cmluZyhjb25zdCBVQ2hhciopOworICAgIEpTX0VYUE9SVF9QUklW
QVRFIFVTdHJpbmcoY29uc3QgVUNoYXIqKTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyB3
aXRoIGxhdGluMSBkYXRhLgogICAgIFVTdHJpbmcoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHVu
c2lnbmVkIGxlbmd0aCk7Ci0gICAgVVN0cmluZyhjb25zdCBjaGFyKiBjaGFyYWN0ZXJzLCB1bnNp
Z25lZCBsZW5ndGgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFVTdHJpbmcoY29uc3QgY2hhciog
Y2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmlu
ZyB3aXRoIGxhdGluMSBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KICAgICBV
U3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKTsKLSAgICBVU3RyaW5nKGNvbnN0IGNoYXIq
IGNoYXJhY3RlcnMpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFVTdHJpbmcoY29uc3QgY2hhciog
Y2hhcmFjdGVycyk7CiAKICAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgcmVmZXJlbmNpbmcgYW4g
ZXhpc3RpbmcgU3RyaW5nSW1wbC4KICAgICBVU3RyaW5nKFN0cmluZ0ltcGwqIGltcGwpIDogbV9p
bXBsKGltcGwpIHsgfQpAQCAtOTksOSArOTksOSBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzOEJp
dCgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbC0+aXM4Qml0KCk7IH0KIAotICAgIENTdHJpbmcgYXNj
aWkoKSBjb25zdDsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBDU3RyaW5nIGFzY2lpKCkgY29uc3Q7
CiAgICAgQ1N0cmluZyBsYXRpbjEoKSBjb25zdDsKLSAgICBDU3RyaW5nIHV0ZjgoYm9vbCBzdHJp
Y3QgPSBmYWxzZSkgY29uc3Q7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgQ1N0cmluZyB1dGY4KGJv
b2wgc3RyaWN0ID0gZmFsc2UpIGNvbnN0OwogCiAgICAgVUNoYXIgb3BlcmF0b3JbXSh1bnNpZ25l
ZCBpbmRleCkgY29uc3QKICAgICB7CkBAIC0xMTIsMTEgKzExMiwxMSBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBtX2ltcGwtPmNoYXJhY3RlcnMxNigpW2luZGV4XTsKICAgICB9CiAKLSAgICBz
dGF0aWMgVVN0cmluZyBudW1iZXIoaW50KTsKLSAgICBzdGF0aWMgVVN0cmluZyBudW1iZXIodW5z
aWduZWQpOwotICAgIHN0YXRpYyBVU3RyaW5nIG51bWJlcihsb25nKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgVVN0cmluZyBudW1iZXIoaW50KTsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgVVN0cmluZyBudW1iZXIodW5zaWduZWQpOworICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBVU3RyaW5nIG51bWJlcihsb25nKTsKICAgICBzdGF0aWMgVVN0cmluZyBudW1iZXIo
bG9uZyBsb25nKTsKLSAgICBzdGF0aWMgVVN0cmluZyBudW1iZXIoZG91YmxlKTsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgVVN0cmluZyBudW1iZXIoZG91YmxlKTsKIAogICAgIC8vIEZp
bmQgYSBzaW5nbGUgY2hhcmFjdGVyIG9yIHN0cmluZywgYWxzbyB3aXRoIG1hdGNoIGZ1bmN0aW9u
ICYgbGF0aW4xIGZvcm1zLgogICAgIHNpemVfdCBmaW5kKFVDaGFyIGMsIHVuc2lnbmVkIHN0YXJ0
ID0gMCkgY29uc3QKQEAgLTEzMiw3ICsxMzIsNyBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IHJldmVy
c2VGaW5kKGNvbnN0IFVTdHJpbmcmIHN0ciwgdW5zaWduZWQgc3RhcnQgPSBVSU5UX01BWCkgY29u
c3QKICAgICAgICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5yZXZlcnNlRmluZChzdHIuaW1w
bCgpLCBzdGFydCkgOiBub3RGb3VuZDsgfQogCi0gICAgVVN0cmluZyBzdWJzdHJpbmdTaGFyaW5n
SW1wbCh1bnNpZ25lZCBwb3MsIHVuc2lnbmVkIGxlbiA9IFVJTlRfTUFYKSBjb25zdDsKKyAgICBK
U19FWFBPUlRfUFJJVkFURSBVU3RyaW5nIHN1YnN0cmluZ1NoYXJpbmdJbXBsKHVuc2lnbmVkIHBv
cywgdW5zaWduZWQgbGVuID0gVUlOVF9NQVgpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFJlZlB0
cjxTdHJpbmdJbXBsPiBtX2ltcGw7CkBAIC0xODksMTAgKzE4OSwxMCBAQCBpbmxpbmUgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IFVTdHJpbmcmIHMxLCBjb25zdCBVU3RyaW5nJiBzMikKICAgICByZXR1
cm4gIUpTQzo6b3BlcmF0b3I9PShzMSwgczIpOwogfQogCi1ib29sIG9wZXJhdG9yPChjb25zdCBV
U3RyaW5nJiBzMSwgY29uc3QgVVN0cmluZyYgczIpOwotYm9vbCBvcGVyYXRvcj4oY29uc3QgVVN0
cmluZyYgczEsIGNvbnN0IFVTdHJpbmcmIHMyKTsKK0pTX0VYUE9SVF9QUklWQVRFIGJvb2wgb3Bl
cmF0b3I8KGNvbnN0IFVTdHJpbmcmIHMxLCBjb25zdCBVU3RyaW5nJiBzMik7CitKU19FWFBPUlRf
UFJJVkFURSBib29sIG9wZXJhdG9yPihjb25zdCBVU3RyaW5nJiBzMSwgY29uc3QgVVN0cmluZyYg
czIpOwogCi1ib29sIG9wZXJhdG9yPT0oY29uc3QgVVN0cmluZyYgczEsIGNvbnN0IGNoYXIqIHMy
KTsKK0pTX0VYUE9SVF9QUklWQVRFIGJvb2wgb3BlcmF0b3I9PShjb25zdCBVU3RyaW5nJiBzMSwg
Y29uc3QgY2hhciogczIpOwogCiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFVTdHJpbmcm
IHMxLCBjb25zdCBjaGFyKiBzMikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1dyaXRlQmFycmllci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
V3JpdGVCYXJyaWVyLmgKaW5kZXggNTI1ZmMwOTI2N2U2NDU3Yzk2ZWMzMmZhMjE5NmY4OTgyYzQ4
N2RkNS4uYTdiZDdhMTAwZGNhNjIzMDAwMjNjYjg1Njk3NThmYWVhOTY1MThhYiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV3JpdGVCYXJyaWVyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV3JpdGVCYXJyaWVyLmgKQEAgLTQwLDggKzQwLDgg
QEAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiB0ZW1wbGF0ZTxjbGFzcyBUPiBjbGFzcyBXcml0ZUJh
cnJpZXJCYXNlOwogdGVtcGxhdGU8PiBjbGFzcyBXcml0ZUJhcnJpZXJCYXNlPEpTVmFsdWU+Owog
Ci12b2lkIHNsb3dWYWxpZGF0ZUNlbGwoSlNDZWxsKik7Ci12b2lkIHNsb3dWYWxpZGF0ZUNlbGwo
SlNHbG9iYWxPYmplY3QqKTsKK0pTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2xvd1ZhbGlkYXRlQ2Vs
bChKU0NlbGwqKTsKK0pTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2xvd1ZhbGlkYXRlQ2VsbChKU0ds
b2JhbE9iamVjdCopOwogICAgIAogI2lmIEVOQUJMRShHQ19WQUxJREFUSU9OKQogdGVtcGxhdGU8
Y2xhc3MgVD4gaW5saW5lIHZvaWQgdmFsaWRhdGVDZWxsKFQgY2VsbCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQnl0ZUFycmF5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL0J5dGVBcnJheS5oCmluZGV4IDAwOWVjNTg1MGNmZTU4NDBiODMxZmM0YmY4ZWFiMzk2
NzNjN2U1OTYuLmFlNDQxYWViZDUyZDk1OTYxZTI4OGZkM2UzMTg5MjIyYzYzMjU4NjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQnl0ZUFycmF5LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9CeXRlQXJyYXkuaApAQCAtODMsNyArODMsNyBAQCBuYW1lc3Bh
Y2UgV1RGIHsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEJ5dGVBcnJheT4gY3JlYXRlKHNpemVfdCBzaXplKTsKKyAgICAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPEJ5dGVBcnJheT4gY3JlYXRlKHNpemVfdCBzaXpl
KTsKIAogICAgICAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mU2l6ZSgpIHsgcmV0dXJuIE9CSkVD
VF9PRkZTRVRPRihCeXRlQXJyYXksIG1fc2l6ZSk7IH0KICAgICAgICAgc3RhdGljIHNpemVfdCBv
ZmZzZXRPZkRhdGEoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQnl0ZUFycmF5LCBtX2RhdGEp
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0NyeXB0b2dyYXBoaWNh
bGx5UmFuZG9tTnVtYmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0NyeXB0b2dyYXBo
aWNhbGx5UmFuZG9tTnVtYmVyLmgKaW5kZXggMzQ4MjQyZTI1Y2NiNTI3OTc5YWUwZjgzNWY4ZWE3
YWFjYzQ1YWVhZS4uMjI2MmI2YzNiMzExZmFlZDI2ZjcwNDc5OTU2MWE4YWFkNTdlMDg1MSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRv
bU51bWJlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQ3J5cHRvZ3JhcGhpY2Fs
bHlSYW5kb21OdW1iZXIuaApAQCAtMzEsOCArMzEsOCBAQAogbmFtZXNwYWNlIFdURiB7CiAKICNp
ZiBVU0UoT1NfUkFORE9NTkVTUykKLXVpbnQzMl90IGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVt
YmVyKCk7Ci12b2lkIGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tVmFsdWVzKHZvaWQqIGJ1ZmZlciwg
c2l6ZV90IGxlbmd0aCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgdWludDMyX3QgY3J5cHRvZ3JhcGhp
Y2FsbHlSYW5kb21OdW1iZXIoKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIGNyeXB0b2dyYXBo
aWNhbGx5UmFuZG9tVmFsdWVzKHZvaWQqIGJ1ZmZlciwgc2l6ZV90IGxlbmd0aCk7CiAjZW5kaWYK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9DdXJyZW50VGltZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9DdXJyZW50VGltZS5oCmluZGV4IDcxNzc1YzI3
MzUzOTM2YTg0YTU4ZTQ0NzNlNjdhMWM4OTEyYTM4OTcuLmVlNDlmOGQyNWY2OTAzZGE1ZmNjMGQ2
M2JmMTI5OTIyYjFlYzEyMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
Q3VycmVudFRpbWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0N1cnJlbnRUaW1l
LmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAvLyBSZXR1cm5zIHRoZSBjdXJy
ZW50IFVUQyB0aW1lIGluIHNlY29uZHMsIGNvdW50ZWQgZnJvbSBKYW51YXJ5IDEsIDE5NzAuCiAv
LyBQcmVjaXNpb24gdmFyaWVzIGRlcGVuZGluZyBvbiBwbGF0Zm9ybSBidXQgaXMgdXN1YWxseSBh
cyBnb29kIG9yIGJldHRlcgogLy8gdGhhbiBhIG1pbGxpc2Vjb25kLgotZG91YmxlIGN1cnJlbnRU
aW1lKCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgZG91YmxlIGN1cnJlbnRUaW1lKCk7CiAKIC8vIFNh
bWUgdGhpbmcsIGluIG1pbGxpc2Vjb25kcy4KIGlubGluZSBkb3VibGUgY3VycmVudFRpbWVNUygp
CkBAIC02MCw3ICs2MCw3IEBAIGlubGluZSB2b2lkIGdldExvY2FsVGltZShjb25zdCB0aW1lX3Qq
IGxvY2FsVGltZSwgc3RydWN0IHRtKiBsb2NhbFRNKQogCiAvLyBQcm92aWRlcyBhIG1vbm90b25p
Y2FsbHkgaW5jcmVhc2luZyB0aW1lIGluIHNlY29uZHMgc2luY2UgYW4gYXJiaXRyYXJ5IHBvaW50
IGluIHRoZSBwYXN0LgogLy8gT24gdW5zdXBwb3J0ZWQgcGxhdGZvcm1zLCB0aGlzIGZ1bmN0aW9u
IG9ubHkgZ3VhcmFudGVlcyB0aGUgcmVzdWx0IHdpbGwgYmUgbm9uLWRlY3JlYXNpbmcuCi1kb3Vi
bGUgbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgZG91
YmxlIG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwogCiB9IC8vIG5hbWVzcGFjZSBXVEYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9EYXRlTWF0aC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9EYXRlTWF0aC5oCmluZGV4IDExNGFjZjhhODcxOTRhYjJl
MjY2MWQwYjU1YWNlYzZjMTcyNjFhNWQuLmZjMWE4ZDhlNDRiZjQ1NmZhMmIyMzlhMDM0MWIxOTNl
OTg5ODJmYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRGF0ZU1hdGgu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0RhdGVNYXRoLmgKQEAgLTYxLDcgKzYx
LDcgQEAgaW50IGVxdWl2YWxlbnRZZWFyRm9yRFNUKGludCB5ZWFyKTsKIAogLy8gTm90IHJlYWxs
eSBtYXRoIHJlbGF0ZWQsIGJ1dCB0aGlzIGlzIGN1cnJlbnRseSB0aGUgb25seSBzaGFyZWQgcGxh
Y2UgdG8gcHV0IHRoZXNlLgogZG91YmxlIHBhcnNlRVM1RGF0ZUZyb21OdWxsVGVybWluYXRlZENo
YXJhY3RlcnMoY29uc3QgY2hhciogZGF0ZVN0cmluZyk7Ci1kb3VibGUgcGFyc2VEYXRlRnJvbU51
bGxUZXJtaW5hdGVkQ2hhcmFjdGVycyhjb25zdCBjaGFyKiBkYXRlU3RyaW5nKTsKK1dURl9FWFBP
UlRfUFJJVkFURSBkb3VibGUgcGFyc2VEYXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVycyhj
b25zdCBjaGFyKiBkYXRlU3RyaW5nKTsKIGRvdWJsZSBwYXJzZURhdGVGcm9tTnVsbFRlcm1pbmF0
ZWRDaGFyYWN0ZXJzKGNvbnN0IGNoYXIqIGRhdGVTdHJpbmcsIGJvb2wmIGhhdmVUWiwgaW50JiBv
ZmZzZXQpOwogZG91YmxlIHRpbWVDbGlwKGRvdWJsZSk7CiAvLyBkYXlPZldlZWs6IFswLCA2XSAw
IGJlaW5nIE1vbmRheSwgZGF5OiBbMSwgMzFdLCBtb250aDogWzAsIDExXSwgeWVhcjogZXg6IDIw
MTEsIGhvdXJzOiBbMCwgMjNdLCBtaW51dGVzOiBbMCwgNTldLCBzZWNvbmRzOiBbMCwgNTldLCB1
dGNPZmZzZXQ6IFstNzIwLDcyMF0uIApAQCAtODksMTggKzg5LDE4IEBAIGNvbnN0IGRvdWJsZSBt
c1Blck1vbnRoID0gMjU5MjAwMDAwMC4wOwogYm9vbCBpc0xlYXBZZWFyKGludCB5ZWFyKTsKIAog
Ly8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGRheXMgZnJvbSAxOTcwLTAxLTAxIHRvIHRoZSBzcGVj
aWZpZWQgZGF0ZS4KLWRvdWJsZSBkYXRlVG9EYXlzRnJvbTE5NzAoaW50IHllYXIsIGludCBtb250
aCwgaW50IGRheSk7Ci1pbnQgbXNUb1llYXIoZG91YmxlIG1zKTsKK1dURl9FWFBPUlRfUFJJVkFU
RSBkb3VibGUgZGF0ZVRvRGF5c0Zyb20xOTcwKGludCB5ZWFyLCBpbnQgbW9udGgsIGludCBkYXkp
OworV1RGX0VYUE9SVF9QUklWQVRFIGludCBtc1RvWWVhcihkb3VibGUgbXMpOwogZG91YmxlIG1z
VG9EYXlzKGRvdWJsZSBtcyk7CiBpbnQgbXNUb01pbnV0ZXMoZG91YmxlIG1zKTsKIGludCBtc1Rv
SG91cnMoZG91YmxlIG1zKTsKLWludCBkYXlJblllYXIoZG91YmxlIG1zLCBpbnQgeWVhcik7Ci1p
bnQgbW9udGhGcm9tRGF5SW5ZZWFyKGludCBkYXlJblllYXIsIGJvb2wgbGVhcFllYXIpOwotaW50
IGRheUluTW9udGhGcm9tRGF5SW5ZZWFyKGludCBkYXlJblllYXIsIGJvb2wgbGVhcFllYXIpOwor
V1RGX0VYUE9SVF9QUklWQVRFIGludCBkYXlJblllYXIoZG91YmxlIG1zLCBpbnQgeWVhcik7CitX
VEZfRVhQT1JUX1BSSVZBVEUgaW50IG1vbnRoRnJvbURheUluWWVhcihpbnQgZGF5SW5ZZWFyLCBi
b29sIGxlYXBZZWFyKTsKK1dURl9FWFBPUlRfUFJJVkFURSBpbnQgZGF5SW5Nb250aEZyb21EYXlJ
blllYXIoaW50IGRheUluWWVhciwgYm9vbCBsZWFwWWVhcik7CiAKIC8vIFJldHVybnMgb2Zmc2V0
IG1pbGxpc2Vjb25kcyBmb3IgVVRDIGFuZCBEU1QuCi1pbnQzMl90IGNhbGN1bGF0ZVVUQ09mZnNl
dCgpOwotZG91YmxlIGNhbGN1bGF0ZURTVE9mZnNldChkb3VibGUgbXMsIGRvdWJsZSB1dGNPZmZz
ZXQpOworV1RGX0VYUE9SVF9QUklWQVRFIGludDMyX3QgY2FsY3VsYXRlVVRDT2Zmc2V0KCk7CitX
VEZfRVhQT1JUX1BSSVZBVEUgZG91YmxlIGNhbGN1bGF0ZURTVE9mZnNldChkb3VibGUgbXMsIGRv
dWJsZSB1dGNPZmZzZXQpOwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9EZWNpbWFsTnVtYmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL0RlY2ltYWxOdW1iZXIuaAppbmRleCBhYzdiODAwNTgyZDM2YWIyYTE3NmIwM2Uw
OWQwYzUyYTA0NTQyOWIyLi42MWVmZmNkZDNkYzZmY2RkMTM1MmY2MDFjNTc1ZjU1YmFhNTQ1NDBj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0RlY2ltYWxOdW1iZXIuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0RlY2ltYWxOdW1iZXIuaApAQCAtODEsMTEg
KzgxLDExIEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKG1fc2lnbmlmaWNhbmRbMF0gIT0gJzAn
IHx8ICFtX2V4cG9uZW50KTsKICAgICB9CiAKLSAgICB1bnNpZ25lZCBidWZmZXJMZW5ndGhGb3JT
dHJpbmdEZWNpbWFsKCkgY29uc3Q7Ci0gICAgdW5zaWduZWQgYnVmZmVyTGVuZ3RoRm9yU3RyaW5n
RXhwb25lbnRpYWwoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdW5zaWduZWQgYnVm
ZmVyTGVuZ3RoRm9yU3RyaW5nRGVjaW1hbCgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFU
RSB1bnNpZ25lZCBidWZmZXJMZW5ndGhGb3JTdHJpbmdFeHBvbmVudGlhbCgpIGNvbnN0OwogCi0g
ICAgdW5zaWduZWQgdG9TdHJpbmdEZWNpbWFsKFVDaGFyKiBidWZmZXIsIHVuc2lnbmVkIGJ1ZmZl
ckxlbmd0aCkgY29uc3Q7Ci0gICAgdW5zaWduZWQgdG9TdHJpbmdFeHBvbmVudGlhbChVQ2hhciog
YnVmZmVyLCB1bnNpZ25lZCBidWZmZXJMZW5ndGgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSB1bnNpZ25lZCB0b1N0cmluZ0RlY2ltYWwoVUNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgYnVm
ZmVyTGVuZ3RoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdW5zaWduZWQgdG9TdHJp
bmdFeHBvbmVudGlhbChVQ2hhciogYnVmZmVyLCB1bnNpZ25lZCBidWZmZXJMZW5ndGgpIGNvbnN0
OwogCiAgICAgYm9vbCBzaWduKCkgY29uc3QgeyByZXR1cm4gbV9zaWduOyB9CiAgICAgaW50IGV4
cG9uZW50KCkgY29uc3QgeyByZXR1cm4gbV9leHBvbmVudDsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9GYXN0TWFsbG9jLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvRmFzdE1hbGxvYy5jcHAKaW5kZXggNWM2ODQ1MDBmODQwODE5NTZiMmE1MDAzMTg1ODEz
NmViYTBkZGRhYi4uNmI5MmY1NTQyMGJkZTBkN2VhMjkwODkwNTE5MjFkNTIxMTZjZWUyZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9GYXN0TWFsbG9jLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0Zhc3RNYWxsb2MuY3BwCkBAIC0xODIsNyArMTgyLDcg
QEAgbmFtZXNwYWNlIFdURiB7CiAKIG5hbWVzcGFjZSBJbnRlcm5hbCB7CiAjaWYgIUVOQUJMRShX
VEZfTUFMTE9DX1ZBTElEQVRJT04pCi12b2lkIGZhc3RNYWxsb2NNYXRjaEZhaWxlZCh2b2lkKik7
CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBmYXN0TWFsbG9jTWF0Y2hGYWlsZWQodm9pZCopOwog
I2Vsc2UKIENPTVBJTEVfQVNTRVJUKCgoc2l6ZW9mKFZhbGlkYXRpb25IZWFkZXIpICUgc2l6ZW9m
KEFsbG9jQWxpZ25tZW50SW50ZWdlcikpID09IDApLCBWYWxpZGF0aW9uSGVhZGVyX211c3RfcHJv
ZHVjZV9jb3JyZWN0X2FsaWdubWVudCk7CiAjZW5kaWYKQEAgLTQwMCw3ICs0MDAsNyBAQCBzaXpl
X3QgZmFzdE1hbGxvY1NpemUoY29uc3Qgdm9pZCogcCkKICNpZiBPUyhEQVJXSU4pCiAvLyBUaGlz
IHN5bWJvbCBpcyBwcmVzZW50IGluIHRoZSBKYXZhU2NyaXB0Q29yZSBleHBvcnRzIGZpbGUgZXZl
biB3aGVuIEZhc3RNYWxsb2MgaXMgZGlzYWJsZWQuCiAvLyBJdCB3aWxsIG5ldmVyIGJlIHVzZWQg
aW4gdGhpcyBjYXNlLCBzbyBpdCdzIHR5cGUgYW5kIHZhbHVlIGFyZSBsZXNzIGludGVyZXN0aW5n
IHRoYW4gaXRzIHByZXNlbmNlLgotZXh0ZXJuICJDIiBjb25zdCBpbnQganNjb3JlX2Zhc3RtYWxs
b2NfaW50cm9zcGVjdGlvbiA9IDA7CitleHRlcm4gIkMiIFdURl9FWFBPUlRfUFJJVkFURSBjb25z
dCBpbnQganNjb3JlX2Zhc3RtYWxsb2NfaW50cm9zcGVjdGlvbiA9IDA7CiAjZW5kaWYKIAogI2Vs
c2UgLy8gRk9SQ0VfU1lTVEVNX01BTExPQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi9GYXN0TWFsbG9jLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0Zhc3RNYWxs
b2MuaAppbmRleCBiNGY3NGU0N2IzMjFhOGQ2YTJkNzc2MDc0MDI0OTFkNjg2ZDI4ZTY1Li5iMTE1
OTA4YmFkMjhhMDg2YzEyYjY1YmIyZWE0MjViNDlmMTAwYTZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL0Zhc3RNYWxsb2MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL0Zhc3RNYWxsb2MuaApAQCAtMjksMTIgKzI5LDEyIEBACiBuYW1lc3BhY2UgV1RGIHsK
IAogICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBjYWxsIENSQVNIKCkgaWYgYW4gYWxsb2NhdGlvbiBm
YWlscy4KLSAgICB2b2lkKiBmYXN0TWFsbG9jKHNpemVfdCk7Ci0gICAgdm9pZCogZmFzdFplcm9l
ZE1hbGxvYyhzaXplX3QpOwotICAgIHZvaWQqIGZhc3RDYWxsb2Moc2l6ZV90IG51bUVsZW1lbnRz
LCBzaXplX3QgZWxlbWVudFNpemUpOwotICAgIHZvaWQqIGZhc3RSZWFsbG9jKHZvaWQqLCBzaXpl
X3QpOwotICAgIGNoYXIqIGZhc3RTdHJEdXAoY29uc3QgY2hhciopOwotICAgIHNpemVfdCBmYXN0
TWFsbG9jU2l6ZShjb25zdCB2b2lkKik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQqIGZh
c3RNYWxsb2Moc2l6ZV90KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCogZmFzdFplcm9l
ZE1hbGxvYyhzaXplX3QpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkKiBmYXN0Q2FsbG9j
KHNpemVfdCBudW1FbGVtZW50cywgc2l6ZV90IGVsZW1lbnRTaXplKTsKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgdm9pZCogZmFzdFJlYWxsb2Modm9pZCosIHNpemVfdCk7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIGNoYXIqIGZhc3RTdHJEdXAoY29uc3QgY2hhciopOworICAgIFdURl9FWFBPUlRf
UFJJVkFURSBzaXplX3QgZmFzdE1hbGxvY1NpemUoY29uc3Qgdm9pZCopOwogCiAgICAgc3RydWN0
IFRyeU1hbGxvY1JldHVyblZhbHVlIHsKICAgICAgICAgVHJ5TWFsbG9jUmV0dXJuVmFsdWUodm9p
ZCogZGF0YSkKQEAgLTY4LDI2ICs2OCwyNiBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgcmV0
dXJuIHJldHVyblZhbHVlOwogICAgIH0KIAotICAgIFRyeU1hbGxvY1JldHVyblZhbHVlIHRyeUZh
c3RNYWxsb2Moc2l6ZV90IG4pOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBUcnlNYWxsb2NSZXR1
cm5WYWx1ZSB0cnlGYXN0TWFsbG9jKHNpemVfdCBuKTsKICAgICBUcnlNYWxsb2NSZXR1cm5WYWx1
ZSB0cnlGYXN0WmVyb2VkTWFsbG9jKHNpemVfdCBuKTsKLSAgICBUcnlNYWxsb2NSZXR1cm5WYWx1
ZSB0cnlGYXN0Q2FsbG9jKHNpemVfdCBuX2VsZW1lbnRzLCBzaXplX3QgZWxlbWVudF9zaXplKTsK
LSAgICBUcnlNYWxsb2NSZXR1cm5WYWx1ZSB0cnlGYXN0UmVhbGxvYyh2b2lkKiBwLCBzaXplX3Qg
bik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFRyeU1hbGxvY1JldHVyblZhbHVlIHRyeUZhc3RD
YWxsb2Moc2l6ZV90IG5fZWxlbWVudHMsIHNpemVfdCBlbGVtZW50X3NpemUpOworICAgIFdURl9F
WFBPUlRfUFJJVkFURSBUcnlNYWxsb2NSZXR1cm5WYWx1ZSB0cnlGYXN0UmVhbGxvYyh2b2lkKiBw
LCBzaXplX3Qgbik7CiAKLSAgICB2b2lkIGZhc3RGcmVlKHZvaWQqKTsKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgdm9pZCBmYXN0RnJlZSh2b2lkKik7CiAKICNpZm5kZWYgTkRFQlVHICAgIAogICAg
IHZvaWQgZmFzdE1hbGxvY0ZvcmJpZCgpOwogICAgIHZvaWQgZmFzdE1hbGxvY0FsbG93KCk7CiAj
ZW5kaWYKIAotICAgIHZvaWQgcmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5KCk7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHZvaWQgcmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5KCk7CiAgICAg
CiAgICAgc3RydWN0IEZhc3RNYWxsb2NTdGF0aXN0aWNzIHsKICAgICAgICAgc2l6ZV90IHJlc2Vy
dmVkVk1CeXRlczsKICAgICAgICAgc2l6ZV90IGNvbW1pdHRlZFZNQnl0ZXM7CiAgICAgICAgIHNp
emVfdCBmcmVlTGlzdEJ5dGVzOwogICAgIH07Ci0gICAgRmFzdE1hbGxvY1N0YXRpc3RpY3MgZmFz
dE1hbGxvY1N0YXRpc3RpY3MoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRmFzdE1hbGxvY1N0
YXRpc3RpY3MgZmFzdE1hbGxvY1N0YXRpc3RpY3MoKTsKIAogICAgIC8vIFRoaXMgZGVmaW5lcyBh
IHR5cGUgd2hpY2ggaG9sZHMgYW4gdW5zaWduZWQgaW50ZWdlciBhbmQgaXMgdGhlIHNhbWUKICAg
ICAvLyBzaXplIGFzIHRoZSBtaW5pbWFsbHkgYWxpZ25lZCBtZW1vcnkgYWxsb2NhdGlvbi4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvTUQ1LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL01ENS5oCmluZGV4IDNjYWE4MTBiYWE0MGE2MjgzMTQ4OGY1NmQxMDgxNDNi
YjMzZjA1MDMuLmVmMDI3Y2NhZDcyMzAwMTRlZGI0NGY2YjdiNmVkNGQyYWFmNTM4MTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvTUQ1LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi9NRDUuaApAQCAtMzcsMTYgKzM3LDE2IEBAIG5hbWVzcGFjZSBXVEYgewog
CiBjbGFzcyBNRDUgewogcHVibGljOgotICAgIE1ENSgpOworICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBNRDUoKTsKIAogICAgIHZvaWQgYWRkQnl0ZXMoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpbnB1
dCkKICAgICB7CiAgICAgICAgIGFkZEJ5dGVzKGlucHV0LmRhdGEoKSwgaW5wdXQuc2l6ZSgpKTsK
ICAgICB9Ci0gICAgdm9pZCBhZGRCeXRlcyhjb25zdCB1aW50OF90KiBpbnB1dCwgc2l6ZV90IGxl
bmd0aCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYWRkQnl0ZXMoY29uc3QgdWludDhf
dCogaW5wdXQsIHNpemVfdCBsZW5ndGgpOwogCiAgICAgLy8gY2hlY2tzdW0gaGFzIGEgc2lkZSBl
ZmZlY3Qgb2YgcmVzZXR0aW5nIHRoZSBzdGF0ZSBvZiB0aGUgb2JqZWN0LgotICAgIHZvaWQgY2hl
Y2tzdW0oVmVjdG9yPHVpbnQ4X3QsIDE2PiYpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lk
IGNoZWNrc3VtKFZlY3Rvcjx1aW50OF90LCAxNj4mKTsKIAogcHJpdmF0ZToKICAgICB1aW50MzJf
dCBtX2J1Zls0XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvTWFpblRo
cmVhZC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9NYWluVGhyZWFkLmgKaW5kZXggMWZj
MGUzMjY2N2FmNzk1NGQ1YmQ3ZjdlNDNmN2VlMzIxNzJlZmYwZS4uZmJhNDMyZWZkOTE0Mzk2NjU4
YmQ4MTJhNDgyYmVkNjRkMGJmMWMwOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9NYWluVGhyZWFkLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9NYWluVGhy
ZWFkLmgKQEAgLTQwLDE4ICs0MCwxOCBAQCB0eXBlZGVmIHVpbnQzMl90IFRocmVhZElkZW50aWZp
ZXI7CiB0eXBlZGVmIHZvaWQgTWFpblRocmVhZEZ1bmN0aW9uKHZvaWQqKTsKIAogLy8gTXVzdCBi
ZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCi12b2lkIGluaXRpYWxpemVNYWluVGhyZWFk
KCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbml0aWFsaXplTWFpblRocmVhZCgpOwogCi12
b2lkIGNhbGxPbk1haW5UaHJlYWQoTWFpblRocmVhZEZ1bmN0aW9uKiwgdm9pZCogY29udGV4dCk7
Ci12b2lkIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KE1haW5UaHJlYWRGdW5jdGlvbiosIHZvaWQq
IGNvbnRleHQpOwotdm9pZCBjYW5jZWxDYWxsT25NYWluVGhyZWFkKE1haW5UaHJlYWRGdW5jdGlv
biosIHZvaWQqIGNvbnRleHQpOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgY2FsbE9uTWFpblRo
cmVhZChNYWluVGhyZWFkRnVuY3Rpb24qLCB2b2lkKiBjb250ZXh0KTsKK1dURl9FWFBPUlRfUFJJ
VkFURSB2b2lkIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KE1haW5UaHJlYWRGdW5jdGlvbiosIHZv
aWQqIGNvbnRleHQpOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgY2FuY2VsQ2FsbE9uTWFpblRo
cmVhZChNYWluVGhyZWFkRnVuY3Rpb24qLCB2b2lkKiBjb250ZXh0KTsKIAotdm9pZCBzZXRNYWlu
VGhyZWFkQ2FsbGJhY2tzUGF1c2VkKGJvb2wgcGF1c2VkKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2
b2lkIHNldE1haW5UaHJlYWRDYWxsYmFja3NQYXVzZWQoYm9vbCBwYXVzZWQpOwogCi1ib29sIGlz
TWFpblRocmVhZCgpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNNYWluVGhyZWFkKCk7CiAj
aWYgRU5BQkxFKFBBUkFMTEVMX0dDKQogdm9pZCByZWdpc3RlckdDVGhyZWFkKCk7Ci1ib29sIGlz
TWFpblRocmVhZE9yR0NUaHJlYWQoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGlzTWFpblRo
cmVhZE9yR0NUaHJlYWQoKTsKICNlbGlmIFBMQVRGT1JNKE1BQykKIGJvb2wgaXNNYWluVGhyZWFk
T3JHQ1RocmVhZCgpOwogI2Vsc2UKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBkaXNwYXRjaEZ1bmN0
aW9uc0Zyb21NYWluVGhyZWFkKCk7CiAvLyBUaGlzIHZlcnNpb24gb2YgaW5pdGlhbGl6ZU1haW5U
aHJlYWQgc2V0cyB1cCB0aGUgbWFpbiB0aHJlYWQgYXMgY29ycmVzcG9uZGluZwogLy8gdG8gdGhl
IHByb2Nlc3MncyBtYWluIHRocmVhZCwgYW5kIG5vdCBuZWNlc3NhcmlseSB0aGUgdGhyZWFkIHRo
YXQgY2FsbHMgdGhpcwogLy8gZnVuY3Rpb24uIEl0IHNob3VsZCBvbmx5IGJlIHVzZWQgYXMgYSBs
ZWdhY3kgYWlkIGZvciBNYWMgV2ViS2l0Lgotdm9pZCBpbml0aWFsaXplTWFpblRocmVhZFRvUHJv
Y2Vzc01haW5UaHJlYWQoKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIGluaXRpYWxpemVNYWlu
VGhyZWFkVG9Qcm9jZXNzTWFpblRocmVhZCgpOwogdm9pZCBpbml0aWFsaXplTWFpblRocmVhZFRv
UHJvY2Vzc01haW5UaHJlYWRQbGF0Zm9ybSgpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvTWV0YUFsbG9jYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi9NZXRhQWxsb2NhdG9yLmgKaW5kZXggY2Y5NzFiNzIwNzdjNDgzMWE5ZDA0MzE4MDM2
ZGU2NjljZDVlNTA0Mi4uYTMzNzAzOTQ0YzBiZGUxOTk1ZjRlZjNjZjE1OGExODcxY2YzNmYwYiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9NZXRhQWxsb2NhdG9yLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9NZXRhQWxsb2NhdG9yLmgKQEAgLTQ3LDExICs0
NywxMSBAQCBjbGFzcyBNZXRhQWxsb2NhdG9yIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShN
ZXRhQWxsb2NhdG9yKTsKIHB1YmxpYzoKICAgICAKLSAgICBNZXRhQWxsb2NhdG9yKHNpemVfdCBh
bGxvY2F0aW9uR3JhbnVsZSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIE1ldGFBbGxvY2F0b3Io
c2l6ZV90IGFsbG9jYXRpb25HcmFudWxlKTsKICAgICAKICAgICB2aXJ0dWFsIH5NZXRhQWxsb2Nh
dG9yKCk7CiAgICAgCi0gICAgUGFzc1JlZlB0cjxNZXRhQWxsb2NhdG9ySGFuZGxlPiBhbGxvY2F0
ZShzaXplX3Qgc2l6ZUluQnl0ZXMpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBQYXNzUmVmUHRy
PE1ldGFBbGxvY2F0b3JIYW5kbGU+IGFsbG9jYXRlKHNpemVfdCBzaXplSW5CeXRlcyk7CiAgICAg
CiAgICAgLy8gTm9uLWF0b21pYyBtZXRob2RzIGZvciBnZXR0aW5nIGFsbG9jYXRvciBzdGF0aXN0
aWNzLgogICAgIHNpemVfdCBieXRlc0FsbG9jYXRlZCgpIHsgcmV0dXJuIG1fYnl0ZXNBbGxvY2F0
ZWQ7IH0KQEAgLTY5LDExICs2OSwxMSBAQCBwdWJsaWM6CiAgICAgLy8gQWRkIG1vcmUgZnJlZSBz
cGFjZSB0byB0aGUgYWxsb2NhdG9yLiBDYWxsIHRoaXMgZGlyZWN0bHkgZnJvbQogICAgIC8vIHRo
ZSBjb25zdHJ1Y3RvciBpZiB5b3Ugd2lzaCB0byBvcGVyYXRlIHRoZSBhbGxvY2F0b3Igd2l0aGlu
IGEKICAgICAvLyBmaXhlZCBwb29sLgotICAgIHZvaWQgYWRkRnJlc2hGcmVlU3BhY2Uodm9pZCog
c3RhcnQsIHNpemVfdCBzaXplSW5CeXRlcyk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQg
YWRkRnJlc2hGcmVlU3BhY2Uodm9pZCogc3RhcnQsIHNpemVfdCBzaXplSW5CeXRlcyk7CiAKICAg
ICAvLyBUaGlzIGlzIG1lYW50IG9ubHkgZm9yIGltcGxlbWVudGluZyB0ZXN0cy4gTmV2ZXIgY2Fs
bCB0aGlzIGluIHJlbGVhc2UKICAgICAvLyBidWlsZHMuCi0gICAgc2l6ZV90IGRlYnVnRnJlZVNw
YWNlU2l6ZSgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZGVidWdGcmVlU3BhY2VT
aXplKCk7CiAgICAgCiAjaWYgRU5BQkxFKE1FVEFfQUxMT0NBVE9SX1BST0ZJTEUpCiAgICAgdm9p
ZCBkdW1wUHJvZmlsZSgpOwpAQCAtMTI3LDcgKzEyNyw3IEBAIHByaXZhdGU6CiAgICAgc2l6ZV90
IHJvdW5kVXAoc2l6ZV90IHNpemVJbkJ5dGVzKTsKICAgICAKICAgICBGcmVlU3BhY2VOb2RlKiBh
bGxvY0ZyZWVTcGFjZU5vZGUoKTsKLSAgICB2b2lkIGZyZWVGcmVlU3BhY2VOb2RlKEZyZWVTcGFj
ZU5vZGUqKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBmcmVlRnJlZVNwYWNlTm9kZShG
cmVlU3BhY2VOb2RlKik7CiAgICAgCiAgICAgc2l6ZV90IG1fYWxsb2NhdGlvbkdyYW51bGU7CiAg
ICAgdW5zaWduZWQgbV9sb2dBbGxvY2F0aW9uR3JhbnVsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvTWV0YUFsbG9jYXRvckhhbmRsZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi9NZXRhQWxsb2NhdG9ySGFuZGxlLmgKaW5kZXggNWEzMjA4MWQ0ZjBmOGY2NDU1
MThjODEzMTk5NmU2YjAxMGFkOGNjMC4uOTMxMDk1MmIwNmYwMTk2YTlkYzZlNzMzOWRmN2UwYTFj
NjQ3MzY1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9NZXRhQWxsb2Nh
dG9ySGFuZGxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9NZXRhQWxsb2NhdG9y
SGFuZGxlLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKICAgICB9CiAgICAgCiBwdWJsaWM6
Ci0gICAgfk1ldGFBbGxvY2F0b3JIYW5kbGUoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgfk1l
dGFBbGxvY2F0b3JIYW5kbGUoKTsKICAgICAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZXRhQWxs
b2NhdG9ySGFuZGxlPiBjcmVhdGVTZWxmTWFuYWdlZEhhbmRsZSh2b2lkKiBzdGFydCwgc2l6ZV90
IHNpemVJbkJ5dGVzKQogICAgIHsKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gbV9zaXplSW5CeXRlczsKICAgICB9CiAgICAgICAgIAotICAgIHZvaWQgc2hyaW5rKHNp
emVfdCBuZXdTaXplSW5CeXRlcyk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2hyaW5r
KHNpemVfdCBuZXdTaXplSW5CeXRlcyk7CiAgICAgCiAgICAgYm9vbCBpc01hbmFnZWQoKQogICAg
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvT1NBbGxvY2F0b3IuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvT1NBbGxvY2F0b3IuaAppbmRleCBiZjlmMDQ5Njg3
MWY1Yzk1MDg2OGQzY2Y0NTRhYTM0OTg1MDAwZGM5Li5iZTc5MWE4YzhmZDA4YzMzYTZlNzJiZDc0
NmY3YWUzYmVhNTZjZTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL09T
QWxsb2NhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9PU0FsbG9jYXRvci5o
CkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICAvLyByZWxlYXNlRGVjb21taXR0ZWQgc2hv
dWxkIGJlIGNhbGxlZCBvbiBhIHJlZ2lvbiBvZiBWTSBhbGxvY2F0ZWQgYnkgYSBzaW5nbGUgcmVz
ZXJ2YXRpb24sCiAgICAgLy8gdGhlIG1lbW9yeSBtdXN0IGFsbCBjdXJyZW50bHkgYmUgaW4gYSBk
ZWNvbW1pdHRlZCBzdGF0ZS4KICAgICBzdGF0aWMgdm9pZCogcmVzZXJ2ZVVuY29tbWl0dGVkKHNp
emVfdCwgVXNhZ2UgPSBVbmtub3duVXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4
ZWN1dGFibGUgPSBmYWxzZSwgYm9vbCBpbmNsdWRlc0d1YXJkUGFnZXMgPSBmYWxzZSk7Ci0gICAg
c3RhdGljIHZvaWQgcmVsZWFzZURlY29tbWl0dGVkKHZvaWQqLCBzaXplX3QpOworICAgIFdURl9F
WFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCByZWxlYXNlRGVjb21taXR0ZWQodm9pZCosIHNpemVf
dCk7CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSBzeW1tZXRyaWM7IHRoZXkgY29tbWl0IG9y
IGRlY29tbWl0IGEgcmVnaW9uIG9mIFZNICh1bmNvbW1pdHRlZCBWTSBzaG91bGQKICAgICAvLyBu
ZXZlciBiZSBhY2Nlc3NlZCwgc2luY2UgdGhlIE9TIG1heSBub3QgaGF2ZSBhdHRhY2hlZCBwaHlz
aWNhbCBtZW1vcnkgZm9yIHRoZXNlIHJlZ2lvbnMpLgpAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6
CiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgc3ltbWV0cmljOyByZXNlcnZlQW5kQ29tbWl0IGFs
bG9jYXRlcyBWTSBpbiBhbiBjb21taXR0ZWQgc3RhdGUsCiAgICAgLy8gZGVjb21taXRBbmRSZWxl
YXNlIHNob3VsZCBiZSBjYWxsZWQgb24gYSByZWdpb24gb2YgVk0gYWxsb2NhdGVkIGJ5IGEgc2lu
Z2xlIHJlc2VydmF0aW9uLAogICAgIC8vIHRoZSBtZW1vcnkgbXVzdCBhbGwgY3VycmVudGx5IGJl
IGluIGEgY29tbWl0dGVkIHN0YXRlLgotICAgIHN0YXRpYyB2b2lkKiByZXNlcnZlQW5kQ29tbWl0
KHNpemVfdCwgVXNhZ2UgPSBVbmtub3duVXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29s
IGV4ZWN1dGFibGUgPSBmYWxzZSwgYm9vbCBpbmNsdWRlc0d1YXJkUGFnZXMgPSBmYWxzZSk7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkKiByZXNlcnZlQW5kQ29tbWl0KHNpemVf
dCwgVXNhZ2UgPSBVbmtub3duVXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4ZWN1
dGFibGUgPSBmYWxzZSwgYm9vbCBpbmNsdWRlc0d1YXJkUGFnZXMgPSBmYWxzZSk7CiAgICAgc3Rh
dGljIHZvaWQgZGVjb21taXRBbmRSZWxlYXNlKHZvaWQqIGJhc2UsIHNpemVfdCBzaXplKTsKIAog
ICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIGFraW4gdG8gcmVzZXJ2ZUFuZENvbW1pdC9kZWNvbW1p
dEFuZFJlbGVhc2UsIGFib3ZlIC0gaG93ZXZlciByYXRoZXIgdGhhbgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QYWdlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvUGFnZUJsb2NrLmgKaW5kZXggZTE3YzU0NjBhZGI0MjliZTEyYjJmOTIwMTIwMDBjODc4
YzAwNWExMy4uM2MzNDhhMGUzMWQzNDZiMDEzYjkzNzEzYmEyM2UzMDkxMjEzNmQzYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QYWdlQmxvY2suaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL1BhZ2VCbG9jay5oCkBAIC0yOCw3ICsyOCw3IEBACiAKIG5hbWVz
cGFjZSBXVEYgewogCi1zaXplX3QgcGFnZVNpemUoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBzaXpl
X3QgcGFnZVNpemUoKTsKIGlubGluZSBib29sIGlzUGFnZUFsaWduZWQodm9pZCogYWRkcmVzcykg
eyByZXR1cm4gIShyZWludGVycHJldF9jYXN0PGludHB0cl90PihhZGRyZXNzKSAmIChwYWdlU2l6
ZSgpIC0gMSkpOyB9CiBpbmxpbmUgYm9vbCBpc1BhZ2VBbGlnbmVkKHNpemVfdCBzaXplKSB7IHJl
dHVybiAhKHNpemUgJiAocGFnZVNpemUoKSAtIDEpKTsgfQogaW5saW5lIGJvb2wgaXNQb3dlck9m
VHdvKHNpemVfdCBzaXplKSB7IHJldHVybiAhKHNpemUgJiAoc2l6ZSAtIDEpKTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9SYW5kb21OdW1iZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvUmFuZG9tTnVtYmVyLmgKaW5kZXggZjJlN2U4ZjUwZjdlYmRlZDFi
M2I3NjVmMmQxYzdlZDExN2M3YTRmOC4uNzZiMjIzNTgyY2JiYTYxZTMwY2Q0ODQxMjU3MzNhNjEx
MDEwYzIzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9SYW5kb21OdW1i
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1JhbmRvbU51bWJlci5oCkBAIC0z
MCw3ICszMCw3IEBAIG5hbWVzcGFjZSBXVEYgewogCiAgICAgLy8gUmV0dXJucyBhIHBzZXVkby1y
YW5kb20gbnVtYmVyIGluIHRoZSByYW5nZSBbMCwgMSksIGF0dGVtcHRzIHRvIGJlCiAgICAgLy8g
Y3J5cHRvZ3JhcGhpY2FsbHkgc2VjdXJlIGlmIHBvc3NpYmxlIG9uIHRoZSB0YXJnZXQgcGxhdGZv
cm0KLSAgICBkb3VibGUgcmFuZG9tTnVtYmVyKCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGRv
dWJsZSByYW5kb21OdW1iZXIoKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaAppbmRleCAyMmM3NTA2YWMxOWE5YWI1YzQxNzdm
YWEwM2YxYTA5M2JlN2U5NTRkLi40NzZiMTczNWFkYjQxM2Y1MzU1ZDY3NGVlNGIxYTNjMjlhNmEz
ZDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1JlZkNvdW50ZWRMZWFr
Q291bnRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUmVmQ291bnRlZExlYWtD
b3VudGVyLmgKQEAgLTI3LDE0ICsyNywxNCBAQAogbmFtZXNwYWNlIFdURiB7CiAgICAgCiAgICAg
c3RydWN0IFJlZkNvdW50ZWRMZWFrQ291bnRlciB7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHN1cHBy
ZXNzTWVzc2FnZXMoY29uc3QgY2hhciopOwotICAgICAgICBzdGF0aWMgdm9pZCBjYW5jZWxNZXNz
YWdlU3VwcHJlc3Npb24oY29uc3QgY2hhciopOworICAgICAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIHZvaWQgc3VwcHJlc3NNZXNzYWdlcyhjb25zdCBjaGFyKik7CisgICAgICAgIFdURl9F
WFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBjYW5jZWxNZXNzYWdlU3VwcHJlc3Npb24oY29uc3Qg
Y2hhciopOwogICAgICAgICAKLSAgICAgICAgZXhwbGljaXQgUmVmQ291bnRlZExlYWtDb3VudGVy
KGNvbnN0IGNoYXIqIGRlc2NyaXB0aW9uKTsKLSAgICAgICAgflJlZkNvdW50ZWRMZWFrQ291bnRl
cigpOworICAgICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgZXhwbGljaXQgUmVmQ291bnRlZExlYWtD
b3VudGVyKGNvbnN0IGNoYXIqIGRlc2NyaXB0aW9uKTsKKyAgICAgICAgV1RGX0VYUE9SVF9QUklW
QVRFIH5SZWZDb3VudGVkTGVha0NvdW50ZXIoKTsKIAotICAgICAgICB2b2lkIGluY3JlbWVudCgp
OwotICAgICAgICB2b2lkIGRlY3JlbWVudCgpOworICAgICAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
dm9pZCBpbmNyZW1lbnQoKTsKKyAgICAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZGVjcmVt
ZW50KCk7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvU0hBMS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9T
SEExLmgKaW5kZXggZGFkNmRjODY3MDAzM2U1YzhhODBiZTI1OWUwNWMyNzExOWRjZTYxMi4uZThj
YzgwMmU5ZTZlMTZiMDk0YjYyMTdkNmY5ZjVhNzdkMTU1OWNmOSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9TSEExLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9TSEExLmgKQEAgLTM3LDE2ICszNywxNiBAQCBuYW1lc3BhY2UgV1RGIHsKIAogY2xhc3MgU0hB
MSB7CiBwdWJsaWM6Ci0gICAgU0hBMSgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTSEExKCk7
CiAKICAgICB2b2lkIGFkZEJ5dGVzKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaW5wdXQpCiAgICAg
ewogICAgICAgICBhZGRCeXRlcyhpbnB1dC5kYXRhKCksIGlucHV0LnNpemUoKSk7CiAgICAgfQot
ICAgIHZvaWQgYWRkQnl0ZXMoY29uc3QgdWludDhfdCogaW5wdXQsIHNpemVfdCBsZW5ndGgpOwor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFkZEJ5dGVzKGNvbnN0IHVpbnQ4X3QqIGlucHV0
LCBzaXplX3QgbGVuZ3RoKTsKIAogICAgIC8vIGNvbXB1dGVIYXNoIGhhcyBhIHNpZGUgZWZmZWN0
IG9mIHJlc2V0dGluZyB0aGUgc3RhdGUgb2YgdGhlIG9iamVjdC4KLSAgICB2b2lkIGNvbXB1dGVI
YXNoKFZlY3Rvcjx1aW50OF90LCAyMD4mKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBj
b21wdXRlSGFzaChWZWN0b3I8dWludDhfdCwgMjA+Jik7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBm
aW5hbGl6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRp
bmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmcuY3BwCmluZGV4IGYy
ZTA1NjVlOTk2MjU4Zjc4ODZlMDNhZDQ0Zjg5MGQyZDdiNmNlZWMuLmQ4ZGJiYWU0ZjU0NzY1ZDYx
ZTlmMjA4NmQzMDE3YzBhNGE1MTdhNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvVGhyZWFkaW5nLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVh
ZGluZy5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgVGhyZWFkSWRlbnRpZmllciBjcmVhdGVUaHJlYWQo
VGhyZWFkRnVuY3Rpb24gZW50cnlQb2ludCwgdm9pZCogZGF0YSwgY29uc3QgY2hhcioKIC8vIFRo
aXMgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZCBidXQgbmVlZHMgdG8gYmUga2VwdCBhcm91bmQgZm9y
IGJhY2t3YXJkCiAvLyBjb21wYXRpYmlsaXR5LiBVc2UgdGhlIDMtYXJndW1lbnQgdmVyc2lvbiBv
ZiBjcmVhdGVUaHJlYWQgYWJvdmUuCiAKLVRocmVhZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkKFRo
cmVhZEZ1bmN0aW9uIGVudHJ5UG9pbnQsIHZvaWQqIGRhdGEpOworV1RGX0VYUE9SVF9QUklWQVRF
IFRocmVhZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkKFRocmVhZEZ1bmN0aW9uIGVudHJ5UG9pbnQs
IHZvaWQqIGRhdGEpOwogCiBUaHJlYWRJZGVudGlmaWVyIGNyZWF0ZVRocmVhZChUaHJlYWRGdW5j
dGlvbiBlbnRyeVBvaW50LCB2b2lkKiBkYXRhKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhy
ZWFkaW5nLmgKaW5kZXggM2E4OTc1N2E5MTRhNzNiMjE3MjVjYzA4OThkMTAyYmRlOGJkN2U0Yy4u
MWRlZTVkYTFjYWY3YmFjZWE3ZGU2N2I1NTVlZDkxNTJiY2E4MmVjMSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL1RocmVhZGluZy5oCkBAIC04MywxMSArODMsMTEgQEAgdHlwZWRlZiB2b2lkKiAo
KlRocmVhZEZ1bmN0aW9uKSh2b2lkKiBhcmd1bWVudCk7CiAvLyBUaGlzIGZ1bmN0aW9uIG11c3Qg
YmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLiBJdCBpcyBzYWZlIHRvIGNhbGwgaXQgcmVw
ZWF0ZWRseS4KIC8vIERhcndpbiBpcyBhbiBleGNlcHRpb24gdG8gdGhpcyBydWxlOiBpdCBpcyBP
SyB0byBjYWxsIGl0IGZyb20gYW55IHRocmVhZCwgdGhlIG9ubHkgCiAvLyByZXF1aXJlbWVudCBp
cyB0aGF0IHRoZSBjYWxscyBhcmUgbm90IHJlZW50cmFudC4KLXZvaWQgaW5pdGlhbGl6ZVRocmVh
ZGluZygpOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZygpOwog
CiAvLyBSZXR1cm5zIDAgaWYgdGhyZWFkIGNyZWF0aW9uIGZhaWxlZC4KIC8vIFRoZSB0aHJlYWQg
bmFtZSBtdXN0IGJlIGEgbGl0ZXJhbCBzaW5jZSBvbiBzb21lIHBsYXRmb3JtcyBpdCdzIHBhc3Nl
ZCBpbiB0byB0aGUgdGhyZWFkLgotVGhyZWFkSWRlbnRpZmllciBjcmVhdGVUaHJlYWQoVGhyZWFk
RnVuY3Rpb24sIHZvaWQqLCBjb25zdCBjaGFyKiB0aHJlYWROYW1lKTsKK1dURl9FWFBPUlRfUFJJ
VkFURSBUaHJlYWRJZGVudGlmaWVyIGNyZWF0ZVRocmVhZChUaHJlYWRGdW5jdGlvbiwgdm9pZCos
IGNvbnN0IGNoYXIqIHRocmVhZE5hbWUpOwogCiAvLyBJbnRlcm5hbCBwbGF0Zm9ybS1zcGVjaWZp
YyBjcmVhdGVUaHJlYWQgaW1wbGVtZW50YXRpb24uCiBUaHJlYWRJZGVudGlmaWVyIGNyZWF0ZVRo
cmVhZEludGVybmFsKFRocmVhZEZ1bmN0aW9uLCB2b2lkKiwgY29uc3QgY2hhciogdGhyZWFkTmFt
ZSk7CkBAIC05NiwxNCArOTYsMTQgQEAgVGhyZWFkSWRlbnRpZmllciBjcmVhdGVUaHJlYWRJbnRl
cm5hbChUaHJlYWRGdW5jdGlvbiwgdm9pZCosIGNvbnN0IGNoYXIqIHRocmVhZE4KIC8vIEhlbHBm
dWwgZm9yIHBsYXRmb3JtcyB3aGVyZSB0aGUgdGhyZWFkIG5hbWUgbXVzdCBiZSBzZXQgZnJvbSB3
aXRoaW4gdGhlIHRocmVhZC4KIHZvaWQgaW5pdGlhbGl6ZUN1cnJlbnRUaHJlYWRJbnRlcm5hbChj
b25zdCBjaGFyKiB0aHJlYWROYW1lKTsKIAotVGhyZWFkSWRlbnRpZmllciBjdXJyZW50VGhyZWFk
KCk7Ci1pbnQgd2FpdEZvclRocmVhZENvbXBsZXRpb24oVGhyZWFkSWRlbnRpZmllciwgdm9pZCoq
KTsKLXZvaWQgZGV0YWNoVGhyZWFkKFRocmVhZElkZW50aWZpZXIpOworV1RGX0VYUE9SVF9QUklW
QVRFIFRocmVhZElkZW50aWZpZXIgY3VycmVudFRocmVhZCgpOworV1RGX0VYUE9SVF9QUklWQVRF
IGludCB3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbihUaHJlYWRJZGVudGlmaWVyLCB2b2lkKiopOwor
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZGV0YWNoVGhyZWFkKFRocmVhZElkZW50aWZpZXIpOwog
Ci12b2lkIHlpZWxkKCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCB5aWVsZCgpOwogCi12b2lk
IGxvY2tBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCgpOwotdm9pZCB1bmxvY2tBdG9t
aWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCgpOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQg
bG9ja0F0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpY011dGV4KCk7CitXVEZfRVhQT1JUX1BSSVZB
VEUgdm9pZCB1bmxvY2tBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCgpOwogCiB9IC8v
IG5hbWVzcGFjZSBXVEYKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9U
aHJlYWRpbmdQcmltaXRpdmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGlu
Z1ByaW1pdGl2ZXMuaAppbmRleCA5ZjI2M2FlNWM5ODVmNWFiYmUyOWMyNDdiYTA0ZGIwZTM3M2Ey
ZTIwLi44MmRjY2JkNTZhZDBlODdjZGFhZmRhY2I1NDFjYmVhNjJlMDQ4MTNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaApAQCAtOTQsMTIg
Kzk0LDEyIEBAIHR5cGVkZWYgdm9pZCogUGxhdGZvcm1Db25kaXRpb247CiBjbGFzcyBNdXRleCB7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTXV0ZXgpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKLSAgICBNdXRleCgpOwotICAgIH5NdXRleCgpOworICAgIFdURl9FWFBPUlRf
UFJJVkFURSBNdXRleCgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB+TXV0ZXgoKTsKIAotICAg
IHZvaWQgbG9jaygpOwotICAgIGJvb2wgdHJ5TG9jaygpOwotICAgIHZvaWQgdW5sb2NrKCk7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgbG9jaygpOworICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBib29sIHRyeUxvY2soKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCB1bmxvY2soKTsK
IAogcHVibGljOgogICAgIFBsYXRmb3JtTXV0ZXgmIGltcGwoKSB7IHJldHVybiBtX211dGV4OyB9
CkBAIC0xMzAsMTUgKzEzMCwxNSBAQCBwcml2YXRlOgogY2xhc3MgVGhyZWFkQ29uZGl0aW9uIHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUaHJlYWRDb25kaXRpb24pOwogcHVibGljOgotICAg
IFRocmVhZENvbmRpdGlvbigpOwotICAgIH5UaHJlYWRDb25kaXRpb24oKTsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgVGhyZWFkQ29uZGl0aW9uKCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIH5U
aHJlYWRDb25kaXRpb24oKTsKICAgICAKLSAgICB2b2lkIHdhaXQoTXV0ZXgmIG11dGV4KTsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCB3YWl0KE11dGV4JiBtdXRleCk7CiAgICAgLy8gUmV0
dXJucyB0cnVlIGlmIHRoZSBjb25kaXRpb24gd2FzIHNpZ25hbGVkIGJlZm9yZSBhYnNvbHV0ZVRp
bWUsIGZhbHNlIGlmIHRoZSBhYnNvbHV0ZVRpbWUgd2FzIHJlYWNoZWQgb3IgaXMgaW4gdGhlIHBh
c3QuCiAgICAgLy8gVGhlIGFic29sdXRlVGltZSBpcyBpbiBzZWNvbmRzLCBzdGFydGluZyBvbiBK
YW51YXJ5IDEsIDE5NzAuIFRoZSB0aW1lIGlzIGFzc3VtZWQgdG8gdXNlIHRoZSBzYW1lIHRpbWUg
em9uZSBhcyBXVEY6OmN1cnJlbnRUaW1lKCkuCi0gICAgYm9vbCB0aW1lZFdhaXQoTXV0ZXgmLCBk
b3VibGUgYWJzb2x1dGVUaW1lKTsKLSAgICB2b2lkIHNpZ25hbCgpOwotICAgIHZvaWQgYnJvYWRj
YXN0KCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgdGltZWRXYWl0KE11dGV4JiwgZG91
YmxlIGFic29sdXRlVGltZSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2lnbmFsKCk7
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYnJvYWRjYXN0KCk7CiAgICAgCiBwcml2YXRl
OgogICAgIFBsYXRmb3JtQ29uZGl0aW9uIG1fY29uZGl0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9XVEZUaHJlYWREYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL1dURlRocmVhZERhdGEuaAppbmRleCA0ZDAzZTE4NDY5NjYzYTk1YmQwZmRiMTY1YTVi
MWI0MDc2NWM4YmMxLi43ZGVjZDQxZDRjYzM4YzFhZDFmMjJlYTFmYTkyMWYyZGZkNzA5OWYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1dURlRocmVhZERhdGEuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1dURlRocmVhZERhdGEuaApAQCAtNzgsOCArNzgs
OCBAQCB0eXBlZGVmIHZvaWQgKCpBdG9taWNTdHJpbmdUYWJsZURlc3RydWN0b3IpKEF0b21pY1N0
cmluZ1RhYmxlKik7CiBjbGFzcyBXVEZUaHJlYWREYXRhIHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShXVEZUaHJlYWREYXRhKTsKIHB1YmxpYzoKLSAgICBXVEZUaHJlYWREYXRhKCk7Ci0gICAg
fldURlRocmVhZERhdGEoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV1RGVGhyZWFkRGF0YSgp
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSB+V1RGVGhyZWFkRGF0YSgpOwogCiAgICAgQXRvbWlj
U3RyaW5nVGFibGUqIGF0b21pY1N0cmluZ1RhYmxlKCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL2R0b2EuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
ZHRvYS5oCmluZGV4IDcxOTkxMjExMTFkOTNlZGU5MDFiY2E3OGVjMTJmYmMyMzNhYWEyM2MuLjFi
NzNjZjllZWFiZjZhZWRmZGRlNTUyYjI2OTZiZjNhZmExNDlhYWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvZHRvYS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvZHRvYS5oCkBAIC0zMSwxOSArMzEsMTkgQEAgZXh0ZXJuIFdURjo6TXV0ZXgqIHNfZHRvYVA1
TXV0ZXg7CiAKIHR5cGVkZWYgY2hhciBEdG9hQnVmZmVyWzgwXTsKIAotdm9pZCBkdG9hKER0b2FC
dWZmZXIgcmVzdWx0LCBkb3VibGUgZGQsIGJvb2wmIHNpZ24sIGludCYgZXhwb25lbnQsIHVuc2ln
bmVkJiBwcmVjaXNpb24pOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZHRvYShEdG9hQnVmZmVy
IHJlc3VsdCwgZG91YmxlIGRkLCBib29sJiBzaWduLCBpbnQmIGV4cG9uZW50LCB1bnNpZ25lZCYg
cHJlY2lzaW9uKTsKIHZvaWQgZHRvYVJvdW5kU0YoRHRvYUJ1ZmZlciByZXN1bHQsIGRvdWJsZSBk
ZCwgaW50IG5kaWdpdHMsIGJvb2wmIHNpZ24sIGludCYgZXhwb25lbnQsIHVuc2lnbmVkJiBwcmVj
aXNpb24pOwogdm9pZCBkdG9hUm91bmREUChEdG9hQnVmZmVyIHJlc3VsdCwgZG91YmxlIGRkLCBp
bnQgbmRpZ2l0cywgYm9vbCYgc2lnbiwgaW50JiBleHBvbmVudCwgdW5zaWduZWQmIHByZWNpc2lv
bik7CiAKIC8vIHMwMDogaW5wdXQgc3RyaW5nLiBNdXN0IG5vdCBiZSAwIGFuZCBtdXN0IGJlIHRl
cm1pbmF0ZWQgYnkgMC4KIC8vIHNlOiAqc2Ugd2lsbCBoYXZlIHRoZSBsYXN0IGNvbnN1bWVkIGNo
YXJhY3RlciBwb3NpdGlvbiArIDEuCi1kb3VibGUgc3RydG9kKGNvbnN0IGNoYXIqIHMwMCwgY2hh
cioqIHNlKTsKK1dURl9FWFBPUlRfUFJJVkFURSBkb3VibGUgc3RydG9kKGNvbnN0IGNoYXIqIHMw
MCwgY2hhcioqIHNlKTsKIAogLy8gU2l6ZSA9IDgwIGZvciBzaXplb2YoRHRvYUJ1ZmZlcikgKyBz
b21lIHNpZ24gYml0cywgZGVjaW1hbCBwb2ludCwgJ2UnLCBleHBvbmVudCBkaWdpdHMuCiBjb25z
dCB1bnNpZ25lZCBOdW1iZXJUb1N0cmluZ0J1ZmZlckxlbmd0aCA9IDk2OwogdHlwZWRlZiBjaGFy
IE51bWJlclRvU3RyaW5nQnVmZmVyW051bWJlclRvU3RyaW5nQnVmZmVyTGVuZ3RoXTsKIHR5cGVk
ZWYgVUNoYXIgTnVtYmVyVG9VU3RyaW5nQnVmZmVyW051bWJlclRvU3RyaW5nQnVmZmVyTGVuZ3Ro
XTsKLWNvbnN0IGNoYXIgKm51bWJlclRvU3RyaW5nKGRvdWJsZSwgTnVtYmVyVG9TdHJpbmdCdWZm
ZXIpOworV1RGX0VYUE9SVF9QUklWQVRFIGNvbnN0IGNoYXIgKm51bWJlclRvU3RyaW5nKGRvdWJs
ZSwgTnVtYmVyVG9TdHJpbmdCdWZmZXIpOwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oCmluZGV4IDcyYzhjZjRh
MjE0NDgwYmRmNmIzM2Q5N2MzZDA2NjBmNGMwMjU3ODQuLmZiOWUyMDQzYTRmMTQ1ZDZlY2FlOGU0
ZmNkZDdhNDExYmUxNWFlYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
dGV4dC9BdG9taWNTdHJpbmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQv
QXRvbWljU3RyaW5nLmgKQEAgLTM4LDcgKzM4LDcgQEAgc3RydWN0IEF0b21pY1N0cmluZ0hhc2g7
CiAKIGNsYXNzIEF0b21pY1N0cmluZyB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgaW5pdCgp
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBpbml0KCk7CiAKICAgICBBdG9t
aWNTdHJpbmcoKSB7IH0KICAgICBBdG9taWNTdHJpbmcoY29uc3QgTENoYXIqIHMpIDogbV9zdHJp
bmcoYWRkKHMpKSB7IH0KQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIEF0b21pY1N0cmlu
ZyhXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpIDogbV9zdHJpbmcoV1RGOjpIYXNoVGFi
bGVEZWxldGVkVmFsdWUpIHsgfQogICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBj
b25zdCB7IHJldHVybiBtX3N0cmluZy5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9CiAKLSAg
ICBzdGF0aWMgQXRvbWljU3RyaW5nSW1wbCogZmluZChjb25zdCBVQ2hhciogcywgdW5zaWduZWQg
bGVuZ3RoLCB1bnNpZ25lZCBleGlzdGluZ0hhc2gpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBz
dGF0aWMgQXRvbWljU3RyaW5nSW1wbCogZmluZChjb25zdCBVQ2hhciogcywgdW5zaWduZWQgbGVu
Z3RoLCB1bnNpZ25lZCBleGlzdGluZ0hhc2gpOwogCiAgICAgb3BlcmF0b3IgY29uc3QgU3RyaW5n
JigpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9CiAgICAgY29uc3QgU3RyaW5nJiBzdHJpbmco
KSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfTsKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgog
ICAgIGJvb2wgZW5kc1dpdGgoY29uc3QgU3RyaW5nJiBzLCBib29sIGNhc2VTZW5zaXRpdmUgPSB0
cnVlKSBjb25zdAogICAgICAgICB7IHJldHVybiBtX3N0cmluZy5lbmRzV2l0aChzLCBjYXNlU2Vu
c2l0aXZlKTsgfQogICAgIAotICAgIEF0b21pY1N0cmluZyBsb3dlcigpIGNvbnN0OworICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBBdG9taWNTdHJpbmcgbG93ZXIoKSBjb25zdDsKICAgICBBdG9taWNT
dHJpbmcgdXBwZXIoKSBjb25zdCB7IHJldHVybiBBdG9taWNTdHJpbmcoaW1wbCgpLT51cHBlcigp
KTsgfQogICAgIAogICAgIGludCB0b0ludChib29sKiBvayA9IDApIGNvbnN0IHsgcmV0dXJuIG1f
c3RyaW5nLnRvSW50KG9rKTsgfQpAQCAtMTIwLDIwICsxMjAsMjAgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBTdHJpbmcgbV9zdHJpbmc7CiAgICAgCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3Ry
aW5nSW1wbD4gYWRkKGNvbnN0IExDaGFyKik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChjb25zdCBMQ2hhciopOwogICAgIEFMV0FZU19J
TkxJTkUgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkKGNvbnN0IGNoYXIqIHMpIHsg
cmV0dXJuIGFkZChyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4ocykpOyB9OwotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxl
bmd0aCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0lt
cGw+IGFkZChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgQUxXQVlTX0lOTElO
RSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGQoY29uc3QgY2hhciogcywgdW5zaWdu
ZWQgbGVuZ3RoKSB7IHJldHVybiBhZGQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4ocyks
IGxlbmd0aCk7IH07Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkKGNvbnN0
IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBleGlzdGluZ0hhc2gpOwotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChjb25zdCBVQ2hhciopOworICAgIFdURl9F
WFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGQoY29uc3QgVUNo
YXIqLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIGV4aXN0aW5nSGFzaCk7CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChjb25zdCBVQ2hh
ciopOwogICAgIEFMV0FZU19JTkxJTkUgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGQoU3RyaW5n
SW1wbCogcikKICAgICB7CiAgICAgICAgIGlmICghciB8fCByLT5pc0F0b21pYygpKQogICAgICAg
ICAgICAgcmV0dXJuIHI7CiAgICAgICAgIHJldHVybiBhZGRTbG93Q2FzZShyKTsKICAgICB9Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkU2xvd0Nhc2UoU3RyaW5nSW1wbCop
OwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgZnJvbVVURjhJbnRlcm5hbChjb25zdCBjaGFyKiwg
Y29uc3QgY2hhciopOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxT
dHJpbmdJbXBsPiBhZGRTbG93Q2FzZShTdHJpbmdJbXBsKik7CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBBdG9taWNTdHJpbmcgZnJvbVVURjhJbnRlcm5hbChjb25zdCBjaGFyKiwgY29u
c3QgY2hhciopOwogfTsKIAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBdG9taWNTdHJp
bmcmIGEsIGNvbnN0IEF0b21pY1N0cmluZyYgYikgeyByZXR1cm4gYS5pbXBsKCkgPT0gYi5pbXBs
KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9DU3RyaW5n
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvQ1N0cmluZy5oCmluZGV4IDM0M2E3
YTUyNTIwNzQxZTJhZGNkYmQ4MTBlM2U5OTk1YTM4MGQ0NjQuLmQ0M2FkNGJkN2Q3MDFmMmMzNzFi
NzU5ODQzODQ4Y2FjZmZiZTM4ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvdGV4dC9DU3RyaW5nLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0NT
dHJpbmcuaApAQCAtNTIsMTYgKzUyLDE2IEBAIHByaXZhdGU6CiBjbGFzcyBDU3RyaW5nIHsKIHB1
YmxpYzoKICAgICBDU3RyaW5nKCkgeyB9Ci0gICAgQ1N0cmluZyhjb25zdCBjaGFyKik7Ci0gICAg
Q1N0cmluZyhjb25zdCBjaGFyKiwgc2l6ZV90IGxlbmd0aCk7CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIENTdHJpbmcoY29uc3QgY2hhciopOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBDU3RyaW5n
KGNvbnN0IGNoYXIqLCBzaXplX3QgbGVuZ3RoKTsKICAgICBDU3RyaW5nKENTdHJpbmdCdWZmZXIq
IGJ1ZmZlcikgOiBtX2J1ZmZlcihidWZmZXIpIHsgfQotICAgIHN0YXRpYyBDU3RyaW5nIG5ld1Vu
aW5pdGlhbGl6ZWQoc2l6ZV90IGxlbmd0aCwgY2hhciomIGNoYXJhY3RlckJ1ZmZlcik7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBDU3RyaW5nIG5ld1VuaW5pdGlhbGl6ZWQoc2l6ZV90
IGxlbmd0aCwgY2hhciomIGNoYXJhY3RlckJ1ZmZlcik7CiAKICAgICBjb25zdCBjaGFyKiBkYXRh
KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5kYXRh
KCkgOiAwOwogICAgIH0KLSAgICBjaGFyKiBtdXRhYmxlRGF0YSgpOworICAgIFdURl9FWFBPUlRf
UFJJVkFURSBjaGFyKiBtdXRhYmxlRGF0YSgpOwogICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdAog
ICAgIHsKICAgICAgICAgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmxlbmd0aCgpIC0gMSA6
IDA7CkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPENTdHJpbmdCdWZmZXI+
IG1fYnVmZmVyOwogfTsKIAotYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTdHJpbmcmIGEsIGNvbnN0
IENTdHJpbmcmIGIpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgb3BlcmF0b3I9PShjb25zdCBD
U3RyaW5nJiBhLCBjb25zdCBDU3RyaW5nJiBiKTsKIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29u
c3QgQ1N0cmluZyYgYSwgY29uc3QgQ1N0cmluZyYgYikgeyByZXR1cm4gIShhID09IGIpOyB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmgKaW5kZXggNzkwMmQ1MTJmNDM5NDNkYWI1YWE5YWJkMWViNTVkZTY1Mjli
NDViMS4uNWNjNDI5YzcyMzQyZTJiMjNhZTBlN2Y1ZGM0NjUzNTU0NzFkMzBmMyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oCkBAIC0zOCw4ICsz
OCw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBhcHBlbmQoY29uc3QgVUNo
YXIqLCB1bnNpZ25lZCk7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgTENoYXIqLCB1bnNpZ25lZCk7
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYXBwZW5kKGNvbnN0IFVDaGFyKiwgdW5zaWdu
ZWQpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZChjb25zdCBMQ2hhciosIHVu
c2lnbmVkKTsKIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogY2hh
cmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKSB7IGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0
IExDaGFyKj4oY2hhcmFjdGVycyksIGxlbmd0aCk7IH0KIApAQCAtMTAxLDExICsxMDEsMTEgQEAg
cHVibGljOgogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIWxlbmd0aCgpOyB9
CiAKLSAgICB2b2lkIHJlc2VydmVDYXBhY2l0eSh1bnNpZ25lZCBuZXdDYXBhY2l0eSk7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVzZXJ2ZUNhcGFjaXR5KHVuc2lnbmVkIG5ld0NhcGFj
aXR5KTsKIAotICAgIHZvaWQgcmVzaXplKHVuc2lnbmVkIG5ld1NpemUpOworICAgIFdURl9FWFBP
UlRfUFJJVkFURSB2b2lkIHJlc2l6ZSh1bnNpZ25lZCBuZXdTaXplKTsKIAotICAgIHZvaWQgc2hy
aW5rVG9GaXQoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzaHJpbmtUb0ZpdCgpOwog
CiAgICAgVUNoYXIgb3BlcmF0b3JbXSh1bnNpZ25lZCBpKSBjb25zdAogICAgIHsKQEAgLTEzNCw3
ICsxMzQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgYWxsb2NhdGVCdWZmZXIoY29uc3QgVUNoYXIq
IGN1cnJlbnRDaGFyYWN0ZXJzLCB1bnNpZ25lZCByZXF1aXJlZExlbmd0aCk7CiAgICAgdm9pZCBy
ZWFsbG9jYXRlQnVmZmVyKHVuc2lnbmVkIHJlcXVpcmVkTGVuZ3RoKTsKICAgICBVQ2hhciogYXBw
ZW5kVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgpOwotICAgIHZvaWQgcmVpZnlTdHJpbmco
KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZWlmeVN0cmluZygpOwogCiAgICAgdW5z
aWduZWQgbV9sZW5ndGg7CiAgICAgU3RyaW5nIG1fc3RyaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgKaW5kZXggZTA3YTUwMDYxOWJkZjI1MzEzZTA1NjA1
MDM5M2U1OTFkYjAzYTAwMi4uMzUwMWViOTUxYjcyZGM5Nzk3N2NjNzdlMjk0MGVjOTUxNDY1Njdi
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCkBAIC0x
OTEsMTIgKzE5MSwxMiBAQCBwcml2YXRlOgogICAgIH0KIAogcHVibGljOgotICAgIH5TdHJpbmdJ
bXBsKCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIH5TdHJpbmdJbXBsKCk7CiAKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBs
ZW5ndGgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJ
bXBsPiBjcmVhdGUoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZShjb25zdCBMQ2hhciosIHVuc2lnbmVkIGxlbmd0
aCk7CiAgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBjcmVh
dGUoY29uc3QgY2hhciogcywgdW5zaWduZWQgbGVuZ3RoKSB7IHJldHVybiBjcmVhdGUocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHMpLCBsZW5ndGgpOyB9Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRlKGNvbnN0IExDaGFyKik7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZShjb25zdCBMQ2hhciop
OwogICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRl
KGNvbnN0IGNoYXIqIHMpIHsgcmV0dXJuIGNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IExD
aGFyKj4ocykpOyB9CiAKICAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBQYXNzUmVmUHRyPFN0cmlu
Z0ltcGw+IGNyZWF0ZTgoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXAsIHVuc2lnbmVkIG9mZnNl
dCwgdW5zaWduZWQgbGVuZ3RoKQpAQCAtMjI3LDcgKzIyNyw3IEBAIHB1YmxpYzoKICAgICB9CiAK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBjcmVhdGVVbmluaXRpYWxpemVkKHVu
c2lnbmVkIGxlbmd0aCwgTENoYXIqJiBkYXRhKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJp
bmdJbXBsPiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIqJiBkYXRh
KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4g
Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgsIFVDaGFyKiYgZGF0YSk7CiAgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBBTFdBWVNfSU5MSU5FIFBhc3NSZWZQdHI8U3Ry
aW5nSW1wbD4gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgsIFQqJiBvdXRw
dXQpCiAgICAgewogICAgICAgICBpZiAoIWxlbmd0aCkgewpAQCAtMjc2LDcgKzI3Niw3IEBAIHB1
YmxpYzoKICAgICB9CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZG9wdChT
dHJpbmdCdWZmZXI8TENoYXI+JiBidWZmZXIpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmlu
Z0ltcGw+IGFkb3B0KFN0cmluZ0J1ZmZlcjxVQ2hhcj4mIGJ1ZmZlcik7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkb3B0KFN0cmluZ0J1ZmZl
cjxVQ2hhcj4mIGJ1ZmZlcik7CiAKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVy
biBtX2xlbmd0aDsgfQogICAgIGJvb2wgaXM4Qml0KCkgY29uc3QgeyByZXR1cm4gbV9oYXNoQW5k
RmxhZ3MgJiBzX2hhc2hGbGFnOEJpdEJ1ZmZlcjsgfQpAQCAtMzk3LDcgKzM5Nyw3IEBAIHB1Ymxp
YzoKICAgICAgICAgbV9yZWZDb3VudCAtPSBzX3JlZkNvdW50SW5jcmVtZW50OwogICAgIH0KIAot
ICAgIHN0YXRpYyBTdHJpbmdJbXBsKiBlbXB0eSgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBz
dGF0aWMgU3RyaW5nSW1wbCogZW1wdHkoKTsKIAogICAgIC8vIEZJWE1FOiBEb2VzIHRoaXMgcmVh
bGx5IGJlbG9uZyBpbiBTdHJpbmdJbXBsPwogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0
aWMgdm9pZCBjb3B5Q2hhcnMoVCogZGVzdGluYXRpb24sIGNvbnN0IFQqIHNvdXJjZSwgdW5zaWdu
ZWQgbnVtQ2hhcmFjdGVycykKQEAgLTQzMiw3ICs0MzIsNyBAQCBwdWJsaWM6CiAgICAgLy8gaXRz
IG93biBjb3B5IG9mIHRoZSBzdHJpbmcuCiAgICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBpc29s
YXRlZENvcHkoKSBjb25zdDsKIAotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gc3Vic3RyaW5n
KHVuc2lnbmVkIHBvcywgdW5zaWduZWQgbGVuID0gVUlOVF9NQVgpOworICAgIFdURl9FWFBPUlRf
UFJJVkFURSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHN1YnN0cmluZyh1bnNpZ25lZCBwb3MsIHVu
c2lnbmVkIGxlbiA9IFVJTlRfTUFYKTsKIAogICAgIFVDaGFyIG9wZXJhdG9yW10odW5zaWduZWQg
aSkgY29uc3QKICAgICB7CkBAIC00NDEsOSArNDQxLDkgQEAgcHVibGljOgogICAgICAgICAgICAg
cmV0dXJuIG1fZGF0YThbaV07CiAgICAgICAgIHJldHVybiBtX2RhdGExNltpXTsKICAgICB9Ci0g
ICAgVUNoYXIzMiBjaGFyYWN0ZXJTdGFydGluZ0F0KHVuc2lnbmVkKTsKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgVUNoYXIzMiBjaGFyYWN0ZXJTdGFydGluZ0F0KHVuc2lnbmVkKTsKIAotICAgIGJv
b2wgY29udGFpbnNPbmx5V2hpdGVzcGFjZSgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29s
IGNvbnRhaW5zT25seVdoaXRlc3BhY2UoKTsKIAogICAgIGludCB0b0ludFN0cmljdChib29sKiBv
ayA9IDAsIGludCBiYXNlID0gMTApOwogICAgIHVuc2lnbmVkIHRvVUludFN0cmljdChib29sKiBv
ayA9IDAsIGludCBiYXNlID0gMTApOwpAQCAtNDUxLDcgKzQ1MSw3IEBAIHB1YmxpYzoKICAgICB1
aW50NjRfdCB0b1VJbnQ2NFN0cmljdChib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApOwogICAg
IGludHB0cl90IHRvSW50UHRyU3RyaWN0KGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCk7CiAK
LSAgICBpbnQgdG9JbnQoYm9vbCogb2sgPSAwKTsgLy8gaWdub3JlcyB0cmFpbGluZyBnYXJiYWdl
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGludCB0b0ludChib29sKiBvayA9IDApOyAvLyBpZ25v
cmVzIHRyYWlsaW5nIGdhcmJhZ2UKICAgICB1bnNpZ25lZCB0b1VJbnQoYm9vbCogb2sgPSAwKTsg
Ly8gaWdub3JlcyB0cmFpbGluZyBnYXJiYWdlCiAgICAgaW50NjRfdCB0b0ludDY0KGJvb2wqIG9r
ID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQogICAgIHVpbnQ2NF90IHRvVUludDY0
KGJvb2wqIG9rID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQpAQCAtNDYwLDQ0ICs0
NjAsNDQgQEAgcHVibGljOgogICAgIGRvdWJsZSB0b0RvdWJsZShib29sKiBvayA9IDAsIGJvb2wq
IGRpZFJlYWROdW1iZXIgPSAwKTsKICAgICBmbG9hdCB0b0Zsb2F0KGJvb2wqIG9rID0gMCwgYm9v
bCogZGlkUmVhZE51bWJlciA9IDApOwogCi0gICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBsb3dl
cigpOwotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdXBwZXIoKTsKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBsb3dlcigpOworICAgIFdURl9FWFBPUlRf
UFJJVkFURSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHVwcGVyKCk7CiAKLSAgICBQYXNzUmVmUHRy
PFN0cmluZ0ltcGw+IGZpbGwoVUNoYXIpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBQYXNzUmVm
UHRyPFN0cmluZ0ltcGw+IGZpbGwoVUNoYXIpOwogICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIGZp
bGwoY2hhcikgb3IgY2FuIHdlIGp1c3QgZG8gdGhlIHJpZ2h0IHRoaW5nIGlmIFVDaGFyIGlzIEFT
Q0lJPwogICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gZm9sZENhc2UoKTsKIAogICAgIFBhc3NS
ZWZQdHI8U3RyaW5nSW1wbD4gc3RyaXBXaGl0ZVNwYWNlKCk7CiAgICAgUGFzc1JlZlB0cjxTdHJp
bmdJbXBsPiBzdHJpcFdoaXRlU3BhY2UoSXNXaGl0ZVNwYWNlRnVuY3Rpb25QdHIpOwotICAgIFBh
c3NSZWZQdHI8U3RyaW5nSW1wbD4gc2ltcGxpZnlXaGl0ZVNwYWNlKCk7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gc2ltcGxpZnlXaGl0ZVNwYWNlKCk7CiAg
ICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBzaW1wbGlmeVdoaXRlU3BhY2UoSXNXaGl0ZVNwYWNl
RnVuY3Rpb25QdHIpOwogCiAgICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZW1vdmVDaGFyYWN0
ZXJzKENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIpOwogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBD
aGFyVHlwZT4KICAgICBBTFdBWVNfSU5MSU5FIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVtb3Zl
Q2hhcmFjdGVycyhjb25zdCBDaGFyVHlwZSogY2hhcmFjdGVycywgQ2hhcmFjdGVyTWF0Y2hGdW5j
dGlvblB0cik7CiAKLSAgICBzaXplX3QgZmluZChVQ2hhciwgdW5zaWduZWQgaW5kZXggPSAwKTsK
LSAgICBzaXplX3QgZmluZChDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRyLCB1bnNpZ25lZCBpbmRl
eCA9IDApOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmluZChVQ2hhciwgdW5zaWdu
ZWQgaW5kZXggPSAwKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmQoQ2hhcmFj
dGVyTWF0Y2hGdW5jdGlvblB0ciwgdW5zaWduZWQgaW5kZXggPSAwKTsKICAgICBzaXplX3QgZmlu
ZChjb25zdCBMQ2hhciosIHVuc2lnbmVkIGluZGV4ID0gMCk7CiAgICAgQUxXQVlTX0lOTElORSBz
aXplX3QgZmluZChjb25zdCBjaGFyKiBzLCB1bnNpZ25lZCBpbmRleCA9IDApIHsgcmV0dXJuIGZp
bmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHMpLCBpbmRleCk7IH07Ci0gICAgc2l6
ZV90IGZpbmQoU3RyaW5nSW1wbCosIHVuc2lnbmVkIGluZGV4ID0gMCk7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHNpemVfdCBmaW5kKFN0cmluZ0ltcGwqLCB1bnNpZ25lZCBpbmRleCA9IDApOwog
ICAgIHNpemVfdCBmaW5kSWdub3JpbmdDYXNlKGNvbnN0IExDaGFyKiwgdW5zaWduZWQgaW5kZXgg
PSAwKTsKICAgICBBTFdBWVNfSU5MSU5FIHNpemVfdCBmaW5kSWdub3JpbmdDYXNlKGNvbnN0IGNo
YXIqIHMsIHVuc2lnbmVkIGluZGV4ID0gMCkgeyByZXR1cm4gZmluZElnbm9yaW5nQ2FzZShyZWlu
dGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4ocyksIGluZGV4KTsgfTsKLSAgICBzaXplX3QgZmlu
ZElnbm9yaW5nQ2FzZShTdHJpbmdJbXBsKiwgdW5zaWduZWQgaW5kZXggPSAwKTsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmRJZ25vcmluZ0Nhc2UoU3RyaW5nSW1wbCosIHVuc2ln
bmVkIGluZGV4ID0gMCk7CiAKLSAgICBzaXplX3QgcmV2ZXJzZUZpbmQoVUNoYXIsIHVuc2lnbmVk
IGluZGV4ID0gVUlOVF9NQVgpOwotICAgIHNpemVfdCByZXZlcnNlRmluZChTdHJpbmdJbXBsKiwg
dW5zaWduZWQgaW5kZXggPSBVSU5UX01BWCk7Ci0gICAgc2l6ZV90IHJldmVyc2VGaW5kSWdub3Jp
bmdDYXNlKFN0cmluZ0ltcGwqLCB1bnNpZ25lZCBpbmRleCA9IFVJTlRfTUFYKTsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgc2l6ZV90IHJldmVyc2VGaW5kKFVDaGFyLCB1bnNpZ25lZCBpbmRleCA9
IFVJTlRfTUFYKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IHJldmVyc2VGaW5kKFN0
cmluZ0ltcGwqLCB1bnNpZ25lZCBpbmRleCA9IFVJTlRfTUFYKTsKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgc2l6ZV90IHJldmVyc2VGaW5kSWdub3JpbmdDYXNlKFN0cmluZ0ltcGwqLCB1bnNpZ25l
ZCBpbmRleCA9IFVJTlRfTUFYKTsKIAogICAgIGJvb2wgc3RhcnRzV2l0aChTdHJpbmdJbXBsKiBz
dHIsIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUpIHsgcmV0dXJuIChjYXNlU2Vuc2l0aXZlID8g
cmV2ZXJzZUZpbmQoc3RyLCAwKSA6IHJldmVyc2VGaW5kSWdub3JpbmdDYXNlKHN0ciwgMCkpID09
IDA7IH0KLSAgICBib29sIGVuZHNXaXRoKFN0cmluZ0ltcGwqLCBib29sIGNhc2VTZW5zaXRpdmUg
PSB0cnVlKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlbmRzV2l0aChTdHJpbmdJbXBs
KiwgYm9vbCBjYXNlU2Vuc2l0aXZlID0gdHJ1ZSk7CiAKLSAgICBQYXNzUmVmUHRyPFN0cmluZ0lt
cGw+IHJlcGxhY2UoVUNoYXIsIFVDaGFyKTsKLSAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJl
cGxhY2UoVUNoYXIsIFN0cmluZ0ltcGwqKTsKLSAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJl
cGxhY2UoU3RyaW5nSW1wbCosIFN0cmluZ0ltcGwqKTsKLSAgICBQYXNzUmVmUHRyPFN0cmluZ0lt
cGw+IHJlcGxhY2UodW5zaWduZWQgaW5kZXgsIHVuc2lnbmVkIGxlbiwgU3RyaW5nSW1wbCopOwor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlcGxhY2UoVUNo
YXIsIFVDaGFyKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgUGFzc1JlZlB0cjxTdHJpbmdJbXBs
PiByZXBsYWNlKFVDaGFyLCBTdHJpbmdJbXBsKik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFBh
c3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwbGFjZShTdHJpbmdJbXBsKiwgU3RyaW5nSW1wbCopOwor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlcGxhY2UodW5z
aWduZWQgaW5kZXgsIHVuc2lnbmVkIGxlbiwgU3RyaW5nSW1wbCopOwogCi0gICAgV1RGOjpVbmlj
b2RlOjpEaXJlY3Rpb24gZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oYm9vbCogaGFzU3Ryb25nRGly
ZWN0aW9uYWxpdHkgPSAwKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV1RGOjpVbmljb2RlOjpE
aXJlY3Rpb24gZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oYm9vbCogaGFzU3Ryb25nRGlyZWN0aW9u
YWxpdHkgPSAwKTsKIAogI2lmIFVTRShDRikKICAgICBDRlN0cmluZ1JlZiBjcmVhdGVDRlN0cmlu
ZygpOwpAQCAtNTUzLDIzICs1NTMsMjMgQEAgQUxXQVlTX0lOTElORSBjb25zdCBMQ2hhciogU3Ry
aW5nSW1wbDo6Z2V0Q2hhcmFjdGVyczxMQ2hhcj4oKSBjb25zdCB7IHJldHVybiBjaGEKIHRlbXBs
YXRlIDw+CiBBTFdBWVNfSU5MSU5FIGNvbnN0IFVDaGFyKiBTdHJpbmdJbXBsOjpnZXRDaGFyYWN0
ZXJzPFVDaGFyPigpIGNvbnN0IHsgcmV0dXJuIGNoYXJhY3RlcnMxNigpOyB9CiAKLWJvb2wgZXF1
YWwoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IFN0cmluZ0ltcGwqKTsKLWJvb2wgZXF1YWwoY29u
c3QgU3RyaW5nSW1wbCosIGNvbnN0IExDaGFyKik7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBl
cXVhbChjb25zdCBTdHJpbmdJbXBsKiwgY29uc3QgU3RyaW5nSW1wbCopOworV1RGX0VYUE9SVF9Q
UklWQVRFIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IExDaGFyKik7CiBpbmxp
bmUgYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiBhLCBjb25zdCBjaGFyKiBiKSB7IHJldHVy
biBlcXVhbChhLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYikpOyB9CiBib29sIGVx
dWFsKGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBMQ2hhciosIHVuc2lnbmVkKTsKIGlubGluZSBi
b29sIGVxdWFsKGNvbnN0IExDaGFyKiBhLCBTdHJpbmdJbXBsKiBiKSB7IHJldHVybiBlcXVhbChi
LCBhKTsgfQogaW5saW5lIGJvb2wgZXF1YWwoY29uc3QgY2hhciogYSwgU3RyaW5nSW1wbCogYikg
eyByZXR1cm4gZXF1YWwoYiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGEpKTsgfQot
Ym9vbCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiwgY29uc3QgVUNoYXIqLCB1bnNpZ25lZCk7CitX
VEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiwgY29uc3QgVUNo
YXIqLCB1bnNpZ25lZCk7CiAKLWJvb2wgZXF1YWxJZ25vcmluZ0Nhc2UoU3RyaW5nSW1wbCosIFN0
cmluZ0ltcGwqKTsKLWJvb2wgZXF1YWxJZ25vcmluZ0Nhc2UoU3RyaW5nSW1wbCosIGNvbnN0IExD
aGFyKik7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVhbElnbm9yaW5nQ2FzZShTdHJpbmdJ
bXBsKiwgU3RyaW5nSW1wbCopOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZXF1YWxJZ25vcmlu
Z0Nhc2UoU3RyaW5nSW1wbCosIGNvbnN0IExDaGFyKik7CiBpbmxpbmUgYm9vbCBlcXVhbElnbm9y
aW5nQ2FzZShjb25zdCBMQ2hhciogYSwgU3RyaW5nSW1wbCogYikgeyByZXR1cm4gZXF1YWxJZ25v
cmluZ0Nhc2UoYiwgYSk7IH0KLWJvb2wgZXF1YWxJZ25vcmluZ0Nhc2UoY29uc3QgVUNoYXIqLCBj
b25zdCBMQ2hhciosIHVuc2lnbmVkKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGVxdWFsSWdu
b3JpbmdDYXNlKGNvbnN0IFVDaGFyKiwgY29uc3QgTENoYXIqLCB1bnNpZ25lZCk7CiBpbmxpbmUg
Ym9vbCBlcXVhbElnbm9yaW5nQ2FzZShjb25zdCBVQ2hhciogYSwgY29uc3QgY2hhciogYiwgdW5z
aWduZWQgbGVuZ3RoKSB7IHJldHVybiBlcXVhbElnbm9yaW5nQ2FzZShhLCByZWludGVycHJldF9j
YXN0PGNvbnN0IExDaGFyKj4oYiksIGxlbmd0aCk7IH0KIGlubGluZSBib29sIGVxdWFsSWdub3Jp
bmdDYXNlKGNvbnN0IExDaGFyKiBhLCBjb25zdCBVQ2hhciogYiwgdW5zaWduZWQgbGVuZ3RoKSB7
IHJldHVybiBlcXVhbElnbm9yaW5nQ2FzZShiLCBhLCBsZW5ndGgpOyB9CiBpbmxpbmUgYm9vbCBl
cXVhbElnbm9yaW5nQ2FzZShjb25zdCBjaGFyKiBhLCBjb25zdCBVQ2hhciogYiwgdW5zaWduZWQg
bGVuZ3RoKSB7IHJldHVybiBlcXVhbElnbm9yaW5nQ2FzZShiLCByZWludGVycHJldF9jYXN0PGNv
bnN0IExDaGFyKj4oYSksIGxlbmd0aCk7IH0KIAotYm9vbCBlcXVhbElnbm9yaW5nTnVsbGl0eShT
dHJpbmdJbXBsKiwgU3RyaW5nSW1wbCopOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZXF1YWxJ
Z25vcmluZ051bGxpdHkoU3RyaW5nSW1wbCosIFN0cmluZ0ltcGwqKTsKIAogdGVtcGxhdGU8c2l6
ZV90IGlubGluZUNhcGFjaXR5PgogYm9vbCBlcXVhbElnbm9yaW5nTnVsbGl0eShjb25zdCBWZWN0
b3I8VUNoYXIsIGlubGluZUNhcGFjaXR5PiYgYSwgU3RyaW5nSW1wbCogYikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9XVEZTdHJpbmcuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvdGV4dC9XVEZTdHJpbmcuaAppbmRleCBmZDFmMGQyOGFiNGZjOGE4ZjU1
ODA5ZTc4N2E0YjlhMjE5YmE2MTYxLi41Nzk1NmY5M2I3ODRiM2I0NDk1MTBmZjJlZGRmZDQ0OWUx
Y2FjZGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvV1RGU3Ry
aW5nLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oCkBA
IC02Nyw3ICs2Nyw3IEBAIGludHB0cl90IGNoYXJhY3RlcnNUb0ludFB0clN0cmljdChjb25zdCBM
Q2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9CiBpbnRwdHJfdCBjaGFyYWN0
ZXJzVG9JbnRQdHJTdHJpY3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCwgaW50
IGJhc2UgPSAxMCk7CiAKIGludCBjaGFyYWN0ZXJzVG9JbnQoY29uc3QgTENoYXIqLCBzaXplX3Qs
IGJvb2wqIG9rID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQotaW50IGNoYXJhY3Rl
cnNUb0ludChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwKTsgLy8gaWdub3JlcyB0
cmFpbGluZyBnYXJiYWdlCitXVEZfRVhQT1JUX1BSSVZBVEUgaW50IGNoYXJhY3RlcnNUb0ludChj
b25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwKTsgLy8gaWdub3JlcyB0cmFpbGluZyBn
YXJiYWdlCiB1bnNpZ25lZCBjaGFyYWN0ZXJzVG9VSW50KGNvbnN0IExDaGFyKiwgc2l6ZV90LCBi
b29sKiBvayA9IDApOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKIHVuc2lnbmVkIGNoYXJh
Y3RlcnNUb1VJbnQoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCk7IC8vIGlnbm9y
ZXMgdHJhaWxpbmcgZ2FyYmFnZQogaW50NjRfdCBjaGFyYWN0ZXJzVG9JbnQ2NChjb25zdCBMQ2hh
ciosIHNpemVfdCwgYm9vbCogb2sgPSAwKTsgLy8gaWdub3JlcyB0cmFpbGluZyBnYXJiYWdlCkBA
IC04MCw3ICs4MCw3IEBAIGludHB0cl90IGNoYXJhY3RlcnNUb0ludFB0cihjb25zdCBVQ2hhcios
IHNpemVfdCwgYm9vbCogb2sgPSAwKTsgLy8gaWdub3JlcyB0cmFpCiBXVEZfRVhQT1JUX1BSSVZB
VEUgZG91YmxlIGNoYXJhY3RlcnNUb0RvdWJsZShjb25zdCBMQ2hhciosIHNpemVfdCwgYm9vbCog
b2sgPSAwLCBib29sKiBkaWRSZWFkTnVtYmVyID0gMCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgZG91
YmxlIGNoYXJhY3RlcnNUb0RvdWJsZShjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAw
LCBib29sKiBkaWRSZWFkTnVtYmVyID0gMCk7CiBmbG9hdCBjaGFyYWN0ZXJzVG9GbG9hdChjb25z
dCBMQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwLCBib29sKiBkaWRSZWFkTnVtYmVyID0gMCk7
Ci1mbG9hdCBjaGFyYWN0ZXJzVG9GbG9hdChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sg
PSAwLCBib29sKiBkaWRSZWFkTnVtYmVyID0gMCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgZmxvYXQg
Y2hhcmFjdGVyc1RvRmxvYXQoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCwgYm9v
bCogZGlkUmVhZE51bWJlciA9IDApOwogCiB0ZW1wbGF0ZTxib29sIGlzU3BlY2lhbENoYXJhY3Rl
cihVQ2hhcik+IGJvb2wgaXNBbGxTcGVjaWFsQ2hhcmFjdGVycyhjb25zdCBVQ2hhciosIHNpemVf
dCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdW5pY29kZS9Db2xs
YXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL0NvbGxhdG9yLmgKaW5k
ZXggMDBhYjE2ZTZhNWJkYmE2ZmYxNGI1YjM3MWYxYzkxNGMxODgwMzgyZi4uNzk5NGZmOGU1Y2Iz
MTM4ZWU5NzM2NTMwOGFlNmMzNTE0MzZlNWIzZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi91bmljb2RlL0NvbGxhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi91bmljb2RlL0NvbGxhdG9yLmgKQEAgLTQ1LDEzICs0NSwxMyBAQCBuYW1lc3BhY2UgV1RG
IHsKICAgICBwdWJsaWM6CiAgICAgICAgIGVudW0gUmVzdWx0IHsgRXF1YWwgPSAwLCBHcmVhdGVy
ID0gMSwgTGVzcyA9IC0xIH07CiAKLSAgICAgICAgQ29sbGF0b3IoY29uc3QgY2hhciogbG9jYWxl
KTsgLy8gUGFyc2luZyBpcyBsZW5pZW50OyBlLmcuIGxhbmd1YWdlIGlkZW50aWZpZXJzIChzdWNo
IGFzICJlbi1VUyIpIGFyZSBhY2NlcHRlZCwgdG9vLgotICAgICAgICB+Q29sbGF0b3IoKTsKLSAg
ICAgICAgdm9pZCBzZXRPcmRlckxvd2VyRmlyc3QoYm9vbCk7CisgICAgICAgIFdURl9FWFBPUlRf
UFJJVkFURSBDb2xsYXRvcihjb25zdCBjaGFyKiBsb2NhbGUpOyAvLyBQYXJzaW5nIGlzIGxlbmll
bnQ7IGUuZy4gbGFuZ3VhZ2UgaWRlbnRpZmllcnMgKHN1Y2ggYXMgImVuLVVTIikgYXJlIGFjY2Vw
dGVkLCB0b28uCisgICAgICAgIFdURl9FWFBPUlRfUFJJVkFURSB+Q29sbGF0b3IoKTsKKyAgICAg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0T3JkZXJMb3dlckZpcnN0KGJvb2wpOwogCiAg
ICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPENvbGxhdG9yPiB1c2VyRGVmYXVsdCgpOwogCi0gICAg
ICAgIFJlc3VsdCBjb2xsYXRlKGNvbnN0IDo6VUNoYXIqLCBzaXplX3QsIGNvbnN0IDo6VUNoYXIq
LCBzaXplX3QpIGNvbnN0OworICAgICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgUmVzdWx0IGNvbGxh
dGUoY29uc3QgOjpVQ2hhciosIHNpemVfdCwgY29uc3QgOjpVQ2hhciosIHNpemVfdCkgY29uc3Q7
CiAKICAgICBwcml2YXRlOgogI2lmIFVTRShJQ1VfVU5JQ09ERSkgJiYgIVVDT05GSUdfTk9fQ09M
TEFUSU9OCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvVVRG
OC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL1VURjguaAppbmRleCBiZDNk
ZDhhMGE1OTUzNzg3YTNkOWUzZmYxMWU1MzQzZDZiNDk4MmE1Li5iYzI0OTdiNzIzOWIxOTQ2NmFh
OTI5ZWQyMjE0Y2E0OTliZGI5MGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL3VuaWNvZGUvVVRGOC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdW5pY29k
ZS9VVEY4LmgKQEAgLTYyLDcgKzYyLDcgQEAgbmFtZXNwYWNlIFVuaWNvZGUgewogICAgIC8vIHRv
IHRoZSByZXBsYWNlbWVudCBjaGFyYWN0ZXI7IG90aGVyd2lzZSAod2hlbiB0aGUgZmxhZyBpcyBz
ZXQgdG8gc3RyaWN0KQogICAgIC8vIHRoZXkgY29uc3RpdHV0ZSBhbiBlcnJvci4KIAotICAgIENv
bnZlcnNpb25SZXN1bHQgY29udmVydFVURjhUb1VURjE2KAorICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBDb252ZXJzaW9uUmVzdWx0IGNvbnZlcnRVVEY4VG9VVEYxNigKICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgY2hhcioqIHNvdXJjZVN0YXJ0LCBjb25zdCBjaGFyKiBzb3VyY2VFbmQsIAogICAg
ICAgICAgICAgICAgICAgICBVQ2hhcioqIHRhcmdldFN0YXJ0LCBVQ2hhciogdGFyZ2V0RW5kLCBi
b29sIHN0cmljdCA9IHRydWUpOwogCkBAIC03MCw3ICs3MCw3IEBAIG5hbWVzcGFjZSBVbmljb2Rl
IHsKICAgICAgICAgICAgICAgICAgICAgY29uc3QgTENoYXIqKiBzb3VyY2VTdGFydCwgY29uc3Qg
TENoYXIqIHNvdXJjZUVuZCwgCiAgICAgICAgICAgICAgICAgICAgIGNoYXIqKiB0YXJnZXRTdGFy
dCwgY2hhciogdGFyZ2V0RW5kKTsKIAotICAgIENvbnZlcnNpb25SZXN1bHQgY29udmVydFVURjE2
VG9VVEY4KAorICAgIFdURl9FWFBPUlRfUFJJVkFURSBDb252ZXJzaW9uUmVzdWx0IGNvbnZlcnRV
VEYxNlRvVVRGOCgKICAgICAgICAgICAgICAgICAgICAgY29uc3QgVUNoYXIqKiBzb3VyY2VTdGFy
dCwgY29uc3QgVUNoYXIqIHNvdXJjZUVuZCwgCiAgICAgICAgICAgICAgICAgICAgIGNoYXIqKiB0
YXJnZXRTdGFydCwgY2hhciogdGFyZ2V0RW5kLCBib29sIHN0cmljdCA9IHRydWUpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUveWFyci9ZYXJyLmgKaW5kZXggNTAxYWZhYzVmNTQzNzUxZTc0MjI3MGI0NDgzYzk5
ZmU3ZGQ3N2IxZi4uMzQ5NWZjN2U0YzMwYjk0Mjc4NDkxZDA5ZDc3YjNkNTk3MzNjOGEyOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS95YXJyL1lhcnIuaApAQCAtNjIsOCArNjIsOCBAQCBlbnVtIFlhcnJDaGFy
U2l6ZSB7CiAgICAgQ2hhcjE2CiB9OwogCi1QYXNzT3duUHRyPEJ5dGVjb2RlUGF0dGVybj4gYnl0
ZUNvbXBpbGUoWWFyclBhdHRlcm4mLCBCdW1wUG9pbnRlckFsbG9jYXRvciopOwotaW50IGludGVy
cHJldChCeXRlY29kZVBhdHRlcm4qLCBjb25zdCBVU3RyaW5nJiBpbnB1dCwgdW5zaWduZWQgc3Rh
cnQsIHVuc2lnbmVkIGxlbmd0aCwgaW50KiBvdXRwdXQpOworSlNfRVhQT1JUX1BSSVZBVEUgUGFz
c093blB0cjxCeXRlY29kZVBhdHRlcm4+IGJ5dGVDb21waWxlKFlhcnJQYXR0ZXJuJiwgQnVtcFBv
aW50ZXJBbGxvY2F0b3IqKTsKK0pTX0VYUE9SVF9QUklWQVRFIGludCBpbnRlcnByZXQoQnl0ZWNv
ZGVQYXR0ZXJuKiwgY29uc3QgVVN0cmluZyYgaW5wdXQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25l
ZCBsZW5ndGgsIGludCogb3V0cHV0KTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OllhcnIKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmgKaW5kZXggMmNiYjc5NTg2NTZl
MzVhMTAxZWQxOTZlYjM2MzJkNzIwOGU1ZGMzMS4uYTMxZGVlZTY3Mjk0NjQ0ZTVkYzRhYWQ0ZDdh
MDZiMDczYjIwYjc5ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFy
clBhdHRlcm4uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5o
CkBAIC0zMTYsNyArMzE2LDcgQEAgc3RydWN0IFRlcm1DaGFpbiB7CiB9OwogCiBzdHJ1Y3QgWWFy
clBhdHRlcm4gewotICAgIFlhcnJQYXR0ZXJuKGNvbnN0IFVTdHJpbmcmIHBhdHRlcm4sIGJvb2wg
aWdub3JlQ2FzZSwgYm9vbCBtdWx0aWxpbmUsIGNvbnN0IGNoYXIqKiBlcnJvcik7CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgWWFyclBhdHRlcm4oY29uc3QgVVN0cmluZyYgcGF0dGVybiwgYm9vbCBp
Z25vcmVDYXNlLCBib29sIG11bHRpbGluZSwgY29uc3QgY2hhcioqIGVycm9yKTsKIAogICAgIH5Z
YXJyUGF0dGVybigpCiAgICAgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116064</attachid>
            <date>2011-11-21 04:09:35 -0800</date>
            <delta_ts>2011-11-21 04:11:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72855-20111121210934.patch</filename>
            <type>text/plain</type>
            <size>4022</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwODg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
NmRkZWE3N2E3OGE3ZDliZWQ3ZDYzMTVmYjcxOTk5ODY2NDk5ZGYxLi40NWY0YTc4MDI3MWQ3OWUy
YTMwN2ViYTQzMzM5Y2JmZjI1OWU5YTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAxMS0xMS0yMSAgSGFqaW1lIE1vcnJpdGEgIDxtb3JyaXRhQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBbTWFjXSBlbGltaW5hdGUgSmF2YVNjcmlwdENvcmUuZXhwCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mjg1NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gQWRkZWQgLXVuZXhw
b3J0ZWRfc3ltYm9sIGxkIGZsYWdzIHRvIGhpZGUgc3ltYm9scyBjYW1lIGZyb20gdGhlIHN0YW5k
YXJkIGxpYnJhcnkuCisgICAgICAgIC0gVHVybmVkIEdDQ19TWU1CT0xTX1BSSVZBVEVfRVhURVJO
IG9uCisgICAgICAgIC0gQ2xlYXJlZCBFWFBPUlRFRF9TWU1CT0xTX0ZJTEUKKyAgICAgICAgLSBF
bmFibGVkIFVTRShFWFBPUlRfTUFDUk9TKSBmb3IgTWFjIHBsYXRmb3JtcworCisgICAgICAgICog
Q29uZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZzoKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9K
YXZhU2NyaXB0Q29yZS54Y2NvbmZpZzoKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKwogMjAx
MS0xMS0yMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQgaW50ZXJwcmV0ZXIgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWcgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ29uZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZwppbmRleCBiYTVjNzVlMjkwNWEwMGVlNjI1
ZTQxZGY5OTYzNjRlZWY1NjlmZTdhLi43NjlkOTkyMWNjOGQzZjJiOWQxYjFiNzlhYjA5MmYwZDIw
Y2UxYTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMv
QmFzZS54Y2NvbmZpZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMv
QmFzZS54Y2NvbmZpZwpAQCAtNzMsNyArNzMsNiBAQCBXQVJOSU5HX0NGTEFHU19tYWNvc3hfcHBj
NjQgPSAkKFdBUk5JTkdfQ0ZMQUdTX0JBU0UpOwogV0FSTklOR19DRkxBR1NfbWFjb3N4X3g4Nl82
NCA9ICQoV0FSTklOR19DRkxBR1NfQkFTRSk7CiBIRUFERVJfU0VBUkNIX1BBVEhTID0gLiBpY3Ug
JChIRUFERVJfU0VBUkNIX1BBVEhTKTsKIAotCiBSRUFMX1BMQVRGT1JNX05BTUUgPSAkKFJFQUxf
UExBVEZPUk1fTkFNRV8kKFBMQVRGT1JNX05BTUUpKTsKIFJFQUxfUExBVEZPUk1fTkFNRV8gPSAk
KFJFQUxfUExBVEZPUk1fTkFNRV9tYWNvc3gpOwogUkVBTF9QTEFURk9STV9OQU1FX2lwaG9uZW9z
ID0gaXBob25lb3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJh
dGlvbnMvSmF2YVNjcmlwdENvcmUueGNjb25maWcgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29u
ZmlndXJhdGlvbnMvSmF2YVNjcmlwdENvcmUueGNjb25maWcKaW5kZXggZTZiNWI0ZDJhOWJjZTE5
Mjc4MGI1NzdkYTkyNmU5NzA1ZjFjMmI4NC4uNDdiODgzMWQ3NTEwMTY2ZjgzYWUyYzA2OGZkMGUz
NjRlMTNlNzRhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRp
b25zL0phdmFTY3JpcHRDb3JlLnhjY29uZmlnCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
b25maWd1cmF0aW9ucy9KYXZhU2NyaXB0Q29yZS54Y2NvbmZpZwpAQCAtMzMsOCArMzMsOSBAQCBK
U1ZBTFVFX01PREVMX3BwYyA9IDMyXzY0OwogSlNWQUxVRV9NT0RFTF9wcGM2NCA9IDY0OwogSlNW
QUxVRV9NT0RFTF94ODZfNjQgPSA2NDsKIAotRVhQT1JURURfU1lNQk9MU19GSUxFID0gJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLkpTVkFMVUUkKEpTVkFMVUVfTU9ERUwpLmV4cDsKLU9USEVSX0xERkxBR1NfQkFTRSA9IC1s
b2JqYyAtV2wsLVksMzsKKy8vIFByZXZlbnQgQysrIHN0YW5kYXJkIGxpYnJhcnkgb3BlcmF0b3Ig
bmV3LCBkZWxldGUgYW5kIHRoZWlyIHJlbGF0ZWQgZXhjZXB0aW9uIHR5cGVzIGZyb20gYmVpbmcg
ZXhwb3J0ZWQgYXMgd2VhayBzeW1ib2xzLgorT1RIRVJfTERGTEFHU19ISURFX1NZTUJPTFMgPSAt
V2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pUSVN0OWJhZF9hbGxvYyAtV2wsLXVuZXhwb3J0
ZWRfc3ltYm9sIC1XbCxfX1pUSVN0OWV4Y2VwdGlvbiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1X
bCxfX1pUU1N0OWJhZF9hbGxvYyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pUU1N0OWV4
Y2VwdGlvbiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pkbFB2U18gLVdsLC11bmV4cG9y
dGVkX3N5bWJvbCAtV2wsX19abndtUHY7CitPVEhFUl9MREZMQUdTX0JBU0UgPSAtbG9iamMgLVds
LC1ZLDMgJChPVEhFUl9MREZMQUdTX0hJREVfU1lNQk9MUyk7CiBPVEhFUl9MREZMQUdTID0gJChP
VEhFUl9MREZMQUdTXyQoUkVBTF9QTEFURk9STV9OQU1FKSk7CiBPVEhFUl9MREZMQUdTX2lwaG9u
ZW9zID0gJChPVEhFUl9MREZMQUdTX0JBU0UpOwogT1RIRVJfTERGTEFHU19pcGhvbmVzaW11bGF0
b3IgPSAkKE9USEVSX0xERkxBR1NfaXBob25lb3MpOwpAQCAtNDMsNiArNDQsNyBAQCBPVEhFUl9M
REZMQUdTX21hY29zeF8xMDcwID0gLVhsaW5rZXIgLW9iamNfZ2NfY29tcGFjdGlvbjsKIE9USEVS
X0xERkxBR1NfbWFjb3N4XzEwODAgPSAkKE9USEVSX0xERkxBR1NfbWFjb3N4XzEwNzApOwogT1RI
RVJfTERGTEFHU19tYWNvc3hfMTA5MCA9ICQoT1RIRVJfTERGTEFHU19tYWNvc3hfMTA3MCk7CiBH
Q0NfUFJFRklYX0hFQURFUiA9IEphdmFTY3JpcHRDb3JlUHJlZml4Lmg7CitHQ0NfU1lNQk9MU19Q
UklWQVRFX0VYVEVSTiA9IFlFUzsKIEhFQURFUl9TRUFSQ0hfUEFUSFMgPSAiJHtCVUlMVF9QUk9E
VUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlIiAkKEhFQURFUl9TRUFSQ0hf
UEFUSFMpOwogSU5GT1BMSVNUX0ZJTEUgPSBJbmZvLnBsaXN0OwogSU5TVEFMTF9QQVRIID0gJChK
QVZBU0NSSVBUQ09SRV9GUkFNRVdPUktTX0RJUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRm
b3JtLmgKaW5kZXggYTY4NjYxNjQyMmVkMTNlODU0ZjhjODc1YTVhZTJiOGY2YzYzYzUyYS4uZDRj
Y2ZlYjRlNTg4NDk0ZmQ4M2QyNDQxZjUzZjgxYzhlZDQ1MGRjZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvUGxhdGZvcm0uaApAQCAtMTA5Nyw3ICsxMDk3LDExIEBACiAgICBzaW5jZSBtb3N0IHBv
cnRzIHRyeSB0byBzdXBwb3J0IHN1Yi1wcm9qZWN0IGluZGVwZW5kZW5jZSwgYWRkaW5nIG5ldyBo
ZWFkZXJzCiAgICB0byBXVEYgY2F1c2VzIG1hbnkgcG9ydHMgdG8gYnJlYWssIGFuZCBzbyB0aGlz
IHdheSB3ZSBjYW4gYWRkcmVzcyB0aGUgYnVpbGQKICAgIGJyZWFrYWdlcyBvbmUgcG9ydCBhdCBh
IHRpbWUuICovCisjaWYgUExBVEZPUk0oTUFDKQorI2RlZmluZSBXVEZfVVNFX0VYUE9SVF9NQUNS
T1MgMQorI2Vsc2UKICNkZWZpbmUgV1RGX1VTRV9FWFBPUlRfTUFDUk9TIDAKKyNlbmRpZgogCiAj
aWYgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQogI2RlZmlu
ZSBXVEZfVVNFX1VOSVhfRE9NQUlOX1NPQ0tFVFMgMQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116700</attachid>
            <date>2011-11-27 23:02:15 -0800</date>
            <delta_ts>2011-12-11 21:29:28 -0800</delta_ts>
            <desc>It&apos;s ready to review</desc>
            <filename>bug-72855-20111128160212.patch</filename>
            <type>text/plain</type>
            <size>187761</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMjIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ZGM2OWU3ODdhZjBhZmY5ZTJiMTRhYTYyZTMxYmNmOTI2YjQwZDI2Li42ODFjNzI0YWQwYmY5MDc0
ZWMxZjEwYjBhODMwZWJmNmUyOTQ2MzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMjMgQEAKKzIwMTEtMTEtMjcgIEhhamltZSBNb3JyaXRhIDxtb3JyaXRhQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBKYXZhU2NyaXB0Q29yZTogTWFyayBhbGwgZXhwb3J0ZWQgc3ltYm9s
cyBpbiB0aGUgaGVhZGVyIGZpbGUgYXV0b21hdGljYWxseS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyODU1CisKKyAgICAgICAgQWRkZWQgV1RGX0VY
UE9SVF9QUklWQVRFIGFuZCB2YXJpYW50cyB0byBleHBvcnRlZCBzeW1ib2xzLgorICAgICAgICBU
aGUgc3ltYm9sIGxpc3QgaXMgYmFzZWQgb24gSmF2YVNjcmlwdENvcmUuSlNWQUxVRTY0LmV4cCwK
KyAgICAgICAgd2hpY2ggaXMgZ2VuZXJhdGVkIGR1cmluZyB0aGUgYnVpbGQgcHJvY2Vzcy4KKwor
ICAgICAgICBUaGUgY29kZSBtb2RpZmljYXRpb24gaXMgYXV0b21hdGljYWxseSBkb25lIGJ5IExp
c3RFeHBvcnRhYmxlcworICAgICAgICBodHRwczovL2dpdGh1Yi5jb20vb21vL0xpc3RFeHBvcnRh
YmxlcworCisgICAgICAgIFRoZSBjaGFuZ2UgaXMgYWxzbyB0ZXN0ZWQgd2l0aCBhIHByZWxpbWlu
YXJ5IHBhdGNoIG9uIGJ1ZyA3Mjg1NAorICAgICAgICBhcHBsaWVkLgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQVBJL09wYXF1ZUpTU3RyaW5nLmg6
CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgICogYnl0ZWNvZGUvU2Ft
cGxpbmdUb29sLmg6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXIuaDoKKyAgICAgICAgKiBk
ZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaDoKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dl
ckNhbGxGcmFtZS5oOgorICAgICAgICAqIGhlYXAvQWxsb2NhdGlvblNwYWNlLmg6CisgICAgICAg
ICogaGVhcC9IYW5kbGVIZWFwLmg6CisgICAgICAgICogaGVhcC9IZWFwLmg6CisgICAgICAgICog
aGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuaDoKKyAgICAgICAgKiBoZWFwL01hcmtTdGFjay5oOgor
ICAgICAgICAqIGhlYXAvVlRhYmxlU3BlY3RydW0uaDoKKyAgICAgICAgKiBoZWFwL1dyaXRlQmFy
cmllclN1cHBvcnQuaDoKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoKKyAgICAgICAgKiBwYXJz
ZXIvUGFyc2VyQXJlbmEuaDoKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlLmg6CisgICAgICAg
ICogcnVudGltZS9BcmdMaXN0Lmg6CisgICAgICAgICogcnVudGltZS9DYWxsRGF0YS5oOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29tcGxldGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29uc3RydWN0
RGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZUluc3RhbmNlLmg6CisgICAgICAgICogcnVu
dGltZS9FcnJvci5oOgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oOgorICAg
ICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUv
SGV1cmlzdGljcy5oOgorICAgICAgICAqIHJ1bnRpbWUvSWRlbnRpZmllci5oOgorICAgICAgICAq
IHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50ZXJu
YWxGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5oOgorICAgICAgICAqIHJ1
bnRpbWUvSlNCeXRlQXJyYXkuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5oOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRh
LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5oOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3RSYXJlRGF0
YTo6Y3JlYXRlUmFyZURhdGFJZk5lZWRlZCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
UmFyZURhdGE6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0UmFyZURhdGE6
OkpTR2xvYmFsT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3RSYXJlRGF0YTo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdFJhcmVEYXRhOjpy
ZWdFeHBDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0UmFyZURhdGE6
OmVycm9yQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdFJhcmVEYXRh
OjpldmFsRXJyb3JDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0UmFy
ZURhdGE6OnJhbmdlRXJyb3JDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0UmFyZURhdGE6OnJlZmVyZW5jZUVycm9yQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdFJhcmVEYXRhOjpzeW50YXhFcnJvckNvbnN0cnVjdG9yKToKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxPYmplY3RSYXJlRGF0YTo6dHlwZUVycm9yQ29uc3RydWN0b3IpOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdFJhcmVEYXRhOjpVUklFcnJvckNvbnN0cnVjdG9yKToK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3RSYXJlRGF0YTo6ZXZhbEZ1bmN0aW9uKToKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3RSYXJlRGF0YTo6Y2FsbEZ1bmN0aW9uKToKKyAgICAg
ICAgKEpTQzo6SlNHbG9iYWxPYmplY3RSYXJlRGF0YTo6YXBwbHlGdW5jdGlvbik6CisgICAgICAg
IChKU0M6OkpTR2xvYmFsT2JqZWN0UmFyZURhdGE6OnRocm93VHlwZUVycm9yR2V0dGVyU2V0dGVy
KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3RSYXJlRGF0YTo6b2JqZWN0UHJvdG90eXBl
KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3RSYXJlRGF0YTo6ZnVuY3Rpb25Qcm90b3R5
cGUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdFJhcmVEYXRhOjphcnJheVByb3RvdHlw
ZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0UmFyZURhdGE6OmJvb2xlYW5Qcm90b3R5
cGUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdFJhcmVEYXRhOjpzdHJpbmdQcm90b3R5
cGUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdFJhcmVEYXRhOjpudW1iZXJQcm90b3R5
cGUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdFJhcmVEYXRhOjpkYXRlUHJvdG90eXBl
KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3RSYXJlRGF0YTo6cmVnRXhwUHJvdG90eXBl
KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3RSYXJlRGF0YTo6bWV0aG9kQ2FsbER1bW15
KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3RSYXJlRGF0YTo6YXJndW1lbnRzU3RydWN0
dXJlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3RSYXJlRGF0YTo6YXJyYXlTdHJ1Y3R1
cmUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdFJhcmVEYXRhOjpib29sZWFuT2JqZWN0
U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3RSYXJlRGF0YTo6Y2FsbGJh
Y2tDb25zdHJ1Y3RvclN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0UmFy
ZURhdGE6OmNhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdFJhcmVEYXRhOjpjYWxsYmFja09iamVjdFN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0UmFyZURhdGE6OmRhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdFJhcmVEYXRhOjplbXB0eU9iamVjdFN0cnVjdHVyZSk6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsT2JqZWN0UmFyZURhdGE6Om51bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1cmUp
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdFJhcmVEYXRhOjplcnJvclN0cnVjdHVyZSk6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0UmFyZURhdGE6OmZ1bmN0aW9uU3RydWN0dXJl
KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3RSYXJlRGF0YTo6Ym91bmRGdW5jdGlvblN0
cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0UmFyZURhdGE6Om5hbWVkRnVu
Y3Rpb25TdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdFJhcmVEYXRhOjpm
dW5jdGlvbk5hbWVPZmZzZXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdFJhcmVEYXRh
OjpudW1iZXJPYmplY3RTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdFJh
cmVEYXRhOjppbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3RSYXJlRGF0YTo6c3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uU3RydWN0dXJlKToK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3RSYXJlRGF0YTo6cmVnRXhwTWF0Y2hlc0FycmF5
U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3RSYXJlRGF0YTo6cmVnRXhw
U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3RSYXJlRGF0YTo6c3RyaW5n
T2JqZWN0U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3RSYXJlRGF0YTo6
c2V0UHJvZmlsZUdyb3VwKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3RSYXJlRGF0YTo6
cHJvZmlsZUdyb3VwKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3RSYXJlRGF0YTo6ZGVi
dWdnZXIpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdFJhcmVEYXRhOjpzZXREZWJ1Z2dl
cik6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0UmFyZURhdGE6Omdsb2JhbE9iamVjdE1l
dGhvZFRhYmxlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3RSYXJlRGF0YTo6c3VwcG9y
dHNQcm9maWxpbmcpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdFJhcmVEYXRhOjpzdXBw
b3J0c1JpY2hTb3VyY2VJbmZvKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3RSYXJlRGF0
YTo6Z2xvYmFsU2NvcGVDaGFpbik6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0UmFyZURh
dGE6OnNob3VsZEludGVycnVwdFNjcmlwdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
UmFyZURhdGE6OnNldEV2YWxFbmFibGVkKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3RS
YXJlRGF0YTo6ZXZhbEVuYWJsZWQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdFJhcmVE
YXRhOjpnbG9iYWxEYXRhKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3RSYXJlRGF0YTo6
Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3RSYXJlRGF0YTo6
cmVnaXN0ZXJXZWFrTWFwKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3RSYXJlRGF0YTo6
dW5yZWdpc3RlcldlYWtNYXApOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdFJhcmVEYXRh
Ojp3ZWFrUmFuZG9tTnVtYmVyKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnNldFJl
Z2lzdGVycyk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpoYXNPd25Qcm9wZXJ0eUZv
cldyaXRlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnN5bWJvbFRhYmxlSGFzUHJv
cGVydHkpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aXNEeW5hbWljU2NvcGUpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxUaGlzLmg6CisgICAgICAgICogcnVudGltZS9KU0xv
Y2suaDoKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6b2Zm
c2V0T2ZQcm9wZXJ0eVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6b2Zmc2V0T2ZJ
bmhlcml0b3JJRCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojppc0dsb2JhbE9iamVjdCk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0Ojppc1ZhcmlhYmxlT2JqZWN0KToKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6OmlzQWN0aXZhdGlvbk9iamVjdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpp
c0Vycm9ySW5zdGFuY2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aXNHbG9iYWxUaGlzKToK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OkpTT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OnByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpzZXRQcm90b3R5cGVXaXRo
Q3ljbGVDaGVjayk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpzZXRQcm90b3R5cGUpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6aW5oZXJpdG9ySUQpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6Z2V0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKToKKyAg
ICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0
OjpwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojp0
cmFuc2l0aW9uVG8pOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6dG9QcmltaXRpdmUpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdPYmplY3Q6
OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAoSlNDOjpS
b3BlQnVpbGRlcjo6SlNTdHJpbmcpOgorICAgICAgICAoSlNDOjpSb3BlQnVpbGRlcjo6ZmluaXNo
Q3JlYXRpb24pOgorICAgICAgICAoSlNDOjpSb3BlQnVpbGRlcjo6Y3JlYXRlTnVsbCk6CisgICAg
ICAgIChKU0M6OlJvcGVCdWlsZGVyOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpSb3BlQnVpbGRl
cjo6Y3JlYXRlSGFzT3RoZXJPd25lcik6CisgICAgICAgIChKU0M6OlJvcGVCdWlsZGVyOjp2YWx1
ZSk6CisgICAgICAgIChKU0M6OlJvcGVCdWlsZGVyOjp0cnlHZXRWYWx1ZSk6CisgICAgICAgIChK
U0M6OlJvcGVCdWlsZGVyOjpsZW5ndGgpOgorICAgICAgICAoSlNDOjpSb3BlQnVpbGRlcjo6Y2Fu
R2V0SW5kZXgpOgorICAgICAgICAoSlNDOjpSb3BlQnVpbGRlcjo6Y3JlYXRlU3RydWN0dXJlKToK
KyAgICAgICAgKEpTQzo6Um9wZUJ1aWxkZXI6Om9mZnNldE9mTGVuZ3RoKToKKyAgICAgICAgKEpT
Qzo6Um9wZUJ1aWxkZXI6Om9mZnNldE9mVmFsdWUpOgorICAgICAgICAoSlNDOjpSb3BlQnVpbGRl
cjo6aXNSb3BlKToKKyAgICAgICAgKEpTQzo6Um9wZUJ1aWxkZXI6OmlzOEJpdCk6CisgICAgICAg
IChKU0M6OlJvcGVCdWlsZGVyOjpzdHJpbmcpOgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6Z2V0
SW5kZXgpOgorICAgICAgICAqIHJ1bnRpbWUvSlNWYWx1ZS5oOgorICAgICAgICAqIHJ1bnRpbWUv
SlNWYXJpYWJsZU9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU1ZhcmlhYmxlT2JqZWN0OjpzeW1i
b2xUYWJsZUdldCk6CisgICAgICAgIChKU0M6OkpTVmFyaWFibGVPYmplY3Q6OnN5bWJvbFRhYmxl
UHV0KToKKyAgICAgICAgKEpTQzo6SlNWYXJpYWJsZU9iamVjdDo6c3ltYm9sVGFibGVQdXRXaXRo
QXR0cmlidXRlcyk6CisgICAgICAgIChKU0M6OkpTVmFyaWFibGVPYmplY3Q6OmNvcHlSZWdpc3Rl
ckFycmF5KToKKyAgICAgICAgKEpTQzo6SlNWYXJpYWJsZU9iamVjdDo6c2V0UmVnaXN0ZXJzKToK
KyAgICAgICAgKiBydW50aW1lL0pTV3JhcHBlck9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU1dy
YXBwZXJPYmplY3Q6OkpTV3JhcHBlck9iamVjdCk6CisgICAgICAgIChKU0M6OkpTV3JhcHBlck9i
amVjdDo6aW50ZXJuYWxWYWx1ZSk6CisgICAgICAgIChKU0M6OkpTV3JhcHBlck9iamVjdDo6c2V0
SW50ZXJuYWxWYWx1ZSk6CisgICAgICAgICogcnVudGltZS9Mb29rdXAuaDoKKyAgICAgICAgKiBy
dW50aW1lL01lbW9yeVN0YXRpc3RpY3MuaDoKKyAgICAgICAgKiBydW50aW1lL09iamVjdFByb3Rv
dHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmg6CisgICAgICAg
ICogcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oOgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVy
dHlTbG90Lmg6CisgICAgICAgICogcnVudGltZS9SZWdFeHAuaDoKKyAgICAgICAgKiBydW50aW1l
L1JlZ0V4cE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvU2FtcGxpbmdDb3VudGVyLmg6Cisg
ICAgICAgICogcnVudGltZS9TY29wZUNoYWluLmg6CisgICAgICAgIChKU0M6OlNjb3BlQ2hhaW5O
b2RlOjpwdXNoKToKKyAgICAgICAgKEpTQzo6U2NvcGVDaGFpbk5vZGU6OnBvcCk6CisgICAgICAg
IChKU0M6OlNjb3BlQ2hhaW5Ob2RlOjpiZWdpbik6CisgICAgICAgIChKU0M6OlNjb3BlQ2hhaW5O
b2RlOjplbmQpOgorICAgICAgICAqIHJ1bnRpbWUvU21hbGxTdHJpbmdzLmg6CisgICAgICAgICog
cnVudGltZS9TdHJpbmdPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgor
ICAgICAgICAqIHJ1bnRpbWUvVGltZW91dENoZWNrZXIuaDoKKyAgICAgICAgKiBydW50aW1lL1VT
dHJpbmcuaDoKKyAgICAgICAgKiBydW50aW1lL1dyaXRlQmFycmllci5oOgorICAgICAgICAqIHd0
Zi9CeXRlQXJyYXkuaDoKKyAgICAgICAgKiB3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1i
ZXIuaDoKKyAgICAgICAgKiB3dGYvQ3VycmVudFRpbWUuaDoKKyAgICAgICAgKiB3dGYvRGF0ZU1h
dGguaDoKKyAgICAgICAgKiB3dGYvRGVjaW1hbE51bWJlci5oOgorICAgICAgICAqIHd0Zi9GYXN0
TWFsbG9jLmNwcDoKKyAgICAgICAgKiB3dGYvRmFzdE1hbGxvYy5oOgorICAgICAgICAqIHd0Zi9N
RDUuaDoKKyAgICAgICAgKiB3dGYvTWFpblRocmVhZC5oOgorICAgICAgICAqIHd0Zi9NZXRhQWxs
b2NhdG9yLmg6CisgICAgICAgICogd3RmL01ldGFBbGxvY2F0b3JIYW5kbGUuaDoKKyAgICAgICAg
KiB3dGYvT1NBbGxvY2F0b3IuaDoKKyAgICAgICAgKiB3dGYvUGFnZUJsb2NrLmg6CisgICAgICAg
ICogd3RmL1JhbmRvbU51bWJlci5oOgorICAgICAgICAqIHd0Zi9SZWZDb3VudGVkTGVha0NvdW50
ZXIuaDoKKyAgICAgICAgKiB3dGYvU0hBMS5oOgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmcuY3Bw
OgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmcuaDoKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nUHJp
bWl0aXZlcy5oOgorICAgICAgICAqIHd0Zi9XVEZUaHJlYWREYXRhLmg6CisgICAgICAgICogd3Rm
L2R0b2EuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9BdG9taWNTdHJpbmcuaDoKKyAgICAgICAgKiB3
dGYvdGV4dC9DU3RyaW5nLmg6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oOgor
ICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZT
dHJpbmcuaDoKKyAgICAgICAgKiB3dGYvdW5pY29kZS9Db2xsYXRvci5oOgorICAgICAgICAqIHd0
Zi91bmljb2RlL1VURjguaDoKKyAgICAgICAgKiB5YXJyL1lhcnIuaDoKKyAgICAgICAgKiB5YXJy
L1lhcnJQYXR0ZXJuLmg6CisKIDIwMTEtMTEtMjcgIEhhamltZSBNb3JyaXRhICA8bW9ycml0YUBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgW01hY10gZWxpbWluYXRlIEphdmFTY3JpcHRDb3JlLmV4
cApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmluZy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmluZy5oCmluZGV4IDVjMjRm
NzUxMDFmYjdiMWZkYWMzODJmNjhhNDM3MzFlNzRjNTNhZjkuLjFjNjMxNTBjZjE1NGU3MWM4ZTNh
OTZmNDdlYmViZDg2Zjg4Mjc5NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvT3BhcXVlSlNTdHJpbmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09wYXF1
ZUpTU3RyaW5nLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgc3RydWN0IE9wYXF1ZUpTU3RyaW5nIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPE9wYXF1ZUpTU3RyaW5nPiB7CiAgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgT3BhcXVlSlNTdHJpbmcoY2hhcmFjdGVycywgbGVuZ3RoKSk7CiAgICAg
fQogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8T3BhcXVlSlNTdHJpbmc+IGNyZWF0ZShjb25zdCBK
U0M6OlVTdHJpbmcmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxP
cGFxdWVKU1N0cmluZz4gY3JlYXRlKGNvbnN0IEpTQzo6VVN0cmluZyYpOwogCiAgICAgVUNoYXIq
IGNoYXJhY3RlcnMoKSB7IHJldHVybiB0aGlzID8gbV9jaGFyYWN0ZXJzIDogMDsgfQogICAgIHVu
c2lnbmVkIGxlbmd0aCgpIHsgcmV0dXJuIHRoaXMgPyBtX2xlbmd0aCA6IDA7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCBjOTkwMWVmY2Q1OGIzYTA4
YWU5NzU0MjY1ODEyMjRlMTcyN2Q5MGFmLi45OWNlODM0ZTFmNzc0YTMxN2ExOGQ0ZjljZDA4ZTU2
OWQ1OGNkNmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5o
CkBAIC0yNjYsNyArMjY2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEhlYXAqIG1faGVh
cDsKIAogICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB+Q29kZUJsb2NrKCk7CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgfkNvZGVCbG9jaygpOwogCiAgICAgICAgIENvZGVC
bG9jayogYWx0ZXJuYXRpdmUoKSB7IHJldHVybiBtX2FsdGVybmF0aXZlLmdldCgpOyB9CiAgICAg
ICAgIFBhc3NPd25QdHI8Q29kZUJsb2NrPiByZWxlYXNlQWx0ZXJuYXRpdmUoKSB7IHJldHVybiBt
X2FsdGVybmF0aXZlLnJlbGVhc2UoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1NhbXBsaW5nVG9vbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1NhbXBsaW5nVG9vbC5oCmluZGV4IDdhNzY4ODNhZjY5NzNiYTkwMmM1NjdkNDM4NmFlMGI1
YzI1MzYwNzUuLmYyMTUzZDYxMGZhMTUzYzM2Yjc0ZDBkODcyNzJlYTI1ZDNlMDFhNjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TYW1wbGluZ1Rvb2wuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmgKQEAgLTQ1LDgg
KzQ1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBTYW1wbGluZ0ZsYWdzIHsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyB2b2lkIHN0YXJ0KCk7Ci0gICAgICAgIHN0YXRpYyB2
b2lkIHN0b3AoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgc3RhcnQo
KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgc3RvcCgpOwogCiAjaWYg
RU5BQkxFKFNBTVBMSU5HX0ZMQUdTKQogICAgICAgICBzdGF0aWMgdm9pZCBzZXRGbGFnKHVuc2ln
bmVkIGZsYWcpCkBAIC04OSw3ICs4OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAjZW5kaWYKICAg
ICBwcml2YXRlOgotICAgICAgICBzdGF0aWMgdWludDMyX3Qgc19mbGFnczsKKyAgICAgICAgSlNf
RVhQT1JUREFUQSBzdGF0aWMgdWludDMyX3Qgc19mbGFnczsKICNpZiBFTkFCTEUoU0FNUExJTkdf
RkxBR1MpCiAgICAgICAgIHN0YXRpYyB1aW50NjRfdCBzX2ZsYWdDb3VudHNbMzNdOwogI2VuZGlm
CkBAIC0xNzQsNyArMTc0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgU2FtcGxpbmdS
ZWdpb24gewogICAgIHB1YmxpYzoKICAgICAgICAgU2FtcGxpbmdSZWdpb24oY29uc3QgY2hhciop
IHsgfQotICAgICAgICB2b2lkIGR1bXAoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBkdW1wKCk7CiAgICAgfTsKICNlbmRpZiAvLyBFTkFCTEUoU0FNUExJTkdfUkVHSU9OUykKIApA
QCAtMjIwLDggKzIyMCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgdW5zaWdu
ZWQgc19oZXJ0ejsKICAgICAgICAgc3RhdGljIFRocmVhZElkZW50aWZpZXIgc19zYW1wbGluZ1Ro
cmVhZDsKIAotICAgICAgICBzdGF0aWMgdm9pZCBzdGFydCh1bnNpZ25lZCBoZXJ0ej0xMDAwMCk7
Ci0gICAgICAgIHN0YXRpYyB2b2lkIHN0b3AoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIHZvaWQgc3RhcnQodW5zaWduZWQgaGVydHo9MTAwMDApOworICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgdm9pZCBzdG9wKCk7CiAKICAgICAgICAgc3RhdGljIHZvaWQqIHRo
cmVhZFN0YXJ0RnVuYyh2b2lkKik7CiAgICAgfTsKQEAgLTMwMSw3ICszMDEsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICNlbmRpZgogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBzZXR1cCgpOworICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldHVwKCk7CiAgICAgICAgIHZvaWQgZHVtcChF
eGVjU3RhdGUqKTsKIAogICAgICAgICB2b2lkIG5vdGlmeU9mU2NvcGUoSlNHbG9iYWxEYXRhJiwg
U2NyaXB0RXhlY3V0YWJsZSogc2NvcGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIv
RGVidWdnZXIuaAppbmRleCBmNDgyNDNjNDU0YWMzOTRmMGRmYjhjYWIwM2QyOTdiZDI0ZWZjMThl
Li5hMjM3MzI5MTg3ODAzZWRhOTU3YTM3ZDNhMGE5MDdhZmYwYjg5MjMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaApAQCAtNTgsNyArNTgsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICB9OwogCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBleGlzdHMgb25seSBmb3Ig
YmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCBleGlzdGluZyBXZWJTY3JpcHREZWJ1Z2dlciBj
bGllbnRzLgotICAgIEpTVmFsdWUgZXZhbHVhdGVJbkdsb2JhbENhbGxGcmFtZShjb25zdCBVU3Ry
aW5nJiwgSlNWYWx1ZSYgZXhjZXB0aW9uLCBKU0dsb2JhbE9iamVjdCopOworICAgIEpTX0VYUE9S
VF9QUklWQVRFIEpTVmFsdWUgZXZhbHVhdGVJbkdsb2JhbENhbGxGcmFtZShjb25zdCBVU3RyaW5n
JiwgSlNWYWx1ZSYgZXhjZXB0aW9uLCBKU0dsb2JhbE9iamVjdCopOwogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyQWN0aXZhdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2Vy
QWN0aXZhdGlvbi5oCmluZGV4IDQ0ZDA5YTE4MDc4YzRkZmUwZjdjNzAzY2IyYTU3NjIxYTA5NjFh
NjUuLjdlYjgzMDk0NjNkZGJlMGJmN2JmZjQ5YTk5NjUwOTNlNDBlMmQ2NzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmgKQEAg
LTYwLDEwICs2MCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blBy
b3BlcnR5U2xvdCB8IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBKU09iamVjdDo6U3RydWN0dXJl
RmxhZ3M7CiAKLSAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmLCBKU09i
amVjdCogYWN0aXZhdGlvbik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZmluaXNo
Q3JlYXRpb24oSlNHbG9iYWxEYXRhJiwgSlNPYmplY3QqIGFjdGl2YXRpb24pOwogCiAgICAgcHJp
dmF0ZToKLSAgICAgICAgRGVidWdnZXJBY3RpdmF0aW9uKEpTR2xvYmFsRGF0YSYpOworICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSBEZWJ1Z2dlckFjdGl2YXRpb24oSlNHbG9iYWxEYXRhJik7CiAg
ICAgICAgIFdyaXRlQmFycmllcjxKU0FjdGl2YXRpb24+IG1fYWN0aXZhdGlvbjsKICAgICB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxs
RnJhbWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFt
ZS5oCmluZGV4IGQ4ZmI5ZGFlNTg4NDI2NzU0YjBmNDk1NDg0NTYzOTI1NjU1ZDMzN2IuLjg2MDVh
ZjU0ZDNmYTQ0ZjJjNWJlMjIyOTk4MTI4MjMwOTU2MGE1N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oCkBAIC01MCw3ICs1MCw3
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBkeW5hbWljR2xv
YmFsT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9jYWxsRnJhbWUtPmR5bmFtaWNHbG9iYWxPYmpl
Y3QoKTsgfQogICAgICAgICBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbigpIGNvbnN0IHsgcmV0
dXJuIG1fY2FsbEZyYW1lLT5zY29wZUNoYWluKCk7IH0KLSAgICAgICAgY29uc3QgVVN0cmluZyog
ZnVuY3Rpb25OYW1lKCkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0IFVT
dHJpbmcqIGZ1bmN0aW9uTmFtZSgpIGNvbnN0OwogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBV
U3RyaW5nIGNhbGN1bGF0ZWRGdW5jdGlvbk5hbWUoKSBjb25zdDsKICAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgVHlwZSB0eXBlKCkgY29uc3Q7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEpT
T2JqZWN0KiB0aGlzT2JqZWN0KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9BbGxvY2F0aW9uU3BhY2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0FsbG9jYXRpb25TcGFjZS5oCmluZGV4IDU1MGNiOWFhM2IwNDZjYzhjNzQ2ZGZiMDI3OTk1OGJk
ZmI5NDQyMTIuLjAxYzMzOWI4MzYwYWYzMzZjMjdmMzlmMDlkYjMzMjgxNjc4YzhmM2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRpb25TcGFjZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRpb25TcGFjZS5oCkBAIC03Miw3ICs3
Miw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCogYWxsb2NhdGUoTWFya2VkU3BhY2U6OlNp
emVDbGFzcyYpOwogICAgIHZvaWQqIHRyeUFsbG9jYXRlKE1hcmtlZFNwYWNlOjpTaXplQ2xhc3Mm
KTsKLSAgICB2b2lkKiBhbGxvY2F0ZVNsb3dDYXNlKE1hcmtlZFNwYWNlOjpTaXplQ2xhc3MmKTsK
KyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkKiBhbGxvY2F0ZVNsb3dDYXNlKE1hcmtlZFNwYWNl
OjpTaXplQ2xhc3MmKTsKICAgICBNYXJrZWRCbG9jayogYWxsb2NhdGVCbG9jayhzaXplX3QgY2Vs
bFNpemUsIEFsbG9jYXRpb25FZmZvcnQpOwogICAgIAogICAgIEhlYXAqIG1faGVhcDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZUhlYXAuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZUhlYXAuaAppbmRleCBlZTQ5OWU1MWI1NTAwYTQyZTU4
YzBhMzUxYjcxZTE4ODY0YmVhYTY3Li5hYjI2YTE0NTY3ZjY0OTc2NWExYjg4NGE5N2I5ZDgwZjRj
YWNkNDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGVIZWFw
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlSGVhcC5oCkBAIC00MCw3
ICs0MCw3IEBAIGNsYXNzIEpTR2xvYmFsRGF0YTsKIGNsYXNzIEpTVmFsdWU7CiBjbGFzcyBTbG90
VmlzaXRvcjsKIAotY2xhc3MgV2Vha0hhbmRsZU93bmVyIHsKK2NsYXNzIEpTX0VYUE9SVF9QUklW
QVRFIFdlYWtIYW5kbGVPd25lciB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2Vha0hhbmRsZU93
bmVyKCk7CiAgICAgdmlydHVhbCBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEhhbmRs
ZTxVbmtub3duPiwgdm9pZCogY29udGV4dCwgU2xvdFZpc2l0b3ImKTsKQEAgLTY1LDcgKzY1LDcg
QEAgcHVibGljOgogICAgIHZvaWQgdmlzaXRXZWFrSGFuZGxlcyhIZWFwUm9vdFZpc2l0b3ImKTsK
ICAgICB2b2lkIGZpbmFsaXplV2Vha0hhbmRsZXMoKTsKIAotICAgIHZvaWQgd3JpdGVCYXJyaWVy
KEhhbmRsZVNsb3QsIGNvbnN0IEpTVmFsdWUmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lk
IHdyaXRlQmFycmllcihIYW5kbGVTbG90LCBjb25zdCBKU1ZhbHVlJik7CiAKICNpZiAhQVNTRVJU
X0RJU0FCTEVECiAgICAgYm9vbCBoYXNXZWFrT3duZXIoSGFuZGxlU2xvdCwgV2Vha0hhbmRsZU93
bmVyKik7CkBAIC0xMTEsNyArMTExLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgSGFuZGxlU2xv
dCB0b0hhbmRsZShOb2RlKik7CiAgICAgc3RhdGljIE5vZGUqIHRvTm9kZShIYW5kbGVTbG90KTsK
IAotICAgIHZvaWQgZ3JvdygpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZ3JvdygpOwog
ICAgIAogI2lmIEVOQUJMRShHQ19WQUxJREFUSU9OKSB8fCAhQVNTRVJUX0RJU0FCTEVECiAgICAg
Ym9vbCBpc1ZhbGlkV2Vha05vZGUoTm9kZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCmlu
ZGV4IDFiMjI4MjUzYjg3NjY2MGZhMzBlZWViZDAyNjRlYzRiZmNmYWUxMDUuLjNjNzhkNjIwZmFl
NDk2YjM0MTJjZmNiMWVjMjUyYWE3OTAxZmE0OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
LmgKQEAgLTc4LDE0ICs3OCwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBIZWFwKEpT
R2xvYmFsRGF0YSosIEhlYXBTaXplKTsKICAgICAgICAgfkhlYXAoKTsKLSAgICAgICAgdm9pZCBk
ZXN0cm95KCk7IC8vIEpTR2xvYmFsRGF0YSBtdXN0IGNhbGwgZGVzdHJveSgpIGJlZm9yZSB+SGVh
cCgpLgorICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGRlc3Ryb3koKTsgLy8gSlNHbG9i
YWxEYXRhIG11c3QgY2FsbCBkZXN0cm95KCkgYmVmb3JlIH5IZWFwKCkuCiAKICAgICAgICAgSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxEYXRhOyB9CiAg
ICAgICAgIEFsbG9jYXRpb25TcGFjZSYgb2JqZWN0U3BhY2UoKSB7IHJldHVybiBtX29iamVjdFNw
YWNlOyB9CiAgICAgICAgIE1hY2hpbmVUaHJlYWRzJiBtYWNoaW5lVGhyZWFkcygpIHsgcmV0dXJu
IG1fbWFjaGluZVRocmVhZHM7IH0KIAotICAgICAgICBHQ0FjdGl2aXR5Q2FsbGJhY2sqIGFjdGl2
aXR5Q2FsbGJhY2soKTsKLSAgICAgICAgdm9pZCBzZXRBY3Rpdml0eUNhbGxiYWNrKFBhc3NPd25Q
dHI8R0NBY3Rpdml0eUNhbGxiYWNrPik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEdDQWN0
aXZpdHlDYWxsYmFjayogYWN0aXZpdHlDYWxsYmFjaygpOworICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkIHNldEFjdGl2aXR5Q2FsbGJhY2soUGFzc093blB0cjxHQ0FjdGl2aXR5Q2FsbGJh
Y2s+KTsKIAogICAgICAgICAvLyB0cnVlIGlmIGFuIGFsbG9jYXRpb24gb3IgY29sbGVjdGlvbiBp
cyBpbiBwcm9ncmVzcwogICAgICAgICBpbmxpbmUgYm9vbCBpc0J1c3koKTsKQEAgLTk0LDI2ICs5
NCwyNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCogYWxsb2NhdGUoc2l6ZV90KTsK
IAogICAgICAgICB0eXBlZGVmIHZvaWQgKCpGaW5hbGl6ZXIpKEpTQ2VsbCopOwotICAgICAgICB2
b2lkIGFkZEZpbmFsaXplcihKU0NlbGwqLCBGaW5hbGl6ZXIpOworICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIGFkZEZpbmFsaXplcihKU0NlbGwqLCBGaW5hbGl6ZXIpOwogCiAgICAgICAg
IHZvaWQgbm90aWZ5SXNTYWZlVG9Db2xsZWN0KCkgeyBtX2lzU2FmZVRvQ29sbGVjdCA9IHRydWU7
IH0KLSAgICAgICAgdm9pZCBjb2xsZWN0QWxsR2FyYmFnZSgpOworICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIGNvbGxlY3RBbGxHYXJiYWdlKCk7CiAKICAgICAgICAgdm9pZCByZXBvcnRF
eHRyYU1lbW9yeUNvc3Qoc2l6ZV90IGNvc3QpOwogCi0gICAgICAgIHZvaWQgcHJvdGVjdChKU1Zh
bHVlKTsKLSAgICAgICAgYm9vbCB1bnByb3RlY3QoSlNWYWx1ZSk7IC8vIFRydWUgd2hlbiB0aGUg
cHJvdGVjdCBjb3VudCBkcm9wcyB0byAwLgorICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lk
IHByb3RlY3QoSlNWYWx1ZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgdW5wcm90
ZWN0KEpTVmFsdWUpOyAvLyBUcnVlIHdoZW4gdGhlIHByb3RlY3QgY291bnQgZHJvcHMgdG8gMC4K
ICAgICAgICAgCiAgICAgICAgIHZvaWQgamV0dGlzb25ERkdDb2RlQmxvY2soUGFzc093blB0cjxD
b2RlQmxvY2s+KTsKIAotICAgICAgICBzaXplX3Qgc2l6ZSgpOwotICAgICAgICBzaXplX3QgY2Fw
YWNpdHkoKTsKLSAgICAgICAgc2l6ZV90IG9iamVjdENvdW50KCk7Ci0gICAgICAgIHNpemVfdCBn
bG9iYWxPYmplY3RDb3VudCgpOwotICAgICAgICBzaXplX3QgcHJvdGVjdGVkT2JqZWN0Q291bnQo
KTsKLSAgICAgICAgc2l6ZV90IHByb3RlY3RlZEdsb2JhbE9iamVjdENvdW50KCk7Ci0gICAgICAg
IFBhc3NPd25QdHI8VHlwZUNvdW50U2V0PiBwcm90ZWN0ZWRPYmplY3RUeXBlQ291bnRzKCk7Ci0g
ICAgICAgIFBhc3NPd25QdHI8VHlwZUNvdW50U2V0PiBvYmplY3RUeXBlQ291bnRzKCk7CisgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBzaXplKCk7CisgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHNpemVfdCBjYXBhY2l0eSgpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzaXpl
X3Qgb2JqZWN0Q291bnQoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGdsb2Jh
bE9iamVjdENvdW50KCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBwcm90ZWN0
ZWRPYmplY3RDb3VudCgpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzaXplX3QgcHJvdGVj
dGVkR2xvYmFsT2JqZWN0Q291bnQoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgUGFzc093
blB0cjxUeXBlQ291bnRTZXQ+IHByb3RlY3RlZE9iamVjdFR5cGVDb3VudHMoKTsKKyAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgUGFzc093blB0cjxUeXBlQ291bnRTZXQ+IG9iamVjdFR5cGVDb3Vu
dHMoKTsKIAogICAgICAgICB2b2lkIHB1c2hUZW1wU29ydFZlY3RvcihWZWN0b3I8VmFsdWVTdHJp
bmdQYWlyPiopOwogICAgICAgICB2b2lkIHBvcFRlbXBTb3J0VmVjdG9yKFZlY3RvcjxWYWx1ZVN0
cmluZ1BhaXI+Kik7CkBAIC0xNDEsOCArMTQxLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemUoSGFuZGxlPFVua25vd24+LCB2b2lkKiBjb250ZXh0
KTsKICAgICAgICAgfTsKIAotICAgICAgICBib29sIGlzVmFsaWRBbGxvY2F0aW9uKHNpemVfdCk7
Ci0gICAgICAgIHZvaWQgcmVwb3J0RXh0cmFNZW1vcnlDb3N0U2xvd0Nhc2Uoc2l6ZV90KTsKKyAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1ZhbGlkQWxsb2NhdGlvbihzaXplX3QpOwor
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHJlcG9ydEV4dHJhTWVtb3J5Q29zdFNsb3dD
YXNlKHNpemVfdCk7CiAKICAgICAgICAgLy8gQ2FsbCB0aGlzIGZ1bmN0aW9uIGJlZm9yZSBhbnkg
b3BlcmF0aW9uIHRoYXQgbmVlZHMgdG8ga25vdyB3aGljaCBjZWxscwogICAgICAgICAvLyBpbiB0
aGUgaGVhcCBhcmUgbGl2ZS4gKEZvciBleGFtcGxlLCBjYWxsIHRoaXMgZnVuY3Rpb24gYmVmb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJr
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5oCmlu
ZGV4IDY5YzQ1MzdiZGFiZWY2NGJkM2YwMDg4YjFlNGU2ODRlOTJmZWJlMmQuLjBmNWE0YzNhYTJl
ZjBkNjVhMTA4ZDMxMDlkZDc0ZGRiYmFjYWYxZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5oCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB2b2lkIGdhdGhlckNvbnNlcnZhdGl2ZVJvb3RzKENvbnNlcnZhdGl2
ZVJvb3RzJiwgdm9pZCogc3RhY2tDdXJyZW50KTsKIAogICAgICAgICB2b2lkIG1ha2VVc2FibGVG
cm9tTXVsdGlwbGVUaHJlYWRzKCk7Ci0gICAgICAgIHZvaWQgYWRkQ3VycmVudFRocmVhZCgpOyAv
LyBPbmx5IG5lZWRzIHRvIGJlIGNhbGxlZCBieSBjbGllbnRzIHRoYXQgY2FuIHVzZSB0aGUgc2Ft
ZSBoZWFwIGZyb20gbXVsdGlwbGUgdGhyZWFkcy4KKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCBhZGRDdXJyZW50VGhyZWFkKCk7IC8vIE9ubHkgbmVlZHMgdG8gYmUgY2FsbGVkIGJ5IGNs
aWVudHMgdGhhdCBjYW4gdXNlIHRoZSBzYW1lIGhlYXAgZnJvbSBtdWx0aXBsZSB0aHJlYWRzLgog
CiAgICAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBnYXRoZXJGcm9tQ3VycmVudFRocmVhZChDb25z
ZXJ2YXRpdmVSb290cyYsIHZvaWQqIHN0YWNrQ3VycmVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtTdGFjay5oCmluZGV4IGM1MDgwMTk0ODg3MDE5YzlhOGNkNDhiMzczNzc2ZDhhOGY5
NzhkYTcuLjdmZWNlYzEyODgwMzdiNTdmZDUxODJiNGI2MGQxNTczOWVmZmUxYjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5oCkBAIC0xMTEsNyArMTExLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgTWFya1N0YWNrU2VnbWVudCogbV90b3BT
ZWdtZW50OwogICAgICAgICAKLSAgICAgICAgdm9pZCBleHBhbmQoKTsKKyAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBleHBhbmQoKTsKICAgICAgICAgCiAgICAgICAgIE1hcmtTdGFja1Nl
Z21lbnRBbGxvY2F0b3ImIG1fYWxsb2NhdG9yOwogCkBAIC0yNDEsNyArMjQxLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgc3RhdGljIHZv
aWQgdmFsaWRhdGUoSlNDZWxsKik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2
b2lkIHZhbGlkYXRlKEpTQ2VsbCopOwogCiAgICAgICAgIHZvaWQgYXBwZW5kKEpTVmFsdWUqKTsK
ICAgICAgICAgdm9pZCBhcHBlbmQoSlNWYWx1ZSosIHNpemVfdCBjb3VudCk7CkBAIC0yNTAsNyAr
MjUwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgaW50ZXJuYWxBcHBlbmQoSlND
ZWxsKik7CiAgICAgICAgIHZvaWQgaW50ZXJuYWxBcHBlbmQoSlNWYWx1ZSk7CiAgICAgICAgIAot
ICAgICAgICB2b2lkIG1lcmdlT3BhcXVlUm9vdHMoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgdm9pZCBtZXJnZU9wYXF1ZVJvb3RzKCk7CiAgICAgICAgIAogICAgICAgICB2b2lkIG1lcmdl
T3BhcXVlUm9vdHNJZk5lY2Vzc2FyeSgpCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL1ZUYWJsZVNwZWN0cnVtLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9WVGFibGVTcGVjdHJ1bS5oCmluZGV4IDhhOTczN2U5YmFiZmMzMGQ0MWExZjMyMGVh
YmE5ZmQ0MDU3NmYxZjYuLmE1MGEwNGY0NzdjZmRkYjBiNjM1ZjUxZDI4MzQ2MjUwOGQ2Mzc1NzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1ZUYWJsZVNwZWN0cnVtLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvVlRhYmxlU3BlY3RydW0uaApAQCAtMzks
NyArMzksNyBAQCBwdWJsaWM6CiAgICAgflZUYWJsZVNwZWN0cnVtKCk7CiAgICAgCiAgICAgdm9p
ZCBjb3VudFZQdHIodm9pZCopOwotICAgIHZvaWQgY291bnQoSlNDZWxsKik7CisgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBjb3VudChKU0NlbGwqKTsKICAgICAKICAgICB2b2lkIGR1bXAoRklM
RSogb3V0cHV0LCBjb25zdCBjaGFyKiBjb21tZW50KTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9Xcml0ZUJhcnJpZXJTdXBwb3J0LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9Xcml0ZUJhcnJpZXJTdXBwb3J0LmgKaW5kZXggMDBiOWJiOTdmZTVjYWYx
ZWI5ZDlkYjY4OWVhZThmMzRkY2EwYTQ2YS4uNWQ3ZDJmNmZlMTVjYTk2NTkzZGViOTkyNmM0ZjBk
N2UxYzI5NjZmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV3JpdGVC
YXJyaWVyU3VwcG9ydC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dyaXRlQmFy
cmllclN1cHBvcnQuaApAQCAtODEsOCArODEsOCBAQCBwdWJsaWM6CiAgICAgfQogI2Vsc2UKICAg
ICAvLyBUaGVzZSBhcmUgbmVjZXNzYXJ5IHRvIHdvcmsgYXJvdW5kIG5vdCBoYXZpbmcgY29uZGl0
aW9uYWwgZXhwb3J0cy4KLSAgICBzdGF0aWMgY2hhciB1c2VzV2l0aEJhcnJpZXJGcm9tQ3BwOwot
ICAgIHN0YXRpYyBjaGFyIHVzZXNXaXRob3V0QmFycmllckZyb21DcHA7CisgICAgSlNfRVhQT1JU
REFUQSBzdGF0aWMgY2hhciB1c2VzV2l0aEJhcnJpZXJGcm9tQ3BwOworICAgIEpTX0VYUE9SVERB
VEEgc3RhdGljIGNoYXIgdXNlc1dpdGhvdXRCYXJyaWVyRnJvbUNwcDsKICNlbmRpZiAvLyBFTkFC
TEUoV1JJVEVfQkFSUklFUl9QUk9GSUxJTkcpCiAKICAgICBzdGF0aWMgdm9pZCBjb3VudFdyaXRl
QmFycmllcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKaW5kZXggMjNmMmNkZTlj
OTU0ZWU2NjUxNjY3NjdhMDlkOWQxOTQ5Mzc4ZmM1Yi4uNTA5OGRjNzZjN2IyODQ5Yzk2ZTdmODc0
NmRmZDkxNjU4YTY4MDlkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9Ob2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAt
MTgxLDcgKzE4MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTdGF0ZW1lbnROb2RlKGlu
dCk7CiAKICAgICBwdWJsaWM6Ci0gICAgICAgIHZvaWQgc2V0TG9jKGludCBmaXJzdExpbmUsIGlu
dCBsYXN0TGluZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0TG9jKGludCBm
aXJzdExpbmUsIGludCBsYXN0TGluZSk7CiAgICAgICAgIGludCBmaXJzdExpbmUoKSBjb25zdCB7
IHJldHVybiBsaW5lTm8oKTsgfQogICAgICAgICBpbnQgbGFzdExpbmUoKSBjb25zdCB7IHJldHVy
biBtX2xhc3RMaW5lOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyQXJlbmEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJl
bmEuaAppbmRleCAzNTY3NGI2MDRmZjJmM2M0NjgzOGRkMzgyZjU3NTA3YTcwYjg4ODA2Li40OWYw
YWI2YmY4NDIyYjg5MDU3OWEwYjg0ZDA3MjNhZjY0NjMwODY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5oCkBAIC0xNTksNyArMTU5LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHZvaWQgcmVtb3ZlTGFzdCgpOwogCiAgICAgICAgIGJvb2wgaXNFbXB0
eSgpIGNvbnN0OwotICAgICAgICB2b2lkIHJlc2V0KCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgcmVzZXQoKTsKIAogICAgICAgICBJZGVudGlmaWVyQXJlbmEmIGlkZW50aWZpZXJB
cmVuYSgpIHsgcmV0dXJuICptX2lkZW50aWZpZXJBcmVuYTsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Byb2ZpbGVyL1Byb2ZpbGUuaAppbmRleCA2YmYyOWY3YTZmODhiOWFlNGVlZTNlZDY3OTc2
MDIwZjFlYjI3ZjBmLi45NDU1ZTM1OTUwMzJmMmMzZDljNTJhMDgwOTVkNTRhYzk5ODZlYTBlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlLmgKQEAgLTQ0LDExICs0NCwx
MSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZG91YmxlIHRvdGFsVGltZSgpIGNvbnN0IHsg
cmV0dXJuIG1faGVhZC0+dG90YWxUaW1lKCk7IH0KICAgICAgICAgdW5zaWduZWQgaW50IHVpZCgp
IGNvbnN0IHsgcmV0dXJuIG1fdWlkOyB9CiAKLSAgICAgICAgdm9pZCBmb3JFYWNoKHZvaWQgKFBy
b2ZpbGVOb2RlOjoqKSgpKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmb3JFYWNo
KHZvaWQgKFByb2ZpbGVOb2RlOjoqKSgpKTsKIAotICAgICAgICB2b2lkIGZvY3VzKGNvbnN0IFBy
b2ZpbGVOb2RlKik7Ci0gICAgICAgIHZvaWQgZXhjbHVkZShjb25zdCBQcm9maWxlTm9kZSopOwot
ICAgICAgICB2b2lkIHJlc3RvcmVBbGwoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBmb2N1cyhjb25zdCBQcm9maWxlTm9kZSopOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2
b2lkIGV4Y2x1ZGUoY29uc3QgUHJvZmlsZU5vZGUqKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgdm9pZCByZXN0b3JlQWxsKCk7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgIHZvaWQgZGVi
dWdQcmludERhdGEoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FyZ0xpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3Qu
aAppbmRleCAwNWM4ODE5NWU4YjkwZjBiYmZmMTg1ZTRkNDdlNDBkOTkwMTYwNGZhLi5jYjVjZWU5
MjM3MmE5MmUwZjY2MTY0MWFkMDFmYmJmZDYyNWFjNTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJnTGlzdC5oCkBAIC0xNDEsNyArMTQxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHN0YXRpYyB2b2lkIG1hcmtMaXN0cyhIZWFwUm9vdFZpc2l0b3ImLCBMaXN0U2V0Jik7
CiAKICAgICBwcml2YXRlOgotICAgICAgICB2b2lkIHNsb3dBcHBlbmQoSlNWYWx1ZSk7CisgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2xvd0FwcGVuZChKU1ZhbHVlKTsKICAgICAgICAg
CiAgICAgICAgIFJlZ2lzdGVyKiBtX2J1ZmZlcjsKICAgICAgICAgc2l6ZV90IG1fc2l6ZTsKQEAg
LTIxNCw3ICsyMTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3RfaXRlcmF0b3Ig
YmVnaW4oKSBjb25zdCB7IHJldHVybiBtX2FyZ3M7IH0KICAgICAgICAgY29uc3RfaXRlcmF0b3Ig
ZW5kKCkgY29uc3QgeyByZXR1cm4gbV9hcmdzICsgbV9hcmdDb3VudDsgfQogCi0gICAgICAgIHZv
aWQgZ2V0U2xpY2UoaW50IHN0YXJ0SW5kZXgsIEFyZ0xpc3QmIHJlc3VsdCkgY29uc3Q7CisgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZ2V0U2xpY2UoaW50IHN0YXJ0SW5kZXgsIEFyZ0xp
c3QmIHJlc3VsdCkgY29uc3Q7CiAgICAgcHJpdmF0ZToKICAgICAgICAgSlNWYWx1ZSogbV9hcmdz
OwogICAgICAgICBzaXplX3QgbV9hcmdDb3VudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NhbGxEYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9DYWxsRGF0YS5oCmluZGV4IGIxMzhmNTQ4NDA1YzI0ZmEzYzU5ZjE1ODM4ZjkwODY0ZjZiNTNm
ZTcuLjE1YTZhMGE0OGZiODY0MWJkOThlN2Y1OWNhODVmM2ZjYjNlNjU5NjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhbGxEYXRhLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuaApAQCAtNTcsNyArNTcsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgfSBqczsKICAgICB9OwogCi0gICAgSlNWYWx1ZSBjYWxsKEV4ZWNT
dGF0ZSosIEpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIENhbGxUeXBlLCBjb25zdCBDYWxsRGF0YSYs
IEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0Jik7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgSlNWYWx1ZSBjYWxsKEV4ZWNTdGF0ZSosIEpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIENhbGxU
eXBlLCBjb25zdCBDYWxsRGF0YSYsIEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0Jik7
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21wbGV0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21wbGV0aW9uLmgKaW5kZXggYzNkYmRmYzU4YzhiZTYwNWJhZTQyNGFlNjA4ZWI4ZDAxMzJkYzFk
MC4uM2QzYjg2ZmU0NGRjNWYzNTczY2ZjNmQ4NmJmNjRkZDE0N2U3NzAwNCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uaApAQCAtMzEsOCArMzEsOCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICBjbGFzcyBTY29wZUNoYWluTm9kZTsKICAgICBjbGFzcyBTb3VyY2VD
b2RlOwogCi0gICAgYm9vbCBjaGVja1N5bnRheChFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2Rl
JiwgSlNWYWx1ZSogZXhjZXB0aW9uID0gMCk7Ci0gICAgSlNWYWx1ZSBldmFsdWF0ZShFeGVjU3Rh
dGUqLCBTY29wZUNoYWluTm9kZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IEpTVmFsdWUoKSwgSlNWYWx1ZSogZXhjZXB0aW9uID0gMCk7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgYm9vbCBjaGVja1N5bnRheChFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNW
YWx1ZSogZXhjZXB0aW9uID0gMCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBldmFs
dWF0ZShFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IEpTVmFsdWUoKSwgSlNWYWx1ZSogZXhjZXB0aW9uID0gMCk7CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db25zdHJ1Y3REYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25z
dHJ1Y3REYXRhLmgKaW5kZXggY2M4ZjQ2OTc3MDQ5MmYxOWY1MWI1MWZjZDAyZWNmNjY1ZmExZjkz
ZC4uZDdhM2M3M2QzZDc2ZDdiY2QxNjQxMWYxZjZkYjlhNzI2NzY1MzY0MyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0RGF0YS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuaApAQCAtNTYsNyArNTYsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfSBqczsKICAgICB9OwogCi0gICAgSlNPYmplY3Qq
IGNvbnN0cnVjdChFeGVjU3RhdGUqLCBKU1ZhbHVlIGNvbnN0cnVjdG9yLCBDb25zdHJ1Y3RUeXBl
LCBjb25zdCBDb25zdHJ1Y3REYXRhJiwgY29uc3QgQXJnTGlzdCYpOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIEpTT2JqZWN0KiBjb25zdHJ1Y3QoRXhlY1N0YXRlKiwgSlNWYWx1ZSBjb25zdHJ1Y3Rv
ciwgQ29uc3RydWN0VHlwZSwgY29uc3QgQ29uc3RydWN0RGF0YSYsIGNvbnN0IEFyZ0xpc3QmKTsK
IAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGF0ZUluc3RhbmNlLmgKaW5kZXggMzI0MTcwYjFjYWY0MDgwNzdkMGZlNDUxZDhiZjU1NWUwNjY0
OWMwMC4uOGFmODlhNzI4MjJlOWQ4Mzk5OGVhOWJkOWUyOTlmMjdjOTVmMzc4MCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmgKQEAgLTMxLDkgKzMxLDkg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBEYXRlSW5zdGFuY2UgOiBwdWJsaWMgSlNX
cmFwcGVyT2JqZWN0IHsKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIERhdGVJbnN0YW5jZShFeGVj
U3RhdGUqLCBTdHJ1Y3R1cmUqKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgRGF0ZUluc3Rh
bmNlKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopOwogICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KEpTR2xvYmFsRGF0YSYpOwotICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0
YSYsIGRvdWJsZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZmluaXNoQ3JlYXRp
b24oSlNHbG9iYWxEYXRhJiwgZG91YmxlKTsKICAgICAgICAgCiAgICAgcHVibGljOgogICAgICAg
ICB0eXBlZGVmIEpTV3JhcHBlck9iamVjdCBCYXNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Vycm9yLmgKaW5kZXggYWM3MzU0ZDMxNzIwNGNlN2E3N2M5ZThlMDlmMDNlNzNlYTFhMmYyMy4u
NjhmZWViZDAyMzBkMjBjM2IxN2VmMWYwYmY5NDgwOWQ1Njk1MzlkMSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FcnJvci5oCkBAIC00NiwxMiArNDYsMTIgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgSlNPYmplY3QqIGNyZWF0ZVR5cGVFcnJvcihKU0dsb2JhbE9iamVjdCosIGNvbnN0IFVT
dHJpbmcmKTsKICAgICBKU09iamVjdCogY3JlYXRlVVJJRXJyb3IoSlNHbG9iYWxPYmplY3QqLCBj
b25zdCBVU3RyaW5nJik7CiAgICAgLy8gRXhlY1N0YXRlIHdyYXBwZXJzLgotICAgIEpTT2JqZWN0
KiBjcmVhdGVFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJik7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgSlNPYmplY3QqIGNyZWF0ZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcm
KTsKICAgICBKU09iamVjdCogY3JlYXRlRXZhbEVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJp
bmcmKTsKLSAgICBKU09iamVjdCogY3JlYXRlUmFuZ2VFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBV
U3RyaW5nJik7Ci0gICAgSlNPYmplY3QqIGNyZWF0ZVJlZmVyZW5jZUVycm9yKEV4ZWNTdGF0ZSos
IGNvbnN0IFVTdHJpbmcmKTsKLSAgICBKU09iamVjdCogY3JlYXRlU3ludGF4RXJyb3IoRXhlY1N0
YXRlKiwgY29uc3QgVVN0cmluZyYpOwotICAgIEpTT2JqZWN0KiBjcmVhdGVUeXBlRXJyb3IoRXhl
Y1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0
KiBjcmVhdGVSYW5nZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSBKU09iamVjdCogY3JlYXRlUmVmZXJlbmNlRXJyb3IoRXhlY1N0YXRlKiwg
Y29uc3QgVVN0cmluZyYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjcmVhdGVT
eW50YXhFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJik7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgSlNPYmplY3QqIGNyZWF0ZVR5cGVFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5n
Jik7CiAgICAgSlNPYmplY3QqIGNyZWF0ZVVSSUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJp
bmcmKTsKIAogICAgIC8vIE1ldGhvZHMgdG8gYWRkIApAQCAtNjEsMTIgKzYxLDEyIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIEpTT2JqZWN0KiBhZGRFcnJvckluZm8oRXhlY1N0YXRlKiwgSlNPYmpl
Y3QqIGVycm9yLCBpbnQgbGluZSwgY29uc3QgU291cmNlQ29kZSYpOwogCiAgICAgLy8gTWV0aG9k
cyB0byB0aHJvdyBFcnJvcnMuCi0gICAgSlNWYWx1ZSB0aHJvd0Vycm9yKEV4ZWNTdGF0ZSosIEpT
VmFsdWUpOwotICAgIEpTT2JqZWN0KiB0aHJvd0Vycm9yKEV4ZWNTdGF0ZSosIEpTT2JqZWN0Kik7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSB0aHJvd0Vycm9yKEV4ZWNTdGF0ZSosIEpT
VmFsdWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd0Vycm9yKEV4ZWNT
dGF0ZSosIEpTT2JqZWN0Kik7CiAKICAgICAvLyBDb252ZW5pZW5jZSB3cmFwcGVycywgY3JlYXRl
IGFuIHRocm93IGFuIGV4Y2VwdGlvbiB3aXRoIGEgZGVmYXVsdCBtZXNzYWdlLgotICAgIEpTT2Jq
ZWN0KiB0aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqKTsKLSAgICBKU09iamVjdCogdGhyb3dTeW50
YXhFcnJvcihFeGVjU3RhdGUqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdGhy
b3dUeXBlRXJyb3IoRXhlY1N0YXRlKik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3Qq
IHRocm93U3ludGF4RXJyb3IoRXhlY1N0YXRlKik7CiAKICAgICAvLyBDb252ZW5pZW5jZSB3cmFw
cGVycywgd3JhcCByZXN1bHQgYXMgYW4gRW5jb2RlZEpTVmFsdWUuCiAgICAgaW5saW5lIEVuY29k
ZWRKU1ZhbHVlIHRocm93Vk1FcnJvcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgZXJyb3IpIHsg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0Vycm9yKGV4ZWMsIGVycm9yKSk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaAppbmRleCBj
MjIyNjc5NTRhODcyM2M5MGYyY2UyMzA1NWI4NWZhZTUxYzcwZDk4Li5jYzhlNDk0NTQwNWUzYjY5
MDg5YzMxOWM5MDk1NGMxNDE5MDM4ZWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oCkBAIC0zMywxNSArMzMsMTUgQEAKIAogbmFtZXNw
YWNlIEpTQyB7CiAKLUpTT2JqZWN0KiBjcmVhdGVJbnRlcnJ1cHRlZEV4ZWN1dGlvbkV4Y2VwdGlv
bihKU0dsb2JhbERhdGEqKTsKK0pTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjcmVhdGVJbnRl
cnJ1cHRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihKU0dsb2JhbERhdGEqKTsKIGJvb2wgaXNJbnRlcnJ1
cHRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihKU09iamVjdCopOwogYm9vbCBpc0ludGVycnVwdGVkRXhl
Y3V0aW9uRXhjZXB0aW9uKEpTVmFsdWUpOwogCiBKU09iamVjdCogY3JlYXRlVGVybWluYXRlZEV4
ZWN1dGlvbkV4Y2VwdGlvbihKU0dsb2JhbERhdGEqKTsKIGJvb2wgaXNUZXJtaW5hdGVkRXhlY3V0
aW9uRXhjZXB0aW9uKEpTT2JqZWN0Kik7Ci1ib29sIGlzVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2Vw
dGlvbihKU1ZhbHVlKTsKK0pTX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNUZXJtaW5hdGVkRXhlY3V0
aW9uRXhjZXB0aW9uKEpTVmFsdWUpOwogCi1KU09iamVjdCogY3JlYXRlU3RhY2tPdmVyZmxvd0Vy
cm9yKEV4ZWNTdGF0ZSopOworSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIGNyZWF0ZVN0YWNr
T3ZlcmZsb3dFcnJvcihFeGVjU3RhdGUqKTsKIEpTT2JqZWN0KiBjcmVhdGVTdGFja092ZXJmbG93
RXJyb3IoSlNHbG9iYWxPYmplY3QqKTsKIEpTT2JqZWN0KiBjcmVhdGVPdXRPZk1lbW9yeUVycm9y
KEpTR2xvYmFsT2JqZWN0Kik7CiBKU09iamVjdCogY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJv
cihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgKaW5kZXggYThhY2YxYTQyZDUw
NjU1NjZkNGRmZWM3Yjg1MTczNWRlOGUyNjQ0Zi4uNDZjYzJmMjU1OTExYWQ5Y2FhZWIxMGI3ZjVk
NGY1OGYyMWVhMzI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RnVuY3Rpb25Db25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uQ29uc3RydWN0b3IuaApAQCAtNTksNyArNTksNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmpl
Y3QqLCBjb25zdCBBcmdMaXN0JiwgY29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25z
dCBVU3RyaW5nJiBzb3VyY2VVUkwsIGNvbnN0IFdURjo6VGV4dFBvc2l0aW9uJik7CiAgICAgSlNP
YmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgY29u
c3QgQXJnTGlzdCYpOwogCi0gICAgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdF
dmFsRW5hYmxlZENoZWNrKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgQXJnTGlz
dCYsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBVU3RyaW5nJiwgY29uc3QgV1RGOjpUZXh0UG9z
aXRpb24mKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogY29uc3RydWN0RnVuY3Rp
b25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBj
b25zdCBBcmdMaXN0JiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFVTdHJpbmcmLCBjb25zdCBX
VEY6OlRleHRQb3NpdGlvbiYpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGV1cmlzdGljcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSGV1cmlzdGljcy5oCmluZGV4IGExNDg1OWZhOGRjYTEyYWNjMWRk
MzAwNWJjYTc5YmEyODM4YjcwZTEuLjRiNTY1ZTVjODZiOGYyZmFhNDNlMGZmYTk4MzVmZjU5MmQ2
MDFiNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hldXJpc3Rp
Y3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZXVyaXN0aWNzLmgKQEAg
LTcwLDggKzcwLDggQEAgZXh0ZXJuIHVuc2lnbmVkIGdjTWFya1N0YWNrU2VnbWVudFNpemU7CiBl
eHRlcm4gdW5zaWduZWQgbWluaW11bU51bWJlck9mQ2VsbHNUb0tlZXA7CiBleHRlcm4gdW5zaWdu
ZWQgbWF4aW11bU51bWJlck9mU2hhcmVkU2VnbWVudHM7CiBleHRlcm4gdW5zaWduZWQgc2hhcmVk
U3RhY2tXYWtldXBUaHJlc2hvbGQ7Ci1leHRlcm4gdW5zaWduZWQgbnVtYmVyT2ZHQ01hcmtlcnM7
Ci1leHRlcm4gdW5zaWduZWQgb3BhcXVlUm9vdE1lcmdlVGhyZXNob2xkOworSlNfRVhQT1JUREFU
QSBleHRlcm4gdW5zaWduZWQgbnVtYmVyT2ZHQ01hcmtlcnM7CitKU19FWFBPUlREQVRBIGV4dGVy
biB1bnNpZ25lZCBvcGFxdWVSb290TWVyZ2VUaHJlc2hvbGQ7CiAKIHZvaWQgaW5pdGlhbGl6ZUhl
dXJpc3RpY3MoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SWRlbnRpZmllci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5o
CmluZGV4IDJjYzg4YjI1NjBhNzU1ZjdiZDg5NDQ3NmFlYjc4NGQ1MGViNWJhMjkuLjk0N2M5NWIz
M2IyZDgyYTk4ZjEwMGM4NWEzMDFkNWJlODljMzZkNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JZGVudGlmaWVyLmgKQEAgLTU2LDE0ICs1NiwxNCBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgICAgICBzdGF0aWMgSWRlbnRpZmllciBjcmVhdGVMQ2hhckZyb21VQ2hhcihKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFVDaGFyKiBzLCBpbnQgbGVuZ3RoKSB7IHJldHVy
biBJZGVudGlmaWVyKGdsb2JhbERhdGEsIGFkZDgoZ2xvYmFsRGF0YSwgcywgbGVuZ3RoKSk7IH0K
IAotICAgICAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9tKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWdu
ZWQgeSk7Ci0gICAgICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb20oRXhlY1N0YXRlKiBleGVjLCBp
bnQgeSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBJZGVudGlmaWVyIGZyb20o
RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCB5KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIElkZW50aWZpZXIgZnJvbShFeGVjU3RhdGUqIGV4ZWMsIGludCB5KTsKICAgICAgICAg
c3RhdGljIElkZW50aWZpZXIgZnJvbShFeGVjU3RhdGUqIGV4ZWMsIGRvdWJsZSB5KTsKICAgICAg
ICAgc3RhdGljIElkZW50aWZpZXIgZnJvbShKU0dsb2JhbERhdGEqLCB1bnNpZ25lZCB5KTsKICAg
ICAgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbShKU0dsb2JhbERhdGEqLCBpbnQgeSk7CiAgICAg
ICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb20oSlNHbG9iYWxEYXRhKiwgZG91YmxlIHkpOwogCi0g
ICAgICAgIHN0YXRpYyB1aW50MzJfdCB0b1VJbnQzMihjb25zdCBVU3RyaW5nJiwgYm9vbCYgb2sp
OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdWludDMyX3QgdG9VSW50MzIoY29u
c3QgVVN0cmluZyYsIGJvb2wmIG9rKTsKICAgICAgICAgdWludDMyX3QgdG9VSW50MzIoYm9vbCYg
b2spIGNvbnN0IHsgcmV0dXJuIHRvVUludDMyKG1fc3RyaW5nLCBvayk7IH0KICAgICAgICAgdW5z
aWduZWQgdG9BcnJheUluZGV4KGJvb2wmIG9rKSBjb25zdDsKIApAQCAtODQsNyArODQsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1w
bCosIGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICAgICAgc3RhdGljIGJvb2wg
ZXF1YWwoY29uc3QgU3RyaW5nSW1wbCogYSwgY29uc3QgU3RyaW5nSW1wbCogYikgeyByZXR1cm4g
OjplcXVhbChhLCBiKTsgfQogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+
IGFkZChFeGVjU3RhdGUqLCBjb25zdCBjaGFyKik7IC8vIE9ubHkgdG8gYmUgdXNlZCB3aXRoIHN0
cmluZyBsaXRlcmFscy4KKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQ
dHI8U3RyaW5nSW1wbD4gYWRkKEV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqKTsgLy8gT25seSB0byBi
ZSB1c2VkIHdpdGggc3RyaW5nIGxpdGVyYWxzLgogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
dHJpbmdJbXBsPiBhZGQoSlNHbG9iYWxEYXRhKiwgY29uc3QgY2hhciopOyAvLyBPbmx5IHRvIGJl
IHVzZWQgd2l0aCBzdHJpbmcgbGl0ZXJhbHMuCiAKICAgICBwcml2YXRlOgpAQCAtMTE5LDExICsx
MTksMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gYWRkU2xvd0Nhc2Uo
Z2xvYmFsRGF0YSwgcik7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
dHJpbmdJbXBsPiBhZGRTbG93Q2FzZShFeGVjU3RhdGUqLCBTdHJpbmdJbXBsKiByKTsKLSAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkU2xvd0Nhc2UoSlNHbG9iYWxEYXRh
KiwgU3RyaW5nSW1wbCogcik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNz
UmVmUHRyPFN0cmluZ0ltcGw+IGFkZFNsb3dDYXNlKEV4ZWNTdGF0ZSosIFN0cmluZ0ltcGwqIHIp
OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBs
PiBhZGRTbG93Q2FzZShKU0dsb2JhbERhdGEqLCBTdHJpbmdJbXBsKiByKTsKIAotICAgICAgICBz
dGF0aWMgdm9pZCBjaGVja0N1cnJlbnRJZGVudGlmaWVyVGFibGUoRXhlY1N0YXRlKik7Ci0gICAg
ICAgIHN0YXRpYyB2b2lkIGNoZWNrQ3VycmVudElkZW50aWZpZXJUYWJsZShKU0dsb2JhbERhdGEq
KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgY2hlY2tDdXJyZW50SWRl
bnRpZmllclRhYmxlKEV4ZWNTdGF0ZSopOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgdm9pZCBjaGVja0N1cnJlbnRJZGVudGlmaWVyVGFibGUoSlNHbG9iYWxEYXRhKik7CiAgICAg
fTsKIAogICAgIHRlbXBsYXRlIDw+IEFMV0FZU19JTkxJTkUgYm9vbCBJZGVudGlmaWVyOjpjYW5V
c2VTaW5nbGVDaGFyYWN0ZXJTdHJpbmcoTENoYXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmgKaW5kZXggMWE5M2NjYjliMWEzODkz
MzE5Y2MwMTcyNTczYzU2NTNkZDA2NzJjOS4uOTEzMDFhMGQ4ZmE2NmViNzFjNTc0NTQ0MTMwNTc4
NTFhM2Q2YmUxNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5p
dGlhbGl6ZVRocmVhZGluZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
aXRpYWxpemVUaHJlYWRpbmcuaApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgIC8vIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQu
IEl0IGlzIHNhZmUgdG8gY2FsbCBpdCByZXBlYXRlZGx5LgogICAgIC8vIERhcndpbiBpcyBhbiBl
eGNlcHRpb24gdG8gdGhpcyBydWxlOiBpdCBpcyBPSyB0byBjYWxsIHRoaXMgZnVuY3Rpb24gZnJv
bSBhbnkgdGhyZWFkLCBldmVuIHJlZW50cmFudGx5LgotICAgIHZvaWQgaW5pdGlhbGl6ZVRocmVh
ZGluZygpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZygp
OwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVy
bmFsRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVu
Y3Rpb24uaAppbmRleCA4ZTIxNzhlM2Y2NTk3OGE5YzFhZWFlOWE0NTVmNjI5YmYxNGNhZjAzLi5k
ZTVlYzg0MTUzMzZhYTZiMjVmODUwYmQwNTk3ZDgzZDAyZDllM2FiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCkBAIC0zMSw3ICszMSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRnVuY3Rpb25Qcm90b3R5cGU7CiAKLSAg
ICBjbGFzcyBJbnRlcm5hbEZ1bmN0aW9uIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworICAg
IGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEludGVybmFsRnVuY3Rpb24gOiBwdWJsaWMgSlNOb25G
aW5hbE9iamVjdCB7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmpl
Y3QgQmFzZTsKIApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29u
c3QgVVN0cmluZyBkaXNwbGF5TmFtZShFeGVjU3RhdGUqKTsKICAgICAgICAgY29uc3QgVVN0cmlu
ZyBjYWxjdWxhdGVkRGlzcGxheU5hbWUoRXhlY1N0YXRlKik7CiAKLSAgICAgICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90bykgCisgICAgICAgIEpTX0lOTElO
RSBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKSAKICAgICAg
ICAgeyAKICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBn
bG9iYWxPYmplY3QsIHByb3RvLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
ICZzX2luZm8pOyAKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eS5oCmluZGV4IGMyMDA2YTBlMmRiZDlmMzUzNTM4ZTE1MDZiMDYxZTA0YzlhOGQxNmMuLjBhODYx
ZTgxODg3MTQwMWZjZmM3ZjJmMWI3OWMyNjBkMGJmYzUyOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5LmgKQEAgLTYxLDE4ICs2MSwxOCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgZnJpZW5kIGNsYXNzIFdhbGtlcjsKIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAg
ZXhwbGljaXQgSlNBcnJheShKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKKyAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgZXhwbGljaXQgSlNBcnJheShKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUq
KTsKIAotICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYpOworICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYpOwog
ICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYsIHVuc2lnbmVkIGluaXRp
YWxMZW5ndGgsIEFycmF5Q3JlYXRpb25Nb2RlKTsKLSAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihKU0dsb2JhbERhdGEmLCBjb25zdCBBcmdMaXN0Jik7CisgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiwgY29uc3QgQXJnTGlzdCYpOwog
ICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYsIGNvbnN0IEpTVmFsdWUq
LCBzaXplX3QgbGVuZ3RoKTsKICAgICAKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgSlNO
b25GaW5hbE9iamVjdCBCYXNlOwogCiAgICAgICAgIEpTQXJyYXkoVlB0clN0ZWFsaW5nSGFja1R5
cGUpOwotICAgICAgICB2aXJ0dWFsIH5KU0FycmF5KCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZpcnR1YWwgfkpTQXJyYXkoKTsKIAogICAgICAgICBzdGF0aWMgSlNBcnJheSogY3JlYXRl
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAg
IHsKQEAgLTEwMywxNCArMTAzLDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAg
ICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU0NlbGwq
LCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAg
ICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAgICAgICAg
IHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlKTsKIAogICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25z
dCBDbGFzc0luZm8gc19pbmZvOwogICAgICAgICAKICAgICAgICAgdW5zaWduZWQgbGVuZ3RoKCkg
Y29uc3QgeyByZXR1cm4gbV9zdG9yYWdlLT5tX2xlbmd0aDsgfQotICAgICAgICB2b2lkIHNldExl
bmd0aCh1bnNpZ25lZCk7IC8vIE9LIHRvIHVzZSBvbiBuZXcgYXJyYXlzLCBidXQgbm90IGlmIGl0
IG1pZ2h0IGJlIGEgUmVnRXhwTWF0Y2hBcnJheS4KKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCBzZXRMZW5ndGgodW5zaWduZWQpOyAvLyBPSyB0byB1c2Ugb24gbmV3IGFycmF5cywgYnV0
IG5vdCBpZiBpdCBtaWdodCBiZSBhIFJlZ0V4cE1hdGNoQXJyYXkuCiAKICAgICAgICAgdm9pZCBz
b3J0KEV4ZWNTdGF0ZSopOwogICAgICAgICB2b2lkIHNvcnQoRXhlY1N0YXRlKiwgSlNWYWx1ZSBj
b21wYXJlRnVuY3Rpb24sIENhbGxUeXBlLCBjb25zdCBDYWxsRGF0YSYpOwpAQCAtMTcyLDcgKzE3
Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRP
RihKU0FycmF5LCBtX3ZlY3Rvckxlbmd0aCk7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMg
dm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisgICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0
b3ImKTsKIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzVmlz
aXRDaGlsZHJlbiB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBKU09iamVjdDo6U3RydWN0
dXJlRmxhZ3M7CkBAIC0xODIsOCArMTgyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0
YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNp
Z25lZCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5h
bWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlv
bk1vZGUpOwogCi0gICAgICAgIHZvaWQqIHN1YmNsYXNzRGF0YSgpIGNvbnN0OwotICAgICAgICB2
b2lkIHNldFN1YmNsYXNzRGF0YSh2b2lkKik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZv
aWQqIHN1YmNsYXNzRGF0YSgpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lk
IHNldFN1YmNsYXNzRGF0YSh2b2lkKik7CiAKICAgICBwcml2YXRlOgogICAgICAgICBib29sIGdl
dE93blByb3BlcnR5U2xvdFNsb3dDYXNlKEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0J5dGVBcnJheS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRl
QXJyYXkuaAppbmRleCAwMDQxZDE0YzQ0MDAxNThiM2VhZTFiM2FlZjJkNGFlZDlmZTFmZjNlLi5k
ZTU5YWVhMjUzYmEwNzJmMjBjNDQzZjlmNTE5OWRiZWNjMTliMTdmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmgKQEAgLTc2LDcgKzc2LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEpTQnl0ZUFycmF5
KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIEJ5dGVBcnJheSogc3RvcmFnZSk7CisgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIEpTQnl0ZUFycmF5KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIEJ5dGVB
cnJheSogc3RvcmFnZSk7CiAgICAgICAgIAogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIEpT
Qnl0ZUFycmF5KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
Qnl0ZUFycmF5KiBzdG9yYWdlKQpAQCAtODYsMTUgKzg2LDE1IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAgICAgcmV0dXJuIGFycmF5OwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYsIEpTR2xvYmFsT2JqZWN0Kiwg
SlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0IEpTQzo6Q2xhc3NJbmZvKiA9ICZzX2luZm8pOworICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
SlNHbG9iYWxEYXRhJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3Qg
SlNDOjpDbGFzc0luZm8qID0gJnNfaW5mbyk7CiAKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3du
UHJvcGVydHlTbG90KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6Oklk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU0M6OkpTQ2VsbCosIEpTQzo6RXhl
Y1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwotICAg
ICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7Ci0gICAgICAg
IHN0YXRpYyB2b2lkIHB1dChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlND
OjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpQdXRQcm9wZXJ0
eVNsb3QmKTsKLSAgICAgICAgc3RhdGljIHZvaWQgcHV0QnlJbmRleChKU0M6OkpTQ2VsbCosIEpT
Qzo6RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUpOworICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlND
OjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpF
eGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7Cisg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURl
c2NyaXB0b3ImKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0KEpT
Qzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xvdCYpOworICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQzo6SlNDZWxsKiwgSlND
OjpFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSk7CiAKLSAg
ICAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlND
OjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsK
KyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1l
cyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5
JiwgRW51bWVyYXRpb25Nb2RlKTsKIAogICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25z
dCBDbGFzc0luZm8gc19pbmZvOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDZWxsLmgKaW5kZXggM2JjMmJlZTFiYzA0Nzk1OWQ3ZTE3ODUwMjlhMjUyMjNkOTg2NDY2ZS4u
OWFiMDQ4YjFjNjQxMGZhMjI0OTZhYTdiMDk0ZThmMTBlNWFiZDU5NCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKQEAgLTc2LDIxICs3NiwyMSBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgdm9pZCBjbGVhclN0cnVjdHVyZSgpIHsgbV9zdHJ1Y3R1cmUuY2xlYXIoKTsg
fQogCiAgICAgICAgIC8vIEV4dHJhY3RpbmcgdGhlIHZhbHVlLgotICAgICAgICBib29sIGdldFN0
cmluZyhFeGVjU3RhdGUqIGV4ZWMsIFVTdHJpbmcmKSBjb25zdDsKLSAgICAgICAgVVN0cmluZyBn
ZXRTdHJpbmcoRXhlY1N0YXRlKiBleGVjKSBjb25zdDsgLy8gbnVsbCBzdHJpbmcgaWYgbm90IGEg
c3RyaW5nCi0gICAgICAgIEpTT2JqZWN0KiBnZXRPYmplY3QoKTsgLy8gTlVMTCBpZiBub3QgYW4g
b2JqZWN0CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgZ2V0U3RyaW5nKEV4ZWNTdGF0
ZSogZXhlYywgVVN0cmluZyYpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBVU3Ry
aW5nIGdldFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0OyAvLyBudWxsIHN0cmluZyBpZiBu
b3QgYSBzdHJpbmcKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIGdldE9iamVj
dCgpOyAvLyBOVUxMIGlmIG5vdCBhbiBvYmplY3QKICAgICAgICAgY29uc3QgSlNPYmplY3QqIGdl
dE9iamVjdCgpIGNvbnN0OyAvLyBOVUxMIGlmIG5vdCBhbiBvYmplY3QKICAgICAgICAgCi0gICAg
ICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwotICAg
ICAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0
cnVjdERhdGEmKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIENhbGxUeXBlIGdl
dENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0
RGF0YSYpOwogCiAgICAgICAgIC8vIEJhc2ljIGNvbnZlcnNpb25zLgotICAgICAgICBKU1ZhbHVl
IHRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpIGNvbnN0Owor
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIHRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSos
IFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpIGNvbnN0OwogICAgICAgICBib29sIGdldFByaW1pdGl2
ZU51bWJlcihFeGVjU3RhdGUqLCBkb3VibGUmIG51bWJlciwgSlNWYWx1ZSYpIGNvbnN0OwogICAg
ICAgICBib29sIHRvQm9vbGVhbihFeGVjU3RhdGUqKSBjb25zdDsKLSAgICAgICAgZG91YmxlIHRv
TnVtYmVyKEV4ZWNTdGF0ZSopIGNvbnN0OwotICAgICAgICBVU3RyaW5nIHRvU3RyaW5nKEV4ZWNT
dGF0ZSopIGNvbnN0OwotICAgICAgICBKU09iamVjdCogdG9PYmplY3QoRXhlY1N0YXRlKiwgSlNH
bG9iYWxPYmplY3QqKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgZG91YmxlIHRv
TnVtYmVyKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBVU3Ry
aW5nIHRvU3RyaW5nKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBKU09iamVjdCogdG9PYmplY3QoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqKSBjb25zdDsK
IAogICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9y
Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAppbmRleCAx
ZmZiNmFmYTZhN2ZjOTE4NzI5ZWY3MmE2ZWRhY2U4MmQ1ODEwNjliLi5jOTc0ZTgxZDU1MDZhYTAy
ZWExOTk3NzUzNmNiYWI1NzcxMGE5YjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5oCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNs
YXNzIEpJVENvbXBpbGVyOwogICAgIH0KIAotICAgIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3IoRXhlY1N0YXRlKik7CisgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSG9zdEZ1bmN0aW9u
QXNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqKTsKIAogICAgIHZvaWQgY3JlYXRlRGVzY3JpcHRvckZv
clRocm93aW5nUHJvcGVydHkoRXhlY1N0YXRlKiwgUHJvcGVydHlEZXNjcmlwdG9yJiwgY29uc3Qg
Y2hhciogbWVzc2FnZSk7CiAKQEAgLTU0LDcgKzU0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
cHVibGljOgogICAgICAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKIAotICAgICAg
ICBzdGF0aWMgSlNGdW5jdGlvbiogY3JlYXRlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0Kiwg
aW50IGxlbmd0aCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgTmF0aXZlRnVuY3Rpb24gbmF0aXZl
RnVuY3Rpb24sIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUNvbnN0cnVjdG9yID0gY2FsbEhvc3RGdW5j
dGlvbkFzQ29uc3RydWN0b3IpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNG
dW5jdGlvbiogY3JlYXRlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgaW50IGxlbmd0aCwg
Y29uc3QgSWRlbnRpZmllciYgbmFtZSwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIE5h
dGl2ZUZ1bmN0aW9uIG5hdGl2ZUNvbnN0cnVjdG9yID0gY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3Ry
dWN0b3IpOwogICAgICAgICBzdGF0aWMgSlNGdW5jdGlvbiogY3JlYXRlKEV4ZWNTdGF0ZSosIEpT
R2xvYmFsT2JqZWN0KiwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgTmF0aXZl
RXhlY3V0YWJsZSogbmF0aXZlRXhlY3V0YWJsZSk7CiAKICAgICAgICAgc3RhdGljIEpTRnVuY3Rp
b24qIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJs
ZSwgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4pCkBAIC02Nyw3ICs2Nyw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAKICAgICAgICAgdmlydHVhbCB+SlNGdW5jdGlvbigpOwogCi0gICAg
ICAgIGNvbnN0IFVTdHJpbmcmIG5hbWUoRXhlY1N0YXRlKik7CisgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIGNvbnN0IFVTdHJpbmcmIG5hbWUoRXhlY1N0YXRlKik7CiAgICAgICAgIGNvbnN0IFVT
dHJpbmcgZGlzcGxheU5hbWUoRXhlY1N0YXRlKik7CiAgICAgICAgIGNvbnN0IFVTdHJpbmcgY2Fs
Y3VsYXRlZERpc3BsYXlOYW1lKEV4ZWNTdGF0ZSopOwogCkBAIC05Nyw3ICs5Nyw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBpbmxpbmUgYm9vbCBpc0hvc3RGdW5jdGlvbigpIGNvbnN0Owog
ICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGpzRXhlY3V0YWJsZSgpIGNvbnN0OwogCi0gICAg
ICAgIGNvbnN0IFNvdXJjZUNvZGUqIHNvdXJjZUNvZGUoKSBjb25zdDsKKyAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgY29uc3QgU291cmNlQ29kZSogc291cmNlQ29kZSgpIGNvbnN0OwogCiAgICAg
ICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKQEAgLTEy
Niw3ICsxMjYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIGNv
bnN0IHN0YXRpYyB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3Bl
cnR5U2xvdCB8IEltcGxlbWVudHNIYXNJbnN0YW5jZSB8IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4g
fCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwog
Ci0gICAgICAgIEpTRnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNGdW5jdGlvbihFeGVjU3RhdGUqLCBK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwogICAgICAgICBKU0Z1bmN0aW9uKEV4ZWNTdGF0
ZSosIEZ1bmN0aW9uRXhlY3V0YWJsZSosIFNjb3BlQ2hhaW5Ob2RlKik7CiAgICAgICAgIAogICAg
ICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSosIE5hdGl2ZUV4ZWN1dGFibGUqLCBp
bnQgbGVuZ3RoLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKTsKQEAgLTE0NSw3ICsxNDUsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICBwcml2YXRlOgogICAgICAgICBleHBsaWNpdCBKU0Z1bmN0aW9u
KFZQdHJTdGVhbGluZ0hhY2tUeXBlKTsKIAotICAgICAgICBib29sIGlzSG9zdEZ1bmN0aW9uTm9u
SW5saW5lKCkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNIb3N0RnVu
Y3Rpb25Ob25JbmxpbmUoKSBjb25zdDsKIAogICAgICAgICBzdGF0aWMgSlNWYWx1ZSBhcmd1bWVu
dHNHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwogICAgICAg
ICBzdGF0aWMgSlNWYWx1ZSBjYWxsZXJHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3Qg
SWRlbnRpZmllciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxEYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
RGF0YS5jcHAKaW5kZXggZjZhOTBmMmQzZDY4N2ZhN2QyZmQ2YzdkYzRhMTY4NTE0ODI5NDI5Ni4u
OWZkZGFiOTEzN2I3NDc1M2VjNjBiYjY0NWI1ZWY3YzkyMzQyNTY3OSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCkBAIC0xMDEsNyArMTAxLDcg
QEAgZXh0ZXJuIGNvbnN0IEhhc2hUYWJsZSBnbG9iYWxPYmplY3RUYWJsZTsKIGV4dGVybiBjb25z
dCBIYXNoVGFibGUgbWF0aFRhYmxlOwogZXh0ZXJuIGNvbnN0IEhhc2hUYWJsZSBudW1iZXJDb25z
dHJ1Y3RvclRhYmxlOwogZXh0ZXJuIGNvbnN0IEhhc2hUYWJsZSBudW1iZXJQcm90b3R5cGVUYWJs
ZTsKLWV4dGVybiBjb25zdCBIYXNoVGFibGUgb2JqZWN0Q29uc3RydWN0b3JUYWJsZTsKK0pTX0VY
UE9SVERBVEEgZXh0ZXJuIGNvbnN0IEhhc2hUYWJsZSBvYmplY3RDb25zdHJ1Y3RvclRhYmxlOwog
ZXh0ZXJuIGNvbnN0IEhhc2hUYWJsZSBvYmplY3RQcm90b3R5cGVUYWJsZTsKIGV4dGVybiBjb25z
dCBIYXNoVGFibGUgcmVnRXhwVGFibGU7CiBleHRlcm4gY29uc3QgSGFzaFRhYmxlIHJlZ0V4cENv
bnN0cnVjdG9yVGFibGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbERhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
RGF0YS5oCmluZGV4IGI4MTk1MWJmMTE1NTBiNjg1MDEzZDNhYjZjYWQ4ZGYwZWQyNDQ5YjguLmQ0
ZjNlMDQ2OTY3ZjIzODE2ZDI0OTA2MGZlOTJiZmEzODY5ZmU1ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCkBAIC0xMTYsMTggKzExNiwxOCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgZW51bSBHbG9iYWxEYXRhVHlwZSB7IERlZmF1bHQsIEFQ
SUNvbnRleHRHcm91cCwgQVBJU2hhcmVkIH07CiAgICAgICAgIAogICAgICAgICBzdHJ1Y3QgQ2xp
ZW50RGF0YSB7Ci0gICAgICAgICAgICB2aXJ0dWFsIH5DbGllbnREYXRhKCkgPSAwOworICAgICAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCB+Q2xpZW50RGF0YSgpID0gMDsKICAgICAg
ICAgfTsKIAogICAgICAgICBib29sIGlzU2hhcmVkSW5zdGFuY2UoKSB7IHJldHVybiBnbG9iYWxE
YXRhVHlwZSA9PSBBUElTaGFyZWQ7IH0KICAgICAgICAgYm9vbCB1c2luZ0FQSSgpIHsgcmV0dXJu
IGdsb2JhbERhdGFUeXBlICE9IERlZmF1bHQ7IH0KICAgICAgICAgc3RhdGljIGJvb2wgc2hhcmVk
SW5zdGFuY2VFeGlzdHMoKTsKLSAgICAgICAgc3RhdGljIEpTR2xvYmFsRGF0YSYgc2hhcmVkSW5z
dGFuY2UoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTR2xvYmFsRGF0YSYg
c2hhcmVkSW5zdGFuY2UoKTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU0dsb2JhbERh
dGE+IGNyZWF0ZShUaHJlYWRTdGFja1R5cGUsIEhlYXBTaXplID0gU21hbGxIZWFwKTsKLSAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBjcmVhdGVMZWFrZWQoVGhyZWFkU3Rh
Y2tUeXBlLCBIZWFwU2l6ZSA9IFNtYWxsSGVhcCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBQYXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4gY3JlYXRlKFRocmVhZFN0YWNrVHlwZSwg
SGVhcFNpemUgPSBTbWFsbEhlYXApOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
UGFzc1JlZlB0cjxKU0dsb2JhbERhdGE+IGNyZWF0ZUxlYWtlZChUaHJlYWRTdGFja1R5cGUsIEhl
YXBTaXplID0gU21hbGxIZWFwKTsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SlNHbG9iYWxE
YXRhPiBjcmVhdGVDb250ZXh0R3JvdXAoVGhyZWFkU3RhY2tUeXBlLCBIZWFwU2l6ZSA9IFNtYWxs
SGVhcCk7Ci0gICAgICAgIH5KU0dsb2JhbERhdGEoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgfkpTR2xvYmFsRGF0YSgpOwogCiAgICAgICAgIHZvaWQgbWFrZVVzYWJsZUZyb21NdWx0aXBs
ZVRocmVhZHMoKSB7IGhlYXAubWFjaGluZVRocmVhZHMoKS5tYWtlVXNhYmxlRnJvbU11bHRpcGxl
VGhyZWFkcygpOyB9CiAKQEAgLTI5NCwyMSArMjk0LDIxIEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgICAgIENhY2hlZFRyYW5zY2VuZGVudGFsRnVuY3Rpb248c2luPiBjYWNoZWRTaW47CiAKLSAg
ICAgICAgdm9pZCByZXNldERhdGVDYWNoZSgpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2
b2lkIHJlc2V0RGF0ZUNhY2hlKCk7CiAKLSAgICAgICAgdm9pZCBzdGFydFNhbXBsaW5nKCk7Ci0g
ICAgICAgIHZvaWQgc3RvcFNhbXBsaW5nKCk7Ci0gICAgICAgIHZvaWQgZHVtcFNhbXBsZURhdGEo
RXhlY1N0YXRlKiBleGVjKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzdGFydFNh
bXBsaW5nKCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc3RvcFNhbXBsaW5nKCk7
CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZHVtcFNhbXBsZURhdGEoRXhlY1N0YXRl
KiBleGVjKTsKICAgICAgICAgdm9pZCByZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucygpOwogICAgICAg
ICBSZWdFeHBDYWNoZSogcmVnRXhwQ2FjaGUoKSB7IHJldHVybiBtX3JlZ0V4cENhY2hlOyB9CiAj
aWYgRU5BQkxFKFJFR0VYUF9UUkFDSU5HKQogICAgICAgICB2b2lkIGFkZFJlZ0V4cFRvVHJhY2Uo
UGFzc1JlZlB0cjxSZWdFeHA+IHJlZ0V4cCk7CiAjZW5kaWYKLSAgICAgICAgdm9pZCBkdW1wUmVn
RXhwVHJhY2UoKTsKLSAgICAgICAgdm9pZCBjbGVhckJ1aWx0aW5TdHJ1Y3R1cmVzKCk7CisgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZHVtcFJlZ0V4cFRyYWNlKCk7CisgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIHZvaWQgY2xlYXJCdWlsdGluU3RydWN0dXJlcygpOwogCiAgICAgICAg
IGJvb2wgaXNDb2xsZWN0b3JCdXN5KCkgeyByZXR1cm4gaGVhcC5pc0J1c3koKTsgfQotICAgICAg
ICB2b2lkIHJlbGVhc2VFeGVjdXRhYmxlTWVtb3J5KCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgcmVsZWFzZUV4ZWN1dGFibGVNZW1vcnkoKTsKIAogI2lmIEVOQUJMRShHQ19WQUxJ
REFUSU9OKQogICAgICAgICBib29sIGlzSW5pdGlhbGl6aW5nT2JqZWN0KCkgY29uc3Q7IApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggM2Y5
M2NkOGIxODEwMTMzOGM1MmNhY2M4NWEzYWQzYTAwM2MyYzdkMS4uNTgzOTBhYWU1Y2ZlYWI2Mzky
NDFjNTEwN2E3Y2Q2ODFlNjg2MmI4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC02Niw3ICs2Niw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBTaG91bGRJbnRlcnJ1cHRTY3JpcHRGdW5jdGlvblB0ciBzaG91bGRJbnRlcnJ1cHRT
Y3JpcHQ7CiAgICAgfTsKIAotICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTVmFy
aWFibGVPYmplY3QgeworICAgIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEpTR2xvYmFsT2JqZWN0
IDogcHVibGljIEpTVmFyaWFibGVPYmplY3QgewogICAgIHByaXZhdGU6CiAgICAgICAgIHR5cGVk
ZWYgSGFzaFNldDxSZWZQdHI8T3BhcXVlSlNXZWFrT2JqZWN0TWFwPiA+IFdlYWtNYXBTZXQ7CiAK
QEAgLTE0Nyw3ICsxNDcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIEpTX0VY
UE9SVERBVEEgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgc19nbG9iYWxPYmplY3RNZXRo
b2RUYWJsZTsKICAgICAgICAgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUqIG1fZ2xvYmFs
T2JqZWN0TWV0aG9kVGFibGU7CiAKLSAgICAgICAgdm9pZCBjcmVhdGVSYXJlRGF0YUlmTmVlZGVk
KCkKKyAgICAgICAgSlNfSU5MSU5FIHZvaWQgY3JlYXRlUmFyZURhdGFJZk5lZWRlZCgpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIGlmIChtX3JhcmVEYXRhKQogICAgICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTE1OCw3ICsxNTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAg
ICAgIHR5cGVkZWYgSlNWYXJpYWJsZU9iamVjdCBCYXNlOwogCi0gICAgICAgIHN0YXRpYyBKU0ds
b2JhbE9iamVjdCogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCisgICAgICAgIEpTX0lOTElORSBzdGF0aWMgSlNHbG9iYWxPYmplY3QqIGNyZWF0
ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAg
ICB7CiAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbmV3IChhbGxv
Y2F0ZUNlbGw8SlNHbG9iYWxPYmplY3Q+KGdsb2JhbERhdGEuaGVhcCkpIEpTR2xvYmFsT2JqZWN0
KGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7CiAgICAgICAgICAgICBnbG9iYWxPYmplY3QtPmZpbmlz
aENyZWF0aW9uKGdsb2JhbERhdGEpOwpAQCAtMTY4LDcgKzE2OCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCBDbGFzc0luZm8gc19pbmZvOwog
CiAgICAgcHJvdGVjdGVkOgotICAgICAgICBleHBsaWNpdCBKU0dsb2JhbE9iamVjdChKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBHbG9iYWxPYmpl
Y3RNZXRob2RUYWJsZSogZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSAwKQorICAgICAgICBKU19J
TkxJTkUgZXhwbGljaXQgSlNHbG9iYWxPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUqIGdsb2Jh
bE9iamVjdE1ldGhvZFRhYmxlID0gMCkKICAgICAgICAgICAgIDogSlNWYXJpYWJsZU9iamVjdChn
bG9iYWxEYXRhLCBzdHJ1Y3R1cmUsICZtX3N5bWJvbFRhYmxlLCAwKQogICAgICAgICAgICAgLCBt
X3JlZ2lzdGVyQXJyYXlTaXplKDApCiAgICAgICAgICAgICAsIG1fZ2xvYmFsU2NvcGVDaGFpbigp
CkBAIC0xNzgsMTQgKzE3OCwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAg
ICB9CiAKLSAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEpCisgICAgICAgIEpTX0lOTElORSB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSkKICAgICAgICAgewogICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
Z2xvYmFsRGF0YSk7CiAgICAgICAgICAgICBzdHJ1Y3R1cmUoKS0+c2V0R2xvYmFsT2JqZWN0KGds
b2JhbERhdGEsIHRoaXMpOwogICAgICAgICAgICAgaW5pdCh0aGlzKTsKICAgICAgICAgfQogCi0g
ICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0ds
b2JhbFRoaXMqIHRoaXNWYWx1ZSkKKyAgICAgICAgSlNfSU5MSU5FIHZvaWQgZmluaXNoQ3JlYXRp
b24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbFRoaXMqIHRoaXNWYWx1ZSkKICAg
ICAgICAgewogICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7CiAg
ICAgICAgICAgICBzdHJ1Y3R1cmUoKS0+c2V0R2xvYmFsT2JqZWN0KGdsb2JhbERhdGEsIHRoaXMp
OwpAQCAtMTk5LDcgKzE5OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJiwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5
RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9w
ZXJ0eURlc2NyaXB0b3ImKTsKLSAgICAgICAgYm9vbCBoYXNPd25Qcm9wZXJ0eUZvcldyaXRlKEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAgICAgSlNfSU5MSU5FIGJvb2wgaGFz
T3duUHJvcGVydHlGb3JXcml0ZShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJik7CiAgICAg
ICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVy
JiwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKICAgICAgICAgc3RhdGljIHZvaWQgcHV0
V2l0aEF0dHJpYnV0ZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwpAQCAtMjA5LDExNCAr
MjA5LDExNCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICAvLyBXZSB1c2UgdGhpcyBpbiB0
aGUgY29kZSBnZW5lcmF0b3IgYXMgd2UgcGVyZm9ybSBzeW1ib2wgdGFibGUKICAgICAgICAgLy8g
bG9va3VwcyBwcmlvciB0byBpbml0aWFsaXppbmcgdGhlIHByb3BlcnRpZXMKLSAgICAgICAgYm9v
bCBzeW1ib2xUYWJsZUhhc1Byb3BlcnR5KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7
CisgICAgICAgIEpTX0lOTElORSBib29sIHN5bWJvbFRhYmxlSGFzUHJvcGVydHkoY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lKTsKIAogICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGFjY2Vz
c29ycyByZXR1cm4gcHJpc3RpbmUgdmFsdWVzLCBldmVuIGlmIGEgc2NyaXB0IAogICAgICAgICAv
LyByZXBsYWNlcyB0aGUgZ2xvYmFsIG9iamVjdCdzIGFzc29jaWF0ZWQgcHJvcGVydHkuCiAKLSAg
ICAgICAgUmVnRXhwQ29uc3RydWN0b3IqIHJlZ0V4cENvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1
cm4gbV9yZWdFeHBDb25zdHJ1Y3Rvci5nZXQoKTsgfQorICAgICAgICBKU19JTkxJTkUgUmVnRXhw
Q29uc3RydWN0b3IqIHJlZ0V4cENvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBD
b25zdHJ1Y3Rvci5nZXQoKTsgfQogCi0gICAgICAgIEVycm9yQ29uc3RydWN0b3IqIGVycm9yQ29u
c3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KLSAg
ICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogZXZhbEVycm9yQ29uc3RydWN0b3IoKSBjb25z
dCB7IHJldHVybiBtX2V2YWxFcnJvckNvbnN0cnVjdG9yLmdldCgpOyB9Ci0gICAgICAgIE5hdGl2
ZUVycm9yQ29uc3RydWN0b3IqIHJhbmdlRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJu
IG1fcmFuZ2VFcnJvckNvbnN0cnVjdG9yLmdldCgpOyB9Ci0gICAgICAgIE5hdGl2ZUVycm9yQ29u
c3RydWN0b3IqIHJlZmVyZW5jZUVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3Jl
ZmVyZW5jZUVycm9yQ29uc3RydWN0b3IuZ2V0KCk7IH0KLSAgICAgICAgTmF0aXZlRXJyb3JDb25z
dHJ1Y3Rvciogc3ludGF4RXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fc3ludGF4
RXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQotICAgICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9y
KiB0eXBlRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZUVycm9yQ29uc3Ry
dWN0b3IuZ2V0KCk7IH0KLSAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogVVJJRXJyb3JD
b25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fVVJJRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsg
fQorICAgICAgICBKU19JTkxJTkUgRXJyb3JDb25zdHJ1Y3RvciogZXJyb3JDb25zdHJ1Y3Rvcigp
IGNvbnN0IHsgcmV0dXJuIG1fZXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQorICAgICAgICBKU19J
TkxJTkUgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogZXZhbEVycm9yQ29uc3RydWN0b3IoKSBjb25z
dCB7IHJldHVybiBtX2V2YWxFcnJvckNvbnN0cnVjdG9yLmdldCgpOyB9CisgICAgICAgIEpTX0lO
TElORSBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiByYW5nZUVycm9yQ29uc3RydWN0b3IoKSBjb25z
dCB7IHJldHVybiBtX3JhbmdlRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQorICAgICAgICBKU19J
TkxJTkUgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogcmVmZXJlbmNlRXJyb3JDb25zdHJ1Y3Rvcigp
IGNvbnN0IHsgcmV0dXJuIG1fcmVmZXJlbmNlRXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQorICAg
ICAgICBKU19JTkxJTkUgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvciogc3ludGF4RXJyb3JDb25zdHJ1
Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fc3ludGF4RXJyb3JDb25zdHJ1Y3Rvci5nZXQoKTsgfQor
ICAgICAgICBKU19JTkxJTkUgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogdHlwZUVycm9yQ29uc3Ry
dWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3R5cGVFcnJvckNvbnN0cnVjdG9yLmdldCgpOyB9Cisg
ICAgICAgIEpTX0lOTElORSBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBVUklFcnJvckNvbnN0cnVj
dG9yKCkgY29uc3QgeyByZXR1cm4gbV9VUklFcnJvckNvbnN0cnVjdG9yLmdldCgpOyB9CiAKLSAg
ICAgICAgSlNGdW5jdGlvbiogZXZhbEZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9ldmFsRnVu
Y3Rpb24uZ2V0KCk7IH0KLSAgICAgICAgSlNGdW5jdGlvbiogY2FsbEZ1bmN0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9jYWxsRnVuY3Rpb24uZ2V0KCk7IH0KLSAgICAgICAgSlNGdW5jdGlvbiogYXBw
bHlGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbHlGdW5jdGlvbi5nZXQoKTsgfQotICAg
ICAgICBHZXR0ZXJTZXR0ZXIqIHRocm93VHlwZUVycm9yR2V0dGVyU2V0dGVyKEV4ZWNTdGF0ZSog
ZXhlYykKKyAgICAgICAgSlNfSU5MSU5FIEpTRnVuY3Rpb24qIGV2YWxGdW5jdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fZXZhbEZ1bmN0aW9uLmdldCgpOyB9CisgICAgICAgIEpTX0lOTElORSBKU0Z1
bmN0aW9uKiBjYWxsRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2NhbGxGdW5jdGlvbi5nZXQo
KTsgfQorICAgICAgICBKU19JTkxJTkUgSlNGdW5jdGlvbiogYXBwbHlGdW5jdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fYXBwbHlGdW5jdGlvbi5nZXQoKTsgfQorICAgICAgICBKU19JTkxJTkUgR2V0
dGVyU2V0dGVyKiB0aHJvd1R5cGVFcnJvckdldHRlclNldHRlcihFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV90aHJvd1R5cGVFcnJvckdldHRlclNldHRlcikK
ICAgICAgICAgICAgICAgICBjcmVhdGVUaHJvd1R5cGVFcnJvcihleGVjKTsKICAgICAgICAgICAg
IHJldHVybiBtX3Rocm93VHlwZUVycm9yR2V0dGVyU2V0dGVyLmdldCgpOwogICAgICAgICB9CiAK
LSAgICAgICAgT2JqZWN0UHJvdG90eXBlKiBvYmplY3RQcm90b3R5cGUoKSBjb25zdCB7IHJldHVy
biBtX29iamVjdFByb3RvdHlwZS5nZXQoKTsgfQotICAgICAgICBGdW5jdGlvblByb3RvdHlwZSog
ZnVuY3Rpb25Qcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uUHJvdG90eXBlLmdl
dCgpOyB9Ci0gICAgICAgIEFycmF5UHJvdG90eXBlKiBhcnJheVByb3RvdHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fYXJyYXlQcm90b3R5cGUuZ2V0KCk7IH0KLSAgICAgICAgQm9vbGVhblByb3RvdHlw
ZSogYm9vbGVhblByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fYm9vbGVhblByb3RvdHlwZS5n
ZXQoKTsgfQotICAgICAgICBTdHJpbmdQcm90b3R5cGUqIHN0cmluZ1Byb3RvdHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc3RyaW5nUHJvdG90eXBlLmdldCgpOyB9Ci0gICAgICAgIE51bWJlclByb3Rv
dHlwZSogbnVtYmVyUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJQcm90b3R5cGUu
Z2V0KCk7IH0KLSAgICAgICAgRGF0ZVByb3RvdHlwZSogZGF0ZVByb3RvdHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZGF0ZVByb3RvdHlwZS5nZXQoKTsgfQotICAgICAgICBSZWdFeHBQcm90b3R5cGUq
IHJlZ0V4cFByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwUHJvdG90eXBlLmdldCgp
OyB9Ci0KLSAgICAgICAgSlNPYmplY3QqIG1ldGhvZENhbGxEdW1teSgpIGNvbnN0IHsgcmV0dXJu
IG1fbWV0aG9kQ2FsbER1bW15LmdldCgpOyB9Ci0KLSAgICAgICAgU3RydWN0dXJlKiBhcmd1bWVu
dHNTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2FyZ3VtZW50c1N0cnVjdHVyZS5nZXQoKTsg
fQotICAgICAgICBTdHJ1Y3R1cmUqIGFycmF5U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9h
cnJheVN0cnVjdHVyZS5nZXQoKTsgfQotICAgICAgICBTdHJ1Y3R1cmUqIGJvb2xlYW5PYmplY3RT
dHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2Jvb2xlYW5PYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7
IH0KLSAgICAgICAgU3RydWN0dXJlKiBjYWxsYmFja0NvbnN0cnVjdG9yU3RydWN0dXJlKCkgY29u
c3QgeyByZXR1cm4gbV9jYWxsYmFja0NvbnN0cnVjdG9yU3RydWN0dXJlLmdldCgpOyB9Ci0gICAg
ICAgIFN0cnVjdHVyZSogY2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJu
IG1fY2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQotICAgICAgICBTdHJ1Y3R1cmUq
IGNhbGxiYWNrT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsYmFja09iamVj
dFN0cnVjdHVyZS5nZXQoKTsgfQotICAgICAgICBTdHJ1Y3R1cmUqIGRhdGVTdHJ1Y3R1cmUoKSBj
b25zdCB7IHJldHVybiBtX2RhdGVTdHJ1Y3R1cmUuZ2V0KCk7IH0KLSAgICAgICAgU3RydWN0dXJl
KiBlbXB0eU9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZW1wdHlPYmplY3RTdHJ1
Y3R1cmUuZ2V0KCk7IH0KLSAgICAgICAgU3RydWN0dXJlKiBudWxsUHJvdG90eXBlT2JqZWN0U3Ry
dWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9udWxsUHJvdG90eXBlT2JqZWN0U3RydWN0dXJlLmdl
dCgpOyB9Ci0gICAgICAgIFN0cnVjdHVyZSogZXJyb3JTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVy
biBtX2Vycm9yU3RydWN0dXJlLmdldCgpOyB9Ci0gICAgICAgIFN0cnVjdHVyZSogZnVuY3Rpb25T
dHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9Ci0g
ICAgICAgIFN0cnVjdHVyZSogYm91bmRGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJu
IG1fYm91bmRGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQotICAgICAgICBTdHJ1Y3R1cmUqIG5h
bWVkRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX25hbWVkRnVuY3Rpb25TdHJ1
Y3R1cmUuZ2V0KCk7IH0KLSAgICAgICAgc2l6ZV90IGZ1bmN0aW9uTmFtZU9mZnNldCgpIGNvbnN0
IHsgcmV0dXJuIG1fZnVuY3Rpb25OYW1lT2Zmc2V0OyB9Ci0gICAgICAgIFN0cnVjdHVyZSogbnVt
YmVyT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJPYmplY3RTdHJ1Y3R1
cmUuZ2V0KCk7IH0KLSAgICAgICAgU3RydWN0dXJlKiBpbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJl
KCkgY29uc3QgeyByZXR1cm4gbV9pbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9Ci0g
ICAgICAgIFN0cnVjdHVyZSogc3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uU3RydWN0dXJlKCkg
Y29uc3QgeyByZXR1cm4gbV9zdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0
KCk7IH0KLSAgICAgICAgU3RydWN0dXJlKiByZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUoKSBj
b25zdCB7IHJldHVybiBtX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZS5nZXQoKTsgfQotICAg
ICAgICBTdHJ1Y3R1cmUqIHJlZ0V4cFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhw
U3RydWN0dXJlLmdldCgpOyB9Ci0gICAgICAgIFN0cnVjdHVyZSogc3RyaW5nT2JqZWN0U3RydWN0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmdPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KLQot
ICAgICAgICB2b2lkIHNldFByb2ZpbGVHcm91cCh1bnNpZ25lZCB2YWx1ZSkgeyBjcmVhdGVSYXJl
RGF0YUlmTmVlZGVkKCk7IG1fcmFyZURhdGEtPnByb2ZpbGVHcm91cCA9IHZhbHVlOyB9Ci0gICAg
ICAgIHVuc2lnbmVkIHByb2ZpbGVHcm91cCgpIGNvbnN0CisgICAgICAgIEpTX0lOTElORSBPYmpl
Y3RQcm90b3R5cGUqIG9iamVjdFByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0UHJv
dG90eXBlLmdldCgpOyB9CisgICAgICAgIEpTX0lOTElORSBGdW5jdGlvblByb3RvdHlwZSogZnVu
Y3Rpb25Qcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgp
OyB9CisgICAgICAgIEpTX0lOTElORSBBcnJheVByb3RvdHlwZSogYXJyYXlQcm90b3R5cGUoKSBj
b25zdCB7IHJldHVybiBtX2FycmF5UHJvdG90eXBlLmdldCgpOyB9CisgICAgICAgIEpTX0lOTElO
RSBCb29sZWFuUHJvdG90eXBlKiBib29sZWFuUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9i
b29sZWFuUHJvdG90eXBlLmdldCgpOyB9CisgICAgICAgIEpTX0lOTElORSBTdHJpbmdQcm90b3R5
cGUqIHN0cmluZ1Byb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nUHJvdG90eXBlLmdl
dCgpOyB9CisgICAgICAgIEpTX0lOTElORSBOdW1iZXJQcm90b3R5cGUqIG51bWJlclByb3RvdHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbnVtYmVyUHJvdG90eXBlLmdldCgpOyB9CisgICAgICAgIEpT
X0lOTElORSBEYXRlUHJvdG90eXBlKiBkYXRlUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9k
YXRlUHJvdG90eXBlLmdldCgpOyB9CisgICAgICAgIEpTX0lOTElORSBSZWdFeHBQcm90b3R5cGUq
IHJlZ0V4cFByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwUHJvdG90eXBlLmdldCgp
OyB9CisKKyAgICAgICAgSlNfSU5MSU5FIEpTT2JqZWN0KiBtZXRob2RDYWxsRHVtbXkoKSBjb25z
dCB7IHJldHVybiBtX21ldGhvZENhbGxEdW1teS5nZXQoKTsgfQorCisgICAgICAgIEpTX0lOTElO
RSBTdHJ1Y3R1cmUqIGFyZ3VtZW50c1N0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXJndW1l
bnRzU3RydWN0dXJlLmdldCgpOyB9CisgICAgICAgIEpTX0lOTElORSBTdHJ1Y3R1cmUqIGFycmF5
U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9hcnJheVN0cnVjdHVyZS5nZXQoKTsgfQorICAg
ICAgICBKU19JTkxJTkUgU3RydWN0dXJlKiBib29sZWFuT2JqZWN0U3RydWN0dXJlKCkgY29uc3Qg
eyByZXR1cm4gbV9ib29sZWFuT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CisgICAgICAgIEpTX0lO
TElORSBTdHJ1Y3R1cmUqIGNhbGxiYWNrQ29uc3RydWN0b3JTdHJ1Y3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX2NhbGxiYWNrQ29uc3RydWN0b3JTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICAgICAgSlNf
SU5MSU5FIFN0cnVjdHVyZSogY2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQorICAgICAgICBKU19JTkxJ
TkUgU3RydWN0dXJlKiBjYWxsYmFja09iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICAgICAgSlNfSU5MSU5FIFN0cnVj
dHVyZSogZGF0ZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0ZVN0cnVjdHVyZS5nZXQo
KTsgfQorICAgICAgICBKU19JTkxJTkUgU3RydWN0dXJlKiBlbXB0eU9iamVjdFN0cnVjdHVyZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZW1wdHlPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICAgICAg
SlNfSU5MSU5FIFN0cnVjdHVyZSogbnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZS5nZXQoKTsgfQorICAgICAg
ICBKU19JTkxJTkUgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZXJyb3JTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICAgICAgSlNfSU5MSU5FIFN0cnVjdHVyZSogZnVu
Y3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uU3RydWN0dXJlLmdldCgp
OyB9CisgICAgICAgIEpTX0lOTElORSBTdHJ1Y3R1cmUqIGJvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUo
KSBjb25zdCB7IHJldHVybiBtX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICAg
ICAgSlNfSU5MSU5FIFN0cnVjdHVyZSogbmFtZWRGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbmFtZWRGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQorICAgICAgICBKU19JTkxJ
TkUgc2l6ZV90IGZ1bmN0aW9uTmFtZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25O
YW1lT2Zmc2V0OyB9CisgICAgICAgIEpTX0lOTElORSBTdHJ1Y3R1cmUqIG51bWJlck9iamVjdFN0
cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbnVtYmVyT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9
CisgICAgICAgIEpTX0lOTElORSBTdHJ1Y3R1cmUqIGludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUo
KSBjb25zdCB7IHJldHVybiBtX2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAg
ICAgICAgSlNfSU5MSU5FIFN0cnVjdHVyZSogc3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uU3Ry
dWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb25TdHJ1
Y3R1cmUuZ2V0KCk7IH0KKyAgICAgICAgSlNfSU5MSU5FIFN0cnVjdHVyZSogcmVnRXhwTWF0Y2hl
c0FycmF5U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1
Y3R1cmUuZ2V0KCk7IH0KKyAgICAgICAgSlNfSU5MSU5FIFN0cnVjdHVyZSogcmVnRXhwU3RydWN0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICAgICAg
SlNfSU5MSU5FIFN0cnVjdHVyZSogc3RyaW5nT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1
cm4gbV9zdHJpbmdPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KKworICAgICAgICBKU19JTkxJTkUg
dm9pZCBzZXRQcm9maWxlR3JvdXAodW5zaWduZWQgdmFsdWUpIHsgY3JlYXRlUmFyZURhdGFJZk5l
ZWRlZCgpOyBtX3JhcmVEYXRhLT5wcm9maWxlR3JvdXAgPSB2YWx1ZTsgfQorICAgICAgICBKU19J
TkxJTkUgdW5zaWduZWQgcHJvZmlsZUdyb3VwKCkgY29uc3QKICAgICAgICAgeyAKICAgICAgICAg
ICAgIGlmICghbV9yYXJlRGF0YSkKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAg
ICAgIHJldHVybiBtX3JhcmVEYXRhLT5wcm9maWxlR3JvdXA7CiAgICAgICAgIH0KIAotICAgICAg
ICBEZWJ1Z2dlciogZGVidWdnZXIoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnZ2VyOyB9Ci0gICAg
ICAgIHZvaWQgc2V0RGVidWdnZXIoRGVidWdnZXIqIGRlYnVnZ2VyKSB7IG1fZGVidWdnZXIgPSBk
ZWJ1Z2dlcjsgfQorICAgICAgICBKU19JTkxJTkUgRGVidWdnZXIqIGRlYnVnZ2VyKCkgY29uc3Qg
eyByZXR1cm4gbV9kZWJ1Z2dlcjsgfQorICAgICAgICBKU19JTkxJTkUgdm9pZCBzZXREZWJ1Z2dl
cihEZWJ1Z2dlciogZGVidWdnZXIpIHsgbV9kZWJ1Z2dlciA9IGRlYnVnZ2VyOyB9CiAKLSAgICAg
ICAgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUqIGdsb2JhbE9iamVjdE1ldGhvZFRhYmxl
KCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxPYmplY3RNZXRob2RUYWJsZTsgfQorICAgICAgICBK
U19JTkxJTkUgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUqIGdsb2JhbE9iamVjdE1ldGhv
ZFRhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxPYmplY3RNZXRob2RUYWJsZTsgfQogCi0g
ICAgICAgIHN0YXRpYyBib29sIHN1cHBvcnRzUHJvZmlsaW5nKGNvbnN0IEpTR2xvYmFsT2JqZWN0
KikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNSaWNoU291
cmNlSW5mbyhjb25zdCBKU0dsb2JhbE9iamVjdCopIHsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAg
SlNfSU5MSU5FIHN0YXRpYyBib29sIHN1cHBvcnRzUHJvZmlsaW5nKGNvbnN0IEpTR2xvYmFsT2Jq
ZWN0KikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgSlNfSU5MSU5FIHN0YXRpYyBib29sIHN1
cHBvcnRzUmljaFNvdXJjZUluZm8oY29uc3QgSlNHbG9iYWxPYmplY3QqKSB7IHJldHVybiB0cnVl
OyB9CiAKLSAgICAgICAgU2NvcGVDaGFpbk5vZGUqIGdsb2JhbFNjb3BlQ2hhaW4oKSB7IHJldHVy
biBtX2dsb2JhbFNjb3BlQ2hhaW4uZ2V0KCk7IH0KKyAgICAgICAgSlNfSU5MSU5FIFNjb3BlQ2hh
aW5Ob2RlKiBnbG9iYWxTY29wZUNoYWluKCkgeyByZXR1cm4gbV9nbG9iYWxTY29wZUNoYWluLmdl
dCgpOyB9CiAKICAgICAgICAgRXhlY1N0YXRlKiBnbG9iYWxFeGVjKCk7CiAKLSAgICAgICAgc3Rh
dGljIGJvb2wgc2hvdWxkSW50ZXJydXB0U2NyaXB0KGNvbnN0IEpTR2xvYmFsT2JqZWN0KikgeyBy
ZXR1cm4gdHJ1ZTsgfQorICAgICAgICBKU19JTkxJTkUgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJy
dXB0U2NyaXB0KGNvbnN0IEpTR2xvYmFsT2JqZWN0KikgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAg
ICAgIGJvb2wgaXNEeW5hbWljU2NvcGUoYm9vbCYgcmVxdWlyZXNEeW5hbWljQ2hlY2tzKSBjb25z
dDsKKyAgICAgICAgSlNfSU5MSU5FIGJvb2wgaXNEeW5hbWljU2NvcGUoYm9vbCYgcmVxdWlyZXNE
eW5hbWljQ2hlY2tzKSBjb25zdDsKIAotICAgICAgICB2b2lkIHNldEV2YWxFbmFibGVkKGJvb2wg
ZW5hYmxlZCkgeyBtX2V2YWxFbmFibGVkID0gZW5hYmxlZDsgfQotICAgICAgICBib29sIGV2YWxF
bmFibGVkKCkgeyByZXR1cm4gbV9ldmFsRW5hYmxlZDsgfQorICAgICAgICBKU19JTkxJTkUgdm9p
ZCBzZXRFdmFsRW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV9ldmFsRW5hYmxlZCA9IGVuYWJsZWQ7
IH0KKyAgICAgICAgSlNfSU5MSU5FIGJvb2wgZXZhbEVuYWJsZWQoKSB7IHJldHVybiBtX2V2YWxF
bmFibGVkOyB9CiAKICAgICAgICAgdm9pZCByZXNpemVSZWdpc3RlcnMoc2l6ZV90IG5ld1NpemUp
OwogCiAgICAgICAgIHZvaWQgcmVzZXRQcm90b3R5cGUoSlNHbG9iYWxEYXRhJiwgSlNWYWx1ZSBw
cm90b3R5cGUpOwogCi0gICAgICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSgpIGNvbnN0IHsg
cmV0dXJuICptX2dsb2JhbERhdGEuZ2V0KCk7IH0KKyAgICAgICAgSlNfSU5MSU5FIEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSgpIGNvbnN0IHsgcmV0dXJuICptX2dsb2JhbERhdGEuZ2V0KCk7IH0K
IAotICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICAgICAgSlNfSU5MSU5FIHN0YXRp
YyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpT
VmFsdWUgcHJvdG90eXBlKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJl
OjpjcmVhdGUoZ2xvYmFsRGF0YSwgMCwgcHJvdG90eXBlLCBUeXBlSW5mbyhHbG9iYWxPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksICZzX2luZm8pOwogICAgICAgICB9CiAKLSAgICAgICAgdm9p
ZCByZWdpc3RlcldlYWtNYXAoT3BhcXVlSlNXZWFrT2JqZWN0TWFwKiBtYXApCisgICAgICAgIEpT
X0lOTElORSB2b2lkIHJlZ2lzdGVyV2Vha01hcChPcGFxdWVKU1dlYWtPYmplY3RNYXAqIG1hcCkK
ICAgICAgICAgewogICAgICAgICAgICAgY3JlYXRlUmFyZURhdGFJZk5lZWRlZCgpOwogICAgICAg
ICAgICAgbV9yYXJlRGF0YS0+d2Vha01hcHMuYWRkKG1hcCk7CiAgICAgICAgIH0KIAotICAgICAg
ICB2b2lkIHVucmVnaXN0ZXJXZWFrTWFwKE9wYXF1ZUpTV2Vha09iamVjdE1hcCogbWFwKQorICAg
ICAgICBKU19JTkxJTkUgdm9pZCB1bnJlZ2lzdGVyV2Vha01hcChPcGFxdWVKU1dlYWtPYmplY3RN
YXAqIG1hcCkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKG1fcmFyZURhdGEpCiAgICAgICAg
ICAgICAgICAgbV9yYXJlRGF0YS0+d2Vha01hcHMucmVtb3ZlKG1hcCk7CiAgICAgICAgIH0KIAot
ICAgICAgICBkb3VibGUgd2Vha1JhbmRvbU51bWJlcigpIHsgcmV0dXJuIG1fd2Vha1JhbmRvbS5n
ZXQoKTsgfQorICAgICAgICBKU19JTkxJTkUgZG91YmxlIHdlYWtSYW5kb21OdW1iZXIoKSB7IHJl
dHVybiBtX3dlYWtSYW5kb20uZ2V0KCk7IH0KICAgICBwcm90ZWN0ZWQ6CiAKICAgICAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVy
dHlTbG90IHwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFt
ZXMgfCBKU1ZhcmlhYmxlT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKQEAgLTM0Miw3ICszNDIsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIGNyZWF0ZVRocm93VHlwZUVycm9yKEV4
ZWNTdGF0ZSopOwogCi0gICAgICAgIHZvaWQgc2V0UmVnaXN0ZXJzKFdyaXRlQmFycmllcjxVbmtu
b3duPiogcmVnaXN0ZXJzLCBQYXNzT3duQXJyYXlQdHI8V3JpdGVCYXJyaWVyPFVua25vd24+ID4g
cmVnaXN0ZXJBcnJheSwgc2l6ZV90IGNvdW50KTsKKyAgICAgICAgSlNfSU5MSU5FIHZvaWQgc2V0
UmVnaXN0ZXJzKFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJzLCBQYXNzT3duQXJyYXlQ
dHI8V3JpdGVCYXJyaWVyPFVua25vd24+ID4gcmVnaXN0ZXJBcnJheSwgc2l6ZV90IGNvdW50KTsK
ICAgICAgICAgc3RhdGljIHZvaWQgY2xlYXJSYXJlRGF0YShKU0NlbGwqKTsKICAgICB9OwogCkBA
IC0zNTQsMTMgKzM1NCwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEpTR2xvYmFsT2JqZWN0Kj4oYXNPYmplY3QodmFsdWUpKTsKICAgICB9CiAKLSAgICBp
bmxpbmUgdm9pZCBKU0dsb2JhbE9iamVjdDo6c2V0UmVnaXN0ZXJzKFdyaXRlQmFycmllcjxVbmtu
b3duPiogcmVnaXN0ZXJzLCBQYXNzT3duQXJyYXlQdHI8V3JpdGVCYXJyaWVyPFVua25vd24+ID4g
cmVnaXN0ZXJBcnJheSwgc2l6ZV90IGNvdW50KQorICAgIEpTX0lOTElORSB2b2lkIEpTR2xvYmFs
T2JqZWN0OjpzZXRSZWdpc3RlcnMoV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlcnMsIFBh
c3NPd25BcnJheVB0cjxXcml0ZUJhcnJpZXI8VW5rbm93bj4gPiByZWdpc3RlckFycmF5LCBzaXpl
X3QgY291bnQpCiAgICAgewogICAgICAgICBKU1ZhcmlhYmxlT2JqZWN0OjpzZXRSZWdpc3RlcnMo
cmVnaXN0ZXJzLCByZWdpc3RlckFycmF5KTsKICAgICAgICAgbV9yZWdpc3RlckFycmF5U2l6ZSA9
IGNvdW50OwogICAgIH0KIAotICAgIGlubGluZSBib29sIEpTR2xvYmFsT2JqZWN0OjpoYXNPd25Q
cm9wZXJ0eUZvcldyaXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lKQorICAgIEpTX0lOTElORSBib29sIEpTR2xvYmFsT2JqZWN0OjpoYXNPd25Qcm9wZXJ0
eUZvcldyaXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
KQogICAgIHsKICAgICAgICAgUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgIGlmIChKU1Zhcmlh
YmxlT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpcywgZXhlYywgcHJvcGVydHlOYW1lLCBz
bG90KSkKQEAgLTM2OSw3ICszNjksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJu
IHN5bWJvbFRhYmxlR2V0KHByb3BlcnR5TmFtZSwgc2xvdCwgc2xvdElzV3JpdGVhYmxlKTsKICAg
ICB9CiAKLSAgICBpbmxpbmUgYm9vbCBKU0dsb2JhbE9iamVjdDo6c3ltYm9sVGFibGVIYXNQcm9w
ZXJ0eShjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCisgICAgSlNfSU5MSU5FIGJvb2wg
SlNHbG9iYWxPYmplY3Q6OnN5bWJvbFRhYmxlSGFzUHJvcGVydHkoY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lKQogICAgIHsKICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5
bWJvbFRhYmxlKCkuaW5saW5lR2V0KHByb3BlcnR5TmFtZS5pbXBsKCkpOwogICAgICAgICByZXR1
cm4gIWVudHJ5LmlzTnVsbCgpOwpAQCAtNDgxLDcgKzQ4MSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIGNsYXNzIER5bmFtaWNHbG9iYWxPYmplY3RTY29wZSB7CiAgICAgICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKER5bmFtaWNHbG9iYWxPYmplY3RTY29wZSk7CiAgICAgcHVibGljOgotICAgICAg
ICBEeW5hbWljR2xvYmFsT2JqZWN0U2NvcGUoSlNHbG9iYWxEYXRhJiwgSlNHbG9iYWxPYmplY3Qq
KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgRHluYW1pY0dsb2JhbE9iamVjdFNjb3BlKEpT
R2xvYmFsRGF0YSYsIEpTR2xvYmFsT2JqZWN0Kik7CiAKICAgICAgICAgfkR5bmFtaWNHbG9iYWxP
YmplY3RTY29wZSgpCiAgICAgICAgIHsKQEAgLTQ5Myw3ICs0OTMsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIG1fc2F2ZWREeW5hbWljR2xvYmFsT2JqZWN0Owog
ICAgIH07CiAKLSAgICBpbmxpbmUgYm9vbCBKU0dsb2JhbE9iamVjdDo6aXNEeW5hbWljU2NvcGUo
Ym9vbCYpIGNvbnN0CisgICAgSlNfSU5MSU5FIGJvb2wgSlNHbG9iYWxPYmplY3Q6OmlzRHluYW1p
Y1Njb3BlKGJvb2wmKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxUaGlzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbFRoaXMuaAppbmRleCBlMzNj
YTdhMmY1ZGMwNjQwMDQ4ZDlmNGMxMDhhMDEwMjRiMjY5MWJiLi4xZWQ5NjMyNmIxY2YxNjYyYzYw
OTMxZTJjNmRhMTdhNTQ1MGRhNWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbFRoaXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbFRoaXMuaApAQCAtNjMsNyArNjMsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVu
IHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiAKLSAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVu
KEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZv
aWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgV3JpdGVCYXJy
aWVyPEpTR2xvYmFsT2JqZWN0PiBtX3Vud3JhcHBlZE9iamVjdDsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTG9jay5oCmluZGV4IDdiMDdiNGZiM2RhNWU0ZTgyZTAwNWM1MjQ0NTY1
YzlhNjcwYmY4N2YuLmEwZWI5Njk3NWE2NTk3MDBiMjIxNDAyNmQ5MGJmNDI3NGIxZDQzNGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCkBAIC01Niw3ICs1Niw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTTG9jayB7CiAgICAgICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKEpTTG9jayk7CiAgICAgcHVibGljOgotICAgICAgICBKU0xvY2soRXhlY1N0YXRlKik7
CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTTG9jayhFeGVjU3RhdGUqKTsKICAgICAgICAg
SlNMb2NrKEpTR2xvYmFsRGF0YSopOwogCiAgICAgICAgIEpTTG9jayhKU0xvY2tCZWhhdmlvciBs
b2NrQmVoYXZpb3IpCkBAIC04MCwyMiArODAsMjIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICB1bmxvY2sobV9sb2NrQmVoYXZpb3IpOyAKICAgICAgICAgfQogICAgICAgICAKLSAgICAg
ICAgc3RhdGljIHZvaWQgbG9jayhKU0xvY2tCZWhhdmlvcik7Ci0gICAgICAgIHN0YXRpYyB2b2lk
IHVubG9jayhKU0xvY2tCZWhhdmlvcik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyB2b2lkIGxvY2soSlNMb2NrQmVoYXZpb3IpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgdm9pZCB1bmxvY2soSlNMb2NrQmVoYXZpb3IpOwogICAgICAgICBzdGF0aWMgdm9pZCBs
b2NrKEV4ZWNTdGF0ZSopOwogICAgICAgICBzdGF0aWMgdm9pZCB1bmxvY2soRXhlY1N0YXRlKik7
CiAKLSAgICAgICAgc3RhdGljIGludHB0cl90IGxvY2tDb3VudCgpOwotICAgICAgICBzdGF0aWMg
Ym9vbCBjdXJyZW50VGhyZWFkSXNIb2xkaW5nTG9jaygpOworICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgaW50cHRyX3QgbG9ja0NvdW50KCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBib29sIGN1cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2NrKCk7CiAKICAgICAgICAg
SlNMb2NrQmVoYXZpb3IgbV9sb2NrQmVoYXZpb3I7CiAKICAgICAgICAgY2xhc3MgRHJvcEFsbExv
Y2tzIHsKICAgICAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERyb3BBbGxMb2Nrcyk7CiAg
ICAgICAgIHB1YmxpYzoKLSAgICAgICAgICAgIERyb3BBbGxMb2NrcyhFeGVjU3RhdGUqIGV4ZWMp
OwotICAgICAgICAgICAgRHJvcEFsbExvY2tzKEpTTG9ja0JlaGF2aW9yKTsKLSAgICAgICAgICAg
IH5Ecm9wQWxsTG9ja3MoKTsKKyAgICAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIERyb3BBbGxM
b2NrcyhFeGVjU3RhdGUqIGV4ZWMpOworICAgICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgRHJv
cEFsbExvY2tzKEpTTG9ja0JlaGF2aW9yKTsKKyAgICAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IH5Ecm9wQWxsTG9ja3MoKTsKICAgICAgICAgICAgIAogICAgICAgICBwcml2YXRlOgogICAgICAg
ICAgICAgaW50cHRyX3QgbV9sb2NrQ291bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuaAppbmRleCA4OGRkMzViYjg3ZjM1NGFhYjE0MDI0MWI5MzcwODU4NjMyYWNlZjli
Li40YmY3MGY1M2UzMGE4YzgwYjE5ZTg3MTM5YzYzMjk1NDM1NTY5OTdhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAgLTcwLDEyICs3MCwxMiBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgU2V0dGVyICAgICAgID0gMSA8PCA2ICAgLy8gcHJvcGVydHkgaXMg
YSBzZXR0ZXIKICAgICB9OwogCi0gICAgY2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlNDZWxsIHsK
KyAgICBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewog
ICAgICAgICBmcmllbmQgY2xhc3MgQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXI7CiAgICAgICAg
IGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKU0NlbGw7CiAgICAgICAg
IGZyaWVuZCBjbGFzcyBNYXJrZWRCbG9jazsKLSAgICAgICAgZnJpZW5kIGJvb2wgc2V0VXBTdGF0
aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNoRW50cnkqIGVudHJ5LCBK
U09iamVjdCogdGhpc09iaiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmIHNsb3QpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBmcmllbmQgYm9vbCBzZXRV
cFN0YXRpY0Z1bmN0aW9uU2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hFbnRyeSogZW50
cnksIEpTT2JqZWN0KiB0aGlzT2JqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYgc2xvdCk7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgSlNDZWxs
IEJhc2U7CkBAIC04OCwyMCArODgsMjAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3Rh
dGljIHZvaWQgZmluYWxpemUoSlNDZWxsKik7CiAKLSAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUo
KSBjb25zdDsKLSAgICAgICAgdm9pZCBzZXRQcm90b3R5cGUoSlNHbG9iYWxEYXRhJiwgSlNWYWx1
ZSBwcm90b3R5cGUpOwotICAgICAgICBib29sIHNldFByb3RvdHlwZVdpdGhDeWNsZUNoZWNrKEpT
R2xvYmFsRGF0YSYsIEpTVmFsdWUgcHJvdG90eXBlKTsKKyAgICAgICAgSlNfSU5MSU5FIEpTVmFs
dWUgcHJvdG90eXBlKCkgY29uc3Q7CisgICAgICAgIEpTX0lOTElORSB2b2lkIHNldFByb3RvdHlw
ZShKU0dsb2JhbERhdGEmLCBKU1ZhbHVlIHByb3RvdHlwZSk7CisgICAgICAgIEpTX0lOTElORSBi
b29sIHNldFByb3RvdHlwZVdpdGhDeWNsZUNoZWNrKEpTR2xvYmFsRGF0YSYsIEpTVmFsdWUgcHJv
dG90eXBlKTsKICAgICAgICAgCi0gICAgICAgIFN0cnVjdHVyZSogaW5oZXJpdG9ySUQoSlNHbG9i
YWxEYXRhJik7CisgICAgICAgIEpTX0lOTElORSBTdHJ1Y3R1cmUqIGluaGVyaXRvcklEKEpTR2xv
YmFsRGF0YSYpOwogCi0gICAgICAgIEpTVmFsdWUgZ2V0KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSkgY29uc3Q7Ci0gICAgICAgIEpTVmFsdWUgZ2V0KEV4ZWNTdGF0
ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSkgY29uc3Q7CisgICAgICAgIEpTX0lOTElORSBKU1Zh
bHVlIGdldChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpIGNvbnN0
OworICAgICAgICBKU19JTkxJTkUgSlNWYWx1ZSBnZXQoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJv
cGVydHlOYW1lKSBjb25zdDsKIAotICAgICAgICBib29sIGdldFByb3BlcnR5U2xvdChFeGVjU3Rh
dGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAg
ICAgICBib29sIGdldFByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBKU19JTkxJTkUgYm9vbCBnZXRQcm9wZXJ0eVNs
b3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmKTsKKyAgICAgICAgSlNfSU5MSU5FIGJvb2wgZ2V0UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSos
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIGJvb2wgZ2V0
UHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3du
UHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIEpTX0lOTElORSBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3du
UHJvcGVydHlTbG90QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJv
cGVydHlEZXNjcmlwdG9yJik7CiAKQEAgLTEyNyw3ICsxMjcsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICAgICAgc3Rh
dGljIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKIAotICAgICAgICBKU1ZhbHVlIHRvUHJpbWl0
aXZlKEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgPSBOb1ByZWZlcmVuY2UpIGNv
bnN0OworICAgICAgICBKU19JTkxJTkUgSlNWYWx1ZSB0b1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBQ
cmVmZXJyZWRQcmltaXRpdmVUeXBlID0gTm9QcmVmZXJlbmNlKSBjb25zdDsKICAgICAgICAgYm9v
bCB0b0Jvb2xlYW4oRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIGJvb2wgZ2V0UHJpbWl0aXZl
TnVtYmVyKEV4ZWNTdGF0ZSosIGRvdWJsZSYgbnVtYmVyLCBKU1ZhbHVlJikgY29uc3Q7CiAgICAg
ICAgIGRvdWJsZSB0b051bWJlcihFeGVjU3RhdGUqKSBjb25zdDsKQEAgLTEzOSw0NiArMTM5LDQ2
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIGdldFByb3BlcnR5U3BlY2lmaWNWYWx1
ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDZWxs
KiYgc3BlY2lmaWNGdW5jdGlvbikgY29uc3Q7CiAKICAgICAgICAgLy8gVGhpcyBnZXQgZnVuY3Rp
b24gb25seSBsb29rcyBhdCB0aGUgcHJvcGVydHkgbWFwLgotICAgICAgICBKU1ZhbHVlIGdldERp
cmVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSkgY29uc3QKKyAgICAgICAgSlNfSU5MSU5FIEpTVmFsdWUgZ2V0RGlyZWN0KEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKSBjb25zdAog
ICAgICAgICB7CiAgICAgICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmdldChn
bG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgcmV0dXJuIG9mZnNldCAhPSBX
VEY6Om5vdEZvdW5kID8gZ2V0RGlyZWN0T2Zmc2V0KG9mZnNldCkgOiBKU1ZhbHVlKCk7CiAgICAg
ICAgIH0KIAotICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBnZXREaXJlY3RMb2Nh
dGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSkKKyAgICAgICAgSlNfSU5MSU5FIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGdldERp
cmVjdExvY2F0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lKQogICAgICAgICB7CiAgICAgICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gc3Ry
dWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgcmV0
dXJuIG9mZnNldCAhPSBXVEY6Om5vdEZvdW5kID8gbG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0KSA6
IDA7CiAgICAgICAgIH0KIAotICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBnZXRE
aXJlY3RMb2NhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMpCisgICAgICAgIEpTX0lOTElORSBX
cml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBnZXREaXJlY3RMb2NhdGlvbihKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0
dHJpYnV0ZXMpCiAgICAgICAgIHsKICAgICAgICAgICAgIEpTQ2VsbCogc3BlY2lmaWNGdW5jdGlv
bjsKICAgICAgICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0KGdsb2JhbERh
dGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNGdW5jdGlvbik7CiAgICAgICAg
ICAgICByZXR1cm4gb2Zmc2V0ICE9IFdURjo6bm90Rm91bmQgPyBsb2NhdGlvbkZvck9mZnNldChv
ZmZzZXQpIDogMDsKICAgICAgICAgfQogCi0gICAgICAgIHNpemVfdCBvZmZzZXRGb3JMb2NhdGlv
bihXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbikgY29uc3QKKyAgICAgICAgSlNf
SU5MSU5FIHNpemVfdCBvZmZzZXRGb3JMb2NhdGlvbihXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+
KiBsb2NhdGlvbikgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGxvY2F0aW9u
IC0gcHJvcGVydHlTdG9yYWdlKCk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHRyYW5zaXRp
b25UbyhKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKKyAgICAgICAgSlNfSU5MSU5FIHZvaWQg
dHJhbnNpdGlvblRvKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwogCiAgICAgICAgIHZvaWQg
cmVtb3ZlRGlyZWN0KEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSk7Ci0gICAgICAgIGJvb2wgaGFzQ3VzdG9tUHJvcGVydGllcygpIHsgcmV0dXJuIHN0cnVjdHVy
ZSgpLT5kaWRUcmFuc2l0aW9uKCk7IH0KLSAgICAgICAgYm9vbCBoYXNHZXR0ZXJTZXR0ZXJQcm9w
ZXJ0aWVzKCkgeyByZXR1cm4gc3RydWN0dXJlKCktPmhhc0dldHRlclNldHRlclByb3BlcnRpZXMo
KTsgfQorICAgICAgICBKU19JTkxJTkUgYm9vbCBoYXNDdXN0b21Qcm9wZXJ0aWVzKCkgeyByZXR1
cm4gc3RydWN0dXJlKCktPmRpZFRyYW5zaXRpb24oKTsgfQorICAgICAgICBKU19JTkxJTkUgYm9v
bCBoYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkgeyByZXR1cm4gc3RydWN0dXJlKCktPmhhc0dl
dHRlclNldHRlclByb3BlcnRpZXMoKTsgfQogCi0gICAgICAgIGJvb2wgcHV0RGlyZWN0KEpTR2xv
YmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWdu
ZWQgYXR0ciwgYm9vbCBjaGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNsb3QmKTsKLSAgICAgICAg
dm9pZCBwdXREaXJlY3QoSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyID0gMCk7Ci0gICAgICAgIGJvb2wgcHV0RGlyZWN0
KEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwg
UHV0UHJvcGVydHlTbG90Jik7CisgICAgICAgIEpTX0lOTElORSBib29sIHB1dERpcmVjdChKU0ds
b2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2ln
bmVkIGF0dHIsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgICAg
IEpTX0lOTElORSB2b2lkIHB1dERpcmVjdChKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHIgPSAwKTsKKyAgICAgICAgSlNf
SU5MSU5FIGJvb2wgcHV0RGlyZWN0KEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAKLSAgICAgICAgdm9pZCBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHIgPSAwKTsKKyAgICAgICAgSlNf
SU5MSU5FIHZvaWQgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyID0gMCk7
CiAKICAgICAgICAgLy8gRmFzdCBhY2Nlc3MgdG8ga25vd24gcHJvcGVydHkgb2Zmc2V0cy4KLSAg
ICAgICAgSlNWYWx1ZSBnZXREaXJlY3RPZmZzZXQoc2l6ZV90IG9mZnNldCkgY29uc3QgeyByZXR1
cm4gcHJvcGVydHlTdG9yYWdlKClbb2Zmc2V0XS5nZXQoKTsgfQotICAgICAgICB2b2lkIHB1dERp
cmVjdE9mZnNldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIHNpemVfdCBvZmZzZXQsIEpTVmFs
dWUgdmFsdWUpIHsgcHJvcGVydHlTdG9yYWdlKClbb2Zmc2V0XS5zZXQoZ2xvYmFsRGF0YSwgdGhp
cywgdmFsdWUpOyB9Ci0gICAgICAgIHZvaWQgcHV0VW5kZWZpbmVkQXREaXJlY3RPZmZzZXQoc2l6
ZV90IG9mZnNldCkgeyBwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRdLnNldFVuZGVmaW5lZCgpOyB9
CisgICAgICAgIEpTX0lOTElORSBKU1ZhbHVlIGdldERpcmVjdE9mZnNldChzaXplX3Qgb2Zmc2V0
KSBjb25zdCB7IHJldHVybiBwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZzZXRdLmdldCgpOyB9CisgICAg
ICAgIEpTX0lOTElORSB2b2lkIHB1dERpcmVjdE9mZnNldChKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIHNpemVfdCBvZmZzZXQsIEpTVmFsdWUgdmFsdWUpIHsgcHJvcGVydHlTdG9yYWdlKClbb2Zm
c2V0XS5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgdmFsdWUpOyB9CisgICAgICAgIEpTX0lOTElORSB2
b2lkIHB1dFVuZGVmaW5lZEF0RGlyZWN0T2Zmc2V0KHNpemVfdCBvZmZzZXQpIHsgcHJvcGVydHlT
dG9yYWdlKClbb2Zmc2V0XS5zZXRVbmRlZmluZWQoKTsgfQogCiAgICAgICAgIHZvaWQgZmlsbEdl
dHRlclByb3BlcnR5U2xvdChQcm9wZXJ0eVNsb3QmLCBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+
KiBsb2NhdGlvbik7CiAgICAgICAgIHZvaWQgaW5pdGlhbGl6ZUdldHRlclNldHRlclByb3BlcnR5
KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBHZXR0ZXJTZXR0ZXIqLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzKTsKQEAgLTE4OSw1MiArMTg5LDUyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBKU1ZhbHVlIGxvb2t1cFNldHRlcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUpOwogICAgICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVj
dCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlE
ZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAKLSAgICAgICAgYm9vbCBpc0dsb2JhbE9i
amVjdCgpIGNvbnN0OwotICAgICAgICBib29sIGlzVmFyaWFibGVPYmplY3QoKSBjb25zdDsKLSAg
ICAgICAgYm9vbCBpc0FjdGl2YXRpb25PYmplY3QoKSBjb25zdDsKLSAgICAgICAgYm9vbCBpc0Vy
cm9ySW5zdGFuY2UoKSBjb25zdDsKLSAgICAgICAgYm9vbCBpc0dsb2JhbFRoaXMoKSBjb25zdDsK
KyAgICAgICAgSlNfSU5MSU5FIGJvb2wgaXNHbG9iYWxPYmplY3QoKSBjb25zdDsKKyAgICAgICAg
SlNfSU5MSU5FIGJvb2wgaXNWYXJpYWJsZU9iamVjdCgpIGNvbnN0OworICAgICAgICBKU19JTkxJ
TkUgYm9vbCBpc0FjdGl2YXRpb25PYmplY3QoKSBjb25zdDsKKyAgICAgICAgSlNfSU5MSU5FIGJv
b2wgaXNFcnJvckluc3RhbmNlKCkgY29uc3Q7CisgICAgICAgIEpTX0lOTElORSBib29sIGlzR2xv
YmFsVGhpcygpIGNvbnN0OwogCiAgICAgICAgIHZvaWQgc2VhbChKU0dsb2JhbERhdGEmKTsKICAg
ICAgICAgdm9pZCBmcmVlemUoSlNHbG9iYWxEYXRhJik7CiAgICAgICAgIHZvaWQgcHJldmVudEV4
dGVuc2lvbnMoSlNHbG9iYWxEYXRhJik7Ci0gICAgICAgIGJvb2wgaXNTZWFsZWQoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhKSB7IHJldHVybiBzdHJ1Y3R1cmUoKS0+aXNTZWFsZWQoZ2xvYmFsRGF0
YSk7IH0KLSAgICAgICAgYm9vbCBpc0Zyb3plbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpIHsg
cmV0dXJuIHN0cnVjdHVyZSgpLT5pc0Zyb3plbihnbG9iYWxEYXRhKTsgfQotICAgICAgICBib29s
IGlzRXh0ZW5zaWJsZSgpIHsgcmV0dXJuIHN0cnVjdHVyZSgpLT5pc0V4dGVuc2libGUoKTsgfQor
ICAgICAgICBKU19JTkxJTkUgYm9vbCBpc1NlYWxlZChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEp
IHsgcmV0dXJuIHN0cnVjdHVyZSgpLT5pc1NlYWxlZChnbG9iYWxEYXRhKTsgfQorICAgICAgICBK
U19JTkxJTkUgYm9vbCBpc0Zyb3plbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpIHsgcmV0dXJu
IHN0cnVjdHVyZSgpLT5pc0Zyb3plbihnbG9iYWxEYXRhKTsgfQorICAgICAgICBKU19JTkxJTkUg
Ym9vbCBpc0V4dGVuc2libGUoKSB7IHJldHVybiBzdHJ1Y3R1cmUoKS0+aXNFeHRlbnNpYmxlKCk7
IH0KIAotICAgICAgICBib29sIHN0YXRpY0Z1bmN0aW9uc1JlaWZpZWQoKSB7IHJldHVybiBzdHJ1
Y3R1cmUoKS0+c3RhdGljRnVuY3Rpb25zUmVpZmllZCgpOyB9CisgICAgICAgIEpTX0lOTElORSBi
b29sIHN0YXRpY0Z1bmN0aW9uc1JlaWZpZWQoKSB7IHJldHVybiBzdHJ1Y3R1cmUoKS0+c3RhdGlj
RnVuY3Rpb25zUmVpZmllZCgpOyB9CiAgICAgICAgIHZvaWQgcmVpZnlTdGF0aWNGdW5jdGlvbnNG
b3JEZWxldGUoRXhlY1N0YXRlKiBleGVjKTsKIAogICAgICAgICB2b2lkIGFsbG9jYXRlUHJvcGVy
dHlTdG9yYWdlKEpTR2xvYmFsRGF0YSYsIHNpemVfdCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSk7
Ci0gICAgICAgIGJvb2wgaXNVc2luZ0lubGluZVN0b3JhZ2UoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCB2b2lkKj4obV9wcm9wZXJ0eVN0b3JhZ2UuZ2V0KCkpID09IHN0YXRpY19j
YXN0PGNvbnN0IHZvaWQqPih0aGlzICsgMSk7IH0KKyAgICAgICAgSlNfSU5MSU5FIGJvb2wgaXNV
c2luZ0lubGluZVN0b3JhZ2UoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB2b2lk
Kj4obV9wcm9wZXJ0eVN0b3JhZ2UuZ2V0KCkpID09IHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPih0
aGlzICsgMSk7IH0KIAotICAgICAgICB2b2lkKiBhZGRyZXNzT2ZQcm9wZXJ0eVN0b3JhZ2UoKQor
ICAgICAgICBKU19JTkxJTkUgdm9pZCogYWRkcmVzc09mUHJvcGVydHlTdG9yYWdlKCkKICAgICAg
ICAgewogICAgICAgICAgICAgcmV0dXJuICZtX3Byb3BlcnR5U3RvcmFnZTsKICAgICAgICAgfQog
CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBiYXNlRXh0ZXJuYWxTdG9yYWdlQ2FwYWNp
dHkgPSAxNjsKIAotICAgICAgICB2b2lkIGZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSkKKyAgICAgICAgSlNfSU5MSU5FIHZvaWQgZmxhdHRlbkRpY3Rpb25h
cnlPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQogICAgICAgICB7CiAgICAgICAgICAg
ICBzdHJ1Y3R1cmUoKS0+ZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgdGhp
cyk7CiAgICAgICAgIH0KIAotICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KCkg
Y29uc3QKKyAgICAgICAgSlNfSU5MSU5FIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoKSBj
b25zdAogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmdsb2JhbE9i
amVjdCgpKTsKICAgICAgICAgICAgIEFTU0VSVCghaXNHbG9iYWxPYmplY3QoKSB8fCAoKEpTT2Jq
ZWN0KilzdHJ1Y3R1cmUoKS0+Z2xvYmFsT2JqZWN0KCkpID09IHRoaXMpOwogICAgICAgICAgICAg
cmV0dXJuIHN0cnVjdHVyZSgpLT5nbG9iYWxPYmplY3QoKTsKICAgICAgICAgfQogICAgICAgICAK
LSAgICAgICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZklubGluZVN0b3JhZ2UoKTsKLSAgICAgICAg
c3RhdGljIHNpemVfdCBvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpOwotICAgICAgICBzdGF0aWMg
c2l6ZV90IG9mZnNldE9mSW5oZXJpdG9ySUQoKTsKKyAgICAgICAgSlNfSU5MSU5FIHN0YXRpYyBz
aXplX3Qgb2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCk7CisgICAgICAgIEpTX0lOTElORSBzdGF0aWMg
c2l6ZV90IG9mZnNldE9mUHJvcGVydHlTdG9yYWdlKCk7CisgICAgICAgIEpTX0lOTElORSBzdGF0
aWMgc2l6ZV90IG9mZnNldE9mSW5oZXJpdG9ySUQoKTsKIAogICAgICAgICBzdGF0aWMgSlNfRVhQ
T1JUREFUQSBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCiAgICAgcHJvdGVjdGVkOgotICAgICAg
ICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlT
dG9yYWdlIGlubGluZVN0b3JhZ2UpCisgICAgICAgIEpTX0lOTElORSB2b2lkIGZpbmlzaENyZWF0
aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlTdG9yYWdlIGlubGluZVN0b3Jh
Z2UpCiAgICAgICAgIHsKICAgICAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbERh
dGEpOwogICAgICAgICAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKQEAgLTI0NSw3ICsy
NDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+
aXNPYmplY3QoKSk7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICAgICAgSlNfSU5MSU5FIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgICAgICB7CiAg
ICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgJnNf
aW5mbyk7CiAgICAgICAgIH0KQEAgLTI1NCw4ICsyNTQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgICAgICAvLyBUbyBpbnN0YW50aWF0ZSBvYmplY3RzIHlvdSBsaWtlbHkgd2FudCBKU0ZpbmFs
T2JqZWN0LCBiZWxvdy4KICAgICAgICAgLy8gVG8gY3JlYXRlIGRlcml2ZWQgdHlwZXMgeW91IGxp
a2VseSB3YW50IEpTTm9uRmluYWxPYmplY3QsIGJlbG93LgotICAgICAgICBKU09iamVjdChKU0ds
b2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eVN0b3JhZ2UgaW5saW5lU3RvcmFnZSk7Ci0g
ICAgICAgIEpTT2JqZWN0KFZQdHJTdGVhbGluZ0hhY2tUeXBlLCBQcm9wZXJ0eVN0b3JhZ2UgaW5s
aW5lU3RvcmFnZSkKKyAgICAgICAgSlNfSU5MSU5FIEpTT2JqZWN0KEpTR2xvYmFsRGF0YSYsIFN0
cnVjdHVyZSosIFByb3BlcnR5U3RvcmFnZSBpbmxpbmVTdG9yYWdlKTsKKyAgICAgICAgSlNfSU5M
SU5FIEpTT2JqZWN0KFZQdHJTdGVhbGluZ0hhY2tUeXBlLCBQcm9wZXJ0eVN0b3JhZ2UgaW5saW5l
U3RvcmFnZSkKICAgICAgICAgICAgIDogSlNDZWxsKFZQdHJTdGVhbGluZ0hhY2spCiAgICAgICAg
ICAgICAsIG1fcHJvcGVydHlTdG9yYWdlKGlubGluZVN0b3JhZ2UsIFN0b3JhZ2VCYXJyaWVyOjpV
bmNoZWNrZWQpCiAgICAgICAgIHsKQEAgLTI3MCwyMiArMjcwLDIyIEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB2b2lkIGlzT2JqZWN0KCk7CiAgICAgICAgIHZvaWQgaXNTdHJpbmcoKTsKICAg
ICAgICAgCi0gICAgICAgIENvbnN0UHJvcGVydHlTdG9yYWdlIHByb3BlcnR5U3RvcmFnZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcHJvcGVydHlTdG9yYWdlLmdldCgpOyB9Ci0gICAgICAgIFByb3BlcnR5
U3RvcmFnZSBwcm9wZXJ0eVN0b3JhZ2UoKSB7IHJldHVybiBtX3Byb3BlcnR5U3RvcmFnZS5nZXQo
KTsgfQorICAgICAgICBKU19JTkxJTkUgQ29uc3RQcm9wZXJ0eVN0b3JhZ2UgcHJvcGVydHlTdG9y
YWdlKCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0eVN0b3JhZ2UuZ2V0KCk7IH0KKyAgICAgICAg
SlNfSU5MSU5FIFByb3BlcnR5U3RvcmFnZSBwcm9wZXJ0eVN0b3JhZ2UoKSB7IHJldHVybiBtX3By
b3BlcnR5U3RvcmFnZS5nZXQoKTsgfQogCi0gICAgICAgIGNvbnN0IFdyaXRlQmFycmllckJhc2U8
VW5rbm93bj4qIGxvY2F0aW9uRm9yT2Zmc2V0KHNpemVfdCBvZmZzZXQpIGNvbnN0CisgICAgICAg
IEpTX0lOTElORSBjb25zdCBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbkZvck9m
ZnNldChzaXplX3Qgb2Zmc2V0KSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4g
JnByb3BlcnR5U3RvcmFnZSgpW29mZnNldF07CiAgICAgICAgIH0KIAotICAgICAgICBXcml0ZUJh
cnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbkZvck9mZnNldChzaXplX3Qgb2Zmc2V0KQorICAg
ICAgICBKU19JTkxJTkUgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYXRpb25Gb3JPZmZz
ZXQoc2l6ZV90IG9mZnNldCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuICZwcm9wZXJ0
eVN0b3JhZ2UoKVtvZmZzZXRdOwogICAgICAgICB9CiAKLSAgICAgICAgYm9vbCBwdXREaXJlY3RJ
bnRlcm5hbChKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIHVuc2lnbmVkIGF0dHIsIGJvb2wgY2hlY2tSZWFkT25seSwgUHV0UHJvcGVydHlTbG90
JiwgSlNDZWxsKik7CisgICAgICAgIEpTX0lOTElORSBib29sIHB1dERpcmVjdEludGVybmFsKEpT
R2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5z
aWduZWQgYXR0ciwgYm9vbCBjaGVja1JlYWRPbmx5LCBQdXRQcm9wZXJ0eVNsb3QmLCBKU0NlbGwq
KTsKIAotICAgICAgICBib29sIGlubGluZUdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBK
U19JTkxJTkUgYm9vbCBpbmxpbmVHZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKIAogICAgICAgICBjb25z
dCBIYXNoRW50cnkqIGZpbmRQcm9wZXJ0eUhhc2hFbnRyeShFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUpIGNvbnN0OwogICAgICAgICBTdHJ1Y3R1cmUqIGNyZWF0ZUlu
aGVyaXRvcklEKEpTR2xvYmFsRGF0YSYpOwpAQCAtMzg3LDQzICszODcsNDMgQEAgQ09NUElMRV9B
U1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcmFnZUNhcGFjaXR5ID49IEpTTm9uRmluYWxP
YmplY3RfaW5saW5lU3QKICAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiBtX2lubGlu
ZVN0b3JhZ2VbSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yYWdlQ2FwYWNpdHldOwogICAgIH07CiAK
LWlubGluZSBzaXplX3QgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpCitKU19JTkxJ
TkUgc2l6ZV90IEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKQogewogICAgIEFTU0VS
VChPQkpFQ1RfT0ZGU0VUT0YoSlNGaW5hbE9iamVjdCwgbV9pbmxpbmVTdG9yYWdlKSA9PSBPQkpF
Q1RfT0ZGU0VUT0YoSlNOb25GaW5hbE9iamVjdCwgbV9pbmxpbmVTdG9yYWdlKSk7CiAgICAgcmV0
dXJuIE9CSkVDVF9PRkZTRVRPRihKU0ZpbmFsT2JqZWN0LCBtX2lubGluZVN0b3JhZ2UpOwogfQog
Ci1pbmxpbmUgc2l6ZV90IEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpCitKU19J
TkxJTkUgc2l6ZV90IEpTT2JqZWN0OjpvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSgpCiB7CiAgICAg
cmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU09iamVjdCwgbV9wcm9wZXJ0eVN0b3JhZ2UpOwogfQog
Ci1pbmxpbmUgc2l6ZV90IEpTT2JqZWN0OjpvZmZzZXRPZkluaGVyaXRvcklEKCkKK0pTX0lOTElO
RSBzaXplX3QgSlNPYmplY3Q6Om9mZnNldE9mSW5oZXJpdG9ySUQoKQogewogICAgIHJldHVybiBP
QkpFQ1RfT0ZGU0VUT0YoSlNPYmplY3QsIG1faW5oZXJpdG9ySUQpOwogfQogCi1pbmxpbmUgYm9v
bCBKU09iamVjdDo6aXNHbG9iYWxPYmplY3QoKSBjb25zdAorSlNfSU5MSU5FIGJvb2wgSlNPYmpl
Y3Q6OmlzR2xvYmFsT2JqZWN0KCkgY29uc3QKIHsKICAgICByZXR1cm4gc3RydWN0dXJlKCktPnR5
cGVJbmZvKCkudHlwZSgpID09IEdsb2JhbE9iamVjdFR5cGU7CiB9CiAKLWlubGluZSBib29sIEpT
T2JqZWN0Ojppc1ZhcmlhYmxlT2JqZWN0KCkgY29uc3QKK0pTX0lOTElORSBib29sIEpTT2JqZWN0
Ojppc1ZhcmlhYmxlT2JqZWN0KCkgY29uc3QKIHsKICAgICByZXR1cm4gc3RydWN0dXJlKCktPnR5
cGVJbmZvKCkudHlwZSgpID49IFZhcmlhYmxlT2JqZWN0VHlwZTsKIH0KIAotaW5saW5lIGJvb2wg
SlNPYmplY3Q6OmlzQWN0aXZhdGlvbk9iamVjdCgpIGNvbnN0CitKU19JTkxJTkUgYm9vbCBKU09i
amVjdDo6aXNBY3RpdmF0aW9uT2JqZWN0KCkgY29uc3QKIHsKICAgICByZXR1cm4gc3RydWN0dXJl
KCktPnR5cGVJbmZvKCkudHlwZSgpID09IEFjdGl2YXRpb25PYmplY3RUeXBlOwogfQogCi1pbmxp
bmUgYm9vbCBKU09iamVjdDo6aXNFcnJvckluc3RhbmNlKCkgY29uc3QKK0pTX0lOTElORSBib29s
IEpTT2JqZWN0Ojppc0Vycm9ySW5zdGFuY2UoKSBjb25zdAogewogICAgIHJldHVybiBzdHJ1Y3R1
cmUoKS0+dHlwZUluZm8oKS50eXBlKCkgPT0gRXJyb3JJbnN0YW5jZVR5cGU7CiB9CiAKLWlubGlu
ZSBib29sIEpTT2JqZWN0Ojppc0dsb2JhbFRoaXMoKSBjb25zdAorSlNfSU5MSU5FIGJvb2wgSlNP
YmplY3Q6OmlzR2xvYmFsVGhpcygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHN0cnVjdHVyZSgpLT50
eXBlSW5mbygpLnR5cGUoKSA9PSBHbG9iYWxUaGlzVHlwZTsKIH0KQEAgLTQ2MywxOCArNDYzLDE4
IEBAIGlubGluZSBKU09iamVjdCogYXNPYmplY3QoSlNWYWx1ZSB2YWx1ZSkKICAgICByZXR1cm4g
YXNPYmplY3QodmFsdWUuYXNDZWxsKCkpOwogfQogCi1pbmxpbmUgSlNPYmplY3Q6OkpTT2JqZWN0
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5
U3RvcmFnZSBpbmxpbmVTdG9yYWdlKQorSlNfSU5MSU5FIEpTT2JqZWN0OjpKU09iamVjdChKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eVN0b3Jh
Z2UgaW5saW5lU3RvcmFnZSkKICAgICA6IEpTQ2VsbChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpCiAg
ICAgLCBtX3Byb3BlcnR5U3RvcmFnZShnbG9iYWxEYXRhLCB0aGlzLCBpbmxpbmVTdG9yYWdlKQog
ewogfQogCi1pbmxpbmUgSlNWYWx1ZSBKU09iamVjdDo6cHJvdG90eXBlKCkgY29uc3QKK0pTX0lO
TElORSBKU1ZhbHVlIEpTT2JqZWN0Ojpwcm90b3R5cGUoKSBjb25zdAogewogICAgIHJldHVybiBz
dHJ1Y3R1cmUoKS0+c3RvcmVkUHJvdG90eXBlKCk7CiB9CiAKLWlubGluZSBib29sIEpTT2JqZWN0
OjpzZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjayhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpT
VmFsdWUgcHJvdG90eXBlKQorSlNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OnNldFByb3RvdHlwZVdp
dGhDeWNsZUNoZWNrKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUp
CiB7CiAgICAgSlNWYWx1ZSBuZXh0UHJvdG90eXBlVmFsdWUgPSBwcm90b3R5cGU7CiAgICAgd2hp
bGUgKG5leHRQcm90b3R5cGVWYWx1ZSAmJiBuZXh0UHJvdG90eXBlVmFsdWUuaXNPYmplY3QoKSkg
ewpAQCAtNDg3LDEzICs0ODcsMTMgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnNldFByb3RvdHlw
ZVdpdGhDeWNsZUNoZWNrKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWwKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotaW5saW5lIHZvaWQgSlNPYmplY3Q6OnNldFByb3RvdHlwZShKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQorSlNfSU5MSU5FIHZvaWQgSlNP
YmplY3Q6OnNldFByb3RvdHlwZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJv
dG90eXBlKQogewogICAgIEFTU0VSVChwcm90b3R5cGUpOwogICAgIHNldFN0cnVjdHVyZShnbG9i
YWxEYXRhLCBTdHJ1Y3R1cmU6OmNoYW5nZVByb3RvdHlwZVRyYW5zaXRpb24oZ2xvYmFsRGF0YSwg
c3RydWN0dXJlKCksIHByb3RvdHlwZSkpOwogfQogCi1pbmxpbmUgU3RydWN0dXJlKiBKU09iamVj
dDo6aW5oZXJpdG9ySUQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQorSlNfSU5MSU5FIFN0cnVj
dHVyZSogSlNPYmplY3Q6OmluaGVyaXRvcklEKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKIHsK
ICAgICBpZiAobV9pbmhlcml0b3JJRCkgewogICAgICAgICBBU1NFUlQobV9pbmhlcml0b3JJRC0+
aXNFbXB0eSgpKTsKQEAgLTYwNiw3ICs2MDYsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmpl
Y3Q6OmdldFByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5Tgog
ICAgIH0KIH0KIAotaW5saW5lIEpTVmFsdWUgSlNPYmplY3Q6OmdldChFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkgY29uc3QKK0pTX0lOTElORSBKU1ZhbHVl
IEpTT2JqZWN0OjpnZXQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUpIGNvbnN0CiB7CiAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpcyk7CiAgICAgaWYgKGNv
bnN0X2Nhc3Q8SlNPYmplY3QqPih0aGlzKS0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5
TmFtZSwgc2xvdCkpCkBAIC02MTUsNyArNjE1LDcgQEAgaW5saW5lIEpTVmFsdWUgSlNPYmplY3Q6
OmdldChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkgY28K
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIAotaW5saW5lIEpTVmFsdWUgSlNPYmplY3Q6
OmdldChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSkgY29uc3QKK0pTX0lO
TElORSBKU1ZhbHVlIEpTT2JqZWN0OjpnZXQoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9w
ZXJ0eU5hbWUpIGNvbnN0CiB7CiAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpcyk7CiAgICAgaWYg
KGNvbnN0X2Nhc3Q8SlNPYmplY3QqPih0aGlzKS0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIHByb3Bl
cnR5TmFtZSwgc2xvdCkpCkBAIC02MjQsNyArNjI0LDcgQEAgaW5saW5lIEpTVmFsdWUgSlNPYmpl
Y3Q6OmdldChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSkgY29uc3QKICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIAotaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERp
cmVjdEludGVybmFsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBib29sIGNo
ZWNrUmVhZE9ubHksIFB1dFByb3BlcnR5U2xvdCYgc2xvdCwgSlNDZWxsKiBzcGVjaWZpY0Z1bmN0
aW9uKQorSlNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBib29sIGNoZWNrUmVhZE9ubHksIFB1dFByb3Bl
cnR5U2xvdCYgc2xvdCwgSlNDZWxsKiBzcGVjaWZpY0Z1bmN0aW9uKQogewogICAgIEFTU0VSVCh2
YWx1ZSk7CiAgICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBIZWFwOjpoZWFwKHZhbHVl
KSA9PSBIZWFwOjpoZWFwKHRoaXMpKTsKQEAgLTczNSw3ICs3MzUsNyBAQCBpbmxpbmUgYm9vbCBK
U09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25z
dCBJZGVudGlmaQogICAgIHJldHVybiB0cnVlOwogfQogCi1pbmxpbmUgYm9vbCBKU09iamVjdDo6
cHV0RGlyZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBib29sIGNoZWNr
UmVhZE9ubHksIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK0pTX0lOTElORSBib29sIEpTT2JqZWN0
OjpwdXREaXJlY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIGJvb2wgY2hl
Y2tSZWFkT25seSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEFTU0VSVCh2YWx1ZSk7
CiAgICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBIZWFwOjpoZWFwKHZhbHVlKSA9PSBI
ZWFwOjpoZWFwKHRoaXMpKTsKQEAgLTc0MywxOCArNzQzLDE4IEBAIGlubGluZSBib29sIEpTT2Jq
ZWN0OjpwdXREaXJlY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wCiAgICAgcmV0dXJuIHB1dERpcmVjdEludGVybmFsKGdsb2JhbERhdGEsIHByb3BlcnR5
TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIGNoZWNrUmVhZE9ubHksIHNsb3QsIGdldEpTRnVuY3Rp
b24odmFsdWUpKTsKIH0KIAotaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdChKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKK0pTX0lOTElORSB2b2lkIEpTT2JqZWN0Ojpw
dXREaXJlY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgUHV0
UHJvcGVydHlTbG90IHNsb3Q7CiAgICAgcHV0RGlyZWN0SW50ZXJuYWwoZ2xvYmFsRGF0YSwgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgZmFsc2UsIHNsb3QsIGdldEpTRnVuY3Rpb24o
dmFsdWUpKTsKIH0KIAotaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdChKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQorSlNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OnB1
dERpcmVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIHJl
dHVybiBwdXREaXJlY3RJbnRlcm5hbChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAw
LCBmYWxzZSwgc2xvdCwgZ2V0SlNGdW5jdGlvbih2YWx1ZSkpOwogfQogCi1pbmxpbmUgdm9pZCBK
U09iamVjdDo6cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMpCitKU19JTkxJTkUgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAg
c2l6ZV90IGN1cnJlbnRDYXBhY2l0eSA9IHN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBh
Y2l0eSgpOwogICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+YWRkUHJvcGVydHlXaXRo
b3V0VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIGdldEpT
RnVuY3Rpb24odmFsdWUpKTsKQEAgLTc2MywxNCArNzYzLDE0IEBAIGlubGluZSB2b2lkIEpTT2Jq
ZWN0OjpwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IGNvbnN0CiAgICAgcHV0RGlyZWN0T2Zmc2V0KGdsb2JhbERhdGEsIG9mZnNldCwgdmFsdWUpOwog
fQogCi1pbmxpbmUgdm9pZCBKU09iamVjdDo6dHJhbnNpdGlvblRvKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUpCitKU19JTkxJTkUgdm9pZCBKU09iamVj
dDo6dHJhbnNpdGlvblRvKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBuZXdT
dHJ1Y3R1cmUpCiB7CiAgICAgaWYgKHN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0
eSgpICE9IG5ld1N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkKICAgICAgICAg
YWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKCktPnByb3BlcnR5
U3RvcmFnZUNhcGFjaXR5KCksIG5ld1N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHko
KSk7CiAgICAgc2V0U3RydWN0dXJlKGdsb2JhbERhdGEsIG5ld1N0cnVjdHVyZSk7CiB9CiAKLWlu
bGluZSBKU1ZhbHVlIEpTT2JqZWN0Ojp0b1ByaW1pdGl2ZShFeGVjU3RhdGUqIGV4ZWMsIFByZWZl
cnJlZFByaW1pdGl2ZVR5cGUgcHJlZmVycmVkVHlwZSkgY29uc3QKK0pTX0lOTElORSBKU1ZhbHVl
IEpTT2JqZWN0Ojp0b1ByaW1pdGl2ZShFeGVjU3RhdGUqIGV4ZWMsIFByZWZlcnJlZFByaW1pdGl2
ZVR5cGUgcHJlZmVycmVkVHlwZSkgY29uc3QKIHsKICAgICByZXR1cm4gbWV0aG9kVGFibGUoKS0+
ZGVmYXVsdFZhbHVlKHRoaXMsIGV4ZWMsIHByZWZlcnJlZFR5cGUpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCmluZGV4IDBlNmE0OGEwN2FmOWUzYjliNzNm
MjNkNGE4MjRkOWVhZmZhMDg3ZGUuLmE2MTkzYjgyNzc1ZjQ2M2U2NDk3MzI5YjM0MDg2NDJkZjll
M2UzMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5n
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAKQEAg
LTI0MSw3ICsyNDEsNyBAQCBVU3RyaW5nIEpTU3RyaW5nOjp0b1N0cmluZyhFeGVjU3RhdGUqIGV4
ZWMpIGNvbnN0CiAgICAgcmV0dXJuIHZhbHVlKGV4ZWMpOwogfQogCi1pbmxpbmUgU3RyaW5nT2Jq
ZWN0KiBTdHJpbmdPYmplY3Q6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTU3RyaW5nKiBzdHJpbmcpCitKU19JTkxJTkUgU3RyaW5nT2JqZWN0
KiBTdHJpbmdPYmplY3Q6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTU3RyaW5nKiBzdHJpbmcpCiB7CiAgICAgU3RyaW5nT2JqZWN0KiBvYmpl
Y3QgPSBuZXcgKGFsbG9jYXRlQ2VsbDxTdHJpbmdPYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBTdHJp
bmdPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QtPnN0cmluZ09iamVjdFN0
cnVjdHVyZSgpKTsKICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEo
KSwgc3RyaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U3RyaW5nLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCmluZGV4
IDdjZjgzODIxOWE1YmE1M2YxN2ZhYmQ4OTBkZGUyYmMyZTJkMjAyYzQuLjllMzRkYjBhYjkwYzk3
ZDI5OTllNWE5OTBiNmExNzhlOGQ1ZTk1MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTdHJpbmcuaApAQCAtMTA1LDI1ICsxMDUsMjUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIH07CiAKICAgICBwcml2YXRlOgotICAgICAgICBKU1N0cmluZyhKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdmFsdWUpCisgICAgICAgIEpTX0lOTElO
RSBKU1N0cmluZyhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFBhc3NSZWZQdHI8U3RyaW5nSW1w
bD4gdmFsdWUpCiAgICAgICAgICAgICA6IEpTQ2VsbChnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLnN0
cmluZ1N0cnVjdHVyZS5nZXQoKSkKICAgICAgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKICAgICAg
ICAgewogICAgICAgICB9CiAKLSAgICAgICAgSlNTdHJpbmcoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhKQorICAgICAgICBKU19JTkxJTkUgSlNTdHJpbmcoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
KQogICAgICAgICAgICAgOiBKU0NlbGwoZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS5zdHJpbmdTdHJ1
Y3R1cmUuZ2V0KCkpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgZmluaXNo
Q3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQorICAgICAgICBKU19JTkxJTkUgdm9p
ZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEpOwogICAgICAgICAgICAg
bV9sZW5ndGggPSAwOwogICAgICAgICAgICAgbV9pczhCaXQgPSB0cnVlOwogICAgICAgICB9CiAK
LSAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIHNp
emVfdCBsZW5ndGgpCisgICAgICAgIEpTX0lOTElORSB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgc2l6ZV90IGxlbmd0aCkKICAgICAgICAgewogICAgICAgICAg
ICAgQVNTRVJUKCFtX3ZhbHVlLmlzTnVsbCgpKTsKICAgICAgICAgICAgIEJhc2U6OmZpbmlzaENy
ZWF0aW9uKGdsb2JhbERhdGEpOwpAQCAtMTMxLDcgKzEzMSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAgICAgbV9pczhCaXQgPSBtX3ZhbHVlLmltcGwoKS0+aXM4Qml0KCk7CiAgICAgICAg
IH0KIAotICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgc2l6ZV90IGxlbmd0aCwgc2l6ZV90IGNvc3QpCisgICAgICAgIEpTX0lOTElORSB2b2lkIGZp
bmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgc2l6ZV90IGxlbmd0aCwgc2l6
ZV90IGNvc3QpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVCghbV92YWx1ZS5pc051bGwo
KSk7CiAgICAgICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhKTsKQEAgLTE0
MCw3ICsxNDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIEhlYXA6OmhlYXAodGhp
cyktPnJlcG9ydEV4dHJhTWVtb3J5Q29zdChjb3N0KTsKICAgICAgICAgfQogCi0gICAgICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1N0cmluZyogczEs
IEpTU3RyaW5nKiBzMikKKyAgICAgICAgSlNfSU5MSU5FIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1N0cmluZyogczEsIEpTU3RyaW5nKiBzMikKICAgICAg
ICAgewogICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7CiAgICAg
ICAgICAgICBtX2xlbmd0aCA9IHMxLT5sZW5ndGgoKSArIHMyLT5sZW5ndGgoKTsKQEAgLTE0OSw3
ICsxNDksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIG1fZmliZXJzWzFdLnNldChn
bG9iYWxEYXRhLCB0aGlzLCBzMik7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNTdHJpbmcqIHMxLCBKU1N0cmluZyog
czIsIEpTU3RyaW5nKiBzMykKKyAgICAgICAgSlNfSU5MSU5FIHZvaWQgZmluaXNoQ3JlYXRpb24o
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1N0cmluZyogczEsIEpTU3RyaW5nKiBzMiwgSlNT
dHJpbmcqIHMzKQogICAgICAgICB7CiAgICAgICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihn
bG9iYWxEYXRhKTsKICAgICAgICAgICAgIG1fbGVuZ3RoID0gczEtPmxlbmd0aCgpICsgczItPmxl
bmd0aCgpICsgczMtPmxlbmd0aCgpOwpAQCAtMTU5LDcgKzE1OSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAgICAgbV9maWJlcnNbMl0uc2V0KGdsb2JhbERhdGEsIHRoaXMsIHMzKTsKICAg
ICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBKU1N0cmluZyogY3JlYXRlTnVsbChKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEpCisgICAgICAgIEpTX0lOTElORSBzdGF0aWMgSlNTdHJpbmcqIGNyZWF0
ZU51bGwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQogICAgICAgICB7CiAgICAgICAgICAgICBK
U1N0cmluZyogbmV3U3RyaW5nID0gbmV3IChhbGxvY2F0ZUNlbGw8SlNTdHJpbmc+KGdsb2JhbERh
dGEuaGVhcCkpIEpTU3RyaW5nKGdsb2JhbERhdGEpOwogICAgICAgICAgICAgbmV3U3RyaW5nLT5m
aW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhKTsKQEAgLTE2Nyw3ICsxNjcsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgfQogCiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgSlNTdHJpbmcq
IGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4g
dmFsdWUpCisgICAgICAgIEpTX0lOTElORSBzdGF0aWMgSlNTdHJpbmcqIGNyZWF0ZShKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdmFsdWUpCiAgICAgICAg
IHsKICAgICAgICAgICAgIEFTU0VSVCh2YWx1ZSk7CiAgICAgICAgICAgICBzaXplX3QgbGVuZ3Ro
ID0gdmFsdWUtPmxlbmd0aCgpOwpAQCAtMTc2LDE5ICsxNzYsMTkgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgICAgICBuZXdTdHJpbmctPmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIGxlbmd0
aCwgY29zdCk7CiAgICAgICAgICAgICByZXR1cm4gbmV3U3RyaW5nOwogICAgICAgICB9Ci0gICAg
ICAgIHN0YXRpYyBKU1N0cmluZyogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNT
dHJpbmcqIHMxLCBKU1N0cmluZyogczIpCisgICAgICAgIEpTX0lOTElORSBzdGF0aWMgSlNTdHJp
bmcqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTU3RyaW5nKiBzMSwgSlNTdHJp
bmcqIHMyKQogICAgICAgICB7CiAgICAgICAgICAgICBKU1N0cmluZyogbmV3U3RyaW5nID0gbmV3
IChhbGxvY2F0ZUNlbGw8SlNTdHJpbmc+KGdsb2JhbERhdGEuaGVhcCkpIEpTU3RyaW5nKGdsb2Jh
bERhdGEpOwogICAgICAgICAgICAgbmV3U3RyaW5nLT5maW5pc2hDcmVhdGlvbihnbG9iYWxEYXRh
LCBzMSwgczIpOwogICAgICAgICAgICAgcmV0dXJuIG5ld1N0cmluZzsKICAgICAgICAgfQotICAg
ICAgICBzdGF0aWMgSlNTdHJpbmcqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpT
U3RyaW5nKiBzMSwgSlNTdHJpbmcqIHMyLCBKU1N0cmluZyogczMpCisgICAgICAgIEpTX0lOTElO
RSBzdGF0aWMgSlNTdHJpbmcqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTU3Ry
aW5nKiBzMSwgSlNTdHJpbmcqIHMyLCBKU1N0cmluZyogczMpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIEpTU3RyaW5nKiBuZXdTdHJpbmcgPSBuZXcgKGFsbG9jYXRlQ2VsbDxKU1N0cmluZz4oZ2xv
YmFsRGF0YS5oZWFwKSkgSlNTdHJpbmcoZ2xvYmFsRGF0YSk7CiAgICAgICAgICAgICBuZXdTdHJp
bmctPmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIHMxLCBzMiwgczMpOwogICAgICAgICAgICAg
cmV0dXJuIG5ld1N0cmluZzsKICAgICAgICAgfQotICAgICAgICBzdGF0aWMgSlNTdHJpbmcqIGNy
ZWF0ZUhhc090aGVyT3duZXIoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQYXNzUmVmUHRyPFN0
cmluZ0ltcGw+IHZhbHVlKQorICAgICAgICBKU19JTkxJTkUgc3RhdGljIEpTU3RyaW5nKiBjcmVh
dGVIYXNPdGhlck93bmVyKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUGFzc1JlZlB0cjxTdHJp
bmdJbXBsPiB2YWx1ZSkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKHZhbHVlKTsKICAg
ICAgICAgICAgIHNpemVfdCBsZW5ndGggPSB2YWx1ZS0+bGVuZ3RoKCk7CkBAIC0xOTksMTkgKzE5
OSwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2aXJ0dWFsIH5KU1N0cmluZygpOwog
Ci0gICAgICAgIGNvbnN0IFVTdHJpbmcmIHZhbHVlKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKKyAg
ICAgICAgSlNfSU5MSU5FIGNvbnN0IFVTdHJpbmcmIHZhbHVlKEV4ZWNTdGF0ZSogZXhlYykgY29u
c3QKICAgICAgICAgewogICAgICAgICAgICAgaWYgKGlzUm9wZSgpKQogICAgICAgICAgICAgICAg
IHJlc29sdmVSb3BlKGV4ZWMpOwogICAgICAgICAgICAgcmV0dXJuIG1fdmFsdWU7CiAgICAgICAg
IH0KLSAgICAgICAgY29uc3QgVVN0cmluZyYgdHJ5R2V0VmFsdWUoKSBjb25zdAorICAgICAgICBK
U19JTkxJTkUgY29uc3QgVVN0cmluZyYgdHJ5R2V0VmFsdWUoKSBjb25zdAogICAgICAgICB7CiAg
ICAgICAgICAgICBpZiAoaXNSb3BlKCkpCiAgICAgICAgICAgICAgICAgcmVzb2x2ZVJvcGUoMCk7
CiAgICAgICAgICAgICByZXR1cm4gbV92YWx1ZTsKICAgICAgICAgfQotICAgICAgICB1bnNpZ25l
ZCBsZW5ndGgoKSB7IHJldHVybiBtX2xlbmd0aDsgfQorICAgICAgICBKU19JTkxJTkUgdW5zaWdu
ZWQgbGVuZ3RoKCkgeyByZXR1cm4gbV9sZW5ndGg7IH0KIAogICAgICAgICBKU1ZhbHVlIHRvUHJp
bWl0aXZlKEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpIGNvbnN0OwogICAgICAg
ICBib29sIHRvQm9vbGVhbihFeGVjU3RhdGUqKSBjb25zdDsKQEAgLTIyMCwzMCArMjIwLDMwIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBVU3RyaW5nIHRvU3RyaW5nKEV4ZWNTdGF0ZSopIGNv
bnN0OwogICAgICAgICBkb3VibGUgdG9OdW1iZXIoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAg
IAotICAgICAgICBib29sIGdldFN0cmluZ1Byb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgICAgICBib29sIGdl
dFN0cmluZ1Byb3BlcnR5U2xvdChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYpOworICAgICAgICBKU19JTkxJTkUgYm9vbCBnZXRTdHJpbmdQcm9wZXJ0eVNs
b3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmKTsKKyAgICAgICAgSlNfSU5MSU5FIGJvb2wgZ2V0U3RyaW5nUHJvcGVydHlTbG90KEV4ZWNT
dGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIGJv
b2wgZ2V0U3RyaW5nUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKLSAgICAgICAgYm9vbCBj
YW5HZXRJbmRleCh1bnNpZ25lZCBpKSB7IHJldHVybiBpIDwgbV9sZW5ndGg7IH0KLSAgICAgICAg
SlNTdHJpbmcqIGdldEluZGV4KEV4ZWNTdGF0ZSosIHVuc2lnbmVkKTsKKyAgICAgICAgSlNfSU5M
SU5FIGJvb2wgY2FuR2V0SW5kZXgodW5zaWduZWQgaSkgeyByZXR1cm4gaSA8IG1fbGVuZ3RoOyB9
CisgICAgICAgIEpTX0lOTElORSBKU1N0cmluZyogZ2V0SW5kZXgoRXhlY1N0YXRlKiwgdW5zaWdu
ZWQpOwogICAgICAgICBKU1N0cmluZyogZ2V0SW5kZXhTbG93Q2FzZShFeGVjU3RhdGUqLCB1bnNp
Z25lZCk7CiAKICAgICAgICAgSlNWYWx1ZSByZXBsYWNlQ2hhcmFjdGVyKEV4ZWNTdGF0ZSosIFVD
aGFyLCBjb25zdCBVU3RyaW5nJiByZXBsYWNlbWVudCk7CiAKLSAgICAgICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90bykKKyAgICAgICAgSlNfSU5MSU5FIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8pCiAgICAgICAgIHsK
ICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxP
YmplY3QsIHByb3RvLCBUeXBlSW5mbyhTdHJpbmdUeXBlLCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0
eVNsb3QpLCAmc19pbmZvKTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBzaXplX3Qgb2Zm
c2V0T2ZMZW5ndGgoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNTdHJpbmcsIG1fbGVuZ3Ro
KTsgfQotICAgICAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mVmFsdWUoKSB7IHJldHVybiBPQkpF
Q1RfT0ZGU0VUT0YoSlNTdHJpbmcsIG1fdmFsdWUpOyB9CisgICAgICAgIEpTX0lOTElORSBzdGF0
aWMgc2l6ZV90IG9mZnNldE9mTGVuZ3RoKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTU3Ry
aW5nLCBtX2xlbmd0aCk7IH0KKyAgICAgICAgSlNfSU5MSU5FIHN0YXRpYyBzaXplX3Qgb2Zmc2V0
T2ZWYWx1ZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU1N0cmluZywgbV92YWx1ZSk7IH0K
IAotICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKKyAgICAgICAgSlNfRVhQ
T1JUREFUQSBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAgICAgICBzdGF0aWMg
dm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKICAgICBwcml2YXRl
OgotICAgICAgICBKU1N0cmluZyhWUHRyU3RlYWxpbmdIYWNrVHlwZSkgCisgICAgICAgIEpTX0lO
TElORSBKU1N0cmluZyhWUHRyU3RlYWxpbmdIYWNrVHlwZSkgCiAgICAgICAgICAgICA6IEpTQ2Vs
bChWUHRyU3RlYWxpbmdIYWNrKQogICAgICAgICB7CiAgICAgICAgIH0KQEAgLTI2Nyw5ICsyNjcs
OSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgbXV0YWJsZSBVU3RyaW5nIG1fdmFsdWU7CiAg
ICAgICAgIG11dGFibGUgRml4ZWRBcnJheTxXcml0ZUJhcnJpZXI8SlNTdHJpbmc+LCBzX21heElu
dGVybmFsUm9wZUxlbmd0aD4gbV9maWJlcnM7CiAKLSAgICAgICAgYm9vbCBpc1JvcGUoKSBjb25z
dCB7IHJldHVybiBtX3ZhbHVlLmlzTnVsbCgpOyB9Ci0gICAgICAgIGJvb2wgaXM4Qml0KCkgY29u
c3QgeyByZXR1cm4gbV9pczhCaXQ7IH0KLSAgICAgICAgVVN0cmluZyYgc3RyaW5nKCkgeyBBU1NF
UlQoIWlzUm9wZSgpKTsgcmV0dXJuIG1fdmFsdWU7IH0KKyAgICAgICAgSlNfSU5MSU5FIGJvb2wg
aXNSb3BlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZS5pc051bGwoKTsgfQorICAgICAgICBKU19J
TkxJTkUgYm9vbCBpczhCaXQoKSBjb25zdCB7IHJldHVybiBtX2lzOEJpdDsgfQorICAgICAgICBK
U19JTkxJTkUgVVN0cmluZyYgc3RyaW5nKCkgeyBBU1NFUlQoIWlzUm9wZSgpKTsgcmV0dXJuIG1f
dmFsdWU7IH0KIAogICAgICAgICBmcmllbmQgSlNWYWx1ZSBqc1N0cmluZyhFeGVjU3RhdGUqLCBK
U1N0cmluZyosIEpTU3RyaW5nKik7CiAgICAgICAgIGZyaWVuZCBKU1ZhbHVlIGpzU3RyaW5nKEV4
ZWNTdGF0ZSosIFJlZ2lzdGVyKiwgdW5zaWduZWQgY291bnQpOwpAQCAtMzMxLDcgKzMzMSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gZml4dXBWUHRyKGdsb2JhbERhdGEsIEpT
U3RyaW5nOjpjcmVhdGUoKmdsb2JhbERhdGEsIHMuaW1wbCgpKSk7CiAgICAgfQogCi0gICAgaW5s
aW5lIEpTU3RyaW5nKiBKU1N0cmluZzo6Z2V0SW5kZXgoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25l
ZCBpKQorICAgIEpTX0lOTElORSBKU1N0cmluZyogSlNTdHJpbmc6OmdldEluZGV4KEV4ZWNTdGF0
ZSogZXhlYywgdW5zaWduZWQgaSkKICAgICB7CiAgICAgICAgIEFTU0VSVChjYW5HZXRJbmRleChp
KSk7CiAgICAgICAgIGlmIChpc1JvcGUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
VmFsdWUuaAppbmRleCBhMDAxMDYyNzRmZWI5N2IzMzUxNmI4ODc5YzM0ZmZjYTBjY2MwYWM2Li5l
NDNjOTJiOTI0Y2Y3OWJlNDc0Y2M1MDE2ZjIxMzU3ZGFkNmUwNGE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCkBAIC05Myw3ICs5Myw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIH07CiAKICAgICAvLyBUaGlzIGltcGxlbWVudHMgVG9JbnQzMiwgZGVmaW5lZCBpbiBF
Q01BLTI2MiA5LjUuCi0gICAgaW50MzJfdCB0b0ludDMyKGRvdWJsZSk7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgaW50MzJfdCB0b0ludDMyKGRvdWJsZSk7CiAKICAgICAvLyBUaGlzIGltcGxlbWVu
dHMgVG9VSW50MzIsIGRlZmluZWQgaW4gRUNNQS0yNjIgOS42LgogICAgIGlubGluZSB1aW50MzJf
dCB0b1VJbnQzMihkb3VibGUgbnVtYmVyKQpAQCAtMjAzLDcgKzIwMyw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBKU09iamVjdCogdG9PYmplY3QoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmpl
Y3QqKSBjb25zdDsKIAogICAgICAgICAvLyBJbnRlZ2VyIGNvbnZlcnNpb25zLgotICAgICAgICBk
b3VibGUgdG9JbnRlZ2VyKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSBkb3VibGUgdG9JbnRlZ2VyKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgICBkb3VibGUg
dG9JbnRlZ2VyUHJlc2VydmVOYU4oRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIGludDMyX3Qg
dG9JbnQzMihFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAgdWludDMyX3QgdG9VSW50MzIoRXhl
Y1N0YXRlKikgY29uc3Q7CkBAIC0yMzIsNyArMjMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICAgICAgYm9vbCBpc0NlbGwoKSBjb25zdDsKICAgICAgICAgSlNDZWxsKiBhc0NlbGwoKSBjb25z
dDsKLSAgICAgICAgYm9vbCBpc1ZhbGlkQ2FsbGVlKCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIGJvb2wgaXNWYWxpZENhbGxlZSgpOwogCiAjaWZuZGVmIE5ERUJVRwogICAgICAgICBjaGFy
KiBkZXNjcmlwdGlvbigpOwpAQCAtMjQ1LDExICsyNDUsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIEpTVmFsdWUoSGFzaFRhYmxlRGVsZXRlZFZhbHVlVGFnKTsKIAogICAgICAgICBpbmxp
bmUgY29uc3QgSlNWYWx1ZSBhc1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KLSAgICAg
ICAgZG91YmxlIHRvTnVtYmVyU2xvd0Nhc2UoRXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgICAgIEpT
T2JqZWN0KiB0b09iamVjdFNsb3dDYXNlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KikgY29u
c3Q7Ci0gICAgICAgIEpTT2JqZWN0KiB0b1RoaXNPYmplY3RTbG93Q2FzZShFeGVjU3RhdGUqKSBj
b25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgZG91YmxlIHRvTnVtYmVyU2xvd0Nhc2Uo
RXhlY1N0YXRlKikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0
b09iamVjdFNsb3dDYXNlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CisgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0b1RoaXNPYmplY3RTbG93Q2FzZShFeGVj
U3RhdGUqKSBjb25zdDsKIAotICAgICAgICBKU09iamVjdCogc3ludGhlc2l6ZVByb3RvdHlwZShF
eGVjU3RhdGUqKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHN5
bnRoZXNpemVQcm90b3R5cGUoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIEpTT2JqZWN0KiBz
eW50aGVzaXplT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0OwogCiAjaWYgVVNFKEpTVkFMVUUzMl82
NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVP
YmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3Qu
aAppbmRleCBlNDlmYjcxZGYyZWNiOWRmNzk2YjJlN2I4ZGVkOWU3Njg0YWFkODMwLi4wNTU1MTI1
NjZjZGNiMTQ4ZDFhNGFhY2UwZjMxOWY2MjY3MTgzNGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCkBAIC00MCwxMyArNDAsMTMgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBSZWdpc3RlcjsKIAotICAgIGNsYXNzIEpTVmFy
aWFibGVPYmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CisgICAgY2xhc3MgSlNfRVhQ
T1JUX1BSSVZBVEUgSlNWYXJpYWJsZU9iamVjdCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsK
ICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKIAogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRl
ZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CiAKLSAgICAgICAgU3ltYm9sVGFibGUmIHN5bWJvbFRh
YmxlKCkgY29uc3QgeyByZXR1cm4gKm1fc3ltYm9sVGFibGU7IH0KKyAgICAgICAgSlNfSU5MSU5F
IFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSgpIGNvbnN0IHsgcmV0dXJuICptX3N5bWJvbFRhYmxl
OyB9CiAKICAgICAgICAgdmlydHVhbCB+SlNWYXJpYWJsZU9iamVjdCgpOwogCkBAIC01NywxMiAr
NTcsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBib29sIGlzRHluYW1p
Y1Njb3BlKGJvb2wmIHJlcXVpcmVzRHluYW1pY0NoZWNrcykgY29uc3Q7CiAKLSAgICAgICAgV3Jp
dGVCYXJyaWVyPFVua25vd24+JiByZWdpc3RlckF0KGludCBpbmRleCkgY29uc3QgeyByZXR1cm4g
bV9yZWdpc3RlcnNbaW5kZXhdOyB9CisgICAgICAgIEpTX0lOTElORSBXcml0ZUJhcnJpZXI8VW5r
bm93bj4mIHJlZ2lzdGVyQXQoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdGVyc1tp
bmRleF07IH0KIAotICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIGNvbnN0ICogYWRkcmVz
c09mUmVnaXN0ZXJzKCkgY29uc3QgeyByZXR1cm4gJm1fcmVnaXN0ZXJzOyB9Ci0gICAgICAgIHN0
YXRpYyBzaXplX3Qgb2Zmc2V0T2ZSZWdpc3RlcnMoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0Yo
SlNWYXJpYWJsZU9iamVjdCwgbV9yZWdpc3RlcnMpOyB9CisgICAgICAgIEpTX0lOTElORSBXcml0
ZUJhcnJpZXI8VW5rbm93bj4qIGNvbnN0ICogYWRkcmVzc09mUmVnaXN0ZXJzKCkgY29uc3QgeyBy
ZXR1cm4gJm1fcmVnaXN0ZXJzOyB9CisgICAgICAgIEpTX0lOTElORSBzdGF0aWMgc2l6ZV90IG9m
ZnNldE9mUmVnaXN0ZXJzKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTVmFyaWFibGVPYmpl
Y3QsIG1fcmVnaXN0ZXJzKTsgfQogCi0gICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgICAgICBKU19JTkxJTkUgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgVHlwZUluZm8oVmFyaWFibGVPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
ICZzX2luZm8pOwogICAgICAgICB9CkBAIC03MCwzNSArNzAsMzUgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgcHJvdGVjdGVkOgogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNOb25GaW5hbE9iamVjdDo6U3Ry
dWN0dXJlRmxhZ3M7CiAKLSAgICAgICAgSlNWYXJpYWJsZU9iamVjdChKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUs
IFJlZ2lzdGVyKiByZWdpc3RlcnMpCisgICAgICAgIEpTX0lOTElORSBKU1ZhcmlhYmxlT2JqZWN0
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN5bWJvbFRh
YmxlKiBzeW1ib2xUYWJsZSwgUmVnaXN0ZXIqIHJlZ2lzdGVycykKICAgICAgICAgICAgIDogSlNO
b25GaW5hbE9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpCiAgICAgICAgICAgICAsIG1fc3lt
Ym9sVGFibGUoc3ltYm9sVGFibGUpCiAgICAgICAgICAgICAsIG1fcmVnaXN0ZXJzKHJlaW50ZXJw
cmV0X2Nhc3Q8V3JpdGVCYXJyaWVyPFVua25vd24+Kj4ocmVnaXN0ZXJzKSkKICAgICAgICAgewog
ICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEpCisgICAgICAgIEpTX0lOTElORSB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSkKICAgICAgICAgewogICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24oZ2xvYmFsRGF0YSk7CiAgICAgICAgICAgICBBU1NFUlQobV9zeW1ib2xUYWJsZSk7CiAg
ICAgICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSA9
PSBzaXplb2YoUmVnaXN0ZXIpLCBSZWdpc3Rlcl9zaG91bGRfYmVfc2FtZV9zaXplX2FzX1dyaXRl
QmFycmllcik7CiAgICAgICAgIH0KIAotICAgICAgICBQYXNzT3duQXJyYXlQdHI8V3JpdGVCYXJy
aWVyPFVua25vd24+ID4gY29weVJlZ2lzdGVyQXJyYXkoSlNHbG9iYWxEYXRhJiwgV3JpdGVCYXJy
aWVyPFVua25vd24+KiBzcmMsIHNpemVfdCBjb3VudCwgc2l6ZV90IGNhbGxmcmFtZVN0YXJ0cyk7
Ci0gICAgICAgIHZvaWQgc2V0UmVnaXN0ZXJzKFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0
ZXJzLCBQYXNzT3duQXJyYXlQdHI8V3JpdGVCYXJyaWVyPFVua25vd24+ID4gcmVnaXN0ZXJBcnJh
eSk7CisgICAgICAgIEpTX0lOTElORSBQYXNzT3duQXJyYXlQdHI8V3JpdGVCYXJyaWVyPFVua25v
d24+ID4gY29weVJlZ2lzdGVyQXJyYXkoSlNHbG9iYWxEYXRhJiwgV3JpdGVCYXJyaWVyPFVua25v
d24+KiBzcmMsIHNpemVfdCBjb3VudCwgc2l6ZV90IGNhbGxmcmFtZVN0YXJ0cyk7CisgICAgICAg
IEpTX0lOTElORSB2b2lkIHNldFJlZ2lzdGVycyhXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHJlZ2lz
dGVycywgUGFzc093bkFycmF5UHRyPFdyaXRlQmFycmllcjxVbmtub3duPiA+IHJlZ2lzdGVyQXJy
YXkpOwogCi0gICAgICAgIGJvb2wgc3ltYm9sVGFibGVHZXQoY29uc3QgSWRlbnRpZmllciYsIFBy
b3BlcnR5U2xvdCYpOworICAgICAgICBKU19JTkxJTkUgYm9vbCBzeW1ib2xUYWJsZUdldChjb25z
dCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIGJvb2wgc3ltYm9sVGFibGVH
ZXQoY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwotICAgICAgICBib29s
IHN5bWJvbFRhYmxlR2V0KGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmLCBib29sJiBz
bG90SXNXcml0ZWFibGUpOwotICAgICAgICBib29sIHN5bWJvbFRhYmxlUHV0KEpTR2xvYmFsRGF0
YSYsIGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlKTsKLSAgICAgICAgYm9vbCBzeW1ib2xUYWJs
ZVB1dFdpdGhBdHRyaWJ1dGVzKEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImLCBKU1Zh
bHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgSlNfSU5MSU5FIGJvb2wgc3ltYm9s
VGFibGVHZXQoY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYsIGJvb2wmIHNsb3RJc1dy
aXRlYWJsZSk7CisgICAgICAgIEpTX0lOTElORSBib29sIHN5bWJvbFRhYmxlUHV0KEpTR2xvYmFs
RGF0YSYsIGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlKTsKKyAgICAgICAgSlNfSU5MSU5FIGJv
b2wgc3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlcyhKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVu
dGlmaWVyJiwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAKICAgICAgICAgU3ltYm9s
VGFibGUqIG1fc3ltYm9sVGFibGU7IC8vIE1hcHMgbmFtZSAtPiBvZmZzZXQgZnJvbSAiciIgaW4g
cmVnaXN0ZXIgZmlsZS4KICAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiBtX3JlZ2lzdGVy
czsgLy8gInIiIGluIHRoZSByZWdpc3RlciBmaWxlLgogICAgICAgICBPd25BcnJheVB0cjxXcml0
ZUJhcnJpZXI8VW5rbm93bj4gPiBtX3JlZ2lzdGVyQXJyYXk7IC8vIEluZGVwZW5kZW50IGNvcHkg
b2YgcmVnaXN0ZXJzLCB1c2VkIHdoZW4gYSB2YXJpYWJsZSBvYmplY3QgY29waWVzIGl0cyByZWdp
c3RlcnMgb3V0IG9mIHRoZSByZWdpc3RlciBmaWxlLgogICAgIH07CiAKLSAgICBpbmxpbmUgYm9v
bCBKU1ZhcmlhYmxlT2JqZWN0OjpzeW1ib2xUYWJsZUdldChjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKKyAgICBKU19JTkxJTkUgYm9vbCBKU1Zhcmlh
YmxlT2JqZWN0OjpzeW1ib2xUYWJsZUdldChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYgc2xvdCkKICAgICB7CiAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgZW50
cnkgPSBzeW1ib2xUYWJsZSgpLmlubGluZUdldChwcm9wZXJ0eU5hbWUuaW1wbCgpKTsKICAgICAg
ICAgaWYgKCFlbnRyeS5pc051bGwoKSkgewpAQCAtMTA4LDcgKzEwOCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaW5saW5lIGJvb2wgSlNW
YXJpYWJsZU9iamVjdDo6c3ltYm9sVGFibGVHZXQoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QsIGJvb2wmIHNsb3RJc1dyaXRlYWJsZSkKKyAgICBKU19J
TkxJTkUgYm9vbCBKU1ZhcmlhYmxlT2JqZWN0OjpzeW1ib2xUYWJsZUdldChjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCwgYm9vbCYgc2xvdElzV3JpdGVh
YmxlKQogICAgIHsKICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxl
KCkuaW5saW5lR2V0KHByb3BlcnR5TmFtZS5pbXBsKCkpOwogICAgICAgICBpZiAoIWVudHJ5Lmlz
TnVsbCgpKSB7CkBAIC0xMTksNyArMTE5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpbmxpbmUgYm9vbCBKU1ZhcmlhYmxlT2JqZWN0Ojpz
eW1ib2xUYWJsZVB1dChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSkKKyAgICBKU19JTkxJTkUgYm9vbCBKU1Zhcmlh
YmxlT2JqZWN0OjpzeW1ib2xUYWJsZVB1dChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICB7CiAgICAgICAg
IEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6
aGVhcCh0aGlzKSk7CiAKQEAgLTEzMiw3ICsxMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgaW5saW5lIGJvb2wgSlNWYXJpYWJsZU9iamVj
dDo6c3ltYm9sVGFibGVQdXRXaXRoQXR0cmlidXRlcyhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQg
YXR0cmlidXRlcykKKyAgICBKU19JTkxJTkUgYm9vbCBKU1ZhcmlhYmxlT2JqZWN0OjpzeW1ib2xU
YWJsZVB1dFdpdGhBdHRyaWJ1dGVzKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
KQogICAgIHsKICAgICAgICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBIZWFwOjpoZWFw
KHZhbHVlKSA9PSBIZWFwOjpoZWFwKHRoaXMpKTsKIApAQCAtMTQ2LDcgKzE0Niw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBpbmxpbmUgUGFz
c093bkFycmF5UHRyPFdyaXRlQmFycmllcjxVbmtub3duPiA+IEpTVmFyaWFibGVPYmplY3Q6OmNv
cHlSZWdpc3RlckFycmF5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgV3JpdGVCYXJyaWVyPFVu
a25vd24+KiBzcmMsIHNpemVfdCBjb3VudCwgc2l6ZV90IGNhbGxmcmFtZVN0YXJ0cykKKyAgICBK
U19JTkxJTkUgUGFzc093bkFycmF5UHRyPFdyaXRlQmFycmllcjxVbmtub3duPiA+IEpTVmFyaWFi
bGVPYmplY3Q6OmNvcHlSZWdpc3RlckFycmF5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgV3Jp
dGVCYXJyaWVyPFVua25vd24+KiBzcmMsIHNpemVfdCBjb3VudCwgc2l6ZV90IGNhbGxmcmFtZVN0
YXJ0cykKICAgICB7CiAgICAgICAgIE93bkFycmF5UHRyPFdyaXRlQmFycmllcjxVbmtub3duPiA+
IHJlZ2lzdGVyQXJyYXkgPSBhZG9wdEFycmF5UHRyKG5ldyBXcml0ZUJhcnJpZXI8VW5rbm93bj5b
Y291bnRdKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjYWxsZnJhbWVTdGFydHM7
IGkrKykKQEAgLTE1Nyw3ICsxNTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJu
IHJlZ2lzdGVyQXJyYXkucmVsZWFzZSgpOwogICAgIH0KIAotICAgIGlubGluZSB2b2lkIEpTVmFy
aWFibGVPYmplY3Q6OnNldFJlZ2lzdGVycyhXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHJlZ2lzdGVy
cywgUGFzc093bkFycmF5UHRyPFdyaXRlQmFycmllcjxVbmtub3duPiA+IHJlZ2lzdGVyQXJyYXkp
CisgICAgSlNfSU5MSU5FIHZvaWQgSlNWYXJpYWJsZU9iamVjdDo6c2V0UmVnaXN0ZXJzKFdyaXRl
QmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJzLCBQYXNzT3duQXJyYXlQdHI8V3JpdGVCYXJyaWVy
PFVua25vd24+ID4gcmVnaXN0ZXJBcnJheSkKICAgICB7CiAgICAgICAgIEFTU0VSVChyZWdpc3Rl
ckFycmF5ICE9IG1fcmVnaXN0ZXJBcnJheSk7CiAgICAgICAgIG1fcmVnaXN0ZXJBcnJheSA9IHJl
Z2lzdGVyQXJyYXk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1dyYXBwZXJPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBl
ck9iamVjdC5oCmluZGV4IDczNzEzYzBiMzRjNjQyNDJhODRmMmFlZGQxN2Q1MTU1OTZhMTBlNDYu
LmEzOGVmMmQ3YTBmZDdmZjUzYjFkNDY4NGU1YWZlMWI0NjA0YmFiZDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5oCkBAIC0yOCwyMCArMjgs
MjAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAvLyBUaGlzIGNsYXNzIGlzIHVzZWQgYXMgYSBi
YXNlIGZvciBjbGFzc2VzIHN1Y2ggYXMgU3RyaW5nLAogICAgIC8vIE51bWJlciwgQm9vbGVhbiBh
bmQgRGF0ZSB3aGljaCBhcmUgd3JhcHBlcnMgZm9yIHByaW1pdGl2ZSB0eXBlcy4KLSAgICBjbGFz
cyBKU1dyYXBwZXJPYmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CisgICAgY2xhc3Mg
SlNfRVhQT1JUX1BSSVZBVEUgSlNXcmFwcGVyT2JqZWN0IDogcHVibGljIEpTTm9uRmluYWxPYmpl
Y3QgewogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7
CiAKLSAgICAgICAgSlNWYWx1ZSBpbnRlcm5hbFZhbHVlKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQg
c2V0SW50ZXJuYWxWYWx1ZShKU0dsb2JhbERhdGEmLCBKU1ZhbHVlKTsKKyAgICAgICAgSlNfSU5M
SU5FIEpTVmFsdWUgaW50ZXJuYWxWYWx1ZSgpIGNvbnN0OworICAgICAgICBKU19JTkxJTkUgdm9p
ZCBzZXRJbnRlcm5hbFZhbHVlKEpTR2xvYmFsRGF0YSYsIEpTVmFsdWUpOwogCi0gICAgICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKSAKKyAgICAg
ICAgSlNfSU5MSU5FIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJv
dG90eXBlKSAKICAgICAgICAgeyAKICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0
ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCAmc19pbmZvKTsKICAgICAgICAgfQogCiAgICAgcHJvdGVjdGVk
OgotICAgICAgICBleHBsaWNpdCBKU1dyYXBwZXJPYmplY3QoSlNHbG9iYWxEYXRhJiwgU3RydWN0
dXJlKik7CisgICAgICAgIEpTX0lOTElORSBleHBsaWNpdCBKU1dyYXBwZXJPYmplY3QoSlNHbG9i
YWxEYXRhJiwgU3RydWN0dXJlKik7CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBKU05vbkZpbmFsT2JqZWN0OjpT
dHJ1Y3R1cmVGbGFnczsKIAogICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2Vs
bCosIFNsb3RWaXNpdG9yJik7CkBAIC01MiwxNyArNTIsMTcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiBtX2ludGVybmFsVmFsdWU7CiAgICAgfTsKIAot
ICAgIGlubGluZSBKU1dyYXBwZXJPYmplY3Q6OkpTV3JhcHBlck9iamVjdChKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIEpTX0lOTElORSBKU1dyYXBw
ZXJPYmplY3Q6OkpTV3JhcHBlck9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVj
dHVyZSogc3RydWN0dXJlKQogICAgICAgICA6IEpTTm9uRmluYWxPYmplY3QoZ2xvYmFsRGF0YSwg
c3RydWN0dXJlKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgSlNWYWx1ZSBKU1dyYXBwZXJP
YmplY3Q6OmludGVybmFsVmFsdWUoKSBjb25zdAorICAgIEpTX0lOTElORSBKU1ZhbHVlIEpTV3Jh
cHBlck9iamVjdDo6aW50ZXJuYWxWYWx1ZSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4g
bV9pbnRlcm5hbFZhbHVlLmdldCgpOwogICAgIH0KIAotICAgIGlubGluZSB2b2lkIEpTV3JhcHBl
ck9iamVjdDo6c2V0SW50ZXJuYWxWYWx1ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFs
dWUgdmFsdWUpCisgICAgSlNfSU5MSU5FIHZvaWQgSlNXcmFwcGVyT2JqZWN0OjpzZXRJbnRlcm5h
bFZhbHVlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSB2YWx1ZSkKICAgICB7CiAg
ICAgICAgIEFTU0VSVCh2YWx1ZSk7CiAgICAgICAgIEFTU0VSVCghdmFsdWUuaXNPYmplY3QoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCmluZGV4IDE3MTJiMGQ0NDllNmQy
ZDEwN2ZlYjYxZTRkNTY2ZmNiYjAzZjVhOWUuLmMzNzI4YmVhYTVlOWY1Zjk2OWFjNDQ1NWMxMDhk
NjMyOWY3NzdlMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xv
b2t1cC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCkBAIC0x
NTQsNyArMTU0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgY3JlYXRlVGFi
bGUoJmV4ZWMtPmdsb2JhbERhdGEoKSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGRlbGV0
ZVRhYmxlKCkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZGVsZXRlVGFi
bGUoKSBjb25zdDsKIAogICAgICAgICAvLyBGaW5kIGFuIGVudHJ5IGluIHRoZSB0YWJsZSwgYW5k
IHJldHVybiB0aGUgZW50cnkuCiAgICAgICAgIEFMV0FZU19JTkxJTkUgY29uc3QgSGFzaEVudHJ5
KiBlbnRyeShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIGlkZW50
aWZpZXIpIGNvbnN0CkBAIC0yNDYsMTAgKzI0NiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgfQogCiAgICAgICAgIC8vIENvbnZlcnQgdGhlIGhhc2ggdGFibGUga2V5cyB0byBpZGVudGlm
aWVycy4KLSAgICAgICAgdm9pZCBjcmVhdGVUYWJsZShKU0dsb2JhbERhdGEqKSBjb25zdDsKKyAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBjcmVhdGVUYWJsZShKU0dsb2JhbERhdGEqKSBj
b25zdDsKICAgICB9OwogCi0gICAgYm9vbCBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChFeGVjU3Rh
dGUqLCBjb25zdCBIYXNoRW50cnkqLCBKU09iamVjdCogdGhpc09iamVjdCwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBib29sIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSosIGNvbnN0IEhhc2hFbnRy
eSosIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYpOwogCiAgICAgLyoqCiAgICAgICogVGhpcyBtZXRob2QgZG9lcyBpdCBh
bGwgKGxvb2tpbmcgaW4gdGhlIGhhc2h0YWJsZSwgY2hlY2tpbmcgZm9yIGZ1bmN0aW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NZW1vcnlTdGF0aXN0aWNzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NZW1vcnlTdGF0aXN0aWNzLmgKaW5kZXgg
ZDRiOGI2ZmMxMDE4YWMwNmE4NDU3MmU2MjljZWZjZWIzYTYwYzRlYi4uOWE4NmRmMjk2ODU4MjJk
YTk1YjU4NGJmN2ViNzQ4YWFhMjE0NGQyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTWVtb3J5U3RhdGlzdGljcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01lbW9yeVN0YXRpc3RpY3MuaApAQCAtMzcsNyArMzcsNyBAQCBzdHJ1Y3QgR2xv
YmFsTWVtb3J5U3RhdGlzdGljcyB7CiAgICAgc2l6ZV90IEpJVEJ5dGVzOwogfTsKIAotR2xvYmFs
TWVtb3J5U3RhdGlzdGljcyBnbG9iYWxNZW1vcnlTdGF0aXN0aWNzKCk7CitKU19FWFBPUlRfUFJJ
VkFURSBHbG9iYWxNZW1vcnlTdGF0aXN0aWNzIGdsb2JhbE1lbW9yeVN0YXRpc3RpY3MoKTsKIAog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90
b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5o
CmluZGV4IGI2MDVhNDc3ODBmZGRiNDdlN2JmMDk2MmU2ZDY0ZDA5ZjE4ZTJkNTMuLjU1NGQ2NTFh
YjY3ZmE5Mzk3NzFjNmU5OWEwYTJlYjM2ODJmNWVjMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5oCkBAIC01OSw3ICs1OSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBib29sIG1faGFzTm9Qcm9wZXJ0aWVzV2l0aFVJbnQzMk5hbWVz
OwogICAgIH07CiAKLSAgICBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3Rv
RnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKik7
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oCmluZGV4IGZmOWYxNjA4Yjg5Yjc0ZWQ0MjhiYjUx
MWZkOGE5YmRlNTM1ZGEwZjcuLmNmMzAxMjBkYzkzYjRiYjRmN2NmYWJmY2IyNzc5YWFlZmE0ZGEy
NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5RGVz
Y3JpcHRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5RGVz
Y3JpcHRvci5oCkBAIC0zNiwyNSArMzYsMjUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAg
ICAsIG1fc2VlbkF0dHJpYnV0ZXMoMCkKICAgICAgICAgewogICAgICAgICB9Ci0gICAgICAgIGJv
b2wgd3JpdGFibGUoKSBjb25zdDsKLSAgICAgICAgYm9vbCBlbnVtZXJhYmxlKCkgY29uc3Q7Ci0g
ICAgICAgIGJvb2wgY29uZmlndXJhYmxlKCkgY29uc3Q7Ci0gICAgICAgIGJvb2wgaXNEYXRhRGVz
Y3JpcHRvcigpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHdyaXRhYmxl
KCkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgZW51bWVyYWJsZSgpIGNv
bnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGNvbmZpZ3VyYWJsZSgpIGNvbnN0
OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzRGF0YURlc2NyaXB0b3IoKSBjb25z
dDsKICAgICAgICAgYm9vbCBpc0dlbmVyaWNEZXNjcmlwdG9yKCkgY29uc3Q7Ci0gICAgICAgIGJv
b2wgaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgYm9vbCBpc0FjY2Vzc29yRGVzY3JpcHRvcigpIGNvbnN0OwogICAgICAgICB1bnNpZ25lZCBh
dHRyaWJ1dGVzKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVzOyB9CiAgICAgICAgIEpTVmFs
dWUgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9Ci0gICAgICAgIEpTVmFsdWUgZ2V0
dGVyKCkgY29uc3Q7Ci0gICAgICAgIEpTVmFsdWUgc2V0dGVyKCkgY29uc3Q7Ci0gICAgICAgIHZv
aWQgc2V0VW5kZWZpbmVkKCk7Ci0gICAgICAgIHZvaWQgc2V0RGVzY3JpcHRvcihKU1ZhbHVlIHZh
bHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKLSAgICAgICAgdm9pZCBzZXRBY2Nlc3NvckRlc2Ny
aXB0b3IoSlNWYWx1ZSBnZXR0ZXIsIEpTVmFsdWUgc2V0dGVyLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
KTsKLSAgICAgICAgdm9pZCBzZXRXcml0YWJsZShib29sKTsKLSAgICAgICAgdm9pZCBzZXRFbnVt
ZXJhYmxlKGJvb2wpOwotICAgICAgICB2b2lkIHNldENvbmZpZ3VyYWJsZShib29sKTsKKyAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBnZXR0ZXIoKSBjb25zdDsKKyAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBzZXR0ZXIoKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgdm9pZCBzZXRVbmRlZmluZWQoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCBzZXREZXNjcmlwdG9yKEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwor
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldEFjY2Vzc29yRGVzY3JpcHRvcihKU1Zh
bHVlIGdldHRlciwgSlNWYWx1ZSBzZXR0ZXIsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldFdyaXRhYmxlKGJvb2wpOworICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIHNldEVudW1lcmFibGUoYm9vbCk7CisgICAgICAgIEpTX0VYUE9S
VF9QUklWQVRFIHZvaWQgc2V0Q29uZmlndXJhYmxlKGJvb2wpOwogICAgICAgICB2b2lkIHNldFZh
bHVlKEpTVmFsdWUgdmFsdWUpIHsgbV92YWx1ZSA9IHZhbHVlOyB9Ci0gICAgICAgIHZvaWQgc2V0
U2V0dGVyKEpTVmFsdWUpOwotICAgICAgICB2b2lkIHNldEdldHRlcihKU1ZhbHVlKTsKKyAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRTZXR0ZXIoSlNWYWx1ZSk7CisgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0R2V0dGVyKEpTVmFsdWUpOwogICAgICAgICBib29sIGlz
RW1wdHkoKSBjb25zdCB7IHJldHVybiAhKG1fdmFsdWUgfHwgbV9nZXR0ZXIgfHwgbV9zZXR0ZXIg
fHwgbV9zZWVuQXR0cmlidXRlcyk7IH0KICAgICAgICAgYm9vbCB3cml0YWJsZVByZXNlbnQoKSBj
b25zdCB7IHJldHVybiBtX3NlZW5BdHRyaWJ1dGVzICYgV3JpdGFibGVQcmVzZW50OyB9CiAgICAg
ICAgIGJvb2wgZW51bWVyYWJsZVByZXNlbnQoKSBjb25zdCB7IHJldHVybiBtX3NlZW5BdHRyaWJ1
dGVzICYgRW51bWVyYWJsZVByZXNlbnQ7IH0KQEAgLTY1LDcgKzY1LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIGJvb2wgYXR0cmlidXRlc0VxdWFsKGNvbnN0IFByb3BlcnR5RGVzY3JpcHRv
ciYgb3RoZXIpIGNvbnN0OwogICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzV2l0aE92ZXJyaWRl
KGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgb3RoZXIpIGNvbnN0OwogICAgIHByaXZhdGU6Ci0g
ICAgICAgIHN0YXRpYyB1bnNpZ25lZCBkZWZhdWx0QXR0cmlidXRlczsKKyAgICAgICAgSlNfRVhQ
T1JUREFUQSBzdGF0aWMgdW5zaWduZWQgZGVmYXVsdEF0dHJpYnV0ZXM7CiAgICAgICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImKXsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgICAgIGVudW0geyBXcml0YWJsZVByZXNlbnQgPSAxLCBFbnVtZXJhYmxlUHJlc2VudCA9IDIs
IENvbmZpZ3VyYWJsZVByZXNlbnQgPSA0fTsKICAgICAgICAgLy8gTWF5IGJlIGEgZ2V0dGVyL3Nl
dHRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlO
YW1lQXJyYXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFy
cmF5LmgKaW5kZXggMGRhOTMwZjE3M2YxM2Y0YTNlMWI4YzA0ZDY2NmE4YzA0MWE3MWFkNS4uZGFi
ZGE5NDViMTk2NWEzYmYzY2I0NTlmYmQ2NzNhMjg4NGM3MzQxMCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oCkBAIC02OSw3ICs2OSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEoKSB7
IHJldHVybiBtX2dsb2JhbERhdGE7IH0KIAogICAgICAgICB2b2lkIGFkZChjb25zdCBJZGVudGlm
aWVyJiBpZGVudGlmaWVyKSB7IGFkZChpZGVudGlmaWVyLmltcGwoKSk7IH0KLSAgICAgICAgdm9p
ZCBhZGQoU3RyaW5nSW1wbCopOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGFkZChT
dHJpbmdJbXBsKik7CiAgICAgICAgIHZvaWQgYWRkS25vd25VbmlxdWUoU3RyaW5nSW1wbCogaWRl
bnRpZmllcikgeyBtX2RhdGEtPnByb3BlcnR5TmFtZVZlY3RvcigpLmFwcGVuZChJZGVudGlmaWVy
KG1fZ2xvYmFsRGF0YSwgaWRlbnRpZmllcikpOyB9CiAKICAgICAgICAgSWRlbnRpZmllciYgb3Bl
cmF0b3JbXSh1bnNpZ25lZCBpKSB7IHJldHVybiBtX2RhdGEtPnByb3BlcnR5TmFtZVZlY3Rvcigp
W2ldOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0
eVNsb3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCmlu
ZGV4IDg1NTdlNmQyNDc2ZWEwNjlmZDUwN2JlMjE2ZmRhM2M2OTk5Yjg4NGUuLmNmZWRmNzg3NmZi
NjM2NTQ0YmQ5ZThmZjQ3MTdhNDI4MzAwYzY4OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCkBAIC0yMTgsNyArMjE4LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgICAgICByZXR1cm4gbV9nZXRWYWx1ZTsKICAgICAgICAgfQogICAgIHByaXZh
dGU6Ci0gICAgICAgIEpTVmFsdWUgZnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKikgY29uc3Q7Cisg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgZnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRl
KikgY29uc3Q7CiAKICAgICAgICAgR2V0VmFsdWVGdW5jIG1fZ2V0VmFsdWU7CiAgICAgICAgIEdl
dEluZGV4VmFsdWVGdW5jIG1fZ2V0SW5kZXhWYWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwLmgKaW5kZXggYWEzYTYxZjQ2ZjljMWEzNGY3MzExNmE4YWY0MWZjZTRjMDQ2NDA2
ZS4uYzE4YWQ0YzkwOTk5YWVlYTQwNzE3ZTU2NDUzYzdmZTI2YjhkNjI0ZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgKQEAgLTM1LDE0ICszNSwxNCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICBzdHJ1Y3QgUmVnRXhwUmVwcmVzZW50YXRpb247CiAgICAgY2xhc3MgSlNHbG9i
YWxEYXRhOwogCi0gICAgUmVnRXhwRmxhZ3MgcmVnRXhwRmxhZ3MoY29uc3QgVVN0cmluZyYpOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZ0V4cEZsYWdzIHJlZ0V4cEZsYWdzKGNvbnN0IFVTdHJp
bmcmKTsKIAogICAgIGNsYXNzIFJlZ0V4cCA6IHB1YmxpYyBKU0NlbGwgewogICAgIHB1YmxpYzoK
ICAgICAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKIAotICAgICAgICBzdGF0aWMgUmVnRXhwKiBj
cmVhdGUoSlNHbG9iYWxEYXRhJiwgY29uc3QgVVN0cmluZyYgcGF0dGVybiwgUmVnRXhwRmxhZ3Mp
OwotICAgICAgICB+UmVnRXhwKCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBS
ZWdFeHAqIGNyZWF0ZShKU0dsb2JhbERhdGEmLCBjb25zdCBVU3RyaW5nJiBwYXR0ZXJuLCBSZWdF
eHBGbGFncyk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIH5SZWdFeHAoKTsKIAogICAgICAg
ICBib29sIGdsb2JhbCgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBGbGFnR2xvYmFsOyB9CiAg
ICAgICAgIGJvb2wgaWdub3JlQ2FzZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBGbGFnSWdu
b3JlQ2FzZTsgfQpAQCAtNTMsNyArNTMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9v
bCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gIW1fY29uc3RydWN0aW9uRXJyb3IgJiYgbV9mbGFn
cyAhPSBJbnZhbGlkRmxhZ3M7IH0KICAgICAgICAgY29uc3QgY2hhciogZXJyb3JNZXNzYWdlKCkg
Y29uc3QgeyByZXR1cm4gbV9jb25zdHJ1Y3Rpb25FcnJvcjsgfQogCi0gICAgICAgIGludCBtYXRj
aChKU0dsb2JhbERhdGEmLCBjb25zdCBVU3RyaW5nJiwgaW50IHN0YXJ0T2Zmc2V0LCBWZWN0b3I8
aW50LCAzMj4qIG92ZWN0b3IgPSAwKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgaW50IG1h
dGNoKEpTR2xvYmFsRGF0YSYsIGNvbnN0IFVTdHJpbmcmLCBpbnQgc3RhcnRPZmZzZXQsIFZlY3Rv
cjxpbnQsIDMyPiogb3ZlY3RvciA9IDApOwogICAgICAgICB1bnNpZ25lZCBudW1TdWJwYXR0ZXJu
cygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtU3VicGF0dGVybnM7IH0KIAogICAgICAgICBib29sIGhh
c0NvZGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
T2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaApp
bmRleCBhMTE3ZjM2MmMzZTMzYTg3OTEzMmE2Y2EyMmIxYmVmODVkYWM3ZjU5Li5lYmU2NGMyYTRh
NDg1NWRhZjZjYWRkNjFiOTRlNThlODg2YjVlZmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBPYmplY3QuaApAQCAtNzcsOCArNzcsOCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgfQogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICBSZWdFeHBPYmplY3QoSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWdFeHAqKTsKLSAgICAgICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihKU0dsb2JhbE9iamVjdCopOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBSZWdF
eHBPYmplY3QoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWdFeHAqKTsKKyAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbE9iamVjdCopOwog
ICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNW
aXNpdENoaWxkcmVuIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgQmFzZTo6U3RydWN0
dXJlRmxhZ3M7CiAKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBT
bG90VmlzaXRvciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U2FtcGxpbmdDb3VudGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGlu
Z0NvdW50ZXIuaAppbmRleCA2NjRiMDI4MGVlYTUxODc5M2E1ZDhkNzU1YmM3ZDFmYTZiNTAyNjdl
Li4zMjlhNWNmZDMzZGI2YTkwNWNlOWYyNjAzNjU2YTMxZDI1ZTViNTcxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ0NvdW50ZXIuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ0NvdW50ZXIuaApAQCAtNDYsNyArNDYs
NyBAQCBwdWJsaWM6CiAgICAgICAgIG1fY291bnRlciArPSBjb3VudDsKICAgICB9CiAKLSAgICBz
dGF0aWMgdm9pZCBkdW1wKCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZHVt
cCgpOwogCiAgICAgaW50NjRfdCogYWRkcmVzc09mQ291bnRlcigpIHsgcmV0dXJuICZtX2NvdW50
ZXI7IH0KIApAQCAtNzQsNyArNzQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgQWJzdHJhY3RTYW1wbGlu
Z0NvdW50ZXIqKiBtX3JlZmVyZXI7CiAgICAgLy8gTnVsbCBvYmplY3QgdXNlZCB0byBkZXRlY3Qg
ZW5kIG9mIHN0YXRpYyBjaGFpbi4KICAgICBzdGF0aWMgQWJzdHJhY3RTYW1wbGluZ0NvdW50ZXIg
c19hYnN0cmFjdFNhbXBsaW5nQ291bnRlckNoYWluRW5kOwotICAgIHN0YXRpYyBBYnN0cmFjdFNh
bXBsaW5nQ291bnRlciogc19hYnN0cmFjdFNhbXBsaW5nQ291bnRlckNoYWluOworICAgIEpTX0VY
UE9SVERBVEEgc3RhdGljIEFic3RyYWN0U2FtcGxpbmdDb3VudGVyKiBzX2Fic3RyYWN0U2FtcGxp
bmdDb3VudGVyQ2hhaW47CiAgICAgc3RhdGljIGJvb2wgc19jb21wbGV0ZWQ7CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgKaW5kZXggNDgzODVkMGNiZTFh
NDg4YWU3OWNhYTZhYTMxNTgxZDc0NjAwYzY4Zi4uNzAxMTFmNTNjNjQ0ZDg3MmVjOGMwZTJhMzZh
NGU2Nzk0Zjk0ZjU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U2NvcGVDaGFpbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hh
aW4uaApAQCAtMzMsOSArMzMsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBTY29wZUNo
YWluSXRlcmF0b3I7CiAgICAgY2xhc3MgU2xvdFZpc2l0b3I7CiAgICAgCi0gICAgY2xhc3MgU2Nv
cGVDaGFpbk5vZGUgOiBwdWJsaWMgSlNDZWxsIHsKKyAgICBjbGFzcyBKU19FWFBPUlRfUFJJVkFU
RSBTY29wZUNoYWluTm9kZSA6IHB1YmxpYyBKU0NlbGwgewogICAgIHByaXZhdGU6Ci0gICAgICAg
IFNjb3BlQ2hhaW5Ob2RlKFNjb3BlQ2hhaW5Ob2RlKiBuZXh0LCBKU09iamVjdCogb2JqZWN0LCBK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
T2JqZWN0KiBnbG9iYWxUaGlzKQorICAgICAgICBKU19JTkxJTkUgU2NvcGVDaGFpbk5vZGUoU2Nv
cGVDaGFpbk5vZGUqIG5leHQsIEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGdsb2JhbFRoaXMp
CiAgICAgICAgICAgICA6IEpTQ2VsbCgqZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS0+c2NvcGVDaGFp
bk5vZGVTdHJ1Y3R1cmUuZ2V0KCkpCiAgICAgICAgICAgICAsIGdsb2JhbERhdGEoZ2xvYmFsRGF0
YSkKICAgICAgICAgICAgICwgbmV4dCgqZ2xvYmFsRGF0YSwgdGhpcywgbmV4dCwgV3JpdGVCYXJy
aWVyPFNjb3BlQ2hhaW5Ob2RlPjo6TWF5QmVOdWxsKQpAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgdmlydHVhbCB+U2NvcGVDaGFpbk5vZGUoKTsKIAogICAgIHByb3Rl
Y3RlZDoKLSAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgICAgIEpTX0lOTElORSB2b2lk
IGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKICAgICAgICAgewogICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRp
b24oKmdsb2JhbERhdGEpOwogICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChnbG9iYWxPYmplY3Qs
IGdsb2JhbE9iamVjdCk7CkBAIC01NywxMyArNTcsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
cHVibGljOgogICAgICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwogCi0gICAgICAgIHN0YXRpYyBT
Y29wZUNoYWluTm9kZSogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIG5l
eHQsIEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGdsb2JhbFRoaXMpCisgICAgICAgIEpTX0lO
TElORSBzdGF0aWMgU2NvcGVDaGFpbk5vZGUqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFNjb3Bl
Q2hhaW5Ob2RlKiBuZXh0LCBKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBnbG9iYWxUaGlzKQog
ICAgICAgICB7CiAgICAgICAgICAgICBTY29wZUNoYWluTm9kZSogbm9kZSA9IG5ldyAoYWxsb2Nh
dGVDZWxsPFNjb3BlQ2hhaW5Ob2RlPigqZXhlYy0+aGVhcCgpKSkgU2NvcGVDaGFpbk5vZGUobmV4
dCwgb2JqZWN0LCBnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIGdsb2JhbFRoaXMpOwogICAgICAg
ICAgICAgbm9kZS0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0KTsKICAg
ICAgICAgICAgIHJldHVybiBub2RlOwogICAgICAgICB9Ci0gICAgICAgIHN0YXRpYyBTY29wZUNo
YWluTm9kZSogY3JlYXRlKFNjb3BlQ2hhaW5Ob2RlKiBuZXh0LCBKU09iamVjdCogb2JqZWN0LCBK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
T2JqZWN0KiBnbG9iYWxUaGlzKQorICAgICAgICBKU19JTkxJTkUgc3RhdGljIFNjb3BlQ2hhaW5O
b2RlKiBjcmVhdGUoU2NvcGVDaGFpbk5vZGUqIG5leHQsIEpTT2JqZWN0KiBvYmplY3QsIEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmpl
Y3QqIGdsb2JhbFRoaXMpCiAgICAgICAgIHsKICAgICAgICAgICAgIFNjb3BlQ2hhaW5Ob2RlKiBu
b2RlID0gbmV3IChhbGxvY2F0ZUNlbGw8U2NvcGVDaGFpbk5vZGU+KGdsb2JhbERhdGEtPmhlYXAp
KSBTY29wZUNoYWluTm9kZShuZXh0LCBvYmplY3QsIGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwg
Z2xvYmFsVGhpcyk7CiAgICAgICAgICAgICBub2RlLT5maW5pc2hDcmVhdGlvbihnbG9iYWxEYXRh
LCBnbG9iYWxPYmplY3QpOwpAQCAtNzYsMTEgKzc2LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBXcml0ZUJhcnJpZXI8SlNHbG9iYWxPYmplY3Q+IGdsb2JhbE9iamVjdDsKICAgICAgICAg
V3JpdGVCYXJyaWVyPEpTT2JqZWN0PiBnbG9iYWxUaGlzOwogCi0gICAgICAgIFNjb3BlQ2hhaW5O
b2RlKiBwdXNoKEpTT2JqZWN0Kik7Ci0gICAgICAgIFNjb3BlQ2hhaW5Ob2RlKiBwb3AoKTsKKyAg
ICAgICAgSlNfSU5MSU5FIFNjb3BlQ2hhaW5Ob2RlKiBwdXNoKEpTT2JqZWN0Kik7CisgICAgICAg
IEpTX0lOTElORSBTY29wZUNoYWluTm9kZSogcG9wKCk7CiAKLSAgICAgICAgU2NvcGVDaGFpbkl0
ZXJhdG9yIGJlZ2luKCk7Ci0gICAgICAgIFNjb3BlQ2hhaW5JdGVyYXRvciBlbmQoKTsKKyAgICAg
ICAgSlNfSU5MSU5FIFNjb3BlQ2hhaW5JdGVyYXRvciBiZWdpbigpOworICAgICAgICBKU19JTkxJ
TkUgU2NvcGVDaGFpbkl0ZXJhdG9yIGVuZCgpOwogCiAgICAgICAgIGludCBsb2NhbERlcHRoKCk7
CiAKQEAgLTg4LDcgKzg4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgcHJpbnQo
KTsKICNlbmRpZgogICAgICAgICAKLSAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBwcm90bykgeyByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0
YSwgZ2xvYmFsT2JqZWN0LCBwcm90bywgVHlwZUluZm8oQ29tcG91bmRUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksICZzX2luZm8pOyB9CisgICAgICAgIEpTX0lOTElORSBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKSB7IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShn
bG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvLCBUeXBlSW5mbyhDb21wb3VuZFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgJnNfaW5mbyk7IH0KICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGls
ZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFU
QSBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCkBAIC05NiwxMyArOTYsMTMgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW47CiAgICAgfTsKIAotICAgIGlubGluZSBTY29wZUNoYWluTm9k
ZSogU2NvcGVDaGFpbk5vZGU6OnB1c2goSlNPYmplY3QqIG8pCisgICAgSlNfSU5MSU5FIFNjb3Bl
Q2hhaW5Ob2RlKiBTY29wZUNoYWluTm9kZTo6cHVzaChKU09iamVjdCogbykKICAgICB7CiAgICAg
ICAgIEFTU0VSVChvKTsKICAgICAgICAgcmV0dXJuIFNjb3BlQ2hhaW5Ob2RlOjpjcmVhdGUodGhp
cywgbywgZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LmdldCgpLCBnbG9iYWxUaGlzLmdldCgpKTsK
ICAgICB9CiAKLSAgICBpbmxpbmUgU2NvcGVDaGFpbk5vZGUqIFNjb3BlQ2hhaW5Ob2RlOjpwb3Ao
KQorICAgIEpTX0lOTElORSBTY29wZUNoYWluTm9kZSogU2NvcGVDaGFpbk5vZGU6OnBvcCgpCiAg
ICAgewogICAgICAgICBBU1NFUlQobmV4dCk7CiAgICAgICAgIHJldHVybiBuZXh0LmdldCgpOwpA
QCAtMTI5LDEyICsxMjksMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFNjb3BlQ2hhaW5O
b2RlKiBtX25vZGU7CiAgICAgfTsKIAotICAgIGlubGluZSBTY29wZUNoYWluSXRlcmF0b3IgU2Nv
cGVDaGFpbk5vZGU6OmJlZ2luKCkKKyAgICBKU19JTkxJTkUgU2NvcGVDaGFpbkl0ZXJhdG9yIFNj
b3BlQ2hhaW5Ob2RlOjpiZWdpbigpCiAgICAgewogICAgICAgICByZXR1cm4gU2NvcGVDaGFpbkl0
ZXJhdG9yKHRoaXMpOyAKICAgICB9CiAKLSAgICBpbmxpbmUgU2NvcGVDaGFpbkl0ZXJhdG9yIFNj
b3BlQ2hhaW5Ob2RlOjplbmQoKQorICAgIEpTX0lOTElORSBTY29wZUNoYWluSXRlcmF0b3IgU2Nv
cGVDaGFpbk5vZGU6OmVuZCgpCiAgICAgeyAKICAgICAgICAgcmV0dXJuIFNjb3BlQ2hhaW5JdGVy
YXRvcigwKTsgCiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU21hbGxTdHJpbmdzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0
cmluZ3MuaAppbmRleCA5YzZlZDlhMzI5MTE1NTg5NTM3ZTlhMzExZGU1NjNlOGYxMjEzNWIwLi43
MjZhMmI5NDYwYWM5OTgyZTdkZmY2ZDYzOGZiZGE0OWYzOWNjMmFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuaApAQCAtNzIsOCArNzIsOCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICBwcml2YXRlOgogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
c2luZ2xlQ2hhcmFjdGVyU3RyaW5nQ291bnQgPSBtYXhTaW5nbGVDaGFyYWN0ZXJTdHJpbmcgKyAx
OwogCi0gICAgICAgIHZvaWQgY3JlYXRlRW1wdHlTdHJpbmcoSlNHbG9iYWxEYXRhKik7Ci0gICAg
ICAgIHZvaWQgY3JlYXRlU2luZ2xlQ2hhcmFjdGVyU3RyaW5nKEpTR2xvYmFsRGF0YSosIHVuc2ln
bmVkIGNoYXIpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGNyZWF0ZUVtcHR5U3Ry
aW5nKEpTR2xvYmFsRGF0YSopOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGNyZWF0
ZVNpbmdsZUNoYXJhY3RlclN0cmluZyhKU0dsb2JhbERhdGEqLCB1bnNpZ25lZCBjaGFyKTsKIAog
ICAgICAgICBKU1N0cmluZyogbV9lbXB0eVN0cmluZzsKICAgICAgICAgSlNTdHJpbmcqIG1fc2lu
Z2xlQ2hhcmFjdGVyU3RyaW5nc1tzaW5nbGVDaGFyYWN0ZXJTdHJpbmdDb3VudF07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCmluZGV4IGQ2NWVjYzU0MzJi
YTE5NWQ5YTZlNDM4N2UyYmYwODFlNWQyNDA0ODkuLjI4NTNjM2E0OGQwN2RlNzFhMTg2ZmJiZjFi
ZjY2ODI1M2M1YmFhNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmluZ09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmlu
Z09iamVjdC5oCkBAIC0yNiwyNiArMjYsMjYgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLSAgICBj
bGFzcyBTdHJpbmdPYmplY3QgOiBwdWJsaWMgSlNXcmFwcGVyT2JqZWN0IHsKKyAgICBjbGFzcyBK
U19FWFBPUlRfUFJJVkFURSBTdHJpbmdPYmplY3QgOiBwdWJsaWMgSlNXcmFwcGVyT2JqZWN0IHsK
ICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgSlNXcmFwcGVyT2JqZWN0IEJhc2U7CiAKICAg
ICAgICAgdmlydHVhbCB2b2lkIHZ0YWJsZUFuY2hvcigpOwogCi0gICAgICAgIHN0YXRpYyBTdHJp
bmdPYmplY3QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQor
ICAgICAgICBKU19JTkxJTkUgc3RhdGljIFN0cmluZ09iamVjdCogY3JlYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIHsKICAgICAgICAgICAgIEpTU3Ry
aW5nKiBzdHJpbmcgPSBqc0VtcHR5U3RyaW5nKGV4ZWMpOwogICAgICAgICAgICAgU3RyaW5nT2Jq
ZWN0KiBvYmplY3QgPSBuZXcgKGFsbG9jYXRlQ2VsbDxTdHJpbmdPYmplY3Q+KCpleGVjLT5oZWFw
KCkpKSBTdHJpbmdPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUpOyAgCiAgICAg
ICAgICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgc3RyaW5n
KTsKICAgICAgICAgICAgIHJldHVybiBvYmplY3Q7CiAgICAgICAgIH0KLSAgICAgICAgc3RhdGlj
IFN0cmluZ09iamVjdCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEpTU3RyaW5nKiBzdHJpbmcpCisgICAgICAgIEpTX0lOTElORSBzdGF0aWMgU3RyaW5nT2Jq
ZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNTdHJp
bmcqIHN0cmluZykKICAgICAgICAgewogICAgICAgICAgICAgU3RyaW5nT2JqZWN0KiBvYmplY3Qg
PSBuZXcgKGFsbG9jYXRlQ2VsbDxTdHJpbmdPYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBTdHJpbmdP
YmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgb2JqZWN0
LT5maW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIHN0cmluZyk7CiAgICAgICAgICAg
ICByZXR1cm4gb2JqZWN0OwogICAgICAgICB9Ci0gICAgICAgIHN0YXRpYyBTdHJpbmdPYmplY3Qq
IGNyZWF0ZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIEpTU3RyaW5nKik7CisgICAgICAg
IEpTX0lOTElORSBzdGF0aWMgU3RyaW5nT2JqZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiwgSlNHbG9i
YWxPYmplY3QqLCBKU1N0cmluZyopOwogCiAgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3Bl
cnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYpOwogICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3RCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90Jik7CkBAIC01OCw5ICs1OCw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAg
IHN0YXRpYyBjb25zdCBKU19FWFBPUlREQVRBIENsYXNzSW5mbyBzX2luZm87CiAKLSAgICAgICAg
SlNTdHJpbmcqIGludGVybmFsVmFsdWUoKSBjb25zdCB7IHJldHVybiBhc1N0cmluZyhKU1dyYXBw
ZXJPYmplY3Q6OmludGVybmFsVmFsdWUoKSk7fQorICAgICAgICBKU19JTkxJTkUgSlNTdHJpbmcq
IGludGVybmFsVmFsdWUoKSBjb25zdCB7IHJldHVybiBhc1N0cmluZyhKU1dyYXBwZXJPYmplY3Q6
OmludGVybmFsVmFsdWUoKSk7fQogCi0gICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgICAgICBKU19JTkxJTkUgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCAmc19pbmZv
KTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaApp
bmRleCBmNWEwYjE5Nzc2Mzg4ZTkxN2RkYzljNmMyZjE5ZjI0YThkOTlmMjA4Li5hYjIwMWQwY2My
N2Q3NGE1OGI5YTUwZjg3MThjM2IzM2ZmYTE2OTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmUuaApAQCAtODQsMTEgKzg0LDExIEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIHZvaWQgZHVtcFN0YXRpc3RpY3MoKTsKIAotICAg
ICAgICBzdGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRh
JiwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIHNpemVfdCYgb2Zmc2V0KTsKLSAgICAg
ICAgc3RhdGljIFN0cnVjdHVyZSogYWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVj
dHVyZShTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVk
IGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpOworICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5z
aXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIHNpemVf
dCYgb2Zmc2V0KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSog
YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCog
c3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpOwogICAgICAgICBzdGF0aWMgU3RydWN0dXJl
KiByZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBzaXplX3QmIG9mZnNldCk7Ci0gICAgICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNoYW5nZVByb3RvdHlwZVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwg
U3RydWN0dXJlKiwgSlNWYWx1ZSBwcm90b3R5cGUpOwotICAgICAgICBzdGF0aWMgU3RydWN0dXJl
KiBkZXNwZWNpZnlGdW5jdGlvblRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwg
Y29uc3QgSWRlbnRpZmllciYpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3Ry
dWN0dXJlKiBjaGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVy
ZSosIEpTVmFsdWUgcHJvdG90eXBlKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IFN0cnVjdHVyZSogZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0
cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImKTsKICAgICAgICAgc3RhdGljIFN0cnVjdHVyZSog
Z2V0dGVyU2V0dGVyVHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKICAgICAg
ICAgc3RhdGljIFN0cnVjdHVyZSogdG9DYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihKU0ds
b2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKICAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogdG9VbmNh
Y2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwpA
QCAtMTAzLDEwICsxMDMsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgU3RydWN0dXJl
KiBmbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBKU09iamVjdCopOwog
Ci0gICAgICAgIH5TdHJ1Y3R1cmUoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgflN0cnVj
dHVyZSgpOwogCiAgICAgICAgIC8vIFRoZXNlIHNob3VsZCBiZSB1c2VkIHdpdGggY2F1dGlvbi4g
IAotICAgICAgICBzaXplX3QgYWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERh
dGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMs
IEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVf
dCBhZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZp
Y1ZhbHVlKTsKICAgICAgICAgc2l6ZV90IHJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24o
SlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKICAgICAgICAg
dm9pZCBzZXRQcm90b3R5cGVXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIEpTVmFsdWUgcHJvdG90eXBlKSB7IG1fcHJvdG90eXBlLnNldChnbG9iYWxEYXRhLCB0aGlz
LCBwcm90b3R5cGUpOyB9CiAgICAgICAgIApAQCAtMTM2LDcgKzEzNiw3IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgICAgIHNpemVfdCBnZXQoSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lKTsKICAgICAgICAgc2l6ZV90IGdldChKU0dsb2JhbERhdGEmLCBjb25z
dCBVU3RyaW5nJiBuYW1lKTsKLSAgICAgICAgc2l6ZV90IGdldChKU0dsb2JhbERhdGEmLCBTdHJp
bmdJbXBsKiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwqJiBzcGVj
aWZpY1ZhbHVlKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGdldChKU0dsb2Jh
bERhdGEmLCBTdHJpbmdJbXBsKiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzLCBK
U0NlbGwqJiBzcGVjaWZpY1ZhbHVlKTsKICAgICAgICAgc2l6ZV90IGdldChKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0
dHJpYnV0ZXMsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgICAg
IEFTU0VSVCghcHJvcGVydHlOYW1lLmlzTnVsbCgpKTsKQEAgLTE1MSw3ICsxNTEsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0
dXJuIG1fcHJvcGVydHlUYWJsZSA/IG1fcHJvcGVydHlUYWJsZS0+aXNFbXB0eSgpIDogbV9vZmZz
ZXQgPT0gbm9PZmZzZXQ7IH0KIAotICAgICAgICB2b2lkIGRlc3BlY2lmeURpY3Rpb25hcnlGdW5j
dGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbihK
U0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOwogICAgICAgICB2
b2lkIGRpc2FibGVTcGVjaWZpY0Z1bmN0aW9uVHJhY2tpbmcoKSB7IG1fc3BlY2lmaWNGdW5jdGlv
blRocmFzaENvdW50ID0gbWF4U3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50OyB9CiAKICAgICAg
ICAgdm9pZCBzZXRFbnVtZXJhdGlvbkNhY2hlKEpTR2xvYmFsRGF0YSYsIEpTUHJvcGVydHlOYW1l
SXRlcmF0b3IqIGVudW1lcmF0aW9uQ2FjaGUpOyAvLyBEZWZpbmVkIGluIEpTUHJvcGVydHlOYW1l
SXRlcmF0b3IuaC4KQEAgLTE5Niw3ICsxOTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
c3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAgIHByaXZh
dGU6Ci0gICAgICAgIFN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBKU0dsb2JhbE9iamVjdCosIEpT
VmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYsIGNvbnN0IENsYXNzSW5mbyopOworICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwgSlNHbG9iYWxP
YmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mLCBjb25zdCBDbGFzc0lu
Zm8qKTsKICAgICAgICAgU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYpOwogICAgICAgICBTdHJ1Y3R1
cmUoSlNHbG9iYWxEYXRhJiwgY29uc3QgU3RydWN0dXJlKik7CiAKQEAgLTIyNiw3ICsyMjYsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBQYXNzT3duUHRyPFByb3BlcnR5VGFibGU+IGNv
cHlQcm9wZXJ0eVRhYmxlKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSogb3duZXIpOwogICAgICAg
ICBQYXNzT3duUHRyPFByb3BlcnR5VGFibGU+IGNvcHlQcm9wZXJ0eVRhYmxlRm9yUGlubmluZyhK
U0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqIG93bmVyKTsKLSAgICAgICAgdm9pZCBtYXRlcmlhbGl6
ZVByb3BlcnR5TWFwKEpTR2xvYmFsRGF0YSYpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2
b2lkIG1hdGVyaWFsaXplUHJvcGVydHlNYXAoSlNHbG9iYWxEYXRhJik7CiAgICAgICAgIHZvaWQg
bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8o
KSA9PSAmc19pbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RpbWVvdXRDaGVja2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UaW1lb3V0
Q2hlY2tlci5oCmluZGV4IDU5MjU2NDFmODBhMzY2YWQzNDA2MWI1NjJjNzRjZDgyMmUzY2ZlOWIu
Ljg5ZDYxNThjY2RkNjQ3ZTIzNjkzMmY2ZDRjOWMyMWUwMzliNjBlZjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RpbWVvdXRDaGVja2VyLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGltZW91dENoZWNrZXIuaApAQCAtNTcsOSArNTcsOSBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIC0tbV9zdGFydENvdW50OwogICAgICAgICB9
CiAKLSAgICAgICAgdm9pZCByZXNldCgpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lk
IHJlc2V0KCk7CiAKLSAgICAgICAgYm9vbCBkaWRUaW1lT3V0KEV4ZWNTdGF0ZSopOworICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSBib29sIGRpZFRpbWVPdXQoRXhlY1N0YXRlKik7CiAKICAgICBw
cml2YXRlOgogICAgICAgICB1bnNpZ25lZCBtX3RpbWVvdXRJbnRlcnZhbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuaAppbmRleCBjMDVhZTUwODEwMTc3NDNmNjAyY2EwNzY4
OGRmNmE3ZDM5ZjE2NjY3Li5jMTFjNTY3NmE5ZWVkM2JlYzY4YWY2OGE1OTc5MjVlODYwYTRkMTdl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5oCkBAIC0zMywxOCArMzMs
MTggQEAgcHVibGljOgogICAgIFVTdHJpbmcoKSB7IH0KIAogICAgIC8vIENvbnN0cnVjdCBhIHN0
cmluZyB3aXRoIFVURi0xNiBkYXRhLgotICAgIFVTdHJpbmcoY29uc3QgVUNoYXIqIGNoYXJhY3Rl
cnMsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgVVN0cmluZyhjb25z
dCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKIAogICAgIC8vIENvbnN0cnVj
dCBhIHN0cmluZyB3aXRoIFVURi0xNiBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJj
ZS4KLSAgICBVU3RyaW5nKGNvbnN0IFVDaGFyKik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgVVN0
cmluZyhjb25zdCBVQ2hhciopOwogCiAgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdpdGggbGF0
aW4xIGRhdGEuCiAgICAgVVN0cmluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQg
bGVuZ3RoKTsKLSAgICBVU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgVVN0cmluZyhjb25zdCBjaGFyKiBjaGFyYWN0
ZXJzLCB1bnNpZ25lZCBsZW5ndGgpOwogCiAgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdpdGgg
bGF0aW4xIGRhdGEsIGZyb20gYSBudWxsLXRlcm1pbmF0ZWQgc291cmNlLgogICAgIFVTdHJpbmco
Y29uc3QgTENoYXIqIGNoYXJhY3RlcnMpOwotICAgIFVTdHJpbmcoY29uc3QgY2hhciogY2hhcmFj
dGVycyk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgVVN0cmluZyhjb25zdCBjaGFyKiBjaGFyYWN0
ZXJzKTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyByZWZlcmVuY2luZyBhbiBleGlzdGlu
ZyBTdHJpbmdJbXBsLgogICAgIFVTdHJpbmcoU3RyaW5nSW1wbCogaW1wbCkgOiBtX2ltcGwoaW1w
bCkgeyB9CkBAIC05OSw5ICs5OSw5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXM4Qml0KCkgY29u
c3QgeyByZXR1cm4gbV9pbXBsLT5pczhCaXQoKTsgfQogCi0gICAgQ1N0cmluZyBhc2NpaSgpIGNv
bnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIENTdHJpbmcgYXNjaWkoKSBjb25zdDsKICAgICBD
U3RyaW5nIGxhdGluMSgpIGNvbnN0OwotICAgIENTdHJpbmcgdXRmOChib29sIHN0cmljdCA9IGZh
bHNlKSBjb25zdDsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBDU3RyaW5nIHV0ZjgoYm9vbCBzdHJp
Y3QgPSBmYWxzZSkgY29uc3Q7CiAKICAgICBVQ2hhciBvcGVyYXRvcltdKHVuc2lnbmVkIGluZGV4
KSBjb25zdAogICAgIHsKQEAgLTExMiwxMSArMTEyLDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIG1faW1wbC0+Y2hhcmFjdGVyczE2KClbaW5kZXhdOwogICAgIH0KIAotICAgIHN0YXRpYyBV
U3RyaW5nIG51bWJlcihpbnQpOwotICAgIHN0YXRpYyBVU3RyaW5nIG51bWJlcih1bnNpZ25lZCk7
Ci0gICAgc3RhdGljIFVTdHJpbmcgbnVtYmVyKGxvbmcpOworICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBVU3RyaW5nIG51bWJlcihpbnQpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBVU3RyaW5nIG51bWJlcih1bnNpZ25lZCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IFVTdHJpbmcgbnVtYmVyKGxvbmcpOwogICAgIHN0YXRpYyBVU3RyaW5nIG51bWJlcihsb25nIGxv
bmcpOwotICAgIHN0YXRpYyBVU3RyaW5nIG51bWJlcihkb3VibGUpOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBVU3RyaW5nIG51bWJlcihkb3VibGUpOwogCiAgICAgLy8gRmluZCBhIHNp
bmdsZSBjaGFyYWN0ZXIgb3Igc3RyaW5nLCBhbHNvIHdpdGggbWF0Y2ggZnVuY3Rpb24gJiBsYXRp
bjEgZm9ybXMuCiAgICAgc2l6ZV90IGZpbmQoVUNoYXIgYywgdW5zaWduZWQgc3RhcnQgPSAwKSBj
b25zdApAQCAtMTMyLDcgKzEzMiw3IEBAIHB1YmxpYzoKICAgICBzaXplX3QgcmV2ZXJzZUZpbmQo
Y29uc3QgVVN0cmluZyYgc3RyLCB1bnNpZ25lZCBzdGFydCA9IFVJTlRfTUFYKSBjb25zdAogICAg
ICAgICB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnJldmVyc2VGaW5kKHN0ci5pbXBsKCksIHN0
YXJ0KSA6IG5vdEZvdW5kOyB9CiAKLSAgICBVU3RyaW5nIHN1YnN0cmluZ1NoYXJpbmdJbXBsKHVu
c2lnbmVkIHBvcywgdW5zaWduZWQgbGVuID0gVUlOVF9NQVgpIGNvbnN0OworICAgIEpTX0VYUE9S
VF9QUklWQVRFIFVTdHJpbmcgc3Vic3RyaW5nU2hhcmluZ0ltcGwodW5zaWduZWQgcG9zLCB1bnNp
Z25lZCBsZW4gPSBVSU5UX01BWCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgUmVmUHRyPFN0cmlu
Z0ltcGw+IG1faW1wbDsKQEAgLTE4OSwxMCArMTg5LDEwIEBAIGlubGluZSBib29sIG9wZXJhdG9y
IT0oY29uc3QgVVN0cmluZyYgczEsIGNvbnN0IFVTdHJpbmcmIHMyKQogICAgIHJldHVybiAhSlND
OjpvcGVyYXRvcj09KHMxLCBzMik7CiB9CiAKLWJvb2wgb3BlcmF0b3I8KGNvbnN0IFVTdHJpbmcm
IHMxLCBjb25zdCBVU3RyaW5nJiBzMik7Ci1ib29sIG9wZXJhdG9yPihjb25zdCBVU3RyaW5nJiBz
MSwgY29uc3QgVVN0cmluZyYgczIpOworSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBvcGVyYXRvcjwo
Y29uc3QgVVN0cmluZyYgczEsIGNvbnN0IFVTdHJpbmcmIHMyKTsKK0pTX0VYUE9SVF9QUklWQVRF
IGJvb2wgb3BlcmF0b3I+KGNvbnN0IFVTdHJpbmcmIHMxLCBjb25zdCBVU3RyaW5nJiBzMik7CiAK
LWJvb2wgb3BlcmF0b3I9PShjb25zdCBVU3RyaW5nJiBzMSwgY29uc3QgY2hhciogczIpOworSlNf
RVhQT1JUX1BSSVZBVEUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFVTdHJpbmcmIHMxLCBjb25zdCBj
aGFyKiBzMik7CiAKIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgVVN0cmluZyYgczEsIGNv
bnN0IGNoYXIqIHMyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvV3JpdGVCYXJyaWVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Xcml0ZUJh
cnJpZXIuaAppbmRleCA1MjVmYzA5MjY3ZTY0NTdjOTZlYzMyZmEyMTk2Zjg5ODJjNDg3ZGQ1Li5h
N2JkN2ExMDBkY2E2MjMwMDAyM2NiODU2OTc1OGZhZWE5NjUxOGFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Xcml0ZUJhcnJpZXIuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Xcml0ZUJhcnJpZXIuaApAQCAtNDAsOCArNDAsOCBAQCBjbGFz
cyBKU0dsb2JhbE9iamVjdDsKIHRlbXBsYXRlPGNsYXNzIFQ+IGNsYXNzIFdyaXRlQmFycmllckJh
c2U7CiB0ZW1wbGF0ZTw+IGNsYXNzIFdyaXRlQmFycmllckJhc2U8SlNWYWx1ZT47CiAKLXZvaWQg
c2xvd1ZhbGlkYXRlQ2VsbChKU0NlbGwqKTsKLXZvaWQgc2xvd1ZhbGlkYXRlQ2VsbChKU0dsb2Jh
bE9iamVjdCopOworSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzbG93VmFsaWRhdGVDZWxsKEpTQ2Vs
bCopOworSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzbG93VmFsaWRhdGVDZWxsKEpTR2xvYmFsT2Jq
ZWN0Kik7CiAgICAgCiAjaWYgRU5BQkxFKEdDX1ZBTElEQVRJT04pCiB0ZW1wbGF0ZTxjbGFzcyBU
PiBpbmxpbmUgdm9pZCB2YWxpZGF0ZUNlbGwoVCBjZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9CeXRlQXJyYXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
Qnl0ZUFycmF5LmgKaW5kZXggMDA5ZWM1ODUwY2ZlNTg0MGI4MzFmYzRiZjhlYWIzOTY3M2M3ZTU5
Ni4uYWU0NDFhZWJkNTJkOTU5NjFlMjg4ZmQzZTMxODkyMjJjNjMyNTg2OSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9CeXRlQXJyYXkuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL0J5dGVBcnJheS5oCkBAIC04Myw3ICs4Myw3IEBAIG5hbWVzcGFjZSBXVEYg
ewogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
Qnl0ZUFycmF5PiBjcmVhdGUoc2l6ZV90IHNpemUpOworICAgICAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBjcmVhdGUoc2l6ZV90IHNpemUpOwogCiAg
ICAgICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZTaXplKCkgeyByZXR1cm4gT0JKRUNUX09GRlNF
VE9GKEJ5dGVBcnJheSwgbV9zaXplKTsgfQogICAgICAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9m
RGF0YSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihCeXRlQXJyYXksIG1fZGF0YSk7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5k
b21OdW1iZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQ3J5cHRvZ3JhcGhpY2FsbHlS
YW5kb21OdW1iZXIuaAppbmRleCAzNDgyNDJlMjVjY2I1Mjc5NzlhZTBmODM1ZjhlYTdhYWNjNDVh
ZWFlLi4yMjYyYjZjM2IzMTFmYWVkMjZmNzA0Nzk5NTYxYThhYWQ1N2UwODUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVy
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRv
bU51bWJlci5oCkBAIC0zMSw4ICszMSw4IEBACiBuYW1lc3BhY2UgV1RGIHsKIAogI2lmIFVTRShP
U19SQU5ET01ORVNTKQotdWludDMyX3QgY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIoKTsK
LXZvaWQgY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21WYWx1ZXModm9pZCogYnVmZmVyLCBzaXplX3Qg
bGVuZ3RoKTsKK1dURl9FWFBPUlRfUFJJVkFURSB1aW50MzJfdCBjcnlwdG9ncmFwaGljYWxseVJh
bmRvbU51bWJlcigpOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgY3J5cHRvZ3JhcGhpY2FsbHlS
YW5kb21WYWx1ZXModm9pZCogYnVmZmVyLCBzaXplX3QgbGVuZ3RoKTsKICNlbmRpZgogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0N1cnJlbnRUaW1lLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL0N1cnJlbnRUaW1lLmgKaW5kZXggNzE3NzVjMjczNTM5MzZh
ODRhNThlNDQ3M2U2N2ExYzg5MTJhMzg5Ny4uZWU0OWY4ZDI1ZjY5MDNkYTVmY2MwZDYzYmYxMjk5
MjJiMWVjMTIzNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9DdXJyZW50
VGltZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQ3VycmVudFRpbWUuaApAQCAt
MzksNyArMzksNyBAQCBuYW1lc3BhY2UgV1RGIHsKIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgVVRD
IHRpbWUgaW4gc2Vjb25kcywgY291bnRlZCBmcm9tIEphbnVhcnkgMSwgMTk3MC4KIC8vIFByZWNp
c2lvbiB2YXJpZXMgZGVwZW5kaW5nIG9uIHBsYXRmb3JtIGJ1dCBpcyB1c3VhbGx5IGFzIGdvb2Qg
b3IgYmV0dGVyCiAvLyB0aGFuIGEgbWlsbGlzZWNvbmQuCi1kb3VibGUgY3VycmVudFRpbWUoKTsK
K1dURl9FWFBPUlRfUFJJVkFURSBkb3VibGUgY3VycmVudFRpbWUoKTsKIAogLy8gU2FtZSB0aGlu
ZywgaW4gbWlsbGlzZWNvbmRzLgogaW5saW5lIGRvdWJsZSBjdXJyZW50VGltZU1TKCkKQEAgLTYw
LDcgKzYwLDcgQEAgaW5saW5lIHZvaWQgZ2V0TG9jYWxUaW1lKGNvbnN0IHRpbWVfdCogbG9jYWxU
aW1lLCBzdHJ1Y3QgdG0qIGxvY2FsVE0pCiAKIC8vIFByb3ZpZGVzIGEgbW9ub3RvbmljYWxseSBp
bmNyZWFzaW5nIHRpbWUgaW4gc2Vjb25kcyBzaW5jZSBhbiBhcmJpdHJhcnkgcG9pbnQgaW4gdGhl
IHBhc3QuCiAvLyBPbiB1bnN1cHBvcnRlZCBwbGF0Zm9ybXMsIHRoaXMgZnVuY3Rpb24gb25seSBn
dWFyYW50ZWVzIHRoZSByZXN1bHQgd2lsbCBiZSBub24tZGVjcmVhc2luZy4KLWRvdWJsZSBtb25v
dG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBkb3VibGUgbW9u
b3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CiAKIH0gLy8gbmFtZXNwYWNlIFdURgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0RhdGVNYXRoLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL0RhdGVNYXRoLmgKaW5kZXggMTE0YWNmOGE4NzE5NGFiMmUyNjYxZDBi
NTVhY2VjNmMxNzI2MWE1ZC4uZmMxYThkOGU0NGJmNDU2ZmEyYjIzOWEwMzQxYjE5M2U5ODk4MmZi
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9EYXRlTWF0aC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRGF0ZU1hdGguaApAQCAtNjEsNyArNjEsNyBAQCBp
bnQgZXF1aXZhbGVudFllYXJGb3JEU1QoaW50IHllYXIpOwogCiAvLyBOb3QgcmVhbGx5IG1hdGgg
cmVsYXRlZCwgYnV0IHRoaXMgaXMgY3VycmVudGx5IHRoZSBvbmx5IHNoYXJlZCBwbGFjZSB0byBw
dXQgdGhlc2UuCiBkb3VibGUgcGFyc2VFUzVEYXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVy
cyhjb25zdCBjaGFyKiBkYXRlU3RyaW5nKTsKLWRvdWJsZSBwYXJzZURhdGVGcm9tTnVsbFRlcm1p
bmF0ZWRDaGFyYWN0ZXJzKGNvbnN0IGNoYXIqIGRhdGVTdHJpbmcpOworV1RGX0VYUE9SVF9QUklW
QVRFIGRvdWJsZSBwYXJzZURhdGVGcm9tTnVsbFRlcm1pbmF0ZWRDaGFyYWN0ZXJzKGNvbnN0IGNo
YXIqIGRhdGVTdHJpbmcpOwogZG91YmxlIHBhcnNlRGF0ZUZyb21OdWxsVGVybWluYXRlZENoYXJh
Y3RlcnMoY29uc3QgY2hhciogZGF0ZVN0cmluZywgYm9vbCYgaGF2ZVRaLCBpbnQmIG9mZnNldCk7
CiBkb3VibGUgdGltZUNsaXAoZG91YmxlKTsKIC8vIGRheU9mV2VlazogWzAsIDZdIDAgYmVpbmcg
TW9uZGF5LCBkYXk6IFsxLCAzMV0sIG1vbnRoOiBbMCwgMTFdLCB5ZWFyOiBleDogMjAxMSwgaG91
cnM6IFswLCAyM10sIG1pbnV0ZXM6IFswLCA1OV0sIHNlY29uZHM6IFswLCA1OV0sIHV0Y09mZnNl
dDogWy03MjAsNzIwXS4gCkBAIC04OSwxOCArODksMTggQEAgY29uc3QgZG91YmxlIG1zUGVyTW9u
dGggPSAyNTkyMDAwMDAwLjA7CiBib29sIGlzTGVhcFllYXIoaW50IHllYXIpOwogCiAvLyBSZXR1
cm5zIHRoZSBudW1iZXIgb2YgZGF5cyBmcm9tIDE5NzAtMDEtMDEgdG8gdGhlIHNwZWNpZmllZCBk
YXRlLgotZG91YmxlIGRhdGVUb0RheXNGcm9tMTk3MChpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQg
ZGF5KTsKLWludCBtc1RvWWVhcihkb3VibGUgbXMpOworV1RGX0VYUE9SVF9QUklWQVRFIGRvdWJs
ZSBkYXRlVG9EYXlzRnJvbTE5NzAoaW50IHllYXIsIGludCBtb250aCwgaW50IGRheSk7CitXVEZf
RVhQT1JUX1BSSVZBVEUgaW50IG1zVG9ZZWFyKGRvdWJsZSBtcyk7CiBkb3VibGUgbXNUb0RheXMo
ZG91YmxlIG1zKTsKIGludCBtc1RvTWludXRlcyhkb3VibGUgbXMpOwogaW50IG1zVG9Ib3Vycyhk
b3VibGUgbXMpOwotaW50IGRheUluWWVhcihkb3VibGUgbXMsIGludCB5ZWFyKTsKLWludCBtb250
aEZyb21EYXlJblllYXIoaW50IGRheUluWWVhciwgYm9vbCBsZWFwWWVhcik7Ci1pbnQgZGF5SW5N
b250aEZyb21EYXlJblllYXIoaW50IGRheUluWWVhciwgYm9vbCBsZWFwWWVhcik7CitXVEZfRVhQ
T1JUX1BSSVZBVEUgaW50IGRheUluWWVhcihkb3VibGUgbXMsIGludCB5ZWFyKTsKK1dURl9FWFBP
UlRfUFJJVkFURSBpbnQgbW9udGhGcm9tRGF5SW5ZZWFyKGludCBkYXlJblllYXIsIGJvb2wgbGVh
cFllYXIpOworV1RGX0VYUE9SVF9QUklWQVRFIGludCBkYXlJbk1vbnRoRnJvbURheUluWWVhcihp
bnQgZGF5SW5ZZWFyLCBib29sIGxlYXBZZWFyKTsKIAogLy8gUmV0dXJucyBvZmZzZXQgbWlsbGlz
ZWNvbmRzIGZvciBVVEMgYW5kIERTVC4KLWludDMyX3QgY2FsY3VsYXRlVVRDT2Zmc2V0KCk7Ci1k
b3VibGUgY2FsY3VsYXRlRFNUT2Zmc2V0KGRvdWJsZSBtcywgZG91YmxlIHV0Y09mZnNldCk7CitX
VEZfRVhQT1JUX1BSSVZBVEUgaW50MzJfdCBjYWxjdWxhdGVVVENPZmZzZXQoKTsKK1dURl9FWFBP
UlRfUFJJVkFURSBkb3VibGUgY2FsY3VsYXRlRFNUT2Zmc2V0KGRvdWJsZSBtcywgZG91YmxlIHV0
Y09mZnNldCk7CiAKIH0gLy8gbmFtZXNwYWNlIFdURgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL0RlY2ltYWxOdW1iZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvRGVjaW1hbE51bWJlci5oCmluZGV4IGFjN2I4MDA1ODJkMzZhYjJhMTc2YjAzZTA5ZDBjNTJh
MDQ1NDI5YjIuLjYxZWZmY2RkM2RjNmZjZGQxMzUyZjYwMWM1NzVmNTViYWE1NDU0MGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRGVjaW1hbE51bWJlci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRGVjaW1hbE51bWJlci5oCkBAIC04MSwxMSArODEsMTEg
QEAgcHVibGljOgogICAgICAgICBBU1NFUlQobV9zaWduaWZpY2FuZFswXSAhPSAnMCcgfHwgIW1f
ZXhwb25lbnQpOwogICAgIH0KIAotICAgIHVuc2lnbmVkIGJ1ZmZlckxlbmd0aEZvclN0cmluZ0Rl
Y2ltYWwoKSBjb25zdDsKLSAgICB1bnNpZ25lZCBidWZmZXJMZW5ndGhGb3JTdHJpbmdFeHBvbmVu
dGlhbCgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCBidWZmZXJMZW5n
dGhGb3JTdHJpbmdEZWNpbWFsKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHVuc2ln
bmVkIGJ1ZmZlckxlbmd0aEZvclN0cmluZ0V4cG9uZW50aWFsKCkgY29uc3Q7CiAKLSAgICB1bnNp
Z25lZCB0b1N0cmluZ0RlY2ltYWwoVUNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgYnVmZmVyTGVuZ3Ro
KSBjb25zdDsKLSAgICB1bnNpZ25lZCB0b1N0cmluZ0V4cG9uZW50aWFsKFVDaGFyKiBidWZmZXIs
IHVuc2lnbmVkIGJ1ZmZlckxlbmd0aCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHVu
c2lnbmVkIHRvU3RyaW5nRGVjaW1hbChVQ2hhciogYnVmZmVyLCB1bnNpZ25lZCBidWZmZXJMZW5n
dGgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCB0b1N0cmluZ0V4cG9u
ZW50aWFsKFVDaGFyKiBidWZmZXIsIHVuc2lnbmVkIGJ1ZmZlckxlbmd0aCkgY29uc3Q7CiAKICAg
ICBib29sIHNpZ24oKSBjb25zdCB7IHJldHVybiBtX3NpZ247IH0KICAgICBpbnQgZXhwb25lbnQo
KSBjb25zdCB7IHJldHVybiBtX2V4cG9uZW50OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL0Zhc3RNYWxsb2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9G
YXN0TWFsbG9jLmNwcAppbmRleCA1YzY4NDUwMGY4NDA4MTk1NmIyYTUwMDMxODU4MTM2ZWJhMGRk
ZGFiLi42YjkyZjU1NDIwYmRlMGQ3ZWEyOTA4OTA1MTkyMWQ1MjExNmNlZTJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0Zhc3RNYWxsb2MuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvRmFzdE1hbGxvYy5jcHAKQEAgLTE4Miw3ICsxODIsNyBAQCBuYW1l
c3BhY2UgV1RGIHsKIAogbmFtZXNwYWNlIEludGVybmFsIHsKICNpZiAhRU5BQkxFKFdURl9NQUxM
T0NfVkFMSURBVElPTikKLXZvaWQgZmFzdE1hbGxvY01hdGNoRmFpbGVkKHZvaWQqKTsKK1dURl9F
WFBPUlRfUFJJVkFURSB2b2lkIGZhc3RNYWxsb2NNYXRjaEZhaWxlZCh2b2lkKik7CiAjZWxzZQog
Q09NUElMRV9BU1NFUlQoKChzaXplb2YoVmFsaWRhdGlvbkhlYWRlcikgJSBzaXplb2YoQWxsb2NB
bGlnbm1lbnRJbnRlZ2VyKSkgPT0gMCksIFZhbGlkYXRpb25IZWFkZXJfbXVzdF9wcm9kdWNlX2Nv
cnJlY3RfYWxpZ25tZW50KTsKICNlbmRpZgpAQCAtNDAwLDcgKzQwMCw3IEBAIHNpemVfdCBmYXN0
TWFsbG9jU2l6ZShjb25zdCB2b2lkKiBwKQogI2lmIE9TKERBUldJTikKIC8vIFRoaXMgc3ltYm9s
IGlzIHByZXNlbnQgaW4gdGhlIEphdmFTY3JpcHRDb3JlIGV4cG9ydHMgZmlsZSBldmVuIHdoZW4g
RmFzdE1hbGxvYyBpcyBkaXNhYmxlZC4KIC8vIEl0IHdpbGwgbmV2ZXIgYmUgdXNlZCBpbiB0aGlz
IGNhc2UsIHNvIGl0J3MgdHlwZSBhbmQgdmFsdWUgYXJlIGxlc3MgaW50ZXJlc3RpbmcgdGhhbiBp
dHMgcHJlc2VuY2UuCi1leHRlcm4gIkMiIGNvbnN0IGludCBqc2NvcmVfZmFzdG1hbGxvY19pbnRy
b3NwZWN0aW9uID0gMDsKK2V4dGVybiAiQyIgV1RGX0VYUE9SVF9QUklWQVRFIGNvbnN0IGludCBq
c2NvcmVfZmFzdG1hbGxvY19pbnRyb3NwZWN0aW9uID0gMDsKICNlbmRpZgogCiAjZWxzZSAvLyBG
T1JDRV9TWVNURU1fTUFMTE9DCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L0Zhc3RNYWxsb2MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRmFzdE1hbGxvYy5oCmlu
ZGV4IGI0Zjc0ZTQ3YjMyMWE4ZDZhMmQ3NzYwNzQwMjQ5MWQ2ODZkMjhlNjUuLmIxMTU5MDhiYWQy
OGEwODZjMTJiNjViYjJlYTQyNWI0OWYxMDBhNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvRmFzdE1hbGxvYy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
RmFzdE1hbGxvYy5oCkBAIC0yOSwxMiArMjksMTIgQEAKIG5hbWVzcGFjZSBXVEYgewogCiAgICAg
Ly8gVGhlc2UgZnVuY3Rpb25zIGNhbGwgQ1JBU0goKSBpZiBhbiBhbGxvY2F0aW9uIGZhaWxzLgot
ICAgIHZvaWQqIGZhc3RNYWxsb2Moc2l6ZV90KTsKLSAgICB2b2lkKiBmYXN0WmVyb2VkTWFsbG9j
KHNpemVfdCk7Ci0gICAgdm9pZCogZmFzdENhbGxvYyhzaXplX3QgbnVtRWxlbWVudHMsIHNpemVf
dCBlbGVtZW50U2l6ZSk7Ci0gICAgdm9pZCogZmFzdFJlYWxsb2Modm9pZCosIHNpemVfdCk7Ci0g
ICAgY2hhciogZmFzdFN0ckR1cChjb25zdCBjaGFyKik7Ci0gICAgc2l6ZV90IGZhc3RNYWxsb2NT
aXplKGNvbnN0IHZvaWQqKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCogZmFzdE1hbGxv
YyhzaXplX3QpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkKiBmYXN0WmVyb2VkTWFsbG9j
KHNpemVfdCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQqIGZhc3RDYWxsb2Moc2l6ZV90
IG51bUVsZW1lbnRzLCBzaXplX3QgZWxlbWVudFNpemUpOworICAgIFdURl9FWFBPUlRfUFJJVkFU
RSB2b2lkKiBmYXN0UmVhbGxvYyh2b2lkKiwgc2l6ZV90KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgY2hhciogZmFzdFN0ckR1cChjb25zdCBjaGFyKik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHNpemVfdCBmYXN0TWFsbG9jU2l6ZShjb25zdCB2b2lkKik7CiAKICAgICBzdHJ1Y3QgVHJ5TWFs
bG9jUmV0dXJuVmFsdWUgewogICAgICAgICBUcnlNYWxsb2NSZXR1cm5WYWx1ZSh2b2lkKiBkYXRh
KQpAQCAtNjgsMjYgKzY4LDI2IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICByZXR1cm4gcmV0
dXJuVmFsdWU7CiAgICAgfQogCi0gICAgVHJ5TWFsbG9jUmV0dXJuVmFsdWUgdHJ5RmFzdE1hbGxv
YyhzaXplX3Qgbik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFRyeU1hbGxvY1JldHVyblZhbHVl
IHRyeUZhc3RNYWxsb2Moc2l6ZV90IG4pOwogICAgIFRyeU1hbGxvY1JldHVyblZhbHVlIHRyeUZh
c3RaZXJvZWRNYWxsb2Moc2l6ZV90IG4pOwotICAgIFRyeU1hbGxvY1JldHVyblZhbHVlIHRyeUZh
c3RDYWxsb2Moc2l6ZV90IG5fZWxlbWVudHMsIHNpemVfdCBlbGVtZW50X3NpemUpOwotICAgIFRy
eU1hbGxvY1JldHVyblZhbHVlIHRyeUZhc3RSZWFsbG9jKHZvaWQqIHAsIHNpemVfdCBuKTsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgVHJ5TWFsbG9jUmV0dXJuVmFsdWUgdHJ5RmFzdENhbGxvYyhz
aXplX3Qgbl9lbGVtZW50cywgc2l6ZV90IGVsZW1lbnRfc2l6ZSk7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIFRyeU1hbGxvY1JldHVyblZhbHVlIHRyeUZhc3RSZWFsbG9jKHZvaWQqIHAsIHNpemVf
dCBuKTsKIAotICAgIHZvaWQgZmFzdEZyZWUodm9pZCopOworICAgIFdURl9FWFBPUlRfUFJJVkFU
RSB2b2lkIGZhc3RGcmVlKHZvaWQqKTsKIAogI2lmbmRlZiBOREVCVUcgICAgCiAgICAgdm9pZCBm
YXN0TWFsbG9jRm9yYmlkKCk7CiAgICAgdm9pZCBmYXN0TWFsbG9jQWxsb3coKTsKICNlbmRpZgog
Ci0gICAgdm9pZCByZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnkoKTsKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgdm9pZCByZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnkoKTsKICAgICAKICAgICBz
dHJ1Y3QgRmFzdE1hbGxvY1N0YXRpc3RpY3MgewogICAgICAgICBzaXplX3QgcmVzZXJ2ZWRWTUJ5
dGVzOwogICAgICAgICBzaXplX3QgY29tbWl0dGVkVk1CeXRlczsKICAgICAgICAgc2l6ZV90IGZy
ZWVMaXN0Qnl0ZXM7CiAgICAgfTsKLSAgICBGYXN0TWFsbG9jU3RhdGlzdGljcyBmYXN0TWFsbG9j
U3RhdGlzdGljcygpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBGYXN0TWFsbG9jU3RhdGlzdGlj
cyBmYXN0TWFsbG9jU3RhdGlzdGljcygpOwogCiAgICAgLy8gVGhpcyBkZWZpbmVzIGEgdHlwZSB3
aGljaCBob2xkcyBhbiB1bnNpZ25lZCBpbnRlZ2VyIGFuZCBpcyB0aGUgc2FtZQogICAgIC8vIHNp
emUgYXMgdGhlIG1pbmltYWxseSBhbGlnbmVkIG1lbW9yeSBhbGxvY2F0aW9uLgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9NRDUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvTUQ1LmgKaW5kZXggM2NhYTgxMGJhYTQwYTYyODMxNDg4ZjU2ZDEwODE0M2JiMzNmMDUw
My4uZWYwMjdjY2FkNzIzMDAxNGVkYjQ0ZjZiN2I2ZWQ0ZDJhYWY1MzgxNyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9NRDUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL01ENS5oCkBAIC0zNywxNiArMzcsMTYgQEAgbmFtZXNwYWNlIFdURiB7CiAKIGNsYXNz
IE1ENSB7CiBwdWJsaWM6Ci0gICAgTUQ1KCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIE1ENSgp
OwogCiAgICAgdm9pZCBhZGRCeXRlcyhjb25zdCBWZWN0b3I8dWludDhfdD4mIGlucHV0KQogICAg
IHsKICAgICAgICAgYWRkQnl0ZXMoaW5wdXQuZGF0YSgpLCBpbnB1dC5zaXplKCkpOwogICAgIH0K
LSAgICB2b2lkIGFkZEJ5dGVzKGNvbnN0IHVpbnQ4X3QqIGlucHV0LCBzaXplX3QgbGVuZ3RoKTsK
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhZGRCeXRlcyhjb25zdCB1aW50OF90KiBpbnB1
dCwgc2l6ZV90IGxlbmd0aCk7CiAKICAgICAvLyBjaGVja3N1bSBoYXMgYSBzaWRlIGVmZmVjdCBv
ZiByZXNldHRpbmcgdGhlIHN0YXRlIG9mIHRoZSBvYmplY3QuCi0gICAgdm9pZCBjaGVja3N1bShW
ZWN0b3I8dWludDhfdCwgMTY+Jik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgY2hlY2tz
dW0oVmVjdG9yPHVpbnQ4X3QsIDE2PiYpOwogCiBwcml2YXRlOgogICAgIHVpbnQzMl90IG1fYnVm
WzRdOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9NYWluVGhyZWFkLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL01haW5UaHJlYWQuaAppbmRleCAxZmMwZTMyNjY3
YWY3OTU0ZDViZDdmN2U0M2Y3ZWUzMjE3MmVmZjBlLi5mYmE0MzJlZmQ5MTQzOTY2NThiZDgxMmE0
ODJiZWQ2NGQwYmYxYzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL01h
aW5UaHJlYWQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL01haW5UaHJlYWQuaApA
QCAtNDAsMTggKzQwLDE4IEBAIHR5cGVkZWYgdWludDMyX3QgVGhyZWFkSWRlbnRpZmllcjsKIHR5
cGVkZWYgdm9pZCBNYWluVGhyZWFkRnVuY3Rpb24odm9pZCopOwogCiAvLyBNdXN0IGJlIGNhbGxl
ZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KLXZvaWQgaW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKK1dU
Rl9FWFBPUlRfUFJJVkFURSB2b2lkIGluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAKLXZvaWQgY2Fs
bE9uTWFpblRocmVhZChNYWluVGhyZWFkRnVuY3Rpb24qLCB2b2lkKiBjb250ZXh0KTsKLXZvaWQg
Y2FsbE9uTWFpblRocmVhZEFuZFdhaXQoTWFpblRocmVhZEZ1bmN0aW9uKiwgdm9pZCogY29udGV4
dCk7Ci12b2lkIGNhbmNlbENhbGxPbk1haW5UaHJlYWQoTWFpblRocmVhZEZ1bmN0aW9uKiwgdm9p
ZCogY29udGV4dCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBjYWxsT25NYWluVGhyZWFkKE1h
aW5UaHJlYWRGdW5jdGlvbiosIHZvaWQqIGNvbnRleHQpOworV1RGX0VYUE9SVF9QUklWQVRFIHZv
aWQgY2FsbE9uTWFpblRocmVhZEFuZFdhaXQoTWFpblRocmVhZEZ1bmN0aW9uKiwgdm9pZCogY29u
dGV4dCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBjYW5jZWxDYWxsT25NYWluVGhyZWFkKE1h
aW5UaHJlYWRGdW5jdGlvbiosIHZvaWQqIGNvbnRleHQpOwogCi12b2lkIHNldE1haW5UaHJlYWRD
YWxsYmFja3NQYXVzZWQoYm9vbCBwYXVzZWQpOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0
TWFpblRocmVhZENhbGxiYWNrc1BhdXNlZChib29sIHBhdXNlZCk7CiAKLWJvb2wgaXNNYWluVGhy
ZWFkKCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc01haW5UaHJlYWQoKTsKICNpZiBFTkFC
TEUoUEFSQUxMRUxfR0MpCiB2b2lkIHJlZ2lzdGVyR0NUaHJlYWQoKTsKLWJvb2wgaXNNYWluVGhy
ZWFkT3JHQ1RocmVhZCgpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNNYWluVGhyZWFkT3JH
Q1RocmVhZCgpOwogI2VsaWYgUExBVEZPUk0oTUFDKQogYm9vbCBpc01haW5UaHJlYWRPckdDVGhy
ZWFkKCk7CiAjZWxzZQpAQCAtNjcsNyArNjcsNyBAQCB2b2lkIGRpc3BhdGNoRnVuY3Rpb25zRnJv
bU1haW5UaHJlYWQoKTsKIC8vIFRoaXMgdmVyc2lvbiBvZiBpbml0aWFsaXplTWFpblRocmVhZCBz
ZXRzIHVwIHRoZSBtYWluIHRocmVhZCBhcyBjb3JyZXNwb25kaW5nCiAvLyB0byB0aGUgcHJvY2Vz
cydzIG1haW4gdGhyZWFkLCBhbmQgbm90IG5lY2Vzc2FyaWx5IHRoZSB0aHJlYWQgdGhhdCBjYWxs
cyB0aGlzCiAvLyBmdW5jdGlvbi4gSXQgc2hvdWxkIG9ubHkgYmUgdXNlZCBhcyBhIGxlZ2FjeSBh
aWQgZm9yIE1hYyBXZWJLaXQuCi12b2lkIGluaXRpYWxpemVNYWluVGhyZWFkVG9Qcm9jZXNzTWFp
blRocmVhZCgpOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgaW5pdGlhbGl6ZU1haW5UaHJlYWRU
b1Byb2Nlc3NNYWluVGhyZWFkKCk7CiB2b2lkIGluaXRpYWxpemVNYWluVGhyZWFkVG9Qcm9jZXNz
TWFpblRocmVhZFBsYXRmb3JtKCk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi9NZXRhQWxsb2NhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L01ldGFBbGxvY2F0b3IuaAppbmRleCBjZjk3MWI3MjA3N2M0ODMxYTlkMDQzMTgwMzZkZTY2OWNk
NWU1MDQyLi5hMzM3MDM5NDRjMGJkZTE5OTVmNGVmM2NmMTU4YTE4NzFjZjM2ZjBiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL01ldGFBbGxvY2F0b3IuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL01ldGFBbGxvY2F0b3IuaApAQCAtNDcsMTEgKzQ3LDExIEBA
IGNsYXNzIE1ldGFBbGxvY2F0b3IgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1ldGFBbGxv
Y2F0b3IpOwogcHVibGljOgogICAgIAotICAgIE1ldGFBbGxvY2F0b3Ioc2l6ZV90IGFsbG9jYXRp
b25HcmFudWxlKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgTWV0YUFsbG9jYXRvcihzaXplX3Qg
YWxsb2NhdGlvbkdyYW51bGUpOwogICAgIAogICAgIHZpcnR1YWwgfk1ldGFBbGxvY2F0b3IoKTsK
ICAgICAKLSAgICBQYXNzUmVmUHRyPE1ldGFBbGxvY2F0b3JIYW5kbGU+IGFsbG9jYXRlKHNpemVf
dCBzaXplSW5CeXRlcyk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8TWV0YUFs
bG9jYXRvckhhbmRsZT4gYWxsb2NhdGUoc2l6ZV90IHNpemVJbkJ5dGVzKTsKICAgICAKICAgICAv
LyBOb24tYXRvbWljIG1ldGhvZHMgZm9yIGdldHRpbmcgYWxsb2NhdG9yIHN0YXRpc3RpY3MuCiAg
ICAgc2l6ZV90IGJ5dGVzQWxsb2NhdGVkKCkgeyByZXR1cm4gbV9ieXRlc0FsbG9jYXRlZDsgfQpA
QCAtNjksMTEgKzY5LDExIEBAIHB1YmxpYzoKICAgICAvLyBBZGQgbW9yZSBmcmVlIHNwYWNlIHRv
IHRoZSBhbGxvY2F0b3IuIENhbGwgdGhpcyBkaXJlY3RseSBmcm9tCiAgICAgLy8gdGhlIGNvbnN0
cnVjdG9yIGlmIHlvdSB3aXNoIHRvIG9wZXJhdGUgdGhlIGFsbG9jYXRvciB3aXRoaW4gYQogICAg
IC8vIGZpeGVkIHBvb2wuCi0gICAgdm9pZCBhZGRGcmVzaEZyZWVTcGFjZSh2b2lkKiBzdGFydCwg
c2l6ZV90IHNpemVJbkJ5dGVzKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhZGRGcmVz
aEZyZWVTcGFjZSh2b2lkKiBzdGFydCwgc2l6ZV90IHNpemVJbkJ5dGVzKTsKIAogICAgIC8vIFRo
aXMgaXMgbWVhbnQgb25seSBmb3IgaW1wbGVtZW50aW5nIHRlc3RzLiBOZXZlciBjYWxsIHRoaXMg
aW4gcmVsZWFzZQogICAgIC8vIGJ1aWxkcy4KLSAgICBzaXplX3QgZGVidWdGcmVlU3BhY2VTaXpl
KCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBkZWJ1Z0ZyZWVTcGFjZVNpemUoKTsK
ICAgICAKICNpZiBFTkFCTEUoTUVUQV9BTExPQ0FUT1JfUFJPRklMRSkKICAgICB2b2lkIGR1bXBQ
cm9maWxlKCk7CkBAIC0xMjcsNyArMTI3LDcgQEAgcHJpdmF0ZToKICAgICBzaXplX3Qgcm91bmRV
cChzaXplX3Qgc2l6ZUluQnl0ZXMpOwogICAgIAogICAgIEZyZWVTcGFjZU5vZGUqIGFsbG9jRnJl
ZVNwYWNlTm9kZSgpOwotICAgIHZvaWQgZnJlZUZyZWVTcGFjZU5vZGUoRnJlZVNwYWNlTm9kZSop
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGZyZWVGcmVlU3BhY2VOb2RlKEZyZWVTcGFj
ZU5vZGUqKTsKICAgICAKICAgICBzaXplX3QgbV9hbGxvY2F0aW9uR3JhbnVsZTsKICAgICB1bnNp
Z25lZCBtX2xvZ0FsbG9jYXRpb25HcmFudWxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi9NZXRhQWxsb2NhdG9ySGFuZGxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL01ldGFBbGxvY2F0b3JIYW5kbGUuaAppbmRleCA1YTMyMDgxZDRmMGY4ZjY0NTUxOGM4MTMx
OTk2ZTZiMDEwYWQ4Y2MwLi45MzEwOTUyYjA2ZjAxOTZhOWRjNmU3MzM5ZGY3ZTBhMWM2NDczNjUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL01ldGFBbGxvY2F0b3JIYW5k
bGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL01ldGFBbGxvY2F0b3JIYW5kbGUu
aApAQCAtNTAsNyArNTAsNyBAQCBwcml2YXRlOgogICAgIH0KICAgICAKIHB1YmxpYzoKLSAgICB+
TWV0YUFsbG9jYXRvckhhbmRsZSgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB+TWV0YUFsbG9j
YXRvckhhbmRsZSgpOwogICAgIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1ldGFBbGxvY2F0b3JI
YW5kbGU+IGNyZWF0ZVNlbGZNYW5hZ2VkSGFuZGxlKHZvaWQqIHN0YXJ0LCBzaXplX3Qgc2l6ZUlu
Qnl0ZXMpCiAgICAgewpAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBt
X3NpemVJbkJ5dGVzOwogICAgIH0KICAgICAgICAgCi0gICAgdm9pZCBzaHJpbmsoc2l6ZV90IG5l
d1NpemVJbkJ5dGVzKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzaHJpbmsoc2l6ZV90
IG5ld1NpemVJbkJ5dGVzKTsKICAgICAKICAgICBib29sIGlzTWFuYWdlZCgpCiAgICAgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9PU0FsbG9jYXRvci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9PU0FsbG9jYXRvci5oCmluZGV4IGJmOWYwNDk2ODcxZjVjOTUw
ODY4ZDNjZjQ1NGFhMzQ5ODUwMDBkYzkuLmJlNzkxYThjOGZkMDhjMzNhNmU3MmJkNzQ2ZjdhZTNi
ZWE1NmNlOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvT1NBbGxvY2F0
b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL09TQWxsb2NhdG9yLmgKQEAgLTQ2
LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIC8vIHJlbGVhc2VEZWNvbW1pdHRlZCBzaG91bGQgYmUg
Y2FsbGVkIG9uIGEgcmVnaW9uIG9mIFZNIGFsbG9jYXRlZCBieSBhIHNpbmdsZSByZXNlcnZhdGlv
biwKICAgICAvLyB0aGUgbWVtb3J5IG11c3QgYWxsIGN1cnJlbnRseSBiZSBpbiBhIGRlY29tbWl0
dGVkIHN0YXRlLgogICAgIHN0YXRpYyB2b2lkKiByZXNlcnZlVW5jb21taXR0ZWQoc2l6ZV90LCBV
c2FnZSA9IFVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJs
ZSA9IGZhbHNlLCBib29sIGluY2x1ZGVzR3VhcmRQYWdlcyA9IGZhbHNlKTsKLSAgICBzdGF0aWMg
dm9pZCByZWxlYXNlRGVjb21taXR0ZWQodm9pZCosIHNpemVfdCk7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyB2b2lkIHJlbGVhc2VEZWNvbW1pdHRlZCh2b2lkKiwgc2l6ZV90KTsKIAog
ICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIHN5bW1ldHJpYzsgdGhleSBjb21taXQgb3IgZGVjb21t
aXQgYSByZWdpb24gb2YgVk0gKHVuY29tbWl0dGVkIFZNIHNob3VsZAogICAgIC8vIG5ldmVyIGJl
IGFjY2Vzc2VkLCBzaW5jZSB0aGUgT1MgbWF5IG5vdCBoYXZlIGF0dGFjaGVkIHBoeXNpY2FsIG1l
bW9yeSBmb3IgdGhlc2UgcmVnaW9ucykuCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICAv
LyBUaGVzZSBtZXRob2RzIGFyZSBzeW1tZXRyaWM7IHJlc2VydmVBbmRDb21taXQgYWxsb2NhdGVz
IFZNIGluIGFuIGNvbW1pdHRlZCBzdGF0ZSwKICAgICAvLyBkZWNvbW1pdEFuZFJlbGVhc2Ugc2hv
dWxkIGJlIGNhbGxlZCBvbiBhIHJlZ2lvbiBvZiBWTSBhbGxvY2F0ZWQgYnkgYSBzaW5nbGUgcmVz
ZXJ2YXRpb24sCiAgICAgLy8gdGhlIG1lbW9yeSBtdXN0IGFsbCBjdXJyZW50bHkgYmUgaW4gYSBj
b21taXR0ZWQgc3RhdGUuCi0gICAgc3RhdGljIHZvaWQqIHJlc2VydmVBbmRDb21taXQoc2l6ZV90
LCBVc2FnZSA9IFVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0
YWJsZSA9IGZhbHNlLCBib29sIGluY2x1ZGVzR3VhcmRQYWdlcyA9IGZhbHNlKTsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQqIHJlc2VydmVBbmRDb21taXQoc2l6ZV90LCBVc2Fn
ZSA9IFVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9
IGZhbHNlLCBib29sIGluY2x1ZGVzR3VhcmRQYWdlcyA9IGZhbHNlKTsKICAgICBzdGF0aWMgdm9p
ZCBkZWNvbW1pdEFuZFJlbGVhc2Uodm9pZCogYmFzZSwgc2l6ZV90IHNpemUpOwogCiAgICAgLy8g
VGhlc2UgbWV0aG9kcyBhcmUgYWtpbiB0byByZXNlcnZlQW5kQ29tbWl0L2RlY29tbWl0QW5kUmVs
ZWFzZSwgYWJvdmUgLSBob3dldmVyIHJhdGhlciB0aGFuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL1BhZ2VCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Q
YWdlQmxvY2suaAppbmRleCBlMTdjNTQ2MGFkYjQyOWJlMTJiMmY5MjAxMjAwMGM4NzhjMDA1YTEz
Li4zYzM0OGEwZTMxZDM0NmIwMTNiOTM3MTNiYTIzZTMwOTEyMTM2ZDNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BhZ2VCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvUGFnZUJsb2NrLmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogbmFtZXNwYWNlIFdU
RiB7CiAKLXNpemVfdCBwYWdlU2l6ZSgpOworV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBwYWdl
U2l6ZSgpOwogaW5saW5lIGJvb2wgaXNQYWdlQWxpZ25lZCh2b2lkKiBhZGRyZXNzKSB7IHJldHVy
biAhKHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFkZHJlc3MpICYgKHBhZ2VTaXplKCkgLSAx
KSk7IH0KIGlubGluZSBib29sIGlzUGFnZUFsaWduZWQoc2l6ZV90IHNpemUpIHsgcmV0dXJuICEo
c2l6ZSAmIChwYWdlU2l6ZSgpIC0gMSkpOyB9CiBpbmxpbmUgYm9vbCBpc1Bvd2VyT2ZUd28oc2l6
ZV90IHNpemUpIHsgcmV0dXJuICEoc2l6ZSAmIChzaXplIC0gMSkpOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1JhbmRvbU51bWJlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi9SYW5kb21OdW1iZXIuaAppbmRleCBmMmU3ZThmNTBmN2ViZGVkMWIzYjc2NWYy
ZDFjN2VkMTE3YzdhNGY4Li43NmIyMjM1ODJjYmJhNjFlMzBjZDQ4NDEyNTczM2E2MTEwMTBjMjNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1JhbmRvbU51bWJlci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUmFuZG9tTnVtYmVyLmgKQEAgLTMwLDcgKzMw
LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAKICAgICAvLyBSZXR1cm5zIGEgcHNldWRvLXJhbmRvbSBu
dW1iZXIgaW4gdGhlIHJhbmdlIFswLCAxKSwgYXR0ZW1wdHMgdG8gYmUKICAgICAvLyBjcnlwdG9n
cmFwaGljYWxseSBzZWN1cmUgaWYgcG9zc2libGUgb24gdGhlIHRhcmdldCBwbGF0Zm9ybQotICAg
IGRvdWJsZSByYW5kb21OdW1iZXIoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgZG91YmxlIHJh
bmRvbU51bWJlcigpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1Jl
ZkNvdW50ZWRMZWFrQ291bnRlci5oCmluZGV4IDIyYzc1MDZhYzE5YTlhYjVjNDE3N2ZhYTAzZjFh
MDkzYmU3ZTk1NGQuLjQ3NmIxNzM1YWRiNDEzZjUzNTVkNjc0ZWU0YjFhM2MyOWE2YTNkNzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUmVmQ291bnRlZExlYWtDb3VudGVy
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIu
aApAQCAtMjcsMTQgKzI3LDE0IEBACiBuYW1lc3BhY2UgV1RGIHsKICAgICAKICAgICBzdHJ1Y3Qg
UmVmQ291bnRlZExlYWtDb3VudGVyIHsKLSAgICAgICAgc3RhdGljIHZvaWQgc3VwcHJlc3NNZXNz
YWdlcyhjb25zdCBjaGFyKik7Ci0gICAgICAgIHN0YXRpYyB2b2lkIGNhbmNlbE1lc3NhZ2VTdXBw
cmVzc2lvbihjb25zdCBjaGFyKik7CisgICAgICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMg
dm9pZCBzdXBwcmVzc01lc3NhZ2VzKGNvbnN0IGNoYXIqKTsKKyAgICAgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyB2b2lkIGNhbmNlbE1lc3NhZ2VTdXBwcmVzc2lvbihjb25zdCBjaGFyKik7
CiAgICAgICAgIAotICAgICAgICBleHBsaWNpdCBSZWZDb3VudGVkTGVha0NvdW50ZXIoY29uc3Qg
Y2hhciogZGVzY3JpcHRpb24pOwotICAgICAgICB+UmVmQ291bnRlZExlYWtDb3VudGVyKCk7Cisg
ICAgICAgIFdURl9FWFBPUlRfUFJJVkFURSBleHBsaWNpdCBSZWZDb3VudGVkTGVha0NvdW50ZXIo
Y29uc3QgY2hhciogZGVzY3JpcHRpb24pOworICAgICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgflJl
ZkNvdW50ZWRMZWFrQ291bnRlcigpOwogCi0gICAgICAgIHZvaWQgaW5jcmVtZW50KCk7Ci0gICAg
ICAgIHZvaWQgZGVjcmVtZW50KCk7CisgICAgICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGlu
Y3JlbWVudCgpOworICAgICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBkZWNyZW1lbnQoKTsK
IAogI2lmbmRlZiBOREVCVUcKICAgICBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi9TSEExLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1NIQTEuaApp
bmRleCBkYWQ2ZGM4NjcwMDMzZTVjOGE4MGJlMjU5ZTA1YzI3MTE5ZGNlNjEyLi5lOGNjODAyZTll
NmUxNmIwOTRiNjIxN2Q2ZjlmNWE3N2QxNTU5Y2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL1NIQTEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1NIQTEu
aApAQCAtMzcsMTYgKzM3LDE2IEBAIG5hbWVzcGFjZSBXVEYgewogCiBjbGFzcyBTSEExIHsKIHB1
YmxpYzoKLSAgICBTSEExKCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFNIQTEoKTsKIAogICAg
IHZvaWQgYWRkQnl0ZXMoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpbnB1dCkKICAgICB7CiAgICAg
ICAgIGFkZEJ5dGVzKGlucHV0LmRhdGEoKSwgaW5wdXQuc2l6ZSgpKTsKICAgICB9Ci0gICAgdm9p
ZCBhZGRCeXRlcyhjb25zdCB1aW50OF90KiBpbnB1dCwgc2l6ZV90IGxlbmd0aCk7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHZvaWQgYWRkQnl0ZXMoY29uc3QgdWludDhfdCogaW5wdXQsIHNpemVf
dCBsZW5ndGgpOwogCiAgICAgLy8gY29tcHV0ZUhhc2ggaGFzIGEgc2lkZSBlZmZlY3Qgb2YgcmVz
ZXR0aW5nIHRoZSBzdGF0ZSBvZiB0aGUgb2JqZWN0LgotICAgIHZvaWQgY29tcHV0ZUhhc2goVmVj
dG9yPHVpbnQ4X3QsIDIwPiYpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGNvbXB1dGVI
YXNoKFZlY3Rvcjx1aW50OF90LCAyMD4mKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGZpbmFsaXpl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZy5jcHAKaW5kZXggZjJlMDU2NWU5
OTYyNThmNzg4NmUwM2FkNDRmODkwZDJkN2I2Y2VlYy4uZDhkYmJhZTRmNTQ3NjVkNjFlOWYyMDg2
ZDMwMTdjMGE0YTUxN2E1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9U
aHJlYWRpbmcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmNw
cApAQCAtODksNyArODksNyBAQCBUaHJlYWRJZGVudGlmaWVyIGNyZWF0ZVRocmVhZChUaHJlYWRG
dW5jdGlvbiBlbnRyeVBvaW50LCB2b2lkKiBkYXRhLCBjb25zdCBjaGFyKgogLy8gVGhpcyBmdW5j
dGlvbiBpcyBkZXByZWNhdGVkIGJ1dCBuZWVkcyB0byBiZSBrZXB0IGFyb3VuZCBmb3IgYmFja3dh
cmQKIC8vIGNvbXBhdGliaWxpdHkuIFVzZSB0aGUgMy1hcmd1bWVudCB2ZXJzaW9uIG9mIGNyZWF0
ZVRocmVhZCBhYm92ZS4KIAotVGhyZWFkSWRlbnRpZmllciBjcmVhdGVUaHJlYWQoVGhyZWFkRnVu
Y3Rpb24gZW50cnlQb2ludCwgdm9pZCogZGF0YSk7CitXVEZfRVhQT1JUX1BSSVZBVEUgVGhyZWFk
SWRlbnRpZmllciBjcmVhdGVUaHJlYWQoVGhyZWFkRnVuY3Rpb24gZW50cnlQb2ludCwgdm9pZCog
ZGF0YSk7CiAKIFRocmVhZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkKFRocmVhZEZ1bmN0aW9uIGVu
dHJ5UG9pbnQsIHZvaWQqIGRhdGEpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL1RocmVhZGluZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmcu
aAppbmRleCAzYTg5NzU3YTkxNGE3M2IyMTcyNWNjMDg5OGQxMDJiZGU4YmQ3ZTRjLi4xZGVlNWRh
MWNhZjdiYWNlYTdkZTY3YjU1NWVkOTE1MmJjYTgyZWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvVGhyZWFkaW5nLmgKQEAgLTgzLDExICs4MywxMSBAQCB0eXBlZGVmIHZvaWQqICgqVGhyZWFk
RnVuY3Rpb24pKHZvaWQqIGFyZ3VtZW50KTsKIC8vIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxs
ZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuIEl0IGlzIHNhZmUgdG8gY2FsbCBpdCByZXBlYXRlZGx5
LgogLy8gRGFyd2luIGlzIGFuIGV4Y2VwdGlvbiB0byB0aGlzIHJ1bGU6IGl0IGlzIE9LIHRvIGNh
bGwgaXQgZnJvbSBhbnkgdGhyZWFkLCB0aGUgb25seSAKIC8vIHJlcXVpcmVtZW50IGlzIHRoYXQg
dGhlIGNhbGxzIGFyZSBub3QgcmVlbnRyYW50Lgotdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCk7
CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCk7CiAKIC8vIFJl
dHVybnMgMCBpZiB0aHJlYWQgY3JlYXRpb24gZmFpbGVkLgogLy8gVGhlIHRocmVhZCBuYW1lIG11
c3QgYmUgYSBsaXRlcmFsIHNpbmNlIG9uIHNvbWUgcGxhdGZvcm1zIGl0J3MgcGFzc2VkIGluIHRv
IHRoZSB0aHJlYWQuCi1UaHJlYWRJZGVudGlmaWVyIGNyZWF0ZVRocmVhZChUaHJlYWRGdW5jdGlv
biwgdm9pZCosIGNvbnN0IGNoYXIqIHRocmVhZE5hbWUpOworV1RGX0VYUE9SVF9QUklWQVRFIFRo
cmVhZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkKFRocmVhZEZ1bmN0aW9uLCB2b2lkKiwgY29uc3Qg
Y2hhciogdGhyZWFkTmFtZSk7CiAKIC8vIEludGVybmFsIHBsYXRmb3JtLXNwZWNpZmljIGNyZWF0
ZVRocmVhZCBpbXBsZW1lbnRhdGlvbi4KIFRocmVhZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkSW50
ZXJuYWwoVGhyZWFkRnVuY3Rpb24sIHZvaWQqLCBjb25zdCBjaGFyKiB0aHJlYWROYW1lKTsKQEAg
LTk2LDE0ICs5NiwxNCBAQCBUaHJlYWRJZGVudGlmaWVyIGNyZWF0ZVRocmVhZEludGVybmFsKFRo
cmVhZEZ1bmN0aW9uLCB2b2lkKiwgY29uc3QgY2hhciogdGhyZWFkTgogLy8gSGVscGZ1bCBmb3Ig
cGxhdGZvcm1zIHdoZXJlIHRoZSB0aHJlYWQgbmFtZSBtdXN0IGJlIHNldCBmcm9tIHdpdGhpbiB0
aGUgdGhyZWFkLgogdm9pZCBpbml0aWFsaXplQ3VycmVudFRocmVhZEludGVybmFsKGNvbnN0IGNo
YXIqIHRocmVhZE5hbWUpOwogCi1UaHJlYWRJZGVudGlmaWVyIGN1cnJlbnRUaHJlYWQoKTsKLWlu
dCB3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbihUaHJlYWRJZGVudGlmaWVyLCB2b2lkKiopOwotdm9p
ZCBkZXRhY2hUaHJlYWQoVGhyZWFkSWRlbnRpZmllcik7CitXVEZfRVhQT1JUX1BSSVZBVEUgVGhy
ZWFkSWRlbnRpZmllciBjdXJyZW50VGhyZWFkKCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgaW50IHdh
aXRGb3JUaHJlYWRDb21wbGV0aW9uKFRocmVhZElkZW50aWZpZXIsIHZvaWQqKik7CitXVEZfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBkZXRhY2hUaHJlYWQoVGhyZWFkSWRlbnRpZmllcik7CiAKLXZvaWQg
eWllbGQoKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIHlpZWxkKCk7CiAKLXZvaWQgbG9ja0F0
b21pY2FsbHlJbml0aWFsaXplZFN0YXRpY011dGV4KCk7Ci12b2lkIHVubG9ja0F0b21pY2FsbHlJ
bml0aWFsaXplZFN0YXRpY011dGV4KCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBsb2NrQXRv
bWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0ZXgoKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lk
IHVubG9ja0F0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpY011dGV4KCk7CiAKIH0gLy8gbmFtZXNw
YWNlIFdURgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGlu
Z1ByaW1pdGl2ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nUHJpbWl0
aXZlcy5oCmluZGV4IDlmMjYzYWU1Yzk4NWY1YWJiZTI5YzI0N2JhMDRkYjBlMzczYTJlMjAuLjgy
ZGNjYmQ1NmFkMGU4N2NkYWFmZGFjYjU0MWNiZWE2MmUwNDgxM2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oCkBAIC05NCwxMiArOTQsMTIg
QEAgdHlwZWRlZiB2b2lkKiBQbGF0Zm9ybUNvbmRpdGlvbjsKIGNsYXNzIE11dGV4IHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShNdXRleCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgotICAgIE11dGV4KCk7Ci0gICAgfk11dGV4KCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IE11dGV4KCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIH5NdXRleCgpOwogCi0gICAgdm9pZCBs
b2NrKCk7Ci0gICAgYm9vbCB0cnlMb2NrKCk7Ci0gICAgdm9pZCB1bmxvY2soKTsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgdm9pZCBsb2NrKCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wg
dHJ5TG9jaygpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHVubG9jaygpOwogCiBwdWJs
aWM6CiAgICAgUGxhdGZvcm1NdXRleCYgaW1wbCgpIHsgcmV0dXJuIG1fbXV0ZXg7IH0KQEAgLTEz
MCwxNSArMTMwLDE1IEBAIHByaXZhdGU6CiBjbGFzcyBUaHJlYWRDb25kaXRpb24gewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFRocmVhZENvbmRpdGlvbik7CiBwdWJsaWM6Ci0gICAgVGhyZWFk
Q29uZGl0aW9uKCk7Ci0gICAgflRocmVhZENvbmRpdGlvbigpOworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBUaHJlYWRDb25kaXRpb24oKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgflRocmVhZENv
bmRpdGlvbigpOwogICAgIAotICAgIHZvaWQgd2FpdChNdXRleCYgbXV0ZXgpOworICAgIFdURl9F
WFBPUlRfUFJJVkFURSB2b2lkIHdhaXQoTXV0ZXgmIG11dGV4KTsKICAgICAvLyBSZXR1cm5zIHRy
dWUgaWYgdGhlIGNvbmRpdGlvbiB3YXMgc2lnbmFsZWQgYmVmb3JlIGFic29sdXRlVGltZSwgZmFs
c2UgaWYgdGhlIGFic29sdXRlVGltZSB3YXMgcmVhY2hlZCBvciBpcyBpbiB0aGUgcGFzdC4KICAg
ICAvLyBUaGUgYWJzb2x1dGVUaW1lIGlzIGluIHNlY29uZHMsIHN0YXJ0aW5nIG9uIEphbnVhcnkg
MSwgMTk3MC4gVGhlIHRpbWUgaXMgYXNzdW1lZCB0byB1c2UgdGhlIHNhbWUgdGltZSB6b25lIGFz
IFdURjo6Y3VycmVudFRpbWUoKS4KLSAgICBib29sIHRpbWVkV2FpdChNdXRleCYsIGRvdWJsZSBh
YnNvbHV0ZVRpbWUpOwotICAgIHZvaWQgc2lnbmFsKCk7Ci0gICAgdm9pZCBicm9hZGNhc3QoKTsK
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCB0aW1lZFdhaXQoTXV0ZXgmLCBkb3VibGUgYWJz
b2x1dGVUaW1lKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzaWduYWwoKTsKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBicm9hZGNhc3QoKTsKICAgICAKIHByaXZhdGU6CiAgICAg
UGxhdGZvcm1Db25kaXRpb24gbV9jb25kaXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL1dURlRocmVhZERhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
V1RGVGhyZWFkRGF0YS5oCmluZGV4IDRkMDNlMTg0Njk2NjNhOTViZDBmZGIxNjVhNWIxYjQwNzY1
YzhiYzEuLjdkZWNkNDFkNGNjMzhjMWFkMWYyMmVhMWZhOTIxZjJkZmQ3MDk5ZjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvV1RGVGhyZWFkRGF0YS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvV1RGVGhyZWFkRGF0YS5oCkBAIC03OCw4ICs3OCw4IEBAIHR5
cGVkZWYgdm9pZCAoKkF0b21pY1N0cmluZ1RhYmxlRGVzdHJ1Y3RvcikoQXRvbWljU3RyaW5nVGFi
bGUqKTsKIGNsYXNzIFdURlRocmVhZERhdGEgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdU
RlRocmVhZERhdGEpOwogcHVibGljOgotICAgIFdURlRocmVhZERhdGEoKTsKLSAgICB+V1RGVGhy
ZWFkRGF0YSgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBXVEZUaHJlYWREYXRhKCk7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIH5XVEZUaHJlYWREYXRhKCk7CiAKICAgICBBdG9taWNTdHJpbmdU
YWJsZSogYXRvbWljU3RyaW5nVGFibGUoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvZHRvYS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9kdG9hLmgK
aW5kZXggZGYzM2UyY2RjODIyYmFmNWUyMjc5ZjExMzQyMGZjNGEzZTQ3M2ZkYS4uZDI3YzU5MjA2
NDdmZDk2NTRjOGFlYjJhZTUwOTgwNjgwZGU0NzdiMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi9kdG9hLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9kdG9h
LmgKQEAgLTMxLDE5ICszMSwxOSBAQCBleHRlcm4gV1RGOjpNdXRleCogc19kdG9hUDVNdXRleDsK
IAogdHlwZWRlZiBjaGFyIER0b2FCdWZmZXJbODBdOwogCi12b2lkIGR0b2EoRHRvYUJ1ZmZlciBy
ZXN1bHQsIGRvdWJsZSBkZCwgYm9vbCYgc2lnbiwgaW50JiBleHBvbmVudCwgdW5zaWduZWQmIHBy
ZWNpc2lvbik7Ci12b2lkIGR0b2FSb3VuZFNGKER0b2FCdWZmZXIgcmVzdWx0LCBkb3VibGUgZGQs
IGludCBuZGlnaXRzLCBib29sJiBzaWduLCBpbnQmIGV4cG9uZW50LCB1bnNpZ25lZCYgcHJlY2lz
aW9uKTsKLXZvaWQgZHRvYVJvdW5kRFAoRHRvYUJ1ZmZlciByZXN1bHQsIGRvdWJsZSBkZCwgaW50
IG5kaWdpdHMsIGJvb2wmIHNpZ24sIGludCYgZXhwb25lbnQsIHVuc2lnbmVkJiBwcmVjaXNpb24p
OworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZHRvYShEdG9hQnVmZmVyIHJlc3VsdCwgZG91Ymxl
IGRkLCBib29sJiBzaWduLCBpbnQmIGV4cG9uZW50LCB1bnNpZ25lZCYgcHJlY2lzaW9uKTsKK1dU
Rl9FWFBPUlRfUFJJVkFURSB2b2lkIGR0b2FSb3VuZFNGKER0b2FCdWZmZXIgcmVzdWx0LCBkb3Vi
bGUgZGQsIGludCBuZGlnaXRzLCBib29sJiBzaWduLCBpbnQmIGV4cG9uZW50LCB1bnNpZ25lZCYg
cHJlY2lzaW9uKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIGR0b2FSb3VuZERQKER0b2FCdWZm
ZXIgcmVzdWx0LCBkb3VibGUgZGQsIGludCBuZGlnaXRzLCBib29sJiBzaWduLCBpbnQmIGV4cG9u
ZW50LCB1bnNpZ25lZCYgcHJlY2lzaW9uKTsKIAogLy8gczAwOiBpbnB1dCBzdHJpbmcuIE11c3Qg
bm90IGJlIDAgYW5kIG11c3QgYmUgdGVybWluYXRlZCBieSAwLgogLy8gc2U6ICpzZSB3aWxsIGhh
dmUgdGhlIGxhc3QgY29uc3VtZWQgY2hhcmFjdGVyIHBvc2l0aW9uICsgMS4KLWRvdWJsZSBzdHJ0
b2QoY29uc3QgY2hhciogczAwLCBjaGFyKiogc2UpOworV1RGX0VYUE9SVF9QUklWQVRFIGRvdWJs
ZSBzdHJ0b2QoY29uc3QgY2hhciogczAwLCBjaGFyKiogc2UpOwogCiAvLyBTaXplID0gODAgZm9y
IHNpemVvZihEdG9hQnVmZmVyKSArIHNvbWUgc2lnbiBiaXRzLCBkZWNpbWFsIHBvaW50LCAnZScs
IGV4cG9uZW50IGRpZ2l0cy4KIGNvbnN0IHVuc2lnbmVkIE51bWJlclRvU3RyaW5nQnVmZmVyTGVu
Z3RoID0gOTY7CiB0eXBlZGVmIGNoYXIgTnVtYmVyVG9TdHJpbmdCdWZmZXJbTnVtYmVyVG9TdHJp
bmdCdWZmZXJMZW5ndGhdOwogdHlwZWRlZiBVQ2hhciBOdW1iZXJUb1VTdHJpbmdCdWZmZXJbTnVt
YmVyVG9TdHJpbmdCdWZmZXJMZW5ndGhdOwotY29uc3QgY2hhciogbnVtYmVyVG9TdHJpbmcoZG91
YmxlLCBOdW1iZXJUb1N0cmluZ0J1ZmZlcik7CitXVEZfRVhQT1JUX1BSSVZBVEUgY29uc3QgY2hh
ciogbnVtYmVyVG9TdHJpbmcoZG91YmxlLCBOdW1iZXJUb1N0cmluZ0J1ZmZlcik7CiBjb25zdCBj
aGFyKiBudW1iZXJUb0ZpeGVkUHJlY2lzaW9uU3RyaW5nKGRvdWJsZSwgdW5zaWduZWQgc2lnbmlm
aWNhbnRGaWd1cmVzLCBOdW1iZXJUb1N0cmluZ0J1ZmZlciwgYm9vbCB0cnVuY2F0ZVRyYWlsaW5n
WmVyb3MgPSBmYWxzZSk7CiBjb25zdCBjaGFyKiBudW1iZXJUb0ZpeGVkV2lkdGhTdHJpbmcoZG91
YmxlLCB1bnNpZ25lZCBkZWNpbWFsUGxhY2VzLCBOdW1iZXJUb1N0cmluZ0J1ZmZlcik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9BdG9taWNTdHJpbmcuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9BdG9taWNTdHJpbmcuaAppbmRleCA3MmM4
Y2Y0YTIxNDQ4MGJkZjZiMzNkOTdjM2QwNjYwZjRjMDI1Nzg0Li5mYjllMjA0M2E0ZjE0NWQ2ZWNh
ZThlNGZjZGQ3YTQxMWJlMTVhZWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL3RleHQvQXRvbWljU3RyaW5nLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90
ZXh0L0F0b21pY1N0cmluZy5oCkBAIC0zOCw3ICszOCw3IEBAIHN0cnVjdCBBdG9taWNTdHJpbmdI
YXNoOwogCiBjbGFzcyBBdG9taWNTdHJpbmcgewogcHVibGljOgotICAgIHN0YXRpYyB2b2lkIGlu
aXQoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgaW5pdCgpOwogCiAgICAg
QXRvbWljU3RyaW5nKCkgeyB9CiAgICAgQXRvbWljU3RyaW5nKGNvbnN0IExDaGFyKiBzKSA6IG1f
c3RyaW5nKGFkZChzKSkgeyB9CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBBdG9taWNT
dHJpbmcoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKSA6IG1fc3RyaW5nKFdURjo6SGFz
aFRhYmxlRGVsZXRlZFZhbHVlKSB7IH0KICAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVl
KCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQog
Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZ0ltcGwqIGZpbmQoY29uc3QgVUNoYXIqIHMsIHVuc2ln
bmVkIGxlbmd0aCwgdW5zaWduZWQgZXhpc3RpbmdIYXNoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIEF0b21pY1N0cmluZ0ltcGwqIGZpbmQoY29uc3QgVUNoYXIqIHMsIHVuc2lnbmVk
IGxlbmd0aCwgdW5zaWduZWQgZXhpc3RpbmdIYXNoKTsKIAogICAgIG9wZXJhdG9yIGNvbnN0IFN0
cmluZyYoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQogICAgIGNvbnN0IFN0cmluZyYgc3Ry
aW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH07CkBAIC04Myw3ICs4Myw3IEBAIHB1Ymxp
YzoKICAgICBib29sIGVuZHNXaXRoKGNvbnN0IFN0cmluZyYgcywgYm9vbCBjYXNlU2Vuc2l0aXZl
ID0gdHJ1ZSkgY29uc3QKICAgICAgICAgeyByZXR1cm4gbV9zdHJpbmcuZW5kc1dpdGgocywgY2Fz
ZVNlbnNpdGl2ZSk7IH0KICAgICAKLSAgICBBdG9taWNTdHJpbmcgbG93ZXIoKSBjb25zdDsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgQXRvbWljU3RyaW5nIGxvd2VyKCkgY29uc3Q7CiAgICAgQXRv
bWljU3RyaW5nIHVwcGVyKCkgY29uc3QgeyByZXR1cm4gQXRvbWljU3RyaW5nKGltcGwoKS0+dXBw
ZXIoKSk7IH0KICAgICAKICAgICBpbnQgdG9JbnQoYm9vbCogb2sgPSAwKSBjb25zdCB7IHJldHVy
biBtX3N0cmluZy50b0ludChvayk7IH0KQEAgLTEyMCwyMCArMTIwLDIwIEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgU3RyaW5nIG1fc3RyaW5nOwogICAgIAotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFN0cmluZ0ltcGw+IGFkZChjb25zdCBMQ2hhciopOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBz
dGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGQoY29uc3QgTENoYXIqKTsKICAgICBBTFdB
WVNfSU5MSU5FIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChjb25zdCBjaGFyKiBz
KSB7IHJldHVybiBhZGQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHMpKTsgfTsKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGQoY29uc3QgVUNoYXIqLCB1bnNpZ25l
ZCBsZW5ndGgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJp
bmdJbXBsPiBhZGQoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIEFMV0FZU19J
TkxJTkUgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkKGNvbnN0IGNoYXIqIHMsIHVu
c2lnbmVkIGxlbmd0aCkgeyByZXR1cm4gYWRkKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+
KHMpLCBsZW5ndGgpOyB9OwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChj
b25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgZXhpc3RpbmdIYXNoKTsKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGQoY29uc3QgVUNoYXIqKTsKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkKGNvbnN0
IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBleGlzdGluZ0hhc2gpOworICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGQoY29uc3Qg
VUNoYXIqKTsKICAgICBBTFdBWVNfSU5MSU5FIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkKFN0
cmluZ0ltcGwqIHIpCiAgICAgewogICAgICAgICBpZiAoIXIgfHwgci0+aXNBdG9taWMoKSkKICAg
ICAgICAgICAgIHJldHVybiByOwogICAgICAgICByZXR1cm4gYWRkU2xvd0Nhc2Uocik7CiAgICAg
fQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZFNsb3dDYXNlKFN0cmluZ0lt
cGwqKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGZyb21VVEY4SW50ZXJuYWwoY29uc3QgY2hh
ciosIGNvbnN0IGNoYXIqKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQ
dHI8U3RyaW5nSW1wbD4gYWRkU2xvd0Nhc2UoU3RyaW5nSW1wbCopOworICAgIFdURl9FWFBPUlRf
UFJJVkFURSBzdGF0aWMgQXRvbWljU3RyaW5nIGZyb21VVEY4SW50ZXJuYWwoY29uc3QgY2hhcios
IGNvbnN0IGNoYXIqKTsKIH07CiAKIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQXRvbWlj
U3RyaW5nJiBhLCBjb25zdCBBdG9taWNTdHJpbmcmIGIpIHsgcmV0dXJuIGEuaW1wbCgpID09IGIu
aW1wbCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvQ1N0
cmluZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0NTdHJpbmcuaAppbmRleCAz
NDNhN2E1MjUyMDc0MWUyYWRjZGJkODEwZTNlOTk5NWEzODBkNDY0Li5kNDNhZDRiZDdkNzAxZjJj
MzcxYjc1OTg0Mzg0OGNhY2ZmYmUzOGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL3RleHQvQ1N0cmluZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4
dC9DU3RyaW5nLmgKQEAgLTUyLDE2ICs1MiwxNiBAQCBwcml2YXRlOgogY2xhc3MgQ1N0cmluZyB7
CiBwdWJsaWM6CiAgICAgQ1N0cmluZygpIHsgfQotICAgIENTdHJpbmcoY29uc3QgY2hhciopOwot
ICAgIENTdHJpbmcoY29uc3QgY2hhciosIHNpemVfdCBsZW5ndGgpOworICAgIFdURl9FWFBPUlRf
UFJJVkFURSBDU3RyaW5nKGNvbnN0IGNoYXIqKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgQ1N0
cmluZyhjb25zdCBjaGFyKiwgc2l6ZV90IGxlbmd0aCk7CiAgICAgQ1N0cmluZyhDU3RyaW5nQnVm
ZmVyKiBidWZmZXIpIDogbV9idWZmZXIoYnVmZmVyKSB7IH0KLSAgICBzdGF0aWMgQ1N0cmluZyBu
ZXdVbmluaXRpYWxpemVkKHNpemVfdCBsZW5ndGgsIGNoYXIqJiBjaGFyYWN0ZXJCdWZmZXIpOwor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgQ1N0cmluZyBuZXdVbmluaXRpYWxpemVkKHNp
emVfdCBsZW5ndGgsIGNoYXIqJiBjaGFyYWN0ZXJCdWZmZXIpOwogCiAgICAgY29uc3QgY2hhciog
ZGF0YSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+
ZGF0YSgpIDogMDsKICAgICB9Ci0gICAgY2hhciogbXV0YWJsZURhdGEoKTsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgY2hhciogbXV0YWJsZURhdGEoKTsKICAgICBzaXplX3QgbGVuZ3RoKCkgY29u
c3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5sZW5ndGgoKSAt
IDEgOiAwOwpAQCAtNzcsNyArNzcsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxDU3RyaW5nQnVm
ZmVyPiBtX2J1ZmZlcjsKIH07CiAKLWJvb2wgb3BlcmF0b3I9PShjb25zdCBDU3RyaW5nJiBhLCBj
b25zdCBDU3RyaW5nJiBiKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIG9wZXJhdG9yPT0oY29u
c3QgQ1N0cmluZyYgYSwgY29uc3QgQ1N0cmluZyYgYik7CiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IENTdHJpbmcmIGEsIGNvbnN0IENTdHJpbmcmIGIpIHsgcmV0dXJuICEoYSA9PSBiKTsg
fQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oCmluZGV4IDc5MDJkNTEyZjQzOTQzZGFiNWFhOWFiZDFlYjU1ZGU2
NTI5YjQ1YjEuLjVjYzQyOWM3MjM0MmUyYjIzYWUwZTdmNWRjNDY1MzU1NDcxZDMwZjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaApAQCAtMzgs
OCArMzgsOCBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHZvaWQgYXBwZW5kKGNvbnN0
IFVDaGFyKiwgdW5zaWduZWQpOwotICAgIHZvaWQgYXBwZW5kKGNvbnN0IExDaGFyKiwgdW5zaWdu
ZWQpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZChjb25zdCBVQ2hhciosIHVu
c2lnbmVkKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmQoY29uc3QgTENoYXIq
LCB1bnNpZ25lZCk7CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIq
IGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkgeyBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBMQ2hhcio+KGNoYXJhY3RlcnMpLCBsZW5ndGgpOyB9CiAKQEAgLTEwMSwxMSArMTAxLDEx
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFsZW5ndGgo
KTsgfQogCi0gICAgdm9pZCByZXNlcnZlQ2FwYWNpdHkodW5zaWduZWQgbmV3Q2FwYWNpdHkpOwor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHJlc2VydmVDYXBhY2l0eSh1bnNpZ25lZCBuZXdD
YXBhY2l0eSk7CiAKLSAgICB2b2lkIHJlc2l6ZSh1bnNpZ25lZCBuZXdTaXplKTsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgdm9pZCByZXNpemUodW5zaWduZWQgbmV3U2l6ZSk7CiAKLSAgICB2b2lk
IHNocmlua1RvRml0KCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2hyaW5rVG9GaXQo
KTsKIAogICAgIFVDaGFyIG9wZXJhdG9yW10odW5zaWduZWQgaSkgY29uc3QKICAgICB7CkBAIC0x
MzQsNyArMTM0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFsbG9jYXRlQnVmZmVyKGNvbnN0IFVD
aGFyKiBjdXJyZW50Q2hhcmFjdGVycywgdW5zaWduZWQgcmVxdWlyZWRMZW5ndGgpOwogICAgIHZv
aWQgcmVhbGxvY2F0ZUJ1ZmZlcih1bnNpZ25lZCByZXF1aXJlZExlbmd0aCk7CiAgICAgVUNoYXIq
IGFwcGVuZFVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKTsKLSAgICB2b2lkIHJlaWZ5U3Ry
aW5nKCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVpZnlTdHJpbmcoKTsKIAogICAg
IHVuc2lnbmVkIG1fbGVuZ3RoOwogICAgIFN0cmluZyBtX3N0cmluZzsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCmluZGV4IDRmYzY5ZGJiZTgxZDIxMmNhOWFi
ZDRhOGJkMTU1N2Q2MTMwNzU4NjEuLjE3N2Y2MDlhNmUzYjhkYjc3OTk5MzEzZmJlOTU4MTgyOGE2
NTA1ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJ
bXBsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaApA
QCAtMTkxLDEyICsxOTEsMTIgQEAgcHJpdmF0ZToKICAgICB9CiAKIHB1YmxpYzoKLSAgICB+U3Ry
aW5nSW1wbCgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB+U3RyaW5nSW1wbCgpOwogCi0gICAg
c3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRlKGNvbnN0IFVDaGFyKiwgdW5zaWdu
ZWQgbGVuZ3RoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8U3Ry
aW5nSW1wbD4gY3JlYXRlKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgTENoYXIqLCB1bnNpZ25lZCBs
ZW5ndGgpOwogICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4g
Y3JlYXRlKGNvbnN0IGNoYXIqIHMsIHVuc2lnbmVkIGxlbmd0aCkgeyByZXR1cm4gY3JlYXRlKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihzKSwgbGVuZ3RoKTsgfQotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZShjb25zdCBMQ2hhciopOworICAgIFdURl9FWFBP
UlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgTENo
YXIqKTsKICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNy
ZWF0ZShjb25zdCBjaGFyKiBzKSB7IHJldHVybiBjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBMQ2hhcio+KHMpKTsgfQogCiAgICAgc3RhdGljIEFMV0FZU19JTkxJTkUgUGFzc1JlZlB0cjxT
dHJpbmdJbXBsPiBjcmVhdGU4KFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVwLCB1bnNpZ25lZCBv
ZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKQEAgLTIyNyw3ICsyMjcsNyBAQCBwdWJsaWM6CiAgICAg
fQogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRlVW5pbml0aWFsaXpl
ZCh1bnNpZ25lZCBsZW5ndGgsIExDaGFyKiYgZGF0YSk7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
U3RyaW5nSW1wbD4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgsIFVDaGFyKiYg
ZGF0YSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0lt
cGw+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBVQ2hhciomIGRhdGEpOwog
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgQUxXQVlTX0lOTElORSBQYXNzUmVmUHRy
PFN0cmluZ0ltcGw+IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBUKiYg
b3V0cHV0KQogICAgIHsKICAgICAgICAgaWYgKCFsZW5ndGgpIHsKQEAgLTI3Niw3ICsyNzYsNyBA
QCBwdWJsaWM6CiAgICAgfQogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRv
cHQoU3RyaW5nQnVmZmVyPExDaGFyPiYgYnVmZmVyKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
dHJpbmdJbXBsPiBhZG9wdChTdHJpbmdCdWZmZXI8VUNoYXI+JiBidWZmZXIpOworICAgIFdURl9F
WFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZG9wdChTdHJpbmdC
dWZmZXI8VUNoYXI+JiBidWZmZXIpOwogCiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyBy
ZXR1cm4gbV9sZW5ndGg7IH0KICAgICBib29sIGlzOEJpdCgpIGNvbnN0IHsgcmV0dXJuIG1faGFz
aEFuZEZsYWdzICYgc19oYXNoRmxhZzhCaXRCdWZmZXI7IH0KQEAgLTM5Nyw3ICszOTcsNyBAQCBw
dWJsaWM6CiAgICAgICAgIG1fcmVmQ291bnQgLT0gc19yZWZDb3VudEluY3JlbWVudDsKICAgICB9
CiAKLSAgICBzdGF0aWMgU3RyaW5nSW1wbCogZW1wdHkoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFN0cmluZ0ltcGwqIGVtcHR5KCk7CiAKICAgICAvLyBGSVhNRTogRG9lcyB0aGlz
IHJlYWxseSBiZWxvbmcgaW4gU3RyaW5nSW1wbD8KICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
c3RhdGljIHZvaWQgY29weUNoYXJzKFQqIGRlc3RpbmF0aW9uLCBjb25zdCBUKiBzb3VyY2UsIHVu
c2lnbmVkIG51bUNoYXJhY3RlcnMpCkBAIC00MzIsNyArNDMyLDcgQEAgcHVibGljOgogICAgIC8v
IGl0cyBvd24gY29weSBvZiB0aGUgc3RyaW5nLgogICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4g
aXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAKLSAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHN1YnN0
cmluZyh1bnNpZ25lZCBwb3MsIHVuc2lnbmVkIGxlbiA9IFVJTlRfTUFYKTsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBzdWJzdHJpbmcodW5zaWduZWQgcG9z
LCB1bnNpZ25lZCBsZW4gPSBVSU5UX01BWCk7CiAKICAgICBVQ2hhciBvcGVyYXRvcltdKHVuc2ln
bmVkIGkpIGNvbnN0CiAgICAgewpAQCAtNDQxLDkgKzQ0MSw5IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIHJldHVybiBtX2RhdGE4W2ldOwogICAgICAgICByZXR1cm4gbV9kYXRhMTZbaV07CiAgICAg
fQotICAgIFVDaGFyMzIgY2hhcmFjdGVyU3RhcnRpbmdBdCh1bnNpZ25lZCk7CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIFVDaGFyMzIgY2hhcmFjdGVyU3RhcnRpbmdBdCh1bnNpZ25lZCk7CiAKLSAg
ICBib29sIGNvbnRhaW5zT25seVdoaXRlc3BhY2UoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
Ym9vbCBjb250YWluc09ubHlXaGl0ZXNwYWNlKCk7CiAKICAgICBpbnQgdG9JbnRTdHJpY3QoYm9v
bCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKTsKICAgICB1bnNpZ25lZCB0b1VJbnRTdHJpY3QoYm9v
bCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKTsKQEAgLTQ1MSw3ICs0NTEsNyBAQCBwdWJsaWM6CiAg
ICAgdWludDY0X3QgdG9VSW50NjRTdHJpY3QoYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKTsK
ICAgICBpbnRwdHJfdCB0b0ludFB0clN0cmljdChib29sKiBvayA9IDAsIGludCBiYXNlID0gMTAp
OwogCi0gICAgaW50IHRvSW50KGJvb2wqIG9rID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2Fy
YmFnZQorICAgIFdURl9FWFBPUlRfUFJJVkFURSBpbnQgdG9JbnQoYm9vbCogb2sgPSAwKTsgLy8g
aWdub3JlcyB0cmFpbGluZyBnYXJiYWdlCiAgICAgdW5zaWduZWQgdG9VSW50KGJvb2wqIG9rID0g
MCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQogICAgIGludDY0X3QgdG9JbnQ2NChib29s
KiBvayA9IDApOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKICAgICB1aW50NjRfdCB0b1VJ
bnQ2NChib29sKiBvayA9IDApOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKQEAgLTQ2MCw0
NCArNDYwLDQ0IEBAIHB1YmxpYzoKICAgICBkb3VibGUgdG9Eb3VibGUoYm9vbCogb2sgPSAwLCBi
b29sKiBkaWRSZWFkTnVtYmVyID0gMCk7CiAgICAgZmxvYXQgdG9GbG9hdChib29sKiBvayA9IDAs
IGJvb2wqIGRpZFJlYWROdW1iZXIgPSAwKTsKIAotICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4g
bG93ZXIoKTsKLSAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHVwcGVyKCk7CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gbG93ZXIoKTsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiB1cHBlcigpOwogCi0gICAgUGFzc1Jl
ZlB0cjxTdHJpbmdJbXBsPiBmaWxsKFVDaGFyKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgUGFz
c1JlZlB0cjxTdHJpbmdJbXBsPiBmaWxsKFVDaGFyKTsKICAgICAvLyBGSVhNRTogRG8gd2UgbmVl
ZCBmaWxsKGNoYXIpIG9yIGNhbiB3ZSBqdXN0IGRvIHRoZSByaWdodCB0aGluZyBpZiBVQ2hhciBp
cyBBU0NJST8KICAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGZvbGRDYXNlKCk7CiAKICAgICBQ
YXNzUmVmUHRyPFN0cmluZ0ltcGw+IHN0cmlwV2hpdGVTcGFjZSgpOwogICAgIFBhc3NSZWZQdHI8
U3RyaW5nSW1wbD4gc3RyaXBXaGl0ZVNwYWNlKElzV2hpdGVTcGFjZUZ1bmN0aW9uUHRyKTsKLSAg
ICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHNpbXBsaWZ5V2hpdGVTcGFjZSgpOworICAgIFdURl9F
WFBPUlRfUFJJVkFURSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHNpbXBsaWZ5V2hpdGVTcGFjZSgp
OwogICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gc2ltcGxpZnlXaGl0ZVNwYWNlKElzV2hpdGVT
cGFjZUZ1bmN0aW9uUHRyKTsKIAogICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVtb3ZlQ2hh
cmFjdGVycyhDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRyKTsKICAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgQ2hhclR5cGU+CiAgICAgQUxXQVlTX0lOTElORSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJl
bW92ZUNoYXJhY3RlcnMoY29uc3QgQ2hhclR5cGUqIGNoYXJhY3RlcnMsIENoYXJhY3Rlck1hdGNo
RnVuY3Rpb25QdHIpOwogCi0gICAgc2l6ZV90IGZpbmQoVUNoYXIsIHVuc2lnbmVkIGluZGV4ID0g
MCk7Ci0gICAgc2l6ZV90IGZpbmQoQ2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0ciwgdW5zaWduZWQg
aW5kZXggPSAwKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmQoVUNoYXIsIHVu
c2lnbmVkIGluZGV4ID0gMCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBmaW5kKENo
YXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIsIHVuc2lnbmVkIGluZGV4ID0gMCk7CiAgICAgc2l6ZV90
IGZpbmQoY29uc3QgTENoYXIqLCB1bnNpZ25lZCBpbmRleCA9IDApOwogICAgIEFMV0FZU19JTkxJ
TkUgc2l6ZV90IGZpbmQoY29uc3QgY2hhciogcywgdW5zaWduZWQgaW5kZXggPSAwKSB7IHJldHVy
biBmaW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihzKSwgaW5kZXgpOyB9OwotICAg
IHNpemVfdCBmaW5kKFN0cmluZ0ltcGwqLCB1bnNpZ25lZCBpbmRleCA9IDApOworICAgIFdURl9F
WFBPUlRfUFJJVkFURSBzaXplX3QgZmluZChTdHJpbmdJbXBsKiwgdW5zaWduZWQgaW5kZXggPSAw
KTsKICAgICBzaXplX3QgZmluZElnbm9yaW5nQ2FzZShjb25zdCBMQ2hhciosIHVuc2lnbmVkIGlu
ZGV4ID0gMCk7CiAgICAgQUxXQVlTX0lOTElORSBzaXplX3QgZmluZElnbm9yaW5nQ2FzZShjb25z
dCBjaGFyKiBzLCB1bnNpZ25lZCBpbmRleCA9IDApIHsgcmV0dXJuIGZpbmRJZ25vcmluZ0Nhc2Uo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHMpLCBpbmRleCk7IH07Ci0gICAgc2l6ZV90
IGZpbmRJZ25vcmluZ0Nhc2UoU3RyaW5nSW1wbCosIHVuc2lnbmVkIGluZGV4ID0gMCk7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBmaW5kSWdub3JpbmdDYXNlKFN0cmluZ0ltcGwqLCB1
bnNpZ25lZCBpbmRleCA9IDApOwogCi0gICAgc2l6ZV90IHJldmVyc2VGaW5kKFVDaGFyLCB1bnNp
Z25lZCBpbmRleCA9IFVJTlRfTUFYKTsKLSAgICBzaXplX3QgcmV2ZXJzZUZpbmQoU3RyaW5nSW1w
bCosIHVuc2lnbmVkIGluZGV4ID0gVUlOVF9NQVgpOwotICAgIHNpemVfdCByZXZlcnNlRmluZEln
bm9yaW5nQ2FzZShTdHJpbmdJbXBsKiwgdW5zaWduZWQgaW5kZXggPSBVSU5UX01BWCk7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCByZXZlcnNlRmluZChVQ2hhciwgdW5zaWduZWQgaW5k
ZXggPSBVSU5UX01BWCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCByZXZlcnNlRmlu
ZChTdHJpbmdJbXBsKiwgdW5zaWduZWQgaW5kZXggPSBVSU5UX01BWCk7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHNpemVfdCByZXZlcnNlRmluZElnbm9yaW5nQ2FzZShTdHJpbmdJbXBsKiwgdW5z
aWduZWQgaW5kZXggPSBVSU5UX01BWCk7CiAKICAgICBib29sIHN0YXJ0c1dpdGgoU3RyaW5nSW1w
bCogc3RyLCBib29sIGNhc2VTZW5zaXRpdmUgPSB0cnVlKSB7IHJldHVybiAoY2FzZVNlbnNpdGl2
ZSA/IHJldmVyc2VGaW5kKHN0ciwgMCkgOiByZXZlcnNlRmluZElnbm9yaW5nQ2FzZShzdHIsIDAp
KSA9PSAwOyB9Ci0gICAgYm9vbCBlbmRzV2l0aChTdHJpbmdJbXBsKiwgYm9vbCBjYXNlU2Vuc2l0
aXZlID0gdHJ1ZSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZW5kc1dpdGgoU3RyaW5n
SW1wbCosIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUpOwogCi0gICAgUGFzc1JlZlB0cjxTdHJp
bmdJbXBsPiByZXBsYWNlKFVDaGFyLCBVQ2hhcik7Ci0gICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBs
PiByZXBsYWNlKFVDaGFyLCBTdHJpbmdJbXBsKik7Ci0gICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBs
PiByZXBsYWNlKFN0cmluZ0ltcGwqLCBTdHJpbmdJbXBsKik7Ci0gICAgUGFzc1JlZlB0cjxTdHJp
bmdJbXBsPiByZXBsYWNlKHVuc2lnbmVkIGluZGV4LCB1bnNpZ25lZCBsZW4sIFN0cmluZ0ltcGwq
KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXBsYWNl
KFVDaGFyLCBVQ2hhcik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8U3RyaW5n
SW1wbD4gcmVwbGFjZShVQ2hhciwgU3RyaW5nSW1wbCopOworICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlcGxhY2UoU3RyaW5nSW1wbCosIFN0cmluZ0ltcGwq
KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXBsYWNl
KHVuc2lnbmVkIGluZGV4LCB1bnNpZ25lZCBsZW4sIFN0cmluZ0ltcGwqKTsKIAotICAgIFdURjo6
VW5pY29kZTo6RGlyZWN0aW9uIGRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKGJvb2wqIGhhc1N0cm9u
Z0RpcmVjdGlvbmFsaXR5ID0gMCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFdURjo6VW5pY29k
ZTo6RGlyZWN0aW9uIGRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKGJvb2wqIGhhc1N0cm9uZ0RpcmVj
dGlvbmFsaXR5ID0gMCk7CiAKICNpZiBVU0UoQ0YpCiAgICAgQ0ZTdHJpbmdSZWYgY3JlYXRlQ0ZT
dHJpbmcoKTsKQEAgLTU1MywyMyArNTUzLDIzIEBAIEFMV0FZU19JTkxJTkUgY29uc3QgTENoYXIq
IFN0cmluZ0ltcGw6OmdldENoYXJhY3RlcnM8TENoYXI+KCkgY29uc3QgeyByZXR1cm4gY2hhCiB0
ZW1wbGF0ZSA8PgogQUxXQVlTX0lOTElORSBjb25zdCBVQ2hhciogU3RyaW5nSW1wbDo6Z2V0Q2hh
cmFjdGVyczxVQ2hhcj4oKSBjb25zdCB7IHJldHVybiBjaGFyYWN0ZXJzMTYoKTsgfQogCi1ib29s
IGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBTdHJpbmdJbXBsKik7Ci1ib29sIGVxdWFs
KGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBMQ2hhciopOworV1RGX0VYUE9SVF9QUklWQVRFIGJv
b2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IFN0cmluZ0ltcGwqKTsKK1dURl9FWFBP
UlRfUFJJVkFURSBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBMQ2hhciopOwog
aW5saW5lIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCogYSwgY29uc3QgY2hhciogYikgeyBy
ZXR1cm4gZXF1YWwoYSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGIpKTsgfQogYm9v
bCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiwgY29uc3QgTENoYXIqLCB1bnNpZ25lZCk7CiBpbmxp
bmUgYm9vbCBlcXVhbChjb25zdCBMQ2hhciogYSwgU3RyaW5nSW1wbCogYikgeyByZXR1cm4gZXF1
YWwoYiwgYSk7IH0KIGlubGluZSBib29sIGVxdWFsKGNvbnN0IGNoYXIqIGEsIFN0cmluZ0ltcGwq
IGIpIHsgcmV0dXJuIGVxdWFsKGIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihhKSk7
IH0KLWJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IFVDaGFyKiwgdW5zaWduZWQp
OworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0
IFVDaGFyKiwgdW5zaWduZWQpOwogCi1ib29sIGVxdWFsSWdub3JpbmdDYXNlKFN0cmluZ0ltcGwq
LCBTdHJpbmdJbXBsKik7Ci1ib29sIGVxdWFsSWdub3JpbmdDYXNlKFN0cmluZ0ltcGwqLCBjb25z
dCBMQ2hhciopOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZXF1YWxJZ25vcmluZ0Nhc2UoU3Ry
aW5nSW1wbCosIFN0cmluZ0ltcGwqKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGVxdWFsSWdu
b3JpbmdDYXNlKFN0cmluZ0ltcGwqLCBjb25zdCBMQ2hhciopOwogaW5saW5lIGJvb2wgZXF1YWxJ
Z25vcmluZ0Nhc2UoY29uc3QgTENoYXIqIGEsIFN0cmluZ0ltcGwqIGIpIHsgcmV0dXJuIGVxdWFs
SWdub3JpbmdDYXNlKGIsIGEpOyB9Ci1ib29sIGVxdWFsSWdub3JpbmdDYXNlKGNvbnN0IFVDaGFy
KiwgY29uc3QgTENoYXIqLCB1bnNpZ25lZCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVh
bElnbm9yaW5nQ2FzZShjb25zdCBVQ2hhciosIGNvbnN0IExDaGFyKiwgdW5zaWduZWQpOwogaW5s
aW5lIGJvb2wgZXF1YWxJZ25vcmluZ0Nhc2UoY29uc3QgVUNoYXIqIGEsIGNvbnN0IGNoYXIqIGIs
IHVuc2lnbmVkIGxlbmd0aCkgeyByZXR1cm4gZXF1YWxJZ25vcmluZ0Nhc2UoYSwgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBMQ2hhcio+KGIpLCBsZW5ndGgpOyB9CiBpbmxpbmUgYm9vbCBlcXVhbEln
bm9yaW5nQ2FzZShjb25zdCBMQ2hhciogYSwgY29uc3QgVUNoYXIqIGIsIHVuc2lnbmVkIGxlbmd0
aCkgeyByZXR1cm4gZXF1YWxJZ25vcmluZ0Nhc2UoYiwgYSwgbGVuZ3RoKTsgfQogaW5saW5lIGJv
b2wgZXF1YWxJZ25vcmluZ0Nhc2UoY29uc3QgY2hhciogYSwgY29uc3QgVUNoYXIqIGIsIHVuc2ln
bmVkIGxlbmd0aCkgeyByZXR1cm4gZXF1YWxJZ25vcmluZ0Nhc2UoYiwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBMQ2hhcio+KGEpLCBsZW5ndGgpOyB9CiAKLWJvb2wgZXF1YWxJZ25vcmluZ051bGxp
dHkoU3RyaW5nSW1wbCosIFN0cmluZ0ltcGwqKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGVx
dWFsSWdub3JpbmdOdWxsaXR5KFN0cmluZ0ltcGwqLCBTdHJpbmdJbXBsKik7CiAKIHRlbXBsYXRl
PHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KIGJvb2wgZXF1YWxJZ25vcmluZ051bGxpdHkoY29uc3Qg
VmVjdG9yPFVDaGFyLCBpbmxpbmVDYXBhY2l0eT4mIGEsIFN0cmluZ0ltcGwqIGIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvV1RGU3RyaW5nLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL3RleHQvV1RGU3RyaW5nLmgKaW5kZXggNjgwNzllNWFhYTZmYmFj
NWQzOWY1MWEzOTBkODJlZDM3ZDg1MjM0Yi4uYjFhZGFhNWViYmRlZmU0NjAxYzZlMTYyYTY1NmFk
MTU0ZjEyYTVlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dU
RlN0cmluZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9XVEZTdHJpbmcu
aApAQCAtNzUsNyArNzUsNyBAQCBpbnRwdHJfdCBjaGFyYWN0ZXJzVG9JbnRQdHJTdHJpY3QoY29u
c3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPQogaW50cHRyX3QgY2hh
cmFjdGVyc1RvSW50UHRyU3RyaWN0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDAs
IGludCBiYXNlID0gMTApOwogCiBpbnQgY2hhcmFjdGVyc1RvSW50KGNvbnN0IExDaGFyKiwgc2l6
ZV90LCBib29sKiBvayA9IDApOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKLWludCBjaGFy
YWN0ZXJzVG9JbnQoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCk7IC8vIGlnbm9y
ZXMgdHJhaWxpbmcgZ2FyYmFnZQorV1RGX0VYUE9SVF9QUklWQVRFIGludCBjaGFyYWN0ZXJzVG9J
bnQoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxp
bmcgZ2FyYmFnZQogdW5zaWduZWQgY2hhcmFjdGVyc1RvVUludChjb25zdCBMQ2hhciosIHNpemVf
dCwgYm9vbCogb2sgPSAwKTsgLy8gaWdub3JlcyB0cmFpbGluZyBnYXJiYWdlCiB1bnNpZ25lZCBj
aGFyYWN0ZXJzVG9VSW50KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDApOyAvLyBp
Z25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKIGludDY0X3QgY2hhcmFjdGVyc1RvSW50NjQoY29uc3Qg
TENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFn
ZQpAQCAtODgsNyArODgsNyBAQCBpbnRwdHJfdCBjaGFyYWN0ZXJzVG9JbnRQdHIoY29uc3QgVUNo
YXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCk7IC8vIGlnbm9yZXMgdHJhaQogV1RGX0VYUE9SVF9Q
UklWQVRFIGRvdWJsZSBjaGFyYWN0ZXJzVG9Eb3VibGUoY29uc3QgTENoYXIqLCBzaXplX3QsIGJv
b2wqIG9rID0gMCwgYm9vbCogZGlkUmVhZE51bWJlciA9IDApOwogV1RGX0VYUE9SVF9QUklWQVRF
IGRvdWJsZSBjaGFyYWN0ZXJzVG9Eb3VibGUoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9r
ID0gMCwgYm9vbCogZGlkUmVhZE51bWJlciA9IDApOwogZmxvYXQgY2hhcmFjdGVyc1RvRmxvYXQo
Y29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCwgYm9vbCogZGlkUmVhZE51bWJlciA9
IDApOwotZmxvYXQgY2hhcmFjdGVyc1RvRmxvYXQoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wq
IG9rID0gMCwgYm9vbCogZGlkUmVhZE51bWJlciA9IDApOworV1RGX0VYUE9SVF9QUklWQVRFIGZs
b2F0IGNoYXJhY3RlcnNUb0Zsb2F0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDAs
IGJvb2wqIGRpZFJlYWROdW1iZXIgPSAwKTsKIAogZW51bSBGbG9hdENvbnZlcnNpb25GbGFncyB7
CiAgICAgU2hvdWxkUm91bmRTaWduaWZpY2FudEZpZ3VyZXMgPSAxIDw8IDAsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvQ29sbGF0b3IuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvdW5pY29kZS9Db2xsYXRvci5oCmluZGV4IDAwYWIxNmU2YTViZGJh
NmZmMTRiNWIzNzFmMWM5MTRjMTg4MDM4MmYuLjc5OTRmZjhlNWNiMzEzOGVlOTczNjUzMDhhZTZj
MzUxNDM2ZTViM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdW5pY29k
ZS9Db2xsYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdW5pY29kZS9Db2xs
YXRvci5oCkBAIC00NSwxMyArNDUsMTMgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgcHVibGljOgog
ICAgICAgICBlbnVtIFJlc3VsdCB7IEVxdWFsID0gMCwgR3JlYXRlciA9IDEsIExlc3MgPSAtMSB9
OwogCi0gICAgICAgIENvbGxhdG9yKGNvbnN0IGNoYXIqIGxvY2FsZSk7IC8vIFBhcnNpbmcgaXMg
bGVuaWVudDsgZS5nLiBsYW5ndWFnZSBpZGVudGlmaWVycyAoc3VjaCBhcyAiZW4tVVMiKSBhcmUg
YWNjZXB0ZWQsIHRvby4KLSAgICAgICAgfkNvbGxhdG9yKCk7Ci0gICAgICAgIHZvaWQgc2V0T3Jk
ZXJMb3dlckZpcnN0KGJvb2wpOworICAgICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgQ29sbGF0b3Io
Y29uc3QgY2hhciogbG9jYWxlKTsgLy8gUGFyc2luZyBpcyBsZW5pZW50OyBlLmcuIGxhbmd1YWdl
IGlkZW50aWZpZXJzIChzdWNoIGFzICJlbi1VUyIpIGFyZSBhY2NlcHRlZCwgdG9vLgorICAgICAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgfkNvbGxhdG9yKCk7CisgICAgICAgIFdURl9FWFBPUlRfUFJJ
VkFURSB2b2lkIHNldE9yZGVyTG93ZXJGaXJzdChib29sKTsKIAogICAgICAgICBzdGF0aWMgUGFz
c093blB0cjxDb2xsYXRvcj4gdXNlckRlZmF1bHQoKTsKIAotICAgICAgICBSZXN1bHQgY29sbGF0
ZShjb25zdCA6OlVDaGFyKiwgc2l6ZV90LCBjb25zdCA6OlVDaGFyKiwgc2l6ZV90KSBjb25zdDsK
KyAgICAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFJlc3VsdCBjb2xsYXRlKGNvbnN0IDo6VUNoYXIq
LCBzaXplX3QsIGNvbnN0IDo6VUNoYXIqLCBzaXplX3QpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToK
ICNpZiBVU0UoSUNVX1VOSUNPREUpICYmICFVQ09ORklHX05PX0NPTExBVElPTgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL1VURjguaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvdW5pY29kZS9VVEY4LmgKaW5kZXggYmQzZGQ4YTBhNTk1Mzc4N2EzZDll
M2ZmMTFlNTM0M2Q2YjQ5ODJhNS4uYmMyNDk3YjcyMzliMTk0NjZhYTkyOWVkMjIxNGNhNDk5YmRi
OTBhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL1VURjgu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvVVRGOC5oCkBAIC02Miw3
ICs2Miw3IEBAIG5hbWVzcGFjZSBVbmljb2RlIHsKICAgICAvLyB0byB0aGUgcmVwbGFjZW1lbnQg
Y2hhcmFjdGVyOyBvdGhlcndpc2UgKHdoZW4gdGhlIGZsYWcgaXMgc2V0IHRvIHN0cmljdCkKICAg
ICAvLyB0aGV5IGNvbnN0aXR1dGUgYW4gZXJyb3IuCiAKLSAgICBDb252ZXJzaW9uUmVzdWx0IGNv
bnZlcnRVVEY4VG9VVEYxNigKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgQ29udmVyc2lvblJlc3Vs
dCBjb252ZXJ0VVRGOFRvVVRGMTYoCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqKiBz
b3VyY2VTdGFydCwgY29uc3QgY2hhciogc291cmNlRW5kLCAKICAgICAgICAgICAgICAgICAgICAg
VUNoYXIqKiB0YXJnZXRTdGFydCwgVUNoYXIqIHRhcmdldEVuZCwgYm9vbCBzdHJpY3QgPSB0cnVl
KTsKIApAQCAtNzAsNyArNzAsNyBAQCBuYW1lc3BhY2UgVW5pY29kZSB7CiAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IExDaGFyKiogc291cmNlU3RhcnQsIGNvbnN0IExDaGFyKiBzb3VyY2VFbmQs
IAogICAgICAgICAgICAgICAgICAgICBjaGFyKiogdGFyZ2V0U3RhcnQsIGNoYXIqIHRhcmdldEVu
ZCk7CiAKLSAgICBDb252ZXJzaW9uUmVzdWx0IGNvbnZlcnRVVEYxNlRvVVRGOCgKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgQ29udmVyc2lvblJlc3VsdCBjb252ZXJ0VVRGMTZUb1VURjgoCiAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFVDaGFyKiogc291cmNlU3RhcnQsIGNvbnN0IFVDaGFyKiBz
b3VyY2VFbmQsIAogICAgICAgICAgICAgICAgICAgICBjaGFyKiogdGFyZ2V0U3RhcnQsIGNoYXIq
IHRhcmdldEVuZCwgYm9vbCBzdHJpY3QgPSB0cnVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3lhcnIvWWFyci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFy
ci5oCmluZGV4IDUwMWFmYWM1ZjU0Mzc1MWU3NDIyNzBiNDQ4M2M5OWZlN2RkNzdiMWYuLjM0OTVm
YzdlNGMzMGI5NDI3ODQ5MWQwOWQ3N2IzZDU5NzMzYzhhMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS95YXJyL1lhcnIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFy
ci9ZYXJyLmgKQEAgLTYyLDggKzYyLDggQEAgZW51bSBZYXJyQ2hhclNpemUgewogICAgIENoYXIx
NgogfTsKIAotUGFzc093blB0cjxCeXRlY29kZVBhdHRlcm4+IGJ5dGVDb21waWxlKFlhcnJQYXR0
ZXJuJiwgQnVtcFBvaW50ZXJBbGxvY2F0b3IqKTsKLWludCBpbnRlcnByZXQoQnl0ZWNvZGVQYXR0
ZXJuKiwgY29uc3QgVVN0cmluZyYgaW5wdXQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5n
dGgsIGludCogb3V0cHV0KTsKK0pTX0VYUE9SVF9QUklWQVRFIFBhc3NPd25QdHI8Qnl0ZWNvZGVQ
YXR0ZXJuPiBieXRlQ29tcGlsZShZYXJyUGF0dGVybiYsIEJ1bXBQb2ludGVyQWxsb2NhdG9yKik7
CitKU19FWFBPUlRfUFJJVkFURSBpbnQgaW50ZXJwcmV0KEJ5dGVjb2RlUGF0dGVybiosIGNvbnN0
IFVTdHJpbmcmIGlucHV0LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBpbnQqIG91
dHB1dCk7CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpZYXJyCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUveWFyci9ZYXJyUGF0dGVybi5oCmluZGV4IDJjYmI3OTU4NjU2ZTM1YTEwMWVkMTk2ZWIzNjMy
ZDcyMDhlNWRjMzEuLmEzMWRlZWU2NzI5NDY0NGU1ZGM0YWFkNGQ3YTA2YjA3M2IyMGI3OWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uaApAQCAtMzE2LDcgKzMxNiw3
IEBAIHN0cnVjdCBUZXJtQ2hhaW4gewogfTsKIAogc3RydWN0IFlhcnJQYXR0ZXJuIHsKLSAgICBZ
YXJyUGF0dGVybihjb25zdCBVU3RyaW5nJiBwYXR0ZXJuLCBib29sIGlnbm9yZUNhc2UsIGJvb2wg
bXVsdGlsaW5lLCBjb25zdCBjaGFyKiogZXJyb3IpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFlh
cnJQYXR0ZXJuKGNvbnN0IFVTdHJpbmcmIHBhdHRlcm4sIGJvb2wgaWdub3JlQ2FzZSwgYm9vbCBt
dWx0aWxpbmUsIGNvbnN0IGNoYXIqKiBlcnJvcik7CiAKICAgICB+WWFyclBhdHRlcm4oKQogICAg
IHsK
</data>
<flag name="commit-queue"
          id="115943"
          type_id="3"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121986</attachid>
            <date>2012-01-11 00:08:55 -0800</date>
            <delta_ts>2012-01-12 22:01:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72855-20120111170853.patch</filename>
            <type>text/plain</type>
            <size>138610</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0NjcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
MmNjZmZiMGY0MTA4MmNhYWUwMzMzMzBjNWM5MmI1NGM1NDcyM2RmLi5hMjllYTE2YjY0ZmJjMWZm
MWViZGQ4MjRjOTE4OWIwODNiZTkxZDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDIgQEAKKzIwMTItMDEtMTEgIEhhamltZSBNb3JyaXRhICA8bW9ycml0YUBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgSmF2YVNjcmlwdENvcmU6IE1hcmsgYWxsIGV4cG9ydGVkIHN5bWJv
bHMgaW4gdGhlIGhlYWRlciBmaWxlIGF1dG9tYXRpY2FsbHkuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mjg1NQorCisgICAgICAgIEFkZGVkIFdURl9F
WFBPUlRfUFJJVkFURSBhbmQgSlNfRVhQT1JUX1BSSVZBVEUgYmFzZWQgb24gSmF2YVNjcmlwdENv
cmUuZXhwIGZpbGVzLgorICAgICAgICBUaGUgY2hhbmdlIGlzIGdlbmVyYXRlZCBieSBhIHRvb2wg
Y2FsbGVkTGlzdEV4cG9ydGFibGVzIChodHRwczovL2dpdGh1Yi5jb20vb21vL0xpc3RFeHBvcnRh
YmxlcykKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IEFQSS9PcGFxdWVKU1N0cmluZy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgor
ICAgICAgICAqIGJ5dGVjb2RlL1NhbXBsaW5nVG9vbC5oOgorICAgICAgICAqIGRlYnVnZ2VyL0Rl
YnVnZ2VyLmg6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmg6CisgICAg
ICAgICogZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuaDoKKyAgICAgICAgKiBoZWFwL0FsbG9j
YXRpb25TcGFjZS5oOgorICAgICAgICAqIGhlYXAvSGFuZGxlSGVhcC5oOgorICAgICAgICAqIGhl
YXAvSGVhcC5oOgorICAgICAgICAqIGhlYXAvTWFjaGluZVN0YWNrTWFya2VyLmg6CisgICAgICAg
ICogaGVhcC9NYXJrU3RhY2suaDoKKyAgICAgICAgKiBoZWFwL1ZUYWJsZVNwZWN0cnVtLmg6Cisg
ICAgICAgICogaGVhcC9Xcml0ZUJhcnJpZXJTdXBwb3J0Lmg6CisgICAgICAgICogcGFyc2VyL05v
ZGVzLmg6CisgICAgICAgICogcGFyc2VyL1BhcnNlckFyZW5hLmg6CisgICAgICAgICogcHJvZmls
ZXIvUHJvZmlsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvQXJnTGlzdC5oOgorICAgICAgICAqIHJ1
bnRpbWUvQ2FsbERhdGEuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbXBsZXRpb24uaDoKKyAgICAg
ICAgKiBydW50aW1lL0NvbnN0cnVjdERhdGEuaDoKKyAgICAgICAgKiBydW50aW1lL0RhdGVJbnN0
YW5jZS5oOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3IuaDoKKyAgICAgICAgKiBydW50aW1lL0V4
Y2VwdGlvbkhlbHBlcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAg
ICAgKiBydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0lk
ZW50aWZpZXIuaDoKKyAgICAgICAgKiBydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaDoKKyAg
ICAgICAgKiBydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pT
QXJyYXkuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQnl0ZUFycmF5Lmg6CisgICAgICAgICogcnVu
dGltZS9KU0NlbGwuaDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsRGF0YS5jcHA6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbERh
dGEuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgICogcnVu
dGltZS9KU0dsb2JhbFRoaXMuaDoKKyAgICAgICAgKiBydW50aW1lL0pTTG9jay5oOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTU3RyaW5nLmg6Cisg
ICAgICAgICogcnVudGltZS9KU1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9KU1ZhcmlhYmxl
T2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9Mb29rdXAuaDoKKyAgICAgICAgKiBydW50aW1l
L01lbW9yeVN0YXRpc3RpY3MuaDoKKyAgICAgICAgKiBydW50aW1lL09iamVjdFByb3RvdHlwZS5o
OgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5oOgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVy
dHlEZXNjcmlwdG9yLmg6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oOgor
ICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlTbG90Lmg6CisgICAgICAgICogcnVudGltZS9SZWdF
eHAuaDoKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRp
bWUvU2FtcGxpbmdDb3VudGVyLmg6CisgICAgICAgICogcnVudGltZS9TbWFsbFN0cmluZ3MuaDoK
KyAgICAgICAgKiBydW50aW1lL1N0cmluZ09iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvU3Ry
dWN0dXJlLmg6CisgICAgICAgICogcnVudGltZS9UaW1lb3V0Q2hlY2tlci5oOgorICAgICAgICAq
IHJ1bnRpbWUvVVN0cmluZy5oOgorICAgICAgICAqIHJ1bnRpbWUvV3JpdGVCYXJyaWVyLmg6Cisg
ICAgICAgICogd3RmL0FycmF5QnVmZmVyVmlldy5oOgorICAgICAgICAqIHd0Zi9CeXRlQXJyYXku
aDoKKyAgICAgICAgKiB3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaDoKKyAgICAg
ICAgKiB3dGYvQ3VycmVudFRpbWUuaDoKKyAgICAgICAgKiB3dGYvRGF0ZU1hdGguaDoKKyAgICAg
ICAgKiB3dGYvRGVjaW1hbE51bWJlci5oOgorICAgICAgICAqIHd0Zi9GYXN0TWFsbG9jLmNwcDoK
KyAgICAgICAgKiB3dGYvRmFzdE1hbGxvYy5oOgorICAgICAgICAqIHd0Zi9NRDUuaDoKKyAgICAg
ICAgKiB3dGYvTWFpblRocmVhZC5oOgorICAgICAgICAqIHd0Zi9NZXRhQWxsb2NhdG9yLmg6Cisg
ICAgICAgICogd3RmL01ldGFBbGxvY2F0b3JIYW5kbGUuaDoKKyAgICAgICAgKiB3dGYvT1NBbGxv
Y2F0b3IuaDoKKyAgICAgICAgKiB3dGYvUGFnZUJsb2NrLmg6CisgICAgICAgICogd3RmL1JhbmRv
bU51bWJlci5oOgorICAgICAgICAqIHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaDoKKyAgICAg
ICAgKiB3dGYvU0hBMS5oOgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmcuY3BwOgorICAgICAgICAq
IHd0Zi9UaHJlYWRpbmcuaDoKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oOgor
ICAgICAgICAqIHd0Zi9XVEZUaHJlYWREYXRhLmg6CisgICAgICAgICogd3RmL2R0b2EuaDoKKyAg
ICAgICAgKiB3dGYvdGV4dC9BdG9taWNTdHJpbmcuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9DU3Ry
aW5nLmg6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oOgorICAgICAgICAqIHd0
Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuaDoKKyAg
ICAgICAgKiB3dGYvdW5pY29kZS9Db2xsYXRvci5oOgorICAgICAgICAqIHd0Zi91bmljb2RlL1VU
RjguaDoKKyAgICAgICAgKiB5YXJyL1lhcnIuaDoKKyAgICAgICAgKiB5YXJyL1lhcnJQYXR0ZXJu
Lmg6CisKIDIwMTItMDEtMTAgIEhhamltZSBNb3JyaXRhICA8bW9ycml0YUBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgW01hY10gZWxpbWluYXRlIEphdmFTY3JpcHRDb3JlLmV4cApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmluZy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmluZy5oCmluZGV4IDVjMjRmNzUxMDFmYjdiMWZk
YWMzODJmNjhhNDM3MzFlNzRjNTNhZjkuLjFjNjMxNTBjZjE1NGU3MWM4ZTNhOTZmNDdlYmViZDg2
Zjg4Mjc5NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT3BhcXVlSlNT
dHJpbmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09wYXF1ZUpTU3RyaW5nLmgK
QEAgLTQ2LDcgKzQ2LDcgQEAgc3RydWN0IE9wYXF1ZUpTU3RyaW5nIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPE9wYXF1ZUpTU3RyaW5nPiB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgT3BhcXVlSlNTdHJpbmcoY2hhcmFjdGVycywgbGVuZ3RoKSk7CiAgICAgfQogCi0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8T3BhcXVlSlNTdHJpbmc+IGNyZWF0ZShjb25zdCBKU0M6OlVTdHJpbmcm
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxPcGFxdWVKU1N0cmlu
Zz4gY3JlYXRlKGNvbnN0IEpTQzo6VVN0cmluZyYpOwogCiAgICAgVUNoYXIqIGNoYXJhY3RlcnMo
KSB7IHJldHVybiB0aGlzID8gbV9jaGFyYWN0ZXJzIDogMDsgfQogICAgIHVuc2lnbmVkIGxlbmd0
aCgpIHsgcmV0dXJuIHRoaXMgPyBtX2xlbmd0aCA6IDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCBjNDQwYzcyZTFlZjAxYjMxZGJlZDkxZWVkZjEz
YmUxMTM1MDBkNTBmLi5mZGYzOGM2N2YwNDMyY2U2ZmFhN2U2YzlmZjVjNTkwZjMxMGY5OTJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC05NCw3ICs5
NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBIZWFwKiBtX2hlYXA7CiAKICAgICBwdWJs
aWM6Ci0gICAgICAgIHZpcnR1YWwgfkNvZGVCbG9jaygpOworICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSB2aXJ0dWFsIH5Db2RlQmxvY2soKTsKICAgICAgICAgCiAgICAgICAgIGludCBudW1QYXJh
bWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9udW1QYXJhbWV0ZXJzOyB9CiAgICAgICAgIHZvaWQg
c2V0TnVtUGFyYW1ldGVycyhpbnQgbmV3VmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1NhbXBsaW5nVG9vbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1NhbXBsaW5nVG9vbC5oCmluZGV4IGI2OWVmMDI2ZWE5N2UwNmNjYTM3MWMyNTM5
OTZhNjFiMjg3ODdjMzAuLjMyYTQ0YWQ2OTc4NjQyNDQ4YzRiZWQ1NTRhY2U4YjZlYWRhNGVlOTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TYW1wbGluZ1Rvb2wu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmgKQEAg
LTQ1LDggKzQ1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBTYW1wbGluZ0ZsYWdz
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyB2b2lkIHN0YXJ0KCk7Ci0gICAgICAgIHN0
YXRpYyB2b2lkIHN0b3AoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQg
c3RhcnQoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgc3RvcCgpOwog
CiAjaWYgRU5BQkxFKFNBTVBMSU5HX0ZMQUdTKQogICAgICAgICBzdGF0aWMgdm9pZCBzZXRGbGFn
KHVuc2lnbmVkIGZsYWcpCkBAIC04OSw3ICs4OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAjZW5k
aWYKICAgICBwcml2YXRlOgotICAgICAgICBzdGF0aWMgdWludDMyX3Qgc19mbGFnczsKKyAgICAg
ICAgSlNfRVhQT1JUREFUQSBzdGF0aWMgdWludDMyX3Qgc19mbGFnczsKICNpZiBFTkFCTEUoU0FN
UExJTkdfRkxBR1MpCiAgICAgICAgIHN0YXRpYyB1aW50NjRfdCBzX2ZsYWdDb3VudHNbMzNdOwog
I2VuZGlmCkBAIC0xNzQsNyArMTc0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgU2Ft
cGxpbmdSZWdpb24gewogICAgIHB1YmxpYzoKICAgICAgICAgU2FtcGxpbmdSZWdpb24oY29uc3Qg
Y2hhciopIHsgfQotICAgICAgICB2b2lkIGR1bXAoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgdm9pZCBkdW1wKCk7CiAgICAgfTsKICNlbmRpZiAvLyBFTkFCTEUoU0FNUExJTkdfUkVHSU9O
UykKIApAQCAtMjIwLDggKzIyMCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMg
dW5zaWduZWQgc19oZXJ0ejsKICAgICAgICAgc3RhdGljIFRocmVhZElkZW50aWZpZXIgc19zYW1w
bGluZ1RocmVhZDsKIAotICAgICAgICBzdGF0aWMgdm9pZCBzdGFydCh1bnNpZ25lZCBoZXJ0ej0x
MDAwMCk7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHN0b3AoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIHZvaWQgc3RhcnQodW5zaWduZWQgaGVydHo9MTAwMDApOworICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBzdG9wKCk7CiAKICAgICAgICAgc3RhdGljIHZv
aWQqIHRocmVhZFN0YXJ0RnVuYyh2b2lkKik7CiAgICAgfTsKQEAgLTI5NCw3ICsyOTQsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIG1lbXNldChtX29wY29kZVNhbXBsZXNJbkNUSUZ1
bmN0aW9ucywgMCwgc2l6ZW9mKG1fb3Bjb2RlU2FtcGxlc0luQ1RJRnVuY3Rpb25zKSk7CiAgICAg
ICAgIH0KIAotICAgICAgICB2b2lkIHNldHVwKCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IHZvaWQgc2V0dXAoKTsKICAgICAgICAgdm9pZCBkdW1wKEV4ZWNTdGF0ZSopOwogCiAgICAgICAg
IHZvaWQgbm90aWZ5T2ZTY29wZShKU0dsb2JhbERhdGEmLCBTY3JpcHRFeGVjdXRhYmxlKiBzY29w
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCmluZGV4IGY0ODI0
M2M0NTRhYzM5NGYwZGZiOGNhYjAzZDI5N2JkMjRlZmMxOGUuLmEyMzczMjkxODc4MDNlZGE5NTdh
MzdkM2EwYTkwN2FmZjBiODkyMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZWJ1Z2dlci9EZWJ1Z2dlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9E
ZWJ1Z2dlci5oCkBAIC01OCw3ICs1OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH07CiAKICAg
ICAvLyBUaGlzIGZ1bmN0aW9uIGV4aXN0cyBvbmx5IGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0
eSB3aXRoIGV4aXN0aW5nIFdlYlNjcmlwdERlYnVnZ2VyIGNsaWVudHMuCi0gICAgSlNWYWx1ZSBl
dmFsdWF0ZUluR2xvYmFsQ2FsbEZyYW1lKGNvbnN0IFVTdHJpbmcmLCBKU1ZhbHVlJiBleGNlcHRp
b24sIEpTR2xvYmFsT2JqZWN0Kik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBldmFs
dWF0ZUluR2xvYmFsQ2FsbEZyYW1lKGNvbnN0IFVTdHJpbmcmLCBKU1ZhbHVlJiBleGNlcHRpb24s
IEpTR2xvYmFsT2JqZWN0Kik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmgKaW5kZXggYzI4
ZDBiM2EyM2JhNzlhZGNlMmY4NTM3ZmFkODRmYTQxN2E4NjdhNi4uNjZlODNlMWY1MjQ4MmI1ZTFh
Y2NiY2I3M2ZhNTNjMjI5MDk0ZGFhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaApAQCAtNTIsNyArNTIsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgc3RhdGljIHZvaWQgZGVmaW5lR2V0dGVyKEpTT2JqZWN0KiwgRXhl
Y1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU09iamVjdCogZ2V0dGVy
RnVuY3Rpb24sIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgICAgICBzdGF0aWMgdm9pZCBkZWZp
bmVTZXR0ZXIoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIEpTT2JqZWN0KiBzZXR0ZXJGdW5jdGlvbiwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAK
LSAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CisgICAgICAgIEpTX0VYUE9S
VERBVEEgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKICAgICAgICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpIAogICAgICAgICB7CkBA
IC02MiwxMCArNjIsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJvdGVjdGVkOgogICAgICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Q
cm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgSlNPYmplY3Q6OlN0cnVjdHVy
ZUZsYWdzOwogCi0gICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiwgSlNP
YmplY3QqIGFjdGl2YXRpb24pOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbmlz
aENyZWF0aW9uKEpTR2xvYmFsRGF0YSYsIEpTT2JqZWN0KiBhY3RpdmF0aW9uKTsKIAogICAgIHBy
aXZhdGU6Ci0gICAgICAgIERlYnVnZ2VyQWN0aXZhdGlvbihKU0dsb2JhbERhdGEmKTsKKyAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgRGVidWdnZXJBY3RpdmF0aW9uKEpTR2xvYmFsRGF0YSYpOwog
ICAgICAgICBXcml0ZUJhcnJpZXI8SlNBY3RpdmF0aW9uPiBtX2FjdGl2YXRpb247CiAgICAgfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2Fs
bEZyYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJh
bWUuaAppbmRleCBkOGZiOWRhZTU4ODQyNjc1NGIwZjQ5NTQ4NDU2MzkyNTY1NWQzMzdiLi44NjA1
YWY1NGQzZmE0NGYyYzViZTIyMjk5ODEyODIzMDk1NjBhNTdkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuaApAQCAtNTAsNyArNTAs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBKU0dsb2JhbE9iamVjdCogZHluYW1pY0ds
b2JhbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbEZyYW1lLT5keW5hbWljR2xvYmFsT2Jq
ZWN0KCk7IH0KICAgICAgICAgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4oKSBjb25zdCB7IHJl
dHVybiBtX2NhbGxGcmFtZS0+c2NvcGVDaGFpbigpOyB9Ci0gICAgICAgIGNvbnN0IFVTdHJpbmcq
IGZ1bmN0aW9uTmFtZSgpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBjb25zdCBV
U3RyaW5nKiBmdW5jdGlvbk5hbWUoKSBjb25zdDsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
VVN0cmluZyBjYWxjdWxhdGVkRnVuY3Rpb25OYW1lKCkgY29uc3Q7CiAgICAgICAgIEpTX0VYUE9S
VF9QUklWQVRFIFR5cGUgdHlwZSgpIGNvbnN0OwogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBK
U09iamVjdCogdGhpc09iamVjdCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvQWxsb2NhdGlvblNwYWNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9BbGxvY2F0aW9uU3BhY2UuaAppbmRleCA1NTBjYjlhYTNiMDQ2Y2M4Yzc0NmRmYjAyNzk5NThi
ZGZiOTQ0MjEyLi4wMWMzMzliODM2MGFmMzM2YzI3ZjM5ZjA5ZGIzMzI4MTY3OGM4ZjNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0aW9uU3BhY2UuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0aW9uU3BhY2UuaApAQCAtNzIsNyAr
NzIsNyBAQCBwcml2YXRlOgogICAgIAogICAgIHZvaWQqIGFsbG9jYXRlKE1hcmtlZFNwYWNlOjpT
aXplQ2xhc3MmKTsKICAgICB2b2lkKiB0cnlBbGxvY2F0ZShNYXJrZWRTcGFjZTo6U2l6ZUNsYXNz
Jik7Ci0gICAgdm9pZCogYWxsb2NhdGVTbG93Q2FzZShNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzJik7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCogYWxsb2NhdGVTbG93Q2FzZShNYXJrZWRTcGFj
ZTo6U2l6ZUNsYXNzJik7CiAgICAgTWFya2VkQmxvY2sqIGFsbG9jYXRlQmxvY2soc2l6ZV90IGNl
bGxTaXplLCBBbGxvY2F0aW9uRWZmb3J0KTsKICAgICAKICAgICBIZWFwKiBtX2hlYXA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGVIZWFwLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGVIZWFwLmgKaW5kZXggYzU3Nzc5MWQ4ODY0ZGQxMTEy
MmZkMjUwMmU1MDdjZDJmMDQ3NDdiZC4uM2I5ZGIzN2EyZTdiODM2ZDU1NjgwNzY0YjZkNzM2ZmE5
ZTNkOGEzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlSGVh
cC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZUhlYXAuaApAQCAtNDAs
NyArNDAsNyBAQCBjbGFzcyBKU0dsb2JhbERhdGE7CiBjbGFzcyBKU1ZhbHVlOwogY2xhc3MgU2xv
dFZpc2l0b3I7CiAKLWNsYXNzIFdlYWtIYW5kbGVPd25lciB7CitjbGFzcyBKU19FWFBPUlRfUFJJ
VkFURSBXZWFrSGFuZGxlT3duZXIgewogcHVibGljOgogICAgIHZpcnR1YWwgfldlYWtIYW5kbGVP
d25lcigpOwogICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhIYW5k
bGU8VW5rbm93bj4sIHZvaWQqIGNvbnRleHQsIFNsb3RWaXNpdG9yJik7CkBAIC02NSw3ICs2NSw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHZpc2l0V2Vha0hhbmRsZXMoSGVhcFJvb3RWaXNpdG9yJik7
CiAgICAgdm9pZCBmaW5hbGl6ZVdlYWtIYW5kbGVzKCk7CiAKLSAgICB2b2lkIHdyaXRlQmFycmll
cihIYW5kbGVTbG90LCBjb25zdCBKU1ZhbHVlJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9p
ZCB3cml0ZUJhcnJpZXIoSGFuZGxlU2xvdCwgY29uc3QgSlNWYWx1ZSYpOwogCiAjaWYgIUFTU0VS
VF9ESVNBQkxFRAogICAgIGJvb2wgaGFzV2Vha093bmVyKEhhbmRsZVNsb3QsIFdlYWtIYW5kbGVP
d25lciopOwpAQCAtMTExLDcgKzExMSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIEhhbmRsZVNs
b3QgdG9IYW5kbGUoTm9kZSopOwogICAgIHN0YXRpYyBOb2RlKiB0b05vZGUoSGFuZGxlU2xvdCk7
CiAKLSAgICB2b2lkIGdyb3coKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGdyb3coKTsK
ICAgICAKICNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikgfHwgIUFTU0VSVF9ESVNBQkxFRAogICAg
IGJvb2wgaXNWYWxpZFdlYWtOb2RlKE5vZGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaApp
bmRleCAxYjIyODI1M2I4NzY2NjBmYTMwZWVlYmQwMjY0ZWM0YmZjZmFlMTA1Li4zYzc4ZDYyMGZh
ZTQ5NmIzNDEyY2ZjYjFlYzI1MmFhNzkwMWZhNDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cC5oCkBAIC03OCwxNCArNzgsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgSGVhcChK
U0dsb2JhbERhdGEqLCBIZWFwU2l6ZSk7CiAgICAgICAgIH5IZWFwKCk7Ci0gICAgICAgIHZvaWQg
ZGVzdHJveSgpOyAvLyBKU0dsb2JhbERhdGEgbXVzdCBjYWxsIGRlc3Ryb3koKSBiZWZvcmUgfkhl
YXAoKS4KKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkZXN0cm95KCk7IC8vIEpTR2xv
YmFsRGF0YSBtdXN0IGNhbGwgZGVzdHJveSgpIGJlZm9yZSB+SGVhcCgpLgogCiAgICAgICAgIEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsRGF0YTsgfQog
ICAgICAgICBBbGxvY2F0aW9uU3BhY2UmIG9iamVjdFNwYWNlKCkgeyByZXR1cm4gbV9vYmplY3RT
cGFjZTsgfQogICAgICAgICBNYWNoaW5lVGhyZWFkcyYgbWFjaGluZVRocmVhZHMoKSB7IHJldHVy
biBtX21hY2hpbmVUaHJlYWRzOyB9CiAKLSAgICAgICAgR0NBY3Rpdml0eUNhbGxiYWNrKiBhY3Rp
dml0eUNhbGxiYWNrKCk7Ci0gICAgICAgIHZvaWQgc2V0QWN0aXZpdHlDYWxsYmFjayhQYXNzT3du
UHRyPEdDQWN0aXZpdHlDYWxsYmFjaz4pOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBHQ0Fj
dGl2aXR5Q2FsbGJhY2sqIGFjdGl2aXR5Q2FsbGJhY2soKTsKKyAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgdm9pZCBzZXRBY3Rpdml0eUNhbGxiYWNrKFBhc3NPd25QdHI8R0NBY3Rpdml0eUNhbGxi
YWNrPik7CiAKICAgICAgICAgLy8gdHJ1ZSBpZiBhbiBhbGxvY2F0aW9uIG9yIGNvbGxlY3Rpb24g
aXMgaW4gcHJvZ3Jlc3MKICAgICAgICAgaW5saW5lIGJvb2wgaXNCdXN5KCk7CkBAIC05NCwyNiAr
OTQsMjYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQqIGFsbG9jYXRlKHNpemVfdCk7
CiAKICAgICAgICAgdHlwZWRlZiB2b2lkICgqRmluYWxpemVyKShKU0NlbGwqKTsKLSAgICAgICAg
dm9pZCBhZGRGaW5hbGl6ZXIoSlNDZWxsKiwgRmluYWxpemVyKTsKKyAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgdm9pZCBhZGRGaW5hbGl6ZXIoSlNDZWxsKiwgRmluYWxpemVyKTsKIAogICAgICAg
ICB2b2lkIG5vdGlmeUlzU2FmZVRvQ29sbGVjdCgpIHsgbV9pc1NhZmVUb0NvbGxlY3QgPSB0cnVl
OyB9Ci0gICAgICAgIHZvaWQgY29sbGVjdEFsbEdhcmJhZ2UoKTsKKyAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgdm9pZCBjb2xsZWN0QWxsR2FyYmFnZSgpOwogCiAgICAgICAgIHZvaWQgcmVwb3J0
RXh0cmFNZW1vcnlDb3N0KHNpemVfdCBjb3N0KTsKIAotICAgICAgICB2b2lkIHByb3RlY3QoSlNW
YWx1ZSk7Ci0gICAgICAgIGJvb2wgdW5wcm90ZWN0KEpTVmFsdWUpOyAvLyBUcnVlIHdoZW4gdGhl
IHByb3RlY3QgY291bnQgZHJvcHMgdG8gMC4KKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBwcm90ZWN0KEpTVmFsdWUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHVucHJv
dGVjdChKU1ZhbHVlKTsgLy8gVHJ1ZSB3aGVuIHRoZSBwcm90ZWN0IGNvdW50IGRyb3BzIHRvIDAu
CiAgICAgICAgIAogICAgICAgICB2b2lkIGpldHRpc29uREZHQ29kZUJsb2NrKFBhc3NPd25QdHI8
Q29kZUJsb2NrPik7CiAKLSAgICAgICAgc2l6ZV90IHNpemUoKTsKLSAgICAgICAgc2l6ZV90IGNh
cGFjaXR5KCk7Ci0gICAgICAgIHNpemVfdCBvYmplY3RDb3VudCgpOwotICAgICAgICBzaXplX3Qg
Z2xvYmFsT2JqZWN0Q291bnQoKTsKLSAgICAgICAgc2l6ZV90IHByb3RlY3RlZE9iamVjdENvdW50
KCk7Ci0gICAgICAgIHNpemVfdCBwcm90ZWN0ZWRHbG9iYWxPYmplY3RDb3VudCgpOwotICAgICAg
ICBQYXNzT3duUHRyPFR5cGVDb3VudFNldD4gcHJvdGVjdGVkT2JqZWN0VHlwZUNvdW50cygpOwot
ICAgICAgICBQYXNzT3duUHRyPFR5cGVDb3VudFNldD4gb2JqZWN0VHlwZUNvdW50cygpOworICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSBzaXplX3Qgc2l6ZSgpOworICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBzaXplX3QgY2FwYWNpdHkoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc2l6
ZV90IG9iamVjdENvdW50KCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBnbG9i
YWxPYmplY3RDb3VudCgpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzaXplX3QgcHJvdGVj
dGVkT2JqZWN0Q291bnQoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IHByb3Rl
Y3RlZEdsb2JhbE9iamVjdENvdW50KCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFBhc3NP
d25QdHI8VHlwZUNvdW50U2V0PiBwcm90ZWN0ZWRPYmplY3RUeXBlQ291bnRzKCk7CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIFBhc3NPd25QdHI8VHlwZUNvdW50U2V0PiBvYmplY3RUeXBlQ291
bnRzKCk7CiAKICAgICAgICAgdm9pZCBwdXNoVGVtcFNvcnRWZWN0b3IoVmVjdG9yPFZhbHVlU3Ry
aW5nUGFpcj4qKTsKICAgICAgICAgdm9pZCBwb3BUZW1wU29ydFZlY3RvcihWZWN0b3I8VmFsdWVT
dHJpbmdQYWlyPiopOwpAQCAtMTQxLDggKzE0MSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAgICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEhhbmRsZTxVbmtub3duPiwgdm9pZCogY29udGV4
dCk7CiAgICAgICAgIH07CiAKLSAgICAgICAgYm9vbCBpc1ZhbGlkQWxsb2NhdGlvbihzaXplX3Qp
OwotICAgICAgICB2b2lkIHJlcG9ydEV4dHJhTWVtb3J5Q29zdFNsb3dDYXNlKHNpemVfdCk7Cisg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNWYWxpZEFsbG9jYXRpb24oc2l6ZV90KTsK
KyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCByZXBvcnRFeHRyYU1lbW9yeUNvc3RTbG93
Q2FzZShzaXplX3QpOwogCiAgICAgICAgIC8vIENhbGwgdGhpcyBmdW5jdGlvbiBiZWZvcmUgYW55
IG9wZXJhdGlvbiB0aGF0IG5lZWRzIHRvIGtub3cgd2hpY2ggY2VsbHMKICAgICAgICAgLy8gaW4g
dGhlIGhlYXAgYXJlIGxpdmUuIChGb3IgZXhhbXBsZSwgY2FsbCB0aGlzIGZ1bmN0aW9uIGJlZm9y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFy
a2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuaApp
bmRleCA2OWM0NTM3YmRhYmVmNjRiZDNmMDA4OGIxZTRlNjg0ZTkyZmViZTJkLi4wZjVhNGMzYWEy
ZWYwZDY1YTEwOGQzMTA5ZGQ3NGRkYmJhY2FmMWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuaApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgdm9pZCBnYXRoZXJDb25zZXJ2YXRpdmVSb290cyhDb25zZXJ2YXRp
dmVSb290cyYsIHZvaWQqIHN0YWNrQ3VycmVudCk7CiAKICAgICAgICAgdm9pZCBtYWtlVXNhYmxl
RnJvbU11bHRpcGxlVGhyZWFkcygpOwotICAgICAgICB2b2lkIGFkZEN1cnJlbnRUaHJlYWQoKTsg
Ly8gT25seSBuZWVkcyB0byBiZSBjYWxsZWQgYnkgY2xpZW50cyB0aGF0IGNhbiB1c2UgdGhlIHNh
bWUgaGVhcCBmcm9tIG11bHRpcGxlIHRocmVhZHMuCisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IHZvaWQgYWRkQ3VycmVudFRocmVhZCgpOyAvLyBPbmx5IG5lZWRzIHRvIGJlIGNhbGxlZCBieSBj
bGllbnRzIHRoYXQgY2FuIHVzZSB0aGUgc2FtZSBoZWFwIGZyb20gbXVsdGlwbGUgdGhyZWFkcy4K
IAogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgZ2F0aGVyRnJvbUN1cnJlbnRUaHJlYWQoQ29u
c2VydmF0aXZlUm9vdHMmLCB2b2lkKiBzdGFja0N1cnJlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYXJrU3RhY2suaAppbmRleCAxNDc4MDExZDk0MTdhMWY1MzNmZTU1YTgwNmFkYWUyOWZi
ZDM4NTg5Li45NTYyMDkwZDBmOWNhZWIxMDU1NGIzOGY2NWM2YmM0ZTMyNzhhYjZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suaApAQCAtMTExLDcgKzExMSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIHByaXZhdGU6CiAgICAgICAgIE1hcmtTdGFja1NlZ21lbnQqIG1fdG9w
U2VnbWVudDsKICAgICAgICAgCi0gICAgICAgIHZvaWQgZXhwYW5kKCk7CisgICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIHZvaWQgZXhwYW5kKCk7CiAgICAgICAgIAogICAgICAgICBNYXJrU3RhY2tT
ZWdtZW50QWxsb2NhdG9yJiBtX2FsbG9jYXRvcjsKIApAQCAtMjQxLDcgKzI0MSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHN0YXRpYyB2
b2lkIHZhbGlkYXRlKEpTQ2VsbCopOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
dm9pZCB2YWxpZGF0ZShKU0NlbGwqKTsKIAogICAgICAgICB2b2lkIGFwcGVuZChKU1ZhbHVlKik7
CiAgICAgICAgIHZvaWQgYXBwZW5kKEpTVmFsdWUqLCBzaXplX3QgY291bnQpOwpAQCAtMjUwLDcg
KzI1MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGludGVybmFsQXBwZW5kKEpT
Q2VsbCopOwogICAgICAgICB2b2lkIGludGVybmFsQXBwZW5kKEpTVmFsdWUpOwogICAgICAgICAK
LSAgICAgICAgdm9pZCBtZXJnZU9wYXF1ZVJvb3RzKCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgbWVyZ2VPcGFxdWVSb290cygpOwogICAgICAgICAKICAgICAgICAgdm9pZCBtZXJn
ZU9wYXF1ZVJvb3RzSWZOZWNlc3NhcnkoKQogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9WVGFibGVTcGVjdHJ1bS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvVlRhYmxlU3BlY3RydW0uaAppbmRleCA4YTk3MzdlOWJhYmZjMzBkNDFhMWYzMjBl
YWJhOWZkNDA1NzZmMWY2Li5hNTBhMDRmNDc3Y2ZkZGIwYjYzNWY1MWQyODM0NjI1MDhkNjM3NTcz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9WVGFibGVTcGVjdHJ1bS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1ZUYWJsZVNwZWN0cnVtLmgKQEAgLTM5
LDcgKzM5LDcgQEAgcHVibGljOgogICAgIH5WVGFibGVTcGVjdHJ1bSgpOwogICAgIAogICAgIHZv
aWQgY291bnRWUHRyKHZvaWQqKTsKLSAgICB2b2lkIGNvdW50KEpTQ2VsbCopOworICAgIEpTX0VY
UE9SVF9QUklWQVRFIHZvaWQgY291bnQoSlNDZWxsKik7CiAgICAgCiAgICAgdm9pZCBkdW1wKEZJ
TEUqIG91dHB1dCwgY29uc3QgY2hhciogY29tbWVudCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvV3JpdGVCYXJyaWVyU3VwcG9ydC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvV3JpdGVCYXJyaWVyU3VwcG9ydC5oCmluZGV4IDAwYjliYjk3ZmU1Y2Fm
MWViOWQ5ZGI2ODllYWU4ZjM0ZGNhMGE0NmEuLjVkN2QyZjZmZTE1Y2E5NjU5M2RlYjk5MjZjNGYw
ZDdlMWMyOTY2ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dyaXRl
QmFycmllclN1cHBvcnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Xcml0ZUJh
cnJpZXJTdXBwb3J0LmgKQEAgLTgxLDggKzgxLDggQEAgcHVibGljOgogICAgIH0KICNlbHNlCiAg
ICAgLy8gVGhlc2UgYXJlIG5lY2Vzc2FyeSB0byB3b3JrIGFyb3VuZCBub3QgaGF2aW5nIGNvbmRp
dGlvbmFsIGV4cG9ydHMuCi0gICAgc3RhdGljIGNoYXIgdXNlc1dpdGhCYXJyaWVyRnJvbUNwcDsK
LSAgICBzdGF0aWMgY2hhciB1c2VzV2l0aG91dEJhcnJpZXJGcm9tQ3BwOworICAgIEpTX0VYUE9S
VERBVEEgc3RhdGljIGNoYXIgdXNlc1dpdGhCYXJyaWVyRnJvbUNwcDsKKyAgICBKU19FWFBPUlRE
QVRBIHN0YXRpYyBjaGFyIHVzZXNXaXRob3V0QmFycmllckZyb21DcHA7CiAjZW5kaWYgLy8gRU5B
QkxFKFdSSVRFX0JBUlJJRVJfUFJPRklMSU5HKQogCiAgICAgc3RhdGljIHZvaWQgY291bnRXcml0
ZUJhcnJpZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4IDIzZjJjZGU5
Yzk1NGVlNjY1MTY2NzY3YTA5ZDlkMTk0OTM3OGZjNWIuLjUwOThkYzc2YzdiMjg0OWM5NmU3Zjg3
NDZkZmQ5MTY1OGE2ODA5ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAg
LTE4MSw3ICsxODEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3RhdGVtZW50Tm9kZShp
bnQpOwogCiAgICAgcHVibGljOgotICAgICAgICB2b2lkIHNldExvYyhpbnQgZmlyc3RMaW5lLCBp
bnQgbGFzdExpbmUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldExvYyhpbnQg
Zmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpOwogICAgICAgICBpbnQgZmlyc3RMaW5lKCkgY29uc3Qg
eyByZXR1cm4gbGluZU5vKCk7IH0KICAgICAgICAgaW50IGxhc3RMaW5lKCkgY29uc3QgeyByZXR1
cm4gbV9sYXN0TGluZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlckFyZW5hLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFy
ZW5hLmgKaW5kZXggMzU2NzRiNjA0ZmYyZjNjNDY4MzhkZDM4MmY1NzUwN2E3MGI4ODgwNi4uNDlm
MGFiNmJmODQyMmI4OTA1NzlhMGI4NGQwNzIzYWY2NDYzMDg2OCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaApAQCAtMTU5LDcgKzE1OSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB2b2lkIHJlbW92ZUxhc3QoKTsKIAogICAgICAgICBib29sIGlzRW1w
dHkoKSBjb25zdDsKLSAgICAgICAgdm9pZCByZXNldCgpOworICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkIHJlc2V0KCk7CiAKICAgICAgICAgSWRlbnRpZmllckFyZW5hJiBpZGVudGlmaWVy
QXJlbmEoKSB7IHJldHVybiAqbV9pZGVudGlmaWVyQXJlbmE7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wcm9maWxlci9Qcm9maWxlLmgKaW5kZXggNmJmMjlmN2E2Zjg4YjlhZTRlZWUzZWQ2Nzk3
NjAyMGYxZWIyN2YwZi4uOTQ1NWUzNTk1MDMyZjJjM2Q5YzUyYTA4MDk1ZDU0YWM5OTg2ZWEwZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZS5oCkBAIC00NCwxMSArNDQs
MTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGRvdWJsZSB0b3RhbFRpbWUoKSBjb25zdCB7
IHJldHVybiBtX2hlYWQtPnRvdGFsVGltZSgpOyB9CiAgICAgICAgIHVuc2lnbmVkIGludCB1aWQo
KSBjb25zdCB7IHJldHVybiBtX3VpZDsgfQogCi0gICAgICAgIHZvaWQgZm9yRWFjaCh2b2lkIChQ
cm9maWxlTm9kZTo6KikoKSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZm9yRWFj
aCh2b2lkIChQcm9maWxlTm9kZTo6KikoKSk7CiAKLSAgICAgICAgdm9pZCBmb2N1cyhjb25zdCBQ
cm9maWxlTm9kZSopOwotICAgICAgICB2b2lkIGV4Y2x1ZGUoY29uc3QgUHJvZmlsZU5vZGUqKTsK
LSAgICAgICAgdm9pZCByZXN0b3JlQWxsKCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZv
aWQgZm9jdXMoY29uc3QgUHJvZmlsZU5vZGUqKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCBleGNsdWRlKGNvbnN0IFByb2ZpbGVOb2RlKik7CisgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgcmVzdG9yZUFsbCgpOwogCiAjaWZuZGVmIE5ERUJVRwogICAgICAgICB2b2lkIGRl
YnVnUHJpbnREYXRhKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcmdMaXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0
LmgKaW5kZXggYWM1YTRmMjcxNWJkM2MzZDMwZDBiYmY3MDRhYWQwMjJjMjVkZGQxZS4uMTUxMmEw
ZmExNTIyZWQwMTVjZDUyMjYwNWM4MGY3M2UzOGJlOGYzNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FyZ0xpc3QuaApAQCAtMTAyLDcgKzEwMiw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBzdGF0aWMgdm9pZCBtYXJrTGlzdHMoSGVhcFJvb3RWaXNpdG9yJiwgTGlzdFNldCYp
OwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCBzbG93QXBwZW5kKEpTVmFsdWUpOworICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNsb3dBcHBlbmQoSlNWYWx1ZSk7CiAgICAgICAg
IAogICAgICAgICBFbmNvZGVkSlNWYWx1ZSYgc2xvdEZvcihpbnQgaXRlbSkgY29uc3QKICAgICAg
ICAgewpAQCAtMTcxLDcgKzE3MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIGlz
RW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9hcmdDb3VudDsgfQogICAgICAgICBzaXplX3Qgc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXJnQ291bnQ7IH0KICAgICAgICAgCi0gICAgICAgIHZvaWQg
Z2V0U2xpY2UoaW50IHN0YXJ0SW5kZXgsIEFyZ0xpc3QmIHJlc3VsdCkgY29uc3Q7CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZ2V0U2xpY2UoaW50IHN0YXJ0SW5kZXgsIEFyZ0xpc3Qm
IHJlc3VsdCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgogICAgICAgICBKU1ZhbHVlKiBtX2FyZ3M7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWxsRGF0YS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuaAppbmRleCBiMTM4ZjU0ODQw
NWMyNGZhM2M1OWYxNTgzOGY5MDg2NGY2YjUzZmU3Li4xNWE2YTBhNDhmYjg2NDFiZDk4ZTdmNTlj
YTg1ZjNmY2IzZTY1OTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9DYWxsRGF0YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhbGxEYXRh
LmgKQEAgLTU3LDcgKzU3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0ganM7CiAgICAg
fTsKIAotICAgIEpTVmFsdWUgY2FsbChFeGVjU3RhdGUqLCBKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0
LCBDYWxsVHlwZSwgY29uc3QgQ2FsbERhdGEmLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgQXJn
TGlzdCYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgY2FsbChFeGVjU3RhdGUqLCBK
U1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBDYWxsVHlwZSwgY29uc3QgQ2FsbERhdGEmLCBKU1ZhbHVl
IHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oCmluZGV4IGMzZGJkZmM1OGM4
YmU2MDViYWU0MjRhZTYwOGViOGQwMTMyZGMxZDAuLjNkM2I4NmZlNDRkYzVmMzU3M2NmYzZkODZi
ZjY0ZGQxNDdlNzcwMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbXBsZXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0
aW9uLmgKQEAgLTMxLDggKzMxLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgU2NvcGVD
aGFpbk5vZGU7CiAgICAgY2xhc3MgU291cmNlQ29kZTsKIAotICAgIGJvb2wgY2hlY2tTeW50YXgo
RXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYsIEpTVmFsdWUqIGV4Y2VwdGlvbiA9IDApOwot
ICAgIEpTVmFsdWUgZXZhbHVhdGUoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqLCBjb25zdCBT
b3VyY2VDb2RlJiwgSlNWYWx1ZSB0aGlzVmFsdWUgPSBKU1ZhbHVlKCksIEpTVmFsdWUqIGV4Y2Vw
dGlvbiA9IDApOworICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgY2hlY2tTeW50YXgoRXhlY1N0
YXRlKiwgY29uc3QgU291cmNlQ29kZSYsIEpTVmFsdWUqIGV4Y2VwdGlvbiA9IDApOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgZXZhbHVhdGUoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5v
ZGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNWYWx1ZSB0aGlzVmFsdWUgPSBKU1ZhbHVlKCksIEpT
VmFsdWUqIGV4Y2VwdGlvbiA9IDApOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0RGF0YS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0RGF0YS5oCmluZGV4IGNjOGY0Njk3NzA0
OTJmMTlmNTFiNTFmY2QwMmVjZjY2NWZhMWY5M2QuLmQ3YTNjNzNkM2Q3NmQ3YmNkMTY0MTFmMWY2
ZGI5YTcyNjc2NTM2NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbnN0cnVjdERhdGEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25z
dHJ1Y3REYXRhLmgKQEAgLTU2LDcgKzU2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0g
anM7CiAgICAgfTsKIAotICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3QoRXhlY1N0YXRlKiwgSlNWYWx1
ZSBjb25zdHJ1Y3RvciwgQ29uc3RydWN0VHlwZSwgY29uc3QgQ29uc3RydWN0RGF0YSYsIGNvbnN0
IEFyZ0xpc3QmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogY29uc3RydWN0KEV4
ZWNTdGF0ZSosIEpTVmFsdWUgY29uc3RydWN0b3IsIENvbnN0cnVjdFR5cGUsIGNvbnN0IENvbnN0
cnVjdERhdGEmLCBjb25zdCBBcmdMaXN0Jik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5oCmluZGV4IDNlZGZiMDk3
MGFjOGJlNmIzZTI5YmNmZWI1YmEwYjA1Y2QxZDk4MjkuLjdjOTc2YTUxNGE2ZDNhOTNlNjQyY2Qx
YTU4MDVlNDEyOTg2MTM2YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0RhdGVJbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rh
dGVJbnN0YW5jZS5oCkBAIC0zMSw5ICszMSw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xh
c3MgRGF0ZUluc3RhbmNlIDogcHVibGljIEpTV3JhcHBlck9iamVjdCB7CiAgICAgcHJvdGVjdGVk
OgotICAgICAgICBEYXRlSW5zdGFuY2UoRXhlY1N0YXRlKiwgU3RydWN0dXJlKik7CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIERhdGVJbnN0YW5jZShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqKTsK
ICAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmKTsKLSAgICAgICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmLCBkb3VibGUpOworICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYsIGRvdWJsZSk7CiAK
ICAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FcnJvci5oCmluZGV4IGI4MDdkNGFiNGY2ODVjMThiODY4YmM2OWIxYzFjZDJk
ZWFmODU3MmMuLjg4YjU0MGEzNWZjMjI3YmExMDAxZDA5YjY2MjlkZDU3MTQwZjNhN2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaApAQCAtNDYsMTIgKzQ2LDEyIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIEpTT2JqZWN0KiBjcmVhdGVUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3Qq
LCBjb25zdCBVU3RyaW5nJik7CiAgICAgSlNPYmplY3QqIGNyZWF0ZVVSSUVycm9yKEpTR2xvYmFs
T2JqZWN0KiwgY29uc3QgVVN0cmluZyYpOwogICAgIC8vIEV4ZWNTdGF0ZSB3cmFwcGVycy4KLSAg
ICBKU09iamVjdCogY3JlYXRlRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOworICAg
IEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjcmVhdGVFcnJvcihFeGVjU3RhdGUqLCBjb25z
dCBVU3RyaW5nJik7CiAgICAgSlNPYmplY3QqIGNyZWF0ZUV2YWxFcnJvcihFeGVjU3RhdGUqLCBj
b25zdCBVU3RyaW5nJik7Ci0gICAgSlNPYmplY3QqIGNyZWF0ZVJhbmdlRXJyb3IoRXhlY1N0YXRl
KiwgY29uc3QgVVN0cmluZyYpOwotICAgIEpTT2JqZWN0KiBjcmVhdGVSZWZlcmVuY2VFcnJvcihF
eGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJik7Ci0gICAgSlNPYmplY3QqIGNyZWF0ZVN5bnRheEVy
cm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsKLSAgICBKU09iamVjdCogY3JlYXRlVHlw
ZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBKU09iamVjdCogY3JlYXRlUmFuZ2VFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJik7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIGNyZWF0ZVJlZmVyZW5jZUVycm9yKEV4
ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVj
dCogY3JlYXRlU3ludGF4RXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjcmVhdGVUeXBlRXJyb3IoRXhlY1N0YXRlKiwgY29u
c3QgVVN0cmluZyYpOwogICAgIEpTT2JqZWN0KiBjcmVhdGVVUklFcnJvcihFeGVjU3RhdGUqLCBj
b25zdCBVU3RyaW5nJik7CiAKICAgICAvLyBNZXRob2RzIHRvIGFkZCAKQEAgLTYxLDEyICs2MSwx
MiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBKU09iamVjdCogYWRkRXJyb3JJbmZvKEV4ZWNTdGF0
ZSosIEpTT2JqZWN0KiBlcnJvciwgaW50IGxpbmUsIGNvbnN0IFNvdXJjZUNvZGUmKTsKIAogICAg
IC8vIE1ldGhvZHMgdG8gdGhyb3cgRXJyb3JzLgotICAgIEpTVmFsdWUgdGhyb3dFcnJvcihFeGVj
U3RhdGUqLCBKU1ZhbHVlKTsKLSAgICBKU09iamVjdCogdGhyb3dFcnJvcihFeGVjU3RhdGUqLCBK
U09iamVjdCopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgdGhyb3dFcnJvcihFeGVj
U3RhdGUqLCBKU1ZhbHVlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdGhyb3dF
cnJvcihFeGVjU3RhdGUqLCBKU09iamVjdCopOwogCiAgICAgLy8gQ29udmVuaWVuY2Ugd3JhcHBl
cnMsIGNyZWF0ZSBhbiB0aHJvdyBhbiBleGNlcHRpb24gd2l0aCBhIGRlZmF1bHQgbWVzc2FnZS4K
LSAgICBKU09iamVjdCogdGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKik7Ci0gICAgSlNPYmplY3Qq
IHRocm93U3ludGF4RXJyb3IoRXhlY1N0YXRlKik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNP
YmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSopOworICAgIEpTX0VYUE9SVF9QUklWQVRF
IEpTT2JqZWN0KiB0aHJvd1N5bnRheEVycm9yKEV4ZWNTdGF0ZSopOwogCiAgICAgLy8gQ29udmVu
aWVuY2Ugd3JhcHBlcnMsIHdyYXAgcmVzdWx0IGFzIGFuIEVuY29kZWRKU1ZhbHVlLgogICAgIGlu
bGluZSBFbmNvZGVkSlNWYWx1ZSB0aHJvd1ZNRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IGVycm9yKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFcnJvcihleGVjLCBlcnJvcikp
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25I
ZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJz
LmgKaW5kZXggZjcxZDFhMzA4NTIzMWRjOGJhYjQ3YTA1YzU0Y2NmYmEzZjk1OTNjZS4uMzg4MjM1
YjBkYmVhOGQ1ZTY3YTEyZjFjOGEwZTczNzAxZWRiNzI4OCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaApAQCAtMzMsMTUgKzMzLDE1IEBA
CiAKIG5hbWVzcGFjZSBKU0MgewogCi1KU09iamVjdCogY3JlYXRlSW50ZXJydXB0ZWRFeGVjdXRp
b25FeGNlcHRpb24oSlNHbG9iYWxEYXRhKik7CitKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCog
Y3JlYXRlSW50ZXJydXB0ZWRFeGVjdXRpb25FeGNlcHRpb24oSlNHbG9iYWxEYXRhKik7CiBib29s
IGlzSW50ZXJydXB0ZWRFeGVjdXRpb25FeGNlcHRpb24oSlNPYmplY3QqKTsKIGJvb2wgaXNJbnRl
cnJ1cHRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihKU1ZhbHVlKTsKIAogSlNPYmplY3QqIGNyZWF0ZVRl
cm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oSlNHbG9iYWxEYXRhKik7CiBib29sIGlzVGVybWlu
YXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihKU09iamVjdCopOwotYm9vbCBpc1Rlcm1pbmF0ZWRFeGVj
dXRpb25FeGNlcHRpb24oSlNWYWx1ZSk7CitKU19FWFBPUlRfUFJJVkFURSBib29sIGlzVGVybWlu
YXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihKU1ZhbHVlKTsKIAotSlNPYmplY3QqIGNyZWF0ZVN0YWNr
T3ZlcmZsb3dFcnJvcihFeGVjU3RhdGUqKTsKK0pTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBj
cmVhdGVTdGFja092ZXJmbG93RXJyb3IoRXhlY1N0YXRlKik7CiBKU09iamVjdCogY3JlYXRlU3Rh
Y2tPdmVyZmxvd0Vycm9yKEpTR2xvYmFsT2JqZWN0Kik7CiBKU09iamVjdCogY3JlYXRlT3V0T2ZN
ZW1vcnlFcnJvcihKU0dsb2JhbE9iamVjdCopOwogSlNPYmplY3QqIGNyZWF0ZVVuZGVmaW5lZFZh
cmlhYmxlRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCmluZGV4IGNjNDRkNjFhN2E4ZDdhOWM2NzQ5
NGVmNGU2OGZiYTQ1NzMyMjNmZGEuLjBkZjE3ZWRiNTQ3MmM1ZjAwMzRlZDVjMjMwMDg1MTdhMDQ5
ZDc3ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFi
bGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKQEAg
LTg3LDcgKzg3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIFN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90bykgeyByZXR1cm4gU3RydWN0dXJlOjpjcmVh
dGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90bywgVHlwZUluZm8oQ29tcG91bmRUeXBl
LCBTdHJ1Y3R1cmVGbGFncyksICZzX2luZm8pOyB9CiAgICAgICAgIAotICAgICAgICBzdGF0aWMg
Y29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKKyAgICAgICAgSlNfRVhQT1JUREFUQSBzdGF0aWMgY29u
c3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaAppbmRleCA3MTQxOTE2Y2Y2NGIz
OTA3YjFiMmNjMGJjMmExNmQzODNkMDkxYjYwLi4zMTk4NmI3MGE3M2M2NTNkMTg4ZGIyNmY0YjE3
ZWUxMDRkMDUyMTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
dW5jdGlvbkNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RnVuY3Rpb25Db25zdHJ1Y3Rvci5oCkBAIC01OSw3ICs1OSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVj
dCosIGNvbnN0IEFyZ0xpc3QmLCBjb25zdCBJZGVudGlmaWVyJiBmdW5jdGlvbk5hbWUsIGNvbnN0
IFVTdHJpbmcmIHNvdXJjZVVSTCwgY29uc3QgV1RGOjpUZXh0UG9zaXRpb24mKTsKICAgICBKU09i
amVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBjb25z
dCBBcmdMaXN0Jik7CiAKLSAgICBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2
YWxFbmFibGVkQ2hlY2soRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBBcmdMaXN0
JiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFVTdHJpbmcmLCBjb25zdCBXVEY6OlRleHRQb3Np
dGlvbiYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlv
blNraXBwaW5nRXZhbEVuYWJsZWRDaGVjayhFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIGNv
bnN0IEFyZ0xpc3QmLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgVVN0cmluZyYsIGNvbnN0IFdU
Rjo6VGV4dFBvc2l0aW9uJik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmgKaW5kZXggMmNjODhiMjU2MGE3NTVmN2JkODk0
NDc2YWViNzg0ZDUwZWI1YmEyOS4uOTQ3Yzk1YjMzYjJkODJhOThmMTAwYzg1YTMwMWQ1YmU4OWMz
NmQ2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmll
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaApAQCAt
NTYsMTQgKzU2LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBJZGVudGlm
aWVyIGNyZWF0ZUxDaGFyRnJvbVVDaGFyKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3Qg
VUNoYXIqIHMsIGludCBsZW5ndGgpIHsgcmV0dXJuIElkZW50aWZpZXIoZ2xvYmFsRGF0YSwgYWRk
OChnbG9iYWxEYXRhLCBzLCBsZW5ndGgpKTsgfQogCi0gICAgICAgIHN0YXRpYyBJZGVudGlmaWVy
IGZyb20oRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCB5KTsKLSAgICAgICAgc3RhdGljIElkZW50
aWZpZXIgZnJvbShFeGVjU3RhdGUqIGV4ZWMsIGludCB5KTsKKyAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIElkZW50aWZpZXIgZnJvbShFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHkp
OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSWRlbnRpZmllciBmcm9tKEV4ZWNT
dGF0ZSogZXhlYywgaW50IHkpOwogICAgICAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9tKEV4ZWNT
dGF0ZSogZXhlYywgZG91YmxlIHkpOwogICAgICAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9tKEpT
R2xvYmFsRGF0YSosIHVuc2lnbmVkIHkpOwogICAgICAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9t
KEpTR2xvYmFsRGF0YSosIGludCB5KTsKICAgICAgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbShK
U0dsb2JhbERhdGEqLCBkb3VibGUgeSk7CiAKLSAgICAgICAgc3RhdGljIHVpbnQzMl90IHRvVUlu
dDMyKGNvbnN0IFVTdHJpbmcmLCBib29sJiBvayk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyB1aW50MzJfdCB0b1VJbnQzMihjb25zdCBVU3RyaW5nJiwgYm9vbCYgb2spOwogICAg
ICAgICB1aW50MzJfdCB0b1VJbnQzMihib29sJiBvaykgY29uc3QgeyByZXR1cm4gdG9VSW50MzIo
bV9zdHJpbmcsIG9rKTsgfQogICAgICAgICB1bnNpZ25lZCB0b0FycmF5SW5kZXgoYm9vbCYgb2sp
IGNvbnN0OwogCkBAIC04NCw3ICs4NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0
aWMgYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiwgY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBs
ZW5ndGgpOwogICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiBhLCBj
b25zdCBTdHJpbmdJbXBsKiBiKSB7IHJldHVybiA6OmVxdWFsKGEsIGIpOyB9CiAKLSAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkKEV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIq
KTsgLy8gT25seSB0byBiZSB1c2VkIHdpdGggc3RyaW5nIGxpdGVyYWxzLgorICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGQoRXhlY1N0YXRl
KiwgY29uc3QgY2hhciopOyAvLyBPbmx5IHRvIGJlIHVzZWQgd2l0aCBzdHJpbmcgbGl0ZXJhbHMu
CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChKU0dsb2JhbERhdGEq
LCBjb25zdCBjaGFyKik7IC8vIE9ubHkgdG8gYmUgdXNlZCB3aXRoIHN0cmluZyBsaXRlcmFscy4K
IAogICAgIHByaXZhdGU6CkBAIC0xMTksMTEgKzExOSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgICAgIHJldHVybiBhZGRTbG93Q2FzZShnbG9iYWxEYXRhLCByKTsKICAgICAgICAgfQog
Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZFNsb3dDYXNlKEV4ZWNT
dGF0ZSosIFN0cmluZ0ltcGwqIHIpOwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJ
bXBsPiBhZGRTbG93Q2FzZShKU0dsb2JhbERhdGEqLCBTdHJpbmdJbXBsKiByKTsKKyAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkU2xvd0Nh
c2UoRXhlY1N0YXRlKiwgU3RyaW5nSW1wbCogcik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZFNsb3dDYXNlKEpTR2xvYmFsRGF0YSos
IFN0cmluZ0ltcGwqIHIpOwogCi0gICAgICAgIHN0YXRpYyB2b2lkIGNoZWNrQ3VycmVudElkZW50
aWZpZXJUYWJsZShFeGVjU3RhdGUqKTsKLSAgICAgICAgc3RhdGljIHZvaWQgY2hlY2tDdXJyZW50
SWRlbnRpZmllclRhYmxlKEpTR2xvYmFsRGF0YSopOworICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgdm9pZCBjaGVja0N1cnJlbnRJZGVudGlmaWVyVGFibGUoRXhlY1N0YXRlKik7Cisg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGNoZWNrQ3VycmVudElkZW50aWZp
ZXJUYWJsZShKU0dsb2JhbERhdGEqKTsKICAgICB9OwogCiAgICAgdGVtcGxhdGUgPD4gQUxXQVlT
X0lOTElORSBib29sIElkZW50aWZpZXI6OmNhblVzZVNpbmdsZUNoYXJhY3RlclN0cmluZyhMQ2hh
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVU
aHJlYWRpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJl
YWRpbmcuaAppbmRleCAxYTkzY2NiOWIxYTM4OTMzMTljYzAxNzI1NzNjNTY1M2RkMDY3MmM5Li45
MTMwMWEwZDhmYTY2ZWI3MWM1NzQ1NDQxMzA1Nzg1MWEzZDZiZTE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5oCkBAIC0zMyw3
ICszMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBtdXN0IGJl
IGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4gSXQgaXMgc2FmZSB0byBjYWxsIGl0IHJlcGVh
dGVkbHkuCiAgICAgLy8gRGFyd2luIGlzIGFuIGV4Y2VwdGlvbiB0byB0aGlzIHJ1bGU6IGl0IGlz
IE9LIHRvIGNhbGwgdGhpcyBmdW5jdGlvbiBmcm9tIGFueSB0aHJlYWQsIGV2ZW4gcmVlbnRyYW50
bHkuCi0gICAgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCk7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCk7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCmluZGV4IGEwMzhiN2FlMTk3ODhi
ZmY0NDVmMDI4MjI3MjRlYzg2Y2M4MTIzMmQuLjUzMmJkMGM4ZDRiMDY4NzQ0YzkwMTEzMjcyZWFj
ODNhNzYxYTIxODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGVybmFsRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRl
cm5hbEZ1bmN0aW9uLmgKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAg
ICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAotICAgICAg
ICBjb25zdCBVU3RyaW5nJiBuYW1lKEV4ZWNTdGF0ZSopOworICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSBjb25zdCBVU3RyaW5nJiBuYW1lKEV4ZWNTdGF0ZSopOwogICAgICAgICBjb25zdCBVU3Ry
aW5nIGRpc3BsYXlOYW1lKEV4ZWNTdGF0ZSopOwogICAgICAgICBjb25zdCBVU3RyaW5nIGNhbGN1
bGF0ZWREaXNwbGF5TmFtZShFeGVjU3RhdGUqKTsKIApAQCAtNDksOSArNDksOSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IEltcGxlbWVudHNIYXNJbnN0YW5jZSB8IEpTT2JqZWN0OjpTdHJ1Y3R1
cmVGbGFnczsKIAotICAgICAgICBJbnRlcm5hbEZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEludGVybmFsRnVuY3Rpb24oSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKIAotICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIG5hbWUpOworICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50
aWZpZXImIG5hbWUpOwogCiAgICAgICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0Nl
bGwqLCBDYWxsRGF0YSYpOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5LmgKaW5kZXggODcxY2ZjODgyYTU0MTZhMDA5ZjBlNGZjNmZlY2IzZmJmZGRhYjJmNy4uMjg0
Yzk3N2NmMGVkZTg5NmVkYjA1MDg3NzBhZjZkOWVjNTNmNTVhNSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXkuaApAQCAtMTI3LDE2ICsxMjcsMTYgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBXYWxrZXI7CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAg
ICAgIGV4cGxpY2l0IEpTQXJyYXkoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IEpTQXJyYXkoSlNHbG9iYWxEYXRhJiwgU3RydWN0
dXJlKik7CiAKLSAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmLCB1bnNp
Z25lZCBpbml0aWFsTGVuZ3RoID0gMCk7Ci0gICAgICAgIEpTQXJyYXkqIHRyeUZpbmlzaENyZWF0
aW9uVW5pbml0aWFsaXplZChKU0dsb2JhbERhdGEmLCB1bnNpZ25lZCBpbml0aWFsTGVuZ3RoKTsK
KyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERh
dGEmLCB1bnNpZ25lZCBpbml0aWFsTGVuZ3RoID0gMCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIEpTQXJyYXkqIHRyeUZpbmlzaENyZWF0aW9uVW5pbml0aWFsaXplZChKU0dsb2JhbERhdGEm
LCB1bnNpZ25lZCBpbml0aWFsTGVuZ3RoKTsKICAgICAKICAgICBwdWJsaWM6CiAgICAgICAgIHR5
cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOwogCi0gICAgICAgIH5KU0FycmF5KCk7Ci0gICAg
ICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIH5KU0FycmF5KCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGRl
c3Ryb3koSlNDZWxsKik7CiAKICAgICAgICAgc3RhdGljIEpTQXJyYXkqIGNyZWF0ZShKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBpbml0aWFs
TGVuZ3RoID0gMCkKICAgICAgICAgewpAQCAtMTU2LDEwICsxNTYsMTAgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgICAgICByZXR1cm4gYXJyYXktPnRyeUZpbmlzaENyZWF0aW9uVW5pbml0aWFs
aXplZChnbG9iYWxEYXRhLCBpbml0aWFsTGVuZ3RoKTsKICAgICAgICAgfQogCi0gICAgICAgIHN0
YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgdGhyb3dFeGNlcHRpb24pOwor
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShK
U09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0
b3ImLCBib29sIHRocm93RXhjZXB0aW9uKTsKIAogICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3Bl
cnR5U2xvdCYpOwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4
KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
Jik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5
U2xvdEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmKTsKICAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVz
Y3JpcHRvciYpOwogICAgICAgICBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNT
dGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSk7CiAKQEAgLTI1NCw3ICsyNTQs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0Yo
SlNBcnJheSwgbV92ZWN0b3JMZW5ndGgpOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIHZv
aWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9y
Jik7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc1Zpc2l0
Q2hpbGRyZW4gfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNPYmplY3Q6OlN0cnVjdHVy
ZUZsYWdzOwpAQCAtMjY0LDggKzI2NCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0
aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWdu
ZWQgcHJvcGVydHlOYW1lKTsKICAgICAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1l
cyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25N
b2RlKTsKIAotICAgICAgICB2b2lkKiBzdWJjbGFzc0RhdGEoKSBjb25zdDsKLSAgICAgICAgdm9p
ZCBzZXRTdWJjbGFzc0RhdGEodm9pZCopOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lk
KiBzdWJjbGFzc0RhdGEoKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBz
ZXRTdWJjbGFzc0RhdGEodm9pZCopOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBpc0xl
bmd0aFdyaXRhYmxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQnl0ZUFycmF5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJh
eS5oCmluZGV4IDc1NDc3NGQzZTczNDc1ZTE1MzUxNjFlZmQ2ZTlhZjJkZjhhZDRkYWYuLmQxZjRh
ZDYzMDMwODkwMjg4ODg2OGI3MDFiNGE3NDZmOGY3Zjk0N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuaApAQCAtNzYsNyArNzYsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgSlNCeXRlQXJyYXkoRXhl
Y1N0YXRlKiwgU3RydWN0dXJlKiwgQnl0ZUFycmF5KiBzdG9yYWdlKTsKKyAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgSlNCeXRlQXJyYXkoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgQnl0ZUFycmF5
KiBzdG9yYWdlKTsKICAgICAgICAgCiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgSlNCeXRl
QXJyYXkqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBCeXRl
QXJyYXkqIHN0b3JhZ2UpCkBAIC04NiwxNSArODYsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgICAgICByZXR1cm4gYXJyYXk7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgU3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwgSlNHbG9iYWxPYmplY3QqLCBKU1Zh
bHVlIHByb3RvdHlwZSwgY29uc3QgSlNDOjpDbGFzc0luZm8qID0gJnNfaW5mbyk7CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0ds
b2JhbERhdGEmLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBKU0M6
OkNsYXNzSW5mbyogPSAmc19pbmZvKTsKIAotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwotICAgICAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3Rh
dGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7Ci0gICAgICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKLSAgICAgICAgc3Rh
dGljIHZvaWQgcHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6Oklk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OlB1dFByb3BlcnR5U2xv
dCYpOwotICAgICAgICBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQzo6SlNDZWxsKiwgSlNDOjpF
eGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSk7CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpT
Q2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNT
dGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKKyAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3Jp
cHRvciYpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBwdXQoSlNDOjpK
U0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7CisgICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDOjpKU0NlbGwqLCBKU0M6OkV4
ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlKTsKIAotICAgICAg
ICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOworICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpT
Qzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBF
bnVtZXJhdGlvbk1vZGUpOwogCiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENs
YXNzSW5mbyBzX2luZm87CiAgICAgICAgIApAQCAtMTAzLDcgKzEwMyw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBXVEY6OkJ5dGVBcnJheSogc3RvcmFnZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c3RvcmFnZS5nZXQoKTsgfQogCiAgICAgICAgIH5KU0J5dGVBcnJheSgpOwotICAgICAgICBzdGF0
aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAgICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0
T2ZTdG9yYWdlKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTQnl0ZUFycmF5LCBtX3N0b3Jh
Z2UpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2Vs
bC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKaW5kZXggNDdlMzM2
YTg2ZDA1MjUzNzVkOWQ0NGQzYzEyMzk3MDM5NTUwZjAwYy4uMTdhOGM3ODk4ZDYxZWFjMjNmYzc0
NTdhNWYwYTEyMWQxYTg5YTI3MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxs
LmgKQEAgLTY3LDcgKzY3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBwcm90ZWN0ZWQ6CiAg
ICAgICAgIEpTQ2VsbChKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKLSAgICAgICAgc3RhdGlj
IHZvaWQgZGVzdHJveShKU0NlbGwqKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAgIHB1YmxpYzoKICAgICAgICAgLy8gUXVlcnlp
bmcgdGhlIHR5cGUuCkBAIC04MiwyMSArODIsMjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHZvaWQgY2xlYXJTdHJ1Y3R1cmUoKSB7IG1fc3RydWN0dXJlLmNsZWFyKCk7IH0KIAogICAgICAg
ICAvLyBFeHRyYWN0aW5nIHRoZSB2YWx1ZS4KLSAgICAgICAgYm9vbCBnZXRTdHJpbmcoRXhlY1N0
YXRlKiBleGVjLCBVU3RyaW5nJikgY29uc3Q7Ci0gICAgICAgIFVTdHJpbmcgZ2V0U3RyaW5nKEV4
ZWNTdGF0ZSogZXhlYykgY29uc3Q7IC8vIG51bGwgc3RyaW5nIGlmIG5vdCBhIHN0cmluZwotICAg
ICAgICBKU09iamVjdCogZ2V0T2JqZWN0KCk7IC8vIE5VTEwgaWYgbm90IGFuIG9iamVjdAorICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGdldFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIFVT
dHJpbmcmKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgVVN0cmluZyBnZXRTdHJp
bmcoRXhlY1N0YXRlKiBleGVjKSBjb25zdDsgLy8gbnVsbCBzdHJpbmcgaWYgbm90IGEgc3RyaW5n
CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBnZXRPYmplY3QoKTsgLy8gTlVM
TCBpZiBub3QgYW4gb2JqZWN0CiAgICAgICAgIGNvbnN0IEpTT2JqZWN0KiBnZXRPYmplY3QoKSBj
b25zdDsgLy8gTlVMTCBpZiBub3QgYW4gb2JqZWN0CiAgICAgICAgIAotICAgICAgICBzdGF0aWMg
Q2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKLSAgICAgICAgc3RhdGlj
IENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJik7
CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShK
U0NlbGwqLCBDYWxsRGF0YSYpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgQ29u
c3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKIAog
ICAgICAgICAvLyBCYXNpYyBjb252ZXJzaW9ucy4KLSAgICAgICAgSlNWYWx1ZSB0b1ByaW1pdGl2
ZShFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKSBjb25zdDsKKyAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSB0b1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBQcmVmZXJyZWRQ
cmltaXRpdmVUeXBlKSBjb25zdDsKICAgICAgICAgYm9vbCBnZXRQcmltaXRpdmVOdW1iZXIoRXhl
Y1N0YXRlKiwgZG91YmxlJiBudW1iZXIsIEpTVmFsdWUmKSBjb25zdDsKICAgICAgICAgYm9vbCB0
b0Jvb2xlYW4oRXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgICAgIGRvdWJsZSB0b051bWJlcihFeGVj
U3RhdGUqKSBjb25zdDsKLSAgICAgICAgVVN0cmluZyB0b1N0cmluZyhFeGVjU3RhdGUqKSBjb25z
dDsKLSAgICAgICAgSlNPYmplY3QqIHRvT2JqZWN0KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0
KikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGRvdWJsZSB0b051bWJlcihFeGVj
U3RhdGUqKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgVVN0cmluZyB0b1N0cmlu
ZyhFeGVjU3RhdGUqKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3Qq
IHRvT2JqZWN0KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CiAKICAgICAgICAg
c3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKaW5kZXggNTExOGY4YjEwNzkw
M2ZkZDc2NWRhODU0MDJkZTA3YWVkYjM4NjYyYi4uYjhjZmQ3MTU3ZmQ3YjMxMGRjMTBlNzk5YTIz
OWUxMzk0NjAwOTNlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b24uaApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBKSVRDb21w
aWxlcjsKICAgICB9CiAKLSAgICBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxIb3N0
RnVuY3Rpb25Bc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSopOworICAgIEpTX0VYUE9SVF9QUklWQVRF
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0
b3IoRXhlY1N0YXRlKik7CiAKICAgICBjbGFzcyBKU0Z1bmN0aW9uIDogcHVibGljIEpTTm9uRmlu
YWxPYmplY3QgewogICAgICAgICBmcmllbmQgY2xhc3MgSklUOwpAQCAtNTEsNyArNTEsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgSlNOb25GaW5hbE9i
amVjdCBCYXNlOwogCi0gICAgICAgIHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGUoRXhlY1N0YXRl
KiwgSlNHbG9iYWxPYmplY3QqLCBpbnQgbGVuZ3RoLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBO
YXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlQ29uc3Ry
dWN0b3IgPSBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3Rvcik7CisgICAgICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxP
YmplY3QqLCBpbnQgbGVuZ3RoLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBOYXRpdmVGdW5jdGlv
biBuYXRpdmVGdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlQ29uc3RydWN0b3IgPSBjYWxs
SG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3Rvcik7CiAgICAgICAgIHN0YXRpYyBKU0Z1bmN0aW9uKiBj
cmVhdGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBpbnQgbGVuZ3RoLCBjb25zdCBJZGVu
dGlmaWVyJiBuYW1lLCBOYXRpdmVFeGVjdXRhYmxlKiBuYXRpdmVFeGVjdXRhYmxlKTsKIAogICAg
ICAgICBzdGF0aWMgSlNGdW5jdGlvbiogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgRnVuY3Rpb25F
eGVjdXRhYmxlKiBleGVjdXRhYmxlLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbikKQEAgLTY0
LDcgKzY0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBzdGF0aWMgdm9p
ZCBkZXN0cm95KEpTQ2VsbCopOwogCi0gICAgICAgIGNvbnN0IFVTdHJpbmcmIG5hbWUoRXhlY1N0
YXRlKik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0IFVTdHJpbmcmIG5hbWUoRXhl
Y1N0YXRlKik7CiAgICAgICAgIGNvbnN0IFVTdHJpbmcgZGlzcGxheU5hbWUoRXhlY1N0YXRlKik7
CiAgICAgICAgIGNvbnN0IFVTdHJpbmcgY2FsY3VsYXRlZERpc3BsYXlOYW1lKEV4ZWNTdGF0ZSop
OwogCkBAIC05NCw3ICs5NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBpbmxpbmUgYm9v
bCBpc0hvc3RGdW5jdGlvbigpIGNvbnN0OwogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGpz
RXhlY3V0YWJsZSgpIGNvbnN0OwogCi0gICAgICAgIGNvbnN0IFNvdXJjZUNvZGUqIHNvdXJjZUNv
ZGUoKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgU291cmNlQ29kZSog
c291cmNlQ29kZSgpIGNvbnN0OwogCiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0
IENsYXNzSW5mbyBzX2luZm87CiAKQEAgLTEyMyw3ICsxMjMsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIGNvbnN0IHN0YXRpYyB1bnNpZ25lZCBTdHJ1Y3R1cmVG
bGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEltcGxlbWVudHNIYXNJbnN0YW5j
ZSB8IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwg
SlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogCi0gICAgICAgIEpTRnVuY3Rpb24oRXhlY1N0YXRl
KiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgSlNGdW5jdGlvbihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwog
ICAgICAgICBKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEZ1bmN0aW9uRXhlY3V0YWJsZSosIFNjb3Bl
Q2hhaW5Ob2RlKik7CiAgICAgICAgIAogICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNT
dGF0ZSosIE5hdGl2ZUV4ZWN1dGFibGUqLCBpbnQgbGVuZ3RoLCBjb25zdCBJZGVudGlmaWVyJiBu
YW1lKTsKQEAgLTE0MCw3ICsxNDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGlj
IHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgcHJpdmF0
ZToKLSAgICAgICAgYm9vbCBpc0hvc3RGdW5jdGlvbk5vbklubGluZSgpIGNvbnN0OworICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lKCkgY29uc3Q7
CiAKICAgICAgICAgc3RhdGljIEpTVmFsdWUgYXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSosIEpT
VmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKICAgICAgICAgc3RhdGljIEpTVmFsdWUgY2FsbGVy
R2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCmluZGV4IGRhYjNmMjRi
YTE0NmUxZTcyNTRjOTQ3OTg0MTM0MjI1MTI4NzgwMGMuLjUwOGM1MWViMTJiM2JmN2RiOTEzZDE4
MDRmZDlhNjE0MGQwZmZhNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsRGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxEYXRhLmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIGV4dGVybiBjb25zdCBIYXNoVGFi
bGUgZ2xvYmFsT2JqZWN0VGFibGU7CiBleHRlcm4gY29uc3QgSGFzaFRhYmxlIG1hdGhUYWJsZTsK
IGV4dGVybiBjb25zdCBIYXNoVGFibGUgbnVtYmVyQ29uc3RydWN0b3JUYWJsZTsKIGV4dGVybiBj
b25zdCBIYXNoVGFibGUgbnVtYmVyUHJvdG90eXBlVGFibGU7Ci1leHRlcm4gY29uc3QgSGFzaFRh
YmxlIG9iamVjdENvbnN0cnVjdG9yVGFibGU7CitKU19FWFBPUlREQVRBIGV4dGVybiBjb25zdCBI
YXNoVGFibGUgb2JqZWN0Q29uc3RydWN0b3JUYWJsZTsKIGV4dGVybiBjb25zdCBIYXNoVGFibGUg
b2JqZWN0UHJvdG90eXBlVGFibGU7CiBleHRlcm4gY29uc3QgSGFzaFRhYmxlIHJlZ0V4cFRhYmxl
OwogZXh0ZXJuIGNvbnN0IEhhc2hUYWJsZSByZWdFeHBDb25zdHJ1Y3RvclRhYmxlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAppbmRleCBhNmFkOGE3NDdi
N2U0YzczODFmMmNlOWJkMTlkYWFhNDJiNDdhMmEzLi5mM2I1NDE1Mjc1Y2Y3MjkxZjg5MmY3MDkw
Nzg1NzljNjUzNmNkNjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbERhdGEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbERhdGEuaApAQCAtMTM0LDE4ICsxMzQsMTggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IGVudW0gR2xvYmFsRGF0YVR5cGUgeyBEZWZhdWx0LCBBUElDb250ZXh0R3JvdXAsIEFQSVNoYXJl
ZCB9OwogICAgICAgICAKICAgICAgICAgc3RydWN0IENsaWVudERhdGEgewotICAgICAgICAgICAg
dmlydHVhbCB+Q2xpZW50RGF0YSgpID0gMDsKKyAgICAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IHZpcnR1YWwgfkNsaWVudERhdGEoKSA9IDA7CiAgICAgICAgIH07CiAKICAgICAgICAgYm9vbCBp
c1NoYXJlZEluc3RhbmNlKCkgeyByZXR1cm4gZ2xvYmFsRGF0YVR5cGUgPT0gQVBJU2hhcmVkOyB9
CiAgICAgICAgIGJvb2wgdXNpbmdBUEkoKSB7IHJldHVybiBnbG9iYWxEYXRhVHlwZSAhPSBEZWZh
dWx0OyB9CiAgICAgICAgIHN0YXRpYyBib29sIHNoYXJlZEluc3RhbmNlRXhpc3RzKCk7Ci0gICAg
ICAgIHN0YXRpYyBKU0dsb2JhbERhdGEmIHNoYXJlZEluc3RhbmNlKCk7CisgICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBKU0dsb2JhbERhdGEmIHNoYXJlZEluc3RhbmNlKCk7CiAKLSAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBjcmVhdGUoVGhyZWFkU3RhY2tU
eXBlLCBIZWFwU2l6ZSA9IFNtYWxsSGVhcCk7Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpT
R2xvYmFsRGF0YT4gY3JlYXRlTGVha2VkKFRocmVhZFN0YWNrVHlwZSwgSGVhcFNpemUgPSBTbWFs
bEhlYXApOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxKU0ds
b2JhbERhdGE+IGNyZWF0ZShUaHJlYWRTdGFja1R5cGUsIEhlYXBTaXplID0gU21hbGxIZWFwKTsK
KyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8SlNHbG9iYWxEYXRh
PiBjcmVhdGVMZWFrZWQoVGhyZWFkU3RhY2tUeXBlLCBIZWFwU2l6ZSA9IFNtYWxsSGVhcCk7CiAg
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4gY3JlYXRlQ29udGV4dEdyb3Vw
KFRocmVhZFN0YWNrVHlwZSwgSGVhcFNpemUgPSBTbWFsbEhlYXApOwotICAgICAgICB+SlNHbG9i
YWxEYXRhKCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIH5KU0dsb2JhbERhdGEoKTsKIAog
ICAgICAgICB2b2lkIG1ha2VVc2FibGVGcm9tTXVsdGlwbGVUaHJlYWRzKCkgeyBoZWFwLm1hY2hp
bmVUaHJlYWRzKCkubWFrZVVzYWJsZUZyb21NdWx0aXBsZVRocmVhZHMoKTsgfQogCkBAIC0zMDgs
MjEgKzMwOCwyMSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBDYWNoZWRUcmFuc2NlbmRl
bnRhbEZ1bmN0aW9uPHNpbj4gY2FjaGVkU2luOwogCi0gICAgICAgIHZvaWQgcmVzZXREYXRlQ2Fj
aGUoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCByZXNldERhdGVDYWNoZSgpOwog
Ci0gICAgICAgIHZvaWQgc3RhcnRTYW1wbGluZygpOwotICAgICAgICB2b2lkIHN0b3BTYW1wbGlu
ZygpOwotICAgICAgICB2b2lkIGR1bXBTYW1wbGVEYXRhKEV4ZWNTdGF0ZSogZXhlYyk7CisgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc3RhcnRTYW1wbGluZygpOworICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIHN0b3BTYW1wbGluZygpOworICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkIGR1bXBTYW1wbGVEYXRhKEV4ZWNTdGF0ZSogZXhlYyk7CiAgICAgICAgIHZvaWQg
cmVjb21waWxlQWxsSlNGdW5jdGlvbnMoKTsKICAgICAgICAgUmVnRXhwQ2FjaGUqIHJlZ0V4cENh
Y2hlKCkgeyByZXR1cm4gbV9yZWdFeHBDYWNoZTsgfQogI2lmIEVOQUJMRShSRUdFWFBfVFJBQ0lO
RykKICAgICAgICAgdm9pZCBhZGRSZWdFeHBUb1RyYWNlKFBhc3NSZWZQdHI8UmVnRXhwPiByZWdF
eHApOwogI2VuZGlmCi0gICAgICAgIHZvaWQgZHVtcFJlZ0V4cFRyYWNlKCk7Ci0gICAgICAgIHZv
aWQgY2xlYXJCdWlsdGluU3RydWN0dXJlcygpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2
b2lkIGR1bXBSZWdFeHBUcmFjZSgpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGNs
ZWFyQnVpbHRpblN0cnVjdHVyZXMoKTsKIAogICAgICAgICBib29sIGlzQ29sbGVjdG9yQnVzeSgp
IHsgcmV0dXJuIGhlYXAuaXNCdXN5KCk7IH0KLSAgICAgICAgdm9pZCByZWxlYXNlRXhlY3V0YWJs
ZU1lbW9yeSgpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHJlbGVhc2VFeGVjdXRh
YmxlTWVtb3J5KCk7CiAKICNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikKICAgICAgICAgYm9vbCBp
c0luaXRpYWxpemluZ09iamVjdCgpIGNvbnN0OyAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDFjYWE4YjE4NzZmZDAxMWIzZWMwOTFjNWZh
MTJhZDQ0ZTM1YTQ0YTguLjRjODIwMGE3NmQwYzhiZjM1MGQzYTgyMWNjNWI3MmM3Njg1NWI1YzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApA
QCAtMTkyLDIwICsxOTIsMjAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHB1
YmxpYzoKLSAgICAgICAgfkpTR2xvYmFsT2JqZWN0KCk7Ci0gICAgICAgIHN0YXRpYyB2b2lkIGRl
c3Ryb3koSlNDZWxsKik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIH5KU0dsb2JhbE9iamVj
dCgpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2Vs
bCopOwogCi0gICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZp
c2l0b3ImKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgdmlzaXRDaGls
ZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCi0gICAgICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJv
cGVydHlTbG90Jik7Ci0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRv
cihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZ2V0T3duUHJv
cGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0
eVNsb3QmKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYs
IFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgICAgICBib29sIGhhc093blByb3BlcnR5Rm9yV3Jp
dGUoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYpOwotICAgICAgICBzdGF0aWMgdm9pZCBw
dXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBwdXQo
SlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUsIFB1dFByb3Bl
cnR5U2xvdCYpOwogCi0gICAgICAgIHN0YXRpYyB2b2lkIHB1dFdpdGhBdHRyaWJ1dGVzKEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IHZvaWQgcHV0V2l0aEF0dHJpYnV0ZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogCi0g
ICAgICAgIHN0YXRpYyB2b2lkIGRlZmluZUdldHRlcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPYmplY3QqIGdldHRlckZ1bmMsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMpOwotICAgICAgICBzdGF0aWMgdm9pZCBkZWZpbmVTZXR0ZXIoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0
KiBzZXR0ZXJGdW5jLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIHZvaWQgZGVmaW5lR2V0dGVyKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU09iamVjdCogZ2V0dGVyRnVuYywgdW5zaWdu
ZWQgYXR0cmlidXRlcyk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGRl
ZmluZVNldHRlcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgSlNPYmplY3QqIHNldHRlckZ1bmMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogCiAg
ICAgICAgIC8vIFdlIHVzZSB0aGlzIGluIHRoZSBjb2RlIGdlbmVyYXRvciBhcyB3ZSBwZXJmb3Jt
IHN5bWJvbCB0YWJsZQogICAgICAgICAvLyBsb29rdXBzIHByaW9yIHRvIGluaXRpYWxpemluZyB0
aGUgcHJvcGVydGllcwpAQCAtMjgzLDcgKzI4Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
ICAgIFNjb3BlQ2hhaW5Ob2RlKiBnbG9iYWxTY29wZUNoYWluKCkgeyByZXR1cm4gbV9nbG9iYWxT
Y29wZUNoYWluLmdldCgpOyB9CiAKLSAgICAgICAgRXhlY1N0YXRlKiBnbG9iYWxFeGVjKCk7Cisg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEV4ZWNTdGF0ZSogZ2xvYmFsRXhlYygpOwogCiAgICAg
ICAgIHN0YXRpYyBib29sIHNob3VsZEludGVycnVwdFNjcmlwdChjb25zdCBKU0dsb2JhbE9iamVj
dCopIHsgcmV0dXJuIHRydWU7IH0KIApAQCAtMzMyLDE3ICszMzIsMTcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlOwogICAgICAgICAgICAgdW5zaWduZWQgYXR0
cmlidXRlczsKICAgICAgICAgfTsKLSAgICAgICAgdm9pZCBhZGRTdGF0aWNHbG9iYWxzKEdsb2Jh
bFByb3BlcnR5SW5mbyosIGludCBjb3VudCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZv
aWQgYWRkU3RhdGljR2xvYmFscyhHbG9iYWxQcm9wZXJ0eUluZm8qLCBpbnQgY291bnQpOwogCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgLy8gRklYTUU6IEZvbGQgcmVzZXQgaW50byBpbml0LgotICAg
ICAgICB2b2lkIGluaXQoSlNPYmplY3QqIHRoaXNWYWx1ZSk7CisgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHZvaWQgaW5pdChKU09iamVjdCogdGhpc1ZhbHVlKTsKICAgICAgICAgdm9pZCByZXNl
dChKU1ZhbHVlIHByb3RvdHlwZSk7CiAKICAgICAgICAgdm9pZCBjcmVhdGVUaHJvd1R5cGVFcnJv
cihFeGVjU3RhdGUqKTsKIAogICAgICAgICB2b2lkIHNldFJlZ2lzdGVycyhXcml0ZUJhcnJpZXI8
VW5rbm93bj4qIHJlZ2lzdGVycywgUGFzc093bkFycmF5UHRyPFdyaXRlQmFycmllcjxVbmtub3du
PiA+IHJlZ2lzdGVyQXJyYXksIHNpemVfdCBjb3VudCk7Ci0gICAgICAgIHN0YXRpYyB2b2lkIGNs
ZWFyUmFyZURhdGEoSlNDZWxsKik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2
b2lkIGNsZWFyUmFyZURhdGEoSlNDZWxsKik7CiAgICAgfTsKIAogICAgIEpTR2xvYmFsT2JqZWN0
KiBhc0dsb2JhbE9iamVjdChKU1ZhbHVlKTsKQEAgLTQ4OCw3ICs0ODgsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICBjbGFzcyBEeW5hbWljR2xvYmFsT2JqZWN0U2NvcGUgewogICAgICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShEeW5hbWljR2xvYmFsT2JqZWN0U2NvcGUpOwogICAgIHB1YmxpYzoK
LSAgICAgICAgRHluYW1pY0dsb2JhbE9iamVjdFNjb3BlKEpTR2xvYmFsRGF0YSYsIEpTR2xvYmFs
T2JqZWN0Kik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIER5bmFtaWNHbG9iYWxPYmplY3RT
Y29wZShKU0dsb2JhbERhdGEmLCBKU0dsb2JhbE9iamVjdCopOwogCiAgICAgICAgIH5EeW5hbWlj
R2xvYmFsT2JqZWN0U2NvcGUoKQogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbFRoaXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsVGhpcy5oCmluZGV4IGZhNWRlMDQ5MWNkMDUyZTlmYmVhOGRlZmM0YTVj
ZmNiZGFhMmE4ZmIuLmZhNWMyZWIzNGQ2MmNkYzk5MDkzMmNjN2I4YzE0MmNmMWU5MjY2YWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsVGhpcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsVGhpcy5oCkBAIC02Myw3
ICs2Myw3IEBAIHByb3RlY3RlZDoKIAogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsK
IAotICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsK
KyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCos
IFNsb3RWaXNpdG9yJik7CiAKICAgICBXcml0ZUJhcnJpZXI8SlNHbG9iYWxPYmplY3Q+IG1fdW53
cmFwcGVkT2JqZWN0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmgKaW5k
ZXggN2IwN2I0ZmIzZGE1ZTRlODJlMDA1YzUyNDQ1NjVjOWE2NzBiZjg3Zi4uYTBlYjk2OTc1YTY1
OTcwMGIyMjE0MDI2ZDkwYmY0Mjc0YjFkNDM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNMb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNMb2NrLmgKQEAgLTU2LDcgKzU2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3Mg
SlNMb2NrIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSlNMb2NrKTsKICAgICBwdWJs
aWM6Ci0gICAgICAgIEpTTG9jayhFeGVjU3RhdGUqKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgSlNMb2NrKEV4ZWNTdGF0ZSopOwogICAgICAgICBKU0xvY2soSlNHbG9iYWxEYXRhKik7CiAK
ICAgICAgICAgSlNMb2NrKEpTTG9ja0JlaGF2aW9yIGxvY2tCZWhhdmlvcikKQEAgLTgwLDIyICs4
MCwyMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHVubG9jayhtX2xvY2tCZWhhdmlv
cik7IAogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBzdGF0aWMgdm9pZCBsb2NrKEpTTG9j
a0JlaGF2aW9yKTsKLSAgICAgICAgc3RhdGljIHZvaWQgdW5sb2NrKEpTTG9ja0JlaGF2aW9yKTsK
KyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgbG9jayhKU0xvY2tCZWhhdmlv
cik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHVubG9jayhKU0xvY2tC
ZWhhdmlvcik7CiAgICAgICAgIHN0YXRpYyB2b2lkIGxvY2soRXhlY1N0YXRlKik7CiAgICAgICAg
IHN0YXRpYyB2b2lkIHVubG9jayhFeGVjU3RhdGUqKTsKIAotICAgICAgICBzdGF0aWMgaW50cHRy
X3QgbG9ja0NvdW50KCk7Ci0gICAgICAgIHN0YXRpYyBib29sIGN1cnJlbnRUaHJlYWRJc0hvbGRp
bmdMb2NrKCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBpbnRwdHJfdCBsb2Nr
Q291bnQoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgY3VycmVudFRo
cmVhZElzSG9sZGluZ0xvY2soKTsKIAogICAgICAgICBKU0xvY2tCZWhhdmlvciBtX2xvY2tCZWhh
dmlvcjsKIAogICAgICAgICBjbGFzcyBEcm9wQWxsTG9ja3MgewogICAgICAgICAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoRHJvcEFsbExvY2tzKTsKICAgICAgICAgcHVibGljOgotICAgICAgICAg
ICAgRHJvcEFsbExvY2tzKEV4ZWNTdGF0ZSogZXhlYyk7Ci0gICAgICAgICAgICBEcm9wQWxsTG9j
a3MoSlNMb2NrQmVoYXZpb3IpOwotICAgICAgICAgICAgfkRyb3BBbGxMb2NrcygpOworICAgICAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgRHJvcEFsbExvY2tzKEV4ZWNTdGF0ZSogZXhlYyk7Cisg
ICAgICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBEcm9wQWxsTG9ja3MoSlNMb2NrQmVoYXZpb3Ip
OworICAgICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgfkRyb3BBbGxMb2NrcygpOwogICAgICAg
ICAgICAgCiAgICAgICAgIHByaXZhdGU6CiAgICAgICAgICAgICBpbnRwdHJfdCBtX2xvY2tDb3Vu
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4IGUyNjAxMmRk
OTE0NmI1YmMyNGFhNDM0NTkxY2ExYjMzMjNmNWMyMWQuLjQ4ODI5ZmFlNmUwNjBkMTM1MmZjNjE3
ZDkzOTBmMzAzOTFmYjk2OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuaApAQCAtNTUsNyArNTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBTdHJ1Y3R1
cmU7CiAgICAgc3RydWN0IEhhc2hUYWJsZTsKIAotICAgIEpTT2JqZWN0KiB0aHJvd1R5cGVFcnJv
cihFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNP
YmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsKICAgICBl
eHRlcm4gSlNfRVhQT1JUREFUQSBjb25zdCBjaGFyKiBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0
eVdyaXRlRXJyb3I7CiAKICAgICAvLyBFQ01BIDI2Mi0zIDguNi4xCkBAIC03NSwxNiArNzUsMTYg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgICAgIGZy
aWVuZCBjbGFzcyBKU0NlbGw7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRCbG9jazsKLSAg
ICAgICAgZnJpZW5kIGJvb2wgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBIYXNoRW50cnkqIGVudHJ5LCBKU09iamVjdCogdGhpc09iaiwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpOworICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSBmcmllbmQgYm9vbCBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IEhhc2hFbnRyeSogZW50cnksIEpTT2JqZWN0KiB0aGlzT2JqLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCk7CiAKICAgICBwdWJs
aWM6CiAgICAgICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CiAKLSAgICAgICAgc3RhdGljIHZvaWQg
ZGVzdHJveShKU0NlbGwqKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQg
ZGVzdHJveShKU0NlbGwqKTsKIAotICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpT
Q2VsbCosIFNsb3RWaXNpdG9yJik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2
b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAotICAgICAgICBzdGF0
aWMgVVN0cmluZyBjbGFzc05hbWUoY29uc3QgSlNPYmplY3QqKTsKKyAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIFVTdHJpbmcgY2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0Kik7CiAKICAg
ICAgICAgc3RhdGljIHZvaWQgZmluYWxpemUoSlNDZWxsKik7CiAKQEAgLTk5LDQzICs5OSw0MyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBib29sIGdldFByb3BlcnR5U2xvdChFeGVjU3Rh
dGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAg
ICAgICBib29sIGdldFByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYpOwotICAgICAgICBib29sIGdldFByb3BlcnR5RGVzY3JpcHRvcihF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3Jp
cHRvciYpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGdldFByb3BlcnR5RGVzY3Jp
cHRvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
RGVzY3JpcHRvciYpOwogCiAgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChK
U0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYpOwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4
KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
Jik7Ci0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVj
dCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsK
KyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90
QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVy
JiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKLSAgICAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2Vs
bCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwg
UHV0UHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDZWxs
KiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlKTsKKyAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7
CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDZWxs
KiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlKTsKIAotICAgICAg
ICBzdGF0aWMgdm9pZCBwdXRXaXRoQXR0cmlidXRlcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRl
cyk7Ci0gICAgICAgIHZvaWQgcHV0V2l0aEF0dHJpYnV0ZXMoSlNHbG9iYWxEYXRhKiwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsK
KyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0V2l0aEF0dHJpYnV0ZXMo
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2
b2lkIHB1dFdpdGhBdHRyaWJ1dGVzKEpTR2xvYmFsRGF0YSosIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAKICAgICAgICAgYm9v
bCBwcm9wZXJ0eUlzRW51bWVyYWJsZShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUpIGNvbnN0OwogCi0gICAgICAgIGJvb2wgaGFzUHJvcGVydHkoRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKSBjb25zdDsKLSAgICAgICAgYm9vbCBoYXNQ
cm9wZXJ0eShFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpIGNvbnN0OworICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSBib29sIGhhc1Byb3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IGJvb2wgaGFzUHJvcGVydHkoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKSBjb25z
dDsKICAgICAgICAgYm9vbCBoYXNPd25Qcm9wZXJ0eShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUpIGNvbnN0OwogCi0gICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSk7Ci0gICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBF
eGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5z
aWduZWQgcHJvcGVydHlOYW1lKTsKIAotICAgICAgICBzdGF0aWMgSlNWYWx1ZSBkZWZhdWx0VmFs
dWUoY29uc3QgSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKTsK
KyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTVmFsdWUgZGVmYXVsdFZhbHVlKGNv
bnN0IEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSk7CiAKLSAg
ICAgICAgc3RhdGljIGJvb2wgaGFzSW5zdGFuY2UoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBKU1Zh
bHVlLCBKU1ZhbHVlIHByb3RvdHlwZVByb3BlcnR5KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIGJvb2wgaGFzSW5zdGFuY2UoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBKU1ZhbHVl
LCBKU1ZhbHVlIHByb3RvdHlwZVByb3BlcnR5KTsKIAotICAgICAgICBzdGF0aWMgdm9pZCBnZXRP
d25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkm
LCBFbnVtZXJhdGlvbk1vZGUpOwotICAgICAgICBzdGF0aWMgdm9pZCBnZXRQcm9wZXJ0eU5hbWVz
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1v
ZGUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0
eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJh
dGlvbk1vZGUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRQcm9w
ZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVt
ZXJhdGlvbk1vZGUpOwogCiAgICAgICAgIEpTVmFsdWUgdG9QcmltaXRpdmUoRXhlY1N0YXRlKiwg
UHJlZmVycmVkUHJpbWl0aXZlVHlwZSA9IE5vUHJlZmVyZW5jZSkgY29uc3Q7Ci0gICAgICAgIGJv
b2wgdG9Cb29sZWFuKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBib29sIHRvQm9vbGVhbihFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAgYm9vbCBnZXRQcmlt
aXRpdmVOdW1iZXIoRXhlY1N0YXRlKiwgZG91YmxlJiBudW1iZXIsIEpTVmFsdWUmKSBjb25zdDsK
LSAgICAgICAgZG91YmxlIHRvTnVtYmVyKEV4ZWNTdGF0ZSopIGNvbnN0OwotICAgICAgICBVU3Ry
aW5nIHRvU3RyaW5nKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBkb3VibGUgdG9OdW1iZXIoRXhlY1N0YXRlKikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIFVTdHJpbmcgdG9TdHJpbmcoRXhlY1N0YXRlKikgY29uc3Q7CiAKICAgICAgICAgLy8g
Tk9URTogSlNPYmplY3QgYW5kIGl0cyBzdWJjbGFzc2VzIG11c3QgYmUgYWJsZSB0byBncmFjZWZ1
bGx5IGhhbmRsZSBFeGVjU3RhdGUqID0gMCwKICAgICAgICAgLy8gYmVjYXVzZSB0aGlzIGNhbGwg
bWF5IGNvbWUgZnJvbSBpbnNpZGUgdGhlIGNvbXBpbGVyLgotICAgICAgICBzdGF0aWMgSlNPYmpl
Y3QqIHRvVGhpc09iamVjdChKU0NlbGwqLCBFeGVjU3RhdGUqKTsKKyAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIEpTT2JqZWN0KiB0b1RoaXNPYmplY3QoSlNDZWxsKiwgRXhlY1N0YXRl
Kik7CiAgICAgICAgIEpTT2JqZWN0KiB1bndyYXBwZWRPYmplY3QoKTsKIAogICAgICAgICBib29s
IGdldFByb3BlcnR5U3BlY2lmaWNWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgSlNDZWxsKiYgc3BlY2lmaWNGdW5jdGlvbikgY29uc3Q7CkBAIC0x
ODIsMTQgKzE4MiwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBwdXREaXJlY3RP
ZmZzZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBzaXplX3Qgb2Zmc2V0LCBKU1ZhbHVlIHZh
bHVlKSB7IHByb3BlcnR5U3RvcmFnZSgpW29mZnNldF0uc2V0KGdsb2JhbERhdGEsIHRoaXMsIHZh
bHVlKTsgfQogICAgICAgICB2b2lkIHB1dFVuZGVmaW5lZEF0RGlyZWN0T2Zmc2V0KHNpemVfdCBv
ZmZzZXQpIHsgcHJvcGVydHlTdG9yYWdlKClbb2Zmc2V0XS5zZXRVbmRlZmluZWQoKTsgfQogCi0g
ICAgICAgIHZvaWQgZmlsbEdldHRlclByb3BlcnR5U2xvdChQcm9wZXJ0eVNsb3QmLCBXcml0ZUJh
cnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IHZvaWQgZmlsbEdldHRlclByb3BlcnR5U2xvdChQcm9wZXJ0eVNsb3QmLCBXcml0ZUJhcnJpZXJC
YXNlPFVua25vd24+KiBsb2NhdGlvbik7CiAgICAgICAgIHZvaWQgaW5pdGlhbGl6ZUdldHRlclNl
dHRlclByb3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBHZXR0ZXJTZXR0ZXIq
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKIAotICAgICAgICBzdGF0aWMgdm9pZCBkZWZpbmVHZXR0
ZXIoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IEpTT2JqZWN0KiBnZXR0ZXJGdW5jdGlvbiwgdW5zaWduZWQgYXR0cmlidXRlcyA9IDApOwotICAg
ICAgICBzdGF0aWMgdm9pZCBkZWZpbmVTZXR0ZXIoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBzZXR0ZXJGdW5jdGlvbiwgdW5z
aWduZWQgYXR0cmlidXRlcyA9IDApOwotICAgICAgICBKU1ZhbHVlIGxvb2t1cEdldHRlcihFeGVj
U3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOwotICAgICAgICBKU1ZhbHVl
IGxvb2t1cFNldHRlcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUp
OwotICAgICAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNT
dGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9y
JiwgYm9vbCBzaG91bGRUaHJvdyk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2
b2lkIGRlZmluZUdldHRlcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgSlNPYmplY3QqIGdldHRlckZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyaWJ1
dGVzID0gMCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGRlZmluZVNl
dHRlcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgSlNPYmplY3QqIHNldHRlckZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gMCk7Cisg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgbG9va3VwR2V0dGVyKEV4ZWNTdGF0ZSos
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIEpTVmFsdWUgbG9va3VwU2V0dGVyKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlZmlu
ZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKIAogICAg
ICAgICBib29sIGlzR2xvYmFsT2JqZWN0KCkgY29uc3Q7CiAgICAgICAgIGJvb2wgaXNWYXJpYWJs
ZU9iamVjdCgpIGNvbnN0OwpAQCAtMTk5LDcgKzE5OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgICAgIHZvaWQgc2VhbChKU0dsb2JhbERhdGEmKTsKICAgICAgICAgdm9pZCBmcmVlemUoSlNH
bG9iYWxEYXRhJik7Ci0gICAgICAgIHZvaWQgcHJldmVudEV4dGVuc2lvbnMoSlNHbG9iYWxEYXRh
Jik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcHJldmVudEV4dGVuc2lvbnMoSlNH
bG9iYWxEYXRhJik7CiAgICAgICAgIGJvb2wgaXNTZWFsZWQoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhKSB7IHJldHVybiBzdHJ1Y3R1cmUoKS0+aXNTZWFsZWQoZ2xvYmFsRGF0YSk7IH0KICAgICAg
ICAgYm9vbCBpc0Zyb3plbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpIHsgcmV0dXJuIHN0cnVj
dHVyZSgpLT5pc0Zyb3plbihnbG9iYWxEYXRhKTsgfQogICAgICAgICBib29sIGlzRXh0ZW5zaWJs
ZSgpIHsgcmV0dXJuIHN0cnVjdHVyZSgpLT5pc0V4dGVuc2libGUoKTsgfQpAQCAtMjA3LDcgKzIw
Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIHN0YXRpY0Z1bmN0aW9uc1JlaWZp
ZWQoKSB7IHJldHVybiBzdHJ1Y3R1cmUoKS0+c3RhdGljRnVuY3Rpb25zUmVpZmllZCgpOyB9CiAg
ICAgICAgIHZvaWQgcmVpZnlTdGF0aWNGdW5jdGlvbnNGb3JEZWxldGUoRXhlY1N0YXRlKiBleGVj
KTsKIAotICAgICAgICB2b2lkIGFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKEpTR2xvYmFsRGF0YSYs
IHNpemVfdCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UoSlNHbG9iYWxEYXRhJiwgc2l6ZV90IG9s
ZFNpemUsIHNpemVfdCBuZXdTaXplKTsKICAgICAgICAgYm9vbCBpc1VzaW5nSW5saW5lU3RvcmFn
ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPihtX3Byb3BlcnR5U3Rv
cmFnZS5nZXQoKSkgPT0gc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KHRoaXMgKyAxKTsgfQogCiAg
ICAgICAgIHZvaWQqIGFkZHJlc3NPZlByb3BlcnR5U3RvcmFnZSgpCkBAIC0zMTcsNyArMzE3LDcg
QEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcmFnZUNhcGFjaXR5ID49
IEpTTm9uRmluYWxPYmplY3RfaW5saW5lU3QKICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6
OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2Jq
ZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCAmc19pbmZvKTsKICAgICAgICAgfQogCi0gICAgICAg
IHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAg
IGV4cGxpY2l0IEpTTm9uRmluYWxPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3RyaW5nLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5o
CmluZGV4IGY0MDQ1NTU3MTQ3ZGIwZjI5YjhlZWI2Yzc4MTQ2OTQ5NjcyMGZlMjQuLjk1M2RhYzc0
YjJiOTliYmE2NzU4ZWRjZDAwMjhiNmJiZTg3OTEyNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTdHJpbmcuaApAQCAtMjE0LDcgKzIxNCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICB1bnNpZ25lZCBsZW5ndGgoKSB7IHJldHVybiBtX2xlbmd0aDsgfQogCiAgICAgICAg
IEpTVmFsdWUgdG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkg
Y29uc3Q7Ci0gICAgICAgIGJvb2wgdG9Cb29sZWFuKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSBib29sIHRvQm9vbGVhbihFeGVjU3RhdGUqKSBjb25zdDsKICAg
ICAgICAgYm9vbCBnZXRQcmltaXRpdmVOdW1iZXIoRXhlY1N0YXRlKiwgZG91YmxlJiBudW1iZXIs
IEpTVmFsdWUmKSBjb25zdDsKICAgICAgICAgSlNPYmplY3QqIHRvT2JqZWN0KEV4ZWNTdGF0ZSos
IEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CiAgICAgICAgIFVTdHJpbmcgdG9TdHJpbmcoRXhlY1N0
YXRlKikgY29uc3Q7CkBAIC0yMzYsMTIgKzIzNiwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZkxlbmd0aCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRP
RihKU1N0cmluZywgbV9sZW5ndGgpOyB9CiAgICAgICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZW
YWx1ZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU1N0cmluZywgbV92YWx1ZSk7IH0KIAot
ICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKKyAgICAgICAgSlNfRVhQT1JU
REFUQSBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAgICAgICBzdGF0aWMgdm9p
ZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKICAgICBwcml2YXRlOgot
ICAgICAgICB2b2lkIHJlc29sdmVSb3BlKEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIHJlc29sdmVSb3BlKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAg
ICB2b2lkIHJlc29sdmVSb3BlU2xvd0Nhc2U4KExDaGFyKikgY29uc3Q7CiAgICAgICAgIHZvaWQg
cmVzb2x2ZVJvcGVTbG93Q2FzZShVQ2hhciopIGNvbnN0OwogICAgICAgICB2b2lkIG91dE9mTWVt
b3J5KEV4ZWNTdGF0ZSopIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1
ZS5oCmluZGV4IGEwMDEwNjI3NGZlYjk3YjMzNTE2Yjg4NzljMzRmZmNhMGNjYzBhYzYuLmU0M2M5
MmI5MjRjZjc5YmU0NzRjYzUwMTZmMjEzNTdkYWQ2ZTA0YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1ZhbHVlLmgKQEAgLTkzLDcgKzkzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgfTsKIAogICAgIC8vIFRoaXMgaW1wbGVtZW50cyBUb0ludDMyLCBkZWZpbmVkIGluIEVDTUEt
MjYyIDkuNS4KLSAgICBpbnQzMl90IHRvSW50MzIoZG91YmxlKTsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSBpbnQzMl90IHRvSW50MzIoZG91YmxlKTsKIAogICAgIC8vIFRoaXMgaW1wbGVtZW50cyBU
b1VJbnQzMiwgZGVmaW5lZCBpbiBFQ01BLTI2MiA5LjYuCiAgICAgaW5saW5lIHVpbnQzMl90IHRv
VUludDMyKGRvdWJsZSBudW1iZXIpCkBAIC0yMDMsNyArMjAzLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIEpTT2JqZWN0KiB0b09iamVjdChFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCop
IGNvbnN0OwogCiAgICAgICAgIC8vIEludGVnZXIgY29udmVyc2lvbnMuCi0gICAgICAgIGRvdWJs
ZSB0b0ludGVnZXIoRXhlY1N0YXRlKikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IGRvdWJsZSB0b0ludGVnZXIoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIGRvdWJsZSB0b0lu
dGVnZXJQcmVzZXJ2ZU5hTihFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAgaW50MzJfdCB0b0lu
dDMyKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgICB1aW50MzJfdCB0b1VJbnQzMihFeGVjU3Rh
dGUqKSBjb25zdDsKQEAgLTIzMiw3ICsyMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAg
ICBib29sIGlzQ2VsbCgpIGNvbnN0OwogICAgICAgICBKU0NlbGwqIGFzQ2VsbCgpIGNvbnN0Owot
ICAgICAgICBib29sIGlzVmFsaWRDYWxsZWUoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
Ym9vbCBpc1ZhbGlkQ2FsbGVlKCk7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgIGNoYXIqIGRl
c2NyaXB0aW9uKCk7CkBAIC0yNDUsMTEgKzI0NSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgSlNWYWx1ZShIYXNoVGFibGVEZWxldGVkVmFsdWVUYWcpOwogCiAgICAgICAgIGlubGluZSBj
b25zdCBKU1ZhbHVlIGFzVmFsdWUoKSBjb25zdCB7IHJldHVybiAqdGhpczsgfQotICAgICAgICBk
b3VibGUgdG9OdW1iZXJTbG93Q2FzZShFeGVjU3RhdGUqKSBjb25zdDsKLSAgICAgICAgSlNPYmpl
Y3QqIHRvT2JqZWN0U2xvd0Nhc2UoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqKSBjb25zdDsK
LSAgICAgICAgSlNPYmplY3QqIHRvVGhpc09iamVjdFNsb3dDYXNlKEV4ZWNTdGF0ZSopIGNvbnN0
OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBkb3VibGUgdG9OdW1iZXJTbG93Q2FzZShFeGVj
U3RhdGUqKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRvT2Jq
ZWN0U2xvd0Nhc2UoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKKyAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRvVGhpc09iamVjdFNsb3dDYXNlKEV4ZWNTdGF0
ZSopIGNvbnN0OwogCi0gICAgICAgIEpTT2JqZWN0KiBzeW50aGVzaXplUHJvdG90eXBlKEV4ZWNT
dGF0ZSopIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogc3ludGhl
c2l6ZVByb3RvdHlwZShFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAgSlNPYmplY3QqIHN5bnRo
ZXNpemVPYmplY3QoRXhlY1N0YXRlKikgY29uc3Q7CiAKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVj
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCmlu
ZGV4IDc4ZTYyNGUwMmNmZjliNWYwNjFhYmQwYjM0NjE2MWUyYjJmODRiOWIuLjA4NjU5YjEyY2Ex
NTIzMDI4MWE1MWRjN2Y3YjMwMDc4YzBkOGNkZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgKQEAgLTQ4LDEyICs0OCwxMiBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgICAgICBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUoKSBjb25zdCB7
IHJldHVybiAqbV9zeW1ib2xUYWJsZTsgfQogCi0gICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3ko
SlNDZWxsKik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGRlc3Ryb3ko
SlNDZWxsKik7CiAKICAgICAgICAgc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQg
cHV0V2l0aEF0dHJpYnV0ZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVy
JiwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAKLSAgICAgICAgc3RhdGljIGJvb2wg
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYpOwot
ICAgICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOworICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3Rh
dGUqLCBjb25zdCBJZGVudGlmaWVyJik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAgICAgICAgIAogICAgICAgICBib29sIGlz
RHluYW1pY1Njb3BlKGJvb2wmIHJlcXVpcmVzRHluYW1pY0NoZWNrcykgY29uc3Q7CiAKQEAgLTg4
LDcgKzg4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgc2V0UmVnaXN0ZXJzKFdy
aXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJzLCBQYXNzT3duQXJyYXlQdHI8V3JpdGVCYXJy
aWVyPFVua25vd24+ID4gcmVnaXN0ZXJBcnJheSk7CiAKICAgICAgICAgYm9vbCBzeW1ib2xUYWJs
ZUdldChjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIGJvb2wgc3lt
Ym9sVGFibGVHZXQoY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOworICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHN5bWJvbFRhYmxlR2V0KGNvbnN0IElkZW50aWZp
ZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICAgICAgYm9vbCBzeW1ib2xUYWJsZUdldChj
b25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90JiwgYm9vbCYgc2xvdElzV3JpdGVhYmxlKTsK
ICAgICAgICAgYm9vbCBzeW1ib2xUYWJsZVB1dChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVy
JiwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAgICAgICAgIGJvb2wgc3ltYm9sVGFibGVQ
dXRXaXRoQXR0cmlidXRlcyhKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1
ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Mb29rdXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1
cC5oCmluZGV4IDhlZDcwYjQxZDU3M2MyODIyZWMzZTZhNGZlMmExZDc5ZGUzNGQ5ZTAuLjY0ZDA2
YjUwMzdiMWQ2ZGUxYTBiNzViYWU5NjI1MTJhOThlZDEwNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0xvb2t1cC5oCkBAIC0xMjYsNyArMTI2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgICAgICAgICAgY3JlYXRlVGFibGUoJmV4ZWMtPmdsb2JhbERhdGEoKSk7CiAgICAgICAg
IH0KIAotICAgICAgICB2b2lkIGRlbGV0ZVRhYmxlKCkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9S
VF9QUklWQVRFIHZvaWQgZGVsZXRlVGFibGUoKSBjb25zdDsKIAogICAgICAgICAvLyBGaW5kIGFu
IGVudHJ5IGluIHRoZSB0YWJsZSwgYW5kIHJldHVybiB0aGUgZW50cnkuCiAgICAgICAgIEFMV0FZ
U19JTkxJTkUgY29uc3QgSGFzaEVudHJ5KiBlbnRyeShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEs
IGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpIGNvbnN0CkBAIC0yMTgsMTAgKzIxOCwxMCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgICAgIC8vIENvbnZlcnQgdGhlIGhh
c2ggdGFibGUga2V5cyB0byBpZGVudGlmaWVycy4KLSAgICAgICAgdm9pZCBjcmVhdGVUYWJsZShK
U0dsb2JhbERhdGEqKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBjcmVh
dGVUYWJsZShKU0dsb2JhbERhdGEqKSBjb25zdDsKICAgICB9OwogCi0gICAgYm9vbCBzZXRVcFN0
YXRpY0Z1bmN0aW9uU2xvdChFeGVjU3RhdGUqLCBjb25zdCBIYXNoRW50cnkqLCBKU09iamVjdCog
dGhpc09iamVjdCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4
ZWNTdGF0ZSosIGNvbnN0IEhhc2hFbnRyeSosIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogCiAgICAgLyoqCiAgICAg
ICogVGhpcyBtZXRob2QgZG9lcyBpdCBhbGwgKGxvb2tpbmcgaW4gdGhlIGhhc2h0YWJsZSwgY2hl
Y2tpbmcgZm9yIGZ1bmN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9NZW1vcnlTdGF0aXN0aWNzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9N
ZW1vcnlTdGF0aXN0aWNzLmgKaW5kZXggZDRiOGI2ZmMxMDE4YWMwNmE4NDU3MmU2MjljZWZjZWIz
YTYwYzRlYi4uOWE4NmRmMjk2ODU4MjJkYTk1YjU4NGJmN2ViNzQ4YWFhMjE0NGQyYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWVtb3J5U3RhdGlzdGljcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01lbW9yeVN0YXRpc3RpY3MuaApAQCAt
MzcsNyArMzcsNyBAQCBzdHJ1Y3QgR2xvYmFsTWVtb3J5U3RhdGlzdGljcyB7CiAgICAgc2l6ZV90
IEpJVEJ5dGVzOwogfTsKIAotR2xvYmFsTWVtb3J5U3RhdGlzdGljcyBnbG9iYWxNZW1vcnlTdGF0
aXN0aWNzKCk7CitKU19FWFBPUlRfUFJJVkFURSBHbG9iYWxNZW1vcnlTdGF0aXN0aWNzIGdsb2Jh
bE1lbW9yeVN0YXRpc3RpY3MoKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09iamVjdFByb3RvdHlwZS5oCmluZGV4IDc4YjFjYmQzOTgzZDAwMzMwNzE4ZDI0MjMx
NWU3ZTdiMjBiZjJhZTkuLjRjNDllOTdhNzE1M2M4ZTU3ZDE2ODc3NWEzNDNkNDU4OGRiNzEyNmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlw
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5o
CkBAIC01OSw3ICs1OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIG1faGFzTm9Q
cm9wZXJ0aWVzV2l0aFVJbnQzMk5hbWVzOwogICAgIH07CiAKLSAgICBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSopOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9G
dW5jVG9TdHJpbmcoRXhlY1N0YXRlKik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKaW5kZXggZjdjYzVmNGU4ZWE2YWM2Y2Y1MjUz
NDM4ZDVmMzczMTg1NzcyNmI4ZC4uZmVlYmQzN2JiZjY3NjI2NjU4YzE5N2ZkNTlhZjM2ZWRmZGZm
Y2E4YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaApAQCAtNzMsOCAr
NzMsOCBAQCBleHRlcm4gdW5zaWduZWQgZ2NNYXJrU3RhY2tTZWdtZW50U2l6ZTsKIGV4dGVybiB1
bnNpZ25lZCBtaW5pbXVtTnVtYmVyT2ZDZWxsc1RvS2VlcDsKIGV4dGVybiB1bnNpZ25lZCBtYXhp
bXVtTnVtYmVyT2ZTaGFyZWRTZWdtZW50czsKIGV4dGVybiB1bnNpZ25lZCBzaGFyZWRTdGFja1dh
a2V1cFRocmVzaG9sZDsKLWV4dGVybiB1bnNpZ25lZCBudW1iZXJPZkdDTWFya2VyczsKLWV4dGVy
biB1bnNpZ25lZCBvcGFxdWVSb290TWVyZ2VUaHJlc2hvbGQ7CitKU19FWFBPUlREQVRBIGV4dGVy
biB1bnNpZ25lZCBudW1iZXJPZkdDTWFya2VyczsKK0pTX0VYUE9SVERBVEEgZXh0ZXJuIHVuc2ln
bmVkIG9wYXF1ZVJvb3RNZXJnZVRocmVzaG9sZDsKIAogdm9pZCBpbml0aWFsaXplT3B0aW9ucygp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eURl
c2NyaXB0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5RGVzY3Jp
cHRvci5oCmluZGV4IDNkNDgxYjI1ZTQ0ZTBkOWM0MmM1MTEwZTU4ZGUzYjZjM2ZiMGM5ODguLjc5
YTlhOTFlNzM2M2I0ZjNiYTNhZDVkNzljNTJmOGQ1OGFhNGYwYzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oCkBAIC00MSwyNSAr
NDEsMjUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAsIG1fc2VlbkF0dHJpYnV0ZXMo
MCkKICAgICAgICAgewogICAgICAgICB9Ci0gICAgICAgIGJvb2wgd3JpdGFibGUoKSBjb25zdDsK
LSAgICAgICAgYm9vbCBlbnVtZXJhYmxlKCkgY29uc3Q7Ci0gICAgICAgIGJvb2wgY29uZmlndXJh
YmxlKCkgY29uc3Q7Ci0gICAgICAgIGJvb2wgaXNEYXRhRGVzY3JpcHRvcigpIGNvbnN0OworICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHdyaXRhYmxlKCkgY29uc3Q7CisgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIGJvb2wgZW51bWVyYWJsZSgpIGNvbnN0OworICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSBib29sIGNvbmZpZ3VyYWJsZSgpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBib29sIGlzRGF0YURlc2NyaXB0b3IoKSBjb25zdDsKICAgICAgICAgYm9vbCBpc0dl
bmVyaWNEZXNjcmlwdG9yKCkgY29uc3Q7Ci0gICAgICAgIGJvb2wgaXNBY2Nlc3NvckRlc2NyaXB0
b3IoKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0FjY2Vzc29yRGVz
Y3JpcHRvcigpIGNvbnN0OwogICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9hdHRyaWJ1dGVzOyB9CiAgICAgICAgIEpTVmFsdWUgdmFsdWUoKSBjb25zdCB7IHJl
dHVybiBtX3ZhbHVlOyB9Ci0gICAgICAgIEpTVmFsdWUgZ2V0dGVyKCkgY29uc3Q7Ci0gICAgICAg
IEpTVmFsdWUgc2V0dGVyKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgc2V0VW5kZWZpbmVkKCk7Ci0g
ICAgICAgIHZvaWQgc2V0RGVzY3JpcHRvcihKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1
dGVzKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBnZXR0ZXIoKSBjb25zdDsK
KyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBzZXR0ZXIoKSBjb25zdDsKKyAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRVbmRlZmluZWQoKTsKKyAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBzZXREZXNjcmlwdG9yKEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0
dHJpYnV0ZXMpOwogICAgICAgICB2b2lkIHNldEFjY2Vzc29yRGVzY3JpcHRvcihHZXR0ZXJTZXR0
ZXIqIGFjY2Vzc29yLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKLSAgICAgICAgdm9pZCBzZXRXcml0
YWJsZShib29sKTsKLSAgICAgICAgdm9pZCBzZXRFbnVtZXJhYmxlKGJvb2wpOwotICAgICAgICB2
b2lkIHNldENvbmZpZ3VyYWJsZShib29sKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBzZXRXcml0YWJsZShib29sKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRF
bnVtZXJhYmxlKGJvb2wpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldENvbmZp
Z3VyYWJsZShib29sKTsKICAgICAgICAgdm9pZCBzZXRWYWx1ZShKU1ZhbHVlIHZhbHVlKSB7IG1f
dmFsdWUgPSB2YWx1ZTsgfQotICAgICAgICB2b2lkIHNldFNldHRlcihKU1ZhbHVlKTsKLSAgICAg
ICAgdm9pZCBzZXRHZXR0ZXIoSlNWYWx1ZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZv
aWQgc2V0U2V0dGVyKEpTVmFsdWUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNl
dEdldHRlcihKU1ZhbHVlKTsKICAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4g
IShtX3ZhbHVlIHx8IG1fZ2V0dGVyIHx8IG1fc2V0dGVyIHx8IG1fc2VlbkF0dHJpYnV0ZXMpOyB9
CiAgICAgICAgIGJvb2wgd3JpdGFibGVQcmVzZW50KCkgY29uc3QgeyByZXR1cm4gbV9zZWVuQXR0
cmlidXRlcyAmIFdyaXRhYmxlUHJlc2VudDsgfQogICAgICAgICBib29sIGVudW1lcmFibGVQcmVz
ZW50KCkgY29uc3QgeyByZXR1cm4gbV9zZWVuQXR0cmlidXRlcyAmIEVudW1lcmFibGVQcmVzZW50
OyB9CkBAIC03Miw3ICs3Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB1bnNpZ25lZCBh
dHRyaWJ1dGVzT3ZlcnJpZGluZ0N1cnJlbnQoY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBjdXJy
ZW50KSBjb25zdDsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHN0YXRpYyB1bnNpZ25lZCBkZWZh
dWx0QXR0cmlidXRlczsKKyAgICAgICAgSlNfRVhQT1JUREFUQSBzdGF0aWMgdW5zaWduZWQgZGVm
YXVsdEF0dHJpYnV0ZXM7CiAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQcm9wZXJ0eURl
c2NyaXB0b3ImKXsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIGVudW0geyBXcml0YWJsZVByZXNl
bnQgPSAxLCBFbnVtZXJhYmxlUHJlc2VudCA9IDIsIENvbmZpZ3VyYWJsZVByZXNlbnQgPSA0fTsK
ICAgICAgICAgLy8gTWF5IGJlIGEgZ2V0dGVyL3NldHRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmgKaW5kZXggMGRhOTMwZjE3M2YxM2Y0
YTNlMWI4YzA0ZDY2NmE4YzA0MWE3MWFkNS4uZGFiZGE5NDViMTk2NWEzYmYzY2I0NTlmYmQ2NzNh
Mjg4NGM3MzQxMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
cGVydHlOYW1lQXJyYXkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9w
ZXJ0eU5hbWVBcnJheS5oCkBAIC02OSw3ICs2OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEoKSB7IHJldHVybiBtX2dsb2JhbERhdGE7IH0KIAog
ICAgICAgICB2b2lkIGFkZChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IGFkZChpZGVu
dGlmaWVyLmltcGwoKSk7IH0KLSAgICAgICAgdm9pZCBhZGQoU3RyaW5nSW1wbCopOworICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGFkZChTdHJpbmdJbXBsKik7CiAgICAgICAgIHZvaWQg
YWRkS25vd25VbmlxdWUoU3RyaW5nSW1wbCogaWRlbnRpZmllcikgeyBtX2RhdGEtPnByb3BlcnR5
TmFtZVZlY3RvcigpLmFwcGVuZChJZGVudGlmaWVyKG1fZ2xvYmFsRGF0YSwgaWRlbnRpZmllcikp
OyB9CiAKICAgICAgICAgSWRlbnRpZmllciYgb3BlcmF0b3JbXSh1bnNpZ25lZCBpKSB7IHJldHVy
biBtX2RhdGEtPnByb3BlcnR5TmFtZVZlY3RvcigpW2ldOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCmluZGV4IDg1NTdlNmQyNDc2ZWEwNjlmZDUwN2Jl
MjE2ZmRhM2M2OTk5Yjg4NGUuLmNmZWRmNzg3NmZiNjM2NTQ0YmQ5ZThmZjQ3MTdhNDI4MzAwYzY4
OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xv
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCkBA
IC0yMTgsNyArMjE4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gbV9n
ZXRWYWx1ZTsKICAgICAgICAgfQogICAgIHByaXZhdGU6Ci0gICAgICAgIEpTVmFsdWUgZnVuY3Rp
b25HZXR0ZXIoRXhlY1N0YXRlKikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEpT
VmFsdWUgZnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKikgY29uc3Q7CiAKICAgICAgICAgR2V0VmFs
dWVGdW5jIG1fZ2V0VmFsdWU7CiAgICAgICAgIEdldEluZGV4VmFsdWVGdW5jIG1fZ2V0SW5kZXhW
YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgKaW5kZXggNjVlYjQ4NDk5
OTJjYTVlNmUxODlmZTI1NDJhZGM4YTc1ZmI5ZGRiOC4uMmMwYjYxYTczNDU4MWFkMmViOGIyZTkz
NDAxNWY5MDIyZGM4MzAxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgK
QEAgLTM1LDEzICszNSwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBzdHJ1Y3QgUmVnRXhwUmVw
cmVzZW50YXRpb247CiAgICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogCi0gICAgUmVnRXhwRmxhZ3Mg
cmVnRXhwRmxhZ3MoY29uc3QgVVN0cmluZyYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZ0V4
cEZsYWdzIHJlZ0V4cEZsYWdzKGNvbnN0IFVTdHJpbmcmKTsKIAogICAgIGNsYXNzIFJlZ0V4cCA6
IHB1YmxpYyBKU0NlbGwgewogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBKU0NlbGwgQmFz
ZTsKIAotICAgICAgICBzdGF0aWMgUmVnRXhwKiBjcmVhdGUoSlNHbG9iYWxEYXRhJiwgY29uc3Qg
VVN0cmluZyYgcGF0dGVybiwgUmVnRXhwRmxhZ3MpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgUmVnRXhwKiBjcmVhdGUoSlNHbG9iYWxEYXRhJiwgY29uc3QgVVN0cmluZyYgcGF0
dGVybiwgUmVnRXhwRmxhZ3MpOwogICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCop
OwogCiAgICAgICAgIGJvb2wgZ2xvYmFsKCkgY29uc3QgeyByZXR1cm4gbV9mbGFncyAmIEZsYWdH
bG9iYWw7IH0KQEAgLTUzLDcgKzUzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wg
aXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuICFtX2NvbnN0cnVjdGlvbkVycm9yICYmIG1fZmxhZ3Mg
IT0gSW52YWxpZEZsYWdzOyB9CiAgICAgICAgIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSgpIGNv
bnN0IHsgcmV0dXJuIG1fY29uc3RydWN0aW9uRXJyb3I7IH0KIAotICAgICAgICBpbnQgbWF0Y2go
SlNHbG9iYWxEYXRhJiwgY29uc3QgVVN0cmluZyYsIGludCBzdGFydE9mZnNldCwgVmVjdG9yPGlu
dCwgMzI+KiBvdmVjdG9yID0gMCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGludCBtYXRj
aChKU0dsb2JhbERhdGEmLCBjb25zdCBVU3RyaW5nJiwgaW50IHN0YXJ0T2Zmc2V0LCBWZWN0b3I8
aW50LCAzMj4qIG92ZWN0b3IgPSAwKTsKICAgICAgICAgdW5zaWduZWQgbnVtU3VicGF0dGVybnMo
KSBjb25zdCB7IHJldHVybiBtX251bVN1YnBhdHRlcm5zOyB9CiAKICAgICAgICAgYm9vbCBoYXND
b2RlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9i
amVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgKaW5k
ZXggNGU4NGQzODMxZDE2MTc2OWI1NTk0YjY0ZmIyY2M2MDVlZTBjNTNjNC4uMDgxYTdmMTExMTY4
NTFhZjI5ODkyNzAwYWE2MzkyMWUxNjIyNjMwOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgKQEAgLTc1LDggKzc1LDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIH0KIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgUmVnRXhwT2JqZWN0KEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUmVnRXhwKik7Ci0gICAgICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oSlNHbG9iYWxPYmplY3QqKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVnRXhw
T2JqZWN0KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUmVnRXhwKik7CisgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxPYmplY3QqKTsKICAg
ICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAgICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgT3Zl
cnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ0NvdW50ZXIuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nQ291bnRlci5oCmluZGV4IDY2NGIw
MjgwZWVhNTE4NzkzYTVkOGQ3NTViYzdkMWZhNmI1MDI2N2UuLjMyOWE1Y2ZkMzNkYjZhOTA1Y2U5
ZjI2MDM2NTZhMzFkMjVlNWI1NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1NhbXBsaW5nQ291bnRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NhbXBsaW5nQ291bnRlci5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICAgICAg
bV9jb3VudGVyICs9IGNvdW50OwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIGR1bXAoKTsKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBkdW1wKCk7CiAKICAgICBpbnQ2NF90KiBh
ZGRyZXNzT2ZDb3VudGVyKCkgeyByZXR1cm4gJm1fY291bnRlcjsgfQogCkBAIC03NCw3ICs3NCw3
IEBAIHByb3RlY3RlZDoKICAgICBBYnN0cmFjdFNhbXBsaW5nQ291bnRlcioqIG1fcmVmZXJlcjsK
ICAgICAvLyBOdWxsIG9iamVjdCB1c2VkIHRvIGRldGVjdCBlbmQgb2Ygc3RhdGljIGNoYWluLgog
ICAgIHN0YXRpYyBBYnN0cmFjdFNhbXBsaW5nQ291bnRlciBzX2Fic3RyYWN0U2FtcGxpbmdDb3Vu
dGVyQ2hhaW5FbmQ7Ci0gICAgc3RhdGljIEFic3RyYWN0U2FtcGxpbmdDb3VudGVyKiBzX2Fic3Ry
YWN0U2FtcGxpbmdDb3VudGVyQ2hhaW47CisgICAgSlNfRVhQT1JUREFUQSBzdGF0aWMgQWJzdHJh
Y3RTYW1wbGluZ0NvdW50ZXIqIHNfYWJzdHJhY3RTYW1wbGluZ0NvdW50ZXJDaGFpbjsKICAgICBz
dGF0aWMgYm9vbCBzX2NvbXBsZXRlZDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU21hbGxTdHJpbmdzLmgKaW5kZXggOWM2ZWQ5YTMyOTExNTU4OTUzN2U5YTMxMWRlNTYz
ZThmMTIxMzViMC4uY2Q4ZTYzMDk1MGY0MjA4YTExMWUzNjdkNThlN2NkYjJjNjE3ZmVkYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmgKQEAgLTYwLDcg
KzYwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gbV9zaW5nbGVDaGFy
YWN0ZXJTdHJpbmdzW2NoYXJhY3Rlcl07CiAgICAgICAgIH0KIAotICAgICAgICBTdHJpbmdJbXBs
KiBzaW5nbGVDaGFyYWN0ZXJTdHJpbmdSZXAodW5zaWduZWQgY2hhciBjaGFyYWN0ZXIpOworICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJpbmdJbXBsKiBzaW5nbGVDaGFyYWN0ZXJTdHJpbmdS
ZXAodW5zaWduZWQgY2hhciBjaGFyYWN0ZXIpOwogCiAgICAgICAgIHZvaWQgZmluYWxpemVTbWFs
bFN0cmluZ3MoKTsKICAgICAgICAgdm9pZCBjbGVhcigpOwpAQCAtNzIsOCArNzIsOCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICBwcml2YXRlOgogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
c2luZ2xlQ2hhcmFjdGVyU3RyaW5nQ291bnQgPSBtYXhTaW5nbGVDaGFyYWN0ZXJTdHJpbmcgKyAx
OwogCi0gICAgICAgIHZvaWQgY3JlYXRlRW1wdHlTdHJpbmcoSlNHbG9iYWxEYXRhKik7Ci0gICAg
ICAgIHZvaWQgY3JlYXRlU2luZ2xlQ2hhcmFjdGVyU3RyaW5nKEpTR2xvYmFsRGF0YSosIHVuc2ln
bmVkIGNoYXIpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGNyZWF0ZUVtcHR5U3Ry
aW5nKEpTR2xvYmFsRGF0YSopOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGNyZWF0
ZVNpbmdsZUNoYXJhY3RlclN0cmluZyhKU0dsb2JhbERhdGEqLCB1bnNpZ25lZCBjaGFyKTsKIAog
ICAgICAgICBKU1N0cmluZyogbV9lbXB0eVN0cmluZzsKICAgICAgICAgSlNTdHJpbmcqIG1fc2lu
Z2xlQ2hhcmFjdGVyU3RyaW5nc1tzaW5nbGVDaGFyYWN0ZXJTdHJpbmdDb3VudF07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCmluZGV4IDUyODY2ODY5MTUz
YWY4MDczN2JjZDQyMTNiZmFhMDg5YmJlOGJiM2YuLjI0OGM3MTYwMWZmZGQ5ZWQzMzhiNDFhODIy
N2Y0ZGViMGI4YjVhY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmluZ09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmlu
Z09iamVjdC5oCkBAIC02NCw5ICs2NCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAK
ICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRh
JiwgSlNTdHJpbmcqKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hDcmVh
dGlvbihKU0dsb2JhbERhdGEmLCBKU1N0cmluZyopOwogICAgICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVy
cmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNXcmFwcGVyT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsK
LSAgICAgICAgU3RyaW5nT2JqZWN0KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOworICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSBTdHJpbmdPYmplY3QoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJl
Kik7CiAgICAgfTsKIAogICAgIFN0cmluZ09iamVjdCogYXNTdHJpbmdPYmplY3QoSlNWYWx1ZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCmluZGV4IDcwZTk2ODAx
NDZhMjFlNjE5Y2NiNGMyN2RjOTA3YTE5MGM5MjlkZTEuLjA4NTljYzA2YWQxMjcxNTk4MTVlM2Yw
MWMwZTA1ZDhmNDI4MmIzYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZS5oCkBAIC04NCwxMSArODQsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgog
ICAgICAgICBzdGF0aWMgdm9pZCBkdW1wU3RhdGlzdGljcygpOwogCi0gICAgICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIGFkZFByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUq
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpT
Q2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpOwotICAgICAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVy
ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywg
SlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNldCk7CisgICAgICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGFkZFByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2Jh
bERhdGEmLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpOwor
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRy
YW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVl
LCBzaXplX3QmIG9mZnNldCk7CiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZVByb3Bl
cnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIHNpemVfdCYgb2Zmc2V0KTsKLSAgICAgICAgc3RhdGljIFN0cnVjdHVy
ZSogY2hhbmdlUHJvdG90eXBlVHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBK
U1ZhbHVlIHByb3RvdHlwZSk7Ci0gICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGRlc3BlY2lmeUZ1
bmN0aW9uVHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlm
aWVyJik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGNoYW5n
ZVByb3RvdHlwZVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgSlNWYWx1ZSBw
cm90b3R5cGUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBk
ZXNwZWNpZnlGdW5jdGlvblRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgY29u
c3QgSWRlbnRpZmllciYpOwogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBnZXR0ZXJTZXR0ZXJU
cmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwogICAgICAgICBzdGF0aWMgU3Ry
dWN0dXJlKiB0b0NhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0
cnVjdHVyZSopOwogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiB0b1VuY2FjaGVhYmxlRGljdGlv
bmFyeVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CkBAIC0xMDYsNyArMTA2
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxs
Kik7CiAKICAgICAgICAgLy8gVGhlc2Ugc2hvdWxkIGJlIHVzZWQgd2l0aCBjYXV0aW9uLiAgCi0g
ICAgICAgIHNpemVfdCBhZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlND
ZWxsKiBzcGVjaWZpY1ZhbHVlKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGFk
ZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFs
dWUpOwogICAgICAgICBzaXplX3QgcmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0ds
b2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOwogICAgICAgICB2b2lk
IHNldFByb3RvdHlwZVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
SlNWYWx1ZSBwcm90b3R5cGUpIHsgbV9wcm90b3R5cGUuc2V0KGdsb2JhbERhdGEsIHRoaXMsIHBy
b3RvdHlwZSk7IH0KICAgICAgICAgCkBAIC0xMzYsNyArMTM2LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICAgICAgc2l6ZV90IGdldChKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUpOwogICAgICAgICBzaXplX3QgZ2V0KEpTR2xvYmFsRGF0YSYsIGNvbnN0IFVT
dHJpbmcmIG5hbWUpOwotICAgICAgICBzaXplX3QgZ2V0KEpTR2xvYmFsRGF0YSYsIFN0cmluZ0lt
cGwqIHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMsIEpTQ2VsbComIHNwZWNpZmlj
VmFsdWUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzaXplX3QgZ2V0KEpTR2xvYmFsRGF0
YSYsIFN0cmluZ0ltcGwqIHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMsIEpTQ2Vs
bComIHNwZWNpZmljVmFsdWUpOwogICAgICAgICBzaXplX3QgZ2V0KEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmli
dXRlcywgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSkKICAgICAgICAgewogICAgICAgICAgICAgQVNT
RVJUKCFwcm9wZXJ0eU5hbWUuaXNOdWxsKCkpOwpAQCAtMTUxLDcgKzE1MSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAKICAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4g
bV9wcm9wZXJ0eVRhYmxlID8gbV9wcm9wZXJ0eVRhYmxlLT5pc0VtcHR5KCkgOiBtX29mZnNldCA9
PSBub09mZnNldDsgfQogCi0gICAgICAgIHZvaWQgZGVzcGVjaWZ5RGljdGlvbmFyeUZ1bmN0aW9u
KEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZGVzcGVjaWZ5RGljdGlvbmFyeUZ1bmN0aW9uKEpTR2xv
YmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIHZvaWQg
ZGlzYWJsZVNwZWNpZmljRnVuY3Rpb25UcmFja2luZygpIHsgbV9zcGVjaWZpY0Z1bmN0aW9uVGhy
YXNoQ291bnQgPSBtYXhTcGVjaWZpY0Z1bmN0aW9uVGhyYXNoQ291bnQ7IH0KIAogICAgICAgICB2
b2lkIHNldEVudW1lcmF0aW9uQ2FjaGUoSlNHbG9iYWxEYXRhJiwgSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvciogZW51bWVyYXRpb25DYWNoZSk7IC8vIERlZmluZWQgaW4gSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvci5oLgpAQCAtMTk2LDcgKzE5Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0
aWMgSlNfRVhQT1JUREFUQSBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCiAgICAgcHJpdmF0ZToK
LSAgICAgICAgU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1
ZSBwcm90b3R5cGUsIGNvbnN0IFR5cGVJbmZvJiwgY29uc3QgQ2xhc3NJbmZvKik7CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIFN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBKU0dsb2JhbE9iamVj
dCosIEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYsIGNvbnN0IENsYXNzSW5mbyop
OwogICAgICAgICBTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJik7CiAgICAgICAgIFN0cnVjdHVyZShK
U0dsb2JhbERhdGEmLCBjb25zdCBTdHJ1Y3R1cmUqKTsKIApAQCAtMjI2LDcgKzIyNiw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgICAgIFBhc3NPd25QdHI8UHJvcGVydHlUYWJsZT4gY29weVBy
b3BlcnR5VGFibGUoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiBvd25lcik7CiAgICAgICAgIFBh
c3NPd25QdHI8UHJvcGVydHlUYWJsZT4gY29weVByb3BlcnR5VGFibGVGb3JQaW5uaW5nKEpTR2xv
YmFsRGF0YSYsIFN0cnVjdHVyZSogb3duZXIpOwotICAgICAgICB2b2lkIG1hdGVyaWFsaXplUHJv
cGVydHlNYXAoSlNHbG9iYWxEYXRhJik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQg
bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcChKU0dsb2JhbERhdGEmKTsKICAgICAgICAgdm9pZCBtYXRl
cmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNlc3NhcnkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQog
ICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09
ICZzX2luZm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGlt
ZW91dENoZWNrZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RpbWVvdXRDaGVj
a2VyLmgKaW5kZXggNTkyNTY0MWY4MGEzNjZhZDM0MDYxYjU2MmM3NGNkODIyZTNjZmU5Yi4uODlk
NjE1OGNjZGQ2NDdlMjM2OTMyZjZkNGM5YzIxZTAzOWI2MGVmOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGltZW91dENoZWNrZXIuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UaW1lb3V0Q2hlY2tlci5oCkBAIC01Nyw5ICs1Nyw5IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAgICAgLS1tX3N0YXJ0Q291bnQ7CiAgICAgICAgIH0KIAot
ICAgICAgICB2b2lkIHJlc2V0KCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVz
ZXQoKTsKIAotICAgICAgICBib29sIGRpZFRpbWVPdXQoRXhlY1N0YXRlKik7CisgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIGJvb2wgZGlkVGltZU91dChFeGVjU3RhdGUqKTsKIAogICAgIHByaXZh
dGU6CiAgICAgICAgIHVuc2lnbmVkIG1fdGltZW91dEludGVydmFsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVVN0cmluZy5oCmluZGV4IGMwNWFlNTA4MTAxNzc0M2Y2MDJjYTA3Njg4ZGY2
YTdkMzlmMTY2NjcuLmMxMWM1Njc2YTllZWQzYmVjNjhhZjY4YTU5NzkyNWU4NjBhNGQxN2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmgKQEAgLTMzLDE4ICszMywxOCBA
QCBwdWJsaWM6CiAgICAgVVN0cmluZygpIHsgfQogCiAgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5n
IHdpdGggVVRGLTE2IGRhdGEuCi0gICAgVVN0cmluZyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywg
dW5zaWduZWQgbGVuZ3RoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBVU3RyaW5nKGNvbnN0IFVD
aGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpOwogCiAgICAgLy8gQ29uc3RydWN0IGEg
c3RyaW5nIHdpdGggVVRGLTE2IGRhdGEsIGZyb20gYSBudWxsLXRlcm1pbmF0ZWQgc291cmNlLgot
ICAgIFVTdHJpbmcoY29uc3QgVUNoYXIqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBVU3RyaW5n
KGNvbnN0IFVDaGFyKik7CiAKICAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEg
ZGF0YS4KICAgICBVU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5n
dGgpOwotICAgIFVTdHJpbmcoY29uc3QgY2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3Ro
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBVU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMs
IHVuc2lnbmVkIGxlbmd0aCk7CiAKICAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRp
bjEgZGF0YSwgZnJvbSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCiAgICAgVVN0cmluZyhjb25z
dCBMQ2hhciogY2hhcmFjdGVycyk7Ci0gICAgVVN0cmluZyhjb25zdCBjaGFyKiBjaGFyYWN0ZXJz
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBVU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMp
OwogCiAgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHJlZmVyZW5jaW5nIGFuIGV4aXN0aW5nIFN0
cmluZ0ltcGwuCiAgICAgVVN0cmluZyhTdHJpbmdJbXBsKiBpbXBsKSA6IG1faW1wbChpbXBsKSB7
IH0KQEAgLTk5LDkgKzk5LDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBpczhCaXQoKSBjb25zdCB7
IHJldHVybiBtX2ltcGwtPmlzOEJpdCgpOyB9CiAKLSAgICBDU3RyaW5nIGFzY2lpKCkgY29uc3Q7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgQ1N0cmluZyBhc2NpaSgpIGNvbnN0OwogICAgIENTdHJp
bmcgbGF0aW4xKCkgY29uc3Q7Ci0gICAgQ1N0cmluZyB1dGY4KGJvb2wgc3RyaWN0ID0gZmFsc2Up
IGNvbnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIENTdHJpbmcgdXRmOChib29sIHN0cmljdCA9
IGZhbHNlKSBjb25zdDsKIAogICAgIFVDaGFyIG9wZXJhdG9yW10odW5zaWduZWQgaW5kZXgpIGNv
bnN0CiAgICAgewpAQCAtMTEyLDExICsxMTIsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
bV9pbXBsLT5jaGFyYWN0ZXJzMTYoKVtpbmRleF07CiAgICAgfQogCi0gICAgc3RhdGljIFVTdHJp
bmcgbnVtYmVyKGludCk7Ci0gICAgc3RhdGljIFVTdHJpbmcgbnVtYmVyKHVuc2lnbmVkKTsKLSAg
ICBzdGF0aWMgVVN0cmluZyBudW1iZXIobG9uZyk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIFVTdHJpbmcgbnVtYmVyKGludCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFVT
dHJpbmcgbnVtYmVyKHVuc2lnbmVkKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgVVN0
cmluZyBudW1iZXIobG9uZyk7CiAgICAgc3RhdGljIFVTdHJpbmcgbnVtYmVyKGxvbmcgbG9uZyk7
Ci0gICAgc3RhdGljIFVTdHJpbmcgbnVtYmVyKGRvdWJsZSk7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFVTdHJpbmcgbnVtYmVyKGRvdWJsZSk7CiAKICAgICAvLyBGaW5kIGEgc2luZ2xl
IGNoYXJhY3RlciBvciBzdHJpbmcsIGFsc28gd2l0aCBtYXRjaCBmdW5jdGlvbiAmIGxhdGluMSBm
b3Jtcy4KICAgICBzaXplX3QgZmluZChVQ2hhciBjLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0
CkBAIC0xMzIsNyArMTMyLDcgQEAgcHVibGljOgogICAgIHNpemVfdCByZXZlcnNlRmluZChjb25z
dCBVU3RyaW5nJiBzdHIsIHVuc2lnbmVkIHN0YXJ0ID0gVUlOVF9NQVgpIGNvbnN0CiAgICAgICAg
IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+cmV2ZXJzZUZpbmQoc3RyLmltcGwoKSwgc3RhcnQp
IDogbm90Rm91bmQ7IH0KIAotICAgIFVTdHJpbmcgc3Vic3RyaW5nU2hhcmluZ0ltcGwodW5zaWdu
ZWQgcG9zLCB1bnNpZ25lZCBsZW4gPSBVSU5UX01BWCkgY29uc3Q7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgVVN0cmluZyBzdWJzdHJpbmdTaGFyaW5nSW1wbCh1bnNpZ25lZCBwb3MsIHVuc2lnbmVk
IGxlbiA9IFVJTlRfTUFYKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBSZWZQdHI8U3RyaW5nSW1w
bD4gbV9pbXBsOwpAQCAtMTg5LDEwICsxODksMTAgQEAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBVU3RyaW5nJiBzMSwgY29uc3QgVVN0cmluZyYgczIpCiAgICAgcmV0dXJuICFKU0M6Om9w
ZXJhdG9yPT0oczEsIHMyKTsKIH0KIAotYm9vbCBvcGVyYXRvcjwoY29uc3QgVVN0cmluZyYgczEs
IGNvbnN0IFVTdHJpbmcmIHMyKTsKLWJvb2wgb3BlcmF0b3I+KGNvbnN0IFVTdHJpbmcmIHMxLCBj
b25zdCBVU3RyaW5nJiBzMik7CitKU19FWFBPUlRfUFJJVkFURSBib29sIG9wZXJhdG9yPChjb25z
dCBVU3RyaW5nJiBzMSwgY29uc3QgVVN0cmluZyYgczIpOworSlNfRVhQT1JUX1BSSVZBVEUgYm9v
bCBvcGVyYXRvcj4oY29uc3QgVVN0cmluZyYgczEsIGNvbnN0IFVTdHJpbmcmIHMyKTsKIAotYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFVTdHJpbmcmIHMxLCBjb25zdCBjaGFyKiBzMik7CitKU19FWFBP
UlRfUFJJVkFURSBib29sIG9wZXJhdG9yPT0oY29uc3QgVVN0cmluZyYgczEsIGNvbnN0IGNoYXIq
IHMyKTsKIAogaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBVU3RyaW5nJiBzMSwgY29uc3Qg
Y2hhciogczIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9X
cml0ZUJhcnJpZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dyaXRlQmFycmll
ci5oCmluZGV4IDUyNWZjMDkyNjdlNjQ1N2M5NmVjMzJmYTIxOTZmODk4MmM0ODdkZDUuLmE3YmQ3
YTEwMGRjYTYyMzAwMDIzY2I4NTY5NzU4ZmFlYTk2NTE4YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1dyaXRlQmFycmllci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1dyaXRlQmFycmllci5oCkBAIC00MCw4ICs0MCw4IEBAIGNsYXNzIEpT
R2xvYmFsT2JqZWN0OwogdGVtcGxhdGU8Y2xhc3MgVD4gY2xhc3MgV3JpdGVCYXJyaWVyQmFzZTsK
IHRlbXBsYXRlPD4gY2xhc3MgV3JpdGVCYXJyaWVyQmFzZTxKU1ZhbHVlPjsKIAotdm9pZCBzbG93
VmFsaWRhdGVDZWxsKEpTQ2VsbCopOwotdm9pZCBzbG93VmFsaWRhdGVDZWxsKEpTR2xvYmFsT2Jq
ZWN0Kik7CitKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNsb3dWYWxpZGF0ZUNlbGwoSlNDZWxsKik7
CitKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNsb3dWYWxpZGF0ZUNlbGwoSlNHbG9iYWxPYmplY3Qq
KTsKICAgICAKICNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikKIHRlbXBsYXRlPGNsYXNzIFQ+IGlu
bGluZSB2b2lkIHZhbGlkYXRlQ2VsbChUIGNlbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL0FycmF5QnVmZmVyVmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9BcnJheUJ1ZmZlclZpZXcuaAppbmRleCBjY2I3ZmQzNDg5OWE1Y2VjYWFjMTA1MDU5MTgxZDY5
MzExOTJkNGNmLi5lYmU2ZDgwZDI5N2NmOGFlYjIzOTRhMDk0ZWZlYmYzOWVjN2FmYmI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0FycmF5QnVmZmVyVmlldy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQXJyYXlCdWZmZXJWaWV3LmgKQEAgLTY1LDEwICs2
NSwxMCBAQCBjbGFzcyBBcnJheUJ1ZmZlclZpZXcgOiBwdWJsaWMgUmVmQ291bnRlZDxBcnJheUJ1
ZmZlclZpZXc+IHsKIAogICAgIHZpcnR1YWwgdW5zaWduZWQgYnl0ZUxlbmd0aCgpIGNvbnN0ID0g
MDsKIAotICAgIHZpcnR1YWwgfkFycmF5QnVmZmVyVmlldygpOworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSB2aXJ0dWFsIH5BcnJheUJ1ZmZlclZpZXcoKTsKIAogICBwcm90ZWN0ZWQ6Ci0gICAgQXJy
YXlCdWZmZXJWaWV3KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+LCB1bnNpZ25lZCBieXRlT2Zmc2V0
KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJWaWV3KFBhc3NSZWZQdHI8QXJy
YXlCdWZmZXI+LCB1bnNpZ25lZCBieXRlT2Zmc2V0KTsKIAogICAgIGlubGluZSBib29sIHNldElt
cGwoQXJyYXlCdWZmZXJWaWV3KiwgdW5zaWduZWQgYnl0ZU9mZnNldCk7CiAKQEAgLTExOCw3ICsx
MTgsNyBAQCBjbGFzcyBBcnJheUJ1ZmZlclZpZXcgOiBwdWJsaWMgUmVmQ291bnRlZDxBcnJheUJ1
ZmZlclZpZXc+IHsKICAgICAgICAgKm51bUVsZW1lbnRzID0gc3RkOjptaW4ocmVtYWluaW5nRWxl
bWVudHMsICpudW1FbGVtZW50cyk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIG5ldXRlcigp
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIHZvaWQgbmV1dGVyKCk7CiAKICAgICAv
LyBUaGlzIGlzIHRoZSBhZGRyZXNzIG9mIHRoZSBBcnJheUJ1ZmZlcidzIHN0b3JhZ2UsIHBsdXMg
dGhlIGJ5dGUgb2Zmc2V0LgogICAgIHZvaWQqIG1fYmFzZUFkZHJlc3M7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0J5dGVBcnJheS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi9CeXRlQXJyYXkuaAppbmRleCA2OTY0YTMzZGY5Y2UyMWI4ZmJkY2JhOTVhNWE3MTZh
OTAwNjk3YzIyLi5mNjhkMDMyZmQwMGI4ZGM3ZWE4YTFiNWQ3ZmRkODMwOGM3MjVmMTZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0J5dGVBcnJheS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvQnl0ZUFycmF5LmgKQEAgLTgzLDcgKzgzLDcgQEAgbmFtZXNw
YWNlIFdURiB7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxCeXRlQXJyYXk+IGNyZWF0ZShzaXplX3Qgc2l6ZSk7CisgICAgICAgIFdURl9FWFBP
UlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxCeXRlQXJyYXk+IGNyZWF0ZShzaXplX3Qgc2l6
ZSk7CiAKICAgICAgICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZlNpemUoKSB7IHJldHVybiBPQkpF
Q1RfT0ZGU0VUT0YoQnl0ZUFycmF5LCBtX3NpemUpOyB9CiAgICAgICAgIHN0YXRpYyBzaXplX3Qg
b2Zmc2V0T2ZEYXRhKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEJ5dGVBcnJheSwgbV9kYXRh
KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9DcnlwdG9ncmFwaGlj
YWxseVJhbmRvbU51bWJlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9DcnlwdG9ncmFw
aGljYWxseVJhbmRvbU51bWJlci5oCmluZGV4IDM0ODI0MmUyNWNjYjUyNzk3OWFlMGY4MzVmOGVh
N2FhY2M0NWFlYWUuLjIyNjJiNmMzYjMxMWZhZWQyNmY3MDQ3OTk1NjFhOGFhZDU3ZTA4NTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5k
b21OdW1iZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0NyeXB0b2dyYXBoaWNh
bGx5UmFuZG9tTnVtYmVyLmgKQEAgLTMxLDggKzMxLDggQEAKIG5hbWVzcGFjZSBXVEYgewogCiAj
aWYgVVNFKE9TX1JBTkRPTU5FU1MpCi11aW50MzJfdCBjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51
bWJlcigpOwotdm9pZCBjcnlwdG9ncmFwaGljYWxseVJhbmRvbVZhbHVlcyh2b2lkKiBidWZmZXIs
IHNpemVfdCBsZW5ndGgpOworV1RGX0VYUE9SVF9QUklWQVRFIHVpbnQzMl90IGNyeXB0b2dyYXBo
aWNhbGx5UmFuZG9tTnVtYmVyKCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBjcnlwdG9ncmFw
aGljYWxseVJhbmRvbVZhbHVlcyh2b2lkKiBidWZmZXIsIHNpemVfdCBsZW5ndGgpOwogI2VuZGlm
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQ3VycmVudFRpbWUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQ3VycmVudFRpbWUuaAppbmRleCA3MTc3NWMy
NzM1MzkzNmE4NGE1OGU0NDczZTY3YTFjODkxMmEzODk3Li5lZTQ5ZjhkMjVmNjkwM2RhNWZjYzBk
NjNiZjEyOTkyMmIxZWMxMjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L0N1cnJlbnRUaW1lLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9DdXJyZW50VGlt
ZS5oCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXVEYgewogLy8gUmV0dXJucyB0aGUgY3Vy
cmVudCBVVEMgdGltZSBpbiBzZWNvbmRzLCBjb3VudGVkIGZyb20gSmFudWFyeSAxLCAxOTcwLgog
Ly8gUHJlY2lzaW9uIHZhcmllcyBkZXBlbmRpbmcgb24gcGxhdGZvcm0gYnV0IGlzIHVzdWFsbHkg
YXMgZ29vZCBvciBiZXR0ZXIKIC8vIHRoYW4gYSBtaWxsaXNlY29uZC4KLWRvdWJsZSBjdXJyZW50
VGltZSgpOworV1RGX0VYUE9SVF9QUklWQVRFIGRvdWJsZSBjdXJyZW50VGltZSgpOwogCiAvLyBT
YW1lIHRoaW5nLCBpbiBtaWxsaXNlY29uZHMuCiBpbmxpbmUgZG91YmxlIGN1cnJlbnRUaW1lTVMo
KQpAQCAtNjAsNyArNjAsNyBAQCBpbmxpbmUgdm9pZCBnZXRMb2NhbFRpbWUoY29uc3QgdGltZV90
KiBsb2NhbFRpbWUsIHN0cnVjdCB0bSogbG9jYWxUTSkKIAogLy8gUHJvdmlkZXMgYSBtb25vdG9u
aWNhbGx5IGluY3JlYXNpbmcgdGltZSBpbiBzZWNvbmRzIHNpbmNlIGFuIGFyYml0cmFyeSBwb2lu
dCBpbiB0aGUgcGFzdC4KIC8vIE9uIHVuc3VwcG9ydGVkIHBsYXRmb3JtcywgdGhpcyBmdW5jdGlv
biBvbmx5IGd1YXJhbnRlZXMgdGhlIHJlc3VsdCB3aWxsIGJlIG5vbi1kZWNyZWFzaW5nLgotZG91
YmxlIG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOworV1RGX0VYUE9SVF9QUklWQVRFIGRv
dWJsZSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKIAogfSAvLyBuYW1lc3BhY2UgV1RG
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRGF0ZU1hdGguaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRGF0ZU1hdGguaAppbmRleCAxMTRhY2Y4YTg3MTk0YWIy
ZTI2NjFkMGI1NWFjZWM2YzE3MjYxYTVkLi5mYzFhOGQ4ZTQ0YmY0NTZmYTJiMjM5YTAzNDFiMTkz
ZTk4OTgyZmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0RhdGVNYXRo
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9EYXRlTWF0aC5oCkBAIC02MSw3ICs2
MSw3IEBAIGludCBlcXVpdmFsZW50WWVhckZvckRTVChpbnQgeWVhcik7CiAKIC8vIE5vdCByZWFs
bHkgbWF0aCByZWxhdGVkLCBidXQgdGhpcyBpcyBjdXJyZW50bHkgdGhlIG9ubHkgc2hhcmVkIHBs
YWNlIHRvIHB1dCB0aGVzZS4KIGRvdWJsZSBwYXJzZUVTNURhdGVGcm9tTnVsbFRlcm1pbmF0ZWRD
aGFyYWN0ZXJzKGNvbnN0IGNoYXIqIGRhdGVTdHJpbmcpOwotZG91YmxlIHBhcnNlRGF0ZUZyb21O
dWxsVGVybWluYXRlZENoYXJhY3RlcnMoY29uc3QgY2hhciogZGF0ZVN0cmluZyk7CitXVEZfRVhQ
T1JUX1BSSVZBVEUgZG91YmxlIHBhcnNlRGF0ZUZyb21OdWxsVGVybWluYXRlZENoYXJhY3RlcnMo
Y29uc3QgY2hhciogZGF0ZVN0cmluZyk7CiBkb3VibGUgcGFyc2VEYXRlRnJvbU51bGxUZXJtaW5h
dGVkQ2hhcmFjdGVycyhjb25zdCBjaGFyKiBkYXRlU3RyaW5nLCBib29sJiBoYXZlVFosIGludCYg
b2Zmc2V0KTsKIGRvdWJsZSB0aW1lQ2xpcChkb3VibGUpOwogLy8gZGF5T2ZXZWVrOiBbMCwgNl0g
MCBiZWluZyBNb25kYXksIGRheTogWzEsIDMxXSwgbW9udGg6IFswLCAxMV0sIHllYXI6IGV4OiAy
MDExLCBob3VyczogWzAsIDIzXSwgbWludXRlczogWzAsIDU5XSwgc2Vjb25kczogWzAsIDU5XSwg
dXRjT2Zmc2V0OiBbLTcyMCw3MjBdLiAKQEAgLTg5LDE4ICs4OSwxOCBAQCBjb25zdCBkb3VibGUg
bXNQZXJNb250aCA9IDI1OTIwMDAwMDAuMDsKIGJvb2wgaXNMZWFwWWVhcihpbnQgeWVhcik7CiAK
IC8vIFJldHVybnMgdGhlIG51bWJlciBvZiBkYXlzIGZyb20gMTk3MC0wMS0wMSB0byB0aGUgc3Bl
Y2lmaWVkIGRhdGUuCi1kb3VibGUgZGF0ZVRvRGF5c0Zyb20xOTcwKGludCB5ZWFyLCBpbnQgbW9u
dGgsIGludCBkYXkpOwotaW50IG1zVG9ZZWFyKGRvdWJsZSBtcyk7CitXVEZfRVhQT1JUX1BSSVZB
VEUgZG91YmxlIGRhdGVUb0RheXNGcm9tMTk3MChpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgZGF5
KTsKK1dURl9FWFBPUlRfUFJJVkFURSBpbnQgbXNUb1llYXIoZG91YmxlIG1zKTsKIGRvdWJsZSBt
c1RvRGF5cyhkb3VibGUgbXMpOwogaW50IG1zVG9NaW51dGVzKGRvdWJsZSBtcyk7CiBpbnQgbXNU
b0hvdXJzKGRvdWJsZSBtcyk7Ci1pbnQgZGF5SW5ZZWFyKGRvdWJsZSBtcywgaW50IHllYXIpOwot
aW50IG1vbnRoRnJvbURheUluWWVhcihpbnQgZGF5SW5ZZWFyLCBib29sIGxlYXBZZWFyKTsKLWlu
dCBkYXlJbk1vbnRoRnJvbURheUluWWVhcihpbnQgZGF5SW5ZZWFyLCBib29sIGxlYXBZZWFyKTsK
K1dURl9FWFBPUlRfUFJJVkFURSBpbnQgZGF5SW5ZZWFyKGRvdWJsZSBtcywgaW50IHllYXIpOwor
V1RGX0VYUE9SVF9QUklWQVRFIGludCBtb250aEZyb21EYXlJblllYXIoaW50IGRheUluWWVhciwg
Ym9vbCBsZWFwWWVhcik7CitXVEZfRVhQT1JUX1BSSVZBVEUgaW50IGRheUluTW9udGhGcm9tRGF5
SW5ZZWFyKGludCBkYXlJblllYXIsIGJvb2wgbGVhcFllYXIpOwogCiAvLyBSZXR1cm5zIG9mZnNl
dCBtaWxsaXNlY29uZHMgZm9yIFVUQyBhbmQgRFNULgotaW50MzJfdCBjYWxjdWxhdGVVVENPZmZz
ZXQoKTsKLWRvdWJsZSBjYWxjdWxhdGVEU1RPZmZzZXQoZG91YmxlIG1zLCBkb3VibGUgdXRjT2Zm
c2V0KTsKK1dURl9FWFBPUlRfUFJJVkFURSBpbnQzMl90IGNhbGN1bGF0ZVVUQ09mZnNldCgpOwor
V1RGX0VYUE9SVF9QUklWQVRFIGRvdWJsZSBjYWxjdWxhdGVEU1RPZmZzZXQoZG91YmxlIG1zLCBk
b3VibGUgdXRjT2Zmc2V0KTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRGVjaW1hbE51bWJlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi9EZWNpbWFsTnVtYmVyLmgKaW5kZXggYWM3YjgwMDU4MmQzNmFiMmExNzZiMDNl
MDlkMGM1MmEwNDU0MjliMi4uNjFlZmZjZGQzZGM2ZmNkZDEzNTJmNjAxYzU3NWY1NWJhYTU0NTQw
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9EZWNpbWFsTnVtYmVyLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9EZWNpbWFsTnVtYmVyLmgKQEAgLTgxLDEx
ICs4MSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChtX3NpZ25pZmljYW5kWzBdICE9ICcw
JyB8fCAhbV9leHBvbmVudCk7CiAgICAgfQogCi0gICAgdW5zaWduZWQgYnVmZmVyTGVuZ3RoRm9y
U3RyaW5nRGVjaW1hbCgpIGNvbnN0OwotICAgIHVuc2lnbmVkIGJ1ZmZlckxlbmd0aEZvclN0cmlu
Z0V4cG9uZW50aWFsKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIGJ1
ZmZlckxlbmd0aEZvclN0cmluZ0RlY2ltYWwoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgdW5zaWduZWQgYnVmZmVyTGVuZ3RoRm9yU3RyaW5nRXhwb25lbnRpYWwoKSBjb25zdDsKIAot
ICAgIHVuc2lnbmVkIHRvU3RyaW5nRGVjaW1hbChVQ2hhciogYnVmZmVyLCB1bnNpZ25lZCBidWZm
ZXJMZW5ndGgpIGNvbnN0OwotICAgIHVuc2lnbmVkIHRvU3RyaW5nRXhwb25lbnRpYWwoVUNoYXIq
IGJ1ZmZlciwgdW5zaWduZWQgYnVmZmVyTGVuZ3RoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgdW5zaWduZWQgdG9TdHJpbmdEZWNpbWFsKFVDaGFyKiBidWZmZXIsIHVuc2lnbmVkIGJ1
ZmZlckxlbmd0aCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIHRvU3Ry
aW5nRXhwb25lbnRpYWwoVUNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgYnVmZmVyTGVuZ3RoKSBjb25z
dDsKIAogICAgIGJvb2wgc2lnbigpIGNvbnN0IHsgcmV0dXJuIG1fc2lnbjsgfQogICAgIGludCBl
eHBvbmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZXhwb25lbnQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvRmFzdE1hbGxvYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL0Zhc3RNYWxsb2MuY3BwCmluZGV4IDVjNjg0NTAwZjg0MDgxOTU2YjJhNTAwMzE4NTgx
MzZlYmEwZGRkYWIuLjZiOTJmNTU0MjBiZGUwZDdlYTI5MDg5MDUxOTIxZDUyMTE2Y2VlMmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRmFzdE1hbGxvYy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9GYXN0TWFsbG9jLmNwcApAQCAtMTgyLDcgKzE4Miw3
IEBAIG5hbWVzcGFjZSBXVEYgewogCiBuYW1lc3BhY2UgSW50ZXJuYWwgewogI2lmICFFTkFCTEUo
V1RGX01BTExPQ19WQUxJREFUSU9OKQotdm9pZCBmYXN0TWFsbG9jTWF0Y2hGYWlsZWQodm9pZCop
OworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZmFzdE1hbGxvY01hdGNoRmFpbGVkKHZvaWQqKTsK
ICNlbHNlCiBDT01QSUxFX0FTU0VSVCgoKHNpemVvZihWYWxpZGF0aW9uSGVhZGVyKSAlIHNpemVv
ZihBbGxvY0FsaWdubWVudEludGVnZXIpKSA9PSAwKSwgVmFsaWRhdGlvbkhlYWRlcl9tdXN0X3By
b2R1Y2VfY29ycmVjdF9hbGlnbm1lbnQpOwogI2VuZGlmCkBAIC00MDAsNyArNDAwLDcgQEAgc2l6
ZV90IGZhc3RNYWxsb2NTaXplKGNvbnN0IHZvaWQqIHApCiAjaWYgT1MoREFSV0lOKQogLy8gVGhp
cyBzeW1ib2wgaXMgcHJlc2VudCBpbiB0aGUgSmF2YVNjcmlwdENvcmUgZXhwb3J0cyBmaWxlIGV2
ZW4gd2hlbiBGYXN0TWFsbG9jIGlzIGRpc2FibGVkLgogLy8gSXQgd2lsbCBuZXZlciBiZSB1c2Vk
IGluIHRoaXMgY2FzZSwgc28gaXQncyB0eXBlIGFuZCB2YWx1ZSBhcmUgbGVzcyBpbnRlcmVzdGlu
ZyB0aGFuIGl0cyBwcmVzZW5jZS4KLWV4dGVybiAiQyIgY29uc3QgaW50IGpzY29yZV9mYXN0bWFs
bG9jX2ludHJvc3BlY3Rpb24gPSAwOworZXh0ZXJuICJDIiBXVEZfRVhQT1JUX1BSSVZBVEUgY29u
c3QgaW50IGpzY29yZV9mYXN0bWFsbG9jX2ludHJvc3BlY3Rpb24gPSAwOwogI2VuZGlmCiAKICNl
bHNlIC8vIEZPUkNFX1NZU1RFTV9NQUxMT0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvRmFzdE1hbGxvYy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9GYXN0TWFs
bG9jLmgKaW5kZXggYjRmNzRlNDdiMzIxYThkNmEyZDc3NjA3NDAyNDkxZDY4NmQyOGU2NS4uYjEx
NTkwOGJhZDI4YTA4NmMxMmI2NWJiMmVhNDI1YjQ5ZjEwMGE2YiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9GYXN0TWFsbG9jLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi9GYXN0TWFsbG9jLmgKQEAgLTI5LDEyICsyOSwxMiBAQAogbmFtZXNwYWNlIFdURiB7
CiAKICAgICAvLyBUaGVzZSBmdW5jdGlvbnMgY2FsbCBDUkFTSCgpIGlmIGFuIGFsbG9jYXRpb24g
ZmFpbHMuCi0gICAgdm9pZCogZmFzdE1hbGxvYyhzaXplX3QpOwotICAgIHZvaWQqIGZhc3RaZXJv
ZWRNYWxsb2Moc2l6ZV90KTsKLSAgICB2b2lkKiBmYXN0Q2FsbG9jKHNpemVfdCBudW1FbGVtZW50
cywgc2l6ZV90IGVsZW1lbnRTaXplKTsKLSAgICB2b2lkKiBmYXN0UmVhbGxvYyh2b2lkKiwgc2l6
ZV90KTsKLSAgICBjaGFyKiBmYXN0U3RyRHVwKGNvbnN0IGNoYXIqKTsKLSAgICBzaXplX3QgZmFz
dE1hbGxvY1NpemUoY29uc3Qgdm9pZCopOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkKiBm
YXN0TWFsbG9jKHNpemVfdCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQqIGZhc3RaZXJv
ZWRNYWxsb2Moc2l6ZV90KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCogZmFzdENhbGxv
YyhzaXplX3QgbnVtRWxlbWVudHMsIHNpemVfdCBlbGVtZW50U2l6ZSk7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQqIGZhc3RSZWFsbG9jKHZvaWQqLCBzaXplX3QpOworICAgIFdURl9FWFBP
UlRfUFJJVkFURSBjaGFyKiBmYXN0U3RyRHVwKGNvbnN0IGNoYXIqKTsKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgc2l6ZV90IGZhc3RNYWxsb2NTaXplKGNvbnN0IHZvaWQqKTsKIAogICAgIHN0cnVj
dCBUcnlNYWxsb2NSZXR1cm5WYWx1ZSB7CiAgICAgICAgIFRyeU1hbGxvY1JldHVyblZhbHVlKHZv
aWQqIGRhdGEpCkBAIC02OCwyNiArNjgsMjYgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHJl
dHVybiByZXR1cm5WYWx1ZTsKICAgICB9CiAKLSAgICBUcnlNYWxsb2NSZXR1cm5WYWx1ZSB0cnlG
YXN0TWFsbG9jKHNpemVfdCBuKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVHJ5TWFsbG9jUmV0
dXJuVmFsdWUgdHJ5RmFzdE1hbGxvYyhzaXplX3Qgbik7CiAgICAgVHJ5TWFsbG9jUmV0dXJuVmFs
dWUgdHJ5RmFzdFplcm9lZE1hbGxvYyhzaXplX3Qgbik7Ci0gICAgVHJ5TWFsbG9jUmV0dXJuVmFs
dWUgdHJ5RmFzdENhbGxvYyhzaXplX3Qgbl9lbGVtZW50cywgc2l6ZV90IGVsZW1lbnRfc2l6ZSk7
Ci0gICAgVHJ5TWFsbG9jUmV0dXJuVmFsdWUgdHJ5RmFzdFJlYWxsb2Modm9pZCogcCwgc2l6ZV90
IG4pOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBUcnlNYWxsb2NSZXR1cm5WYWx1ZSB0cnlGYXN0
Q2FsbG9jKHNpemVfdCBuX2VsZW1lbnRzLCBzaXplX3QgZWxlbWVudF9zaXplKTsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgVHJ5TWFsbG9jUmV0dXJuVmFsdWUgdHJ5RmFzdFJlYWxsb2Modm9pZCog
cCwgc2l6ZV90IG4pOwogCi0gICAgdm9pZCBmYXN0RnJlZSh2b2lkKik7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQgZmFzdEZyZWUodm9pZCopOwogCiAjaWZuZGVmIE5ERUJVRyAgICAKICAg
ICB2b2lkIGZhc3RNYWxsb2NGb3JiaWQoKTsKICAgICB2b2lkIGZhc3RNYWxsb2NBbGxvdygpOwog
I2VuZGlmCiAKLSAgICB2b2lkIHJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeSgpOworICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSB2b2lkIHJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeSgpOwogICAg
IAogICAgIHN0cnVjdCBGYXN0TWFsbG9jU3RhdGlzdGljcyB7CiAgICAgICAgIHNpemVfdCByZXNl
cnZlZFZNQnl0ZXM7CiAgICAgICAgIHNpemVfdCBjb21taXR0ZWRWTUJ5dGVzOwogICAgICAgICBz
aXplX3QgZnJlZUxpc3RCeXRlczsKICAgICB9OwotICAgIEZhc3RNYWxsb2NTdGF0aXN0aWNzIGZh
c3RNYWxsb2NTdGF0aXN0aWNzKCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIEZhc3RNYWxsb2NT
dGF0aXN0aWNzIGZhc3RNYWxsb2NTdGF0aXN0aWNzKCk7CiAKICAgICAvLyBUaGlzIGRlZmluZXMg
YSB0eXBlIHdoaWNoIGhvbGRzIGFuIHVuc2lnbmVkIGludGVnZXIgYW5kIGlzIHRoZSBzYW1lCiAg
ICAgLy8gc2l6ZSBhcyB0aGUgbWluaW1hbGx5IGFsaWduZWQgbWVtb3J5IGFsbG9jYXRpb24uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL01ENS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi9NRDUuaAppbmRleCAzY2FhODEwYmFhNDBhNjI4MzE0ODhmNTZkMTA4MTQz
YmIzM2YwNTAzLi5lZjAyN2NjYWQ3MjMwMDE0ZWRiNDRmNmI3YjZlZDRkMmFhZjUzODE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL01ENS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvTUQ1LmgKQEAgLTM3LDE2ICszNywxNiBAQCBuYW1lc3BhY2UgV1RGIHsK
IAogY2xhc3MgTUQ1IHsKIHB1YmxpYzoKLSAgICBNRDUoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgTUQ1KCk7CiAKICAgICB2b2lkIGFkZEJ5dGVzKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaW5w
dXQpCiAgICAgewogICAgICAgICBhZGRCeXRlcyhpbnB1dC5kYXRhKCksIGlucHV0LnNpemUoKSk7
CiAgICAgfQotICAgIHZvaWQgYWRkQnl0ZXMoY29uc3QgdWludDhfdCogaW5wdXQsIHNpemVfdCBs
ZW5ndGgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFkZEJ5dGVzKGNvbnN0IHVpbnQ4
X3QqIGlucHV0LCBzaXplX3QgbGVuZ3RoKTsKIAogICAgIC8vIGNoZWNrc3VtIGhhcyBhIHNpZGUg
ZWZmZWN0IG9mIHJlc2V0dGluZyB0aGUgc3RhdGUgb2YgdGhlIG9iamVjdC4KLSAgICB2b2lkIGNo
ZWNrc3VtKFZlY3Rvcjx1aW50OF90LCAxNj4mKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBjaGVja3N1bShWZWN0b3I8dWludDhfdCwgMTY+Jik7CiAKIHByaXZhdGU6CiAgICAgdWludDMy
X3QgbV9idWZbNF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL01haW5U
aHJlYWQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvTWFpblRocmVhZC5oCmluZGV4IGMx
NTNkMWViYTQ4NWE3MmYxZGFmZDI5NTMyMzZhYWIzYjdjZmNlZDcuLmZmNzZhNWZkMzQxOTFkMWE2
YWMxZmZmZjkzNTNkYmI0MzkyOWEwZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvTWFpblRocmVhZC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvTWFpblRo
cmVhZC5oCkBAIC00MCwyMSArNDAsMjEgQEAgdHlwZWRlZiB1aW50MzJfdCBUaHJlYWRJZGVudGlm
aWVyOwogdHlwZWRlZiB2b2lkIE1haW5UaHJlYWRGdW5jdGlvbih2b2lkKik7CiAKIC8vIE11c3Qg
YmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLgotdm9pZCBpbml0aWFsaXplTWFpblRocmVh
ZCgpOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgaW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKIAot
dm9pZCBjYWxsT25NYWluVGhyZWFkKE1haW5UaHJlYWRGdW5jdGlvbiosIHZvaWQqIGNvbnRleHQp
Owotdm9pZCBjYWxsT25NYWluVGhyZWFkQW5kV2FpdChNYWluVGhyZWFkRnVuY3Rpb24qLCB2b2lk
KiBjb250ZXh0KTsKLXZvaWQgY2FuY2VsQ2FsbE9uTWFpblRocmVhZChNYWluVGhyZWFkRnVuY3Rp
b24qLCB2b2lkKiBjb250ZXh0KTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIGNhbGxPbk1haW5U
aHJlYWQoTWFpblRocmVhZEZ1bmN0aW9uKiwgdm9pZCogY29udGV4dCk7CitXVEZfRVhQT1JUX1BS
SVZBVEUgdm9pZCBjYWxsT25NYWluVGhyZWFkQW5kV2FpdChNYWluVGhyZWFkRnVuY3Rpb24qLCB2
b2lkKiBjb250ZXh0KTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIGNhbmNlbENhbGxPbk1haW5U
aHJlYWQoTWFpblRocmVhZEZ1bmN0aW9uKiwgdm9pZCogY29udGV4dCk7CiAKIHRlbXBsYXRlPHR5
cGVuYW1lPiBjbGFzcyBGdW5jdGlvbjsKLXZvaWQgY2FsbE9uTWFpblRocmVhZChjb25zdCBGdW5j
dGlvbjx2b2lkICgpPiYpOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgY2FsbE9uTWFpblRocmVh
ZChjb25zdCBGdW5jdGlvbjx2b2lkICgpPiYpOwogICAgIAotdm9pZCBzZXRNYWluVGhyZWFkQ2Fs
bGJhY2tzUGF1c2VkKGJvb2wgcGF1c2VkKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNldE1h
aW5UaHJlYWRDYWxsYmFja3NQYXVzZWQoYm9vbCBwYXVzZWQpOwogCi1ib29sIGlzTWFpblRocmVh
ZCgpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNNYWluVGhyZWFkKCk7CiAjaWYgRU5BQkxF
KFBBUkFMTEVMX0dDKQogdm9pZCByZWdpc3RlckdDVGhyZWFkKCk7Ci1ib29sIGlzTWFpblRocmVh
ZE9yR0NUaHJlYWQoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGlzTWFpblRocmVhZE9yR0NU
aHJlYWQoKTsKICNlbGlmIFBMQVRGT1JNKE1BQykKIGJvb2wgaXNNYWluVGhyZWFkT3JHQ1RocmVh
ZCgpOwogI2Vsc2UKQEAgLTcwLDcgKzcwLDcgQEAgdm9pZCBkaXNwYXRjaEZ1bmN0aW9uc0Zyb21N
YWluVGhyZWFkKCk7CiAvLyBUaGlzIHZlcnNpb24gb2YgaW5pdGlhbGl6ZU1haW5UaHJlYWQgc2V0
cyB1cCB0aGUgbWFpbiB0aHJlYWQgYXMgY29ycmVzcG9uZGluZwogLy8gdG8gdGhlIHByb2Nlc3Mn
cyBtYWluIHRocmVhZCwgYW5kIG5vdCBuZWNlc3NhcmlseSB0aGUgdGhyZWFkIHRoYXQgY2FsbHMg
dGhpcwogLy8gZnVuY3Rpb24uIEl0IHNob3VsZCBvbmx5IGJlIHVzZWQgYXMgYSBsZWdhY3kgYWlk
IGZvciBNYWMgV2ViS2l0Lgotdm9pZCBpbml0aWFsaXplTWFpblRocmVhZFRvUHJvY2Vzc01haW5U
aHJlYWQoKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIGluaXRpYWxpemVNYWluVGhyZWFkVG9Q
cm9jZXNzTWFpblRocmVhZCgpOwogdm9pZCBpbml0aWFsaXplTWFpblRocmVhZFRvUHJvY2Vzc01h
aW5UaHJlYWRQbGF0Zm9ybSgpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvTWV0YUFsbG9jYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9N
ZXRhQWxsb2NhdG9yLmgKaW5kZXggY2Y5NzFiNzIwNzdjNDgzMWE5ZDA0MzE4MDM2ZGU2NjljZDVl
NTA0Mi4uYTMzNzAzOTQ0YzBiZGUxOTk1ZjRlZjNjZjE1OGExODcxY2YzNmYwYiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9NZXRhQWxsb2NhdG9yLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9NZXRhQWxsb2NhdG9yLmgKQEAgLTQ3LDExICs0NywxMSBAQCBj
bGFzcyBNZXRhQWxsb2NhdG9yIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNZXRhQWxsb2Nh
dG9yKTsKIHB1YmxpYzoKICAgICAKLSAgICBNZXRhQWxsb2NhdG9yKHNpemVfdCBhbGxvY2F0aW9u
R3JhbnVsZSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIE1ldGFBbGxvY2F0b3Ioc2l6ZV90IGFs
bG9jYXRpb25HcmFudWxlKTsKICAgICAKICAgICB2aXJ0dWFsIH5NZXRhQWxsb2NhdG9yKCk7CiAg
ICAgCi0gICAgUGFzc1JlZlB0cjxNZXRhQWxsb2NhdG9ySGFuZGxlPiBhbGxvY2F0ZShzaXplX3Qg
c2l6ZUluQnl0ZXMpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBQYXNzUmVmUHRyPE1ldGFBbGxv
Y2F0b3JIYW5kbGU+IGFsbG9jYXRlKHNpemVfdCBzaXplSW5CeXRlcyk7CiAgICAgCiAgICAgLy8g
Tm9uLWF0b21pYyBtZXRob2RzIGZvciBnZXR0aW5nIGFsbG9jYXRvciBzdGF0aXN0aWNzLgogICAg
IHNpemVfdCBieXRlc0FsbG9jYXRlZCgpIHsgcmV0dXJuIG1fYnl0ZXNBbGxvY2F0ZWQ7IH0KQEAg
LTY5LDExICs2OSwxMSBAQCBwdWJsaWM6CiAgICAgLy8gQWRkIG1vcmUgZnJlZSBzcGFjZSB0byB0
aGUgYWxsb2NhdG9yLiBDYWxsIHRoaXMgZGlyZWN0bHkgZnJvbQogICAgIC8vIHRoZSBjb25zdHJ1
Y3RvciBpZiB5b3Ugd2lzaCB0byBvcGVyYXRlIHRoZSBhbGxvY2F0b3Igd2l0aGluIGEKICAgICAv
LyBmaXhlZCBwb29sLgotICAgIHZvaWQgYWRkRnJlc2hGcmVlU3BhY2Uodm9pZCogc3RhcnQsIHNp
emVfdCBzaXplSW5CeXRlcyk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYWRkRnJlc2hG
cmVlU3BhY2Uodm9pZCogc3RhcnQsIHNpemVfdCBzaXplSW5CeXRlcyk7CiAKICAgICAvLyBUaGlz
IGlzIG1lYW50IG9ubHkgZm9yIGltcGxlbWVudGluZyB0ZXN0cy4gTmV2ZXIgY2FsbCB0aGlzIGlu
IHJlbGVhc2UKICAgICAvLyBidWlsZHMuCi0gICAgc2l6ZV90IGRlYnVnRnJlZVNwYWNlU2l6ZSgp
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZGVidWdGcmVlU3BhY2VTaXplKCk7CiAg
ICAgCiAjaWYgRU5BQkxFKE1FVEFfQUxMT0NBVE9SX1BST0ZJTEUpCiAgICAgdm9pZCBkdW1wUHJv
ZmlsZSgpOwpAQCAtMTI3LDcgKzEyNyw3IEBAIHByaXZhdGU6CiAgICAgc2l6ZV90IHJvdW5kVXAo
c2l6ZV90IHNpemVJbkJ5dGVzKTsKICAgICAKICAgICBGcmVlU3BhY2VOb2RlKiBhbGxvY0ZyZWVT
cGFjZU5vZGUoKTsKLSAgICB2b2lkIGZyZWVGcmVlU3BhY2VOb2RlKEZyZWVTcGFjZU5vZGUqKTsK
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBmcmVlRnJlZVNwYWNlTm9kZShGcmVlU3BhY2VO
b2RlKik7CiAgICAgCiAgICAgc2l6ZV90IG1fYWxsb2NhdGlvbkdyYW51bGU7CiAgICAgdW5zaWdu
ZWQgbV9sb2dBbGxvY2F0aW9uR3JhbnVsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvTWV0YUFsbG9jYXRvckhhbmRsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9NZXRhQWxsb2NhdG9ySGFuZGxlLmgKaW5kZXggNWEzMjA4MWQ0ZjBmOGY2NDU1MThjODEzMTk5
NmU2YjAxMGFkOGNjMC4uOTMxMDk1MmIwNmYwMTk2YTlkYzZlNzMzOWRmN2UwYTFjNjQ3MzY1MiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9NZXRhQWxsb2NhdG9ySGFuZGxl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9NZXRhQWxsb2NhdG9ySGFuZGxlLmgK
QEAgLTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKICAgICB9CiAgICAgCiBwdWJsaWM6Ci0gICAgfk1l
dGFBbGxvY2F0b3JIYW5kbGUoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgfk1ldGFBbGxvY2F0
b3JIYW5kbGUoKTsKICAgICAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZXRhQWxsb2NhdG9ySGFu
ZGxlPiBjcmVhdGVTZWxmTWFuYWdlZEhhbmRsZSh2b2lkKiBzdGFydCwgc2l6ZV90IHNpemVJbkJ5
dGVzKQogICAgIHsKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9z
aXplSW5CeXRlczsKICAgICB9CiAgICAgICAgIAotICAgIHZvaWQgc2hyaW5rKHNpemVfdCBuZXdT
aXplSW5CeXRlcyk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2hyaW5rKHNpemVfdCBu
ZXdTaXplSW5CeXRlcyk7CiAgICAgCiAgICAgYm9vbCBpc01hbmFnZWQoKQogICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvT1NBbGxvY2F0b3IuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvT1NBbGxvY2F0b3IuaAppbmRleCBiZjlmMDQ5Njg3MWY1Yzk1MDg2
OGQzY2Y0NTRhYTM0OTg1MDAwZGM5Li5iZTc5MWE4YzhmZDA4YzMzYTZlNzJiZDc0NmY3YWUzYmVh
NTZjZTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL09TQWxsb2NhdG9y
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9PU0FsbG9jYXRvci5oCkBAIC00Niw3
ICs0Niw3IEBAIHB1YmxpYzoKICAgICAvLyByZWxlYXNlRGVjb21taXR0ZWQgc2hvdWxkIGJlIGNh
bGxlZCBvbiBhIHJlZ2lvbiBvZiBWTSBhbGxvY2F0ZWQgYnkgYSBzaW5nbGUgcmVzZXJ2YXRpb24s
CiAgICAgLy8gdGhlIG1lbW9yeSBtdXN0IGFsbCBjdXJyZW50bHkgYmUgaW4gYSBkZWNvbW1pdHRl
ZCBzdGF0ZS4KICAgICBzdGF0aWMgdm9pZCogcmVzZXJ2ZVVuY29tbWl0dGVkKHNpemVfdCwgVXNh
Z2UgPSBVbmtub3duVXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUg
PSBmYWxzZSwgYm9vbCBpbmNsdWRlc0d1YXJkUGFnZXMgPSBmYWxzZSk7Ci0gICAgc3RhdGljIHZv
aWQgcmVsZWFzZURlY29tbWl0dGVkKHZvaWQqLCBzaXplX3QpOworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgdm9pZCByZWxlYXNlRGVjb21taXR0ZWQodm9pZCosIHNpemVfdCk7CiAKICAg
ICAvLyBUaGVzZSBtZXRob2RzIGFyZSBzeW1tZXRyaWM7IHRoZXkgY29tbWl0IG9yIGRlY29tbWl0
IGEgcmVnaW9uIG9mIFZNICh1bmNvbW1pdHRlZCBWTSBzaG91bGQKICAgICAvLyBuZXZlciBiZSBh
Y2Nlc3NlZCwgc2luY2UgdGhlIE9TIG1heSBub3QgaGF2ZSBhdHRhY2hlZCBwaHlzaWNhbCBtZW1v
cnkgZm9yIHRoZXNlIHJlZ2lvbnMpLgpAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgLy8g
VGhlc2UgbWV0aG9kcyBhcmUgc3ltbWV0cmljOyByZXNlcnZlQW5kQ29tbWl0IGFsbG9jYXRlcyBW
TSBpbiBhbiBjb21taXR0ZWQgc3RhdGUsCiAgICAgLy8gZGVjb21taXRBbmRSZWxlYXNlIHNob3Vs
ZCBiZSBjYWxsZWQgb24gYSByZWdpb24gb2YgVk0gYWxsb2NhdGVkIGJ5IGEgc2luZ2xlIHJlc2Vy
dmF0aW9uLAogICAgIC8vIHRoZSBtZW1vcnkgbXVzdCBhbGwgY3VycmVudGx5IGJlIGluIGEgY29t
bWl0dGVkIHN0YXRlLgotICAgIHN0YXRpYyB2b2lkKiByZXNlcnZlQW5kQ29tbWl0KHNpemVfdCwg
VXNhZ2UgPSBVbmtub3duVXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFi
bGUgPSBmYWxzZSwgYm9vbCBpbmNsdWRlc0d1YXJkUGFnZXMgPSBmYWxzZSk7CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkKiByZXNlcnZlQW5kQ29tbWl0KHNpemVfdCwgVXNhZ2Ug
PSBVbmtub3duVXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUgPSBm
YWxzZSwgYm9vbCBpbmNsdWRlc0d1YXJkUGFnZXMgPSBmYWxzZSk7CiAgICAgc3RhdGljIHZvaWQg
ZGVjb21taXRBbmRSZWxlYXNlKHZvaWQqIGJhc2UsIHNpemVfdCBzaXplKTsKIAogICAgIC8vIFRo
ZXNlIG1ldGhvZHMgYXJlIGFraW4gdG8gcmVzZXJ2ZUFuZENvbW1pdC9kZWNvbW1pdEFuZFJlbGVh
c2UsIGFib3ZlIC0gaG93ZXZlciByYXRoZXIgdGhhbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi9QYWdlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGFn
ZUJsb2NrLmgKaW5kZXggZTE3YzU0NjBhZGI0MjliZTEyYjJmOTIwMTIwMDBjODc4YzAwNWExMy4u
M2MzNDhhMGUzMWQzNDZiMDEzYjkzNzEzYmEyM2UzMDkxMjEzNmQzYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QYWdlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL1BhZ2VCbG9jay5oCkBAIC0yOCw3ICsyOCw3IEBACiAKIG5hbWVzcGFjZSBXVEYg
ewogCi1zaXplX3QgcGFnZVNpemUoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgcGFnZVNp
emUoKTsKIGlubGluZSBib29sIGlzUGFnZUFsaWduZWQodm9pZCogYWRkcmVzcykgeyByZXR1cm4g
IShyZWludGVycHJldF9jYXN0PGludHB0cl90PihhZGRyZXNzKSAmIChwYWdlU2l6ZSgpIC0gMSkp
OyB9CiBpbmxpbmUgYm9vbCBpc1BhZ2VBbGlnbmVkKHNpemVfdCBzaXplKSB7IHJldHVybiAhKHNp
emUgJiAocGFnZVNpemUoKSAtIDEpKTsgfQogaW5saW5lIGJvb2wgaXNQb3dlck9mVHdvKHNpemVf
dCBzaXplKSB7IHJldHVybiAhKHNpemUgJiAoc2l6ZSAtIDEpKTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9SYW5kb21OdW1iZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvUmFuZG9tTnVtYmVyLmgKaW5kZXggZjJlN2U4ZjUwZjdlYmRlZDFiM2I3NjVmMmQx
YzdlZDExN2M3YTRmOC4uNzZiMjIzNTgyY2JiYTYxZTMwY2Q0ODQxMjU3MzNhNjExMDEwYzIzYiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9SYW5kb21OdW1iZXIuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1JhbmRvbU51bWJlci5oCkBAIC0zMCw3ICszMCw3
IEBAIG5hbWVzcGFjZSBXVEYgewogCiAgICAgLy8gUmV0dXJucyBhIHBzZXVkby1yYW5kb20gbnVt
YmVyIGluIHRoZSByYW5nZSBbMCwgMSksIGF0dGVtcHRzIHRvIGJlCiAgICAgLy8gY3J5cHRvZ3Jh
cGhpY2FsbHkgc2VjdXJlIGlmIHBvc3NpYmxlIG9uIHRoZSB0YXJnZXQgcGxhdGZvcm0KLSAgICBk
b3VibGUgcmFuZG9tTnVtYmVyKCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGRvdWJsZSByYW5k
b21OdW1iZXIoKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L1JlZkNvdW50ZWRMZWFrQ291bnRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9SZWZD
b3VudGVkTGVha0NvdW50ZXIuaAppbmRleCAyMmM3NTA2YWMxOWE5YWI1YzQxNzdmYWEwM2YxYTA5
M2JlN2U5NTRkLi40NzZiMTczNWFkYjQxM2Y1MzU1ZDY3NGVlNGIxYTNjMjlhNmEzZDc1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmgK
QEAgLTI3LDE0ICsyNywxNCBAQAogbmFtZXNwYWNlIFdURiB7CiAgICAgCiAgICAgc3RydWN0IFJl
ZkNvdW50ZWRMZWFrQ291bnRlciB7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHN1cHByZXNzTWVzc2Fn
ZXMoY29uc3QgY2hhciopOwotICAgICAgICBzdGF0aWMgdm9pZCBjYW5jZWxNZXNzYWdlU3VwcHJl
c3Npb24oY29uc3QgY2hhciopOworICAgICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZv
aWQgc3VwcHJlc3NNZXNzYWdlcyhjb25zdCBjaGFyKik7CisgICAgICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgdm9pZCBjYW5jZWxNZXNzYWdlU3VwcHJlc3Npb24oY29uc3QgY2hhciopOwog
ICAgICAgICAKLSAgICAgICAgZXhwbGljaXQgUmVmQ291bnRlZExlYWtDb3VudGVyKGNvbnN0IGNo
YXIqIGRlc2NyaXB0aW9uKTsKLSAgICAgICAgflJlZkNvdW50ZWRMZWFrQ291bnRlcigpOworICAg
ICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgZXhwbGljaXQgUmVmQ291bnRlZExlYWtDb3VudGVyKGNv
bnN0IGNoYXIqIGRlc2NyaXB0aW9uKTsKKyAgICAgICAgV1RGX0VYUE9SVF9QUklWQVRFIH5SZWZD
b3VudGVkTGVha0NvdW50ZXIoKTsKIAotICAgICAgICB2b2lkIGluY3JlbWVudCgpOwotICAgICAg
ICB2b2lkIGRlY3JlbWVudCgpOworICAgICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbmNy
ZW1lbnQoKTsKKyAgICAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZGVjcmVtZW50KCk7CiAK
ICNpZm5kZWYgTkRFQlVHCiAgICAgcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvU0hBMS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9TSEExLmgKaW5k
ZXggZGFkNmRjODY3MDAzM2U1YzhhODBiZTI1OWUwNWMyNzExOWRjZTYxMi4uZThjYzgwMmU5ZTZl
MTZiMDk0YjYyMTdkNmY5ZjVhNzdkMTU1OWNmOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi9TSEExLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9TSEExLmgK
QEAgLTM3LDE2ICszNywxNiBAQCBuYW1lc3BhY2UgV1RGIHsKIAogY2xhc3MgU0hBMSB7CiBwdWJs
aWM6Ci0gICAgU0hBMSgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTSEExKCk7CiAKICAgICB2
b2lkIGFkZEJ5dGVzKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaW5wdXQpCiAgICAgewogICAgICAg
ICBhZGRCeXRlcyhpbnB1dC5kYXRhKCksIGlucHV0LnNpemUoKSk7CiAgICAgfQotICAgIHZvaWQg
YWRkQnl0ZXMoY29uc3QgdWludDhfdCogaW5wdXQsIHNpemVfdCBsZW5ndGgpOworICAgIFdURl9F
WFBPUlRfUFJJVkFURSB2b2lkIGFkZEJ5dGVzKGNvbnN0IHVpbnQ4X3QqIGlucHV0LCBzaXplX3Qg
bGVuZ3RoKTsKIAogICAgIC8vIGNvbXB1dGVIYXNoIGhhcyBhIHNpZGUgZWZmZWN0IG9mIHJlc2V0
dGluZyB0aGUgc3RhdGUgb2YgdGhlIG9iamVjdC4KLSAgICB2b2lkIGNvbXB1dGVIYXNoKFZlY3Rv
cjx1aW50OF90LCAyMD4mKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBjb21wdXRlSGFz
aChWZWN0b3I8dWludDhfdCwgMjA+Jik7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBmaW5hbGl6ZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmcuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmcuY3BwCmluZGV4IGYyZTA1NjVlOTk2
MjU4Zjc4ODZlMDNhZDQ0Zjg5MGQyZDdiNmNlZWMuLmQ4ZGJiYWU0ZjU0NzY1ZDYxZTlmMjA4NmQz
MDE3YzBhNGE1MTdhNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhy
ZWFkaW5nLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZy5jcHAK
QEAgLTg5LDcgKzg5LDcgQEAgVGhyZWFkSWRlbnRpZmllciBjcmVhdGVUaHJlYWQoVGhyZWFkRnVu
Y3Rpb24gZW50cnlQb2ludCwgdm9pZCogZGF0YSwgY29uc3QgY2hhcioKIC8vIFRoaXMgZnVuY3Rp
b24gaXMgZGVwcmVjYXRlZCBidXQgbmVlZHMgdG8gYmUga2VwdCBhcm91bmQgZm9yIGJhY2t3YXJk
CiAvLyBjb21wYXRpYmlsaXR5LiBVc2UgdGhlIDMtYXJndW1lbnQgdmVyc2lvbiBvZiBjcmVhdGVU
aHJlYWQgYWJvdmUuCiAKLVRocmVhZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkKFRocmVhZEZ1bmN0
aW9uIGVudHJ5UG9pbnQsIHZvaWQqIGRhdGEpOworV1RGX0VYUE9SVF9QUklWQVRFIFRocmVhZElk
ZW50aWZpZXIgY3JlYXRlVGhyZWFkKFRocmVhZEZ1bmN0aW9uIGVudHJ5UG9pbnQsIHZvaWQqIGRh
dGEpOwogCiBUaHJlYWRJZGVudGlmaWVyIGNyZWF0ZVRocmVhZChUaHJlYWRGdW5jdGlvbiBlbnRy
eVBvaW50LCB2b2lkKiBkYXRhKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9UaHJlYWRpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmgK
aW5kZXggM2E4OTc1N2E5MTRhNzNiMjE3MjVjYzA4OThkMTAyYmRlOGJkN2U0Yy4uMWRlZTVkYTFj
YWY3YmFjZWE3ZGU2N2I1NTVlZDkxNTJiY2E4MmVjMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L1RocmVhZGluZy5oCkBAIC04MywxMSArODMsMTEgQEAgdHlwZWRlZiB2b2lkKiAoKlRocmVhZEZ1
bmN0aW9uKSh2b2lkKiBhcmd1bWVudCk7CiAvLyBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVk
IGZyb20gdGhlIG1haW4gdGhyZWFkLiBJdCBpcyBzYWZlIHRvIGNhbGwgaXQgcmVwZWF0ZWRseS4K
IC8vIERhcndpbiBpcyBhbiBleGNlcHRpb24gdG8gdGhpcyBydWxlOiBpdCBpcyBPSyB0byBjYWxs
IGl0IGZyb20gYW55IHRocmVhZCwgdGhlIG9ubHkgCiAvLyByZXF1aXJlbWVudCBpcyB0aGF0IHRo
ZSBjYWxscyBhcmUgbm90IHJlZW50cmFudC4KLXZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZygpOwor
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZygpOwogCiAvLyBSZXR1
cm5zIDAgaWYgdGhyZWFkIGNyZWF0aW9uIGZhaWxlZC4KIC8vIFRoZSB0aHJlYWQgbmFtZSBtdXN0
IGJlIGEgbGl0ZXJhbCBzaW5jZSBvbiBzb21lIHBsYXRmb3JtcyBpdCdzIHBhc3NlZCBpbiB0byB0
aGUgdGhyZWFkLgotVGhyZWFkSWRlbnRpZmllciBjcmVhdGVUaHJlYWQoVGhyZWFkRnVuY3Rpb24s
IHZvaWQqLCBjb25zdCBjaGFyKiB0aHJlYWROYW1lKTsKK1dURl9FWFBPUlRfUFJJVkFURSBUaHJl
YWRJZGVudGlmaWVyIGNyZWF0ZVRocmVhZChUaHJlYWRGdW5jdGlvbiwgdm9pZCosIGNvbnN0IGNo
YXIqIHRocmVhZE5hbWUpOwogCiAvLyBJbnRlcm5hbCBwbGF0Zm9ybS1zcGVjaWZpYyBjcmVhdGVU
aHJlYWQgaW1wbGVtZW50YXRpb24uCiBUaHJlYWRJZGVudGlmaWVyIGNyZWF0ZVRocmVhZEludGVy
bmFsKFRocmVhZEZ1bmN0aW9uLCB2b2lkKiwgY29uc3QgY2hhciogdGhyZWFkTmFtZSk7CkBAIC05
NiwxNCArOTYsMTQgQEAgVGhyZWFkSWRlbnRpZmllciBjcmVhdGVUaHJlYWRJbnRlcm5hbChUaHJl
YWRGdW5jdGlvbiwgdm9pZCosIGNvbnN0IGNoYXIqIHRocmVhZE4KIC8vIEhlbHBmdWwgZm9yIHBs
YXRmb3JtcyB3aGVyZSB0aGUgdGhyZWFkIG5hbWUgbXVzdCBiZSBzZXQgZnJvbSB3aXRoaW4gdGhl
IHRocmVhZC4KIHZvaWQgaW5pdGlhbGl6ZUN1cnJlbnRUaHJlYWRJbnRlcm5hbChjb25zdCBjaGFy
KiB0aHJlYWROYW1lKTsKIAotVGhyZWFkSWRlbnRpZmllciBjdXJyZW50VGhyZWFkKCk7Ci1pbnQg
d2FpdEZvclRocmVhZENvbXBsZXRpb24oVGhyZWFkSWRlbnRpZmllciwgdm9pZCoqKTsKLXZvaWQg
ZGV0YWNoVGhyZWFkKFRocmVhZElkZW50aWZpZXIpOworV1RGX0VYUE9SVF9QUklWQVRFIFRocmVh
ZElkZW50aWZpZXIgY3VycmVudFRocmVhZCgpOworV1RGX0VYUE9SVF9QUklWQVRFIGludCB3YWl0
Rm9yVGhyZWFkQ29tcGxldGlvbihUaHJlYWRJZGVudGlmaWVyLCB2b2lkKiopOworV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQgZGV0YWNoVGhyZWFkKFRocmVhZElkZW50aWZpZXIpOwogCi12b2lkIHlp
ZWxkKCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCB5aWVsZCgpOwogCi12b2lkIGxvY2tBdG9t
aWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCgpOwotdm9pZCB1bmxvY2tBdG9taWNhbGx5SW5p
dGlhbGl6ZWRTdGF0aWNNdXRleCgpOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgbG9ja0F0b21p
Y2FsbHlJbml0aWFsaXplZFN0YXRpY011dGV4KCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCB1
bmxvY2tBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCgpOwogCiB9IC8vIG5hbWVzcGFj
ZSBXVEYKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdQ
cmltaXRpdmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZ1ByaW1pdGl2
ZXMuaAppbmRleCAxYmVkNWQzYWU1MGFmODQ3MDNjZGMyYzA1MDM5YmFiNWQ4ZTYzNDU0Li4yYWM0
MmM4ZjFlMmQ3NTIxZTkwMWU4YzcxYzMzMGNmZjVkNjU1MzNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaApAQCAtODIsMTIgKzgyLDEyIEBA
IHR5cGVkZWYgdm9pZCogUGxhdGZvcm1Db25kaXRpb247CiBjbGFzcyBNdXRleCB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoTXV0ZXgpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKLSAgICBNdXRleCgpOwotICAgIH5NdXRleCgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBN
dXRleCgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB+TXV0ZXgoKTsKIAotICAgIHZvaWQgbG9j
aygpOwotICAgIGJvb2wgdHJ5TG9jaygpOwotICAgIHZvaWQgdW5sb2NrKCk7CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHZvaWQgbG9jaygpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHRy
eUxvY2soKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCB1bmxvY2soKTsKIAogcHVibGlj
OgogICAgIFBsYXRmb3JtTXV0ZXgmIGltcGwoKSB7IHJldHVybiBtX211dGV4OyB9CkBAIC0xMTgs
MTUgKzExOCwxNSBAQCBwcml2YXRlOgogY2xhc3MgVGhyZWFkQ29uZGl0aW9uIHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShUaHJlYWRDb25kaXRpb24pOwogcHVibGljOgotICAgIFRocmVhZENv
bmRpdGlvbigpOwotICAgIH5UaHJlYWRDb25kaXRpb24oKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgVGhyZWFkQ29uZGl0aW9uKCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIH5UaHJlYWRDb25k
aXRpb24oKTsKICAgICAKLSAgICB2b2lkIHdhaXQoTXV0ZXgmIG11dGV4KTsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgdm9pZCB3YWl0KE11dGV4JiBtdXRleCk7CiAgICAgLy8gUmV0dXJucyB0cnVl
IGlmIHRoZSBjb25kaXRpb24gd2FzIHNpZ25hbGVkIGJlZm9yZSBhYnNvbHV0ZVRpbWUsIGZhbHNl
IGlmIHRoZSBhYnNvbHV0ZVRpbWUgd2FzIHJlYWNoZWQgb3IgaXMgaW4gdGhlIHBhc3QuCiAgICAg
Ly8gVGhlIGFic29sdXRlVGltZSBpcyBpbiBzZWNvbmRzLCBzdGFydGluZyBvbiBKYW51YXJ5IDEs
IDE5NzAuIFRoZSB0aW1lIGlzIGFzc3VtZWQgdG8gdXNlIHRoZSBzYW1lIHRpbWUgem9uZSBhcyBX
VEY6OmN1cnJlbnRUaW1lKCkuCi0gICAgYm9vbCB0aW1lZFdhaXQoTXV0ZXgmLCBkb3VibGUgYWJz
b2x1dGVUaW1lKTsKLSAgICB2b2lkIHNpZ25hbCgpOwotICAgIHZvaWQgYnJvYWRjYXN0KCk7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgdGltZWRXYWl0KE11dGV4JiwgZG91YmxlIGFic29s
dXRlVGltZSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2lnbmFsKCk7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHZvaWQgYnJvYWRjYXN0KCk7CiAgICAgCiBwcml2YXRlOgogICAgIFBs
YXRmb3JtQ29uZGl0aW9uIG1fY29uZGl0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi9XVEZUaHJlYWREYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1dU
RlRocmVhZERhdGEuaAppbmRleCA4MWI4MTdmNmY5NmM0MDI5MmZkMmJjMGUxZjJiZTMwNmQwN2M5
YThlLi5iMDJkMTBkN2M4MTkxYTdhNWZlN2I1ZTdhNzI0NDJmNTY4ZmQ0NjdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1dURlRocmVhZERhdGEuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL1dURlRocmVhZERhdGEuaApAQCAtNzgsOCArNzgsOCBAQCB0eXBl
ZGVmIHZvaWQgKCpBdG9taWNTdHJpbmdUYWJsZURlc3RydWN0b3IpKEF0b21pY1N0cmluZ1RhYmxl
Kik7CiBjbGFzcyBXVEZUaHJlYWREYXRhIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXVEZU
aHJlYWREYXRhKTsKIHB1YmxpYzoKLSAgICBXVEZUaHJlYWREYXRhKCk7Ci0gICAgfldURlRocmVh
ZERhdGEoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV1RGVGhyZWFkRGF0YSgpOworICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSB+V1RGVGhyZWFkRGF0YSgpOwogCiAgICAgQXRvbWljU3RyaW5nVGFi
bGUqIGF0b21pY1N0cmluZ1RhYmxlKCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL2R0b2EuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvZHRvYS5oCmlu
ZGV4IGRmMzNlMmNkYzgyMmJhZjVlMjI3OWYxMTM0MjBmYzRhM2U0NzNmZGEuLmQyN2M1OTIwNjQ3
ZmQ5NjU0YzhhZWIyYWU1MDk4MDY4MGRlNDc3YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvZHRvYS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvZHRvYS5o
CkBAIC0zMSwxOSArMzEsMTkgQEAgZXh0ZXJuIFdURjo6TXV0ZXgqIHNfZHRvYVA1TXV0ZXg7CiAK
IHR5cGVkZWYgY2hhciBEdG9hQnVmZmVyWzgwXTsKIAotdm9pZCBkdG9hKER0b2FCdWZmZXIgcmVz
dWx0LCBkb3VibGUgZGQsIGJvb2wmIHNpZ24sIGludCYgZXhwb25lbnQsIHVuc2lnbmVkJiBwcmVj
aXNpb24pOwotdm9pZCBkdG9hUm91bmRTRihEdG9hQnVmZmVyIHJlc3VsdCwgZG91YmxlIGRkLCBp
bnQgbmRpZ2l0cywgYm9vbCYgc2lnbiwgaW50JiBleHBvbmVudCwgdW5zaWduZWQmIHByZWNpc2lv
bik7Ci12b2lkIGR0b2FSb3VuZERQKER0b2FCdWZmZXIgcmVzdWx0LCBkb3VibGUgZGQsIGludCBu
ZGlnaXRzLCBib29sJiBzaWduLCBpbnQmIGV4cG9uZW50LCB1bnNpZ25lZCYgcHJlY2lzaW9uKTsK
K1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIGR0b2EoRHRvYUJ1ZmZlciByZXN1bHQsIGRvdWJsZSBk
ZCwgYm9vbCYgc2lnbiwgaW50JiBleHBvbmVudCwgdW5zaWduZWQmIHByZWNpc2lvbik7CitXVEZf
RVhQT1JUX1BSSVZBVEUgdm9pZCBkdG9hUm91bmRTRihEdG9hQnVmZmVyIHJlc3VsdCwgZG91Ymxl
IGRkLCBpbnQgbmRpZ2l0cywgYm9vbCYgc2lnbiwgaW50JiBleHBvbmVudCwgdW5zaWduZWQmIHBy
ZWNpc2lvbik7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBkdG9hUm91bmREUChEdG9hQnVmZmVy
IHJlc3VsdCwgZG91YmxlIGRkLCBpbnQgbmRpZ2l0cywgYm9vbCYgc2lnbiwgaW50JiBleHBvbmVu
dCwgdW5zaWduZWQmIHByZWNpc2lvbik7CiAKIC8vIHMwMDogaW5wdXQgc3RyaW5nLiBNdXN0IG5v
dCBiZSAwIGFuZCBtdXN0IGJlIHRlcm1pbmF0ZWQgYnkgMC4KIC8vIHNlOiAqc2Ugd2lsbCBoYXZl
IHRoZSBsYXN0IGNvbnN1bWVkIGNoYXJhY3RlciBwb3NpdGlvbiArIDEuCi1kb3VibGUgc3RydG9k
KGNvbnN0IGNoYXIqIHMwMCwgY2hhcioqIHNlKTsKK1dURl9FWFBPUlRfUFJJVkFURSBkb3VibGUg
c3RydG9kKGNvbnN0IGNoYXIqIHMwMCwgY2hhcioqIHNlKTsKIAogLy8gU2l6ZSA9IDgwIGZvciBz
aXplb2YoRHRvYUJ1ZmZlcikgKyBzb21lIHNpZ24gYml0cywgZGVjaW1hbCBwb2ludCwgJ2UnLCBl
eHBvbmVudCBkaWdpdHMuCiBjb25zdCB1bnNpZ25lZCBOdW1iZXJUb1N0cmluZ0J1ZmZlckxlbmd0
aCA9IDk2OwogdHlwZWRlZiBjaGFyIE51bWJlclRvU3RyaW5nQnVmZmVyW051bWJlclRvU3RyaW5n
QnVmZmVyTGVuZ3RoXTsKIHR5cGVkZWYgVUNoYXIgTnVtYmVyVG9VU3RyaW5nQnVmZmVyW051bWJl
clRvU3RyaW5nQnVmZmVyTGVuZ3RoXTsKLWNvbnN0IGNoYXIqIG51bWJlclRvU3RyaW5nKGRvdWJs
ZSwgTnVtYmVyVG9TdHJpbmdCdWZmZXIpOworV1RGX0VYUE9SVF9QUklWQVRFIGNvbnN0IGNoYXIq
IG51bWJlclRvU3RyaW5nKGRvdWJsZSwgTnVtYmVyVG9TdHJpbmdCdWZmZXIpOwogY29uc3QgY2hh
ciogbnVtYmVyVG9GaXhlZFByZWNpc2lvblN0cmluZyhkb3VibGUsIHVuc2lnbmVkIHNpZ25pZmlj
YW50RmlndXJlcywgTnVtYmVyVG9TdHJpbmdCdWZmZXIsIGJvb2wgdHJ1bmNhdGVUcmFpbGluZ1pl
cm9zID0gZmFsc2UpOwogY29uc3QgY2hhciogbnVtYmVyVG9GaXhlZFdpZHRoU3RyaW5nKGRvdWJs
ZSwgdW5zaWduZWQgZGVjaW1hbFBsYWNlcywgTnVtYmVyVG9TdHJpbmdCdWZmZXIpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvQXRvbWljU3RyaW5nLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvQXRvbWljU3RyaW5nLmgKaW5kZXggNDNiMzhk
MTc5NGEwNzhmN2RlOThiNDU4Njg5YjZlMThkZGY3OTI4Zi4uNGM0NGYzZGQyNzBkMGYyMmExY2Q4
MjAxMzdjYzQ4NTczMGUxODYwNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi90ZXh0L0F0b21pY1N0cmluZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4
dC9BdG9taWNTdHJpbmcuaApAQCAtMzgsNyArMzgsNyBAQCBzdHJ1Y3QgQXRvbWljU3RyaW5nSGFz
aDsKIAogY2xhc3MgQXRvbWljU3RyaW5nIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBpbml0
KCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGluaXQoKTsKIAogICAgIEF0
b21pY1N0cmluZygpIHsgfQogICAgIEF0b21pY1N0cmluZyhjb25zdCBMQ2hhciogcykgOiBtX3N0
cmluZyhhZGQocykpIHsgfQpAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgQXRvbWljU3Ry
aW5nKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkgOiBtX3N0cmluZyhXVEY6Okhhc2hU
YWJsZURlbGV0ZWRWYWx1ZSkgeyB9CiAgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KIAot
ICAgIHN0YXRpYyBBdG9taWNTdHJpbmdJbXBsKiBmaW5kKGNvbnN0IFVDaGFyKiBzLCB1bnNpZ25l
ZCBsZW5ndGgsIHVuc2lnbmVkIGV4aXN0aW5nSGFzaCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBBdG9taWNTdHJpbmdJbXBsKiBmaW5kKGNvbnN0IFVDaGFyKiBzLCB1bnNpZ25lZCBs
ZW5ndGgsIHVuc2lnbmVkIGV4aXN0aW5nSGFzaCk7CiAKICAgICBvcGVyYXRvciBjb25zdCBTdHJp
bmcmKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KICAgICBjb25zdCBTdHJpbmcmIHN0cmlu
ZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9OwpAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBlbmRzV2l0aChjb25zdCBTdHJpbmcmIHMsIGJvb2wgY2FzZVNlbnNpdGl2ZSA9
IHRydWUpIGNvbnN0CiAgICAgICAgIHsgcmV0dXJuIG1fc3RyaW5nLmVuZHNXaXRoKHMsIGNhc2VT
ZW5zaXRpdmUpOyB9CiAgICAgCi0gICAgQXRvbWljU3RyaW5nIGxvd2VyKCkgY29uc3Q7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIEF0b21pY1N0cmluZyBsb3dlcigpIGNvbnN0OwogICAgIEF0b21p
Y1N0cmluZyB1cHBlcigpIGNvbnN0IHsgcmV0dXJuIEF0b21pY1N0cmluZyhpbXBsKCktPnVwcGVy
KCkpOyB9CiAgICAgCiAgICAgaW50IHRvSW50KGJvb2wqIG9rID0gMCkgY29uc3QgeyByZXR1cm4g
bV9zdHJpbmcudG9JbnQob2spOyB9CkBAIC0xMjAsMjAgKzEyMCwyMCBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIFN0cmluZyBtX3N0cmluZzsKICAgICAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
dHJpbmdJbXBsPiBhZGQoY29uc3QgTENoYXIqKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkKGNvbnN0IExDaGFyKik7CiAgICAgQUxXQVlT
X0lOTElORSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGQoY29uc3QgY2hhciogcykg
eyByZXR1cm4gYWRkKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihzKSk7IH07Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQg
bGVuZ3RoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5n
SW1wbD4gYWRkKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBBTFdBWVNfSU5M
SU5FIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChjb25zdCBjaGFyKiBzLCB1bnNp
Z25lZCBsZW5ndGgpIHsgcmV0dXJuIGFkZChyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihz
KSwgbGVuZ3RoKTsgfTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGQoY29u
c3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIGV4aXN0aW5nSGFzaCk7Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkKGNvbnN0IFVDaGFyKik7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChjb25zdCBV
Q2hhciosIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgZXhpc3RpbmdIYXNoKTsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkKGNvbnN0IFVD
aGFyKik7CiAgICAgQUxXQVlTX0lOTElORSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChTdHJp
bmdJbXBsKiByKQogICAgIHsKICAgICAgICAgaWYgKCFyIHx8IHItPmlzQXRvbWljKCkpCiAgICAg
ICAgICAgICByZXR1cm4gcjsKICAgICAgICAgcmV0dXJuIGFkZFNsb3dDYXNlKHIpOwogICAgIH0K
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGRTbG93Q2FzZShTdHJpbmdJbXBs
Kik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBmcm9tVVRGOEludGVybmFsKGNvbnN0IGNoYXIq
LCBjb25zdCBjaGFyKik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRy
PFN0cmluZ0ltcGw+IGFkZFNsb3dDYXNlKFN0cmluZ0ltcGwqKTsKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIEF0b21pY1N0cmluZyBmcm9tVVRGOEludGVybmFsKGNvbnN0IGNoYXIqLCBj
b25zdCBjaGFyKik7CiB9OwogCiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEF0b21pY1N0
cmluZyYgYSwgY29uc3QgQXRvbWljU3RyaW5nJiBiKSB7IHJldHVybiBhLmltcGwoKSA9PSBiLmlt
cGwoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0NTdHJp
bmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9DU3RyaW5nLmgKaW5kZXggMzQz
YTdhNTI1MjA3NDFlMmFkY2RiZDgxMGUzZTk5OTVhMzgwZDQ2NC4uZDQzYWQ0YmQ3ZDcwMWYyYzM3
MWI3NTk4NDM4NDhjYWNmZmJlMzhkNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi90ZXh0L0NTdHJpbmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQv
Q1N0cmluZy5oCkBAIC01MiwxNiArNTIsMTYgQEAgcHJpdmF0ZToKIGNsYXNzIENTdHJpbmcgewog
cHVibGljOgogICAgIENTdHJpbmcoKSB7IH0KLSAgICBDU3RyaW5nKGNvbnN0IGNoYXIqKTsKLSAg
ICBDU3RyaW5nKGNvbnN0IGNoYXIqLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgQ1N0cmluZyhjb25zdCBjaGFyKik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIENTdHJp
bmcoY29uc3QgY2hhciosIHNpemVfdCBsZW5ndGgpOwogICAgIENTdHJpbmcoQ1N0cmluZ0J1ZmZl
ciogYnVmZmVyKSA6IG1fYnVmZmVyKGJ1ZmZlcikgeyB9Ci0gICAgc3RhdGljIENTdHJpbmcgbmV3
VW5pbml0aWFsaXplZChzaXplX3QgbGVuZ3RoLCBjaGFyKiYgY2hhcmFjdGVyQnVmZmVyKTsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIENTdHJpbmcgbmV3VW5pbml0aWFsaXplZChzaXpl
X3QgbGVuZ3RoLCBjaGFyKiYgY2hhcmFjdGVyQnVmZmVyKTsKIAogICAgIGNvbnN0IGNoYXIqIGRh
dGEoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmRh
dGEoKSA6IDA7CiAgICAgfQotICAgIGNoYXIqIG11dGFibGVEYXRhKCk7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIGNoYXIqIG11dGFibGVEYXRhKCk7CiAgICAgc2l6ZV90IGxlbmd0aCgpIGNvbnN0
CiAgICAgewogICAgICAgICByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+bGVuZ3RoKCkgLSAx
IDogMDsKQEAgLTc3LDcgKzc3LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8Q1N0cmluZ0J1ZmZl
cj4gbV9idWZmZXI7CiB9OwogCi1ib29sIG9wZXJhdG9yPT0oY29uc3QgQ1N0cmluZyYgYSwgY29u
c3QgQ1N0cmluZyYgYik7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IENTdHJpbmcmIGEsIGNvbnN0IENTdHJpbmcmIGIpOwogaW5saW5lIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBDU3RyaW5nJiBhLCBjb25zdCBDU3RyaW5nJiBiKSB7IHJldHVybiAhKGEgPT0gYik7IH0K
IAogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaAppbmRleCBkYTFlODMyMGRlMTFjNGI3OTNiZWRhNmM4YzU1M2VjNzhk
NDBmZTg2Li5iZjdhZWQ0NmM1OTA3YTFmZGZlYjVhNjMzZjFhMzEwOGUxMDQ3OWEyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgKQEAgLTQxLDgg
KzQxLDggQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB2b2lkIGFwcGVuZChjb25zdCBV
Q2hhciosIHVuc2lnbmVkKTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCBMQ2hhciosIHVuc2lnbmVk
KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmQoY29uc3QgVUNoYXIqLCB1bnNp
Z25lZCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYXBwZW5kKGNvbnN0IExDaGFyKiwg
dW5zaWduZWQpOwogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBj
aGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpIHsgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgTENoYXIqPihjaGFyYWN0ZXJzKSwgbGVuZ3RoKTsgfQogCkBAIC0xMjcsMTEgKzEyNywxMSBA
QCBwdWJsaWM6CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbGVuZ3RoKCk7
IH0KIAotICAgIHZvaWQgcmVzZXJ2ZUNhcGFjaXR5KHVuc2lnbmVkIG5ld0NhcGFjaXR5KTsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZXNlcnZlQ2FwYWNpdHkodW5zaWduZWQgbmV3Q2Fw
YWNpdHkpOwogCi0gICAgdm9pZCByZXNpemUodW5zaWduZWQgbmV3U2l6ZSk7CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHZvaWQgcmVzaXplKHVuc2lnbmVkIG5ld1NpemUpOwogCi0gICAgdm9pZCBz
aHJpbmtUb0ZpdCgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNocmlua1RvRml0KCk7
CiAKICAgICBVQ2hhciBvcGVyYXRvcltdKHVuc2lnbmVkIGkpIGNvbnN0CiAgICAgewpAQCAtMjAw
LDcgKzIwMCw3IEBAIHByaXZhdGU6CiAgICAgQ2hhclR5cGUqIGFwcGVuZFVuaW5pdGlhbGl6ZWRT
bG93KHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgog
ICAgIEFMV0FZU19JTkxJTkUgQ2hhclR5cGUgKiBnZXRCdWZmZXJDaGFyYWN0ZXJzKCk7Ci0gICAg
dm9pZCByZWlmeVN0cmluZygpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHJlaWZ5U3Ry
aW5nKCk7CiAKICAgICB1bnNpZ25lZCBtX2xlbmd0aDsKICAgICBTdHJpbmcgbV9zdHJpbmc7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAppbmRleCAwMDNjNDRj
ZTYxZjYzMzRlYjE4OTVmZTlmMjJhZWYzZWE3YzM5ZGQwLi5hMmZlNTNkYTg2ZGNmM2U0NzM5NjQ2
MDY4YTdmNDkxNWIzMDZhMDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L3RleHQvU3RyaW5nSW1wbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9T
dHJpbmdJbXBsLmgKQEAgLTE5MCwxMiArMTkwLDEyIEBAIHByaXZhdGU6CiAgICAgfQogCiBwdWJs
aWM6Ci0gICAgflN0cmluZ0ltcGwoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgflN0cmluZ0lt
cGwoKTsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZShjb25zdCBV
Q2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQ
YXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZShjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0
aCk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRlKGNvbnN0IExDaGFy
KiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBQYXNzUmVmUHRy
PFN0cmluZ0ltcGw+IGNyZWF0ZShjb25zdCBjaGFyKiBzLCB1bnNpZ25lZCBsZW5ndGgpIHsgcmV0
dXJuIGNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4ocyksIGxlbmd0aCk7IH0K
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgTENoYXIqKTsK
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gY3Jl
YXRlKGNvbnN0IExDaGFyKik7CiAgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgUGFzc1JlZlB0cjxT
dHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgY2hhciogcykgeyByZXR1cm4gY3JlYXRlKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihzKSk7IH0KIAogICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5F
IFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRlOChQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJl
cCwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCkBAIC0yMjYsNyArMjI2LDcgQEAg
cHVibGljOgogICAgIH0KIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0
ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBMQ2hhciomIGRhdGEpOwotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVu
Z3RoLCBVQ2hhciomIGRhdGEpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1Jl
ZlB0cjxTdHJpbmdJbXBsPiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCwgVUNo
YXIqJiBkYXRhKTsKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIEFMV0FZU19JTkxJ
TkUgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVk
IGxlbmd0aCwgVComIG91dHB1dCkKICAgICB7CiAgICAgICAgIGlmICghbGVuZ3RoKSB7CkBAIC0y
NzUsNyArMjc1LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0
cmluZ0ltcGw+IGFkb3B0KFN0cmluZ0J1ZmZlcjxMQ2hhcj4mIGJ1ZmZlcik7Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRvcHQoU3RyaW5nQnVmZmVyPFVDaGFyPiYgYnVmZmVy
KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4g
YWRvcHQoU3RyaW5nQnVmZmVyPFVDaGFyPiYgYnVmZmVyKTsKIAogICAgIHVuc2lnbmVkIGxlbmd0
aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CiAgICAgYm9vbCBpczhCaXQoKSBjb25zdCB7
IHJldHVybiBtX2hhc2hBbmRGbGFncyAmIHNfaGFzaEZsYWc4Qml0QnVmZmVyOyB9CkBAIC0zMDgs
NyArMzA4LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIGJvb2wgaGFzMTZCaXRTaGFkb3coKSBj
b25zdCB7IHJldHVybiBtX2hhc2hBbmRGbGFncyAmIHNfaGFzaEZsYWdIYXMxNkJpdFNoYWRvdzsg
fQotICAgIHZvaWQgdXBjb252ZXJ0Q2hhcmFjdGVycyh1bnNpZ25lZCwgdW5zaWduZWQpIGNvbnN0
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHVwY29udmVydENoYXJhY3RlcnModW5zaWdu
ZWQsIHVuc2lnbmVkKSBjb25zdDsKICAgICBib29sIGlzSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0
dXJuIG1faGFzaEFuZEZsYWdzICYgc19oYXNoRmxhZ0lzSWRlbnRpZmllcjsgfQogICAgIHZvaWQg
c2V0SXNJZGVudGlmaWVyKGJvb2wgaXNJZGVudGlmaWVyKQogICAgIHsKQEAgLTM5Myw3ICszOTMs
NyBAQCBwdWJsaWM6CiAgICAgICAgIG1fcmVmQ291bnQgLT0gc19yZWZDb3VudEluY3JlbWVudDsK
ICAgICB9CiAKLSAgICBzdGF0aWMgU3RyaW5nSW1wbCogZW1wdHkoKTsKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIFN0cmluZ0ltcGwqIGVtcHR5KCk7CiAKICAgICAvLyBGSVhNRTogRG9l
cyB0aGlzIHJlYWxseSBiZWxvbmcgaW4gU3RyaW5nSW1wbD8KICAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gc3RhdGljIHZvaWQgY29weUNoYXJzKFQqIGRlc3RpbmF0aW9uLCBjb25zdCBUKiBzb3Vy
Y2UsIHVuc2lnbmVkIG51bUNoYXJhY3RlcnMpCkBAIC00MjgsNyArNDI4LDcgQEAgcHVibGljOgog
ICAgIC8vIGl0cyBvd24gY29weSBvZiB0aGUgc3RyaW5nLgogICAgIFBhc3NSZWZQdHI8U3RyaW5n
SW1wbD4gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAKLSAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+
IHN1YnN0cmluZyh1bnNpZ25lZCBwb3MsIHVuc2lnbmVkIGxlbiA9IFVJTlRfTUFYKTsKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBzdWJzdHJpbmcodW5zaWdu
ZWQgcG9zLCB1bnNpZ25lZCBsZW4gPSBVSU5UX01BWCk7CiAKICAgICBVQ2hhciBvcGVyYXRvcltd
KHVuc2lnbmVkIGkpIGNvbnN0CiAgICAgewpAQCAtNDM3LDkgKzQzNyw5IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIHJldHVybiBtX2RhdGE4W2ldOwogICAgICAgICByZXR1cm4gbV9kYXRhMTZbaV07
CiAgICAgfQotICAgIFVDaGFyMzIgY2hhcmFjdGVyU3RhcnRpbmdBdCh1bnNpZ25lZCk7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIFVDaGFyMzIgY2hhcmFjdGVyU3RhcnRpbmdBdCh1bnNpZ25lZCk7
CiAKLSAgICBib29sIGNvbnRhaW5zT25seVdoaXRlc3BhY2UoKTsKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgYm9vbCBjb250YWluc09ubHlXaGl0ZXNwYWNlKCk7CiAKICAgICBpbnQgdG9JbnRTdHJp
Y3QoYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKTsKICAgICB1bnNpZ25lZCB0b1VJbnRTdHJp
Y3QoYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKTsKQEAgLTQ0Nyw3ICs0NDcsNyBAQCBwdWJs
aWM6CiAgICAgdWludDY0X3QgdG9VSW50NjRTdHJpY3QoYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9
IDEwKTsKICAgICBpbnRwdHJfdCB0b0ludFB0clN0cmljdChib29sKiBvayA9IDAsIGludCBiYXNl
ID0gMTApOwogCi0gICAgaW50IHRvSW50KGJvb2wqIG9rID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxp
bmcgZ2FyYmFnZQorICAgIFdURl9FWFBPUlRfUFJJVkFURSBpbnQgdG9JbnQoYm9vbCogb2sgPSAw
KTsgLy8gaWdub3JlcyB0cmFpbGluZyBnYXJiYWdlCiAgICAgdW5zaWduZWQgdG9VSW50KGJvb2wq
IG9rID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQogICAgIGludDY0X3QgdG9JbnQ2
NChib29sKiBvayA9IDApOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKICAgICB1aW50NjRf
dCB0b1VJbnQ2NChib29sKiBvayA9IDApOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKQEAg
LTQ1Niw0NCArNDU2LDQ0IEBAIHB1YmxpYzoKICAgICBkb3VibGUgdG9Eb3VibGUoYm9vbCogb2sg
PSAwLCBib29sKiBkaWRSZWFkTnVtYmVyID0gMCk7CiAgICAgZmxvYXQgdG9GbG9hdChib29sKiBv
ayA9IDAsIGJvb2wqIGRpZFJlYWROdW1iZXIgPSAwKTsKIAotICAgIFBhc3NSZWZQdHI8U3RyaW5n
SW1wbD4gbG93ZXIoKTsKLSAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHVwcGVyKCk7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gbG93ZXIoKTsKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiB1cHBlcigpOwogCi0gICAg
UGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBmaWxsKFVDaGFyKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBmaWxsKFVDaGFyKTsKICAgICAvLyBGSVhNRTogRG8g
d2UgbmVlZCBmaWxsKGNoYXIpIG9yIGNhbiB3ZSBqdXN0IGRvIHRoZSByaWdodCB0aGluZyBpZiBV
Q2hhciBpcyBBU0NJST8KICAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGZvbGRDYXNlKCk7CiAK
ICAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHN0cmlwV2hpdGVTcGFjZSgpOwogICAgIFBhc3NS
ZWZQdHI8U3RyaW5nSW1wbD4gc3RyaXBXaGl0ZVNwYWNlKElzV2hpdGVTcGFjZUZ1bmN0aW9uUHRy
KTsKLSAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHNpbXBsaWZ5V2hpdGVTcGFjZSgpOworICAg
IFdURl9FWFBPUlRfUFJJVkFURSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHNpbXBsaWZ5V2hpdGVT
cGFjZSgpOwogICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gc2ltcGxpZnlXaGl0ZVNwYWNlKElz
V2hpdGVTcGFjZUZ1bmN0aW9uUHRyKTsKIAogICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVt
b3ZlQ2hhcmFjdGVycyhDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRyKTsKICAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgQ2hhclR5cGU+CiAgICAgQUxXQVlTX0lOTElORSBQYXNzUmVmUHRyPFN0cmluZ0lt
cGw+IHJlbW92ZUNoYXJhY3RlcnMoY29uc3QgQ2hhclR5cGUqIGNoYXJhY3RlcnMsIENoYXJhY3Rl
ck1hdGNoRnVuY3Rpb25QdHIpOwogCi0gICAgc2l6ZV90IGZpbmQoVUNoYXIsIHVuc2lnbmVkIGlu
ZGV4ID0gMCk7Ci0gICAgc2l6ZV90IGZpbmQoQ2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0ciwgdW5z
aWduZWQgaW5kZXggPSAwKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmQoVUNo
YXIsIHVuc2lnbmVkIGluZGV4ID0gMCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBm
aW5kKENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIsIHVuc2lnbmVkIGluZGV4ID0gMCk7CiAgICAg
c2l6ZV90IGZpbmQoY29uc3QgTENoYXIqLCB1bnNpZ25lZCBpbmRleCA9IDApOwogICAgIEFMV0FZ
U19JTkxJTkUgc2l6ZV90IGZpbmQoY29uc3QgY2hhciogcywgdW5zaWduZWQgaW5kZXggPSAwKSB7
IHJldHVybiBmaW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihzKSwgaW5kZXgpOyB9
OwotICAgIHNpemVfdCBmaW5kKFN0cmluZ0ltcGwqLCB1bnNpZ25lZCBpbmRleCA9IDApOworICAg
IFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmluZChTdHJpbmdJbXBsKiwgdW5zaWduZWQgaW5k
ZXggPSAwKTsKICAgICBzaXplX3QgZmluZElnbm9yaW5nQ2FzZShjb25zdCBMQ2hhciosIHVuc2ln
bmVkIGluZGV4ID0gMCk7CiAgICAgQUxXQVlTX0lOTElORSBzaXplX3QgZmluZElnbm9yaW5nQ2Fz
ZShjb25zdCBjaGFyKiBzLCB1bnNpZ25lZCBpbmRleCA9IDApIHsgcmV0dXJuIGZpbmRJZ25vcmlu
Z0Nhc2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHMpLCBpbmRleCk7IH07Ci0gICAg
c2l6ZV90IGZpbmRJZ25vcmluZ0Nhc2UoU3RyaW5nSW1wbCosIHVuc2lnbmVkIGluZGV4ID0gMCk7
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBmaW5kSWdub3JpbmdDYXNlKFN0cmluZ0lt
cGwqLCB1bnNpZ25lZCBpbmRleCA9IDApOwogCi0gICAgc2l6ZV90IHJldmVyc2VGaW5kKFVDaGFy
LCB1bnNpZ25lZCBpbmRleCA9IFVJTlRfTUFYKTsKLSAgICBzaXplX3QgcmV2ZXJzZUZpbmQoU3Ry
aW5nSW1wbCosIHVuc2lnbmVkIGluZGV4ID0gVUlOVF9NQVgpOwotICAgIHNpemVfdCByZXZlcnNl
RmluZElnbm9yaW5nQ2FzZShTdHJpbmdJbXBsKiwgdW5zaWduZWQgaW5kZXggPSBVSU5UX01BWCk7
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCByZXZlcnNlRmluZChVQ2hhciwgdW5zaWdu
ZWQgaW5kZXggPSBVSU5UX01BWCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCByZXZl
cnNlRmluZChTdHJpbmdJbXBsKiwgdW5zaWduZWQgaW5kZXggPSBVSU5UX01BWCk7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHNpemVfdCByZXZlcnNlRmluZElnbm9yaW5nQ2FzZShTdHJpbmdJbXBs
KiwgdW5zaWduZWQgaW5kZXggPSBVSU5UX01BWCk7CiAKICAgICBib29sIHN0YXJ0c1dpdGgoU3Ry
aW5nSW1wbCogc3RyLCBib29sIGNhc2VTZW5zaXRpdmUgPSB0cnVlKSB7IHJldHVybiAoY2FzZVNl
bnNpdGl2ZSA/IHJldmVyc2VGaW5kKHN0ciwgMCkgOiByZXZlcnNlRmluZElnbm9yaW5nQ2FzZShz
dHIsIDApKSA9PSAwOyB9Ci0gICAgYm9vbCBlbmRzV2l0aChTdHJpbmdJbXBsKiwgYm9vbCBjYXNl
U2Vuc2l0aXZlID0gdHJ1ZSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZW5kc1dpdGgo
U3RyaW5nSW1wbCosIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUpOwogCi0gICAgUGFzc1JlZlB0
cjxTdHJpbmdJbXBsPiByZXBsYWNlKFVDaGFyLCBVQ2hhcik7Ci0gICAgUGFzc1JlZlB0cjxTdHJp
bmdJbXBsPiByZXBsYWNlKFVDaGFyLCBTdHJpbmdJbXBsKik7Ci0gICAgUGFzc1JlZlB0cjxTdHJp
bmdJbXBsPiByZXBsYWNlKFN0cmluZ0ltcGwqLCBTdHJpbmdJbXBsKik7Ci0gICAgUGFzc1JlZlB0
cjxTdHJpbmdJbXBsPiByZXBsYWNlKHVuc2lnbmVkIGluZGV4LCB1bnNpZ25lZCBsZW4sIFN0cmlu
Z0ltcGwqKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBy
ZXBsYWNlKFVDaGFyLCBVQ2hhcik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8
U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hhciwgU3RyaW5nSW1wbCopOworICAgIFdURl9FWFBPUlRf
UFJJVkFURSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHJlcGxhY2UoU3RyaW5nSW1wbCosIFN0cmlu
Z0ltcGwqKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBy
ZXBsYWNlKHVuc2lnbmVkIGluZGV4LCB1bnNpZ25lZCBsZW4sIFN0cmluZ0ltcGwqKTsKIAotICAg
IFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKGJvb2wqIGhh
c1N0cm9uZ0RpcmVjdGlvbmFsaXR5ID0gMCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFdURjo6
VW5pY29kZTo6RGlyZWN0aW9uIGRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKGJvb2wqIGhhc1N0cm9u
Z0RpcmVjdGlvbmFsaXR5ID0gMCk7CiAKICNpZiBVU0UoQ0YpCiAgICAgQ0ZTdHJpbmdSZWYgY3Jl
YXRlQ0ZTdHJpbmcoKTsKQEAgLTUxMCw4ICs1MTAsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNT
dGF0aWMoKSBjb25zdCB7IHJldHVybiBtX3JlZkNvdW50ICYgc19yZWZDb3VudEZsYWdJc1N0YXRp
Y1N0cmluZzsgfQogICAgIHRlbXBsYXRlIDxjbGFzcyBVQ2hhclByZWRpY2F0ZT4gUGFzc1JlZlB0
cjxTdHJpbmdJbXBsPiBzdHJpcE1hdGNoZWRDaGFyYWN0ZXJzKFVDaGFyUHJlZGljYXRlKTsKICAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGUsIGNsYXNzIFVDaGFyUHJlZGljYXRlPiBQYXNz
UmVmUHRyPFN0cmluZ0ltcGw+IHNpbXBsaWZ5TWF0Y2hlZENoYXJhY3RlcnNUb1NwYWNlKFVDaGFy
UHJlZGljYXRlKTsKLSAgICBORVZFUl9JTkxJTkUgY29uc3QgVUNoYXIqIGdldERhdGExNlNsb3dD
YXNlKCkgY29uc3Q7Ci0gICAgTkVWRVJfSU5MSU5FIHVuc2lnbmVkIGhhc2hTbG93Q2FzZSgpIGNv
bnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBORVZFUl9JTkxJTkUgY29uc3QgVUNoYXIqIGdl
dERhdGExNlNsb3dDYXNlKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIE5FVkVSX0lO
TElORSB1bnNpZ25lZCBoYXNoU2xvd0Nhc2UoKSBjb25zdDsKIAogICAgIC8vIFRoZSBib3R0b20g
Yml0IGluIHRoZSByZWYgY291bnQgaW5kaWNhdGVzIGEgc3RhdGljIChpbW1vcnRhbCkgc3RyaW5n
LgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzX3JlZkNvdW50RmxhZ0lzU3RhdGljU3RyaW5n
ID0gMHgxOwpAQCAtNTUwLDE0ICs1NTAsMTQgQEAgQUxXQVlTX0lOTElORSBjb25zdCBMQ2hhciog
U3RyaW5nSW1wbDo6Z2V0Q2hhcmFjdGVyczxMQ2hhcj4oKSBjb25zdCB7IHJldHVybiBjaGEKIHRl
bXBsYXRlIDw+CiBBTFdBWVNfSU5MSU5FIGNvbnN0IFVDaGFyKiBTdHJpbmdJbXBsOjpnZXRDaGFy
YWN0ZXJzPFVDaGFyPigpIGNvbnN0IHsgcmV0dXJuIGNoYXJhY3RlcnMxNigpOyB9CiAKLWJvb2wg
ZXF1YWwoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IFN0cmluZ0ltcGwqKTsKLWJvb2wgZXF1YWwo
Y29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IExDaGFyKik7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9v
bCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiwgY29uc3QgU3RyaW5nSW1wbCopOworV1RGX0VYUE9S
VF9QUklWQVRFIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IExDaGFyKik7CiBp
bmxpbmUgYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiBhLCBjb25zdCBjaGFyKiBiKSB7IHJl
dHVybiBlcXVhbChhLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYikpOyB9Ci1ib29s
IGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBMQ2hhciosIHVuc2lnbmVkKTsKK1dURl9F
WFBPUlRfUFJJVkFURSBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBMQ2hhcios
IHVuc2lnbmVkKTsKIGlubGluZSBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqIGEsIGNvbnN0
IGNoYXIqIGIsIHVuc2lnbmVkIGxlbmd0aCkgeyByZXR1cm4gZXF1YWwoYSwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBMQ2hhcio+KGIpLCBsZW5ndGgpOyB9CiBpbmxpbmUgYm9vbCBlcXVhbChjb25z
dCBMQ2hhciogYSwgU3RyaW5nSW1wbCogYikgeyByZXR1cm4gZXF1YWwoYiwgYSk7IH0KIGlubGlu
ZSBib29sIGVxdWFsKGNvbnN0IGNoYXIqIGEsIFN0cmluZ0ltcGwqIGIpIHsgcmV0dXJuIGVxdWFs
KGIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihhKSk7IH0KLWJvb2wgZXF1YWwoY29u
c3QgU3RyaW5nSW1wbCosIGNvbnN0IFVDaGFyKiwgdW5zaWduZWQpOworV1RGX0VYUE9SVF9QUklW
QVRFIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IFVDaGFyKiwgdW5zaWduZWQp
OwogCiAvLyBEbyBjb21wYXJpc29ucyA4IG9yIDQgYnl0ZXMtYXQtYS10aW1lIG9uIGFyY2hpdGVj
dHVyZXMgd2hlcmUgaXQncyBzYWZlLgogI2lmIENQVShYODZfNjQpCkBAIC03MTUsMTUgKzcxNSwx
NSBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgZXF1YWwoY29uc3QgVUNoYXIqIGEsIGNvbnN0IExDaGFy
KiBiLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgZXF1YWxJ
Z25vcmluZ0Nhc2UoU3RyaW5nSW1wbCosIFN0cmluZ0ltcGwqKTsKLWJvb2wgZXF1YWxJZ25vcmlu
Z0Nhc2UoU3RyaW5nSW1wbCosIGNvbnN0IExDaGFyKik7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9v
bCBlcXVhbElnbm9yaW5nQ2FzZShTdHJpbmdJbXBsKiwgU3RyaW5nSW1wbCopOworV1RGX0VYUE9S
VF9QUklWQVRFIGJvb2wgZXF1YWxJZ25vcmluZ0Nhc2UoU3RyaW5nSW1wbCosIGNvbnN0IExDaGFy
Kik7CiBpbmxpbmUgYm9vbCBlcXVhbElnbm9yaW5nQ2FzZShjb25zdCBMQ2hhciogYSwgU3RyaW5n
SW1wbCogYikgeyByZXR1cm4gZXF1YWxJZ25vcmluZ0Nhc2UoYiwgYSk7IH0KLWJvb2wgZXF1YWxJ
Z25vcmluZ0Nhc2UoY29uc3QgVUNoYXIqLCBjb25zdCBMQ2hhciosIHVuc2lnbmVkKTsKK1dURl9F
WFBPUlRfUFJJVkFURSBib29sIGVxdWFsSWdub3JpbmdDYXNlKGNvbnN0IFVDaGFyKiwgY29uc3Qg
TENoYXIqLCB1bnNpZ25lZCk7CiBpbmxpbmUgYm9vbCBlcXVhbElnbm9yaW5nQ2FzZShjb25zdCBV
Q2hhciogYSwgY29uc3QgY2hhciogYiwgdW5zaWduZWQgbGVuZ3RoKSB7IHJldHVybiBlcXVhbEln
bm9yaW5nQ2FzZShhLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYiksIGxlbmd0aCk7
IH0KIGlubGluZSBib29sIGVxdWFsSWdub3JpbmdDYXNlKGNvbnN0IExDaGFyKiBhLCBjb25zdCBV
Q2hhciogYiwgdW5zaWduZWQgbGVuZ3RoKSB7IHJldHVybiBlcXVhbElnbm9yaW5nQ2FzZShiLCBh
LCBsZW5ndGgpOyB9CiBpbmxpbmUgYm9vbCBlcXVhbElnbm9yaW5nQ2FzZShjb25zdCBjaGFyKiBh
LCBjb25zdCBVQ2hhciogYiwgdW5zaWduZWQgbGVuZ3RoKSB7IHJldHVybiBlcXVhbElnbm9yaW5n
Q2FzZShiLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYSksIGxlbmd0aCk7IH0KIAot
Ym9vbCBlcXVhbElnbm9yaW5nTnVsbGl0eShTdHJpbmdJbXBsKiwgU3RyaW5nSW1wbCopOworV1RG
X0VYUE9SVF9QUklWQVRFIGJvb2wgZXF1YWxJZ25vcmluZ051bGxpdHkoU3RyaW5nSW1wbCosIFN0
cmluZ0ltcGwqKTsKIAogdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5PgogYm9vbCBlcXVh
bElnbm9yaW5nTnVsbGl0eShjb25zdCBWZWN0b3I8VUNoYXIsIGlubGluZUNhcGFjaXR5PiYgYSwg
U3RyaW5nSW1wbCogYikKQEAgLTczNSw3ICs3MzUsNyBAQCBib29sIGVxdWFsSWdub3JpbmdOdWxs
aXR5KGNvbnN0IFZlY3RvcjxVQ2hhciwgaW5saW5lQ2FwYWNpdHk+JiBhLCBTdHJpbmdJbXBsKiBi
KQogICAgIHJldHVybiAhbWVtY21wKGEuZGF0YSgpLCBiLT5jaGFyYWN0ZXJzKCksIGItPmxlbmd0
aCgpKTsKIH0KIAotaW50IGNvZGVQb2ludENvbXBhcmUoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0
IFN0cmluZ0ltcGwqKTsKK1dURl9FWFBPUlRfUFJJVkFURSBpbnQgY29kZVBvaW50Q29tcGFyZShj
b25zdCBTdHJpbmdJbXBsKiwgY29uc3QgU3RyaW5nSW1wbCopOwogCiBzdGF0aWMgaW5saW5lIGJv
b2wgaXNTcGFjZU9yTmV3bGluZShVQ2hhciBjKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IDNjZWNjMGFmZGQ4MTQyZWJhNTFjODk4NjMxNjg5NzU2
NmI5MzNlMTUuLmViNDVjN2Y4MmM0Mzc4ZmQ0ZGNlYWI0NTYwNzBkODlkNTZlZDE4ODUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvV1RGU3RyaW5nLmgKQEAgLTc0LDcgKzc0LDcg
QEAgaW50cHRyX3QgY2hhcmFjdGVyc1RvSW50UHRyU3RyaWN0KGNvbnN0IExDaGFyKiwgc2l6ZV90
LCBib29sKiBvayA9IDAsIGludCBiYXNlID0KIGludHB0cl90IGNoYXJhY3RlcnNUb0ludFB0clN0
cmljdChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKTsK
IAogaW50IGNoYXJhY3RlcnNUb0ludChjb25zdCBMQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAw
KTsgLy8gaWdub3JlcyB0cmFpbGluZyBnYXJiYWdlCi1pbnQgY2hhcmFjdGVyc1RvSW50KGNvbnN0
IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDApOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJh
Z2UKK1dURl9FWFBPUlRfUFJJVkFURSBpbnQgY2hhcmFjdGVyc1RvSW50KGNvbnN0IFVDaGFyKiwg
c2l6ZV90LCBib29sKiBvayA9IDApOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKIHVuc2ln
bmVkIGNoYXJhY3RlcnNUb1VJbnQoY29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCk7
IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQogdW5zaWduZWQgY2hhcmFjdGVyc1RvVUludChj
b25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwKTsgLy8gaWdub3JlcyB0cmFpbGluZyBn
YXJiYWdlCiBpbnQ2NF90IGNoYXJhY3RlcnNUb0ludDY0KGNvbnN0IExDaGFyKiwgc2l6ZV90LCBi
b29sKiBvayA9IDApOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKQEAgLTg3LDcgKzg3LDcg
QEAgaW50cHRyX3QgY2hhcmFjdGVyc1RvSW50UHRyKGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29s
KiBvayA9IDApOyAvLyBpZ25vcmVzIHRyYWkKIFdURl9FWFBPUlRfUFJJVkFURSBkb3VibGUgY2hh
cmFjdGVyc1RvRG91YmxlKGNvbnN0IExDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDAsIGJvb2wq
IGRpZFJlYWROdW1iZXIgPSAwKTsKIFdURl9FWFBPUlRfUFJJVkFURSBkb3VibGUgY2hhcmFjdGVy
c1RvRG91YmxlKGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDAsIGJvb2wqIGRpZFJl
YWROdW1iZXIgPSAwKTsKIGZsb2F0IGNoYXJhY3RlcnNUb0Zsb2F0KGNvbnN0IExDaGFyKiwgc2l6
ZV90LCBib29sKiBvayA9IDAsIGJvb2wqIGRpZFJlYWROdW1iZXIgPSAwKTsKLWZsb2F0IGNoYXJh
Y3RlcnNUb0Zsb2F0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDAsIGJvb2wqIGRp
ZFJlYWROdW1iZXIgPSAwKTsKK1dURl9FWFBPUlRfUFJJVkFURSBmbG9hdCBjaGFyYWN0ZXJzVG9G
bG9hdChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwLCBib29sKiBkaWRSZWFkTnVt
YmVyID0gMCk7CiAKIGVudW0gRmxvYXRDb252ZXJzaW9uRmxhZ3MgewogICAgIFNob3VsZFJvdW5k
U2lnbmlmaWNhbnRGaWd1cmVzID0gMSA8PCAwLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi91bmljb2RlL0NvbGxhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L3VuaWNvZGUvQ29sbGF0b3IuaAppbmRleCAwMGFiMTZlNmE1YmRiYTZmZjE0YjViMzcxZjFjOTE0
YzE4ODAzODJmLi43OTk0ZmY4ZTVjYjMxMzhlZTk3MzY1MzA4YWU2YzM1MTQzNmU1YjNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvQ29sbGF0b3IuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvQ29sbGF0b3IuaApAQCAtNDUsMTMg
KzQ1LDEzIEBAIG5hbWVzcGFjZSBXVEYgewogICAgIHB1YmxpYzoKICAgICAgICAgZW51bSBSZXN1
bHQgeyBFcXVhbCA9IDAsIEdyZWF0ZXIgPSAxLCBMZXNzID0gLTEgfTsKIAotICAgICAgICBDb2xs
YXRvcihjb25zdCBjaGFyKiBsb2NhbGUpOyAvLyBQYXJzaW5nIGlzIGxlbmllbnQ7IGUuZy4gbGFu
Z3VhZ2UgaWRlbnRpZmllcnMgKHN1Y2ggYXMgImVuLVVTIikgYXJlIGFjY2VwdGVkLCB0b28uCi0g
ICAgICAgIH5Db2xsYXRvcigpOwotICAgICAgICB2b2lkIHNldE9yZGVyTG93ZXJGaXJzdChib29s
KTsKKyAgICAgICAgV1RGX0VYUE9SVF9QUklWQVRFIENvbGxhdG9yKGNvbnN0IGNoYXIqIGxvY2Fs
ZSk7IC8vIFBhcnNpbmcgaXMgbGVuaWVudDsgZS5nLiBsYW5ndWFnZSBpZGVudGlmaWVycyAoc3Vj
aCBhcyAiZW4tVVMiKSBhcmUgYWNjZXB0ZWQsIHRvby4KKyAgICAgICAgV1RGX0VYUE9SVF9QUklW
QVRFIH5Db2xsYXRvcigpOworICAgICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRPcmRl
ckxvd2VyRmlyc3QoYm9vbCk7CiAKICAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8Q29sbGF0b3I+
IHVzZXJEZWZhdWx0KCk7CiAKLSAgICAgICAgUmVzdWx0IGNvbGxhdGUoY29uc3QgOjpVQ2hhcios
IHNpemVfdCwgY29uc3QgOjpVQ2hhciosIHNpemVfdCkgY29uc3Q7CisgICAgICAgIFdURl9FWFBP
UlRfUFJJVkFURSBSZXN1bHQgY29sbGF0ZShjb25zdCA6OlVDaGFyKiwgc2l6ZV90LCBjb25zdCA6
OlVDaGFyKiwgc2l6ZV90KSBjb25zdDsKIAogICAgIHByaXZhdGU6CiAjaWYgVVNFKElDVV9VTklD
T0RFKSAmJiAhVUNPTkZJR19OT19DT0xMQVRJT04KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvdW5pY29kZS9VVEY4LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3Vu
aWNvZGUvVVRGOC5oCmluZGV4IGJkM2RkOGEwYTU5NTM3ODdhM2Q5ZTNmZjExZTUzNDNkNmI0OTgy
YTUuLmJjMjQ5N2I3MjM5YjE5NDY2YWE5MjllZDIyMTRjYTQ5OWJkYjkwYTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdW5pY29kZS9VVEY4LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL1VURjguaApAQCAtNjIsNyArNjIsNyBAQCBuYW1lc3Bh
Y2UgVW5pY29kZSB7CiAgICAgLy8gdG8gdGhlIHJlcGxhY2VtZW50IGNoYXJhY3Rlcjsgb3RoZXJ3
aXNlICh3aGVuIHRoZSBmbGFnIGlzIHNldCB0byBzdHJpY3QpCiAgICAgLy8gdGhleSBjb25zdGl0
dXRlIGFuIGVycm9yLgogCi0gICAgQ29udmVyc2lvblJlc3VsdCBjb252ZXJ0VVRGOFRvVVRGMTYo
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIENvbnZlcnNpb25SZXN1bHQgY29udmVydFVURjhUb1VU
RjE2KAogICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiogc291cmNlU3RhcnQsIGNvbnN0
IGNoYXIqIHNvdXJjZUVuZCwgCiAgICAgICAgICAgICAgICAgICAgIFVDaGFyKiogdGFyZ2V0U3Rh
cnQsIFVDaGFyKiB0YXJnZXRFbmQsIGJvb2wgc3RyaWN0ID0gdHJ1ZSk7CiAKQEAgLTcwLDcgKzcw
LDcgQEAgbmFtZXNwYWNlIFVuaWNvZGUgewogICAgICAgICAgICAgICAgICAgICBjb25zdCBMQ2hh
cioqIHNvdXJjZVN0YXJ0LCBjb25zdCBMQ2hhciogc291cmNlRW5kLCAKICAgICAgICAgICAgICAg
ICAgICAgY2hhcioqIHRhcmdldFN0YXJ0LCBjaGFyKiB0YXJnZXRFbmQpOwogCi0gICAgQ29udmVy
c2lvblJlc3VsdCBjb252ZXJ0VVRGMTZUb1VURjgoCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIENv
bnZlcnNpb25SZXN1bHQgY29udmVydFVURjE2VG9VVEY4KAogICAgICAgICAgICAgICAgICAgICBj
b25zdCBVQ2hhcioqIHNvdXJjZVN0YXJ0LCBjb25zdCBVQ2hhciogc291cmNlRW5kLCAKICAgICAg
ICAgICAgICAgICAgICAgY2hhcioqIHRhcmdldFN0YXJ0LCBjaGFyKiB0YXJnZXRFbmQsIGJvb2wg
c3RyaWN0ID0gdHJ1ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJy
L1lhcnIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnIuaAppbmRleCA1MDFhZmFj
NWY1NDM3NTFlNzQyMjcwYjQ0ODNjOTlmZTdkZDc3YjFmLi4zNDk1ZmM3ZTRjMzBiOTQyNzg0OTFk
MDlkNzdiM2Q1OTczM2M4YTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFy
ci9ZYXJyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyci5oCkBAIC02Miw4
ICs2Miw4IEBAIGVudW0gWWFyckNoYXJTaXplIHsKICAgICBDaGFyMTYKIH07CiAKLVBhc3NPd25Q
dHI8Qnl0ZWNvZGVQYXR0ZXJuPiBieXRlQ29tcGlsZShZYXJyUGF0dGVybiYsIEJ1bXBQb2ludGVy
QWxsb2NhdG9yKik7Ci1pbnQgaW50ZXJwcmV0KEJ5dGVjb2RlUGF0dGVybiosIGNvbnN0IFVTdHJp
bmcmIGlucHV0LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBpbnQqIG91dHB1dCk7
CitKU19FWFBPUlRfUFJJVkFURSBQYXNzT3duUHRyPEJ5dGVjb2RlUGF0dGVybj4gYnl0ZUNvbXBp
bGUoWWFyclBhdHRlcm4mLCBCdW1wUG9pbnRlckFsbG9jYXRvciopOworSlNfRVhQT1JUX1BSSVZB
VEUgaW50IGludGVycHJldChCeXRlY29kZVBhdHRlcm4qLCBjb25zdCBVU3RyaW5nJiBpbnB1dCwg
dW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgaW50KiBvdXRwdXQpOwogCiB9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6WWFycgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
eWFyci9ZYXJyUGF0dGVybi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRl
cm4uaAppbmRleCAyY2JiNzk1ODY1NmUzNWExMDFlZDE5NmViMzYzMmQ3MjA4ZTVkYzMxLi5hMzFk
ZWVlNjcyOTQ2NDRlNWRjNGFhZDRkN2EwNmIwNzNiMjBiNzlmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmgKQEAgLTMxNiw3ICszMTYsNyBAQCBzdHJ1Y3QgVGVybUNo
YWluIHsKIH07CiAKIHN0cnVjdCBZYXJyUGF0dGVybiB7Ci0gICAgWWFyclBhdHRlcm4oY29uc3Qg
VVN0cmluZyYgcGF0dGVybiwgYm9vbCBpZ25vcmVDYXNlLCBib29sIG11bHRpbGluZSwgY29uc3Qg
Y2hhcioqIGVycm9yKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBZYXJyUGF0dGVybihjb25zdCBV
U3RyaW5nJiBwYXR0ZXJuLCBib29sIGlnbm9yZUNhc2UsIGJvb2wgbXVsdGlsaW5lLCBjb25zdCBj
aGFyKiogZXJyb3IpOwogCiAgICAgfllhcnJQYXR0ZXJuKCkKICAgICB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122369</attachid>
            <date>2012-01-12 22:01:17 -0800</date>
            <delta_ts>2012-01-12 22:04:30 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-72855-20120113150115.patch</filename>
            <type>text/plain</type>
            <size>138272</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0ODk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
YzQyZDhmOTg0YmUzODJlMmYzZmE5MTMwNjY3YmFmZjcwYjQ3NDgzLi5iNWNmNWVmZTkxYTE5Mjkw
ZmQ0NWI3MmQwNTQ2MGJjYzczOGM3OTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
OSArMSwxMDcgQEAKKzIwMTItMDEtMTIgIEhhamltZSBNb3JyaXRhICA8bW9ycml0YUBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgSmF2YVNjcmlwdENvcmU6IE1hcmsgYWxsIGV4cG9ydGVkIHN5bWJv
bHMgaW4gdGhlIGhlYWRlciBmaWxlIGF1dG9tYXRpY2FsbHkuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mjg1NQorCisgICAgICAgIFJldmlld2VkIGJ5
IERhcmluIEFkbGVyLgorCisgICAgICAgIEFkZGVkIFdURl9FWFBPUlRfUFJJVkFURSBhbmQgSlNf
RVhQT1JUX1BSSVZBVEUgYmFzZWQgb24gSmF2YVNjcmlwdENvcmUuZXhwIGZpbGVzLgorICAgICAg
ICBUaGUgY2hhbmdlIGlzIGdlbmVyYXRlZCBieSBhIHRvb2wgY2FsbGVkTGlzdEV4cG9ydGFibGVz
IChodHRwczovL2dpdGh1Yi5jb20vb21vL0xpc3RFeHBvcnRhYmxlcykKKworICAgICAgICAqIEFQ
SS9PcGFxdWVKU1N0cmluZy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAg
ICAgICAqIGJ5dGVjb2RlL1NhbXBsaW5nVG9vbC5oOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVn
Z2VyLmg6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmg6CisgICAgICAg
ICogZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuaDoKKyAgICAgICAgKiBoZWFwL0FsbG9jYXRp
b25TcGFjZS5oOgorICAgICAgICAqIGhlYXAvSGFuZGxlSGVhcC5oOgorICAgICAgICAqIGhlYXAv
SGVhcC5oOgorICAgICAgICAqIGhlYXAvTWFjaGluZVN0YWNrTWFya2VyLmg6CisgICAgICAgICog
aGVhcC9NYXJrU3RhY2suaDoKKyAgICAgICAgKiBoZWFwL1ZUYWJsZVNwZWN0cnVtLmg6CisgICAg
ICAgICogaGVhcC9Xcml0ZUJhcnJpZXJTdXBwb3J0Lmg6CisgICAgICAgICogcGFyc2VyL05vZGVz
Lmg6CisgICAgICAgICogcGFyc2VyL1BhcnNlckFyZW5hLmg6CisgICAgICAgICogcHJvZmlsZXIv
UHJvZmlsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvQXJnTGlzdC5oOgorICAgICAgICAqIHJ1bnRp
bWUvQ2FsbERhdGEuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbXBsZXRpb24uaDoKKyAgICAgICAg
KiBydW50aW1lL0NvbnN0cnVjdERhdGEuaDoKKyAgICAgICAgKiBydW50aW1lL0RhdGVJbnN0YW5j
ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3IuaDoKKyAgICAgICAgKiBydW50aW1lL0V4Y2Vw
dGlvbkhlbHBlcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaDoK
KyAgICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIuaDoKKyAgICAgICAgKiBydW50aW1lL0luaXRp
YWxpemVUaHJlYWRpbmcuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaDoK
KyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQnl0ZUFy
cmF5Lmg6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKiBydW50aW1lL0pT
RnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5jcHA6CisgICAgICAg
ICogcnVudGltZS9KU0dsb2JhbERhdGEuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbFRoaXMuaDoKKyAgICAgICAgKiBydW50
aW1lL0pTTG9jay5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKiBy
dW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgICogcnVudGltZS9KU1ZhbHVlLmg6CisgICAgICAg
ICogcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9Mb29rdXAu
aDoKKyAgICAgICAgKiBydW50aW1lL01lbW9yeVN0YXRpc3RpY3MuaDoKKyAgICAgICAgKiBydW50
aW1lL09iamVjdFByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5oOgorICAg
ICAgICAqIHJ1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmg6CisgICAgICAgICogcnVudGltZS9Q
cm9wZXJ0eU5hbWVBcnJheS5oOgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlTbG90Lmg6Cisg
ICAgICAgICogcnVudGltZS9SZWdFeHAuaDoKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVj
dC5oOgorICAgICAgICAqIHJ1bnRpbWUvU2FtcGxpbmdDb3VudGVyLmg6CisgICAgICAgICogcnVu
dGltZS9TbWFsbFN0cmluZ3MuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ09iamVjdC5oOgor
ICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgICogcnVudGltZS9UaW1lb3V0
Q2hlY2tlci5oOgorICAgICAgICAqIHJ1bnRpbWUvVVN0cmluZy5oOgorICAgICAgICAqIHJ1bnRp
bWUvV3JpdGVCYXJyaWVyLmg6CisgICAgICAgICogd3RmL0FycmF5QnVmZmVyVmlldy5oOgorICAg
ICAgICAqIHd0Zi9CeXRlQXJyYXkuaDoKKyAgICAgICAgKiB3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlS
YW5kb21OdW1iZXIuaDoKKyAgICAgICAgKiB3dGYvQ3VycmVudFRpbWUuaDoKKyAgICAgICAgKiB3
dGYvRGF0ZU1hdGguaDoKKyAgICAgICAgKiB3dGYvRGVjaW1hbE51bWJlci5oOgorICAgICAgICAq
IHd0Zi9GYXN0TWFsbG9jLmNwcDoKKyAgICAgICAgKiB3dGYvRmFzdE1hbGxvYy5oOgorICAgICAg
ICAqIHd0Zi9NRDUuaDoKKyAgICAgICAgKiB3dGYvTWFpblRocmVhZC5oOgorICAgICAgICAqIHd0
Zi9NZXRhQWxsb2NhdG9yLmg6CisgICAgICAgICogd3RmL01ldGFBbGxvY2F0b3JIYW5kbGUuaDoK
KyAgICAgICAgKiB3dGYvT1NBbGxvY2F0b3IuaDoKKyAgICAgICAgKiB3dGYvUGFnZUJsb2NrLmg6
CisgICAgICAgICogd3RmL1JhbmRvbU51bWJlci5oOgorICAgICAgICAqIHd0Zi9SZWZDb3VudGVk
TGVha0NvdW50ZXIuaDoKKyAgICAgICAgKiB3dGYvU0hBMS5oOgorICAgICAgICAqIHd0Zi9UaHJl
YWRpbmcuY3BwOgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmcuaDoKKyAgICAgICAgKiB3dGYvVGhy
ZWFkaW5nUHJpbWl0aXZlcy5oOgorICAgICAgICAqIHd0Zi9XVEZUaHJlYWREYXRhLmg6CisgICAg
ICAgICogd3RmL2R0b2EuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9BdG9taWNTdHJpbmcuaDoKKyAg
ICAgICAgKiB3dGYvdGV4dC9DU3RyaW5nLmg6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAgICAgICAgKiB3dGYv
dGV4dC9XVEZTdHJpbmcuaDoKKyAgICAgICAgKiB3dGYvdW5pY29kZS9Db2xsYXRvci5oOgorICAg
ICAgICAqIHd0Zi91bmljb2RlL1VURjguaDoKKyAgICAgICAgKiB5YXJyL1lhcnIuaDoKKyAgICAg
ICAgKiB5YXJyL1lhcnJQYXR0ZXJuLmg6CisKIDIwMTItMDEtMTAgIEhhamltZSBNb3JyaXRhICA8
bW9ycml0YUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW01hY10gZWxpbWluYXRlIEphdmFTY3Jp
cHRDb3JlLmV4cAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzI4NTQKIAotICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAg
UmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCiAKICAgICAgICAgLSBBZGRlZCAtdW5leHBvcnRlZF9z
eW1ib2wgbGQgZmxhZ3MgdG8gaGlkZSBzeW1ib2xzIGNhbWUgZnJvbSB0aGUgc3RhbmRhcmQgbGli
cmFyeS4KICAgICAgICAgLSBUdXJuZWQgR0NDX1NZTUJPTFNfUFJJVkFURV9FWFRFUk4gb24KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT3BhcXVlSlNTdHJpbmcuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT3BhcXVlSlNTdHJpbmcuaAppbmRleCA1YzI0Zjc1MTAx
ZmI3YjFmZGFjMzgyZjY4YTQzNzMxZTc0YzUzYWY5Li4xYzYzMTUwY2YxNTRlNzFjOGUzYTk2ZjQ3
ZWJlYmQ4NmY4ODI3OTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09w
YXF1ZUpTU3RyaW5nLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0
cmluZy5oCkBAIC00Niw3ICs0Niw3IEBAIHN0cnVjdCBPcGFxdWVKU1N0cmluZyA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxPcGFxdWVKU1N0cmluZz4gewogICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IE9wYXF1ZUpTU3RyaW5nKGNoYXJhY3RlcnMsIGxlbmd0aCkpOwogICAgIH0KIAot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBjcmVhdGUoY29uc3QgSlNDOjpV
U3RyaW5nJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8T3BhcXVl
SlNTdHJpbmc+IGNyZWF0ZShjb25zdCBKU0M6OlVTdHJpbmcmKTsKIAogICAgIFVDaGFyKiBjaGFy
YWN0ZXJzKCkgeyByZXR1cm4gdGhpcyA/IG1fY2hhcmFjdGVycyA6IDA7IH0KICAgICB1bnNpZ25l
ZCBsZW5ndGgoKSB7IHJldHVybiB0aGlzID8gbV9sZW5ndGggOiAwOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggZGUwM2Y4ODNiOWJlOTM2OTBkMjNi
MTQzM2I4YjRmYTlmMTFlZTU4NS4uY2ViN2JlNmZkMmIwNDJlNjBlOWE0ZmVhYTViMmY2ODJkNTNm
YzZhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAt
OTQsNyArOTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSGVhcCogbV9oZWFwOwogCiAg
ICAgcHVibGljOgotICAgICAgICB2aXJ0dWFsIH5Db2RlQmxvY2soKTsKKyAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgdmlydHVhbCB+Q29kZUJsb2NrKCk7CiAgICAgICAgIAogICAgICAgICBpbnQg
bnVtUGFyYW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtUGFyYW1ldGVyczsgfQogICAgICAg
ICB2b2lkIHNldE51bVBhcmFtZXRlcnMoaW50IG5ld1ZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TYW1wbGluZ1Rvb2wuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9TYW1wbGluZ1Rvb2wuaAppbmRleCBiNjllZjAyNmVhOTdlMDZjY2Ez
NzFjMjUzOTk2YTYxYjI4Nzg3YzMwLi4zMmE0NGFkNjk3ODY0MjQ0OGM0YmVkNTU0YWNlOGI2ZWFk
YTRlZTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2FtcGxp
bmdUb29sLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NhbXBsaW5nVG9v
bC5oCkBAIC00NSw4ICs0NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgU2FtcGxp
bmdGbGFncyB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgdm9pZCBzdGFydCgpOwotICAg
ICAgICBzdGF0aWMgdm9pZCBzdG9wKCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyB2b2lkIHN0YXJ0KCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHN0
b3AoKTsKIAogI2lmIEVOQUJMRShTQU1QTElOR19GTEFHUykKICAgICAgICAgc3RhdGljIHZvaWQg
c2V0RmxhZyh1bnNpZ25lZCBmbGFnKQpAQCAtODksNyArODksNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogI2VuZGlmCiAgICAgcHJpdmF0ZToKLSAgICAgICAgc3RhdGljIHVpbnQzMl90IHNfZmxhZ3M7
CisgICAgICAgIEpTX0VYUE9SVERBVEEgc3RhdGljIHVpbnQzMl90IHNfZmxhZ3M7CiAjaWYgRU5B
QkxFKFNBTVBMSU5HX0ZMQUdTKQogICAgICAgICBzdGF0aWMgdWludDY0X3Qgc19mbGFnQ291bnRz
WzMzXTsKICNlbmRpZgpAQCAtMTc0LDcgKzE3NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNs
YXNzIFNhbXBsaW5nUmVnaW9uIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFNhbXBsaW5nUmVnaW9u
KGNvbnN0IGNoYXIqKSB7IH0KLSAgICAgICAgdm9pZCBkdW1wKCk7CisgICAgICAgIEpTX0VYUE9S
VF9QUklWQVRFIHZvaWQgZHVtcCgpOwogICAgIH07CiAjZW5kaWYgLy8gRU5BQkxFKFNBTVBMSU5H
X1JFR0lPTlMpCiAKQEAgLTIyMCw4ICsyMjAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
c3RhdGljIHVuc2lnbmVkIHNfaGVydHo7CiAgICAgICAgIHN0YXRpYyBUaHJlYWRJZGVudGlmaWVy
IHNfc2FtcGxpbmdUaHJlYWQ7CiAKLSAgICAgICAgc3RhdGljIHZvaWQgc3RhcnQodW5zaWduZWQg
aGVydHo9MTAwMDApOwotICAgICAgICBzdGF0aWMgdm9pZCBzdG9wKCk7CisgICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHN0YXJ0KHVuc2lnbmVkIGhlcnR6PTEwMDAwKTsKKyAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgc3RvcCgpOwogCiAgICAgICAgIHN0
YXRpYyB2b2lkKiB0aHJlYWRTdGFydEZ1bmModm9pZCopOwogICAgIH07CkBAIC0yOTQsNyArMjk0
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBtZW1zZXQobV9vcGNvZGVTYW1wbGVz
SW5DVElGdW5jdGlvbnMsIDAsIHNpemVvZihtX29wY29kZVNhbXBsZXNJbkNUSUZ1bmN0aW9ucykp
OwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBzZXR1cCgpOworICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIHNldHVwKCk7CiAgICAgICAgIHZvaWQgZHVtcChFeGVjU3RhdGUqKTsKIAog
ICAgICAgICB2b2lkIG5vdGlmeU9mU2NvcGUoSlNHbG9iYWxEYXRhJiwgU2NyaXB0RXhlY3V0YWJs
ZSogc2NvcGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0Rl
YnVnZ2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaAppbmRl
eCBmNDgyNDNjNDU0YWMzOTRmMGRmYjhjYWIwM2QyOTdiZDI0ZWZjMThlLi5hMjM3MzI5MTg3ODAz
ZWRhOTU3YTM3ZDNhMGE5MDdhZmYwYjg5MjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGVidWdnZXIvRGVidWdnZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvRGVidWdnZXIuaApAQCAtNTgsNyArNTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9
OwogCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBleGlzdHMgb25seSBmb3IgYmFja3dhcmRzIGNvbXBh
dGliaWxpdHkgd2l0aCBleGlzdGluZyBXZWJTY3JpcHREZWJ1Z2dlciBjbGllbnRzLgotICAgIEpT
VmFsdWUgZXZhbHVhdGVJbkdsb2JhbENhbGxGcmFtZShjb25zdCBVU3RyaW5nJiwgSlNWYWx1ZSYg
ZXhjZXB0aW9uLCBKU0dsb2JhbE9iamVjdCopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFs
dWUgZXZhbHVhdGVJbkdsb2JhbENhbGxGcmFtZShjb25zdCBVU3RyaW5nJiwgSlNWYWx1ZSYgZXhj
ZXB0aW9uLCBKU0dsb2JhbE9iamVjdCopOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5oCmlu
ZGV4IGMyOGQwYjNhMjNiYTc5YWRjZTJmODUzN2ZhZDg0ZmE0MTdhODY3YTYuLjY2ZTgzZTFmNTI0
ODJiNWUxYWNjYmNiNzNmYTUzYzIyOTA5NGRhYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmgKQEAgLTUyLDcgKzUyLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyB2b2lkIGRlZmluZUdldHRlcihKU09iamVj
dCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPYmplY3Qq
IGdldHRlckZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAgICAgICAgc3RhdGljIHZv
aWQgZGVmaW5lU2V0dGVyKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBKU09iamVjdCogc2V0dGVyRnVuY3Rpb24sIHVuc2lnbmVkIGF0dHJpYnV0
ZXMpOwogCi0gICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOworICAgICAgICBK
U19FWFBPUlREQVRBIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCiAgICAgICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKSAKICAgICAg
ICAgewpAQCAtNjIsMTAgKzYyLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByb3RlY3RlZDoK
ICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVz
R2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IEpTT2JqZWN0OjpT
dHJ1Y3R1cmVGbGFnczsKIAotICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0
YSYsIEpTT2JqZWN0KiBhY3RpdmF0aW9uKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmLCBKU09iamVjdCogYWN0aXZhdGlvbik7CiAK
ICAgICBwcml2YXRlOgotICAgICAgICBEZWJ1Z2dlckFjdGl2YXRpb24oSlNHbG9iYWxEYXRhJik7
CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIERlYnVnZ2VyQWN0aXZhdGlvbihKU0dsb2JhbERh
dGEmKTsKICAgICAgICAgV3JpdGVCYXJyaWVyPEpTQWN0aXZhdGlvbj4gbV9hY3RpdmF0aW9uOwog
ICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1
Z2dlckNhbGxGcmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2Vy
Q2FsbEZyYW1lLmgKaW5kZXggZDhmYjlkYWU1ODg0MjY3NTRiMGY0OTU0ODQ1NjM5MjU2NTVkMzM3
Yi4uODYwNWFmNTRkM2ZhNDRmMmM1YmUyMjI5OTgxMjgyMzA5NTYwYTU3ZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmgKQEAgLTUw
LDcgKzUwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGR5
bmFtaWNHbG9iYWxPYmplY3QoKSBjb25zdCB7IHJldHVybiBtX2NhbGxGcmFtZS0+ZHluYW1pY0ds
b2JhbE9iamVjdCgpOyB9CiAgICAgICAgIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluKCkgY29u
c3QgeyByZXR1cm4gbV9jYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKTsgfQotICAgICAgICBjb25zdCBV
U3RyaW5nKiBmdW5jdGlvbk5hbWUoKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
Y29uc3QgVVN0cmluZyogZnVuY3Rpb25OYW1lKCkgY29uc3Q7CiAgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIFVTdHJpbmcgY2FsY3VsYXRlZEZ1bmN0aW9uTmFtZSgpIGNvbnN0OwogICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSBUeXBlIHR5cGUoKSBjb25zdDsKICAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgSlNPYmplY3QqIHRoaXNPYmplY3QoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRpb25TcGFjZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvQWxsb2NhdGlvblNwYWNlLmgKaW5kZXggNTUwY2I5YWEzYjA0NmNjOGM3NDZkZmIw
Mjc5OTU4YmRmYjk0NDIxMi4uMDFjMzM5YjgzNjBhZjMzNmMyN2YzOWYwOWRiMzMyODE2NzhjOGYz
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdGlvblNwYWNl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdGlvblNwYWNlLmgKQEAg
LTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkKiBhbGxvY2F0ZShNYXJrZWRT
cGFjZTo6U2l6ZUNsYXNzJik7CiAgICAgdm9pZCogdHJ5QWxsb2NhdGUoTWFya2VkU3BhY2U6OlNp
emVDbGFzcyYpOwotICAgIHZvaWQqIGFsbG9jYXRlU2xvd0Nhc2UoTWFya2VkU3BhY2U6OlNpemVD
bGFzcyYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQqIGFsbG9jYXRlU2xvd0Nhc2UoTWFy
a2VkU3BhY2U6OlNpemVDbGFzcyYpOwogICAgIE1hcmtlZEJsb2NrKiBhbGxvY2F0ZUJsb2NrKHNp
emVfdCBjZWxsU2l6ZSwgQWxsb2NhdGlvbkVmZm9ydCk7CiAgICAgCiAgICAgSGVhcCogbV9oZWFw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlSGVhcC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlSGVhcC5oCmluZGV4IGM1Nzc3OTFkODg2
NGRkMTExMjJmZDI1MDJlNTA3Y2QyZjA0NzQ3YmQuLjNiOWRiMzdhMmU3YjgzNmQ1NTY4MDc2NGI2
ZDczNmZhOWUzZDhhMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hh
bmRsZUhlYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGVIZWFwLmgK
QEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgSlNHbG9iYWxEYXRhOwogY2xhc3MgSlNWYWx1ZTsKIGNs
YXNzIFNsb3RWaXNpdG9yOwogCi1jbGFzcyBXZWFrSGFuZGxlT3duZXIgeworY2xhc3MgSlNfRVhQ
T1JUX1BSSVZBVEUgV2Vha0hhbmRsZU93bmVyIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWFr
SGFuZGxlT3duZXIoKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9v
dHMoSGFuZGxlPFVua25vd24+LCB2b2lkKiBjb250ZXh0LCBTbG90VmlzaXRvciYpOwpAQCAtNjUs
NyArNjUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB2aXNpdFdlYWtIYW5kbGVzKEhlYXBSb290Vmlz
aXRvciYpOwogICAgIHZvaWQgZmluYWxpemVXZWFrSGFuZGxlcygpOwogCi0gICAgdm9pZCB3cml0
ZUJhcnJpZXIoSGFuZGxlU2xvdCwgY29uc3QgSlNWYWx1ZSYpOworICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgd3JpdGVCYXJyaWVyKEhhbmRsZVNsb3QsIGNvbnN0IEpTVmFsdWUmKTsKIAogI2lm
ICFBU1NFUlRfRElTQUJMRUQKICAgICBib29sIGhhc1dlYWtPd25lcihIYW5kbGVTbG90LCBXZWFr
SGFuZGxlT3duZXIqKTsKQEAgLTExMSw3ICsxMTEsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBI
YW5kbGVTbG90IHRvSGFuZGxlKE5vZGUqKTsKICAgICBzdGF0aWMgTm9kZSogdG9Ob2RlKEhhbmRs
ZVNsb3QpOwogCi0gICAgdm9pZCBncm93KCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBn
cm93KCk7CiAgICAgCiAjaWYgRU5BQkxFKEdDX1ZBTElEQVRJT04pIHx8ICFBU1NFUlRfRElTQUJM
RUQKICAgICBib29sIGlzVmFsaWRXZWFrTm9kZShOb2RlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmgKaW5kZXggMWIyMjgyNTNiODc2NjYwZmEzMGVlZWJkMDI2NGVjNGJmY2ZhZTEwNS4uM2M3
OGQ2MjBmYWU0OTZiMzQxMmNmY2IxZWMyNTJhYTc5MDFmYTQ5YSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXAuaApAQCAtNzgsMTQgKzc4LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAg
IEhlYXAoSlNHbG9iYWxEYXRhKiwgSGVhcFNpemUpOwogICAgICAgICB+SGVhcCgpOwotICAgICAg
ICB2b2lkIGRlc3Ryb3koKTsgLy8gSlNHbG9iYWxEYXRhIG11c3QgY2FsbCBkZXN0cm95KCkgYmVm
b3JlIH5IZWFwKCkuCisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZGVzdHJveSgpOyAv
LyBKU0dsb2JhbERhdGEgbXVzdCBjYWxsIGRlc3Ryb3koKSBiZWZvcmUgfkhlYXAoKS4KIAogICAg
ICAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEoKSBjb25zdCB7IHJldHVybiBtX2dsb2JhbERh
dGE7IH0KICAgICAgICAgQWxsb2NhdGlvblNwYWNlJiBvYmplY3RTcGFjZSgpIHsgcmV0dXJuIG1f
b2JqZWN0U3BhY2U7IH0KICAgICAgICAgTWFjaGluZVRocmVhZHMmIG1hY2hpbmVUaHJlYWRzKCkg
eyByZXR1cm4gbV9tYWNoaW5lVGhyZWFkczsgfQogCi0gICAgICAgIEdDQWN0aXZpdHlDYWxsYmFj
ayogYWN0aXZpdHlDYWxsYmFjaygpOwotICAgICAgICB2b2lkIHNldEFjdGl2aXR5Q2FsbGJhY2so
UGFzc093blB0cjxHQ0FjdGl2aXR5Q2FsbGJhY2s+KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgR0NBY3Rpdml0eUNhbGxiYWNrKiBhY3Rpdml0eUNhbGxiYWNrKCk7CisgICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIHZvaWQgc2V0QWN0aXZpdHlDYWxsYmFjayhQYXNzT3duUHRyPEdDQWN0aXZp
dHlDYWxsYmFjaz4pOwogCiAgICAgICAgIC8vIHRydWUgaWYgYW4gYWxsb2NhdGlvbiBvciBjb2xs
ZWN0aW9uIGlzIGluIHByb2dyZXNzCiAgICAgICAgIGlubGluZSBib29sIGlzQnVzeSgpOwpAQCAt
OTQsMjYgKzk0LDI2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkKiBhbGxvY2F0ZShz
aXplX3QpOwogCiAgICAgICAgIHR5cGVkZWYgdm9pZCAoKkZpbmFsaXplcikoSlNDZWxsKik7Ci0g
ICAgICAgIHZvaWQgYWRkRmluYWxpemVyKEpTQ2VsbCosIEZpbmFsaXplcik7CisgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIHZvaWQgYWRkRmluYWxpemVyKEpTQ2VsbCosIEZpbmFsaXplcik7CiAK
ICAgICAgICAgdm9pZCBub3RpZnlJc1NhZmVUb0NvbGxlY3QoKSB7IG1faXNTYWZlVG9Db2xsZWN0
ID0gdHJ1ZTsgfQotICAgICAgICB2b2lkIGNvbGxlY3RBbGxHYXJiYWdlKCk7CisgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIHZvaWQgY29sbGVjdEFsbEdhcmJhZ2UoKTsKIAogICAgICAgICB2b2lk
IHJlcG9ydEV4dHJhTWVtb3J5Q29zdChzaXplX3QgY29zdCk7CiAKLSAgICAgICAgdm9pZCBwcm90
ZWN0KEpTVmFsdWUpOwotICAgICAgICBib29sIHVucHJvdGVjdChKU1ZhbHVlKTsgLy8gVHJ1ZSB3
aGVuIHRoZSBwcm90ZWN0IGNvdW50IGRyb3BzIHRvIDAuCisgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgcHJvdGVjdChKU1ZhbHVlKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9v
bCB1bnByb3RlY3QoSlNWYWx1ZSk7IC8vIFRydWUgd2hlbiB0aGUgcHJvdGVjdCBjb3VudCBkcm9w
cyB0byAwLgogICAgICAgICAKICAgICAgICAgdm9pZCBqZXR0aXNvbkRGR0NvZGVCbG9jayhQYXNz
T3duUHRyPENvZGVCbG9jaz4pOwogCi0gICAgICAgIHNpemVfdCBzaXplKCk7Ci0gICAgICAgIHNp
emVfdCBjYXBhY2l0eSgpOwotICAgICAgICBzaXplX3Qgb2JqZWN0Q291bnQoKTsKLSAgICAgICAg
c2l6ZV90IGdsb2JhbE9iamVjdENvdW50KCk7Ci0gICAgICAgIHNpemVfdCBwcm90ZWN0ZWRPYmpl
Y3RDb3VudCgpOwotICAgICAgICBzaXplX3QgcHJvdGVjdGVkR2xvYmFsT2JqZWN0Q291bnQoKTsK
LSAgICAgICAgUGFzc093blB0cjxUeXBlQ291bnRTZXQ+IHByb3RlY3RlZE9iamVjdFR5cGVDb3Vu
dHMoKTsKLSAgICAgICAgUGFzc093blB0cjxUeXBlQ291bnRTZXQ+IG9iamVjdFR5cGVDb3VudHMo
KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IHNpemUoKTsKKyAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc2l6ZV90IGNhcGFjaXR5KCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIHNpemVfdCBvYmplY3RDb3VudCgpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzaXpl
X3QgZ2xvYmFsT2JqZWN0Q291bnQoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc2l6ZV90
IHByb3RlY3RlZE9iamVjdENvdW50KCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVf
dCBwcm90ZWN0ZWRHbG9iYWxPYmplY3RDb3VudCgpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBQYXNzT3duUHRyPFR5cGVDb3VudFNldD4gcHJvdGVjdGVkT2JqZWN0VHlwZUNvdW50cygpOwor
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBQYXNzT3duUHRyPFR5cGVDb3VudFNldD4gb2JqZWN0
VHlwZUNvdW50cygpOwogCiAgICAgICAgIHZvaWQgcHVzaFRlbXBTb3J0VmVjdG9yKFZlY3RvcjxW
YWx1ZVN0cmluZ1BhaXI+Kik7CiAgICAgICAgIHZvaWQgcG9wVGVtcFNvcnRWZWN0b3IoVmVjdG9y
PFZhbHVlU3RyaW5nUGFpcj4qKTsKQEAgLTE0MSw4ICsxNDEsOCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShIYW5kbGU8VW5rbm93bj4sIHZvaWQq
IGNvbnRleHQpOwogICAgICAgICB9OwogCi0gICAgICAgIGJvb2wgaXNWYWxpZEFsbG9jYXRpb24o
c2l6ZV90KTsKLSAgICAgICAgdm9pZCByZXBvcnRFeHRyYU1lbW9yeUNvc3RTbG93Q2FzZShzaXpl
X3QpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzVmFsaWRBbGxvY2F0aW9uKHNp
emVfdCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVwb3J0RXh0cmFNZW1vcnlD
b3N0U2xvd0Nhc2Uoc2l6ZV90KTsKIAogICAgICAgICAvLyBDYWxsIHRoaXMgZnVuY3Rpb24gYmVm
b3JlIGFueSBvcGVyYXRpb24gdGhhdCBuZWVkcyB0byBrbm93IHdoaWNoIGNlbGxzCiAgICAgICAg
IC8vIGluIHRoZSBoZWFwIGFyZSBsaXZlLiAoRm9yIGV4YW1wbGUsIGNhbGwgdGhpcyBmdW5jdGlv
biBiZWZvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVT
dGFja01hcmtlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFy
a2VyLmgKaW5kZXggNjljNDUzN2JkYWJlZjY0YmQzZjAwODhiMWU0ZTY4NGU5MmZlYmUyZC4uMGY1
YTRjM2FhMmVmMGQ2NWExMDhkMzEwOWRkNzRkZGJiYWNhZjFlYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmgKQEAgLTQwLDcgKzQwLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZ2F0aGVyQ29uc2VydmF0aXZlUm9vdHMoQ29u
c2VydmF0aXZlUm9vdHMmLCB2b2lkKiBzdGFja0N1cnJlbnQpOwogCiAgICAgICAgIHZvaWQgbWFr
ZVVzYWJsZUZyb21NdWx0aXBsZVRocmVhZHMoKTsKLSAgICAgICAgdm9pZCBhZGRDdXJyZW50VGhy
ZWFkKCk7IC8vIE9ubHkgbmVlZHMgdG8gYmUgY2FsbGVkIGJ5IGNsaWVudHMgdGhhdCBjYW4gdXNl
IHRoZSBzYW1lIGhlYXAgZnJvbSBtdWx0aXBsZSB0aHJlYWRzLgorICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIGFkZEN1cnJlbnRUaHJlYWQoKTsgLy8gT25seSBuZWVkcyB0byBiZSBjYWxs
ZWQgYnkgY2xpZW50cyB0aGF0IGNhbiB1c2UgdGhlIHNhbWUgaGVhcCBmcm9tIG11bHRpcGxlIHRo
cmVhZHMuCiAKICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIGdhdGhlckZyb21DdXJyZW50VGhy
ZWFkKENvbnNlcnZhdGl2ZVJvb3RzJiwgdm9pZCogc3RhY2tDdXJyZW50KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya1N0YWNrLmgKaW5kZXggMTQ3ODAxMWQ5NDE3YTFmNTMzZmU1NWE4MDZh
ZGFlMjlmYmQzODU4OS4uOTU2MjA5MGQwZjljYWViMTA1NTRiMzhmNjVjNmJjNGUzMjc4YWI2YiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmgKQEAgLTExMSw3ICsxMTEsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcml2YXRlOgogICAgICAgICBNYXJrU3RhY2tTZWdtZW50
KiBtX3RvcFNlZ21lbnQ7CiAgICAgICAgIAotICAgICAgICB2b2lkIGV4cGFuZCgpOworICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGV4cGFuZCgpOwogICAgICAgICAKICAgICAgICAgTWFy
a1N0YWNrU2VnbWVudEFsbG9jYXRvciYgbV9hbGxvY2F0b3I7CiAKQEAgLTI0MSw3ICsyNDEsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICBz
dGF0aWMgdm9pZCB2YWxpZGF0ZShKU0NlbGwqKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIHZvaWQgdmFsaWRhdGUoSlNDZWxsKik7CiAKICAgICAgICAgdm9pZCBhcHBlbmQoSlNW
YWx1ZSopOwogICAgICAgICB2b2lkIGFwcGVuZChKU1ZhbHVlKiwgc2l6ZV90IGNvdW50KTsKQEAg
LTI1MCw3ICsyNTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBpbnRlcm5hbEFw
cGVuZChKU0NlbGwqKTsKICAgICAgICAgdm9pZCBpbnRlcm5hbEFwcGVuZChKU1ZhbHVlKTsKICAg
ICAgICAgCi0gICAgICAgIHZvaWQgbWVyZ2VPcGFxdWVSb290cygpOworICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSB2b2lkIG1lcmdlT3BhcXVlUm9vdHMoKTsKICAgICAgICAgCiAgICAgICAgIHZv
aWQgbWVyZ2VPcGFxdWVSb290c0lmTmVjZXNzYXJ5KCkKICAgICAgICAgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvVlRhYmxlU3BlY3RydW0uaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL1ZUYWJsZVNwZWN0cnVtLmgKaW5kZXggOGE5NzM3ZTliYWJmYzMwZDQx
YTFmMzIwZWFiYTlmZDQwNTc2ZjFmNi4uYTUwYTA0ZjQ3N2NmZGRiMGI2MzVmNTFkMjgzNDYyNTA4
ZDYzNzU3MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvVlRhYmxlU3Bl
Y3RydW0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9WVGFibGVTcGVjdHJ1bS5o
CkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICB+VlRhYmxlU3BlY3RydW0oKTsKICAgICAK
ICAgICB2b2lkIGNvdW50VlB0cih2b2lkKik7Ci0gICAgdm9pZCBjb3VudChKU0NlbGwqKTsKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGNvdW50KEpTQ2VsbCopOwogICAgIAogICAgIHZvaWQg
ZHVtcChGSUxFKiBvdXRwdXQsIGNvbnN0IGNoYXIqIGNvbW1lbnQpOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dyaXRlQmFycmllclN1cHBvcnQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dyaXRlQmFycmllclN1cHBvcnQuaAppbmRleCAwMGI5YmI5
N2ZlNWNhZjFlYjlkOWRiNjg5ZWFlOGYzNGRjYTBhNDZhLi41ZDdkMmY2ZmUxNWNhOTY1OTNkZWI5
OTI2YzRmMGQ3ZTFjMjk2NmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9Xcml0ZUJhcnJpZXJTdXBwb3J0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
V3JpdGVCYXJyaWVyU3VwcG9ydC5oCkBAIC04MSw4ICs4MSw4IEBAIHB1YmxpYzoKICAgICB9CiAj
ZWxzZQogICAgIC8vIFRoZXNlIGFyZSBuZWNlc3NhcnkgdG8gd29yayBhcm91bmQgbm90IGhhdmlu
ZyBjb25kaXRpb25hbCBleHBvcnRzLgotICAgIHN0YXRpYyBjaGFyIHVzZXNXaXRoQmFycmllckZy
b21DcHA7Ci0gICAgc3RhdGljIGNoYXIgdXNlc1dpdGhvdXRCYXJyaWVyRnJvbUNwcDsKKyAgICBK
U19FWFBPUlREQVRBIHN0YXRpYyBjaGFyIHVzZXNXaXRoQmFycmllckZyb21DcHA7CisgICAgSlNf
RVhQT1JUREFUQSBzdGF0aWMgY2hhciB1c2VzV2l0aG91dEJhcnJpZXJGcm9tQ3BwOwogI2VuZGlm
IC8vIEVOQUJMRShXUklURV9CQVJSSUVSX1BST0ZJTElORykKIAogICAgIHN0YXRpYyB2b2lkIGNv
dW50V3JpdGVCYXJyaWVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCAy
M2YyY2RlOWM5NTRlZTY2NTE2Njc2N2EwOWQ5ZDE5NDkzNzhmYzViLi41MDk4ZGM3NmM3YjI4NDlj
OTZlN2Y4NzQ2ZGZkOTE2NThhNjgwOWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
cy5oCkBAIC0xODEsNyArMTgxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFN0YXRlbWVu
dE5vZGUoaW50KTsKIAogICAgIHB1YmxpYzoKLSAgICAgICAgdm9pZCBzZXRMb2MoaW50IGZpcnN0
TGluZSwgaW50IGxhc3RMaW5lKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRM
b2MoaW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lKTsKICAgICAgICAgaW50IGZpcnN0TGluZSgp
IGNvbnN0IHsgcmV0dXJuIGxpbmVObygpOyB9CiAgICAgICAgIGludCBsYXN0TGluZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbGFzdExpbmU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXJBcmVuYS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXJBcmVuYS5oCmluZGV4IDM1Njc0YjYwNGZmMmYzYzQ2ODM4ZGQzODJmNTc1MDdhNzBiODg4
MDYuLjQ5ZjBhYjZiZjg0MjJiODkwNTc5YTBiODRkMDcyM2FmNjQ2MzA4NjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmgKQEAgLTE1OSw3ICsxNTksNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCByZW1vdmVMYXN0KCk7CiAKICAgICAgICAgYm9v
bCBpc0VtcHR5KCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgcmVzZXQoKTsKKyAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgdm9pZCByZXNldCgpOwogCiAgICAgICAgIElkZW50aWZpZXJBcmVuYSYgaWRl
bnRpZmllckFyZW5hKCkgeyByZXR1cm4gKm1faWRlbnRpZmllckFyZW5hOyB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZS5oCmluZGV4IDZiZjI5ZjdhNmY4OGI5YWU0ZWVl
M2VkNjc5NzYwMjBmMWViMjdmMGYuLjk0NTVlMzU5NTAzMmYyYzNkOWM1MmEwODA5NWQ1NGFjOTk4
NmVhMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGUuaApAQCAtNDQs
MTEgKzQ0LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBkb3VibGUgdG90YWxUaW1lKCkg
Y29uc3QgeyByZXR1cm4gbV9oZWFkLT50b3RhbFRpbWUoKTsgfQogICAgICAgICB1bnNpZ25lZCBp
bnQgdWlkKCkgY29uc3QgeyByZXR1cm4gbV91aWQ7IH0KIAotICAgICAgICB2b2lkIGZvckVhY2go
dm9pZCAoUHJvZmlsZU5vZGU6OiopKCkpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lk
IGZvckVhY2godm9pZCAoUHJvZmlsZU5vZGU6OiopKCkpOwogCi0gICAgICAgIHZvaWQgZm9jdXMo
Y29uc3QgUHJvZmlsZU5vZGUqKTsKLSAgICAgICAgdm9pZCBleGNsdWRlKGNvbnN0IFByb2ZpbGVO
b2RlKik7Ci0gICAgICAgIHZvaWQgcmVzdG9yZUFsbCgpOworICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkIGZvY3VzKGNvbnN0IFByb2ZpbGVOb2RlKik7CisgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHZvaWQgZXhjbHVkZShjb25zdCBQcm9maWxlTm9kZSopOworICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSB2b2lkIHJlc3RvcmVBbGwoKTsKIAogI2lmbmRlZiBOREVCVUcKICAgICAgICAg
dm9pZCBkZWJ1Z1ByaW50RGF0YSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJnTGlzdC5oCmluZGV4IGFjNWE0ZjI3MTViZDNjM2QzMGQwYmJmNzA0YWFkMDIyYzI1ZGRkMWUu
LjE1MTJhMGZhMTUyMmVkMDE1Y2Q1MjI2MDVjODBmNzNlMzhiZThmMzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmgKQEAgLTEwMiw3ICsxMDIsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgc3RhdGljIHZvaWQgbWFya0xpc3RzKEhlYXBSb290VmlzaXRvciYsIExp
c3RTZXQmKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZvaWQgc2xvd0FwcGVuZChKU1ZhbHVl
KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzbG93QXBwZW5kKEpTVmFsdWUpOwog
ICAgICAgICAKICAgICAgICAgRW5jb2RlZEpTVmFsdWUmIHNsb3RGb3IoaW50IGl0ZW0pIGNvbnN0
CiAgICAgICAgIHsKQEAgLTE3MSw3ICsxNzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
Ym9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1fYXJnQ291bnQ7IH0KICAgICAgICAgc2l6
ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2FyZ0NvdW50OyB9CiAgICAgICAgIAotICAgICAg
ICB2b2lkIGdldFNsaWNlKGludCBzdGFydEluZGV4LCBBcmdMaXN0JiByZXN1bHQpIGNvbnN0Owor
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGdldFNsaWNlKGludCBzdGFydEluZGV4LCBB
cmdMaXN0JiByZXN1bHQpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgSlNWYWx1ZSog
bV9hcmdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERh
dGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhbGxEYXRhLmgKaW5kZXggYjEz
OGY1NDg0MDVjMjRmYTNjNTlmMTU4MzhmOTA4NjRmNmI1M2ZlNy4uMTVhNmEwYTQ4ZmI4NjQxYmQ5
OGU3ZjU5Y2E4NWYzZmNiM2U2NTk2OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ2FsbERhdGEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
YWxsRGF0YS5oCkBAIC01Nyw3ICs1Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9IGpz
OwogICAgIH07CiAKLSAgICBKU1ZhbHVlIGNhbGwoRXhlY1N0YXRlKiwgSlNWYWx1ZSBmdW5jdGlv
bk9iamVjdCwgQ2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNv
bnN0IEFyZ0xpc3QmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGNhbGwoRXhlY1N0
YXRlKiwgSlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgQ2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiwg
SlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmKTsKIAogfSAvLyBuYW1lc3BhY2UgSlND
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24u
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uaAppbmRleCBjM2Ri
ZGZjNThjOGJlNjA1YmFlNDI0YWU2MDhlYjhkMDEzMmRjMWQwLi4zZDNiODZmZTQ0ZGM1ZjM1NzNj
ZmM2ZDg2YmY2NGRkMTQ3ZTc3MDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21wbGV0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tcGxldGlvbi5oCkBAIC0zMSw4ICszMSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNz
IFNjb3BlQ2hhaW5Ob2RlOwogICAgIGNsYXNzIFNvdXJjZUNvZGU7CiAKLSAgICBib29sIGNoZWNr
U3ludGF4KEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1ZhbHVlKiBleGNlcHRpb24g
PSAwKTsKLSAgICBKU1ZhbHVlIGV2YWx1YXRlKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKiwg
Y29uc3QgU291cmNlQ29kZSYsIEpTVmFsdWUgdGhpc1ZhbHVlID0gSlNWYWx1ZSgpLCBKU1ZhbHVl
KiBleGNlcHRpb24gPSAwKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGNoZWNrU3ludGF4
KEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1ZhbHVlKiBleGNlcHRpb24gPSAwKTsK
KyAgICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGV2YWx1YXRlKEV4ZWNTdGF0ZSosIFNjb3Bl
Q2hhaW5Ob2RlKiwgY29uc3QgU291cmNlQ29kZSYsIEpTVmFsdWUgdGhpc1ZhbHVlID0gSlNWYWx1
ZSgpLCBKU1ZhbHVlKiBleGNlcHRpb24gPSAwKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuaAppbmRleCBjYzhm
NDY5NzcwNDkyZjE5ZjUxYjUxZmNkMDJlY2Y2NjVmYTFmOTNkLi5kN2EzYzczZDNkNzZkN2JjZDE2
NDExZjFmNmRiOWE3MjY3NjUzNjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db25zdHJ1Y3REYXRhLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29uc3RydWN0RGF0YS5oCkBAIC01Niw3ICs1Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB9IGpzOwogICAgIH07CiAKLSAgICBKU09iamVjdCogY29uc3RydWN0KEV4ZWNTdGF0ZSos
IEpTVmFsdWUgY29uc3RydWN0b3IsIENvbnN0cnVjdFR5cGUsIGNvbnN0IENvbnN0cnVjdERhdGEm
LCBjb25zdCBBcmdMaXN0Jik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIGNvbnN0
cnVjdChFeGVjU3RhdGUqLCBKU1ZhbHVlIGNvbnN0cnVjdG9yLCBDb25zdHJ1Y3RUeXBlLCBjb25z
dCBDb25zdHJ1Y3REYXRhJiwgY29uc3QgQXJnTGlzdCYpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuaAppbmRleCAz
ZWRmYjA5NzBhYzhiZTZiM2UyOWJjZmViNWJhMGIwNWNkMWQ5ODI5Li43Yzk3NmE1MTRhNmQzYTkz
ZTY0MmNkMWE1ODA1ZTQxMjk4NjEzNmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9EYXRlSW5zdGFuY2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EYXRlSW5zdGFuY2UuaApAQCAtMzEsOSArMzEsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgIGNsYXNzIERhdGVJbnN0YW5jZSA6IHB1YmxpYyBKU1dyYXBwZXJPYmplY3QgewogICAgIHBy
b3RlY3RlZDoKLSAgICAgICAgRGF0ZUluc3RhbmNlKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopOwor
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBEYXRlSW5zdGFuY2UoRXhlY1N0YXRlKiwgU3RydWN0
dXJlKik7CiAgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJik7Ci0gICAg
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiwgZG91YmxlKTsKKyAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmLCBkb3Vi
bGUpOwogCiAgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaAppbmRleCBiODA3ZDRhYjRmNjg1YzE4Yjg2OGJjNjli
MWMxY2QyZGVhZjg1NzJjLi44OGI1NDBhMzVmYzIyN2JhMTAwMWQwOWI2NjI5ZGQ1NzE0MGYzYTdj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgKQEAgLTQ2LDEyICs0NiwxMiBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICBKU09iamVjdCogY3JlYXRlVHlwZUVycm9yKEpTR2xvYmFs
T2JqZWN0KiwgY29uc3QgVVN0cmluZyYpOwogICAgIEpTT2JqZWN0KiBjcmVhdGVVUklFcnJvcihK
U0dsb2JhbE9iamVjdCosIGNvbnN0IFVTdHJpbmcmKTsKICAgICAvLyBFeGVjU3RhdGUgd3JhcHBl
cnMuCi0gICAgSlNPYmplY3QqIGNyZWF0ZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcm
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogY3JlYXRlRXJyb3IoRXhlY1N0YXRl
KiwgY29uc3QgVVN0cmluZyYpOwogICAgIEpTT2JqZWN0KiBjcmVhdGVFdmFsRXJyb3IoRXhlY1N0
YXRlKiwgY29uc3QgVVN0cmluZyYpOwotICAgIEpTT2JqZWN0KiBjcmVhdGVSYW5nZUVycm9yKEV4
ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsKLSAgICBKU09iamVjdCogY3JlYXRlUmVmZXJlbmNl
RXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0cmluZyYpOwotICAgIEpTT2JqZWN0KiBjcmVhdGVT
eW50YXhFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJik7Ci0gICAgSlNPYmplY3QqIGNy
ZWF0ZVR5cGVFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJik7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgSlNPYmplY3QqIGNyZWF0ZVJhbmdlRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgVVN0
cmluZyYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjcmVhdGVSZWZlcmVuY2VF
cnJvcihFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
SlNPYmplY3QqIGNyZWF0ZVN5bnRheEVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsK
KyAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogY3JlYXRlVHlwZUVycm9yKEV4ZWNTdGF0
ZSosIGNvbnN0IFVTdHJpbmcmKTsKICAgICBKU09iamVjdCogY3JlYXRlVVJJRXJyb3IoRXhlY1N0
YXRlKiwgY29uc3QgVVN0cmluZyYpOwogCiAgICAgLy8gTWV0aG9kcyB0byBhZGQgCkBAIC02MSwx
MiArNjEsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgSlNPYmplY3QqIGFkZEVycm9ySW5mbyhF
eGVjU3RhdGUqLCBKU09iamVjdCogZXJyb3IsIGludCBsaW5lLCBjb25zdCBTb3VyY2VDb2RlJik7
CiAKICAgICAvLyBNZXRob2RzIHRvIHRocm93IEVycm9ycy4KLSAgICBKU1ZhbHVlIHRocm93RXJy
b3IoRXhlY1N0YXRlKiwgSlNWYWx1ZSk7Ci0gICAgSlNPYmplY3QqIHRocm93RXJyb3IoRXhlY1N0
YXRlKiwgSlNPYmplY3QqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIHRocm93RXJy
b3IoRXhlY1N0YXRlKiwgSlNWYWx1ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3Qq
IHRocm93RXJyb3IoRXhlY1N0YXRlKiwgSlNPYmplY3QqKTsKIAogICAgIC8vIENvbnZlbmllbmNl
IHdyYXBwZXJzLCBjcmVhdGUgYW4gdGhyb3cgYW4gZXhjZXB0aW9uIHdpdGggYSBkZWZhdWx0IG1l
c3NhZ2UuCi0gICAgSlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSopOwotICAgIEpT
T2JqZWN0KiB0aHJvd1N5bnRheEVycm9yKEV4ZWNTdGF0ZSopOworICAgIEpTX0VYUE9SVF9QUklW
QVRFIEpTT2JqZWN0KiB0aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBKU09iamVjdCogdGhyb3dTeW50YXhFcnJvcihFeGVjU3RhdGUqKTsKIAogICAgIC8v
IENvbnZlbmllbmNlIHdyYXBwZXJzLCB3cmFwIHJlc3VsdCBhcyBhbiBFbmNvZGVkSlNWYWx1ZS4K
ICAgICBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgdGhyb3dWTUVycm9yKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBlcnJvcikgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXJyb3IoZXhlYywg
ZXJyb3IpKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhj
ZXB0aW9uSGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9u
SGVscGVycy5oCmluZGV4IGY3MWQxYTMwODUyMzFkYzhiYWI0N2EwNWM1NGNjZmJhM2Y5NTkzY2Uu
LjM4ODIzNWIwZGJlYThkNWU2N2ExMmYxYzhhMGU3MzcwMWVkYjcyODggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmgKQEAgLTMzLDE1ICsz
MywxNSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotSlNPYmplY3QqIGNyZWF0ZUludGVycnVwdGVk
RXhlY3V0aW9uRXhjZXB0aW9uKEpTR2xvYmFsRGF0YSopOworSlNfRVhQT1JUX1BSSVZBVEUgSlNP
YmplY3QqIGNyZWF0ZUludGVycnVwdGVkRXhlY3V0aW9uRXhjZXB0aW9uKEpTR2xvYmFsRGF0YSop
OwogYm9vbCBpc0ludGVycnVwdGVkRXhlY3V0aW9uRXhjZXB0aW9uKEpTT2JqZWN0Kik7CiBib29s
IGlzSW50ZXJydXB0ZWRFeGVjdXRpb25FeGNlcHRpb24oSlNWYWx1ZSk7CiAKIEpTT2JqZWN0KiBj
cmVhdGVUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKEpTR2xvYmFsRGF0YSopOwogYm9vbCBp
c1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oSlNPYmplY3QqKTsKLWJvb2wgaXNUZXJtaW5h
dGVkRXhlY3V0aW9uRXhjZXB0aW9uKEpTVmFsdWUpOworSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBp
c1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oSlNWYWx1ZSk7CiAKLUpTT2JqZWN0KiBjcmVh
dGVTdGFja092ZXJmbG93RXJyb3IoRXhlY1N0YXRlKik7CitKU19FWFBPUlRfUFJJVkFURSBKU09i
amVjdCogY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKEV4ZWNTdGF0ZSopOwogSlNPYmplY3QqIGNy
ZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihKU0dsb2JhbE9iamVjdCopOwogSlNPYmplY3QqIGNyZWF0
ZU91dE9mTWVtb3J5RXJyb3IoSlNHbG9iYWxPYmplY3QqKTsKIEpTT2JqZWN0KiBjcmVhdGVVbmRl
ZmluZWRWYXJpYWJsZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3Iu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaApp
bmRleCA3MTQxOTE2Y2Y2NGIzOTA3YjFiMmNjMGJjMmExNmQzODNkMDkxYjYwLi4zMTk4NmI3MGE3
M2M2NTNkMTg4ZGIyNmY0YjE3ZWUxMDRkMDUyMTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCkBAIC01OSw3ICs1OSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3Rh
dGUqLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IEFyZ0xpc3QmLCBjb25zdCBJZGVudGlmaWVyJiBm
dW5jdGlvbk5hbWUsIGNvbnN0IFVTdHJpbmcmIHNvdXJjZVVSTCwgY29uc3QgV1RGOjpUZXh0UG9z
aXRpb24mKTsKICAgICBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNH
bG9iYWxPYmplY3QqLCBjb25zdCBBcmdMaXN0Jik7CiAKLSAgICBKU09iamVjdCogY29uc3RydWN0
RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmpl
Y3QqLCBjb25zdCBBcmdMaXN0JiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFVTdHJpbmcmLCBj
b25zdCBXVEY6OlRleHRQb3NpdGlvbiYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0
KiBjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjayhFeGVjU3RhdGUqLCBK
U0dsb2JhbE9iamVjdCosIGNvbnN0IEFyZ0xpc3QmLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3Qg
VVN0cmluZyYsIGNvbnN0IFdURjo6VGV4dFBvc2l0aW9uJik7CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVy
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmgKaW5kZXggMmNj
ODhiMjU2MGE3NTVmN2JkODk0NDc2YWViNzg0ZDUwZWI1YmEyOS4uOTQ3Yzk1YjMzYjJkODJhOThm
MTAwYzg1YTMwMWQ1YmU4OWMzNmQ2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0lkZW50aWZpZXIuaApAQCAtNTYsMTQgKzU2LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
ICAgIHN0YXRpYyBJZGVudGlmaWVyIGNyZWF0ZUxDaGFyRnJvbVVDaGFyKEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSwgY29uc3QgVUNoYXIqIHMsIGludCBsZW5ndGgpIHsgcmV0dXJuIElkZW50aWZp
ZXIoZ2xvYmFsRGF0YSwgYWRkOChnbG9iYWxEYXRhLCBzLCBsZW5ndGgpKTsgfQogCi0gICAgICAg
IHN0YXRpYyBJZGVudGlmaWVyIGZyb20oRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCB5KTsKLSAg
ICAgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbShFeGVjU3RhdGUqIGV4ZWMsIGludCB5KTsKKyAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIElkZW50aWZpZXIgZnJvbShFeGVjU3RhdGUq
IGV4ZWMsIHVuc2lnbmVkIHkpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSWRl
bnRpZmllciBmcm9tKEV4ZWNTdGF0ZSogZXhlYywgaW50IHkpOwogICAgICAgICBzdGF0aWMgSWRl
bnRpZmllciBmcm9tKEV4ZWNTdGF0ZSogZXhlYywgZG91YmxlIHkpOwogICAgICAgICBzdGF0aWMg
SWRlbnRpZmllciBmcm9tKEpTR2xvYmFsRGF0YSosIHVuc2lnbmVkIHkpOwogICAgICAgICBzdGF0
aWMgSWRlbnRpZmllciBmcm9tKEpTR2xvYmFsRGF0YSosIGludCB5KTsKICAgICAgICAgc3RhdGlj
IElkZW50aWZpZXIgZnJvbShKU0dsb2JhbERhdGEqLCBkb3VibGUgeSk7CiAKLSAgICAgICAgc3Rh
dGljIHVpbnQzMl90IHRvVUludDMyKGNvbnN0IFVTdHJpbmcmLCBib29sJiBvayk7CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB1aW50MzJfdCB0b1VJbnQzMihjb25zdCBVU3RyaW5n
JiwgYm9vbCYgb2spOwogICAgICAgICB1aW50MzJfdCB0b1VJbnQzMihib29sJiBvaykgY29uc3Qg
eyByZXR1cm4gdG9VSW50MzIobV9zdHJpbmcsIG9rKTsgfQogICAgICAgICB1bnNpZ25lZCB0b0Fy
cmF5SW5kZXgoYm9vbCYgb2spIGNvbnN0OwogCkBAIC04NCw3ICs4NCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiwgY29uc3Qg
VUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25z
dCBTdHJpbmdJbXBsKiBhLCBjb25zdCBTdHJpbmdJbXBsKiBiKSB7IHJldHVybiA6OmVxdWFsKGEs
IGIpOyB9CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkKEV4ZWNT
dGF0ZSosIGNvbnN0IGNoYXIqKTsgLy8gT25seSB0byBiZSB1c2VkIHdpdGggc3RyaW5nIGxpdGVy
YWxzLgorICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJ
bXBsPiBhZGQoRXhlY1N0YXRlKiwgY29uc3QgY2hhciopOyAvLyBPbmx5IHRvIGJlIHVzZWQgd2l0
aCBzdHJpbmcgbGl0ZXJhbHMuCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+
IGFkZChKU0dsb2JhbERhdGEqLCBjb25zdCBjaGFyKik7IC8vIE9ubHkgdG8gYmUgdXNlZCB3aXRo
IHN0cmluZyBsaXRlcmFscy4KIAogICAgIHByaXZhdGU6CkBAIC0xMTksMTEgKzExOSwxMSBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBhZGRTbG93Q2FzZShnbG9iYWxEYXRh
LCByKTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+
IGFkZFNsb3dDYXNlKEV4ZWNTdGF0ZSosIFN0cmluZ0ltcGwqIHIpOwotICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGRTbG93Q2FzZShKU0dsb2JhbERhdGEqLCBTdHJpbmdJ
bXBsKiByKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8U3Ry
aW5nSW1wbD4gYWRkU2xvd0Nhc2UoRXhlY1N0YXRlKiwgU3RyaW5nSW1wbCogcik7CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZFNsb3dD
YXNlKEpTR2xvYmFsRGF0YSosIFN0cmluZ0ltcGwqIHIpOwogCi0gICAgICAgIHN0YXRpYyB2b2lk
IGNoZWNrQ3VycmVudElkZW50aWZpZXJUYWJsZShFeGVjU3RhdGUqKTsKLSAgICAgICAgc3RhdGlj
IHZvaWQgY2hlY2tDdXJyZW50SWRlbnRpZmllclRhYmxlKEpTR2xvYmFsRGF0YSopOworICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBjaGVja0N1cnJlbnRJZGVudGlmaWVyVGFi
bGUoRXhlY1N0YXRlKik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGNo
ZWNrQ3VycmVudElkZW50aWZpZXJUYWJsZShKU0dsb2JhbERhdGEqKTsKICAgICB9OwogCiAgICAg
dGVtcGxhdGUgPD4gQUxXQVlTX0lOTElORSBib29sIElkZW50aWZpZXI6OmNhblVzZVNpbmdsZUNo
YXJhY3RlclN0cmluZyhMQ2hhcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaAppbmRleCAxYTkzY2NiOWIxYTM4OTMzMTljYzAxNzI1
NzNjNTY1M2RkMDY3MmM5Li45MTMwMWEwZDhmYTY2ZWI3MWM1NzQ1NDQxMzA1Nzg1MWEzZDZiZTE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhy
ZWFkaW5nLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRo
cmVhZGluZy5oCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgLy8gVGhp
cyBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4gSXQgaXMgc2Fm
ZSB0byBjYWxsIGl0IHJlcGVhdGVkbHkuCiAgICAgLy8gRGFyd2luIGlzIGFuIGV4Y2VwdGlvbiB0
byB0aGlzIHJ1bGU6IGl0IGlzIE9LIHRvIGNhbGwgdGhpcyBmdW5jdGlvbiBmcm9tIGFueSB0aHJl
YWQsIGV2ZW4gcmVlbnRyYW50bHkuCi0gICAgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCk7Cisg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCk7CiAKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlv
bi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCmlu
ZGV4IGEwMzhiN2FlMTk3ODhiZmY0NDVmMDI4MjI3MjRlYzg2Y2M4MTIzMmQuLjUzMmJkMGM4ZDRi
MDY4NzQ0YzkwMTEzMjcyZWFjODNhNzYxYTIxODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZv
IHNfaW5mbzsKIAotICAgICAgICBjb25zdCBVU3RyaW5nJiBuYW1lKEV4ZWNTdGF0ZSopOworICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSBjb25zdCBVU3RyaW5nJiBuYW1lKEV4ZWNTdGF0ZSopOwog
ICAgICAgICBjb25zdCBVU3RyaW5nIGRpc3BsYXlOYW1lKEV4ZWNTdGF0ZSopOwogICAgICAgICBj
b25zdCBVU3RyaW5nIGNhbGN1bGF0ZWREaXNwbGF5TmFtZShFeGVjU3RhdGUqKTsKIApAQCAtNDks
OSArNDksOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEltcGxlbWVudHNIYXNJbnN0YW5jZSB8
IEpTT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKIAotICAgICAgICBJbnRlcm5hbEZ1bmN0aW9uKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIElu
dGVybmFsRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKIAotICAgICAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIG5hbWUp
OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFs
RGF0YSYsIGNvbnN0IElkZW50aWZpZXImIG5hbWUpOwogCiAgICAgICAgIHN0YXRpYyBDYWxsVHlw
ZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogICAgIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5LmgKaW5kZXggODcxY2ZjODgyYTU0MTZhMDA5ZjBlNGZjNmZl
Y2IzZmJmZGRhYjJmNy4uMjg0Yzk3N2NmMGVkZTg5NmVkYjA1MDg3NzBhZjZkOWVjNTNmNTVhNSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaApAQCAtMTI3LDE2ICsxMjcs
MTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBXYWxrZXI7CiAKICAg
ICBwcm90ZWN0ZWQ6Ci0gICAgICAgIGV4cGxpY2l0IEpTQXJyYXkoSlNHbG9iYWxEYXRhJiwgU3Ry
dWN0dXJlKik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IEpTQXJyYXkoSlNH
bG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CiAKLSAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihK
U0dsb2JhbERhdGEmLCB1bnNpZ25lZCBpbml0aWFsTGVuZ3RoID0gMCk7Ci0gICAgICAgIEpTQXJy
YXkqIHRyeUZpbmlzaENyZWF0aW9uVW5pbml0aWFsaXplZChKU0dsb2JhbERhdGEmLCB1bnNpZ25l
ZCBpbml0aWFsTGVuZ3RoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hD
cmVhdGlvbihKU0dsb2JhbERhdGEmLCB1bnNpZ25lZCBpbml0aWFsTGVuZ3RoID0gMCk7CisgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTQXJyYXkqIHRyeUZpbmlzaENyZWF0aW9uVW5pbml0aWFs
aXplZChKU0dsb2JhbERhdGEmLCB1bnNpZ25lZCBpbml0aWFsTGVuZ3RoKTsKICAgICAKICAgICBw
dWJsaWM6CiAgICAgICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOwogCi0gICAgICAg
IH5KU0FycmF5KCk7Ci0gICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIH5KU0FycmF5KCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKICAgICAgICAgc3RhdGljIEpTQXJy
YXkqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCB1bnNpZ25lZCBpbml0aWFsTGVuZ3RoID0gMCkKICAgICAgICAgewpAQCAtMTU2LDEwICsxNTYs
MTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gYXJyYXktPnRyeUZpbmlz
aENyZWF0aW9uVW5pbml0aWFsaXplZChnbG9iYWxEYXRhLCBpbml0aWFsTGVuZ3RoKTsKICAgICAg
ICAgfQogCi0gICAgICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wg
dGhyb3dFeGNlcHRpb24pOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBk
ZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXIm
LCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHRocm93RXhjZXB0aW9uKTsKIAogICAgICAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Q
cm9wZXJ0eVNsb3RCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWdu
ZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRp
ZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgICAgICBzdGF0aWMgdm9pZCBwdXRCeUlu
ZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSk7
CiAKQEAgLTI1NCw3ICsyNTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVy
biBPQkpFQ1RfT0ZGU0VUT0YoSlNBcnJheSwgbV92ZWN0b3JMZW5ndGgpOwogICAgICAgICB9CiAK
LSAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYp
OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpT
Q2VsbCosIFNsb3RWaXNpdG9yJik7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xv
dCB8IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwg
SlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwpAQCAtMjY0LDggKzI2NCw4IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKICAgICAgICAgc3RhdGljIHZvaWQg
Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFy
cmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKIAotICAgICAgICB2b2lkKiBzdWJjbGFzc0RhdGEoKSBj
b25zdDsKLSAgICAgICAgdm9pZCBzZXRTdWJjbGFzc0RhdGEodm9pZCopOworICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkKiBzdWJjbGFzc0RhdGEoKSBjb25zdDsKKyAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBzZXRTdWJjbGFzc0RhdGEodm9pZCopOwogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgYm9vbCBpc0xlbmd0aFdyaXRhYmxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0J5dGVBcnJheS5oCmluZGV4IDc1NDc3NGQzZTczNDc1ZTE1MzUxNjFlZmQ2ZTlh
ZjJkZjhhZDRkYWYuLmQxZjRhZDYzMDMwODkwMjg4ODg2OGI3MDFiNGE3NDZmOGY3Zjk0N2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuaApAQCAtNzYsNyAr
NzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKLSAgICAg
ICAgSlNCeXRlQXJyYXkoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgQnl0ZUFycmF5KiBzdG9yYWdl
KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNCeXRlQXJyYXkoRXhlY1N0YXRlKiwgU3Ry
dWN0dXJlKiwgQnl0ZUFycmF5KiBzdG9yYWdlKTsKICAgICAgICAgCiAgICAgcHVibGljOgogICAg
ICAgICBzdGF0aWMgSlNCeXRlQXJyYXkqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBCeXRlQXJyYXkqIHN0b3JhZ2UpCkBAIC04NiwxNSArODYsMTUgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gYXJyYXk7CiAgICAgICAgIH0KIAotICAg
ICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwgSlNH
bG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgSlNDOjpDbGFzc0luZm8qID0g
JnNfaW5mbyk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJv
dG90eXBlLCBjb25zdCBKU0M6OkNsYXNzSW5mbyogPSAmc19pbmZvKTsKIAotICAgICAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSos
IGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYp
OwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQzo6SlND
ZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVy
dHlTbG90Jik7Ci0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihK
U09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0
b3ImKTsKLSAgICAgICAgc3RhdGljIHZvaWQgcHV0KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3Rh
dGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlLCBK
U0M6OlB1dFByb3BlcnR5U2xvdCYpOwotICAgICAgICBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpT
Qzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTQzo6
SlNWYWx1ZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5U2xvdChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CisgICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNDOjpK
U0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9w
ZXJ0eVNsb3QmKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmll
ciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgdm9pZCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlTbG90
Jik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlND
OjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpK
U1ZhbHVlKTsKIAotICAgICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6
SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBFbnVt
ZXJhdGlvbk1vZGUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRP
d25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJv
cGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogCiAgICAgICAgIHN0YXRpYyBKU19F
WFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAgICAgICAgIApAQCAtMTAzLDcgKzEw
Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBXVEY6OkJ5dGVBcnJheSogc3RvcmFnZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZS5nZXQoKTsgfQogCiAgICAgICAgIH5KU0J5dGVBcnJh
eSgpOwotICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAgICAgIHN0
YXRpYyBzaXplX3Qgb2Zmc2V0T2ZTdG9yYWdlKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpT
Qnl0ZUFycmF5LCBtX3N0b3JhZ2UpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ2VsbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
ZWxsLmgKaW5kZXggNDdlMzM2YTg2ZDA1MjUzNzVkOWQ0NGQzYzEyMzk3MDM5NTUwZjAwYy4uMTdh
OGM3ODk4ZDYxZWFjMjNmYzc0NTdhNWYwYTEyMWQxYTg5YTI3MyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsLmgKQEAgLTY3LDcgKzY3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIEpTQ2VsbChKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUq
KTsKLSAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKKyAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAgIHB1YmxpYzoK
ICAgICAgICAgLy8gUXVlcnlpbmcgdGhlIHR5cGUuCkBAIC04MiwyMSArODIsMjEgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHZvaWQgY2xlYXJTdHJ1Y3R1cmUoKSB7IG1fc3RydWN0dXJlLmNs
ZWFyKCk7IH0KIAogICAgICAgICAvLyBFeHRyYWN0aW5nIHRoZSB2YWx1ZS4KLSAgICAgICAgYm9v
bCBnZXRTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBVU3RyaW5nJikgY29uc3Q7Ci0gICAgICAgIFVT
dHJpbmcgZ2V0U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykgY29uc3Q7IC8vIG51bGwgc3RyaW5nIGlm
IG5vdCBhIHN0cmluZwotICAgICAgICBKU09iamVjdCogZ2V0T2JqZWN0KCk7IC8vIE5VTEwgaWYg
bm90IGFuIG9iamVjdAorICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGdldFN0cmluZyhF
eGVjU3RhdGUqIGV4ZWMsIFVTdHJpbmcmKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgVVN0cmluZyBnZXRTdHJpbmcoRXhlY1N0YXRlKiBleGVjKSBjb25zdDsgLy8gbnVsbCBzdHJp
bmcgaWYgbm90IGEgc3RyaW5nCisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBn
ZXRPYmplY3QoKTsgLy8gTlVMTCBpZiBub3QgYW4gb2JqZWN0CiAgICAgICAgIGNvbnN0IEpTT2Jq
ZWN0KiBnZXRPYmplY3QoKSBjb25zdDsgLy8gTlVMTCBpZiBub3QgYW4gb2JqZWN0CiAgICAgICAg
IAotICAgICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEm
KTsKLSAgICAgICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwq
LCBDb25zdHJ1Y3REYXRhJik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBDYWxs
VHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOworICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENv
bnN0cnVjdERhdGEmKTsKIAogICAgICAgICAvLyBCYXNpYyBjb252ZXJzaW9ucy4KLSAgICAgICAg
SlNWYWx1ZSB0b1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKSBj
b25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSB0b1ByaW1pdGl2ZShFeGVj
U3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKSBjb25zdDsKICAgICAgICAgYm9vbCBnZXRQ
cmltaXRpdmVOdW1iZXIoRXhlY1N0YXRlKiwgZG91YmxlJiBudW1iZXIsIEpTVmFsdWUmKSBjb25z
dDsKICAgICAgICAgYm9vbCB0b0Jvb2xlYW4oRXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgICAgIGRv
dWJsZSB0b051bWJlcihFeGVjU3RhdGUqKSBjb25zdDsKLSAgICAgICAgVVN0cmluZyB0b1N0cmlu
ZyhFeGVjU3RhdGUqKSBjb25zdDsKLSAgICAgICAgSlNPYmplY3QqIHRvT2JqZWN0KEV4ZWNTdGF0
ZSosIEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGRv
dWJsZSB0b051bWJlcihFeGVjU3RhdGUqKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgVVN0cmluZyB0b1N0cmluZyhFeGVjU3RhdGUqKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgSlNPYmplY3QqIHRvT2JqZWN0KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0Kikg
Y29uc3Q7CiAKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90
VmlzaXRvciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Z1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgK
aW5kZXggNTExOGY4YjEwNzkwM2ZkZDc2NWRhODU0MDJkZTA3YWVkYjM4NjYyYi4uYjhjZmQ3MTU3
ZmQ3YjMxMGRjMTBlNzk5YTIzOWUxMzk0NjAwOTNlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRnVuY3Rpb24uaApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICBjbGFzcyBKSVRDb21waWxlcjsKICAgICB9CiAKLSAgICBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSopOworICAg
IEpTX0VYUE9SVF9QUklWQVRFIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEhvc3RG
dW5jdGlvbkFzQ29uc3RydWN0b3IoRXhlY1N0YXRlKik7CiAKICAgICBjbGFzcyBKU0Z1bmN0aW9u
IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgICAgICBmcmllbmQgY2xhc3MgSklUOwpA
QCAtNTEsNyArNTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5
cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOwogCi0gICAgICAgIHN0YXRpYyBKU0Z1bmN0aW9u
KiBjcmVhdGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBpbnQgbGVuZ3RoLCBjb25zdCBJ
ZGVudGlmaWVyJiBuYW1lLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbiwgTmF0aXZlRnVu
Y3Rpb24gbmF0aXZlQ29uc3RydWN0b3IgPSBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3Rvcik7
CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGUoRXhl
Y1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBpbnQgbGVuZ3RoLCBjb25zdCBJZGVudGlmaWVyJiBu
YW1lLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gbmF0aXZl
Q29uc3RydWN0b3IgPSBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3Rvcik7CiAgICAgICAgIHN0
YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBpbnQg
bGVuZ3RoLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBOYXRpdmVFeGVjdXRhYmxlKiBuYXRpdmVF
eGVjdXRhYmxlKTsKIAogICAgICAgICBzdGF0aWMgSlNGdW5jdGlvbiogY3JlYXRlKEV4ZWNTdGF0
ZSogZXhlYywgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBTY29wZUNoYWluTm9kZSog
c2NvcGVDaGFpbikKQEAgLTY0LDcgKzY0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAog
ICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCi0gICAgICAgIGNvbnN0IFVT
dHJpbmcmIG5hbWUoRXhlY1N0YXRlKik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0
IFVTdHJpbmcmIG5hbWUoRXhlY1N0YXRlKik7CiAgICAgICAgIGNvbnN0IFVTdHJpbmcgZGlzcGxh
eU5hbWUoRXhlY1N0YXRlKik7CiAgICAgICAgIGNvbnN0IFVTdHJpbmcgY2FsY3VsYXRlZERpc3Bs
YXlOYW1lKEV4ZWNTdGF0ZSopOwogCkBAIC05NCw3ICs5NCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBpbmxpbmUgYm9vbCBpc0hvc3RGdW5jdGlvbigpIGNvbnN0OwogICAgICAgICBGdW5j
dGlvbkV4ZWN1dGFibGUqIGpzRXhlY3V0YWJsZSgpIGNvbnN0OwogCi0gICAgICAgIGNvbnN0IFNv
dXJjZUNvZGUqIHNvdXJjZUNvZGUoKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
Y29uc3QgU291cmNlQ29kZSogc291cmNlQ29kZSgpIGNvbnN0OwogCiAgICAgICAgIHN0YXRpYyBK
U19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKQEAgLTEyMyw3ICsxMjMsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIGNvbnN0IHN0YXRpYyB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IElt
cGxlbWVudHNIYXNJbnN0YW5jZSB8IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBPdmVycmlkZXNH
ZXRQcm9wZXJ0eU5hbWVzIHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogCi0gICAgICAgIEpT
RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKKyAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNGdW5jdGlvbihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSopOwogICAgICAgICBKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEZ1bmN0aW9u
RXhlY3V0YWJsZSosIFNjb3BlQ2hhaW5Ob2RlKik7CiAgICAgICAgIAogICAgICAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSosIE5hdGl2ZUV4ZWN1dGFibGUqLCBpbnQgbGVuZ3RoLCBj
b25zdCBJZGVudGlmaWVyJiBuYW1lKTsKQEAgLTE0MCw3ICsxNDAsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRv
ciYpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgYm9vbCBpc0hvc3RGdW5jdGlvbk5vbklubGlu
ZSgpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzSG9zdEZ1bmN0aW9u
Tm9uSW5saW5lKCkgY29uc3Q7CiAKICAgICAgICAgc3RhdGljIEpTVmFsdWUgYXJndW1lbnRzR2V0
dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKICAgICAgICAgc3Rh
dGljIEpTVmFsdWUgY2FsbGVyR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50
aWZpZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsRGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEu
Y3BwCmluZGV4IGRhYjNmMjRiYTE0NmUxZTcyNTRjOTQ3OTg0MTM0MjI1MTI4NzgwMGMuLjUwOGM1
MWViMTJiM2JmN2RiOTEzZDE4MDRmZDlhNjE0MGQwZmZhNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIGV4
dGVybiBjb25zdCBIYXNoVGFibGUgZ2xvYmFsT2JqZWN0VGFibGU7CiBleHRlcm4gY29uc3QgSGFz
aFRhYmxlIG1hdGhUYWJsZTsKIGV4dGVybiBjb25zdCBIYXNoVGFibGUgbnVtYmVyQ29uc3RydWN0
b3JUYWJsZTsKIGV4dGVybiBjb25zdCBIYXNoVGFibGUgbnVtYmVyUHJvdG90eXBlVGFibGU7Ci1l
eHRlcm4gY29uc3QgSGFzaFRhYmxlIG9iamVjdENvbnN0cnVjdG9yVGFibGU7CitKU19FWFBPUlRE
QVRBIGV4dGVybiBjb25zdCBIYXNoVGFibGUgb2JqZWN0Q29uc3RydWN0b3JUYWJsZTsKIGV4dGVy
biBjb25zdCBIYXNoVGFibGUgb2JqZWN0UHJvdG90eXBlVGFibGU7CiBleHRlcm4gY29uc3QgSGFz
aFRhYmxlIHJlZ0V4cFRhYmxlOwogZXh0ZXJuIGNvbnN0IEhhc2hUYWJsZSByZWdFeHBDb25zdHJ1
Y3RvclRhYmxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxEYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEu
aAppbmRleCBhNmFkOGE3NDdiN2U0YzczODFmMmNlOWJkMTlkYWFhNDJiNDdhMmEzLi5mM2I1NDE1
Mjc1Y2Y3MjkxZjg5MmY3MDkwNzg1NzljNjUzNmNkNjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaApAQCAtMTM0LDE4ICsxMzQsMTggQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIGVudW0gR2xvYmFsRGF0YVR5cGUgeyBEZWZhdWx0LCBBUElDb250
ZXh0R3JvdXAsIEFQSVNoYXJlZCB9OwogICAgICAgICAKICAgICAgICAgc3RydWN0IENsaWVudERh
dGEgewotICAgICAgICAgICAgdmlydHVhbCB+Q2xpZW50RGF0YSgpID0gMDsKKyAgICAgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgfkNsaWVudERhdGEoKSA9IDA7CiAgICAgICAgIH07
CiAKICAgICAgICAgYm9vbCBpc1NoYXJlZEluc3RhbmNlKCkgeyByZXR1cm4gZ2xvYmFsRGF0YVR5
cGUgPT0gQVBJU2hhcmVkOyB9CiAgICAgICAgIGJvb2wgdXNpbmdBUEkoKSB7IHJldHVybiBnbG9i
YWxEYXRhVHlwZSAhPSBEZWZhdWx0OyB9CiAgICAgICAgIHN0YXRpYyBib29sIHNoYXJlZEluc3Rh
bmNlRXhpc3RzKCk7Ci0gICAgICAgIHN0YXRpYyBKU0dsb2JhbERhdGEmIHNoYXJlZEluc3RhbmNl
KCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0dsb2JhbERhdGEmIHNoYXJl
ZEluc3RhbmNlKCk7CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBj
cmVhdGUoVGhyZWFkU3RhY2tUeXBlLCBIZWFwU2l6ZSA9IFNtYWxsSGVhcCk7Ci0gICAgICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4gY3JlYXRlTGVha2VkKFRocmVhZFN0YWNrVHlw
ZSwgSGVhcFNpemUgPSBTbWFsbEhlYXApOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgUGFzc1JlZlB0cjxKU0dsb2JhbERhdGE+IGNyZWF0ZShUaHJlYWRTdGFja1R5cGUsIEhlYXBT
aXplID0gU21hbGxIZWFwKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NS
ZWZQdHI8SlNHbG9iYWxEYXRhPiBjcmVhdGVMZWFrZWQoVGhyZWFkU3RhY2tUeXBlLCBIZWFwU2l6
ZSA9IFNtYWxsSGVhcCk7CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4g
Y3JlYXRlQ29udGV4dEdyb3VwKFRocmVhZFN0YWNrVHlwZSwgSGVhcFNpemUgPSBTbWFsbEhlYXAp
OwotICAgICAgICB+SlNHbG9iYWxEYXRhKCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIH5K
U0dsb2JhbERhdGEoKTsKIAogICAgICAgICB2b2lkIG1ha2VVc2FibGVGcm9tTXVsdGlwbGVUaHJl
YWRzKCkgeyBoZWFwLm1hY2hpbmVUaHJlYWRzKCkubWFrZVVzYWJsZUZyb21NdWx0aXBsZVRocmVh
ZHMoKTsgfQogCkBAIC0zMDgsMjEgKzMwOCwyMSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAg
ICBDYWNoZWRUcmFuc2NlbmRlbnRhbEZ1bmN0aW9uPHNpbj4gY2FjaGVkU2luOwogCi0gICAgICAg
IHZvaWQgcmVzZXREYXRlQ2FjaGUoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBy
ZXNldERhdGVDYWNoZSgpOwogCi0gICAgICAgIHZvaWQgc3RhcnRTYW1wbGluZygpOwotICAgICAg
ICB2b2lkIHN0b3BTYW1wbGluZygpOwotICAgICAgICB2b2lkIGR1bXBTYW1wbGVEYXRhKEV4ZWNT
dGF0ZSogZXhlYyk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc3RhcnRTYW1wbGlu
ZygpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHN0b3BTYW1wbGluZygpOworICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGR1bXBTYW1wbGVEYXRhKEV4ZWNTdGF0ZSogZXhl
Yyk7CiAgICAgICAgIHZvaWQgcmVjb21waWxlQWxsSlNGdW5jdGlvbnMoKTsKICAgICAgICAgUmVn
RXhwQ2FjaGUqIHJlZ0V4cENhY2hlKCkgeyByZXR1cm4gbV9yZWdFeHBDYWNoZTsgfQogI2lmIEVO
QUJMRShSRUdFWFBfVFJBQ0lORykKICAgICAgICAgdm9pZCBhZGRSZWdFeHBUb1RyYWNlKFBhc3NS
ZWZQdHI8UmVnRXhwPiByZWdFeHApOwogI2VuZGlmCi0gICAgICAgIHZvaWQgZHVtcFJlZ0V4cFRy
YWNlKCk7Ci0gICAgICAgIHZvaWQgY2xlYXJCdWlsdGluU3RydWN0dXJlcygpOworICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSB2b2lkIGR1bXBSZWdFeHBUcmFjZSgpOworICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSB2b2lkIGNsZWFyQnVpbHRpblN0cnVjdHVyZXMoKTsKIAogICAgICAgICBib29s
IGlzQ29sbGVjdG9yQnVzeSgpIHsgcmV0dXJuIGhlYXAuaXNCdXN5KCk7IH0KLSAgICAgICAgdm9p
ZCByZWxlYXNlRXhlY3V0YWJsZU1lbW9yeSgpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2
b2lkIHJlbGVhc2VFeGVjdXRhYmxlTWVtb3J5KCk7CiAKICNpZiBFTkFCTEUoR0NfVkFMSURBVElP
TikKICAgICAgICAgYm9vbCBpc0luaXRpYWxpemluZ09iamVjdCgpIGNvbnN0OyAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDFjYWE4YjE4
NzZmZDAxMWIzZWMwOTFjNWZhMTJhZDQ0ZTM1YTQ0YTguLjRjODIwMGE3NmQwYzhiZjM1MGQzYTgy
MWNjNWI3MmM3Njg1NWI1YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaApAQCAtMTkyLDIwICsxOTIsMjAgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIH0KIAogICAgIHB1YmxpYzoKLSAgICAgICAgfkpTR2xvYmFsT2JqZWN0KCk7Ci0gICAg
ICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIH5KU0dsb2JhbE9iamVjdCgpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
dm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCi0gICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCi0gICAgICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElk
ZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgICAgICBib29sIGhh
c093blByb3BlcnR5Rm9yV3JpdGUoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYpOwotICAg
ICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmll
ciYsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYs
IEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogCi0gICAgICAgIHN0YXRpYyB2b2lkIHB1dFdp
dGhBdHRyaWJ1dGVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0V2l0aEF0dHJpYnV0ZXMoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVk
IGF0dHJpYnV0ZXMpOwogCi0gICAgICAgIHN0YXRpYyB2b2lkIGRlZmluZUdldHRlcihKU09iamVj
dCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPYmplY3Qq
IGdldHRlckZ1bmMsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwotICAgICAgICBzdGF0aWMgdm9pZCBk
ZWZpbmVTZXR0ZXIoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIEpTT2JqZWN0KiBzZXR0ZXJGdW5jLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKKyAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZGVmaW5lR2V0dGVyKEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU09iamVjdCog
Z2V0dGVyRnVuYywgdW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyB2b2lkIGRlZmluZVNldHRlcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPYmplY3QqIHNldHRlckZ1bmMsIHVuc2lnbmVk
IGF0dHJpYnV0ZXMpOwogCiAgICAgICAgIC8vIFdlIHVzZSB0aGlzIGluIHRoZSBjb2RlIGdlbmVy
YXRvciBhcyB3ZSBwZXJmb3JtIHN5bWJvbCB0YWJsZQogICAgICAgICAvLyBsb29rdXBzIHByaW9y
IHRvIGluaXRpYWxpemluZyB0aGUgcHJvcGVydGllcwpAQCAtMjgzLDcgKzI4Myw3IEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgICAgIFNjb3BlQ2hhaW5Ob2RlKiBnbG9iYWxTY29wZUNoYWluKCkg
eyByZXR1cm4gbV9nbG9iYWxTY29wZUNoYWluLmdldCgpOyB9CiAKLSAgICAgICAgRXhlY1N0YXRl
KiBnbG9iYWxFeGVjKCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEV4ZWNTdGF0ZSogZ2xv
YmFsRXhlYygpOwogCiAgICAgICAgIHN0YXRpYyBib29sIHNob3VsZEludGVycnVwdFNjcmlwdChj
b25zdCBKU0dsb2JhbE9iamVjdCopIHsgcmV0dXJuIHRydWU7IH0KIApAQCAtMzMyLDE3ICszMzIs
MTcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlOwogICAgICAg
ICAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKICAgICAgICAgfTsKLSAgICAgICAgdm9pZCBhZGRT
dGF0aWNHbG9iYWxzKEdsb2JhbFByb3BlcnR5SW5mbyosIGludCBjb3VudCk7CisgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIHZvaWQgYWRkU3RhdGljR2xvYmFscyhHbG9iYWxQcm9wZXJ0eUluZm8q
LCBpbnQgY291bnQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgLy8gRklYTUU6IEZvbGQgcmVz
ZXQgaW50byBpbml0LgotICAgICAgICB2b2lkIGluaXQoSlNPYmplY3QqIHRoaXNWYWx1ZSk7Cisg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgaW5pdChKU09iamVjdCogdGhpc1ZhbHVlKTsK
ICAgICAgICAgdm9pZCByZXNldChKU1ZhbHVlIHByb3RvdHlwZSk7CiAKICAgICAgICAgdm9pZCBj
cmVhdGVUaHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqKTsKIAogICAgICAgICB2b2lkIHNldFJlZ2lz
dGVycyhXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHJlZ2lzdGVycywgUGFzc093bkFycmF5UHRyPFdy
aXRlQmFycmllcjxVbmtub3duPiA+IHJlZ2lzdGVyQXJyYXksIHNpemVfdCBjb3VudCk7Ci0gICAg
ICAgIHN0YXRpYyB2b2lkIGNsZWFyUmFyZURhdGEoSlNDZWxsKik7CisgICAgICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyB2b2lkIGNsZWFyUmFyZURhdGEoSlNDZWxsKik7CiAgICAgfTsKIAog
ICAgIEpTR2xvYmFsT2JqZWN0KiBhc0dsb2JhbE9iamVjdChKU1ZhbHVlKTsKQEAgLTQ4OCw3ICs0
ODgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBEeW5hbWljR2xvYmFsT2JqZWN0U2Nv
cGUgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEeW5hbWljR2xvYmFsT2JqZWN0U2Nv
cGUpOwogICAgIHB1YmxpYzoKLSAgICAgICAgRHluYW1pY0dsb2JhbE9iamVjdFNjb3BlKEpTR2xv
YmFsRGF0YSYsIEpTR2xvYmFsT2JqZWN0Kik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIER5
bmFtaWNHbG9iYWxPYmplY3RTY29wZShKU0dsb2JhbERhdGEmLCBKU0dsb2JhbE9iamVjdCopOwog
CiAgICAgICAgIH5EeW5hbWljR2xvYmFsT2JqZWN0U2NvcGUoKQogICAgICAgICB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbFRoaXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsVGhpcy5oCmluZGV4IGZhNWRlMDQ5MWNk
MDUyZTlmYmVhOGRlZmM0YTVjZmNiZGFhMmE4ZmIuLmZhNWMyZWIzNGQ2MmNkYzk5MDkzMmNjN2I4
YzE0MmNmMWU5MjY2YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsVGhpcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsVGhpcy5oCkBAIC02Myw3ICs2Myw3IEBAIHByb3RlY3RlZDoKIAogICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBCYXNl
OjpTdHJ1Y3R1cmVGbGFnczsKIAotICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiwgU2xvdFZpc2l0b3ImKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCB2aXNp
dENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKICAgICBXcml0ZUJhcnJpZXI8SlNH
bG9iYWxPYmplY3Q+IG1fdW53cmFwcGVkT2JqZWN0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNMb2NrLmgKaW5kZXggN2IwN2I0ZmIzZGE1ZTRlODJlMDA1YzUyNDQ1NjVjOWE2NzBi
Zjg3Zi4uYTBlYjk2OTc1YTY1OTcwMGIyMjE0MDI2ZDkwYmY0Mjc0YjFkNDM0ZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmgKQEAgLTU2LDcgKzU2LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgY2xhc3MgSlNMb2NrIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
SlNMb2NrKTsKICAgICBwdWJsaWM6Ci0gICAgICAgIEpTTG9jayhFeGVjU3RhdGUqKTsKKyAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNMb2NrKEV4ZWNTdGF0ZSopOwogICAgICAgICBKU0xvY2so
SlNHbG9iYWxEYXRhKik7CiAKICAgICAgICAgSlNMb2NrKEpTTG9ja0JlaGF2aW9yIGxvY2tCZWhh
dmlvcikKQEAgLTgwLDIyICs4MCwyMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHVu
bG9jayhtX2xvY2tCZWhhdmlvcik7IAogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBzdGF0
aWMgdm9pZCBsb2NrKEpTTG9ja0JlaGF2aW9yKTsKLSAgICAgICAgc3RhdGljIHZvaWQgdW5sb2Nr
KEpTTG9ja0JlaGF2aW9yKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQg
bG9jayhKU0xvY2tCZWhhdmlvcik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2
b2lkIHVubG9jayhKU0xvY2tCZWhhdmlvcik7CiAgICAgICAgIHN0YXRpYyB2b2lkIGxvY2soRXhl
Y1N0YXRlKik7CiAgICAgICAgIHN0YXRpYyB2b2lkIHVubG9jayhFeGVjU3RhdGUqKTsKIAotICAg
ICAgICBzdGF0aWMgaW50cHRyX3QgbG9ja0NvdW50KCk7Ci0gICAgICAgIHN0YXRpYyBib29sIGN1
cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2NrKCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBpbnRwdHJfdCBsb2NrQ291bnQoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIGJvb2wgY3VycmVudFRocmVhZElzSG9sZGluZ0xvY2soKTsKIAogICAgICAgICBKU0xvY2tC
ZWhhdmlvciBtX2xvY2tCZWhhdmlvcjsKIAogICAgICAgICBjbGFzcyBEcm9wQWxsTG9ja3Mgewog
ICAgICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRHJvcEFsbExvY2tzKTsKICAgICAgICAg
cHVibGljOgotICAgICAgICAgICAgRHJvcEFsbExvY2tzKEV4ZWNTdGF0ZSogZXhlYyk7Ci0gICAg
ICAgICAgICBEcm9wQWxsTG9ja3MoSlNMb2NrQmVoYXZpb3IpOwotICAgICAgICAgICAgfkRyb3BB
bGxMb2NrcygpOworICAgICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgRHJvcEFsbExvY2tzKEV4
ZWNTdGF0ZSogZXhlYyk7CisgICAgICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBEcm9wQWxsTG9j
a3MoSlNMb2NrQmVoYXZpb3IpOworICAgICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgfkRyb3BB
bGxMb2NrcygpOwogICAgICAgICAgICAgCiAgICAgICAgIHByaXZhdGU6CiAgICAgICAgICAgICBp
bnRwdHJfdCBtX2xvY2tDb3VudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5oCmluZGV4IDg0Mzg1NGI1Yjg1N2NhZjU5YWQwOTdjYjMwMDQ0OGU4OTZjYTc4YjQuLjNhNzY3
ODdiNTNiYTRkMjQ0ODkzNTEwNzA5NDg5YzlhNjA2YTE4NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtNTUsNyArNTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICBjbGFzcyBTdHJ1Y3R1cmU7CiAgICAgc3RydWN0IEhhc2hUYWJsZTsKIAotICAgIEpTT2Jq
ZWN0KiB0aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBVU3RyaW5nJik7CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0
IFVTdHJpbmcmKTsKICAgICBleHRlcm4gSlNfRVhQT1JUREFUQSBjb25zdCBjaGFyKiBTdHJpY3RN
b2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3I7CiAKICAgICAvLyBFQ01BIDI2Mi0zIDguNi4x
CkBAIC03NCwxNiArNzQsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGZyaWVuZCBjbGFz
cyBKSVQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKU0NlbGw7CiAgICAgICAgIGZyaWVuZCBjbGFz
cyBNYXJrZWRCbG9jazsKLSAgICAgICAgZnJpZW5kIGJvb2wgc2V0VXBTdGF0aWNGdW5jdGlvblNs
b3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNoRW50cnkqIGVudHJ5LCBKU09iamVjdCogdGhp
c09iaiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBmcmllbmQgYm9vbCBzZXRVcFN0YXRpY0Z1bmN0
aW9uU2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hFbnRyeSogZW50cnksIEpTT2JqZWN0
KiB0aGlzT2JqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYg
c2xvdCk7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CiAKLSAg
ICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKKyAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAotICAgICAgICBzdGF0aWMgdm9p
ZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisgICAgICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3Im
KTsKIAotICAgICAgICBzdGF0aWMgVVN0cmluZyBjbGFzc05hbWUoY29uc3QgSlNPYmplY3QqKTsK
KyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFVTdHJpbmcgY2xhc3NOYW1lKGNvbnN0
IEpTT2JqZWN0Kik7CiAKICAgICAgICAgc3RhdGljIHZvaWQgZmluYWxpemUoSlNDZWxsKik7CiAK
QEAgLTk4LDQ3ICs5OCw0NyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBib29sIGdldFBy
b3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYpOwogICAgICAgICBib29sIGdldFByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCB1
bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgICAgICBib29sIGdldFBy
b3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29s
IGdldFByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogCiAgICAgICAgIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Q
cm9wZXJ0eVNsb3RCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5
RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9w
ZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKLSAgICAgICAgc3Rh
dGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHN0YXRpYyB2b2lk
IHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0KEpTQ2Vs
bCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwg
UHV0UHJvcGVydHlTbG90Jik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lk
IHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlKTsKIAogICAgICAgICAvLyBwdXRXaXRoQXR0cmlidXRlcyBpcyBlZmZlY3RpdmVseSBh
biB1bmNoZWNrZWQgdmVzaW9uIG9mICdkZWZpbmVPd25Qcm9wZXJ0eSc6CiAgICAgICAgIC8vICAt
IHRoZSBwcm90b3R5cGUgY2hhaW4gaXMgbm90IGNvbnN1bHRlZAogICAgICAgICAvLyAgLSBhY2Nl
c3NvcnMgYXJlIG5vdCBjYWxsZWQuCiAgICAgICAgIC8vICAtIGF0dHJpYnV0ZXMgd2lsbCBiZSBy
ZXNwZWN0ZWQgKGFmdGVyIHRoZSBjYWxsIHRoZSBwcm9wZXJ0eSB3aWxsIGV4aXN0IHdpdGggdGhl
IGdpdmVuIGF0dHJpYnV0ZXMpCi0gICAgICAgIHN0YXRpYyB2b2lkIHB1dFdpdGhBdHRyaWJ1dGVz
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKLSAgICAgICAgdm9pZCBwdXRXaXRoQXR0cmli
dXRlcyhKU0dsb2JhbERhdGEqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgdm9pZCBwdXRXaXRoQXR0cmlidXRlcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7Cisg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcHV0V2l0aEF0dHJpYnV0ZXMoSlNHbG9iYWxE
YXRhKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzKTsKIAogICAgICAgICBib29sIHByb3BlcnR5SXNFbnVtZXJhYmxlKEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkgY29uc3Q7CiAKLSAgICAgICAgYm9v
bCBoYXNQcm9wZXJ0eShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUp
IGNvbnN0OwotICAgICAgICBib29sIGhhc1Byb3BlcnR5KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHBy
b3BlcnR5TmFtZSkgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaGFzUHJv
cGVydHkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKSBjb25zdDsK
KyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBoYXNQcm9wZXJ0eShFeGVjU3RhdGUqLCB1
bnNpZ25lZCBwcm9wZXJ0eU5hbWUpIGNvbnN0OwogICAgICAgICBib29sIGhhc093blByb3BlcnR5
KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkgY29uc3Q7CiAKLSAg
ICAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKLSAgICAgICAgc3RhdGljIGJvb2wgZGVsZXRl
UHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFt
ZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7Cisg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRl
eChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogCi0gICAgICAg
IHN0YXRpYyBKU1ZhbHVlIGRlZmF1bHRWYWx1ZShjb25zdCBKU09iamVjdCosIEV4ZWNTdGF0ZSos
IFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgSlNWYWx1ZSBkZWZhdWx0VmFsdWUoY29uc3QgSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcmVm
ZXJyZWRQcmltaXRpdmVUeXBlKTsKIAotICAgICAgICBzdGF0aWMgYm9vbCBoYXNJbnN0YW5jZShK
U09iamVjdCosIEV4ZWNTdGF0ZSosIEpTVmFsdWUsIEpTVmFsdWUgcHJvdG90eXBlUHJvcGVydHkp
OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBoYXNJbnN0YW5jZShKU09i
amVjdCosIEV4ZWNTdGF0ZSosIEpTVmFsdWUsIEpTVmFsdWUgcHJvdG90eXBlUHJvcGVydHkpOwog
Ci0gICAgICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7Ci0gICAgICAgIHN0
YXRpYyB2b2lkIGdldFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CisgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyB2b2lkIGdldFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAKICAgICAgICAgSlNWYWx1
ZSB0b1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlID0gTm9QcmVm
ZXJlbmNlKSBjb25zdDsKLSAgICAgICAgYm9vbCB0b0Jvb2xlYW4oRXhlY1N0YXRlKikgY29uc3Q7
CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgdG9Cb29sZWFuKEV4ZWNTdGF0ZSopIGNv
bnN0OwogICAgICAgICBib29sIGdldFByaW1pdGl2ZU51bWJlcihFeGVjU3RhdGUqLCBkb3VibGUm
IG51bWJlciwgSlNWYWx1ZSYpIGNvbnN0OwotICAgICAgICBkb3VibGUgdG9OdW1iZXIoRXhlY1N0
YXRlKikgY29uc3Q7Ci0gICAgICAgIFVTdHJpbmcgdG9TdHJpbmcoRXhlY1N0YXRlKikgY29uc3Q7
CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGRvdWJsZSB0b051bWJlcihFeGVjU3RhdGUqKSBj
b25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgVVN0cmluZyB0b1N0cmluZyhFeGVjU3Rh
dGUqKSBjb25zdDsKIAogICAgICAgICAvLyBOT1RFOiBKU09iamVjdCBhbmQgaXRzIHN1YmNsYXNz
ZXMgbXVzdCBiZSBhYmxlIHRvIGdyYWNlZnVsbHkgaGFuZGxlIEV4ZWNTdGF0ZSogPSAwLAogICAg
ICAgICAvLyBiZWNhdXNlIHRoaXMgY2FsbCBtYXkgY29tZSBmcm9tIGluc2lkZSB0aGUgY29tcGls
ZXIuCi0gICAgICAgIHN0YXRpYyBKU09iamVjdCogdG9UaGlzT2JqZWN0KEpTQ2VsbCosIEV4ZWNT
dGF0ZSopOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNPYmplY3QqIHRvVGhp
c09iamVjdChKU0NlbGwqLCBFeGVjU3RhdGUqKTsKICAgICAgICAgSlNPYmplY3QqIHVud3JhcHBl
ZE9iamVjdCgpOwogCiAgICAgICAgIGJvb2wgZ2V0UHJvcGVydHlTcGVjaWZpY1ZhbHVlKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0NlbGwqJiBzcGVj
aWZpY0Z1bmN0aW9uKSBjb25zdDsKQEAgLTE5MSwxNCArMTkxLDE0IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB2b2lkIHB1dERpcmVjdE9mZnNldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IHNpemVfdCBvZmZzZXQsIEpTVmFsdWUgdmFsdWUpIHsgcHJvcGVydHlTdG9yYWdlKClbb2Zmc2V0
XS5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgdmFsdWUpOyB9CiAgICAgICAgIHZvaWQgcHV0VW5kZWZp
bmVkQXREaXJlY3RPZmZzZXQoc2l6ZV90IG9mZnNldCkgeyBwcm9wZXJ0eVN0b3JhZ2UoKVtvZmZz
ZXRdLnNldFVuZGVmaW5lZCgpOyB9CiAKLSAgICAgICAgdm9pZCBmaWxsR2V0dGVyUHJvcGVydHlT
bG90KFByb3BlcnR5U2xvdCYsIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGxvY2F0aW9uKTsK
KyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaWxsR2V0dGVyUHJvcGVydHlTbG90KFBy
b3BlcnR5U2xvdCYsIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGxvY2F0aW9uKTsKICAgICAg
ICAgdm9pZCBpbml0aWFsaXplR2V0dGVyU2V0dGVyUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYsIEdldHRlclNldHRlciosIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogCi0gICAg
ICAgIHN0YXRpYyB2b2lkIGRlZmluZUdldHRlcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPYmplY3QqIGdldHRlckZ1bmN0aW9uLCB1bnNp
Z25lZCBhdHRyaWJ1dGVzID0gMCk7Ci0gICAgICAgIHN0YXRpYyB2b2lkIGRlZmluZVNldHRlcihK
U09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNP
YmplY3QqIHNldHRlckZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gMCk7Ci0gICAgICAg
IEpTVmFsdWUgbG9va3VwR2V0dGVyKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSk7Ci0gICAgICAgIEpTVmFsdWUgbG9va3VwU2V0dGVyKEV4ZWNTdGF0ZSosIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7Ci0gICAgICAgIHN0YXRpYyBib29sIGRlZmluZU93
blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKKyAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZGVmaW5lR2V0dGVyKEpTT2JqZWN0KiwgRXhl
Y1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU09iamVjdCogZ2V0dGVy
RnVuY3Rpb24sIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAwKTsKKyAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIHZvaWQgZGVmaW5lU2V0dGVyKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU09iamVjdCogc2V0dGVyRnVuY3Rpb24sIHVu
c2lnbmVkIGF0dHJpYnV0ZXMgPSAwKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1
ZSBsb29rdXBHZXR0ZXIoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBsb29rdXBTZXR0ZXIoRXhlY1N0
YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYs
IGJvb2wgc2hvdWxkVGhyb3cpOwogCiAgICAgICAgIGJvb2wgaXNHbG9iYWxPYmplY3QoKSBjb25z
dDsKICAgICAgICAgYm9vbCBpc1ZhcmlhYmxlT2JqZWN0KCkgY29uc3Q7CkBAIC0yMDgsNyArMjA4
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBzZWFsKEpTR2xvYmFsRGF0YSYp
OwogICAgICAgICB2b2lkIGZyZWV6ZShKU0dsb2JhbERhdGEmKTsKLSAgICAgICAgdm9pZCBwcmV2
ZW50RXh0ZW5zaW9ucyhKU0dsb2JhbERhdGEmKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCBwcmV2ZW50RXh0ZW5zaW9ucyhKU0dsb2JhbERhdGEmKTsKICAgICAgICAgYm9vbCBpc1Nl
YWxlZChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpIHsgcmV0dXJuIHN0cnVjdHVyZSgpLT5pc1Nl
YWxlZChnbG9iYWxEYXRhKTsgfQogICAgICAgICBib29sIGlzRnJvemVuKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSkgeyByZXR1cm4gc3RydWN0dXJlKCktPmlzRnJvemVuKGdsb2JhbERhdGEpOyB9
CiAgICAgICAgIGJvb2wgaXNFeHRlbnNpYmxlKCkgeyByZXR1cm4gc3RydWN0dXJlKCktPmlzRXh0
ZW5zaWJsZSgpOyB9CkBAIC0yMTYsNyArMjE2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IGJvb2wgc3RhdGljRnVuY3Rpb25zUmVpZmllZCgpIHsgcmV0dXJuIHN0cnVjdHVyZSgpLT5zdGF0
aWNGdW5jdGlvbnNSZWlmaWVkKCk7IH0KICAgICAgICAgdm9pZCByZWlmeVN0YXRpY0Z1bmN0aW9u
c0ZvckRlbGV0ZShFeGVjU3RhdGUqIGV4ZWMpOwogCi0gICAgICAgIHZvaWQgYWxsb2NhdGVQcm9w
ZXJ0eVN0b3JhZ2UoSlNHbG9iYWxEYXRhJiwgc2l6ZV90IG9sZFNpemUsIHNpemVfdCBuZXdTaXpl
KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBhbGxvY2F0ZVByb3BlcnR5U3RvcmFn
ZShKU0dsb2JhbERhdGEmLCBzaXplX3Qgb2xkU2l6ZSwgc2l6ZV90IG5ld1NpemUpOwogICAgICAg
ICBib29sIGlzVXNpbmdJbmxpbmVTdG9yYWdlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
Y29uc3Qgdm9pZCo+KG1fcHJvcGVydHlTdG9yYWdlLmdldCgpKSA9PSBzdGF0aWNfY2FzdDxjb25z
dCB2b2lkKj4odGhpcyArIDEpOyB9CiAKICAgICAgICAgdm9pZCogYWRkcmVzc09mUHJvcGVydHlT
dG9yYWdlKCkKQEAgLTMyNiw3ICszMjYsNyBAQCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVj
dF9pbmxpbmVTdG9yYWdlQ2FwYWNpdHkgPj0gSlNOb25GaW5hbE9iamVjdF9pbmxpbmVTdAogICAg
ICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksICZzX2lu
Zm8pOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsK
KyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsK
IAogICAgIHByb3RlY3RlZDoKICAgICAgICAgZXhwbGljaXQgSlNOb25GaW5hbE9iamVjdChKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKaW5kZXggM2E2NzdhZjBkMGM1NWMzYmQwMzE0ZDMy
Y2U1MmI4ZTNkZDY1NTcyZS4uN2NhOTBkZTE3YWUyZTNhN2MwY2YxNGI4MmZiMjdhYWNmOWZjMzQ4
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCkBAIC0yMTQsNyAr
MjE0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCgpIHsgcmV0
dXJuIG1fbGVuZ3RoOyB9CiAKICAgICAgICAgSlNWYWx1ZSB0b1ByaW1pdGl2ZShFeGVjU3RhdGUq
LCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKSBjb25zdDsKLSAgICAgICAgYm9vbCB0b0Jvb2xlYW4o
RXhlY1N0YXRlKikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgdG9Cb29s
ZWFuKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgICBib29sIGdldFByaW1pdGl2ZU51bWJlcihF
eGVjU3RhdGUqLCBkb3VibGUmIG51bWJlciwgSlNWYWx1ZSYpIGNvbnN0OwogICAgICAgICBKU09i
amVjdCogdG9PYmplY3QoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKICAgICAg
ICAgVVN0cmluZyB0b1N0cmluZyhFeGVjU3RhdGUqKSBjb25zdDsKQEAgLTI0MSw3ICsyNDEsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0Nl
bGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCByZXNvbHZl
Um9wZShFeGVjU3RhdGUqKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBy
ZXNvbHZlUm9wZShFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAgdm9pZCByZXNvbHZlUm9wZVNs
b3dDYXNlOChMQ2hhciopIGNvbnN0OwogICAgICAgICB2b2lkIHJlc29sdmVSb3BlU2xvd0Nhc2Uo
VUNoYXIqKSBjb25zdDsKICAgICAgICAgdm9pZCBvdXRPZk1lbW9yeShFeGVjU3RhdGUqKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAppbmRleCAxOTczODEyNjEx
Mzg1ODQ5MzU1NjZiMDdhMjRlYWVkMWY2NDJmNWJiLi5kZTVlMTgxNDM2OTM4ZGJmZDRhNDg3OTQ0
YTU4MmMxNDZjN2QzNDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1ZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5o
CkBAIC05Myw3ICs5Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH07CiAKICAgICAvLyBUaGlz
IGltcGxlbWVudHMgVG9JbnQzMiwgZGVmaW5lZCBpbiBFQ01BLTI2MiA5LjUuCi0gICAgaW50MzJf
dCB0b0ludDMyKGRvdWJsZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgaW50MzJfdCB0b0ludDMy
KGRvdWJsZSk7CiAKICAgICAvLyBUaGlzIGltcGxlbWVudHMgVG9VSW50MzIsIGRlZmluZWQgaW4g
RUNNQS0yNjIgOS42LgogICAgIGlubGluZSB1aW50MzJfdCB0b1VJbnQzMihkb3VibGUgbnVtYmVy
KQpAQCAtMjAzLDcgKzIwMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU09iamVjdCog
dG9PYmplY3QoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKIAogICAgICAgICAv
LyBJbnRlZ2VyIGNvbnZlcnNpb25zLgotICAgICAgICBkb3VibGUgdG9JbnRlZ2VyKEV4ZWNTdGF0
ZSopIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBkb3VibGUgdG9JbnRlZ2VyKEV4
ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgICBkb3VibGUgdG9JbnRlZ2VyUHJlc2VydmVOYU4oRXhl
Y1N0YXRlKikgY29uc3Q7CiAgICAgICAgIGludDMyX3QgdG9JbnQzMihFeGVjU3RhdGUqKSBjb25z
dDsKICAgICAgICAgdWludDMyX3QgdG9VSW50MzIoRXhlY1N0YXRlKikgY29uc3Q7CkBAIC0yMzEs
NyArMjMxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgYm9vbCBpc0NlbGwoKSBjb25z
dDsKICAgICAgICAgSlNDZWxsKiBhc0NlbGwoKSBjb25zdDsKLSAgICAgICAgYm9vbCBpc1ZhbGlk
Q2FsbGVlKCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNWYWxpZENhbGxlZSgp
OwogCiAjaWZuZGVmIE5ERUJVRwogICAgICAgICBjaGFyKiBkZXNjcmlwdGlvbigpOwpAQCAtMjQ0
LDExICsyNDQsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTVmFsdWUoSGFzaFRhYmxl
RGVsZXRlZFZhbHVlVGFnKTsKIAogICAgICAgICBpbmxpbmUgY29uc3QgSlNWYWx1ZSBhc1ZhbHVl
KCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KLSAgICAgICAgZG91YmxlIHRvTnVtYmVyU2xvd0Nh
c2UoRXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgICAgIEpTT2JqZWN0KiB0b09iamVjdFNsb3dDYXNl
KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7Ci0gICAgICAgIEpTT2JqZWN0KiB0
b1RoaXNPYmplY3RTbG93Q2FzZShFeGVjU3RhdGUqKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgZG91YmxlIHRvTnVtYmVyU2xvd0Nhc2UoRXhlY1N0YXRlKikgY29uc3Q7CisgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0b09iamVjdFNsb3dDYXNlKEV4ZWNTdGF0
ZSosIEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEpT
T2JqZWN0KiB0b1RoaXNPYmplY3RTbG93Q2FzZShFeGVjU3RhdGUqKSBjb25zdDsKIAotICAgICAg
ICBKU09iamVjdCogc3ludGhlc2l6ZVByb3RvdHlwZShFeGVjU3RhdGUqKSBjb25zdDsKKyAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHN5bnRoZXNpemVQcm90b3R5cGUoRXhlY1N0
YXRlKikgY29uc3Q7CiAgICAgICAgIEpTT2JqZWN0KiBzeW50aGVzaXplT2JqZWN0KEV4ZWNTdGF0
ZSopIGNvbnN0OwogCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAppbmRleCA3OGU2MjRlMDJjZmY5YjVm
MDYxYWJkMGIzNDYxNjFlMmIyZjg0YjliLi4wODY1OWIxMmNhMTUyMzAyODFhNTFkYzdmN2IzMDA3
OGMwZDhjZGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Zh
cmlhYmxlT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJp
YWJsZU9iamVjdC5oCkBAIC00OCwxMiArNDgsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAg
ICAgU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlKCkgY29uc3QgeyByZXR1cm4gKm1fc3ltYm9sVGFi
bGU7IH0KIAotICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAgICAg
IHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIHB1dFdpdGhBdHRyaWJ1dGVzKEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUsIHVuc2lnbmVk
IGF0dHJpYnV0ZXMpOwogCi0gICAgICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImKTsKLSAgICAgICAgc3RhdGljIHZvaWQg
Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFy
cmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmll
ciYpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0
eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJh
dGlvbk1vZGUpOwogICAgICAgICAKICAgICAgICAgYm9vbCBpc0R5bmFtaWNTY29wZShib29sJiBy
ZXF1aXJlc0R5bmFtaWNDaGVja3MpIGNvbnN0OwogCkBAIC04OCw3ICs4OCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB2b2lkIHNldFJlZ2lzdGVycyhXcml0ZUJhcnJpZXI8VW5rbm93bj4q
IHJlZ2lzdGVycywgUGFzc093bkFycmF5UHRyPFdyaXRlQmFycmllcjxVbmtub3duPiA+IHJlZ2lz
dGVyQXJyYXkpOwogCiAgICAgICAgIGJvb2wgc3ltYm9sVGFibGVHZXQoY29uc3QgSWRlbnRpZmll
ciYsIFByb3BlcnR5U2xvdCYpOwotICAgICAgICBib29sIHN5bWJvbFRhYmxlR2V0KGNvbnN0IElk
ZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgYm9vbCBzeW1ib2xUYWJsZUdldChjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlw
dG9yJik7CiAgICAgICAgIGJvb2wgc3ltYm9sVGFibGVHZXQoY29uc3QgSWRlbnRpZmllciYsIFBy
b3BlcnR5U2xvdCYsIGJvb2wmIHNsb3RJc1dyaXRlYWJsZSk7CiAgICAgICAgIGJvb2wgc3ltYm9s
VGFibGVQdXQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUsIGJvb2wgc2hv
dWxkVGhyb3cpOwogICAgICAgICBib29sIHN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMoSlNH
bG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0
ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAppbmRleCA4ZWQ3MGI0MWQ1
NzNjMjgyMmVjM2U2YTRmZTJhMWQ3OWRlMzRkOWUwLi42NGQwNmI1MDM3YjFkNmRlMWEwYjc1YmFl
OTYyNTEyYTk4ZWQxMDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Mb29rdXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaApA
QCAtMTI2LDcgKzEyNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgIGNyZWF0
ZVRhYmxlKCZleGVjLT5nbG9iYWxEYXRhKCkpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBk
ZWxldGVUYWJsZSgpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGRlbGV0
ZVRhYmxlKCkgY29uc3Q7CiAKICAgICAgICAgLy8gRmluZCBhbiBlbnRyeSBpbiB0aGUgdGFibGUs
IGFuZCByZXR1cm4gdGhlIGVudHJ5LgogICAgICAgICBBTFdBWVNfSU5MSU5FIGNvbnN0IEhhc2hF
bnRyeSogZW50cnkoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBp
ZGVudGlmaWVyKSBjb25zdApAQCAtMjE4LDEwICsyMTgsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIH0KIAogICAgICAgICAvLyBDb252ZXJ0IHRoZSBoYXNoIHRhYmxlIGtleXMgdG8gaWRl
bnRpZmllcnMuCi0gICAgICAgIHZvaWQgY3JlYXRlVGFibGUoSlNHbG9iYWxEYXRhKikgY29uc3Q7
CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgY3JlYXRlVGFibGUoSlNHbG9iYWxEYXRh
KikgY29uc3Q7CiAgICAgfTsKIAotICAgIGJvb2wgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhl
Y1N0YXRlKiwgY29uc3QgSGFzaEVudHJ5KiwgSlNPYmplY3QqIHRoaXNPYmplY3QsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgYm9vbCBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChFeGVjU3RhdGUqLCBjb25zdCBIYXNo
RW50cnkqLCBKU09iamVjdCogdGhpc09iamVjdCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmKTsKIAogICAgIC8qKgogICAgICAqIFRoaXMgbWV0aG9kIGRvZXMg
aXQgYWxsIChsb29raW5nIGluIHRoZSBoYXNodGFibGUsIGNoZWNraW5nIGZvciBmdW5jdGlvbgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWVtb3J5U3RhdGlzdGlj
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWVtb3J5U3RhdGlzdGljcy5oCmlu
ZGV4IGQ0YjhiNmZjMTAxOGFjMDZhODQ1NzJlNjI5Y2VmY2ViM2E2MGM0ZWIuLjlhODZkZjI5Njg1
ODIyZGE5NWI1ODRiZjdlYjc0OGFhYTIxNDRkMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL01lbW9yeVN0YXRpc3RpY3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9NZW1vcnlTdGF0aXN0aWNzLmgKQEAgLTM3LDcgKzM3LDcgQEAgc3RydWN0
IEdsb2JhbE1lbW9yeVN0YXRpc3RpY3MgewogICAgIHNpemVfdCBKSVRCeXRlczsKIH07CiAKLUds
b2JhbE1lbW9yeVN0YXRpc3RpY3MgZ2xvYmFsTWVtb3J5U3RhdGlzdGljcygpOworSlNfRVhQT1JU
X1BSSVZBVEUgR2xvYmFsTWVtb3J5U3RhdGlzdGljcyBnbG9iYWxNZW1vcnlTdGF0aXN0aWNzKCk7
CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0
UHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5
cGUuaAppbmRleCA3OGIxY2JkMzk4M2QwMDMzMDcxOGQyNDIzMTVlN2U3YjIwYmYyYWU5Li40YzQ5
ZTk3YTcxNTNjOGU1N2QxNjg3NzVhMzQzZDQ1ODhkYjcxMjZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuaApAQCAtNTksNyArNTksNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBtX2hhc05vUHJvcGVydGllc1dpdGhVSW50MzJO
YW1lczsKICAgICB9OwogCi0gICAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQ
cm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0
ZSopOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T3B0aW9ucy5oCmluZGV4IGY3Y2M1ZjRlOGVhNmFjNmNmNTI1MzQzOGQ1ZjM3MzE4NTc3MjZiOGQu
LmZlZWJkMzdiYmY2NzYyNjY1OGMxOTdmZDU5YWYzNmVkZmRmZmNhOGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKQEAgLTczLDggKzczLDggQEAgZXh0ZXJuIHVuc2ln
bmVkIGdjTWFya1N0YWNrU2VnbWVudFNpemU7CiBleHRlcm4gdW5zaWduZWQgbWluaW11bU51bWJl
ck9mQ2VsbHNUb0tlZXA7CiBleHRlcm4gdW5zaWduZWQgbWF4aW11bU51bWJlck9mU2hhcmVkU2Vn
bWVudHM7CiBleHRlcm4gdW5zaWduZWQgc2hhcmVkU3RhY2tXYWtldXBUaHJlc2hvbGQ7Ci1leHRl
cm4gdW5zaWduZWQgbnVtYmVyT2ZHQ01hcmtlcnM7Ci1leHRlcm4gdW5zaWduZWQgb3BhcXVlUm9v
dE1lcmdlVGhyZXNob2xkOworSlNfRVhQT1JUREFUQSBleHRlcm4gdW5zaWduZWQgbnVtYmVyT2ZH
Q01hcmtlcnM7CitKU19FWFBPUlREQVRBIGV4dGVybiB1bnNpZ25lZCBvcGFxdWVSb290TWVyZ2VU
aHJlc2hvbGQ7CiAKIHZvaWQgaW5pdGlhbGl6ZU9wdGlvbnMoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuaAppbmRleCA0Y2Y4OTZj
MzFjNzcxM2MxMzE3NmQ4YzMzYjkyYzdiZWQ2NjlmY2VhLi45OGFmMDJlNjZiYjUwZjk0M2NiNzQ1
N2RjMzkwYmViZGIzNzM1NjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuaApAQCAtNDEsMjcgKzQxLDI3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAgICAgLCBtX3NlZW5BdHRyaWJ1dGVzKDApCiAgICAgICAgIHsKICAgICAg
ICAgfQotICAgICAgICBib29sIHdyaXRhYmxlKCkgY29uc3Q7Ci0gICAgICAgIGJvb2wgZW51bWVy
YWJsZSgpIGNvbnN0OwotICAgICAgICBib29sIGNvbmZpZ3VyYWJsZSgpIGNvbnN0OwotICAgICAg
ICBib29sIGlzRGF0YURlc2NyaXB0b3IoKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgYm9vbCB3cml0YWJsZSgpIGNvbnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29s
IGVudW1lcmFibGUoKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBjb25m
aWd1cmFibGUoKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0RhdGFE
ZXNjcmlwdG9yKCkgY29uc3Q7CiAgICAgICAgIGJvb2wgaXNHZW5lcmljRGVzY3JpcHRvcigpIGNv
bnN0OwotICAgICAgICBib29sIGlzQWNjZXNzb3JEZXNjcmlwdG9yKCkgY29uc3Q7CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSBjb25zdDsKICAg
ICAgICAgdW5zaWduZWQgYXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlczsg
fQogICAgICAgICBKU1ZhbHVlIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQotICAg
ICAgICBKU1ZhbHVlIGdldHRlcigpIGNvbnN0OwotICAgICAgICBKU1ZhbHVlIHNldHRlcigpIGNv
bnN0OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGdldHRlcigpIGNvbnN0Owor
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIHNldHRlcigpIGNvbnN0OwogICAgICAg
ICBKU09iamVjdCogZ2V0dGVyT2JqZWN0KCkgY29uc3Q7CiAgICAgICAgIEpTT2JqZWN0KiBzZXR0
ZXJPYmplY3QoKSBjb25zdDsKLSAgICAgICAgdm9pZCBzZXRVbmRlZmluZWQoKTsKLSAgICAgICAg
dm9pZCBzZXREZXNjcmlwdG9yKEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwor
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldFVuZGVmaW5lZCgpOworICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSB2b2lkIHNldERlc2NyaXB0b3IoSlNWYWx1ZSB2YWx1ZSwgdW5zaWdu
ZWQgYXR0cmlidXRlcyk7CiAgICAgICAgIHZvaWQgc2V0QWNjZXNzb3JEZXNjcmlwdG9yKEdldHRl
clNldHRlciogYWNjZXNzb3IsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwotICAgICAgICB2b2lkIHNl
dFdyaXRhYmxlKGJvb2wpOwotICAgICAgICB2b2lkIHNldEVudW1lcmFibGUoYm9vbCk7Ci0gICAg
ICAgIHZvaWQgc2V0Q29uZmlndXJhYmxlKGJvb2wpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSB2b2lkIHNldFdyaXRhYmxlKGJvb2wpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lk
IHNldEVudW1lcmFibGUoYm9vbCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0
Q29uZmlndXJhYmxlKGJvb2wpOwogICAgICAgICB2b2lkIHNldFZhbHVlKEpTVmFsdWUgdmFsdWUp
IHsgbV92YWx1ZSA9IHZhbHVlOyB9Ci0gICAgICAgIHZvaWQgc2V0U2V0dGVyKEpTVmFsdWUpOwot
ICAgICAgICB2b2lkIHNldEdldHRlcihKU1ZhbHVlKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgdm9pZCBzZXRTZXR0ZXIoSlNWYWx1ZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZv
aWQgc2V0R2V0dGVyKEpTVmFsdWUpOwogICAgICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJl
dHVybiAhKG1fdmFsdWUgfHwgbV9nZXR0ZXIgfHwgbV9zZXR0ZXIgfHwgbV9zZWVuQXR0cmlidXRl
cyk7IH0KICAgICAgICAgYm9vbCB3cml0YWJsZVByZXNlbnQoKSBjb25zdCB7IHJldHVybiBtX3Nl
ZW5BdHRyaWJ1dGVzICYgV3JpdGFibGVQcmVzZW50OyB9CiAgICAgICAgIGJvb2wgZW51bWVyYWJs
ZVByZXNlbnQoKSBjb25zdCB7IHJldHVybiBtX3NlZW5BdHRyaWJ1dGVzICYgRW51bWVyYWJsZVBy
ZXNlbnQ7IH0KQEAgLTc0LDcgKzc0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHVuc2ln
bmVkIGF0dHJpYnV0ZXNPdmVycmlkaW5nQ3VycmVudChjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3Im
IGN1cnJlbnQpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgc3RhdGljIHVuc2lnbmVk
IGRlZmF1bHRBdHRyaWJ1dGVzOworICAgICAgICBKU19FWFBPUlREQVRBIHN0YXRpYyB1bnNpZ25l
ZCBkZWZhdWx0QXR0cmlidXRlczsKICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFByb3Bl
cnR5RGVzY3JpcHRvciYpeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgZW51bSB7IFdyaXRhYmxl
UHJlc2VudCA9IDEsIEVudW1lcmFibGVQcmVzZW50ID0gMiwgQ29uZmlndXJhYmxlUHJlc2VudCA9
IDR9OwogICAgICAgICAvLyBNYXkgYmUgYSBnZXR0ZXIvc2V0dGVyCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaAppbmRleCAwZGE5MzBmMTcz
ZjEzZjRhM2UxYjhjMDRkNjY2YThjMDQxYTcxYWQ1Li5kYWJkYTk0NWIxOTY1YTNiZjNjYjQ1OWZi
ZDY3M2EyODg0YzczNDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9wZXJ0eU5hbWVBcnJheS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3BlcnR5TmFtZUFycmF5LmgKQEAgLTY5LDcgKzY5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSgpIHsgcmV0dXJuIG1fZ2xvYmFsRGF0YTsg
fQogCiAgICAgICAgIHZvaWQgYWRkKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpIHsgYWRk
KGlkZW50aWZpZXIuaW1wbCgpKTsgfQotICAgICAgICB2b2lkIGFkZChTdHJpbmdJbXBsKik7Cisg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgYWRkKFN0cmluZ0ltcGwqKTsKICAgICAgICAg
dm9pZCBhZGRLbm93blVuaXF1ZShTdHJpbmdJbXBsKiBpZGVudGlmaWVyKSB7IG1fZGF0YS0+cHJv
cGVydHlOYW1lVmVjdG9yKCkuYXBwZW5kKElkZW50aWZpZXIobV9nbG9iYWxEYXRhLCBpZGVudGlm
aWVyKSk7IH0KIAogICAgICAgICBJZGVudGlmaWVyJiBvcGVyYXRvcltdKHVuc2lnbmVkIGkpIHsg
cmV0dXJuIG1fZGF0YS0+cHJvcGVydHlOYW1lVmVjdG9yKClbaV07IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKaW5kZXggODU1N2U2ZDI0NzZlYTA2OWZk
NTA3YmUyMTZmZGEzYzY5OTliODg0ZS4uY2ZlZGY3ODc2ZmI2MzY1NDRiZDllOGZmNDcxN2E0Mjgz
MDBjNjg5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVy
dHlTbG90LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90
LmgKQEAgLTIxOCw3ICsyMTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVy
biBtX2dldFZhbHVlOwogICAgICAgICB9CiAgICAgcHJpdmF0ZToKLSAgICAgICAgSlNWYWx1ZSBm
dW5jdGlvbkdldHRlcihFeGVjU3RhdGUqKSBjb25zdDsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgSlNWYWx1ZSBmdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqKSBjb25zdDsKIAogICAgICAgICBH
ZXRWYWx1ZUZ1bmMgbV9nZXRWYWx1ZTsKICAgICAgICAgR2V0SW5kZXhWYWx1ZUZ1bmMgbV9nZXRJ
bmRleFZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAppbmRleCA2NWVi
NDg0OTk5MmNhNWU2ZTE4OWZlMjU0MmFkYzhhNzVmYjlkZGI4Li4yYzBiNjFhNzM0NTgxYWQyZWI4
YjJlOTM0MDE1ZjkwMjJkYzgzMDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHAuaApAQCAtMzUsMTMgKzM1LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHN0cnVjdCBSZWdF
eHBSZXByZXNlbnRhdGlvbjsKICAgICBjbGFzcyBKU0dsb2JhbERhdGE7CiAKLSAgICBSZWdFeHBG
bGFncyByZWdFeHBGbGFncyhjb25zdCBVU3RyaW5nJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
UmVnRXhwRmxhZ3MgcmVnRXhwRmxhZ3MoY29uc3QgVVN0cmluZyYpOwogCiAgICAgY2xhc3MgUmVn
RXhwIDogcHVibGljIEpTQ2VsbCB7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIEpTQ2Vs
bCBCYXNlOwogCi0gICAgICAgIHN0YXRpYyBSZWdFeHAqIGNyZWF0ZShKU0dsb2JhbERhdGEmLCBj
b25zdCBVU3RyaW5nJiBwYXR0ZXJuLCBSZWdFeHBGbGFncyk7CisgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBSZWdFeHAqIGNyZWF0ZShKU0dsb2JhbERhdGEmLCBjb25zdCBVU3RyaW5n
JiBwYXR0ZXJuLCBSZWdFeHBGbGFncyk7CiAgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlND
ZWxsKik7CiAKICAgICAgICAgYm9vbCBnbG9iYWwoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzICYg
RmxhZ0dsb2JhbDsgfQpAQCAtNTMsNyArNTMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
Ym9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gIW1fY29uc3RydWN0aW9uRXJyb3IgJiYgbV9m
bGFncyAhPSBJbnZhbGlkRmxhZ3M7IH0KICAgICAgICAgY29uc3QgY2hhciogZXJyb3JNZXNzYWdl
KCkgY29uc3QgeyByZXR1cm4gbV9jb25zdHJ1Y3Rpb25FcnJvcjsgfQogCi0gICAgICAgIGludCBt
YXRjaChKU0dsb2JhbERhdGEmLCBjb25zdCBVU3RyaW5nJiwgaW50IHN0YXJ0T2Zmc2V0LCBWZWN0
b3I8aW50LCAzMj4qIG92ZWN0b3IgPSAwKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgaW50
IG1hdGNoKEpTR2xvYmFsRGF0YSYsIGNvbnN0IFVTdHJpbmcmLCBpbnQgc3RhcnRPZmZzZXQsIFZl
Y3RvcjxpbnQsIDMyPiogb3ZlY3RvciA9IDApOwogICAgICAgICB1bnNpZ25lZCBudW1TdWJwYXR0
ZXJucygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtU3VicGF0dGVybnM7IH0KIAogICAgICAgICBib29s
IGhhc0NvZGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3Qu
aAppbmRleCA0ZTg0ZDM4MzFkMTYxNzY5YjU1OTRiNjRmYjJjYzYwNWVlMGM1M2M0Li4wODFhN2Yx
MTExNjg1MWFmMjk4OTI3MDBhYTYzOTIxZTE2MjI2MzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaApAQCAtNzUsOCArNzUsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgfQogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICBSZWdFeHBPYmplY3Qo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWdFeHAqKTsKLSAgICAgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihKU0dsb2JhbE9iamVjdCopOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBS
ZWdFeHBPYmplY3QoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWdFeHAqKTsKKyAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbE9iamVjdCop
OwogICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAgICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4g
fCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nQ291bnRlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdDb3VudGVyLmgKaW5kZXgg
NjY0YjAyODBlZWE1MTg3OTNhNWQ4ZDc1NWJjN2QxZmE2YjUwMjY3ZS4uMzI5YTVjZmQzM2RiNmE5
MDVjZTlmMjYwMzY1NmEzMWQyNWU1YjU3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU2FtcGxpbmdDb3VudGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2FtcGxpbmdDb3VudGVyLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAg
ICAgICBtX2NvdW50ZXIgKz0gY291bnQ7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgZHVtcCgp
OworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGR1bXAoKTsKIAogICAgIGludDY0
X3QqIGFkZHJlc3NPZkNvdW50ZXIoKSB7IHJldHVybiAmbV9jb3VudGVyOyB9CiAKQEAgLTc0LDcg
Kzc0LDcgQEAgcHJvdGVjdGVkOgogICAgIEFic3RyYWN0U2FtcGxpbmdDb3VudGVyKiogbV9yZWZl
cmVyOwogICAgIC8vIE51bGwgb2JqZWN0IHVzZWQgdG8gZGV0ZWN0IGVuZCBvZiBzdGF0aWMgY2hh
aW4uCiAgICAgc3RhdGljIEFic3RyYWN0U2FtcGxpbmdDb3VudGVyIHNfYWJzdHJhY3RTYW1wbGlu
Z0NvdW50ZXJDaGFpbkVuZDsKLSAgICBzdGF0aWMgQWJzdHJhY3RTYW1wbGluZ0NvdW50ZXIqIHNf
YWJzdHJhY3RTYW1wbGluZ0NvdW50ZXJDaGFpbjsKKyAgICBKU19FWFBPUlREQVRBIHN0YXRpYyBB
YnN0cmFjdFNhbXBsaW5nQ291bnRlciogc19hYnN0cmFjdFNhbXBsaW5nQ291bnRlckNoYWluOwog
ICAgIHN0YXRpYyBib29sIHNfY29tcGxldGVkOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TbWFsbFN0cmluZ3MuaAppbmRleCA5YzZlZDlhMzI5MTE1NTg5NTM3ZTlhMzEx
ZGU1NjNlOGYxMjEzNWIwLi5jZDhlNjMwOTUwZjQyMDhhMTExZTM2N2Q1OGU3Y2RiMmM2MTdmZWRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3Mu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuaApAQCAt
NjAsNyArNjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBtX3Npbmds
ZUNoYXJhY3RlclN0cmluZ3NbY2hhcmFjdGVyXTsKICAgICAgICAgfQogCi0gICAgICAgIFN0cmlu
Z0ltcGwqIHNpbmdsZUNoYXJhY3RlclN0cmluZ1JlcCh1bnNpZ25lZCBjaGFyIGNoYXJhY3Rlcik7
CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cmluZ0ltcGwqIHNpbmdsZUNoYXJhY3RlclN0
cmluZ1JlcCh1bnNpZ25lZCBjaGFyIGNoYXJhY3Rlcik7CiAKICAgICAgICAgdm9pZCBmaW5hbGl6
ZVNtYWxsU3RyaW5ncygpOwogICAgICAgICB2b2lkIGNsZWFyKCk7CkBAIC03Miw4ICs3Miw4IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIHByaXZhdGU6CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBzaW5nbGVDaGFyYWN0ZXJTdHJpbmdDb3VudCA9IG1heFNpbmdsZUNoYXJhY3RlclN0cmlu
ZyArIDE7CiAKLSAgICAgICAgdm9pZCBjcmVhdGVFbXB0eVN0cmluZyhKU0dsb2JhbERhdGEqKTsK
LSAgICAgICAgdm9pZCBjcmVhdGVTaW5nbGVDaGFyYWN0ZXJTdHJpbmcoSlNHbG9iYWxEYXRhKiwg
dW5zaWduZWQgY2hhcik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgY3JlYXRlRW1w
dHlTdHJpbmcoSlNHbG9iYWxEYXRhKik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQg
Y3JlYXRlU2luZ2xlQ2hhcmFjdGVyU3RyaW5nKEpTR2xvYmFsRGF0YSosIHVuc2lnbmVkIGNoYXIp
OwogCiAgICAgICAgIEpTU3RyaW5nKiBtX2VtcHR5U3RyaW5nOwogICAgICAgICBKU1N0cmluZyog
bV9zaW5nbGVDaGFyYWN0ZXJTdHJpbmdzW3NpbmdsZUNoYXJhY3RlclN0cmluZ0NvdW50XTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgKaW5kZXggNTI4NjY4
NjkxNTNhZjgwNzM3YmNkNDIxM2JmYWEwODliYmU4YmIzZi4uMjQ4YzcxNjAxZmZkZDllZDMzOGI0
MWE4MjI3ZjRkZWIwYjhiNWFjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RyaW5nT2JqZWN0LmgKQEAgLTY0LDkgKzY0LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IH0KIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2Jh
bERhdGEmLCBKU1N0cmluZyopOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbmlz
aENyZWF0aW9uKEpTR2xvYmFsRGF0YSYsIEpTU3RyaW5nKik7CiAgICAgICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8
IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBKU1dyYXBwZXJPYmplY3Q6OlN0cnVjdHVyZUZs
YWdzOwotICAgICAgICBTdHJpbmdPYmplY3QoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7Cisg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cmluZ09iamVjdChKU0dsb2JhbERhdGEmLCBTdHJ1
Y3R1cmUqKTsKICAgICB9OwogCiAgICAgU3RyaW5nT2JqZWN0KiBhc1N0cmluZ09iamVjdChKU1Zh
bHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKaW5kZXggMmRl
YWNkNTQzMGFjMWNjMWVkYzA1MmYxMDBkNDlmODcyMWE4ZDJjYi4uY2VkMjk2ODU2ZjZiMzhjN2Fh
MDdmYjY0MTQ0MjNhOGU0ZjY4NTdmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlLmgKQEAgLTg0LDExICs4NCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJs
aWM6CiAgICAgICAgIHN0YXRpYyB2b2lkIGR1bXBTdGF0aXN0aWNzKCk7CiAKLSAgICAgICAgc3Rh
dGljIFN0cnVjdHVyZSogYWRkUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVj
dHVyZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRl
cywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNldCk7Ci0gICAgICAgIHN0YXRp
YyBTdHJ1Y3R1cmUqIGFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUoU3Ry
dWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1
dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIHNpemVfdCYgb2Zmc2V0KTsKKyAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogYWRkUHJvcGVydHlUcmFuc2l0aW9uKEpT
R2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
dW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNl
dCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGFkZFByb3Bl
cnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJlKiwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmlj
VmFsdWUsIHNpemVfdCYgb2Zmc2V0KTsKICAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogcmVtb3Zl
UHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgc2l6ZV90JiBvZmZzZXQpOwotICAgICAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjaGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVy
ZSosIEpTVmFsdWUgcHJvdG90eXBlKTsKLSAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogZGVzcGVj
aWZ5RnVuY3Rpb25UcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIGNvbnN0IElk
ZW50aWZpZXImKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSog
Y2hhbmdlUHJvdG90eXBlVHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBKU1Zh
bHVlIHByb3RvdHlwZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1
cmUqIGRlc3BlY2lmeUZ1bmN0aW9uVHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUq
LCBjb25zdCBJZGVudGlmaWVyJik7CiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGF0dHJpYnV0
ZUNoYW5nZVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAgICAgICAgc3RhdGlj
IFN0cnVjdHVyZSogdG9DYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEm
LCBTdHJ1Y3R1cmUqKTsKICAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogdG9VbmNhY2hlYWJsZURp
Y3Rpb25hcnlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwpAQCAtMTA2LDcg
KzEwNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpT
Q2VsbCopOwogCiAgICAgICAgIC8vIFRoZXNlIHNob3VsZCBiZSB1c2VkIHdpdGggY2F1dGlvbi4g
IAotICAgICAgICBzaXplX3QgYWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERh
dGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMs
IEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVf
dCBhZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZp
Y1ZhbHVlKTsKICAgICAgICAgc2l6ZV90IHJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24o
SlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKICAgICAgICAg
dm9pZCBzZXRQcm90b3R5cGVXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIEpTVmFsdWUgcHJvdG90eXBlKSB7IG1fcHJvdG90eXBlLnNldChnbG9iYWxEYXRhLCB0aGlz
LCBwcm90b3R5cGUpOyB9CiAgICAgICAgIApAQCAtMTM2LDcgKzEzNiw3IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgICAgIHNpemVfdCBnZXQoSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lKTsKICAgICAgICAgc2l6ZV90IGdldChKU0dsb2JhbERhdGEmLCBjb25z
dCBVU3RyaW5nJiBuYW1lKTsKLSAgICAgICAgc2l6ZV90IGdldChKU0dsb2JhbERhdGEmLCBTdHJp
bmdJbXBsKiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwqJiBzcGVj
aWZpY1ZhbHVlKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGdldChKU0dsb2Jh
bERhdGEmLCBTdHJpbmdJbXBsKiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzLCBK
U0NlbGwqJiBzcGVjaWZpY1ZhbHVlKTsKICAgICAgICAgc2l6ZV90IGdldChKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0
dHJpYnV0ZXMsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgICAg
IEFTU0VSVCghcHJvcGVydHlOYW1lLmlzTnVsbCgpKTsKQEAgLTE1MSw3ICsxNTEsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0
dXJuIG1fcHJvcGVydHlUYWJsZSA/IG1fcHJvcGVydHlUYWJsZS0+aXNFbXB0eSgpIDogbV9vZmZz
ZXQgPT0gbm9PZmZzZXQ7IH0KIAotICAgICAgICB2b2lkIGRlc3BlY2lmeURpY3Rpb25hcnlGdW5j
dGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbihK
U0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOwogICAgICAgICB2
b2lkIGRpc2FibGVTcGVjaWZpY0Z1bmN0aW9uVHJhY2tpbmcoKSB7IG1fc3BlY2lmaWNGdW5jdGlv
blRocmFzaENvdW50ID0gbWF4U3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50OyB9CiAKICAgICAg
ICAgdm9pZCBzZXRFbnVtZXJhdGlvbkNhY2hlKEpTR2xvYmFsRGF0YSYsIEpTUHJvcGVydHlOYW1l
SXRlcmF0b3IqIGVudW1lcmF0aW9uQ2FjaGUpOyAvLyBEZWZpbmVkIGluIEpTUHJvcGVydHlOYW1l
SXRlcmF0b3IuaC4KQEAgLTE5Niw3ICsxOTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
c3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAgIHByaXZh
dGU6Ci0gICAgICAgIFN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBKU0dsb2JhbE9iamVjdCosIEpT
VmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYsIGNvbnN0IENsYXNzSW5mbyopOworICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwgSlNHbG9iYWxP
YmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mLCBjb25zdCBDbGFzc0lu
Zm8qKTsKICAgICAgICAgU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYpOwogICAgICAgICBTdHJ1Y3R1
cmUoSlNHbG9iYWxEYXRhJiwgY29uc3QgU3RydWN0dXJlKik7CiAKQEAgLTIyNiw3ICsyMjYsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBQYXNzT3duUHRyPFByb3BlcnR5VGFibGU+IGNv
cHlQcm9wZXJ0eVRhYmxlKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSogb3duZXIpOwogICAgICAg
ICBQYXNzT3duUHRyPFByb3BlcnR5VGFibGU+IGNvcHlQcm9wZXJ0eVRhYmxlRm9yUGlubmluZyhK
U0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqIG93bmVyKTsKLSAgICAgICAgdm9pZCBtYXRlcmlhbGl6
ZVByb3BlcnR5TWFwKEpTR2xvYmFsRGF0YSYpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2
b2lkIG1hdGVyaWFsaXplUHJvcGVydHlNYXAoSlNHbG9iYWxEYXRhJik7CiAgICAgICAgIHZvaWQg
bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8o
KSA9PSAmc19pbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RpbWVvdXRDaGVja2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UaW1lb3V0
Q2hlY2tlci5oCmluZGV4IDU5MjU2NDFmODBhMzY2YWQzNDA2MWI1NjJjNzRjZDgyMmUzY2ZlOWIu
Ljg5ZDYxNThjY2RkNjQ3ZTIzNjkzMmY2ZDRjOWMyMWUwMzliNjBlZjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RpbWVvdXRDaGVja2VyLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGltZW91dENoZWNrZXIuaApAQCAtNTcsOSArNTcsOSBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIC0tbV9zdGFydENvdW50OwogICAgICAgICB9
CiAKLSAgICAgICAgdm9pZCByZXNldCgpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lk
IHJlc2V0KCk7CiAKLSAgICAgICAgYm9vbCBkaWRUaW1lT3V0KEV4ZWNTdGF0ZSopOworICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSBib29sIGRpZFRpbWVPdXQoRXhlY1N0YXRlKik7CiAKICAgICBw
cml2YXRlOgogICAgICAgICB1bnNpZ25lZCBtX3RpbWVvdXRJbnRlcnZhbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuaAppbmRleCBjMDVhZTUwODEwMTc3NDNmNjAyY2EwNzY4
OGRmNmE3ZDM5ZjE2NjY3Li5jMTFjNTY3NmE5ZWVkM2JlYzY4YWY2OGE1OTc5MjVlODYwYTRkMTdl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5oCkBAIC0zMywxOCArMzMs
MTggQEAgcHVibGljOgogICAgIFVTdHJpbmcoKSB7IH0KIAogICAgIC8vIENvbnN0cnVjdCBhIHN0
cmluZyB3aXRoIFVURi0xNiBkYXRhLgotICAgIFVTdHJpbmcoY29uc3QgVUNoYXIqIGNoYXJhY3Rl
cnMsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgVVN0cmluZyhjb25z
dCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKIAogICAgIC8vIENvbnN0cnVj
dCBhIHN0cmluZyB3aXRoIFVURi0xNiBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJj
ZS4KLSAgICBVU3RyaW5nKGNvbnN0IFVDaGFyKik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgVVN0
cmluZyhjb25zdCBVQ2hhciopOwogCiAgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdpdGggbGF0
aW4xIGRhdGEuCiAgICAgVVN0cmluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQg
bGVuZ3RoKTsKLSAgICBVU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgVVN0cmluZyhjb25zdCBjaGFyKiBjaGFyYWN0
ZXJzLCB1bnNpZ25lZCBsZW5ndGgpOwogCiAgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdpdGgg
bGF0aW4xIGRhdGEsIGZyb20gYSBudWxsLXRlcm1pbmF0ZWQgc291cmNlLgogICAgIFVTdHJpbmco
Y29uc3QgTENoYXIqIGNoYXJhY3RlcnMpOwotICAgIFVTdHJpbmcoY29uc3QgY2hhciogY2hhcmFj
dGVycyk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgVVN0cmluZyhjb25zdCBjaGFyKiBjaGFyYWN0
ZXJzKTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyByZWZlcmVuY2luZyBhbiBleGlzdGlu
ZyBTdHJpbmdJbXBsLgogICAgIFVTdHJpbmcoU3RyaW5nSW1wbCogaW1wbCkgOiBtX2ltcGwoaW1w
bCkgeyB9CkBAIC05OSw5ICs5OSw5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXM4Qml0KCkgY29u
c3QgeyByZXR1cm4gbV9pbXBsLT5pczhCaXQoKTsgfQogCi0gICAgQ1N0cmluZyBhc2NpaSgpIGNv
bnN0OworICAgIEpTX0VYUE9SVF9QUklWQVRFIENTdHJpbmcgYXNjaWkoKSBjb25zdDsKICAgICBD
U3RyaW5nIGxhdGluMSgpIGNvbnN0OwotICAgIENTdHJpbmcgdXRmOChib29sIHN0cmljdCA9IGZh
bHNlKSBjb25zdDsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBDU3RyaW5nIHV0ZjgoYm9vbCBzdHJp
Y3QgPSBmYWxzZSkgY29uc3Q7CiAKICAgICBVQ2hhciBvcGVyYXRvcltdKHVuc2lnbmVkIGluZGV4
KSBjb25zdAogICAgIHsKQEAgLTExMiwxMSArMTEyLDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIG1faW1wbC0+Y2hhcmFjdGVyczE2KClbaW5kZXhdOwogICAgIH0KIAotICAgIHN0YXRpYyBV
U3RyaW5nIG51bWJlcihpbnQpOwotICAgIHN0YXRpYyBVU3RyaW5nIG51bWJlcih1bnNpZ25lZCk7
Ci0gICAgc3RhdGljIFVTdHJpbmcgbnVtYmVyKGxvbmcpOworICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBVU3RyaW5nIG51bWJlcihpbnQpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBVU3RyaW5nIG51bWJlcih1bnNpZ25lZCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IFVTdHJpbmcgbnVtYmVyKGxvbmcpOwogICAgIHN0YXRpYyBVU3RyaW5nIG51bWJlcihsb25nIGxv
bmcpOwotICAgIHN0YXRpYyBVU3RyaW5nIG51bWJlcihkb3VibGUpOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBVU3RyaW5nIG51bWJlcihkb3VibGUpOwogCiAgICAgLy8gRmluZCBhIHNp
bmdsZSBjaGFyYWN0ZXIgb3Igc3RyaW5nLCBhbHNvIHdpdGggbWF0Y2ggZnVuY3Rpb24gJiBsYXRp
bjEgZm9ybXMuCiAgICAgc2l6ZV90IGZpbmQoVUNoYXIgYywgdW5zaWduZWQgc3RhcnQgPSAwKSBj
b25zdApAQCAtMTMyLDcgKzEzMiw3IEBAIHB1YmxpYzoKICAgICBzaXplX3QgcmV2ZXJzZUZpbmQo
Y29uc3QgVVN0cmluZyYgc3RyLCB1bnNpZ25lZCBzdGFydCA9IFVJTlRfTUFYKSBjb25zdAogICAg
ICAgICB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnJldmVyc2VGaW5kKHN0ci5pbXBsKCksIHN0
YXJ0KSA6IG5vdEZvdW5kOyB9CiAKLSAgICBVU3RyaW5nIHN1YnN0cmluZ1NoYXJpbmdJbXBsKHVu
c2lnbmVkIHBvcywgdW5zaWduZWQgbGVuID0gVUlOVF9NQVgpIGNvbnN0OworICAgIEpTX0VYUE9S
VF9QUklWQVRFIFVTdHJpbmcgc3Vic3RyaW5nU2hhcmluZ0ltcGwodW5zaWduZWQgcG9zLCB1bnNp
Z25lZCBsZW4gPSBVSU5UX01BWCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgUmVmUHRyPFN0cmlu
Z0ltcGw+IG1faW1wbDsKQEAgLTE4OSwxMCArMTg5LDEwIEBAIGlubGluZSBib29sIG9wZXJhdG9y
IT0oY29uc3QgVVN0cmluZyYgczEsIGNvbnN0IFVTdHJpbmcmIHMyKQogICAgIHJldHVybiAhSlND
OjpvcGVyYXRvcj09KHMxLCBzMik7CiB9CiAKLWJvb2wgb3BlcmF0b3I8KGNvbnN0IFVTdHJpbmcm
IHMxLCBjb25zdCBVU3RyaW5nJiBzMik7Ci1ib29sIG9wZXJhdG9yPihjb25zdCBVU3RyaW5nJiBz
MSwgY29uc3QgVVN0cmluZyYgczIpOworSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBvcGVyYXRvcjwo
Y29uc3QgVVN0cmluZyYgczEsIGNvbnN0IFVTdHJpbmcmIHMyKTsKK0pTX0VYUE9SVF9QUklWQVRF
IGJvb2wgb3BlcmF0b3I+KGNvbnN0IFVTdHJpbmcmIHMxLCBjb25zdCBVU3RyaW5nJiBzMik7CiAK
LWJvb2wgb3BlcmF0b3I9PShjb25zdCBVU3RyaW5nJiBzMSwgY29uc3QgY2hhciogczIpOworSlNf
RVhQT1JUX1BSSVZBVEUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFVTdHJpbmcmIHMxLCBjb25zdCBj
aGFyKiBzMik7CiAKIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgVVN0cmluZyYgczEsIGNv
bnN0IGNoYXIqIHMyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvV3JpdGVCYXJyaWVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Xcml0ZUJh
cnJpZXIuaAppbmRleCA1MjVmYzA5MjY3ZTY0NTdjOTZlYzMyZmEyMTk2Zjg5ODJjNDg3ZGQ1Li5h
N2JkN2ExMDBkY2E2MjMwMDAyM2NiODU2OTc1OGZhZWE5NjUxOGFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Xcml0ZUJhcnJpZXIuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Xcml0ZUJhcnJpZXIuaApAQCAtNDAsOCArNDAsOCBAQCBjbGFz
cyBKU0dsb2JhbE9iamVjdDsKIHRlbXBsYXRlPGNsYXNzIFQ+IGNsYXNzIFdyaXRlQmFycmllckJh
c2U7CiB0ZW1wbGF0ZTw+IGNsYXNzIFdyaXRlQmFycmllckJhc2U8SlNWYWx1ZT47CiAKLXZvaWQg
c2xvd1ZhbGlkYXRlQ2VsbChKU0NlbGwqKTsKLXZvaWQgc2xvd1ZhbGlkYXRlQ2VsbChKU0dsb2Jh
bE9iamVjdCopOworSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzbG93VmFsaWRhdGVDZWxsKEpTQ2Vs
bCopOworSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzbG93VmFsaWRhdGVDZWxsKEpTR2xvYmFsT2Jq
ZWN0Kik7CiAgICAgCiAjaWYgRU5BQkxFKEdDX1ZBTElEQVRJT04pCiB0ZW1wbGF0ZTxjbGFzcyBU
PiBpbmxpbmUgdm9pZCB2YWxpZGF0ZUNlbGwoVCBjZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9BcnJheUJ1ZmZlclZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvQXJyYXlCdWZmZXJWaWV3LmgKaW5kZXggY2NiN2ZkMzQ4OTlhNWNlY2FhYzEwNTA1OTE4
MWQ2OTMxMTkyZDRjZi4uZWJlNmQ4MGQyOTdjZjhhZWIyMzk0YTA5NGVmZWJmMzllYzdhZmJiOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9BcnJheUJ1ZmZlclZpZXcuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0FycmF5QnVmZmVyVmlldy5oCkBAIC02NSwx
MCArNjUsMTAgQEAgY2xhc3MgQXJyYXlCdWZmZXJWaWV3IDogcHVibGljIFJlZkNvdW50ZWQ8QXJy
YXlCdWZmZXJWaWV3PiB7CiAKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGJ5dGVMZW5ndGgoKSBjb25z
dCA9IDA7CiAKLSAgICB2aXJ0dWFsIH5BcnJheUJ1ZmZlclZpZXcoKTsKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgdmlydHVhbCB+QXJyYXlCdWZmZXJWaWV3KCk7CiAKICAgcHJvdGVjdGVkOgotICAg
IEFycmF5QnVmZmVyVmlldyhQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9m
ZnNldCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIEFycmF5QnVmZmVyVmlldyhQYXNzUmVmUHRy
PEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCk7CiAKICAgICBpbmxpbmUgYm9vbCBz
ZXRJbXBsKEFycmF5QnVmZmVyVmlldyosIHVuc2lnbmVkIGJ5dGVPZmZzZXQpOwogCkBAIC0xMTgs
NyArMTE4LDcgQEAgY2xhc3MgQXJyYXlCdWZmZXJWaWV3IDogcHVibGljIFJlZkNvdW50ZWQ8QXJy
YXlCdWZmZXJWaWV3PiB7CiAgICAgICAgICpudW1FbGVtZW50cyA9IHN0ZDo6bWluKHJlbWFpbmlu
Z0VsZW1lbnRzLCAqbnVtRWxlbWVudHMpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBuZXV0
ZXIoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCB2b2lkIG5ldXRlcigpOwogCiAg
ICAgLy8gVGhpcyBpcyB0aGUgYWRkcmVzcyBvZiB0aGUgQXJyYXlCdWZmZXIncyBzdG9yYWdlLCBw
bHVzIHRoZSBieXRlIG9mZnNldC4KICAgICB2b2lkKiBtX2Jhc2VBZGRyZXNzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9CeXRlQXJyYXkuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvQnl0ZUFycmF5LmgKaW5kZXggNjk2NGEzM2RmOWNlMjFiOGZiZGNiYTk1YTVh
NzE2YTkwMDY5N2MyMi4uZjY4ZDAzMmZkMDBiOGRjN2VhOGExYjVkN2ZkZDgzMDhjNzI1ZjE2ZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9CeXRlQXJyYXkuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0J5dGVBcnJheS5oCkBAIC04Myw3ICs4Myw3IEBAIG5h
bWVzcGFjZSBXVEYgewogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBjcmVhdGUoc2l6ZV90IHNpemUpOworICAgICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBjcmVhdGUoc2l6ZV90
IHNpemUpOwogCiAgICAgICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZTaXplKCkgeyByZXR1cm4g
T0JKRUNUX09GRlNFVE9GKEJ5dGVBcnJheSwgbV9zaXplKTsgfQogICAgICAgICBzdGF0aWMgc2l6
ZV90IG9mZnNldE9mRGF0YSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihCeXRlQXJyYXksIG1f
ZGF0YSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQ3J5cHRvZ3Jh
cGhpY2FsbHlSYW5kb21OdW1iZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQ3J5cHRv
Z3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaAppbmRleCAzNDgyNDJlMjVjY2I1Mjc5NzlhZTBmODM1
ZjhlYTdhYWNjNDVhZWFlLi4yMjYyYjZjM2IzMTFmYWVkMjZmNzA0Nzk5NTYxYThhYWQ1N2UwODUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0NyeXB0b2dyYXBoaWNhbGx5
UmFuZG9tTnVtYmVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9DcnlwdG9ncmFw
aGljYWxseVJhbmRvbU51bWJlci5oCkBAIC0zMSw4ICszMSw4IEBACiBuYW1lc3BhY2UgV1RGIHsK
IAogI2lmIFVTRShPU19SQU5ET01ORVNTKQotdWludDMyX3QgY3J5cHRvZ3JhcGhpY2FsbHlSYW5k
b21OdW1iZXIoKTsKLXZvaWQgY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21WYWx1ZXModm9pZCogYnVm
ZmVyLCBzaXplX3QgbGVuZ3RoKTsKK1dURl9FWFBPUlRfUFJJVkFURSB1aW50MzJfdCBjcnlwdG9n
cmFwaGljYWxseVJhbmRvbU51bWJlcigpOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgY3J5cHRv
Z3JhcGhpY2FsbHlSYW5kb21WYWx1ZXModm9pZCogYnVmZmVyLCBzaXplX3QgbGVuZ3RoKTsKICNl
bmRpZgogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0N1cnJlbnRU
aW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0N1cnJlbnRUaW1lLmgKaW5kZXggNzE3
NzVjMjczNTM5MzZhODRhNThlNDQ3M2U2N2ExYzg5MTJhMzg5Ny4uZWU0OWY4ZDI1ZjY5MDNkYTVm
Y2MwZDYzYmYxMjk5MjJiMWVjMTIzNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9DdXJyZW50VGltZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQ3VycmVu
dFRpbWUuaApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV1RGIHsKIC8vIFJldHVybnMgdGhl
IGN1cnJlbnQgVVRDIHRpbWUgaW4gc2Vjb25kcywgY291bnRlZCBmcm9tIEphbnVhcnkgMSwgMTk3
MC4KIC8vIFByZWNpc2lvbiB2YXJpZXMgZGVwZW5kaW5nIG9uIHBsYXRmb3JtIGJ1dCBpcyB1c3Vh
bGx5IGFzIGdvb2Qgb3IgYmV0dGVyCiAvLyB0aGFuIGEgbWlsbGlzZWNvbmQuCi1kb3VibGUgY3Vy
cmVudFRpbWUoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBkb3VibGUgY3VycmVudFRpbWUoKTsKIAog
Ly8gU2FtZSB0aGluZywgaW4gbWlsbGlzZWNvbmRzLgogaW5saW5lIGRvdWJsZSBjdXJyZW50VGlt
ZU1TKCkKQEAgLTYwLDcgKzYwLDcgQEAgaW5saW5lIHZvaWQgZ2V0TG9jYWxUaW1lKGNvbnN0IHRp
bWVfdCogbG9jYWxUaW1lLCBzdHJ1Y3QgdG0qIGxvY2FsVE0pCiAKIC8vIFByb3ZpZGVzIGEgbW9u
b3RvbmljYWxseSBpbmNyZWFzaW5nIHRpbWUgaW4gc2Vjb25kcyBzaW5jZSBhbiBhcmJpdHJhcnkg
cG9pbnQgaW4gdGhlIHBhc3QuCiAvLyBPbiB1bnN1cHBvcnRlZCBwbGF0Zm9ybXMsIHRoaXMgZnVu
Y3Rpb24gb25seSBndWFyYW50ZWVzIHRoZSByZXN1bHQgd2lsbCBiZSBub24tZGVjcmVhc2luZy4K
LWRvdWJsZSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKK1dURl9FWFBPUlRfUFJJVkFU
RSBkb3VibGUgbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CiAKIH0gLy8gbmFtZXNwYWNl
IFdURgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0RhdGVNYXRoLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0RhdGVNYXRoLmgKaW5kZXggMTE0YWNmOGE4NzE5
NGFiMmUyNjYxZDBiNTVhY2VjNmMxNzI2MWE1ZC4uZmMxYThkOGU0NGJmNDU2ZmEyYjIzOWEwMzQx
YjE5M2U5ODk4MmZiZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9EYXRl
TWF0aC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRGF0ZU1hdGguaApAQCAtNjEs
NyArNjEsNyBAQCBpbnQgZXF1aXZhbGVudFllYXJGb3JEU1QoaW50IHllYXIpOwogCiAvLyBOb3Qg
cmVhbGx5IG1hdGggcmVsYXRlZCwgYnV0IHRoaXMgaXMgY3VycmVudGx5IHRoZSBvbmx5IHNoYXJl
ZCBwbGFjZSB0byBwdXQgdGhlc2UuCiBkb3VibGUgcGFyc2VFUzVEYXRlRnJvbU51bGxUZXJtaW5h
dGVkQ2hhcmFjdGVycyhjb25zdCBjaGFyKiBkYXRlU3RyaW5nKTsKLWRvdWJsZSBwYXJzZURhdGVG
cm9tTnVsbFRlcm1pbmF0ZWRDaGFyYWN0ZXJzKGNvbnN0IGNoYXIqIGRhdGVTdHJpbmcpOworV1RG
X0VYUE9SVF9QUklWQVRFIGRvdWJsZSBwYXJzZURhdGVGcm9tTnVsbFRlcm1pbmF0ZWRDaGFyYWN0
ZXJzKGNvbnN0IGNoYXIqIGRhdGVTdHJpbmcpOwogZG91YmxlIHBhcnNlRGF0ZUZyb21OdWxsVGVy
bWluYXRlZENoYXJhY3RlcnMoY29uc3QgY2hhciogZGF0ZVN0cmluZywgYm9vbCYgaGF2ZVRaLCBp
bnQmIG9mZnNldCk7CiBkb3VibGUgdGltZUNsaXAoZG91YmxlKTsKIC8vIGRheU9mV2VlazogWzAs
IDZdIDAgYmVpbmcgTW9uZGF5LCBkYXk6IFsxLCAzMV0sIG1vbnRoOiBbMCwgMTFdLCB5ZWFyOiBl
eDogMjAxMSwgaG91cnM6IFswLCAyM10sIG1pbnV0ZXM6IFswLCA1OV0sIHNlY29uZHM6IFswLCA1
OV0sIHV0Y09mZnNldDogWy03MjAsNzIwXS4gCkBAIC04OSwxOCArODksMTggQEAgY29uc3QgZG91
YmxlIG1zUGVyTW9udGggPSAyNTkyMDAwMDAwLjA7CiBib29sIGlzTGVhcFllYXIoaW50IHllYXIp
OwogCiAvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZGF5cyBmcm9tIDE5NzAtMDEtMDEgdG8gdGhl
IHNwZWNpZmllZCBkYXRlLgotZG91YmxlIGRhdGVUb0RheXNGcm9tMTk3MChpbnQgeWVhciwgaW50
IG1vbnRoLCBpbnQgZGF5KTsKLWludCBtc1RvWWVhcihkb3VibGUgbXMpOworV1RGX0VYUE9SVF9Q
UklWQVRFIGRvdWJsZSBkYXRlVG9EYXlzRnJvbTE5NzAoaW50IHllYXIsIGludCBtb250aCwgaW50
IGRheSk7CitXVEZfRVhQT1JUX1BSSVZBVEUgaW50IG1zVG9ZZWFyKGRvdWJsZSBtcyk7CiBkb3Vi
bGUgbXNUb0RheXMoZG91YmxlIG1zKTsKIGludCBtc1RvTWludXRlcyhkb3VibGUgbXMpOwogaW50
IG1zVG9Ib3Vycyhkb3VibGUgbXMpOwotaW50IGRheUluWWVhcihkb3VibGUgbXMsIGludCB5ZWFy
KTsKLWludCBtb250aEZyb21EYXlJblllYXIoaW50IGRheUluWWVhciwgYm9vbCBsZWFwWWVhcik7
Ci1pbnQgZGF5SW5Nb250aEZyb21EYXlJblllYXIoaW50IGRheUluWWVhciwgYm9vbCBsZWFwWWVh
cik7CitXVEZfRVhQT1JUX1BSSVZBVEUgaW50IGRheUluWWVhcihkb3VibGUgbXMsIGludCB5ZWFy
KTsKK1dURl9FWFBPUlRfUFJJVkFURSBpbnQgbW9udGhGcm9tRGF5SW5ZZWFyKGludCBkYXlJblll
YXIsIGJvb2wgbGVhcFllYXIpOworV1RGX0VYUE9SVF9QUklWQVRFIGludCBkYXlJbk1vbnRoRnJv
bURheUluWWVhcihpbnQgZGF5SW5ZZWFyLCBib29sIGxlYXBZZWFyKTsKIAogLy8gUmV0dXJucyBv
ZmZzZXQgbWlsbGlzZWNvbmRzIGZvciBVVEMgYW5kIERTVC4KLWludDMyX3QgY2FsY3VsYXRlVVRD
T2Zmc2V0KCk7Ci1kb3VibGUgY2FsY3VsYXRlRFNUT2Zmc2V0KGRvdWJsZSBtcywgZG91YmxlIHV0
Y09mZnNldCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgaW50MzJfdCBjYWxjdWxhdGVVVENPZmZzZXQo
KTsKK1dURl9FWFBPUlRfUFJJVkFURSBkb3VibGUgY2FsY3VsYXRlRFNUT2Zmc2V0KGRvdWJsZSBt
cywgZG91YmxlIHV0Y09mZnNldCk7CiAKIH0gLy8gbmFtZXNwYWNlIFdURgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0RlY2ltYWxOdW1iZXIuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvRGVjaW1hbE51bWJlci5oCmluZGV4IGFjN2I4MDA1ODJkMzZhYjJhMTc2
YjAzZTA5ZDBjNTJhMDQ1NDI5YjIuLjYxZWZmY2RkM2RjNmZjZGQxMzUyZjYwMWM1NzVmNTViYWE1
NDU0MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRGVjaW1hbE51bWJl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRGVjaW1hbE51bWJlci5oCkBAIC04
MSwxMSArODEsMTEgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQobV9zaWduaWZpY2FuZFswXSAh
PSAnMCcgfHwgIW1fZXhwb25lbnQpOwogICAgIH0KIAotICAgIHVuc2lnbmVkIGJ1ZmZlckxlbmd0
aEZvclN0cmluZ0RlY2ltYWwoKSBjb25zdDsKLSAgICB1bnNpZ25lZCBidWZmZXJMZW5ndGhGb3JT
dHJpbmdFeHBvbmVudGlhbCgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSB1bnNpZ25l
ZCBidWZmZXJMZW5ndGhGb3JTdHJpbmdEZWNpbWFsKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHVuc2lnbmVkIGJ1ZmZlckxlbmd0aEZvclN0cmluZ0V4cG9uZW50aWFsKCkgY29uc3Q7
CiAKLSAgICB1bnNpZ25lZCB0b1N0cmluZ0RlY2ltYWwoVUNoYXIqIGJ1ZmZlciwgdW5zaWduZWQg
YnVmZmVyTGVuZ3RoKSBjb25zdDsKLSAgICB1bnNpZ25lZCB0b1N0cmluZ0V4cG9uZW50aWFsKFVD
aGFyKiBidWZmZXIsIHVuc2lnbmVkIGJ1ZmZlckxlbmd0aCkgY29uc3Q7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHVuc2lnbmVkIHRvU3RyaW5nRGVjaW1hbChVQ2hhciogYnVmZmVyLCB1bnNpZ25l
ZCBidWZmZXJMZW5ndGgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCB0
b1N0cmluZ0V4cG9uZW50aWFsKFVDaGFyKiBidWZmZXIsIHVuc2lnbmVkIGJ1ZmZlckxlbmd0aCkg
Y29uc3Q7CiAKICAgICBib29sIHNpZ24oKSBjb25zdCB7IHJldHVybiBtX3NpZ247IH0KICAgICBp
bnQgZXhwb25lbnQoKSBjb25zdCB7IHJldHVybiBtX2V4cG9uZW50OyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0Zhc3RNYWxsb2MuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi9GYXN0TWFsbG9jLmNwcAppbmRleCA1YzY4NDUwMGY4NDA4MTk1NmIyYTUwMDMx
ODU4MTM2ZWJhMGRkZGFiLi42YjkyZjU1NDIwYmRlMGQ3ZWEyOTA4OTA1MTkyMWQ1MjExNmNlZTJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0Zhc3RNYWxsb2MuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRmFzdE1hbGxvYy5jcHAKQEAgLTE4Miw3ICsx
ODIsNyBAQCBuYW1lc3BhY2UgV1RGIHsKIAogbmFtZXNwYWNlIEludGVybmFsIHsKICNpZiAhRU5B
QkxFKFdURl9NQUxMT0NfVkFMSURBVElPTikKLXZvaWQgZmFzdE1hbGxvY01hdGNoRmFpbGVkKHZv
aWQqKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIGZhc3RNYWxsb2NNYXRjaEZhaWxlZCh2b2lk
Kik7CiAjZWxzZQogQ09NUElMRV9BU1NFUlQoKChzaXplb2YoVmFsaWRhdGlvbkhlYWRlcikgJSBz
aXplb2YoQWxsb2NBbGlnbm1lbnRJbnRlZ2VyKSkgPT0gMCksIFZhbGlkYXRpb25IZWFkZXJfbXVz
dF9wcm9kdWNlX2NvcnJlY3RfYWxpZ25tZW50KTsKICNlbmRpZgpAQCAtNDAwLDcgKzQwMCw3IEBA
IHNpemVfdCBmYXN0TWFsbG9jU2l6ZShjb25zdCB2b2lkKiBwKQogI2lmIE9TKERBUldJTikKIC8v
IFRoaXMgc3ltYm9sIGlzIHByZXNlbnQgaW4gdGhlIEphdmFTY3JpcHRDb3JlIGV4cG9ydHMgZmls
ZSBldmVuIHdoZW4gRmFzdE1hbGxvYyBpcyBkaXNhYmxlZC4KIC8vIEl0IHdpbGwgbmV2ZXIgYmUg
dXNlZCBpbiB0aGlzIGNhc2UsIHNvIGl0J3MgdHlwZSBhbmQgdmFsdWUgYXJlIGxlc3MgaW50ZXJl
c3RpbmcgdGhhbiBpdHMgcHJlc2VuY2UuCi1leHRlcm4gIkMiIGNvbnN0IGludCBqc2NvcmVfZmFz
dG1hbGxvY19pbnRyb3NwZWN0aW9uID0gMDsKK2V4dGVybiAiQyIgV1RGX0VYUE9SVF9QUklWQVRF
IGNvbnN0IGludCBqc2NvcmVfZmFzdG1hbGxvY19pbnRyb3NwZWN0aW9uID0gMDsKICNlbmRpZgog
CiAjZWxzZSAvLyBGT1JDRV9TWVNURU1fTUFMTE9DCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL0Zhc3RNYWxsb2MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRmFz
dE1hbGxvYy5oCmluZGV4IGI0Zjc0ZTQ3YjMyMWE4ZDZhMmQ3NzYwNzQwMjQ5MWQ2ODZkMjhlNjUu
LmIxMTU5MDhiYWQyOGEwODZjMTJiNjViYjJlYTQyNWI0OWYxMDBhNmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvRmFzdE1hbGxvYy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvRmFzdE1hbGxvYy5oCkBAIC0yOSwxMiArMjksMTIgQEAKIG5hbWVzcGFjZSBX
VEYgewogCiAgICAgLy8gVGhlc2UgZnVuY3Rpb25zIGNhbGwgQ1JBU0goKSBpZiBhbiBhbGxvY2F0
aW9uIGZhaWxzLgotICAgIHZvaWQqIGZhc3RNYWxsb2Moc2l6ZV90KTsKLSAgICB2b2lkKiBmYXN0
WmVyb2VkTWFsbG9jKHNpemVfdCk7Ci0gICAgdm9pZCogZmFzdENhbGxvYyhzaXplX3QgbnVtRWxl
bWVudHMsIHNpemVfdCBlbGVtZW50U2l6ZSk7Ci0gICAgdm9pZCogZmFzdFJlYWxsb2Modm9pZCos
IHNpemVfdCk7Ci0gICAgY2hhciogZmFzdFN0ckR1cChjb25zdCBjaGFyKik7Ci0gICAgc2l6ZV90
IGZhc3RNYWxsb2NTaXplKGNvbnN0IHZvaWQqKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9p
ZCogZmFzdE1hbGxvYyhzaXplX3QpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkKiBmYXN0
WmVyb2VkTWFsbG9jKHNpemVfdCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQqIGZhc3RD
YWxsb2Moc2l6ZV90IG51bUVsZW1lbnRzLCBzaXplX3QgZWxlbWVudFNpemUpOworICAgIFdURl9F
WFBPUlRfUFJJVkFURSB2b2lkKiBmYXN0UmVhbGxvYyh2b2lkKiwgc2l6ZV90KTsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgY2hhciogZmFzdFN0ckR1cChjb25zdCBjaGFyKik7CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHNpemVfdCBmYXN0TWFsbG9jU2l6ZShjb25zdCB2b2lkKik7CiAKICAgICBz
dHJ1Y3QgVHJ5TWFsbG9jUmV0dXJuVmFsdWUgewogICAgICAgICBUcnlNYWxsb2NSZXR1cm5WYWx1
ZSh2b2lkKiBkYXRhKQpAQCAtNjgsMjYgKzY4LDI2IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAg
ICByZXR1cm4gcmV0dXJuVmFsdWU7CiAgICAgfQogCi0gICAgVHJ5TWFsbG9jUmV0dXJuVmFsdWUg
dHJ5RmFzdE1hbGxvYyhzaXplX3Qgbik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFRyeU1hbGxv
Y1JldHVyblZhbHVlIHRyeUZhc3RNYWxsb2Moc2l6ZV90IG4pOwogICAgIFRyeU1hbGxvY1JldHVy
blZhbHVlIHRyeUZhc3RaZXJvZWRNYWxsb2Moc2l6ZV90IG4pOwotICAgIFRyeU1hbGxvY1JldHVy
blZhbHVlIHRyeUZhc3RDYWxsb2Moc2l6ZV90IG5fZWxlbWVudHMsIHNpemVfdCBlbGVtZW50X3Np
emUpOwotICAgIFRyeU1hbGxvY1JldHVyblZhbHVlIHRyeUZhc3RSZWFsbG9jKHZvaWQqIHAsIHNp
emVfdCBuKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVHJ5TWFsbG9jUmV0dXJuVmFsdWUgdHJ5
RmFzdENhbGxvYyhzaXplX3Qgbl9lbGVtZW50cywgc2l6ZV90IGVsZW1lbnRfc2l6ZSk7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIFRyeU1hbGxvY1JldHVyblZhbHVlIHRyeUZhc3RSZWFsbG9jKHZv
aWQqIHAsIHNpemVfdCBuKTsKIAotICAgIHZvaWQgZmFzdEZyZWUodm9pZCopOworICAgIFdURl9F
WFBPUlRfUFJJVkFURSB2b2lkIGZhc3RGcmVlKHZvaWQqKTsKIAogI2lmbmRlZiBOREVCVUcgICAg
CiAgICAgdm9pZCBmYXN0TWFsbG9jRm9yYmlkKCk7CiAgICAgdm9pZCBmYXN0TWFsbG9jQWxsb3co
KTsKICNlbmRpZgogCi0gICAgdm9pZCByZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnkoKTsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnkoKTsK
ICAgICAKICAgICBzdHJ1Y3QgRmFzdE1hbGxvY1N0YXRpc3RpY3MgewogICAgICAgICBzaXplX3Qg
cmVzZXJ2ZWRWTUJ5dGVzOwogICAgICAgICBzaXplX3QgY29tbWl0dGVkVk1CeXRlczsKICAgICAg
ICAgc2l6ZV90IGZyZWVMaXN0Qnl0ZXM7CiAgICAgfTsKLSAgICBGYXN0TWFsbG9jU3RhdGlzdGlj
cyBmYXN0TWFsbG9jU3RhdGlzdGljcygpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBGYXN0TWFs
bG9jU3RhdGlzdGljcyBmYXN0TWFsbG9jU3RhdGlzdGljcygpOwogCiAgICAgLy8gVGhpcyBkZWZp
bmVzIGEgdHlwZSB3aGljaCBob2xkcyBhbiB1bnNpZ25lZCBpbnRlZ2VyIGFuZCBpcyB0aGUgc2Ft
ZQogICAgIC8vIHNpemUgYXMgdGhlIG1pbmltYWxseSBhbGlnbmVkIG1lbW9yeSBhbGxvY2F0aW9u
LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9NRDUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvTUQ1LmgKaW5kZXggM2NhYTgxMGJhYTQwYTYyODMxNDg4ZjU2ZDEw
ODE0M2JiMzNmMDUwMy4uZWYwMjdjY2FkNzIzMDAxNGVkYjQ0ZjZiN2I2ZWQ0ZDJhYWY1MzgxNyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9NRDUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL01ENS5oCkBAIC0zNywxNiArMzcsMTYgQEAgbmFtZXNwYWNlIFdU
RiB7CiAKIGNsYXNzIE1ENSB7CiBwdWJsaWM6Ci0gICAgTUQ1KCk7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIE1ENSgpOwogCiAgICAgdm9pZCBhZGRCeXRlcyhjb25zdCBWZWN0b3I8dWludDhfdD4m
IGlucHV0KQogICAgIHsKICAgICAgICAgYWRkQnl0ZXMoaW5wdXQuZGF0YSgpLCBpbnB1dC5zaXpl
KCkpOwogICAgIH0KLSAgICB2b2lkIGFkZEJ5dGVzKGNvbnN0IHVpbnQ4X3QqIGlucHV0LCBzaXpl
X3QgbGVuZ3RoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhZGRCeXRlcyhjb25zdCB1
aW50OF90KiBpbnB1dCwgc2l6ZV90IGxlbmd0aCk7CiAKICAgICAvLyBjaGVja3N1bSBoYXMgYSBz
aWRlIGVmZmVjdCBvZiByZXNldHRpbmcgdGhlIHN0YXRlIG9mIHRoZSBvYmplY3QuCi0gICAgdm9p
ZCBjaGVja3N1bShWZWN0b3I8dWludDhfdCwgMTY+Jik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHZvaWQgY2hlY2tzdW0oVmVjdG9yPHVpbnQ4X3QsIDE2PiYpOwogCiBwcml2YXRlOgogICAgIHVp
bnQzMl90IG1fYnVmWzRdOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9N
YWluVGhyZWFkLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL01haW5UaHJlYWQuaAppbmRl
eCBjMTUzZDFlYmE0ODVhNzJmMWRhZmQyOTUzMjM2YWFiM2I3Y2ZjZWQ3Li5mZjc2YTVmZDM0MTkx
ZDFhNmFjMWZmZmY5MzUzZGJiNDM5MjlhMGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL01haW5UaHJlYWQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL01h
aW5UaHJlYWQuaApAQCAtNDAsMjEgKzQwLDIxIEBAIHR5cGVkZWYgdWludDMyX3QgVGhyZWFkSWRl
bnRpZmllcjsKIHR5cGVkZWYgdm9pZCBNYWluVGhyZWFkRnVuY3Rpb24odm9pZCopOwogCiAvLyBN
dXN0IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KLXZvaWQgaW5pdGlhbGl6ZU1haW5U
aHJlYWQoKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIGluaXRpYWxpemVNYWluVGhyZWFkKCk7
CiAKLXZvaWQgY2FsbE9uTWFpblRocmVhZChNYWluVGhyZWFkRnVuY3Rpb24qLCB2b2lkKiBjb250
ZXh0KTsKLXZvaWQgY2FsbE9uTWFpblRocmVhZEFuZFdhaXQoTWFpblRocmVhZEZ1bmN0aW9uKiwg
dm9pZCogY29udGV4dCk7Ci12b2lkIGNhbmNlbENhbGxPbk1haW5UaHJlYWQoTWFpblRocmVhZEZ1
bmN0aW9uKiwgdm9pZCogY29udGV4dCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBjYWxsT25N
YWluVGhyZWFkKE1haW5UaHJlYWRGdW5jdGlvbiosIHZvaWQqIGNvbnRleHQpOworV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQgY2FsbE9uTWFpblRocmVhZEFuZFdhaXQoTWFpblRocmVhZEZ1bmN0aW9u
Kiwgdm9pZCogY29udGV4dCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBjYW5jZWxDYWxsT25N
YWluVGhyZWFkKE1haW5UaHJlYWRGdW5jdGlvbiosIHZvaWQqIGNvbnRleHQpOwogCiB0ZW1wbGF0
ZTx0eXBlbmFtZT4gY2xhc3MgRnVuY3Rpb247Ci12b2lkIGNhbGxPbk1haW5UaHJlYWQoY29uc3Qg
RnVuY3Rpb248dm9pZCAoKT4mKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIGNhbGxPbk1haW5U
aHJlYWQoY29uc3QgRnVuY3Rpb248dm9pZCAoKT4mKTsKICAgICAKLXZvaWQgc2V0TWFpblRocmVh
ZENhbGxiYWNrc1BhdXNlZChib29sIHBhdXNlZCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBz
ZXRNYWluVGhyZWFkQ2FsbGJhY2tzUGF1c2VkKGJvb2wgcGF1c2VkKTsKIAotYm9vbCBpc01haW5U
aHJlYWQoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGlzTWFpblRocmVhZCgpOwogI2lmIEVO
QUJMRShQQVJBTExFTF9HQykKIHZvaWQgcmVnaXN0ZXJHQ1RocmVhZCgpOwotYm9vbCBpc01haW5U
aHJlYWRPckdDVGhyZWFkKCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc01haW5UaHJlYWRP
ckdDVGhyZWFkKCk7CiAjZWxpZiBQTEFURk9STShNQUMpCiBib29sIGlzTWFpblRocmVhZE9yR0NU
aHJlYWQoKTsKICNlbHNlCkBAIC03MCw3ICs3MCw3IEBAIHZvaWQgZGlzcGF0Y2hGdW5jdGlvbnNG
cm9tTWFpblRocmVhZCgpOwogLy8gVGhpcyB2ZXJzaW9uIG9mIGluaXRpYWxpemVNYWluVGhyZWFk
IHNldHMgdXAgdGhlIG1haW4gdGhyZWFkIGFzIGNvcnJlc3BvbmRpbmcKIC8vIHRvIHRoZSBwcm9j
ZXNzJ3MgbWFpbiB0aHJlYWQsIGFuZCBub3QgbmVjZXNzYXJpbHkgdGhlIHRocmVhZCB0aGF0IGNh
bGxzIHRoaXMKIC8vIGZ1bmN0aW9uLiBJdCBzaG91bGQgb25seSBiZSB1c2VkIGFzIGEgbGVnYWN5
IGFpZCBmb3IgTWFjIFdlYktpdC4KLXZvaWQgaW5pdGlhbGl6ZU1haW5UaHJlYWRUb1Byb2Nlc3NN
YWluVGhyZWFkKCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbml0aWFsaXplTWFpblRocmVh
ZFRvUHJvY2Vzc01haW5UaHJlYWQoKTsKIHZvaWQgaW5pdGlhbGl6ZU1haW5UaHJlYWRUb1Byb2Nl
c3NNYWluVGhyZWFkUGxhdGZvcm0oKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL01ldGFBbGxvY2F0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvTWV0YUFsbG9jYXRvci5oCmluZGV4IGNmOTcxYjcyMDc3YzQ4MzFhOWQwNDMxODAzNmRlNjY5
Y2Q1ZTUwNDIuLmEzMzcwMzk0NGMwYmRlMTk5NWY0ZWYzY2YxNThhMTg3MWNmMzZmMGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvTWV0YUFsbG9jYXRvci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvTWV0YUFsbG9jYXRvci5oCkBAIC00NywxMSArNDcsMTEg
QEAgY2xhc3MgTWV0YUFsbG9jYXRvciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWV0YUFs
bG9jYXRvcik7CiBwdWJsaWM6CiAgICAgCi0gICAgTWV0YUFsbG9jYXRvcihzaXplX3QgYWxsb2Nh
dGlvbkdyYW51bGUpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBNZXRhQWxsb2NhdG9yKHNpemVf
dCBhbGxvY2F0aW9uR3JhbnVsZSk7CiAgICAgCiAgICAgdmlydHVhbCB+TWV0YUFsbG9jYXRvcigp
OwogICAgIAotICAgIFBhc3NSZWZQdHI8TWV0YUFsbG9jYXRvckhhbmRsZT4gYWxsb2NhdGUoc2l6
ZV90IHNpemVJbkJ5dGVzKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgUGFzc1JlZlB0cjxNZXRh
QWxsb2NhdG9ySGFuZGxlPiBhbGxvY2F0ZShzaXplX3Qgc2l6ZUluQnl0ZXMpOwogICAgIAogICAg
IC8vIE5vbi1hdG9taWMgbWV0aG9kcyBmb3IgZ2V0dGluZyBhbGxvY2F0b3Igc3RhdGlzdGljcy4K
ICAgICBzaXplX3QgYnl0ZXNBbGxvY2F0ZWQoKSB7IHJldHVybiBtX2J5dGVzQWxsb2NhdGVkOyB9
CkBAIC02OSwxMSArNjksMTEgQEAgcHVibGljOgogICAgIC8vIEFkZCBtb3JlIGZyZWUgc3BhY2Ug
dG8gdGhlIGFsbG9jYXRvci4gQ2FsbCB0aGlzIGRpcmVjdGx5IGZyb20KICAgICAvLyB0aGUgY29u
c3RydWN0b3IgaWYgeW91IHdpc2ggdG8gb3BlcmF0ZSB0aGUgYWxsb2NhdG9yIHdpdGhpbiBhCiAg
ICAgLy8gZml4ZWQgcG9vbC4KLSAgICB2b2lkIGFkZEZyZXNoRnJlZVNwYWNlKHZvaWQqIHN0YXJ0
LCBzaXplX3Qgc2l6ZUluQnl0ZXMpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFkZEZy
ZXNoRnJlZVNwYWNlKHZvaWQqIHN0YXJ0LCBzaXplX3Qgc2l6ZUluQnl0ZXMpOwogCiAgICAgLy8g
VGhpcyBpcyBtZWFudCBvbmx5IGZvciBpbXBsZW1lbnRpbmcgdGVzdHMuIE5ldmVyIGNhbGwgdGhp
cyBpbiByZWxlYXNlCiAgICAgLy8gYnVpbGRzLgotICAgIHNpemVfdCBkZWJ1Z0ZyZWVTcGFjZVNp
emUoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGRlYnVnRnJlZVNwYWNlU2l6ZSgp
OwogICAgIAogI2lmIEVOQUJMRShNRVRBX0FMTE9DQVRPUl9QUk9GSUxFKQogICAgIHZvaWQgZHVt
cFByb2ZpbGUoKTsKQEAgLTEyNyw3ICsxMjcsNyBAQCBwcml2YXRlOgogICAgIHNpemVfdCByb3Vu
ZFVwKHNpemVfdCBzaXplSW5CeXRlcyk7CiAgICAgCiAgICAgRnJlZVNwYWNlTm9kZSogYWxsb2NG
cmVlU3BhY2VOb2RlKCk7Ci0gICAgdm9pZCBmcmVlRnJlZVNwYWNlTm9kZShGcmVlU3BhY2VOb2Rl
Kik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZnJlZUZyZWVTcGFjZU5vZGUoRnJlZVNw
YWNlTm9kZSopOwogICAgIAogICAgIHNpemVfdCBtX2FsbG9jYXRpb25HcmFudWxlOwogICAgIHVu
c2lnbmVkIG1fbG9nQWxsb2NhdGlvbkdyYW51bGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL01ldGFBbGxvY2F0b3JIYW5kbGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvTWV0YUFsbG9jYXRvckhhbmRsZS5oCmluZGV4IDVhMzIwODFkNGYwZjhmNjQ1NTE4Yzgx
MzE5OTZlNmIwMTBhZDhjYzAuLjkzMTA5NTJiMDZmMDE5NmE5ZGM2ZTczMzlkZjdlMGExYzY0NzM2
NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvTWV0YUFsbG9jYXRvckhh
bmRsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvTWV0YUFsbG9jYXRvckhhbmRs
ZS5oCkBAIC01MCw3ICs1MCw3IEBAIHByaXZhdGU6CiAgICAgfQogICAgIAogcHVibGljOgotICAg
IH5NZXRhQWxsb2NhdG9ySGFuZGxlKCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIH5NZXRhQWxs
b2NhdG9ySGFuZGxlKCk7CiAgICAgCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TWV0YUFsbG9jYXRv
ckhhbmRsZT4gY3JlYXRlU2VsZk1hbmFnZWRIYW5kbGUodm9pZCogc3RhcnQsIHNpemVfdCBzaXpl
SW5CeXRlcykKICAgICB7CkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IG1fc2l6ZUluQnl0ZXM7CiAgICAgfQogICAgICAgICAKLSAgICB2b2lkIHNocmluayhzaXplX3Qg
bmV3U2l6ZUluQnl0ZXMpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNocmluayhzaXpl
X3QgbmV3U2l6ZUluQnl0ZXMpOwogICAgIAogICAgIGJvb2wgaXNNYW5hZ2VkKCkKICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL09TQWxsb2NhdG9yLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL09TQWxsb2NhdG9yLmgKaW5kZXggYmY5ZjA0OTY4NzFmNWM5
NTA4NjhkM2NmNDU0YWEzNDk4NTAwMGRjOS4uYmU3OTFhOGM4ZmQwOGMzM2E2ZTcyYmQ3NDZmN2Fl
M2JlYTU2Y2U5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9PU0FsbG9j
YXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvT1NBbGxvY2F0b3IuaApAQCAt
NDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgLy8gcmVsZWFzZURlY29tbWl0dGVkIHNob3VsZCBi
ZSBjYWxsZWQgb24gYSByZWdpb24gb2YgVk0gYWxsb2NhdGVkIGJ5IGEgc2luZ2xlIHJlc2VydmF0
aW9uLAogICAgIC8vIHRoZSBtZW1vcnkgbXVzdCBhbGwgY3VycmVudGx5IGJlIGluIGEgZGVjb21t
aXR0ZWQgc3RhdGUuCiAgICAgc3RhdGljIHZvaWQqIHJlc2VydmVVbmNvbW1pdHRlZChzaXplX3Qs
IFVzYWdlID0gVW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxlID0gdHJ1ZSwgYm9vbCBleGVjdXRh
YmxlID0gZmFsc2UsIGJvb2wgaW5jbHVkZXNHdWFyZFBhZ2VzID0gZmFsc2UpOwotICAgIHN0YXRp
YyB2b2lkIHJlbGVhc2VEZWNvbW1pdHRlZCh2b2lkKiwgc2l6ZV90KTsKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIHZvaWQgcmVsZWFzZURlY29tbWl0dGVkKHZvaWQqLCBzaXplX3QpOwog
CiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgc3ltbWV0cmljOyB0aGV5IGNvbW1pdCBvciBkZWNv
bW1pdCBhIHJlZ2lvbiBvZiBWTSAodW5jb21taXR0ZWQgVk0gc2hvdWxkCiAgICAgLy8gbmV2ZXIg
YmUgYWNjZXNzZWQsIHNpbmNlIHRoZSBPUyBtYXkgbm90IGhhdmUgYXR0YWNoZWQgcGh5c2ljYWwg
bWVtb3J5IGZvciB0aGVzZSByZWdpb25zKS4KQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAg
IC8vIFRoZXNlIG1ldGhvZHMgYXJlIHN5bW1ldHJpYzsgcmVzZXJ2ZUFuZENvbW1pdCBhbGxvY2F0
ZXMgVk0gaW4gYW4gY29tbWl0dGVkIHN0YXRlLAogICAgIC8vIGRlY29tbWl0QW5kUmVsZWFzZSBz
aG91bGQgYmUgY2FsbGVkIG9uIGEgcmVnaW9uIG9mIFZNIGFsbG9jYXRlZCBieSBhIHNpbmdsZSBy
ZXNlcnZhdGlvbiwKICAgICAvLyB0aGUgbWVtb3J5IG11c3QgYWxsIGN1cnJlbnRseSBiZSBpbiBh
IGNvbW1pdHRlZCBzdGF0ZS4KLSAgICBzdGF0aWMgdm9pZCogcmVzZXJ2ZUFuZENvbW1pdChzaXpl
X3QsIFVzYWdlID0gVW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxlID0gdHJ1ZSwgYm9vbCBleGVj
dXRhYmxlID0gZmFsc2UsIGJvb2wgaW5jbHVkZXNHdWFyZFBhZ2VzID0gZmFsc2UpOworICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCogcmVzZXJ2ZUFuZENvbW1pdChzaXplX3QsIFVz
YWdlID0gVW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxlID0gdHJ1ZSwgYm9vbCBleGVjdXRhYmxl
ID0gZmFsc2UsIGJvb2wgaW5jbHVkZXNHdWFyZFBhZ2VzID0gZmFsc2UpOwogICAgIHN0YXRpYyB2
b2lkIGRlY29tbWl0QW5kUmVsZWFzZSh2b2lkKiBiYXNlLCBzaXplX3Qgc2l6ZSk7CiAKICAgICAv
LyBUaGVzZSBtZXRob2RzIGFyZSBha2luIHRvIHJlc2VydmVBbmRDb21taXQvZGVjb21taXRBbmRS
ZWxlYXNlLCBhYm92ZSAtIGhvd2V2ZXIgcmF0aGVyIHRoYW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvUGFnZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L1BhZ2VCbG9jay5oCmluZGV4IGUxN2M1NDYwYWRiNDI5YmUxMmIyZjkyMDEyMDAwYzg3OGMwMDVh
MTMuLjNjMzQ4YTBlMzFkMzQ2YjAxM2I5MzcxM2JhMjNlMzA5MTIxMzZkM2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGFnZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi9QYWdlQmxvY2suaApAQCAtMjgsNyArMjgsNyBAQAogCiBuYW1lc3BhY2Ug
V1RGIHsKIAotc2l6ZV90IHBhZ2VTaXplKCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IHBh
Z2VTaXplKCk7CiBpbmxpbmUgYm9vbCBpc1BhZ2VBbGlnbmVkKHZvaWQqIGFkZHJlc3MpIHsgcmV0
dXJuICEocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oYWRkcmVzcykgJiAocGFnZVNpemUoKSAt
IDEpKTsgfQogaW5saW5lIGJvb2wgaXNQYWdlQWxpZ25lZChzaXplX3Qgc2l6ZSkgeyByZXR1cm4g
IShzaXplICYgKHBhZ2VTaXplKCkgLSAxKSk7IH0KIGlubGluZSBib29sIGlzUG93ZXJPZlR3byhz
aXplX3Qgc2l6ZSkgeyByZXR1cm4gIShzaXplICYgKHNpemUgLSAxKSk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUmFuZG9tTnVtYmVyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL1JhbmRvbU51bWJlci5oCmluZGV4IGYyZTdlOGY1MGY3ZWJkZWQxYjNiNzY1
ZjJkMWM3ZWQxMTdjN2E0ZjguLjc2YjIyMzU4MmNiYmE2MWUzMGNkNDg0MTI1NzMzYTYxMTAxMGMy
M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUmFuZG9tTnVtYmVyLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9SYW5kb21OdW1iZXIuaApAQCAtMzAsNyAr
MzAsNyBAQCBuYW1lc3BhY2UgV1RGIHsKIAogICAgIC8vIFJldHVybnMgYSBwc2V1ZG8tcmFuZG9t
IG51bWJlciBpbiB0aGUgcmFuZ2UgWzAsIDEpLCBhdHRlbXB0cyB0byBiZQogICAgIC8vIGNyeXB0
b2dyYXBoaWNhbGx5IHNlY3VyZSBpZiBwb3NzaWJsZSBvbiB0aGUgdGFyZ2V0IHBsYXRmb3JtCi0g
ICAgZG91YmxlIHJhbmRvbU51bWJlcigpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBkb3VibGUg
cmFuZG9tTnVtYmVyKCk7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
UmVmQ291bnRlZExlYWtDb3VudGVyLmgKaW5kZXggMjJjNzUwNmFjMTlhOWFiNWM0MTc3ZmFhMDNm
MWEwOTNiZTdlOTU0ZC4uNDc2YjE3MzVhZGI0MTNmNTM1NWQ2NzRlZTRiMWEzYzI5YTZhM2Q3NSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9SZWZDb3VudGVkTGVha0NvdW50
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1JlZkNvdW50ZWRMZWFrQ291bnRl
ci5oCkBAIC0yNywxNCArMjcsMTQgQEAKIG5hbWVzcGFjZSBXVEYgewogICAgIAogICAgIHN0cnVj
dCBSZWZDb3VudGVkTGVha0NvdW50ZXIgewotICAgICAgICBzdGF0aWMgdm9pZCBzdXBwcmVzc01l
c3NhZ2VzKGNvbnN0IGNoYXIqKTsKLSAgICAgICAgc3RhdGljIHZvaWQgY2FuY2VsTWVzc2FnZVN1
cHByZXNzaW9uKGNvbnN0IGNoYXIqKTsKKyAgICAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyB2b2lkIHN1cHByZXNzTWVzc2FnZXMoY29uc3QgY2hhciopOworICAgICAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIHZvaWQgY2FuY2VsTWVzc2FnZVN1cHByZXNzaW9uKGNvbnN0IGNoYXIq
KTsKICAgICAgICAgCi0gICAgICAgIGV4cGxpY2l0IFJlZkNvdW50ZWRMZWFrQ291bnRlcihjb25z
dCBjaGFyKiBkZXNjcmlwdGlvbik7Ci0gICAgICAgIH5SZWZDb3VudGVkTGVha0NvdW50ZXIoKTsK
KyAgICAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IFJlZkNvdW50ZWRMZWFrQ291bnRl
cihjb25zdCBjaGFyKiBkZXNjcmlwdGlvbik7CisgICAgICAgIFdURl9FWFBPUlRfUFJJVkFURSB+
UmVmQ291bnRlZExlYWtDb3VudGVyKCk7CiAKLSAgICAgICAgdm9pZCBpbmNyZW1lbnQoKTsKLSAg
ICAgICAgdm9pZCBkZWNyZW1lbnQoKTsKKyAgICAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQg
aW5jcmVtZW50KCk7CisgICAgICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGRlY3JlbWVudCgp
OwogCiAjaWZuZGVmIE5ERUJVRwogICAgIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL1NIQTEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvU0hBMS5o
CmluZGV4IGRhZDZkYzg2NzAwMzNlNWM4YTgwYmUyNTllMDVjMjcxMTlkY2U2MTIuLmU4Y2M4MDJl
OWU2ZTE2YjA5NGI2MjE3ZDZmOWY1YTc3ZDE1NTljZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvU0hBMS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvU0hB
MS5oCkBAIC0zNywxNiArMzcsMTYgQEAgbmFtZXNwYWNlIFdURiB7CiAKIGNsYXNzIFNIQTEgewog
cHVibGljOgotICAgIFNIQTEoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU0hBMSgpOwogCiAg
ICAgdm9pZCBhZGRCeXRlcyhjb25zdCBWZWN0b3I8dWludDhfdD4mIGlucHV0KQogICAgIHsKICAg
ICAgICAgYWRkQnl0ZXMoaW5wdXQuZGF0YSgpLCBpbnB1dC5zaXplKCkpOwogICAgIH0KLSAgICB2
b2lkIGFkZEJ5dGVzKGNvbnN0IHVpbnQ4X3QqIGlucHV0LCBzaXplX3QgbGVuZ3RoKTsKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhZGRCeXRlcyhjb25zdCB1aW50OF90KiBpbnB1dCwgc2l6
ZV90IGxlbmd0aCk7CiAKICAgICAvLyBjb21wdXRlSGFzaCBoYXMgYSBzaWRlIGVmZmVjdCBvZiBy
ZXNldHRpbmcgdGhlIHN0YXRlIG9mIHRoZSBvYmplY3QuCi0gICAgdm9pZCBjb21wdXRlSGFzaChW
ZWN0b3I8dWludDhfdCwgMjA+Jik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgY29tcHV0
ZUhhc2goVmVjdG9yPHVpbnQ4X3QsIDIwPiYpOwogCiBwcml2YXRlOgogICAgIHZvaWQgZmluYWxp
emUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmNwcAppbmRleCBmMmUwNTY1
ZTk5NjI1OGY3ODg2ZTAzYWQ0NGY4OTBkMmQ3YjZjZWVjLi5kOGRiYmFlNGY1NDc2NWQ2MWU5ZjIw
ODZkMzAxN2MwYTRhNTE3YTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L1RocmVhZGluZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmcu
Y3BwCkBAIC04OSw3ICs4OSw3IEBAIFRocmVhZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkKFRocmVh
ZEZ1bmN0aW9uIGVudHJ5UG9pbnQsIHZvaWQqIGRhdGEsIGNvbnN0IGNoYXIqCiAvLyBUaGlzIGZ1
bmN0aW9uIGlzIGRlcHJlY2F0ZWQgYnV0IG5lZWRzIHRvIGJlIGtlcHQgYXJvdW5kIGZvciBiYWNr
d2FyZAogLy8gY29tcGF0aWJpbGl0eS4gVXNlIHRoZSAzLWFyZ3VtZW50IHZlcnNpb24gb2YgY3Jl
YXRlVGhyZWFkIGFib3ZlLgogCi1UaHJlYWRJZGVudGlmaWVyIGNyZWF0ZVRocmVhZChUaHJlYWRG
dW5jdGlvbiBlbnRyeVBvaW50LCB2b2lkKiBkYXRhKTsKK1dURl9FWFBPUlRfUFJJVkFURSBUaHJl
YWRJZGVudGlmaWVyIGNyZWF0ZVRocmVhZChUaHJlYWRGdW5jdGlvbiBlbnRyeVBvaW50LCB2b2lk
KiBkYXRhKTsKIAogVGhyZWFkSWRlbnRpZmllciBjcmVhdGVUaHJlYWQoVGhyZWFkRnVuY3Rpb24g
ZW50cnlQb2ludCwgdm9pZCogZGF0YSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvVGhyZWFkaW5nLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGlu
Zy5oCmluZGV4IDNhODk3NTdhOTE0YTczYjIxNzI1Y2MwODk4ZDEwMmJkZThiZDdlNGMuLjFkZWU1
ZGExY2FmN2JhY2VhN2RlNjdiNTU1ZWQ5MTUyYmNhODJlYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9UaHJlYWRpbmcuaApAQCAtODMsMTEgKzgzLDExIEBAIHR5cGVkZWYgdm9pZCogKCpUaHJl
YWRGdW5jdGlvbikodm9pZCogYXJndW1lbnQpOwogLy8gVGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNh
bGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4gSXQgaXMgc2FmZSB0byBjYWxsIGl0IHJlcGVhdGVk
bHkuCiAvLyBEYXJ3aW4gaXMgYW4gZXhjZXB0aW9uIHRvIHRoaXMgcnVsZTogaXQgaXMgT0sgdG8g
Y2FsbCBpdCBmcm9tIGFueSB0aHJlYWQsIHRoZSBvbmx5IAogLy8gcmVxdWlyZW1lbnQgaXMgdGhh
dCB0aGUgY2FsbHMgYXJlIG5vdCByZWVudHJhbnQuCi12b2lkIGluaXRpYWxpemVUaHJlYWRpbmco
KTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKIAogLy8g
UmV0dXJucyAwIGlmIHRocmVhZCBjcmVhdGlvbiBmYWlsZWQuCiAvLyBUaGUgdGhyZWFkIG5hbWUg
bXVzdCBiZSBhIGxpdGVyYWwgc2luY2Ugb24gc29tZSBwbGF0Zm9ybXMgaXQncyBwYXNzZWQgaW4g
dG8gdGhlIHRocmVhZC4KLVRocmVhZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkKFRocmVhZEZ1bmN0
aW9uLCB2b2lkKiwgY29uc3QgY2hhciogdGhyZWFkTmFtZSk7CitXVEZfRVhQT1JUX1BSSVZBVEUg
VGhyZWFkSWRlbnRpZmllciBjcmVhdGVUaHJlYWQoVGhyZWFkRnVuY3Rpb24sIHZvaWQqLCBjb25z
dCBjaGFyKiB0aHJlYWROYW1lKTsKIAogLy8gSW50ZXJuYWwgcGxhdGZvcm0tc3BlY2lmaWMgY3Jl
YXRlVGhyZWFkIGltcGxlbWVudGF0aW9uLgogVGhyZWFkSWRlbnRpZmllciBjcmVhdGVUaHJlYWRJ
bnRlcm5hbChUaHJlYWRGdW5jdGlvbiwgdm9pZCosIGNvbnN0IGNoYXIqIHRocmVhZE5hbWUpOwpA
QCAtOTYsMTQgKzk2LDE0IEBAIFRocmVhZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkSW50ZXJuYWwo
VGhyZWFkRnVuY3Rpb24sIHZvaWQqLCBjb25zdCBjaGFyKiB0aHJlYWROCiAvLyBIZWxwZnVsIGZv
ciBwbGF0Zm9ybXMgd2hlcmUgdGhlIHRocmVhZCBuYW1lIG11c3QgYmUgc2V0IGZyb20gd2l0aGlu
IHRoZSB0aHJlYWQuCiB2b2lkIGluaXRpYWxpemVDdXJyZW50VGhyZWFkSW50ZXJuYWwoY29uc3Qg
Y2hhciogdGhyZWFkTmFtZSk7CiAKLVRocmVhZElkZW50aWZpZXIgY3VycmVudFRocmVhZCgpOwot
aW50IHdhaXRGb3JUaHJlYWRDb21wbGV0aW9uKFRocmVhZElkZW50aWZpZXIsIHZvaWQqKik7Ci12
b2lkIGRldGFjaFRocmVhZChUaHJlYWRJZGVudGlmaWVyKTsKK1dURl9FWFBPUlRfUFJJVkFURSBU
aHJlYWRJZGVudGlmaWVyIGN1cnJlbnRUaHJlYWQoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBpbnQg
d2FpdEZvclRocmVhZENvbXBsZXRpb24oVGhyZWFkSWRlbnRpZmllciwgdm9pZCoqKTsKK1dURl9F
WFBPUlRfUFJJVkFURSB2b2lkIGRldGFjaFRocmVhZChUaHJlYWRJZGVudGlmaWVyKTsKIAotdm9p
ZCB5aWVsZCgpOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgeWllbGQoKTsKIAotdm9pZCBsb2Nr
QXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0ZXgoKTsKLXZvaWQgdW5sb2NrQXRvbWljYWxs
eUluaXRpYWxpemVkU3RhdGljTXV0ZXgoKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIGxvY2tB
dG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCgpOworV1RGX0VYUE9SVF9QUklWQVRFIHZv
aWQgdW5sb2NrQXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0ZXgoKTsKIAogfSAvLyBuYW1l
c3BhY2UgV1RGCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFk
aW5nUHJpbWl0aXZlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdQcmlt
aXRpdmVzLmgKaW5kZXggMWJlZDVkM2FlNTBhZjg0NzAzY2RjMmMwNTAzOWJhYjVkOGU2MzQ1NC4u
MmFjNDJjOGYxZTJkNzUyMWU5MDFlOGM3MWMzMzBjZmY1ZDY1NTMzZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgKQEAgLTgyLDEyICs4Miwx
MiBAQCB0eXBlZGVmIHZvaWQqIFBsYXRmb3JtQ29uZGl0aW9uOwogY2xhc3MgTXV0ZXggewogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKE11dGV4KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6Ci0gICAgTXV0ZXgoKTsKLSAgICB+TXV0ZXgoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgTXV0ZXgoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgfk11dGV4KCk7CiAKLSAgICB2b2lk
IGxvY2soKTsKLSAgICBib29sIHRyeUxvY2soKTsKLSAgICB2b2lkIHVubG9jaygpOworICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSB2b2lkIGxvY2soKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9v
bCB0cnlMb2NrKCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgdW5sb2NrKCk7CiAKIHB1
YmxpYzoKICAgICBQbGF0Zm9ybU11dGV4JiBpbXBsKCkgeyByZXR1cm4gbV9tdXRleDsgfQpAQCAt
MTE4LDE1ICsxMTgsMTUgQEAgcHJpdmF0ZToKIGNsYXNzIFRocmVhZENvbmRpdGlvbiB7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoVGhyZWFkQ29uZGl0aW9uKTsKIHB1YmxpYzoKLSAgICBUaHJl
YWRDb25kaXRpb24oKTsKLSAgICB+VGhyZWFkQ29uZGl0aW9uKCk7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIFRocmVhZENvbmRpdGlvbigpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB+VGhyZWFk
Q29uZGl0aW9uKCk7CiAgICAgCi0gICAgdm9pZCB3YWl0KE11dGV4JiBtdXRleCk7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHZvaWQgd2FpdChNdXRleCYgbXV0ZXgpOwogICAgIC8vIFJldHVybnMg
dHJ1ZSBpZiB0aGUgY29uZGl0aW9uIHdhcyBzaWduYWxlZCBiZWZvcmUgYWJzb2x1dGVUaW1lLCBm
YWxzZSBpZiB0aGUgYWJzb2x1dGVUaW1lIHdhcyByZWFjaGVkIG9yIGlzIGluIHRoZSBwYXN0Lgog
ICAgIC8vIFRoZSBhYnNvbHV0ZVRpbWUgaXMgaW4gc2Vjb25kcywgc3RhcnRpbmcgb24gSmFudWFy
eSAxLCAxOTcwLiBUaGUgdGltZSBpcyBhc3N1bWVkIHRvIHVzZSB0aGUgc2FtZSB0aW1lIHpvbmUg
YXMgV1RGOjpjdXJyZW50VGltZSgpLgotICAgIGJvb2wgdGltZWRXYWl0KE11dGV4JiwgZG91Ymxl
IGFic29sdXRlVGltZSk7Ci0gICAgdm9pZCBzaWduYWwoKTsKLSAgICB2b2lkIGJyb2FkY2FzdCgp
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHRpbWVkV2FpdChNdXRleCYsIGRvdWJsZSBh
YnNvbHV0ZVRpbWUpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNpZ25hbCgpOworICAg
IFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGJyb2FkY2FzdCgpOwogICAgIAogcHJpdmF0ZToKICAg
ICBQbGF0Zm9ybUNvbmRpdGlvbiBtX2NvbmRpdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvV1RGVGhyZWFkRGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9XVEZUaHJlYWREYXRhLmgKaW5kZXggODFiODE3ZjZmOTZjNDAyOTJmZDJiYzBlMWYyYmUzMDZk
MDdjOWE4ZS4uYjAyZDEwZDdjODE5MWE3YTVmZTdiNWU3YTcyNDQyZjU2OGZkNDY3ZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9XVEZUaHJlYWREYXRhLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9XVEZUaHJlYWREYXRhLmgKQEAgLTc4LDggKzc4LDggQEAg
dHlwZWRlZiB2b2lkICgqQXRvbWljU3RyaW5nVGFibGVEZXN0cnVjdG9yKShBdG9taWNTdHJpbmdU
YWJsZSopOwogY2xhc3MgV1RGVGhyZWFkRGF0YSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
V1RGVGhyZWFkRGF0YSk7CiBwdWJsaWM6Ci0gICAgV1RGVGhyZWFkRGF0YSgpOwotICAgIH5XVEZU
aHJlYWREYXRhKCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFdURlRocmVhZERhdGEoKTsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgfldURlRocmVhZERhdGEoKTsKIAogICAgIEF0b21pY1N0cmlu
Z1RhYmxlKiBhdG9taWNTdHJpbmdUYWJsZSgpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9kdG9hLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL2R0b2Eu
aAppbmRleCBkZjMzZTJjZGM4MjJiYWY1ZTIyNzlmMTEzNDIwZmM0YTNlNDczZmRhLi5kMjdjNTky
MDY0N2ZkOTY1NGM4YWViMmFlNTA5ODA2ODBkZTQ3N2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL2R0b2EuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL2R0
b2EuaApAQCAtMzEsMTkgKzMxLDE5IEBAIGV4dGVybiBXVEY6Ok11dGV4KiBzX2R0b2FQNU11dGV4
OwogCiB0eXBlZGVmIGNoYXIgRHRvYUJ1ZmZlcls4MF07CiAKLXZvaWQgZHRvYShEdG9hQnVmZmVy
IHJlc3VsdCwgZG91YmxlIGRkLCBib29sJiBzaWduLCBpbnQmIGV4cG9uZW50LCB1bnNpZ25lZCYg
cHJlY2lzaW9uKTsKLXZvaWQgZHRvYVJvdW5kU0YoRHRvYUJ1ZmZlciByZXN1bHQsIGRvdWJsZSBk
ZCwgaW50IG5kaWdpdHMsIGJvb2wmIHNpZ24sIGludCYgZXhwb25lbnQsIHVuc2lnbmVkJiBwcmVj
aXNpb24pOwotdm9pZCBkdG9hUm91bmREUChEdG9hQnVmZmVyIHJlc3VsdCwgZG91YmxlIGRkLCBp
bnQgbmRpZ2l0cywgYm9vbCYgc2lnbiwgaW50JiBleHBvbmVudCwgdW5zaWduZWQmIHByZWNpc2lv
bik7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBkdG9hKER0b2FCdWZmZXIgcmVzdWx0LCBkb3Vi
bGUgZGQsIGJvb2wmIHNpZ24sIGludCYgZXhwb25lbnQsIHVuc2lnbmVkJiBwcmVjaXNpb24pOwor
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZHRvYVJvdW5kU0YoRHRvYUJ1ZmZlciByZXN1bHQsIGRv
dWJsZSBkZCwgaW50IG5kaWdpdHMsIGJvb2wmIHNpZ24sIGludCYgZXhwb25lbnQsIHVuc2lnbmVk
JiBwcmVjaXNpb24pOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZHRvYVJvdW5kRFAoRHRvYUJ1
ZmZlciByZXN1bHQsIGRvdWJsZSBkZCwgaW50IG5kaWdpdHMsIGJvb2wmIHNpZ24sIGludCYgZXhw
b25lbnQsIHVuc2lnbmVkJiBwcmVjaXNpb24pOwogCiAvLyBzMDA6IGlucHV0IHN0cmluZy4gTXVz
dCBub3QgYmUgMCBhbmQgbXVzdCBiZSB0ZXJtaW5hdGVkIGJ5IDAuCiAvLyBzZTogKnNlIHdpbGwg
aGF2ZSB0aGUgbGFzdCBjb25zdW1lZCBjaGFyYWN0ZXIgcG9zaXRpb24gKyAxLgotZG91YmxlIHN0
cnRvZChjb25zdCBjaGFyKiBzMDAsIGNoYXIqKiBzZSk7CitXVEZfRVhQT1JUX1BSSVZBVEUgZG91
YmxlIHN0cnRvZChjb25zdCBjaGFyKiBzMDAsIGNoYXIqKiBzZSk7CiAKIC8vIFNpemUgPSA4MCBm
b3Igc2l6ZW9mKER0b2FCdWZmZXIpICsgc29tZSBzaWduIGJpdHMsIGRlY2ltYWwgcG9pbnQsICdl
JywgZXhwb25lbnQgZGlnaXRzLgogY29uc3QgdW5zaWduZWQgTnVtYmVyVG9TdHJpbmdCdWZmZXJM
ZW5ndGggPSA5NjsKIHR5cGVkZWYgY2hhciBOdW1iZXJUb1N0cmluZ0J1ZmZlcltOdW1iZXJUb1N0
cmluZ0J1ZmZlckxlbmd0aF07CiB0eXBlZGVmIFVDaGFyIE51bWJlclRvVVN0cmluZ0J1ZmZlcltO
dW1iZXJUb1N0cmluZ0J1ZmZlckxlbmd0aF07Ci1jb25zdCBjaGFyKiBudW1iZXJUb1N0cmluZyhk
b3VibGUsIE51bWJlclRvU3RyaW5nQnVmZmVyKTsKK1dURl9FWFBPUlRfUFJJVkFURSBjb25zdCBj
aGFyKiBudW1iZXJUb1N0cmluZyhkb3VibGUsIE51bWJlclRvU3RyaW5nQnVmZmVyKTsKIGNvbnN0
IGNoYXIqIG51bWJlclRvRml4ZWRQcmVjaXNpb25TdHJpbmcoZG91YmxlLCB1bnNpZ25lZCBzaWdu
aWZpY2FudEZpZ3VyZXMsIE51bWJlclRvU3RyaW5nQnVmZmVyLCBib29sIHRydW5jYXRlVHJhaWxp
bmdaZXJvcyA9IGZhbHNlKTsKIGNvbnN0IGNoYXIqIG51bWJlclRvRml4ZWRXaWR0aFN0cmluZyhk
b3VibGUsIHVuc2lnbmVkIGRlY2ltYWxQbGFjZXMsIE51bWJlclRvU3RyaW5nQnVmZmVyKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oCmluZGV4IDQz
YjM4ZDE3OTRhMDc4ZjdkZTk4YjQ1ODY4OWI2ZTE4ZGRmNzkyOGYuLjRjNDRmM2RkMjcwZDBmMjJh
MWNkODIwMTM3Y2M0ODU3MzBlMTg2MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvdGV4dC9BdG9taWNTdHJpbmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L3RleHQvQXRvbWljU3RyaW5nLmgKQEAgLTM4LDcgKzM4LDcgQEAgc3RydWN0IEF0b21pY1N0cmlu
Z0hhc2g7CiAKIGNsYXNzIEF0b21pY1N0cmluZyB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQg
aW5pdCgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBpbml0KCk7CiAKICAg
ICBBdG9taWNTdHJpbmcoKSB7IH0KICAgICBBdG9taWNTdHJpbmcoY29uc3QgTENoYXIqIHMpIDog
bV9zdHJpbmcoYWRkKHMpKSB7IH0KQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIEF0b21p
Y1N0cmluZyhXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpIDogbV9zdHJpbmcoV1RGOjpI
YXNoVGFibGVEZWxldGVkVmFsdWUpIHsgfQogICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFs
dWUoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9
CiAKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nSW1wbCogZmluZChjb25zdCBVQ2hhciogcywgdW5z
aWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBleGlzdGluZ0hhc2gpOworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgQXRvbWljU3RyaW5nSW1wbCogZmluZChjb25zdCBVQ2hhciogcywgdW5zaWdu
ZWQgbGVuZ3RoLCB1bnNpZ25lZCBleGlzdGluZ0hhc2gpOwogCiAgICAgb3BlcmF0b3IgY29uc3Qg
U3RyaW5nJigpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9CiAgICAgY29uc3QgU3RyaW5nJiBz
dHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfTsKQEAgLTgzLDcgKzgzLDcgQEAgcHVi
bGljOgogICAgIGJvb2wgZW5kc1dpdGgoY29uc3QgU3RyaW5nJiBzLCBib29sIGNhc2VTZW5zaXRp
dmUgPSB0cnVlKSBjb25zdAogICAgICAgICB7IHJldHVybiBtX3N0cmluZy5lbmRzV2l0aChzLCBj
YXNlU2Vuc2l0aXZlKTsgfQogICAgIAotICAgIEF0b21pY1N0cmluZyBsb3dlcigpIGNvbnN0Owor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBBdG9taWNTdHJpbmcgbG93ZXIoKSBjb25zdDsKICAgICBB
dG9taWNTdHJpbmcgdXBwZXIoKSBjb25zdCB7IHJldHVybiBBdG9taWNTdHJpbmcoaW1wbCgpLT51
cHBlcigpKTsgfQogICAgIAogICAgIGludCB0b0ludChib29sKiBvayA9IDApIGNvbnN0IHsgcmV0
dXJuIG1fc3RyaW5nLnRvSW50KG9rKTsgfQpAQCAtMTIwLDIwICsxMjAsMjAgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBTdHJpbmcgbV9zdHJpbmc7CiAgICAgCi0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8U3RyaW5nSW1wbD4gYWRkKGNvbnN0IExDaGFyKik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChjb25zdCBMQ2hhciopOwogICAgIEFM
V0FZU19JTkxJTkUgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkKGNvbnN0IGNoYXIq
IHMpIHsgcmV0dXJuIGFkZChyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4ocykpOyB9Owot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChjb25zdCBVQ2hhciosIHVuc2ln
bmVkIGxlbmd0aCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0
cmluZ0ltcGw+IGFkZChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgQUxXQVlT
X0lOTElORSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGQoY29uc3QgY2hhciogcywg
dW5zaWduZWQgbGVuZ3RoKSB7IHJldHVybiBhZGQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFy
Kj4ocyksIGxlbmd0aCk7IH07Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRk
KGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBleGlzdGluZ0hhc2gpOwot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChjb25zdCBVQ2hhciopOworICAg
IFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGQoY29u
c3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIGV4aXN0aW5nSGFzaCk7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkZChjb25z
dCBVQ2hhciopOwogICAgIEFMV0FZU19JTkxJTkUgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBhZGQo
U3RyaW5nSW1wbCogcikKICAgICB7CiAgICAgICAgIGlmICghciB8fCByLT5pc0F0b21pYygpKQog
ICAgICAgICAgICAgcmV0dXJuIHI7CiAgICAgICAgIHJldHVybiBhZGRTbG93Q2FzZShyKTsKICAg
ICB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkU2xvd0Nhc2UoU3RyaW5n
SW1wbCopOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgZnJvbVVURjhJbnRlcm5hbChjb25zdCBj
aGFyKiwgY29uc3QgY2hhciopOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1Jl
ZlB0cjxTdHJpbmdJbXBsPiBhZGRTbG93Q2FzZShTdHJpbmdJbXBsKik7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBBdG9taWNTdHJpbmcgZnJvbVVURjhJbnRlcm5hbChjb25zdCBjaGFy
KiwgY29uc3QgY2hhciopOwogfTsKIAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBdG9t
aWNTdHJpbmcmIGEsIGNvbnN0IEF0b21pY1N0cmluZyYgYikgeyByZXR1cm4gYS5pbXBsKCkgPT0g
Yi5pbXBsKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9D
U3RyaW5nLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvQ1N0cmluZy5oCmluZGV4
IDM0M2E3YTUyNTIwNzQxZTJhZGNkYmQ4MTBlM2U5OTk1YTM4MGQ0NjQuLmQ0M2FkNGJkN2Q3MDFm
MmMzNzFiNzU5ODQzODQ4Y2FjZmZiZTM4ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvdGV4dC9DU3RyaW5nLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90
ZXh0L0NTdHJpbmcuaApAQCAtNTIsMTYgKzUyLDE2IEBAIHByaXZhdGU6CiBjbGFzcyBDU3RyaW5n
IHsKIHB1YmxpYzoKICAgICBDU3RyaW5nKCkgeyB9Ci0gICAgQ1N0cmluZyhjb25zdCBjaGFyKik7
Ci0gICAgQ1N0cmluZyhjb25zdCBjaGFyKiwgc2l6ZV90IGxlbmd0aCk7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIENTdHJpbmcoY29uc3QgY2hhciopOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBD
U3RyaW5nKGNvbnN0IGNoYXIqLCBzaXplX3QgbGVuZ3RoKTsKICAgICBDU3RyaW5nKENTdHJpbmdC
dWZmZXIqIGJ1ZmZlcikgOiBtX2J1ZmZlcihidWZmZXIpIHsgfQotICAgIHN0YXRpYyBDU3RyaW5n
IG5ld1VuaW5pdGlhbGl6ZWQoc2l6ZV90IGxlbmd0aCwgY2hhciomIGNoYXJhY3RlckJ1ZmZlcik7
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBDU3RyaW5nIG5ld1VuaW5pdGlhbGl6ZWQo
c2l6ZV90IGxlbmd0aCwgY2hhciomIGNoYXJhY3RlckJ1ZmZlcik7CiAKICAgICBjb25zdCBjaGFy
KiBkYXRhKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVy
LT5kYXRhKCkgOiAwOwogICAgIH0KLSAgICBjaGFyKiBtdXRhYmxlRGF0YSgpOworICAgIFdURl9F
WFBPUlRfUFJJVkFURSBjaGFyKiBtdXRhYmxlRGF0YSgpOwogICAgIHNpemVfdCBsZW5ndGgoKSBj
b25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmxlbmd0aCgp
IC0gMSA6IDA7CkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPENTdHJpbmdC
dWZmZXI+IG1fYnVmZmVyOwogfTsKIAotYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTdHJpbmcmIGEs
IGNvbnN0IENTdHJpbmcmIGIpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBDU3RyaW5nJiBhLCBjb25zdCBDU3RyaW5nJiBiKTsKIGlubGluZSBib29sIG9wZXJhdG9y
IT0oY29uc3QgQ1N0cmluZyYgYSwgY29uc3QgQ1N0cmluZyYgYikgeyByZXR1cm4gIShhID09IGIp
OyB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmgKaW5kZXggZGExZTgzMjBkZTExYzRiNzkzYmVkYTZjOGM1NTNl
Yzc4ZDQwZmU4Ni4uYmY3YWVkNDZjNTkwN2ExZmRmZWI1YTYzM2YxYTMxMDhlMTA0NzlhMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oCkBAIC00
MSw4ICs0MSw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBhcHBlbmQoY29u
c3QgVUNoYXIqLCB1bnNpZ25lZCk7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgTENoYXIqLCB1bnNp
Z25lZCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYXBwZW5kKGNvbnN0IFVDaGFyKiwg
dW5zaWduZWQpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZChjb25zdCBMQ2hh
ciosIHVuc2lnbmVkKTsKIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBhcHBlbmQoY29uc3QgY2hh
ciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKSB7IGFwcGVuZChyZWludGVycHJldF9jYXN0
PGNvbnN0IExDaGFyKj4oY2hhcmFjdGVycyksIGxlbmd0aCk7IH0KIApAQCAtMTI3LDExICsxMjcs
MTEgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIWxlbmd0
aCgpOyB9CiAKLSAgICB2b2lkIHJlc2VydmVDYXBhY2l0eSh1bnNpZ25lZCBuZXdDYXBhY2l0eSk7
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVzZXJ2ZUNhcGFjaXR5KHVuc2lnbmVkIG5l
d0NhcGFjaXR5KTsKIAotICAgIHZvaWQgcmVzaXplKHVuc2lnbmVkIG5ld1NpemUpOworICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSB2b2lkIHJlc2l6ZSh1bnNpZ25lZCBuZXdTaXplKTsKIAotICAgIHZv
aWQgc2hyaW5rVG9GaXQoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzaHJpbmtUb0Zp
dCgpOwogCiAgICAgVUNoYXIgb3BlcmF0b3JbXSh1bnNpZ25lZCBpKSBjb25zdAogICAgIHsKQEAg
LTIwMCw3ICsyMDAsNyBAQCBwcml2YXRlOgogICAgIENoYXJUeXBlKiBhcHBlbmRVbmluaXRpYWxp
emVkU2xvdyh1bnNpZ25lZCBsZW5ndGgpOwogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlw
ZT4KICAgICBBTFdBWVNfSU5MSU5FIENoYXJUeXBlICogZ2V0QnVmZmVyQ2hhcmFjdGVycygpOwot
ICAgIHZvaWQgcmVpZnlTdHJpbmcoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZWlm
eVN0cmluZygpOwogCiAgICAgdW5zaWduZWQgbV9sZW5ndGg7CiAgICAgU3RyaW5nIG1fc3RyaW5n
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgKaW5kZXggMDAz
YzQ0Y2U2MWY2MzM0ZWIxODk1ZmU5ZjIyYWVmM2VhN2MzOWRkMC4uYTJmZTUzZGE4NmRjZjNlNDcz
OTY0NjA2OGE3ZjQ5MTViMzA2YTA2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3Rl
eHQvU3RyaW5nSW1wbC5oCkBAIC0xOTAsMTIgKzE5MCwxMiBAQCBwcml2YXRlOgogICAgIH0KIAog
cHVibGljOgotICAgIH5TdHJpbmdJbXBsKCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIH5TdHJp
bmdJbXBsKCk7CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBjcmVhdGUoY29u
c3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0
aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBs
ZW5ndGgpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZShjb25zdCBM
Q2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgUGFzc1Jl
ZlB0cjxTdHJpbmdJbXBsPiBjcmVhdGUoY29uc3QgY2hhciogcywgdW5zaWduZWQgbGVuZ3RoKSB7
IHJldHVybiBjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHMpLCBsZW5ndGgp
OyB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRlKGNvbnN0IExDaGFy
Kik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+
IGNyZWF0ZShjb25zdCBMQ2hhciopOwogICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFBhc3NSZWZQ
dHI8U3RyaW5nSW1wbD4gY3JlYXRlKGNvbnN0IGNoYXIqIHMpIHsgcmV0dXJuIGNyZWF0ZShyZWlu
dGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4ocykpOyB9CiAKICAgICBzdGF0aWMgQUxXQVlTX0lO
TElORSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGNyZWF0ZTgoUGFzc1JlZlB0cjxTdHJpbmdJbXBs
PiByZXAsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQpAQCAtMjI2LDcgKzIyNiw3
IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBj
cmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCwgTENoYXIqJiBkYXRhKTsKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVk
IGxlbmd0aCwgVUNoYXIqJiBkYXRhKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBh
c3NSZWZQdHI8U3RyaW5nSW1wbD4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgs
IFVDaGFyKiYgZGF0YSk7CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBBTFdBWVNf
SU5MSU5FIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh1bnNp
Z25lZCBsZW5ndGgsIFQqJiBvdXRwdXQpCiAgICAgewogICAgICAgICBpZiAoIWxlbmd0aCkgewpA
QCAtMjc1LDcgKzI3NSw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTdHJpbmdJbXBsPiBhZG9wdChTdHJpbmdCdWZmZXI8TENoYXI+JiBidWZmZXIpOwotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkb3B0KFN0cmluZ0J1ZmZlcjxVQ2hhcj4mIGJ1
ZmZlcik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0lt
cGw+IGFkb3B0KFN0cmluZ0J1ZmZlcjxVQ2hhcj4mIGJ1ZmZlcik7CiAKICAgICB1bnNpZ25lZCBs
ZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQogICAgIGJvb2wgaXM4Qml0KCkgY29u
c3QgeyByZXR1cm4gbV9oYXNoQW5kRmxhZ3MgJiBzX2hhc2hGbGFnOEJpdEJ1ZmZlcjsgfQpAQCAt
MzA4LDcgKzMwOCw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBib29sIGhhczE2Qml0U2hhZG93
KCkgY29uc3QgeyByZXR1cm4gbV9oYXNoQW5kRmxhZ3MgJiBzX2hhc2hGbGFnSGFzMTZCaXRTaGFk
b3c7IH0KLSAgICB2b2lkIHVwY29udmVydENoYXJhY3RlcnModW5zaWduZWQsIHVuc2lnbmVkKSBj
b25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCB1cGNvbnZlcnRDaGFyYWN0ZXJzKHVu
c2lnbmVkLCB1bnNpZ25lZCkgY29uc3Q7CiAgICAgYm9vbCBpc0lkZW50aWZpZXIoKSBjb25zdCB7
IHJldHVybiBtX2hhc2hBbmRGbGFncyAmIHNfaGFzaEZsYWdJc0lkZW50aWZpZXI7IH0KICAgICB2
b2lkIHNldElzSWRlbnRpZmllcihib29sIGlzSWRlbnRpZmllcikKICAgICB7CkBAIC0zOTMsNyAr
MzkzLDcgQEAgcHVibGljOgogICAgICAgICBtX3JlZkNvdW50IC09IHNfcmVmQ291bnRJbmNyZW1l
bnQ7CiAgICAgfQogCi0gICAgc3RhdGljIFN0cmluZ0ltcGwqIGVtcHR5KCk7CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmdJbXBsKiBlbXB0eSgpOwogCiAgICAgLy8gRklYTUU6
IERvZXMgdGhpcyByZWFsbHkgYmVsb25nIGluIFN0cmluZ0ltcGw/CiAgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+IHN0YXRpYyB2b2lkIGNvcHlDaGFycyhUKiBkZXN0aW5hdGlvbiwgY29uc3QgVCog
c291cmNlLCB1bnNpZ25lZCBudW1DaGFyYWN0ZXJzKQpAQCAtNDI4LDcgKzQyOCw3IEBAIHB1Ymxp
YzoKICAgICAvLyBpdHMgb3duIGNvcHkgb2YgdGhlIHN0cmluZy4KICAgICBQYXNzUmVmUHRyPFN0
cmluZ0ltcGw+IGlzb2xhdGVkQ29weSgpIGNvbnN0OwogCi0gICAgUGFzc1JlZlB0cjxTdHJpbmdJ
bXBsPiBzdWJzdHJpbmcodW5zaWduZWQgcG9zLCB1bnNpZ25lZCBsZW4gPSBVSU5UX01BWCk7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gc3Vic3RyaW5nKHVu
c2lnbmVkIHBvcywgdW5zaWduZWQgbGVuID0gVUlOVF9NQVgpOwogCiAgICAgVUNoYXIgb3BlcmF0
b3JbXSh1bnNpZ25lZCBpKSBjb25zdAogICAgIHsKQEAgLTQzNyw5ICs0MzcsOSBAQCBwdWJsaWM6
CiAgICAgICAgICAgICByZXR1cm4gbV9kYXRhOFtpXTsKICAgICAgICAgcmV0dXJuIG1fZGF0YTE2
W2ldOwogICAgIH0KLSAgICBVQ2hhcjMyIGNoYXJhY3RlclN0YXJ0aW5nQXQodW5zaWduZWQpOwor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBVQ2hhcjMyIGNoYXJhY3RlclN0YXJ0aW5nQXQodW5zaWdu
ZWQpOwogCi0gICAgYm9vbCBjb250YWluc09ubHlXaGl0ZXNwYWNlKCk7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIGJvb2wgY29udGFpbnNPbmx5V2hpdGVzcGFjZSgpOwogCiAgICAgaW50IHRvSW50
U3RyaWN0KGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCk7CiAgICAgdW5zaWduZWQgdG9VSW50
U3RyaWN0KGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCk7CkBAIC00NDcsNyArNDQ3LDcgQEAg
cHVibGljOgogICAgIHVpbnQ2NF90IHRvVUludDY0U3RyaWN0KGJvb2wqIG9rID0gMCwgaW50IGJh
c2UgPSAxMCk7CiAgICAgaW50cHRyX3QgdG9JbnRQdHJTdHJpY3QoYm9vbCogb2sgPSAwLCBpbnQg
YmFzZSA9IDEwKTsKIAotICAgIGludCB0b0ludChib29sKiBvayA9IDApOyAvLyBpZ25vcmVzIHRy
YWlsaW5nIGdhcmJhZ2UKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgaW50IHRvSW50KGJvb2wqIG9r
ID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQogICAgIHVuc2lnbmVkIHRvVUludChi
b29sKiBvayA9IDApOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKICAgICBpbnQ2NF90IHRv
SW50NjQoYm9vbCogb2sgPSAwKTsgLy8gaWdub3JlcyB0cmFpbGluZyBnYXJiYWdlCiAgICAgdWlu
dDY0X3QgdG9VSW50NjQoYm9vbCogb2sgPSAwKTsgLy8gaWdub3JlcyB0cmFpbGluZyBnYXJiYWdl
CkBAIC00NTYsNDQgKzQ1Niw0NCBAQCBwdWJsaWM6CiAgICAgZG91YmxlIHRvRG91YmxlKGJvb2wq
IG9rID0gMCwgYm9vbCogZGlkUmVhZE51bWJlciA9IDApOwogICAgIGZsb2F0IHRvRmxvYXQoYm9v
bCogb2sgPSAwLCBib29sKiBkaWRSZWFkTnVtYmVyID0gMCk7CiAKLSAgICBQYXNzUmVmUHRyPFN0
cmluZ0ltcGw+IGxvd2VyKCk7Ci0gICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiB1cHBlcigpOwor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGxvd2VyKCk7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdXBwZXIoKTsKIAot
ICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gZmlsbChVQ2hhcik7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gZmlsbChVQ2hhcik7CiAgICAgLy8gRklYTUU6
IERvIHdlIG5lZWQgZmlsbChjaGFyKSBvciBjYW4gd2UganVzdCBkbyB0aGUgcmlnaHQgdGhpbmcg
aWYgVUNoYXIgaXMgQVNDSUk/CiAgICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBmb2xkQ2FzZSgp
OwogCiAgICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBzdHJpcFdoaXRlU3BhY2UoKTsKICAgICBQ
YXNzUmVmUHRyPFN0cmluZ0ltcGw+IHN0cmlwV2hpdGVTcGFjZShJc1doaXRlU3BhY2VGdW5jdGlv
blB0cik7Ci0gICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBzaW1wbGlmeVdoaXRlU3BhY2UoKTsK
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBzaW1wbGlmeVdo
aXRlU3BhY2UoKTsKICAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHNpbXBsaWZ5V2hpdGVTcGFj
ZShJc1doaXRlU3BhY2VGdW5jdGlvblB0cik7CiAKICAgICBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+
IHJlbW92ZUNoYXJhY3RlcnMoQ2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0cik7CiAgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIENoYXJUeXBlPgogICAgIEFMV0FZU19JTkxJTkUgUGFzc1JlZlB0cjxTdHJp
bmdJbXBsPiByZW1vdmVDaGFyYWN0ZXJzKGNvbnN0IENoYXJUeXBlKiBjaGFyYWN0ZXJzLCBDaGFy
YWN0ZXJNYXRjaEZ1bmN0aW9uUHRyKTsKIAotICAgIHNpemVfdCBmaW5kKFVDaGFyLCB1bnNpZ25l
ZCBpbmRleCA9IDApOwotICAgIHNpemVfdCBmaW5kKENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIs
IHVuc2lnbmVkIGluZGV4ID0gMCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBmaW5k
KFVDaGFyLCB1bnNpZ25lZCBpbmRleCA9IDApOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXpl
X3QgZmluZChDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRyLCB1bnNpZ25lZCBpbmRleCA9IDApOwog
ICAgIHNpemVfdCBmaW5kKGNvbnN0IExDaGFyKiwgdW5zaWduZWQgaW5kZXggPSAwKTsKICAgICBB
TFdBWVNfSU5MSU5FIHNpemVfdCBmaW5kKGNvbnN0IGNoYXIqIHMsIHVuc2lnbmVkIGluZGV4ID0g
MCkgeyByZXR1cm4gZmluZChyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4ocyksIGluZGV4
KTsgfTsKLSAgICBzaXplX3QgZmluZChTdHJpbmdJbXBsKiwgdW5zaWduZWQgaW5kZXggPSAwKTsK
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmQoU3RyaW5nSW1wbCosIHVuc2lnbmVk
IGluZGV4ID0gMCk7CiAgICAgc2l6ZV90IGZpbmRJZ25vcmluZ0Nhc2UoY29uc3QgTENoYXIqLCB1
bnNpZ25lZCBpbmRleCA9IDApOwogICAgIEFMV0FZU19JTkxJTkUgc2l6ZV90IGZpbmRJZ25vcmlu
Z0Nhc2UoY29uc3QgY2hhciogcywgdW5zaWduZWQgaW5kZXggPSAwKSB7IHJldHVybiBmaW5kSWdu
b3JpbmdDYXNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihzKSwgaW5kZXgpOyB9Owot
ICAgIHNpemVfdCBmaW5kSWdub3JpbmdDYXNlKFN0cmluZ0ltcGwqLCB1bnNpZ25lZCBpbmRleCA9
IDApOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmluZElnbm9yaW5nQ2FzZShTdHJp
bmdJbXBsKiwgdW5zaWduZWQgaW5kZXggPSAwKTsKIAotICAgIHNpemVfdCByZXZlcnNlRmluZChV
Q2hhciwgdW5zaWduZWQgaW5kZXggPSBVSU5UX01BWCk7Ci0gICAgc2l6ZV90IHJldmVyc2VGaW5k
KFN0cmluZ0ltcGwqLCB1bnNpZ25lZCBpbmRleCA9IFVJTlRfTUFYKTsKLSAgICBzaXplX3QgcmV2
ZXJzZUZpbmRJZ25vcmluZ0Nhc2UoU3RyaW5nSW1wbCosIHVuc2lnbmVkIGluZGV4ID0gVUlOVF9N
QVgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgcmV2ZXJzZUZpbmQoVUNoYXIsIHVu
c2lnbmVkIGluZGV4ID0gVUlOVF9NQVgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3Qg
cmV2ZXJzZUZpbmQoU3RyaW5nSW1wbCosIHVuc2lnbmVkIGluZGV4ID0gVUlOVF9NQVgpOworICAg
IFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgcmV2ZXJzZUZpbmRJZ25vcmluZ0Nhc2UoU3RyaW5n
SW1wbCosIHVuc2lnbmVkIGluZGV4ID0gVUlOVF9NQVgpOwogCiAgICAgYm9vbCBzdGFydHNXaXRo
KFN0cmluZ0ltcGwqIHN0ciwgYm9vbCBjYXNlU2Vuc2l0aXZlID0gdHJ1ZSkgeyByZXR1cm4gKGNh
c2VTZW5zaXRpdmUgPyByZXZlcnNlRmluZChzdHIsIDApIDogcmV2ZXJzZUZpbmRJZ25vcmluZ0Nh
c2Uoc3RyLCAwKSkgPT0gMDsgfQotICAgIGJvb2wgZW5kc1dpdGgoU3RyaW5nSW1wbCosIGJvb2wg
Y2FzZVNlbnNpdGl2ZSA9IHRydWUpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGVuZHNX
aXRoKFN0cmluZ0ltcGwqLCBib29sIGNhc2VTZW5zaXRpdmUgPSB0cnVlKTsKIAotICAgIFBhc3NS
ZWZQdHI8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hhciwgVUNoYXIpOwotICAgIFBhc3NSZWZQdHI8
U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hhciwgU3RyaW5nSW1wbCopOwotICAgIFBhc3NSZWZQdHI8
U3RyaW5nSW1wbD4gcmVwbGFjZShTdHJpbmdJbXBsKiwgU3RyaW5nSW1wbCopOwotICAgIFBhc3NS
ZWZQdHI8U3RyaW5nSW1wbD4gcmVwbGFjZSh1bnNpZ25lZCBpbmRleCwgdW5zaWduZWQgbGVuLCBT
dHJpbmdJbXBsKik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8U3RyaW5nSW1w
bD4gcmVwbGFjZShVQ2hhciwgVUNoYXIpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBQYXNzUmVm
UHRyPFN0cmluZ0ltcGw+IHJlcGxhY2UoVUNoYXIsIFN0cmluZ0ltcGwqKTsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiByZXBsYWNlKFN0cmluZ0ltcGwqLCBT
dHJpbmdJbXBsKik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8U3RyaW5nSW1w
bD4gcmVwbGFjZSh1bnNpZ25lZCBpbmRleCwgdW5zaWduZWQgbGVuLCBTdHJpbmdJbXBsKik7CiAK
LSAgICBXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbihib29s
KiBoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSA9IDApOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBX
VEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbihib29sKiBoYXNT
dHJvbmdEaXJlY3Rpb25hbGl0eSA9IDApOwogCiAjaWYgVVNFKENGKQogICAgIENGU3RyaW5nUmVm
IGNyZWF0ZUNGU3RyaW5nKCk7CkBAIC01MTAsOCArNTEwLDggQEAgcHJpdmF0ZToKICAgICBib29s
IGlzU3RhdGljKCkgY29uc3QgeyByZXR1cm4gbV9yZWZDb3VudCAmIHNfcmVmQ291bnRGbGFnSXNT
dGF0aWNTdHJpbmc7IH0KICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVUNoYXJQcmVkaWNhdGU+IFBhc3NS
ZWZQdHI8U3RyaW5nSW1wbD4gc3RyaXBNYXRjaGVkQ2hhcmFjdGVycyhVQ2hhclByZWRpY2F0ZSk7
CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlLCBjbGFzcyBVQ2hhclByZWRpY2F0ZT4g
UGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBzaW1wbGlmeU1hdGNoZWRDaGFyYWN0ZXJzVG9TcGFjZShV
Q2hhclByZWRpY2F0ZSk7Ci0gICAgTkVWRVJfSU5MSU5FIGNvbnN0IFVDaGFyKiBnZXREYXRhMTZT
bG93Q2FzZSgpIGNvbnN0OwotICAgIE5FVkVSX0lOTElORSB1bnNpZ25lZCBoYXNoU2xvd0Nhc2Uo
KSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgTkVWRVJfSU5MSU5FIGNvbnN0IFVDaGFy
KiBnZXREYXRhMTZTbG93Q2FzZSgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBORVZF
Ul9JTkxJTkUgdW5zaWduZWQgaGFzaFNsb3dDYXNlKCkgY29uc3Q7CiAKICAgICAvLyBUaGUgYm90
dG9tIGJpdCBpbiB0aGUgcmVmIGNvdW50IGluZGljYXRlcyBhIHN0YXRpYyAoaW1tb3J0YWwpIHN0
cmluZy4KICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19yZWZDb3VudEZsYWdJc1N0YXRpY1N0
cmluZyA9IDB4MTsKQEAgLTU1MCwxNCArNTUwLDE0IEBAIEFMV0FZU19JTkxJTkUgY29uc3QgTENo
YXIqIFN0cmluZ0ltcGw6OmdldENoYXJhY3RlcnM8TENoYXI+KCkgY29uc3QgeyByZXR1cm4gY2hh
CiB0ZW1wbGF0ZSA8PgogQUxXQVlTX0lOTElORSBjb25zdCBVQ2hhciogU3RyaW5nSW1wbDo6Z2V0
Q2hhcmFjdGVyczxVQ2hhcj4oKSBjb25zdCB7IHJldHVybiBjaGFyYWN0ZXJzMTYoKTsgfQogCi1i
b29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBTdHJpbmdJbXBsKik7Ci1ib29sIGVx
dWFsKGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBMQ2hhciopOworV1RGX0VYUE9SVF9QUklWQVRF
IGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IFN0cmluZ0ltcGwqKTsKK1dURl9F
WFBPUlRfUFJJVkFURSBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBMQ2hhciop
OwogaW5saW5lIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCogYSwgY29uc3QgY2hhciogYikg
eyByZXR1cm4gZXF1YWwoYSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGIpKTsgfQot
Ym9vbCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiwgY29uc3QgTENoYXIqLCB1bnNpZ25lZCk7CitX
VEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiwgY29uc3QgTENo
YXIqLCB1bnNpZ25lZCk7CiBpbmxpbmUgYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiBhLCBj
b25zdCBjaGFyKiBiLCB1bnNpZ25lZCBsZW5ndGgpIHsgcmV0dXJuIGVxdWFsKGEsIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihiKSwgbGVuZ3RoKTsgfQogaW5saW5lIGJvb2wgZXF1YWwo
Y29uc3QgTENoYXIqIGEsIFN0cmluZ0ltcGwqIGIpIHsgcmV0dXJuIGVxdWFsKGIsIGEpOyB9CiBp
bmxpbmUgYm9vbCBlcXVhbChjb25zdCBjaGFyKiBhLCBTdHJpbmdJbXBsKiBiKSB7IHJldHVybiBl
cXVhbChiLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYSkpOyB9Ci1ib29sIGVxdWFs
KGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBVQ2hhciosIHVuc2lnbmVkKTsKK1dURl9FWFBPUlRf
UFJJVkFURSBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBVQ2hhciosIHVuc2ln
bmVkKTsKIAogLy8gRG8gY29tcGFyaXNvbnMgOCBvciA0IGJ5dGVzLWF0LWEtdGltZSBvbiBhcmNo
aXRlY3R1cmVzIHdoZXJlIGl0J3Mgc2FmZS4KICNpZiBDUFUoWDg2XzY0KQpAQCAtNzE1LDE1ICs3
MTUsMTUgQEAgQUxXQVlTX0lOTElORSBib29sIGVxdWFsKGNvbnN0IFVDaGFyKiBhLCBjb25zdCBM
Q2hhciogYiwgdW5zaWduZWQgbGVuZ3RoKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIGVx
dWFsSWdub3JpbmdDYXNlKFN0cmluZ0ltcGwqLCBTdHJpbmdJbXBsKik7Ci1ib29sIGVxdWFsSWdu
b3JpbmdDYXNlKFN0cmluZ0ltcGwqLCBjb25zdCBMQ2hhciopOworV1RGX0VYUE9SVF9QUklWQVRF
IGJvb2wgZXF1YWxJZ25vcmluZ0Nhc2UoU3RyaW5nSW1wbCosIFN0cmluZ0ltcGwqKTsKK1dURl9F
WFBPUlRfUFJJVkFURSBib29sIGVxdWFsSWdub3JpbmdDYXNlKFN0cmluZ0ltcGwqLCBjb25zdCBM
Q2hhciopOwogaW5saW5lIGJvb2wgZXF1YWxJZ25vcmluZ0Nhc2UoY29uc3QgTENoYXIqIGEsIFN0
cmluZ0ltcGwqIGIpIHsgcmV0dXJuIGVxdWFsSWdub3JpbmdDYXNlKGIsIGEpOyB9Ci1ib29sIGVx
dWFsSWdub3JpbmdDYXNlKGNvbnN0IFVDaGFyKiwgY29uc3QgTENoYXIqLCB1bnNpZ25lZCk7CitX
VEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVhbElnbm9yaW5nQ2FzZShjb25zdCBVQ2hhciosIGNv
bnN0IExDaGFyKiwgdW5zaWduZWQpOwogaW5saW5lIGJvb2wgZXF1YWxJZ25vcmluZ0Nhc2UoY29u
c3QgVUNoYXIqIGEsIGNvbnN0IGNoYXIqIGIsIHVuc2lnbmVkIGxlbmd0aCkgeyByZXR1cm4gZXF1
YWxJZ25vcmluZ0Nhc2UoYSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGIpLCBsZW5n
dGgpOyB9CiBpbmxpbmUgYm9vbCBlcXVhbElnbm9yaW5nQ2FzZShjb25zdCBMQ2hhciogYSwgY29u
c3QgVUNoYXIqIGIsIHVuc2lnbmVkIGxlbmd0aCkgeyByZXR1cm4gZXF1YWxJZ25vcmluZ0Nhc2Uo
YiwgYSwgbGVuZ3RoKTsgfQogaW5saW5lIGJvb2wgZXF1YWxJZ25vcmluZ0Nhc2UoY29uc3QgY2hh
ciogYSwgY29uc3QgVUNoYXIqIGIsIHVuc2lnbmVkIGxlbmd0aCkgeyByZXR1cm4gZXF1YWxJZ25v
cmluZ0Nhc2UoYiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGEpLCBsZW5ndGgpOyB9
CiAKLWJvb2wgZXF1YWxJZ25vcmluZ051bGxpdHkoU3RyaW5nSW1wbCosIFN0cmluZ0ltcGwqKTsK
K1dURl9FWFBPUlRfUFJJVkFURSBib29sIGVxdWFsSWdub3JpbmdOdWxsaXR5KFN0cmluZ0ltcGwq
LCBTdHJpbmdJbXBsKik7CiAKIHRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KIGJvb2wg
ZXF1YWxJZ25vcmluZ051bGxpdHkoY29uc3QgVmVjdG9yPFVDaGFyLCBpbmxpbmVDYXBhY2l0eT4m
IGEsIFN0cmluZ0ltcGwqIGIpCkBAIC03MzUsNyArNzM1LDcgQEAgYm9vbCBlcXVhbElnbm9yaW5n
TnVsbGl0eShjb25zdCBWZWN0b3I8VUNoYXIsIGlubGluZUNhcGFjaXR5PiYgYSwgU3RyaW5nSW1w
bCogYikKICAgICByZXR1cm4gIW1lbWNtcChhLmRhdGEoKSwgYi0+Y2hhcmFjdGVycygpLCBiLT5s
ZW5ndGgoKSk7CiB9CiAKLWludCBjb2RlUG9pbnRDb21wYXJlKGNvbnN0IFN0cmluZ0ltcGwqLCBj
b25zdCBTdHJpbmdJbXBsKik7CitXVEZfRVhQT1JUX1BSSVZBVEUgaW50IGNvZGVQb2ludENvbXBh
cmUoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IFN0cmluZ0ltcGwqKTsKIAogc3RhdGljIGlubGlu
ZSBib29sIGlzU3BhY2VPck5ld2xpbmUoVUNoYXIgYykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvdGV4dC9XVEZTdHJpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvdGV4dC9XVEZTdHJpbmcuaAppbmRleCAzY2VjYzBhZmRkODE0MmViYTUxYzg5ODYzMTY4
OTc1NjZiOTMzZTE1Li5lYjQ1YzdmODJjNDM3OGZkNGRjZWFiNDU2MDcwZDg5ZDU2ZWQxODg1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvV1RGU3RyaW5nLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oCkBAIC03NCw3ICs3
NCw3IEBAIGludHB0cl90IGNoYXJhY3RlcnNUb0ludFB0clN0cmljdChjb25zdCBMQ2hhciosIHNp
emVfdCwgYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9CiBpbnRwdHJfdCBjaGFyYWN0ZXJzVG9JbnRQ
dHJTdHJpY3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAx
MCk7CiAKIGludCBjaGFyYWN0ZXJzVG9JbnQoY29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9r
ID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQotaW50IGNoYXJhY3RlcnNUb0ludChj
b25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwKTsgLy8gaWdub3JlcyB0cmFpbGluZyBn
YXJiYWdlCitXVEZfRVhQT1JUX1BSSVZBVEUgaW50IGNoYXJhY3RlcnNUb0ludChjb25zdCBVQ2hh
ciosIHNpemVfdCwgYm9vbCogb2sgPSAwKTsgLy8gaWdub3JlcyB0cmFpbGluZyBnYXJiYWdlCiB1
bnNpZ25lZCBjaGFyYWN0ZXJzVG9VSW50KGNvbnN0IExDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9
IDApOyAvLyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UKIHVuc2lnbmVkIGNoYXJhY3RlcnNUb1VJ
bnQoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxp
bmcgZ2FyYmFnZQogaW50NjRfdCBjaGFyYWN0ZXJzVG9JbnQ2NChjb25zdCBMQ2hhciosIHNpemVf
dCwgYm9vbCogb2sgPSAwKTsgLy8gaWdub3JlcyB0cmFpbGluZyBnYXJiYWdlCkBAIC04Nyw3ICs4
Nyw3IEBAIGludHB0cl90IGNoYXJhY3RlcnNUb0ludFB0cihjb25zdCBVQ2hhciosIHNpemVfdCwg
Ym9vbCogb2sgPSAwKTsgLy8gaWdub3JlcyB0cmFpCiBXVEZfRVhQT1JUX1BSSVZBVEUgZG91Ymxl
IGNoYXJhY3RlcnNUb0RvdWJsZShjb25zdCBMQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwLCBi
b29sKiBkaWRSZWFkTnVtYmVyID0gMCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgZG91YmxlIGNoYXJh
Y3RlcnNUb0RvdWJsZShjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwLCBib29sKiBk
aWRSZWFkTnVtYmVyID0gMCk7CiBmbG9hdCBjaGFyYWN0ZXJzVG9GbG9hdChjb25zdCBMQ2hhcios
IHNpemVfdCwgYm9vbCogb2sgPSAwLCBib29sKiBkaWRSZWFkTnVtYmVyID0gMCk7Ci1mbG9hdCBj
aGFyYWN0ZXJzVG9GbG9hdChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwLCBib29s
KiBkaWRSZWFkTnVtYmVyID0gMCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgZmxvYXQgY2hhcmFjdGVy
c1RvRmxvYXQoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCwgYm9vbCogZGlkUmVh
ZE51bWJlciA9IDApOwogCiBlbnVtIEZsb2F0Q29udmVyc2lvbkZsYWdzIHsKICAgICBTaG91bGRS
b3VuZFNpZ25pZmljYW50RmlndXJlcyA9IDEgPDwgMCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvdW5pY29kZS9Db2xsYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi91bmljb2RlL0NvbGxhdG9yLmgKaW5kZXggMDBhYjE2ZTZhNWJkYmE2ZmYxNGI1YjM3MWYx
YzkxNGMxODgwMzgyZi4uNzk5NGZmOGU1Y2IzMTM4ZWU5NzM2NTMwOGFlNmMzNTE0MzZlNWIzZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL0NvbGxhdG9yLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL0NvbGxhdG9yLmgKQEAgLTQ1
LDEzICs0NSwxMyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICBwdWJsaWM6CiAgICAgICAgIGVudW0g
UmVzdWx0IHsgRXF1YWwgPSAwLCBHcmVhdGVyID0gMSwgTGVzcyA9IC0xIH07CiAKLSAgICAgICAg
Q29sbGF0b3IoY29uc3QgY2hhciogbG9jYWxlKTsgLy8gUGFyc2luZyBpcyBsZW5pZW50OyBlLmcu
IGxhbmd1YWdlIGlkZW50aWZpZXJzIChzdWNoIGFzICJlbi1VUyIpIGFyZSBhY2NlcHRlZCwgdG9v
LgotICAgICAgICB+Q29sbGF0b3IoKTsKLSAgICAgICAgdm9pZCBzZXRPcmRlckxvd2VyRmlyc3Qo
Ym9vbCk7CisgICAgICAgIFdURl9FWFBPUlRfUFJJVkFURSBDb2xsYXRvcihjb25zdCBjaGFyKiBs
b2NhbGUpOyAvLyBQYXJzaW5nIGlzIGxlbmllbnQ7IGUuZy4gbGFuZ3VhZ2UgaWRlbnRpZmllcnMg
KHN1Y2ggYXMgImVuLVVTIikgYXJlIGFjY2VwdGVkLCB0b28uCisgICAgICAgIFdURl9FWFBPUlRf
UFJJVkFURSB+Q29sbGF0b3IoKTsKKyAgICAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0
T3JkZXJMb3dlckZpcnN0KGJvb2wpOwogCiAgICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPENvbGxh
dG9yPiB1c2VyRGVmYXVsdCgpOwogCi0gICAgICAgIFJlc3VsdCBjb2xsYXRlKGNvbnN0IDo6VUNo
YXIqLCBzaXplX3QsIGNvbnN0IDo6VUNoYXIqLCBzaXplX3QpIGNvbnN0OworICAgICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgUmVzdWx0IGNvbGxhdGUoY29uc3QgOjpVQ2hhciosIHNpemVfdCwgY29u
c3QgOjpVQ2hhciosIHNpemVfdCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgogI2lmIFVTRShJQ1Vf
VU5JQ09ERSkgJiYgIVVDT05GSUdfTk9fQ09MTEFUSU9OCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvVVRGOC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi91bmljb2RlL1VURjguaAppbmRleCBiZDNkZDhhMGE1OTUzNzg3YTNkOWUzZmYxMWU1MzQzZDZi
NDk4MmE1Li5iYzI0OTdiNzIzOWIxOTQ2NmFhOTI5ZWQyMjE0Y2E0OTliZGI5MGE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvVVRGOC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvdW5pY29kZS9VVEY4LmgKQEAgLTYyLDcgKzYyLDcgQEAgbmFt
ZXNwYWNlIFVuaWNvZGUgewogICAgIC8vIHRvIHRoZSByZXBsYWNlbWVudCBjaGFyYWN0ZXI7IG90
aGVyd2lzZSAod2hlbiB0aGUgZmxhZyBpcyBzZXQgdG8gc3RyaWN0KQogICAgIC8vIHRoZXkgY29u
c3RpdHV0ZSBhbiBlcnJvci4KIAotICAgIENvbnZlcnNpb25SZXN1bHQgY29udmVydFVURjhUb1VU
RjE2KAorICAgIFdURl9FWFBPUlRfUFJJVkFURSBDb252ZXJzaW9uUmVzdWx0IGNvbnZlcnRVVEY4
VG9VVEYxNigKICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhcioqIHNvdXJjZVN0YXJ0LCBj
b25zdCBjaGFyKiBzb3VyY2VFbmQsIAogICAgICAgICAgICAgICAgICAgICBVQ2hhcioqIHRhcmdl
dFN0YXJ0LCBVQ2hhciogdGFyZ2V0RW5kLCBib29sIHN0cmljdCA9IHRydWUpOwogCkBAIC03MCw3
ICs3MCw3IEBAIG5hbWVzcGFjZSBVbmljb2RlIHsKICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
TENoYXIqKiBzb3VyY2VTdGFydCwgY29uc3QgTENoYXIqIHNvdXJjZUVuZCwgCiAgICAgICAgICAg
ICAgICAgICAgIGNoYXIqKiB0YXJnZXRTdGFydCwgY2hhciogdGFyZ2V0RW5kKTsKIAotICAgIENv
bnZlcnNpb25SZXN1bHQgY29udmVydFVURjE2VG9VVEY4KAorICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBDb252ZXJzaW9uUmVzdWx0IGNvbnZlcnRVVEYxNlRvVVRGOCgKICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVUNoYXIqKiBzb3VyY2VTdGFydCwgY29uc3QgVUNoYXIqIHNvdXJjZUVuZCwgCiAg
ICAgICAgICAgICAgICAgICAgIGNoYXIqKiB0YXJnZXRTdGFydCwgY2hhciogdGFyZ2V0RW5kLCBi
b29sIHN0cmljdCA9IHRydWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
eWFyci9ZYXJyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyLmgKaW5kZXggNTAx
YWZhYzVmNTQzNzUxZTc0MjI3MGI0NDgzYzk5ZmU3ZGQ3N2IxZi4uMzQ5NWZjN2U0YzMwYjk0Mjc4
NDkxZDA5ZDc3YjNkNTk3MzNjOGEyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvWWFyci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnIuaApAQCAt
NjIsOCArNjIsOCBAQCBlbnVtIFlhcnJDaGFyU2l6ZSB7CiAgICAgQ2hhcjE2CiB9OwogCi1QYXNz
T3duUHRyPEJ5dGVjb2RlUGF0dGVybj4gYnl0ZUNvbXBpbGUoWWFyclBhdHRlcm4mLCBCdW1wUG9p
bnRlckFsbG9jYXRvciopOwotaW50IGludGVycHJldChCeXRlY29kZVBhdHRlcm4qLCBjb25zdCBV
U3RyaW5nJiBpbnB1dCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgaW50KiBvdXRw
dXQpOworSlNfRVhQT1JUX1BSSVZBVEUgUGFzc093blB0cjxCeXRlY29kZVBhdHRlcm4+IGJ5dGVD
b21waWxlKFlhcnJQYXR0ZXJuJiwgQnVtcFBvaW50ZXJBbGxvY2F0b3IqKTsKK0pTX0VYUE9SVF9Q
UklWQVRFIGludCBpbnRlcnByZXQoQnl0ZWNvZGVQYXR0ZXJuKiwgY29uc3QgVVN0cmluZyYgaW5w
dXQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIGludCogb3V0cHV0KTsKIAogfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OllhcnIKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3lhcnIvWWFyclBhdHRlcm4uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQ
YXR0ZXJuLmgKaW5kZXggMmNiYjc5NTg2NTZlMzVhMTAxZWQxOTZlYjM2MzJkNzIwOGU1ZGMzMS4u
YTMxZGVlZTY3Mjk0NjQ0ZTVkYzRhYWQ0ZDdhMDZiMDczYjIwYjc5ZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5oCkBAIC0zMTYsNyArMzE2LDcgQEAgc3RydWN0IFRl
cm1DaGFpbiB7CiB9OwogCiBzdHJ1Y3QgWWFyclBhdHRlcm4gewotICAgIFlhcnJQYXR0ZXJuKGNv
bnN0IFVTdHJpbmcmIHBhdHRlcm4sIGJvb2wgaWdub3JlQ2FzZSwgYm9vbCBtdWx0aWxpbmUsIGNv
bnN0IGNoYXIqKiBlcnJvcik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgWWFyclBhdHRlcm4oY29u
c3QgVVN0cmluZyYgcGF0dGVybiwgYm9vbCBpZ25vcmVDYXNlLCBib29sIG11bHRpbGluZSwgY29u
c3QgY2hhcioqIGVycm9yKTsKIAogICAgIH5ZYXJyUGF0dGVybigpCiAgICAgewo=
</data>
<flag name="commit-queue"
          id="123130"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>