<?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>93371</bug_id>
          
          <creation_ts>2012-08-07 07:50:58 -0700</creation_ts>
          <short_desc>Remove All Custom binding code for TypedArray.</short_desc>
          <delta_ts>2012-08-10 20:10:47 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Vineet Chaudhary (vineetc)">code.vineet</reporter>
          <assigned_to name="Vineet Chaudhary (vineetc)">code.vineet</assigned_to>
          <cc>abarth</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>kbr</cc>
    
    <cc>ojan</cc>
    
    <cc>rakuco</cc>
    
    <cc>ulan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>689135</commentid>
    <comment_count>0</comment_count>
    <who name="Vineet Chaudhary (vineetc)">code.vineet</who>
    <bug_when>2012-08-07 07:50:58 -0700</bug_when>
    <thetext>Currently below listed files have Custom bindings, and can be removed completely with help of [TypedArray] attribute.

V8/JSInt32ArrayCustom.cpp
V8/JSUint8ClampedArrayCustom.cpp
V8/JSUint16ArrayCustom.cpp
V8/JSInt8ArrayCustom.cpp 
V8/JSUint8ArrayCustom.cpp
V8/JSUint32ArrayCustom.cpp
V8/JSInt16ArrayCustom.cpp 
V8/JSFloat64ArrayCustom.cpp
V8/JSFloat32ArrayCustom.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689139</commentid>
    <comment_count>1</comment_count>
      <attachid>156940</attachid>
    <who name="Vineet Chaudhary (vineetc)">code.vineet</who>
    <bug_when>2012-08-07 07:57:01 -0700</bug_when>
    <thetext>Created attachment 156940
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689140</commentid>
    <comment_count>2</comment_count>
    <who name="Vineet Chaudhary (vineetc)">code.vineet</who>
    <bug_when>2012-08-07 07:58:11 -0700</bug_when>
    <thetext>I have attached rough patch to get initial comments.

There can be multiple approach for removing custom setCallback() from V8 binding and set() call from JSC binding
1. That current patch does ie. calling setWebGLArrayHelper() directly.
2  We can move implementation of set() to JSArrayBufferViewHelper.h and setCallback() to V8ArrayBufferViewCustom.h

Though second solution looks good but I am not sure of its implication.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689141</commentid>
    <comment_count>3</comment_count>
      <attachid>156940</attachid>
    <who name="Vineet Chaudhary (vineetc)">code.vineet</who>
    <bug_when>2012-08-07 08:00:40 -0700</bug_when>
    <thetext>Comment on attachment 156940
Patch

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

&gt; Source/WebCore/ChangeLog:13
&gt; +        * bindings/js/JSFloat32ArrayCustom.cpp: Removed custom bindings.

We shall be able to delete these files.

&gt; Source/WebCore/ChangeLog:28
&gt; +        * bindings/scripts/test/CPP/WebDOMFloat64Array.cpp:

I have yet to work for other bindings too.

&gt; Source/WebCore/ChangeLog:50
&gt; +        * bindings/v8/custom/V8Float32ArrayCustom.cpp: Removed custom bindings.

We shall be able to delete these files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690068</commentid>
    <comment_count>4</comment_count>
      <attachid>157158</attachid>
    <who name="Vineet Chaudhary (vineetc)">code.vineet</who>
    <bug_when>2012-08-08 02:10:19 -0700</bug_when>
    <thetext>Created attachment 157158
updatedPatch

Patch for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690080</commentid>
    <comment_count>5</comment_count>
      <attachid>157158</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-08 02:22:58 -0700</bug_when>
    <thetext>Comment on attachment 157158
updatedPatch

Marking r-, but the patch looks great.

- Remove [CustomConstructor] from all the IDLs, because they are no longer &quot;custom&quot;. Instead, let&apos;s introduce [ConstructorTemplate=TypedArray]. Look at the implementation of [ConstructorTemplate=Event].

- Remove [TypedArray=...] from all set()s. Given that you are already specifying [TypedArray=...] on the interface, CodeGenerators can use it. Specifically, CodeGenerators can use $dataNode-&gt;extendedAttributes-&gt;{&quot;TypedArray&quot;} instead of $function-&gt;signature-&gt;extendedAttributes-&gt;{&quot;TypedArray&quot;}.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690112</commentid>
    <comment_count>6</comment_count>
    <who name="Vineet Chaudhary (vineetc)">code.vineet</who>
    <bug_when>2012-08-08 03:30:21 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 157158 [details])
&gt; Marking r-, but the patch looks great.
&gt; 
&gt; - Remove [CustomConstructor] from all the IDLs, because they are no longer &quot;custom&quot;. Instead, let&apos;s introduce [ConstructorTemplate=TypedArray]. Look at the implementation of [ConstructorTemplate=Event].
&gt; 
&gt; - Remove [TypedArray=...] from all set()s. Given that you are already specifying [TypedArray=...] on the interface, CodeGenerators can use it. Specifically, CodeGenerators can use $dataNode-&gt;extendedAttributes-&gt;{&quot;TypedArray&quot;} instead of $function-&gt;signature-&gt;extendedAttributes-&gt;{&quot;TypedArray&quot;}.

Thanks for review.

Shall we remove [CustomIndexedSetter] too as it is also not custom anymore, any concerns/thoughts? Shall we do it in separate patch(before/after this patch)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690113</commentid>
    <comment_count>7</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-08 03:33:00 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Shall we remove [CustomIndexedSetter] too as it is also not custom anymore, any concerns/thoughts? Shall we do it in separate patch(before/after this patch)?

Let&apos;s do it in a separate patch. (Actually CodeGenerators around indexed properties and named properties are full of bugs, escpecially in CodeGeneratorV8.pm...)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690120</commentid>
    <comment_count>8</comment_count>
    <who name="Vineet Chaudhary (vineetc)">code.vineet</who>
    <bug_when>2012-08-08 03:47:20 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 157158 [details])
&gt; Marking r-, but the patch looks great.
&gt; 
&gt; - Remove [CustomConstructor] from all the IDLs, because they are no longer &quot;custom&quot;. Instead, let&apos;s introduce [ConstructorTemplate=TypedArray]. Look at the implementation of [ConstructorTemplate=Event].

Actually removing [CustomConstructor] would be tricky eg. constructJSMutationObserver() has little different implementation we have to make common.
Can we land this patch first with below modification(&quot;Remove [TypedArray=...] from all set()s&quot;) then I will clean up code.

&gt; - Remove [TypedArray=...] from all set()s. Given that you are already specifying [TypedArray=...] on the interface, CodeGenerators can use it. Specifically, CodeGenerators can use $dataNode-&gt;extendedAttributes-&gt;{&quot;TypedArray&quot;} instead of $function-&gt;signature-&gt;extendedAttributes-&gt;{&quot;TypedArray&quot;}.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690121</commentid>
    <comment_count>9</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-08 03:49:01 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; &gt; - Remove [CustomConstructor] from all the IDLs, because they are no longer &quot;custom&quot;. Instead, let&apos;s introduce [ConstructorTemplate=TypedArray]. Look at the implementation of [ConstructorTemplate=Event].
&gt; 
&gt; Actually removing [CustomConstructor] would be tricky eg. constructJSMutationObserver() has little different implementation we have to make common.
&gt; Can we land this patch first with below modification(&quot;Remove [TypedArray=...] from all set()s&quot;) then I will clean up code.

Sorry, I meant, you can remove [CustomConstructor] from all the WebGL related IDLs you are changing in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690227</commentid>
    <comment_count>10</comment_count>
      <attachid>157197</attachid>
    <who name="Vineet Chaudhary (vineetc)">code.vineet</who>
    <bug_when>2012-08-08 05:55:08 -0700</bug_when>
    <thetext>Created attachment 157197
Updated Patch

Updated patch using [ConstructorTemplate=TypedArray].
Also removed all [TypedArray=*] for set()s.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690256</commentid>
    <comment_count>11</comment_count>
      <attachid>157197</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-08 06:24:53 -0700</bug_when>
    <thetext>Comment on attachment 157197
Updated Patch

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

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2218
&gt; -                    push(@implContent, &quot;    $implType* impl = static_cast&lt;$implType*&gt;(castedThis-&gt;impl());\n&quot;);
&gt; +                    if (!($function-&gt;signature-&gt;name eq &quot;set&quot; and $dataNode-&gt;extendedAttributes-&gt;{&quot;TypedArray&quot;})) {
&gt; +                        push(@implContent, &quot;    $implType* impl = static_cast&lt;$implType*&gt;(castedThis-&gt;impl());\n&quot;);
&gt; +                    }

Just like CodeGeneratorV8.pm, can you generate set() method here and early return? Specifically, like this:

  if ($function-&gt;signature-&gt;name eq &quot;set&quot; and $dataNode-&gt;extendedAttributes-&gt;{&quot;TypedArray&quot;}) {
    push(@implContent, &quot;...&quot;);
    return;
  }

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2253
&gt; -                        GenerateImplementationFunctionCall($function, $functionString, &quot;    &quot;, $svgPropertyType, $implClassName);
&gt; +                        if ($function-&gt;signature-&gt;name eq &quot;set&quot; and $dataNode-&gt;extendedAttributes-&gt;{&quot;TypedArray&quot;}) {
&gt; +                            my $viewType = $dataNode-&gt;extendedAttributes-&gt;{&quot;TypedArray&quot;};
&gt; +                            push(@implContent, &quot;    return JSValue::encode(setWebGLArrayHelper&lt;$implType, $viewType&gt;(exec, castedThis-&gt;impl()));\n&quot;);
&gt; +                        } else {
&gt; +                            GenerateImplementationFunctionCall($function, $functionString, &quot;    &quot;, $svgPropertyType, $implClassName);
&gt; +                        }

With the early return, this change is not needed.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:3750
&gt; +            if ($dataNode-&gt;extendedAttributes-&gt;{&quot;CustomIndexedSetter&quot;}) {

As you mentioned, let&apos;s remove it in a follow-up patch.

&gt; Source/WebCore/bindings/scripts/IDLAttributes.txt:33
&gt; -ConstructorTemplate=Event
&gt; +ConstructorTemplate=*

ConstructorTemplate=Event|TypedArray

Please add the explanation to the WebKitIDL wiki after landing the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690371</commentid>
    <comment_count>12</comment_count>
      <attachid>157230</attachid>
    <who name="Vineet Chaudhary (vineetc)">code.vineet</who>
    <bug_when>2012-08-08 08:52:02 -0700</bug_when>
    <thetext>Created attachment 157230
patch_for_landing

(In reply to comment #11)
&gt; (From update of attachment 157197 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=157197&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2218
&gt; &gt; -                    push(@implContent, &quot;    $implType* impl = static_cast&lt;$implType*&gt;(castedThis-&gt;impl());\n&quot;);
&gt; &gt; +                    if (!($function-&gt;signature-&gt;name eq &quot;set&quot; and $dataNode-&gt;extendedAttributes-&gt;{&quot;TypedArray&quot;})) {
&gt; &gt; +                        push(@implContent, &quot;    $implType* impl = static_cast&lt;$implType*&gt;(castedThis-&gt;impl());\n&quot;);
&gt; &gt; +                    }
&gt; 
&gt; Just like CodeGeneratorV8.pm, can you generate set() method here and early return? Specifically, like this:

Done! 
 
&gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:3750
&gt; &gt; +            if ($dataNode-&gt;extendedAttributes-&gt;{&quot;CustomIndexedSetter&quot;}) {
&gt; 
&gt; As you mentioned, let&apos;s remove it in a follow-up patch.
&gt;
Yes sure!
 
&gt; &gt; Source/WebCore/bindings/scripts/IDLAttributes.txt:33
&gt; &gt; -ConstructorTemplate=Event
&gt; &gt; +ConstructorTemplate=*
&gt; 
&gt; ConstructorTemplate=Event|TypedArray

Thanks. Done.

&gt; Please add the explanation to the WebKitIDL wiki after landing the patch.

Yes sure. Thanks :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690374</commentid>
    <comment_count>13</comment_count>
      <attachid>157230</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-08 09:02:20 -0700</bug_when>
    <thetext>Comment on attachment 157230
patch_for_landing

OK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690431</commentid>
    <comment_count>14</comment_count>
      <attachid>157230</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-08 10:01:11 -0700</bug_when>
    <thetext>Comment on attachment 157230
patch_for_landing

Clearing flags on attachment: 157230

Committed r125042: &lt;http://trac.webkit.org/changeset/125042&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690432</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-08 10:01:17 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156940</attachid>
            <date>2012-08-07 07:57:01 -0700</date>
            <delta_ts>2012-08-08 02:10:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>typed_array_all_001.diff</filename>
            <type>text/plain</type>
            <size>34677</size>
            <attacher name="Vineet Chaudhary (vineetc)">code.vineet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNDg4NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcxIEBACisyMDEyLTA4LTA3ICBWaW5lZXQg
Q2hhdWRoYXJ5ICA8cmdmNzQ4QG1vdG9yb2xhLmNvbT4KKworICAgICAgICBSZW1vdmUgQWxsIEN1
c3RvbSBiaW5kaW5nIGNvZGUgZm9yIFR5cGVkQXJyYXkuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzM3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92aW5nIEN1c3RvbSBiaW5kaW5ncyBjb21wbGV0
ZWx5IHdpdGggaGVscCBvZiBbVHlwZWRBcnJheV0gYXR0cmlidXRlLgorCisgICAgICAgIFRlc3Rz
OiBUZXN0VHlwZWRBcnJheS5pZGwKKyAgICAgICAgVGhlcmUgc2hvdWxkIG5vdCBiZSBhbnkgYmVo
YXZpb3JhbCBjaGFuZ2UgYW5kIGFsbCB0ZXN0cyBzaG91bGQgcGFzcy4KKworICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRmxvYXQzMkFycmF5Q3VzdG9tLmNwcDogUmVtb3ZlZCBjdXN0b20gYmluZGlu
Z3MuCisgICAgICAgICogYmluZGluZ3MvanMvSlNGbG9hdDY0QXJyYXlDdXN0b20uY3BwOiBEaXR0
by4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0ludDE2QXJyYXlDdXN0b20uY3BwOiBEaXR0by4K
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0ludDMyQXJyYXlDdXN0b20uY3BwOiBEaXR0by4KKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0ludDhBcnJheUN1c3RvbS5jcHA6IERpdHRvLiAKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU1VpbnQxNkFycmF5Q3VzdG9tLmNwcDogRGl0dG8uCisgICAgICAg
ICogYmluZGluZ3MvanMvSlNVaW50MzJBcnJheUN1c3RvbS5jcHA6IERpdHRvLgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTVWludDhBcnJheUN1c3RvbS5jcHA6IERpdHRvLgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTVWludDhDbGFtcGVkQXJyYXlDdXN0b20uY3BwOiBEaXR0by4KKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRl
SW1wbGVtZW50YXRpb24pOgorICAgICAgICAoR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24p
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOgorICAgICAg
ICAoR2VuZXJhdGVGdW5jdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50
YXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NRmxvYXQ2
NEFycmF5LmNwcDoKKyAgICAgICAgKFdlYkRPTUZsb2F0NjRBcnJheTo6c2V0KToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTUZsb2F0NjRBcnJheS5oOgorICAgICAg
ICAoV2ViRE9NRmxvYXQ2NEFycmF5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
R09iamVjdC9XZWJLaXRET01GbG9hdDY0QXJyYXkuY3BwOgorICAgICAgICAod2Via2l0X2RvbV9m
bG9hdDY0YXJyYXlfc2V0KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVj
dC9XZWJLaXRET01GbG9hdDY0QXJyYXkuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNGbG9hdDY0QXJyYXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9KUyk6CisgICAg
ICAgIChXZWJDb3JlOjpKU0Zsb2F0NjRBcnJheTo6aW5kZXhTZXR0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6anNGbG9hdDY0QXJyYXlQcm90b3R5cGVGdW5jdGlvbkZvbyk6CisgICAgICAgIChXZWJD
b3JlOjpqc0Zsb2F0NjRBcnJheVByb3RvdHlwZUZ1bmN0aW9uU2V0KToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXkuaDoKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01GbG9hdDY0QXJyYXkuaDoKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01GbG9hdDY0QXJyYXkubW06CisgICAgICAgICgtW0RPTUZs
b2F0NjRBcnJheSBzZXRdKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFR5
cGVkQXJyYXkuaWRsOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0
NjRBcnJheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdDY0QXJyYXlWOEludGVybmFsOjpz
ZXRDYWxsYmFjayk6CisgICAgICAgIChGbG9hdDY0QXJyYXlWOEludGVybmFsKToKKyAgICAgICAg
KFdlYkNvcmU6OlY4RmxvYXQ2NEFycmF5Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbmZpZ3VyZVY4RmxvYXQ2NEFycmF5VGVtcGxhdGUpOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L2N1c3RvbS9WOEZsb2F0MzJBcnJheUN1c3RvbS5jcHA6IFJlbW92ZWQgY3VzdG9t
IGJpbmRpbmdzLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEZsb2F0NjRBcnJheUN1
c3RvbS5jcHA6IERpdHRvLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEludDE2QXJy
YXlDdXN0b20uY3BwOiBEaXR0by4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhJbnQz
MkFycmF5Q3VzdG9tLmNwcDogRGl0dG8uCisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SW50OEFycmF5Q3VzdG9tLmNwcDogRGl0dG8uCisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9t
L1Y4VWludDE2QXJyYXlDdXN0b20uY3BwOiBEaXR0by4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9j
dXN0b20vVjhVaW50MzJBcnJheUN1c3RvbS5jcHA6IERpdHRvLgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L2N1c3RvbS9WOFVpbnQ4QXJyYXlDdXN0b20uY3BwOiBEaXR0by4KKyAgICAgICAgKiBiaW5k
aW5ncy92OC9jdXN0b20vVjhVaW50OENsYW1wZWRBcnJheUN1c3RvbS5jcHA6IERpdHRvLgorICAg
ICAgICAqIGh0bWwvY2FudmFzL0Zsb2F0MzJBcnJheS5pZGw6CisgICAgICAgICogaHRtbC9jYW52
YXMvRmxvYXQ2NEFycmF5LmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9JbnQxNkFycmF5Lmlk
bDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9JbnQzMkFycmF5LmlkbDoKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9JbnQ4QXJyYXkuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL1VpbnQxNkFycmF5
LmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9VaW50MzJBcnJheS5pZGw6CisgICAgICAgICog
aHRtbC9jYW52YXMvVWludDhBcnJheS5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvVWludDhD
bGFtcGVkQXJyYXkuaWRsOgorCiAyMDEyLTA4LTA3ICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IERvIG5vdCBkaXNhYmxlIG5l
dHdvcmsgdHJhY2tpbmcgd2hpbGUgcHJvZmlsaW5nIGNwdS4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRmxvYXQzMkFycmF5Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Zsb2F0MzJBcnJheUN1c3RvbS5jcHAJKHJldmlzaW9u
IDEyNDg3MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmxvYXQzMkFycmF5Q3Vz
dG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogdXNpbmcgbmFtZXNwYWNl
IEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotCisvKgogdm9pZCBKU0Zsb2F0MzJBcnJheTo6
aW5kZXhTZXR0ZXIoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGluZGV4LCBKU0M6OkpT
VmFsdWUgdmFsdWUpCiB7CiAgICAgaW1wbCgpLT5zZXQoaW5kZXgsIHN0YXRpY19jYXN0PGZsb2F0
Pih2YWx1ZS50b051bWJlcihleGVjKSkpOwpAQCAtNDIsNyArNDIsNyBAQCBKU0M6OkpTVmFsdWUg
dG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywKIHsKICAgICByZXR1cm4gdG9KU0FycmF5QnVmZmVy
VmlldzxKU0Zsb2F0MzJBcnJheT4oZXhlYywgZ2xvYmFsT2JqZWN0LCBvYmplY3QpOwogfQotCisq
LwogSlNDOjpKU1ZhbHVlIEpTRmxvYXQzMkFycmF5OjpzZXQoSlNDOjpFeGVjU3RhdGUqIGV4ZWMp
CiB7CiAgICAgcmV0dXJuIHNldFdlYkdMQXJyYXlIZWxwZXI8RmxvYXQzMkFycmF5LCBmbG9hdD4o
ZXhlYywgaW1wbCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmxvYXQ2
NEFycmF5Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0Zsb2F0NjRBcnJheUN1c3RvbS5jcHAJKHJldmlzaW9uIDEyNDg3MikKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmxvYXQ2NEFycmF5Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzIsNyArMzIsNyBAQAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewotCisvKgogdm9pZCBKU0Zsb2F0NjRBcnJheTo6aW5kZXhTZXR0ZXIoSlNDOjpFeGVj
U3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGluZGV4LCBKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CiAgICAg
aW1wbCgpLT5zZXQoaW5kZXgsIHZhbHVlLnRvTnVtYmVyKGV4ZWMpKTsKQEAgLTQ2LDYgKzQ2LDYg
QEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsCiBKU0M6OkpTVmFsdWUg
SlNGbG9hdDY0QXJyYXk6OnNldChKU0M6OkV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICByZXR1cm4g
c2V0V2ViR0xBcnJheUhlbHBlcjxGbG9hdDY0QXJyYXksIGRvdWJsZT4oZXhlYywgaW1wbCgpKTsK
LX0KK30qLwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0ludDhBcnJheUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNJbnQ4QXJyYXlDdXN0b20uY3BwCShyZXZpc2lvbiAxMjQ4NzIp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ludDhBcnJheUN1c3RvbS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKLQorLyoKIHZvaWQgSlNJbnQ4QXJyYXk6OmluZGV4U2V0dGVyKEpT
Qzo6RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbmRleCwgSlNDOjpKU1ZhbHVlIHZhbHVlKQog
ewogICAgIGltcGwoKS0+c2V0KGluZGV4LCBzdGF0aWNfY2FzdDxzaWduZWQgY2hhcj4odmFsdWUu
dG9JbnQzMihleGVjKSkpOwpAQCAtNDcsNiArNDcsNiBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6
OkV4ZWNTdGF0ZSogZXhlYywKIEpTQzo6SlNWYWx1ZSBKU0ludDhBcnJheTo6c2V0KEpTQzo6RXhl
Y1N0YXRlKiBleGVjKQogewogICAgIHJldHVybiBzZXRXZWJHTEFycmF5SGVscGVyPEludDhBcnJh
eSwgc2lnbmVkIGNoYXI+KGV4ZWMsIGltcGwoKSk7Ci19Cit9Ki8KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnQxNkFycmF5Q3Vz
dG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ludDE2
QXJyYXlDdXN0b20uY3BwCShyZXZpc2lvbiAxMjQ4NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0ludDE2QXJyYXlDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICsz
Miw3IEBACiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0KKy8q
CiB2b2lkIEpTSW50MTZBcnJheTo6aW5kZXhTZXR0ZXIoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIHVu
c2lnbmVkIGluZGV4LCBKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CiAgICAgaW1wbCgpLT5zZXQoaW5k
ZXgsIHN0YXRpY19jYXN0PHNpZ25lZCBzaG9ydD4odmFsdWUudG9JbnQzMihleGVjKSkpOwpAQCAt
NDcsNSArNDcsNSBAQCBKU0M6OkpTVmFsdWUgSlNJbnQxNkFycmF5OjpzZXQoSlNDOjpFeGVjCiB7
CiAgICAgcmV0dXJuIHNldFdlYkdMQXJyYXlIZWxwZXI8SW50MTZBcnJheSwgc2hvcnQ+KGV4ZWMs
IGltcGwoKSk7CiB9Ci0KKyovCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ludDMyQXJyYXlDdXN0b20uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW50MzJBcnJheUN1c3RvbS5jcHAJKHJldmlz
aW9uIDEyNDg3MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW50MzJBcnJheUN1
c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKIHVzaW5nIG5hbWVzcGFj
ZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLQorLyoKIHZvaWQgSlNJbnQzMkFycmF5Ojpp
bmRleFNldHRlcihKU0M6OkV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW5kZXgsIEpTQzo6SlNW
YWx1ZSB2YWx1ZSkKIHsKICAgICBpbXBsKCktPnNldChpbmRleCwgc3RhdGljX2Nhc3Q8c2lnbmVk
IGludD4odmFsdWUudG9JbnQzMihleGVjKSkpOwpAQCAtNDcsNSArNDcsNSBAQCBKU0M6OkpTVmFs
dWUgSlNJbnQzMkFycmF5OjpzZXQoSlNDOjpFeGVjCiB7CiAgICAgcmV0dXJuIHNldFdlYkdMQXJy
YXlIZWxwZXI8SW50MzJBcnJheSwgaW50PihleGVjLCBpbXBsKCkpOwogfQotCisqLwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVaW50
OEFycmF5Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1VpbnQ4QXJyYXlDdXN0b20uY3BwCShyZXZpc2lvbiAxMjQ4NzIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1VpbnQ4QXJyYXlDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMiw3ICszMiw3IEBACiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KKy8qCiB2b2lkIEpTVWludDhBcnJheTo6aW5kZXhTZXR0ZXIoSlNDOjpFeGVjU3RhdGUq
IGV4ZWMsIHVuc2lnbmVkIGluZGV4LCBKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CiAgICAgaW1wbCgp
LT5zZXQoaW5kZXgsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHZhbHVlLnRvSW50MzIoZXhl
YykpKTsKQEAgLTQ3LDUgKzQ3LDUgQEAgSlNDOjpKU1ZhbHVlIEpTVWludDhBcnJheTo6c2V0KEpT
Qzo6RXhlYwogewogICAgIHJldHVybiBzZXRXZWJHTEFycmF5SGVscGVyPFVpbnQ4QXJyYXksIHVu
c2lnbmVkIGNoYXI+KGV4ZWMsIGltcGwoKSk7CiB9Ci0KKyovCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQ4Q2xhbXBlZEFycmF5
Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Vp
bnQ4Q2xhbXBlZEFycmF5Q3VzdG9tLmNwcAkocmV2aXNpb24gMTI0ODcyKQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNVaW50OENsYW1wZWRBcnJheUN1c3RvbS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMyLDcgKzMyLDcgQEAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQorLyoKIHZvaWQgSlNVaW50OENsYW1wZWRBcnJheTo6aW5kZXhTZXR0ZXIo
SlNDOjpFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGluZGV4LCBKU0M6OkpTVmFsdWUgdmFsdWUp
CiB7CiAgICAgaW1wbCgpLT5zZXQoaW5kZXgsIHZhbHVlLnRvTnVtYmVyKGV4ZWMpKTsKQEAgLTQ3
LDUgKzQ3LDUgQEAgSlNDOjpKU1ZhbHVlIEpTVWludDhDbGFtcGVkQXJyYXk6OnNldChKUwogewog
ICAgIHJldHVybiBzZXRXZWJHTEFycmF5SGVscGVyPFVpbnQ4Q2xhbXBlZEFycmF5LCB1bnNpZ25l
ZCBjaGFyPihleGVjLCBpbXBsKCkpOwogfQotCisqLwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVaW50MTZBcnJheUN1c3RvbS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVaW50MTZBcnJheUN1
c3RvbS5jcHAJKHJldmlzaW9uIDEyNDg3MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTVWludDE2QXJyYXlDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBA
CiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0KKy8qCiB2b2lk
IEpTVWludDE2QXJyYXk6OmluZGV4U2V0dGVyKEpTQzo6RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25l
ZCBpbmRleCwgSlNDOjpKU1ZhbHVlIHZhbHVlKQogewogICAgIGltcGwoKS0+c2V0KGluZGV4LCBz
dGF0aWNfY2FzdDx1bnNpZ25lZCBzaG9ydD4odmFsdWUudG9JbnQzMihleGVjKSkpOwpAQCAtNDYs
NiArNDYsNiBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywKIEpTQzo6
SlNWYWx1ZSBKU1VpbnQxNkFycmF5OjpzZXQoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAg
cmV0dXJuIHNldFdlYkdMQXJyYXlIZWxwZXI8VWludDE2QXJyYXksIHVuc2lnbmVkIHNob3J0Pihl
eGVjLCBpbXBsKCkpOwotfQorfSovCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWludDMyQXJyYXlDdXN0b20uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWludDMyQXJyYXlDdXN0b20uY3Bw
CShyZXZpc2lvbiAxMjQ4NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQz
MkFycmF5Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogdXNpbmcg
bmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotCisvKgogdm9pZCBKU1VpbnQz
MkFycmF5OjppbmRleFNldHRlcihKU0M6OkV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW5kZXgs
IEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBpbXBsKCktPnNldChpbmRleCwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQgaW50Pih2YWx1ZS50b1VJbnQzMihleGVjKSkpOwpAQCAtNDYsNiArNDYsNiBA
QCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywKIEpTQzo6SlNWYWx1ZSBK
U1VpbnQzMkFycmF5OjpzZXQoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgcmV0dXJuIHNl
dFdlYkdMQXJyYXlIZWxwZXI8VWludDMyQXJyYXksIHVuc2lnbmVkIGludD4oZXhlYywgaW1wbCgp
KTsKLX0KK30qLwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24g
MTI0ODcyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTIyMTMsNyArMjIxMyw5IEBAIHN1YiBHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgaWYgKCRpc0N1c3RvbSkgewogICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGNhc3RlZFRoaXMtPiIgLiAkZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWUgLiAiKGV4ZWMpKTtc
biIpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgICRpbXBsVHlwZSogaW1wbCA9IHN0YXRpY19jYXN0PCRpbXBsVHlw
ZSo+KGNhc3RlZFRoaXMtPmltcGwoKSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCEo
JGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUgZXEgInNldCIgYW5kICRmdW5jdGlvbi0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVHlwZWRBcnJheSJ9KSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGltcGxUeXBlKiBpbXBsID0gc3Rh
dGljX2Nhc3Q8JGltcGxUeXBlKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTtcbiIpOworICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGlmICgkc3ZnUHJvcGVydHlUeXBlKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoaW1w
bC0+aXNSZWFkT25seSgpKSB7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgTk9fTU9ESUZJQ0FUSU9O
X0FMTE9XRURfRVJSKTtcbiIpOwpAQCAtMjI0Myw3ICsyMjQ1LDEyIEBAIHN1YiBHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uCiAKICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRudW1QYXJhbWV0ZXJz
ID0gQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9OwogICAgICAgICAgICAgICAgICAgICAgICAgbXkg
KCRmdW5jdGlvblN0cmluZywgJGR1bW15KSA9IEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrKFxAaW1w
bENvbnRlbnQsICRmdW5jdGlvbiwgJGRhdGFOb2RlLCAkbnVtUGFyYW1ldGVycywgJGltcGxDbGFz
c05hbWUsICRmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZSwgJHN2Z1Byb3BlcnR5VHlwZSwgJHN2
Z1Byb3BlcnR5T3JMaXN0UHJvcGVydHlUeXBlLCAkc3ZnTGlzdFByb3BlcnR5VHlwZSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZUltcGxlbWVudGF0aW9uRnVuY3Rpb25DYWxsKCRm
dW5jdGlvbiwgJGZ1bmN0aW9uU3RyaW5nLCAiICAgICIsICRzdmdQcm9wZXJ0eVR5cGUsICRpbXBs
Q2xhc3NOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPnNpZ25h
dHVyZS0+bmFtZSBlcSAic2V0IiBhbmQgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJUeXBlZEFycmF5In0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
eSAkdmlld1R5cGUgPSAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJUeXBlZEFycmF5
In07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShzZXRXZWJHTEFycmF5SGVscGVyPCRpbXBsVHlwZSwgJHZp
ZXdUeXBlPihleGVjLCBjYXN0ZWRUaGlzLT5pbXBsKCkpKTtcbiIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uRnVuY3Rpb25DYWxsKCRmdW5jdGlvbiwgJGZ1bmN0aW9uU3RyaW5nLCAiICAg
ICIsICRzdmdQcm9wZXJ0eVR5cGUsICRpbXBsQ2xhc3NOYW1lKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIH0KQEAgLTM4MDQsNiArMzgxMSwxOCBAQCBFTkQKICAgICAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpO1xu
Iik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShhc09iamVjdCh0b0pTKGV4ZWMsIGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgp
LCBhcnJheS5nZXQoKSkpKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
fVxuXG4iKTsKKworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiSlNDOjpKU1ZhbHVl
IHRvSlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsICR7aW50ZXJmYWNlTmFtZX0qIG9iamVjdClcbiIpOworICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAie1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
cmV0dXJuIHRvSlNBcnJheUJ1ZmZlclZpZXc8JHtjbGFzc05hbWV9PihleGVjLCBnbG9iYWxPYmpl
Y3QsIG9iamVjdCk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIn1cblxu
Iik7CisKKyAgICAgICAgICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJD
dXN0b21JbmRleGVkU2V0dGVyIn0pIHsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICJ2b2lkICR7Y2xhc3NOYW1lfTo6aW5kZXhTZXR0ZXIoSlNDOjpFeGVjU3RhdGUqIGV4ZWMs
IHVuc2lnbmVkIGluZGV4LCBKU0M6OkpTVmFsdWUgdmFsdWUpXG4iKTsKKyAgICAgICAgICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIgICAgaW1wbCgpLT5zZXQoaW5kZXgsIHZhbHVlLnRvTnVtYmVyKGV4ZWMpKTtc
biIpOworICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIn1cbiIpOworICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgfQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0JKHJldmlzaW9uIDEyNDg3MikK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDczLDYgKzE0NzMsMTYgQEAgRU5ECiAKICAgICBwdXNoKEBpbXBs
Q29udGVudERlY2xzLCBHZW5lcmF0ZUFyZ3VtZW50c0NvdW50Q2hlY2soJGZ1bmN0aW9uLCAkZGF0
YU5vZGUpKTsKIAorICAgIGlmICgkbmFtZSBlcSAic2V0IiBhbmQgJGZ1bmN0aW9uLT5zaWduYXR1
cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJUeXBlZEFycmF5In0pIHsKKyAgICAgICAgQWRkVG9J
bXBsSW5jbHVkZXMoIlY4QXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmgiKTsKKyAgICAgICAgcHVzaChA
aW1wbENvbnRlbnREZWNscywgPDxFTkQpOworICAgIHJldHVybiBzZXRXZWJHTEFycmF5SGVscGVy
PCRpbXBsQ2xhc3NOYW1lLCBWOCR7aW1wbENsYXNzTmFtZX0+KGFyZ3MpOworfQorCitFTkQKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIG15ICgkc3ZnUHJvcGVydHlUeXBlLCAkc3ZnTGlz
dFByb3BlcnR5VHlwZSwgJHN2Z05hdGl2ZVR5cGUpID0gR2V0U1ZHUHJvcGVydHlUeXBlcygkaW1w
bENsYXNzTmFtZSk7CiAKICAgICBpZiAoJHN2Z05hdGl2ZVR5cGUpIHsKQEAgLTI2MDgsNiArMjYx
OCwxOSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOCgkaW1wbENsYXNzTmFtCiB9CiAKIEVO
RAorCisgICAgICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21D
b25zdHJ1Y3RvciJ9KSB7CisgICAgICAgICAgICBteSAkdHlwZSA9ICRkYXRhTm9kZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IlR5cGVkQXJyYXkifTsKKyAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1
ZGVzKCJWOEFycmF5QnVmZmVyVmlld0N1c3RvbS5oIik7CisgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgPDxFTkQpOwordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4JHtpbXBsQ2xhc3NOYW1l
fTo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAg
IElOQ19TVEFUUygiRE9NLiR7aW1wbENsYXNzTmFtZX0uQ29udHJ1Y3RvciIpOworICAgIHJldHVy
biBjb25zdHJ1Y3RXZWJHTEFycmF5PCRpbXBsQ2xhc3NOYW1lLCBWOCR7aW1wbENsYXNzTmFtZX0s
ICR0eXBlPihhcmdzLCAmaW5mbywgJHZpZXdUeXBlKTsKK30KKworRU5ECisgICAgICAgIH0KICAg
ICB9CiAKICAgICBteSAkaW5kZXhlcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9UZXN0VHlwZWRBcnJheS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RUeXBlZEFycmF5LmlkbAkocmV2aXNpb24gMTI0
ODcyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RUeXBlZEFy
cmF5LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzcsNSArMzcsNiBAQCBtb2R1bGUgaHRtbCB7CiAg
ICAgICAgIFR5cGVkQXJyYXk9ZG91YmxlCiAgICAgXSBGbG9hdDY0QXJyYXkgOiBBcnJheUJ1ZmZl
clZpZXcgewogICAgICAgICBJbnQzMkFycmF5IGZvbyhpbiBGbG9hdDMyQXJyYXkgYXJyYXkpOwor
ICAgICAgICBbVHlwZWRBcnJheT1kb3VibGVdIHZvaWQgc2V0KCk7CiAgICAgfTsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NRmxvYXQ2NEFy
cmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvQ1BQL1dlYkRPTUZsb2F0NjRBcnJheS5jcHAJKHJldmlzaW9uIDEyNDg3MikKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NRmxvYXQ2NEFycmF5LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsMTQgQEAgV2ViRE9NSW50MzJBcnJheSBXZWJE
T01GbG9hdDY0QXJyYXk6OmZvbwogICAgIHJldHVybiB0b1dlYktpdChXVEY6OmdldFB0cihpbXBs
KCktPmZvbyh0b1dlYkNvcmUoYXJyYXkpKSkpOwogfQogCit2b2lkIFdlYkRPTUZsb2F0NjRBcnJh
eTo6c2V0KCkKK3sKKyAgICBpZiAoIWltcGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW1w
bCgpLT5zZXQoKTsKK30KKwogV1RGOjpGbG9hdDY0QXJyYXkqIHRvV2ViQ29yZShjb25zdCBXZWJE
T01GbG9hdDY0QXJyYXkmIHdyYXBwZXIpCiB7CiAgICAgcmV0dXJuIHdyYXBwZXIuaW1wbCgpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01GbG9h
dDY0QXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvQ1BQL1dlYkRPTUZsb2F0NjRBcnJheS5oCShyZXZpc2lvbiAxMjQ4NzIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTUZsb2F0NjRBcnJheS5o
CSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5X
ZWJET01GbG9hdDY0QXJyYXkoKSB7IH0KIAogICAgIFdlYkRPTUludDMyQXJyYXkgZm9vKGNvbnN0
IFdlYkRPTUZsb2F0MzJBcnJheSYgYXJyYXkpOworICAgIHZvaWQgc2V0KCk7CiAKICAgICBXVEY6
OkZsb2F0NjRBcnJheSogaW1wbCgpIGNvbnN0OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTUZsb2F0NjRBcnJheS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3Qv
V2ViS2l0RE9NRmxvYXQ2NEFycmF5LmNwcAkocmV2aXNpb24gMTI0ODcyKQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NRmxvYXQ2NEFycmF5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYxLDMgKzE2MSwxMiBAQCB3ZWJraXRfZG9tX2Zsb2F0
NjRhcnJheV9mb28oV2ViS2l0RE9NRmxvCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAordm9pZAor
d2Via2l0X2RvbV9mbG9hdDY0YXJyYXlfc2V0KFdlYktpdERPTUZsb2F0NjRBcnJheSogc2VsZikK
K3sKKyAgICBnX3JldHVybl9pZl9mYWlsKHNlbGYpOworICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBXZWJDb3JlOjpGbG9hdDY0QXJyYXkqIGl0ZW0gPSBXZWJL
aXQ6OmNvcmUoc2VsZik7CisgICAgaXRlbS0+c2V0KCk7Cit9CisKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTUZsb2F0NjRBcnJheS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2Jq
ZWN0L1dlYktpdERPTUZsb2F0NjRBcnJheS5oCShyZXZpc2lvbiAxMjQ4NzIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01GbG9hdDY0QXJy
YXkuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsMTYgQEAgd2Via2l0X2RvbV9mbG9hdDY0
YXJyYXlfZ2V0X3R5cGUgKHZvaWQpOwogV0VCS0lUX0FQSSBXZWJLaXRET01JbnQzMkFycmF5Kgog
d2Via2l0X2RvbV9mbG9hdDY0YXJyYXlfZm9vKFdlYktpdERPTUZsb2F0NjRBcnJheSogc2VsZiwg
V2ViS2l0RE9NRmxvYXQzMkFycmF5KiBhcnJheSk7CiAKKy8qKgorICogd2Via2l0X2RvbV9mbG9h
dDY0YXJyYXlfc2V0OgorICogQHNlbGY6IEEgI1dlYktpdERPTUZsb2F0NjRBcnJheQorICoKKyAq
IFJldHVybnM6CisgKgorKiovCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9kb21fZmxvYXQ2NGFy
cmF5X3NldChXZWJLaXRET01GbG9hdDY0QXJyYXkqIHNlbGYpOworCiBHX0VORF9ERUNMUwogCiAj
ZW5kaWYgLyogV2ViS2l0RE9NRmxvYXQ2NEFycmF5X2ggKi8KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5
LmNwcAkocmV2aXNpb24gMTI0ODcyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUsMTUgKzk1
LDI1IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNGbG9hdDY0QXIKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzT2JqZWN0KHRvSlMoZXhlYywganNDb25zdHJ1Y3Rvci0+Z2xv
YmFsT2JqZWN0KCksIGFycmF5LmdldCgpKSkpOwogfQogCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6
OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRmxvYXQ2
NEFycmF5KiBvYmplY3QpCit7CisgICAgcmV0dXJuIHRvSlNBcnJheUJ1ZmZlclZpZXc8SlNGbG9h
dDY0QXJyYXk+KGV4ZWMsIGdsb2JhbE9iamVjdCwgb2JqZWN0KTsKK30KKwordm9pZCBKU0Zsb2F0
NjRBcnJheTo6aW5kZXhTZXR0ZXIoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGluZGV4
LCBKU0M6OkpTVmFsdWUgdmFsdWUpCit7CisgICAgaW1wbCgpLT5zZXQoaW5kZXgsIHZhbHVlLnRv
TnVtYmVyKGV4ZWMpKTsKK30KIC8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwogCiBzdGF0
aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNGbG9hdDY0QXJyYXlQcm90b3R5cGVUYWJsZVZhbHVl
c1tdID0KIHsKICAgICB7ICJmb28iLCBEb250RGVsZXRlIHwgSlNDOjpGdW5jdGlvbiwgKGludHB0
cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc0Zsb2F0NjRBcnJheVByb3RvdHlwZUZ1
bmN0aW9uRm9vKSwgKGludHB0cl90KTEsIE5vSW50cmluc2ljIH0sCisgICAgeyAic2V0IiwgRG9u
dERlbGV0ZSB8IEpTQzo6RnVuY3Rpb24sIChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5j
dGlvbj4oanNGbG9hdDY0QXJyYXlQcm90b3R5cGVGdW5jdGlvblNldCksIChpbnRwdHJfdCkwLCBO
b0ludHJpbnNpYyB9LAogICAgIHsgMCwgMCwgMCwgMCwgTm9JbnRyaW5zaWMgfQogfTsKIAotc3Rh
dGljIGNvbnN0IEhhc2hUYWJsZSBKU0Zsb2F0NjRBcnJheVByb3RvdHlwZVRhYmxlID0geyAyLCAx
LCBKU0Zsb2F0NjRBcnJheVByb3RvdHlwZVRhYmxlVmFsdWVzLCAwIH07CitzdGF0aWMgY29uc3Qg
SGFzaFRhYmxlIEpTRmxvYXQ2NEFycmF5UHJvdG90eXBlVGFibGUgPSB7IDQsIDMsIEpTRmxvYXQ2
NEFycmF5UHJvdG90eXBlVGFibGVWYWx1ZXMsIDAgfTsKIHN0YXRpYyBjb25zdCBIYXNoVGFibGUq
IGdldEpTRmxvYXQ2NEFycmF5UHJvdG90eXBlVGFibGUoRXhlY1N0YXRlKiBleGVjKQogewogICAg
IHJldHVybiBnZXRIYXNoVGFibGVGb3JHbG9iYWxEYXRhKGV4ZWMtPmdsb2JhbERhdGEoKSwgJkpT
RmxvYXQ2NEFycmF5UHJvdG90eXBlVGFibGUpOwpAQCAtMjQ4LDYgKzI1OCwxNiBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzRmxvYXQ2NEFyCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShyZXN1bHQpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzRmxvYXQ2
NEFycmF5UHJvdG90eXBlRnVuY3Rpb25TZXQoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOworICAgIGlmICghdGhpc1ZhbHVl
LmluaGVyaXRzKCZKU0Zsb2F0NjRBcnJheTo6c19pbmZvKSkKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgSlNGbG9hdDY0QXJyYXkqIGNhc3RlZFRoaXMgPSBqc0Nh
c3Q8SlNGbG9hdDY0QXJyYXkqPihhc09iamVjdCh0aGlzVmFsdWUpKTsKKyAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsICZKU0Zsb2F0NjRBcnJheTo6c19pbmZvKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNldFdlYkdMQXJyYXlIZWxwZXI8RmxvYXQ2NEFycmF5
LCBkb3VibGU+KGV4ZWMsIGNhc3RlZFRoaXMtPmltcGwoKSkpOworfQorCiAKIEpTVmFsdWUgSlNG
bG9hdDY0QXJyYXk6OmdldEJ5SW5kZXgoRXhlY1N0YXRlKiwgdW5zaWduZWQgaW5kZXgpCiB7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJy
YXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNGbG9hdDY0QXJyYXkuaAkocmV2aXNpb24gMTI0ODcyKQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTEyNiw2ICsxMjYsNyBAQCBwcm90ZWN0ZWQ6CiAvLyBGdW5jdGlvbnMKIAogSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzRmxvYXQ2NEFycmF5UHJvdG90eXBlRnVuY3Rpb25G
b28oSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c0Zsb2F0NjRBcnJheVByb3RvdHlwZUZ1bmN0aW9uU2V0KEpTQzo6RXhlY1N0YXRlKik7CiAvLyBB
dHRyaWJ1dGVzCiAKIEpTQzo6SlNWYWx1ZSBqc0Zsb2F0NjRBcnJheUNvbnN0cnVjdG9yKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01GbG9hdDY0QXJyYXkuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9E
T01GbG9hdDY0QXJyYXkuaAkocmV2aXNpb24gMTI0ODcyKQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NRmxvYXQ2NEFycmF5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTMzLDYgKzMzLDcgQEAKIAogQGludGVyZmFjZSBET01GbG9hdDY0QXJyYXkgOiBET01BcnJh
eUJ1ZmZlclZpZXcKIC0gKERPTUludDMyQXJyYXkgKilmb286KERPTUZsb2F0MzJBcnJheSAqKWFy
cmF5OworLSAodm9pZClzZXQ7CiBAZW5kCiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NRmxvYXQ2NEFycmF5Lm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTUZsb2F0NjRB
cnJheS5tbQkocmV2aXNpb24gMTI0ODcyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L09iakMvRE9NRmxvYXQ2NEFycmF5Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw2
ICs1NywxMiBAQCAtIChET01JbnQzMkFycmF5ICopZm9vOihET01GbG9hdDMyQXJyYXkKICAgICBy
ZXR1cm4ga2l0KFdURjo6Z2V0UHRyKElNUEwtPmZvbyhjb3JlKGFycmF5KSkpKTsKIH0KIAorLSAo
dm9pZClzZXQKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Cisg
ICAgSU1QTC0+c2V0KCk7Cit9CisKIEBlbmQKIAogV2ViQ29yZTo6RmxvYXQ2NEFycmF5KiBjb3Jl
KERPTUZsb2F0NjRBcnJheSAqd3JhcHBlcikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcAkocmV2
aXNpb24gMTI0ODcyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4RmxvYXQ2NEFycmF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVz
LmgiCiAjaW5jbHVkZSAiVjhBcnJheUJ1ZmZlclZpZXcuaCIKKyNpbmNsdWRlICJWOEFycmF5QnVm
ZmVyVmlld0N1c3RvbS5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4Qmlu
ZGluZ01hY3Jvcy5oIgogI2luY2x1ZGUgIlY4RE9NV3JhcHBlci5oIgpAQCAtNTksNiArNjAsMTIg
QEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBmb29DYWxsYmFjawogICAgIHJldHVybiB0
b1Y4KGltcC0+Zm9vKGFycmF5KSwgYXJncy5HZXRJc29sYXRlKCkpOwogfQogCitzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHNldENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
Cit7CisgICAgSU5DX1NUQVRTKCJET00uRmxvYXQ2NEFycmF5LnNldCIpOworICAgIHJldHVybiBz
ZXRXZWJHTEFycmF5SGVscGVyPEZsb2F0NjRBcnJheSwgVjhGbG9hdDY0QXJyYXk+KGFyZ3MpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBGbG9hdDY0QXJyYXlWOEludGVybmFsCiAKIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiB0b1Y4KEZsb2F0NjRBcnJheSogaW1wbCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUp
CkBAIC03MSw2ICs3OCwxNiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChGbG9hdDY0QXJy
YXkqCiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEZs
b2F0NjRBcnJheTo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQoreworICAgIElOQ19TVEFUUygiRE9NLkZsb2F0NjRBcnJheS5Db250cnVjdG9yIik7CisgICAg
cmV0dXJuIGNvbnN0cnVjdFdlYkdMQXJyYXk8RmxvYXQ2NEFycmF5LCBWOEZsb2F0NjRBcnJheSwg
ZG91YmxlPihhcmdzLCAmaW5mbywgdjg6OmtFeHRlcm5hbERvdWJsZUFycmF5KTsKK30KKworc3Rh
dGljIGNvbnN0IEJhdGNoZWRDYWxsYmFjayBGbG9hdDY0QXJyYXlDYWxsYmFja3NbXSA9IHsKKyAg
ICB7InNldCIsIEZsb2F0NjRBcnJheVY4SW50ZXJuYWw6OnNldENhbGxiYWNrfSwKK307CisKIHN0
YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhGbG9h
dDY0QXJyYXlUZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGVz
YykKIHsKICAgICBkZXNjLT5SZWFkT25seVByb3RvdHlwZSgpOwpAQCAtNzgsNyArOTUsNyBAQCBz
dGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhCiAgICAgdjg6OkxvY2FsPHY4
OjpTaWduYXR1cmU+IGRlZmF1bHRTaWduYXR1cmU7CiAgICAgZGVmYXVsdFNpZ25hdHVyZSA9IGNv
bmZpZ3VyZVRlbXBsYXRlKGRlc2MsICJGbG9hdDY0QXJyYXkiLCBWOEFycmF5QnVmZmVyVmlldzo6
R2V0VGVtcGxhdGUoKSwgVjhGbG9hdDY0QXJyYXk6OmludGVybmFsRmllbGRDb3VudCwKICAgICAg
ICAgMCwgMCwKLSAgICAgICAgMCwgMCk7CisgICAgICAgIEZsb2F0NjRBcnJheUNhbGxiYWNrcywg
V1RGX0FSUkFZX0xFTkdUSChGbG9hdDY0QXJyYXlDYWxsYmFja3MpKTsKICAgICBVTlVTRURfUEFS
QU0oZGVmYXVsdFNpZ25hdHVyZSk7IC8vIEluIHNvbWUgY2FzZXMsIGl0IHdpbGwgbm90IGJlIHVz
ZWQuCiAgICAgZGVzYy0+U2V0Q2FsbEhhbmRsZXIoVjhGbG9hdDY0QXJyYXk6OmNvbnN0cnVjdG9y
Q2FsbGJhY2spOwogICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0VGVtcGxhdGU+IGluc3RhbmNlID0g
ZGVzYy0+SW5zdGFuY2VUZW1wbGF0ZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4RmxvYXQzMkFycmF5Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhGbG9hdDMyQXJyYXlDdXN0b20uY3BwCShyZXZp
c2lvbiAxMjQ4NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhGbG9h
dDMyQXJyYXlDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBACiAjaW5j
bHVkZSAiVjhQcm94eS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0KKy8qCiB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhGbG9hdDMyQXJyYXk6OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5GbG9hdDMyQXJyYXkuQ29u
dHJ1Y3RvciIpOwpAQCAtNTMsNSArNTMsNSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhGbG9h
dDMyQXJyYXk6OnNlCiAgICAgSU5DX1NUQVRTKCJET00uRmxvYXQzMkFycmF5LnNldCgpIik7CiAg
ICAgcmV0dXJuIHNldFdlYkdMQXJyYXlIZWxwZXI8RmxvYXQzMkFycmF5LCBWOEZsb2F0MzJBcnJh
eT4oYXJncyk7CiB9Ci0KKyovCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhGbG9hdDY0QXJyYXlDdXN0b20uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEZsb2F0NjRBcnJh
eUN1c3RvbS5jcHAJKHJldmlzaW9uIDEyNDg3MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEZsb2F0NjRBcnJheUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1
LDcgKzM1LDcgQEAKICNpbmNsdWRlIDx3dGYvRmxvYXQ2NEFycmF5Lmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQorLyoKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEZsb2F0NjRBcnJheTo6Y29u
c3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19T
VEFUUygiRE9NLkZsb2F0NjRBcnJheS5Db250cnVjdG9yIik7CkBAIC00Nyw2ICs0Nyw2IEBAIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOEZsb2F0NjRBcnJheTo6c2UKIHsKICAgICBJTkNfU1RBVFMo
IkRPTS5GbG9hdDY0QXJyYXkuc2V0KCkiKTsKICAgICByZXR1cm4gc2V0V2ViR0xBcnJheUhlbHBl
cjxGbG9hdDY0QXJyYXksIFY4RmxvYXQ2NEFycmF5PihhcmdzKTsKLX0KK30qLwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhJbnQ4QXJyYXlDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEludDhBcnJheUN1c3RvbS5jcHAJKHJldmlzaW9uIDEyNDg3MikKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEludDhBcnJheUN1c3RvbS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAKICNpbmNsdWRlICJWOFByb3h5LmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKLQorLyoKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEludDhB
cnJheTo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewog
ICAgIElOQ19TVEFUUygiRE9NLkludDhBcnJheS5Db250cnVjdG9yIik7CkBAIC01MSw2ICs1MSw2
IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEludDhBcnJheTo6c2V0Q2EKIHsKICAgICBJTkNf
U1RBVFMoIkRPTS5JbnQ4QXJyYXkuc2V0KCkiKTsKICAgICByZXR1cm4gc2V0V2ViR0xBcnJheUhl
bHBlcjxJbnQ4QXJyYXksIFY4SW50OEFycmF5PihhcmdzKTsKLX0KK30qLwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJ
bnQxNkFycmF5Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhJbnQxNkFycmF5Q3VzdG9tLmNwcAkocmV2aXNpb24gMTI0ODcyKQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW50MTZBcnJheUN1c3RvbS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAKICNpbmNsdWRlICJWOFByb3h5LmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKLQorLyoKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEludDE2
QXJyYXk6OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsK
ICAgICBJTkNfU1RBVFMoIkRPTS5JbnQxNkFycmF5LkNvbnRydWN0b3IiKTsKQEAgLTUxLDYgKzUx
LDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW50MTZBcnJheTo6c2V0QwogewogICAgIElO
Q19TVEFUUygiRE9NLkludDE2QXJyYXkuc2V0KCkiKTsKICAgICByZXR1cm4gc2V0V2ViR0xBcnJh
eUhlbHBlcjxJbnQxNkFycmF5LCBWOEludDE2QXJyYXk+KGFyZ3MpOwotfQorfSovCiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEludDMyQXJyYXlDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEludDMyQXJyYXlDdXN0b20uY3BwCShyZXZpc2lvbiAxMjQ4NzIp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbnQzMkFycmF5Q3VzdG9t
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQAogI2luY2x1ZGUgIlY4UHJveHku
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotCisvKgogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
SW50MzJBcnJheTo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQogewogICAgIElOQ19TVEFUUygiRE9NLkludDMyQXJyYXkuQ29udHJ1Y3RvciIpOwpAQCAtNTEs
NiArNTEsNiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbnQzMkFycmF5OjpzZXRDCiB7CiAg
ICAgSU5DX1NUQVRTKCJET00uSW50MzJBcnJheS5zZXQoKSIpOwogICAgIHJldHVybiBzZXRXZWJH
TEFycmF5SGVscGVyPEludDMyQXJyYXksIFY4SW50MzJBcnJheT4oYXJncyk7Ci19Cit9Ki8KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4VWludDhBcnJheUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4VWludDhBcnJheUN1c3RvbS5jcHAJKHJldmlzaW9uIDEy
NDg3MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFVpbnQ4QXJyYXlD
dXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBACiAjaW5jbHVkZSAiVjhQ
cm94eS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0KKy8qCiB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhVaW50OEFycmF5Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uVWludDhBcnJheS5Db250cnVjdG9yIik7CkBA
IC01MSw2ICs1MSw2IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFVpbnQ4QXJyYXk6OnNldEMK
IHsKICAgICBJTkNfU1RBVFMoIkRPTS5VaW50OEFycmF5LnNldCgpIik7CiAgICAgcmV0dXJuIHNl
dFdlYkdMQXJyYXlIZWxwZXI8VWludDhBcnJheSwgVjhVaW50OEFycmF5PihhcmdzKTsKLX0KK30q
LwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhVaW50OENsYW1wZWRBcnJheUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4VWludDhDbGFtcGVkQXJyYXlDdXN0
b20uY3BwCShyZXZpc2lvbiAxMjQ4NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhVaW50OENsYW1wZWRBcnJheUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2
LDcgKzM2LDcgQEAKICNpbmNsdWRlICJWOFVpbnQ4Q2xhbXBlZEFycmF5LmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQorLyoKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFVpbnQ4Q2xhbXBlZEFy
cmF5Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAg
ICAgSU5DX1NUQVRTKCJET00uVWludDhDbGFtcGVkQXJyYXkuQ29udHJ1Y3RvciIpOwpAQCAtNDgs
NiArNDgsNiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhVaW50OENsYW1wZWRBcnJhCiB7CiAg
ICAgSU5DX1NUQVRTKCJET00uVWludDhDbGFtcGVkQXJyYXkuc2V0KCkiKTsKICAgICByZXR1cm4g
c2V0V2ViR0xBcnJheUhlbHBlcjxVaW50OENsYW1wZWRBcnJheSwgVjhVaW50OENsYW1wZWRBcnJh
eT4oYXJncyk7Ci19Cit9Ki8KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4VWludDE2QXJyYXlDdXN0b20uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFVpbnQxNkFycmF5
Q3VzdG9tLmNwcAkocmV2aXNpb24gMTI0ODcyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4VWludDE2QXJyYXlDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3
ICszOSw3IEBACiAjaW5jbHVkZSAiVjhQcm94eS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
Ky8qCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhVaW50MTZBcnJheTo6Y29uc3RydWN0b3JDYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLlVp
bnQxNkFycmF5LkNvbnRydWN0b3IiKTsKQEAgLTUxLDYgKzUxLDYgQEAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4VWludDE2QXJyYXk6OnNldAogewogICAgIElOQ19TVEFUUygiRE9NLlVpbnQxNkFy
cmF5LnNldCgpIik7CiAgICAgcmV0dXJuIHNldFdlYkdMQXJyYXlIZWxwZXI8VWludDE2QXJyYXks
IFY4VWludDE2QXJyYXk+KGFyZ3MpOwotfQorfSovCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFVpbnQzMkFycmF5Q3Vz
dG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhVaW50MzJBcnJheUN1c3RvbS5jcHAJKHJldmlzaW9uIDEyNDg3MikKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFVpbnQzMkFycmF5Q3VzdG9tLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzksNyArMzksNyBAQAogI2luY2x1ZGUgIlY4UHJveHkuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewotCisvKgogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VWludDMyQXJyYXk6OmNv
bnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNf
U1RBVFMoIkRPTS5VaW50MzJBcnJheS5Db250cnVjdG9yIik7CkBAIC01MSw2ICs1MSw2IEBAIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOFVpbnQzMkFycmF5OjpzZXQKIHsKICAgICBJTkNfU1RBVFMo
IkRPTS5VaW50MzJBcnJheS5zZXQoKSIpOwogICAgIHJldHVybiBzZXRXZWJHTEFycmF5SGVscGVy
PFVpbnQzMkFycmF5LCBWOFVpbnQzMkFycmF5PihhcmdzKTsKLX0KK30qLwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9GbG9hdDMyQXJy
YXkuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Zsb2F0MzJB
cnJheS5pZGwJKHJldmlzaW9uIDEyNDg3MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0Zsb2F0MzJBcnJheS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDYgQEAgbW9kdWxl
IGh0bWwgewogCiAgICAgICAgIC8vIHZvaWQgc2V0KGluIEZsb2F0MzJBcnJheSBhcnJheSwgW09w
dGlvbmFsXSBpbiB1bnNpZ25lZCBsb25nIG9mZnNldCk7CiAgICAgICAgIC8vIHZvaWQgc2V0KGlu
IHNlcXVlbmNlPGxvbmc+IGFycmF5LCBbT3B0aW9uYWxdIGluIHVuc2lnbmVkIGxvbmcgb2Zmc2V0
KTsKLSAgICAgICAgW0N1c3RvbV0gdm9pZCBzZXQoKTsKKyAgICAgICAgW1R5cGVkQXJyYXk9Zmxv
YXRdIHZvaWQgc2V0KCk7CiAgICAgfTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0Zsb2F0NjRBcnJheS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvRmxvYXQ2NEFycmF5LmlkbAkocmV2aXNpb24gMTI0ODcyKQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvRmxvYXQ2NEFycmF5LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiAr
NDQsNiBAQCBtb2R1bGUgaHRtbCB7CiAKICAgICAgICAgLy8gdm9pZCBzZXQoaW4gRmxvYXQ2NEFy
cmF5IGFycmF5LCBbT3B0aW9uYWxdIGluIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KTsKICAgICAgICAg
Ly8gdm9pZCBzZXQoaW4gc2VxdWVuY2U8bG9uZz4gYXJyYXksIFtPcHRpb25hbF0gaW4gdW5zaWdu
ZWQgbG9uZyBvZmZzZXQpOwotICAgICAgICBbQ3VzdG9tXSB2b2lkIHNldCgpOworICAgICAgICBb
VHlwZWRBcnJheT1kb3VibGVdIHZvaWQgc2V0KCk7CiAgICAgfTsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0ludDhBcnJheS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvSW50OEFycmF5LmlkbAkocmV2aXNpb24gMTI0ODcyKQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvSW50OEFycmF5LmlkbAkod29ya2luZyBjb3B5KQpAQCAt
NDQsNiArNDQsNiBAQCBtb2R1bGUgaHRtbCB7CiAKICAgICAgICAgLy8gdm9pZCBzZXQoaW4gSW50
OEFycmF5IGFycmF5LCBbT3B0aW9uYWxdIGluIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KTsKICAgICAg
ICAgLy8gdm9pZCBzZXQoaW4gc2VxdWVuY2U8bG9uZz4gYXJyYXksIFtPcHRpb25hbF0gaW4gdW5z
aWduZWQgbG9uZyBvZmZzZXQpOwotICAgICAgICBbQ3VzdG9tXSB2b2lkIHNldCgpOworICAgICAg
ICBbVHlwZWRBcnJheT1zaWduZWQgY2hhcl0gdm9pZCBzZXQoKTsKICAgICB9OwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvSW50MTZBcnJheS5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvSW50MTZBcnJheS5pZGwJKHJldmlzaW9uIDEyNDg3
MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ludDE2QXJyYXkuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC00Myw2ICs0Myw2IEBAIG1vZHVsZSBodG1sIHsKIAogICAgICAgICAvLyB2b2lk
IHNldChpbiBJbnQxNkFycmF5IGFycmF5LCBbT3B0aW9uYWxdIGluIHVuc2lnbmVkIGxvbmcgb2Zm
c2V0KTsKICAgICAgICAgLy8gdm9pZCBzZXQoaW4gc2VxdWVuY2U8bG9uZz4gYXJyYXksIFtPcHRp
b25hbF0gaW4gdW5zaWduZWQgbG9uZyBvZmZzZXQpOwotICAgICAgICBbQ3VzdG9tXSB2b2lkIHNl
dCgpOworICAgICAgICBbVHlwZWRBcnJheT1zaG9ydF0gdm9pZCBzZXQoKTsKICAgICB9OwogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvSW50MzJBcnJheS5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvSW50MzJBcnJheS5pZGwJKHJldmlzaW9u
IDEyNDg3MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ludDMyQXJyYXkuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw2IEBAIG1vZHVsZSBodG1sIHsKIAogICAgICAgICAv
LyB2b2lkIHNldChpbiBJbnQzMkFycmF5IGFycmF5LCBbT3B0aW9uYWxdIGluIHVuc2lnbmVkIGxv
bmcgb2Zmc2V0KTsKICAgICAgICAgLy8gdm9pZCBzZXQoaW4gc2VxdWVuY2U8bG9uZz4gYXJyYXks
IFtPcHRpb25hbF0gaW4gdW5zaWduZWQgbG9uZyBvZmZzZXQpOwotICAgICAgICBbQ3VzdG9tXSB2
b2lkIHNldCgpOworICAgICAgICBbVHlwZWRBcnJheT1pbnRdIHZvaWQgc2V0KCk7CiAgICAgfTsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1VpbnQ4QXJyYXkuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1VpbnQ4QXJyYXkuaWRsCShyZXZp
c2lvbiAxMjQ4NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9VaW50OEFycmF5Lmlk
bAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNiBAQCBtb2R1bGUgaHRtbCB7CiAKICAgICAg
ICAgLy8gdm9pZCBzZXQoaW4gVWludDhBcnJheSBhcnJheSwgW09wdGlvbmFsXSBpbiB1bnNpZ25l
ZCBsb25nIG9mZnNldCk7CiAgICAgICAgIC8vIHZvaWQgc2V0KGluIHNlcXVlbmNlPGxvbmc+IGFy
cmF5LCBbT3B0aW9uYWxdIGluIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KTsKLSAgICAgICAgW0N1c3Rv
bV0gdm9pZCBzZXQoKTsKKyAgICAgICAgW1R5cGVkQXJyYXk9dW5zaWduZWQgY2hhcl0gdm9pZCBz
ZXQoKTsKICAgICB9OwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvVWludDhD
bGFtcGVkQXJyYXkuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1VpbnQ4Q2xhbXBlZEFycmF5LmlkbAkocmV2aXNpb24gMTI0ODcyKQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvVWludDhDbGFtcGVkQXJyYXkuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00
NCw2ICs0NCw2IEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAgLy8gRklYTUU6IE1pc3Npbmcgb3Ro
ZXIgc2V0dGVycyEKICAgICAgICAgLy8gdm9pZCBzZXQoaW4gVWludDhDbGFtcGVkQXJyYXkgYXJy
YXksIFtPcHRpb25hbF0gaW4gdW5zaWduZWQgbG9uZyBvZmZzZXQpOwogICAgICAgICAvLyB2b2lk
IHNldChpbiBzZXF1ZW5jZTxsb25nPiBhcnJheSwgW09wdGlvbmFsXSBpbiB1bnNpZ25lZCBsb25n
IG9mZnNldCk7Ci0gICAgICAgIFtDdXN0b21dIHZvaWQgc2V0KCk7CisgICAgICAgIFtUeXBlZEFy
cmF5PXVuc2lnbmVkIGNoYXJdIHZvaWQgc2V0KCk7CiAgICAgfTsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1VpbnQxNkFycmF5LmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9VaW50MTZBcnJheS5pZGwJKHJldmlzaW9uIDEyNDg3MikKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1VpbnQxNkFycmF5LmlkbAkod29ya2luZyBjb3B5
KQpAQCAtNDMsNiArNDMsNiBAQCBtb2R1bGUgaHRtbCB7CiAKICAgICAgICAgLy8gdm9pZCBzZXQo
aW4gVWludDE2QXJyYXkgYXJyYXksIFtPcHRpb25hbF0gaW4gdW5zaWduZWQgbG9uZyBvZmZzZXQp
OwogICAgICAgICAvLyB2b2lkIHNldChpbiBzZXF1ZW5jZTxsb25nPiBhcnJheSwgW09wdGlvbmFs
XSBpbiB1bnNpZ25lZCBsb25nIG9mZnNldCk7Ci0gICAgICAgIFtDdXN0b21dIHZvaWQgc2V0KCk7
CisgICAgICAgIFtUeXBlZEFycmF5PXVuc2lnbmVkIHNob3J0XSB2b2lkIHNldCgpOwogICAgIH07
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9VaW50MzJBcnJheS5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvVWludDMyQXJyYXkuaWRsCShy
ZXZpc2lvbiAxMjQ4NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9VaW50MzJBcnJh
eS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDYgQEAgbW9kdWxlIGh0bWwgewogCiAg
ICAgICAgIC8vIHZvaWQgc2V0KGluIFVpbnQzMkFycmF5IGFycmF5LCBbT3B0aW9uYWxdIGluIHVu
c2lnbmVkIGxvbmcgb2Zmc2V0KTsKICAgICAgICAgLy8gdm9pZCBzZXQoaW4gc2VxdWVuY2U8bG9u
Zz4gYXJyYXksIFtPcHRpb25hbF0gaW4gdW5zaWduZWQgbG9uZyBvZmZzZXQpOwotICAgICAgICBb
Q3VzdG9tXSB2b2lkIHNldCgpOworICAgICAgICBbVHlwZWRBcnJheT11bnNpZ25lZCBpbnRdIHZv
aWQgc2V0KCk7CiAgICAgfTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157158</attachid>
            <date>2012-08-08 02:10:19 -0700</date>
            <delta_ts>2012-08-08 05:55:08 -0700</delta_ts>
            <desc>updatedPatch</desc>
            <filename>typed_array_all_003.diff</filename>
            <type>text/plain</type>
            <size>90696</size>
            <attacher name="Vineet Chaudhary (vineetc)">code.vineet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNTAwOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc0IEBACisyMDEyLTA4LTA4ICBWaW5lZXQg
Q2hhdWRoYXJ5ICA8cmdmNzQ4QG1vdG9yb2xhLmNvbT4KKworICAgICAgICBSZW1vdmUgQWxsIEN1
c3RvbSBiaW5kaW5nIGNvZGUgZm9yIFR5cGVkQXJyYXkuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzM3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92aW5nIEN1c3RvbSBiaW5kaW5ncyBjb21wbGV0
ZWx5IHdpdGggaGVscCBvZiBbVHlwZWRBcnJheV0gYXR0cmlidXRlLgorCisgICAgICAgIFRlc3Rz
OiBUZXN0VHlwZWRBcnJheS5pZGwKKyAgICAgICAgVGhlcmUgc2hvdWxkIG5vdCBiZSBhbnkgYmVo
YXZpb3JhbCBjaGFuZ2UgYW5kIGFsbCB0ZXN0cyBzaG91bGQgcGFzcy4KKworICAgICAgICAqIEdO
VW1ha2VmaWxlLmxpc3QuYW06IFJlbW92ZWQgQ3VzdG9tIGZpbGVzLgorICAgICAgICAqIFRhcmdl
dC5wcmk6IERpdHRvLgorICAgICAgICAqIFVzZUpTQy5jbWFrZTogRGl0dG8uCisgICAgICAgICog
VXNlVjguY21ha2U6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUuZ3lwaTogRGl0dG8uCisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0by4KKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwOiBEaXR0by4KKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0Zsb2F0MzJBcnJheUN1c3RvbS5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
YmluZGluZ3MvanMvSlNGbG9hdDY0QXJyYXlDdXN0b20uY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTSW50MTZBcnJheUN1c3RvbS5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
YmluZGluZ3MvanMvSlNJbnQzMkFycmF5Q3VzdG9tLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0ludDhBcnJheUN1c3RvbS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNVaW50MTZBcnJheUN1c3RvbS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNVaW50MzJBcnJheUN1c3RvbS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNVaW50OEFycmF5Q3VzdG9tLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU1VpbnQ4Q2xhbXBlZEFycmF5Q3VzdG9tLmNwcDogUmVtb3ZlZC4KKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JDUFAucG06CisgICAgICAgIChTa2lwRnVu
Y3Rpb24pOiBTa2lwIGltcGxlbWVudGFpb24gZm9yIFR5cGVkQXJyYXkuCisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbToKKyAgICAgICAgKFNraXBGdW5j
dGlvbik6IFNraXAgaW1wbGVtZW50YWlvbiBmb3IgVHlwZWRBcnJheS4KKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbTogTW9kaWZpZWQgZ2VuZXJhdG9yIGNvZGUu
CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKTogR2VuZXJhdGVzIGJpbmRpbmcgZm9y
IHNldCgpIGNhbGwuCisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbik6IEdl
bmVyYXRlcyBiaW5kaW5nIGZvciB0b0pTKCkgYW5kIGluZGV4U2V0dGVyKCkuCisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbToKKyAgICAgICAgKFNraXBGdW5j
dGlvbik6IFNraXAgaW1wbGVtZW50YWlvbiBmb3IgVHlwZWRBcnJheS4KKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKEdlbmVyYXRlRnVuY3Rp
b25DYWxsYmFjayk6IEdlbmVyYXRlcyBiaW5kaW5nIGZvciBzZXRDYWxsYmFjaygpLgorICAgICAg
ICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6IEdlbmVyYXRlcyBiaW5kaW5nIGZvciBjb25zdHJ1
Y3RvckNhbGxiYWNrKCkuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxv
YXQ2NEFycmF5LmNwcDogQmluZGluZyB0ZXN0cyByZXN1bHRzLgorICAgICAgICAoV2ViQ29yZTo6
dG9KUyk6CisgICAgICAgIChXZWJDb3JlOjpKU0Zsb2F0NjRBcnJheTo6aW5kZXhTZXR0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6anNGbG9hdDY0QXJyYXlQcm90b3R5cGVGdW5jdGlvbkZvbyk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc0Zsb2F0NjRBcnJheVByb3RvdHlwZUZ1bmN0aW9uU2V0KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXkuaDogIEJpbmRp
bmcgdGVzdHMgcmVzdWx0cy4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFR5
cGVkQXJyYXkuaWRsOiBCaW5kaW5nIHRlc3RzLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHA6ICBCaW5kaW5nIHRlc3RzIHJlc3VsdHMuCisgICAg
ICAgIChXZWJDb3JlOjpGbG9hdDY0QXJyYXlWOEludGVybmFsOjpzZXRDYWxsYmFjayk6CisgICAg
ICAgIChGbG9hdDY0QXJyYXlWOEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RmxvYXQ2
NEFycmF5Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZpZ3Vy
ZVY4RmxvYXQ2NEFycmF5VGVtcGxhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OEZsb2F0MzJBcnJheUN1c3RvbS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RmxvYXQ2NEFycmF5Q3VzdG9tLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5k
aW5ncy92OC9jdXN0b20vVjhJbnQxNkFycmF5Q3VzdG9tLmNwcDogUmVtb3ZlZC4KKyAgICAgICAg
KiBiaW5kaW5ncy92OC9jdXN0b20vVjhJbnQzMkFycmF5Q3VzdG9tLmNwcDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhJbnQ4QXJyYXlDdXN0b20uY3BwOiBSZW1vdmVk
LgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFVpbnQxNkFycmF5Q3VzdG9tLmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhVaW50MzJBcnJheUN1c3Rv
bS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4VWludDhBcnJh
eUN1c3RvbS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4VWlu
dDhDbGFtcGVkQXJyYXlDdXN0b20uY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGh0bWwvY2FudmFz
L0Zsb2F0MzJBcnJheS5pZGw6IFVzaW5nIFtUeXBlZEFycmF5XSBpbnN0ZWFkIG9kIGN1c3RvbSBp
bXBsZW1lbnRhaW9uLgorICAgICAgICAqIGh0bWwvY2FudmFzL0Zsb2F0NjRBcnJheS5pZGw6IERp
dHRvLgorICAgICAgICAqIGh0bWwvY2FudmFzL0ludDE2QXJyYXkuaWRsOiBEaXR0by4KKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9JbnQzMkFycmF5LmlkbDogRGl0dG8uCisgICAgICAgICogaHRtbC9j
YW52YXMvSW50OEFycmF5LmlkbDogRGl0dG8uCisgICAgICAgICogaHRtbC9jYW52YXMvVWludDE2
QXJyYXkuaWRsOiBEaXR0by4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9VaW50MzJBcnJheS5pZGw6
IERpdHRvLgorICAgICAgICAqIGh0bWwvY2FudmFzL1VpbnQ4QXJyYXkuaWRsOiBEaXR0by4KKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9VaW50OENsYW1wZWRBcnJheS5pZGw6IERpdHRvLgorCiAyMDEy
LTA4LTA4ICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBP
cHRpbWl6ZSBFbGVtZW50OjpoYXNBdHRyaWJ1dGUoKSBieSByZXBsYWNpbmcgU3RyaW5nIHdpdGgg
QXRvbWljU3RyaW5nCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9u
IDEyNDk5MykKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcg
Y29weSkKQEAgLTE0NjAsOCArMTQ2MCw2IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNFeGNlcHRpb25CYXNlLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNFeGNlcHRpb25CYXNlLmggXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRmlsZVJlYWRlckN1c3RvbS5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRmxvYXQzMkFycmF5Q3VzdG9tLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNGbG9hdDY0QXJyYXlDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSFRNTEFwcGxldEVsZW1lbnRDdXN0b20uY3BwIFwKQEAgLTE0OTQsOSArMTQ5Miw2IEBA
IHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmpl
Y3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNJbnQxNkFycmF5Q3VzdG9tLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNJbnQzMkFycmF5Q3VzdG9tLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNJbnQ4QXJyYXlDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0phdmFTY3JpcHRDYWxsRnJhbWVDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNMYXp5RXZlbnRMaXN0ZW5lci5oIFwKQEAgLTE1NDgsMTAgKzE1NDMsNiBAQCB3ZWJjb3Jl
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVHJhY2tDdXN0b20u
aCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmFja0V2ZW50Q3VzdG9tLmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmVlV2Fsa2VyQ3VzdG9tLmNwcCBcCi0J
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVaW50MTZBcnJheUN1c3RvbS5jcHAgXAotCVNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWludDMyQXJyYXlDdXN0b20uY3BwIFwKLQlTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQ4QXJyYXlDdXN0b20uY3BwIFwKLQlTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQ4Q2xhbXBlZEFycmF5Q3VzdG9tLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRBbmltYXRpb25DdXN0b20uY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYktpdEFuaW1hdGlvbkxpc3RDdXN0b20uY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYktpdENTU0tleWZyYW1lUnVsZUN1
c3RvbS5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxMjQ5OTMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsOCArMTI3LDYgQEAgU09V
UkNFUyArPSBcCiAgICAgIGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uY3BwIFwKICAg
ICAgYmluZGluZ3MvanMvSlNFeGNlcHRpb25CYXNlLmNwcCBcCiAgICAgIGJpbmRpbmdzL2pzL0pT
RmlsZVJlYWRlckN1c3RvbS5jcHAgXAotICAgICBiaW5kaW5ncy9qcy9KU0Zsb2F0MzJBcnJheUN1
c3RvbS5jcHAgXAotICAgICBiaW5kaW5ncy9qcy9KU0Zsb2F0NjRBcnJheUN1c3RvbS5jcHAgXAog
ICAgICBiaW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcCBcCiAgICAgIGJpbmRpbmdz
L2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNI
VE1MQXBwbGV0RWxlbWVudEN1c3RvbS5jcHAgXApAQCAtMTU0LDkgKzE1Miw2IEBAIFNPVVJDRVMg
Kz0gXAogICAgICBiaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAgXAog
ICAgICBiaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAgXAogICAgICBiaW5k
aW5ncy9qcy9KU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAgXAotICAgICBiaW5kaW5n
cy9qcy9KU0ludDE2QXJyYXlDdXN0b20uY3BwIFwKLSAgICAgYmluZGluZ3MvanMvSlNJbnQzMkFy
cmF5Q3VzdG9tLmNwcCBcCi0gICAgIGJpbmRpbmdzL2pzL0pTSW50OEFycmF5Q3VzdG9tLmNwcCBc
CiAgICAgIGJpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuY3BwIFwKICAgICAgYmluZGlu
Z3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAgXAogICAgICBiaW5kaW5ncy9qcy9KU01haW5UaHJl
YWRFeGVjU3RhdGUuY3BwIFwKQEAgLTE4OCwxMCArMTgzLDYgQEAgU09VUkNFUyArPSBcCiAgICAg
IGJpbmRpbmdzL2pzL0pTVG91Y2hDdXN0b20uY3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNUb3Vj
aExpc3RDdXN0b20uY3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNUcmVlV2Fsa2VyQ3VzdG9tLmNw
cCBcCi0gICAgIGJpbmRpbmdzL2pzL0pTVWludDE2QXJyYXlDdXN0b20uY3BwIFwKLSAgICAgYmlu
ZGluZ3MvanMvSlNVaW50MzJBcnJheUN1c3RvbS5jcHAgXAotICAgICBiaW5kaW5ncy9qcy9KU1Vp
bnQ4QXJyYXlDdXN0b20uY3BwIFwKLSAgICAgYmluZGluZ3MvanMvSlNVaW50OENsYW1wZWRBcnJh
eUN1c3RvbS5jcHAgXAogICAgICBiaW5kaW5ncy9qcy9KU1dlYktpdEFuaW1hdGlvbkN1c3RvbS5j
cHAgXAogICAgICBiaW5kaW5ncy9qcy9KU1dlYktpdEFuaW1hdGlvbkxpc3RDdXN0b20uY3BwIFwK
ICAgICAgYmluZGluZ3MvanMvSlNXZWJLaXRDU1NLZXlmcmFtZVJ1bGVDdXN0b20uY3BwIFwKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Vc2VKU0MuY21ha2UJKHJldmlzaW9uIDEyNDk5MykKKysrIFNvdXJjZS9XZWJDb3JlL1Vz
ZUpTQy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtNzcsOCArNzcsNiBAQCBMSVNUKEFQUEVORCBX
ZWJDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCiAgICAg
YmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0V4
Y2VwdGlvbkJhc2UuY3BwCi0gICAgYmluZGluZ3MvanMvSlNGbG9hdDMyQXJyYXlDdXN0b20uY3Bw
Ci0gICAgYmluZGluZ3MvanMvSlNGbG9hdDY0QXJyYXlDdXN0b20uY3BwCiAgICAgYmluZGluZ3Mv
anMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xs
ZWN0aW9uQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTSFRNTEFwcGxldEVsZW1lbnRDdXN0
b20uY3BwCkBAIC0xMDEsOSArOTksNiBAQCBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAg
ICBiaW5kaW5ncy9qcy9KU0hpc3RvcnlDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNJbWFn
ZUNvbnN0cnVjdG9yLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTSW1hZ2VEYXRhQ3VzdG9tLmNwcAot
ICAgIGJpbmRpbmdzL2pzL0pTSW50MTZBcnJheUN1c3RvbS5jcHAKLSAgICBiaW5kaW5ncy9qcy9K
U0ludDMyQXJyYXlDdXN0b20uY3BwCi0gICAgYmluZGluZ3MvanMvSlNJbnQ4QXJyYXlDdXN0b20u
Y3BwCiAgICAgYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCiAgICAg
YmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCiAgICAgYmluZGluZ3MvanMv
SlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwCkBAIC0xMzcsMTAgKzEzMiw2IEBAIExJ
U1QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIGJpbmRpbmdzL2pzL0pTVG91Y2hDdXN0b20u
Y3BwCiAgICAgYmluZGluZ3MvanMvSlNUb3VjaExpc3RDdXN0b20uY3BwCiAgICAgYmluZGluZ3Mv
anMvSlNUcmVlV2Fsa2VyQ3VzdG9tLmNwcAotICAgIGJpbmRpbmdzL2pzL0pTVWludDE2QXJyYXlD
dXN0b20uY3BwIAotICAgIGJpbmRpbmdzL2pzL0pTVWludDMyQXJyYXlDdXN0b20uY3BwCi0gICAg
YmluZGluZ3MvanMvSlNVaW50OEFycmF5Q3VzdG9tLmNwcAotICAgIGJpbmRpbmdzL2pzL0pTVWlu
dDhDbGFtcGVkQXJyYXlDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNXZWJLaXRBbmltYXRp
b25DdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNXZWJLaXRBbmltYXRpb25MaXN0Q3VzdG9t
LmNwcAogICAgIGJpbmRpbmdzL2pzL0pTV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlQ3VzdG9tLmNwcApJ
bmRleDogU291cmNlL1dlYkNvcmUvVXNlVjguY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvVXNlVjguY21ha2UJKHJldmlzaW9uIDEyNDk5MykKKysrIFNvdXJjZS9XZWJDb3JlL1Vz
ZVY4LmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsOCArMTAxLDYgQEAgTElTVChBUFBFTkQg
V2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRDb25zdHJ1Y3Rv
cnMuY3BwCiAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRDdXN0b20uY3BwCiAgICAgYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4RmlsZVJlYWRlckN1c3RvbS5jcHAKLSAgICBiaW5kaW5ncy92OC9j
dXN0b20vVjhGbG9hdDMyQXJyYXlDdXN0b20uY3BwCi0gICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4
RmxvYXQ2NEFycmF5Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEdlb2xvY2F0
aW9uQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxBbGxDb2xsZWN0aW9u
Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxDYW52YXNFbGVtZW50Q3Vz
dG9tLmNwcApAQCAtMTI3LDkgKzEyNSw2IEBAIExJU1QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwog
ICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKICAg
ICBiaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCiAgICAgYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcAotICAgIGJp
bmRpbmdzL3Y4L2N1c3RvbS9WOEludDE2QXJyYXlDdXN0b20uY3BwCi0gICAgYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SW50MzJBcnJheUN1c3RvbS5jcHAKLSAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhJ
bnQ4QXJyYXlDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0
b20uY3BwCiAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUNoYW5uZWxDb25zdHJ1Y3Rv
ci5jcHAKICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwCkBA
IC0xNTIsOSArMTQ3LDYgQEAgTElTVChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4U3RvcmFnZUN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy92OC9jdXN0b20v
VjhTdHlsZVNoZWV0Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFN0eWxlU2hl
ZXRMaXN0Q3VzdG9tLmNwcAotICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFVpbnQxNkFycmF5Q3Vz
dG9tLmNwcAotICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFVpbnQzMkFycmF5Q3VzdG9tLmNwcAot
ICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFVpbnQ4QXJyYXlDdXN0b20uY3BwCiAgICAgYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAogICAgIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOFdlYktpdEFuaW1hdGlvbkN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy92
OC9jdXN0b20vVjhXZWJLaXRQb2ludENvbnN0cnVjdG9yLmNwcApJbmRleDogU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQkocmV2aXNpb24gMTI0OTkzKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMDA0LDggKzIwMDQsNiBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pz
L0pTRXhjZXB0aW9uQmFzZS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRXhjZXB0
aW9uQmFzZS5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0ZpbGVSZWFkZXJDdXN0b20u
Y3BwJywKLSAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0Zsb2F0MzJBcnJheUN1c3RvbS5jcHAn
LAotICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRmxvYXQ2NEFycmF5Q3VzdG9tLmNwcCcsCiAg
ICAgICAgICAgICAnYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAnLAogICAgICAg
ICAgICAgJ2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwJywKICAgICAg
ICAgICAgICdiaW5kaW5ncy9qcy9KU0hUTUxBcHBsZXRFbGVtZW50Q3VzdG9tLmNwcCcsCkBAIC0y
MDQwLDkgKzIwMzgsNiBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3Jp
cHRIb3N0Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNJbmplY3RlZFNj
cmlwdE1hbmFnZXIuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0luc3BlY3RvckZy
b250ZW5kSG9zdEN1c3RvbS5jcHAnLAotICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTSW50MTZB
cnJheUN1c3RvbS5jcHAnLAotICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTSW50MzJBcnJheUN1
c3RvbS5jcHAnLAotICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTSW50OEFycmF5Q3VzdG9tLmNw
cCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNKYXZhU2NyaXB0QXVkaW9Ob2RlQ3VzdG9t
LmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lQ3Vz
dG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5j
cHAnLApAQCAtMjA5NCw5ICsyMDg5LDYgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1Ry
YWNrQ3VzdG9tLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTVHJhY2tFdmVudEN1c3Rv
bS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTVHJlZVdhbGtlckN1c3RvbS5jcHAn
LAotICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTVWludDE2QXJyYXlDdXN0b20uY3BwJywKLSAg
ICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1VpbnQzMkFycmF5Q3VzdG9tLmNwcCcsCi0gICAgICAg
ICAgICAnYmluZGluZ3MvanMvSlNVaW50OEFycmF5Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAn
YmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwJywKICAgICAgICAg
ICAgICdiaW5kaW5ncy9qcy9KU1dlYktpdEFuaW1hdGlvbkN1c3RvbS5jcHAnLAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL2pzL0pTV2ViS2l0QW5pbWF0aW9uTGlzdEN1c3RvbS5jcHAnLApAQCAtMjM0
MCw4ICsyMzMyLDYgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhFbnRyeVN5
bmNDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhFdmVudEN1
c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEZpbGVSZWFkZXJD
dXN0b20uY3BwJywKLSAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhGbG9hdDMyQXJy
YXlDdXN0b20uY3BwJywKLSAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhGbG9hdDY0
QXJyYXlDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhHZW9s
b2NhdGlvbkN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhU
TUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwJywKQEAgLTIzNjgsOSArMjM1OCw2IEBA
CiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3Vz
dG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5zcGVj
dG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcCcsCi0gICAgICAgICAgICAnYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SW50MTZBcnJheUN1c3RvbS5jcHAnLAotICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEludDMyQXJyYXlDdXN0b20uY3BwJywKLSAgICAgICAgICAgICdiaW5kaW5ncy92OC9j
dXN0b20vVjhJbnQ4QXJyYXlDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9j
dXN0b20vVjhJbnRlbnRDb25zdHJ1Y3Rvci5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEphdmFTY3JpcHRDYWxsRnJhbWVDdXN0b20uY3BwJywKICAgICAgICAgICAgICdi
aW5kaW5ncy92OC9jdXN0b20vVjhMb2NhdGlvbkN1c3RvbS5jcHAnLApAQCAtMjQwNCwxMCArMjM5
MSw2IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4U3R5bGVTaGVldEN1c3Rv
bS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFN0eWxlU2hlZXRMaXN0
Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4VHJhY2tFdmVu
dEN1c3RvbS5jcHAnLAotICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFVpbnQxNkFy
cmF5Q3VzdG9tLmNwcCcsCi0gICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4VWludDMy
QXJyYXlDdXN0b20uY3BwJywKLSAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhVaW50
OEFycmF5Q3VzdG9tLmNwcCcsCi0gICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4VWlu
dDhDbGFtcGVkQXJyYXlDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0
b20vVjhXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5k
aW5ncy92OC9jdXN0b20vVjhXZWJLaXRBbmltYXRpb25DdXN0b20uY3BwJywKICAgICAgICAgICAg
ICdiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRQb2ludENvbnN0cnVjdG9yLmNwcCcsCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAxMjQ5OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEzNzUsMTMgKzEzNzUsNiBAQAogCQk0
OUVFQ0YwRDEwNTA3MEM0MDAwOTlGQUIgLyogSlNVaW50MTZBcnJheS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlFRUNFRkYxMDUwNzBDNDAwMDk5RkFC
IC8qIEpTVWludDE2QXJyYXkuaCAqLzsgfTsKIAkJNDlFRUNGMUIxMDUwNzJGMzAwMDk5RkFCIC8q
IEpTQXJyYXlCdWZmZXJWaWV3LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ5RUVDRjE5MTA1MDcyRjMwMDA5OUZBQiAvKiBKU0FycmF5QnVmZmVyVmll
dy5jcHAgKi87IH07CiAJCTQ5RUVDRjFDMTA1MDcyRjMwMDA5OUZBQiAvKiBKU0FycmF5QnVmZmVy
Vmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlF
RUNGMUExMDUwNzJGMzAwMDk5RkFCIC8qIEpTQXJyYXlCdWZmZXJWaWV3LmggKi87IH07Ci0JCTQ5
RUVDRjc4MTA1MDhEOUMwMDA5OUZBQiAvKiBKU0ludDhBcnJheUN1c3RvbS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUVFQ0Y3MTEwNTA4RDlDMDAw
OTlGQUIgLyogSlNJbnQ4QXJyYXlDdXN0b20uY3BwICovOyB9OwotCQk0OUVFQ0Y3OTEwNTA4RDlD
MDAwOTlGQUIgLyogSlNGbG9hdDMyQXJyYXlDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlFRUNGNzIxMDUwOEQ5QzAwMDk5RkFCIC8qIEpT
RmxvYXQzMkFycmF5Q3VzdG9tLmNwcCAqLzsgfTsKLQkJNDlFRUNGN0ExMDUwOEQ5QzAwMDk5RkFC
IC8qIEpTSW50MzJBcnJheUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0OUVFQ0Y3MzEwNTA4RDlDMDAwOTlGQUIgLyogSlNJbnQzMkFycmF5
Q3VzdG9tLmNwcCAqLzsgfTsKLQkJNDlFRUNGN0IxMDUwOEQ5QzAwMDk5RkFCIC8qIEpTSW50MTZB
cnJheUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0OUVFQ0Y3NDEwNTA4RDlDMDAwOTlGQUIgLyogSlNJbnQxNkFycmF5Q3VzdG9tLmNwcCAq
LzsgfTsKLQkJNDlFRUNGN0MxMDUwOEQ5QzAwMDk5RkFCIC8qIEpTVWludDhBcnJheUN1c3RvbS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUVFQ0Y3
NTEwNTA4RDlDMDAwOTlGQUIgLyogSlNVaW50OEFycmF5Q3VzdG9tLmNwcCAqLzsgfTsKLQkJNDlF
RUNGN0QxMDUwOEQ5QzAwMDk5RkFCIC8qIEpTVWludDMyQXJyYXlDdXN0b20uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlFRUNGNzYxMDUwOEQ5QzAw
MDk5RkFCIC8qIEpTVWludDMyQXJyYXlDdXN0b20uY3BwICovOyB9OwotCQk0OUVFQ0Y3RTEwNTA4
RDlDMDAwOTlGQUIgLyogSlNVaW50MTZBcnJheUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUVFQ0Y3NzEwNTA4RDlDMDAwOTlGQUIgLyog
SlNVaW50MTZBcnJheUN1c3RvbS5jcHAgKi87IH07CiAJCTQ5RUVEMTQyMTA1MTk2OTQwMDA5OUZB
QiAvKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlFRUQxM0MxMDUxOTY5NDAwMDk5RkFCIC8qIEpTQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dC5jcHAgKi87IH07CiAJCTQ5RUVEMTQzMTA1MTk2OTQwMDA5OUZB
QiAvKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RUVEMTNEMTA1MTk2OTQwMDA5OUZBQiAvKiBKU0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQuaCAqLzsgfTsKIAkJNDlFRUQxNDQxMDUxOTY5NDAwMDk5RkFCIC8q
IEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RUVEMTNFMTA1MTk2OTQwMDA5OUZBQiAvKiBKU0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgKi87IH07CkBAIC0xODMwLDcgKzE4MjMsNiBAQAogCQk2
RTY3RDJBNjEyODBFOEE0MDA4NzU4RjcgLyogRXh0ZW5zaW9uczNET3BlbkdMLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNjdEMkE0MTI4MEU4QTQw
MDg3NThGNyAvKiBFeHRlbnNpb25zM0RPcGVuR0wuY3BwICovOyB9OwogCQk2RTY3RDJBNzEyODBF
OEE0MDA4NzU4RjcgLyogRXh0ZW5zaW9uczNET3BlbkdMLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTY3RDJBNTEyODBFOEE0MDA4NzU4RjcgLyogRXh0
ZW5zaW9uczNET3BlbkdMLmggKi87IH07CiAJCTZFNjdEMkE5MTI4MEU4QkQwMDg3NThGNyAvKiBF
eHRlbnNpb25zM0QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDZFNjdEMkE4MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zM0QuaCAqLzsgfTsKLQkJ
NkVCQzVEODUxMzhCNENFMDAwQTBDRjhBIC8qIEpTRmxvYXQ2NEFycmF5Q3VzdG9tLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFQkM1RDg0MTM4QjRD
RTAwMEEwQ0Y4QSAvKiBKU0Zsb2F0NjRBcnJheUN1c3RvbS5jcHAgKi87IH07CiAJCTZFQkM1RUFG
MTM4QjUwRjIwMEEwQ0Y4QSAvKiBKU0Zsb2F0NjRBcnJheS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RUJDNUVBRDEzOEI1MEYyMDBBMENGOEEgLyog
SlNGbG9hdDY0QXJyYXkuY3BwICovOyB9OwogCQk2RUJDNUVCMDEzOEI1MEYyMDBBMENGOEEgLyog
SlNGbG9hdDY0QXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDZFQkM1RUFFMTM4QjUwRjIwMEEwQ0Y4QSAvKiBKU0Zsb2F0NjRBcnJheS5oICovOyB9
OwogCQk2RUJGMEU0ODEyQTg5MjYxMDBEQjE3MDkgLyogT0VTVGV4dHVyZUZsb2F0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFQkYwRTQ1MTJBODky
NjEwMERCMTcwOSAvKiBPRVNUZXh0dXJlRmxvYXQuY3BwICovOyB9OwpAQCAtMzEwNiw3ICszMDk4
LDYgQEAKIAkJOTAwMTc4ODExMkUwMzcwNzAwNjQ4NDYyIC8qIEpTT0VTU3RhbmRhcmREZXJpdmF0
aXZlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTAw
MTc4N0YxMkUwMzcwNzAwNjQ4NDYyIC8qIEpTT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5oICovOyB9
OwogCQk5MTA4OUQzMjE0QzMzNjAwMDA1QUZDNDkgLyogSlNVaW50OENsYW1wZWRBcnJheS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTEwODlEMzAxNEMz
MzVDRDAwNUFGQzQ5IC8qIEpTVWludDhDbGFtcGVkQXJyYXkuaCAqLzsgfTsKIAkJOTEwODlEMzMx
NEMzMzYwNTAwNUFGQzQ5IC8qIEpTVWludDhDbGFtcGVkQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTEwODlEMkYxNEMzMzVDRDAwNUFGQzQ5
IC8qIEpTVWludDhDbGFtcGVkQXJyYXkuY3BwICovOyB9OwotCQk5MUEzOTA1QjE0QzBGNjExMDBG
Njc5MDEgLyogSlNVaW50OENsYW1wZWRBcnJheUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MUEzOTA1QTE0QzBGNjExMDBGNjc5MDEgLyog
SlNVaW50OENsYW1wZWRBcnJheUN1c3RvbS5jcHAgKi87IH07CiAJCTkzMDJCMEJEMEQ3OUY4Mjkw
MEM3RUU4MyAvKiBQYWdlR3JvdXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTMwMkIwQkMwRDc5RjgyOTAwQzdFRTgzIC8qIFBhZ2VHcm91cC5jcHAg
Ki87IH07CiAJCTkzMDJCMEJGMEQ3OUY4MkMwMEM3RUU4MyAvKiBQYWdlR3JvdXAuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMDJCMEJFMEQ3OUY4MkMw
MEM3RUU4MyAvKiBQYWdlR3JvdXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk5MzA1QjI0RDA5OEYxQjZCMDBDMjg4NTUgLyogVGltZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMDVCMjRDMDk4RjFC
NkIwMEMyODg1NSAvKiBUaW1lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC04NTEwLDEzICs4NTAxLDYgQEAKIAkJNDlFRUNFRkYxMDUwNzBDNDAw
MDk5RkFCIC8qIEpTVWludDE2QXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNVaW50MTZBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OUVFQ0Yx
OTEwNTA3MkYzMDAwOTlGQUIgLyogSlNBcnJheUJ1ZmZlclZpZXcuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBcnJheUJ1ZmZlclZpZXcuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0OUVFQ0YxQTEwNTA3MkYzMDAwOTlGQUIgLyogSlNBcnJheUJ1
ZmZlclZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBcnJheUJ1ZmZl
clZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDlFRUNGNzExMDUwOEQ5QzAw
MDk5RkFCIC8qIEpTSW50OEFycmF5Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTSW50OEFycmF5Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJNDlFRUNGNzIxMDUwOEQ5QzAwMDk5RkFCIC8qIEpTRmxvYXQzMkFycmF5Q3VzdG9t
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRmxvYXQzMkFycmF5
Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDlFRUNGNzMxMDUwOEQ5
QzAwMDk5RkFCIC8qIEpTSW50MzJBcnJheUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU0ludDMyQXJyYXlDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk0OUVFQ0Y3NDEwNTA4RDlDMDAwOTlGQUIgLyogSlNJbnQxNkFycmF5Q3Vz
dG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSW50MTZBcnJh
eUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ5RUVDRjc1MTA1MDhE
OUMwMDA5OUZBQiAvKiBKU1VpbnQ4QXJyYXlDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNVaW50OEFycmF5Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJNDlFRUNGNzYxMDUwOEQ5QzAwMDk5RkFCIC8qIEpTVWludDMyQXJyYXlD
dXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNVaW50MzJB
cnJheUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ5RUVDRjc3MTA1
MDhEOUMwMDA5OUZBQiAvKiBKU1VpbnQxNkFycmF5Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVWludDE2QXJyYXlDdXN0b20uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0OUVFRDEzQzEwNTE5Njk0MDAwOTlGQUIgLyogSlNDYW52YXNS
ZW5kZXJpbmdDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ5RUVEMTNEMTA1MTk2OTQwMDA5OUZBQiAvKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDYW52YXNSZW5kZXJpbmdDb250
ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5RUVEMTNFMTA1MTk2OTQwMDA5
OUZBQiAvKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04OTkwLDcgKzg5NzQsNiBAQAogCQk2RTY3RDJBNTEy
ODBFOEE0MDA4NzU4RjcgLyogRXh0ZW5zaW9uczNET3BlbkdMLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEV4dGVuc2lvbnMzRE9wZW5HTC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk2RTY3RDJBODEyODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9uczNELmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4dGVuc2lvbnMzRC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk2RUJDNUQ4MDEzOEI0QzRFMDBBMENGOEEgLyogRmxvYXQ2NEFy
cmF5LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBGbG9hdDY0QXJyYXkuaWRsOyBwYXRoID0g
Y2FudmFzL0Zsb2F0NjRBcnJheS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTZF
QkM1RDg0MTM4QjRDRTAwMEEwQ0Y4QSAvKiBKU0Zsb2F0NjRBcnJheUN1c3RvbS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Zsb2F0NjRBcnJheUN1c3RvbS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFQkM1RUFEMTM4QjUwRjIwMEEwQ0Y4QSAv
KiBKU0Zsb2F0NjRBcnJheS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0Zsb2F0NjRBcnJheS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFQkM1
RUFFMTM4QjUwRjIwMEEwQ0Y4QSAvKiBKU0Zsb2F0NjRBcnJheS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0Zsb2F0NjRBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk2RUJGMEU0NTEyQTg5MjYxMDBEQjE3MDkgLyogT0VTVGV4dHVyZUZsb2F0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE9FU1RleHR1cmVGbG9hdC5jcHA7
IHBhdGggPSBjYW52YXMvT0VTVGV4dHVyZUZsb2F0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTEwMjQ4LDcgKzEwMjMxLDYgQEAKIAkJOTEwODlEMkYxNEMzMzVDRDAwNUFGQzQ5
IC8qIEpTVWludDhDbGFtcGVkQXJyYXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNVaW50OENsYW1wZWRBcnJheS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTkxMDg5RDMwMTRDMzM1Q0QwMDVBRkM0OSAvKiBKU1VpbnQ4Q2xhbXBlZEFycmF5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVWludDhDbGFtcGVkQXJyYXkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTFBMzkwNTgxNEMwRjRCOTAwRjY3OTAxIC8q
IFVpbnQ4Q2xhbXBlZEFycmF5LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBVaW50OENsYW1wZWRBcnJheS5pZGw7IHBhdGgg
PSBjYW52YXMvVWludDhDbGFtcGVkQXJyYXkuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk5MUEzOTA1QTE0QzBGNjExMDBGNjc5MDEgLyogSlNVaW50OENsYW1wZWRBcnJheUN1c3Rv
bS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1VpbnQ4Q2xhbXBl
ZEFycmF5Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMwMDYyRDcx
NTlCNDVCNjAwQUNENDhBIC8qIE5FT05IZWxwZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE5FT05IZWxwZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkz
MDJCMEJDMEQ3OUY4MjkwMEM3RUU4MyAvKiBQYWdlR3JvdXAuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUGFnZUdyb3VwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTMwMkIwQkUwRDc5RjgyQzAwQzdFRTgzIC8qIFBhZ2VHcm91cC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWdlR3JvdXAuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTIwMjY0LDggKzIwMjQ2LDYgQEAKIAkJCQk4OTNDNDg1MjEyNDk5QjA2MDAy
QjNEODYgLyogSlNFbnRyeVN5bmNDdXN0b20uY3BwICovLAogCQkJCUJDRUZBRjREMEMzMTdFNjkw
MEZBODFGNiAvKiBKU0V2ZW50Q3VzdG9tLmNwcCAqLywKIAkJCQkyRTc1ODJFRDEyNzY0RjI2MDA2
MjYyOEIgLyogSlNGaWxlUmVhZGVyQ3VzdG9tLmNwcCAqLywKLQkJCQk0OUVFQ0Y3MjEwNTA4RDlD
MDAwOTlGQUIgLyogSlNGbG9hdDMyQXJyYXlDdXN0b20uY3BwICovLAotCQkJCTZFQkM1RDg0MTM4
QjRDRTAwMEEwQ0Y4QSAvKiBKU0Zsb2F0NjRBcnJheUN1c3RvbS5jcHAgKi8sCiAJCQkJRkU4MEQ3
QTYwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb25DdXN0b20uY3BwICovLAogCQkJCUJD
RTdCMTkyMEQ0RTg2OTYwMDc1QTUzOSAvKiBKU0hpc3RvcnlDdXN0b20uY3BwICovLAogCQkJCUJD
OTdFNDJCMTA5MTVCMDYwMDEwRDM2MSAvKiBKU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcCAq
LywKQEAgLTIwMjk4LDkgKzIwMjc4LDYgQEAKIAkJCQk3QTBFNzZENDEwQkYwNTA3MDBBMDI3NkUg
LyogSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwICovLAogCQkJCUYzMTYzOTZEMTMyOTQ4
NzYwMEE2NDlDQiAvKiBKU0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAgKi8sCiAJCQkJN0E3NEVD
QkMxMDE4MzlEQTAwQkY5MzlFIC8qIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcCAq
LywKLQkJCQk0OUVFQ0Y3NDEwNTA4RDlDMDAwOTlGQUIgLyogSlNJbnQxNkFycmF5Q3VzdG9tLmNw
cCAqLywKLQkJCQk0OUVFQ0Y3MzEwNTA4RDlDMDAwOTlGQUIgLyogSlNJbnQzMkFycmF5Q3VzdG9t
LmNwcCAqLywKLQkJCQk0OUVFQ0Y3MTEwNTA4RDlDMDAwOTlGQUIgLyogSlNJbnQ4QXJyYXlDdXN0
b20uY3BwICovLAogCQkJCUZERUFBQUZEMTJCMDJGNDkwMERDRjMzQiAvKiBKU0phdmFTY3JpcHRB
dWRpb05vZGVDdXN0b20uY3BwICovLAogCQkJCTFDNUZBRUU2MERDRkRBNjgwMEQ1OEY3OCAvKiBK
U0phdmFTY3JpcHRDYWxsRnJhbWVDdXN0b20uY3BwICovLAogCQkJCUJDRTFDNDNGMEQ5ODMwRjQw
MDNCMDJGMiAvKiBKU0xvY2F0aW9uQ3VzdG9tLmNwcCAqLywKQEAgLTIwMzQyLDEwICsyMDMxOSw2
IEBACiAJCQkJMDc4NDYzODQxNDVCMUI4RTAwQTU4REYxIC8qIEpTVHJhY2tDdXN0b20uaCAqLywK
IAkJCQkwN0I1QTMwQTE0Njg3Qjg0MDBBODFFQ0UgLyogSlNUcmFja0V2ZW50Q3VzdG9tLmNwcCAq
LywKIAkJCQk1MTZCQjc5MjBDRTkxRTY4MDA1MTJGNzkgLyogSlNUcmVlV2Fsa2VyQ3VzdG9tLmNw
cCAqLywKLQkJCQk0OUVFQ0Y3NzEwNTA4RDlDMDAwOTlGQUIgLyogSlNVaW50MTZBcnJheUN1c3Rv
bS5jcHAgKi8sCi0JCQkJNDlFRUNGNzYxMDUwOEQ5QzAwMDk5RkFCIC8qIEpTVWludDMyQXJyYXlD
dXN0b20uY3BwICovLAotCQkJCTQ5RUVDRjc1MTA1MDhEOUMwMDA5OUZBQiAvKiBKU1VpbnQ4QXJy
YXlDdXN0b20uY3BwICovLAotCQkJCTkxQTM5MDVBMTRDMEY2MTEwMEY2NzkwMSAvKiBKU1VpbnQ4
Q2xhbXBlZEFycmF5Q3VzdG9tLmNwcCAqLywKIAkJCQlGRDhFOUJERTEzRDRDRDJCMDA1MERDNzIg
LyogSlNXYXZlU2hhcGVyTm9kZUN1c3RvbS5jcHAgKi8sCiAJCQkJNDlFRUQxNEMxMDUxOTcxQTAw
MDk5RkFCIC8qIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCAqLywKIAkJCQkzMTlF
Njg4NjEzMjdDOTExMDA0QUM5MUEgLyogSlNXZWJLaXRBbmltYXRpb25DdXN0b20uY3BwICovLApA
QCAtMjcwMzYsOSArMjcwMDksNyBAQAogCQkJCTQ2REE4NDREMTIyNEEwNzEwMDYwRDAwNiAvKiBK
U0ZpbGVXcml0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODkzQzQ3QkIxMjM4QTBBOTAwMkIz
RDg2IC8qIEpTRmlsZVdyaXRlckNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5RUVD
RjAyMTA1MDcwQzQwMDA5OUZBQiAvKiBKU0Zsb2F0MzJBcnJheS5jcHAgaW4gU291cmNlcyAqLywK
LQkJCQk0OUVFQ0Y3OTEwNTA4RDlDMDAwOTlGQUIgLyogSlNGbG9hdDMyQXJyYXlDdXN0b20uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNkVCQzVFQUYxMzhCNTBGMjAwQTBDRjhBIC8qIEpTRmxvYXQ2
NEFycmF5LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTZFQkM1RDg1MTM4QjRDRTAwMEEwQ0Y4QSAv
KiBKU0Zsb2F0NjRBcnJheUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRTgwREE2MzBF
OUM0NzAzMDAwRDZGNzUgLyogSlNHZW9sb2NhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlG
RTgwRDdBQjBFOUMxRUQyMDAwRDZGNzUgLyogSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlGRTgwREE2NTBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9wb3NpdGlvbi5j
cHAgaW4gU291cmNlcyAqLywKQEAgLTI3MTY1LDExICsyNzEzNiw4IEBACiAJCQkJN0EwRTc3MUUx
MEMwMERCMTAwQTAyNzZFIC8qIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTdBNzRFQ0JEMTAxODM5REEwMEJGOTM5RSAvKiBKU0luc3BlY3RvckZyb250ZW5k
SG9zdEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUVFQ0YwNjEwNTA3MEM0MDAwOTlG
QUIgLyogSlNJbnQxNkFycmF5LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTQ5RUVDRjdCMTA1MDhE
OUMwMDA5OUZBQiAvKiBKU0ludDE2QXJyYXlDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NDlFRUNGMDQxMDUwNzBDNDAwMDk5RkFCIC8qIEpTSW50MzJBcnJheS5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQk0OUVFQ0Y3QTEwNTA4RDlDMDAwOTlGQUIgLyogSlNJbnQzMkFycmF5Q3VzdG9tLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTQ5QzdCOTk1MTA0MkQyRDMwMDA5RDQ0NyAvKiBKU0ludDhB
cnJheS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk0OUVFQ0Y3ODEwNTA4RDlDMDAwOTlGQUIgLyog
SlNJbnQ4QXJyYXlDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkRBMTVFQ0QxMkIwM0Y2
MTAwM0E1ODNBIC8qIEpTSmF2YVNjcmlwdEF1ZGlvTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlGREVBQUFGRTEyQjAyRjQ5MDBEQ0YzM0IgLyogSlNKYXZhU2NyaXB0QXVkaW9Ob2RlQ3VzdG9t
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDNUZBRUQxMERDRkQ5MDEwMEQ1OEY3OCAvKiBKU0ph
dmFTY3JpcHRDYWxsRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNzQ1MywxMyArMjc0MjEs
OSBAQAogCQkJCTUxNkJCNzk0MENFOTFFNjgwMDUxMkY3OSAvKiBKU1RyZWVXYWxrZXJDdXN0b20u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTg2NjI5RDAwOURBMkI0ODAwOTYzM0E1IC8qIEpTVUlF
dmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUVFQ0YwQzEwNTA3MEM0MDAwOTlGQUIgLyog
SlNVaW50MTZBcnJheS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk0OUVFQ0Y3RTEwNTA4RDlDMDAw
OTlGQUIgLyogSlNVaW50MTZBcnJheUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUVF
Q0YwQTEwNTA3MEM0MDAwOTlGQUIgLyogSlNVaW50MzJBcnJheS5jcHAgaW4gU291cmNlcyAqLywK
LQkJCQk0OUVFQ0Y3RDEwNTA4RDlDMDAwOTlGQUIgLyogSlNVaW50MzJBcnJheUN1c3RvbS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk0OUVFQ0YwODEwNTA3MEM0MDAwOTlGQUIgLyogSlNVaW50OEFy
cmF5LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTQ5RUVDRjdDMTA1MDhEOUMwMDA5OUZBQiAvKiBK
U1VpbnQ4QXJyYXlDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTEwODlEMzMxNEMzMzYw
NTAwNUFGQzQ5IC8qIEpTVWludDhDbGFtcGVkQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
OTFBMzkwNUIxNEMwRjYxMTAwRjY3OTAxIC8qIEpTVWludDhDbGFtcGVkQXJyYXlDdXN0b20uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJN0IxRUEwQ0UxNTc2QzVCNTAwNjAxNzdEIC8qIEpTVW5kb01h
bmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTVDNzcwOTQxMDBEM0NBODAwNUJBMjY3IC8q
IEpTVmFsaWRpdHlTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDgyRDdGNzEzRDRDOEJE
MDA0RTQzNzIgLyogSlNXYXZlU2hhcGVyTm9kZS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAko
cmV2aXNpb24gMTI0OTkzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5n
c0FsbEluT25lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsOCArODIsNiBAQAogI2luY2x1ZGUg
IkpTRXZlbnRMaXN0ZW5lci5jcHAiCiAjaW5jbHVkZSAiSlNFdmVudFRhcmdldEN1c3RvbS5jcHAi
CiAjaW5jbHVkZSAiSlNFeGNlcHRpb25CYXNlLmNwcCIKLSNpbmNsdWRlICJKU0Zsb2F0MzJBcnJh
eUN1c3RvbS5jcHAiCi0jaW5jbHVkZSAiSlNGbG9hdDY0QXJyYXlDdXN0b20uY3BwIgogI2luY2x1
ZGUgIkpTR2VvbG9jYXRpb25DdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTSFRNTEFsbENvbGxlY3Rp
b25DdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTSFRNTEFwcGxldEVsZW1lbnRDdXN0b20uY3BwIgpA
QCAtMTA5LDkgKzEwNyw2IEBACiAjaW5jbHVkZSAiSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20u
Y3BwIgogI2luY2x1ZGUgIkpTSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCIKICNpbmNsdWRlICJK
U0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAiCi0jaW5jbHVkZSAiSlNJbnQxNkFycmF5
Q3VzdG9tLmNwcCIKLSNpbmNsdWRlICJKU0ludDMyQXJyYXlDdXN0b20uY3BwIgotI2luY2x1ZGUg
IkpTSW50OEFycmF5Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0phdmFTY3JpcHRDYWxsRnJhbWVD
dXN0b20uY3BwIgogI2luY2x1ZGUgIkpTTGF6eUV2ZW50TGlzdGVuZXIuY3BwIgogI2luY2x1ZGUg
IkpTTG9jYXRpb25DdXN0b20uY3BwIgpAQCAtMTU0LDEwICsxNDksNiBAQAogI2luY2x1ZGUgIkpT
VHJhY2tDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTVHJhY2tFdmVudEN1c3RvbS5jcHAiCiAjaW5j
bHVkZSAiSlNUcmVlV2Fsa2VyQ3VzdG9tLmNwcCIKLSNpbmNsdWRlICJKU1VpbnQxNkFycmF5Q3Vz
dG9tLmNwcCIKLSNpbmNsdWRlICJKU1VpbnQzMkFycmF5Q3VzdG9tLmNwcCIKLSNpbmNsdWRlICJK
U1VpbnQ4QXJyYXlDdXN0b20uY3BwIgotI2luY2x1ZGUgIkpTVWludDhDbGFtcGVkQXJyYXlDdXN0
b20uY3BwIgogI2luY2x1ZGUgIkpTV2ViS2l0QW5pbWF0aW9uQ3VzdG9tLmNwcCIKICNpbmNsdWRl
ICJKU1dlYktpdEFuaW1hdGlvbkxpc3RDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTV2ViS2l0Q1NT
S2V5ZnJhbWVSdWxlQ3VzdG9tLmNwcCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRmxvYXQzMkFycmF5Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0Zsb2F0MzJBcnJheUN1c3RvbS5jcHAJKHJldmlzaW9uIDEyNDk5MykKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmxvYXQzMkFycmF5Q3VzdG9tLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIkpTRmxvYXQzMkFycmF5LmgiCi0KLSNpbmNsdWRlICJKU0FycmF5QnVmZmVy
Vmlld0hlbHBlci5oIgotI2luY2x1ZGUgPHd0Zi9GbG9hdDMyQXJyYXkuaD4KLQotdXNpbmcgbmFt
ZXNwYWNlIEpTQzsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIEpTRmxvYXQzMkFycmF5
OjppbmRleFNldHRlcihKU0M6OkV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW5kZXgsIEpTQzo6
SlNWYWx1ZSB2YWx1ZSkKLXsKLSAgICBpbXBsKCktPnNldChpbmRleCwgc3RhdGljX2Nhc3Q8Zmxv
YXQ+KHZhbHVlLnRvTnVtYmVyKGV4ZWMpKSk7Ci19Ci0KLUpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBGbG9hdDMy
QXJyYXkqIG9iamVjdCkKLXsKLSAgICByZXR1cm4gdG9KU0FycmF5QnVmZmVyVmlldzxKU0Zsb2F0
MzJBcnJheT4oZXhlYywgZ2xvYmFsT2JqZWN0LCBvYmplY3QpOwotfQotCi1KU0M6OkpTVmFsdWUg
SlNGbG9hdDMyQXJyYXk6OnNldChKU0M6OkV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICByZXR1cm4g
c2V0V2ViR0xBcnJheUhlbHBlcjxGbG9hdDMyQXJyYXksIGZsb2F0PihleGVjLCBpbXBsKCkpOwot
fQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0Zsb2F0NjRBcnJheUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNGbG9hdDY0QXJyYXlDdXN0b20uY3BwCShyZXZpc2lvbiAxMjQ5OTMp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Zsb2F0NjRBcnJheUN1c3RvbS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJKU0Zsb2F0NjRBcnJheS5oIgotCi0jaW5jbHVkZSAiSlNBcnJheUJ1
ZmZlclZpZXdIZWxwZXIuaCIKLSNpbmNsdWRlIDx3dGYvRmxvYXQ2NEFycmF5Lmg+Ci0KLXVzaW5n
IG5hbWVzcGFjZSBKU0M7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBKU0Zsb2F0NjRB
cnJheTo6aW5kZXhTZXR0ZXIoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGluZGV4LCBK
U0M6OkpTVmFsdWUgdmFsdWUpCi17Ci0gICAgaW1wbCgpLT5zZXQoaW5kZXgsIHZhbHVlLnRvTnVt
YmVyKGV4ZWMpKTsKLX0KLQotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMs
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEZsb2F0NjRBcnJheSogb2JqZWN0KQot
ewotICAgIHJldHVybiB0b0pTQXJyYXlCdWZmZXJWaWV3PEpTRmxvYXQ2NEFycmF5PihleGVjLCBn
bG9iYWxPYmplY3QsIG9iamVjdCk7Ci19Ci0KLUpTQzo6SlNWYWx1ZSBKU0Zsb2F0NjRBcnJheTo6
c2V0KEpTQzo6RXhlY1N0YXRlKiBleGVjKQotewotICAgIHJldHVybiBzZXRXZWJHTEFycmF5SGVs
cGVyPEZsb2F0NjRBcnJheSwgZG91YmxlPihleGVjLCBpbXBsKCkpOwotfQotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ludDhBcnJh
eUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJ
bnQ4QXJyYXlDdXN0b20uY3BwCShyZXZpc2lvbiAxMjQ5OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0ludDhBcnJheUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNTIg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJKU0ludDhB
cnJheS5oIgotCi0jaW5jbHVkZSAiSlNBcnJheUJ1ZmZlclZpZXdIZWxwZXIuaCIKLSNpbmNsdWRl
IDxydW50aW1lL0Vycm9yLmg+Ci0jaW5jbHVkZSA8d3RmL0ludDhBcnJheS5oPgotCi11c2luZyBu
YW1lc3BhY2UgSlNDOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgSlNJbnQ4QXJyYXk6
OmluZGV4U2V0dGVyKEpTQzo6RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbmRleCwgSlNDOjpK
U1ZhbHVlIHZhbHVlKQotewotICAgIGltcGwoKS0+c2V0KGluZGV4LCBzdGF0aWNfY2FzdDxzaWdu
ZWQgY2hhcj4odmFsdWUudG9JbnQzMihleGVjKSkpOwotfQotCi1KU0M6OkpTVmFsdWUgdG9KUyhK
U0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSW50
OEFycmF5KiBvYmplY3QpCi17Ci0gICAgcmV0dXJuIHRvSlNBcnJheUJ1ZmZlclZpZXc8SlNJbnQ4
QXJyYXk+KGV4ZWMsIGdsb2JhbE9iamVjdCwgb2JqZWN0KTsKLX0KLQotSlNDOjpKU1ZhbHVlIEpT
SW50OEFycmF5OjpzZXQoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgcmV0dXJuIHNldFdl
YkdMQXJyYXlIZWxwZXI8SW50OEFycmF5LCBzaWduZWQgY2hhcj4oZXhlYywgaW1wbCgpKTsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNJbnQxNkFycmF5Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0ludDE2QXJyYXlDdXN0b20uY3BwCShyZXZpc2lvbiAxMjQ5OTMpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ludDE2QXJyYXlDdXN0b20uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiSlNJbnQxNkFycmF5LmgiCi0KLSNpbmNsdWRlICJKU0FycmF5QnVmZmVyVmlld0hl
bHBlci5oIgotI2luY2x1ZGUgPHd0Zi9JbnQxNkFycmF5Lmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBK
U0M7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBKU0ludDE2QXJyYXk6OmluZGV4U2V0
dGVyKEpTQzo6RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbmRleCwgSlNDOjpKU1ZhbHVlIHZh
bHVlKQotewotICAgIGltcGwoKS0+c2V0KGluZGV4LCBzdGF0aWNfY2FzdDxzaWduZWQgc2hvcnQ+
KHZhbHVlLnRvSW50MzIoZXhlYykpKTsKLX0KLQotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVj
U3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEludDE2QXJyYXkq
IG9iamVjdCkKLXsKLSAgICByZXR1cm4gdG9KU0FycmF5QnVmZmVyVmlldzxKU0ludDE2QXJyYXk+
KGV4ZWMsIGdsb2JhbE9iamVjdCwgb2JqZWN0KTsKLX0KLQotSlNDOjpKU1ZhbHVlIEpTSW50MTZB
cnJheTo6c2V0KEpTQzo6RXhlY1N0YXRlKiBleGVjKQotewotICAgIHJldHVybiBzZXRXZWJHTEFy
cmF5SGVscGVyPEludDE2QXJyYXksIHNob3J0PihleGVjLCBpbXBsKCkpOwotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ludDMy
QXJyYXlDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSW50MzJBcnJheUN1c3RvbS5jcHAJKHJldmlzaW9uIDEyNDk5MykKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSW50MzJBcnJheUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJK
U0ludDMyQXJyYXkuaCIKLQotI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJWaWV3SGVscGVyLmgiCi0j
aW5jbHVkZSA8d3RmL0ludDMyQXJyYXkuaD4KLQotdXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIEpTSW50MzJBcnJheTo6aW5kZXhTZXR0ZXIoSlNDOjpF
eGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGluZGV4LCBKU0M6OkpTVmFsdWUgdmFsdWUpCi17Ci0g
ICAgaW1wbCgpLT5zZXQoaW5kZXgsIHN0YXRpY19jYXN0PHNpZ25lZCBpbnQ+KHZhbHVlLnRvSW50
MzIoZXhlYykpKTsKLX0KLQotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMs
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEludDMyQXJyYXkqIG9iamVjdCkKLXsK
LSAgICByZXR1cm4gdG9KU0FycmF5QnVmZmVyVmlldzxKU0ludDMyQXJyYXk+KGV4ZWMsIGdsb2Jh
bE9iamVjdCwgb2JqZWN0KTsKLX0KLQotSlNDOjpKU1ZhbHVlIEpTSW50MzJBcnJheTo6c2V0KEpT
Qzo6RXhlY1N0YXRlKiBleGVjKQotewotICAgIHJldHVybiBzZXRXZWJHTEFycmF5SGVscGVyPElu
dDMyQXJyYXksIGludD4oZXhlYywgaW1wbCgpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVaW50OEFycmF5Q3VzdG9tLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQ4QXJyYXlD
dXN0b20uY3BwCShyZXZpc2lvbiAxMjQ5OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1VpbnQ4QXJyYXlDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUxICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09N
UFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSlNVaW50OEFycmF5Lmgi
Ci0KLSNpbmNsdWRlICJKU0FycmF5QnVmZmVyVmlld0hlbHBlci5oIgotI2luY2x1ZGUgPHd0Zi9V
aW50OEFycmF5Lmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotdm9pZCBKU1VpbnQ4QXJyYXk6OmluZGV4U2V0dGVyKEpTQzo6RXhlY1N0YXRlKiBleGVj
LCB1bnNpZ25lZCBpbmRleCwgSlNDOjpKU1ZhbHVlIHZhbHVlKQotewotICAgIGltcGwoKS0+c2V0
KGluZGV4LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPih2YWx1ZS50b0ludDMyKGV4ZWMpKSk7
Ci19Ci0KLUpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBVaW50OEFycmF5KiBvYmplY3QpCi17Ci0gICAgcmV0dXJu
IHRvSlNBcnJheUJ1ZmZlclZpZXc8SlNVaW50OEFycmF5PihleGVjLCBnbG9iYWxPYmplY3QsIG9i
amVjdCk7Ci19Ci0KLUpTQzo6SlNWYWx1ZSBKU1VpbnQ4QXJyYXk6OnNldChKU0M6OkV4ZWNTdGF0
ZSogZXhlYykKLXsKLSAgICByZXR1cm4gc2V0V2ViR0xBcnJheUhlbHBlcjxVaW50OEFycmF5LCB1
bnNpZ25lZCBjaGFyPihleGVjLCBpbXBsKCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQ4Q2xhbXBlZEFycmF5Q3Vz
dG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQ4
Q2xhbXBlZEFycmF5Q3VzdG9tLmNwcAkocmV2aXNpb24gMTI0OTkzKQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNVaW50OENsYW1wZWRBcnJheUN1c3RvbS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIkpTVWludDhDbGFtcGVkQXJyYXkuaCIKLQotI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJWaWV3
SGVscGVyLmgiCi0jaW5jbHVkZSA8d3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+Ci0KLXVzaW5nIG5h
bWVzcGFjZSBKU0M7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBKU1VpbnQ4Q2xhbXBl
ZEFycmF5OjppbmRleFNldHRlcihKU0M6OkV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW5kZXgs
IEpTQzo6SlNWYWx1ZSB2YWx1ZSkKLXsKLSAgICBpbXBsKCktPnNldChpbmRleCwgdmFsdWUudG9O
dW1iZXIoZXhlYykpOwotfQotCi1KU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhl
YywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVWludDhDbGFtcGVkQXJyYXkqIG9i
amVjdCkKLXsKLSAgICByZXR1cm4gdG9KU0FycmF5QnVmZmVyVmlldzxKU1VpbnQ4Q2xhbXBlZEFy
cmF5PihleGVjLCBnbG9iYWxPYmplY3QsIG9iamVjdCk7Ci19Ci0KLUpTQzo6SlNWYWx1ZSBKU1Vp
bnQ4Q2xhbXBlZEFycmF5OjpzZXQoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgcmV0dXJu
IHNldFdlYkdMQXJyYXlIZWxwZXI8VWludDhDbGFtcGVkQXJyYXksIHVuc2lnbmVkIGNoYXI+KGV4
ZWMsIGltcGwoKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWludDE2QXJyYXlDdXN0b20uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWludDE2QXJyYXlDdXN0b20uY3BwCShyZXZp
c2lvbiAxMjQ5OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQxNkFycmF5
Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1MSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkpTVWludDE2QXJyYXkuaCIKLQotI2luY2x1ZGUg
IkpTQXJyYXlCdWZmZXJWaWV3SGVscGVyLmgiCi0jaW5jbHVkZSA8d3RmL1VpbnQxNkFycmF5Lmg+
Ci0KLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBK
U1VpbnQxNkFycmF5OjppbmRleFNldHRlcihKU0M6OkV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQg
aW5kZXgsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKLXsKLSAgICBpbXBsKCktPnNldChpbmRleCwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgc2hvcnQ+KHZhbHVlLnRvSW50MzIoZXhlYykpKTsKLX0KLQotSlND
OjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFVpbnQxNkFycmF5KiBvYmplY3QpCi17Ci0gICAgcmV0dXJuIHRvSlNBcnJh
eUJ1ZmZlclZpZXc8SlNVaW50MTZBcnJheT4oZXhlYywgZ2xvYmFsT2JqZWN0LCBvYmplY3QpOwot
fQotCi1KU0M6OkpTVmFsdWUgSlNVaW50MTZBcnJheTo6c2V0KEpTQzo6RXhlY1N0YXRlKiBleGVj
KQotewotICAgIHJldHVybiBzZXRXZWJHTEFycmF5SGVscGVyPFVpbnQxNkFycmF5LCB1bnNpZ25l
ZCBzaG9ydD4oZXhlYywgaW1wbCgpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVaW50MzJBcnJheUN1c3RvbS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVaW50MzJBcnJheUN1c3Rv
bS5jcHAJKHJldmlzaW9uIDEyNDk5MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
VWludDMyQXJyYXlDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUxICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVU
RVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRF
UiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSlNVaW50MzJBcnJheS5oIgot
Ci0jaW5jbHVkZSAiSlNBcnJheUJ1ZmZlclZpZXdIZWxwZXIuaCIKLSNpbmNsdWRlIDx3dGYvVWlu
dDMyQXJyYXkuaD4KLQotdXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi12b2lkIEpTVWludDMyQXJyYXk6OmluZGV4U2V0dGVyKEpTQzo6RXhlY1N0YXRlKiBleGVj
LCB1bnNpZ25lZCBpbmRleCwgSlNDOjpKU1ZhbHVlIHZhbHVlKQotewotICAgIGltcGwoKS0+c2V0
KGluZGV4LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHZhbHVlLnRvVUludDMyKGV4ZWMpKSk7
Ci19Ci0KLUpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBVaW50MzJBcnJheSogb2JqZWN0KQotewotICAgIHJldHVy
biB0b0pTQXJyYXlCdWZmZXJWaWV3PEpTVWludDMyQXJyYXk+KGV4ZWMsIGdsb2JhbE9iamVjdCwg
b2JqZWN0KTsKLX0KLQotSlNDOjpKU1ZhbHVlIEpTVWludDMyQXJyYXk6OnNldChKU0M6OkV4ZWNT
dGF0ZSogZXhlYykKLXsKLSAgICByZXR1cm4gc2V0V2ViR0xBcnJheUhlbHBlcjxVaW50MzJBcnJh
eSwgdW5zaWduZWQgaW50PihleGVjLCBpbXBsKCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JD
UFAucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yQ1BQLnBtCShyZXZpc2lvbiAxMjQ5OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JDUFAucG0JKHdvcmtpbmcgY29weSkKQEAgLTE5Miw2
ICsxOTIsNyBAQCBzdWIgU2tpcEZ1bmN0aW9uCiAgICAgbXkgJGZ1bmN0aW9uID0gc2hpZnQ7CiAK
ICAgICByZXR1cm4gMSBpZiAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkN1c3RvbSJ9OworICAgIHJldHVybiAxIGlmICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiVHlwZWRBcnJheSJ9OwogCiAgICAgIyBGSVhNRTogV2UgZG9uJ3Qg
Z2VuZXJhdGUgYmluZGluZ3MgZm9yIFNWRyByZWxhdGVkIGludGVyZmFjZXMgeWV0CiAgICAgcmV0
dXJuIDEgaWYgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUgPX4gL2dldFNWR0RvY3VtZW50LzsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmpl
Y3QucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yR09iamVjdC5wbQkocmV2aXNpb24gMTI0OTkzKQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbQkod29ya2luZyBjb3B5KQpA
QCAtMjQxLDYgKzI0MSwxMCBAQCBzdWIgU2tpcEZ1bmN0aW9uIHsKICAgICAgICAgcmV0dXJuIDE7
CiAgICAgfQogCisgICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiVHlwZWRBcnJheSJ9KSB7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKwogICAgICMg
U2tpcCBmdW5jdGlvbnMgdGhhdCBoYXZlIFsiQ2FsbGJhY2siXSBwYXJhbWV0ZXJzLCBiZWNhdXNl
IHRoaXMKICAgICAjIGNvZGUgZ2VuZXJhdG9yIGRvZXNuJ3Qga25vdyBob3cgdG8gYXV0by1nZW5l
cmF0ZSBjYWxsYmFja3MuCiAgICAgIyBTa2lwIGZ1bmN0aW9ucyB0aGF0IGhhdmUgIk1lZGlhUXVl
cnlMaXN0TGlzdGVuZXIiIG9yIHNlcXVlbmNlPFQ+IHBhcmFtZXRlcnMsIGJlY2F1c2UgdGhpcwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0JKHJldmlzaW9uIDEyNDk5MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC0yMjEzLDcgKzIyMTMs
OSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIGlmICgkaXND
dXN0b20pIHsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT4iIC4gJGZ1bmN0aW9uSW1wbGVtZW50YXRp
b25OYW1lIC4gIihleGVjKSk7XG4iKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkaW1wbFR5cGUqIGltcGwgPSBz
dGF0aWNfY2FzdDwkaW1wbFR5cGUqPihjYXN0ZWRUaGlzLT5pbXBsKCkpO1xuIik7CisgICAgICAg
ICAgICAgICAgICAgIGlmICghKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lIGVxICJzZXQiIGFu
ZCAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlR5cGVkQXJyYXki
fSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRp
bXBsVHlwZSogaW1wbCA9IHN0YXRpY19jYXN0PCRpbXBsVHlwZSo+KGNhc3RlZFRoaXMtPmltcGwo
KSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBpZiAo
JHN2Z1Byb3BlcnR5VHlwZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgaWYgKGltcGwtPmlzUmVhZE9ubHkoKSkge1xuIik7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4
ZWMsIE5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUik7XG4iKTsKQEAgLTIyNDMsNyArMjI0NSwx
MiBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogCiAgICAgICAgICAgICAgICAgICAgICAg
ICBteSAkbnVtUGFyYW1ldGVycyA9IEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIG15ICgkZnVuY3Rpb25TdHJpbmcsICRkdW1teSkgPSBHZW5lcmF0ZVBh
cmFtZXRlcnNDaGVjayhcQGltcGxDb250ZW50LCAkZnVuY3Rpb24sICRkYXRhTm9kZSwgJG51bVBh
cmFtZXRlcnMsICRpbXBsQ2xhc3NOYW1lLCAkZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWUsICRz
dmdQcm9wZXJ0eVR5cGUsICRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlwZSwgJHN2Z0xpc3RQ
cm9wZXJ0eVR5cGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVJbXBsZW1lbnRh
dGlvbkZ1bmN0aW9uQ2FsbCgkZnVuY3Rpb24sICRmdW5jdGlvblN0cmluZywgIiAgICAiLCAkc3Zn
UHJvcGVydHlUeXBlLCAkaW1wbENsYXNzTmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUgZXEgInNldCIgYW5kICRmdW5jdGlvbi0+c2ln
bmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVHlwZWRBcnJheSJ9KSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbXkgJHZpZXdUeXBlID0gJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiVHlwZWRBcnJheSJ9OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2V0V2ViR0xBcnJheUhl
bHBlcjwkaW1wbFR5cGUsICR2aWV3VHlwZT4oZXhlYywgY2FzdGVkVGhpcy0+aW1wbCgpKSk7XG4i
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbkZ1bmN0aW9uQ2FsbCgkZnVuY3Rpb24sICRm
dW5jdGlvblN0cmluZywgIiAgICAiLCAkc3ZnUHJvcGVydHlUeXBlLCAkaW1wbENsYXNzTmFtZSk7
CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0zODA0LDYgKzM4MTEsMTggQEAgRU5ECiAg
ICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoSlNWYWx1ZSgpKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNPYmplY3QodG9KUyhleGVjLCBqc0NvbnN0cnVj
dG9yLT5nbG9iYWxPYmplY3QoKSwgYXJyYXkuZ2V0KCkpKSk7XG4iKTsKICAgICAgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIn1cblxuIik7CisKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIkpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCAke2ludGVyZmFjZU5hbWV9KiBvYmplY3QpXG4iKTsKKyAg
ICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOworICAgICAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiICAgIHJldHVybiB0b0pTQXJyYXlCdWZmZXJWaWV3PCR7Y2xhc3NOYW1l
fT4oZXhlYywgZ2xvYmFsT2JqZWN0LCBvYmplY3QpO1xuIik7CisgICAgICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICJ9XG5cbiIpOworCisgICAgICAgICAgICBpZiAoJGRhdGFOb2RlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tSW5kZXhlZFNldHRlciJ9KSB7CisgICAgICAgICAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAidm9pZCAke2NsYXNzTmFtZX06OmluZGV4U2V0dGVyKEpT
Qzo6RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbmRleCwgSlNDOjpKU1ZhbHVlIHZhbHVlKVxu
Iik7CisgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAie1xuIik7CisgICAgICAg
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGltcGwoKS0+c2V0KGluZGV4LCB2YWx1
ZS50b051bWJlcihleGVjKSk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICJ9XG4iKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2Jq
Qy5wbQkocmV2aXNpb24gMTI0OTkzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yT2JqQy5wbQkod29ya2luZyBjb3B5KQpAQCAtNDUzLDYgKzQ1Myw3IEBA
IHN1YiBTa2lwRnVuY3Rpb24KIAogICAgIHJldHVybiAxIGlmICRjb2RlR2VuZXJhdG9yLT5HZXRT
ZXF1ZW5jZVR5cGUoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPnR5cGUpOwogICAgIHJldHVybiAxIGlm
ICRjb2RlR2VuZXJhdG9yLT5HZXRBcnJheVR5cGUoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPnR5cGUp
OworICAgIHJldHVybiAxIGlmICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiVHlwZWRBcnJheSJ9OwogCiAgICAgZm9yZWFjaCBteSAkcGFyYW0gKEB7JGZ1bmN0aW9u
LT5wYXJhbWV0ZXJzfSkgewogICAgICAgICByZXR1cm4gMSBpZiAkY29kZUdlbmVyYXRvci0+R2V0
U2VxdWVuY2VUeXBlKCRwYXJhbS0+dHlwZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQkocmV2aXNpb24gMTI0OTkzKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0JKHdv
cmtpbmcgY29weSkKQEAgLTE0NzQsNiArMTQ3NCwxNiBAQCBFTkQKIAogICAgIHB1c2goQGltcGxD
b250ZW50RGVjbHMsIEdlbmVyYXRlQXJndW1lbnRzQ291bnRDaGVjaygkZnVuY3Rpb24sICRkYXRh
Tm9kZSkpOwogCisgICAgaWYgKCRuYW1lIGVxICJzZXQiIGFuZCAkZnVuY3Rpb24tPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlR5cGVkQXJyYXkifSkgeworICAgICAgICBBZGRUb0lt
cGxJbmNsdWRlcygiVjhBcnJheUJ1ZmZlclZpZXdDdXN0b20uaCIpOworICAgICAgICBwdXNoKEBp
bXBsQ29udGVudERlY2xzLCA8PEVORCk7CisgICAgcmV0dXJuIHNldFdlYkdMQXJyYXlIZWxwZXI8
JGltcGxDbGFzc05hbWUsIFY4JHtpbXBsQ2xhc3NOYW1lfT4oYXJncyk7Cit9CisKK0VORAorICAg
ICAgICByZXR1cm47CisgICAgfQorCiAgICAgbXkgKCRzdmdQcm9wZXJ0eVR5cGUsICRzdmdMaXN0
UHJvcGVydHlUeXBlLCAkc3ZnTmF0aXZlVHlwZSkgPSBHZXRTVkdQcm9wZXJ0eVR5cGVzKCRpbXBs
Q2xhc3NOYW1lKTsKIAogICAgIGlmICgkc3ZnTmF0aXZlVHlwZSkgewpAQCAtMjYxMCw2ICsyNjIw
LDE5IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KCRpbXBsQ2xhc3NOYW0KIH0KIAogRU5E
CisKKyAgICAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUNv
bnN0cnVjdG9yIn0pIHsKKyAgICAgICAgICAgIG15ICR0eXBlID0gJGRhdGFOb2RlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiVHlwZWRBcnJheSJ9OworICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVk
ZXMoIlY4QXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmgiKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCA8PEVORCk7Cit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjgke2ltcGxDbGFzc05hbWV9
Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAg
SU5DX1NUQVRTKCJET00uJHtpbXBsQ2xhc3NOYW1lfS5Db250cnVjdG9yIik7CisgICAgcmV0dXJu
IGNvbnN0cnVjdFdlYkdMQXJyYXk8JGltcGxDbGFzc05hbWUsIFY4JHtpbXBsQ2xhc3NOYW1lfSwg
JHR5cGU+KGFyZ3MsICZpbmZvLCAkdmlld1R5cGUpOworfQorCitFTkQKKyAgICAgICAgfQogICAg
IH0KIAogICAgIG15ICRpbmRleGVyOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Rlc3RUeXBlZEFycmF5LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFR5cGVkQXJyYXkuaWRsCShyZXZpc2lvbiAxMjQ5
OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFR5cGVkQXJy
YXkuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw1ICszNyw2IEBAIG1vZHVsZSBodG1sIHsKICAg
ICAgICAgVHlwZWRBcnJheT1kb3VibGUKICAgICBdIEZsb2F0NjRBcnJheSA6IEFycmF5QnVmZmVy
VmlldyB7CiAgICAgICAgIEludDMyQXJyYXkgZm9vKGluIEZsb2F0MzJBcnJheSBhcnJheSk7Cisg
ICAgICAgIFtUeXBlZEFycmF5PWRvdWJsZV0gdm9pZCBzZXQoKTsKICAgICB9OwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNGbG9hdDY0QXJyYXkuY3BwCShyZXZpc2lvbiAxMjQ5OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXkuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05NSwxNSArOTUsMjUgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU0Zsb2F0
NjRBcgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNPYmplY3QodG9KUyhleGVjLCBqc0Nv
bnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKSwgYXJyYXkuZ2V0KCkpKSk7CiB9CiAKK0pTQzo6SlNW
YWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBGbG9hdDY0QXJyYXkqIG9iamVjdCkKK3sKKyAgICByZXR1cm4gdG9KU0FycmF5QnVm
ZmVyVmlldzxKU0Zsb2F0NjRBcnJheT4oZXhlYywgZ2xvYmFsT2JqZWN0LCBvYmplY3QpOworfQor
Cit2b2lkIEpTRmxvYXQ2NEFycmF5OjppbmRleFNldHRlcihKU0M6OkV4ZWNTdGF0ZSogZXhlYywg
dW5zaWduZWQgaW5kZXgsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBpbXBsKCktPnNldChp
bmRleCwgdmFsdWUudG9OdW1iZXIoZXhlYykpOworfQogLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90
eXBlICovCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU0Zsb2F0NjRBcnJheVByb3Rv
dHlwZVRhYmxlVmFsdWVzW10gPQogewogICAgIHsgImZvbyIsIERvbnREZWxldGUgfCBKU0M6OkZ1
bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzRmxvYXQ2NEFy
cmF5UHJvdG90eXBlRnVuY3Rpb25Gb28pLCAoaW50cHRyX3QpMSwgTm9JbnRyaW5zaWMgfSwKKyAg
ICB7ICJzZXQiLCBEb250RGVsZXRlIHwgSlNDOjpGdW5jdGlvbiwgKGludHB0cl90KXN0YXRpY19j
YXN0PE5hdGl2ZUZ1bmN0aW9uPihqc0Zsb2F0NjRBcnJheVByb3RvdHlwZUZ1bmN0aW9uU2V0KSwg
KGludHB0cl90KTAsIE5vSW50cmluc2ljIH0sCiAgICAgeyAwLCAwLCAwLCAwLCBOb0ludHJpbnNp
YyB9CiB9OwogCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTRmxvYXQ2NEFycmF5UHJvdG90eXBl
VGFibGUgPSB7IDIsIDEsIEpTRmxvYXQ2NEFycmF5UHJvdG90eXBlVGFibGVWYWx1ZXMsIDAgfTsK
K3N0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNGbG9hdDY0QXJyYXlQcm90b3R5cGVUYWJsZSA9IHsg
NCwgMywgSlNGbG9hdDY0QXJyYXlQcm90b3R5cGVUYWJsZVZhbHVlcywgMCB9Owogc3RhdGljIGNv
bnN0IEhhc2hUYWJsZSogZ2V0SlNGbG9hdDY0QXJyYXlQcm90b3R5cGVUYWJsZShFeGVjU3RhdGUq
IGV4ZWMpCiB7CiAgICAgcmV0dXJuIGdldEhhc2hUYWJsZUZvckdsb2JhbERhdGEoZXhlYy0+Z2xv
YmFsRGF0YSgpLCAmSlNGbG9hdDY0QXJyYXlQcm90b3R5cGVUYWJsZSk7CkBAIC0yNDgsNiArMjU4
LDE2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNGbG9hdDY0QXIKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNGbG9hdDY0QXJyYXlQcm90b3R5cGVGdW5jdGlvblNldChFeGVjU3RhdGUqIGV4ZWMp
Cit7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7CisgICAg
aWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoJkpTRmxvYXQ2NEFycmF5OjpzX2luZm8pKQorICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICBKU0Zsb2F0NjRBcnJheSogY2Fz
dGVkVGhpcyA9IGpzQ2FzdDxKU0Zsb2F0NjRBcnJheSo+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOwor
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgJkpTRmxvYXQ2NEFycmF5
OjpzX2luZm8pOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2V0V2ViR0xBcnJheUhlbHBl
cjxGbG9hdDY0QXJyYXksIGRvdWJsZT4oZXhlYywgY2FzdGVkVGhpcy0+aW1wbCgpKSk7Cit9CisK
IAogSlNWYWx1ZSBKU0Zsb2F0NjRBcnJheTo6Z2V0QnlJbmRleChFeGVjU3RhdGUqLCB1bnNpZ25l
ZCBpbmRleCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU0Zsb2F0NjRBcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5oCShyZXZpc2lvbiAxMjQ5OTMpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXkuaAko
d29ya2luZyBjb3B5KQpAQCAtMTI2LDYgKzEyNiw3IEBAIHByb3RlY3RlZDoKIC8vIEZ1bmN0aW9u
cwogCiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNGbG9hdDY0QXJyYXlQcm90
b3R5cGVGdW5jdGlvbkZvbyhKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzRmxvYXQ2NEFycmF5UHJvdG90eXBlRnVuY3Rpb25TZXQoSlNDOjpFeGVj
U3RhdGUqKTsKIC8vIEF0dHJpYnV0ZXMKIAogSlNDOjpKU1ZhbHVlIGpzRmxvYXQ2NEFycmF5Q29u
c3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1l
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0
NjRBcnJheS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcAkocmV2aXNpb24gMTI0OTkzKQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIK
ICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiVjhBcnJheUJ1
ZmZlclZpZXcuaCIKKyNpbmNsdWRlICJWOEFycmF5QnVmZmVyVmlld0N1c3RvbS5oIgogI2luY2x1
ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4RE9NV3JhcHBlci5oIgogI2luY2x1ZGUgIlY4
RmxvYXQzMkFycmF5LmgiCkBAIC01OCw2ICs1OSwxMiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IGZvb0NhbGxiYWNrCiAgICAgcmV0dXJuIHRvVjgoaW1wLT5mb28oYXJyYXkpLCBhcmdz
LkdldElzb2xhdGUoKSk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc2V0Q2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5G
bG9hdDY0QXJyYXkuc2V0Iik7CisgICAgcmV0dXJuIHNldFdlYkdMQXJyYXlIZWxwZXI8RmxvYXQ2
NEFycmF5LCBWOEZsb2F0NjRBcnJheT4oYXJncyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEZsb2F0
NjRBcnJheVY4SW50ZXJuYWwKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoRmxvYXQ2NEFy
cmF5KiBpbXBsLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKQEAgLTcwLDYgKzc3LDE2IEBAIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB0b1Y4KEZsb2F0NjRBcnJheSoKICAgICByZXR1cm4gd3JhcHBlcjsK
IH0KIAordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RmxvYXQ2NEFycmF5Ojpjb25zdHJ1Y3RvckNh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00u
RmxvYXQ2NEFycmF5LkNvbnRydWN0b3IiKTsKKyAgICByZXR1cm4gY29uc3RydWN0V2ViR0xBcnJh
eTxGbG9hdDY0QXJyYXksIFY4RmxvYXQ2NEFycmF5LCBkb3VibGU+KGFyZ3MsICZpbmZvLCB2ODo6
a0V4dGVybmFsRG91YmxlQXJyYXkpOworfQorCitzdGF0aWMgY29uc3QgQmF0Y2hlZENhbGxiYWNr
IEZsb2F0NjRBcnJheUNhbGxiYWNrc1tdID0geworICAgIHsic2V0IiwgRmxvYXQ2NEFycmF5VjhJ
bnRlcm5hbDo6c2V0Q2FsbGJhY2t9LAorfTsKKwogc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOEZsb2F0NjRBcnJheVRlbXBsYXRlKHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjKQogewogICAgIGRlc2MtPlJlYWRPbmx5
UHJvdG90eXBlKCk7CkBAIC03Nyw3ICs5NCw3IEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGEKICAgICB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4gZGVmYXVsdFNpZ25h
dHVyZTsKICAgICBkZWZhdWx0U2lnbmF0dXJlID0gY29uZmlndXJlVGVtcGxhdGUoZGVzYywgIkZs
b2F0NjRBcnJheSIsIFY4QXJyYXlCdWZmZXJWaWV3OjpHZXRUZW1wbGF0ZSgpLCBWOEZsb2F0NjRB
cnJheTo6aW50ZXJuYWxGaWVsZENvdW50LAogICAgICAgICAwLCAwLAotICAgICAgICAwLCAwKTsK
KyAgICAgICAgRmxvYXQ2NEFycmF5Q2FsbGJhY2tzLCBXVEZfQVJSQVlfTEVOR1RIKEZsb2F0NjRB
cnJheUNhbGxiYWNrcykpOwogICAgIFVOVVNFRF9QQVJBTShkZWZhdWx0U2lnbmF0dXJlKTsgLy8g
SW4gc29tZSBjYXNlcywgaXQgd2lsbCBub3QgYmUgdXNlZC4KICAgICBkZXNjLT5TZXRDYWxsSGFu
ZGxlcihWOEZsb2F0NjRBcnJheTo6Y29uc3RydWN0b3JDYWxsYmFjayk7CiAgICAgdjg6OkxvY2Fs
PHY4OjpPYmplY3RUZW1wbGF0ZT4gaW5zdGFuY2UgPSBkZXNjLT5JbnN0YW5jZVRlbXBsYXRlKCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhGbG9hdDMyQXJyYXlD
dXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEZsb2F0MzJBcnJheUN1c3RvbS5jcHAJKHJldmlzaW9uIDEyNDk5MykKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEZsb2F0MzJBcnJheUN1c3RvbS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0g
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJW
OEZsb2F0MzJBcnJheS5oIgotCi0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyLmg+Ci0jaW5jbHVk
ZSA8d3RmL0Zsb2F0MzJBcnJheS5oPgotCi0jaW5jbHVkZSAiVjhCaW5kaW5nLmgiCi0jaW5jbHVk
ZSAiVjhBcnJheUJ1ZmZlci5oIgotI2luY2x1ZGUgIlY4QXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmgi
Ci0jaW5jbHVkZSAiVjhQcm94eS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOEZsb2F0MzJBcnJheTo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQotewotICAgIElOQ19TVEFUUygiRE9NLkZsb2F0MzJBcnJheS5D
b250cnVjdG9yIik7Ci0KLSAgICByZXR1cm4gY29uc3RydWN0V2ViR0xBcnJheTxGbG9hdDMyQXJy
YXksIFY4RmxvYXQzMkFycmF5LCBmbG9hdD4oYXJncywgJmluZm8sIHY4OjprRXh0ZXJuYWxGbG9h
dEFycmF5KTsKLX0KLQotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RmxvYXQzMkFycmF5OjpzZXRD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQotewotICAgIElOQ19TVEFUUygiRE9N
LkZsb2F0MzJBcnJheS5zZXQoKSIpOwotICAgIHJldHVybiBzZXRXZWJHTEFycmF5SGVscGVyPEZs
b2F0MzJBcnJheSwgVjhGbG9hdDMyQXJyYXk+KGFyZ3MpOwotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhGbG9hdDY0
QXJyYXlDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEZsb2F0NjRBcnJheUN1c3RvbS5jcHAJKHJldmlzaW9uIDEyNDk5MykKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEZsb2F0NjRBcnJheUN1c3RvbS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJWOEZsb2F0NjRBcnJheS5oIgotCi0jaW5jbHVkZSAiVjhBcnJheUJ1
ZmZlci5oIgotI2luY2x1ZGUgIlY4QXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmgiCi0jaW5jbHVkZSAi
VjhCaW5kaW5nLmgiCi0jaW5jbHVkZSAiVjhQcm94eS5oIgotCi0jaW5jbHVkZSA8d3RmL0FycmF5
QnVmZmVyLmg+Ci0jaW5jbHVkZSA8d3RmL0Zsb2F0NjRBcnJheS5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEZsb2F0NjRBcnJheTo6Y29uc3RydWN0
b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQotewotICAgIElOQ19TVEFUUygi
RE9NLkZsb2F0NjRBcnJheS5Db250cnVjdG9yIik7Ci0KLSAgICByZXR1cm4gY29uc3RydWN0V2Vi
R0xBcnJheTxGbG9hdDY0QXJyYXksIFY4RmxvYXQ2NEFycmF5LCBkb3VibGU+KGFyZ3MsICZpbmZv
LCB2ODo6a0V4dGVybmFsRG91YmxlQXJyYXkpOwotfQotCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhGbG9hdDY0QXJyYXk6OnNldENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCi17
Ci0gICAgSU5DX1NUQVRTKCJET00uRmxvYXQ2NEFycmF5LnNldCgpIik7Ci0gICAgcmV0dXJuIHNl
dFdlYkdMQXJyYXlIZWxwZXI8RmxvYXQ2NEFycmF5LCBWOEZsb2F0NjRBcnJheT4oYXJncyk7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEludDhBcnJheUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW50OEFycmF5Q3VzdG9tLmNwcAkocmV2aXNpb24g
MTI0OTkzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW50OEFycmF5
Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1NiArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlv
bi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlci5oPgotI2luY2x1ZGUgPHd0Zi9JbnQ4QXJy
YXkuaD4KLQotI2luY2x1ZGUgIlY4QmluZGluZy5oIgotI2luY2x1ZGUgIlY4QXJyYXlCdWZmZXIu
aCIKLSNpbmNsdWRlICJWOEFycmF5QnVmZmVyVmlld0N1c3RvbS5oIgotI2luY2x1ZGUgIlY4SW50
OEFycmF5LmgiCi0jaW5jbHVkZSAiVjhQcm94eS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEludDhBcnJheTo6Y29uc3RydWN0b3JDYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQotewotICAgIElOQ19TVEFUUygiRE9NLkludDhBcnJh
eS5Db250cnVjdG9yIik7Ci0KLSAgICByZXR1cm4gY29uc3RydWN0V2ViR0xBcnJheTxJbnQ4QXJy
YXksIFY4SW50OEFycmF5LCBzaWduZWQgY2hhcj4oYXJncywgJmluZm8sIHY4OjprRXh0ZXJuYWxC
eXRlQXJyYXkpOwotfQotCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbnQ4QXJyYXk6OnNldENh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCi17Ci0gICAgSU5DX1NUQVRTKCJET00u
SW50OEFycmF5LnNldCgpIik7Ci0gICAgcmV0dXJuIHNldFdlYkdMQXJyYXlIZWxwZXI8SW50OEFy
cmF5LCBWOEludDhBcnJheT4oYXJncyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEludDE2QXJyYXlDdXN0b20u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOElu
dDE2QXJyYXlDdXN0b20uY3BwCShyZXZpc2lvbiAxMjQ5OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhJbnQxNkFycmF5Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0g
KiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0g
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgPHd0Zi9BcnJheUJ1
ZmZlci5oPgotI2luY2x1ZGUgPHd0Zi9JbnQxNkFycmF5Lmg+Ci0KLSNpbmNsdWRlICJWOEJpbmRp
bmcuaCIKLSNpbmNsdWRlICJWOEFycmF5QnVmZmVyLmgiCi0jaW5jbHVkZSAiVjhBcnJheUJ1ZmZl
clZpZXdDdXN0b20uaCIKLSNpbmNsdWRlICJWOEludDE2QXJyYXkuaCIKLSNpbmNsdWRlICJWOFBy
b3h5LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
SW50MTZBcnJheTo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQotewotICAgIElOQ19TVEFUUygiRE9NLkludDE2QXJyYXkuQ29udHJ1Y3RvciIpOwotCi0gICAg
cmV0dXJuIGNvbnN0cnVjdFdlYkdMQXJyYXk8SW50MTZBcnJheSwgVjhJbnQxNkFycmF5LCBzaG9y
dD4oYXJncywgJmluZm8sIHY4OjprRXh0ZXJuYWxTaG9ydEFycmF5KTsKLX0KLQotdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4SW50MTZBcnJheTo6c2V0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncykKLXsKLSAgICBJTkNfU1RBVFMoIkRPTS5JbnQxNkFycmF5LnNldCgpIik7Ci0gICAg
cmV0dXJuIHNldFdlYkdMQXJyYXlIZWxwZXI8SW50MTZBcnJheSwgVjhJbnQxNkFycmF5Pihhcmdz
KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SW50MzJBcnJheUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW50MzJBcnJheUN1c3RvbS5jcHAJKHJl
dmlzaW9uIDEyNDk5MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOElu
dDMyQXJyYXlDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDU2ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlz
dHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyLmg+Ci0jaW5jbHVkZSA8d3Rm
L0ludDMyQXJyYXkuaD4KLQotI2luY2x1ZGUgIlY4QmluZGluZy5oIgotI2luY2x1ZGUgIlY4QXJy
YXlCdWZmZXIuaCIKLSNpbmNsdWRlICJWOEFycmF5QnVmZmVyVmlld0N1c3RvbS5oIgotI2luY2x1
ZGUgIlY4SW50MzJBcnJheS5oIgotI2luY2x1ZGUgIlY4UHJveHkuaCIKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbnQzMkFycmF5Ojpjb25zdHJ1Y3Rv
ckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCi17Ci0gICAgSU5DX1NUQVRTKCJE
T00uSW50MzJBcnJheS5Db250cnVjdG9yIik7Ci0KLSAgICByZXR1cm4gY29uc3RydWN0V2ViR0xB
cnJheTxJbnQzMkFycmF5LCBWOEludDMyQXJyYXksIGludD4oYXJncywgJmluZm8sIHY4OjprRXh0
ZXJuYWxJbnRBcnJheSk7Ci19Ci0KLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEludDMyQXJyYXk6
OnNldENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCi17Ci0gICAgSU5DX1NUQVRT
KCJET00uSW50MzJBcnJheS5zZXQoKSIpOwotICAgIHJldHVybiBzZXRXZWJHTEFycmF5SGVscGVy
PEludDMyQXJyYXksIFY4SW50MzJBcnJheT4oYXJncyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFVpbnQ4QXJy
YXlDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOFVpbnQ4QXJyYXlDdXN0b20uY3BwCShyZXZpc2lvbiAxMjQ5OTMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhVaW50OEFycmF5Q3VzdG9tLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgPHd0
Zi9BcnJheUJ1ZmZlci5oPgotI2luY2x1ZGUgPHd0Zi9VaW50OEFycmF5Lmg+Ci0KLSNpbmNsdWRl
ICJWOEJpbmRpbmcuaCIKLSNpbmNsdWRlICJWOEFycmF5QnVmZmVyLmgiCi0jaW5jbHVkZSAiVjhB
cnJheUJ1ZmZlclZpZXdDdXN0b20uaCIKLSNpbmNsdWRlICJWOFVpbnQ4QXJyYXkuaCIKLSNpbmNs
dWRlICJWOFByb3h5LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4VWludDhBcnJheTo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQotewotICAgIElOQ19TVEFUUygiRE9NLlVpbnQ4QXJyYXkuQ29udHJ1Y3RvciIp
OwotCi0gICAgcmV0dXJuIGNvbnN0cnVjdFdlYkdMQXJyYXk8VWludDhBcnJheSwgVjhVaW50OEFy
cmF5LCB1bnNpZ25lZCBjaGFyPihhcmdzLCAmaW5mbywgdjg6OmtFeHRlcm5hbFVuc2lnbmVkQnl0
ZUFycmF5KTsKLX0KLQotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VWludDhBcnJheTo6c2V0Q2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKLXsKLSAgICBJTkNfU1RBVFMoIkRPTS5V
aW50OEFycmF5LnNldCgpIik7Ci0gICAgcmV0dXJuIHNldFdlYkdMQXJyYXlIZWxwZXI8VWludDhB
cnJheSwgVjhVaW50OEFycmF5PihhcmdzKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4VWludDhDbGFtcGVkQXJy
YXlDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOFVpbnQ4Q2xhbXBlZEFycmF5Q3VzdG9tLmNwcAkocmV2aXNpb24gMTI0OTkzKQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4VWludDhDbGFtcGVkQXJyYXlDdXN0
b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTCi0gKiBJUycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MKLSAqIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUKLSAqIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LAotICogSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUgotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCi0gKiBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCi0gKiBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VECi0gKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyLmg+
Ci0jaW5jbHVkZSA8d3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+Ci0KLSNpbmNsdWRlICJWOEFycmF5
QnVmZmVyLmgiCi0jaW5jbHVkZSAiVjhBcnJheUJ1ZmZlclZpZXdDdXN0b20uaCIKLSNpbmNsdWRl
ICJWOEJpbmRpbmcuaCIKLSNpbmNsdWRlICJWOFByb3h5LmgiCi0jaW5jbHVkZSAiVjhVaW50OENs
YW1wZWRBcnJheS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOFVpbnQ4Q2xhbXBlZEFycmF5Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCi17Ci0gICAgSU5DX1NUQVRTKCJET00uVWludDhDbGFtcGVkQXJyYXku
Q29udHJ1Y3RvciIpOwotCi0gICAgcmV0dXJuIGNvbnN0cnVjdFdlYkdMQXJyYXk8VWludDhDbGFt
cGVkQXJyYXksIFY4VWludDhDbGFtcGVkQXJyYXksIHVuc2lnbmVkIGNoYXI+KGFyZ3MsICZpbmZv
LCB2ODo6a0V4dGVybmFsUGl4ZWxBcnJheSk7Ci19Ci0KLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OFVpbnQ4Q2xhbXBlZEFycmF5OjpzZXRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQotewotICAgIElOQ19TVEFUUygiRE9NLlVpbnQ4Q2xhbXBlZEFycmF5LnNldCgpIik7Ci0gICAg
cmV0dXJuIHNldFdlYkdMQXJyYXlIZWxwZXI8VWludDhDbGFtcGVkQXJyYXksIFY4VWludDhDbGFt
cGVkQXJyYXk+KGFyZ3MpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhVaW50MTZBcnJheUN1c3RvbS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4VWludDE2QXJy
YXlDdXN0b20uY3BwCShyZXZpc2lvbiAxMjQ5OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhVaW50MTZBcnJheUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NTYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0
OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIu
aD4KLSNpbmNsdWRlIDx3dGYvVWludDE2QXJyYXkuaD4KLQotI2luY2x1ZGUgIlY4QmluZGluZy5o
IgotI2luY2x1ZGUgIlY4QXJyYXlCdWZmZXIuaCIKLSNpbmNsdWRlICJWOEFycmF5QnVmZmVyVmll
d0N1c3RvbS5oIgotI2luY2x1ZGUgIlY4VWludDE2QXJyYXkuaCIKLSNpbmNsdWRlICJWOFByb3h5
LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VWlu
dDE2QXJyYXk6OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
LXsKLSAgICBJTkNfU1RBVFMoIkRPTS5VaW50MTZBcnJheS5Db250cnVjdG9yIik7Ci0KLSAgICBy
ZXR1cm4gY29uc3RydWN0V2ViR0xBcnJheTxVaW50MTZBcnJheSwgVjhVaW50MTZBcnJheSwgdW5z
aWduZWQgc2hvcnQ+KGFyZ3MsICZpbmZvLCB2ODo6a0V4dGVybmFsVW5zaWduZWRTaG9ydEFycmF5
KTsKLX0KLQotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VWludDE2QXJyYXk6OnNldENhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCi17Ci0gICAgSU5DX1NUQVRTKCJET00uVWludDE2
QXJyYXkuc2V0KCkiKTsKLSAgICByZXR1cm4gc2V0V2ViR0xBcnJheUhlbHBlcjxVaW50MTZBcnJh
eSwgVjhVaW50MTZBcnJheT4oYXJncyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFVpbnQzMkFycmF5Q3VzdG9t
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhV
aW50MzJBcnJheUN1c3RvbS5jcHAJKHJldmlzaW9uIDEyNDk5MykKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFVpbnQzMkFycmF5Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
Ci0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
Ci0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgPHd0Zi9BcnJh
eUJ1ZmZlci5oPgotI2luY2x1ZGUgPHd0Zi9VaW50MzJBcnJheS5oPgotCi0jaW5jbHVkZSAiVjhC
aW5kaW5nLmgiCi0jaW5jbHVkZSAiVjhBcnJheUJ1ZmZlci5oIgotI2luY2x1ZGUgIlY4QXJyYXlC
dWZmZXJWaWV3Q3VzdG9tLmgiCi0jaW5jbHVkZSAiVjhVaW50MzJBcnJheS5oIgotI2luY2x1ZGUg
IlY4UHJveHkuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhVaW50MzJBcnJheTo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQotewotICAgIElOQ19TVEFUUygiRE9NLlVpbnQzMkFycmF5LkNvbnRydWN0b3IiKTsK
LQotICAgIHJldHVybiBjb25zdHJ1Y3RXZWJHTEFycmF5PFVpbnQzMkFycmF5LCBWOFVpbnQzMkFy
cmF5LCB1bnNpZ25lZCBpbnQ+KGFyZ3MsICZpbmZvLCB2ODo6a0V4dGVybmFsVW5zaWduZWRJbnRB
cnJheSk7Ci19Ci0KLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFVpbnQzMkFycmF5OjpzZXRDYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQotewotICAgIElOQ19TVEFUUygiRE9NLlVp
bnQzMkFycmF5LnNldCgpIik7Ci0gICAgcmV0dXJuIHNldFdlYkdMQXJyYXlIZWxwZXI8VWludDMy
QXJyYXksIFY4VWludDMyQXJyYXk+KGFyZ3MpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9GbG9hdDMyQXJyYXkuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Zsb2F0MzJBcnJheS5pZGwJKHJl
dmlzaW9uIDEyNDk5MykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Zsb2F0MzJBcnJh
eS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDYgQEAgbW9kdWxlIGh0bWwgewogCiAg
ICAgICAgIC8vIHZvaWQgc2V0KGluIEZsb2F0MzJBcnJheSBhcnJheSwgW09wdGlvbmFsXSBpbiB1
bnNpZ25lZCBsb25nIG9mZnNldCk7CiAgICAgICAgIC8vIHZvaWQgc2V0KGluIHNlcXVlbmNlPGxv
bmc+IGFycmF5LCBbT3B0aW9uYWxdIGluIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KTsKLSAgICAgICAg
W0N1c3RvbV0gdm9pZCBzZXQoKTsKKyAgICAgICAgW1R5cGVkQXJyYXk9ZmxvYXRdIHZvaWQgc2V0
KCk7CiAgICAgfTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Zsb2F0NjRB
cnJheS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRmxvYXQ2
NEFycmF5LmlkbAkocmV2aXNpb24gMTI0OTkzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvRmxvYXQ2NEFycmF5LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNiBAQCBtb2R1
bGUgaHRtbCB7CiAKICAgICAgICAgLy8gdm9pZCBzZXQoaW4gRmxvYXQ2NEFycmF5IGFycmF5LCBb
T3B0aW9uYWxdIGluIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KTsKICAgICAgICAgLy8gdm9pZCBzZXQo
aW4gc2VxdWVuY2U8bG9uZz4gYXJyYXksIFtPcHRpb25hbF0gaW4gdW5zaWduZWQgbG9uZyBvZmZz
ZXQpOwotICAgICAgICBbQ3VzdG9tXSB2b2lkIHNldCgpOworICAgICAgICBbVHlwZWRBcnJheT1k
b3VibGVdIHZvaWQgc2V0KCk7CiAgICAgfTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0ludDhBcnJheS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvSW50OEFycmF5LmlkbAkocmV2aXNpb24gMTI0OTkzKQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvSW50OEFycmF5LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNiBA
QCBtb2R1bGUgaHRtbCB7CiAKICAgICAgICAgLy8gdm9pZCBzZXQoaW4gSW50OEFycmF5IGFycmF5
LCBbT3B0aW9uYWxdIGluIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KTsKICAgICAgICAgLy8gdm9pZCBz
ZXQoaW4gc2VxdWVuY2U8bG9uZz4gYXJyYXksIFtPcHRpb25hbF0gaW4gdW5zaWduZWQgbG9uZyBv
ZmZzZXQpOwotICAgICAgICBbQ3VzdG9tXSB2b2lkIHNldCgpOworICAgICAgICBbVHlwZWRBcnJh
eT1zaWduZWQgY2hhcl0gdm9pZCBzZXQoKTsKICAgICB9OwogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvSW50MTZBcnJheS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvSW50MTZBcnJheS5pZGwJKHJldmlzaW9uIDEyNDk5MykKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ludDE2QXJyYXkuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00
Myw2ICs0Myw2IEBAIG1vZHVsZSBodG1sIHsKIAogICAgICAgICAvLyB2b2lkIHNldChpbiBJbnQx
NkFycmF5IGFycmF5LCBbT3B0aW9uYWxdIGluIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KTsKICAgICAg
ICAgLy8gdm9pZCBzZXQoaW4gc2VxdWVuY2U8bG9uZz4gYXJyYXksIFtPcHRpb25hbF0gaW4gdW5z
aWduZWQgbG9uZyBvZmZzZXQpOwotICAgICAgICBbQ3VzdG9tXSB2b2lkIHNldCgpOworICAgICAg
ICBbVHlwZWRBcnJheT1zaG9ydF0gdm9pZCBzZXQoKTsKICAgICB9OwogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvSW50MzJBcnJheS5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvSW50MzJBcnJheS5pZGwJKHJldmlzaW9uIDEyNDk5MykKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ludDMyQXJyYXkuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC00NCw2ICs0NCw2IEBAIG1vZHVsZSBodG1sIHsKIAogICAgICAgICAvLyB2b2lkIHNldChp
biBJbnQzMkFycmF5IGFycmF5LCBbT3B0aW9uYWxdIGluIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KTsK
ICAgICAgICAgLy8gdm9pZCBzZXQoaW4gc2VxdWVuY2U8bG9uZz4gYXJyYXksIFtPcHRpb25hbF0g
aW4gdW5zaWduZWQgbG9uZyBvZmZzZXQpOwotICAgICAgICBbQ3VzdG9tXSB2b2lkIHNldCgpOwor
ICAgICAgICBbVHlwZWRBcnJheT1pbnRdIHZvaWQgc2V0KCk7CiAgICAgfTsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1VpbnQ4QXJyYXkuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1VpbnQ4QXJyYXkuaWRsCShyZXZpc2lvbiAxMjQ5OTMp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9VaW50OEFycmF5LmlkbAkod29ya2luZyBj
b3B5KQpAQCAtNDMsNiArNDMsNiBAQCBtb2R1bGUgaHRtbCB7CiAKICAgICAgICAgLy8gdm9pZCBz
ZXQoaW4gVWludDhBcnJheSBhcnJheSwgW09wdGlvbmFsXSBpbiB1bnNpZ25lZCBsb25nIG9mZnNl
dCk7CiAgICAgICAgIC8vIHZvaWQgc2V0KGluIHNlcXVlbmNlPGxvbmc+IGFycmF5LCBbT3B0aW9u
YWxdIGluIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KTsKLSAgICAgICAgW0N1c3RvbV0gdm9pZCBzZXQo
KTsKKyAgICAgICAgW1R5cGVkQXJyYXk9dW5zaWduZWQgY2hhcl0gdm9pZCBzZXQoKTsKICAgICB9
OwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvVWludDhDbGFtcGVkQXJyYXku
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1VpbnQ4Q2xhbXBl
ZEFycmF5LmlkbAkocmV2aXNpb24gMTI0OTkzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvVWludDhDbGFtcGVkQXJyYXkuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw2IEBA
IG1vZHVsZSBodG1sIHsKICAgICAgICAgLy8gRklYTUU6IE1pc3Npbmcgb3RoZXIgc2V0dGVycyEK
ICAgICAgICAgLy8gdm9pZCBzZXQoaW4gVWludDhDbGFtcGVkQXJyYXkgYXJyYXksIFtPcHRpb25h
bF0gaW4gdW5zaWduZWQgbG9uZyBvZmZzZXQpOwogICAgICAgICAvLyB2b2lkIHNldChpbiBzZXF1
ZW5jZTxsb25nPiBhcnJheSwgW09wdGlvbmFsXSBpbiB1bnNpZ25lZCBsb25nIG9mZnNldCk7Ci0g
ICAgICAgIFtDdXN0b21dIHZvaWQgc2V0KCk7CisgICAgICAgIFtUeXBlZEFycmF5PXVuc2lnbmVk
IGNoYXJdIHZvaWQgc2V0KCk7CiAgICAgfTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1VpbnQxNkFycmF5LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9VaW50MTZBcnJheS5pZGwJKHJldmlzaW9uIDEyNDk5MykKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1VpbnQxNkFycmF5LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiAr
NDMsNiBAQCBtb2R1bGUgaHRtbCB7CiAKICAgICAgICAgLy8gdm9pZCBzZXQoaW4gVWludDE2QXJy
YXkgYXJyYXksIFtPcHRpb25hbF0gaW4gdW5zaWduZWQgbG9uZyBvZmZzZXQpOwogICAgICAgICAv
LyB2b2lkIHNldChpbiBzZXF1ZW5jZTxsb25nPiBhcnJheSwgW09wdGlvbmFsXSBpbiB1bnNpZ25l
ZCBsb25nIG9mZnNldCk7Ci0gICAgICAgIFtDdXN0b21dIHZvaWQgc2V0KCk7CisgICAgICAgIFtU
eXBlZEFycmF5PXVuc2lnbmVkIHNob3J0XSB2b2lkIHNldCgpOwogICAgIH07CiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9VaW50MzJBcnJheS5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvVWludDMyQXJyYXkuaWRsCShyZXZpc2lvbiAxMjQ5
OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9VaW50MzJBcnJheS5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTQzLDYgKzQzLDYgQEAgbW9kdWxlIGh0bWwgewogCiAgICAgICAgIC8vIHZv
aWQgc2V0KGluIFVpbnQzMkFycmF5IGFycmF5LCBbT3B0aW9uYWxdIGluIHVuc2lnbmVkIGxvbmcg
b2Zmc2V0KTsKICAgICAgICAgLy8gdm9pZCBzZXQoaW4gc2VxdWVuY2U8bG9uZz4gYXJyYXksIFtP
cHRpb25hbF0gaW4gdW5zaWduZWQgbG9uZyBvZmZzZXQpOwotICAgICAgICBbQ3VzdG9tXSB2b2lk
IHNldCgpOworICAgICAgICBbVHlwZWRBcnJheT11bnNpZ25lZCBpbnRdIHZvaWQgc2V0KCk7CiAg
ICAgfTsKIH0K
</data>
<flag name="review"
          id="166993"
          type_id="1"
          status="-"
          setter="haraken"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157197</attachid>
            <date>2012-08-08 05:55:08 -0700</date>
            <delta_ts>2012-08-08 08:52:02 -0700</delta_ts>
            <desc>Updated Patch</desc>
            <filename>typed_array_all_004.diff</filename>
            <type>text/plain</type>
            <size>98337</size>
            <attacher name="Vineet Chaudhary (vineetc)">code.vineet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNTAyNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc5IEBACisyMDEyLTA4LTA4ICBWaW5lZXQg
Q2hhdWRoYXJ5ICA8cmdmNzQ4QG1vdG9yb2xhLmNvbT4KKworICAgICAgICBSZW1vdmUgQWxsIEN1
c3RvbSBiaW5kaW5nIGNvZGUgZm9yIFR5cGVkQXJyYXkuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzM3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92aW5nIEN1c3RvbSBiaW5kaW5ncyBjb21wbGV0
ZWx5IHdpdGggaGVscCBvZiBbVHlwZWRBcnJheV0gYXR0cmlidXRlLgorCisgICAgICAgIFRlc3Rz
OiBUZXN0VHlwZWRBcnJheS5pZGwKKyAgICAgICAgVGhlcmUgc2hvdWxkIG5vdCBiZSBhbnkgYmVo
YXZpb3JhbCBjaGFuZ2UgYW5kIGFsbCB0ZXN0cyBzaG91bGQgcGFzcy4KKworICAgICAgICAqIEdO
VW1ha2VmaWxlLmxpc3QuYW06IFJlbW92ZWQgQ3VzdG9tIGZpbGVzLgorICAgICAgICAqIFRhcmdl
dC5wcmk6IERpdHRvLgorICAgICAgICAqIFVzZUpTQy5jbWFrZTogRGl0dG8uCisgICAgICAgICog
VXNlVjguY21ha2U6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUuZ3lwaTogRGl0dG8uCisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0by4KKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwOiBEaXR0by4KKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0Zsb2F0MzJBcnJheUN1c3RvbS5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
YmluZGluZ3MvanMvSlNGbG9hdDY0QXJyYXlDdXN0b20uY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTSW50MTZBcnJheUN1c3RvbS5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
YmluZGluZ3MvanMvSlNJbnQzMkFycmF5Q3VzdG9tLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0ludDhBcnJheUN1c3RvbS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNVaW50MTZBcnJheUN1c3RvbS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNVaW50MzJBcnJheUN1c3RvbS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNVaW50OEFycmF5Q3VzdG9tLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU1VpbnQ4Q2xhbXBlZEFycmF5Q3VzdG9tLmNwcDogUmVtb3ZlZC4KKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JDUFAucG06CisgICAgICAgIChHZW5lcmF0
ZUhlYWRlcik6IFNraXAgaW1wbGVtZW50YWlvbiBmb3IgVHlwZWRBcnJheS4KKyAgICAgICAgKEdl
bmVyYXRlSW1wbGVtZW50YXRpb24pOiBTa2lwIGltcGxlbWVudGFpb24gZm9yIFR5cGVkQXJyYXku
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbToKKyAg
ICAgICAgKEdlbmVyYXRlRnVuY3Rpb24pOiBTa2lwIGltcGxlbWVudGFpb24gZm9yIFR5cGVkQXJy
YXkuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06IE1vZGlm
aWVkIGdlbmVyYXRvciBjb2RlLgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6IEdl
bmVyYXRlcyBiaW5kaW5nIGZvciBzZXQoKSBjYWxsLgorICAgICAgICAoR2VuZXJhdGVDb25zdHJ1
Y3RvckRlZmluaXRpb24pOiAgQ29uc3RydWN0b3JUZW1wbGF0ZSBpbXBsZW1lbnRhdGlvbiBmb3Ig
VHlwZWRBcnJheS4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpD
LnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOiBTa2lwIGltcGxlbWVudGFpb24gZm9yIFR5
cGVkQXJyYXkuCisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKTogU2tpcCBpbXBsZW1l
bnRhaW9uIGZvciBUeXBlZEFycmF5LgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvclY4LnBtOgorICAgICAgICAoR2VuZXJhdGVGdW5jdGlvbkNhbGxiYWNrKTogR2VuZXJh
dGVzIGJpbmRpbmcgZm9yIHNldENhbGxiYWNrKCkuCisgICAgICAgIChHZW5lcmF0ZVR5cGVkQXJy
YXlDb25zdHJ1Y3RvckNhbGxiYWNrKTogR2VuZXJhdGVzIGJpbmRpbmcgZm9yIGNvbnN0cnVjdG9y
Q2FsbGJhY2soKS4KKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOiAKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0OiBTdXBwb3J0IENvbnN0cnVjdG9y
VGVtcGxhdGUgZm9yIFR5cGVkQXJyYXkgYXMgd2VsbC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXkuY3BwOiBCaW5kaW5nIHRlc3RzIHJlc3VsdHMuCisg
ICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRmxvYXQ2NEFycmF5
OjppbmRleFNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpKU0Zsb2F0NjRBcnJheUNvbnN0cnVj
dG9yOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmpzRmxvYXQ2NEFycmF5
UHJvdG90eXBlRnVuY3Rpb25Gb28pOgorICAgICAgICAoV2ViQ29yZTo6anNGbG9hdDY0QXJyYXlQ
cm90b3R5cGVGdW5jdGlvblNldCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTRmxvYXQ2NEFycmF5Lmg6IEJpbmRpbmcgdGVzdHMgcmVzdWx0cy4KKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFR5cGVkQXJyYXkuaWRsOiBCaW5kaW5nIHRlc3RzLgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHA6IEJpbmRp
bmcgdGVzdHMgcmVzdWx0cy4KKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0NjRBcnJheVY4SW50ZXJu
YWw6OnNldENhbGxiYWNrKToKKyAgICAgICAgKEZsb2F0NjRBcnJheVY4SW50ZXJuYWwpOgorICAg
ICAgICAoV2ViQ29yZTo6VjhGbG9hdDY0QXJyYXk6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhGbG9hdDY0QXJyYXlUZW1wbGF0ZSk6CisgICAgICAg
ICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RmxvYXQzMkFycmF5Q3VzdG9tLmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhGbG9hdDY0QXJyYXlDdXN0b20uY3BwOiBS
ZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEludDE2QXJyYXlDdXN0b20u
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEludDMyQXJyYXlD
dXN0b20uY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEludDhB
cnJheUN1c3RvbS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4
VWludDE2QXJyYXlDdXN0b20uY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1
c3RvbS9WOFVpbnQzMkFycmF5Q3VzdG9tLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5n
cy92OC9jdXN0b20vVjhVaW50OEFycmF5Q3VzdG9tLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBi
aW5kaW5ncy92OC9jdXN0b20vVjhVaW50OENsYW1wZWRBcnJheUN1c3RvbS5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogaHRtbC9jYW52YXMvRmxvYXQzMkFycmF5LmlkbDogVXNpbmcgW0NvbnN0cnVj
dG9yVGVtcGxhdGUgPSBUeXBlZEFycmF5XSBpbnN0ZWFkIG9mIGN1c3RvbSBpbXBsZW1lbnRhaW9u
LgorICAgICAgICAqIGh0bWwvY2FudmFzL0Zsb2F0NjRBcnJheS5pZGw6IERpdHRvLgorICAgICAg
ICAqIGh0bWwvY2FudmFzL0ludDE2QXJyYXkuaWRsOiBEaXR0by4KKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9JbnQzMkFycmF5LmlkbDogRGl0dG8uCisgICAgICAgICogaHRtbC9jYW52YXMvSW50OEFy
cmF5LmlkbDogRGl0dG8uCisgICAgICAgICogaHRtbC9jYW52YXMvVWludDE2QXJyYXkuaWRsOiBE
aXR0by4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9VaW50MzJBcnJheS5pZGw6IERpdHRvLgorICAg
ICAgICAqIGh0bWwvY2FudmFzL1VpbnQ4QXJyYXkuaWRsOiBEaXR0by4KKyAgICAgICAgKiBodG1s
L2NhbnZhcy9VaW50OENsYW1wZWRBcnJheS5pZGw6IERpdHRvLgorCiAyMDEyLTA4LTA4ICBDaHJp
cyBHdWFuICA8Y2hyaXMuZ3VhbkB0b3JjaG1vYmlsZS5jb20uY24+CiAKICAgICAgICAgW0JsYWNr
YmVycnldIG1pc3NpbmcgYSBNdWx0aXBhcnQgaGVhZGVyIHdoZW4gbV9tdWx0aXBhcnRSZXNwb25z
ZSBpcyBudWxsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDEy
NDk5MykKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29w
eSkKQEAgLTE0NjAsOCArMTQ2MCw2IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNFeGNlcHRpb25CYXNlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNFeGNlcHRpb25CYXNlLmggXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRmlsZVJlYWRlckN1c3RvbS5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRmxvYXQzMkFycmF5Q3VzdG9tLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNGbG9hdDY0QXJyYXlDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0dlb2xvY2F0aW9uQ3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNI
VE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTEFwcGxldEVsZW1lbnRDdXN0b20uY3BwIFwKQEAgLTE0OTQsOSArMTQ5Miw2IEBAIHdl
YmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3Rl
ZFNjcmlwdEhvc3RDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lu
amVjdGVkU2NyaXB0TWFuYWdlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNJbnQxNkFycmF5Q3VzdG9tLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNJbnQzMkFycmF5Q3VzdG9tLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNJbnQ4QXJyYXlDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ph
dmFTY3JpcHRDYWxsRnJhbWVDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0xhenlFdmVudExpc3RlbmVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNMYXp5RXZlbnRMaXN0ZW5lci5oIFwKQEAgLTE1NDgsMTAgKzE1NDMsNiBAQCB3ZWJjb3JlX3Nv
dXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVHJhY2tDdXN0b20uaCBc
CiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmFja0V2ZW50Q3VzdG9tLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmVlV2Fsa2VyQ3VzdG9tLmNwcCBcCi0JU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVaW50MTZBcnJheUN1c3RvbS5jcHAgXAotCVNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWludDMyQXJyYXlDdXN0b20uY3BwIFwKLQlTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQ4QXJyYXlDdXN0b20uY3BwIFwKLQlTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1VpbnQ4Q2xhbXBlZEFycmF5Q3VzdG9tLmNwcCBcCiAJU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRBbmltYXRpb25DdXN0b20uY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYktpdEFuaW1hdGlvbkxpc3RDdXN0b20uY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYktpdENTU0tleWZyYW1lUnVsZUN1c3Rv
bS5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxMjQ5OTMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsOCArMTI3LDYgQEAgU09VUkNF
UyArPSBcCiAgICAgIGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uY3BwIFwKICAgICAg
YmluZGluZ3MvanMvSlNFeGNlcHRpb25CYXNlLmNwcCBcCiAgICAgIGJpbmRpbmdzL2pzL0pTRmls
ZVJlYWRlckN1c3RvbS5jcHAgXAotICAgICBiaW5kaW5ncy9qcy9KU0Zsb2F0MzJBcnJheUN1c3Rv
bS5jcHAgXAotICAgICBiaW5kaW5ncy9qcy9KU0Zsb2F0NjRBcnJheUN1c3RvbS5jcHAgXAogICAg
ICBiaW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcCBcCiAgICAgIGJpbmRpbmdzL2pz
L0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNIVE1M
QXBwbGV0RWxlbWVudEN1c3RvbS5jcHAgXApAQCAtMTU0LDkgKzE1Miw2IEBAIFNPVVJDRVMgKz0g
XAogICAgICBiaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAgXAogICAg
ICBiaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAgXAogICAgICBiaW5kaW5n
cy9qcy9KU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAgXAotICAgICBiaW5kaW5ncy9q
cy9KU0ludDE2QXJyYXlDdXN0b20uY3BwIFwKLSAgICAgYmluZGluZ3MvanMvSlNJbnQzMkFycmF5
Q3VzdG9tLmNwcCBcCi0gICAgIGJpbmRpbmdzL2pzL0pTSW50OEFycmF5Q3VzdG9tLmNwcCBcCiAg
ICAgIGJpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuY3BwIFwKICAgICAgYmluZGluZ3Mv
anMvSlNMb2NhdGlvbkN1c3RvbS5jcHAgXAogICAgICBiaW5kaW5ncy9qcy9KU01haW5UaHJlYWRF
eGVjU3RhdGUuY3BwIFwKQEAgLTE4OCwxMCArMTgzLDYgQEAgU09VUkNFUyArPSBcCiAgICAgIGJp
bmRpbmdzL2pzL0pTVG91Y2hDdXN0b20uY3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNUb3VjaExp
c3RDdXN0b20uY3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNUcmVlV2Fsa2VyQ3VzdG9tLmNwcCBc
Ci0gICAgIGJpbmRpbmdzL2pzL0pTVWludDE2QXJyYXlDdXN0b20uY3BwIFwKLSAgICAgYmluZGlu
Z3MvanMvSlNVaW50MzJBcnJheUN1c3RvbS5jcHAgXAotICAgICBiaW5kaW5ncy9qcy9KU1VpbnQ4
QXJyYXlDdXN0b20uY3BwIFwKLSAgICAgYmluZGluZ3MvanMvSlNVaW50OENsYW1wZWRBcnJheUN1
c3RvbS5jcHAgXAogICAgICBiaW5kaW5ncy9qcy9KU1dlYktpdEFuaW1hdGlvbkN1c3RvbS5jcHAg
XAogICAgICBiaW5kaW5ncy9qcy9KU1dlYktpdEFuaW1hdGlvbkxpc3RDdXN0b20uY3BwIFwKICAg
ICAgYmluZGluZ3MvanMvSlNXZWJLaXRDU1NLZXlmcmFtZVJ1bGVDdXN0b20uY3BwIFwKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Vc2VKU0MuY21ha2UJKHJldmlzaW9uIDEyNDk5MykKKysrIFNvdXJjZS9XZWJDb3JlL1VzZUpT
Qy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtNzcsOCArNzcsNiBAQCBMSVNUKEFQUEVORCBXZWJD
b3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCiAgICAgYmlu
ZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0V4Y2Vw
dGlvbkJhc2UuY3BwCi0gICAgYmluZGluZ3MvanMvSlNGbG9hdDMyQXJyYXlDdXN0b20uY3BwCi0g
ICAgYmluZGluZ3MvanMvSlNGbG9hdDY0QXJyYXlDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMv
SlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0
aW9uQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTSFRNTEFwcGxldEVsZW1lbnRDdXN0b20u
Y3BwCkBAIC0xMDEsOSArOTksNiBAQCBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBi
aW5kaW5ncy9qcy9KU0hpc3RvcnlDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNJbWFnZUNv
bnN0cnVjdG9yLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTSW1hZ2VEYXRhQ3VzdG9tLmNwcAotICAg
IGJpbmRpbmdzL2pzL0pTSW50MTZBcnJheUN1c3RvbS5jcHAKLSAgICBiaW5kaW5ncy9qcy9KU0lu
dDMyQXJyYXlDdXN0b20uY3BwCi0gICAgYmluZGluZ3MvanMvSlNJbnQ4QXJyYXlDdXN0b20uY3Bw
CiAgICAgYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCiAgICAgYmlu
ZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCiAgICAgYmluZGluZ3MvanMvSlNJ
bnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwCkBAIC0xMzcsMTAgKzEzMiw2IEBAIExJU1Qo
QVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIGJpbmRpbmdzL2pzL0pTVG91Y2hDdXN0b20uY3Bw
CiAgICAgYmluZGluZ3MvanMvSlNUb3VjaExpc3RDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMv
SlNUcmVlV2Fsa2VyQ3VzdG9tLmNwcAotICAgIGJpbmRpbmdzL2pzL0pTVWludDE2QXJyYXlDdXN0
b20uY3BwIAotICAgIGJpbmRpbmdzL2pzL0pTVWludDMyQXJyYXlDdXN0b20uY3BwCi0gICAgYmlu
ZGluZ3MvanMvSlNVaW50OEFycmF5Q3VzdG9tLmNwcAotICAgIGJpbmRpbmdzL2pzL0pTVWludDhD
bGFtcGVkQXJyYXlDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNXZWJLaXRBbmltYXRpb25D
dXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNXZWJLaXRBbmltYXRpb25MaXN0Q3VzdG9tLmNw
cAogICAgIGJpbmRpbmdzL2pzL0pTV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlQ3VzdG9tLmNwcApJbmRl
eDogU291cmNlL1dlYkNvcmUvVXNlVjguY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvVXNlVjguY21ha2UJKHJldmlzaW9uIDEyNDk5MykKKysrIFNvdXJjZS9XZWJDb3JlL1VzZVY4
LmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsOCArMTAxLDYgQEAgTElTVChBUFBFTkQgV2Vi
Q29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRDb25zdHJ1Y3RvcnMu
Y3BwCiAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRDdXN0b20uY3BwCiAgICAgYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4RmlsZVJlYWRlckN1c3RvbS5jcHAKLSAgICBiaW5kaW5ncy92OC9jdXN0
b20vVjhGbG9hdDMyQXJyYXlDdXN0b20uY3BwCi0gICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4Rmxv
YXQ2NEFycmF5Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEdlb2xvY2F0aW9u
Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxBbGxDb2xsZWN0aW9uQ3Vz
dG9tLmNwcAogICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxDYW52YXNFbGVtZW50Q3VzdG9t
LmNwcApAQCAtMTI3LDkgKzEyNSw2IEBAIExJU1QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAg
IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKICAgICBi
aW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCiAgICAgYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcAotICAgIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOEludDE2QXJyYXlDdXN0b20uY3BwCi0gICAgYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SW50MzJBcnJheUN1c3RvbS5jcHAKLSAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhJbnQ4
QXJyYXlDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20u
Y3BwCiAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUNoYW5uZWxDb25zdHJ1Y3Rvci5j
cHAKICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwCkBAIC0x
NTIsOSArMTQ3LDYgQEAgTElTVChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3Mv
djgvY3VzdG9tL1Y4U3RvcmFnZUN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhT
dHlsZVNoZWV0Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFN0eWxlU2hlZXRM
aXN0Q3VzdG9tLmNwcAotICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFVpbnQxNkFycmF5Q3VzdG9t
LmNwcAotICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFVpbnQzMkFycmF5Q3VzdG9tLmNwcAotICAg
IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFVpbnQ4QXJyYXlDdXN0b20uY3BwCiAgICAgYmluZGluZ3Mv
djgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdz
L3Y4L2N1c3RvbS9WOFdlYktpdEFuaW1hdGlvbkN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy92OC9j
dXN0b20vVjhXZWJLaXRQb2ludENvbnN0cnVjdG9yLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQko
cmV2aXNpb24gMTI0OTkzKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5n
IGNvcHkpCkBAIC0yMDA0LDggKzIwMDQsNiBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pT
RXhjZXB0aW9uQmFzZS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRXhjZXB0aW9u
QmFzZS5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0ZpbGVSZWFkZXJDdXN0b20uY3Bw
JywKLSAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0Zsb2F0MzJBcnJheUN1c3RvbS5jcHAnLAot
ICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRmxvYXQ2NEFycmF5Q3VzdG9tLmNwcCcsCiAgICAg
ICAgICAgICAnYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAnLAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwJywKICAgICAgICAg
ICAgICdiaW5kaW5ncy9qcy9KU0hUTUxBcHBsZXRFbGVtZW50Q3VzdG9tLmNwcCcsCkBAIC0yMDQw
LDkgKzIwMzgsNiBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRI
b3N0Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlw
dE1hbmFnZXIuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0luc3BlY3RvckZyb250
ZW5kSG9zdEN1c3RvbS5jcHAnLAotICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTSW50MTZBcnJh
eUN1c3RvbS5jcHAnLAotICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTSW50MzJBcnJheUN1c3Rv
bS5jcHAnLAotICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTSW50OEFycmF5Q3VzdG9tLmNwcCcs
CiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNKYXZhU2NyaXB0QXVkaW9Ob2RlQ3VzdG9tLmNw
cCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lQ3VzdG9t
LmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAn
LApAQCAtMjA5NCw5ICsyMDg5LDYgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1RyYWNr
Q3VzdG9tLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTVHJhY2tFdmVudEN1c3RvbS5j
cHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTVHJlZVdhbGtlckN1c3RvbS5jcHAnLAot
ICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTVWludDE2QXJyYXlDdXN0b20uY3BwJywKLSAgICAg
ICAgICAgICdiaW5kaW5ncy9qcy9KU1VpbnQzMkFycmF5Q3VzdG9tLmNwcCcsCi0gICAgICAgICAg
ICAnYmluZGluZ3MvanMvSlNVaW50OEFycmF5Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmlu
ZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwJywKICAgICAgICAgICAg
ICdiaW5kaW5ncy9qcy9KU1dlYktpdEFuaW1hdGlvbkN1c3RvbS5jcHAnLAogICAgICAgICAgICAg
J2JpbmRpbmdzL2pzL0pTV2ViS2l0QW5pbWF0aW9uTGlzdEN1c3RvbS5jcHAnLApAQCAtMjM0MCw4
ICsyMzMyLDYgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhFbnRyeVN5bmND
dXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhFdmVudEN1c3Rv
bS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEZpbGVSZWFkZXJDdXN0
b20uY3BwJywKLSAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhGbG9hdDMyQXJyYXlD
dXN0b20uY3BwJywKLSAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhGbG9hdDY0QXJy
YXlDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhHZW9sb2Nh
dGlvbkN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxB
bGxDb2xsZWN0aW9uQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwJywKQEAgLTIzNjgsOSArMjM1OCw2IEBACiAg
ICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9t
LmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5zcGVjdG9y
RnJvbnRlbmRIb3N0Q3VzdG9tLmNwcCcsCi0gICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SW50MTZBcnJheUN1c3RvbS5jcHAnLAotICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEludDMyQXJyYXlDdXN0b20uY3BwJywKLSAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0
b20vVjhJbnQ4QXJyYXlDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0
b20vVjhJbnRlbnRDb25zdHJ1Y3Rvci5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEphdmFTY3JpcHRDYWxsRnJhbWVDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5k
aW5ncy92OC9jdXN0b20vVjhMb2NhdGlvbkN1c3RvbS5jcHAnLApAQCAtMjQwNCwxMCArMjM5MSw2
IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4U3R5bGVTaGVldEN1c3RvbS5j
cHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFN0eWxlU2hlZXRMaXN0Q3Vz
dG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4VHJhY2tFdmVudEN1
c3RvbS5jcHAnLAotICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFVpbnQxNkFycmF5
Q3VzdG9tLmNwcCcsCi0gICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4VWludDMyQXJy
YXlDdXN0b20uY3BwJywKLSAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhVaW50OEFy
cmF5Q3VzdG9tLmNwcCcsCi0gICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4VWludDhD
bGFtcGVkQXJyYXlDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20v
VjhXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5n
cy92OC9jdXN0b20vVjhXZWJLaXRBbmltYXRpb25DdXN0b20uY3BwJywKICAgICAgICAgICAgICdi
aW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRQb2ludENvbnN0cnVjdG9yLmNwcCcsCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAxMjQ5OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEzNzUsMTMgKzEzNzUsNiBAQAogCQk0OUVF
Q0YwRDEwNTA3MEM0MDAwOTlGQUIgLyogSlNVaW50MTZBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlFRUNFRkYxMDUwNzBDNDAwMDk5RkFCIC8q
IEpTVWludDE2QXJyYXkuaCAqLzsgfTsKIAkJNDlFRUNGMUIxMDUwNzJGMzAwMDk5RkFCIC8qIEpT
QXJyYXlCdWZmZXJWaWV3LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ5RUVDRjE5MTA1MDcyRjMwMDA5OUZBQiAvKiBKU0FycmF5QnVmZmVyVmlldy5j
cHAgKi87IH07CiAJCTQ5RUVDRjFDMTA1MDcyRjMwMDA5OUZBQiAvKiBKU0FycmF5QnVmZmVyVmll
dy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlFRUNG
MUExMDUwNzJGMzAwMDk5RkFCIC8qIEpTQXJyYXlCdWZmZXJWaWV3LmggKi87IH07Ci0JCTQ5RUVD
Rjc4MTA1MDhEOUMwMDA5OUZBQiAvKiBKU0ludDhBcnJheUN1c3RvbS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUVFQ0Y3MTEwNTA4RDlDMDAwOTlG
QUIgLyogSlNJbnQ4QXJyYXlDdXN0b20uY3BwICovOyB9OwotCQk0OUVFQ0Y3OTEwNTA4RDlDMDAw
OTlGQUIgLyogSlNGbG9hdDMyQXJyYXlDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlFRUNGNzIxMDUwOEQ5QzAwMDk5RkFCIC8qIEpTRmxv
YXQzMkFycmF5Q3VzdG9tLmNwcCAqLzsgfTsKLQkJNDlFRUNGN0ExMDUwOEQ5QzAwMDk5RkFCIC8q
IEpTSW50MzJBcnJheUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0OUVFQ0Y3MzEwNTA4RDlDMDAwOTlGQUIgLyogSlNJbnQzMkFycmF5Q3Vz
dG9tLmNwcCAqLzsgfTsKLQkJNDlFRUNGN0IxMDUwOEQ5QzAwMDk5RkFCIC8qIEpTSW50MTZBcnJh
eUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0OUVFQ0Y3NDEwNTA4RDlDMDAwOTlGQUIgLyogSlNJbnQxNkFycmF5Q3VzdG9tLmNwcCAqLzsg
fTsKLQkJNDlFRUNGN0MxMDUwOEQ5QzAwMDk5RkFCIC8qIEpTVWludDhBcnJheUN1c3RvbS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUVFQ0Y3NTEw
NTA4RDlDMDAwOTlGQUIgLyogSlNVaW50OEFycmF5Q3VzdG9tLmNwcCAqLzsgfTsKLQkJNDlFRUNG
N0QxMDUwOEQ5QzAwMDk5RkFCIC8qIEpTVWludDMyQXJyYXlDdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlFRUNGNzYxMDUwOEQ5QzAwMDk5
RkFCIC8qIEpTVWludDMyQXJyYXlDdXN0b20uY3BwICovOyB9OwotCQk0OUVFQ0Y3RTEwNTA4RDlD
MDAwOTlGQUIgLyogSlNVaW50MTZBcnJheUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUVFQ0Y3NzEwNTA4RDlDMDAwOTlGQUIgLyogSlNV
aW50MTZBcnJheUN1c3RvbS5jcHAgKi87IH07CiAJCTQ5RUVEMTQyMTA1MTk2OTQwMDA5OUZBQiAv
KiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDlFRUQxM0MxMDUxOTY5NDAwMDk5RkFCIC8qIEpTQ2FudmFz
UmVuZGVyaW5nQ29udGV4dC5jcHAgKi87IH07CiAJCTQ5RUVEMTQzMTA1MTk2OTQwMDA5OUZBQiAv
KiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RUVEMTNEMTA1MTk2OTQwMDA5OUZBQiAvKiBKU0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQuaCAqLzsgfTsKIAkJNDlFRUQxNDQxMDUxOTY5NDAwMDk5RkFCIC8qIEpT
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RUVEMTNFMTA1MTk2OTQwMDA5OUZBQiAvKiBKU0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5jcHAgKi87IH07CkBAIC0xODMwLDcgKzE4MjMsNiBAQAogCQk2RTY3
RDJBNjEyODBFOEE0MDA4NzU4RjcgLyogRXh0ZW5zaW9uczNET3BlbkdMLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNjdEMkE0MTI4MEU4QTQwMDg3
NThGNyAvKiBFeHRlbnNpb25zM0RPcGVuR0wuY3BwICovOyB9OwogCQk2RTY3RDJBNzEyODBFOEE0
MDA4NzU4RjcgLyogRXh0ZW5zaW9uczNET3BlbkdMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTY3RDJBNTEyODBFOEE0MDA4NzU4RjcgLyogRXh0ZW5z
aW9uczNET3BlbkdMLmggKi87IH07CiAJCTZFNjdEMkE5MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRl
bnNpb25zM0QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDZFNjdEMkE4MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zM0QuaCAqLzsgfTsKLQkJNkVC
QzVEODUxMzhCNENFMDAwQTBDRjhBIC8qIEpTRmxvYXQ2NEFycmF5Q3VzdG9tLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFQkM1RDg0MTM4QjRDRTAw
MEEwQ0Y4QSAvKiBKU0Zsb2F0NjRBcnJheUN1c3RvbS5jcHAgKi87IH07CiAJCTZFQkM1RUFGMTM4
QjUwRjIwMEEwQ0Y4QSAvKiBKU0Zsb2F0NjRBcnJheS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RUJDNUVBRDEzOEI1MEYyMDBBMENGOEEgLyogSlNG
bG9hdDY0QXJyYXkuY3BwICovOyB9OwogCQk2RUJDNUVCMDEzOEI1MEYyMDBBMENGOEEgLyogSlNG
bG9hdDY0QXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDZFQkM1RUFFMTM4QjUwRjIwMEEwQ0Y4QSAvKiBKU0Zsb2F0NjRBcnJheS5oICovOyB9Owog
CQk2RUJGMEU0ODEyQTg5MjYxMDBEQjE3MDkgLyogT0VTVGV4dHVyZUZsb2F0LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFQkYwRTQ1MTJBODkyNjEw
MERCMTcwOSAvKiBPRVNUZXh0dXJlRmxvYXQuY3BwICovOyB9OwpAQCAtMzEwNiw3ICszMDk4LDYg
QEAKIAkJOTAwMTc4ODExMkUwMzcwNzAwNjQ4NDYyIC8qIEpTT0VTU3RhbmRhcmREZXJpdmF0aXZl
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTAwMTc4
N0YxMkUwMzcwNzAwNjQ4NDYyIC8qIEpTT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5oICovOyB9Owog
CQk5MTA4OUQzMjE0QzMzNjAwMDA1QUZDNDkgLyogSlNVaW50OENsYW1wZWRBcnJheS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTEwODlEMzAxNEMzMzVD
RDAwNUFGQzQ5IC8qIEpTVWludDhDbGFtcGVkQXJyYXkuaCAqLzsgfTsKIAkJOTEwODlEMzMxNEMz
MzYwNTAwNUFGQzQ5IC8qIEpTVWludDhDbGFtcGVkQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTEwODlEMkYxNEMzMzVDRDAwNUFGQzQ5IC8q
IEpTVWludDhDbGFtcGVkQXJyYXkuY3BwICovOyB9OwotCQk5MUEzOTA1QjE0QzBGNjExMDBGNjc5
MDEgLyogSlNVaW50OENsYW1wZWRBcnJheUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MUEzOTA1QTE0QzBGNjExMDBGNjc5MDEgLyogSlNV
aW50OENsYW1wZWRBcnJheUN1c3RvbS5jcHAgKi87IH07CiAJCTkzMDJCMEJEMEQ3OUY4MjkwMEM3
RUU4MyAvKiBQYWdlR3JvdXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTMwMkIwQkMwRDc5RjgyOTAwQzdFRTgzIC8qIFBhZ2VHcm91cC5jcHAgKi87
IH07CiAJCTkzMDJCMEJGMEQ3OUY4MkMwMEM3RUU4MyAvKiBQYWdlR3JvdXAuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMDJCMEJFMEQ3OUY4MkMwMEM3
RUU4MyAvKiBQYWdlR3JvdXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk5MzA1QjI0RDA5OEYxQjZCMDBDMjg4NTUgLyogVGltZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMDVCMjRDMDk4RjFCNkIw
MEMyODg1NSAvKiBUaW1lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC04NTEwLDEzICs4NTAxLDYgQEAKIAkJNDlFRUNFRkYxMDUwNzBDNDAwMDk5
RkFCIC8qIEpTVWludDE2QXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNVaW50MTZBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OUVFQ0YxOTEw
NTA3MkYzMDAwOTlGQUIgLyogSlNBcnJheUJ1ZmZlclZpZXcuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNBcnJheUJ1ZmZlclZpZXcuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0OUVFQ0YxQTEwNTA3MkYzMDAwOTlGQUIgLyogSlNBcnJheUJ1ZmZl
clZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBcnJheUJ1ZmZlclZp
ZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDlFRUNGNzExMDUwOEQ5QzAwMDk5
RkFCIC8qIEpTSW50OEFycmF5Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTSW50OEFycmF5Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJNDlFRUNGNzIxMDUwOEQ5QzAwMDk5RkFCIC8qIEpTRmxvYXQzMkFycmF5Q3VzdG9tLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRmxvYXQzMkFycmF5Q3Vz
dG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDlFRUNGNzMxMDUwOEQ5QzAw
MDk5RkFCIC8qIEpTSW50MzJBcnJheUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0ludDMyQXJyYXlDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk0OUVFQ0Y3NDEwNTA4RDlDMDAwOTlGQUIgLyogSlNJbnQxNkFycmF5Q3VzdG9t
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSW50MTZBcnJheUN1
c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ5RUVDRjc1MTA1MDhEOUMw
MDA5OUZBQiAvKiBKU1VpbnQ4QXJyYXlDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNVaW50OEFycmF5Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJNDlFRUNGNzYxMDUwOEQ5QzAwMDk5RkFCIC8qIEpTVWludDMyQXJyYXlDdXN0
b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNVaW50MzJBcnJh
eUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ5RUVDRjc3MTA1MDhE
OUMwMDA5OUZBQiAvKiBKU1VpbnQxNkFycmF5Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTVWludDE2QXJyYXlDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0OUVFRDEzQzEwNTE5Njk0MDAwOTlGQUIgLyogSlNDYW52YXNSZW5k
ZXJpbmdDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
Q2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ5RUVEMTNEMTA1MTk2OTQwMDA5OUZBQiAvKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5RUVEMTNFMTA1MTk2OTQwMDA5OUZB
QiAvKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04OTkwLDcgKzg5NzQsNiBAQAogCQk2RTY3RDJBNTEyODBF
OEE0MDA4NzU4RjcgLyogRXh0ZW5zaW9uczNET3BlbkdMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEV4dGVuc2lvbnMzRE9wZW5HTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk2RTY3RDJBODEyODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9uczNELmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4dGVuc2lvbnMzRC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk2RUJDNUQ4MDEzOEI0QzRFMDBBMENGOEEgLyogRmxvYXQ2NEFycmF5
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBGbG9hdDY0QXJyYXkuaWRsOyBwYXRoID0gY2Fu
dmFzL0Zsb2F0NjRBcnJheS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTZFQkM1
RDg0MTM4QjRDRTAwMEEwQ0Y4QSAvKiBKU0Zsb2F0NjRBcnJheUN1c3RvbS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Zsb2F0NjRBcnJheUN1c3RvbS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFQkM1RUFEMTM4QjUwRjIwMEEwQ0Y4QSAvKiBK
U0Zsb2F0NjRBcnJheS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U0Zsb2F0NjRBcnJheS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFQkM1RUFF
MTM4QjUwRjIwMEEwQ0Y4QSAvKiBKU0Zsb2F0NjRBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU0Zsb2F0NjRBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk2RUJGMEU0NTEyQTg5MjYxMDBEQjE3MDkgLyogT0VTVGV4dHVyZUZsb2F0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE9FU1RleHR1cmVGbG9hdC5jcHA7IHBh
dGggPSBjYW52YXMvT0VTVGV4dHVyZUZsb2F0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTEwMjQ4LDcgKzEwMjMxLDYgQEAKIAkJOTEwODlEMkYxNEMzMzVDRDAwNUFGQzQ5IC8q
IEpTVWludDhDbGFtcGVkQXJyYXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNVaW50OENsYW1wZWRBcnJheS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTkxMDg5RDMwMTRDMzM1Q0QwMDVBRkM0OSAvKiBKU1VpbnQ4Q2xhbXBlZEFycmF5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVWludDhDbGFtcGVkQXJyYXkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTFBMzkwNTgxNEMwRjRCOTAwRjY3OTAxIC8qIFVp
bnQ4Q2xhbXBlZEFycmF5LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBVaW50OENsYW1wZWRBcnJheS5pZGw7IHBhdGggPSBj
YW52YXMvVWludDhDbGFtcGVkQXJyYXkuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk5MUEzOTA1QTE0QzBGNjExMDBGNjc5MDEgLyogSlNVaW50OENsYW1wZWRBcnJheUN1c3RvbS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1VpbnQ4Q2xhbXBlZEFy
cmF5Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMwMDYyRDcxNTlC
NDVCNjAwQUNENDhBIC8qIE5FT05IZWxwZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE5FT05IZWxwZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMDJC
MEJDMEQ3OUY4MjkwMEM3RUU4MyAvKiBQYWdlR3JvdXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUGFnZUdyb3VwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTMwMkIwQkUwRDc5RjgyQzAwQzdFRTgzIC8qIFBhZ2VHcm91cC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBQYWdlR3JvdXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTIwMjY0LDggKzIwMjQ2LDYgQEAKIAkJCQk4OTNDNDg1MjEyNDk5QjA2MDAyQjNE
ODYgLyogSlNFbnRyeVN5bmNDdXN0b20uY3BwICovLAogCQkJCUJDRUZBRjREMEMzMTdFNjkwMEZB
ODFGNiAvKiBKU0V2ZW50Q3VzdG9tLmNwcCAqLywKIAkJCQkyRTc1ODJFRDEyNzY0RjI2MDA2MjYy
OEIgLyogSlNGaWxlUmVhZGVyQ3VzdG9tLmNwcCAqLywKLQkJCQk0OUVFQ0Y3MjEwNTA4RDlDMDAw
OTlGQUIgLyogSlNGbG9hdDMyQXJyYXlDdXN0b20uY3BwICovLAotCQkJCTZFQkM1RDg0MTM4QjRD
RTAwMEEwQ0Y4QSAvKiBKU0Zsb2F0NjRBcnJheUN1c3RvbS5jcHAgKi8sCiAJCQkJRkU4MEQ3QTYw
RTlDMUVEMjAwMEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb25DdXN0b20uY3BwICovLAogCQkJCUJDRTdC
MTkyMEQ0RTg2OTYwMDc1QTUzOSAvKiBKU0hpc3RvcnlDdXN0b20uY3BwICovLAogCQkJCUJDOTdF
NDJCMTA5MTVCMDYwMDEwRDM2MSAvKiBKU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcCAqLywK
QEAgLTIwMjk4LDkgKzIwMjc4LDYgQEAKIAkJCQk3QTBFNzZENDEwQkYwNTA3MDBBMDI3NkUgLyog
SlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwICovLAogCQkJCUYzMTYzOTZEMTMyOTQ4NzYw
MEE2NDlDQiAvKiBKU0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAgKi8sCiAJCQkJN0E3NEVDQkMx
MDE4MzlEQTAwQkY5MzlFIC8qIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcCAqLywK
LQkJCQk0OUVFQ0Y3NDEwNTA4RDlDMDAwOTlGQUIgLyogSlNJbnQxNkFycmF5Q3VzdG9tLmNwcCAq
LywKLQkJCQk0OUVFQ0Y3MzEwNTA4RDlDMDAwOTlGQUIgLyogSlNJbnQzMkFycmF5Q3VzdG9tLmNw
cCAqLywKLQkJCQk0OUVFQ0Y3MTEwNTA4RDlDMDAwOTlGQUIgLyogSlNJbnQ4QXJyYXlDdXN0b20u
Y3BwICovLAogCQkJCUZERUFBQUZEMTJCMDJGNDkwMERDRjMzQiAvKiBKU0phdmFTY3JpcHRBdWRp
b05vZGVDdXN0b20uY3BwICovLAogCQkJCTFDNUZBRUU2MERDRkRBNjgwMEQ1OEY3OCAvKiBKU0ph
dmFTY3JpcHRDYWxsRnJhbWVDdXN0b20uY3BwICovLAogCQkJCUJDRTFDNDNGMEQ5ODMwRjQwMDNC
MDJGMiAvKiBKU0xvY2F0aW9uQ3VzdG9tLmNwcCAqLywKQEAgLTIwMzQyLDEwICsyMDMxOSw2IEBA
CiAJCQkJMDc4NDYzODQxNDVCMUI4RTAwQTU4REYxIC8qIEpTVHJhY2tDdXN0b20uaCAqLywKIAkJ
CQkwN0I1QTMwQTE0Njg3Qjg0MDBBODFFQ0UgLyogSlNUcmFja0V2ZW50Q3VzdG9tLmNwcCAqLywK
IAkJCQk1MTZCQjc5MjBDRTkxRTY4MDA1MTJGNzkgLyogSlNUcmVlV2Fsa2VyQ3VzdG9tLmNwcCAq
LywKLQkJCQk0OUVFQ0Y3NzEwNTA4RDlDMDAwOTlGQUIgLyogSlNVaW50MTZBcnJheUN1c3RvbS5j
cHAgKi8sCi0JCQkJNDlFRUNGNzYxMDUwOEQ5QzAwMDk5RkFCIC8qIEpTVWludDMyQXJyYXlDdXN0
b20uY3BwICovLAotCQkJCTQ5RUVDRjc1MTA1MDhEOUMwMDA5OUZBQiAvKiBKU1VpbnQ4QXJyYXlD
dXN0b20uY3BwICovLAotCQkJCTkxQTM5MDVBMTRDMEY2MTEwMEY2NzkwMSAvKiBKU1VpbnQ4Q2xh
bXBlZEFycmF5Q3VzdG9tLmNwcCAqLywKIAkJCQlGRDhFOUJERTEzRDRDRDJCMDA1MERDNzIgLyog
SlNXYXZlU2hhcGVyTm9kZUN1c3RvbS5jcHAgKi8sCiAJCQkJNDlFRUQxNEMxMDUxOTcxQTAwMDk5
RkFCIC8qIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCAqLywKIAkJCQkzMTlFNjg4
NjEzMjdDOTExMDA0QUM5MUEgLyogSlNXZWJLaXRBbmltYXRpb25DdXN0b20uY3BwICovLApAQCAt
MjcwMzYsOSArMjcwMDksNyBAQAogCQkJCTQ2REE4NDREMTIyNEEwNzEwMDYwRDAwNiAvKiBKU0Zp
bGVXcml0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODkzQzQ3QkIxMjM4QTBBOTAwMkIzRDg2
IC8qIEpTRmlsZVdyaXRlckNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5RUVDRjAy
MTA1MDcwQzQwMDA5OUZBQiAvKiBKU0Zsb2F0MzJBcnJheS5jcHAgaW4gU291cmNlcyAqLywKLQkJ
CQk0OUVFQ0Y3OTEwNTA4RDlDMDAwOTlGQUIgLyogSlNGbG9hdDMyQXJyYXlDdXN0b20uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNkVCQzVFQUYxMzhCNTBGMjAwQTBDRjhBIC8qIEpTRmxvYXQ2NEFy
cmF5LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTZFQkM1RDg1MTM4QjRDRTAwMEEwQ0Y4QSAvKiBK
U0Zsb2F0NjRBcnJheUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRTgwREE2MzBFOUM0
NzAzMDAwRDZGNzUgLyogSlNHZW9sb2NhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRTgw
RDdBQjBFOUMxRUQyMDAwRDZGNzUgLyogSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlGRTgwREE2NTBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9wb3NpdGlvbi5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTI3MTY1LDExICsyNzEzNiw4IEBACiAJCQkJN0EwRTc3MUUxMEMw
MERCMTAwQTAyNzZFIC8qIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTdBNzRFQ0JEMTAxODM5REEwMEJGOTM5RSAvKiBKU0luc3BlY3RvckZyb250ZW5kSG9z
dEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUVFQ0YwNjEwNTA3MEM0MDAwOTlGQUIg
LyogSlNJbnQxNkFycmF5LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTQ5RUVDRjdCMTA1MDhEOUMw
MDA5OUZBQiAvKiBKU0ludDE2QXJyYXlDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlF
RUNGMDQxMDUwNzBDNDAwMDk5RkFCIC8qIEpTSW50MzJBcnJheS5jcHAgaW4gU291cmNlcyAqLywK
LQkJCQk0OUVFQ0Y3QTEwNTA4RDlDMDAwOTlGQUIgLyogSlNJbnQzMkFycmF5Q3VzdG9tLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTQ5QzdCOTk1MTA0MkQyRDMwMDA5RDQ0NyAvKiBKU0ludDhBcnJh
eS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk0OUVFQ0Y3ODEwNTA4RDlDMDAwOTlGQUIgLyogSlNJ
bnQ4QXJyYXlDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkRBMTVFQ0QxMkIwM0Y2MTAw
M0E1ODNBIC8qIEpTSmF2YVNjcmlwdEF1ZGlvTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlG
REVBQUFGRTEyQjAyRjQ5MDBEQ0YzM0IgLyogSlNKYXZhU2NyaXB0QXVkaW9Ob2RlQ3VzdG9tLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTFDNUZBRUQxMERDRkQ5MDEwMEQ1OEY3OCAvKiBKU0phdmFT
Y3JpcHRDYWxsRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNzQ1MywxMyArMjc0MjEsOSBA
QAogCQkJCTUxNkJCNzk0MENFOTFFNjgwMDUxMkY3OSAvKiBKU1RyZWVXYWxrZXJDdXN0b20uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTg2NjI5RDAwOURBMkI0ODAwOTYzM0E1IC8qIEpTVUlFdmVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUVFQ0YwQzEwNTA3MEM0MDAwOTlGQUIgLyogSlNV
aW50MTZBcnJheS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk0OUVFQ0Y3RTEwNTA4RDlDMDAwOTlG
QUIgLyogSlNVaW50MTZBcnJheUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUVFQ0Yw
QTEwNTA3MEM0MDAwOTlGQUIgLyogSlNVaW50MzJBcnJheS5jcHAgaW4gU291cmNlcyAqLywKLQkJ
CQk0OUVFQ0Y3RDEwNTA4RDlDMDAwOTlGQUIgLyogSlNVaW50MzJBcnJheUN1c3RvbS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk0OUVFQ0YwODEwNTA3MEM0MDAwOTlGQUIgLyogSlNVaW50OEFycmF5
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTQ5RUVDRjdDMTA1MDhEOUMwMDA5OUZBQiAvKiBKU1Vp
bnQ4QXJyYXlDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTEwODlEMzMxNEMzMzYwNTAw
NUFGQzQ5IC8qIEpTVWludDhDbGFtcGVkQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJOTFB
MzkwNUIxNEMwRjYxMTAwRjY3OTAxIC8qIEpTVWludDhDbGFtcGVkQXJyYXlDdXN0b20uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJN0IxRUEwQ0UxNTc2QzVCNTAwNjAxNzdEIC8qIEpTVW5kb01hbmFn
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTVDNzcwOTQxMDBEM0NBODAwNUJBMjY3IC8qIEpT
VmFsaWRpdHlTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDgyRDdGNzEzRDRDOEJEMDA0
RTQzNzIgLyogSlNXYXZlU2hhcGVyTm9kZS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAkocmV2
aXNpb24gMTI0OTkzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0Fs
bEluT25lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsOCArODIsNiBAQAogI2luY2x1ZGUgIkpT
RXZlbnRMaXN0ZW5lci5jcHAiCiAjaW5jbHVkZSAiSlNFdmVudFRhcmdldEN1c3RvbS5jcHAiCiAj
aW5jbHVkZSAiSlNFeGNlcHRpb25CYXNlLmNwcCIKLSNpbmNsdWRlICJKU0Zsb2F0MzJBcnJheUN1
c3RvbS5jcHAiCi0jaW5jbHVkZSAiSlNGbG9hdDY0QXJyYXlDdXN0b20uY3BwIgogI2luY2x1ZGUg
IkpTR2VvbG9jYXRpb25DdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTSFRNTEFsbENvbGxlY3Rpb25D
dXN0b20uY3BwIgogI2luY2x1ZGUgIkpTSFRNTEFwcGxldEVsZW1lbnRDdXN0b20uY3BwIgpAQCAt
MTA5LDkgKzEwNyw2IEBACiAjaW5jbHVkZSAiSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3Bw
IgogI2luY2x1ZGUgIkpTSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCIKICNpbmNsdWRlICJKU0lu
c3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAiCi0jaW5jbHVkZSAiSlNJbnQxNkFycmF5Q3Vz
dG9tLmNwcCIKLSNpbmNsdWRlICJKU0ludDMyQXJyYXlDdXN0b20uY3BwIgotI2luY2x1ZGUgIkpT
SW50OEFycmF5Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0phdmFTY3JpcHRDYWxsRnJhbWVDdXN0
b20uY3BwIgogI2luY2x1ZGUgIkpTTGF6eUV2ZW50TGlzdGVuZXIuY3BwIgogI2luY2x1ZGUgIkpT
TG9jYXRpb25DdXN0b20uY3BwIgpAQCAtMTU0LDEwICsxNDksNiBAQAogI2luY2x1ZGUgIkpTVHJh
Y2tDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTVHJhY2tFdmVudEN1c3RvbS5jcHAiCiAjaW5jbHVk
ZSAiSlNUcmVlV2Fsa2VyQ3VzdG9tLmNwcCIKLSNpbmNsdWRlICJKU1VpbnQxNkFycmF5Q3VzdG9t
LmNwcCIKLSNpbmNsdWRlICJKU1VpbnQzMkFycmF5Q3VzdG9tLmNwcCIKLSNpbmNsdWRlICJKU1Vp
bnQ4QXJyYXlDdXN0b20uY3BwIgotI2luY2x1ZGUgIkpTVWludDhDbGFtcGVkQXJyYXlDdXN0b20u
Y3BwIgogI2luY2x1ZGUgIkpTV2ViS2l0QW5pbWF0aW9uQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJK
U1dlYktpdEFuaW1hdGlvbkxpc3RDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTV2ViS2l0Q1NTS2V5
ZnJhbWVSdWxlQ3VzdG9tLmNwcCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RmxvYXQzMkFycmF5Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0Zsb2F0MzJBcnJheUN1c3RvbS5jcHAJKHJldmlzaW9uIDEyNDk5MykKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmxvYXQzMkFycmF5Q3VzdG9tLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIkpTRmxvYXQzMkFycmF5LmgiCi0KLSNpbmNsdWRlICJKU0FycmF5QnVmZmVyVmll
d0hlbHBlci5oIgotI2luY2x1ZGUgPHd0Zi9GbG9hdDMyQXJyYXkuaD4KLQotdXNpbmcgbmFtZXNw
YWNlIEpTQzsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIEpTRmxvYXQzMkFycmF5Ojpp
bmRleFNldHRlcihKU0M6OkV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW5kZXgsIEpTQzo6SlNW
YWx1ZSB2YWx1ZSkKLXsKLSAgICBpbXBsKCktPnNldChpbmRleCwgc3RhdGljX2Nhc3Q8ZmxvYXQ+
KHZhbHVlLnRvTnVtYmVyKGV4ZWMpKSk7Ci19Ci0KLUpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhl
Y1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBGbG9hdDMyQXJy
YXkqIG9iamVjdCkKLXsKLSAgICByZXR1cm4gdG9KU0FycmF5QnVmZmVyVmlldzxKU0Zsb2F0MzJB
cnJheT4oZXhlYywgZ2xvYmFsT2JqZWN0LCBvYmplY3QpOwotfQotCi1KU0M6OkpTVmFsdWUgSlNG
bG9hdDMyQXJyYXk6OnNldChKU0M6OkV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICByZXR1cm4gc2V0
V2ViR0xBcnJheUhlbHBlcjxGbG9hdDMyQXJyYXksIGZsb2F0PihleGVjLCBpbXBsKCkpOwotfQot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0Zsb2F0NjRBcnJheUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNGbG9hdDY0QXJyYXlDdXN0b20uY3BwCShyZXZpc2lvbiAxMjQ5OTMpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Zsb2F0NjRBcnJheUN1c3RvbS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJKU0Zsb2F0NjRBcnJheS5oIgotCi0jaW5jbHVkZSAiSlNBcnJheUJ1ZmZl
clZpZXdIZWxwZXIuaCIKLSNpbmNsdWRlIDx3dGYvRmxvYXQ2NEFycmF5Lmg+Ci0KLXVzaW5nIG5h
bWVzcGFjZSBKU0M7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBKU0Zsb2F0NjRBcnJh
eTo6aW5kZXhTZXR0ZXIoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGluZGV4LCBKU0M6
OkpTVmFsdWUgdmFsdWUpCi17Ci0gICAgaW1wbCgpLT5zZXQoaW5kZXgsIHZhbHVlLnRvTnVtYmVy
KGV4ZWMpKTsKLX0KLQotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEZsb2F0NjRBcnJheSogb2JqZWN0KQotewot
ICAgIHJldHVybiB0b0pTQXJyYXlCdWZmZXJWaWV3PEpTRmxvYXQ2NEFycmF5PihleGVjLCBnbG9i
YWxPYmplY3QsIG9iamVjdCk7Ci19Ci0KLUpTQzo6SlNWYWx1ZSBKU0Zsb2F0NjRBcnJheTo6c2V0
KEpTQzo6RXhlY1N0YXRlKiBleGVjKQotewotICAgIHJldHVybiBzZXRXZWJHTEFycmF5SGVscGVy
PEZsb2F0NjRBcnJheSwgZG91YmxlPihleGVjLCBpbXBsKCkpOwotfQotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ludDhBcnJheUN1
c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnQ4
QXJyYXlDdXN0b20uY3BwCShyZXZpc2lvbiAxMjQ5OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0ludDhBcnJheUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNTIgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJKU0ludDhBcnJh
eS5oIgotCi0jaW5jbHVkZSAiSlNBcnJheUJ1ZmZlclZpZXdIZWxwZXIuaCIKLSNpbmNsdWRlIDxy
dW50aW1lL0Vycm9yLmg+Ci0jaW5jbHVkZSA8d3RmL0ludDhBcnJheS5oPgotCi11c2luZyBuYW1l
c3BhY2UgSlNDOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgSlNJbnQ4QXJyYXk6Omlu
ZGV4U2V0dGVyKEpTQzo6RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbmRleCwgSlNDOjpKU1Zh
bHVlIHZhbHVlKQotewotICAgIGltcGwoKS0+c2V0KGluZGV4LCBzdGF0aWNfY2FzdDxzaWduZWQg
Y2hhcj4odmFsdWUudG9JbnQzMihleGVjKSkpOwotfQotCi1KU0M6OkpTVmFsdWUgdG9KUyhKU0M6
OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSW50OEFy
cmF5KiBvYmplY3QpCi17Ci0gICAgcmV0dXJuIHRvSlNBcnJheUJ1ZmZlclZpZXc8SlNJbnQ4QXJy
YXk+KGV4ZWMsIGdsb2JhbE9iamVjdCwgb2JqZWN0KTsKLX0KLQotSlNDOjpKU1ZhbHVlIEpTSW50
OEFycmF5OjpzZXQoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgcmV0dXJuIHNldFdlYkdM
QXJyYXlIZWxwZXI8SW50OEFycmF5LCBzaWduZWQgY2hhcj4oZXhlYywgaW1wbCgpKTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNJbnQxNkFycmF5Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0ludDE2QXJyYXlDdXN0b20uY3BwCShyZXZpc2lvbiAxMjQ5OTMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ludDE2QXJyYXlDdXN0b20uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiSlNJbnQxNkFycmF5LmgiCi0KLSNpbmNsdWRlICJKU0FycmF5QnVmZmVyVmlld0hlbHBl
ci5oIgotI2luY2x1ZGUgPHd0Zi9JbnQxNkFycmF5Lmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBKU0M7
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBKU0ludDE2QXJyYXk6OmluZGV4U2V0dGVy
KEpTQzo6RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbmRleCwgSlNDOjpKU1ZhbHVlIHZhbHVl
KQotewotICAgIGltcGwoKS0+c2V0KGluZGV4LCBzdGF0aWNfY2FzdDxzaWduZWQgc2hvcnQ+KHZh
bHVlLnRvSW50MzIoZXhlYykpKTsKLX0KLQotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEludDE2QXJyYXkqIG9i
amVjdCkKLXsKLSAgICByZXR1cm4gdG9KU0FycmF5QnVmZmVyVmlldzxKU0ludDE2QXJyYXk+KGV4
ZWMsIGdsb2JhbE9iamVjdCwgb2JqZWN0KTsKLX0KLQotSlNDOjpKU1ZhbHVlIEpTSW50MTZBcnJh
eTo6c2V0KEpTQzo6RXhlY1N0YXRlKiBleGVjKQotewotICAgIHJldHVybiBzZXRXZWJHTEFycmF5
SGVscGVyPEludDE2QXJyYXksIHNob3J0PihleGVjLCBpbXBsKCkpOwotfQotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ludDMyQXJy
YXlDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SW50MzJBcnJheUN1c3RvbS5jcHAJKHJldmlzaW9uIDEyNDk5MykKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSW50MzJBcnJheUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJKU0lu
dDMyQXJyYXkuaCIKLQotI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJWaWV3SGVscGVyLmgiCi0jaW5j
bHVkZSA8d3RmL0ludDMyQXJyYXkuaD4KLQotdXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi12b2lkIEpTSW50MzJBcnJheTo6aW5kZXhTZXR0ZXIoSlNDOjpFeGVj
U3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGluZGV4LCBKU0M6OkpTVmFsdWUgdmFsdWUpCi17Ci0gICAg
aW1wbCgpLT5zZXQoaW5kZXgsIHN0YXRpY19jYXN0PHNpZ25lZCBpbnQ+KHZhbHVlLnRvSW50MzIo
ZXhlYykpKTsKLX0KLQotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEludDMyQXJyYXkqIG9iamVjdCkKLXsKLSAg
ICByZXR1cm4gdG9KU0FycmF5QnVmZmVyVmlldzxKU0ludDMyQXJyYXk+KGV4ZWMsIGdsb2JhbE9i
amVjdCwgb2JqZWN0KTsKLX0KLQotSlNDOjpKU1ZhbHVlIEpTSW50MzJBcnJheTo6c2V0KEpTQzo6
RXhlY1N0YXRlKiBleGVjKQotewotICAgIHJldHVybiBzZXRXZWJHTEFycmF5SGVscGVyPEludDMy
QXJyYXksIGludD4oZXhlYywgaW1wbCgpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVaW50OEFycmF5Q3VzdG9tLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQ4QXJyYXlDdXN0
b20uY3BwCShyZXZpc2lvbiAxMjQ5OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1VpbnQ4QXJyYXlDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUxICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVU
RVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRF
UiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSlNVaW50OEFycmF5LmgiCi0K
LSNpbmNsdWRlICJKU0FycmF5QnVmZmVyVmlld0hlbHBlci5oIgotI2luY2x1ZGUgPHd0Zi9VaW50
OEFycmF5Lmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotdm9pZCBKU1VpbnQ4QXJyYXk6OmluZGV4U2V0dGVyKEpTQzo6RXhlY1N0YXRlKiBleGVjLCB1
bnNpZ25lZCBpbmRleCwgSlNDOjpKU1ZhbHVlIHZhbHVlKQotewotICAgIGltcGwoKS0+c2V0KGlu
ZGV4LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPih2YWx1ZS50b0ludDMyKGV4ZWMpKSk7Ci19
Ci0KLUpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBVaW50OEFycmF5KiBvYmplY3QpCi17Ci0gICAgcmV0dXJuIHRv
SlNBcnJheUJ1ZmZlclZpZXc8SlNVaW50OEFycmF5PihleGVjLCBnbG9iYWxPYmplY3QsIG9iamVj
dCk7Ci19Ci0KLUpTQzo6SlNWYWx1ZSBKU1VpbnQ4QXJyYXk6OnNldChKU0M6OkV4ZWNTdGF0ZSog
ZXhlYykKLXsKLSAgICByZXR1cm4gc2V0V2ViR0xBcnJheUhlbHBlcjxVaW50OEFycmF5LCB1bnNp
Z25lZCBjaGFyPihleGVjLCBpbXBsKCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQ4Q2xhbXBlZEFycmF5Q3VzdG9t
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQ4Q2xh
bXBlZEFycmF5Q3VzdG9tLmNwcAkocmV2aXNpb24gMTI0OTkzKQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNVaW50OENsYW1wZWRBcnJheUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IkpTVWludDhDbGFtcGVkQXJyYXkuaCIKLQotI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJWaWV3SGVs
cGVyLmgiCi0jaW5jbHVkZSA8d3RmL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+Ci0KLXVzaW5nIG5hbWVz
cGFjZSBKU0M7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBKU1VpbnQ4Q2xhbXBlZEFy
cmF5OjppbmRleFNldHRlcihKU0M6OkV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW5kZXgsIEpT
Qzo6SlNWYWx1ZSB2YWx1ZSkKLXsKLSAgICBpbXBsKCktPnNldChpbmRleCwgdmFsdWUudG9OdW1i
ZXIoZXhlYykpOwotfQotCi1KU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVWludDhDbGFtcGVkQXJyYXkqIG9iamVj
dCkKLXsKLSAgICByZXR1cm4gdG9KU0FycmF5QnVmZmVyVmlldzxKU1VpbnQ4Q2xhbXBlZEFycmF5
PihleGVjLCBnbG9iYWxPYmplY3QsIG9iamVjdCk7Ci19Ci0KLUpTQzo6SlNWYWx1ZSBKU1VpbnQ4
Q2xhbXBlZEFycmF5OjpzZXQoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgcmV0dXJuIHNl
dFdlYkdMQXJyYXlIZWxwZXI8VWludDhDbGFtcGVkQXJyYXksIHVuc2lnbmVkIGNoYXI+KGV4ZWMs
IGltcGwoKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTVWludDE2QXJyYXlDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWludDE2QXJyYXlDdXN0b20uY3BwCShyZXZpc2lv
biAxMjQ5OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQxNkFycmF5Q3Vz
dG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkpTVWludDE2QXJyYXkuaCIKLQotI2luY2x1ZGUgIkpT
QXJyYXlCdWZmZXJWaWV3SGVscGVyLmgiCi0jaW5jbHVkZSA8d3RmL1VpbnQxNkFycmF5Lmg+Ci0K
LXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBKU1Vp
bnQxNkFycmF5OjppbmRleFNldHRlcihKU0M6OkV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW5k
ZXgsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKLXsKLSAgICBpbXBsKCktPnNldChpbmRleCwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgc2hvcnQ+KHZhbHVlLnRvSW50MzIoZXhlYykpKTsKLX0KLQotSlNDOjpK
U1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFVpbnQxNkFycmF5KiBvYmplY3QpCi17Ci0gICAgcmV0dXJuIHRvSlNBcnJheUJ1
ZmZlclZpZXc8SlNVaW50MTZBcnJheT4oZXhlYywgZ2xvYmFsT2JqZWN0LCBvYmplY3QpOwotfQot
Ci1KU0M6OkpTVmFsdWUgSlNVaW50MTZBcnJheTo6c2V0KEpTQzo6RXhlY1N0YXRlKiBleGVjKQot
ewotICAgIHJldHVybiBzZXRXZWJHTEFycmF5SGVscGVyPFVpbnQxNkFycmF5LCB1bnNpZ25lZCBz
aG9ydD4oZXhlYywgaW1wbCgpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVaW50MzJBcnJheUN1c3RvbS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVaW50MzJBcnJheUN1c3RvbS5j
cHAJKHJldmlzaW9uIDEyNDk5MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWlu
dDMyQXJyYXlDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUxICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSlNVaW50MzJBcnJheS5oIgotCi0j
aW5jbHVkZSAiSlNBcnJheUJ1ZmZlclZpZXdIZWxwZXIuaCIKLSNpbmNsdWRlIDx3dGYvVWludDMy
QXJyYXkuaD4KLQotdXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci12b2lkIEpTVWludDMyQXJyYXk6OmluZGV4U2V0dGVyKEpTQzo6RXhlY1N0YXRlKiBleGVjLCB1
bnNpZ25lZCBpbmRleCwgSlNDOjpKU1ZhbHVlIHZhbHVlKQotewotICAgIGltcGwoKS0+c2V0KGlu
ZGV4LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHZhbHVlLnRvVUludDMyKGV4ZWMpKSk7Ci19
Ci0KLUpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBVaW50MzJBcnJheSogb2JqZWN0KQotewotICAgIHJldHVybiB0
b0pTQXJyYXlCdWZmZXJWaWV3PEpTVWludDMyQXJyYXk+KGV4ZWMsIGdsb2JhbE9iamVjdCwgb2Jq
ZWN0KTsKLX0KLQotSlNDOjpKU1ZhbHVlIEpTVWludDMyQXJyYXk6OnNldChKU0M6OkV4ZWNTdGF0
ZSogZXhlYykKLXsKLSAgICByZXR1cm4gc2V0V2ViR0xBcnJheUhlbHBlcjxVaW50MzJBcnJheSwg
dW5zaWduZWQgaW50PihleGVjLCBpbXBsKCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JDUFAu
cG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yQ1BQLnBtCShyZXZpc2lvbiAxMjQ5OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JDUFAucG0JKHdvcmtpbmcgY29weSkKQEAgLTQ5MSw2ICs0
OTEsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICBpZiAoJG51bUZ1bmN0aW9ucyA+IDApIHsK
ICAgICAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEB7JGRhdGFOb2RlLT5mdW5jdGlvbnN9KSB7
CiAgICAgICAgICAgICBuZXh0IGlmIFNraXBGdW5jdGlvbigkZnVuY3Rpb24pOworICAgICAgICAg
ICAgbmV4dCBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUgZXEgInNldCIgYW5kICRkYXRh
Tm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlR5cGVkQXJyYXkifSk7CiAgICAgICAgICAgICBt
eSAkZnVuY3Rpb25OYW1lID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJJbXBsZW1lbnRlZEFzIn0gfHwgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWU7CiAKICAg
ICAgICAgICAgIG15ICRyZXR1cm5UeXBlID0gR2V0Q1BQVHlwZSgkZnVuY3Rpb24tPnNpZ25hdHVy
ZS0+dHlwZSwgMCk7CkBAIC04MTIsNiArODEzLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRp
b24KICAgICAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEB7JGRhdGFOb2RlLT5mdW5jdGlvbnN9
KSB7CiAgICAgICAgICAgICAjIFRyZWF0IENQUFB1cmVJbnRlcmZhY2UgYXMgQ3VzdG9tIGFzIHdl
bGwsIHNpbmNlIHRoZSBXZWJDb3JlIHZlcnNpb25zIHdpbGwgdGFrZSBhIHNjcmlwdCBjb250ZXh0
IGFzIHdlbGwKICAgICAgICAgICAgIG5leHQgaWYgU2tpcEZ1bmN0aW9uKCRmdW5jdGlvbikgfHwg
JGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ1BQUHVyZUludGVyZmFjZSJ9OworICAg
ICAgICAgICAgbmV4dCBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUgZXEgInNldCIgYW5k
ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlR5cGVkQXJyYXkifSk7CiAgICAgICAg
ICAgICBBZGRJbmNsdWRlc0ZvclR5cGUoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPnR5cGUpOwogCiAg
ICAgICAgICAgICBteSAkZnVuY3Rpb25OYW1lID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWU7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2Jq
ZWN0LnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckdPYmplY3QucG0JKHJldmlzaW9uIDEyNDk5MykKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3QucG0JKHdvcmtpbmcgY29weSkK
QEAgLTgwMCw2ICs4MDAsOCBAQCBzdWIgR2VuZXJhdGVGdW5jdGlvbiB7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKKyAgICByZXR1cm4gaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lIGVx
ICJzZXQiIGFuZCAkcGFyZW50Tm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlR5cGVkQXJyYXki
fSk7CisKICAgICBteSAkZnVuY3Rpb25TaWdOYW1lID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5h
bWU7CiAgICAgbXkgJGZ1bmN0aW9uU2lnVHlwZSA9ICRwcmVmaXggZXEgInNldF8iID8gInZvaWQi
IDogJGZ1bmN0aW9uLT5zaWduYXR1cmUtPnR5cGU7CiAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9ICJ3
ZWJraXRfZG9tXyIgLiAkZGVjYW1lbGl6ZSAuICJfIiAuICRwcmVmaXggLiBkZWNhbWVsaXplKCRm
dW5jdGlvblNpZ05hbWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDEyNDk5MykKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkp
CkBAIC0yMjEzLDcgKzIyMTMsOSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAg
ICAgICAgICAgIGlmICgkaXNDdXN0b20pIHsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT4iIC4gJGZ1
bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lIC4gIihleGVjKSk7XG4iKTsKICAgICAgICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAk
aW1wbFR5cGUqIGltcGwgPSBzdGF0aWNfY2FzdDwkaW1wbFR5cGUqPihjYXN0ZWRUaGlzLT5pbXBs
KCkpO1xuIik7CisgICAgICAgICAgICAgICAgICAgIGlmICghKCRmdW5jdGlvbi0+c2lnbmF0dXJl
LT5uYW1lIGVxICJzZXQiIGFuZCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJUeXBl
ZEFycmF5In0pKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAkaW1wbFR5cGUqIGltcGwgPSBzdGF0aWNfY2FzdDwkaW1wbFR5cGUqPihjYXN0ZWRUaGlz
LT5pbXBsKCkpO1xuIik7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICAgaWYgKCRzdmdQcm9wZXJ0eVR5cGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIGlmIChpbXBsLT5pc1JlYWRPbmx5KCkpIHtcbiIpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHNldERPTUV4Y2Vw
dGlvbihleGVjLCBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlIpO1xuIik7CkBAIC0yMjQzLDcg
KzIyNDUsMTIgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgICAgICAgICAgICAg
ICAgICAgICAgbXkgJG51bVBhcmFtZXRlcnMgPSBAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc307CiAg
ICAgICAgICAgICAgICAgICAgICAgICBteSAoJGZ1bmN0aW9uU3RyaW5nLCAkZHVtbXkpID0gR2Vu
ZXJhdGVQYXJhbWV0ZXJzQ2hlY2soXEBpbXBsQ29udGVudCwgJGZ1bmN0aW9uLCAkZGF0YU5vZGUs
ICRudW1QYXJhbWV0ZXJzLCAkaW1wbENsYXNzTmFtZSwgJGZ1bmN0aW9uSW1wbGVtZW50YXRpb25O
YW1lLCAkc3ZnUHJvcGVydHlUeXBlLCAkc3ZnUHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5cGUsICRz
dmdMaXN0UHJvcGVydHlUeXBlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlSW1w
bGVtZW50YXRpb25GdW5jdGlvbkNhbGwoJGZ1bmN0aW9uLCAkZnVuY3Rpb25TdHJpbmcsICIgICAg
IiwgJHN2Z1Byb3BlcnR5VHlwZSwgJGltcGxDbGFzc05hbWUpOworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lIGVxICJzZXQiIGFuZCAkZGF0YU5v
ZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJUeXBlZEFycmF5In0pIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBteSAkdmlld1R5cGUgPSAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJUeXBlZEFycmF5In07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzZXRXZWJHTEFycmF5SGVscGVy
PCRpbXBsVHlwZSwgJHZpZXdUeXBlPihleGVjLCBjYXN0ZWRUaGlzLT5pbXBsKCkpKTtcbiIpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHZW5lcmF0ZUltcGxlbWVudGF0aW9uRnVuY3Rpb25DYWxsKCRmdW5jdGlvbiwgJGZ1bmN0
aW9uU3RyaW5nLCAiICAgICIsICRzdmdQcm9wZXJ0eVR5cGUsICRpbXBsQ2xhc3NOYW1lKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTM3MjIsNiArMzcyOSwzMCBAQCBFTkQKIH0KIAog
RU5ECisgICAgICAgIH0gZWxzaWYgKElzQ29uc3RydWN0b3JUZW1wbGF0ZSgkZGF0YU5vZGUsICJU
eXBlZEFycmF5IikpIHsKKyAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkpTQXJyYXlCdWZmZXJW
aWV3SGVscGVyLmgifSA9IDE7CisgICAgICAgICAgICBteSAkdmlld1R5cGUgPSAkZGF0YU5vZGUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJUeXBlZEFycmF5In07CisgICAgICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICJFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7Y29uc3RydWN0b3JD
bGFzc05hbWV9Ojpjb25zdHJ1Y3Qke2NsYXNzTmFtZX0oRXhlY1N0YXRlKiBleGVjKVxuIik7Cisg
ICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsKKyAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfSoganNDb25zdHJ1Y3Rv
ciA9IGpzQ2FzdDwke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfSo+KGV4ZWMtPmNhbGxlZSgpKTtcbiIp
OworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFJlZlB0cjwkaW50ZXJmYWNl
TmFtZT4gYXJyYXkgPSBjb25zdHJ1Y3RBcnJheUJ1ZmZlclZpZXc8JGludGVyZmFjZU5hbWUsICR2
aWV3VHlwZT4oZXhlYyk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICBpZiAoIWFycmF5LmdldCgpKVxuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgICAgIC8vIEV4Y2VwdGlvbiBoYXMgYWxyZWFkeSBiZWVuIHRocm93bi5cbiIpOworICAg
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTVmFsdWUoKSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzT2JqZWN0KHRvSlMoZXhlYywganNDb25zdHJ1Y3Rv
ci0+Z2xvYmFsT2JqZWN0KCksIGFycmF5LmdldCgpKSkpO1xuIik7CisgICAgICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICJ9XG5cbiIpOworCisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICJKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgJHtpbnRlcmZhY2VOYW1lfSogb2JqZWN0KVxuIik7CisgICAg
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICByZXR1cm4gdG9KU0FycmF5QnVmZmVyVmlldzwke2NsYXNzTmFtZX0+
KGV4ZWMsIGdsb2JhbE9iamVjdCwgb2JqZWN0KTtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAifVxuXG4iKTsKKworICAgICAgICAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUluZGV4ZWRTZXR0ZXIifSkgeworICAgICAgICAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgInZvaWQgJHtjbGFzc05hbWV9OjppbmRleFNldHRlcihKU0M6
OkV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW5kZXgsIEpTQzo6SlNWYWx1ZSB2YWx1ZSlcbiIp
OworICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOworICAgICAgICAg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpbXBsKCktPnNldChpbmRleCwgdmFsdWUu
dG9OdW1iZXIoZXhlYykpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAifVxuXG4iKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNpZiAoISgkZGF0YU5vZGUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0N1c3RvbUNvbnN0cnVjdG9yIn0gfHwgJGRhdGFOb2Rl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tQ29uc3RydWN0b3IifSkgJiYgKCEkZGF0YU5v
ZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOYW1lZENvbnN0cnVjdG9yIn0gfHwgJGdlbmVyYXRp
bmdOYW1lZENvbnN0cnVjdG9yKSkgewogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6Y29u
c3RydWN0JHtjbGFzc05hbWV9KEV4ZWNTdGF0ZSogZXhlYylcbiIpOwogICAgICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAie1xuIik7CkBAIC0zNzkxLDIwICszODIyLDYgQEAgRU5ECiAgICAg
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuIENvbnN0cnVjdFR5cGVIb3N0
O1xuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ9XG5cbiIpOwogICAgICAg
ICB9Ci0KLSAgICAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlR5cGVk
QXJyYXkifSkgewotICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siSlNBcnJheUJ1ZmZlclZpZXdI
ZWxwZXIuaCJ9ID0gMTsKLSAgICAgICAgICAgIG15ICR2aWV3VHlwZSA9ICRkYXRhTm9kZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IlR5cGVkQXJyYXkifTsKLSAgICAgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgJHtjb25zdHJ1Y3RvckNsYXNz
TmFtZX06OmNvbnN0cnVjdCR7Y2xhc3NOYW1lfShFeGVjU3RhdGUqIGV4ZWMpXG4iKTsKLSAgICAg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOwotICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgICR7Y29uc3RydWN0b3JDbGFzc05hbWV9KiBqc0NvbnN0cnVjdG9yID0g
anNDYXN0PCR7Y29uc3RydWN0b3JDbGFzc05hbWV9Kj4oZXhlYy0+Y2FsbGVlKCkpO1xuIik7Ci0g
ICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgUmVmUHRyPCRpbnRlcmZhY2VOYW1l
PiBhcnJheSA9IGNvbnN0cnVjdEFycmF5QnVmZmVyVmlldzwkaW50ZXJmYWNlTmFtZSwgJHZpZXdU
eXBlPihleGVjKTtcbiIpOwotICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlm
ICghYXJyYXkuZ2V0KCkpXG4iKTsKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICAgICAgLy8gRXhjZXB0aW9uIGhhcyBhbHJlYWR5IGJlZW4gdGhyb3duLlxuIik7Ci0gICAgICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNWYWx1ZSgpKTtcbiIpOwotICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoYXNPYmplY3QodG9KUyhleGVjLCBqc0NvbnN0cnVjdG9yLT5n
bG9iYWxPYmplY3QoKSwgYXJyYXkuZ2V0KCkpKSk7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIn1cblxuIik7Ci0gICAgICAgIH0KICAgICB9CiB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5w
bQkocmV2aXNpb24gMTI0OTkzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yT2JqQy5wbQkod29ya2luZyBjb3B5KQpAQCAtODgxLDYgKzg4MSw3IEBAIHN1
YiBHZW5lcmF0ZUhlYWRlcgogICAgIGlmICgkbnVtRnVuY3Rpb25zID4gMCkgewogICAgICAgICBm
b3JlYWNoIG15ICRmdW5jdGlvbiAoQHskZGF0YU5vZGUtPmZ1bmN0aW9uc30pIHsKICAgICAgICAg
ICAgIG5leHQgaWYgU2tpcEZ1bmN0aW9uKCRmdW5jdGlvbik7CisgICAgICAgICAgICBuZXh0IGlm
ICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSBlcSAic2V0IiBhbmQgJGRhdGFOb2RlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiVHlwZWRBcnJheSJ9KTsKICAgICAgICAgICAgIG15ICRmdW5jdGlv
bk5hbWUgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZTsKIAogICAgICAgICAgICAgbXkgJHJl
dHVyblR5cGUgPSBHZXRPYmpDVHlwZSgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+dHlwZSk7CkBAIC0x
NTAxLDYgKzE1MDIsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgIGlmICgkbnVt
RnVuY3Rpb25zID4gMCkgewogICAgICAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQHskZGF0YU5v
ZGUtPmZ1bmN0aW9uc30pIHsKICAgICAgICAgICAgIG5leHQgaWYgU2tpcEZ1bmN0aW9uKCRmdW5j
dGlvbik7CisgICAgICAgICAgICBuZXh0IGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSBl
cSAic2V0IiBhbmQgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVHlwZWRBcnJheSJ9
KTsKICAgICAgICAgICAgIEFkZEluY2x1ZGVzRm9yVHlwZSgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+
dHlwZSk7CiAKICAgICAgICAgICAgIG15ICRmdW5jdGlvbk5hbWUgPSAkZnVuY3Rpb24tPnNpZ25h
dHVyZS0+bmFtZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvclY4LnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvclY4LnBtCShyZXZpc2lvbiAxMjQ5OTMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQkod29ya2luZyBjb3B5KQpAQCAt
MTQ3NCw2ICsxNDc0LDE2IEBAIEVORAogCiAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgR2Vu
ZXJhdGVBcmd1bWVudHNDb3VudENoZWNrKCRmdW5jdGlvbiwgJGRhdGFOb2RlKSk7CiAKKyAgICBp
ZiAoJG5hbWUgZXEgInNldCIgYW5kICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlR5
cGVkQXJyYXkifSkgeworICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiVjhBcnJheUJ1ZmZlclZp
ZXdDdXN0b20uaCIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7Cisg
ICAgcmV0dXJuIHNldFdlYkdMQXJyYXlIZWxwZXI8JGltcGxDbGFzc05hbWUsIFY4JHtpbXBsQ2xh
c3NOYW1lfT4oYXJncyk7Cit9CisKK0VORAorICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAg
bXkgKCRzdmdQcm9wZXJ0eVR5cGUsICRzdmdMaXN0UHJvcGVydHlUeXBlLCAkc3ZnTmF0aXZlVHlw
ZSkgPSBHZXRTVkdQcm9wZXJ0eVR5cGVzKCRpbXBsQ2xhc3NOYW1lKTsKIAogICAgIGlmICgkc3Zn
TmF0aXZlVHlwZSkgewpAQCAtMTkzMiw2ICsxOTQyLDI0IEBAIEVORAogRU5ECiB9CiAKK3N1YiBH
ZW5lcmF0ZVR5cGVkQXJyYXlDb25zdHJ1Y3RvckNhbGxiYWNrCit7CisgICAgbXkgJGRhdGFOb2Rl
ID0gc2hpZnQ7CisgICAgbXkgJGltcGxDbGFzc05hbWUgPSBzaGlmdDsKKyAgICBteSAkdmlld1R5
cGUgPSBHZXRUeXBlTmFtZU9mRXh0ZXJuYWxUeXBlZEFycmF5KCRkYXRhTm9kZSk7CisgICAgbXkg
JHR5cGUgPSAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJUeXBlZEFycmF5In07Cisg
ICAgQWRkVG9JbXBsSW5jbHVkZXMoIlY4QXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmgiKTsKKworICAg
IHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7Cit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjgke2lt
cGxDbGFzc05hbWV9Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uJHtpbXBsQ2xhc3NOYW1lfS5Db250cnVjdG9yIik7
CisgICAgcmV0dXJuIGNvbnN0cnVjdFdlYkdMQXJyYXk8JGltcGxDbGFzc05hbWUsIFY4JHtpbXBs
Q2xhc3NOYW1lfSwgJHR5cGU+KGFyZ3MsICZpbmZvLCAkdmlld1R5cGUpOworfQorCitFTkQKK30K
Kwogc3ViIEdlbmVyYXRlTmFtZWRDb25zdHJ1Y3RvckNhbGxiYWNrCiB7CiAgICAgbXkgJGZ1bmN0
aW9uID0gc2hpZnQ7CkBAIC0yNzU4LDYgKzI3ODYsOCBAQCBFTkQKICAgICAgICAgR2VuZXJhdGVD
b25zdHJ1Y3RvckNhbGxiYWNrKCRkYXRhTm9kZS0+Y29uc3RydWN0b3IsICRkYXRhTm9kZSwgJGlu
dGVyZmFjZU5hbWUpOwogICAgIH0gZWxzaWYgKElzQ29uc3RydWN0b3JUZW1wbGF0ZSgkZGF0YU5v
ZGUsICJFdmVudCIpKSB7CiAgICAgICAgIEdlbmVyYXRlRXZlbnRDb25zdHJ1Y3RvckNhbGxiYWNr
KCRkYXRhTm9kZSwgJGludGVyZmFjZU5hbWUpOworICAgIH0gZWxzaWYgKElzQ29uc3RydWN0b3JU
ZW1wbGF0ZSgkZGF0YU5vZGUsICJUeXBlZEFycmF5IikpIHsKKyAgICAgICAgR2VuZXJhdGVUeXBl
ZEFycmF5Q29uc3RydWN0b3JDYWxsYmFjaygkZGF0YU5vZGUsICRpbnRlcmZhY2VOYW1lKTsKICAg
ICB9CiAKICAgICBteSAkYWNjZXNzX2NoZWNrID0gIiI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy50eHQJKHJldmlzaW9uIDEyNDk5
MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAgQ29uZGl0aW9uYWw9KgogQ29uc3RydWN0
b3IKIENvbnN0cnVjdG9yUGFyYW1ldGVycz0qCiBDb25zdHJ1Y3RvclJhaXNlc0V4Y2VwdGlvbgot
Q29uc3RydWN0b3JUZW1wbGF0ZT1FdmVudAorQ29uc3RydWN0b3JUZW1wbGF0ZT0qCiBDdXN0b20K
IEN1c3RvbUNhbGwKIEN1c3RvbUNvbnN0cnVjdG9yCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFR5cGVkQXJyYXkuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0VHlwZWRBcnJheS5pZGwJKHJldmlz
aW9uIDEyNDk5MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0
VHlwZWRBcnJheS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKIAogbW9kdWxl
IGh0bWwgewogICAgIGludGVyZmFjZSBbCi0gICAgICAgIEN1c3RvbUNvbnN0cnVjdG9yLAorICAg
ICAgICBDb25zdHJ1Y3RvclRlbXBsYXRlPVR5cGVkQXJyYXksCiAgICAgICAgIENvbnN0cnVjdG9y
UGFyYW1ldGVycz0xMjMsCiAgICAgICAgIE51bWVyaWNJbmRleGVkR2V0dGVyLAogICAgICAgICBD
dXN0b21JbmRleGVkU2V0dGVyLApAQCAtMzcsNSArMzcsNiBAQCBtb2R1bGUgaHRtbCB7CiAgICAg
ICAgIFR5cGVkQXJyYXk9ZG91YmxlCiAgICAgXSBGbG9hdDY0QXJyYXkgOiBBcnJheUJ1ZmZlclZp
ZXcgewogICAgICAgICBJbnQzMkFycmF5IGZvbyhpbiBGbG9hdDMyQXJyYXkgYXJyYXkpOworICAg
ICAgICB2b2lkIHNldCgpOwogICAgIH07CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXkuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5jcHAJKHJl
dmlzaW9uIDEyNDk5MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU0Zsb2F0NjRBcnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDEyICs3OSw2IEBAIGJv
b2wgSlNGbG9hdDY0QXJyYXlDb25zdHJ1Y3Rvcjo6Z2V0T3duUHIKICAgICByZXR1cm4gZ2V0U3Rh
dGljVmFsdWVEZXNjcmlwdG9yPEpTRmxvYXQ2NEFycmF5Q29uc3RydWN0b3IsIEpTRE9NV3JhcHBl
cj4oZXhlYywgJkpTRmxvYXQ2NEFycmF5Q29uc3RydWN0b3JUYWJsZSwganNDYXN0PEpTRmxvYXQ2
NEFycmF5Q29uc3RydWN0b3IqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwog
fQogCi1Db25zdHJ1Y3RUeXBlIEpTRmxvYXQ2NEFycmF5Q29uc3RydWN0b3I6OmdldENvbnN0cnVj
dERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKLXsKLSAgICBjb25z
dHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdEpTRmxvYXQ2NEFycmF5OwotICAg
IHJldHVybiBDb25zdHJ1Y3RUeXBlSG9zdDsKLX0KLQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBKU0Zsb2F0NjRBcnJheUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU0Zsb2F0NjRBcnJheShF
eGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNGbG9hdDY0QXJyYXlDb25zdHJ1Y3RvcioganNDb25z
dHJ1Y3RvciA9IGpzQ2FzdDxKU0Zsb2F0NjRBcnJheUNvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVl
KCkpOwpAQCAtOTUsMTUgKzg5LDMyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNG
bG9hdDY0QXIKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzT2JqZWN0KHRvSlMoZXhlYywg
anNDb25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KCksIGFycmF5LmdldCgpKSkpOwogfQogCitKU0M6
OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgRmxvYXQ2NEFycmF5KiBvYmplY3QpCit7CisgICAgcmV0dXJuIHRvSlNBcnJh
eUJ1ZmZlclZpZXc8SlNGbG9hdDY0QXJyYXk+KGV4ZWMsIGdsb2JhbE9iamVjdCwgb2JqZWN0KTsK
K30KKwordm9pZCBKU0Zsb2F0NjRBcnJheTo6aW5kZXhTZXR0ZXIoSlNDOjpFeGVjU3RhdGUqIGV4
ZWMsIHVuc2lnbmVkIGluZGV4LCBKU0M6OkpTVmFsdWUgdmFsdWUpCit7CisgICAgaW1wbCgpLT5z
ZXQoaW5kZXgsIHZhbHVlLnRvTnVtYmVyKGV4ZWMpKTsKK30KKworQ29uc3RydWN0VHlwZSBKU0Zs
b2F0NjRBcnJheUNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVj
dERhdGEmIGNvbnN0cnVjdERhdGEpCit7CisgICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rp
b24gPSBjb25zdHJ1Y3RKU0Zsb2F0NjRBcnJheTsKKyAgICByZXR1cm4gQ29uc3RydWN0VHlwZUhv
c3Q7Cit9CisKIC8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwogCiBzdGF0aWMgY29uc3Qg
SGFzaFRhYmxlVmFsdWUgSlNGbG9hdDY0QXJyYXlQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KIHsK
ICAgICB7ICJmb28iLCBEb250RGVsZXRlIHwgSlNDOjpGdW5jdGlvbiwgKGludHB0cl90KXN0YXRp
Y19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc0Zsb2F0NjRBcnJheVByb3RvdHlwZUZ1bmN0aW9uRm9v
KSwgKGludHB0cl90KTEsIE5vSW50cmluc2ljIH0sCisgICAgeyAic2V0IiwgRG9udERlbGV0ZSB8
IEpTQzo6RnVuY3Rpb24sIChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNG
bG9hdDY0QXJyYXlQcm90b3R5cGVGdW5jdGlvblNldCksIChpbnRwdHJfdCkwLCBOb0ludHJpbnNp
YyB9LAogICAgIHsgMCwgMCwgMCwgMCwgTm9JbnRyaW5zaWMgfQogfTsKIAotc3RhdGljIGNvbnN0
IEhhc2hUYWJsZSBKU0Zsb2F0NjRBcnJheVByb3RvdHlwZVRhYmxlID0geyAyLCAxLCBKU0Zsb2F0
NjRBcnJheVByb3RvdHlwZVRhYmxlVmFsdWVzLCAwIH07CitzdGF0aWMgY29uc3QgSGFzaFRhYmxl
IEpTRmxvYXQ2NEFycmF5UHJvdG90eXBlVGFibGUgPSB7IDQsIDMsIEpTRmxvYXQ2NEFycmF5UHJv
dG90eXBlVGFibGVWYWx1ZXMsIDAgfTsKIHN0YXRpYyBjb25zdCBIYXNoVGFibGUqIGdldEpTRmxv
YXQ2NEFycmF5UHJvdG90eXBlVGFibGUoRXhlY1N0YXRlKiBleGVjKQogewogICAgIHJldHVybiBn
ZXRIYXNoVGFibGVGb3JHbG9iYWxEYXRhKGV4ZWMtPmdsb2JhbERhdGEoKSwgJkpTRmxvYXQ2NEFy
cmF5UHJvdG90eXBlVGFibGUpOwpAQCAtMjQ4LDYgKzI1OSwxNiBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzRmxvYXQ2NEFyCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzRmxvYXQ2NEFycmF5UHJv
dG90eXBlRnVuY3Rpb25TZXQoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOworICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRz
KCZKU0Zsb2F0NjRBcnJheTo6c19pbmZvKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYyk7CisgICAgSlNGbG9hdDY0QXJyYXkqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNGbG9h
dDY0QXJyYXkqPihhc09iamVjdCh0aGlzVmFsdWUpKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKGNhc3RlZFRoaXMsICZKU0Zsb2F0NjRBcnJheTo6c19pbmZvKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHNldFdlYkdMQXJyYXlIZWxwZXI8RmxvYXQ2NEFycmF5LCBkb3VibGU+
KGV4ZWMsIGNhc3RlZFRoaXMtPmltcGwoKSkpOworfQorCiAKIEpTVmFsdWUgSlNGbG9hdDY0QXJy
YXk6OmdldEJ5SW5kZXgoRXhlY1N0YXRlKiwgdW5zaWduZWQgaW5kZXgpCiB7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9h
dDY0QXJyYXkuaAkocmV2aXNpb24gMTI0OTkzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw2
ICsxMjYsNyBAQCBwcm90ZWN0ZWQ6CiAvLyBGdW5jdGlvbnMKIAogSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzRmxvYXQ2NEFycmF5UHJvdG90eXBlRnVuY3Rpb25Gb28oSlNDOjpF
eGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0Zsb2F0NjRB
cnJheVByb3RvdHlwZUZ1bmN0aW9uU2V0KEpTQzo6RXhlY1N0YXRlKik7CiAvLyBBdHRyaWJ1dGVz
CiAKIEpTQzo6SlNWYWx1ZSBqc0Zsb2F0NjRBcnJheUNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJh
eS5jcHAJKHJldmlzaW9uIDEyNDk5MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2
LDcgQEAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJs
ZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlY4QXJyYXlCdWZmZXJWaWV3LmgiCisjaW5jbHVkZSAi
VjhBcnJheUJ1ZmZlclZpZXdDdXN0b20uaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNs
dWRlICJWOERPTVdyYXBwZXIuaCIKICNpbmNsdWRlICJWOEZsb2F0MzJBcnJheS5oIgpAQCAtNTgs
NiArNTksMTIgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBmb29DYWxsYmFjawogICAg
IHJldHVybiB0b1Y4KGltcC0+Zm9vKGFycmF5KSwgYXJncy5HZXRJc29sYXRlKCkpOwogfQogCitz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHNldENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uRmxvYXQ2NEFycmF5LnNldCIpOworICAg
IHJldHVybiBzZXRXZWJHTEFycmF5SGVscGVyPEZsb2F0NjRBcnJheSwgVjhGbG9hdDY0QXJyYXk+
KGFyZ3MpOworfQorCiB9IC8vIG5hbWVzcGFjZSBGbG9hdDY0QXJyYXlWOEludGVybmFsCiAKIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KEZsb2F0NjRBcnJheSogaW1wbCwgdjg6Oklzb2xhdGUq
IGlzb2xhdGUpCkBAIC03MCw2ICs3NywxNiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChG
bG9hdDY0QXJyYXkqCiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKK3N0YXRpYyBjb25zdCBCYXRj
aGVkQ2FsbGJhY2sgRmxvYXQ2NEFycmF5Q2FsbGJhY2tzW10gPSB7CisgICAgeyJzZXQiLCBGbG9h
dDY0QXJyYXlWOEludGVybmFsOjpzZXRDYWxsYmFja30sCit9OworCit2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhGbG9hdDY0QXJyYXk6OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5GbG9hdDY0QXJyYXkuQ29udHJ1Y3Rv
ciIpOworICAgIHJldHVybiBjb25zdHJ1Y3RXZWJHTEFycmF5PEZsb2F0NjRBcnJheSwgVjhGbG9h
dDY0QXJyYXksIGRvdWJsZT4oYXJncywgJmluZm8sIHY4OjprRXh0ZXJuYWxEb3VibGVBcnJheSk7
Cit9CisKIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmln
dXJlVjhGbG9hdDY0QXJyYXlUZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gZGVzYykKIHsKICAgICBkZXNjLT5SZWFkT25seVByb3RvdHlwZSgpOwpAQCAtNzcsNyAr
OTQsNyBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhCiAgICAgdjg6
OkxvY2FsPHY4OjpTaWduYXR1cmU+IGRlZmF1bHRTaWduYXR1cmU7CiAgICAgZGVmYXVsdFNpZ25h
dHVyZSA9IGNvbmZpZ3VyZVRlbXBsYXRlKGRlc2MsICJGbG9hdDY0QXJyYXkiLCBWOEFycmF5QnVm
ZmVyVmlldzo6R2V0VGVtcGxhdGUoKSwgVjhGbG9hdDY0QXJyYXk6OmludGVybmFsRmllbGRDb3Vu
dCwKICAgICAgICAgMCwgMCwKLSAgICAgICAgMCwgMCk7CisgICAgICAgIEZsb2F0NjRBcnJheUNh
bGxiYWNrcywgV1RGX0FSUkFZX0xFTkdUSChGbG9hdDY0QXJyYXlDYWxsYmFja3MpKTsKICAgICBV
TlVTRURfUEFSQU0oZGVmYXVsdFNpZ25hdHVyZSk7IC8vIEluIHNvbWUgY2FzZXMsIGl0IHdpbGwg
bm90IGJlIHVzZWQuCiAgICAgZGVzYy0+U2V0Q2FsbEhhbmRsZXIoVjhGbG9hdDY0QXJyYXk6OmNv
bnN0cnVjdG9yQ2FsbGJhY2spOwogICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0VGVtcGxhdGU+IGlu
c3RhbmNlID0gZGVzYy0+SW5zdGFuY2VUZW1wbGF0ZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4RmxvYXQzMkFycmF5Q3VzdG9tLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhGbG9hdDMyQXJyYXlDdXN0b20u
Y3BwCShyZXZpc2lvbiAxMjQ5OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhGbG9hdDMyQXJyYXlDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDU3ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0g
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVjhGbG9hdDMyQXJyYXkuaCIKLQotI2lu
Y2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlci5oPgotI2luY2x1ZGUgPHd0Zi9GbG9hdDMyQXJyYXkuaD4K
LQotI2luY2x1ZGUgIlY4QmluZGluZy5oIgotI2luY2x1ZGUgIlY4QXJyYXlCdWZmZXIuaCIKLSNp
bmNsdWRlICJWOEFycmF5QnVmZmVyVmlld0N1c3RvbS5oIgotI2luY2x1ZGUgIlY4UHJveHkuaCIK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhGbG9hdDMy
QXJyYXk6OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKLXsK
LSAgICBJTkNfU1RBVFMoIkRPTS5GbG9hdDMyQXJyYXkuQ29udHJ1Y3RvciIpOwotCi0gICAgcmV0
dXJuIGNvbnN0cnVjdFdlYkdMQXJyYXk8RmxvYXQzMkFycmF5LCBWOEZsb2F0MzJBcnJheSwgZmxv
YXQ+KGFyZ3MsICZpbmZvLCB2ODo6a0V4dGVybmFsRmxvYXRBcnJheSk7Ci19Ci0KLXY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOEZsb2F0MzJBcnJheTo6c2V0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncykKLXsKLSAgICBJTkNfU1RBVFMoIkRPTS5GbG9hdDMyQXJyYXkuc2V0KCkiKTsK
LSAgICByZXR1cm4gc2V0V2ViR0xBcnJheUhlbHBlcjxGbG9hdDMyQXJyYXksIFY4RmxvYXQzMkFy
cmF5PihhcmdzKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RmxvYXQ2NEFycmF5Q3VzdG9tLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhGbG9hdDY0QXJyYXlD
dXN0b20uY3BwCShyZXZpc2lvbiAxMjQ5OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhGbG9hdDY0QXJyYXlDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUy
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVjhGbG9h
dDY0QXJyYXkuaCIKLQotI2luY2x1ZGUgIlY4QXJyYXlCdWZmZXIuaCIKLSNpbmNsdWRlICJWOEFy
cmF5QnVmZmVyVmlld0N1c3RvbS5oIgotI2luY2x1ZGUgIlY4QmluZGluZy5oIgotI2luY2x1ZGUg
IlY4UHJveHkuaCIKLQotI2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlci5oPgotI2luY2x1ZGUgPHd0
Zi9GbG9hdDY0QXJyYXkuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhGbG9hdDY0QXJyYXk6OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKLXsKLSAgICBJTkNfU1RBVFMoIkRPTS5GbG9hdDY0QXJyYXkuQ29udHJ1
Y3RvciIpOwotCi0gICAgcmV0dXJuIGNvbnN0cnVjdFdlYkdMQXJyYXk8RmxvYXQ2NEFycmF5LCBW
OEZsb2F0NjRBcnJheSwgZG91YmxlPihhcmdzLCAmaW5mbywgdjg6OmtFeHRlcm5hbERvdWJsZUFy
cmF5KTsKLX0KLQotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RmxvYXQ2NEFycmF5OjpzZXRDYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQotewotICAgIElOQ19TVEFUUygiRE9NLkZs
b2F0NjRBcnJheS5zZXQoKSIpOwotICAgIHJldHVybiBzZXRXZWJHTEFycmF5SGVscGVyPEZsb2F0
NjRBcnJheSwgVjhGbG9hdDY0QXJyYXk+KGFyZ3MpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbnQ4QXJyYXlD
dXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEludDhBcnJheUN1c3RvbS5jcHAJKHJldmlzaW9uIDEyNDk5MykKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEludDhBcnJheUN1c3RvbS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNTYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0g
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlIDx3dGYvQXJy
YXlCdWZmZXIuaD4KLSNpbmNsdWRlIDx3dGYvSW50OEFycmF5Lmg+Ci0KLSNpbmNsdWRlICJWOEJp
bmRpbmcuaCIKLSNpbmNsdWRlICJWOEFycmF5QnVmZmVyLmgiCi0jaW5jbHVkZSAiVjhBcnJheUJ1
ZmZlclZpZXdDdXN0b20uaCIKLSNpbmNsdWRlICJWOEludDhBcnJheS5oIgotI2luY2x1ZGUgIlY4
UHJveHkuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhJbnQ4QXJyYXk6OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKLXsKLSAgICBJTkNfU1RBVFMoIkRPTS5JbnQ4QXJyYXkuQ29udHJ1Y3RvciIpOwotCi0gICAg
cmV0dXJuIGNvbnN0cnVjdFdlYkdMQXJyYXk8SW50OEFycmF5LCBWOEludDhBcnJheSwgc2lnbmVk
IGNoYXI+KGFyZ3MsICZpbmZvLCB2ODo6a0V4dGVybmFsQnl0ZUFycmF5KTsKLX0KLQotdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4SW50OEFycmF5OjpzZXRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQotewotICAgIElOQ19TVEFUUygiRE9NLkludDhBcnJheS5zZXQoKSIpOwotICAg
IHJldHVybiBzZXRXZWJHTEFycmF5SGVscGVyPEludDhBcnJheSwgVjhJbnQ4QXJyYXk+KGFyZ3Mp
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhJbnQxNkFycmF5Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbnQxNkFycmF5Q3VzdG9tLmNwcAkocmV2
aXNpb24gMTI0OTkzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW50
MTZBcnJheUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNTYgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0
cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0g
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KLSNpbmNsdWRlIDx3dGYv
SW50MTZBcnJheS5oPgotCi0jaW5jbHVkZSAiVjhCaW5kaW5nLmgiCi0jaW5jbHVkZSAiVjhBcnJh
eUJ1ZmZlci5oIgotI2luY2x1ZGUgIlY4QXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmgiCi0jaW5jbHVk
ZSAiVjhJbnQxNkFycmF5LmgiCi0jaW5jbHVkZSAiVjhQcm94eS5oIgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEludDE2QXJyYXk6OmNvbnN0cnVjdG9y
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKLXsKLSAgICBJTkNfU1RBVFMoIkRP
TS5JbnQxNkFycmF5LkNvbnRydWN0b3IiKTsKLQotICAgIHJldHVybiBjb25zdHJ1Y3RXZWJHTEFy
cmF5PEludDE2QXJyYXksIFY4SW50MTZBcnJheSwgc2hvcnQ+KGFyZ3MsICZpbmZvLCB2ODo6a0V4
dGVybmFsU2hvcnRBcnJheSk7Ci19Ci0KLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEludDE2QXJy
YXk6OnNldENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCi17Ci0gICAgSU5DX1NU
QVRTKCJET00uSW50MTZBcnJheS5zZXQoKSIpOwotICAgIHJldHVybiBzZXRXZWJHTEFycmF5SGVs
cGVyPEludDE2QXJyYXksIFY4SW50MTZBcnJheT4oYXJncyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEludDMy
QXJyYXlDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEludDMyQXJyYXlDdXN0b20uY3BwCShyZXZpc2lvbiAxMjQ5OTMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbnQzMkFycmF5Q3VzdG9tLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
PHd0Zi9BcnJheUJ1ZmZlci5oPgotI2luY2x1ZGUgPHd0Zi9JbnQzMkFycmF5Lmg+Ci0KLSNpbmNs
dWRlICJWOEJpbmRpbmcuaCIKLSNpbmNsdWRlICJWOEFycmF5QnVmZmVyLmgiCi0jaW5jbHVkZSAi
VjhBcnJheUJ1ZmZlclZpZXdDdXN0b20uaCIKLSNpbmNsdWRlICJWOEludDMyQXJyYXkuaCIKLSNp
bmNsdWRlICJWOFByb3h5LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4SW50MzJBcnJheTo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQotewotICAgIElOQ19TVEFUUygiRE9NLkludDMyQXJyYXkuQ29udHJ1Y3Rv
ciIpOwotCi0gICAgcmV0dXJuIGNvbnN0cnVjdFdlYkdMQXJyYXk8SW50MzJBcnJheSwgVjhJbnQz
MkFycmF5LCBpbnQ+KGFyZ3MsICZpbmZvLCB2ODo6a0V4dGVybmFsSW50QXJyYXkpOwotfQotCi12
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbnQzMkFycmF5OjpzZXRDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQotewotICAgIElOQ19TVEFUUygiRE9NLkludDMyQXJyYXkuc2V0KCki
KTsKLSAgICByZXR1cm4gc2V0V2ViR0xBcnJheUhlbHBlcjxJbnQzMkFycmF5LCBWOEludDMyQXJy
YXk+KGFyZ3MpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhVaW50OEFycmF5Q3VzdG9tLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhVaW50OEFycmF5Q3VzdG9t
LmNwcAkocmV2aXNpb24gMTI0OTkzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4VWludDhBcnJheUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNTYgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
Ci0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KLSNpbmNs
dWRlIDx3dGYvVWludDhBcnJheS5oPgotCi0jaW5jbHVkZSAiVjhCaW5kaW5nLmgiCi0jaW5jbHVk
ZSAiVjhBcnJheUJ1ZmZlci5oIgotI2luY2x1ZGUgIlY4QXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmgi
Ci0jaW5jbHVkZSAiVjhVaW50OEFycmF5LmgiCi0jaW5jbHVkZSAiVjhQcm94eS5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFVpbnQ4QXJyYXk6OmNv
bnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKLXsKLSAgICBJTkNf
U1RBVFMoIkRPTS5VaW50OEFycmF5LkNvbnRydWN0b3IiKTsKLQotICAgIHJldHVybiBjb25zdHJ1
Y3RXZWJHTEFycmF5PFVpbnQ4QXJyYXksIFY4VWludDhBcnJheSwgdW5zaWduZWQgY2hhcj4oYXJn
cywgJmluZm8sIHY4OjprRXh0ZXJuYWxVbnNpZ25lZEJ5dGVBcnJheSk7Ci19Ci0KLXY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOFVpbnQ4QXJyYXk6OnNldENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCi17Ci0gICAgSU5DX1NUQVRTKCJET00uVWludDhBcnJheS5zZXQoKSIpOwotICAg
IHJldHVybiBzZXRXZWJHTEFycmF5SGVscGVyPFVpbnQ4QXJyYXksIFY4VWludDhBcnJheT4oYXJn
cyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOFVpbnQ4Q2xhbXBlZEFycmF5Q3VzdG9tLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhVaW50OENsYW1wZWRBcnJh
eUN1c3RvbS5jcHAJKHJldmlzaW9uIDEyNDk5MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOFVpbnQ4Q2xhbXBlZEFycmF5Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUwotICogSVMn
JyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTCi0gKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFCi0gKiBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwKLSAqIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSAq
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKQotICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAotICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAotICogT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLQotI2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlci5oPgotI2luY2x1ZGUgPHd0Zi9VaW50OENs
YW1wZWRBcnJheS5oPgotCi0jaW5jbHVkZSAiVjhBcnJheUJ1ZmZlci5oIgotI2luY2x1ZGUgIlY4
QXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmgiCi0jaW5jbHVkZSAiVjhCaW5kaW5nLmgiCi0jaW5jbHVk
ZSAiVjhQcm94eS5oIgotI2luY2x1ZGUgIlY4VWludDhDbGFtcGVkQXJyYXkuaCIKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhVaW50OENsYW1wZWRBcnJh
eTo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQotewotICAg
IElOQ19TVEFUUygiRE9NLlVpbnQ4Q2xhbXBlZEFycmF5LkNvbnRydWN0b3IiKTsKLQotICAgIHJl
dHVybiBjb25zdHJ1Y3RXZWJHTEFycmF5PFVpbnQ4Q2xhbXBlZEFycmF5LCBWOFVpbnQ4Q2xhbXBl
ZEFycmF5LCB1bnNpZ25lZCBjaGFyPihhcmdzLCAmaW5mbywgdjg6OmtFeHRlcm5hbFBpeGVsQXJy
YXkpOwotfQotCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhVaW50OENsYW1wZWRBcnJheTo6c2V0
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKLXsKLSAgICBJTkNfU1RBVFMoIkRP
TS5VaW50OENsYW1wZWRBcnJheS5zZXQoKSIpOwotICAgIHJldHVybiBzZXRXZWJHTEFycmF5SGVs
cGVyPFVpbnQ4Q2xhbXBlZEFycmF5LCBWOFVpbnQ4Q2xhbXBlZEFycmF5PihhcmdzKTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4VWludDE2QXJyYXlDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFVpbnQxNkFycmF5Q3VzdG9tLmNwcAkocmV2aXNpb24g
MTI0OTkzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4VWludDE2QXJy
YXlDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDU2ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0
aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAot
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyLmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQx
NkFycmF5Lmg+Ci0KLSNpbmNsdWRlICJWOEJpbmRpbmcuaCIKLSNpbmNsdWRlICJWOEFycmF5QnVm
ZmVyLmgiCi0jaW5jbHVkZSAiVjhBcnJheUJ1ZmZlclZpZXdDdXN0b20uaCIKLSNpbmNsdWRlICJW
OFVpbnQxNkFycmF5LmgiCi0jaW5jbHVkZSAiVjhQcm94eS5oIgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFVpbnQxNkFycmF5Ojpjb25zdHJ1Y3RvckNh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCi17Ci0gICAgSU5DX1NUQVRTKCJET00u
VWludDE2QXJyYXkuQ29udHJ1Y3RvciIpOwotCi0gICAgcmV0dXJuIGNvbnN0cnVjdFdlYkdMQXJy
YXk8VWludDE2QXJyYXksIFY4VWludDE2QXJyYXksIHVuc2lnbmVkIHNob3J0PihhcmdzLCAmaW5m
bywgdjg6OmtFeHRlcm5hbFVuc2lnbmVkU2hvcnRBcnJheSk7Ci19Ci0KLXY4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOFVpbnQxNkFycmF5OjpzZXRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQotewotICAgIElOQ19TVEFUUygiRE9NLlVpbnQxNkFycmF5LnNldCgpIik7Ci0gICAgcmV0
dXJuIHNldFdlYkdMQXJyYXlIZWxwZXI8VWludDE2QXJyYXksIFY4VWludDE2QXJyYXk+KGFyZ3Mp
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhVaW50MzJBcnJheUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4VWludDMyQXJyYXlDdXN0b20uY3BwCShy
ZXZpc2lvbiAxMjQ5OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhV
aW50MzJBcnJheUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNTYgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBk
aXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
Ci0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KLSNpbmNsdWRlIDx3
dGYvVWludDMyQXJyYXkuaD4KLQotI2luY2x1ZGUgIlY4QmluZGluZy5oIgotI2luY2x1ZGUgIlY4
QXJyYXlCdWZmZXIuaCIKLSNpbmNsdWRlICJWOEFycmF5QnVmZmVyVmlld0N1c3RvbS5oIgotI2lu
Y2x1ZGUgIlY4VWludDMyQXJyYXkuaCIKLSNpbmNsdWRlICJWOFByb3h5LmgiCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VWludDMyQXJyYXk6OmNvbnN0
cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKLXsKLSAgICBJTkNfU1RB
VFMoIkRPTS5VaW50MzJBcnJheS5Db250cnVjdG9yIik7Ci0KLSAgICByZXR1cm4gY29uc3RydWN0
V2ViR0xBcnJheTxVaW50MzJBcnJheSwgVjhVaW50MzJBcnJheSwgdW5zaWduZWQgaW50Pihhcmdz
LCAmaW5mbywgdjg6OmtFeHRlcm5hbFVuc2lnbmVkSW50QXJyYXkpOwotfQotCi12ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhVaW50MzJBcnJheTo6c2V0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncykKLXsKLSAgICBJTkNfU1RBVFMoIkRPTS5VaW50MzJBcnJheS5zZXQoKSIpOwotICAg
IHJldHVybiBzZXRXZWJHTEFycmF5SGVscGVyPFVpbnQzMkFycmF5LCBWOFVpbnQzMkFycmF5Pihh
cmdzKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvRmxvYXQzMkFycmF5LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9GbG9hdDMyQXJyYXkuaWRsCShyZXZpc2lvbiAxMjQ5OTMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9GbG9hdDMyQXJyYXkuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw3ICsyNiw3IEBACiAKIG1vZHVsZSBodG1sIHsKICAgICBpbnRlcmZhY2UgWwotICAgICAg
ICBDdXN0b21Db25zdHJ1Y3RvciwKKyAgICAgICAgQ29uc3RydWN0b3JUZW1wbGF0ZT1UeXBlZEFy
cmF5LAogICAgICAgICBDb25zdHJ1Y3RvclBhcmFtZXRlcnM9MSwKICAgICAgICAgTnVtZXJpY0lu
ZGV4ZWRHZXR0ZXIsCiAgICAgICAgIEN1c3RvbUluZGV4ZWRTZXR0ZXIsCkBAIC00NCw2ICs0NCw2
IEBAIG1vZHVsZSBodG1sIHsKIAogICAgICAgICAvLyB2b2lkIHNldChpbiBGbG9hdDMyQXJyYXkg
YXJyYXksIFtPcHRpb25hbF0gaW4gdW5zaWduZWQgbG9uZyBvZmZzZXQpOwogICAgICAgICAvLyB2
b2lkIHNldChpbiBzZXF1ZW5jZTxsb25nPiBhcnJheSwgW09wdGlvbmFsXSBpbiB1bnNpZ25lZCBs
b25nIG9mZnNldCk7Ci0gICAgICAgIFtDdXN0b21dIHZvaWQgc2V0KCk7CisgICAgICAgIHZvaWQg
c2V0KCk7CiAgICAgfTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Zsb2F0
NjRBcnJheS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRmxv
YXQ2NEFycmF5LmlkbAkocmV2aXNpb24gMTI0OTkzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvRmxvYXQ2NEFycmF5LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAog
CiBtb2R1bGUgaHRtbCB7CiAgICAgaW50ZXJmYWNlIFsKLSAgICAgICAgQ3VzdG9tQ29uc3RydWN0
b3IsCisgICAgICAgIENvbnN0cnVjdG9yVGVtcGxhdGU9VHlwZWRBcnJheSwKICAgICAgICAgQ29u
c3RydWN0b3JQYXJhbWV0ZXJzPTEsCiAgICAgICAgIE51bWVyaWNJbmRleGVkR2V0dGVyLAogICAg
ICAgICBDdXN0b21JbmRleGVkU2V0dGVyLApAQCAtNDQsNiArNDQsNiBAQCBtb2R1bGUgaHRtbCB7
CiAKICAgICAgICAgLy8gdm9pZCBzZXQoaW4gRmxvYXQ2NEFycmF5IGFycmF5LCBbT3B0aW9uYWxd
IGluIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KTsKICAgICAgICAgLy8gdm9pZCBzZXQoaW4gc2VxdWVu
Y2U8bG9uZz4gYXJyYXksIFtPcHRpb25hbF0gaW4gdW5zaWduZWQgbG9uZyBvZmZzZXQpOwotICAg
ICAgICBbQ3VzdG9tXSB2b2lkIHNldCgpOworICAgICAgICB2b2lkIHNldCgpOwogICAgIH07CiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9JbnQ4QXJyYXkuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ludDhBcnJheS5pZGwJKHJldmlzaW9u
IDEyNDk5MykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ludDhBcnJheS5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKIAogbW9kdWxlIGh0bWwgewogICAgIGludGVy
ZmFjZSBbCi0gICAgICAgIEN1c3RvbUNvbnN0cnVjdG9yLAorICAgICAgICBDb25zdHJ1Y3RvclRl
bXBsYXRlPVR5cGVkQXJyYXksCiAgICAgICAgIENvbnN0cnVjdG9yUGFyYW1ldGVycz0xLAogICAg
ICAgICBOdW1lcmljSW5kZXhlZEdldHRlciwKICAgICAgICAgQ3VzdG9tSW5kZXhlZFNldHRlciwK
QEAgLTQ0LDYgKzQ0LDYgQEAgbW9kdWxlIGh0bWwgewogCiAgICAgICAgIC8vIHZvaWQgc2V0KGlu
IEludDhBcnJheSBhcnJheSwgW09wdGlvbmFsXSBpbiB1bnNpZ25lZCBsb25nIG9mZnNldCk7CiAg
ICAgICAgIC8vIHZvaWQgc2V0KGluIHNlcXVlbmNlPGxvbmc+IGFycmF5LCBbT3B0aW9uYWxdIGlu
IHVuc2lnbmVkIGxvbmcgb2Zmc2V0KTsKLSAgICAgICAgW0N1c3RvbV0gdm9pZCBzZXQoKTsKKyAg
ICAgICAgdm9pZCBzZXQoKTsKICAgICB9OwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvSW50MTZBcnJheS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvSW50MTZBcnJheS5pZGwJKHJldmlzaW9uIDEyNDk5MykKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0ludDE2QXJyYXkuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3
IEBACiAKIG1vZHVsZSBodG1sIHsKICAgICBpbnRlcmZhY2UgWwotICAgICAgICBDdXN0b21Db25z
dHJ1Y3RvciwKKyAgICAgICAgQ29uc3RydWN0b3JUZW1wbGF0ZT1UeXBlZEFycmF5LAogICAgICAg
ICBDb25zdHJ1Y3RvclBhcmFtZXRlcnM9MSwKICAgICAgICAgTnVtZXJpY0luZGV4ZWRHZXR0ZXIs
CiAgICAgICAgIEN1c3RvbUluZGV4ZWRTZXR0ZXIsCkBAIC00Myw2ICs0Myw2IEBAIG1vZHVsZSBo
dG1sIHsKIAogICAgICAgICAvLyB2b2lkIHNldChpbiBJbnQxNkFycmF5IGFycmF5LCBbT3B0aW9u
YWxdIGluIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KTsKICAgICAgICAgLy8gdm9pZCBzZXQoaW4gc2Vx
dWVuY2U8bG9uZz4gYXJyYXksIFtPcHRpb25hbF0gaW4gdW5zaWduZWQgbG9uZyBvZmZzZXQpOwot
ICAgICAgICBbQ3VzdG9tXSB2b2lkIHNldCgpOworICAgICAgICB2b2lkIHNldCgpOwogICAgIH07
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9JbnQzMkFycmF5LmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9JbnQzMkFycmF5LmlkbAkocmV2
aXNpb24gMTI0OTkzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvSW50MzJBcnJheS5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKIAogbW9kdWxlIGh0bWwgewogICAg
IGludGVyZmFjZSBbCi0gICAgICAgIEN1c3RvbUNvbnN0cnVjdG9yLAorICAgICAgICBDb25zdHJ1
Y3RvclRlbXBsYXRlPVR5cGVkQXJyYXksCiAgICAgICAgIENvbnN0cnVjdG9yUGFyYW1ldGVycz0x
LAogICAgICAgICBOdW1lcmljSW5kZXhlZEdldHRlciwKICAgICAgICAgQ3VzdG9tSW5kZXhlZFNl
dHRlciwKQEAgLTQ0LDYgKzQ0LDYgQEAgbW9kdWxlIGh0bWwgewogCiAgICAgICAgIC8vIHZvaWQg
c2V0KGluIEludDMyQXJyYXkgYXJyYXksIFtPcHRpb25hbF0gaW4gdW5zaWduZWQgbG9uZyBvZmZz
ZXQpOwogICAgICAgICAvLyB2b2lkIHNldChpbiBzZXF1ZW5jZTxsb25nPiBhcnJheSwgW09wdGlv
bmFsXSBpbiB1bnNpZ25lZCBsb25nIG9mZnNldCk7Ci0gICAgICAgIFtDdXN0b21dIHZvaWQgc2V0
KCk7CisgICAgICAgIHZvaWQgc2V0KCk7CiAgICAgfTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1VpbnQ4QXJyYXkuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1VpbnQ4QXJyYXkuaWRsCShyZXZpc2lvbiAxMjQ5OTMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9VaW50OEFycmF5LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjYs
NyArMjYsNyBAQAogCiBtb2R1bGUgaHRtbCB7CiAgICAgaW50ZXJmYWNlIFsKLSAgICAgICAgQ3Vz
dG9tQ29uc3RydWN0b3IsCisgICAgICAgIENvbnN0cnVjdG9yVGVtcGxhdGU9VHlwZWRBcnJheSwK
ICAgICAgICAgQ29uc3RydWN0b3JQYXJhbWV0ZXJzPTEsCiAgICAgICAgIE51bWVyaWNJbmRleGVk
R2V0dGVyLAogICAgICAgICBDdXN0b21JbmRleGVkU2V0dGVyLApAQCAtNDMsNiArNDMsNiBAQCBt
b2R1bGUgaHRtbCB7CiAKICAgICAgICAgLy8gdm9pZCBzZXQoaW4gVWludDhBcnJheSBhcnJheSwg
W09wdGlvbmFsXSBpbiB1bnNpZ25lZCBsb25nIG9mZnNldCk7CiAgICAgICAgIC8vIHZvaWQgc2V0
KGluIHNlcXVlbmNlPGxvbmc+IGFycmF5LCBbT3B0aW9uYWxdIGluIHVuc2lnbmVkIGxvbmcgb2Zm
c2V0KTsKLSAgICAgICAgW0N1c3RvbV0gdm9pZCBzZXQoKTsKKyAgICAgICAgdm9pZCBzZXQoKTsK
ICAgICB9OwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvVWludDhDbGFtcGVk
QXJyYXkuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1VpbnQ4
Q2xhbXBlZEFycmF5LmlkbAkocmV2aXNpb24gMTI0OTkzKQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvVWludDhDbGFtcGVkQXJyYXkuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsy
Niw3IEBACiAKIG1vZHVsZSBodG1sIHsKICAgICBpbnRlcmZhY2UgWwotICAgICAgICBDdXN0b21D
b25zdHJ1Y3RvciwKKyAgICAgICAgQ29uc3RydWN0b3JUZW1wbGF0ZT1UeXBlZEFycmF5LAogICAg
ICAgICBDb25zdHJ1Y3RvclBhcmFtZXRlcnM9MSwKICAgICAgICAgTnVtZXJpY0luZGV4ZWRHZXR0
ZXIsCiAgICAgICAgIEN1c3RvbUluZGV4ZWRTZXR0ZXIsCkBAIC00NCw2ICs0NCw2IEBAIG1vZHVs
ZSBodG1sIHsKICAgICAgICAgLy8gRklYTUU6IE1pc3Npbmcgb3RoZXIgc2V0dGVycyEKICAgICAg
ICAgLy8gdm9pZCBzZXQoaW4gVWludDhDbGFtcGVkQXJyYXkgYXJyYXksIFtPcHRpb25hbF0gaW4g
dW5zaWduZWQgbG9uZyBvZmZzZXQpOwogICAgICAgICAvLyB2b2lkIHNldChpbiBzZXF1ZW5jZTxs
b25nPiBhcnJheSwgW09wdGlvbmFsXSBpbiB1bnNpZ25lZCBsb25nIG9mZnNldCk7Ci0gICAgICAg
IFtDdXN0b21dIHZvaWQgc2V0KCk7CisgICAgICAgIHZvaWQgc2V0KCk7CiAgICAgfTsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1VpbnQxNkFycmF5LmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9VaW50MTZBcnJheS5pZGwJKHJldmlzaW9u
IDEyNDk5MykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1VpbnQxNkFycmF5LmlkbAko
d29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogCiBtb2R1bGUgaHRtbCB7CiAgICAgaW50
ZXJmYWNlIFsKLSAgICAgICAgQ3VzdG9tQ29uc3RydWN0b3IsCisgICAgICAgIENvbnN0cnVjdG9y
VGVtcGxhdGU9VHlwZWRBcnJheSwKICAgICAgICAgQ29uc3RydWN0b3JQYXJhbWV0ZXJzPTEsCiAg
ICAgICAgIE51bWVyaWNJbmRleGVkR2V0dGVyLAogICAgICAgICBDdXN0b21JbmRleGVkU2V0dGVy
LApAQCAtNDMsNiArNDMsNiBAQCBtb2R1bGUgaHRtbCB7CiAKICAgICAgICAgLy8gdm9pZCBzZXQo
aW4gVWludDE2QXJyYXkgYXJyYXksIFtPcHRpb25hbF0gaW4gdW5zaWduZWQgbG9uZyBvZmZzZXQp
OwogICAgICAgICAvLyB2b2lkIHNldChpbiBzZXF1ZW5jZTxsb25nPiBhcnJheSwgW09wdGlvbmFs
XSBpbiB1bnNpZ25lZCBsb25nIG9mZnNldCk7Ci0gICAgICAgIFtDdXN0b21dIHZvaWQgc2V0KCk7
CisgICAgICAgIHZvaWQgc2V0KCk7CiAgICAgfTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1VpbnQzMkFycmF5LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9VaW50MzJBcnJheS5pZGwJKHJldmlzaW9uIDEyNDk5MykKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1VpbnQzMkFycmF5LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjYs
NyArMjYsNyBAQAogCiBtb2R1bGUgaHRtbCB7CiAgICAgaW50ZXJmYWNlIFsKLSAgICAgICAgQ3Vz
dG9tQ29uc3RydWN0b3IsCisgICAgICAgIENvbnN0cnVjdG9yVGVtcGxhdGU9VHlwZWRBcnJheSwK
ICAgICAgICAgQ29uc3RydWN0b3JQYXJhbWV0ZXJzPTEsCiAgICAgICAgIE51bWVyaWNJbmRleGVk
R2V0dGVyLAogICAgICAgICBDdXN0b21JbmRleGVkU2V0dGVyLApAQCAtNDMsNiArNDMsNiBAQCBt
b2R1bGUgaHRtbCB7CiAKICAgICAgICAgLy8gdm9pZCBzZXQoaW4gVWludDMyQXJyYXkgYXJyYXks
IFtPcHRpb25hbF0gaW4gdW5zaWduZWQgbG9uZyBvZmZzZXQpOwogICAgICAgICAvLyB2b2lkIHNl
dChpbiBzZXF1ZW5jZTxsb25nPiBhcnJheSwgW09wdGlvbmFsXSBpbiB1bnNpZ25lZCBsb25nIG9m
ZnNldCk7Ci0gICAgICAgIFtDdXN0b21dIHZvaWQgc2V0KCk7CisgICAgICAgIHZvaWQgc2V0KCk7
CiAgICAgfTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157230</attachid>
            <date>2012-08-08 08:52:02 -0700</date>
            <delta_ts>2012-08-08 10:01:11 -0700</delta_ts>
            <desc>patch_for_landing</desc>
            <filename>typed_array_all_005.diff</filename>
            <type>text/plain</type>
            <size>97291</size>
            <attacher name="Vineet Chaudhary (vineetc)">code.vineet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNTAzOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgwIEBACisyMDEyLTA4LTA4ICBWaW5lZXQg
Q2hhdWRoYXJ5ICA8cmdmNzQ4QG1vdG9yb2xhLmNvbT4KKworICAgICAgICBSZW1vdmUgQWxsIEN1
c3RvbSBiaW5kaW5nIGNvZGUgZm9yIFR5cGVkQXJyYXkuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzM3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92aW5nIEN1c3RvbSBiaW5kaW5ncyBjb21wbGV0
ZWx5IHdpdGggaGVscCBvZiBbVHlwZWRBcnJheV0gYXR0cmlidXRlLgorCisgICAgICAgIFRlc3Rz
OiBUZXN0VHlwZWRBcnJheS5pZGwKKyAgICAgICAgVGhlcmUgc2hvdWxkIG5vdCBiZSBhbnkgYmVo
YXZpb3JhbCBjaGFuZ2UgYW5kIGFsbCB0ZXN0cyBzaG91bGQgcGFzcy4KKworICAgICAgICAqIEdO
VW1ha2VmaWxlLmxpc3QuYW06IFJlbW92ZWQgQ3VzdG9tIGZpbGVzLgorICAgICAgICAqIFRhcmdl
dC5wcmk6IERpdHRvLgorICAgICAgICAqIFVzZUpTQy5jbWFrZTogRGl0dG8uCisgICAgICAgICog
VXNlVjguY21ha2U6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUuZ3lwaTogRGl0dG8uCisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0by4KKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwOiBEaXR0by4KKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0Zsb2F0MzJBcnJheUN1c3RvbS5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
YmluZGluZ3MvanMvSlNGbG9hdDY0QXJyYXlDdXN0b20uY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTSW50MTZBcnJheUN1c3RvbS5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
YmluZGluZ3MvanMvSlNJbnQzMkFycmF5Q3VzdG9tLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0ludDhBcnJheUN1c3RvbS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNVaW50MTZBcnJheUN1c3RvbS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNVaW50MzJBcnJheUN1c3RvbS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNVaW50OEFycmF5Q3VzdG9tLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU1VpbnQ4Q2xhbXBlZEFycmF5Q3VzdG9tLmNwcDogUmVtb3ZlZC4KKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JDUFAucG06CisgICAgICAgIChHZW5lcmF0
ZUhlYWRlcik6IFNraXAgaW1wbGVtZW50YWlvbiBmb3IgVHlwZWRBcnJheS4KKyAgICAgICAgKEdl
bmVyYXRlSW1wbGVtZW50YXRpb24pOiBTa2lwIGltcGxlbWVudGFpb24gZm9yIFR5cGVkQXJyYXku
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbToKKyAg
ICAgICAgKEdlbmVyYXRlRnVuY3Rpb24pOiBTa2lwIGltcGxlbWVudGFpb24gZm9yIFR5cGVkQXJy
YXkuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAg
ICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKTogR2VuZXJhdGVzIGJpbmRpbmcgZm9yIHNldCgp
IGNhbGwuCisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbik6IENvbnN0cnVj
dG9yVGVtcGxhdGUgaW1wbGVtZW50YXRpb24gZm9yIFR5cGVkQXJyYXkuCisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbToKKyAgICAgICAgKEdlbmVyYXRlSGVh
ZGVyKTogU2tpcCBpbXBsZW1lbnRhaW9uIGZvciBUeXBlZEFycmF5LgorICAgICAgICAoR2VuZXJh
dGVJbXBsZW1lbnRhdGlvbik6IFNraXAgaW1wbGVtZW50YWlvbiBmb3IgVHlwZWRBcnJheS4KKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKEdl
bmVyYXRlRnVuY3Rpb25DYWxsYmFjayk6IEdlbmVyYXRlcyBiaW5kaW5nIGZvciBzZXRDYWxsYmFj
aygpLgorICAgICAgICAoR2VuZXJhdGVUeXBlZEFycmF5Q29uc3RydWN0b3JDYWxsYmFjayk6IEdl
bmVyYXRlcyBiaW5kaW5nIGZvciBjb25zdHJ1Y3RvckNhbGxiYWNrKCkuCisgICAgICAgIChHZW5l
cmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJp
YnV0ZXMudHh0OiBTdXBwb3J0IENvbnN0cnVjdG9yVGVtcGxhdGUgZm9yIFR5cGVkQXJyYXkgYXMg
d2VsbC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXku
Y3BwOiBCaW5kaW5nIHRlc3RzIHJlc3VsdHMuCisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTRmxvYXQ2NEFycmF5OjppbmRleFNldHRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpKU0Zsb2F0NjRBcnJheUNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzRmxvYXQ2NEFycmF5UHJvdG90eXBlRnVuY3Rpb25Gb28pOgorICAg
ICAgICAoV2ViQ29yZTo6anNGbG9hdDY0QXJyYXlQcm90b3R5cGVGdW5jdGlvblNldCk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5Lmg6IEJpbmRpbmcg
dGVzdHMgcmVzdWx0cy4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFR5cGVk
QXJyYXkuaWRsOiBCaW5kaW5nIHRlc3RzLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOEZsb2F0NjRBcnJheS5jcHA6IEJpbmRpbmcgdGVzdHMgcmVzdWx0cy4KKyAgICAgICAg
KFdlYkNvcmU6OkZsb2F0NjRBcnJheVY4SW50ZXJuYWw6OnNldENhbGxiYWNrKToKKyAgICAgICAg
KEZsb2F0NjRBcnJheVY4SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpWOEZsb2F0NjRBcnJheTo6Y29uc3RydWN0b3JDYWxsYmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpDb25maWd1cmVWOEZsb2F0NjRBcnJheVRlbXBsYXRlKToKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9jdXN0b20vVjhGbG9hdDMyQXJyYXlDdXN0b20uY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEZsb2F0NjRBcnJheUN1c3RvbS5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW50MTZBcnJheUN1c3RvbS5jcHA6IFJl
bW92ZWQuCisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW50MzJBcnJheUN1c3RvbS5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW50OEFycmF5Q3Vz
dG9tLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhVaW50MTZB
cnJheUN1c3RvbS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4
VWludDMyQXJyYXlDdXN0b20uY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1
c3RvbS9WOFVpbnQ4QXJyYXlDdXN0b20uY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L2N1c3RvbS9WOFVpbnQ4Q2xhbXBlZEFycmF5Q3VzdG9tLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9GbG9hdDMyQXJyYXkuaWRsOiBVc2luZyBbQ29uc3RydWN0b3JUZW1w
bGF0ZSA9IFR5cGVkQXJyYXldIGluc3RlYWQgb2YgY3VzdG9tIGltcGxlbWVudGFpb24uCisgICAg
ICAgICogaHRtbC9jYW52YXMvRmxvYXQ2NEFycmF5LmlkbDogRGl0dG8uCisgICAgICAgICogaHRt
bC9jYW52YXMvSW50MTZBcnJheS5pZGw6IERpdHRvLgorICAgICAgICAqIGh0bWwvY2FudmFzL0lu
dDMyQXJyYXkuaWRsOiBEaXR0by4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9JbnQ4QXJyYXkuaWRs
OiBEaXR0by4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9VaW50MTZBcnJheS5pZGw6IERpdHRvLgor
ICAgICAgICAqIGh0bWwvY2FudmFzL1VpbnQzMkFycmF5LmlkbDogRGl0dG8uCisgICAgICAgICog
aHRtbC9jYW52YXMvVWludDhBcnJheS5pZGw6IERpdHRvLgorICAgICAgICAqIGh0bWwvY2FudmFz
L1VpbnQ4Q2xhbXBlZEFycmF5LmlkbDogRGl0dG8uCisKIDIwMTItMDgtMDggIFBhdmVsIEZlbGRt
YW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3Rvcjogc3Rv
cmUgbGFzdCBldmFsdWF0aW9uIHJlc3VsdCBpbiAkXwpJbmRleDogU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCShyZXZpc2lvbiAxMjQ5OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0xNDYwLDggKzE0NjAsNiBAQCB3ZWJjb3JlX3Nv
dXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXhjZXB0aW9uQmFzZS5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXhjZXB0aW9uQmFzZS5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ZpbGVSZWFkZXJDdXN0b20uY3BwIFwKLQlTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Zsb2F0MzJBcnJheUN1c3RvbS5jcHAgXAotCVNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmxvYXQ2NEFycmF5Q3VzdG9tLmNwcCBcCiAJU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxBcHBsZXRFbGVtZW50Q3VzdG9tLmNwcCBcCkBA
IC0xNDk0LDkgKzE0OTIsNiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAgXAot
CVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW50MTZBcnJheUN1c3RvbS5jcHAgXAotCVNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW50MzJBcnJheUN1c3RvbS5jcHAgXAotCVNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW50OEFycmF5Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lQ3VzdG9tLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuaCBcCkBAIC0xNTQ4LDEw
ICsxNTQzLDYgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1RyYWNrQ3VzdG9tLmggXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVHJh
Y2tFdmVudEN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVHJlZVdh
bGtlckN1c3RvbS5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWludDE2QXJy
YXlDdXN0b20uY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQzMkFycmF5
Q3VzdG9tLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVaW50OEFycmF5Q3Vz
dG9tLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVaW50OENsYW1wZWRBcnJh
eUN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0QW5pbWF0
aW9uQ3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRBbmlt
YXRpb25MaXN0Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJL
aXRDU1NLZXlmcmFtZVJ1bGVDdXN0b20uY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1Rhcmdl
dC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkocmV2aXNpb24g
MTI0OTkzKQorKysgU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkod29ya2luZyBjb3B5KQpAQCAt
MTI3LDggKzEyNyw2IEBAIFNPVVJDRVMgKz0gXAogICAgICBiaW5kaW5ncy9qcy9KU0V2ZW50VGFy
Z2V0Q3VzdG9tLmNwcCBcCiAgICAgIGJpbmRpbmdzL2pzL0pTRXhjZXB0aW9uQmFzZS5jcHAgXAog
ICAgICBiaW5kaW5ncy9qcy9KU0ZpbGVSZWFkZXJDdXN0b20uY3BwIFwKLSAgICAgYmluZGluZ3Mv
anMvSlNGbG9hdDMyQXJyYXlDdXN0b20uY3BwIFwKLSAgICAgYmluZGluZ3MvanMvSlNGbG9hdDY0
QXJyYXlDdXN0b20uY3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5j
cHAgXAogICAgICBiaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcCBcCiAg
ICAgIGJpbmRpbmdzL2pzL0pTSFRNTEFwcGxldEVsZW1lbnRDdXN0b20uY3BwIFwKQEAgLTE1NCw5
ICsxNTIsNiBAQCBTT1VSQ0VTICs9IFwKICAgICAgYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlw
dEhvc3RDdXN0b20uY3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdE1hbmFn
ZXIuY3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20u
Y3BwIFwKLSAgICAgYmluZGluZ3MvanMvSlNJbnQxNkFycmF5Q3VzdG9tLmNwcCBcCi0gICAgIGJp
bmRpbmdzL2pzL0pTSW50MzJBcnJheUN1c3RvbS5jcHAgXAotICAgICBiaW5kaW5ncy9qcy9KU0lu
dDhBcnJheUN1c3RvbS5jcHAgXAogICAgICBiaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVy
LmNwcCBcCiAgICAgIGJpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwIFwKICAgICAgYmlu
ZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmNwcCBcCkBAIC0xODgsMTAgKzE4Myw2IEBA
IFNPVVJDRVMgKz0gXAogICAgICBiaW5kaW5ncy9qcy9KU1RvdWNoQ3VzdG9tLmNwcCBcCiAgICAg
IGJpbmRpbmdzL2pzL0pTVG91Y2hMaXN0Q3VzdG9tLmNwcCBcCiAgICAgIGJpbmRpbmdzL2pzL0pT
VHJlZVdhbGtlckN1c3RvbS5jcHAgXAotICAgICBiaW5kaW5ncy9qcy9KU1VpbnQxNkFycmF5Q3Vz
dG9tLmNwcCBcCi0gICAgIGJpbmRpbmdzL2pzL0pTVWludDMyQXJyYXlDdXN0b20uY3BwIFwKLSAg
ICAgYmluZGluZ3MvanMvSlNVaW50OEFycmF5Q3VzdG9tLmNwcCBcCi0gICAgIGJpbmRpbmdzL2pz
L0pTVWludDhDbGFtcGVkQXJyYXlDdXN0b20uY3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNXZWJL
aXRBbmltYXRpb25DdXN0b20uY3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNXZWJLaXRBbmltYXRp
b25MaXN0Q3VzdG9tLmNwcCBcCiAgICAgIGJpbmRpbmdzL2pzL0pTV2ViS2l0Q1NTS2V5ZnJhbWVS
dWxlQ3VzdG9tLmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCShyZXZpc2lvbiAxMjQ5OTMpCisr
KyBTb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTc3LDggKzc3
LDYgQEAgTElTVChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvanMvSlNFdmVu
dExpc3RlbmVyLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uY3BwCiAg
ICAgYmluZGluZ3MvanMvSlNFeGNlcHRpb25CYXNlLmNwcAotICAgIGJpbmRpbmdzL2pzL0pTRmxv
YXQzMkFycmF5Q3VzdG9tLmNwcAotICAgIGJpbmRpbmdzL2pzL0pTRmxvYXQ2NEFycmF5Q3VzdG9t
LmNwcAogICAgIGJpbmRpbmdzL2pzL0pTR2VvbG9jYXRpb25DdXN0b20uY3BwCiAgICAgYmluZGlu
Z3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0hU
TUxBcHBsZXRFbGVtZW50Q3VzdG9tLmNwcApAQCAtMTAxLDkgKzk5LDYgQEAgTElTVChBUFBFTkQg
V2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNwcAogICAg
IGJpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0lt
YWdlRGF0YUN1c3RvbS5jcHAKLSAgICBiaW5kaW5ncy9qcy9KU0ludDE2QXJyYXlDdXN0b20uY3Bw
Ci0gICAgYmluZGluZ3MvanMvSlNJbnQzMkFycmF5Q3VzdG9tLmNwcAotICAgIGJpbmRpbmdzL2pz
L0pTSW50OEFycmF5Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRI
b3N0Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNw
cAogICAgIGJpbmRpbmdzL2pzL0pTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcApAQCAt
MTM3LDEwICsxMzIsNiBAQCBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5n
cy9qcy9KU1RvdWNoQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTVG91Y2hMaXN0Q3VzdG9t
LmNwcAogICAgIGJpbmRpbmdzL2pzL0pTVHJlZVdhbGtlckN1c3RvbS5jcHAKLSAgICBiaW5kaW5n
cy9qcy9KU1VpbnQxNkFycmF5Q3VzdG9tLmNwcCAKLSAgICBiaW5kaW5ncy9qcy9KU1VpbnQzMkFy
cmF5Q3VzdG9tLmNwcAotICAgIGJpbmRpbmdzL2pzL0pTVWludDhBcnJheUN1c3RvbS5jcHAKLSAg
ICBiaW5kaW5ncy9qcy9KU1VpbnQ4Q2xhbXBlZEFycmF5Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdz
L2pzL0pTV2ViS2l0QW5pbWF0aW9uQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTV2ViS2l0
QW5pbWF0aW9uTGlzdEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU1dlYktpdENTU0tleWZy
YW1lUnVsZUN1c3RvbS5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1VzZVY4LmNtYWtlCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1VzZVY4LmNtYWtlCShyZXZpc2lvbiAxMjQ5OTMpCisr
KyBTb3VyY2UvV2ViQ29yZS9Vc2VWOC5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTAxLDggKzEw
MSw2IEBAIExJU1QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEV2ZW50Q29uc3RydWN0b3JzLmNwcAogICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50
Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEZpbGVSZWFkZXJDdXN0b20uY3Bw
Ci0gICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4RmxvYXQzMkFycmF5Q3VzdG9tLmNwcAotICAgIGJp
bmRpbmdzL3Y4L2N1c3RvbS9WOEZsb2F0NjRBcnJheUN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy92
OC9jdXN0b20vVjhHZW9sb2NhdGlvbkN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy92OC9jdXN0b20v
VjhIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhI
VE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAKQEAgLTEyNyw5ICsxMjUsNiBAQCBMSVNUKEFQUEVO
RCBXZWJDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlw
dEhvc3RDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLmNwcAogICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEluc3BlY3RvckZyb250ZW5kSG9z
dEN1c3RvbS5jcHAKLSAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhJbnQxNkFycmF5Q3VzdG9tLmNw
cAotICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEludDMyQXJyYXlDdXN0b20uY3BwCi0gICAgYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SW50OEFycmF5Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL3Y4L2N1
c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3Nh
Z2VDaGFubmVsQ29uc3RydWN0b3IuY3BwCiAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2Fn
ZUV2ZW50Q3VzdG9tLmNwcApAQCAtMTUyLDkgKzE0Nyw2IEBAIExJU1QoQVBQRU5EIFdlYkNvcmVf
U09VUkNFUwogICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFN0b3JhZ2VDdXN0b20uY3BwCiAgICAg
YmluZGluZ3MvdjgvY3VzdG9tL1Y4U3R5bGVTaGVldEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy92
OC9jdXN0b20vVjhTdHlsZVNoZWV0TGlzdEN1c3RvbS5jcHAKLSAgICBiaW5kaW5ncy92OC9jdXN0
b20vVjhVaW50MTZBcnJheUN1c3RvbS5jcHAKLSAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhVaW50
MzJBcnJheUN1c3RvbS5jcHAKLSAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhVaW50OEFycmF5Q3Vz
dG9tLmNwcAogICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4dEN1
c3RvbS5jcHAKICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRBbmltYXRpb25DdXN0b20u
Y3BwCiAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0UG9pbnRDb25zdHJ1Y3Rvci5jcHAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDEyNDk5MykKKysrIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMjAwNCw4ICsyMDA0LDYgQEAKICAgICAg
ICAgICAgICdiaW5kaW5ncy9qcy9KU0V4Y2VwdGlvbkJhc2UuY3BwJywKICAgICAgICAgICAgICdi
aW5kaW5ncy9qcy9KU0V4Y2VwdGlvbkJhc2UuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMv
SlNGaWxlUmVhZGVyQ3VzdG9tLmNwcCcsCi0gICAgICAgICAgICAnYmluZGluZ3MvanMvSlNGbG9h
dDMyQXJyYXlDdXN0b20uY3BwJywKLSAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0Zsb2F0NjRB
cnJheUN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTR2VvbG9jYXRpb25D
dXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9u
Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNIVE1MQXBwbGV0RWxlbWVu
dEN1c3RvbS5jcHAnLApAQCAtMjA0MCw5ICsyMDM4LDYgQEAKICAgICAgICAgICAgICdiaW5kaW5n
cy9qcy9KU0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRp
bmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCcsCiAgICAgICAgICAgICAnYmluZGlu
Z3MvanMvSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwJywKLSAgICAgICAgICAgICdi
aW5kaW5ncy9qcy9KU0ludDE2QXJyYXlDdXN0b20uY3BwJywKLSAgICAgICAgICAgICdiaW5kaW5n
cy9qcy9KU0ludDMyQXJyYXlDdXN0b20uY3BwJywKLSAgICAgICAgICAgICdiaW5kaW5ncy9qcy9K
U0ludDhBcnJheUN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTSmF2YVNj
cmlwdEF1ZGlvTm9kZUN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTSmF2
YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pT
TGF6eUV2ZW50TGlzdGVuZXIuY3BwJywKQEAgLTIwOTQsOSArMjA4OSw2IEBACiAgICAgICAgICAg
ICAnYmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy9q
cy9KU1RyYWNrRXZlbnRDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1Ry
ZWVXYWxrZXJDdXN0b20uY3BwJywKLSAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1VpbnQxNkFy
cmF5Q3VzdG9tLmNwcCcsCi0gICAgICAgICAgICAnYmluZGluZ3MvanMvSlNVaW50MzJBcnJheUN1
c3RvbS5jcHAnLAotICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTVWludDhBcnJheUN1c3RvbS5j
cHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3Vz
dG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNXZWJLaXRBbmltYXRpb25DdXN0
b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1dlYktpdEFuaW1hdGlvbkxpc3RD
dXN0b20uY3BwJywKQEAgLTIzNDAsOCArMjMzMiw2IEBACiAgICAgICAgICAgICAnYmluZGluZ3Mv
djgvY3VzdG9tL1Y4RW50cnlTeW5jQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mv
djgvY3VzdG9tL1Y4RXZlbnRDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9j
dXN0b20vVjhGaWxlUmVhZGVyQ3VzdG9tLmNwcCcsCi0gICAgICAgICAgICAnYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RmxvYXQzMkFycmF5Q3VzdG9tLmNwcCcsCi0gICAgICAgICAgICAnYmluZGluZ3Mv
djgvY3VzdG9tL1Y4RmxvYXQ2NEFycmF5Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4R2VvbG9jYXRpb25DdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5k
aW5ncy92OC9jdXN0b20vVjhIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAnLAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcCcsCkBA
IC0yMzY4LDkgKzIzNTgsNiBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOElu
amVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEluamVjdGVkU2NyaXB0TWFuYWdlci5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEluc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAnLAotICAgICAgICAg
ICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEludDE2QXJyYXlDdXN0b20uY3BwJywKLSAgICAgICAg
ICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhJbnQzMkFycmF5Q3VzdG9tLmNwcCcsCi0gICAgICAg
ICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW50OEFycmF5Q3VzdG9tLmNwcCcsCiAgICAgICAg
ICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW50ZW50Q29uc3RydWN0b3IuY3BwJywKICAgICAg
ICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhKYXZhU2NyaXB0Q2FsbEZyYW1lQ3VzdG9tLmNw
cCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20uY3Bw
JywKQEAgLTI0MDQsMTAgKzIzOTEsNiBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFN0eWxlU2hlZXRDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0
b20vVjhTdHlsZVNoZWV0TGlzdEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOFRyYWNrRXZlbnRDdXN0b20uY3BwJywKLSAgICAgICAgICAgICdiaW5kaW5ncy92
OC9jdXN0b20vVjhVaW50MTZBcnJheUN1c3RvbS5jcHAnLAotICAgICAgICAgICAgJ2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOFVpbnQzMkFycmF5Q3VzdG9tLmNwcCcsCi0gICAgICAgICAgICAnYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4VWludDhBcnJheUN1c3RvbS5jcHAnLAotICAgICAgICAgICAgJ2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFVpbnQ4Q2xhbXBlZEFycmF5Q3VzdG9tLmNwcCcsCiAgICAgICAgICAg
ICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCcs
CiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0QW5pbWF0aW9uQ3VzdG9t
LmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0UG9pbnRDb25z
dHJ1Y3Rvci5jcHAnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTI0OTkzKQorKysgU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMzc1
LDEzICsxMzc1LDYgQEAKIAkJNDlFRUNGMEQxMDUwNzBDNDAwMDk5RkFCIC8qIEpTVWludDE2QXJy
YXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RUVD
RUZGMTA1MDcwQzQwMDA5OUZBQiAvKiBKU1VpbnQxNkFycmF5LmggKi87IH07CiAJCTQ5RUVDRjFC
MTA1MDcyRjMwMDA5OUZBQiAvKiBKU0FycmF5QnVmZmVyVmlldy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUVFQ0YxOTEwNTA3MkYzMDAwOTlGQUIg
LyogSlNBcnJheUJ1ZmZlclZpZXcuY3BwICovOyB9OwogCQk0OUVFQ0YxQzEwNTA3MkYzMDAwOTlG
QUIgLyogSlNBcnJheUJ1ZmZlclZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ5RUVDRjFBMTA1MDcyRjMwMDA5OUZBQiAvKiBKU0FycmF5QnVmZmVy
Vmlldy5oICovOyB9OwotCQk0OUVFQ0Y3ODEwNTA4RDlDMDAwOTlGQUIgLyogSlNJbnQ4QXJyYXlD
dXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDlFRUNGNzExMDUwOEQ5QzAwMDk5RkFCIC8qIEpTSW50OEFycmF5Q3VzdG9tLmNwcCAqLzsgfTsK
LQkJNDlFRUNGNzkxMDUwOEQ5QzAwMDk5RkFCIC8qIEpTRmxvYXQzMkFycmF5Q3VzdG9tLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RUVDRjcyMTA1
MDhEOUMwMDA5OUZBQiAvKiBKU0Zsb2F0MzJBcnJheUN1c3RvbS5jcHAgKi87IH07Ci0JCTQ5RUVD
RjdBMTA1MDhEOUMwMDA5OUZBQiAvKiBKU0ludDMyQXJyYXlDdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlFRUNGNzMxMDUwOEQ5QzAwMDk5
RkFCIC8qIEpTSW50MzJBcnJheUN1c3RvbS5jcHAgKi87IH07Ci0JCTQ5RUVDRjdCMTA1MDhEOUMw
MDA5OUZBQiAvKiBKU0ludDE2QXJyYXlDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlFRUNGNzQxMDUwOEQ5QzAwMDk5RkFCIC8qIEpTSW50
MTZBcnJheUN1c3RvbS5jcHAgKi87IH07Ci0JCTQ5RUVDRjdDMTA1MDhEOUMwMDA5OUZBQiAvKiBK
U1VpbnQ4QXJyYXlDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDlFRUNGNzUxMDUwOEQ5QzAwMDk5RkFCIC8qIEpTVWludDhBcnJheUN1c3Rv
bS5jcHAgKi87IH07Ci0JCTQ5RUVDRjdEMTA1MDhEOUMwMDA5OUZBQiAvKiBKU1VpbnQzMkFycmF5
Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ5RUVDRjc2MTA1MDhEOUMwMDA5OUZBQiAvKiBKU1VpbnQzMkFycmF5Q3VzdG9tLmNwcCAqLzsg
fTsKLQkJNDlFRUNGN0UxMDUwOEQ5QzAwMDk5RkFCIC8qIEpTVWludDE2QXJyYXlDdXN0b20uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlFRUNGNzcx
MDUwOEQ5QzAwMDk5RkFCIC8qIEpTVWludDE2QXJyYXlDdXN0b20uY3BwICovOyB9OwogCQk0OUVF
RDE0MjEwNTE5Njk0MDAwOTlGQUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RUVEMTNDMTA1MTk2
OTQwMDA5OUZBQiAvKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwICovOyB9OwogCQk0OUVF
RDE0MzEwNTE5Njk0MDAwOTlGQUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUVFRDEzRDEwNTE5Njk0
MDAwOTlGQUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0LmggKi87IH07CiAJCTQ5RUVEMTQ0
MTA1MTk2OTQwMDA5OUZBQiAvKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUVFRDEzRTEwNTE5Njk0
MDAwOTlGQUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwICovOyB9OwpAQCAtMTgz
MCw3ICsxODIzLDYgQEAKIAkJNkU2N0QyQTYxMjgwRThBNDAwODc1OEY3IC8qIEV4dGVuc2lvbnMz
RE9wZW5HTC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA2RTY3RDJBNDEyODBFOEE0MDA4NzU4RjcgLyogRXh0ZW5zaW9uczNET3BlbkdMLmNwcCAqLzsg
fTsKIAkJNkU2N0QyQTcxMjgwRThBNDAwODc1OEY3IC8qIEV4dGVuc2lvbnMzRE9wZW5HTC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU2N0QyQTUxMjgw
RThBNDAwODc1OEY3IC8qIEV4dGVuc2lvbnMzRE9wZW5HTC5oICovOyB9OwogCQk2RTY3RDJBOTEy
ODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9uczNELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTY3RDJBODEyODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5z
aW9uczNELmggKi87IH07Ci0JCTZFQkM1RDg1MTM4QjRDRTAwMEEwQ0Y4QSAvKiBKU0Zsb2F0NjRB
cnJheUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA2RUJDNUQ4NDEzOEI0Q0UwMDBBMENGOEEgLyogSlNGbG9hdDY0QXJyYXlDdXN0b20uY3Bw
ICovOyB9OwogCQk2RUJDNUVBRjEzOEI1MEYyMDBBMENGOEEgLyogSlNGbG9hdDY0QXJyYXkuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkVCQzVFQUQx
MzhCNTBGMjAwQTBDRjhBIC8qIEpTRmxvYXQ2NEFycmF5LmNwcCAqLzsgfTsKIAkJNkVCQzVFQjAx
MzhCNTBGMjAwQTBDRjhBIC8qIEpTRmxvYXQ2NEFycmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RUJDNUVBRTEzOEI1MEYyMDBBMENGOEEgLyogSlNG
bG9hdDY0QXJyYXkuaCAqLzsgfTsKIAkJNkVCRjBFNDgxMkE4OTI2MTAwREIxNzA5IC8qIE9FU1Rl
eHR1cmVGbG9hdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA2RUJGMEU0NTEyQTg5MjYxMDBEQjE3MDkgLyogT0VTVGV4dHVyZUZsb2F0LmNwcCAqLzsg
fTsKQEAgLTMxMDYsNyArMzA5OCw2IEBACiAJCTkwMDE3ODgxMTJFMDM3MDcwMDY0ODQ2MiAvKiBK
U09FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkwMDE3ODdGMTJFMDM3MDcwMDY0ODQ2MiAvKiBKU09FU1N0YW5kYXJk
RGVyaXZhdGl2ZXMuaCAqLzsgfTsKIAkJOTEwODlEMzIxNEMzMzYwMDAwNUFGQzQ5IC8qIEpTVWlu
dDhDbGFtcGVkQXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkxMDg5RDMwMTRDMzM1Q0QwMDVBRkM0OSAvKiBKU1VpbnQ4Q2xhbXBlZEFycmF5Lmgg
Ki87IH07CiAJCTkxMDg5RDMzMTRDMzM2MDUwMDVBRkM0OSAvKiBKU1VpbnQ4Q2xhbXBlZEFycmF5
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkxMDg5
RDJGMTRDMzM1Q0QwMDVBRkM0OSAvKiBKU1VpbnQ4Q2xhbXBlZEFycmF5LmNwcCAqLzsgfTsKLQkJ
OTFBMzkwNUIxNEMwRjYxMTAwRjY3OTAxIC8qIEpTVWludDhDbGFtcGVkQXJyYXlDdXN0b20uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTFBMzkwNUEx
NEMwRjYxMTAwRjY3OTAxIC8qIEpTVWludDhDbGFtcGVkQXJyYXlDdXN0b20uY3BwICovOyB9Owog
CQk5MzAyQjBCRDBENzlGODI5MDBDN0VFODMgLyogUGFnZUdyb3VwLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMDJCMEJDMEQ3OUY4MjkwMEM3RUU4
MyAvKiBQYWdlR3JvdXAuY3BwICovOyB9OwogCQk5MzAyQjBCRjBENzlGODJDMDBDN0VFODMgLyog
UGFnZUdyb3VwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5MzAyQjBCRTBENzlGODJDMDBDN0VFODMgLyogUGFnZUdyb3VwLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTMwNUIyNEQwOThGMUI2QjAwQzI4
ODU1IC8qIFRpbWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5MzA1QjI0QzA5OEYxQjZCMDBDMjg4NTUgLyogVGltZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODUxMCwxMyArODUwMSw2IEBACiAJ
CTQ5RUVDRUZGMTA1MDcwQzQwMDA5OUZBQiAvKiBKU1VpbnQxNkFycmF5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVWludDE2QXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDlFRUNGMTkxMDUwNzJGMzAwMDk5RkFCIC8qIEpTQXJyYXlCdWZmZXJWaWV3
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQXJyYXlCdWZmZXJW
aWV3LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDlFRUNGMUExMDUwNzJGMzAw
MDk5RkFCIC8qIEpTQXJyYXlCdWZmZXJWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTQXJyYXlCdWZmZXJWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTQ5RUVDRjcxMTA1MDhEOUMwMDA5OUZBQiAvKiBKU0ludDhBcnJheUN1c3RvbS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0ludDhBcnJheUN1c3RvbS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ5RUVDRjcyMTA1MDhEOUMwMDA5OUZBQiAvKiBK
U0Zsb2F0MzJBcnJheUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU0Zsb2F0MzJBcnJheUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTQ5RUVDRjczMTA1MDhEOUMwMDA5OUZBQiAvKiBKU0ludDMyQXJyYXlDdXN0b20uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJbnQzMkFycmF5Q3VzdG9tLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDlFRUNGNzQxMDUwOEQ5QzAwMDk5RkFC
IC8qIEpTSW50MTZBcnJheUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0ludDE2QXJyYXlDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk0OUVFQ0Y3NTEwNTA4RDlDMDAwOTlGQUIgLyogSlNVaW50OEFycmF5Q3VzdG9tLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVWludDhBcnJheUN1c3RvbS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ5RUVDRjc2MTA1MDhEOUMwMDA5OUZB
QiAvKiBKU1VpbnQzMkFycmF5Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTVWludDMyQXJyYXlDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk0OUVFQ0Y3NzEwNTA4RDlDMDAwOTlGQUIgLyogSlNVaW50MTZBcnJheUN1c3RvbS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1VpbnQxNkFycmF5Q3Vz
dG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDlFRUQxM0MxMDUxOTY5NDAw
MDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0OUVFRDEzRDEwNTE5Njk0MDAwOTlGQUIgLyogSlNDYW52
YXNSZW5kZXJpbmdDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
Q2FudmFzUmVuZGVyaW5nQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
OUVFRDEzRTEwNTE5Njk0MDAwOTlGQUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODk5MCw3ICs4OTc0
LDYgQEAKIAkJNkU2N0QyQTUxMjgwRThBNDAwODc1OEY3IC8qIEV4dGVuc2lvbnMzRE9wZW5HTC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeHRlbnNpb25zM0RPcGVuR0wuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkU2N0QyQTgxMjgwRThCRDAwODc1OEY3IC8q
IEV4dGVuc2lvbnMzRC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeHRlbnNp
b25zM0QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkVCQzVEODAxMzhCNEM0RTAw
QTBDRjhBIC8qIEZsb2F0NjRBcnJheS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gRmxvYXQ2
NEFycmF5LmlkbDsgcGF0aCA9IGNhbnZhcy9GbG9hdDY0QXJyYXkuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk2RUJDNUQ4NDEzOEI0Q0UwMDBBMENGOEEgLyogSlNGbG9hdDY0QXJy
YXlDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNGbG9h
dDY0QXJyYXlDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RUJDNUVB
RDEzOEI1MEYyMDBBMENGOEEgLyogSlNGbG9hdDY0QXJyYXkuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNGbG9hdDY0QXJyYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk2RUJDNUVBRTEzOEI1MEYyMDBBMENGOEEgLyogSlNGbG9hdDY0QXJyYXku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNGbG9hdDY0QXJyYXkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkVCRjBFNDUxMkE4OTI2MTAwREIxNzA5IC8qIE9F
U1RleHR1cmVGbG9hdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBP
RVNUZXh0dXJlRmxvYXQuY3BwOyBwYXRoID0gY2FudmFzL09FU1RleHR1cmVGbG9hdC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDI0OCw3ICsxMDIzMSw2IEBACiAJCTkxMDg5
RDJGMTRDMzM1Q0QwMDVBRkM0OSAvKiBKU1VpbnQ4Q2xhbXBlZEFycmF5LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVWludDhDbGFtcGVkQXJyYXkuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MTA4OUQzMDE0QzMzNUNEMDA1QUZDNDkgLyogSlNV
aW50OENsYW1wZWRBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Vp
bnQ4Q2xhbXBlZEFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkxQTM5MDU4
MTRDMEY0QjkwMEY2NzkwMSAvKiBVaW50OENsYW1wZWRBcnJheS5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gVWludDhDbGFt
cGVkQXJyYXkuaWRsOyBwYXRoID0gY2FudmFzL1VpbnQ4Q2xhbXBlZEFycmF5LmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTFBMzkwNUExNEMwRjYxMTAwRjY3OTAxIC8qIEpTVWlu
dDhDbGFtcGVkQXJyYXlDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNVaW50OENsYW1wZWRBcnJheUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTkzMDA2MkQ3MTU5QjQ1QjYwMEFDRDQ4QSAvKiBORU9OSGVscGVycy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBORU9OSGVscGVycy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5MzAyQjBCQzBENzlGODI5MDBDN0VFODMgLyogUGFnZUdyb3VwLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2VHcm91cC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMDJCMEJFMEQ3OUY4MkMwMEM3RUU4MyAvKiBQ
YWdlR3JvdXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFnZUdyb3VwLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDI2NCw4ICsyMDI0Niw2IEBACiAJCQkJ
ODkzQzQ4NTIxMjQ5OUIwNjAwMkIzRDg2IC8qIEpTRW50cnlTeW5jQ3VzdG9tLmNwcCAqLywKIAkJ
CQlCQ0VGQUY0RDBDMzE3RTY5MDBGQTgxRjYgLyogSlNFdmVudEN1c3RvbS5jcHAgKi8sCiAJCQkJ
MkU3NTgyRUQxMjc2NEYyNjAwNjI2MjhCIC8qIEpTRmlsZVJlYWRlckN1c3RvbS5jcHAgKi8sCi0J
CQkJNDlFRUNGNzIxMDUwOEQ5QzAwMDk5RkFCIC8qIEpTRmxvYXQzMkFycmF5Q3VzdG9tLmNwcCAq
LywKLQkJCQk2RUJDNUQ4NDEzOEI0Q0UwMDBBMENGOEEgLyogSlNGbG9hdDY0QXJyYXlDdXN0b20u
Y3BwICovLAogCQkJCUZFODBEN0E2MEU5QzFFRDIwMDBENkY3NSAvKiBKU0dlb2xvY2F0aW9uQ3Vz
dG9tLmNwcCAqLywKIAkJCQlCQ0U3QjE5MjBENEU4Njk2MDA3NUE1MzkgLyogSlNIaXN0b3J5Q3Vz
dG9tLmNwcCAqLywKIAkJCQlCQzk3RTQyQjEwOTE1QjA2MDAxMEQzNjEgLyogSlNIVE1MQWxsQ29s
bGVjdGlvbkN1c3RvbS5jcHAgKi8sCkBAIC0yMDI5OCw5ICsyMDI3OCw2IEBACiAJCQkJN0EwRTc2
RDQxMEJGMDUwNzAwQTAyNzZFIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcCAqLywK
IAkJCQlGMzE2Mzk2RDEzMjk0ODc2MDBBNjQ5Q0IgLyogSlNJbmplY3RlZFNjcmlwdE1hbmFnZXIu
Y3BwICovLAogCQkJCTdBNzRFQ0JDMTAxODM5REEwMEJGOTM5RSAvKiBKU0luc3BlY3RvckZyb250
ZW5kSG9zdEN1c3RvbS5jcHAgKi8sCi0JCQkJNDlFRUNGNzQxMDUwOEQ5QzAwMDk5RkFCIC8qIEpT
SW50MTZBcnJheUN1c3RvbS5jcHAgKi8sCi0JCQkJNDlFRUNGNzMxMDUwOEQ5QzAwMDk5RkFCIC8q
IEpTSW50MzJBcnJheUN1c3RvbS5jcHAgKi8sCi0JCQkJNDlFRUNGNzExMDUwOEQ5QzAwMDk5RkFC
IC8qIEpTSW50OEFycmF5Q3VzdG9tLmNwcCAqLywKIAkJCQlGREVBQUFGRDEyQjAyRjQ5MDBEQ0Yz
M0IgLyogSlNKYXZhU2NyaXB0QXVkaW9Ob2RlQ3VzdG9tLmNwcCAqLywKIAkJCQkxQzVGQUVFNjBE
Q0ZEQTY4MDBENThGNzggLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lQ3VzdG9tLmNwcCAqLywKIAkJ
CQlCQ0UxQzQzRjBEOTgzMEY0MDAzQjAyRjIgLyogSlNMb2NhdGlvbkN1c3RvbS5jcHAgKi8sCkBA
IC0yMDM0MiwxMCArMjAzMTksNiBAQAogCQkJCTA3ODQ2Mzg0MTQ1QjFCOEUwMEE1OERGMSAvKiBK
U1RyYWNrQ3VzdG9tLmggKi8sCiAJCQkJMDdCNUEzMEExNDY4N0I4NDAwQTgxRUNFIC8qIEpTVHJh
Y2tFdmVudEN1c3RvbS5jcHAgKi8sCiAJCQkJNTE2QkI3OTIwQ0U5MUU2ODAwNTEyRjc5IC8qIEpT
VHJlZVdhbGtlckN1c3RvbS5jcHAgKi8sCi0JCQkJNDlFRUNGNzcxMDUwOEQ5QzAwMDk5RkFCIC8q
IEpTVWludDE2QXJyYXlDdXN0b20uY3BwICovLAotCQkJCTQ5RUVDRjc2MTA1MDhEOUMwMDA5OUZB
QiAvKiBKU1VpbnQzMkFycmF5Q3VzdG9tLmNwcCAqLywKLQkJCQk0OUVFQ0Y3NTEwNTA4RDlDMDAw
OTlGQUIgLyogSlNVaW50OEFycmF5Q3VzdG9tLmNwcCAqLywKLQkJCQk5MUEzOTA1QTE0QzBGNjEx
MDBGNjc5MDEgLyogSlNVaW50OENsYW1wZWRBcnJheUN1c3RvbS5jcHAgKi8sCiAJCQkJRkQ4RTlC
REUxM0Q0Q0QyQjAwNTBEQzcyIC8qIEpTV2F2ZVNoYXBlck5vZGVDdXN0b20uY3BwICovLAogCQkJ
CTQ5RUVEMTRDMTA1MTk3MUEwMDA5OUZBQiAvKiBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3Rv
bS5jcHAgKi8sCiAJCQkJMzE5RTY4ODYxMzI3QzkxMTAwNEFDOTFBIC8qIEpTV2ViS2l0QW5pbWF0
aW9uQ3VzdG9tLmNwcCAqLywKQEAgLTI3MDM2LDkgKzI3MDA5LDcgQEAKIAkJCQk0NkRBODQ0RDEy
MjRBMDcxMDA2MEQwMDYgLyogSlNGaWxlV3JpdGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg5
M0M0N0JCMTIzOEEwQTkwMDJCM0Q4NiAvKiBKU0ZpbGVXcml0ZXJDYWxsYmFjay5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk0OUVFQ0YwMjEwNTA3MEM0MDAwOTlGQUIgLyogSlNGbG9hdDMyQXJyYXku
Y3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNDlFRUNGNzkxMDUwOEQ5QzAwMDk5RkFCIC8qIEpTRmxv
YXQzMkFycmF5Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTZFQkM1RUFGMTM4QjUwRjIw
MEEwQ0Y4QSAvKiBKU0Zsb2F0NjRBcnJheS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk2RUJDNUQ4
NTEzOEI0Q0UwMDBBMENGOEEgLyogSlNGbG9hdDY0QXJyYXlDdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRkU4MERBNjMwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb24uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRkU4MEQ3QUIwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTR2VvbG9jYXRp
b25DdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkU4MERBNjUwRTlDNDcwMzAwMEQ2Rjc1
IC8qIEpTR2VvcG9zaXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNzE2NSwxMSArMjcxMzYs
OCBAQAogCQkJCTdBMEU3NzFFMTBDMDBEQjEwMEEwMjc2RSAvKiBKU0luc3BlY3RvckZyb250ZW5k
SG9zdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QTc0RUNCRDEwMTgzOURBMDBCRjkzOUUgLyog
SlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlF
RUNGMDYxMDUwNzBDNDAwMDk5RkFCIC8qIEpTSW50MTZBcnJheS5jcHAgaW4gU291cmNlcyAqLywK
LQkJCQk0OUVFQ0Y3QjEwNTA4RDlDMDAwOTlGQUIgLyogSlNJbnQxNkFycmF5Q3VzdG9tLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTQ5RUVDRjA0MTA1MDcwQzQwMDA5OUZBQiAvKiBKU0ludDMyQXJy
YXkuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNDlFRUNGN0ExMDUwOEQ5QzAwMDk5RkFCIC8qIEpT
SW50MzJBcnJheUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUM3Qjk5NTEwNDJEMkQz
MDAwOUQ0NDcgLyogSlNJbnQ4QXJyYXkuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNDlFRUNGNzgx
MDUwOEQ5QzAwMDk5RkFCIC8qIEpTSW50OEFycmF5Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUZEQTE1RUNEMTJCMDNGNjEwMDNBNTgzQSAvKiBKU0phdmFTY3JpcHRBdWRpb05vZGUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRkRFQUFBRkUxMkIwMkY0OTAwRENGMzNCIC8qIEpTSmF2YVNj
cmlwdEF1ZGlvTm9kZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQzVGQUVEMTBEQ0ZE
OTAxMDBENThGNzggLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCBpbiBTb3VyY2VzICovLApA
QCAtMjc0NTMsMTMgKzI3NDIxLDkgQEAKIAkJCQk1MTZCQjc5NDBDRTkxRTY4MDA1MTJGNzkgLyog
SlNUcmVlV2Fsa2VyQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4NjYyOUQwMDlEQTJC
NDgwMDk2MzNBNSAvKiBKU1VJRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlFRUNGMEMx
MDUwNzBDNDAwMDk5RkFCIC8qIEpTVWludDE2QXJyYXkuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
NDlFRUNGN0UxMDUwOEQ5QzAwMDk5RkFCIC8qIEpTVWludDE2QXJyYXlDdXN0b20uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNDlFRUNGMEExMDUwNzBDNDAwMDk5RkFCIC8qIEpTVWludDMyQXJyYXku
Y3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNDlFRUNGN0QxMDUwOEQ5QzAwMDk5RkFCIC8qIEpTVWlu
dDMyQXJyYXlDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlFRUNGMDgxMDUwNzBDNDAw
MDk5RkFCIC8qIEpTVWludDhBcnJheS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk0OUVFQ0Y3QzEw
NTA4RDlDMDAwOTlGQUIgLyogSlNVaW50OEFycmF5Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTkxMDg5RDMzMTRDMzM2MDUwMDVBRkM0OSAvKiBKU1VpbnQ4Q2xhbXBlZEFycmF5LmNwcCBp
biBTb3VyY2VzICovLAotCQkJCTkxQTM5MDVCMTRDMEY2MTEwMEY2NzkwMSAvKiBKU1VpbnQ4Q2xh
bXBlZEFycmF5Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdCMUVBMENFMTU3NkM1QjUw
MDYwMTc3RCAvKiBKU1VuZG9NYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE1Qzc3MDk0
MTAwRDNDQTgwMDVCQTI2NyAvKiBKU1ZhbGlkaXR5U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRkQ4MkQ3RjcxM0Q0QzhCRDAwNEU0MzcyIC8qIEpTV2F2ZVNoYXBlck5vZGUuY3BwIGluIFNv
dXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxs
SW5PbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmlu
ZGluZ3NBbGxJbk9uZS5jcHAJKHJldmlzaW9uIDEyNDk5MykKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDgg
KzgyLDYgQEAKICNpbmNsdWRlICJKU0V2ZW50TGlzdGVuZXIuY3BwIgogI2luY2x1ZGUgIkpTRXZl
bnRUYXJnZXRDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTRXhjZXB0aW9uQmFzZS5jcHAiCi0jaW5j
bHVkZSAiSlNGbG9hdDMyQXJyYXlDdXN0b20uY3BwIgotI2luY2x1ZGUgIkpTRmxvYXQ2NEFycmF5
Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcCIKICNpbmNsdWRl
ICJKU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0hUTUxBcHBsZXRF
bGVtZW50Q3VzdG9tLmNwcCIKQEAgLTEwOSw5ICsxMDcsNiBAQAogI2luY2x1ZGUgIkpTSW5qZWN0
ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0luamVjdGVkU2NyaXB0TWFuYWdl
ci5jcHAiCiAjaW5jbHVkZSAiSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwIgotI2lu
Y2x1ZGUgIkpTSW50MTZBcnJheUN1c3RvbS5jcHAiCi0jaW5jbHVkZSAiSlNJbnQzMkFycmF5Q3Vz
dG9tLmNwcCIKLSNpbmNsdWRlICJKU0ludDhBcnJheUN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNK
YXZhU2NyaXB0Q2FsbEZyYW1lQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0xhenlFdmVudExpc3Rl
bmVyLmNwcCIKICNpbmNsdWRlICJKU0xvY2F0aW9uQ3VzdG9tLmNwcCIKQEAgLTE1NCwxMCArMTQ5
LDYgQEAKICNpbmNsdWRlICJKU1RyYWNrQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1RyYWNrRXZl
bnRDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTVHJlZVdhbGtlckN1c3RvbS5jcHAiCi0jaW5jbHVk
ZSAiSlNVaW50MTZBcnJheUN1c3RvbS5jcHAiCi0jaW5jbHVkZSAiSlNVaW50MzJBcnJheUN1c3Rv
bS5jcHAiCi0jaW5jbHVkZSAiSlNVaW50OEFycmF5Q3VzdG9tLmNwcCIKLSNpbmNsdWRlICJKU1Vp
bnQ4Q2xhbXBlZEFycmF5Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1dlYktpdEFuaW1hdGlvbkN1
c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNXZWJLaXRBbmltYXRpb25MaXN0Q3VzdG9tLmNwcCIKICNp
bmNsdWRlICJKU1dlYktpdENTU0tleWZyYW1lUnVsZUN1c3RvbS5jcHAiCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Zsb2F0MzJBcnJheUN1c3RvbS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGbG9hdDMyQXJyYXlDdXN0b20uY3BwCShy
ZXZpc2lvbiAxMjQ5OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Zsb2F0MzJB
cnJheUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNTEgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJKU0Zsb2F0MzJBcnJheS5oIgotCi0jaW5j
bHVkZSAiSlNBcnJheUJ1ZmZlclZpZXdIZWxwZXIuaCIKLSNpbmNsdWRlIDx3dGYvRmxvYXQzMkFy
cmF5Lmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
dm9pZCBKU0Zsb2F0MzJBcnJheTo6aW5kZXhTZXR0ZXIoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIHVu
c2lnbmVkIGluZGV4LCBKU0M6OkpTVmFsdWUgdmFsdWUpCi17Ci0gICAgaW1wbCgpLT5zZXQoaW5k
ZXgsIHN0YXRpY19jYXN0PGZsb2F0Pih2YWx1ZS50b051bWJlcihleGVjKSkpOwotfQotCi1KU0M6
OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgRmxvYXQzMkFycmF5KiBvYmplY3QpCi17Ci0gICAgcmV0dXJuIHRvSlNBcnJh
eUJ1ZmZlclZpZXc8SlNGbG9hdDMyQXJyYXk+KGV4ZWMsIGdsb2JhbE9iamVjdCwgb2JqZWN0KTsK
LX0KLQotSlNDOjpKU1ZhbHVlIEpTRmxvYXQzMkFycmF5OjpzZXQoSlNDOjpFeGVjU3RhdGUqIGV4
ZWMpCi17Ci0gICAgcmV0dXJuIHNldFdlYkdMQXJyYXlIZWxwZXI8RmxvYXQzMkFycmF5LCBmbG9h
dD4oZXhlYywgaW1wbCgpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGbG9hdDY0QXJyYXlDdXN0b20uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmxvYXQ2NEFycmF5Q3VzdG9tLmNw
cAkocmV2aXNpb24gMTI0OTkzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGbG9h
dDY0QXJyYXlDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUxICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSlNGbG9hdDY0QXJyYXkuaCIKLQot
I2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJWaWV3SGVscGVyLmgiCi0jaW5jbHVkZSA8d3RmL0Zsb2F0
NjRBcnJheS5oPgotCi11c2luZyBuYW1lc3BhY2UgSlNDOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLXZvaWQgSlNGbG9hdDY0QXJyYXk6OmluZGV4U2V0dGVyKEpTQzo6RXhlY1N0YXRlKiBleGVj
LCB1bnNpZ25lZCBpbmRleCwgSlNDOjpKU1ZhbHVlIHZhbHVlKQotewotICAgIGltcGwoKS0+c2V0
KGluZGV4LCB2YWx1ZS50b051bWJlcihleGVjKSk7Ci19Ci0KLUpTQzo6SlNWYWx1ZSB0b0pTKEpT
Qzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBGbG9h
dDY0QXJyYXkqIG9iamVjdCkKLXsKLSAgICByZXR1cm4gdG9KU0FycmF5QnVmZmVyVmlldzxKU0Zs
b2F0NjRBcnJheT4oZXhlYywgZ2xvYmFsT2JqZWN0LCBvYmplY3QpOwotfQotCi1KU0M6OkpTVmFs
dWUgSlNGbG9hdDY0QXJyYXk6OnNldChKU0M6OkV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICByZXR1
cm4gc2V0V2ViR0xBcnJheUhlbHBlcjxGbG9hdDY0QXJyYXksIGRvdWJsZT4oZXhlYywgaW1wbCgp
KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNJbnQ4QXJyYXlDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSW50OEFycmF5Q3VzdG9tLmNwcAkocmV2aXNpb24gMTI0OTkzKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnQ4QXJyYXlDdXN0b20uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiSlNJbnQ4QXJyYXkuaCIKLQotI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJWaWV3
SGVscGVyLmgiCi0jaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgotI2luY2x1ZGUgPHd0Zi9JbnQ4
QXJyYXkuaD4KLQotdXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci12b2lkIEpTSW50OEFycmF5OjppbmRleFNldHRlcihKU0M6OkV4ZWNTdGF0ZSogZXhlYywgdW5z
aWduZWQgaW5kZXgsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKLXsKLSAgICBpbXBsKCktPnNldChpbmRl
eCwgc3RhdGljX2Nhc3Q8c2lnbmVkIGNoYXI+KHZhbHVlLnRvSW50MzIoZXhlYykpKTsKLX0KLQot
SlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEludDhBcnJheSogb2JqZWN0KQotewotICAgIHJldHVybiB0b0pTQXJy
YXlCdWZmZXJWaWV3PEpTSW50OEFycmF5PihleGVjLCBnbG9iYWxPYmplY3QsIG9iamVjdCk7Ci19
Ci0KLUpTQzo6SlNWYWx1ZSBKU0ludDhBcnJheTo6c2V0KEpTQzo6RXhlY1N0YXRlKiBleGVjKQot
ewotICAgIHJldHVybiBzZXRXZWJHTEFycmF5SGVscGVyPEludDhBcnJheSwgc2lnbmVkIGNoYXI+
KGV4ZWMsIGltcGwoKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW50MTZBcnJheUN1c3RvbS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnQxNkFycmF5Q3VzdG9tLmNwcAkocmV2
aXNpb24gMTI0OTkzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnQxNkFycmF5
Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1MSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkpTSW50MTZBcnJheS5oIgotCi0jaW5jbHVkZSAi
SlNBcnJheUJ1ZmZlclZpZXdIZWxwZXIuaCIKLSNpbmNsdWRlIDx3dGYvSW50MTZBcnJheS5oPgot
Ci11c2luZyBuYW1lc3BhY2UgSlNDOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgSlNJ
bnQxNkFycmF5OjppbmRleFNldHRlcihKU0M6OkV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW5k
ZXgsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKLXsKLSAgICBpbXBsKCktPnNldChpbmRleCwgc3RhdGlj
X2Nhc3Q8c2lnbmVkIHNob3J0Pih2YWx1ZS50b0ludDMyKGV4ZWMpKSk7Ci19Ci0KLUpTQzo6SlNW
YWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBJbnQxNkFycmF5KiBvYmplY3QpCi17Ci0gICAgcmV0dXJuIHRvSlNBcnJheUJ1ZmZl
clZpZXc8SlNJbnQxNkFycmF5PihleGVjLCBnbG9iYWxPYmplY3QsIG9iamVjdCk7Ci19Ci0KLUpT
Qzo6SlNWYWx1ZSBKU0ludDE2QXJyYXk6OnNldChKU0M6OkV4ZWNTdGF0ZSogZXhlYykKLXsKLSAg
ICByZXR1cm4gc2V0V2ViR0xBcnJheUhlbHBlcjxJbnQxNkFycmF5LCBzaG9ydD4oZXhlYywgaW1w
bCgpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNJbnQzMkFycmF5Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ludDMyQXJyYXlDdXN0b20uY3BwCShyZXZpc2lvbiAxMjQ5
OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ludDMyQXJyYXlDdXN0b20uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiSlNJbnQzMkFycmF5LmgiCi0KLSNpbmNsdWRlICJKU0FycmF5QnVm
ZmVyVmlld0hlbHBlci5oIgotI2luY2x1ZGUgPHd0Zi9JbnQzMkFycmF5Lmg+Ci0KLXVzaW5nIG5h
bWVzcGFjZSBKU0M7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBKU0ludDMyQXJyYXk6
OmluZGV4U2V0dGVyKEpTQzo6RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbmRleCwgSlNDOjpK
U1ZhbHVlIHZhbHVlKQotewotICAgIGltcGwoKS0+c2V0KGluZGV4LCBzdGF0aWNfY2FzdDxzaWdu
ZWQgaW50Pih2YWx1ZS50b0ludDMyKGV4ZWMpKSk7Ci19Ci0KLUpTQzo6SlNWYWx1ZSB0b0pTKEpT
Qzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJbnQz
MkFycmF5KiBvYmplY3QpCi17Ci0gICAgcmV0dXJuIHRvSlNBcnJheUJ1ZmZlclZpZXc8SlNJbnQz
MkFycmF5PihleGVjLCBnbG9iYWxPYmplY3QsIG9iamVjdCk7Ci19Ci0KLUpTQzo6SlNWYWx1ZSBK
U0ludDMyQXJyYXk6OnNldChKU0M6OkV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICByZXR1cm4gc2V0
V2ViR0xBcnJheUhlbHBlcjxJbnQzMkFycmF5LCBpbnQ+KGV4ZWMsIGltcGwoKSk7Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
VWludDhBcnJheUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNVaW50OEFycmF5Q3VzdG9tLmNwcAkocmV2aXNpb24gMTI0OTkzKQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNVaW50OEFycmF5Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIkpTVWludDhBcnJheS5oIgotCi0jaW5jbHVkZSAiSlNBcnJheUJ1ZmZlclZpZXdIZWxwZXIu
aCIKLSNpbmNsdWRlIDx3dGYvVWludDhBcnJheS5oPgotCi11c2luZyBuYW1lc3BhY2UgSlNDOwot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgSlNVaW50OEFycmF5OjppbmRleFNldHRlcihK
U0M6OkV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW5kZXgsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkK
LXsKLSAgICBpbXBsKCktPnNldChpbmRleCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4odmFs
dWUudG9JbnQzMihleGVjKSkpOwotfQotCi1KU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0
ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVWludDhBcnJheSogb2Jq
ZWN0KQotewotICAgIHJldHVybiB0b0pTQXJyYXlCdWZmZXJWaWV3PEpTVWludDhBcnJheT4oZXhl
YywgZ2xvYmFsT2JqZWN0LCBvYmplY3QpOwotfQotCi1KU0M6OkpTVmFsdWUgSlNVaW50OEFycmF5
OjpzZXQoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgcmV0dXJuIHNldFdlYkdMQXJyYXlI
ZWxwZXI8VWludDhBcnJheSwgdW5zaWduZWQgY2hhcj4oZXhlYywgaW1wbCgpKTsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNV
aW50OENsYW1wZWRBcnJheUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNVaW50OENsYW1wZWRBcnJheUN1c3RvbS5jcHAJKHJldmlzaW9uIDEyNDk5
MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWludDhDbGFtcGVkQXJyYXlDdXN0
b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJKU1VpbnQ4Q2xhbXBlZEFycmF5LmgiCi0KLSNpbmNsdWRl
ICJKU0FycmF5QnVmZmVyVmlld0hlbHBlci5oIgotI2luY2x1ZGUgPHd0Zi9VaW50OENsYW1wZWRB
cnJheS5oPgotCi11c2luZyBuYW1lc3BhY2UgSlNDOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LXZvaWQgSlNVaW50OENsYW1wZWRBcnJheTo6aW5kZXhTZXR0ZXIoSlNDOjpFeGVjU3RhdGUqIGV4
ZWMsIHVuc2lnbmVkIGluZGV4LCBKU0M6OkpTVmFsdWUgdmFsdWUpCi17Ci0gICAgaW1wbCgpLT5z
ZXQoaW5kZXgsIHZhbHVlLnRvTnVtYmVyKGV4ZWMpKTsKLX0KLQotSlNDOjpKU1ZhbHVlIHRvSlMo
SlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFVp
bnQ4Q2xhbXBlZEFycmF5KiBvYmplY3QpCi17Ci0gICAgcmV0dXJuIHRvSlNBcnJheUJ1ZmZlclZp
ZXc8SlNVaW50OENsYW1wZWRBcnJheT4oZXhlYywgZ2xvYmFsT2JqZWN0LCBvYmplY3QpOwotfQot
Ci1KU0M6OkpTVmFsdWUgSlNVaW50OENsYW1wZWRBcnJheTo6c2V0KEpTQzo6RXhlY1N0YXRlKiBl
eGVjKQotewotICAgIHJldHVybiBzZXRXZWJHTEFycmF5SGVscGVyPFVpbnQ4Q2xhbXBlZEFycmF5
LCB1bnNpZ25lZCBjaGFyPihleGVjLCBpbXBsKCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQxNkFycmF5Q3VzdG9t
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQxNkFy
cmF5Q3VzdG9tLmNwcAkocmV2aXNpb24gMTI0OTkzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNVaW50MTZBcnJheUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNTEgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJKU1VpbnQxNkFy
cmF5LmgiCi0KLSNpbmNsdWRlICJKU0FycmF5QnVmZmVyVmlld0hlbHBlci5oIgotI2luY2x1ZGUg
PHd0Zi9VaW50MTZBcnJheS5oPgotCi11c2luZyBuYW1lc3BhY2UgSlNDOwotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLXZvaWQgSlNVaW50MTZBcnJheTo6aW5kZXhTZXR0ZXIoSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMsIHVuc2lnbmVkIGluZGV4LCBKU0M6OkpTVmFsdWUgdmFsdWUpCi17Ci0gICAgaW1w
bCgpLT5zZXQoaW5kZXgsIHN0YXRpY19jYXN0PHVuc2lnbmVkIHNob3J0Pih2YWx1ZS50b0ludDMy
KGV4ZWMpKSk7Ci19Ci0KLUpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBVaW50MTZBcnJheSogb2JqZWN0KQotewot
ICAgIHJldHVybiB0b0pTQXJyYXlCdWZmZXJWaWV3PEpTVWludDE2QXJyYXk+KGV4ZWMsIGdsb2Jh
bE9iamVjdCwgb2JqZWN0KTsKLX0KLQotSlNDOjpKU1ZhbHVlIEpTVWludDE2QXJyYXk6OnNldChK
U0M6OkV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICByZXR1cm4gc2V0V2ViR0xBcnJheUhlbHBlcjxV
aW50MTZBcnJheSwgdW5zaWduZWQgc2hvcnQ+KGV4ZWMsIGltcGwoKSk7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWludDMy
QXJyYXlDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTVWludDMyQXJyYXlDdXN0b20uY3BwCShyZXZpc2lvbiAxMjQ5OTMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1VpbnQzMkFycmF5Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IkpTVWludDMyQXJyYXkuaCIKLQotI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJWaWV3SGVscGVyLmgi
Ci0jaW5jbHVkZSA8d3RmL1VpbnQzMkFycmF5Lmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBKU1VpbnQzMkFycmF5OjppbmRleFNldHRlcihK
U0M6OkV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW5kZXgsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkK
LXsKLSAgICBpbXBsKCktPnNldChpbmRleCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pih2YWx1
ZS50b1VJbnQzMihleGVjKSkpOwotfQotCi1KU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0
ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVWludDMyQXJyYXkqIG9i
amVjdCkKLXsKLSAgICByZXR1cm4gdG9KU0FycmF5QnVmZmVyVmlldzxKU1VpbnQzMkFycmF5Pihl
eGVjLCBnbG9iYWxPYmplY3QsIG9iamVjdCk7Ci19Ci0KLUpTQzo6SlNWYWx1ZSBKU1VpbnQzMkFy
cmF5OjpzZXQoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgcmV0dXJuIHNldFdlYkdMQXJy
YXlIZWxwZXI8VWludDMyQXJyYXksIHVuc2lnbmVkIGludD4oZXhlYywgaW1wbCgpKTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9yQ1BQLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckNQUC5wbQkocmV2aXNpb24gMTI0OTkzKQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yQ1BQLnBtCSh3b3Jr
aW5nIGNvcHkpCkBAIC00OTEsNiArNDkxLDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgaWYg
KCRudW1GdW5jdGlvbnMgPiAwKSB7CiAgICAgICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChAeyRk
YXRhTm9kZS0+ZnVuY3Rpb25zfSkgewogICAgICAgICAgICAgbmV4dCBpZiBTa2lwRnVuY3Rpb24o
JGZ1bmN0aW9uKTsKKyAgICAgICAgICAgIG5leHQgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5u
YW1lIGVxICJzZXQiIGFuZCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJUeXBlZEFy
cmF5In0pOwogICAgICAgICAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRBcyJ9IHx8ICRmdW5jdGlvbi0+
c2lnbmF0dXJlLT5uYW1lOwogCiAgICAgICAgICAgICBteSAkcmV0dXJuVHlwZSA9IEdldENQUFR5
cGUoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPnR5cGUsIDApOwpAQCAtODEyLDYgKzgxMyw3IEBAIHN1
YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChA
eyRkYXRhTm9kZS0+ZnVuY3Rpb25zfSkgewogICAgICAgICAgICAgIyBUcmVhdCBDUFBQdXJlSW50
ZXJmYWNlIGFzIEN1c3RvbSBhcyB3ZWxsLCBzaW5jZSB0aGUgV2ViQ29yZSB2ZXJzaW9ucyB3aWxs
IHRha2UgYSBzY3JpcHQgY29udGV4dCBhcyB3ZWxsCiAgICAgICAgICAgICBuZXh0IGlmIFNraXBG
dW5jdGlvbigkZnVuY3Rpb24pIHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNQ
UFB1cmVJbnRlcmZhY2UifTsKKyAgICAgICAgICAgIG5leHQgaWYgKCRmdW5jdGlvbi0+c2lnbmF0
dXJlLT5uYW1lIGVxICJzZXQiIGFuZCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJU
eXBlZEFycmF5In0pOwogICAgICAgICAgICAgQWRkSW5jbHVkZXNGb3JUeXBlKCRmdW5jdGlvbi0+
c2lnbmF0dXJlLT50eXBlKTsKIAogICAgICAgICAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9ICRmdW5j
dGlvbi0+c2lnbmF0dXJlLT5uYW1lOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtCShyZXZpc2lvbiAxMjQ5
OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2Jq
ZWN0LnBtCSh3b3JraW5nIGNvcHkpCkBAIC04MDAsNiArODAwLDggQEAgc3ViIEdlbmVyYXRlRnVu
Y3Rpb24gewogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgcmV0dXJuIGlmICgkZnVuY3Rp
b24tPnNpZ25hdHVyZS0+bmFtZSBlcSAic2V0IiBhbmQgJHBhcmVudE5vZGUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJUeXBlZEFycmF5In0pOworCiAgICAgbXkgJGZ1bmN0aW9uU2lnTmFtZSA9ICRm
dW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lOwogICAgIG15ICRmdW5jdGlvblNpZ1R5cGUgPSAkcHJl
Zml4IGVxICJzZXRfIiA/ICJ2b2lkIiA6ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT50eXBlOwogICAg
IG15ICRmdW5jdGlvbk5hbWUgPSAid2Via2l0X2RvbV8iIC4gJGRlY2FtZWxpemUgLiAiXyIgLiAk
cHJlZml4IC4gZGVjYW1lbGl6ZSgkZnVuY3Rpb25TaWdOYW1lKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lv
biAxMjQ5OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtMjIxMyw2ICsyMjEzLDEzIEBAIHN1YiBHZW5lcmF0
ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgaWYgKCRpc0N1c3RvbSkgewogICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGNhc3RlZFRoaXMtPiIgLiAkZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWUgLiAiKGV4ZWMp
KTtcbiIpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGlm
ICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSBlcSAic2V0IiBhbmQgJGRhdGFOb2RlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiVHlwZWRBcnJheSJ9KSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBteSAkdmlld1R5cGUgPSAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJUeXBlZEFy
cmF5In07CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNldFdlYkdMQXJyYXlIZWxwZXI8JGltcGxUeXBlLCAkdmll
d1R5cGU+KGV4ZWMsIGNhc3RlZFRoaXMtPmltcGwoKSkpO1xuIik7CisgICAgICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CisgICAgICAgICAgICAgICAgICAg
ICAgICBuZXh0OworICAgICAgICAgICAgICAgICAgICB9CisKICAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgJGltcGxUeXBlKiBpbXBsID0gc3RhdGljX2Nhc3Q8JGlt
cGxUeXBlKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICBp
ZiAoJHN2Z1Byb3BlcnR5VHlwZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgaWYgKGltcGwtPmlzUmVhZE9ubHkoKSkge1xuIik7CkBAIC0zNzIyLDYg
KzM3MjksMzAgQEAgRU5ECiB9CiAKIEVORAorICAgICAgICB9IGVsc2lmIChJc0NvbnN0cnVjdG9y
VGVtcGxhdGUoJGRhdGFOb2RlLCAiVHlwZWRBcnJheSIpKSB7CisgICAgICAgICAgICAkaW1wbElu
Y2x1ZGVzeyJKU0FycmF5QnVmZmVyVmlld0hlbHBlci5oIn0gPSAxOworICAgICAgICAgICAgbXkg
JHZpZXdUeXBlID0gJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVHlwZWRBcnJheSJ9
OworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6Y29uc3RydWN0JHtjbGFzc05hbWV9KEV4
ZWNTdGF0ZSogZXhlYylcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAie1xu
Iik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgJHtjb25zdHJ1Y3RvckNs
YXNzTmFtZX0qIGpzQ29uc3RydWN0b3IgPSBqc0Nhc3Q8JHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0q
PihleGVjLT5jYWxsZWUoKSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICBSZWZQdHI8JGludGVyZmFjZU5hbWU+IGFycmF5ID0gY29uc3RydWN0QXJyYXlCdWZmZXJW
aWV3PCRpbnRlcmZhY2VOYW1lLCAkdmlld1R5cGU+KGV4ZWMpO1xuIik7CisgICAgICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKCFhcnJheS5nZXQoKSlcbiIpOworICAgICAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAvLyBFeGNlcHRpb24gaGFzIGFscmVhZHkg
YmVlbiB0aHJvd24uXG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpO1xuIik7CisgICAgICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc09iamVjdCh0
b0pTKGV4ZWMsIGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpLCBhcnJheS5nZXQoKSkpKTtc
biIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxuXG4iKTsKKworICAgICAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsICR7aW50ZXJmYWNlTmFt
ZX0qIG9iamVjdClcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAie1xuIik7
CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuIHRvSlNBcnJheUJ1
ZmZlclZpZXc8JHtjbGFzc05hbWV9PihleGVjLCBnbG9iYWxPYmplY3QsIG9iamVjdCk7XG4iKTsK
KyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIn1cblxuIik7CisKKyAgICAgICAgICAg
IGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21JbmRleGVkU2V0dGVy
In0pIHsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ2b2lkICR7Y2xhc3NO
YW1lfTo6aW5kZXhTZXR0ZXIoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGluZGV4LCBK
U0M6OkpTVmFsdWUgdmFsdWUpXG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICJ7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaW1w
bCgpLT5zZXQoaW5kZXgsIHZhbHVlLnRvTnVtYmVyKGV4ZWMpKTtcbiIpOworICAgICAgICAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIn1cblxuIik7CisgICAgICAgICAgICB9CiAgICAgICAg
IH0gZWxzaWYgKCEoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDdXN0b21Db25z
dHJ1Y3RvciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUNvbnN0
cnVjdG9yIn0pICYmICghJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTmFtZWRDb25z
dHJ1Y3RvciJ9IHx8ICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvcikpIHsKICAgICAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgJHtjb25z
dHJ1Y3RvckNsYXNzTmFtZX06OmNvbnN0cnVjdCR7Y2xhc3NOYW1lfShFeGVjU3RhdGUqIGV4ZWMp
XG4iKTsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOwpAQCAtMzc5MSwy
MCArMzgyMiw2IEBAIEVORAogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJl
dHVybiBDb25zdHJ1Y3RUeXBlSG9zdDtcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAifVxuXG4iKTsKICAgICAgICAgfQotCi0gICAgICAgIGlmICgkZGF0YU5vZGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJUeXBlZEFycmF5In0pIHsKLSAgICAgICAgICAgICRpbXBsSW5jbHVk
ZXN7IkpTQXJyYXlCdWZmZXJWaWV3SGVscGVyLmgifSA9IDE7Ci0gICAgICAgICAgICBteSAkdmll
d1R5cGUgPSAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJUeXBlZEFycmF5In07Ci0g
ICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMICR7Y29uc3RydWN0b3JDbGFzc05hbWV9Ojpjb25zdHJ1Y3Qke2NsYXNzTmFtZX0oRXhlY1N0
YXRlKiBleGVjKVxuIik7Ci0gICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsK
LSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAke2NvbnN0cnVjdG9yQ2xhc3NO
YW1lfSoganNDb25zdHJ1Y3RvciA9IGpzQ2FzdDwke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfSo+KGV4
ZWMtPmNhbGxlZSgpKTtcbiIpOwotICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IFJlZlB0cjwkaW50ZXJmYWNlTmFtZT4gYXJyYXkgPSBjb25zdHJ1Y3RBcnJheUJ1ZmZlclZpZXc8
JGludGVyZmFjZU5hbWUsICR2aWV3VHlwZT4oZXhlYyk7XG4iKTsKLSAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICBpZiAoIWFycmF5LmdldCgpKVxuIik7Ci0gICAgICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIC8vIEV4Y2VwdGlvbiBoYXMgYWxyZWFkeSBiZWVu
IHRocm93bi5cbiIpOwotICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7XG4iKTsKLSAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzT2JqZWN0KHRvSlMo
ZXhlYywganNDb25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KCksIGFycmF5LmdldCgpKSkpO1xuIik7
Ci0gICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ9XG5cbiIpOwotICAgICAgICB9CiAg
ICAgfQogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JPYmpDLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvck9iakMucG0JKHJldmlzaW9uIDEyNDk5MykKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0JKHdvcmtpbmcgY29weSkK
QEAgLTg4MSw2ICs4ODEsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICBpZiAoJG51bUZ1bmN0
aW9ucyA+IDApIHsKICAgICAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEB7JGRhdGFOb2RlLT5m
dW5jdGlvbnN9KSB7CiAgICAgICAgICAgICBuZXh0IGlmIFNraXBGdW5jdGlvbigkZnVuY3Rpb24p
OworICAgICAgICAgICAgbmV4dCBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUgZXEgInNl
dCIgYW5kICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlR5cGVkQXJyYXkifSk7CiAg
ICAgICAgICAgICBteSAkZnVuY3Rpb25OYW1lID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWU7
CiAKICAgICAgICAgICAgIG15ICRyZXR1cm5UeXBlID0gR2V0T2JqQ1R5cGUoJGZ1bmN0aW9uLT5z
aWduYXR1cmUtPnR5cGUpOwpAQCAtMTUwMSw2ICsxNTAyLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVt
ZW50YXRpb24KICAgICBpZiAoJG51bUZ1bmN0aW9ucyA+IDApIHsKICAgICAgICAgZm9yZWFjaCBt
eSAkZnVuY3Rpb24gKEB7JGRhdGFOb2RlLT5mdW5jdGlvbnN9KSB7CiAgICAgICAgICAgICBuZXh0
IGlmIFNraXBGdW5jdGlvbigkZnVuY3Rpb24pOworICAgICAgICAgICAgbmV4dCBpZiAoJGZ1bmN0
aW9uLT5zaWduYXR1cmUtPm5hbWUgZXEgInNldCIgYW5kICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IlR5cGVkQXJyYXkifSk7CiAgICAgICAgICAgICBBZGRJbmNsdWRlc0ZvclR5cGUo
JGZ1bmN0aW9uLT5zaWduYXR1cmUtPnR5cGUpOwogCiAgICAgICAgICAgICBteSAkZnVuY3Rpb25O
YW1lID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQkocmV2aXNpb24gMTI0
OTkzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgu
cG0JKHdvcmtpbmcgY29weSkKQEAgLTE0NzQsNiArMTQ3NCwxNiBAQCBFTkQKIAogICAgIHB1c2go
QGltcGxDb250ZW50RGVjbHMsIEdlbmVyYXRlQXJndW1lbnRzQ291bnRDaGVjaygkZnVuY3Rpb24s
ICRkYXRhTm9kZSkpOwogCisgICAgaWYgKCRuYW1lIGVxICJzZXQiIGFuZCAkZGF0YU5vZGUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJUeXBlZEFycmF5In0pIHsKKyAgICAgICAgQWRkVG9JbXBsSW5j
bHVkZXMoIlY4QXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmgiKTsKKyAgICAgICAgcHVzaChAaW1wbENv
bnRlbnREZWNscywgPDxFTkQpOworICAgIHJldHVybiBzZXRXZWJHTEFycmF5SGVscGVyPCRpbXBs
Q2xhc3NOYW1lLCBWOCR7aW1wbENsYXNzTmFtZX0+KGFyZ3MpOworfQorCitFTkQKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKwogICAgIG15ICgkc3ZnUHJvcGVydHlUeXBlLCAkc3ZnTGlzdFByb3Bl
cnR5VHlwZSwgJHN2Z05hdGl2ZVR5cGUpID0gR2V0U1ZHUHJvcGVydHlUeXBlcygkaW1wbENsYXNz
TmFtZSk7CiAKICAgICBpZiAoJHN2Z05hdGl2ZVR5cGUpIHsKQEAgLTE5MzIsNiArMTk0MiwyNCBA
QCBFTkQKIEVORAogfQogCitzdWIgR2VuZXJhdGVUeXBlZEFycmF5Q29uc3RydWN0b3JDYWxsYmFj
aworeworICAgIG15ICRkYXRhTm9kZSA9IHNoaWZ0OworICAgIG15ICRpbXBsQ2xhc3NOYW1lID0g
c2hpZnQ7CisgICAgbXkgJHZpZXdUeXBlID0gR2V0VHlwZU5hbWVPZkV4dGVybmFsVHlwZWRBcnJh
eSgkZGF0YU5vZGUpOworICAgIG15ICR0eXBlID0gJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiVHlwZWRBcnJheSJ9OworICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJWOEFycmF5QnVmZmVy
Vmlld0N1c3RvbS5oIik7CisKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwordjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4JHtpbXBsQ2xhc3NOYW1lfTo6Y29uc3RydWN0b3JDYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19TVEFUUygiRE9NLiR7aW1wbENs
YXNzTmFtZX0uQ29udHJ1Y3RvciIpOworICAgIHJldHVybiBjb25zdHJ1Y3RXZWJHTEFycmF5PCRp
bXBsQ2xhc3NOYW1lLCBWOCR7aW1wbENsYXNzTmFtZX0sICR0eXBlPihhcmdzLCAmaW5mbywgJHZp
ZXdUeXBlKTsKK30KKworRU5ECit9CisKIHN1YiBHZW5lcmF0ZU5hbWVkQ29uc3RydWN0b3JDYWxs
YmFjawogewogICAgIG15ICRmdW5jdGlvbiA9IHNoaWZ0OwpAQCAtMjc1OCw2ICsyNzg2LDggQEAg
RU5ECiAgICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3JDYWxsYmFjaygkZGF0YU5vZGUtPmNvbnN0
cnVjdG9yLCAkZGF0YU5vZGUsICRpbnRlcmZhY2VOYW1lKTsKICAgICB9IGVsc2lmIChJc0NvbnN0
cnVjdG9yVGVtcGxhdGUoJGRhdGFOb2RlLCAiRXZlbnQiKSkgewogICAgICAgICBHZW5lcmF0ZUV2
ZW50Q29uc3RydWN0b3JDYWxsYmFjaygkZGF0YU5vZGUsICRpbnRlcmZhY2VOYW1lKTsKKyAgICB9
IGVsc2lmIChJc0NvbnN0cnVjdG9yVGVtcGxhdGUoJGRhdGFOb2RlLCAiVHlwZWRBcnJheSIpKSB7
CisgICAgICAgIEdlbmVyYXRlVHlwZWRBcnJheUNvbnN0cnVjdG9yQ2FsbGJhY2soJGRhdGFOb2Rl
LCAkaW50ZXJmYWNlTmFtZSk7CiAgICAgfQogCiAgICAgbXkgJGFjY2Vzc19jaGVjayA9ICIiOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0
ZXMudHh0CShyZXZpc2lvbiAxMjQ5OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0lETEF0dHJpYnV0ZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBAIENv
bmRpdGlvbmFsPSoKIENvbnN0cnVjdG9yCiBDb25zdHJ1Y3RvclBhcmFtZXRlcnM9KgogQ29uc3Ry
dWN0b3JSYWlzZXNFeGNlcHRpb24KLUNvbnN0cnVjdG9yVGVtcGxhdGU9RXZlbnQKK0NvbnN0cnVj
dG9yVGVtcGxhdGU9RXZlbnR8VHlwZWRBcnJheQogQ3VzdG9tCiBDdXN0b21DYWxsCiBDdXN0b21D
b25zdHJ1Y3RvcgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rl
c3RUeXBlZEFycmF5LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVGVzdFR5cGVkQXJyYXkuaWRsCShyZXZpc2lvbiAxMjQ5OTMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFR5cGVkQXJyYXkuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAKIG1vZHVsZSBodG1sIHsKICAgICBpbnRlcmZh
Y2UgWwotICAgICAgICBDdXN0b21Db25zdHJ1Y3RvciwKKyAgICAgICAgQ29uc3RydWN0b3JUZW1w
bGF0ZT1UeXBlZEFycmF5LAogICAgICAgICBDb25zdHJ1Y3RvclBhcmFtZXRlcnM9MTIzLAogICAg
ICAgICBOdW1lcmljSW5kZXhlZEdldHRlciwKICAgICAgICAgQ3VzdG9tSW5kZXhlZFNldHRlciwK
QEAgLTM3LDUgKzM3LDYgQEAgbW9kdWxlIGh0bWwgewogICAgICAgICBUeXBlZEFycmF5PWRvdWJs
ZQogICAgIF0gRmxvYXQ2NEFycmF5IDogQXJyYXlCdWZmZXJWaWV3IHsKICAgICAgICAgSW50MzJB
cnJheSBmb28oaW4gRmxvYXQzMkFycmF5IGFycmF5KTsKKyAgICAgICAgdm9pZCBzZXQoKTsKICAg
ICB9OwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
RmxvYXQ2NEFycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXkuY3BwCShyZXZpc2lvbiAxMjQ5OTMpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXkuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03OSwxMiArNzksNiBAQCBib29sIEpTRmxvYXQ2NEFycmF5Q29u
c3RydWN0b3I6OmdldE93blByCiAgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlRGVzY3JpcHRvcjxK
U0Zsb2F0NjRBcnJheUNvbnN0cnVjdG9yLCBKU0RPTVdyYXBwZXI+KGV4ZWMsICZKU0Zsb2F0NjRB
cnJheUNvbnN0cnVjdG9yVGFibGUsIGpzQ2FzdDxKU0Zsb2F0NjRBcnJheUNvbnN0cnVjdG9yKj4o
b2JqZWN0KSwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKIH0KIAotQ29uc3RydWN0VHlwZSBK
U0Zsb2F0NjRBcnJheUNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0
cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCi17Ci0gICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVu
Y3Rpb24gPSBjb25zdHJ1Y3RKU0Zsb2F0NjRBcnJheTsKLSAgICByZXR1cm4gQ29uc3RydWN0VHlw
ZUhvc3Q7Ci19Ci0KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNGbG9hdDY0QXJyYXlD
b25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNGbG9hdDY0QXJyYXkoRXhlY1N0YXRlKiBleGVjKQogewog
ICAgIEpTRmxvYXQ2NEFycmF5Q29uc3RydWN0b3IqIGpzQ29uc3RydWN0b3IgPSBqc0Nhc3Q8SlNG
bG9hdDY0QXJyYXlDb25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKTsKQEAgLTk1LDE1ICs4OSwz
MiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTRmxvYXQ2NEFyCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShhc09iamVjdCh0b0pTKGV4ZWMsIGpzQ29uc3RydWN0b3ItPmdsb2Jh
bE9iamVjdCgpLCBhcnJheS5nZXQoKSkpKTsKIH0KIAorSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpF
eGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEZsb2F0NjRB
cnJheSogb2JqZWN0KQoreworICAgIHJldHVybiB0b0pTQXJyYXlCdWZmZXJWaWV3PEpTRmxvYXQ2
NEFycmF5PihleGVjLCBnbG9iYWxPYmplY3QsIG9iamVjdCk7Cit9CisKK3ZvaWQgSlNGbG9hdDY0
QXJyYXk6OmluZGV4U2V0dGVyKEpTQzo6RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbmRleCwg
SlNDOjpKU1ZhbHVlIHZhbHVlKQoreworICAgIGltcGwoKS0+c2V0KGluZGV4LCB2YWx1ZS50b051
bWJlcihleGVjKSk7Cit9CisKK0NvbnN0cnVjdFR5cGUgSlNGbG9hdDY0QXJyYXlDb25zdHJ1Y3Rv
cjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRh
KQoreworICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0SlNGbG9h
dDY0QXJyYXk7CisgICAgcmV0dXJuIENvbnN0cnVjdFR5cGVIb3N0OworfQorCiAvKiBIYXNoIHRh
YmxlIGZvciBwcm90b3R5cGUgKi8KIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTRmxv
YXQ2NEFycmF5UHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7CiAgICAgeyAiZm9vIiwgRG9udERl
bGV0ZSB8IEpTQzo6RnVuY3Rpb24sIChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlv
bj4oanNGbG9hdDY0QXJyYXlQcm90b3R5cGVGdW5jdGlvbkZvbyksIChpbnRwdHJfdCkxLCBOb0lu
dHJpbnNpYyB9LAorICAgIHsgInNldCIsIERvbnREZWxldGUgfCBKU0M6OkZ1bmN0aW9uLCAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzRmxvYXQ2NEFycmF5UHJvdG90eXBl
RnVuY3Rpb25TZXQpLCAoaW50cHRyX3QpMCwgTm9JbnRyaW5zaWMgfSwKICAgICB7IDAsIDAsIDAs
IDAsIE5vSW50cmluc2ljIH0KIH07CiAKLXN0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNGbG9hdDY0
QXJyYXlQcm90b3R5cGVUYWJsZSA9IHsgMiwgMSwgSlNGbG9hdDY0QXJyYXlQcm90b3R5cGVUYWJs
ZVZhbHVlcywgMCB9Oworc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU0Zsb2F0NjRBcnJheVByb3Rv
dHlwZVRhYmxlID0geyA0LCAzLCBKU0Zsb2F0NjRBcnJheVByb3RvdHlwZVRhYmxlVmFsdWVzLCAw
IH07CiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlKiBnZXRKU0Zsb2F0NjRBcnJheVByb3RvdHlwZVRh
YmxlKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICByZXR1cm4gZ2V0SGFzaFRhYmxlRm9yR2xvYmFs
RGF0YShleGVjLT5nbG9iYWxEYXRhKCksICZKU0Zsb2F0NjRBcnJheVByb3RvdHlwZVRhYmxlKTsK
QEAgLTI0OCw2ICsyNTksMTYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0Zsb2F0
NjRBcgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0Zsb2F0NjRBcnJheVByb3RvdHlwZUZ1bmN0aW9uU2V0KEV4
ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlz
VmFsdWUoKTsKKyAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cygmSlNGbG9hdDY0QXJyYXk6OnNf
aW5mbykpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgIEpTRmxv
YXQ2NEFycmF5KiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTRmxvYXQ2NEFycmF5Kj4oYXNPYmplY3Qo
dGhpc1ZhbHVlKSk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCAm
SlNGbG9hdDY0QXJyYXk6OnNfaW5mbyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzZXRX
ZWJHTEFycmF5SGVscGVyPEZsb2F0NjRBcnJheSwgZG91YmxlPihleGVjLCBjYXN0ZWRUaGlzLT5p
bXBsKCkpKTsKK30KKwogCiBKU1ZhbHVlIEpTRmxvYXQ2NEFycmF5OjpnZXRCeUluZGV4KEV4ZWNT
dGF0ZSosIHVuc2lnbmVkIGluZGV4KQogewpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmgJKHJldmlzaW9u
IDEyNDk5MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zs
b2F0NjRBcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNiArMTI2LDcgQEAgcHJvdGVjdGVk
OgogLy8gRnVuY3Rpb25zCiAKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0Zs
b2F0NjRBcnJheVByb3RvdHlwZUZ1bmN0aW9uRm9vKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNGbG9hdDY0QXJyYXlQcm90b3R5cGVGdW5jdGlv
blNldChKU0M6OkV4ZWNTdGF0ZSopOwogLy8gQXR0cmlidXRlcwogCiBKU0M6OkpTVmFsdWUganNG
bG9hdDY0QXJyYXlDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlND
OjpQcm9wZXJ0eU5hbWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3BwCShyZXZpc2lvbiAxMjQ5
OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0
QXJyYXkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiRXhj
ZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNs
dWRlICJWOEFycmF5QnVmZmVyVmlldy5oIgorI2luY2x1ZGUgIlY4QXJyYXlCdWZmZXJWaWV3Q3Vz
dG9tLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhET01XcmFwcGVyLmgi
CiAjaW5jbHVkZSAiVjhGbG9hdDMyQXJyYXkuaCIKQEAgLTU4LDYgKzU5LDEyIEBAIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZm9vQ2FsbGJhY2sKICAgICByZXR1cm4gdG9WOChpbXAtPmZv
byhhcnJheSksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBzZXRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElO
Q19TVEFUUygiRE9NLkZsb2F0NjRBcnJheS5zZXQiKTsKKyAgICByZXR1cm4gc2V0V2ViR0xBcnJh
eUhlbHBlcjxGbG9hdDY0QXJyYXksIFY4RmxvYXQ2NEFycmF5PihhcmdzKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgRmxvYXQ2NEFycmF5VjhJbnRlcm5hbAogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
dG9WOChGbG9hdDY0QXJyYXkqIGltcGwsIHY4OjpJc29sYXRlKiBpc29sYXRlKQpAQCAtNzAsNiAr
NzcsMTYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoRmxvYXQ2NEFycmF5KgogICAgIHJl
dHVybiB3cmFwcGVyOwogfQogCitzdGF0aWMgY29uc3QgQmF0Y2hlZENhbGxiYWNrIEZsb2F0NjRB
cnJheUNhbGxiYWNrc1tdID0geworICAgIHsic2V0IiwgRmxvYXQ2NEFycmF5VjhJbnRlcm5hbDo6
c2V0Q2FsbGJhY2t9LAorfTsKKwordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RmxvYXQ2NEFycmF5
Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAg
SU5DX1NUQVRTKCJET00uRmxvYXQ2NEFycmF5LkNvbnRydWN0b3IiKTsKKyAgICByZXR1cm4gY29u
c3RydWN0V2ViR0xBcnJheTxGbG9hdDY0QXJyYXksIFY4RmxvYXQ2NEFycmF5LCBkb3VibGU+KGFy
Z3MsICZpbmZvLCB2ODo6a0V4dGVybmFsRG91YmxlQXJyYXkpOworfQorCiBzdGF0aWMgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4RmxvYXQ2NEFycmF5VGVt
cGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRlc2MpCiB7CiAgICAg
ZGVzYy0+UmVhZE9ubHlQcm90b3R5cGUoKTsKQEAgLTc3LDcgKzk0LDcgQEAgc3RhdGljIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYQogICAgIHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJl
PiBkZWZhdWx0U2lnbmF0dXJlOwogICAgIGRlZmF1bHRTaWduYXR1cmUgPSBjb25maWd1cmVUZW1w
bGF0ZShkZXNjLCAiRmxvYXQ2NEFycmF5IiwgVjhBcnJheUJ1ZmZlclZpZXc6OkdldFRlbXBsYXRl
KCksIFY4RmxvYXQ2NEFycmF5OjppbnRlcm5hbEZpZWxkQ291bnQsCiAgICAgICAgIDAsIDAsCi0g
ICAgICAgIDAsIDApOworICAgICAgICBGbG9hdDY0QXJyYXlDYWxsYmFja3MsIFdURl9BUlJBWV9M
RU5HVEgoRmxvYXQ2NEFycmF5Q2FsbGJhY2tzKSk7CiAgICAgVU5VU0VEX1BBUkFNKGRlZmF1bHRT
aWduYXR1cmUpOyAvLyBJbiBzb21lIGNhc2VzLCBpdCB3aWxsIG5vdCBiZSB1c2VkLgogICAgIGRl
c2MtPlNldENhbGxIYW5kbGVyKFY4RmxvYXQ2NEFycmF5Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKTsK
ICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdFRlbXBsYXRlPiBpbnN0YW5jZSA9IGRlc2MtPkluc3Rh
bmNlVGVtcGxhdGUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEZsb2F0MzJBcnJheUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4RmxvYXQzMkFycmF5Q3VzdG9tLmNwcAkocmV2aXNpb24gMTI0OTkz
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RmxvYXQzMkFycmF5Q3Vz
dG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4K
LSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIlY4RmxvYXQzMkFycmF5LmgiCi0KLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZm
ZXIuaD4KLSNpbmNsdWRlIDx3dGYvRmxvYXQzMkFycmF5Lmg+Ci0KLSNpbmNsdWRlICJWOEJpbmRp
bmcuaCIKLSNpbmNsdWRlICJWOEFycmF5QnVmZmVyLmgiCi0jaW5jbHVkZSAiVjhBcnJheUJ1ZmZl
clZpZXdDdXN0b20uaCIKLSNpbmNsdWRlICJWOFByb3h5LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RmxvYXQzMkFycmF5Ojpjb25zdHJ1Y3RvckNh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCi17Ci0gICAgSU5DX1NUQVRTKCJET00u
RmxvYXQzMkFycmF5LkNvbnRydWN0b3IiKTsKLQotICAgIHJldHVybiBjb25zdHJ1Y3RXZWJHTEFy
cmF5PEZsb2F0MzJBcnJheSwgVjhGbG9hdDMyQXJyYXksIGZsb2F0PihhcmdzLCAmaW5mbywgdjg6
OmtFeHRlcm5hbEZsb2F0QXJyYXkpOwotfQotCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhGbG9h
dDMyQXJyYXk6OnNldENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCi17Ci0gICAg
SU5DX1NUQVRTKCJET00uRmxvYXQzMkFycmF5LnNldCgpIik7Ci0gICAgcmV0dXJuIHNldFdlYkdM
QXJyYXlIZWxwZXI8RmxvYXQzMkFycmF5LCBWOEZsb2F0MzJBcnJheT4oYXJncyk7Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEZsb2F0NjRBcnJheUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RmxvYXQ2NEFycmF5Q3VzdG9tLmNwcAkocmV2aXNpb24g
MTI0OTkzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RmxvYXQ2NEFy
cmF5Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1MiArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlY4RmxvYXQ2NEFycmF5LmgiCi0KLSNpbmNs
dWRlICJWOEFycmF5QnVmZmVyLmgiCi0jaW5jbHVkZSAiVjhBcnJheUJ1ZmZlclZpZXdDdXN0b20u
aCIKLSNpbmNsdWRlICJWOEJpbmRpbmcuaCIKLSNpbmNsdWRlICJWOFByb3h5LmgiCi0KLSNpbmNs
dWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KLSNpbmNsdWRlIDx3dGYvRmxvYXQ2NEFycmF5Lmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RmxvYXQ2NEFy
cmF5Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCi17Ci0g
ICAgSU5DX1NUQVRTKCJET00uRmxvYXQ2NEFycmF5LkNvbnRydWN0b3IiKTsKLQotICAgIHJldHVy
biBjb25zdHJ1Y3RXZWJHTEFycmF5PEZsb2F0NjRBcnJheSwgVjhGbG9hdDY0QXJyYXksIGRvdWJs
ZT4oYXJncywgJmluZm8sIHY4OjprRXh0ZXJuYWxEb3VibGVBcnJheSk7Ci19Ci0KLXY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOEZsb2F0NjRBcnJheTo6c2V0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncykKLXsKLSAgICBJTkNfU1RBVFMoIkRPTS5GbG9hdDY0QXJyYXkuc2V0KCkiKTsK
LSAgICByZXR1cm4gc2V0V2ViR0xBcnJheUhlbHBlcjxGbG9hdDY0QXJyYXksIFY4RmxvYXQ2NEFy
cmF5PihhcmdzKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW50OEFycmF5Q3VzdG9tLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbnQ4QXJyYXlDdXN0b20u
Y3BwCShyZXZpc2lvbiAxMjQ5OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhJbnQ4QXJyYXlDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDU2ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQot
ICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyLmg+Ci0jaW5jbHVk
ZSA8d3RmL0ludDhBcnJheS5oPgotCi0jaW5jbHVkZSAiVjhCaW5kaW5nLmgiCi0jaW5jbHVkZSAi
VjhBcnJheUJ1ZmZlci5oIgotI2luY2x1ZGUgIlY4QXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmgiCi0j
aW5jbHVkZSAiVjhJbnQ4QXJyYXkuaCIKLSNpbmNsdWRlICJWOFByb3h5LmgiCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW50OEFycmF5Ojpjb25zdHJ1
Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCi17Ci0gICAgSU5DX1NUQVRT
KCJET00uSW50OEFycmF5LkNvbnRydWN0b3IiKTsKLQotICAgIHJldHVybiBjb25zdHJ1Y3RXZWJH
TEFycmF5PEludDhBcnJheSwgVjhJbnQ4QXJyYXksIHNpZ25lZCBjaGFyPihhcmdzLCAmaW5mbywg
djg6OmtFeHRlcm5hbEJ5dGVBcnJheSk7Ci19Ci0KLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOElu
dDhBcnJheTo6c2V0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKLXsKLSAgICBJ
TkNfU1RBVFMoIkRPTS5JbnQ4QXJyYXkuc2V0KCkiKTsKLSAgICByZXR1cm4gc2V0V2ViR0xBcnJh
eUhlbHBlcjxJbnQ4QXJyYXksIFY4SW50OEFycmF5PihhcmdzKTsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW50
MTZBcnJheUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SW50MTZBcnJheUN1c3RvbS5jcHAJKHJldmlzaW9uIDEyNDk5MykKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEludDE2QXJyYXlDdXN0b20uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDU2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSA8d3RmL0FycmF5QnVmZmVyLmg+Ci0jaW5jbHVkZSA8d3RmL0ludDE2QXJyYXkuaD4KLQotI2lu
Y2x1ZGUgIlY4QmluZGluZy5oIgotI2luY2x1ZGUgIlY4QXJyYXlCdWZmZXIuaCIKLSNpbmNsdWRl
ICJWOEFycmF5QnVmZmVyVmlld0N1c3RvbS5oIgotI2luY2x1ZGUgIlY4SW50MTZBcnJheS5oIgot
I2luY2x1ZGUgIlY4UHJveHkuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhJbnQxNkFycmF5Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCi17Ci0gICAgSU5DX1NUQVRTKCJET00uSW50MTZBcnJheS5Db250cnVj
dG9yIik7Ci0KLSAgICByZXR1cm4gY29uc3RydWN0V2ViR0xBcnJheTxJbnQxNkFycmF5LCBWOElu
dDE2QXJyYXksIHNob3J0PihhcmdzLCAmaW5mbywgdjg6OmtFeHRlcm5hbFNob3J0QXJyYXkpOwot
fQotCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbnQxNkFycmF5OjpzZXRDYWxsYmFjayhjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKQotewotICAgIElOQ19TVEFUUygiRE9NLkludDE2QXJyYXku
c2V0KCkiKTsKLSAgICByZXR1cm4gc2V0V2ViR0xBcnJheUhlbHBlcjxJbnQxNkFycmF5LCBWOElu
dDE2QXJyYXk+KGFyZ3MpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbnQzMkFycmF5Q3VzdG9tLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbnQzMkFycmF5
Q3VzdG9tLmNwcAkocmV2aXNpb24gMTI0OTkzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SW50MzJBcnJheUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNTYg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0Ogot
ICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0g
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4K
LSNpbmNsdWRlIDx3dGYvSW50MzJBcnJheS5oPgotCi0jaW5jbHVkZSAiVjhCaW5kaW5nLmgiCi0j
aW5jbHVkZSAiVjhBcnJheUJ1ZmZlci5oIgotI2luY2x1ZGUgIlY4QXJyYXlCdWZmZXJWaWV3Q3Vz
dG9tLmgiCi0jaW5jbHVkZSAiVjhJbnQzMkFycmF5LmgiCi0jaW5jbHVkZSAiVjhQcm94eS5oIgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEludDMyQXJy
YXk6OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKLXsKLSAg
ICBJTkNfU1RBVFMoIkRPTS5JbnQzMkFycmF5LkNvbnRydWN0b3IiKTsKLQotICAgIHJldHVybiBj
b25zdHJ1Y3RXZWJHTEFycmF5PEludDMyQXJyYXksIFY4SW50MzJBcnJheSwgaW50PihhcmdzLCAm
aW5mbywgdjg6OmtFeHRlcm5hbEludEFycmF5KTsKLX0KLQotdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4SW50MzJBcnJheTo6c2V0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKLXsK
LSAgICBJTkNfU1RBVFMoIkRPTS5JbnQzMkFycmF5LnNldCgpIik7Ci0gICAgcmV0dXJuIHNldFdl
YkdMQXJyYXlIZWxwZXI8SW50MzJBcnJheSwgVjhJbnQzMkFycmF5PihhcmdzKTsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4VWludDhBcnJheUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4VWludDhBcnJheUN1c3RvbS5jcHAJKHJldmlzaW9uIDEyNDk5
MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFVpbnQ4QXJyYXlDdXN0
b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDU2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgot
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
LSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyLmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQ4QXJyYXku
aD4KLQotI2luY2x1ZGUgIlY4QmluZGluZy5oIgotI2luY2x1ZGUgIlY4QXJyYXlCdWZmZXIuaCIK
LSNpbmNsdWRlICJWOEFycmF5QnVmZmVyVmlld0N1c3RvbS5oIgotI2luY2x1ZGUgIlY4VWludDhB
cnJheS5oIgotI2luY2x1ZGUgIlY4UHJveHkuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhVaW50OEFycmF5Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCi17Ci0gICAgSU5DX1NUQVRTKCJET00uVWludDhBcnJh
eS5Db250cnVjdG9yIik7Ci0KLSAgICByZXR1cm4gY29uc3RydWN0V2ViR0xBcnJheTxVaW50OEFy
cmF5LCBWOFVpbnQ4QXJyYXksIHVuc2lnbmVkIGNoYXI+KGFyZ3MsICZpbmZvLCB2ODo6a0V4dGVy
bmFsVW5zaWduZWRCeXRlQXJyYXkpOwotfQotCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhVaW50
OEFycmF5OjpzZXRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQotewotICAgIElO
Q19TVEFUUygiRE9NLlVpbnQ4QXJyYXkuc2V0KCkiKTsKLSAgICByZXR1cm4gc2V0V2ViR0xBcnJh
eUhlbHBlcjxVaW50OEFycmF5LCBWOFVpbnQ4QXJyYXk+KGFyZ3MpOwotfQotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhV
aW50OENsYW1wZWRBcnJheUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4VWludDhDbGFtcGVkQXJyYXlDdXN0b20uY3BwCShyZXZpc2lv
biAxMjQ5OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhVaW50OENs
YW1wZWRBcnJheUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNTMgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMKLSAqIElTJycgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUwotICog
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRQotICogSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsCi0gKiBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKLSAqIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwKLSAqIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQKLSAqIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlIDx3dGYv
QXJyYXlCdWZmZXIuaD4KLSNpbmNsdWRlIDx3dGYvVWludDhDbGFtcGVkQXJyYXkuaD4KLQotI2lu
Y2x1ZGUgIlY4QXJyYXlCdWZmZXIuaCIKLSNpbmNsdWRlICJWOEFycmF5QnVmZmVyVmlld0N1c3Rv
bS5oIgotI2luY2x1ZGUgIlY4QmluZGluZy5oIgotI2luY2x1ZGUgIlY4UHJveHkuaCIKLSNpbmNs
dWRlICJWOFVpbnQ4Q2xhbXBlZEFycmF5LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4VWludDhDbGFtcGVkQXJyYXk6OmNvbnN0cnVjdG9yQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKLXsKLSAgICBJTkNfU1RBVFMoIkRPTS5VaW50
OENsYW1wZWRBcnJheS5Db250cnVjdG9yIik7Ci0KLSAgICByZXR1cm4gY29uc3RydWN0V2ViR0xB
cnJheTxVaW50OENsYW1wZWRBcnJheSwgVjhVaW50OENsYW1wZWRBcnJheSwgdW5zaWduZWQgY2hh
cj4oYXJncywgJmluZm8sIHY4OjprRXh0ZXJuYWxQaXhlbEFycmF5KTsKLX0KLQotdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4VWludDhDbGFtcGVkQXJyYXk6OnNldENhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCi17Ci0gICAgSU5DX1NUQVRTKCJET00uVWludDhDbGFtcGVkQXJyYXku
c2V0KCkiKTsKLSAgICByZXR1cm4gc2V0V2ViR0xBcnJheUhlbHBlcjxVaW50OENsYW1wZWRBcnJh
eSwgVjhVaW50OENsYW1wZWRBcnJheT4oYXJncyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFVpbnQxNkFycmF5
Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhVaW50MTZBcnJheUN1c3RvbS5jcHAJKHJldmlzaW9uIDEyNDk5MykKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFVpbnQxNkFycmF5Q3VzdG9tLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgPHd0
Zi9BcnJheUJ1ZmZlci5oPgotI2luY2x1ZGUgPHd0Zi9VaW50MTZBcnJheS5oPgotCi0jaW5jbHVk
ZSAiVjhCaW5kaW5nLmgiCi0jaW5jbHVkZSAiVjhBcnJheUJ1ZmZlci5oIgotI2luY2x1ZGUgIlY4
QXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmgiCi0jaW5jbHVkZSAiVjhVaW50MTZBcnJheS5oIgotI2lu
Y2x1ZGUgIlY4UHJveHkuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhVaW50MTZBcnJheTo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQotewotICAgIElOQ19TVEFUUygiRE9NLlVpbnQxNkFycmF5LkNvbnRydWN0
b3IiKTsKLQotICAgIHJldHVybiBjb25zdHJ1Y3RXZWJHTEFycmF5PFVpbnQxNkFycmF5LCBWOFVp
bnQxNkFycmF5LCB1bnNpZ25lZCBzaG9ydD4oYXJncywgJmluZm8sIHY4OjprRXh0ZXJuYWxVbnNp
Z25lZFNob3J0QXJyYXkpOwotfQotCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhVaW50MTZBcnJh
eTo6c2V0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKLXsKLSAgICBJTkNfU1RB
VFMoIkRPTS5VaW50MTZBcnJheS5zZXQoKSIpOwotICAgIHJldHVybiBzZXRXZWJHTEFycmF5SGVs
cGVyPFVpbnQxNkFycmF5LCBWOFVpbnQxNkFycmF5PihhcmdzKTsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4VWlu
dDMyQXJyYXlDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOFVpbnQzMkFycmF5Q3VzdG9tLmNwcAkocmV2aXNpb24gMTI0OTkzKQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4VWludDMyQXJyYXlDdXN0b20uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDU2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwot
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAot
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSA8d3RmL0FycmF5QnVmZmVyLmg+Ci0jaW5jbHVkZSA8d3RmL1VpbnQzMkFycmF5Lmg+Ci0K
LSNpbmNsdWRlICJWOEJpbmRpbmcuaCIKLSNpbmNsdWRlICJWOEFycmF5QnVmZmVyLmgiCi0jaW5j
bHVkZSAiVjhBcnJheUJ1ZmZlclZpZXdDdXN0b20uaCIKLSNpbmNsdWRlICJWOFVpbnQzMkFycmF5
LmgiCi0jaW5jbHVkZSAiVjhQcm94eS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOFVpbnQzMkFycmF5Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCi17Ci0gICAgSU5DX1NUQVRTKCJET00uVWludDMyQXJyYXku
Q29udHJ1Y3RvciIpOwotCi0gICAgcmV0dXJuIGNvbnN0cnVjdFdlYkdMQXJyYXk8VWludDMyQXJy
YXksIFY4VWludDMyQXJyYXksIHVuc2lnbmVkIGludD4oYXJncywgJmluZm8sIHY4OjprRXh0ZXJu
YWxVbnNpZ25lZEludEFycmF5KTsKLX0KLQotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VWludDMy
QXJyYXk6OnNldENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCi17Ci0gICAgSU5D
X1NUQVRTKCJET00uVWludDMyQXJyYXkuc2V0KCkiKTsKLSAgICByZXR1cm4gc2V0V2ViR0xBcnJh
eUhlbHBlcjxVaW50MzJBcnJheSwgVjhVaW50MzJBcnJheT4oYXJncyk7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Zsb2F0MzJB
cnJheS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRmxvYXQz
MkFycmF5LmlkbAkocmV2aXNpb24gMTI0OTkzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvRmxvYXQzMkFycmF5LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogCiBt
b2R1bGUgaHRtbCB7CiAgICAgaW50ZXJmYWNlIFsKLSAgICAgICAgQ3VzdG9tQ29uc3RydWN0b3Is
CisgICAgICAgIENvbnN0cnVjdG9yVGVtcGxhdGU9VHlwZWRBcnJheSwKICAgICAgICAgQ29uc3Ry
dWN0b3JQYXJhbWV0ZXJzPTEsCiAgICAgICAgIE51bWVyaWNJbmRleGVkR2V0dGVyLAogICAgICAg
ICBDdXN0b21JbmRleGVkU2V0dGVyLApAQCAtNDQsNiArNDQsNiBAQCBtb2R1bGUgaHRtbCB7CiAK
ICAgICAgICAgLy8gdm9pZCBzZXQoaW4gRmxvYXQzMkFycmF5IGFycmF5LCBbT3B0aW9uYWxdIGlu
IHVuc2lnbmVkIGxvbmcgb2Zmc2V0KTsKICAgICAgICAgLy8gdm9pZCBzZXQoaW4gc2VxdWVuY2U8
bG9uZz4gYXJyYXksIFtPcHRpb25hbF0gaW4gdW5zaWduZWQgbG9uZyBvZmZzZXQpOwotICAgICAg
ICBbQ3VzdG9tXSB2b2lkIHNldCgpOworICAgICAgICB2b2lkIHNldCgpOwogICAgIH07CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9GbG9hdDY0QXJyYXkuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Zsb2F0NjRBcnJheS5pZGwJKHJldmlz
aW9uIDEyNDk5MykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Zsb2F0NjRBcnJheS5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKIAogbW9kdWxlIGh0bWwgewogICAg
IGludGVyZmFjZSBbCi0gICAgICAgIEN1c3RvbUNvbnN0cnVjdG9yLAorICAgICAgICBDb25zdHJ1
Y3RvclRlbXBsYXRlPVR5cGVkQXJyYXksCiAgICAgICAgIENvbnN0cnVjdG9yUGFyYW1ldGVycz0x
LAogICAgICAgICBOdW1lcmljSW5kZXhlZEdldHRlciwKICAgICAgICAgQ3VzdG9tSW5kZXhlZFNl
dHRlciwKQEAgLTQ0LDYgKzQ0LDYgQEAgbW9kdWxlIGh0bWwgewogCiAgICAgICAgIC8vIHZvaWQg
c2V0KGluIEZsb2F0NjRBcnJheSBhcnJheSwgW09wdGlvbmFsXSBpbiB1bnNpZ25lZCBsb25nIG9m
ZnNldCk7CiAgICAgICAgIC8vIHZvaWQgc2V0KGluIHNlcXVlbmNlPGxvbmc+IGFycmF5LCBbT3B0
aW9uYWxdIGluIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KTsKLSAgICAgICAgW0N1c3RvbV0gdm9pZCBz
ZXQoKTsKKyAgICAgICAgdm9pZCBzZXQoKTsKICAgICB9OwogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvSW50OEFycmF5LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9JbnQ4QXJyYXkuaWRsCShyZXZpc2lvbiAxMjQ5OTMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9JbnQ4QXJyYXkuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3
ICsyNiw3IEBACiAKIG1vZHVsZSBodG1sIHsKICAgICBpbnRlcmZhY2UgWwotICAgICAgICBDdXN0
b21Db25zdHJ1Y3RvciwKKyAgICAgICAgQ29uc3RydWN0b3JUZW1wbGF0ZT1UeXBlZEFycmF5LAog
ICAgICAgICBDb25zdHJ1Y3RvclBhcmFtZXRlcnM9MSwKICAgICAgICAgTnVtZXJpY0luZGV4ZWRH
ZXR0ZXIsCiAgICAgICAgIEN1c3RvbUluZGV4ZWRTZXR0ZXIsCkBAIC00NCw2ICs0NCw2IEBAIG1v
ZHVsZSBodG1sIHsKIAogICAgICAgICAvLyB2b2lkIHNldChpbiBJbnQ4QXJyYXkgYXJyYXksIFtP
cHRpb25hbF0gaW4gdW5zaWduZWQgbG9uZyBvZmZzZXQpOwogICAgICAgICAvLyB2b2lkIHNldChp
biBzZXF1ZW5jZTxsb25nPiBhcnJheSwgW09wdGlvbmFsXSBpbiB1bnNpZ25lZCBsb25nIG9mZnNl
dCk7Ci0gICAgICAgIFtDdXN0b21dIHZvaWQgc2V0KCk7CisgICAgICAgIHZvaWQgc2V0KCk7CiAg
ICAgfTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ludDE2QXJyYXkuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ludDE2QXJyYXkuaWRs
CShyZXZpc2lvbiAxMjQ5OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9JbnQxNkFy
cmF5LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiBtb2R1bGUgaHRtbCB7
CiAgICAgaW50ZXJmYWNlIFsKLSAgICAgICAgQ3VzdG9tQ29uc3RydWN0b3IsCisgICAgICAgIENv
bnN0cnVjdG9yVGVtcGxhdGU9VHlwZWRBcnJheSwKICAgICAgICAgQ29uc3RydWN0b3JQYXJhbWV0
ZXJzPTEsCiAgICAgICAgIE51bWVyaWNJbmRleGVkR2V0dGVyLAogICAgICAgICBDdXN0b21JbmRl
eGVkU2V0dGVyLApAQCAtNDMsNiArNDMsNiBAQCBtb2R1bGUgaHRtbCB7CiAKICAgICAgICAgLy8g
dm9pZCBzZXQoaW4gSW50MTZBcnJheSBhcnJheSwgW09wdGlvbmFsXSBpbiB1bnNpZ25lZCBsb25n
IG9mZnNldCk7CiAgICAgICAgIC8vIHZvaWQgc2V0KGluIHNlcXVlbmNlPGxvbmc+IGFycmF5LCBb
T3B0aW9uYWxdIGluIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KTsKLSAgICAgICAgW0N1c3RvbV0gdm9p
ZCBzZXQoKTsKKyAgICAgICAgdm9pZCBzZXQoKTsKICAgICB9OwogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvSW50MzJBcnJheS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvSW50MzJBcnJheS5pZGwJKHJldmlzaW9uIDEyNDk5MykKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ludDMyQXJyYXkuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw3ICsyNiw3IEBACiAKIG1vZHVsZSBodG1sIHsKICAgICBpbnRlcmZhY2UgWwotICAgICAg
ICBDdXN0b21Db25zdHJ1Y3RvciwKKyAgICAgICAgQ29uc3RydWN0b3JUZW1wbGF0ZT1UeXBlZEFy
cmF5LAogICAgICAgICBDb25zdHJ1Y3RvclBhcmFtZXRlcnM9MSwKICAgICAgICAgTnVtZXJpY0lu
ZGV4ZWRHZXR0ZXIsCiAgICAgICAgIEN1c3RvbUluZGV4ZWRTZXR0ZXIsCkBAIC00NCw2ICs0NCw2
IEBAIG1vZHVsZSBodG1sIHsKIAogICAgICAgICAvLyB2b2lkIHNldChpbiBJbnQzMkFycmF5IGFy
cmF5LCBbT3B0aW9uYWxdIGluIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KTsKICAgICAgICAgLy8gdm9p
ZCBzZXQoaW4gc2VxdWVuY2U8bG9uZz4gYXJyYXksIFtPcHRpb25hbF0gaW4gdW5zaWduZWQgbG9u
ZyBvZmZzZXQpOwotICAgICAgICBbQ3VzdG9tXSB2b2lkIHNldCgpOworICAgICAgICB2b2lkIHNl
dCgpOwogICAgIH07CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9VaW50OEFy
cmF5LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9VaW50OEFy
cmF5LmlkbAkocmV2aXNpb24gMTI0OTkzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
VWludDhBcnJheS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKIAogbW9kdWxl
IGh0bWwgewogICAgIGludGVyZmFjZSBbCi0gICAgICAgIEN1c3RvbUNvbnN0cnVjdG9yLAorICAg
ICAgICBDb25zdHJ1Y3RvclRlbXBsYXRlPVR5cGVkQXJyYXksCiAgICAgICAgIENvbnN0cnVjdG9y
UGFyYW1ldGVycz0xLAogICAgICAgICBOdW1lcmljSW5kZXhlZEdldHRlciwKICAgICAgICAgQ3Vz
dG9tSW5kZXhlZFNldHRlciwKQEAgLTQzLDYgKzQzLDYgQEAgbW9kdWxlIGh0bWwgewogCiAgICAg
ICAgIC8vIHZvaWQgc2V0KGluIFVpbnQ4QXJyYXkgYXJyYXksIFtPcHRpb25hbF0gaW4gdW5zaWdu
ZWQgbG9uZyBvZmZzZXQpOwogICAgICAgICAvLyB2b2lkIHNldChpbiBzZXF1ZW5jZTxsb25nPiBh
cnJheSwgW09wdGlvbmFsXSBpbiB1bnNpZ25lZCBsb25nIG9mZnNldCk7Ci0gICAgICAgIFtDdXN0
b21dIHZvaWQgc2V0KCk7CisgICAgICAgIHZvaWQgc2V0KCk7CiAgICAgfTsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1VpbnQ4Q2xhbXBlZEFycmF5LmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9VaW50OENsYW1wZWRBcnJheS5pZGwJKHJl
dmlzaW9uIDEyNDk5MykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1VpbnQ4Q2xhbXBl
ZEFycmF5LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogCiBtb2R1bGUgaHRt
bCB7CiAgICAgaW50ZXJmYWNlIFsKLSAgICAgICAgQ3VzdG9tQ29uc3RydWN0b3IsCisgICAgICAg
IENvbnN0cnVjdG9yVGVtcGxhdGU9VHlwZWRBcnJheSwKICAgICAgICAgQ29uc3RydWN0b3JQYXJh
bWV0ZXJzPTEsCiAgICAgICAgIE51bWVyaWNJbmRleGVkR2V0dGVyLAogICAgICAgICBDdXN0b21J
bmRleGVkU2V0dGVyLApAQCAtNDQsNiArNDQsNiBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgIC8v
IEZJWE1FOiBNaXNzaW5nIG90aGVyIHNldHRlcnMhCiAgICAgICAgIC8vIHZvaWQgc2V0KGluIFVp
bnQ4Q2xhbXBlZEFycmF5IGFycmF5LCBbT3B0aW9uYWxdIGluIHVuc2lnbmVkIGxvbmcgb2Zmc2V0
KTsKICAgICAgICAgLy8gdm9pZCBzZXQoaW4gc2VxdWVuY2U8bG9uZz4gYXJyYXksIFtPcHRpb25h
bF0gaW4gdW5zaWduZWQgbG9uZyBvZmZzZXQpOwotICAgICAgICBbQ3VzdG9tXSB2b2lkIHNldCgp
OworICAgICAgICB2b2lkIHNldCgpOwogICAgIH07CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9VaW50MTZBcnJheS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvVWludDE2QXJyYXkuaWRsCShyZXZpc2lvbiAxMjQ5OTMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9VaW50MTZBcnJheS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDcgKzI2LDcgQEAKIAogbW9kdWxlIGh0bWwgewogICAgIGludGVyZmFjZSBbCi0gICAgICAgIEN1
c3RvbUNvbnN0cnVjdG9yLAorICAgICAgICBDb25zdHJ1Y3RvclRlbXBsYXRlPVR5cGVkQXJyYXks
CiAgICAgICAgIENvbnN0cnVjdG9yUGFyYW1ldGVycz0xLAogICAgICAgICBOdW1lcmljSW5kZXhl
ZEdldHRlciwKICAgICAgICAgQ3VzdG9tSW5kZXhlZFNldHRlciwKQEAgLTQzLDYgKzQzLDYgQEAg
bW9kdWxlIGh0bWwgewogCiAgICAgICAgIC8vIHZvaWQgc2V0KGluIFVpbnQxNkFycmF5IGFycmF5
LCBbT3B0aW9uYWxdIGluIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KTsKICAgICAgICAgLy8gdm9pZCBz
ZXQoaW4gc2VxdWVuY2U8bG9uZz4gYXJyYXksIFtPcHRpb25hbF0gaW4gdW5zaWduZWQgbG9uZyBv
ZmZzZXQpOwotICAgICAgICBbQ3VzdG9tXSB2b2lkIHNldCgpOworICAgICAgICB2b2lkIHNldCgp
OwogICAgIH07CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9VaW50MzJBcnJh
eS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvVWludDMyQXJy
YXkuaWRsCShyZXZpc2lvbiAxMjQ5OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9V
aW50MzJBcnJheS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKIAogbW9kdWxl
IGh0bWwgewogICAgIGludGVyZmFjZSBbCi0gICAgICAgIEN1c3RvbUNvbnN0cnVjdG9yLAorICAg
ICAgICBDb25zdHJ1Y3RvclRlbXBsYXRlPVR5cGVkQXJyYXksCiAgICAgICAgIENvbnN0cnVjdG9y
UGFyYW1ldGVycz0xLAogICAgICAgICBOdW1lcmljSW5kZXhlZEdldHRlciwKICAgICAgICAgQ3Vz
dG9tSW5kZXhlZFNldHRlciwKQEAgLTQzLDYgKzQzLDYgQEAgbW9kdWxlIGh0bWwgewogCiAgICAg
ICAgIC8vIHZvaWQgc2V0KGluIFVpbnQzMkFycmF5IGFycmF5LCBbT3B0aW9uYWxdIGluIHVuc2ln
bmVkIGxvbmcgb2Zmc2V0KTsKICAgICAgICAgLy8gdm9pZCBzZXQoaW4gc2VxdWVuY2U8bG9uZz4g
YXJyYXksIFtPcHRpb25hbF0gaW4gdW5zaWduZWQgbG9uZyBvZmZzZXQpOwotICAgICAgICBbQ3Vz
dG9tXSB2b2lkIHNldCgpOworICAgICAgICB2b2lkIHNldCgpOwogICAgIH07CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>