<?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>151974</bug_id>
          
          <creation_ts>2015-12-07 17:12:40 -0800</creation_ts>
          <short_desc>[JSC] Add Float support to B3</short_desc>
          <delta_ts>2015-12-08 10:25:16 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit 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="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1147116</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-12-07 17:12:40 -0800</bug_when>
    <thetext>[JSC] Add Float support to B3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147117</commentid>
    <comment_count>1</comment_count>
      <attachid>266835</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-12-07 17:15:52 -0800</bug_when>
    <thetext>Created attachment 266835
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147119</commentid>
    <comment_count>2</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-12-07 17:16:32 -0800</bug_when>
    <thetext>*** Bug 151921 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147121</commentid>
    <comment_count>3</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-12-07 17:16:47 -0800</bug_when>
    <thetext>*** Bug 151903 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147122</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-07 17:17:15 -0800</bug_when>
    <thetext>Attachment 266835 did not pass style-queue:


ERROR: Source/JavaScriptCore/b3/testb3.cpp:5937:  l is incorrectly named. Don&apos;t use the single letter &apos;l&apos; as an identifier name.  [readability/naming] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6340:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6341:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6342:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6343:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6344:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6345:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6377:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6378:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6379:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6380:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6381:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6382:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 13 in 38 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147125</commentid>
    <comment_count>5</comment_count>
      <attachid>266836</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-12-07 17:31:04 -0800</bug_when>
    <thetext>Created attachment 266836
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147126</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-07 17:31:57 -0800</bug_when>
    <thetext>Attachment 266836 did not pass style-queue:


ERROR: Source/JavaScriptCore/b3/testb3.cpp:5937:  l is incorrectly named. Don&apos;t use the single letter &apos;l&apos; as an identifier name.  [readability/naming] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6340:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6341:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6342:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6343:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6344:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6345:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6377:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6378:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6379:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6380:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6381:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6382:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 13 in 38 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147129</commentid>
    <comment_count>7</comment_count>
      <attachid>266837</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-12-07 17:41:37 -0800</bug_when>
    <thetext>Created attachment 266837
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147130</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-07 17:42:48 -0800</bug_when>
    <thetext>Attachment 266837 did not pass style-queue:


ERROR: Source/JavaScriptCore/b3/testb3.cpp:5937:  l is incorrectly named. Don&apos;t use the single letter &apos;l&apos; as an identifier name.  [readability/naming] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6340:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6341:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6342:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6343:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6344:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6345:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6377:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6378:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6379:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6380:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6381:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6382:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 13 in 38 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147135</commentid>
    <comment_count>9</comment_count>
      <attachid>266837</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-07 18:08:24 -0800</bug_when>
    <thetext>Comment on attachment 266837
Patch

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

I think you&apos;re just missing moveFloatConditionally, which corresponds to Float = Select(Int, Float, Float).  But I guess that depends on whether or not you believe that movsd can efficiently be used instead of movss.

&gt; Source/JavaScriptCore/ChangeLog:8
&gt; +        This patch adds basic float support to B3.

Basic or comprehensive?

&gt; Source/JavaScriptCore/assembler/MacroAssembler.h:1365
&gt; +
&gt; +    void moveDoubleConditionallyFloat(DoubleCondition cond, FPRegisterID left, FPRegisterID right, FPRegisterID src, FPRegisterID dest)
&gt; +    {
&gt; +        Jump falseCase = branchFloat(invert(cond), left, right);
&gt; +        moveDouble(src, dest);
&gt; +        falseCase.link(this);
&gt; +    }

What about moveFloatConditionally?

&gt; Source/JavaScriptCore/b3/B3Generate.cpp:78
&gt; +        reduceDoubleToFloat(procedure);
&gt; +

Any particular reason why this isn&apos;t run after reduceStrength()?

Actually, why isn&apos;t this just part of reduceStrength()?

&gt; Source/JavaScriptCore/b3/B3LowerToAir.cpp:783
&gt; +        case Float:

This doesn&apos;t seem right.  Is it really optimal to use movsd when we just need movss?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147138</commentid>
    <comment_count>10</comment_count>
      <attachid>266837</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-07 18:13:42 -0800</bug_when>
    <thetext>Comment on attachment 266837
Patch

We talked about the moveFloat/moveFloatConditionally issue offline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147141</commentid>
    <comment_count>11</comment_count>
      <attachid>266837</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-07 18:22:59 -0800</bug_when>
    <thetext>Comment on attachment 266837
Patch

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

&gt; Source/JavaScriptCore/b3/B3ReduceDoubleToFloat.cpp:85
&gt; +    HashSet&lt;Value*&gt; candidates;

Why not IndexSet&lt;Value&gt; candidates?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147150</commentid>
    <comment_count>12</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-12-07 18:56:33 -0800</bug_when>
    <thetext>Committed r193683: &lt;http://trac.webkit.org/changeset/193683&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147345</commentid>
    <comment_count>13</comment_count>
      <attachid>266837</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-12-08 10:25:16 -0800</bug_when>
    <thetext>Comment on attachment 266837
Patch

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

&gt; Source/JavaScriptCore/b3/B3ReduceDoubleToFloat.cpp:72
&gt; +// Such operation arise in JS because there are is no Float type

are is

&gt; Source/JavaScriptCore/b3/B3ReduceDoubleToFloat.cpp:76
&gt; +// Using float in place remove the useless conversion, and the float

removes

&gt; Source/JavaScriptCore/b3/B3ReduceDoubleToFloat.cpp:77
&gt; +// ops is sometime massively cheaper (SQRT for example).

op</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266835</attachid>
            <date>2015-12-07 17:15:52 -0800</date>
            <delta_ts>2015-12-07 17:31:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-151974-20151207171523.patch</filename>
            <type>text/plain</type>
            <size>195492</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkzNjc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MjFkNjMyOWQ2OWRlNGIxYjcxY2EwOTM1Mzg4NWVlMWViMzJkMzliLi5lYmFlNDAyNTQ4ZGE0ZjRk
ZDIwNDI4OWYzMmZmNzA3YTBmZGM1OGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMzcgQEAKKzIwMTUtMTItMDcgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgW0pTQ10gQWRkIEZsb2F0IHN1cHBvcnQgdG8gQjMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTk3NAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBi
YXNpYyBmbG9hdCBzdXBwb3J0IHRvIEIzLgorCisgICAgICAgIFRoZSBuZXcgcGhhc2UgcmVkdWNl
RG91YmxlVG9GbG9hdCgpIGdpdmVzIHVzIGEgcHJpbWl0aXZlCisgICAgICAgIHZlcnNpb24gb2Yg
d2hhdCBMTFZNIHdhcyBnaXZpbmcgdXMgb24gZmxvYXRzLgorICAgICAgICBJdCBuZWVkcyB0byBz
dXBwb3J0IGNvbnZlcnNpb25zIGFjY3Jvc3MgUGhpcyBidXQgdGhhdCBjYW4KKyAgICAgICAgYmUg
YWRkZWQgbGF0ZXIuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6bW92ZURv
dWJsZUNvbmRpdGlvbmFsbHlGbG9hdCk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpz
cXJ0RmxvYXQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bG9hZEZs
b2F0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnN0b3JlRmxvYXQp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6Y29udmVydERvdWJsZVRv
RmxvYXQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6Y29udmVydEZs
b2F0VG9Eb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YWRk
RmxvYXQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6ZGl2RmxvYXQp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6c3ViRmxvYXQpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bXVsRmxvYXQpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YnJhbmNoRG91YmxlKToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaEZsb2F0KToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJYODZDb21tb246Om1vdmVDb25kaXRpb25hbGx5RG91YmxlKToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246Om1vdmVDb25kaXRpb25hbGx5RmxvYXQp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6anVtcEFmdGVyRmxvYXRp
bmdQb2ludENvbXBhcmUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6
bW92ZUNvbmRpdGlvbmFsbHlBZnRlckZsb2F0aW5nUG9pbnRDb21wYXJlKToKKyAgICAgICAgKiBh
c3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YWRk
c3NfcnIpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OmFkZHNzX21yKToKKyAgICAgICAg
KEpTQzo6WDg2QXNzZW1ibGVyOjpjdnRzZDJzc19tcik6CisgICAgICAgIChKU0M6Olg4NkFzc2Vt
Ymxlcjo6Y3Z0c3Myc2RfbXIpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Om1vdnNzX3Jt
KToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjptb3Zzc19tcik6CisgICAgICAgIChKU0M6
Olg4NkFzc2VtYmxlcjo6bXVsc3NfcnIpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Om11
bHNzX21yKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpzdWJzc19ycik6CisgICAgICAg
IChKU0M6Olg4NkFzc2VtYmxlcjo6c3Vic3NfbXIpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJs
ZXI6OnVjb21pc3NfcnIpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnVjb21pc3NfbXIp
OgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OmRpdnNzX3JyKToKKyAgICAgICAgKEpTQzo6
WDg2QXNzZW1ibGVyOjpkaXZzc19tcik6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6c3Fy
dHNzX3JyKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpzcXJ0c3NfbXIpOgorICAgICAg
ICAqIGIzL0IzQ29uc3QzMlZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkNvbnN0MzJWYWx1
ZTo6Yml0d2lzZUNhc3RDb25zdGFudCk6CisgICAgICAgICogYjMvQjNDb25zdDMyVmFsdWUuaDoK
KyAgICAgICAgKiBiMy9CM0NvbnN0RG91YmxlVmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6
Q29uc3REb3VibGVWYWx1ZTo6ZG91YmxlVG9GbG9hdENvbnN0YW50KToKKyAgICAgICAgKEpTQzo6
QjM6OkNvbnN0RG91YmxlVmFsdWU6OnNxcnRDb25zdGFudCk6CisgICAgICAgICogYjMvQjNDb25z
dERvdWJsZVZhbHVlLmg6CisgICAgICAgICogYjMvQjNDb25zdEZsb2F0VmFsdWUuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6QjM6OkNvbnN0RmxvYXRWYWx1ZTo6fkNvbnN0RmxvYXRWYWx1ZSk6
CisgICAgICAgIChKU0M6OkIzOjpDb25zdEZsb2F0VmFsdWU6Om5lZ0NvbnN0YW50KToKKyAgICAg
ICAgKEpTQzo6QjM6OkNvbnN0RmxvYXRWYWx1ZTo6YWRkQ29uc3RhbnQpOgorICAgICAgICAoSlND
OjpCMzo6Q29uc3RGbG9hdFZhbHVlOjpzdWJDb25zdGFudCk6CisgICAgICAgIChKU0M6OkIzOjpD
b25zdEZsb2F0VmFsdWU6Om11bENvbnN0YW50KToKKyAgICAgICAgKEpTQzo6QjM6OkNvbnN0Rmxv
YXRWYWx1ZTo6Yml0d2lzZUNhc3RDb25zdGFudCk6CisgICAgICAgIChKU0M6OkIzOjpDb25zdEZs
b2F0VmFsdWU6OmZsb2F0VG9Eb3VibGVDb25zdGFudCk6CisgICAgICAgIChKU0M6OkIzOjpDb25z
dEZsb2F0VmFsdWU6OnNxcnRDb25zdGFudCk6CisgICAgICAgIChKU0M6OkIzOjpDb25zdEZsb2F0
VmFsdWU6OmRpdkNvbnN0YW50KToKKyAgICAgICAgKEpTQzo6QjM6OkNvbnN0RmxvYXRWYWx1ZTo6
ZXF1YWxDb25zdGFudCk6CisgICAgICAgIChKU0M6OkIzOjpDb25zdEZsb2F0VmFsdWU6Om5vdEVx
dWFsQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpCMzo6Q29uc3RGbG9hdFZhbHVlOjpsZXNzVGhh
bkNvbnN0YW50KToKKyAgICAgICAgKEpTQzo6QjM6OkNvbnN0RmxvYXRWYWx1ZTo6Z3JlYXRlclRo
YW5Db25zdGFudCk6CisgICAgICAgIChKU0M6OkIzOjpDb25zdEZsb2F0VmFsdWU6Omxlc3NFcXVh
bENvbnN0YW50KToKKyAgICAgICAgKEpTQzo6QjM6OkNvbnN0RmxvYXRWYWx1ZTo6Z3JlYXRlckVx
dWFsQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpCMzo6Q29uc3RGbG9hdFZhbHVlOjpkdW1wTWV0
YSk6CisgICAgICAgICogYjMvQjNDb25zdEZsb2F0VmFsdWUuaDogQ29waWVkIGZyb20gU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3REb3VibGVWYWx1ZS5oLgorICAgICAgICAqIGIzL0Iz
R2VuZXJhdGUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6Z2VuZXJhdGVUb0Fpcik6CisgICAgICAg
ICogYjMvQjNMb3dlclRvQWlyLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fp
cjo6dHJ5T3Bjb2RlRm9yVHlwZSk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6
Om9wY29kZUZvclR5cGUpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjphcHBl
bmRVbk9wKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YXBwZW5kQmluT3Ap
OgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjphcHBlbmRTaGlmdCk6CisgICAg
ICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnRyeUFwcGVuZFN0b3JlVW5PcCk6CisgICAg
ICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnRyeUFwcGVuZFN0b3JlQmluT3ApOgorICAg
ICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjptb3ZlRm9yVHlwZSk6CisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnJlbGF4ZWRNb3ZlRm9yVHlwZSk6CisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmNyZWF0ZUdlbmVyaWNDb21wYXJlKToKKyAgICAgICAg
KEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6Y3JlYXRlQnJhbmNoKToKKyAgICAgICAgKEpTQzo6
QjM6OkFpcjo6TG93ZXJUb0Fpcjo6Y3JlYXRlQ29tcGFyZSk6CisgICAgICAgIChKU0M6OkIzOjpB
aXI6Okxvd2VyVG9BaXI6OmNyZWF0ZVNlbGVjdCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxv
d2VyVG9BaXI6Omxvd2VyKToKKyAgICAgICAgKiBiMy9CM01lbW9yeVZhbHVlLmNwcDoKKyAgICAg
ICAgKEpTQzo6QjM6Ok1lbW9yeVZhbHVlOjphY2Nlc3NCeXRlU2l6ZSk6IERlbGV0ZWQuCisgICAg
ICAgICogYjMvQjNNZW1vcnlWYWx1ZS5oOgorICAgICAgICAqIGIzL0IzTW92ZUNvbnN0YW50cy5j
cHA6CisgICAgICAgICogYjMvQjNPcGNvZGUuY3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVy
bmFsKToKKyAgICAgICAgKiBiMy9CM09wY29kZS5oOgorICAgICAgICAqIGIzL0IzUHJvY2VkdXJl
LmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OlByb2NlZHVyZTo6YWRkSW50Q29uc3RhbnQpOgorICAg
ICAgICAqIGIzL0IzUmVkdWNlRG91YmxlVG9GbG9hdC5jcHA6IEFkZGVkLgorICAgICAgICAoSlND
OjpCMzo6cmVkdWNlRG91YmxlVG9GbG9hdCk6CisgICAgICAgICogYjMvQjNSZWR1Y2VEb3VibGVU
b0Zsb2F0Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1R5cGUuY3Bw
LgorICAgICAgICAqIGIzL0IzUmVkdWNlU3RyZW5ndGguY3BwOgorICAgICAgICAqIGIzL0IzVHlw
ZS5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGIzL0IzVHlw
ZS5oOgorICAgICAgICAoSlNDOjpCMzo6aXNGbG9hdCk6CisgICAgICAgIChKU0M6OkIzOjpzaXpl
b2ZUeXBlKToKKyAgICAgICAgKiBiMy9CM1ZhbGlkYXRlLmNwcDoKKyAgICAgICAgKiBiMy9CM1Zh
bHVlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjpkb3VibGVUb0Zsb2F0Q29uc3RhbnQp
OgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OmZsb2F0VG9Eb3VibGVDb25zdGFudCk6CisgICAg
ICAgIChKU0M6OkIzOjpWYWx1ZTo6c3FydENvbnN0YW50KToKKyAgICAgICAgKEpTQzo6QjM6OlZh
bHVlOjphc1RyaVN0YXRlKToKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjplZmZlY3RzKToKKyAg
ICAgICAgKEpTQzo6QjM6OlZhbHVlOjprZXkpOgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OmNo
ZWNrT3Bjb2RlKToKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjp0eXBlRm9yKToKKyAgICAgICAg
KiBiMy9CM1ZhbHVlLmg6CisgICAgICAgICogYjMvQjNWYWx1ZUlubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6QjM6OlZhbHVlOjppc0NvbnN0YW50KToKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjpo
YXNGbG9hdCk6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZTo6YXNGbG9hdCk6CisgICAgICAgIChK
U0M6OkIzOjpWYWx1ZTo6aGFzTnVtYmVyKToKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjppc05l
Z2F0aXZlWmVybyk6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZTo6cmVwcmVzZW50YWJsZUFzKToK
KyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjphc051bWJlcik6CisgICAgICAgICogYjMvQjNWYWx1
ZUtleS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZUtleTo6bWF0ZXJpYWxpemUpOgorICAg
ICAgICAqIGIzL0IzVmFsdWVLZXkuaDoKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlS2V5OjpWYWx1
ZUtleSk6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZUtleTo6ZmxvYXRWYWx1ZSk6CisgICAgICAg
ICogYjMvYWlyL0FpckFyZy5oOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OnR5cGVGb3JC
M1R5cGUpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OndpZHRoRm9yQjNUeXBlKToKKyAg
ICAgICAgKiBiMy9haXIvQWlyRml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzLmNwcDoKKyAgICAgICAg
KiBiMy9haXIvQWlyT3Bjb2RlLm9wY29kZXM6CisgICAgICAgICogYjMvdGVzdGIzLmNwcDoKKyAg
ICAgICAgKEpTQzo6QjM6OnRlc3RBZGRBcmdGbG9hdCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0
QWRkQXJnc0Zsb2F0KToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RBZGRBcmdJbW1GbG9hdCk6Cisg
ICAgICAgIChKU0M6OkIzOjp0ZXN0QWRkSW1tQXJnRmxvYXQpOgorICAgICAgICAoSlNDOjpCMzo6
dGVzdEFkZEltbXNGbG9hdCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0QWRkQXJnRmxvYXRXaXRo
VXNlbGVzc0RvdWJsZUNvbnZlcnNpb24pOgorICAgICAgICAoSlNDOjpCMzo6dGVzdEFkZEFyZ3NG
bG9hdFdpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lvbik6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0
QWRkQXJnc0Zsb2F0V2l0aEVmZmVjdGZ1bERvdWJsZUNvbnZlcnNpb24pOgorICAgICAgICAoSlND
OjpCMzo6dGVzdE11bEFyZ0Zsb2F0KToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RNdWxBcmdzRmxv
YXQpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdE11bEFyZ0ltbUZsb2F0KToKKyAgICAgICAgKEpT
Qzo6QjM6OnRlc3RNdWxJbW1BcmdGbG9hdCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0TXVsSW1t
c0Zsb2F0KToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RNdWxBcmdGbG9hdFdpdGhVc2VsZXNzRG91
YmxlQ29udmVyc2lvbik6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0TXVsQXJnc0Zsb2F0V2l0aFVz
ZWxlc3NEb3VibGVDb252ZXJzaW9uKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RNdWxBcmdzRmxv
YXRXaXRoRWZmZWN0ZnVsRG91YmxlQ29udmVyc2lvbik6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0
RGl2QXJnRmxvYXQpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdERpdkFyZ3NGbG9hdCk6CisgICAg
ICAgIChKU0M6OkIzOjp0ZXN0RGl2QXJnSW1tRmxvYXQpOgorICAgICAgICAoSlNDOjpCMzo6dGVz
dERpdkltbUFyZ0Zsb2F0KToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3REaXZJbW1zRmxvYXQpOgor
ICAgICAgICAoSlNDOjpCMzo6dGVzdERpdkFyZ0Zsb2F0V2l0aFVzZWxlc3NEb3VibGVDb252ZXJz
aW9uKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3REaXZBcmdzRmxvYXRXaXRoVXNlbGVzc0RvdWJs
ZUNvbnZlcnNpb24pOgorICAgICAgICAoSlNDOjpCMzo6dGVzdERpdkFyZ3NGbG9hdFdpdGhFZmZl
Y3RmdWxEb3VibGVDb252ZXJzaW9uKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RTdWJBcmdGbG9h
dCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0U3ViQXJnc0Zsb2F0KToKKyAgICAgICAgKEpTQzo6
QjM6OnRlc3RTdWJBcmdJbW1GbG9hdCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0U3ViSW1tQXJn
RmxvYXQpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdFN1YkltbXNGbG9hdCk6CisgICAgICAgIChK
U0M6OkIzOjp0ZXN0U3ViQXJnRmxvYXRXaXRoVXNlbGVzc0RvdWJsZUNvbnZlcnNpb24pOgorICAg
ICAgICAoSlNDOjpCMzo6dGVzdFN1YkFyZ3NGbG9hdFdpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lv
bik6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0U3ViQXJnc0Zsb2F0V2l0aEVmZmVjdGZ1bERvdWJs
ZUNvbnZlcnNpb24pOgorICAgICAgICAoSlNDOjpCMzo6dGVzdENsek1lbTMyKToKKyAgICAgICAg
KEpTQzo6QjM6OnRlc3RTcXJ0QXJnKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RTcXJ0SW1tKToK
KyAgICAgICAgKEpTQzo6QjM6OnRlc3RTcXJ0TWVtKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RT
cXJ0QXJnV2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uKToKKyAgICAgICAgKEpTQzo6QjM6OnRl
c3RTcXJ0QXJnV2l0aEVmZmVjdGZ1bERvdWJsZUNvbnZlcnNpb24pOgorICAgICAgICAoSlNDOjpC
Mzo6dGVzdERvdWJsZUFyZ1RvSW50NjRCaXR3aXNlQ2FzdCk6CisgICAgICAgIChKU0M6OkIzOjp0
ZXN0RG91YmxlSW1tVG9JbnQ2NEJpdHdpc2VDYXN0KToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RU
d29CaXR3aXNlQ2FzdE9uRG91YmxlKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RCaXR3aXNlQ2Fz
dE9uRG91YmxlSW5NZW1vcnkpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdEludDY0QkFyZ1RvRG91
YmxlQml0d2lzZUNhc3QpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdEludDY0QkltbVRvRG91Ymxl
Qml0d2lzZUNhc3QpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdFR3b0JpdHdpc2VDYXN0T25JbnQ2
NCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Qml0d2lzZUNhc3RPbkludDY0SW5NZW1vcnkpOgor
ICAgICAgICAoSlNDOjpCMzo6dGVzdEZsb2F0SW1tVG9JbnQzMkJpdHdpc2VDYXN0KToKKyAgICAg
ICAgKEpTQzo6QjM6OnRlc3RCaXR3aXNlQ2FzdE9uRmxvYXRJbk1lbW9yeSk6CisgICAgICAgIChK
U0M6OkIzOjp0ZXN0SW50MzJCQXJnVG9GbG9hdEJpdHdpc2VDYXN0KToKKyAgICAgICAgKEpTQzo6
QjM6OnRlc3RJbnQzMkJJbW1Ub0Zsb2F0Qml0d2lzZUNhc3QpOgorICAgICAgICAoSlNDOjpCMzo6
dGVzdFR3b0JpdHdpc2VDYXN0T25JbnQzMik6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Qml0d2lz
ZUNhc3RPbkludDMySW5NZW1vcnkpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdENvbnZlcnREb3Vi
bGVUb0Zsb2F0QXJnKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RDb252ZXJ0RG91YmxlVG9GbG9h
dEltbSk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Q29udmVydERvdWJsZVRvRmxvYXRNZW0pOgor
ICAgICAgICAoSlNDOjpCMzo6dGVzdENvbnZlcnRGbG9hdFRvRG91YmxlQXJnKToKKyAgICAgICAg
KEpTQzo6QjM6OnRlc3RDb252ZXJ0RmxvYXRUb0RvdWJsZUltbSk6CisgICAgICAgIChKU0M6OkIz
Ojp0ZXN0Q29udmVydEZsb2F0VG9Eb3VibGVNZW0pOgorICAgICAgICAoSlNDOjpCMzo6dGVzdENv
bnZlcnREb3VibGVUb0Zsb2F0VG9Eb3VibGVUb0Zsb2F0KToKKyAgICAgICAgKEpTQzo6QjM6OnRl
c3RMb2FkRmxvYXRDb252ZXJ0RG91YmxlQ29udmVydEZsb2F0U3RvcmVGbG9hdCk6CisgICAgICAg
IChKU0M6OkIzOjp0ZXN0RnJvdW5kQXJnKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RGcm91bmRN
ZW0pOgorICAgICAgICAoSlNDOjpCMzo6dGVzdFN0b3JlMzIpOgorICAgICAgICAoSlNDOjpCMzo6
bW9kZWxMb2FkKToKKyAgICAgICAgKEpTQzo6QjM6OmZsb2F0Pik6CisgICAgICAgIChKU0M6OkIz
Ojpkb3VibGU+KToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RMb2FkKToKKyAgICAgICAgKEpTQzo6
QjM6OnRlc3RTdG9yZUZsb2F0KToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RSZXR1cm5GbG9hdCk6
CisgICAgICAgIChKU0M6OkIzOjpzaW1wbGVGdW5jdGlvbkZsb2F0KToKKyAgICAgICAgKEpTQzo6
QjM6OnRlc3RDYWxsU2ltcGxlRmxvYXQpOgorICAgICAgICAoSlNDOjpCMzo6ZnVuY3Rpb25XaXRo
SGVsbGFGbG9hdEFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Q2FsbEZ1bmN0aW9u
V2l0aEhlbGxhRmxvYXRBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdFNlbGVjdENv
bXBhcmVGbG9hdCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0U2VsZWN0Q29tcGFyZUZsb2F0VG9E
b3VibGUpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdFNlbGVjdERvdWJsZUNvbXBhcmVGbG9hdCk6
CisgICAgICAgIChKU0M6OkIzOjp0ZXN0U2VsZWN0RmxvYXRDb21wYXJlRmxvYXQpOgorICAgICAg
ICAoSlNDOjpCMzo6cG9wdWxhdGVXaXRoSW50ZXJlc3RpbmdWYWx1ZXMpOgorICAgICAgICAoSlND
OjpCMzo6ZmxvYXRpbmdQb2ludE9wZXJhbmRzKToKKyAgICAgICAgKEpTQzo6QjM6OmludDY0T3Bl
cmFuZHMpOgorICAgICAgICAoSlNDOjpCMzo6cnVuKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RT
dG9yZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpwb3NJbmZpbml0eSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkIzOjpuZWdJbmZpbml0eSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkIzOjpkb3VibGVPcGVyYW5kcyk6IERlbGV0ZWQuCisgICAgICAgICogZnRsL0ZUTEIzT3V0cHV0
LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmxvYWRGbG9hdFRvRG91YmxlKToKKyAg
ICAgICAgKiBmdGwvRlRMQjNPdXRwdXQuaDoKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmZy
b3VuZCk6CisgICAgICAgICogZnRsL0ZUTENvbW1vblZhbHVlcy5jcHA6CisgICAgICAgIChKU0M6
OkZUTDo6Q29tbW9uVmFsdWVzOjpDb21tb25WYWx1ZXMpOgorICAgICAgICAqIGZ0bC9GVExDb21t
b25WYWx1ZXMuaDoKKwogMjAxNS0xMi0wNyAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxl
LmNvbT4KIAogICAgICAgICBDUkFTSDogQ29kZUJsb2NrOjpzZXRPcHRpbWl6YXRpb25UaHJlc2hv
bGRCYXNlZE9uQ29tcGlsYXRpb25SZXN1bHQgKyA1NjcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAppbmRleCBjZWE2NjY1ODQ3ZjY4MDhiMWNmNDAxMTU1YTk1YjdiOWYyY2RiNmZhLi5j
ODYzMjc2YmM2OTRjZDMzZTVmYTRiMWNiZmYyNWQ1YTI5ZDkxZWFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xMDQsNiArMTA0LDcgQEAgc2V0KEphdmFTY3JpcHRDb3Jl
X1NPVVJDRVMKICAgICBiMy9CM0NvbnN0MzJWYWx1ZS5jcHAKICAgICBiMy9CM0NvbnN0NjRWYWx1
ZS5jcHAKICAgICBiMy9CM0NvbnN0RG91YmxlVmFsdWUuY3BwCisgICAgYjMvQjNDb25zdEZsb2F0
VmFsdWUuY3BwCiAgICAgYjMvQjNDb25zdHJhaW5lZFZhbHVlLmNwcAogICAgIGIzL0IzQ29udHJv
bFZhbHVlLmNwcAogICAgIGIzL0IzRGF0YVNlY3Rpb24uY3BwCkBAIC0xMjQsNiArMTI1LDcgQEAg
c2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBiMy9CM1BoYXNlU2NvcGUuY3BwCiAgICAg
YjMvQjNQaGlDaGlsZHJlbi5jcHAKICAgICBiMy9CM1Byb2NlZHVyZS5jcHAKKyAgICBiMy9CM1Jl
ZHVjZURvdWJsZVRvRmxvYXQuY3BwCiAgICAgYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAKICAgICBi
My9CM1N0YWNrbWFwR2VuZXJhdGlvblBhcmFtcy5jcHAKICAgICBiMy9CM1N0YWNrbWFwU3BlY2lh
bC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTdlZTgwOGYzODRkMWFlNzU4
ZDEwMjdiM2MyYzU1ODdhNzM0YmU1ZC4uNzE5ZDllMDIzYTY2YmVmZmM4MDZkYTMxOGM2OGZmODdl
N2U4NTQzNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExMjksNiArMTEyOSwx
MCBAQAogCQk0MURFQTEzMjFCOUYzMTYzMDA2RDY1REQgLyogQnVpbHRpblV0aWxzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MURFQTEzMTFCOUYzMTU0
MDA2RDY1REQgLyogQnVpbHRpblV0aWxzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDM0MEE0ODQxQTkwNTFBRjAwRDczQ0NBIC8qIE1hdGhDb21t
b24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM0
MEE0ODIxQTkwNTFBRjAwRDczQ0NBIC8qIE1hdGhDb21tb24uY3BwICovOyB9OwogCQk0MzQwQTQ4
NTFBOTA1MUFGMDBENzNDQ0EgLyogTWF0aENvbW1vbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM0MEE0ODMxQTkwNTFBRjAwRDczQ0NBIC8qIE1hdGhD
b21tb24uaCAqLzsgfTsKKwkJNDM0MjJBNjIxQzE1OEU2QTAwRTJFQjk4IC8qIEIzQ29uc3RGbG9h
dFZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQzNDIyQTYwMUMxNTg3MUIwMEUyRUI5OCAvKiBCM0NvbnN0RmxvYXRWYWx1ZS5jcHAgKi87IH07
CisJCTQzNDIyQTYzMUMxNThFNkQwMEUyRUI5OCAvKiBCM0NvbnN0RmxvYXRWYWx1ZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM0MjJBNjExQzE1ODcx
QjAwRTJFQjk4IC8qIEIzQ29uc3RGbG9hdFZhbHVlLmggKi87IH07CisJCTQzNDIyQTY2MUMxNjI2
NzUwMEUyRUI5OCAvKiBCM1JlZHVjZURvdWJsZVRvRmxvYXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM0MjJBNjQxQzE2MjIxRTAwRTJFQjk4IC8q
IEIzUmVkdWNlRG91YmxlVG9GbG9hdC5jcHAgKi87IH07CisJCTQzNDIyQTY3MUMxNjI2NzgwMEUy
RUI5OCAvKiBCM1JlZHVjZURvdWJsZVRvRmxvYXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzNDIyQTY1MUMxNjIyMUUwMEUyRUI5OCAvKiBCM1JlZHVj
ZURvdWJsZVRvRmxvYXQuaCAqLzsgfTsKIAkJNDQ0M0FFMzMxNkUxODhEOTAwNzZGMTEwIC8qIEZv
dW5kYXRpb24uZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTFGMEVCNjEwNUM4NkM2QjAwRTZERjFCIC8qIEZvdW5kYXRpb24uZnJhbWV3
b3JrICovOyB9OwogCQk0NTE1MzlCOTEyREM5OTQ1MDBFRjdBQzQgLyogWWFyci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDUxNTM5QjgxMkRDOTk0NTAw
RUY3QUM0IC8qIFlhcnIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk1MjY3OEY4RTFBMDMxMDA5MDA2QTMwNkQgLyogQmFzaWNCbG9ja0xvY2F0aW9u
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyNjc4
RjhDMUEwMzEwMDkwMDZBMzA2RCAvKiBCYXNpY0Jsb2NrTG9jYXRpb24uY3BwICovOyB9OwpAQCAt
MTk5MiwxMiArMTk5NiwxMiBAQAogCQlGRTEyMjAyODFCRTdGNTkxMDAzOUU2RjIgLyogSklUQWRk
R2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZFMTIyMDI1MUJFN0Y1NjQwMDM5RTZGMiAvKiBKSVRBZGRHZW5lcmF0b3IuY3BwICovOyB9
OwogCQlGRTE4N0EwMTFCRkJFNTVFMDAzOEJCQ0EgLyogSklUTXVsR2VuZXJhdG9yLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMTg3OUZGMUJGQkM3
M0MwMDM4QkJDQSAvKiBKSVRNdWxHZW5lcmF0b3IuY3BwICovOyB9OwogCQlGRTE4N0EwMjFCRkJF
NTYxMDAzOEJCQ0EgLyogSklUTXVsR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTE4N0EwMDFCRkJDNzNDMDAzOEJCQ0EgLyogSklUTXVs
R2VuZXJhdG9yLmggKi87IH07Ci0JCUZFMTg3QTBEMUMwMzBENUMwMDM4QkJDQSAvKiBKSVREaXZH
ZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZFMTg3QTBCMUMwMjI5MjMwMDM4QkJDQSAvKiBKSVREaXZHZW5lcmF0b3IuaCAqLzsgc2V0dGlu
Z3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9OwotCQlGRTE4N0EwRTFDMDMwRDY0MDAzOEJCQ0Eg
LyogSklURGl2R2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZFMTg3QTBBMUMwMjI5MjMwMDM4QkJDQSAvKiBKSVREaXZHZW5lcmF0b3Iu
Y3BwICovOyBzZXR0aW5ncyA9IHtBU1NFVF9UQUdTID0gKCk7IH07IH07Ci0JCUZFMTg3QTBGMUMw
MzBENkMwMDM4QkJDQSAvKiBTbmlwcGV0T3BlcmFuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxODdBMEMxQzAyRUJBNzAwMzhCQkNBIC8qIFNuaXBw
ZXRPcGVyYW5kLmggKi87IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKLQkJRkUx
ODdBMTgxQzBFMTNERDAwMzhCQkNBIC8qIEZUTElubGluZUNhY2hlRGVzY3JpcHRvcklubGluZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMTg3QTE3
MUMwRTEzQzYwMDM4QkJDQSAvKiBGVExJbmxpbmVDYWNoZURlc2NyaXB0b3JJbmxpbmVzLmggKi87
IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKLQkJRkUxODdBMTkxQzBFMTNFMzAw
MzhCQkNBIC8qIEZUTENvbXBpbGVCaW5hcnlPcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTE4N0ExNTFDMEUxM0M2MDAzOEJCQ0EgLyogRlRMQ29t
cGlsZUJpbmFyeU9wLmNwcCAqLzsgc2V0dGluZ3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9Owot
CQlGRTE4N0ExQTFDMEUxM0U2MDAzOEJCQ0EgLyogRlRMQ29tcGlsZUJpbmFyeU9wLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTE4N0ExNjFDMEUxM0M2
MDAzOEJCQ0EgLyogRlRMQ29tcGlsZUJpbmFyeU9wLmggKi87IHNldHRpbmdzID0ge0FTU0VUX1RB
R1MgPSAoKTsgfTsgfTsKKwkJRkUxODdBMEQxQzAzMEQ1QzAwMzhCQkNBIC8qIEpJVERpdkdlbmVy
YXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUx
ODdBMEIxQzAyMjkyMzAwMzhCQkNBIC8qIEpJVERpdkdlbmVyYXRvci5oICovOyB9OworCQlGRTE4
N0EwRTFDMDMwRDY0MDAzOEJCQ0EgLyogSklURGl2R2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMTg3QTBBMUMwMjI5MjMwMDM4QkJD
QSAvKiBKSVREaXZHZW5lcmF0b3IuY3BwICovOyB9OworCQlGRTE4N0EwRjFDMDMwRDZDMDAzOEJC
Q0EgLyogU25pcHBldE9wZXJhbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZFMTg3QTBDMUMwMkVCQTcwMDM4QkJDQSAvKiBTbmlwcGV0T3BlcmFuZC5o
ICovOyB9OworCQlGRTE4N0ExODFDMEUxM0REMDAzOEJCQ0EgLyogRlRMSW5saW5lQ2FjaGVEZXNj
cmlwdG9ySW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkUxODdBMTcxQzBFMTNDNjAwMzhCQkNBIC8qIEZUTElubGluZUNhY2hlRGVzY3JpcHRv
cklubGluZXMuaCAqLzsgfTsKKwkJRkUxODdBMTkxQzBFMTNFMzAwMzhCQkNBIC8qIEZUTENvbXBp
bGVCaW5hcnlPcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRTE4N0ExNTFDMEUxM0M2MDAzOEJCQ0EgLyogRlRMQ29tcGlsZUJpbmFyeU9wLmNwcCAq
LzsgfTsKKwkJRkUxODdBMUExQzBFMTNFNjAwMzhCQkNBIC8qIEZUTENvbXBpbGVCaW5hcnlPcC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxODdBMTYx
QzBFMTNDNjAwMzhCQkNBIC8qIEZUTENvbXBpbGVCaW5hcnlPcC5oICovOyB9OwogCQlGRTFDMEZG
RDFCMTkzRTk4MDBCNTNGQ0EgLyogRXhjZXB0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTFDMEZGQzFCMTkzRTk4MDBCNTNGQ0EgLyogRXhjZXB0
aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RkUxQzBGRkYxQjE5NEZEMTAwQjUzRkNBIC8qIEV4Y2VwdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTFDMEZGRTFCMTk0RkQxMDBCNTNGQ0Eg
LyogRXhjZXB0aW9uLmNwcCAqLzsgfTsKIAkJRkUyMENFOUQxNUYwNEE5NTAwREYzNDMwIC8qIExM
SW50Q0xvb3AuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkUyMENFOUIxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3AuY3BwICovOyB9OwpAQCAt
MzE5NSw2ICszMTk5LDEwIEBACiAJCTQxREVBMTMxMUI5RjMxNTQwMDZENjVERCAvKiBCdWlsdGlu
VXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnVpbHRpblV0aWxzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzNDBBNDgyMUE5MDUxQUYwMEQ3M0NDQSAv
KiBNYXRoQ29tbW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1h
dGhDb21tb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MzQwQTQ4MzFBOTA1
MUFGMDBENzNDQ0EgLyogTWF0aENvbW1vbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNYXRoQ29tbW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQzNDIyQTYw
MUMxNTg3MUIwMEUyRUI5OCAvKiBCM0NvbnN0RmxvYXRWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM0NvbnN0RmxvYXRWYWx1ZS5jcHA7IHBhdGggPSBiMy9C
M0NvbnN0RmxvYXRWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQzNDIy
QTYxMUMxNTg3MUIwMEUyRUI5OCAvKiBCM0NvbnN0RmxvYXRWYWx1ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBCM0NvbnN0RmxvYXRWYWx1ZS5oOyBwYXRoID0gYjMvQjNDb25z
dEZsb2F0VmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDM0MjJBNjQxQzE2
MjIxRTAwRTJFQjk4IC8qIEIzUmVkdWNlRG91YmxlVG9GbG9hdC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM1JlZHVjZURvdWJsZVRvRmxvYXQuY3BwOyBwYXRoID0g
YjMvQjNSZWR1Y2VEb3VibGVUb0Zsb2F0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDM0MjJBNjUxQzE2MjIxRTAwRTJFQjk4IC8qIEIzUmVkdWNlRG91YmxlVG9GbG9hdC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM1JlZHVjZURvdWJsZVRvRmxvYXQuaDsg
cGF0aCA9IGIzL0IzUmVkdWNlRG91YmxlVG9GbG9hdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NDkwOTdFRTBGOEY4MUI1MDA3NkEzMjcgLyogRmVhdHVyZURlZmluZXMueGNjb25m
aWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gRmVhdHVyZURlZmluZXMueGNjb25m
aWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ1MTUzOUI4MTJEQzk5NDUwMEVGN0FD
NCAvKiBZYXJyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFlhcnIuaDsgcGF0
aCA9IHlhcnIvWWFyci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NUUxMkQ4ODA2
QTQ5QjBGMDBFOURGODQgLyoganNjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGpzYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IHRhYldpZHRoID0gNDsgfTsKQEAgLTQ1ODMsNiArNDU5MSw4IEBACiAJCQkJMEZFQzg0QzYxQkRB
Q0RBQzAwODBGRjc0IC8qIEIzQ29uc3Q2NFZhbHVlLmggKi8sCiAJCQkJMEZFQzg0QzcxQkRBQ0RB
QzAwODBGRjc0IC8qIEIzQ29uc3REb3VibGVWYWx1ZS5jcHAgKi8sCiAJCQkJMEZFQzg0QzgxQkRB
Q0RBQzAwODBGRjc0IC8qIEIzQ29uc3REb3VibGVWYWx1ZS5oICovLAorCQkJCTQzNDIyQTYwMUMx
NTg3MUIwMEUyRUI5OCAvKiBCM0NvbnN0RmxvYXRWYWx1ZS5jcHAgKi8sCisJCQkJNDM0MjJBNjEx
QzE1ODcxQjAwRTJFQjk4IC8qIEIzQ29uc3RGbG9hdFZhbHVlLmggKi8sCiAJCQkJMEZFQzg1QjIx
QkRFRDk1NzAwODBGRjc0IC8qIEIzQ29uc3RQdHJWYWx1ZS5oICovLAogCQkJCTBGMzM4REYzMUJF
OTNENTUwMDEzQzg4RiAvKiBCM0NvbnN0cmFpbmVkVmFsdWUuY3BwICovLAogCQkJCTBGMzM4REY0
MUJFOTNENTUwMDEzQzg4RiAvKiBCM0NvbnN0cmFpbmVkVmFsdWUuaCAqLywKQEAgLTQ1OTAsNiAr
NDYwMCw4IEBACiAJCQkJMEZFQzg0Q0ExQkRBQ0RBQzAwODBGRjc0IC8qIEIzQ29udHJvbFZhbHVl
LmggKi8sCiAJCQkJMEYzMzhFMDExQkYwMjc2QzAwMTNDODhGIC8qIEIzRGF0YVNlY3Rpb24uY3Bw
ICovLAogCQkJCTBGMzM4RTAyMUJGMDI3NkMwMDEzQzg4RiAvKiBCM0RhdGFTZWN0aW9uLmggKi8s
CisJCQkJNDM0MjJBNjQxQzE2MjIxRTAwRTJFQjk4IC8qIEIzUmVkdWNlRG91YmxlVG9GbG9hdC5j
cHAgKi8sCisJCQkJNDM0MjJBNjUxQzE2MjIxRTAwRTJFQjk4IC8qIEIzUmVkdWNlRG91YmxlVG9G
bG9hdC5oICovLAogCQkJCTBGRUM4NUM0MUJFMTZGNUEwMDgwRkY3NCAvKiBCM0VmZmVjdHMuY3Bw
ICovLAogCQkJCTBGRUM4NUJFMUJFMTY3QTAwMDgwRkY3NCAvKiBCM0VmZmVjdHMuaCAqLywKIAkJ
CQkwRkVDODRDQjFCREFDREFDMDA4MEZGNzQgLyogQjNGcmVxdWVuY3lDbGFzcy5jcHAgKi8sCkBA
IC02OTk2LDYgKzcwMDgsNyBAQAogCQkJCTBGMkI5Q0UzMTlEMEJBN0QwMEIxRDFCNSAvKiBERkdB
dmFpbGFiaWxpdHlNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzE0Q0E1MTZFQTkyRjIwMEYz
RUJFQiAvKiBERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjYyMDE3NjE0M0ZDRDNCMDA2OEI3N0MgLyogREZHQmFzaWNCbG9jay5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNDM0MjJBNjMxQzE1OEU2RDAwRTJFQjk4IC8qIEIzQ29uc3RGbG9hdFZhbHVlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkZCOTIxQTE2RDAyRUM1MDA1NUE1REIgLyogREZHQmFzaWNC
bG9ja0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDg5Q0Y0MTdBMEI4Q0MwMDc3M0FE
OCAvKiBERkdCbG9ja0luc2VydGlvblNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDM0NDRkMx
OUFEQTQxMDAwNkFDNzJBIC8qIERGR0Jsb2NrTWFwLmggaW4gSGVhZGVycyAqLywKQEAgLTc1OTYs
NiArNzYwOSw3IEBACiAJCQkJMEY0NjgwQ0QxNEJCQjE3RDAwQkZFMjcyIC8qIExvd0xldmVsSW50
ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0QjcyM0I4MTJEN0RBNkYwMDNCRDVFRCAv
KiBNYWNoaW5lU3RhY2tNYXJrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2QzM2RUVBMEVFMTI4
OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDM0MjJB
NjcxQzE2MjY3ODAwRTJFQjk4IC8qIEIzUmVkdWNlRG91YmxlVG9GbG9hdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODZEM0IyQzYxMDE1NkJERTAwMjg2NUU3IC8qIE1hY3JvQXNzZW1ibGVyQVJNLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBMUEwMDlDMDE4MzFBMjJEMDBDRjg3MTEgLyogTWFjcm9Bc3Nl
bWJsZXJBUk02NC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZBREQxNDYwRkRERUE5ODAwMDZFRUMy
IC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCBpbiBIZWFkZXJzICovLApAQCAtODM5NSw2ICs4NDA5
LDcgQEAKIAkJCQkwRkZBNTQ5NzE2Qjg4MzUwMDBCM0E5ODIgLyogQTY0RE9wY29kZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRjU1RjBGNDE0RDEwNjM5MDBBQzc2NDkgLyogQWJzdHJhY3RQQy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVDODU2RDFCREFDREM3MDA4MEZGNzQgLyogQWlyQWxs
b2NhdGVTdGFjay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MzQyMkE2NjFDMTYyNjc1MDBFMkVC
OTggLyogQjNSZWR1Y2VEb3VibGVUb0Zsb2F0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUM4
NTZGMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJBcmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZF
Qzg1NzExQkRBQ0RDNzAwODBGRjc0IC8qIEFpckJhc2ljQmxvY2suY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEZFQzg1NzMxQkRBQ0RDNzAwODBGRjc0IC8qIEFpckNDYWxsU3BlY2lhbC5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTg0NTAsNiArODQ2NSw3IEBACiAJCQkJMEZFQzg1MjcxQkRBQ0RBQzAw
ODBGRjc0IC8qIEIzUGF0Y2hwb2ludFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUM4
NTI5MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1BoYXNlU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEZFQzg1MkIxQkRBQ0RBQzAwODBGRjc0IC8qIEIzUHJvY2VkdXJlLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTQzNDIyQTYyMUMxNThFNkEwMEUyRUI5OCAvKiBCM0NvbnN0RmxvYXRWYWx1ZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVDODVCQzFCRTE0NjJGMDA4MEZGNzQgLyogQjNSZWR1
Y2VTdHJlbmd0aC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVDODUzMDFCREFDREFDMDA4MEZG
NzQgLyogQjNTdGFja21hcFNwZWNpYWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQzg1MzIx
QkRBQ0RBQzAwODBGRjc0IC8qIEIzU3RhY2tTbG90S2luZC5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAppbmRl
eCBmNzM0M2ZmMTQ4NTM1MmI3ZTkyOTAxYTg3MTIxOGE4NzhlZGQyYjI3Li45ZWUxNjk1MmI5NTVl
NDU5YjE5NzM2ZWRjMmU0ZGJlYzIxNGUzYWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCkBAIC0xMzU2LDYgKzEzNTYsMTMgQEAgcHVi
bGljOgogICAgICAgICBtb3ZlRG91YmxlKHNyYywgZGVzdCk7CiAgICAgICAgIGZhbHNlQ2FzZS5s
aW5rKHRoaXMpOwogICAgIH0KKworICAgIHZvaWQgbW92ZURvdWJsZUNvbmRpdGlvbmFsbHlGbG9h
dChEb3VibGVDb25kaXRpb24gY29uZCwgRlBSZWdpc3RlcklEIGxlZnQsIEZQUmVnaXN0ZXJJRCBy
aWdodCwgRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAg
ICBKdW1wIGZhbHNlQ2FzZSA9IGJyYW5jaEZsb2F0KGludmVydChjb25kKSwgbGVmdCwgcmlnaHQp
OworICAgICAgICBtb3ZlRG91YmxlKHNyYywgZGVzdCk7CisgICAgICAgIGZhbHNlQ2FzZS5saW5r
KHRoaXMpOworICAgIH0KICNlbmRpZgogCiAgICAgdm9pZCBsZWEoQWRkcmVzcyBhZGRyZXNzLCBS
ZWdpc3RlcklEIGRlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKaW5kZXggNjgxNDM4NTk3NDBjYmQ1NDkx
ZTM4OWYxZmIxNjAxMjM2ZmZkY2Q4Yy4uZmQ4MDM3NGI4Zjg2MmU5ZGM2MTFjMGI5ZWY0OWUwYWI1
ZjIxMGMzOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlclg4NkNvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaApAQCAtODIsNiArODIsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIE5vblplcm8gPSBYODZBc3NlbWJsZXI6OkNvbmRpdGlvbk5FCiAgICAgfTsKIAorICAg
IC8vIEZJWE1FOiBpdCB3b3VsZCBiZSBuZWF0IHRvIHJlbmFtZSB0aGlzIHRvIEZsb2F0aW5nUG9p
bnRDb25kaXRpb24gaW4gZXZlcnkgYXNzZW1ibGVyLgogICAgIGVudW0gRG91YmxlQ29uZGl0aW9u
IHsKICAgICAgICAgLy8gVGhlc2UgY29uZGl0aW9ucyB3aWxsIG9ubHkgZXZhbHVhdGUgdG8gdHJ1
ZSBpZiB0aGUgY29tcGFyaXNvbiBpcyBvcmRlcmVkIC0gaS5lLiBuZWl0aGVyIG9wZXJhbmQgaXMg
TmFOLgogICAgICAgICBEb3VibGVFcXVhbCA9IFg4NkFzc2VtYmxlcjo6Q29uZGl0aW9uRSB8IERv
dWJsZUNvbmRpdGlvbkJpdFNwZWNpYWwsCkBAIC01MjMsNiArNTI0LDE2IEBAIHB1YmxpYzoKICAg
ICAgICAgbV9hc3NlbWJsZXIuc3FydHNkX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkc3QpOwog
ICAgIH0KIAorICAgIHZvaWQgc3FydEZsb2F0KEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJ
RCBkc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zcXJ0c3NfcnIoc3JjLCBkc3QpOwor
ICAgIH0KKworICAgIHZvaWQgc3FydEZsb2F0KEFkZHJlc3Mgc3JjLCBGUFJlZ2lzdGVySUQgZHN0
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3FydHNzX21yKHNyYy5vZmZzZXQsIHNyYy5i
YXNlLCBkc3QpOworICAgIH0KKwogICAgIHZvaWQgYWJzRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMs
IEZQUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBBU1NFUlQoc3JjICE9IGRzdCk7CkBA
IC03NzksMTIgKzc5MCwxOSBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChpc1NTRTJQcmVzZW50
KCkpOwogICAgICAgICBtX2Fzc2VtYmxlci5tb3ZzZF9tcihhZGRyZXNzLm9mZnNldCwgYWRkcmVz
cy5iYXNlLCBkZXN0KTsKICAgICB9Ci0gICAgCisKICAgICB2b2lkIGxvYWREb3VibGUoQmFzZUlu
ZGV4IGFkZHJlc3MsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGlz
U1NFMlByZXNlbnQoKSk7CiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdnNkX21yKGFkZHJlc3Mub2Zm
c2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUsIGRlc3QpOwog
ICAgIH0KKworICAgIHZvaWQgbG9hZEZsb2F0KEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBGUFJl
Z2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpc1NTRTJQcmVzZW50KCkpOwor
ICAgICAgICBtX2Fzc2VtYmxlci5tb3Zzc19tcihhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNl
LCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIGxvYWRGbG9hdChCYXNlSW5kZXggYWRkcmVzcywg
RlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBBU1NFUlQoaXNTU0UyUHJlc2VudCgp
KTsKQEAgLTgwMiw3ICs4MjAsMTMgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoaXNTU0UyUHJl
c2VudCgpKTsKICAgICAgICAgbV9hc3NlbWJsZXIubW92c2Rfcm0oc3JjLCBhZGRyZXNzLm9mZnNl
dCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKICAgICB9Ci0g
ICAgCisKKyAgICB2b2lkIHN0b3JlRmxvYXQoRlBSZWdpc3RlcklEIHNyYywgSW1wbGljaXRBZGRy
ZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBBU1NFUlQoaXNTU0UyUHJlc2VudCgpKTsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubW92c3Nfcm0oc3JjLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5i
YXNlKTsKKyAgICB9CisKICAgICB2b2lkIHN0b3JlRmxvYXQoRlBSZWdpc3RlcklEIHNyYywgQmFz
ZUluZGV4IGFkZHJlc3MpCiAgICAgewogICAgICAgICBBU1NFUlQoaXNTU0UyUHJlc2VudCgpKTsK
QEAgLTgxNSwxMiArODM5LDI0IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuY3Z0c2Qy
c3NfcnIoc3JjLCBkc3QpOwogICAgIH0KIAorICAgIHZvaWQgY29udmVydERvdWJsZVRvRmxvYXQo
QWRkcmVzcyBhZGRyZXNzLCBGUFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgQVNTRVJU
KGlzU1NFMlByZXNlbnQoKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmN2dHNkMnNzX21yKGFkZHJl
c3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGRzdCk7CisgICAgfQorCiAgICAgdm9pZCBjb252ZXJ0
RmxvYXRUb0RvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZHN0KQogICAgIHsK
ICAgICAgICAgQVNTRVJUKGlzU1NFMlByZXNlbnQoKSk7CiAgICAgICAgIG1fYXNzZW1ibGVyLmN2
dHNzMnNkX3JyKHNyYywgZHN0KTsKICAgICB9CiAKKyAgICB2b2lkIGNvbnZlcnRGbG9hdFRvRG91
YmxlKEFkZHJlc3MgYWRkcmVzcywgRlBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIEFT
U0VSVChpc1NTRTJQcmVzZW50KCkpOworICAgICAgICBtX2Fzc2VtYmxlci5jdnRzczJzZF9tcihh
ZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBkc3QpOworICAgIH0KKwogICAgIHZvaWQgYWRk
RG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAg
ICAgQVNTRVJUKGlzU1NFMlByZXNlbnQoKSk7CkBAIC04NDQsNiArODgwLDE4IEBAIHB1YmxpYzoK
ICAgICAgICAgbV9hc3NlbWJsZXIuYWRkc2RfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIGRlc3Qp
OwogICAgIH0KIAorICAgIHZvaWQgYWRkRmxvYXQoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3Rl
cklEIGRlc3QpCisgICAgeworICAgICAgICBBU1NFUlQoaXNTU0UyUHJlc2VudCgpKTsKKyAgICAg
ICAgbV9hc3NlbWJsZXIuYWRkc3NfcnIoc3JjLCBkZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIGFk
ZEZsb2F0KEFkZHJlc3Mgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIEFT
U0VSVChpc1NTRTJQcmVzZW50KCkpOworICAgICAgICBtX2Fzc2VtYmxlci5hZGRzc19tcihzcmMu
b2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBkaXZEb3VibGUoRlBS
ZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBBU1NFUlQo
aXNTU0UyUHJlc2VudCgpKTsKQEAgLTg2NSw2ICs5MTMsMTggQEAgcHVibGljOgogICAgICAgICBt
X2Fzc2VtYmxlci5kaXZzZF9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7CiAgICAgfQog
CisgICAgdm9pZCBkaXZGbG9hdChGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB7CisgICAgICAgIEFTU0VSVChpc1NTRTJQcmVzZW50KCkpOworICAgICAgICBtX2Fzc2Vt
Ymxlci5kaXZzc19ycihzcmMsIGRlc3QpOworICAgIH0KKworICAgIHZvaWQgZGl2RmxvYXQoQWRk
cmVzcyBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzU1NF
MlByZXNlbnQoKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmRpdnNzX21yKHNyYy5vZmZzZXQsIHNy
Yy5iYXNlLCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIHN1YkRvdWJsZShGUFJlZ2lzdGVySUQg
c3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIEFTU0VSVChpc1NTRTJQcmVz
ZW50KCkpOwpAQCAtODg2LDYgKzk0NiwxOCBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVy
LnN1YnNkX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lk
IHN1YkZsb2F0KEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKGlzU1NFMlByZXNlbnQoKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YnNz
X3JyKHNyYywgZGVzdCk7CisgICAgfQorCisgICAgdm9pZCBzdWJGbG9hdChBZGRyZXNzIHNyYywg
RlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBBU1NFUlQoaXNTU0UyUHJlc2VudCgp
KTsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3Vic3NfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIGRl
c3QpOworICAgIH0KKwogICAgIHZvaWQgbXVsRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVn
aXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGlzU1NFMlByZXNlbnQoKSk7CkBA
IC05MDksNiArOTgxLDE4IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIubXVsc2RfbXIo
c3JjLm9mZnNldCwgc3JjLmJhc2UsIGRlc3QpOwogICAgIH0KIAorICAgIHZvaWQgbXVsRmxvYXQo
RlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBBU1NF
UlQoaXNTU0UyUHJlc2VudCgpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubXVsc3NfcnIoc3JjLCBk
ZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIG11bEZsb2F0KEFkZHJlc3Mgc3JjLCBGUFJlZ2lzdGVy
SUQgZGVzdCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpc1NTRTJQcmVzZW50KCkpOworICAgICAg
ICBtX2Fzc2VtYmxlci5tdWxzc19tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7CisgICAg
fQorCiAgICAgdm9pZCBjb252ZXJ0SW50MzJUb0RvdWJsZShSZWdpc3RlcklEIHNyYywgRlBSZWdp
c3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBBU1NFUlQoaXNTU0UyUHJlc2VudCgpKTsKQEAg
LTkyOSwyNyArMTAxMywxOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci51Y29t
aXNkX3JyKGxlZnQsIHJpZ2h0KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9hc3NlbWJs
ZXIudWNvbWlzZF9ycihyaWdodCwgbGVmdCk7CisgICAgICAgIHJldHVybiBqdW1wQWZ0ZXJGbG9h
dGluZ1BvaW50Q29tcGFyZShjb25kLCBsZWZ0LCByaWdodCk7CisgICAgfQogCi0gICAgICAgIGlm
IChjb25kID09IERvdWJsZUVxdWFsKSB7Ci0gICAgICAgICAgICBpZiAobGVmdCA9PSByaWdodCkK
LSAgICAgICAgICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qbnAoKSk7Ci0gICAgICAg
ICAgICBKdW1wIGlzVW5vcmRlcmVkKG1fYXNzZW1ibGVyLmpwKCkpOwotICAgICAgICAgICAgSnVt
cCByZXN1bHQgPSBKdW1wKG1fYXNzZW1ibGVyLmplKCkpOwotICAgICAgICAgICAgaXNVbm9yZGVy
ZWQubGluayh0aGlzKTsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgIH0gZWxz
ZSBpZiAoY29uZCA9PSBEb3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkKSB7Ci0gICAgICAgICAgICBp
ZiAobGVmdCA9PSByaWdodCkKLSAgICAgICAgICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxl
ci5qcCgpKTsKLSAgICAgICAgICAgIEp1bXAgaXNVbm9yZGVyZWQobV9hc3NlbWJsZXIuanAoKSk7
Ci0gICAgICAgICAgICBKdW1wIGlzRXF1YWwobV9hc3NlbWJsZXIuamUoKSk7Ci0gICAgICAgICAg
ICBpc1Vub3JkZXJlZC5saW5rKHRoaXMpOwotICAgICAgICAgICAgSnVtcCByZXN1bHQgPSBqdW1w
KCk7Ci0gICAgICAgICAgICBpc0VxdWFsLmxpbmsodGhpcyk7Ci0gICAgICAgICAgICByZXR1cm4g
cmVzdWx0OwotICAgICAgICB9CisgICAgSnVtcCBicmFuY2hGbG9hdChEb3VibGVDb25kaXRpb24g
Y29uZCwgRlBSZWdpc3RlcklEIGxlZnQsIEZQUmVnaXN0ZXJJRCByaWdodCkKKyAgICB7CisgICAg
ICAgIEFTU0VSVChpc1NTRTJQcmVzZW50KCkpOwogCi0gICAgICAgIEFTU0VSVCghKGNvbmQgJiBE
b3VibGVDb25kaXRpb25CaXRTcGVjaWFsKSk7Ci0gICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1i
bGVyLmpDQyhzdGF0aWNfY2FzdDxYODZBc3NlbWJsZXI6OkNvbmRpdGlvbj4oY29uZCAmIH5Eb3Vi
bGVDb25kaXRpb25CaXRzKSkpOworICAgICAgICBpZiAoY29uZCAmIERvdWJsZUNvbmRpdGlvbkJp
dEludmVydCkKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnVjb21pc3NfcnIobGVmdCwgcmlnaHQp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2Fzc2VtYmxlci51Y29taXNzX3JyKHJpZ2h0
LCBsZWZ0KTsKKyAgICAgICAgcmV0dXJuIGp1bXBBZnRlckZsb2F0aW5nUG9pbnRDb21wYXJlKGNv
bmQsIGxlZnQsIHJpZ2h0KTsKICAgICB9CiAKICAgICAvLyBUcnVuY2F0ZXMgJ3NyYycgdG8gYW4g
aW50ZWdlciwgYW5kIHBsYWNlcyB0aGUgcmVzdWx0aW5nICdkZXN0Jy4KQEAgLTExMjYsMzIgKzEy
MDEsMTggQEAgcHVibGljOgogICAgICAgICAgICAgbV9hc3NlbWJsZXIudWNvbWlzZF9ycihsZWZ0
LCByaWdodCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnVjb21pc2Rf
cnIocmlnaHQsIGxlZnQpOworICAgICAgICBtb3ZlQ29uZGl0aW9uYWxseUFmdGVyRmxvYXRpbmdQ
b2ludENvbXBhcmUoY29uZCwgbGVmdCwgcmlnaHQsIHNyYywgZGVzdCk7CisgICAgfQogCi0gICAg
ICAgIGlmIChjb25kID09IERvdWJsZUVxdWFsKSB7Ci0gICAgICAgICAgICBpZiAobGVmdCA9PSBy
aWdodCkgewotICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtb3ZucHFfcnIoc3JjLCBkZXN0
KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IEp1bXAgaXNVbm9yZGVyZWQobV9hc3NlbWJsZXIuanAoKSk7Ci0gICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5jbW92ZXFfcnIoc3JjLCBkZXN0KTsKLSAgICAgICAgICAgIGlzVW5vcmRlcmVkLmxpbmso
dGhpcyk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoY29u
ZCA9PSBEb3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkKSB7Ci0gICAgICAgICAgICBpZiAobGVmdCA9
PSByaWdodCkgewotICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtb3ZwcV9ycihzcmMsIGRl
c3QpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuY21vdnBxX3JyKHNyYywgZGVzdCk7Ci0gICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5jbW92bmVxX3JyKHNyYywgZGVzdCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KKyAgICB2b2lkIG1vdmVDb25kaXRpb25hbGx5RmxvYXQoRG91YmxlQ29uZGl0aW9uIGNvbmQs
IEZQUmVnaXN0ZXJJRCBsZWZ0LCBGUFJlZ2lzdGVySUQgcmlnaHQsIFJlZ2lzdGVySUQgc3JjLCBS
ZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBBU1NFUlQoaXNTU0UyUHJlc2VudCgpKTsK
IAotICAgICAgICBBU1NFUlQoIShjb25kICYgRG91YmxlQ29uZGl0aW9uQml0U3BlY2lhbCkpOwot
ICAgICAgICBtX2Fzc2VtYmxlci5jbW92cV9ycihzdGF0aWNfY2FzdDxYODZBc3NlbWJsZXI6OkNv
bmRpdGlvbj4oY29uZCAmIH5Eb3VibGVDb25kaXRpb25CaXRzKSwgc3JjLCBkZXN0KTsKKyAgICAg
ICAgaWYgKGNvbmQgJiBEb3VibGVDb25kaXRpb25CaXRJbnZlcnQpCisgICAgICAgICAgICBtX2Fz
c2VtYmxlci51Y29taXNzX3JyKGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgbV9hc3NlbWJsZXIudWNvbWlzc19ycihyaWdodCwgbGVmdCk7CisgICAgICAgIG1vdmVDb25k
aXRpb25hbGx5QWZ0ZXJGbG9hdGluZ1BvaW50Q29tcGFyZShjb25kLCBsZWZ0LCByaWdodCwgc3Jj
LCBkZXN0KTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBzd2FwKFJlZ2lzdGVySUQgcmVnMSwgUmVn
aXN0ZXJJRCByZWcyKQpAQCAtMTc5Nyw2ICsxODU4LDYwIEBAIHByaXZhdGU6CiAgICAgICAgIHNr
aXBOb25aZXJvQ2FzZS5saW5rKHRoaXMpOwogICAgIH0KIAorICAgIEp1bXAganVtcEFmdGVyRmxv
YXRpbmdQb2ludENvbXBhcmUoRG91YmxlQ29uZGl0aW9uIGNvbmQsIEZQUmVnaXN0ZXJJRCBsZWZ0
LCBGUFJlZ2lzdGVySUQgcmlnaHQpCisgICAgeworICAgICAgICBpZiAoY29uZCA9PSBEb3VibGVF
cXVhbCkgeworICAgICAgICAgICAgaWYgKGxlZnQgPT0gcmlnaHQpCisgICAgICAgICAgICAgICAg
cmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuam5wKCkpOworICAgICAgICAgICAgSnVtcCBpc1Vub3Jk
ZXJlZChtX2Fzc2VtYmxlci5qcCgpKTsKKyAgICAgICAgICAgIEp1bXAgcmVzdWx0ID0gSnVtcCht
X2Fzc2VtYmxlci5qZSgpKTsKKyAgICAgICAgICAgIGlzVW5vcmRlcmVkLmxpbmsodGhpcyk7Cisg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgICAgIGlmIChjb25kID09
IERvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQpIHsKKyAgICAgICAgICAgIGlmIChsZWZ0ID09IHJp
Z2h0KQorICAgICAgICAgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpwKCkpOworICAg
ICAgICAgICAgSnVtcCBpc1Vub3JkZXJlZChtX2Fzc2VtYmxlci5qcCgpKTsKKyAgICAgICAgICAg
IEp1bXAgaXNFcXVhbChtX2Fzc2VtYmxlci5qZSgpKTsKKyAgICAgICAgICAgIGlzVW5vcmRlcmVk
LmxpbmsodGhpcyk7CisgICAgICAgICAgICBKdW1wIHJlc3VsdCA9IGp1bXAoKTsKKyAgICAgICAg
ICAgIGlzRXF1YWwubGluayh0aGlzKTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
ICAgIH0KKworICAgICAgICBBU1NFUlQoIShjb25kICYgRG91YmxlQ29uZGl0aW9uQml0U3BlY2lh
bCkpOworICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qQ0Moc3RhdGljX2Nhc3Q8WDg2
QXNzZW1ibGVyOjpDb25kaXRpb24+KGNvbmQgJiB+RG91YmxlQ29uZGl0aW9uQml0cykpKTsKKyAg
ICB9CisKKyAgICB2b2lkIG1vdmVDb25kaXRpb25hbGx5QWZ0ZXJGbG9hdGluZ1BvaW50Q29tcGFy
ZShEb3VibGVDb25kaXRpb24gY29uZCwgRlBSZWdpc3RlcklEIGxlZnQsIEZQUmVnaXN0ZXJJRCBy
aWdodCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGlm
IChjb25kID09IERvdWJsZUVxdWFsKSB7CisgICAgICAgICAgICBpZiAobGVmdCA9PSByaWdodCkg
eworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtb3ZucHFfcnIoc3JjLCBkZXN0KTsKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEp1bXAg
aXNVbm9yZGVyZWQobV9hc3NlbWJsZXIuanAoKSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5j
bW92ZXFfcnIoc3JjLCBkZXN0KTsKKyAgICAgICAgICAgIGlzVW5vcmRlcmVkLmxpbmsodGhpcyk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoY29uZCA9PSBE
b3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkKSB7CisgICAgICAgICAgICBpZiAobGVmdCA9PSByaWdo
dCkgeworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtb3ZwcV9ycihzcmMsIGRlc3QpOwor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbV9h
c3NlbWJsZXIuY21vdnBxX3JyKHNyYywgZGVzdCk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5j
bW92bmVxX3JyKHNyYywgZGVzdCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBBU1NFUlQoIShjb25kICYgRG91YmxlQ29uZGl0aW9uQml0U3BlY2lhbCkpOworICAg
ICAgICBtX2Fzc2VtYmxlci5jbW92cV9ycihzdGF0aWNfY2FzdDxYODZBc3NlbWJsZXI6OkNvbmRp
dGlvbj4oY29uZCAmIH5Eb3VibGVDb25kaXRpb25CaXRzKSwgc3JjLCBkZXN0KTsKKyAgICB9CisK
ICNpZiBDUFUoWDg2KQogI2lmIE9TKE1BQ19PU19YKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAppbmRleCA1ZDI5YzU5MmQ4YzQ5ZDk3NzFmMGE0
NjM1Zjk3MjYyODJlNWViNGRlLi40ZWI1ZDRiZDNkZTNiOGIxNmEyZjM1MmE0NzRjMWUyZTQzNmE0
ZmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2Vt
Ymxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVy
LmgKQEAgLTE5NDAsNiArMTk0MCwxOCBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLnR3
b0J5dGVPcChPUDJfQUREU0RfVnNkV3NkLCAoUmVnaXN0ZXJJRClkc3QsIGJhc2UsIG9mZnNldCk7
CiAgICAgfQogCisgICAgdm9pZCBhZGRzc19ycihYTU1SZWdpc3RlcklEIHNyYywgWE1NUmVnaXN0
ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX1NTRV9GMyk7
CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfQUREU0RfVnNkV3NkLCAoUmVnaXN0
ZXJJRClkc3QsIChSZWdpc3RlcklEKXNyYyk7CisgICAgfQorCisgICAgdm9pZCBhZGRzc19tcihp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFhNTVJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAg
ICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9TU0VfRjMpOworICAgICAgICBtX2Zvcm1hdHRl
ci50d29CeXRlT3AoT1AyX0FERFNEX1ZzZFdzZCwgKFJlZ2lzdGVySUQpZHN0LCBiYXNlLCBvZmZz
ZXQpOworICAgIH0KKwogI2lmICFDUFUoWDg2XzY0KQogICAgIHZvaWQgYWRkc2RfbXIoY29uc3Qg
dm9pZCogYWRkcmVzcywgWE1NUmVnaXN0ZXJJRCBkc3QpCiAgICAgewpAQCAtMTk4OCwxMiArMjAw
MCwyNCBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfQ1ZUU0Qy
U1NfVnNkV3NkLCBkc3QsIChSZWdpc3RlcklEKXNyYyk7CiAgICAgfQogCisgICAgdm9pZCBjdnRz
ZDJzc19tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFhNTVJlZ2lzdGVySUQgZHN0KQor
ICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9TU0VfRjIpOworICAgICAgICBt
X2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0NWVFNEMlNTX1ZzZFdzZCwgZHN0LCBiYXNlLCBvZmZz
ZXQpOworICAgIH0KKwogICAgIHZvaWQgY3Z0c3Myc2RfcnIoWE1NUmVnaXN0ZXJJRCBzcmMsIFhN
TVJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9T
U0VfRjMpOwogICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0NWVFNTMlNEX1ZzZFdz
ZCwgZHN0LCAoUmVnaXN0ZXJJRClzcmMpOwogICAgIH0KLSAgICAKKworICAgIHZvaWQgY3Z0c3My
c2RfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBYTU1SZWdpc3RlcklEIGRzdCkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfU1NFX0YzKTsKKyAgICAgICAgbV9m
b3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9DVlRTUzJTRF9Wc2RXc2QsIGRzdCwgYmFzZSwgb2Zmc2V0
KTsKKyAgICB9CisKICNpZiBDUFUoWDg2XzY0KQogICAgIHZvaWQgY3Z0dHNkMnNpcV9ycihYTU1S
ZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewpAQCAtMjA1MSw2ICsyMDc1LDEy
IEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9TU0VfRjIpOwogICAg
ICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX01PVlNEX1dzZFZzZCwgKFJlZ2lzdGVySUQp
c3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CiAgICAgfQorCisgICAgdm9pZCBtb3Zz
c19ybShYTU1SZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAg
IHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9TU0VfRjMpOworICAgICAgICBtX2Zv
cm1hdHRlci50d29CeXRlT3AoT1AyX01PVlNEX1dzZFZzZCwgKFJlZ2lzdGVySUQpc3JjLCBiYXNl
LCBvZmZzZXQpOworICAgIH0KICAgICAKICAgICB2b2lkIG1vdnNzX3JtKFhNTVJlZ2lzdGVySUQg
c3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBz
Y2FsZSkKICAgICB7CkBAIC0yMDY5LDcgKzIwOTksMTMgQEAgcHVibGljOgogICAgICAgICBtX2Zv
cm1hdHRlci5wcmVmaXgoUFJFX1NTRV9GMik7CiAgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVP
cChPUDJfTU9WU0RfVnNkV3NkLCBkc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKICAg
ICB9Ci0gICAgCisKKyAgICB2b2lkIG1vdnNzX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSwgWE1NUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgo
UFJFX1NTRV9GMyk7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfTU9WU0RfVnNk
V3NkLCAoUmVnaXN0ZXJJRClkc3QsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBt
b3Zzc19tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGlu
dCBzY2FsZSwgWE1NUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5w
cmVmaXgoUFJFX1NTRV9GMyk7CkBAIC0yMTAxLDYgKzIxMzcsMTggQEAgcHVibGljOgogICAgICAg
ICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX01VTFNEX1ZzZFdzZCwgKFJlZ2lzdGVySUQpZHN0
LCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgbXVsc3NfcnIoWE1NUmVnaXN0ZXJJ
RCBzcmMsIFhNTVJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJl
Zml4KFBSRV9TU0VfRjMpOworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX01VTFNE
X1ZzZFdzZCwgKFJlZ2lzdGVySUQpZHN0LCAoUmVnaXN0ZXJJRClzcmMpOworICAgIH0KKworICAg
IHZvaWQgbXVsc3NfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBYTU1SZWdpc3RlcklE
IGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfU1NFX0YzKTsKKyAg
ICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9NVUxTRF9Wc2RXc2QsIChSZWdpc3RlcklE
KWRzdCwgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIHBleHRyd19pcnIoaW50IHdo
aWNoV29yZCwgWE1NUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAg
ICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9TU0VfNjYpOwpAQCAtMjE0MCw2ICsyMTg4LDE4IEBA
IHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9TVUJTRF9Wc2RXc2Qs
IChSZWdpc3RlcklEKWRzdCwgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIHN1YnNz
X3JyKFhNTVJlZ2lzdGVySUQgc3JjLCBYTU1SZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAg
IG1fZm9ybWF0dGVyLnByZWZpeChQUkVfU1NFX0YzKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdv
Qnl0ZU9wKE9QMl9TVUJTRF9Wc2RXc2QsIChSZWdpc3RlcklEKWRzdCwgKFJlZ2lzdGVySUQpc3Jj
KTsKKyAgICB9CisKKyAgICB2b2lkIHN1YnNzX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSwgWE1NUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgo
UFJFX1NTRV9GMyk7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfU1VCU0RfVnNk
V3NkLCAoUmVnaXN0ZXJJRClkc3QsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCB1
Y29taXNkX3JyKFhNTVJlZ2lzdGVySUQgc3JjLCBYTU1SZWdpc3RlcklEIGRzdCkKICAgICB7CiAg
ICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfU1NFXzY2KTsKQEAgLTIxNTIsNiArMjIxMiwx
NiBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfVUNPTUlTRF9W
c2RXc2QsIChSZWdpc3RlcklEKWRzdCwgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lk
IHVjb21pc3NfcnIoWE1NUmVnaXN0ZXJJRCBzcmMsIFhNTVJlZ2lzdGVySUQgZHN0KQorICAgIHsK
KyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9VQ09NSVNEX1ZzZFdzZCwgKFJlZ2lz
dGVySUQpZHN0LCAoUmVnaXN0ZXJJRClzcmMpOworICAgIH0KKworICAgIHZvaWQgdWNvbWlzc19t
cihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFhNTVJlZ2lzdGVySUQgZHN0KQorICAgIHsK
KyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9VQ09NSVNEX1ZzZFdzZCwgKFJlZ2lz
dGVySUQpZHN0LCBiYXNlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgZGl2c2RfcnIoWE1N
UmVnaXN0ZXJJRCBzcmMsIFhNTVJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9mb3Jt
YXR0ZXIucHJlZml4KFBSRV9TU0VfRjIpOwpAQCAtMjE2NCw2ICsyMjM0LDE4IEBAIHB1YmxpYzoK
ICAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9ESVZTRF9Wc2RXc2QsIChSZWdpc3Rl
cklEKWRzdCwgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIGRpdnNzX3JyKFhNTVJl
Z2lzdGVySUQgc3JjLCBYTU1SZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0
dGVyLnByZWZpeChQUkVfU1NFX0YzKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9Q
Ml9ESVZTRF9Wc2RXc2QsIChSZWdpc3RlcklEKWRzdCwgKFJlZ2lzdGVySUQpc3JjKTsKKyAgICB9
CisKKyAgICB2b2lkIGRpdnNzX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgWE1NUmVn
aXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX1NTRV9G
Myk7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfRElWU0RfVnNkV3NkLCAoUmVn
aXN0ZXJJRClkc3QsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCB4b3Jwc19ycihY
TU1SZWdpc3RlcklEIHNyYywgWE1NUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBtX2Zv
cm1hdHRlci50d29CeXRlT3AoT1AyX1hPUlBEX1ZwZFdwZCwgKFJlZ2lzdGVySUQpZHN0LCAoUmVn
aXN0ZXJJRClzcmMpOwpAQCAtMjE5Nyw2ICsyMjc5LDE4IEBAIHB1YmxpYzoKICAgICAgICAgbV9m
b3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9TUVJUU0RfVnNkV3NkLCAoUmVnaXN0ZXJJRClkc3QsIGJh
c2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCBzcXJ0c3NfcnIoWE1NUmVnaXN0ZXJJRCBz
cmMsIFhNTVJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4
KFBSRV9TU0VfRjMpOworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX1NRUlRTRF9W
c2RXc2QsIChSZWdpc3RlcklEKWRzdCwgKFJlZ2lzdGVySUQpc3JjKTsKKyAgICB9CisKKyAgICB2
b2lkIHNxcnRzc19tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFhNTVJlZ2lzdGVySUQg
ZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9TU0VfRjMpOworICAg
ICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX1NRUlRTRF9Wc2RXc2QsIChSZWdpc3RlcklE
KWRzdCwgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICAvLyBNaXNjIGluc3RydWN0aW9uczoK
IAogICAgIHZvaWQgaW50MygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNDb25zdDMyVmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3QzMlZh
bHVlLmNwcAppbmRleCAyODZiYTEyMjA5ODg0ZmE4ZGJkYWU4ZDM4Yjk2ZWU1NDFhMzllZjMxLi40
MjA0YjQ3NDBhMTczMjM3ZGNhNTZmOTg5Mzk2N2YxNTliZjk1MDgwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdDMyVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0NvbnN0MzJWYWx1ZS5jcHAKQEAgLTE1NCw2ICsxNTQsMTEgQEAgVmFs
dWUqIENvbnN0MzJWYWx1ZTo6elNockNvbnN0YW50KFByb2NlZHVyZSYgcHJvYywgY29uc3QgVmFs
dWUqIG90aGVyKSBjb25zdAogICAgIHJldHVybiBwcm9jLmFkZDxDb25zdDMyVmFsdWU+KG9yaWdp
bigpLCBzdGF0aWNfY2FzdDxpbnQzMl90PihzdGF0aWNfY2FzdDx1aW50MzJfdD4obV92YWx1ZSkg
Pj4gKG90aGVyLT5hc0ludDMyKCkgJiAzMSkpKTsKIH0KIAorVmFsdWUqIENvbnN0MzJWYWx1ZTo6
Yml0d2lzZUNhc3RDb25zdGFudChQcm9jZWR1cmUmIHByb2MpIGNvbnN0Cit7CisgICAgcmV0dXJu
IHByb2MuYWRkPENvbnN0RmxvYXRWYWx1ZT4ob3JpZ2luKCksIGJpdHdpc2VfY2FzdDxmbG9hdD4o
bV92YWx1ZSkpOworfQorCiBUcmlTdGF0ZSBDb25zdDMyVmFsdWU6OmVxdWFsQ29uc3RhbnQoY29u
c3QgVmFsdWUqIG90aGVyKSBjb25zdAogewogICAgIGlmICghb3RoZXItPmhhc0ludDMyKCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdDMyVmFsdWUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0MzJWYWx1ZS5oCmluZGV4IGExZWVlOWYwMzRl
Y2NkNzQyMDZiMjk2OGJhYTE1NzhhOTBjZGJmZTQuLjQzODAzOTE3MDEwMGI2ZTI1ZDBiODUyY2I3
MjkxMTgwNDZkNTA2MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Nv
bnN0MzJWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0MzJWYWx1
ZS5oCkBAIC01Niw2ICs1Niw3IEBAIHB1YmxpYzoKICAgICBWYWx1ZSogc2hsQ29uc3RhbnQoUHJv
Y2VkdXJlJiwgY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdCBvdmVycmlkZTsKICAgICBWYWx1ZSog
c1NockNvbnN0YW50KFByb2NlZHVyZSYsIGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgVmFsdWUqIHpTaHJDb25zdGFudChQcm9jZWR1cmUmLCBjb25zdCBWYWx1ZSogb3Ro
ZXIpIGNvbnN0IG92ZXJyaWRlOworICAgIFZhbHVlKiBiaXR3aXNlQ2FzdENvbnN0YW50KFByb2Nl
ZHVyZSYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgVHJpU3RhdGUgZXF1YWxDb25zdGFudChjb25z
dCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOwogICAgIFRyaVN0YXRlIG5vdEVxdWFsQ29u
c3RhbnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0RG91YmxlVmFsdWUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzQ29uc3REb3VibGVWYWx1ZS5jcHAKaW5kZXggMzEzYzg1MjA5ZGQ3
ZjIzZmQ5NzhkN2RiNjc0OGY1MjVjMDZlZWFlYy4uODUwNDJjYzc5ZmU2MDZkOGIzOWJlZjA5ZGNl
YjY4OWQ1NGJhMmZlYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29u
c3REb3VibGVWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3RE
b3VibGVWYWx1ZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShCM19KSVQpCiAK
KyNpbmNsdWRlICJCM0NvbnN0RmxvYXRWYWx1ZS5oIgogI2luY2x1ZGUgIkIzUHJvY2VkdXJlSW5s
aW5lcy5oIgogI2luY2x1ZGUgIkIzVmFsdWVJbmxpbmVzLmgiCiAKQEAgLTczLDYgKzc0LDE2IEBA
IFZhbHVlKiBDb25zdERvdWJsZVZhbHVlOjpiaXR3aXNlQ2FzdENvbnN0YW50KFByb2NlZHVyZSYg
cHJvYykgY29uc3QKICAgICByZXR1cm4gcHJvYy5hZGQ8Q29uc3Q2NFZhbHVlPihvcmlnaW4oKSwg
Yml0d2lzZV9jYXN0PGludDY0X3Q+KG1fdmFsdWUpKTsKIH0KIAorVmFsdWUqIENvbnN0RG91Ymxl
VmFsdWU6OmRvdWJsZVRvRmxvYXRDb25zdGFudChQcm9jZWR1cmUmIHByb2MpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIHByb2MuYWRkPENvbnN0RmxvYXRWYWx1ZT4ob3JpZ2luKCksIHN0YXRpY19jYXN0
PGZsb2F0PihtX3ZhbHVlKSk7Cit9CisKK1ZhbHVlKiBDb25zdERvdWJsZVZhbHVlOjpzcXJ0Q29u
c3RhbnQoUHJvY2VkdXJlJiBwcm9jKSBjb25zdAoreworICAgIHJldHVybiBwcm9jLmFkZDxDb25z
dERvdWJsZVZhbHVlPihvcmlnaW4oKSwgc3FydChtX3ZhbHVlKSk7Cit9CisKIFZhbHVlKiBDb25z
dERvdWJsZVZhbHVlOjpkaXZDb25zdGFudChQcm9jZWR1cmUmIHByb2MsIGNvbnN0IFZhbHVlKiBv
dGhlcikgY29uc3QKIHsKICAgICBpZiAoIW90aGVyLT5oYXNEb3VibGUoKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0RG91YmxlVmFsdWUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0RG91YmxlVmFsdWUuaAppbmRleCAwYTNkMjI4ZmI3MTll
NTc0M2IyYmVhYzhmOTk3MDIyMTA3NTcyNmI5Li4yYmZiZTM0NDliZmJhMTkxOWU4MGRjYmQzOTQy
NTQ3ZTVjZGE3ZTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25z
dERvdWJsZVZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3REb3Vi
bGVWYWx1ZS5oCkBAIC00Nyw2ICs0Nyw4IEBAIHB1YmxpYzoKICAgICBWYWx1ZSogZGl2Q29uc3Rh
bnQoUHJvY2VkdXJlJiwgY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdCBvdmVycmlkZTsKICAgICBW
YWx1ZSogbXVsQ29uc3RhbnQoUHJvY2VkdXJlJiwgY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdCBv
dmVycmlkZTsKICAgICBWYWx1ZSogYml0d2lzZUNhc3RDb25zdGFudChQcm9jZWR1cmUmKSBjb25z
dCBvdmVycmlkZTsKKyAgICBWYWx1ZSogZG91YmxlVG9GbG9hdENvbnN0YW50KFByb2NlZHVyZSYp
IGNvbnN0IG92ZXJyaWRlOworICAgIFZhbHVlKiBzcXJ0Q29uc3RhbnQoUHJvY2VkdXJlJikgY29u
c3Qgb3ZlcnJpZGU7CiAKICAgICBUcmlTdGF0ZSBlcXVhbENvbnN0YW50KGNvbnN0IFZhbHVlKiBv
dGhlcikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgVHJpU3RhdGUgbm90RXF1YWxDb25zdGFudChjb25z
dCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzQ29uc3RGbG9hdFZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0NvbnN0RmxvYXRWYWx1ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDQ3MTJjMzZiZjYyY2U4Zjk2
NGU1ZTU1YjAyYTQ4Zjk2YTliZTljMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0NvbnN0RmxvYXRWYWx1ZS5jcHAKQEAgLTAsMCArMSwxNDQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkIzQ29uc3RGbG9hdFZhbHVlLmgiCisKKyNpZiBFTkFCTEUoQjNfSklU
KQorCisjaW5jbHVkZSAiQjNDb25zdERvdWJsZVZhbHVlLmgiCisjaW5jbHVkZSAiQjNQcm9jZWR1
cmVJbmxpbmVzLmgiCisjaW5jbHVkZSAiQjNWYWx1ZUlubGluZXMuaCIKKworbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBCMyB7CisKK0NvbnN0RmxvYXRWYWx1ZTo6fkNvbnN0RmxvYXRWYWx1ZSgp
Cit7Cit9CisKK1ZhbHVlKiBDb25zdEZsb2F0VmFsdWU6Om5lZ0NvbnN0YW50KFByb2NlZHVyZSYg
cHJvYykgY29uc3QKK3sKKyAgICByZXR1cm4gcHJvYy5hZGQ8Q29uc3RGbG9hdFZhbHVlPihvcmln
aW4oKSwgLW1fdmFsdWUpOworfQorCitWYWx1ZSogQ29uc3RGbG9hdFZhbHVlOjphZGRDb25zdGFu
dChQcm9jZWR1cmUmIHByb2MsIGludDMyX3Qgb3RoZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIHBy
b2MuYWRkPENvbnN0RmxvYXRWYWx1ZT4ob3JpZ2luKCksIG1fdmFsdWUgKyBzdGF0aWNfY2FzdDxm
bG9hdD4ob3RoZXIpKTsKK30KKworVmFsdWUqIENvbnN0RmxvYXRWYWx1ZTo6YWRkQ29uc3RhbnQo
UHJvY2VkdXJlJiBwcm9jLCBjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0Cit7CisgICAgaWYgKCFv
dGhlci0+aGFzRmxvYXQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHBy
b2MuYWRkPENvbnN0RmxvYXRWYWx1ZT4ob3JpZ2luKCksIG1fdmFsdWUgKyBvdGhlci0+YXNGbG9h
dCgpKTsKK30KKworVmFsdWUqIENvbnN0RmxvYXRWYWx1ZTo6c3ViQ29uc3RhbnQoUHJvY2VkdXJl
JiBwcm9jLCBjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0Cit7CisgICAgaWYgKCFvdGhlci0+aGFz
RmxvYXQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHByb2MuYWRkPENv
bnN0RmxvYXRWYWx1ZT4ob3JpZ2luKCksIG1fdmFsdWUgLSBvdGhlci0+YXNGbG9hdCgpKTsKK30K
KworVmFsdWUqIENvbnN0RmxvYXRWYWx1ZTo6bXVsQ29uc3RhbnQoUHJvY2VkdXJlJiBwcm9jLCBj
b25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0Cit7CisgICAgaWYgKCFvdGhlci0+aGFzRmxvYXQoKSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHByb2MuYWRkPENvbnN0RmxvYXRW
YWx1ZT4ob3JpZ2luKCksIG1fdmFsdWUgKiBvdGhlci0+YXNGbG9hdCgpKTsKK30KKworVmFsdWUq
IENvbnN0RmxvYXRWYWx1ZTo6Yml0d2lzZUNhc3RDb25zdGFudChQcm9jZWR1cmUmIHByb2MpIGNv
bnN0Cit7CisgICAgcmV0dXJuIHByb2MuYWRkPENvbnN0MzJWYWx1ZT4ob3JpZ2luKCksIGJpdHdp
c2VfY2FzdDxpbnQzMl90PihtX3ZhbHVlKSk7Cit9CisKK1ZhbHVlKiBDb25zdEZsb2F0VmFsdWU6
OmZsb2F0VG9Eb3VibGVDb25zdGFudChQcm9jZWR1cmUmIHByb2MpIGNvbnN0Cit7CisgICAgcmV0
dXJuIHByb2MuYWRkPENvbnN0RG91YmxlVmFsdWU+KG9yaWdpbigpLCBzdGF0aWNfY2FzdDxkb3Vi
bGU+KG1fdmFsdWUpKTsKK30KKworVmFsdWUqIENvbnN0RmxvYXRWYWx1ZTo6c3FydENvbnN0YW50
KFByb2NlZHVyZSYgcHJvYykgY29uc3QKK3sKKyAgICByZXR1cm4gcHJvYy5hZGQ8Q29uc3RGbG9h
dFZhbHVlPihvcmlnaW4oKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNxcnQobV92YWx1ZSkpKTsKK30K
KworVmFsdWUqIENvbnN0RmxvYXRWYWx1ZTo6ZGl2Q29uc3RhbnQoUHJvY2VkdXJlJiBwcm9jLCBj
b25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0Cit7CisgICAgaWYgKCFvdGhlci0+aGFzRmxvYXQoKSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHByb2MuYWRkPENvbnN0RmxvYXRW
YWx1ZT4ob3JpZ2luKCksIG1fdmFsdWUgLyBvdGhlci0+YXNGbG9hdCgpKTsKK30KKworVHJpU3Rh
dGUgQ29uc3RGbG9hdFZhbHVlOjplcXVhbENvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29u
c3QKK3sKKyAgICBpZiAoIW90aGVyLT5oYXNGbG9hdCgpKQorICAgICAgICByZXR1cm4gTWl4ZWRU
cmlTdGF0ZTsKKyAgICByZXR1cm4gdHJpU3RhdGUobV92YWx1ZSA9PSBvdGhlci0+YXNGbG9hdCgp
KTsKK30KKworVHJpU3RhdGUgQ29uc3RGbG9hdFZhbHVlOjpub3RFcXVhbENvbnN0YW50KGNvbnN0
IFZhbHVlKiBvdGhlcikgY29uc3QKK3sKKyAgICBpZiAoIW90aGVyLT5oYXNGbG9hdCgpKQorICAg
ICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICByZXR1cm4gdHJpU3RhdGUobV92YWx1ZSAh
PSBvdGhlci0+YXNGbG9hdCgpKTsKK30KKworVHJpU3RhdGUgQ29uc3RGbG9hdFZhbHVlOjpsZXNz
VGhhbkNvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKK3sKKyAgICBpZiAoIW90aGVy
LT5oYXNGbG9hdCgpKQorICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICByZXR1cm4g
dHJpU3RhdGUobV92YWx1ZSA8IG90aGVyLT5hc0Zsb2F0KCkpOworfQorCitUcmlTdGF0ZSBDb25z
dEZsb2F0VmFsdWU6OmdyZWF0ZXJUaGFuQ29uc3RhbnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25z
dAoreworICAgIGlmICghb3RoZXItPmhhc0Zsb2F0KCkpCisgICAgICAgIHJldHVybiBNaXhlZFRy
aVN0YXRlOworICAgIHJldHVybiB0cmlTdGF0ZShtX3ZhbHVlID4gb3RoZXItPmFzRmxvYXQoKSk7
Cit9CisKK1RyaVN0YXRlIENvbnN0RmxvYXRWYWx1ZTo6bGVzc0VxdWFsQ29uc3RhbnQoY29uc3Qg
VmFsdWUqIG90aGVyKSBjb25zdAoreworICAgIGlmICghb3RoZXItPmhhc0Zsb2F0KCkpCisgICAg
ICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgIHJldHVybiB0cmlTdGF0ZShtX3ZhbHVlIDw9
IG90aGVyLT5hc0Zsb2F0KCkpOworfQorCitUcmlTdGF0ZSBDb25zdEZsb2F0VmFsdWU6OmdyZWF0
ZXJFcXVhbENvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKK3sKKyAgICBpZiAoIW90
aGVyLT5oYXNGbG9hdCgpKQorICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICByZXR1
cm4gdHJpU3RhdGUobV92YWx1ZSA+PSBvdGhlci0+YXNGbG9hdCgpKTsKK30KKwordm9pZCBDb25z
dEZsb2F0VmFsdWU6OmR1bXBNZXRhKENvbW1hUHJpbnRlciYgY29tbWEsIFByaW50U3RyZWFtJiBv
dXQpIGNvbnN0Cit7CisgICAgb3V0LnByaW50KGNvbW1hKTsKKyAgICBvdXQucHJpbnRmKCIlbGUi
LCBtX3ZhbHVlKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKKyNlbmRpZiAvLyBF
TkFCTEUoQjNfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29u
c3RGbG9hdFZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdEZsb2F0VmFs
dWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xZmZmMTRhMDVlYTkwYjJiYjQ3YWFhYzI2MDE2OWE4OWVkZjhjZjQy
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3RGbG9h
dFZhbHVlLmgKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaWZuZGVmIEIzQ29uc3RGbG9hdFZhbHVlX2gKKyNkZWZpbmUgQjND
b25zdEZsb2F0VmFsdWVfaAorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUgIkIzVmFs
dWUuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK2NsYXNzIEpTX0VYUE9S
VF9QUklWQVRFIENvbnN0RmxvYXRWYWx1ZSA6IHB1YmxpYyBWYWx1ZSB7CitwdWJsaWM6CisgICAg
c3RhdGljIGJvb2wgYWNjZXB0cyhPcGNvZGUgb3Bjb2RlKSB7IHJldHVybiBvcGNvZGUgPT0gQ29u
c3RGbG9hdDsgfQorCisgICAgfkNvbnN0RmxvYXRWYWx1ZSgpOworCisgICAgZmxvYXQgdmFsdWUo
KSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CisKKyAgICBWYWx1ZSogbmVnQ29uc3RhbnQoUHJv
Y2VkdXJlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmFsdWUqIGFkZENvbnN0YW50KFByb2NlZHVy
ZSYsIGludDMyX3Qgb3RoZXIpIGNvbnN0IG92ZXJyaWRlOworICAgIFZhbHVlKiBhZGRDb25zdGFu
dChQcm9jZWR1cmUmLCBjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOworICAgIFZh
bHVlKiBzdWJDb25zdGFudChQcm9jZWR1cmUmLCBjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92
ZXJyaWRlOworICAgIFZhbHVlKiBkaXZDb25zdGFudChQcm9jZWR1cmUmLCBjb25zdCBWYWx1ZSog
b3RoZXIpIGNvbnN0IG92ZXJyaWRlOworICAgIFZhbHVlKiBtdWxDb25zdGFudChQcm9jZWR1cmUm
LCBjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOworICAgIFZhbHVlKiBiaXR3aXNl
Q2FzdENvbnN0YW50KFByb2NlZHVyZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIFZhbHVlKiBmbG9h
dFRvRG91YmxlQ29uc3RhbnQoUHJvY2VkdXJlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmFsdWUq
IHNxcnRDb25zdGFudChQcm9jZWR1cmUmKSBjb25zdCBvdmVycmlkZTsKKworICAgIFRyaVN0YXRl
IGVxdWFsQ29uc3RhbnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdCBvdmVycmlkZTsKKyAgICBU
cmlTdGF0ZSBub3RFcXVhbENvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgVHJpU3RhdGUgbGVzc1RoYW5Db25zdGFudChjb25zdCBWYWx1ZSogb3RoZXIpIGNv
bnN0IG92ZXJyaWRlOworICAgIFRyaVN0YXRlIGdyZWF0ZXJUaGFuQ29uc3RhbnQoY29uc3QgVmFs
dWUqIG90aGVyKSBjb25zdCBvdmVycmlkZTsKKyAgICBUcmlTdGF0ZSBsZXNzRXF1YWxDb25zdGFu
dChjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOworICAgIFRyaVN0YXRlIGdyZWF0
ZXJFcXVhbENvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3Qgb3ZlcnJpZGU7CisKK3By
b3RlY3RlZDoKKyAgICB2b2lkIGR1bXBNZXRhKENvbW1hUHJpbnRlciYsIFByaW50U3RyZWFtJikg
Y29uc3Qgb3ZlcnJpZGU7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFByb2NlZHVyZTsK
KworICAgIENvbnN0RmxvYXRWYWx1ZSh1bnNpZ25lZCBpbmRleCwgT3JpZ2luIG9yaWdpbiwgZmxv
YXQgdmFsdWUpCisgICAgICAgIDogVmFsdWUoaW5kZXgsIENoZWNrZWRPcGNvZGUsIENvbnN0Rmxv
YXQsIEZsb2F0LCBvcmlnaW4pCisgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKKyAgICB7CisgICAg
fQorCisgICAgZmxvYXQgbV92YWx1ZTsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwor
CisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKKworI2VuZGlmIC8vIEIzQ29uc3RGbG9hdFZhbHVl
X2gKKwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJhdGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJhdGUuY3BwCmluZGV4IDRhMmI0N2Yw
M2E4MzQyOGJlNGE4MDVkNThmNDY0ODhjOWY5OGFhOTkuLjMzMDI4MmU2ZjFlMTE1OThlYTgxZmMw
YjExNjdmYmY5YjEzZGVkY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0dlbmVyYXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNHZW5lcmF0ZS5j
cHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJCM0xvd2VyVG9BaXIuaCIKICNpbmNsdWRl
ICJCM01vdmVDb25zdGFudHMuaCIKICNpbmNsdWRlICJCM1Byb2NlZHVyZS5oIgorI2luY2x1ZGUg
IkIzUmVkdWNlRG91YmxlVG9GbG9hdC5oIgogI2luY2x1ZGUgIkIzUmVkdWNlU3RyZW5ndGguaCIK
ICNpbmNsdWRlICJCM1RpbWluZ1Njb3BlLmgiCiAjaW5jbHVkZSAiQjNWYWxpZGF0ZS5oIgpAQCAt
NzMsNiArNzQsOCBAQCB2b2lkIGdlbmVyYXRlVG9BaXIoUHJvY2VkdXJlJiBwcm9jZWR1cmUsIHVu
c2lnbmVkIG9wdExldmVsKQogICAgIGxvd2VyTWFjcm9zKHByb2NlZHVyZSk7CiAKICAgICBpZiAo
b3B0TGV2ZWwgPj0gMSkgeworICAgICAgICByZWR1Y2VEb3VibGVUb0Zsb2F0KHByb2NlZHVyZSk7
CisKICAgICAgICAgcmVkdWNlU3RyZW5ndGgocHJvY2VkdXJlKTsKICAgICAgICAgCiAgICAgICAg
IC8vIEZJWE1FOiBBZGQgbW9yZSBvcHRpbWl6YXRpb25zIGhlcmUuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCmluZGV4IDBmYWJlNDlhN2RjYmY2ZDg0ZmI5NGY3MjQw
NjNjNWU0MDk5NDEwNDcuLjI5NDYxNWU3MjhmOTZmNWRiZGJlYjBmZTUwNGFjNzI4MTViZmRlYTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCkBAIC00NzUsNyAr
NDc1LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIEJ5IGNvbnZlbnRpb24sIHdlIHVzZSBPb3BzIHRv
IG1lYW4gIkkgZG9uJ3Qga25vdyIuCiAgICAgQWlyOjpPcGNvZGUgdHJ5T3Bjb2RlRm9yVHlwZSgK
LSAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlMzIsIEFpcjo6T3Bjb2RlIG9wY29kZTY0LCBBaXI6
Ok9wY29kZSBvcGNvZGVEb3VibGUsIFR5cGUgdHlwZSkKKyAgICAgICAgQWlyOjpPcGNvZGUgb3Bj
b2RlMzIsIEFpcjo6T3Bjb2RlIG9wY29kZTY0LCBBaXI6Ok9wY29kZSBvcGNvZGVEb3VibGUsIEFp
cjo6T3Bjb2RlIG9wY29kZUZsb2F0LCBUeXBlIHR5cGUpCiAgICAgewogICAgICAgICBBaXI6Ok9w
Y29kZSBvcGNvZGU7CiAgICAgICAgIHN3aXRjaCAodHlwZSkgewpAQCAtNDg1LDYgKzQ4NSw5IEBA
IHByaXZhdGU6CiAgICAgICAgIGNhc2UgSW50NjQ6CiAgICAgICAgICAgICBvcGNvZGUgPSBvcGNv
ZGU2NDsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEZsb2F0OgorICAgICAgICAg
ICAgb3Bjb2RlID0gb3Bjb2RlRmxvYXQ7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBEb3VibGU6CiAgICAgICAgICAgICBvcGNvZGUgPSBvcGNvZGVEb3VibGU7CiAgICAgICAgICAg
ICBicmVhazsKQEAgLTQ5NiwxOCArNDk5LDI4IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBv
cGNvZGU7CiAgICAgfQogCisgICAgQWlyOjpPcGNvZGUgdHJ5T3Bjb2RlRm9yVHlwZShBaXI6Ok9w
Y29kZSBvcGNvZGUzMiwgQWlyOjpPcGNvZGUgb3Bjb2RlNjQsIFR5cGUgdHlwZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiB0cnlPcGNvZGVGb3JUeXBlKG9wY29kZTMyLCBvcGNvZGU2NCwgQWlyOjpP
b3BzLCBBaXI6Ok9vcHMsIHR5cGUpOworICAgIH0KKwogICAgIEFpcjo6T3Bjb2RlIG9wY29kZUZv
clR5cGUoCi0gICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZTMyLCBBaXI6Ok9wY29kZSBvcGNvZGU2
NCwgQWlyOjpPcGNvZGUgb3Bjb2RlRG91YmxlLCBUeXBlIHR5cGUpCisgICAgICAgIEFpcjo6T3Bj
b2RlIG9wY29kZTMyLCBBaXI6Ok9wY29kZSBvcGNvZGU2NCwgQWlyOjpPcGNvZGUgb3Bjb2RlRG91
YmxlLCBBaXI6Ok9wY29kZSBvcGNvZGVGbG9hdCwgVHlwZSB0eXBlKQogICAgIHsKLSAgICAgICAg
QWlyOjpPcGNvZGUgb3Bjb2RlID0gdHJ5T3Bjb2RlRm9yVHlwZShvcGNvZGUzMiwgb3Bjb2RlNjQs
IG9wY29kZURvdWJsZSwgdHlwZSk7CisgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IHRyeU9w
Y29kZUZvclR5cGUob3Bjb2RlMzIsIG9wY29kZTY0LCBvcGNvZGVEb3VibGUsIG9wY29kZUZsb2F0
LCB0eXBlKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQob3Bjb2RlICE9IEFpcjo6T29wcyk7CiAg
ICAgICAgIHJldHVybiBvcGNvZGU7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8QWlyOjpPcGNvZGUg
b3Bjb2RlMzIsIEFpcjo6T3Bjb2RlIG9wY29kZTY0LCBBaXI6Ok9wY29kZSBvcGNvZGVEb3VibGU+
CisgICAgQWlyOjpPcGNvZGUgb3Bjb2RlRm9yVHlwZShBaXI6Ok9wY29kZSBvcGNvZGUzMiwgQWly
OjpPcGNvZGUgb3Bjb2RlNjQsIFR5cGUgdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiB0cnlP
cGNvZGVGb3JUeXBlKG9wY29kZTMyLCBvcGNvZGU2NCwgQWlyOjpPb3BzLCBBaXI6Ok9vcHMsIHR5
cGUpOworICAgIH0KKworICAgIHRlbXBsYXRlPEFpcjo6T3Bjb2RlIG9wY29kZTMyLCBBaXI6Ok9w
Y29kZSBvcGNvZGU2NCwgQWlyOjpPcGNvZGUgb3Bjb2RlRG91YmxlID0gQWlyOjpPb3BzLCBBaXI6
Ok9wY29kZSBvcGNvZGVGbG9hdCA9IEFpcjo6T29wcz4KICAgICB2b2lkIGFwcGVuZFVuT3AoVmFs
dWUqIHZhbHVlKQogICAgIHsKLSAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gb3Bjb2RlRm9y
VHlwZShvcGNvZGUzMiwgb3Bjb2RlNjQsIG9wY29kZURvdWJsZSwgdmFsdWUtPnR5cGUoKSk7Cisg
ICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IG9wY29kZUZvclR5cGUob3Bjb2RlMzIsIG9wY29k
ZTY0LCBvcGNvZGVEb3VibGUsIG9wY29kZUZsb2F0LCB2YWx1ZS0+dHlwZSgpKTsKICAgICAgICAg
CiAgICAgICAgIFRtcCByZXN1bHQgPSB0bXAobV92YWx1ZSk7CiAKQEAgLTU2MiwxMiArNTc1LDEw
IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgdGVtcGxh
dGU8Ci0gICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZTMyLCBBaXI6Ok9wY29kZSBvcGNvZGU2NCwg
QWlyOjpPcGNvZGUgb3Bjb2RlRG91YmxlLAotICAgICAgICBDb21tdXRhdGl2aXR5IGNvbW11dGF0
aXZpdHkgPSBOb3RDb21tdXRhdGl2ZT4KKyAgICB0ZW1wbGF0ZTxBaXI6Ok9wY29kZSBvcGNvZGUz
MiwgQWlyOjpPcGNvZGUgb3Bjb2RlNjQsIEFpcjo6T3Bjb2RlIG9wY29kZURvdWJsZSwgQWlyOjpP
cGNvZGUgb3Bjb2RlRmxvYXQsIENvbW11dGF0aXZpdHkgY29tbXV0YXRpdml0eSA9IE5vdENvbW11
dGF0aXZlPgogICAgIHZvaWQgYXBwZW5kQmluT3AoVmFsdWUqIGxlZnQsIFZhbHVlKiByaWdodCkK
ICAgICB7Ci0gICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IG9wY29kZUZvclR5cGUob3Bjb2Rl
MzIsIG9wY29kZTY0LCBvcGNvZGVEb3VibGUsIGxlZnQtPnR5cGUoKSk7CisgICAgICAgIEFpcjo6
T3Bjb2RlIG9wY29kZSA9IG9wY29kZUZvclR5cGUob3Bjb2RlMzIsIG9wY29kZTY0LCBvcGNvZGVE
b3VibGUsIG9wY29kZUZsb2F0LCBsZWZ0LT50eXBlKCkpOwogICAgICAgICAKICAgICAgICAgVG1w
IHJlc3VsdCA9IHRtcChtX3ZhbHVlKTsKICAgICAgICAgCkBAIC02NDUsMTAgKzY1NiwxNiBAQCBw
cml2YXRlOgogICAgICAgICBhcHBlbmQob3Bjb2RlLCB0bXAocmlnaHQpLCByZXN1bHQpOwogICAg
IH0KIAorICAgIHRlbXBsYXRlPEFpcjo6T3Bjb2RlIG9wY29kZTMyLCBBaXI6Ok9wY29kZSBvcGNv
ZGU2NCwgQ29tbXV0YXRpdml0eSBjb21tdXRhdGl2aXR5ID0gTm90Q29tbXV0YXRpdmU+CisgICAg
dm9pZCBhcHBlbmRCaW5PcChWYWx1ZSogbGVmdCwgVmFsdWUqIHJpZ2h0KQorICAgIHsKKyAgICAg
ICAgYXBwZW5kQmluT3A8b3Bjb2RlMzIsIG9wY29kZTY0LCBBaXI6Ok9vcHMsIEFpcjo6T29wcywg
Y29tbXV0YXRpdml0eT4obGVmdCwgcmlnaHQpOworICAgIH0KKwogICAgIHRlbXBsYXRlPEFpcjo6
T3Bjb2RlIG9wY29kZTMyLCBBaXI6Ok9wY29kZSBvcGNvZGU2ND4KICAgICB2b2lkIGFwcGVuZFNo
aWZ0KFZhbHVlKiB2YWx1ZSwgVmFsdWUqIGFtb3VudCkKICAgICB7Ci0gICAgICAgIEFpcjo6T3Bj
b2RlIG9wY29kZSA9IG9wY29kZUZvclR5cGUob3Bjb2RlMzIsIG9wY29kZTY0LCBBaXI6Ok9vcHMs
IHZhbHVlLT50eXBlKCkpOworICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBvcGNvZGVGb3JU
eXBlKG9wY29kZTMyLCBvcGNvZGU2NCwgdmFsdWUtPnR5cGUoKSk7CiAgICAgICAgIAogICAgICAg
ICBpZiAoaW1tKGFtb3VudCkpIHsKICAgICAgICAgICAgIGFwcGVuZChNb3ZlLCB0bXAodmFsdWUp
LCB0bXAobV92YWx1ZSkpOwpAQCAtNjY0LDcgKzY4MSw3IEBAIHByaXZhdGU6CiAgICAgdGVtcGxh
dGU8QWlyOjpPcGNvZGUgb3Bjb2RlMzIsIEFpcjo6T3Bjb2RlIG9wY29kZTY0PgogICAgIGJvb2wg
dHJ5QXBwZW5kU3RvcmVVbk9wKFZhbHVlKiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIEFpcjo6T3Bj
b2RlIG9wY29kZSA9IHRyeU9wY29kZUZvclR5cGUob3Bjb2RlMzIsIG9wY29kZTY0LCBBaXI6Ok9v
cHMsIHZhbHVlLT50eXBlKCkpOworICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSB0cnlPcGNv
ZGVGb3JUeXBlKG9wY29kZTMyLCBvcGNvZGU2NCwgdmFsdWUtPnR5cGUoKSk7CiAgICAgICAgIGlm
IChvcGNvZGUgPT0gQWlyOjpPb3BzKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICAKQEAgLTY4Nyw3ICs3MDQsNyBAQCBwcml2YXRlOgogICAgICAgICBBaXI6Ok9wY29kZSBvcGNv
ZGUzMiwgQWlyOjpPcGNvZGUgb3Bjb2RlNjQsIENvbW11dGF0aXZpdHkgY29tbXV0YXRpdml0eSA9
IE5vdENvbW11dGF0aXZlPgogICAgIGJvb2wgdHJ5QXBwZW5kU3RvcmVCaW5PcChWYWx1ZSogbGVm
dCwgVmFsdWUqIHJpZ2h0KQogICAgIHsKLSAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gdHJ5
T3Bjb2RlRm9yVHlwZShvcGNvZGUzMiwgb3Bjb2RlNjQsIEFpcjo6T29wcywgbGVmdC0+dHlwZSgp
KTsKKyAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gdHJ5T3Bjb2RlRm9yVHlwZShvcGNvZGUz
Miwgb3Bjb2RlNjQsIGxlZnQtPnR5cGUoKSk7CiAgICAgICAgIGlmIChvcGNvZGUgPT0gQWlyOjpP
b3BzKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKQEAgLTc0NiwxMSArNzYz
LDE1IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgSW50NjQ6CiAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVChpczY0Qml0KCkpOwogICAgICAgICAgICAgcmV0dXJuIE1vdmU7CisgICAgICAgIGNh
c2UgRmxvYXQ6CisgICAgICAgICAgICByZXR1cm4gTW92ZUZsb2F0OwogICAgICAgICBjYXNlIERv
dWJsZToKICAgICAgICAgICAgIHJldHVybiBNb3ZlRG91YmxlOwotICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgY2FzZSBW
b2lkOgorICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIEFpcjo6T29wczsKICAgICB9CiAKICAg
ICBBaXI6Ok9wY29kZSByZWxheGVkTW92ZUZvclR5cGUoVHlwZSB0eXBlKQpAQCAtNzU5LDExICs3
ODAsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBJbnQzMjoKICAgICAgICAgY2FzZSBJbnQ2
NDoKICAgICAgICAgICAgIHJldHVybiBNb3ZlOworICAgICAgICBjYXNlIEZsb2F0OgogICAgICAg
ICBjYXNlIERvdWJsZToKICAgICAgICAgICAgIHJldHVybiBNb3ZlRG91YmxlOwotICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgY2FzZSBWb2lkOgorICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIEFpcjo6T29wczsKICAg
ICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+CkBAIC04MzAsMTIgKzg1
NCwxMyBAQCBwcml2YXRlOgogICAgIH0KICAgICAKICAgICAvLyBDcmVhdGUgYW4gSW5zdCB0byBk
byB0aGUgY29tcGFyaXNvbiBzcGVjaWZpZWQgYnkgdGhlIGdpdmVuIHZhbHVlLgotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENvbXBhcmVGdW5jdG9yLCB0eXBlbmFtZSBUZXN0RnVuY3RvciwgdHlwZW5h
bWUgQ29tcGFyZURvdWJsZUZ1bmN0b3I+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29tcGFyZUZ1
bmN0b3IsIHR5cGVuYW1lIFRlc3RGdW5jdG9yLCB0eXBlbmFtZSBDb21wYXJlRG91YmxlRnVuY3Rv
ciwgdHlwZW5hbWUgQ29tcGFyZUZsb2F0RnVuY3Rvcj4KICAgICBJbnN0IGNyZWF0ZUdlbmVyaWND
b21wYXJlKAogICAgICAgICBWYWx1ZSogdmFsdWUsCiAgICAgICAgIGNvbnN0IENvbXBhcmVGdW5j
dG9yJiBjb21wYXJlLCAvLyBTaWduYXR1cmU6IChBcmc6OldpZHRoLCBBcmcgcmVsQ29uZCwgQXJn
LCBBcmcpIC0+IEluc3QKICAgICAgICAgY29uc3QgVGVzdEZ1bmN0b3ImIHRlc3QsIC8vIFNpZ25h
dHVyZTogKEFyZzo6V2lkdGgsIEFyZyByZXNDb25kLCBBcmcsIEFyZykgLT4gSW5zdAogICAgICAg
ICBjb25zdCBDb21wYXJlRG91YmxlRnVuY3RvciYgY29tcGFyZURvdWJsZSwgLy8gU2lnbmF0dXJl
OiAoQXJnIGRvdWJsZUNvbmQsIEFyZywgQXJnKSAtPiBJbnN0CisgICAgICAgIGNvbnN0IENvbXBh
cmVGbG9hdEZ1bmN0b3ImIGNvbXBhcmVGbG9hdCwgLy8gU2lnbmF0dXJlOiAoQXJnIGRvdWJsZUNv
bmQsIEFyZywgQXJnKSAtPiBJbnN0CiAgICAgICAgIGJvb2wgaW52ZXJ0ZWQgPSBmYWxzZSkKICAg
ICB7CiAgICAgICAgIC8vIENoZXcgdGhyb3VnaCBhbnkgbmVnYXRpb25zLiBJdCdzIG5vdCBzdHJp
Y3RseSBuZWNlc3NhcnkgZm9yIHRoaXMgdG8gYmUgYSBsb29wLCBidXQgd2UgbGlrZQpAQCAtOTU5
LDcgKzk4NCw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmUod2lk
dGgsIHJlbENvbmQsIHRtcFByb21pc2UobGVmdCksIHRtcFByb21pc2UocmlnaHQpKTsKICAgICAg
ICAgICAgIH0KIAotICAgICAgICAgICAgLy8gRG91YmxlIGNvbXBhcmlzb25zIGNhbid0IHJlYWxs
eSBkbyBhbnl0aGluZyBzbWFydC4KKyAgICAgICAgICAgIC8vIEZsb2F0aW5nIHBvaW50IGNvbXBh
cmlzb25zIGNhbid0IHJlYWxseSBkbyBhbnl0aGluZyBzbWFydC4KKyAgICAgICAgICAgIGlmICh2
YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSA9PSBGbG9hdCkKKyAgICAgICAgICAgICAgICByZXR1cm4g
Y29tcGFyZUZsb2F0KGRvdWJsZUNvbmQsIHRtcFByb21pc2UobGVmdCksIHRtcFByb21pc2Uocmln
aHQpKTsKICAgICAgICAgICAgIHJldHVybiBjb21wYXJlRG91YmxlKGRvdWJsZUNvbmQsIHRtcFBy
b21pc2UobGVmdCksIHRtcFByb21pc2UocmlnaHQpKTsKICAgICAgICAgfTsKIApAQCAtMTE2NSw2
ICsxMTkyLDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IHJldHVybiBJbnN0KCk7CiAgICAgICAgICAgICB9LAorICAgICAgICAgICAgW3RoaXNdIChBcmcg
ZG91YmxlQ29uZCwgY29uc3QgQXJnUHJvbWlzZSYgbGVmdCwgY29uc3QgQXJnUHJvbWlzZSYgcmln
aHQpIC0+IEluc3QgeworICAgICAgICAgICAgICAgIGlmIChpc1ZhbGlkRm9ybShCcmFuY2hGbG9h
dCwgQXJnOjpEb3VibGVDb25kLCBsZWZ0LmtpbmQoKSwgcmlnaHQua2luZCgpKSkgeworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gSW5zdCgKKyAgICAgICAgICAgICAgICAgICAgICAgIEJyYW5j
aEZsb2F0LCBtX3ZhbHVlLCBkb3VibGVDb25kLAorICAgICAgICAgICAgICAgICAgICAgICAgbGVm
dC5jb25zdW1lKCp0aGlzKSwgcmlnaHQuY29uc3VtZSgqdGhpcykpOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICByZXR1cm4gSW5zdCgpOworICAgICAgICAgICAgfSwKICAgICAg
ICAgICAgIGludmVydGVkKTsKICAgICB9CiAKQEAgLTEyMjMsNiArMTI1OCwxMCBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTA5MDMKICAgICAgICAgICAgICAgICByZXR1cm4gSW5zdCgpOwogICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgIFt0aGlzXSAoY29uc3QgQXJnJiwgY29uc3QgQXJnUHJvbWlzZSYsIGNv
bnN0IEFyZ1Byb21pc2UmKSAtPiBJbnN0IHsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogSW1w
bGVtZW50IHRoaXMuCisgICAgICAgICAgICAgICAgcmV0dXJuIEluc3QoKTsKKyAgICAgICAgICAg
IH0sCiAgICAgICAgICAgICBpbnZlcnRlZCk7CiAgICAgfQogCkBAIC0xMjMyLDYgKzEyNzEsNyBA
QCBwcml2YXRlOgogICAgICAgICBBaXI6Ok9wY29kZSBtb3ZlQ29uZGl0aW9uYWxseVRlc3QzMjsK
ICAgICAgICAgQWlyOjpPcGNvZGUgbW92ZUNvbmRpdGlvbmFsbHlUZXN0NjQ7CiAgICAgICAgIEFp
cjo6T3Bjb2RlIG1vdmVDb25kaXRpb25hbGx5RG91YmxlOworICAgICAgICBBaXI6Ok9wY29kZSBt
b3ZlQ29uZGl0aW9uYWxseUZsb2F0OwogICAgICAgICBUbXAgc291cmNlOwogICAgICAgICBUbXAg
ZGVzdGluYXRpb247CiAgICAgfTsKQEAgLTEyOTksNiArMTMzOSwxNCBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICByZXR1cm4gSW5zdCgpOwogICAgICAgICAg
ICAgfSwKKyAgICAgICAgICAgIFsmXSAoQXJnIGRvdWJsZUNvbmQsIGNvbnN0IEFyZ1Byb21pc2Um
IGxlZnQsIGNvbnN0IEFyZ1Byb21pc2UmIHJpZ2h0KSAtPiBJbnN0IHsKKyAgICAgICAgICAgICAg
ICBpZiAoaXNWYWxpZEZvcm0oY29uZmlnLm1vdmVDb25kaXRpb25hbGx5RmxvYXQsIEFyZzo6RG91
YmxlQ29uZCwgbGVmdC5raW5kKCksIHJpZ2h0LmtpbmQoKSwgQXJnOjpUbXAsIEFyZzo6VG1wKSkg
eworICAgICAgICAgICAgICAgICAgICByZXR1cm4gSW5zdCgKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbmZpZy5tb3ZlQ29uZGl0aW9uYWxseUZsb2F0LCBtX3ZhbHVlLCBkb3VibGVDb25kLAor
ICAgICAgICAgICAgICAgICAgICAgICAgbGVmdC5jb25zdW1lKCp0aGlzKSwgcmlnaHQuY29uc3Vt
ZSgqdGhpcyksIGNvbmZpZy5zb3VyY2UsIGNvbmZpZy5kZXN0aW5hdGlvbik7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBJbnN0KCk7CisgICAgICAgICAgICB9LAog
ICAgICAgICAgICAgaW52ZXJ0ZWQpOwogICAgIH0KIApAQCAtMTM2NywyMSArMTQxNSwyMSBAQCBw
cml2YXRlOgogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBBZGQ6IHsKLSAgICAgICAgICAgIGFw
cGVuZEJpbk9wPEFkZDMyLCBBZGQ2NCwgQWRkRG91YmxlLCBDb21tdXRhdGl2ZT4oCisgICAgICAg
ICAgICBhcHBlbmRCaW5PcDxBZGQzMiwgQWRkNjQsIEFkZERvdWJsZSwgQWRkRmxvYXQsIENvbW11
dGF0aXZlPigKICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5jaGlsZCgwKSwgbV92YWx1ZS0+Y2hp
bGQoMSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBT
dWI6IHsKICAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgwKS0+aXNJbnQoMCkpCi0gICAg
ICAgICAgICAgICAgYXBwZW5kVW5PcDxOZWczMiwgTmVnNjQsIEFpcjo6T29wcz4obV92YWx1ZS0+
Y2hpbGQoMSkpOworICAgICAgICAgICAgICAgIGFwcGVuZFVuT3A8TmVnMzIsIE5lZzY0PihtX3Zh
bHVlLT5jaGlsZCgxKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYXBwZW5k
QmluT3A8U3ViMzIsIFN1YjY0LCBTdWJEb3VibGU+KG1fdmFsdWUtPmNoaWxkKDApLCBtX3ZhbHVl
LT5jaGlsZCgxKSk7CisgICAgICAgICAgICAgICAgYXBwZW5kQmluT3A8U3ViMzIsIFN1YjY0LCBT
dWJEb3VibGUsIFN1YkZsb2F0PihtX3ZhbHVlLT5jaGlsZCgwKSwgbV92YWx1ZS0+Y2hpbGQoMSkp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBNdWw6IHsK
LSAgICAgICAgICAgIGFwcGVuZEJpbk9wPE11bDMyLCBNdWw2NCwgTXVsRG91YmxlLCBDb21tdXRh
dGl2ZT4oCisgICAgICAgICAgICBhcHBlbmRCaW5PcDxNdWwzMiwgTXVsNjQsIE11bERvdWJsZSwg
TXVsRmxvYXQsIENvbW11dGF0aXZlPigKICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5jaGlsZCgw
KSwgbV92YWx1ZS0+Y2hpbGQoMSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBA
IC0xNDE1LDI4ICsxNDYzLDI4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBBU1NFUlQoaXNGbG9hdChtX3ZhbHVlLT50eXBlKCkpKTsKIAotICAgICAgICAgICAgYXBwZW5k
QmluT3A8QWlyOjpPb3BzLCBBaXI6Ok9vcHMsIERpdkRvdWJsZT4obV92YWx1ZS0+Y2hpbGQoMCks
IG1fdmFsdWUtPmNoaWxkKDEpKTsKKyAgICAgICAgICAgIGFwcGVuZEJpbk9wPEFpcjo6T29wcywg
QWlyOjpPb3BzLCBEaXZEb3VibGUsIERpdkZsb2F0PihtX3ZhbHVlLT5jaGlsZCgwKSwgbV92YWx1
ZS0+Y2hpbGQoMSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAg
Y2FzZSBCaXRBbmQ6IHsKLSAgICAgICAgICAgIGFwcGVuZEJpbk9wPEFuZDMyLCBBbmQ2NCwgQWly
OjpPb3BzLCBDb21tdXRhdGl2ZT4oCisgICAgICAgICAgICBhcHBlbmRCaW5PcDxBbmQzMiwgQW5k
NjQsIENvbW11dGF0aXZlPigKICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5jaGlsZCgwKSwgbV92
YWx1ZS0+Y2hpbGQoMSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAg
ICAgY2FzZSBCaXRPcjogewotICAgICAgICAgICAgYXBwZW5kQmluT3A8T3IzMiwgT3I2NCwgQWly
OjpPb3BzLCBDb21tdXRhdGl2ZT4oCisgICAgICAgICAgICBhcHBlbmRCaW5PcDxPcjMyLCBPcjY0
LCBDb21tdXRhdGl2ZT4oCiAgICAgICAgICAgICAgICAgbV92YWx1ZS0+Y2hpbGQoMCksIG1fdmFs
dWUtPmNoaWxkKDEpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAg
IGNhc2UgQml0WG9yOiB7CiAgICAgICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMSktPmlzSW50
KC0xKSkgewotICAgICAgICAgICAgICAgIGFwcGVuZFVuT3A8Tm90MzIsIE5vdDY0LCBBaXI6Ok9v
cHM+KG1fdmFsdWUtPmNoaWxkKDApKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRVbk9wPE5vdDMy
LCBOb3Q2ND4obV92YWx1ZS0+Y2hpbGQoMCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGFwcGVuZEJpbk9wPFhvcjMyLCBYb3I2NCwgQWlyOjpP
b3BzLCBDb21tdXRhdGl2ZT4oCisgICAgICAgICAgICBhcHBlbmRCaW5PcDxYb3IzMiwgWG9yNjQs
IENvbW11dGF0aXZlPigKICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5jaGlsZCgwKSwgbV92YWx1
ZS0+Y2hpbGQoMSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xNDQ2LDcg
KzE0OTQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIC8vIFRoaXMgb3B0aW1pemF0aW9u
IG1ha2VzIHNlbnNlIG9uIFg4Ni4gSSBkb24ndCBrbm93IGlmIGl0IG1ha2VzIHNlbnNlIGFueXdo
ZXJlIGVsc2UuCiAgICAgICAgICAgICAgICAgYXBwZW5kKE1vdmUsIHRtcChtX3ZhbHVlLT5jaGls
ZCgwKSksIHRtcChtX3ZhbHVlKSk7CiAgICAgICAgICAgICAgICAgYXBwZW5kKAotICAgICAgICAg
ICAgICAgICAgICBvcGNvZGVGb3JUeXBlKEFkZDMyLCBBZGQ2NCwgQWlyOjpPb3BzLCBtX3ZhbHVl
LT5jaGlsZCgwKS0+dHlwZSgpKSwKKyAgICAgICAgICAgICAgICAgICAgb3Bjb2RlRm9yVHlwZShB
ZGQzMiwgQWRkNjQsIG1fdmFsdWUtPmNoaWxkKDApLT50eXBlKCkpLAogICAgICAgICAgICAgICAg
ICAgICB0bXAobV92YWx1ZSksIHRtcChtX3ZhbHVlKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgfQpAQCAtMTQ2NiwxNyArMTUxNCwxNyBAQCBwcml2YXRlOgogICAgICAg
ICB9CiAKICAgICAgICAgY2FzZSBDbHo6IHsKLSAgICAgICAgICAgIGFwcGVuZFVuT3A8Q291bnRM
ZWFkaW5nWmVyb3MzMiwgQ291bnRMZWFkaW5nWmVyb3M2NCwgQWlyOjpPb3BzPihtX3ZhbHVlLT5j
aGlsZCgwKSk7CisgICAgICAgICAgICBhcHBlbmRVbk9wPENvdW50TGVhZGluZ1plcm9zMzIsIENv
dW50TGVhZGluZ1plcm9zNjQ+KG1fdmFsdWUtPmNoaWxkKDApKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgU3FydDogewotICAgICAgICAgICAgYXBwZW5k
VW5PcDxBaXI6Ok9vcHMsIEFpcjo6T29wcywgU3FydERvdWJsZT4obV92YWx1ZS0+Y2hpbGQoMCkp
OworICAgICAgICAgICAgYXBwZW5kVW5PcDxBaXI6Ok9vcHMsIEFpcjo6T29wcywgU3FydERvdWJs
ZSwgU3FydEZsb2F0PihtX3ZhbHVlLT5jaGlsZCgwKSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIAogICAgICAgICBjYXNlIEJpdHdpc2VDYXN0OiB7Ci0gICAgICAgICAgICBhcHBl
bmRVbk9wPEFpcjo6T29wcywgTW92ZTY0VG9Eb3VibGUsIE1vdmVEb3VibGVUbzY0PihtX3ZhbHVl
LT5jaGlsZCgwKSk7CisgICAgICAgICAgICBhcHBlbmRVbk9wPE1vdmVJbnQzMlRvUGFja2VkLCBN
b3ZlNjRUb0RvdWJsZSwgTW92ZURvdWJsZVRvNjQsIE1vdmVQYWNrZWRUb0ludDMyPihtX3ZhbHVl
LT5jaGlsZCgwKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTU0Miw2
ICsxNTkwLDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAor
ICAgICAgICBjYXNlIEZsb2F0VG9Eb3VibGU6IHsKKyAgICAgICAgICAgIGFwcGVuZFVuT3A8QWly
OjpPb3BzLCBBaXI6Ok9vcHMsIEFpcjo6T29wcywgQ29udmVydEZsb2F0VG9Eb3VibGU+KG1fdmFs
dWUtPmNoaWxkKDApKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IGNhc2UgRG91YmxlVG9GbG9hdDogeworICAgICAgICAgICAgYXBwZW5kVW5PcDxBaXI6Ok9vcHMs
IEFpcjo6T29wcywgQ29udmVydERvdWJsZVRvRmxvYXQ+KG1fdmFsdWUtPmNoaWxkKDApKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2UgQXJndW1lbnRSZWc6
IHsKICAgICAgICAgICAgIG1fcHJvbG9ndWUuYXBwZW5kKEluc3QoCiAgICAgICAgICAgICAgICAg
bW92ZUZvclR5cGUobV92YWx1ZS0+dHlwZSgpKSwgbV92YWx1ZSwKQEAgLTE1NjIsMTAgKzE2MjAs
MTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAg
IGNhc2UgQ29uc3REb3VibGU6IHsKKyAgICAgICAgY2FzZSBDb25zdERvdWJsZToKKyAgICAgICAg
Y2FzZSBDb25zdEZsb2F0OiB7CiAgICAgICAgICAgICAvLyBXZSBleHBlY3QgdGhhdCB0aGUgbW92
ZUNvbnN0YW50cygpIHBoYXNlIGhhcyBydW4sIGFuZCBhbnkgZG91YmxlcyByZWZlcmVuY2VkIGZy
b20KICAgICAgICAgICAgIC8vIHN0YWNrbWFwcyBnZXQgZnVzZWQuCi0gICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVChpc0lkZW50aWNhbChtX3ZhbHVlLT5hc0RvdWJsZSgpLCAwLjApKTsKKyAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fdmFsdWUtPm9wY29kZSgpID09IENvbnN0RmxvYXQgfHwg
aXNJZGVudGljYWwobV92YWx1ZS0+YXNEb3VibGUoKSwgMC4wKSk7CisgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVChtX3ZhbHVlLT5vcGNvZGUoKSA9PSBDb25zdERvdWJsZSB8fCBpc0lkZW50aWNh
bChtX3ZhbHVlLT5hc0Zsb2F0KCksIDAuMCkpOwogICAgICAgICAgICAgYXBwZW5kKE1vdmVaZXJv
VG9Eb3VibGUsIHRtcChtX3ZhbHVlKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
QEAgLTE2MTEsNiArMTY3MSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY29uZmlnLm1v
dmVDb25kaXRpb25hbGx5VGVzdDMyID0gTW92ZUNvbmRpdGlvbmFsbHlUZXN0MzI7CiAgICAgICAg
ICAgICAgICAgY29uZmlnLm1vdmVDb25kaXRpb25hbGx5VGVzdDY0ID0gTW92ZUNvbmRpdGlvbmFs
bHlUZXN0NjQ7CiAgICAgICAgICAgICAgICAgY29uZmlnLm1vdmVDb25kaXRpb25hbGx5RG91Ymxl
ID0gTW92ZUNvbmRpdGlvbmFsbHlEb3VibGU7CisgICAgICAgICAgICAgICAgY29uZmlnLm1vdmVD
b25kaXRpb25hbGx5RmxvYXQgPSBNb3ZlQ29uZGl0aW9uYWxseUZsb2F0OwogICAgICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogaXQncyBub3Qgb2J2aW91cyB0aGF0
IHRoZXNlIGFyZSBwYXJ0aWN1bGFybHkgZWZmaWNpZW50LgogICAgICAgICAgICAgICAgIGNvbmZp
Zy5tb3ZlQ29uZGl0aW9uYWxseTMyID0gTW92ZURvdWJsZUNvbmRpdGlvbmFsbHkzMjsKQEAgLTE2
MTgsNiArMTY3OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY29uZmlnLm1vdmVDb25k
aXRpb25hbGx5VGVzdDMyID0gTW92ZURvdWJsZUNvbmRpdGlvbmFsbHlUZXN0MzI7CiAgICAgICAg
ICAgICAgICAgY29uZmlnLm1vdmVDb25kaXRpb25hbGx5VGVzdDY0ID0gTW92ZURvdWJsZUNvbmRp
dGlvbmFsbHlUZXN0NjQ7CiAgICAgICAgICAgICAgICAgY29uZmlnLm1vdmVDb25kaXRpb25hbGx5
RG91YmxlID0gTW92ZURvdWJsZUNvbmRpdGlvbmFsbHlEb3VibGU7CisgICAgICAgICAgICAgICAg
Y29uZmlnLm1vdmVDb25kaXRpb25hbGx5RmxvYXQgPSBNb3ZlRG91YmxlQ29uZGl0aW9uYWxseUZs
b2F0OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX2luc3RzLmxh
c3QoKS5hcHBlbmQoY3JlYXRlU2VsZWN0KG1fdmFsdWUtPmNoaWxkKDApLCBjb25maWcpKTsKQEAg
LTE2MjUsNyArMTY4Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIElU
b0Q6IHsKLSAgICAgICAgICAgIGFwcGVuZFVuT3A8Q29udmVydEludDMyVG9Eb3VibGUsIENvbnZl
cnRJbnQ2NFRvRG91YmxlLCBBaXI6Ok9vcHM+KG1fdmFsdWUtPmNoaWxkKDApKTsKKyAgICAgICAg
ICAgIGFwcGVuZFVuT3A8Q29udmVydEludDMyVG9Eb3VibGUsIENvbnZlcnRJbnQ2NFRvRG91Ymxl
PihtX3ZhbHVlLT5jaGlsZCgwKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApA
QCAtMTY4Niw2ICsxNzQ4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNhc2UgSW50NjQ6CiAg
ICAgICAgICAgICAgICAgYXBwZW5kKE1vdmUsIFRtcChHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiks
IHRtcChjQ2FsbCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBG
bG9hdDoKICAgICAgICAgICAgIGNhc2UgRG91YmxlOgogICAgICAgICAgICAgICAgIGFwcGVuZChN
b3ZlRG91YmxlLCBUbXAoRlBSSW5mbzo6cmV0dXJuVmFsdWVGUFIpLCB0bXAoY0NhbGwpKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKQEAgLTE3NTAsNyArMTgxMyw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgYXBwZW5kKE1vdmUsIHRtcChyaWdodCksIHJlc3VsdCk7CiAKICAgICAgICAg
ICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPQotICAgICAgICAgICAgICAgICAgICBvcGNvZGVG
b3JUeXBlKEJyYW5jaE5lZzMyLCBCcmFuY2hOZWc2NCwgQWlyOjpPb3BzLCBjaGVja1ZhbHVlLT50
eXBlKCkpOworICAgICAgICAgICAgICAgICAgICBvcGNvZGVGb3JUeXBlKEJyYW5jaE5lZzMyLCBC
cmFuY2hOZWc2NCwgY2hlY2tWYWx1ZS0+dHlwZSgpKTsKICAgICAgICAgICAgICAgICBDaGVja1Nw
ZWNpYWwqIHNwZWNpYWwgPSBlbnN1cmVDaGVja1NwZWNpYWwob3Bjb2RlLCAyKTsKIAogICAgICAg
ICAgICAgICAgIEluc3QgaW5zdChQYXRjaCwgY2hlY2tWYWx1ZSwgQXJnOjpzcGVjaWFsKHNwZWNp
YWwpKTsKQEAgLTE3NjgsMTQgKzE4MzEsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIFN0YWNr
bWFwU3BlY2lhbDo6Um9sZU1vZGUgc3RhY2ttYXBSb2xlID0gU3RhY2ttYXBTcGVjaWFsOjpTYW1l
QXNSZXA7CiAgICAgICAgICAgICBzd2l0Y2ggKG1fdmFsdWUtPm9wY29kZSgpKSB7CiAgICAgICAg
ICAgICBjYXNlIENoZWNrQWRkOgotICAgICAgICAgICAgICAgIG9wY29kZSA9IG9wY29kZUZvclR5
cGUoQnJhbmNoQWRkMzIsIEJyYW5jaEFkZDY0LCBBaXI6Ok9vcHMsIG1fdmFsdWUtPnR5cGUoKSk7
CisgICAgICAgICAgICAgICAgb3Bjb2RlID0gb3Bjb2RlRm9yVHlwZShCcmFuY2hBZGQzMiwgQnJh
bmNoQWRkNjQsIG1fdmFsdWUtPnR5cGUoKSk7CiAgICAgICAgICAgICAgICAgY29tbXV0YXRpdml0
eSA9IENvbW11dGF0aXZlOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2Fz
ZSBDaGVja1N1YjoKLSAgICAgICAgICAgICAgICBvcGNvZGUgPSBvcGNvZGVGb3JUeXBlKEJyYW5j
aFN1YjMyLCBCcmFuY2hTdWI2NCwgQWlyOjpPb3BzLCBtX3ZhbHVlLT50eXBlKCkpOworICAgICAg
ICAgICAgICAgIG9wY29kZSA9IG9wY29kZUZvclR5cGUoQnJhbmNoU3ViMzIsIEJyYW5jaFN1YjY0
LCBtX3ZhbHVlLT50eXBlKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
Y2FzZSBDaGVja011bDoKLSAgICAgICAgICAgICAgICBvcGNvZGUgPSBvcGNvZGVGb3JUeXBlKEJy
YW5jaE11bDMyLCBCcmFuY2hNdWw2NCwgQWlyOjpPb3BzLCBjaGVja1ZhbHVlLT50eXBlKCkpOwor
ICAgICAgICAgICAgICAgIG9wY29kZSA9IG9wY29kZUZvclR5cGUoQnJhbmNoTXVsMzIsIEJyYW5j
aE11bDY0LCBjaGVja1ZhbHVlLT50eXBlKCkpOwogICAgICAgICAgICAgICAgIHN0YWNrbWFwUm9s
ZSA9IFN0YWNrbWFwU3BlY2lhbDo6Rm9yY2VMYXRlVXNlOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM01lbW9yeVZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9y
eVZhbHVlLmNwcAppbmRleCBmYTU2MjI1MjM4NzlhZjQ3Y2MzZWZiZTM1ZTdiZWU1ZDMwZWViYmQ0
Li5lMDQ4MWM2MTY2ZTc4NDg0OTc0Y2Q4MmIzYzVkNzZlZWI2ODRhNGY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuY3BwCkBAIC00NSw5ICs0NSw2IEBAIHNpemVf
dCBNZW1vcnlWYWx1ZTo6YWNjZXNzQnl0ZVNpemUoKSBjb25zdAogICAgIGNhc2UgTG9hZDE2UzoK
ICAgICBjYXNlIFN0b3JlMTY6CiAgICAgICAgIHJldHVybiAyOwotICAgIGNhc2UgTG9hZEZsb2F0
OgotICAgIGNhc2UgU3RvcmVGbG9hdDoKLSAgICAgICAgcmV0dXJuIDQ7CiAgICAgY2FzZSBMb2Fk
OgogICAgICAgICByZXR1cm4gc2l6ZW9mVHlwZSh0eXBlKCkpOwogICAgIGNhc2UgU3RvcmU6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuaAppbmRleCBlMmExMDRjMzU0Y2Q0
YjJmMmI0OGY2M2Y4Y2Q2NjcwMGExNTQ2YmM1Li5hOTY0OGU5Y2E1NDNhM2NkMDU2NjQyZTNmNjg2
NjgyYWM5YmQ0NTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1v
cnlWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmgK
QEAgLTQyLDExICs0Miw5IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBMb2FkOFM6CiAgICAgICAg
IGNhc2UgTG9hZDE2WjoKICAgICAgICAgY2FzZSBMb2FkMTZTOgotICAgICAgICBjYXNlIExvYWRG
bG9hdDoKICAgICAgICAgY2FzZSBMb2FkOgogICAgICAgICBjYXNlIFN0b3JlODoKICAgICAgICAg
Y2FzZSBTdG9yZTE2OgotICAgICAgICBjYXNlIFN0b3JlRmxvYXQ6CiAgICAgICAgIGNhc2UgU3Rv
cmU6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgZGVmYXVsdDoKQEAgLTg5LDEy
ICs4Nyw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNlIExvYWQxNlM6CiAgICAgICAgICAg
ICAgICAgQVNTRVJUKHR5cGUgPT0gSW50MzIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgY2FzZSBMb2FkRmxvYXQ6Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHR5cGUgPT0g
RG91YmxlKTsKLSAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgU3RvcmU4
OgogICAgICAgICAgICAgY2FzZSBTdG9yZTE2OgotICAgICAgICAgICAgY2FzZSBTdG9yZUZsb2F0
OgogICAgICAgICAgICAgY2FzZSBTdG9yZToKICAgICAgICAgICAgICAgICBBU1NFUlQodHlwZSA9
PSBWb2lkKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTEwNiw3ICsxMDAsNyBAQCBwcml2
YXRlOgogCiAgICAgLy8gVXNlIHRoaXMgZm9ybSBmb3IgbG9hZHMgd2hlcmUgdGhlIHJldHVybiB0
eXBlIGlzIGltcGxpZWQuCiAgICAgTWVtb3J5VmFsdWUodW5zaWduZWQgaW5kZXgsIE9wY29kZSBv
cGNvZGUsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDAp
Ci0gICAgICAgIDogTWVtb3J5VmFsdWUoaW5kZXgsIG9wY29kZSwgb3Bjb2RlID09IExvYWRGbG9h
dCA/IERvdWJsZSA6IEludDMyLCBvcmlnaW4sIHBvaW50ZXIsIG9mZnNldCkKKyAgICAgICAgOiBN
ZW1vcnlWYWx1ZShpbmRleCwgb3Bjb2RlLCBJbnQzMiwgb3JpZ2luLCBwb2ludGVyLCBvZmZzZXQp
CiAgICAgewogICAgIH0KIApAQCAtMTIyLDcgKzExNiw2IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICBzd2l0Y2ggKG9wY29kZSkgewogICAgICAgICAgICAgY2FzZSBTdG9yZTg6CiAgICAgICAgICAg
ICBjYXNlIFN0b3JlMTY6Ci0gICAgICAgICAgICBjYXNlIFN0b3JlRmxvYXQ6CiAgICAgICAgICAg
ICBjYXNlIFN0b3JlOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVs
dDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01vdmVDb25zdGFudHMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTW92ZUNvbnN0YW50cy5jcHAKaW5kZXgg
MTMzODUzY2ZhNzYxYTI1YmI3YjYxYzFmNjM5NDEyMzZhZTQ2ZDdjZS4uNTZkNDI4ODA2M2RhZTEy
ODRhZjc3NWE3NDU5Nzg1ODM4YjM3NGIxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzTW92ZUNvbnN0YW50cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzTW92ZUNvbnN0YW50cy5jcHAKQEAgLTE0NCw3ICsxNDQsOCBAQCBwcml2YXRlOgogCiAgICAg
Ym9vbCBnb2VzSW5UYWJsZShjb25zdCBWYWx1ZUtleSYga2V5KQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGtleS5vcGNvZGUoKSA9PSBDb25zdERvdWJsZSAmJiBrZXkgIT0gZG91YmxlWmVybygpOwor
ICAgICAgICByZXR1cm4gKGtleS5vcGNvZGUoKSA9PSBDb25zdERvdWJsZSAmJiBrZXkgIT0gZG91
YmxlWmVybygpKQorICAgICAgICB8fCAoa2V5Lm9wY29kZSgpID09IENvbnN0RmxvYXQgJiYga2V5
ICE9IGZsb2F0WmVybygpKTsKICAgICB9CiAKICAgICBib29sIG5lZWRzTW90aW9uKGNvbnN0IFZh
bHVlKiB2YWx1ZSkKQEAgLTE1Nyw2ICsxNTgsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJu
IFZhbHVlS2V5KENvbnN0RG91YmxlLCBEb3VibGUsIDAuMCk7CiAgICAgfQogCisgICAgc3RhdGlj
IFZhbHVlS2V5IGZsb2F0WmVybygpCisgICAgeworICAgICAgICByZXR1cm4gVmFsdWVLZXkoQ29u
c3RGbG9hdCwgRG91YmxlLCAwLjApOworICAgIH0KKwogICAgIFByb2NlZHVyZSYgbV9wcm9jOwog
ICAgIFZlY3RvcjxWYWx1ZSo+IG1fdG9SZW1vdmU7CiAgICAgSGFzaE1hcDxWYWx1ZUtleSwgdW5z
aWduZWQ+IG1fY29uc3RUYWJsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM09wY29kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuY3BwCmlu
ZGV4IGUxNWJiOGExNzEwYjIyMTE1MDY1NzU0M2RlMjdjMjQ0YWYwMDJhMWQuLmRhMDI0NzE2NTdj
ZjA1Mjc1Yzc5NDk5M2E0YWQ0MzU5M2ExYWFhYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM09wY29kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
T3Bjb2RlLmNwcApAQCAtOTIsNiArOTIsOSBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJl
YW0mIG91dCwgT3Bjb2RlIG9wY29kZSkKICAgICBjYXNlIENvbnN0RG91YmxlOgogICAgICAgICBv
dXQucHJpbnQoIkNvbnN0RG91YmxlIik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIENvbnN0
RmxvYXQ6CisgICAgICAgIG91dC5wcmludCgiQ29uc3RGbG9hdCIpOworICAgICAgICByZXR1cm47
CiAgICAgY2FzZSBTdGFja1Nsb3Q6CiAgICAgICAgIG91dC5wcmludCgiU3RhY2tTbG90Iik7CiAg
ICAgICAgIHJldHVybjsKQEAgLTE2MSwxNSArMTY0LDE4IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQ
cmludFN0cmVhbSYgb3V0LCBPcGNvZGUgb3Bjb2RlKQogICAgIGNhc2UgVHJ1bmM6CiAgICAgICAg
IG91dC5wcmludCgiVHJ1bmMiKTsKICAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgRlJvdW5kOgot
ICAgICAgICBvdXQucHJpbnQoIkZSb3VuZCIpOwotICAgICAgICByZXR1cm47CiAgICAgY2FzZSBJ
VG9EOgogICAgICAgICBvdXQucHJpbnQoIklUb0QiKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNh
c2UgRFRvSTMyOgogICAgICAgICBvdXQucHJpbnQoIkRUb0kzMiIpOwogICAgICAgICByZXR1cm47
CisgICAgY2FzZSBGbG9hdFRvRG91YmxlOgorICAgICAgICBvdXQucHJpbnQoIkZsb2F0VG9Eb3Vi
bGUiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgRG91YmxlVG9GbG9hdDoKKyAgICAgICAg
b3V0LnByaW50KCJEb3VibGVUb0Zsb2F0Iik7CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIEVx
dWFsOgogICAgICAgICBvdXQucHJpbnQoIkVxdWFsIik7CiAgICAgICAgIHJldHVybjsKQEAgLTIx
NSw5ICsyMjEsNiBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgT3Bjb2Rl
IG9wY29kZSkKICAgICBjYXNlIExvYWQxNlM6CiAgICAgICAgIG91dC5wcmludCgiTG9hZDE2UyIp
OwogICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBMb2FkRmxvYXQ6Ci0gICAgICAgIG91dC5wcmlu
dCgiTG9hZEZsb2F0Iik7Ci0gICAgICAgIHJldHVybjsKICAgICBjYXNlIExvYWQ6CiAgICAgICAg
IG91dC5wcmludCgiTG9hZCIpOwogICAgICAgICByZXR1cm47CkBAIC0yMjcsOSArMjMwLDYgQEAg
dm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIE9wY29kZSBvcGNvZGUpCiAgICAg
Y2FzZSBTdG9yZTE2OgogICAgICAgICBvdXQucHJpbnQoIlN0b3JlMTYiKTsKICAgICAgICAgcmV0
dXJuOwotICAgIGNhc2UgU3RvcmVGbG9hdDoKLSAgICAgICAgb3V0LnByaW50KCJTdG9yZUZsb2F0
Iik7Ci0gICAgICAgIHJldHVybjsKICAgICBjYXNlIFN0b3JlOgogICAgICAgICBvdXQucHJpbnQo
IlN0b3JlIik7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM09wY29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmgK
aW5kZXggZjBmM2FiOGJjMGM5ZWVkNTNiYjc3NTgzOTI5MTlhZWNlODg4NTE3OS4uYWRmZDIyZmZh
YjJkOGE3Njk3YzY5NjIwNDU1NmQ3ZDZlYTFiOTQwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
T3Bjb2RlLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgZW51bSBPcGNvZGUgOiBpbnQxNl90IHsKICAgICBD
b25zdDMyLAogICAgIENvbnN0NjQsCiAgICAgQ29uc3REb3VibGUsCisgICAgQ29uc3RGbG9hdCwK
IAogICAgIC8vIFRoZSBtYWdpY2FsIHN0YWNrIHNsb3QuIFRoaXMgaXMgdmlld2VkIGFzIGV4ZWN1
dGluZyBhdCB0aGUgdG9wIG9mIHRoZSBwcm9ncmFtIHJlZ2FyZGxlc3Mgb2YKICAgICAvLyB3aGVy
ZSBpbiBjb250cm9sIGZsb3cgeW91IHB1dCBpdC4gRWFjaCBpbnN0YW5jZSBvZiBhIFN0YWNrU2xv
dCBWYWx1ZSBnZXRzIGEgZGlzam9pbnQgcmFuZ2Ugb2YKQEAgLTk2LDEyICs5NywxMyBAQCBlbnVt
IE9wY29kZSA6IGludDE2X3QgewogICAgIFpFeHQzMiwKICAgICAvLyBUYWtlcyBJbnQ2NCBhbmQg
cmV0dXJucyBJbnQzMjoKICAgICBUcnVuYywKLSAgICAvLyBUYWtlcyBhbmQgcmV0dXJucyBEb3Vi
bGU6Ci0gICAgRlJvdW5kLAogICAgIC8vIFRha2VzIGludHMgYW5kIHJldHVybnMgRG91YmxlOgog
ICAgIElUb0QsCiAgICAgLy8gVGFrZXMgRG91YmxlIGFuZCByZXR1cm5zIEludDMyOgogICAgIERU
b0kzMiwKKyAgICAvLyBDb252ZXJ0IGJldHdlZW4gZG91YmxlIGFuZCBmbG9hdC4KKyAgICBGbG9h
dFRvRG91YmxlLAorICAgIERvdWJsZVRvRmxvYXQsCiAKICAgICAvLyBQb2x5bW9ycGhpYyBjb21w
YXJpc29ucywgdXNhYmxlIHdpdGggYW55IHZhbHVlIHR5cGUuIFJldHVybnMgaW50MzIgMCBvciAx
LiBOb3RlIHRoYXQgIk5vdCIKICAgICAvLyBpcyBqdXN0IEVxdWFsKHgsIDApLCBhbmQgIlRvQm9v
bGVhbiIgaXMganVzdCBOb3RFcXVhbCh4LCAwKS4KQEAgLTEyOCw4ICsxMzAsNiBAQCBlbnVtIE9w
Y29kZSA6IGludDE2X3QgewogICAgIExvYWQ4UywKICAgICBMb2FkMTZaLAogICAgIExvYWQxNlMs
Ci0gICAgLy8gVGhpcyByZXR1cm5zIERvdWJsZToKLSAgICBMb2FkRmxvYXQsCiAgICAgLy8gVGhp
cyByZXR1cm5zIHdoYXRldmVyIHRoZSByZXR1cm4gdHlwZSBpczoKICAgICBMb2FkLAogCkBAIC0x
MzcsOSArMTM3LDcgQEAgZW51bSBPcGNvZGUgOiBpbnQxNl90IHsKICAgICAvLyBUaGVzZSB0YWtl
IGFuIEludDMyIHZhbHVlOgogICAgIFN0b3JlOCwKICAgICBTdG9yZTE2LAotICAgIC8vIFRoaXMg
dGFrZXMgYSBEb3VibGUgdmFsdWU6Ci0gICAgU3RvcmVGbG9hdCwKLSAgICAvLyBUaGlzIGlzIGEg
cG9seW1vcnBoaWMgc3RvcmUgZm9yIEludDMyLCBJbnQ2NCwgYW5kIERvdWJsZToKKyAgICAvLyBU
aGlzIGlzIGEgcG9seW1vcnBoaWMgc3RvcmUgZm9yIEludDMyLCBJbnQ2NCwgRmxvYXQsIGFuZCBE
b3VibGUuCiAgICAgU3RvcmUsCiAKICAgICAvLyBUaGlzIGlzIGEgcmVndWxhciBvcmRpbmFyeSBD
IGZ1bmN0aW9uIGNhbGwsIHVzaW5nIHRoZSBzeXN0ZW0gQyBjYWxsaW5nIGNvbnZlbnRpb24uIE1h
a2Ugc3VyZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAKaW5kZXggMGY4
ZWJiNDliNWViMTRhNWI5YzgwNTAzY2IxNTAyMTQyYjRlM2Q1Yi4uN2FkMjE2NWYwNDJjOWYxZGRm
MmUxNDRjYjVlZjE5ZjAyYzAyZDBkZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzUHJvY2VkdXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9j
ZWR1cmUuY3BwCkBAIC02Niw2ICs2Niw4IEBAIFZhbHVlKiBQcm9jZWR1cmU6OmFkZEludENvbnN0
YW50KE9yaWdpbiBvcmlnaW4sIFR5cGUgdHlwZSwgaW50NjRfdCB2YWx1ZSkKICAgICAgICAgcmV0
dXJuIGFkZDxDb25zdDY0VmFsdWU+KG9yaWdpbiwgdmFsdWUpOwogICAgIGNhc2UgRG91YmxlOgog
ICAgICAgICByZXR1cm4gYWRkPENvbnN0RG91YmxlVmFsdWU+KG9yaWdpbiwgc3RhdGljX2Nhc3Q8
ZG91YmxlPih2YWx1ZSkpOworICAgIGNhc2UgRmxvYXQ6CisgICAgICAgIHJldHVybiBhZGQ8Q29u
c3RGbG9hdFZhbHVlPihvcmlnaW4sIHN0YXRpY19jYXN0PGZsb2F0Pih2YWx1ZSkpOwogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVk
dWNlRG91YmxlVG9GbG9hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VE
b3VibGVUb0Zsb2F0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Y2M2YzNhYzZiYTc0YzI3M2EzMjdlZTU1ODk4
MjUwNTUyMjg2Nzk4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzUmVkdWNlRG91YmxlVG9GbG9hdC5jcHAKQEAgLTAsMCArMSwxNTEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkIzUmVkdWNlRG91YmxlVG9GbG9hdC5oIgorCisjaWYgRU5BQkxFKEIzX0pJVCkK
KworI2luY2x1ZGUgIkIzQmFzaWNCbG9jay5oIgorI2luY2x1ZGUgIkIzUGhhc2VTY29wZS5oIgor
I2luY2x1ZGUgIkIzVmFsdWVJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
QjMgeworCituYW1lc3BhY2Ugewordm9pZCBhdHRlbXB0U2ltcGxpZmljYXRpb24oVmFsdWUqIGNh
bmRpZGF0ZSkKK3sKKyAgICBzd2l0Y2ggKGNhbmRpZGF0ZS0+b3Bjb2RlKCkpIHsKKyAgICBjYXNl
IEFkZDoKKyAgICBjYXNlIFN1YjoKKyAgICBjYXNlIE11bDoKKyAgICBjYXNlIERpdjoKKyAgICAg
ICAgaWYgKGNhbmRpZGF0ZS0+Y2hpbGQoMCktPm9wY29kZSgpID09IEZsb2F0VG9Eb3VibGUgJiYg
Y2FuZGlkYXRlLT5jaGlsZCgxKS0+b3Bjb2RlKCkgPT0gRmxvYXRUb0RvdWJsZSkgeworICAgICAg
ICAgICAgY2FuZGlkYXRlLT5jaGlsZCgwKSA9IGNhbmRpZGF0ZS0+Y2hpbGQoMCktPmNoaWxkKDAp
OworICAgICAgICAgICAgY2FuZGlkYXRlLT5jaGlsZCgxKSA9IGNhbmRpZGF0ZS0+Y2hpbGQoMSkt
PmNoaWxkKDApOworICAgICAgICAgICAgY2FuZGlkYXRlLT5zZXRUeXBlKEZsb2F0KTsKKyAgICAg
ICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIFNxcnQ6CisgICAgICAgIGlmIChjYW5kaWRh
dGUtPmNoaWxkKDApLT5vcGNvZGUoKSA9PSBGbG9hdFRvRG91YmxlKSB7CisgICAgICAgICAgICBj
YW5kaWRhdGUtPmNoaWxkKDApID0gY2FuZGlkYXRlLT5jaGlsZCgwKS0+Y2hpbGQoMCk7CisgICAg
ICAgICAgICBjYW5kaWRhdGUtPnNldFR5cGUoRmxvYXQpOworICAgICAgICB9CisgICAgICAgIGJy
ZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworfSAvLyBuYW1l
c3BhY2UKKworLy8gVGhlIGdvYWwgb2YgdGhpcyBwaGFzZSBpcyB0byB0cmFuc2Zvcm0gRG91Ymxl
IG9wZXJhdGlvbnMKKy8vIGludG8gZmxvYXQgaWYgdGhlIERvdWJsZSByZXN1bHQgaXMgbmV2ZXIg
dXNlZCBhcyBEb3VibGUuCisvLworLy8gSW4gQywgdGhhdCB3b3VsZCBiZSBzb21ldGhpbmcgbGlr
ZToKKy8vICAgICBmbG9hdCBhZGQoZmxvYXQgYSwgZmxvYXQgYikgeworLy8gICAgICAgICByZXR1
cm4gKGRvdWJsZSlhICsgKGRvdWJsZSliOworLy8gICAgIH0KKy8vCisvLyBTdWNoIG9wZXJhdGlv
biBhcmlzZSBpbiBKUyBiZWNhdXNlIHRoZXJlIGFyZSBpcyBubyBGbG9hdCB0eXBlCisvLyBhbmQg
ZmxvYXQgb3BlcmF0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IGFkZGluZyBkb3VibGUtdG8tZmxvYXQg
cm91bmRpbmcuCisvLworLy8gVGhlIG9wZXJhdGlvbnMgY2FuIGJlIGRvbmUgZW50aXJlbHkgd2l0
aG91dCBEb3VibGUgY29udmVyc2lvbi4KKy8vIFVzaW5nIGZsb2F0IGluIHBsYWNlIHJlbW92ZSB0
aGUgdXNlbGVzcyBjb252ZXJzaW9uLCBhbmQgdGhlIGZsb2F0CisvLyBvcHMgaXMgc29tZXRpbWUg
bWFzc2l2ZWx5IGNoZWFwZXIgKFNRUlQgZm9yIGV4YW1wbGUpLgorLy8KKy8vIElmIHRoZSBEb3Vi
bGUgdmFsdWUgaXMgdXNlZCBhcyBEb3VibGUsIHdlIGRvIG5vdCBkbyB0aGUgY29udmVyc2lvbi4K
Ky8vIEl0IGlzIGNoZWFwZXIgdG8gZG8gYSBjb252ZXJzaW9uIHRoYW4gcmVwZWF0IGFueSBmbG9h
dGluZy1wb2ludCBvcGVyYXRpb24uCit2b2lkIHJlZHVjZURvdWJsZVRvRmxvYXQoUHJvY2VkdXJl
JiBwcm9jZWR1cmUpCit7CisgICAgUGhhc2VTY29wZSBwaGFzZVNjb3BlKHByb2NlZHVyZSwgInJl
ZHVjZURvdWJsZVRvRmxvYXQiKTsKKworICAgIEhhc2hTZXQ8VmFsdWUqPiBjYW5kaWRhdGVzOwor
CisgICAgLy8gRmlyc3QsIHdlIGZpbmQgYW55IHZhbHVlIHRoYXQgaXMgY29udmVydGVkIHRvIGZs
b2F0CisgICAgLy8gYW5kIG9ubHkgdXNlZCBhcyBmbG9hdC4KKyAgICAvLyBXZSBhbHNvIHNpbXBs
aWZ5IGNvbXBhcmlzb25zIHNpbmNlIHRoYXQncyBhbHdheXMgc2FmZSBhbmQgd2UKKyAgICAvLyBk
b24ndCB3YW50IHRoZW0gdG8gYXBwZWFyIGluIHRoZSBuZXh0IGxvb3AuCisgICAgZm9yIChCYXNp
Y0Jsb2NrKiBibG9jayA6IHByb2NlZHVyZSkgeworICAgICAgICBmb3IgKFZhbHVlKiB2YWx1ZSA6
ICpibG9jaykgeworICAgICAgICAgICAgdmFsdWUtPnBlcmZvcm1TdWJzdGl0dXRpb24oKTsKKwor
ICAgICAgICAgICAgc3dpdGNoICh2YWx1ZS0+b3Bjb2RlKCkpIHsKKyAgICAgICAgICAgIGNhc2Ug
RG91YmxlVG9GbG9hdDoKKyAgICAgICAgICAgICAgICBjYW5kaWRhdGVzLmFkZCh2YWx1ZS0+Y2hp
bGQoMCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBFcXVhbDoK
KyAgICAgICAgICAgIGNhc2UgTm90RXF1YWw6CisgICAgICAgICAgICBjYXNlIExlc3NUaGFuOgor
ICAgICAgICAgICAgY2FzZSBHcmVhdGVyVGhhbjoKKyAgICAgICAgICAgIGNhc2UgTGVzc0VxdWFs
OgorICAgICAgICAgICAgY2FzZSBHcmVhdGVyRXF1YWw6CisgICAgICAgICAgICAgICAgaWYgKHZh
bHVlLT5jaGlsZCgwKS0+b3Bjb2RlKCkgPT0gRmxvYXRUb0RvdWJsZSAmJiB2YWx1ZS0+Y2hpbGQo
MSktPm9wY29kZSgpID09IEZsb2F0VG9Eb3VibGUpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFs
dWUtPmNoaWxkKDApID0gdmFsdWUtPmNoaWxkKDApLT5jaGlsZCgwKTsKKyAgICAgICAgICAgICAg
ICAgICAgdmFsdWUtPmNoaWxkKDEpID0gdmFsdWUtPmNoaWxkKDEpLT5jaGlsZCgwKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorCisgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IHByb2NlZHVyZSkgeworICAgICAgICBm
b3IgKFZhbHVlKiB2YWx1ZSA6ICpibG9jaykgeworICAgICAgICAgICAgaWYgKHZhbHVlLT5vcGNv
ZGUoKSA9PSBEb3VibGVUb0Zsb2F0KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAg
ICAgICAgICBmb3IgKFZhbHVlKiBjaGlsZCA6IHZhbHVlLT5jaGlsZHJlbigpKSB7CisgICAgICAg
ICAgICAgICAgaWYgKGNoaWxkLT50eXBlKCkgPT0gRG91YmxlKQorICAgICAgICAgICAgICAgICAg
ICBjYW5kaWRhdGVzLnJlbW92ZShjaGlsZCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBpZiAoY2FuZGlkYXRlcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIC8vIFNlY29uZCwgd2UgZ28gb3ZlciB0aGUgY2FuZGlkYXRlcyBhbmQgYXR0ZW1wdCB0byBz
aW1wbGlmeSB0aGVtLgorICAgIC8vIFRoaXMgbGVhdmVzIHRoZSBncmFwaCBpbiBhbiBpbnZhbGlk
IHN0YXRlIHdoZXJlIEZsb2F0IFZhbHVlcyBhcmUKKyAgICAvLyB1c2VkIGJ5IERvdWJsZVRvRmxv
YXQgVmFsdWVzLiBUaGlzIGlzIG9ubHkgdGVtcG9yYXJ5LgorICAgIGZvciAoVmFsdWUqIGNhbmRp
ZGF0ZSA6IGNhbmRpZGF0ZXMpCisgICAgICAgIGF0dGVtcHRTaW1wbGlmaWNhdGlvbihjYW5kaWRh
dGUpOworCisgICAgLy8gRmluYWxseSwgcmVtb3ZlIHRoZSBEb3VibGVUb0Zsb2F0IG1hZGUgdXNl
bGVzcyBieSB0aGUgc2ltcGxpZmljYXRpb25zLgorICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sg
OiBwcm9jZWR1cmUpIHsKKyAgICAgICAgZm9yIChWYWx1ZSogdmFsdWUgOiAqYmxvY2spIHsKKyAg
ICAgICAgICAgIGlmICh2YWx1ZS0+b3Bjb2RlKCkgPT0gRG91YmxlVG9GbG9hdCAmJiB2YWx1ZS0+
Y2hpbGQoMCktPnR5cGUoKSA9PSBGbG9hdCkKKyAgICAgICAgICAgICAgICB2YWx1ZS0+cmVwbGFj
ZVdpdGhJZGVudGl0eSh2YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICB9CisgICAgfQorCisgICAg
Ly8gV2UgZG8gbm90IGNsZWFuIGFsbCB0aGUgdXNlbGVzcyBub2RlcyBhbmQgY29udmVyc2lvbnMu
IFJlZHVjZVN0cmVuZ3RoIGRvZXMgdGhhdCBiZXR0ZXIuCit9CisKK30gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpCMworCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKKwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlRG91YmxlVG9GbG9hdC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzUmVkdWNlRG91YmxlVG9GbG9hdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgwYTUyYjU2
YTMwOTdjMzE2OTc4ZTAzMGZiYTFhNzY5MzRjY2Q3NDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VEb3VibGVUb0Zsb2F0LmgKQEAgLTAsMCArMSw0
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZu
ZGVmIEIzUmVkdWNlRG91YmxlVG9GbG9hdF9oCisjZGVmaW5lIEIzUmVkdWNlRG91YmxlVG9GbG9h
dF9oCisKKyNpZiBFTkFCTEUoQjNfSklUKQorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIz
IHsKKworY2xhc3MgUHJvY2VkdXJlOworCisvLyBDaGFuZ2UgRG91YmxlIG9wZXJhdGlvbnMgdG8g
RmxvYXQgb3BlcmF0aW9ucyB3aGVuIHRoZSBkaWZmZXJlbmNlIGlzIG5vdCBvYnNlcnZhYmxlCisv
LyBhbmQgZG9pbmcgc28gaXMgbGlrZWx5IGJlbmVmaWNpYWwuCit2b2lkIHJlZHVjZURvdWJsZVRv
RmxvYXQoUHJvY2VkdXJlJik7CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMworCisjZW5kaWYg
Ly8gRU5BQkxFKEIzX0pJVCkKKworI2VuZGlmIC8vIEIzUmVkdWNlRG91YmxlVG9GbG9hdF9oCisK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcAppbmRleCA4
YzI3NjRmMGI0Y2Q1YzYxZmJkMzU2YTkxMzc1ZTQxMGJmYzJhZDA2Li5hNDZhMTJjNzA0OTNjNmM2
ODVlMTIyZGMwOGE5Y2E0MzMyMWYwMWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzUmVkdWNlU3RyZW5ndGguY3BwCkBAIC00ODUsNiArNDg1LDE1IEBAIHByaXZhdGU6CiAKICAg
ICAgICAgICAgIGJyZWFrOwogCisgICAgICAgIGNhc2UgU3FydDoKKyAgICAgICAgICAgIC8vIFR1
cm4gdGhpczogU3FydChjb25zdGFudCkKKyAgICAgICAgICAgIC8vIEludG8gdGhpczogc3FydDx2
YWx1ZS0+dHlwZSgpPihjb25zdGFudCkKKyAgICAgICAgICAgIGlmIChWYWx1ZSogY29uc3RhbnQg
PSBtX3ZhbHVlLT5jaGlsZCgwKS0+c3FydENvbnN0YW50KG1fcHJvYykpIHsKKyAgICAgICAgICAg
ICAgICByZXBsYWNlV2l0aE5ld1ZhbHVlKGNvbnN0YW50KTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgIGNhc2UgQml0
d2lzZUNhc3Q6CiAgICAgICAgICAgICAvLyBUdXJuIHRoaXM6IEJpdHdpc2VDYXN0KGNvbnN0YW50
KQogICAgICAgICAgICAgLy8gSW50byB0aGlzOiBiaXR3aXNlX2Nhc3Q8dmFsdWUtPnR5cGUoKT4o
Y29uc3RhbnQpCkBAIC01NDEsNiArNTUwLDMyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBicmVhazsKIAorICAgICAgICBjYXNlIEZsb2F0VG9Eb3VibGU6CisgICAgICAg
ICAgICAvLyBUdXJuIHRoaXM6IEZsb2F0VG9Eb3VibGUoY29uc3RhbnQpCisgICAgICAgICAgICAv
LyBJbnRvIHRoaXM6IENvbnN0RG91YmxlKGNvbnN0YW50KQorICAgICAgICAgICAgaWYgKFZhbHVl
KiBjb25zdGFudCA9IG1fdmFsdWUtPmNoaWxkKDApLT5mbG9hdFRvRG91YmxlQ29uc3RhbnQobV9w
cm9jKSkgeworICAgICAgICAgICAgICAgIHJlcGxhY2VXaXRoTmV3VmFsdWUoY29uc3RhbnQpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgY2FzZSBEb3VibGVUb0Zsb2F0OgorICAgICAgICAgICAgLy8gVHVybiB0aGlz
OiBEb3VibGVUb0Zsb2F0KEZsb2F0VG9Eb3VibGUodmFsdWUpKQorICAgICAgICAgICAgLy8gSW50
byB0aGlzOiB2YWx1ZQorICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDApLT5vcGNvZGUo
KSA9PSBGbG9hdFRvRG91YmxlKSB7CisgICAgICAgICAgICAgICAgbV92YWx1ZS0+cmVwbGFjZVdp
dGhJZGVudGl0eShtX3ZhbHVlLT5jaGlsZCgwKS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgICAg
IG1fY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIC8vIFR1cm4gdGhpczogRG91YmxlVG9GbG9hdChjb25zdGFudCkKKyAg
ICAgICAgICAgIC8vIEludG8gdGhpczogQ29uc3RGbG9hdChjb25zdGFudCkKKyAgICAgICAgICAg
IGlmIChWYWx1ZSogY29uc3RhbnQgPSBtX3ZhbHVlLT5jaGlsZCgwKS0+ZG91YmxlVG9GbG9hdENv
bnN0YW50KG1fcHJvYykpIHsKKyAgICAgICAgICAgICAgICByZXBsYWNlV2l0aE5ld1ZhbHVlKGNv
bnN0YW50KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGJyZWFrOworCiAgICAgICAgIGNhc2UgU2VsZWN0OgogICAgICAgICAgICAgLy8gVHVybiB0
aGlzOiBTZWxlY3QoY29uc3RhbnQsIGEsIGIpCiAgICAgICAgICAgICAvLyBJbnRvIHRoaXM6IGNv
bnN0YW50ID8gYSA6IGIKQEAgLTU5NSwxMSArNjMwLDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2Fz
ZSBMb2FkOFM6CiAgICAgICAgIGNhc2UgTG9hZDE2WjoKICAgICAgICAgY2FzZSBMb2FkMTZTOgot
ICAgICAgICBjYXNlIExvYWRGbG9hdDoKICAgICAgICAgY2FzZSBMb2FkOgogICAgICAgICBjYXNl
IFN0b3JlODoKICAgICAgICAgY2FzZSBTdG9yZTE2OgotICAgICAgICBjYXNlIFN0b3JlRmxvYXQ6
CiAgICAgICAgIGNhc2UgU3RvcmU6IHsKICAgICAgICAgICAgIFZhbHVlKiBhZGRyZXNzID0gbV92
YWx1ZS0+bGFzdENoaWxkKCk7CiAgICAgICAgICAgICBNZW1vcnlWYWx1ZSogbWVtb3J5ID0gbV92
YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNUeXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1R5cGUuY3BwCmlu
ZGV4IDAyMzVhYTQ3MjA0M2E5NzE3YzQ1NmQ5YWMzMDUzYzMzNDdhNzAxOTMuLjAwNTdlYWY2MTdl
MGQ0N2E0MmQ4NzNhZmI1ZjcxYjMwZmMxNGRjMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1R5
cGUuY3BwCkBAIC00Niw2ICs0Niw5IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYg
b3V0LCBUeXBlIHR5cGUpCiAgICAgY2FzZSBJbnQ2NDoKICAgICAgICAgb3V0LnByaW50KCJJbnQ2
NCIpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBGbG9hdDoKKyAgICAgICAgb3V0LnByaW50
KCJGbG9hdCIpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBEb3VibGU6CiAgICAgICAgIG91
dC5wcmludCgiRG91YmxlIik7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1R5
cGUuaAppbmRleCBmOWEzYWUwZmZkOGMwZGMzYjdlZTU1ZGIyNWVhYWEyY2VjZGUwNmFjLi5kZGU0
MTQxZmNmOTZhNjY5MzA3MWJiY2IyZDhlY2ZiOTA4YTAxNTZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzVHlwZS5oCkBAIC0zNyw2ICszNyw3IEBAIGVudW0gVHlwZSA6IGludDhfdCB7CiAgICAgVm9p
ZCwKICAgICBJbnQzMiwKICAgICBJbnQ2NCwKKyAgICBGbG9hdCwKICAgICBEb3VibGUKIH07CiAK
QEAgLTQ3LDcgKzQ4LDcgQEAgaW5saW5lIGJvb2wgaXNJbnQoVHlwZSB0eXBlKQogCiBpbmxpbmUg
Ym9vbCBpc0Zsb2F0KFR5cGUgdHlwZSkKIHsKLSAgICByZXR1cm4gdHlwZSA9PSBEb3VibGU7Cisg
ICAgcmV0dXJuIHR5cGUgPT0gRmxvYXQgfHwgdHlwZSA9PSBEb3VibGU7CiB9CiAKIGlubGluZSBU
eXBlIHBvaW50ZXJUeXBlKCkKQEAgLTYzLDYgKzY0LDcgQEAgaW5saW5lIHNpemVfdCBzaXplb2ZU
eXBlKFR5cGUgdHlwZSkKICAgICBjYXNlIFZvaWQ6CiAgICAgICAgIHJldHVybiAwOwogICAgIGNh
c2UgSW50MzI6CisgICAgY2FzZSBGbG9hdDoKICAgICAgICAgcmV0dXJuIDQ7CiAgICAgY2FzZSBJ
bnQ2NDoKICAgICBjYXNlIERvdWJsZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1ZhbGlkYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRl
LmNwcAppbmRleCAxMDY0MWEwNjJmYWJhMDUxMGMzNzljOWNiZjQ0YzU4OWFmODNmMjNkLi43NTg3
NDQzMTViYmY0NDczNDc2MTg5NmIzZTI4MjQ0ZGEyYTIzNTExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzVmFsaWRhdGUuY3BwCkBAIC0xMzQsNiArMTM0LDEwIEBAIHB1YmxpYzoKICAgICAg
ICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPm51bUNoaWxkcmVuKCksICgiQXQgIiwgKnZhbHVl
KSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBEb3VibGUsICgi
QXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IENvbnN0RmxvYXQ6CisgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5udW1DaGlsZHJl
bigpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50
eXBlKCkgPT0gRmxvYXQsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBjYXNlIFN0YWNrU2xvdDoKICAgICAgICAgICAgIGNhc2UgRnJhbWVQb2lu
dGVyOgogICAgICAgICAgICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+bnVtQ2hpbGRyZW4oKSwgKCJB
dCAiLCAqdmFsdWUpKTsKQEAgLTE3Nyw3ICsxODEsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAg
ICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSAhPSB2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSwgKCJB
dCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSgKICAgICAgICAgICAgICAg
ICAgICAgKHZhbHVlLT50eXBlKCkgPT0gSW50NjQgJiYgdmFsdWUtPmNoaWxkKDApLT50eXBlKCkg
PT0gRG91YmxlKQotICAgICAgICAgICAgICAgICAgICB8fCAodmFsdWUtPnR5cGUoKSA9PSBEb3Vi
bGUgJiYgdmFsdWUtPmNoaWxkKDApLT50eXBlKCkgPT0gSW50NjQpLAorICAgICAgICAgICAgICAg
ICAgICB8fCAodmFsdWUtPnR5cGUoKSA9PSBEb3VibGUgJiYgdmFsdWUtPmNoaWxkKDApLT50eXBl
KCkgPT0gSW50NjQpCisgICAgICAgICAgICAgICAgICAgIHx8ICh2YWx1ZS0+dHlwZSgpID09IEZs
b2F0ICYmIHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpID09IEludDMyKQorICAgICAgICAgICAgICAg
ICAgICB8fCAodmFsdWUtPnR5cGUoKSA9PSBJbnQzMiAmJiB2YWx1ZS0+Y2hpbGQoMCktPnR5cGUo
KSA9PSBGbG9hdCksCiAgICAgICAgICAgICAgICAgICAgICgiQXQgIiwgKnZhbHVlKSk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFNFeHQ4OgpAQCAtMjAzLDEwICsy
MDksOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9
PSBJbnQzMiwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIGNhc2UgU3FydDoKLSAgICAgICAgICAgIGNhc2UgRlJvdW5kOgogICAgICAgICAgICAg
ICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09IDEsICgiQXQgIiwgKnZhbHVlKSk7
Ci0gICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDApLT50eXBlKCkgPT0gRG91
YmxlLCAoIkF0ICIsICp2YWx1ZSkpOwotICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50
eXBlKCkgPT0gRG91YmxlLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElE
QVRFKGlzRmxvYXQodmFsdWUtPmNoaWxkKDApLT50eXBlKCkpLCAoIkF0ICIsICp2YWx1ZSkpOwor
ICAgICAgICAgICAgICAgIFZBTElEQVRFKGlzRmxvYXQodmFsdWUtPnR5cGUoKSksICgiQXQgIiwg
KnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIElUb0Q6
CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMSwgKCJB
dCAiLCAqdmFsdWUpKTsKQEAgLTIxOCw2ICsyMjMsMTYgQEAgcHVibGljOgogICAgICAgICAgICAg
ICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpID09IERvdWJsZSwgKCJBdCAiLCAq
dmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IEludDMy
LCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
Y2FzZSBGbG9hdFRvRG91YmxlOgorICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1D
aGlsZHJlbigpID09IDEsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURB
VEUodmFsdWUtPmNoaWxkKDApLT50eXBlKCkgPT0gRmxvYXQsICgiQXQgIiwgKnZhbHVlKSk7Cisg
ICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBEb3VibGUsICgiQXQgIiwg
KnZhbHVlKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIERvdWJs
ZVRvRmxvYXQ6CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkg
PT0gMSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+
Y2hpbGQoMCktPnR5cGUoKSA9PSBEb3VibGUsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAg
ICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBGbG9hdCwgKCJBdCAiLCAqdmFsdWUpKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgRXF1YWw6CiAgICAgICAg
ICAgICBjYXNlIE5vdEVxdWFsOgogICAgICAgICAgICAgY2FzZSBMZXNzVGhhbjoKQEAgLTI1Miwx
MiArMjY3LDYgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBl
KCkgPT0gSW50MzIsICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgdmFsaWRhdGVT
dGFja0FjY2Vzcyh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBj
YXNlIExvYWRGbG9hdDoKLSAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRy
ZW4oKSA9PSAxLCAoIkF0ICIsICp2YWx1ZSkpOwotICAgICAgICAgICAgICAgIFZBTElEQVRFKHZh
bHVlLT5jaGlsZCgwKS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7
Ci0gICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBEb3VibGUsICgiQXQg
IiwgKnZhbHVlKSk7Ci0gICAgICAgICAgICAgICAgdmFsaWRhdGVTdGFja0FjY2Vzcyh2YWx1ZSk7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIExvYWQ6CiAgICAgICAg
ICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMSwgKCJBdCAiLCAqdmFs
dWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSA9
PSBwb2ludGVyVHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOwpAQCAtMjcyLDEzICsyODEsNiBAQCBw
dWJsaWM6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBWb2lkLCAo
IkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFs
dWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBTdG9yZUZsb2F0
OgotICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09IDIsICgi
QXQgIiwgKnZhbHVlKSk7Ci0gICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDAp
LT50eXBlKCkgPT0gRG91YmxlLCAoIkF0ICIsICp2YWx1ZSkpOwotICAgICAgICAgICAgICAgIFZB
TElEQVRFKHZhbHVlLT5jaGlsZCgxKS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwg
KnZhbHVlKSk7Ci0gICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBWb2lk
LCAoIkF0ICIsICp2YWx1ZSkpOwotICAgICAgICAgICAgICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3Mo
dmFsdWUpOwotICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBTdG9yZToK
ICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAyLCAoIkF0
ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgxKS0+
dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNWYWx1ZS5jcHAKaW5kZXggNzY2OTNkNjI4MjkwMTVlMzczMTk1NzRkNzUwNDRjMmUx
OGIwNjlmZi4uYzA0Mjc2Nzk3NzQzYjZhMjYyZjk5ZDkwYjNiNzVmYTRiY2QyN2JhNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcApAQCAtMTk5LDYgKzE5OSwyMSBAQCBWYWx1ZSog
VmFsdWU6OmJpdHdpc2VDYXN0Q29uc3RhbnQoUHJvY2VkdXJlJikgY29uc3QKICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIAorVmFsdWUqIFZhbHVlOjpkb3VibGVUb0Zsb2F0Q29uc3RhbnQoUHJvY2Vk
dXJlJikgY29uc3QKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworVmFsdWUqIFZhbHVlOjpm
bG9hdFRvRG91YmxlQ29uc3RhbnQoUHJvY2VkdXJlJikgY29uc3QKK3sKKyAgICByZXR1cm4gbnVs
bHB0cjsKK30KKworVmFsdWUqIFZhbHVlOjpzcXJ0Q29uc3RhbnQoUHJvY2VkdXJlJikgY29uc3QK
K3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwogVHJpU3RhdGUgVmFsdWU6OmVxdWFsQ29uc3Rh
bnQoY29uc3QgVmFsdWUqKSBjb25zdAogewogICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOwpAQCAt
Mjk4LDYgKzMxMyw4IEBAIFRyaVN0YXRlIFZhbHVlOjphc1RyaVN0YXRlKCkgY29uc3QKICAgICBj
YXNlIENvbnN0RG91YmxlOgogICAgICAgICAvLyBVc2UgIiE9IDAiIHRvIHJlYWxseSBlbXBoYXNp
emUgd2hhdCB0aGlzIG1lYW4gd2l0aCByZXNwZWN0IHRvIE5hTiBhbmQgc3VjaC4KICAgICAgICAg
cmV0dXJuIHRyaVN0YXRlKGFzRG91YmxlKCkgIT0gMCk7CisgICAgY2FzZSBDb25zdEZsb2F0Ogor
ICAgICAgICByZXR1cm4gdHJpU3RhdGUoYXNGbG9hdCgpICE9IDAuKTsKICAgICBkZWZhdWx0Ogog
ICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKICAgICB9CkBAIC0zMTIsNiArMzI5LDcgQEAg
RWZmZWN0cyBWYWx1ZTo6ZWZmZWN0cygpIGNvbnN0CiAgICAgY2FzZSBDb25zdDMyOgogICAgIGNh
c2UgQ29uc3Q2NDoKICAgICBjYXNlIENvbnN0RG91YmxlOgorICAgIGNhc2UgQ29uc3RGbG9hdDoK
ICAgICBjYXNlIFN0YWNrU2xvdDoKICAgICBjYXNlIEFyZ3VtZW50UmVnOgogICAgIGNhc2UgRnJh
bWVQb2ludGVyOgpAQCAtMzM0LDkgKzM1MiwxMCBAQCBFZmZlY3RzIFZhbHVlOjplZmZlY3RzKCkg
Y29uc3QKICAgICBjYXNlIFNFeHQzMjoKICAgICBjYXNlIFpFeHQzMjoKICAgICBjYXNlIFRydW5j
OgotICAgIGNhc2UgRlJvdW5kOgogICAgIGNhc2UgSVRvRDoKICAgICBjYXNlIERUb0kzMjoKKyAg
ICBjYXNlIEZsb2F0VG9Eb3VibGU6CisgICAgY2FzZSBEb3VibGVUb0Zsb2F0OgogICAgIGNhc2Ug
RXF1YWw6CiAgICAgY2FzZSBOb3RFcXVhbDoKICAgICBjYXNlIExlc3NUaGFuOgpAQCAtMzU2LDE0
ICszNzUsMTIgQEAgRWZmZWN0cyBWYWx1ZTo6ZWZmZWN0cygpIGNvbnN0CiAgICAgY2FzZSBMb2Fk
OFM6CiAgICAgY2FzZSBMb2FkMTZaOgogICAgIGNhc2UgTG9hZDE2UzoKLSAgICBjYXNlIExvYWRG
bG9hdDoKICAgICBjYXNlIExvYWQ6CiAgICAgICAgIHJlc3VsdC5yZWFkcyA9IGFzPE1lbW9yeVZh
bHVlPigpLT5yYW5nZSgpOwogICAgICAgICByZXN1bHQuY29udHJvbERlcGVuZGVudCA9IHRydWU7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3RvcmU4OgogICAgIGNhc2UgU3RvcmUxNjoKLSAg
ICBjYXNlIFN0b3JlRmxvYXQ6CiAgICAgY2FzZSBTdG9yZToKICAgICAgICAgcmVzdWx0LndyaXRl
cyA9IGFzPE1lbW9yeVZhbHVlPigpLT5yYW5nZSgpOwogICAgICAgICByZXN1bHQuY29udHJvbERl
cGVuZGVudCA9IHRydWU7CkBAIC00MTAsOSArNDI3LDEwIEBAIFZhbHVlS2V5IFZhbHVlOjprZXko
KSBjb25zdAogICAgIGNhc2UgWkV4dDMyOgogICAgIGNhc2UgQ2x6OgogICAgIGNhc2UgVHJ1bmM6
Ci0gICAgY2FzZSBGUm91bmQ6CiAgICAgY2FzZSBJVG9EOgogICAgIGNhc2UgRFRvSTMyOgorICAg
IGNhc2UgRmxvYXRUb0RvdWJsZToKKyAgICBjYXNlIERvdWJsZVRvRmxvYXQ6CiAgICAgY2FzZSBD
aGVjazoKICAgICAgICAgcmV0dXJuIFZhbHVlS2V5KG9wY29kZSgpLCB0eXBlKCksIGNoaWxkKDAp
KTsKICAgICBjYXNlIEFkZDoKQEAgLTQ0Nyw2ICs0NjUsOCBAQCBWYWx1ZUtleSBWYWx1ZTo6a2V5
KCkgY29uc3QKICAgICAgICAgcmV0dXJuIFZhbHVlS2V5KENvbnN0NjQsIHR5cGUoKSwgYXNJbnQ2
NCgpKTsKICAgICBjYXNlIENvbnN0RG91YmxlOgogICAgICAgICByZXR1cm4gVmFsdWVLZXkoQ29u
c3REb3VibGUsIHR5cGUoKSwgYXNEb3VibGUoKSk7CisgICAgY2FzZSBDb25zdEZsb2F0OgorICAg
ICAgICByZXR1cm4gVmFsdWVLZXkoQ29uc3RGbG9hdCwgdHlwZSgpLCBhc0Zsb2F0KCkpOwogICAg
IGNhc2UgQXJndW1lbnRSZWc6CiAgICAgICAgIHJldHVybiBWYWx1ZUtleSgKICAgICAgICAgICAg
IEFyZ3VtZW50UmVnLCB0eXBlKCksCkBAIC00NzcsNiArNDk3LDcgQEAgdm9pZCBWYWx1ZTo6Y2hl
Y2tPcGNvZGUoT3Bjb2RlIG9wY29kZSkKICAgICBBU1NFUlQoIUNvbnN0MzJWYWx1ZTo6YWNjZXB0
cyhvcGNvZGUpKTsKICAgICBBU1NFUlQoIUNvbnN0NjRWYWx1ZTo6YWNjZXB0cyhvcGNvZGUpKTsK
ICAgICBBU1NFUlQoIUNvbnN0RG91YmxlVmFsdWU6OmFjY2VwdHMob3Bjb2RlKSk7CisgICAgQVNT
RVJUKCFDb25zdEZsb2F0VmFsdWU6OmFjY2VwdHMob3Bjb2RlKSk7CiAgICAgQVNTRVJUKCFDb250
cm9sVmFsdWU6OmFjY2VwdHMob3Bjb2RlKSk7CiAgICAgQVNTRVJUKCFNZW1vcnlWYWx1ZTo6YWNj
ZXB0cyhvcGNvZGUpKTsKICAgICBBU1NFUlQoIVBhdGNocG9pbnRWYWx1ZTo6YWNjZXB0cyhvcGNv
ZGUpKTsKQEAgLTUyNywxNSArNTQ4LDI0IEBAIFR5cGUgVmFsdWU6OnR5cGVGb3IoT3Bjb2RlIG9w
Y29kZSwgVmFsdWUqIGZpcnN0Q2hpbGQsIFZhbHVlKiBzZWNvbmRDaGlsZCkKICAgICBjYXNlIFNF
eHQzMjoKICAgICBjYXNlIFpFeHQzMjoKICAgICAgICAgcmV0dXJuIEludDY0OwotICAgIGNhc2Ug
RlJvdW5kOgorICAgIGNhc2UgRmxvYXRUb0RvdWJsZToKICAgICBjYXNlIElUb0Q6CiAgICAgICAg
IHJldHVybiBEb3VibGU7CisgICAgY2FzZSBEb3VibGVUb0Zsb2F0OgorICAgICAgICByZXR1cm4g
RmxvYXQ7CiAgICAgY2FzZSBCaXR3aXNlQ2FzdDoKLSAgICAgICAgaWYgKGZpcnN0Q2hpbGQtPnR5
cGUoKSA9PSBJbnQ2NCkKKyAgICAgICAgc3dpdGNoIChmaXJzdENoaWxkLT50eXBlKCkpIHsKKyAg
ICAgICAgY2FzZSBJbnQ2NDoKICAgICAgICAgICAgIHJldHVybiBEb3VibGU7Ci0gICAgICAgIGlm
IChmaXJzdENoaWxkLT50eXBlKCkgPT0gRG91YmxlKQorICAgICAgICBjYXNlIERvdWJsZToKICAg
ICAgICAgICAgIHJldHVybiBJbnQ2NDsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIGNhc2UgSW50MzI6CisgICAgICAgICAgICByZXR1cm4gRmxvYXQ7CisgICAgICAgIGNh
c2UgRmxvYXQ6CisgICAgICAgICAgICByZXR1cm4gSW50MzI7CisgICAgICAgIGNhc2UgVm9pZDoK
KyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CiAgICAgICAgIHJl
dHVybiBWb2lkOwogICAgIGNhc2UgTm9wOgogICAgICAgICByZXR1cm4gVm9pZDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNWYWx1ZS5oCmluZGV4IGE1MmU4YTMyMzYwYWI1ZmYwMmYyMWQzMjlkYjk3MTA2
ZDhlN2EyY2MuLjkxZTQ5ZDFiZDk2MzllYzJkOGJjNmZlMGJlNTRiZTNhZTg3YTVmMDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaApAQCAtNzEsOCArNzEsOCBAQCBwdWJsaWM6CiAKICAg
ICB1bnNpZ25lZCBudW1DaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRyZW4uc2l6ZSgp
OyB9CiAKLSAgICAvLyBUaGlzIGNvbXB1dGVzIHRoZSB0eXBlIHVzaW5nIHRoZSBvcGNvZGUuCiAg
ICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisgICAgdm9pZCBzZXRUeXBl
KFR5cGUgdHlwZSkgeyBtX3R5cGUgPSB0eXBlOyB9CiAKICAgICAvLyBUaGlzIGlzIHVzZWZ1bCB3
aGVuIGxvd2VyaW5nLiBOb3RlIHRoYXQgdGhpcyBpcyBvbmx5IHZhbGlkIGZvciBub24tdm9pZCB2
YWx1ZXMuCiAgICAgQWlyOjpBcmc6OlR5cGUgYWlyVHlwZSgpIGNvbnN0IHsgcmV0dXJuIEFpcjo6
QXJnOjp0eXBlRm9yQjNUeXBlKHR5cGUoKSk7IH0KQEAgLTEyOCw3ICsxMjgsMTAgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgVmFsdWUqIHNTaHJDb25zdGFudChQcm9jZWR1cmUmLCBjb25zdCBWYWx1
ZSogb3RoZXIpIGNvbnN0OwogICAgIHZpcnR1YWwgVmFsdWUqIHpTaHJDb25zdGFudChQcm9jZWR1
cmUmLCBjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0OwogICAgIHZpcnR1YWwgVmFsdWUqIGJpdHdp
c2VDYXN0Q29uc3RhbnQoUHJvY2VkdXJlJikgY29uc3Q7Ci0gICAgCisgICAgdmlydHVhbCBWYWx1
ZSogZG91YmxlVG9GbG9hdENvbnN0YW50KFByb2NlZHVyZSYpIGNvbnN0OworICAgIHZpcnR1YWwg
VmFsdWUqIGZsb2F0VG9Eb3VibGVDb25zdGFudChQcm9jZWR1cmUmKSBjb25zdDsKKyAgICB2aXJ0
dWFsIFZhbHVlKiBzcXJ0Q29uc3RhbnQoUHJvY2VkdXJlJikgY29uc3Q7CisKICAgICB2aXJ0dWFs
IFRyaVN0YXRlIGVxdWFsQ29uc3RhbnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdDsKICAgICB2
aXJ0dWFsIFRyaVN0YXRlIG5vdEVxdWFsQ29uc3RhbnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25z
dDsKICAgICB2aXJ0dWFsIFRyaVN0YXRlIGxlc3NUaGFuQ29uc3RhbnQoY29uc3QgVmFsdWUqIG90
aGVyKSBjb25zdDsKQEAgLTE2Niw2ICsxNjksOSBAQCBwdWJsaWM6CiAgICAgZG91YmxlIGFzRG91
YmxlKCkgY29uc3Q7CiAgICAgYm9vbCBpc0VxdWFsVG9Eb3VibGUoZG91YmxlKSBjb25zdDsgLy8g
V2Ugc2F5ICJpc0VxdWFsVG9Eb3VibGUiIGJlY2F1c2UgImlzRG91YmxlIiB3b3VsZCBiZSBhIGJp
dCBlcXVhbGl0eS4KIAorICAgIGJvb2wgaGFzRmxvYXQoKSBjb25zdDsKKyAgICBmbG9hdCBhc0Zs
b2F0KCkgY29uc3Q7CisKICAgICBib29sIGhhc051bWJlcigpIGNvbnN0OwogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IGJvb2wgcmVwcmVzZW50YWJsZUFzKCkgY29uc3Q7CiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4gVCBhc051bWJlcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzVmFsdWVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNWYWx1ZUlubGluZXMuaAppbmRleCAzNDQxNGYyYjJiMWJkNzE2NWRlMTU5MDczNGQ2YzFmMWVl
ZWQ5YTllLi4wZWNiZWIxNGQxYWJjMWEwMTZiZDllY2I1ZDA4NTY3ODJkZjBlNGRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZUlubGluZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZUlubGluZXMuaApAQCAtMzIsNiArMzIsNyBAQAog
I2luY2x1ZGUgIkIzQ29uc3QzMlZhbHVlLmgiCiAjaW5jbHVkZSAiQjNDb25zdDY0VmFsdWUuaCIK
ICNpbmNsdWRlICJCM0NvbnN0RG91YmxlVmFsdWUuaCIKKyNpbmNsdWRlICJCM0NvbnN0RmxvYXRW
YWx1ZS5oIgogI2luY2x1ZGUgIkIzUGF0Y2hwb2ludFZhbHVlLmgiCiAjaW5jbHVkZSAiQjNQcm9j
ZWR1cmUuaCIKICNpbmNsdWRlICJCM1ZhbHVlLmgiCkBAIC01Nyw2ICs1OCw3IEBAIGlubGluZSBi
b29sIFZhbHVlOjppc0NvbnN0YW50KCkgY29uc3QKICAgICBzd2l0Y2ggKG9wY29kZSgpKSB7CiAg
ICAgY2FzZSBDb25zdDMyOgogICAgIGNhc2UgQ29uc3Q2NDoKKyAgICBjYXNlIENvbnN0RmxvYXQ6
CiAgICAgY2FzZSBDb25zdERvdWJsZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgZGVmYXVs
dDoKQEAgLTE0OCw5ICsxNTAsMTkgQEAgaW5saW5lIGJvb2wgVmFsdWU6OmlzRXF1YWxUb0RvdWJs
ZShkb3VibGUgdmFsdWUpIGNvbnN0CiAgICAgcmV0dXJuIGhhc0RvdWJsZSgpICYmIGFzRG91Ymxl
KCkgPT0gdmFsdWU7CiB9CiAKK2lubGluZSBib29sIFZhbHVlOjpoYXNGbG9hdCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuICEhYXM8Q29uc3RGbG9hdFZhbHVlPigpOworfQorCitpbmxpbmUgZmxvYXQg
VmFsdWU6OmFzRmxvYXQoKSBjb25zdAoreworICAgIHJldHVybiBhczxDb25zdEZsb2F0VmFsdWU+
KCktPnZhbHVlKCk7Cit9CisKIGlubGluZSBib29sIFZhbHVlOjpoYXNOdW1iZXIoKSBjb25zdAog
ewotICAgIHJldHVybiBoYXNJbnQoKSB8fCBoYXNEb3VibGUoKTsKKyAgICByZXR1cm4gaGFzSW50
KCkgfHwgaGFzRG91YmxlKCkgfHwgaGFzRmxvYXQoKTsKIH0KIAogaW5saW5lIGJvb2wgVmFsdWU6
OmlzTmVnYXRpdmVaZXJvKCkgY29uc3QKQEAgLTE1OSw2ICsxNzEsMTAgQEAgaW5saW5lIGJvb2wg
VmFsdWU6OmlzTmVnYXRpdmVaZXJvKCkgY29uc3QKICAgICAgICAgZG91YmxlIHZhbHVlID0gYXNE
b3VibGUoKTsKICAgICAgICAgcmV0dXJuICF2YWx1ZSAmJiBzdGQ6OnNpZ25iaXQodmFsdWUpOwog
ICAgIH0KKyAgICBpZiAoaGFzRmxvYXQoKSkgeworICAgICAgICBmbG9hdCB2YWx1ZSA9IGFzRmxv
YXQoKTsKKyAgICAgICAgcmV0dXJuICF2YWx1ZSAmJiBzdGQ6OnNpZ25iaXQodmFsdWUpOworICAg
IH0KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTE3Miw2ICsxODgsOCBAQCBpbmxpbmUgYm9v
bCBWYWx1ZTo6cmVwcmVzZW50YWJsZUFzKCkgY29uc3QKICAgICAgICAgcmV0dXJuIGlzUmVwcmVz
ZW50YWJsZUFzPFQ+KGFzSW50NjQoKSk7CiAgICAgY2FzZSBDb25zdERvdWJsZToKICAgICAgICAg
cmV0dXJuIGlzUmVwcmVzZW50YWJsZUFzPFQ+KGFzRG91YmxlKCkpOworICAgIGNhc2UgQ29uc3RG
bG9hdDoKKyAgICAgICAgcmV0dXJuIGlzUmVwcmVzZW50YWJsZUFzPFQ+KGFzRmxvYXQoKSk7CiAg
ICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTE4Nyw2ICsyMDUs
OCBAQCBpbmxpbmUgVCBWYWx1ZTo6YXNOdW1iZXIoKSBjb25zdAogICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8VD4oYXNJbnQ2NCgpKTsKICAgICBjYXNlIENvbnN0RG91YmxlOgogICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8VD4oYXNEb3VibGUoKSk7CisgICAgY2FzZSBDb25zdEZsb2F0Ogor
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VD4oYXNGbG9hdCgpKTsKICAgICBkZWZhdWx0Ogog
ICAgICAgICByZXR1cm4gVCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1ZhbHVlS2V5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVl
S2V5LmNwcAppbmRleCAzYzgwNTg2MzUxZjJjNDBlNTc3YzZiOGQ2ZTQ3MDVkMjU0Y2NiMGFmLi5k
NGJiMzZiM2E4ZDE3MGRlN2Y5ODBlNmU0YmUwZTRlNDVkYTFlYzgwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZUtleS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzVmFsdWVLZXkuY3BwCkBAIC00NiwxNCArNDYsMTcgQEAgVmFsdWUqIFZhbHVl
S2V5OjptYXRlcmlhbGl6ZShQcm9jZWR1cmUmIHByb2MsIE9yaWdpbiBvcmlnaW4pIGNvbnN0CiAg
ICAgY2FzZSBGcmFtZVBvaW50ZXI6CiAgICAgICAgIHJldHVybiBwcm9jLmFkZDxWYWx1ZT4ob3Bj
b2RlKCksIHR5cGUoKSwgb3JpZ2luKTsKICAgICBjYXNlIElkZW50aXR5OgorICAgIGNhc2UgU3Fy
dDoKICAgICBjYXNlIFNFeHQ4OgogICAgIGNhc2UgU0V4dDE2OgogICAgIGNhc2UgU0V4dDMyOgog
ICAgIGNhc2UgWkV4dDMyOgorICAgIGNhc2UgQ2x6OgogICAgIGNhc2UgVHJ1bmM6Ci0gICAgY2Fz
ZSBGUm91bmQ6CiAgICAgY2FzZSBJVG9EOgogICAgIGNhc2UgRFRvSTMyOgorICAgIGNhc2UgRmxv
YXRUb0RvdWJsZToKKyAgICBjYXNlIERvdWJsZVRvRmxvYXQ6CiAgICAgY2FzZSBDaGVjazoKICAg
ICAgICAgcmV0dXJuIHByb2MuYWRkPFZhbHVlPihvcGNvZGUoKSwgdHlwZSgpLCBvcmlnaW4sIGNo
aWxkKHByb2MsIDApKTsKICAgICBjYXNlIEFkZDoKQEAgLTg1LDYgKzg4LDggQEAgVmFsdWUqIFZh
bHVlS2V5OjptYXRlcmlhbGl6ZShQcm9jZWR1cmUmIHByb2MsIE9yaWdpbiBvcmlnaW4pIGNvbnN0
CiAgICAgICAgIHJldHVybiBwcm9jLmFkZDxDb25zdDY0VmFsdWU+KG9yaWdpbiwgdmFsdWUoKSk7
CiAgICAgY2FzZSBDb25zdERvdWJsZToKICAgICAgICAgcmV0dXJuIHByb2MuYWRkPENvbnN0RG91
YmxlVmFsdWU+KG9yaWdpbiwgZG91YmxlVmFsdWUoKSk7CisgICAgY2FzZSBDb25zdEZsb2F0Ogor
ICAgICAgICByZXR1cm4gcHJvYy5hZGQ8Q29uc3RGbG9hdFZhbHVlPihvcmlnaW4sIGZsb2F0VmFs
dWUoKSk7CiAgICAgY2FzZSBBcmd1bWVudFJlZzoKICAgICAgICAgcmV0dXJuIHByb2MuYWRkPEFy
Z3VtZW50UmVnVmFsdWU+KG9yaWdpbiwgUmVnOjpmcm9tSW5kZXgoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHZhbHVlKCkpKSk7CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1ZhbHVlS2V5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1
ZUtleS5oCmluZGV4IDBhYTE2MDYyYmFhMGRhYzA2YjdkMmRhNTQzMGIzZGZkZmI2ZThkNmEuLjY2
ZGNlYTAzZjE2OGExYTQ3YzkwZTc2NmYzNzQ5YzMzN2Q4OTMyYmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlS2V5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzVmFsdWVLZXkuaApAQCAtNzgsMTIgKzc4LDIwIEBAIHB1YmxpYzoKICAgICAgICAg
dS5kb3VibGVWYWx1ZSA9IHZhbHVlOwogICAgIH0KIAorICAgIFZhbHVlS2V5KE9wY29kZSBvcGNv
ZGUsIFR5cGUgdHlwZSwgZmxvYXQgdmFsdWUpCisgICAgICAgIDogbV9vcGNvZGUob3Bjb2RlKQor
ICAgICAgICAsIG1fdHlwZSh0eXBlKQorICAgIHsKKyAgICAgICAgdS5mbG9hdFZhbHVlID0gdmFs
dWU7CisgICAgfQorCiAgICAgT3Bjb2RlIG9wY29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3Bjb2Rl
OyB9CiAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAgICAgdW5zaWdu
ZWQgY2hpbGRJbmRleCh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4gdS5pbmRpY2VzW2lu
ZGV4XTsgfQogICAgIFZhbHVlKiBjaGlsZChQcm9jZWR1cmUmLCB1bnNpZ25lZCBpbmRleCkgY29u
c3Q7CiAgICAgaW50NjRfdCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHUudmFsdWU7IH0KICAgICBk
b3VibGUgZG91YmxlVmFsdWUoKSBjb25zdCB7IHJldHVybiB1LmRvdWJsZVZhbHVlOyB9CisgICAg
ZG91YmxlIGZsb2F0VmFsdWUoKSBjb25zdCB7IHJldHVybiB1LmZsb2F0VmFsdWU7IH0KIAogICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBWYWx1ZUtleSYgb3RoZXIpIGNvbnN0CiAgICAgewpAQCAt
MTQyLDYgKzE1MCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHVuc2lnbmVkIGluZGljZXNbM107CiAg
ICAgICAgIGludDY0X3QgdmFsdWU7CiAgICAgICAgIGRvdWJsZSBkb3VibGVWYWx1ZTsKKyAgICAg
ICAgZmxvYXQgZmxvYXRWYWx1ZTsKIAogICAgICAgICBVKCkKICAgICAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyQXJnLmgKaW5kZXggYjNmZTVlYzhkNmEyYWJkZDYxYzhlZDhmYTIw
MTVkZjFlMjBiOWU5MC4uMTQ2NTY3NWE4M2QwNDI2Zjc2MTQzNDhhOGM2NDljZGMyYWZlMGQwOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5oCkBAIC0yMTEsNiArMjExLDcgQEAg
cHVibGljOgogICAgICAgICBjYXNlIEludDMyOgogICAgICAgICBjYXNlIEludDY0OgogICAgICAg
ICAgICAgcmV0dXJuIEdQOworICAgICAgICBjYXNlIEZsb2F0OgogICAgICAgICBjYXNlIERvdWJs
ZToKICAgICAgICAgICAgIHJldHVybiBGUDsKICAgICAgICAgfQpAQCAtMjI1LDYgKzIyNiw3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAg
cmV0dXJuIFdpZHRoODsKICAgICAgICAgY2FzZSBJbnQzMjoKKyAgICAgICAgY2FzZSBGbG9hdDoK
ICAgICAgICAgICAgIHJldHVybiBXaWR0aDMyOwogICAgICAgICBjYXNlIEludDY0OgogICAgICAg
ICBjYXNlIERvdWJsZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyRml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyRml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzLmNwcAppbmRleCA4MWNiNGVjZjgzMjhi
ZTc2NThlNTY1ZTU0OTYwOThlMDE2ODk5OGYzLi4wZTcyYzU3ZTc3NzNjYzc3NGZkYTk4YjcxNzI5
YzdjODkyZDU2MWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ckZpeFBhcnRpYWxSZWdpc3RlclN0YWxscy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJGaXhQYXJ0aWFsUmVnaXN0ZXJTdGFsbHMuY3BwCkBAIC00Niw2ICs0Niw4IEBA
IG5hbWVzcGFjZSB7CiBib29sIGhhc1BhcnRpYWxYbW1SZWdVcGRhdGUoY29uc3QgSW5zdCYgaW5z
dCkKIHsKICAgICBzd2l0Y2ggKGluc3Qub3Bjb2RlKSB7CisgICAgY2FzZSBDb252ZXJ0RG91Ymxl
VG9GbG9hdDoKKyAgICBjYXNlIENvbnZlcnRGbG9hdFRvRG91YmxlOgogICAgIGNhc2UgQ29udmVy
dEludDMyVG9Eb3VibGU6CiAgICAgY2FzZSBDb252ZXJ0SW50NjRUb0RvdWJsZToKICAgICBjYXNl
IFNxcnREb3VibGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ck9wY29kZS5vcGNvZGVzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUu
b3Bjb2RlcwppbmRleCA2NzI2YTMxZmRiYjcxMTYwYzc4NjMyNGJiZDUwM2I2YWNkZDM4YzM4Li43
ODE1YTU5YmExNjQxOTU2ZmY0YTUyYjNmZDFmMjM3YzI4M2RmYWMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMKQEAgLTgyLDYgKzgyLDEwIEBA
IEFkZERvdWJsZSBVOkYsIFVEOkYKICAgICBUbXAsIFRtcAogICAgIEFkZHIsIFRtcAogCitBZGRG
bG9hdCBVOkYsIFVEOkYKKyAgICBUbXAsIFRtcAorICAgIEFkZHIsIFRtcAorCiBTdWIzMiBVOkcs
IFVEOkcKICAgICBUbXAsIFRtcAogICAgIEltbSwgQWRkcgpAQCAtOTcsNiArMTAxLDEwIEBAIFN1
YkRvdWJsZSBVOkYsIFVEOkYKICAgICBUbXAsIFRtcAogICAgIEFkZHIsIFRtcAogCitTdWJGbG9h
dCBVOkYsIFVEOkYKKyAgICBUbXAsIFRtcAorICAgIEFkZHIsIFRtcAorCiBOZWczMiBVRDpHCiAg
ICAgVG1wCiAgICAgQWRkcgpAQCAtMTE4LDEwICsxMjYsMTggQEAgTXVsRG91YmxlIFU6RiwgVUQ6
RgogICAgIFRtcCwgVG1wCiAgICAgQWRkciwgVG1wCiAKK011bEZsb2F0IFU6RiwgVUQ6RgorICAg
IFRtcCwgVG1wCisgICAgQWRkciwgVG1wCisKIERpdkRvdWJsZSBVOkYsIFVEOkYKICAgICBUbXAs
IFRtcAogICAgIEFkZHIsIFRtcAogCitEaXZGbG9hdCBVOkYsIFVEOkYKKyAgICBUbXAsIFRtcAor
ICAgIEFkZHIsIFRtcAorCiBYODZDb252ZXJ0VG9Eb3VibGVXb3JkMzIgVTpHLCBEOkcKICAgICBU
bXAqLCBUbXAqCiAKQEAgLTIwNyw2ICsyMjMsMTAgQEAgU3FydERvdWJsZSBVOkYsIFVEOkYKICAg
ICBUbXAsIFRtcAogICAgIEFkZHIsIFRtcAogCitTcXJ0RmxvYXQgVTpGLCBVRDpGCisgICAgVG1w
LCBUbXAKKyAgICBBZGRyLCBUbXAKKwogQ29udmVydEludDMyVG9Eb3VibGUgVTpHLCBEOkYKICAg
ICBUbXAsIFRtcAogICAgIEFkZHIsIFRtcApAQCAtMjIyLDYgKzI0MiwxNCBAQCBDb3VudExlYWRp
bmdaZXJvczY0IFU6RywgRDpHCiAgICAgVG1wLCBUbXAKICAgICBBZGRyLCBUbXAKIAorQ29udmVy
dERvdWJsZVRvRmxvYXQgVTpGLCBEOkYKKyAgICBUbXAsIFRtcAorICAgIEFkZHIsIFRtcAorCitD
b252ZXJ0RmxvYXRUb0RvdWJsZSBVOkYsIEQ6RgorICAgIFRtcCwgVG1wCisgICAgQWRkciwgVG1w
CisKICMgTm90ZSB0aGF0IE1vdmUgb3BlcmF0ZXMgb3ZlciB0aGUgZnVsbCByZWdpc3RlciBzaXpl
LCB3aGljaCBpcyBlaXRoZXIgMzItYml0IG9yIDY0LWJpdCBkZXBlbmRpbmcgb24KICMgdGhlIHBs
YXRmb3JtLiBJJ20gbm90IGVudGlyZWx5IHN1cmUgdGhhdCB0aGlzIGlzIGEgZ29vZCB0aGluZzsg
aXQgbWlnaHQgYmUgYmV0dGVyIHRvIGp1c3QgaGF2ZSBhCiAjIE1vdmU2NCBpbnN0cnVjdGlvbi4g
T1RPSCwgb3VyIE1hY3JvQXNzZW1ibGVycyBhbHJlYWR5IGhhdmUgdGhpcyBub3Rpb24gb2YgIm1v
dmUoKSIgdGhhdCBiYXNpY2FsbHkKQEAgLTI0OCw2ICsyNzYsMTMgQEAgTW92ZTMyIFU6RywgRDpH
CiBTaWduRXh0ZW5kMzJUb1B0ciBVOkcsIEQ6RwogICAgIFRtcCwgVG1wCiAKK01vdmVGbG9hdCBV
OkYsIEQ6RgorICAgIFRtcCwgVG1wIGFzIG1vdmVEb3VibGUKKyAgICBBZGRyLCBUbXAgYXMgbG9h
ZEZsb2F0CisgICAgSW5kZXgsIFRtcCBhcyBsb2FkRmxvYXQKKyAgICBUbXAsIEFkZHIgYXMgc3Rv
cmVGbG9hdAorICAgIFRtcCwgSW5kZXggYXMgc3RvcmVGbG9hdAorCiBNb3ZlRG91YmxlIFU6Riwg
RDpGCiAgICAgVG1wLCBUbXAKICAgICBBZGRyLCBUbXAgYXMgbG9hZERvdWJsZQpAQCAtMjYyLDEw
ICsyOTcsMTggQEAgTW92ZTY0VG9Eb3VibGUgVTpHLCBEOkYKICAgICBUbXAsIFRtcAogICAgIEFk
ZHIsIFRtcCBhcyBsb2FkRG91YmxlCiAKK01vdmVJbnQzMlRvUGFja2VkIFU6RywgRDpGCisgICAg
VG1wLCBUbXAKKyAgICBBZGRyLCBUbXAgYXMgbG9hZEZsb2F0CisKIE1vdmVEb3VibGVUbzY0IFU6
RiwgRDpHCiAgICAgVG1wLCBUbXAKICAgICBBZGRyLCBUbXAgYXMgbG9hZDY0CiAKK01vdmVQYWNr
ZWRUb0ludDMyIFU6RiwgRDpHCisgICAgVG1wLCBUbXAKKyAgICBBZGRyLCBUbXAgYXMgbG9hZDMy
CisKIExvYWQ4IFU6RywgRDpHCiAgICAgQWRkciwgVG1wCiAgICAgSW5kZXgsIFRtcApAQCAtMzQx
LDYgKzM4NCw5IEBAIEJyYW5jaFRlc3Q2NCBVOkcsIFU6RywgVTpHIC9icmFuY2gKIEJyYW5jaERv
dWJsZSBVOkcsIFU6RiwgVTpGIC9icmFuY2gKICAgICBEb3VibGVDb25kLCBUbXAsIFRtcAogCitC
cmFuY2hGbG9hdCBVOkcsIFU6RiwgVTpGIC9icmFuY2gKKyAgICBEb3VibGVDb25kLCBUbXAsIFRt
cAorCiBCcmFuY2hBZGQzMiBVOkcsIFU6RywgVUQ6RyAvYnJhbmNoCiAgICAgUmVzQ29uZCwgVG1w
LCBUbXAKICAgICBSZXNDb25kLCBJbW0sIFRtcApAQCAtMzk2LDYgKzQ0Miw5IEBAIE1vdmVDb25k
aXRpb25hbGx5VGVzdDY0IFU6RywgVTpHLCBVOkcsIFU6RywgVUQ6RwogTW92ZUNvbmRpdGlvbmFs
bHlEb3VibGUgVTpHLCBVOkYsIFU6RiwgVTpHLCBVRDpHCiAgICAgRG91YmxlQ29uZCwgVG1wLCBU
bXAsIFRtcCwgVG1wCiAKK01vdmVDb25kaXRpb25hbGx5RmxvYXQgVTpHLCBVOkYsIFU6RiwgVTpH
LCBVRDpHCisgICAgRG91YmxlQ29uZCwgVG1wLCBUbXAsIFRtcCwgVG1wCisKIE1vdmVEb3VibGVD
b25kaXRpb25hbGx5MzIgVTpHLCBVOkcsIFU6RywgVTpGLCBVRDpGCiAgICAgUmVsQ29uZCwgVG1w
LCBUbXAsIFRtcCwgVG1wCiAKQEAgLTQxMyw2ICs0NjIsOSBAQCBNb3ZlRG91YmxlQ29uZGl0aW9u
YWxseVRlc3Q2NCBVOkcsIFU6RywgVTpHLCBVOkYsIFVEOkYKIE1vdmVEb3VibGVDb25kaXRpb25h
bGx5RG91YmxlIFU6RywgVTpGLCBVOkYsIFU6RiwgVUQ6RgogICAgIERvdWJsZUNvbmQsIFRtcCwg
VG1wLCBUbXAsIFRtcAogCitNb3ZlRG91YmxlQ29uZGl0aW9uYWxseUZsb2F0IFU6RywgVTpGLCBV
OkYsIFU6RiwgVUQ6RgorICAgIERvdWJsZUNvbmQsIFRtcCwgVG1wLCBUbXAsIFRtcAorCiBKdW1w
IC9icmFuY2gKIAogUmV0IC90ZXJtaW5hbApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL3Rlc3RiMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcApp
bmRleCA0OTBhNDM5NWI1ZjVhNDJmMTc0ZWQwMWI3MjAzNzJlMDE0ZGE4Y2FkLi5kYjBmMDYyYzRj
ZDk0M2Q5YmI2YzUyZGIyNmE4ZGEzN2Y0NzA4MjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvdGVzdGIzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVz
dGIzLmNwcApAQCAtMzA2LDYgKzMwNiwxNDEgQEAgdm9pZCB0ZXN0QWRkSW1tc0RvdWJsZShkb3Vi
bGUgYSwgZG91YmxlIGIpCiAgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3Vi
bGU+KHByb2MpLCBhICsgYikpOwogfQogCit2b2lkIHRlc3RBZGRBcmdGbG9hdChmbG9hdCBhKQor
eworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1
ZSogZmxvYXRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3Qs
IE9yaWdpbigpLCBhcmd1bWVudDMyKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBmbG9hdFZhbHVlLCBmbG9hdFZhbHVlKTsK
KyAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdp
c2VDYXN0LCBPcmlnaW4oKSwgcmVzdWx0KTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZh
bHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisKKworICAgIENIRUNLKGlz
SWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMy
X3Q+KGEpKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEgKyBhKSkpOworfQorCit2b2lkIHRlc3RB
ZGRBcmdzRmxvYXQoZmxvYXQgYSwgZmxvYXQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVu
dDFpbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAor
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBhcmd1bWVudDJpbnQzMiA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMSkpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlMSA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDFpbnQzMik7CisgICAg
VmFsdWUqIGZsb2F0VmFsdWUyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNl
Q2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MmludDMyKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBmbG9hdFZhbHVlMSwgZmxv
YXRWYWx1ZTIpOworICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCByZXN1bHQpOworICAgIHJvb3QtPmFwcGVuZE5l
dzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKKworICAg
IENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9j
YXN0PGludDMyX3Q+KGEpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYikpLCBiaXR3aXNlX2Nhc3Q8
aW50MzJfdD4oYSArIGIpKSk7Cit9CisKK3ZvaWQgdGVzdEFkZEFyZ0ltbUZsb2F0KGZsb2F0IGEs
IGZsb2F0IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQzMiA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkp
OworICAgIFZhbHVlKiBmbG9hdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBC
aXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MzIpOworICAgIFZhbHVlKiBjb25zdFZhbHVl
ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RmxvYXRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpOwor
ICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3Jp
Z2luKCksIGZsb2F0VmFsdWUsIGNvbnN0VmFsdWUpOworICAgIFZhbHVlKiByZXN1bHQzMiA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCByZXN1bHQp
OworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2lu
KCksIHJlc3VsdDMyKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50
MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpKSwgYml0d2lzZV9jYXN0PGludDMy
X3Q+KGEgKyBiKSkpOworfQorCit2b2lkIHRlc3RBZGRJbW1BcmdGbG9hdChmbG9hdCBhLCBmbG9h
dCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MzIgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAg
ICBWYWx1ZSogZmxvYXRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lz
ZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDMyKTsKKyAgICBWYWx1ZSogY29uc3RWYWx1ZSA9IHJv
b3QtPmFwcGVuZE5ldzxDb25zdEZsb2F0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKTsKKyAgICBW
YWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigp
LCBjb25zdFZhbHVlLCBmbG9hdFZhbHVlKTsKKyAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgcmVzdWx0KTsKKyAg
ICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBy
ZXN1bHQzMik7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+
KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihiKSksIGJpdHdpc2VfY2FzdDxpbnQzMl90Pihh
ICsgYikpKTsKK30KKwordm9pZCB0ZXN0QWRkSW1tc0Zsb2F0KGZsb2F0IGEsIGZsb2F0IGIpCit7
CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKKyAgICBWYWx1ZSogY29uc3RWYWx1ZTEgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9h
dFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7CisgICAgVmFsdWUqIGNvbnN0VmFsdWUyID0gcm9v
dC0+YXBwZW5kTmV3PENvbnN0RmxvYXRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpOworICAgIFZh
bHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCks
IGNvbnN0VmFsdWUxLCBjb25zdFZhbHVlMik7CisgICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7Cisg
ICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwg
cmVzdWx0MzIpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90
Pihwcm9jKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEgKyBiKSkpOworfQorCit2b2lkIHRlc3RB
ZGRBcmdGbG9hdFdpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lvbihmbG9hdCBhKQoreworICAgIFBy
b2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Cisg
ICAgVmFsdWUqIGFyZ3VtZW50SW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRy
dW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSogZmxv
YXRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdp
bigpLCBhcmd1bWVudEludDMyKTsKKyAgICBWYWx1ZSogYXNEb3VibGUgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlKTsKKyAg
ICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdp
bigpLCBhc0RvdWJsZSwgYXNEb3VibGUpOworICAgIFZhbHVlKiBmbG9hdFJlc3VsdCA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwgT3JpZ2luKCksIHJlc3VsdCk7
CisgICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3
aXNlQ2FzdCwgT3JpZ2luKCksIGZsb2F0UmVzdWx0KTsKKyAgICByb290LT5hcHBlbmROZXc8Q29u
dHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisKKyAgICBDSEVD
Syhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxp
bnQzMl90PihhKSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhICsgYSkpKTsKK30KKwordm9pZCB0
ZXN0QWRkQXJnc0Zsb2F0V2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uKGZsb2F0IGEsIGZsb2F0
IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQxaW50MzIgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsK
KyAgICBWYWx1ZSogYXJndW1lbnQyaW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICBWYWx1ZSog
ZmxvYXRWYWx1ZTEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBP
cmlnaW4oKSwgYXJndW1lbnQxaW50MzIpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlMiA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDJp
bnQzMik7CisgICAgVmFsdWUqIGFzRG91YmxlMSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGZsb2F0VmFsdWUxKTsKKyAgICBWYWx1ZSogYXNE
b3VibGUyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9hdFRvRG91YmxlLCBPcmln
aW4oKSwgZmxvYXRWYWx1ZTIpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIGFzRG91YmxlMSwgYXNEb3VibGUyKTsKKyAgICBW
YWx1ZSogZmxvYXRSZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERvdWJsZVRv
RmxvYXQsIE9yaWdpbigpLCByZXN1bHQpOworICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBmbG9hdFJlc3VsdCk7
CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwgcmVzdWx0MzIpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQz
Ml90Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSksIGJpdHdpc2VfY2FzdDxpbnQzMl90
PihiKSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhICsgYikpKTsKK30KKwordm9pZCB0ZXN0QWRk
QXJnc0Zsb2F0V2l0aEVmZmVjdGZ1bERvdWJsZUNvbnZlcnNpb24oZmxvYXQgYSwgZmxvYXQgYikK
K3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudDFpbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAg
IFZhbHVlKiBhcmd1bWVudDJpbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1
bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgIFZhbHVlKiBmbG9h
dFZhbHVlMSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdp
bigpLCBhcmd1bWVudDFpbnQzMik7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUyID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MmludDMy
KTsKKyAgICBWYWx1ZSogYXNEb3VibGUxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBG
bG9hdFRvRG91YmxlLCBPcmlnaW4oKSwgZmxvYXRWYWx1ZTEpOworICAgIFZhbHVlKiBhc0RvdWJs
ZTIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigp
LCBmbG9hdFZhbHVlMik7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgYXNEb3VibGUxLCBhc0RvdWJsZTIpOworICAgIFZhbHVl
KiBmbG9hdFJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9h
dCwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgVmFsdWUqIGRvdWJsZUFkZHJlc3MgPSByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMik7CisgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBTdG9yZSwg
T3JpZ2luKCksIHJlc3VsdCwgZG91YmxlQWRkcmVzcyk7CisgICAgVmFsdWUqIHJlc3VsdDMyID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGZsb2F0
UmVzdWx0KTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLCByZXN1bHQzMik7CisKKyAgICBkb3VibGUgZWZmZWN0ID0gMDsKKyAgICBDSEVD
Syhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxp
bnQzMl90PihhKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGIpLCAmZWZmZWN0KSwgYml0d2lzZV9j
YXN0PGludDMyX3Q+KGEgKyBiKSkpOworICAgIENIRUNLKGlzSWRlbnRpY2FsKGVmZmVjdCwgc3Rh
dGljX2Nhc3Q8ZG91YmxlPihhKSArIHN0YXRpY19jYXN0PGRvdWJsZT4oYikpKTsKK30KKwogdm9p
ZCB0ZXN0TXVsQXJnKGludCBhKQogewogICAgIFByb2NlZHVyZSBwcm9jOwpAQCAtNTA5LDYgKzY0
NCwxNDEgQEAgdm9pZCB0ZXN0TXVsSW1tc0RvdWJsZShkb3VibGUgYSwgZG91YmxlIGIpCiAgICAg
Q0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MpLCBhICogYikpOwog
fQogCit2b2lkIHRlc3RNdWxBcmdGbG9hdChmbG9hdCBhKQoreworICAgIFByb2NlZHVyZSBwcm9j
OworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFy
Z3VtZW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwK
KyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1ZSA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDMy
KTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWws
IE9yaWdpbigpLCBmbG9hdFZhbHVlLCBmbG9hdFZhbHVlKTsKKyAgICBWYWx1ZSogcmVzdWx0MzIg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgcmVz
dWx0KTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLCByZXN1bHQzMik7CisKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRS
dW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpKSwgYml0d2lzZV9jYXN0
PGludDMyX3Q+KGEgKiBhKSkpOworfQorCit2b2lkIHRlc3RNdWxBcmdzRmxvYXQoZmxvYXQgYSwg
ZmxvYXQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudDFpbnQzMiA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCkpOworICAgIFZhbHVlKiBhcmd1bWVudDJpbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgIFZh
bHVlKiBmbG9hdFZhbHVlMSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNh
c3QsIE9yaWdpbigpLCBhcmd1bWVudDFpbnQzMik7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUyID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3Vt
ZW50MmludDMyKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBNdWwsIE9yaWdpbigpLCBmbG9hdFZhbHVlMSwgZmxvYXRWYWx1ZTIpOworICAgIFZhbHVl
KiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9y
aWdpbigpLCByZXN1bHQpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2Ms
IFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNv
bXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpLCBiaXR3
aXNlX2Nhc3Q8aW50MzJfdD4oYikpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSAqIGIpKSk7Cit9
CisKK3ZvaWQgdGVzdE11bEFyZ0ltbUZsb2F0KGZsb2F0IGEsIGZsb2F0IGIpCit7CisgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAg
ICBWYWx1ZSogYXJndW1lbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMs
IE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBmbG9hdFZh
bHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCks
IGFyZ3VtZW50MzIpOworICAgIFZhbHVlKiBjb25zdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENv
bnN0RmxvYXRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpOworICAgIFZhbHVlKiByZXN1bHQgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE11bCwgT3JpZ2luKCksIGZsb2F0VmFsdWUsIGNv
bnN0VmFsdWUpOworICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCByZXN1bHQpOworICAgIHJvb3QtPmFwcGVuZE5l
dzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKKworICAg
IENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9j
YXN0PGludDMyX3Q+KGEpKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEgKiBiKSkpOworfQorCit2
b2lkIHRlc3RNdWxJbW1BcmdGbG9hdChmbG9hdCBhLCBmbG9hdCBiKQoreworICAgIFByb2NlZHVy
ZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFs
dWUqIGFyZ3VtZW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmln
aW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1ZSA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1
bWVudDMyKTsKKyAgICBWYWx1ZSogY29uc3RWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdEZs
b2F0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCBjb25zdFZhbHVlLCBmbG9hdFZh
bHVlKTsKKyAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgcmVzdWx0KTsKKyAgICByb290LT5hcHBlbmROZXc8Q29u
dHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisKKyAgICBDSEVD
Syhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxp
bnQzMl90PihiKSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhICogYikpKTsKK30KKwordm9pZCB0
ZXN0TXVsSW1tc0Zsb2F0KGZsb2F0IGEsIGZsb2F0IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7
CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogY29u
c3RWYWx1ZTEgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgYSk7CisgICAgVmFsdWUqIGNvbnN0VmFsdWUyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0Rmxv
YXRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIE11bCwgT3JpZ2luKCksIGNvbnN0VmFsdWUxLCBjb25zdFZh
bHVlMik7CisgICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENv
bnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0MzIpOworCisgICAgQ0hF
Q0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jKSwgYml0d2lzZV9jYXN0
PGludDMyX3Q+KGEgKiBiKSkpOworfQorCit2b2lkIHRlc3RNdWxBcmdGbG9hdFdpdGhVc2VsZXNz
RG91YmxlQ29udmVyc2lvbihmbG9hdCBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50SW50
MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1ZSA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudEludDMyKTsK
KyAgICBWYWx1ZSogYXNEb3VibGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0
VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCBhc0RvdWJsZSwgYXNEb3Vi
bGUpOworICAgIFZhbHVlKiBmbG9hdFJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgRG91YmxlVG9GbG9hdCwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgVmFsdWUqIHJlc3VsdDMy
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGZs
b2F0UmVzdWx0KTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxl
QW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSksIGJpdHdpc2Vf
Y2FzdDxpbnQzMl90PihhICogYSkpKTsKK30KKwordm9pZCB0ZXN0TXVsQXJnc0Zsb2F0V2l0aFVz
ZWxlc3NEb3VibGVDb252ZXJzaW9uKGZsb2F0IGEsIGZsb2F0IGIpCit7CisgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1
ZSogYXJndW1lbnQxaW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBP
cmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSogYXJndW1lbnQy
aW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1ZTEgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQxaW50
MzIpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDJpbnQzMik7CisgICAgVmFsdWUqIGFz
RG91YmxlMSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3Jp
Z2luKCksIGZsb2F0VmFsdWUxKTsKKyAgICBWYWx1ZSogYXNEb3VibGUyID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBGbG9hdFRvRG91YmxlLCBPcmlnaW4oKSwgZmxvYXRWYWx1ZTIpOwor
ICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE11bCwgT3Jp
Z2luKCksIGFzRG91YmxlMSwgYXNEb3VibGUyKTsKKyAgICBWYWx1ZSogZmxvYXRSZXN1bHQgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERvdWJsZVRvRmxvYXQsIE9yaWdpbigpLCByZXN1
bHQpOworICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
Qml0d2lzZUNhc3QsIE9yaWdpbigpLCBmbG9hdFJlc3VsdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3
PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0MzIpOworCisgICAg
Q0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3aXNlX2Nh
c3Q8aW50MzJfdD4oYSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihiKSksIGJpdHdpc2VfY2FzdDxp
bnQzMl90PihhICogYikpKTsKK30KKwordm9pZCB0ZXN0TXVsQXJnc0Zsb2F0V2l0aEVmZmVjdGZ1
bERvdWJsZUNvbnZlcnNpb24oZmxvYXQgYSwgZmxvYXQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJv
YzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBh
cmd1bWVudDFpbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdp
bigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBhcmd1bWVudDJpbnQz
MiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAg
ICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMSkpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlMSA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDFpbnQzMik7
CisgICAgVmFsdWUqIGZsb2F0VmFsdWUyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBC
aXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MmludDMyKTsKKyAgICBWYWx1ZSogYXNEb3Vi
bGUxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9hdFRvRG91YmxlLCBPcmlnaW4o
KSwgZmxvYXRWYWx1ZTEpOworICAgIFZhbHVlKiBhc0RvdWJsZTIgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlMik7CisgICAg
VmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4o
KSwgYXNEb3VibGUxLCBhc0RvdWJsZTIpOworICAgIFZhbHVlKiBmbG9hdFJlc3VsdCA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwgT3JpZ2luKCksIHJlc3VsdCk7
CisgICAgVmFsdWUqIGRvdWJsZU11bHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CisgICAgcm9vdC0+
YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBTdG9yZSwgT3JpZ2luKCksIHJlc3VsdCwgZG91
YmxlTXVscmVzcyk7CisgICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGZsb2F0UmVzdWx0KTsKKyAgICByb290LT5h
cHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7
CisKKyAgICBkb3VibGUgZWZmZWN0ID0gMDsKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxl
QW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSwgYml0d2lzZV9j
YXN0PGludDMyX3Q+KGIpLCAmZWZmZWN0KSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEgKiBiKSkp
OworICAgIENIRUNLKGlzSWRlbnRpY2FsKGVmZmVjdCwgc3RhdGljX2Nhc3Q8ZG91YmxlPihhKSAq
IHN0YXRpY19jYXN0PGRvdWJsZT4oYikpKTsKK30KKwogdm9pZCB0ZXN0RGl2QXJnRG91YmxlKGRv
dWJsZSBhKQogewogICAgIFByb2NlZHVyZSBwcm9jOwpAQCAtNTczLDYgKzg0MywxNDEgQEAgdm9p
ZCB0ZXN0RGl2SW1tc0RvdWJsZShkb3VibGUgYSwgZG91YmxlIGIpCiAgICAgQ0hFQ0soaXNJZGVu
dGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MpLCBhIC8gYikpOwogfQogCit2b2lkIHRl
c3REaXZBcmdGbG9hdChmbG9hdCBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MzIgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDMyKTsKKyAgICBWYWx1
ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEaXYsIE9yaWdpbigpLCBm
bG9hdFZhbHVlLCBmbG9hdFZhbHVlKTsKKyAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgcmVzdWx0KTsKKyAgICBy
b290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1
bHQzMik7CisKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4o
cHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEg
LyBhKSkpOworfQorCit2b2lkIHRlc3REaXZBcmdzRmxvYXQoZmxvYXQgYSwgZmxvYXQgYikKK3sK
KyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOworICAgIFZhbHVlKiBhcmd1bWVudDFpbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZh
bHVlKiBhcmd1bWVudDJpbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMs
IE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgIFZhbHVlKiBmbG9hdFZh
bHVlMSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigp
LCBhcmd1bWVudDFpbnQzMik7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUyID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MmludDMyKTsK
KyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEaXYsIE9y
aWdpbigpLCBmbG9hdFZhbHVlMSwgZmxvYXRWYWx1ZTIpOworICAgIFZhbHVlKiByZXN1bHQzMiA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCByZXN1
bHQpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3Jp
Z2luKCksIHJlc3VsdDMyKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48
aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpLCBiaXR3aXNlX2Nhc3Q8aW50
MzJfdD4oYikpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSAvIGIpKSk7Cit9CisKK3ZvaWQgdGVz
dERpdkFyZ0ltbUZsb2F0KGZsb2F0IGEsIGZsb2F0IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7
CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJn
dW1lbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAor
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MzIp
OworICAgIFZhbHVlKiBjb25zdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RmxvYXRWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIGIpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIERpdiwgT3JpZ2luKCksIGZsb2F0VmFsdWUsIGNvbnN0VmFsdWUpOwor
ICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lz
ZUNhc3QsIE9yaWdpbigpLCByZXN1bHQpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFs
dWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKKworICAgIENIRUNLKGlzSWRl
bnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+
KGEpKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEgLyBiKSkpOworfQorCit2b2lkIHRlc3REaXZJ
bW1BcmdGbG9hdChmbG9hdCBhLCBmbG9hdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50
MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1ZSA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDMyKTsKKyAg
ICBWYWx1ZSogY29uc3RWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdEZsb2F0VmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBhKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBEaXYsIE9yaWdpbigpLCBjb25zdFZhbHVlLCBmbG9hdFZhbHVlKTsKKyAgICBW
YWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0
LCBPcmlnaW4oKSwgcmVzdWx0KTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisKKyAgICBDSEVDSyhpc0lkZW50aWNh
bChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihiKSks
IGJpdHdpc2VfY2FzdDxpbnQzMl90PihhIC8gYikpKTsKK30KKwordm9pZCB0ZXN0RGl2SW1tc0Zs
b2F0KGZsb2F0IGEsIGZsb2F0IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogY29uc3RWYWx1ZTEgPSBy
b290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7CisgICAg
VmFsdWUqIGNvbnN0VmFsdWUyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RmxvYXRWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIGIpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIERpdiwgT3JpZ2luKCksIGNvbnN0VmFsdWUxLCBjb25zdFZhbHVlMik7CisgICAg
VmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2Fz
dCwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4o
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0MzIpOworCisgICAgQ0hFQ0soaXNJZGVudGlj
YWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEg
LyBiKSkpOworfQorCit2b2lkIHRlc3REaXZBcmdGbG9hdFdpdGhVc2VsZXNzRG91YmxlQ29udmVy
c2lvbihmbG9hdCBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50SW50MzIgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudEludDMyKTsKKyAgICBWYWx1ZSog
YXNEb3VibGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9y
aWdpbigpLCBmbG9hdFZhbHVlKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBEaXYsIE9yaWdpbigpLCBhc0RvdWJsZSwgYXNEb3VibGUpOworICAgIFZh
bHVlKiBmbG9hdFJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91YmxlVG9G
bG9hdCwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGZsb2F0UmVzdWx0KTsK
KyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LCByZXN1bHQzMik7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMy
X3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSksIGJpdHdpc2VfY2FzdDxpbnQzMl90
PihhIC8gYSkpKTsKK30KKwordm9pZCB0ZXN0RGl2QXJnc0Zsb2F0V2l0aFVzZWxlc3NEb3VibGVD
b252ZXJzaW9uKGZsb2F0IGEsIGZsb2F0IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQx
aW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSogYXJndW1lbnQyaW50MzIgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjEpKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1ZTEgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQxaW50MzIpOworICAgIFZh
bHVlKiBmbG9hdFZhbHVlMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNh
c3QsIE9yaWdpbigpLCBhcmd1bWVudDJpbnQzMik7CisgICAgVmFsdWUqIGFzRG91YmxlMSA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGZsb2F0
VmFsdWUxKTsKKyAgICBWYWx1ZSogYXNEb3VibGUyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBGbG9hdFRvRG91YmxlLCBPcmlnaW4oKSwgZmxvYXRWYWx1ZTIpOworICAgIFZhbHVlKiBy
ZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERpdiwgT3JpZ2luKCksIGFzRG91
YmxlMSwgYXNEb3VibGUyKTsKKyAgICBWYWx1ZSogZmxvYXRSZXN1bHQgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIERvdWJsZVRvRmxvYXQsIE9yaWdpbigpLCByZXN1bHQpOworICAgIFZh
bHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3Qs
IE9yaWdpbigpLCBmbG9hdFJlc3VsdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1
ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0MzIpOworCisgICAgQ0hFQ0soaXNJZGVu
dGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4o
YSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihiKSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhIC8g
YikpKTsKK30KKwordm9pZCB0ZXN0RGl2QXJnc0Zsb2F0V2l0aEVmZmVjdGZ1bERvdWJsZUNvbnZl
cnNpb24oZmxvYXQgYSwgZmxvYXQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNp
Y0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudDFpbnQz
MiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAg
ICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBhcmd1bWVudDJpbnQzMiA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMSkpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlMSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDFpbnQzMik7CisgICAgVmFsdWUq
IGZsb2F0VmFsdWUyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwg
T3JpZ2luKCksIGFyZ3VtZW50MmludDMyKTsKKyAgICBWYWx1ZSogYXNEb3VibGUxID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9hdFRvRG91YmxlLCBPcmlnaW4oKSwgZmxvYXRWYWx1
ZTEpOworICAgIFZhbHVlKiBhc0RvdWJsZTIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlMik7CisgICAgVmFsdWUqIHJlc3Vs
dCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRGl2LCBPcmlnaW4oKSwgYXNEb3VibGUx
LCBhc0RvdWJsZTIpOworICAgIFZhbHVlKiBmbG9hdFJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgVmFsdWUq
IGRvdWJsZURpdnJlc3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CisgICAgcm9vdC0+YXBwZW5kTmV3PE1l
bW9yeVZhbHVlPihwcm9jLCBTdG9yZSwgT3JpZ2luKCksIHJlc3VsdCwgZG91YmxlRGl2cmVzcyk7
CisgICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3
aXNlQ2FzdCwgT3JpZ2luKCksIGZsb2F0UmVzdWx0KTsKKyAgICByb290LT5hcHBlbmROZXc8Q29u
dHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisKKyAgICBkb3Vi
bGUgZWZmZWN0ID0gMDsKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMy
X3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+
KGIpLCAmZWZmZWN0KSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEgLyBiKSkpOworICAgIENIRUNL
KGlzSWRlbnRpY2FsKGVmZmVjdCwgc3RhdGljX2Nhc3Q8ZG91YmxlPihhKSAvIHN0YXRpY19jYXN0
PGRvdWJsZT4oYikpKTsKK30KKwogdm9pZCB0ZXN0U3ViQXJnKGludCBhKQogewogICAgIFByb2Nl
ZHVyZSBwcm9jOwpAQCAtNzcyLDYgKzExNzcsMTQxIEBAIHZvaWQgdGVzdFN1YkltbXNEb3VibGUo
ZG91YmxlIGEsIGRvdWJsZSBiKQogICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48
ZG91YmxlPihwcm9jKSwgYSAtIGIpKTsKIH0KIAordm9pZCB0ZXN0U3ViQXJnRmxvYXQoZmxvYXQg
YSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5h
ZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAg
VmFsdWUqIGZsb2F0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VD
YXN0LCBPcmlnaW4oKSwgYXJndW1lbnQzMik7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwgZmxvYXRWYWx1ZSwgZmxvYXRWYWx1
ZSk7CisgICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBC
aXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRy
b2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0MzIpOworCisKKyAgICBDSEVD
Syhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxp
bnQzMl90PihhKSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhIC0gYSkpKTsKK30KKwordm9pZCB0
ZXN0U3ViQXJnc0Zsb2F0KGZsb2F0IGEsIGZsb2F0IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7
CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJn
dW1lbnQxaW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4o
KSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSogYXJndW1lbnQyaW50MzIg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjEpKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1ZTEgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQxaW50MzIpOwor
ICAgIFZhbHVlKiBmbG9hdFZhbHVlMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0
d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDJpbnQzMik7CisgICAgVmFsdWUqIHJlc3VsdCA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwgZmxvYXRWYWx1ZTEs
IGZsb2F0VmFsdWUyKTsKKyAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgcmVzdWx0KTsKKyAgICByb290LT5hcHBl
bmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisK
KyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdp
c2VfY2FzdDxpbnQzMl90PihhKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGIpKSwgYml0d2lzZV9j
YXN0PGludDMyX3Q+KGEgLSBiKSkpOworfQorCit2b2lkIHRlc3RTdWJBcmdJbW1GbG9hdChmbG9h
dCBhLCBmbG9hdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MzIgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDMyKTsKKyAgICBWYWx1ZSogY29uc3RW
YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdEZsb2F0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBi
KTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIs
IE9yaWdpbigpLCBmbG9hdFZhbHVlLCBjb25zdFZhbHVlKTsKKyAgICBWYWx1ZSogcmVzdWx0MzIg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgcmVz
dWx0KTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLCByZXN1bHQzMik7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVu
PGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSksIGJpdHdpc2VfY2FzdDxp
bnQzMl90PihhIC0gYikpKTsKK30KKwordm9pZCB0ZXN0U3ViSW1tQXJnRmxvYXQoZmxvYXQgYSwg
ZmxvYXQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudDMyID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7
CisgICAgVmFsdWUqIGZsb2F0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJp
dHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQzMik7CisgICAgVmFsdWUqIGNvbnN0VmFsdWUg
PSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7Cisg
ICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmln
aW4oKSwgY29uc3RWYWx1ZSwgZmxvYXRWYWx1ZSk7CisgICAgVmFsdWUqIHJlc3VsdDMyID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7
CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwgcmVzdWx0MzIpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQz
Ml90Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYikpLCBiaXR3aXNlX2Nhc3Q8aW50MzJf
dD4oYSAtIGIpKSk7Cit9CisKK3ZvaWQgdGVzdFN1YkltbXNGbG9hdChmbG9hdCBhLCBmbG9hdCBi
KQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7CisgICAgVmFsdWUqIGNvbnN0VmFsdWUxID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0
RmxvYXRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpOworICAgIFZhbHVlKiBjb25zdFZhbHVlMiA9
IHJvb3QtPmFwcGVuZE5ldzxDb25zdEZsb2F0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKTsKKyAg
ICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdp
bigpLCBjb25zdFZhbHVlMSwgY29uc3RWYWx1ZTIpOworICAgIFZhbHVlKiByZXN1bHQzMiA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCByZXN1bHQp
OworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2lu
KCksIHJlc3VsdDMyKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50
MzJfdD4ocHJvYyksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhIC0gYikpKTsKK30KKwordm9pZCB0
ZXN0U3ViQXJnRmxvYXRXaXRoVXNlbGVzc0RvdWJsZUNvbnZlcnNpb24oZmxvYXQgYSkKK3sKKyAg
ICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OworICAgIFZhbHVlKiBhcmd1bWVudEludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUq
IGZsb2F0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBP
cmlnaW4oKSwgYXJndW1lbnRJbnQzMik7CisgICAgVmFsdWUqIGFzRG91YmxlID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9hdFRvRG91YmxlLCBPcmlnaW4oKSwgZmxvYXRWYWx1ZSk7
CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBP
cmlnaW4oKSwgYXNEb3VibGUsIGFzRG91YmxlKTsKKyAgICBWYWx1ZSogZmxvYXRSZXN1bHQgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERvdWJsZVRvRmxvYXQsIE9yaWdpbigpLCByZXN1
bHQpOworICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
Qml0d2lzZUNhc3QsIE9yaWdpbigpLCBmbG9hdFJlc3VsdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3
PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0MzIpOworCisgICAg
Q0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3aXNlX2Nh
c3Q8aW50MzJfdD4oYSkpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSAtIGEpKSk7Cit9CisKK3Zv
aWQgdGVzdFN1YkFyZ3NGbG9hdFdpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lvbihmbG9hdCBhLCBm
bG9hdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MWludDMyID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KSk7CisgICAgVmFsdWUqIGFyZ3VtZW50MmludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgVmFs
dWUqIGZsb2F0VmFsdWUxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2Fz
dCwgT3JpZ2luKCksIGFyZ3VtZW50MWludDMyKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1ZTIgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1l
bnQyaW50MzIpOworICAgIFZhbHVlKiBhc0RvdWJsZTEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlMSk7CisgICAgVmFsdWUq
IGFzRG91YmxlMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwg
T3JpZ2luKCksIGZsb2F0VmFsdWUyKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLCBhc0RvdWJsZTEsIGFzRG91YmxlMik7Cisg
ICAgVmFsdWUqIGZsb2F0UmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3Vi
bGVUb0Zsb2F0LCBPcmlnaW4oKSwgcmVzdWx0KTsKKyAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgZmxvYXRSZXN1
bHQpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3Jp
Z2luKCksIHJlc3VsdDMyKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48
aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpLCBiaXR3aXNlX2Nhc3Q8aW50
MzJfdD4oYikpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSAtIGIpKSk7Cit9CisKK3ZvaWQgdGVz
dFN1YkFyZ3NGbG9hdFdpdGhFZmZlY3RmdWxEb3VibGVDb252ZXJzaW9uKGZsb2F0IGEsIGZsb2F0
IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQxaW50MzIgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsK
KyAgICBWYWx1ZSogYXJndW1lbnQyaW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICBWYWx1ZSog
ZmxvYXRWYWx1ZTEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBP
cmlnaW4oKSwgYXJndW1lbnQxaW50MzIpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlMiA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDJp
bnQzMik7CisgICAgVmFsdWUqIGFzRG91YmxlMSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGZsb2F0VmFsdWUxKTsKKyAgICBWYWx1ZSogYXNE
b3VibGUyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9hdFRvRG91YmxlLCBPcmln
aW4oKSwgZmxvYXRWYWx1ZTIpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksIGFzRG91YmxlMSwgYXNEb3VibGUyKTsKKyAgICBW
YWx1ZSogZmxvYXRSZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERvdWJsZVRv
RmxvYXQsIE9yaWdpbigpLCByZXN1bHQpOworICAgIFZhbHVlKiBkb3VibGVTdWJyZXNzID0gcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjIpOworICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgU3Rv
cmUsIE9yaWdpbigpLCByZXN1bHQsIGRvdWJsZVN1YnJlc3MpOworICAgIFZhbHVlKiByZXN1bHQz
MiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBm
bG9hdFJlc3VsdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwgcmVzdWx0MzIpOworCisgICAgZG91YmxlIGVmZmVjdCA9IDA7CisgICAg
Q0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3aXNlX2Nh
c3Q8aW50MzJfdD4oYSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihiKSwgJmVmZmVjdCksIGJpdHdp
c2VfY2FzdDxpbnQzMl90PihhIC0gYikpKTsKKyAgICBDSEVDSyhpc0lkZW50aWNhbChlZmZlY3Qs
IHN0YXRpY19jYXN0PGRvdWJsZT4oYSkgLSBzdGF0aWNfY2FzdDxkb3VibGU+KGIpKSk7Cit9CisK
IHZvaWQgdGVzdEJpdEFuZEFyZ3MoaW50NjRfdCBhLCBpbnQ2NF90IGIpCiB7CiAgICAgUHJvY2Vk
dXJlIHByb2M7CkBAIC0xOTY2LDE2MCArMjUwNiw0NDAgQEAgdm9pZCB0ZXN0Q2x6QXJnMzIoaW50
MzJfdCBhKQogICAgIENIRUNLKGNvbXBpbGVBbmRSdW48dW5zaWduZWQ+KHByb2MsIGEpID09IGNv
dW50TGVhZGluZ1plcm8oYSkpOwogfQogCi12b2lkIHRlc3RDbHpNZW0zMihpbnQzMl90IGEpCit2
b2lkIHRlc3RDbHpNZW0zMihpbnQzMl90IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYWRkcmVzcyA9
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKKyAgICBNZW1vcnlWYWx1ZSogdmFsdWUgPSByb290LT5hcHBlbmRO
ZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwgYWRkcmVzcyk7Cisg
ICAgVmFsdWUqIGNselZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBDbHosIE9y
aWdpbigpLCB2YWx1ZSk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwgY2x6VmFsdWUpOworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48dW5z
aWduZWQ+KHByb2MsICZhKSA9PSBjb3VudExlYWRpbmdaZXJvKGEpKTsKK30KKwordm9pZCB0ZXN0
U3FydEFyZyhkb3VibGUgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFs
dWU+KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgU3FydCwgT3JpZ2luKCksCisgICAgICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBGUFJJbmZvOjphcmd1bWVudEZQUjApKSk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21w
aWxlQW5kUnVuPGRvdWJsZT4ocHJvYywgYSksIHNxcnQoYSkpKTsKK30KKwordm9pZCB0ZXN0U3Fy
dEltbShkb3VibGUgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVu
ZE5ldzxDb25zdERvdWJsZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7CisgICAgcm9vdC0+YXBw
ZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3FydCwgT3JpZ2luKCksIGFyZ3Vt
ZW50KSk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJv
YyksIHNxcnQoYSkpKTsKK30KKwordm9pZCB0ZXN0U3FydE1lbShkb3VibGUgYSkKK3sKKyAgICBQ
cm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwor
ICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIE1lbW9yeVZhbHVlKiBs
b2FkRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBEb3Vi
bGUsIE9yaWdpbigpLCBhZGRyZXNzKTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVl
PigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBTcXJ0LCBPcmlnaW4oKSwgbG9hZERvdWJsZSkpOworCisgICAgQ0hF
Q0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsICZhKSwgc3FydChhKSkp
OworfQorCit2b2lkIHRlc3RTcXJ0QXJnKGZsb2F0IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7
CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJn
dW1lbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAor
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDMyKTsK
KyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTcXJ0LCBP
cmlnaW4oKSwgYXJndW1lbnQpOworICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCByZXN1bHQpOworICAgIHJvb3Qt
PmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMy
KTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywg
Yml0d2lzZV9jYXN0PGludDMyX3Q+KGEpKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KHN0YXRpY19j
YXN0PGZsb2F0PihzcXJ0KGEpKSkpKTsKK30KKwordm9pZCB0ZXN0U3FydEltbShmbG9hdCBhKQor
eworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RmxvYXRW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIFNxcnQsIE9yaWdpbigpLCBhcmd1bWVudCk7CisgICAgVmFsdWUq
IHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3Jp
Z2luKCksIHJlc3VsdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0MzIpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29t
cGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkpLCBiaXR3
aXNlX2Nhc3Q8aW50MzJfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNxcnQoYSkpKSkpOworfQorCit2
b2lkIHRlc3RTcXJ0TWVtKGZsb2F0IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYWRkcmVzcyA9IHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKTsKKyAgICBNZW1vcnlWYWx1ZSogbG9hZEZsb2F0ID0gcm9vdC0+YXBwZW5k
TmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBGbG9hdCwgT3JpZ2luKCksIGFkZHJlc3MpOwor
ICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNxcnQsIE9y
aWdpbigpLCBsb2FkRmxvYXQpOworICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCByZXN1bHQpOworICAgIHJvb3Qt
PmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMy
KTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywg
JmEpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNxcnQoYSkpKSkp
OworfQorCit2b2lkIHRlc3RTcXJ0QXJnV2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uKGZsb2F0
IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAg
IFZhbHVlKiBmbG9hdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNl
Q2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MzIpOworICAgIFZhbHVlKiBhc0RvdWJsZSA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGZsb2F0VmFs
dWUpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNx
cnQsIE9yaWdpbigpLCBhc0RvdWJsZSk7CisgICAgVmFsdWUqIGZsb2F0UmVzdWx0ID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zsb2F0LCBPcmlnaW4oKSwgcmVzdWx0KTsK
KyAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdp
c2VDYXN0LCBPcmlnaW4oKSwgZmxvYXRSZXN1bHQpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250
cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKKworICAgIENIRUNL
KGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGlu
dDMyX3Q+KGEpKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KHN0YXRpY19jYXN0PGZsb2F0PihzcXJ0
KGEpKSkpKTsKK30KKwordm9pZCB0ZXN0U3FydEFyZ1dpdGhFZmZlY3RmdWxEb3VibGVDb252ZXJz
aW9uKGZsb2F0IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQzMiA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCkpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MzIpOworICAgIFZhbHVlKiBhc0RvdWJs
ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCks
IGZsb2F0VmFsdWUpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIFNxcnQsIE9yaWdpbigpLCBhc0RvdWJsZSk7CisgICAgVmFsdWUqIGZsb2F0UmVzdWx0
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zsb2F0LCBPcmlnaW4oKSwg
cmVzdWx0KTsKKyAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgZmxvYXRSZXN1bHQpOworICAgIFZhbHVlKiBkb3Vi
bGVBZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOworICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlW
YWx1ZT4ocHJvYywgU3RvcmUsIE9yaWdpbigpLCByZXN1bHQsIGRvdWJsZUFkZHJlc3MpOworICAg
IHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJl
c3VsdDMyKTsKKworICAgIGRvdWJsZSBlZmZlY3QgPSAwOworICAgIENIRUNLKGlzSWRlbnRpY2Fs
KGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpLCAm
ZWZmZWN0KSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KHN0YXRpY19jYXN0PGZsb2F0PihzcXJ0KGEp
KSkpKTsKKyAgICBDSEVDSyhpc0lkZW50aWNhbChlZmZlY3QsIHNxcnQoYSkpKTsKK30KKwordm9p
ZCB0ZXN0RG91YmxlQXJnVG9JbnQ2NEJpdHdpc2VDYXN0KGRvdWJsZSB2YWx1ZSkKK3sKKyAgICBQ
cm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwor
ICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKKworICAgIHJvb3QtPmFwcGVu
ZE5ldzxDb250cm9sVmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQml0d2lzZUNh
c3QsIE9yaWdpbigpLCBhcmd1bWVudCkpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGls
ZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCB2YWx1ZSksIGJpdHdpc2VfY2FzdDxpbnQ2NF90Pih2YWx1
ZSkpKTsKK30KKwordm9pZCB0ZXN0RG91YmxlSW1tVG9JbnQ2NEJpdHdpc2VDYXN0KGRvdWJsZSB2
YWx1ZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxDb25z
dERvdWJsZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdmFsdWUpOworCisgICAgcm9vdC0+YXBwZW5k
TmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXR3aXNlQ2Fz
dCwgT3JpZ2luKCksIGFyZ3VtZW50KSk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxl
QW5kUnVuPGludDY0X3Q+KHByb2MpLCBiaXR3aXNlX2Nhc3Q8aW50NjRfdD4odmFsdWUpKSk7Cit9
CisKK3ZvaWQgdGVzdFR3b0JpdHdpc2VDYXN0T25Eb3VibGUoZG91YmxlIHZhbHVlKQoreworICAg
IFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
CisgICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOworICAgIFZhbHVlKiBmaXJz
dCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBh
cmd1bWVudCk7CisgICAgVmFsdWUqIHNlY29uZCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBmaXJzdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENv
bnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgc2Vjb25kKTsKKworICAgIENIRUNL
KGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCB2YWx1ZSksIHZhbHVlKSk7
Cit9CisKK3ZvaWQgdGVzdEJpdHdpc2VDYXN0T25Eb3VibGVJbk1lbW9yeShkb3VibGUgdmFsdWUp
Cit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKKyAgICBWYWx1ZSogYWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBNZW1v
cnlWYWx1ZSogbG9hZERvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywg
TG9hZCwgRG91YmxlLCBPcmlnaW4oKSwgYWRkcmVzcyk7CisgICAgVmFsdWUqIGNhc3QgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgbG9hZERvdWJs
ZSk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmln
aW4oKSwgY2FzdCk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDY0
X3Q+KHByb2MsICZ2YWx1ZSksIGJpdHdpc2VfY2FzdDxpbnQ2NF90Pih2YWx1ZSkpKTsKK30KKwor
dm9pZCB0ZXN0SW50NjRCQXJnVG9Eb3VibGVCaXR3aXNlQ2FzdChpbnQ2NF90IHZhbHVlKQorewor
ICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworCisgICAgcm9vdC0+
YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCks
CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXR3
aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50KSk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChj
b21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYywgdmFsdWUpLCBiaXR3aXNlX2Nhc3Q8ZG91YmxlPih2
YWx1ZSkpKTsKK30KKwordm9pZCB0ZXN0SW50NjRCSW1tVG9Eb3VibGVCaXR3aXNlQ2FzdChpbnQ2
NF90IHZhbHVlKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3Qg
PSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3
PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHZhbHVlKTsKKworICAgIHJvb3QtPmFwcGVu
ZE5ldzxDb250cm9sVmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQml0d2lzZUNh
c3QsIE9yaWdpbigpLCBhcmd1bWVudCkpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGls
ZUFuZFJ1bjxkb3VibGU+KHByb2MpLCBiaXR3aXNlX2Nhc3Q8ZG91YmxlPih2YWx1ZSkpKTsKK30K
Kwordm9pZCB0ZXN0VHdvQml0d2lzZUNhc3RPbkludDY0KGludDY0X3QgdmFsdWUpCit7CisgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KyAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgVmFsdWUqIGZpcnN0
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFy
Z3VtZW50KTsKKyAgICBWYWx1ZSogc2Vjb25kID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGZpcnN0KTsKKyAgICByb290LT5hcHBlbmROZXc8Q29u
dHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBzZWNvbmQpOworCisgICAgQ0hFQ0so
aXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCB2YWx1ZSksIHZhbHVlKSk7
Cit9CisKK3ZvaWQgdGVzdEJpdHdpc2VDYXN0T25JbnQ2NEluTWVtb3J5KGludDY0X3QgdmFsdWUp
Cit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKKyAgICBWYWx1ZSogYWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBNZW1v
cnlWYWx1ZSogbG9hZERvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywg
TG9hZCwgSW50NjQsIE9yaWdpbigpLCBhZGRyZXNzKTsKKyAgICBWYWx1ZSogY2FzdCA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBsb2FkRG91Ymxl
KTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLCBjYXN0KTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91Ymxl
Pihwcm9jLCAmdmFsdWUpLCBiaXR3aXNlX2Nhc3Q8ZG91YmxlPih2YWx1ZSkpKTsKK30KKwordm9p
ZCB0ZXN0RmxvYXRJbW1Ub0ludDMyQml0d2lzZUNhc3QoZmxvYXQgdmFsdWUpCit7CisgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAg
ICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgdmFsdWUpOworCisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4o
CisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3Vt
ZW50KSk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHBy
b2MpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4odmFsdWUpKSk7Cit9CisKK3ZvaWQgdGVzdEJpdHdp
c2VDYXN0T25GbG9hdEluTWVtb3J5KGZsb2F0IHZhbHVlKQogewogICAgIFByb2NlZHVyZSBwcm9j
OwogICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CiAgICAgVmFsdWUqIGFk
ZHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgTWVtb3J5VmFsdWUqIHZhbHVlID0gcm9vdC0+
YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksIGFkZHJl
c3MpOwotICAgIFZhbHVlKiBjbHpWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
Q2x6LCBPcmlnaW4oKSwgdmFsdWUpOwotICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+
KHByb2MsIFJldHVybiwgT3JpZ2luKCksIGNselZhbHVlKTsKLSAgICBDSEVDSyhjb21waWxlQW5k
UnVuPHVuc2lnbmVkPihwcm9jLCAmYSkgPT0gY291bnRMZWFkaW5nWmVybyhhKSk7CisgICAgTWVt
b3J5VmFsdWUqIGxvYWRGbG9hdCA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywg
TG9hZCwgRmxvYXQsIE9yaWdpbigpLCBhZGRyZXNzKTsKKyAgICBWYWx1ZSogY2FzdCA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBsb2FkRmxvYXQp
OworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2lu
KCksIGNhc3QpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90
Pihwcm9jLCAmdmFsdWUpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4odmFsdWUpKSk7CiB9CiAKLXZv
aWQgdGVzdFNxcnRBcmcoZG91YmxlIGEpCit2b2lkIHRlc3RJbnQzMkJBcmdUb0Zsb2F0Qml0d2lz
ZUNhc3QoaW50MzJfdCB2YWx1ZSkKIHsKICAgICBQcm9jZWR1cmUgcHJvYzsKICAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKTsKKwogICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAogICAgICAg
ICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAogICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KAotICAgICAgICAgICAgcHJvYywgU3FydCwgT3JpZ2luKCksCi0gICAgICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjph
cmd1bWVudEZQUjApKSk7CisgICAgICAgICAgICBwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCks
IGFyZ3VtZW50KSk7CiAKLSAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJs
ZT4ocHJvYywgYSksIHNxcnQoYSkpKTsKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5k
UnVuPGZsb2F0Pihwcm9jLCB2YWx1ZSksIGJpdHdpc2VfY2FzdDxmbG9hdD4odmFsdWUpKSk7CiB9
CiAKLXZvaWQgdGVzdFNxcnRJbW0oZG91YmxlIGEpCit2b2lkIHRlc3RJbnQzMkJJbW1Ub0Zsb2F0
Qml0d2lzZUNhc3QoaW50MzJfdCB2YWx1ZSkKIHsKICAgICBQcm9jZWR1cmUgcHJvYzsKICAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmd1bWVudCA9
IHJvb3QtPmFwcGVuZE5ldzxDb25zdERvdWJsZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7Cisg
ICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIHZhbHVlKTsKKwogICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAog
ICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIFNxcnQsIE9yaWdpbigpLCBhcmd1bWVudCkpOworICAgICAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigp
LCBhcmd1bWVudCkpOwogCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3Vi
bGU+KHByb2MpLCBzcXJ0KGEpKSk7CisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1
bjxmbG9hdD4ocHJvYyksIGJpdHdpc2VfY2FzdDxmbG9hdD4odmFsdWUpKSk7CiB9CiAKLXZvaWQg
dGVzdFNxcnRNZW0oZG91YmxlIGEpCit2b2lkIHRlc3RUd29CaXR3aXNlQ2FzdE9uSW50MzIoaW50
MzJfdCB2YWx1ZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KTsKKyAgICBWYWx1ZSogZmlyc3QgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdp
c2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQpOworICAgIFZhbHVlKiBzZWNvbmQgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgZmlyc3QpOworICAg
IHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHNl
Y29uZCk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHBy
b2MsIHZhbHVlKSwgdmFsdWUpKTsKK30KKwordm9pZCB0ZXN0Qml0d2lzZUNhc3RPbkludDMySW5N
ZW1vcnkoaW50MzJfdCB2YWx1ZSkKIHsKICAgICBQcm9jZWR1cmUgcHJvYzsKICAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwogICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApOwotICAgIE1lbW9yeVZhbHVlKiBsb2FkRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3
PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBEb3VibGUsIE9yaWdpbigpLCBhZGRyZXNzKTsKLSAg
ICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKLSAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTcXJ0LCBPcmln
aW4oKSwgbG9hZERvdWJsZSkpOworICAgIE1lbW9yeVZhbHVlKiBsb2FkRmxvYXQgPSByb290LT5h
cHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwgYWRkcmVz
cyk7CisgICAgVmFsdWUqIGNhc3QgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdp
c2VDYXN0LCBPcmlnaW4oKSwgbG9hZEZsb2F0KTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJv
bFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBjYXN0KTsKIAotICAgIENIRUNLKGlzSWRl
bnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCAmYSksIHNxcnQoYSkpKTsKKyAgICBD
SEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGZsb2F0Pihwcm9jLCAmdmFsdWUpLCBiaXR3
aXNlX2Nhc3Q8ZmxvYXQ+KHZhbHVlKSkpOwogfQogCi12b2lkIHRlc3REb3VibGVBcmdUb0ludDY0
Qml0d2lzZUNhc3QoZG91YmxlIHZhbHVlKQordm9pZCB0ZXN0Q29udmVydERvdWJsZVRvRmxvYXRB
cmcoZG91YmxlIHZhbHVlKQogewogICAgIFByb2NlZHVyZSBwcm9jOwogICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CiAgICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVu
dEZQUjApOworICAgIFZhbHVlKiBhc0Zsb2F0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBEb3VibGVUb0Zsb2F0LCBPcmlnaW4oKSwgYXJndW1lbnQpOworICAgIHJvb3QtPmFwcGVuZE5l
dzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIGFzRmxvYXQpOwogCi0gICAg
cm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCi0gICAgICAgIHByb2MsIFJldHVybiwgT3Jp
Z2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9j
LCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50KSk7Ci0KLSAgICBDSEVDSyhpc0lkZW50
aWNhbChjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIHZhbHVlKSwgYml0d2lzZV9jYXN0PGlu
dDY0X3Q+KHZhbHVlKSkpOworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48Zmxv
YXQ+KHByb2MsIHZhbHVlKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZhbHVlKSkpOwogfQogCi12b2lk
IHRlc3REb3VibGVJbW1Ub0ludDY0Qml0d2lzZUNhc3QoZG91YmxlIHZhbHVlKQordm9pZCB0ZXN0
Q29udmVydERvdWJsZVRvRmxvYXRJbW0oZG91YmxlIHZhbHVlKQogewogICAgIFByb2NlZHVyZSBw
cm9jOwogICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CiAgICAgVmFsdWUq
IGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdp
bigpLCB2YWx1ZSk7CisgICAgVmFsdWUqIGFzRmxvYXQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIERvdWJsZVRvRmxvYXQsIE9yaWdpbigpLCBhcmd1bWVudCk7CisgICAgcm9vdC0+YXBw
ZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgYXNGbG9hdCk7CiAK
LSAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKLSAgICAgICAgcHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAg
IHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQpKTsKKyAgICBDSEVDSyhpc0lk
ZW50aWNhbChjb21waWxlQW5kUnVuPGZsb2F0Pihwcm9jKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZh
bHVlKSkpOworfQogCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQ2NF90
Pihwcm9jKSwgYml0d2lzZV9jYXN0PGludDY0X3Q+KHZhbHVlKSkpOwordm9pZCB0ZXN0Q29udmVy
dERvdWJsZVRvRmxvYXRNZW0oZG91YmxlIHZhbHVlKQoreworICAgIFByb2NlZHVyZSBwcm9jOwor
ICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFkZHJl
c3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgTWVtb3J5VmFsdWUqIGxvYWRlZERvdWJsZSA9IHJv
b3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgRG91YmxlLCBPcmlnaW4oKSwg
YWRkcmVzcyk7CisgICAgVmFsdWUqIGFzRmxvYXQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIERvdWJsZVRvRmxvYXQsIE9yaWdpbigpLCBsb2FkZWREb3VibGUpOworICAgIHJvb3QtPmFw
cGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIGFzRmxvYXQpOwor
CisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxmbG9hdD4ocHJvYywgJnZhbHVl
KSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZhbHVlKSkpOwogfQogCi12b2lkIHRlc3RUd29CaXR3aXNl
Q2FzdE9uRG91YmxlKGRvdWJsZSB2YWx1ZSkKK3ZvaWQgdGVzdENvbnZlcnRGbG9hdFRvRG91Ymxl
QXJnKGZsb2F0IHZhbHVlKQogewogICAgIFByb2NlZHVyZSBwcm9jOwogICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVu
dEZQUjApOwotICAgIFZhbHVlKiBmaXJzdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
Qml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudCk7Ci0gICAgVmFsdWUqIHNlY29uZCA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBmaXJzdCk7
Ci0gICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwgc2Vjb25kKTsKKyAgICBWYWx1ZSogYXJndW1lbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAg
IFZhbHVlKiBmbG9hdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNl
Q2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MzIpOworICAgIFZhbHVlKiBhc0RvdWJsZSA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGZsb2F0VmFs
dWUpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3Jp
Z2luKCksIGFzRG91YmxlKTsKIAotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48
ZG91YmxlPihwcm9jLCB2YWx1ZSksIHZhbHVlKSk7CisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29t
cGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90Pih2YWx1ZSkpLCBz
dGF0aWNfY2FzdDxkb3VibGU+KHZhbHVlKSkpOwogfQogCi12b2lkIHRlc3RCaXR3aXNlQ2FzdE9u
RG91YmxlSW5NZW1vcnkoZG91YmxlIHZhbHVlKQordm9pZCB0ZXN0Q29udmVydEZsb2F0VG9Eb3Vi
bGVJbW0oZmxvYXQgdmFsdWUpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CiAgICAgQmFzaWNCbG9j
ayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYWRkcmVzcyA9IHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKTsKLSAgICBNZW1vcnlWYWx1ZSogbG9hZERvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxN
ZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgRG91YmxlLCBPcmlnaW4oKSwgYWRkcmVzcyk7Ci0gICAg
VmFsdWUqIGNhc3QgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBP
cmlnaW4oKSwgbG9hZERvdWJsZSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4o
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgY2FzdCk7CisgICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9v
dC0+YXBwZW5kTmV3PENvbnN0RmxvYXRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHZhbHVlKTsKKyAg
ICBWYWx1ZSogYXNEb3VibGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9E
b3VibGUsIE9yaWdpbigpLCBhcmd1bWVudCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xW
YWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgYXNEb3VibGUpOwogCi0gICAgQ0hFQ0soaXNJ
ZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCAmdmFsdWUpLCBiaXR3aXNlX2Nh
c3Q8aW50NjRfdD4odmFsdWUpKSk7CisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1
bjxkb3VibGU+KHByb2MpLCBzdGF0aWNfY2FzdDxkb3VibGU+KHZhbHVlKSkpOwogfQogCi12b2lk
IHRlc3RJbnQ2NEJBcmdUb0RvdWJsZUJpdHdpc2VDYXN0KGludDY0X3QgdmFsdWUpCit2b2lkIHRl
c3RDb252ZXJ0RmxvYXRUb0RvdWJsZU1lbShmbG9hdCB2YWx1ZSkKIHsKICAgICBQcm9jZWR1cmUg
cHJvYzsKICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVl
KiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBWYWx1ZSogYWRkcmVzcyA9IHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKTsKKyAgICBNZW1vcnlWYWx1ZSogbG9hZGVkRmxvYXQgPSByb290LT5hcHBlbmRO
ZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEZsb2F0LCBPcmlnaW4oKSwgYWRkcmVzcyk7Cisg
ICAgVmFsdWUqIGFzRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9hdFRv
RG91YmxlLCBPcmlnaW4oKSwgbG9hZGVkRmxvYXQpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250
cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIGFzRG91YmxlKTsKIAotICAgIHJvb3Qt
PmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQml0
d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudCkpOworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNv
bXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCAmdmFsdWUpLCBzdGF0aWNfY2FzdDxkb3VibGU+KHZh
bHVlKSkpOworfQogCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+
KHByb2MsIHZhbHVlKSwgYml0d2lzZV9jYXN0PGRvdWJsZT4odmFsdWUpKSk7Cit2b2lkIHRlc3RD
b252ZXJ0RG91YmxlVG9GbG9hdFRvRG91YmxlVG9GbG9hdChkb3VibGUgdmFsdWUpCit7CisgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KyAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7CisgICAgVmFsdWUqIGFzRmxv
YXQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERvdWJsZVRvRmxvYXQsIE9yaWdpbigp
LCBhcmd1bWVudCk7CisgICAgVmFsdWUqIGFzRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBGbG9hdFRvRG91YmxlLCBPcmlnaW4oKSwgYXNGbG9hdCk7CisgICAgVmFsdWUqIGFz
RmxvYXRBZ2FpbiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwg
T3JpZ2luKCksIGFzRG91YmxlKTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLCBhc0Zsb2F0QWdhaW4pOworCisgICAgQ0hFQ0soaXNJZGVu
dGljYWwoY29tcGlsZUFuZFJ1bjxmbG9hdD4ocHJvYywgdmFsdWUpLCBzdGF0aWNfY2FzdDxmbG9h
dD4odmFsdWUpKSk7CiB9CiAKLXZvaWQgdGVzdEludDY0QkltbVRvRG91YmxlQml0d2lzZUNhc3Qo
aW50NjRfdCB2YWx1ZSkKK3ZvaWQgdGVzdExvYWRGbG9hdENvbnZlcnREb3VibGVDb252ZXJ0Rmxv
YXRTdG9yZUZsb2F0KGZsb2F0IHZhbHVlKQogewogICAgIFByb2NlZHVyZSBwcm9jOwogICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50ID0g
cm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHZhbHVlKTsKKyAg
ICBWYWx1ZSogc3JjID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIFZhbHVlKiBkc3QgPSByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSk7CisgICAgTWVtb3J5VmFsdWUqIGxvYWRlZEZsb2F0ID0gcm9vdC0+YXBwZW5kTmV3
PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBGbG9hdCwgT3JpZ2luKCksIHNyYyk7CisgICAgVmFs
dWUqIGFzRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9hdFRvRG91Ymxl
LCBPcmlnaW4oKSwgbG9hZGVkRmxvYXQpOworICAgIFZhbHVlKiBhc0Zsb2F0QWdhaW4gPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERvdWJsZVRvRmxvYXQsIE9yaWdpbigpLCBhc0RvdWJs
ZSk7CisgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBTdG9yZSwgT3JpZ2lu
KCksIGFzRmxvYXRBZ2FpbiwgZHN0KTsKIAotICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFs
dWU+KAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBh
cmd1bWVudCkpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVy
biwgT3JpZ2luKCksIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCAwKSk7CiAKLSAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJv
YyksIGJpdHdpc2VfY2FzdDxkb3VibGU+KHZhbHVlKSkpOworICAgIGZsb2F0IGlucHV0ID0gdmFs
dWU7CisgICAgZmxvYXQgb3V0cHV0ID0gMC47CisgICAgQ0hFQ0soIWNvbXBpbGVBbmRSdW48aW50
NjRfdD4ocHJvYywgJmlucHV0LCAmb3V0cHV0KSk7CisgICAgQ0hFQ0soaXNJZGVudGljYWwoaW5w
dXQsIG91dHB1dCkpOwogfQogCi12b2lkIHRlc3RUd29CaXR3aXNlQ2FzdE9uSW50NjQoaW50NjRf
dCB2YWx1ZSkKK3ZvaWQgdGVzdEZyb3VuZEFyZyhkb3VibGUgdmFsdWUpCiB7CiAgICAgUHJvY2Vk
dXJlIHByb2M7CiAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBW
YWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgVmFsdWUqIGZpcnN0ID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50
KTsKLSAgICBWYWx1ZSogc2Vjb25kID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3
aXNlQ2FzdCwgT3JpZ2luKCksIGZpcnN0KTsKLSAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZh
bHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBzZWNvbmQpOworICAgIFZhbHVlKiBhcmd1bWVu
dCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBS
SW5mbzo6YXJndW1lbnRGUFIwKTsKKyAgICBWYWx1ZSogYXNGbG9hdCA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwgT3JpZ2luKCksIGFyZ3VtZW50KTsKKyAgICBW
YWx1ZSogYXNEb3VibGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3Vi
bGUsIE9yaWdpbigpLCBhc0Zsb2F0KTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVl
Pihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBhc0RvdWJsZSk7CiAKLSAgICBDSEVDSyhpc0lkZW50
aWNhbChjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIHZhbHVlKSwgdmFsdWUpKTsKKyAgICBD
SEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYywgdmFsdWUpLCBzdGF0
aWNfY2FzdDxkb3VibGU+KHN0YXRpY19jYXN0PGZsb2F0Pih2YWx1ZSkpKSk7CiB9CiAKLXZvaWQg
dGVzdEJpdHdpc2VDYXN0T25JbnQ2NEluTWVtb3J5KGludDY0X3QgdmFsdWUpCit2b2lkIHRlc3RG
cm91bmRNZW0oZG91YmxlIHZhbHVlKQogewogICAgIFByb2NlZHVyZSBwcm9jOwogICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CiAgICAgVmFsdWUqIGFkZHJlc3MgPSByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCk7Ci0gICAgTWVtb3J5VmFsdWUqIGxvYWREb3VibGUgPSByb290LT5hcHBlbmRO
ZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDY0LCBPcmlnaW4oKSwgYWRkcmVzcyk7Ci0g
ICAgVmFsdWUqIGNhc3QgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0
LCBPcmlnaW4oKSwgbG9hZERvdWJsZSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1
ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgY2FzdCk7CisgICAgTWVtb3J5VmFsdWUqIGxvYWRl
ZERvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgRG91Ymxl
LCBPcmlnaW4oKSwgYWRkcmVzcyk7CisgICAgVmFsdWUqIGFzRmxvYXQgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIERvdWJsZVRvRmxvYXQsIE9yaWdpbigpLCBsb2FkZWREb3VibGUpOwor
ICAgIFZhbHVlKiBhc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRU
b0RvdWJsZSwgT3JpZ2luKCksIGFzRmxvYXQpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9s
VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIGFzRG91YmxlKTsKIAotICAgIENIRUNLKGlz
SWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCAmdmFsdWUpLCBiaXR3aXNlX2Nh
c3Q8ZG91YmxlPih2YWx1ZSkpKTsKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVu
PGRvdWJsZT4ocHJvYywgJnZhbHVlKSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGF0aWNfY2FzdDxm
bG9hdD4odmFsdWUpKSkpOwogfQogCi12b2lkIHRlc3RTdG9yZShpbnQgdmFsdWUpCit2b2lkIHRl
c3RTdG9yZTMyKGludCB2YWx1ZSkKIHsKICAgICBQcm9jZWR1cmUgcHJvYzsKICAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwpAQCAtMjYxMywyMiArMzQzMywyOCBAQCB2b2lk
IHRlc3RTdG9yZUxvYWRTdGFja1Nsb3QoaW50IHZhbHVlKQogICAgIENIRUNLKGNvbXBpbGVBbmRS
dW48aW50Pihwcm9jLCB2YWx1ZSkgPT0gdmFsdWUpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBU
PgotaW50MzJfdCBtb2RlbExvYWQoaW50MzJfdCB2YWx1ZSkKK3RlbXBsYXRlPHR5cGVuYW1lIExv
YWRlZFR5cGUsIHR5cGVuYW1lIEVmZmVjdGl2ZVR5cGU+CitFZmZlY3RpdmVUeXBlIG1vZGVsTG9h
ZChFZmZlY3RpdmVUeXBlIHZhbHVlKQogewogICAgIHVuaW9uIHsKLSAgICAgICAgaW50MzJfdCBv
cmlnaW5hbDsKLSAgICAgICAgVCBsb2FkZWQ7CisgICAgICAgIEVmZmVjdGl2ZVR5cGUgb3JpZ2lu
YWw7CisgICAgICAgIExvYWRlZFR5cGUgbG9hZGVkOwogICAgIH0gdTsKIAogICAgIHUub3JpZ2lu
YWwgPSB2YWx1ZTsKLSAgICBpZiAoc3RkOjppc19zaWduZWQ8VD46OnZhbHVlKQotICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8aW50MzJfdD4odS5sb2FkZWQpOwotICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxpbnQzMl90PihzdGF0aWNfY2FzdDx1aW50MzJfdD4odS5sb2FkZWQpKTsKKyAgICBpZiAo
c3RkOjppc19zaWduZWQ8TG9hZGVkVHlwZT46OnZhbHVlKQorICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8RWZmZWN0aXZlVHlwZT4odS5sb2FkZWQpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxF
ZmZlY3RpdmVUeXBlPihzdGF0aWNfY2FzdDx0eXBlbmFtZSBzdGQ6Om1ha2VfdW5zaWduZWQ8RWZm
ZWN0aXZlVHlwZT46OnR5cGU+KHUubG9hZGVkKSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+
Ci12b2lkIHRlc3RMb2FkKEIzOjpPcGNvZGUgb3Bjb2RlLCBpbnQzMl90IHZhbHVlKQordGVtcGxh
dGU8PgorZmxvYXQgbW9kZWxMb2FkPGZsb2F0LCBmbG9hdD4oZmxvYXQgdmFsdWUpIHsgcmV0dXJu
IHZhbHVlOyB9CisKK3RlbXBsYXRlPD4KK2RvdWJsZSBtb2RlbExvYWQ8ZG91YmxlLCBkb3VibGU+
KGRvdWJsZSB2YWx1ZSkgeyByZXR1cm4gdmFsdWU7IH0KKwordGVtcGxhdGU8QjM6OlR5cGUgdHlw
ZSwgdHlwZW5hbWUgQ1R5cGUsIHR5cGVuYW1lIElucHV0VHlwZT4KK3ZvaWQgdGVzdExvYWQoQjM6
Ok9wY29kZSBvcGNvZGUsIElucHV0VHlwZSB2YWx1ZSkKIHsKICAgICAvLyBTaW1wbGUgbG9hZCBm
cm9tIGFuIGFic29sdXRlIGFkZHJlc3MuCiAgICAgewpAQCAtMjYzOCwxMCArMzQ2NCwxMCBAQCB2
b2lkIHRlc3RMb2FkKEIzOjpPcGNvZGUgb3Bjb2RlLCBpbnQzMl90IHZhbHVlKQogICAgICAgICBy
b290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKICAgICAgICAgICAgIHByb2MsIFJldHVybiwg
T3JpZ2luKCksCiAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAotICAg
ICAgICAgICAgICAgIHByb2MsIG9wY29kZSwgSW50MzIsIE9yaWdpbigpLAorICAgICAgICAgICAg
ICAgIHByb2MsIG9wY29kZSwgdHlwZSwgT3JpZ2luKCksCiAgICAgICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmdmFsdWUpKSk7CiAKLSAg
ICAgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jKSA9PSBtb2RlbExvYWQ8VD4o
dmFsdWUpKTsKKyAgICAgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxDVHlwZT4o
cHJvYyksIG1vZGVsTG9hZDxDVHlwZT4odmFsdWUpKSk7CiAgICAgfQogICAgIAogICAgIC8vIFNp
bXBsZSBsb2FkIGZyb20gYW4gYWRkcmVzcyBpbiBhIHJlZ2lzdGVyLgpAQCAtMjY1MiwxMCArMzQ3
OCwxMCBAQCB2b2lkIHRlc3RMb2FkKEIzOjpPcGNvZGUgb3Bjb2RlLCBpbnQzMl90IHZhbHVlKQog
ICAgICAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKICAgICAgICAgICAgIHByb2Ms
IFJldHVybiwgT3JpZ2luKCksCiAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFs
dWU+KAotICAgICAgICAgICAgICAgIHByb2MsIG9wY29kZSwgSW50MzIsIE9yaWdpbigpLAorICAg
ICAgICAgICAgICAgIHByb2MsIG9wY29kZSwgdHlwZSwgT3JpZ2luKCksCiAgICAgICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApKSk7CiAKLSAgICAgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQz
Ml90Pihwcm9jLCAmdmFsdWUpID09IG1vZGVsTG9hZDxUPih2YWx1ZSkpOworICAgICAgICBDSEVD
Syhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPENUeXBlPihwcm9jLCAmdmFsdWUpLCBtb2RlbExv
YWQ8Q1R5cGU+KHZhbHVlKSkpOwogICAgIH0KICAgICAKICAgICAvLyBTaW1wbGUgbG9hZCBmcm9t
IGFuIGFkZHJlc3MgaW4gYSByZWdpc3RlciwgYXQgYW4gb2Zmc2V0LgpAQCAtMjY2NiwxMSArMzQ5
MiwxMSBAQCB2b2lkIHRlc3RMb2FkKEIzOjpPcGNvZGUgb3Bjb2RlLCBpbnQzMl90IHZhbHVlKQog
ICAgICAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKICAgICAgICAgICAgIHByb2Ms
IFJldHVybiwgT3JpZ2luKCksCiAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFs
dWU+KAotICAgICAgICAgICAgICAgIHByb2MsIG9wY29kZSwgSW50MzIsIE9yaWdpbigpLAorICAg
ICAgICAgICAgICAgIHByb2MsIG9wY29kZSwgdHlwZSwgT3JpZ2luKCksCiAgICAgICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApLAotICAgICAgICAgICAgICAgIHNpemVvZihpbnQzMl90KSkpOwor
ICAgICAgICAgICAgICAgIHNpemVvZihJbnB1dFR5cGUpKSk7CiAKLSAgICAgICAgQ0hFQ0soY29t
cGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCAmdmFsdWUgLSAxKSA9PSBtb2RlbExvYWQ8VD4odmFs
dWUpKTsKKyAgICAgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxDVHlwZT4ocHJv
YywgJnZhbHVlIC0gMSksIG1vZGVsTG9hZDxDVHlwZT4odmFsdWUpKSk7CiAgICAgfQogCiAgICAg
Ly8gTG9hZCBmcm9tIGEgc2ltcGxlIGJhc2UtaW5kZXggd2l0aCB2YXJpb3VzIHNjYWxlcy4KQEAg
LTI2ODEsNyArMzUwNyw3IEBAIHZvaWQgdGVzdExvYWQoQjM6Ok9wY29kZSBvcGNvZGUsIGludDMy
X3QgdmFsdWUpCiAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAogICAgICAg
ICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgb3Bjb2RlLCBJbnQzMiwgT3Jp
Z2luKCksCisgICAgICAgICAgICAgICAgcHJvYywgb3Bjb2RlLCB0eXBlLCBPcmlnaW4oKSwKICAg
ICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAogICAgICAgICAgICAgICAgICAg
ICBwcm9jLCBBZGQsIE9yaWdpbigpLAogICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCksCkBAIC0yNjkwLDcgKzM1MTYsNyBAQCB2b2lkIHRlc3RMb2FkKEIzOjpPcGNvZGUgb3Bjb2Rl
LCBpbnQzMl90IHZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEp
LAogICAgICAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIGxvZ1NjYWxlKSkpKSk7CiAKLSAgICAgICAgQ0hFQ0soY29tcGlsZUFu
ZFJ1bjxpbnQzMl90Pihwcm9jLCAmdmFsdWUgLSAyLCAoc2l6ZW9mKGludDMyX3QpICogMikgPj4g
bG9nU2NhbGUpID09IG1vZGVsTG9hZDxUPih2YWx1ZSkpOworICAgICAgICBDSEVDSyhpc0lkZW50
aWNhbChjb21waWxlQW5kUnVuPENUeXBlPihwcm9jLCAmdmFsdWUgLSAyLCAoc2l6ZW9mKElucHV0
VHlwZSkgKiAyKSA+PiBsb2dTY2FsZSksIG1vZGVsTG9hZDxDVHlwZT4odmFsdWUpKSk7CiAgICAg
fQogCiAgICAgLy8gTG9hZCBmcm9tIGEgc2ltcGxlIGJhc2UtaW5kZXggd2l0aCB2YXJpb3VzIHNj
YWxlcywgYnV0IGNvbW11dGVkLgpAQCAtMjcwMSw3ICszNTI3LDcgQEAgdm9pZCB0ZXN0TG9hZChC
Mzo6T3Bjb2RlIG9wY29kZSwgaW50MzJfdCB2YWx1ZSkKICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PENvbnRyb2xWYWx1ZT4oCiAgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAogICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKLSAgICAgICAgICAgICAgICBw
cm9jLCBvcGNvZGUsIEludDMyLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICBwcm9jLCBvcGNv
ZGUsIHR5cGUsIE9yaWdpbigpLAogICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCiAgICAgICAgICAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCiAgICAgICAgICAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCkBAIC0yNzEwLDcgKzM1MzYsNjMgQEAg
dm9pZCB0ZXN0TG9hZChCMzo6T3Bjb2RlIG9wY29kZSwgaW50MzJfdCB2YWx1ZSkKICAgICAgICAg
ICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBsb2dTY2FsZSkpLAogICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKSk7
CiAKLSAgICAgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCAmdmFsdWUgLSAy
LCAoc2l6ZW9mKGludDMyX3QpICogMikgPj4gbG9nU2NhbGUpID09IG1vZGVsTG9hZDxUPih2YWx1
ZSkpOworICAgICAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPENUeXBlPihwcm9j
LCAmdmFsdWUgLSAyLCAoc2l6ZW9mKElucHV0VHlwZSkgKiAyKSA+PiBsb2dTY2FsZSksIG1vZGVs
TG9hZDxDVHlwZT4odmFsdWUpKSk7CisgICAgfQorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgor
dm9pZCB0ZXN0TG9hZChCMzo6T3Bjb2RlIG9wY29kZSwgaW50MzJfdCB2YWx1ZSkKK3sKKyAgICBy
ZXR1cm4gdGVzdExvYWQ8SW50MzIsIFQ+KG9wY29kZSwgdmFsdWUpOworfQorCit0ZW1wbGF0ZTxC
Mzo6VHlwZSB0eXBlLCB0eXBlbmFtZSBUPgordm9pZCB0ZXN0TG9hZChUIHZhbHVlKQoreworICAg
IHJldHVybiB0ZXN0TG9hZDx0eXBlLCBUPihMb2FkLCB2YWx1ZSk7Cit9CisKK3ZvaWQgdGVzdFN0
b3JlRmxvYXQoZG91YmxlIGlucHV0KQoreworICAgIC8vIFNpbXBsZSBzdG9yZSBmcm9tIGFuIGFk
ZHJlc3MgaW4gYSByZWdpc3Rlci4KKyAgICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAg
ICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBWYWx1ZSog
YXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7CisgICAgICAgIFZhbHVlKiBhcmd1bWVudEFzRmxv
YXQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERvdWJsZVRvRmxvYXQsIE9yaWdpbigp
LCBhcmd1bWVudCk7CisKKyAgICAgICAgVmFsdWUqIGRlc3RpbmF0aW9uQWRkcmVzcyA9IHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBT
dG9yZSwgT3JpZ2luKCksIGFyZ3VtZW50QXNGbG9hdCwgZGVzdGluYXRpb25BZGRyZXNzKTsKKwor
ICAgICAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLCByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOwor
CisgICAgICAgIGZsb2F0IG91dHB1dCA9IDAuOworICAgICAgICBDSEVDSyghY29tcGlsZUFuZFJ1
bjxpbnQ2NF90Pihwcm9jLCBpbnB1dCwgJm91dHB1dCkpOworICAgICAgICBDSEVDSyhpc0lkZW50
aWNhbChzdGF0aWNfY2FzdDxmbG9hdD4oaW5wdXQpLCBvdXRwdXQpKTsKKyAgICB9CisKKyAgICAv
LyBTaW1wbGUgaW5kZXhlZCBzdG9yZS4KKyAgICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOwor
ICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBWYWx1
ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7CisgICAgICAgIFZhbHVlKiBhcmd1bWVudEFz
RmxvYXQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERvdWJsZVRvRmxvYXQsIE9yaWdp
bigpLCBhcmd1bWVudCk7CisKKyAgICAgICAgVmFsdWUqIGRlc3RpbmF0aW9uQmFzZUFkZHJlc3Mg
PSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIFZhbHVlKiBpbmRleCA9IHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIx
KTsKKyAgICAgICAgVmFsdWUqIHNjYWxlZEluZGV4ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigK
KyAgICAgICAgICAgIHByb2MsIFNobCwgT3JpZ2luKCksCisgICAgICAgICAgICBpbmRleCwKKyAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAy
KSk7CisgICAgICAgIFZhbHVlKiBkZXN0aW5hdGlvbkFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIHNjYWxlZEluZGV4LCBkZXN0aW5hdGlvbkJhc2VB
ZGRyZXNzKTsKKworICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIFN0
b3JlLCBPcmlnaW4oKSwgYXJndW1lbnRBc0Zsb2F0LCBkZXN0aW5hdGlvbkFkZHJlc3MpOworCisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2lu
KCksIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CisK
KyAgICAgICAgZmxvYXQgb3V0cHV0ID0gMC47CisgICAgICAgIENIRUNLKCFjb21waWxlQW5kUnVu
PGludDY0X3Q+KHByb2MsIGlucHV0LCAmb3V0cHV0IC0gMSwgMSkpOworICAgICAgICBDSEVDSyhp
c0lkZW50aWNhbChzdGF0aWNfY2FzdDxmbG9hdD4oaW5wdXQpLCBvdXRwdXQpKTsKICAgICB9CiB9
CiAKQEAgLTQ5NzEsNiArNTg1MywxNyBAQCB2b2lkIHRlc3RSZXR1cm5Eb3VibGUoZG91YmxlIHZh
bHVlKQogICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jKSwg
dmFsdWUpKTsKIH0KIAordm9pZCB0ZXN0UmV0dXJuRmxvYXQoZmxvYXQgdmFsdWUpCit7CisgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0RmxvYXRWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIHZhbHVlKSk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5k
UnVuPGZsb2F0Pihwcm9jKSwgdmFsdWUpKTsKK30KKwogZG91YmxlIHNpbXBsZUZ1bmN0aW9uRG91
YmxlKGRvdWJsZSBhLCBkb3VibGUgYikKIHsKICAgICByZXR1cm4gYSArIGI7CkBAIC00OTkxLDYg
KzU4ODQsMzIgQEAgdm9pZCB0ZXN0Q2FsbFNpbXBsZURvdWJsZShkb3VibGUgYSwgZG91YmxlIGIp
CiAgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGEsIGIpID09IGEgKyBiKTsK
IH0KIAorZmxvYXQgc2ltcGxlRnVuY3Rpb25GbG9hdChmbG9hdCBhLCBmbG9hdCBiKQoreworICAg
IHJldHVybiBhICsgYjsKK30KKwordm9pZCB0ZXN0Q2FsbFNpbXBsZUZsb2F0KGZsb2F0IGEsIGZs
b2F0IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQxaW50MzIgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
KTsKKyAgICBWYWx1ZSogYXJndW1lbnQyaW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICBWYWx1
ZSogZmxvYXRWYWx1ZTEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0
LCBPcmlnaW4oKSwgYXJndW1lbnQxaW50MzIpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlMiA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVu
dDJpbnQzMik7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAgIHBy
b2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDQ2FsbFZhbHVl
PigKKyAgICAgICAgICAgIHByb2MsIEZsb2F0LCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYml0d2lzZV9jYXN0PHZv
aWQqPihzaW1wbGVGdW5jdGlvbkZsb2F0KSksCisgICAgICAgICAgICBmbG9hdFZhbHVlMSwKKyAg
ICAgICAgICAgIGZsb2F0VmFsdWUyKSk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxl
QW5kUnVuPGZsb2F0Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSksIGJpdHdpc2VfY2Fz
dDxpbnQzMl90PihiKSksIGEgKyBiKSk7Cit9CisKIGRvdWJsZSBmdW5jdGlvbldpdGhIZWxsYURv
dWJsZUFyZ3VtZW50cyhkb3VibGUgYSwgZG91YmxlIGIsIGRvdWJsZSBjLCBkb3VibGUgZCwgZG91
YmxlIGUsIGRvdWJsZSBmLCBkb3VibGUgZywgZG91YmxlIGgsIGRvdWJsZSBpLCBkb3VibGUgaiwg
ZG91YmxlIGssIGRvdWJsZSBsLCBkb3VibGUgbSwgZG91YmxlIG4sIGRvdWJsZSBvLCBkb3VibGUg
cCwgZG91YmxlIHEsIGRvdWJsZSByLCBkb3VibGUgcywgZG91YmxlIHQsIGRvdWJsZSB1LCBkb3Vi
bGUgdiwgZG91YmxlIHcsIGRvdWJsZSB4LCBkb3VibGUgeSwgZG91YmxlIHopCiB7CiAgICAgcmV0
dXJuIGEgKiBwb3coMiwgMCkgKyBiICogcG93KDIsIDEpICsgYyAqIHBvdygyLCAyKSArIGQgKiBw
b3coMiwgMykgKyBlICogcG93KDIsIDQpICsgZiAqIHBvdygyLCA1KSArIGcgKiBwb3coMiwgNikg
KyBoICogcG93KDIsIDcpICsgaSAqIHBvdygyLCA4KSArIGogKiBwb3coMiwgOSkgKyBrICogcG93
KDIsIDEwKSArIGwgKiBwb3coMiwgMTEpICsgbSAqIHBvdygyLCAxMikgKyBuICogcG93KDIsIDEz
KSArIG8gKiBwb3coMiwgMTQpICsgcCAqIHBvdygyLCAxNSkgKyBxICogcG93KDIsIDE2KSArIHIg
KiBwb3coMiwgMTcpICsgcyAqIHBvdygyLCAxOCkgKyB0ICogcG93KDIsIDE5KSArIHUgKiBwb3co
MiwgMjApICsgdiAqIHBvdygyLCAyMSkgKyB3ICogcG93KDIsIDIyKSArIHggKiBwb3coMiwgMjMp
ICsgeSAqIHBvdygyLCAyNCkgKyB6ICogcG93KDIsIDI1KTsKQEAgLTUwMTUsNiArNTkzNCwzMCBA
QCB2b2lkIHRlc3RDYWxsRnVuY3Rpb25XaXRoSGVsbGFEb3VibGVBcmd1bWVudHMoKQogICAgIENI
RUNLKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jKSA9PSBmdW5jdGlvbldpdGhIZWxsYURvdWJs
ZUFyZ3VtZW50cygxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQs
IDE1LCAxNiwgMTcsIDE4LCAxOSwgMjAsIDIxLCAyMiwgMjMsIDI0LCAyNSwgMjYpKTsKIH0KIAor
ZmxvYXQgZnVuY3Rpb25XaXRoSGVsbGFGbG9hdEFyZ3VtZW50cyhmbG9hdCBhLCBmbG9hdCBiLCBm
bG9hdCBjLCBmbG9hdCBkLCBmbG9hdCBlLCBmbG9hdCBmLCBmbG9hdCBnLCBmbG9hdCBoLCBmbG9h
dCBpLCBmbG9hdCBqLCBmbG9hdCBrLCBmbG9hdCBsLCBmbG9hdCBtLCBmbG9hdCBuLCBmbG9hdCBv
LCBmbG9hdCBwLCBmbG9hdCBxLCBmbG9hdCByLCBmbG9hdCBzLCBmbG9hdCB0LCBmbG9hdCB1LCBm
bG9hdCB2LCBmbG9hdCB3LCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KQoreworICAgIHJldHVy
biBhICogcG93KDIsIDApICsgYiAqIHBvdygyLCAxKSArIGMgKiBwb3coMiwgMikgKyBkICogcG93
KDIsIDMpICsgZSAqIHBvdygyLCA0KSArIGYgKiBwb3coMiwgNSkgKyBnICogcG93KDIsIDYpICsg
aCAqIHBvdygyLCA3KSArIGkgKiBwb3coMiwgOCkgKyBqICogcG93KDIsIDkpICsgayAqIHBvdygy
LCAxMCkgKyBsICogcG93KDIsIDExKSArIG0gKiBwb3coMiwgMTIpICsgbiAqIHBvdygyLCAxMykg
KyBvICogcG93KDIsIDE0KSArIHAgKiBwb3coMiwgMTUpICsgcSAqIHBvdygyLCAxNikgKyByICog
cG93KDIsIDE3KSArIHMgKiBwb3coMiwgMTgpICsgdCAqIHBvdygyLCAxOSkgKyB1ICogcG93KDIs
IDIwKSArIHYgKiBwb3coMiwgMjEpICsgdyAqIHBvdygyLCAyMikgKyB4ICogcG93KDIsIDIzKSAr
IHkgKiBwb3coMiwgMjQpICsgeiAqIHBvdygyLCAyNSk7Cit9CisKK3ZvaWQgdGVzdENhbGxGdW5j
dGlvbldpdGhIZWxsYUZsb2F0QXJndW1lbnRzKCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgVmVjdG9yPFZhbHVl
Kj4gYXJnczsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMjY7ICsraSkKKyAgICAgICAg
YXJncy5hcHBlbmQocm9vdC0+YXBwZW5kTmV3PENvbnN0RmxvYXRWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIGkgKyAxKSk7CisKKyAgICBDQ2FsbFZhbHVlKiBjYWxsID0gcm9vdC0+YXBwZW5kTmV3PEND
YWxsVmFsdWU+KAorICAgICAgICBwcm9jLCBGbG9hdCwgT3JpZ2luKCksCisgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYml0d2lzZV9jYXN0PHZv
aWQqPihmdW5jdGlvbldpdGhIZWxsYUZsb2F0QXJndW1lbnRzKSkpOworICAgIGNhbGwtPmNoaWxk
cmVuKCkuYXBwZW5kVmVjdG9yKGFyZ3MpOworICAgIAorICAgIHJvb3QtPmFwcGVuZE5ldzxDb250
cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIGNhbGwpOworCisgICAgQ0hFQ0soY29t
cGlsZUFuZFJ1bjxmbG9hdD4ocHJvYykgPT0gZnVuY3Rpb25XaXRoSGVsbGFGbG9hdEFyZ3VtZW50
cygxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwg
MTcsIDE4LCAxOSwgMjAsIDIxLCAyMiwgMjMsIDI0LCAyNSwgMjYpKTsKK30KKwogdm9pZCB0ZXN0
Q2hpbGxEaXYoaW50IG51bSwgaW50IGRlbiwgaW50IHJlcykKIHsKICAgICAvLyBUZXN0IG5vbi1j
b25zdGFudC4KQEAgLTUzNjcsNiArNjMxMCw3OCBAQCB2b2lkIHRlc3RTZWxlY3RDb21wYXJlRG91
YmxlKCkKICAgICBDSEVDSyhpbnZva2U8aW50cHRyX3Q+KCpjb2RlLCA0Mi41MiwgNDIuNTIsIDUy
NDk3ODI0NSwgMzUyKSA9PSAzNTIpOwogfQogCit0ZW1wbGF0ZTxCMzo6T3Bjb2RlIG9wY29kZT4K
K3ZvaWQgdGVzdFNlbGVjdENvbXBhcmVGbG9hdChmbG9hdCBhLCBmbG9hdCBiLCBib29sICgqb3Bl
cmF0aW9uKShmbG9hdCwgZmxvYXQpKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MWludDMy
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGFyZ3VtZW50MmludDMyID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIxKSk7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MWludDMyKTsKKyAgICBWYWx1ZSog
ZmxvYXRWYWx1ZTIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBP
cmlnaW4oKSwgYXJndW1lbnQyaW50MzIpOworCisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xW
YWx1ZT4oCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBTZWxlY3QsIE9yaWdpbigpLAorICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBv
cGNvZGUsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIGZsb2F0VmFsdWUxLAorICAgICAgICAg
ICAgICAgIGZsb2F0VmFsdWUyKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKSwKKyAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIzKSkpOworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVB
bmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpLCBiaXR3aXNlX2Nh
c3Q8aW50MzJfdD4oYiksIDQyLCAtNSksIG9wZXJhdGlvbihhLCBiKSA/IDQyIDogLTUpKTsKK30K
Kwordm9pZCB0ZXN0U2VsZWN0Q29tcGFyZUZsb2F0KGZsb2F0IGEsIGZsb2F0IGIpCit7CisgICAg
dGVzdFNlbGVjdENvbXBhcmVGbG9hdDxFcXVhbD4oYSwgYiwgW10oZmxvYXQgYSwgZmxvYXQgYikg
LT4gYm9vbCB7IHJldHVybiBhID09IGI7IH0pOworICAgIHRlc3RTZWxlY3RDb21wYXJlRmxvYXQ8
Tm90RXF1YWw+KGEsIGIsIFtdKGZsb2F0IGEsIGZsb2F0IGIpIC0+IGJvb2wgeyByZXR1cm4gYSAh
PSBiOyB9KTsKKyAgICB0ZXN0U2VsZWN0Q29tcGFyZUZsb2F0PExlc3NUaGFuPihhLCBiLCBbXShm
bG9hdCBhLCBmbG9hdCBiKSAtPiBib29sIHsgcmV0dXJuIGEgPCBiOyB9KTsKKyAgICB0ZXN0U2Vs
ZWN0Q29tcGFyZUZsb2F0PEdyZWF0ZXJUaGFuPihhLCBiLCBbXShmbG9hdCBhLCBmbG9hdCBiKSAt
PiBib29sIHsgcmV0dXJuIGEgPiBiOyB9KTsKKyAgICB0ZXN0U2VsZWN0Q29tcGFyZUZsb2F0PExl
c3NFcXVhbD4oYSwgYiwgW10oZmxvYXQgYSwgZmxvYXQgYikgLT4gYm9vbCB7IHJldHVybiBhIDw9
IGI7IH0pOworICAgIHRlc3RTZWxlY3RDb21wYXJlRmxvYXQ8R3JlYXRlckVxdWFsPihhLCBiLCBb
XShmbG9hdCBhLCBmbG9hdCBiKSAtPiBib29sIHsgcmV0dXJuIGEgPj0gYjsgfSk7Cit9CisKK3Rl
bXBsYXRlPEIzOjpPcGNvZGUgb3Bjb2RlPgordm9pZCB0ZXN0U2VsZWN0Q29tcGFyZUZsb2F0VG9E
b3VibGUoZmxvYXQgYSwgZmxvYXQgYiwgYm9vbCAoKm9wZXJhdGlvbikoZmxvYXQsIGZsb2F0KSkK
K3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudDFpbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAg
IFZhbHVlKiBhcmd1bWVudDJpbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1
bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgIFZhbHVlKiBmbG9h
dFZhbHVlMSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdp
bigpLCBhcmd1bWVudDFpbnQzMik7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUyID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MmludDMy
KTsKKyAgICBWYWx1ZSogZG91YmxlVmFsdWUxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBGbG9hdFRvRG91YmxlLCBPcmlnaW4oKSwgZmxvYXRWYWx1ZTEpOworICAgIFZhbHVlKiBkb3Vi
bGVWYWx1ZTIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9y
aWdpbigpLCBmbG9hdFZhbHVlMik7CisKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVl
PigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFNlbGVjdCwgT3JpZ2luKCksCisgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIG9wY29k
ZSwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgZG91YmxlVmFsdWUxLAorICAgICAgICAgICAg
ICAgIGRvdWJsZVZhbHVlMiksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMiksCisgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMykpKTsKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5k
UnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSwgYml0d2lzZV9jYXN0
PGludDMyX3Q+KGIpLCA0MiwgLTUpLCBvcGVyYXRpb24oYSwgYikgPyA0MiA6IC01KSk7Cit9CisK
K3ZvaWQgdGVzdFNlbGVjdENvbXBhcmVGbG9hdFRvRG91YmxlKGZsb2F0IGEsIGZsb2F0IGIpCit7
CisgICAgdGVzdFNlbGVjdENvbXBhcmVGbG9hdFRvRG91YmxlPEVxdWFsPihhLCBiLCBbXShmbG9h
dCBhLCBmbG9hdCBiKSAtPiBib29sIHsgcmV0dXJuIGEgPT0gYjsgfSk7CisgICAgdGVzdFNlbGVj
dENvbXBhcmVGbG9hdFRvRG91YmxlPE5vdEVxdWFsPihhLCBiLCBbXShmbG9hdCBhLCBmbG9hdCBi
KSAtPiBib29sIHsgcmV0dXJuIGEgIT0gYjsgfSk7CisgICAgdGVzdFNlbGVjdENvbXBhcmVGbG9h
dFRvRG91YmxlPExlc3NUaGFuPihhLCBiLCBbXShmbG9hdCBhLCBmbG9hdCBiKSAtPiBib29sIHsg
cmV0dXJuIGEgPCBiOyB9KTsKKyAgICB0ZXN0U2VsZWN0Q29tcGFyZUZsb2F0VG9Eb3VibGU8R3Jl
YXRlclRoYW4+KGEsIGIsIFtdKGZsb2F0IGEsIGZsb2F0IGIpIC0+IGJvb2wgeyByZXR1cm4gYSA+
IGI7IH0pOworICAgIHRlc3RTZWxlY3RDb21wYXJlRmxvYXRUb0RvdWJsZTxMZXNzRXF1YWw+KGEs
IGIsIFtdKGZsb2F0IGEsIGZsb2F0IGIpIC0+IGJvb2wgeyByZXR1cm4gYSA8PSBiOyB9KTsKKyAg
ICB0ZXN0U2VsZWN0Q29tcGFyZUZsb2F0VG9Eb3VibGU8R3JlYXRlckVxdWFsPihhLCBiLCBbXShm
bG9hdCBhLCBmbG9hdCBiKSAtPiBib29sIHsgcmV0dXJuIGEgPj0gYjsgfSk7Cit9CisKIHZvaWQg
dGVzdFNlbGVjdERvdWJsZSgpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CkBAIC01NDMxLDYgKzY0
NDYsNjIgQEAgdm9pZCB0ZXN0U2VsZWN0RG91YmxlQ29tcGFyZURvdWJsZSgpCiAgICAgQ0hFQ0so
aW52b2tlPGRvdWJsZT4oKmNvZGUsIDQyLjUyLCA0Mi41MiwgNTI0OTc4MjQ1LjksIDM1Mi4wKSA9
PSAzNTIuMCk7CiB9CiAKK3ZvaWQgdGVzdFNlbGVjdERvdWJsZUNvbXBhcmVGbG9hdChmbG9hdCBh
LCBmbG9hdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3Qg
PSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MWludDMyID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKSk7CisgICAgVmFsdWUqIGFyZ3VtZW50MmludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAg
VmFsdWUqIGZsb2F0VmFsdWUxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNl
Q2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MWludDMyKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1ZTIg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJn
dW1lbnQyaW50MzIpOworCisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAg
ICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCisgICAgICAgICAgICBwcm9jLCBTZWxlY3QsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBMZXNzVGhhbiwgT3Jp
Z2luKCksCisgICAgICAgICAgICAgICAgZmxvYXRWYWx1ZTEsCisgICAgICAgICAgICAgICAgZmxv
YXRWYWx1ZTIpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApLAorICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjph
cmd1bWVudEZQUjEpKSk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRv
dWJsZT4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpLCBiaXR3aXNlX2Nhc3Q8aW50MzJf
dD4oYiksIDQyLjEsIC1NX1BJKSwgYSA8IGIgPyA0Mi4xIDogLU1fUEkpKTsKK30KKwordm9pZCB0
ZXN0U2VsZWN0RmxvYXRDb21wYXJlRmxvYXQoZmxvYXQgYSwgZmxvYXQgYikKK3sKKyAgICBQcm9j
ZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAg
IFZhbHVlKiBhcmd1bWVudDFpbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1
bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBhcmd1
bWVudDJpbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigp
LAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgIFZhbHVlKiBhcmd1bWVudDNpbnQzMiA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMikpOworICAgIFZhbHVlKiBhcmd1bWVudDRpbnQzMiA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MykpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlMSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDFpbnQzMik7CisgICAgVmFsdWUqIGZs
b2F0VmFsdWUyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3Jp
Z2luKCksIGFyZ3VtZW50MmludDMyKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1ZTMgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQzaW50
MzIpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlNCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDRpbnQzMik7CisKKyAgICByb290LT5h
cHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwK
KyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFNlbGVj
dCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAg
ICAgICAgICAgIHByb2MsIExlc3NUaGFuLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICBmbG9h
dFZhbHVlMSwKKyAgICAgICAgICAgICAgICBmbG9hdFZhbHVlMiksCisgICAgICAgICAgICBmbG9h
dFZhbHVlMywKKyAgICAgICAgICAgIGZsb2F0VmFsdWU0KSk7CisKKyAgICBDSEVDSyhpc0lkZW50
aWNhbChjb21waWxlQW5kUnVuPGZsb2F0Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSks
IGJpdHdpc2VfY2FzdDxpbnQzMl90PihiKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KDEuMWYpLCBi
aXR3aXNlX2Nhc3Q8aW50MzJfdD4oLTQyLmYpKSwgYSA8IGIgPyAxLjFmIDogLTQyLmYpKTsKK30K
Kwogdm9pZCB0ZXN0U2VsZWN0Rm9sZChpbnRwdHJfdCB2YWx1ZSkKIHsKICAgICBQcm9jZWR1cmUg
cHJvYzsKQEAgLTU0ODcsNDcgKzY1NTgsNDcgQEAgZG91YmxlIG5lZ2F0aXZlWmVybygpCiAgICAg
cmV0dXJuIC16ZXJvKCk7CiB9CiAKLS8vIFNvbWUgY29udmVuaWVuY2UgZnVuY3Rpb25zIGZvciBi
cmV2aXR5IG9mIHRoZSB0ZXN0IG91dHB1dC4KLWRvdWJsZSBwb3NJbmZpbml0eSgpCi17Ci0gICAg
cmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKTsKLX0KLQotZG91
YmxlIG5lZ0luZmluaXR5KCkKLXsKLSAgICByZXR1cm4gLXN0ZDo6bnVtZXJpY19saW1pdHM8ZG91
YmxlPjo6aW5maW5pdHkoKTsKLX0KLQogdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KIHN0cnVjdCBP
cGVyYW5kIHsKICAgICBjb25zdCBjaGFyKiBuYW1lOwogICAgIFR5cGUgdmFsdWU7CiB9OwogCi10
eXBlZGVmIE9wZXJhbmQ8ZG91YmxlPiBEb3VibGVPcGVyYW5kOwogdHlwZWRlZiBPcGVyYW5kPGlu
dDY0X3Q+IEludDY0T3BlcmFuZDsKIHR5cGVkZWYgT3BlcmFuZDxpbnQzMl90PiBJbnQzMk9wZXJh
bmQ7CiAKLXN0YXRpYyBjb25zdCBzdGQ6OmFycmF5PERvdWJsZU9wZXJhbmQsIDk+JiBkb3VibGVP
cGVyYW5kcygpCi17Ci0gICAgc3RhdGljIGNvbnN0IHN0ZDo6YXJyYXk8RG91YmxlT3BlcmFuZCwg
OT4gb3BlcmFuZHMgPSB7ewotICAgICAgICB7ICJNX1BJIiwgTV9QSSB9LAotICAgICAgICB7ICIt
TV9QSSIsIC1NX1BJIH0sCi0gICAgICAgIHsgIjEuIiwgMSB9LAotICAgICAgICB7ICItMS4iLCAt
MSB9LAotICAgICAgICB7ICIwIiwgMCB9LAotICAgICAgICB7ICJuZWdhdGl2ZVplcm8oKSIsIG5l
Z2F0aXZlWmVybygpIH0sCi0gICAgICAgIHsgInBvc0luZmluaXR5KCkiLCBwb3NJbmZpbml0eSgp
IH0sCi0gICAgICAgIHsgIm5lZ0luZmluaXR5KCkiLCBuZWdJbmZpbml0eSgpIH0sCi0gICAgICAg
IHsgIlBOYU4iLCBQTmFOIH0sCi0gICAgfX07Cit0ZW1wbGF0ZTx0eXBlbmFtZSBGbG9hdFR5cGU+
Cit2b2lkIHBvcHVsYXRlV2l0aEludGVyZXN0aW5nVmFsdWVzKFZlY3RvcjxPcGVyYW5kPEZsb2F0
VHlwZT4+JiBvcGVyYW5kcykKK3sKKyAgICBvcGVyYW5kcy5hcHBlbmQoeyAiMC4iLCBzdGF0aWNf
Y2FzdDxGbG9hdFR5cGU+KDAuKSB9KTsKKyAgICBvcGVyYW5kcy5hcHBlbmQoeyAiLTAuIiwgc3Rh
dGljX2Nhc3Q8RmxvYXRUeXBlPigtMC4pIH0pOworICAgIG9wZXJhbmRzLmFwcGVuZCh7ICIxLiIs
IHN0YXRpY19jYXN0PEZsb2F0VHlwZT4oMC4pIH0pOworICAgIG9wZXJhbmRzLmFwcGVuZCh7ICIt
MS4iLCBzdGF0aWNfY2FzdDxGbG9hdFR5cGU+KC0wLikgfSk7CisgICAgb3BlcmFuZHMuYXBwZW5k
KHsgIjIuIiwgc3RhdGljX2Nhc3Q8RmxvYXRUeXBlPigyLikgfSk7CisgICAgb3BlcmFuZHMuYXBw
ZW5kKHsgIi0yLiIsIHN0YXRpY19jYXN0PEZsb2F0VHlwZT4oMi4pIH0pOworICAgIG9wZXJhbmRz
LmFwcGVuZCh7ICJNX1BJIiwgc3RhdGljX2Nhc3Q8RmxvYXRUeXBlPihNX1BJKSB9KTsKKyAgICBv
cGVyYW5kcy5hcHBlbmQoeyAiLU1fUEkiLCBzdGF0aWNfY2FzdDxGbG9hdFR5cGU+KC1NX1BJKSB9
KTsKKyAgICBvcGVyYW5kcy5hcHBlbmQoeyAibWluIiwgc3RkOjpudW1lcmljX2xpbWl0czxGbG9h
dFR5cGU+OjptaW4oKSB9KTsKKyAgICBvcGVyYW5kcy5hcHBlbmQoeyAibWF4Iiwgc3RkOjpudW1l
cmljX2xpbWl0czxGbG9hdFR5cGU+OjptYXgoKSB9KTsKKyAgICBvcGVyYW5kcy5hcHBlbmQoeyAi
bG93ZXN0Iiwgc3RkOjpudW1lcmljX2xpbWl0czxGbG9hdFR5cGU+Ojpsb3dlc3QoKSB9KTsKKyAg
ICBvcGVyYW5kcy5hcHBlbmQoeyAiZXBzaWxvbiIsIHN0ZDo6bnVtZXJpY19saW1pdHM8RmxvYXRU
eXBlPjo6ZXBzaWxvbigpIH0pOworICAgIG9wZXJhbmRzLmFwcGVuZCh7ICJpbmZpbml0aSIsIHN0
ZDo6bnVtZXJpY19saW1pdHM8RmxvYXRUeXBlPjo6aW5maW5pdHkoKSB9KTsKKyAgICBvcGVyYW5k
cy5hcHBlbmQoeyAiLWluZmluaXRpIiwgLSBzdGQ6Om51bWVyaWNfbGltaXRzPEZsb2F0VHlwZT46
OmluZmluaXR5KCkgfSk7CisgICAgb3BlcmFuZHMuYXBwZW5kKHsgIlBOYU4iLCBzdGF0aWNfY2Fz
dDxGbG9hdFR5cGU+KFBOYU4pIH0pOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBGbG9hdFR5cGU+
CitWZWN0b3I8T3BlcmFuZDxGbG9hdFR5cGU+PiBmbG9hdGluZ1BvaW50T3BlcmFuZHMoKQorewor
ICAgIFZlY3RvcjxPcGVyYW5kPEZsb2F0VHlwZT4+IG9wZXJhbmRzOworICAgIHBvcHVsYXRlV2l0
aEludGVyZXN0aW5nVmFsdWVzKG9wZXJhbmRzKTsKICAgICByZXR1cm4gb3BlcmFuZHM7CiB9Owog
CiBzdGF0aWMgVmVjdG9yPEludDY0T3BlcmFuZD4gaW50NjRPcGVyYW5kcygpCiB7CiAgICAgVmVj
dG9yPEludDY0T3BlcmFuZD4gb3BlcmFuZHM7Ci0gICAgZm9yIChEb3VibGVPcGVyYW5kIGRvdWJs
ZU9wZXJhbmQgOiBkb3VibGVPcGVyYW5kcygpKQorICAgIGZvciAoY29uc3QgYXV0byYgZG91Ymxl
T3BlcmFuZCA6IGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpCiAgICAgICAgIG9wZXJh
bmRzLmFwcGVuZCh7IGRvdWJsZU9wZXJhbmQubmFtZSwgYml0d2lzZV9jYXN0PGludDY0X3Q+KGRv
dWJsZU9wZXJhbmQudmFsdWUpIH0pOwogICAgIG9wZXJhbmRzLmFwcGVuZCh7ICIxIiwgMSB9KTsK
ICAgICBvcGVyYW5kcy5hcHBlbmQoeyAiLTEiLCAtMSB9KTsKQEAgLTU2NDYsNiArNjcxNywxNCBA
QCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgUlVOKHRlc3RBZGRJbW1zRG91Ymxl
KDAsIDApKTsKICAgICBSVU4odGVzdEFkZEltbXNEb3VibGUoMCwgbmVnYXRpdmVaZXJvKCkpKTsK
ICAgICBSVU4odGVzdEFkZEltbXNEb3VibGUobmVnYXRpdmVaZXJvKCksIG5lZ2F0aXZlWmVybygp
KSk7CisgICAgUlVOX1VOQVJZKHRlc3RBZGRBcmdGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRz
PGZsb2F0PigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RBZGRBcmdzRmxvYXQsIGZsb2F0aW5nUG9p
bnRPcGVyYW5kczxmbG9hdD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAg
ICBSVU5fQklOQVJZKHRlc3RBZGRBcmdJbW1GbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZs
b2F0PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9CSU5BUlko
dGVzdEFkZEltbUFyZ0Zsb2F0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0
aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0QWRkSW1tc0Zs
b2F0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5k
czxmbG9hdD4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RBZGRBcmdGbG9hdFdpdGhVc2VsZXNzRG91
YmxlQ29udmVyc2lvbiwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5f
QklOQVJZKHRlc3RBZGRBcmdzRmxvYXRXaXRoVXNlbGVzc0RvdWJsZUNvbnZlcnNpb24sIGZsb2F0
aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0Pigp
KTsKKyAgICBSVU5fQklOQVJZKHRlc3RBZGRBcmdzRmxvYXRXaXRoRWZmZWN0ZnVsRG91YmxlQ29u
dmVyc2lvbiwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3Bl
cmFuZHM8ZmxvYXQ+KCkpOwogCiAgICAgUlVOKHRlc3RNdWxBcmcoNSkpOwogICAgIFJVTih0ZXN0
TXVsQWRkQXJnKDUpKTsKQEAgLTU2ODcsMTEgKzY3NjYsMTkgQEAgdm9pZCBydW4oY29uc3QgY2hh
ciogZmlsdGVyKQogICAgIFJVTih0ZXN0TXVsQXJnczMyKDEsIDIpKTsKICAgICBSVU4odGVzdE11
bExvYWRUd2ljZSgpKTsKIAotICAgIFJVTl9VTkFSWSh0ZXN0TXVsQXJnRG91YmxlLCBkb3VibGVP
cGVyYW5kcygpKTsKLSAgICBSVU5fQklOQVJZKHRlc3RNdWxBcmdzRG91YmxlLCBkb3VibGVPcGVy
YW5kcygpLCBkb3VibGVPcGVyYW5kcygpKTsKLSAgICBSVU5fQklOQVJZKHRlc3RNdWxBcmdJbW1E
b3VibGUsIGRvdWJsZU9wZXJhbmRzKCksIGRvdWJsZU9wZXJhbmRzKCkpOwotICAgIFJVTl9CSU5B
UlkodGVzdE11bEltbUFyZ0RvdWJsZSwgZG91YmxlT3BlcmFuZHMoKSwgZG91YmxlT3BlcmFuZHMo
KSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0TXVsSW1tc0RvdWJsZSwgZG91YmxlT3BlcmFuZHMoKSwg
ZG91YmxlT3BlcmFuZHMoKSk7CisgICAgUlVOX1VOQVJZKHRlc3RNdWxBcmdEb3VibGUsIGZsb2F0
aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworICAgIFJVTl9CSU5BUlkodGVzdE11bEFyZ3NE
b3VibGUsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCksIGZsb2F0aW5nUG9pbnRPcGVy
YW5kczxkb3VibGU+KCkpOworICAgIFJVTl9CSU5BUlkodGVzdE11bEFyZ0ltbURvdWJsZSwgZmxv
YXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJs
ZT4oKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0TXVsSW1tQXJnRG91YmxlLCBmbG9hdGluZ1BvaW50
T3BlcmFuZHM8ZG91YmxlPigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKKyAg
ICBSVU5fQklOQVJZKHRlc3RNdWxJbW1zRG91YmxlLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91
YmxlPigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKKyAgICBSVU5fVU5BUlko
dGVzdE11bEFyZ0Zsb2F0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJV
Tl9CSU5BUlkodGVzdE11bEFyZ3NGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0Pigp
LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9CSU5BUlkodGVzdE11
bEFyZ0ltbUZsb2F0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9p
bnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0TXVsSW1tQXJnRmxvYXQs
IGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZs
b2F0PigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RNdWxJbW1zRmxvYXQsIGZsb2F0aW5nUG9pbnRP
cGVyYW5kczxmbG9hdD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBS
VU5fVU5BUlkodGVzdE11bEFyZ0Zsb2F0V2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uLCBmbG9h
dGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9CSU5BUlkodGVzdE11bEFyZ3NG
bG9hdFdpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lvbiwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZs
b2F0PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9CSU5BUlko
dGVzdE11bEFyZ3NGbG9hdFdpdGhFZmZlY3RmdWxEb3VibGVDb252ZXJzaW9uLCBmbG9hdGluZ1Bv
aW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CiAK
ICAgICBSVU4odGVzdERpdkFyZ0RvdWJsZShNX1BJKSk7CiAgICAgUlVOKHRlc3REaXZBcmdzRG91
YmxlKE1fUEksIDEpKTsKQEAgLTU3MTYsNiArNjgwMywxNCBAQCB2b2lkIHJ1bihjb25zdCBjaGFy
KiBmaWx0ZXIpCiAgICAgUlVOKHRlc3REaXZJbW1zRG91YmxlKDAsIDApKTsKICAgICBSVU4odGVz
dERpdkltbXNEb3VibGUoMCwgbmVnYXRpdmVaZXJvKCkpKTsKICAgICBSVU4odGVzdERpdkltbXNE
b3VibGUobmVnYXRpdmVaZXJvKCksIG5lZ2F0aXZlWmVybygpKSk7CisgICAgUlVOX1VOQVJZKHRl
c3REaXZBcmdGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5f
QklOQVJZKHRlc3REaXZBcmdzRmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwg
ZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3REaXZB
cmdJbW1GbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50
T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9CSU5BUlkodGVzdERpdkltbUFyZ0Zsb2F0LCBm
bG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9h
dD4oKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0RGl2SW1tc0Zsb2F0LCBmbG9hdGluZ1BvaW50T3Bl
cmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVO
X1VOQVJZKHRlc3REaXZBcmdGbG9hdFdpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lvbiwgZmxvYXRp
bmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3REaXZBcmdzRmxv
YXRXaXRoVXNlbGVzc0RvdWJsZUNvbnZlcnNpb24sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9h
dD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fQklOQVJZKHRl
c3REaXZBcmdzRmxvYXRXaXRoRWZmZWN0ZnVsRG91YmxlQ29udmVyc2lvbiwgZmxvYXRpbmdQb2lu
dE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwogCiAg
ICAgUlVOKHRlc3RTdWJBcmcoMjQpKTsKICAgICBSVU4odGVzdFN1YkFyZ3MoMSwgMSkpOwpAQCAt
NTc0NywxMSArNjg0MiwxOSBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgUlVO
KHRlc3RTdWJJbW1BcmczMigtMTMsIDQyKSk7CiAgICAgUlVOX1VOQVJZKHRlc3ROZWdWYWx1ZVN1
Yk9uZTMyLCBpbnQ2NE9wZXJhbmRzKCkpOwogCi0gICAgUlVOX1VOQVJZKHRlc3RTdWJBcmdEb3Vi
bGUsIGRvdWJsZU9wZXJhbmRzKCkpOwotICAgIFJVTl9CSU5BUlkodGVzdFN1YkFyZ3NEb3VibGUs
IGRvdWJsZU9wZXJhbmRzKCksIGRvdWJsZU9wZXJhbmRzKCkpOwotICAgIFJVTl9CSU5BUlkodGVz
dFN1YkFyZ0ltbURvdWJsZSwgZG91YmxlT3BlcmFuZHMoKSwgZG91YmxlT3BlcmFuZHMoKSk7Ci0g
ICAgUlVOX0JJTkFSWSh0ZXN0U3ViSW1tQXJnRG91YmxlLCBkb3VibGVPcGVyYW5kcygpLCBkb3Vi
bGVPcGVyYW5kcygpKTsKLSAgICBSVU5fQklOQVJZKHRlc3RTdWJJbW1zRG91YmxlLCBkb3VibGVP
cGVyYW5kcygpLCBkb3VibGVPcGVyYW5kcygpKTsKKyAgICBSVU5fVU5BUlkodGVzdFN1YkFyZ0Rv
dWJsZSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7CisgICAgUlVOX0JJTkFSWSh0
ZXN0U3ViQXJnc0RvdWJsZSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSwgZmxvYXRp
bmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0U3ViQXJnSW1t
RG91YmxlLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpLCBmbG9hdGluZ1BvaW50T3Bl
cmFuZHM8ZG91YmxlPigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RTdWJJbW1BcmdEb3VibGUsIGZs
b2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3Vi
bGU+KCkpOworICAgIFJVTl9CSU5BUlkodGVzdFN1YkltbXNEb3VibGUsIGZsb2F0aW5nUG9pbnRP
cGVyYW5kczxkb3VibGU+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworICAg
IFJVTl9VTkFSWSh0ZXN0U3ViQXJnRmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4o
KSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0U3ViQXJnc0Zsb2F0LCBmbG9hdGluZ1BvaW50T3BlcmFu
ZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX0JJ
TkFSWSh0ZXN0U3ViQXJnSW1tRmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwg
ZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RTdWJJ
bW1BcmdGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50
T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9CSU5BUlkodGVzdFN1YkltbXNGbG9hdCwgZmxv
YXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+
KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0U3ViQXJnRmxvYXRXaXRoVXNlbGVzc0RvdWJsZUNvbnZl
cnNpb24sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX0JJTkFSWSh0
ZXN0U3ViQXJnc0Zsb2F0V2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uLCBmbG9hdGluZ1BvaW50
T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAg
UlVOX0JJTkFSWSh0ZXN0U3ViQXJnc0Zsb2F0V2l0aEVmZmVjdGZ1bERvdWJsZUNvbnZlcnNpb24s
IGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZs
b2F0PigpKTsKIAogICAgIFJVTih0ZXN0Qml0QW5kQXJncyg0MywgNDMpKTsKICAgICBSVU4odGVz
dEJpdEFuZEFyZ3MoNDMsIDApKTsKQEAgLTYwMzcsMjAgKzcxNDAsNDMgQEAgdm9pZCBydW4oY29u
c3QgY2hhciogZmlsdGVyKQogICAgIFJVTl9VTkFSWSh0ZXN0Q2x6QXJnMzIsIGludDMyT3BlcmFu
ZHMoKSk7CiAgICAgUlVOX1VOQVJZKHRlc3RDbHpNZW0zMiwgaW50NjRPcGVyYW5kcygpKTsKIAot
ICAgIFJVTl9VTkFSWSh0ZXN0U3FydEFyZywgZG91YmxlT3BlcmFuZHMoKSk7Ci0gICAgUlVOX1VO
QVJZKHRlc3RTcXJ0SW1tLCBkb3VibGVPcGVyYW5kcygpKTsKLSAgICBSVU5fVU5BUlkodGVzdFNx
cnRNZW0sIGRvdWJsZU9wZXJhbmRzKCkpOwotCi0gICAgUlVOX1VOQVJZKHRlc3REb3VibGVBcmdU
b0ludDY0Qml0d2lzZUNhc3QsIGRvdWJsZU9wZXJhbmRzKCkpOwotICAgIFJVTl9VTkFSWSh0ZXN0
RG91YmxlSW1tVG9JbnQ2NEJpdHdpc2VDYXN0LCBkb3VibGVPcGVyYW5kcygpKTsKLSAgICBSVU5f
VU5BUlkodGVzdFR3b0JpdHdpc2VDYXN0T25Eb3VibGUsIGRvdWJsZU9wZXJhbmRzKCkpOwotICAg
IFJVTl9VTkFSWSh0ZXN0Qml0d2lzZUNhc3RPbkRvdWJsZUluTWVtb3J5LCBkb3VibGVPcGVyYW5k
cygpKTsKKyAgICBSVU5fVU5BUlkodGVzdFNxcnRBcmcsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxk
b3VibGU+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0U3FydEltbSwgZmxvYXRpbmdQb2ludE9wZXJh
bmRzPGRvdWJsZT4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RTcXJ0TWVtLCBmbG9hdGluZ1BvaW50
T3BlcmFuZHM8ZG91YmxlPigpKTsKKyAgICBSVU5fVU5BUlkodGVzdFNxcnRBcmcsIGZsb2F0aW5n
UG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RTcXJ0SW1tLCBmbG9h
dGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0U3FydE1lbSwg
ZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fVU5BUlkodGVzdFNxcnRB
cmdXaXRoVXNlbGVzc0RvdWJsZUNvbnZlcnNpb24sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9h
dD4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RTcXJ0QXJnV2l0aEVmZmVjdGZ1bERvdWJsZUNvbnZl
cnNpb24sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisKKyAgICBSVU5fVU5BUlko
dGVzdERvdWJsZUFyZ1RvSW50NjRCaXR3aXNlQ2FzdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRv
dWJsZT4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3REb3VibGVJbW1Ub0ludDY0Qml0d2lzZUNhc3Qs
IGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0VHdv
Qml0d2lzZUNhc3RPbkRvdWJsZSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7Cisg
ICAgUlVOX1VOQVJZKHRlc3RCaXR3aXNlQ2FzdE9uRG91YmxlSW5NZW1vcnksIGZsb2F0aW5nUG9p
bnRPcGVyYW5kczxkb3VibGU+KCkpOwogICAgIFJVTl9VTkFSWSh0ZXN0SW50NjRCQXJnVG9Eb3Vi
bGVCaXR3aXNlQ2FzdCwgaW50NjRPcGVyYW5kcygpKTsKICAgICBSVU5fVU5BUlkodGVzdEludDY0
QkltbVRvRG91YmxlQml0d2lzZUNhc3QsIGludDY0T3BlcmFuZHMoKSk7CiAgICAgUlVOX1VOQVJZ
KHRlc3RUd29CaXR3aXNlQ2FzdE9uSW50NjQsIGludDY0T3BlcmFuZHMoKSk7CiAgICAgUlVOX1VO
QVJZKHRlc3RCaXR3aXNlQ2FzdE9uSW50NjRJbk1lbW9yeSwgaW50NjRPcGVyYW5kcygpKTsKLQot
ICAgIFJVTih0ZXN0U3RvcmUoNDQpKTsKKyAgICBSVU5fVU5BUlkodGVzdEZsb2F0SW1tVG9JbnQz
MkJpdHdpc2VDYXN0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9V
TkFSWSh0ZXN0Qml0d2lzZUNhc3RPbkZsb2F0SW5NZW1vcnksIGZsb2F0aW5nUG9pbnRPcGVyYW5k
czxmbG9hdD4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RJbnQzMkJBcmdUb0Zsb2F0Qml0d2lzZUNh
c3QsIGludDMyT3BlcmFuZHMoKSk7CisgICAgUlVOX1VOQVJZKHRlc3RJbnQzMkJJbW1Ub0Zsb2F0
Qml0d2lzZUNhc3QsIGludDMyT3BlcmFuZHMoKSk7CisgICAgUlVOX1VOQVJZKHRlc3RUd29CaXR3
aXNlQ2FzdE9uSW50MzIsIGludDMyT3BlcmFuZHMoKSk7CisgICAgUlVOX1VOQVJZKHRlc3RCaXR3
aXNlQ2FzdE9uSW50MzJJbk1lbW9yeSwgaW50MzJPcGVyYW5kcygpKTsKKworICAgIFJVTl9VTkFS
WSh0ZXN0Q29udmVydERvdWJsZVRvRmxvYXRBcmcsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3Vi
bGU+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0Q29udmVydERvdWJsZVRvRmxvYXRJbW0sIGZsb2F0
aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0Q29udmVydERv
dWJsZVRvRmxvYXRNZW0sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworICAgIFJV
Tl9VTkFSWSh0ZXN0Q29udmVydEZsb2F0VG9Eb3VibGVBcmcsIGZsb2F0aW5nUG9pbnRPcGVyYW5k
czxmbG9hdD4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RDb252ZXJ0RmxvYXRUb0RvdWJsZUltbSwg
ZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fVU5BUlkodGVzdENvbnZl
cnRGbG9hdFRvRG91YmxlTWVtLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAg
IFJVTl9VTkFSWSh0ZXN0Q29udmVydERvdWJsZVRvRmxvYXRUb0RvdWJsZVRvRmxvYXQsIGZsb2F0
aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0U3RvcmVGbG9h
dCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RM
b2FkRmxvYXRDb252ZXJ0RG91YmxlQ29udmVydEZsb2F0U3RvcmVGbG9hdCwgZmxvYXRpbmdQb2lu
dE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fVU5BUlkodGVzdEZyb3VuZEFyZywgZmxvYXRp
bmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RGcm91bmRNZW0s
IGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworCisgICAgUlVOKHRlc3RTdG9yZTMy
KDQ0KSk7CiAgICAgUlVOKHRlc3RTdG9yZUNvbnN0YW50KDQ5KSk7CiAgICAgUlVOKHRlc3RTdG9y
ZUNvbnN0YW50UHRyKDQ5KSk7CiAgICAgUlVOKHRlc3RUcnVuYygoc3RhdGljX2Nhc3Q8aW50NjRf
dD4oMSkgPDwgNDApICsgNDIpKTsKQEAgLTYxNjQsMTQgKzcyOTAsMTcgQEAgdm9pZCBydW4oY29u
c3QgY2hhciogZmlsdGVyKQogICAgIFJVTih0ZXN0Q29tcGFyZShCaXRBbmQsIDQyLCA0MikpOwog
ICAgIFJVTih0ZXN0Q29tcGFyZShCaXRBbmQsIDQyLCAwKSk7CiAKLSAgICBSVU4odGVzdExvYWQ8
aW50MzJfdD4oTG9hZCwgNjApKTsKLSAgICBSVU4odGVzdExvYWQ8aW50MzJfdD4oTG9hZCwgLTYw
KSk7Ci0gICAgUlVOKHRlc3RMb2FkPGludDMyX3Q+KExvYWQsIDEwMDApKTsKLSAgICBSVU4odGVz
dExvYWQ8aW50MzJfdD4oTG9hZCwgLTEwMDApKTsKLSAgICBSVU4odGVzdExvYWQ8aW50MzJfdD4o
TG9hZCwgMTAwMDAwMCkpOwotICAgIFJVTih0ZXN0TG9hZDxpbnQzMl90PihMb2FkLCAtMTAwMDAw
MCkpOwotICAgIFJVTih0ZXN0TG9hZDxpbnQzMl90PihMb2FkLCAxMDAwMDAwMDAwKSk7Ci0gICAg
UlVOKHRlc3RMb2FkPGludDMyX3Q+KExvYWQsIC0xMDAwMDAwMDAwKSk7CisgICAgUlVOKHRlc3RM
b2FkPEludDMyPig2MCkpOworICAgIFJVTih0ZXN0TG9hZDxJbnQzMj4oLTYwKSk7CisgICAgUlVO
KHRlc3RMb2FkPEludDMyPigxMDAwKSk7CisgICAgUlVOKHRlc3RMb2FkPEludDMyPigtMTAwMCkp
OworICAgIFJVTih0ZXN0TG9hZDxJbnQzMj4oMTAwMDAwMCkpOworICAgIFJVTih0ZXN0TG9hZDxJ
bnQzMj4oLTEwMDAwMDApKTsKKyAgICBSVU4odGVzdExvYWQ8SW50MzI+KDEwMDAwMDAwMDApKTsK
KyAgICBSVU4odGVzdExvYWQ8SW50MzI+KC0xMDAwMDAwMDAwKSk7CisgICAgUlVOX1VOQVJZKHRl
c3RMb2FkPEludDY0PiwgaW50NjRPcGVyYW5kcygpKTsKKyAgICBSVU5fVU5BUlkodGVzdExvYWQ8
RmxvYXQ+LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9VTkFSWSh0
ZXN0TG9hZDxEb3VibGU+LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKICAgICAK
ICAgICBSVU4odGVzdExvYWQ8aW50OF90PihMb2FkOFMsIDYwKSk7CiAgICAgUlVOKHRlc3RMb2Fk
PGludDhfdD4oTG9hZDhTLCAtNjApKTsKQEAgLTYyMjIsOSArNzM1MSwxMiBAQCB2b2lkIHJ1bihj
b25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgUlVOKHRlc3RSZXR1cm5Eb3VibGUoMC4wKSk7CiAgICAg
UlVOKHRlc3RSZXR1cm5Eb3VibGUobmVnYXRpdmVaZXJvKCkpKTsKICAgICBSVU4odGVzdFJldHVy
bkRvdWJsZSg0Mi41KSk7CisgICAgUlVOX1VOQVJZKHRlc3RSZXR1cm5GbG9hdCwgZmxvYXRpbmdQ
b2ludE9wZXJhbmRzPGZsb2F0PigpKTsKIAogICAgIFJVTih0ZXN0Q2FsbFNpbXBsZURvdWJsZSgx
LCAyKSk7CiAgICAgUlVOKHRlc3RDYWxsRnVuY3Rpb25XaXRoSGVsbGFEb3VibGVBcmd1bWVudHMo
KSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0Q2FsbFNpbXBsZUZsb2F0LCBmbG9hdGluZ1BvaW50T3Bl
cmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVO
KHRlc3RDYWxsRnVuY3Rpb25XaXRoSGVsbGFGbG9hdEFyZ3VtZW50cygpKTsKIAogICAgIFJVTih0
ZXN0Q2hpbGxEaXYoNCwgMiwgMikpOwogICAgIFJVTih0ZXN0Q2hpbGxEaXYoMSwgMCwgMCkpOwpA
QCAtNjMxMSw5ICs3NDQzLDEzIEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRlcikKICAgICBS
VU4odGVzdEJhc2ljU2VsZWN0KCkpOwogICAgIFJVTih0ZXN0U2VsZWN0VGVzdCgpKTsKICAgICBS
VU4odGVzdFNlbGVjdENvbXBhcmVEb3VibGUoKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0U2VsZWN0
Q29tcGFyZUZsb2F0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9p
bnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0U2VsZWN0Q29tcGFyZUZs
b2F0VG9Eb3VibGUsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwgZmxvYXRpbmdQb2lu
dE9wZXJhbmRzPGZsb2F0PigpKTsKICAgICBSVU4odGVzdFNlbGVjdERvdWJsZSgpKTsKICAgICBS
VU4odGVzdFNlbGVjdERvdWJsZVRlc3QoKSk7CiAgICAgUlVOKHRlc3RTZWxlY3REb3VibGVDb21w
YXJlRG91YmxlKCkpOworICAgIFJVTl9CSU5BUlkodGVzdFNlbGVjdERvdWJsZUNvbXBhcmVGbG9h
dCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8
ZmxvYXQ+KCkpOworICAgIFJVTl9CSU5BUlkodGVzdFNlbGVjdEZsb2F0Q29tcGFyZUZsb2F0LCBm
bG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9h
dD4oKSk7CiAgICAgUlVOKHRlc3RTZWxlY3RGb2xkKDQyKSk7CiAgICAgUlVOKHRlc3RTZWxlY3RG
b2xkKDQzKSk7CiAgICAgUlVOKHRlc3RTZWxlY3RJbnZlcnQoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEIzT3V0cHV0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQjNPdXRwdXQuY3BwCmluZGV4IDUxY2ExMjE2MjI1Yzk3YjZhOTIwNzM1YjE4
ZDQ5YWU1ZGEzMDA4ZDEuLjVlZmM2N2RlMTlmMzY0ZDc3YTIwOGFkNWM4OGIxNGQwNTVkNzYzMzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQjNPdXRwdXQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQjNPdXRwdXQuY3BwCkBAIC05OSw5ICs5
OSw4IEBAIExWYWx1ZSBPdXRwdXQ6OmxvYWQxNlplcm9FeHQzMihUeXBlZFBvaW50ZXIgcG9pbnRl
cikKIAogTFZhbHVlIE91dHB1dDo6bG9hZEZsb2F0VG9Eb3VibGUoVHlwZWRQb2ludGVyIHBvaW50
ZXIpCiB7Ci0gICAgTFZhbHVlIGxvYWQgPSBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6Ok1lbW9yeVZh
bHVlPihtX3Byb2MsIEIzOjpMb2FkRmxvYXQsIEIzOjpEb3VibGUsIG9yaWdpbigpLCBwb2ludGVy
LnZhbHVlKCkpOwotICAgIHBvaW50ZXIuaGVhcCgpLmRlY29yYXRlSW5zdHJ1Y3Rpb24obG9hZCwg
Km1faGVhcHMpOwotICAgIHJldHVybiBsb2FkOworICAgIExWYWx1ZSBsb2FkZWRGbG9hdCA9IGxv
YWQocG9pbnRlciwgZmxvYXRUeXBlKTsKKyAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIz
OjpWYWx1ZT4obV9wcm9jLCBCMzo6RmxvYXRUb0RvdWJsZSwgb3JpZ2luKCksIGxvYWRlZEZsb2F0
KTsKIH0KIAogdm9pZCBPdXRwdXQ6OnN0b3JlKExWYWx1ZSB2YWx1ZSwgVHlwZWRQb2ludGVyIHBv
aW50ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEIzT3V0cHV0
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEIzT3V0cHV0LmgKaW5kZXggMWM0MDhh
OTM4Yzg3YTc1NzYwNWE2ZDQ0NGJlOGUwZmE2M2JhODhhMi4uZGMyN2RhYzE1OTE0YjkwNTg2Yzll
M2I0YTY1N2UwMmE0MjgzNTAyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExCM091dHB1dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQjNPdXRw
dXQuaApAQCAtMTk4LDggKzE5OCw3IEBAIHB1YmxpYzoKICAgICBMVmFsdWUgaW50VG9QdHIoTFZh
bHVlIHZhbHVlLCBMVHlwZSB0eXBlKSB7IENSQVNIKCk7IH0KICAgICBMVmFsdWUgcHRyVG9JbnQo
TFZhbHVlIHZhbHVlLCBMVHlwZSB0eXBlKSB7IENSQVNIKCk7IH0KICAgICBMVmFsdWUgYml0Q2Fz
dChMVmFsdWUsIExUeXBlKTsKLQotICAgIExWYWx1ZSBmcm91bmQoTFZhbHVlIGRvdWJsZVZhbHVl
KSB7IENSQVNIKCk7IH0KKyAgICBMVmFsdWUgZnJvdW5kKExWYWx1ZSBkb3VibGVWYWx1ZSk7CiAK
ICAgICBMVmFsdWUgbG9hZChUeXBlZFBvaW50ZXIsIExUeXBlKTsKICAgICB2b2lkIHN0b3JlKExW
YWx1ZSwgVHlwZWRQb2ludGVyKTsKQEAgLTQ4Nyw2ICs0ODYsMTIgQEAgaW5saW5lIExWYWx1ZSBP
dXRwdXQ6OmJpdENhc3QoTFZhbHVlIHZhbHVlLCBMVHlwZSB0eXBlKQogICAgIHJldHVybiBtX2Js
b2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpCaXR3aXNlQ2FzdCwgb3JpZ2lu
KCksIHZhbHVlKTsKIH0KIAoraW5saW5lIExWYWx1ZSBPdXRwdXQ6OmZyb3VuZChMVmFsdWUgZG91
YmxlVmFsdWUpCit7CisgICAgTFZhbHVlIGFzRmxvYXQgPSBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6
OlZhbHVlPihtX3Byb2MsIEIzOjpEb3VibGVUb0Zsb2F0LCBvcmlnaW4oKSwgZG91YmxlVmFsdWUp
OworICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpG
bG9hdFRvRG91YmxlLCBvcmlnaW4oKSwgYXNGbG9hdCk7Cit9CisKICNpZiBDT01QSUxFUihDTEFO
RykKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKICNlbmRpZiAvLyBDT01QSUxFUihDTEFO
RykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmNwcAppbmRl
eCA4NjI1YjhkZTQwODA0ZWJkODBjNGRmZDFlNTY2NzQ2YTEwMzIyYjFmLi4wNjE2OTQ0NDNjNTUw
YWQ0ODFkYzUwMzlhMGE3YzgxN2NjOTY4NzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTENvbW1vblZhbHVlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDb21tb25WYWx1ZXMuY3BwCkBAIC00OSw2ICs0OSw3IEBAIENvbW1vblZhbHVlczo6
Q29tbW9uVmFsdWVzKExDb250ZXh0IGNvbnRleHQpCiAgICAgLCBpbnQzMihCMzo6SW50MzIpCiAg
ICAgLCBpbnQ2NChCMzo6SW50NjQpCiAgICAgLCBpbnRQdHIoQjM6OnBvaW50ZXJUeXBlKCkpCisg
ICAgLCBmbG9hdFR5cGUoQjM6OkRvdWxlKQogICAgICwgZG91YmxlVHlwZShCMzo6RG91YmxlKQog
I2Vsc2UKICAgICA6IHZvaWRUeXBlKEZUTDo6dm9pZFR5cGUoY29udGV4dCkpCkBAIC01NiwxMCAr
NTcsMTAgQEAgQ29tbW9uVmFsdWVzOjpDb21tb25WYWx1ZXMoTENvbnRleHQgY29udGV4dCkKICAg
ICAsIGludDMyKGludDMyVHlwZShjb250ZXh0KSkKICAgICAsIGludDY0KGludDY0VHlwZShjb250
ZXh0KSkKICAgICAsIGludFB0cihpbnRQdHJUeXBlKGNvbnRleHQpKQorICAgICwgZmxvYXRUeXBl
KEZUTDo6ZmxvYXRUeXBlKGNvbnRleHQpKQogICAgICwgZG91YmxlVHlwZShGVEw6OmRvdWJsZVR5
cGUoY29udGV4dCkpCiAgICAgLCBpbnQ4KGludDhUeXBlKGNvbnRleHQpKQogICAgICwgaW50MTYo
aW50MTZUeXBlKGNvbnRleHQpKQotICAgICwgZmxvYXRUeXBlKEZUTDo6ZmxvYXRUeXBlKGNvbnRl
eHQpKQogICAgICwgcmVmOChwb2ludGVyVHlwZShpbnQ4KSkKICAgICAsIHJlZjE2KHBvaW50ZXJU
eXBlKGludDE2KSkKICAgICAsIHJlZjMyKHBvaW50ZXJUeXBlKGludDMyKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTENvbW1vblZhbHVlcy5oCmluZGV4IDYxNjE5MTFkN2JjNjcwYzVm
MWVlYmFjOGViMjUyYTdjNjg4YjcwMTguLjZkNmEzNWI2ZjJkZTdkNmE2NGI0ZTExZDcxN2Y2NTAz
ZmQzMjk3YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9u
VmFsdWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21tb25WYWx1ZXMu
aApAQCAtNTgsMTEgKzU4LDExIEBAIHB1YmxpYzoKICAgICBjb25zdCBMVHlwZSBpbnQzMjsKICAg
ICBjb25zdCBMVHlwZSBpbnQ2NDsKICAgICBjb25zdCBMVHlwZSBpbnRQdHI7CisgICAgY29uc3Qg
TFR5cGUgZmxvYXRUeXBlOwogICAgIGNvbnN0IExUeXBlIGRvdWJsZVR5cGU7CiAjaWYgIUZUTF9V
U0VTX0IzCiAgICAgY29uc3QgTFR5cGUgaW50ODsKICAgICBjb25zdCBMVHlwZSBpbnQxNjsKLSAg
ICBjb25zdCBMVHlwZSBmbG9hdFR5cGU7CiAgICAgY29uc3QgTFR5cGUgcmVmODsKICAgICBjb25z
dCBMVHlwZSByZWYxNjsKICAgICBjb25zdCBMVHlwZSByZWYzMjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266836</attachid>
            <date>2015-12-07 17:31:04 -0800</date>
            <delta_ts>2015-12-07 17:41:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-151974-20151207173035.patch</filename>
            <type>text/plain</type>
            <size>195476</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkzNjc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MjFkNjMyOWQ2OWRlNGIxYjcxY2EwOTM1Mzg4NWVlMWViMzJkMzliLi5lYmFlNDAyNTQ4ZGE0ZjRk
ZDIwNDI4OWYzMmZmNzA3YTBmZGM1OGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMzcgQEAKKzIwMTUtMTItMDcgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgW0pTQ10gQWRkIEZsb2F0IHN1cHBvcnQgdG8gQjMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTk3NAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBi
YXNpYyBmbG9hdCBzdXBwb3J0IHRvIEIzLgorCisgICAgICAgIFRoZSBuZXcgcGhhc2UgcmVkdWNl
RG91YmxlVG9GbG9hdCgpIGdpdmVzIHVzIGEgcHJpbWl0aXZlCisgICAgICAgIHZlcnNpb24gb2Yg
d2hhdCBMTFZNIHdhcyBnaXZpbmcgdXMgb24gZmxvYXRzLgorICAgICAgICBJdCBuZWVkcyB0byBz
dXBwb3J0IGNvbnZlcnNpb25zIGFjY3Jvc3MgUGhpcyBidXQgdGhhdCBjYW4KKyAgICAgICAgYmUg
YWRkZWQgbGF0ZXIuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6bW92ZURv
dWJsZUNvbmRpdGlvbmFsbHlGbG9hdCk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpz
cXJ0RmxvYXQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bG9hZEZs
b2F0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnN0b3JlRmxvYXQp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6Y29udmVydERvdWJsZVRv
RmxvYXQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6Y29udmVydEZs
b2F0VG9Eb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YWRk
RmxvYXQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6ZGl2RmxvYXQp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6c3ViRmxvYXQpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bXVsRmxvYXQpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YnJhbmNoRG91YmxlKToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaEZsb2F0KToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJYODZDb21tb246Om1vdmVDb25kaXRpb25hbGx5RG91YmxlKToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246Om1vdmVDb25kaXRpb25hbGx5RmxvYXQp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6anVtcEFmdGVyRmxvYXRp
bmdQb2ludENvbXBhcmUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6
bW92ZUNvbmRpdGlvbmFsbHlBZnRlckZsb2F0aW5nUG9pbnRDb21wYXJlKToKKyAgICAgICAgKiBh
c3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YWRk
c3NfcnIpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OmFkZHNzX21yKToKKyAgICAgICAg
KEpTQzo6WDg2QXNzZW1ibGVyOjpjdnRzZDJzc19tcik6CisgICAgICAgIChKU0M6Olg4NkFzc2Vt
Ymxlcjo6Y3Z0c3Myc2RfbXIpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Om1vdnNzX3Jt
KToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjptb3Zzc19tcik6CisgICAgICAgIChKU0M6
Olg4NkFzc2VtYmxlcjo6bXVsc3NfcnIpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Om11
bHNzX21yKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpzdWJzc19ycik6CisgICAgICAg
IChKU0M6Olg4NkFzc2VtYmxlcjo6c3Vic3NfbXIpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJs
ZXI6OnVjb21pc3NfcnIpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnVjb21pc3NfbXIp
OgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OmRpdnNzX3JyKToKKyAgICAgICAgKEpTQzo6
WDg2QXNzZW1ibGVyOjpkaXZzc19tcik6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6c3Fy
dHNzX3JyKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpzcXJ0c3NfbXIpOgorICAgICAg
ICAqIGIzL0IzQ29uc3QzMlZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkNvbnN0MzJWYWx1
ZTo6Yml0d2lzZUNhc3RDb25zdGFudCk6CisgICAgICAgICogYjMvQjNDb25zdDMyVmFsdWUuaDoK
KyAgICAgICAgKiBiMy9CM0NvbnN0RG91YmxlVmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6
Q29uc3REb3VibGVWYWx1ZTo6ZG91YmxlVG9GbG9hdENvbnN0YW50KToKKyAgICAgICAgKEpTQzo6
QjM6OkNvbnN0RG91YmxlVmFsdWU6OnNxcnRDb25zdGFudCk6CisgICAgICAgICogYjMvQjNDb25z
dERvdWJsZVZhbHVlLmg6CisgICAgICAgICogYjMvQjNDb25zdEZsb2F0VmFsdWUuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6QjM6OkNvbnN0RmxvYXRWYWx1ZTo6fkNvbnN0RmxvYXRWYWx1ZSk6
CisgICAgICAgIChKU0M6OkIzOjpDb25zdEZsb2F0VmFsdWU6Om5lZ0NvbnN0YW50KToKKyAgICAg
ICAgKEpTQzo6QjM6OkNvbnN0RmxvYXRWYWx1ZTo6YWRkQ29uc3RhbnQpOgorICAgICAgICAoSlND
OjpCMzo6Q29uc3RGbG9hdFZhbHVlOjpzdWJDb25zdGFudCk6CisgICAgICAgIChKU0M6OkIzOjpD
b25zdEZsb2F0VmFsdWU6Om11bENvbnN0YW50KToKKyAgICAgICAgKEpTQzo6QjM6OkNvbnN0Rmxv
YXRWYWx1ZTo6Yml0d2lzZUNhc3RDb25zdGFudCk6CisgICAgICAgIChKU0M6OkIzOjpDb25zdEZs
b2F0VmFsdWU6OmZsb2F0VG9Eb3VibGVDb25zdGFudCk6CisgICAgICAgIChKU0M6OkIzOjpDb25z
dEZsb2F0VmFsdWU6OnNxcnRDb25zdGFudCk6CisgICAgICAgIChKU0M6OkIzOjpDb25zdEZsb2F0
VmFsdWU6OmRpdkNvbnN0YW50KToKKyAgICAgICAgKEpTQzo6QjM6OkNvbnN0RmxvYXRWYWx1ZTo6
ZXF1YWxDb25zdGFudCk6CisgICAgICAgIChKU0M6OkIzOjpDb25zdEZsb2F0VmFsdWU6Om5vdEVx
dWFsQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpCMzo6Q29uc3RGbG9hdFZhbHVlOjpsZXNzVGhh
bkNvbnN0YW50KToKKyAgICAgICAgKEpTQzo6QjM6OkNvbnN0RmxvYXRWYWx1ZTo6Z3JlYXRlclRo
YW5Db25zdGFudCk6CisgICAgICAgIChKU0M6OkIzOjpDb25zdEZsb2F0VmFsdWU6Omxlc3NFcXVh
bENvbnN0YW50KToKKyAgICAgICAgKEpTQzo6QjM6OkNvbnN0RmxvYXRWYWx1ZTo6Z3JlYXRlckVx
dWFsQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpCMzo6Q29uc3RGbG9hdFZhbHVlOjpkdW1wTWV0
YSk6CisgICAgICAgICogYjMvQjNDb25zdEZsb2F0VmFsdWUuaDogQ29waWVkIGZyb20gU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3REb3VibGVWYWx1ZS5oLgorICAgICAgICAqIGIzL0Iz
R2VuZXJhdGUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6Z2VuZXJhdGVUb0Fpcik6CisgICAgICAg
ICogYjMvQjNMb3dlclRvQWlyLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fp
cjo6dHJ5T3Bjb2RlRm9yVHlwZSk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6
Om9wY29kZUZvclR5cGUpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjphcHBl
bmRVbk9wKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YXBwZW5kQmluT3Ap
OgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjphcHBlbmRTaGlmdCk6CisgICAg
ICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnRyeUFwcGVuZFN0b3JlVW5PcCk6CisgICAg
ICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnRyeUFwcGVuZFN0b3JlQmluT3ApOgorICAg
ICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjptb3ZlRm9yVHlwZSk6CisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnJlbGF4ZWRNb3ZlRm9yVHlwZSk6CisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmNyZWF0ZUdlbmVyaWNDb21wYXJlKToKKyAgICAgICAg
KEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6Y3JlYXRlQnJhbmNoKToKKyAgICAgICAgKEpTQzo6
QjM6OkFpcjo6TG93ZXJUb0Fpcjo6Y3JlYXRlQ29tcGFyZSk6CisgICAgICAgIChKU0M6OkIzOjpB
aXI6Okxvd2VyVG9BaXI6OmNyZWF0ZVNlbGVjdCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxv
d2VyVG9BaXI6Omxvd2VyKToKKyAgICAgICAgKiBiMy9CM01lbW9yeVZhbHVlLmNwcDoKKyAgICAg
ICAgKEpTQzo6QjM6Ok1lbW9yeVZhbHVlOjphY2Nlc3NCeXRlU2l6ZSk6IERlbGV0ZWQuCisgICAg
ICAgICogYjMvQjNNZW1vcnlWYWx1ZS5oOgorICAgICAgICAqIGIzL0IzTW92ZUNvbnN0YW50cy5j
cHA6CisgICAgICAgICogYjMvQjNPcGNvZGUuY3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVy
bmFsKToKKyAgICAgICAgKiBiMy9CM09wY29kZS5oOgorICAgICAgICAqIGIzL0IzUHJvY2VkdXJl
LmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OlByb2NlZHVyZTo6YWRkSW50Q29uc3RhbnQpOgorICAg
ICAgICAqIGIzL0IzUmVkdWNlRG91YmxlVG9GbG9hdC5jcHA6IEFkZGVkLgorICAgICAgICAoSlND
OjpCMzo6cmVkdWNlRG91YmxlVG9GbG9hdCk6CisgICAgICAgICogYjMvQjNSZWR1Y2VEb3VibGVU
b0Zsb2F0Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1R5cGUuY3Bw
LgorICAgICAgICAqIGIzL0IzUmVkdWNlU3RyZW5ndGguY3BwOgorICAgICAgICAqIGIzL0IzVHlw
ZS5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGIzL0IzVHlw
ZS5oOgorICAgICAgICAoSlNDOjpCMzo6aXNGbG9hdCk6CisgICAgICAgIChKU0M6OkIzOjpzaXpl
b2ZUeXBlKToKKyAgICAgICAgKiBiMy9CM1ZhbGlkYXRlLmNwcDoKKyAgICAgICAgKiBiMy9CM1Zh
bHVlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjpkb3VibGVUb0Zsb2F0Q29uc3RhbnQp
OgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OmZsb2F0VG9Eb3VibGVDb25zdGFudCk6CisgICAg
ICAgIChKU0M6OkIzOjpWYWx1ZTo6c3FydENvbnN0YW50KToKKyAgICAgICAgKEpTQzo6QjM6OlZh
bHVlOjphc1RyaVN0YXRlKToKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjplZmZlY3RzKToKKyAg
ICAgICAgKEpTQzo6QjM6OlZhbHVlOjprZXkpOgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OmNo
ZWNrT3Bjb2RlKToKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjp0eXBlRm9yKToKKyAgICAgICAg
KiBiMy9CM1ZhbHVlLmg6CisgICAgICAgICogYjMvQjNWYWx1ZUlubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6QjM6OlZhbHVlOjppc0NvbnN0YW50KToKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjpo
YXNGbG9hdCk6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZTo6YXNGbG9hdCk6CisgICAgICAgIChK
U0M6OkIzOjpWYWx1ZTo6aGFzTnVtYmVyKToKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjppc05l
Z2F0aXZlWmVybyk6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZTo6cmVwcmVzZW50YWJsZUFzKToK
KyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjphc051bWJlcik6CisgICAgICAgICogYjMvQjNWYWx1
ZUtleS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZUtleTo6bWF0ZXJpYWxpemUpOgorICAg
ICAgICAqIGIzL0IzVmFsdWVLZXkuaDoKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlS2V5OjpWYWx1
ZUtleSk6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZUtleTo6ZmxvYXRWYWx1ZSk6CisgICAgICAg
ICogYjMvYWlyL0FpckFyZy5oOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OnR5cGVGb3JC
M1R5cGUpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OndpZHRoRm9yQjNUeXBlKToKKyAg
ICAgICAgKiBiMy9haXIvQWlyRml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzLmNwcDoKKyAgICAgICAg
KiBiMy9haXIvQWlyT3Bjb2RlLm9wY29kZXM6CisgICAgICAgICogYjMvdGVzdGIzLmNwcDoKKyAg
ICAgICAgKEpTQzo6QjM6OnRlc3RBZGRBcmdGbG9hdCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0
QWRkQXJnc0Zsb2F0KToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RBZGRBcmdJbW1GbG9hdCk6Cisg
ICAgICAgIChKU0M6OkIzOjp0ZXN0QWRkSW1tQXJnRmxvYXQpOgorICAgICAgICAoSlNDOjpCMzo6
dGVzdEFkZEltbXNGbG9hdCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0QWRkQXJnRmxvYXRXaXRo
VXNlbGVzc0RvdWJsZUNvbnZlcnNpb24pOgorICAgICAgICAoSlNDOjpCMzo6dGVzdEFkZEFyZ3NG
bG9hdFdpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lvbik6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0
QWRkQXJnc0Zsb2F0V2l0aEVmZmVjdGZ1bERvdWJsZUNvbnZlcnNpb24pOgorICAgICAgICAoSlND
OjpCMzo6dGVzdE11bEFyZ0Zsb2F0KToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RNdWxBcmdzRmxv
YXQpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdE11bEFyZ0ltbUZsb2F0KToKKyAgICAgICAgKEpT
Qzo6QjM6OnRlc3RNdWxJbW1BcmdGbG9hdCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0TXVsSW1t
c0Zsb2F0KToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RNdWxBcmdGbG9hdFdpdGhVc2VsZXNzRG91
YmxlQ29udmVyc2lvbik6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0TXVsQXJnc0Zsb2F0V2l0aFVz
ZWxlc3NEb3VibGVDb252ZXJzaW9uKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RNdWxBcmdzRmxv
YXRXaXRoRWZmZWN0ZnVsRG91YmxlQ29udmVyc2lvbik6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0
RGl2QXJnRmxvYXQpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdERpdkFyZ3NGbG9hdCk6CisgICAg
ICAgIChKU0M6OkIzOjp0ZXN0RGl2QXJnSW1tRmxvYXQpOgorICAgICAgICAoSlNDOjpCMzo6dGVz
dERpdkltbUFyZ0Zsb2F0KToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3REaXZJbW1zRmxvYXQpOgor
ICAgICAgICAoSlNDOjpCMzo6dGVzdERpdkFyZ0Zsb2F0V2l0aFVzZWxlc3NEb3VibGVDb252ZXJz
aW9uKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3REaXZBcmdzRmxvYXRXaXRoVXNlbGVzc0RvdWJs
ZUNvbnZlcnNpb24pOgorICAgICAgICAoSlNDOjpCMzo6dGVzdERpdkFyZ3NGbG9hdFdpdGhFZmZl
Y3RmdWxEb3VibGVDb252ZXJzaW9uKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RTdWJBcmdGbG9h
dCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0U3ViQXJnc0Zsb2F0KToKKyAgICAgICAgKEpTQzo6
QjM6OnRlc3RTdWJBcmdJbW1GbG9hdCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0U3ViSW1tQXJn
RmxvYXQpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdFN1YkltbXNGbG9hdCk6CisgICAgICAgIChK
U0M6OkIzOjp0ZXN0U3ViQXJnRmxvYXRXaXRoVXNlbGVzc0RvdWJsZUNvbnZlcnNpb24pOgorICAg
ICAgICAoSlNDOjpCMzo6dGVzdFN1YkFyZ3NGbG9hdFdpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lv
bik6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0U3ViQXJnc0Zsb2F0V2l0aEVmZmVjdGZ1bERvdWJs
ZUNvbnZlcnNpb24pOgorICAgICAgICAoSlNDOjpCMzo6dGVzdENsek1lbTMyKToKKyAgICAgICAg
KEpTQzo6QjM6OnRlc3RTcXJ0QXJnKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RTcXJ0SW1tKToK
KyAgICAgICAgKEpTQzo6QjM6OnRlc3RTcXJ0TWVtKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RT
cXJ0QXJnV2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uKToKKyAgICAgICAgKEpTQzo6QjM6OnRl
c3RTcXJ0QXJnV2l0aEVmZmVjdGZ1bERvdWJsZUNvbnZlcnNpb24pOgorICAgICAgICAoSlNDOjpC
Mzo6dGVzdERvdWJsZUFyZ1RvSW50NjRCaXR3aXNlQ2FzdCk6CisgICAgICAgIChKU0M6OkIzOjp0
ZXN0RG91YmxlSW1tVG9JbnQ2NEJpdHdpc2VDYXN0KToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RU
d29CaXR3aXNlQ2FzdE9uRG91YmxlKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RCaXR3aXNlQ2Fz
dE9uRG91YmxlSW5NZW1vcnkpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdEludDY0QkFyZ1RvRG91
YmxlQml0d2lzZUNhc3QpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdEludDY0QkltbVRvRG91Ymxl
Qml0d2lzZUNhc3QpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdFR3b0JpdHdpc2VDYXN0T25JbnQ2
NCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Qml0d2lzZUNhc3RPbkludDY0SW5NZW1vcnkpOgor
ICAgICAgICAoSlNDOjpCMzo6dGVzdEZsb2F0SW1tVG9JbnQzMkJpdHdpc2VDYXN0KToKKyAgICAg
ICAgKEpTQzo6QjM6OnRlc3RCaXR3aXNlQ2FzdE9uRmxvYXRJbk1lbW9yeSk6CisgICAgICAgIChK
U0M6OkIzOjp0ZXN0SW50MzJCQXJnVG9GbG9hdEJpdHdpc2VDYXN0KToKKyAgICAgICAgKEpTQzo6
QjM6OnRlc3RJbnQzMkJJbW1Ub0Zsb2F0Qml0d2lzZUNhc3QpOgorICAgICAgICAoSlNDOjpCMzo6
dGVzdFR3b0JpdHdpc2VDYXN0T25JbnQzMik6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Qml0d2lz
ZUNhc3RPbkludDMySW5NZW1vcnkpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdENvbnZlcnREb3Vi
bGVUb0Zsb2F0QXJnKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RDb252ZXJ0RG91YmxlVG9GbG9h
dEltbSk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Q29udmVydERvdWJsZVRvRmxvYXRNZW0pOgor
ICAgICAgICAoSlNDOjpCMzo6dGVzdENvbnZlcnRGbG9hdFRvRG91YmxlQXJnKToKKyAgICAgICAg
KEpTQzo6QjM6OnRlc3RDb252ZXJ0RmxvYXRUb0RvdWJsZUltbSk6CisgICAgICAgIChKU0M6OkIz
Ojp0ZXN0Q29udmVydEZsb2F0VG9Eb3VibGVNZW0pOgorICAgICAgICAoSlNDOjpCMzo6dGVzdENv
bnZlcnREb3VibGVUb0Zsb2F0VG9Eb3VibGVUb0Zsb2F0KToKKyAgICAgICAgKEpTQzo6QjM6OnRl
c3RMb2FkRmxvYXRDb252ZXJ0RG91YmxlQ29udmVydEZsb2F0U3RvcmVGbG9hdCk6CisgICAgICAg
IChKU0M6OkIzOjp0ZXN0RnJvdW5kQXJnKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RGcm91bmRN
ZW0pOgorICAgICAgICAoSlNDOjpCMzo6dGVzdFN0b3JlMzIpOgorICAgICAgICAoSlNDOjpCMzo6
bW9kZWxMb2FkKToKKyAgICAgICAgKEpTQzo6QjM6OmZsb2F0Pik6CisgICAgICAgIChKU0M6OkIz
Ojpkb3VibGU+KToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RMb2FkKToKKyAgICAgICAgKEpTQzo6
QjM6OnRlc3RTdG9yZUZsb2F0KToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RSZXR1cm5GbG9hdCk6
CisgICAgICAgIChKU0M6OkIzOjpzaW1wbGVGdW5jdGlvbkZsb2F0KToKKyAgICAgICAgKEpTQzo6
QjM6OnRlc3RDYWxsU2ltcGxlRmxvYXQpOgorICAgICAgICAoSlNDOjpCMzo6ZnVuY3Rpb25XaXRo
SGVsbGFGbG9hdEFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Q2FsbEZ1bmN0aW9u
V2l0aEhlbGxhRmxvYXRBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdFNlbGVjdENv
bXBhcmVGbG9hdCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0U2VsZWN0Q29tcGFyZUZsb2F0VG9E
b3VibGUpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdFNlbGVjdERvdWJsZUNvbXBhcmVGbG9hdCk6
CisgICAgICAgIChKU0M6OkIzOjp0ZXN0U2VsZWN0RmxvYXRDb21wYXJlRmxvYXQpOgorICAgICAg
ICAoSlNDOjpCMzo6cG9wdWxhdGVXaXRoSW50ZXJlc3RpbmdWYWx1ZXMpOgorICAgICAgICAoSlND
OjpCMzo6ZmxvYXRpbmdQb2ludE9wZXJhbmRzKToKKyAgICAgICAgKEpTQzo6QjM6OmludDY0T3Bl
cmFuZHMpOgorICAgICAgICAoSlNDOjpCMzo6cnVuKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RT
dG9yZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpwb3NJbmZpbml0eSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkIzOjpuZWdJbmZpbml0eSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkIzOjpkb3VibGVPcGVyYW5kcyk6IERlbGV0ZWQuCisgICAgICAgICogZnRsL0ZUTEIzT3V0cHV0
LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmxvYWRGbG9hdFRvRG91YmxlKToKKyAg
ICAgICAgKiBmdGwvRlRMQjNPdXRwdXQuaDoKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmZy
b3VuZCk6CisgICAgICAgICogZnRsL0ZUTENvbW1vblZhbHVlcy5jcHA6CisgICAgICAgIChKU0M6
OkZUTDo6Q29tbW9uVmFsdWVzOjpDb21tb25WYWx1ZXMpOgorICAgICAgICAqIGZ0bC9GVExDb21t
b25WYWx1ZXMuaDoKKwogMjAxNS0xMi0wNyAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxl
LmNvbT4KIAogICAgICAgICBDUkFTSDogQ29kZUJsb2NrOjpzZXRPcHRpbWl6YXRpb25UaHJlc2hv
bGRCYXNlZE9uQ29tcGlsYXRpb25SZXN1bHQgKyA1NjcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAppbmRleCBjZWE2NjY1ODQ3ZjY4MDhiMWNmNDAxMTU1YTk1YjdiOWYyY2RiNmZhLi5j
ODYzMjc2YmM2OTRjZDMzZTVmYTRiMWNiZmYyNWQ1YTI5ZDkxZWFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xMDQsNiArMTA0LDcgQEAgc2V0KEphdmFTY3JpcHRDb3Jl
X1NPVVJDRVMKICAgICBiMy9CM0NvbnN0MzJWYWx1ZS5jcHAKICAgICBiMy9CM0NvbnN0NjRWYWx1
ZS5jcHAKICAgICBiMy9CM0NvbnN0RG91YmxlVmFsdWUuY3BwCisgICAgYjMvQjNDb25zdEZsb2F0
VmFsdWUuY3BwCiAgICAgYjMvQjNDb25zdHJhaW5lZFZhbHVlLmNwcAogICAgIGIzL0IzQ29udHJv
bFZhbHVlLmNwcAogICAgIGIzL0IzRGF0YVNlY3Rpb24uY3BwCkBAIC0xMjQsNiArMTI1LDcgQEAg
c2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBiMy9CM1BoYXNlU2NvcGUuY3BwCiAgICAg
YjMvQjNQaGlDaGlsZHJlbi5jcHAKICAgICBiMy9CM1Byb2NlZHVyZS5jcHAKKyAgICBiMy9CM1Jl
ZHVjZURvdWJsZVRvRmxvYXQuY3BwCiAgICAgYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAKICAgICBi
My9CM1N0YWNrbWFwR2VuZXJhdGlvblBhcmFtcy5jcHAKICAgICBiMy9CM1N0YWNrbWFwU3BlY2lh
bC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTdlZTgwOGYzODRkMWFlNzU4
ZDEwMjdiM2MyYzU1ODdhNzM0YmU1ZC4uNzE5ZDllMDIzYTY2YmVmZmM4MDZkYTMxOGM2OGZmODdl
N2U4NTQzNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExMjksNiArMTEyOSwx
MCBAQAogCQk0MURFQTEzMjFCOUYzMTYzMDA2RDY1REQgLyogQnVpbHRpblV0aWxzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MURFQTEzMTFCOUYzMTU0
MDA2RDY1REQgLyogQnVpbHRpblV0aWxzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDM0MEE0ODQxQTkwNTFBRjAwRDczQ0NBIC8qIE1hdGhDb21t
b24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM0
MEE0ODIxQTkwNTFBRjAwRDczQ0NBIC8qIE1hdGhDb21tb24uY3BwICovOyB9OwogCQk0MzQwQTQ4
NTFBOTA1MUFGMDBENzNDQ0EgLyogTWF0aENvbW1vbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM0MEE0ODMxQTkwNTFBRjAwRDczQ0NBIC8qIE1hdGhD
b21tb24uaCAqLzsgfTsKKwkJNDM0MjJBNjIxQzE1OEU2QTAwRTJFQjk4IC8qIEIzQ29uc3RGbG9h
dFZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQzNDIyQTYwMUMxNTg3MUIwMEUyRUI5OCAvKiBCM0NvbnN0RmxvYXRWYWx1ZS5jcHAgKi87IH07
CisJCTQzNDIyQTYzMUMxNThFNkQwMEUyRUI5OCAvKiBCM0NvbnN0RmxvYXRWYWx1ZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM0MjJBNjExQzE1ODcx
QjAwRTJFQjk4IC8qIEIzQ29uc3RGbG9hdFZhbHVlLmggKi87IH07CisJCTQzNDIyQTY2MUMxNjI2
NzUwMEUyRUI5OCAvKiBCM1JlZHVjZURvdWJsZVRvRmxvYXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM0MjJBNjQxQzE2MjIxRTAwRTJFQjk4IC8q
IEIzUmVkdWNlRG91YmxlVG9GbG9hdC5jcHAgKi87IH07CisJCTQzNDIyQTY3MUMxNjI2NzgwMEUy
RUI5OCAvKiBCM1JlZHVjZURvdWJsZVRvRmxvYXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzNDIyQTY1MUMxNjIyMUUwMEUyRUI5OCAvKiBCM1JlZHVj
ZURvdWJsZVRvRmxvYXQuaCAqLzsgfTsKIAkJNDQ0M0FFMzMxNkUxODhEOTAwNzZGMTEwIC8qIEZv
dW5kYXRpb24uZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTFGMEVCNjEwNUM4NkM2QjAwRTZERjFCIC8qIEZvdW5kYXRpb24uZnJhbWV3
b3JrICovOyB9OwogCQk0NTE1MzlCOTEyREM5OTQ1MDBFRjdBQzQgLyogWWFyci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDUxNTM5QjgxMkRDOTk0NTAw
RUY3QUM0IC8qIFlhcnIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk1MjY3OEY4RTFBMDMxMDA5MDA2QTMwNkQgLyogQmFzaWNCbG9ja0xvY2F0aW9u
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyNjc4
RjhDMUEwMzEwMDkwMDZBMzA2RCAvKiBCYXNpY0Jsb2NrTG9jYXRpb24uY3BwICovOyB9OwpAQCAt
MTk5MiwxMiArMTk5NiwxMiBAQAogCQlGRTEyMjAyODFCRTdGNTkxMDAzOUU2RjIgLyogSklUQWRk
R2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZFMTIyMDI1MUJFN0Y1NjQwMDM5RTZGMiAvKiBKSVRBZGRHZW5lcmF0b3IuY3BwICovOyB9
OwogCQlGRTE4N0EwMTFCRkJFNTVFMDAzOEJCQ0EgLyogSklUTXVsR2VuZXJhdG9yLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMTg3OUZGMUJGQkM3
M0MwMDM4QkJDQSAvKiBKSVRNdWxHZW5lcmF0b3IuY3BwICovOyB9OwogCQlGRTE4N0EwMjFCRkJF
NTYxMDAzOEJCQ0EgLyogSklUTXVsR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTE4N0EwMDFCRkJDNzNDMDAzOEJCQ0EgLyogSklUTXVs
R2VuZXJhdG9yLmggKi87IH07Ci0JCUZFMTg3QTBEMUMwMzBENUMwMDM4QkJDQSAvKiBKSVREaXZH
ZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZFMTg3QTBCMUMwMjI5MjMwMDM4QkJDQSAvKiBKSVREaXZHZW5lcmF0b3IuaCAqLzsgc2V0dGlu
Z3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9OwotCQlGRTE4N0EwRTFDMDMwRDY0MDAzOEJCQ0Eg
LyogSklURGl2R2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZFMTg3QTBBMUMwMjI5MjMwMDM4QkJDQSAvKiBKSVREaXZHZW5lcmF0b3Iu
Y3BwICovOyBzZXR0aW5ncyA9IHtBU1NFVF9UQUdTID0gKCk7IH07IH07Ci0JCUZFMTg3QTBGMUMw
MzBENkMwMDM4QkJDQSAvKiBTbmlwcGV0T3BlcmFuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxODdBMEMxQzAyRUJBNzAwMzhCQkNBIC8qIFNuaXBw
ZXRPcGVyYW5kLmggKi87IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKLQkJRkUx
ODdBMTgxQzBFMTNERDAwMzhCQkNBIC8qIEZUTElubGluZUNhY2hlRGVzY3JpcHRvcklubGluZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMTg3QTE3
MUMwRTEzQzYwMDM4QkJDQSAvKiBGVExJbmxpbmVDYWNoZURlc2NyaXB0b3JJbmxpbmVzLmggKi87
IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKLQkJRkUxODdBMTkxQzBFMTNFMzAw
MzhCQkNBIC8qIEZUTENvbXBpbGVCaW5hcnlPcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTE4N0ExNTFDMEUxM0M2MDAzOEJCQ0EgLyogRlRMQ29t
cGlsZUJpbmFyeU9wLmNwcCAqLzsgc2V0dGluZ3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9Owot
CQlGRTE4N0ExQTFDMEUxM0U2MDAzOEJCQ0EgLyogRlRMQ29tcGlsZUJpbmFyeU9wLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTE4N0ExNjFDMEUxM0M2
MDAzOEJCQ0EgLyogRlRMQ29tcGlsZUJpbmFyeU9wLmggKi87IHNldHRpbmdzID0ge0FTU0VUX1RB
R1MgPSAoKTsgfTsgfTsKKwkJRkUxODdBMEQxQzAzMEQ1QzAwMzhCQkNBIC8qIEpJVERpdkdlbmVy
YXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUx
ODdBMEIxQzAyMjkyMzAwMzhCQkNBIC8qIEpJVERpdkdlbmVyYXRvci5oICovOyB9OworCQlGRTE4
N0EwRTFDMDMwRDY0MDAzOEJCQ0EgLyogSklURGl2R2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMTg3QTBBMUMwMjI5MjMwMDM4QkJD
QSAvKiBKSVREaXZHZW5lcmF0b3IuY3BwICovOyB9OworCQlGRTE4N0EwRjFDMDMwRDZDMDAzOEJC
Q0EgLyogU25pcHBldE9wZXJhbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZFMTg3QTBDMUMwMkVCQTcwMDM4QkJDQSAvKiBTbmlwcGV0T3BlcmFuZC5o
ICovOyB9OworCQlGRTE4N0ExODFDMEUxM0REMDAzOEJCQ0EgLyogRlRMSW5saW5lQ2FjaGVEZXNj
cmlwdG9ySW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkUxODdBMTcxQzBFMTNDNjAwMzhCQkNBIC8qIEZUTElubGluZUNhY2hlRGVzY3JpcHRv
cklubGluZXMuaCAqLzsgfTsKKwkJRkUxODdBMTkxQzBFMTNFMzAwMzhCQkNBIC8qIEZUTENvbXBp
bGVCaW5hcnlPcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRTE4N0ExNTFDMEUxM0M2MDAzOEJCQ0EgLyogRlRMQ29tcGlsZUJpbmFyeU9wLmNwcCAq
LzsgfTsKKwkJRkUxODdBMUExQzBFMTNFNjAwMzhCQkNBIC8qIEZUTENvbXBpbGVCaW5hcnlPcC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxODdBMTYx
QzBFMTNDNjAwMzhCQkNBIC8qIEZUTENvbXBpbGVCaW5hcnlPcC5oICovOyB9OwogCQlGRTFDMEZG
RDFCMTkzRTk4MDBCNTNGQ0EgLyogRXhjZXB0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTFDMEZGQzFCMTkzRTk4MDBCNTNGQ0EgLyogRXhjZXB0
aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RkUxQzBGRkYxQjE5NEZEMTAwQjUzRkNBIC8qIEV4Y2VwdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTFDMEZGRTFCMTk0RkQxMDBCNTNGQ0Eg
LyogRXhjZXB0aW9uLmNwcCAqLzsgfTsKIAkJRkUyMENFOUQxNUYwNEE5NTAwREYzNDMwIC8qIExM
SW50Q0xvb3AuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkUyMENFOUIxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3AuY3BwICovOyB9OwpAQCAt
MzE5NSw2ICszMTk5LDEwIEBACiAJCTQxREVBMTMxMUI5RjMxNTQwMDZENjVERCAvKiBCdWlsdGlu
VXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnVpbHRpblV0aWxzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzNDBBNDgyMUE5MDUxQUYwMEQ3M0NDQSAv
KiBNYXRoQ29tbW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1h
dGhDb21tb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MzQwQTQ4MzFBOTA1
MUFGMDBENzNDQ0EgLyogTWF0aENvbW1vbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNYXRoQ29tbW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQzNDIyQTYw
MUMxNTg3MUIwMEUyRUI5OCAvKiBCM0NvbnN0RmxvYXRWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM0NvbnN0RmxvYXRWYWx1ZS5jcHA7IHBhdGggPSBiMy9C
M0NvbnN0RmxvYXRWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQzNDIy
QTYxMUMxNTg3MUIwMEUyRUI5OCAvKiBCM0NvbnN0RmxvYXRWYWx1ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBCM0NvbnN0RmxvYXRWYWx1ZS5oOyBwYXRoID0gYjMvQjNDb25z
dEZsb2F0VmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDM0MjJBNjQxQzE2
MjIxRTAwRTJFQjk4IC8qIEIzUmVkdWNlRG91YmxlVG9GbG9hdC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM1JlZHVjZURvdWJsZVRvRmxvYXQuY3BwOyBwYXRoID0g
YjMvQjNSZWR1Y2VEb3VibGVUb0Zsb2F0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDM0MjJBNjUxQzE2MjIxRTAwRTJFQjk4IC8qIEIzUmVkdWNlRG91YmxlVG9GbG9hdC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM1JlZHVjZURvdWJsZVRvRmxvYXQuaDsg
cGF0aCA9IGIzL0IzUmVkdWNlRG91YmxlVG9GbG9hdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NDkwOTdFRTBGOEY4MUI1MDA3NkEzMjcgLyogRmVhdHVyZURlZmluZXMueGNjb25m
aWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gRmVhdHVyZURlZmluZXMueGNjb25m
aWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ1MTUzOUI4MTJEQzk5NDUwMEVGN0FD
NCAvKiBZYXJyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFlhcnIuaDsgcGF0
aCA9IHlhcnIvWWFyci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NUUxMkQ4ODA2
QTQ5QjBGMDBFOURGODQgLyoganNjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGpzYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IHRhYldpZHRoID0gNDsgfTsKQEAgLTQ1ODMsNiArNDU5MSw4IEBACiAJCQkJMEZFQzg0QzYxQkRB
Q0RBQzAwODBGRjc0IC8qIEIzQ29uc3Q2NFZhbHVlLmggKi8sCiAJCQkJMEZFQzg0QzcxQkRBQ0RB
QzAwODBGRjc0IC8qIEIzQ29uc3REb3VibGVWYWx1ZS5jcHAgKi8sCiAJCQkJMEZFQzg0QzgxQkRB
Q0RBQzAwODBGRjc0IC8qIEIzQ29uc3REb3VibGVWYWx1ZS5oICovLAorCQkJCTQzNDIyQTYwMUMx
NTg3MUIwMEUyRUI5OCAvKiBCM0NvbnN0RmxvYXRWYWx1ZS5jcHAgKi8sCisJCQkJNDM0MjJBNjEx
QzE1ODcxQjAwRTJFQjk4IC8qIEIzQ29uc3RGbG9hdFZhbHVlLmggKi8sCiAJCQkJMEZFQzg1QjIx
QkRFRDk1NzAwODBGRjc0IC8qIEIzQ29uc3RQdHJWYWx1ZS5oICovLAogCQkJCTBGMzM4REYzMUJF
OTNENTUwMDEzQzg4RiAvKiBCM0NvbnN0cmFpbmVkVmFsdWUuY3BwICovLAogCQkJCTBGMzM4REY0
MUJFOTNENTUwMDEzQzg4RiAvKiBCM0NvbnN0cmFpbmVkVmFsdWUuaCAqLywKQEAgLTQ1OTAsNiAr
NDYwMCw4IEBACiAJCQkJMEZFQzg0Q0ExQkRBQ0RBQzAwODBGRjc0IC8qIEIzQ29udHJvbFZhbHVl
LmggKi8sCiAJCQkJMEYzMzhFMDExQkYwMjc2QzAwMTNDODhGIC8qIEIzRGF0YVNlY3Rpb24uY3Bw
ICovLAogCQkJCTBGMzM4RTAyMUJGMDI3NkMwMDEzQzg4RiAvKiBCM0RhdGFTZWN0aW9uLmggKi8s
CisJCQkJNDM0MjJBNjQxQzE2MjIxRTAwRTJFQjk4IC8qIEIzUmVkdWNlRG91YmxlVG9GbG9hdC5j
cHAgKi8sCisJCQkJNDM0MjJBNjUxQzE2MjIxRTAwRTJFQjk4IC8qIEIzUmVkdWNlRG91YmxlVG9G
bG9hdC5oICovLAogCQkJCTBGRUM4NUM0MUJFMTZGNUEwMDgwRkY3NCAvKiBCM0VmZmVjdHMuY3Bw
ICovLAogCQkJCTBGRUM4NUJFMUJFMTY3QTAwMDgwRkY3NCAvKiBCM0VmZmVjdHMuaCAqLywKIAkJ
CQkwRkVDODRDQjFCREFDREFDMDA4MEZGNzQgLyogQjNGcmVxdWVuY3lDbGFzcy5jcHAgKi8sCkBA
IC02OTk2LDYgKzcwMDgsNyBAQAogCQkJCTBGMkI5Q0UzMTlEMEJBN0QwMEIxRDFCNSAvKiBERkdB
dmFpbGFiaWxpdHlNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzE0Q0E1MTZFQTkyRjIwMEYz
RUJFQiAvKiBERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjYyMDE3NjE0M0ZDRDNCMDA2OEI3N0MgLyogREZHQmFzaWNCbG9jay5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNDM0MjJBNjMxQzE1OEU2RDAwRTJFQjk4IC8qIEIzQ29uc3RGbG9hdFZhbHVlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkZCOTIxQTE2RDAyRUM1MDA1NUE1REIgLyogREZHQmFzaWNC
bG9ja0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDg5Q0Y0MTdBMEI4Q0MwMDc3M0FE
OCAvKiBERkdCbG9ja0luc2VydGlvblNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDM0NDRkMx
OUFEQTQxMDAwNkFDNzJBIC8qIERGR0Jsb2NrTWFwLmggaW4gSGVhZGVycyAqLywKQEAgLTc1OTYs
NiArNzYwOSw3IEBACiAJCQkJMEY0NjgwQ0QxNEJCQjE3RDAwQkZFMjcyIC8qIExvd0xldmVsSW50
ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0QjcyM0I4MTJEN0RBNkYwMDNCRDVFRCAv
KiBNYWNoaW5lU3RhY2tNYXJrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2QzM2RUVBMEVFMTI4
OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDM0MjJB
NjcxQzE2MjY3ODAwRTJFQjk4IC8qIEIzUmVkdWNlRG91YmxlVG9GbG9hdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODZEM0IyQzYxMDE1NkJERTAwMjg2NUU3IC8qIE1hY3JvQXNzZW1ibGVyQVJNLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBMUEwMDlDMDE4MzFBMjJEMDBDRjg3MTEgLyogTWFjcm9Bc3Nl
bWJsZXJBUk02NC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZBREQxNDYwRkRERUE5ODAwMDZFRUMy
IC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCBpbiBIZWFkZXJzICovLApAQCAtODM5NSw2ICs4NDA5
LDcgQEAKIAkJCQkwRkZBNTQ5NzE2Qjg4MzUwMDBCM0E5ODIgLyogQTY0RE9wY29kZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRjU1RjBGNDE0RDEwNjM5MDBBQzc2NDkgLyogQWJzdHJhY3RQQy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVDODU2RDFCREFDREM3MDA4MEZGNzQgLyogQWlyQWxs
b2NhdGVTdGFjay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MzQyMkE2NjFDMTYyNjc1MDBFMkVC
OTggLyogQjNSZWR1Y2VEb3VibGVUb0Zsb2F0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUM4
NTZGMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJBcmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZF
Qzg1NzExQkRBQ0RDNzAwODBGRjc0IC8qIEFpckJhc2ljQmxvY2suY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEZFQzg1NzMxQkRBQ0RDNzAwODBGRjc0IC8qIEFpckNDYWxsU3BlY2lhbC5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTg0NTAsNiArODQ2NSw3IEBACiAJCQkJMEZFQzg1MjcxQkRBQ0RBQzAw
ODBGRjc0IC8qIEIzUGF0Y2hwb2ludFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUM4
NTI5MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1BoYXNlU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEZFQzg1MkIxQkRBQ0RBQzAwODBGRjc0IC8qIEIzUHJvY2VkdXJlLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTQzNDIyQTYyMUMxNThFNkEwMEUyRUI5OCAvKiBCM0NvbnN0RmxvYXRWYWx1ZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVDODVCQzFCRTE0NjJGMDA4MEZGNzQgLyogQjNSZWR1
Y2VTdHJlbmd0aC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVDODUzMDFCREFDREFDMDA4MEZG
NzQgLyogQjNTdGFja21hcFNwZWNpYWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQzg1MzIx
QkRBQ0RBQzAwODBGRjc0IC8qIEIzU3RhY2tTbG90S2luZC5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAppbmRl
eCBmNzM0M2ZmMTQ4NTM1MmI3ZTkyOTAxYTg3MTIxOGE4NzhlZGQyYjI3Li45ZWUxNjk1MmI5NTVl
NDU5YjE5NzM2ZWRjMmU0ZGJlYzIxNGUzYWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCkBAIC0xMzU2LDYgKzEzNTYsMTMgQEAgcHVi
bGljOgogICAgICAgICBtb3ZlRG91YmxlKHNyYywgZGVzdCk7CiAgICAgICAgIGZhbHNlQ2FzZS5s
aW5rKHRoaXMpOwogICAgIH0KKworICAgIHZvaWQgbW92ZURvdWJsZUNvbmRpdGlvbmFsbHlGbG9h
dChEb3VibGVDb25kaXRpb24gY29uZCwgRlBSZWdpc3RlcklEIGxlZnQsIEZQUmVnaXN0ZXJJRCBy
aWdodCwgRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAg
ICBKdW1wIGZhbHNlQ2FzZSA9IGJyYW5jaEZsb2F0KGludmVydChjb25kKSwgbGVmdCwgcmlnaHQp
OworICAgICAgICBtb3ZlRG91YmxlKHNyYywgZGVzdCk7CisgICAgICAgIGZhbHNlQ2FzZS5saW5r
KHRoaXMpOworICAgIH0KICNlbmRpZgogCiAgICAgdm9pZCBsZWEoQWRkcmVzcyBhZGRyZXNzLCBS
ZWdpc3RlcklEIGRlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKaW5kZXggNjgxNDM4NTk3NDBjYmQ1NDkx
ZTM4OWYxZmIxNjAxMjM2ZmZkY2Q4Yy4uZjJjZmI5ZmJjM2E2YThhNTE4ZDU1ZDZiMDAyNjI2ZDcz
ZGZjMDdhYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlclg4NkNvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaApAQCAtODIsNiArODIsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIE5vblplcm8gPSBYODZBc3NlbWJsZXI6OkNvbmRpdGlvbk5FCiAgICAgfTsKIAorICAg
IC8vIEZJWE1FOiBpdCB3b3VsZCBiZSBuZWF0IHRvIHJlbmFtZSB0aGlzIHRvIEZsb2F0aW5nUG9p
bnRDb25kaXRpb24gaW4gZXZlcnkgYXNzZW1ibGVyLgogICAgIGVudW0gRG91YmxlQ29uZGl0aW9u
IHsKICAgICAgICAgLy8gVGhlc2UgY29uZGl0aW9ucyB3aWxsIG9ubHkgZXZhbHVhdGUgdG8gdHJ1
ZSBpZiB0aGUgY29tcGFyaXNvbiBpcyBvcmRlcmVkIC0gaS5lLiBuZWl0aGVyIG9wZXJhbmQgaXMg
TmFOLgogICAgICAgICBEb3VibGVFcXVhbCA9IFg4NkFzc2VtYmxlcjo6Q29uZGl0aW9uRSB8IERv
dWJsZUNvbmRpdGlvbkJpdFNwZWNpYWwsCkBAIC01MjMsNiArNTI0LDE2IEBAIHB1YmxpYzoKICAg
ICAgICAgbV9hc3NlbWJsZXIuc3FydHNkX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkc3QpOwog
ICAgIH0KIAorICAgIHZvaWQgc3FydEZsb2F0KEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJ
RCBkc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zcXJ0c3NfcnIoc3JjLCBkc3QpOwor
ICAgIH0KKworICAgIHZvaWQgc3FydEZsb2F0KEFkZHJlc3Mgc3JjLCBGUFJlZ2lzdGVySUQgZHN0
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3FydHNzX21yKHNyYy5vZmZzZXQsIHNyYy5i
YXNlLCBkc3QpOworICAgIH0KKwogICAgIHZvaWQgYWJzRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMs
IEZQUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBBU1NFUlQoc3JjICE9IGRzdCk7CkBA
IC03NzksMTIgKzc5MCwxOSBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChpc1NTRTJQcmVzZW50
KCkpOwogICAgICAgICBtX2Fzc2VtYmxlci5tb3ZzZF9tcihhZGRyZXNzLm9mZnNldCwgYWRkcmVz
cy5iYXNlLCBkZXN0KTsKICAgICB9Ci0gICAgCisKICAgICB2b2lkIGxvYWREb3VibGUoQmFzZUlu
ZGV4IGFkZHJlc3MsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGlz
U1NFMlByZXNlbnQoKSk7CiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdnNkX21yKGFkZHJlc3Mub2Zm
c2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUsIGRlc3QpOwog
ICAgIH0KKworICAgIHZvaWQgbG9hZEZsb2F0KEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBGUFJl
Z2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpc1NTRTJQcmVzZW50KCkpOwor
ICAgICAgICBtX2Fzc2VtYmxlci5tb3Zzc19tcihhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNl
LCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIGxvYWRGbG9hdChCYXNlSW5kZXggYWRkcmVzcywg
RlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBBU1NFUlQoaXNTU0UyUHJlc2VudCgp
KTsKQEAgLTgwMiw3ICs4MjAsMTMgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoaXNTU0UyUHJl
c2VudCgpKTsKICAgICAgICAgbV9hc3NlbWJsZXIubW92c2Rfcm0oc3JjLCBhZGRyZXNzLm9mZnNl
dCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKICAgICB9Ci0g
ICAgCisKKyAgICB2b2lkIHN0b3JlRmxvYXQoRlBSZWdpc3RlcklEIHNyYywgSW1wbGljaXRBZGRy
ZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBBU1NFUlQoaXNTU0UyUHJlc2VudCgpKTsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubW92c3Nfcm0oc3JjLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5i
YXNlKTsKKyAgICB9CisKICAgICB2b2lkIHN0b3JlRmxvYXQoRlBSZWdpc3RlcklEIHNyYywgQmFz
ZUluZGV4IGFkZHJlc3MpCiAgICAgewogICAgICAgICBBU1NFUlQoaXNTU0UyUHJlc2VudCgpKTsK
QEAgLTgxNSwxMiArODM5LDI0IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuY3Z0c2Qy
c3NfcnIoc3JjLCBkc3QpOwogICAgIH0KIAorICAgIHZvaWQgY29udmVydERvdWJsZVRvRmxvYXQo
QWRkcmVzcyBhZGRyZXNzLCBGUFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgQVNTRVJU
KGlzU1NFMlByZXNlbnQoKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmN2dHNkMnNzX21yKGFkZHJl
c3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGRzdCk7CisgICAgfQorCiAgICAgdm9pZCBjb252ZXJ0
RmxvYXRUb0RvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZHN0KQogICAgIHsK
ICAgICAgICAgQVNTRVJUKGlzU1NFMlByZXNlbnQoKSk7CiAgICAgICAgIG1fYXNzZW1ibGVyLmN2
dHNzMnNkX3JyKHNyYywgZHN0KTsKICAgICB9CiAKKyAgICB2b2lkIGNvbnZlcnRGbG9hdFRvRG91
YmxlKEFkZHJlc3MgYWRkcmVzcywgRlBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIEFT
U0VSVChpc1NTRTJQcmVzZW50KCkpOworICAgICAgICBtX2Fzc2VtYmxlci5jdnRzczJzZF9tcihh
ZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBkc3QpOworICAgIH0KKwogICAgIHZvaWQgYWRk
RG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAg
ICAgQVNTRVJUKGlzU1NFMlByZXNlbnQoKSk7CkBAIC04NDQsNiArODgwLDE4IEBAIHB1YmxpYzoK
ICAgICAgICAgbV9hc3NlbWJsZXIuYWRkc2RfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIGRlc3Qp
OwogICAgIH0KIAorICAgIHZvaWQgYWRkRmxvYXQoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3Rl
cklEIGRlc3QpCisgICAgeworICAgICAgICBBU1NFUlQoaXNTU0UyUHJlc2VudCgpKTsKKyAgICAg
ICAgbV9hc3NlbWJsZXIuYWRkc3NfcnIoc3JjLCBkZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIGFk
ZEZsb2F0KEFkZHJlc3Mgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIEFT
U0VSVChpc1NTRTJQcmVzZW50KCkpOworICAgICAgICBtX2Fzc2VtYmxlci5hZGRzc19tcihzcmMu
b2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBkaXZEb3VibGUoRlBS
ZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBBU1NFUlQo
aXNTU0UyUHJlc2VudCgpKTsKQEAgLTg2NSw2ICs5MTMsMTggQEAgcHVibGljOgogICAgICAgICBt
X2Fzc2VtYmxlci5kaXZzZF9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7CiAgICAgfQog
CisgICAgdm9pZCBkaXZGbG9hdChGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB7CisgICAgICAgIEFTU0VSVChpc1NTRTJQcmVzZW50KCkpOworICAgICAgICBtX2Fzc2Vt
Ymxlci5kaXZzc19ycihzcmMsIGRlc3QpOworICAgIH0KKworICAgIHZvaWQgZGl2RmxvYXQoQWRk
cmVzcyBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzU1NF
MlByZXNlbnQoKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmRpdnNzX21yKHNyYy5vZmZzZXQsIHNy
Yy5iYXNlLCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIHN1YkRvdWJsZShGUFJlZ2lzdGVySUQg
c3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIEFTU0VSVChpc1NTRTJQcmVz
ZW50KCkpOwpAQCAtODg2LDYgKzk0NiwxOCBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVy
LnN1YnNkX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lk
IHN1YkZsb2F0KEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKGlzU1NFMlByZXNlbnQoKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YnNz
X3JyKHNyYywgZGVzdCk7CisgICAgfQorCisgICAgdm9pZCBzdWJGbG9hdChBZGRyZXNzIHNyYywg
RlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBBU1NFUlQoaXNTU0UyUHJlc2VudCgp
KTsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3Vic3NfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIGRl
c3QpOworICAgIH0KKwogICAgIHZvaWQgbXVsRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVn
aXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGlzU1NFMlByZXNlbnQoKSk7CkBA
IC05MDksNiArOTgxLDE4IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIubXVsc2RfbXIo
c3JjLm9mZnNldCwgc3JjLmJhc2UsIGRlc3QpOwogICAgIH0KIAorICAgIHZvaWQgbXVsRmxvYXQo
RlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBBU1NF
UlQoaXNTU0UyUHJlc2VudCgpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubXVsc3NfcnIoc3JjLCBk
ZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIG11bEZsb2F0KEFkZHJlc3Mgc3JjLCBGUFJlZ2lzdGVy
SUQgZGVzdCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpc1NTRTJQcmVzZW50KCkpOworICAgICAg
ICBtX2Fzc2VtYmxlci5tdWxzc19tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7CisgICAg
fQorCiAgICAgdm9pZCBjb252ZXJ0SW50MzJUb0RvdWJsZShSZWdpc3RlcklEIHNyYywgRlBSZWdp
c3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBBU1NFUlQoaXNTU0UyUHJlc2VudCgpKTsKQEAg
LTkyOSwyNyArMTAxMywxOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci51Y29t
aXNkX3JyKGxlZnQsIHJpZ2h0KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9hc3NlbWJs
ZXIudWNvbWlzZF9ycihyaWdodCwgbGVmdCk7CisgICAgICAgIHJldHVybiBqdW1wQWZ0ZXJGbG9h
dGluZ1BvaW50Q29tcGFyZShjb25kLCBsZWZ0LCByaWdodCk7CisgICAgfQogCi0gICAgICAgIGlm
IChjb25kID09IERvdWJsZUVxdWFsKSB7Ci0gICAgICAgICAgICBpZiAobGVmdCA9PSByaWdodCkK
LSAgICAgICAgICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qbnAoKSk7Ci0gICAgICAg
ICAgICBKdW1wIGlzVW5vcmRlcmVkKG1fYXNzZW1ibGVyLmpwKCkpOwotICAgICAgICAgICAgSnVt
cCByZXN1bHQgPSBKdW1wKG1fYXNzZW1ibGVyLmplKCkpOwotICAgICAgICAgICAgaXNVbm9yZGVy
ZWQubGluayh0aGlzKTsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgIH0gZWxz
ZSBpZiAoY29uZCA9PSBEb3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkKSB7Ci0gICAgICAgICAgICBp
ZiAobGVmdCA9PSByaWdodCkKLSAgICAgICAgICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxl
ci5qcCgpKTsKLSAgICAgICAgICAgIEp1bXAgaXNVbm9yZGVyZWQobV9hc3NlbWJsZXIuanAoKSk7
Ci0gICAgICAgICAgICBKdW1wIGlzRXF1YWwobV9hc3NlbWJsZXIuamUoKSk7Ci0gICAgICAgICAg
ICBpc1Vub3JkZXJlZC5saW5rKHRoaXMpOwotICAgICAgICAgICAgSnVtcCByZXN1bHQgPSBqdW1w
KCk7Ci0gICAgICAgICAgICBpc0VxdWFsLmxpbmsodGhpcyk7Ci0gICAgICAgICAgICByZXR1cm4g
cmVzdWx0OwotICAgICAgICB9CisgICAgSnVtcCBicmFuY2hGbG9hdChEb3VibGVDb25kaXRpb24g
Y29uZCwgRlBSZWdpc3RlcklEIGxlZnQsIEZQUmVnaXN0ZXJJRCByaWdodCkKKyAgICB7CisgICAg
ICAgIEFTU0VSVChpc1NTRTJQcmVzZW50KCkpOwogCi0gICAgICAgIEFTU0VSVCghKGNvbmQgJiBE
b3VibGVDb25kaXRpb25CaXRTcGVjaWFsKSk7Ci0gICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1i
bGVyLmpDQyhzdGF0aWNfY2FzdDxYODZBc3NlbWJsZXI6OkNvbmRpdGlvbj4oY29uZCAmIH5Eb3Vi
bGVDb25kaXRpb25CaXRzKSkpOworICAgICAgICBpZiAoY29uZCAmIERvdWJsZUNvbmRpdGlvbkJp
dEludmVydCkKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnVjb21pc3NfcnIobGVmdCwgcmlnaHQp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2Fzc2VtYmxlci51Y29taXNzX3JyKHJpZ2h0
LCBsZWZ0KTsKKyAgICAgICAgcmV0dXJuIGp1bXBBZnRlckZsb2F0aW5nUG9pbnRDb21wYXJlKGNv
bmQsIGxlZnQsIHJpZ2h0KTsKICAgICB9CiAKICAgICAvLyBUcnVuY2F0ZXMgJ3NyYycgdG8gYW4g
aW50ZWdlciwgYW5kIHBsYWNlcyB0aGUgcmVzdWx0aW5nICdkZXN0Jy4KQEAgLTExMjYsMzIgKzEy
MDEsMTggQEAgcHVibGljOgogICAgICAgICAgICAgbV9hc3NlbWJsZXIudWNvbWlzZF9ycihsZWZ0
LCByaWdodCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnVjb21pc2Rf
cnIocmlnaHQsIGxlZnQpOworICAgICAgICBtb3ZlQ29uZGl0aW9uYWxseUFmdGVyRmxvYXRpbmdQ
b2ludENvbXBhcmUoY29uZCwgbGVmdCwgcmlnaHQsIHNyYywgZGVzdCk7CisgICAgfQogCi0gICAg
ICAgIGlmIChjb25kID09IERvdWJsZUVxdWFsKSB7Ci0gICAgICAgICAgICBpZiAobGVmdCA9PSBy
aWdodCkgewotICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtb3ZucHFfcnIoc3JjLCBkZXN0
KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IEp1bXAgaXNVbm9yZGVyZWQobV9hc3NlbWJsZXIuanAoKSk7Ci0gICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5jbW92ZXFfcnIoc3JjLCBkZXN0KTsKLSAgICAgICAgICAgIGlzVW5vcmRlcmVkLmxpbmso
dGhpcyk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoY29u
ZCA9PSBEb3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkKSB7Ci0gICAgICAgICAgICBpZiAobGVmdCA9
PSByaWdodCkgewotICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtb3ZwcV9ycihzcmMsIGRl
c3QpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuY21vdnBxX3JyKHNyYywgZGVzdCk7Ci0gICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5jbW92bmVxX3JyKHNyYywgZGVzdCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KKyAgICB2b2lkIG1vdmVDb25kaXRpb25hbGx5RmxvYXQoRG91YmxlQ29uZGl0aW9uIGNvbmQs
IEZQUmVnaXN0ZXJJRCBsZWZ0LCBGUFJlZ2lzdGVySUQgcmlnaHQsIFJlZ2lzdGVySUQgc3JjLCBS
ZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBBU1NFUlQoaXNTU0UyUHJlc2VudCgpKTsK
IAotICAgICAgICBBU1NFUlQoIShjb25kICYgRG91YmxlQ29uZGl0aW9uQml0U3BlY2lhbCkpOwot
ICAgICAgICBtX2Fzc2VtYmxlci5jbW92cV9ycihzdGF0aWNfY2FzdDxYODZBc3NlbWJsZXI6OkNv
bmRpdGlvbj4oY29uZCAmIH5Eb3VibGVDb25kaXRpb25CaXRzKSwgc3JjLCBkZXN0KTsKKyAgICAg
ICAgaWYgKGNvbmQgJiBEb3VibGVDb25kaXRpb25CaXRJbnZlcnQpCisgICAgICAgICAgICBtX2Fz
c2VtYmxlci51Y29taXNzX3JyKGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgbV9hc3NlbWJsZXIudWNvbWlzc19ycihyaWdodCwgbGVmdCk7CisgICAgICAgIG1vdmVDb25k
aXRpb25hbGx5QWZ0ZXJGbG9hdGluZ1BvaW50Q29tcGFyZShjb25kLCBsZWZ0LCByaWdodCwgc3Jj
LCBkZXN0KTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBzd2FwKFJlZ2lzdGVySUQgcmVnMSwgUmVn
aXN0ZXJJRCByZWcyKQpAQCAtMTc5Nyw2ICsxODU4LDYwIEBAIHByaXZhdGU6CiAgICAgICAgIHNr
aXBOb25aZXJvQ2FzZS5saW5rKHRoaXMpOwogICAgIH0KIAorICAgIEp1bXAganVtcEFmdGVyRmxv
YXRpbmdQb2ludENvbXBhcmUoRG91YmxlQ29uZGl0aW9uIGNvbmQsIEZQUmVnaXN0ZXJJRCBsZWZ0
LCBGUFJlZ2lzdGVySUQgcmlnaHQpCisgICAgeworICAgICAgICBpZiAoY29uZCA9PSBEb3VibGVF
cXVhbCkgeworICAgICAgICAgICAgaWYgKGxlZnQgPT0gcmlnaHQpCisgICAgICAgICAgICAgICAg
cmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuam5wKCkpOworICAgICAgICAgICAgSnVtcCBpc1Vub3Jk
ZXJlZChtX2Fzc2VtYmxlci5qcCgpKTsKKyAgICAgICAgICAgIEp1bXAgcmVzdWx0ID0gSnVtcCht
X2Fzc2VtYmxlci5qZSgpKTsKKyAgICAgICAgICAgIGlzVW5vcmRlcmVkLmxpbmsodGhpcyk7Cisg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgICAgIGlmIChjb25kID09
IERvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQpIHsKKyAgICAgICAgICAgIGlmIChsZWZ0ID09IHJp
Z2h0KQorICAgICAgICAgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpwKCkpOworICAg
ICAgICAgICAgSnVtcCBpc1Vub3JkZXJlZChtX2Fzc2VtYmxlci5qcCgpKTsKKyAgICAgICAgICAg
IEp1bXAgaXNFcXVhbChtX2Fzc2VtYmxlci5qZSgpKTsKKyAgICAgICAgICAgIGlzVW5vcmRlcmVk
LmxpbmsodGhpcyk7CisgICAgICAgICAgICBKdW1wIHJlc3VsdCA9IGp1bXAoKTsKKyAgICAgICAg
ICAgIGlzRXF1YWwubGluayh0aGlzKTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
ICAgIH0KKworICAgICAgICBBU1NFUlQoIShjb25kICYgRG91YmxlQ29uZGl0aW9uQml0U3BlY2lh
bCkpOworICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qQ0Moc3RhdGljX2Nhc3Q8WDg2
QXNzZW1ibGVyOjpDb25kaXRpb24+KGNvbmQgJiB+RG91YmxlQ29uZGl0aW9uQml0cykpKTsKKyAg
ICB9CisKKyAgICB2b2lkIG1vdmVDb25kaXRpb25hbGx5QWZ0ZXJGbG9hdGluZ1BvaW50Q29tcGFy
ZShEb3VibGVDb25kaXRpb24gY29uZCwgRlBSZWdpc3RlcklEIGxlZnQsIEZQUmVnaXN0ZXJJRCBy
aWdodCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGlm
IChjb25kID09IERvdWJsZUVxdWFsKSB7CisgICAgICAgICAgICBpZiAobGVmdCA9PSByaWdodCkg
eworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtb3ZucHFfcnIoc3JjLCBkZXN0KTsKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEp1bXAg
aXNVbm9yZGVyZWQobV9hc3NlbWJsZXIuanAoKSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5j
bW92ZXFfcnIoc3JjLCBkZXN0KTsKKyAgICAgICAgICAgIGlzVW5vcmRlcmVkLmxpbmsodGhpcyk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoY29uZCA9PSBE
b3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkKSB7CisgICAgICAgICAgICBpZiAobGVmdCA9PSByaWdo
dCkgeworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtb3ZwcV9ycihzcmMsIGRlc3QpOwor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbV9h
c3NlbWJsZXIuY21vdnBxX3JyKHNyYywgZGVzdCk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5j
bW92bmVxX3JyKHNyYywgZGVzdCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBBU1NFUlQoIShjb25kICYgRG91YmxlQ29uZGl0aW9uQml0U3BlY2lhbCkpOworICAg
ICAgICBjbW92KHN0YXRpY19jYXN0PFg4NkFzc2VtYmxlcjo6Q29uZGl0aW9uPihjb25kICYgfkRv
dWJsZUNvbmRpdGlvbkJpdHMpLCBzcmMsIGRlc3QpOworICAgIH0KKwogI2lmIENQVShYODYpCiAj
aWYgT1MoTUFDX09TX1gpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvWDg2QXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4
NkFzc2VtYmxlci5oCmluZGV4IDVkMjljNTkyZDhjNDlkOTc3MWYwYTQ2MzVmOTcyNjI4MmU1ZWI0
ZGUuLjRlYjVkNGJkM2RlM2I4YjE2YTJmMzUyYTQ3NGMxZTJlNDM2YTRmZDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaApAQCAtMTk0MCw2ICsx
OTQwLDE4IEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9BRERT
RF9Wc2RXc2QsIChSZWdpc3RlcklEKWRzdCwgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2
b2lkIGFkZHNzX3JyKFhNTVJlZ2lzdGVySUQgc3JjLCBYTU1SZWdpc3RlcklEIGRzdCkKKyAgICB7
CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfU1NFX0YzKTsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIudHdvQnl0ZU9wKE9QMl9BRERTRF9Wc2RXc2QsIChSZWdpc3RlcklEKWRzdCwgKFJlZ2lz
dGVySUQpc3JjKTsKKyAgICB9CisKKyAgICB2b2lkIGFkZHNzX21yKGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgWE1NUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRl
ci5wcmVmaXgoUFJFX1NTRV9GMyk7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJf
QUREU0RfVnNkV3NkLCAoUmVnaXN0ZXJJRClkc3QsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCiAj
aWYgIUNQVShYODZfNjQpCiAgICAgdm9pZCBhZGRzZF9tcihjb25zdCB2b2lkKiBhZGRyZXNzLCBY
TU1SZWdpc3RlcklEIGRzdCkKICAgICB7CkBAIC0xOTg4LDEyICsyMDAwLDI0IEBAIHB1YmxpYzoK
ICAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9DVlRTRDJTU19Wc2RXc2QsIGRzdCwg
KFJlZ2lzdGVySUQpc3JjKTsKICAgICB9CiAKKyAgICB2b2lkIGN2dHNkMnNzX21yKGludCBvZmZz
ZXQsIFJlZ2lzdGVySUQgYmFzZSwgWE1NUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBt
X2Zvcm1hdHRlci5wcmVmaXgoUFJFX1NTRV9GMik7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5
dGVPcChPUDJfQ1ZUU0QyU1NfVnNkV3NkLCBkc3QsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCiAg
ICAgdm9pZCBjdnRzczJzZF9ycihYTU1SZWdpc3RlcklEIHNyYywgWE1NUmVnaXN0ZXJJRCBkc3Qp
CiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX1NTRV9GMyk7CiAgICAgICAg
IG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfQ1ZUU1MyU0RfVnNkV3NkLCBkc3QsIChSZWdpc3Rl
cklEKXNyYyk7CiAgICAgfQotICAgIAorCisgICAgdm9pZCBjdnRzczJzZF9tcihpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UsIFhNTVJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9m
b3JtYXR0ZXIucHJlZml4KFBSRV9TU0VfRjMpOworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRl
T3AoT1AyX0NWVFNTMlNEX1ZzZFdzZCwgZHN0LCBiYXNlLCBvZmZzZXQpOworICAgIH0KKwogI2lm
IENQVShYODZfNjQpCiAgICAgdm9pZCBjdnR0c2Qyc2lxX3JyKFhNTVJlZ2lzdGVySUQgc3JjLCBS
ZWdpc3RlcklEIGRzdCkKICAgICB7CkBAIC0yMDUxLDYgKzIwNzUsMTIgQEAgcHVibGljOgogICAg
ICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX1NTRV9GMik7CiAgICAgICAgIG1fZm9ybWF0dGVy
LnR3b0J5dGVPcChPUDJfTU9WU0RfV3NkVnNkLCAoUmVnaXN0ZXJJRClzcmMsIGJhc2UsIGluZGV4
LCBzY2FsZSwgb2Zmc2V0KTsKICAgICB9CisKKyAgICB2b2lkIG1vdnNzX3JtKFhNTVJlZ2lzdGVy
SUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zv
cm1hdHRlci5wcmVmaXgoUFJFX1NTRV9GMyk7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVP
cChPUDJfTU9WU0RfV3NkVnNkLCAoUmVnaXN0ZXJJRClzcmMsIGJhc2UsIG9mZnNldCk7CisgICAg
fQogICAgIAogICAgIHZvaWQgbW92c3Nfcm0oWE1NUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQs
IFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQogICAgIHsKQEAg
LTIwNjksNyArMjA5OSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQ
UkVfU1NFX0YyKTsKICAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9NT1ZTRF9Wc2RX
c2QsIGRzdCwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOwogICAgIH0KLSAgICAKKworICAg
IHZvaWQgbW92c3NfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBYTU1SZWdpc3RlcklE
IGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfU1NFX0YzKTsKKyAg
ICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9NT1ZTRF9Wc2RXc2QsIChSZWdpc3RlcklE
KWRzdCwgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIG1vdnNzX21yKGludCBvZmZz
ZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBYTU1SZWdp
c3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfU1NFX0Yz
KTsKQEAgLTIxMDEsNiArMjEzNywxOCBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLnR3
b0J5dGVPcChPUDJfTVVMU0RfVnNkV3NkLCAoUmVnaXN0ZXJJRClkc3QsIGJhc2UsIG9mZnNldCk7
CiAgICAgfQogCisgICAgdm9pZCBtdWxzc19ycihYTU1SZWdpc3RlcklEIHNyYywgWE1NUmVnaXN0
ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX1NTRV9GMyk7
CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfTVVMU0RfVnNkV3NkLCAoUmVnaXN0
ZXJJRClkc3QsIChSZWdpc3RlcklEKXNyYyk7CisgICAgfQorCisgICAgdm9pZCBtdWxzc19tcihp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFhNTVJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAg
ICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9TU0VfRjMpOworICAgICAgICBtX2Zvcm1hdHRl
ci50d29CeXRlT3AoT1AyX01VTFNEX1ZzZFdzZCwgKFJlZ2lzdGVySUQpZHN0LCBiYXNlLCBvZmZz
ZXQpOworICAgIH0KKwogICAgIHZvaWQgcGV4dHJ3X2lycihpbnQgd2hpY2hXb3JkLCBYTU1SZWdp
c3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5w
cmVmaXgoUFJFX1NTRV82Nik7CkBAIC0yMTQwLDYgKzIxODgsMTggQEAgcHVibGljOgogICAgICAg
ICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX1NVQlNEX1ZzZFdzZCwgKFJlZ2lzdGVySUQpZHN0
LCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgc3Vic3NfcnIoWE1NUmVnaXN0ZXJJ
RCBzcmMsIFhNTVJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJl
Zml4KFBSRV9TU0VfRjMpOworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX1NVQlNE
X1ZzZFdzZCwgKFJlZ2lzdGVySUQpZHN0LCAoUmVnaXN0ZXJJRClzcmMpOworICAgIH0KKworICAg
IHZvaWQgc3Vic3NfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBYTU1SZWdpc3RlcklE
IGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfU1NFX0YzKTsKKyAg
ICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9TVUJTRF9Wc2RXc2QsIChSZWdpc3RlcklE
KWRzdCwgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIHVjb21pc2RfcnIoWE1NUmVn
aXN0ZXJJRCBzcmMsIFhNTVJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0
ZXIucHJlZml4KFBSRV9TU0VfNjYpOwpAQCAtMjE1Miw2ICsyMjEyLDE2IEBAIHB1YmxpYzoKICAg
ICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9VQ09NSVNEX1ZzZFdzZCwgKFJlZ2lzdGVy
SUQpZHN0LCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgdWNvbWlzc19ycihYTU1S
ZWdpc3RlcklEIHNyYywgWE1NUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1h
dHRlci50d29CeXRlT3AoT1AyX1VDT01JU0RfVnNkV3NkLCAoUmVnaXN0ZXJJRClkc3QsIChSZWdp
c3RlcklEKXNyYyk7CisgICAgfQorCisgICAgdm9pZCB1Y29taXNzX21yKGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSwgWE1NUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1h
dHRlci50d29CeXRlT3AoT1AyX1VDT01JU0RfVnNkV3NkLCAoUmVnaXN0ZXJJRClkc3QsIGJhc2Us
IG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBkaXZzZF9ycihYTU1SZWdpc3RlcklEIHNyYywg
WE1NUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJF
X1NTRV9GMik7CkBAIC0yMTY0LDYgKzIyMzQsMTggQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1h
dHRlci50d29CeXRlT3AoT1AyX0RJVlNEX1ZzZFdzZCwgKFJlZ2lzdGVySUQpZHN0LCBiYXNlLCBv
ZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgZGl2c3NfcnIoWE1NUmVnaXN0ZXJJRCBzcmMsIFhN
TVJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9T
U0VfRjMpOworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0RJVlNEX1ZzZFdzZCwg
KFJlZ2lzdGVySUQpZHN0LCAoUmVnaXN0ZXJJRClzcmMpOworICAgIH0KKworICAgIHZvaWQgZGl2
c3NfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBYTU1SZWdpc3RlcklEIGRzdCkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfU1NFX0YzKTsKKyAgICAgICAgbV9m
b3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9ESVZTRF9Wc2RXc2QsIChSZWdpc3RlcklEKWRzdCwgYmFz
ZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIHhvcnBzX3JyKFhNTVJlZ2lzdGVySUQgc3Jj
LCBYTU1SZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVP
cChPUDJfWE9SUERfVnBkV3BkLCAoUmVnaXN0ZXJJRClkc3QsIChSZWdpc3RlcklEKXNyYyk7CkBA
IC0yMTk3LDYgKzIyNzksMTggQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRl
T3AoT1AyX1NRUlRTRF9Wc2RXc2QsIChSZWdpc3RlcklEKWRzdCwgYmFzZSwgb2Zmc2V0KTsKICAg
ICB9CiAKKyAgICB2b2lkIHNxcnRzc19ycihYTU1SZWdpc3RlcklEIHNyYywgWE1NUmVnaXN0ZXJJ
RCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX1NTRV9GMyk7Cisg
ICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfU1FSVFNEX1ZzZFdzZCwgKFJlZ2lzdGVy
SUQpZHN0LCAoUmVnaXN0ZXJJRClzcmMpOworICAgIH0KKworICAgIHZvaWQgc3FydHNzX21yKGlu
dCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgWE1NUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAg
ICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX1NTRV9GMyk7CisgICAgICAgIG1fZm9ybWF0dGVy
LnR3b0J5dGVPcChPUDJfU1FSVFNEX1ZzZFdzZCwgKFJlZ2lzdGVySUQpZHN0LCBiYXNlLCBvZmZz
ZXQpOworICAgIH0KKwogICAgIC8vIE1pc2MgaW5zdHJ1Y3Rpb25zOgogCiAgICAgdm9pZCBpbnQz
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0MzJWYWx1ZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdDMyVmFsdWUuY3BwCmluZGV4IDI4
NmJhMTIyMDk4ODRmYThkYmRhZThkMzhiOTZlZTU0MWEzOWVmMzEuLjQyMDRiNDc0MGExNzMyMzdk
Y2E1NmY5ODkzOTY3ZjE1OWJmOTUwODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0NvbnN0MzJWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
Q29uc3QzMlZhbHVlLmNwcApAQCAtMTU0LDYgKzE1NCwxMSBAQCBWYWx1ZSogQ29uc3QzMlZhbHVl
Ojp6U2hyQ29uc3RhbnQoUHJvY2VkdXJlJiBwcm9jLCBjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0
CiAgICAgcmV0dXJuIHByb2MuYWRkPENvbnN0MzJWYWx1ZT4ob3JpZ2luKCksIHN0YXRpY19jYXN0
PGludDMyX3Q+KHN0YXRpY19jYXN0PHVpbnQzMl90PihtX3ZhbHVlKSA+PiAob3RoZXItPmFzSW50
MzIoKSAmIDMxKSkpOwogfQogCitWYWx1ZSogQ29uc3QzMlZhbHVlOjpiaXR3aXNlQ2FzdENvbnN0
YW50KFByb2NlZHVyZSYgcHJvYykgY29uc3QKK3sKKyAgICByZXR1cm4gcHJvYy5hZGQ8Q29uc3RG
bG9hdFZhbHVlPihvcmlnaW4oKSwgYml0d2lzZV9jYXN0PGZsb2F0PihtX3ZhbHVlKSk7Cit9CisK
IFRyaVN0YXRlIENvbnN0MzJWYWx1ZTo6ZXF1YWxDb25zdGFudChjb25zdCBWYWx1ZSogb3RoZXIp
IGNvbnN0CiB7CiAgICAgaWYgKCFvdGhlci0+aGFzSW50MzIoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0MzJWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzQ29uc3QzMlZhbHVlLmgKaW5kZXggYTFlZWU5ZjAzNGVjY2Q3NDIwNmIyOTY4YmFh
MTU3OGE5MGNkYmZlNC4uNDM4MDM5MTcwMTAwYjZlMjVkMGI4NTJjYjcyOTExODA0NmQ1MDYxZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3QzMlZhbHVlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3QzMlZhbHVlLmgKQEAgLTU2LDYgKzU2
LDcgQEAgcHVibGljOgogICAgIFZhbHVlKiBzaGxDb25zdGFudChQcm9jZWR1cmUmLCBjb25zdCBW
YWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOwogICAgIFZhbHVlKiBzU2hyQ29uc3RhbnQoUHJv
Y2VkdXJlJiwgY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdCBvdmVycmlkZTsKICAgICBWYWx1ZSog
elNockNvbnN0YW50KFByb2NlZHVyZSYsIGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgVmFsdWUqIGJpdHdpc2VDYXN0Q29uc3RhbnQoUHJvY2VkdXJlJikgY29uc3Qgb3Zl
cnJpZGU7CiAKICAgICBUcmlTdGF0ZSBlcXVhbENvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgVHJpU3RhdGUgbm90RXF1YWxDb25zdGFudChjb25zdCBWYWx1
ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzQ29uc3REb3VibGVWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNDb25zdERvdWJsZVZhbHVlLmNwcAppbmRleCAzMTNjODUyMDlkZDdmMjNmZDk3OGQ3ZGI2NzQ4
ZjUyNWMwNmVlYWVjLi44NTA0MmNjNzlmZTYwNmQ4YjM5YmVmMDlkY2ViNjg5ZDU0YmEyZmVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdERvdWJsZVZhbHVlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdERvdWJsZVZhbHVlLmNwcApA
QCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEIzX0pJVCkKIAorI2luY2x1ZGUgIkIzQ29u
c3RGbG9hdFZhbHVlLmgiCiAjaW5jbHVkZSAiQjNQcm9jZWR1cmVJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiQjNWYWx1ZUlubGluZXMuaCIKIApAQCAtNzMsNiArNzQsMTYgQEAgVmFsdWUqIENvbnN0RG91
YmxlVmFsdWU6OmJpdHdpc2VDYXN0Q29uc3RhbnQoUHJvY2VkdXJlJiBwcm9jKSBjb25zdAogICAg
IHJldHVybiBwcm9jLmFkZDxDb25zdDY0VmFsdWU+KG9yaWdpbigpLCBiaXR3aXNlX2Nhc3Q8aW50
NjRfdD4obV92YWx1ZSkpOwogfQogCitWYWx1ZSogQ29uc3REb3VibGVWYWx1ZTo6ZG91YmxlVG9G
bG9hdENvbnN0YW50KFByb2NlZHVyZSYgcHJvYykgY29uc3QKK3sKKyAgICByZXR1cm4gcHJvYy5h
ZGQ8Q29uc3RGbG9hdFZhbHVlPihvcmlnaW4oKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fdmFsdWUp
KTsKK30KKworVmFsdWUqIENvbnN0RG91YmxlVmFsdWU6OnNxcnRDb25zdGFudChQcm9jZWR1cmUm
IHByb2MpIGNvbnN0Cit7CisgICAgcmV0dXJuIHByb2MuYWRkPENvbnN0RG91YmxlVmFsdWU+KG9y
aWdpbigpLCBzcXJ0KG1fdmFsdWUpKTsKK30KKwogVmFsdWUqIENvbnN0RG91YmxlVmFsdWU6OmRp
dkNvbnN0YW50KFByb2NlZHVyZSYgcHJvYywgY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAogewog
ICAgIGlmICghb3RoZXItPmhhc0RvdWJsZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzQ29uc3REb3VibGVWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzQ29uc3REb3VibGVWYWx1ZS5oCmluZGV4IDBhM2QyMjhmYjcxOWU1NzQzYjJiZWFjOGY5OTcw
MjIxMDc1NzI2YjkuLjJiZmJlMzQ0OWJmYmExOTE5ZTgwZGNiZDM5NDI1NDdlNWNkYTdlNmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0RG91YmxlVmFsdWUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdERvdWJsZVZhbHVlLmgKQEAgLTQ3
LDYgKzQ3LDggQEAgcHVibGljOgogICAgIFZhbHVlKiBkaXZDb25zdGFudChQcm9jZWR1cmUmLCBj
b25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOwogICAgIFZhbHVlKiBtdWxDb25zdGFu
dChQcm9jZWR1cmUmLCBjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOwogICAgIFZh
bHVlKiBiaXR3aXNlQ2FzdENvbnN0YW50KFByb2NlZHVyZSYpIGNvbnN0IG92ZXJyaWRlOworICAg
IFZhbHVlKiBkb3VibGVUb0Zsb2F0Q29uc3RhbnQoUHJvY2VkdXJlJikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgVmFsdWUqIHNxcnRDb25zdGFudChQcm9jZWR1cmUmKSBjb25zdCBvdmVycmlkZTsKIAog
ICAgIFRyaVN0YXRlIGVxdWFsQ29uc3RhbnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdCBvdmVy
cmlkZTsKICAgICBUcmlTdGF0ZSBub3RFcXVhbENvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikg
Y29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjND
b25zdEZsb2F0VmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3RGbG9h
dFZhbHVlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NDcxMmMzNmJmNjJjZThmOTY0ZTVlNTViMDJhNDhmOTZh
OWJlOWMzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29u
c3RGbG9hdFZhbHVlLmNwcApAQCAtMCwwICsxLDE0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
QjNDb25zdEZsb2F0VmFsdWUuaCIKKworI2lmIEVOQUJMRShCM19KSVQpCisKKyNpbmNsdWRlICJC
M0NvbnN0RG91YmxlVmFsdWUuaCIKKyNpbmNsdWRlICJCM1Byb2NlZHVyZUlubGluZXMuaCIKKyNp
bmNsdWRlICJCM1ZhbHVlSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIz
IHsKKworQ29uc3RGbG9hdFZhbHVlOjp+Q29uc3RGbG9hdFZhbHVlKCkKK3sKK30KKworVmFsdWUq
IENvbnN0RmxvYXRWYWx1ZTo6bmVnQ29uc3RhbnQoUHJvY2VkdXJlJiBwcm9jKSBjb25zdAorewor
ICAgIHJldHVybiBwcm9jLmFkZDxDb25zdEZsb2F0VmFsdWU+KG9yaWdpbigpLCAtbV92YWx1ZSk7
Cit9CisKK1ZhbHVlKiBDb25zdEZsb2F0VmFsdWU6OmFkZENvbnN0YW50KFByb2NlZHVyZSYgcHJv
YywgaW50MzJfdCBvdGhlcikgY29uc3QKK3sKKyAgICByZXR1cm4gcHJvYy5hZGQ8Q29uc3RGbG9h
dFZhbHVlPihvcmlnaW4oKSwgbV92YWx1ZSArIHN0YXRpY19jYXN0PGZsb2F0PihvdGhlcikpOwor
fQorCitWYWx1ZSogQ29uc3RGbG9hdFZhbHVlOjphZGRDb25zdGFudChQcm9jZWR1cmUmIHByb2Ms
IGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKK3sKKyAgICBpZiAoIW90aGVyLT5oYXNGbG9hdCgp
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gcHJvYy5hZGQ8Q29uc3RGbG9h
dFZhbHVlPihvcmlnaW4oKSwgbV92YWx1ZSArIG90aGVyLT5hc0Zsb2F0KCkpOworfQorCitWYWx1
ZSogQ29uc3RGbG9hdFZhbHVlOjpzdWJDb25zdGFudChQcm9jZWR1cmUmIHByb2MsIGNvbnN0IFZh
bHVlKiBvdGhlcikgY29uc3QKK3sKKyAgICBpZiAoIW90aGVyLT5oYXNGbG9hdCgpKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gcHJvYy5hZGQ8Q29uc3RGbG9hdFZhbHVlPihv
cmlnaW4oKSwgbV92YWx1ZSAtIG90aGVyLT5hc0Zsb2F0KCkpOworfQorCitWYWx1ZSogQ29uc3RG
bG9hdFZhbHVlOjptdWxDb25zdGFudChQcm9jZWR1cmUmIHByb2MsIGNvbnN0IFZhbHVlKiBvdGhl
cikgY29uc3QKK3sKKyAgICBpZiAoIW90aGVyLT5oYXNGbG9hdCgpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICByZXR1cm4gcHJvYy5hZGQ8Q29uc3RGbG9hdFZhbHVlPihvcmlnaW4oKSwg
bV92YWx1ZSAqIG90aGVyLT5hc0Zsb2F0KCkpOworfQorCitWYWx1ZSogQ29uc3RGbG9hdFZhbHVl
OjpiaXR3aXNlQ2FzdENvbnN0YW50KFByb2NlZHVyZSYgcHJvYykgY29uc3QKK3sKKyAgICByZXR1
cm4gcHJvYy5hZGQ8Q29uc3QzMlZhbHVlPihvcmlnaW4oKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+
KG1fdmFsdWUpKTsKK30KKworVmFsdWUqIENvbnN0RmxvYXRWYWx1ZTo6ZmxvYXRUb0RvdWJsZUNv
bnN0YW50KFByb2NlZHVyZSYgcHJvYykgY29uc3QKK3sKKyAgICByZXR1cm4gcHJvYy5hZGQ8Q29u
c3REb3VibGVWYWx1ZT4ob3JpZ2luKCksIHN0YXRpY19jYXN0PGRvdWJsZT4obV92YWx1ZSkpOwor
fQorCitWYWx1ZSogQ29uc3RGbG9hdFZhbHVlOjpzcXJ0Q29uc3RhbnQoUHJvY2VkdXJlJiBwcm9j
KSBjb25zdAoreworICAgIHJldHVybiBwcm9jLmFkZDxDb25zdEZsb2F0VmFsdWU+KG9yaWdpbigp
LCBzdGF0aWNfY2FzdDxmbG9hdD4oc3FydChtX3ZhbHVlKSkpOworfQorCitWYWx1ZSogQ29uc3RG
bG9hdFZhbHVlOjpkaXZDb25zdGFudChQcm9jZWR1cmUmIHByb2MsIGNvbnN0IFZhbHVlKiBvdGhl
cikgY29uc3QKK3sKKyAgICBpZiAoIW90aGVyLT5oYXNGbG9hdCgpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICByZXR1cm4gcHJvYy5hZGQ8Q29uc3RGbG9hdFZhbHVlPihvcmlnaW4oKSwg
bV92YWx1ZSAvIG90aGVyLT5hc0Zsb2F0KCkpOworfQorCitUcmlTdGF0ZSBDb25zdEZsb2F0VmFs
dWU6OmVxdWFsQ29uc3RhbnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAoreworICAgIGlmICgh
b3RoZXItPmhhc0Zsb2F0KCkpCisgICAgICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgIHJl
dHVybiB0cmlTdGF0ZShtX3ZhbHVlID09IG90aGVyLT5hc0Zsb2F0KCkpOworfQorCitUcmlTdGF0
ZSBDb25zdEZsb2F0VmFsdWU6Om5vdEVxdWFsQ29uc3RhbnQoY29uc3QgVmFsdWUqIG90aGVyKSBj
b25zdAoreworICAgIGlmICghb3RoZXItPmhhc0Zsb2F0KCkpCisgICAgICAgIHJldHVybiBNaXhl
ZFRyaVN0YXRlOworICAgIHJldHVybiB0cmlTdGF0ZShtX3ZhbHVlICE9IG90aGVyLT5hc0Zsb2F0
KCkpOworfQorCitUcmlTdGF0ZSBDb25zdEZsb2F0VmFsdWU6Omxlc3NUaGFuQ29uc3RhbnQoY29u
c3QgVmFsdWUqIG90aGVyKSBjb25zdAoreworICAgIGlmICghb3RoZXItPmhhc0Zsb2F0KCkpCisg
ICAgICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgIHJldHVybiB0cmlTdGF0ZShtX3ZhbHVl
IDwgb3RoZXItPmFzRmxvYXQoKSk7Cit9CisKK1RyaVN0YXRlIENvbnN0RmxvYXRWYWx1ZTo6Z3Jl
YXRlclRoYW5Db25zdGFudChjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0Cit7CisgICAgaWYgKCFv
dGhlci0+aGFzRmxvYXQoKSkKKyAgICAgICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7CisgICAgcmV0
dXJuIHRyaVN0YXRlKG1fdmFsdWUgPiBvdGhlci0+YXNGbG9hdCgpKTsKK30KKworVHJpU3RhdGUg
Q29uc3RGbG9hdFZhbHVlOjpsZXNzRXF1YWxDb25zdGFudChjb25zdCBWYWx1ZSogb3RoZXIpIGNv
bnN0Cit7CisgICAgaWYgKCFvdGhlci0+aGFzRmxvYXQoKSkKKyAgICAgICAgcmV0dXJuIE1peGVk
VHJpU3RhdGU7CisgICAgcmV0dXJuIHRyaVN0YXRlKG1fdmFsdWUgPD0gb3RoZXItPmFzRmxvYXQo
KSk7Cit9CisKK1RyaVN0YXRlIENvbnN0RmxvYXRWYWx1ZTo6Z3JlYXRlckVxdWFsQ29uc3RhbnQo
Y29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAoreworICAgIGlmICghb3RoZXItPmhhc0Zsb2F0KCkp
CisgICAgICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgIHJldHVybiB0cmlTdGF0ZShtX3Zh
bHVlID49IG90aGVyLT5hc0Zsb2F0KCkpOworfQorCit2b2lkIENvbnN0RmxvYXRWYWx1ZTo6ZHVt
cE1ldGEoQ29tbWFQcmludGVyJiBjb21tYSwgUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAg
ICBvdXQucHJpbnQoY29tbWEpOworICAgIG91dC5wcmludGYoIiVsZSIsIG1fdmFsdWUpOworfQor
Cit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdEZsb2F0VmFsdWUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0RmxvYXRWYWx1ZS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjFmZmYxNGEwNWVhOTBiMmJiNDdhYWFjMjYwMTY5YTg5ZWRmOGNmNDIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdEZsb2F0VmFsdWUuaApAQCAtMCww
ICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpZm5kZWYgQjNDb25zdEZsb2F0VmFsdWVfaAorI2RlZmluZSBCM0NvbnN0RmxvYXRWYWx1ZV9o
CisKKyNpZiBFTkFCTEUoQjNfSklUKQorCisjaW5jbHVkZSAiQjNWYWx1ZS5oIgorCituYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKworY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgQ29uc3RG
bG9hdFZhbHVlIDogcHVibGljIFZhbHVlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgYm9vbCBhY2Nl
cHRzKE9wY29kZSBvcGNvZGUpIHsgcmV0dXJuIG9wY29kZSA9PSBDb25zdEZsb2F0OyB9CisKKyAg
ICB+Q29uc3RGbG9hdFZhbHVlKCk7CisKKyAgICBmbG9hdCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdmFsdWU7IH0KKworICAgIFZhbHVlKiBuZWdDb25zdGFudChQcm9jZWR1cmUmKSBjb25zdCBv
dmVycmlkZTsKKyAgICBWYWx1ZSogYWRkQ29uc3RhbnQoUHJvY2VkdXJlJiwgaW50MzJfdCBvdGhl
cikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmFsdWUqIGFkZENvbnN0YW50KFByb2NlZHVyZSYsIGNv
bnN0IFZhbHVlKiBvdGhlcikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmFsdWUqIHN1YkNvbnN0YW50
KFByb2NlZHVyZSYsIGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmFs
dWUqIGRpdkNvbnN0YW50KFByb2NlZHVyZSYsIGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3Qgb3Zl
cnJpZGU7CisgICAgVmFsdWUqIG11bENvbnN0YW50KFByb2NlZHVyZSYsIGNvbnN0IFZhbHVlKiBv
dGhlcikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmFsdWUqIGJpdHdpc2VDYXN0Q29uc3RhbnQoUHJv
Y2VkdXJlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmFsdWUqIGZsb2F0VG9Eb3VibGVDb25zdGFu
dChQcm9jZWR1cmUmKSBjb25zdCBvdmVycmlkZTsKKyAgICBWYWx1ZSogc3FydENvbnN0YW50KFBy
b2NlZHVyZSYpIGNvbnN0IG92ZXJyaWRlOworCisgICAgVHJpU3RhdGUgZXF1YWxDb25zdGFudChj
b25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOworICAgIFRyaVN0YXRlIG5vdEVxdWFs
Q29uc3RhbnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdCBvdmVycmlkZTsKKyAgICBUcmlTdGF0
ZSBsZXNzVGhhbkNvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgVHJpU3RhdGUgZ3JlYXRlclRoYW5Db25zdGFudChjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0
IG92ZXJyaWRlOworICAgIFRyaVN0YXRlIGxlc3NFcXVhbENvbnN0YW50KGNvbnN0IFZhbHVlKiBv
dGhlcikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVHJpU3RhdGUgZ3JlYXRlckVxdWFsQ29uc3RhbnQo
Y29uc3QgVmFsdWUqIG90aGVyKSBjb25zdCBvdmVycmlkZTsKKworcHJvdGVjdGVkOgorICAgIHZv
aWQgZHVtcE1ldGEoQ29tbWFQcmludGVyJiwgUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsK
KworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgUHJvY2VkdXJlOworCisgICAgQ29uc3RGbG9h
dFZhbHVlKHVuc2lnbmVkIGluZGV4LCBPcmlnaW4gb3JpZ2luLCBmbG9hdCB2YWx1ZSkKKyAgICAg
ICAgOiBWYWx1ZShpbmRleCwgQ2hlY2tlZE9wY29kZSwgQ29uc3RGbG9hdCwgRmxvYXQsIG9yaWdp
bikKKyAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQorICAgIHsKKyAgICB9CisKKyAgICBmbG9hdCBt
X3ZhbHVlOworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKKyNlbmRpZiAvLyBFTkFC
TEUoQjNfSklUKQorCisjZW5kaWYgLy8gQjNDb25zdEZsb2F0VmFsdWVfaAorCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNHZW5lcmF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNHZW5lcmF0ZS5jcHAKaW5kZXggNGEyYjQ3ZjAzYTgzNDI4YmU0YTgwNWQ1
OGY0NjQ4OGM5Zjk4YWE5OS4uMzMwMjgyZTZmMWUxMTU5OGVhODFmYzBiMTE2N2ZiZjliMTNkZWRj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJhdGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0dlbmVyYXRlLmNwcApAQCAtMzYsNiArMzYs
NyBAQAogI2luY2x1ZGUgIkIzTG93ZXJUb0Fpci5oIgogI2luY2x1ZGUgIkIzTW92ZUNvbnN0YW50
cy5oIgogI2luY2x1ZGUgIkIzUHJvY2VkdXJlLmgiCisjaW5jbHVkZSAiQjNSZWR1Y2VEb3VibGVU
b0Zsb2F0LmgiCiAjaW5jbHVkZSAiQjNSZWR1Y2VTdHJlbmd0aC5oIgogI2luY2x1ZGUgIkIzVGlt
aW5nU2NvcGUuaCIKICNpbmNsdWRlICJCM1ZhbGlkYXRlLmgiCkBAIC03Myw2ICs3NCw4IEBAIHZv
aWQgZ2VuZXJhdGVUb0FpcihQcm9jZWR1cmUmIHByb2NlZHVyZSwgdW5zaWduZWQgb3B0TGV2ZWwp
CiAgICAgbG93ZXJNYWNyb3MocHJvY2VkdXJlKTsKIAogICAgIGlmIChvcHRMZXZlbCA+PSAxKSB7
CisgICAgICAgIHJlZHVjZURvdWJsZVRvRmxvYXQocHJvY2VkdXJlKTsKKwogICAgICAgICByZWR1
Y2VTdHJlbmd0aChwcm9jZWR1cmUpOwogICAgICAgICAKICAgICAgICAgLy8gRklYTUU6IEFkZCBt
b3JlIG9wdGltaXphdGlvbnMgaGVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0xvd2VyVG9BaXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJU
b0Fpci5jcHAKaW5kZXggMGZhYmU0OWE3ZGNiZjZkODRmYjk0ZjcyNDA2M2M1ZTQwOTk0MTA0Ny4u
Mjk0NjE1ZTcyOGY5NmY1ZGJkYmViMGZlNTA0YWM3MjgxNWJmZGVhOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKQEAgLTQ3NSw3ICs0NzUsNyBAQCBwcml2YXRl
OgogCiAgICAgLy8gQnkgY29udmVudGlvbiwgd2UgdXNlIE9vcHMgdG8gbWVhbiAiSSBkb24ndCBr
bm93Ii4KICAgICBBaXI6Ok9wY29kZSB0cnlPcGNvZGVGb3JUeXBlKAotICAgICAgICBBaXI6Ok9w
Y29kZSBvcGNvZGUzMiwgQWlyOjpPcGNvZGUgb3Bjb2RlNjQsIEFpcjo6T3Bjb2RlIG9wY29kZURv
dWJsZSwgVHlwZSB0eXBlKQorICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUzMiwgQWlyOjpPcGNv
ZGUgb3Bjb2RlNjQsIEFpcjo6T3Bjb2RlIG9wY29kZURvdWJsZSwgQWlyOjpPcGNvZGUgb3Bjb2Rl
RmxvYXQsIFR5cGUgdHlwZSkKICAgICB7CiAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZTsKICAg
ICAgICAgc3dpdGNoICh0eXBlKSB7CkBAIC00ODUsNiArNDg1LDkgQEAgcHJpdmF0ZToKICAgICAg
ICAgY2FzZSBJbnQ2NDoKICAgICAgICAgICAgIG9wY29kZSA9IG9wY29kZTY0OwogICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgRmxvYXQ6CisgICAgICAgICAgICBvcGNvZGUgPSBvcGNv
ZGVGbG9hdDsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIERvdWJsZToKICAgICAg
ICAgICAgIG9wY29kZSA9IG9wY29kZURvdWJsZTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDk2
LDE4ICs0OTksMjggQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIG9wY29kZTsKICAgICB9CiAK
KyAgICBBaXI6Ok9wY29kZSB0cnlPcGNvZGVGb3JUeXBlKEFpcjo6T3Bjb2RlIG9wY29kZTMyLCBB
aXI6Ok9wY29kZSBvcGNvZGU2NCwgVHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRy
eU9wY29kZUZvclR5cGUob3Bjb2RlMzIsIG9wY29kZTY0LCBBaXI6Ok9vcHMsIEFpcjo6T29wcywg
dHlwZSk7CisgICAgfQorCiAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlRm9yVHlwZSgKLSAgICAgICAg
QWlyOjpPcGNvZGUgb3Bjb2RlMzIsIEFpcjo6T3Bjb2RlIG9wY29kZTY0LCBBaXI6Ok9wY29kZSBv
cGNvZGVEb3VibGUsIFR5cGUgdHlwZSkKKyAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlMzIsIEFp
cjo6T3Bjb2RlIG9wY29kZTY0LCBBaXI6Ok9wY29kZSBvcGNvZGVEb3VibGUsIEFpcjo6T3Bjb2Rl
IG9wY29kZUZsb2F0LCBUeXBlIHR5cGUpCiAgICAgewotICAgICAgICBBaXI6Ok9wY29kZSBvcGNv
ZGUgPSB0cnlPcGNvZGVGb3JUeXBlKG9wY29kZTMyLCBvcGNvZGU2NCwgb3Bjb2RlRG91YmxlLCB0
eXBlKTsKKyAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gdHJ5T3Bjb2RlRm9yVHlwZShvcGNv
ZGUzMiwgb3Bjb2RlNjQsIG9wY29kZURvdWJsZSwgb3Bjb2RlRmxvYXQsIHR5cGUpOwogICAgICAg
ICBSRUxFQVNFX0FTU0VSVChvcGNvZGUgIT0gQWlyOjpPb3BzKTsKICAgICAgICAgcmV0dXJuIG9w
Y29kZTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTxBaXI6Ok9wY29kZSBvcGNvZGUzMiwgQWlyOjpP
cGNvZGUgb3Bjb2RlNjQsIEFpcjo6T3Bjb2RlIG9wY29kZURvdWJsZT4KKyAgICBBaXI6Ok9wY29k
ZSBvcGNvZGVGb3JUeXBlKEFpcjo6T3Bjb2RlIG9wY29kZTMyLCBBaXI6Ok9wY29kZSBvcGNvZGU2
NCwgVHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRyeU9wY29kZUZvclR5cGUob3Bj
b2RlMzIsIG9wY29kZTY0LCBBaXI6Ok9vcHMsIEFpcjo6T29wcywgdHlwZSk7CisgICAgfQorCisg
ICAgdGVtcGxhdGU8QWlyOjpPcGNvZGUgb3Bjb2RlMzIsIEFpcjo6T3Bjb2RlIG9wY29kZTY0LCBB
aXI6Ok9wY29kZSBvcGNvZGVEb3VibGUgPSBBaXI6Ok9vcHMsIEFpcjo6T3Bjb2RlIG9wY29kZUZs
b2F0ID0gQWlyOjpPb3BzPgogICAgIHZvaWQgYXBwZW5kVW5PcChWYWx1ZSogdmFsdWUpCiAgICAg
ewotICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBvcGNvZGVGb3JUeXBlKG9wY29kZTMyLCBv
cGNvZGU2NCwgb3Bjb2RlRG91YmxlLCB2YWx1ZS0+dHlwZSgpKTsKKyAgICAgICAgQWlyOjpPcGNv
ZGUgb3Bjb2RlID0gb3Bjb2RlRm9yVHlwZShvcGNvZGUzMiwgb3Bjb2RlNjQsIG9wY29kZURvdWJs
ZSwgb3Bjb2RlRmxvYXQsIHZhbHVlLT50eXBlKCkpOwogICAgICAgICAKICAgICAgICAgVG1wIHJl
c3VsdCA9IHRtcChtX3ZhbHVlKTsKIApAQCAtNTYyLDEyICs1NzUsMTAgQEAgcHJpdmF0ZToKICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgQWly
OjpPcGNvZGUgb3Bjb2RlMzIsIEFpcjo6T3Bjb2RlIG9wY29kZTY0LCBBaXI6Ok9wY29kZSBvcGNv
ZGVEb3VibGUsCi0gICAgICAgIENvbW11dGF0aXZpdHkgY29tbXV0YXRpdml0eSA9IE5vdENvbW11
dGF0aXZlPgorICAgIHRlbXBsYXRlPEFpcjo6T3Bjb2RlIG9wY29kZTMyLCBBaXI6Ok9wY29kZSBv
cGNvZGU2NCwgQWlyOjpPcGNvZGUgb3Bjb2RlRG91YmxlLCBBaXI6Ok9wY29kZSBvcGNvZGVGbG9h
dCwgQ29tbXV0YXRpdml0eSBjb21tdXRhdGl2aXR5ID0gTm90Q29tbXV0YXRpdmU+CiAgICAgdm9p
ZCBhcHBlbmRCaW5PcChWYWx1ZSogbGVmdCwgVmFsdWUqIHJpZ2h0KQogICAgIHsKLSAgICAgICAg
QWlyOjpPcGNvZGUgb3Bjb2RlID0gb3Bjb2RlRm9yVHlwZShvcGNvZGUzMiwgb3Bjb2RlNjQsIG9w
Y29kZURvdWJsZSwgbGVmdC0+dHlwZSgpKTsKKyAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0g
b3Bjb2RlRm9yVHlwZShvcGNvZGUzMiwgb3Bjb2RlNjQsIG9wY29kZURvdWJsZSwgb3Bjb2RlRmxv
YXQsIGxlZnQtPnR5cGUoKSk7CiAgICAgICAgIAogICAgICAgICBUbXAgcmVzdWx0ID0gdG1wKG1f
dmFsdWUpOwogICAgICAgICAKQEAgLTY0NSwxMCArNjU2LDE2IEBAIHByaXZhdGU6CiAgICAgICAg
IGFwcGVuZChvcGNvZGUsIHRtcChyaWdodCksIHJlc3VsdCk7CiAgICAgfQogCisgICAgdGVtcGxh
dGU8QWlyOjpPcGNvZGUgb3Bjb2RlMzIsIEFpcjo6T3Bjb2RlIG9wY29kZTY0LCBDb21tdXRhdGl2
aXR5IGNvbW11dGF0aXZpdHkgPSBOb3RDb21tdXRhdGl2ZT4KKyAgICB2b2lkIGFwcGVuZEJpbk9w
KFZhbHVlKiBsZWZ0LCBWYWx1ZSogcmlnaHQpCisgICAgeworICAgICAgICBhcHBlbmRCaW5PcDxv
cGNvZGUzMiwgb3Bjb2RlNjQsIEFpcjo6T29wcywgQWlyOjpPb3BzLCBjb21tdXRhdGl2aXR5Pihs
ZWZ0LCByaWdodCk7CisgICAgfQorCiAgICAgdGVtcGxhdGU8QWlyOjpPcGNvZGUgb3Bjb2RlMzIs
IEFpcjo6T3Bjb2RlIG9wY29kZTY0PgogICAgIHZvaWQgYXBwZW5kU2hpZnQoVmFsdWUqIHZhbHVl
LCBWYWx1ZSogYW1vdW50KQogICAgIHsKLSAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gb3Bj
b2RlRm9yVHlwZShvcGNvZGUzMiwgb3Bjb2RlNjQsIEFpcjo6T29wcywgdmFsdWUtPnR5cGUoKSk7
CisgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IG9wY29kZUZvclR5cGUob3Bjb2RlMzIsIG9w
Y29kZTY0LCB2YWx1ZS0+dHlwZSgpKTsKICAgICAgICAgCiAgICAgICAgIGlmIChpbW0oYW1vdW50
KSkgewogICAgICAgICAgICAgYXBwZW5kKE1vdmUsIHRtcCh2YWx1ZSksIHRtcChtX3ZhbHVlKSk7
CkBAIC02NjQsNyArNjgxLDcgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTxBaXI6Ok9wY29kZSBv
cGNvZGUzMiwgQWlyOjpPcGNvZGUgb3Bjb2RlNjQ+CiAgICAgYm9vbCB0cnlBcHBlbmRTdG9yZVVu
T3AoVmFsdWUqIHZhbHVlKQogICAgIHsKLSAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gdHJ5
T3Bjb2RlRm9yVHlwZShvcGNvZGUzMiwgb3Bjb2RlNjQsIEFpcjo6T29wcywgdmFsdWUtPnR5cGUo
KSk7CisgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IHRyeU9wY29kZUZvclR5cGUob3Bjb2Rl
MzIsIG9wY29kZTY0LCB2YWx1ZS0+dHlwZSgpKTsKICAgICAgICAgaWYgKG9wY29kZSA9PSBBaXI6
Ok9vcHMpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIApAQCAtNjg3LDcgKzcw
NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZTMyLCBBaXI6Ok9wY29k
ZSBvcGNvZGU2NCwgQ29tbXV0YXRpdml0eSBjb21tdXRhdGl2aXR5ID0gTm90Q29tbXV0YXRpdmU+
CiAgICAgYm9vbCB0cnlBcHBlbmRTdG9yZUJpbk9wKFZhbHVlKiBsZWZ0LCBWYWx1ZSogcmlnaHQp
CiAgICAgewotICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSB0cnlPcGNvZGVGb3JUeXBlKG9w
Y29kZTMyLCBvcGNvZGU2NCwgQWlyOjpPb3BzLCBsZWZ0LT50eXBlKCkpOworICAgICAgICBBaXI6
Ok9wY29kZSBvcGNvZGUgPSB0cnlPcGNvZGVGb3JUeXBlKG9wY29kZTMyLCBvcGNvZGU2NCwgbGVm
dC0+dHlwZSgpKTsKICAgICAgICAgaWYgKG9wY29kZSA9PSBBaXI6Ok9vcHMpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIApAQCAtNzQ2LDExICs3NjMsMTUgQEAgcHJpdmF0ZToK
ICAgICAgICAgY2FzZSBJbnQ2NDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzNjRCaXQo
KSk7CiAgICAgICAgICAgICByZXR1cm4gTW92ZTsKKyAgICAgICAgY2FzZSBGbG9hdDoKKyAgICAg
ICAgICAgIHJldHVybiBNb3ZlRmxvYXQ7CiAgICAgICAgIGNhc2UgRG91YmxlOgogICAgICAgICAg
ICAgcmV0dXJuIE1vdmVEb3VibGU7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBjYXNlIFZvaWQ6CisgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICByZXR1cm4gQWlyOjpPb3BzOwogICAgIH0KIAogICAgIEFpcjo6T3Bjb2RlIHJl
bGF4ZWRNb3ZlRm9yVHlwZShUeXBlIHR5cGUpCkBAIC03NTksMTEgKzc4MCwxNCBAQCBwcml2YXRl
OgogICAgICAgICBjYXNlIEludDMyOgogICAgICAgICBjYXNlIEludDY0OgogICAgICAgICAgICAg
cmV0dXJuIE1vdmU7CisgICAgICAgIGNhc2UgRmxvYXQ6CiAgICAgICAgIGNhc2UgRG91YmxlOgog
ICAgICAgICAgICAgcmV0dXJuIE1vdmVEb3VibGU7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBjYXNlIFZvaWQ6Cisg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gQWlyOjpPb3BzOwogICAgIH0KIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KQEAgLTgzMCwxMiArODU0LDEzIEBAIHByaXZhdGU6
CiAgICAgfQogICAgIAogICAgIC8vIENyZWF0ZSBhbiBJbnN0IHRvIGRvIHRoZSBjb21wYXJpc29u
IHNwZWNpZmllZCBieSB0aGUgZ2l2ZW4gdmFsdWUuCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29t
cGFyZUZ1bmN0b3IsIHR5cGVuYW1lIFRlc3RGdW5jdG9yLCB0eXBlbmFtZSBDb21wYXJlRG91Ymxl
RnVuY3Rvcj4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb21wYXJlRnVuY3RvciwgdHlwZW5hbWUg
VGVzdEZ1bmN0b3IsIHR5cGVuYW1lIENvbXBhcmVEb3VibGVGdW5jdG9yLCB0eXBlbmFtZSBDb21w
YXJlRmxvYXRGdW5jdG9yPgogICAgIEluc3QgY3JlYXRlR2VuZXJpY0NvbXBhcmUoCiAgICAgICAg
IFZhbHVlKiB2YWx1ZSwKICAgICAgICAgY29uc3QgQ29tcGFyZUZ1bmN0b3ImIGNvbXBhcmUsIC8v
IFNpZ25hdHVyZTogKEFyZzo6V2lkdGgsIEFyZyByZWxDb25kLCBBcmcsIEFyZykgLT4gSW5zdAog
ICAgICAgICBjb25zdCBUZXN0RnVuY3RvciYgdGVzdCwgLy8gU2lnbmF0dXJlOiAoQXJnOjpXaWR0
aCwgQXJnIHJlc0NvbmQsIEFyZywgQXJnKSAtPiBJbnN0CiAgICAgICAgIGNvbnN0IENvbXBhcmVE
b3VibGVGdW5jdG9yJiBjb21wYXJlRG91YmxlLCAvLyBTaWduYXR1cmU6IChBcmcgZG91YmxlQ29u
ZCwgQXJnLCBBcmcpIC0+IEluc3QKKyAgICAgICAgY29uc3QgQ29tcGFyZUZsb2F0RnVuY3RvciYg
Y29tcGFyZUZsb2F0LCAvLyBTaWduYXR1cmU6IChBcmcgZG91YmxlQ29uZCwgQXJnLCBBcmcpIC0+
IEluc3QKICAgICAgICAgYm9vbCBpbnZlcnRlZCA9IGZhbHNlKQogICAgIHsKICAgICAgICAgLy8g
Q2hldyB0aHJvdWdoIGFueSBuZWdhdGlvbnMuIEl0J3Mgbm90IHN0cmljdGx5IG5lY2Vzc2FyeSBm
b3IgdGhpcyB0byBiZSBhIGxvb3AsIGJ1dCB3ZSBsaWtlCkBAIC05NTksNyArOTg0LDkgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICByZXR1cm4gY29tcGFyZSh3aWR0aCwgcmVsQ29uZCwgdG1w
UHJvbWlzZShsZWZ0KSwgdG1wUHJvbWlzZShyaWdodCkpOwogICAgICAgICAgICAgfQogCi0gICAg
ICAgICAgICAvLyBEb3VibGUgY29tcGFyaXNvbnMgY2FuJ3QgcmVhbGx5IGRvIGFueXRoaW5nIHNt
YXJ0LgorICAgICAgICAgICAgLy8gRmxvYXRpbmcgcG9pbnQgY29tcGFyaXNvbnMgY2FuJ3QgcmVh
bGx5IGRvIGFueXRoaW5nIHNtYXJ0LgorICAgICAgICAgICAgaWYgKHZhbHVlLT5jaGlsZCgwKS0+
dHlwZSgpID09IEZsb2F0KQorICAgICAgICAgICAgICAgIHJldHVybiBjb21wYXJlRmxvYXQoZG91
YmxlQ29uZCwgdG1wUHJvbWlzZShsZWZ0KSwgdG1wUHJvbWlzZShyaWdodCkpOwogICAgICAgICAg
ICAgcmV0dXJuIGNvbXBhcmVEb3VibGUoZG91YmxlQ29uZCwgdG1wUHJvbWlzZShsZWZ0KSwgdG1w
UHJvbWlzZShyaWdodCkpOwogICAgICAgICB9OwogCkBAIC0xMTY1LDYgKzExOTIsMTQgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcmV0dXJuIEluc3QoKTsK
ICAgICAgICAgICAgIH0sCisgICAgICAgICAgICBbdGhpc10gKEFyZyBkb3VibGVDb25kLCBjb25z
dCBBcmdQcm9taXNlJiBsZWZ0LCBjb25zdCBBcmdQcm9taXNlJiByaWdodCkgLT4gSW5zdCB7Cisg
ICAgICAgICAgICAgICAgaWYgKGlzVmFsaWRGb3JtKEJyYW5jaEZsb2F0LCBBcmc6OkRvdWJsZUNv
bmQsIGxlZnQua2luZCgpLCByaWdodC5raW5kKCkpKSB7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBJbnN0KAorICAgICAgICAgICAgICAgICAgICAgICAgQnJhbmNoRmxvYXQsIG1fdmFsdWUs
IGRvdWJsZUNvbmQsCisgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0LmNvbnN1bWUoKnRoaXMp
LCByaWdodC5jb25zdW1lKCp0aGlzKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIHJldHVybiBJbnN0KCk7CisgICAgICAgICAgICB9LAogICAgICAgICAgICAgaW52ZXJ0ZWQp
OwogICAgIH0KIApAQCAtMTIyMyw2ICsxMjU4LDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDkwMwogICAg
ICAgICAgICAgICAgIHJldHVybiBJbnN0KCk7CiAgICAgICAgICAgICB9LAorICAgICAgICAgICAg
W3RoaXNdIChjb25zdCBBcmcmLCBjb25zdCBBcmdQcm9taXNlJiwgY29uc3QgQXJnUHJvbWlzZSYp
IC0+IEluc3QgeworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KKyAg
ICAgICAgICAgICAgICByZXR1cm4gSW5zdCgpOworICAgICAgICAgICAgfSwKICAgICAgICAgICAg
IGludmVydGVkKTsKICAgICB9CiAKQEAgLTEyMzIsNiArMTI3MSw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIEFpcjo6T3Bjb2RlIG1vdmVDb25kaXRpb25hbGx5VGVzdDMyOwogICAgICAgICBBaXI6Ok9w
Y29kZSBtb3ZlQ29uZGl0aW9uYWxseVRlc3Q2NDsKICAgICAgICAgQWlyOjpPcGNvZGUgbW92ZUNv
bmRpdGlvbmFsbHlEb3VibGU7CisgICAgICAgIEFpcjo6T3Bjb2RlIG1vdmVDb25kaXRpb25hbGx5
RmxvYXQ7CiAgICAgICAgIFRtcCBzb3VyY2U7CiAgICAgICAgIFRtcCBkZXN0aW5hdGlvbjsKICAg
ICB9OwpAQCAtMTI5OSw2ICsxMzM5LDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIHJldHVybiBJbnN0KCk7CiAgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgWyZdIChBcmcgZG91YmxlQ29uZCwgY29uc3QgQXJnUHJvbWlzZSYgbGVmdCwgY29uc3QgQXJn
UHJvbWlzZSYgcmlnaHQpIC0+IEluc3QgeworICAgICAgICAgICAgICAgIGlmIChpc1ZhbGlkRm9y
bShjb25maWcubW92ZUNvbmRpdGlvbmFsbHlGbG9hdCwgQXJnOjpEb3VibGVDb25kLCBsZWZ0Lmtp
bmQoKSwgcmlnaHQua2luZCgpLCBBcmc6OlRtcCwgQXJnOjpUbXApKSB7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBJbnN0KAorICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLm1vdmVD
b25kaXRpb25hbGx5RmxvYXQsIG1fdmFsdWUsIGRvdWJsZUNvbmQsCisgICAgICAgICAgICAgICAg
ICAgICAgICBsZWZ0LmNvbnN1bWUoKnRoaXMpLCByaWdodC5jb25zdW1lKCp0aGlzKSwgY29uZmln
LnNvdXJjZSwgY29uZmlnLmRlc3RpbmF0aW9uKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgcmV0dXJuIEluc3QoKTsKKyAgICAgICAgICAgIH0sCiAgICAgICAgICAgICBpbnZl
cnRlZCk7CiAgICAgfQogCkBAIC0xMzY3LDIxICsxNDE1LDIxIEBAIHByaXZhdGU6CiAgICAgICAg
IH0KIAogICAgICAgICBjYXNlIEFkZDogewotICAgICAgICAgICAgYXBwZW5kQmluT3A8QWRkMzIs
IEFkZDY0LCBBZGREb3VibGUsIENvbW11dGF0aXZlPigKKyAgICAgICAgICAgIGFwcGVuZEJpbk9w
PEFkZDMyLCBBZGQ2NCwgQWRkRG91YmxlLCBBZGRGbG9hdCwgQ29tbXV0YXRpdmU+KAogICAgICAg
ICAgICAgICAgIG1fdmFsdWUtPmNoaWxkKDApLCBtX3ZhbHVlLT5jaGlsZCgxKSk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIFN1YjogewogICAgICAgICAg
ICAgaWYgKG1fdmFsdWUtPmNoaWxkKDApLT5pc0ludCgwKSkKLSAgICAgICAgICAgICAgICBhcHBl
bmRVbk9wPE5lZzMyLCBOZWc2NCwgQWlyOjpPb3BzPihtX3ZhbHVlLT5jaGlsZCgxKSk7CisgICAg
ICAgICAgICAgICAgYXBwZW5kVW5PcDxOZWczMiwgTmVnNjQ+KG1fdmFsdWUtPmNoaWxkKDEpKTsK
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBhcHBlbmRCaW5PcDxTdWIzMiwgU3Vi
NjQsIFN1YkRvdWJsZT4obV92YWx1ZS0+Y2hpbGQoMCksIG1fdmFsdWUtPmNoaWxkKDEpKTsKKyAg
ICAgICAgICAgICAgICBhcHBlbmRCaW5PcDxTdWIzMiwgU3ViNjQsIFN1YkRvdWJsZSwgU3ViRmxv
YXQ+KG1fdmFsdWUtPmNoaWxkKDApLCBtX3ZhbHVlLT5jaGlsZCgxKSk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIE11bDogewotICAgICAgICAgICAgYXBw
ZW5kQmluT3A8TXVsMzIsIE11bDY0LCBNdWxEb3VibGUsIENvbW11dGF0aXZlPigKKyAgICAgICAg
ICAgIGFwcGVuZEJpbk9wPE11bDMyLCBNdWw2NCwgTXVsRG91YmxlLCBNdWxGbG9hdCwgQ29tbXV0
YXRpdmU+KAogICAgICAgICAgICAgICAgIG1fdmFsdWUtPmNoaWxkKDApLCBtX3ZhbHVlLT5jaGls
ZCgxKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTE0MTUsMjggKzE0NjMs
MjggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIEFTU0VSVChpc0Zsb2F0
KG1fdmFsdWUtPnR5cGUoKSkpOwogCi0gICAgICAgICAgICBhcHBlbmRCaW5PcDxBaXI6Ok9vcHMs
IEFpcjo6T29wcywgRGl2RG91YmxlPihtX3ZhbHVlLT5jaGlsZCgwKSwgbV92YWx1ZS0+Y2hpbGQo
MSkpOworICAgICAgICAgICAgYXBwZW5kQmluT3A8QWlyOjpPb3BzLCBBaXI6Ok9vcHMsIERpdkRv
dWJsZSwgRGl2RmxvYXQ+KG1fdmFsdWUtPmNoaWxkKDApLCBtX3ZhbHVlLT5jaGlsZCgxKSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIEJpdEFuZDogewot
ICAgICAgICAgICAgYXBwZW5kQmluT3A8QW5kMzIsIEFuZDY0LCBBaXI6Ok9vcHMsIENvbW11dGF0
aXZlPigKKyAgICAgICAgICAgIGFwcGVuZEJpbk9wPEFuZDMyLCBBbmQ2NCwgQ29tbXV0YXRpdmU+
KAogICAgICAgICAgICAgICAgIG1fdmFsdWUtPmNoaWxkKDApLCBtX3ZhbHVlLT5jaGlsZCgxKSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIEJpdE9yOiB7
Ci0gICAgICAgICAgICBhcHBlbmRCaW5PcDxPcjMyLCBPcjY0LCBBaXI6Ok9vcHMsIENvbW11dGF0
aXZlPigKKyAgICAgICAgICAgIGFwcGVuZEJpbk9wPE9yMzIsIE9yNjQsIENvbW11dGF0aXZlPigK
ICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5jaGlsZCgwKSwgbV92YWx1ZS0+Y2hpbGQoMSkpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBCaXRYb3I6IHsK
ICAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgxKS0+aXNJbnQoLTEpKSB7Ci0gICAgICAg
ICAgICAgICAgYXBwZW5kVW5PcDxOb3QzMiwgTm90NjQsIEFpcjo6T29wcz4obV92YWx1ZS0+Y2hp
bGQoMCkpOworICAgICAgICAgICAgICAgIGFwcGVuZFVuT3A8Tm90MzIsIE5vdDY0PihtX3ZhbHVl
LT5jaGlsZCgwKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQotICAg
ICAgICAgICAgYXBwZW5kQmluT3A8WG9yMzIsIFhvcjY0LCBBaXI6Ok9vcHMsIENvbW11dGF0aXZl
PigKKyAgICAgICAgICAgIGFwcGVuZEJpbk9wPFhvcjMyLCBYb3I2NCwgQ29tbXV0YXRpdmU+KAog
ICAgICAgICAgICAgICAgIG1fdmFsdWUtPmNoaWxkKDApLCBtX3ZhbHVlLT5jaGlsZCgxKSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTE0NDYsNyArMTQ5NCw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgLy8gVGhpcyBvcHRpbWl6YXRpb24gbWFrZXMgc2Vuc2Ugb24g
WDg2LiBJIGRvbid0IGtub3cgaWYgaXQgbWFrZXMgc2Vuc2UgYW55d2hlcmUgZWxzZS4KICAgICAg
ICAgICAgICAgICBhcHBlbmQoTW92ZSwgdG1wKG1fdmFsdWUtPmNoaWxkKDApKSwgdG1wKG1fdmFs
dWUpKTsKICAgICAgICAgICAgICAgICBhcHBlbmQoCi0gICAgICAgICAgICAgICAgICAgIG9wY29k
ZUZvclR5cGUoQWRkMzIsIEFkZDY0LCBBaXI6Ok9vcHMsIG1fdmFsdWUtPmNoaWxkKDApLT50eXBl
KCkpLAorICAgICAgICAgICAgICAgICAgICBvcGNvZGVGb3JUeXBlKEFkZDMyLCBBZGQ2NCwgbV92
YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSksCiAgICAgICAgICAgICAgICAgICAgIHRtcChtX3ZhbHVl
KSwgdG1wKG1fdmFsdWUpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9
CkBAIC0xNDY2LDE3ICsxNTE0LDE3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAogICAgICAgICBj
YXNlIENsejogewotICAgICAgICAgICAgYXBwZW5kVW5PcDxDb3VudExlYWRpbmdaZXJvczMyLCBD
b3VudExlYWRpbmdaZXJvczY0LCBBaXI6Ok9vcHM+KG1fdmFsdWUtPmNoaWxkKDApKTsKKyAgICAg
ICAgICAgIGFwcGVuZFVuT3A8Q291bnRMZWFkaW5nWmVyb3MzMiwgQ291bnRMZWFkaW5nWmVyb3M2
ND4obV92YWx1ZS0+Y2hpbGQoMCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
ICAgICAgICAgY2FzZSBTcXJ0OiB7Ci0gICAgICAgICAgICBhcHBlbmRVbk9wPEFpcjo6T29wcywg
QWlyOjpPb3BzLCBTcXJ0RG91YmxlPihtX3ZhbHVlLT5jaGlsZCgwKSk7CisgICAgICAgICAgICBh
cHBlbmRVbk9wPEFpcjo6T29wcywgQWlyOjpPb3BzLCBTcXJ0RG91YmxlLCBTcXJ0RmxvYXQ+KG1f
dmFsdWUtPmNoaWxkKDApKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAg
ICAgIGNhc2UgQml0d2lzZUNhc3Q6IHsKLSAgICAgICAgICAgIGFwcGVuZFVuT3A8QWlyOjpPb3Bz
LCBNb3ZlNjRUb0RvdWJsZSwgTW92ZURvdWJsZVRvNjQ+KG1fdmFsdWUtPmNoaWxkKDApKTsKKyAg
ICAgICAgICAgIGFwcGVuZFVuT3A8TW92ZUludDMyVG9QYWNrZWQsIE1vdmU2NFRvRG91YmxlLCBN
b3ZlRG91YmxlVG82NCwgTW92ZVBhY2tlZFRvSW50MzI+KG1fdmFsdWUtPmNoaWxkKDApKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xNTQyLDYgKzE1OTAsMTYgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCisgICAgICAgIGNhc2UgRmxv
YXRUb0RvdWJsZTogeworICAgICAgICAgICAgYXBwZW5kVW5PcDxBaXI6Ok9vcHMsIEFpcjo6T29w
cywgQWlyOjpPb3BzLCBDb252ZXJ0RmxvYXRUb0RvdWJsZT4obV92YWx1ZS0+Y2hpbGQoMCkpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBEb3VibGVUb0Zs
b2F0OiB7CisgICAgICAgICAgICBhcHBlbmRVbk9wPEFpcjo6T29wcywgQWlyOjpPb3BzLCBDb252
ZXJ0RG91YmxlVG9GbG9hdD4obV92YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKICAgICAgICAgY2FzZSBBcmd1bWVudFJlZzogewogICAgICAgICAgICAg
bV9wcm9sb2d1ZS5hcHBlbmQoSW5zdCgKICAgICAgICAgICAgICAgICBtb3ZlRm9yVHlwZShtX3Zh
bHVlLT50eXBlKCkpLCBtX3ZhbHVlLApAQCAtMTU2MiwxMCArMTYyMCwxMiBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgY2FzZSBDb25zdERvdWJs
ZTogeworICAgICAgICBjYXNlIENvbnN0RG91YmxlOgorICAgICAgICBjYXNlIENvbnN0RmxvYXQ6
IHsKICAgICAgICAgICAgIC8vIFdlIGV4cGVjdCB0aGF0IHRoZSBtb3ZlQ29uc3RhbnRzKCkgcGhh
c2UgaGFzIHJ1biwgYW5kIGFueSBkb3VibGVzIHJlZmVyZW5jZWQgZnJvbQogICAgICAgICAgICAg
Ly8gc3RhY2ttYXBzIGdldCBmdXNlZC4KLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzSWRl
bnRpY2FsKG1fdmFsdWUtPmFzRG91YmxlKCksIDAuMCkpOworICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQobV92YWx1ZS0+b3Bjb2RlKCkgPT0gQ29uc3RGbG9hdCB8fCBpc0lkZW50aWNhbChtX3Zh
bHVlLT5hc0RvdWJsZSgpLCAwLjApKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fdmFs
dWUtPm9wY29kZSgpID09IENvbnN0RG91YmxlIHx8IGlzSWRlbnRpY2FsKG1fdmFsdWUtPmFzRmxv
YXQoKSwgMC4wKSk7CiAgICAgICAgICAgICBhcHBlbmQoTW92ZVplcm9Ub0RvdWJsZSwgdG1wKG1f
dmFsdWUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTYxMSw2ICsxNjcx
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjb25maWcubW92ZUNvbmRpdGlvbmFsbHlU
ZXN0MzIgPSBNb3ZlQ29uZGl0aW9uYWxseVRlc3QzMjsKICAgICAgICAgICAgICAgICBjb25maWcu
bW92ZUNvbmRpdGlvbmFsbHlUZXN0NjQgPSBNb3ZlQ29uZGl0aW9uYWxseVRlc3Q2NDsKICAgICAg
ICAgICAgICAgICBjb25maWcubW92ZUNvbmRpdGlvbmFsbHlEb3VibGUgPSBNb3ZlQ29uZGl0aW9u
YWxseURvdWJsZTsKKyAgICAgICAgICAgICAgICBjb25maWcubW92ZUNvbmRpdGlvbmFsbHlGbG9h
dCA9IE1vdmVDb25kaXRpb25hbGx5RmxvYXQ7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgIC8vIEZJWE1FOiBpdCdzIG5vdCBvYnZpb3VzIHRoYXQgdGhlc2UgYXJlIHBhcnRp
Y3VsYXJseSBlZmZpY2llbnQuCiAgICAgICAgICAgICAgICAgY29uZmlnLm1vdmVDb25kaXRpb25h
bGx5MzIgPSBNb3ZlRG91YmxlQ29uZGl0aW9uYWxseTMyOwpAQCAtMTYxOCw2ICsxNjc5LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICBjb25maWcubW92ZUNvbmRpdGlvbmFsbHlUZXN0MzIg
PSBNb3ZlRG91YmxlQ29uZGl0aW9uYWxseVRlc3QzMjsKICAgICAgICAgICAgICAgICBjb25maWcu
bW92ZUNvbmRpdGlvbmFsbHlUZXN0NjQgPSBNb3ZlRG91YmxlQ29uZGl0aW9uYWxseVRlc3Q2NDsK
ICAgICAgICAgICAgICAgICBjb25maWcubW92ZUNvbmRpdGlvbmFsbHlEb3VibGUgPSBNb3ZlRG91
YmxlQ29uZGl0aW9uYWxseURvdWJsZTsKKyAgICAgICAgICAgICAgICBjb25maWcubW92ZUNvbmRp
dGlvbmFsbHlGbG9hdCA9IE1vdmVEb3VibGVDb25kaXRpb25hbGx5RmxvYXQ7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1faW5zdHMubGFzdCgpLmFwcGVuZChjcmVh
dGVTZWxlY3QobV92YWx1ZS0+Y2hpbGQoMCksIGNvbmZpZykpOwpAQCAtMTYyNSw3ICsxNjg3LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgSVRvRDogewotICAgICAgICAg
ICAgYXBwZW5kVW5PcDxDb252ZXJ0SW50MzJUb0RvdWJsZSwgQ29udmVydEludDY0VG9Eb3VibGUs
IEFpcjo6T29wcz4obV92YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgYXBwZW5kVW5PcDxD
b252ZXJ0SW50MzJUb0RvdWJsZSwgQ29udmVydEludDY0VG9Eb3VibGU+KG1fdmFsdWUtPmNoaWxk
KDApKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xNjg2LDYgKzE3NDgs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2FzZSBJbnQ2NDoKICAgICAgICAgICAgICAgICBh
cHBlbmQoTW92ZSwgVG1wKEdQUkluZm86OnJldHVyblZhbHVlR1BSKSwgdG1wKGNDYWxsKSk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZsb2F0OgogICAgICAgICAg
ICAgY2FzZSBEb3VibGU6CiAgICAgICAgICAgICAgICAgYXBwZW5kKE1vdmVEb3VibGUsIFRtcChG
UFJJbmZvOjpyZXR1cm5WYWx1ZUZQUiksIHRtcChjQ2FsbCkpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtMTc1MCw3ICsxODEzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBhcHBl
bmQoTW92ZSwgdG1wKHJpZ2h0KSwgcmVzdWx0KTsKIAogICAgICAgICAgICAgICAgIEFpcjo6T3Bj
b2RlIG9wY29kZSA9Ci0gICAgICAgICAgICAgICAgICAgIG9wY29kZUZvclR5cGUoQnJhbmNoTmVn
MzIsIEJyYW5jaE5lZzY0LCBBaXI6Ok9vcHMsIGNoZWNrVmFsdWUtPnR5cGUoKSk7CisgICAgICAg
ICAgICAgICAgICAgIG9wY29kZUZvclR5cGUoQnJhbmNoTmVnMzIsIEJyYW5jaE5lZzY0LCBjaGVj
a1ZhbHVlLT50eXBlKCkpOwogICAgICAgICAgICAgICAgIENoZWNrU3BlY2lhbCogc3BlY2lhbCA9
IGVuc3VyZUNoZWNrU3BlY2lhbChvcGNvZGUsIDIpOwogCiAgICAgICAgICAgICAgICAgSW5zdCBp
bnN0KFBhdGNoLCBjaGVja1ZhbHVlLCBBcmc6OnNwZWNpYWwoc3BlY2lhbCkpOwpAQCAtMTc2OCwx
NCArMTgzMSwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgU3RhY2ttYXBTcGVjaWFsOjpSb2xl
TW9kZSBzdGFja21hcFJvbGUgPSBTdGFja21hcFNwZWNpYWw6OlNhbWVBc1JlcDsKICAgICAgICAg
ICAgIHN3aXRjaCAobV92YWx1ZS0+b3Bjb2RlKCkpIHsKICAgICAgICAgICAgIGNhc2UgQ2hlY2tB
ZGQ6Ci0gICAgICAgICAgICAgICAgb3Bjb2RlID0gb3Bjb2RlRm9yVHlwZShCcmFuY2hBZGQzMiwg
QnJhbmNoQWRkNjQsIEFpcjo6T29wcywgbV92YWx1ZS0+dHlwZSgpKTsKKyAgICAgICAgICAgICAg
ICBvcGNvZGUgPSBvcGNvZGVGb3JUeXBlKEJyYW5jaEFkZDMyLCBCcmFuY2hBZGQ2NCwgbV92YWx1
ZS0+dHlwZSgpKTsKICAgICAgICAgICAgICAgICBjb21tdXRhdGl2aXR5ID0gQ29tbXV0YXRpdmU7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENoZWNrU3ViOgotICAg
ICAgICAgICAgICAgIG9wY29kZSA9IG9wY29kZUZvclR5cGUoQnJhbmNoU3ViMzIsIEJyYW5jaFN1
YjY0LCBBaXI6Ok9vcHMsIG1fdmFsdWUtPnR5cGUoKSk7CisgICAgICAgICAgICAgICAgb3Bjb2Rl
ID0gb3Bjb2RlRm9yVHlwZShCcmFuY2hTdWIzMiwgQnJhbmNoU3ViNjQsIG1fdmFsdWUtPnR5cGUo
KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENoZWNrTXVsOgot
ICAgICAgICAgICAgICAgIG9wY29kZSA9IG9wY29kZUZvclR5cGUoQnJhbmNoTXVsMzIsIEJyYW5j
aE11bDY0LCBBaXI6Ok9vcHMsIGNoZWNrVmFsdWUtPnR5cGUoKSk7CisgICAgICAgICAgICAgICAg
b3Bjb2RlID0gb3Bjb2RlRm9yVHlwZShCcmFuY2hNdWwzMiwgQnJhbmNoTXVsNjQsIGNoZWNrVmFs
dWUtPnR5cGUoKSk7CiAgICAgICAgICAgICAgICAgc3RhY2ttYXBSb2xlID0gU3RhY2ttYXBTcGVj
aWFsOjpGb3JjZUxhdGVVc2U7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBk
ZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFs
dWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuY3BwCmluZGV4
IGZhNTYyMjUyMzg3OWFmNDdjYzNlZmJlMzVlN2JlZTVkMzBlZWJiZDQuLmUwNDgxYzYxNjZlNzg0
ODQ5NzRjZDgyYjNjNWQ3NmVlYjY4NGE0ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM01lbW9yeVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNNZW1vcnlWYWx1ZS5jcHAKQEAgLTQ1LDkgKzQ1LDYgQEAgc2l6ZV90IE1lbW9yeVZhbHVlOjph
Y2Nlc3NCeXRlU2l6ZSgpIGNvbnN0CiAgICAgY2FzZSBMb2FkMTZTOgogICAgIGNhc2UgU3RvcmUx
NjoKICAgICAgICAgcmV0dXJuIDI7Ci0gICAgY2FzZSBMb2FkRmxvYXQ6Ci0gICAgY2FzZSBTdG9y
ZUZsb2F0OgotICAgICAgICByZXR1cm4gNDsKICAgICBjYXNlIExvYWQ6CiAgICAgICAgIHJldHVy
biBzaXplb2ZUeXBlKHR5cGUoKSk7CiAgICAgY2FzZSBTdG9yZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNNZW1vcnlWYWx1ZS5oCmluZGV4IGUyYTEwNGMzNTRjZDRiMmYyYjQ4ZjYzZjhjZDY2
NzAwYTE1NDZiYzUuLmE5NjQ4ZTljYTU0M2EzY2QwNTY2NDJlM2Y2ODY2ODJhYzliZDQ1NjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuaApAQCAtNDIsMTEgKzQyLDkg
QEAgcHVibGljOgogICAgICAgICBjYXNlIExvYWQ4UzoKICAgICAgICAgY2FzZSBMb2FkMTZaOgog
ICAgICAgICBjYXNlIExvYWQxNlM6Ci0gICAgICAgIGNhc2UgTG9hZEZsb2F0OgogICAgICAgICBj
YXNlIExvYWQ6CiAgICAgICAgIGNhc2UgU3RvcmU4OgogICAgICAgICBjYXNlIFN0b3JlMTY6Ci0g
ICAgICAgIGNhc2UgU3RvcmVGbG9hdDoKICAgICAgICAgY2FzZSBTdG9yZToKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0OgpAQCAtODksMTIgKzg3LDggQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIGNhc2UgTG9hZDE2UzoKICAgICAgICAgICAgICAgICBBU1NFUlQodHlw
ZSA9PSBJbnQzMik7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIExv
YWRGbG9hdDoKLSAgICAgICAgICAgICAgICBBU1NFUlQodHlwZSA9PSBEb3VibGUpOwotICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBTdG9yZTg6CiAgICAgICAgICAgICBj
YXNlIFN0b3JlMTY6Ci0gICAgICAgICAgICBjYXNlIFN0b3JlRmxvYXQ6CiAgICAgICAgICAgICBj
YXNlIFN0b3JlOgogICAgICAgICAgICAgICAgIEFTU0VSVCh0eXBlID09IFZvaWQpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtMTA2LDcgKzEwMCw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBV
c2UgdGhpcyBmb3JtIGZvciBsb2FkcyB3aGVyZSB0aGUgcmV0dXJuIHR5cGUgaXMgaW1wbGllZC4K
ICAgICBNZW1vcnlWYWx1ZSh1bnNpZ25lZCBpbmRleCwgT3Bjb2RlIG9wY29kZSwgT3JpZ2luIG9y
aWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCkKLSAgICAgICAgOiBNZW1v
cnlWYWx1ZShpbmRleCwgb3Bjb2RlLCBvcGNvZGUgPT0gTG9hZEZsb2F0ID8gRG91YmxlIDogSW50
MzIsIG9yaWdpbiwgcG9pbnRlciwgb2Zmc2V0KQorICAgICAgICA6IE1lbW9yeVZhbHVlKGluZGV4
LCBvcGNvZGUsIEludDMyLCBvcmlnaW4sIHBvaW50ZXIsIG9mZnNldCkKICAgICB7CiAgICAgfQog
CkBAIC0xMjIsNyArMTE2LDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHN3aXRjaCAob3Bjb2Rl
KSB7CiAgICAgICAgICAgICBjYXNlIFN0b3JlODoKICAgICAgICAgICAgIGNhc2UgU3RvcmUxNjoK
LSAgICAgICAgICAgIGNhc2UgU3RvcmVGbG9hdDoKICAgICAgICAgICAgIGNhc2UgU3RvcmU6CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTW92ZUNvbnN0YW50cy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNNb3ZlQ29uc3RhbnRzLmNwcAppbmRleCAxMzM4NTNjZmE3NjFhMjVi
YjdiNjFjMWY2Mzk0MTIzNmFlNDZkN2NlLi41NmQ0Mjg4MDYzZGFlMTI4NGFmNzc1YTc0NTk3ODU4
MzhiMzc0YjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNb3ZlQ29u
c3RhbnRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNb3ZlQ29uc3RhbnRz
LmNwcApAQCAtMTQ0LDcgKzE0NCw4IEBAIHByaXZhdGU6CiAKICAgICBib29sIGdvZXNJblRhYmxl
KGNvbnN0IFZhbHVlS2V5JiBrZXkpCiAgICAgewotICAgICAgICByZXR1cm4ga2V5Lm9wY29kZSgp
ID09IENvbnN0RG91YmxlICYmIGtleSAhPSBkb3VibGVaZXJvKCk7CisgICAgICAgIHJldHVybiAo
a2V5Lm9wY29kZSgpID09IENvbnN0RG91YmxlICYmIGtleSAhPSBkb3VibGVaZXJvKCkpCisgICAg
ICAgIHx8IChrZXkub3Bjb2RlKCkgPT0gQ29uc3RGbG9hdCAmJiBrZXkgIT0gZmxvYXRaZXJvKCkp
OwogICAgIH0KIAogICAgIGJvb2wgbmVlZHNNb3Rpb24oY29uc3QgVmFsdWUqIHZhbHVlKQpAQCAt
MTU3LDYgKzE1OCwxMSBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gVmFsdWVLZXkoQ29uc3RE
b3VibGUsIERvdWJsZSwgMC4wKTsKICAgICB9CiAKKyAgICBzdGF0aWMgVmFsdWVLZXkgZmxvYXRa
ZXJvKCkKKyAgICB7CisgICAgICAgIHJldHVybiBWYWx1ZUtleShDb25zdEZsb2F0LCBEb3VibGUs
IDAuMCk7CisgICAgfQorCiAgICAgUHJvY2VkdXJlJiBtX3Byb2M7CiAgICAgVmVjdG9yPFZhbHVl
Kj4gbV90b1JlbW92ZTsKICAgICBIYXNoTWFwPFZhbHVlS2V5LCB1bnNpZ25lZD4gbV9jb25zdFRh
YmxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAKaW5kZXggZTE1YmI4YTE3MTBi
MjIxMTUwNjU3NTQzZGUyN2MyNDRhZjAwMmExZC4uZGEwMjQ3MTY1N2NmMDUyNzVjNzk0OTkzYTRh
ZDQzNTkzYTFhYWFhMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bj
b2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuY3BwCkBAIC05
Miw2ICs5Miw5IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBPcGNvZGUg
b3Bjb2RlKQogICAgIGNhc2UgQ29uc3REb3VibGU6CiAgICAgICAgIG91dC5wcmludCgiQ29uc3RE
b3VibGUiKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQ29uc3RGbG9hdDoKKyAgICAgICAg
b3V0LnByaW50KCJDb25zdEZsb2F0Iik7CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIFN0YWNr
U2xvdDoKICAgICAgICAgb3V0LnByaW50KCJTdGFja1Nsb3QiKTsKICAgICAgICAgcmV0dXJuOwpA
QCAtMTYxLDE1ICsxNjQsMTggQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQs
IE9wY29kZSBvcGNvZGUpCiAgICAgY2FzZSBUcnVuYzoKICAgICAgICAgb3V0LnByaW50KCJUcnVu
YyIpOwogICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBGUm91bmQ6Ci0gICAgICAgIG91dC5wcmlu
dCgiRlJvdW5kIik7Ci0gICAgICAgIHJldHVybjsKICAgICBjYXNlIElUb0Q6CiAgICAgICAgIG91
dC5wcmludCgiSVRvRCIpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBEVG9JMzI6CiAgICAg
ICAgIG91dC5wcmludCgiRFRvSTMyIik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEZsb2F0
VG9Eb3VibGU6CisgICAgICAgIG91dC5wcmludCgiRmxvYXRUb0RvdWJsZSIpOworICAgICAgICBy
ZXR1cm47CisgICAgY2FzZSBEb3VibGVUb0Zsb2F0OgorICAgICAgICBvdXQucHJpbnQoIkRvdWJs
ZVRvRmxvYXQiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgRXF1YWw6CiAgICAgICAgIG91
dC5wcmludCgiRXF1YWwiKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjE1LDkgKzIyMSw2IEBAIHZv
aWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBPcGNvZGUgb3Bjb2RlKQogICAgIGNh
c2UgTG9hZDE2UzoKICAgICAgICAgb3V0LnByaW50KCJMb2FkMTZTIik7CiAgICAgICAgIHJldHVy
bjsKLSAgICBjYXNlIExvYWRGbG9hdDoKLSAgICAgICAgb3V0LnByaW50KCJMb2FkRmxvYXQiKTsK
LSAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgTG9hZDoKICAgICAgICAgb3V0LnByaW50KCJMb2Fk
Iik7CiAgICAgICAgIHJldHVybjsKQEAgLTIyNyw5ICsyMzAsNiBAQCB2b2lkIHByaW50SW50ZXJu
YWwoUHJpbnRTdHJlYW0mIG91dCwgT3Bjb2RlIG9wY29kZSkKICAgICBjYXNlIFN0b3JlMTY6CiAg
ICAgICAgIG91dC5wcmludCgiU3RvcmUxNiIpOwogICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBT
dG9yZUZsb2F0OgotICAgICAgICBvdXQucHJpbnQoIlN0b3JlRmxvYXQiKTsKLSAgICAgICAgcmV0
dXJuOwogICAgIGNhc2UgU3RvcmU6CiAgICAgICAgIG91dC5wcmludCgiU3RvcmUiKTsKICAgICAg
ICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2Rl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaAppbmRleCBmMGYzYWI4YmMw
YzllZWQ1M2JiNzc1ODM5MjkxOWFlY2U4ODg1MTc5Li5hZGZkMjJmZmFiMmQ4YTc2OTdjNjk2MjA0
NTU2ZDdkNmVhMWI5NDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNP
cGNvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaApAQCAtNDYs
NiArNDYsNyBAQCBlbnVtIE9wY29kZSA6IGludDE2X3QgewogICAgIENvbnN0MzIsCiAgICAgQ29u
c3Q2NCwKICAgICBDb25zdERvdWJsZSwKKyAgICBDb25zdEZsb2F0LAogCiAgICAgLy8gVGhlIG1h
Z2ljYWwgc3RhY2sgc2xvdC4gVGhpcyBpcyB2aWV3ZWQgYXMgZXhlY3V0aW5nIGF0IHRoZSB0b3Ag
b2YgdGhlIHByb2dyYW0gcmVnYXJkbGVzcyBvZgogICAgIC8vIHdoZXJlIGluIGNvbnRyb2wgZmxv
dyB5b3UgcHV0IGl0LiBFYWNoIGluc3RhbmNlIG9mIGEgU3RhY2tTbG90IFZhbHVlIGdldHMgYSBk
aXNqb2ludCByYW5nZSBvZgpAQCAtOTYsMTIgKzk3LDEzIEBAIGVudW0gT3Bjb2RlIDogaW50MTZf
dCB7CiAgICAgWkV4dDMyLAogICAgIC8vIFRha2VzIEludDY0IGFuZCByZXR1cm5zIEludDMyOgog
ICAgIFRydW5jLAotICAgIC8vIFRha2VzIGFuZCByZXR1cm5zIERvdWJsZToKLSAgICBGUm91bmQs
CiAgICAgLy8gVGFrZXMgaW50cyBhbmQgcmV0dXJucyBEb3VibGU6CiAgICAgSVRvRCwKICAgICAv
LyBUYWtlcyBEb3VibGUgYW5kIHJldHVybnMgSW50MzI6CiAgICAgRFRvSTMyLAorICAgIC8vIENv
bnZlcnQgYmV0d2VlbiBkb3VibGUgYW5kIGZsb2F0LgorICAgIEZsb2F0VG9Eb3VibGUsCisgICAg
RG91YmxlVG9GbG9hdCwKIAogICAgIC8vIFBvbHltb3JwaGljIGNvbXBhcmlzb25zLCB1c2FibGUg
d2l0aCBhbnkgdmFsdWUgdHlwZS4gUmV0dXJucyBpbnQzMiAwIG9yIDEuIE5vdGUgdGhhdCAiTm90
IgogICAgIC8vIGlzIGp1c3QgRXF1YWwoeCwgMCksIGFuZCAiVG9Cb29sZWFuIiBpcyBqdXN0IE5v
dEVxdWFsKHgsIDApLgpAQCAtMTI4LDggKzEzMCw2IEBAIGVudW0gT3Bjb2RlIDogaW50MTZfdCB7
CiAgICAgTG9hZDhTLAogICAgIExvYWQxNlosCiAgICAgTG9hZDE2UywKLSAgICAvLyBUaGlzIHJl
dHVybnMgRG91YmxlOgotICAgIExvYWRGbG9hdCwKICAgICAvLyBUaGlzIHJldHVybnMgd2hhdGV2
ZXIgdGhlIHJldHVybiB0eXBlIGlzOgogICAgIExvYWQsCiAKQEAgLTEzNyw5ICsxMzcsNyBAQCBl
bnVtIE9wY29kZSA6IGludDE2X3QgewogICAgIC8vIFRoZXNlIHRha2UgYW4gSW50MzIgdmFsdWU6
CiAgICAgU3RvcmU4LAogICAgIFN0b3JlMTYsCi0gICAgLy8gVGhpcyB0YWtlcyBhIERvdWJsZSB2
YWx1ZToKLSAgICBTdG9yZUZsb2F0LAotICAgIC8vIFRoaXMgaXMgYSBwb2x5bW9ycGhpYyBzdG9y
ZSBmb3IgSW50MzIsIEludDY0LCBhbmQgRG91YmxlOgorICAgIC8vIFRoaXMgaXMgYSBwb2x5bW9y
cGhpYyBzdG9yZSBmb3IgSW50MzIsIEludDY0LCBGbG9hdCwgYW5kIERvdWJsZS4KICAgICBTdG9y
ZSwKIAogICAgIC8vIFRoaXMgaXMgYSByZWd1bGFyIG9yZGluYXJ5IEMgZnVuY3Rpb24gY2FsbCwg
dXNpbmcgdGhlIHN5c3RlbSBDIGNhbGxpbmcgY29udmVudGlvbi4gTWFrZSBzdXJlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcAppbmRleCAwZjhlYmI0OWI1ZWIxNGE1Yjlj
ODA1MDNjYjE1MDIxNDJiNGUzZDViLi43YWQyMTY1ZjA0MmM5ZjFkZGYyZTE0NGNiNWVmMTlmMDJj
MDJkMGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAKQEAgLTY2
LDYgKzY2LDggQEAgVmFsdWUqIFByb2NlZHVyZTo6YWRkSW50Q29uc3RhbnQoT3JpZ2luIG9yaWdp
biwgVHlwZSB0eXBlLCBpbnQ2NF90IHZhbHVlKQogICAgICAgICByZXR1cm4gYWRkPENvbnN0NjRW
YWx1ZT4ob3JpZ2luLCB2YWx1ZSk7CiAgICAgY2FzZSBEb3VibGU6CiAgICAgICAgIHJldHVybiBh
ZGQ8Q29uc3REb3VibGVWYWx1ZT4ob3JpZ2luLCBzdGF0aWNfY2FzdDxkb3VibGU+KHZhbHVlKSk7
CisgICAgY2FzZSBGbG9hdDoKKyAgICAgICAgcmV0dXJuIGFkZDxDb25zdEZsb2F0VmFsdWU+KG9y
aWdpbiwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZhbHVlKSk7CiAgICAgZGVmYXVsdDoKICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VEb3VibGVUb0Zsb2F0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZURvdWJsZVRvRmxvYXQuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjhjYzZjM2FjNmJhNzRjMjczYTMyN2VlNTU4OTgyNTA1NTIyODY3OTgKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VEb3VibGVU
b0Zsb2F0LmNwcApAQCAtMCwwICsxLDE1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQjNSZWR1
Y2VEb3VibGVUb0Zsb2F0LmgiCisKKyNpZiBFTkFCTEUoQjNfSklUKQorCisjaW5jbHVkZSAiQjNC
YXNpY0Jsb2NrLmgiCisjaW5jbHVkZSAiQjNQaGFzZVNjb3BlLmgiCisjaW5jbHVkZSAiQjNWYWx1
ZUlubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK25hbWVzcGFj
ZSB7Cit2b2lkIGF0dGVtcHRTaW1wbGlmaWNhdGlvbihWYWx1ZSogY2FuZGlkYXRlKQoreworICAg
IHN3aXRjaCAoY2FuZGlkYXRlLT5vcGNvZGUoKSkgeworICAgIGNhc2UgQWRkOgorICAgIGNhc2Ug
U3ViOgorICAgIGNhc2UgTXVsOgorICAgIGNhc2UgRGl2OgorICAgICAgICBpZiAoY2FuZGlkYXRl
LT5jaGlsZCgwKS0+b3Bjb2RlKCkgPT0gRmxvYXRUb0RvdWJsZSAmJiBjYW5kaWRhdGUtPmNoaWxk
KDEpLT5vcGNvZGUoKSA9PSBGbG9hdFRvRG91YmxlKSB7CisgICAgICAgICAgICBjYW5kaWRhdGUt
PmNoaWxkKDApID0gY2FuZGlkYXRlLT5jaGlsZCgwKS0+Y2hpbGQoMCk7CisgICAgICAgICAgICBj
YW5kaWRhdGUtPmNoaWxkKDEpID0gY2FuZGlkYXRlLT5jaGlsZCgxKS0+Y2hpbGQoMCk7CisgICAg
ICAgICAgICBjYW5kaWRhdGUtPnNldFR5cGUoRmxvYXQpOworICAgICAgICB9CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgU3FydDoKKyAgICAgICAgaWYgKGNhbmRpZGF0ZS0+Y2hpbGQoMCktPm9w
Y29kZSgpID09IEZsb2F0VG9Eb3VibGUpIHsKKyAgICAgICAgICAgIGNhbmRpZGF0ZS0+Y2hpbGQo
MCkgPSBjYW5kaWRhdGUtPmNoaWxkKDApLT5jaGlsZCgwKTsKKyAgICAgICAgICAgIGNhbmRpZGF0
ZS0+c2V0VHlwZShGbG9hdCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZQorCisvLyBUaGUg
Z29hbCBvZiB0aGlzIHBoYXNlIGlzIHRvIHRyYW5zZm9ybSBEb3VibGUgb3BlcmF0aW9ucworLy8g
aW50byBmbG9hdCBpZiB0aGUgRG91YmxlIHJlc3VsdCBpcyBuZXZlciB1c2VkIGFzIERvdWJsZS4K
Ky8vCisvLyBJbiBDLCB0aGF0IHdvdWxkIGJlIHNvbWV0aGluZyBsaWtlOgorLy8gICAgIGZsb2F0
IGFkZChmbG9hdCBhLCBmbG9hdCBiKSB7CisvLyAgICAgICAgIHJldHVybiAoZG91YmxlKWEgKyAo
ZG91YmxlKWI7CisvLyAgICAgfQorLy8KKy8vIFN1Y2ggb3BlcmF0aW9uIGFyaXNlIGluIEpTIGJl
Y2F1c2UgdGhlcmUgYXJlIGlzIG5vIEZsb2F0IHR5cGUKKy8vIGFuZCBmbG9hdCBvcGVyYXRpb25z
IGFyZSBnZW5lcmF0ZWQgYnkgYWRkaW5nIGRvdWJsZS10by1mbG9hdCByb3VuZGluZy4KKy8vCisv
LyBUaGUgb3BlcmF0aW9ucyBjYW4gYmUgZG9uZSBlbnRpcmVseSB3aXRob3V0IERvdWJsZSBjb252
ZXJzaW9uLgorLy8gVXNpbmcgZmxvYXQgaW4gcGxhY2UgcmVtb3ZlIHRoZSB1c2VsZXNzIGNvbnZl
cnNpb24sIGFuZCB0aGUgZmxvYXQKKy8vIG9wcyBpcyBzb21ldGltZSBtYXNzaXZlbHkgY2hlYXBl
ciAoU1FSVCBmb3IgZXhhbXBsZSkuCisvLworLy8gSWYgdGhlIERvdWJsZSB2YWx1ZSBpcyB1c2Vk
IGFzIERvdWJsZSwgd2UgZG8gbm90IGRvIHRoZSBjb252ZXJzaW9uLgorLy8gSXQgaXMgY2hlYXBl
ciB0byBkbyBhIGNvbnZlcnNpb24gdGhhbiByZXBlYXQgYW55IGZsb2F0aW5nLXBvaW50IG9wZXJh
dGlvbi4KK3ZvaWQgcmVkdWNlRG91YmxlVG9GbG9hdChQcm9jZWR1cmUmIHByb2NlZHVyZSkKK3sK
KyAgICBQaGFzZVNjb3BlIHBoYXNlU2NvcGUocHJvY2VkdXJlLCAicmVkdWNlRG91YmxlVG9GbG9h
dCIpOworCisgICAgSGFzaFNldDxWYWx1ZSo+IGNhbmRpZGF0ZXM7CisKKyAgICAvLyBGaXJzdCwg
d2UgZmluZCBhbnkgdmFsdWUgdGhhdCBpcyBjb252ZXJ0ZWQgdG8gZmxvYXQKKyAgICAvLyBhbmQg
b25seSB1c2VkIGFzIGZsb2F0LgorICAgIC8vIFdlIGFsc28gc2ltcGxpZnkgY29tcGFyaXNvbnMg
c2luY2UgdGhhdCdzIGFsd2F5cyBzYWZlIGFuZCB3ZQorICAgIC8vIGRvbid0IHdhbnQgdGhlbSB0
byBhcHBlYXIgaW4gdGhlIG5leHQgbG9vcC4KKyAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDog
cHJvY2VkdXJlKSB7CisgICAgICAgIGZvciAoVmFsdWUqIHZhbHVlIDogKmJsb2NrKSB7CisgICAg
ICAgICAgICB2YWx1ZS0+cGVyZm9ybVN1YnN0aXR1dGlvbigpOworCisgICAgICAgICAgICBzd2l0
Y2ggKHZhbHVlLT5vcGNvZGUoKSkgeworICAgICAgICAgICAgY2FzZSBEb3VibGVUb0Zsb2F0Ogor
ICAgICAgICAgICAgICAgIGNhbmRpZGF0ZXMuYWRkKHZhbHVlLT5jaGlsZCgwKSk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEVxdWFsOgorICAgICAgICAgICAgY2Fz
ZSBOb3RFcXVhbDoKKyAgICAgICAgICAgIGNhc2UgTGVzc1RoYW46CisgICAgICAgICAgICBjYXNl
IEdyZWF0ZXJUaGFuOgorICAgICAgICAgICAgY2FzZSBMZXNzRXF1YWw6CisgICAgICAgICAgICBj
YXNlIEdyZWF0ZXJFcXVhbDoKKyAgICAgICAgICAgICAgICBpZiAodmFsdWUtPmNoaWxkKDApLT5v
cGNvZGUoKSA9PSBGbG9hdFRvRG91YmxlICYmIHZhbHVlLT5jaGlsZCgxKS0+b3Bjb2RlKCkgPT0g
RmxvYXRUb0RvdWJsZSkgeworICAgICAgICAgICAgICAgICAgICB2YWx1ZS0+Y2hpbGQoMCkgPSB2
YWx1ZS0+Y2hpbGQoMCktPmNoaWxkKDApOworICAgICAgICAgICAgICAgICAgICB2YWx1ZS0+Y2hp
bGQoMSkgPSB2YWx1ZS0+Y2hpbGQoMSktPmNoaWxkKDApOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmb3IgKEJh
c2ljQmxvY2sqIGJsb2NrIDogcHJvY2VkdXJlKSB7CisgICAgICAgIGZvciAoVmFsdWUqIHZhbHVl
IDogKmJsb2NrKSB7CisgICAgICAgICAgICBpZiAodmFsdWUtPm9wY29kZSgpID09IERvdWJsZVRv
RmxvYXQpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGZvciAoVmFs
dWUqIGNoaWxkIDogdmFsdWUtPmNoaWxkcmVuKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoY2hp
bGQtPnR5cGUoKSA9PSBEb3VibGUpCisgICAgICAgICAgICAgICAgICAgIGNhbmRpZGF0ZXMucmVt
b3ZlKGNoaWxkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChj
YW5kaWRhdGVzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gU2Vjb25kLCB3
ZSBnbyBvdmVyIHRoZSBjYW5kaWRhdGVzIGFuZCBhdHRlbXB0IHRvIHNpbXBsaWZ5IHRoZW0uCisg
ICAgLy8gVGhpcyBsZWF2ZXMgdGhlIGdyYXBoIGluIGFuIGludmFsaWQgc3RhdGUgd2hlcmUgRmxv
YXQgVmFsdWVzIGFyZQorICAgIC8vIHVzZWQgYnkgRG91YmxlVG9GbG9hdCBWYWx1ZXMuIFRoaXMg
aXMgb25seSB0ZW1wb3JhcnkuCisgICAgZm9yIChWYWx1ZSogY2FuZGlkYXRlIDogY2FuZGlkYXRl
cykKKyAgICAgICAgYXR0ZW1wdFNpbXBsaWZpY2F0aW9uKGNhbmRpZGF0ZSk7CisKKyAgICAvLyBG
aW5hbGx5LCByZW1vdmUgdGhlIERvdWJsZVRvRmxvYXQgbWFkZSB1c2VsZXNzIGJ5IHRoZSBzaW1w
bGlmaWNhdGlvbnMuCisgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IHByb2NlZHVyZSkgewor
ICAgICAgICBmb3IgKFZhbHVlKiB2YWx1ZSA6ICpibG9jaykgeworICAgICAgICAgICAgaWYgKHZh
bHVlLT5vcGNvZGUoKSA9PSBEb3VibGVUb0Zsb2F0ICYmIHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgp
ID09IEZsb2F0KQorICAgICAgICAgICAgICAgIHZhbHVlLT5yZXBsYWNlV2l0aElkZW50aXR5KHZh
bHVlLT5jaGlsZCgwKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBXZSBkbyBub3QgY2xl
YW4gYWxsIHRoZSB1c2VsZXNzIG5vZGVzIGFuZCBjb252ZXJzaW9ucy4gUmVkdWNlU3RyZW5ndGgg
ZG9lcyB0aGF0IGJldHRlci4KK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKKyNlbmRp
ZiAvLyBFTkFCTEUoQjNfSklUKQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNSZWR1Y2VEb3VibGVUb0Zsb2F0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNS
ZWR1Y2VEb3VibGVUb0Zsb2F0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODBhNTJiNTZhMzA5N2MzMTY5NzhlMDMw
ZmJhMWE3NjkzNGNjZDc0MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1JlZHVjZURvdWJsZVRvRmxvYXQuaApAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQjNSZWR1Y2VEb3Vi
bGVUb0Zsb2F0X2gKKyNkZWZpbmUgQjNSZWR1Y2VEb3VibGVUb0Zsb2F0X2gKKworI2lmIEVOQUJM
RShCM19KSVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeworCitjbGFzcyBQcm9j
ZWR1cmU7CisKKy8vIENoYW5nZSBEb3VibGUgb3BlcmF0aW9ucyB0byBGbG9hdCBvcGVyYXRpb25z
IHdoZW4gdGhlIGRpZmZlcmVuY2UgaXMgbm90IG9ic2VydmFibGUKKy8vIGFuZCBkb2luZyBzbyBp
cyBsaWtlbHkgYmVuZWZpY2lhbC4KK3ZvaWQgcmVkdWNlRG91YmxlVG9GbG9hdChQcm9jZWR1cmUm
KTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklU
KQorCisjZW5kaWYgLy8gQjNSZWR1Y2VEb3VibGVUb0Zsb2F0X2gKKwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwCmluZGV4IDhjMjc2NGYwYjRjZDVjNjFm
YmQzNTZhOTEzNzVlNDEwYmZjMmFkMDYuLmE0NmExMmM3MDQ5M2M2YzY4NWUxMjJkYzA4YTljYTQz
MzIxZjAxZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0
cmVuZ3RoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0
aC5jcHAKQEAgLTQ4NSw2ICs0ODUsMTUgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgYnJlYWs7
CiAKKyAgICAgICAgY2FzZSBTcXJ0OgorICAgICAgICAgICAgLy8gVHVybiB0aGlzOiBTcXJ0KGNv
bnN0YW50KQorICAgICAgICAgICAgLy8gSW50byB0aGlzOiBzcXJ0PHZhbHVlLT50eXBlKCk+KGNv
bnN0YW50KQorICAgICAgICAgICAgaWYgKFZhbHVlKiBjb25zdGFudCA9IG1fdmFsdWUtPmNoaWxk
KDApLT5zcXJ0Q29uc3RhbnQobV9wcm9jKSkgeworICAgICAgICAgICAgICAgIHJlcGxhY2VXaXRo
TmV3VmFsdWUoY29uc3RhbnQpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgY2FzZSBCaXR3aXNlQ2FzdDoKICAgICAg
ICAgICAgIC8vIFR1cm4gdGhpczogQml0d2lzZUNhc3QoY29uc3RhbnQpCiAgICAgICAgICAgICAv
LyBJbnRvIHRoaXM6IGJpdHdpc2VfY2FzdDx2YWx1ZS0+dHlwZSgpPihjb25zdGFudCkKQEAgLTU0
MSw2ICs1NTAsMzIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFr
OwogCisgICAgICAgIGNhc2UgRmxvYXRUb0RvdWJsZToKKyAgICAgICAgICAgIC8vIFR1cm4gdGhp
czogRmxvYXRUb0RvdWJsZShjb25zdGFudCkKKyAgICAgICAgICAgIC8vIEludG8gdGhpczogQ29u
c3REb3VibGUoY29uc3RhbnQpCisgICAgICAgICAgICBpZiAoVmFsdWUqIGNvbnN0YW50ID0gbV92
YWx1ZS0+Y2hpbGQoMCktPmZsb2F0VG9Eb3VibGVDb25zdGFudChtX3Byb2MpKSB7CisgICAgICAg
ICAgICAgICAgcmVwbGFjZVdpdGhOZXdWYWx1ZShjb25zdGFudCk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNl
IERvdWJsZVRvRmxvYXQ6CisgICAgICAgICAgICAvLyBUdXJuIHRoaXM6IERvdWJsZVRvRmxvYXQo
RmxvYXRUb0RvdWJsZSh2YWx1ZSkpCisgICAgICAgICAgICAvLyBJbnRvIHRoaXM6IHZhbHVlCisg
ICAgICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMCktPm9wY29kZSgpID09IEZsb2F0VG9Eb3Vi
bGUpIHsKKyAgICAgICAgICAgICAgICBtX3ZhbHVlLT5yZXBsYWNlV2l0aElkZW50aXR5KG1fdmFs
dWUtPmNoaWxkKDApLT5jaGlsZCgwKSk7CisgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1
ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
Ly8gVHVybiB0aGlzOiBEb3VibGVUb0Zsb2F0KGNvbnN0YW50KQorICAgICAgICAgICAgLy8gSW50
byB0aGlzOiBDb25zdEZsb2F0KGNvbnN0YW50KQorICAgICAgICAgICAgaWYgKFZhbHVlKiBjb25z
dGFudCA9IG1fdmFsdWUtPmNoaWxkKDApLT5kb3VibGVUb0Zsb2F0Q29uc3RhbnQobV9wcm9jKSkg
eworICAgICAgICAgICAgICAgIHJlcGxhY2VXaXRoTmV3VmFsdWUoY29uc3RhbnQpOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKICAg
ICAgICAgY2FzZSBTZWxlY3Q6CiAgICAgICAgICAgICAvLyBUdXJuIHRoaXM6IFNlbGVjdChjb25z
dGFudCwgYSwgYikKICAgICAgICAgICAgIC8vIEludG8gdGhpczogY29uc3RhbnQgPyBhIDogYgpA
QCAtNTk1LDExICs2MzAsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIExvYWQ4UzoKICAgICAg
ICAgY2FzZSBMb2FkMTZaOgogICAgICAgICBjYXNlIExvYWQxNlM6Ci0gICAgICAgIGNhc2UgTG9h
ZEZsb2F0OgogICAgICAgICBjYXNlIExvYWQ6CiAgICAgICAgIGNhc2UgU3RvcmU4OgogICAgICAg
ICBjYXNlIFN0b3JlMTY6Ci0gICAgICAgIGNhc2UgU3RvcmVGbG9hdDoKICAgICAgICAgY2FzZSBT
dG9yZTogewogICAgICAgICAgICAgVmFsdWUqIGFkZHJlc3MgPSBtX3ZhbHVlLT5sYXN0Q2hpbGQo
KTsKICAgICAgICAgICAgIE1lbW9yeVZhbHVlKiBtZW1vcnkgPSBtX3ZhbHVlLT5hczxNZW1vcnlW
YWx1ZT4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1R5cGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVHlwZS5jcHAKaW5kZXggMDIzNWFhNDcyMDQz
YTk3MTdjNDU2ZDlhYzMwNTNjMzM0N2E3MDE5My4uMDA1N2VhZjYxN2UwZDQ3YTQyZDg3M2FmYjVm
NzFiMzBmYzE0ZGMwMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVHlw
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVHlwZS5jcHAKQEAgLTQ2LDYg
KzQ2LDkgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIFR5cGUgdHlwZSkK
ICAgICBjYXNlIEludDY0OgogICAgICAgICBvdXQucHJpbnQoIkludDY0Iik7CiAgICAgICAgIHJl
dHVybjsKKyAgICBjYXNlIEZsb2F0OgorICAgICAgICBvdXQucHJpbnQoIkZsb2F0Iik7CisgICAg
ICAgIHJldHVybjsKICAgICBjYXNlIERvdWJsZToKICAgICAgICAgb3V0LnByaW50KCJEb3VibGUi
KTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVHlwZS5oCmluZGV4IGY5YTNh
ZTBmZmQ4YzBkYzNiN2VlNTVkYjI1ZWFhYTJjZWNkZTA2YWMuLmRkZTQxNDFmY2Y5NmE2NjkzMDcx
YmJjYjJkOGVjZmI5MDhhMDE1NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNUeXBlLmgKQEAgLTM3
LDYgKzM3LDcgQEAgZW51bSBUeXBlIDogaW50OF90IHsKICAgICBWb2lkLAogICAgIEludDMyLAog
ICAgIEludDY0LAorICAgIEZsb2F0LAogICAgIERvdWJsZQogfTsKIApAQCAtNDcsNyArNDgsNyBA
QCBpbmxpbmUgYm9vbCBpc0ludChUeXBlIHR5cGUpCiAKIGlubGluZSBib29sIGlzRmxvYXQoVHlw
ZSB0eXBlKQogewotICAgIHJldHVybiB0eXBlID09IERvdWJsZTsKKyAgICByZXR1cm4gdHlwZSA9
PSBGbG9hdCB8fCB0eXBlID09IERvdWJsZTsKIH0KIAogaW5saW5lIFR5cGUgcG9pbnRlclR5cGUo
KQpAQCAtNjMsNiArNjQsNyBAQCBpbmxpbmUgc2l6ZV90IHNpemVvZlR5cGUoVHlwZSB0eXBlKQog
ICAgIGNhc2UgVm9pZDoKICAgICAgICAgcmV0dXJuIDA7CiAgICAgY2FzZSBJbnQzMjoKKyAgICBj
YXNlIEZsb2F0OgogICAgICAgICByZXR1cm4gNDsKICAgICBjYXNlIEludDY0OgogICAgIGNhc2Ug
RG91YmxlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwCmluZGV4IDEwNjQx
YTA2MmZhYmEwNTEwYzM3OWM5Y2JmNDRjNTg5YWY4M2YyM2QuLjc1ODc0NDMxNWJiZjQ0NzM0NzYx
ODk2YjNlMjgyNDRkYTJhMjM1MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1ZhbGlkYXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0
ZS5jcHAKQEAgLTEzNCw2ICsxMzQsMTAgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIFZBTElE
QVRFKCF2YWx1ZS0+bnVtQ2hpbGRyZW4oKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAg
ICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IERvdWJsZSwgKCJBdCAiLCAqdmFsdWUpKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ29uc3RGbG9hdDoKKyAg
ICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPm51bUNoaWxkcmVuKCksICgiQXQgIiwgKnZh
bHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBGbG9hdCwg
KCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNh
c2UgU3RhY2tTbG90OgogICAgICAgICAgICAgY2FzZSBGcmFtZVBvaW50ZXI6CiAgICAgICAgICAg
ICAgICAgVkFMSURBVEUoIXZhbHVlLT5udW1DaGlsZHJlbigpLCAoIkF0ICIsICp2YWx1ZSkpOwpA
QCAtMTc3LDcgKzE4MSw5IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1
ZS0+dHlwZSgpICE9IHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOwog
ICAgICAgICAgICAgICAgIFZBTElEQVRFKAogICAgICAgICAgICAgICAgICAgICAodmFsdWUtPnR5
cGUoKSA9PSBJbnQ2NCAmJiB2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSA9PSBEb3VibGUpCi0gICAg
ICAgICAgICAgICAgICAgIHx8ICh2YWx1ZS0+dHlwZSgpID09IERvdWJsZSAmJiB2YWx1ZS0+Y2hp
bGQoMCktPnR5cGUoKSA9PSBJbnQ2NCksCisgICAgICAgICAgICAgICAgICAgIHx8ICh2YWx1ZS0+
dHlwZSgpID09IERvdWJsZSAmJiB2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSA9PSBJbnQ2NCkKKyAg
ICAgICAgICAgICAgICAgICAgfHwgKHZhbHVlLT50eXBlKCkgPT0gRmxvYXQgJiYgdmFsdWUtPmNo
aWxkKDApLT50eXBlKCkgPT0gSW50MzIpCisgICAgICAgICAgICAgICAgICAgIHx8ICh2YWx1ZS0+
dHlwZSgpID09IEludDMyICYmIHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpID09IEZsb2F0KSwKICAg
ICAgICAgICAgICAgICAgICAgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIGNhc2UgU0V4dDg6CkBAIC0yMDMsMTAgKzIwOSw5IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IEludDMyLCAoIkF0ICIs
ICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBTcXJ0
OgotICAgICAgICAgICAgY2FzZSBGUm91bmQ6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFs
dWUtPm51bUNoaWxkcmVuKCkgPT0gMSwgKCJBdCAiLCAqdmFsdWUpKTsKLSAgICAgICAgICAgICAg
ICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSA9PSBEb3VibGUsICgiQXQgIiwgKnZh
bHVlKSk7Ci0gICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBEb3VibGUs
ICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUoaXNGbG9hdCh2YWx1
ZS0+Y2hpbGQoMCktPnR5cGUoKSksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAg
VkFMSURBVEUoaXNGbG9hdCh2YWx1ZS0+dHlwZSgpKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgSVRvRDoKICAgICAgICAgICAgICAg
ICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAxLCAoIkF0ICIsICp2YWx1ZSkpOwpA
QCAtMjE4LDYgKzIyMywxNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFs
dWUtPmNoaWxkKDApLT50eXBlKCkgPT0gRG91YmxlLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAg
ICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gSW50MzIsICgiQXQgIiwgKnZhbHVl
KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZsb2F0VG9Eb3Vi
bGU6CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMSwg
KCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQo
MCktPnR5cGUoKSA9PSBGbG9hdCwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBW
QUxJREFURSh2YWx1ZS0+dHlwZSgpID09IERvdWJsZSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRG91YmxlVG9GbG9hdDoKKyAgICAg
ICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAxLCAoIkF0ICIsICp2
YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgp
ID09IERvdWJsZSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSh2
YWx1ZS0+dHlwZSgpID09IEZsb2F0LCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBFcXVhbDoKICAgICAgICAgICAgIGNhc2UgTm90RXF1
YWw6CiAgICAgICAgICAgICBjYXNlIExlc3NUaGFuOgpAQCAtMjUyLDEyICsyNjcsNiBAQCBwdWJs
aWM6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBJbnQzMiwgKCJB
dCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICB2YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVl
KTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgTG9hZEZsb2F0Ogot
ICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09IDEsICgiQXQg
IiwgKnZhbHVlKSk7Ci0gICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDApLT50
eXBlKCkgPT0gcG9pbnRlclR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKLSAgICAgICAgICAgICAg
ICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IERvdWJsZSwgKCJBdCAiLCAqdmFsdWUpKTsKLSAg
ICAgICAgICAgICAgICB2YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVlKTsKLSAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIGNhc2UgTG9hZDoKICAgICAgICAgICAgICAgICBWQUxJREFU
RSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAxLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAg
ICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCks
ICgiQXQgIiwgKnZhbHVlKSk7CkBAIC0yNzIsMTMgKzI4MSw2IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IFZvaWQsICgiQXQgIiwgKnZhbHVlKSk7
CiAgICAgICAgICAgICAgICAgdmFsaWRhdGVTdGFja0FjY2Vzcyh2YWx1ZSk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFN0b3JlRmxvYXQ6Ci0gICAgICAgICAgICAg
ICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMiwgKCJBdCAiLCAqdmFsdWUpKTsK
LSAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSA9PSBEb3Vi
bGUsICgiQXQgIiwgKnZhbHVlKSk7Ci0gICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNo
aWxkKDEpLT50eXBlKCkgPT0gcG9pbnRlclR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKLSAgICAg
ICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IFZvaWQsICgiQXQgIiwgKnZhbHVl
KSk7Ci0gICAgICAgICAgICAgICAgdmFsaWRhdGVTdGFja0FjY2Vzcyh2YWx1ZSk7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFN0b3JlOgogICAgICAgICAgICAgICAg
IFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09IDIsICgiQXQgIiwgKnZhbHVlKSk7CiAg
ICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDEpLT50eXBlKCkgPT0gcG9pbnRl
clR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNw
cAppbmRleCA3NjY5M2Q2MjgyOTAxNWUzNzMxOTU3NGQ3NTA0NGMyZTE4YjA2OWZmLi5jMDQyNzY3
OTc3NDNiNmEyNjJmOTlkOTBiM2I3NWZhNGJjZDI3YmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzVmFsdWUuY3BwCkBAIC0xOTksNiArMTk5LDIxIEBAIFZhbHVlKiBWYWx1ZTo6Yml0d2lzZUNh
c3RDb25zdGFudChQcm9jZWR1cmUmKSBjb25zdAogICAgIHJldHVybiBudWxscHRyOwogfQogCitW
YWx1ZSogVmFsdWU6OmRvdWJsZVRvRmxvYXRDb25zdGFudChQcm9jZWR1cmUmKSBjb25zdAorewor
ICAgIHJldHVybiBudWxscHRyOworfQorCitWYWx1ZSogVmFsdWU6OmZsb2F0VG9Eb3VibGVDb25z
dGFudChQcm9jZWR1cmUmKSBjb25zdAoreworICAgIHJldHVybiBudWxscHRyOworfQorCitWYWx1
ZSogVmFsdWU6OnNxcnRDb25zdGFudChQcm9jZWR1cmUmKSBjb25zdAoreworICAgIHJldHVybiBu
dWxscHRyOworfQorCiBUcmlTdGF0ZSBWYWx1ZTo6ZXF1YWxDb25zdGFudChjb25zdCBWYWx1ZSop
IGNvbnN0CiB7CiAgICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7CkBAIC0yOTgsNiArMzEzLDggQEAg
VHJpU3RhdGUgVmFsdWU6OmFzVHJpU3RhdGUoKSBjb25zdAogICAgIGNhc2UgQ29uc3REb3VibGU6
CiAgICAgICAgIC8vIFVzZSAiIT0gMCIgdG8gcmVhbGx5IGVtcGhhc2l6ZSB3aGF0IHRoaXMgbWVh
biB3aXRoIHJlc3BlY3QgdG8gTmFOIGFuZCBzdWNoLgogICAgICAgICByZXR1cm4gdHJpU3RhdGUo
YXNEb3VibGUoKSAhPSAwKTsKKyAgICBjYXNlIENvbnN0RmxvYXQ6CisgICAgICAgIHJldHVybiB0
cmlTdGF0ZShhc0Zsb2F0KCkgIT0gMC4pOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBN
aXhlZFRyaVN0YXRlOwogICAgIH0KQEAgLTMxMiw2ICszMjksNyBAQCBFZmZlY3RzIFZhbHVlOjpl
ZmZlY3RzKCkgY29uc3QKICAgICBjYXNlIENvbnN0MzI6CiAgICAgY2FzZSBDb25zdDY0OgogICAg
IGNhc2UgQ29uc3REb3VibGU6CisgICAgY2FzZSBDb25zdEZsb2F0OgogICAgIGNhc2UgU3RhY2tT
bG90OgogICAgIGNhc2UgQXJndW1lbnRSZWc6CiAgICAgY2FzZSBGcmFtZVBvaW50ZXI6CkBAIC0z
MzQsOSArMzUyLDEwIEBAIEVmZmVjdHMgVmFsdWU6OmVmZmVjdHMoKSBjb25zdAogICAgIGNhc2Ug
U0V4dDMyOgogICAgIGNhc2UgWkV4dDMyOgogICAgIGNhc2UgVHJ1bmM6Ci0gICAgY2FzZSBGUm91
bmQ6CiAgICAgY2FzZSBJVG9EOgogICAgIGNhc2UgRFRvSTMyOgorICAgIGNhc2UgRmxvYXRUb0Rv
dWJsZToKKyAgICBjYXNlIERvdWJsZVRvRmxvYXQ6CiAgICAgY2FzZSBFcXVhbDoKICAgICBjYXNl
IE5vdEVxdWFsOgogICAgIGNhc2UgTGVzc1RoYW46CkBAIC0zNTYsMTQgKzM3NSwxMiBAQCBFZmZl
Y3RzIFZhbHVlOjplZmZlY3RzKCkgY29uc3QKICAgICBjYXNlIExvYWQ4UzoKICAgICBjYXNlIExv
YWQxNlo6CiAgICAgY2FzZSBMb2FkMTZTOgotICAgIGNhc2UgTG9hZEZsb2F0OgogICAgIGNhc2Ug
TG9hZDoKICAgICAgICAgcmVzdWx0LnJlYWRzID0gYXM8TWVtb3J5VmFsdWU+KCktPnJhbmdlKCk7
CiAgICAgICAgIHJlc3VsdC5jb250cm9sRGVwZW5kZW50ID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBTdG9yZTg6CiAgICAgY2FzZSBTdG9yZTE2OgotICAgIGNhc2UgU3RvcmVGbG9h
dDoKICAgICBjYXNlIFN0b3JlOgogICAgICAgICByZXN1bHQud3JpdGVzID0gYXM8TWVtb3J5VmFs
dWU+KCktPnJhbmdlKCk7CiAgICAgICAgIHJlc3VsdC5jb250cm9sRGVwZW5kZW50ID0gdHJ1ZTsK
QEAgLTQxMCw5ICs0MjcsMTAgQEAgVmFsdWVLZXkgVmFsdWU6OmtleSgpIGNvbnN0CiAgICAgY2Fz
ZSBaRXh0MzI6CiAgICAgY2FzZSBDbHo6CiAgICAgY2FzZSBUcnVuYzoKLSAgICBjYXNlIEZSb3Vu
ZDoKICAgICBjYXNlIElUb0Q6CiAgICAgY2FzZSBEVG9JMzI6CisgICAgY2FzZSBGbG9hdFRvRG91
YmxlOgorICAgIGNhc2UgRG91YmxlVG9GbG9hdDoKICAgICBjYXNlIENoZWNrOgogICAgICAgICBy
ZXR1cm4gVmFsdWVLZXkob3Bjb2RlKCksIHR5cGUoKSwgY2hpbGQoMCkpOwogICAgIGNhc2UgQWRk
OgpAQCAtNDQ3LDYgKzQ2NSw4IEBAIFZhbHVlS2V5IFZhbHVlOjprZXkoKSBjb25zdAogICAgICAg
ICByZXR1cm4gVmFsdWVLZXkoQ29uc3Q2NCwgdHlwZSgpLCBhc0ludDY0KCkpOwogICAgIGNhc2Ug
Q29uc3REb3VibGU6CiAgICAgICAgIHJldHVybiBWYWx1ZUtleShDb25zdERvdWJsZSwgdHlwZSgp
LCBhc0RvdWJsZSgpKTsKKyAgICBjYXNlIENvbnN0RmxvYXQ6CisgICAgICAgIHJldHVybiBWYWx1
ZUtleShDb25zdEZsb2F0LCB0eXBlKCksIGFzRmxvYXQoKSk7CiAgICAgY2FzZSBBcmd1bWVudFJl
ZzoKICAgICAgICAgcmV0dXJuIFZhbHVlS2V5KAogICAgICAgICAgICAgQXJndW1lbnRSZWcsIHR5
cGUoKSwKQEAgLTQ3Nyw2ICs0OTcsNyBAQCB2b2lkIFZhbHVlOjpjaGVja09wY29kZShPcGNvZGUg
b3Bjb2RlKQogICAgIEFTU0VSVCghQ29uc3QzMlZhbHVlOjphY2NlcHRzKG9wY29kZSkpOwogICAg
IEFTU0VSVCghQ29uc3Q2NFZhbHVlOjphY2NlcHRzKG9wY29kZSkpOwogICAgIEFTU0VSVCghQ29u
c3REb3VibGVWYWx1ZTo6YWNjZXB0cyhvcGNvZGUpKTsKKyAgICBBU1NFUlQoIUNvbnN0RmxvYXRW
YWx1ZTo6YWNjZXB0cyhvcGNvZGUpKTsKICAgICBBU1NFUlQoIUNvbnRyb2xWYWx1ZTo6YWNjZXB0
cyhvcGNvZGUpKTsKICAgICBBU1NFUlQoIU1lbW9yeVZhbHVlOjphY2NlcHRzKG9wY29kZSkpOwog
ICAgIEFTU0VSVCghUGF0Y2hwb2ludFZhbHVlOjphY2NlcHRzKG9wY29kZSkpOwpAQCAtNTI3LDE1
ICs1NDgsMjQgQEAgVHlwZSBWYWx1ZTo6dHlwZUZvcihPcGNvZGUgb3Bjb2RlLCBWYWx1ZSogZmly
c3RDaGlsZCwgVmFsdWUqIHNlY29uZENoaWxkKQogICAgIGNhc2UgU0V4dDMyOgogICAgIGNhc2Ug
WkV4dDMyOgogICAgICAgICByZXR1cm4gSW50NjQ7Ci0gICAgY2FzZSBGUm91bmQ6CisgICAgY2Fz
ZSBGbG9hdFRvRG91YmxlOgogICAgIGNhc2UgSVRvRDoKICAgICAgICAgcmV0dXJuIERvdWJsZTsK
KyAgICBjYXNlIERvdWJsZVRvRmxvYXQ6CisgICAgICAgIHJldHVybiBGbG9hdDsKICAgICBjYXNl
IEJpdHdpc2VDYXN0OgotICAgICAgICBpZiAoZmlyc3RDaGlsZC0+dHlwZSgpID09IEludDY0KQor
ICAgICAgICBzd2l0Y2ggKGZpcnN0Q2hpbGQtPnR5cGUoKSkgeworICAgICAgICBjYXNlIEludDY0
OgogICAgICAgICAgICAgcmV0dXJuIERvdWJsZTsKLSAgICAgICAgaWYgKGZpcnN0Q2hpbGQtPnR5
cGUoKSA9PSBEb3VibGUpCisgICAgICAgIGNhc2UgRG91YmxlOgogICAgICAgICAgICAgcmV0dXJu
IEludDY0OwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgY2FzZSBJbnQz
MjoKKyAgICAgICAgICAgIHJldHVybiBGbG9hdDsKKyAgICAgICAgY2FzZSBGbG9hdDoKKyAgICAg
ICAgICAgIHJldHVybiBJbnQzMjsKKyAgICAgICAgY2FzZSBWb2lkOgorICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIFZvaWQ7CiAgICAg
Y2FzZSBOb3A6CiAgICAgICAgIHJldHVybiBWb2lkOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVl
LmgKaW5kZXggYTUyZThhMzIzNjBhYjVmZjAyZjIxZDMyOWRiOTcxMDZkOGU3YTJjYy4uOTFlNDlk
MWJkOTYzOWVjMmQ4YmM2ZmUwYmU1NGJlM2FlODdhNWYwOCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNWYWx1ZS5oCkBAIC03MSw4ICs3MSw4IEBAIHB1YmxpYzoKIAogICAgIHVuc2lnbmVkIG51bUNo
aWxkcmVuKCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbi5zaXplKCk7IH0KIAotICAgIC8vIFRo
aXMgY29tcHV0ZXMgdGhlIHR5cGUgdXNpbmcgdGhlIG9wY29kZS4KICAgICBUeXBlIHR5cGUoKSBj
b25zdCB7IHJldHVybiBtX3R5cGU7IH0KKyAgICB2b2lkIHNldFR5cGUoVHlwZSB0eXBlKSB7IG1f
dHlwZSA9IHR5cGU7IH0KIAogICAgIC8vIFRoaXMgaXMgdXNlZnVsIHdoZW4gbG93ZXJpbmcuIE5v
dGUgdGhhdCB0aGlzIGlzIG9ubHkgdmFsaWQgZm9yIG5vbi12b2lkIHZhbHVlcy4KICAgICBBaXI6
OkFyZzo6VHlwZSBhaXJUeXBlKCkgY29uc3QgeyByZXR1cm4gQWlyOjpBcmc6OnR5cGVGb3JCM1R5
cGUodHlwZSgpKTsgfQpAQCAtMTI4LDcgKzEyOCwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBW
YWx1ZSogc1NockNvbnN0YW50KFByb2NlZHVyZSYsIGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3Q7
CiAgICAgdmlydHVhbCBWYWx1ZSogelNockNvbnN0YW50KFByb2NlZHVyZSYsIGNvbnN0IFZhbHVl
KiBvdGhlcikgY29uc3Q7CiAgICAgdmlydHVhbCBWYWx1ZSogYml0d2lzZUNhc3RDb25zdGFudChQ
cm9jZWR1cmUmKSBjb25zdDsKLSAgICAKKyAgICB2aXJ0dWFsIFZhbHVlKiBkb3VibGVUb0Zsb2F0
Q29uc3RhbnQoUHJvY2VkdXJlJikgY29uc3Q7CisgICAgdmlydHVhbCBWYWx1ZSogZmxvYXRUb0Rv
dWJsZUNvbnN0YW50KFByb2NlZHVyZSYpIGNvbnN0OworICAgIHZpcnR1YWwgVmFsdWUqIHNxcnRD
b25zdGFudChQcm9jZWR1cmUmKSBjb25zdDsKKwogICAgIHZpcnR1YWwgVHJpU3RhdGUgZXF1YWxD
b25zdGFudChjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0OwogICAgIHZpcnR1YWwgVHJpU3RhdGUg
bm90RXF1YWxDb25zdGFudChjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0OwogICAgIHZpcnR1YWwg
VHJpU3RhdGUgbGVzc1RoYW5Db25zdGFudChjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0OwpAQCAt
MTY2LDYgKzE2OSw5IEBAIHB1YmxpYzoKICAgICBkb3VibGUgYXNEb3VibGUoKSBjb25zdDsKICAg
ICBib29sIGlzRXF1YWxUb0RvdWJsZShkb3VibGUpIGNvbnN0OyAvLyBXZSBzYXkgImlzRXF1YWxU
b0RvdWJsZSIgYmVjYXVzZSAiaXNEb3VibGUiIHdvdWxkIGJlIGEgYml0IGVxdWFsaXR5LgogCisg
ICAgYm9vbCBoYXNGbG9hdCgpIGNvbnN0OworICAgIGZsb2F0IGFzRmxvYXQoKSBjb25zdDsKKwog
ICAgIGJvb2wgaGFzTnVtYmVyKCkgY29uc3Q7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9v
bCByZXByZXNlbnRhYmxlQXMoKSBjb25zdDsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGFz
TnVtYmVyKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNW
YWx1ZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlSW5saW5lcy5o
CmluZGV4IDM0NDE0ZjJiMmIxYmQ3MTY1ZGUxNTkwNzM0ZDZjMWYxZWVlZDlhOWUuLjBlY2JlYjE0
ZDFhYmMxYTAxNmJkOWVjYjVkMDg1Njc4MmRmMGU0ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1ZhbHVlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1ZhbHVlSW5saW5lcy5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQjNDb25z
dDMyVmFsdWUuaCIKICNpbmNsdWRlICJCM0NvbnN0NjRWYWx1ZS5oIgogI2luY2x1ZGUgIkIzQ29u
c3REb3VibGVWYWx1ZS5oIgorI2luY2x1ZGUgIkIzQ29uc3RGbG9hdFZhbHVlLmgiCiAjaW5jbHVk
ZSAiQjNQYXRjaHBvaW50VmFsdWUuaCIKICNpbmNsdWRlICJCM1Byb2NlZHVyZS5oIgogI2luY2x1
ZGUgIkIzVmFsdWUuaCIKQEAgLTU3LDYgKzU4LDcgQEAgaW5saW5lIGJvb2wgVmFsdWU6OmlzQ29u
c3RhbnQoKSBjb25zdAogICAgIHN3aXRjaCAob3Bjb2RlKCkpIHsKICAgICBjYXNlIENvbnN0MzI6
CiAgICAgY2FzZSBDb25zdDY0OgorICAgIGNhc2UgQ29uc3RGbG9hdDoKICAgICBjYXNlIENvbnN0
RG91YmxlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgpAQCAtMTQ4LDkgKzE1
MCwxOSBAQCBpbmxpbmUgYm9vbCBWYWx1ZTo6aXNFcXVhbFRvRG91YmxlKGRvdWJsZSB2YWx1ZSkg
Y29uc3QKICAgICByZXR1cm4gaGFzRG91YmxlKCkgJiYgYXNEb3VibGUoKSA9PSB2YWx1ZTsKIH0K
IAoraW5saW5lIGJvb2wgVmFsdWU6Omhhc0Zsb2F0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gISFh
czxDb25zdEZsb2F0VmFsdWU+KCk7Cit9CisKK2lubGluZSBmbG9hdCBWYWx1ZTo6YXNGbG9hdCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGFzPENvbnN0RmxvYXRWYWx1ZT4oKS0+dmFsdWUoKTsKK30K
KwogaW5saW5lIGJvb2wgVmFsdWU6Omhhc051bWJlcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGhh
c0ludCgpIHx8IGhhc0RvdWJsZSgpOworICAgIHJldHVybiBoYXNJbnQoKSB8fCBoYXNEb3VibGUo
KSB8fCBoYXNGbG9hdCgpOwogfQogCiBpbmxpbmUgYm9vbCBWYWx1ZTo6aXNOZWdhdGl2ZVplcm8o
KSBjb25zdApAQCAtMTU5LDYgKzE3MSwxMCBAQCBpbmxpbmUgYm9vbCBWYWx1ZTo6aXNOZWdhdGl2
ZVplcm8oKSBjb25zdAogICAgICAgICBkb3VibGUgdmFsdWUgPSBhc0RvdWJsZSgpOwogICAgICAg
ICByZXR1cm4gIXZhbHVlICYmIHN0ZDo6c2lnbmJpdCh2YWx1ZSk7CiAgICAgfQorICAgIGlmICho
YXNGbG9hdCgpKSB7CisgICAgICAgIGZsb2F0IHZhbHVlID0gYXNGbG9hdCgpOworICAgICAgICBy
ZXR1cm4gIXZhbHVlICYmIHN0ZDo6c2lnbmJpdCh2YWx1ZSk7CisgICAgfQogICAgIHJldHVybiBm
YWxzZTsKIH0KIApAQCAtMTcyLDYgKzE4OCw4IEBAIGlubGluZSBib29sIFZhbHVlOjpyZXByZXNl
bnRhYmxlQXMoKSBjb25zdAogICAgICAgICByZXR1cm4gaXNSZXByZXNlbnRhYmxlQXM8VD4oYXNJ
bnQ2NCgpKTsKICAgICBjYXNlIENvbnN0RG91YmxlOgogICAgICAgICByZXR1cm4gaXNSZXByZXNl
bnRhYmxlQXM8VD4oYXNEb3VibGUoKSk7CisgICAgY2FzZSBDb25zdEZsb2F0OgorICAgICAgICBy
ZXR1cm4gaXNSZXByZXNlbnRhYmxlQXM8VD4oYXNGbG9hdCgpKTsKICAgICBkZWZhdWx0OgogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMTg3LDYgKzIwNSw4IEBAIGlubGluZSBUIFZh
bHVlOjphc051bWJlcigpIGNvbnN0CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUPihhc0lu
dDY0KCkpOwogICAgIGNhc2UgQ29uc3REb3VibGU6CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxUPihhc0RvdWJsZSgpKTsKKyAgICBjYXNlIENvbnN0RmxvYXQ6CisgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxUPihhc0Zsb2F0KCkpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBU
KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVL
ZXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVLZXkuY3BwCmluZGV4IDNj
ODA1ODYzNTFmMmM0MGU1NzdjNmI4ZDZlNDcwNWQyNTRjY2IwYWYuLmQ0YmIzNmIzYThkMTcwZGU3
Zjk4MGU2ZTRiZTBlNGU0NWRhMWVjODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1ZhbHVlS2V5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1
ZUtleS5jcHAKQEAgLTQ2LDE0ICs0NiwxNyBAQCBWYWx1ZSogVmFsdWVLZXk6Om1hdGVyaWFsaXpl
KFByb2NlZHVyZSYgcHJvYywgT3JpZ2luIG9yaWdpbikgY29uc3QKICAgICBjYXNlIEZyYW1lUG9p
bnRlcjoKICAgICAgICAgcmV0dXJuIHByb2MuYWRkPFZhbHVlPihvcGNvZGUoKSwgdHlwZSgpLCBv
cmlnaW4pOwogICAgIGNhc2UgSWRlbnRpdHk6CisgICAgY2FzZSBTcXJ0OgogICAgIGNhc2UgU0V4
dDg6CiAgICAgY2FzZSBTRXh0MTY6CiAgICAgY2FzZSBTRXh0MzI6CiAgICAgY2FzZSBaRXh0MzI6
CisgICAgY2FzZSBDbHo6CiAgICAgY2FzZSBUcnVuYzoKLSAgICBjYXNlIEZSb3VuZDoKICAgICBj
YXNlIElUb0Q6CiAgICAgY2FzZSBEVG9JMzI6CisgICAgY2FzZSBGbG9hdFRvRG91YmxlOgorICAg
IGNhc2UgRG91YmxlVG9GbG9hdDoKICAgICBjYXNlIENoZWNrOgogICAgICAgICByZXR1cm4gcHJv
Yy5hZGQ8VmFsdWU+KG9wY29kZSgpLCB0eXBlKCksIG9yaWdpbiwgY2hpbGQocHJvYywgMCkpOwog
ICAgIGNhc2UgQWRkOgpAQCAtODUsNiArODgsOCBAQCBWYWx1ZSogVmFsdWVLZXk6Om1hdGVyaWFs
aXplKFByb2NlZHVyZSYgcHJvYywgT3JpZ2luIG9yaWdpbikgY29uc3QKICAgICAgICAgcmV0dXJu
IHByb2MuYWRkPENvbnN0NjRWYWx1ZT4ob3JpZ2luLCB2YWx1ZSgpKTsKICAgICBjYXNlIENvbnN0
RG91YmxlOgogICAgICAgICByZXR1cm4gcHJvYy5hZGQ8Q29uc3REb3VibGVWYWx1ZT4ob3JpZ2lu
LCBkb3VibGVWYWx1ZSgpKTsKKyAgICBjYXNlIENvbnN0RmxvYXQ6CisgICAgICAgIHJldHVybiBw
cm9jLmFkZDxDb25zdEZsb2F0VmFsdWU+KG9yaWdpbiwgZmxvYXRWYWx1ZSgpKTsKICAgICBjYXNl
IEFyZ3VtZW50UmVnOgogICAgICAgICByZXR1cm4gcHJvYy5hZGQ8QXJndW1lbnRSZWdWYWx1ZT4o
b3JpZ2luLCBSZWc6OmZyb21JbmRleChzdGF0aWNfY2FzdDx1bnNpZ25lZD4odmFsdWUoKSkpKTsK
ICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFs
dWVLZXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlS2V5LmgKaW5kZXggMGFh
MTYwNjJiYWEwZGFjMDZiN2QyZGE1NDMwYjNkZmRmYjZlOGQ2YS4uNjZkY2VhMDNmMTY4YTFhNDdj
OTBlNzY2ZjM3NDljMzM3ZDg5MzJiZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzVmFsdWVLZXkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZUtl
eS5oCkBAIC03OCwxMiArNzgsMjAgQEAgcHVibGljOgogICAgICAgICB1LmRvdWJsZVZhbHVlID0g
dmFsdWU7CiAgICAgfQogCisgICAgVmFsdWVLZXkoT3Bjb2RlIG9wY29kZSwgVHlwZSB0eXBlLCBm
bG9hdCB2YWx1ZSkKKyAgICAgICAgOiBtX29wY29kZShvcGNvZGUpCisgICAgICAgICwgbV90eXBl
KHR5cGUpCisgICAgeworICAgICAgICB1LmZsb2F0VmFsdWUgPSB2YWx1ZTsKKyAgICB9CisKICAg
ICBPcGNvZGUgb3Bjb2RlKCkgY29uc3QgeyByZXR1cm4gbV9vcGNvZGU7IH0KICAgICBUeXBlIHR5
cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KICAgICB1bnNpZ25lZCBjaGlsZEluZGV4KHVu
c2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiB1LmluZGljZXNbaW5kZXhdOyB9CiAgICAgVmFs
dWUqIGNoaWxkKFByb2NlZHVyZSYsIHVuc2lnbmVkIGluZGV4KSBjb25zdDsKICAgICBpbnQ2NF90
IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gdS52YWx1ZTsgfQogICAgIGRvdWJsZSBkb3VibGVWYWx1
ZSgpIGNvbnN0IHsgcmV0dXJuIHUuZG91YmxlVmFsdWU7IH0KKyAgICBkb3VibGUgZmxvYXRWYWx1
ZSgpIGNvbnN0IHsgcmV0dXJuIHUuZmxvYXRWYWx1ZTsgfQogCiAgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFZhbHVlS2V5JiBvdGhlcikgY29uc3QKICAgICB7CkBAIC0xNDIsNiArMTUwLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgdW5zaWduZWQgaW5kaWNlc1szXTsKICAgICAgICAgaW50NjRfdCB2
YWx1ZTsKICAgICAgICAgZG91YmxlIGRvdWJsZVZhbHVlOworICAgICAgICBmbG9hdCBmbG9hdFZh
bHVlOwogCiAgICAgICAgIFUoKQogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpckFyZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJBcmcuaAppbmRleCBiM2ZlNWVjOGQ2YTJhYmRkNjFjOGVkOGZhMjAxNWRmMWUyMGI5ZTkwLi4x
NDY1Njc1YTgzZDA0MjZmNzYxNDM0OGE4YzY0OWNkYzJhZmUwZDA4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyQXJnLmgKQEAgLTIxMSw2ICsyMTEsNyBAQCBwdWJsaWM6CiAgICAgICAg
IGNhc2UgSW50MzI6CiAgICAgICAgIGNhc2UgSW50NjQ6CiAgICAgICAgICAgICByZXR1cm4gR1A7
CisgICAgICAgIGNhc2UgRmxvYXQ6CiAgICAgICAgIGNhc2UgRG91YmxlOgogICAgICAgICAgICAg
cmV0dXJuIEZQOwogICAgICAgICB9CkBAIC0yMjUsNiArMjI2LDcgQEAgcHVibGljOgogICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm4gV2lkdGg4Owog
ICAgICAgICBjYXNlIEludDMyOgorICAgICAgICBjYXNlIEZsb2F0OgogICAgICAgICAgICAgcmV0
dXJuIFdpZHRoMzI7CiAgICAgICAgIGNhc2UgSW50NjQ6CiAgICAgICAgIGNhc2UgRG91YmxlOgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJGaXhQYXJ0aWFsUmVn
aXN0ZXJTdGFsbHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJGaXhQYXJ0
aWFsUmVnaXN0ZXJTdGFsbHMuY3BwCmluZGV4IDgxY2I0ZWNmODMyOGJlNzY1OGU1NjVlNTQ5NjA5
OGUwMTY4OTk4ZjMuLjBlNzJjNTdlNzc3M2NjNzc0ZmRhOThiNzE3MjljN2M4OTJkNTYxY2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRml4UGFydGlhbFJlZ2lz
dGVyU3RhbGxzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckZpeFBh
cnRpYWxSZWdpc3RlclN0YWxscy5jcHAKQEAgLTQ2LDYgKzQ2LDggQEAgbmFtZXNwYWNlIHsKIGJv
b2wgaGFzUGFydGlhbFhtbVJlZ1VwZGF0ZShjb25zdCBJbnN0JiBpbnN0KQogewogICAgIHN3aXRj
aCAoaW5zdC5vcGNvZGUpIHsKKyAgICBjYXNlIENvbnZlcnREb3VibGVUb0Zsb2F0OgorICAgIGNh
c2UgQ29udmVydEZsb2F0VG9Eb3VibGU6CiAgICAgY2FzZSBDb252ZXJ0SW50MzJUb0RvdWJsZToK
ICAgICBjYXNlIENvbnZlcnRJbnQ2NFRvRG91YmxlOgogICAgIGNhc2UgU3FydERvdWJsZToKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCmluZGV4IDY3
MjZhMzFmZGJiNzExNjBjNzg2MzI0YmJkNTAzYjZhY2RkMzhjMzguLjc4MTVhNTliYTE2NDE5NTZm
ZjRhNTJiM2ZkMWYyMzdjMjgzZGZhYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJPcGNvZGUub3Bjb2RlcwpAQCAtODIsNiArODIsMTAgQEAgQWRkRG91YmxlIFU6Riwg
VUQ6RgogICAgIFRtcCwgVG1wCiAgICAgQWRkciwgVG1wCiAKK0FkZEZsb2F0IFU6RiwgVUQ6Rgor
ICAgIFRtcCwgVG1wCisgICAgQWRkciwgVG1wCisKIFN1YjMyIFU6RywgVUQ6RwogICAgIFRtcCwg
VG1wCiAgICAgSW1tLCBBZGRyCkBAIC05Nyw2ICsxMDEsMTAgQEAgU3ViRG91YmxlIFU6RiwgVUQ6
RgogICAgIFRtcCwgVG1wCiAgICAgQWRkciwgVG1wCiAKK1N1YkZsb2F0IFU6RiwgVUQ6RgorICAg
IFRtcCwgVG1wCisgICAgQWRkciwgVG1wCisKIE5lZzMyIFVEOkcKICAgICBUbXAKICAgICBBZGRy
CkBAIC0xMTgsMTAgKzEyNiwxOCBAQCBNdWxEb3VibGUgVTpGLCBVRDpGCiAgICAgVG1wLCBUbXAK
ICAgICBBZGRyLCBUbXAKIAorTXVsRmxvYXQgVTpGLCBVRDpGCisgICAgVG1wLCBUbXAKKyAgICBB
ZGRyLCBUbXAKKwogRGl2RG91YmxlIFU6RiwgVUQ6RgogICAgIFRtcCwgVG1wCiAgICAgQWRkciwg
VG1wCiAKK0RpdkZsb2F0IFU6RiwgVUQ6RgorICAgIFRtcCwgVG1wCisgICAgQWRkciwgVG1wCisK
IFg4NkNvbnZlcnRUb0RvdWJsZVdvcmQzMiBVOkcsIEQ6RwogICAgIFRtcCosIFRtcCoKIApAQCAt
MjA3LDYgKzIyMywxMCBAQCBTcXJ0RG91YmxlIFU6RiwgVUQ6RgogICAgIFRtcCwgVG1wCiAgICAg
QWRkciwgVG1wCiAKK1NxcnRGbG9hdCBVOkYsIFVEOkYKKyAgICBUbXAsIFRtcAorICAgIEFkZHIs
IFRtcAorCiBDb252ZXJ0SW50MzJUb0RvdWJsZSBVOkcsIEQ6RgogICAgIFRtcCwgVG1wCiAgICAg
QWRkciwgVG1wCkBAIC0yMjIsNiArMjQyLDE0IEBAIENvdW50TGVhZGluZ1plcm9zNjQgVTpHLCBE
OkcKICAgICBUbXAsIFRtcAogICAgIEFkZHIsIFRtcAogCitDb252ZXJ0RG91YmxlVG9GbG9hdCBV
OkYsIEQ6RgorICAgIFRtcCwgVG1wCisgICAgQWRkciwgVG1wCisKK0NvbnZlcnRGbG9hdFRvRG91
YmxlIFU6RiwgRDpGCisgICAgVG1wLCBUbXAKKyAgICBBZGRyLCBUbXAKKwogIyBOb3RlIHRoYXQg
TW92ZSBvcGVyYXRlcyBvdmVyIHRoZSBmdWxsIHJlZ2lzdGVyIHNpemUsIHdoaWNoIGlzIGVpdGhl
ciAzMi1iaXQgb3IgNjQtYml0IGRlcGVuZGluZyBvbgogIyB0aGUgcGxhdGZvcm0uIEknbSBub3Qg
ZW50aXJlbHkgc3VyZSB0aGF0IHRoaXMgaXMgYSBnb29kIHRoaW5nOyBpdCBtaWdodCBiZSBiZXR0
ZXIgdG8ganVzdCBoYXZlIGEKICMgTW92ZTY0IGluc3RydWN0aW9uLiBPVE9ILCBvdXIgTWFjcm9B
c3NlbWJsZXJzIGFscmVhZHkgaGF2ZSB0aGlzIG5vdGlvbiBvZiAibW92ZSgpIiB0aGF0IGJhc2lj
YWxseQpAQCAtMjQ4LDYgKzI3NiwxMyBAQCBNb3ZlMzIgVTpHLCBEOkcKIFNpZ25FeHRlbmQzMlRv
UHRyIFU6RywgRDpHCiAgICAgVG1wLCBUbXAKIAorTW92ZUZsb2F0IFU6RiwgRDpGCisgICAgVG1w
LCBUbXAgYXMgbW92ZURvdWJsZQorICAgIEFkZHIsIFRtcCBhcyBsb2FkRmxvYXQKKyAgICBJbmRl
eCwgVG1wIGFzIGxvYWRGbG9hdAorICAgIFRtcCwgQWRkciBhcyBzdG9yZUZsb2F0CisgICAgVG1w
LCBJbmRleCBhcyBzdG9yZUZsb2F0CisKIE1vdmVEb3VibGUgVTpGLCBEOkYKICAgICBUbXAsIFRt
cAogICAgIEFkZHIsIFRtcCBhcyBsb2FkRG91YmxlCkBAIC0yNjIsMTAgKzI5NywxOCBAQCBNb3Zl
NjRUb0RvdWJsZSBVOkcsIEQ6RgogICAgIFRtcCwgVG1wCiAgICAgQWRkciwgVG1wIGFzIGxvYWRE
b3VibGUKIAorTW92ZUludDMyVG9QYWNrZWQgVTpHLCBEOkYKKyAgICBUbXAsIFRtcAorICAgIEFk
ZHIsIFRtcCBhcyBsb2FkRmxvYXQKKwogTW92ZURvdWJsZVRvNjQgVTpGLCBEOkcKICAgICBUbXAs
IFRtcAogICAgIEFkZHIsIFRtcCBhcyBsb2FkNjQKIAorTW92ZVBhY2tlZFRvSW50MzIgVTpGLCBE
OkcKKyAgICBUbXAsIFRtcAorICAgIEFkZHIsIFRtcCBhcyBsb2FkMzIKKwogTG9hZDggVTpHLCBE
OkcKICAgICBBZGRyLCBUbXAKICAgICBJbmRleCwgVG1wCkBAIC0zNDEsNiArMzg0LDkgQEAgQnJh
bmNoVGVzdDY0IFU6RywgVTpHLCBVOkcgL2JyYW5jaAogQnJhbmNoRG91YmxlIFU6RywgVTpGLCBV
OkYgL2JyYW5jaAogICAgIERvdWJsZUNvbmQsIFRtcCwgVG1wCiAKK0JyYW5jaEZsb2F0IFU6Rywg
VTpGLCBVOkYgL2JyYW5jaAorICAgIERvdWJsZUNvbmQsIFRtcCwgVG1wCisKIEJyYW5jaEFkZDMy
IFU6RywgVTpHLCBVRDpHIC9icmFuY2gKICAgICBSZXNDb25kLCBUbXAsIFRtcAogICAgIFJlc0Nv
bmQsIEltbSwgVG1wCkBAIC0zOTYsNiArNDQyLDkgQEAgTW92ZUNvbmRpdGlvbmFsbHlUZXN0NjQg
VTpHLCBVOkcsIFU6RywgVTpHLCBVRDpHCiBNb3ZlQ29uZGl0aW9uYWxseURvdWJsZSBVOkcsIFU6
RiwgVTpGLCBVOkcsIFVEOkcKICAgICBEb3VibGVDb25kLCBUbXAsIFRtcCwgVG1wLCBUbXAKIAor
TW92ZUNvbmRpdGlvbmFsbHlGbG9hdCBVOkcsIFU6RiwgVTpGLCBVOkcsIFVEOkcKKyAgICBEb3Vi
bGVDb25kLCBUbXAsIFRtcCwgVG1wLCBUbXAKKwogTW92ZURvdWJsZUNvbmRpdGlvbmFsbHkzMiBV
OkcsIFU6RywgVTpHLCBVOkYsIFVEOkYKICAgICBSZWxDb25kLCBUbXAsIFRtcCwgVG1wLCBUbXAK
IApAQCAtNDEzLDYgKzQ2Miw5IEBAIE1vdmVEb3VibGVDb25kaXRpb25hbGx5VGVzdDY0IFU6Rywg
VTpHLCBVOkcsIFU6RiwgVUQ6RgogTW92ZURvdWJsZUNvbmRpdGlvbmFsbHlEb3VibGUgVTpHLCBV
OkYsIFU6RiwgVTpGLCBVRDpGCiAgICAgRG91YmxlQ29uZCwgVG1wLCBUbXAsIFRtcCwgVG1wCiAK
K01vdmVEb3VibGVDb25kaXRpb25hbGx5RmxvYXQgVTpHLCBVOkYsIFU6RiwgVTpGLCBVRDpGCisg
ICAgRG91YmxlQ29uZCwgVG1wLCBUbXAsIFRtcCwgVG1wCisKIEp1bXAgL2JyYW5jaAogCiBSZXQg
L3Rlcm1pbmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCmluZGV4IDQ5MGE0Mzk1YjVm
NWE0MmYxNzRlZDAxYjcyMDM3MmUwMTRkYThjYWQuLmRiMGYwNjJjNGNkOTQzZDliYjZjNTJkYjI2
YThkYTM3ZjQ3MDgyNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0
YjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCkBAIC0zMDYs
NiArMzA2LDE0MSBAQCB2b2lkIHRlc3RBZGRJbW1zRG91YmxlKGRvdWJsZSBhLCBkb3VibGUgYikK
ICAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYyksIGEgKyBi
KSk7CiB9CiAKK3ZvaWQgdGVzdEFkZEFyZ0Zsb2F0KGZsb2F0IGEpCit7CisgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1
ZSogYXJndW1lbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdp
bigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3Vt
ZW50MzIpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IEFkZCwgT3JpZ2luKCksIGZsb2F0VmFsdWUsIGZsb2F0VmFsdWUpOworICAgIFZhbHVlKiByZXN1
bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigp
LCByZXN1bHQpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVy
biwgT3JpZ2luKCksIHJlc3VsdDMyKTsKKworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGls
ZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkpLCBiaXR3aXNl
X2Nhc3Q8aW50MzJfdD4oYSArIGEpKSk7Cit9CisKK3ZvaWQgdGVzdEFkZEFyZ3NGbG9hdChmbG9h
dCBhLCBmbG9hdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MWludDMyID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKSk7CisgICAgVmFsdWUqIGFyZ3VtZW50MmludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7Cisg
ICAgVmFsdWUqIGZsb2F0VmFsdWUxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3
aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MWludDMyKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1
ZTIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwg
YXJndW1lbnQyaW50MzIpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIGZsb2F0VmFsdWUxLCBmbG9hdFZhbHVlMik7CisgICAg
VmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2Fz
dCwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4o
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0MzIpOworCisgICAgQ0hFQ0soaXNJZGVudGlj
YWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSks
IGJpdHdpc2VfY2FzdDxpbnQzMl90PihiKSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhICsgYikp
KTsKK30KKwordm9pZCB0ZXN0QWRkQXJnSW1tRmxvYXQoZmxvYXQgYSwgZmxvYXQgYikKK3sKKyAg
ICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OworICAgIFZhbHVlKiBhcmd1bWVudDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBU
cnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGZs
b2F0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmln
aW4oKSwgYXJndW1lbnQzMik7CisgICAgVmFsdWUqIGNvbnN0VmFsdWUgPSByb290LT5hcHBlbmRO
ZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYik7CisgICAgVmFsdWUqIHJlc3Vs
dCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgZmxvYXRWYWx1
ZSwgY29uc3RWYWx1ZSk7CisgICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgcm9vdC0+YXBw
ZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0MzIpOwor
CisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3
aXNlX2Nhc3Q8aW50MzJfdD4oYSkpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSArIGIpKSk7Cit9
CisKK3ZvaWQgdGVzdEFkZEltbUFyZ0Zsb2F0KGZsb2F0IGEsIGZsb2F0IGIpCit7CisgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAg
ICBWYWx1ZSogYXJndW1lbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMs
IE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBmbG9hdFZh
bHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCks
IGFyZ3VtZW50MzIpOworICAgIFZhbHVlKiBjb25zdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENv
bnN0RmxvYXRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpOworICAgIFZhbHVlKiByZXN1bHQgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIGNvbnN0VmFsdWUsIGZs
b2F0VmFsdWUpOworICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCByZXN1bHQpOworICAgIHJvb3QtPmFwcGVuZE5l
dzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKKworICAg
IENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9j
YXN0PGludDMyX3Q+KGIpKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEgKyBiKSkpOworfQorCit2
b2lkIHRlc3RBZGRJbW1zRmxvYXQoZmxvYXQgYSwgZmxvYXQgYikKK3sKKyAgICBQcm9jZWR1cmUg
cHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVl
KiBjb25zdFZhbHVlMSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdEZsb2F0VmFsdWU+KHByb2MsIE9y
aWdpbigpLCBhKTsKKyAgICBWYWx1ZSogY29uc3RWYWx1ZTIgPSByb290LT5hcHBlbmROZXc8Q29u
c3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYik7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgY29uc3RWYWx1ZTEsIGNv
bnN0VmFsdWUyKTsKKyAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgcmVzdWx0KTsKKyAgICByb290LT5hcHBlbmRO
ZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisKKyAg
ICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MpLCBiaXR3aXNl
X2Nhc3Q8aW50MzJfdD4oYSArIGIpKSk7Cit9CisKK3ZvaWQgdGVzdEFkZEFyZ0Zsb2F0V2l0aFVz
ZWxlc3NEb3VibGVDb252ZXJzaW9uKGZsb2F0IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7Cisg
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1l
bnRJbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAor
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50SW50
MzIpOworICAgIFZhbHVlKiBhc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
RmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGZsb2F0VmFsdWUpOworICAgIFZhbHVlKiByZXN1bHQg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIGFzRG91YmxlLCBh
c0RvdWJsZSk7CisgICAgVmFsdWUqIGZsb2F0UmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBEb3VibGVUb0Zsb2F0LCBPcmlnaW4oKSwgcmVzdWx0KTsKKyAgICBWYWx1ZSogcmVz
dWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4o
KSwgZmxvYXRSZXN1bHQpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2Ms
IFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNv
bXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpKSwgYml0
d2lzZV9jYXN0PGludDMyX3Q+KGEgKyBhKSkpOworfQorCit2b2lkIHRlc3RBZGRBcmdzRmxvYXRX
aXRoVXNlbGVzc0RvdWJsZUNvbnZlcnNpb24oZmxvYXQgYSwgZmxvYXQgYikKK3sKKyAgICBQcm9j
ZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAg
IFZhbHVlKiBhcmd1bWVudDFpbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1
bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBhcmd1
bWVudDJpbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigp
LAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlMSA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVu
dDFpbnQzMik7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MmludDMyKTsKKyAgICBWYWx1
ZSogYXNEb3VibGUxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9hdFRvRG91Ymxl
LCBPcmlnaW4oKSwgZmxvYXRWYWx1ZTEpOworICAgIFZhbHVlKiBhc0RvdWJsZTIgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVl
Mik7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRk
LCBPcmlnaW4oKSwgYXNEb3VibGUxLCBhc0RvdWJsZTIpOworICAgIFZhbHVlKiBmbG9hdFJlc3Vs
dCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwgT3JpZ2luKCks
IHJlc3VsdCk7CisgICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGZsb2F0UmVzdWx0KTsKKyAgICByb290LT5hcHBl
bmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisK
KyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdp
c2VfY2FzdDxpbnQzMl90PihhKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGIpKSwgYml0d2lzZV9j
YXN0PGludDMyX3Q+KGEgKyBiKSkpOworfQorCit2b2lkIHRlc3RBZGRBcmdzRmxvYXRXaXRoRWZm
ZWN0ZnVsRG91YmxlQ29udmVyc2lvbihmbG9hdCBhLCBmbG9hdCBiKQoreworICAgIFByb2NlZHVy
ZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFs
dWUqIGFyZ3VtZW50MWludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywg
T3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGFyZ3VtZW50
MmludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUxID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MWlu
dDMyKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1ZTIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQyaW50MzIpOworICAgIFZhbHVlKiBh
c0RvdWJsZTEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9y
aWdpbigpLCBmbG9hdFZhbHVlMSk7CisgICAgVmFsdWUqIGFzRG91YmxlMiA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGZsb2F0VmFsdWUyKTsK
KyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9y
aWdpbigpLCBhc0RvdWJsZTEsIGFzRG91YmxlMik7CisgICAgVmFsdWUqIGZsb2F0UmVzdWx0ID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zsb2F0LCBPcmlnaW4oKSwgcmVz
dWx0KTsKKyAgICBWYWx1ZSogZG91YmxlQWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyAgICBy
b290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIFN0b3JlLCBPcmlnaW4oKSwgcmVzdWx0
LCBkb3VibGVBZGRyZXNzKTsKKyAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgZmxvYXRSZXN1bHQpOworICAgIHJv
b3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3Vs
dDMyKTsKKworICAgIGRvdWJsZSBlZmZlY3QgPSAwOworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNv
bXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpLCBiaXR3
aXNlX2Nhc3Q8aW50MzJfdD4oYiksICZlZmZlY3QpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSAr
IGIpKSk7CisgICAgQ0hFQ0soaXNJZGVudGljYWwoZWZmZWN0LCBzdGF0aWNfY2FzdDxkb3VibGU+
KGEpICsgc3RhdGljX2Nhc3Q8ZG91YmxlPihiKSkpOworfQorCiB2b2lkIHRlc3RNdWxBcmcoaW50
IGEpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CkBAIC01MDksNiArNjQ0LDE0MSBAQCB2b2lkIHRl
c3RNdWxJbW1zRG91YmxlKGRvdWJsZSBhLCBkb3VibGUgYikKICAgICBDSEVDSyhpc0lkZW50aWNh
bChjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYyksIGEgKiBiKSk7CiB9CiAKK3ZvaWQgdGVzdE11
bEFyZ0Zsb2F0KGZsb2F0IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9j
ayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQzMiA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCkpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MzIpOworICAgIFZhbHVlKiBy
ZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE11bCwgT3JpZ2luKCksIGZsb2F0
VmFsdWUsIGZsb2F0VmFsdWUpOworICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCByZXN1bHQpOworICAgIHJvb3Qt
PmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMy
KTsKKworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9j
LCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSAqIGEp
KSk7Cit9CisKK3ZvaWQgdGVzdE11bEFyZ3NGbG9hdChmbG9hdCBhLCBmbG9hdCBiKQoreworICAg
IFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
CisgICAgVmFsdWUqIGFyZ3VtZW50MWludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUq
IGFyZ3VtZW50MmludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3Jp
Z2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUx
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFy
Z3VtZW50MWludDMyKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1ZTIgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQyaW50MzIpOworICAg
IFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE11bCwgT3JpZ2lu
KCksIGZsb2F0VmFsdWUxLCBmbG9hdFZhbHVlMik7CisgICAgVmFsdWUqIHJlc3VsdDMyID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7
CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwgcmVzdWx0MzIpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQz
Ml90Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSksIGJpdHdpc2VfY2FzdDxpbnQzMl90
PihiKSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhICogYikpKTsKK30KKwordm9pZCB0ZXN0TXVs
QXJnSW1tRmxvYXQoZmxvYXQgYSwgZmxvYXQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVu
dDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQzMik7Cisg
ICAgVmFsdWUqIGNvbnN0VmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgYik7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgZmxvYXRWYWx1ZSwgY29uc3RWYWx1ZSk7CisgICAg
VmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2Fz
dCwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4o
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0MzIpOworCisgICAgQ0hFQ0soaXNJZGVudGlj
YWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkp
LCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSAqIGIpKSk7Cit9CisKK3ZvaWQgdGVzdE11bEltbUFy
Z0Zsb2F0KGZsb2F0IGEsIGZsb2F0IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQzMiA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MzIpOworICAgIFZh
bHVlKiBjb25zdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RmxvYXRWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIGEpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIE11bCwgT3JpZ2luKCksIGNvbnN0VmFsdWUsIGZsb2F0VmFsdWUpOworICAgIFZhbHVl
KiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9y
aWdpbigpLCByZXN1bHQpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2Ms
IFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNv
bXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGIpKSwgYml0
d2lzZV9jYXN0PGludDMyX3Q+KGEgKiBiKSkpOworfQorCit2b2lkIHRlc3RNdWxJbW1zRmxvYXQo
ZmxvYXQgYSwgZmxvYXQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBjb25zdFZhbHVlMSA9IHJvb3Qt
PmFwcGVuZE5ldzxDb25zdEZsb2F0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKTsKKyAgICBWYWx1
ZSogY29uc3RWYWx1ZTIgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgYik7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgTXVsLCBPcmlnaW4oKSwgY29uc3RWYWx1ZTEsIGNvbnN0VmFsdWUyKTsKKyAgICBWYWx1
ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBP
cmlnaW4oKSwgcmVzdWx0KTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChj
b21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSAqIGIp
KSk7Cit9CisKK3ZvaWQgdGVzdE11bEFyZ0Zsb2F0V2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9u
KGZsb2F0IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnRJbnQzMiA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCkpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50SW50MzIpOworICAgIFZhbHVlKiBhc0Rv
dWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2lu
KCksIGZsb2F0VmFsdWUpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIE11bCwgT3JpZ2luKCksIGFzRG91YmxlLCBhc0RvdWJsZSk7CisgICAgVmFsdWUq
IGZsb2F0UmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zsb2F0
LCBPcmlnaW4oKSwgcmVzdWx0KTsKKyAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgZmxvYXRSZXN1bHQpOworICAg
IHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJl
c3VsdDMyKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4o
cHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEg
KiBhKSkpOworfQorCit2b2lkIHRlc3RNdWxBcmdzRmxvYXRXaXRoVXNlbGVzc0RvdWJsZUNvbnZl
cnNpb24oZmxvYXQgYSwgZmxvYXQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNp
Y0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudDFpbnQz
MiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAg
ICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBhcmd1bWVudDJpbnQzMiA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMSkpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlMSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDFpbnQzMik7CisgICAgVmFsdWUq
IGZsb2F0VmFsdWUyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwg
T3JpZ2luKCksIGFyZ3VtZW50MmludDMyKTsKKyAgICBWYWx1ZSogYXNEb3VibGUxID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9hdFRvRG91YmxlLCBPcmlnaW4oKSwgZmxvYXRWYWx1
ZTEpOworICAgIFZhbHVlKiBhc0RvdWJsZTIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlMik7CisgICAgVmFsdWUqIHJlc3Vs
dCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVsLCBPcmlnaW4oKSwgYXNEb3VibGUx
LCBhc0RvdWJsZTIpOworICAgIFZhbHVlKiBmbG9hdFJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgVmFsdWUq
IHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3Jp
Z2luKCksIGZsb2F0UmVzdWx0KTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisKKyAgICBDSEVDSyhpc0lkZW50aWNh
bChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSwg
Yml0d2lzZV9jYXN0PGludDMyX3Q+KGIpKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEgKiBiKSkp
OworfQorCit2b2lkIHRlc3RNdWxBcmdzRmxvYXRXaXRoRWZmZWN0ZnVsRG91YmxlQ29udmVyc2lv
bihmbG9hdCBhLCBmbG9hdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MWludDMyID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGFyZ3VtZW50MmludDMyID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIx
KSk7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MWludDMyKTsKKyAgICBWYWx1ZSogZmxv
YXRWYWx1ZTIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmln
aW4oKSwgYXJndW1lbnQyaW50MzIpOworICAgIFZhbHVlKiBhc0RvdWJsZTEgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlMSk7
CisgICAgVmFsdWUqIGFzRG91YmxlMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxv
YXRUb0RvdWJsZSwgT3JpZ2luKCksIGZsb2F0VmFsdWUyKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCBhc0RvdWJsZTEsIGFz
RG91YmxlMik7CisgICAgVmFsdWUqIGZsb2F0UmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBEb3VibGVUb0Zsb2F0LCBPcmlnaW4oKSwgcmVzdWx0KTsKKyAgICBWYWx1ZSogZG91
YmxlTXVscmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyAgICByb290LT5hcHBlbmROZXc8TWVtb3J5
VmFsdWU+KHByb2MsIFN0b3JlLCBPcmlnaW4oKSwgcmVzdWx0LCBkb3VibGVNdWxyZXNzKTsKKyAg
ICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VD
YXN0LCBPcmlnaW4oKSwgZmxvYXRSZXN1bHQpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9s
VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKKworICAgIGRvdWJsZSBl
ZmZlY3QgPSAwOworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4o
cHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYiks
ICZlZmZlY3QpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSAqIGIpKSk7CisgICAgQ0hFQ0soaXNJ
ZGVudGljYWwoZWZmZWN0LCBzdGF0aWNfY2FzdDxkb3VibGU+KGEpICogc3RhdGljX2Nhc3Q8ZG91
YmxlPihiKSkpOworfQorCiB2b2lkIHRlc3REaXZBcmdEb3VibGUoZG91YmxlIGEpCiB7CiAgICAg
UHJvY2VkdXJlIHByb2M7CkBAIC01NzMsNiArODQzLDE0MSBAQCB2b2lkIHRlc3REaXZJbW1zRG91
YmxlKGRvdWJsZSBhLCBkb3VibGUgYikKICAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5k
UnVuPGRvdWJsZT4ocHJvYyksIGEgLyBiKSk7CiB9CiAKK3ZvaWQgdGVzdERpdkFyZ0Zsb2F0KGZs
b2F0IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwor
ICAgIFZhbHVlKiBmbG9hdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3
aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MzIpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERpdiwgT3JpZ2luKCksIGZsb2F0VmFsdWUsIGZsb2F0
VmFsdWUpOworICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCByZXN1bHQpOworICAgIHJvb3QtPmFwcGVuZE5ldzxD
b250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKKworCisgICAg
Q0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3aXNlX2Nh
c3Q8aW50MzJfdD4oYSkpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSAvIGEpKSk7Cit9CisKK3Zv
aWQgdGVzdERpdkFyZ3NGbG9hdChmbG9hdCBhLCBmbG9hdCBiKQoreworICAgIFByb2NlZHVyZSBw
cm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUq
IGFyZ3VtZW50MWludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3Jp
Z2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGFyZ3VtZW50Mmlu
dDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUxID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MWludDMy
KTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1ZTIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQyaW50MzIpOworICAgIFZhbHVlKiByZXN1
bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERpdiwgT3JpZ2luKCksIGZsb2F0VmFs
dWUxLCBmbG9hdFZhbHVlMik7CisgICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgcm9vdC0+
YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0MzIp
OworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBi
aXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihiKSksIGJpdHdp
c2VfY2FzdDxpbnQzMl90PihhIC8gYikpKTsKK30KKwordm9pZCB0ZXN0RGl2QXJnSW1tRmxvYXQo
ZmxvYXQgYSwgZmxvYXQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudDMyID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKSk7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQzMik7CisgICAgVmFsdWUqIGNv
bnN0VmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgYik7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
RGl2LCBPcmlnaW4oKSwgZmxvYXRWYWx1ZSwgY29uc3RWYWx1ZSk7CisgICAgVmFsdWUqIHJlc3Vs
dDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCks
IHJlc3VsdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwgcmVzdWx0MzIpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFu
ZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkpLCBiaXR3aXNlX2Nh
c3Q8aW50MzJfdD4oYSAvIGIpKSk7Cit9CisKK3ZvaWQgdGVzdERpdkltbUFyZ0Zsb2F0KGZsb2F0
IGEsIGZsb2F0IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQzMiA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCkpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MzIpOworICAgIFZhbHVlKiBjb25zdFZh
bHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RmxvYXRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEp
OworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERpdiwg
T3JpZ2luKCksIGNvbnN0VmFsdWUsIGZsb2F0VmFsdWUpOworICAgIFZhbHVlKiByZXN1bHQzMiA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCByZXN1
bHQpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3Jp
Z2luKCksIHJlc3VsdDMyKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48
aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGIpKSwgYml0d2lzZV9jYXN0PGlu
dDMyX3Q+KGEgLyBiKSkpOworfQorCit2b2lkIHRlc3REaXZJbW1zRmxvYXQoZmxvYXQgYSwgZmxv
YXQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBjb25zdFZhbHVlMSA9IHJvb3QtPmFwcGVuZE5ldzxD
b25zdEZsb2F0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKTsKKyAgICBWYWx1ZSogY29uc3RWYWx1
ZTIgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYik7
CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRGl2LCBP
cmlnaW4oKSwgY29uc3RWYWx1ZTEsIGNvbnN0VmFsdWUyKTsKKyAgICBWYWx1ZSogcmVzdWx0MzIg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgcmVz
dWx0KTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLCByZXN1bHQzMik7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVu
PGludDMyX3Q+KHByb2MpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSAvIGIpKSk7Cit9CisKK3Zv
aWQgdGVzdERpdkFyZ0Zsb2F0V2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uKGZsb2F0IGEpCit7
CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnRJbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZh
bHVlKiBmbG9hdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2Fz
dCwgT3JpZ2luKCksIGFyZ3VtZW50SW50MzIpOworICAgIFZhbHVlKiBhc0RvdWJsZSA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGZsb2F0VmFs
dWUpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERp
diwgT3JpZ2luKCksIGFzRG91YmxlLCBhc0RvdWJsZSk7CisgICAgVmFsdWUqIGZsb2F0UmVzdWx0
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zsb2F0LCBPcmlnaW4oKSwg
cmVzdWx0KTsKKyAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgZmxvYXRSZXN1bHQpOworICAgIHJvb3QtPmFwcGVu
ZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKKwor
ICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lz
ZV9jYXN0PGludDMyX3Q+KGEpKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEgLyBhKSkpOworfQor
Cit2b2lkIHRlc3REaXZBcmdzRmxvYXRXaXRoVXNlbGVzc0RvdWJsZUNvbnZlcnNpb24oZmxvYXQg
YSwgZmxvYXQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudDFpbnQzMiA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCkpOworICAgIFZhbHVlKiBhcmd1bWVudDJpbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAg
IFZhbHVlKiBmbG9hdFZhbHVlMSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lz
ZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDFpbnQzMik7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUy
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFy
Z3VtZW50MmludDMyKTsKKyAgICBWYWx1ZSogYXNEb3VibGUxID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBGbG9hdFRvRG91YmxlLCBPcmlnaW4oKSwgZmxvYXRWYWx1ZTEpOworICAgIFZh
bHVlKiBhc0RvdWJsZTIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3Vi
bGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlMik7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgRGl2LCBPcmlnaW4oKSwgYXNEb3VibGUxLCBhc0RvdWJsZTIp
OworICAgIFZhbHVlKiBmbG9hdFJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
RG91YmxlVG9GbG9hdCwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgVmFsdWUqIHJlc3VsdDMyID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGZsb2F0
UmVzdWx0KTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLCByZXN1bHQzMik7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5k
UnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSwgYml0d2lzZV9jYXN0
PGludDMyX3Q+KGIpKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEgLyBiKSkpOworfQorCit2b2lk
IHRlc3REaXZBcmdzRmxvYXRXaXRoRWZmZWN0ZnVsRG91YmxlQ29udmVyc2lvbihmbG9hdCBhLCBm
bG9hdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MWludDMyID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KSk7CisgICAgVmFsdWUqIGFyZ3VtZW50MmludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgVmFs
dWUqIGZsb2F0VmFsdWUxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2Fz
dCwgT3JpZ2luKCksIGFyZ3VtZW50MWludDMyKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1ZTIgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1l
bnQyaW50MzIpOworICAgIFZhbHVlKiBhc0RvdWJsZTEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlMSk7CisgICAgVmFsdWUq
IGFzRG91YmxlMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwg
T3JpZ2luKCksIGZsb2F0VmFsdWUyKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBEaXYsIE9yaWdpbigpLCBhc0RvdWJsZTEsIGFzRG91YmxlMik7Cisg
ICAgVmFsdWUqIGZsb2F0UmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3Vi
bGVUb0Zsb2F0LCBPcmlnaW4oKSwgcmVzdWx0KTsKKyAgICBWYWx1ZSogZG91YmxlRGl2cmVzcyA9
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIyKTsKKyAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2Ms
IFN0b3JlLCBPcmlnaW4oKSwgcmVzdWx0LCBkb3VibGVEaXZyZXNzKTsKKyAgICBWYWx1ZSogcmVz
dWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4o
KSwgZmxvYXRSZXN1bHQpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2Ms
IFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKKworICAgIGRvdWJsZSBlZmZlY3QgPSAwOwor
ICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lz
ZV9jYXN0PGludDMyX3Q+KGEpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYiksICZlZmZlY3QpLCBi
aXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSAvIGIpKSk7CisgICAgQ0hFQ0soaXNJZGVudGljYWwoZWZm
ZWN0LCBzdGF0aWNfY2FzdDxkb3VibGU+KGEpIC8gc3RhdGljX2Nhc3Q8ZG91YmxlPihiKSkpOwor
fQorCiB2b2lkIHRlc3RTdWJBcmcoaW50IGEpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CkBAIC03
NzIsNiArMTE3NywxNDEgQEAgdm9pZCB0ZXN0U3ViSW1tc0RvdWJsZShkb3VibGUgYSwgZG91Ymxl
IGIpCiAgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MpLCBh
IC0gYikpOwogfQogCit2b2lkIHRlc3RTdWJBcmdGbG9hdChmbG9hdCBhKQoreworICAgIFByb2Nl
ZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAg
VmFsdWUqIGFyZ3VtZW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBP
cmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1
ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBh
cmd1bWVudDMyKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBTdWIsIE9yaWdpbigpLCBmbG9hdFZhbHVlLCBmbG9hdFZhbHVlKTsKKyAgICBWYWx1ZSog
cmVzdWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmln
aW4oKSwgcmVzdWx0KTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNv
bXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpKSwgYml0
d2lzZV9jYXN0PGludDMyX3Q+KGEgLSBhKSkpOworfQorCit2b2lkIHRlc3RTdWJBcmdzRmxvYXQo
ZmxvYXQgYSwgZmxvYXQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudDFpbnQzMiA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBhcmd1bWVudDJpbnQzMiA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkp
OworICAgIFZhbHVlKiBmbG9hdFZhbHVlMSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
Qml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDFpbnQzMik7CisgICAgVmFsdWUqIGZsb2F0
VmFsdWUyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2lu
KCksIGFyZ3VtZW50MmludDMyKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLCBmbG9hdFZhbHVlMSwgZmxvYXRWYWx1ZTIpOwor
ICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lz
ZUNhc3QsIE9yaWdpbigpLCByZXN1bHQpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFs
dWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKKworICAgIENIRUNLKGlzSWRl
bnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+
KGEpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYikpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSAt
IGIpKSk7Cit9CisKK3ZvaWQgdGVzdFN1YkFyZ0ltbUZsb2F0KGZsb2F0IGEsIGZsb2F0IGIpCit7
CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVl
KiBmbG9hdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwg
T3JpZ2luKCksIGFyZ3VtZW50MzIpOworICAgIFZhbHVlKiBjb25zdFZhbHVlID0gcm9vdC0+YXBw
ZW5kTmV3PENvbnN0RmxvYXRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpOworICAgIFZhbHVlKiBy
ZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksIGZsb2F0
VmFsdWUsIGNvbnN0VmFsdWUpOworICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCByZXN1bHQpOworICAgIHJvb3Qt
PmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMy
KTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywg
Yml0d2lzZV9jYXN0PGludDMyX3Q+KGEpKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEgLSBiKSkp
OworfQorCit2b2lkIHRlc3RTdWJJbW1BcmdGbG9hdChmbG9hdCBhLCBmbG9hdCBiKQoreworICAg
IFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
CisgICAgVmFsdWUqIGFyZ3VtZW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRy
dW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSogZmxv
YXRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdp
bigpLCBhcmd1bWVudDMyKTsKKyAgICBWYWx1ZSogY29uc3RWYWx1ZSA9IHJvb3QtPmFwcGVuZE5l
dzxDb25zdEZsb2F0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKTsKKyAgICBWYWx1ZSogcmVzdWx0
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLCBjb25zdFZhbHVl
LCBmbG9hdFZhbHVlKTsKKyAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgcmVzdWx0KTsKKyAgICByb290LT5hcHBl
bmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisK
KyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdp
c2VfY2FzdDxpbnQzMl90PihiKSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhIC0gYikpKTsKK30K
Kwordm9pZCB0ZXN0U3ViSW1tc0Zsb2F0KGZsb2F0IGEsIGZsb2F0IGIpCit7CisgICAgUHJvY2Vk
dXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBW
YWx1ZSogY29uc3RWYWx1ZTEgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgYSk7CisgICAgVmFsdWUqIGNvbnN0VmFsdWUyID0gcm9vdC0+YXBwZW5kTmV3
PENvbnN0RmxvYXRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpOworICAgIFZhbHVlKiByZXN1bHQg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksIGNvbnN0VmFsdWUx
LCBjb25zdFZhbHVlMik7CisgICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgcm9vdC0+YXBw
ZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0MzIpOwor
CisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jKSwgYml0
d2lzZV9jYXN0PGludDMyX3Q+KGEgLSBiKSkpOworfQorCit2b2lkIHRlc3RTdWJBcmdGbG9hdFdp
dGhVc2VsZXNzRG91YmxlQ29udmVyc2lvbihmbG9hdCBhKQoreworICAgIFByb2NlZHVyZSBwcm9j
OworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFy
Z3VtZW50SW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4o
KSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1ZSA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVu
dEludDMyKTsKKyAgICBWYWx1ZSogYXNEb3VibGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlKTsKKyAgICBWYWx1ZSogcmVz
dWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLCBhc0RvdWJs
ZSwgYXNEb3VibGUpOworICAgIFZhbHVlKiBmbG9hdFJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgVmFsdWUq
IHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3Jp
Z2luKCksIGZsb2F0UmVzdWx0KTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisKKyAgICBDSEVDSyhpc0lkZW50aWNh
bChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSks
IGJpdHdpc2VfY2FzdDxpbnQzMl90PihhIC0gYSkpKTsKK30KKwordm9pZCB0ZXN0U3ViQXJnc0Zs
b2F0V2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uKGZsb2F0IGEsIGZsb2F0IGIpCit7CisgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KyAgICBWYWx1ZSogYXJndW1lbnQxaW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSog
YXJndW1lbnQyaW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmln
aW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1ZTEg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJn
dW1lbnQxaW50MzIpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlMiA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDJpbnQzMik7CisgICAg
VmFsdWUqIGFzRG91YmxlMSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0Rv
dWJsZSwgT3JpZ2luKCksIGZsb2F0VmFsdWUxKTsKKyAgICBWYWx1ZSogYXNEb3VibGUyID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9hdFRvRG91YmxlLCBPcmlnaW4oKSwgZmxvYXRW
YWx1ZTIpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IFN1YiwgT3JpZ2luKCksIGFzRG91YmxlMSwgYXNEb3VibGUyKTsKKyAgICBWYWx1ZSogZmxvYXRS
ZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERvdWJsZVRvRmxvYXQsIE9yaWdp
bigpLCByZXN1bHQpOworICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBmbG9hdFJlc3VsdCk7CisgICAgcm9vdC0+
YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0MzIp
OworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBi
aXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihiKSksIGJpdHdp
c2VfY2FzdDxpbnQzMl90PihhIC0gYikpKTsKK30KKwordm9pZCB0ZXN0U3ViQXJnc0Zsb2F0V2l0
aEVmZmVjdGZ1bERvdWJsZUNvbnZlcnNpb24oZmxvYXQgYSwgZmxvYXQgYikKK3sKKyAgICBQcm9j
ZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAg
IFZhbHVlKiBhcmd1bWVudDFpbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1
bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBhcmd1
bWVudDJpbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigp
LAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlMSA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVu
dDFpbnQzMik7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MmludDMyKTsKKyAgICBWYWx1
ZSogYXNEb3VibGUxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9hdFRvRG91Ymxl
LCBPcmlnaW4oKSwgZmxvYXRWYWx1ZTEpOworICAgIFZhbHVlKiBhc0RvdWJsZTIgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVl
Mik7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3Vi
LCBPcmlnaW4oKSwgYXNEb3VibGUxLCBhc0RvdWJsZTIpOworICAgIFZhbHVlKiBmbG9hdFJlc3Vs
dCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwgT3JpZ2luKCks
IHJlc3VsdCk7CisgICAgVmFsdWUqIGRvdWJsZVN1YnJlc3MgPSByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMik7Cisg
ICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBTdG9yZSwgT3JpZ2luKCksIHJl
c3VsdCwgZG91YmxlU3VicmVzcyk7CisgICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGZsb2F0UmVzdWx0KTsKKyAg
ICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBy
ZXN1bHQzMik7CisKKyAgICBkb3VibGUgZWZmZWN0ID0gMDsKKyAgICBDSEVDSyhpc0lkZW50aWNh
bChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSwg
Yml0d2lzZV9jYXN0PGludDMyX3Q+KGIpLCAmZWZmZWN0KSwgYml0d2lzZV9jYXN0PGludDMyX3Q+
KGEgLSBiKSkpOworICAgIENIRUNLKGlzSWRlbnRpY2FsKGVmZmVjdCwgc3RhdGljX2Nhc3Q8ZG91
YmxlPihhKSAtIHN0YXRpY19jYXN0PGRvdWJsZT4oYikpKTsKK30KKwogdm9pZCB0ZXN0Qml0QW5k
QXJncyhpbnQ2NF90IGEsIGludDY0X3QgYikKIHsKICAgICBQcm9jZWR1cmUgcHJvYzsKQEAgLTE5
NjYsMTYwICsyNTA2LDQ0MCBAQCB2b2lkIHRlc3RDbHpBcmczMihpbnQzMl90IGEpCiAgICAgQ0hF
Q0soY29tcGlsZUFuZFJ1bjx1bnNpZ25lZD4ocHJvYywgYSkgPT0gY291bnRMZWFkaW5nWmVybyhh
KSk7CiB9CiAKLXZvaWQgdGVzdENsek1lbTMyKGludDMyX3QgYSkKK3ZvaWQgdGVzdENsek1lbTMy
KGludDMyX3QgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
OworICAgIE1lbW9yeVZhbHVlKiB2YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4o
cHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLCBhZGRyZXNzKTsKKyAgICBWYWx1ZSogY2x6VmFs
dWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIENseiwgT3JpZ2luKCksIHZhbHVlKTsK
KyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LCBjbHpWYWx1ZSk7CisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjx1bnNpZ25lZD4ocHJvYywgJmEp
ID09IGNvdW50TGVhZGluZ1plcm8oYSkpOworfQorCit2b2lkIHRlc3RTcXJ0QXJnKGRvdWJsZSBh
KQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAgIHBy
b2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisg
ICAgICAgICAgICBwcm9jLCBTcXJ0LCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3Vt
ZW50RlBSMCkpKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91Ymxl
Pihwcm9jLCBhKSwgc3FydChhKSkpOworfQorCit2b2lkIHRlc3RTcXJ0SW1tKGRvdWJsZSBhKQor
eworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RG91Ymxl
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZh
bHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBTcXJ0LCBPcmlnaW4oKSwgYXJndW1lbnQpKTsKKworICAgIENI
RUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jKSwgc3FydChhKSkpOwor
fQorCit2b2lkIHRlc3RTcXJ0TWVtKGRvdWJsZSBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOwor
ICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFkZHJl
c3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgTWVtb3J5VmFsdWUqIGxvYWREb3VibGUgPSByb290
LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIERvdWJsZSwgT3JpZ2luKCksIGFk
ZHJlc3MpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAorICAgICAgICBwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IFNxcnQsIE9yaWdpbigpLCBsb2FkRG91YmxlKSk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChj
b21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYywgJmEpLCBzcXJ0KGEpKSk7Cit9CisKK3ZvaWQgdGVz
dFNxcnRBcmcoZmxvYXQgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudDMyID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKSk7CisgICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MzIpOworICAgIFZhbHVlKiByZXN1
bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNxcnQsIE9yaWdpbigpLCBhcmd1bWVu
dCk7CisgICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBC
aXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRy
b2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0MzIpOworCisgICAgQ0hFQ0so
aXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50
MzJfdD4oYSkpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNxcnQo
YSkpKSkpOworfQorCit2b2lkIHRlc3RTcXJ0SW1tKGZsb2F0IGEpCit7CisgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1
ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmln
aW4oKSwgYSk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgU3FydCwgT3JpZ2luKCksIGFyZ3VtZW50KTsKKyAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgcmVzdWx0KTsK
KyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LCByZXN1bHQzMik7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMy
X3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSksIGJpdHdpc2VfY2FzdDxpbnQzMl90
PihzdGF0aWNfY2FzdDxmbG9hdD4oc3FydChhKSkpKSk7Cit9CisKK3ZvaWQgdGVzdFNxcnRNZW0o
ZmxvYXQgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwor
ICAgIE1lbW9yeVZhbHVlKiBsb2FkRmxvYXQgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+
KHByb2MsIExvYWQsIEZsb2F0LCBPcmlnaW4oKSwgYWRkcmVzcyk7CisgICAgVmFsdWUqIHJlc3Vs
dCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3FydCwgT3JpZ2luKCksIGxvYWRGbG9h
dCk7CisgICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBC
aXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRy
b2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0MzIpOworCisgICAgQ0hFQ0so
aXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCAmYSksIGJpdHdpc2VfY2Fz
dDxpbnQzMl90PihzdGF0aWNfY2FzdDxmbG9hdD4oc3FydChhKSkpKSk7Cit9CisKK3ZvaWQgdGVz
dFNxcnRBcmdXaXRoVXNlbGVzc0RvdWJsZUNvbnZlcnNpb24oZmxvYXQgYSkKK3sKKyAgICBQcm9j
ZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAg
IFZhbHVlKiBhcmd1bWVudDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywg
T3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGZsb2F0VmFs
dWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwg
YXJndW1lbnQzMik7CisgICAgVmFsdWUqIGFzRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBGbG9hdFRvRG91YmxlLCBPcmlnaW4oKSwgZmxvYXRWYWx1ZSk7CisgICAgVmFsdWUq
IHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3FydCwgT3JpZ2luKCksIGFz
RG91YmxlKTsKKyAgICBWYWx1ZSogZmxvYXRSZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIERvdWJsZVRvRmxvYXQsIE9yaWdpbigpLCByZXN1bHQpOworICAgIFZhbHVlKiByZXN1
bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigp
LCBmbG9hdFJlc3VsdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0MzIpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29t
cGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkpLCBiaXR3
aXNlX2Nhc3Q8aW50MzJfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNxcnQoYSkpKSkpOworfQorCit2
b2lkIHRlc3RTcXJ0QXJnV2l0aEVmZmVjdGZ1bERvdWJsZUNvbnZlcnNpb24oZmxvYXQgYSkKK3sK
KyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOworICAgIFZhbHVlKiBhcmd1bWVudDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUq
IGZsb2F0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBP
cmlnaW4oKSwgYXJndW1lbnQzMik7CisgICAgVmFsdWUqIGFzRG91YmxlID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBGbG9hdFRvRG91YmxlLCBPcmlnaW4oKSwgZmxvYXRWYWx1ZSk7Cisg
ICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3FydCwgT3Jp
Z2luKCksIGFzRG91YmxlKTsKKyAgICBWYWx1ZSogZmxvYXRSZXN1bHQgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIERvdWJsZVRvRmxvYXQsIE9yaWdpbigpLCByZXN1bHQpOworICAgIFZh
bHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3Qs
IE9yaWdpbigpLCBmbG9hdFJlc3VsdCk7CisgICAgVmFsdWUqIGRvdWJsZUFkZHJlc3MgPSByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMik7CisgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBTdG9y
ZSwgT3JpZ2luKCksIHJlc3VsdCwgZG91YmxlQWRkcmVzcyk7CisgICAgcm9vdC0+YXBwZW5kTmV3
PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0MzIpOworCisgICAg
ZG91YmxlIGVmZmVjdCA9IDA7CisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxp
bnQzMl90Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSksICZlZmZlY3QpLCBiaXR3aXNl
X2Nhc3Q8aW50MzJfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNxcnQoYSkpKSkpOworICAgIENIRUNL
KGlzSWRlbnRpY2FsKGVmZmVjdCwgc3FydChhKSkpOworfQorCit2b2lkIHRlc3REb3VibGVBcmdU
b0ludDY0Qml0d2lzZUNhc3QoZG91YmxlIHZhbHVlKQoreworICAgIFByb2NlZHVyZSBwcm9jOwor
ICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3Vt
ZW50ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBG
UFJJbmZvOjphcmd1bWVudEZQUjApOworCisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1
ZT4oCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFy
Z3VtZW50KSk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDY0X3Q+
KHByb2MsIHZhbHVlKSwgYml0d2lzZV9jYXN0PGludDY0X3Q+KHZhbHVlKSkpOworfQorCit2b2lk
IHRlc3REb3VibGVJbW1Ub0ludDY0Qml0d2lzZUNhc3QoZG91YmxlIHZhbHVlKQoreworICAgIFBy
b2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Cisg
ICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCB2YWx1ZSk7CisKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVl
PigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJn
dW1lbnQpKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50NjRfdD4o
cHJvYyksIGJpdHdpc2VfY2FzdDxpbnQ2NF90Pih2YWx1ZSkpKTsKK30KKwordm9pZCB0ZXN0VHdv
Qml0d2lzZUNhc3RPbkRvdWJsZShkb3VibGUgdmFsdWUpCit7CisgICAgUHJvY2VkdXJlIHByb2M7
CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJn
dW1lbnQgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEZQUkluZm86OmFyZ3VtZW50RlBSMCk7CisgICAgVmFsdWUqIGZpcnN0ID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50KTsKKyAgICBW
YWx1ZSogc2Vjb25kID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwg
T3JpZ2luKCksIGZpcnN0KTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLCBzZWNvbmQpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29t
cGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIHZhbHVlKSwgdmFsdWUpKTsKK30KKwordm9pZCB0ZXN0
Qml0d2lzZUNhc3RPbkRvdWJsZUluTWVtb3J5KGRvdWJsZSB2YWx1ZSkKK3sKKyAgICBQcm9jZWR1
cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZh
bHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIE1lbW9yeVZhbHVlKiBsb2FkRG91
YmxlID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBEb3VibGUsIE9y
aWdpbigpLCBhZGRyZXNzKTsKKyAgICBWYWx1ZSogY2FzdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBsb2FkRG91YmxlKTsKKyAgICByb290LT5h
cHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBjYXN0KTsKKwor
ICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgJnZhbHVl
KSwgYml0d2lzZV9jYXN0PGludDY0X3Q+KHZhbHVlKSkpOworfQorCit2b2lkIHRlc3RJbnQ2NEJB
cmdUb0RvdWJsZUJpdHdpc2VDYXN0KGludDY0X3QgdmFsdWUpCit7CisgICAgUHJvY2VkdXJlIHBy
b2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSog
YXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJv
bFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4o
KSwgYXJndW1lbnQpKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91
YmxlPihwcm9jLCB2YWx1ZSksIGJpdHdpc2VfY2FzdDxkb3VibGU+KHZhbHVlKSkpOworfQorCit2
b2lkIHRlc3RJbnQ2NEJJbW1Ub0RvdWJsZUJpdHdpc2VDYXN0KGludDY0X3QgdmFsdWUpCit7Cisg
ICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKyAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgdmFsdWUpOworCisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1
ZT4oCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFy
Z3VtZW50KSk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4o
cHJvYyksIGJpdHdpc2VfY2FzdDxkb3VibGU+KHZhbHVlKSkpOworfQorCit2b2lkIHRlc3RUd29C
aXR3aXNlQ2FzdE9uSW50NjQoaW50NjRfdCB2YWx1ZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsK
KyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1
bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBWYWx1ZSogZmlyc3QgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQpOworICAgIFZh
bHVlKiBzZWNvbmQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBP
cmlnaW4oKSwgZmlyc3QpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2Ms
IFJldHVybiwgT3JpZ2luKCksIHNlY29uZCk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21w
aWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIHZhbHVlKSwgdmFsdWUpKTsKK30KKwordm9pZCB0ZXN0
Qml0d2lzZUNhc3RPbkludDY0SW5NZW1vcnkoaW50NjRfdCB2YWx1ZSkKK3sKKyAgICBQcm9jZWR1
cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZh
bHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIE1lbW9yeVZhbHVlKiBsb2FkRG91
YmxlID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQ2NCwgT3Jp
Z2luKCksIGFkZHJlc3MpOworICAgIFZhbHVlKiBjYXN0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGxvYWREb3VibGUpOworICAgIHJvb3QtPmFw
cGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIGNhc3QpOworCisg
ICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsICZ2YWx1ZSks
IGJpdHdpc2VfY2FzdDxkb3VibGU+KHZhbHVlKSkpOworfQorCit2b2lkIHRlc3RGbG9hdEltbVRv
SW50MzJCaXR3aXNlQ2FzdChmbG9hdCB2YWx1ZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVu
dCA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdEZsb2F0VmFsdWU+KHByb2MsIE9yaWdpbigpLCB2YWx1
ZSk7CisKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAg
ICAgICAgIHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQpKTsKKworICAgIENI
RUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYyksIGJpdHdpc2VfY2Fz
dDxpbnQzMl90Pih2YWx1ZSkpKTsKK30KKwordm9pZCB0ZXN0Qml0d2lzZUNhc3RPbkZsb2F0SW5N
ZW1vcnkoZmxvYXQgdmFsdWUpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CiAgICAgQmFzaWNCbG9j
ayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKICAgICBWYWx1ZSogYWRkcmVzcyA9IHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKTsKLSAgICBNZW1vcnlWYWx1ZSogdmFsdWUgPSByb290LT5hcHBlbmROZXc8TWVtb3J5
VmFsdWU+KHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwgYWRkcmVzcyk7Ci0gICAgVmFsdWUq
IGNselZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBDbHosIE9yaWdpbigpLCB2
YWx1ZSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwgY2x6VmFsdWUpOwotICAgIENIRUNLKGNvbXBpbGVBbmRSdW48dW5zaWduZWQ+KHBy
b2MsICZhKSA9PSBjb3VudExlYWRpbmdaZXJvKGEpKTsKKyAgICBNZW1vcnlWYWx1ZSogbG9hZEZs
b2F0ID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBGbG9hdCwgT3Jp
Z2luKCksIGFkZHJlc3MpOworICAgIFZhbHVlKiBjYXN0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGxvYWRGbG9hdCk7CisgICAgcm9vdC0+YXBw
ZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgY2FzdCk7CisKKyAg
ICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsICZ2YWx1ZSks
IGJpdHdpc2VfY2FzdDxpbnQzMl90Pih2YWx1ZSkpKTsKIH0KIAotdm9pZCB0ZXN0U3FydEFyZyhk
b3VibGUgYSkKK3ZvaWQgdGVzdEludDMyQkFyZ1RvRmxvYXRCaXR3aXNlQ2FzdChpbnQzMl90IHZh
bHVlKQogewogICAgIFByb2NlZHVyZSBwcm9jOwogICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworCiAg
ICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCiAgICAgICAgIHByb2MsIFJldHVybiwg
T3JpZ2luKCksCiAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBw
cm9jLCBTcXJ0LCBPcmlnaW4oKSwKLSAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCkpKTsK
KyAgICAgICAgICAgIHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQpKTsKIAot
ICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBhKSwgc3Fy
dChhKSkpOworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZmxvYXQ+KHByb2Ms
IHZhbHVlKSwgYml0d2lzZV9jYXN0PGZsb2F0Pih2YWx1ZSkpKTsKIH0KIAotdm9pZCB0ZXN0U3Fy
dEltbShkb3VibGUgYSkKK3ZvaWQgdGVzdEludDMyQkltbVRvRmxvYXRCaXR3aXNlQ2FzdChpbnQz
Ml90IHZhbHVlKQogewogICAgIFByb2NlZHVyZSBwcm9jOwogICAgIEJhc2ljQmxvY2sqIHJvb3Qg
PSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3
PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKTsKKyAgICBWYWx1ZSogYXJndW1l
bnQgPSByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdmFsdWUp
OworCiAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCiAgICAgICAgIHByb2MsIFJl
dHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3Fy
dCwgT3JpZ2luKCksIGFyZ3VtZW50KSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
CisgICAgICAgICAgICBwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50KSk7CiAK
LSAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYyksIHNxcnQo
YSkpKTsKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGZsb2F0Pihwcm9jKSwg
Yml0d2lzZV9jYXN0PGZsb2F0Pih2YWx1ZSkpKTsKIH0KIAotdm9pZCB0ZXN0U3FydE1lbShkb3Vi
bGUgYSkKK3ZvaWQgdGVzdFR3b0JpdHdpc2VDYXN0T25JbnQzMihpbnQzMl90IHZhbHVlKQorewor
ICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIFZhbHVlKiBm
aXJzdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigp
LCBhcmd1bWVudCk7CisgICAgVmFsdWUqIHNlY29uZCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBmaXJzdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3
PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgc2Vjb25kKTsKKworICAgIENI
RUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgdmFsdWUpLCB2YWx1
ZSkpOworfQorCit2b2lkIHRlc3RCaXR3aXNlQ2FzdE9uSW50MzJJbk1lbW9yeShpbnQzMl90IHZh
bHVlKQogewogICAgIFByb2NlZHVyZSBwcm9jOwogICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7CiAgICAgVmFsdWUqIGFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAg
TWVtb3J5VmFsdWUqIGxvYWREb3VibGUgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHBy
b2MsIExvYWQsIERvdWJsZSwgT3JpZ2luKCksIGFkZHJlc3MpOwotICAgIHJvb3QtPmFwcGVuZE5l
dzxDb250cm9sVmFsdWU+KAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNxcnQsIE9yaWdpbigpLCBsb2FkRG91Ymxl
KSk7CisgICAgTWVtb3J5VmFsdWUqIGxvYWRGbG9hdCA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlW
YWx1ZT4ocHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLCBhZGRyZXNzKTsKKyAgICBWYWx1ZSog
Y2FzdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigp
LCBsb2FkRmxvYXQpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJl
dHVybiwgT3JpZ2luKCksIGNhc3QpOwogCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFu
ZFJ1bjxkb3VibGU+KHByb2MsICZhKSwgc3FydChhKSkpOworICAgIENIRUNLKGlzSWRlbnRpY2Fs
KGNvbXBpbGVBbmRSdW48ZmxvYXQ+KHByb2MsICZ2YWx1ZSksIGJpdHdpc2VfY2FzdDxmbG9hdD4o
dmFsdWUpKSk7CiB9CiAKLXZvaWQgdGVzdERvdWJsZUFyZ1RvSW50NjRCaXR3aXNlQ2FzdChkb3Vi
bGUgdmFsdWUpCit2b2lkIHRlc3RDb252ZXJ0RG91YmxlVG9GbG9hdEFyZyhkb3VibGUgdmFsdWUp
CiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CiAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKICAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7CisgICAgVmFs
dWUqIGFzRmxvYXQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERvdWJsZVRvRmxvYXQs
IE9yaWdpbigpLCBhcmd1bWVudCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4o
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgYXNGbG9hdCk7CiAKLSAgICByb290LT5hcHBlbmROZXc8
Q29udHJvbFZhbHVlPigKLSAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAgICAgICAgICAgIHByb2MsIEJpdHdpc2VDYXN0LCBP
cmlnaW4oKSwgYXJndW1lbnQpKTsKLQotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRS
dW48aW50NjRfdD4ocHJvYywgdmFsdWUpLCBiaXR3aXNlX2Nhc3Q8aW50NjRfdD4odmFsdWUpKSk7
CisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxmbG9hdD4ocHJvYywgdmFsdWUp
LCBzdGF0aWNfY2FzdDxmbG9hdD4odmFsdWUpKSk7CiB9CiAKLXZvaWQgdGVzdERvdWJsZUltbVRv
SW50NjRCaXR3aXNlQ2FzdChkb3VibGUgdmFsdWUpCit2b2lkIHRlc3RDb252ZXJ0RG91YmxlVG9G
bG9hdEltbShkb3VibGUgdmFsdWUpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CiAgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKICAgICBWYWx1ZSogYXJndW1lbnQgPSByb290
LT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHZhbHVlKTsKKyAg
ICBWYWx1ZSogYXNGbG9hdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91YmxlVG9G
bG9hdCwgT3JpZ2luKCksIGFyZ3VtZW50KTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZh
bHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBhc0Zsb2F0KTsKIAotICAgIHJvb3QtPmFwcGVu
ZE5ldzxDb250cm9sVmFsdWU+KAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQml0d2lzZUNh
c3QsIE9yaWdpbigpLCBhcmd1bWVudCkpOworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVB
bmRSdW48ZmxvYXQ+KHByb2MpLCBzdGF0aWNfY2FzdDxmbG9hdD4odmFsdWUpKSk7Cit9CiAKLSAg
ICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MpLCBiaXR3aXNl
X2Nhc3Q8aW50NjRfdD4odmFsdWUpKSk7Cit2b2lkIHRlc3RDb252ZXJ0RG91YmxlVG9GbG9hdE1l
bShkb3VibGUgdmFsdWUpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYWRkcmVzcyA9IHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKTsKKyAgICBNZW1vcnlWYWx1ZSogbG9hZGVkRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PE1l
bW9yeVZhbHVlPihwcm9jLCBMb2FkLCBEb3VibGUsIE9yaWdpbigpLCBhZGRyZXNzKTsKKyAgICBW
YWx1ZSogYXNGbG9hdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9h
dCwgT3JpZ2luKCksIGxvYWRlZERvdWJsZSk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xW
YWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgYXNGbG9hdCk7CisKKyAgICBDSEVDSyhpc0lk
ZW50aWNhbChjb21waWxlQW5kUnVuPGZsb2F0Pihwcm9jLCAmdmFsdWUpLCBzdGF0aWNfY2FzdDxm
bG9hdD4odmFsdWUpKSk7CiB9CiAKLXZvaWQgdGVzdFR3b0JpdHdpc2VDYXN0T25Eb3VibGUoZG91
YmxlIHZhbHVlKQordm9pZCB0ZXN0Q29udmVydEZsb2F0VG9Eb3VibGVBcmcoZmxvYXQgdmFsdWUp
CiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CiAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7Ci0gICAgVmFs
dWUqIGZpcnN0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3Jp
Z2luKCksIGFyZ3VtZW50KTsKLSAgICBWYWx1ZSogc2Vjb25kID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGZpcnN0KTsKLSAgICByb290LT5hcHBl
bmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBzZWNvbmQpOworICAg
IFZhbHVlKiBhcmd1bWVudDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywg
T3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGZsb2F0VmFs
dWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwg
YXJndW1lbnQzMik7CisgICAgVmFsdWUqIGFzRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBGbG9hdFRvRG91YmxlLCBPcmlnaW4oKSwgZmxvYXRWYWx1ZSk7CisgICAgcm9vdC0+
YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgYXNEb3VibGUp
OwogCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIHZh
bHVlKSwgdmFsdWUpKTsKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJs
ZT4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KHZhbHVlKSksIHN0YXRpY19jYXN0PGRvdWJs
ZT4odmFsdWUpKSk7CiB9CiAKLXZvaWQgdGVzdEJpdHdpc2VDYXN0T25Eb3VibGVJbk1lbW9yeShk
b3VibGUgdmFsdWUpCit2b2lkIHRlc3RDb252ZXJ0RmxvYXRUb0RvdWJsZUltbShmbG9hdCB2YWx1
ZSkKIHsKICAgICBQcm9jZWR1cmUgcHJvYzsKICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5h
ZGRCbG9jaygpOwotICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgIE1l
bW9yeVZhbHVlKiBsb2FkRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9j
LCBMb2FkLCBEb3VibGUsIE9yaWdpbigpLCBhZGRyZXNzKTsKLSAgICBWYWx1ZSogY2FzdCA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBsb2FkRG91
YmxlKTsKLSAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLCBjYXN0KTsKKyAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8Q29u
c3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdmFsdWUpOworICAgIFZhbHVlKiBhc0RvdWJs
ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCks
IGFyZ3VtZW50KTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLCBhc0RvdWJsZSk7CiAKLSAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxl
QW5kUnVuPGludDY0X3Q+KHByb2MsICZ2YWx1ZSksIGJpdHdpc2VfY2FzdDxpbnQ2NF90Pih2YWx1
ZSkpKTsKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYyks
IHN0YXRpY19jYXN0PGRvdWJsZT4odmFsdWUpKSk7CiB9CiAKLXZvaWQgdGVzdEludDY0QkFyZ1Rv
RG91YmxlQml0d2lzZUNhc3QoaW50NjRfdCB2YWx1ZSkKK3ZvaWQgdGVzdENvbnZlcnRGbG9hdFRv
RG91YmxlTWVtKGZsb2F0IHZhbHVlKQogewogICAgIFByb2NlZHVyZSBwcm9jOwogICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApOworICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAg
IE1lbW9yeVZhbHVlKiBsb2FkZWRGbG9hdCA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4o
cHJvYywgTG9hZCwgRmxvYXQsIE9yaWdpbigpLCBhZGRyZXNzKTsKKyAgICBWYWx1ZSogYXNEb3Vi
bGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigp
LCBsb2FkZWRGbG9hdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwgYXNEb3VibGUpOwogCi0gICAgcm9vdC0+YXBwZW5kTmV3PENvbnRy
b2xWYWx1ZT4oCi0gICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAgICAgICBwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2lu
KCksIGFyZ3VtZW50KSk7CisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3Vi
bGU+KHByb2MsICZ2YWx1ZSksIHN0YXRpY19jYXN0PGRvdWJsZT4odmFsdWUpKSk7Cit9CiAKLSAg
ICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYywgdmFsdWUpLCBi
aXR3aXNlX2Nhc3Q8ZG91YmxlPih2YWx1ZSkpKTsKK3ZvaWQgdGVzdENvbnZlcnREb3VibGVUb0Zs
b2F0VG9Eb3VibGVUb0Zsb2F0KGRvdWJsZSB2YWx1ZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsK
KyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1
bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
RlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKKyAgICBWYWx1ZSogYXNGbG9hdCA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwgT3JpZ2luKCksIGFyZ3VtZW50KTsKKyAg
ICBWYWx1ZSogYXNEb3VibGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9E
b3VibGUsIE9yaWdpbigpLCBhc0Zsb2F0KTsKKyAgICBWYWx1ZSogYXNGbG9hdEFnYWluID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zsb2F0LCBPcmlnaW4oKSwgYXNEb3Vi
bGUpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3Jp
Z2luKCksIGFzRmxvYXRBZ2Fpbik7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5k
UnVuPGZsb2F0Pihwcm9jLCB2YWx1ZSksIHN0YXRpY19jYXN0PGZsb2F0Pih2YWx1ZSkpKTsKIH0K
IAotdm9pZCB0ZXN0SW50NjRCSW1tVG9Eb3VibGVCaXR3aXNlQ2FzdChpbnQ2NF90IHZhbHVlKQor
dm9pZCB0ZXN0TG9hZEZsb2F0Q29udmVydERvdWJsZUNvbnZlcnRGbG9hdFN0b3JlRmxvYXQoZmxv
YXQgdmFsdWUpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CiAgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8
Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdmFsdWUpOworICAgIFZhbHVlKiBzcmMgPSBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCk7CisgICAgVmFsdWUqIGRzdCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICBN
ZW1vcnlWYWx1ZSogbG9hZGVkRmxvYXQgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHBy
b2MsIExvYWQsIEZsb2F0LCBPcmlnaW4oKSwgc3JjKTsKKyAgICBWYWx1ZSogYXNEb3VibGUgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBsb2Fk
ZWRGbG9hdCk7CisgICAgVmFsdWUqIGFzRmxvYXRBZ2FpbiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwgT3JpZ2luKCksIGFzRG91YmxlKTsKKyAgICByb290LT5h
cHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIFN0b3JlLCBPcmlnaW4oKSwgYXNGbG9hdEFnYWlu
LCBkc3QpOwogCi0gICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCi0gICAgICAgIHBy
b2MsIFJldHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0g
ICAgICAgICAgICBwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50KSk7CisgICAg
cm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcm9v
dC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKIAotICAgIENI
RUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jKSwgYml0d2lzZV9jYXN0
PGRvdWJsZT4odmFsdWUpKSk7CisgICAgZmxvYXQgaW5wdXQgPSB2YWx1ZTsKKyAgICBmbG9hdCBv
dXRwdXQgPSAwLjsKKyAgICBDSEVDSyghY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCAmaW5w
dXQsICZvdXRwdXQpKTsKKyAgICBDSEVDSyhpc0lkZW50aWNhbChpbnB1dCwgb3V0cHV0KSk7CiB9
CiAKLXZvaWQgdGVzdFR3b0JpdHdpc2VDYXN0T25JbnQ2NChpbnQ2NF90IHZhbHVlKQordm9pZCB0
ZXN0RnJvdW5kQXJnKGRvdWJsZSB2YWx1ZSkKIHsKICAgICBQcm9jZWR1cmUgcHJvYzsKICAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBhcmd1bWVudCA9
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKLSAgICBWYWx1ZSogZmlyc3QgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQpOwotICAgIFZhbHVlKiBz
ZWNvbmQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4o
KSwgZmlyc3QpOwotICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVy
biwgT3JpZ2luKCksIHNlY29uZCk7CisgICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQ
UjApOworICAgIFZhbHVlKiBhc0Zsb2F0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBE
b3VibGVUb0Zsb2F0LCBPcmlnaW4oKSwgYXJndW1lbnQpOworICAgIFZhbHVlKiBhc0RvdWJsZSA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGFz
RmxvYXQpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwg
T3JpZ2luKCksIGFzRG91YmxlKTsKIAotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRS
dW48aW50NjRfdD4ocHJvYywgdmFsdWUpLCB2YWx1ZSkpOworICAgIENIRUNLKGlzSWRlbnRpY2Fs
KGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCB2YWx1ZSksIHN0YXRpY19jYXN0PGRvdWJsZT4o
c3RhdGljX2Nhc3Q8ZmxvYXQ+KHZhbHVlKSkpKTsKIH0KIAotdm9pZCB0ZXN0Qml0d2lzZUNhc3RP
bkludDY0SW5NZW1vcnkoaW50NjRfdCB2YWx1ZSkKK3ZvaWQgdGVzdEZyb3VuZE1lbShkb3VibGUg
dmFsdWUpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CiAgICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKICAgICBWYWx1ZSogYWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAg
ICBNZW1vcnlWYWx1ZSogbG9hZERvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4o
cHJvYywgTG9hZCwgSW50NjQsIE9yaWdpbigpLCBhZGRyZXNzKTsKLSAgICBWYWx1ZSogY2FzdCA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBsb2Fk
RG91YmxlKTsKLSAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLCBjYXN0KTsKKyAgICBNZW1vcnlWYWx1ZSogbG9hZGVkRG91YmxlID0gcm9vdC0+
YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBEb3VibGUsIE9yaWdpbigpLCBhZGRy
ZXNzKTsKKyAgICBWYWx1ZSogYXNGbG9hdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
RG91YmxlVG9GbG9hdCwgT3JpZ2luKCksIGxvYWRlZERvdWJsZSk7CisgICAgVmFsdWUqIGFzRG91
YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9hdFRvRG91YmxlLCBPcmlnaW4o
KSwgYXNGbG9hdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwgYXNEb3VibGUpOwogCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGls
ZUFuZFJ1bjxkb3VibGU+KHByb2MsICZ2YWx1ZSksIGJpdHdpc2VfY2FzdDxkb3VibGU+KHZhbHVl
KSkpOworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCAm
dmFsdWUpLCBzdGF0aWNfY2FzdDxkb3VibGU+KHN0YXRpY19jYXN0PGZsb2F0Pih2YWx1ZSkpKSk7
CiB9CiAKLXZvaWQgdGVzdFN0b3JlKGludCB2YWx1ZSkKK3ZvaWQgdGVzdFN0b3JlMzIoaW50IHZh
bHVlKQogewogICAgIFByb2NlZHVyZSBwcm9jOwogICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7CkBAIC0yNjEzLDIyICszNDMzLDI4IEBAIHZvaWQgdGVzdFN0b3JlTG9hZFN0
YWNrU2xvdChpbnQgdmFsdWUpCiAgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIHZh
bHVlKSA9PSB2YWx1ZSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbnQzMl90IG1vZGVs
TG9hZChpbnQzMl90IHZhbHVlKQordGVtcGxhdGU8dHlwZW5hbWUgTG9hZGVkVHlwZSwgdHlwZW5h
bWUgRWZmZWN0aXZlVHlwZT4KK0VmZmVjdGl2ZVR5cGUgbW9kZWxMb2FkKEVmZmVjdGl2ZVR5cGUg
dmFsdWUpCiB7CiAgICAgdW5pb24gewotICAgICAgICBpbnQzMl90IG9yaWdpbmFsOwotICAgICAg
ICBUIGxvYWRlZDsKKyAgICAgICAgRWZmZWN0aXZlVHlwZSBvcmlnaW5hbDsKKyAgICAgICAgTG9h
ZGVkVHlwZSBsb2FkZWQ7CiAgICAgfSB1OwogCiAgICAgdS5vcmlnaW5hbCA9IHZhbHVlOwotICAg
IGlmIChzdGQ6OmlzX3NpZ25lZDxUPjo6dmFsdWUpCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxpbnQzMl90Pih1LmxvYWRlZCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDMyX3Q+KHN0
YXRpY19jYXN0PHVpbnQzMl90Pih1LmxvYWRlZCkpOworICAgIGlmIChzdGQ6OmlzX3NpZ25lZDxM
b2FkZWRUeXBlPjo6dmFsdWUpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxFZmZlY3RpdmVU
eXBlPih1LmxvYWRlZCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEVmZmVjdGl2ZVR5cGU+KHN0
YXRpY19jYXN0PHR5cGVuYW1lIHN0ZDo6bWFrZV91bnNpZ25lZDxFZmZlY3RpdmVUeXBlPjo6dHlw
ZT4odS5sb2FkZWQpKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXZvaWQgdGVzdExvYWQo
QjM6Ok9wY29kZSBvcGNvZGUsIGludDMyX3QgdmFsdWUpCit0ZW1wbGF0ZTw+CitmbG9hdCBtb2Rl
bExvYWQ8ZmxvYXQsIGZsb2F0PihmbG9hdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWU7IH0KKwordGVt
cGxhdGU8PgorZG91YmxlIG1vZGVsTG9hZDxkb3VibGUsIGRvdWJsZT4oZG91YmxlIHZhbHVlKSB7
IHJldHVybiB2YWx1ZTsgfQorCit0ZW1wbGF0ZTxCMzo6VHlwZSB0eXBlLCB0eXBlbmFtZSBDVHlw
ZSwgdHlwZW5hbWUgSW5wdXRUeXBlPgordm9pZCB0ZXN0TG9hZChCMzo6T3Bjb2RlIG9wY29kZSwg
SW5wdXRUeXBlIHZhbHVlKQogewogICAgIC8vIFNpbXBsZSBsb2FkIGZyb20gYW4gYWJzb2x1dGUg
YWRkcmVzcy4KICAgICB7CkBAIC0yNjM4LDEwICszNDY0LDEwIEBAIHZvaWQgdGVzdExvYWQoQjM6
Ok9wY29kZSBvcGNvZGUsIGludDMyX3QgdmFsdWUpCiAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxD
b250cm9sVmFsdWU+KAogICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKICAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJv
Yywgb3Bjb2RlLCBJbnQzMiwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcHJvYywgb3Bjb2Rl
LCB0eXBlLCBPcmlnaW4oKSwKICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQ
dHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZ2YWx1ZSkpKTsKIAotICAgICAgICBDSEVDSyhjb21w
aWxlQW5kUnVuPGludDMyX3Q+KHByb2MpID09IG1vZGVsTG9hZDxUPih2YWx1ZSkpOworICAgICAg
ICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPENUeXBlPihwcm9jKSwgbW9kZWxMb2Fk
PENUeXBlPih2YWx1ZSkpKTsKICAgICB9CiAgICAgCiAgICAgLy8gU2ltcGxlIGxvYWQgZnJvbSBh
biBhZGRyZXNzIGluIGEgcmVnaXN0ZXIuCkBAIC0yNjUyLDEwICszNDc4LDEwIEBAIHZvaWQgdGVz
dExvYWQoQjM6Ok9wY29kZSBvcGNvZGUsIGludDMyX3QgdmFsdWUpCiAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxDb250cm9sVmFsdWU+KAogICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwKICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgICAg
ICAgICAgcHJvYywgb3Bjb2RlLCBJbnQzMiwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcHJv
Yywgb3Bjb2RlLCB0eXBlLCBPcmlnaW4oKSwKICAgICAgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCkpKTsKIAotICAgICAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsICZ2YWx1
ZSkgPT0gbW9kZWxMb2FkPFQ+KHZhbHVlKSk7CisgICAgICAgIENIRUNLKGlzSWRlbnRpY2FsKGNv
bXBpbGVBbmRSdW48Q1R5cGU+KHByb2MsICZ2YWx1ZSksIG1vZGVsTG9hZDxDVHlwZT4odmFsdWUp
KSk7CiAgICAgfQogICAgIAogICAgIC8vIFNpbXBsZSBsb2FkIGZyb20gYW4gYWRkcmVzcyBpbiBh
IHJlZ2lzdGVyLCBhdCBhbiBvZmZzZXQuCkBAIC0yNjY2LDExICszNDkyLDExIEBAIHZvaWQgdGVz
dExvYWQoQjM6Ok9wY29kZSBvcGNvZGUsIGludDMyX3QgdmFsdWUpCiAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxDb250cm9sVmFsdWU+KAogICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwKICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgICAg
ICAgICAgcHJvYywgb3Bjb2RlLCBJbnQzMiwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcHJv
Yywgb3Bjb2RlLCB0eXBlLCBPcmlnaW4oKSwKICAgICAgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCksCi0gICAgICAgICAgICAgICAgc2l6ZW9mKGludDMyX3QpKSk7CisgICAgICAgICAgICAgICAg
c2l6ZW9mKElucHV0VHlwZSkpKTsKIAotICAgICAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDMy
X3Q+KHByb2MsICZ2YWx1ZSAtIDEpID09IG1vZGVsTG9hZDxUPih2YWx1ZSkpOworICAgICAgICBD
SEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPENUeXBlPihwcm9jLCAmdmFsdWUgLSAxKSwg
bW9kZWxMb2FkPENUeXBlPih2YWx1ZSkpKTsKICAgICB9CiAKICAgICAvLyBMb2FkIGZyb20gYSBz
aW1wbGUgYmFzZS1pbmRleCB3aXRoIHZhcmlvdXMgc2NhbGVzLgpAQCAtMjY4MSw3ICszNTA3LDcg
QEAgdm9pZCB0ZXN0TG9hZChCMzo6T3Bjb2RlIG9wY29kZSwgaW50MzJfdCB2YWx1ZSkKICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCiAgICAgICAgICAgICBwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLAogICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigK
LSAgICAgICAgICAgICAgICBwcm9jLCBvcGNvZGUsIEludDMyLCBPcmlnaW4oKSwKKyAgICAgICAg
ICAgICAgICBwcm9jLCBvcGNvZGUsIHR5cGUsIE9yaWdpbigpLAogICAgICAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCiAgICAgICAgICAgICAgICAgICAgIHByb2MsIEFkZCwgT3Jp
Z2luKCksCiAgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKQEAgLTI2OTAsNyAr
MzUxNiw3IEBAIHZvaWQgdGVzdExvYWQoQjM6Ok9wY29kZSBvcGNvZGUsIGludDMyX3QgdmFsdWUp
CiAgICAgICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSksCiAgICAgICAgICAgICAg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
bG9nU2NhbGUpKSkpKTsKIAotICAgICAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDMyX3Q+KHBy
b2MsICZ2YWx1ZSAtIDIsIChzaXplb2YoaW50MzJfdCkgKiAyKSA+PiBsb2dTY2FsZSkgPT0gbW9k
ZWxMb2FkPFQ+KHZhbHVlKSk7CisgICAgICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRS
dW48Q1R5cGU+KHByb2MsICZ2YWx1ZSAtIDIsIChzaXplb2YoSW5wdXRUeXBlKSAqIDIpID4+IGxv
Z1NjYWxlKSwgbW9kZWxMb2FkPENUeXBlPih2YWx1ZSkpKTsKICAgICB9CiAKICAgICAvLyBMb2Fk
IGZyb20gYSBzaW1wbGUgYmFzZS1pbmRleCB3aXRoIHZhcmlvdXMgc2NhbGVzLCBidXQgY29tbXV0
ZWQuCkBAIC0yNzAxLDcgKzM1MjcsNyBAQCB2b2lkIHRlc3RMb2FkKEIzOjpPcGNvZGUgb3Bjb2Rl
LCBpbnQzMl90IHZhbHVlKQogICAgICAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigK
ICAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCiAgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIG9wY29kZSwgSW50
MzIsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHByb2MsIG9wY29kZSwgdHlwZSwgT3JpZ2lu
KCksCiAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKICAgICAgICAgICAg
ICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKICAgICAgICAgICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKQEAgLTI3MTAsNyArMzUzNiw2MyBAQCB2b2lkIHRlc3RMb2FkKEIz
OjpPcGNvZGUgb3Bjb2RlLCBpbnQzMl90IHZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGxvZ1NjYWxlKSks
CiAgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpKTsKIAotICAgICAgICBDSEVD
Syhjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsICZ2YWx1ZSAtIDIsIChzaXplb2YoaW50MzJf
dCkgKiAyKSA+PiBsb2dTY2FsZSkgPT0gbW9kZWxMb2FkPFQ+KHZhbHVlKSk7CisgICAgICAgIENI
RUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48Q1R5cGU+KHByb2MsICZ2YWx1ZSAtIDIsIChz
aXplb2YoSW5wdXRUeXBlKSAqIDIpID4+IGxvZ1NjYWxlKSwgbW9kZWxMb2FkPENUeXBlPih2YWx1
ZSkpKTsKKyAgICB9Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit2b2lkIHRlc3RMb2FkKEIz
OjpPcGNvZGUgb3Bjb2RlLCBpbnQzMl90IHZhbHVlKQoreworICAgIHJldHVybiB0ZXN0TG9hZDxJ
bnQzMiwgVD4ob3Bjb2RlLCB2YWx1ZSk7Cit9CisKK3RlbXBsYXRlPEIzOjpUeXBlIHR5cGUsIHR5
cGVuYW1lIFQ+Cit2b2lkIHRlc3RMb2FkKFQgdmFsdWUpCit7CisgICAgcmV0dXJuIHRlc3RMb2Fk
PHR5cGUsIFQ+KExvYWQsIHZhbHVlKTsKK30KKwordm9pZCB0ZXN0U3RvcmVGbG9hdChkb3VibGUg
aW5wdXQpCit7CisgICAgLy8gU2ltcGxlIHN0b3JlIGZyb20gYW4gYWRkcmVzcyBpbiBhIHJlZ2lz
dGVyLgorICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJn
dW1lbnRGUFIwKTsKKyAgICAgICAgVmFsdWUqIGFyZ3VtZW50QXNGbG9hdCA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwgT3JpZ2luKCksIGFyZ3VtZW50KTsKKwor
ICAgICAgICBWYWx1ZSogZGVzdGluYXRpb25BZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAg
ICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIFN0b3JlLCBPcmlnaW4oKSwg
YXJndW1lbnRBc0Zsb2F0LCBkZXN0aW5hdGlvbkFkZHJlc3MpOworCisgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJvb3QtPmFwcGVu
ZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CisKKyAgICAgICAgZmxvYXQg
b3V0cHV0ID0gMC47CisgICAgICAgIENIRUNLKCFjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2Ms
IGlucHV0LCAmb3V0cHV0KSk7CisgICAgICAgIENIRUNLKGlzSWRlbnRpY2FsKHN0YXRpY19jYXN0
PGZsb2F0PihpbnB1dCksIG91dHB1dCkpOworICAgIH0KKworICAgIC8vIFNpbXBsZSBpbmRleGVk
IHN0b3JlLgorICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIFZhbHVlKiBhcmd1bWVudCA9IHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6
YXJndW1lbnRGUFIwKTsKKyAgICAgICAgVmFsdWUqIGFyZ3VtZW50QXNGbG9hdCA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwgT3JpZ2luKCksIGFyZ3VtZW50KTsK
KworICAgICAgICBWYWx1ZSogZGVzdGluYXRpb25CYXNlQWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KTsKKyAgICAgICAgVmFsdWUqIGluZGV4ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICBWYWx1
ZSogc2NhbGVkSW5kZXggPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJv
YywgU2hsLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIGluZGV4LAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDIpKTsKKyAgICAgICAgVmFs
dWUqIGRlc3RpbmF0aW9uQWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRk
LCBPcmlnaW4oKSwgc2NhbGVkSW5kZXgsIGRlc3RpbmF0aW9uQmFzZUFkZHJlc3MpOworCisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgU3RvcmUsIE9yaWdpbigpLCBh
cmd1bWVudEFzRmxvYXQsIGRlc3RpbmF0aW9uQWRkcmVzcyk7CisKKyAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcm9vdC0+YXBwZW5k
TmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKKworICAgICAgICBmbG9hdCBv
dXRwdXQgPSAwLjsKKyAgICAgICAgQ0hFQ0soIWNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywg
aW5wdXQsICZvdXRwdXQgLSAxLCAxKSk7CisgICAgICAgIENIRUNLKGlzSWRlbnRpY2FsKHN0YXRp
Y19jYXN0PGZsb2F0PihpbnB1dCksIG91dHB1dCkpOwogICAgIH0KIH0KIApAQCAtNDk3MSw2ICs1
ODUzLDE3IEBAIHZvaWQgdGVzdFJldHVybkRvdWJsZShkb3VibGUgdmFsdWUpCiAgICAgQ0hFQ0so
aXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MpLCB2YWx1ZSkpOwogfQogCit2
b2lkIHRlc3RSZXR1cm5GbG9hdChmbG9hdCB2YWx1ZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsK
KyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIHJvb3QtPmFwcGVu
ZE5ldzxDb250cm9sVmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAg
ICAgICByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdmFs
dWUpKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZmxvYXQ+KHByb2Mp
LCB2YWx1ZSkpOworfQorCiBkb3VibGUgc2ltcGxlRnVuY3Rpb25Eb3VibGUoZG91YmxlIGEsIGRv
dWJsZSBiKQogewogICAgIHJldHVybiBhICsgYjsKQEAgLTQ5OTEsNiArNTg4NCwzMiBAQCB2b2lk
IHRlc3RDYWxsU2ltcGxlRG91YmxlKGRvdWJsZSBhLCBkb3VibGUgYikKICAgICBDSEVDSyhjb21w
aWxlQW5kUnVuPGRvdWJsZT4ocHJvYywgYSwgYikgPT0gYSArIGIpOwogfQogCitmbG9hdCBzaW1w
bGVGdW5jdGlvbkZsb2F0KGZsb2F0IGEsIGZsb2F0IGIpCit7CisgICAgcmV0dXJuIGEgKyBiOwor
fQorCit2b2lkIHRlc3RDYWxsU2ltcGxlRmxvYXQoZmxvYXQgYSwgZmxvYXQgYikKK3sKKyAgICBQ
cm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwor
ICAgIFZhbHVlKiBhcmd1bWVudDFpbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
VHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBh
cmd1bWVudDJpbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdp
bigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlMSA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1
bWVudDFpbnQzMik7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUyID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MmludDMyKTsKKyAgICBy
b290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmln
aW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KAorICAgICAgICAgICAg
cHJvYywgRmxvYXQsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0
UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBiaXR3aXNlX2Nhc3Q8dm9pZCo+KHNpbXBsZUZ1bmN0
aW9uRmxvYXQpKSwKKyAgICAgICAgICAgIGZsb2F0VmFsdWUxLAorICAgICAgICAgICAgZmxvYXRW
YWx1ZTIpKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZmxvYXQ+KHBy
b2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGIpKSwg
YSArIGIpKTsKK30KKwogZG91YmxlIGZ1bmN0aW9uV2l0aEhlbGxhRG91YmxlQXJndW1lbnRzKGRv
dWJsZSBhLCBkb3VibGUgYiwgZG91YmxlIGMsIGRvdWJsZSBkLCBkb3VibGUgZSwgZG91YmxlIGYs
IGRvdWJsZSBnLCBkb3VibGUgaCwgZG91YmxlIGksIGRvdWJsZSBqLCBkb3VibGUgaywgZG91Ymxl
IGwsIGRvdWJsZSBtLCBkb3VibGUgbiwgZG91YmxlIG8sIGRvdWJsZSBwLCBkb3VibGUgcSwgZG91
YmxlIHIsIGRvdWJsZSBzLCBkb3VibGUgdCwgZG91YmxlIHUsIGRvdWJsZSB2LCBkb3VibGUgdywg
ZG91YmxlIHgsIGRvdWJsZSB5LCBkb3VibGUgeikKIHsKICAgICByZXR1cm4gYSAqIHBvdygyLCAw
KSArIGIgKiBwb3coMiwgMSkgKyBjICogcG93KDIsIDIpICsgZCAqIHBvdygyLCAzKSArIGUgKiBw
b3coMiwgNCkgKyBmICogcG93KDIsIDUpICsgZyAqIHBvdygyLCA2KSArIGggKiBwb3coMiwgNykg
KyBpICogcG93KDIsIDgpICsgaiAqIHBvdygyLCA5KSArIGsgKiBwb3coMiwgMTApICsgbCAqIHBv
dygyLCAxMSkgKyBtICogcG93KDIsIDEyKSArIG4gKiBwb3coMiwgMTMpICsgbyAqIHBvdygyLCAx
NCkgKyBwICogcG93KDIsIDE1KSArIHEgKiBwb3coMiwgMTYpICsgciAqIHBvdygyLCAxNykgKyBz
ICogcG93KDIsIDE4KSArIHQgKiBwb3coMiwgMTkpICsgdSAqIHBvdygyLCAyMCkgKyB2ICogcG93
KDIsIDIxKSArIHcgKiBwb3coMiwgMjIpICsgeCAqIHBvdygyLCAyMykgKyB5ICogcG93KDIsIDI0
KSArIHogKiBwb3coMiwgMjUpOwpAQCAtNTAxNSw2ICs1OTM0LDMwIEBAIHZvaWQgdGVzdENhbGxG
dW5jdGlvbldpdGhIZWxsYURvdWJsZUFyZ3VtZW50cygpCiAgICAgQ0hFQ0soY29tcGlsZUFuZFJ1
bjxkb3VibGU+KHByb2MpID09IGZ1bmN0aW9uV2l0aEhlbGxhRG91YmxlQXJndW1lbnRzKDEsIDIs
IDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxNywgMTgs
IDE5LCAyMCwgMjEsIDIyLCAyMywgMjQsIDI1LCAyNikpOwogfQogCitmbG9hdCBmdW5jdGlvbldp
dGhIZWxsYUZsb2F0QXJndW1lbnRzKGZsb2F0IGEsIGZsb2F0IGIsIGZsb2F0IGMsIGZsb2F0IGQs
IGZsb2F0IGUsIGZsb2F0IGYsIGZsb2F0IGcsIGZsb2F0IGgsIGZsb2F0IGksIGZsb2F0IGosIGZs
b2F0IGssIGZsb2F0IGwsIGZsb2F0IG0sIGZsb2F0IG4sIGZsb2F0IG8sIGZsb2F0IHAsIGZsb2F0
IHEsIGZsb2F0IHIsIGZsb2F0IHMsIGZsb2F0IHQsIGZsb2F0IHUsIGZsb2F0IHYsIGZsb2F0IHcs
IGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopCit7CisgICAgcmV0dXJuIGEgKiBwb3coMiwgMCkg
KyBiICogcG93KDIsIDEpICsgYyAqIHBvdygyLCAyKSArIGQgKiBwb3coMiwgMykgKyBlICogcG93
KDIsIDQpICsgZiAqIHBvdygyLCA1KSArIGcgKiBwb3coMiwgNikgKyBoICogcG93KDIsIDcpICsg
aSAqIHBvdygyLCA4KSArIGogKiBwb3coMiwgOSkgKyBrICogcG93KDIsIDEwKSArIGwgKiBwb3co
MiwgMTEpICsgbSAqIHBvdygyLCAxMikgKyBuICogcG93KDIsIDEzKSArIG8gKiBwb3coMiwgMTQp
ICsgcCAqIHBvdygyLCAxNSkgKyBxICogcG93KDIsIDE2KSArIHIgKiBwb3coMiwgMTcpICsgcyAq
IHBvdygyLCAxOCkgKyB0ICogcG93KDIsIDE5KSArIHUgKiBwb3coMiwgMjApICsgdiAqIHBvdygy
LCAyMSkgKyB3ICogcG93KDIsIDIyKSArIHggKiBwb3coMiwgMjMpICsgeSAqIHBvdygyLCAyNCkg
KyB6ICogcG93KDIsIDI1KTsKK30KKwordm9pZCB0ZXN0Q2FsbEZ1bmN0aW9uV2l0aEhlbGxhRmxv
YXRBcmd1bWVudHMoKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICBWZWN0b3I8VmFsdWUqPiBhcmdzOworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCAyNjsgKytpKQorICAgICAgICBhcmdzLmFwcGVuZChyb290
LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgaSArIDEpKTsKKwor
ICAgIENDYWxsVmFsdWUqIGNhbGwgPSByb290LT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4oCisgICAg
ICAgIHByb2MsIEZsb2F0LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0
UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBiaXR3aXNlX2Nhc3Q8dm9pZCo+KGZ1bmN0aW9uV2l0
aEhlbGxhRmxvYXRBcmd1bWVudHMpKSk7CisgICAgY2FsbC0+Y2hpbGRyZW4oKS5hcHBlbmRWZWN0
b3IoYXJncyk7CisgICAgCisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwgY2FsbCk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGZsb2F0
Pihwcm9jKSA9PSBmdW5jdGlvbldpdGhIZWxsYUZsb2F0QXJndW1lbnRzKDEsIDIsIDMsIDQsIDUs
IDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxNywgMTgsIDE5LCAyMCwg
MjEsIDIyLCAyMywgMjQsIDI1LCAyNikpOworfQorCiB2b2lkIHRlc3RDaGlsbERpdihpbnQgbnVt
LCBpbnQgZGVuLCBpbnQgcmVzKQogewogICAgIC8vIFRlc3Qgbm9uLWNvbnN0YW50LgpAQCAtNTM2
Nyw2ICs2MzEwLDc4IEBAIHZvaWQgdGVzdFNlbGVjdENvbXBhcmVEb3VibGUoKQogICAgIENIRUNL
KGludm9rZTxpbnRwdHJfdD4oKmNvZGUsIDQyLjUyLCA0Mi41MiwgNTI0OTc4MjQ1LCAzNTIpID09
IDM1Mik7CiB9CiAKK3RlbXBsYXRlPEIzOjpPcGNvZGUgb3Bjb2RlPgordm9pZCB0ZXN0U2VsZWN0
Q29tcGFyZUZsb2F0KGZsb2F0IGEsIGZsb2F0IGIsIGJvb2wgKCpvcGVyYXRpb24pKGZsb2F0LCBm
bG9hdCkpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQxaW50MzIgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
KTsKKyAgICBWYWx1ZSogYXJndW1lbnQyaW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICBWYWx1
ZSogZmxvYXRWYWx1ZTEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0
LCBPcmlnaW4oKSwgYXJndW1lbnQxaW50MzIpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlMiA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVu
dDJpbnQzMik7CisKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAg
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigK
KyAgICAgICAgICAgIHByb2MsIFNlbGVjdCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIG9wY29kZSwgT3JpZ2luKCks
CisgICAgICAgICAgICAgICAgZmxvYXRWYWx1ZTEsCisgICAgICAgICAgICAgICAgZmxvYXRWYWx1
ZTIpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpLAorICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjMpKSk7CisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihw
cm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihiKSwg
NDIsIC01KSwgb3BlcmF0aW9uKGEsIGIpID8gNDIgOiAtNSkpOworfQorCit2b2lkIHRlc3RTZWxl
Y3RDb21wYXJlRmxvYXQoZmxvYXQgYSwgZmxvYXQgYikKK3sKKyAgICB0ZXN0U2VsZWN0Q29tcGFy
ZUZsb2F0PEVxdWFsPihhLCBiLCBbXShmbG9hdCBhLCBmbG9hdCBiKSAtPiBib29sIHsgcmV0dXJu
IGEgPT0gYjsgfSk7CisgICAgdGVzdFNlbGVjdENvbXBhcmVGbG9hdDxOb3RFcXVhbD4oYSwgYiwg
W10oZmxvYXQgYSwgZmxvYXQgYikgLT4gYm9vbCB7IHJldHVybiBhICE9IGI7IH0pOworICAgIHRl
c3RTZWxlY3RDb21wYXJlRmxvYXQ8TGVzc1RoYW4+KGEsIGIsIFtdKGZsb2F0IGEsIGZsb2F0IGIp
IC0+IGJvb2wgeyByZXR1cm4gYSA8IGI7IH0pOworICAgIHRlc3RTZWxlY3RDb21wYXJlRmxvYXQ8
R3JlYXRlclRoYW4+KGEsIGIsIFtdKGZsb2F0IGEsIGZsb2F0IGIpIC0+IGJvb2wgeyByZXR1cm4g
YSA+IGI7IH0pOworICAgIHRlc3RTZWxlY3RDb21wYXJlRmxvYXQ8TGVzc0VxdWFsPihhLCBiLCBb
XShmbG9hdCBhLCBmbG9hdCBiKSAtPiBib29sIHsgcmV0dXJuIGEgPD0gYjsgfSk7CisgICAgdGVz
dFNlbGVjdENvbXBhcmVGbG9hdDxHcmVhdGVyRXF1YWw+KGEsIGIsIFtdKGZsb2F0IGEsIGZsb2F0
IGIpIC0+IGJvb2wgeyByZXR1cm4gYSA+PSBiOyB9KTsKK30KKwordGVtcGxhdGU8QjM6Ok9wY29k
ZSBvcGNvZGU+Cit2b2lkIHRlc3RTZWxlY3RDb21wYXJlRmxvYXRUb0RvdWJsZShmbG9hdCBhLCBm
bG9hdCBiLCBib29sICgqb3BlcmF0aW9uKShmbG9hdCwgZmxvYXQpKQoreworICAgIFByb2NlZHVy
ZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFs
dWUqIGFyZ3VtZW50MWludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywg
T3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGFyZ3VtZW50
MmludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUxID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MWlu
dDMyKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1ZTIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQyaW50MzIpOworICAgIFZhbHVlKiBk
b3VibGVWYWx1ZTEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUs
IE9yaWdpbigpLCBmbG9hdFZhbHVlMSk7CisgICAgVmFsdWUqIGRvdWJsZVZhbHVlMiA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGZsb2F0VmFs
dWUyKTsKKworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAorICAgICAgICBwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICAgICAgcHJvYywgU2VsZWN0LCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgb3Bjb2RlLCBPcmlnaW4oKSwKKyAg
ICAgICAgICAgICAgICBkb3VibGVWYWx1ZTEsCisgICAgICAgICAgICAgICAgZG91YmxlVmFsdWUy
KSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIzKSkpOworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJv
YywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYiksIDQy
LCAtNSksIG9wZXJhdGlvbihhLCBiKSA/IDQyIDogLTUpKTsKK30KKwordm9pZCB0ZXN0U2VsZWN0
Q29tcGFyZUZsb2F0VG9Eb3VibGUoZmxvYXQgYSwgZmxvYXQgYikKK3sKKyAgICB0ZXN0U2VsZWN0
Q29tcGFyZUZsb2F0VG9Eb3VibGU8RXF1YWw+KGEsIGIsIFtdKGZsb2F0IGEsIGZsb2F0IGIpIC0+
IGJvb2wgeyByZXR1cm4gYSA9PSBiOyB9KTsKKyAgICB0ZXN0U2VsZWN0Q29tcGFyZUZsb2F0VG9E
b3VibGU8Tm90RXF1YWw+KGEsIGIsIFtdKGZsb2F0IGEsIGZsb2F0IGIpIC0+IGJvb2wgeyByZXR1
cm4gYSAhPSBiOyB9KTsKKyAgICB0ZXN0U2VsZWN0Q29tcGFyZUZsb2F0VG9Eb3VibGU8TGVzc1Ro
YW4+KGEsIGIsIFtdKGZsb2F0IGEsIGZsb2F0IGIpIC0+IGJvb2wgeyByZXR1cm4gYSA8IGI7IH0p
OworICAgIHRlc3RTZWxlY3RDb21wYXJlRmxvYXRUb0RvdWJsZTxHcmVhdGVyVGhhbj4oYSwgYiwg
W10oZmxvYXQgYSwgZmxvYXQgYikgLT4gYm9vbCB7IHJldHVybiBhID4gYjsgfSk7CisgICAgdGVz
dFNlbGVjdENvbXBhcmVGbG9hdFRvRG91YmxlPExlc3NFcXVhbD4oYSwgYiwgW10oZmxvYXQgYSwg
ZmxvYXQgYikgLT4gYm9vbCB7IHJldHVybiBhIDw9IGI7IH0pOworICAgIHRlc3RTZWxlY3RDb21w
YXJlRmxvYXRUb0RvdWJsZTxHcmVhdGVyRXF1YWw+KGEsIGIsIFtdKGZsb2F0IGEsIGZsb2F0IGIp
IC0+IGJvb2wgeyByZXR1cm4gYSA+PSBiOyB9KTsKK30KKwogdm9pZCB0ZXN0U2VsZWN0RG91Ymxl
KCkKIHsKICAgICBQcm9jZWR1cmUgcHJvYzsKQEAgLTU0MzEsNiArNjQ0Niw2MiBAQCB2b2lkIHRl
c3RTZWxlY3REb3VibGVDb21wYXJlRG91YmxlKCkKICAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigq
Y29kZSwgNDIuNTIsIDQyLjUyLCA1MjQ5NzgyNDUuOSwgMzUyLjApID09IDM1Mi4wKTsKIH0KIAor
dm9pZCB0ZXN0U2VsZWN0RG91YmxlQ29tcGFyZUZsb2F0KGZsb2F0IGEsIGZsb2F0IGIpCit7Cisg
ICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKyAgICBWYWx1ZSogYXJndW1lbnQxaW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1
ZSogYXJndW1lbnQyaW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBP
cmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1
ZTEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwg
YXJndW1lbnQxaW50MzIpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlMiA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDJpbnQzMik7CisK
KyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAg
IHByb2MsIFNlbGVjdCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KAorICAgICAgICAgICAgICAgIHByb2MsIExlc3NUaGFuLCBPcmlnaW4oKSwKKyAgICAgICAg
ICAgICAgICBmbG9hdFZhbHVlMSwKKyAgICAgICAgICAgICAgICBmbG9hdFZhbHVlMiksCisgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEZQUkluZm86OmFyZ3VtZW50RlBSMCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMSkpKTsK
KworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBiaXR3
aXNlX2Nhc3Q8aW50MzJfdD4oYSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihiKSwgNDIuMSwgLU1f
UEkpLCBhIDwgYiA/IDQyLjEgOiAtTV9QSSkpOworfQorCit2b2lkIHRlc3RTZWxlY3RGbG9hdENv
bXBhcmVGbG9hdChmbG9hdCBhLCBmbG9hdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50
MWludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGFyZ3VtZW50MmludDMyID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIxKSk7CisgICAgVmFsdWUqIGFyZ3VtZW50M2ludDMyID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKSk7
CisgICAgVmFsdWUqIGFyZ3VtZW50NGludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIzKSk7CisgICAgVmFsdWUq
IGZsb2F0VmFsdWUxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwg
T3JpZ2luKCksIGFyZ3VtZW50MWludDMyKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1ZTIgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQy
aW50MzIpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlMyA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDNpbnQzMik7CisgICAgVmFsdWUq
IGZsb2F0VmFsdWU0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwg
T3JpZ2luKCksIGFyZ3VtZW50NGludDMyKTsKKworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9s
VmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgU2VsZWN0LCBPcmlnaW4oKSwKKyAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywg
TGVzc1RoYW4sIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIGZsb2F0VmFsdWUxLAorICAgICAg
ICAgICAgICAgIGZsb2F0VmFsdWUyKSwKKyAgICAgICAgICAgIGZsb2F0VmFsdWUzLAorICAgICAg
ICAgICAgZmxvYXRWYWx1ZTQpKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRS
dW48ZmxvYXQ+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSwgYml0d2lzZV9jYXN0PGlu
dDMyX3Q+KGIpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oMS4xZiksIGJpdHdpc2VfY2FzdDxpbnQz
Ml90PigtNDIuZikpLCBhIDwgYiA/IDEuMWYgOiAtNDIuZikpOworfQorCiB2b2lkIHRlc3RTZWxl
Y3RGb2xkKGludHB0cl90IHZhbHVlKQogewogICAgIFByb2NlZHVyZSBwcm9jOwpAQCAtNTQ4Nyw0
NyArNjU1OCw0NyBAQCBkb3VibGUgbmVnYXRpdmVaZXJvKCkKICAgICByZXR1cm4gLXplcm8oKTsK
IH0KIAotLy8gU29tZSBjb252ZW5pZW5jZSBmdW5jdGlvbnMgZm9yIGJyZXZpdHkgb2YgdGhlIHRl
c3Qgb3V0cHV0LgotZG91YmxlIHBvc0luZmluaXR5KCkKLXsKLSAgICByZXR1cm4gc3RkOjpudW1l
cmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpOwotfQotCi1kb3VibGUgbmVnSW5maW5pdHko
KQotewotICAgIHJldHVybiAtc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgp
OwotfQotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgogc3RydWN0IE9wZXJhbmQgewogICAgIGNv
bnN0IGNoYXIqIG5hbWU7CiAgICAgVHlwZSB2YWx1ZTsKIH07CiAKLXR5cGVkZWYgT3BlcmFuZDxk
b3VibGU+IERvdWJsZU9wZXJhbmQ7CiB0eXBlZGVmIE9wZXJhbmQ8aW50NjRfdD4gSW50NjRPcGVy
YW5kOwogdHlwZWRlZiBPcGVyYW5kPGludDMyX3Q+IEludDMyT3BlcmFuZDsKIAotc3RhdGljIGNv
bnN0IHN0ZDo6YXJyYXk8RG91YmxlT3BlcmFuZCwgOT4mIGRvdWJsZU9wZXJhbmRzKCkKLXsKLSAg
ICBzdGF0aWMgY29uc3Qgc3RkOjphcnJheTxEb3VibGVPcGVyYW5kLCA5PiBvcGVyYW5kcyA9IHt7
Ci0gICAgICAgIHsgIk1fUEkiLCBNX1BJIH0sCi0gICAgICAgIHsgIi1NX1BJIiwgLU1fUEkgfSwK
LSAgICAgICAgeyAiMS4iLCAxIH0sCi0gICAgICAgIHsgIi0xLiIsIC0xIH0sCi0gICAgICAgIHsg
IjAiLCAwIH0sCi0gICAgICAgIHsgIm5lZ2F0aXZlWmVybygpIiwgbmVnYXRpdmVaZXJvKCkgfSwK
LSAgICAgICAgeyAicG9zSW5maW5pdHkoKSIsIHBvc0luZmluaXR5KCkgfSwKLSAgICAgICAgeyAi
bmVnSW5maW5pdHkoKSIsIG5lZ0luZmluaXR5KCkgfSwKLSAgICAgICAgeyAiUE5hTiIsIFBOYU4g
fSwKLSAgICB9fTsKK3RlbXBsYXRlPHR5cGVuYW1lIEZsb2F0VHlwZT4KK3ZvaWQgcG9wdWxhdGVX
aXRoSW50ZXJlc3RpbmdWYWx1ZXMoVmVjdG9yPE9wZXJhbmQ8RmxvYXRUeXBlPj4mIG9wZXJhbmRz
KQoreworICAgIG9wZXJhbmRzLmFwcGVuZCh7ICIwLiIsIHN0YXRpY19jYXN0PEZsb2F0VHlwZT4o
MC4pIH0pOworICAgIG9wZXJhbmRzLmFwcGVuZCh7ICItMC4iLCBzdGF0aWNfY2FzdDxGbG9hdFR5
cGU+KC0wLikgfSk7CisgICAgb3BlcmFuZHMuYXBwZW5kKHsgIjEuIiwgc3RhdGljX2Nhc3Q8Rmxv
YXRUeXBlPigwLikgfSk7CisgICAgb3BlcmFuZHMuYXBwZW5kKHsgIi0xLiIsIHN0YXRpY19jYXN0
PEZsb2F0VHlwZT4oLTAuKSB9KTsKKyAgICBvcGVyYW5kcy5hcHBlbmQoeyAiMi4iLCBzdGF0aWNf
Y2FzdDxGbG9hdFR5cGU+KDIuKSB9KTsKKyAgICBvcGVyYW5kcy5hcHBlbmQoeyAiLTIuIiwgc3Rh
dGljX2Nhc3Q8RmxvYXRUeXBlPigyLikgfSk7CisgICAgb3BlcmFuZHMuYXBwZW5kKHsgIk1fUEki
LCBzdGF0aWNfY2FzdDxGbG9hdFR5cGU+KE1fUEkpIH0pOworICAgIG9wZXJhbmRzLmFwcGVuZCh7
ICItTV9QSSIsIHN0YXRpY19jYXN0PEZsb2F0VHlwZT4oLU1fUEkpIH0pOworICAgIG9wZXJhbmRz
LmFwcGVuZCh7ICJtaW4iLCBzdGQ6Om51bWVyaWNfbGltaXRzPEZsb2F0VHlwZT46Om1pbigpIH0p
OworICAgIG9wZXJhbmRzLmFwcGVuZCh7ICJtYXgiLCBzdGQ6Om51bWVyaWNfbGltaXRzPEZsb2F0
VHlwZT46Om1heCgpIH0pOworICAgIG9wZXJhbmRzLmFwcGVuZCh7ICJsb3dlc3QiLCBzdGQ6Om51
bWVyaWNfbGltaXRzPEZsb2F0VHlwZT46Omxvd2VzdCgpIH0pOworICAgIG9wZXJhbmRzLmFwcGVu
ZCh7ICJlcHNpbG9uIiwgc3RkOjpudW1lcmljX2xpbWl0czxGbG9hdFR5cGU+OjplcHNpbG9uKCkg
fSk7CisgICAgb3BlcmFuZHMuYXBwZW5kKHsgImluZmluaXRpIiwgc3RkOjpudW1lcmljX2xpbWl0
czxGbG9hdFR5cGU+OjppbmZpbml0eSgpIH0pOworICAgIG9wZXJhbmRzLmFwcGVuZCh7ICItaW5m
aW5pdGkiLCAtIHN0ZDo6bnVtZXJpY19saW1pdHM8RmxvYXRUeXBlPjo6aW5maW5pdHkoKSB9KTsK
KyAgICBvcGVyYW5kcy5hcHBlbmQoeyAiUE5hTiIsIHN0YXRpY19jYXN0PEZsb2F0VHlwZT4oUE5h
TikgfSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEZsb2F0VHlwZT4KK1ZlY3RvcjxPcGVyYW5k
PEZsb2F0VHlwZT4+IGZsb2F0aW5nUG9pbnRPcGVyYW5kcygpCit7CisgICAgVmVjdG9yPE9wZXJh
bmQ8RmxvYXRUeXBlPj4gb3BlcmFuZHM7CisgICAgcG9wdWxhdGVXaXRoSW50ZXJlc3RpbmdWYWx1
ZXMob3BlcmFuZHMpOwogICAgIHJldHVybiBvcGVyYW5kczsKIH07CiAKIHN0YXRpYyBWZWN0b3I8
SW50NjRPcGVyYW5kPiBpbnQ2NE9wZXJhbmRzKCkKIHsKICAgICBWZWN0b3I8SW50NjRPcGVyYW5k
PiBvcGVyYW5kczsKLSAgICBmb3IgKERvdWJsZU9wZXJhbmQgZG91YmxlT3BlcmFuZCA6IGRvdWJs
ZU9wZXJhbmRzKCkpCisgICAgZm9yIChjb25zdCBhdXRvJiBkb3VibGVPcGVyYW5kIDogZmxvYXRp
bmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSkKICAgICAgICAgb3BlcmFuZHMuYXBwZW5kKHsgZG91
YmxlT3BlcmFuZC5uYW1lLCBiaXR3aXNlX2Nhc3Q8aW50NjRfdD4oZG91YmxlT3BlcmFuZC52YWx1
ZSkgfSk7CiAgICAgb3BlcmFuZHMuYXBwZW5kKHsgIjEiLCAxIH0pOwogICAgIG9wZXJhbmRzLmFw
cGVuZCh7ICItMSIsIC0xIH0pOwpAQCAtNTY0Niw2ICs2NzE3LDE0IEBAIHZvaWQgcnVuKGNvbnN0
IGNoYXIqIGZpbHRlcikKICAgICBSVU4odGVzdEFkZEltbXNEb3VibGUoMCwgMCkpOwogICAgIFJV
Tih0ZXN0QWRkSW1tc0RvdWJsZSgwLCBuZWdhdGl2ZVplcm8oKSkpOwogICAgIFJVTih0ZXN0QWRk
SW1tc0RvdWJsZShuZWdhdGl2ZVplcm8oKSwgbmVnYXRpdmVaZXJvKCkpKTsKKyAgICBSVU5fVU5B
UlkodGVzdEFkZEFyZ0Zsb2F0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAg
IFJVTl9CSU5BUlkodGVzdEFkZEFyZ3NGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0
PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9CSU5BUlkodGVz
dEFkZEFyZ0ltbUZsb2F0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5n
UG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0QWRkSW1tQXJnRmxv
YXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRz
PGZsb2F0PigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RBZGRJbW1zRmxvYXQsIGZsb2F0aW5nUG9p
bnRPcGVyYW5kczxmbG9hdD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAg
ICBSVU5fVU5BUlkodGVzdEFkZEFyZ0Zsb2F0V2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uLCBm
bG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9CSU5BUlkodGVzdEFkZEFy
Z3NGbG9hdFdpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lvbiwgZmxvYXRpbmdQb2ludE9wZXJhbmRz
PGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9CSU5B
UlkodGVzdEFkZEFyZ3NGbG9hdFdpdGhFZmZlY3RmdWxEb3VibGVDb252ZXJzaW9uLCBmbG9hdGlu
Z1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7
CiAKICAgICBSVU4odGVzdE11bEFyZyg1KSk7CiAgICAgUlVOKHRlc3RNdWxBZGRBcmcoNSkpOwpA
QCAtNTY4NywxMSArNjc2NiwxOSBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAg
UlVOKHRlc3RNdWxBcmdzMzIoMSwgMikpOwogICAgIFJVTih0ZXN0TXVsTG9hZFR3aWNlKCkpOwog
Ci0gICAgUlVOX1VOQVJZKHRlc3RNdWxBcmdEb3VibGUsIGRvdWJsZU9wZXJhbmRzKCkpOwotICAg
IFJVTl9CSU5BUlkodGVzdE11bEFyZ3NEb3VibGUsIGRvdWJsZU9wZXJhbmRzKCksIGRvdWJsZU9w
ZXJhbmRzKCkpOwotICAgIFJVTl9CSU5BUlkodGVzdE11bEFyZ0ltbURvdWJsZSwgZG91YmxlT3Bl
cmFuZHMoKSwgZG91YmxlT3BlcmFuZHMoKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0TXVsSW1tQXJn
RG91YmxlLCBkb3VibGVPcGVyYW5kcygpLCBkb3VibGVPcGVyYW5kcygpKTsKLSAgICBSVU5fQklO
QVJZKHRlc3RNdWxJbW1zRG91YmxlLCBkb3VibGVPcGVyYW5kcygpLCBkb3VibGVPcGVyYW5kcygp
KTsKKyAgICBSVU5fVU5BUlkodGVzdE11bEFyZ0RvdWJsZSwgZmxvYXRpbmdQb2ludE9wZXJhbmRz
PGRvdWJsZT4oKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0TXVsQXJnc0RvdWJsZSwgZmxvYXRpbmdQ
b2ludE9wZXJhbmRzPGRvdWJsZT4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7
CisgICAgUlVOX0JJTkFSWSh0ZXN0TXVsQXJnSW1tRG91YmxlLCBmbG9hdGluZ1BvaW50T3BlcmFu
ZHM8ZG91YmxlPigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKKyAgICBSVU5f
QklOQVJZKHRlc3RNdWxJbW1BcmdEb3VibGUsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+
KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworICAgIFJVTl9CSU5BUlkodGVz
dE11bEltbXNEb3VibGUsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCksIGZsb2F0aW5n
UG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0TXVsQXJnRmxvYXQs
IGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0TXVs
QXJnc0Zsb2F0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRP
cGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0TXVsQXJnSW1tRmxvYXQsIGZs
b2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0
PigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RNdWxJbW1BcmdGbG9hdCwgZmxvYXRpbmdQb2ludE9w
ZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJV
Tl9CSU5BUlkodGVzdE11bEltbXNGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0Pigp
LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0TXVs
QXJnRmxvYXRXaXRoVXNlbGVzc0RvdWJsZUNvbnZlcnNpb24sIGZsb2F0aW5nUG9pbnRPcGVyYW5k
czxmbG9hdD4oKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0TXVsQXJnc0Zsb2F0V2l0aFVzZWxlc3NE
b3VibGVDb252ZXJzaW9uLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5n
UG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0TXVsQXJnc0Zsb2F0
V2l0aEVmZmVjdGZ1bERvdWJsZUNvbnZlcnNpb24sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9h
dD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKIAogICAgIFJVTih0ZXN0RGl2
QXJnRG91YmxlKE1fUEkpKTsKICAgICBSVU4odGVzdERpdkFyZ3NEb3VibGUoTV9QSSwgMSkpOwpA
QCAtNTcxNiw2ICs2ODAzLDE0IEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRlcikKICAgICBS
VU4odGVzdERpdkltbXNEb3VibGUoMCwgMCkpOwogICAgIFJVTih0ZXN0RGl2SW1tc0RvdWJsZSgw
LCBuZWdhdGl2ZVplcm8oKSkpOwogICAgIFJVTih0ZXN0RGl2SW1tc0RvdWJsZShuZWdhdGl2ZVpl
cm8oKSwgbmVnYXRpdmVaZXJvKCkpKTsKKyAgICBSVU5fVU5BUlkodGVzdERpdkFyZ0Zsb2F0LCBm
bG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9CSU5BUlkodGVzdERpdkFy
Z3NGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3Bl
cmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9CSU5BUlkodGVzdERpdkFyZ0ltbUZsb2F0LCBmbG9h
dGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4o
KSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0RGl2SW1tQXJnRmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVy
YW5kczxmbG9hdD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5f
QklOQVJZKHRlc3REaXZJbW1zRmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwg
ZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fVU5BUlkodGVzdERpdkFy
Z0Zsb2F0V2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8
ZmxvYXQ+KCkpOworICAgIFJVTl9CSU5BUlkodGVzdERpdkFyZ3NGbG9hdFdpdGhVc2VsZXNzRG91
YmxlQ29udmVyc2lvbiwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1Bv
aW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9CSU5BUlkodGVzdERpdkFyZ3NGbG9hdFdp
dGhFZmZlY3RmdWxEb3VibGVDb252ZXJzaW9uLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+
KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CiAKICAgICBSVU4odGVzdFN1YkFy
ZygyNCkpOwogICAgIFJVTih0ZXN0U3ViQXJncygxLCAxKSk7CkBAIC01NzQ3LDExICs2ODQyLDE5
IEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRlcikKICAgICBSVU4odGVzdFN1YkltbUFyZzMy
KC0xMywgNDIpKTsKICAgICBSVU5fVU5BUlkodGVzdE5lZ1ZhbHVlU3ViT25lMzIsIGludDY0T3Bl
cmFuZHMoKSk7CiAKLSAgICBSVU5fVU5BUlkodGVzdFN1YkFyZ0RvdWJsZSwgZG91YmxlT3BlcmFu
ZHMoKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0U3ViQXJnc0RvdWJsZSwgZG91YmxlT3BlcmFuZHMo
KSwgZG91YmxlT3BlcmFuZHMoKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0U3ViQXJnSW1tRG91Ymxl
LCBkb3VibGVPcGVyYW5kcygpLCBkb3VibGVPcGVyYW5kcygpKTsKLSAgICBSVU5fQklOQVJZKHRl
c3RTdWJJbW1BcmdEb3VibGUsIGRvdWJsZU9wZXJhbmRzKCksIGRvdWJsZU9wZXJhbmRzKCkpOwot
ICAgIFJVTl9CSU5BUlkodGVzdFN1YkltbXNEb3VibGUsIGRvdWJsZU9wZXJhbmRzKCksIGRvdWJs
ZU9wZXJhbmRzKCkpOworICAgIFJVTl9VTkFSWSh0ZXN0U3ViQXJnRG91YmxlLCBmbG9hdGluZ1Bv
aW50T3BlcmFuZHM8ZG91YmxlPigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RTdWJBcmdzRG91Ymxl
LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8
ZG91YmxlPigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RTdWJBcmdJbW1Eb3VibGUsIGZsb2F0aW5n
UG9pbnRPcGVyYW5kczxkb3VibGU+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkp
OworICAgIFJVTl9CSU5BUlkodGVzdFN1YkltbUFyZ0RvdWJsZSwgZmxvYXRpbmdQb2ludE9wZXJh
bmRzPGRvdWJsZT4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7CisgICAgUlVO
X0JJTkFSWSh0ZXN0U3ViSW1tc0RvdWJsZSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4o
KSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RT
dWJBcmdGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fQklO
QVJZKHRlc3RTdWJBcmdzRmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwgZmxv
YXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RTdWJBcmdJ
bW1GbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3Bl
cmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9CSU5BUlkodGVzdFN1YkltbUFyZ0Zsb2F0LCBmbG9h
dGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4o
KSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0U3ViSW1tc0Zsb2F0LCBmbG9hdGluZ1BvaW50T3BlcmFu
ZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX1VO
QVJZKHRlc3RTdWJBcmdGbG9hdFdpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lvbiwgZmxvYXRpbmdQ
b2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RTdWJBcmdzRmxvYXRX
aXRoVXNlbGVzc0RvdWJsZUNvbnZlcnNpb24sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4o
KSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RT
dWJBcmdzRmxvYXRXaXRoRWZmZWN0ZnVsRG91YmxlQ29udmVyc2lvbiwgZmxvYXRpbmdQb2ludE9w
ZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwogCiAgICAg
UlVOKHRlc3RCaXRBbmRBcmdzKDQzLCA0MykpOwogICAgIFJVTih0ZXN0Qml0QW5kQXJncyg0Mywg
MCkpOwpAQCAtNjAzNywyMCArNzE0MCw0MyBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIp
CiAgICAgUlVOX1VOQVJZKHRlc3RDbHpBcmczMiwgaW50MzJPcGVyYW5kcygpKTsKICAgICBSVU5f
VU5BUlkodGVzdENsek1lbTMyLCBpbnQ2NE9wZXJhbmRzKCkpOwogCi0gICAgUlVOX1VOQVJZKHRl
c3RTcXJ0QXJnLCBkb3VibGVPcGVyYW5kcygpKTsKLSAgICBSVU5fVU5BUlkodGVzdFNxcnRJbW0s
IGRvdWJsZU9wZXJhbmRzKCkpOwotICAgIFJVTl9VTkFSWSh0ZXN0U3FydE1lbSwgZG91YmxlT3Bl
cmFuZHMoKSk7Ci0KLSAgICBSVU5fVU5BUlkodGVzdERvdWJsZUFyZ1RvSW50NjRCaXR3aXNlQ2Fz
dCwgZG91YmxlT3BlcmFuZHMoKSk7Ci0gICAgUlVOX1VOQVJZKHRlc3REb3VibGVJbW1Ub0ludDY0
Qml0d2lzZUNhc3QsIGRvdWJsZU9wZXJhbmRzKCkpOwotICAgIFJVTl9VTkFSWSh0ZXN0VHdvQml0
d2lzZUNhc3RPbkRvdWJsZSwgZG91YmxlT3BlcmFuZHMoKSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RC
aXR3aXNlQ2FzdE9uRG91YmxlSW5NZW1vcnksIGRvdWJsZU9wZXJhbmRzKCkpOworICAgIFJVTl9V
TkFSWSh0ZXN0U3FydEFyZywgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7CisgICAg
UlVOX1VOQVJZKHRlc3RTcXJ0SW1tLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsK
KyAgICBSVU5fVU5BUlkodGVzdFNxcnRNZW0sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+
KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0U3FydEFyZywgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZs
b2F0PigpKTsKKyAgICBSVU5fVU5BUlkodGVzdFNxcnRJbW0sIGZsb2F0aW5nUG9pbnRPcGVyYW5k
czxmbG9hdD4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RTcXJ0TWVtLCBmbG9hdGluZ1BvaW50T3Bl
cmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0U3FydEFyZ1dpdGhVc2VsZXNzRG91
YmxlQ29udmVyc2lvbiwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5f
VU5BUlkodGVzdFNxcnRBcmdXaXRoRWZmZWN0ZnVsRG91YmxlQ29udmVyc2lvbiwgZmxvYXRpbmdQ
b2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKworICAgIFJVTl9VTkFSWSh0ZXN0RG91YmxlQXJnVG9J
bnQ2NEJpdHdpc2VDYXN0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKKyAgICBS
VU5fVU5BUlkodGVzdERvdWJsZUltbVRvSW50NjRCaXR3aXNlQ2FzdCwgZmxvYXRpbmdQb2ludE9w
ZXJhbmRzPGRvdWJsZT4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RUd29CaXR3aXNlQ2FzdE9uRG91
YmxlLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKKyAgICBSVU5fVU5BUlkodGVz
dEJpdHdpc2VDYXN0T25Eb3VibGVJbk1lbW9yeSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJs
ZT4oKSk7CiAgICAgUlVOX1VOQVJZKHRlc3RJbnQ2NEJBcmdUb0RvdWJsZUJpdHdpc2VDYXN0LCBp
bnQ2NE9wZXJhbmRzKCkpOwogICAgIFJVTl9VTkFSWSh0ZXN0SW50NjRCSW1tVG9Eb3VibGVCaXR3
aXNlQ2FzdCwgaW50NjRPcGVyYW5kcygpKTsKICAgICBSVU5fVU5BUlkodGVzdFR3b0JpdHdpc2VD
YXN0T25JbnQ2NCwgaW50NjRPcGVyYW5kcygpKTsKICAgICBSVU5fVU5BUlkodGVzdEJpdHdpc2VD
YXN0T25JbnQ2NEluTWVtb3J5LCBpbnQ2NE9wZXJhbmRzKCkpOwotCi0gICAgUlVOKHRlc3RTdG9y
ZSg0NCkpOworICAgIFJVTl9VTkFSWSh0ZXN0RmxvYXRJbW1Ub0ludDMyQml0d2lzZUNhc3QsIGZs
b2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RCaXR3aXNl
Q2FzdE9uRmxvYXRJbk1lbW9yeSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAg
ICBSVU5fVU5BUlkodGVzdEludDMyQkFyZ1RvRmxvYXRCaXR3aXNlQ2FzdCwgaW50MzJPcGVyYW5k
cygpKTsKKyAgICBSVU5fVU5BUlkodGVzdEludDMyQkltbVRvRmxvYXRCaXR3aXNlQ2FzdCwgaW50
MzJPcGVyYW5kcygpKTsKKyAgICBSVU5fVU5BUlkodGVzdFR3b0JpdHdpc2VDYXN0T25JbnQzMiwg
aW50MzJPcGVyYW5kcygpKTsKKyAgICBSVU5fVU5BUlkodGVzdEJpdHdpc2VDYXN0T25JbnQzMklu
TWVtb3J5LCBpbnQzMk9wZXJhbmRzKCkpOworCisgICAgUlVOX1VOQVJZKHRlc3RDb252ZXJ0RG91
YmxlVG9GbG9hdEFyZywgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7CisgICAgUlVO
X1VOQVJZKHRlc3RDb252ZXJ0RG91YmxlVG9GbG9hdEltbSwgZmxvYXRpbmdQb2ludE9wZXJhbmRz
PGRvdWJsZT4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RDb252ZXJ0RG91YmxlVG9GbG9hdE1lbSwg
ZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RDb252
ZXJ0RmxvYXRUb0RvdWJsZUFyZywgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAg
ICBSVU5fVU5BUlkodGVzdENvbnZlcnRGbG9hdFRvRG91YmxlSW1tLCBmbG9hdGluZ1BvaW50T3Bl
cmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0Q29udmVydEZsb2F0VG9Eb3VibGVN
ZW0sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RD
b252ZXJ0RG91YmxlVG9GbG9hdFRvRG91YmxlVG9GbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRz
PGRvdWJsZT4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RTdG9yZUZsb2F0LCBmbG9hdGluZ1BvaW50
T3BlcmFuZHM8ZG91YmxlPigpKTsKKyAgICBSVU5fVU5BUlkodGVzdExvYWRGbG9hdENvbnZlcnRE
b3VibGVDb252ZXJ0RmxvYXRTdG9yZUZsb2F0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+
KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0RnJvdW5kQXJnLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8
ZG91YmxlPigpKTsKKyAgICBSVU5fVU5BUlkodGVzdEZyb3VuZE1lbSwgZmxvYXRpbmdQb2ludE9w
ZXJhbmRzPGRvdWJsZT4oKSk7CisKKyAgICBSVU4odGVzdFN0b3JlMzIoNDQpKTsKICAgICBSVU4o
dGVzdFN0b3JlQ29uc3RhbnQoNDkpKTsKICAgICBSVU4odGVzdFN0b3JlQ29uc3RhbnRQdHIoNDkp
KTsKICAgICBSVU4odGVzdFRydW5jKChzdGF0aWNfY2FzdDxpbnQ2NF90PigxKSA8PCA0MCkgKyA0
MikpOwpAQCAtNjE2NCwxNCArNzI5MCwxNyBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIp
CiAgICAgUlVOKHRlc3RDb21wYXJlKEJpdEFuZCwgNDIsIDQyKSk7CiAgICAgUlVOKHRlc3RDb21w
YXJlKEJpdEFuZCwgNDIsIDApKTsKIAotICAgIFJVTih0ZXN0TG9hZDxpbnQzMl90PihMb2FkLCA2
MCkpOwotICAgIFJVTih0ZXN0TG9hZDxpbnQzMl90PihMb2FkLCAtNjApKTsKLSAgICBSVU4odGVz
dExvYWQ8aW50MzJfdD4oTG9hZCwgMTAwMCkpOwotICAgIFJVTih0ZXN0TG9hZDxpbnQzMl90PihM
b2FkLCAtMTAwMCkpOwotICAgIFJVTih0ZXN0TG9hZDxpbnQzMl90PihMb2FkLCAxMDAwMDAwKSk7
Ci0gICAgUlVOKHRlc3RMb2FkPGludDMyX3Q+KExvYWQsIC0xMDAwMDAwKSk7Ci0gICAgUlVOKHRl
c3RMb2FkPGludDMyX3Q+KExvYWQsIDEwMDAwMDAwMDApKTsKLSAgICBSVU4odGVzdExvYWQ8aW50
MzJfdD4oTG9hZCwgLTEwMDAwMDAwMDApKTsKKyAgICBSVU4odGVzdExvYWQ8SW50MzI+KDYwKSk7
CisgICAgUlVOKHRlc3RMb2FkPEludDMyPigtNjApKTsKKyAgICBSVU4odGVzdExvYWQ8SW50MzI+
KDEwMDApKTsKKyAgICBSVU4odGVzdExvYWQ8SW50MzI+KC0xMDAwKSk7CisgICAgUlVOKHRlc3RM
b2FkPEludDMyPigxMDAwMDAwKSk7CisgICAgUlVOKHRlc3RMb2FkPEludDMyPigtMTAwMDAwMCkp
OworICAgIFJVTih0ZXN0TG9hZDxJbnQzMj4oMTAwMDAwMDAwMCkpOworICAgIFJVTih0ZXN0TG9h
ZDxJbnQzMj4oLTEwMDAwMDAwMDApKTsKKyAgICBSVU5fVU5BUlkodGVzdExvYWQ8SW50NjQ+LCBp
bnQ2NE9wZXJhbmRzKCkpOworICAgIFJVTl9VTkFSWSh0ZXN0TG9hZDxGbG9hdD4sIGZsb2F0aW5n
UG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RMb2FkPERvdWJsZT4s
IGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOwogICAgIAogICAgIFJVTih0ZXN0TG9h
ZDxpbnQ4X3Q+KExvYWQ4UywgNjApKTsKICAgICBSVU4odGVzdExvYWQ8aW50OF90PihMb2FkOFMs
IC02MCkpOwpAQCAtNjIyMiw5ICs3MzUxLDEyIEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRl
cikKICAgICBSVU4odGVzdFJldHVybkRvdWJsZSgwLjApKTsKICAgICBSVU4odGVzdFJldHVybkRv
dWJsZShuZWdhdGl2ZVplcm8oKSkpOwogICAgIFJVTih0ZXN0UmV0dXJuRG91YmxlKDQyLjUpKTsK
KyAgICBSVU5fVU5BUlkodGVzdFJldHVybkZsb2F0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8Zmxv
YXQ+KCkpOwogCiAgICAgUlVOKHRlc3RDYWxsU2ltcGxlRG91YmxlKDEsIDIpKTsKICAgICBSVU4o
dGVzdENhbGxGdW5jdGlvbldpdGhIZWxsYURvdWJsZUFyZ3VtZW50cygpKTsKKyAgICBSVU5fQklO
QVJZKHRlc3RDYWxsU2ltcGxlRmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwg
ZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU4odGVzdENhbGxGdW5jdGlv
bldpdGhIZWxsYUZsb2F0QXJndW1lbnRzKCkpOwogCiAgICAgUlVOKHRlc3RDaGlsbERpdig0LCAy
LCAyKSk7CiAgICAgUlVOKHRlc3RDaGlsbERpdigxLCAwLCAwKSk7CkBAIC02MzExLDkgKzc0NDMs
MTMgQEAgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKQogICAgIFJVTih0ZXN0QmFzaWNTZWxl
Y3QoKSk7CiAgICAgUlVOKHRlc3RTZWxlY3RUZXN0KCkpOwogICAgIFJVTih0ZXN0U2VsZWN0Q29t
cGFyZURvdWJsZSgpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RTZWxlY3RDb21wYXJlRmxvYXQsIGZs
b2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0
PigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RTZWxlY3RDb21wYXJlRmxvYXRUb0RvdWJsZSwgZmxv
YXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+
KCkpOwogICAgIFJVTih0ZXN0U2VsZWN0RG91YmxlKCkpOwogICAgIFJVTih0ZXN0U2VsZWN0RG91
YmxlVGVzdCgpKTsKICAgICBSVU4odGVzdFNlbGVjdERvdWJsZUNvbXBhcmVEb3VibGUoKSk7Cisg
ICAgUlVOX0JJTkFSWSh0ZXN0U2VsZWN0RG91YmxlQ29tcGFyZUZsb2F0LCBmbG9hdGluZ1BvaW50
T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAg
UlVOX0JJTkFSWSh0ZXN0U2VsZWN0RmxvYXRDb21wYXJlRmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVy
YW5kczxmbG9hdD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKICAgICBSVU4o
dGVzdFNlbGVjdEZvbGQoNDIpKTsKICAgICBSVU4odGVzdFNlbGVjdEZvbGQoNDMpKTsKICAgICBS
VU4odGVzdFNlbGVjdEludmVydCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQjNPdXRwdXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExCM091
dHB1dC5jcHAKaW5kZXggNTFjYTEyMTYyMjVjOTdiNmE5MjA3MzViMThkNDlhZTVkYTMwMDhkMS4u
NWVmYzY3ZGUxOWYzNjRkNzdhMjA4YWQ1Yzg4YjE0ZDA1NWQ3NjMzNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExCM091dHB1dC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExCM091dHB1dC5jcHAKQEAgLTk5LDkgKzk5LDggQEAgTFZhbHVlIE91
dHB1dDo6bG9hZDE2WmVyb0V4dDMyKFR5cGVkUG9pbnRlciBwb2ludGVyKQogCiBMVmFsdWUgT3V0
cHV0Ojpsb2FkRmxvYXRUb0RvdWJsZShUeXBlZFBvaW50ZXIgcG9pbnRlcikKIHsKLSAgICBMVmFs
dWUgbG9hZCA9IG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6TWVtb3J5VmFsdWU+KG1fcHJvYywgQjM6
OkxvYWRGbG9hdCwgQjM6OkRvdWJsZSwgb3JpZ2luKCksIHBvaW50ZXIudmFsdWUoKSk7Ci0gICAg
cG9pbnRlci5oZWFwKCkuZGVjb3JhdGVJbnN0cnVjdGlvbihsb2FkLCAqbV9oZWFwcyk7Ci0gICAg
cmV0dXJuIGxvYWQ7CisgICAgTFZhbHVlIGxvYWRlZEZsb2F0ID0gbG9hZChwb2ludGVyLCBmbG9h
dFR5cGUpOworICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2Ms
IEIzOjpGbG9hdFRvRG91YmxlLCBvcmlnaW4oKSwgbG9hZGVkRmxvYXQpOwogfQogCiB2b2lkIE91
dHB1dDo6c3RvcmUoTFZhbHVlIHZhbHVlLCBUeXBlZFBvaW50ZXIgcG9pbnRlcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQjNPdXRwdXQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQjNPdXRwdXQuaAppbmRleCAxYzQwOGE5MzhjODdhNzU3NjA1YTZk
NDQ0YmU4ZTBmYTYzYmE4OGEyLi5kYzI3ZGFjMTU5MTRiOTA1ODZjOWUzYjRhNjU3ZTAyYTQyODM1
MDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEIzT3V0cHV0LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExCM091dHB1dC5oCkBAIC0xOTgsOCAr
MTk4LDcgQEAgcHVibGljOgogICAgIExWYWx1ZSBpbnRUb1B0cihMVmFsdWUgdmFsdWUsIExUeXBl
IHR5cGUpIHsgQ1JBU0goKTsgfQogICAgIExWYWx1ZSBwdHJUb0ludChMVmFsdWUgdmFsdWUsIExU
eXBlIHR5cGUpIHsgQ1JBU0goKTsgfQogICAgIExWYWx1ZSBiaXRDYXN0KExWYWx1ZSwgTFR5cGUp
OwotCi0gICAgTFZhbHVlIGZyb3VuZChMVmFsdWUgZG91YmxlVmFsdWUpIHsgQ1JBU0goKTsgfQor
ICAgIExWYWx1ZSBmcm91bmQoTFZhbHVlIGRvdWJsZVZhbHVlKTsKIAogICAgIExWYWx1ZSBsb2Fk
KFR5cGVkUG9pbnRlciwgTFR5cGUpOwogICAgIHZvaWQgc3RvcmUoTFZhbHVlLCBUeXBlZFBvaW50
ZXIpOwpAQCAtNDg3LDYgKzQ4NiwxMiBAQCBpbmxpbmUgTFZhbHVlIE91dHB1dDo6Yml0Q2FzdChM
VmFsdWUgdmFsdWUsIExUeXBlIHR5cGUpCiAgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxC
Mzo6VmFsdWU+KG1fcHJvYywgQjM6OkJpdHdpc2VDYXN0LCBvcmlnaW4oKSwgdmFsdWUpOwogfQog
CitpbmxpbmUgTFZhbHVlIE91dHB1dDo6ZnJvdW5kKExWYWx1ZSBkb3VibGVWYWx1ZSkKK3sKKyAg
ICBMVmFsdWUgYXNGbG9hdCA9IG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywg
QjM6OkRvdWJsZVRvRmxvYXQsIG9yaWdpbigpLCBkb3VibGVWYWx1ZSk7CisgICAgcmV0dXJuIG1f
YmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkZsb2F0VG9Eb3VibGUsIG9y
aWdpbigpLCBhc0Zsb2F0KTsKK30KKwogI2lmIENPTVBJTEVSKENMQU5HKQogI3ByYWdtYSBjbGFu
ZyBkaWFnbm9zdGljIHBvcAogI2VuZGlmIC8vIENPTVBJTEVSKENMQU5HKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21tb25WYWx1ZXMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDb21tb25WYWx1ZXMuY3BwCmluZGV4IDg2MjViOGRlNDA4MDRl
YmQ4MGM0ZGZkMWU1NjY3NDZhMTAzMjJiMWYuLjA2MTY5NDQ0M2M1NTBhZDQ4MWRjNTAzOWEwYTdj
ODE3Y2M5Njg3MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29t
bW9uVmFsdWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbW1vblZh
bHVlcy5jcHAKQEAgLTQ5LDYgKzQ5LDcgQEAgQ29tbW9uVmFsdWVzOjpDb21tb25WYWx1ZXMoTENv
bnRleHQgY29udGV4dCkKICAgICAsIGludDMyKEIzOjpJbnQzMikKICAgICAsIGludDY0KEIzOjpJ
bnQ2NCkKICAgICAsIGludFB0cihCMzo6cG9pbnRlclR5cGUoKSkKKyAgICAsIGZsb2F0VHlwZShC
Mzo6RG91bGUpCiAgICAgLCBkb3VibGVUeXBlKEIzOjpEb3VibGUpCiAjZWxzZQogICAgIDogdm9p
ZFR5cGUoRlRMOjp2b2lkVHlwZShjb250ZXh0KSkKQEAgLTU2LDEwICs1NywxMCBAQCBDb21tb25W
YWx1ZXM6OkNvbW1vblZhbHVlcyhMQ29udGV4dCBjb250ZXh0KQogICAgICwgaW50MzIoaW50MzJU
eXBlKGNvbnRleHQpKQogICAgICwgaW50NjQoaW50NjRUeXBlKGNvbnRleHQpKQogICAgICwgaW50
UHRyKGludFB0clR5cGUoY29udGV4dCkpCisgICAgLCBmbG9hdFR5cGUoRlRMOjpmbG9hdFR5cGUo
Y29udGV4dCkpCiAgICAgLCBkb3VibGVUeXBlKEZUTDo6ZG91YmxlVHlwZShjb250ZXh0KSkKICAg
ICAsIGludDgoaW50OFR5cGUoY29udGV4dCkpCiAgICAgLCBpbnQxNihpbnQxNlR5cGUoY29udGV4
dCkpCi0gICAgLCBmbG9hdFR5cGUoRlRMOjpmbG9hdFR5cGUoY29udGV4dCkpCiAgICAgLCByZWY4
KHBvaW50ZXJUeXBlKGludDgpKQogICAgICwgcmVmMTYocG9pbnRlclR5cGUoaW50MTYpKQogICAg
ICwgcmVmMzIocG9pbnRlclR5cGUoaW50MzIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExDb21tb25WYWx1ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQ29tbW9uVmFsdWVzLmgKaW5kZXggNjE2MTkxMWQ3YmM2NzBjNWYxZWViYWM4ZWIyNTJhN2M2
ODhiNzAxOC4uNmQ2YTM1YjZmMmRlN2Q2YTY0YjRlMTFkNzE3ZjY1MDNmZDMyOTdiOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21tb25WYWx1ZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbW1vblZhbHVlcy5oCkBAIC01OCwxMSArNTgs
MTEgQEAgcHVibGljOgogICAgIGNvbnN0IExUeXBlIGludDMyOwogICAgIGNvbnN0IExUeXBlIGlu
dDY0OwogICAgIGNvbnN0IExUeXBlIGludFB0cjsKKyAgICBjb25zdCBMVHlwZSBmbG9hdFR5cGU7
CiAgICAgY29uc3QgTFR5cGUgZG91YmxlVHlwZTsKICNpZiAhRlRMX1VTRVNfQjMKICAgICBjb25z
dCBMVHlwZSBpbnQ4OwogICAgIGNvbnN0IExUeXBlIGludDE2OwotICAgIGNvbnN0IExUeXBlIGZs
b2F0VHlwZTsKICAgICBjb25zdCBMVHlwZSByZWY4OwogICAgIGNvbnN0IExUeXBlIHJlZjE2Owog
ICAgIGNvbnN0IExUeXBlIHJlZjMyOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266837</attachid>
            <date>2015-12-07 17:41:37 -0800</date>
            <delta_ts>2015-12-07 18:13:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-151974-20151207174108.patch</filename>
            <type>text/plain</type>
            <size>195501</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkzNjc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MjFkNjMyOWQ2OWRlNGIxYjcxY2EwOTM1Mzg4NWVlMWViMzJkMzliLi5lYmFlNDAyNTQ4ZGE0ZjRk
ZDIwNDI4OWYzMmZmNzA3YTBmZGM1OGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMzcgQEAKKzIwMTUtMTItMDcgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgW0pTQ10gQWRkIEZsb2F0IHN1cHBvcnQgdG8gQjMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTk3NAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBi
YXNpYyBmbG9hdCBzdXBwb3J0IHRvIEIzLgorCisgICAgICAgIFRoZSBuZXcgcGhhc2UgcmVkdWNl
RG91YmxlVG9GbG9hdCgpIGdpdmVzIHVzIGEgcHJpbWl0aXZlCisgICAgICAgIHZlcnNpb24gb2Yg
d2hhdCBMTFZNIHdhcyBnaXZpbmcgdXMgb24gZmxvYXRzLgorICAgICAgICBJdCBuZWVkcyB0byBz
dXBwb3J0IGNvbnZlcnNpb25zIGFjY3Jvc3MgUGhpcyBidXQgdGhhdCBjYW4KKyAgICAgICAgYmUg
YWRkZWQgbGF0ZXIuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6bW92ZURv
dWJsZUNvbmRpdGlvbmFsbHlGbG9hdCk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpz
cXJ0RmxvYXQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bG9hZEZs
b2F0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnN0b3JlRmxvYXQp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6Y29udmVydERvdWJsZVRv
RmxvYXQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6Y29udmVydEZs
b2F0VG9Eb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YWRk
RmxvYXQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6ZGl2RmxvYXQp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6c3ViRmxvYXQpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bXVsRmxvYXQpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YnJhbmNoRG91YmxlKToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaEZsb2F0KToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJYODZDb21tb246Om1vdmVDb25kaXRpb25hbGx5RG91YmxlKToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246Om1vdmVDb25kaXRpb25hbGx5RmxvYXQp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6anVtcEFmdGVyRmxvYXRp
bmdQb2ludENvbXBhcmUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6
bW92ZUNvbmRpdGlvbmFsbHlBZnRlckZsb2F0aW5nUG9pbnRDb21wYXJlKToKKyAgICAgICAgKiBh
c3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YWRk
c3NfcnIpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OmFkZHNzX21yKToKKyAgICAgICAg
KEpTQzo6WDg2QXNzZW1ibGVyOjpjdnRzZDJzc19tcik6CisgICAgICAgIChKU0M6Olg4NkFzc2Vt
Ymxlcjo6Y3Z0c3Myc2RfbXIpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Om1vdnNzX3Jt
KToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjptb3Zzc19tcik6CisgICAgICAgIChKU0M6
Olg4NkFzc2VtYmxlcjo6bXVsc3NfcnIpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Om11
bHNzX21yKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpzdWJzc19ycik6CisgICAgICAg
IChKU0M6Olg4NkFzc2VtYmxlcjo6c3Vic3NfbXIpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJs
ZXI6OnVjb21pc3NfcnIpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnVjb21pc3NfbXIp
OgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OmRpdnNzX3JyKToKKyAgICAgICAgKEpTQzo6
WDg2QXNzZW1ibGVyOjpkaXZzc19tcik6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6c3Fy
dHNzX3JyKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpzcXJ0c3NfbXIpOgorICAgICAg
ICAqIGIzL0IzQ29uc3QzMlZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkNvbnN0MzJWYWx1
ZTo6Yml0d2lzZUNhc3RDb25zdGFudCk6CisgICAgICAgICogYjMvQjNDb25zdDMyVmFsdWUuaDoK
KyAgICAgICAgKiBiMy9CM0NvbnN0RG91YmxlVmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6
Q29uc3REb3VibGVWYWx1ZTo6ZG91YmxlVG9GbG9hdENvbnN0YW50KToKKyAgICAgICAgKEpTQzo6
QjM6OkNvbnN0RG91YmxlVmFsdWU6OnNxcnRDb25zdGFudCk6CisgICAgICAgICogYjMvQjNDb25z
dERvdWJsZVZhbHVlLmg6CisgICAgICAgICogYjMvQjNDb25zdEZsb2F0VmFsdWUuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6QjM6OkNvbnN0RmxvYXRWYWx1ZTo6fkNvbnN0RmxvYXRWYWx1ZSk6
CisgICAgICAgIChKU0M6OkIzOjpDb25zdEZsb2F0VmFsdWU6Om5lZ0NvbnN0YW50KToKKyAgICAg
ICAgKEpTQzo6QjM6OkNvbnN0RmxvYXRWYWx1ZTo6YWRkQ29uc3RhbnQpOgorICAgICAgICAoSlND
OjpCMzo6Q29uc3RGbG9hdFZhbHVlOjpzdWJDb25zdGFudCk6CisgICAgICAgIChKU0M6OkIzOjpD
b25zdEZsb2F0VmFsdWU6Om11bENvbnN0YW50KToKKyAgICAgICAgKEpTQzo6QjM6OkNvbnN0Rmxv
YXRWYWx1ZTo6Yml0d2lzZUNhc3RDb25zdGFudCk6CisgICAgICAgIChKU0M6OkIzOjpDb25zdEZs
b2F0VmFsdWU6OmZsb2F0VG9Eb3VibGVDb25zdGFudCk6CisgICAgICAgIChKU0M6OkIzOjpDb25z
dEZsb2F0VmFsdWU6OnNxcnRDb25zdGFudCk6CisgICAgICAgIChKU0M6OkIzOjpDb25zdEZsb2F0
VmFsdWU6OmRpdkNvbnN0YW50KToKKyAgICAgICAgKEpTQzo6QjM6OkNvbnN0RmxvYXRWYWx1ZTo6
ZXF1YWxDb25zdGFudCk6CisgICAgICAgIChKU0M6OkIzOjpDb25zdEZsb2F0VmFsdWU6Om5vdEVx
dWFsQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpCMzo6Q29uc3RGbG9hdFZhbHVlOjpsZXNzVGhh
bkNvbnN0YW50KToKKyAgICAgICAgKEpTQzo6QjM6OkNvbnN0RmxvYXRWYWx1ZTo6Z3JlYXRlclRo
YW5Db25zdGFudCk6CisgICAgICAgIChKU0M6OkIzOjpDb25zdEZsb2F0VmFsdWU6Omxlc3NFcXVh
bENvbnN0YW50KToKKyAgICAgICAgKEpTQzo6QjM6OkNvbnN0RmxvYXRWYWx1ZTo6Z3JlYXRlckVx
dWFsQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpCMzo6Q29uc3RGbG9hdFZhbHVlOjpkdW1wTWV0
YSk6CisgICAgICAgICogYjMvQjNDb25zdEZsb2F0VmFsdWUuaDogQ29waWVkIGZyb20gU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3REb3VibGVWYWx1ZS5oLgorICAgICAgICAqIGIzL0Iz
R2VuZXJhdGUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6Z2VuZXJhdGVUb0Fpcik6CisgICAgICAg
ICogYjMvQjNMb3dlclRvQWlyLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fp
cjo6dHJ5T3Bjb2RlRm9yVHlwZSk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6
Om9wY29kZUZvclR5cGUpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjphcHBl
bmRVbk9wKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6YXBwZW5kQmluT3Ap
OgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjphcHBlbmRTaGlmdCk6CisgICAg
ICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnRyeUFwcGVuZFN0b3JlVW5PcCk6CisgICAg
ICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnRyeUFwcGVuZFN0b3JlQmluT3ApOgorICAg
ICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjptb3ZlRm9yVHlwZSk6CisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnJlbGF4ZWRNb3ZlRm9yVHlwZSk6CisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmNyZWF0ZUdlbmVyaWNDb21wYXJlKToKKyAgICAgICAg
KEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6Y3JlYXRlQnJhbmNoKToKKyAgICAgICAgKEpTQzo6
QjM6OkFpcjo6TG93ZXJUb0Fpcjo6Y3JlYXRlQ29tcGFyZSk6CisgICAgICAgIChKU0M6OkIzOjpB
aXI6Okxvd2VyVG9BaXI6OmNyZWF0ZVNlbGVjdCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxv
d2VyVG9BaXI6Omxvd2VyKToKKyAgICAgICAgKiBiMy9CM01lbW9yeVZhbHVlLmNwcDoKKyAgICAg
ICAgKEpTQzo6QjM6Ok1lbW9yeVZhbHVlOjphY2Nlc3NCeXRlU2l6ZSk6IERlbGV0ZWQuCisgICAg
ICAgICogYjMvQjNNZW1vcnlWYWx1ZS5oOgorICAgICAgICAqIGIzL0IzTW92ZUNvbnN0YW50cy5j
cHA6CisgICAgICAgICogYjMvQjNPcGNvZGUuY3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVy
bmFsKToKKyAgICAgICAgKiBiMy9CM09wY29kZS5oOgorICAgICAgICAqIGIzL0IzUHJvY2VkdXJl
LmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OlByb2NlZHVyZTo6YWRkSW50Q29uc3RhbnQpOgorICAg
ICAgICAqIGIzL0IzUmVkdWNlRG91YmxlVG9GbG9hdC5jcHA6IEFkZGVkLgorICAgICAgICAoSlND
OjpCMzo6cmVkdWNlRG91YmxlVG9GbG9hdCk6CisgICAgICAgICogYjMvQjNSZWR1Y2VEb3VibGVU
b0Zsb2F0Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1R5cGUuY3Bw
LgorICAgICAgICAqIGIzL0IzUmVkdWNlU3RyZW5ndGguY3BwOgorICAgICAgICAqIGIzL0IzVHlw
ZS5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGIzL0IzVHlw
ZS5oOgorICAgICAgICAoSlNDOjpCMzo6aXNGbG9hdCk6CisgICAgICAgIChKU0M6OkIzOjpzaXpl
b2ZUeXBlKToKKyAgICAgICAgKiBiMy9CM1ZhbGlkYXRlLmNwcDoKKyAgICAgICAgKiBiMy9CM1Zh
bHVlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjpkb3VibGVUb0Zsb2F0Q29uc3RhbnQp
OgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OmZsb2F0VG9Eb3VibGVDb25zdGFudCk6CisgICAg
ICAgIChKU0M6OkIzOjpWYWx1ZTo6c3FydENvbnN0YW50KToKKyAgICAgICAgKEpTQzo6QjM6OlZh
bHVlOjphc1RyaVN0YXRlKToKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjplZmZlY3RzKToKKyAg
ICAgICAgKEpTQzo6QjM6OlZhbHVlOjprZXkpOgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OmNo
ZWNrT3Bjb2RlKToKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjp0eXBlRm9yKToKKyAgICAgICAg
KiBiMy9CM1ZhbHVlLmg6CisgICAgICAgICogYjMvQjNWYWx1ZUlubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6QjM6OlZhbHVlOjppc0NvbnN0YW50KToKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjpo
YXNGbG9hdCk6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZTo6YXNGbG9hdCk6CisgICAgICAgIChK
U0M6OkIzOjpWYWx1ZTo6aGFzTnVtYmVyKToKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjppc05l
Z2F0aXZlWmVybyk6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZTo6cmVwcmVzZW50YWJsZUFzKToK
KyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjphc051bWJlcik6CisgICAgICAgICogYjMvQjNWYWx1
ZUtleS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZUtleTo6bWF0ZXJpYWxpemUpOgorICAg
ICAgICAqIGIzL0IzVmFsdWVLZXkuaDoKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlS2V5OjpWYWx1
ZUtleSk6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZUtleTo6ZmxvYXRWYWx1ZSk6CisgICAgICAg
ICogYjMvYWlyL0FpckFyZy5oOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OnR5cGVGb3JC
M1R5cGUpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OndpZHRoRm9yQjNUeXBlKToKKyAg
ICAgICAgKiBiMy9haXIvQWlyRml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzLmNwcDoKKyAgICAgICAg
KiBiMy9haXIvQWlyT3Bjb2RlLm9wY29kZXM6CisgICAgICAgICogYjMvdGVzdGIzLmNwcDoKKyAg
ICAgICAgKEpTQzo6QjM6OnRlc3RBZGRBcmdGbG9hdCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0
QWRkQXJnc0Zsb2F0KToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RBZGRBcmdJbW1GbG9hdCk6Cisg
ICAgICAgIChKU0M6OkIzOjp0ZXN0QWRkSW1tQXJnRmxvYXQpOgorICAgICAgICAoSlNDOjpCMzo6
dGVzdEFkZEltbXNGbG9hdCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0QWRkQXJnRmxvYXRXaXRo
VXNlbGVzc0RvdWJsZUNvbnZlcnNpb24pOgorICAgICAgICAoSlNDOjpCMzo6dGVzdEFkZEFyZ3NG
bG9hdFdpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lvbik6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0
QWRkQXJnc0Zsb2F0V2l0aEVmZmVjdGZ1bERvdWJsZUNvbnZlcnNpb24pOgorICAgICAgICAoSlND
OjpCMzo6dGVzdE11bEFyZ0Zsb2F0KToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RNdWxBcmdzRmxv
YXQpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdE11bEFyZ0ltbUZsb2F0KToKKyAgICAgICAgKEpT
Qzo6QjM6OnRlc3RNdWxJbW1BcmdGbG9hdCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0TXVsSW1t
c0Zsb2F0KToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RNdWxBcmdGbG9hdFdpdGhVc2VsZXNzRG91
YmxlQ29udmVyc2lvbik6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0TXVsQXJnc0Zsb2F0V2l0aFVz
ZWxlc3NEb3VibGVDb252ZXJzaW9uKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RNdWxBcmdzRmxv
YXRXaXRoRWZmZWN0ZnVsRG91YmxlQ29udmVyc2lvbik6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0
RGl2QXJnRmxvYXQpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdERpdkFyZ3NGbG9hdCk6CisgICAg
ICAgIChKU0M6OkIzOjp0ZXN0RGl2QXJnSW1tRmxvYXQpOgorICAgICAgICAoSlNDOjpCMzo6dGVz
dERpdkltbUFyZ0Zsb2F0KToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3REaXZJbW1zRmxvYXQpOgor
ICAgICAgICAoSlNDOjpCMzo6dGVzdERpdkFyZ0Zsb2F0V2l0aFVzZWxlc3NEb3VibGVDb252ZXJz
aW9uKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3REaXZBcmdzRmxvYXRXaXRoVXNlbGVzc0RvdWJs
ZUNvbnZlcnNpb24pOgorICAgICAgICAoSlNDOjpCMzo6dGVzdERpdkFyZ3NGbG9hdFdpdGhFZmZl
Y3RmdWxEb3VibGVDb252ZXJzaW9uKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RTdWJBcmdGbG9h
dCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0U3ViQXJnc0Zsb2F0KToKKyAgICAgICAgKEpTQzo6
QjM6OnRlc3RTdWJBcmdJbW1GbG9hdCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0U3ViSW1tQXJn
RmxvYXQpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdFN1YkltbXNGbG9hdCk6CisgICAgICAgIChK
U0M6OkIzOjp0ZXN0U3ViQXJnRmxvYXRXaXRoVXNlbGVzc0RvdWJsZUNvbnZlcnNpb24pOgorICAg
ICAgICAoSlNDOjpCMzo6dGVzdFN1YkFyZ3NGbG9hdFdpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lv
bik6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0U3ViQXJnc0Zsb2F0V2l0aEVmZmVjdGZ1bERvdWJs
ZUNvbnZlcnNpb24pOgorICAgICAgICAoSlNDOjpCMzo6dGVzdENsek1lbTMyKToKKyAgICAgICAg
KEpTQzo6QjM6OnRlc3RTcXJ0QXJnKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RTcXJ0SW1tKToK
KyAgICAgICAgKEpTQzo6QjM6OnRlc3RTcXJ0TWVtKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RT
cXJ0QXJnV2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uKToKKyAgICAgICAgKEpTQzo6QjM6OnRl
c3RTcXJ0QXJnV2l0aEVmZmVjdGZ1bERvdWJsZUNvbnZlcnNpb24pOgorICAgICAgICAoSlNDOjpC
Mzo6dGVzdERvdWJsZUFyZ1RvSW50NjRCaXR3aXNlQ2FzdCk6CisgICAgICAgIChKU0M6OkIzOjp0
ZXN0RG91YmxlSW1tVG9JbnQ2NEJpdHdpc2VDYXN0KToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RU
d29CaXR3aXNlQ2FzdE9uRG91YmxlKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RCaXR3aXNlQ2Fz
dE9uRG91YmxlSW5NZW1vcnkpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdEludDY0QkFyZ1RvRG91
YmxlQml0d2lzZUNhc3QpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdEludDY0QkltbVRvRG91Ymxl
Qml0d2lzZUNhc3QpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdFR3b0JpdHdpc2VDYXN0T25JbnQ2
NCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Qml0d2lzZUNhc3RPbkludDY0SW5NZW1vcnkpOgor
ICAgICAgICAoSlNDOjpCMzo6dGVzdEZsb2F0SW1tVG9JbnQzMkJpdHdpc2VDYXN0KToKKyAgICAg
ICAgKEpTQzo6QjM6OnRlc3RCaXR3aXNlQ2FzdE9uRmxvYXRJbk1lbW9yeSk6CisgICAgICAgIChK
U0M6OkIzOjp0ZXN0SW50MzJCQXJnVG9GbG9hdEJpdHdpc2VDYXN0KToKKyAgICAgICAgKEpTQzo6
QjM6OnRlc3RJbnQzMkJJbW1Ub0Zsb2F0Qml0d2lzZUNhc3QpOgorICAgICAgICAoSlNDOjpCMzo6
dGVzdFR3b0JpdHdpc2VDYXN0T25JbnQzMik6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Qml0d2lz
ZUNhc3RPbkludDMySW5NZW1vcnkpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdENvbnZlcnREb3Vi
bGVUb0Zsb2F0QXJnKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RDb252ZXJ0RG91YmxlVG9GbG9h
dEltbSk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Q29udmVydERvdWJsZVRvRmxvYXRNZW0pOgor
ICAgICAgICAoSlNDOjpCMzo6dGVzdENvbnZlcnRGbG9hdFRvRG91YmxlQXJnKToKKyAgICAgICAg
KEpTQzo6QjM6OnRlc3RDb252ZXJ0RmxvYXRUb0RvdWJsZUltbSk6CisgICAgICAgIChKU0M6OkIz
Ojp0ZXN0Q29udmVydEZsb2F0VG9Eb3VibGVNZW0pOgorICAgICAgICAoSlNDOjpCMzo6dGVzdENv
bnZlcnREb3VibGVUb0Zsb2F0VG9Eb3VibGVUb0Zsb2F0KToKKyAgICAgICAgKEpTQzo6QjM6OnRl
c3RMb2FkRmxvYXRDb252ZXJ0RG91YmxlQ29udmVydEZsb2F0U3RvcmVGbG9hdCk6CisgICAgICAg
IChKU0M6OkIzOjp0ZXN0RnJvdW5kQXJnKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RGcm91bmRN
ZW0pOgorICAgICAgICAoSlNDOjpCMzo6dGVzdFN0b3JlMzIpOgorICAgICAgICAoSlNDOjpCMzo6
bW9kZWxMb2FkKToKKyAgICAgICAgKEpTQzo6QjM6OmZsb2F0Pik6CisgICAgICAgIChKU0M6OkIz
Ojpkb3VibGU+KToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RMb2FkKToKKyAgICAgICAgKEpTQzo6
QjM6OnRlc3RTdG9yZUZsb2F0KToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RSZXR1cm5GbG9hdCk6
CisgICAgICAgIChKU0M6OkIzOjpzaW1wbGVGdW5jdGlvbkZsb2F0KToKKyAgICAgICAgKEpTQzo6
QjM6OnRlc3RDYWxsU2ltcGxlRmxvYXQpOgorICAgICAgICAoSlNDOjpCMzo6ZnVuY3Rpb25XaXRo
SGVsbGFGbG9hdEFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Q2FsbEZ1bmN0aW9u
V2l0aEhlbGxhRmxvYXRBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdFNlbGVjdENv
bXBhcmVGbG9hdCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0U2VsZWN0Q29tcGFyZUZsb2F0VG9E
b3VibGUpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdFNlbGVjdERvdWJsZUNvbXBhcmVGbG9hdCk6
CisgICAgICAgIChKU0M6OkIzOjp0ZXN0U2VsZWN0RmxvYXRDb21wYXJlRmxvYXQpOgorICAgICAg
ICAoSlNDOjpCMzo6cG9wdWxhdGVXaXRoSW50ZXJlc3RpbmdWYWx1ZXMpOgorICAgICAgICAoSlND
OjpCMzo6ZmxvYXRpbmdQb2ludE9wZXJhbmRzKToKKyAgICAgICAgKEpTQzo6QjM6OmludDY0T3Bl
cmFuZHMpOgorICAgICAgICAoSlNDOjpCMzo6cnVuKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RT
dG9yZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpwb3NJbmZpbml0eSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkIzOjpuZWdJbmZpbml0eSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkIzOjpkb3VibGVPcGVyYW5kcyk6IERlbGV0ZWQuCisgICAgICAgICogZnRsL0ZUTEIzT3V0cHV0
LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmxvYWRGbG9hdFRvRG91YmxlKToKKyAg
ICAgICAgKiBmdGwvRlRMQjNPdXRwdXQuaDoKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmZy
b3VuZCk6CisgICAgICAgICogZnRsL0ZUTENvbW1vblZhbHVlcy5jcHA6CisgICAgICAgIChKU0M6
OkZUTDo6Q29tbW9uVmFsdWVzOjpDb21tb25WYWx1ZXMpOgorICAgICAgICAqIGZ0bC9GVExDb21t
b25WYWx1ZXMuaDoKKwogMjAxNS0xMi0wNyAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxl
LmNvbT4KIAogICAgICAgICBDUkFTSDogQ29kZUJsb2NrOjpzZXRPcHRpbWl6YXRpb25UaHJlc2hv
bGRCYXNlZE9uQ29tcGlsYXRpb25SZXN1bHQgKyA1NjcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAppbmRleCBjZWE2NjY1ODQ3ZjY4MDhiMWNmNDAxMTU1YTk1YjdiOWYyY2RiNmZhLi5j
ODYzMjc2YmM2OTRjZDMzZTVmYTRiMWNiZmYyNWQ1YTI5ZDkxZWFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xMDQsNiArMTA0LDcgQEAgc2V0KEphdmFTY3JpcHRDb3Jl
X1NPVVJDRVMKICAgICBiMy9CM0NvbnN0MzJWYWx1ZS5jcHAKICAgICBiMy9CM0NvbnN0NjRWYWx1
ZS5jcHAKICAgICBiMy9CM0NvbnN0RG91YmxlVmFsdWUuY3BwCisgICAgYjMvQjNDb25zdEZsb2F0
VmFsdWUuY3BwCiAgICAgYjMvQjNDb25zdHJhaW5lZFZhbHVlLmNwcAogICAgIGIzL0IzQ29udHJv
bFZhbHVlLmNwcAogICAgIGIzL0IzRGF0YVNlY3Rpb24uY3BwCkBAIC0xMjQsNiArMTI1LDcgQEAg
c2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBiMy9CM1BoYXNlU2NvcGUuY3BwCiAgICAg
YjMvQjNQaGlDaGlsZHJlbi5jcHAKICAgICBiMy9CM1Byb2NlZHVyZS5jcHAKKyAgICBiMy9CM1Jl
ZHVjZURvdWJsZVRvRmxvYXQuY3BwCiAgICAgYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAKICAgICBi
My9CM1N0YWNrbWFwR2VuZXJhdGlvblBhcmFtcy5jcHAKICAgICBiMy9CM1N0YWNrbWFwU3BlY2lh
bC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTdlZTgwOGYzODRkMWFlNzU4
ZDEwMjdiM2MyYzU1ODdhNzM0YmU1ZC4uNzE5ZDllMDIzYTY2YmVmZmM4MDZkYTMxOGM2OGZmODdl
N2U4NTQzNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExMjksNiArMTEyOSwx
MCBAQAogCQk0MURFQTEzMjFCOUYzMTYzMDA2RDY1REQgLyogQnVpbHRpblV0aWxzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MURFQTEzMTFCOUYzMTU0
MDA2RDY1REQgLyogQnVpbHRpblV0aWxzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDM0MEE0ODQxQTkwNTFBRjAwRDczQ0NBIC8qIE1hdGhDb21t
b24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM0
MEE0ODIxQTkwNTFBRjAwRDczQ0NBIC8qIE1hdGhDb21tb24uY3BwICovOyB9OwogCQk0MzQwQTQ4
NTFBOTA1MUFGMDBENzNDQ0EgLyogTWF0aENvbW1vbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM0MEE0ODMxQTkwNTFBRjAwRDczQ0NBIC8qIE1hdGhD
b21tb24uaCAqLzsgfTsKKwkJNDM0MjJBNjIxQzE1OEU2QTAwRTJFQjk4IC8qIEIzQ29uc3RGbG9h
dFZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQzNDIyQTYwMUMxNTg3MUIwMEUyRUI5OCAvKiBCM0NvbnN0RmxvYXRWYWx1ZS5jcHAgKi87IH07
CisJCTQzNDIyQTYzMUMxNThFNkQwMEUyRUI5OCAvKiBCM0NvbnN0RmxvYXRWYWx1ZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM0MjJBNjExQzE1ODcx
QjAwRTJFQjk4IC8qIEIzQ29uc3RGbG9hdFZhbHVlLmggKi87IH07CisJCTQzNDIyQTY2MUMxNjI2
NzUwMEUyRUI5OCAvKiBCM1JlZHVjZURvdWJsZVRvRmxvYXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM0MjJBNjQxQzE2MjIxRTAwRTJFQjk4IC8q
IEIzUmVkdWNlRG91YmxlVG9GbG9hdC5jcHAgKi87IH07CisJCTQzNDIyQTY3MUMxNjI2NzgwMEUy
RUI5OCAvKiBCM1JlZHVjZURvdWJsZVRvRmxvYXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzNDIyQTY1MUMxNjIyMUUwMEUyRUI5OCAvKiBCM1JlZHVj
ZURvdWJsZVRvRmxvYXQuaCAqLzsgfTsKIAkJNDQ0M0FFMzMxNkUxODhEOTAwNzZGMTEwIC8qIEZv
dW5kYXRpb24uZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTFGMEVCNjEwNUM4NkM2QjAwRTZERjFCIC8qIEZvdW5kYXRpb24uZnJhbWV3
b3JrICovOyB9OwogCQk0NTE1MzlCOTEyREM5OTQ1MDBFRjdBQzQgLyogWWFyci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDUxNTM5QjgxMkRDOTk0NTAw
RUY3QUM0IC8qIFlhcnIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk1MjY3OEY4RTFBMDMxMDA5MDA2QTMwNkQgLyogQmFzaWNCbG9ja0xvY2F0aW9u
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyNjc4
RjhDMUEwMzEwMDkwMDZBMzA2RCAvKiBCYXNpY0Jsb2NrTG9jYXRpb24uY3BwICovOyB9OwpAQCAt
MTk5MiwxMiArMTk5NiwxMiBAQAogCQlGRTEyMjAyODFCRTdGNTkxMDAzOUU2RjIgLyogSklUQWRk
R2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZFMTIyMDI1MUJFN0Y1NjQwMDM5RTZGMiAvKiBKSVRBZGRHZW5lcmF0b3IuY3BwICovOyB9
OwogCQlGRTE4N0EwMTFCRkJFNTVFMDAzOEJCQ0EgLyogSklUTXVsR2VuZXJhdG9yLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMTg3OUZGMUJGQkM3
M0MwMDM4QkJDQSAvKiBKSVRNdWxHZW5lcmF0b3IuY3BwICovOyB9OwogCQlGRTE4N0EwMjFCRkJF
NTYxMDAzOEJCQ0EgLyogSklUTXVsR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTE4N0EwMDFCRkJDNzNDMDAzOEJCQ0EgLyogSklUTXVs
R2VuZXJhdG9yLmggKi87IH07Ci0JCUZFMTg3QTBEMUMwMzBENUMwMDM4QkJDQSAvKiBKSVREaXZH
ZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZFMTg3QTBCMUMwMjI5MjMwMDM4QkJDQSAvKiBKSVREaXZHZW5lcmF0b3IuaCAqLzsgc2V0dGlu
Z3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9OwotCQlGRTE4N0EwRTFDMDMwRDY0MDAzOEJCQ0Eg
LyogSklURGl2R2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZFMTg3QTBBMUMwMjI5MjMwMDM4QkJDQSAvKiBKSVREaXZHZW5lcmF0b3Iu
Y3BwICovOyBzZXR0aW5ncyA9IHtBU1NFVF9UQUdTID0gKCk7IH07IH07Ci0JCUZFMTg3QTBGMUMw
MzBENkMwMDM4QkJDQSAvKiBTbmlwcGV0T3BlcmFuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxODdBMEMxQzAyRUJBNzAwMzhCQkNBIC8qIFNuaXBw
ZXRPcGVyYW5kLmggKi87IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKLQkJRkUx
ODdBMTgxQzBFMTNERDAwMzhCQkNBIC8qIEZUTElubGluZUNhY2hlRGVzY3JpcHRvcklubGluZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMTg3QTE3
MUMwRTEzQzYwMDM4QkJDQSAvKiBGVExJbmxpbmVDYWNoZURlc2NyaXB0b3JJbmxpbmVzLmggKi87
IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKLQkJRkUxODdBMTkxQzBFMTNFMzAw
MzhCQkNBIC8qIEZUTENvbXBpbGVCaW5hcnlPcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTE4N0ExNTFDMEUxM0M2MDAzOEJCQ0EgLyogRlRMQ29t
cGlsZUJpbmFyeU9wLmNwcCAqLzsgc2V0dGluZ3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9Owot
CQlGRTE4N0ExQTFDMEUxM0U2MDAzOEJCQ0EgLyogRlRMQ29tcGlsZUJpbmFyeU9wLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTE4N0ExNjFDMEUxM0M2
MDAzOEJCQ0EgLyogRlRMQ29tcGlsZUJpbmFyeU9wLmggKi87IHNldHRpbmdzID0ge0FTU0VUX1RB
R1MgPSAoKTsgfTsgfTsKKwkJRkUxODdBMEQxQzAzMEQ1QzAwMzhCQkNBIC8qIEpJVERpdkdlbmVy
YXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUx
ODdBMEIxQzAyMjkyMzAwMzhCQkNBIC8qIEpJVERpdkdlbmVyYXRvci5oICovOyB9OworCQlGRTE4
N0EwRTFDMDMwRDY0MDAzOEJCQ0EgLyogSklURGl2R2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMTg3QTBBMUMwMjI5MjMwMDM4QkJD
QSAvKiBKSVREaXZHZW5lcmF0b3IuY3BwICovOyB9OworCQlGRTE4N0EwRjFDMDMwRDZDMDAzOEJC
Q0EgLyogU25pcHBldE9wZXJhbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZFMTg3QTBDMUMwMkVCQTcwMDM4QkJDQSAvKiBTbmlwcGV0T3BlcmFuZC5o
ICovOyB9OworCQlGRTE4N0ExODFDMEUxM0REMDAzOEJCQ0EgLyogRlRMSW5saW5lQ2FjaGVEZXNj
cmlwdG9ySW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkUxODdBMTcxQzBFMTNDNjAwMzhCQkNBIC8qIEZUTElubGluZUNhY2hlRGVzY3JpcHRv
cklubGluZXMuaCAqLzsgfTsKKwkJRkUxODdBMTkxQzBFMTNFMzAwMzhCQkNBIC8qIEZUTENvbXBp
bGVCaW5hcnlPcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRTE4N0ExNTFDMEUxM0M2MDAzOEJCQ0EgLyogRlRMQ29tcGlsZUJpbmFyeU9wLmNwcCAq
LzsgfTsKKwkJRkUxODdBMUExQzBFMTNFNjAwMzhCQkNBIC8qIEZUTENvbXBpbGVCaW5hcnlPcC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxODdBMTYx
QzBFMTNDNjAwMzhCQkNBIC8qIEZUTENvbXBpbGVCaW5hcnlPcC5oICovOyB9OwogCQlGRTFDMEZG
RDFCMTkzRTk4MDBCNTNGQ0EgLyogRXhjZXB0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTFDMEZGQzFCMTkzRTk4MDBCNTNGQ0EgLyogRXhjZXB0
aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RkUxQzBGRkYxQjE5NEZEMTAwQjUzRkNBIC8qIEV4Y2VwdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTFDMEZGRTFCMTk0RkQxMDBCNTNGQ0Eg
LyogRXhjZXB0aW9uLmNwcCAqLzsgfTsKIAkJRkUyMENFOUQxNUYwNEE5NTAwREYzNDMwIC8qIExM
SW50Q0xvb3AuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkUyMENFOUIxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3AuY3BwICovOyB9OwpAQCAt
MzE5NSw2ICszMTk5LDEwIEBACiAJCTQxREVBMTMxMUI5RjMxNTQwMDZENjVERCAvKiBCdWlsdGlu
VXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnVpbHRpblV0aWxzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzNDBBNDgyMUE5MDUxQUYwMEQ3M0NDQSAv
KiBNYXRoQ29tbW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1h
dGhDb21tb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MzQwQTQ4MzFBOTA1
MUFGMDBENzNDQ0EgLyogTWF0aENvbW1vbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNYXRoQ29tbW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQzNDIyQTYw
MUMxNTg3MUIwMEUyRUI5OCAvKiBCM0NvbnN0RmxvYXRWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM0NvbnN0RmxvYXRWYWx1ZS5jcHA7IHBhdGggPSBiMy9C
M0NvbnN0RmxvYXRWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQzNDIy
QTYxMUMxNTg3MUIwMEUyRUI5OCAvKiBCM0NvbnN0RmxvYXRWYWx1ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBCM0NvbnN0RmxvYXRWYWx1ZS5oOyBwYXRoID0gYjMvQjNDb25z
dEZsb2F0VmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDM0MjJBNjQxQzE2
MjIxRTAwRTJFQjk4IC8qIEIzUmVkdWNlRG91YmxlVG9GbG9hdC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM1JlZHVjZURvdWJsZVRvRmxvYXQuY3BwOyBwYXRoID0g
YjMvQjNSZWR1Y2VEb3VibGVUb0Zsb2F0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDM0MjJBNjUxQzE2MjIxRTAwRTJFQjk4IC8qIEIzUmVkdWNlRG91YmxlVG9GbG9hdC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM1JlZHVjZURvdWJsZVRvRmxvYXQuaDsg
cGF0aCA9IGIzL0IzUmVkdWNlRG91YmxlVG9GbG9hdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NDkwOTdFRTBGOEY4MUI1MDA3NkEzMjcgLyogRmVhdHVyZURlZmluZXMueGNjb25m
aWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gRmVhdHVyZURlZmluZXMueGNjb25m
aWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ1MTUzOUI4MTJEQzk5NDUwMEVGN0FD
NCAvKiBZYXJyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFlhcnIuaDsgcGF0
aCA9IHlhcnIvWWFyci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NUUxMkQ4ODA2
QTQ5QjBGMDBFOURGODQgLyoganNjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGpzYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IHRhYldpZHRoID0gNDsgfTsKQEAgLTQ1ODMsNiArNDU5MSw4IEBACiAJCQkJMEZFQzg0QzYxQkRB
Q0RBQzAwODBGRjc0IC8qIEIzQ29uc3Q2NFZhbHVlLmggKi8sCiAJCQkJMEZFQzg0QzcxQkRBQ0RB
QzAwODBGRjc0IC8qIEIzQ29uc3REb3VibGVWYWx1ZS5jcHAgKi8sCiAJCQkJMEZFQzg0QzgxQkRB
Q0RBQzAwODBGRjc0IC8qIEIzQ29uc3REb3VibGVWYWx1ZS5oICovLAorCQkJCTQzNDIyQTYwMUMx
NTg3MUIwMEUyRUI5OCAvKiBCM0NvbnN0RmxvYXRWYWx1ZS5jcHAgKi8sCisJCQkJNDM0MjJBNjEx
QzE1ODcxQjAwRTJFQjk4IC8qIEIzQ29uc3RGbG9hdFZhbHVlLmggKi8sCiAJCQkJMEZFQzg1QjIx
QkRFRDk1NzAwODBGRjc0IC8qIEIzQ29uc3RQdHJWYWx1ZS5oICovLAogCQkJCTBGMzM4REYzMUJF
OTNENTUwMDEzQzg4RiAvKiBCM0NvbnN0cmFpbmVkVmFsdWUuY3BwICovLAogCQkJCTBGMzM4REY0
MUJFOTNENTUwMDEzQzg4RiAvKiBCM0NvbnN0cmFpbmVkVmFsdWUuaCAqLywKQEAgLTQ1OTAsNiAr
NDYwMCw4IEBACiAJCQkJMEZFQzg0Q0ExQkRBQ0RBQzAwODBGRjc0IC8qIEIzQ29udHJvbFZhbHVl
LmggKi8sCiAJCQkJMEYzMzhFMDExQkYwMjc2QzAwMTNDODhGIC8qIEIzRGF0YVNlY3Rpb24uY3Bw
ICovLAogCQkJCTBGMzM4RTAyMUJGMDI3NkMwMDEzQzg4RiAvKiBCM0RhdGFTZWN0aW9uLmggKi8s
CisJCQkJNDM0MjJBNjQxQzE2MjIxRTAwRTJFQjk4IC8qIEIzUmVkdWNlRG91YmxlVG9GbG9hdC5j
cHAgKi8sCisJCQkJNDM0MjJBNjUxQzE2MjIxRTAwRTJFQjk4IC8qIEIzUmVkdWNlRG91YmxlVG9G
bG9hdC5oICovLAogCQkJCTBGRUM4NUM0MUJFMTZGNUEwMDgwRkY3NCAvKiBCM0VmZmVjdHMuY3Bw
ICovLAogCQkJCTBGRUM4NUJFMUJFMTY3QTAwMDgwRkY3NCAvKiBCM0VmZmVjdHMuaCAqLywKIAkJ
CQkwRkVDODRDQjFCREFDREFDMDA4MEZGNzQgLyogQjNGcmVxdWVuY3lDbGFzcy5jcHAgKi8sCkBA
IC02OTk2LDYgKzcwMDgsNyBAQAogCQkJCTBGMkI5Q0UzMTlEMEJBN0QwMEIxRDFCNSAvKiBERkdB
dmFpbGFiaWxpdHlNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzE0Q0E1MTZFQTkyRjIwMEYz
RUJFQiAvKiBERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjYyMDE3NjE0M0ZDRDNCMDA2OEI3N0MgLyogREZHQmFzaWNCbG9jay5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNDM0MjJBNjMxQzE1OEU2RDAwRTJFQjk4IC8qIEIzQ29uc3RGbG9hdFZhbHVlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkZCOTIxQTE2RDAyRUM1MDA1NUE1REIgLyogREZHQmFzaWNC
bG9ja0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDg5Q0Y0MTdBMEI4Q0MwMDc3M0FE
OCAvKiBERkdCbG9ja0luc2VydGlvblNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDM0NDRkMx
OUFEQTQxMDAwNkFDNzJBIC8qIERGR0Jsb2NrTWFwLmggaW4gSGVhZGVycyAqLywKQEAgLTc1OTYs
NiArNzYwOSw3IEBACiAJCQkJMEY0NjgwQ0QxNEJCQjE3RDAwQkZFMjcyIC8qIExvd0xldmVsSW50
ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0QjcyM0I4MTJEN0RBNkYwMDNCRDVFRCAv
KiBNYWNoaW5lU3RhY2tNYXJrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2QzM2RUVBMEVFMTI4
OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDM0MjJB
NjcxQzE2MjY3ODAwRTJFQjk4IC8qIEIzUmVkdWNlRG91YmxlVG9GbG9hdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODZEM0IyQzYxMDE1NkJERTAwMjg2NUU3IC8qIE1hY3JvQXNzZW1ibGVyQVJNLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBMUEwMDlDMDE4MzFBMjJEMDBDRjg3MTEgLyogTWFjcm9Bc3Nl
bWJsZXJBUk02NC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZBREQxNDYwRkRERUE5ODAwMDZFRUMy
IC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCBpbiBIZWFkZXJzICovLApAQCAtODM5NSw2ICs4NDA5
LDcgQEAKIAkJCQkwRkZBNTQ5NzE2Qjg4MzUwMDBCM0E5ODIgLyogQTY0RE9wY29kZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRjU1RjBGNDE0RDEwNjM5MDBBQzc2NDkgLyogQWJzdHJhY3RQQy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVDODU2RDFCREFDREM3MDA4MEZGNzQgLyogQWlyQWxs
b2NhdGVTdGFjay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MzQyMkE2NjFDMTYyNjc1MDBFMkVC
OTggLyogQjNSZWR1Y2VEb3VibGVUb0Zsb2F0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUM4
NTZGMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJBcmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZF
Qzg1NzExQkRBQ0RDNzAwODBGRjc0IC8qIEFpckJhc2ljQmxvY2suY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEZFQzg1NzMxQkRBQ0RDNzAwODBGRjc0IC8qIEFpckNDYWxsU3BlY2lhbC5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTg0NTAsNiArODQ2NSw3IEBACiAJCQkJMEZFQzg1MjcxQkRBQ0RBQzAw
ODBGRjc0IC8qIEIzUGF0Y2hwb2ludFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUM4
NTI5MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1BoYXNlU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEZFQzg1MkIxQkRBQ0RBQzAwODBGRjc0IC8qIEIzUHJvY2VkdXJlLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTQzNDIyQTYyMUMxNThFNkEwMEUyRUI5OCAvKiBCM0NvbnN0RmxvYXRWYWx1ZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVDODVCQzFCRTE0NjJGMDA4MEZGNzQgLyogQjNSZWR1
Y2VTdHJlbmd0aC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVDODUzMDFCREFDREFDMDA4MEZG
NzQgLyogQjNTdGFja21hcFNwZWNpYWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQzg1MzIx
QkRBQ0RBQzAwODBGRjc0IC8qIEIzU3RhY2tTbG90S2luZC5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAppbmRl
eCBmNzM0M2ZmMTQ4NTM1MmI3ZTkyOTAxYTg3MTIxOGE4NzhlZGQyYjI3Li45ZWUxNjk1MmI5NTVl
NDU5YjE5NzM2ZWRjMmU0ZGJlYzIxNGUzYWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCkBAIC0xMzU2LDYgKzEzNTYsMTMgQEAgcHVi
bGljOgogICAgICAgICBtb3ZlRG91YmxlKHNyYywgZGVzdCk7CiAgICAgICAgIGZhbHNlQ2FzZS5s
aW5rKHRoaXMpOwogICAgIH0KKworICAgIHZvaWQgbW92ZURvdWJsZUNvbmRpdGlvbmFsbHlGbG9h
dChEb3VibGVDb25kaXRpb24gY29uZCwgRlBSZWdpc3RlcklEIGxlZnQsIEZQUmVnaXN0ZXJJRCBy
aWdodCwgRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAg
ICBKdW1wIGZhbHNlQ2FzZSA9IGJyYW5jaEZsb2F0KGludmVydChjb25kKSwgbGVmdCwgcmlnaHQp
OworICAgICAgICBtb3ZlRG91YmxlKHNyYywgZGVzdCk7CisgICAgICAgIGZhbHNlQ2FzZS5saW5r
KHRoaXMpOworICAgIH0KICNlbmRpZgogCiAgICAgdm9pZCBsZWEoQWRkcmVzcyBhZGRyZXNzLCBS
ZWdpc3RlcklEIGRlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKaW5kZXggNjgxNDM4NTk3NDBjYmQ1NDkx
ZTM4OWYxZmIxNjAxMjM2ZmZkY2Q4Yy4uYmIyOTA3ZTJkMjQ3NWQ3MjE5Y2FmOGIzY2VmNGQ2MWNl
NzhmMDAzYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlclg4NkNvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaApAQCAtODIsNiArODIsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIE5vblplcm8gPSBYODZBc3NlbWJsZXI6OkNvbmRpdGlvbk5FCiAgICAgfTsKIAorICAg
IC8vIEZJWE1FOiBpdCB3b3VsZCBiZSBuZWF0IHRvIHJlbmFtZSB0aGlzIHRvIEZsb2F0aW5nUG9p
bnRDb25kaXRpb24gaW4gZXZlcnkgYXNzZW1ibGVyLgogICAgIGVudW0gRG91YmxlQ29uZGl0aW9u
IHsKICAgICAgICAgLy8gVGhlc2UgY29uZGl0aW9ucyB3aWxsIG9ubHkgZXZhbHVhdGUgdG8gdHJ1
ZSBpZiB0aGUgY29tcGFyaXNvbiBpcyBvcmRlcmVkIC0gaS5lLiBuZWl0aGVyIG9wZXJhbmQgaXMg
TmFOLgogICAgICAgICBEb3VibGVFcXVhbCA9IFg4NkFzc2VtYmxlcjo6Q29uZGl0aW9uRSB8IERv
dWJsZUNvbmRpdGlvbkJpdFNwZWNpYWwsCkBAIC01MjMsNiArNTI0LDE2IEBAIHB1YmxpYzoKICAg
ICAgICAgbV9hc3NlbWJsZXIuc3FydHNkX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkc3QpOwog
ICAgIH0KIAorICAgIHZvaWQgc3FydEZsb2F0KEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJ
RCBkc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zcXJ0c3NfcnIoc3JjLCBkc3QpOwor
ICAgIH0KKworICAgIHZvaWQgc3FydEZsb2F0KEFkZHJlc3Mgc3JjLCBGUFJlZ2lzdGVySUQgZHN0
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3FydHNzX21yKHNyYy5vZmZzZXQsIHNyYy5i
YXNlLCBkc3QpOworICAgIH0KKwogICAgIHZvaWQgYWJzRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMs
IEZQUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBBU1NFUlQoc3JjICE9IGRzdCk7CkBA
IC03NzksMTIgKzc5MCwxOSBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChpc1NTRTJQcmVzZW50
KCkpOwogICAgICAgICBtX2Fzc2VtYmxlci5tb3ZzZF9tcihhZGRyZXNzLm9mZnNldCwgYWRkcmVz
cy5iYXNlLCBkZXN0KTsKICAgICB9Ci0gICAgCisKICAgICB2b2lkIGxvYWREb3VibGUoQmFzZUlu
ZGV4IGFkZHJlc3MsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGlz
U1NFMlByZXNlbnQoKSk7CiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdnNkX21yKGFkZHJlc3Mub2Zm
c2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUsIGRlc3QpOwog
ICAgIH0KKworICAgIHZvaWQgbG9hZEZsb2F0KEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBGUFJl
Z2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpc1NTRTJQcmVzZW50KCkpOwor
ICAgICAgICBtX2Fzc2VtYmxlci5tb3Zzc19tcihhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNl
LCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIGxvYWRGbG9hdChCYXNlSW5kZXggYWRkcmVzcywg
RlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBBU1NFUlQoaXNTU0UyUHJlc2VudCgp
KTsKQEAgLTgwMiw3ICs4MjAsMTMgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoaXNTU0UyUHJl
c2VudCgpKTsKICAgICAgICAgbV9hc3NlbWJsZXIubW92c2Rfcm0oc3JjLCBhZGRyZXNzLm9mZnNl
dCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKICAgICB9Ci0g
ICAgCisKKyAgICB2b2lkIHN0b3JlRmxvYXQoRlBSZWdpc3RlcklEIHNyYywgSW1wbGljaXRBZGRy
ZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBBU1NFUlQoaXNTU0UyUHJlc2VudCgpKTsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubW92c3Nfcm0oc3JjLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5i
YXNlKTsKKyAgICB9CisKICAgICB2b2lkIHN0b3JlRmxvYXQoRlBSZWdpc3RlcklEIHNyYywgQmFz
ZUluZGV4IGFkZHJlc3MpCiAgICAgewogICAgICAgICBBU1NFUlQoaXNTU0UyUHJlc2VudCgpKTsK
QEAgLTgxNSwxMiArODM5LDI0IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuY3Z0c2Qy
c3NfcnIoc3JjLCBkc3QpOwogICAgIH0KIAorICAgIHZvaWQgY29udmVydERvdWJsZVRvRmxvYXQo
QWRkcmVzcyBhZGRyZXNzLCBGUFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgQVNTRVJU
KGlzU1NFMlByZXNlbnQoKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmN2dHNkMnNzX21yKGFkZHJl
c3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGRzdCk7CisgICAgfQorCiAgICAgdm9pZCBjb252ZXJ0
RmxvYXRUb0RvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZHN0KQogICAgIHsK
ICAgICAgICAgQVNTRVJUKGlzU1NFMlByZXNlbnQoKSk7CiAgICAgICAgIG1fYXNzZW1ibGVyLmN2
dHNzMnNkX3JyKHNyYywgZHN0KTsKICAgICB9CiAKKyAgICB2b2lkIGNvbnZlcnRGbG9hdFRvRG91
YmxlKEFkZHJlc3MgYWRkcmVzcywgRlBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIEFT
U0VSVChpc1NTRTJQcmVzZW50KCkpOworICAgICAgICBtX2Fzc2VtYmxlci5jdnRzczJzZF9tcihh
ZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBkc3QpOworICAgIH0KKwogICAgIHZvaWQgYWRk
RG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAg
ICAgQVNTRVJUKGlzU1NFMlByZXNlbnQoKSk7CkBAIC04NDQsNiArODgwLDE4IEBAIHB1YmxpYzoK
ICAgICAgICAgbV9hc3NlbWJsZXIuYWRkc2RfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIGRlc3Qp
OwogICAgIH0KIAorICAgIHZvaWQgYWRkRmxvYXQoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3Rl
cklEIGRlc3QpCisgICAgeworICAgICAgICBBU1NFUlQoaXNTU0UyUHJlc2VudCgpKTsKKyAgICAg
ICAgbV9hc3NlbWJsZXIuYWRkc3NfcnIoc3JjLCBkZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIGFk
ZEZsb2F0KEFkZHJlc3Mgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIEFT
U0VSVChpc1NTRTJQcmVzZW50KCkpOworICAgICAgICBtX2Fzc2VtYmxlci5hZGRzc19tcihzcmMu
b2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBkaXZEb3VibGUoRlBS
ZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBBU1NFUlQo
aXNTU0UyUHJlc2VudCgpKTsKQEAgLTg2NSw2ICs5MTMsMTggQEAgcHVibGljOgogICAgICAgICBt
X2Fzc2VtYmxlci5kaXZzZF9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7CiAgICAgfQog
CisgICAgdm9pZCBkaXZGbG9hdChGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB7CisgICAgICAgIEFTU0VSVChpc1NTRTJQcmVzZW50KCkpOworICAgICAgICBtX2Fzc2Vt
Ymxlci5kaXZzc19ycihzcmMsIGRlc3QpOworICAgIH0KKworICAgIHZvaWQgZGl2RmxvYXQoQWRk
cmVzcyBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzU1NF
MlByZXNlbnQoKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmRpdnNzX21yKHNyYy5vZmZzZXQsIHNy
Yy5iYXNlLCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIHN1YkRvdWJsZShGUFJlZ2lzdGVySUQg
c3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIEFTU0VSVChpc1NTRTJQcmVz
ZW50KCkpOwpAQCAtODg2LDYgKzk0NiwxOCBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVy
LnN1YnNkX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lk
IHN1YkZsb2F0KEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKGlzU1NFMlByZXNlbnQoKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YnNz
X3JyKHNyYywgZGVzdCk7CisgICAgfQorCisgICAgdm9pZCBzdWJGbG9hdChBZGRyZXNzIHNyYywg
RlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBBU1NFUlQoaXNTU0UyUHJlc2VudCgp
KTsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3Vic3NfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIGRl
c3QpOworICAgIH0KKwogICAgIHZvaWQgbXVsRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVn
aXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGlzU1NFMlByZXNlbnQoKSk7CkBA
IC05MDksNiArOTgxLDE4IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIubXVsc2RfbXIo
c3JjLm9mZnNldCwgc3JjLmJhc2UsIGRlc3QpOwogICAgIH0KIAorICAgIHZvaWQgbXVsRmxvYXQo
RlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBBU1NF
UlQoaXNTU0UyUHJlc2VudCgpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubXVsc3NfcnIoc3JjLCBk
ZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIG11bEZsb2F0KEFkZHJlc3Mgc3JjLCBGUFJlZ2lzdGVy
SUQgZGVzdCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpc1NTRTJQcmVzZW50KCkpOworICAgICAg
ICBtX2Fzc2VtYmxlci5tdWxzc19tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7CisgICAg
fQorCiAgICAgdm9pZCBjb252ZXJ0SW50MzJUb0RvdWJsZShSZWdpc3RlcklEIHNyYywgRlBSZWdp
c3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBBU1NFUlQoaXNTU0UyUHJlc2VudCgpKTsKQEAg
LTkyOSwyNyArMTAxMywxOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci51Y29t
aXNkX3JyKGxlZnQsIHJpZ2h0KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9hc3NlbWJs
ZXIudWNvbWlzZF9ycihyaWdodCwgbGVmdCk7CisgICAgICAgIHJldHVybiBqdW1wQWZ0ZXJGbG9h
dGluZ1BvaW50Q29tcGFyZShjb25kLCBsZWZ0LCByaWdodCk7CisgICAgfQogCi0gICAgICAgIGlm
IChjb25kID09IERvdWJsZUVxdWFsKSB7Ci0gICAgICAgICAgICBpZiAobGVmdCA9PSByaWdodCkK
LSAgICAgICAgICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qbnAoKSk7Ci0gICAgICAg
ICAgICBKdW1wIGlzVW5vcmRlcmVkKG1fYXNzZW1ibGVyLmpwKCkpOwotICAgICAgICAgICAgSnVt
cCByZXN1bHQgPSBKdW1wKG1fYXNzZW1ibGVyLmplKCkpOwotICAgICAgICAgICAgaXNVbm9yZGVy
ZWQubGluayh0aGlzKTsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgIH0gZWxz
ZSBpZiAoY29uZCA9PSBEb3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkKSB7Ci0gICAgICAgICAgICBp
ZiAobGVmdCA9PSByaWdodCkKLSAgICAgICAgICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxl
ci5qcCgpKTsKLSAgICAgICAgICAgIEp1bXAgaXNVbm9yZGVyZWQobV9hc3NlbWJsZXIuanAoKSk7
Ci0gICAgICAgICAgICBKdW1wIGlzRXF1YWwobV9hc3NlbWJsZXIuamUoKSk7Ci0gICAgICAgICAg
ICBpc1Vub3JkZXJlZC5saW5rKHRoaXMpOwotICAgICAgICAgICAgSnVtcCByZXN1bHQgPSBqdW1w
KCk7Ci0gICAgICAgICAgICBpc0VxdWFsLmxpbmsodGhpcyk7Ci0gICAgICAgICAgICByZXR1cm4g
cmVzdWx0OwotICAgICAgICB9CisgICAgSnVtcCBicmFuY2hGbG9hdChEb3VibGVDb25kaXRpb24g
Y29uZCwgRlBSZWdpc3RlcklEIGxlZnQsIEZQUmVnaXN0ZXJJRCByaWdodCkKKyAgICB7CisgICAg
ICAgIEFTU0VSVChpc1NTRTJQcmVzZW50KCkpOwogCi0gICAgICAgIEFTU0VSVCghKGNvbmQgJiBE
b3VibGVDb25kaXRpb25CaXRTcGVjaWFsKSk7Ci0gICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1i
bGVyLmpDQyhzdGF0aWNfY2FzdDxYODZBc3NlbWJsZXI6OkNvbmRpdGlvbj4oY29uZCAmIH5Eb3Vi
bGVDb25kaXRpb25CaXRzKSkpOworICAgICAgICBpZiAoY29uZCAmIERvdWJsZUNvbmRpdGlvbkJp
dEludmVydCkKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnVjb21pc3NfcnIobGVmdCwgcmlnaHQp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2Fzc2VtYmxlci51Y29taXNzX3JyKHJpZ2h0
LCBsZWZ0KTsKKyAgICAgICAgcmV0dXJuIGp1bXBBZnRlckZsb2F0aW5nUG9pbnRDb21wYXJlKGNv
bmQsIGxlZnQsIHJpZ2h0KTsKICAgICB9CiAKICAgICAvLyBUcnVuY2F0ZXMgJ3NyYycgdG8gYW4g
aW50ZWdlciwgYW5kIHBsYWNlcyB0aGUgcmVzdWx0aW5nICdkZXN0Jy4KQEAgLTExMjYsMzIgKzEy
MDEsMTggQEAgcHVibGljOgogICAgICAgICAgICAgbV9hc3NlbWJsZXIudWNvbWlzZF9ycihsZWZ0
LCByaWdodCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnVjb21pc2Rf
cnIocmlnaHQsIGxlZnQpOworICAgICAgICBtb3ZlQ29uZGl0aW9uYWxseUFmdGVyRmxvYXRpbmdQ
b2ludENvbXBhcmUoY29uZCwgbGVmdCwgcmlnaHQsIHNyYywgZGVzdCk7CisgICAgfQogCi0gICAg
ICAgIGlmIChjb25kID09IERvdWJsZUVxdWFsKSB7Ci0gICAgICAgICAgICBpZiAobGVmdCA9PSBy
aWdodCkgewotICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtb3ZucHFfcnIoc3JjLCBkZXN0
KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IEp1bXAgaXNVbm9yZGVyZWQobV9hc3NlbWJsZXIuanAoKSk7Ci0gICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5jbW92ZXFfcnIoc3JjLCBkZXN0KTsKLSAgICAgICAgICAgIGlzVW5vcmRlcmVkLmxpbmso
dGhpcyk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoY29u
ZCA9PSBEb3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkKSB7Ci0gICAgICAgICAgICBpZiAobGVmdCA9
PSByaWdodCkgewotICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtb3ZwcV9ycihzcmMsIGRl
c3QpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuY21vdnBxX3JyKHNyYywgZGVzdCk7Ci0gICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5jbW92bmVxX3JyKHNyYywgZGVzdCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KKyAgICB2b2lkIG1vdmVDb25kaXRpb25hbGx5RmxvYXQoRG91YmxlQ29uZGl0aW9uIGNvbmQs
IEZQUmVnaXN0ZXJJRCBsZWZ0LCBGUFJlZ2lzdGVySUQgcmlnaHQsIFJlZ2lzdGVySUQgc3JjLCBS
ZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBBU1NFUlQoaXNTU0UyUHJlc2VudCgpKTsK
IAotICAgICAgICBBU1NFUlQoIShjb25kICYgRG91YmxlQ29uZGl0aW9uQml0U3BlY2lhbCkpOwot
ICAgICAgICBtX2Fzc2VtYmxlci5jbW92cV9ycihzdGF0aWNfY2FzdDxYODZBc3NlbWJsZXI6OkNv
bmRpdGlvbj4oY29uZCAmIH5Eb3VibGVDb25kaXRpb25CaXRzKSwgc3JjLCBkZXN0KTsKKyAgICAg
ICAgaWYgKGNvbmQgJiBEb3VibGVDb25kaXRpb25CaXRJbnZlcnQpCisgICAgICAgICAgICBtX2Fz
c2VtYmxlci51Y29taXNzX3JyKGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgbV9hc3NlbWJsZXIudWNvbWlzc19ycihyaWdodCwgbGVmdCk7CisgICAgICAgIG1vdmVDb25k
aXRpb25hbGx5QWZ0ZXJGbG9hdGluZ1BvaW50Q29tcGFyZShjb25kLCBsZWZ0LCByaWdodCwgc3Jj
LCBkZXN0KTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBzd2FwKFJlZ2lzdGVySUQgcmVnMSwgUmVn
aXN0ZXJJRCByZWcyKQpAQCAtMTc5Nyw2ICsxODU4LDYyIEBAIHByaXZhdGU6CiAgICAgICAgIHNr
aXBOb25aZXJvQ2FzZS5saW5rKHRoaXMpOwogICAgIH0KIAorICAgIEp1bXAganVtcEFmdGVyRmxv
YXRpbmdQb2ludENvbXBhcmUoRG91YmxlQ29uZGl0aW9uIGNvbmQsIEZQUmVnaXN0ZXJJRCBsZWZ0
LCBGUFJlZ2lzdGVySUQgcmlnaHQpCisgICAgeworICAgICAgICBpZiAoY29uZCA9PSBEb3VibGVF
cXVhbCkgeworICAgICAgICAgICAgaWYgKGxlZnQgPT0gcmlnaHQpCisgICAgICAgICAgICAgICAg
cmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuam5wKCkpOworICAgICAgICAgICAgSnVtcCBpc1Vub3Jk
ZXJlZChtX2Fzc2VtYmxlci5qcCgpKTsKKyAgICAgICAgICAgIEp1bXAgcmVzdWx0ID0gSnVtcCht
X2Fzc2VtYmxlci5qZSgpKTsKKyAgICAgICAgICAgIGlzVW5vcmRlcmVkLmxpbmsodGhpcyk7Cisg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgICAgIGlmIChjb25kID09
IERvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQpIHsKKyAgICAgICAgICAgIGlmIChsZWZ0ID09IHJp
Z2h0KQorICAgICAgICAgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpwKCkpOworICAg
ICAgICAgICAgSnVtcCBpc1Vub3JkZXJlZChtX2Fzc2VtYmxlci5qcCgpKTsKKyAgICAgICAgICAg
IEp1bXAgaXNFcXVhbChtX2Fzc2VtYmxlci5qZSgpKTsKKyAgICAgICAgICAgIGlzVW5vcmRlcmVk
LmxpbmsodGhpcyk7CisgICAgICAgICAgICBKdW1wIHJlc3VsdCA9IGp1bXAoKTsKKyAgICAgICAg
ICAgIGlzRXF1YWwubGluayh0aGlzKTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
ICAgIH0KKworICAgICAgICBBU1NFUlQoIShjb25kICYgRG91YmxlQ29uZGl0aW9uQml0U3BlY2lh
bCkpOworICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qQ0Moc3RhdGljX2Nhc3Q8WDg2
QXNzZW1ibGVyOjpDb25kaXRpb24+KGNvbmQgJiB+RG91YmxlQ29uZGl0aW9uQml0cykpKTsKKyAg
ICB9CisKKyNpZiBDUFUoWDg2XzY0KQorICAgIHZvaWQgbW92ZUNvbmRpdGlvbmFsbHlBZnRlckZs
b2F0aW5nUG9pbnRDb21wYXJlKERvdWJsZUNvbmRpdGlvbiBjb25kLCBGUFJlZ2lzdGVySUQgbGVm
dCwgRlBSZWdpc3RlcklEIHJpZ2h0LCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQor
ICAgIHsKKyAgICAgICAgaWYgKGNvbmQgPT0gRG91YmxlRXF1YWwpIHsKKyAgICAgICAgICAgIGlm
IChsZWZ0ID09IHJpZ2h0KSB7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21vdm5wcV9y
cihzcmMsIGRlc3QpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgSnVtcCBpc1Vub3JkZXJlZChtX2Fzc2VtYmxlci5qcCgpKTsKKyAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLmNtb3ZlcV9ycihzcmMsIGRlc3QpOworICAgICAgICAgICAgaXNVbm9y
ZGVyZWQubGluayh0aGlzKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmIChjb25kID09IERvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQpIHsKKyAgICAgICAgICAg
IGlmIChsZWZ0ID09IHJpZ2h0KSB7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21vdnBx
X3JyKHNyYywgZGVzdCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5jbW92cHFfcnIoc3JjLCBkZXN0KTsKKyAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLmNtb3ZuZXFfcnIoc3JjLCBkZXN0KTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVCghKGNvbmQgJiBEb3VibGVDb25kaXRpb25C
aXRTcGVjaWFsKSk7CisgICAgICAgIGNtb3Yoc3RhdGljX2Nhc3Q8WDg2QXNzZW1ibGVyOjpDb25k
aXRpb24+KGNvbmQgJiB+RG91YmxlQ29uZGl0aW9uQml0cyksIHNyYywgZGVzdCk7CisgICAgfQor
I2VuZGlmCisKICNpZiBDUFUoWDg2KQogI2lmIE9TKE1BQ19PU19YKQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAppbmRleCA1ZDI5YzU5MmQ4YzQ5
ZDk3NzFmMGE0NjM1Zjk3MjYyODJlNWViNGRlLi40ZWI1ZDRiZDNkZTNiOGIxNmEyZjM1MmE0NzRj
MWUyZTQzNmE0ZmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L1g4NkFzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2
QXNzZW1ibGVyLmgKQEAgLTE5NDAsNiArMTk0MCwxOCBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9y
bWF0dGVyLnR3b0J5dGVPcChPUDJfQUREU0RfVnNkV3NkLCAoUmVnaXN0ZXJJRClkc3QsIGJhc2Us
IG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCBhZGRzc19ycihYTU1SZWdpc3RlcklEIHNyYywg
WE1NUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJF
X1NTRV9GMyk7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfQUREU0RfVnNkV3Nk
LCAoUmVnaXN0ZXJJRClkc3QsIChSZWdpc3RlcklEKXNyYyk7CisgICAgfQorCisgICAgdm9pZCBh
ZGRzc19tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFhNTVJlZ2lzdGVySUQgZHN0KQor
ICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9TU0VfRjMpOworICAgICAgICBt
X2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0FERFNEX1ZzZFdzZCwgKFJlZ2lzdGVySUQpZHN0LCBi
YXNlLCBvZmZzZXQpOworICAgIH0KKwogI2lmICFDUFUoWDg2XzY0KQogICAgIHZvaWQgYWRkc2Rf
bXIoY29uc3Qgdm9pZCogYWRkcmVzcywgWE1NUmVnaXN0ZXJJRCBkc3QpCiAgICAgewpAQCAtMTk4
OCwxMiArMjAwMCwyNCBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChP
UDJfQ1ZUU0QyU1NfVnNkV3NkLCBkc3QsIChSZWdpc3RlcklEKXNyYyk7CiAgICAgfQogCisgICAg
dm9pZCBjdnRzZDJzc19tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFhNTVJlZ2lzdGVy
SUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9TU0VfRjIpOwor
ICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0NWVFNEMlNTX1ZzZFdzZCwgZHN0LCBi
YXNlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgY3Z0c3Myc2RfcnIoWE1NUmVnaXN0ZXJJ
RCBzcmMsIFhNTVJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIucHJl
Zml4KFBSRV9TU0VfRjMpOwogICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0NWVFNT
MlNEX1ZzZFdzZCwgZHN0LCAoUmVnaXN0ZXJJRClzcmMpOwogICAgIH0KLSAgICAKKworICAgIHZv
aWQgY3Z0c3Myc2RfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBYTU1SZWdpc3RlcklE
IGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfU1NFX0YzKTsKKyAg
ICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9DVlRTUzJTRF9Wc2RXc2QsIGRzdCwgYmFz
ZSwgb2Zmc2V0KTsKKyAgICB9CisKICNpZiBDUFUoWDg2XzY0KQogICAgIHZvaWQgY3Z0dHNkMnNp
cV9ycihYTU1SZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewpAQCAtMjA1MSw2
ICsyMDc1LDEyIEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9TU0Vf
RjIpOwogICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX01PVlNEX1dzZFZzZCwgKFJl
Z2lzdGVySUQpc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CiAgICAgfQorCisgICAg
dm9pZCBtb3Zzc19ybShYTU1SZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBi
YXNlKQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9TU0VfRjMpOworICAg
ICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX01PVlNEX1dzZFZzZCwgKFJlZ2lzdGVySUQp
c3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KICAgICAKICAgICB2b2lkIG1vdnNzX3JtKFhNTVJl
Z2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5k
ZXgsIGludCBzY2FsZSkKICAgICB7CkBAIC0yMDY5LDcgKzIwOTksMTMgQEAgcHVibGljOgogICAg
ICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX1NTRV9GMik7CiAgICAgICAgIG1fZm9ybWF0dGVy
LnR3b0J5dGVPcChPUDJfTU9WU0RfVnNkV3NkLCBkc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zm
c2V0KTsKICAgICB9Ci0gICAgCisKKyAgICB2b2lkIG1vdnNzX21yKGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgWE1NUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRl
ci5wcmVmaXgoUFJFX1NTRV9GMyk7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJf
TU9WU0RfVnNkV3NkLCAoUmVnaXN0ZXJJRClkc3QsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCiAg
ICAgdm9pZCBtb3Zzc19tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQg
aW5kZXgsIGludCBzY2FsZSwgWE1NUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBtX2Zv
cm1hdHRlci5wcmVmaXgoUFJFX1NTRV9GMyk7CkBAIC0yMTAxLDYgKzIxMzcsMTggQEAgcHVibGlj
OgogICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX01VTFNEX1ZzZFdzZCwgKFJlZ2lz
dGVySUQpZHN0LCBiYXNlLCBvZmZzZXQpOwogICAgIH0KIAorICAgIHZvaWQgbXVsc3NfcnIoWE1N
UmVnaXN0ZXJJRCBzcmMsIFhNTVJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIucHJlZml4KFBSRV9TU0VfRjMpOworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3Ao
T1AyX01VTFNEX1ZzZFdzZCwgKFJlZ2lzdGVySUQpZHN0LCAoUmVnaXN0ZXJJRClzcmMpOworICAg
IH0KKworICAgIHZvaWQgbXVsc3NfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBYTU1S
ZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfU1NF
X0YzKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9NVUxTRF9Wc2RXc2QsIChS
ZWdpc3RlcklEKWRzdCwgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICB2b2lkIHBleHRyd19p
cnIoaW50IHdoaWNoV29yZCwgWE1NUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQogICAg
IHsKICAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9TU0VfNjYpOwpAQCAtMjE0MCw2ICsy
MTg4LDE4IEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9TVUJT
RF9Wc2RXc2QsIChSZWdpc3RlcklEKWRzdCwgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2
b2lkIHN1YnNzX3JyKFhNTVJlZ2lzdGVySUQgc3JjLCBYTU1SZWdpc3RlcklEIGRzdCkKKyAgICB7
CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfU1NFX0YzKTsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIudHdvQnl0ZU9wKE9QMl9TVUJTRF9Wc2RXc2QsIChSZWdpc3RlcklEKWRzdCwgKFJlZ2lz
dGVySUQpc3JjKTsKKyAgICB9CisKKyAgICB2b2lkIHN1YnNzX21yKGludCBvZmZzZXQsIFJlZ2lz
dGVySUQgYmFzZSwgWE1NUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRl
ci5wcmVmaXgoUFJFX1NTRV9GMyk7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJf
U1VCU0RfVnNkV3NkLCAoUmVnaXN0ZXJJRClkc3QsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCiAg
ICAgdm9pZCB1Y29taXNkX3JyKFhNTVJlZ2lzdGVySUQgc3JjLCBYTU1SZWdpc3RlcklEIGRzdCkK
ICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfU1NFXzY2KTsKQEAgLTIxNTIs
NiArMjIxMiwxNiBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJf
VUNPTUlTRF9Wc2RXc2QsIChSZWdpc3RlcklEKWRzdCwgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAK
KyAgICB2b2lkIHVjb21pc3NfcnIoWE1NUmVnaXN0ZXJJRCBzcmMsIFhNTVJlZ2lzdGVySUQgZHN0
KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9VQ09NSVNEX1ZzZFdz
ZCwgKFJlZ2lzdGVySUQpZHN0LCAoUmVnaXN0ZXJJRClzcmMpOworICAgIH0KKworICAgIHZvaWQg
dWNvbWlzc19tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFhNTVJlZ2lzdGVySUQgZHN0
KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9VQ09NSVNEX1ZzZFdz
ZCwgKFJlZ2lzdGVySUQpZHN0LCBiYXNlLCBvZmZzZXQpOworICAgIH0KKwogICAgIHZvaWQgZGl2
c2RfcnIoWE1NUmVnaXN0ZXJJRCBzcmMsIFhNTVJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAg
ICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9TU0VfRjIpOwpAQCAtMjE2NCw2ICsyMjM0LDE4IEBA
IHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9ESVZTRF9Wc2RXc2Qs
IChSZWdpc3RlcklEKWRzdCwgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIGRpdnNz
X3JyKFhNTVJlZ2lzdGVySUQgc3JjLCBYTU1SZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAg
IG1fZm9ybWF0dGVyLnByZWZpeChQUkVfU1NFX0YzKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdv
Qnl0ZU9wKE9QMl9ESVZTRF9Wc2RXc2QsIChSZWdpc3RlcklEKWRzdCwgKFJlZ2lzdGVySUQpc3Jj
KTsKKyAgICB9CisKKyAgICB2b2lkIGRpdnNzX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSwgWE1NUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgo
UFJFX1NTRV9GMyk7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfRElWU0RfVnNk
V3NkLCAoUmVnaXN0ZXJJRClkc3QsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCB4
b3Jwc19ycihYTU1SZWdpc3RlcklEIHNyYywgWE1NUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAg
ICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX1hPUlBEX1ZwZFdwZCwgKFJlZ2lzdGVySUQp
ZHN0LCAoUmVnaXN0ZXJJRClzcmMpOwpAQCAtMjE5Nyw2ICsyMjc5LDE4IEBAIHB1YmxpYzoKICAg
ICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9TUVJUU0RfVnNkV3NkLCAoUmVnaXN0ZXJJ
RClkc3QsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCBzcXJ0c3NfcnIoWE1NUmVn
aXN0ZXJJRCBzcmMsIFhNTVJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0
ZXIucHJlZml4KFBSRV9TU0VfRjMpOworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1Ay
X1NRUlRTRF9Wc2RXc2QsIChSZWdpc3RlcklEKWRzdCwgKFJlZ2lzdGVySUQpc3JjKTsKKyAgICB9
CisKKyAgICB2b2lkIHNxcnRzc19tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFhNTVJl
Z2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9TU0Vf
RjMpOworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX1NRUlRTRF9Wc2RXc2QsIChS
ZWdpc3RlcklEKWRzdCwgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKICAgICAvLyBNaXNjIGluc3Ry
dWN0aW9uczoKIAogICAgIHZvaWQgaW50MygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNDb25zdDMyVmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
Q29uc3QzMlZhbHVlLmNwcAppbmRleCAyODZiYTEyMjA5ODg0ZmE4ZGJkYWU4ZDM4Yjk2ZWU1NDFh
MzllZjMxLi40MjA0YjQ3NDBhMTczMjM3ZGNhNTZmOTg5Mzk2N2YxNTliZjk1MDgwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdDMyVmFsdWUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0MzJWYWx1ZS5jcHAKQEAgLTE1NCw2ICsxNTQs
MTEgQEAgVmFsdWUqIENvbnN0MzJWYWx1ZTo6elNockNvbnN0YW50KFByb2NlZHVyZSYgcHJvYywg
Y29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAogICAgIHJldHVybiBwcm9jLmFkZDxDb25zdDMyVmFs
dWU+KG9yaWdpbigpLCBzdGF0aWNfY2FzdDxpbnQzMl90PihzdGF0aWNfY2FzdDx1aW50MzJfdD4o
bV92YWx1ZSkgPj4gKG90aGVyLT5hc0ludDMyKCkgJiAzMSkpKTsKIH0KIAorVmFsdWUqIENvbnN0
MzJWYWx1ZTo6Yml0d2lzZUNhc3RDb25zdGFudChQcm9jZWR1cmUmIHByb2MpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIHByb2MuYWRkPENvbnN0RmxvYXRWYWx1ZT4ob3JpZ2luKCksIGJpdHdpc2VfY2Fz
dDxmbG9hdD4obV92YWx1ZSkpOworfQorCiBUcmlTdGF0ZSBDb25zdDMyVmFsdWU6OmVxdWFsQ29u
c3RhbnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAogewogICAgIGlmICghb3RoZXItPmhhc0lu
dDMyKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdDMyVmFs
dWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0MzJWYWx1ZS5oCmluZGV4IGEx
ZWVlOWYwMzRlY2NkNzQyMDZiMjk2OGJhYTE1NzhhOTBjZGJmZTQuLjQzODAzOTE3MDEwMGI2ZTI1
ZDBiODUyY2I3MjkxMTgwNDZkNTA2MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0NvbnN0MzJWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Nv
bnN0MzJWYWx1ZS5oCkBAIC01Niw2ICs1Niw3IEBAIHB1YmxpYzoKICAgICBWYWx1ZSogc2hsQ29u
c3RhbnQoUHJvY2VkdXJlJiwgY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdCBvdmVycmlkZTsKICAg
ICBWYWx1ZSogc1NockNvbnN0YW50KFByb2NlZHVyZSYsIGNvbnN0IFZhbHVlKiBvdGhlcikgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgVmFsdWUqIHpTaHJDb25zdGFudChQcm9jZWR1cmUmLCBjb25zdCBW
YWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOworICAgIFZhbHVlKiBiaXR3aXNlQ2FzdENvbnN0
YW50KFByb2NlZHVyZSYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgVHJpU3RhdGUgZXF1YWxDb25z
dGFudChjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOwogICAgIFRyaVN0YXRlIG5v
dEVxdWFsQ29uc3RhbnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdCBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0RG91YmxlVmFsdWUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3REb3VibGVWYWx1ZS5jcHAKaW5kZXggMzEz
Yzg1MjA5ZGQ3ZjIzZmQ5NzhkN2RiNjc0OGY1MjVjMDZlZWFlYy4uODUwNDJjYzc5ZmU2MDZkOGIz
OWJlZjA5ZGNlYjY4OWQ1NGJhMmZlYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzQ29uc3REb3VibGVWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzQ29uc3REb3VibGVWYWx1ZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShC
M19KSVQpCiAKKyNpbmNsdWRlICJCM0NvbnN0RmxvYXRWYWx1ZS5oIgogI2luY2x1ZGUgIkIzUHJv
Y2VkdXJlSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzVmFsdWVJbmxpbmVzLmgiCiAKQEAgLTczLDYg
Kzc0LDE2IEBAIFZhbHVlKiBDb25zdERvdWJsZVZhbHVlOjpiaXR3aXNlQ2FzdENvbnN0YW50KFBy
b2NlZHVyZSYgcHJvYykgY29uc3QKICAgICByZXR1cm4gcHJvYy5hZGQ8Q29uc3Q2NFZhbHVlPihv
cmlnaW4oKSwgYml0d2lzZV9jYXN0PGludDY0X3Q+KG1fdmFsdWUpKTsKIH0KIAorVmFsdWUqIENv
bnN0RG91YmxlVmFsdWU6OmRvdWJsZVRvRmxvYXRDb25zdGFudChQcm9jZWR1cmUmIHByb2MpIGNv
bnN0Cit7CisgICAgcmV0dXJuIHByb2MuYWRkPENvbnN0RmxvYXRWYWx1ZT4ob3JpZ2luKCksIHN0
YXRpY19jYXN0PGZsb2F0PihtX3ZhbHVlKSk7Cit9CisKK1ZhbHVlKiBDb25zdERvdWJsZVZhbHVl
OjpzcXJ0Q29uc3RhbnQoUHJvY2VkdXJlJiBwcm9jKSBjb25zdAoreworICAgIHJldHVybiBwcm9j
LmFkZDxDb25zdERvdWJsZVZhbHVlPihvcmlnaW4oKSwgc3FydChtX3ZhbHVlKSk7Cit9CisKIFZh
bHVlKiBDb25zdERvdWJsZVZhbHVlOjpkaXZDb25zdGFudChQcm9jZWR1cmUmIHByb2MsIGNvbnN0
IFZhbHVlKiBvdGhlcikgY29uc3QKIHsKICAgICBpZiAoIW90aGVyLT5oYXNEb3VibGUoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0RG91YmxlVmFsdWUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0RG91YmxlVmFsdWUuaAppbmRleCAwYTNk
MjI4ZmI3MTllNTc0M2IyYmVhYzhmOTk3MDIyMTA3NTcyNmI5Li4yYmZiZTM0NDliZmJhMTkxOWU4
MGRjYmQzOTQyNTQ3ZTVjZGE3ZTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNDb25zdERvdWJsZVZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
Q29uc3REb3VibGVWYWx1ZS5oCkBAIC00Nyw2ICs0Nyw4IEBAIHB1YmxpYzoKICAgICBWYWx1ZSog
ZGl2Q29uc3RhbnQoUHJvY2VkdXJlJiwgY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdCBvdmVycmlk
ZTsKICAgICBWYWx1ZSogbXVsQ29uc3RhbnQoUHJvY2VkdXJlJiwgY29uc3QgVmFsdWUqIG90aGVy
KSBjb25zdCBvdmVycmlkZTsKICAgICBWYWx1ZSogYml0d2lzZUNhc3RDb25zdGFudChQcm9jZWR1
cmUmKSBjb25zdCBvdmVycmlkZTsKKyAgICBWYWx1ZSogZG91YmxlVG9GbG9hdENvbnN0YW50KFBy
b2NlZHVyZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIFZhbHVlKiBzcXJ0Q29uc3RhbnQoUHJvY2Vk
dXJlJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBUcmlTdGF0ZSBlcXVhbENvbnN0YW50KGNvbnN0
IFZhbHVlKiBvdGhlcikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgVHJpU3RhdGUgbm90RXF1YWxDb25z
dGFudChjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3RGbG9hdFZhbHVlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0NvbnN0RmxvYXRWYWx1ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDQ3MTJjMzZi
ZjYyY2U4Zjk2NGU1ZTU1YjAyYTQ4Zjk2YTliZTljMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0RmxvYXRWYWx1ZS5jcHAKQEAgLTAsMCArMSwxNDQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkIzQ29uc3RGbG9hdFZhbHVlLmgiCisKKyNpZiBFTkFC
TEUoQjNfSklUKQorCisjaW5jbHVkZSAiQjNDb25zdERvdWJsZVZhbHVlLmgiCisjaW5jbHVkZSAi
QjNQcm9jZWR1cmVJbmxpbmVzLmgiCisjaW5jbHVkZSAiQjNWYWx1ZUlubGluZXMuaCIKKworbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK0NvbnN0RmxvYXRWYWx1ZTo6fkNvbnN0Rmxv
YXRWYWx1ZSgpCit7Cit9CisKK1ZhbHVlKiBDb25zdEZsb2F0VmFsdWU6Om5lZ0NvbnN0YW50KFBy
b2NlZHVyZSYgcHJvYykgY29uc3QKK3sKKyAgICByZXR1cm4gcHJvYy5hZGQ8Q29uc3RGbG9hdFZh
bHVlPihvcmlnaW4oKSwgLW1fdmFsdWUpOworfQorCitWYWx1ZSogQ29uc3RGbG9hdFZhbHVlOjph
ZGRDb25zdGFudChQcm9jZWR1cmUmIHByb2MsIGludDMyX3Qgb3RoZXIpIGNvbnN0Cit7CisgICAg
cmV0dXJuIHByb2MuYWRkPENvbnN0RmxvYXRWYWx1ZT4ob3JpZ2luKCksIG1fdmFsdWUgKyBzdGF0
aWNfY2FzdDxmbG9hdD4ob3RoZXIpKTsKK30KKworVmFsdWUqIENvbnN0RmxvYXRWYWx1ZTo6YWRk
Q29uc3RhbnQoUHJvY2VkdXJlJiBwcm9jLCBjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0Cit7Cisg
ICAgaWYgKCFvdGhlci0+aGFzRmxvYXQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
cmV0dXJuIHByb2MuYWRkPENvbnN0RmxvYXRWYWx1ZT4ob3JpZ2luKCksIG1fdmFsdWUgKyBvdGhl
ci0+YXNGbG9hdCgpKTsKK30KKworVmFsdWUqIENvbnN0RmxvYXRWYWx1ZTo6c3ViQ29uc3RhbnQo
UHJvY2VkdXJlJiBwcm9jLCBjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0Cit7CisgICAgaWYgKCFv
dGhlci0+aGFzRmxvYXQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHBy
b2MuYWRkPENvbnN0RmxvYXRWYWx1ZT4ob3JpZ2luKCksIG1fdmFsdWUgLSBvdGhlci0+YXNGbG9h
dCgpKTsKK30KKworVmFsdWUqIENvbnN0RmxvYXRWYWx1ZTo6bXVsQ29uc3RhbnQoUHJvY2VkdXJl
JiBwcm9jLCBjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0Cit7CisgICAgaWYgKCFvdGhlci0+aGFz
RmxvYXQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHByb2MuYWRkPENv
bnN0RmxvYXRWYWx1ZT4ob3JpZ2luKCksIG1fdmFsdWUgKiBvdGhlci0+YXNGbG9hdCgpKTsKK30K
KworVmFsdWUqIENvbnN0RmxvYXRWYWx1ZTo6Yml0d2lzZUNhc3RDb25zdGFudChQcm9jZWR1cmUm
IHByb2MpIGNvbnN0Cit7CisgICAgcmV0dXJuIHByb2MuYWRkPENvbnN0MzJWYWx1ZT4ob3JpZ2lu
KCksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihtX3ZhbHVlKSk7Cit9CisKK1ZhbHVlKiBDb25zdEZs
b2F0VmFsdWU6OmZsb2F0VG9Eb3VibGVDb25zdGFudChQcm9jZWR1cmUmIHByb2MpIGNvbnN0Cit7
CisgICAgcmV0dXJuIHByb2MuYWRkPENvbnN0RG91YmxlVmFsdWU+KG9yaWdpbigpLCBzdGF0aWNf
Y2FzdDxkb3VibGU+KG1fdmFsdWUpKTsKK30KKworVmFsdWUqIENvbnN0RmxvYXRWYWx1ZTo6c3Fy
dENvbnN0YW50KFByb2NlZHVyZSYgcHJvYykgY29uc3QKK3sKKyAgICByZXR1cm4gcHJvYy5hZGQ8
Q29uc3RGbG9hdFZhbHVlPihvcmlnaW4oKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNxcnQobV92YWx1
ZSkpKTsKK30KKworVmFsdWUqIENvbnN0RmxvYXRWYWx1ZTo6ZGl2Q29uc3RhbnQoUHJvY2VkdXJl
JiBwcm9jLCBjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0Cit7CisgICAgaWYgKCFvdGhlci0+aGFz
RmxvYXQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHByb2MuYWRkPENv
bnN0RmxvYXRWYWx1ZT4ob3JpZ2luKCksIG1fdmFsdWUgLyBvdGhlci0+YXNGbG9hdCgpKTsKK30K
KworVHJpU3RhdGUgQ29uc3RGbG9hdFZhbHVlOjplcXVhbENvbnN0YW50KGNvbnN0IFZhbHVlKiBv
dGhlcikgY29uc3QKK3sKKyAgICBpZiAoIW90aGVyLT5oYXNGbG9hdCgpKQorICAgICAgICByZXR1
cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICByZXR1cm4gdHJpU3RhdGUobV92YWx1ZSA9PSBvdGhlci0+
YXNGbG9hdCgpKTsKK30KKworVHJpU3RhdGUgQ29uc3RGbG9hdFZhbHVlOjpub3RFcXVhbENvbnN0
YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKK3sKKyAgICBpZiAoIW90aGVyLT5oYXNGbG9h
dCgpKQorICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICByZXR1cm4gdHJpU3RhdGUo
bV92YWx1ZSAhPSBvdGhlci0+YXNGbG9hdCgpKTsKK30KKworVHJpU3RhdGUgQ29uc3RGbG9hdFZh
bHVlOjpsZXNzVGhhbkNvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKK3sKKyAgICBp
ZiAoIW90aGVyLT5oYXNGbG9hdCgpKQorICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAg
ICByZXR1cm4gdHJpU3RhdGUobV92YWx1ZSA8IG90aGVyLT5hc0Zsb2F0KCkpOworfQorCitUcmlT
dGF0ZSBDb25zdEZsb2F0VmFsdWU6OmdyZWF0ZXJUaGFuQ29uc3RhbnQoY29uc3QgVmFsdWUqIG90
aGVyKSBjb25zdAoreworICAgIGlmICghb3RoZXItPmhhc0Zsb2F0KCkpCisgICAgICAgIHJldHVy
biBNaXhlZFRyaVN0YXRlOworICAgIHJldHVybiB0cmlTdGF0ZShtX3ZhbHVlID4gb3RoZXItPmFz
RmxvYXQoKSk7Cit9CisKK1RyaVN0YXRlIENvbnN0RmxvYXRWYWx1ZTo6bGVzc0VxdWFsQ29uc3Rh
bnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAoreworICAgIGlmICghb3RoZXItPmhhc0Zsb2F0
KCkpCisgICAgICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgIHJldHVybiB0cmlTdGF0ZSht
X3ZhbHVlIDw9IG90aGVyLT5hc0Zsb2F0KCkpOworfQorCitUcmlTdGF0ZSBDb25zdEZsb2F0VmFs
dWU6OmdyZWF0ZXJFcXVhbENvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKK3sKKyAg
ICBpZiAoIW90aGVyLT5oYXNGbG9hdCgpKQorICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsK
KyAgICByZXR1cm4gdHJpU3RhdGUobV92YWx1ZSA+PSBvdGhlci0+YXNGbG9hdCgpKTsKK30KKwor
dm9pZCBDb25zdEZsb2F0VmFsdWU6OmR1bXBNZXRhKENvbW1hUHJpbnRlciYgY29tbWEsIFByaW50
U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgb3V0LnByaW50KGNvbW1hKTsKKyAgICBvdXQucHJp
bnRmKCIlbGUiLCBtX3ZhbHVlKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKKyNl
bmRpZiAvLyBFTkFCTEUoQjNfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzQ29uc3RGbG9hdFZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25z
dEZsb2F0VmFsdWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZmZmMTRhMDVlYTkwYjJiYjQ3YWFhYzI2MDE2OWE4
OWVkZjhjZjQyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
Q29uc3RGbG9hdFZhbHVlLmgKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEIzQ29uc3RGbG9hdFZhbHVlX2gKKyNk
ZWZpbmUgQjNDb25zdEZsb2F0VmFsdWVfaAorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworI2luY2x1
ZGUgIkIzVmFsdWUuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK2NsYXNz
IEpTX0VYUE9SVF9QUklWQVRFIENvbnN0RmxvYXRWYWx1ZSA6IHB1YmxpYyBWYWx1ZSB7CitwdWJs
aWM6CisgICAgc3RhdGljIGJvb2wgYWNjZXB0cyhPcGNvZGUgb3Bjb2RlKSB7IHJldHVybiBvcGNv
ZGUgPT0gQ29uc3RGbG9hdDsgfQorCisgICAgfkNvbnN0RmxvYXRWYWx1ZSgpOworCisgICAgZmxv
YXQgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CisKKyAgICBWYWx1ZSogbmVnQ29u
c3RhbnQoUHJvY2VkdXJlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmFsdWUqIGFkZENvbnN0YW50
KFByb2NlZHVyZSYsIGludDMyX3Qgb3RoZXIpIGNvbnN0IG92ZXJyaWRlOworICAgIFZhbHVlKiBh
ZGRDb25zdGFudChQcm9jZWR1cmUmLCBjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRl
OworICAgIFZhbHVlKiBzdWJDb25zdGFudChQcm9jZWR1cmUmLCBjb25zdCBWYWx1ZSogb3RoZXIp
IGNvbnN0IG92ZXJyaWRlOworICAgIFZhbHVlKiBkaXZDb25zdGFudChQcm9jZWR1cmUmLCBjb25z
dCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOworICAgIFZhbHVlKiBtdWxDb25zdGFudChQ
cm9jZWR1cmUmLCBjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOworICAgIFZhbHVl
KiBiaXR3aXNlQ2FzdENvbnN0YW50KFByb2NlZHVyZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIFZh
bHVlKiBmbG9hdFRvRG91YmxlQ29uc3RhbnQoUHJvY2VkdXJlJikgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgVmFsdWUqIHNxcnRDb25zdGFudChQcm9jZWR1cmUmKSBjb25zdCBvdmVycmlkZTsKKworICAg
IFRyaVN0YXRlIGVxdWFsQ29uc3RhbnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBUcmlTdGF0ZSBub3RFcXVhbENvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29u
c3Qgb3ZlcnJpZGU7CisgICAgVHJpU3RhdGUgbGVzc1RoYW5Db25zdGFudChjb25zdCBWYWx1ZSog
b3RoZXIpIGNvbnN0IG92ZXJyaWRlOworICAgIFRyaVN0YXRlIGdyZWF0ZXJUaGFuQ29uc3RhbnQo
Y29uc3QgVmFsdWUqIG90aGVyKSBjb25zdCBvdmVycmlkZTsKKyAgICBUcmlTdGF0ZSBsZXNzRXF1
YWxDb25zdGFudChjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOworICAgIFRyaVN0
YXRlIGdyZWF0ZXJFcXVhbENvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3Qgb3ZlcnJp
ZGU7CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGR1bXBNZXRhKENvbW1hUHJpbnRlciYsIFByaW50
U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFBy
b2NlZHVyZTsKKworICAgIENvbnN0RmxvYXRWYWx1ZSh1bnNpZ25lZCBpbmRleCwgT3JpZ2luIG9y
aWdpbiwgZmxvYXQgdmFsdWUpCisgICAgICAgIDogVmFsdWUoaW5kZXgsIENoZWNrZWRPcGNvZGUs
IENvbnN0RmxvYXQsIEZsb2F0LCBvcmlnaW4pCisgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKKyAg
ICB7CisgICAgfQorCisgICAgZmxvYXQgbV92YWx1ZTsKK307CisKK30gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpCMworCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKKworI2VuZGlmIC8vIEIzQ29uc3RG
bG9hdFZhbHVlX2gKKwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2Vu
ZXJhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJhdGUuY3BwCmluZGV4
IDRhMmI0N2YwM2E4MzQyOGJlNGE4MDVkNThmNDY0ODhjOWY5OGFhOTkuLjMzMDI4MmU2ZjFlMTE1
OThlYTgxZmMwYjExNjdmYmY5YjEzZGVkY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0dlbmVyYXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNH
ZW5lcmF0ZS5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJCM0xvd2VyVG9BaXIuaCIK
ICNpbmNsdWRlICJCM01vdmVDb25zdGFudHMuaCIKICNpbmNsdWRlICJCM1Byb2NlZHVyZS5oIgor
I2luY2x1ZGUgIkIzUmVkdWNlRG91YmxlVG9GbG9hdC5oIgogI2luY2x1ZGUgIkIzUmVkdWNlU3Ry
ZW5ndGguaCIKICNpbmNsdWRlICJCM1RpbWluZ1Njb3BlLmgiCiAjaW5jbHVkZSAiQjNWYWxpZGF0
ZS5oIgpAQCAtNzMsNiArNzQsOCBAQCB2b2lkIGdlbmVyYXRlVG9BaXIoUHJvY2VkdXJlJiBwcm9j
ZWR1cmUsIHVuc2lnbmVkIG9wdExldmVsKQogICAgIGxvd2VyTWFjcm9zKHByb2NlZHVyZSk7CiAK
ICAgICBpZiAob3B0TGV2ZWwgPj0gMSkgeworICAgICAgICByZWR1Y2VEb3VibGVUb0Zsb2F0KHBy
b2NlZHVyZSk7CisKICAgICAgICAgcmVkdWNlU3RyZW5ndGgocHJvY2VkdXJlKTsKICAgICAgICAg
CiAgICAgICAgIC8vIEZJWE1FOiBBZGQgbW9yZSBvcHRpbWl6YXRpb25zIGhlcmUuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCmluZGV4IDBmYWJlNDlhN2RjYmY2ZDg0
ZmI5NGY3MjQwNjNjNWU0MDk5NDEwNDcuLjI5NDYxNWU3MjhmOTZmNWRiZGJlYjBmZTUwNGFjNzI4
MTViZmRlYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9B
aXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCkBA
IC00NzUsNyArNDc1LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIEJ5IGNvbnZlbnRpb24sIHdlIHVz
ZSBPb3BzIHRvIG1lYW4gIkkgZG9uJ3Qga25vdyIuCiAgICAgQWlyOjpPcGNvZGUgdHJ5T3Bjb2Rl
Rm9yVHlwZSgKLSAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlMzIsIEFpcjo6T3Bjb2RlIG9wY29k
ZTY0LCBBaXI6Ok9wY29kZSBvcGNvZGVEb3VibGUsIFR5cGUgdHlwZSkKKyAgICAgICAgQWlyOjpP
cGNvZGUgb3Bjb2RlMzIsIEFpcjo6T3Bjb2RlIG9wY29kZTY0LCBBaXI6Ok9wY29kZSBvcGNvZGVE
b3VibGUsIEFpcjo6T3Bjb2RlIG9wY29kZUZsb2F0LCBUeXBlIHR5cGUpCiAgICAgewogICAgICAg
ICBBaXI6Ok9wY29kZSBvcGNvZGU7CiAgICAgICAgIHN3aXRjaCAodHlwZSkgewpAQCAtNDg1LDYg
KzQ4NSw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgSW50NjQ6CiAgICAgICAgICAgICBvcGNv
ZGUgPSBvcGNvZGU2NDsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEZsb2F0Ogor
ICAgICAgICAgICAgb3Bjb2RlID0gb3Bjb2RlRmxvYXQ7CisgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBEb3VibGU6CiAgICAgICAgICAgICBvcGNvZGUgPSBvcGNvZGVEb3VibGU7CiAg
ICAgICAgICAgICBicmVhazsKQEAgLTQ5NiwxOCArNDk5LDI4IEBAIHByaXZhdGU6CiAgICAgICAg
IHJldHVybiBvcGNvZGU7CiAgICAgfQogCisgICAgQWlyOjpPcGNvZGUgdHJ5T3Bjb2RlRm9yVHlw
ZShBaXI6Ok9wY29kZSBvcGNvZGUzMiwgQWlyOjpPcGNvZGUgb3Bjb2RlNjQsIFR5cGUgdHlwZSkK
KyAgICB7CisgICAgICAgIHJldHVybiB0cnlPcGNvZGVGb3JUeXBlKG9wY29kZTMyLCBvcGNvZGU2
NCwgQWlyOjpPb3BzLCBBaXI6Ok9vcHMsIHR5cGUpOworICAgIH0KKwogICAgIEFpcjo6T3Bjb2Rl
IG9wY29kZUZvclR5cGUoCi0gICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZTMyLCBBaXI6Ok9wY29k
ZSBvcGNvZGU2NCwgQWlyOjpPcGNvZGUgb3Bjb2RlRG91YmxlLCBUeXBlIHR5cGUpCisgICAgICAg
IEFpcjo6T3Bjb2RlIG9wY29kZTMyLCBBaXI6Ok9wY29kZSBvcGNvZGU2NCwgQWlyOjpPcGNvZGUg
b3Bjb2RlRG91YmxlLCBBaXI6Ok9wY29kZSBvcGNvZGVGbG9hdCwgVHlwZSB0eXBlKQogICAgIHsK
LSAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gdHJ5T3Bjb2RlRm9yVHlwZShvcGNvZGUzMiwg
b3Bjb2RlNjQsIG9wY29kZURvdWJsZSwgdHlwZSk7CisgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29k
ZSA9IHRyeU9wY29kZUZvclR5cGUob3Bjb2RlMzIsIG9wY29kZTY0LCBvcGNvZGVEb3VibGUsIG9w
Y29kZUZsb2F0LCB0eXBlKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQob3Bjb2RlICE9IEFpcjo6
T29wcyk7CiAgICAgICAgIHJldHVybiBvcGNvZGU7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8QWly
OjpPcGNvZGUgb3Bjb2RlMzIsIEFpcjo6T3Bjb2RlIG9wY29kZTY0LCBBaXI6Ok9wY29kZSBvcGNv
ZGVEb3VibGU+CisgICAgQWlyOjpPcGNvZGUgb3Bjb2RlRm9yVHlwZShBaXI6Ok9wY29kZSBvcGNv
ZGUzMiwgQWlyOjpPcGNvZGUgb3Bjb2RlNjQsIFR5cGUgdHlwZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiB0cnlPcGNvZGVGb3JUeXBlKG9wY29kZTMyLCBvcGNvZGU2NCwgQWlyOjpPb3BzLCBBaXI6
Ok9vcHMsIHR5cGUpOworICAgIH0KKworICAgIHRlbXBsYXRlPEFpcjo6T3Bjb2RlIG9wY29kZTMy
LCBBaXI6Ok9wY29kZSBvcGNvZGU2NCwgQWlyOjpPcGNvZGUgb3Bjb2RlRG91YmxlID0gQWlyOjpP
b3BzLCBBaXI6Ok9wY29kZSBvcGNvZGVGbG9hdCA9IEFpcjo6T29wcz4KICAgICB2b2lkIGFwcGVu
ZFVuT3AoVmFsdWUqIHZhbHVlKQogICAgIHsKLSAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0g
b3Bjb2RlRm9yVHlwZShvcGNvZGUzMiwgb3Bjb2RlNjQsIG9wY29kZURvdWJsZSwgdmFsdWUtPnR5
cGUoKSk7CisgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IG9wY29kZUZvclR5cGUob3Bjb2Rl
MzIsIG9wY29kZTY0LCBvcGNvZGVEb3VibGUsIG9wY29kZUZsb2F0LCB2YWx1ZS0+dHlwZSgpKTsK
ICAgICAgICAgCiAgICAgICAgIFRtcCByZXN1bHQgPSB0bXAobV92YWx1ZSk7CiAKQEAgLTU2Miwx
MiArNTc1LDEwIEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0g
ICAgdGVtcGxhdGU8Ci0gICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZTMyLCBBaXI6Ok9wY29kZSBv
cGNvZGU2NCwgQWlyOjpPcGNvZGUgb3Bjb2RlRG91YmxlLAotICAgICAgICBDb21tdXRhdGl2aXR5
IGNvbW11dGF0aXZpdHkgPSBOb3RDb21tdXRhdGl2ZT4KKyAgICB0ZW1wbGF0ZTxBaXI6Ok9wY29k
ZSBvcGNvZGUzMiwgQWlyOjpPcGNvZGUgb3Bjb2RlNjQsIEFpcjo6T3Bjb2RlIG9wY29kZURvdWJs
ZSwgQWlyOjpPcGNvZGUgb3Bjb2RlRmxvYXQsIENvbW11dGF0aXZpdHkgY29tbXV0YXRpdml0eSA9
IE5vdENvbW11dGF0aXZlPgogICAgIHZvaWQgYXBwZW5kQmluT3AoVmFsdWUqIGxlZnQsIFZhbHVl
KiByaWdodCkKICAgICB7Ci0gICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IG9wY29kZUZvclR5
cGUob3Bjb2RlMzIsIG9wY29kZTY0LCBvcGNvZGVEb3VibGUsIGxlZnQtPnR5cGUoKSk7CisgICAg
ICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IG9wY29kZUZvclR5cGUob3Bjb2RlMzIsIG9wY29kZTY0
LCBvcGNvZGVEb3VibGUsIG9wY29kZUZsb2F0LCBsZWZ0LT50eXBlKCkpOwogICAgICAgICAKICAg
ICAgICAgVG1wIHJlc3VsdCA9IHRtcChtX3ZhbHVlKTsKICAgICAgICAgCkBAIC02NDUsMTAgKzY1
NiwxNiBAQCBwcml2YXRlOgogICAgICAgICBhcHBlbmQob3Bjb2RlLCB0bXAocmlnaHQpLCByZXN1
bHQpOwogICAgIH0KIAorICAgIHRlbXBsYXRlPEFpcjo6T3Bjb2RlIG9wY29kZTMyLCBBaXI6Ok9w
Y29kZSBvcGNvZGU2NCwgQ29tbXV0YXRpdml0eSBjb21tdXRhdGl2aXR5ID0gTm90Q29tbXV0YXRp
dmU+CisgICAgdm9pZCBhcHBlbmRCaW5PcChWYWx1ZSogbGVmdCwgVmFsdWUqIHJpZ2h0KQorICAg
IHsKKyAgICAgICAgYXBwZW5kQmluT3A8b3Bjb2RlMzIsIG9wY29kZTY0LCBBaXI6Ok9vcHMsIEFp
cjo6T29wcywgY29tbXV0YXRpdml0eT4obGVmdCwgcmlnaHQpOworICAgIH0KKwogICAgIHRlbXBs
YXRlPEFpcjo6T3Bjb2RlIG9wY29kZTMyLCBBaXI6Ok9wY29kZSBvcGNvZGU2ND4KICAgICB2b2lk
IGFwcGVuZFNoaWZ0KFZhbHVlKiB2YWx1ZSwgVmFsdWUqIGFtb3VudCkKICAgICB7Ci0gICAgICAg
IEFpcjo6T3Bjb2RlIG9wY29kZSA9IG9wY29kZUZvclR5cGUob3Bjb2RlMzIsIG9wY29kZTY0LCBB
aXI6Ok9vcHMsIHZhbHVlLT50eXBlKCkpOworICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBv
cGNvZGVGb3JUeXBlKG9wY29kZTMyLCBvcGNvZGU2NCwgdmFsdWUtPnR5cGUoKSk7CiAgICAgICAg
IAogICAgICAgICBpZiAoaW1tKGFtb3VudCkpIHsKICAgICAgICAgICAgIGFwcGVuZChNb3ZlLCB0
bXAodmFsdWUpLCB0bXAobV92YWx1ZSkpOwpAQCAtNjY0LDcgKzY4MSw3IEBAIHByaXZhdGU6CiAg
ICAgdGVtcGxhdGU8QWlyOjpPcGNvZGUgb3Bjb2RlMzIsIEFpcjo6T3Bjb2RlIG9wY29kZTY0Pgog
ICAgIGJvb2wgdHJ5QXBwZW5kU3RvcmVVbk9wKFZhbHVlKiB2YWx1ZSkKICAgICB7Ci0gICAgICAg
IEFpcjo6T3Bjb2RlIG9wY29kZSA9IHRyeU9wY29kZUZvclR5cGUob3Bjb2RlMzIsIG9wY29kZTY0
LCBBaXI6Ok9vcHMsIHZhbHVlLT50eXBlKCkpOworICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUg
PSB0cnlPcGNvZGVGb3JUeXBlKG9wY29kZTMyLCBvcGNvZGU2NCwgdmFsdWUtPnR5cGUoKSk7CiAg
ICAgICAgIGlmIChvcGNvZGUgPT0gQWlyOjpPb3BzKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICAKQEAgLTY4Nyw3ICs3MDQsNyBAQCBwcml2YXRlOgogICAgICAgICBBaXI6Ok9w
Y29kZSBvcGNvZGUzMiwgQWlyOjpPcGNvZGUgb3Bjb2RlNjQsIENvbW11dGF0aXZpdHkgY29tbXV0
YXRpdml0eSA9IE5vdENvbW11dGF0aXZlPgogICAgIGJvb2wgdHJ5QXBwZW5kU3RvcmVCaW5PcChW
YWx1ZSogbGVmdCwgVmFsdWUqIHJpZ2h0KQogICAgIHsKLSAgICAgICAgQWlyOjpPcGNvZGUgb3Bj
b2RlID0gdHJ5T3Bjb2RlRm9yVHlwZShvcGNvZGUzMiwgb3Bjb2RlNjQsIEFpcjo6T29wcywgbGVm
dC0+dHlwZSgpKTsKKyAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gdHJ5T3Bjb2RlRm9yVHlw
ZShvcGNvZGUzMiwgb3Bjb2RlNjQsIGxlZnQtPnR5cGUoKSk7CiAgICAgICAgIGlmIChvcGNvZGUg
PT0gQWlyOjpPb3BzKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKQEAgLTc0
NiwxMSArNzYzLDE1IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgSW50NjQ6CiAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVChpczY0Qml0KCkpOwogICAgICAgICAgICAgcmV0dXJuIE1vdmU7Cisg
ICAgICAgIGNhc2UgRmxvYXQ6CisgICAgICAgICAgICByZXR1cm4gTW92ZUZsb2F0OwogICAgICAg
ICBjYXNlIERvdWJsZToKICAgICAgICAgICAgIHJldHVybiBNb3ZlRG91YmxlOwotICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgY2FzZSBWb2lkOgorICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIEFpcjo6T29wczsKICAg
ICB9CiAKICAgICBBaXI6Ok9wY29kZSByZWxheGVkTW92ZUZvclR5cGUoVHlwZSB0eXBlKQpAQCAt
NzU5LDExICs3ODAsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBJbnQzMjoKICAgICAgICAg
Y2FzZSBJbnQ2NDoKICAgICAgICAgICAgIHJldHVybiBNb3ZlOworICAgICAgICBjYXNlIEZsb2F0
OgogICAgICAgICBjYXNlIERvdWJsZToKICAgICAgICAgICAgIHJldHVybiBNb3ZlRG91YmxlOwot
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgY2FzZSBWb2lkOgorICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIEFpcjo6
T29wczsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+CkBAIC04
MzAsMTIgKzg1NCwxMyBAQCBwcml2YXRlOgogICAgIH0KICAgICAKICAgICAvLyBDcmVhdGUgYW4g
SW5zdCB0byBkbyB0aGUgY29tcGFyaXNvbiBzcGVjaWZpZWQgYnkgdGhlIGdpdmVuIHZhbHVlLgot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENvbXBhcmVGdW5jdG9yLCB0eXBlbmFtZSBUZXN0RnVuY3Rv
ciwgdHlwZW5hbWUgQ29tcGFyZURvdWJsZUZ1bmN0b3I+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q29tcGFyZUZ1bmN0b3IsIHR5cGVuYW1lIFRlc3RGdW5jdG9yLCB0eXBlbmFtZSBDb21wYXJlRG91
YmxlRnVuY3RvciwgdHlwZW5hbWUgQ29tcGFyZUZsb2F0RnVuY3Rvcj4KICAgICBJbnN0IGNyZWF0
ZUdlbmVyaWNDb21wYXJlKAogICAgICAgICBWYWx1ZSogdmFsdWUsCiAgICAgICAgIGNvbnN0IENv
bXBhcmVGdW5jdG9yJiBjb21wYXJlLCAvLyBTaWduYXR1cmU6IChBcmc6OldpZHRoLCBBcmcgcmVs
Q29uZCwgQXJnLCBBcmcpIC0+IEluc3QKICAgICAgICAgY29uc3QgVGVzdEZ1bmN0b3ImIHRlc3Qs
IC8vIFNpZ25hdHVyZTogKEFyZzo6V2lkdGgsIEFyZyByZXNDb25kLCBBcmcsIEFyZykgLT4gSW5z
dAogICAgICAgICBjb25zdCBDb21wYXJlRG91YmxlRnVuY3RvciYgY29tcGFyZURvdWJsZSwgLy8g
U2lnbmF0dXJlOiAoQXJnIGRvdWJsZUNvbmQsIEFyZywgQXJnKSAtPiBJbnN0CisgICAgICAgIGNv
bnN0IENvbXBhcmVGbG9hdEZ1bmN0b3ImIGNvbXBhcmVGbG9hdCwgLy8gU2lnbmF0dXJlOiAoQXJn
IGRvdWJsZUNvbmQsIEFyZywgQXJnKSAtPiBJbnN0CiAgICAgICAgIGJvb2wgaW52ZXJ0ZWQgPSBm
YWxzZSkKICAgICB7CiAgICAgICAgIC8vIENoZXcgdGhyb3VnaCBhbnkgbmVnYXRpb25zLiBJdCdz
IG5vdCBzdHJpY3RseSBuZWNlc3NhcnkgZm9yIHRoaXMgdG8gYmUgYSBsb29wLCBidXQgd2UgbGlr
ZQpAQCAtOTU5LDcgKzk4NCw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNv
bXBhcmUod2lkdGgsIHJlbENvbmQsIHRtcFByb21pc2UobGVmdCksIHRtcFByb21pc2UocmlnaHQp
KTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgLy8gRG91YmxlIGNvbXBhcmlzb25zIGNh
bid0IHJlYWxseSBkbyBhbnl0aGluZyBzbWFydC4KKyAgICAgICAgICAgIC8vIEZsb2F0aW5nIHBv
aW50IGNvbXBhcmlzb25zIGNhbid0IHJlYWxseSBkbyBhbnl0aGluZyBzbWFydC4KKyAgICAgICAg
ICAgIGlmICh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSA9PSBGbG9hdCkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gY29tcGFyZUZsb2F0KGRvdWJsZUNvbmQsIHRtcFByb21pc2UobGVmdCksIHRtcFBy
b21pc2UocmlnaHQpKTsKICAgICAgICAgICAgIHJldHVybiBjb21wYXJlRG91YmxlKGRvdWJsZUNv
bmQsIHRtcFByb21pc2UobGVmdCksIHRtcFByb21pc2UocmlnaHQpKTsKICAgICAgICAgfTsKIApA
QCAtMTE2NSw2ICsxMTkyLDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIHJldHVybiBJbnN0KCk7CiAgICAgICAgICAgICB9LAorICAgICAgICAgICAgW3Ro
aXNdIChBcmcgZG91YmxlQ29uZCwgY29uc3QgQXJnUHJvbWlzZSYgbGVmdCwgY29uc3QgQXJnUHJv
bWlzZSYgcmlnaHQpIC0+IEluc3QgeworICAgICAgICAgICAgICAgIGlmIChpc1ZhbGlkRm9ybShC
cmFuY2hGbG9hdCwgQXJnOjpEb3VibGVDb25kLCBsZWZ0LmtpbmQoKSwgcmlnaHQua2luZCgpKSkg
eworICAgICAgICAgICAgICAgICAgICByZXR1cm4gSW5zdCgKKyAgICAgICAgICAgICAgICAgICAg
ICAgIEJyYW5jaEZsb2F0LCBtX3ZhbHVlLCBkb3VibGVDb25kLAorICAgICAgICAgICAgICAgICAg
ICAgICAgbGVmdC5jb25zdW1lKCp0aGlzKSwgcmlnaHQuY29uc3VtZSgqdGhpcykpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gSW5zdCgpOworICAgICAgICAgICAg
fSwKICAgICAgICAgICAgIGludmVydGVkKTsKICAgICB9CiAKQEAgLTEyMjMsNiArMTI1OCwxMCBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTA5MDMKICAgICAgICAgICAgICAgICByZXR1cm4gSW5zdCgpOwogICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgIFt0aGlzXSAoY29uc3QgQXJnJiwgY29uc3QgQXJnUHJv
bWlzZSYsIGNvbnN0IEFyZ1Byb21pc2UmKSAtPiBJbnN0IHsKKyAgICAgICAgICAgICAgICAvLyBG
SVhNRTogSW1wbGVtZW50IHRoaXMuCisgICAgICAgICAgICAgICAgcmV0dXJuIEluc3QoKTsKKyAg
ICAgICAgICAgIH0sCiAgICAgICAgICAgICBpbnZlcnRlZCk7CiAgICAgfQogCkBAIC0xMjMyLDYg
KzEyNzEsNyBAQCBwcml2YXRlOgogICAgICAgICBBaXI6Ok9wY29kZSBtb3ZlQ29uZGl0aW9uYWxs
eVRlc3QzMjsKICAgICAgICAgQWlyOjpPcGNvZGUgbW92ZUNvbmRpdGlvbmFsbHlUZXN0NjQ7CiAg
ICAgICAgIEFpcjo6T3Bjb2RlIG1vdmVDb25kaXRpb25hbGx5RG91YmxlOworICAgICAgICBBaXI6
Ok9wY29kZSBtb3ZlQ29uZGl0aW9uYWxseUZsb2F0OwogICAgICAgICBUbXAgc291cmNlOwogICAg
ICAgICBUbXAgZGVzdGluYXRpb247CiAgICAgfTsKQEAgLTEyOTksNiArMTMzOSwxNCBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICByZXR1cm4gSW5zdCgpOwog
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIFsmXSAoQXJnIGRvdWJsZUNvbmQsIGNvbnN0IEFy
Z1Byb21pc2UmIGxlZnQsIGNvbnN0IEFyZ1Byb21pc2UmIHJpZ2h0KSAtPiBJbnN0IHsKKyAgICAg
ICAgICAgICAgICBpZiAoaXNWYWxpZEZvcm0oY29uZmlnLm1vdmVDb25kaXRpb25hbGx5RmxvYXQs
IEFyZzo6RG91YmxlQ29uZCwgbGVmdC5raW5kKCksIHJpZ2h0LmtpbmQoKSwgQXJnOjpUbXAsIEFy
Zzo6VG1wKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gSW5zdCgKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbmZpZy5tb3ZlQ29uZGl0aW9uYWxseUZsb2F0LCBtX3ZhbHVlLCBkb3Vi
bGVDb25kLAorICAgICAgICAgICAgICAgICAgICAgICAgbGVmdC5jb25zdW1lKCp0aGlzKSwgcmln
aHQuY29uc3VtZSgqdGhpcyksIGNvbmZpZy5zb3VyY2UsIGNvbmZpZy5kZXN0aW5hdGlvbik7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBJbnN0KCk7CisgICAgICAg
ICAgICB9LAogICAgICAgICAgICAgaW52ZXJ0ZWQpOwogICAgIH0KIApAQCAtMTM2NywyMSArMTQx
NSwyMSBAQCBwcml2YXRlOgogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBBZGQ6IHsKLSAgICAg
ICAgICAgIGFwcGVuZEJpbk9wPEFkZDMyLCBBZGQ2NCwgQWRkRG91YmxlLCBDb21tdXRhdGl2ZT4o
CisgICAgICAgICAgICBhcHBlbmRCaW5PcDxBZGQzMiwgQWRkNjQsIEFkZERvdWJsZSwgQWRkRmxv
YXQsIENvbW11dGF0aXZlPigKICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5jaGlsZCgwKSwgbV92
YWx1ZS0+Y2hpbGQoMSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAg
ICAgY2FzZSBTdWI6IHsKICAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgwKS0+aXNJbnQo
MCkpCi0gICAgICAgICAgICAgICAgYXBwZW5kVW5PcDxOZWczMiwgTmVnNjQsIEFpcjo6T29wcz4o
bV92YWx1ZS0+Y2hpbGQoMSkpOworICAgICAgICAgICAgICAgIGFwcGVuZFVuT3A8TmVnMzIsIE5l
ZzY0PihtX3ZhbHVlLT5jaGlsZCgxKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgYXBwZW5kQmluT3A8U3ViMzIsIFN1YjY0LCBTdWJEb3VibGU+KG1fdmFsdWUtPmNoaWxkKDAp
LCBtX3ZhbHVlLT5jaGlsZCgxKSk7CisgICAgICAgICAgICAgICAgYXBwZW5kQmluT3A8U3ViMzIs
IFN1YjY0LCBTdWJEb3VibGUsIFN1YkZsb2F0PihtX3ZhbHVlLT5jaGlsZCgwKSwgbV92YWx1ZS0+
Y2hpbGQoMSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgY2Fz
ZSBNdWw6IHsKLSAgICAgICAgICAgIGFwcGVuZEJpbk9wPE11bDMyLCBNdWw2NCwgTXVsRG91Ymxl
LCBDb21tdXRhdGl2ZT4oCisgICAgICAgICAgICBhcHBlbmRCaW5PcDxNdWwzMiwgTXVsNjQsIE11
bERvdWJsZSwgTXVsRmxvYXQsIENvbW11dGF0aXZlPigKICAgICAgICAgICAgICAgICBtX3ZhbHVl
LT5jaGlsZCgwKSwgbV92YWx1ZS0+Y2hpbGQoMSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CkBAIC0xNDE1LDI4ICsxNDYzLDI4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBBU1NFUlQoaXNGbG9hdChtX3ZhbHVlLT50eXBlKCkpKTsKIAotICAgICAgICAg
ICAgYXBwZW5kQmluT3A8QWlyOjpPb3BzLCBBaXI6Ok9vcHMsIERpdkRvdWJsZT4obV92YWx1ZS0+
Y2hpbGQoMCksIG1fdmFsdWUtPmNoaWxkKDEpKTsKKyAgICAgICAgICAgIGFwcGVuZEJpbk9wPEFp
cjo6T29wcywgQWlyOjpPb3BzLCBEaXZEb3VibGUsIERpdkZsb2F0PihtX3ZhbHVlLT5jaGlsZCgw
KSwgbV92YWx1ZS0+Y2hpbGQoMSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
ICAgICAgICAgY2FzZSBCaXRBbmQ6IHsKLSAgICAgICAgICAgIGFwcGVuZEJpbk9wPEFuZDMyLCBB
bmQ2NCwgQWlyOjpPb3BzLCBDb21tdXRhdGl2ZT4oCisgICAgICAgICAgICBhcHBlbmRCaW5PcDxB
bmQzMiwgQW5kNjQsIENvbW11dGF0aXZlPigKICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5jaGls
ZCgwKSwgbV92YWx1ZS0+Y2hpbGQoMSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKICAgICAgICAgY2FzZSBCaXRPcjogewotICAgICAgICAgICAgYXBwZW5kQmluT3A8T3IzMiwg
T3I2NCwgQWlyOjpPb3BzLCBDb21tdXRhdGl2ZT4oCisgICAgICAgICAgICBhcHBlbmRCaW5PcDxP
cjMyLCBPcjY0LCBDb21tdXRhdGl2ZT4oCiAgICAgICAgICAgICAgICAgbV92YWx1ZS0+Y2hpbGQo
MCksIG1fdmFsdWUtPmNoaWxkKDEpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
CiAgICAgICAgIGNhc2UgQml0WG9yOiB7CiAgICAgICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQo
MSktPmlzSW50KC0xKSkgewotICAgICAgICAgICAgICAgIGFwcGVuZFVuT3A8Tm90MzIsIE5vdDY0
LCBBaXI6Ok9vcHM+KG1fdmFsdWUtPmNoaWxkKDApKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRV
bk9wPE5vdDMyLCBOb3Q2ND4obV92YWx1ZS0+Y2hpbGQoMCkpOwogICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGFwcGVuZEJpbk9wPFhvcjMyLCBYb3I2
NCwgQWlyOjpPb3BzLCBDb21tdXRhdGl2ZT4oCisgICAgICAgICAgICBhcHBlbmRCaW5PcDxYb3Iz
MiwgWG9yNjQsIENvbW11dGF0aXZlPigKICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5jaGlsZCgw
KSwgbV92YWx1ZS0+Y2hpbGQoMSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBA
IC0xNDQ2LDcgKzE0OTQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIC8vIFRoaXMgb3B0
aW1pemF0aW9uIG1ha2VzIHNlbnNlIG9uIFg4Ni4gSSBkb24ndCBrbm93IGlmIGl0IG1ha2VzIHNl
bnNlIGFueXdoZXJlIGVsc2UuCiAgICAgICAgICAgICAgICAgYXBwZW5kKE1vdmUsIHRtcChtX3Zh
bHVlLT5jaGlsZCgwKSksIHRtcChtX3ZhbHVlKSk7CiAgICAgICAgICAgICAgICAgYXBwZW5kKAot
ICAgICAgICAgICAgICAgICAgICBvcGNvZGVGb3JUeXBlKEFkZDMyLCBBZGQ2NCwgQWlyOjpPb3Bz
LCBtX3ZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpKSwKKyAgICAgICAgICAgICAgICAgICAgb3Bjb2Rl
Rm9yVHlwZShBZGQzMiwgQWRkNjQsIG1fdmFsdWUtPmNoaWxkKDApLT50eXBlKCkpLAogICAgICAg
ICAgICAgICAgICAgICB0bXAobV92YWx1ZSksIHRtcChtX3ZhbHVlKSk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgfQpAQCAtMTQ2NiwxNyArMTUxNCwxNyBAQCBwcml2YXRl
OgogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBDbHo6IHsKLSAgICAgICAgICAgIGFwcGVuZFVu
T3A8Q291bnRMZWFkaW5nWmVyb3MzMiwgQ291bnRMZWFkaW5nWmVyb3M2NCwgQWlyOjpPb3BzPiht
X3ZhbHVlLT5jaGlsZCgwKSk7CisgICAgICAgICAgICBhcHBlbmRVbk9wPENvdW50TGVhZGluZ1pl
cm9zMzIsIENvdW50TGVhZGluZ1plcm9zNjQ+KG1fdmFsdWUtPmNoaWxkKDApKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgU3FydDogewotICAgICAgICAg
ICAgYXBwZW5kVW5PcDxBaXI6Ok9vcHMsIEFpcjo6T29wcywgU3FydERvdWJsZT4obV92YWx1ZS0+
Y2hpbGQoMCkpOworICAgICAgICAgICAgYXBwZW5kVW5PcDxBaXI6Ok9vcHMsIEFpcjo6T29wcywg
U3FydERvdWJsZSwgU3FydEZsb2F0PihtX3ZhbHVlLT5jaGlsZCgwKSk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIEJpdHdpc2VDYXN0OiB7Ci0gICAgICAg
ICAgICBhcHBlbmRVbk9wPEFpcjo6T29wcywgTW92ZTY0VG9Eb3VibGUsIE1vdmVEb3VibGVUbzY0
PihtX3ZhbHVlLT5jaGlsZCgwKSk7CisgICAgICAgICAgICBhcHBlbmRVbk9wPE1vdmVJbnQzMlRv
UGFja2VkLCBNb3ZlNjRUb0RvdWJsZSwgTW92ZURvdWJsZVRvNjQsIE1vdmVQYWNrZWRUb0ludDMy
PihtX3ZhbHVlLT5jaGlsZCgwKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApA
QCAtMTU0Miw2ICsxNTkwLDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAorICAgICAgICBjYXNlIEZsb2F0VG9Eb3VibGU6IHsKKyAgICAgICAgICAgIGFwcGVu
ZFVuT3A8QWlyOjpPb3BzLCBBaXI6Ok9vcHMsIEFpcjo6T29wcywgQ29udmVydEZsb2F0VG9Eb3Vi
bGU+KG1fdmFsdWUtPmNoaWxkKDApKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIGNhc2UgRG91YmxlVG9GbG9hdDogeworICAgICAgICAgICAgYXBwZW5kVW5PcDxB
aXI6Ok9vcHMsIEFpcjo6T29wcywgQ29udmVydERvdWJsZVRvRmxvYXQ+KG1fdmFsdWUtPmNoaWxk
KDApKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2UgQXJn
dW1lbnRSZWc6IHsKICAgICAgICAgICAgIG1fcHJvbG9ndWUuYXBwZW5kKEluc3QoCiAgICAgICAg
ICAgICAgICAgbW92ZUZvclR5cGUobV92YWx1ZS0+dHlwZSgpKSwgbV92YWx1ZSwKQEAgLTE1NjIs
MTAgKzE2MjAsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
Ci0gICAgICAgIGNhc2UgQ29uc3REb3VibGU6IHsKKyAgICAgICAgY2FzZSBDb25zdERvdWJsZToK
KyAgICAgICAgY2FzZSBDb25zdEZsb2F0OiB7CiAgICAgICAgICAgICAvLyBXZSBleHBlY3QgdGhh
dCB0aGUgbW92ZUNvbnN0YW50cygpIHBoYXNlIGhhcyBydW4sIGFuZCBhbnkgZG91YmxlcyByZWZl
cmVuY2VkIGZyb20KICAgICAgICAgICAgIC8vIHN0YWNrbWFwcyBnZXQgZnVzZWQuCi0gICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVChpc0lkZW50aWNhbChtX3ZhbHVlLT5hc0RvdWJsZSgpLCAwLjAp
KTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fdmFsdWUtPm9wY29kZSgpID09IENvbnN0
RmxvYXQgfHwgaXNJZGVudGljYWwobV92YWx1ZS0+YXNEb3VibGUoKSwgMC4wKSk7CisgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVChtX3ZhbHVlLT5vcGNvZGUoKSA9PSBDb25zdERvdWJsZSB8fCBp
c0lkZW50aWNhbChtX3ZhbHVlLT5hc0Zsb2F0KCksIDAuMCkpOwogICAgICAgICAgICAgYXBwZW5k
KE1vdmVaZXJvVG9Eb3VibGUsIHRtcChtX3ZhbHVlKSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KQEAgLTE2MTEsNiArMTY3MSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
Y29uZmlnLm1vdmVDb25kaXRpb25hbGx5VGVzdDMyID0gTW92ZUNvbmRpdGlvbmFsbHlUZXN0MzI7
CiAgICAgICAgICAgICAgICAgY29uZmlnLm1vdmVDb25kaXRpb25hbGx5VGVzdDY0ID0gTW92ZUNv
bmRpdGlvbmFsbHlUZXN0NjQ7CiAgICAgICAgICAgICAgICAgY29uZmlnLm1vdmVDb25kaXRpb25h
bGx5RG91YmxlID0gTW92ZUNvbmRpdGlvbmFsbHlEb3VibGU7CisgICAgICAgICAgICAgICAgY29u
ZmlnLm1vdmVDb25kaXRpb25hbGx5RmxvYXQgPSBNb3ZlQ29uZGl0aW9uYWxseUZsb2F0OwogICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogaXQncyBub3Qgb2J2
aW91cyB0aGF0IHRoZXNlIGFyZSBwYXJ0aWN1bGFybHkgZWZmaWNpZW50LgogICAgICAgICAgICAg
ICAgIGNvbmZpZy5tb3ZlQ29uZGl0aW9uYWxseTMyID0gTW92ZURvdWJsZUNvbmRpdGlvbmFsbHkz
MjsKQEAgLTE2MTgsNiArMTY3OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY29uZmln
Lm1vdmVDb25kaXRpb25hbGx5VGVzdDMyID0gTW92ZURvdWJsZUNvbmRpdGlvbmFsbHlUZXN0MzI7
CiAgICAgICAgICAgICAgICAgY29uZmlnLm1vdmVDb25kaXRpb25hbGx5VGVzdDY0ID0gTW92ZURv
dWJsZUNvbmRpdGlvbmFsbHlUZXN0NjQ7CiAgICAgICAgICAgICAgICAgY29uZmlnLm1vdmVDb25k
aXRpb25hbGx5RG91YmxlID0gTW92ZURvdWJsZUNvbmRpdGlvbmFsbHlEb3VibGU7CisgICAgICAg
ICAgICAgICAgY29uZmlnLm1vdmVDb25kaXRpb25hbGx5RmxvYXQgPSBNb3ZlRG91YmxlQ29uZGl0
aW9uYWxseUZsb2F0OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBt
X2luc3RzLmxhc3QoKS5hcHBlbmQoY3JlYXRlU2VsZWN0KG1fdmFsdWUtPmNoaWxkKDApLCBjb25m
aWcpKTsKQEAgLTE2MjUsNyArMTY4Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAogICAgICAg
ICBjYXNlIElUb0Q6IHsKLSAgICAgICAgICAgIGFwcGVuZFVuT3A8Q29udmVydEludDMyVG9Eb3Vi
bGUsIENvbnZlcnRJbnQ2NFRvRG91YmxlLCBBaXI6Ok9vcHM+KG1fdmFsdWUtPmNoaWxkKDApKTsK
KyAgICAgICAgICAgIGFwcGVuZFVuT3A8Q29udmVydEludDMyVG9Eb3VibGUsIENvbnZlcnRJbnQ2
NFRvRG91YmxlPihtX3ZhbHVlLT5jaGlsZCgwKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIApAQCAtMTY4Niw2ICsxNzQ4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNhc2Ug
SW50NjQ6CiAgICAgICAgICAgICAgICAgYXBwZW5kKE1vdmUsIFRtcChHUFJJbmZvOjpyZXR1cm5W
YWx1ZUdQUiksIHRtcChjQ2FsbCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSBGbG9hdDoKICAgICAgICAgICAgIGNhc2UgRG91YmxlOgogICAgICAgICAgICAgICAg
IGFwcGVuZChNb3ZlRG91YmxlLCBUbXAoRlBSSW5mbzo6cmV0dXJuVmFsdWVGUFIpLCB0bXAoY0Nh
bGwpKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTE3NTAsNyArMTgxMyw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgYXBwZW5kKE1vdmUsIHRtcChyaWdodCksIHJlc3VsdCk7CiAK
ICAgICAgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPQotICAgICAgICAgICAgICAgICAg
ICBvcGNvZGVGb3JUeXBlKEJyYW5jaE5lZzMyLCBCcmFuY2hOZWc2NCwgQWlyOjpPb3BzLCBjaGVj
a1ZhbHVlLT50eXBlKCkpOworICAgICAgICAgICAgICAgICAgICBvcGNvZGVGb3JUeXBlKEJyYW5j
aE5lZzMyLCBCcmFuY2hOZWc2NCwgY2hlY2tWYWx1ZS0+dHlwZSgpKTsKICAgICAgICAgICAgICAg
ICBDaGVja1NwZWNpYWwqIHNwZWNpYWwgPSBlbnN1cmVDaGVja1NwZWNpYWwob3Bjb2RlLCAyKTsK
IAogICAgICAgICAgICAgICAgIEluc3QgaW5zdChQYXRjaCwgY2hlY2tWYWx1ZSwgQXJnOjpzcGVj
aWFsKHNwZWNpYWwpKTsKQEAgLTE3NjgsMTQgKzE4MzEsMTQgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIFN0YWNrbWFwU3BlY2lhbDo6Um9sZU1vZGUgc3RhY2ttYXBSb2xlID0gU3RhY2ttYXBTcGVj
aWFsOjpTYW1lQXNSZXA7CiAgICAgICAgICAgICBzd2l0Y2ggKG1fdmFsdWUtPm9wY29kZSgpKSB7
CiAgICAgICAgICAgICBjYXNlIENoZWNrQWRkOgotICAgICAgICAgICAgICAgIG9wY29kZSA9IG9w
Y29kZUZvclR5cGUoQnJhbmNoQWRkMzIsIEJyYW5jaEFkZDY0LCBBaXI6Ok9vcHMsIG1fdmFsdWUt
PnR5cGUoKSk7CisgICAgICAgICAgICAgICAgb3Bjb2RlID0gb3Bjb2RlRm9yVHlwZShCcmFuY2hB
ZGQzMiwgQnJhbmNoQWRkNjQsIG1fdmFsdWUtPnR5cGUoKSk7CiAgICAgICAgICAgICAgICAgY29t
bXV0YXRpdml0eSA9IENvbW11dGF0aXZlOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY2FzZSBDaGVja1N1YjoKLSAgICAgICAgICAgICAgICBvcGNvZGUgPSBvcGNvZGVGb3JU
eXBlKEJyYW5jaFN1YjMyLCBCcmFuY2hTdWI2NCwgQWlyOjpPb3BzLCBtX3ZhbHVlLT50eXBlKCkp
OworICAgICAgICAgICAgICAgIG9wY29kZSA9IG9wY29kZUZvclR5cGUoQnJhbmNoU3ViMzIsIEJy
YW5jaFN1YjY0LCBtX3ZhbHVlLT50eXBlKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgY2FzZSBDaGVja011bDoKLSAgICAgICAgICAgICAgICBvcGNvZGUgPSBvcGNvZGVG
b3JUeXBlKEJyYW5jaE11bDMyLCBCcmFuY2hNdWw2NCwgQWlyOjpPb3BzLCBjaGVja1ZhbHVlLT50
eXBlKCkpOworICAgICAgICAgICAgICAgIG9wY29kZSA9IG9wY29kZUZvclR5cGUoQnJhbmNoTXVs
MzIsIEJyYW5jaE11bDY0LCBjaGVja1ZhbHVlLT50eXBlKCkpOwogICAgICAgICAgICAgICAgIHN0
YWNrbWFwUm9sZSA9IFN0YWNrbWFwU3BlY2lhbDo6Rm9yY2VMYXRlVXNlOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM01lbW9yeVZhbHVlLmNwcAppbmRleCBmYTU2MjI1MjM4NzlhZjQ3Y2MzZWZiZTM1ZTdiZWU1
ZDMwZWViYmQ0Li5lMDQ4MWM2MTY2ZTc4NDg0OTc0Y2Q4MmIzYzVkNzZlZWI2ODRhNGY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuY3BwCkBAIC00NSw5ICs0NSw2
IEBAIHNpemVfdCBNZW1vcnlWYWx1ZTo6YWNjZXNzQnl0ZVNpemUoKSBjb25zdAogICAgIGNhc2Ug
TG9hZDE2UzoKICAgICBjYXNlIFN0b3JlMTY6CiAgICAgICAgIHJldHVybiAyOwotICAgIGNhc2Ug
TG9hZEZsb2F0OgotICAgIGNhc2UgU3RvcmVGbG9hdDoKLSAgICAgICAgcmV0dXJuIDQ7CiAgICAg
Y2FzZSBMb2FkOgogICAgICAgICByZXR1cm4gc2l6ZW9mVHlwZSh0eXBlKCkpOwogICAgIGNhc2Ug
U3RvcmU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuaAppbmRleCBlMmEx
MDRjMzU0Y2Q0YjJmMmI0OGY2M2Y4Y2Q2NjcwMGExNTQ2YmM1Li5hOTY0OGU5Y2E1NDNhM2NkMDU2
NjQyZTNmNjg2NjgyYWM5YmQ0NTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNNZW1vcnlWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9y
eVZhbHVlLmgKQEAgLTQyLDExICs0Miw5IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBMb2FkOFM6
CiAgICAgICAgIGNhc2UgTG9hZDE2WjoKICAgICAgICAgY2FzZSBMb2FkMTZTOgotICAgICAgICBj
YXNlIExvYWRGbG9hdDoKICAgICAgICAgY2FzZSBMb2FkOgogICAgICAgICBjYXNlIFN0b3JlODoK
ICAgICAgICAgY2FzZSBTdG9yZTE2OgotICAgICAgICBjYXNlIFN0b3JlRmxvYXQ6CiAgICAgICAg
IGNhc2UgU3RvcmU6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgZGVmYXVsdDoK
QEAgLTg5LDEyICs4Nyw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNlIExvYWQxNlM6CiAg
ICAgICAgICAgICAgICAgQVNTRVJUKHR5cGUgPT0gSW50MzIpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgY2FzZSBMb2FkRmxvYXQ6Ci0gICAgICAgICAgICAgICAgQVNTRVJU
KHR5cGUgPT0gRG91YmxlKTsKLSAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNh
c2UgU3RvcmU4OgogICAgICAgICAgICAgY2FzZSBTdG9yZTE2OgotICAgICAgICAgICAgY2FzZSBT
dG9yZUZsb2F0OgogICAgICAgICAgICAgY2FzZSBTdG9yZToKICAgICAgICAgICAgICAgICBBU1NF
UlQodHlwZSA9PSBWb2lkKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTEwNiw3ICsxMDAs
NyBAQCBwcml2YXRlOgogCiAgICAgLy8gVXNlIHRoaXMgZm9ybSBmb3IgbG9hZHMgd2hlcmUgdGhl
IHJldHVybiB0eXBlIGlzIGltcGxpZWQuCiAgICAgTWVtb3J5VmFsdWUodW5zaWduZWQgaW5kZXgs
IE9wY29kZSBvcGNvZGUsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9m
ZnNldCA9IDApCi0gICAgICAgIDogTWVtb3J5VmFsdWUoaW5kZXgsIG9wY29kZSwgb3Bjb2RlID09
IExvYWRGbG9hdCA/IERvdWJsZSA6IEludDMyLCBvcmlnaW4sIHBvaW50ZXIsIG9mZnNldCkKKyAg
ICAgICAgOiBNZW1vcnlWYWx1ZShpbmRleCwgb3Bjb2RlLCBJbnQzMiwgb3JpZ2luLCBwb2ludGVy
LCBvZmZzZXQpCiAgICAgewogICAgIH0KIApAQCAtMTIyLDcgKzExNiw2IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICBzd2l0Y2ggKG9wY29kZSkgewogICAgICAgICAgICAgY2FzZSBTdG9yZTg6CiAg
ICAgICAgICAgICBjYXNlIFN0b3JlMTY6Ci0gICAgICAgICAgICBjYXNlIFN0b3JlRmxvYXQ6CiAg
ICAgICAgICAgICBjYXNlIFN0b3JlOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01vdmVD
b25zdGFudHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTW92ZUNvbnN0YW50cy5j
cHAKaW5kZXggMTMzODUzY2ZhNzYxYTI1YmI3YjYxYzFmNjM5NDEyMzZhZTQ2ZDdjZS4uNTZkNDI4
ODA2M2RhZTEyODRhZjc3NWE3NDU5Nzg1ODM4YjM3NGIxOSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzTW92ZUNvbnN0YW50cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzTW92ZUNvbnN0YW50cy5jcHAKQEAgLTE0NCw3ICsxNDQsOCBAQCBwcml2YXRl
OgogCiAgICAgYm9vbCBnb2VzSW5UYWJsZShjb25zdCBWYWx1ZUtleSYga2V5KQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGtleS5vcGNvZGUoKSA9PSBDb25zdERvdWJsZSAmJiBrZXkgIT0gZG91Ymxl
WmVybygpOworICAgICAgICByZXR1cm4gKGtleS5vcGNvZGUoKSA9PSBDb25zdERvdWJsZSAmJiBr
ZXkgIT0gZG91YmxlWmVybygpKQorICAgICAgICB8fCAoa2V5Lm9wY29kZSgpID09IENvbnN0Rmxv
YXQgJiYga2V5ICE9IGZsb2F0WmVybygpKTsKICAgICB9CiAKICAgICBib29sIG5lZWRzTW90aW9u
KGNvbnN0IFZhbHVlKiB2YWx1ZSkKQEAgLTE1Nyw2ICsxNTgsMTEgQEAgcHJpdmF0ZToKICAgICAg
ICAgcmV0dXJuIFZhbHVlS2V5KENvbnN0RG91YmxlLCBEb3VibGUsIDAuMCk7CiAgICAgfQogCisg
ICAgc3RhdGljIFZhbHVlS2V5IGZsb2F0WmVybygpCisgICAgeworICAgICAgICByZXR1cm4gVmFs
dWVLZXkoQ29uc3RGbG9hdCwgRG91YmxlLCAwLjApOworICAgIH0KKwogICAgIFByb2NlZHVyZSYg
bV9wcm9jOwogICAgIFZlY3RvcjxWYWx1ZSo+IG1fdG9SZW1vdmU7CiAgICAgSGFzaE1hcDxWYWx1
ZUtleSwgdW5zaWduZWQ+IG1fY29uc3RUYWJsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM09wY29kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNv
ZGUuY3BwCmluZGV4IGUxNWJiOGExNzEwYjIyMTE1MDY1NzU0M2RlMjdjMjQ0YWYwMDJhMWQuLmRh
MDI0NzE2NTdjZjA1Mjc1Yzc5NDk5M2E0YWQ0MzU5M2ExYWFhYTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzT3Bjb2RlLmNwcApAQCAtOTIsNiArOTIsOSBAQCB2b2lkIHByaW50SW50ZXJuYWwo
UHJpbnRTdHJlYW0mIG91dCwgT3Bjb2RlIG9wY29kZSkKICAgICBjYXNlIENvbnN0RG91YmxlOgog
ICAgICAgICBvdXQucHJpbnQoIkNvbnN0RG91YmxlIik7CiAgICAgICAgIHJldHVybjsKKyAgICBj
YXNlIENvbnN0RmxvYXQ6CisgICAgICAgIG91dC5wcmludCgiQ29uc3RGbG9hdCIpOworICAgICAg
ICByZXR1cm47CiAgICAgY2FzZSBTdGFja1Nsb3Q6CiAgICAgICAgIG91dC5wcmludCgiU3RhY2tT
bG90Iik7CiAgICAgICAgIHJldHVybjsKQEAgLTE2MSwxNSArMTY0LDE4IEBAIHZvaWQgcHJpbnRJ
bnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBPcGNvZGUgb3Bjb2RlKQogICAgIGNhc2UgVHJ1bmM6
CiAgICAgICAgIG91dC5wcmludCgiVHJ1bmMiKTsKICAgICAgICAgcmV0dXJuOwotICAgIGNhc2Ug
RlJvdW5kOgotICAgICAgICBvdXQucHJpbnQoIkZSb3VuZCIpOwotICAgICAgICByZXR1cm47CiAg
ICAgY2FzZSBJVG9EOgogICAgICAgICBvdXQucHJpbnQoIklUb0QiKTsKICAgICAgICAgcmV0dXJu
OwogICAgIGNhc2UgRFRvSTMyOgogICAgICAgICBvdXQucHJpbnQoIkRUb0kzMiIpOwogICAgICAg
ICByZXR1cm47CisgICAgY2FzZSBGbG9hdFRvRG91YmxlOgorICAgICAgICBvdXQucHJpbnQoIkZs
b2F0VG9Eb3VibGUiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgRG91YmxlVG9GbG9hdDoK
KyAgICAgICAgb3V0LnByaW50KCJEb3VibGVUb0Zsb2F0Iik7CisgICAgICAgIHJldHVybjsKICAg
ICBjYXNlIEVxdWFsOgogICAgICAgICBvdXQucHJpbnQoIkVxdWFsIik7CiAgICAgICAgIHJldHVy
bjsKQEAgLTIxNSw5ICsyMjEsNiBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91
dCwgT3Bjb2RlIG9wY29kZSkKICAgICBjYXNlIExvYWQxNlM6CiAgICAgICAgIG91dC5wcmludCgi
TG9hZDE2UyIpOwogICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBMb2FkRmxvYXQ6Ci0gICAgICAg
IG91dC5wcmludCgiTG9hZEZsb2F0Iik7Ci0gICAgICAgIHJldHVybjsKICAgICBjYXNlIExvYWQ6
CiAgICAgICAgIG91dC5wcmludCgiTG9hZCIpOwogICAgICAgICByZXR1cm47CkBAIC0yMjcsOSAr
MjMwLDYgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIE9wY29kZSBvcGNv
ZGUpCiAgICAgY2FzZSBTdG9yZTE2OgogICAgICAgICBvdXQucHJpbnQoIlN0b3JlMTYiKTsKICAg
ICAgICAgcmV0dXJuOwotICAgIGNhc2UgU3RvcmVGbG9hdDoKLSAgICAgICAgb3V0LnByaW50KCJT
dG9yZUZsb2F0Iik7Ci0gICAgICAgIHJldHVybjsKICAgICBjYXNlIFN0b3JlOgogICAgICAgICBv
dXQucHJpbnQoIlN0b3JlIik7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
T3Bjb2RlLmgKaW5kZXggZjBmM2FiOGJjMGM5ZWVkNTNiYjc3NTgzOTI5MTlhZWNlODg4NTE3OS4u
YWRmZDIyZmZhYjJkOGE3Njk3YzY5NjIwNDU1NmQ3ZDZlYTFiOTQwMSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzT3Bjb2RlLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgZW51bSBPcGNvZGUgOiBpbnQxNl90
IHsKICAgICBDb25zdDMyLAogICAgIENvbnN0NjQsCiAgICAgQ29uc3REb3VibGUsCisgICAgQ29u
c3RGbG9hdCwKIAogICAgIC8vIFRoZSBtYWdpY2FsIHN0YWNrIHNsb3QuIFRoaXMgaXMgdmlld2Vk
IGFzIGV4ZWN1dGluZyBhdCB0aGUgdG9wIG9mIHRoZSBwcm9ncmFtIHJlZ2FyZGxlc3Mgb2YKICAg
ICAvLyB3aGVyZSBpbiBjb250cm9sIGZsb3cgeW91IHB1dCBpdC4gRWFjaCBpbnN0YW5jZSBvZiBh
IFN0YWNrU2xvdCBWYWx1ZSBnZXRzIGEgZGlzam9pbnQgcmFuZ2Ugb2YKQEAgLTk2LDEyICs5Nywx
MyBAQCBlbnVtIE9wY29kZSA6IGludDE2X3QgewogICAgIFpFeHQzMiwKICAgICAvLyBUYWtlcyBJ
bnQ2NCBhbmQgcmV0dXJucyBJbnQzMjoKICAgICBUcnVuYywKLSAgICAvLyBUYWtlcyBhbmQgcmV0
dXJucyBEb3VibGU6Ci0gICAgRlJvdW5kLAogICAgIC8vIFRha2VzIGludHMgYW5kIHJldHVybnMg
RG91YmxlOgogICAgIElUb0QsCiAgICAgLy8gVGFrZXMgRG91YmxlIGFuZCByZXR1cm5zIEludDMy
OgogICAgIERUb0kzMiwKKyAgICAvLyBDb252ZXJ0IGJldHdlZW4gZG91YmxlIGFuZCBmbG9hdC4K
KyAgICBGbG9hdFRvRG91YmxlLAorICAgIERvdWJsZVRvRmxvYXQsCiAKICAgICAvLyBQb2x5bW9y
cGhpYyBjb21wYXJpc29ucywgdXNhYmxlIHdpdGggYW55IHZhbHVlIHR5cGUuIFJldHVybnMgaW50
MzIgMCBvciAxLiBOb3RlIHRoYXQgIk5vdCIKICAgICAvLyBpcyBqdXN0IEVxdWFsKHgsIDApLCBh
bmQgIlRvQm9vbGVhbiIgaXMganVzdCBOb3RFcXVhbCh4LCAwKS4KQEAgLTEyOCw4ICsxMzAsNiBA
QCBlbnVtIE9wY29kZSA6IGludDE2X3QgewogICAgIExvYWQ4UywKICAgICBMb2FkMTZaLAogICAg
IExvYWQxNlMsCi0gICAgLy8gVGhpcyByZXR1cm5zIERvdWJsZToKLSAgICBMb2FkRmxvYXQsCiAg
ICAgLy8gVGhpcyByZXR1cm5zIHdoYXRldmVyIHRoZSByZXR1cm4gdHlwZSBpczoKICAgICBMb2Fk
LAogCkBAIC0xMzcsOSArMTM3LDcgQEAgZW51bSBPcGNvZGUgOiBpbnQxNl90IHsKICAgICAvLyBU
aGVzZSB0YWtlIGFuIEludDMyIHZhbHVlOgogICAgIFN0b3JlOCwKICAgICBTdG9yZTE2LAotICAg
IC8vIFRoaXMgdGFrZXMgYSBEb3VibGUgdmFsdWU6Ci0gICAgU3RvcmVGbG9hdCwKLSAgICAvLyBU
aGlzIGlzIGEgcG9seW1vcnBoaWMgc3RvcmUgZm9yIEludDMyLCBJbnQ2NCwgYW5kIERvdWJsZToK
KyAgICAvLyBUaGlzIGlzIGEgcG9seW1vcnBoaWMgc3RvcmUgZm9yIEludDMyLCBJbnQ2NCwgRmxv
YXQsIGFuZCBEb3VibGUuCiAgICAgU3RvcmUsCiAKICAgICAvLyBUaGlzIGlzIGEgcmVndWxhciBv
cmRpbmFyeSBDIGZ1bmN0aW9uIGNhbGwsIHVzaW5nIHRoZSBzeXN0ZW0gQyBjYWxsaW5nIGNvbnZl
bnRpb24uIE1ha2Ugc3VyZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
UHJvY2VkdXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAK
aW5kZXggMGY4ZWJiNDliNWViMTRhNWI5YzgwNTAzY2IxNTAyMTQyYjRlM2Q1Yi4uN2FkMjE2NWYw
NDJjOWYxZGRmMmUxNDRjYjVlZjE5ZjAyYzAyZDBkZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNQcm9jZWR1cmUuY3BwCkBAIC02Niw2ICs2Niw4IEBAIFZhbHVlKiBQcm9jZWR1cmU6OmFk
ZEludENvbnN0YW50KE9yaWdpbiBvcmlnaW4sIFR5cGUgdHlwZSwgaW50NjRfdCB2YWx1ZSkKICAg
ICAgICAgcmV0dXJuIGFkZDxDb25zdDY0VmFsdWU+KG9yaWdpbiwgdmFsdWUpOwogICAgIGNhc2Ug
RG91YmxlOgogICAgICAgICByZXR1cm4gYWRkPENvbnN0RG91YmxlVmFsdWU+KG9yaWdpbiwgc3Rh
dGljX2Nhc3Q8ZG91YmxlPih2YWx1ZSkpOworICAgIGNhc2UgRmxvYXQ6CisgICAgICAgIHJldHVy
biBhZGQ8Q29uc3RGbG9hdFZhbHVlPihvcmlnaW4sIHN0YXRpY19jYXN0PGZsb2F0Pih2YWx1ZSkp
OwogICAgIGRlZmF1bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzUmVkdWNlRG91YmxlVG9GbG9hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNSZWR1Y2VEb3VibGVUb0Zsb2F0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Y2M2YzNhYzZiYTc0YzI3M2Ez
MjdlZTU1ODk4MjUwNTUyMjg2Nzk4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzUmVkdWNlRG91YmxlVG9GbG9hdC5jcHAKQEAgLTAsMCArMSwxNTEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkIzUmVkdWNlRG91YmxlVG9GbG9hdC5oIgorCisjaWYgRU5BQkxF
KEIzX0pJVCkKKworI2luY2x1ZGUgIkIzQmFzaWNCbG9jay5oIgorI2luY2x1ZGUgIkIzUGhhc2VT
Y29wZS5oIgorI2luY2x1ZGUgIkIzVmFsdWVJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgQjMgeworCituYW1lc3BhY2Ugewordm9pZCBhdHRlbXB0U2ltcGxpZmljYXRpb24o
VmFsdWUqIGNhbmRpZGF0ZSkKK3sKKyAgICBzd2l0Y2ggKGNhbmRpZGF0ZS0+b3Bjb2RlKCkpIHsK
KyAgICBjYXNlIEFkZDoKKyAgICBjYXNlIFN1YjoKKyAgICBjYXNlIE11bDoKKyAgICBjYXNlIERp
djoKKyAgICAgICAgaWYgKGNhbmRpZGF0ZS0+Y2hpbGQoMCktPm9wY29kZSgpID09IEZsb2F0VG9E
b3VibGUgJiYgY2FuZGlkYXRlLT5jaGlsZCgxKS0+b3Bjb2RlKCkgPT0gRmxvYXRUb0RvdWJsZSkg
eworICAgICAgICAgICAgY2FuZGlkYXRlLT5jaGlsZCgwKSA9IGNhbmRpZGF0ZS0+Y2hpbGQoMCkt
PmNoaWxkKDApOworICAgICAgICAgICAgY2FuZGlkYXRlLT5jaGlsZCgxKSA9IGNhbmRpZGF0ZS0+
Y2hpbGQoMSktPmNoaWxkKDApOworICAgICAgICAgICAgY2FuZGlkYXRlLT5zZXRUeXBlKEZsb2F0
KTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIFNxcnQ6CisgICAgICAgIGlm
IChjYW5kaWRhdGUtPmNoaWxkKDApLT5vcGNvZGUoKSA9PSBGbG9hdFRvRG91YmxlKSB7CisgICAg
ICAgICAgICBjYW5kaWRhdGUtPmNoaWxkKDApID0gY2FuZGlkYXRlLT5jaGlsZCgwKS0+Y2hpbGQo
MCk7CisgICAgICAgICAgICBjYW5kaWRhdGUtPnNldFR5cGUoRmxvYXQpOworICAgICAgICB9Cisg
ICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwor
fSAvLyBuYW1lc3BhY2UKKworLy8gVGhlIGdvYWwgb2YgdGhpcyBwaGFzZSBpcyB0byB0cmFuc2Zv
cm0gRG91YmxlIG9wZXJhdGlvbnMKKy8vIGludG8gZmxvYXQgaWYgdGhlIERvdWJsZSByZXN1bHQg
aXMgbmV2ZXIgdXNlZCBhcyBEb3VibGUuCisvLworLy8gSW4gQywgdGhhdCB3b3VsZCBiZSBzb21l
dGhpbmcgbGlrZToKKy8vICAgICBmbG9hdCBhZGQoZmxvYXQgYSwgZmxvYXQgYikgeworLy8gICAg
ICAgICByZXR1cm4gKGRvdWJsZSlhICsgKGRvdWJsZSliOworLy8gICAgIH0KKy8vCisvLyBTdWNo
IG9wZXJhdGlvbiBhcmlzZSBpbiBKUyBiZWNhdXNlIHRoZXJlIGFyZSBpcyBubyBGbG9hdCB0eXBl
CisvLyBhbmQgZmxvYXQgb3BlcmF0aW9ucyBhcmUgZ2VuZXJhdGVkIGJ5IGFkZGluZyBkb3VibGUt
dG8tZmxvYXQgcm91bmRpbmcuCisvLworLy8gVGhlIG9wZXJhdGlvbnMgY2FuIGJlIGRvbmUgZW50
aXJlbHkgd2l0aG91dCBEb3VibGUgY29udmVyc2lvbi4KKy8vIFVzaW5nIGZsb2F0IGluIHBsYWNl
IHJlbW92ZSB0aGUgdXNlbGVzcyBjb252ZXJzaW9uLCBhbmQgdGhlIGZsb2F0CisvLyBvcHMgaXMg
c29tZXRpbWUgbWFzc2l2ZWx5IGNoZWFwZXIgKFNRUlQgZm9yIGV4YW1wbGUpLgorLy8KKy8vIElm
IHRoZSBEb3VibGUgdmFsdWUgaXMgdXNlZCBhcyBEb3VibGUsIHdlIGRvIG5vdCBkbyB0aGUgY29u
dmVyc2lvbi4KKy8vIEl0IGlzIGNoZWFwZXIgdG8gZG8gYSBjb252ZXJzaW9uIHRoYW4gcmVwZWF0
IGFueSBmbG9hdGluZy1wb2ludCBvcGVyYXRpb24uCit2b2lkIHJlZHVjZURvdWJsZVRvRmxvYXQo
UHJvY2VkdXJlJiBwcm9jZWR1cmUpCit7CisgICAgUGhhc2VTY29wZSBwaGFzZVNjb3BlKHByb2Nl
ZHVyZSwgInJlZHVjZURvdWJsZVRvRmxvYXQiKTsKKworICAgIEhhc2hTZXQ8VmFsdWUqPiBjYW5k
aWRhdGVzOworCisgICAgLy8gRmlyc3QsIHdlIGZpbmQgYW55IHZhbHVlIHRoYXQgaXMgY29udmVy
dGVkIHRvIGZsb2F0CisgICAgLy8gYW5kIG9ubHkgdXNlZCBhcyBmbG9hdC4KKyAgICAvLyBXZSBh
bHNvIHNpbXBsaWZ5IGNvbXBhcmlzb25zIHNpbmNlIHRoYXQncyBhbHdheXMgc2FmZSBhbmQgd2UK
KyAgICAvLyBkb24ndCB3YW50IHRoZW0gdG8gYXBwZWFyIGluIHRoZSBuZXh0IGxvb3AuCisgICAg
Zm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IHByb2NlZHVyZSkgeworICAgICAgICBmb3IgKFZhbHVl
KiB2YWx1ZSA6ICpibG9jaykgeworICAgICAgICAgICAgdmFsdWUtPnBlcmZvcm1TdWJzdGl0dXRp
b24oKTsKKworICAgICAgICAgICAgc3dpdGNoICh2YWx1ZS0+b3Bjb2RlKCkpIHsKKyAgICAgICAg
ICAgIGNhc2UgRG91YmxlVG9GbG9hdDoKKyAgICAgICAgICAgICAgICBjYW5kaWRhdGVzLmFkZCh2
YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSBFcXVhbDoKKyAgICAgICAgICAgIGNhc2UgTm90RXF1YWw6CisgICAgICAgICAgICBjYXNlIExl
c3NUaGFuOgorICAgICAgICAgICAgY2FzZSBHcmVhdGVyVGhhbjoKKyAgICAgICAgICAgIGNhc2Ug
TGVzc0VxdWFsOgorICAgICAgICAgICAgY2FzZSBHcmVhdGVyRXF1YWw6CisgICAgICAgICAgICAg
ICAgaWYgKHZhbHVlLT5jaGlsZCgwKS0+b3Bjb2RlKCkgPT0gRmxvYXRUb0RvdWJsZSAmJiB2YWx1
ZS0+Y2hpbGQoMSktPm9wY29kZSgpID09IEZsb2F0VG9Eb3VibGUpIHsKKyAgICAgICAgICAgICAg
ICAgICAgdmFsdWUtPmNoaWxkKDApID0gdmFsdWUtPmNoaWxkKDApLT5jaGlsZCgwKTsKKyAgICAg
ICAgICAgICAgICAgICAgdmFsdWUtPmNoaWxkKDEpID0gdmFsdWUtPmNoaWxkKDEpLT5jaGlsZCgw
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorCisgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IHByb2NlZHVyZSkgewor
ICAgICAgICBmb3IgKFZhbHVlKiB2YWx1ZSA6ICpibG9jaykgeworICAgICAgICAgICAgaWYgKHZh
bHVlLT5vcGNvZGUoKSA9PSBEb3VibGVUb0Zsb2F0KQorICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworCisgICAgICAgICAgICBmb3IgKFZhbHVlKiBjaGlsZCA6IHZhbHVlLT5jaGlsZHJlbigpKSB7
CisgICAgICAgICAgICAgICAgaWYgKGNoaWxkLT50eXBlKCkgPT0gRG91YmxlKQorICAgICAgICAg
ICAgICAgICAgICBjYW5kaWRhdGVzLnJlbW92ZShjaGlsZCk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBpZiAoY2FuZGlkYXRlcy5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIC8vIFNlY29uZCwgd2UgZ28gb3ZlciB0aGUgY2FuZGlkYXRlcyBhbmQgYXR0
ZW1wdCB0byBzaW1wbGlmeSB0aGVtLgorICAgIC8vIFRoaXMgbGVhdmVzIHRoZSBncmFwaCBpbiBh
biBpbnZhbGlkIHN0YXRlIHdoZXJlIEZsb2F0IFZhbHVlcyBhcmUKKyAgICAvLyB1c2VkIGJ5IERv
dWJsZVRvRmxvYXQgVmFsdWVzLiBUaGlzIGlzIG9ubHkgdGVtcG9yYXJ5LgorICAgIGZvciAoVmFs
dWUqIGNhbmRpZGF0ZSA6IGNhbmRpZGF0ZXMpCisgICAgICAgIGF0dGVtcHRTaW1wbGlmaWNhdGlv
bihjYW5kaWRhdGUpOworCisgICAgLy8gRmluYWxseSwgcmVtb3ZlIHRoZSBEb3VibGVUb0Zsb2F0
IG1hZGUgdXNlbGVzcyBieSB0aGUgc2ltcGxpZmljYXRpb25zLgorICAgIGZvciAoQmFzaWNCbG9j
ayogYmxvY2sgOiBwcm9jZWR1cmUpIHsKKyAgICAgICAgZm9yIChWYWx1ZSogdmFsdWUgOiAqYmxv
Y2spIHsKKyAgICAgICAgICAgIGlmICh2YWx1ZS0+b3Bjb2RlKCkgPT0gRG91YmxlVG9GbG9hdCAm
JiB2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSA9PSBGbG9hdCkKKyAgICAgICAgICAgICAgICB2YWx1
ZS0+cmVwbGFjZVdpdGhJZGVudGl0eSh2YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICB9CisgICAg
fQorCisgICAgLy8gV2UgZG8gbm90IGNsZWFuIGFsbCB0aGUgdXNlbGVzcyBub2RlcyBhbmQgY29u
dmVyc2lvbnMuIFJlZHVjZVN0cmVuZ3RoIGRvZXMgdGhhdCBiZXR0ZXIuCit9CisKK30gfSAvLyBu
YW1lc3BhY2UgSlNDOjpCMworCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKKwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlRG91YmxlVG9GbG9hdC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlRG91YmxlVG9GbG9hdC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjgwYTUyYjU2YTMwOTdjMzE2OTc4ZTAzMGZiYTFhNzY5MzRjY2Q3NDEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VEb3VibGVUb0Zsb2F0LmgKQEAg
LTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaWZuZGVmIEIzUmVkdWNlRG91YmxlVG9GbG9hdF9oCisjZGVmaW5lIEIzUmVkdWNlRG91
YmxlVG9GbG9hdF9oCisKKyNpZiBFTkFCTEUoQjNfSklUKQorCituYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIEIzIHsKKworY2xhc3MgUHJvY2VkdXJlOworCisvLyBDaGFuZ2UgRG91YmxlIG9wZXJh
dGlvbnMgdG8gRmxvYXQgb3BlcmF0aW9ucyB3aGVuIHRoZSBkaWZmZXJlbmNlIGlzIG5vdCBvYnNl
cnZhYmxlCisvLyBhbmQgZG9pbmcgc28gaXMgbGlrZWx5IGJlbmVmaWNpYWwuCit2b2lkIHJlZHVj
ZURvdWJsZVRvRmxvYXQoUHJvY2VkdXJlJik7CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwor
CisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKKworI2VuZGlmIC8vIEIzUmVkdWNlRG91YmxlVG9G
bG9hdF9oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0
cmVuZ3RoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNw
cAppbmRleCA4YzI3NjRmMGI0Y2Q1YzYxZmJkMzU2YTkxMzc1ZTQxMGJmYzJhZDA2Li5hNDZhMTJj
NzA0OTNjNmM2ODVlMTIyZGMwOGE5Y2E0MzMyMWYwMWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwCkBAIC00ODUsNiArNDg1LDE1IEBAIHByaXZh
dGU6CiAKICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgIGNhc2UgU3FydDoKKyAgICAgICAg
ICAgIC8vIFR1cm4gdGhpczogU3FydChjb25zdGFudCkKKyAgICAgICAgICAgIC8vIEludG8gdGhp
czogc3FydDx2YWx1ZS0+dHlwZSgpPihjb25zdGFudCkKKyAgICAgICAgICAgIGlmIChWYWx1ZSog
Y29uc3RhbnQgPSBtX3ZhbHVlLT5jaGlsZCgwKS0+c3FydENvbnN0YW50KG1fcHJvYykpIHsKKyAg
ICAgICAgICAgICAgICByZXBsYWNlV2l0aE5ld1ZhbHVlKGNvbnN0YW50KTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAg
IGNhc2UgQml0d2lzZUNhc3Q6CiAgICAgICAgICAgICAvLyBUdXJuIHRoaXM6IEJpdHdpc2VDYXN0
KGNvbnN0YW50KQogICAgICAgICAgICAgLy8gSW50byB0aGlzOiBiaXR3aXNlX2Nhc3Q8dmFsdWUt
PnR5cGUoKT4oY29uc3RhbnQpCkBAIC01NDEsNiArNTUwLDMyIEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBicmVhazsKIAorICAgICAgICBjYXNlIEZsb2F0VG9Eb3VibGU6
CisgICAgICAgICAgICAvLyBUdXJuIHRoaXM6IEZsb2F0VG9Eb3VibGUoY29uc3RhbnQpCisgICAg
ICAgICAgICAvLyBJbnRvIHRoaXM6IENvbnN0RG91YmxlKGNvbnN0YW50KQorICAgICAgICAgICAg
aWYgKFZhbHVlKiBjb25zdGFudCA9IG1fdmFsdWUtPmNoaWxkKDApLT5mbG9hdFRvRG91YmxlQ29u
c3RhbnQobV9wcm9jKSkgeworICAgICAgICAgICAgICAgIHJlcGxhY2VXaXRoTmV3VmFsdWUoY29u
c3RhbnQpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBEb3VibGVUb0Zsb2F0OgorICAgICAgICAgICAgLy8g
VHVybiB0aGlzOiBEb3VibGVUb0Zsb2F0KEZsb2F0VG9Eb3VibGUodmFsdWUpKQorICAgICAgICAg
ICAgLy8gSW50byB0aGlzOiB2YWx1ZQorICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDAp
LT5vcGNvZGUoKSA9PSBGbG9hdFRvRG91YmxlKSB7CisgICAgICAgICAgICAgICAgbV92YWx1ZS0+
cmVwbGFjZVdpdGhJZGVudGl0eShtX3ZhbHVlLT5jaGlsZCgwKS0+Y2hpbGQoMCkpOworICAgICAg
ICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFR1cm4gdGhpczogRG91YmxlVG9GbG9hdChjb25z
dGFudCkKKyAgICAgICAgICAgIC8vIEludG8gdGhpczogQ29uc3RGbG9hdChjb25zdGFudCkKKyAg
ICAgICAgICAgIGlmIChWYWx1ZSogY29uc3RhbnQgPSBtX3ZhbHVlLT5jaGlsZCgwKS0+ZG91Ymxl
VG9GbG9hdENvbnN0YW50KG1fcHJvYykpIHsKKyAgICAgICAgICAgICAgICByZXBsYWNlV2l0aE5l
d1ZhbHVlKGNvbnN0YW50KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgIGNhc2UgU2VsZWN0OgogICAgICAgICAgICAg
Ly8gVHVybiB0aGlzOiBTZWxlY3QoY29uc3RhbnQsIGEsIGIpCiAgICAgICAgICAgICAvLyBJbnRv
IHRoaXM6IGNvbnN0YW50ID8gYSA6IGIKQEAgLTU5NSwxMSArNjMwLDkgQEAgcHJpdmF0ZToKICAg
ICAgICAgY2FzZSBMb2FkOFM6CiAgICAgICAgIGNhc2UgTG9hZDE2WjoKICAgICAgICAgY2FzZSBM
b2FkMTZTOgotICAgICAgICBjYXNlIExvYWRGbG9hdDoKICAgICAgICAgY2FzZSBMb2FkOgogICAg
ICAgICBjYXNlIFN0b3JlODoKICAgICAgICAgY2FzZSBTdG9yZTE2OgotICAgICAgICBjYXNlIFN0
b3JlRmxvYXQ6CiAgICAgICAgIGNhc2UgU3RvcmU6IHsKICAgICAgICAgICAgIFZhbHVlKiBhZGRy
ZXNzID0gbV92YWx1ZS0+bGFzdENoaWxkKCk7CiAgICAgICAgICAgICBNZW1vcnlWYWx1ZSogbWVt
b3J5ID0gbV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNUeXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1R5
cGUuY3BwCmluZGV4IDAyMzVhYTQ3MjA0M2E5NzE3YzQ1NmQ5YWMzMDUzYzMzNDdhNzAxOTMuLjAw
NTdlYWY2MTdlMGQ0N2E0MmQ4NzNhZmI1ZjcxYjMwZmMxNGRjMDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1R5cGUuY3BwCkBAIC00Niw2ICs0Niw5IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmlu
dFN0cmVhbSYgb3V0LCBUeXBlIHR5cGUpCiAgICAgY2FzZSBJbnQ2NDoKICAgICAgICAgb3V0LnBy
aW50KCJJbnQ2NCIpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBGbG9hdDoKKyAgICAgICAg
b3V0LnByaW50KCJGbG9hdCIpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBEb3VibGU6CiAg
ICAgICAgIG91dC5wcmludCgiRG91YmxlIik7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1R5cGUuaAppbmRleCBmOWEzYWUwZmZkOGMwZGMzYjdlZTU1ZGIyNWVhYWEyY2VjZGUw
NmFjLi5kZGU0MTQxZmNmOTZhNjY5MzA3MWJiY2IyZDhlY2ZiOTA4YTAxNTZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzVHlwZS5oCkBAIC0zNyw2ICszNyw3IEBAIGVudW0gVHlwZSA6IGludDhfdCB7
CiAgICAgVm9pZCwKICAgICBJbnQzMiwKICAgICBJbnQ2NCwKKyAgICBGbG9hdCwKICAgICBEb3Vi
bGUKIH07CiAKQEAgLTQ3LDcgKzQ4LDcgQEAgaW5saW5lIGJvb2wgaXNJbnQoVHlwZSB0eXBlKQog
CiBpbmxpbmUgYm9vbCBpc0Zsb2F0KFR5cGUgdHlwZSkKIHsKLSAgICByZXR1cm4gdHlwZSA9PSBE
b3VibGU7CisgICAgcmV0dXJuIHR5cGUgPT0gRmxvYXQgfHwgdHlwZSA9PSBEb3VibGU7CiB9CiAK
IGlubGluZSBUeXBlIHBvaW50ZXJUeXBlKCkKQEAgLTYzLDYgKzY0LDcgQEAgaW5saW5lIHNpemVf
dCBzaXplb2ZUeXBlKFR5cGUgdHlwZSkKICAgICBjYXNlIFZvaWQ6CiAgICAgICAgIHJldHVybiAw
OwogICAgIGNhc2UgSW50MzI6CisgICAgY2FzZSBGbG9hdDoKICAgICAgICAgcmV0dXJuIDQ7CiAg
ICAgY2FzZSBJbnQ2NDoKICAgICBjYXNlIERvdWJsZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1ZhbGlkYXRlLmNwcAppbmRleCAxMDY0MWEwNjJmYWJhMDUxMGMzNzljOWNiZjQ0YzU4OWFmODNm
MjNkLi43NTg3NDQzMTViYmY0NDczNDc2MTg5NmIzZTI4MjQ0ZGEyYTIzNTExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwCkBAIC0xMzQsNiArMTM0LDEwIEBAIHB1Ymxp
YzoKICAgICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPm51bUNoaWxkcmVuKCksICgiQXQg
IiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBE
b3VibGUsICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIENvbnN0RmxvYXQ6CisgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5u
dW1DaGlsZHJlbigpLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRF
KHZhbHVlLT50eXBlKCkgPT0gRmxvYXQsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFN0YWNrU2xvdDoKICAgICAgICAgICAgIGNhc2Ug
RnJhbWVQb2ludGVyOgogICAgICAgICAgICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+bnVtQ2hpbGRy
ZW4oKSwgKCJBdCAiLCAqdmFsdWUpKTsKQEAgLTE3Nyw3ICsxODEsOSBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSAhPSB2YWx1ZS0+Y2hpbGQoMCktPnR5
cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSgKICAgICAg
ICAgICAgICAgICAgICAgKHZhbHVlLT50eXBlKCkgPT0gSW50NjQgJiYgdmFsdWUtPmNoaWxkKDAp
LT50eXBlKCkgPT0gRG91YmxlKQotICAgICAgICAgICAgICAgICAgICB8fCAodmFsdWUtPnR5cGUo
KSA9PSBEb3VibGUgJiYgdmFsdWUtPmNoaWxkKDApLT50eXBlKCkgPT0gSW50NjQpLAorICAgICAg
ICAgICAgICAgICAgICB8fCAodmFsdWUtPnR5cGUoKSA9PSBEb3VibGUgJiYgdmFsdWUtPmNoaWxk
KDApLT50eXBlKCkgPT0gSW50NjQpCisgICAgICAgICAgICAgICAgICAgIHx8ICh2YWx1ZS0+dHlw
ZSgpID09IEZsb2F0ICYmIHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpID09IEludDMyKQorICAgICAg
ICAgICAgICAgICAgICB8fCAodmFsdWUtPnR5cGUoKSA9PSBJbnQzMiAmJiB2YWx1ZS0+Y2hpbGQo
MCktPnR5cGUoKSA9PSBGbG9hdCksCiAgICAgICAgICAgICAgICAgICAgICgiQXQgIiwgKnZhbHVl
KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFNFeHQ4OgpAQCAt
MjAzLDEwICsyMDksOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUt
PnR5cGUoKSA9PSBJbnQzMiwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIGNhc2UgU3FydDoKLSAgICAgICAgICAgIGNhc2UgRlJvdW5kOgogICAg
ICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09IDEsICgiQXQgIiwg
KnZhbHVlKSk7Ci0gICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDApLT50eXBl
KCkgPT0gRG91YmxlLCAoIkF0ICIsICp2YWx1ZSkpOwotICAgICAgICAgICAgICAgIFZBTElEQVRF
KHZhbHVlLT50eXBlKCkgPT0gRG91YmxlLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAg
ICAgIFZBTElEQVRFKGlzRmxvYXQodmFsdWUtPmNoaWxkKDApLT50eXBlKCkpLCAoIkF0ICIsICp2
YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKGlzRmxvYXQodmFsdWUtPnR5cGUoKSks
ICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBj
YXNlIElUb0Q6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkg
PT0gMSwgKCJBdCAiLCAqdmFsdWUpKTsKQEAgLTIxOCw2ICsyMjMsMTYgQEAgcHVibGljOgogICAg
ICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpID09IERvdWJsZSwg
KCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgp
ID09IEludDMyLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBGbG9hdFRvRG91YmxlOgorICAgICAgICAgICAgICAgIFZBTElEQVRFKHZh
bHVlLT5udW1DaGlsZHJlbigpID09IDEsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAg
ICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDApLT50eXBlKCkgPT0gRmxvYXQsICgiQXQgIiwgKnZh
bHVlKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBEb3VibGUs
ICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIERvdWJsZVRvRmxvYXQ6CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNo
aWxkcmVuKCkgPT0gMSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFU
RSh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSA9PSBEb3VibGUsICgiQXQgIiwgKnZhbHVlKSk7Cisg
ICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBGbG9hdCwgKCJBdCAiLCAq
dmFsdWUpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgRXF1YWw6
CiAgICAgICAgICAgICBjYXNlIE5vdEVxdWFsOgogICAgICAgICAgICAgY2FzZSBMZXNzVGhhbjoK
QEAgLTI1MiwxMiArMjY3LDYgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZh
bHVlLT50eXBlKCkgPT0gSW50MzIsICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAg
dmFsaWRhdGVTdGFja0FjY2Vzcyh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICBjYXNlIExvYWRGbG9hdDoKLSAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+
bnVtQ2hpbGRyZW4oKSA9PSAxLCAoIkF0ICIsICp2YWx1ZSkpOwotICAgICAgICAgICAgICAgIFZB
TElEQVRFKHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwg
KnZhbHVlKSk7Ci0gICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBEb3Vi
bGUsICgiQXQgIiwgKnZhbHVlKSk7Ci0gICAgICAgICAgICAgICAgdmFsaWRhdGVTdGFja0FjY2Vz
cyh2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIExvYWQ6
CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMSwgKCJB
dCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMCkt
PnR5cGUoKSA9PSBwb2ludGVyVHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOwpAQCAtMjcyLDEzICsy
ODEsNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9
PSBWb2lkLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIHZhbGlkYXRlU3RhY2tB
Y2Nlc3ModmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBT
dG9yZUZsb2F0OgotICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigp
ID09IDIsICgiQXQgIiwgKnZhbHVlKSk7Ci0gICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUt
PmNoaWxkKDApLT50eXBlKCkgPT0gRG91YmxlLCAoIkF0ICIsICp2YWx1ZSkpOwotICAgICAgICAg
ICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgxKS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCks
ICgiQXQgIiwgKnZhbHVlKSk7Ci0gICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUo
KSA9PSBWb2lkLCAoIkF0ICIsICp2YWx1ZSkpOwotICAgICAgICAgICAgICAgIHZhbGlkYXRlU3Rh
Y2tBY2Nlc3ModmFsdWUpOwotICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2Fz
ZSBTdG9yZToKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9
PSAyLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5j
aGlsZCgxKS0+dHlwZSgpID09IHBvaW50ZXJUeXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAKaW5kZXggNzY2OTNkNjI4MjkwMTVlMzczMTk1NzRk
NzUwNDRjMmUxOGIwNjlmZi4uYzA0Mjc2Nzk3NzQzYjZhMjYyZjk5ZDkwYjNiNzVmYTRiY2QyN2Jh
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcApAQCAtMTk5LDYgKzE5OSwyMSBA
QCBWYWx1ZSogVmFsdWU6OmJpdHdpc2VDYXN0Q29uc3RhbnQoUHJvY2VkdXJlJikgY29uc3QKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIAorVmFsdWUqIFZhbHVlOjpkb3VibGVUb0Zsb2F0Q29uc3Rh
bnQoUHJvY2VkdXJlJikgY29uc3QKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworVmFsdWUq
IFZhbHVlOjpmbG9hdFRvRG91YmxlQ29uc3RhbnQoUHJvY2VkdXJlJikgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbnVsbHB0cjsKK30KKworVmFsdWUqIFZhbHVlOjpzcXJ0Q29uc3RhbnQoUHJvY2VkdXJl
JikgY29uc3QKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwogVHJpU3RhdGUgVmFsdWU6OmVx
dWFsQ29uc3RhbnQoY29uc3QgVmFsdWUqKSBjb25zdAogewogICAgIHJldHVybiBNaXhlZFRyaVN0
YXRlOwpAQCAtMjk4LDYgKzMxMyw4IEBAIFRyaVN0YXRlIFZhbHVlOjphc1RyaVN0YXRlKCkgY29u
c3QKICAgICBjYXNlIENvbnN0RG91YmxlOgogICAgICAgICAvLyBVc2UgIiE9IDAiIHRvIHJlYWxs
eSBlbXBoYXNpemUgd2hhdCB0aGlzIG1lYW4gd2l0aCByZXNwZWN0IHRvIE5hTiBhbmQgc3VjaC4K
ICAgICAgICAgcmV0dXJuIHRyaVN0YXRlKGFzRG91YmxlKCkgIT0gMCk7CisgICAgY2FzZSBDb25z
dEZsb2F0OgorICAgICAgICByZXR1cm4gdHJpU3RhdGUoYXNGbG9hdCgpICE9IDAuKTsKICAgICBk
ZWZhdWx0OgogICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKICAgICB9CkBAIC0zMTIsNiAr
MzI5LDcgQEAgRWZmZWN0cyBWYWx1ZTo6ZWZmZWN0cygpIGNvbnN0CiAgICAgY2FzZSBDb25zdDMy
OgogICAgIGNhc2UgQ29uc3Q2NDoKICAgICBjYXNlIENvbnN0RG91YmxlOgorICAgIGNhc2UgQ29u
c3RGbG9hdDoKICAgICBjYXNlIFN0YWNrU2xvdDoKICAgICBjYXNlIEFyZ3VtZW50UmVnOgogICAg
IGNhc2UgRnJhbWVQb2ludGVyOgpAQCAtMzM0LDkgKzM1MiwxMCBAQCBFZmZlY3RzIFZhbHVlOjpl
ZmZlY3RzKCkgY29uc3QKICAgICBjYXNlIFNFeHQzMjoKICAgICBjYXNlIFpFeHQzMjoKICAgICBj
YXNlIFRydW5jOgotICAgIGNhc2UgRlJvdW5kOgogICAgIGNhc2UgSVRvRDoKICAgICBjYXNlIERU
b0kzMjoKKyAgICBjYXNlIEZsb2F0VG9Eb3VibGU6CisgICAgY2FzZSBEb3VibGVUb0Zsb2F0Ogog
ICAgIGNhc2UgRXF1YWw6CiAgICAgY2FzZSBOb3RFcXVhbDoKICAgICBjYXNlIExlc3NUaGFuOgpA
QCAtMzU2LDE0ICszNzUsMTIgQEAgRWZmZWN0cyBWYWx1ZTo6ZWZmZWN0cygpIGNvbnN0CiAgICAg
Y2FzZSBMb2FkOFM6CiAgICAgY2FzZSBMb2FkMTZaOgogICAgIGNhc2UgTG9hZDE2UzoKLSAgICBj
YXNlIExvYWRGbG9hdDoKICAgICBjYXNlIExvYWQ6CiAgICAgICAgIHJlc3VsdC5yZWFkcyA9IGFz
PE1lbW9yeVZhbHVlPigpLT5yYW5nZSgpOwogICAgICAgICByZXN1bHQuY29udHJvbERlcGVuZGVu
dCA9IHRydWU7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3RvcmU4OgogICAgIGNhc2UgU3Rv
cmUxNjoKLSAgICBjYXNlIFN0b3JlRmxvYXQ6CiAgICAgY2FzZSBTdG9yZToKICAgICAgICAgcmVz
dWx0LndyaXRlcyA9IGFzPE1lbW9yeVZhbHVlPigpLT5yYW5nZSgpOwogICAgICAgICByZXN1bHQu
Y29udHJvbERlcGVuZGVudCA9IHRydWU7CkBAIC00MTAsOSArNDI3LDEwIEBAIFZhbHVlS2V5IFZh
bHVlOjprZXkoKSBjb25zdAogICAgIGNhc2UgWkV4dDMyOgogICAgIGNhc2UgQ2x6OgogICAgIGNh
c2UgVHJ1bmM6Ci0gICAgY2FzZSBGUm91bmQ6CiAgICAgY2FzZSBJVG9EOgogICAgIGNhc2UgRFRv
STMyOgorICAgIGNhc2UgRmxvYXRUb0RvdWJsZToKKyAgICBjYXNlIERvdWJsZVRvRmxvYXQ6CiAg
ICAgY2FzZSBDaGVjazoKICAgICAgICAgcmV0dXJuIFZhbHVlS2V5KG9wY29kZSgpLCB0eXBlKCks
IGNoaWxkKDApKTsKICAgICBjYXNlIEFkZDoKQEAgLTQ0Nyw2ICs0NjUsOCBAQCBWYWx1ZUtleSBW
YWx1ZTo6a2V5KCkgY29uc3QKICAgICAgICAgcmV0dXJuIFZhbHVlS2V5KENvbnN0NjQsIHR5cGUo
KSwgYXNJbnQ2NCgpKTsKICAgICBjYXNlIENvbnN0RG91YmxlOgogICAgICAgICByZXR1cm4gVmFs
dWVLZXkoQ29uc3REb3VibGUsIHR5cGUoKSwgYXNEb3VibGUoKSk7CisgICAgY2FzZSBDb25zdEZs
b2F0OgorICAgICAgICByZXR1cm4gVmFsdWVLZXkoQ29uc3RGbG9hdCwgdHlwZSgpLCBhc0Zsb2F0
KCkpOwogICAgIGNhc2UgQXJndW1lbnRSZWc6CiAgICAgICAgIHJldHVybiBWYWx1ZUtleSgKICAg
ICAgICAgICAgIEFyZ3VtZW50UmVnLCB0eXBlKCksCkBAIC00NzcsNiArNDk3LDcgQEAgdm9pZCBW
YWx1ZTo6Y2hlY2tPcGNvZGUoT3Bjb2RlIG9wY29kZSkKICAgICBBU1NFUlQoIUNvbnN0MzJWYWx1
ZTo6YWNjZXB0cyhvcGNvZGUpKTsKICAgICBBU1NFUlQoIUNvbnN0NjRWYWx1ZTo6YWNjZXB0cyhv
cGNvZGUpKTsKICAgICBBU1NFUlQoIUNvbnN0RG91YmxlVmFsdWU6OmFjY2VwdHMob3Bjb2RlKSk7
CisgICAgQVNTRVJUKCFDb25zdEZsb2F0VmFsdWU6OmFjY2VwdHMob3Bjb2RlKSk7CiAgICAgQVNT
RVJUKCFDb250cm9sVmFsdWU6OmFjY2VwdHMob3Bjb2RlKSk7CiAgICAgQVNTRVJUKCFNZW1vcnlW
YWx1ZTo6YWNjZXB0cyhvcGNvZGUpKTsKICAgICBBU1NFUlQoIVBhdGNocG9pbnRWYWx1ZTo6YWNj
ZXB0cyhvcGNvZGUpKTsKQEAgLTUyNywxNSArNTQ4LDI0IEBAIFR5cGUgVmFsdWU6OnR5cGVGb3Io
T3Bjb2RlIG9wY29kZSwgVmFsdWUqIGZpcnN0Q2hpbGQsIFZhbHVlKiBzZWNvbmRDaGlsZCkKICAg
ICBjYXNlIFNFeHQzMjoKICAgICBjYXNlIFpFeHQzMjoKICAgICAgICAgcmV0dXJuIEludDY0Owot
ICAgIGNhc2UgRlJvdW5kOgorICAgIGNhc2UgRmxvYXRUb0RvdWJsZToKICAgICBjYXNlIElUb0Q6
CiAgICAgICAgIHJldHVybiBEb3VibGU7CisgICAgY2FzZSBEb3VibGVUb0Zsb2F0OgorICAgICAg
ICByZXR1cm4gRmxvYXQ7CiAgICAgY2FzZSBCaXR3aXNlQ2FzdDoKLSAgICAgICAgaWYgKGZpcnN0
Q2hpbGQtPnR5cGUoKSA9PSBJbnQ2NCkKKyAgICAgICAgc3dpdGNoIChmaXJzdENoaWxkLT50eXBl
KCkpIHsKKyAgICAgICAgY2FzZSBJbnQ2NDoKICAgICAgICAgICAgIHJldHVybiBEb3VibGU7Ci0g
ICAgICAgIGlmIChmaXJzdENoaWxkLT50eXBlKCkgPT0gRG91YmxlKQorICAgICAgICBjYXNlIERv
dWJsZToKICAgICAgICAgICAgIHJldHVybiBJbnQ2NDsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIGNhc2UgSW50MzI6CisgICAgICAgICAgICByZXR1cm4gRmxvYXQ7Cisg
ICAgICAgIGNhc2UgRmxvYXQ6CisgICAgICAgICAgICByZXR1cm4gSW50MzI7CisgICAgICAgIGNh
c2UgVm9pZDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CiAg
ICAgICAgIHJldHVybiBWb2lkOwogICAgIGNhc2UgTm9wOgogICAgICAgICByZXR1cm4gVm9pZDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCmluZGV4IGE1MmU4YTMyMzYwYWI1ZmYwMmYyMWQz
MjlkYjk3MTA2ZDhlN2EyY2MuLjkxZTQ5ZDFiZDk2MzllYzJkOGJjNmZlMGJlNTRiZTNhZTg3YTVm
MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaApAQCAtNzEsOCArNzEsOCBAQCBwdWJs
aWM6CiAKICAgICB1bnNpZ25lZCBudW1DaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRy
ZW4uc2l6ZSgpOyB9CiAKLSAgICAvLyBUaGlzIGNvbXB1dGVzIHRoZSB0eXBlIHVzaW5nIHRoZSBv
cGNvZGUuCiAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisgICAgdm9p
ZCBzZXRUeXBlKFR5cGUgdHlwZSkgeyBtX3R5cGUgPSB0eXBlOyB9CiAKICAgICAvLyBUaGlzIGlz
IHVzZWZ1bCB3aGVuIGxvd2VyaW5nLiBOb3RlIHRoYXQgdGhpcyBpcyBvbmx5IHZhbGlkIGZvciBu
b24tdm9pZCB2YWx1ZXMuCiAgICAgQWlyOjpBcmc6OlR5cGUgYWlyVHlwZSgpIGNvbnN0IHsgcmV0
dXJuIEFpcjo6QXJnOjp0eXBlRm9yQjNUeXBlKHR5cGUoKSk7IH0KQEAgLTEyOCw3ICsxMjgsMTAg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgVmFsdWUqIHNTaHJDb25zdGFudChQcm9jZWR1cmUmLCBj
b25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0OwogICAgIHZpcnR1YWwgVmFsdWUqIHpTaHJDb25zdGFu
dChQcm9jZWR1cmUmLCBjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0OwogICAgIHZpcnR1YWwgVmFs
dWUqIGJpdHdpc2VDYXN0Q29uc3RhbnQoUHJvY2VkdXJlJikgY29uc3Q7Ci0gICAgCisgICAgdmly
dHVhbCBWYWx1ZSogZG91YmxlVG9GbG9hdENvbnN0YW50KFByb2NlZHVyZSYpIGNvbnN0OworICAg
IHZpcnR1YWwgVmFsdWUqIGZsb2F0VG9Eb3VibGVDb25zdGFudChQcm9jZWR1cmUmKSBjb25zdDsK
KyAgICB2aXJ0dWFsIFZhbHVlKiBzcXJ0Q29uc3RhbnQoUHJvY2VkdXJlJikgY29uc3Q7CisKICAg
ICB2aXJ0dWFsIFRyaVN0YXRlIGVxdWFsQ29uc3RhbnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25z
dDsKICAgICB2aXJ0dWFsIFRyaVN0YXRlIG5vdEVxdWFsQ29uc3RhbnQoY29uc3QgVmFsdWUqIG90
aGVyKSBjb25zdDsKICAgICB2aXJ0dWFsIFRyaVN0YXRlIGxlc3NUaGFuQ29uc3RhbnQoY29uc3Qg
VmFsdWUqIG90aGVyKSBjb25zdDsKQEAgLTE2Niw2ICsxNjksOSBAQCBwdWJsaWM6CiAgICAgZG91
YmxlIGFzRG91YmxlKCkgY29uc3Q7CiAgICAgYm9vbCBpc0VxdWFsVG9Eb3VibGUoZG91YmxlKSBj
b25zdDsgLy8gV2Ugc2F5ICJpc0VxdWFsVG9Eb3VibGUiIGJlY2F1c2UgImlzRG91YmxlIiB3b3Vs
ZCBiZSBhIGJpdCBlcXVhbGl0eS4KIAorICAgIGJvb2wgaGFzRmxvYXQoKSBjb25zdDsKKyAgICBm
bG9hdCBhc0Zsb2F0KCkgY29uc3Q7CisKICAgICBib29sIGhhc051bWJlcigpIGNvbnN0OwogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgcmVwcmVzZW50YWJsZUFzKCkgY29uc3Q7CiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBhc051bWJlcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNWYWx1ZUlubGluZXMuaAppbmRleCAzNDQxNGYyYjJiMWJkNzE2NWRlMTU5MDcz
NGQ2YzFmMWVlZWQ5YTllLi4wZWNiZWIxNGQxYWJjMWEwMTZiZDllY2I1ZDA4NTY3ODJkZjBlNGRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZUlubGluZXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZUlubGluZXMuaApAQCAtMzIsNiAr
MzIsNyBAQAogI2luY2x1ZGUgIkIzQ29uc3QzMlZhbHVlLmgiCiAjaW5jbHVkZSAiQjNDb25zdDY0
VmFsdWUuaCIKICNpbmNsdWRlICJCM0NvbnN0RG91YmxlVmFsdWUuaCIKKyNpbmNsdWRlICJCM0Nv
bnN0RmxvYXRWYWx1ZS5oIgogI2luY2x1ZGUgIkIzUGF0Y2hwb2ludFZhbHVlLmgiCiAjaW5jbHVk
ZSAiQjNQcm9jZWR1cmUuaCIKICNpbmNsdWRlICJCM1ZhbHVlLmgiCkBAIC01Nyw2ICs1OCw3IEBA
IGlubGluZSBib29sIFZhbHVlOjppc0NvbnN0YW50KCkgY29uc3QKICAgICBzd2l0Y2ggKG9wY29k
ZSgpKSB7CiAgICAgY2FzZSBDb25zdDMyOgogICAgIGNhc2UgQ29uc3Q2NDoKKyAgICBjYXNlIENv
bnN0RmxvYXQ6CiAgICAgY2FzZSBDb25zdERvdWJsZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgZGVmYXVsdDoKQEAgLTE0OCw5ICsxNTAsMTkgQEAgaW5saW5lIGJvb2wgVmFsdWU6OmlzRXF1
YWxUb0RvdWJsZShkb3VibGUgdmFsdWUpIGNvbnN0CiAgICAgcmV0dXJuIGhhc0RvdWJsZSgpICYm
IGFzRG91YmxlKCkgPT0gdmFsdWU7CiB9CiAKK2lubGluZSBib29sIFZhbHVlOjpoYXNGbG9hdCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuICEhYXM8Q29uc3RGbG9hdFZhbHVlPigpOworfQorCitpbmxp
bmUgZmxvYXQgVmFsdWU6OmFzRmxvYXQoKSBjb25zdAoreworICAgIHJldHVybiBhczxDb25zdEZs
b2F0VmFsdWU+KCktPnZhbHVlKCk7Cit9CisKIGlubGluZSBib29sIFZhbHVlOjpoYXNOdW1iZXIo
KSBjb25zdAogewotICAgIHJldHVybiBoYXNJbnQoKSB8fCBoYXNEb3VibGUoKTsKKyAgICByZXR1
cm4gaGFzSW50KCkgfHwgaGFzRG91YmxlKCkgfHwgaGFzRmxvYXQoKTsKIH0KIAogaW5saW5lIGJv
b2wgVmFsdWU6OmlzTmVnYXRpdmVaZXJvKCkgY29uc3QKQEAgLTE1OSw2ICsxNzEsMTAgQEAgaW5s
aW5lIGJvb2wgVmFsdWU6OmlzTmVnYXRpdmVaZXJvKCkgY29uc3QKICAgICAgICAgZG91YmxlIHZh
bHVlID0gYXNEb3VibGUoKTsKICAgICAgICAgcmV0dXJuICF2YWx1ZSAmJiBzdGQ6OnNpZ25iaXQo
dmFsdWUpOwogICAgIH0KKyAgICBpZiAoaGFzRmxvYXQoKSkgeworICAgICAgICBmbG9hdCB2YWx1
ZSA9IGFzRmxvYXQoKTsKKyAgICAgICAgcmV0dXJuICF2YWx1ZSAmJiBzdGQ6OnNpZ25iaXQodmFs
dWUpOworICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTE3Miw2ICsxODgsOCBAQCBp
bmxpbmUgYm9vbCBWYWx1ZTo6cmVwcmVzZW50YWJsZUFzKCkgY29uc3QKICAgICAgICAgcmV0dXJu
IGlzUmVwcmVzZW50YWJsZUFzPFQ+KGFzSW50NjQoKSk7CiAgICAgY2FzZSBDb25zdERvdWJsZToK
ICAgICAgICAgcmV0dXJuIGlzUmVwcmVzZW50YWJsZUFzPFQ+KGFzRG91YmxlKCkpOworICAgIGNh
c2UgQ29uc3RGbG9hdDoKKyAgICAgICAgcmV0dXJuIGlzUmVwcmVzZW50YWJsZUFzPFQ+KGFzRmxv
YXQoKSk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTE4
Nyw2ICsyMDUsOCBAQCBpbmxpbmUgVCBWYWx1ZTo6YXNOdW1iZXIoKSBjb25zdAogICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8VD4oYXNJbnQ2NCgpKTsKICAgICBjYXNlIENvbnN0RG91YmxlOgog
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VD4oYXNEb3VibGUoKSk7CisgICAgY2FzZSBDb25z
dEZsb2F0OgorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VD4oYXNGbG9hdCgpKTsKICAgICBk
ZWZhdWx0OgogICAgICAgICByZXR1cm4gVCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlS2V5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1ZhbHVlS2V5LmNwcAppbmRleCAzYzgwNTg2MzUxZjJjNDBlNTc3YzZiOGQ2ZTQ3MDVkMjU0
Y2NiMGFmLi5kNGJiMzZiM2E4ZDE3MGRlN2Y5ODBlNmU0YmUwZTRlNDVkYTFlYzgwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZUtleS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVLZXkuY3BwCkBAIC00NiwxNCArNDYsMTcgQEAgVmFs
dWUqIFZhbHVlS2V5OjptYXRlcmlhbGl6ZShQcm9jZWR1cmUmIHByb2MsIE9yaWdpbiBvcmlnaW4p
IGNvbnN0CiAgICAgY2FzZSBGcmFtZVBvaW50ZXI6CiAgICAgICAgIHJldHVybiBwcm9jLmFkZDxW
YWx1ZT4ob3Bjb2RlKCksIHR5cGUoKSwgb3JpZ2luKTsKICAgICBjYXNlIElkZW50aXR5OgorICAg
IGNhc2UgU3FydDoKICAgICBjYXNlIFNFeHQ4OgogICAgIGNhc2UgU0V4dDE2OgogICAgIGNhc2Ug
U0V4dDMyOgogICAgIGNhc2UgWkV4dDMyOgorICAgIGNhc2UgQ2x6OgogICAgIGNhc2UgVHJ1bmM6
Ci0gICAgY2FzZSBGUm91bmQ6CiAgICAgY2FzZSBJVG9EOgogICAgIGNhc2UgRFRvSTMyOgorICAg
IGNhc2UgRmxvYXRUb0RvdWJsZToKKyAgICBjYXNlIERvdWJsZVRvRmxvYXQ6CiAgICAgY2FzZSBD
aGVjazoKICAgICAgICAgcmV0dXJuIHByb2MuYWRkPFZhbHVlPihvcGNvZGUoKSwgdHlwZSgpLCBv
cmlnaW4sIGNoaWxkKHByb2MsIDApKTsKICAgICBjYXNlIEFkZDoKQEAgLTg1LDYgKzg4LDggQEAg
VmFsdWUqIFZhbHVlS2V5OjptYXRlcmlhbGl6ZShQcm9jZWR1cmUmIHByb2MsIE9yaWdpbiBvcmln
aW4pIGNvbnN0CiAgICAgICAgIHJldHVybiBwcm9jLmFkZDxDb25zdDY0VmFsdWU+KG9yaWdpbiwg
dmFsdWUoKSk7CiAgICAgY2FzZSBDb25zdERvdWJsZToKICAgICAgICAgcmV0dXJuIHByb2MuYWRk
PENvbnN0RG91YmxlVmFsdWU+KG9yaWdpbiwgZG91YmxlVmFsdWUoKSk7CisgICAgY2FzZSBDb25z
dEZsb2F0OgorICAgICAgICByZXR1cm4gcHJvYy5hZGQ8Q29uc3RGbG9hdFZhbHVlPihvcmlnaW4s
IGZsb2F0VmFsdWUoKSk7CiAgICAgY2FzZSBBcmd1bWVudFJlZzoKICAgICAgICAgcmV0dXJuIHBy
b2MuYWRkPEFyZ3VtZW50UmVnVmFsdWU+KG9yaWdpbiwgUmVnOjpmcm9tSW5kZXgoc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHZhbHVlKCkpKSk7CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlS2V5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNWYWx1ZUtleS5oCmluZGV4IDBhYTE2MDYyYmFhMGRhYzA2YjdkMmRhNTQzMGIzZGZkZmI2
ZThkNmEuLjY2ZGNlYTAzZjE2OGExYTQ3YzkwZTc2NmYzNzQ5YzMzN2Q4OTMyYmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlS2V5LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVLZXkuaApAQCAtNzgsMTIgKzc4LDIwIEBAIHB1YmxpYzoK
ICAgICAgICAgdS5kb3VibGVWYWx1ZSA9IHZhbHVlOwogICAgIH0KIAorICAgIFZhbHVlS2V5KE9w
Y29kZSBvcGNvZGUsIFR5cGUgdHlwZSwgZmxvYXQgdmFsdWUpCisgICAgICAgIDogbV9vcGNvZGUo
b3Bjb2RlKQorICAgICAgICAsIG1fdHlwZSh0eXBlKQorICAgIHsKKyAgICAgICAgdS5mbG9hdFZh
bHVlID0gdmFsdWU7CisgICAgfQorCiAgICAgT3Bjb2RlIG9wY29kZSgpIGNvbnN0IHsgcmV0dXJu
IG1fb3Bjb2RlOyB9CiAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAg
ICAgdW5zaWduZWQgY2hpbGRJbmRleCh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4gdS5p
bmRpY2VzW2luZGV4XTsgfQogICAgIFZhbHVlKiBjaGlsZChQcm9jZWR1cmUmLCB1bnNpZ25lZCBp
bmRleCkgY29uc3Q7CiAgICAgaW50NjRfdCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHUudmFsdWU7
IH0KICAgICBkb3VibGUgZG91YmxlVmFsdWUoKSBjb25zdCB7IHJldHVybiB1LmRvdWJsZVZhbHVl
OyB9CisgICAgZG91YmxlIGZsb2F0VmFsdWUoKSBjb25zdCB7IHJldHVybiB1LmZsb2F0VmFsdWU7
IH0KIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBWYWx1ZUtleSYgb3RoZXIpIGNvbnN0CiAg
ICAgewpAQCAtMTQyLDYgKzE1MCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHVuc2lnbmVkIGluZGlj
ZXNbM107CiAgICAgICAgIGludDY0X3QgdmFsdWU7CiAgICAgICAgIGRvdWJsZSBkb3VibGVWYWx1
ZTsKKyAgICAgICAgZmxvYXQgZmxvYXRWYWx1ZTsKIAogICAgICAgICBVKCkKICAgICAgICAgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmgKaW5kZXggYjNmZTVlYzhkNmEyYWJkZDYx
YzhlZDhmYTIwMTVkZjFlMjBiOWU5MC4uMTQ2NTY3NWE4M2QwNDI2Zjc2MTQzNDhhOGM2NDljZGMy
YWZlMGQwOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5oCkBAIC0yMTEsNiAr
MjExLDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIEludDMyOgogICAgICAgICBjYXNlIEludDY0
OgogICAgICAgICAgICAgcmV0dXJuIEdQOworICAgICAgICBjYXNlIEZsb2F0OgogICAgICAgICBj
YXNlIERvdWJsZToKICAgICAgICAgICAgIHJldHVybiBGUDsKICAgICAgICAgfQpAQCAtMjI1LDYg
KzIyNiw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICAgICAgcmV0dXJuIFdpZHRoODsKICAgICAgICAgY2FzZSBJbnQzMjoKKyAgICAgICAgY2Fz
ZSBGbG9hdDoKICAgICAgICAgICAgIHJldHVybiBXaWR0aDMyOwogICAgICAgICBjYXNlIEludDY0
OgogICAgICAgICBjYXNlIERvdWJsZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyRml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyRml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzLmNwcAppbmRleCA4MWNi
NGVjZjgzMjhiZTc2NThlNTY1ZTU0OTYwOThlMDE2ODk5OGYzLi4wZTcyYzU3ZTc3NzNjYzc3NGZk
YTk4YjcxNzI5YzdjODkyZDU2MWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxscy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJGaXhQYXJ0aWFsUmVnaXN0ZXJTdGFsbHMuY3BwCkBAIC00Niw2
ICs0Niw4IEBAIG5hbWVzcGFjZSB7CiBib29sIGhhc1BhcnRpYWxYbW1SZWdVcGRhdGUoY29uc3Qg
SW5zdCYgaW5zdCkKIHsKICAgICBzd2l0Y2ggKGluc3Qub3Bjb2RlKSB7CisgICAgY2FzZSBDb252
ZXJ0RG91YmxlVG9GbG9hdDoKKyAgICBjYXNlIENvbnZlcnRGbG9hdFRvRG91YmxlOgogICAgIGNh
c2UgQ29udmVydEludDMyVG9Eb3VibGU6CiAgICAgY2FzZSBDb252ZXJ0SW50NjRUb0RvdWJsZToK
ICAgICBjYXNlIFNxcnREb3VibGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJPcGNvZGUub3Bjb2RlcwppbmRleCA2NzI2YTMxZmRiYjcxMTYwYzc4NjMyNGJiZDUwM2I2YWNk
ZDM4YzM4Li43ODE1YTU5YmExNjQxOTU2ZmY0YTUyYjNmZDFmMjM3YzI4M2RmYWMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMKQEAgLTgyLDYg
KzgyLDEwIEBAIEFkZERvdWJsZSBVOkYsIFVEOkYKICAgICBUbXAsIFRtcAogICAgIEFkZHIsIFRt
cAogCitBZGRGbG9hdCBVOkYsIFVEOkYKKyAgICBUbXAsIFRtcAorICAgIEFkZHIsIFRtcAorCiBT
dWIzMiBVOkcsIFVEOkcKICAgICBUbXAsIFRtcAogICAgIEltbSwgQWRkcgpAQCAtOTcsNiArMTAx
LDEwIEBAIFN1YkRvdWJsZSBVOkYsIFVEOkYKICAgICBUbXAsIFRtcAogICAgIEFkZHIsIFRtcAog
CitTdWJGbG9hdCBVOkYsIFVEOkYKKyAgICBUbXAsIFRtcAorICAgIEFkZHIsIFRtcAorCiBOZWcz
MiBVRDpHCiAgICAgVG1wCiAgICAgQWRkcgpAQCAtMTE4LDEwICsxMjYsMTggQEAgTXVsRG91Ymxl
IFU6RiwgVUQ6RgogICAgIFRtcCwgVG1wCiAgICAgQWRkciwgVG1wCiAKK011bEZsb2F0IFU6Riwg
VUQ6RgorICAgIFRtcCwgVG1wCisgICAgQWRkciwgVG1wCisKIERpdkRvdWJsZSBVOkYsIFVEOkYK
ICAgICBUbXAsIFRtcAogICAgIEFkZHIsIFRtcAogCitEaXZGbG9hdCBVOkYsIFVEOkYKKyAgICBU
bXAsIFRtcAorICAgIEFkZHIsIFRtcAorCiBYODZDb252ZXJ0VG9Eb3VibGVXb3JkMzIgVTpHLCBE
OkcKICAgICBUbXAqLCBUbXAqCiAKQEAgLTIwNyw2ICsyMjMsMTAgQEAgU3FydERvdWJsZSBVOkYs
IFVEOkYKICAgICBUbXAsIFRtcAogICAgIEFkZHIsIFRtcAogCitTcXJ0RmxvYXQgVTpGLCBVRDpG
CisgICAgVG1wLCBUbXAKKyAgICBBZGRyLCBUbXAKKwogQ29udmVydEludDMyVG9Eb3VibGUgVTpH
LCBEOkYKICAgICBUbXAsIFRtcAogICAgIEFkZHIsIFRtcApAQCAtMjIyLDYgKzI0MiwxNCBAQCBD
b3VudExlYWRpbmdaZXJvczY0IFU6RywgRDpHCiAgICAgVG1wLCBUbXAKICAgICBBZGRyLCBUbXAK
IAorQ29udmVydERvdWJsZVRvRmxvYXQgVTpGLCBEOkYKKyAgICBUbXAsIFRtcAorICAgIEFkZHIs
IFRtcAorCitDb252ZXJ0RmxvYXRUb0RvdWJsZSBVOkYsIEQ6RgorICAgIFRtcCwgVG1wCisgICAg
QWRkciwgVG1wCisKICMgTm90ZSB0aGF0IE1vdmUgb3BlcmF0ZXMgb3ZlciB0aGUgZnVsbCByZWdp
c3RlciBzaXplLCB3aGljaCBpcyBlaXRoZXIgMzItYml0IG9yIDY0LWJpdCBkZXBlbmRpbmcgb24K
ICMgdGhlIHBsYXRmb3JtLiBJJ20gbm90IGVudGlyZWx5IHN1cmUgdGhhdCB0aGlzIGlzIGEgZ29v
ZCB0aGluZzsgaXQgbWlnaHQgYmUgYmV0dGVyIHRvIGp1c3QgaGF2ZSBhCiAjIE1vdmU2NCBpbnN0
cnVjdGlvbi4gT1RPSCwgb3VyIE1hY3JvQXNzZW1ibGVycyBhbHJlYWR5IGhhdmUgdGhpcyBub3Rp
b24gb2YgIm1vdmUoKSIgdGhhdCBiYXNpY2FsbHkKQEAgLTI0OCw2ICsyNzYsMTMgQEAgTW92ZTMy
IFU6RywgRDpHCiBTaWduRXh0ZW5kMzJUb1B0ciBVOkcsIEQ6RwogICAgIFRtcCwgVG1wCiAKK01v
dmVGbG9hdCBVOkYsIEQ6RgorICAgIFRtcCwgVG1wIGFzIG1vdmVEb3VibGUKKyAgICBBZGRyLCBU
bXAgYXMgbG9hZEZsb2F0CisgICAgSW5kZXgsIFRtcCBhcyBsb2FkRmxvYXQKKyAgICBUbXAsIEFk
ZHIgYXMgc3RvcmVGbG9hdAorICAgIFRtcCwgSW5kZXggYXMgc3RvcmVGbG9hdAorCiBNb3ZlRG91
YmxlIFU6RiwgRDpGCiAgICAgVG1wLCBUbXAKICAgICBBZGRyLCBUbXAgYXMgbG9hZERvdWJsZQpA
QCAtMjYyLDEwICsyOTcsMTggQEAgTW92ZTY0VG9Eb3VibGUgVTpHLCBEOkYKICAgICBUbXAsIFRt
cAogICAgIEFkZHIsIFRtcCBhcyBsb2FkRG91YmxlCiAKK01vdmVJbnQzMlRvUGFja2VkIFU6Rywg
RDpGCisgICAgVG1wLCBUbXAKKyAgICBBZGRyLCBUbXAgYXMgbG9hZEZsb2F0CisKIE1vdmVEb3Vi
bGVUbzY0IFU6RiwgRDpHCiAgICAgVG1wLCBUbXAKICAgICBBZGRyLCBUbXAgYXMgbG9hZDY0CiAK
K01vdmVQYWNrZWRUb0ludDMyIFU6RiwgRDpHCisgICAgVG1wLCBUbXAKKyAgICBBZGRyLCBUbXAg
YXMgbG9hZDMyCisKIExvYWQ4IFU6RywgRDpHCiAgICAgQWRkciwgVG1wCiAgICAgSW5kZXgsIFRt
cApAQCAtMzQxLDYgKzM4NCw5IEBAIEJyYW5jaFRlc3Q2NCBVOkcsIFU6RywgVTpHIC9icmFuY2gK
IEJyYW5jaERvdWJsZSBVOkcsIFU6RiwgVTpGIC9icmFuY2gKICAgICBEb3VibGVDb25kLCBUbXAs
IFRtcAogCitCcmFuY2hGbG9hdCBVOkcsIFU6RiwgVTpGIC9icmFuY2gKKyAgICBEb3VibGVDb25k
LCBUbXAsIFRtcAorCiBCcmFuY2hBZGQzMiBVOkcsIFU6RywgVUQ6RyAvYnJhbmNoCiAgICAgUmVz
Q29uZCwgVG1wLCBUbXAKICAgICBSZXNDb25kLCBJbW0sIFRtcApAQCAtMzk2LDYgKzQ0Miw5IEBA
IE1vdmVDb25kaXRpb25hbGx5VGVzdDY0IFU6RywgVTpHLCBVOkcsIFU6RywgVUQ6RwogTW92ZUNv
bmRpdGlvbmFsbHlEb3VibGUgVTpHLCBVOkYsIFU6RiwgVTpHLCBVRDpHCiAgICAgRG91YmxlQ29u
ZCwgVG1wLCBUbXAsIFRtcCwgVG1wCiAKK01vdmVDb25kaXRpb25hbGx5RmxvYXQgVTpHLCBVOkYs
IFU6RiwgVTpHLCBVRDpHCisgICAgRG91YmxlQ29uZCwgVG1wLCBUbXAsIFRtcCwgVG1wCisKIE1v
dmVEb3VibGVDb25kaXRpb25hbGx5MzIgVTpHLCBVOkcsIFU6RywgVTpGLCBVRDpGCiAgICAgUmVs
Q29uZCwgVG1wLCBUbXAsIFRtcCwgVG1wCiAKQEAgLTQxMyw2ICs0NjIsOSBAQCBNb3ZlRG91Ymxl
Q29uZGl0aW9uYWxseVRlc3Q2NCBVOkcsIFU6RywgVTpHLCBVOkYsIFVEOkYKIE1vdmVEb3VibGVD
b25kaXRpb25hbGx5RG91YmxlIFU6RywgVTpGLCBVOkYsIFU6RiwgVUQ6RgogICAgIERvdWJsZUNv
bmQsIFRtcCwgVG1wLCBUbXAsIFRtcAogCitNb3ZlRG91YmxlQ29uZGl0aW9uYWxseUZsb2F0IFU6
RywgVTpGLCBVOkYsIFU6RiwgVUQ6RgorICAgIERvdWJsZUNvbmQsIFRtcCwgVG1wLCBUbXAsIFRt
cAorCiBKdW1wIC9icmFuY2gKIAogUmV0IC90ZXJtaW5hbApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVz
dGIzLmNwcAppbmRleCA0OTBhNDM5NWI1ZjVhNDJmMTc0ZWQwMWI3MjAzNzJlMDE0ZGE4Y2FkLi5k
YjBmMDYyYzRjZDk0M2Q5YmI2YzUyZGIyNmE4ZGEzN2Y0NzA4MjYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvdGVzdGIzLmNwcApAQCAtMzA2LDYgKzMwNiwxNDEgQEAgdm9pZCB0ZXN0QWRkSW1tc0Rv
dWJsZShkb3VibGUgYSwgZG91YmxlIGIpCiAgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFu
ZFJ1bjxkb3VibGU+KHByb2MpLCBhICsgYikpOwogfQogCit2b2lkIHRlc3RBZGRBcmdGbG9hdChm
bG9hdCBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MzIgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsK
KyAgICBWYWx1ZSogZmxvYXRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0
d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDMyKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBmbG9hdFZhbHVlLCBmbG9h
dFZhbHVlKTsKKyAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgcmVzdWx0KTsKKyAgICByb290LT5hcHBlbmROZXc8
Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisKKworICAg
IENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9j
YXN0PGludDMyX3Q+KGEpKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEgKyBhKSkpOworfQorCit2
b2lkIHRlc3RBZGRBcmdzRmxvYXQoZmxvYXQgYSwgZmxvYXQgYikKK3sKKyAgICBQcm9jZWR1cmUg
cHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVl
KiBhcmd1bWVudDFpbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9y
aWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBhcmd1bWVudDJp
bnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlMSA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDFpbnQz
Mik7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MmludDMyKTsKKyAgICBWYWx1ZSogcmVz
dWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBmbG9hdFZh
bHVlMSwgZmxvYXRWYWx1ZTIpOworICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCByZXN1bHQpOworICAgIHJvb3Qt
PmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMy
KTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywg
Yml0d2lzZV9jYXN0PGludDMyX3Q+KGEpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYikpLCBiaXR3
aXNlX2Nhc3Q8aW50MzJfdD4oYSArIGIpKSk7Cit9CisKK3ZvaWQgdGVzdEFkZEFyZ0ltbUZsb2F0
KGZsb2F0IGEsIGZsb2F0IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9j
ayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQzMiA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCkpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MzIpOworICAgIFZhbHVlKiBj
b25zdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RmxvYXRWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIGIpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IEFkZCwgT3JpZ2luKCksIGZsb2F0VmFsdWUsIGNvbnN0VmFsdWUpOworICAgIFZhbHVlKiByZXN1
bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigp
LCByZXN1bHQpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVy
biwgT3JpZ2luKCksIHJlc3VsdDMyKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVB
bmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpKSwgYml0d2lzZV9j
YXN0PGludDMyX3Q+KGEgKyBiKSkpOworfQorCit2b2lkIHRlc3RBZGRJbW1BcmdGbG9hdChmbG9h
dCBhLCBmbG9hdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MzIgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDMyKTsKKyAgICBWYWx1ZSogY29uc3RW
YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdEZsb2F0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBh
KTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQs
IE9yaWdpbigpLCBjb25zdFZhbHVlLCBmbG9hdFZhbHVlKTsKKyAgICBWYWx1ZSogcmVzdWx0MzIg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgcmVz
dWx0KTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLCByZXN1bHQzMik7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVu
PGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihiKSksIGJpdHdpc2VfY2FzdDxp
bnQzMl90PihhICsgYikpKTsKK30KKwordm9pZCB0ZXN0QWRkSW1tc0Zsb2F0KGZsb2F0IGEsIGZs
b2F0IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogY29uc3RWYWx1ZTEgPSByb290LT5hcHBlbmROZXc8
Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7CisgICAgVmFsdWUqIGNvbnN0VmFs
dWUyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RmxvYXRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIp
OworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwg
T3JpZ2luKCksIGNvbnN0VmFsdWUxLCBjb25zdFZhbHVlMik7CisgICAgVmFsdWUqIHJlc3VsdDMy
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJl
c3VsdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwgcmVzdWx0MzIpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1
bjxpbnQzMl90Pihwcm9jKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEgKyBiKSkpOworfQorCit2
b2lkIHRlc3RBZGRBcmdGbG9hdFdpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lvbihmbG9hdCBhKQor
eworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50SW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBW
YWx1ZSogZmxvYXRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNh
c3QsIE9yaWdpbigpLCBhcmd1bWVudEludDMyKTsKKyAgICBWYWx1ZSogYXNEb3VibGUgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFZh
bHVlKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBB
ZGQsIE9yaWdpbigpLCBhc0RvdWJsZSwgYXNEb3VibGUpOworICAgIFZhbHVlKiBmbG9hdFJlc3Vs
dCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwgT3JpZ2luKCks
IHJlc3VsdCk7CisgICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGZsb2F0UmVzdWx0KTsKKyAgICByb290LT5hcHBl
bmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisK
KyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdp
c2VfY2FzdDxpbnQzMl90PihhKSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhICsgYSkpKTsKK30K
Kwordm9pZCB0ZXN0QWRkQXJnc0Zsb2F0V2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uKGZsb2F0
IGEsIGZsb2F0IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQxaW50MzIgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApKTsKKyAgICBWYWx1ZSogYXJndW1lbnQyaW50MzIgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAg
ICBWYWx1ZSogZmxvYXRWYWx1ZTEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdp
c2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQxaW50MzIpOworICAgIFZhbHVlKiBmbG9hdFZhbHVl
MiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBh
cmd1bWVudDJpbnQzMik7CisgICAgVmFsdWUqIGFzRG91YmxlMSA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGZsb2F0VmFsdWUxKTsKKyAgICBW
YWx1ZSogYXNEb3VibGUyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9hdFRvRG91
YmxlLCBPcmlnaW4oKSwgZmxvYXRWYWx1ZTIpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIGFzRG91YmxlMSwgYXNEb3VibGUy
KTsKKyAgICBWYWx1ZSogZmxvYXRSZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IERvdWJsZVRvRmxvYXQsIE9yaWdpbigpLCByZXN1bHQpOworICAgIFZhbHVlKiByZXN1bHQzMiA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBmbG9h
dFJlc3VsdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwgcmVzdWx0MzIpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFu
ZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSksIGJpdHdpc2VfY2Fz
dDxpbnQzMl90PihiKSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhICsgYikpKTsKK30KKwordm9p
ZCB0ZXN0QWRkQXJnc0Zsb2F0V2l0aEVmZmVjdGZ1bERvdWJsZUNvbnZlcnNpb24oZmxvYXQgYSwg
ZmxvYXQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudDFpbnQzMiA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCkpOworICAgIFZhbHVlKiBhcmd1bWVudDJpbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgIFZh
bHVlKiBmbG9hdFZhbHVlMSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNh
c3QsIE9yaWdpbigpLCBhcmd1bWVudDFpbnQzMik7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUyID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3Vt
ZW50MmludDMyKTsKKyAgICBWYWx1ZSogYXNEb3VibGUxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBGbG9hdFRvRG91YmxlLCBPcmlnaW4oKSwgZmxvYXRWYWx1ZTEpOworICAgIFZhbHVl
KiBhc0RvdWJsZTIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUs
IE9yaWdpbigpLCBmbG9hdFZhbHVlMik7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgYXNEb3VibGUxLCBhc0RvdWJsZTIpOwor
ICAgIFZhbHVlKiBmbG9hdFJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91
YmxlVG9GbG9hdCwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgVmFsdWUqIGRvdWJsZUFkZHJlc3Mg
PSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMik7CisgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9j
LCBTdG9yZSwgT3JpZ2luKCksIHJlc3VsdCwgZG91YmxlQWRkcmVzcyk7CisgICAgVmFsdWUqIHJl
c3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2lu
KCksIGZsb2F0UmVzdWx0KTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisKKyAgICBkb3VibGUgZWZmZWN0ID0gMDsK
KyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdp
c2VfY2FzdDxpbnQzMl90PihhKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGIpLCAmZWZmZWN0KSwg
Yml0d2lzZV9jYXN0PGludDMyX3Q+KGEgKyBiKSkpOworICAgIENIRUNLKGlzSWRlbnRpY2FsKGVm
ZmVjdCwgc3RhdGljX2Nhc3Q8ZG91YmxlPihhKSArIHN0YXRpY19jYXN0PGRvdWJsZT4oYikpKTsK
K30KKwogdm9pZCB0ZXN0TXVsQXJnKGludCBhKQogewogICAgIFByb2NlZHVyZSBwcm9jOwpAQCAt
NTA5LDYgKzY0NCwxNDEgQEAgdm9pZCB0ZXN0TXVsSW1tc0RvdWJsZShkb3VibGUgYSwgZG91Ymxl
IGIpCiAgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MpLCBh
ICogYikpOwogfQogCit2b2lkIHRlc3RNdWxBcmdGbG9hdChmbG9hdCBhKQoreworICAgIFByb2Nl
ZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAg
VmFsdWUqIGFyZ3VtZW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBP
cmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1
ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBh
cmd1bWVudDMyKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBNdWwsIE9yaWdpbigpLCBmbG9hdFZhbHVlLCBmbG9hdFZhbHVlKTsKKyAgICBWYWx1ZSog
cmVzdWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmln
aW4oKSwgcmVzdWx0KTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNv
bXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpKSwgYml0
d2lzZV9jYXN0PGludDMyX3Q+KGEgKiBhKSkpOworfQorCit2b2lkIHRlc3RNdWxBcmdzRmxvYXQo
ZmxvYXQgYSwgZmxvYXQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudDFpbnQzMiA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBhcmd1bWVudDJpbnQzMiA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkp
OworICAgIFZhbHVlKiBmbG9hdFZhbHVlMSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
Qml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDFpbnQzMik7CisgICAgVmFsdWUqIGZsb2F0
VmFsdWUyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2lu
KCksIGFyZ3VtZW50MmludDMyKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCBmbG9hdFZhbHVlMSwgZmxvYXRWYWx1ZTIpOwor
ICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lz
ZUNhc3QsIE9yaWdpbigpLCByZXN1bHQpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFs
dWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKKworICAgIENIRUNLKGlzSWRl
bnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+
KGEpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYikpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSAq
IGIpKSk7Cit9CisKK3ZvaWQgdGVzdE11bEFyZ0ltbUZsb2F0KGZsb2F0IGEsIGZsb2F0IGIpCit7
CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVl
KiBmbG9hdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwg
T3JpZ2luKCksIGFyZ3VtZW50MzIpOworICAgIFZhbHVlKiBjb25zdFZhbHVlID0gcm9vdC0+YXBw
ZW5kTmV3PENvbnN0RmxvYXRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpOworICAgIFZhbHVlKiBy
ZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE11bCwgT3JpZ2luKCksIGZsb2F0
VmFsdWUsIGNvbnN0VmFsdWUpOworICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCByZXN1bHQpOworICAgIHJvb3Qt
PmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMy
KTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywg
Yml0d2lzZV9jYXN0PGludDMyX3Q+KGEpKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEgKiBiKSkp
OworfQorCit2b2lkIHRlc3RNdWxJbW1BcmdGbG9hdChmbG9hdCBhLCBmbG9hdCBiKQoreworICAg
IFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
CisgICAgVmFsdWUqIGFyZ3VtZW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRy
dW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSogZmxv
YXRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdp
bigpLCBhcmd1bWVudDMyKTsKKyAgICBWYWx1ZSogY29uc3RWYWx1ZSA9IHJvb3QtPmFwcGVuZE5l
dzxDb25zdEZsb2F0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKTsKKyAgICBWYWx1ZSogcmVzdWx0
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCBjb25zdFZhbHVl
LCBmbG9hdFZhbHVlKTsKKyAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgcmVzdWx0KTsKKyAgICByb290LT5hcHBl
bmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisK
KyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdp
c2VfY2FzdDxpbnQzMl90PihiKSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhICogYikpKTsKK30K
Kwordm9pZCB0ZXN0TXVsSW1tc0Zsb2F0KGZsb2F0IGEsIGZsb2F0IGIpCit7CisgICAgUHJvY2Vk
dXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBW
YWx1ZSogY29uc3RWYWx1ZTEgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgYSk7CisgICAgVmFsdWUqIGNvbnN0VmFsdWUyID0gcm9vdC0+YXBwZW5kTmV3
PENvbnN0RmxvYXRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpOworICAgIFZhbHVlKiByZXN1bHQg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE11bCwgT3JpZ2luKCksIGNvbnN0VmFsdWUx
LCBjb25zdFZhbHVlMik7CisgICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgcm9vdC0+YXBw
ZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0MzIpOwor
CisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jKSwgYml0
d2lzZV9jYXN0PGludDMyX3Q+KGEgKiBiKSkpOworfQorCit2b2lkIHRlc3RNdWxBcmdGbG9hdFdp
dGhVc2VsZXNzRG91YmxlQ29udmVyc2lvbihmbG9hdCBhKQoreworICAgIFByb2NlZHVyZSBwcm9j
OworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFy
Z3VtZW50SW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4o
KSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1ZSA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVu
dEludDMyKTsKKyAgICBWYWx1ZSogYXNEb3VibGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlKTsKKyAgICBWYWx1ZSogcmVz
dWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBNdWwsIE9yaWdpbigpLCBhc0RvdWJs
ZSwgYXNEb3VibGUpOworICAgIFZhbHVlKiBmbG9hdFJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgVmFsdWUq
IHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3Jp
Z2luKCksIGZsb2F0UmVzdWx0KTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisKKyAgICBDSEVDSyhpc0lkZW50aWNh
bChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSks
IGJpdHdpc2VfY2FzdDxpbnQzMl90PihhICogYSkpKTsKK30KKwordm9pZCB0ZXN0TXVsQXJnc0Zs
b2F0V2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uKGZsb2F0IGEsIGZsb2F0IGIpCit7CisgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KyAgICBWYWx1ZSogYXJndW1lbnQxaW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSog
YXJndW1lbnQyaW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmln
aW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1ZTEg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJn
dW1lbnQxaW50MzIpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlMiA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDJpbnQzMik7CisgICAg
VmFsdWUqIGFzRG91YmxlMSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0Rv
dWJsZSwgT3JpZ2luKCksIGZsb2F0VmFsdWUxKTsKKyAgICBWYWx1ZSogYXNEb3VibGUyID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9hdFRvRG91YmxlLCBPcmlnaW4oKSwgZmxvYXRW
YWx1ZTIpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IE11bCwgT3JpZ2luKCksIGFzRG91YmxlMSwgYXNEb3VibGUyKTsKKyAgICBWYWx1ZSogZmxvYXRS
ZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERvdWJsZVRvRmxvYXQsIE9yaWdp
bigpLCByZXN1bHQpOworICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBmbG9hdFJlc3VsdCk7CisgICAgcm9vdC0+
YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0MzIp
OworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBi
aXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihiKSksIGJpdHdp
c2VfY2FzdDxpbnQzMl90PihhICogYikpKTsKK30KKwordm9pZCB0ZXN0TXVsQXJnc0Zsb2F0V2l0
aEVmZmVjdGZ1bERvdWJsZUNvbnZlcnNpb24oZmxvYXQgYSwgZmxvYXQgYikKK3sKKyAgICBQcm9j
ZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAg
IFZhbHVlKiBhcmd1bWVudDFpbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1
bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBhcmd1
bWVudDJpbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigp
LAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlMSA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVu
dDFpbnQzMik7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MmludDMyKTsKKyAgICBWYWx1
ZSogYXNEb3VibGUxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9hdFRvRG91Ymxl
LCBPcmlnaW4oKSwgZmxvYXRWYWx1ZTEpOworICAgIFZhbHVlKiBhc0RvdWJsZTIgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVl
Mik7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgTXVs
LCBPcmlnaW4oKSwgYXNEb3VibGUxLCBhc0RvdWJsZTIpOworICAgIFZhbHVlKiBmbG9hdFJlc3Vs
dCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwgT3JpZ2luKCks
IHJlc3VsdCk7CisgICAgVmFsdWUqIGRvdWJsZU11bHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMik7Cisg
ICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBTdG9yZSwgT3JpZ2luKCksIHJl
c3VsdCwgZG91YmxlTXVscmVzcyk7CisgICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGZsb2F0UmVzdWx0KTsKKyAg
ICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBy
ZXN1bHQzMik7CisKKyAgICBkb3VibGUgZWZmZWN0ID0gMDsKKyAgICBDSEVDSyhpc0lkZW50aWNh
bChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSwg
Yml0d2lzZV9jYXN0PGludDMyX3Q+KGIpLCAmZWZmZWN0KSwgYml0d2lzZV9jYXN0PGludDMyX3Q+
KGEgKiBiKSkpOworICAgIENIRUNLKGlzSWRlbnRpY2FsKGVmZmVjdCwgc3RhdGljX2Nhc3Q8ZG91
YmxlPihhKSAqIHN0YXRpY19jYXN0PGRvdWJsZT4oYikpKTsKK30KKwogdm9pZCB0ZXN0RGl2QXJn
RG91YmxlKGRvdWJsZSBhKQogewogICAgIFByb2NlZHVyZSBwcm9jOwpAQCAtNTczLDYgKzg0Mywx
NDEgQEAgdm9pZCB0ZXN0RGl2SW1tc0RvdWJsZShkb3VibGUgYSwgZG91YmxlIGIpCiAgICAgQ0hF
Q0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MpLCBhIC8gYikpOwogfQog
Cit2b2lkIHRlc3REaXZBcmdGbG9hdChmbG9hdCBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOwor
ICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3Vt
ZW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1ZSA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDMyKTsK
KyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEaXYsIE9y
aWdpbigpLCBmbG9hdFZhbHVlLCBmbG9hdFZhbHVlKTsKKyAgICBWYWx1ZSogcmVzdWx0MzIgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgcmVzdWx0
KTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLCByZXN1bHQzMik7CisKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48
aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpKSwgYml0d2lzZV9jYXN0PGlu
dDMyX3Q+KGEgLyBhKSkpOworfQorCit2b2lkIHRlc3REaXZBcmdzRmxvYXQoZmxvYXQgYSwgZmxv
YXQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudDFpbnQzMiA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkp
OworICAgIFZhbHVlKiBhcmd1bWVudDJpbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgIFZhbHVl
KiBmbG9hdFZhbHVlMSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3Qs
IE9yaWdpbigpLCBhcmd1bWVudDFpbnQzMik7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUyID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50
MmludDMyKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBEaXYsIE9yaWdpbigpLCBmbG9hdFZhbHVlMSwgZmxvYXRWYWx1ZTIpOworICAgIFZhbHVlKiBy
ZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdp
bigpLCByZXN1bHQpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJl
dHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBp
bGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpLCBiaXR3aXNl
X2Nhc3Q8aW50MzJfdD4oYikpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSAvIGIpKSk7Cit9CisK
K3ZvaWQgdGVzdERpdkFyZ0ltbUZsb2F0KGZsb2F0IGEsIGZsb2F0IGIpCit7CisgICAgUHJvY2Vk
dXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBW
YWx1ZSogYXJndW1lbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9y
aWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBmbG9hdFZhbHVl
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFy
Z3VtZW50MzIpOworICAgIFZhbHVlKiBjb25zdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0
RmxvYXRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERpdiwgT3JpZ2luKCksIGZsb2F0VmFsdWUsIGNvbnN0
VmFsdWUpOworICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCByZXN1bHQpOworICAgIHJvb3QtPmFwcGVuZE5ldzxD
b250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKKworICAgIENI
RUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0
PGludDMyX3Q+KGEpKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEgLyBiKSkpOworfQorCit2b2lk
IHRlc3REaXZJbW1BcmdGbG9hdChmbG9hdCBhLCBmbG9hdCBiKQoreworICAgIFByb2NlZHVyZSBw
cm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUq
IGFyZ3VtZW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4o
KSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1ZSA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVu
dDMyKTsKKyAgICBWYWx1ZSogY29uc3RWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdEZsb2F0
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBEaXYsIE9yaWdpbigpLCBjb25zdFZhbHVlLCBmbG9hdFZhbHVl
KTsKKyAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJp
dHdpc2VDYXN0LCBPcmlnaW4oKSwgcmVzdWx0KTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJv
bFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisKKyAgICBDSEVDSyhp
c0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQz
Ml90PihiKSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhIC8gYikpKTsKK30KKwordm9pZCB0ZXN0
RGl2SW1tc0Zsb2F0KGZsb2F0IGEsIGZsb2F0IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7Cisg
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogY29uc3RW
YWx1ZTEgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
YSk7CisgICAgVmFsdWUqIGNvbnN0VmFsdWUyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RmxvYXRW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIERpdiwgT3JpZ2luKCksIGNvbnN0VmFsdWUxLCBjb25zdFZhbHVl
Mik7CisgICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBC
aXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRy
b2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0MzIpOworCisgICAgQ0hFQ0so
aXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jKSwgYml0d2lzZV9jYXN0PGlu
dDMyX3Q+KGEgLyBiKSkpOworfQorCit2b2lkIHRlc3REaXZBcmdGbG9hdFdpdGhVc2VsZXNzRG91
YmxlQ29udmVyc2lvbihmbG9hdCBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50SW50MzIg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudEludDMyKTsKKyAg
ICBWYWx1ZSogYXNEb3VibGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9E
b3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEaXYsIE9yaWdpbigpLCBhc0RvdWJsZSwgYXNEb3VibGUp
OworICAgIFZhbHVlKiBmbG9hdFJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
RG91YmxlVG9GbG9hdCwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgVmFsdWUqIHJlc3VsdDMyID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGZsb2F0
UmVzdWx0KTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLCByZXN1bHQzMik7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5k
UnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSksIGJpdHdpc2VfY2Fz
dDxpbnQzMl90PihhIC8gYSkpKTsKK30KKwordm9pZCB0ZXN0RGl2QXJnc0Zsb2F0V2l0aFVzZWxl
c3NEb3VibGVDb252ZXJzaW9uKGZsb2F0IGEsIGZsb2F0IGIpCit7CisgICAgUHJvY2VkdXJlIHBy
b2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSog
YXJndW1lbnQxaW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmln
aW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSogYXJndW1lbnQyaW50
MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1ZTEgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQxaW50MzIp
OworICAgIFZhbHVlKiBmbG9hdFZhbHVlMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
Qml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDJpbnQzMik7CisgICAgVmFsdWUqIGFzRG91
YmxlMSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2lu
KCksIGZsb2F0VmFsdWUxKTsKKyAgICBWYWx1ZSogYXNEb3VibGUyID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBGbG9hdFRvRG91YmxlLCBPcmlnaW4oKSwgZmxvYXRWYWx1ZTIpOworICAg
IFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERpdiwgT3JpZ2lu
KCksIGFzRG91YmxlMSwgYXNEb3VibGUyKTsKKyAgICBWYWx1ZSogZmxvYXRSZXN1bHQgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERvdWJsZVRvRmxvYXQsIE9yaWdpbigpLCByZXN1bHQp
OworICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0
d2lzZUNhc3QsIE9yaWdpbigpLCBmbG9hdFJlc3VsdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENv
bnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0MzIpOworCisgICAgQ0hF
Q0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8
aW50MzJfdD4oYSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihiKSksIGJpdHdpc2VfY2FzdDxpbnQz
Ml90PihhIC8gYikpKTsKK30KKwordm9pZCB0ZXN0RGl2QXJnc0Zsb2F0V2l0aEVmZmVjdGZ1bERv
dWJsZUNvbnZlcnNpb24oZmxvYXQgYSwgZmxvYXQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsK
KyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1
bWVudDFpbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigp
LAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBhcmd1bWVudDJpbnQzMiA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMSkpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlMSA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDFpbnQzMik7Cisg
ICAgVmFsdWUqIGZsb2F0VmFsdWUyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3
aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MmludDMyKTsKKyAgICBWYWx1ZSogYXNEb3VibGUx
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9hdFRvRG91YmxlLCBPcmlnaW4oKSwg
ZmxvYXRWYWx1ZTEpOworICAgIFZhbHVlKiBhc0RvdWJsZTIgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlMik7CisgICAgVmFs
dWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRGl2LCBPcmlnaW4oKSwg
YXNEb3VibGUxLCBhc0RvdWJsZTIpOworICAgIFZhbHVlKiBmbG9hdFJlc3VsdCA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwgT3JpZ2luKCksIHJlc3VsdCk7Cisg
ICAgVmFsdWUqIGRvdWJsZURpdnJlc3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CisgICAgcm9vdC0+YXBw
ZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBTdG9yZSwgT3JpZ2luKCksIHJlc3VsdCwgZG91Ymxl
RGl2cmVzcyk7CisgICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGZsb2F0UmVzdWx0KTsKKyAgICByb290LT5hcHBl
bmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisK
KyAgICBkb3VibGUgZWZmZWN0ID0gMDsKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5k
UnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSwgYml0d2lzZV9jYXN0
PGludDMyX3Q+KGIpLCAmZWZmZWN0KSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEgLyBiKSkpOwor
ICAgIENIRUNLKGlzSWRlbnRpY2FsKGVmZmVjdCwgc3RhdGljX2Nhc3Q8ZG91YmxlPihhKSAvIHN0
YXRpY19jYXN0PGRvdWJsZT4oYikpKTsKK30KKwogdm9pZCB0ZXN0U3ViQXJnKGludCBhKQogewog
ICAgIFByb2NlZHVyZSBwcm9jOwpAQCAtNzcyLDYgKzExNzcsMTQxIEBAIHZvaWQgdGVzdFN1Yklt
bXNEb3VibGUoZG91YmxlIGEsIGRvdWJsZSBiKQogICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBp
bGVBbmRSdW48ZG91YmxlPihwcm9jKSwgYSAtIGIpKTsKIH0KIAordm9pZCB0ZXN0U3ViQXJnRmxv
YXQoZmxvYXQgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudDMyID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KSk7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQzMik7CisgICAgVmFsdWUqIHJlc3VsdCA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwgZmxvYXRWYWx1ZSwg
ZmxvYXRWYWx1ZSk7CisgICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgcm9vdC0+YXBwZW5k
TmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0MzIpOworCisK
KyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdp
c2VfY2FzdDxpbnQzMl90PihhKSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhIC0gYSkpKTsKK30K
Kwordm9pZCB0ZXN0U3ViQXJnc0Zsb2F0KGZsb2F0IGEsIGZsb2F0IGIpCit7CisgICAgUHJvY2Vk
dXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBW
YWx1ZSogYXJndW1lbnQxaW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5j
LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSogYXJndW1l
bnQyaW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwK
KyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1ZTEgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQx
aW50MzIpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDJpbnQzMik7CisgICAgVmFsdWUq
IHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwgZmxv
YXRWYWx1ZTEsIGZsb2F0VmFsdWUyKTsKKyAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgcmVzdWx0KTsKKyAgICBy
b290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1
bHQzMik7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHBy
b2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGIpKSwg
Yml0d2lzZV9jYXN0PGludDMyX3Q+KGEgLSBiKSkpOworfQorCit2b2lkIHRlc3RTdWJBcmdJbW1G
bG9hdChmbG9hdCBhLCBmbG9hdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MzIgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDMyKTsKKyAgICBWYWx1
ZSogY29uc3RWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdEZsb2F0VmFsdWU+KHByb2MsIE9y
aWdpbigpLCBiKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBTdWIsIE9yaWdpbigpLCBmbG9hdFZhbHVlLCBjb25zdFZhbHVlKTsKKyAgICBWYWx1ZSog
cmVzdWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmln
aW4oKSwgcmVzdWx0KTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21w
aWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSksIGJpdHdp
c2VfY2FzdDxpbnQzMl90PihhIC0gYikpKTsKK30KKwordm9pZCB0ZXN0U3ViSW1tQXJnRmxvYXQo
ZmxvYXQgYSwgZmxvYXQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudDMyID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKSk7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQzMik7CisgICAgVmFsdWUqIGNv
bnN0VmFsdWUgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgYSk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
U3ViLCBPcmlnaW4oKSwgY29uc3RWYWx1ZSwgZmxvYXRWYWx1ZSk7CisgICAgVmFsdWUqIHJlc3Vs
dDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCks
IHJlc3VsdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwgcmVzdWx0MzIpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFu
ZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYikpLCBiaXR3aXNlX2Nh
c3Q8aW50MzJfdD4oYSAtIGIpKSk7Cit9CisKK3ZvaWQgdGVzdFN1YkltbXNGbG9hdChmbG9hdCBh
LCBmbG9hdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3Qg
PSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGNvbnN0VmFsdWUxID0gcm9vdC0+YXBwZW5k
TmV3PENvbnN0RmxvYXRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpOworICAgIFZhbHVlKiBjb25z
dFZhbHVlMiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdEZsb2F0VmFsdWU+KHByb2MsIE9yaWdpbigp
LCBiKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBT
dWIsIE9yaWdpbigpLCBjb25zdFZhbHVlMSwgY29uc3RWYWx1ZTIpOworICAgIFZhbHVlKiByZXN1
bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigp
LCByZXN1bHQpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVy
biwgT3JpZ2luKCksIHJlc3VsdDMyKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVB
bmRSdW48aW50MzJfdD4ocHJvYyksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhIC0gYikpKTsKK30K
Kwordm9pZCB0ZXN0U3ViQXJnRmxvYXRXaXRoVXNlbGVzc0RvdWJsZUNvbnZlcnNpb24oZmxvYXQg
YSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5h
ZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudEludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Cisg
ICAgVmFsdWUqIGZsb2F0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdp
c2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnRJbnQzMik7CisgICAgVmFsdWUqIGFzRG91YmxlID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9hdFRvRG91YmxlLCBPcmlnaW4oKSwgZmxv
YXRWYWx1ZSk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgU3ViLCBPcmlnaW4oKSwgYXNEb3VibGUsIGFzRG91YmxlKTsKKyAgICBWYWx1ZSogZmxvYXRS
ZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERvdWJsZVRvRmxvYXQsIE9yaWdp
bigpLCByZXN1bHQpOworICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBmbG9hdFJlc3VsdCk7CisgICAgcm9vdC0+
YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0MzIp
OworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBi
aXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSAtIGEpKSk7
Cit9CisKK3ZvaWQgdGVzdFN1YkFyZ3NGbG9hdFdpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lvbihm
bG9hdCBhLCBmbG9hdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MWludDMyID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGFyZ3VtZW50MmludDMyID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7
CisgICAgVmFsdWUqIGZsb2F0VmFsdWUxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBC
aXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MWludDMyKTsKKyAgICBWYWx1ZSogZmxvYXRW
YWx1ZTIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4o
KSwgYXJndW1lbnQyaW50MzIpOworICAgIFZhbHVlKiBhc0RvdWJsZTEgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlMSk7Cisg
ICAgVmFsdWUqIGFzRG91YmxlMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRU
b0RvdWJsZSwgT3JpZ2luKCksIGZsb2F0VmFsdWUyKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLCBhc0RvdWJsZTEsIGFzRG91
YmxlMik7CisgICAgVmFsdWUqIGZsb2F0UmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBEb3VibGVUb0Zsb2F0LCBPcmlnaW4oKSwgcmVzdWx0KTsKKyAgICBWYWx1ZSogcmVzdWx0
MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwg
ZmxvYXRSZXN1bHQpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJl
dHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBp
bGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpLCBiaXR3aXNl
X2Nhc3Q8aW50MzJfdD4oYikpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSAtIGIpKSk7Cit9CisK
K3ZvaWQgdGVzdFN1YkFyZ3NGbG9hdFdpdGhFZmZlY3RmdWxEb3VibGVDb252ZXJzaW9uKGZsb2F0
IGEsIGZsb2F0IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQxaW50MzIgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApKTsKKyAgICBWYWx1ZSogYXJndW1lbnQyaW50MzIgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKKyAg
ICBWYWx1ZSogZmxvYXRWYWx1ZTEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdp
c2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQxaW50MzIpOworICAgIFZhbHVlKiBmbG9hdFZhbHVl
MiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBh
cmd1bWVudDJpbnQzMik7CisgICAgVmFsdWUqIGFzRG91YmxlMSA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGZsb2F0VmFsdWUxKTsKKyAgICBW
YWx1ZSogYXNEb3VibGUyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9hdFRvRG91
YmxlLCBPcmlnaW4oKSwgZmxvYXRWYWx1ZTIpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksIGFzRG91YmxlMSwgYXNEb3VibGUy
KTsKKyAgICBWYWx1ZSogZmxvYXRSZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IERvdWJsZVRvRmxvYXQsIE9yaWdpbigpLCByZXN1bHQpOworICAgIFZhbHVlKiBkb3VibGVTdWJy
ZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjIpOworICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4o
cHJvYywgU3RvcmUsIE9yaWdpbigpLCByZXN1bHQsIGRvdWJsZVN1YnJlc3MpOworICAgIFZhbHVl
KiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9y
aWdpbigpLCBmbG9hdFJlc3VsdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4o
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0MzIpOworCisgICAgZG91YmxlIGVmZmVjdCA9
IDA7CisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBi
aXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihiKSwgJmVmZmVj
dCksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhIC0gYikpKTsKKyAgICBDSEVDSyhpc0lkZW50aWNh
bChlZmZlY3QsIHN0YXRpY19jYXN0PGRvdWJsZT4oYSkgLSBzdGF0aWNfY2FzdDxkb3VibGU+KGIp
KSk7Cit9CisKIHZvaWQgdGVzdEJpdEFuZEFyZ3MoaW50NjRfdCBhLCBpbnQ2NF90IGIpCiB7CiAg
ICAgUHJvY2VkdXJlIHByb2M7CkBAIC0xOTY2LDE2MCArMjUwNiw0NDAgQEAgdm9pZCB0ZXN0Q2x6
QXJnMzIoaW50MzJfdCBhKQogICAgIENIRUNLKGNvbXBpbGVBbmRSdW48dW5zaWduZWQ+KHByb2Ms
IGEpID09IGNvdW50TGVhZGluZ1plcm8oYSkpOwogfQogCi12b2lkIHRlc3RDbHpNZW0zMihpbnQz
Ml90IGEpCit2b2lkIHRlc3RDbHpNZW0zMihpbnQzMl90IGEpCit7CisgICAgUHJvY2VkdXJlIHBy
b2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSog
YWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBNZW1vcnlWYWx1ZSogdmFsdWUgPSByb290
LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwgYWRk
cmVzcyk7CisgICAgVmFsdWUqIGNselZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBDbHosIE9yaWdpbigpLCB2YWx1ZSk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1
ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgY2x6VmFsdWUpOworICAgIENIRUNLKGNvbXBpbGVB
bmRSdW48dW5zaWduZWQ+KHByb2MsICZhKSA9PSBjb3VudExlYWRpbmdaZXJvKGEpKTsKK30KKwor
dm9pZCB0ZXN0U3FydEFyZyhkb3VibGUgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIHJvb3QtPmFwcGVuZE5ldzxD
b250cm9sVmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICBy
b290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgU3FydCwgT3JpZ2luKCks
CisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApKSk7CisKKyAgICBDSEVDSyhpc0lkZW50
aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYywgYSksIHNxcnQoYSkpKTsKK30KKwordm9p
ZCB0ZXN0U3FydEltbShkb3VibGUgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNp
Y0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudCA9IHJv
b3QtPmFwcGVuZE5ldzxDb25zdERvdWJsZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7CisgICAg
cm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAgIHByb2MsIFJldHVybiwgT3Jp
Z2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3FydCwgT3JpZ2lu
KCksIGFyZ3VtZW50KSk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRv
dWJsZT4ocHJvYyksIHNxcnQoYSkpKTsKK30KKwordm9pZCB0ZXN0U3FydE1lbShkb3VibGUgYSkK
K3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOworICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIE1lbW9y
eVZhbHVlKiBsb2FkRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBM
b2FkLCBEb3VibGUsIE9yaWdpbigpLCBhZGRyZXNzKTsKKyAgICByb290LT5hcHBlbmROZXc8Q29u
dHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTcXJ0LCBPcmlnaW4oKSwgbG9hZERvdWJsZSkpOwor
CisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsICZhKSwg
c3FydChhKSkpOworfQorCit2b2lkIHRlc3RTcXJ0QXJnKGZsb2F0IGEpCit7CisgICAgUHJvY2Vk
dXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBW
YWx1ZSogYXJndW1lbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9y
aWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBhcmd1bWVudCA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1
bWVudDMyKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBTcXJ0LCBPcmlnaW4oKSwgYXJndW1lbnQpOworICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCByZXN1bHQpOwor
ICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCks
IHJlc3VsdDMyKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJf
dD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+
KHN0YXRpY19jYXN0PGZsb2F0PihzcXJ0KGEpKSkpKTsKK30KKwordm9pZCB0ZXN0U3FydEltbShm
bG9hdCBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PENv
bnN0RmxvYXRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpOworICAgIFZhbHVlKiByZXN1bHQgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNxcnQsIE9yaWdpbigpLCBhcmd1bWVudCk7Cisg
ICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNl
Q2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1
ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0MzIpOworCisgICAgQ0hFQ0soaXNJZGVu
dGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4o
YSkpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNxcnQoYSkpKSkp
OworfQorCit2b2lkIHRlc3RTcXJ0TWVtKGZsb2F0IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7
CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYWRk
cmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBNZW1vcnlWYWx1ZSogbG9hZEZsb2F0ID0gcm9v
dC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBGbG9hdCwgT3JpZ2luKCksIGFk
ZHJlc3MpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IFNxcnQsIE9yaWdpbigpLCBsb2FkRmxvYXQpOworICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCByZXN1bHQpOwor
ICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCks
IHJlc3VsdDMyKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJf
dD4ocHJvYywgJmEpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNx
cnQoYSkpKSkpOworfQorCit2b2lkIHRlc3RTcXJ0QXJnV2l0aFVzZWxlc3NEb3VibGVDb252ZXJz
aW9uKGZsb2F0IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQzMiA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCkpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MzIpOworICAgIFZhbHVlKiBhc0RvdWJs
ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCks
IGZsb2F0VmFsdWUpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIFNxcnQsIE9yaWdpbigpLCBhc0RvdWJsZSk7CisgICAgVmFsdWUqIGZsb2F0UmVzdWx0
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zsb2F0LCBPcmlnaW4oKSwg
cmVzdWx0KTsKKyAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgZmxvYXRSZXN1bHQpOworICAgIHJvb3QtPmFwcGVu
ZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKKwor
ICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lz
ZV9jYXN0PGludDMyX3Q+KGEpKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KHN0YXRpY19jYXN0PGZs
b2F0PihzcXJ0KGEpKSkpKTsKK30KKwordm9pZCB0ZXN0U3FydEFyZ1dpdGhFZmZlY3RmdWxEb3Vi
bGVDb252ZXJzaW9uKGZsb2F0IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQzMiA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MzIpOworICAgIFZhbHVl
KiBhc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwg
T3JpZ2luKCksIGZsb2F0VmFsdWUpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIFNxcnQsIE9yaWdpbigpLCBhc0RvdWJsZSk7CisgICAgVmFsdWUqIGZs
b2F0UmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zsb2F0LCBP
cmlnaW4oKSwgcmVzdWx0KTsKKyAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgZmxvYXRSZXN1bHQpOworICAgIFZh
bHVlKiBkb3VibGVBZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOworICAgIHJvb3QtPmFwcGVuZE5l
dzxNZW1vcnlWYWx1ZT4ocHJvYywgU3RvcmUsIE9yaWdpbigpLCByZXN1bHQsIGRvdWJsZUFkZHJl
c3MpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3Jp
Z2luKCksIHJlc3VsdDMyKTsKKworICAgIGRvdWJsZSBlZmZlY3QgPSAwOworICAgIENIRUNLKGlz
SWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMy
X3Q+KGEpLCAmZWZmZWN0KSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KHN0YXRpY19jYXN0PGZsb2F0
PihzcXJ0KGEpKSkpKTsKKyAgICBDSEVDSyhpc0lkZW50aWNhbChlZmZlY3QsIHNxcnQoYSkpKTsK
K30KKwordm9pZCB0ZXN0RG91YmxlQXJnVG9JbnQ2NEJpdHdpc2VDYXN0KGRvdWJsZSB2YWx1ZSkK
K3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKKworICAgIHJv
b3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywg
Qml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudCkpOworCisgICAgQ0hFQ0soaXNJZGVudGlj
YWwoY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCB2YWx1ZSksIGJpdHdpc2VfY2FzdDxpbnQ2
NF90Pih2YWx1ZSkpKTsKK30KKwordm9pZCB0ZXN0RG91YmxlSW1tVG9JbnQ2NEJpdHdpc2VDYXN0
KGRvdWJsZSB2YWx1ZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVu
ZE5ldzxDb25zdERvdWJsZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdmFsdWUpOworCisgICAgcm9v
dC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2lu
KCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBC
aXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50KSk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNh
bChjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MpLCBiaXR3aXNlX2Nhc3Q8aW50NjRfdD4odmFs
dWUpKSk7Cit9CisKK3ZvaWQgdGVzdFR3b0JpdHdpc2VDYXN0T25Eb3VibGUoZG91YmxlIHZhbHVl
KQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOworICAgIFZh
bHVlKiBmaXJzdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9y
aWdpbigpLCBhcmd1bWVudCk7CisgICAgVmFsdWUqIHNlY29uZCA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBmaXJzdCk7CisgICAgcm9vdC0+YXBw
ZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgc2Vjb25kKTsKKwor
ICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCB2YWx1ZSks
IHZhbHVlKSk7Cit9CisKK3ZvaWQgdGVzdEJpdHdpc2VDYXN0T25Eb3VibGVJbk1lbW9yeShkb3Vi
bGUgdmFsdWUpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsK
KyAgICBNZW1vcnlWYWx1ZSogbG9hZERvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1
ZT4ocHJvYywgTG9hZCwgRG91YmxlLCBPcmlnaW4oKSwgYWRkcmVzcyk7CisgICAgVmFsdWUqIGNh
c3QgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwg
bG9hZERvdWJsZSk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwgY2FzdCk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5k
UnVuPGludDY0X3Q+KHByb2MsICZ2YWx1ZSksIGJpdHdpc2VfY2FzdDxpbnQ2NF90Pih2YWx1ZSkp
KTsKK30KKwordm9pZCB0ZXN0SW50NjRCQXJnVG9Eb3VibGVCaXR3aXNlQ2FzdChpbnQ2NF90IHZh
bHVlKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworCisg
ICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAgIHByb2MsIFJldHVybiwg
T3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBw
cm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50KSk7CisKKyAgICBDSEVDSyhpc0lk
ZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYywgdmFsdWUpLCBiaXR3aXNlX2Nhc3Q8
ZG91YmxlPih2YWx1ZSkpKTsKK30KKwordm9pZCB0ZXN0SW50NjRCSW1tVG9Eb3VibGVCaXR3aXNl
Q2FzdChpbnQ2NF90IHZhbHVlKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+
YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHZhbHVlKTsKKworICAgIHJv
b3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywg
Qml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudCkpOworCisgICAgQ0hFQ0soaXNJZGVudGlj
YWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MpLCBiaXR3aXNlX2Nhc3Q8ZG91YmxlPih2YWx1
ZSkpKTsKK30KKwordm9pZCB0ZXN0VHdvQml0d2lzZUNhc3RPbkludDY0KGludDY0X3QgdmFsdWUp
Cit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgVmFs
dWUqIGZpcnN0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3Jp
Z2luKCksIGFyZ3VtZW50KTsKKyAgICBWYWx1ZSogc2Vjb25kID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGZpcnN0KTsKKyAgICByb290LT5hcHBl
bmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBzZWNvbmQpOworCisg
ICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCB2YWx1ZSks
IHZhbHVlKSk7Cit9CisKK3ZvaWQgdGVzdEJpdHdpc2VDYXN0T25JbnQ2NEluTWVtb3J5KGludDY0
X3QgdmFsdWUpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsK
KyAgICBNZW1vcnlWYWx1ZSogbG9hZERvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1
ZT4ocHJvYywgTG9hZCwgSW50NjQsIE9yaWdpbigpLCBhZGRyZXNzKTsKKyAgICBWYWx1ZSogY2Fz
dCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBs
b2FkRG91YmxlKTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLCBjYXN0KTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRS
dW48ZG91YmxlPihwcm9jLCAmdmFsdWUpLCBiaXR3aXNlX2Nhc3Q8ZG91YmxlPih2YWx1ZSkpKTsK
K30KKwordm9pZCB0ZXN0RmxvYXRJbW1Ub0ludDMyQml0d2lzZUNhc3QoZmxvYXQgdmFsdWUpCit7
CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgdmFsdWUpOworCisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRy
b2xWYWx1ZT4oCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2lu
KCksIGFyZ3VtZW50KSk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGlu
dDMyX3Q+KHByb2MpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4odmFsdWUpKSk7Cit9CisKK3ZvaWQg
dGVzdEJpdHdpc2VDYXN0T25GbG9hdEluTWVtb3J5KGZsb2F0IHZhbHVlKQogewogICAgIFByb2Nl
ZHVyZSBwcm9jOwogICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CiAgICAg
VmFsdWUqIGFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgTWVtb3J5VmFsdWUqIHZhbHVl
ID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2lu
KCksIGFkZHJlc3MpOwotICAgIFZhbHVlKiBjbHpWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgQ2x6LCBPcmlnaW4oKSwgdmFsdWUpOwotICAgIHJvb3QtPmFwcGVuZE5ldzxDb250
cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIGNselZhbHVlKTsKLSAgICBDSEVDSyhj
b21waWxlQW5kUnVuPHVuc2lnbmVkPihwcm9jLCAmYSkgPT0gY291bnRMZWFkaW5nWmVybyhhKSk7
CisgICAgTWVtb3J5VmFsdWUqIGxvYWRGbG9hdCA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1
ZT4ocHJvYywgTG9hZCwgRmxvYXQsIE9yaWdpbigpLCBhZGRyZXNzKTsKKyAgICBWYWx1ZSogY2Fz
dCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBs
b2FkRmxvYXQpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVy
biwgT3JpZ2luKCksIGNhc3QpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1
bjxpbnQzMl90Pihwcm9jLCAmdmFsdWUpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4odmFsdWUpKSk7
CiB9CiAKLXZvaWQgdGVzdFNxcnRBcmcoZG91YmxlIGEpCit2b2lkIHRlc3RJbnQzMkJBcmdUb0Zs
b2F0Qml0d2lzZUNhc3QoaW50MzJfdCB2YWx1ZSkKIHsKICAgICBQcm9jZWR1cmUgcHJvYzsKICAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVu
dCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKTsKKwogICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+
KAogICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAogICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgU3FydCwgT3JpZ2luKCksCi0gICAgICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBG
UFJJbmZvOjphcmd1bWVudEZQUjApKSk7CisgICAgICAgICAgICBwcm9jLCBCaXR3aXNlQ2FzdCwg
T3JpZ2luKCksIGFyZ3VtZW50KSk7CiAKLSAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5k
UnVuPGRvdWJsZT4ocHJvYywgYSksIHNxcnQoYSkpKTsKKyAgICBDSEVDSyhpc0lkZW50aWNhbChj
b21waWxlQW5kUnVuPGZsb2F0Pihwcm9jLCB2YWx1ZSksIGJpdHdpc2VfY2FzdDxmbG9hdD4odmFs
dWUpKSk7CiB9CiAKLXZvaWQgdGVzdFNxcnRJbW0oZG91YmxlIGEpCit2b2lkIHRlc3RJbnQzMkJJ
bW1Ub0Zsb2F0Qml0d2lzZUNhc3QoaW50MzJfdCB2YWx1ZSkKIHsKICAgICBQcm9jZWR1cmUgcHJv
YzsKICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIFZhbHVlKiBh
cmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdERvdWJsZVZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgYSk7CisgICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIHZhbHVlKTsKKwogICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9s
VmFsdWU+KAogICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIFNxcnQsIE9yaWdpbigpLCBhcmd1bWVudCkpOworICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQml0d2lzZUNhc3Qs
IE9yaWdpbigpLCBhcmd1bWVudCkpOwogCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFu
ZFJ1bjxkb3VibGU+KHByb2MpLCBzcXJ0KGEpKSk7CisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29t
cGlsZUFuZFJ1bjxmbG9hdD4ocHJvYyksIGJpdHdpc2VfY2FzdDxmbG9hdD4odmFsdWUpKSk7CiB9
CiAKLXZvaWQgdGVzdFNxcnRNZW0oZG91YmxlIGEpCit2b2lkIHRlc3RUd29CaXR3aXNlQ2FzdE9u
SW50MzIoaW50MzJfdCB2YWx1ZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKTsKKyAgICBWYWx1ZSogZmlyc3QgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQpOworICAgIFZhbHVlKiBzZWNvbmQg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgZmly
c3QpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3Jp
Z2luKCksIHNlY29uZCk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGlu
dDMyX3Q+KHByb2MsIHZhbHVlKSwgdmFsdWUpKTsKK30KKwordm9pZCB0ZXN0Qml0d2lzZUNhc3RP
bkludDMySW5NZW1vcnkoaW50MzJfdCB2YWx1ZSkKIHsKICAgICBQcm9jZWR1cmUgcHJvYzsKICAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwogICAgIFZhbHVlKiBhZGRyZXNz
ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApOwotICAgIE1lbW9yeVZhbHVlKiBsb2FkRG91YmxlID0gcm9vdC0+
YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBEb3VibGUsIE9yaWdpbigpLCBhZGRy
ZXNzKTsKLSAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKLSAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBT
cXJ0LCBPcmlnaW4oKSwgbG9hZERvdWJsZSkpOworICAgIE1lbW9yeVZhbHVlKiBsb2FkRmxvYXQg
PSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4o
KSwgYWRkcmVzcyk7CisgICAgVmFsdWUqIGNhc3QgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgbG9hZEZsb2F0KTsKKyAgICByb290LT5hcHBlbmRO
ZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBjYXN0KTsKIAotICAgIENI
RUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCAmYSksIHNxcnQoYSkp
KTsKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGZsb2F0Pihwcm9jLCAmdmFs
dWUpLCBiaXR3aXNlX2Nhc3Q8ZmxvYXQ+KHZhbHVlKSkpOwogfQogCi12b2lkIHRlc3REb3VibGVB
cmdUb0ludDY0Qml0d2lzZUNhc3QoZG91YmxlIHZhbHVlKQordm9pZCB0ZXN0Q29udmVydERvdWJs
ZVRvRmxvYXRBcmcoZG91YmxlIHZhbHVlKQogewogICAgIFByb2NlZHVyZSBwcm9jOwogICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CiAgICAgVmFsdWUqIGFyZ3VtZW50ID0g
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZv
Ojphcmd1bWVudEZQUjApOworICAgIFZhbHVlKiBhc0Zsb2F0ID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBEb3VibGVUb0Zsb2F0LCBPcmlnaW4oKSwgYXJndW1lbnQpOworICAgIHJvb3Qt
PmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIGFzRmxvYXQp
OwogCi0gICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCi0gICAgICAgIHByb2MsIFJl
dHVybiwgT3JpZ2luKCksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCi0gICAgICAg
ICAgICBwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50KSk7Ci0KLSAgICBDSEVD
Syhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIHZhbHVlKSwgYml0d2lz
ZV9jYXN0PGludDY0X3Q+KHZhbHVlKSkpOworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVB
bmRSdW48ZmxvYXQ+KHByb2MsIHZhbHVlKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZhbHVlKSkpOwog
fQogCi12b2lkIHRlc3REb3VibGVJbW1Ub0ludDY0Qml0d2lzZUNhc3QoZG91YmxlIHZhbHVlKQor
dm9pZCB0ZXN0Q29udmVydERvdWJsZVRvRmxvYXRJbW0oZG91YmxlIHZhbHVlKQogewogICAgIFBy
b2NlZHVyZSBwcm9jOwogICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CiAg
ICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCB2YWx1ZSk7CisgICAgVmFsdWUqIGFzRmxvYXQgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIERvdWJsZVRvRmxvYXQsIE9yaWdpbigpLCBhcmd1bWVudCk7CisgICAg
cm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgYXNG
bG9hdCk7CiAKLSAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKLSAgICAgICAgcHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKLSAg
ICAgICAgICAgIHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQpKTsKKyAgICBD
SEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGZsb2F0Pihwcm9jKSwgc3RhdGljX2Nhc3Q8
ZmxvYXQ+KHZhbHVlKSkpOworfQogCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1
bjxpbnQ2NF90Pihwcm9jKSwgYml0d2lzZV9jYXN0PGludDY0X3Q+KHZhbHVlKSkpOwordm9pZCB0
ZXN0Q29udmVydERvdWJsZVRvRmxvYXRNZW0oZG91YmxlIHZhbHVlKQoreworICAgIFByb2NlZHVy
ZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFs
dWUqIGFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgTWVtb3J5VmFsdWUqIGxvYWRlZERv
dWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgRG91YmxlLCBP
cmlnaW4oKSwgYWRkcmVzcyk7CisgICAgVmFsdWUqIGFzRmxvYXQgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIERvdWJsZVRvRmxvYXQsIE9yaWdpbigpLCBsb2FkZWREb3VibGUpOworICAg
IHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIGFz
RmxvYXQpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxmbG9hdD4ocHJv
YywgJnZhbHVlKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZhbHVlKSkpOwogfQogCi12b2lkIHRlc3RU
d29CaXR3aXNlQ2FzdE9uRG91YmxlKGRvdWJsZSB2YWx1ZSkKK3ZvaWQgdGVzdENvbnZlcnRGbG9h
dFRvRG91YmxlQXJnKGZsb2F0IHZhbHVlKQogewogICAgIFByb2NlZHVyZSBwcm9jOwogICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFyZ3VtZW50ID0g
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZv
Ojphcmd1bWVudEZQUjApOwotICAgIFZhbHVlKiBmaXJzdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudCk7Ci0gICAgVmFsdWUqIHNl
Y29uZCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigp
LCBmaXJzdCk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwgc2Vjb25kKTsKKyAgICBWYWx1ZSogYXJndW1lbnQzMiA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCkpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MzIpOworICAgIFZhbHVlKiBhc0RvdWJs
ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCks
IGZsb2F0VmFsdWUpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJl
dHVybiwgT3JpZ2luKCksIGFzRG91YmxlKTsKIAotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBp
bGVBbmRSdW48ZG91YmxlPihwcm9jLCB2YWx1ZSksIHZhbHVlKSk7CisgICAgQ0hFQ0soaXNJZGVu
dGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90Pih2
YWx1ZSkpLCBzdGF0aWNfY2FzdDxkb3VibGU+KHZhbHVlKSkpOwogfQogCi12b2lkIHRlc3RCaXR3
aXNlQ2FzdE9uRG91YmxlSW5NZW1vcnkoZG91YmxlIHZhbHVlKQordm9pZCB0ZXN0Q29udmVydEZs
b2F0VG9Eb3VibGVJbW0oZmxvYXQgdmFsdWUpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CiAgICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogYWRkcmVzcyA9
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKLSAgICBNZW1vcnlWYWx1ZSogbG9hZERvdWJsZSA9IHJvb3QtPmFw
cGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgRG91YmxlLCBPcmlnaW4oKSwgYWRkcmVz
cyk7Ci0gICAgVmFsdWUqIGNhc3QgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdp
c2VDYXN0LCBPcmlnaW4oKSwgbG9hZERvdWJsZSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3PENvbnRy
b2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgY2FzdCk7CisgICAgVmFsdWUqIGFyZ3Vt
ZW50ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RmxvYXRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHZh
bHVlKTsKKyAgICBWYWx1ZSogYXNEb3VibGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBhcmd1bWVudCk7CisgICAgcm9vdC0+YXBwZW5kTmV3
PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgYXNEb3VibGUpOwogCi0gICAg
Q0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCAmdmFsdWUpLCBi
aXR3aXNlX2Nhc3Q8aW50NjRfdD4odmFsdWUpKSk7CisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29t
cGlsZUFuZFJ1bjxkb3VibGU+KHByb2MpLCBzdGF0aWNfY2FzdDxkb3VibGU+KHZhbHVlKSkpOwog
fQogCi12b2lkIHRlc3RJbnQ2NEJBcmdUb0RvdWJsZUJpdHdpc2VDYXN0KGludDY0X3QgdmFsdWUp
Cit2b2lkIHRlc3RDb252ZXJ0RmxvYXRUb0RvdWJsZU1lbShmbG9hdCB2YWx1ZSkKIHsKICAgICBQ
cm9jZWR1cmUgcHJvYzsKICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwot
ICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBWYWx1ZSogYWRkcmVz
cyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBNZW1vcnlWYWx1ZSogbG9hZGVkRmxvYXQgPSByb290
LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEZsb2F0LCBPcmlnaW4oKSwgYWRk
cmVzcyk7CisgICAgVmFsdWUqIGFzRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBGbG9hdFRvRG91YmxlLCBPcmlnaW4oKSwgbG9hZGVkRmxvYXQpOworICAgIHJvb3QtPmFwcGVu
ZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIGFzRG91YmxlKTsKIAot
ICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAotICAgICAgICBwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLAotICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAg
cHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudCkpOworICAgIENIRUNLKGlzSWRl
bnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCAmdmFsdWUpLCBzdGF0aWNfY2FzdDxk
b3VibGU+KHZhbHVlKSkpOworfQogCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1
bjxkb3VibGU+KHByb2MsIHZhbHVlKSwgYml0d2lzZV9jYXN0PGRvdWJsZT4odmFsdWUpKSk7Cit2
b2lkIHRlc3RDb252ZXJ0RG91YmxlVG9GbG9hdFRvRG91YmxlVG9GbG9hdChkb3VibGUgdmFsdWUp
Cit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7CisgICAgVmFs
dWUqIGFzRmxvYXQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERvdWJsZVRvRmxvYXQs
IE9yaWdpbigpLCBhcmd1bWVudCk7CisgICAgVmFsdWUqIGFzRG91YmxlID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBGbG9hdFRvRG91YmxlLCBPcmlnaW4oKSwgYXNGbG9hdCk7CisgICAg
VmFsdWUqIGFzRmxvYXRBZ2FpbiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91Ymxl
VG9GbG9hdCwgT3JpZ2luKCksIGFzRG91YmxlKTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJv
bFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBhc0Zsb2F0QWdhaW4pOworCisgICAgQ0hF
Q0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxmbG9hdD4ocHJvYywgdmFsdWUpLCBzdGF0aWNf
Y2FzdDxmbG9hdD4odmFsdWUpKSk7CiB9CiAKLXZvaWQgdGVzdEludDY0QkltbVRvRG91YmxlQml0
d2lzZUNhc3QoaW50NjRfdCB2YWx1ZSkKK3ZvaWQgdGVzdExvYWRGbG9hdENvbnZlcnREb3VibGVD
b252ZXJ0RmxvYXRTdG9yZUZsb2F0KGZsb2F0IHZhbHVlKQogewogICAgIFByb2NlZHVyZSBwcm9j
OwogICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgVmFsdWUqIGFy
Z3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHZh
bHVlKTsKKyAgICBWYWx1ZSogc3JjID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIFZhbHVlKiBkc3Qg
PSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMSk7CisgICAgTWVtb3J5VmFsdWUqIGxvYWRlZEZsb2F0ID0gcm9vdC0+
YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBGbG9hdCwgT3JpZ2luKCksIHNyYyk7
CisgICAgVmFsdWUqIGFzRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9h
dFRvRG91YmxlLCBPcmlnaW4oKSwgbG9hZGVkRmxvYXQpOworICAgIFZhbHVlKiBhc0Zsb2F0QWdh
aW4gPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERvdWJsZVRvRmxvYXQsIE9yaWdpbigp
LCBhc0RvdWJsZSk7CisgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBTdG9y
ZSwgT3JpZ2luKCksIGFzRmxvYXRBZ2FpbiwgZHN0KTsKIAotICAgIHJvb3QtPmFwcGVuZE5ldzxD
b250cm9sVmFsdWU+KAotICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAotICAgICAgICBy
b290LT5hcHBlbmROZXc8VmFsdWU+KAotICAgICAgICAgICAgcHJvYywgQml0d2lzZUNhc3QsIE9y
aWdpbigpLCBhcmd1bWVudCkpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHBy
b2MsIFJldHVybiwgT3JpZ2luKCksIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCAwKSk7CiAKLSAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRv
dWJsZT4ocHJvYyksIGJpdHdpc2VfY2FzdDxkb3VibGU+KHZhbHVlKSkpOworICAgIGZsb2F0IGlu
cHV0ID0gdmFsdWU7CisgICAgZmxvYXQgb3V0cHV0ID0gMC47CisgICAgQ0hFQ0soIWNvbXBpbGVB
bmRSdW48aW50NjRfdD4ocHJvYywgJmlucHV0LCAmb3V0cHV0KSk7CisgICAgQ0hFQ0soaXNJZGVu
dGljYWwoaW5wdXQsIG91dHB1dCkpOwogfQogCi12b2lkIHRlc3RUd29CaXR3aXNlQ2FzdE9uSW50
NjQoaW50NjRfdCB2YWx1ZSkKK3ZvaWQgdGVzdEZyb3VuZEFyZyhkb3VibGUgdmFsdWUpCiB7CiAg
ICAgUHJvY2VkdXJlIHByb2M7CiAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKLSAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgVmFsdWUqIGZp
cnN0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCks
IGFyZ3VtZW50KTsKLSAgICBWYWx1ZSogc2Vjb25kID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGZpcnN0KTsKLSAgICByb290LT5hcHBlbmROZXc8
Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBzZWNvbmQpOworICAgIFZhbHVl
KiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKKyAgICBWYWx1ZSogYXNGbG9hdCA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwgT3JpZ2luKCksIGFyZ3VtZW50
KTsKKyAgICBWYWx1ZSogYXNEb3VibGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZs
b2F0VG9Eb3VibGUsIE9yaWdpbigpLCBhc0Zsb2F0KTsKKyAgICByb290LT5hcHBlbmROZXc8Q29u
dHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBhc0RvdWJsZSk7CiAKLSAgICBDSEVD
Syhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIHZhbHVlKSwgdmFsdWUp
KTsKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYywgdmFs
dWUpLCBzdGF0aWNfY2FzdDxkb3VibGU+KHN0YXRpY19jYXN0PGZsb2F0Pih2YWx1ZSkpKSk7CiB9
CiAKLXZvaWQgdGVzdEJpdHdpc2VDYXN0T25JbnQ2NEluTWVtb3J5KGludDY0X3QgdmFsdWUpCit2
b2lkIHRlc3RGcm91bmRNZW0oZG91YmxlIHZhbHVlKQogewogICAgIFByb2NlZHVyZSBwcm9jOwog
ICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CiAgICAgVmFsdWUqIGFkZHJl
c3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgTWVtb3J5VmFsdWUqIGxvYWREb3VibGUgPSByb290
LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDY0LCBPcmlnaW4oKSwgYWRk
cmVzcyk7Ci0gICAgVmFsdWUqIGNhc3QgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJp
dHdpc2VDYXN0LCBPcmlnaW4oKSwgbG9hZERvdWJsZSk7Ci0gICAgcm9vdC0+YXBwZW5kTmV3PENv
bnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgY2FzdCk7CisgICAgTWVtb3J5VmFs
dWUqIGxvYWRlZERvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9h
ZCwgRG91YmxlLCBPcmlnaW4oKSwgYWRkcmVzcyk7CisgICAgVmFsdWUqIGFzRmxvYXQgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERvdWJsZVRvRmxvYXQsIE9yaWdpbigpLCBsb2FkZWRE
b3VibGUpOworICAgIFZhbHVlKiBhc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGFzRmxvYXQpOworICAgIHJvb3QtPmFwcGVuZE5l
dzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIGFzRG91YmxlKTsKIAotICAg
IENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCAmdmFsdWUpLCBi
aXR3aXNlX2Nhc3Q8ZG91YmxlPih2YWx1ZSkpKTsKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21w
aWxlQW5kUnVuPGRvdWJsZT4ocHJvYywgJnZhbHVlKSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGF0
aWNfY2FzdDxmbG9hdD4odmFsdWUpKSkpOwogfQogCi12b2lkIHRlc3RTdG9yZShpbnQgdmFsdWUp
Cit2b2lkIHRlc3RTdG9yZTMyKGludCB2YWx1ZSkKIHsKICAgICBQcm9jZWR1cmUgcHJvYzsKICAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwpAQCAtMjYxMywyMiArMzQzMywy
OCBAQCB2b2lkIHRlc3RTdG9yZUxvYWRTdGFja1Nsb3QoaW50IHZhbHVlKQogICAgIENIRUNLKGNv
bXBpbGVBbmRSdW48aW50Pihwcm9jLCB2YWx1ZSkgPT0gdmFsdWUpOwogfQogCi10ZW1wbGF0ZTx0
eXBlbmFtZSBUPgotaW50MzJfdCBtb2RlbExvYWQoaW50MzJfdCB2YWx1ZSkKK3RlbXBsYXRlPHR5
cGVuYW1lIExvYWRlZFR5cGUsIHR5cGVuYW1lIEVmZmVjdGl2ZVR5cGU+CitFZmZlY3RpdmVUeXBl
IG1vZGVsTG9hZChFZmZlY3RpdmVUeXBlIHZhbHVlKQogewogICAgIHVuaW9uIHsKLSAgICAgICAg
aW50MzJfdCBvcmlnaW5hbDsKLSAgICAgICAgVCBsb2FkZWQ7CisgICAgICAgIEVmZmVjdGl2ZVR5
cGUgb3JpZ2luYWw7CisgICAgICAgIExvYWRlZFR5cGUgbG9hZGVkOwogICAgIH0gdTsKIAogICAg
IHUub3JpZ2luYWwgPSB2YWx1ZTsKLSAgICBpZiAoc3RkOjppc19zaWduZWQ8VD46OnZhbHVlKQot
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50MzJfdD4odS5sb2FkZWQpOwotICAgIHJldHVy
biBzdGF0aWNfY2FzdDxpbnQzMl90PihzdGF0aWNfY2FzdDx1aW50MzJfdD4odS5sb2FkZWQpKTsK
KyAgICBpZiAoc3RkOjppc19zaWduZWQ8TG9hZGVkVHlwZT46OnZhbHVlKQorICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8RWZmZWN0aXZlVHlwZT4odS5sb2FkZWQpOworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxFZmZlY3RpdmVUeXBlPihzdGF0aWNfY2FzdDx0eXBlbmFtZSBzdGQ6Om1ha2VfdW5z
aWduZWQ8RWZmZWN0aXZlVHlwZT46OnR5cGU+KHUubG9hZGVkKSk7CiB9CiAKLXRlbXBsYXRlPHR5
cGVuYW1lIFQ+Ci12b2lkIHRlc3RMb2FkKEIzOjpPcGNvZGUgb3Bjb2RlLCBpbnQzMl90IHZhbHVl
KQordGVtcGxhdGU8PgorZmxvYXQgbW9kZWxMb2FkPGZsb2F0LCBmbG9hdD4oZmxvYXQgdmFsdWUp
IHsgcmV0dXJuIHZhbHVlOyB9CisKK3RlbXBsYXRlPD4KK2RvdWJsZSBtb2RlbExvYWQ8ZG91Ymxl
LCBkb3VibGU+KGRvdWJsZSB2YWx1ZSkgeyByZXR1cm4gdmFsdWU7IH0KKwordGVtcGxhdGU8QjM6
OlR5cGUgdHlwZSwgdHlwZW5hbWUgQ1R5cGUsIHR5cGVuYW1lIElucHV0VHlwZT4KK3ZvaWQgdGVz
dExvYWQoQjM6Ok9wY29kZSBvcGNvZGUsIElucHV0VHlwZSB2YWx1ZSkKIHsKICAgICAvLyBTaW1w
bGUgbG9hZCBmcm9tIGFuIGFic29sdXRlIGFkZHJlc3MuCiAgICAgewpAQCAtMjYzOCwxMCArMzQ2
NCwxMCBAQCB2b2lkIHRlc3RMb2FkKEIzOjpPcGNvZGUgb3Bjb2RlLCBpbnQzMl90IHZhbHVlKQog
ICAgICAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKICAgICAgICAgICAgIHByb2Ms
IFJldHVybiwgT3JpZ2luKCksCiAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFs
dWU+KAotICAgICAgICAgICAgICAgIHByb2MsIG9wY29kZSwgSW50MzIsIE9yaWdpbigpLAorICAg
ICAgICAgICAgICAgIHByb2MsIG9wY29kZSwgdHlwZSwgT3JpZ2luKCksCiAgICAgICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmdmFsdWUp
KSk7CiAKLSAgICAgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jKSA9PSBtb2Rl
bExvYWQ8VD4odmFsdWUpKTsKKyAgICAgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1
bjxDVHlwZT4ocHJvYyksIG1vZGVsTG9hZDxDVHlwZT4odmFsdWUpKSk7CiAgICAgfQogICAgIAog
ICAgIC8vIFNpbXBsZSBsb2FkIGZyb20gYW4gYWRkcmVzcyBpbiBhIHJlZ2lzdGVyLgpAQCAtMjY1
MiwxMCArMzQ3OCwxMCBAQCB2b2lkIHRlc3RMb2FkKEIzOjpPcGNvZGUgb3Bjb2RlLCBpbnQzMl90
IHZhbHVlKQogICAgICAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKICAgICAgICAg
ICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCiAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
TWVtb3J5VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIG9wY29kZSwgSW50MzIsIE9yaWdp
bigpLAorICAgICAgICAgICAgICAgIHByb2MsIG9wY29kZSwgdHlwZSwgT3JpZ2luKCksCiAgICAg
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSk7CiAKLSAgICAgICAgQ0hFQ0soY29tcGlsZUFu
ZFJ1bjxpbnQzMl90Pihwcm9jLCAmdmFsdWUpID09IG1vZGVsTG9hZDxUPih2YWx1ZSkpOworICAg
ICAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPENUeXBlPihwcm9jLCAmdmFsdWUp
LCBtb2RlbExvYWQ8Q1R5cGU+KHZhbHVlKSkpOwogICAgIH0KICAgICAKICAgICAvLyBTaW1wbGUg
bG9hZCBmcm9tIGFuIGFkZHJlc3MgaW4gYSByZWdpc3RlciwgYXQgYW4gb2Zmc2V0LgpAQCAtMjY2
NiwxMSArMzQ5MiwxMSBAQCB2b2lkIHRlc3RMb2FkKEIzOjpPcGNvZGUgb3Bjb2RlLCBpbnQzMl90
IHZhbHVlKQogICAgICAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKICAgICAgICAg
ICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCiAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
TWVtb3J5VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIG9wY29kZSwgSW50MzIsIE9yaWdp
bigpLAorICAgICAgICAgICAgICAgIHByb2MsIG9wY29kZSwgdHlwZSwgT3JpZ2luKCksCiAgICAg
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAotICAgICAgICAgICAgICAgIHNpemVvZihpbnQz
Ml90KSkpOworICAgICAgICAgICAgICAgIHNpemVvZihJbnB1dFR5cGUpKSk7CiAKLSAgICAgICAg
Q0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCAmdmFsdWUgLSAxKSA9PSBtb2RlbExv
YWQ8VD4odmFsdWUpKTsKKyAgICAgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxD
VHlwZT4ocHJvYywgJnZhbHVlIC0gMSksIG1vZGVsTG9hZDxDVHlwZT4odmFsdWUpKSk7CiAgICAg
fQogCiAgICAgLy8gTG9hZCBmcm9tIGEgc2ltcGxlIGJhc2UtaW5kZXggd2l0aCB2YXJpb3VzIHNj
YWxlcy4KQEAgLTI2ODEsNyArMzUwNyw3IEBAIHZvaWQgdGVzdExvYWQoQjM6Ok9wY29kZSBvcGNv
ZGUsIGludDMyX3QgdmFsdWUpCiAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+
KAogICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKICAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgb3Bjb2RlLCBJ
bnQzMiwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcHJvYywgb3Bjb2RlLCB0eXBlLCBPcmln
aW4oKSwKICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAogICAgICAgICAg
ICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAogICAgICAgICAgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCksCkBAIC0yNjkwLDcgKzM1MTYsNyBAQCB2b2lkIHRlc3RMb2FkKEIzOjpPcGNv
ZGUgb3Bjb2RlLCBpbnQzMl90IHZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjEpLAogICAgICAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0
MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGxvZ1NjYWxlKSkpKSk7CiAKLSAgICAgICAgQ0hFQ0so
Y29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCAmdmFsdWUgLSAyLCAoc2l6ZW9mKGludDMyX3Qp
ICogMikgPj4gbG9nU2NhbGUpID09IG1vZGVsTG9hZDxUPih2YWx1ZSkpOworICAgICAgICBDSEVD
Syhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPENUeXBlPihwcm9jLCAmdmFsdWUgLSAyLCAoc2l6
ZW9mKElucHV0VHlwZSkgKiAyKSA+PiBsb2dTY2FsZSksIG1vZGVsTG9hZDxDVHlwZT4odmFsdWUp
KSk7CiAgICAgfQogCiAgICAgLy8gTG9hZCBmcm9tIGEgc2ltcGxlIGJhc2UtaW5kZXggd2l0aCB2
YXJpb3VzIHNjYWxlcywgYnV0IGNvbW11dGVkLgpAQCAtMjcwMSw3ICszNTI3LDcgQEAgdm9pZCB0
ZXN0TG9hZChCMzo6T3Bjb2RlIG9wY29kZSwgaW50MzJfdCB2YWx1ZSkKICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCiAgICAgICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLAogICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKLSAgICAgICAg
ICAgICAgICBwcm9jLCBvcGNvZGUsIEludDMyLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICBw
cm9jLCBvcGNvZGUsIHR5cGUsIE9yaWdpbigpLAogICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCiAgICAgICAgICAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCiAg
ICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCkBAIC0yNzEwLDcgKzM1
MzYsNjMgQEAgdm9pZCB0ZXN0TG9hZChCMzo6T3Bjb2RlIG9wY29kZSwgaW50MzJfdCB2YWx1ZSkK
ICAgICAgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBsb2dTY2FsZSkpLAogICAgICAgICAgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCkpKSk7CiAKLSAgICAgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCAm
dmFsdWUgLSAyLCAoc2l6ZW9mKGludDMyX3QpICogMikgPj4gbG9nU2NhbGUpID09IG1vZGVsTG9h
ZDxUPih2YWx1ZSkpOworICAgICAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPENU
eXBlPihwcm9jLCAmdmFsdWUgLSAyLCAoc2l6ZW9mKElucHV0VHlwZSkgKiAyKSA+PiBsb2dTY2Fs
ZSksIG1vZGVsTG9hZDxDVHlwZT4odmFsdWUpKSk7CisgICAgfQorfQorCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgordm9pZCB0ZXN0TG9hZChCMzo6T3Bjb2RlIG9wY29kZSwgaW50MzJfdCB2YWx1ZSkK
K3sKKyAgICByZXR1cm4gdGVzdExvYWQ8SW50MzIsIFQ+KG9wY29kZSwgdmFsdWUpOworfQorCit0
ZW1wbGF0ZTxCMzo6VHlwZSB0eXBlLCB0eXBlbmFtZSBUPgordm9pZCB0ZXN0TG9hZChUIHZhbHVl
KQoreworICAgIHJldHVybiB0ZXN0TG9hZDx0eXBlLCBUPihMb2FkLCB2YWx1ZSk7Cit9CisKK3Zv
aWQgdGVzdFN0b3JlRmxvYXQoZG91YmxlIGlucHV0KQoreworICAgIC8vIFNpbXBsZSBzdG9yZSBm
cm9tIGFuIGFkZHJlc3MgaW4gYSByZWdpc3Rlci4KKyAgICB7CisgICAgICAgIFByb2NlZHVyZSBw
cm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAg
ICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7CisgICAgICAgIFZhbHVlKiBhcmd1
bWVudEFzRmxvYXQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERvdWJsZVRvRmxvYXQs
IE9yaWdpbigpLCBhcmd1bWVudCk7CisKKyAgICAgICAgVmFsdWUqIGRlc3RpbmF0aW9uQWRkcmVz
cyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVl
Pihwcm9jLCBTdG9yZSwgT3JpZ2luKCksIGFyZ3VtZW50QXNGbG9hdCwgZGVzdGluYXRpb25BZGRy
ZXNzKTsKKworICAgICAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLCByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgMCkpOworCisgICAgICAgIGZsb2F0IG91dHB1dCA9IDAuOworICAgICAgICBDSEVDSyghY29t
cGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBpbnB1dCwgJm91dHB1dCkpOworICAgICAgICBDSEVD
Syhpc0lkZW50aWNhbChzdGF0aWNfY2FzdDxmbG9hdD4oaW5wdXQpLCBvdXRwdXQpKTsKKyAgICB9
CisKKyAgICAvLyBTaW1wbGUgaW5kZXhlZCBzdG9yZS4KKyAgICB7CisgICAgICAgIFByb2NlZHVy
ZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAg
ICAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7CisgICAgICAgIFZhbHVlKiBh
cmd1bWVudEFzRmxvYXQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERvdWJsZVRvRmxv
YXQsIE9yaWdpbigpLCBhcmd1bWVudCk7CisKKyAgICAgICAgVmFsdWUqIGRlc3RpbmF0aW9uQmFz
ZUFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIFZhbHVlKiBpbmRleCA9IHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIxKTsKKyAgICAgICAgVmFsdWUqIHNjYWxlZEluZGV4ID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFNobCwgT3JpZ2luKCksCisgICAgICAgICAgICBp
bmRleCwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9y
aWdpbigpLCAyKSk7CisgICAgICAgIFZhbHVlKiBkZXN0aW5hdGlvbkFkZHJlc3MgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIHNjYWxlZEluZGV4LCBkZXN0aW5h
dGlvbkJhc2VBZGRyZXNzKTsKKworICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+
KHByb2MsIFN0b3JlLCBPcmlnaW4oKSwgYXJndW1lbnRBc0Zsb2F0LCBkZXN0aW5hdGlvbkFkZHJl
c3MpOworCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVy
biwgT3JpZ2luKCksIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCAwKSk7CisKKyAgICAgICAgZmxvYXQgb3V0cHV0ID0gMC47CisgICAgICAgIENIRUNLKCFjb21w
aWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGlucHV0LCAmb3V0cHV0IC0gMSwgMSkpOworICAgICAg
ICBDSEVDSyhpc0lkZW50aWNhbChzdGF0aWNfY2FzdDxmbG9hdD4oaW5wdXQpLCBvdXRwdXQpKTsK
ICAgICB9CiB9CiAKQEAgLTQ5NzEsNiArNTg1MywxNyBAQCB2b2lkIHRlc3RSZXR1cm5Eb3VibGUo
ZG91YmxlIHZhbHVlKQogICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91Ymxl
Pihwcm9jKSwgdmFsdWUpKTsKIH0KIAordm9pZCB0ZXN0UmV0dXJuRmxvYXQoZmxvYXQgdmFsdWUp
Cit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0RmxvYXRW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIHZhbHVlKSk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChj
b21waWxlQW5kUnVuPGZsb2F0Pihwcm9jKSwgdmFsdWUpKTsKK30KKwogZG91YmxlIHNpbXBsZUZ1
bmN0aW9uRG91YmxlKGRvdWJsZSBhLCBkb3VibGUgYikKIHsKICAgICByZXR1cm4gYSArIGI7CkBA
IC00OTkxLDYgKzU4ODQsMzIgQEAgdm9pZCB0ZXN0Q2FsbFNpbXBsZURvdWJsZShkb3VibGUgYSwg
ZG91YmxlIGIpCiAgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGEsIGIpID09
IGEgKyBiKTsKIH0KIAorZmxvYXQgc2ltcGxlRnVuY3Rpb25GbG9hdChmbG9hdCBhLCBmbG9hdCBi
KQoreworICAgIHJldHVybiBhICsgYjsKK30KKwordm9pZCB0ZXN0Q2FsbFNpbXBsZUZsb2F0KGZs
b2F0IGEsIGZsb2F0IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQxaW50MzIgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApKTsKKyAgICBWYWx1ZSogYXJndW1lbnQyaW50MzIgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsK
KyAgICBWYWx1ZSogZmxvYXRWYWx1ZTEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJp
dHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQxaW50MzIpOworICAgIFZhbHVlKiBmbG9hdFZh
bHVlMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigp
LCBhcmd1bWVudDJpbnQzMik7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisg
ICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxD
Q2FsbFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEZsb2F0LCBPcmlnaW4oKSwKKyAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYml0d2lz
ZV9jYXN0PHZvaWQqPihzaW1wbGVGdW5jdGlvbkZsb2F0KSksCisgICAgICAgICAgICBmbG9hdFZh
bHVlMSwKKyAgICAgICAgICAgIGZsb2F0VmFsdWUyKSk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNh
bChjb21waWxlQW5kUnVuPGZsb2F0Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSksIGJp
dHdpc2VfY2FzdDxpbnQzMl90PihiKSksIGEgKyBiKSk7Cit9CisKIGRvdWJsZSBmdW5jdGlvbldp
dGhIZWxsYURvdWJsZUFyZ3VtZW50cyhkb3VibGUgYSwgZG91YmxlIGIsIGRvdWJsZSBjLCBkb3Vi
bGUgZCwgZG91YmxlIGUsIGRvdWJsZSBmLCBkb3VibGUgZywgZG91YmxlIGgsIGRvdWJsZSBpLCBk
b3VibGUgaiwgZG91YmxlIGssIGRvdWJsZSBsLCBkb3VibGUgbSwgZG91YmxlIG4sIGRvdWJsZSBv
LCBkb3VibGUgcCwgZG91YmxlIHEsIGRvdWJsZSByLCBkb3VibGUgcywgZG91YmxlIHQsIGRvdWJs
ZSB1LCBkb3VibGUgdiwgZG91YmxlIHcsIGRvdWJsZSB4LCBkb3VibGUgeSwgZG91YmxlIHopCiB7
CiAgICAgcmV0dXJuIGEgKiBwb3coMiwgMCkgKyBiICogcG93KDIsIDEpICsgYyAqIHBvdygyLCAy
KSArIGQgKiBwb3coMiwgMykgKyBlICogcG93KDIsIDQpICsgZiAqIHBvdygyLCA1KSArIGcgKiBw
b3coMiwgNikgKyBoICogcG93KDIsIDcpICsgaSAqIHBvdygyLCA4KSArIGogKiBwb3coMiwgOSkg
KyBrICogcG93KDIsIDEwKSArIGwgKiBwb3coMiwgMTEpICsgbSAqIHBvdygyLCAxMikgKyBuICog
cG93KDIsIDEzKSArIG8gKiBwb3coMiwgMTQpICsgcCAqIHBvdygyLCAxNSkgKyBxICogcG93KDIs
IDE2KSArIHIgKiBwb3coMiwgMTcpICsgcyAqIHBvdygyLCAxOCkgKyB0ICogcG93KDIsIDE5KSAr
IHUgKiBwb3coMiwgMjApICsgdiAqIHBvdygyLCAyMSkgKyB3ICogcG93KDIsIDIyKSArIHggKiBw
b3coMiwgMjMpICsgeSAqIHBvdygyLCAyNCkgKyB6ICogcG93KDIsIDI1KTsKQEAgLTUwMTUsNiAr
NTkzNCwzMCBAQCB2b2lkIHRlc3RDYWxsRnVuY3Rpb25XaXRoSGVsbGFEb3VibGVBcmd1bWVudHMo
KQogICAgIENIRUNLKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jKSA9PSBmdW5jdGlvbldpdGhI
ZWxsYURvdWJsZUFyZ3VtZW50cygxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEy
LCAxMywgMTQsIDE1LCAxNiwgMTcsIDE4LCAxOSwgMjAsIDIxLCAyMiwgMjMsIDI0LCAyNSwgMjYp
KTsKIH0KIAorZmxvYXQgZnVuY3Rpb25XaXRoSGVsbGFGbG9hdEFyZ3VtZW50cyhmbG9hdCBhLCBm
bG9hdCBiLCBmbG9hdCBjLCBmbG9hdCBkLCBmbG9hdCBlLCBmbG9hdCBmLCBmbG9hdCBnLCBmbG9h
dCBoLCBmbG9hdCBpLCBmbG9hdCBqLCBmbG9hdCBrLCBmbG9hdCBsLCBmbG9hdCBtLCBmbG9hdCBu
LCBmbG9hdCBvLCBmbG9hdCBwLCBmbG9hdCBxLCBmbG9hdCByLCBmbG9hdCBzLCBmbG9hdCB0LCBm
bG9hdCB1LCBmbG9hdCB2LCBmbG9hdCB3LCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KQorewor
ICAgIHJldHVybiBhICogcG93KDIsIDApICsgYiAqIHBvdygyLCAxKSArIGMgKiBwb3coMiwgMikg
KyBkICogcG93KDIsIDMpICsgZSAqIHBvdygyLCA0KSArIGYgKiBwb3coMiwgNSkgKyBnICogcG93
KDIsIDYpICsgaCAqIHBvdygyLCA3KSArIGkgKiBwb3coMiwgOCkgKyBqICogcG93KDIsIDkpICsg
ayAqIHBvdygyLCAxMCkgKyBsICogcG93KDIsIDExKSArIG0gKiBwb3coMiwgMTIpICsgbiAqIHBv
dygyLCAxMykgKyBvICogcG93KDIsIDE0KSArIHAgKiBwb3coMiwgMTUpICsgcSAqIHBvdygyLCAx
NikgKyByICogcG93KDIsIDE3KSArIHMgKiBwb3coMiwgMTgpICsgdCAqIHBvdygyLCAxOSkgKyB1
ICogcG93KDIsIDIwKSArIHYgKiBwb3coMiwgMjEpICsgdyAqIHBvdygyLCAyMikgKyB4ICogcG93
KDIsIDIzKSArIHkgKiBwb3coMiwgMjQpICsgeiAqIHBvdygyLCAyNSk7Cit9CisKK3ZvaWQgdGVz
dENhbGxGdW5jdGlvbldpdGhIZWxsYUZsb2F0QXJndW1lbnRzKCkKK3sKKyAgICBQcm9jZWR1cmUg
cHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgVmVj
dG9yPFZhbHVlKj4gYXJnczsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMjY7ICsraSkK
KyAgICAgICAgYXJncy5hcHBlbmQocm9vdC0+YXBwZW5kTmV3PENvbnN0RmxvYXRWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIGkgKyAxKSk7CisKKyAgICBDQ2FsbFZhbHVlKiBjYWxsID0gcm9vdC0+YXBw
ZW5kTmV3PENDYWxsVmFsdWU+KAorICAgICAgICBwcm9jLCBGbG9hdCwgT3JpZ2luKCksCisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYml0d2lz
ZV9jYXN0PHZvaWQqPihmdW5jdGlvbldpdGhIZWxsYUZsb2F0QXJndW1lbnRzKSkpOworICAgIGNh
bGwtPmNoaWxkcmVuKCkuYXBwZW5kVmVjdG9yKGFyZ3MpOworICAgIAorICAgIHJvb3QtPmFwcGVu
ZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIGNhbGwpOworCisgICAg
Q0hFQ0soY29tcGlsZUFuZFJ1bjxmbG9hdD4ocHJvYykgPT0gZnVuY3Rpb25XaXRoSGVsbGFGbG9h
dEFyZ3VtZW50cygxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQs
IDE1LCAxNiwgMTcsIDE4LCAxOSwgMjAsIDIxLCAyMiwgMjMsIDI0LCAyNSwgMjYpKTsKK30KKwog
dm9pZCB0ZXN0Q2hpbGxEaXYoaW50IG51bSwgaW50IGRlbiwgaW50IHJlcykKIHsKICAgICAvLyBU
ZXN0IG5vbi1jb25zdGFudC4KQEAgLTUzNjcsNiArNjMxMCw3OCBAQCB2b2lkIHRlc3RTZWxlY3RD
b21wYXJlRG91YmxlKCkKICAgICBDSEVDSyhpbnZva2U8aW50cHRyX3Q+KCpjb2RlLCA0Mi41Miwg
NDIuNTIsIDUyNDk3ODI0NSwgMzUyKSA9PSAzNTIpOwogfQogCit0ZW1wbGF0ZTxCMzo6T3Bjb2Rl
IG9wY29kZT4KK3ZvaWQgdGVzdFNlbGVjdENvbXBhcmVGbG9hdChmbG9hdCBhLCBmbG9hdCBiLCBi
b29sICgqb3BlcmF0aW9uKShmbG9hdCwgZmxvYXQpKQoreworICAgIFByb2NlZHVyZSBwcm9jOwor
ICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3Vt
ZW50MWludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCks
CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGFyZ3VtZW50MmludDMyID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIxKSk7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUxID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MWludDMyKTsKKyAg
ICBWYWx1ZSogZmxvYXRWYWx1ZTIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdp
c2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQyaW50MzIpOworCisgICAgcm9vdC0+YXBwZW5kTmV3
PENvbnRyb2xWYWx1ZT4oCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBTZWxlY3QsIE9yaWdp
bigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAg
ICBwcm9jLCBvcGNvZGUsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIGZsb2F0VmFsdWUxLAor
ICAgICAgICAgICAgICAgIGZsb2F0VmFsdWUyKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIy
KSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIzKSkpOworICAgIENIRUNLKGlzSWRlbnRpY2Fs
KGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpLCBi
aXR3aXNlX2Nhc3Q8aW50MzJfdD4oYiksIDQyLCAtNSksIG9wZXJhdGlvbihhLCBiKSA/IDQyIDog
LTUpKTsKK30KKwordm9pZCB0ZXN0U2VsZWN0Q29tcGFyZUZsb2F0KGZsb2F0IGEsIGZsb2F0IGIp
Cit7CisgICAgdGVzdFNlbGVjdENvbXBhcmVGbG9hdDxFcXVhbD4oYSwgYiwgW10oZmxvYXQgYSwg
ZmxvYXQgYikgLT4gYm9vbCB7IHJldHVybiBhID09IGI7IH0pOworICAgIHRlc3RTZWxlY3RDb21w
YXJlRmxvYXQ8Tm90RXF1YWw+KGEsIGIsIFtdKGZsb2F0IGEsIGZsb2F0IGIpIC0+IGJvb2wgeyBy
ZXR1cm4gYSAhPSBiOyB9KTsKKyAgICB0ZXN0U2VsZWN0Q29tcGFyZUZsb2F0PExlc3NUaGFuPihh
LCBiLCBbXShmbG9hdCBhLCBmbG9hdCBiKSAtPiBib29sIHsgcmV0dXJuIGEgPCBiOyB9KTsKKyAg
ICB0ZXN0U2VsZWN0Q29tcGFyZUZsb2F0PEdyZWF0ZXJUaGFuPihhLCBiLCBbXShmbG9hdCBhLCBm
bG9hdCBiKSAtPiBib29sIHsgcmV0dXJuIGEgPiBiOyB9KTsKKyAgICB0ZXN0U2VsZWN0Q29tcGFy
ZUZsb2F0PExlc3NFcXVhbD4oYSwgYiwgW10oZmxvYXQgYSwgZmxvYXQgYikgLT4gYm9vbCB7IHJl
dHVybiBhIDw9IGI7IH0pOworICAgIHRlc3RTZWxlY3RDb21wYXJlRmxvYXQ8R3JlYXRlckVxdWFs
PihhLCBiLCBbXShmbG9hdCBhLCBmbG9hdCBiKSAtPiBib29sIHsgcmV0dXJuIGEgPj0gYjsgfSk7
Cit9CisKK3RlbXBsYXRlPEIzOjpPcGNvZGUgb3Bjb2RlPgordm9pZCB0ZXN0U2VsZWN0Q29tcGFy
ZUZsb2F0VG9Eb3VibGUoZmxvYXQgYSwgZmxvYXQgYiwgYm9vbCAoKm9wZXJhdGlvbikoZmxvYXQs
IGZsb2F0KSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudDFpbnQzMiA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCkpOworICAgIFZhbHVlKiBhcmd1bWVudDJpbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgIFZh
bHVlKiBmbG9hdFZhbHVlMSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNh
c3QsIE9yaWdpbigpLCBhcmd1bWVudDFpbnQzMik7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUyID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3Vt
ZW50MmludDMyKTsKKyAgICBWYWx1ZSogZG91YmxlVmFsdWUxID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBGbG9hdFRvRG91YmxlLCBPcmlnaW4oKSwgZmxvYXRWYWx1ZTEpOworICAgIFZh
bHVlKiBkb3VibGVWYWx1ZTIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9E
b3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlMik7CisKKyAgICByb290LT5hcHBlbmROZXc8Q29u
dHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFNlbGVjdCwgT3JpZ2luKCks
CisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHBy
b2MsIG9wY29kZSwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgZG91YmxlVmFsdWUxLAorICAg
ICAgICAgICAgICAgIGRvdWJsZVZhbHVlMiksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMiks
CisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMykpKTsKKyAgICBDSEVDSyhpc0lkZW50aWNhbChj
b21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSwgYml0
d2lzZV9jYXN0PGludDMyX3Q+KGIpLCA0MiwgLTUpLCBvcGVyYXRpb24oYSwgYikgPyA0MiA6IC01
KSk7Cit9CisKK3ZvaWQgdGVzdFNlbGVjdENvbXBhcmVGbG9hdFRvRG91YmxlKGZsb2F0IGEsIGZs
b2F0IGIpCit7CisgICAgdGVzdFNlbGVjdENvbXBhcmVGbG9hdFRvRG91YmxlPEVxdWFsPihhLCBi
LCBbXShmbG9hdCBhLCBmbG9hdCBiKSAtPiBib29sIHsgcmV0dXJuIGEgPT0gYjsgfSk7CisgICAg
dGVzdFNlbGVjdENvbXBhcmVGbG9hdFRvRG91YmxlPE5vdEVxdWFsPihhLCBiLCBbXShmbG9hdCBh
LCBmbG9hdCBiKSAtPiBib29sIHsgcmV0dXJuIGEgIT0gYjsgfSk7CisgICAgdGVzdFNlbGVjdENv
bXBhcmVGbG9hdFRvRG91YmxlPExlc3NUaGFuPihhLCBiLCBbXShmbG9hdCBhLCBmbG9hdCBiKSAt
PiBib29sIHsgcmV0dXJuIGEgPCBiOyB9KTsKKyAgICB0ZXN0U2VsZWN0Q29tcGFyZUZsb2F0VG9E
b3VibGU8R3JlYXRlclRoYW4+KGEsIGIsIFtdKGZsb2F0IGEsIGZsb2F0IGIpIC0+IGJvb2wgeyBy
ZXR1cm4gYSA+IGI7IH0pOworICAgIHRlc3RTZWxlY3RDb21wYXJlRmxvYXRUb0RvdWJsZTxMZXNz
RXF1YWw+KGEsIGIsIFtdKGZsb2F0IGEsIGZsb2F0IGIpIC0+IGJvb2wgeyByZXR1cm4gYSA8PSBi
OyB9KTsKKyAgICB0ZXN0U2VsZWN0Q29tcGFyZUZsb2F0VG9Eb3VibGU8R3JlYXRlckVxdWFsPihh
LCBiLCBbXShmbG9hdCBhLCBmbG9hdCBiKSAtPiBib29sIHsgcmV0dXJuIGEgPj0gYjsgfSk7Cit9
CisKIHZvaWQgdGVzdFNlbGVjdERvdWJsZSgpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CkBAIC01
NDMxLDYgKzY0NDYsNjIgQEAgdm9pZCB0ZXN0U2VsZWN0RG91YmxlQ29tcGFyZURvdWJsZSgpCiAg
ICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDQyLjUyLCA0Mi41MiwgNTI0OTc4MjQ1Ljks
IDM1Mi4wKSA9PSAzNTIuMCk7CiB9CiAKK3ZvaWQgdGVzdFNlbGVjdERvdWJsZUNvbXBhcmVGbG9h
dChmbG9hdCBhLCBmbG9hdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MWludDMyID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGFyZ3VtZW50MmludDMyID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIx
KSk7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUxID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MWludDMyKTsKKyAgICBWYWx1ZSogZmxv
YXRWYWx1ZTIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmln
aW4oKSwgYXJndW1lbnQyaW50MzIpOworCisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1
ZT4oCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBTZWxlY3QsIE9yaWdpbigpLAorICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBMZXNz
VGhhbiwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgZmxvYXRWYWx1ZTEsCisgICAgICAgICAg
ICAgICAgZmxvYXRWYWx1ZTIpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApLAorICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBG
UFJJbmZvOjphcmd1bWVudEZQUjEpKSk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxl
QW5kUnVuPGRvdWJsZT4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpLCBiaXR3aXNlX2Nh
c3Q8aW50MzJfdD4oYiksIDQyLjEsIC1NX1BJKSwgYSA8IGIgPyA0Mi4xIDogLU1fUEkpKTsKK30K
Kwordm9pZCB0ZXN0U2VsZWN0RmxvYXRDb21wYXJlRmxvYXQoZmxvYXQgYSwgZmxvYXQgYikKK3sK
KyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOworICAgIFZhbHVlKiBhcmd1bWVudDFpbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZh
bHVlKiBhcmd1bWVudDJpbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMs
IE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOworICAgIFZhbHVlKiBhcmd1bWVu
dDNpbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAor
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMikpOworICAgIFZhbHVlKiBhcmd1bWVudDRpbnQzMiA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMykpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlMSA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDFpbnQzMik7CisgICAg
VmFsdWUqIGZsb2F0VmFsdWUyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNl
Q2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MmludDMyKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1ZTMg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJn
dW1lbnQzaW50MzIpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlNCA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDRpbnQzMik7CisKKyAg
ICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHBy
b2MsIFNlbGVjdCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KAorICAgICAgICAgICAgICAgIHByb2MsIExlc3NUaGFuLCBPcmlnaW4oKSwKKyAgICAgICAgICAg
ICAgICBmbG9hdFZhbHVlMSwKKyAgICAgICAgICAgICAgICBmbG9hdFZhbHVlMiksCisgICAgICAg
ICAgICBmbG9hdFZhbHVlMywKKyAgICAgICAgICAgIGZsb2F0VmFsdWU0KSk7CisKKyAgICBDSEVD
Syhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGZsb2F0Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50
MzJfdD4oYSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihiKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+
KDEuMWYpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oLTQyLmYpKSwgYSA8IGIgPyAxLjFmIDogLTQy
LmYpKTsKK30KKwogdm9pZCB0ZXN0U2VsZWN0Rm9sZChpbnRwdHJfdCB2YWx1ZSkKIHsKICAgICBQ
cm9jZWR1cmUgcHJvYzsKQEAgLTU0ODcsNDcgKzY1NTgsNDcgQEAgZG91YmxlIG5lZ2F0aXZlWmVy
bygpCiAgICAgcmV0dXJuIC16ZXJvKCk7CiB9CiAKLS8vIFNvbWUgY29udmVuaWVuY2UgZnVuY3Rp
b25zIGZvciBicmV2aXR5IG9mIHRoZSB0ZXN0IG91dHB1dC4KLWRvdWJsZSBwb3NJbmZpbml0eSgp
Ci17Ci0gICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKTsK
LX0KLQotZG91YmxlIG5lZ0luZmluaXR5KCkKLXsKLSAgICByZXR1cm4gLXN0ZDo6bnVtZXJpY19s
aW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKTsKLX0KLQogdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4K
IHN0cnVjdCBPcGVyYW5kIHsKICAgICBjb25zdCBjaGFyKiBuYW1lOwogICAgIFR5cGUgdmFsdWU7
CiB9OwogCi10eXBlZGVmIE9wZXJhbmQ8ZG91YmxlPiBEb3VibGVPcGVyYW5kOwogdHlwZWRlZiBP
cGVyYW5kPGludDY0X3Q+IEludDY0T3BlcmFuZDsKIHR5cGVkZWYgT3BlcmFuZDxpbnQzMl90PiBJ
bnQzMk9wZXJhbmQ7CiAKLXN0YXRpYyBjb25zdCBzdGQ6OmFycmF5PERvdWJsZU9wZXJhbmQsIDk+
JiBkb3VibGVPcGVyYW5kcygpCi17Ci0gICAgc3RhdGljIGNvbnN0IHN0ZDo6YXJyYXk8RG91Ymxl
T3BlcmFuZCwgOT4gb3BlcmFuZHMgPSB7ewotICAgICAgICB7ICJNX1BJIiwgTV9QSSB9LAotICAg
ICAgICB7ICItTV9QSSIsIC1NX1BJIH0sCi0gICAgICAgIHsgIjEuIiwgMSB9LAotICAgICAgICB7
ICItMS4iLCAtMSB9LAotICAgICAgICB7ICIwIiwgMCB9LAotICAgICAgICB7ICJuZWdhdGl2ZVpl
cm8oKSIsIG5lZ2F0aXZlWmVybygpIH0sCi0gICAgICAgIHsgInBvc0luZmluaXR5KCkiLCBwb3NJ
bmZpbml0eSgpIH0sCi0gICAgICAgIHsgIm5lZ0luZmluaXR5KCkiLCBuZWdJbmZpbml0eSgpIH0s
Ci0gICAgICAgIHsgIlBOYU4iLCBQTmFOIH0sCi0gICAgfX07Cit0ZW1wbGF0ZTx0eXBlbmFtZSBG
bG9hdFR5cGU+Cit2b2lkIHBvcHVsYXRlV2l0aEludGVyZXN0aW5nVmFsdWVzKFZlY3RvcjxPcGVy
YW5kPEZsb2F0VHlwZT4+JiBvcGVyYW5kcykKK3sKKyAgICBvcGVyYW5kcy5hcHBlbmQoeyAiMC4i
LCBzdGF0aWNfY2FzdDxGbG9hdFR5cGU+KDAuKSB9KTsKKyAgICBvcGVyYW5kcy5hcHBlbmQoeyAi
LTAuIiwgc3RhdGljX2Nhc3Q8RmxvYXRUeXBlPigtMC4pIH0pOworICAgIG9wZXJhbmRzLmFwcGVu
ZCh7ICIxLiIsIHN0YXRpY19jYXN0PEZsb2F0VHlwZT4oMC4pIH0pOworICAgIG9wZXJhbmRzLmFw
cGVuZCh7ICItMS4iLCBzdGF0aWNfY2FzdDxGbG9hdFR5cGU+KC0wLikgfSk7CisgICAgb3BlcmFu
ZHMuYXBwZW5kKHsgIjIuIiwgc3RhdGljX2Nhc3Q8RmxvYXRUeXBlPigyLikgfSk7CisgICAgb3Bl
cmFuZHMuYXBwZW5kKHsgIi0yLiIsIHN0YXRpY19jYXN0PEZsb2F0VHlwZT4oMi4pIH0pOworICAg
IG9wZXJhbmRzLmFwcGVuZCh7ICJNX1BJIiwgc3RhdGljX2Nhc3Q8RmxvYXRUeXBlPihNX1BJKSB9
KTsKKyAgICBvcGVyYW5kcy5hcHBlbmQoeyAiLU1fUEkiLCBzdGF0aWNfY2FzdDxGbG9hdFR5cGU+
KC1NX1BJKSB9KTsKKyAgICBvcGVyYW5kcy5hcHBlbmQoeyAibWluIiwgc3RkOjpudW1lcmljX2xp
bWl0czxGbG9hdFR5cGU+OjptaW4oKSB9KTsKKyAgICBvcGVyYW5kcy5hcHBlbmQoeyAibWF4Iiwg
c3RkOjpudW1lcmljX2xpbWl0czxGbG9hdFR5cGU+OjptYXgoKSB9KTsKKyAgICBvcGVyYW5kcy5h
cHBlbmQoeyAibG93ZXN0Iiwgc3RkOjpudW1lcmljX2xpbWl0czxGbG9hdFR5cGU+Ojpsb3dlc3Qo
KSB9KTsKKyAgICBvcGVyYW5kcy5hcHBlbmQoeyAiZXBzaWxvbiIsIHN0ZDo6bnVtZXJpY19saW1p
dHM8RmxvYXRUeXBlPjo6ZXBzaWxvbigpIH0pOworICAgIG9wZXJhbmRzLmFwcGVuZCh7ICJpbmZp
bml0aSIsIHN0ZDo6bnVtZXJpY19saW1pdHM8RmxvYXRUeXBlPjo6aW5maW5pdHkoKSB9KTsKKyAg
ICBvcGVyYW5kcy5hcHBlbmQoeyAiLWluZmluaXRpIiwgLSBzdGQ6Om51bWVyaWNfbGltaXRzPEZs
b2F0VHlwZT46OmluZmluaXR5KCkgfSk7CisgICAgb3BlcmFuZHMuYXBwZW5kKHsgIlBOYU4iLCBz
dGF0aWNfY2FzdDxGbG9hdFR5cGU+KFBOYU4pIH0pOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBG
bG9hdFR5cGU+CitWZWN0b3I8T3BlcmFuZDxGbG9hdFR5cGU+PiBmbG9hdGluZ1BvaW50T3BlcmFu
ZHMoKQoreworICAgIFZlY3RvcjxPcGVyYW5kPEZsb2F0VHlwZT4+IG9wZXJhbmRzOworICAgIHBv
cHVsYXRlV2l0aEludGVyZXN0aW5nVmFsdWVzKG9wZXJhbmRzKTsKICAgICByZXR1cm4gb3BlcmFu
ZHM7CiB9OwogCiBzdGF0aWMgVmVjdG9yPEludDY0T3BlcmFuZD4gaW50NjRPcGVyYW5kcygpCiB7
CiAgICAgVmVjdG9yPEludDY0T3BlcmFuZD4gb3BlcmFuZHM7Ci0gICAgZm9yIChEb3VibGVPcGVy
YW5kIGRvdWJsZU9wZXJhbmQgOiBkb3VibGVPcGVyYW5kcygpKQorICAgIGZvciAoY29uc3QgYXV0
byYgZG91YmxlT3BlcmFuZCA6IGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpCiAgICAg
ICAgIG9wZXJhbmRzLmFwcGVuZCh7IGRvdWJsZU9wZXJhbmQubmFtZSwgYml0d2lzZV9jYXN0PGlu
dDY0X3Q+KGRvdWJsZU9wZXJhbmQudmFsdWUpIH0pOwogICAgIG9wZXJhbmRzLmFwcGVuZCh7ICIx
IiwgMSB9KTsKICAgICBvcGVyYW5kcy5hcHBlbmQoeyAiLTEiLCAtMSB9KTsKQEAgLTU2NDYsNiAr
NjcxNywxNCBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgUlVOKHRlc3RBZGRJ
bW1zRG91YmxlKDAsIDApKTsKICAgICBSVU4odGVzdEFkZEltbXNEb3VibGUoMCwgbmVnYXRpdmVa
ZXJvKCkpKTsKICAgICBSVU4odGVzdEFkZEltbXNEb3VibGUobmVnYXRpdmVaZXJvKCksIG5lZ2F0
aXZlWmVybygpKSk7CisgICAgUlVOX1VOQVJZKHRlc3RBZGRBcmdGbG9hdCwgZmxvYXRpbmdQb2lu
dE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RBZGRBcmdzRmxvYXQsIGZs
b2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0
PigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RBZGRBcmdJbW1GbG9hdCwgZmxvYXRpbmdQb2ludE9w
ZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJV
Tl9CSU5BUlkodGVzdEFkZEltbUFyZ0Zsb2F0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+
KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0
QWRkSW1tc0Zsb2F0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9p
bnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RBZGRBcmdGbG9hdFdpdGhV
c2VsZXNzRG91YmxlQ29udmVyc2lvbiwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsK
KyAgICBSVU5fQklOQVJZKHRlc3RBZGRBcmdzRmxvYXRXaXRoVXNlbGVzc0RvdWJsZUNvbnZlcnNp
b24sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRz
PGZsb2F0PigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RBZGRBcmdzRmxvYXRXaXRoRWZmZWN0ZnVs
RG91YmxlQ29udmVyc2lvbiwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGlu
Z1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwogCiAgICAgUlVOKHRlc3RNdWxBcmcoNSkpOwogICAg
IFJVTih0ZXN0TXVsQWRkQXJnKDUpKTsKQEAgLTU2ODcsMTEgKzY3NjYsMTkgQEAgdm9pZCBydW4o
Y29uc3QgY2hhciogZmlsdGVyKQogICAgIFJVTih0ZXN0TXVsQXJnczMyKDEsIDIpKTsKICAgICBS
VU4odGVzdE11bExvYWRUd2ljZSgpKTsKIAotICAgIFJVTl9VTkFSWSh0ZXN0TXVsQXJnRG91Ymxl
LCBkb3VibGVPcGVyYW5kcygpKTsKLSAgICBSVU5fQklOQVJZKHRlc3RNdWxBcmdzRG91YmxlLCBk
b3VibGVPcGVyYW5kcygpLCBkb3VibGVPcGVyYW5kcygpKTsKLSAgICBSVU5fQklOQVJZKHRlc3RN
dWxBcmdJbW1Eb3VibGUsIGRvdWJsZU9wZXJhbmRzKCksIGRvdWJsZU9wZXJhbmRzKCkpOwotICAg
IFJVTl9CSU5BUlkodGVzdE11bEltbUFyZ0RvdWJsZSwgZG91YmxlT3BlcmFuZHMoKSwgZG91Ymxl
T3BlcmFuZHMoKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0TXVsSW1tc0RvdWJsZSwgZG91YmxlT3Bl
cmFuZHMoKSwgZG91YmxlT3BlcmFuZHMoKSk7CisgICAgUlVOX1VOQVJZKHRlc3RNdWxBcmdEb3Vi
bGUsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworICAgIFJVTl9CSU5BUlkodGVz
dE11bEFyZ3NEb3VibGUsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCksIGZsb2F0aW5n
UG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworICAgIFJVTl9CSU5BUlkodGVzdE11bEFyZ0ltbURv
dWJsZSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSwgZmxvYXRpbmdQb2ludE9wZXJh
bmRzPGRvdWJsZT4oKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0TXVsSW1tQXJnRG91YmxlLCBmbG9h
dGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91Ymxl
PigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RNdWxJbW1zRG91YmxlLCBmbG9hdGluZ1BvaW50T3Bl
cmFuZHM8ZG91YmxlPigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKKyAgICBS
VU5fVU5BUlkodGVzdE11bEFyZ0Zsb2F0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkp
OworICAgIFJVTl9CSU5BUlkodGVzdE11bEFyZ3NGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRz
PGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9CSU5B
UlkodGVzdE11bEFyZ0ltbUZsb2F0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZs
b2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0TXVsSW1t
QXJnRmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwgZmxvYXRpbmdQb2ludE9w
ZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RNdWxJbW1zRmxvYXQsIGZsb2F0
aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0Pigp
KTsKKyAgICBSVU5fVU5BUlkodGVzdE11bEFyZ0Zsb2F0V2l0aFVzZWxlc3NEb3VibGVDb252ZXJz
aW9uLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9CSU5BUlkodGVz
dE11bEFyZ3NGbG9hdFdpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lvbiwgZmxvYXRpbmdQb2ludE9w
ZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJV
Tl9CSU5BUlkodGVzdE11bEFyZ3NGbG9hdFdpdGhFZmZlY3RmdWxEb3VibGVDb252ZXJzaW9uLCBm
bG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9h
dD4oKSk7CiAKICAgICBSVU4odGVzdERpdkFyZ0RvdWJsZShNX1BJKSk7CiAgICAgUlVOKHRlc3RE
aXZBcmdzRG91YmxlKE1fUEksIDEpKTsKQEAgLTU3MTYsNiArNjgwMywxNCBAQCB2b2lkIHJ1bihj
b25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgUlVOKHRlc3REaXZJbW1zRG91YmxlKDAsIDApKTsKICAg
ICBSVU4odGVzdERpdkltbXNEb3VibGUoMCwgbmVnYXRpdmVaZXJvKCkpKTsKICAgICBSVU4odGVz
dERpdkltbXNEb3VibGUobmVnYXRpdmVaZXJvKCksIG5lZ2F0aXZlWmVybygpKSk7CisgICAgUlVO
X1VOQVJZKHRlc3REaXZBcmdGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsK
KyAgICBSVU5fQklOQVJZKHRlc3REaXZBcmdzRmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxm
bG9hdD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fQklOQVJZ
KHRlc3REaXZBcmdJbW1GbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9h
dGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9CSU5BUlkodGVzdERpdkltbUFy
Z0Zsb2F0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVy
YW5kczxmbG9hdD4oKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0RGl2SW1tc0Zsb2F0LCBmbG9hdGlu
Z1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7
CisgICAgUlVOX1VOQVJZKHRlc3REaXZBcmdGbG9hdFdpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lv
biwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RE
aXZBcmdzRmxvYXRXaXRoVXNlbGVzc0RvdWJsZUNvbnZlcnNpb24sIGZsb2F0aW5nUG9pbnRPcGVy
YW5kczxmbG9hdD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5f
QklOQVJZKHRlc3REaXZBcmdzRmxvYXRXaXRoRWZmZWN0ZnVsRG91YmxlQ29udmVyc2lvbiwgZmxv
YXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+
KCkpOwogCiAgICAgUlVOKHRlc3RTdWJBcmcoMjQpKTsKICAgICBSVU4odGVzdFN1YkFyZ3MoMSwg
MSkpOwpAQCAtNTc0NywxMSArNjg0MiwxOSBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIp
CiAgICAgUlVOKHRlc3RTdWJJbW1BcmczMigtMTMsIDQyKSk7CiAgICAgUlVOX1VOQVJZKHRlc3RO
ZWdWYWx1ZVN1Yk9uZTMyLCBpbnQ2NE9wZXJhbmRzKCkpOwogCi0gICAgUlVOX1VOQVJZKHRlc3RT
dWJBcmdEb3VibGUsIGRvdWJsZU9wZXJhbmRzKCkpOwotICAgIFJVTl9CSU5BUlkodGVzdFN1YkFy
Z3NEb3VibGUsIGRvdWJsZU9wZXJhbmRzKCksIGRvdWJsZU9wZXJhbmRzKCkpOwotICAgIFJVTl9C
SU5BUlkodGVzdFN1YkFyZ0ltbURvdWJsZSwgZG91YmxlT3BlcmFuZHMoKSwgZG91YmxlT3BlcmFu
ZHMoKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0U3ViSW1tQXJnRG91YmxlLCBkb3VibGVPcGVyYW5k
cygpLCBkb3VibGVPcGVyYW5kcygpKTsKLSAgICBSVU5fQklOQVJZKHRlc3RTdWJJbW1zRG91Ymxl
LCBkb3VibGVPcGVyYW5kcygpLCBkb3VibGVPcGVyYW5kcygpKTsKKyAgICBSVU5fVU5BUlkodGVz
dFN1YkFyZ0RvdWJsZSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7CisgICAgUlVO
X0JJTkFSWSh0ZXN0U3ViQXJnc0RvdWJsZSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4o
KSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0
U3ViQXJnSW1tRG91YmxlLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpLCBmbG9hdGlu
Z1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RTdWJJbW1BcmdE
b3VibGUsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCksIGZsb2F0aW5nUG9pbnRPcGVy
YW5kczxkb3VibGU+KCkpOworICAgIFJVTl9CSU5BUlkodGVzdFN1YkltbXNEb3VibGUsIGZsb2F0
aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+
KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0U3ViQXJnRmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5k
czxmbG9hdD4oKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0U3ViQXJnc0Zsb2F0LCBmbG9hdGluZ1Bv
aW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7Cisg
ICAgUlVOX0JJTkFSWSh0ZXN0U3ViQXJnSW1tRmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxm
bG9hdD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fQklOQVJZ
KHRlc3RTdWJJbW1BcmdGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9h
dGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9CSU5BUlkodGVzdFN1YkltbXNG
bG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3BlcmFu
ZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0U3ViQXJnRmxvYXRXaXRoVXNlbGVzc0Rv
dWJsZUNvbnZlcnNpb24sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVO
X0JJTkFSWSh0ZXN0U3ViQXJnc0Zsb2F0V2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uLCBmbG9h
dGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4o
KSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0U3ViQXJnc0Zsb2F0V2l0aEVmZmVjdGZ1bERvdWJsZUNv
bnZlcnNpb24sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwgZmxvYXRpbmdQb2ludE9w
ZXJhbmRzPGZsb2F0PigpKTsKIAogICAgIFJVTih0ZXN0Qml0QW5kQXJncyg0MywgNDMpKTsKICAg
ICBSVU4odGVzdEJpdEFuZEFyZ3MoNDMsIDApKTsKQEAgLTYwMzcsMjAgKzcxNDAsNDMgQEAgdm9p
ZCBydW4oY29uc3QgY2hhciogZmlsdGVyKQogICAgIFJVTl9VTkFSWSh0ZXN0Q2x6QXJnMzIsIGlu
dDMyT3BlcmFuZHMoKSk7CiAgICAgUlVOX1VOQVJZKHRlc3RDbHpNZW0zMiwgaW50NjRPcGVyYW5k
cygpKTsKIAotICAgIFJVTl9VTkFSWSh0ZXN0U3FydEFyZywgZG91YmxlT3BlcmFuZHMoKSk7Ci0g
ICAgUlVOX1VOQVJZKHRlc3RTcXJ0SW1tLCBkb3VibGVPcGVyYW5kcygpKTsKLSAgICBSVU5fVU5B
UlkodGVzdFNxcnRNZW0sIGRvdWJsZU9wZXJhbmRzKCkpOwotCi0gICAgUlVOX1VOQVJZKHRlc3RE
b3VibGVBcmdUb0ludDY0Qml0d2lzZUNhc3QsIGRvdWJsZU9wZXJhbmRzKCkpOwotICAgIFJVTl9V
TkFSWSh0ZXN0RG91YmxlSW1tVG9JbnQ2NEJpdHdpc2VDYXN0LCBkb3VibGVPcGVyYW5kcygpKTsK
LSAgICBSVU5fVU5BUlkodGVzdFR3b0JpdHdpc2VDYXN0T25Eb3VibGUsIGRvdWJsZU9wZXJhbmRz
KCkpOwotICAgIFJVTl9VTkFSWSh0ZXN0Qml0d2lzZUNhc3RPbkRvdWJsZUluTWVtb3J5LCBkb3Vi
bGVPcGVyYW5kcygpKTsKKyAgICBSVU5fVU5BUlkodGVzdFNxcnRBcmcsIGZsb2F0aW5nUG9pbnRP
cGVyYW5kczxkb3VibGU+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0U3FydEltbSwgZmxvYXRpbmdQ
b2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RTcXJ0TWVtLCBmbG9h
dGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKKyAgICBSVU5fVU5BUlkodGVzdFNxcnRBcmcs
IGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RTcXJ0
SW1tLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0
U3FydE1lbSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fVU5BUlko
dGVzdFNxcnRBcmdXaXRoVXNlbGVzc0RvdWJsZUNvbnZlcnNpb24sIGZsb2F0aW5nUG9pbnRPcGVy
YW5kczxmbG9hdD4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RTcXJ0QXJnV2l0aEVmZmVjdGZ1bERv
dWJsZUNvbnZlcnNpb24sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisKKyAgICBS
VU5fVU5BUlkodGVzdERvdWJsZUFyZ1RvSW50NjRCaXR3aXNlQ2FzdCwgZmxvYXRpbmdQb2ludE9w
ZXJhbmRzPGRvdWJsZT4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3REb3VibGVJbW1Ub0ludDY0Qml0
d2lzZUNhc3QsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworICAgIFJVTl9VTkFS
WSh0ZXN0VHdvQml0d2lzZUNhc3RPbkRvdWJsZSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJs
ZT4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RCaXR3aXNlQ2FzdE9uRG91YmxlSW5NZW1vcnksIGZs
b2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOwogICAgIFJVTl9VTkFSWSh0ZXN0SW50NjRC
QXJnVG9Eb3VibGVCaXR3aXNlQ2FzdCwgaW50NjRPcGVyYW5kcygpKTsKICAgICBSVU5fVU5BUlko
dGVzdEludDY0QkltbVRvRG91YmxlQml0d2lzZUNhc3QsIGludDY0T3BlcmFuZHMoKSk7CiAgICAg
UlVOX1VOQVJZKHRlc3RUd29CaXR3aXNlQ2FzdE9uSW50NjQsIGludDY0T3BlcmFuZHMoKSk7CiAg
ICAgUlVOX1VOQVJZKHRlc3RCaXR3aXNlQ2FzdE9uSW50NjRJbk1lbW9yeSwgaW50NjRPcGVyYW5k
cygpKTsKLQotICAgIFJVTih0ZXN0U3RvcmUoNDQpKTsKKyAgICBSVU5fVU5BUlkodGVzdEZsb2F0
SW1tVG9JbnQzMkJpdHdpc2VDYXN0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwor
ICAgIFJVTl9VTkFSWSh0ZXN0Qml0d2lzZUNhc3RPbkZsb2F0SW5NZW1vcnksIGZsb2F0aW5nUG9p
bnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RJbnQzMkJBcmdUb0Zsb2F0
Qml0d2lzZUNhc3QsIGludDMyT3BlcmFuZHMoKSk7CisgICAgUlVOX1VOQVJZKHRlc3RJbnQzMkJJ
bW1Ub0Zsb2F0Qml0d2lzZUNhc3QsIGludDMyT3BlcmFuZHMoKSk7CisgICAgUlVOX1VOQVJZKHRl
c3RUd29CaXR3aXNlQ2FzdE9uSW50MzIsIGludDMyT3BlcmFuZHMoKSk7CisgICAgUlVOX1VOQVJZ
KHRlc3RCaXR3aXNlQ2FzdE9uSW50MzJJbk1lbW9yeSwgaW50MzJPcGVyYW5kcygpKTsKKworICAg
IFJVTl9VTkFSWSh0ZXN0Q29udmVydERvdWJsZVRvRmxvYXRBcmcsIGZsb2F0aW5nUG9pbnRPcGVy
YW5kczxkb3VibGU+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0Q29udmVydERvdWJsZVRvRmxvYXRJ
bW0sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0
Q29udmVydERvdWJsZVRvRmxvYXRNZW0sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkp
OworICAgIFJVTl9VTkFSWSh0ZXN0Q29udmVydEZsb2F0VG9Eb3VibGVBcmcsIGZsb2F0aW5nUG9p
bnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RDb252ZXJ0RmxvYXRUb0Rv
dWJsZUltbSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fVU5BUlko
dGVzdENvbnZlcnRGbG9hdFRvRG91YmxlTWVtLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+
KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0Q29udmVydERvdWJsZVRvRmxvYXRUb0RvdWJsZVRvRmxv
YXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0
U3RvcmVGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7CisgICAgUlVOX1VO
QVJZKHRlc3RMb2FkRmxvYXRDb252ZXJ0RG91YmxlQ29udmVydEZsb2F0U3RvcmVGbG9hdCwgZmxv
YXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fVU5BUlkodGVzdEZyb3VuZEFy
ZywgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RG
cm91bmRNZW0sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworCisgICAgUlVOKHRl
c3RTdG9yZTMyKDQ0KSk7CiAgICAgUlVOKHRlc3RTdG9yZUNvbnN0YW50KDQ5KSk7CiAgICAgUlVO
KHRlc3RTdG9yZUNvbnN0YW50UHRyKDQ5KSk7CiAgICAgUlVOKHRlc3RUcnVuYygoc3RhdGljX2Nh
c3Q8aW50NjRfdD4oMSkgPDwgNDApICsgNDIpKTsKQEAgLTYxNjQsMTQgKzcyOTAsMTcgQEAgdm9p
ZCBydW4oY29uc3QgY2hhciogZmlsdGVyKQogICAgIFJVTih0ZXN0Q29tcGFyZShCaXRBbmQsIDQy
LCA0MikpOwogICAgIFJVTih0ZXN0Q29tcGFyZShCaXRBbmQsIDQyLCAwKSk7CiAKLSAgICBSVU4o
dGVzdExvYWQ8aW50MzJfdD4oTG9hZCwgNjApKTsKLSAgICBSVU4odGVzdExvYWQ8aW50MzJfdD4o
TG9hZCwgLTYwKSk7Ci0gICAgUlVOKHRlc3RMb2FkPGludDMyX3Q+KExvYWQsIDEwMDApKTsKLSAg
ICBSVU4odGVzdExvYWQ8aW50MzJfdD4oTG9hZCwgLTEwMDApKTsKLSAgICBSVU4odGVzdExvYWQ8
aW50MzJfdD4oTG9hZCwgMTAwMDAwMCkpOwotICAgIFJVTih0ZXN0TG9hZDxpbnQzMl90PihMb2Fk
LCAtMTAwMDAwMCkpOwotICAgIFJVTih0ZXN0TG9hZDxpbnQzMl90PihMb2FkLCAxMDAwMDAwMDAw
KSk7Ci0gICAgUlVOKHRlc3RMb2FkPGludDMyX3Q+KExvYWQsIC0xMDAwMDAwMDAwKSk7CisgICAg
UlVOKHRlc3RMb2FkPEludDMyPig2MCkpOworICAgIFJVTih0ZXN0TG9hZDxJbnQzMj4oLTYwKSk7
CisgICAgUlVOKHRlc3RMb2FkPEludDMyPigxMDAwKSk7CisgICAgUlVOKHRlc3RMb2FkPEludDMy
PigtMTAwMCkpOworICAgIFJVTih0ZXN0TG9hZDxJbnQzMj4oMTAwMDAwMCkpOworICAgIFJVTih0
ZXN0TG9hZDxJbnQzMj4oLTEwMDAwMDApKTsKKyAgICBSVU4odGVzdExvYWQ8SW50MzI+KDEwMDAw
MDAwMDApKTsKKyAgICBSVU4odGVzdExvYWQ8SW50MzI+KC0xMDAwMDAwMDAwKSk7CisgICAgUlVO
X1VOQVJZKHRlc3RMb2FkPEludDY0PiwgaW50NjRPcGVyYW5kcygpKTsKKyAgICBSVU5fVU5BUlko
dGVzdExvYWQ8RmxvYXQ+LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJV
Tl9VTkFSWSh0ZXN0TG9hZDxEb3VibGU+LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigp
KTsKICAgICAKICAgICBSVU4odGVzdExvYWQ8aW50OF90PihMb2FkOFMsIDYwKSk7CiAgICAgUlVO
KHRlc3RMb2FkPGludDhfdD4oTG9hZDhTLCAtNjApKTsKQEAgLTYyMjIsOSArNzM1MSwxMiBAQCB2
b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgUlVOKHRlc3RSZXR1cm5Eb3VibGUoMC4w
KSk7CiAgICAgUlVOKHRlc3RSZXR1cm5Eb3VibGUobmVnYXRpdmVaZXJvKCkpKTsKICAgICBSVU4o
dGVzdFJldHVybkRvdWJsZSg0Mi41KSk7CisgICAgUlVOX1VOQVJZKHRlc3RSZXR1cm5GbG9hdCwg
ZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKIAogICAgIFJVTih0ZXN0Q2FsbFNpbXBs
ZURvdWJsZSgxLCAyKSk7CiAgICAgUlVOKHRlc3RDYWxsRnVuY3Rpb25XaXRoSGVsbGFEb3VibGVB
cmd1bWVudHMoKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0Q2FsbFNpbXBsZUZsb2F0LCBmbG9hdGlu
Z1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7
CisgICAgUlVOKHRlc3RDYWxsRnVuY3Rpb25XaXRoSGVsbGFGbG9hdEFyZ3VtZW50cygpKTsKIAog
ICAgIFJVTih0ZXN0Q2hpbGxEaXYoNCwgMiwgMikpOwogICAgIFJVTih0ZXN0Q2hpbGxEaXYoMSwg
MCwgMCkpOwpAQCAtNjMxMSw5ICs3NDQzLDEzIEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRl
cikKICAgICBSVU4odGVzdEJhc2ljU2VsZWN0KCkpOwogICAgIFJVTih0ZXN0U2VsZWN0VGVzdCgp
KTsKICAgICBSVU4odGVzdFNlbGVjdENvbXBhcmVEb3VibGUoKSk7CisgICAgUlVOX0JJTkFSWSh0
ZXN0U2VsZWN0Q29tcGFyZUZsb2F0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZs
b2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0U2VsZWN0
Q29tcGFyZUZsb2F0VG9Eb3VibGUsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwgZmxv
YXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKICAgICBSVU4odGVzdFNlbGVjdERvdWJsZSgp
KTsKICAgICBSVU4odGVzdFNlbGVjdERvdWJsZVRlc3QoKSk7CiAgICAgUlVOKHRlc3RTZWxlY3RE
b3VibGVDb21wYXJlRG91YmxlKCkpOworICAgIFJVTl9CSU5BUlkodGVzdFNlbGVjdERvdWJsZUNv
bXBhcmVGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50
T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9CSU5BUlkodGVzdFNlbGVjdEZsb2F0Q29tcGFy
ZUZsb2F0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVy
YW5kczxmbG9hdD4oKSk7CiAgICAgUlVOKHRlc3RTZWxlY3RGb2xkKDQyKSk7CiAgICAgUlVOKHRl
c3RTZWxlY3RGb2xkKDQzKSk7CiAgICAgUlVOKHRlc3RTZWxlY3RJbnZlcnQoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEIzT3V0cHV0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQjNPdXRwdXQuY3BwCmluZGV4IDUxY2ExMjE2MjI1Yzk3YjZh
OTIwNzM1YjE4ZDQ5YWU1ZGEzMDA4ZDEuLjVlZmM2N2RlMTlmMzY0ZDc3YTIwOGFkNWM4OGIxNGQw
NTVkNzYzMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQjNPdXRw
dXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQjNPdXRwdXQuY3BwCkBA
IC05OSw5ICs5OSw4IEBAIExWYWx1ZSBPdXRwdXQ6OmxvYWQxNlplcm9FeHQzMihUeXBlZFBvaW50
ZXIgcG9pbnRlcikKIAogTFZhbHVlIE91dHB1dDo6bG9hZEZsb2F0VG9Eb3VibGUoVHlwZWRQb2lu
dGVyIHBvaW50ZXIpCiB7Ci0gICAgTFZhbHVlIGxvYWQgPSBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6
Ok1lbW9yeVZhbHVlPihtX3Byb2MsIEIzOjpMb2FkRmxvYXQsIEIzOjpEb3VibGUsIG9yaWdpbigp
LCBwb2ludGVyLnZhbHVlKCkpOwotICAgIHBvaW50ZXIuaGVhcCgpLmRlY29yYXRlSW5zdHJ1Y3Rp
b24obG9hZCwgKm1faGVhcHMpOwotICAgIHJldHVybiBsb2FkOworICAgIExWYWx1ZSBsb2FkZWRG
bG9hdCA9IGxvYWQocG9pbnRlciwgZmxvYXRUeXBlKTsKKyAgICByZXR1cm4gbV9ibG9jay0+YXBw
ZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6RmxvYXRUb0RvdWJsZSwgb3JpZ2luKCksIGxv
YWRlZEZsb2F0KTsKIH0KIAogdm9pZCBPdXRwdXQ6OnN0b3JlKExWYWx1ZSB2YWx1ZSwgVHlwZWRQ
b2ludGVyIHBvaW50ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TEIzT3V0cHV0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEIzT3V0cHV0LmgKaW5k
ZXggMWM0MDhhOTM4Yzg3YTc1NzYwNWE2ZDQ0NGJlOGUwZmE2M2JhODhhMi4uZGMyN2RhYzE1OTE0
YjkwNTg2YzllM2I0YTY1N2UwMmE0MjgzNTAyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExCM091dHB1dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQjNPdXRwdXQuaApAQCAtMTk4LDggKzE5OCw3IEBAIHB1YmxpYzoKICAgICBMVmFsdWUgaW50
VG9QdHIoTFZhbHVlIHZhbHVlLCBMVHlwZSB0eXBlKSB7IENSQVNIKCk7IH0KICAgICBMVmFsdWUg
cHRyVG9JbnQoTFZhbHVlIHZhbHVlLCBMVHlwZSB0eXBlKSB7IENSQVNIKCk7IH0KICAgICBMVmFs
dWUgYml0Q2FzdChMVmFsdWUsIExUeXBlKTsKLQotICAgIExWYWx1ZSBmcm91bmQoTFZhbHVlIGRv
dWJsZVZhbHVlKSB7IENSQVNIKCk7IH0KKyAgICBMVmFsdWUgZnJvdW5kKExWYWx1ZSBkb3VibGVW
YWx1ZSk7CiAKICAgICBMVmFsdWUgbG9hZChUeXBlZFBvaW50ZXIsIExUeXBlKTsKICAgICB2b2lk
IHN0b3JlKExWYWx1ZSwgVHlwZWRQb2ludGVyKTsKQEAgLTQ4Nyw2ICs0ODYsMTIgQEAgaW5saW5l
IExWYWx1ZSBPdXRwdXQ6OmJpdENhc3QoTFZhbHVlIHZhbHVlLCBMVHlwZSB0eXBlKQogICAgIHJl
dHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpCaXR3aXNlQ2Fz
dCwgb3JpZ2luKCksIHZhbHVlKTsKIH0KIAoraW5saW5lIExWYWx1ZSBPdXRwdXQ6OmZyb3VuZChM
VmFsdWUgZG91YmxlVmFsdWUpCit7CisgICAgTFZhbHVlIGFzRmxvYXQgPSBtX2Jsb2NrLT5hcHBl
bmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpEb3VibGVUb0Zsb2F0LCBvcmlnaW4oKSwgZG91
YmxlVmFsdWUpOworICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3By
b2MsIEIzOjpGbG9hdFRvRG91YmxlLCBvcmlnaW4oKSwgYXNGbG9hdCk7Cit9CisKICNpZiBDT01Q
SUxFUihDTEFORykKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKICNlbmRpZiAvLyBDT01Q
SUxFUihDTEFORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29t
bW9uVmFsdWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVz
LmNwcAppbmRleCA4NjI1YjhkZTQwODA0ZWJkODBjNGRmZDFlNTY2NzQ2YTEwMzIyYjFmLi4wNjE2
OTQ0NDNjNTUwYWQ0ODFkYzUwMzlhMGE3YzgxN2NjOTY4NzJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbW1vblZhbHVlcy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExDb21tb25WYWx1ZXMuY3BwCkBAIC00OSw2ICs0OSw3IEBAIENvbW1v
blZhbHVlczo6Q29tbW9uVmFsdWVzKExDb250ZXh0IGNvbnRleHQpCiAgICAgLCBpbnQzMihCMzo6
SW50MzIpCiAgICAgLCBpbnQ2NChCMzo6SW50NjQpCiAgICAgLCBpbnRQdHIoQjM6OnBvaW50ZXJU
eXBlKCkpCisgICAgLCBmbG9hdFR5cGUoQjM6OkRvdWxlKQogICAgICwgZG91YmxlVHlwZShCMzo6
RG91YmxlKQogI2Vsc2UKICAgICA6IHZvaWRUeXBlKEZUTDo6dm9pZFR5cGUoY29udGV4dCkpCkBA
IC01NiwxMCArNTcsMTAgQEAgQ29tbW9uVmFsdWVzOjpDb21tb25WYWx1ZXMoTENvbnRleHQgY29u
dGV4dCkKICAgICAsIGludDMyKGludDMyVHlwZShjb250ZXh0KSkKICAgICAsIGludDY0KGludDY0
VHlwZShjb250ZXh0KSkKICAgICAsIGludFB0cihpbnRQdHJUeXBlKGNvbnRleHQpKQorICAgICwg
ZmxvYXRUeXBlKEZUTDo6ZmxvYXRUeXBlKGNvbnRleHQpKQogICAgICwgZG91YmxlVHlwZShGVEw6
OmRvdWJsZVR5cGUoY29udGV4dCkpCiAgICAgLCBpbnQ4KGludDhUeXBlKGNvbnRleHQpKQogICAg
ICwgaW50MTYoaW50MTZUeXBlKGNvbnRleHQpKQotICAgICwgZmxvYXRUeXBlKEZUTDo6ZmxvYXRU
eXBlKGNvbnRleHQpKQogICAgICwgcmVmOChwb2ludGVyVHlwZShpbnQ4KSkKICAgICAsIHJlZjE2
KHBvaW50ZXJUeXBlKGludDE2KSkKICAgICAsIHJlZjMyKHBvaW50ZXJUeXBlKGludDMyKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbW1vblZhbHVlcy5oCmluZGV4IDYxNjE5MTFk
N2JjNjcwYzVmMWVlYmFjOGViMjUyYTdjNjg4YjcwMTguLjZkNmEzNWI2ZjJkZTdkNmE2NGI0ZTEx
ZDcxN2Y2NTAzZmQzMjk3YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQ29tbW9uVmFsdWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21t
b25WYWx1ZXMuaApAQCAtNTgsMTEgKzU4LDExIEBAIHB1YmxpYzoKICAgICBjb25zdCBMVHlwZSBp
bnQzMjsKICAgICBjb25zdCBMVHlwZSBpbnQ2NDsKICAgICBjb25zdCBMVHlwZSBpbnRQdHI7Cisg
ICAgY29uc3QgTFR5cGUgZmxvYXRUeXBlOwogICAgIGNvbnN0IExUeXBlIGRvdWJsZVR5cGU7CiAj
aWYgIUZUTF9VU0VTX0IzCiAgICAgY29uc3QgTFR5cGUgaW50ODsKICAgICBjb25zdCBMVHlwZSBp
bnQxNjsKLSAgICBjb25zdCBMVHlwZSBmbG9hdFR5cGU7CiAgICAgY29uc3QgTFR5cGUgcmVmODsK
ICAgICBjb25zdCBMVHlwZSByZWYxNjsKICAgICBjb25zdCBMVHlwZSByZWYzMjsK
</data>
<flag name="review"
          id="291869"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>