<?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>146481</bug_id>
          
          <creation_ts>2015-06-30 17:19:36 -0700</creation_ts>
          <short_desc>jsc-tailcall: Recognize calls in tail position</short_desc>
          <delta_ts>2015-09-14 11:02:07 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>148665</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>146477</blocked>
    
    <blocked>146484</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Basile Clement">basile_clement</reporter>
          <assigned_to name="Basile Clement">basile_clement</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1105902</commentid>
    <comment_count>0</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-06-30 17:19:36 -0700</bug_when>
    <thetext>Implement the IsInTailPosition static property (https://people.mozilla.org/~jorendorff/es6-draft.html#sec-isintailposition) to recognize calls in tail position.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1108833</commentid>
    <comment_count>1</comment_count>
      <attachid>256632</attachid>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-07-10 18:13:01 -0700</bug_when>
    <thetext>Created attachment 256632
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109473</commentid>
    <comment_count>2</comment_count>
      <attachid>256632</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-07-14 14:54:57 -0700</bug_when>
    <thetext>Comment on attachment 256632
Patch

Looks good to me. Here are a few missing cases:

LogicalANDExpression : LogicalANDExpression &amp;&amp; BitwiseORExpression
Return HasProductionInTailPosition of BitwiseORExpression with argument nonterminal.
LogicalORExpression : LogicalORExpression || LogicalANDExpression
Return HasProductionInTailPosition of LogicalANDExpression with argument nonterminal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109474</commentid>
    <comment_count>3</comment_count>
      <attachid>256632</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-07-14 14:58:43 -0700</bug_when>
    <thetext>Comment on attachment 256632
Patch

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

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:2949
&gt; +            generator.emitNode(dst, m_catchBlock, tailCallMode);

This can also be written to be more explicitly not relying on default parameter:
generator.emitNode(dot, m_catchBlock, m_finallyBlock ? NoTailCalls : tailCallMode).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109479</commentid>
    <comment_count>4</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-07-14 15:06:15 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 256632 [details]
&gt; Patch
&gt; 
&gt; Looks good to me. Here are a few missing cases:
&gt; 
&gt; LogicalANDExpression : LogicalANDExpression &amp;&amp; BitwiseORExpression
&gt; Return HasProductionInTailPosition of BitwiseORExpression with argument
&gt; nonterminal.
&gt; LogicalORExpression : LogicalORExpression || LogicalANDExpression
&gt; Return HasProductionInTailPosition of LogicalANDExpression with argument
&gt; nonterminal.

Good catch, adding those.

(In reply to comment #3)
&gt; Comment on attachment 256632 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=256632&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:2949
&gt; &gt; +            generator.emitNode(dst, m_catchBlock, tailCallMode);
&gt; 
&gt; This can also be written to be more explicitly not relying on default
&gt; parameter:
&gt; generator.emitNode(dot, m_catchBlock, m_finallyBlock ? NoTailCalls :
&gt; tailCallMode).

That is indeed better, changing this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109488</commentid>
    <comment_count>5</comment_count>
      <attachid>256800</attachid>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-07-14 15:17:05 -0700</bug_when>
    <thetext>Created attachment 256800
Patch

Add LogicalOpNode as a possible tail call, simplifies TryNode and ScopeNode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109496</commentid>
    <comment_count>6</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-07-14 15:36:22 -0700</bug_when>
    <thetext>Committed r186822 &lt;http://trac.webkit.org/changeset/186822&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122441</commentid>
    <comment_count>7</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-08-31 19:04:08 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122442</commentid>
    <comment_count>8</comment_count>
      <attachid>260344</attachid>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-08-31 19:04:09 -0700</bug_when>
    <thetext>Created attachment 260344
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122443</commentid>
    <comment_count>9</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-08-31 19:04:40 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 148665 ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122635</commentid>
    <comment_count>10</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-09-01 14:09:03 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122636</commentid>
    <comment_count>11</comment_count>
      <attachid>260380</attachid>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-09-01 14:09:04 -0700</bug_when>
    <thetext>Created attachment 260380
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122637</commentid>
    <comment_count>12</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-09-01 14:09:56 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 148665 ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1125655</commentid>
    <comment_count>13</comment_count>
      <attachid>260380</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-09-14 11:02:07 -0700</bug_when>
    <thetext>Comment on attachment 260380
Patch

Cleared review? from attachment 260380 so that this bug does not appear in http://webkit.org/pending-review.  If you would like this patch reviewed, please attach it to a new bug (or re-open this bug before marking it for review again).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256632</attachid>
            <date>2015-07-10 18:13:01 -0700</date>
            <delta_ts>2015-07-14 15:17:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>isintailposition.patch</filename>
            <type>text/plain</type>
            <size>113088</size>
            <attacher name="Basile Clement">basile_clement</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDg2NWZmZTIuLjc5YjI0NjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMiBAQAorMjAxNS0wNy0xMCAgQmFzaWxlIENsZW1l
bnQgIDxiYXNpbGVfY2xlbWVudEBhcHBsZS5jb20+CisKKyAgICAgICAgW0VTNl0gUmVjb2duaXpl
IGNhbGxzIGluIHRhaWwgcG9zaXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE0NjQ4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyB0aGUgY2FwYWJpbGl0eSBmb3IgdGhlIGJ5
dGVjb2RlIGdlbmVyYXRvciB0byByZWNvZ25pemUKKyAgICAgICAgYW5kIGRpc3BhdGNoIHRhaWwg
Y2FsbHMsIGFzIHBlciBFUzYgc3BlYzoKKyAgICAgICAgaHR0cDovL3d3dy5lY21hLWludGVybmF0
aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLWlzaW50YWlscG9zaXRpb24KKworICAgICAgICBU
aGlzIGRvZXMgbm90IGNoYW5nZSB0aGUgZ2VuZXJhdGVkIGJ5dGVjb2RlLCBidXQgbWVyZWx5IHBy
b3ZpZGVzIHRoZQorICAgICAgICBob29rIGZvciBnZW5lcmF0aW5nIHRhaWwgY2FsbHMgaW4gc3Vi
c2VxdWVudCBwYXRjaGVzIHRvd2FyZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ2NDc3CisKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFRhaWxD
YWxsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRUYWlsQ2FsbFZhcmFy
Z3MpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5vZGUpOgorICAgICAgICAqIGJ5dGVjb21w
aWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpDb25zdGFudE5vZGU6OmVtaXRC
eXRlY29kZSk6CisgICAgICAgIChKU0M6Ok51bWJlck5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAg
ICAgIChKU0M6OlJlZ0V4cE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlRoaXNO
b2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpTdXBlck5vZGU6OmVtaXRCeXRlY29k
ZSk6CisgICAgICAgIChKU0M6OlJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAo
SlNDOjpUZW1wbGF0ZVN0cmluZ05vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlRl
bXBsYXRlTGl0ZXJhbE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlRhZ2dlZFRl
bXBsYXRlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QXJyYXlOb2RlOjplbWl0
Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpPYmplY3RMaXRlcmFsTm9kZTo6ZW1pdEJ5dGVjb2Rl
KToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAg
ICAgKEpTQzo6QnJhY2tldEFjY2Vzc29yTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpT
Qzo6RG90QWNjZXNzb3JOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpBcmd1bWVu
dExpc3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpOZXdFeHByTm9kZTo6ZW1p
dEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RXZhbEZ1bmN0aW9uQ2FsbE5vZGU6OmVtaXRCeXRl
Y29kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbFZhbHVlTm9kZTo6ZW1pdEJ5dGVjb2Rl
KToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZSk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAg
ICAgICAgKEpTQzo6RnVuY3Rpb25DYWxsQnJhY2tldE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAg
ICAgIChKU0M6OkZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChK
U0M6OkNhbGxGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlND
OjpBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6
OlBvc3RmaXhOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpEZWxldGVSZXNvbHZl
Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnJhY2tldE5vZGU6OmVt
aXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkRlbGV0ZURvdE5vZGU6OmVtaXRCeXRlY29kZSk6
CisgICAgICAgIChKU0M6OkRlbGV0ZVZhbHVlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAg
KEpTQzo6Vm9pZE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlR5cGVPZlJlc29s
dmVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpUeXBlT2ZWYWx1ZU5vZGU6OmVt
aXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlByZWZpeE5vZGU6OmVtaXRCeXRlY29kZSk6Cisg
ICAgICAgIChKU0M6OlVuYXJ5T3BOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpC
aXR3aXNlTm90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QmluYXJ5T3BOb2Rl
OjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpFcXVhbE5vZGU6OmVtaXRCeXRlY29kZSk6
CisgICAgICAgIChKU0M6OlN0cmljdEVxdWFsTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAg
KEpTQzo6VGhyb3dhYmxlQmluYXJ5T3BOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlND
OjpJbnN0YW5jZU9mTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6TG9naWNhbE9w
Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q29uZGl0aW9uYWxOb2RlOjplbWl0
Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpSZWFkTW9kaWZ5UmVzb2x2ZU5vZGU6OmVtaXRCeXRl
Y29kZSk6CisgICAgICAgIChKU0M6OkFzc2lnblJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUpOgor
ICAgICAgICAoSlNDOjpBc3NpZ25Eb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlND
OjpSZWFkTW9kaWZ5RG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QXNzaWdu
RXJyb3JOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpBc3NpZ25CcmFja2V0Tm9k
ZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UmVhZE1vZGlmeUJyYWNrZXROb2RlOjpl
bWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDb21tYU5vZGU6OmVtaXRCeXRlY29kZSk6Cisg
ICAgICAgIChKU0M6OkNvbnN0RGVjbE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6
OkNvbnN0U3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6U291cmNl
RWxlbWVudHM6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkJsb2NrTm9kZTo6ZW1pdEJ5
dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RW1wdHlTdGF0ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpEZWJ1Z2dlclN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZSk6Cisg
ICAgICAgIChKU0M6OkV4cHJTdGF0ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAo
SlNDOjpWYXJTdGF0ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpFbXB0
eVZhckV4cHJlc3Npb246OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OklmRWxzZU5vZGU6
OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkRvV2hpbGVOb2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpXaGlsZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6
OkZvck5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkZvckluTm9kZTo6ZW1pdEJ5
dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Rm9yT2ZOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAg
ICAoSlNDOjpDb250aW51ZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkJyZWFr
Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UmV0dXJuTm9kZTo6ZW1pdEJ5dGVj
b2RlKToKKyAgICAgICAgKEpTQzo6V2l0aE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChK
U0M6OkNhc2VDbGF1c2VOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDYXNlQmxv
Y2tOb2RlOjplbWl0Qnl0ZWNvZGVGb3JCbG9jayk6CisgICAgICAgIChKU0M6OlN3aXRjaE5vZGU6
OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkxhYmVsTm9kZTo6ZW1pdEJ5dGVjb2RlKToK
KyAgICAgICAgKEpTQzo6VGhyb3dOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpU
cnlOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpTY29wZU5vZGU6OmVtaXRTdGF0
ZW1lbnRzQnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpQcm9ncmFtTm9kZTo6ZW1pdEJ5dGVjb2Rl
KToKKyAgICAgICAgKEpTQzo6RXZhbE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6
OkZ1bmN0aW9uQm9keU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9u
Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY0RlY2xOb2RlOjplbWl0Qnl0
ZWNvZGUpOgorICAgICAgICAoSlNDOjpGdW5jRXhwck5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAg
ICAgIChKU0M6OkNsYXNzRGVjbE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNs
YXNzRXhwck5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkRlc3RydWN0dXJpbmdB
c3NpZ25tZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6U3ByZWFkRXhwcmVz
c2lvbk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisKIDIw
MTUtMDctMDkgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAg
UkVHUkVTU0lPTiAocjE4MDI0OCk6IFJlcHJvIENyYXNoOiBjb20uYXBwbGUuV2ViS2l0LldlYkNv
bnRlbnQgYXQgY29tLmFwcGxlLkphdmFTY3JpcHRDb3JlOiBKU0M6OmNyZWF0ZVJhbmdlRXJyb3Ig
KyAyMApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA4YjJmOGU2Li5kMmIwOTNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcApAQCAtMTgzNiw2ICsxODM2LDEzIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0Q2FsbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIEV4cGVjCiAgICAg
cmV0dXJuIGVtaXRDYWxsKG9wX2NhbGwsIGRzdCwgZnVuYywgZXhwZWN0ZWRGdW5jdGlvbiwgY2Fs
bEFyZ3VtZW50cywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKIH0KIAorUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRUYWlsQ2FsbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lz
dGVySUQqIGZ1bmMsIEV4cGVjdGVkRnVuY3Rpb24gZXhwZWN0ZWRGdW5jdGlvbiwgQ2FsbEFyZ3Vt
ZW50cyYgY2FsbEFyZ3VtZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5k
KQoreworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgZW1pdHRpbmcgYSBuZXcgb3BfdGFpbF9j
YWxsIGhlcmUKKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQ2NDg0CisgICAgcmV0dXJuIGVtaXRDYWxsKG9wX2NhbGwsIGRzdCwgZnVuYywgZXhwZWN0ZWRG
dW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKK30K
KwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsRXZhbChSZWdpc3RlcklE
KiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIENhbGxBcmd1bWVudHMmIGNhbGxBcmd1bWVudHMsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3Rh
cnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKIHsKICAgICByZXR1cm4gZW1pdENh
bGwob3BfY2FsbF9ldmFsLCBkc3QsIGZ1bmMsIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3Vt
ZW50cywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKQEAgLTE5ODUsNiArMTk5MiwxMyBA
QCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGxWYXJhcmdzKFJlZ2lzdGVy
SUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYwogICAgIHJldHVybiBlbWl0Q2FsbFZhcmFyZ3Mob3Bf
Y2FsbF92YXJhcmdzLCBkc3QsIGZ1bmMsIHRoaXNSZWdpc3RlciwgYXJndW1lbnRzLCBmaXJzdEZy
ZWVSZWdpc3RlciwgZmlyc3RWYXJBcmdPZmZzZXQsIHByb2ZpbGVIb29rUmVnaXN0ZXIsIGRpdm90
LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0VGFpbENhbGxWYXJhcmdzKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVu
YywgUmVnaXN0ZXJJRCogdGhpc1JlZ2lzdGVyLCBSZWdpc3RlcklEKiBhcmd1bWVudHMsIFJlZ2lz
dGVySUQqIGZpcnN0RnJlZVJlZ2lzdGVyLCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0LCBSZWdp
c3RlcklEKiBwcm9maWxlSG9va1JlZ2lzdGVyLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3Qs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYg
ZGl2b3RFbmQpCit7CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBlbWl0dGluZyBhIG5ldyBv
cF90YWlsX2NhbGxfdmFyYXJncyBoZXJlCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE0NjQ4NAorICAgIHJldHVybiBlbWl0Q2FsbFZhcmFyZ3Mob3BfY2Fs
bF92YXJhcmdzLCBkc3QsIGZ1bmMsIHRoaXNSZWdpc3RlciwgYXJndW1lbnRzLCBmaXJzdEZyZWVS
ZWdpc3RlciwgZmlyc3RWYXJBcmdPZmZzZXQsIHByb2ZpbGVIb29rUmVnaXN0ZXIsIGRpdm90LCBk
aXZvdFN0YXJ0LCBkaXZvdEVuZCk7Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0Q29uc3RydWN0VmFyYXJncyhSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMs
IFJlZ2lzdGVySUQqIHRoaXNSZWdpc3RlciwgUmVnaXN0ZXJJRCogYXJndW1lbnRzLCBSZWdpc3Rl
cklEKiBmaXJzdEZyZWVSZWdpc3RlciwgaW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCwgUmVnaXN0
ZXJJRCogcHJvZmlsZUhvb2tSZWdpc3RlciwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRp
dm90RW5kKQogewogICAgIHJldHVybiBlbWl0Q2FsbFZhcmFyZ3Mob3BfY29uc3RydWN0X3ZhcmFy
Z3MsIGRzdCwgZnVuYywgdGhpc1JlZ2lzdGVyLCBhcmd1bWVudHMsIGZpcnN0RnJlZVJlZ2lzdGVy
LCBmaXJzdFZhckFyZ09mZnNldCwgcHJvZmlsZUhvb2tSZWdpc3RlciwgZGl2b3QsIGRpdm90U3Rh
cnQsIGRpdm90RW5kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCAxYTk3NzFlLi5jOTRjOGY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oCkBAIC0zNDQsNyArMzQ0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIExhYmVs
U2NvcGVQdHIgbmV3TGFiZWxTY29wZShMYWJlbFNjb3BlOjpUeXBlLCBjb25zdCBJZGVudGlmaWVy
KiA9IDApOwogICAgICAgICBQYXNzUmVmUHRyPExhYmVsPiBuZXdMYWJlbCgpOwogCi0gICAgICAg
IHZvaWQgZW1pdE5vZGUoUmVnaXN0ZXJJRCogZHN0LCBTdGF0ZW1lbnROb2RlKiBuKQorICAgICAg
ICB2b2lkIGVtaXROb2RlKFJlZ2lzdGVySUQqIGRzdCwgU3RhdGVtZW50Tm9kZSogbiwgVGFpbENh
bGxNb2RlIHRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKQogICAgICAgICB7CiAgICAgICAgICAg
ICAvLyBOb2RlOjplbWl0Q29kZSBhc3N1bWVzIHRoYXQgZHN0LCBpZiBwcm92aWRlZCwgaXMgZWl0
aGVyIGEgbG9jYWwgb3IgYSByZWZlcmVuY2VkIHRlbXBvcmFyeS4KICAgICAgICAgICAgIEFTU0VS
VCghZHN0IHx8IGRzdCA9PSBpZ25vcmVkUmVzdWx0KCkgfHwgIWRzdC0+aXNUZW1wb3JhcnkoKSB8
fCBkc3QtPnJlZkNvdW50KCkpOwpAQCAtMzUyLDcgKzM1Miw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAgICAgICAgIGVtaXRUaHJvd0V4cHJlc3Npb25Ub29EZWVwRXhjZXB0aW9uKCk7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgbi0+ZW1p
dEJ5dGVjb2RlKCp0aGlzLCBkc3QpOworICAgICAgICAgICAgbi0+ZW1pdEJ5dGVjb2RlKCp0aGlz
LCBkc3QsIHRhaWxDYWxsTW9kZSk7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIGVtaXROb2Rl
KFN0YXRlbWVudE5vZGUqIG4pCkBAIC0zNjAsMTMgKzM2MCwxMyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgIGVtaXROb2RlKDAsIG4pOwogICAgICAgICB9CiAKLSAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdE5vZGUoUmVnaXN0ZXJJRCogZHN0LCBFeHByZXNzaW9uTm9kZSogbikKKyAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdE5vZGUoUmVnaXN0ZXJJRCogZHN0LCBFeHByZXNzaW9uTm9kZSog
biwgVGFpbENhbGxNb2RlIHRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKQogICAgICAgICB7CiAg
ICAgICAgICAgICAvLyBOb2RlOjplbWl0Q29kZSBhc3N1bWVzIHRoYXQgZHN0LCBpZiBwcm92aWRl
ZCwgaXMgZWl0aGVyIGEgbG9jYWwgb3IgYSByZWZlcmVuY2VkIHRlbXBvcmFyeS4KICAgICAgICAg
ICAgIEFTU0VSVCghZHN0IHx8IGRzdCA9PSBpZ25vcmVkUmVzdWx0KCkgfHwgIWRzdC0+aXNUZW1w
b3JhcnkoKSB8fCBkc3QtPnJlZkNvdW50KCkpOwogICAgICAgICAgICAgaWYgKCFtX3ZtLT5pc1Nh
ZmVUb1JlY3Vyc2UoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZW1pdFRocm93RXhwcmVzc2lv
blRvb0RlZXBFeGNlcHRpb24oKTsKLSAgICAgICAgICAgIHJldHVybiBuLT5lbWl0Qnl0ZWNvZGUo
KnRoaXMsIGRzdCk7CisgICAgICAgICAgICByZXR1cm4gbi0+ZW1pdEJ5dGVjb2RlKCp0aGlzLCBk
c3QsIHRhaWxDYWxsTW9kZSk7CiAgICAgICAgIH0KIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0
Tm9kZShFeHByZXNzaW9uTm9kZSogbikKQEAgLTQ5Miw4ICs0OTIsMTAgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIAogICAgICAgICBFeHBlY3RlZEZ1bmN0aW9uIGV4cGVjdGVkRnVuY3Rpb25G
b3JJZGVudGlmaWVyKGNvbnN0IElkZW50aWZpZXImKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dENhbGwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBFeHBlY3RlZEZ1bmN0aW9u
LCBDYWxsQXJndW1lbnRzJiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsK
KyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFRhaWxDYWxsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0
ZXJJRCogZnVuYywgRXhwZWN0ZWRGdW5jdGlvbiwgQ2FsbEFyZ3VtZW50cyYsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDYWxs
RXZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIENhbGxBcmd1bWVudHMmLCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0
YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogICAgICAgICBSZWdpc3RlcklE
KiBlbWl0Q2FsbFZhcmFyZ3MoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBSZWdp
c3RlcklEKiB0aGlzUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGFyZ3VtZW50cywgUmVnaXN0ZXJJRCog
Zmlyc3RGcmVlUmVnaXN0ZXIsIGludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQsIFJlZ2lzdGVySUQq
IHByb2ZpbGVIb29rUmVnaXN0ZXIsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVu
ZCk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRUYWlsQ2FsbFZhcmFyZ3MoUmVnaXN0ZXJJRCog
ZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBSZWdpc3RlcklEKiB0aGlzUmVnaXN0ZXIsIFJlZ2lzdGVy
SUQqIGFyZ3VtZW50cywgUmVnaXN0ZXJJRCogZmlyc3RGcmVlUmVnaXN0ZXIsIGludDMyX3QgZmly
c3RWYXJBcmdPZmZzZXQsIFJlZ2lzdGVySUQqIHByb2ZpbGVIb29rUmVnaXN0ZXIsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICAgICAgZW51bSBQcm9wZXJ0eURl
c2NyaXB0b3JPcHRpb24gewogICAgICAgICAgICAgUHJvcGVydHlDb25maWd1cmFibGUgPSAxLApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwCmluZGV4IGNmZDNlZjEuLmRjZjBhNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCB2
b2lkIENvbnN0YW50Tm9kZTo6ZW1pdEJ5dGVjb2RlSW5Db25kaXRpb25Db250ZXh0KEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsCiAgICAgLy8gQWxsIG90aGVyIGNhc2VzIGFyZSB1bmNvbmRp
dGlvbmFsIGZhbGwtdGhyb3VnaHMsIGxpa2UgImlmICh0cnVlKSIuCiB9CiAKLVJlZ2lzdGVySUQq
IENvbnN0YW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVySUQqIENvbnN0YW50Tm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxN
b2RlKQogewogICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKICAgICAg
ICAgcmV0dXJuIDA7CkBAIC0xMjYsNyArMTI2LDcgQEAgSlNWYWx1ZSBTdHJpbmdOb2RlOjpqc1Zh
bHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IpIGNvbnN0CiAKIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSBOdW1iZXJOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KIAotUmVnaXN0ZXJJRCogTnVtYmVyTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVySUQqIE51bWJl
ck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklEKiBkc3QsIFRhaWxDYWxsTW9kZSkKIHsKICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25v
cmVkUmVzdWx0KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTM1LDcgKzEzNSw3IEBA
IFJlZ2lzdGVySUQqIE51bWJlck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSBSZWdFeHBOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJl
Z2lzdGVySUQqIFJlZ0V4cE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCitSZWdpc3RlcklEKiBSZWdFeHBOb2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBUYWls
Q2FsbE1vZGUpCiB7CiAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQog
ICAgICAgICByZXR1cm4gMDsKQEAgLTE0NCw3ICsxNDQsNyBAQCBSZWdpc3RlcklEKiBSZWdFeHBO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCogZAogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gVGhpc05vZGUgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1SZWdpc3RlcklEKiBUaGlzTm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRz
dCkKK1JlZ2lzdGVySUQqIFRoaXNOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAgaWYgKG1f
c2hvdWxkQWx3YXlzRW1pdFREWkNoZWNrIHx8IGdlbmVyYXRvci5jb25zdHJ1Y3RvcktpbmQoKSA9
PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0VERaQ2hl
Y2soZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpKTsKQEAgLTE2Myw3ICsxNjMsNyBAQCBSZWdpc3Rl
cklEKiBUaGlzTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIGRzdAogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU3Vw
ZXJOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUmVnaXN0ZXJJ
RCogU3VwZXJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogU3VwZXJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUp
CiB7CiAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQogICAgICAgICBy
ZXR1cm4gMDsKQEAgLTE5Miw3ICsxOTIsNyBAQCBib29sIFJlc29sdmVOb2RlOjppc1B1cmUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvcikgY29uc3QKICAgICByZXR1cm4gZ2VuZXJhdG9yLnZh
cmlhYmxlKG1faWRlbnQpLm9mZnNldCgpLmlzU3RhY2soKTsKIH0KIAotUmVnaXN0ZXJJRCogUmVz
b2x2ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklEKiBkc3QpCitSZWdpc3RlcklEKiBSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlKQog
ewogICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShtX2lkZW50KTsKICAgICBp
ZiAoUmVnaXN0ZXJJRCogbG9jYWwgPSB2YXIubG9jYWwoKSkgewpAQCAtMjIwLDcgKzIyMCw3IEBA
IFJlZ2lzdGVySUQqIFJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCoKICNpZiBFTkFCTEUoRVM2X1RFTVBMQVRFX0xJVEVSQUxf
U1lOVEFYKQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFRlbXBsYXRlU3RyaW5n
Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1SZWdpc3RlcklEKiBU
ZW1wbGF0ZVN0cmluZ05vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBkc3QpCitSZWdpc3RlcklEKiBUZW1wbGF0ZVN0cmluZ05vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3Qs
IFRhaWxDYWxsTW9kZSkKIHsKICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0
KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjI5LDcgKzIyOSw3IEBAIFJlZ2lzdGVy
SUQqIFRlbXBsYXRlU3RyaW5nTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBUZW1w
bGF0ZUxpdGVyYWxOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJl
Z2lzdGVySUQqIFRlbXBsYXRlTGl0ZXJhbE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCitSZWdpc3RlcklEKiBUZW1wbGF0ZUxp
dGVyYWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAgaWYgKCFtX3RlbXBsYXRlRXhwcmVz
c2lvbnMpIHsKICAgICAgICAgVGVtcGxhdGVTdHJpbmdOb2RlKiB0ZW1wbGF0ZVN0cmluZyA9IG1f
dGVtcGxhdGVTdHJpbmdzLT52YWx1ZSgpOwpAQCAtMjY1LDcgKzI2NSw3IEBAIFJlZ2lzdGVySUQq
IFRlbXBsYXRlTGl0ZXJhbE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBUYWdnZWRU
ZW1wbGF0ZU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUmVnaXN0
ZXJJRCogVGFnZ2VkVGVtcGxhdGVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogVGFnZ2VkVGVtcGxhdGVO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCogZHN0LCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAgRXhwZWN0ZWRGdW5jdGlvbiBleHBlY3RlZEZ1
bmN0aW9uID0gTm9FeHBlY3RlZEZ1bmN0aW9uOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0YWcg
PSBudWxscHRyOwpAQCAtMzI3LDcgKzMyNyw3IEBAIFJlZ2lzdGVySUQqIFRhZ2dlZFRlbXBsYXRl
Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzCiAK
IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBBcnJheU5vZGUgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlZ2lzdGVySUQqIEFycmF5Tm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK1Jl
Z2lzdGVySUQqIEFycmF5Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlKQogewogICAgIC8vIEZJWE1FOiBT
aG91bGQgd2UgcHV0IGFsbCBvZiB0aGlzIGNvZGUgaW50byBlbWl0TmV3QXJyYXk/CiAKQEAgLTQx
Nyw3ICs0MTcsNyBAQCBBcmd1bWVudExpc3ROb2RlKiBBcnJheU5vZGU6OnRvQXJndW1lbnRMaXN0
KFBhcnNlckFyZW5hJiBwYXJzZXJBcmVuYSwgaW50IGxpbmVOdQogCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0gT2JqZWN0TGl0ZXJhbE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogCi1SZWdpc3RlcklEKiBPYmplY3RMaXRlcmFsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVySUQq
IE9iamVjdExpdGVyYWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAgaWYgKCFtX2xpc3Qp
IHsKICAgICAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQpAQCAtNDM2
LDcgKzQzNiw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBlbWl0UHV0SG9tZU9iamVjdChCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBmCiAgICAgZ2VuZXJhdG9yLmVtaXRQ
dXRCeUlkKGZ1bmN0aW9uLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmhvbWVPYmplY3RQcml2
YXRlTmFtZSwgaG9tZU9iamVjdCk7CiB9CiAKLVJlZ2lzdGVySUQqIFByb3BlcnR5TGlzdE5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBk
c3QpCitSZWdpc3RlcklEKiBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUpCiB7CiAg
ICAgLy8gRmFzdCBjYXNlOiB0aGlzIGxvb3AganVzdCBoYW5kbGVzIHJlZ3VsYXIgdmFsdWUgcHJv
cGVydGllcy4KICAgICBQcm9wZXJ0eUxpc3ROb2RlKiBwID0gdGhpczsKQEAgLTU4Niw3ICs1ODYs
NyBAQCB2b2lkIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRQdXRDb25zdGFudFByb3BlcnR5KEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gQnJhY2tldEFjY2Vzc29yTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogCi1SZWdpc3RlcklEKiBCcmFja2V0QWNjZXNzb3JOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCog
QnJhY2tldEFjY2Vzc29yTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlKQogewogICAgIGlmIChtX2Jhc2Ut
PmlzU3VwZXJOb2RlKCkpIHsKICAgICAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBnZW5lcmF0ZSB0
aGUgcHJvZmlsZXIgaW5mbz8KQEAgLTYyMCw3ICs2MjAsNyBAQCBSZWdpc3RlcklEKiBCcmFja2V0
QWNjZXNzb3JOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRG90QWNjZXNzb3JOb2Rl
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlZ2lzdGVySUQqIERvdEFjY2Vz
c29yTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqIGRzdCkKK1JlZ2lzdGVySUQqIERvdEFjY2Vzc29yTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2Rl
KQogewogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gbV9iYXNlLT5pc1N1cGVyTm9kZSgp
ID8gZW1pdFN1cGVyQmFzZUZvckNhbGxlZShnZW5lcmF0b3IpIDogZ2VuZXJhdG9yLmVtaXROb2Rl
KG1fYmFzZSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZv
dFN0YXJ0KCksIGRpdm90RW5kKCkpOwpAQCAtNjM1LDcgKzYzNSw3IEBAIFJlZ2lzdGVySUQqIERv
dEFjY2Vzc29yTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVyCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBBcmd1bWVudExp
c3ROb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlZ2lzdGVySUQqIEFyZ3Vt
ZW50TGlzdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlcklEKiBkc3QpCitSZWdpc3RlcklEKiBBcmd1bWVudExpc3ROb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2Fs
bE1vZGUpCiB7CiAgICAgQVNTRVJUKG1fZXhwcik7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0
Tm9kZShkc3QsIG1fZXhwcik7CkBAIC02NDMsNyArNjQzLDcgQEAgUmVnaXN0ZXJJRCogQXJndW1l
bnRMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGUKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIE5ld0V4cHJOb2RlIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUmVnaXN0ZXJJRCogTmV3RXhwck5v
ZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklE
KiBkc3QpCitSZWdpc3RlcklEKiBOZXdFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlKQogewogICAg
IEV4cGVjdGVkRnVuY3Rpb24gZXhwZWN0ZWRGdW5jdGlvbjsKICAgICBpZiAobV9leHByLT5pc1Jl
c29sdmVOb2RlKCkpCkBAIC02ODQsNyArNjg0LDcgQEAgQ2FsbEFyZ3VtZW50czo6Q2FsbEFyZ3Vt
ZW50cyhCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBBcmd1bWVudHNOb2RlKiBhcmd1bWUK
IAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEV2YWxGdW5jdGlvbkNhbGxOb2Rl
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUmVnaXN0ZXJJRCogRXZhbEZ1
bmN0aW9uQ2FsbE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiBkc3QpCitSZWdpc3RlcklEKiBFdmFsRnVuY3Rpb25DYWxsTm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwg
VGFpbENhbGxNb2RlKQogewogICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShn
ZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmV2YWwpOwogICAgIGlmIChSZWdpc3RlcklEKiBsb2Nh
bCA9IHZhci5sb2NhbCgpKSB7CkBAIC03MDcsNyArNzA3LDcgQEAgUmVnaXN0ZXJJRCogRXZhbEZ1
bmN0aW9uQ2FsbE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWcKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9uQ2FsbFZh
bHVlTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlZ2lzdGVySUQq
IEZ1bmN0aW9uQ2FsbFZhbHVlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbFZhbHVl
Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
SUQqIGRzdCwgVGFpbENhbGxNb2RlIHRhaWxDYWxsTW9kZSkKIHsKICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gZnVuYyA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2V4cHIpOwogICAgIFJlZlB0cjxSZWdp
c3RlcklEPiByZXR1cm5WYWx1ZSA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgZnVu
Yy5nZXQoKSk7CkBAIC03MjEsNyArNzIxLDExIEBAIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbFZh
bHVlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlCiAg
ICAgICAgIHJldHVybiByZXQ7CiAgICAgfQogICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJn
dW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKLSAgICBSZWdpc3RlcklEKiBy
ZXQgPSBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmMuZ2V0KCksIE5v
RXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBk
aXZvdEVuZCgpKTsKKyAgICBSZWdpc3RlcklEKiByZXQ7CisgICAgaWYgKHRhaWxDYWxsTW9kZSA9
PSBDYW5IYXZlVGFpbENhbGxzKQorICAgICAgICByZXQgPSBnZW5lcmF0b3IuZW1pdFRhaWxDYWxs
KHJldHVyblZhbHVlLmdldCgpLCBmdW5jLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxB
cmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgZWxzZQor
ICAgICAgICByZXQgPSBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmMu
Z2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RT
dGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICBpZiAoZ2VuZXJhdG9yLnZtKCktPnR5cGVQcm9maWxl
cigpKSB7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocmV0dXJuVmFsdWUuZ2V0
KCksIFByb2ZpbGVUeXBlQnl0ZWNvZGVEb2VzTm90SGF2ZUdsb2JhbElELCBudWxscHRyKTsKICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRUeXBlUHJvZmlsZXJFeHByZXNzaW9uSW5mbyhkaXZvdFN0YXJ0
KCksIGRpdm90RW5kKCkpOwpAQCAtNzMxLDcgKzczNSw3IEBAIFJlZ2lzdGVySUQqIEZ1bmN0aW9u
Q2FsbFZhbHVlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbkNhbGxSZXNv
bHZlTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlZ2lzdGVySUQq
IEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxsUmVz
b2x2ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSB0YWlsQ2FsbE1vZGUpCiB7CiAgICAgRXhwZWN0ZWRG
dW5jdGlvbiBleHBlY3RlZEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmV4cGVjdGVkRnVuY3Rpb25Gb3JJ
ZGVudGlmaWVyKG1faWRlbnQpOwogCkBAIC03NDMsNyArNzQ3LDExIEBAIFJlZ2lzdGVySUQqIEZ1
bmN0aW9uQ2FsbFJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGNhbGxBcmd1bWVudHMudGhpc1Jl
Z2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOwogICAgICAgICAvLyBUaGlzIHBhc3NlcyBOb0V4cGVj
dGVkRnVuY3Rpb24gYmVjYXVzZSB3ZSBleHBlY3QgdGhhdCBpZiB0aGUgZnVuY3Rpb24gaXMgaW4g
YQogICAgICAgICAvLyBsb2NhbCB2YXJpYWJsZSwgdGhlbiBpdCdzIG5vdCBvbmUgb2Ygb3VyIGJ1
aWx0LWluIGNvbnN0cnVjdG9ycy4KLSAgICAgICAgUmVnaXN0ZXJJRCogcmV0ID0gZ2VuZXJhdG9y
LmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rp
b24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Cisg
ICAgICAgIFJlZ2lzdGVySUQqIHJldDsKKyAgICAgICAgaWYgKHRhaWxDYWxsTW9kZSA9PSBDYW5I
YXZlVGFpbENhbGxzKQorICAgICAgICAgICAgcmV0ID0gZ2VuZXJhdG9yLmVtaXRUYWlsQ2FsbChy
ZXR1cm5WYWx1ZS5nZXQoKSwgZnVuYy5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJn
dW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICByZXQgPSBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCks
IGZ1bmMuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwg
ZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgaWYgKGdlbmVyYXRvci52bSgpLT50
eXBlUHJvZmlsZXIoKSkgewogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShy
ZXR1cm5WYWx1ZS5nZXQoKSwgUHJvZmlsZVR5cGVCeXRlY29kZURvZXNOb3RIYXZlR2xvYmFsSUQs
IG51bGxwdHIpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRUeXBlUHJvZmlsZXJFeHByZXNz
aW9uSW5mbyhkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwpAQCAtNzYxLDcgKzc2OSwxMSBAQCBS
ZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsCiAgICAgICAgIGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVy
KCksCiAgICAgICAgIGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKGNhbGxBcmd1bWVudHMudGhp
c1JlZ2lzdGVyKCksIHZhcikpOwogICAgIGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKGZ1bmMu
Z2V0KCksIGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIHZhciwgVGhyb3dJZk5vdEZvdW5k
KTsKLSAgICBSZWdpc3RlcklEKiByZXQgPSBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUu
Z2V0KCksIGZ1bmMuZ2V0KCksIGV4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90
KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgUmVnaXN0ZXJJRCogcmV0OworICAg
IGlmICh0YWlsQ2FsbE1vZGUgPT0gQ2FuSGF2ZVRhaWxDYWxscykKKyAgICAgICAgcmV0ID0gZ2Vu
ZXJhdG9yLmVtaXRUYWlsQ2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgZnVuYy5nZXQoKSwgZXhwZWN0
ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVu
ZCgpKTsKKyAgICBlbHNlCisgICAgICAgIHJldCA9IGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5W
YWx1ZS5nZXQoKSwgZnVuYy5nZXQoKSwgZXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywg
ZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICBpZiAoZ2VuZXJhdG9yLnZt
KCktPnR5cGVQcm9maWxlcigpKSB7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUo
cmV0dXJuVmFsdWUuZ2V0KCksIFByb2ZpbGVUeXBlQnl0ZWNvZGVEb2VzTm90SGF2ZUdsb2JhbElE
LCBudWxscHRyKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRUeXBlUHJvZmlsZXJFeHByZXNzaW9u
SW5mbyhkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwpAQCAtNzcxLDcgKzc4Myw3IEBAIFJlZ2lz
dGVySUQqIEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEJ5
dGVjb2RlSW50cmluc2ljTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAK
LVJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVySUQqIEJ5dGVj
b2RlSW50cmluc2ljTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlKQogewogICAgIHJldHVybiAodGhpcy0+
Km1fZW1pdHRlcikoZ2VuZXJhdG9yLCBkc3QpOwogfQpAQCAtODAxLDcgKzgxMyw3IEBAIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfdG9TdHJpbmcoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBG
dW5jdGlvbkNhbGxCcmFja2V0Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAKLVJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCog
RnVuY3Rpb25DYWxsQnJhY2tldE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSB0YWlsQ2FsbE1vZGUpCiB7
CiAgICAgYm9vbCBiYXNlSXNTdXBlciA9IG1fYmFzZS0+aXNTdXBlck5vZGUoKTsKICAgICBib29s
IHN1YnNjcmlwdElzU3RyaW5nID0gbV9zdWJzY3JpcHQtPmlzU3RyaW5nKCk7CkBAIC04MzIsNyAr
ODQ0LDExIEBAIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRN
b3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGdlbmVyYXRvci50aGlzUmVnaXN0ZXIo
KSk7CiAgICAgZWxzZQogICAgICAgICBnZW5lcmF0b3IuZW1pdE1vdmUoY2FsbEFyZ3VtZW50cy50
aGlzUmVnaXN0ZXIoKSwgYmFzZS5nZXQoKSk7Ci0gICAgUmVnaXN0ZXJJRCogcmV0ID0gZ2VuZXJh
dG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3Rl
ZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5k
KCkpOworICAgIFJlZ2lzdGVySUQqIHJldDsKKyAgICBpZiAodGFpbENhbGxNb2RlID09IENhbkhh
dmVUYWlsQ2FsbHMpCisgICAgICAgIHJldCA9IGdlbmVyYXRvci5lbWl0VGFpbENhbGwocmV0dXJu
VmFsdWUuZ2V0KCksIGZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1
bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgZWxzZQorICAg
ICAgICByZXQgPSBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0aW9u
LmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90
U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgaWYgKGdlbmVyYXRvci52bSgpLT50eXBlUHJvZmls
ZXIoKSkgewogICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHJldHVyblZhbHVlLmdl
dCgpLCBQcm9maWxlVHlwZUJ5dGVjb2RlRG9lc05vdEhhdmVHbG9iYWxJRCwgbnVsbHB0cik7CiAg
ICAgICAgIGdlbmVyYXRvci5lbWl0VHlwZVByb2ZpbGVyRXhwcmVzc2lvbkluZm8oZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKQEAgLTg0Miw3ICs4NTgsNyBAQCBSZWdpc3RlcklEKiBGdW5jdGlv
bkNhbGxCcmFja2V0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbkNhbGxEb3RO
b2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUmVnaXN0ZXJJRCogRnVu
Y3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3Qs
IFRhaWxDYWxsTW9kZSB0YWlsQ2FsbE1vZGUpCiB7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZ1
bmN0aW9uID0gZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpOwogICAgIFJlZlB0cjxSZWdp
c3RlcklEPiByZXR1cm5WYWx1ZSA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgZnVu
Y3Rpb24uZ2V0KCkpOwpAQCAtODU0LDcgKzg3MCwxMSBAQCBSZWdpc3RlcklEKiBGdW5jdGlvbkNh
bGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aQogICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIo
KSwgbV9iYXNlKTsKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHN1YmV4cHJlc3Np
b25EaXZvdCgpLCBzdWJleHByZXNzaW9uU3RhcnQoKSwgc3ViZXhwcmVzc2lvbkVuZCgpKTsKICAg
ICBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZnVuY3Rpb24uZ2V0KCksIGJhc2VJc1N1cGVyID8gZW1p
dFN1cGVyQmFzZUZvckNhbGxlZShnZW5lcmF0b3IpIDogY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0
ZXIoKSwgbV9pZGVudCk7Ci0gICAgUmVnaXN0ZXJJRCogcmV0ID0gZ2VuZXJhdG9yLmVtaXRDYWxs
KHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBj
YWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgIFJl
Z2lzdGVySUQqIHJldDsKKyAgICBpZiAodGFpbENhbGxNb2RlID09IENhbkhhdmVUYWlsQ2FsbHMp
CisgICAgICAgIHJldCA9IGdlbmVyYXRvci5lbWl0VGFpbENhbGwocmV0dXJuVmFsdWUuZ2V0KCks
IGZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90
KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgZWxzZQorICAgICAgICByZXQgPSBn
ZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0aW9uLmdldCgpLCBOb0V4
cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2
b3RFbmQoKSk7CiAgICAgaWYgKGdlbmVyYXRvci52bSgpLT50eXBlUHJvZmlsZXIoKSkgewogICAg
ICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHJldHVyblZhbHVlLmdldCgpLCBQcm9maWxl
VHlwZUJ5dGVjb2RlRG9lc05vdEhhdmVHbG9iYWxJRCwgbnVsbHB0cik7CiAgICAgICAgIGdlbmVy
YXRvci5lbWl0VHlwZVByb2ZpbGVyRXhwcmVzc2lvbkluZm8oZGl2b3RTdGFydCgpLCBkaXZvdEVu
ZCgpKTsKQEAgLTg2Miw3ICs4ODIsNyBAQCBSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxEb3ROb2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaQogICAgIHJl
dHVybiByZXQ7CiB9CiAKLVJlZ2lzdGVySUQqIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQor
UmVnaXN0ZXJJRCogQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSB0YWls
Q2FsbE1vZGUpCiB7CiAgICAgUmVmUHRyPExhYmVsPiByZWFsQ2FsbCA9IGdlbmVyYXRvci5uZXdM
YWJlbCgpOwogICAgIFJlZlB0cjxMYWJlbD4gZW5kID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CkBA
IC04ODYsNyArOTA2LDEwIEBAIFJlZ2lzdGVySUQqIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwKICAgICAgICAgICAgIGFy
Z3VtZW50c1JlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXROb2RlKHN1YmplY3QpOwogICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhzcHJlYWQtPmRpdm90KCksIHNwcmVhZC0+
ZGl2b3RTdGFydCgpLCBzcHJlYWQtPmRpdm90RW5kKCkpOwogICAgICAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHRoaXNSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0R2V0QnlWYWwoZ2VuZXJhdG9y
Lm5ld1RlbXBvcmFyeSgpLCBhcmd1bWVudHNSZWdpc3Rlci5nZXQoKSwgZ2VuZXJhdG9yLmVtaXRM
b2FkKDAsIGpzTnVtYmVyKDApKSk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGxWYXJh
cmdzKHJldHVyblZhbHVlLmdldCgpLCBiYXNlLmdldCgpLCB0aGlzUmVnaXN0ZXIuZ2V0KCksIGFy
Z3VtZW50c1JlZ2lzdGVyLmdldCgpLCBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIDEsIHByb2Zp
bGVIb29rUmVnaXN0ZXIuZ2V0KCksIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7
CisgICAgICAgICAgICBpZiAodGFpbENhbGxNb2RlID09IENhbkhhdmVUYWlsQ2FsbHMpCisgICAg
ICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRUYWlsQ2FsbFZhcmFyZ3MocmV0dXJuVmFsdWUuZ2V0
KCksIGJhc2UuZ2V0KCksIHRoaXNSZWdpc3Rlci5nZXQoKSwgYXJndW1lbnRzUmVnaXN0ZXIuZ2V0
KCksIGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgMSwgcHJvZmlsZUhvb2tSZWdpc3Rlci5nZXQo
KSwgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGxWYXJhcmdzKHJldHVyblZhbHVlLmdl
dCgpLCBiYXNlLmdldCgpLCB0aGlzUmVnaXN0ZXIuZ2V0KCksIGFyZ3VtZW50c1JlZ2lzdGVyLmdl
dCgpLCBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIDEsIHByb2ZpbGVIb29rUmVnaXN0ZXIuZ2V0
KCksIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgIH0gZWxzZSBp
ZiAobV9hcmdzLT5tX2xpc3ROb2RlICYmIG1fYXJncy0+bV9saXN0Tm9kZS0+bV9leHByKSB7CiAg
ICAgICAgICAgICBBcmd1bWVudExpc3ROb2RlKiBvbGRMaXN0ID0gbV9hcmdzLT5tX2xpc3ROb2Rl
OwogICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlLT5t
X25leHQ7CkBAIC04OTQsMTMgKzkxNywxOSBAQCBSZWdpc3RlcklEKiBDYWxsRnVuY3Rpb25DYWxs
RG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsCiAgICAg
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRN
b3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7CiAgICAgICAg
ICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCks
IG9sZExpc3QtPm1fZXhwcik7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJu
VmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxs
QXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICAg
ICAgaWYgKHRhaWxDYWxsTW9kZSA9PSBDYW5IYXZlVGFpbENhbGxzKQorICAgICAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0VGFpbENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5n
ZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0
YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBO
b0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwg
ZGl2b3RFbmQoKSk7CiAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBvbGRMaXN0Owog
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5j
dGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCks
IGJhc2UuZ2V0KCkpOwogICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdl
bmVyYXRvciwgbV9hcmdzKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJn
dW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4
cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2
b3RFbmQoKSk7CisgICAgICAgICAgICBpZiAodGFpbENhbGxNb2RlID09IENhbkhhdmVUYWlsQ2Fs
bHMpCisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRUYWlsQ2FsbChyZXR1cm5WYWx1ZS5n
ZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVu
dHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBy
ZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2
b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgfQogICAgIH0KICAgICBp
ZiAoZW1pdENhbGxDaGVjaykgewpAQCAtOTA5LDcgKzkzOCwxMCBAQCBSZWdpc3RlcklEKiBDYWxs
RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsCiAgICAgICAgIHsKICAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50
cyhnZW5lcmF0b3IsIG1fYXJncyk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE1vdmUoY2Fs
bEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgYmFzZS5nZXQoKSk7Ci0gICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0aW9uLmdldCgpLCBOb0V4cGVj
dGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RF
bmQoKSk7CisgICAgICAgICAgICBpZiAodGFpbENhbGxNb2RlID09IENhbkhhdmVUYWlsQ2FsbHMp
CisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRUYWlsQ2FsbChyZXR1cm5WYWx1ZS5nZXQo
KSwgZnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2
b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0aW9u
LmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90
U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgIH0KICAgICAgICAgZ2VuZXJhdG9yLmVtaXRM
YWJlbChlbmQuZ2V0KCkpOwogICAgIH0KQEAgLTkyNiw3ICs5NTgsNyBAQCBzdGF0aWMgYm9vbCBh
cmVUcml2aWFsQXBwbHlBcmd1bWVudHMoQXJndW1lbnRzTm9kZSogYXJncykKICAgICAgICAgfHwg
KCFhcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fbmV4dCAmJiBhcmdzLT5tX2xpc3ROb2RlLT5t
X25leHQtPm1fZXhwci0+aXNTaW1wbGVBcnJheSgpKTsKIH0KIAotUmVnaXN0ZXJJRCogQXBwbHlG
dW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogQXBwbHlGdW5jdGlvbkNhbGxEb3RO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCogZHN0LCBUYWlsQ2FsbE1vZGUgdGFpbENhbGxNb2RlKQogewogICAgIC8vIEEgZmV3IHNpbXBs
ZSBjYXNlcyBjYW4gYmUgdHJpdmlhbGx5IGhhbmRsZWQgYXMgb3JkaW5hcnkgZnVuY3Rpb24gY2Fs
bHMuCiAgICAgLy8gZnVuY3Rpb24uYXBwbHkoKSwgZnVuY3Rpb24uYXBwbHkoYXJnKSAtPiBpZGVu
dGljYWwgdG8gZnVuY3Rpb24uY2FsbApAQCAtOTc1LDcgKzEwMDcsMTAgQEAgUmVnaXN0ZXJJRCog
QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwKICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChlbmQu
Z2V0KCkpOwogICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRFbnVtZXJhdGlvbih0aGlzLCBzcHJlYWQtPmV4cHJlc3Npb24oKSwgZXh0cmFjdG9yKTsKLSAg
ICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGxWYXJhcmdzKHJldHVyblZhbHVlLmdldCgp
LCByZWFsRnVuY3Rpb24uZ2V0KCksIHRoaXNSZWdpc3Rlci5nZXQoKSwgYXJndW1lbnRzUmVnaXN0
ZXIuZ2V0KCksIGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgMCwgcHJvZmlsZUhvb2tSZWdpc3Rl
ci5nZXQoKSwgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgICAg
ICAgICBpZiAodGFpbENhbGxNb2RlID09IENhbkhhdmVUYWlsQ2FsbHMpCisgICAgICAgICAgICAg
ICAgICAgIGdlbmVyYXRvci5lbWl0VGFpbENhbGxWYXJhcmdzKHJldHVyblZhbHVlLmdldCgpLCBy
ZWFsRnVuY3Rpb24uZ2V0KCksIHRoaXNSZWdpc3Rlci5nZXQoKSwgYXJndW1lbnRzUmVnaXN0ZXIu
Z2V0KCksIGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgMCwgcHJvZmlsZUhvb2tSZWdpc3Rlci5n
ZXQoKSwgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbFZhcmFyZ3MocmV0
dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgdGhpc1JlZ2lzdGVyLmdldCgpLCBh
cmd1bWVudHNSZWdpc3Rlci5nZXQoKSwgZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCAwLCBwcm9m
aWxlSG9va1JlZ2lzdGVyLmdldCgpLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkp
OwogICAgICAgICAgICAgfSBlbHNlIGlmIChtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dCkgewog
ICAgICAgICAgICAgICAgIEFTU0VSVChtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9leHBy
LT5pc1NpbXBsZUFycmF5KCkpOwogICAgICAgICAgICAgICAgIEFTU0VSVCghbV9hcmdzLT5tX2xp
c3ROb2RlLT5tX25leHQtPm1fbmV4dCk7CkBAIC05ODMsMjAgKzEwMTgsMjkgQEAgUmVnaXN0ZXJJ
RCogQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwKICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1
bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0
KSwgYmFzZS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1l
bnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5v
ZGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgb2xkTGlzdC0+bV9leHByKTsKLSAgICAg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5j
dGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBk
aXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICAgICAgICAgIGlmICh0YWlsQ2FsbE1v
ZGUgPT0gQ2FuSGF2ZVRhaWxDYWxscykKKyAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRUYWlsQ2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVj
dGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RF
bmQoKSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBl
Y3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90
RW5kKCkpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBtX2FyZ3MtPm1f
bGlzdE5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dDsKICAgICAgICAgICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVy
YXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7CiAgICAgICAgICAgICAgICAg
Q2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICAgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwg
b2xkTGlzdC0+bV9leHByKTsKLSAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0
dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBj
YWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAg
ICAgICAgICAgIGlmICh0YWlsQ2FsbE1vZGUgPT0gQ2FuSGF2ZVRhaWxDYWxscykKKyAgICAgICAg
ICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRUYWlsQ2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVh
bEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90
KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJl
YWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZv
dCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gb2xkTGlzdDsKICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1v
dmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKICAgICAgICAg
ICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CiAgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwg
anNVbmRlZmluZWQoKSk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFs
dWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJn
dW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICAgICAg
aWYgKHRhaWxDYWxsTW9kZSA9PSBDYW5IYXZlVGFpbENhbGxzKQorICAgICAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0VGFpbENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQo
KSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0
KCksIGRpdm90RW5kKCkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4
cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2
b3RFbmQoKSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQobV9hcmdz
LT5tX2xpc3ROb2RlICYmIG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0KTsKQEAgLTEwMTQsMTQg
KzEwNTgsMjAgQEAgUmVnaXN0ZXJJRCogQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwKICAgICAgICAgd2hpbGUgKChhcmdz
ID0gYXJncy0+bV9uZXh0KSkKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShhcmdzLT5t
X2V4cHIpOwogCi0gICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbFZhcmFyZ3MocmV0dXJuVmFsdWUu
Z2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgdGhpc1JlZ2lzdGVyLmdldCgpLCBhcmdzUmVnaXN0
ZXIuZ2V0KCksIGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgMCwgcHJvZmlsZUhvb2tSZWdpc3Rl
ci5nZXQoKSwgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgaWYg
KHRhaWxDYWxsTW9kZSA9PSBDYW5IYXZlVGFpbENhbGxzKQorICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRUYWlsQ2FsbFZhcmFyZ3MocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQo
KSwgdGhpc1JlZ2lzdGVyLmdldCgpLCBhcmdzUmVnaXN0ZXIuZ2V0KCksIGdlbmVyYXRvci5uZXdU
ZW1wb3JhcnkoKSwgMCwgcHJvZmlsZUhvb2tSZWdpc3Rlci5nZXQoKSwgZGl2b3QoKSwgZGl2b3RT
dGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRDYWxsVmFyYXJncyhyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCB0
aGlzUmVnaXN0ZXIuZ2V0KCksIGFyZ3NSZWdpc3Rlci5nZXQoKSwgZ2VuZXJhdG9yLm5ld1RlbXBv
cmFyeSgpLCAwLCBwcm9maWxlSG9va1JlZ2lzdGVyLmdldCgpLCBkaXZvdCgpLCBkaXZvdFN0YXJ0
KCksIGRpdm90RW5kKCkpOwogICAgIH0KICAgICBpZiAoZW1pdENhbGxDaGVjaykgewogICAgICAg
ICBnZW5lcmF0b3IuZW1pdEp1bXAoZW5kLmdldCgpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRM
YWJlbChyZWFsQ2FsbC5nZXQoKSk7CiAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50
cyhnZW5lcmF0b3IsIG1fYXJncyk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShjYWxsQXJn
dW1lbnRzLnRoaXNSZWdpc3RlcigpLCBiYXNlLmdldCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVt
aXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0
aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwor
ICAgICAgICBpZiAodGFpbENhbGxNb2RlID09IENhbkhhdmVUYWlsQ2FsbHMpCisgICAgICAgICAg
ICBnZW5lcmF0b3IuZW1pdFRhaWxDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlvbi5nZXQo
KSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0
KCksIGRpdm90RW5kKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBnZW5lcmF0b3IuZW1p
dENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rp
b24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAg
ICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZW5kLmdldCgpKTsKICAgICB9CiAgICAgaWYgKGdl
bmVyYXRvci52bSgpLT50eXBlUHJvZmlsZXIoKSkgewpAQCAtMTEzOSw3ICsxMTg5LDcgQEAgUmVn
aXN0ZXJJRCogUG9zdGZpeE5vZGU6OmVtaXREb3QoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogZHN0KQogICAgIHJldHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRp
b25JZk5lZWRlZChkc3QsIG9sZFZhbHVlKTsKIH0KIAotUmVnaXN0ZXJJRCogUG9zdGZpeE5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBk
c3QpCitSZWdpc3RlcklEKiBQb3N0Zml4Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlKQogewogICAgIGlm
IChtX2V4cHItPmlzUmVzb2x2ZU5vZGUoKSkKICAgICAgICAgcmV0dXJuIGVtaXRSZXNvbHZlKGdl
bmVyYXRvciwgZHN0KTsKQEAgLTExNTcsNyArMTIwNyw3IEBAIFJlZ2lzdGVySUQqIFBvc3RmaXhO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCoKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIERlbGV0ZVJlc29sdmVOb2Rl
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlZ2lzdGVySUQqIERlbGV0
ZVJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogRGVsZXRlUmVzb2x2ZU5vZGU6OmVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxD
YWxsTW9kZSkKIHsKICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUobV9pZGVu
dCk7CiAgICAgaWYgKHZhci5sb2NhbCgpKQpAQCAtMTE3MCw3ICsxMjIwLDcgQEAgUmVnaXN0ZXJJ
RCogRGVsZXRlUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3QKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIERlbGV0
ZUJyYWNrZXROb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlZ2lz
dGVySUQqIERlbGV0ZUJyYWNrZXROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogRGVsZXRlQnJhY2tldE5v
ZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklE
KiBkc3QsIFRhaWxDYWxsTW9kZSkKIHsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcjAgPSBnZW5l
cmF0b3IuZW1pdE5vZGUobV9iYXNlKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcjEgPSBnZW5l
cmF0b3IuZW1pdE5vZGUobV9zdWJzY3JpcHQpOwpAQCAtMTE4Myw3ICsxMjMzLDcgQEAgUmVnaXN0
ZXJJRCogRGVsZXRlQnJhY2tldE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3QKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIERl
bGV0ZURvdE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUmVnaXN0
ZXJJRCogRGVsZXRlRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVySUQqIERlbGV0ZURvdE5vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRh
aWxDYWxsTW9kZSkKIHsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcjAgPSBnZW5lcmF0b3IuZW1p
dE5vZGUobV9iYXNlKTsKIApAQCAtMTE5NSw3ICsxMjQ1LDcgQEAgUmVnaXN0ZXJJRCogRGVsZXRl
RG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIERlbGV0ZVZhbHVlTm9k
ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1SZWdpc3RlcklEKiBEZWxl
dGVWYWx1ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlcklEKiBkc3QpCitSZWdpc3RlcklEKiBEZWxldGVWYWx1ZU5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxs
TW9kZSkKIHsKICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQo
KSwgbV9leHByKTsKIApAQCAtMTIwNSw3ICsxMjU1LDcgQEAgUmVnaXN0ZXJJRCogRGVsZXRlVmFs
dWVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0
ZXIKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFZvaWROb2RlIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUmVnaXN0ZXJJRCogVm9pZE5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3Qp
CitSZWdpc3RlcklEKiBWb2lkTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlKQogewogICAgIGlmIChkc3Qg
PT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkgewogICAgICAgICBnZW5lcmF0b3IuZW1pdE5v
ZGUoZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSwgbV9leHByKTsKQEAgLTEyMTcsNyArMTI2Nyw3
IEBAIFJlZ2lzdGVySUQqIFZvaWROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSBUeXBlT2ZSZXNvbHZlTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogCi1SZWdpc3RlcklEKiBUeXBlT2ZSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVySUQqIFR5
cGVPZlJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAgVmFyaWFibGUgdmFyID0g
Z2VuZXJhdG9yLnZhcmlhYmxlKG1faWRlbnQpOwogICAgIGlmIChSZWdpc3RlcklEKiBsb2NhbCA9
IHZhci5sb2NhbCgpKSB7CkBAIC0xMjM1LDcgKzEyODUsNyBAQCBSZWdpc3RlcklEKiBUeXBlT2ZS
ZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdAogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gVHlwZU9mVmFsdWVOb2Rl
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlZ2lzdGVySUQqIFR5cGVP
ZlZhbHVlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVySUQqIFR5cGVPZlZhbHVlTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxN
b2RlKQogewogICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkgewogICAg
ICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSwgbV9leHBy
KTsKQEAgLTEzMjksNyArMTM3OSw3IEBAIFJlZ2lzdGVySUQqIFByZWZpeE5vZGU6OmVtaXREb3Qo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogICAgIHJldHVy
biBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3QsIHByb3BEc3QuZ2V0KCkp
OwogfQogCi1SZWdpc3RlcklEKiBQcmVmaXhOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogUHJlZml4Tm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
IGRzdCwgVGFpbENhbGxNb2RlKQogewogICAgIGlmIChtX2V4cHItPmlzUmVzb2x2ZU5vZGUoKSkK
ICAgICAgICAgcmV0dXJuIGVtaXRSZXNvbHZlKGdlbmVyYXRvciwgZHN0KTsKQEAgLTEzNDcsNyAr
MTM5Nyw3IEBAIFJlZ2lzdGVySUQqIFByZWZpeE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSBVbmFyeSBPcGVyYXRpb24gTm9kZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KIAotUmVnaXN0ZXJJRCogVW5hcnlPcE5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCitSZWdpc3RlcklE
KiBVbmFyeU9wTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlKQogewogICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBzcmMgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9leHByKTsKICAgICBnZW5lcmF0b3IuZW1pdEV4
cHJlc3Npb25JbmZvKHBvc2l0aW9uKCksIHBvc2l0aW9uKCksIHBvc2l0aW9uKCkpOwpAQCAtMTM1
Niw3ICsxNDA2LDcgQEAgUmVnaXN0ZXJJRCogVW5hcnlPcE5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKgogCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0gQml0d2lzZU5vdE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KICAKLVJlZ2lzdGVySUQqIEJpdHdpc2VOb3ROb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJ
RCogQml0d2lzZU5vdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSkKIHsKICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gc3JjMiA9IGdlbmVyYXRvci5lbWl0TG9hZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCks
IGpzTnVtYmVyKC0xKSk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNyYzEgPSBnZW5lcmF0b3Iu
ZW1pdE5vZGUobV9leHByKTsKQEAgLTE1NDksNyArMTU5OSw3IEBAIHZvaWQgQmluYXJ5T3BOb2Rl
Ojp0cnlGb2xkVG9CcmFuY2goQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgVHJpU3RhdGUm
IGJyYW5jCiAgICAgICAgIGJyYW5jaENvbmRpdGlvbiA9IHRyaVN0YXRlKCF2YWx1ZS5wdXJlVG9C
b29sZWFuKCkpOwogfQogCi1SZWdpc3RlcklEKiBCaW5hcnlPcE5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCitSZWdpc3RlcklE
KiBCaW5hcnlPcE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSkKIHsKICAgICBPcGNvZGVJRCBvcGNvZGVJ
RCA9IHRoaXMtPm9wY29kZUlEKCk7CiAKQEAgLTE1OTMsNyArMTY0Myw3IEBAIFJlZ2lzdGVySUQq
IEJpbmFyeU9wTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUmVnaXN0ZXJJRCogRXF1YWxO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCogZHN0KQorUmVnaXN0ZXJJRCogRXF1YWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAg
aWYgKG1fZXhwcjEtPmlzTnVsbCgpIHx8IG1fZXhwcjItPmlzTnVsbCgpKSB7CiAgICAgICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBzcmMgPSBnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCk7CkBA
IC0xNjExLDcgKzE2NjEsNyBAQCBSZWdpc3RlcklEKiBFcXVhbE5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkcwogICAgIHJldHVybiBn
ZW5lcmF0b3IuZW1pdEVxdWFsaXR5T3Aob3BfZXEsIGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9u
KGRzdCwgc3JjMS5nZXQoKSksIHNyYzEuZ2V0KCksIHNyYzIuZ2V0KCkpOwogfQogCi1SZWdpc3Rl
cklEKiBTdHJpY3RFcXVhbE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCitSZWdpc3RlcklEKiBTdHJpY3RFcXVhbE5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3Qs
IFRhaWxDYWxsTW9kZSkKIHsKICAgICBFeHByZXNzaW9uTm9kZSogbGVmdCA9IG1fZXhwcjE7CiAg
ICAgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0ID0gbV9leHByMjsKQEAgLTE2MjMsNyArMTY3Myw3IEBA
IFJlZ2lzdGVySUQqIFN0cmljdEVxdWFsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVyCiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0RXF1YWxp
dHlPcChvcF9zdHJpY3RlcSwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCBzcmMxLmdl
dCgpKSwgc3JjMS5nZXQoKSwgc3JjMi5nZXQoKSk7CiB9CiAKLVJlZ2lzdGVySUQqIFRocm93YWJs
ZUJpbmFyeU9wTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVySUQqIFRocm93YWJsZUJpbmFyeU9wTm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwg
VGFpbENhbGxNb2RlKQogewogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzcmMxID0gZ2VuZXJhdG9y
LmVtaXROb2RlRm9yTGVmdEhhbmRTaWRlKG1fZXhwcjEsIG1fcmlnaHRIYXNBc3NpZ25tZW50cywg
bV9leHByMi0+aXNQdXJlKGdlbmVyYXRvcikpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzcmMy
ID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fZXhwcjIpOwpAQCAtMTYzMSw3ICsxNjgxLDcgQEAgUmVn
aXN0ZXJJRCogVGhyb3dhYmxlQmluYXJ5T3BOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmUKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRCaW5hcnlPcChv
cGNvZGVJRCgpLCBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIHNyYzEuZ2V0KCkpLCBz
cmMxLmdldCgpLCBzcmMyLmdldCgpLCBPcGVyYW5kVHlwZXMobV9leHByMS0+cmVzdWx0RGVzY3Jp
cHRvcigpLCBtX2V4cHIyLT5yZXN1bHREZXNjcmlwdG9yKCkpKTsKIH0KIAotUmVnaXN0ZXJJRCog
SW5zdGFuY2VPZk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiBkc3QpCitSZWdpc3RlcklEKiBJbnN0YW5jZU9mTm9kZTo6ZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENh
bGxNb2RlKQogewogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzcmMxID0gZ2VuZXJhdG9yLmVtaXRO
b2RlRm9yTGVmdEhhbmRTaWRlKG1fZXhwcjEsIG1fcmlnaHRIYXNBc3NpZ25tZW50cywgbV9leHBy
Mi0+aXNQdXJlKGdlbmVyYXRvcikpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzcmMyID0gZ2Vu
ZXJhdG9yLmVtaXROb2RlKG1fZXhwcjIpOwpAQCAtMTY1Myw3ICsxNzAzLDcgQEAgUmVnaXN0ZXJJ
RCogSW5zdGFuY2VPZk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlckkKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIExvZ2lj
YWxPcE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1SZWdpc3RlcklEKiBMb2dp
Y2FsT3BOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogTG9naWNhbE9wTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2Rl
KQogewogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0ZW1wID0gZ2VuZXJhdG9yLnRlbXBEZXN0aW5h
dGlvbihkc3QpOwogICAgIFJlZlB0cjxMYWJlbD4gdGFyZ2V0ID0gZ2VuZXJhdG9yLm5ld0xhYmVs
KCk7CkBAIC0xNjgzLDcgKzE3MzMsNyBAQCB2b2lkIExvZ2ljYWxPcE5vZGU6OmVtaXRCeXRlY29k
ZUluQ29uZGl0aW9uQ29udGV4dChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLAogCiAvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29uZGl0aW9uYWxOb2RlIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogCi1SZWdpc3RlcklEKiBDb25kaXRpb25hbE5vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCitS
ZWdpc3RlcklEKiBDb25kaXRpb25hbE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSB0YWlsQ2FsbE1vZGUp
CiB7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IG5ld0RzdCA9IGdlbmVyYXRvci5maW5hbERlc3Rp
bmF0aW9uKGRzdCk7CiAgICAgUmVmUHRyPExhYmVsPiBiZWZvcmVFbHNlID0gZ2VuZXJhdG9yLm5l
d0xhYmVsKCk7CkBAIC0xNjk0LDEyICsxNzQ0LDEyIEBAIFJlZ2lzdGVySUQqIENvbmRpdGlvbmFs
Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
CiAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChiZWZvcmVUaGVuLmdldCgpKTsKIAogICAgIGdlbmVy
YXRvci5lbWl0UHJvZmlsZUNvbnRyb2xGbG93KG1fZXhwcjEtPnN0YXJ0T2Zmc2V0KCkpOwotICAg
IGdlbmVyYXRvci5lbWl0Tm9kZShuZXdEc3QuZ2V0KCksIG1fZXhwcjEpOworICAgIGdlbmVyYXRv
ci5lbWl0Tm9kZShuZXdEc3QuZ2V0KCksIG1fZXhwcjEsIHRhaWxDYWxsTW9kZSk7CiAgICAgZ2Vu
ZXJhdG9yLmVtaXRKdW1wKGFmdGVyRWxzZS5nZXQoKSk7CiAKICAgICBnZW5lcmF0b3IuZW1pdExh
YmVsKGJlZm9yZUVsc2UuZ2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZUNvbnRyb2xG
bG93KG1fZXhwcjEtPmVuZE9mZnNldCgpICsgMSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXROb2RlKG5l
d0RzdC5nZXQoKSwgbV9leHByMik7CisgICAgZ2VuZXJhdG9yLmVtaXROb2RlKG5ld0RzdC5nZXQo
KSwgbV9leHByMiwgdGFpbENhbGxNb2RlKTsKIAogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoYWZ0
ZXJFbHNlLmdldCgpKTsKIApAQCAtMTc2Nyw3ICsxODE3LDcgQEAgc3RhdGljIEFMV0FZU19JTkxJ
TkUgUmVnaXN0ZXJJRCogZW1pdFJlYWRNb2RpZnlBc3NpZ25tZW50KEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW4KICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1SZWdpc3RlcklEKiBSZWFkTW9kaWZ5UmVz
b2x2ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklEKiBkc3QpCitSZWdpc3RlcklEKiBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGU6OmVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxD
YWxsTW9kZSkKIHsKICAgICBKU1RleHRQb3NpdGlvbiBuZXdEaXZvdCA9IGRpdm90U3RhcnQoKSAr
IG1faWRlbnQubGVuZ3RoKCk7CiAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxl
KG1faWRlbnQpOwpAQCAtMTgwOCw3ICsxODU4LDcgQEAgUmVnaXN0ZXJJRCogUmVhZE1vZGlmeVJl
c29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmUK
IAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEFzc2lnblJlc29sdmVOb2RlIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlZ2lzdGVySUQqIEFzc2lnblJl
c29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogQXNzaWduUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxs
TW9kZSkKIHsKICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUobV9pZGVudCk7
CiAgICAgaWYgKFJlZ2lzdGVySUQqIGxvY2FsID0gdmFyLmxvY2FsKCkpIHsKQEAgLTE4NDcsNyAr
MTg5Nyw3IEBAIFJlZ2lzdGVySUQqIEFzc2lnblJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSBBc3NpZ25Eb3ROb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAKLVJlZ2lzdGVySUQqIEFzc2lnbkRvdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCitSZWdpc3RlcklEKiBBc3Np
Z25Eb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJh
c2UgPSBnZW5lcmF0b3IuZW1pdE5vZGVGb3JMZWZ0SGFuZFNpZGUobV9iYXNlLCBtX3JpZ2h0SGFz
QXNzaWdubWVudHMsIG1fcmlnaHQtPmlzUHVyZShnZW5lcmF0b3IpKTsKICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZGVzdGluYXRpb25Gb3JBc3NpZ25SZXN1bHQoZHN0
KTsKQEAgLTE4NjQsNyArMTkxNCw3IEBAIFJlZ2lzdGVySUQqIEFzc2lnbkRvdE5vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklECiAKIC8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBSZWFkTW9kaWZ5RG90Tm9kZSAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1SZWdpc3RlcklEKiBSZWFkTW9kaWZ5RG90Tm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
IGRzdCkKK1JlZ2lzdGVySUQqIFJlYWRNb2RpZnlEb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUpCiB7
CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGVGb3JMZWZ0
SGFuZFNpZGUobV9iYXNlLCBtX3JpZ2h0SGFzQXNzaWdubWVudHMsIG1fcmlnaHQtPmlzUHVyZShn
ZW5lcmF0b3IpKTsKIApAQCAtMTg4MywxNCArMTkzMywxNCBAQCBSZWdpc3RlcklEKiBSZWFkTW9k
aWZ5RG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdAogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQXNzaWduRXJyb3JOb2Rl
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlZ2lzdGVySUQqIEFzc2ln
bkVycm9yTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqKQorUmVnaXN0ZXJJRCogQXNzaWduRXJyb3JOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCosIFRhaWxDYWxsTW9kZSkKIHsK
ICAgICByZXR1cm4gZW1pdFRocm93UmVmZXJlbmNlRXJyb3IoZ2VuZXJhdG9yLCBBU0NJSUxpdGVy
YWwoIkxlZnQgc2lkZSBvZiBhc3NpZ25tZW50IGlzIG5vdCBhIHJlZmVyZW5jZS4iKSk7CiB9CiAK
IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBBc3NpZ25CcmFja2V0Tm9kZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1SZWdpc3RlcklEKiBBc3NpZ25CcmFj
a2V0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqIGRzdCkKK1JlZ2lzdGVySUQqIEFzc2lnbkJyYWNrZXROb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1v
ZGUpCiB7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGVG
b3JMZWZ0SGFuZFNpZGUobV9iYXNlLCBtX3N1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzIHx8IG1fcmln
aHRIYXNBc3NpZ25tZW50cywgbV9zdWJzY3JpcHQtPmlzUHVyZShnZW5lcmF0b3IpICYmIG1fcmln
aHQtPmlzUHVyZShnZW5lcmF0b3IpKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvcGVydHkg
PSBnZW5lcmF0b3IuZW1pdE5vZGVGb3JMZWZ0SGFuZFNpZGUobV9zdWJzY3JpcHQsIG1fcmlnaHRI
YXNBc3NpZ25tZW50cywgbV9yaWdodC0+aXNQdXJlKGdlbmVyYXRvcikpOwpAQCAtMTkxNCw3ICsx
OTY0LDcgQEAgUmVnaXN0ZXJJRCogQXNzaWduQnJhY2tldE5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3QKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tIFJlYWRNb2RpZnlCcmFja2V0Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQogCi1SZWdpc3RlcklEKiBSZWFkTW9kaWZ5QnJhY2tldE5vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCitS
ZWdpc3RlcklEKiBSZWFkTW9kaWZ5QnJhY2tldE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSkKIHsKICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZUZvckxlZnRIYW5k
U2lkZShtX2Jhc2UsIG1fc3Vic2NyaXB0SGFzQXNzaWdubWVudHMgfHwgbV9yaWdodEhhc0Fzc2ln
bm1lbnRzLCBtX3N1YnNjcmlwdC0+aXNQdXJlKGdlbmVyYXRvcikgJiYgbV9yaWdodC0+aXNQdXJl
KGdlbmVyYXRvcikpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9wZXJ0eSA9IGdlbmVyYXRv
ci5lbWl0Tm9kZUZvckxlZnRIYW5kU2lkZShtX3N1YnNjcmlwdCwgbV9yaWdodEhhc0Fzc2lnbm1l
bnRzLCBtX3JpZ2h0LT5pc1B1cmUoZ2VuZXJhdG9yKSk7CkBAIC0xOTM1LDEyICsxOTg1LDEyIEBA
IFJlZ2lzdGVySUQqIFJlYWRNb2RpZnlCcmFja2V0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSBDb21tYU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJl
Z2lzdGVySUQqIENvbW1hTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVySUQqIENvbW1hTm9kZTo6ZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENh
bGxNb2RlIHRhaWxDYWxsTW9kZSkKIHsKICAgICBDb21tYU5vZGUqIG5vZGUgPSB0aGlzOwogICAg
IGZvciAoOyBub2RlICYmIG5vZGUtPm5leHQoKTsgbm9kZSA9IG5vZGUtPm5leHQoKSkKICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXROb2RlKGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCksIG5vZGUtPm1f
ZXhwcik7Ci0gICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG5vZGUtPm1fZXhwcik7
CisgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG5vZGUtPm1fZXhwciwgdGFpbENh
bGxNb2RlKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENvbnN0RGVj
bE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xOTg4LDcgKzIw
MzgsNyBAQCBSZWdpc3RlcklEKiBDb25zdERlY2xOb2RlOjplbWl0Q29kZVNpbmdsZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yKQogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFB1dFRvU2Nv
cGUoc2NvcGUuZ2V0KCksIHZhciwgdmFsdWUuZ2V0KCksIERvTm90VGhyb3dJZk5vdEZvdW5kKTsK
IH0KIAotUmVnaXN0ZXJJRCogQ29uc3REZWNsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQorUmVnaXN0ZXJJRCogQ29uc3REZWNsTm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
LCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAgUmVnaXN0ZXJJRCogcmVzdWx0ID0gMDsKICAgICBmb3Ig
KENvbnN0RGVjbE5vZGUqIG4gPSB0aGlzOyBuOyBuID0gbi0+bV9uZXh0KQpAQCAtMTk5OSw3ICsy
MDQ5LDcgQEAgUmVnaXN0ZXJJRCogQ29uc3REZWNsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tIENvbnN0U3RhdGVtZW50Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogCi12b2lkIENvbnN0U3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQordm9pZCBDb25zdFN0YXRlbWVudE5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiwg
VGFpbENhbGxNb2RlKQogewogICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRl
U3RhdGVtZW50LCBmaXJzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkp
OwogICAgIGdlbmVyYXRvci5lbWl0Tm9kZShtX25leHQpOwpAQCAtMjAxMywxMCArMjA2MywxMCBA
QCBpbmxpbmUgU3RhdGVtZW50Tm9kZSogU291cmNlRWxlbWVudHM6Omxhc3RTdGF0ZW1lbnQoKSBj
b25zdAogICAgIHJldHVybiBtX3RhaWw7CiB9CiAKLWlubGluZSB2b2lkIFNvdXJjZUVsZW1lbnRz
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCog
ZHN0KQoraW5saW5lIHZvaWQgU291cmNlRWxlbWVudHM6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSB0YWlsQ2Fs
bE1vZGUpCiB7CiAgICAgZm9yIChTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQgPSBtX2hlYWQ7IHN0
YXRlbWVudDsgc3RhdGVtZW50ID0gc3RhdGVtZW50LT5uZXh0KCkpCi0gICAgICAgIGdlbmVyYXRv
ci5lbWl0Tm9kZShkc3QsIHN0YXRlbWVudCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShk
c3QsIHN0YXRlbWVudCwgdGFpbENhbGxNb2RlKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tIEJsb2NrTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KQEAgLTIwMzEsMzAgKzIwODEsMzAgQEAgU3RhdGVtZW50Tm9kZSogQmxvY2tOb2RlOjpzaW5n
bGVTdGF0ZW1lbnQoKSBjb25zdAogICAgIHJldHVybiBtX3N0YXRlbWVudHMgPyBtX3N0YXRlbWVu
dHMtPnNpbmdsZVN0YXRlbWVudCgpIDogMDsKIH0KIAotdm9pZCBCbG9ja05vZGU6OmVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit2b2lk
IEJsb2NrTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlIHRhaWxDYWxsTW9kZSkKIHsKICAgICBpZiAoIW1f
c3RhdGVtZW50cykKICAgICAgICAgcmV0dXJuOwotICAgIG1fc3RhdGVtZW50cy0+ZW1pdEJ5dGVj
b2RlKGdlbmVyYXRvciwgZHN0KTsKKyAgICBtX3N0YXRlbWVudHMtPmVtaXRCeXRlY29kZShnZW5l
cmF0b3IsIGRzdCwgdGFpbENhbGxNb2RlKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tIEVtcHR5U3RhdGVtZW50Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IAotdm9pZCBFbXB0eVN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKK3ZvaWQgRW1wdHlTdGF0ZW1lbnROb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCosIFRhaWxD
YWxsTW9kZSkKIHsKICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRl
bWVudCwgZmlyc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKIH0K
IAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIERlYnVnZ2VyU3RhdGVtZW50Tm9k
ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotdm9pZCBEZWJ1Z2dlclN0YXRlbWVudE5v
ZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklE
KikKK3ZvaWQgRGVidWdnZXJTdGF0ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCosIFRhaWxDYWxsTW9kZSkKIHsKICAgICBnZW5l
cmF0b3IuZW1pdERlYnVnSG9vayhEaWRSZWFjaEJyZWFrcG9pbnQsIGxhc3RMaW5lKCksIHN0YXJ0
T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tIEV4cHJTdGF0ZW1lbnROb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIAotdm9pZCBFeHByU3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3ZvaWQgRXhwclN0YXRlbWVudE5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBk
c3QsIFRhaWxDYWxsTW9kZSkKIHsKICAgICBBU1NFUlQobV9leHByKTsKICAgICBnZW5lcmF0b3Iu
ZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIHN0YXJ0T2Zm
c2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKQEAgLTIwNjMsNyArMjExMyw3IEBAIHZvaWQgRXhw
clN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiBkCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBWYXJT
dGF0ZW1lbnROb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotdm9pZCBWYXJTdGF0
ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCopCit2b2lkIFZhclN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiwgVGFpbENhbGxNb2RlKQogewogICAgIEFT
U0VSVChtX2V4cHIpOwogICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3Rh
dGVtZW50LCBmaXJzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwpA
QCAtMjA3Miw3ICsyMTIyLDcgQEAgdm9pZCBWYXJTdGF0ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAKIC8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFbXB0eVZhckV4cHJlc3Npb24gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQogCi1SZWdpc3RlcklEKiBFbXB0eVZhckV4cHJlc3Npb246OmVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKK1JlZ2lzdGVy
SUQqIEVtcHR5VmFyRXhwcmVzc2lvbjo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqLCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAgaWYgKCFnZW5lcmF0
b3Iudm0oKS0+dHlwZVByb2ZpbGVyKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjEz
MSw3ICsyMTgxLDcgQEAgYm9vbCBJZkVsc2VOb2RlOjp0cnlGb2xkQnJlYWtBbmRDb250aW51ZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBTdGF0ZW1lbnQKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLXZvaWQgSWZFbHNlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3ZvaWQgSWZFbHNlTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxN
b2RlIHRhaWxDYWxsTW9kZSkKIHsKICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhl
Y3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNl
dCgpKTsKICAgICAKQEAgLTIxNDksNyArMjE5OSw3IEBAIHZvaWQgSWZFbHNlTm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKICAg
ICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVDb250cm9sRmxvdyhtX2lmQmxvY2stPnN0YXJ0T2Zmc2V0
KCkpOwogCiAgICAgaWYgKCFkaWRGb2xkSWZCbG9jaykgewotICAgICAgICBnZW5lcmF0b3IuZW1p
dE5vZGUoZHN0LCBtX2lmQmxvY2spOworICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBt
X2lmQmxvY2ssIHRhaWxDYWxsTW9kZSk7CiAgICAgICAgIGlmIChtX2Vsc2VCbG9jaykKICAgICAg
ICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChhZnRlckVsc2UuZ2V0KCkpOwogICAgIH0KQEAgLTIx
NTgsNyArMjIwOCw3IEBAIHZvaWQgSWZFbHNlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIAogICAgIGlmIChtX2Vsc2VCbG9j
aykgewogICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVDb250cm9sRmxvdyhtX2lmQmxvY2st
PmVuZE9mZnNldCgpICsgKG1faWZCbG9jay0+aXNCbG9jaygpID8gMSA6IDApKTsKLSAgICAgICAg
Z2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9lbHNlQmxvY2spOworICAgICAgICBnZW5lcmF0b3Iu
ZW1pdE5vZGUoZHN0LCBtX2Vsc2VCbG9jaywgdGFpbENhbGxNb2RlKTsKICAgICB9CiAKICAgICBn
ZW5lcmF0b3IuZW1pdExhYmVsKGFmdGVyRWxzZS5nZXQoKSk7CkBAIC0yMTY4LDcgKzIyMTgsNyBA
QCB2b2lkIElmRWxzZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBkc3QpCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSBEb1doaWxlTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLXZvaWQg
RG9XaGlsZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlcklEKiBkc3QpCit2b2lkIERvV2hpbGVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUgdGFpbENh
bGxNb2RlKQogewogICAgIExhYmVsU2NvcGVQdHIgc2NvcGUgPSBnZW5lcmF0b3IubmV3TGFiZWxT
Y29wZShMYWJlbFNjb3BlOjpMb29wKTsKIApAQCAtMjE3Nyw3ICsyMjI3LDcgQEAgdm9pZCBEb1do
aWxlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqIGRzdCkKICAgICBnZW5lcmF0b3IuZW1pdExvb3BIaW50KCk7CiAgICAgZ2VuZXJhdG9y
LmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGxhc3RMaW5lKCksIHN0YXJ0T2Zm
c2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKIAotICAgIGdlbmVyYXRvci5lbWl0Tm9kZShkc3Qs
IG1fc3RhdGVtZW50KTsKKyAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX3N0YXRlbWVudCwg
dGFpbENhbGxNb2RlKTsKIAogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoc2NvcGUtPmNvbnRpbnVl
VGFyZ2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVt
ZW50LCBsYXN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7CkBAIC0y
MTg4LDcgKzIyMzgsNyBAQCB2b2lkIERvV2hpbGVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0gV2hpbGVOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogCi12b2lkIFdoaWxlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3ZvaWQgV2hpbGVOb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2Fs
bE1vZGUgdGFpbENhbGxNb2RlKQogewogICAgIExhYmVsU2NvcGVQdHIgc2NvcGUgPSBnZW5lcmF0
b3IubmV3TGFiZWxTY29wZShMYWJlbFNjb3BlOjpMb29wKTsKICAgICBSZWZQdHI8TGFiZWw+IHRv
cE9mTG9vcCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwpAQCAtMjIwMCw3ICsyMjUwLDcgQEAgdm9p
ZCBXaGlsZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlcklEKiBkc3QpCiAgICAgZ2VuZXJhdG9yLmVtaXRMb29wSGludCgpOwogICAgIAogICAg
IGdlbmVyYXRvci5lbWl0UHJvZmlsZUNvbnRyb2xGbG93KG1fc3RhdGVtZW50LT5zdGFydE9mZnNl
dCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX3N0YXRlbWVudCk7CisgICAgZ2Vu
ZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9zdGF0ZW1lbnQsIHRhaWxDYWxsTW9kZSk7CiAKICAgICBn
ZW5lcmF0b3IuZW1pdExhYmVsKHNjb3BlLT5jb250aW51ZVRhcmdldCgpKTsKICAgICBnZW5lcmF0
b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIHN0YXJ0
T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKQEAgLTIyMTQsNyArMjI2NCw3IEBAIHZvaWQg
V2hpbGVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCogZHN0KQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRm9yTm9k
ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi12b2lkIEZvck5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBk
c3QpCit2b2lkIEZvck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSB0YWlsQ2FsbE1vZGUpCiB7CiAgICAg
TGFiZWxTY29wZVB0ciBzY29wZSA9IGdlbmVyYXRvci5uZXdMYWJlbFNjb3BlKExhYmVsU2NvcGU6
Okxvb3ApOwogCkBAIC0yMjMxLDcgKzIyODEsNyBAQCB2b2lkIEZvck5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAgICAgZ2Vu
ZXJhdG9yLmVtaXRMb29wSGludCgpOwogICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZUNvbnRyb2xG
bG93KG1fc3RhdGVtZW50LT5zdGFydE9mZnNldCgpKTsKIAotICAgIGdlbmVyYXRvci5lbWl0Tm9k
ZShkc3QsIG1fc3RhdGVtZW50KTsKKyAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX3N0YXRl
bWVudCwgdGFpbENhbGxNb2RlKTsKIAogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoc2NvcGUtPmNv
bnRpbnVlVGFyZ2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRl
U3RhdGVtZW50LCBmaXJzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkp
OwpAQCAtMjQ4MSwxMyArMjUzMSwxMyBAQCB2b2lkIEZvckluTm9kZTo6ZW1pdE11bHRpTG9vcEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqCiAgICAgZ2Vu
ZXJhdG9yLmVtaXRQcm9maWxlQ29udHJvbEZsb3cocHJvZmlsZXJFbmRPZmZzZXQpOwogfQogCi12
b2lkIEZvckluTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIGRzdCkKK3ZvaWQgRm9ySW5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUpCiB7CiAg
ICAgdGhpcy0+ZW1pdE11bHRpTG9vcEJ5dGVjb2RlKGdlbmVyYXRvciwgZHN0KTsKIH0KIAogLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZvck9mTm9kZSAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLXZvaWQgRm9yT2ZOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQordm9pZCBGb3JPZk5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBk
c3QsIFRhaWxDYWxsTW9kZSkKIHsKICAgICBpZiAoIW1fbGV4cHItPmlzQXNzaWdubWVudExvY2F0
aW9uKCkpIHsKICAgICAgICAgZW1pdFRocm93UmVmZXJlbmNlRXJyb3IoZ2VuZXJhdG9yLCBBU0NJ
SUxpdGVyYWwoIkxlZnQgc2lkZSBvZiBmb3Itb2Ygc3RhdGVtZW50IGlzIG5vdCBhIHJlZmVyZW5j
ZS4iKSk7CkBAIC0yNTYzLDcgKzI2MTMsNyBAQCBMYWJlbCogQ29udGludWVOb2RlOjp0cml2aWFs
VGFyZ2V0KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IpCiAgICAgcmV0dXJuIHNjb3BlLT5j
b250aW51ZVRhcmdldCgpOwogfQogCi12b2lkIENvbnRpbnVlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQordm9pZCBDb250aW51ZU5v
ZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklE
KiwgVGFpbENhbGxNb2RlKQogewogICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVj
dXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0
KCkpOwogICAgIApAQCAtMjU5Miw3ICsyNjQyLDcgQEAgTGFiZWwqIEJyZWFrTm9kZTo6dHJpdmlh
bFRhcmdldChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yKQogICAgIHJldHVybiBzY29wZS0+
YnJlYWtUYXJnZXQoKTsKIH0KIAotdm9pZCBCcmVha05vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKK3ZvaWQgQnJlYWtOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCosIFRhaWxD
YWxsTW9kZSkKIHsKICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRl
bWVudCwgZmlyc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKICAg
ICAKQEAgLTI2MDcsNyArMjY1Nyw3IEBAIHZvaWQgQnJlYWtOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAKIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSBSZXR1cm5Ob2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAKLXZvaWQgUmV0dXJuTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3ZvaWQgUmV0dXJuTm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFp
bENhbGxNb2RlIHRhaWxDYWxsTW9kZSkKIHsKICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhX
aWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFy
dE9mZnNldCgpKTsKICAgICBBU1NFUlQoZ2VuZXJhdG9yLmNvZGVUeXBlKCkgPT0gRnVuY3Rpb25D
b2RlKTsKQEAgLTI2MTUsNyArMjY2NSw3IEBAIHZvaWQgUmV0dXJuTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKICAgICBpZiAo
ZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCiAgICAgICAgIGRzdCA9IDA7CiAKLSAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuUmVnaXN0ZXIgPSBtX3ZhbHVlID8gZ2VuZXJhdG9y
LmVtaXROb2RlKGRzdCwgbV92YWx1ZSkgOiBnZW5lcmF0b3IuZW1pdExvYWQoZHN0LCBqc1VuZGVm
aW5lZCgpKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuUmVnaXN0ZXIgPSBtX3ZhbHVl
ID8gZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV92YWx1ZSwgdGFpbENhbGxNb2RlKSA6IGdlbmVy
YXRvci5lbWl0TG9hZChkc3QsIGpzVW5kZWZpbmVkKCkpOwogICAgIGlmIChnZW5lcmF0b3Iudm0o
KS0+dHlwZVByb2ZpbGVyKCkpIHsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShy
ZXR1cm5SZWdpc3Rlci5nZXQoKSwgUHJvZmlsZVR5cGVCeXRlY29kZUZ1bmN0aW9uUmV0dXJuU3Rh
dGVtZW50LCBudWxscHRyKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRUeXBlUHJvZmlsZXJFeHBy
ZXNzaW9uSW5mbyhkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwpAQCAtMjYzNiwyNSArMjY4Niwy
NSBAQCB2b2lkIFJldHVybk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSBXaXRoTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLXZv
aWQgV2l0aE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlcklEKiBkc3QpCit2b2lkIFdpdGhOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUgdGFpbENhbGxN
b2RlKQogewogICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50
LCBmaXJzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwogCiAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fZXhwcik7CiAg
ICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhtX2Rpdm90LCBtX2Rpdm90IC0gbV9leHBy
ZXNzaW9uTGVuZ3RoLCBtX2Rpdm90KTsKICAgICBnZW5lcmF0b3IuZW1pdFB1c2hXaXRoU2NvcGUo
Z2VuZXJhdG9yLnNjb3BlUmVnaXN0ZXIoKSwgc2NvcGUuZ2V0KCkpOwotICAgIGdlbmVyYXRvci5l
bWl0Tm9kZShkc3QsIG1fc3RhdGVtZW50KTsKKyAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBt
X3N0YXRlbWVudCwgdGFpbENhbGxNb2RlKTsKICAgICBnZW5lcmF0b3IuZW1pdFBvcFNjb3BlKGdl
bmVyYXRvci5zY29wZVJlZ2lzdGVyKCkpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gQ2FzZUNsYXVzZU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IAotaW5saW5lIHZvaWQgQ2FzZUNsYXVzZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCitpbmxpbmUgdm9pZCBDYXNlQ2xhdXNl
Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
SUQqIGRzdCwgVGFpbENhbGxNb2RlIHRhaWxDYWxsTW9kZSkKIHsKICAgICBnZW5lcmF0b3IuZW1p
dFByb2ZpbGVDb250cm9sRmxvdyhtX3N0YXJ0T2Zmc2V0KTsKICAgICBpZiAoIW1fc3RhdGVtZW50
cykKICAgICAgICAgcmV0dXJuOwotICAgIG1fc3RhdGVtZW50cy0+ZW1pdEJ5dGVjb2RlKGdlbmVy
YXRvciwgZHN0KTsKKyAgICBtX3N0YXRlbWVudHMtPmVtaXRCeXRlY29kZShnZW5lcmF0b3IsIGRz
dCwgdGFpbENhbGxNb2RlKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IENhc2VCbG9ja05vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTI3NDgs
NyArMjc5OCw3IEBAIFN3aXRjaEluZm86OlN3aXRjaFR5cGUgQ2FzZUJsb2NrTm9kZTo6dHJ5VGFi
bGVTd2l0Y2goVmVjdG9yPEV4cHJlc3Npb25Ob2RlKiwgOD4mCiAgICAgcmV0dXJuIFN3aXRjaElu
Zm86OlN3aXRjaFN0cmluZzsKIH0KIAotdm9pZCBDYXNlQmxvY2tOb2RlOjplbWl0Qnl0ZWNvZGVG
b3JCbG9jayhCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBzd2l0Y2hF
eHByZXNzaW9uLCBSZWdpc3RlcklEKiBkc3QpCit2b2lkIENhc2VCbG9ja05vZGU6OmVtaXRCeXRl
Y29kZUZvckJsb2NrKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHN3
aXRjaEV4cHJlc3Npb24sIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlIHRhaWxDYWxsTW9k
ZSkKIHsKICAgICBSZWZQdHI8TGFiZWw+IGRlZmF1bHRMYWJlbDsKICAgICBWZWN0b3I8UmVmUHRy
PExhYmVsPiwgOD4gbGFiZWxWZWN0b3I7CkBAIC0yNzg3LDE3ICsyODM3LDE3IEBAIHZvaWQgQ2Fz
ZUJsb2NrTm9kZTo6ZW1pdEJ5dGVjb2RlRm9yQmxvY2soQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJCiAgICAgc2l6ZV90IGkgPSAwOwogICAgIGZvciAoQ2xhdXNlTGlzdE5v
ZGUqIGxpc3QgPSBtX2xpc3QxOyBsaXN0OyBsaXN0ID0gbGlzdC0+Z2V0TmV4dCgpKSB7CiAgICAg
ICAgIGdlbmVyYXRvci5lbWl0TGFiZWwobGFiZWxWZWN0b3JbaSsrXS5nZXQoKSk7Ci0gICAgICAg
IGxpc3QtPmdldENsYXVzZSgpLT5lbWl0Qnl0ZWNvZGUoZ2VuZXJhdG9yLCBkc3QpOworICAgICAg
ICBsaXN0LT5nZXRDbGF1c2UoKS0+ZW1pdEJ5dGVjb2RlKGdlbmVyYXRvciwgZHN0LCB0YWlsQ2Fs
bE1vZGUpOwogICAgIH0KIAogICAgIGlmIChtX2RlZmF1bHRDbGF1c2UpIHsKICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRMYWJlbChkZWZhdWx0TGFiZWwuZ2V0KCkpOwotICAgICAgICBtX2RlZmF1bHRD
bGF1c2UtPmVtaXRCeXRlY29kZShnZW5lcmF0b3IsIGRzdCk7CisgICAgICAgIG1fZGVmYXVsdENs
YXVzZS0+ZW1pdEJ5dGVjb2RlKGdlbmVyYXRvciwgZHN0LCB0YWlsQ2FsbE1vZGUpOwogICAgIH0K
IAogICAgIGZvciAoQ2xhdXNlTGlzdE5vZGUqIGxpc3QgPSBtX2xpc3QyOyBsaXN0OyBsaXN0ID0g
bGlzdC0+Z2V0TmV4dCgpKSB7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwobGFiZWxWZWN0
b3JbaSsrXS5nZXQoKSk7Ci0gICAgICAgIGxpc3QtPmdldENsYXVzZSgpLT5lbWl0Qnl0ZWNvZGUo
Z2VuZXJhdG9yLCBkc3QpOworICAgICAgICBsaXN0LT5nZXRDbGF1c2UoKS0+ZW1pdEJ5dGVjb2Rl
KGdlbmVyYXRvciwgZHN0LCB0YWlsQ2FsbE1vZGUpOwogICAgIH0KICAgICBpZiAoIW1fZGVmYXVs
dENsYXVzZSkKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChkZWZhdWx0TGFiZWwuZ2V0KCkp
OwpAQCAtMjgxMSwxNCArMjg2MSwxNCBAQCB2b2lkIENhc2VCbG9ja05vZGU6OmVtaXRCeXRlY29k
ZUZvckJsb2NrKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySQogCiAvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU3dpdGNoTm9kZSAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogCi12b2lkIFN3aXRjaE5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit2b2lkIFN3aXRjaE5v
ZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklE
KiBkc3QsIFRhaWxDYWxsTW9kZSB0YWlsQ2FsbE1vZGUpCiB7CiAgICAgZ2VuZXJhdG9yLmVtaXRE
ZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBzdGFydE9mZnNldCgp
LCBsaW5lU3RhcnRPZmZzZXQoKSk7CiAgICAgCiAgICAgTGFiZWxTY29wZVB0ciBzY29wZSA9IGdl
bmVyYXRvci5uZXdMYWJlbFNjb3BlKExhYmVsU2NvcGU6OlN3aXRjaCk7CiAKICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gcjAgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9leHByKTsKLSAgICBtX2Jsb2Nr
LT5lbWl0Qnl0ZWNvZGVGb3JCbG9jayhnZW5lcmF0b3IsIHIwLmdldCgpLCBkc3QpOworICAgIG1f
YmxvY2stPmVtaXRCeXRlY29kZUZvckJsb2NrKGdlbmVyYXRvciwgcjAuZ2V0KCksIGRzdCwgdGFp
bENhbGxNb2RlKTsKIAogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoc2NvcGUtPmJyZWFrVGFyZ2V0
KCkpOwogICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZUNvbnRyb2xGbG93KGVuZE9mZnNldCgpKTsK
QEAgLTI4MjYsNyArMjg3Niw3IEBAIHZvaWQgU3dpdGNoTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIAogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIExhYmVsTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIAotdm9pZCBMYWJlbE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit2b2lkIExhYmVsTm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFp
bENhbGxNb2RlKQogewogICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3Rh
dGVtZW50LCBmaXJzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwog
CkBAIC0yODQwLDcgKzI4OTAsNyBAQCB2b2lkIExhYmVsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIAogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIFRocm93Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIAotdm9pZCBUaHJvd05vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit2b2lkIFRocm93Tm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFp
bENhbGxNb2RlKQogewogICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3Rh
dGVtZW50LCBmaXJzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwog
CkBAIC0yODU1LDcgKzI5MDUsNyBAQCB2b2lkIFRocm93Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIAogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIFRyeU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIAotdm9pZCBUcnlOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQordm9pZCBUcnlOb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2Fs
bE1vZGUgdGFpbENhbGxNb2RlKQogewogICAgIC8vIE5PVEU6IFRoZSBjYXRjaCBhbmQgZmluYWxs
eSBibG9ja3MgbXVzdCBiZSBsYWJlbGVkIGV4cGxpY2l0bHksIHNvIHRoZQogICAgIC8vIG9wdGlt
aXplciBrbm93cyB0aGV5IG1heSBiZSBqdW1wZWQgdG8gZnJvbSBhbnl3aGVyZS4KQEAgLTI4OTMs
NyArMjk0MywxMCBAQCB2b2lkIFRyeU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQ
dXNoQ2F0Y2hTY29wZShnZW5lcmF0b3Iuc2NvcGVSZWdpc3RlcigpLCBtX3Rocm93blZhbHVlSWRl
bnQsIHRocm93blZhbHVlUmVnaXN0ZXIuZ2V0KCksIERvbnREZWxldGUpOwogICAgICAgICBnZW5l
cmF0b3IuZW1pdFByb2ZpbGVDb250cm9sRmxvdyhtX3RyeUJsb2NrLT5lbmRPZmZzZXQoKSArIDEp
OwotICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX2NhdGNoQmxvY2spOworICAgICAg
ICBpZiAobV9maW5hbGx5QmxvY2spCisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0
LCBtX2NhdGNoQmxvY2spOworICAgICAgICBlbHNlCisgICAgICAgICAgICBnZW5lcmF0b3IuZW1p
dE5vZGUoZHN0LCBtX2NhdGNoQmxvY2ssIHRhaWxDYWxsTW9kZSk7CiAgICAgICAgIGdlbmVyYXRv
ci5lbWl0UG9wU2NvcGUoZ2VuZXJhdG9yLnNjb3BlUmVnaXN0ZXIoKSk7CiAgICAgICAgIGdlbmVy
YXRvci5lbWl0TGFiZWwoY2F0Y2hFbmRMYWJlbC5nZXQoKSk7CiAgICAgfQpAQCAtMjkwOSw3ICsy
OTYyLDcgQEAgdm9pZCBUcnlOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogCiAgICAgICAgIC8vIE5vcm1hbCBwYXRoOiBydW4g
dGhlIGZpbmFsbHkgY29kZSwgYW5kIGp1bXAgdG8gdGhlIGVuZC4KICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRQcm9maWxlQ29udHJvbEZsb3coZmluYWxseVN0YXJ0T2Zmc2V0KTsKLSAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9maW5hbGx5QmxvY2spOworICAgICAgICBnZW5lcmF0b3Iu
ZW1pdE5vZGUoZHN0LCBtX2ZpbmFsbHlCbG9jaywgdGFpbENhbGxNb2RlKTsKICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRQcm9maWxlQ29udHJvbEZsb3cobV9maW5hbGx5QmxvY2stPmVuZE9mZnNldCgp
ICsgMSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChmaW5hbGx5RW5kTGFiZWwuZ2V0KCkp
OwogCkBAIC0yOTE4LDcgKzI5NzEsNyBAQCB2b2lkIFRyeU5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAgICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiB0aHJvd25WYWx1ZVJlZ2lzdGVyID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFy
eSgpOwogICAgICAgICBnZW5lcmF0b3IucG9wVHJ5QW5kRW1pdENhdGNoKHRyeURhdGEsIGV4Y2Vw
dGlvblJlZ2lzdGVyLmdldCgpLCB0aHJvd25WYWx1ZVJlZ2lzdGVyLmdldCgpLCBwcmVGaW5hbGx5
TGFiZWwuZ2V0KCksIEhhbmRsZXJUeXBlOjpGaW5hbGx5KTsKICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRQcm9maWxlQ29udHJvbEZsb3coZmluYWxseVN0YXJ0T2Zmc2V0KTsKLSAgICAgICAgZ2VuZXJh
dG9yLmVtaXROb2RlKGRzdCwgbV9maW5hbGx5QmxvY2spOworICAgICAgICBnZW5lcmF0b3IuZW1p
dE5vZGUoZHN0LCBtX2ZpbmFsbHlCbG9jaywgdGFpbENhbGxNb2RlKTsKICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRUaHJvdyhleGNlcHRpb25SZWdpc3Rlci5nZXQoKSk7CiAKICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRMYWJlbChmaW5hbGx5RW5kTGFiZWwuZ2V0KCkpOwpAQCAtMjkzNCwxMiArMjk4Nywx
NSBAQCBpbmxpbmUgdm9pZCBTY29wZU5vZGU6OmVtaXRTdGF0ZW1lbnRzQnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaQogewogICAgIGlmICghbV9zdGF0ZW1lbnRzKQog
ICAgICAgICByZXR1cm47Ci0gICAgbV9zdGF0ZW1lbnRzLT5lbWl0Qnl0ZWNvZGUoZ2VuZXJhdG9y
LCBkc3QpOworICAgIGlmIChpc1N0cmljdE1vZGUoKSkKKyAgICAgICAgbV9zdGF0ZW1lbnRzLT5l
bWl0Qnl0ZWNvZGUoZ2VuZXJhdG9yLCBkc3QsIENhbkhhdmVUYWlsQ2FsbHMpOworICAgIGVsc2UK
KyAgICAgICAgbV9zdGF0ZW1lbnRzLT5lbWl0Qnl0ZWNvZGUoZ2VuZXJhdG9yLCBkc3QsIE5vVGFp
bENhbGxzKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByb2dyYW1O
b2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLXZvaWQgUHJvZ3JhbU5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKK3Zv
aWQgUHJvZ3JhbU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiwgVGFpbENhbGxNb2RlKQogewogICAgIGdlbmVyYXRvci5lbWl0RGVidWdI
b29rKFdpbGxFeGVjdXRlUHJvZ3JhbSwgc3RhcnRMaW5lKCksIHN0YXJ0U3RhcnRPZmZzZXQoKSwg
c3RhcnRMaW5lU3RhcnRPZmZzZXQoKSk7CiAKQEAgLTI5NTQsNyArMzAxMCw3IEBAIHZvaWQgUHJv
Z3JhbU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklEKikKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEV2YWxOb2RlIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLXZvaWQgRXZhbE5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKK3ZvaWQgRXZhbE5v
ZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklE
KiwgVGFpbENhbGxNb2RlKQogewogICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVj
dXRlUHJvZ3JhbSwgc3RhcnRMaW5lKCksIHN0YXJ0U3RhcnRPZmZzZXQoKSwgc3RhcnRMaW5lU3Rh
cnRPZmZzZXQoKSk7CiAKQEAgLTI5NjgsMTEgKzMwMjQsMTEgQEAgdm9pZCBFdmFsTm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogCiAv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25Cb2R5Tm9kZSAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi12b2lkIEZ1bmN0aW9uQm9keU5vZGU6OmVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKQordm9pZCBGdW5jdGlvbkJvZHlO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiwgVGFpbENh
bGxNb2RlKQogewogfQogCi12b2lkIEZ1bmN0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQordm9pZCBGdW5jdGlvbk5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiwgVGFp
bENhbGxNb2RlKQogewogICAgIGlmIChnZW5lcmF0b3Iudm0oKS0+dHlwZVByb2ZpbGVyKCkpIHsK
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3BhcmFtZXRlcnMtPnNpemUoKTsgaSsr
KSB7CkBAIC0zMDE0LDEzICszMDcwLDEzIEBAIHZvaWQgRnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAKIC8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jRGVjbE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAKLXZvaWQgRnVuY0RlY2xOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKikKK3ZvaWQgRnVuY0RlY2xOb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiwgVGFpbENhbGxNb2RlKQogewogfQog
CiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY0V4cHJOb2RlIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1SZWdpc3RlcklEKiBGdW5jRXhwck5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3Qp
CitSZWdpc3RlcklEKiBGdW5jRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSkKIHsKICAgICByZXR1
cm4gZ2VuZXJhdG9yLmVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb24oZ2VuZXJhdG9yLmZpbmFsRGVz
dGluYXRpb24oZHN0KSwgdGhpcyk7CiB9CkBAIC0zMDI4LDE0ICszMDg0LDE0IEBAIFJlZ2lzdGVy
SUQqIEZ1bmNFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqCiAjaWYgRU5BQkxFKEVTNl9DTEFTU19TWU5UQVgpCiAvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ2xhc3NEZWNsTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KIAotdm9pZCBDbGFzc0RlY2xOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQordm9pZCBDbGFzc0RlY2xO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCogZHN0LCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9j
bGFzc0RlY2xhcmF0aW9uKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IENsYXNzRXhwck5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlZ2lz
dGVySUQqIENsYXNzRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCitSZWdpc3RlcklEKiBDbGFzc0V4cHJOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBU
YWlsQ2FsbE1vZGUpCiB7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHN1cGVyY2xhc3M7CiAgICAg
aWYgKG1fY2xhc3NIZXJpdGFnZSkgewpAQCAtMzEwNiw3ICszMTYyLDcgQEAgUmVnaXN0ZXJJRCog
Q2xhc3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQKICNlbmRpZgogICAgIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tIERlc3RydWN0dXJpbmdBc3NpZ25tZW50Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLQotUmVnaXN0
ZXJJRCogRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogRGVzdHJ1
Y3R1cmluZ0Fzc2lnbm1lbnROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAgaWYgKFJlZ2lz
dGVySUQqIHJlc3VsdCA9IG1fYmluZGluZ3MtPmVtaXREaXJlY3RCaW5kaW5nKGdlbmVyYXRvciwg
ZHN0LCBtX2luaXRpYWxpemVyKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTMzNTEsNyAr
MzQwNyw3IEBAIHZvaWQgQmluZGluZ05vZGU6OmNvbGxlY3RCb3VuZElkZW50aWZpZXJzKFZlY3Rv
cjxJZGVudGlmaWVyPiYgaWRlbnRpZmllcnMpIGNvbnN0CiAgICAgaWRlbnRpZmllcnMuYXBwZW5k
KG1fYm91bmRQcm9wZXJ0eSk7CiB9CiAgICAgCi1SZWdpc3RlcklEKiBTcHJlYWRFeHByZXNzaW9u
Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopCitSZWdp
c3RlcklEKiBTcHJlYWRFeHByZXNzaW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCosIFRhaWxDYWxsTW9kZSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
cy5oCmluZGV4IGYyOWE1MTAuLjdmNDg0ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05v
ZGVzLmgKQEAgLTc2LDYgKzc2LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH07CiAgICAgaW5s
aW5lIEZhbGxUaHJvdWdoTW9kZSBpbnZlcnQoRmFsbFRocm91Z2hNb2RlIGZhbGxUaHJvdWdoTW9k
ZSkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RmFsbFRocm91Z2hNb2RlPighZmFsbFRocm91Z2hNb2Rl
KTsgfQogCisgICAgZW51bSBUYWlsQ2FsbE1vZGUgeworICAgICAgICBDYW5IYXZlVGFpbENhbGxz
LAorICAgICAgICBOb1RhaWxDYWxscywKKyAgICB9OworCiAgICAgdHlwZWRlZiBIYXNoU2V0PFJl
ZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIElkZW50aWZpZXJSZXBIYXNoPiBJZGVudGlmaWVyU2V0
OwogCiAgICAgbmFtZXNwYWNlIERlY2xhcmF0aW9uU3RhY2tzIHsKQEAgLTE0NCw3ICsxNDksNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgUmVzdWx0VHlwZSA9IFJlc3VsdFR5cGU6OnVua25vd25UeXBlKCkpOwogCiAgICAg
cHVibGljOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIGRlc3RpbmF0aW9uID0gMCkgPSAwOworICAgICAgICB2
aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqIGRlc3RpbmF0aW9uID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpID0gMDsK
IAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNOdW1iZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTdHJpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQpAQCAtMTgxLDcgKzE4Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTdGF0ZW1lbnRO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpOwogCiAgICAgcHVibGljOgotICAgICAgICB2aXJ0
dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogZGVz
dGluYXRpb24gPSAwKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBkZXN0aW5hdGlvbiA9IDAsIFRhaWxDYWxsTW9k
ZSA9IE5vVGFpbENhbGxzKSA9IDA7CiAKICAgICAgICAgdm9pZCBzZXRMb2ModW5zaWduZWQgZmly
c3RMaW5lLCB1bnNpZ25lZCBsYXN0TGluZSwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgbGluZVN0YXJ0
T2Zmc2V0KTsKICAgICAgICAgdW5zaWduZWQgbGFzdExpbmUoKSBjb25zdCB7IHJldHVybiBtX2xh
c3RMaW5lOyB9CkBAIC0yMDksNyArMjE0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZp
cnR1YWwgYm9vbCBpc0NvbnN0YW50KCkgY29uc3QgIG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
ICAgICAgICAgdmlydHVhbCBKU1ZhbHVlIGpzVmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImKSBjb25z
dCA9IDA7CiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAg
ICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlSW5Db25kaXRpb25Db250ZXh0KEJ5dGVj
b2RlR2VuZXJhdG9yJiwgTGFiZWwqIHRydWVUYXJnZXQsIExhYmVsKiBmYWxzZVRhcmdldCwgRmFs
bFRocm91Z2hNb2RlKSBvdmVycmlkZTsKICAgICB9OwogCkBAIC0yMzksNyArMjQ0LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIE51bWJlck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
ZG91YmxlIHZhbHVlKTsKICAgICAgICAgZG91YmxlIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92
YWx1ZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNJbnRlZ2VyTm9kZSgpIGNvbnN0ID0gMDsK
LSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlIGZpbmFsOworICAgICAgICB2aXJ0dWFsIFJl
Z2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0g
MCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlIGZpbmFsOwogCiAgICAgcHJp
dmF0ZToKICAgICAgICAgdmlydHVhbCBib29sIGlzTnVtYmVyKCkgY29uc3Qgb3ZlcnJpZGUgZmlu
YWwgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtNDQ5LDcgKzQ1NCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBjb25zdCBJZGVudGlmaWVyJiByYXcoKSB7IHJldHVybiBtX3JhdzsgfQogCiAgICAg
cHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFs
IFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAgIGNv
bnN0IElkZW50aWZpZXImIG1fY29va2VkOwogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX3Jh
dzsKQEAgLTQ3Nyw3ICs0ODIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVGVtcGxhdGVF
eHByZXNzaW9uTGlzdE5vZGUqIHRlbXBsYXRlRXhwcmVzc2lvbnMoKSBjb25zdCB7IHJldHVybiBt
X3RlbXBsYXRlRXhwcmVzc2lvbnM7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwg
UmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFp
bENhbGxzKSBvdmVycmlkZTsKIAogICAgICAgICBUZW1wbGF0ZVN0cmluZ0xpc3ROb2RlKiBtX3Rl
bXBsYXRlU3RyaW5nczsKICAgICAgICAgVGVtcGxhdGVFeHByZXNzaW9uTGlzdE5vZGUqIG1fdGVt
cGxhdGVFeHByZXNzaW9uczsKQEAgLTQ5MCw3ICs0OTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgVGVtcGxhdGVMaXRlcmFsTm9kZSogdGVtcGxhdGVMaXRlcmFsKCkgY29uc3QgeyByZXR1
cm4gbV90ZW1wbGF0ZUxpdGVyYWw7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwg
UmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFp
bENhbGxzKSBvdmVycmlkZTsKIAogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV90YWc7CiAgICAg
ICAgIFRlbXBsYXRlTGl0ZXJhbE5vZGUqIG1fdGVtcGxhdGVMaXRlcmFsOwpAQCAtNTAyLDcgKzUw
Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdFeHBOb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImIHBhdHRlcm4sIGNvbnN0IElkZW50aWZpZXImIGZs
YWdzKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAg
ICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsK
IAogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX3BhdHRlcm47CiAgICAgICAgIGNvbnN0IElk
ZW50aWZpZXImIG1fZmxhZ3M7CkBAIC01MTMsNyArNTE4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIFRoaXNOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFRoaXNURFpNb2RlKTsKIAog
ICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmly
dHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3Rl
cklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKIAogICAgICAg
ICBib29sIG1fc2hvdWxkQWx3YXlzRW1pdFREWkNoZWNrOwogICAgIH07CkBAIC01MjQsNyArNTI5
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIGJv
b2wgaXNTdXBlck5vZGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgICAg
IHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9k
ZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKICAgICB9OwogCiAgICAgY2xhc3MgUmVzb2x2ZU5v
ZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewpAQCAtNTM0LDcgKzUzOSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9pZGVudDsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3Rl
cklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92
ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMp
IG92ZXJyaWRlOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1B1cmUoQnl0ZWNvZGVHZW5lcmF0
b3ImKSBjb25zdCBvdmVycmlkZTsKICAgICAgICAgdmlydHVhbCBib29sIGlzTG9jYXRpb24oKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CkBAIC01NjksNyArNTc0LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICAgICAgRWxlbWVudE5vZGUqIGVsZW1lbnRzKCkgY29uc3QgeyBBU1NF
UlQoaXNTaW1wbGVBcnJheSgpKTsgcmV0dXJuIG1fZWxlbWVudDsgfQogICAgIHByaXZhdGU6Ci0g
ICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklE
KiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxD
YWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wg
aXNTaW1wbGVBcnJheSgpIGNvbnN0IG92ZXJyaWRlOwogCkBAIC02MDksNyArNjE0LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIFByb3BlcnR5TGlzdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgUHJvcGVydHlOb2RlKiwgUHJvcGVydHlMaXN0Tm9kZSopOwogCiAgICAgcHJpdmF0ZToK
LSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVy
SUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFp
bENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGVtaXRQdXRD
b25zdGFudFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCosIFByb3BlcnR5
Tm9kZSYpOwogCiAgICAgICAgIFByb3BlcnR5Tm9kZSogbV9ub2RlOwpAQCAtNjIyLDcgKzYyNyw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBPYmplY3RMaXRlcmFsTm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBQcm9wZXJ0eUxpc3ROb2RlKik7CiAKICAgICBwcml2YXRlOgotICAgICAg
ICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1v
ZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgUHJvcGVydHlMaXN0Tm9kZSog
bV9saXN0OwogICAgIH07CkBAIC02MzcsNyArNjQyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdubWVudHMoKSBjb25zdCB7IHJldHVybiBtX3N1YnNj
cmlwdEhhc0Fzc2lnbm1lbnRzOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJl
Z2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0g
MCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxD
YWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgdmlydHVhbCBib29sIGlzTG9jYXRpb24oKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0JyYWNr
ZXRBY2Nlc3Nvck5vZGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CkBAIC02NTUs
NyArNjYwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50OyB9CiAKICAgICBwcml2YXRlOgotICAg
ICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCog
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2Fs
bE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgdmlydHVhbCBib29sIGlz
TG9jYXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgICAgIHZpcnR1
YWwgYm9vbCBpc0RvdEFjY2Vzc29yTm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KQEAgLTY3MSw3ICs2NzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRXhwcmVzc2lv
bk5vZGUqIGV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBtX2V4cHJlc3Npb247IH0KICAgICAg
ICAgCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAg
ICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogICAg
ICAgICAKICAgICAgICAgdmlydHVhbCBib29sIGlzU3ByZWFkRXhwcmVzc2lvbigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcmVz
c2lvbjsKQEAgLTY4Niw3ICs2OTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRXhwcmVz
c2lvbk5vZGUqIG1fZXhwcjsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0
ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBv
dmVycmlkZTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxz
KSBvdmVycmlkZTsKICAgICB9OwogCiAgICAgY2xhc3MgQXJndW1lbnRzTm9kZSA6IHB1YmxpYyBQ
YXJzZXJBcmVuYUZyZWVhYmxlIHsKQEAgLTcwMyw3ICs3MDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgTmV3RXhwck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5v
ZGUqLCBBcmd1bWVudHNOb2RlKik7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJl
Z2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0g
MCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxD
YWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjsKICAgICAg
ICAgQXJndW1lbnRzTm9kZSogbV9hcmdzOwpAQCAtNzE0LDcgKzcxOSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBFdmFsRnVuY3Rpb25DYWxsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBBcmd1bWVudHNOb2RlKiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsK
IAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAg
dmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKIAogICAg
ICAgICBBcmd1bWVudHNOb2RlKiBtX2FyZ3M7CiAgICAgfTsKQEAgLTcyNCw3ICs3MjksNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgRnVuY3Rpb25DYWxsVmFsdWVOb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiwgQXJndW1lbnRzTm9kZSosIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0
dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBO
b1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjsK
ICAgICAgICAgQXJndW1lbnRzTm9kZSogbV9hcmdzOwpAQCAtNzM1LDcgKzc0MCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0
dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBO
b1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9pZGVu
dDsKICAgICAgICAgQXJndW1lbnRzTm9kZSogbV9hcmdzOwpAQCAtNzQ2LDcgKzc1MSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNj
cmlwdCwgYm9vbCBzdWJzY3JpcHRIYXNBc3NpZ25tZW50cywgQXJndW1lbnRzTm9kZSosIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICBwcml2YXRlOgotICAgICAg
ICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1v
ZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1f
YmFzZTsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fc3Vic2NyaXB0OwpAQCAtNzU5LDcgKzc2
NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVy
JiwgQXJndW1lbnRzTm9kZSosIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7
CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAg
IHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAg
ICBwcm90ZWN0ZWQ6CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Jhc2U7CkBAIC03ODAsNyAr
Nzg1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAjdW5kZWYgSlNDX0RFQ0xBUkVfQllURUNPREVfSU5U
UklOU0lDX0ZVTkNUSU9OUwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3Rl
cklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92
ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMp
IG92ZXJyaWRlOwogCiAgICAgICAgIEVtaXR0ZXJUeXBlIG1fZW1pdHRlcjsKICAgICAgICAgY29u
c3QgSWRlbnRpZmllciYgbV9pZGVudDsKQEAgLTc5Miw3ICs3OTcsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBBcmd1bWVudHNOb2Rl
KiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKIAogICAgIHByaXZhdGU6
Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3Rl
cklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRh
aWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKICAgICB9OwogICAgIAogICAgIGNs
YXNzIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZSA6IHB1YmxpYyBGdW5jdGlvbkNhbGxEb3ROb2Rl
IHsKQEAgLTgwMCw3ICs4MDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgQXBwbHlGdW5j
dGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBi
YXNlLCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJl
Z2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0g
MCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxD
YWxscykgb3ZlcnJpZGU7CiAgICAgfTsKIAogICAgIGNsYXNzIERlbGV0ZVJlc29sdmVOb2RlIDog
cHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewpA
QCAtODA4LDcgKzgxMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBEZWxldGVSZXNvbHZl
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZp
cnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9
IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKIAogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX2lk
ZW50OwogICAgIH07CkBAIC04MTgsNyArODIzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IERlbGV0ZUJyYWNrZXROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2Rl
KiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYg
ZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3Rl
cklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92
ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMp
IG92ZXJyaWRlOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Jhc2U7CiAgICAgICAgIEV4
cHJlc3Npb25Ob2RlKiBtX3N1YnNjcmlwdDsKQEAgLTgyOSw3ICs4MzQsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgRGVsZXRlRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHBy
ZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lz
dGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkg
b3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxs
cykgb3ZlcnJpZGU7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fYmFzZTsKICAgICAgICAg
Y29uc3QgSWRlbnRpZmllciYgbV9pZGVudDsKQEAgLTg0MCw3ICs4NDUsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgRGVsZXRlVmFsdWVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4
cHJlc3Npb25Ob2RlKik7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVy
SUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3Zl
cnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykg
b3ZlcnJpZGU7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjsKICAgICB9OwpAQCAt
ODUwLDcgKzg1NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBWb2lkTm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSopOwogCiAgICAgcHJpdmF0ZToKLSAgICAg
ICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxN
b2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBt
X2V4cHI7CiAgICAgfTsKQEAgLTg2Miw3ICs4NjcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnQ7
IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAg
ICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKIAog
ICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX2lkZW50OwogICAgIH07CkBAIC04NzIsNyArODc3
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFR5cGVPZlZhbHVlTm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSopOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
dmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2Rl
ID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2V4
cHI7CiAgICAgfTsKQEAgLTg4Miw3ICs4ODcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
UHJlZml4Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSosIE9wZXJh
dG9yLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBk
aXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJvdGVj
dGVkOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVn
aXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAw
LCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAgICAgICAgIHZpcnR1YWwg
UmVnaXN0ZXJJRCogZW1pdFJlc29sdmUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IDApOwogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCcmFja2V0KEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBl
bWl0RG90KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTg5Niw3ICs5
MDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUG9zdGZpeE5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqLCBPcGVyYXRvciwgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90RW5kKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVn
aXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAw
KSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENh
bGxzKSBvdmVycmlkZTsKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0UmVzb2x2ZShC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CiAgICAgICAgIHZp
cnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJyYWNrZXQoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3Rl
cklEKiA9IDApIG92ZXJyaWRlOwogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXREb3Qo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwpAQCAtOTExLDcg
KzkxNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBjb25zdCBFeHByZXNzaW9uTm9kZSog
ZXhwcigpIGNvbnN0IHsgcmV0dXJuIG1fZXhwcjsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
dmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2Rl
ID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAgIE9wY29kZUlEIG9wY29kZUlEKCkg
Y29uc3QgeyByZXR1cm4gbV9vcGNvZGVJRDsgfQogCkBAIC05NDEsNyArOTQ2LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIGNvbnN0IEV4cHJlc3Npb25Ob2RlKiBleHByKCkgY29uc3QgeyBy
ZXR1cm4gbV9leHByOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVy
SUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3Zl
cnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykg
b3ZlcnJpZGU7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjsKICAgICB9OwpAQCAt
OTY2LDcgKzk3MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAg
dm9pZCB0cnlGb2xkVG9CcmFuY2goQnl0ZWNvZGVHZW5lcmF0b3ImLCBUcmlTdGF0ZSYgYnJhbmNo
Q29uZGl0aW9uLCBFeHByZXNzaW9uTm9kZSomIGJyYW5jaEV4cHJlc3Npb24pOwotICAgICAgICB2
aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUg
PSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIE9wY29k
ZUlEIG9wY29kZUlEKCkgY29uc3QgeyByZXR1cm4gbV9vcGNvZGVJRDsgfQpAQCAtMTA1MCw3ICsx
MDU1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFRocm93YWJsZUJpbmFyeU9wTm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25O
b2RlKiBleHByMiwgT3Bjb2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAKICAgICBw
cml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwg
UmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAgICAgfTsKICAgICAK
ICAgICBjbGFzcyBJbnN0YW5jZU9mTm9kZSA6IHB1YmxpYyBUaHJvd2FibGVCaW5hcnlPcE5vZGUg
ewpAQCAtMTA1OCw3ICsxMDYzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEluc3RhbmNl
T2ZOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogCiAgICAgcHJp
dmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJl
Z2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0g
MCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogICAgIH07CiAKICAgICBj
bGFzcyBJbk5vZGUgOiBwdWJsaWMgVGhyb3dhYmxlQmluYXJ5T3BOb2RlIHsKQEAgLTEwNzEsNyAr
MTA3Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBFcXVhbE5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIs
IGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0
dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBO
b1RhaWxDYWxscykgb3ZlcnJpZGU7CiAgICAgfTsKIAogICAgIGNsYXNzIE5vdEVxdWFsTm9kZSA6
IHB1YmxpYyBCaW5hcnlPcE5vZGUgewpAQCAtMTA4NCw3ICsxMDg5LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIFN0cmljdEVxdWFsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fz
c2lnbm1lbnRzKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCog
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlk
ZTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVy
cmlkZTsKICAgICB9OwogCiAgICAgY2xhc3MgTm90U3RyaWN0RXF1YWxOb2RlIDogcHVibGljIEJp
bmFyeU9wTm9kZSB7CkBAIC0xMTEzLDcgKzExMTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgTG9naWNhbE9wTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgTG9naWNhbE9wZXJhdG9yKTsKIAogICAgIHBy
aXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCBS
ZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKICAgICAgICAgdmlydHVh
bCB2b2lkIGVtaXRCeXRlY29kZUluQ29uZGl0aW9uQ29udGV4dChCeXRlY29kZUdlbmVyYXRvciYs
IExhYmVsKiB0cnVlVGFyZ2V0LCBMYWJlbCogZmFsc2VUYXJnZXQsIEZhbGxUaHJvdWdoTW9kZSkg
b3ZlcnJpZGU7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjE7CkBAIC0xMTI3LDcg
KzExMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgQ29uZGl0aW9uYWxOb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBsb2dpY2FsLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMik7CiAKICAgICBwcml2YXRlOgotICAgICAg
ICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1v
ZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1f
bG9naWNhbDsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjE7CkBAIC0xMTM5LDcgKzEx
NDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVhZE1vZGlmeVJlc29sdmVOb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBPcGVyYXRvciwgRXhwcmVz
c2lvbk5vZGUqICByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVh
bCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9U
YWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7
CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX3JpZ2h0OwpAQCAtMTE1Miw3ICsxMTU3LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEFzc2lnblJlc29sdmVOb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9uTm9kZSogcmlnaHQpOwogCiAg
ICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0
dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAg
IGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX3Jp
Z2h0OwpAQCAtMTE2Myw3ICsxMTY4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlYWRN
b2RpZnlCcmFja2V0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSog
YmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgT3BlcmF0b3IsIEV4cHJlc3Npb25Ob2Rl
KiByaWdodCwgYm9vbCBzdWJzY3JpcHRIYXNBc3NpZ25tZW50cywgYm9vbCByaWdodEhhc0Fzc2ln
bm1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJp
dmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJl
Z2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0g
MCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAgIEV4cHJl
c3Npb25Ob2RlKiBtX2Jhc2U7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX3N1YnNjcmlwdDsK
QEAgLTExNzgsNyArMTE4Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBBc3NpZ25CcmFj
a2V0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhw
cmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHN1YnNj
cmlwdEhhc0Fzc2lnbm1lbnRzLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0
dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBO
b1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fYmFzZTsK
ICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fc3Vic2NyaXB0OwpAQCAtMTE5Miw3ICsxMTk3LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEFzc2lnbkRvdE5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNz
aW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwg
UmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFp
bENhbGxzKSBvdmVycmlkZTsKIAogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9iYXNlOwogICAg
ICAgICBjb25zdCBJZGVudGlmaWVyJiBtX2lkZW50OwpAQCAtMTIwNSw3ICsxMjEwLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlYWRNb2RpZnlEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgT3BlcmF0b3Is
IEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
dmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2Rl
ID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Jh
c2U7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7CkBAIC0xMjE5LDcgKzEyMjQs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgQXNzaWduRXJyb3JOb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAg
ICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1
YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAgICAgfTsKICAg
ICAKICAgICBjbGFzcyBDb21tYU5vZGUgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewpA
QCAtMTIzMSw3ICsxMjM2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBwcml2YXRlOgogICAg
ICAgICB2aXJ0dWFsIGJvb2wgaXNDb21tYU5vZGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCBS
ZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKIAogICAgICAgICBFeHBy
ZXNzaW9uTm9kZSogbV9leHByOwogICAgICAgICBDb21tYU5vZGUqIG1fbmV4dDsKQEAgLTEyNDUs
NyArMTI1MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBp
ZGVudCgpIHsgcmV0dXJuIG1faWRlbnQ7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1
YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5v
VGFpbENhbGxzKSBvdmVycmlkZTsKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Q29k
ZVNpbmdsZShCeXRlY29kZUdlbmVyYXRvciYpOwogCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIm
IG1faWRlbnQ7CkBAIC0xMjYyLDcgKzEyNjcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
Q29uc3RTdGF0ZW1lbnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIENvbnN0RGVjbE5vZGUq
IG5leHQpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKIAogICAgICAgICBD
b25zdERlY2xOb2RlKiBtX25leHQ7CiAgICAgfTsKQEAgLTEyNzYsNyArMTI4MSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBTdGF0ZW1lbnROb2RlKiBzaW5nbGVTdGF0ZW1lbnQoKSBjb25z
dDsKICAgICAgICAgU3RhdGVtZW50Tm9kZSogbGFzdFN0YXRlbWVudCgpIGNvbnN0OwogCi0gICAg
ICAgIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogZGVz
dGluYXRpb24pOworICAgICAgICB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqIGRlc3RpbmF0aW9uLCBUYWlsQ2FsbE1vZGUpOwogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgU3RhdGVtZW50Tm9kZSogbV9oZWFkOwpAQCAtMTI5MSw3ICsxMjk2LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIFN0YXRlbWVudE5vZGUqIGxhc3RTdGF0ZW1lbnQoKSBjb25z
dDsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0
dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAw
LCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgdmlydHVh
bCBib29sIGlzQmxvY2soKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKQEAgLTEz
MDMsNyArMTMwOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBFbXB0eVN0YXRlbWVudE5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJik7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0
dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAw
KSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92
ZXJyaWRlOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5U3RhdGVtZW50KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIH07CkBAIC0xMzEzLDcgKzEzMTgsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgRGVidWdnZXJTdGF0ZW1lbnROb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYpOwogICAgICAgICAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIHZv
aWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVy
cmlkZTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRl
OwogICAgIH07CiAKICAgICBjbGFzcyBFeHByU3RhdGVtZW50Tm9kZSA6IHB1YmxpYyBTdGF0ZW1l
bnROb2RlIHsKQEAgLTEzMjUsNyArMTMzMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByaXZh
dGU6CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0V4cHJTdGF0ZW1lbnQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZp
cnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKIAogICAgICAgICBFeHBy
ZXNzaW9uTm9kZSogbV9leHByOwogICAgIH07CkBAIC0xMzM0LDcgKzEzMzksNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFZhclN0YXRlbWVudE5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqKTsKICAgICBwcml2YXRlOgotICAgICAgICB2
aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMp
IG92ZXJyaWRlOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2V4cHI7CiAgICAgfTsKQEAg
LTEzNDQsNyArMTM0OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBFbXB0eVZhckV4cHJl
c3Npb24oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYpOwogCiAgICAg
cHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFs
IFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAgIGNv
bnN0IElkZW50aWZpZXImIG1faWRlbnQ7CiAgICAgfTsKQEAgLTEzNTUsNyArMTM2MCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBJZkVsc2VOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IEV4cHJlc3Npb25Ob2RlKiBjb25kaXRpb24sIFN0YXRlbWVudE5vZGUqIGlmQmxvY2ssIFN0YXRl
bWVudE5vZGUqIGVsc2VCbG9jayk7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIHZv
aWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVy
cmlkZTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRl
OwogICAgICAgICBib29sIHRyeUZvbGRCcmVha0FuZENvbnRpbnVlKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgU3RhdGVtZW50Tm9kZSogaWZCbG9jaywKICAgICAgICAgICAgIExhYmVsKiYgdHJ1ZVRhcmdl
dCwgRmFsbFRocm91Z2hNb2RlJik7CiAKQEAgLTEzNjksNyArMTM3NCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBEb1doaWxlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBTdGF0ZW1l
bnROb2RlKiwgRXhwcmVzc2lvbk5vZGUqKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1
YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAp
IG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3Zl
cnJpZGU7CiAKICAgICAgICAgU3RhdGVtZW50Tm9kZSogbV9zdGF0ZW1lbnQ7CiAgICAgICAgIEV4
cHJlc3Npb25Ob2RlKiBtX2V4cHI7CkBAIC0xMzgwLDcgKzEzODUsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgV2hpbGVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25O
b2RlKiwgU3RhdGVtZW50Tm9kZSopOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCB2
b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3Zl
cnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlk
ZTsKIAogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9leHByOwogICAgICAgICBTdGF0ZW1lbnRO
b2RlKiBtX3N0YXRlbWVudDsKQEAgLTEzOTEsNyArMTM5Niw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBGb3JOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBFeHByZXNzaW9uTm9kZSogZXhwcjMsIFN0YXRl
bWVudE5vZGUqKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAg
ICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjE7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2V4
cHIyOwpAQCAtMTQyMCw3ICsxNDI1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQg
ZW1pdExvb3BIZWFkZXIoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBwcm9wZXJ0eU5h
bWUpOwogICAgICAgICB2b2lkIGVtaXRNdWx0aUxvb3BCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqIGRzdCk7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKICAgICB9OwogICAg
IAogICAgIGNsYXNzIEZvck9mTm9kZSA6IHB1YmxpYyBFbnVtZXJhdGlvbk5vZGUgewpAQCAtMTQy
OCw3ICsxNDMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEZvck9mTm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSosIEV4cHJlc3Npb25Ob2RlKiwgU3RhdGVt
ZW50Tm9kZSopOwogICAgICAgICAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIHZvaWQg
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlk
ZTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwog
ICAgIH07CiAKICAgICBjbGFzcyBDb250aW51ZU5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSwg
cHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKQEAgLTE0MzgsNyArMTQ0Myw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIGJv
b2wgaXNDb250aW51ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAg
dmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxz
KSBvdmVycmlkZTsKIAogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX2lkZW50OwogICAgIH07
CkBAIC0xNDUwLDcgKzE0NTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgcHJp
dmF0ZToKICAgICAgICAgdmlydHVhbCBib29sIGlzQnJlYWsoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIHZv
aWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWls
Q2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgY29uc3QgSWRlbnRp
ZmllciYgbV9pZGVudDsKICAgICB9OwpAQCAtMTQ2Miw3ICsxNDY3LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiB2YWx1ZSgpIHsgcmV0dXJuIG1fdmFsdWU7IH0K
IAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFs
IHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBU
YWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgdmlydHVhbCBi
b29sIGlzUmV0dXJuTm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIApAQCAt
MTQ3NCw3ICsxNDc5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFdpdGhOb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiwgU3RhdGVtZW50Tm9kZSosIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgdWludDMyX3QgZXhwcmVzc2lvbkxlbmd0aCk7CiAKICAg
ICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCB2b2lk
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENh
bGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2Rl
KiBtX2V4cHI7CiAgICAgICAgIFN0YXRlbWVudE5vZGUqIG1fc3RhdGVtZW50OwpAQCAtMTQ4Nyw3
ICsxNDkyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIExhYmVsTm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBTdGF0ZW1lbnROb2RlKik7CiAK
ICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCB2
b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFp
bENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAgIGNvbnN0IElkZW50
aWZpZXImIG1fbmFtZTsKICAgICAgICAgU3RhdGVtZW50Tm9kZSogbV9zdGF0ZW1lbnQ7CkBAIC0x
NDk4LDcgKzE1MDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVGhyb3dOb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKik7CiAKICAgICBwcml2YXRlOgotICAg
ICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWls
Q2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2V4cHI7CiAgICAg
fTsKQEAgLTE1MDgsNyArMTUxMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBUcnlOb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFN0YXRlbWVudE5vZGUqIHRyeUJsb2NrLCBjb25zdCBJ
ZGVudGlmaWVyJiBleGNlcHRpb25JZGVudCwgU3RhdGVtZW50Tm9kZSogY2F0Y2hCbG9jaywgU3Rh
dGVtZW50Tm9kZSogZmluYWxseUJsb2NrKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1
YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAp
IG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3Zl
cnJpZGU7CiAKICAgICAgICAgU3RhdGVtZW50Tm9kZSogbV90cnlCbG9jazsKICAgICAgICAgY29u
c3QgSWRlbnRpZmllciYgbV90aHJvd25WYWx1ZUlkZW50OwpAQCAtMTYwOSw3ICsxNjE0LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8VW5pcXVlZFN0cmlu
Z0ltcGw+PiYgY2xvc2VkVmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4gbV9jbG9zZWRWYXJpYWJs
ZXM7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2
aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAgICAgICAgIFZlY3Rv
cjxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiBtX2Nsb3NlZFZhcmlhYmxlczsKICAgICAgICAg
dW5zaWduZWQgbV9zdGFydENvbHVtbjsKICAgICAgICAgdW5zaWduZWQgbV9lbmRDb2x1bW47CkBA
IC0xNjI1LDcgKzE2MzAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGNvbnN0
IGJvb2wgc2NvcGVJc0Z1bmN0aW9uID0gZmFsc2U7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2
aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMp
IG92ZXJyaWRlOwogCiAgICAgICAgIHVuc2lnbmVkIG1fZW5kQ29sdW1uOwogICAgIH07CkBAIC0x
NjYxLDcgKzE2NjYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBGdW5jdGlvblBhcmFt
ZXRlcnMqIHBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMuZ2V0KCk7IH0K
IAotICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwg
UmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0g
Tm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAgIHZvaWQgZmluaXNoUGFyc2luZyhjb25z
dCBTb3VyY2VDb2RlJiwgUGFyYW1ldGVyTm9kZSosIGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlv
bk1vZGUpOwogICAgICAgICAKQEAgLTE3MDgsNyArMTcxMyw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgICAgIEZ1bmN0aW9uUGFyYW1ldGVycyogcGFyYW1ldGVycygpIGNvbnN0IHsgcmV0dXJu
IG1fcGFyYW1ldGVycy5nZXQoKTsgfQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAg
dm9pZCBmaW5pc2hQYXJzaW5nKFBhc3NSZWZQdHI8RnVuY3Rpb25QYXJhbWV0ZXJzPiwgY29uc3Qg
SWRlbnRpZmllciYsIEZ1bmN0aW9uTW9kZSk7CiAgICAgICAgIApAQCAtMTczNiw3ICsxNzQxLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHkoKSB7IHJl
dHVybiBtX2JvZHk7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJ
RCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVy
cmlkZTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBv
dmVycmlkZTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNGdW5jRXhwck5vZGUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKQEAgLTE3NTIsNyArMTc1Nyw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1lKCkgeyByZXR1cm4gbV9uYW1l
OyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAg
ICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwg
UmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAK
ICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9uYW1lOwogICAgICAgICBFeHByZXNzaW9uTm9k
ZSogbV9jb25zdHJ1Y3RvckV4cHJlc3Npb247CkBAIC0xODYzLDcgKzE4NjgsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNBc3NpZ25tZW50
TG9jYXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgICAgIHZpcnR1
YWwgYm9vbCBpc0Rlc3RydWN0dXJpbmdOb2RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVn
aXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAw
LCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgUmVmUHRy
PERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZT4gbV9iaW5kaW5nczsKICAgICAgICAgRXhwcmVzc2lv
bk5vZGUqIG1faW5pdGlhbGl6ZXI7CkBAIC0xODc3LDcgKzE4ODIsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSgpIHsgcmV0dXJuIG1fYm9keTsgfQog
CiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRh
aWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKIAogICAgICAgICBGdW5jdGlvbkJv
ZHlOb2RlKiBtX2JvZHk7CiAgICAgfTsKQEAgLTE4ODgsNyArMTg5Myw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBDbGFzc0RlY2xOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJl
c3Npb25Ob2RlKiBjbGFzc0V4cHJlc3Npb24pOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmly
dHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0g
MCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBv
dmVycmlkZTsKIAogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9jbGFzc0RlY2xhcmF0aW9uOwog
ICAgIH07CkBAIC0xOTAwLDcgKzE5MDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBF
eHByZXNzaW9uTm9kZSogZXhwcigpIGNvbnN0IHsgcmV0dXJuIG1fZXhwcjsgfQogCi0gICAgICAg
IHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogZGVzdGlu
YXRpb24pOworICAgICAgICB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqIGRlc3RpbmF0aW9uLCBUYWlsQ2FsbE1vZGUpOwogICAgICAgICB2b2lkIHNldFN0
YXJ0T2Zmc2V0KGludCBvZmZzZXQpIHsgbV9zdGFydE9mZnNldCA9IG9mZnNldDsgfQogCiAgICAg
cHJpdmF0ZToKQEAgLTE5MjYsNyArMTkzMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1Ymxp
YzoKICAgICAgICAgQ2FzZUJsb2NrTm9kZShDbGF1c2VMaXN0Tm9kZSogbGlzdDEsIENhc2VDbGF1
c2VOb2RlKiBkZWZhdWx0Q2xhdXNlLCBDbGF1c2VMaXN0Tm9kZSogbGlzdDIpOwogCi0gICAgICAg
IHZvaWQgZW1pdEJ5dGVjb2RlRm9yQmxvY2soQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiBpbnB1dCwgUmVnaXN0ZXJJRCogZGVzdGluYXRpb24pOworICAgICAgICB2b2lkIGVtaXRCeXRl
Y29kZUZvckJsb2NrKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogaW5wdXQsIFJlZ2lz
dGVySUQqIGRlc3RpbmF0aW9uLCBUYWlsQ2FsbE1vZGUpOwogCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgU3dpdGNoSW5mbzo6U3dpdGNoVHlwZSB0cnlUYWJsZVN3aXRjaChWZWN0b3I8RXhwcmVzc2lv
bk5vZGUqLCA4PiYgbGl0ZXJhbFZlY3RvciwgaW50MzJfdCYgbWluX251bSwgaW50MzJfdCYgbWF4
X251bSk7CkBAIC0xOTQxLDcgKzE5NDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3dp
dGNoTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSosIENhc2VCbG9j
a05vZGUqKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAg
RXhwcmVzc2lvbk5vZGUqIG1fZXhwcjsKICAgICAgICAgQ2FzZUJsb2NrTm9kZSogbV9ibG9jazsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256800</attachid>
            <date>2015-07-14 15:17:05 -0700</date>
            <delta_ts>2015-08-31 19:04:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>recognize.patch</filename>
            <type>text/plain</type>
            <size>117855</size>
            <attacher name="Basile Clement">basile_clement</attacher>
            
              <data encoding="base64">Y29tbWl0IGYzZmEyYjEwZDU1YzhjYTZhODUwYjk3Y2QxZDNhMTc2ZWI1N2FlYjAKQXV0aG9yOiBC
YXNpbGUgQ2xlbWVudCA8YmFzaWxlX2NsZW1lbnRAYXBwbGUuY29tPgpEYXRlOiAgIE1vbiBKdWwg
MTMgMDk6MzA6MjAgMjAxNSAtMDcwMAoKICAgIFtFUzZdIFJlY29nbml6ZSBjYWxscyBpbiB0YWls
IHBvc2l0aW9uCiAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2
NDgxCiAgICAKICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgogICAgCiAgICBUaGlzIHBh
dGNoIGFkZHMgdGhlIGNhcGFiaWxpdHkgZm9yIHRoZSBieXRlY29kZSBnZW5lcmF0b3IgdG8gcmVj
b2duaXplCiAgICBhbmQgZGlzcGF0Y2ggdGFpbCBjYWxscywgYXMgcGVyIEVTNiBzcGVjOgogICAg
aHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLWlzaW50
YWlscG9zaXRpb24KICAgIAogICAgVGhpcyBkb2VzIG5vdCBjaGFuZ2UgdGhlIGdlbmVyYXRlZCBi
eXRlY29kZSwgYnV0IG1lcmVseSBwcm92aWRlcyB0aGUKICAgIGhvb2sgZm9yIGdlbmVyYXRpbmcg
dGFpbCBjYWxscyBpbiBzdWJzZXF1ZW50IHBhdGNoZXMgdG93YXJkCiAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2NDc3CiAgICAKICAgICogYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
VGFpbENhbGwpOgogICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRUYWlsQ2FsbFZhcmFy
Z3MpOgogICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0Tm9kZSk6CiAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwOgogICAgKEpTQzo6Q29uc3RhbnROb2RlOjplbWl0Qnl0ZWNvZGUpOgogICAgKEpTQzo6
TnVtYmVyTm9kZTo6ZW1pdEJ5dGVjb2RlKToKICAgIChKU0M6OlJlZ0V4cE5vZGU6OmVtaXRCeXRl
Y29kZSk6CiAgICAoSlNDOjpUaGlzTm9kZTo6ZW1pdEJ5dGVjb2RlKToKICAgIChKU0M6OlN1cGVy
Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKICAgIChKU0M6OlJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUp
OgogICAgKEpTQzo6VGVtcGxhdGVTdHJpbmdOb2RlOjplbWl0Qnl0ZWNvZGUpOgogICAgKEpTQzo6
VGVtcGxhdGVMaXRlcmFsTm9kZTo6ZW1pdEJ5dGVjb2RlKToKICAgIChKU0M6OlRhZ2dlZFRlbXBs
YXRlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKICAgIChKU0M6OkFycmF5Tm9kZTo6ZW1pdEJ5dGVjb2Rl
KToKICAgIChKU0M6Ok9iamVjdExpdGVyYWxOb2RlOjplbWl0Qnl0ZWNvZGUpOgogICAgKEpTQzo6
UHJvcGVydHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKICAgIChKU0M6OkJyYWNrZXRBY2Nlc3Nv
ck5vZGU6OmVtaXRCeXRlY29kZSk6CiAgICAoSlNDOjpEb3RBY2Nlc3Nvck5vZGU6OmVtaXRCeXRl
Y29kZSk6CiAgICAoSlNDOjpBcmd1bWVudExpc3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgogICAgKEpT
Qzo6TmV3RXhwck5vZGU6OmVtaXRCeXRlY29kZSk6CiAgICAoSlNDOjpFdmFsRnVuY3Rpb25DYWxs
Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKICAgIChKU0M6OkZ1bmN0aW9uQ2FsbFZhbHVlTm9kZTo6ZW1p
dEJ5dGVjb2RlKToKICAgIChKU0M6OkZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlOjplbWl0Qnl0ZWNv
ZGUpOgogICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0Qnl0ZWNvZGUpOgogICAg
KEpTQzo6RnVuY3Rpb25DYWxsQnJhY2tldE5vZGU6OmVtaXRCeXRlY29kZSk6CiAgICAoSlNDOjpG
dW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgogICAgKEpTQzo6Q2FsbEZ1bmN0aW9u
Q2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZSk6CiAgICAoSlNDOjpBcHBseUZ1bmN0aW9uQ2FsbERv
dE5vZGU6OmVtaXRCeXRlY29kZSk6CiAgICAoSlNDOjpQb3N0Zml4Tm9kZTo6ZW1pdEJ5dGVjb2Rl
KToKICAgIChKU0M6OkRlbGV0ZVJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUpOgogICAgKEpTQzo6
RGVsZXRlQnJhY2tldE5vZGU6OmVtaXRCeXRlY29kZSk6CiAgICAoSlNDOjpEZWxldGVEb3ROb2Rl
OjplbWl0Qnl0ZWNvZGUpOgogICAgKEpTQzo6RGVsZXRlVmFsdWVOb2RlOjplbWl0Qnl0ZWNvZGUp
OgogICAgKEpTQzo6Vm9pZE5vZGU6OmVtaXRCeXRlY29kZSk6CiAgICAoSlNDOjpUeXBlT2ZSZXNv
bHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKICAgIChKU0M6OlR5cGVPZlZhbHVlTm9kZTo6ZW1pdEJ5
dGVjb2RlKToKICAgIChKU0M6OlByZWZpeE5vZGU6OmVtaXRCeXRlY29kZSk6CiAgICAoSlNDOjpV
bmFyeU9wTm9kZTo6ZW1pdEJ5dGVjb2RlKToKICAgIChKU0M6OkJpdHdpc2VOb3ROb2RlOjplbWl0
Qnl0ZWNvZGUpOgogICAgKEpTQzo6QmluYXJ5T3BOb2RlOjplbWl0Qnl0ZWNvZGUpOgogICAgKEpT
Qzo6RXF1YWxOb2RlOjplbWl0Qnl0ZWNvZGUpOgogICAgKEpTQzo6U3RyaWN0RXF1YWxOb2RlOjpl
bWl0Qnl0ZWNvZGUpOgogICAgKEpTQzo6VGhyb3dhYmxlQmluYXJ5T3BOb2RlOjplbWl0Qnl0ZWNv
ZGUpOgogICAgKEpTQzo6SW5zdGFuY2VPZk5vZGU6OmVtaXRCeXRlY29kZSk6CiAgICAoSlNDOjpM
b2dpY2FsT3BOb2RlOjplbWl0Qnl0ZWNvZGUpOgogICAgKEpTQzo6Q29uZGl0aW9uYWxOb2RlOjpl
bWl0Qnl0ZWNvZGUpOgogICAgKEpTQzo6UmVhZE1vZGlmeVJlc29sdmVOb2RlOjplbWl0Qnl0ZWNv
ZGUpOgogICAgKEpTQzo6QXNzaWduUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZSk6CiAgICAoSlND
OjpBc3NpZ25Eb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgogICAgKEpTQzo6UmVhZE1vZGlmeURvdE5v
ZGU6OmVtaXRCeXRlY29kZSk6CiAgICAoSlNDOjpBc3NpZ25FcnJvck5vZGU6OmVtaXRCeXRlY29k
ZSk6CiAgICAoSlNDOjpBc3NpZ25CcmFja2V0Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKICAgIChKU0M6
OlJlYWRNb2RpZnlCcmFja2V0Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKICAgIChKU0M6OkNvbW1hTm9k
ZTo6ZW1pdEJ5dGVjb2RlKToKICAgIChKU0M6OkNvbnN0RGVjbE5vZGU6OmVtaXRCeXRlY29kZSk6
CiAgICAoSlNDOjpDb25zdFN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZSk6CiAgICAoSlNDOjpT
b3VyY2VFbGVtZW50czo6ZW1pdEJ5dGVjb2RlKToKICAgIChKU0M6OkJsb2NrTm9kZTo6ZW1pdEJ5
dGVjb2RlKToKICAgIChKU0M6OkVtcHR5U3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKICAg
IChKU0M6OkRlYnVnZ2VyU3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKICAgIChKU0M6OkV4
cHJTdGF0ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUpOgogICAgKEpTQzo6VmFyU3RhdGVtZW50Tm9k
ZTo6ZW1pdEJ5dGVjb2RlKToKICAgIChKU0M6OkVtcHR5VmFyRXhwcmVzc2lvbjo6ZW1pdEJ5dGVj
b2RlKToKICAgIChKU0M6OklmRWxzZU5vZGU6OmVtaXRCeXRlY29kZSk6CiAgICAoSlNDOjpEb1do
aWxlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKICAgIChKU0M6OldoaWxlTm9kZTo6ZW1pdEJ5dGVjb2Rl
KToKICAgIChKU0M6OkZvck5vZGU6OmVtaXRCeXRlY29kZSk6CiAgICAoSlNDOjpGb3JJbk5vZGU6
OmVtaXRCeXRlY29kZSk6CiAgICAoSlNDOjpGb3JPZk5vZGU6OmVtaXRCeXRlY29kZSk6CiAgICAo
SlNDOjpDb250aW51ZU5vZGU6OmVtaXRCeXRlY29kZSk6CiAgICAoSlNDOjpCcmVha05vZGU6OmVt
aXRCeXRlY29kZSk6CiAgICAoSlNDOjpSZXR1cm5Ob2RlOjplbWl0Qnl0ZWNvZGUpOgogICAgKEpT
Qzo6V2l0aE5vZGU6OmVtaXRCeXRlY29kZSk6CiAgICAoSlNDOjpDYXNlQ2xhdXNlTm9kZTo6ZW1p
dEJ5dGVjb2RlKToKICAgIChKU0M6OkNhc2VCbG9ja05vZGU6OmVtaXRCeXRlY29kZUZvckJsb2Nr
KToKICAgIChKU0M6OlN3aXRjaE5vZGU6OmVtaXRCeXRlY29kZSk6CiAgICAoSlNDOjpMYWJlbE5v
ZGU6OmVtaXRCeXRlY29kZSk6CiAgICAoSlNDOjpUaHJvd05vZGU6OmVtaXRCeXRlY29kZSk6CiAg
ICAoSlNDOjpUcnlOb2RlOjplbWl0Qnl0ZWNvZGUpOgogICAgKEpTQzo6U2NvcGVOb2RlOjplbWl0
U3RhdGVtZW50c0J5dGVjb2RlKToKICAgIChKU0M6OlByb2dyYW1Ob2RlOjplbWl0Qnl0ZWNvZGUp
OgogICAgKEpTQzo6RXZhbE5vZGU6OmVtaXRCeXRlY29kZSk6CiAgICAoSlNDOjpGdW5jdGlvbkJv
ZHlOb2RlOjplbWl0Qnl0ZWNvZGUpOgogICAgKEpTQzo6RnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNv
ZGUpOgogICAgKEpTQzo6RnVuY0RlY2xOb2RlOjplbWl0Qnl0ZWNvZGUpOgogICAgKEpTQzo6RnVu
Y0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgogICAgKEpTQzo6Q2xhc3NEZWNsTm9kZTo6ZW1pdEJ5
dGVjb2RlKToKICAgIChKU0M6OkNsYXNzRXhwck5vZGU6OmVtaXRCeXRlY29kZSk6CiAgICAoSlND
OjpEZXN0cnVjdHVyaW5nQXNzaWdubWVudE5vZGU6OmVtaXRCeXRlY29kZSk6CiAgICAoSlNDOjpT
cHJlYWRFeHByZXNzaW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKToKICAgICogcGFyc2VyL05vZGVzLmg6
CgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggNjhjMjg3Yy4uZWRkZWJjYiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTEyIEBACisyMDE1LTA3LTE0ICBCYXNpbGUgQ2xl
bWVudCAgPGJhc2lsZV9jbGVtZW50QGFwcGxlLmNvbT4KKworICAgICAgICBbRVM2XSBSZWNvZ25p
emUgY2FsbHMgaW4gdGFpbCBwb3NpdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2NDgxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHRoZSBjYXBhYmlsaXR5IGZvciB0aGUg
Ynl0ZWNvZGUgZ2VuZXJhdG9yIHRvIHJlY29nbml6ZQorICAgICAgICBhbmQgZGlzcGF0Y2ggdGFp
bCBjYWxscywgYXMgcGVyIEVTNiBzcGVjOgorICAgICAgICBodHRwOi8vd3d3LmVjbWEtaW50ZXJu
YXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtaXNpbnRhaWxwb3NpdGlvbgorCisgICAgICAg
IFRoaXMgZG9lcyBub3QgY2hhbmdlIHRoZSBnZW5lcmF0ZWQgYnl0ZWNvZGUsIGJ1dCBtZXJlbHkg
cHJvdmlkZXMgdGhlCisgICAgICAgIGhvb2sgZm9yIGdlbmVyYXRpbmcgdGFpbCBjYWxscyBpbiBz
dWJzZXF1ZW50IHBhdGNoZXMgdG93YXJkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDY0NzcKKworICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VGFp
bENhbGwpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFRhaWxDYWxsVmFy
YXJncyk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Tm9kZSk6CisgICAgICAgICogYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OkNvbnN0YW50Tm9kZTo6ZW1p
dEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6TnVtYmVyTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAg
ICAgICAgKEpTQzo6UmVnRXhwTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6VGhp
c05vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlN1cGVyTm9kZTo6ZW1pdEJ5dGVj
b2RlKToKKyAgICAgICAgKEpTQzo6UmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAg
IChKU0M6OlRlbXBsYXRlU3RyaW5nTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6
VGVtcGxhdGVMaXRlcmFsTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6VGFnZ2Vk
VGVtcGxhdGVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpBcnJheU5vZGU6OmVt
aXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6Ok9iamVjdExpdGVyYWxOb2RlOjplbWl0Qnl0ZWNv
ZGUpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eUxpc3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAg
ICAgICAoSlNDOjpCcmFja2V0QWNjZXNzb3JOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAo
SlNDOjpEb3RBY2Nlc3Nvck5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkFyZ3Vt
ZW50TGlzdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6Ok5ld0V4cHJOb2RlOjpl
bWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpFdmFsRnVuY3Rpb25DYWxsTm9kZTo6ZW1pdEJ5
dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25DYWxsVmFsdWVOb2RlOjplbWl0Qnl0ZWNv
ZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2Rl
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0Qnl0ZWNvZGUpOgor
ICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAg
ICAgICAgKEpTQzo6RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAg
KEpTQzo6Q2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChK
U0M6OkFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpT
Qzo6UG9zdGZpeE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkRlbGV0ZVJlc29s
dmVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpEZWxldGVCcmFja2V0Tm9kZTo6
ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RGVsZXRlRG90Tm9kZTo6ZW1pdEJ5dGVjb2Rl
KToKKyAgICAgICAgKEpTQzo6RGVsZXRlVmFsdWVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAg
ICAoSlNDOjpWb2lkTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6VHlwZU9mUmVz
b2x2ZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlR5cGVPZlZhbHVlTm9kZTo6
ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UHJlZml4Tm9kZTo6ZW1pdEJ5dGVjb2RlKToK
KyAgICAgICAgKEpTQzo6VW5hcnlPcE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6
OkJpdHdpc2VOb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpCaW5hcnlPcE5v
ZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkVxdWFsTm9kZTo6ZW1pdEJ5dGVjb2Rl
KToKKyAgICAgICAgKEpTQzo6U3RyaWN0RXF1YWxOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAg
ICAoSlNDOjpUaHJvd2FibGVCaW5hcnlPcE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChK
U0M6Okluc3RhbmNlT2ZOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpMb2dpY2Fs
T3BOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDb25kaXRpb25hbE5vZGU6OmVt
aXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlJlYWRNb2RpZnlSZXNvbHZlTm9kZTo6ZW1pdEJ5
dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QXNzaWduUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZSk6
CisgICAgICAgIChKU0M6OkFzc2lnbkRvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChK
U0M6OlJlYWRNb2RpZnlEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpBc3Np
Z25FcnJvck5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkFzc2lnbkJyYWNrZXRO
b2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpSZWFkTW9kaWZ5QnJhY2tldE5vZGU6
OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNvbW1hTm9kZTo6ZW1pdEJ5dGVjb2RlKToK
KyAgICAgICAgKEpTQzo6Q29uc3REZWNsTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpT
Qzo6Q29uc3RTdGF0ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpTb3Vy
Y2VFbGVtZW50czo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QmxvY2tOb2RlOjplbWl0
Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpFbXB0eVN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29k
ZSk6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyU3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKToK
KyAgICAgICAgKEpTQzo6RXhwclN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAg
IChKU0M6OlZhclN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkVt
cHR5VmFyRXhwcmVzc2lvbjo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6SWZFbHNlTm9k
ZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RG9XaGlsZU5vZGU6OmVtaXRCeXRlY29k
ZSk6CisgICAgICAgIChKU0M6OldoaWxlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpT
Qzo6Rm9yTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Rm9ySW5Ob2RlOjplbWl0
Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGb3JPZk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAg
ICAgIChKU0M6OkNvbnRpbnVlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QnJl
YWtOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpSZXR1cm5Ob2RlOjplbWl0Qnl0
ZWNvZGUpOgorICAgICAgICAoSlNDOjpXaXRoTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAg
KEpTQzo6Q2FzZUNsYXVzZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNhc2VC
bG9ja05vZGU6OmVtaXRCeXRlY29kZUZvckJsb2NrKToKKyAgICAgICAgKEpTQzo6U3dpdGNoTm9k
ZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6TGFiZWxOb2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpUaHJvd05vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6
OlRyeU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlNjb3BlTm9kZTo6ZW1pdFN0
YXRlbWVudHNCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjplbWl0Qnl0ZWNv
ZGUpOgorICAgICAgICAoSlNDOjpFdmFsTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpT
Qzo6RnVuY3Rpb25Cb2R5Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rp
b25Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGdW5jRGVjbE5vZGU6OmVtaXRC
eXRlY29kZSk6CisgICAgICAgIChKU0M6OkZ1bmNFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAg
ICAgICAgKEpTQzo6Q2xhc3NEZWNsTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6
Q2xhc3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RGVzdHJ1Y3R1cmlu
Z0Fzc2lnbm1lbnROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpTcHJlYWRFeHBy
ZXNzaW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoKKwog
MjAxNS0wNy0xMyAgQmFzaWxlIENsZW1lbnQgIDxiYXNpbGVfY2xlbWVudEBhcHBsZS5jb20+CiAK
ICAgICAgICAganNjLXRhaWxjYWxsOiBHZXQgcmlkIG9mIHRoZSBhcml0eSBmaXh1cCByZXR1cm4g
dGh1bmsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggOGIyZjhlNi4uZDJiMDkzZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAKQEAgLTE4MzYsNiArMTgzNiwxMyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdENhbGwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBFeHBlYwogICAg
IHJldHVybiBlbWl0Q2FsbChvcF9jYWxsLCBkc3QsIGZ1bmMsIGV4cGVjdGVkRnVuY3Rpb24sIGNh
bGxBcmd1bWVudHMsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CiB9CiAKK1JlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VGFpbENhbGwoUmVnaXN0ZXJJRCogZHN0LCBSZWdp
c3RlcklEKiBmdW5jLCBFeHBlY3RlZEZ1bmN0aW9uIGV4cGVjdGVkRnVuY3Rpb24sIENhbGxBcmd1
bWVudHMmIGNhbGxBcmd1bWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVu
ZCkKK3sKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGVtaXR0aW5nIGEgbmV3IG9wX3RhaWxf
Y2FsbCBoZXJlCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0NjQ4NAorICAgIHJldHVybiBlbWl0Q2FsbChvcF9jYWxsLCBkc3QsIGZ1bmMsIGV4cGVjdGVk
RnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7Cit9
CisKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbEV2YWwoUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBDYWxsQXJndW1lbnRzJiBjYWxsQXJndW1lbnRzLCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0
YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCiB7CiAgICAgcmV0dXJuIGVtaXRD
YWxsKG9wX2NhbGxfZXZhbCwgZHN0LCBmdW5jLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1
bWVudHMsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CkBAIC0xOTg1LDYgKzE5OTIsMTMg
QEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsVmFyYXJncyhSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMKICAgICByZXR1cm4gZW1pdENhbGxWYXJhcmdzKG9w
X2NhbGxfdmFyYXJncywgZHN0LCBmdW5jLCB0aGlzUmVnaXN0ZXIsIGFyZ3VtZW50cywgZmlyc3RG
cmVlUmVnaXN0ZXIsIGZpcnN0VmFyQXJnT2Zmc2V0LCBwcm9maWxlSG9va1JlZ2lzdGVyLCBkaXZv
dCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdFRhaWxDYWxsVmFyYXJncyhSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1
bmMsIFJlZ2lzdGVySUQqIHRoaXNSZWdpc3RlciwgUmVnaXN0ZXJJRCogYXJndW1lbnRzLCBSZWdp
c3RlcklEKiBmaXJzdEZyZWVSZWdpc3RlciwgaW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCwgUmVn
aXN0ZXJJRCogcHJvZmlsZUhvb2tSZWdpc3RlciwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90RW5kKQoreworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgZW1pdHRpbmcgYSBuZXcg
b3BfdGFpbF9jYWxsX3ZhcmFyZ3MgaGVyZQorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDY0ODQKKyAgICByZXR1cm4gZW1pdENhbGxWYXJhcmdzKG9wX2Nh
bGxfdmFyYXJncywgZHN0LCBmdW5jLCB0aGlzUmVnaXN0ZXIsIGFyZ3VtZW50cywgZmlyc3RGcmVl
UmVnaXN0ZXIsIGZpcnN0VmFyQXJnT2Zmc2V0LCBwcm9maWxlSG9va1JlZ2lzdGVyLCBkaXZvdCwg
ZGl2b3RTdGFydCwgZGl2b3RFbmQpOworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdENvbnN0cnVjdFZhcmFyZ3MoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5j
LCBSZWdpc3RlcklEKiB0aGlzUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGFyZ3VtZW50cywgUmVnaXN0
ZXJJRCogZmlyc3RGcmVlUmVnaXN0ZXIsIGludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQsIFJlZ2lz
dGVySUQqIHByb2ZpbGVIb29rUmVnaXN0ZXIsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwg
Y29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBk
aXZvdEVuZCkKIHsKICAgICByZXR1cm4gZW1pdENhbGxWYXJhcmdzKG9wX2NvbnN0cnVjdF92YXJh
cmdzLCBkc3QsIGZ1bmMsIHRoaXNSZWdpc3RlciwgYXJndW1lbnRzLCBmaXJzdEZyZWVSZWdpc3Rl
ciwgZmlyc3RWYXJBcmdPZmZzZXQsIHByb2ZpbGVIb29rUmVnaXN0ZXIsIGRpdm90LCBkaXZvdFN0
YXJ0LCBkaXZvdEVuZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggMWE5NzcxZS4uYzk0YzhmOSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaApAQCAtMzQ0LDcgKzM0NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBMYWJl
bFNjb3BlUHRyIG5ld0xhYmVsU2NvcGUoTGFiZWxTY29wZTo6VHlwZSwgY29uc3QgSWRlbnRpZmll
ciogPSAwKTsKICAgICAgICAgUGFzc1JlZlB0cjxMYWJlbD4gbmV3TGFiZWwoKTsKIAotICAgICAg
ICB2b2lkIGVtaXROb2RlKFJlZ2lzdGVySUQqIGRzdCwgU3RhdGVtZW50Tm9kZSogbikKKyAgICAg
ICAgdm9pZCBlbWl0Tm9kZShSZWdpc3RlcklEKiBkc3QsIFN0YXRlbWVudE5vZGUqIG4sIFRhaWxD
YWxsTW9kZSB0YWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykKICAgICAgICAgewogICAgICAgICAg
ICAgLy8gTm9kZTo6ZW1pdENvZGUgYXNzdW1lcyB0aGF0IGRzdCwgaWYgcHJvdmlkZWQsIGlzIGVp
dGhlciBhIGxvY2FsIG9yIGEgcmVmZXJlbmNlZCB0ZW1wb3JhcnkuCiAgICAgICAgICAgICBBU1NF
UlQoIWRzdCB8fCBkc3QgPT0gaWdub3JlZFJlc3VsdCgpIHx8ICFkc3QtPmlzVGVtcG9yYXJ5KCkg
fHwgZHN0LT5yZWZDb3VudCgpKTsKQEAgLTM1Miw3ICszNTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgICAgICBlbWl0VGhyb3dFeHByZXNzaW9uVG9vRGVlcEV4Y2VwdGlvbigpOwog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG4tPmVt
aXRCeXRlY29kZSgqdGhpcywgZHN0KTsKKyAgICAgICAgICAgIG4tPmVtaXRCeXRlY29kZSgqdGhp
cywgZHN0LCB0YWlsQ2FsbE1vZGUpOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBlbWl0Tm9k
ZShTdGF0ZW1lbnROb2RlKiBuKQpAQCAtMzYwLDEzICszNjAsMTMgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgICAgICBlbWl0Tm9kZSgwLCBuKTsKICAgICAgICAgfQogCi0gICAgICAgIFJlZ2lz
dGVySUQqIGVtaXROb2RlKFJlZ2lzdGVySUQqIGRzdCwgRXhwcmVzc2lvbk5vZGUqIG4pCisgICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXROb2RlKFJlZ2lzdGVySUQqIGRzdCwgRXhwcmVzc2lvbk5vZGUq
IG4sIFRhaWxDYWxsTW9kZSB0YWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykKICAgICAgICAgewog
ICAgICAgICAgICAgLy8gTm9kZTo6ZW1pdENvZGUgYXNzdW1lcyB0aGF0IGRzdCwgaWYgcHJvdmlk
ZWQsIGlzIGVpdGhlciBhIGxvY2FsIG9yIGEgcmVmZXJlbmNlZCB0ZW1wb3JhcnkuCiAgICAgICAg
ICAgICBBU1NFUlQoIWRzdCB8fCBkc3QgPT0gaWdub3JlZFJlc3VsdCgpIHx8ICFkc3QtPmlzVGVt
cG9yYXJ5KCkgfHwgZHN0LT5yZWZDb3VudCgpKTsKICAgICAgICAgICAgIGlmICghbV92bS0+aXNT
YWZlVG9SZWN1cnNlKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGVtaXRUaHJvd0V4cHJlc3Np
b25Ub29EZWVwRXhjZXB0aW9uKCk7Ci0gICAgICAgICAgICByZXR1cm4gbi0+ZW1pdEJ5dGVjb2Rl
KCp0aGlzLCBkc3QpOworICAgICAgICAgICAgcmV0dXJuIG4tPmVtaXRCeXRlY29kZSgqdGhpcywg
ZHN0LCB0YWlsQ2FsbE1vZGUpOwogICAgICAgICB9CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dE5vZGUoRXhwcmVzc2lvbk5vZGUqIG4pCkBAIC00OTIsOCArNDkyLDEwIEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAKICAgICAgICAgRXhwZWN0ZWRGdW5jdGlvbiBleHBlY3RlZEZ1bmN0aW9u
Rm9ySWRlbnRpZmllcihjb25zdCBJZGVudGlmaWVyJik7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRDYWxsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgRXhwZWN0ZWRGdW5jdGlv
biwgQ2FsbEFyZ3VtZW50cyYsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7
CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRUYWlsQ2FsbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lz
dGVySUQqIGZ1bmMsIEV4cGVjdGVkRnVuY3Rpb24sIENhbGxBcmd1bWVudHMmLCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q2Fs
bEV2YWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBDYWxsQXJndW1lbnRzJiwg
Y29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RT
dGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdENhbGxWYXJhcmdzKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgUmVn
aXN0ZXJJRCogdGhpc1JlZ2lzdGVyLCBSZWdpc3RlcklEKiBhcmd1bWVudHMsIFJlZ2lzdGVySUQq
IGZpcnN0RnJlZVJlZ2lzdGVyLCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0LCBSZWdpc3RlcklE
KiBwcm9maWxlSG9va1JlZ2lzdGVyLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RF
bmQpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0VGFpbENhbGxWYXJhcmdzKFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgUmVnaXN0ZXJJRCogdGhpc1JlZ2lzdGVyLCBSZWdpc3Rl
cklEKiBhcmd1bWVudHMsIFJlZ2lzdGVySUQqIGZpcnN0RnJlZVJlZ2lzdGVyLCBpbnQzMl90IGZp
cnN0VmFyQXJnT2Zmc2V0LCBSZWdpc3RlcklEKiBwcm9maWxlSG9va1JlZ2lzdGVyLCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAgICAgIGVudW0gUHJvcGVydHlE
ZXNjcmlwdG9yT3B0aW9uIHsKICAgICAgICAgICAgIFByb3BlcnR5Q29uZmlndXJhYmxlID0gMSwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2Vu
LmNwcAppbmRleCBjZmQzZWYxLi42ZDMzMGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0xMTIsNyArMTEyLDcgQEAg
dm9pZCBDb25zdGFudE5vZGU6OmVtaXRCeXRlY29kZUluQ29uZGl0aW9uQ29udGV4dChCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLAogICAgIC8vIEFsbCBvdGhlciBjYXNlcyBhcmUgdW5jb25k
aXRpb25hbCBmYWxsLXRocm91Z2hzLCBsaWtlICJpZiAodHJ1ZSkiLgogfQogCi1SZWdpc3RlcklE
KiBDb25zdGFudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiBkc3QpCitSZWdpc3RlcklEKiBDb25zdGFudE5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxs
TW9kZSkKIHsKICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCiAgICAg
ICAgIHJldHVybiAwOwpAQCAtMTI2LDcgKzEyNiw3IEBAIEpTVmFsdWUgU3RyaW5nTm9kZTo6anNW
YWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yKSBjb25zdAogCiAvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0gTnVtYmVyTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAKLVJlZ2lzdGVySUQqIE51bWJlck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCitSZWdpc3RlcklEKiBOdW1i
ZXJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0
ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdu
b3JlZFJlc3VsdCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTEzNSw3ICsxMzUsNyBA
QCBSZWdpc3RlcklEKiBOdW1iZXJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZAogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0gUmVnRXhwTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1S
ZWdpc3RlcklEKiBSZWdFeHBOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogUmVnRXhwTm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFp
bENhbGxNb2RlKQogewogICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkK
ICAgICAgICAgcmV0dXJuIDA7CkBAIC0xNDQsNyArMTQ0LDcgQEAgUmVnaXN0ZXJJRCogUmVnRXhw
Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
SUQqIGQKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFRoaXNOb2RlIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUmVnaXN0ZXJJRCogVGhpc05vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBk
c3QpCitSZWdpc3RlcklEKiBUaGlzTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlKQogewogICAgIGlmICht
X3Nob3VsZEFsd2F5c0VtaXRURFpDaGVjayB8fCBnZW5lcmF0b3IuY29uc3RydWN0b3JLaW5kKCkg
PT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkKQogICAgICAgICBnZW5lcmF0b3IuZW1pdFREWkNo
ZWNrKGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSk7CkBAIC0xNjMsNyArMTYzLDcgQEAgUmVnaXN0
ZXJJRCogVGhpc05vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiBkc3QKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFN1
cGVyTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlZ2lzdGVy
SUQqIFN1cGVyTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVySUQqIFN1cGVyTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2Rl
KQogewogICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKICAgICAgICAg
cmV0dXJuIDA7CkBAIC0xOTIsNyArMTkyLDcgQEAgYm9vbCBSZXNvbHZlTm9kZTo6aXNQdXJlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IpIGNvbnN0CiAgICAgcmV0dXJuIGdlbmVyYXRvci52
YXJpYWJsZShtX2lkZW50KS5vZmZzZXQoKS5pc1N0YWNrKCk7CiB9CiAKLVJlZ2lzdGVySUQqIFJl
c29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSkK
IHsKICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUobV9pZGVudCk7CiAgICAg
aWYgKFJlZ2lzdGVySUQqIGxvY2FsID0gdmFyLmxvY2FsKCkpIHsKQEAgLTIyMCw3ICsyMjAsNyBA
QCBSZWdpc3RlcklEKiBSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqCiAjaWYgRU5BQkxFKEVTNl9URU1QTEFURV9MSVRFUkFM
X1NZTlRBWCkKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBUZW1wbGF0ZVN0cmlu
Z05vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUmVnaXN0ZXJJRCog
VGVtcGxhdGVTdHJpbmdOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogVGVtcGxhdGVTdHJpbmdOb2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0
LCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3Vs
dCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIyOSw3ICsyMjksNyBAQCBSZWdpc3Rl
cklEKiBUZW1wbGF0ZVN0cmluZ05vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpcwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gVGVt
cGxhdGVMaXRlcmFsTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1S
ZWdpc3RlcklEKiBUZW1wbGF0ZUxpdGVyYWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogVGVtcGxhdGVM
aXRlcmFsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlKQogewogICAgIGlmICghbV90ZW1wbGF0ZUV4cHJl
c3Npb25zKSB7CiAgICAgICAgIFRlbXBsYXRlU3RyaW5nTm9kZSogdGVtcGxhdGVTdHJpbmcgPSBt
X3RlbXBsYXRlU3RyaW5ncy0+dmFsdWUoKTsKQEAgLTI2NSw3ICsyNjUsNyBAQCBSZWdpc3RlcklE
KiBUZW1wbGF0ZUxpdGVyYWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gVGFnZ2Vk
VGVtcGxhdGVOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlZ2lz
dGVySUQqIFRhZ2dlZFRlbXBsYXRlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVySUQqIFRhZ2dlZFRlbXBsYXRl
Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
SUQqIGRzdCwgVGFpbENhbGxNb2RlKQogewogICAgIEV4cGVjdGVkRnVuY3Rpb24gZXhwZWN0ZWRG
dW5jdGlvbiA9IE5vRXhwZWN0ZWRGdW5jdGlvbjsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGFn
ID0gbnVsbHB0cjsKQEAgLTMyNyw3ICszMjcsNyBAQCBSZWdpc3RlcklEKiBUYWdnZWRUZW1wbGF0
ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpcwog
CiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQXJyYXlOb2RlIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1SZWdpc3RlcklEKiBBcnJheU5vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCitS
ZWdpc3RlcklEKiBBcnJheU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSkKIHsKICAgICAvLyBGSVhNRTog
U2hvdWxkIHdlIHB1dCBhbGwgb2YgdGhpcyBjb2RlIGludG8gZW1pdE5ld0FycmF5PwogCkBAIC00
MTcsNyArNDE3LDcgQEAgQXJndW1lbnRMaXN0Tm9kZSogQXJyYXlOb2RlOjp0b0FyZ3VtZW50TGlz
dChQYXJzZXJBcmVuYSYgcGFyc2VyQXJlbmEsIGludCBsaW5lTnUKIAogLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tIE9iamVjdExpdGVyYWxOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KIAotUmVnaXN0ZXJJRCogT2JqZWN0TGl0ZXJhbE5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCitSZWdpc3RlcklE
KiBPYmplY3RMaXRlcmFsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlKQogewogICAgIGlmICghbV9saXN0
KSB7CiAgICAgICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKQEAgLTQz
Niw3ICs0MzYsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZW1pdFB1dEhvbWVPYmplY3QoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZgogICAgIGdlbmVyYXRvci5lbWl0
UHV0QnlJZChmdW5jdGlvbiwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5ob21lT2JqZWN0UHJp
dmF0ZU5hbWUsIGhvbWVPYmplY3QpOwogfQogCi1SZWdpc3RlcklEKiBQcm9wZXJ0eUxpc3ROb2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCog
ZHN0KQorUmVnaXN0ZXJJRCogUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlKQogewog
ICAgIC8vIEZhc3QgY2FzZTogdGhpcyBsb29wIGp1c3QgaGFuZGxlcyByZWd1bGFyIHZhbHVlIHBy
b3BlcnRpZXMuCiAgICAgUHJvcGVydHlMaXN0Tm9kZSogcCA9IHRoaXM7CkBAIC01ODYsNyArNTg2
LDcgQEAgdm9pZCBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0UHV0Q29uc3RhbnRQcm9wZXJ0eShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWcKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tIEJyYWNrZXRBY2Nlc3Nvck5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KIAotUmVnaXN0ZXJJRCogQnJhY2tldEFjY2Vzc29yTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVySUQq
IEJyYWNrZXRBY2Nlc3Nvck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSkKIHsKICAgICBpZiAobV9iYXNl
LT5pc1N1cGVyTm9kZSgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgZ2VuZXJhdGUg
dGhlIHByb2ZpbGVyIGluZm8/CkBAIC02MjAsNyArNjIwLDcgQEAgUmVnaXN0ZXJJRCogQnJhY2tl
dEFjY2Vzc29yTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2kKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIERvdEFjY2Vzc29yTm9k
ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1SZWdpc3RlcklEKiBEb3RBY2Nl
c3Nvck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklEKiBkc3QpCitSZWdpc3RlcklEKiBEb3RBY2Nlc3Nvck5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9k
ZSkKIHsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IG1fYmFzZS0+aXNTdXBlck5vZGUo
KSA/IGVtaXRTdXBlckJhc2VGb3JDYWxsZWUoZ2VuZXJhdG9yKSA6IGdlbmVyYXRvci5lbWl0Tm9k
ZShtX2Jhc2UpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2
b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKQEAgLTYzNSw3ICs2MzUsNyBAQCBSZWdpc3RlcklEKiBE
b3RBY2Nlc3Nvck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcgogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQXJndW1lbnRM
aXN0Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1SZWdpc3RlcklEKiBBcmd1
bWVudExpc3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogQXJndW1lbnRMaXN0Tm9kZTo6ZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENh
bGxNb2RlKQogewogICAgIEFTU0VSVChtX2V4cHIpOwogICAgIHJldHVybiBnZW5lcmF0b3IuZW1p
dE5vZGUoZHN0LCBtX2V4cHIpOwpAQCAtNjQzLDcgKzY0Myw3IEBAIFJlZ2lzdGVySUQqIEFyZ3Vt
ZW50TGlzdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBOZXdFeHByTm9kZSAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlZ2lzdGVySUQqIE5ld0V4cHJO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCogZHN0KQorUmVnaXN0ZXJJRCogTmV3RXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSkKIHsKICAg
ICBFeHBlY3RlZEZ1bmN0aW9uIGV4cGVjdGVkRnVuY3Rpb247CiAgICAgaWYgKG1fZXhwci0+aXNS
ZXNvbHZlTm9kZSgpKQpAQCAtNjg0LDcgKzY4NCw3IEBAIENhbGxBcmd1bWVudHM6OkNhbGxBcmd1
bWVudHMoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgQXJndW1lbnRzTm9kZSogYXJndW1l
CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFdmFsRnVuY3Rpb25DYWxsTm9k
ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlZ2lzdGVySUQqIEV2YWxG
dW5jdGlvbkNhbGxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogRXZhbEZ1bmN0aW9uQ2FsbE5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3Qs
IFRhaWxDYWxsTW9kZSkKIHsKICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUo
Z2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5ldmFsKTsKICAgICBpZiAoUmVnaXN0ZXJJRCogbG9j
YWwgPSB2YXIubG9jYWwoKSkgewpAQCAtNzA3LDcgKzcwNyw3IEBAIFJlZ2lzdGVySUQqIEV2YWxG
dW5jdGlvbkNhbGxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbkNhbGxW
YWx1ZU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1SZWdpc3RlcklE
KiBGdW5jdGlvbkNhbGxWYWx1ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCitSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxWYWx1
ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklEKiBkc3QsIFRhaWxDYWxsTW9kZSB0YWlsQ2FsbE1vZGUpCiB7CiAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IGZ1bmMgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9leHByKTsKICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gcmV0dXJuVmFsdWUgPSBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIGZ1
bmMuZ2V0KCkpOwpAQCAtNzIxLDcgKzcyMSwxMSBAQCBSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxW
YWx1ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZQog
ICAgICAgICByZXR1cm4gcmV0OwogICAgIH0KICAgICBnZW5lcmF0b3IuZW1pdExvYWQoY2FsbEFy
Z3VtZW50cy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7Ci0gICAgUmVnaXN0ZXJJRCog
cmV0ID0gZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jLmdldCgpLCBO
b0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwg
ZGl2b3RFbmQoKSk7CisgICAgUmVnaXN0ZXJJRCogcmV0OworICAgIGlmICh0YWlsQ2FsbE1vZGUg
PT0gQ2FuSGF2ZVRhaWxDYWxscykKKyAgICAgICAgcmV0ID0gZ2VuZXJhdG9yLmVtaXRUYWlsQ2Fs
bChyZXR1cm5WYWx1ZS5nZXQoKSwgZnVuYy5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxs
QXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgIGVsc2UK
KyAgICAgICAgcmV0ID0gZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5j
LmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90
U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgaWYgKGdlbmVyYXRvci52bSgpLT50eXBlUHJvZmls
ZXIoKSkgewogICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHJldHVyblZhbHVlLmdl
dCgpLCBQcm9maWxlVHlwZUJ5dGVjb2RlRG9lc05vdEhhdmVHbG9iYWxJRCwgbnVsbHB0cik7CiAg
ICAgICAgIGdlbmVyYXRvci5lbWl0VHlwZVByb2ZpbGVyRXhwcmVzc2lvbkluZm8oZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKQEAgLTczMSw3ICs3MzUsNyBAQCBSZWdpc3RlcklEKiBGdW5jdGlv
bkNhbGxWYWx1ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25DYWxsUmVz
b2x2ZU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1SZWdpc3RlcklE
KiBGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbFJl
c29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUgdGFpbENhbGxNb2RlKQogewogICAgIEV4cGVjdGVk
RnVuY3Rpb24gZXhwZWN0ZWRGdW5jdGlvbiA9IGdlbmVyYXRvci5leHBlY3RlZEZ1bmN0aW9uRm9y
SWRlbnRpZmllcihtX2lkZW50KTsKIApAQCAtNzQzLDcgKzc0NywxMSBAQCBSZWdpc3RlcklEKiBG
dW5jdGlvbkNhbGxSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsCiAgICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRzLnRoaXNS
ZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgLy8gVGhpcyBwYXNzZXMgTm9FeHBl
Y3RlZEZ1bmN0aW9uIGJlY2F1c2Ugd2UgZXhwZWN0IHRoYXQgaWYgdGhlIGZ1bmN0aW9uIGlzIGlu
IGEKICAgICAgICAgLy8gbG9jYWwgdmFyaWFibGUsIHRoZW4gaXQncyBub3Qgb25lIG9mIG91ciBi
dWlsdC1pbiBjb25zdHJ1Y3RvcnMuCi0gICAgICAgIFJlZ2lzdGVySUQqIHJldCA9IGdlbmVyYXRv
ci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgZnVuYy5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0
aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwor
ICAgICAgICBSZWdpc3RlcklEKiByZXQ7CisgICAgICAgIGlmICh0YWlsQ2FsbE1vZGUgPT0gQ2Fu
SGF2ZVRhaWxDYWxscykKKyAgICAgICAgICAgIHJldCA9IGdlbmVyYXRvci5lbWl0VGFpbENhbGwo
cmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmMuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFy
Z3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgcmV0ID0gZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgp
LCBmdW5jLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCks
IGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgIGlmIChnZW5lcmF0b3Iudm0oKS0+
dHlwZVByb2ZpbGVyKCkpIHsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUo
cmV0dXJuVmFsdWUuZ2V0KCksIFByb2ZpbGVUeXBlQnl0ZWNvZGVEb2VzTm90SGF2ZUdsb2JhbElE
LCBudWxscHRyKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0VHlwZVByb2ZpbGVyRXhwcmVz
c2lvbkluZm8oZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKQEAgLTc2MSw3ICs3NjksMTEgQEAg
UmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLAogICAgICAgICBjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3Rl
cigpLAogICAgICAgICBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShjYWxsQXJndW1lbnRzLnRo
aXNSZWdpc3RlcigpLCB2YXIpKTsKICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShmdW5j
LmdldCgpLCBjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCB2YXIsIFRocm93SWZOb3RGb3Vu
ZCk7Ci0gICAgUmVnaXN0ZXJJRCogcmV0ID0gZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVl
LmdldCgpLCBmdW5jLmdldCgpLCBleHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZv
dCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgIFJlZ2lzdGVySUQqIHJldDsKKyAg
ICBpZiAodGFpbENhbGxNb2RlID09IENhbkhhdmVUYWlsQ2FsbHMpCisgICAgICAgIHJldCA9IGdl
bmVyYXRvci5lbWl0VGFpbENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmMuZ2V0KCksIGV4cGVj
dGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RF
bmQoKSk7CisgICAgZWxzZQorICAgICAgICByZXQgPSBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJu
VmFsdWUuZ2V0KCksIGZ1bmMuZ2V0KCksIGV4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMs
IGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgaWYgKGdlbmVyYXRvci52
bSgpLT50eXBlUHJvZmlsZXIoKSkgewogICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBl
KHJldHVyblZhbHVlLmdldCgpLCBQcm9maWxlVHlwZUJ5dGVjb2RlRG9lc05vdEhhdmVHbG9iYWxJ
RCwgbnVsbHB0cik7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0VHlwZVByb2ZpbGVyRXhwcmVzc2lv
bkluZm8oZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKQEAgLTc3MSw3ICs3ODMsNyBAQCBSZWdp
c3RlcklEKiBGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBC
eXRlY29kZUludHJpbnNpY05vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
Ci1SZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCitSZWdpc3RlcklEKiBCeXRl
Y29kZUludHJpbnNpY05vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSkKIHsKICAgICByZXR1cm4gKHRoaXMt
PiptX2VtaXR0ZXIpKGdlbmVyYXRvciwgZHN0KTsKIH0KQEAgLTgwMSw3ICs4MTMsNyBAQCBSZWdp
c3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX3RvU3RyaW5nKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
RnVuY3Rpb25DYWxsQnJhY2tldE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogCi1SZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVySUQq
IEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUgdGFpbENhbGxNb2RlKQog
ewogICAgIGJvb2wgYmFzZUlzU3VwZXIgPSBtX2Jhc2UtPmlzU3VwZXJOb2RlKCk7CiAgICAgYm9v
bCBzdWJzY3JpcHRJc1N0cmluZyA9IG1fc3Vic2NyaXB0LT5pc1N0cmluZygpOwpAQCAtODMyLDcg
Kzg0NCwxMSBAQCBSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZTo6ZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsCiAgICAgICAgIGdlbmVyYXRvci5lbWl0
TW92ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBnZW5lcmF0b3IudGhpc1JlZ2lzdGVy
KCkpOwogICAgIGVsc2UKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMu
dGhpc1JlZ2lzdGVyKCksIGJhc2UuZ2V0KCkpOwotICAgIFJlZ2lzdGVySUQqIHJldCA9IGdlbmVy
YXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgZnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0
ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVu
ZCgpKTsKKyAgICBSZWdpc3RlcklEKiByZXQ7CisgICAgaWYgKHRhaWxDYWxsTW9kZSA9PSBDYW5I
YXZlVGFpbENhbGxzKQorICAgICAgICByZXQgPSBnZW5lcmF0b3IuZW1pdFRhaWxDYWxsKHJldHVy
blZhbHVlLmdldCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJn
dW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgIGVsc2UKKyAg
ICAgICAgcmV0ID0gZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlv
bi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZv
dFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIGlmIChnZW5lcmF0b3Iudm0oKS0+dHlwZVByb2Zp
bGVyKCkpIHsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShyZXR1cm5WYWx1ZS5n
ZXQoKSwgUHJvZmlsZVR5cGVCeXRlY29kZURvZXNOb3RIYXZlR2xvYmFsSUQsIG51bGxwdHIpOwog
ICAgICAgICBnZW5lcmF0b3IuZW1pdFR5cGVQcm9maWxlckV4cHJlc3Npb25JbmZvKGRpdm90U3Rh
cnQoKSwgZGl2b3RFbmQoKSk7CkBAIC04NDIsNyArODU4LDcgQEAgUmVnaXN0ZXJJRCogRnVuY3Rp
b25DYWxsQnJhY2tldE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLAogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25DYWxsRG90
Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlZ2lzdGVySUQqIEZ1
bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBkc3QpCitSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxEb3ROb2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0
LCBUYWlsQ2FsbE1vZGUgdGFpbENhbGxNb2RlKQogewogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBm
dW5jdGlvbiA9IGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KTsKICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gcmV0dXJuVmFsdWUgPSBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIGZ1
bmN0aW9uLmdldCgpKTsKQEAgLTg1NCw3ICs4NzAsMTEgQEAgUmVnaXN0ZXJJRCogRnVuY3Rpb25D
YWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2kKICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVy
KCksIG1fYmFzZSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhzdWJleHByZXNz
aW9uRGl2b3QoKSwgc3ViZXhwcmVzc2lvblN0YXJ0KCksIHN1YmV4cHJlc3Npb25FbmQoKSk7CiAg
ICAgZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGZ1bmN0aW9uLmdldCgpLCBiYXNlSXNTdXBlciA/IGVt
aXRTdXBlckJhc2VGb3JDYWxsZWUoZ2VuZXJhdG9yKSA6IGNhbGxBcmd1bWVudHMudGhpc1JlZ2lz
dGVyKCksIG1faWRlbnQpOwotICAgIFJlZ2lzdGVySUQqIHJldCA9IGdlbmVyYXRvci5lbWl0Q2Fs
bChyZXR1cm5WYWx1ZS5nZXQoKSwgZnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwg
Y2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICBS
ZWdpc3RlcklEKiByZXQ7CisgICAgaWYgKHRhaWxDYWxsTW9kZSA9PSBDYW5IYXZlVGFpbENhbGxz
KQorICAgICAgICByZXQgPSBnZW5lcmF0b3IuZW1pdFRhaWxDYWxsKHJldHVyblZhbHVlLmdldCgp
LCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZv
dCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgIGVsc2UKKyAgICAgICAgcmV0ID0g
Z2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9F
eHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRp
dm90RW5kKCkpOwogICAgIGlmIChnZW5lcmF0b3Iudm0oKS0+dHlwZVByb2ZpbGVyKCkpIHsKICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShyZXR1cm5WYWx1ZS5nZXQoKSwgUHJvZmls
ZVR5cGVCeXRlY29kZURvZXNOb3RIYXZlR2xvYmFsSUQsIG51bGxwdHIpOwogICAgICAgICBnZW5l
cmF0b3IuZW1pdFR5cGVQcm9maWxlckV4cHJlc3Npb25JbmZvKGRpdm90U3RhcnQoKSwgZGl2b3RF
bmQoKSk7CkBAIC04NjIsNyArODgyLDcgQEAgUmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxsRG90Tm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2kKICAgICBy
ZXR1cm4gcmV0OwogfQogCi1SZWdpc3RlcklEKiBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkK
K1JlZ2lzdGVySUQqIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUgdGFp
bENhbGxNb2RlKQogewogICAgIFJlZlB0cjxMYWJlbD4gcmVhbENhbGwgPSBnZW5lcmF0b3IubmV3
TGFiZWwoKTsKICAgICBSZWZQdHI8TGFiZWw+IGVuZCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwpA
QCAtODg2LDcgKzkwNiwxMCBAQCBSZWdpc3RlcklEKiBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsCiAgICAgICAgICAgICBh
cmd1bWVudHNSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0Tm9kZShzdWJqZWN0KTsKICAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oc3ByZWFkLT5kaXZvdCgpLCBzcHJlYWQt
PmRpdm90U3RhcnQoKSwgc3ByZWFkLT5kaXZvdEVuZCgpKTsKICAgICAgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiB0aGlzUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdEdldEJ5VmFsKGdlbmVyYXRv
ci5uZXdUZW1wb3JhcnkoKSwgYXJndW1lbnRzUmVnaXN0ZXIuZ2V0KCksIGdlbmVyYXRvci5lbWl0
TG9hZCgwLCBqc051bWJlcigwKSkpOwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsVmFy
YXJncyhyZXR1cm5WYWx1ZS5nZXQoKSwgYmFzZS5nZXQoKSwgdGhpc1JlZ2lzdGVyLmdldCgpLCBh
cmd1bWVudHNSZWdpc3Rlci5nZXQoKSwgZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCAxLCBwcm9m
aWxlSG9va1JlZ2lzdGVyLmdldCgpLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkp
OworICAgICAgICAgICAgaWYgKHRhaWxDYWxsTW9kZSA9PSBDYW5IYXZlVGFpbENhbGxzKQorICAg
ICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0VGFpbENhbGxWYXJhcmdzKHJldHVyblZhbHVlLmdl
dCgpLCBiYXNlLmdldCgpLCB0aGlzUmVnaXN0ZXIuZ2V0KCksIGFyZ3VtZW50c1JlZ2lzdGVyLmdl
dCgpLCBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIDEsIHByb2ZpbGVIb29rUmVnaXN0ZXIuZ2V0
KCksIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsVmFyYXJncyhyZXR1cm5WYWx1ZS5n
ZXQoKSwgYmFzZS5nZXQoKSwgdGhpc1JlZ2lzdGVyLmdldCgpLCBhcmd1bWVudHNSZWdpc3Rlci5n
ZXQoKSwgZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCAxLCBwcm9maWxlSG9va1JlZ2lzdGVyLmdl
dCgpLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICB9IGVsc2Ug
aWYgKG1fYXJncy0+bV9saXN0Tm9kZSAmJiBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fZXhwcikgewog
ICAgICAgICAgICAgQXJndW1lbnRMaXN0Tm9kZSogb2xkTGlzdCA9IG1fYXJncy0+bV9saXN0Tm9k
ZTsKICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG1fYXJncy0+bV9saXN0Tm9kZS0+
bV9uZXh0OwpAQCAtODk0LDEzICs5MTcsMTkgQEAgUmVnaXN0ZXJJRCogQ2FsbEZ1bmN0aW9uQ2Fs
bERvdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLAogICAg
ICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0
TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwogICAgICAg
ICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3Rlcigp
LCBvbGRMaXN0LT5tX2V4cHIpOwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVy
blZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2Fs
bEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAg
ICAgIGlmICh0YWlsQ2FsbE1vZGUgPT0gQ2FuSGF2ZVRhaWxDYWxscykKKyAgICAgICAgICAgICAg
ICBnZW5lcmF0b3IuZW1pdFRhaWxDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24u
Z2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RT
dGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwg
Tm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCks
IGRpdm90RW5kKCkpOwogICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gb2xkTGlzdDsK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVu
Y3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3Qp
LCBiYXNlLmdldCgpKTsKICAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhn
ZW5lcmF0b3IsIG1fYXJncyk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoY2FsbEFy
Z3VtZW50cy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7Ci0gICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9F
eHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRp
dm90RW5kKCkpOworICAgICAgICAgICAgaWYgKHRhaWxDYWxsTW9kZSA9PSBDYW5IYXZlVGFpbENh
bGxzKQorICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0VGFpbENhbGwocmV0dXJuVmFsdWUu
Z2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1l
bnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwg
cmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRp
dm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAg
aWYgKGVtaXRDYWxsQ2hlY2spIHsKQEAgLTkwOSw3ICs5MzgsMTAgQEAgUmVnaXN0ZXJJRCogQ2Fs
bEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLAogICAgICAgICB7CiAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVu
dHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNh
bGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGJhc2UuZ2V0KCkpOwotICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBl
Y3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90
RW5kKCkpOworICAgICAgICAgICAgaWYgKHRhaWxDYWxsTW9kZSA9PSBDYW5IYXZlVGFpbENhbGxz
KQorICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0VGFpbENhbGwocmV0dXJuVmFsdWUuZ2V0
KCksIGZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRp
dm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlv
bi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZv
dFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICB9CiAgICAgICAgIGdlbmVyYXRvci5lbWl0
TGFiZWwoZW5kLmdldCgpKTsKICAgICB9CkBAIC05MjYsNyArOTU4LDcgQEAgc3RhdGljIGJvb2wg
YXJlVHJpdmlhbEFwcGx5QXJndW1lbnRzKEFyZ3VtZW50c05vZGUqIGFyZ3MpCiAgICAgICAgIHx8
ICghYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX25leHQgJiYgYXJncy0+bV9saXN0Tm9kZS0+
bV9uZXh0LT5tX2V4cHItPmlzU2ltcGxlQXJyYXkoKSk7CiB9CiAKLVJlZ2lzdGVySUQqIEFwcGx5
RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVySUQqIEFwcGx5RnVuY3Rpb25DYWxsRG90
Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
SUQqIGRzdCwgVGFpbENhbGxNb2RlIHRhaWxDYWxsTW9kZSkKIHsKICAgICAvLyBBIGZldyBzaW1w
bGUgY2FzZXMgY2FuIGJlIHRyaXZpYWxseSBoYW5kbGVkIGFzIG9yZGluYXJ5IGZ1bmN0aW9uIGNh
bGxzLgogICAgIC8vIGZ1bmN0aW9uLmFwcGx5KCksIGZ1bmN0aW9uLmFwcGx5KGFyZykgLT4gaWRl
bnRpY2FsIHRvIGZ1bmN0aW9uLmNhbGwKQEAgLTk3NSw3ICsxMDA3LDEwIEBAIFJlZ2lzdGVySUQq
IEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsCiAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZW5k
LmdldCgpKTsKICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0RW51bWVyYXRpb24odGhpcywgc3ByZWFkLT5leHByZXNzaW9uKCksIGV4dHJhY3Rvcik7Ci0g
ICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsVmFyYXJncyhyZXR1cm5WYWx1ZS5nZXQo
KSwgcmVhbEZ1bmN0aW9uLmdldCgpLCB0aGlzUmVnaXN0ZXIuZ2V0KCksIGFyZ3VtZW50c1JlZ2lz
dGVyLmdldCgpLCBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIDAsIHByb2ZpbGVIb29rUmVnaXN0
ZXIuZ2V0KCksIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgICAg
ICAgICAgaWYgKHRhaWxDYWxsTW9kZSA9PSBDYW5IYXZlVGFpbENhbGxzKQorICAgICAgICAgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdFRhaWxDYWxsVmFyYXJncyhyZXR1cm5WYWx1ZS5nZXQoKSwg
cmVhbEZ1bmN0aW9uLmdldCgpLCB0aGlzUmVnaXN0ZXIuZ2V0KCksIGFyZ3VtZW50c1JlZ2lzdGVy
LmdldCgpLCBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIDAsIHByb2ZpbGVIb29rUmVnaXN0ZXIu
Z2V0KCksIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGxWYXJhcmdzKHJl
dHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIHRoaXNSZWdpc3Rlci5nZXQoKSwg
YXJndW1lbnRzUmVnaXN0ZXIuZ2V0KCksIGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgMCwgcHJv
ZmlsZUhvb2tSZWdpc3Rlci5nZXQoKSwgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgp
KTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAobV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQpIHsK
ICAgICAgICAgICAgICAgICBBU1NFUlQobV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fZXhw
ci0+aXNTaW1wbGVBcnJheSgpKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoIW1fYXJncy0+bV9s
aXN0Tm9kZS0+bV9uZXh0LT5tX25leHQpOwpAQCAtOTgzLDIwICsxMDE4LDI5IEBAIFJlZ2lzdGVy
SUQqIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsCiAgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxG
dW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRz
dCksIGJhc2UuZ2V0KCkpOwogICAgICAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3Vt
ZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRO
b2RlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIG9sZExpc3QtPm1fZXhwcik7Ci0gICAg
ICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVu
Y3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwg
ZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgICAgICAgICBpZiAodGFpbENhbGxN
b2RlID09IENhbkhhdmVUYWlsQ2FsbHMpCisgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0VGFpbENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBl
Y3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90
RW5kKCkpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhw
ZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZv
dEVuZCgpKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgbV9hcmdzLT5t
X2xpc3ROb2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQ7CiAgICAgICAgICAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5l
cmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwogICAgICAgICAgICAgICAg
IENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CiAgICAgICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCks
IG9sZExpc3QtPm1fZXhwcik7Ci0gICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJl
dHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwg
Y2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAg
ICAgICAgICAgICBpZiAodGFpbENhbGxNb2RlID09IENhbkhhdmVUYWlsQ2FsbHMpCisgICAgICAg
ICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0VGFpbENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJl
YWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZv
dCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBy
ZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2
b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG9sZExpc3Q7CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRN
b3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7CiAgICAgICAg
ICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCks
IGpzVW5kZWZpbmVkKCkpOwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZh
bHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFy
Z3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgICAg
IGlmICh0YWlsQ2FsbE1vZGUgPT0gQ2FuSGF2ZVRhaWxDYWxscykKKyAgICAgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdFRhaWxDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0
KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9F
eHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRp
dm90RW5kKCkpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUKG1fYXJn
cy0+bV9saXN0Tm9kZSAmJiBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dCk7CkBAIC0xMDE0LDE0
ICsxMDU4LDIwIEBAIFJlZ2lzdGVySUQqIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsCiAgICAgICAgIHdoaWxlICgoYXJn
cyA9IGFyZ3MtPm1fbmV4dCkpCiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoYXJncy0+
bV9leHByKTsKIAotICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGxWYXJhcmdzKHJldHVyblZhbHVl
LmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIHRoaXNSZWdpc3Rlci5nZXQoKSwgYXJnc1JlZ2lz
dGVyLmdldCgpLCBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIDAsIHByb2ZpbGVIb29rUmVnaXN0
ZXIuZ2V0KCksIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgIGlm
ICh0YWlsQ2FsbE1vZGUgPT0gQ2FuSGF2ZVRhaWxDYWxscykKKyAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0VGFpbENhbGxWYXJhcmdzKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0
KCksIHRoaXNSZWdpc3Rlci5nZXQoKSwgYXJnc1JlZ2lzdGVyLmdldCgpLCBnZW5lcmF0b3IubmV3
VGVtcG9yYXJ5KCksIDAsIHByb2ZpbGVIb29rUmVnaXN0ZXIuZ2V0KCksIGRpdm90KCksIGRpdm90
U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0Q2FsbFZhcmFyZ3MocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwg
dGhpc1JlZ2lzdGVyLmdldCgpLCBhcmdzUmVnaXN0ZXIuZ2V0KCksIGdlbmVyYXRvci5uZXdUZW1w
b3JhcnkoKSwgMCwgcHJvZmlsZUhvb2tSZWdpc3Rlci5nZXQoKSwgZGl2b3QoKSwgZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKICAgICB9CiAgICAgaWYgKGVtaXRDYWxsQ2hlY2spIHsKICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGVuZC5nZXQoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0
TGFiZWwocmVhbENhbGwuZ2V0KCkpOwogICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVu
dHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdE1vdmUoY2FsbEFy
Z3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgYmFzZS5nZXQoKSk7Ci0gICAgICAgIGdlbmVyYXRvci5l
bWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgZnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5j
dGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsK
KyAgICAgICAgaWYgKHRhaWxDYWxsTW9kZSA9PSBDYW5IYXZlVGFpbENhbGxzKQorICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRUYWlsQ2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgZnVuY3Rpb24uZ2V0
KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0
aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwog
ICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGVuZC5nZXQoKSk7CiAgICAgfQogICAgIGlmIChn
ZW5lcmF0b3Iudm0oKS0+dHlwZVByb2ZpbGVyKCkpIHsKQEAgLTExMzksNyArMTE4OSw3IEBAIFJl
Z2lzdGVySUQqIFBvc3RmaXhOb2RlOjplbWl0RG90KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqIGRzdCkKICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0
aW9uSWZOZWVkZWQoZHN0LCBvbGRWYWx1ZSk7CiB9CiAKLVJlZ2lzdGVySUQqIFBvc3RmaXhOb2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCog
ZHN0KQorUmVnaXN0ZXJJRCogUG9zdGZpeE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSkKIHsKICAgICBp
ZiAobV9leHByLT5pc1Jlc29sdmVOb2RlKCkpCiAgICAgICAgIHJldHVybiBlbWl0UmVzb2x2ZShn
ZW5lcmF0b3IsIGRzdCk7CkBAIC0xMTU3LDcgKzEyMDcsNyBAQCBSZWdpc3RlcklEKiBQb3N0Zml4
Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
SUQqCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBEZWxldGVSZXNvbHZlTm9k
ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1SZWdpc3RlcklEKiBEZWxl
dGVSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVySUQqIERlbGV0ZVJlc29sdmVOb2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBUYWls
Q2FsbE1vZGUpCiB7CiAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKG1faWRl
bnQpOwogICAgIGlmICh2YXIubG9jYWwoKSkKQEAgLTExNzAsNyArMTIyMCw3IEBAIFJlZ2lzdGVy
SUQqIERlbGV0ZVJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBEZWxl
dGVCcmFja2V0Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1SZWdp
c3RlcklEKiBEZWxldGVCcmFja2V0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVySUQqIERlbGV0ZUJyYWNrZXRO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCogZHN0LCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHIwID0gZ2Vu
ZXJhdG9yLmVtaXROb2RlKG1fYmFzZSk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHIxID0gZ2Vu
ZXJhdG9yLmVtaXROb2RlKG1fc3Vic2NyaXB0KTsKQEAgLTExODMsNyArMTIzMyw3IEBAIFJlZ2lz
dGVySUQqIERlbGV0ZUJyYWNrZXROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBE
ZWxldGVEb3ROb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlZ2lz
dGVySUQqIERlbGV0ZURvdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCitSZWdpc3RlcklEKiBEZWxldGVEb3ROb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBU
YWlsQ2FsbE1vZGUpCiB7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHIwID0gZ2VuZXJhdG9yLmVt
aXROb2RlKG1fYmFzZSk7CiAKQEAgLTExOTUsNyArMTI0NSw3IEBAIFJlZ2lzdGVySUQqIERlbGV0
ZURvdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklECiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBEZWxldGVWYWx1ZU5v
ZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUmVnaXN0ZXJJRCogRGVs
ZXRlVmFsdWVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogRGVsZXRlVmFsdWVOb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2Fs
bE1vZGUpCiB7CiAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0
KCksIG1fZXhwcik7CiAKQEAgLTEyMDUsNyArMTI1NSw3IEBAIFJlZ2lzdGVySUQqIERlbGV0ZVZh
bHVlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVyCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBWb2lkTm9kZSAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlZ2lzdGVySUQqIFZvaWROb2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0
KQorUmVnaXN0ZXJJRCogVm9pZE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSkKIHsKICAgICBpZiAoZHN0
ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpIHsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRO
b2RlKGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCksIG1fZXhwcik7CkBAIC0xMjE3LDcgKzEyNjcs
NyBAQCBSZWdpc3RlcklEKiBWb2lkTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdAogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gVHlwZU9mUmVzb2x2ZU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KIAotUmVnaXN0ZXJJRCogVHlwZU9mUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCitSZWdpc3RlcklEKiBU
eXBlT2ZSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlKQogewogICAgIFZhcmlhYmxlIHZhciA9
IGdlbmVyYXRvci52YXJpYWJsZShtX2lkZW50KTsKICAgICBpZiAoUmVnaXN0ZXJJRCogbG9jYWwg
PSB2YXIubG9jYWwoKSkgewpAQCAtMTIzNSw3ICsxMjg1LDcgQEAgUmVnaXN0ZXJJRCogVHlwZU9m
UmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3QKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFR5cGVPZlZhbHVlTm9k
ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1SZWdpc3RlcklEKiBUeXBl
T2ZWYWx1ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlcklEKiBkc3QpCitSZWdpc3RlcklEKiBUeXBlT2ZWYWx1ZU5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxs
TW9kZSkKIHsKICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpIHsKICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCksIG1fZXhw
cik7CkBAIC0xMzI5LDcgKzEzNzksNyBAQCBSZWdpc3RlcklEKiBQcmVmaXhOb2RlOjplbWl0RG90
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKICAgICByZXR1
cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZHN0LCBwcm9wRHN0LmdldCgp
KTsKIH0KIAotUmVnaXN0ZXJJRCogUHJlZml4Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVySUQqIFByZWZpeE5v
ZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklE
KiBkc3QsIFRhaWxDYWxsTW9kZSkKIHsKICAgICBpZiAobV9leHByLT5pc1Jlc29sdmVOb2RlKCkp
CiAgICAgICAgIHJldHVybiBlbWl0UmVzb2x2ZShnZW5lcmF0b3IsIGRzdCk7CkBAIC0xMzQ3LDcg
KzEzOTcsNyBAQCBSZWdpc3RlcklEKiBQcmVmaXhOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZAogCiAvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gVW5hcnkgT3BlcmF0aW9uIE5vZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAKLVJlZ2lzdGVySUQqIFVuYXJ5T3BOb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJ
RCogVW5hcnlPcE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSkKIHsKICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gc3JjID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fZXhwcik7CiAgICAgZ2VuZXJhdG9yLmVtaXRF
eHByZXNzaW9uSW5mbyhwb3NpdGlvbigpLCBwb3NpdGlvbigpLCBwb3NpdGlvbigpKTsKQEAgLTEz
NTYsNyArMTQwNiw3IEBAIFJlZ2lzdGVySUQqIFVuYXJ5T3BOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCoKIAogLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tIEJpdHdpc2VOb3ROb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAgCi1SZWdpc3RlcklEKiBCaXR3aXNlTm90Tm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVy
SUQqIEJpdHdpc2VOb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHNyYzIgPSBnZW5lcmF0b3IuZW1pdExvYWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgp
LCBqc051bWJlcigtMSkpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzcmMxID0gZ2VuZXJhdG9y
LmVtaXROb2RlKG1fZXhwcik7CkBAIC0xNTQ5LDcgKzE1OTksNyBAQCB2b2lkIEJpbmFyeU9wTm9k
ZTo6dHJ5Rm9sZFRvQnJhbmNoKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFRyaVN0YXRl
JiBicmFuYwogICAgICAgICBicmFuY2hDb25kaXRpb24gPSB0cmlTdGF0ZSghdmFsdWUucHVyZVRv
Qm9vbGVhbigpKTsKIH0KIAotUmVnaXN0ZXJJRCogQmluYXJ5T3BOb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJ
RCogQmluYXJ5T3BOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAgT3Bjb2RlSUQgb3Bjb2Rl
SUQgPSB0aGlzLT5vcGNvZGVJRCgpOwogCkBAIC0xNTkzLDcgKzE2NDMsNyBAQCBSZWdpc3RlcklE
KiBCaW5hcnlPcE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVJlZ2lzdGVySUQqIEVxdWFs
Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
SUQqIGRzdCkKK1JlZ2lzdGVySUQqIEVxdWFsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlKQogewogICAg
IGlmIChtX2V4cHIxLT5pc051bGwoKSB8fCBtX2V4cHIyLT5pc051bGwoKSkgewogICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gc3JjID0gZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpOwpA
QCAtMTYxMSw3ICsxNjYxLDcgQEAgUmVnaXN0ZXJJRCogRXF1YWxOb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHMKICAgICByZXR1cm4g
Z2VuZXJhdG9yLmVtaXRFcXVhbGl0eU9wKG9wX2VxLCBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlv
bihkc3QsIHNyYzEuZ2V0KCkpLCBzcmMxLmdldCgpLCBzcmMyLmdldCgpKTsKIH0KIAotUmVnaXN0
ZXJJRCogU3RyaWN0RXF1YWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogU3RyaWN0RXF1YWxOb2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0
LCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAgRXhwcmVzc2lvbk5vZGUqIGxlZnQgPSBtX2V4cHIxOwog
ICAgIEV4cHJlc3Npb25Ob2RlKiByaWdodCA9IG1fZXhwcjI7CkBAIC0xNjIzLDcgKzE2NzMsNyBA
QCBSZWdpc3RlcklEKiBTdHJpY3RFcXVhbE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcgogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEVxdWFs
aXR5T3Aob3Bfc3RyaWN0ZXEsIGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgc3JjMS5n
ZXQoKSksIHNyYzEuZ2V0KCksIHNyYzIuZ2V0KCkpOwogfQogCi1SZWdpc3RlcklEKiBUaHJvd2Fi
bGVCaW5hcnlPcE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiBkc3QpCitSZWdpc3RlcklEKiBUaHJvd2FibGVCaW5hcnlPcE5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3Qs
IFRhaWxDYWxsTW9kZSkKIHsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3JjMSA9IGdlbmVyYXRv
ci5lbWl0Tm9kZUZvckxlZnRIYW5kU2lkZShtX2V4cHIxLCBtX3JpZ2h0SGFzQXNzaWdubWVudHMs
IG1fZXhwcjItPmlzUHVyZShnZW5lcmF0b3IpKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3Jj
MiA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2V4cHIyKTsKQEAgLTE2MzEsNyArMTY4MSw3IEBAIFJl
Z2lzdGVySUQqIFRocm93YWJsZUJpbmFyeU9wTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlCiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0QmluYXJ5T3Ao
b3Bjb2RlSUQoKSwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCBzcmMxLmdldCgpKSwg
c3JjMS5nZXQoKSwgc3JjMi5nZXQoKSwgT3BlcmFuZFR5cGVzKG1fZXhwcjEtPnJlc3VsdERlc2Ny
aXB0b3IoKSwgbV9leHByMi0+cmVzdWx0RGVzY3JpcHRvcigpKSk7CiB9CiAKLVJlZ2lzdGVySUQq
IEluc3RhbmNlT2ZOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogSW5zdGFuY2VPZk5vZGU6OmVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxD
YWxsTW9kZSkKIHsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3JjMSA9IGdlbmVyYXRvci5lbWl0
Tm9kZUZvckxlZnRIYW5kU2lkZShtX2V4cHIxLCBtX3JpZ2h0SGFzQXNzaWdubWVudHMsIG1fZXhw
cjItPmlzUHVyZShnZW5lcmF0b3IpKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3JjMiA9IGdl
bmVyYXRvci5lbWl0Tm9kZShtX2V4cHIyKTsKQEAgLTE2NTMsNyArMTcwMyw3IEBAIFJlZ2lzdGVy
SUQqIEluc3RhbmNlT2ZOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBMb2dp
Y2FsT3BOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUmVnaXN0ZXJJRCogTG9n
aWNhbE9wTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVySUQqIExvZ2ljYWxPcE5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9k
ZSB0YWlsQ2FsbE1vZGUpCiB7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRlbXAgPSBnZW5lcmF0
b3IudGVtcERlc3RpbmF0aW9uKGRzdCk7CiAgICAgUmVmUHRyPExhYmVsPiB0YXJnZXQgPSBnZW5l
cmF0b3IubmV3TGFiZWwoKTsKQEAgLTE2NjMsNyArMTcxMyw3IEBAIFJlZ2lzdGVySUQqIExvZ2lj
YWxPcE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklECiAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmRmFsc2UodGVtcC5nZXQoKSwgdGFy
Z2V0LmdldCgpKTsKICAgICBlbHNlCiAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1ZSh0
ZW1wLmdldCgpLCB0YXJnZXQuZ2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0Tm9kZSh0ZW1wLmdl
dCgpLCBtX2V4cHIyKTsKKyAgICBnZW5lcmF0b3IuZW1pdE5vZGUodGVtcC5nZXQoKSwgbV9leHBy
MiwgdGFpbENhbGxNb2RlKTsKICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHRhcmdldC5nZXQoKSk7
CiAKICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZHN0LCB0
ZW1wLmdldCgpKTsKQEAgLTE2ODMsNyArMTczMyw3IEBAIHZvaWQgTG9naWNhbE9wTm9kZTo6ZW1p
dEJ5dGVjb2RlSW5Db25kaXRpb25Db250ZXh0KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDb25kaXRpb25hbE5vZGUgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlZ2lzdGVySUQqIENvbmRpdGlvbmFsTm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
IGRzdCkKK1JlZ2lzdGVySUQqIENvbmRpdGlvbmFsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlIHRhaWxD
YWxsTW9kZSkKIHsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV3RHN0ID0gZ2VuZXJhdG9yLmZp
bmFsRGVzdGluYXRpb24oZHN0KTsKICAgICBSZWZQdHI8TGFiZWw+IGJlZm9yZUVsc2UgPSBnZW5l
cmF0b3IubmV3TGFiZWwoKTsKQEAgLTE2OTQsMTIgKzE3NDQsMTIgQEAgUmVnaXN0ZXJJRCogQ29u
ZGl0aW9uYWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXIKICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGJlZm9yZVRoZW4uZ2V0KCkpOwogCiAg
ICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlQ29udHJvbEZsb3cobV9leHByMS0+c3RhcnRPZmZzZXQo
KSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXROb2RlKG5ld0RzdC5nZXQoKSwgbV9leHByMSk7CisgICAg
Z2VuZXJhdG9yLmVtaXROb2RlKG5ld0RzdC5nZXQoKSwgbV9leHByMSwgdGFpbENhbGxNb2RlKTsK
ICAgICBnZW5lcmF0b3IuZW1pdEp1bXAoYWZ0ZXJFbHNlLmdldCgpKTsKIAogICAgIGdlbmVyYXRv
ci5lbWl0TGFiZWwoYmVmb3JlRWxzZS5nZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxl
Q29udHJvbEZsb3cobV9leHByMS0+ZW5kT2Zmc2V0KCkgKyAxKTsKLSAgICBnZW5lcmF0b3IuZW1p
dE5vZGUobmV3RHN0LmdldCgpLCBtX2V4cHIyKTsKKyAgICBnZW5lcmF0b3IuZW1pdE5vZGUobmV3
RHN0LmdldCgpLCBtX2V4cHIyLCB0YWlsQ2FsbE1vZGUpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRM
YWJlbChhZnRlckVsc2UuZ2V0KCkpOwogCkBAIC0xNzY3LDcgKzE4MTcsNyBAQCBzdGF0aWMgQUxX
QVlTX0lOTElORSBSZWdpc3RlcklEKiBlbWl0UmVhZE1vZGlmeUFzc2lnbm1lbnQoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVJlZ2lzdGVySUQqIFJlYWRN
b2RpZnlSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVySUQqIFJlYWRNb2RpZnlSZXNvbHZlTm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRz
dCwgVGFpbENhbGxNb2RlKQogewogICAgIEpTVGV4dFBvc2l0aW9uIG5ld0Rpdm90ID0gZGl2b3RT
dGFydCgpICsgbV9pZGVudC5sZW5ndGgoKTsKICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3Iu
dmFyaWFibGUobV9pZGVudCk7CkBAIC0xODA4LDcgKzE4NTgsNyBAQCBSZWdpc3RlcklEKiBSZWFk
TW9kaWZ5UmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQXNzaWduUmVzb2x2
ZU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUmVnaXN0ZXJJRCog
QXNzaWduUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBkc3QpCitSZWdpc3RlcklEKiBBc3NpZ25SZXNvbHZlTm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwg
VGFpbENhbGxNb2RlKQogewogICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZSht
X2lkZW50KTsKICAgICBpZiAoUmVnaXN0ZXJJRCogbG9jYWwgPSB2YXIubG9jYWwoKSkgewpAQCAt
MTg0Nyw3ICsxODk3LDcgQEAgUmVnaXN0ZXJJRCogQXNzaWduUmVzb2x2ZU5vZGU6OmVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3QKIAogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIEFzc2lnbkRvdE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KIAotUmVnaXN0ZXJJRCogQXNzaWduRG90Tm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVy
SUQqIEFzc2lnbkRvdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSkKIHsKICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZUZvckxlZnRIYW5kU2lkZShtX2Jhc2UsIG1f
cmlnaHRIYXNBc3NpZ25tZW50cywgbV9yaWdodC0+aXNQdXJlKGdlbmVyYXRvcikpOwogICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5kZXN0aW5hdGlvbkZvckFzc2lnblJl
c3VsdChkc3QpOwpAQCAtMTg2NCw3ICsxOTE0LDcgQEAgUmVnaXN0ZXJJRCogQXNzaWduRG90Tm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQK
IAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFJlYWRNb2RpZnlEb3ROb2RlIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlZ2lzdGVySUQqIFJlYWRNb2Rp
ZnlEb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogUmVhZE1vZGlmeURvdE5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxs
TW9kZSkKIHsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9k
ZUZvckxlZnRIYW5kU2lkZShtX2Jhc2UsIG1fcmlnaHRIYXNBc3NpZ25tZW50cywgbV9yaWdodC0+
aXNQdXJlKGdlbmVyYXRvcikpOwogCkBAIC0xODgzLDE0ICsxOTMzLDE0IEBAIFJlZ2lzdGVySUQq
IFJlYWRNb2RpZnlEb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBBc3NpZ25F
cnJvck5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUmVnaXN0ZXJJ
RCogQXNzaWduRXJyb3JOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCopCitSZWdpc3RlcklEKiBBc3NpZ25FcnJvck5vZGU6OmVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiwgVGFpbENhbGxN
b2RlKQogewogICAgIHJldHVybiBlbWl0VGhyb3dSZWZlcmVuY2VFcnJvcihnZW5lcmF0b3IsIEFT
Q0lJTGl0ZXJhbCgiTGVmdCBzaWRlIG9mIGFzc2lnbm1lbnQgaXMgbm90IGEgcmVmZXJlbmNlLiIp
KTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEFzc2lnbkJyYWNrZXRO
b2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlZ2lzdGVySUQqIEFz
c2lnbkJyYWNrZXROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogQXNzaWduQnJhY2tldE5vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRh
aWxDYWxsTW9kZSkKIHsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5l
bWl0Tm9kZUZvckxlZnRIYW5kU2lkZShtX2Jhc2UsIG1fc3Vic2NyaXB0SGFzQXNzaWdubWVudHMg
fHwgbV9yaWdodEhhc0Fzc2lnbm1lbnRzLCBtX3N1YnNjcmlwdC0+aXNQdXJlKGdlbmVyYXRvcikg
JiYgbV9yaWdodC0+aXNQdXJlKGdlbmVyYXRvcikpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBw
cm9wZXJ0eSA9IGdlbmVyYXRvci5lbWl0Tm9kZUZvckxlZnRIYW5kU2lkZShtX3N1YnNjcmlwdCwg
bV9yaWdodEhhc0Fzc2lnbm1lbnRzLCBtX3JpZ2h0LT5pc1B1cmUoZ2VuZXJhdG9yKSk7CkBAIC0x
OTE0LDcgKzE5NjQsNyBAQCBSZWdpc3RlcklEKiBBc3NpZ25CcmFja2V0Tm9kZTo6ZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdAogCiAvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0gUmVhZE1vZGlmeUJyYWNrZXROb2RlIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlZ2lzdGVySUQqIFJlYWRNb2RpZnlCcmFja2V0Tm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
IGRzdCkKK1JlZ2lzdGVySUQqIFJlYWRNb2RpZnlCcmFja2V0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2Rl
KQogewogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlRm9y
TGVmdEhhbmRTaWRlKG1fYmFzZSwgbV9zdWJzY3JpcHRIYXNBc3NpZ25tZW50cyB8fCBtX3JpZ2h0
SGFzQXNzaWdubWVudHMsIG1fc3Vic2NyaXB0LT5pc1B1cmUoZ2VuZXJhdG9yKSAmJiBtX3JpZ2h0
LT5pc1B1cmUoZ2VuZXJhdG9yKSk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3BlcnR5ID0g
Z2VuZXJhdG9yLmVtaXROb2RlRm9yTGVmdEhhbmRTaWRlKG1fc3Vic2NyaXB0LCBtX3JpZ2h0SGFz
QXNzaWdubWVudHMsIG1fcmlnaHQtPmlzUHVyZShnZW5lcmF0b3IpKTsKQEAgLTE5MzUsMTIgKzE5
ODUsMTIgQEAgUmVnaXN0ZXJJRCogUmVhZE1vZGlmeUJyYWNrZXROb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmUKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tIENvbW1hTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIAotUmVnaXN0ZXJJRCogQ29tbWFOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogQ29tbWFOb2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0
LCBUYWlsQ2FsbE1vZGUgdGFpbENhbGxNb2RlKQogewogICAgIENvbW1hTm9kZSogbm9kZSA9IHRo
aXM7CiAgICAgZm9yICg7IG5vZGUgJiYgbm9kZS0+bmV4dCgpOyBub2RlID0gbm9kZS0+bmV4dCgp
KQogICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSwg
bm9kZS0+bV9leHByKTsKLSAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbm9kZS0+
bV9leHByKTsKKyAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbm9kZS0+bV9leHBy
LCB0YWlsQ2FsbE1vZGUpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
Q29uc3REZWNsTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTE5
ODgsNyArMjAzOCw3IEBAIFJlZ2lzdGVySUQqIENvbnN0RGVjbE5vZGU6OmVtaXRDb2RlU2luZ2xl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IpCiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0
UHV0VG9TY29wZShzY29wZS5nZXQoKSwgdmFyLCB2YWx1ZS5nZXQoKSwgRG9Ob3RUaHJvd0lmTm90
Rm91bmQpOwogfQogCi1SZWdpc3RlcklEKiBDb25zdERlY2xOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCitSZWdpc3RlcklEKiBDb25z
dERlY2xOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCosIFRhaWxDYWxsTW9kZSkKIHsKICAgICBSZWdpc3RlcklEKiByZXN1bHQgPSAwOwog
ICAgIGZvciAoQ29uc3REZWNsTm9kZSogbiA9IHRoaXM7IG47IG4gPSBuLT5tX25leHQpCkBAIC0x
OTk5LDcgKzIwNDksNyBAQCBSZWdpc3RlcklEKiBDb25zdERlY2xOb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRAogCiAvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29uc3RTdGF0ZW1lbnROb2RlIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAKLXZvaWQgQ29uc3RTdGF0ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCit2b2lkIENvbnN0U3RhdGVt
ZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqLCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2ls
bEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRP
ZmZzZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKG1fbmV4dCk7CkBAIC0yMDEzLDEwICsy
MDYzLDEwIEBAIGlubGluZSBTdGF0ZW1lbnROb2RlKiBTb3VyY2VFbGVtZW50czo6bGFzdFN0YXRl
bWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fdGFpbDsKIH0KIAotaW5saW5lIHZvaWQgU291cmNl
RWxlbWVudHM6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklEKiBkc3QpCitpbmxpbmUgdm9pZCBTb3VyY2VFbGVtZW50czo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2Rl
IHRhaWxDYWxsTW9kZSkKIHsKICAgICBmb3IgKFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCA9IG1f
aGVhZDsgc3RhdGVtZW50OyBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnQtPm5leHQoKSkKLSAgICAgICAg
Z2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgc3RhdGVtZW50KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVt
aXROb2RlKGRzdCwgc3RhdGVtZW50LCB0YWlsQ2FsbE1vZGUpOwogfQogCiAvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0gQmxvY2tOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQpAQCAtMjAzMSwzMCArMjA4MSwzMCBAQCBTdGF0ZW1lbnROb2RlKiBCbG9ja05v
ZGU6OnNpbmdsZVN0YXRlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc3RhdGVtZW50cyA/IG1f
c3RhdGVtZW50cy0+c2luZ2xlU3RhdGVtZW50KCkgOiAwOwogfQogCi12b2lkIEJsb2NrTm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRz
dCkKK3ZvaWQgQmxvY2tOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUgdGFpbENhbGxNb2RlKQogewogICAg
IGlmICghbV9zdGF0ZW1lbnRzKQogICAgICAgICByZXR1cm47Ci0gICAgbV9zdGF0ZW1lbnRzLT5l
bWl0Qnl0ZWNvZGUoZ2VuZXJhdG9yLCBkc3QpOworICAgIG1fc3RhdGVtZW50cy0+ZW1pdEJ5dGVj
b2RlKGdlbmVyYXRvciwgZHN0LCB0YWlsQ2FsbE1vZGUpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0gRW1wdHlTdGF0ZW1lbnROb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogCi12b2lkIEVtcHR5U3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQordm9pZCBFbXB0eVN0YXRlbWVudE5v
ZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklE
KiwgVGFpbENhbGxNb2RlKQogewogICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVj
dXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0
KCkpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRGVidWdnZXJTdGF0
ZW1lbnROb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi12b2lkIERlYnVnZ2VyU3Rh
dGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqKQordm9pZCBEZWJ1Z2dlclN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiwgVGFpbENhbGxNb2RlKQogewog
ICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKERpZFJlYWNoQnJlYWtwb2ludCwgbGFzdExpbmUo
KSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwogfQogCiAvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0gRXhwclN0YXRlbWVudE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogCi12b2lkIEV4cHJTdGF0ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQordm9pZCBFeHByU3RhdGVt
ZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqIGRzdCwgVGFpbENhbGxNb2RlKQogewogICAgIEFTU0VSVChtX2V4cHIpOwogICAgIGdl
bmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwg
c3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwpAQCAtMjA2Myw3ICsyMTEzLDcgQEAg
dm9pZCBFeHByU3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGQKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tIFZhclN0YXRlbWVudE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi12b2lk
IFZhclN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKikKK3ZvaWQgVmFyU3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqLCBUYWlsQ2FsbE1vZGUpCiB7
CiAgICAgQVNTRVJUKG1fZXhwcik7CiAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4
ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZz
ZXQoKSk7CkBAIC0yMDcyLDcgKzIxMjIsNyBAQCB2b2lkIFZhclN0YXRlbWVudE5vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKIAogLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEVtcHR5VmFyRXhwcmVzc2lvbiAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlZ2lzdGVySUQqIEVtcHR5VmFyRXhwcmVzc2lvbjo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQor
UmVnaXN0ZXJJRCogRW1wdHlWYXJFeHByZXNzaW9uOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCosIFRhaWxDYWxsTW9kZSkKIHsKICAgICBpZiAo
IWdlbmVyYXRvci52bSgpLT50eXBlUHJvZmlsZXIoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CkBAIC0yMTMxLDcgKzIxODEsNyBAQCBib29sIElmRWxzZU5vZGU6OnRyeUZvbGRCcmVha0FuZENv
bnRpbnVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFN0YXRlbWVudAogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotdm9pZCBJZkVsc2VOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQordm9pZCBJZkVsc2VOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBU
YWlsQ2FsbE1vZGUgdGFpbENhbGxNb2RlKQogewogICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29r
KFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0
YXJ0T2Zmc2V0KCkpOwogICAgIApAQCAtMjE0OSw3ICsyMTk5LDcgQEAgdm9pZCBJZkVsc2VOb2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCog
ZHN0KQogICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZUNvbnRyb2xGbG93KG1faWZCbG9jay0+c3Rh
cnRPZmZzZXQoKSk7CiAKICAgICBpZiAoIWRpZEZvbGRJZkJsb2NrKSB7Ci0gICAgICAgIGdlbmVy
YXRvci5lbWl0Tm9kZShkc3QsIG1faWZCbG9jayk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9k
ZShkc3QsIG1faWZCbG9jaywgdGFpbENhbGxNb2RlKTsKICAgICAgICAgaWYgKG1fZWxzZUJsb2Nr
KQogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGFmdGVyRWxzZS5nZXQoKSk7CiAgICAg
fQpAQCAtMjE1OCw3ICsyMjA4LDcgQEAgdm9pZCBJZkVsc2VOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogCiAgICAgaWYgKG1f
ZWxzZUJsb2NrKSB7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZUNvbnRyb2xGbG93KG1f
aWZCbG9jay0+ZW5kT2Zmc2V0KCkgKyAobV9pZkJsb2NrLT5pc0Jsb2NrKCkgPyAxIDogMCkpOwot
ICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX2Vsc2VCbG9jayk7CisgICAgICAgIGdl
bmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fZWxzZUJsb2NrLCB0YWlsQ2FsbE1vZGUpOwogICAgIH0K
IAogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoYWZ0ZXJFbHNlLmdldCgpKTsKQEAgLTIxNjgsNyAr
MjIxOCw3IEBAIHZvaWQgSWZFbHNlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tIERvV2hpbGVOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IAotdm9pZCBEb1doaWxlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3ZvaWQgRG9XaGlsZU5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9k
ZSB0YWlsQ2FsbE1vZGUpCiB7CiAgICAgTGFiZWxTY29wZVB0ciBzY29wZSA9IGdlbmVyYXRvci5u
ZXdMYWJlbFNjb3BlKExhYmVsU2NvcGU6Okxvb3ApOwogCkBAIC0yMTc3LDcgKzIyMjcsNyBAQCB2
b2lkIERvV2hpbGVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogZHN0KQogICAgIGdlbmVyYXRvci5lbWl0TG9vcEhpbnQoKTsKICAgICBn
ZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgbGFzdExpbmUoKSwg
c3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwogCi0gICAgZ2VuZXJhdG9yLmVtaXRO
b2RlKGRzdCwgbV9zdGF0ZW1lbnQpOworICAgIGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fc3Rh
dGVtZW50LCB0YWlsQ2FsbE1vZGUpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChzY29wZS0+
Y29udGludWVUYXJnZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1
dGVTdGF0ZW1lbnQsIGxhc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgp
KTsKQEAgLTIxODgsNyArMjIzOCw3IEBAIHZvaWQgRG9XaGlsZU5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAKIC8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBXaGlsZU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAKLXZvaWQgV2hpbGVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQordm9pZCBXaGlsZU5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3Qs
IFRhaWxDYWxsTW9kZSB0YWlsQ2FsbE1vZGUpCiB7CiAgICAgTGFiZWxTY29wZVB0ciBzY29wZSA9
IGdlbmVyYXRvci5uZXdMYWJlbFNjb3BlKExhYmVsU2NvcGU6Okxvb3ApOwogICAgIFJlZlB0cjxM
YWJlbD4gdG9wT2ZMb29wID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CkBAIC0yMjAwLDcgKzIyNTAs
NyBAQCB2b2lkIFdoaWxlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKICAgICBnZW5lcmF0b3IuZW1pdExvb3BIaW50KCk7CiAg
ICAgCiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlQ29udHJvbEZsb3cobV9zdGF0ZW1lbnQtPnN0
YXJ0T2Zmc2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fc3RhdGVtZW50KTsK
KyAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX3N0YXRlbWVudCwgdGFpbENhbGxNb2RlKTsK
IAogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoc2NvcGUtPmNvbnRpbnVlVGFyZ2V0KCkpOwogICAg
IGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUo
KSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwpAQCAtMjIxNCw3ICsyMjY0LDcg
QEAgdm9pZCBXaGlsZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBkc3QpCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSBGb3JOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLXZvaWQg
Rm9yTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqIGRzdCkKK3ZvaWQgRm9yTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlIHRhaWxDYWxsTW9kZSkK
IHsKICAgICBMYWJlbFNjb3BlUHRyIHNjb3BlID0gZ2VuZXJhdG9yLm5ld0xhYmVsU2NvcGUoTGFi
ZWxTY29wZTo6TG9vcCk7CiAKQEAgLTIyMzEsNyArMjI4MSw3IEBAIHZvaWQgRm9yTm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkK
ICAgICBnZW5lcmF0b3IuZW1pdExvb3BIaW50KCk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxl
Q29udHJvbEZsb3cobV9zdGF0ZW1lbnQtPnN0YXJ0T2Zmc2V0KCkpOwogCi0gICAgZ2VuZXJhdG9y
LmVtaXROb2RlKGRzdCwgbV9zdGF0ZW1lbnQpOworICAgIGdlbmVyYXRvci5lbWl0Tm9kZShkc3Qs
IG1fc3RhdGVtZW50LCB0YWlsQ2FsbE1vZGUpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChz
Y29wZS0+Y29udGludWVUYXJnZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2ls
bEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRP
ZmZzZXQoKSk7CkBAIC0yNDgxLDEzICsyNTMxLDEzIEBAIHZvaWQgRm9ySW5Ob2RlOjplbWl0TXVs
dGlMb29wQnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCoK
ICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVDb250cm9sRmxvdyhwcm9maWxlckVuZE9mZnNldCk7
CiB9CiAKLXZvaWQgRm9ySW5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQordm9pZCBGb3JJbk5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9k
ZSkKIHsKICAgICB0aGlzLT5lbWl0TXVsdGlMb29wQnl0ZWNvZGUoZ2VuZXJhdG9yLCBkc3QpOwog
fQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRm9yT2ZOb2RlIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotdm9pZCBGb3JPZk5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit2b2lkIEZv
ck9mTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqIGRzdCwgVGFpbENhbGxNb2RlKQogewogICAgIGlmICghbV9sZXhwci0+aXNBc3NpZ25t
ZW50TG9jYXRpb24oKSkgewogICAgICAgICBlbWl0VGhyb3dSZWZlcmVuY2VFcnJvcihnZW5lcmF0
b3IsIEFTQ0lJTGl0ZXJhbCgiTGVmdCBzaWRlIG9mIGZvci1vZiBzdGF0ZW1lbnQgaXMgbm90IGEg
cmVmZXJlbmNlLiIpKTsKQEAgLTI1NjMsNyArMjYxMyw3IEBAIExhYmVsKiBDb250aW51ZU5vZGU6
OnRyaXZpYWxUYXJnZXQoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvcikKICAgICByZXR1cm4g
c2NvcGUtPmNvbnRpbnVlVGFyZ2V0KCk7CiB9CiAKLXZvaWQgQ29udGludWVOb2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCit2b2lkIENv
bnRpbnVlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqLCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2so
V2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3Rh
cnRPZmZzZXQoKSk7CiAgICAgCkBAIC0yNTkyLDcgKzI2NDIsNyBAQCBMYWJlbCogQnJlYWtOb2Rl
Ojp0cml2aWFsVGFyZ2V0KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IpCiAgICAgcmV0dXJu
IHNjb3BlLT5icmVha1RhcmdldCgpOwogfQogCi12b2lkIEJyZWFrTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQordm9pZCBCcmVha05v
ZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklE
KiwgVGFpbENhbGxNb2RlKQogewogICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVj
dXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0
KCkpOwogICAgIApAQCAtMjYwNyw3ICsyNjU3LDcgQEAgdm9pZCBCcmVha05vZGU6OmVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKIAogLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFJldHVybk5vZGUgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIAotdm9pZCBSZXR1cm5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQordm9pZCBSZXR1cm5Ob2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCog
ZHN0LCBUYWlsQ2FsbE1vZGUgdGFpbENhbGxNb2RlKQogewogICAgIGdlbmVyYXRvci5lbWl0RGVi
dWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwg
bGluZVN0YXJ0T2Zmc2V0KCkpOwogICAgIEFTU0VSVChnZW5lcmF0b3IuY29kZVR5cGUoKSA9PSBG
dW5jdGlvbkNvZGUpOwpAQCAtMjYxNSw3ICsyNjY1LDcgQEAgdm9pZCBSZXR1cm5Ob2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQog
ICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKICAgICAgICAgZHN0ID0g
MDsKIAotICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5SZWdpc3RlciA9IG1fdmFsdWUgPyBn
ZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX3ZhbHVlKSA6IGdlbmVyYXRvci5lbWl0TG9hZChkc3Qs
IGpzVW5kZWZpbmVkKCkpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5SZWdpc3RlciA9
IG1fdmFsdWUgPyBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX3ZhbHVlLCB0YWlsQ2FsbE1vZGUp
IDogZ2VuZXJhdG9yLmVtaXRMb2FkKGRzdCwganNVbmRlZmluZWQoKSk7CiAgICAgaWYgKGdlbmVy
YXRvci52bSgpLT50eXBlUHJvZmlsZXIoKSkgewogICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2Zp
bGVUeXBlKHJldHVyblJlZ2lzdGVyLmdldCgpLCBQcm9maWxlVHlwZUJ5dGVjb2RlRnVuY3Rpb25S
ZXR1cm5TdGF0ZW1lbnQsIG51bGxwdHIpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdFR5cGVQcm9m
aWxlckV4cHJlc3Npb25JbmZvKGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CkBAIC0yNjM2LDI1
ICsyNjg2LDI1IEBAIHZvaWQgUmV0dXJuTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tIFdpdGhOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIAotdm9pZCBXaXRoTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3ZvaWQgV2l0aE5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSB0
YWlsQ2FsbE1vZGUpCiB7CiAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVT
dGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7
CiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9l
eHByKTsKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKG1fZGl2b3QsIG1fZGl2b3Qg
LSBtX2V4cHJlc3Npb25MZW5ndGgsIG1fZGl2b3QpOwogICAgIGdlbmVyYXRvci5lbWl0UHVzaFdp
dGhTY29wZShnZW5lcmF0b3Iuc2NvcGVSZWdpc3RlcigpLCBzY29wZS5nZXQoKSk7Ci0gICAgZ2Vu
ZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9zdGF0ZW1lbnQpOworICAgIGdlbmVyYXRvci5lbWl0Tm9k
ZShkc3QsIG1fc3RhdGVtZW50LCB0YWlsQ2FsbE1vZGUpOwogICAgIGdlbmVyYXRvci5lbWl0UG9w
U2NvcGUoZ2VuZXJhdG9yLnNjb3BlUmVnaXN0ZXIoKSk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSBDYXNlQ2xhdXNlTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogCi1pbmxpbmUgdm9pZCBDYXNlQ2xhdXNlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK2lubGluZSB2b2lkIENh
c2VDbGF1c2VOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUgdGFpbENhbGxNb2RlKQogewogICAgIGdlbmVy
YXRvci5lbWl0UHJvZmlsZUNvbnRyb2xGbG93KG1fc3RhcnRPZmZzZXQpOwogICAgIGlmICghbV9z
dGF0ZW1lbnRzKQogICAgICAgICByZXR1cm47Ci0gICAgbV9zdGF0ZW1lbnRzLT5lbWl0Qnl0ZWNv
ZGUoZ2VuZXJhdG9yLCBkc3QpOworICAgIG1fc3RhdGVtZW50cy0+ZW1pdEJ5dGVjb2RlKGdlbmVy
YXRvciwgZHN0LCB0YWlsQ2FsbE1vZGUpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gQ2FzZUJsb2NrTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpA
QCAtMjc0OCw3ICsyNzk4LDcgQEAgU3dpdGNoSW5mbzo6U3dpdGNoVHlwZSBDYXNlQmxvY2tOb2Rl
Ojp0cnlUYWJsZVN3aXRjaChWZWN0b3I8RXhwcmVzc2lvbk5vZGUqLCA4PiYKICAgICByZXR1cm4g
U3dpdGNoSW5mbzo6U3dpdGNoU3RyaW5nOwogfQogCi12b2lkIENhc2VCbG9ja05vZGU6OmVtaXRC
eXRlY29kZUZvckJsb2NrKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
IHN3aXRjaEV4cHJlc3Npb24sIFJlZ2lzdGVySUQqIGRzdCkKK3ZvaWQgQ2FzZUJsb2NrTm9kZTo6
ZW1pdEJ5dGVjb2RlRm9yQmxvY2soQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0
ZXJJRCogc3dpdGNoRXhwcmVzc2lvbiwgUmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUgdGFp
bENhbGxNb2RlKQogewogICAgIFJlZlB0cjxMYWJlbD4gZGVmYXVsdExhYmVsOwogICAgIFZlY3Rv
cjxSZWZQdHI8TGFiZWw+LCA4PiBsYWJlbFZlY3RvcjsKQEAgLTI3ODcsMTcgKzI4MzcsMTcgQEAg
dm9pZCBDYXNlQmxvY2tOb2RlOjplbWl0Qnl0ZWNvZGVGb3JCbG9jayhCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3RlckkKICAgICBzaXplX3QgaSA9IDA7CiAgICAgZm9yIChDbGF1
c2VMaXN0Tm9kZSogbGlzdCA9IG1fbGlzdDE7IGxpc3Q7IGxpc3QgPSBsaXN0LT5nZXROZXh0KCkp
IHsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChsYWJlbFZlY3RvcltpKytdLmdldCgpKTsK
LSAgICAgICAgbGlzdC0+Z2V0Q2xhdXNlKCktPmVtaXRCeXRlY29kZShnZW5lcmF0b3IsIGRzdCk7
CisgICAgICAgIGxpc3QtPmdldENsYXVzZSgpLT5lbWl0Qnl0ZWNvZGUoZ2VuZXJhdG9yLCBkc3Qs
IHRhaWxDYWxsTW9kZSk7CiAgICAgfQogCiAgICAgaWYgKG1fZGVmYXVsdENsYXVzZSkgewogICAg
ICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGRlZmF1bHRMYWJlbC5nZXQoKSk7Ci0gICAgICAgIG1f
ZGVmYXVsdENsYXVzZS0+ZW1pdEJ5dGVjb2RlKGdlbmVyYXRvciwgZHN0KTsKKyAgICAgICAgbV9k
ZWZhdWx0Q2xhdXNlLT5lbWl0Qnl0ZWNvZGUoZ2VuZXJhdG9yLCBkc3QsIHRhaWxDYWxsTW9kZSk7
CiAgICAgfQogCiAgICAgZm9yIChDbGF1c2VMaXN0Tm9kZSogbGlzdCA9IG1fbGlzdDI7IGxpc3Q7
IGxpc3QgPSBsaXN0LT5nZXROZXh0KCkpIHsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChs
YWJlbFZlY3RvcltpKytdLmdldCgpKTsKLSAgICAgICAgbGlzdC0+Z2V0Q2xhdXNlKCktPmVtaXRC
eXRlY29kZShnZW5lcmF0b3IsIGRzdCk7CisgICAgICAgIGxpc3QtPmdldENsYXVzZSgpLT5lbWl0
Qnl0ZWNvZGUoZ2VuZXJhdG9yLCBkc3QsIHRhaWxDYWxsTW9kZSk7CiAgICAgfQogICAgIGlmICgh
bV9kZWZhdWx0Q2xhdXNlKQogICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGRlZmF1bHRMYWJl
bC5nZXQoKSk7CkBAIC0yODExLDE0ICsyODYxLDE0IEBAIHZvaWQgQ2FzZUJsb2NrTm9kZTo6ZW1p
dEJ5dGVjb2RlRm9yQmxvY2soQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTd2l0Y2hOb2RlIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLXZvaWQgU3dpdGNoTm9kZTo6ZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3ZvaWQg
U3dpdGNoTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlIHRhaWxDYWxsTW9kZSkKIHsKICAgICBnZW5lcmF0
b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIHN0YXJ0
T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKICAgICAKICAgICBMYWJlbFNjb3BlUHRyIHNj
b3BlID0gZ2VuZXJhdG9yLm5ld0xhYmVsU2NvcGUoTGFiZWxTY29wZTo6U3dpdGNoKTsKIAogICAg
IFJlZlB0cjxSZWdpc3RlcklEPiByMCA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2V4cHIpOwotICAg
IG1fYmxvY2stPmVtaXRCeXRlY29kZUZvckJsb2NrKGdlbmVyYXRvciwgcjAuZ2V0KCksIGRzdCk7
CisgICAgbV9ibG9jay0+ZW1pdEJ5dGVjb2RlRm9yQmxvY2soZ2VuZXJhdG9yLCByMC5nZXQoKSwg
ZHN0LCB0YWlsQ2FsbE1vZGUpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChzY29wZS0+YnJl
YWtUYXJnZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlQ29udHJvbEZsb3coZW5kT2Zm
c2V0KCkpOwpAQCAtMjgyNiw3ICsyODc2LDcgQEAgdm9pZCBTd2l0Y2hOb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogCiAvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTGFiZWxOb2RlIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogCi12b2lkIExhYmVsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3ZvaWQgTGFiZWxOb2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCog
ZHN0LCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4
ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZz
ZXQoKSk7CiAKQEAgLTI4NDAsNyArMjg5MCw3IEBAIHZvaWQgTGFiZWxOb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogCiAvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gVGhyb3dOb2RlIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogCi12b2lkIFRocm93Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3ZvaWQgVGhyb3dOb2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCog
ZHN0LCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4
ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZz
ZXQoKSk7CiAKQEAgLTI4NTUsNyArMjkwNSw3IEBAIHZvaWQgVGhyb3dOb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogCiAvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gVHJ5Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogCi12b2lkIFRyeU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit2b2lkIFRyeU5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3Qs
IFRhaWxDYWxsTW9kZSB0YWlsQ2FsbE1vZGUpCiB7CiAgICAgLy8gTk9URTogVGhlIGNhdGNoIGFu
ZCBmaW5hbGx5IGJsb2NrcyBtdXN0IGJlIGxhYmVsZWQgZXhwbGljaXRseSwgc28gdGhlCiAgICAg
Ly8gb3B0aW1pemVyIGtub3dzIHRoZXkgbWF5IGJlIGp1bXBlZCB0byBmcm9tIGFueXdoZXJlLgpA
QCAtMjg5Myw3ICsyOTQzLDcgQEAgdm9pZCBUcnlOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogCiAgICAgICAgIGdlbmVyYXRv
ci5lbWl0UHVzaENhdGNoU2NvcGUoZ2VuZXJhdG9yLnNjb3BlUmVnaXN0ZXIoKSwgbV90aHJvd25W
YWx1ZUlkZW50LCB0aHJvd25WYWx1ZVJlZ2lzdGVyLmdldCgpLCBEb250RGVsZXRlKTsKICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlQ29udHJvbEZsb3cobV90cnlCbG9jay0+ZW5kT2Zmc2V0
KCkgKyAxKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9jYXRjaEJsb2NrKTsK
KyAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9jYXRjaEJsb2NrLCBtX2ZpbmFsbHlC
bG9jayA/IE5vVGFpbENhbGxzIDogdGFpbENhbGxNb2RlKTsKICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRQb3BTY29wZShnZW5lcmF0b3Iuc2NvcGVSZWdpc3RlcigpKTsKICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRMYWJlbChjYXRjaEVuZExhYmVsLmdldCgpKTsKICAgICB9CkBAIC0yOTA5LDcgKzI5NTks
NyBAQCB2b2lkIFRyeU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBkc3QpCiAKICAgICAgICAgLy8gTm9ybWFsIHBhdGg6IHJ1biB0aGUg
ZmluYWxseSBjb2RlLCBhbmQganVtcCB0byB0aGUgZW5kLgogICAgICAgICBnZW5lcmF0b3IuZW1p
dFByb2ZpbGVDb250cm9sRmxvdyhmaW5hbGx5U3RhcnRPZmZzZXQpOwotICAgICAgICBnZW5lcmF0
b3IuZW1pdE5vZGUoZHN0LCBtX2ZpbmFsbHlCbG9jayk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0
Tm9kZShkc3QsIG1fZmluYWxseUJsb2NrLCB0YWlsQ2FsbE1vZGUpOwogICAgICAgICBnZW5lcmF0
b3IuZW1pdFByb2ZpbGVDb250cm9sRmxvdyhtX2ZpbmFsbHlCbG9jay0+ZW5kT2Zmc2V0KCkgKyAx
KTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGZpbmFsbHlFbmRMYWJlbC5nZXQoKSk7CiAK
QEAgLTI5MTgsNyArMjk2OCw3IEBAIHZvaWQgVHJ5Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKICAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHRocm93blZhbHVlUmVnaXN0ZXIgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7
CiAgICAgICAgIGdlbmVyYXRvci5wb3BUcnlBbmRFbWl0Q2F0Y2godHJ5RGF0YSwgZXhjZXB0aW9u
UmVnaXN0ZXIuZ2V0KCksIHRocm93blZhbHVlUmVnaXN0ZXIuZ2V0KCksIHByZUZpbmFsbHlMYWJl
bC5nZXQoKSwgSGFuZGxlclR5cGU6OkZpbmFsbHkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdFBy
b2ZpbGVDb250cm9sRmxvdyhmaW5hbGx5U3RhcnRPZmZzZXQpOwotICAgICAgICBnZW5lcmF0b3Iu
ZW1pdE5vZGUoZHN0LCBtX2ZpbmFsbHlCbG9jayk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9k
ZShkc3QsIG1fZmluYWxseUJsb2NrLCB0YWlsQ2FsbE1vZGUpOwogICAgICAgICBnZW5lcmF0b3Iu
ZW1pdFRocm93KGV4Y2VwdGlvblJlZ2lzdGVyLmdldCgpKTsKIAogICAgICAgICBnZW5lcmF0b3Iu
ZW1pdExhYmVsKGZpbmFsbHlFbmRMYWJlbC5nZXQoKSk7CkBAIC0yOTM0LDEyICsyOTg0LDEyIEBA
IGlubGluZSB2b2lkIFNjb3BlTm9kZTo6ZW1pdFN0YXRlbWVudHNCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpCiB7CiAgICAgaWYgKCFtX3N0YXRlbWVudHMpCiAgICAg
ICAgIHJldHVybjsKLSAgICBtX3N0YXRlbWVudHMtPmVtaXRCeXRlY29kZShnZW5lcmF0b3IsIGRz
dCk7CisgICAgbV9zdGF0ZW1lbnRzLT5lbWl0Qnl0ZWNvZGUoZ2VuZXJhdG9yLCBkc3QsIGlzU3Ry
aWN0TW9kZSgpID8gQ2FuSGF2ZVRhaWxDYWxscyA6IE5vVGFpbENhbGxzKTsKIH0KIAogLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByb2dyYW1Ob2RlIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAKLXZvaWQgUHJvZ3JhbU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKK3ZvaWQgUHJvZ3JhbU5vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiwgVGFpbENh
bGxNb2RlKQogewogICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlUHJvZ3Jh
bSwgc3RhcnRMaW5lKCksIHN0YXJ0U3RhcnRPZmZzZXQoKSwgc3RhcnRMaW5lU3RhcnRPZmZzZXQo
KSk7CiAKQEAgLTI5NTQsNyArMzAwNCw3IEBAIHZvaWQgUHJvZ3JhbU5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKIAogLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEV2YWxOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAKLXZvaWQgRXZhbE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKikKK3ZvaWQgRXZhbE5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiwgVGFpbENhbGxNb2RlKQogewog
ICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlUHJvZ3JhbSwgc3RhcnRMaW5l
KCksIHN0YXJ0U3RhcnRPZmZzZXQoKSwgc3RhcnRMaW5lU3RhcnRPZmZzZXQoKSk7CiAKQEAgLTI5
NjgsMTEgKzMwMTgsMTEgQEAgdm9pZCBFdmFsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0gRnVuY3Rpb25Cb2R5Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogCi12b2lkIEZ1bmN0aW9uQm9keU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqKQordm9pZCBGdW5jdGlvbkJvZHlOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiwgVGFpbENhbGxNb2RlKQogewogfQogCi12b2lk
IEZ1bmN0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqKQordm9pZCBGdW5jdGlvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiwgVGFpbENhbGxNb2RlKQogewogICAgIGlm
IChnZW5lcmF0b3Iudm0oKS0+dHlwZVByb2ZpbGVyKCkpIHsKICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtX3BhcmFtZXRlcnMtPnNpemUoKTsgaSsrKSB7CkBAIC0zMDE0LDEzICszMDY0
LDEzIEBAIHZvaWQgRnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSBGdW5jRGVjbE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLXZv
aWQgRnVuY0RlY2xOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3Rl
cklEKikKK3ZvaWQgRnVuY0RlY2xOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKiwgVGFpbENhbGxNb2RlKQogewogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gRnVuY0V4cHJOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogCi1SZWdpc3RlcklEKiBGdW5jRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCitSZWdpc3RlcklEKiBGdW5jRXhw
ck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklEKiBkc3QsIFRhaWxDYWxsTW9kZSkKIHsKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXROZXdG
dW5jdGlvbkV4cHJlc3Npb24oZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgdGhpcyk7
CiB9CkBAIC0zMDI4LDE0ICszMDc4LDE0IEBAIFJlZ2lzdGVySUQqIEZ1bmNFeHByTm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqCiAjaWYg
RU5BQkxFKEVTNl9DTEFTU19TWU5UQVgpCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0gQ2xhc3NEZWNsTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotdm9p
ZCBDbGFzc0RlY2xOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogZHN0KQordm9pZCBDbGFzc0RlY2xOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUp
CiB7CiAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9jbGFzc0RlY2xhcmF0aW9uKTsKIH0K
IAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENsYXNzRXhwck5vZGUgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlZ2lzdGVySUQqIENsYXNzRXhwck5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBk
c3QpCitSZWdpc3RlcklEKiBDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHN1cGVyY2xhc3M7CiAgICAgaWYgKG1fY2xhc3NIZXJpdGFnZSkg
ewpAQCAtMzEwNiw3ICszMTU2LDcgQEAgUmVnaXN0ZXJJRCogQ2xhc3NFeHByTm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQKICNlbmRpZgog
ICAgIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIERlc3RydWN0dXJpbmdBc3Np
Z25tZW50Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLQotUmVnaXN0ZXJJRCogRGVzdHJ1Y3R1cmluZ0Fz
c2lnbm1lbnROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCog
ZHN0LCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAgaWYgKFJlZ2lzdGVySUQqIHJlc3VsdCA9IG1fYmlu
ZGluZ3MtPmVtaXREaXJlY3RCaW5kaW5nKGdlbmVyYXRvciwgZHN0LCBtX2luaXRpYWxpemVyKSkK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTMzNTEsNyArMzQwMSw3IEBAIHZvaWQgQmluZGlu
Z05vZGU6OmNvbGxlY3RCb3VuZElkZW50aWZpZXJzKFZlY3RvcjxJZGVudGlmaWVyPiYgaWRlbnRp
ZmllcnMpIGNvbnN0CiAgICAgaWRlbnRpZmllcnMuYXBwZW5kKG1fYm91bmRQcm9wZXJ0eSk7CiB9
CiAgICAgCi1SZWdpc3RlcklEKiBTcHJlYWRFeHByZXNzaW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopCitSZWdpc3RlcklEKiBTcHJlYWRFeHByZXNz
aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCosIFRh
aWxDYWxsTW9kZSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJl
dHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4IGYyOWE1MTAuLjdm
NDg0ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAgLTc2LDYgKzc2LDEx
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH07CiAgICAgaW5saW5lIEZhbGxUaHJvdWdoTW9kZSBp
bnZlcnQoRmFsbFRocm91Z2hNb2RlIGZhbGxUaHJvdWdoTW9kZSkgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8RmFsbFRocm91Z2hNb2RlPighZmFsbFRocm91Z2hNb2RlKTsgfQogCisgICAgZW51bSBUYWls
Q2FsbE1vZGUgeworICAgICAgICBDYW5IYXZlVGFpbENhbGxzLAorICAgICAgICBOb1RhaWxDYWxs
cywKKyAgICB9OworCiAgICAgdHlwZWRlZiBIYXNoU2V0PFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1w
bD4sIElkZW50aWZpZXJSZXBIYXNoPiBJZGVudGlmaWVyU2V0OwogCiAgICAgbmFtZXNwYWNlIERl
Y2xhcmF0aW9uU3RhY2tzIHsKQEAgLTE0NCw3ICsxNDksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgRXhwcmVzc2lvbk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgUmVzdWx0VHlwZSA9
IFJlc3VsdFR5cGU6OnVua25vd25UeXBlKCkpOwogCiAgICAgcHVibGljOgotICAgICAgICB2aXJ0
dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqIGRlc3RpbmF0aW9uID0gMCkgPSAwOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIGRlc3RpbmF0aW9uID0g
MCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpID0gMDsKIAogICAgICAgICB2aXJ0dWFsIGJv
b2wgaXNOdW1iZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJv
b2wgaXNTdHJpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMTgxLDcgKzE4Niw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTdGF0ZW1lbnROb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYpOwogCiAgICAgcHVibGljOgotICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogZGVzdGluYXRpb24gPSAwKSA9IDA7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiBkZXN0aW5hdGlvbiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSA9IDA7
CiAKICAgICAgICAgdm9pZCBzZXRMb2ModW5zaWduZWQgZmlyc3RMaW5lLCB1bnNpZ25lZCBsYXN0
TGluZSwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgbGluZVN0YXJ0T2Zmc2V0KTsKICAgICAgICAgdW5z
aWduZWQgbGFzdExpbmUoKSBjb25zdCB7IHJldHVybiBtX2xhc3RMaW5lOyB9CkBAIC0yMDksNyAr
MjE0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0NvbnN0YW50
KCkgY29uc3QgIG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgdmlydHVhbCBKU1Zh
bHVlIGpzVmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImKSBjb25zdCA9IDA7CiAgICAgcHJpdmF0ZToK
LSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVy
SUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFp
bENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
ZW1pdEJ5dGVjb2RlSW5Db25kaXRpb25Db250ZXh0KEJ5dGVjb2RlR2VuZXJhdG9yJiwgTGFiZWwq
IHRydWVUYXJnZXQsIExhYmVsKiBmYWxzZVRhcmdldCwgRmFsbFRocm91Z2hNb2RlKSBvdmVycmlk
ZTsKICAgICB9OwogCkBAIC0yMzksNyArMjQ0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IE51bWJlck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgZG91YmxlIHZhbHVlKTsKICAgICAg
ICAgZG91YmxlIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQogICAgICAgICB2aXJ0
dWFsIGJvb2wgaXNJbnRlZ2VyTm9kZSgpIGNvbnN0ID0gMDsKLSAgICAgICAgdmlydHVhbCBSZWdp
c3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAp
IG92ZXJyaWRlIGZpbmFsOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9U
YWlsQ2FsbHMpIG92ZXJyaWRlIGZpbmFsOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVh
bCBib29sIGlzTnVtYmVyKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQpA
QCAtNDQ5LDcgKzQ1NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBjb25zdCBJZGVudGlm
aWVyJiByYXcoKSB7IHJldHVybiBtX3JhdzsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmly
dHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3Rl
cklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0g
Tm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1fY29v
a2VkOwogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX3JhdzsKQEAgLTQ3Nyw3ICs0ODIsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVGVtcGxhdGVFeHByZXNzaW9uTGlzdE5vZGUqIHRl
bXBsYXRlRXhwcmVzc2lvbnMoKSBjb25zdCB7IHJldHVybiBtX3RlbXBsYXRlRXhwcmVzc2lvbnM7
IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAg
ICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKIAog
ICAgICAgICBUZW1wbGF0ZVN0cmluZ0xpc3ROb2RlKiBtX3RlbXBsYXRlU3RyaW5nczsKICAgICAg
ICAgVGVtcGxhdGVFeHByZXNzaW9uTGlzdE5vZGUqIG1fdGVtcGxhdGVFeHByZXNzaW9uczsKQEAg
LTQ5MCw3ICs0OTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVGVtcGxhdGVMaXRlcmFs
Tm9kZSogdGVtcGxhdGVMaXRlcmFsKCkgY29uc3QgeyByZXR1cm4gbV90ZW1wbGF0ZUxpdGVyYWw7
IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAg
ICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKIAog
ICAgICAgICBFeHByZXNzaW9uTm9kZSogbV90YWc7CiAgICAgICAgIFRlbXBsYXRlTGl0ZXJhbE5v
ZGUqIG1fdGVtcGxhdGVMaXRlcmFsOwpAQCAtNTAyLDcgKzUwNyw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBSZWdFeHBOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50
aWZpZXImIHBhdHRlcm4sIGNvbnN0IElkZW50aWZpZXImIGZsYWdzKTsKIAogICAgIHByaXZhdGU6
Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3Rl
cklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRh
aWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKIAogICAgICAgICBjb25zdCBJZGVu
dGlmaWVyJiBtX3BhdHRlcm47CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1fZmxhZ3M7CkBA
IC01MTMsNyArNTE4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFRoaXNOb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIFRoaXNURFpNb2RlKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAg
IHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9k
ZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKIAogICAgICAgICBib29sIG1fc2hvdWxkQWx3YXlz
RW1pdFREWkNoZWNrOwogICAgIH07CkBAIC01MjQsNyArNTI5LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTdXBlck5vZGUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCog
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlk
ZTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVy
cmlkZTsKICAgICB9OwogCiAgICAgY2xhc3MgUmVzb2x2ZU5vZGUgOiBwdWJsaWMgRXhwcmVzc2lv
bk5vZGUgewpAQCAtNTM0LDcgKzUzOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBjb25z
dCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudDsgfQogCiAg
ICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0
dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAg
IHZpcnR1YWwgYm9vbCBpc1B1cmUoQnl0ZWNvZGVHZW5lcmF0b3ImKSBjb25zdCBvdmVycmlkZTsK
ICAgICAgICAgdmlydHVhbCBib29sIGlzTG9jYXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CkBAIC01NjksNyArNTc0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAg
RWxlbWVudE5vZGUqIGVsZW1lbnRzKCkgY29uc3QgeyBBU1NFUlQoaXNTaW1wbGVBcnJheSgpKTsg
cmV0dXJuIG1fZWxlbWVudDsgfQogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0
ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBv
dmVycmlkZTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxz
KSBvdmVycmlkZTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTaW1wbGVBcnJheSgpIGNvbnN0
IG92ZXJyaWRlOwogCkBAIC02MDksNyArNjE0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IFByb3BlcnR5TGlzdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgUHJvcGVydHlOb2RlKiwg
UHJvcGVydHlMaXN0Tm9kZSopOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdp
c3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAp
IG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2Fs
bHMpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGVtaXRQdXRDb25zdGFudFByb3BlcnR5KEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCosIFByb3BlcnR5Tm9kZSYpOwogCiAgICAgICAgIFBy
b3BlcnR5Tm9kZSogbV9ub2RlOwpAQCAtNjIyLDcgKzYyNyw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBPYmplY3RMaXRlcmFsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBQcm9wZXJ0
eUxpc3ROb2RlKik7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQq
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJp
ZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3Zl
cnJpZGU7CiAKICAgICAgICAgUHJvcGVydHlMaXN0Tm9kZSogbV9saXN0OwogICAgIH07CkBAIC02
MzcsNyArNjQyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgc3Vic2NyaXB0SGFz
QXNzaWdubWVudHMoKSBjb25zdCB7IHJldHVybiBtX3N1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzOyB9
CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAg
IHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAg
ICAgICAgdmlydHVhbCBib29sIGlzTG9jYXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0JyYWNrZXRBY2Nlc3Nvck5vZGUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CkBAIC02NTUsNyArNjYwLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIoKSBjb25zdCB7IHJl
dHVybiBtX2lkZW50OyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVy
SUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3Zl
cnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykg
b3ZlcnJpZGU7CiAKICAgICAgICAgdmlydHVhbCBib29sIGlzTG9jYXRpb24oKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0RvdEFjY2Vzc29y
Tm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KQEAgLTY3MSw3ICs2NzYsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIGV4cHJlc3Npb24oKSBj
b25zdCB7IHJldHVybiBtX2V4cHJlc3Npb247IH0KICAgICAgICAgCiAgICAgcHJpdmF0ZToKLSAg
ICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQq
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENh
bGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogICAgICAgICAKICAgICAgICAgdmlydHVh
bCBib29sIGlzU3ByZWFkRXhwcmVzc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcmVzc2lvbjsKQEAgLTY4Niw3ICs2OTEs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjsKIAog
ICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmly
dHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3Rl
cklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKICAgICB9Owog
CiAgICAgY2xhc3MgQXJndW1lbnRzTm9kZSA6IHB1YmxpYyBQYXJzZXJBcmVuYUZyZWVhYmxlIHsK
QEAgLTcwMyw3ICs3MDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTmV3RXhwck5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqLCBBcmd1bWVudHNOb2RlKik7
CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAg
IHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAg
ICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjsKICAgICAgICAgQXJndW1lbnRzTm9kZSogbV9h
cmdzOwpAQCAtNzE0LDcgKzcxOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBFdmFsRnVu
Y3Rpb25DYWxsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBBcmd1bWVudHNOb2RlKiwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFy
dCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKIAogICAgIHByaXZhdGU6Ci0gICAg
ICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwg
UmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxs
TW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKIAogICAgICAgICBBcmd1bWVudHNOb2RlKiBt
X2FyZ3M7CiAgICAgfTsKQEAgLTcyNCw3ICs3MjksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgRnVuY3Rpb25DYWxsVmFsdWVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Np
b25Ob2RlKiwgQXJndW1lbnRzTm9kZSosIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZv
dEVuZCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7Cisg
ICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7
CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjsKICAgICAgICAgQXJndW1lbnRzTm9k
ZSogbV9hcmdzOwpAQCAtNzM1LDcgKzc0MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBG
dW5jdGlvbkNhbGxSZXNvbHZlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVu
dGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZv
dEVuZCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7Cisg
ICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7
CiAKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9pZGVudDsKICAgICAgICAgQXJndW1lbnRz
Tm9kZSogbV9hcmdzOwpAQCAtNzQ2LDcgKzc1MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNz
aW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgYm9vbCBzdWJzY3JpcHRI
YXNBc3NpZ25tZW50cywgQXJndW1lbnRzTm9kZSosIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZv
dCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBkaXZvdEVuZCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQq
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJp
ZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3Zl
cnJpZGU7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fYmFzZTsKICAgICAgICAgRXhwcmVz
c2lvbk5vZGUqIG1fc3Vic2NyaXB0OwpAQCAtNzU5LDcgKzc2NCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4
cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3Rh
cnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICBwcml2YXRlOgotICAg
ICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCog
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2Fs
bE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAg
IEV4cHJlc3Npb25Ob2RlKiBtX2Jhc2U7CkBAIC03ODAsNyArNzg1LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAjdW5kZWYgSlNDX0RFQ0xBUkVfQllURUNPREVfSU5UUklOU0lDX0ZVTkNUSU9OUwogCiAg
ICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0
dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAg
IEVtaXR0ZXJUeXBlIG1fZW1pdHRlcjsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9pZGVu
dDsKQEAgLTc5Miw3ICs3OTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgQ2FsbEZ1bmN0
aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJh
c2UsIGNvbnN0IElkZW50aWZpZXImLCBBcmd1bWVudHNOb2RlKiwgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90RW5kKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVn
aXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAw
KSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENh
bGxzKSBvdmVycmlkZTsKICAgICB9OwogICAgIAogICAgIGNsYXNzIEFwcGx5RnVuY3Rpb25DYWxs
RG90Tm9kZSA6IHB1YmxpYyBGdW5jdGlvbkNhbGxEb3ROb2RlIHsKQEAgLTgwMCw3ICs4MDUsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVy
JiwgQXJndW1lbnRzTm9kZSosIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7
CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAg
IHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAgICAg
fTsKIAogICAgIGNsYXNzIERlbGV0ZVJlc29sdmVOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2Rl
LCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewpAQCAtODA4LDcgKzgxMyw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBEZWxldGVSZXNvbHZlTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRp
dm90RW5kKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsK
KyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlk
ZTsKIAogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX2lkZW50OwogICAgIH07CkBAIC04MTgs
NyArODIzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIERlbGV0ZUJyYWNrZXROb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9k
ZSogc3Vic2NyaXB0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAg
ICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0
dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAg
IEV4cHJlc3Npb25Ob2RlKiBtX2Jhc2U7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX3N1YnNj
cmlwdDsKQEAgLTgyOSw3ICs4MzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRGVsZXRl
RG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29u
c3QgSWRlbnRpZmllciYsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAK
ICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZp
cnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAg
ICAgRXhwcmVzc2lvbk5vZGUqIG1fYmFzZTsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9p
ZGVudDsKQEAgLTg0MCw3ICs4NDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRGVsZXRl
VmFsdWVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKik7CiAKICAg
ICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1
YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAg
RXhwcmVzc2lvbk5vZGUqIG1fZXhwcjsKICAgICB9OwpAQCAtODUwLDcgKzg1NSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBWb2lkTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHBy
ZXNzaW9uTm9kZSopOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklE
KiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJy
aWRlOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92
ZXJyaWRlOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2V4cHI7CiAgICAgfTsKQEAgLTg2
Miw3ICs4NjcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYg
aWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnQ7IH0KIAogICAgIHByaXZhdGU6Ci0g
ICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklE
KiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxD
YWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKIAogICAgICAgICBjb25zdCBJZGVudGlm
aWVyJiBtX2lkZW50OwogICAgIH07CkBAIC04NzIsNyArODc3LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIFR5cGVPZlZhbHVlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNz
aW9uTm9kZSopOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRl
OworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJy
aWRlOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2V4cHI7CiAgICAgfTsKQEAgLTg4Miw3
ICs4ODcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUHJlZml4Tm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSosIE9wZXJhdG9yLCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICB2aXJ0dWFs
IFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1Rh
aWxDYWxscykgb3ZlcnJpZGU7CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdFJlc29s
dmUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwogICAgICAgICB2aXJ0dWFs
IFJlZ2lzdGVySUQqIGVtaXRCcmFja2V0KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKTsKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0RG90KEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTg5Niw3ICs5MDEsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgUG9zdGZpeE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lv
bk5vZGUqLCBPcGVyYXRvciwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsK
IAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAg
dmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKICAgICAg
ICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0UmVzb2x2ZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1p
dEJyYWNrZXQoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwog
ICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXREb3QoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwpAQCAtOTExLDcgKzkxNiw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBjb25zdCBFeHByZXNzaW9uTm9kZSogZXhwcigpIGNvbnN0IHsgcmV0dXJu
IG1fZXhwcjsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRl
OworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJy
aWRlOwogCiAgICAgICAgIE9wY29kZUlEIG9wY29kZUlEKCkgY29uc3QgeyByZXR1cm4gbV9vcGNv
ZGVJRDsgfQogCkBAIC05NDEsNyArOTQ2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGNv
bnN0IEV4cHJlc3Npb25Ob2RlKiBleHByKCkgY29uc3QgeyByZXR1cm4gbV9leHByOyB9CiAKICAg
ICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1
YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAg
RXhwcmVzc2lvbk5vZGUqIG1fZXhwcjsKICAgICB9OwpAQCAtOTY2LDcgKzk3MSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdm9pZCB0cnlGb2xkVG9CcmFuY2go
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBUcmlTdGF0ZSYgYnJhbmNoQ29uZGl0aW9uLCBFeHByZXNzaW9u
Tm9kZSomIGJyYW5jaEV4cHJlc3Npb24pOwotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7
CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJp
ZGU7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIE9wY29kZUlEIG9wY29kZUlEKCkgY29uc3Qg
eyByZXR1cm4gbV9vcGNvZGVJRDsgfQpAQCAtMTA1MCw3ICsxMDU1LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIFRocm93YWJsZUJpbmFyeU9wTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQs
IGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0
dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBO
b1RhaWxDYWxscykgb3ZlcnJpZGU7CiAgICAgfTsKICAgICAKICAgICBjbGFzcyBJbnN0YW5jZU9m
Tm9kZSA6IHB1YmxpYyBUaHJvd2FibGVCaW5hcnlPcE5vZGUgewpAQCAtMTA1OCw3ICsxMDYzLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEluc3RhbmNlT2ZOb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBi
b29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVh
bCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9U
YWlsQ2FsbHMpIG92ZXJyaWRlOwogICAgIH07CiAKICAgICBjbGFzcyBJbk5vZGUgOiBwdWJsaWMg
VGhyb3dhYmxlQmluYXJ5T3BOb2RlIHsKQEAgLTEwNzEsNyArMTA3Niw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBFcXVhbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25t
ZW50cyk7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7Cisg
ICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7
CiAgICAgfTsKIAogICAgIGNsYXNzIE5vdEVxdWFsTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUg
ewpAQCAtMTA4NCw3ICsxMDg5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFN0cmljdEVx
dWFsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4
cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIAogICAgIHBy
aXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCBS
ZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKICAgICB9OwogCiAgICAg
Y2xhc3MgTm90U3RyaWN0RXF1YWxOb2RlIDogcHVibGljIEJpbmFyeU9wTm9kZSB7CkBAIC0xMTEz
LDcgKzExMTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTG9naWNhbE9wTm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2Rl
KiBleHByMiwgTG9naWNhbE9wZXJhdG9yKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1
YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5v
VGFpbENhbGxzKSBvdmVycmlkZTsKICAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZUlu
Q29uZGl0aW9uQ29udGV4dChCeXRlY29kZUdlbmVyYXRvciYsIExhYmVsKiB0cnVlVGFyZ2V0LCBM
YWJlbCogZmFsc2VUYXJnZXQsIEZhbGxUaHJvdWdoTW9kZSkgb3ZlcnJpZGU7CiAKICAgICAgICAg
RXhwcmVzc2lvbk5vZGUqIG1fZXhwcjE7CkBAIC0xMTI3LDcgKzExMzIsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgQ29uZGl0aW9uYWxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4
cHJlc3Npb25Ob2RlKiBsb2dpY2FsLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25O
b2RlKiBleHByMik7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQq
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJp
ZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3Zl
cnJpZGU7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fbG9naWNhbDsKICAgICAgICAgRXhw
cmVzc2lvbk5vZGUqIG1fZXhwcjE7CkBAIC0xMTM5LDcgKzExNDQsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgUmVhZE1vZGlmeVJlc29sdmVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IGNvbnN0IElkZW50aWZpZXImLCBPcGVyYXRvciwgRXhwcmVzc2lvbk5vZGUqICByaWdodCwgYm9v
bCByaWdodEhhc0Fzc2lnbm1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RF
bmQpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAg
ICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwog
CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7CiAgICAgICAgIEV4cHJlc3Npb25O
b2RlKiBtX3JpZ2h0OwpAQCAtMTE1Miw3ICsxMTU3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIEFzc2lnblJlc29sdmVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50
aWZpZXImLCBFeHByZXNzaW9uTm9kZSogcmlnaHQpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
dmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2Rl
ID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1f
aWRlbnQ7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX3JpZ2h0OwpAQCAtMTE2Myw3ICsxMTY4
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlYWRNb2RpZnlCcmFja2V0Tm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUq
IHN1YnNjcmlwdCwgT3BlcmF0b3IsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCBzdWJzY3Jp
cHRIYXNBc3NpZ25tZW50cywgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVh
bCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9U
YWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Jhc2U7CiAg
ICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX3N1YnNjcmlwdDsKQEAgLTExNzgsNyArMTE4Myw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBBc3NpZ25CcmFja2V0Tm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlw
dCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHN1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzLCBi
b29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZv
dEVuZCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7Cisg
ICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7
CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fYmFzZTsKICAgICAgICAgRXhwcmVzc2lvbk5v
ZGUqIG1fc3Vic2NyaXB0OwpAQCAtMTE5Miw3ICsxMTk3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIEFzc2lnbkRvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5v
ZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5k
KTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAg
ICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKIAog
ICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9iYXNlOwogICAgICAgICBjb25zdCBJZGVudGlmaWVy
JiBtX2lkZW50OwpAQCAtMTIwNSw3ICsxMjEwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IFJlYWRNb2RpZnlEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2Rl
KiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgT3BlcmF0b3IsIEV4cHJlc3Npb25Ob2RlKiByaWdo
dCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3Qs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYg
ZGl2b3RFbmQpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRl
OworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJy
aWRlOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Jhc2U7CiAgICAgICAgIGNvbnN0IElk
ZW50aWZpZXImIG1faWRlbnQ7CkBAIC0xMjE5LDcgKzEyMjQsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgQXNzaWduRXJyb3JOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2
aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUg
PSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAgICAgfTsKICAgICAKICAgICBjbGFzcyBDb21tYU5v
ZGUgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewpAQCAtMTIzMSw3ICsxMjM2LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIGJvb2wgaXND
b21tYU5vZGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgICAgIHZpcnR1
YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5v
VGFpbENhbGxzKSBvdmVycmlkZTsKIAogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9leHByOwog
ICAgICAgICBDb21tYU5vZGUqIG1fbmV4dDsKQEAgLTEyNDUsNyArMTI1MCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCgpIHsgcmV0dXJuIG1faWRl
bnQ7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAg
ICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsK
ICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Q29kZVNpbmdsZShCeXRlY29kZUdlbmVy
YXRvciYpOwogCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7CkBAIC0xMjYyLDcg
KzEyNjcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgQ29uc3RTdGF0ZW1lbnROb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIENvbnN0RGVjbE5vZGUqIG5leHQpOwogCiAgICAgcHJpdmF0
ZToKLSAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9
IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKIAogICAgICAgICBDb25zdERlY2xOb2RlKiBtX25leHQ7
CiAgICAgfTsKQEAgLTEyNzYsNyArMTI4MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBT
dGF0ZW1lbnROb2RlKiBzaW5nbGVTdGF0ZW1lbnQoKSBjb25zdDsKICAgICAgICAgU3RhdGVtZW50
Tm9kZSogbGFzdFN0YXRlbWVudCgpIGNvbnN0OwogCi0gICAgICAgIHZvaWQgZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogZGVzdGluYXRpb24pOworICAgICAgICB2
b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIGRlc3RpbmF0
aW9uLCBUYWlsQ2FsbE1vZGUpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgU3RhdGVtZW50Tm9k
ZSogbV9oZWFkOwpAQCAtMTI5MSw3ICsxMjk2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IFN0YXRlbWVudE5vZGUqIGxhc3RTdGF0ZW1lbnQoKSBjb25zdDsKIAogICAgIHByaXZhdGU6Ci0g
ICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1Rh
aWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgdmlydHVhbCBib29sIGlzQmxvY2soKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKQEAgLTEzMDMsNyArMTMwOCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBFbXB0eVN0YXRlbWVudE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJik7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAg
dmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAgIHZp
cnR1YWwgYm9vbCBpc0VtcHR5U3RhdGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQogICAgIH07CkBAIC0xMzEzLDcgKzEzMTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgRGVidWdnZXJTdGF0ZW1lbnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpOwogICAgICAg
ICAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVh
bCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwg
VGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogICAgIH07CiAKICAgICBjbGFz
cyBFeHByU3RhdGVtZW50Tm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKQEAgLTEzMjUsNyAr
MTMzMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwg
Ym9vbCBpc0V4cHJTdGF0ZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAK
LSAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5v
VGFpbENhbGxzKSBvdmVycmlkZTsKIAogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9leHByOwog
ICAgIH07CkBAIC0xMzM0LDcgKzEzMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6
CiAgICAgICAgIFZhclN0YXRlbWVudE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVz
c2lvbk5vZGUqKTsKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAg
ICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAg
IEV4cHJlc3Npb25Ob2RlKiBtX2V4cHI7CiAgICAgfTsKQEAgLTEzNDQsNyArMTM0OSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBFbXB0eVZhckV4cHJlc3Npb24oY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmly
dHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3Rl
cklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0g
Tm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1faWRl
bnQ7CiAgICAgfTsKQEAgLTEzNTUsNyArMTM2MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBJZkVsc2VOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBjb25k
aXRpb24sIFN0YXRlbWVudE5vZGUqIGlmQmxvY2ssIFN0YXRlbWVudE5vZGUqIGVsc2VCbG9jayk7
CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVh
bCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwg
VGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogICAgICAgICBib29sIHRyeUZv
bGRCcmVha0FuZENvbnRpbnVlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgU3RhdGVtZW50Tm9kZSogaWZC
bG9jaywKICAgICAgICAgICAgIExhYmVsKiYgdHJ1ZVRhcmdldCwgRmFsbFRocm91Z2hNb2RlJik7
CiAKQEAgLTEzNjksNyArMTM3NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBEb1doaWxl
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBTdGF0ZW1lbnROb2RlKiwgRXhwcmVzc2lvbk5v
ZGUqKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2
aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgU3Rh
dGVtZW50Tm9kZSogbV9zdGF0ZW1lbnQ7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2V4cHI7
CkBAIC0xMzgwLDcgKzEzODUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgV2hpbGVOb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiwgU3RhdGVtZW50Tm9kZSop
OwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1
YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAs
IFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKIAogICAgICAgICBFeHByZXNz
aW9uTm9kZSogbV9leHByOwogICAgICAgICBTdGF0ZW1lbnROb2RlKiBtX3N0YXRlbWVudDsKQEAg
LTEzOTEsNyArMTM5Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBGb3JOb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIyLCBFeHByZXNzaW9uTm9kZSogZXhwcjMsIFN0YXRlbWVudE5vZGUqKTsKIAogICAgIHBy
aXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIHZvaWQgZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1v
ZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1f
ZXhwcjE7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2V4cHIyOwpAQCAtMTQyMCw3ICsxNDI1
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdExvb3BIZWFkZXIoQnl0ZWNv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBwcm9wZXJ0eU5hbWUpOwogICAgICAgICB2b2lkIGVt
aXRNdWx0aUxvb3BCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIGRzdCk7
CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9
IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKICAgICB9OwogICAgIAogICAgIGNsYXNzIEZvck9mTm9k
ZSA6IHB1YmxpYyBFbnVtZXJhdGlvbk5vZGUgewpAQCAtMTQyOCw3ICsxNDMzLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIEZvck9mTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHBy
ZXNzaW9uTm9kZSosIEV4cHJlc3Npb25Ob2RlKiwgU3RhdGVtZW50Tm9kZSopOwogICAgICAgICAK
ICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCB2
b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFp
bENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogICAgIH07CiAKICAgICBjbGFzcyBD
b250aW51ZU5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJl
c3Npb25EYXRhIHsKQEAgLTE0MzgsNyArMTQ0Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNDb250aW51ZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3Rl
cklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKIAogICAgICAg
ICBjb25zdCBJZGVudGlmaWVyJiBtX2lkZW50OwogICAgIH07CkBAIC0xNDUwLDcgKzE0NTUsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVh
bCBib29sIGlzQnJlYWsoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgICAg
IHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxs
cykgb3ZlcnJpZGU7CiAKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9pZGVudDsKICAgICB9
OwpAQCAtMTQ2Miw3ICsxNDY3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEV4cHJlc3Np
b25Ob2RlKiB2YWx1ZSgpIHsgcmV0dXJuIG1fdmFsdWU7IH0KIAogICAgIHByaXZhdGU6Ci0gICAg
ICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3Rl
cklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxD
YWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgdmlydHVhbCBib29sIGlzUmV0dXJuTm9kZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIApAQCAtMTQ3NCw3ICsxNDc5LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIFdpdGhOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4
cHJlc3Npb25Ob2RlKiwgU3RhdGVtZW50Tm9kZSosIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZv
dCwgdWludDMyX3QgZXhwcmVzc2lvbkxlbmd0aCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2
aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMp
IG92ZXJyaWRlOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2V4cHI7CiAgICAgICAgIFN0
YXRlbWVudE5vZGUqIG1fc3RhdGVtZW50OwpAQCAtMTQ4Nyw3ICsxNDkyLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIExhYmVsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJ
ZGVudGlmaWVyJiBuYW1lLCBTdGF0ZW1lbnROb2RlKik7CiAKICAgICBwcml2YXRlOgotICAgICAg
ICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2Fs
bHMpIG92ZXJyaWRlOwogCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1fbmFtZTsKICAgICAg
ICAgU3RhdGVtZW50Tm9kZSogbV9zdGF0ZW1lbnQ7CkBAIC0xNDk4LDcgKzE1MDMsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgVGhyb3dOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4
cHJlc3Npb25Ob2RlKik7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIHZvaWQgZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsK
KyAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAg
ICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2V4cHI7CiAgICAgfTsKQEAgLTE1MDgsNyArMTUxMyw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBUcnlOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIFN0YXRlbWVudE5vZGUqIHRyeUJsb2NrLCBjb25zdCBJZGVudGlmaWVyJiBleGNlcHRpb25J
ZGVudCwgU3RhdGVtZW50Tm9kZSogY2F0Y2hCbG9jaywgU3RhdGVtZW50Tm9kZSogZmluYWxseUJs
b2NrKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2
aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgU3Rh
dGVtZW50Tm9kZSogbV90cnlCbG9jazsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV90aHJv
d25WYWx1ZUlkZW50OwpAQCAtMTYwOSw3ICsxNjE0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiYgY2xvc2VkVmFyaWFi
bGVzKCkgY29uc3QgeyByZXR1cm4gbV9jbG9zZWRWYXJpYWJsZXM7IH0KIAogICAgIHByaXZhdGU6
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBO
b1RhaWxDYWxscykgb3ZlcnJpZGU7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8VW5pcXVlZFN0cmlu
Z0ltcGw+PiBtX2Nsb3NlZFZhcmlhYmxlczsKICAgICAgICAgdW5zaWduZWQgbV9zdGFydENvbHVt
bjsKICAgICAgICAgdW5zaWduZWQgbV9lbmRDb2x1bW47CkBAIC0xNjI1LDcgKzE2MzAsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2NvcGVJc0Z1bmN0aW9u
ID0gZmFsc2U7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAg
ICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAg
IHVuc2lnbmVkIG1fZW5kQ29sdW1uOwogICAgIH07CkBAIC0xNjYxLDcgKzE2NjYsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgICAgICBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMoKSBj
b25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMuZ2V0KCk7IH0KIAotICAgICAgICB2aXJ0dWFsIHZv
aWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVy
cmlkZTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRl
OwogCiAgICAgICAgIHZvaWQgZmluaXNoUGFyc2luZyhjb25zdCBTb3VyY2VDb2RlJiwgUGFyYW1l
dGVyTm9kZSosIGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlvbk1vZGUpOwogICAgICAgICAKQEAg
LTE3MDgsNyArMTcxMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIEZ1bmN0aW9uUGFy
YW1ldGVycyogcGFyYW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5nZXQoKTsg
fQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUg
PSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgdm9pZCBmaW5pc2hQYXJzaW5nKFBh
c3NSZWZQdHI8RnVuY3Rpb25QYXJhbWV0ZXJzPiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9u
TW9kZSk7CiAgICAgICAgIApAQCAtMTczNiw3ICsxNzQxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHkoKSB7IHJldHVybiBtX2JvZHk7IH0KIAogICAg
IHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVh
bCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKIAogICAgICAgICB2
aXJ0dWFsIGJvb2wgaXNGdW5jRXhwck5vZGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9CiAKQEAgLTE3NTIsNyArMTc1Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBjb25z
dCBJZGVudGlmaWVyJiBuYW1lKCkgeyByZXR1cm4gbV9uYW1lOyB9CiAKICAgICBwcml2YXRlOgot
ICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJ
RCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWls
Q2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgY29uc3QgSWRlbnRp
ZmllciYgbV9uYW1lOwogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9jb25zdHJ1Y3RvckV4cHJl
c3Npb247CkBAIC0xODYzLDcgKzE4NjgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcml2YXRl
OgogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNBc3NpZ25tZW50TG9jYXRpb24oKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Rlc3RydWN0dXJp
bmdOb2RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgICAgICB2aXJ0dWFs
IFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1Rh
aWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgUmVmUHRyPERlc3RydWN0dXJpbmdQYXR0ZXJu
Tm9kZT4gbV9iaW5kaW5nczsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1faW5pdGlhbGl6ZXI7
CkBAIC0xODc3LDcgKzE4ODIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRnVuY3Rpb25C
b2R5Tm9kZSogYm9keSgpIHsgcmV0dXJuIG1fYm9keTsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAg
ICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENh
bGxzKSBvdmVycmlkZTsKIAogICAgICAgICBGdW5jdGlvbkJvZHlOb2RlKiBtX2JvZHk7CiAgICAg
fTsKQEAgLTE4ODgsNyArMTg5Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBDbGFzc0Rl
Y2xOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBjbGFzc0V4cHJl
c3Npb24pOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKIAogICAgICAgICBF
eHByZXNzaW9uTm9kZSogbV9jbGFzc0RlY2xhcmF0aW9uOwogICAgIH07CkBAIC0xOTAwLDcgKzE5
MDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBFeHByZXNzaW9uTm9kZSogZXhwcigp
IGNvbnN0IHsgcmV0dXJuIG1fZXhwcjsgfQogCi0gICAgICAgIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogZGVzdGluYXRpb24pOworICAgICAgICB2b2lk
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIGRlc3RpbmF0aW9u
LCBUYWlsQ2FsbE1vZGUpOwogICAgICAgICB2b2lkIHNldFN0YXJ0T2Zmc2V0KGludCBvZmZzZXQp
IHsgbV9zdGFydE9mZnNldCA9IG9mZnNldDsgfQogCiAgICAgcHJpdmF0ZToKQEAgLTE5MjYsNyAr
MTkzMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgQ2FzZUJsb2Nr
Tm9kZShDbGF1c2VMaXN0Tm9kZSogbGlzdDEsIENhc2VDbGF1c2VOb2RlKiBkZWZhdWx0Q2xhdXNl
LCBDbGF1c2VMaXN0Tm9kZSogbGlzdDIpOwogCi0gICAgICAgIHZvaWQgZW1pdEJ5dGVjb2RlRm9y
QmxvY2soQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBpbnB1dCwgUmVnaXN0ZXJJRCog
ZGVzdGluYXRpb24pOworICAgICAgICB2b2lkIGVtaXRCeXRlY29kZUZvckJsb2NrKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogaW5wdXQsIFJlZ2lzdGVySUQqIGRlc3RpbmF0aW9uLCBU
YWlsQ2FsbE1vZGUpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgU3dpdGNoSW5mbzo6U3dpdGNo
VHlwZSB0cnlUYWJsZVN3aXRjaChWZWN0b3I8RXhwcmVzc2lvbk5vZGUqLCA4PiYgbGl0ZXJhbFZl
Y3RvciwgaW50MzJfdCYgbWluX251bSwgaW50MzJfdCYgbWF4X251bSk7CkBAIC0xOTQxLDcgKzE5
NDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3dpdGNoTm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSosIENhc2VCbG9ja05vZGUqKTsKIAogICAgIHByaXZh
dGU6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUg
PSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhw
cjsKICAgICAgICAgQ2FzZUJsb2NrTm9kZSogbV9ibG9jazsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260344</attachid>
            <date>2015-08-31 19:04:09 -0700</date>
            <delta_ts>2015-09-01 14:09:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146481-20150831190352.patch</filename>
            <type>text/plain</type>
            <size>121189</size>
            <attacher name="Basile Clement">basile_clement</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MjAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
YzY0ZTU1ZjI2ZDM5YzQ4MmEzNzFjNjE1ZWEyOWQ4NGM2ZmM0ZTFjLi5kMTk4ZTZmMTgxNGFlODBi
NGRkZjlhZGI1NDA3NzMwNTY1NDA2NjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDMgQEAKKzIwMTUtMDgtMjcgIEJhc2lsZSBDbGVtZW50ICA8YmFzaWxlX2NsZW1lbnRA
YXBwbGUuY29tPgorCisgICAgICAgIFtFUzZdIFJlY29nbml6ZSBjYWxscyBpbiB0YWlsIHBvc2l0
aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY0
ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHBhdGNoIGFkZHMgdGhlIGNhcGFiaWxpdHkgZm9yIHRoZSBieXRlY29kZSBnZW5lcmF0b3IgdG8g
cmVjb2duaXplCisgICAgICAgIGFuZCBkaXNwYXRjaCB0YWlsIGNhbGxzLCBhcyBwZXIgRVM2IHNw
ZWM6CisgICAgICAgIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82
LjAvI3NlYy1pc2ludGFpbHBvc2l0aW9uCisKKyAgICAgICAgVGhpcyBkb2VzIG5vdCBjaGFuZ2Ug
dGhlIGdlbmVyYXRlZCBieXRlY29kZSwgYnV0IG1lcmVseSBwcm92aWRlcyB0aGUKKyAgICAgICAg
aG9vayBmb3IgZ2VuZXJhdGluZyB0YWlsIGNhbGxzIGluIHN1YnNlcXVlbnQgcGF0Y2hlcyB0b3dh
cmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NjQ3
NworCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRUYWlsQ2FsbCk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VGFpbENhbGxWYXJhcmdzKToKKyAgICAgICAgKiBieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXROb2RlKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNw
cDoKKyAgICAgICAgKEpTQzo6Q29uc3RhbnROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAo
SlNDOjpOdW1iZXJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpSZWdFeHBOb2Rl
OjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpUaGlzTm9kZTo6ZW1pdEJ5dGVjb2RlKToK
KyAgICAgICAgKEpTQzo6U3VwZXJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpO
ZXdUYXJnZXROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpSZXNvbHZlTm9kZTo6
ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6VGVtcGxhdGVTdHJpbmdOb2RlOjplbWl0Qnl0
ZWNvZGUpOgorICAgICAgICAoSlNDOjpUZW1wbGF0ZUxpdGVyYWxOb2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpUYWdnZWRUZW1wbGF0ZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAg
ICAgIChKU0M6OkFycmF5Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6T2JqZWN0
TGl0ZXJhbE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlByb3BlcnR5TGlzdE5v
ZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkJyYWNrZXRBY2Nlc3Nvck5vZGU6OmVt
aXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkRvdEFjY2Vzc29yTm9kZTo6ZW1pdEJ5dGVjb2Rl
KToKKyAgICAgICAgKEpTQzo6QXJndW1lbnRMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAg
ICAgKEpTQzo6TmV3RXhwck5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkV2YWxG
dW5jdGlvbkNhbGxOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNh
bGxWYWx1ZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbFJl
c29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNp
Y05vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbEJyYWNrZXRO
b2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxEb3ROb2RlOjpl
bWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1p
dEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0
Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpQb3N0Zml4Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAg
ICAgICAgKEpTQzo6RGVsZXRlUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChK
U0M6OkRlbGV0ZUJyYWNrZXROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpEZWxl
dGVEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpEZWxldGVWYWx1ZU5vZGU6
OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlZvaWROb2RlOjplbWl0Qnl0ZWNvZGUpOgor
ICAgICAgICAoSlNDOjpUeXBlT2ZSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAg
KEpTQzo6VHlwZU9mVmFsdWVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpQcmVm
aXhOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpVbmFyeU9wTm9kZTo6ZW1pdEJ5
dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Qml0d2lzZU5vdE5vZGU6OmVtaXRCeXRlY29kZSk6Cisg
ICAgICAgIChKU0M6OkJpbmFyeU9wTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6
RXF1YWxOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpTdHJpY3RFcXVhbE5vZGU6
OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlRocm93YWJsZUJpbmFyeU9wTm9kZTo6ZW1p
dEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6SW5zdGFuY2VPZk5vZGU6OmVtaXRCeXRlY29kZSk6
CisgICAgICAgIChKU0M6OkxvZ2ljYWxPcE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChK
U0M6OkNvbmRpdGlvbmFsTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UmVhZE1v
ZGlmeVJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpBc3NpZ25SZXNv
bHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QXNzaWduRG90Tm9kZTo6ZW1p
dEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UmVhZE1vZGlmeURvdE5vZGU6OmVtaXRCeXRlY29k
ZSk6CisgICAgICAgIChKU0M6OkFzc2lnbkVycm9yTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAg
ICAgKEpTQzo6QXNzaWduQnJhY2tldE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6
OlJlYWRNb2RpZnlCcmFja2V0Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q29t
bWFOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpTb3VyY2VFbGVtZW50czo6ZW1p
dEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QmxvY2tOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAg
ICAgICAoSlNDOjpFbXB0eVN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChK
U0M6OkRlYnVnZ2VyU3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6
RXhwclN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkRlY2xhcmF0
aW9uU3RhdGVtZW50OjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpFbXB0eVZhckV4cHJl
c3Npb246OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkVtcHR5TGV0RXhwcmVzc2lvbjo6
ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6SWZFbHNlTm9kZTo6ZW1pdEJ5dGVjb2RlKToK
KyAgICAgICAgKEpTQzo6RG9XaGlsZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6
OldoaWxlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Rm9yTm9kZTo6ZW1pdEJ5
dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Rm9ySW5Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAg
ICAoSlNDOjpGb3JPZk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNvbnRpbnVl
Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QnJlYWtOb2RlOjplbWl0Qnl0ZWNv
ZGUpOgorICAgICAgICAoSlNDOjpSZXR1cm5Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAo
SlNDOjpXaXRoTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q2FzZUNsYXVzZU5v
ZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNhc2VCbG9ja05vZGU6OmVtaXRCeXRl
Y29kZUZvckJsb2NrKToKKyAgICAgICAgKEpTQzo6U3dpdGNoTm9kZTo6ZW1pdEJ5dGVjb2RlKToK
KyAgICAgICAgKEpTQzo6TGFiZWxOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpU
aHJvd05vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlRyeU5vZGU6OmVtaXRCeXRl
Y29kZSk6CisgICAgICAgIChKU0M6OlNjb3BlTm9kZTo6ZW1pdFN0YXRlbWVudHNCeXRlY29kZSk6
CisgICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlND
OjpNb2R1bGVQcm9ncmFtTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RXZhbE5v
ZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uTm9kZTo6ZW1pdEJ5dGVj
b2RlKToKKyAgICAgICAgKEpTQzo6RnVuY0RlY2xOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAg
ICAoSlNDOjpGdW5jRXhwck5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkFycm93
RnVuY0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDbGFzc0RlY2xOb2Rl
OjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNv
ZGUpOgorICAgICAgICAoSlNDOjpJbXBvcnREZWNsYXJhdGlvbk5vZGU6OmVtaXRCeXRlY29kZSk6
CisgICAgICAgIChKU0M6OkV4cG9ydEFsbERlY2xhcmF0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKToK
KyAgICAgICAgKEpTQzo6RXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uTm9kZTo6ZW1pdEJ5dGVjb2Rl
KToKKyAgICAgICAgKEpTQzo6RXhwb3J0TG9jYWxEZWNsYXJhdGlvbk5vZGU6OmVtaXRCeXRlY29k
ZSk6CisgICAgICAgIChKU0M6OkV4cG9ydE5hbWVkRGVjbGFyYXRpb25Ob2RlOjplbWl0Qnl0ZWNv
ZGUpOgorICAgICAgICAoSlNDOjpEZXN0cnVjdHVyaW5nQXNzaWdubWVudE5vZGU6OmVtaXRCeXRl
Y29kZSk6CisgICAgICAgIChKU0M6OlNwcmVhZEV4cHJlc3Npb25Ob2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpQb3N0Zml4Tm9kZTo6ZW1pdFJlc29sdmUpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpQb3N0Zml4Tm9kZTo6ZW1pdEJyYWNrZXQpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpQb3N0Zml4Tm9kZTo6ZW1pdERvdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlByZWZp
eE5vZGU6OmVtaXRSZXNvbHZlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UHJlZml4Tm9kZTo6
ZW1pdEJyYWNrZXQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCaW5hcnlPcE5vZGU6OmVtaXRC
eXRlY29kZUluQ29uZGl0aW9uQ29udGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJpbmFy
eU9wTm9kZTo6dHJ5Rm9sZFRvQnJhbmNoKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6ZW1pdFJl
YWRNb2RpZnlBc3NpZ25tZW50KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QmxvY2tOb2RlOjps
YXN0U3RhdGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6c2luZ2xlU3RhdGVtZW50KTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SWZFbHNlTm9kZTo6dHJ5Rm9sZEJyZWFrQW5kQ29udGlu
dWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGb3JJbk5vZGU6OmVtaXRNdWx0aUxvb3BCeXRl
Y29kZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNvbnRpbnVlTm9kZTo6dHJpdmlhbFRhcmdl
dCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJyZWFrTm9kZTo6dHJpdmlhbFRhcmdldCk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OnByb2Nlc3NDbGF1c2VMaXN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6Q2FzZUJsb2NrTm9kZTo6dHJ5VGFibGVTd2l0Y2gpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpPYmplY3RQYXR0ZXJuTm9kZTo6YmluZFZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwYXJzZXIvTm9kZXMuaDoKKyAgICAgICAgKEpTQzo6QnJhY2tldEFjY2Vzc29yTm9kZTo6c3Vi
c2NyaXB0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QmluYXJ5T3BOb2RlOjpsaHMpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpFeHByU3RhdGVtZW50Tm9kZTo6ZXhwcik6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OlNjb3BlTm9kZTo6bmVlZGVkQ29uc3RhbnRzKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6RXZhbE5vZGU6OmVuZENvbHVtbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1v
ZHVsZVByb2dyYW1Ob2RlOjplbmRDb2x1bW4pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpEZXN0
cnVjdHVyaW5nQXNzaWdubWVudE5vZGU6OmJpbmRpbmdzKTogRGVsZXRlZC4KKyAgICAgICAgKiBy
dW50aW1lL09wdGlvbnMuaDoKKwogMjAxNS0wOC0zMSAgQmFzaWxlIENsZW1lbnQgIDxiYXNpbGVf
Y2xlbWVudEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgYnVpbGQgZml4IGFmdGVy
IHIxODkyOTIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggNjJjMmQzYmE0MjU3NjM4ZTg0MGJiM2E2MmQy
Nzc0YjBmMzEyN2RmYy4uYTM5MmUwNGQ4YmZmZTliZTZhYWFlMTU0NGM2YmE0OGNkMDgwYWVjZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHAKQEAgLTIyOTgsNiArMjI5OCwxMyBAQCBSZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdENhbGwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5j
LCBFeHBlYwogICAgIHJldHVybiBlbWl0Q2FsbChvcF9jYWxsLCBkc3QsIGZ1bmMsIGV4cGVjdGVk
RnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CiB9
CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VGFpbENhbGwoUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBFeHBlY3RlZEZ1bmN0aW9uIGV4cGVjdGVkRnVuY3Rp
b24sIENhbGxBcmd1bWVudHMmIGNhbGxBcmd1bWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBk
aXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdEVuZCkKK3sKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGVtaXR0aW5nIGEg
bmV3IG9wX3RhaWxfY2FsbCBoZXJlCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0NjQ4NAorICAgIHJldHVybiBlbWl0Q2FsbChvcF9jYWxsLCBkc3QsIGZ1
bmMsIGV4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90LCBkaXZvdFN0YXJ0LCBk
aXZvdEVuZCk7Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbEV2
YWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBDYWxsQXJndW1lbnRzJiBjYWxs
QXJndW1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCiB7CiAgICAg
cmV0dXJuIGVtaXRDYWxsKG9wX2NhbGxfZXZhbCwgZHN0LCBmdW5jLCBOb0V4cGVjdGVkRnVuY3Rp
b24sIGNhbGxBcmd1bWVudHMsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CkBAIC0yNDQ3
LDYgKzI0NTQsMTMgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsVmFy
YXJncyhSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMKICAgICByZXR1cm4gZW1pdENh
bGxWYXJhcmdzKG9wX2NhbGxfdmFyYXJncywgZHN0LCBmdW5jLCB0aGlzUmVnaXN0ZXIsIGFyZ3Vt
ZW50cywgZmlyc3RGcmVlUmVnaXN0ZXIsIGZpcnN0VmFyQXJnT2Zmc2V0LCBwcm9maWxlSG9va1Jl
Z2lzdGVyLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOwogfQogCitSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdFRhaWxDYWxsVmFyYXJncyhSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIGZ1bmMsIFJlZ2lzdGVySUQqIHRoaXNSZWdpc3RlciwgUmVnaXN0ZXJJRCogYXJn
dW1lbnRzLCBSZWdpc3RlcklEKiBmaXJzdEZyZWVSZWdpc3RlciwgaW50MzJfdCBmaXJzdFZhckFy
Z09mZnNldCwgUmVnaXN0ZXJJRCogcHJvZmlsZUhvb2tSZWdpc3RlciwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90RW5kKQoreworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgZW1p
dHRpbmcgYSBuZXcgb3BfdGFpbF9jYWxsX3ZhcmFyZ3MgaGVyZQorICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY0ODQKKyAgICByZXR1cm4gZW1pdENhbGxW
YXJhcmdzKG9wX2NhbGxfdmFyYXJncywgZHN0LCBmdW5jLCB0aGlzUmVnaXN0ZXIsIGFyZ3VtZW50
cywgZmlyc3RGcmVlUmVnaXN0ZXIsIGZpcnN0VmFyQXJnT2Zmc2V0LCBwcm9maWxlSG9va1JlZ2lz
dGVyLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOworfQorCiBSZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdENvbnN0cnVjdFZhcmFyZ3MoUmVnaXN0ZXJJRCogZHN0LCBSZWdp
c3RlcklEKiBmdW5jLCBSZWdpc3RlcklEKiB0aGlzUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGFyZ3Vt
ZW50cywgUmVnaXN0ZXJJRCogZmlyc3RGcmVlUmVnaXN0ZXIsIGludDMyX3QgZmlyc3RWYXJBcmdP
ZmZzZXQsIFJlZ2lzdGVySUQqIHByb2ZpbGVIb29rUmVnaXN0ZXIsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdEVuZCkKIHsKICAgICByZXR1cm4gZW1pdENhbGxWYXJhcmdzKG9wX2Nv
bnN0cnVjdF92YXJhcmdzLCBkc3QsIGZ1bmMsIHRoaXNSZWdpc3RlciwgYXJndW1lbnRzLCBmaXJz
dEZyZWVSZWdpc3RlciwgZmlyc3RWYXJBcmdPZmZzZXQsIHByb2ZpbGVIb29rUmVnaXN0ZXIsIGRp
dm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggODljZGVhZDEzNTQ0
ODFjNzQ2NjcwZTM1Zjk2MDA1OTM3ZmI5NWJhNy4uNDQxNmM4NWRhZmQ0NTNjZDcwMjQ0ZDkyZjJh
MmM4ZmVmNTYzNWJlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtMzU2LDcgKzM1Niw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBMYWJlbFNjb3BlUHRyIG5ld0xhYmVsU2NvcGUoTGFiZWxTY29wZTo6
VHlwZSwgY29uc3QgSWRlbnRpZmllciogPSAwKTsKICAgICAgICAgUGFzc1JlZlB0cjxMYWJlbD4g
bmV3TGFiZWwoKTsKIAotICAgICAgICB2b2lkIGVtaXROb2RlKFJlZ2lzdGVySUQqIGRzdCwgU3Rh
dGVtZW50Tm9kZSogbikKKyAgICAgICAgdm9pZCBlbWl0Tm9kZShSZWdpc3RlcklEKiBkc3QsIFN0
YXRlbWVudE5vZGUqIG4sIFRhaWxDYWxsTW9kZSB0YWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykK
ICAgICAgICAgewogICAgICAgICAgICAgLy8gTm9kZTo6ZW1pdENvZGUgYXNzdW1lcyB0aGF0IGRz
dCwgaWYgcHJvdmlkZWQsIGlzIGVpdGhlciBhIGxvY2FsIG9yIGEgcmVmZXJlbmNlZCB0ZW1wb3Jh
cnkuCiAgICAgICAgICAgICBBU1NFUlQoIWRzdCB8fCBkc3QgPT0gaWdub3JlZFJlc3VsdCgpIHx8
ICFkc3QtPmlzVGVtcG9yYXJ5KCkgfHwgZHN0LT5yZWZDb3VudCgpKTsKQEAgLTM2NCw3ICszNjQs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICBlbWl0VGhyb3dFeHByZXNzaW9u
VG9vRGVlcEV4Y2VwdGlvbigpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIG4tPmVtaXRCeXRlY29kZSgqdGhpcywgZHN0KTsKKyAgICAgICAgICAg
IG4tPmVtaXRCeXRlY29kZSgqdGhpcywgZHN0LCB0YWlsQ2FsbE1vZGUpOwogICAgICAgICB9CiAK
ICAgICAgICAgdm9pZCBlbWl0Tm9kZShTdGF0ZW1lbnROb2RlKiBuKQpAQCAtMzcyLDEzICszNzIs
MTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBlbWl0Tm9kZSgwLCBuKTsKICAgICAg
ICAgfQogCi0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXROb2RlKFJlZ2lzdGVySUQqIGRzdCwgRXhw
cmVzc2lvbk5vZGUqIG4pCisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROb2RlKFJlZ2lzdGVySUQq
IGRzdCwgRXhwcmVzc2lvbk5vZGUqIG4sIFRhaWxDYWxsTW9kZSB0YWlsQ2FsbE1vZGUgPSBOb1Rh
aWxDYWxscykKICAgICAgICAgewogICAgICAgICAgICAgLy8gTm9kZTo6ZW1pdENvZGUgYXNzdW1l
cyB0aGF0IGRzdCwgaWYgcHJvdmlkZWQsIGlzIGVpdGhlciBhIGxvY2FsIG9yIGEgcmVmZXJlbmNl
ZCB0ZW1wb3JhcnkuCiAgICAgICAgICAgICBBU1NFUlQoIWRzdCB8fCBkc3QgPT0gaWdub3JlZFJl
c3VsdCgpIHx8ICFkc3QtPmlzVGVtcG9yYXJ5KCkgfHwgZHN0LT5yZWZDb3VudCgpKTsKICAgICAg
ICAgICAgIGlmICghbV92bS0+aXNTYWZlVG9SZWN1cnNlKCkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIGVtaXRUaHJvd0V4cHJlc3Npb25Ub29EZWVwRXhjZXB0aW9uKCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gbi0+ZW1pdEJ5dGVjb2RlKCp0aGlzLCBkc3QpOworICAgICAgICAgICAgcmV0dXJuIG4t
PmVtaXRCeXRlY29kZSgqdGhpcywgZHN0LCB0YWlsQ2FsbE1vZGUpOwogICAgICAgICB9CiAKICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdE5vZGUoRXhwcmVzc2lvbk5vZGUqIG4pCkBAIC01MTcsOCAr
NTE3LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgRXhwZWN0ZWRGdW5j
dGlvbiBleHBlY3RlZEZ1bmN0aW9uRm9ySWRlbnRpZmllcihjb25zdCBJZGVudGlmaWVyJik7CiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDYWxsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCog
ZnVuYywgRXhwZWN0ZWRGdW5jdGlvbiwgQ2FsbEFyZ3VtZW50cyYsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdEVuZCk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRUYWlsQ2FsbChS
ZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIEV4cGVjdGVkRnVuY3Rpb24sIENhbGxB
cmd1bWVudHMmLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0Q2FsbEV2YWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBm
dW5jLCBDYWxsQXJndW1lbnRzJiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5k
KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENhbGxWYXJhcmdzKFJlZ2lzdGVySUQqIGRzdCwg
UmVnaXN0ZXJJRCogZnVuYywgUmVnaXN0ZXJJRCogdGhpc1JlZ2lzdGVyLCBSZWdpc3RlcklEKiBh
cmd1bWVudHMsIFJlZ2lzdGVySUQqIGZpcnN0RnJlZVJlZ2lzdGVyLCBpbnQzMl90IGZpcnN0VmFy
QXJnT2Zmc2V0LCBSZWdpc3RlcklEKiBwcm9maWxlSG9va1JlZ2lzdGVyLCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0VGFpbENh
bGxWYXJhcmdzKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgUmVnaXN0ZXJJRCog
dGhpc1JlZ2lzdGVyLCBSZWdpc3RlcklEKiBhcmd1bWVudHMsIFJlZ2lzdGVySUQqIGZpcnN0RnJl
ZVJlZ2lzdGVyLCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0LCBSZWdpc3RlcklEKiBwcm9maWxl
SG9va1JlZ2lzdGVyLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAg
ICAgICAgIGVudW0gUHJvcGVydHlEZXNjcmlwdG9yT3B0aW9uIHsKICAgICAgICAgICAgIFByb3Bl
cnR5Q29uZmlndXJhYmxlID0gMSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCA5YzZlNzZmMmY0MmJkZGNlOTY1YjgyNDIy
OGFiNjUyMThmZTBlMTdlLi5hMWRhZTdiNmRkZmFmMzdjMWJiMDhiMmQxZTZiNGU2NDY5MjA3Y2Q3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29k
ZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0Nv
ZGVnZW4uY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBDb25zdGFudE5vZGU6OmVtaXRCeXRl
Y29kZUluQ29uZGl0aW9uQ29udGV4dChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLAogICAg
IC8vIEFsbCBvdGhlciBjYXNlcyBhcmUgdW5jb25kaXRpb25hbCBmYWxsLXRocm91Z2hzLCBsaWtl
ICJpZiAodHJ1ZSkiLgogfQogCi1SZWdpc3RlcklEKiBDb25zdGFudE5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCitSZWdpc3Rl
cklEKiBDb25zdGFudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSkKIHsKICAgICBpZiAoZHN0ID09IGdl
bmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTI1LDcgKzEy
NSw3IEBAIEpTVmFsdWUgU3RyaW5nTm9kZTo6anNWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yKSBjb25zdAogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTnVtYmVy
Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlZ2lzdGVySUQqIE51
bWJlck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklEKiBkc3QpCitSZWdpc3RlcklEKiBOdW1iZXJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUpCiB7
CiAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKQEAgLTEzNCw3ICsxMzQsNyBAQCBSZWdpc3RlcklEKiBOdW1iZXJOb2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZAog
CiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUmVnRXhwTm9kZSAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1SZWdpc3RlcklEKiBSZWdFeHBOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQor
UmVnaXN0ZXJJRCogUmVnRXhwTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlKQogewogICAgIGlmIChkc3Qg
PT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xNDMs
NyArMTQzLDcgQEAgUmVnaXN0ZXJJRCogUmVnRXhwTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGQKIAogLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tIFRoaXNOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KIAotUmVnaXN0ZXJJRCogVGhpc05vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCitSZWdpc3RlcklEKiBUaGlzTm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRz
dCwgVGFpbENhbGxNb2RlKQogewogICAgIGlmIChtX3Nob3VsZEFsd2F5c0VtaXRURFpDaGVjayB8
fCBnZW5lcmF0b3IuY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVk
KQogICAgICAgICBnZW5lcmF0b3IuZW1pdFREWkNoZWNrKGdlbmVyYXRvci50aGlzUmVnaXN0ZXIo
KSk7CkBAIC0xNTksNyArMTU5LDcgQEAgUmVnaXN0ZXJJRCogVGhpc05vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QKIAogLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFN1cGVyTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlZ2lzdGVySUQqIFN1cGVyTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVy
SUQqIFN1cGVyTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlKQogewogICAgIGlmIChkc3QgPT0gZ2VuZXJh
dG9yLmlnbm9yZWRSZXN1bHQoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xODMsNyArMTgzLDcg
QEAgc3RhdGljIFJlZ2lzdGVySUQqIGVtaXRTdXBlckJhc2VGb3JDYWxsZWUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvcikKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIE5l
d1RhcmdldE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1SZWdpc3Rl
cklEKiBOZXdUYXJnZXROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogTmV3VGFyZ2V0Tm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFp
bENhbGxNb2RlKQogewogICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xOTgsNyArMTk4LDcgQEAgYm9vbCBSZXNvbHZl
Tm9kZTo6aXNQdXJlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IpIGNvbnN0CiAgICAgcmV0
dXJuIGdlbmVyYXRvci52YXJpYWJsZShtX2lkZW50KS5vZmZzZXQoKS5pc1N0YWNrKCk7CiB9CiAK
LVJlZ2lzdGVySUQqIFJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogUmVzb2x2ZU5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3Qs
IFRhaWxDYWxsTW9kZSkKIHsKICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUo
bV9pZGVudCk7CiAgICAgaWYgKFJlZ2lzdGVySUQqIGxvY2FsID0gdmFyLmxvY2FsKCkpIHsKQEAg
LTIyMyw3ICsyMjMsNyBAQCBSZWdpc3RlcklEKiBSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqCiAjaWYgRU5BQkxFKEVTNl9U
RU1QTEFURV9MSVRFUkFMX1NZTlRBWCkKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSBUZW1wbGF0ZVN0cmluZ05vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IAotUmVnaXN0ZXJJRCogVGVtcGxhdGVTdHJpbmdOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogVGVtcGxh
dGVTdHJpbmdOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAgaWYgKGRzdCA9PSBnZW5lcmF0
b3IuaWdub3JlZFJlc3VsdCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIzMiw3ICsy
MzIsNyBAQCBSZWdpc3RlcklEKiBUZW1wbGF0ZVN0cmluZ05vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpcwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0gVGVtcGxhdGVMaXRlcmFsTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogCi1SZWdpc3RlcklEKiBUZW1wbGF0ZUxpdGVyYWxOb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0
ZXJJRCogVGVtcGxhdGVMaXRlcmFsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlKQogewogICAgIGlmICgh
bV90ZW1wbGF0ZUV4cHJlc3Npb25zKSB7CiAgICAgICAgIFRlbXBsYXRlU3RyaW5nTm9kZSogdGVt
cGxhdGVTdHJpbmcgPSBtX3RlbXBsYXRlU3RyaW5ncy0+dmFsdWUoKTsKQEAgLTI2OCw3ICsyNjgs
NyBAQCBSZWdpc3RlcklEKiBUZW1wbGF0ZUxpdGVyYWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gVGFnZ2VkVGVtcGxhdGVOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAKLVJlZ2lzdGVySUQqIFRhZ2dlZFRlbXBsYXRlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVySUQq
IFRhZ2dlZFRlbXBsYXRlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlKQogewogICAgIEV4cGVjdGVkRnVu
Y3Rpb24gZXhwZWN0ZWRGdW5jdGlvbiA9IE5vRXhwZWN0ZWRGdW5jdGlvbjsKICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gdGFnID0gbnVsbHB0cjsKQEAgLTMzMCw3ICszMzAsNyBAQCBSZWdpc3RlcklE
KiBUYWdnZWRUZW1wbGF0ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpcwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQXJyYXlO
b2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1SZWdpc3RlcklEKiBB
cnJheU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklEKiBkc3QpCitSZWdpc3RlcklEKiBBcnJheU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSkKIHsK
ICAgICAvLyBGSVhNRTogU2hvdWxkIHdlIHB1dCBhbGwgb2YgdGhpcyBjb2RlIGludG8gZW1pdE5l
d0FycmF5PwogCkBAIC00MjAsNyArNDIwLDcgQEAgQXJndW1lbnRMaXN0Tm9kZSogQXJyYXlOb2Rl
Ojp0b0FyZ3VtZW50TGlzdChQYXJzZXJBcmVuYSYgcGFyc2VyQXJlbmEsIGludCBsaW5lTnUKIAog
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIE9iamVjdExpdGVyYWxOb2RlIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUmVnaXN0ZXJJRCogT2JqZWN0TGl0ZXJhbE5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBk
c3QpCitSZWdpc3RlcklEKiBPYmplY3RMaXRlcmFsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlKQogewog
ICAgIGlmICghbV9saXN0KSB7CiAgICAgICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRS
ZXN1bHQoKSkKQEAgLTQzOSw3ICs0MzksNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZW1pdFB1dEhv
bWVPYmplY3QoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZgogICAg
IGdlbmVyYXRvci5lbWl0UHV0QnlJZChmdW5jdGlvbiwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMo
KS5ob21lT2JqZWN0UHJpdmF0ZU5hbWUsIGhvbWVPYmplY3QpOwogfQogCi1SZWdpc3RlcklEKiBQ
cm9wZXJ0eUxpc3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFp
bENhbGxNb2RlKQogewogICAgIC8vIEZhc3QgY2FzZTogdGhpcyBsb29wIGp1c3QgaGFuZGxlcyBy
ZWd1bGFyIHZhbHVlIHByb3BlcnRpZXMuCiAgICAgUHJvcGVydHlMaXN0Tm9kZSogcCA9IHRoaXM7
CkBAIC01ODQsNyArNTg0LDcgQEAgdm9pZCBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0UHV0Q29uc3Rh
bnRQcm9wZXJ0eShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWcKIAogLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEJyYWNrZXRBY2Nlc3Nvck5vZGUgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUmVnaXN0ZXJJRCogQnJhY2tldEFjY2Vzc29yTm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRz
dCkKK1JlZ2lzdGVySUQqIEJyYWNrZXRBY2Nlc3Nvck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSkKIHsK
ICAgICBpZiAobV9iYXNlLT5pc1N1cGVyTm9kZSgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBTaG91
bGQgd2UgZ2VuZXJhdGUgdGhlIHByb2ZpbGVyIGluZm8/CkBAIC02MTUsNyArNjE1LDcgQEAgUmVn
aXN0ZXJJRCogQnJhY2tldEFjY2Vzc29yTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2kKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IERvdEFjY2Vzc29yTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1SZWdp
c3RlcklEKiBEb3RBY2Nlc3Nvck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCitSZWdpc3RlcklEKiBEb3RBY2Nlc3Nvck5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBk
c3QsIFRhaWxDYWxsTW9kZSkKIHsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IG1fYmFz
ZS0+aXNTdXBlck5vZGUoKSA/IGVtaXRTdXBlckJhc2VGb3JDYWxsZWUoZ2VuZXJhdG9yKSA6IGdl
bmVyYXRvci5lbWl0Tm9kZShtX2Jhc2UpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbklu
Zm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKQEAgLTYyNyw3ICs2MjcsNyBA
QCBSZWdpc3RlcklEKiBEb3RBY2Nlc3Nvck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcgogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0gQXJndW1lbnRMaXN0Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1S
ZWdpc3RlcklEKiBBcmd1bWVudExpc3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogQXJndW1lbnRMaXN0
Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
SUQqIGRzdCwgVGFpbENhbGxNb2RlKQogewogICAgIEFTU0VSVChtX2V4cHIpOwogICAgIHJldHVy
biBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX2V4cHIpOwpAQCAtNjM1LDcgKzYzNSw3IEBAIFJl
Z2lzdGVySUQqIEFyZ3VtZW50TGlzdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3RlCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSBOZXdFeHByTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlZ2lz
dGVySUQqIE5ld0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogTmV3RXhwck5vZGU6OmVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxD
YWxsTW9kZSkKIHsKICAgICBFeHBlY3RlZEZ1bmN0aW9uIGV4cGVjdGVkRnVuY3Rpb247CiAgICAg
aWYgKG1fZXhwci0+aXNSZXNvbHZlTm9kZSgpKQpAQCAtNjc2LDcgKzY3Niw3IEBAIENhbGxBcmd1
bWVudHM6OkNhbGxBcmd1bWVudHMoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgQXJndW1l
bnRzTm9kZSogYXJndW1lCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFdmFs
RnVuY3Rpb25DYWxsTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJl
Z2lzdGVySUQqIEV2YWxGdW5jdGlvbkNhbGxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogRXZhbEZ1bmN0
aW9uQ2FsbE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSkKIHsKICAgICBWYXJpYWJsZSB2YXIgPSBnZW5l
cmF0b3IudmFyaWFibGUoZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5ldmFsKTsKICAgICBpZiAo
UmVnaXN0ZXJJRCogbG9jYWwgPSB2YXIubG9jYWwoKSkgewpAQCAtNjk5LDcgKzY5OSw3IEBAIFJl
Z2lzdGVySUQqIEV2YWxGdW5jdGlvbkNhbGxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSBGdW5jdGlvbkNhbGxWYWx1ZU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogCi1SZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxWYWx1ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCitSZWdpc3RlcklEKiBG
dW5jdGlvbkNhbGxWYWx1ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSB0YWlsQ2FsbE1vZGUpCiB7CiAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZ1bmMgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9leHByKTsK
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuVmFsdWUgPSBnZW5lcmF0b3IuZmluYWxEZXN0
aW5hdGlvbihkc3QsIGZ1bmMuZ2V0KCkpOwpAQCAtNzEzLDE0ICs3MTMsMTggQEAgUmVnaXN0ZXJJ
RCogRnVuY3Rpb25DYWxsVmFsdWVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmUKICAgICAgICAgcmV0dXJuIHJldDsKICAgICB9CiAgICAgZ2VuZXJhdG9y
LmVtaXRMb2FkKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOwot
ICAgIFJlZ2lzdGVySUQqIHJldCA9IGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQo
KSwgZnVuYy5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgp
LCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgIFJlZ2lzdGVySUQqIHJldDsKKyAgICBp
ZiAodGFpbENhbGxNb2RlID09IENhbkhhdmVUYWlsQ2FsbHMpCisgICAgICAgIHJldCA9IGdlbmVy
YXRvci5lbWl0VGFpbENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmMuZ2V0KCksIE5vRXhwZWN0
ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVu
ZCgpKTsKKyAgICBlbHNlCisgICAgICAgIHJldCA9IGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5W
YWx1ZS5nZXQoKSwgZnVuYy5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRz
LCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIGdlbmVyYXRvci5lbWl0
UHJvZmlsZVR5cGUocmV0dXJuVmFsdWUuZ2V0KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7
CiAgICAgcmV0dXJuIHJldDsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIAotUmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCitSZWdpc3RlcklE
KiBGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlIHRhaWxDYWxsTW9kZSkK
IHsKICAgICBFeHBlY3RlZEZ1bmN0aW9uIGV4cGVjdGVkRnVuY3Rpb24gPSBnZW5lcmF0b3IuZXhw
ZWN0ZWRGdW5jdGlvbkZvcklkZW50aWZpZXIobV9pZGVudCk7CiAKQEAgLTczMyw3ICs3MzcsMTEg
QEAgUmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLAogICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoY2Fs
bEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7CiAgICAgICAgIC8vIFRo
aXMgcGFzc2VzIE5vRXhwZWN0ZWRGdW5jdGlvbiBiZWNhdXNlIHdlIGV4cGVjdCB0aGF0IGlmIHRo
ZSBmdW5jdGlvbiBpcyBpbiBhCiAgICAgICAgIC8vIGxvY2FsIHZhcmlhYmxlLCB0aGVuIGl0J3Mg
bm90IG9uZSBvZiBvdXIgYnVpbHQtaW4gY29uc3RydWN0b3JzLgotICAgICAgICBSZWdpc3RlcklE
KiByZXQgPSBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmMuZ2V0KCks
IE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgp
LCBkaXZvdEVuZCgpKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogcmV0OworICAgICAgICBpZiAodGFp
bENhbGxNb2RlID09IENhbkhhdmVUYWlsQ2FsbHMpCisgICAgICAgICAgICByZXQgPSBnZW5lcmF0
b3IuZW1pdFRhaWxDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jLmdldCgpLCBOb0V4cGVjdGVk
RnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQo
KSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldCA9IGdlbmVyYXRvci5lbWl0Q2FsbChy
ZXR1cm5WYWx1ZS5nZXQoKSwgZnVuYy5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJn
dW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICBnZW5l
cmF0b3IuZW1pdFByb2ZpbGVUeXBlKHJldHVyblZhbHVlLmdldCgpLCBkaXZvdFN0YXJ0KCksIGRp
dm90RW5kKCkpOwogICAgICAgICByZXR1cm4gcmV0OwogICAgIH0KQEAgLTc0OSwxNCArNzU3LDE4
IEBAIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZXNvbHZl
U2NvcGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgdmFyKSk7CiAgICAgZ2VuZXJhdG9y
LmVtaXRHZXRGcm9tU2NvcGUoZnVuYy5nZXQoKSwgY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIo
KSwgdmFyLCBUaHJvd0lmTm90Rm91bmQpOwogICAgIGdlbmVyYXRvci5lbWl0VERaQ2hlY2tJZk5l
Y2Vzc2FyeSh2YXIsIGZ1bmMuZ2V0KCksIG51bGxwdHIpOwotICAgIFJlZ2lzdGVySUQqIHJldCA9
IGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgZnVuYy5nZXQoKSwgZXhwZWN0
ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVu
ZCgpKTsKKyAgICBSZWdpc3RlcklEKiByZXQ7CisgICAgaWYgKHRhaWxDYWxsTW9kZSA9PSBDYW5I
YXZlVGFpbENhbGxzKQorICAgICAgICByZXQgPSBnZW5lcmF0b3IuZW1pdFRhaWxDYWxsKHJldHVy
blZhbHVlLmdldCgpLCBmdW5jLmdldCgpLCBleHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRz
LCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgIGVsc2UKKyAgICAgICAg
cmV0ID0gZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jLmdldCgpLCBl
eHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRp
dm90RW5kKCkpOwogICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocmV0dXJuVmFsdWUuZ2V0
KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIAogLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEJ5dGVjb2RlSW50cmluc2ljTm9kZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50
cmluc2ljTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFp
bENhbGxNb2RlKQogewogICAgIHJldHVybiAodGhpcy0+Km1fZW1pdHRlcikoZ2VuZXJhdG9yLCBk
c3QpOwogfQpAQCAtNzg2LDcgKzc5OCw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2lj
Tm9kZTo6ZW1pdF9pbnRyaW5zaWNfdG9TdHJpbmcoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlCiAKIC8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZSAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlZ2lzdGVySUQqIEZ1bmN0aW9u
Q2FsbEJyYWNrZXROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxsQnJhY2tldE5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBk
c3QsIFRhaWxDYWxsTW9kZSB0YWlsQ2FsbE1vZGUpCiB7CiAgICAgYm9vbCBiYXNlSXNTdXBlciA9
IG1fYmFzZS0+aXNTdXBlck5vZGUoKTsKICAgICBib29sIHN1YnNjcmlwdElzU3RyaW5nID0gbV9z
dWJzY3JpcHQtPmlzU3RyaW5nKCk7CkBAIC04MTcsMTQgKzgyOSwxOCBAQCBSZWdpc3RlcklEKiBG
dW5jdGlvbkNhbGxCcmFja2V0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsCiAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRoaXNS
ZWdpc3RlcigpLCBnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCkpOwogICAgIGVsc2UKICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGJhc2UuZ2V0
KCkpOwotICAgIFJlZ2lzdGVySUQqIHJldCA9IGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1
ZS5nZXQoKSwgZnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50
cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICBSZWdpc3RlcklEKiBy
ZXQ7CisgICAgaWYgKHRhaWxDYWxsTW9kZSA9PSBDYW5IYXZlVGFpbENhbGxzKQorICAgICAgICBy
ZXQgPSBnZW5lcmF0b3IuZW1pdFRhaWxDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlvbi5n
ZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0
YXJ0KCksIGRpdm90RW5kKCkpOworICAgIGVsc2UKKyAgICAgICAgcmV0ID0gZ2VuZXJhdG9yLmVt
aXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0
aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwog
ICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocmV0dXJuVmFsdWUuZ2V0KCksIGRpdm90U3Rh
cnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIAogLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9uQ2FsbERvdE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogCi1SZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQor
UmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlIHRhaWxDYWxs
TW9kZSkKIHsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZnVuY3Rpb24gPSBnZW5lcmF0b3IudGVt
cERlc3RpbmF0aW9uKGRzdCk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVyblZhbHVlID0g
Z2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCBmdW5jdGlvbi5nZXQoKSk7CkBAIC04MzYs
MTIgKzg1MiwxNiBAQCBSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaQogICAgICAgICBnZW5lcmF0b3Iu
ZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgbV9iYXNlKTsKICAgICBnZW5l
cmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHN1YmV4cHJlc3Npb25EaXZvdCgpLCBzdWJleHByZXNz
aW9uU3RhcnQoKSwgc3ViZXhwcmVzc2lvbkVuZCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdEdldEJ5
SWQoZnVuY3Rpb24uZ2V0KCksIGJhc2VJc1N1cGVyID8gZW1pdFN1cGVyQmFzZUZvckNhbGxlZShn
ZW5lcmF0b3IpIDogY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgbV9pZGVudCk7Ci0gICAg
UmVnaXN0ZXJJRCogcmV0ID0gZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBm
dW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgp
LCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgIFJlZ2lzdGVySUQqIHJldDsKKyAgICBp
ZiAodGFpbENhbGxNb2RlID09IENhbkhhdmVUYWlsQ2FsbHMpCisgICAgICAgIHJldCA9IGdlbmVy
YXRvci5lbWl0VGFpbENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0aW9uLmdldCgpLCBOb0V4
cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2
b3RFbmQoKSk7CisgICAgZWxzZQorICAgICAgICByZXQgPSBnZW5lcmF0b3IuZW1pdENhbGwocmV0
dXJuVmFsdWUuZ2V0KCksIGZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxB
cmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgZ2VuZXJh
dG9yLmVtaXRQcm9maWxlVHlwZShyZXR1cm5WYWx1ZS5nZXQoKSwgZGl2b3RTdGFydCgpLCBkaXZv
dEVuZCgpKTsKICAgICByZXR1cm4gcmV0OwogfQogCi1SZWdpc3RlcklEKiBDYWxsRnVuY3Rpb25D
YWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVySUQqIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBU
YWlsQ2FsbE1vZGUgdGFpbENhbGxNb2RlKQogewogICAgIFJlZlB0cjxMYWJlbD4gcmVhbENhbGwg
PSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBSZWZQdHI8TGFiZWw+IGVuZCA9IGdlbmVyYXRv
ci5uZXdMYWJlbCgpOwpAQCAtODY1LDcgKzg4NSwxMCBAQCBSZWdpc3RlcklEKiBDYWxsRnVuY3Rp
b25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
CiAgICAgICAgICAgICBhcmd1bWVudHNSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0Tm9kZShzdWJq
ZWN0KTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oc3ByZWFkLT5k
aXZvdCgpLCBzcHJlYWQtPmRpdm90U3RhcnQoKSwgc3ByZWFkLT5kaXZvdEVuZCgpKTsKICAgICAg
ICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdEdl
dEJ5VmFsKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgYXJndW1lbnRzUmVnaXN0ZXIuZ2V0KCks
IGdlbmVyYXRvci5lbWl0TG9hZCgwLCBqc051bWJlcigwKSkpOwotICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRDYWxsVmFyYXJncyhyZXR1cm5WYWx1ZS5nZXQoKSwgYmFzZS5nZXQoKSwgdGhpc1Jl
Z2lzdGVyLmdldCgpLCBhcmd1bWVudHNSZWdpc3Rlci5nZXQoKSwgZ2VuZXJhdG9yLm5ld1RlbXBv
cmFyeSgpLCAxLCBwcm9maWxlSG9va1JlZ2lzdGVyLmdldCgpLCBkaXZvdCgpLCBkaXZvdFN0YXJ0
KCksIGRpdm90RW5kKCkpOworICAgICAgICAgICAgaWYgKHRhaWxDYWxsTW9kZSA9PSBDYW5IYXZl
VGFpbENhbGxzKQorICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0VGFpbENhbGxWYXJhcmdz
KHJldHVyblZhbHVlLmdldCgpLCBiYXNlLmdldCgpLCB0aGlzUmVnaXN0ZXIuZ2V0KCksIGFyZ3Vt
ZW50c1JlZ2lzdGVyLmdldCgpLCBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIDEsIHByb2ZpbGVI
b29rUmVnaXN0ZXIuZ2V0KCksIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsVmFyYXJn
cyhyZXR1cm5WYWx1ZS5nZXQoKSwgYmFzZS5nZXQoKSwgdGhpc1JlZ2lzdGVyLmdldCgpLCBhcmd1
bWVudHNSZWdpc3Rlci5nZXQoKSwgZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCAxLCBwcm9maWxl
SG9va1JlZ2lzdGVyLmdldCgpLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwog
ICAgICAgICB9IGVsc2UgaWYgKG1fYXJncy0+bV9saXN0Tm9kZSAmJiBtX2FyZ3MtPm1fbGlzdE5v
ZGUtPm1fZXhwcikgewogICAgICAgICAgICAgQXJndW1lbnRMaXN0Tm9kZSogb2xkTGlzdCA9IG1f
YXJncy0+bV9saXN0Tm9kZTsKICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG1fYXJn
cy0+bV9saXN0Tm9kZS0+bV9uZXh0OwpAQCAtODczLDEzICs4OTYsMTkgQEAgUmVnaXN0ZXJJRCog
Q2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLAogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9
IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2Uu
Z2V0KCkpOwogICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRv
ciwgbV9hcmdzKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1lbnRz
LnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0LT5tX2V4cHIpOwotICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0
ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVu
ZCgpKTsKKyAgICAgICAgICAgIGlmICh0YWlsQ2FsbE1vZGUgPT0gQ2FuSGF2ZVRhaWxDYWxscykK
KyAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFRhaWxDYWxsKHJldHVyblZhbHVlLmdldCgp
LCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywg
ZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxG
dW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgp
LCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3RO
b2RlID0gb2xkTGlzdDsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBE
ZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKICAgICAgICAgICAgIENhbGxBcmd1bWVudHMg
Y2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CiAgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdExvYWQoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7Ci0g
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5j
dGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBk
aXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICAgICAgaWYgKHRhaWxDYWxsTW9kZSA9
PSBDYW5IYXZlVGFpbENhbGxzKQorICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0VGFpbENh
bGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0
aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1
cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNh
bGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAg
IH0KICAgICB9CiAgICAgaWYgKGVtaXRDYWxsQ2hlY2spIHsKQEAgLTg4OCw3ICs5MTcsMTAgQEAg
UmVnaXN0ZXJJRCogQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLAogICAgICAgICB7CiAgICAgICAgICAgICBDYWxsQXJndW1l
bnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGJhc2UuZ2V0KCkpOwot
ICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlv
bi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZv
dFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICAgICAgaWYgKHRhaWxDYWxsTW9kZSA9PSBD
YW5IYXZlVGFpbENhbGxzKQorICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0VGFpbENhbGwo
cmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNh
bGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVl
LmdldCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRz
LCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgICAgICB9CiAgICAgICAg
IGdlbmVyYXRvci5lbWl0TGFiZWwoZW5kLmdldCgpKTsKICAgICB9CkBAIC05MDIsNyArOTM0LDcg
QEAgc3RhdGljIGJvb2wgYXJlVHJpdmlhbEFwcGx5QXJndW1lbnRzKEFyZ3VtZW50c05vZGUqIGFy
Z3MpCiAgICAgICAgIHx8ICghYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX25leHQgJiYgYXJn
cy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX2V4cHItPmlzU2ltcGxlQXJyYXkoKSk7CiB9CiAKLVJl
Z2lzdGVySUQqIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVySUQqIEFwcGx5
RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlIHRhaWxDYWxsTW9kZSkKIHsKICAg
ICAvLyBBIGZldyBzaW1wbGUgY2FzZXMgY2FuIGJlIHRyaXZpYWxseSBoYW5kbGVkIGFzIG9yZGlu
YXJ5IGZ1bmN0aW9uIGNhbGxzLgogICAgIC8vIGZ1bmN0aW9uLmFwcGx5KCksIGZ1bmN0aW9uLmFw
cGx5KGFyZykgLT4gaWRlbnRpY2FsIHRvIGZ1bmN0aW9uLmNhbGwKQEAgLTk1MSw3ICs5ODMsMTAg
QEAgUmVnaXN0ZXJJRCogQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwKICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRMYWJlbChlbmQuZ2V0KCkpOwogICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRFbnVtZXJhdGlvbih0aGlzLCBzcHJlYWQtPmV4cHJlc3Npb24oKSwg
ZXh0cmFjdG9yKTsKLSAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGxWYXJhcmdzKHJl
dHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIHRoaXNSZWdpc3Rlci5nZXQoKSwg
YXJndW1lbnRzUmVnaXN0ZXIuZ2V0KCksIGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgMCwgcHJv
ZmlsZUhvb2tSZWdpc3Rlci5nZXQoKSwgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgp
KTsKKyAgICAgICAgICAgICAgICBpZiAodGFpbENhbGxNb2RlID09IENhbkhhdmVUYWlsQ2FsbHMp
CisgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0VGFpbENhbGxWYXJhcmdzKHJldHVy
blZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIHRoaXNSZWdpc3Rlci5nZXQoKSwgYXJn
dW1lbnRzUmVnaXN0ZXIuZ2V0KCksIGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgMCwgcHJvZmls
ZUhvb2tSZWdpc3Rlci5nZXQoKSwgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsK
KyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
Q2FsbFZhcmFyZ3MocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlvbi5nZXQoKSwgdGhpc1Jl
Z2lzdGVyLmdldCgpLCBhcmd1bWVudHNSZWdpc3Rlci5nZXQoKSwgZ2VuZXJhdG9yLm5ld1RlbXBv
cmFyeSgpLCAwLCBwcm9maWxlSG9va1JlZ2lzdGVyLmdldCgpLCBkaXZvdCgpLCBkaXZvdFN0YXJ0
KCksIGRpdm90RW5kKCkpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChtX2FyZ3MtPm1fbGlzdE5v
ZGUtPm1fbmV4dCkgewogICAgICAgICAgICAgICAgIEFTU0VSVChtX2FyZ3MtPm1fbGlzdE5vZGUt
Pm1fbmV4dC0+bV9leHByLT5pc1NpbXBsZUFycmF5KCkpOwogICAgICAgICAgICAgICAgIEFTU0VS
VCghbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fbmV4dCk7CkBAIC05NTksMjAgKzk5NCwy
OSBAQCBSZWdpc3RlcklEKiBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLAogICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBE
ZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKICAgICAgICAgICAgICAgICBDYWxsQXJndW1l
bnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogICAgICAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0LT5t
X2V4cHIpOwotICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5n
ZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVu
dHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgICAgICAgICAg
aWYgKHRhaWxDYWxsTW9kZSA9PSBDYW5IYXZlVGFpbENhbGxzKQorICAgICAgICAgICAgICAgICAg
ICBnZW5lcmF0b3IuZW1pdFRhaWxDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24u
Z2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RT
dGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9u
LmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90
U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0OwogICAg
ICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3Iu
ZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKICAg
ICAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2Fy
Z3MpOwogICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1lbnRzLnRo
aXNSZWdpc3RlcigpLCBvbGRMaXN0LT5tX2V4cHIpOwotICAgICAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVj
dGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RF
bmQoKSk7CisgICAgICAgICAgICAgICAgaWYgKHRhaWxDYWxsTW9kZSA9PSBDYW5IYXZlVGFpbENh
bGxzKQorICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFRhaWxDYWxsKHJldHVyblZh
bHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFy
Z3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5W
YWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxB
cmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBvbGRMaXN0OwogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdl
bmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0
KCkpOwogICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwg
bV9hcmdzKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRzLnRo
aXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVu
Y3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7
CisgICAgICAgICAgICBpZiAodGFpbENhbGxNb2RlID09IENhbkhhdmVUYWlsQ2FsbHMpCisgICAg
ICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRUYWlsQ2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVh
bEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90
KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rp
b24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2
b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAg
IEFTU0VSVChtX2FyZ3MtPm1fbGlzdE5vZGUgJiYgbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQp
OwpAQCAtOTkwLDE0ICsxMDM0LDIwIEBAIFJlZ2lzdGVySUQqIEFwcGx5RnVuY3Rpb25DYWxsRG90
Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsCiAgICAgICAg
IHdoaWxlICgoYXJncyA9IGFyZ3MtPm1fbmV4dCkpCiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1p
dE5vZGUoYXJncy0+bV9leHByKTsKIAotICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGxWYXJhcmdz
KHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIHRoaXNSZWdpc3Rlci5nZXQo
KSwgYXJnc1JlZ2lzdGVyLmdldCgpLCBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIDAsIHByb2Zp
bGVIb29rUmVnaXN0ZXIuZ2V0KCksIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7
CisgICAgICAgIGlmICh0YWlsQ2FsbE1vZGUgPT0gQ2FuSGF2ZVRhaWxDYWxscykKKyAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0VGFpbENhbGxWYXJhcmdzKHJldHVyblZhbHVlLmdldCgpLCByZWFs
RnVuY3Rpb24uZ2V0KCksIHRoaXNSZWdpc3Rlci5nZXQoKSwgYXJnc1JlZ2lzdGVyLmdldCgpLCBn
ZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIDAsIHByb2ZpbGVIb29rUmVnaXN0ZXIuZ2V0KCksIGRp
dm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0Q2FsbFZhcmFyZ3MocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5j
dGlvbi5nZXQoKSwgdGhpc1JlZ2lzdGVyLmdldCgpLCBhcmdzUmVnaXN0ZXIuZ2V0KCksIGdlbmVy
YXRvci5uZXdUZW1wb3JhcnkoKSwgMCwgcHJvZmlsZUhvb2tSZWdpc3Rlci5nZXQoKSwgZGl2b3Qo
KSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICB9CiAgICAgaWYgKGVtaXRDYWxsQ2hl
Y2spIHsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGVuZC5nZXQoKSk7CiAgICAgICAgIGdl
bmVyYXRvci5lbWl0TGFiZWwocmVhbENhbGwuZ2V0KCkpOwogICAgICAgICBDYWxsQXJndW1lbnRz
IGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogICAgICAgICBnZW5lcmF0b3IuZW1p
dE1vdmUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgYmFzZS5nZXQoKSk7Ci0gICAgICAg
IGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgZnVuY3Rpb24uZ2V0KCksIE5v
RXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBk
aXZvdEVuZCgpKTsKKyAgICAgICAgaWYgKHRhaWxDYWxsTW9kZSA9PSBDYW5IYXZlVGFpbENhbGxz
KQorICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRUYWlsQ2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwg
ZnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3Qo
KSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9F
eHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRp
dm90RW5kKCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGVuZC5nZXQoKSk7CiAgICAg
fQogICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocmV0dXJuVmFsdWUuZ2V0KCksIGRpdm90
U3RhcnQoKSwgZGl2b3RFbmQoKSk7CkBAIC0xMTAzLDcgKzExNTMsNyBAQCBSZWdpc3RlcklEKiBQ
b3N0Zml4Tm9kZTo6ZW1pdERvdChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklEKiBkc3QpCiAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVk
KGRzdCwgb2xkVmFsdWUpOwogfQogCi1SZWdpc3RlcklEKiBQb3N0Zml4Tm9kZTo6ZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK1JlZ2lz
dGVySUQqIFBvc3RmaXhOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAgaWYgKG1fZXhwci0+
aXNSZXNvbHZlTm9kZSgpKQogICAgICAgICByZXR1cm4gZW1pdFJlc29sdmUoZ2VuZXJhdG9yLCBk
c3QpOwpAQCAtMTEyMSw3ICsxMTcxLDcgQEAgUmVnaXN0ZXJJRCogUG9zdGZpeE5vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKgogCiAvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRGVsZXRlUmVzb2x2ZU5vZGUgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUmVnaXN0ZXJJRCogRGVsZXRlUmVzb2x2ZU5v
ZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklE
KiBkc3QpCitSZWdpc3RlcklEKiBEZWxldGVSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlKQog
ewogICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShtX2lkZW50KTsKICAgICBp
ZiAodmFyLmxvY2FsKCkpIHsKQEAgLTExMzcsNyArMTE4Nyw3IEBAIFJlZ2lzdGVySUQqIERlbGV0
ZVJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBEZWxldGVCcmFja2V0
Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1SZWdpc3RlcklEKiBE
ZWxldGVCcmFja2V0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVySUQqIERlbGV0ZUJyYWNrZXROb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBU
YWlsQ2FsbE1vZGUpCiB7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHIwID0gZ2VuZXJhdG9yLmVt
aXROb2RlKG1fYmFzZSk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHIxID0gZ2VuZXJhdG9yLmVt
aXROb2RlKG1fc3Vic2NyaXB0KTsKQEAgLTExNTAsNyArMTIwMCw3IEBAIFJlZ2lzdGVySUQqIERl
bGV0ZUJyYWNrZXROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBEZWxldGVEb3RO
b2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlZ2lzdGVySUQqIERl
bGV0ZURvdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlcklEKiBkc3QpCitSZWdpc3RlcklEKiBEZWxldGVEb3ROb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1v
ZGUpCiB7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHIwID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1f
YmFzZSk7CiAKQEAgLTExNjIsNyArMTIxMiw3IEBAIFJlZ2lzdGVySUQqIERlbGV0ZURvdE5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklECiAK
IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBEZWxldGVWYWx1ZU5vZGUgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUmVnaXN0ZXJJRCogRGVsZXRlVmFsdWVO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCogZHN0KQorUmVnaXN0ZXJJRCogRGVsZXRlVmFsdWVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUpCiB7
CiAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCksIG1fZXhw
cik7CiAKQEAgLTExNzIsNyArMTIyMiw3IEBAIFJlZ2lzdGVySUQqIERlbGV0ZVZhbHVlTm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVyCiAKIC8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBWb2lkTm9kZSAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlZ2lzdGVySUQqIFZvaWROb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0
ZXJJRCogVm9pZE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSkKIHsKICAgICBpZiAoZHN0ID09IGdlbmVy
YXRvci5pZ25vcmVkUmVzdWx0KCkpIHsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGdlbmVy
YXRvci5pZ25vcmVkUmVzdWx0KCksIG1fZXhwcik7CkBAIC0xMTg0LDcgKzEyMzQsNyBAQCBSZWdp
c3RlcklEKiBWb2lkTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqIGRzdAogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
VHlwZU9mUmVzb2x2ZU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAot
UmVnaXN0ZXJJRCogVHlwZU9mUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCitSZWdpc3RlcklEKiBUeXBlT2ZSZXNv
bHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqIGRzdCwgVGFpbENhbGxNb2RlKQogewogICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRv
ci52YXJpYWJsZShtX2lkZW50KTsKICAgICBpZiAoUmVnaXN0ZXJJRCogbG9jYWwgPSB2YXIubG9j
YWwoKSkgewpAQCAtMTIwNCw3ICsxMjU0LDcgQEAgUmVnaXN0ZXJJRCogVHlwZU9mUmVzb2x2ZU5v
ZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3QKIAog
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFR5cGVPZlZhbHVlTm9kZSAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1SZWdpc3RlcklEKiBUeXBlT2ZWYWx1ZU5v
ZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklE
KiBkc3QpCitSZWdpc3RlcklEKiBUeXBlT2ZWYWx1ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSkKIHsK
ICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpIHsKICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXROb2RlKGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCksIG1fZXhwcik7CkBAIC0x
Mjk4LDcgKzEzNDgsNyBAQCBSZWdpc3RlcklEKiBQcmVmaXhOb2RlOjplbWl0RG90KEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKICAgICByZXR1cm4gZ2VuZXJh
dG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZHN0LCBwcm9wRHN0LmdldCgpKTsKIH0KIAot
UmVnaXN0ZXJJRCogUHJlZml4Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVySUQqIFByZWZpeE5vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRh
aWxDYWxsTW9kZSkKIHsKICAgICBpZiAobV9leHByLT5pc1Jlc29sdmVOb2RlKCkpCiAgICAgICAg
IHJldHVybiBlbWl0UmVzb2x2ZShnZW5lcmF0b3IsIGRzdCk7CkBAIC0xMzE2LDcgKzEzNjYsNyBA
QCBSZWdpc3RlcklEKiBQcmVmaXhOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZAogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0gVW5hcnkgT3BlcmF0aW9uIE5vZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAKLVJlZ2lzdGVySUQqIFVuYXJ5T3BOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogVW5hcnlP
cE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklEKiBkc3QsIFRhaWxDYWxsTW9kZSkKIHsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3JjID0g
Z2VuZXJhdG9yLmVtaXROb2RlKG1fZXhwcik7CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9u
SW5mbyhwb3NpdGlvbigpLCBwb3NpdGlvbigpLCBwb3NpdGlvbigpKTsKQEAgLTEzMjUsNyArMTM3
NSw3IEBAIFJlZ2lzdGVySUQqIFVuYXJ5T3BOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCoKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tIEJpdHdpc2VOb3ROb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAgCi1SZWdpc3RlcklEKiBCaXR3aXNlTm90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVySUQqIEJpdHdp
c2VOb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNy
YzIgPSBnZW5lcmF0b3IuZW1pdExvYWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBqc051bWJl
cigtMSkpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzcmMxID0gZ2VuZXJhdG9yLmVtaXROb2Rl
KG1fZXhwcik7CkBAIC0xNTE4LDcgKzE1NjgsNyBAQCB2b2lkIEJpbmFyeU9wTm9kZTo6dHJ5Rm9s
ZFRvQnJhbmNoKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFRyaVN0YXRlJiBicmFuYwog
ICAgICAgICBicmFuY2hDb25kaXRpb24gPSB0cmlTdGF0ZSghdmFsdWUucHVyZVRvQm9vbGVhbigp
KTsKIH0KIAotUmVnaXN0ZXJJRCogQmluYXJ5T3BOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogQmluYXJ5
T3BOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0
ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSB0aGlz
LT5vcGNvZGVJRCgpOwogCkBAIC0xNTYyLDcgKzE2MTIsNyBAQCBSZWdpc3RlcklEKiBCaW5hcnlP
cE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklEKgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVJlZ2lzdGVySUQqIEVxdWFsTm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkK
K1JlZ2lzdGVySUQqIEVxdWFsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlKQogewogICAgIGlmIChtX2V4
cHIxLT5pc051bGwoKSB8fCBtX2V4cHIyLT5pc051bGwoKSkgewogICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gc3JjID0gZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpOwpAQCAtMTU4MCw3
ICsxNjMwLDcgQEAgUmVnaXN0ZXJJRCogRXF1YWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHMKICAgICByZXR1cm4gZ2VuZXJhdG9y
LmVtaXRFcXVhbGl0eU9wKG9wX2VxLCBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIHNy
YzEuZ2V0KCkpLCBzcmMxLmdldCgpLCBzcmMyLmdldCgpKTsKIH0KIAotUmVnaXN0ZXJJRCogU3Ry
aWN0RXF1YWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogU3RyaWN0RXF1YWxOb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2Fs
bE1vZGUpCiB7CiAgICAgRXhwcmVzc2lvbk5vZGUqIGxlZnQgPSBtX2V4cHIxOwogICAgIEV4cHJl
c3Npb25Ob2RlKiByaWdodCA9IG1fZXhwcjI7CkBAIC0xNTkyLDcgKzE2NDIsNyBAQCBSZWdpc3Rl
cklEKiBTdHJpY3RFcXVhbE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcgogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEVxdWFsaXR5T3Aob3Bf
c3RyaWN0ZXEsIGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgc3JjMS5nZXQoKSksIHNy
YzEuZ2V0KCksIHNyYzIuZ2V0KCkpOwogfQogCi1SZWdpc3RlcklEKiBUaHJvd2FibGVCaW5hcnlP
cE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklEKiBkc3QpCitSZWdpc3RlcklEKiBUaHJvd2FibGVCaW5hcnlPcE5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxs
TW9kZSkKIHsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3JjMSA9IGdlbmVyYXRvci5lbWl0Tm9k
ZUZvckxlZnRIYW5kU2lkZShtX2V4cHIxLCBtX3JpZ2h0SGFzQXNzaWdubWVudHMsIG1fZXhwcjIt
PmlzUHVyZShnZW5lcmF0b3IpKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3JjMiA9IGdlbmVy
YXRvci5lbWl0Tm9kZShtX2V4cHIyKTsKQEAgLTE2MDAsNyArMTY1MCw3IEBAIFJlZ2lzdGVySUQq
IFRocm93YWJsZUJpbmFyeU9wTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlCiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0QmluYXJ5T3Aob3Bjb2RlSUQo
KSwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCBzcmMxLmdldCgpKSwgc3JjMS5nZXQo
KSwgc3JjMi5nZXQoKSwgT3BlcmFuZFR5cGVzKG1fZXhwcjEtPnJlc3VsdERlc2NyaXB0b3IoKSwg
bV9leHByMi0+cmVzdWx0RGVzY3JpcHRvcigpKSk7CiB9CiAKLVJlZ2lzdGVySUQqIEluc3RhbmNl
T2ZOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0
ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogSW5zdGFuY2VPZk5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSkK
IHsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3JjMSA9IGdlbmVyYXRvci5lbWl0Tm9kZUZvckxl
ZnRIYW5kU2lkZShtX2V4cHIxLCBtX3JpZ2h0SGFzQXNzaWdubWVudHMsIG1fZXhwcjItPmlzUHVy
ZShnZW5lcmF0b3IpKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3JjMiA9IGdlbmVyYXRvci5l
bWl0Tm9kZShtX2V4cHIyKTsKQEAgLTE2MjIsNyArMTY3Miw3IEBAIFJlZ2lzdGVySUQqIEluc3Rh
bmNlT2ZOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBMb2dpY2FsT3BOb2Rl
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUmVnaXN0ZXJJRCogTG9naWNhbE9wTm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
IGRzdCkKK1JlZ2lzdGVySUQqIExvZ2ljYWxPcE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSB0YWlsQ2Fs
bE1vZGUpCiB7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRlbXAgPSBnZW5lcmF0b3IudGVtcERl
c3RpbmF0aW9uKGRzdCk7CiAgICAgUmVmUHRyPExhYmVsPiB0YXJnZXQgPSBnZW5lcmF0b3IubmV3
TGFiZWwoKTsKQEAgLTE2MzIsNyArMTY4Miw3IEBAIFJlZ2lzdGVySUQqIExvZ2ljYWxPcE5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklECiAg
ICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmRmFsc2UodGVtcC5nZXQoKSwgdGFyZ2V0LmdldCgp
KTsKICAgICBlbHNlCiAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1ZSh0ZW1wLmdldCgp
LCB0YXJnZXQuZ2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0Tm9kZSh0ZW1wLmdldCgpLCBtX2V4
cHIyKTsKKyAgICBnZW5lcmF0b3IuZW1pdE5vZGUodGVtcC5nZXQoKSwgbV9leHByMiwgdGFpbENh
bGxNb2RlKTsKICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHRhcmdldC5nZXQoKSk7CiAKICAgICBy
ZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZHN0LCB0ZW1wLmdldCgp
KTsKQEAgLTE2NTIsNyArMTcwMiw3IEBAIHZvaWQgTG9naWNhbE9wTm9kZTo6ZW1pdEJ5dGVjb2Rl
SW5Db25kaXRpb25Db250ZXh0KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsCiAKIC8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDb25kaXRpb25hbE5vZGUgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlZ2lzdGVySUQqIENvbmRpdGlvbmFsTm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK1Jl
Z2lzdGVySUQqIENvbmRpdGlvbmFsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlIHRhaWxDYWxsTW9kZSkK
IHsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV3RHN0ID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGlu
YXRpb24oZHN0KTsKICAgICBSZWZQdHI8TGFiZWw+IGJlZm9yZUVsc2UgPSBnZW5lcmF0b3IubmV3
TGFiZWwoKTsKQEAgLTE2NjMsMTIgKzE3MTMsMTIgQEAgUmVnaXN0ZXJJRCogQ29uZGl0aW9uYWxO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXIK
ICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGJlZm9yZVRoZW4uZ2V0KCkpOwogCiAgICAgZ2VuZXJh
dG9yLmVtaXRQcm9maWxlQ29udHJvbEZsb3cobV9leHByMS0+c3RhcnRPZmZzZXQoKSk7Ci0gICAg
Z2VuZXJhdG9yLmVtaXROb2RlKG5ld0RzdC5nZXQoKSwgbV9leHByMSk7CisgICAgZ2VuZXJhdG9y
LmVtaXROb2RlKG5ld0RzdC5nZXQoKSwgbV9leHByMSwgdGFpbENhbGxNb2RlKTsKICAgICBnZW5l
cmF0b3IuZW1pdEp1bXAoYWZ0ZXJFbHNlLmdldCgpKTsKIAogICAgIGdlbmVyYXRvci5lbWl0TGFi
ZWwoYmVmb3JlRWxzZS5nZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlQ29udHJvbEZs
b3cobV9leHByMS0+ZW5kT2Zmc2V0KCkgKyAxKTsKLSAgICBnZW5lcmF0b3IuZW1pdE5vZGUobmV3
RHN0LmdldCgpLCBtX2V4cHIyKTsKKyAgICBnZW5lcmF0b3IuZW1pdE5vZGUobmV3RHN0LmdldCgp
LCBtX2V4cHIyLCB0YWlsQ2FsbE1vZGUpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChhZnRl
ckVsc2UuZ2V0KCkpOwogCkBAIC0xNzM2LDcgKzE3ODYsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElO
RSBSZWdpc3RlcklEKiBlbWl0UmVhZE1vZGlmeUFzc2lnbm1lbnQoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVJlZ2lzdGVySUQqIFJlYWRNb2RpZnlSZXNv
bHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqIGRzdCkKK1JlZ2lzdGVySUQqIFJlYWRNb2RpZnlSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENh
bGxNb2RlKQogewogICAgIEpTVGV4dFBvc2l0aW9uIG5ld0Rpdm90ID0gZGl2b3RTdGFydCgpICsg
bV9pZGVudC5sZW5ndGgoKTsKICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUo
bV9pZGVudCk7CkBAIC0xNzg1LDcgKzE4MzUsNyBAQCBSZWdpc3RlcklEKiBSZWFkTW9kaWZ5UmVz
b2x2ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZQog
CiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQXNzaWduUmVzb2x2ZU5vZGUgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUmVnaXN0ZXJJRCogQXNzaWduUmVz
b2x2ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklEKiBkc3QpCitSZWdpc3RlcklEKiBBc3NpZ25SZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxN
b2RlKQogewogICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShtX2lkZW50KTsK
ICAgICBib29sIGlzUmVhZE9ubHkgPSB2YXIuaXNSZWFkT25seSgpICYmIG1fYXNzaWdubWVudENv
bnRleHQgIT0gQXNzaWdubWVudENvbnRleHQ6OkNvbnN0RGVjbGFyYXRpb25TdGF0ZW1lbnQ7CkBA
IC0xODQ1LDcgKzE4OTUsNyBAQCBSZWdpc3RlcklEKiBBc3NpZ25SZXNvbHZlTm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdAogCiAvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQXNzaWduRG90Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogCi1SZWdpc3RlcklEKiBBc3NpZ25Eb3ROb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0
ZXJJRCogQXNzaWduRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlKQogewogICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlRm9yTGVmdEhhbmRTaWRlKG1fYmFzZSwg
bV9yaWdodEhhc0Fzc2lnbm1lbnRzLCBtX3JpZ2h0LT5pc1B1cmUoZ2VuZXJhdG9yKSk7CiAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmRlc3RpbmF0aW9uRm9yQXNzaWdu
UmVzdWx0KGRzdCk7CkBAIC0xODU5LDcgKzE5MDksNyBAQCBSZWdpc3RlcklEKiBBc3NpZ25Eb3RO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RAogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUmVhZE1vZGlmeURvdE5vZGUg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUmVnaXN0ZXJJRCogUmVhZE1v
ZGlmeURvdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlcklEKiBkc3QpCitSZWdpc3RlcklEKiBSZWFkTW9kaWZ5RG90Tm9kZTo6ZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENh
bGxNb2RlKQogewogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXRO
b2RlRm9yTGVmdEhhbmRTaWRlKG1fYmFzZSwgbV9yaWdodEhhc0Fzc2lnbm1lbnRzLCBtX3JpZ2h0
LT5pc1B1cmUoZ2VuZXJhdG9yKSk7CiAKQEAgLTE4NzUsMTQgKzE5MjUsMTQgQEAgUmVnaXN0ZXJJ
RCogUmVhZE1vZGlmeURvdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3QKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEFzc2ln
bkVycm9yTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1SZWdpc3Rl
cklEKiBBc3NpZ25FcnJvck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKikKK1JlZ2lzdGVySUQqIEFzc2lnbkVycm9yTm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqLCBUYWlsQ2Fs
bE1vZGUpCiB7CiAgICAgcmV0dXJuIGVtaXRUaHJvd1JlZmVyZW5jZUVycm9yKGdlbmVyYXRvciwg
QVNDSUlMaXRlcmFsKCJMZWZ0IHNpZGUgb2YgYXNzaWdubWVudCBpcyBub3QgYSByZWZlcmVuY2Uu
IikpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQXNzaWduQnJhY2tl
dE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUmVnaXN0ZXJJRCog
QXNzaWduQnJhY2tldE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBkc3QpCitSZWdpc3RlcklEKiBBc3NpZ25CcmFja2V0Tm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwg
VGFpbENhbGxNb2RlKQogewogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9y
LmVtaXROb2RlRm9yTGVmdEhhbmRTaWRlKG1fYmFzZSwgbV9zdWJzY3JpcHRIYXNBc3NpZ25tZW50
cyB8fCBtX3JpZ2h0SGFzQXNzaWdubWVudHMsIG1fc3Vic2NyaXB0LT5pc1B1cmUoZ2VuZXJhdG9y
KSAmJiBtX3JpZ2h0LT5pc1B1cmUoZ2VuZXJhdG9yKSk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHByb3BlcnR5ID0gZ2VuZXJhdG9yLmVtaXROb2RlRm9yTGVmdEhhbmRTaWRlKG1fc3Vic2NyaXB0
LCBtX3JpZ2h0SGFzQXNzaWdubWVudHMsIG1fcmlnaHQtPmlzUHVyZShnZW5lcmF0b3IpKTsKQEAg
LTE5MDMsNyArMTk1Myw3IEBAIFJlZ2lzdGVySUQqIEFzc2lnbkJyYWNrZXROb2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0CiAKIC8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBSZWFkTW9kaWZ5QnJhY2tldE5vZGUgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUmVnaXN0ZXJJRCogUmVhZE1vZGlmeUJyYWNrZXRO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCogZHN0KQorUmVnaXN0ZXJJRCogUmVhZE1vZGlmeUJyYWNrZXROb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1v
ZGUpCiB7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGVG
b3JMZWZ0SGFuZFNpZGUobV9iYXNlLCBtX3N1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzIHx8IG1fcmln
aHRIYXNBc3NpZ25tZW50cywgbV9zdWJzY3JpcHQtPmlzUHVyZShnZW5lcmF0b3IpICYmIG1fcmln
aHQtPmlzUHVyZShnZW5lcmF0b3IpKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvcGVydHkg
PSBnZW5lcmF0b3IuZW1pdE5vZGVGb3JMZWZ0SGFuZFNpZGUobV9zdWJzY3JpcHQsIG1fcmlnaHRI
YXNBc3NpZ25tZW50cywgbV9yaWdodC0+aXNQdXJlKGdlbmVyYXRvcikpOwpAQCAtMTkyMSwxMiAr
MTk3MSwxMiBAQCBSZWdpc3RlcklEKiBSZWFkTW9kaWZ5QnJhY2tldE5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZQogCiAvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gQ29tbWFOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogCi1SZWdpc3RlcklEKiBDb21tYU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCitSZWdpc3RlcklEKiBDb21tYU5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBk
c3QsIFRhaWxDYWxsTW9kZSB0YWlsQ2FsbE1vZGUpCiB7CiAgICAgQ29tbWFOb2RlKiBub2RlID0g
dGhpczsKICAgICBmb3IgKDsgbm9kZSAmJiBub2RlLT5uZXh0KCk7IG5vZGUgPSBub2RlLT5uZXh0
KCkpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgp
LCBub2RlLT5tX2V4cHIpOwotICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBub2Rl
LT5tX2V4cHIpOworICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBub2RlLT5tX2V4
cHIsIHRhaWxDYWxsTW9kZSk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSBTb3VyY2VFbGVtZW50cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xOTM3
LDEwICsxOTg3LDEwIEBAIGlubGluZSBTdGF0ZW1lbnROb2RlKiBTb3VyY2VFbGVtZW50czo6bGFz
dFN0YXRlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fdGFpbDsKIH0KIAotaW5saW5lIHZvaWQg
U291cmNlRWxlbWVudHM6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiBkc3QpCitpbmxpbmUgdm9pZCBTb3VyY2VFbGVtZW50czo6ZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENh
bGxNb2RlIHRhaWxDYWxsTW9kZSkKIHsKICAgICBmb3IgKFN0YXRlbWVudE5vZGUqIHN0YXRlbWVu
dCA9IG1faGVhZDsgc3RhdGVtZW50OyBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnQtPm5leHQoKSkKLSAg
ICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgc3RhdGVtZW50KTsKKyAgICAgICAgZ2VuZXJh
dG9yLmVtaXROb2RlKGRzdCwgc3RhdGVtZW50LCB0YWlsQ2FsbE1vZGUpOwogfQogCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQmxvY2tOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQpAQCAtMTk1NSwzMiArMjAwNSwzMiBAQCBTdGF0ZW1lbnROb2RlKiBC
bG9ja05vZGU6OnNpbmdsZVN0YXRlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc3RhdGVtZW50
cyA/IG1fc3RhdGVtZW50cy0+c2luZ2xlU3RhdGVtZW50KCkgOiAwOwogfQogCi12b2lkIEJsb2Nr
Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
SUQqIGRzdCkKK3ZvaWQgQmxvY2tOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUgdGFpbENhbGxNb2RlKQog
ewogICAgIGlmICghbV9zdGF0ZW1lbnRzKQogICAgICAgICByZXR1cm47CiAgICAgZ2VuZXJhdG9y
LnB1c2hMZXhpY2FsU2NvcGUodGhpcywgdHJ1ZSk7Ci0gICAgbV9zdGF0ZW1lbnRzLT5lbWl0Qnl0
ZWNvZGUoZ2VuZXJhdG9yLCBkc3QpOworICAgIG1fc3RhdGVtZW50cy0+ZW1pdEJ5dGVjb2RlKGdl
bmVyYXRvciwgZHN0LCB0YWlsQ2FsbE1vZGUpOwogICAgIGdlbmVyYXRvci5wb3BMZXhpY2FsU2Nv
cGUodGhpcyk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFbXB0eVN0
YXRlbWVudE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLXZvaWQgRW1wdHlTdGF0
ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCopCit2b2lkIEVtcHR5U3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqLCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAg
Z2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgp
LCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7CiB9CiAKIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSBEZWJ1Z2dlclN0YXRlbWVudE5vZGUgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAKLXZvaWQgRGVidWdnZXJTdGF0ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCit2b2lkIERlYnVnZ2Vy
U3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqLCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soRGlkUmVhY2hCcmVha3BvaW50LCBsYXN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3Rh
cnRPZmZzZXQoKSk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFeHBy
U3RhdGVtZW50Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLXZvaWQgRXhwclN0
YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlcklEKiBkc3QpCit2b2lkIEV4cHJTdGF0ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUp
CiB7CiAgICAgQVNTRVJUKG1fZXhwcik7CiAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2ls
bEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRP
ZmZzZXQoKSk7CkBAIC0xOTg5LDcgKzIwMzksNyBAQCB2b2lkIEV4cHJTdGF0ZW1lbnROb2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZAog
CiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRGVjbGFyYXRpb25TdGF0ZW1lbnQg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi12b2lkIERlY2xhcmF0aW9uU3RhdGVtZW50
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCop
Cit2b2lkIERlY2xhcmF0aW9uU3RhdGVtZW50OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCosIFRhaWxDYWxsTW9kZSkKIHsKICAgICBBU1NFUlQo
bV9leHByKTsKICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVu
dCwgZmlyc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKQEAgLTE5
OTgsNyArMjA0OCw3IEBAIHZvaWQgRGVjbGFyYXRpb25TdGF0ZW1lbnQ6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklECiAKIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSBFbXB0eVZhckV4cHJlc3Npb24gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogCi1SZWdpc3RlcklEKiBFbXB0eVZhckV4cHJlc3Npb246OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKK1JlZ2lzdGVySUQq
IEVtcHR5VmFyRXhwcmVzc2lvbjo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqLCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAgLy8gSXQncyBzYWZlIHRv
IHJldHVybiBudWxsIGhlcmUgYmVjYXVzZSB0aGlzIG5vZGUgd2lsbCBhbHdheXMgYmUgYSBjaGls
ZCBub2RlIG9mIERlY2xhcmF0aW9uU3RhdGVtZW50IHdoaWNoIGlnbm9yZXMgb3VyIHJldHVybiB2
YWx1ZS4KICAgICBpZiAoIWdlbmVyYXRvci52bSgpLT50eXBlUHJvZmlsZXIoKSkKQEAgLTIwMTgs
NyArMjA2OCw3IEBAIFJlZ2lzdGVySUQqIEVtcHR5VmFyRXhwcmVzc2lvbjo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzCiAKIC8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSBFbXB0eUxldEV4cHJlc3Npb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogCi1SZWdpc3RlcklEKiBFbXB0eUxldEV4cHJlc3Npb246OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKK1JlZ2lzdGVySUQqIEVt
cHR5TGV0RXhwcmVzc2lvbjo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqLCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAgLy8gTGV4aWNhbCBkZWNsYXJh
dGlvbnMgbGlrZSAnbGV0JyBtdXN0IG1vdmUgdW5kZWZpbmVkIGludG8gdGhlaXIgdmFyaWFibGVz
IHNvIHdlIGRvbid0CiAgICAgLy8gZ2V0IFREWiBlcnJvcnMgZm9yIHNpdHVhdGlvbnMgbGlrZSB0
aGlzOiBgbGV0IHg7IHg7YApAQCAtMjA3Niw3ICsyMTI2LDcgQEAgYm9vbCBJZkVsc2VOb2RlOjp0
cnlGb2xkQnJlYWtBbmRDb250aW51ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBTdGF0
ZW1lbnQKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgSWZFbHNlTm9kZTo6ZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3ZvaWQg
SWZFbHNlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlIHRhaWxDYWxsTW9kZSkKIHsKICAgICBnZW5lcmF0
b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIHN0YXJ0
T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKICAgICAKQEAgLTIwOTQsNyArMjE0NCw3IEBA
IHZvaWQgSWZFbHNlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqIGRzdCkKICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVDb250cm9sRmxv
dyhtX2lmQmxvY2stPnN0YXJ0T2Zmc2V0KCkpOwogCiAgICAgaWYgKCFkaWRGb2xkSWZCbG9jaykg
ewotICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX2lmQmxvY2spOworICAgICAgICBn
ZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX2lmQmxvY2ssIHRhaWxDYWxsTW9kZSk7CiAgICAgICAg
IGlmIChtX2Vsc2VCbG9jaykKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChhZnRlckVs
c2UuZ2V0KCkpOwogICAgIH0KQEAgLTIxMDMsNyArMjE1Myw3IEBAIHZvaWQgSWZFbHNlTm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRz
dCkKIAogICAgIGlmIChtX2Vsc2VCbG9jaykgewogICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2Zp
bGVDb250cm9sRmxvdyhtX2lmQmxvY2stPmVuZE9mZnNldCgpICsgKG1faWZCbG9jay0+aXNCbG9j
aygpID8gMSA6IDApKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9lbHNlQmxv
Y2spOworICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX2Vsc2VCbG9jaywgdGFpbENh
bGxNb2RlKTsKICAgICB9CiAKICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGFmdGVyRWxzZS5nZXQo
KSk7CkBAIC0yMTEzLDcgKzIxNjMsNyBAQCB2b2lkIElmRWxzZU5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAKIC8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBEb1doaWxlTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAKLXZvaWQgRG9XaGlsZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit2b2lkIERvV2hpbGVOb2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCog
ZHN0LCBUYWlsQ2FsbE1vZGUgdGFpbENhbGxNb2RlKQogewogICAgIExhYmVsU2NvcGVQdHIgc2Nv
cGUgPSBnZW5lcmF0b3IubmV3TGFiZWxTY29wZShMYWJlbFNjb3BlOjpMb29wKTsKIApAQCAtMjEy
Miw3ICsyMTcyLDcgQEAgdm9pZCBEb1doaWxlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKICAgICBnZW5lcmF0b3IuZW1pdExv
b3BIaW50KCk7CiAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1l
bnQsIGxhc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKIAotICAg
IGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fc3RhdGVtZW50KTsKKyAgICBnZW5lcmF0b3IuZW1p
dE5vZGUoZHN0LCBtX3N0YXRlbWVudCwgdGFpbENhbGxNb2RlKTsKIAogICAgIGdlbmVyYXRvci5l
bWl0TGFiZWwoc2NvcGUtPmNvbnRpbnVlVGFyZ2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0RGVi
dWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBsYXN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBs
aW5lU3RhcnRPZmZzZXQoKSk7CkBAIC0yMTMzLDcgKzIxODMsNyBAQCB2b2lkIERvV2hpbGVOb2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCog
ZHN0KQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gV2hpbGVOb2RlIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi12b2lkIFdoaWxlTm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3Zv
aWQgV2hpbGVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUgdGFpbENhbGxNb2RlKQogewogICAgIExhYmVs
U2NvcGVQdHIgc2NvcGUgPSBnZW5lcmF0b3IubmV3TGFiZWxTY29wZShMYWJlbFNjb3BlOjpMb29w
KTsKICAgICBSZWZQdHI8TGFiZWw+IHRvcE9mTG9vcCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwpA
QCAtMjE0NSw3ICsyMTk1LDcgQEAgdm9pZCBXaGlsZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAgICAgZ2VuZXJhdG9yLmVt
aXRMb29wSGludCgpOwogICAgIAogICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZUNvbnRyb2xGbG93
KG1fc3RhdGVtZW50LT5zdGFydE9mZnNldCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0
LCBtX3N0YXRlbWVudCk7CisgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9zdGF0ZW1lbnQs
IHRhaWxDYWxsTW9kZSk7CiAKICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHNjb3BlLT5jb250aW51
ZVRhcmdldCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRl
bWVudCwgZmlyc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKQEAg
LTIxNTksNyArMjIwOSw3IEBAIHZvaWQgV2hpbGVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0gRm9yTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogCi12b2lkIEZvck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit2b2lkIEZvck5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9k
ZSB0YWlsQ2FsbE1vZGUpCiB7CiAgICAgTGFiZWxTY29wZVB0ciBzY29wZSA9IGdlbmVyYXRvci5u
ZXdMYWJlbFNjb3BlKExhYmVsU2NvcGU6Okxvb3ApOwogCkBAIC0yMTc5LDcgKzIyMjksNyBAQCB2
b2lkIEZvck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlcklEKiBkc3QpCiAgICAgZ2VuZXJhdG9yLmVtaXRMb29wSGludCgpOwogICAgIGdlbmVy
YXRvci5lbWl0UHJvZmlsZUNvbnRyb2xGbG93KG1fc3RhdGVtZW50LT5zdGFydE9mZnNldCgpKTsK
IAotICAgIGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fc3RhdGVtZW50KTsKKyAgICBnZW5lcmF0
b3IuZW1pdE5vZGUoZHN0LCBtX3N0YXRlbWVudCwgdGFpbENhbGxNb2RlKTsKIAogICAgIGdlbmVy
YXRvci5lbWl0TGFiZWwoc2NvcGUtPmNvbnRpbnVlVGFyZ2V0KCkpOwogICAgIGdlbmVyYXRvci5l
bWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgc3RhcnRPZmZz
ZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwpAQCAtMjQyOCwxMyArMjQ3OCwxMyBAQCB2b2lkIEZv
ckluTm9kZTo6ZW1pdE11bHRpTG9vcEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqCiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlQ29udHJvbEZsb3cocHJv
ZmlsZXJFbmRPZmZzZXQpOwogfQogCi12b2lkIEZvckluTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3ZvaWQgRm9ySW5Ob2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCog
ZHN0LCBUYWlsQ2FsbE1vZGUpCiB7CiAgICAgdGhpcy0+ZW1pdE11bHRpTG9vcEJ5dGVjb2RlKGdl
bmVyYXRvciwgZHN0KTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZv
ck9mTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLXZvaWQgRm9yT2ZO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCogZHN0KQordm9pZCBGb3JPZk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSkKIHsKICAgICBpZiAoIW1f
bGV4cHItPmlzQXNzaWdubWVudExvY2F0aW9uKCkpIHsKICAgICAgICAgZW1pdFRocm93UmVmZXJl
bmNlRXJyb3IoZ2VuZXJhdG9yLCBBU0NJSUxpdGVyYWwoIkxlZnQgc2lkZSBvZiBmb3Itb2Ygc3Rh
dGVtZW50IGlzIG5vdCBhIHJlZmVyZW5jZS4iKSk7CkBAIC0yNTA0LDcgKzI1NTQsNyBAQCBMYWJl
bCogQ29udGludWVOb2RlOjp0cml2aWFsVGFyZ2V0KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IpCiAgICAgcmV0dXJuIHNjb3BlLT5jb250aW51ZVRhcmdldCgpOwogfQogCi12b2lkIENvbnRp
bnVlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqKQordm9pZCBDb250aW51ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiwgVGFpbENhbGxNb2RlKQogewogICAgIGdlbmVyYXRv
ci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgc3RhcnRP
ZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwogICAgIApAQCAtMjUzMyw3ICsyNTgzLDcgQEAg
TGFiZWwqIEJyZWFrTm9kZTo6dHJpdmlhbFRhcmdldChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yKQogICAgIHJldHVybiBzY29wZS0+YnJlYWtUYXJnZXQoKTsKIH0KIAotdm9pZCBCcmVha05v
ZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklE
KikKK3ZvaWQgQnJlYWtOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCosIFRhaWxDYWxsTW9kZSkKIHsKICAgICBnZW5lcmF0b3IuZW1pdERl
YnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCks
IGxpbmVTdGFydE9mZnNldCgpKTsKICAgICAKQEAgLTI1NDgsNyArMjU5OCw3IEBAIHZvaWQgQnJl
YWtOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0
ZXJJRCopCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBSZXR1cm5Ob2RlIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLXZvaWQgUmV0dXJuTm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkK
K3ZvaWQgUmV0dXJuTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlIHRhaWxDYWxsTW9kZSkKIHsKICAgICBn
ZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCks
IHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKICAgICBBU1NFUlQoZ2VuZXJhdG9y
LmNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlKTsKQEAgLTI1NTYsNyArMjYwNiw3IEBAIHZvaWQg
UmV0dXJuTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqIGRzdCkKICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkp
CiAgICAgICAgIGRzdCA9IDA7CiAKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuUmVnaXN0
ZXIgPSBtX3ZhbHVlID8gZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV92YWx1ZSkgOiBnZW5lcmF0
b3IuZW1pdExvYWQoZHN0LCBqc1VuZGVmaW5lZCgpKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
cmV0dXJuUmVnaXN0ZXIgPSBtX3ZhbHVlID8gZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV92YWx1
ZSwgdGFpbENhbGxNb2RlKSA6IGdlbmVyYXRvci5lbWl0TG9hZChkc3QsIGpzVW5kZWZpbmVkKCkp
OwogICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocmV0dXJuUmVnaXN0ZXIuZ2V0KCksIFBy
b2ZpbGVUeXBlQnl0ZWNvZGVGdW5jdGlvblJldHVyblN0YXRlbWVudCwgZGl2b3RTdGFydCgpLCBk
aXZvdEVuZCgpKTsKICAgICBpZiAoZ2VuZXJhdG9yLmlzSW5GaW5hbGx5QmxvY2soKSkgewogICAg
ICAgICByZXR1cm5SZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IubmV3VGVt
cG9yYXJ5KCksIHJldHVyblJlZ2lzdGVyLmdldCgpKTsKQEAgLTI1NzQsMjUgKzI2MjQsMjUgQEAg
dm9pZCBSZXR1cm5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogZHN0KQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
V2l0aE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi12b2lkIFdp
dGhOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0
ZXJJRCogZHN0KQordm9pZCBXaXRoTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFpbENhbGxNb2RlIHRhaWxDYWxsTW9kZSkK
IHsKICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmly
c3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKIAogICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2V4cHIpOwogICAgIGdl
bmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8obV9kaXZvdCwgbV9kaXZvdCAtIG1fZXhwcmVzc2lv
bkxlbmd0aCwgbV9kaXZvdCk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQdXNoV2l0aFNjb3BlKHNjb3Bl
LmdldCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX3N0YXRlbWVudCk7CisgICAg
Z2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9zdGF0ZW1lbnQsIHRhaWxDYWxsTW9kZSk7CiAgICAg
Z2VuZXJhdG9yLmVtaXRQb3BXaXRoU2NvcGUoKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tIENhc2VDbGF1c2VOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKLWlubGluZSB2b2lkIENhc2VDbGF1c2VOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQoraW5saW5lIHZvaWQgQ2FzZUNs
YXVzZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSB0YWlsQ2FsbE1vZGUpCiB7CiAgICAgZ2VuZXJhdG9y
LmVtaXRQcm9maWxlQ29udHJvbEZsb3cobV9zdGFydE9mZnNldCk7CiAgICAgaWYgKCFtX3N0YXRl
bWVudHMpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3N0YXRlbWVudHMtPmVtaXRCeXRlY29kZShn
ZW5lcmF0b3IsIGRzdCk7CisgICAgbV9zdGF0ZW1lbnRzLT5lbWl0Qnl0ZWNvZGUoZ2VuZXJhdG9y
LCBkc3QsIHRhaWxDYWxsTW9kZSk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSBDYXNlQmxvY2tOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0y
Njg2LDcgKzI3MzYsNyBAQCBTd2l0Y2hJbmZvOjpTd2l0Y2hUeXBlIENhc2VCbG9ja05vZGU6OnRy
eVRhYmxlU3dpdGNoKFZlY3RvcjxFeHByZXNzaW9uTm9kZSosIDg+JgogICAgIHJldHVybiBTd2l0
Y2hJbmZvOjpTd2l0Y2hTdHJpbmc7CiB9CiAKLXZvaWQgQ2FzZUJsb2NrTm9kZTo6ZW1pdEJ5dGVj
b2RlRm9yQmxvY2soQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogc3dp
dGNoRXhwcmVzc2lvbiwgUmVnaXN0ZXJJRCogZHN0KQordm9pZCBDYXNlQmxvY2tOb2RlOjplbWl0
Qnl0ZWNvZGVGb3JCbG9jayhCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklE
KiBzd2l0Y2hFeHByZXNzaW9uLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSB0YWlsQ2Fs
bE1vZGUpCiB7CiAgICAgUmVmUHRyPExhYmVsPiBkZWZhdWx0TGFiZWw7CiAgICAgVmVjdG9yPFJl
ZlB0cjxMYWJlbD4sIDg+IGxhYmVsVmVjdG9yOwpAQCAtMjcyNSwxNyArMjc3NSwxNyBAQCB2b2lk
IENhc2VCbG9ja05vZGU6OmVtaXRCeXRlY29kZUZvckJsb2NrKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySQogICAgIHNpemVfdCBpID0gMDsKICAgICBmb3IgKENsYXVzZUxp
c3ROb2RlKiBsaXN0ID0gbV9saXN0MTsgbGlzdDsgbGlzdCA9IGxpc3QtPmdldE5leHQoKSkgewog
ICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGxhYmVsVmVjdG9yW2krK10uZ2V0KCkpOwotICAg
ICAgICBsaXN0LT5nZXRDbGF1c2UoKS0+ZW1pdEJ5dGVjb2RlKGdlbmVyYXRvciwgZHN0KTsKKyAg
ICAgICAgbGlzdC0+Z2V0Q2xhdXNlKCktPmVtaXRCeXRlY29kZShnZW5lcmF0b3IsIGRzdCwgdGFp
bENhbGxNb2RlKTsKICAgICB9CiAKICAgICBpZiAobV9kZWZhdWx0Q2xhdXNlKSB7CiAgICAgICAg
IGdlbmVyYXRvci5lbWl0TGFiZWwoZGVmYXVsdExhYmVsLmdldCgpKTsKLSAgICAgICAgbV9kZWZh
dWx0Q2xhdXNlLT5lbWl0Qnl0ZWNvZGUoZ2VuZXJhdG9yLCBkc3QpOworICAgICAgICBtX2RlZmF1
bHRDbGF1c2UtPmVtaXRCeXRlY29kZShnZW5lcmF0b3IsIGRzdCwgdGFpbENhbGxNb2RlKTsKICAg
ICB9CiAKICAgICBmb3IgKENsYXVzZUxpc3ROb2RlKiBsaXN0ID0gbV9saXN0MjsgbGlzdDsgbGlz
dCA9IGxpc3QtPmdldE5leHQoKSkgewogICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGxhYmVs
VmVjdG9yW2krK10uZ2V0KCkpOwotICAgICAgICBsaXN0LT5nZXRDbGF1c2UoKS0+ZW1pdEJ5dGVj
b2RlKGdlbmVyYXRvciwgZHN0KTsKKyAgICAgICAgbGlzdC0+Z2V0Q2xhdXNlKCktPmVtaXRCeXRl
Y29kZShnZW5lcmF0b3IsIGRzdCwgdGFpbENhbGxNb2RlKTsKICAgICB9CiAgICAgaWYgKCFtX2Rl
ZmF1bHRDbGF1c2UpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZGVmYXVsdExhYmVsLmdl
dCgpKTsKQEAgLTI3NDksNyArMjc5OSw3IEBAIHZvaWQgQ2FzZUJsb2NrTm9kZTo6ZW1pdEJ5dGVj
b2RlRm9yQmxvY2soQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJCiAKIC8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTd2l0Y2hOb2RlIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLXZvaWQgU3dpdGNoTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3ZvaWQgU3dpdGNo
Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
SUQqIGRzdCwgVGFpbENhbGxNb2RlIHRhaWxDYWxsTW9kZSkKIHsKICAgICBnZW5lcmF0b3IuZW1p
dERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIHN0YXJ0T2Zmc2V0
KCksIGxpbmVTdGFydE9mZnNldCgpKTsKICAgICAKQEAgLTI3NTgsNyArMjgwOCw3IEBAIHZvaWQg
U3dpdGNoTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqIGRzdCkKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcjAgPSBnZW5lcmF0b3IuZW1p
dE5vZGUobV9leHByKTsKIAogICAgIGdlbmVyYXRvci5wdXNoTGV4aWNhbFNjb3BlKHRoaXMsIGZh
bHNlKTsKLSAgICBtX2Jsb2NrLT5lbWl0Qnl0ZWNvZGVGb3JCbG9jayhnZW5lcmF0b3IsIHIwLmdl
dCgpLCBkc3QpOworICAgIG1fYmxvY2stPmVtaXRCeXRlY29kZUZvckJsb2NrKGdlbmVyYXRvciwg
cjAuZ2V0KCksIGRzdCwgdGFpbENhbGxNb2RlKTsKICAgICBnZW5lcmF0b3IucG9wTGV4aWNhbFNj
b3BlKHRoaXMpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChzY29wZS0+YnJlYWtUYXJnZXQo
KSk7CkBAIC0yNzY3LDcgKzI4MTcsNyBAQCB2b2lkIFN3aXRjaE5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAKIC8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBMYWJlbE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAKLXZvaWQgTGFiZWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQordm9pZCBMYWJlbE5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3Qs
IFRhaWxDYWxsTW9kZSkKIHsKICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0
ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgp
KTsKIApAQCAtMjc4MSw3ICsyODMxLDcgQEAgdm9pZCBMYWJlbE5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAKIC8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBUaHJvd05vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAKLXZvaWQgVGhyb3dOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQordm9pZCBUaHJvd05vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3Qs
IFRhaWxDYWxsTW9kZSkKIHsKICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0
ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgp
KTsKIApAQCAtMjc5Niw3ICsyODQ2LDcgQEAgdm9pZCBUaHJvd05vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAKIC8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBUcnlOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAKLXZvaWQgVHJ5Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3ZvaWQgVHJ5Tm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgVGFp
bENhbGxNb2RlIHRhaWxDYWxsTW9kZSkKIHsKICAgICAvLyBOT1RFOiBUaGUgY2F0Y2ggYW5kIGZp
bmFsbHkgYmxvY2tzIG11c3QgYmUgbGFiZWxlZCBleHBsaWNpdGx5LCBzbyB0aGUKICAgICAvLyBv
cHRpbWl6ZXIga25vd3MgdGhleSBtYXkgYmUganVtcGVkIHRvIGZyb20gYW55d2hlcmUuCkBAIC0y
ODM0LDcgKzI4ODQsNyBAQCB2b2lkIFRyeU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAKICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRQdXNoQ2F0Y2hTY29wZShtX3Rocm93blZhbHVlSWRlbnQsIHRocm93blZhbHVlUmVnaXN0ZXIu
Z2V0KCksIG1fY2F0Y2hFbnZpcm9ubWVudCk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmls
ZUNvbnRyb2xGbG93KG1fdHJ5QmxvY2stPmVuZE9mZnNldCgpICsgMSk7Ci0gICAgICAgIGdlbmVy
YXRvci5lbWl0Tm9kZShkc3QsIG1fY2F0Y2hCbG9jayk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0
Tm9kZShkc3QsIG1fY2F0Y2hCbG9jaywgbV9maW5hbGx5QmxvY2sgPyBOb1RhaWxDYWxscyA6IHRh
aWxDYWxsTW9kZSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0UG9wQ2F0Y2hTY29wZShtX2NhdGNo
RW52aXJvbm1lbnQpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGNhdGNoRW5kTGFiZWwu
Z2V0KCkpOwogICAgIH0KQEAgLTI4NTAsNyArMjkwMCw3IEBAIHZvaWQgVHJ5Tm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIAog
ICAgICAgICAvLyBOb3JtYWwgcGF0aDogcnVuIHRoZSBmaW5hbGx5IGNvZGUsIGFuZCBqdW1wIHRv
IHRoZSBlbmQuCiAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZUNvbnRyb2xGbG93KGZpbmFs
bHlTdGFydE9mZnNldCk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fZmluYWxs
eUJsb2NrKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9maW5hbGx5QmxvY2ss
IHRhaWxDYWxsTW9kZSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZUNvbnRyb2xGbG93
KG1fZmluYWxseUJsb2NrLT5lbmRPZmZzZXQoKSArIDEpOwogICAgICAgICBnZW5lcmF0b3IuZW1p
dEp1bXAoZmluYWxseUVuZExhYmVsLmdldCgpKTsKIApAQCAtMjg1OSw3ICsyOTA5LDcgQEAgdm9p
ZCBUcnlOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCogZHN0KQogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhyb3duVmFsdWVSZWdp
c3RlciA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICAgICAgZ2VuZXJhdG9yLnBvcFRy
eUFuZEVtaXRDYXRjaCh0cnlEYXRhLCBleGNlcHRpb25SZWdpc3Rlci5nZXQoKSwgdGhyb3duVmFs
dWVSZWdpc3Rlci5nZXQoKSwgcHJlRmluYWxseUxhYmVsLmdldCgpLCBIYW5kbGVyVHlwZTo6Rmlu
YWxseSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZUNvbnRyb2xGbG93KGZpbmFsbHlT
dGFydE9mZnNldCk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fZmluYWxseUJs
b2NrKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9maW5hbGx5QmxvY2ssIHRh
aWxDYWxsTW9kZSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0VGhyb3coZXhjZXB0aW9uUmVnaXN0
ZXIuZ2V0KCkpOwogCiAgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZmluYWxseUVuZExhYmVs
LmdldCgpKTsKQEAgLTI4NzEsMTYgKzI5MjEsMTYgQEAgdm9pZCBUcnlOb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogCiAvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU2NvcGVOb2RlIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAKLWlubGluZSB2b2lkIFNjb3BlTm9kZTo6ZW1pdFN0YXRlbWVudHNCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCitpbmxp
bmUgdm9pZCBTY29wZU5vZGU6OmVtaXRTdGF0ZW1lbnRzQnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBUYWlsQ2FsbE1vZGUgdGFpbENhbGxNb2Rl
KQogewogICAgIGlmICghbV9zdGF0ZW1lbnRzKQogICAgICAgICByZXR1cm47Ci0gICAgbV9zdGF0
ZW1lbnRzLT5lbWl0Qnl0ZWNvZGUoZ2VuZXJhdG9yLCBkc3QpOworICAgIG1fc3RhdGVtZW50cy0+
ZW1pdEJ5dGVjb2RlKGdlbmVyYXRvciwgZHN0LCB0YWlsQ2FsbE1vZGUpOwogfQogCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJvZ3JhbU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIAotdm9pZCBQcm9ncmFtTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQordm9pZCBQcm9ncmFtTm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqLCBUYWlsQ2Fs
bE1vZGUpCiB7CiAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVQcm9ncmFt
LCBzdGFydExpbmUoKSwgc3RhcnRTdGFydE9mZnNldCgpLCBzdGFydExpbmVTdGFydE9mZnNldCgp
KTsKIApAQCAtMjg5NSwxMyArMjk0NSwxMyBAQCB2b2lkIFByb2dyYW1Ob2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAKIC8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBNb2R1bGVQcm9ncmFtTm9kZSAtLS0tLS0tLS0tLS0t
LS0tLS0tLQogCi12b2lkIE1vZHVsZVByb2dyYW1Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKikKK3ZvaWQgTW9kdWxlUHJvZ3JhbU5vZGU6OmVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqLCBUYWlsQ2FsbE1vZGUpCiB7CiB9
CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFdmFsTm9kZSAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogCi12b2lkIEV2YWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCit2b2lkIEV2YWxOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCosIFRhaWxD
YWxsTW9kZSkKIHsKICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVByb2dy
YW0sIHN0YXJ0TGluZSgpLCBzdGFydFN0YXJ0T2Zmc2V0KCksIHN0YXJ0TGluZVN0YXJ0T2Zmc2V0
KCkpOwogCkBAIC0yOTE1LDcgKzI5NjUsNyBAQCB2b2lkIEV2YWxOb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAKIC8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbk5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KIAotdm9pZCBGdW5jdGlvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKK3ZvaWQgRnVuY3Rpb25Ob2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCosIFRhaWxDYWxs
TW9kZSkKIHsKICAgICBpZiAoZ2VuZXJhdG9yLnZtKCktPnR5cGVQcm9maWxlcigpKSB7CiAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9wYXJhbWV0ZXJzLT5zaXplKCk7IGkrKykgewpA
QCAtMjkzMCw3ICsyOTgwLDEwIEBAIHZvaWQgRnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAKICAgICBnZW5lcmF0b3Iu
ZW1pdFByb2ZpbGVDb250cm9sRmxvdyhzdGFydFN0YXJ0T2Zmc2V0KCkpOwogICAgIGdlbmVyYXRv
ci5lbWl0RGVidWdIb29rKERpZEVudGVyQ2FsbEZyYW1lLCBzdGFydExpbmUoKSwgc3RhcnRTdGFy
dE9mZnNldCgpLCBzdGFydExpbmVTdGFydE9mZnNldCgpKTsKLSAgICBlbWl0U3RhdGVtZW50c0J5
dGVjb2RlKGdlbmVyYXRvciwgZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSk7CisgICAgaWYgKE9w
dGlvbnM6OmVuYWJsZVRhaWxDYWxscygpICYmIGlzU3RyaWN0TW9kZSgpICYmIGdlbmVyYXRvci5j
b25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpCisgICAgICAgIGVtaXRT
dGF0ZW1lbnRzQnl0ZWNvZGUoZ2VuZXJhdG9yLCBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpLCBD
YW5IYXZlVGFpbENhbGxzKTsKKyAgICBlbHNlCisgICAgICAgIGVtaXRTdGF0ZW1lbnRzQnl0ZWNv
ZGUoZ2VuZXJhdG9yLCBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKTsKIAogICAgIFN0YXRlbWVu
dE5vZGUqIHNpbmdsZVN0YXRlbWVudCA9IHRoaXMtPnNpbmdsZVN0YXRlbWVudCgpOwogICAgIFJl
dHVybk5vZGUqIHJldHVybk5vZGUgPSAwOwpAQCAtMjk1NSwyMCArMzAwOCwyMCBAQCB2b2lkIEZ1
bmN0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqKQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY0RlY2xO
b2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi12b2lkIEZ1bmNEZWNsTm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopCit2b2lkIEZ1
bmNEZWNsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCos
IFRhaWxDYWxsTW9kZSkKIHsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IEZ1bmNFeHByTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUmVnaXN0
ZXJJRCogRnVuY0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCogZHN0KQorUmVnaXN0ZXJJRCogRnVuY0V4cHJOb2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBUYWls
Q2FsbE1vZGUpCiB7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0TmV3RnVuY3Rpb25FeHByZXNz
aW9uKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIHRoaXMpOwogfQogCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQXJyb3dGdW5jRXhwck5vZGUgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlZ2lzdGVySUQqIEFycm93RnVuY0V4cHJOb2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0
KQorUmVnaXN0ZXJJRCogQXJyb3dGdW5jRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSkKIHsKICAg
ICByZXR1cm4gZ2VuZXJhdG9yLmVtaXROZXdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihnZW5lcmF0
b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCB0aGlzKTsKIH0KQEAgLTI5NzYsMTQgKzMwMjksMTQg
QEAgUmVnaXN0ZXJJRCogQXJyb3dGdW5jRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3QKICNpZiBFTkFCTEUoRVM2X0NMQVNTX1NZTlRBWCkK
IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDbGFzc0RlY2xOb2RlIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi12b2lkIENsYXNzRGVjbE5vZGU6OmVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit2b2lk
IENsYXNzRGVjbE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSkKIHsKICAgICBnZW5lcmF0b3IuZW1pdE5v
ZGUoZHN0LCBtX2NsYXNzRGVjbGFyYXRpb24pOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0gQ2xhc3NFeHByTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIAotUmVnaXN0ZXJJRCogQ2xhc3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVySUQqIENsYXNzRXhw
ck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklEKiBkc3QsIFRhaWxDYWxsTW9kZSkKIHsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3VwZXJj
bGFzczsKICAgICBpZiAobV9jbGFzc0hlcml0YWdlKSB7CkBAIC0zMDU1LDM2ICszMTA4LDM2IEBA
IFJlZ2lzdGVySUQqIENsYXNzRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklECiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSBJbXBvcnREZWNsYXJhdGlvbk5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotdm9p
ZCBJbXBvcnREZWNsYXJhdGlvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqKQordm9pZCBJbXBvcnREZWNsYXJhdGlvbk5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqLCBUYWlsQ2FsbE1vZGUpCiB7CiB9CiAKIC8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFeHBvcnRBbGxEZWNsYXJhdGlvbk5vZGUg
LS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotdm9pZCBFeHBvcnRBbGxEZWNsYXJhdGlvbk5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKQordm9pZCBFeHBvcnRB
bGxEZWNsYXJhdGlvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqLCBUYWlsQ2FsbE1vZGUpCiB7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSBFeHBvcnREZWZhdWx0RGVjbGFyYXRpb25Ob2RlIC0tLS0tLS0tLS0tLS0tLS0KIAot
dm9pZCBFeHBvcnREZWZhdWx0RGVjbGFyYXRpb25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKikKK3ZvaWQgRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uTm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCosIFRhaWxDYWxs
TW9kZSkKIHsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEV4cG9ydExv
Y2FsRGVjbGFyYXRpb25Ob2RlIC0tLS0tLS0tLS0tLS0tLS0tLQogCi12b2lkIEV4cG9ydExvY2Fs
RGVjbGFyYXRpb25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3Rl
cklEKikKK3ZvaWQgRXhwb3J0TG9jYWxEZWNsYXJhdGlvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqLCBUYWlsQ2FsbE1vZGUpCiB7CiB9CiAKIC8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFeHBvcnROYW1lZERlY2xhcmF0aW9uTm9kZSAt
LS0tLS0tLS0tLS0tLS0tLS0KIAotdm9pZCBFeHBvcnROYW1lZERlY2xhcmF0aW9uTm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopCit2b2lkIEV4cG9ydE5h
bWVkRGVjbGFyYXRpb25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiwgVGFpbENhbGxNb2RlKQogewogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2RlIC0tLS0tLS0tLS0tLS0tLS0tCi1S
ZWdpc3RlcklEKiBEZXN0cnVjdHVyaW5nQXNzaWdubWVudE5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCitSZWdpc3RlcklEKiBE
ZXN0cnVjdHVyaW5nQXNzaWdubWVudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFRhaWxDYWxsTW9kZSkKIHsKICAgICBpZiAo
UmVnaXN0ZXJJRCogcmVzdWx0ID0gbV9iaW5kaW5ncy0+ZW1pdERpcmVjdEJpbmRpbmcoZ2VuZXJh
dG9yLCBkc3QsIG1faW5pdGlhbGl6ZXIpKQogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMzMz
NCw3ICszMzg3LDcgQEAgdm9pZCBCaW5kaW5nTm9kZTo6Y29sbGVjdEJvdW5kSWRlbnRpZmllcnMo
VmVjdG9yPElkZW50aWZpZXI+JiBpZGVudGlmaWVycykgY29uc3QKICAgICBpZGVudGlmaWVycy5h
cHBlbmQobV9ib3VuZFByb3BlcnR5KTsKIH0KICAgICAKLVJlZ2lzdGVySUQqIFNwcmVhZEV4cHJl
c3Npb25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKikK
K1JlZ2lzdGVySUQqIFNwcmVhZEV4cHJlc3Npb25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiwgVGFpbENhbGxNb2RlKQogewogICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L05vZGVzLmgKaW5kZXggZWQzMDBlNzc2NDU1YWZmMWE5NzNlYWJiNTM3ZWNlYmVmNGI0NzcxMS4u
NzkwMTc2MzBjMTgxZGJlZDBlOGViMjRlYzYxZGVlYzY0MTVjZDNhOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtNzksNiArNzksMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgfTsKICAgICBpbmxpbmUgRmFsbFRocm91Z2hNb2RlIGludmVydChGYWxsVGhyb3VnaE1vZGUg
ZmFsbFRocm91Z2hNb2RlKSB7IHJldHVybiBzdGF0aWNfY2FzdDxGYWxsVGhyb3VnaE1vZGU+KCFm
YWxsVGhyb3VnaE1vZGUpOyB9CiAKKyAgICBlbnVtIFRhaWxDYWxsTW9kZSB7CisgICAgICAgIENh
bkhhdmVUYWlsQ2FsbHMsCisgICAgICAgIE5vVGFpbENhbGxzLAorICAgIH07CisKICAgICBuYW1l
c3BhY2UgRGVjbGFyYXRpb25TdGFja3MgewogICAgICAgICB0eXBlZGVmIFZlY3RvcjxGdW5jdGlv
bk1ldGFkYXRhTm9kZSo+IEZ1bmN0aW9uU3RhY2s7CiAgICAgfQpAQCAtMTQ5LDcgKzE1NCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBFeHByZXNzaW9uTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBSZXN1bHRUeXBlID0gUmVzdWx0VHlwZTo6dW5rbm93blR5cGUoKSk7CiAKICAgICBw
dWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogZGVzdGluYXRpb24gPSAwKSA9IDA7CisgICAgICAgIHZp
cnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogZGVzdGluYXRpb24gPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgPSAwOwog
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc051bWJlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1N0cmluZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CkBAIC0xODcsNyArMTkyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFN0YXRlbWVudE5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJik7CiAKICAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1
YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBkZXN0
aW5hdGlvbiA9IDApID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIGRlc3RpbmF0aW9uID0gMCwgVGFpbENhbGxNb2Rl
ID0gTm9UYWlsQ2FsbHMpID0gMDsKIAogICAgICAgICB2b2lkIHNldExvYyh1bnNpZ25lZCBmaXJz
dExpbmUsIHVuc2lnbmVkIGxhc3RMaW5lLCBpbnQgc3RhcnRPZmZzZXQsIGludCBsaW5lU3RhcnRP
ZmZzZXQpOwogICAgICAgICB1bnNpZ25lZCBsYXN0TGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGFz
dExpbmU7IH0KQEAgLTIzMCw3ICsyMzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdmly
dHVhbCBib29sIGlzQ29uc3RhbnQoKSBjb25zdCAgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQog
ICAgICAgICB2aXJ0dWFsIEpTVmFsdWUganNWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYpIGNvbnN0
ID0gMDsKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAg
ICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwg
UmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGVJbkNvbmRpdGlvbkNvbnRleHQoQnl0ZWNv
ZGVHZW5lcmF0b3ImLCBMYWJlbCogdHJ1ZVRhcmdldCwgTGFiZWwqIGZhbHNlVGFyZ2V0LCBGYWxs
VGhyb3VnaE1vZGUpIG92ZXJyaWRlOwogICAgIH07CiAKQEAgLTI2MCw3ICsyNjUsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgTnVtYmVyTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBk
b3VibGUgdmFsdWUpOwogICAgICAgICBkb3VibGUgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3Zh
bHVlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0ludGVnZXJOb2RlKCkgY29uc3QgPSAwOwot
ICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGUgZmluYWw7CisgICAgICAgIHZpcnR1YWwgUmVn
aXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAw
LCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGUgZmluYWw7CiAKICAgICBwcml2
YXRlOgogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNOdW1iZXIoKSBjb25zdCBvdmVycmlkZSBmaW5h
bCB7IHJldHVybiB0cnVlOyB9CkBAIC00NzAsNyArNDc1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIGNvbnN0IElkZW50aWZpZXImIHJhdygpIHsgcmV0dXJuIG1fcmF3OyB9CiAKICAgICBw
cml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwg
UmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgY29u
c3QgSWRlbnRpZmllciYgbV9jb29rZWQ7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1fcmF3
OwpAQCAtNDk4LDcgKzUwMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBUZW1wbGF0ZUV4
cHJlc3Npb25MaXN0Tm9kZSogdGVtcGxhdGVFeHByZXNzaW9ucygpIGNvbnN0IHsgcmV0dXJuIG1f
dGVtcGxhdGVFeHByZXNzaW9uczsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBS
ZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWls
Q2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAgIFRlbXBsYXRlU3RyaW5nTGlzdE5vZGUqIG1fdGVt
cGxhdGVTdHJpbmdzOwogICAgICAgICBUZW1wbGF0ZUV4cHJlc3Npb25MaXN0Tm9kZSogbV90ZW1w
bGF0ZUV4cHJlc3Npb25zOwpAQCAtNTExLDcgKzUxNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBUZW1wbGF0ZUxpdGVyYWxOb2RlKiB0ZW1wbGF0ZUxpdGVyYWwoKSBjb25zdCB7IHJldHVy
biBtX3RlbXBsYXRlTGl0ZXJhbDsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBS
ZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWls
Q2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX3RhZzsKICAgICAg
ICAgVGVtcGxhdGVMaXRlcmFsTm9kZSogbV90ZW1wbGF0ZUxpdGVyYWw7CkBAIC01MjMsNyArNTI4
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ0V4cE5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYgcGF0dGVybiwgY29uc3QgSWRlbnRpZmllciYgZmxh
Z3MpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAg
ICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwog
CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1fcGF0dGVybjsKICAgICAgICAgY29uc3QgSWRl
bnRpZmllciYgbV9mbGFnczsKQEAgLTUzNCw3ICs1MzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgVGhpc05vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgVGhpc1REWk1vZGUpOwogCiAg
ICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0
dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAg
IGJvb2wgbV9zaG91bGRBbHdheXNFbWl0VERaQ2hlY2s7CiAgICAgfTsKQEAgLTU0NSw3ICs1NTAs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgYm9v
bCBpc1N1cGVyTm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAg
dmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2Rl
ID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogICAgIH07CiAKICAgICBjbGFzcyBOZXdUYXJnZXRO
b2RlIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKQEAgLTU1Myw3ICs1NTgsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgTmV3VGFyZ2V0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAg
ICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsK
ICAgICB9OwogCiAgICAgY2xhc3MgUmVzb2x2ZU5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUg
ewpAQCAtNTYzLDcgKzU2OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudDsgfQogCiAgICAgcHJp
dmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJl
Z2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0g
MCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAgIHZpcnR1
YWwgYm9vbCBpc1B1cmUoQnl0ZWNvZGVHZW5lcmF0b3ImKSBjb25zdCBvdmVycmlkZTsKICAgICAg
ICAgdmlydHVhbCBib29sIGlzTG9jYXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9CkBAIC01OTgsNyArNjAzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgRWxlbWVu
dE5vZGUqIGVsZW1lbnRzKCkgY29uc3QgeyBBU1NFUlQoaXNTaW1wbGVBcnJheSgpKTsgcmV0dXJu
IG1fZWxlbWVudDsgfQogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCog
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlk
ZTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVy
cmlkZTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTaW1wbGVBcnJheSgpIGNvbnN0IG92ZXJy
aWRlOwogCkBAIC02MzgsNyArNjQzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFByb3Bl
cnR5TGlzdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgUHJvcGVydHlOb2RlKiwgUHJvcGVy
dHlMaXN0Tm9kZSopOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklE
KiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJy
aWRlOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92
ZXJyaWRlOwogICAgICAgICB2b2lkIGVtaXRQdXRDb25zdGFudFByb3BlcnR5KEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCosIFByb3BlcnR5Tm9kZSYpOwogCiAgICAgICAgIFByb3BlcnR5
Tm9kZSogbV9ub2RlOwpAQCAtNjUxLDcgKzY1Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBPYmplY3RMaXRlcmFsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBQcm9wZXJ0eUxpc3RO
b2RlKik7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7Cisg
ICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7
CiAKICAgICAgICAgUHJvcGVydHlMaXN0Tm9kZSogbV9saXN0OwogICAgIH07CkBAIC02NjYsNyAr
NjcxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdu
bWVudHMoKSBjb25zdCB7IHJldHVybiBtX3N1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzOyB9CiAKICAg
ICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1
YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAg
dmlydHVhbCBib29sIGlzTG9jYXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0JyYWNrZXRBY2Nlc3Nvck5vZGUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9CkBAIC02ODQsNyArNjg5LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBt
X2lkZW50OyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7
CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJp
ZGU7CiAKICAgICAgICAgdmlydHVhbCBib29sIGlzTG9jYXRpb24oKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0RvdEFjY2Vzc29yTm9kZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KQEAgLTcwMCw3ICs3MDUsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIGV4cHJlc3Npb24oKSBjb25zdCB7
IHJldHVybiBtX2V4cHJlc3Npb247IH0KICAgICAgICAgCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
dmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2Rl
ID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogICAgICAgICAKICAgICAgICAgdmlydHVhbCBib29s
IGlzU3ByZWFkRXhwcmVzc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAg
ICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcmVzc2lvbjsKQEAgLTcxNSw3ICs3MjAsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjsKIAogICAgIHBy
aXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCBS
ZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKICAgICB9OwogCiAgICAg
Y2xhc3MgQXJndW1lbnRzTm9kZSA6IHB1YmxpYyBQYXJzZXJBcmVuYUZyZWVhYmxlIHsKQEAgLTcz
Miw3ICs3MzcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTmV3RXhwck5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqLCBBcmd1bWVudHNOb2RlKik7CiAKICAg
ICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1
YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAg
RXhwcmVzc2lvbk5vZGUqIG1fZXhwcjsKICAgICAgICAgQXJndW1lbnRzTm9kZSogbV9hcmdzOwpA
QCAtNzQzLDcgKzc0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBFdmFsRnVuY3Rpb25D
YWxsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBBcmd1bWVudHNOb2RlKiwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZp
cnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9
IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKIAogICAgICAgICBBcmd1bWVudHNOb2RlKiBtX2FyZ3M7
CiAgICAgfTsKQEAgLTc1Myw3ICs3NTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRnVu
Y3Rpb25DYWxsVmFsdWVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2Rl
KiwgQXJndW1lbnRzTm9kZSosIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7
CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAg
IHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAg
ICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjsKICAgICAgICAgQXJndW1lbnRzTm9kZSogbV9h
cmdzOwpAQCAtNzY0LDcgKzc2OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBGdW5jdGlv
bkNhbGxSZXNvbHZlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVy
JiwgQXJndW1lbnRzTm9kZSosIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7
CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAg
IHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAg
ICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9pZGVudDsKICAgICAgICAgQXJndW1lbnRzTm9kZSog
bV9hcmdzOwpAQCAtNzc1LDcgKzc4MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBGdW5j
dGlvbkNhbGxCcmFja2V0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9k
ZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgYm9vbCBzdWJzY3JpcHRIYXNBc3Np
Z25tZW50cywgQXJndW1lbnRzTm9kZSosIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZv
dEVuZCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7Cisg
ICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7
CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fYmFzZTsKICAgICAgICAgRXhwcmVzc2lvbk5v
ZGUqIG1fc3Vic2NyaXB0OwpAQCAtNzg4LDcgKzc5Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Np
b25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2
aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUg
PSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIEV4cHJl
c3Npb25Ob2RlKiBtX2Jhc2U7CkBAIC04MDksNyArODE0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAj
dW5kZWYgSlNDX0RFQ0xBUkVfQllURUNPREVfSU5UUklOU0lDX0ZVTkNUSU9OUwogCiAgICAgcHJp
dmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJl
Z2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0g
MCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAgIEVtaXR0
ZXJUeXBlIG1fZW1pdHRlcjsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9pZGVudDsKQEAg
LTgyMSw3ICs4MjYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgQ2FsbEZ1bmN0aW9uQ2Fs
bERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNv
bnN0IElkZW50aWZpZXImLCBBcmd1bWVudHNOb2RlKiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRp
dm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGRpdm90RW5kKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJ
RCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVy
cmlkZTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBv
dmVycmlkZTsKICAgICB9OwogICAgIAogICAgIGNsYXNzIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9k
ZSA6IHB1YmxpYyBGdW5jdGlvbkNhbGxEb3ROb2RlIHsKQEAgLTgyOSw3ICs4MzQsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgQXJn
dW1lbnRzTm9kZSosIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAg
ICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1
YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAgICAgfTsKIAog
ICAgIGNsYXNzIERlbGV0ZVJlc29sdmVOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJs
aWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewpAQCAtODM3LDcgKzg0Miw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBEZWxldGVSZXNvbHZlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5k
KTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAg
ICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKIAog
ICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX2lkZW50OwogICAgIH07CkBAIC04NDcsNyArODUy
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIERlbGV0ZUJyYWNrZXROb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vi
c2NyaXB0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJp
dmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJl
Z2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0g
MCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAgIEV4cHJl
c3Npb25Ob2RlKiBtX2Jhc2U7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX3N1YnNjcmlwdDsK
QEAgLTg1OCw3ICs4NjMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRGVsZXRlRG90Tm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRl
bnRpZmllciYsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICBw
cml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwg
UmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgRXhw
cmVzc2lvbk5vZGUqIG1fYmFzZTsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9pZGVudDsK
QEAgLTg2OSw3ICs4NzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRGVsZXRlVmFsdWVO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKik7CiAKICAgICBwcml2
YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVn
aXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAw
LCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgRXhwcmVz
c2lvbk5vZGUqIG1fZXhwcjsKICAgICB9OwpAQCAtODc5LDcgKzg4NCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBWb2lkTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9u
Tm9kZSopOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwor
ICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRl
OwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2V4cHI7CiAgICAgfTsKQEAgLTg5MSw3ICs4
OTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnRp
ZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnQ7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAg
IHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9k
ZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKIAogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBt
X2lkZW50OwogICAgIH07CkBAIC05MDEsNyArOTA2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIFR5cGVPZlZhbHVlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9k
ZSopOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAg
ICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwog
CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2V4cHI7CiAgICAgfTsKQEAgLTkxMSw3ICs5MTYs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUHJlZml4Tm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBFeHByZXNzaW9uTm9kZSosIE9wZXJhdG9yLCBjb25zdCBKU1RleHRQb3NpdGlvbiYg
ZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICB2aXJ0dWFsIFJlZ2lz
dGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkg
b3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxs
cykgb3ZlcnJpZGU7CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdFJlc29sdmUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwogICAgICAgICB2aXJ0dWFsIFJlZ2lz
dGVySUQqIGVtaXRCcmFja2V0KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsK
ICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0RG90KEJ5dGVjb2RlR2VuZXJhdG9yJiwg
UmVnaXN0ZXJJRCogPSAwKTsKQEAgLTkyNSw3ICs5MzAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgUG9zdGZpeE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUq
LCBPcGVyYXRvciwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKIAogICAg
IHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVh
bCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKICAgICAgICAgdmly
dHVhbCBSZWdpc3RlcklEKiBlbWl0UmVzb2x2ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCkgb3ZlcnJpZGU7CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJyYWNr
ZXQoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwogICAgICAg
ICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXREb3QoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3Rl
cklEKiA9IDApIG92ZXJyaWRlOwpAQCAtOTQwLDcgKzk0NSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBjb25zdCBFeHByZXNzaW9uTm9kZSogZXhwcigpIGNvbnN0IHsgcmV0dXJuIG1fZXhw
cjsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAg
ICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwog
CiAgICAgICAgIE9wY29kZUlEIG9wY29kZUlEKCkgY29uc3QgeyByZXR1cm4gbV9vcGNvZGVJRDsg
fQogCkBAIC05NzAsNyArOTc1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGNvbnN0IEV4
cHJlc3Npb25Ob2RlKiBleHByKCkgY29uc3QgeyByZXR1cm4gbV9leHByOyB9CiAKICAgICBwcml2
YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVn
aXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAw
LCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgRXhwcmVz
c2lvbk5vZGUqIG1fZXhwcjsKICAgICB9OwpAQCAtOTk1LDcgKzEwMDAsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgdHJ5Rm9sZFRvQnJhbmNoKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgVHJpU3RhdGUmIGJyYW5jaENvbmRpdGlvbiwgRXhwcmVzc2lvbk5vZGUq
JiBicmFuY2hFeHByZXNzaW9uKTsKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAg
ICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwog
CiAgICAgcHJvdGVjdGVkOgogICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCgpIGNvbnN0IHsgcmV0
dXJuIG1fb3Bjb2RlSUQ7IH0KQEAgLTEwNzksNyArMTA4NCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBUaHJvd2FibGVCaW5hcnlPcE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIE9wY29kZUlELCBib29s
IHJpZ2h0SGFzQXNzaWdubWVudHMpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBS
ZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWls
Q2FsbHMpIG92ZXJyaWRlOwogICAgIH07CiAgICAgCiAgICAgY2xhc3MgSW5zdGFuY2VPZk5vZGUg
OiBwdWJsaWMgVGhyb3dhYmxlQmluYXJ5T3BOb2RlIHsKQEAgLTEwODcsNyArMTA5Miw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBJbnN0YW5jZU9mTm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCBy
aWdodEhhc0Fzc2lnbm1lbnRzKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVn
aXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAw
KSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENh
bGxzKSBvdmVycmlkZTsKICAgICB9OwogCiAgICAgY2xhc3MgSW5Ob2RlIDogcHVibGljIFRocm93
YWJsZUJpbmFyeU9wTm9kZSB7CkBAIC0xMTAwLDcgKzExMDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgRXF1YWxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2Rl
KiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMp
OwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAg
ICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogICAg
IH07CiAKICAgICBjbGFzcyBOb3RFcXVhbE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKQEAg
LTExMTMsNyArMTExOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTdHJpY3RFcXVhbE5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNz
aW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAKICAgICBwcml2YXRl
OgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0
ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBU
YWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAgICAgfTsKIAogICAgIGNsYXNz
IE5vdFN0cmljdEVxdWFsTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewpAQCAtMTE0Miw3ICsx
MTQ3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIExvZ2ljYWxPcE5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhw
cjIsIExvZ2ljYWxPcGVyYXRvcik7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJl
Z2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0g
MCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxD
YWxscykgb3ZlcnJpZGU7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGVJbkNvbmRp
dGlvbkNvbnRleHQoQnl0ZWNvZGVHZW5lcmF0b3ImLCBMYWJlbCogdHJ1ZVRhcmdldCwgTGFiZWwq
IGZhbHNlVGFyZ2V0LCBGYWxsVGhyb3VnaE1vZGUpIG92ZXJyaWRlOwogCiAgICAgICAgIEV4cHJl
c3Npb25Ob2RlKiBtX2V4cHIxOwpAQCAtMTE1Niw3ICsxMTYxLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIENvbmRpdGlvbmFsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNz
aW9uTm9kZSogbG9naWNhbCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjIpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwor
ICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRl
OwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2xvZ2ljYWw7CiAgICAgICAgIEV4cHJlc3Np
b25Ob2RlKiBtX2V4cHIxOwpAQCAtMTE2OCw3ICsxMTczLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIFJlYWRNb2RpZnlSZXNvbHZlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25z
dCBJZGVudGlmaWVyJiwgT3BlcmF0b3IsIEV4cHJlc3Npb25Ob2RlKiAgcmlnaHQsIGJvb2wgcmln
aHRIYXNBc3NpZ25tZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsK
IAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAg
dmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKIAogICAg
ICAgICBjb25zdCBJZGVudGlmaWVyJiBtX2lkZW50OwogICAgICAgICBFeHByZXNzaW9uTm9kZSog
bV9yaWdodDsKQEAgLTExODEsNyArMTE4Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBB
c3NpZ25SZXNvbHZlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVy
JiwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBBc3NpZ25tZW50Q29udGV4dCk7CiAKICAgICBwcml2
YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVn
aXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAw
LCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgY29uc3Qg
SWRlbnRpZmllciYgbV9pZGVudDsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fcmlnaHQ7CkBA
IC0xMTkzLDcgKzExOTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVhZE1vZGlmeUJy
YWNrZXROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBF
eHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBPcGVyYXRvciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0
LCBib29sIHN1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICBwcml2YXRlOgot
ICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJ
RCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWls
Q2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgRXhwcmVzc2lvbk5v
ZGUqIG1fYmFzZTsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fc3Vic2NyaXB0OwpAQCAtMTIw
OCw3ICsxMjEzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEFzc2lnbkJyYWNrZXROb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9u
Tm9kZSogc3Vic2NyaXB0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgc3Vic2NyaXB0SGFz
QXNzaWdubWVudHMsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90RW5kKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVn
aXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAw
KSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENh
bGxzKSBvdmVycmlkZTsKIAogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9iYXNlOwogICAgICAg
ICBFeHByZXNzaW9uTm9kZSogbV9zdWJzY3JpcHQ7CkBAIC0xMjIyLDcgKzEyMjcsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgQXNzaWduRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2Rl
KiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYg
ZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3Rl
cklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92
ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMp
IG92ZXJyaWRlOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Jhc2U7CiAgICAgICAgIGNv
bnN0IElkZW50aWZpZXImIG1faWRlbnQ7CkBAIC0xMjM1LDcgKzEyNDAsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgUmVhZE1vZGlmeURvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
RXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBPcGVyYXRvciwgRXhwcmVz
c2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFs
IFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1Rh
aWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fYmFzZTsKICAg
ICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9pZGVudDsKQEAgLTEyNDksNyArMTI1NCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBBc3NpZ25FcnJvck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYg
ZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKIAogICAgIHByaXZh
dGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCBSZWdp
c3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAs
IFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKICAgICB9OwogICAgIAogICAg
IGNsYXNzIENvbW1hTm9kZSBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CkBAIC0xMjYx
LDcgKzEyNjYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZp
cnR1YWwgYm9vbCBpc0NvbW1hTm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
LSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVy
SUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFp
bENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAgIEV4cHJlc3Npb25O
b2RlKiBtX2V4cHI7CiAgICAgICAgIENvbW1hTm9kZSogbV9uZXh0OwpAQCAtMTI3Niw3ICsxMjgx
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFN0YXRlbWVudE5vZGUqIHNpbmdsZVN0YXRl
bWVudCgpIGNvbnN0OwogICAgICAgICBTdGF0ZW1lbnROb2RlKiBsYXN0U3RhdGVtZW50KCkgY29u
c3Q7CiAKLSAgICAgICAgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiBkZXN0aW5hdGlvbik7CisgICAgICAgIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogZGVzdGluYXRpb24sIFRhaWxDYWxsTW9kZSk7CiAgICAg
ICAgIHZvaWQgYW5hbHl6ZU1vZHVsZShNb2R1bGVBbmFseXplciYpOwogCiAgICAgcHJpdmF0ZToK
QEAgLTEyOTIsNyArMTI5Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTdGF0ZW1lbnRO
b2RlKiBsYXN0U3RhdGVtZW50KCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0
dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAw
KSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92
ZXJyaWRlOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Jsb2NrKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdHJ1ZTsgfQogCkBAIC0xMzA0LDcgKzEzMDksNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgRW1wdHlTdGF0ZW1lbnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpOwogCiAg
ICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxD
YWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wg
aXNFbXB0eVN0YXRlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB9
OwpAQCAtMTMxNCw3ICsxMzE5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIERlYnVnZ2Vy
U3RhdGVtZW50Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mKTsKICAgICAgICAgCiAgICAgcHJp
dmF0ZToKLSAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9k
ZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKICAgICB9OwogCiAgICAgY2xhc3MgRXhwclN0YXRl
bWVudE5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CkBAIC0xMzI2LDcgKzEzMzEsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNFeHBy
U3RhdGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgICAgIHZp
cnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykg
b3ZlcnJpZGU7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjsKICAgICB9OwpAQCAt
MTMzNSw3ICsxMzQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICBE
ZWNsYXJhdGlvblN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9k
ZSopOwogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0
dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAw
LCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgRXhwcmVz
c2lvbk5vZGUqIG1fZXhwcjsKICAgICB9OwpAQCAtMTM0NSw3ICsxMzUwLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIEVtcHR5VmFyRXhwcmVzc2lvbihjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBjb25zdCBJZGVudGlmaWVyJik7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJl
Z2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0g
MCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxD
YWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9pZGVudDsKICAg
ICB9OwpAQCAtMTM1NSw3ICsxMzYwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEVtcHR5
TGV0RXhwcmVzc2lvbihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJik7
CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAg
IHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAg
ICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9pZGVudDsKICAgICB9OwpAQCAtMTM2NSw3ICsxMzcw
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIElmRWxzZU5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGNvbmRpdGlvbiwgU3RhdGVtZW50Tm9kZSogaWZCbG9j
aywgU3RhdGVtZW50Tm9kZSogZWxzZUJsb2NrKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZp
cnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykg
b3ZlcnJpZGU7CiAgICAgICAgIGJvb2wgdHJ5Rm9sZEJyZWFrQW5kQ29udGludWUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBTdGF0ZW1lbnROb2RlKiBpZkJsb2NrLAogICAgICAgICAgICAgTGFiZWwqJiB0
cnVlVGFyZ2V0LCBGYWxsVGhyb3VnaE1vZGUmKTsKIApAQCAtMTM3OSw3ICsxMzg0LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIERvV2hpbGVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IFN0YXRlbWVudE5vZGUqLCBFeHByZXNzaW9uTm9kZSopOwogCiAgICAgcHJpdmF0ZToKLSAgICAg
ICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENh
bGxzKSBvdmVycmlkZTsKIAogICAgICAgICBTdGF0ZW1lbnROb2RlKiBtX3N0YXRlbWVudDsKICAg
ICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjsKQEAgLTEzOTAsNyArMTM5NSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBXaGlsZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhw
cmVzc2lvbk5vZGUqLCBTdGF0ZW1lbnROb2RlKik7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2
aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMp
IG92ZXJyaWRlOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2V4cHI7CiAgICAgICAgIFN0
YXRlbWVudE5vZGUqIG1fc3RhdGVtZW50OwpAQCAtMTQwMSw3ICsxNDA2LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIEZvck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MywgU3RhdGVtZW50Tm9kZSosIFZhcmlhYmxlRW52aXJvbm1lbnQmKTsKIAogICAgIHByaXZhdGU6
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBO
b1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjE7
CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2V4cHIyOwpAQCAtMTQzMCw3ICsxNDM1LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdExvb3BIZWFkZXIoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiBwcm9wZXJ0eU5hbWUpOwogICAgICAgICB2b2lkIGVtaXRNdWx0
aUxvb3BCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIGRzdCk7CiAKLSAg
ICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFp
bENhbGxzKSBvdmVycmlkZTsKICAgICB9OwogICAgIAogICAgIGNsYXNzIEZvck9mTm9kZSA6IHB1
YmxpYyBFbnVtZXJhdGlvbk5vZGUgewpAQCAtMTQzOCw3ICsxNDQzLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIEZvck9mTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9u
Tm9kZSosIEV4cHJlc3Npb25Ob2RlKiwgU3RhdGVtZW50Tm9kZSosIFZhcmlhYmxlRW52aXJvbm1l
bnQmKTsKICAgICAgICAgCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKICAgICB9
OwogCiAgICAgY2xhc3MgQ29udGludWVOb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUsIHB1Ymxp
YyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CkBAIC0xNDQ4LDcgKzE0NTMsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBib29sIGlz
Q29udGludWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgICAgIHZpcnR1
YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAp
IG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3Zl
cnJpZGU7CiAKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9pZGVudDsKICAgICB9OwpAQCAt
MTQ2MCw3ICsxNDY1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgIHByaXZhdGU6
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0JyZWFrKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxN
b2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIm
IG1faWRlbnQ7CiAgICAgfTsKQEAgLTE0NzIsNyArMTQ3Nyw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBFeHByZXNzaW9uTm9kZSogdmFsdWUoKSB7IHJldHVybiBtX3ZhbHVlOyB9CiAKICAg
ICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCB2b2lk
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENh
bGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBp
c1JldHVybk5vZGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKQEAgLTE0ODQs
NyArMTQ4OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBXaXRoTm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSosIFN0YXRlbWVudE5vZGUqLCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3QsIHVpbnQzMl90IGV4cHJlc3Npb25MZW5ndGgpOwogCiAgICAgcHJp
dmF0ZToKLSAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9k
ZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKIAogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9l
eHByOwogICAgICAgICBTdGF0ZW1lbnROb2RlKiBtX3N0YXRlbWVudDsKQEAgLTE0OTcsNyArMTUw
Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBMYWJlbE5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgU3RhdGVtZW50Tm9kZSopOwogCiAgICAg
cHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxs
TW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKIAogICAgICAgICBjb25zdCBJZGVudGlmaWVy
JiBtX25hbWU7CiAgICAgICAgIFN0YXRlbWVudE5vZGUqIG1fc3RhdGVtZW50OwpAQCAtMTUwOCw3
ICsxNTEzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFRocm93Tm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSopOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
dmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxz
KSBvdmVycmlkZTsKIAogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9leHByOwogICAgIH07CkBA
IC0xNTE4LDcgKzE1MjMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVHJ5Tm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBTdGF0ZW1lbnROb2RlKiB0cnlCbG9jaywgY29uc3QgSWRlbnRp
ZmllciYgZXhjZXB0aW9uSWRlbnQsIFN0YXRlbWVudE5vZGUqIGNhdGNoQmxvY2ssIFZhcmlhYmxl
RW52aXJvbm1lbnQmIGNhdGNoRW52aXJvbm1lbnQsIFN0YXRlbWVudE5vZGUqIGZpbmFsbHlCbG9j
ayk7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmly
dHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0g
MCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAgIFN0YXRl
bWVudE5vZGUqIG1fdHJ5QmxvY2s7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1fdGhyb3du
VmFsdWVJZGVudDsKQEAgLTE1NzIsNyArMTU3Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
ICAgIFN0YXRlbWVudE5vZGUqIHNpbmdsZVN0YXRlbWVudCgpIGNvbnN0OwogCi0gICAgICAgIHZv
aWQgZW1pdFN0YXRlbWVudHNCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
IGRlc3RpbmF0aW9uKTsKKyAgICAgICAgdm9pZCBlbWl0U3RhdGVtZW50c0J5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogZGVzdGluYXRpb24sIFRhaWxDYWxsTW9kZSA9IE5v
VGFpbENhbGxzKTsKICAgICAgICAgCiAgICAgICAgIHZvaWQgc2V0Q2xvc2VkVmFyaWFibGVzKFZl
Y3RvcjxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiYmKSB7IH0KIApAQCAtMTYwNSw3ICsxNjEw
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8VW5pcXVl
ZFN0cmluZ0ltcGw+PiYgY2xvc2VkVmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4gbV9jbG9zZWRW
YXJpYWJsZXM7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAgICAgICAg
IFZlY3RvcjxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiBtX2Nsb3NlZFZhcmlhYmxlczsKICAg
ICAgICAgdW5zaWduZWQgbV9zdGFydENvbHVtbjsKICAgICAgICAgdW5zaWduZWQgbV9lbmRDb2x1
bW47CkBAIC0xNjIxLDcgKzE2MjYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGlj
IGNvbnN0IGJvb2wgc2NvcGVJc0Z1bmN0aW9uID0gZmFsc2U7CiAKICAgICBwcml2YXRlOgotICAg
ICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWls
Q2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAgIHVuc2lnbmVkIG1fZW5kQ29sdW1uOwogICAgIH07
CkBAIC0xNjM2LDcgKzE2NDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGNv
bnN0IGJvb2wgc2NvcGVJc0Z1bmN0aW9uID0gZmFsc2U7CiAKICAgICBwcml2YXRlOgotICAgICAg
ICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2Fs
bHMpIG92ZXJyaWRlOwogICAgICAgICB1bnNpZ25lZCBtX3N0YXJ0Q29sdW1uOwogICAgICAgICB1
bnNpZ25lZCBtX2VuZENvbHVtbjsKICAgICB9OwpAQCAtMTY5NCw3ICsxNjk5LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIE1vZHVsZU5hbWVOb2RlKiBtb2R1bGVOYW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9tb2R1bGVOYW1lOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIHZv
aWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVy
cmlkZTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRl
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgYW5hbHl6ZU1vZHVsZShNb2R1bGVBbmFseXplciYpIG92
ZXJyaWRlOwogCiAgICAgICAgIEltcG9ydFNwZWNpZmllckxpc3ROb2RlKiBtX3NwZWNpZmllckxp
c3Q7CkBAIC0xNzA4LDcgKzE3MTMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTW9kdWxl
TmFtZU5vZGUqIG1vZHVsZU5hbWUoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZU5hbWU7IH0KIAog
ICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIHZv
aWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWls
Q2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBh
bmFseXplTW9kdWxlKE1vZHVsZUFuYWx5emVyJikgb3ZlcnJpZGU7CiAKICAgICAgICAgTW9kdWxl
TmFtZU5vZGUqIG1fbW9kdWxlTmFtZTsKQEAgLTE3MjIsNyArMTcyNyw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBsb2NhbE5hbWUoKSBjb25zdCB7IHJldHVy
biBtX2xvY2FsTmFtZTsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCB2b2lkIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7
CisgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKICAg
ICAgICAgdmlydHVhbCB2b2lkIGFuYWx5emVNb2R1bGUoTW9kdWxlQW5hbHl6ZXImKSBvdmVycmlk
ZTsKICAgICAgICAgU3RhdGVtZW50Tm9kZSogbV9kZWNsYXJhdGlvbjsKICAgICAgICAgY29uc3Qg
SWRlbnRpZmllciYgbV9sb2NhbE5hbWU7CkBAIC0xNzM1LDcgKzE3NDAsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgY29uc3QgU3RhdGVtZW50Tm9kZSYgZGVjbGFyYXRpb24oKSBjb25zdCB7
IHJldHVybiAqbV9kZWNsYXJhdGlvbjsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVh
bCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkg
b3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVy
cmlkZTsKICAgICAgICAgdmlydHVhbCB2b2lkIGFuYWx5emVNb2R1bGUoTW9kdWxlQW5hbHl6ZXIm
KSBvdmVycmlkZTsKICAgICAgICAgU3RhdGVtZW50Tm9kZSogbV9kZWNsYXJhdGlvbjsKICAgICB9
OwpAQCAtMTc3NCw3ICsxNzc5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE1vZHVsZU5h
bWVOb2RlKiBtb2R1bGVOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9tb2R1bGVOYW1lOyB9CiAKICAg
ICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCB2b2lk
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENh
bGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogICAgICAgICB2aXJ0dWFsIHZvaWQgYW5h
bHl6ZU1vZHVsZShNb2R1bGVBbmFseXplciYpIG92ZXJyaWRlOwogICAgICAgICBFeHBvcnRTcGVj
aWZpZXJMaXN0Tm9kZSogbV9zcGVjaWZpZXJMaXN0OwogICAgICAgICBNb2R1bGVOYW1lTm9kZSog
bV9tb2R1bGVOYW1lIHsgbnVsbHB0ciB9OwpAQCAtMTg3MSw3ICsxODc2LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICAgICAgRnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzKCkgY29uc3Qg
eyByZXR1cm4gbV9wYXJhbWV0ZXJzOyB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3Rl
cklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFpbENhbGxzKSBvdmVycmlkZTsKIAogICAgICAg
ICB2b2lkIGZpbmlzaFBhcnNpbmcoY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uTW9kZSk7CiAg
ICAgICAgIApAQCAtMTkwOCw3ICsxOTEzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEZ1
bmNFeHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgRnVu
Y3Rpb25NZXRhZGF0YU5vZGUqLCBjb25zdCBTb3VyY2VDb2RlJik7CiAKICAgICBwcml2YXRlOgot
ICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJ
RCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwLCBUYWls
Q2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7CiAKICAgICAgICAgdmlydHVhbCBib29s
IGlzRnVuY0V4cHJOb2RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIH07
CkBAIC0xOTE4LDcgKzE5MjMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgQXJyb3dGdW5j
RXhwck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0
aW9uTWV0YWRhdGFOb2RlKiwgY29uc3QgU291cmNlQ29kZSYpOwogCiAgICAgcHJpdmF0ZToKLSAg
ICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQq
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENh
bGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBp
c0Fycm93RnVuY0V4cHJOb2RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAg
IH07CkBAIC0xOTMyLDcgKzE5MzcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3Qg
SWRlbnRpZmllciYgbmFtZSgpIHsgcmV0dXJuIG1fbmFtZTsgfQogCiAgICAgcHJpdmF0ZToKLSAg
ICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQq
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENh
bGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAgIGNvbnN0IElkZW50aWZp
ZXImIG1fbmFtZTsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fY29uc3RydWN0b3JFeHByZXNz
aW9uOwpAQCAtMjAzOCw3ICsyMDQzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJpdmF0ZToK
ICAgICAgICAgdmlydHVhbCBib29sIGlzQXNzaWdubWVudExvY2F0aW9uKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNEZXN0cnVjdHVyaW5n
Tm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgdmlydHVhbCBS
ZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWls
Q2FsbHMpIG92ZXJyaWRlOwogCiAgICAgICAgIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSogbV9i
aW5kaW5nczsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1faW5pdGlhbGl6ZXI7CkBAIC0yMDUy
LDcgKzIwNTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRnVuY3Rpb25NZXRhZGF0YU5v
ZGUqIG1ldGFkYXRhKCkgeyByZXR1cm4gbV9tZXRhZGF0YTsgfQogCiAgICAgcHJpdmF0ZToKLSAg
ICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAsIFRhaWxDYWxsTW9kZSA9IE5vVGFp
bENhbGxzKSBvdmVycmlkZTsKIAogICAgICAgICBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbV9tZXRh
ZGF0YTsKICAgICB9OwpAQCAtMjA2Myw3ICsyMDY4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIENsYXNzRGVjbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUq
IGNsYXNzRXhwcmVzc2lvbik7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIHZvaWQg
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlk
ZTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqID0gMCwgVGFpbENhbGxNb2RlID0gTm9UYWlsQ2FsbHMpIG92ZXJyaWRlOwog
CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2NsYXNzRGVjbGFyYXRpb247CiAgICAgfTsKQEAg
LTIwNzUsNyArMjA4MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIEV4cHJlc3Npb25O
b2RlKiBleHByKCkgY29uc3QgeyByZXR1cm4gbV9leHByOyB9CiAKLSAgICAgICAgdm9pZCBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBkZXN0aW5hdGlvbik7Cisg
ICAgICAgIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
ZGVzdGluYXRpb24sIFRhaWxDYWxsTW9kZSk7CiAgICAgICAgIHZvaWQgc2V0U3RhcnRPZmZzZXQo
aW50IG9mZnNldCkgeyBtX3N0YXJ0T2Zmc2V0ID0gb2Zmc2V0OyB9CiAKICAgICBwcml2YXRlOgpA
QCAtMjEwMSw3ICsyMTA2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgogICAgICAg
ICBDYXNlQmxvY2tOb2RlKENsYXVzZUxpc3ROb2RlKiBsaXN0MSwgQ2FzZUNsYXVzZU5vZGUqIGRl
ZmF1bHRDbGF1c2UsIENsYXVzZUxpc3ROb2RlKiBsaXN0Mik7CiAKLSAgICAgICAgdm9pZCBlbWl0
Qnl0ZWNvZGVGb3JCbG9jayhCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIGlucHV0LCBS
ZWdpc3RlcklEKiBkZXN0aW5hdGlvbik7CisgICAgICAgIHZvaWQgZW1pdEJ5dGVjb2RlRm9yQmxv
Y2soQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBpbnB1dCwgUmVnaXN0ZXJJRCogZGVz
dGluYXRpb24sIFRhaWxDYWxsTW9kZSk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBTd2l0Y2hJ
bmZvOjpTd2l0Y2hUeXBlIHRyeVRhYmxlU3dpdGNoKFZlY3RvcjxFeHByZXNzaW9uTm9kZSosIDg+
JiBsaXRlcmFsVmVjdG9yLCBpbnQzMl90JiBtaW5fbnVtLCBpbnQzMl90JiBtYXhfbnVtKTsKQEAg
LTIxMTYsNyArMjEyMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTd2l0Y2hOb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiwgQ2FzZUJsb2NrTm9kZSosIFZh
cmlhYmxlRW52aXJvbm1lbnQmKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgdm9p
ZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJy
aWRlOworICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogPSAwLCBUYWlsQ2FsbE1vZGUgPSBOb1RhaWxDYWxscykgb3ZlcnJpZGU7
CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjsKICAgICAgICAgQ2FzZUJsb2NrTm9k
ZSogbV9ibG9jazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
dGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAppbmRleCAy
ZjdmZDM1MzJjYTI5NThlZDBjNDU1MzIzYTBjZjMxN2RmZWJkYjdkLi45YmFjYmQxYWU2ZjZiN2I4
NWRkZjFjZDc2OWE2N2U4YWE4ODlhYjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcHRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T3B0aW9ucy5oCkBAIC0xMjgsNiArMTI4LDcgQEAgdHlwZWRlZiBjb25zdCBjaGFyKiBvcHRpb25T
dHJpbmc7CiAgICAgdihib29sLCBmb3JjZVByb2ZpbGVyQnl0ZWNvZGVHZW5lcmF0aW9uLCBmYWxz
ZSwgbnVsbHB0cikgXAogICAgIFwKICAgICB2KGJvb2wsIGVuYWJsZUZ1bmN0aW9uRG90QXJndW1l
bnRzLCB0cnVlLCBudWxscHRyKSBcCisgICAgdihib29sLCBlbmFibGVUYWlsQ2FsbHMsIHRydWUs
IG51bGxwdHIpIFwKICAgICBcCiAgICAgLyogc2hvd0Rpc2Fzc2VtYmx5IGltcGxpZXMgc2hvd0RG
R0Rpc2Fzc2VtYmx5LiAqLyBcCiAgICAgdihib29sLCBzaG93RGlzYXNzZW1ibHksIGZhbHNlLCAi
ZHVtcHMgZGlzYXNzZW1ibHkgb2YgYWxsIEpJVCBjb21waWxlZCBjb2RlIHVwb24gY29tcGlsYXRp
b24iKSBcCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260380</attachid>
            <date>2015-09-01 14:09:04 -0700</date>
            <delta_ts>2015-09-14 11:02:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146481-20150901140847.patch</filename>
            <type>text/plain</type>
            <size>29085</size>
            <attacher name="Basile Clement">basile_clement</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MjI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
Mjg2ZjUzMWUyNGEzZjkxMzg2ZDIxMDc2MTI2ZjhiOWY1MzMyOTYxLi45ZDZmZGJlMjg4N2I2Y2Vh
NGYxMTg5MWU5ZTRlMWQwYmI5M2RhY2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NyBAQAorMjAxNS0wOS0wMSAgQmFzaWxlIENsZW1lbnQgIDxiYXNpbGVfY2xlbWVudEBh
cHBsZS5jb20+CisKKyAgICAgICAgW0VTNl0gUmVjb2duaXplIGNhbGxzIGluIHRhaWwgcG9zaXRp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NjQ4
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggYWRkcyB0aGUgY2FwYWJpbGl0eSBmb3IgdGhlIGJ5dGVjb2RlIGdlbmVyYXRvciB0byBy
ZWNvZ25pemUKKyAgICAgICAgYW5kIGRpc3BhdGNoIHRhaWwgY2FsbHMsIGFzIHBlciBFUzYgc3Bl
YzoKKyAgICAgICAgaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYu
MC8jc2VjLWlzaW50YWlscG9zaXRpb24KKworICAgICAgICBUaGlzIGRvZXMgbm90IGNoYW5nZSB0
aGUgZ2VuZXJhdGVkIGJ5dGVjb2RlLCBidXQgbWVyZWx5IHByb3ZpZGVzIHRoZQorICAgICAgICBo
b29rIGZvciBnZW5lcmF0aW5nIHRhaWwgY2FsbHMgaW4gc3Vic2VxdWVudCBwYXRjaGVzIHRvd2Fy
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2NDc3
CisKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGxJblRhaWxQb3NpdGlvbik6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbFZhcmFyZ3NJblRhaWxQb3NpdGlvbik6
CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChK
U0M6OlNldEZvclNjb3BlOjpTZXRGb3JTY29wZSk6CisgICAgICAgIChKU0M6OlNldEZvclNjb3Bl
Ojp+U2V0Rm9yU2NvcGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5v
ZGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5vZGVJblRhaWxQb3Np
dGlvbik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAg
IChKU0M6OkZ1bmN0aW9uQ2FsbFZhbHVlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpT
Qzo6RnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6
OkZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpG
dW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDYWxsRnVu
Y3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QXBwbHlGdW5j
dGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpMb2dpY2FsT3BO
b2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDb25kaXRpb25hbE5vZGU6OmVtaXRC
eXRlY29kZSk6CisgICAgICAgIChKU0M6OkNvbW1hTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAg
ICAgKEpTQzo6U291cmNlRWxlbWVudHM6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6Oklm
RWxzZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkRvV2hpbGVOb2RlOjplbWl0
Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpXaGlsZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAg
ICAgIChKU0M6OkZvck5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlJldHVybk5v
ZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OldpdGhOb2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpUcnlOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIHJ1bnRp
bWUvT3B0aW9ucy5oOgorCiAyMDE1LTA5LTAxICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29t
PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHByb3RvY29sIGdlbmVyYXRvciBzaG91bGQgbm90
IGFsbG93IG5vbi1ib29sZWFuIHZhbHVlcyBmb3IgIm9wdGlvbmFsIiBrZXkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAKaW5kZXggNzgzYjIxNTdhMWYxZTEzYzJlY2MxYWZmZjVlN2ZkYzQ5ZmU5ZTNkNy4uNDAyNDdi
YTc4NDJlNDZjMzM3MzQwYTNhMTMyMmZlMzRiZmI0YWQ0OSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAg
LTE4Myw2ICsxODMsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0m
IHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICwgbV92bSgmdm0p
CiAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGNvZGVCbG9jay0+aXNCdWlsdGluRnVuY3Rpb24o
KSkKICAgICAsIG1fdXNlc05vblN0cmljdEV2YWwoY29kZUJsb2NrLT51c2VzRXZhbCgpICYmICFj
b2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQorICAgICwgbV9pblRhaWxQb3NpdGlvbihPcHRpb25z
OjplbmFibGVUYWlsQ2FsbHMoKSAmJiBjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3Rvcktp
bmQ6Ok5vbmUgJiYgaXNTdHJpY3RNb2RlKCkpCiB7CiAgICAgZm9yIChhdXRvJiBjb25zdGFudFJl
Z2lzdGVyIDogbV9saW5rVGltZUNvbnN0YW50UmVnaXN0ZXJzKQogICAgICAgICBjb25zdGFudFJl
Z2lzdGVyID0gbnVsbHB0cjsKQEAgLTI0NjgsNiArMjQ2OSwxNCBAQCBSZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdENhbGwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5j
LCBFeHBlYwogICAgIHJldHVybiBlbWl0Q2FsbChvcF9jYWxsLCBkc3QsIGZ1bmMsIGV4cGVjdGVk
RnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CiB9
CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbEluVGFpbFBvc2l0aW9u
KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgRXhwZWN0ZWRGdW5jdGlvbiBleHBl
Y3RlZEZ1bmN0aW9uLCBDYWxsQXJndW1lbnRzJiBjYWxsQXJndW1lbnRzLCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCit7CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBl
bWl0dGluZyBhIG5ldyBvcF90YWlsX2NhbGwgaGVyZSB3aGVuCisgICAgLy8gbV9pblRhaWxQb3Np
dGlvbiBpcyBmYWxzZQorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDg2NjEKKyAgICByZXR1cm4gZW1pdENhbGwob3BfY2FsbCwgZHN0LCBmdW5jLCBleHBl
Y3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQp
OworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGxFdmFsKFJlZ2lz
dGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgQ2FsbEFyZ3VtZW50cyYgY2FsbEFyZ3VtZW50
cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKQogewogICAgIHJldHVybiBl
bWl0Q2FsbChvcF9jYWxsX2V2YWwsIGRzdCwgZnVuYywgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxs
QXJndW1lbnRzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOwpAQCAtMjYxNyw2ICsyNjI2
LDE0IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbFZhcmFyZ3MoUmVn
aXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jCiAgICAgcmV0dXJuIGVtaXRDYWxsVmFyYXJn
cyhvcF9jYWxsX3ZhcmFyZ3MsIGRzdCwgZnVuYywgdGhpc1JlZ2lzdGVyLCBhcmd1bWVudHMsIGZp
cnN0RnJlZVJlZ2lzdGVyLCBmaXJzdFZhckFyZ09mZnNldCwgcHJvZmlsZUhvb2tSZWdpc3Rlciwg
ZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRDYWxsVmFyYXJnc0luVGFpbFBvc2l0aW9uKFJlZ2lzdGVySUQqIGRzdCwg
UmVnaXN0ZXJJRCogZnVuYywgUmVnaXN0ZXJJRCogdGhpc1JlZ2lzdGVyLCBSZWdpc3RlcklEKiBh
cmd1bWVudHMsIFJlZ2lzdGVySUQqIGZpcnN0RnJlZVJlZ2lzdGVyLCBpbnQzMl90IGZpcnN0VmFy
QXJnT2Zmc2V0LCBSZWdpc3RlcklEKiBwcm9maWxlSG9va1JlZ2lzdGVyLCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCit7CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBl
bWl0dGluZyBhIG5ldyBvcF90YWlsX2NhbGwgaGVyZSB3aGVuCisgICAgLy8gbV9pblRhaWxQb3Np
dGlvbiBpcyBmYWxzZQorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDg2NjEKKyAgICByZXR1cm4gZW1pdENhbGxWYXJhcmdzKG9wX2NhbGxfdmFyYXJncywg
ZHN0LCBmdW5jLCB0aGlzUmVnaXN0ZXIsIGFyZ3VtZW50cywgZmlyc3RGcmVlUmVnaXN0ZXIsIGZp
cnN0VmFyQXJnT2Zmc2V0LCBwcm9maWxlSG9va1JlZ2lzdGVyLCBkaXZvdCwgZGl2b3RTdGFydCwg
ZGl2b3RFbmQpOworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENvbnN0
cnVjdFZhcmFyZ3MoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBSZWdpc3RlcklE
KiB0aGlzUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGFyZ3VtZW50cywgUmVnaXN0ZXJJRCogZmlyc3RG
cmVlUmVnaXN0ZXIsIGludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQsIFJlZ2lzdGVySUQqIHByb2Zp
bGVIb29rUmVnaXN0ZXIsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKIHsK
ICAgICByZXR1cm4gZW1pdENhbGxWYXJhcmdzKG9wX2NvbnN0cnVjdF92YXJhcmdzLCBkc3QsIGZ1
bmMsIHRoaXNSZWdpc3RlciwgYXJndW1lbnRzLCBmaXJzdEZyZWVSZWdpc3RlciwgZmlyc3RWYXJB
cmdPZmZzZXQsIHByb2ZpbGVIb29rUmVnaXN0ZXIsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVu
ZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmgKaW5kZXggZWJmN2QxNzJiOGUxOWQ4MThmYjA1YjFlOGJlZDYyMWQ1YWFj
NjA0YS4uZWM0MDgxZmNhMzIwZjY4OGM3ZDhjNmEyNmQzZGRhNmExOGM5YzQ5ZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaApAQCAtNjQsNiArNjQsMzMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEV4cGVjdEFy
cmF5Q29uc3RydWN0b3IKICAgICB9OwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBj
bGFzcyBTZXRGb3JTY29wZSB7CisgICAgcHVibGljOgorICAgICAgICBTZXRGb3JTY29wZShUJiBj
dXJyZW50VmFsdWUsIGNvbnN0IFQmIG5ld1ZhbHVlKQorICAgICAgICAgICAgOiBtX3JlZihjdXJy
ZW50VmFsdWUpCisgICAgICAgICAgICAsIG1fb2xkVmFsdWUoY3VycmVudFZhbHVlKQorICAgICAg
ICB7CisgICAgICAgICAgICBtX3JlZiA9IG5ld1ZhbHVlOworICAgICAgICB9CisKKyAgICAgICAg
U2V0Rm9yU2NvcGUoVCYgY3VycmVudFZhbHVlLCBUJiYgbmV3VmFsdWUpCisgICAgICAgICAgICA6
IG1fcmVmKGN1cnJlbnRWYWx1ZSkKKyAgICAgICAgICAgICwgbV9vbGRWYWx1ZShjdXJyZW50VmFs
dWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGN1cnJlbnRWYWx1ZSA9IFdURjo6bW92ZShuZXdW
YWx1ZSk7CisgICAgICAgIH0KKworICAgICAgICB+U2V0Rm9yU2NvcGUoKQorICAgICAgICB7Cisg
ICAgICAgICAgICBtX3JlZiA9IG1fb2xkVmFsdWU7CisgICAgICAgIH0KKworICAgIHByaXZhdGU6
CisgICAgICAgIFQmIG1fcmVmOworICAgICAgICBUIG1fb2xkVmFsdWU7CisgICAgfTsKKwogICAg
IGNsYXNzIENhbGxBcmd1bWVudHMgewogICAgIHB1YmxpYzoKICAgICAgICAgQ2FsbEFyZ3VtZW50
cyhCeXRlY29kZUdlbmVyYXRvciYsIEFyZ3VtZW50c05vZGUqLCB1bnNpZ25lZCBhZGRpdGlvbmFs
QXJndW1lbnRzID0gMCk7CkBAIC0zNTksNiArMzg2LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgICAgIHZvaWQgZW1pdE5vZGUoUmVnaXN0ZXJJRCogZHN0LCBTdGF0ZW1lbnROb2RlKiBuKQog
ICAgICAgICB7CisgICAgICAgICAgICBTZXRGb3JTY29wZTxib29sPiB0YWlsUG9zaXRpb25Qb2lz
b25lcihtX2luVGFpbFBvc2l0aW9uLCBmYWxzZSk7CisgICAgICAgICAgICByZXR1cm4gZW1pdE5v
ZGVJblRhaWxQb3NpdGlvbihkc3QsIG4pOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBlbWl0
Tm9kZUluVGFpbFBvc2l0aW9uKFJlZ2lzdGVySUQqIGRzdCwgU3RhdGVtZW50Tm9kZSogbikKKyAg
ICAgICAgewogICAgICAgICAgICAgLy8gTm9kZTo6ZW1pdENvZGUgYXNzdW1lcyB0aGF0IGRzdCwg
aWYgcHJvdmlkZWQsIGlzIGVpdGhlciBhIGxvY2FsIG9yIGEgcmVmZXJlbmNlZCB0ZW1wb3Jhcnku
CiAgICAgICAgICAgICBBU1NFUlQoIWRzdCB8fCBkc3QgPT0gaWdub3JlZFJlc3VsdCgpIHx8ICFk
c3QtPmlzVGVtcG9yYXJ5KCkgfHwgZHN0LT5yZWZDb3VudCgpKTsKICAgICAgICAgICAgIGlmICgh
bV92bS0+aXNTYWZlVG9SZWN1cnNlKCkpIHsKQEAgLTM3MCwxMSArNDAzLDIyIEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgICAgIHZvaWQgZW1pdE5vZGUoU3RhdGVtZW50Tm9kZSogbikKICAgICAg
ICAgewotICAgICAgICAgICAgZW1pdE5vZGUoMCwgbik7CisgICAgICAgICAgICBlbWl0Tm9kZShu
dWxscHRyLCBuKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgZW1pdE5vZGVJblRhaWxQb3Np
dGlvbihTdGF0ZW1lbnROb2RlKiBuKQorICAgICAgICB7CisgICAgICAgICAgICBlbWl0Tm9kZUlu
VGFpbFBvc2l0aW9uKG51bGxwdHIsIG4pOwogICAgICAgICB9CiAKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdE5vZGUoUmVnaXN0ZXJJRCogZHN0LCBFeHByZXNzaW9uTm9kZSogbikKICAgICAgICAg
eworICAgICAgICAgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gdGFpbFBvc2l0aW9uUG9pc29uZXIobV9p
blRhaWxQb3NpdGlvbiwgZmFsc2UpOworICAgICAgICAgICAgcmV0dXJuIGVtaXROb2RlSW5UYWls
UG9zaXRpb24oZHN0LCBuKTsKKyAgICAgICAgfQorCisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRO
b2RlSW5UYWlsUG9zaXRpb24oUmVnaXN0ZXJJRCogZHN0LCBFeHByZXNzaW9uTm9kZSogbikKKyAg
ICAgICAgewogICAgICAgICAgICAgLy8gTm9kZTo6ZW1pdENvZGUgYXNzdW1lcyB0aGF0IGRzdCwg
aWYgcHJvdmlkZWQsIGlzIGVpdGhlciBhIGxvY2FsIG9yIGEgcmVmZXJlbmNlZCB0ZW1wb3Jhcnku
CiAgICAgICAgICAgICBBU1NFUlQoIWRzdCB8fCBkc3QgPT0gaWdub3JlZFJlc3VsdCgpIHx8ICFk
c3QtPmlzVGVtcG9yYXJ5KCkgfHwgZHN0LT5yZWZDb3VudCgpKTsKICAgICAgICAgICAgIGlmICgh
bV92bS0+aXNTYWZlVG9SZWN1cnNlKCkpCkBAIC0zODQsNyArNDI4LDEyIEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROb2RlKEV4cHJlc3Npb25Ob2RlKiBuKQog
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdE5vZGUoMCwgbik7CisgICAgICAgICAg
ICByZXR1cm4gZW1pdE5vZGUobnVsbHB0ciwgbik7CisgICAgICAgIH0KKworICAgICAgICBSZWdp
c3RlcklEKiBlbWl0Tm9kZUluVGFpbFBvc2l0aW9uKEV4cHJlc3Npb25Ob2RlKiBuKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gZW1pdE5vZGVJblRhaWxQb3NpdGlvbihudWxscHRyLCBu
KTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgZW1pdE5vZGVJbkNvbmRpdGlvbkNvbnRleHQo
RXhwcmVzc2lvbk5vZGUqIG4sIExhYmVsKiB0cnVlVGFyZ2V0LCBMYWJlbCogZmFsc2VUYXJnZXQs
IEZhbGxUaHJvdWdoTW9kZSBmYWxsVGhyb3VnaE1vZGUpCkBAIC01MTgsOCArNTY3LDEwIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgRXhwZWN0ZWRGdW5jdGlvbiBleHBlY3Rl
ZEZ1bmN0aW9uRm9ySWRlbnRpZmllcihjb25zdCBJZGVudGlmaWVyJik7CiAgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXRDYWxsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgRXhwZWN0
ZWRGdW5jdGlvbiwgQ2FsbEFyZ3VtZW50cyYsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwg
Y29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBk
aXZvdEVuZCk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDYWxsSW5UYWlsUG9zaXRpb24oUmVn
aXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBFeHBlY3RlZEZ1bmN0aW9uLCBDYWxsQXJn
dW1lbnRzJiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlv
biYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKICAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdENhbGxFdmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVu
YywgQ2FsbEFyZ3VtZW50cyYsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDYWxsVmFyYXJncyhSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIGZ1bmMsIFJlZ2lzdGVySUQqIHRoaXNSZWdpc3RlciwgUmVnaXN0ZXJJRCogYXJn
dW1lbnRzLCBSZWdpc3RlcklEKiBmaXJzdEZyZWVSZWdpc3RlciwgaW50MzJfdCBmaXJzdFZhckFy
Z09mZnNldCwgUmVnaXN0ZXJJRCogcHJvZmlsZUhvb2tSZWdpc3RlciwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENhbGxWYXJh
cmdzSW5UYWlsUG9zaXRpb24oUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBSZWdp
c3RlcklEKiB0aGlzUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGFyZ3VtZW50cywgUmVnaXN0ZXJJRCog
Zmlyc3RGcmVlUmVnaXN0ZXIsIGludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQsIFJlZ2lzdGVySUQq
IHByb2ZpbGVIb29rUmVnaXN0ZXIsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVu
ZCk7CiAKICAgICAgICAgZW51bSBQcm9wZXJ0eURlc2NyaXB0b3JPcHRpb24gewogICAgICAgICAg
ICAgUHJvcGVydHlDb25maWd1cmFibGUgPSAxLApAQCAtODMzLDYgKzg4NCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBib29sIG1fZXhwcmVzc2lvblRvb0RlZXAgeyBmYWxzZSB9OwogICAg
ICAgICBib29sIG1faXNCdWlsdGluRnVuY3Rpb24geyBmYWxzZSB9OwogICAgICAgICBib29sIG1f
dXNlc05vblN0cmljdEV2YWwgeyBmYWxzZSB9OworICAgICAgICBib29sIG1faW5UYWlsUG9zaXRp
b24geyBmYWxzZSB9OwogICAgIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCBkMzI4Nzc4MjBmYmExNDlkMjQ0
NTEyMWNmZTY5MTNiNDA3NTYzNmZkLi45MzkwYWZlZjVkODgxMjc2MzdlMWY3YTY1Y2FmZmZmYTFj
YjM4ZTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05v
ZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9O
b2Rlc0NvZGVnZW4uY3BwCkBAIC03MTMsNyArNzEzLDcgQEAgUmVnaXN0ZXJJRCogRnVuY3Rpb25D
YWxsVmFsdWVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmUKICAgICAgICAgcmV0dXJuIHJldDsKICAgICB9CiAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGNh
bGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOwotICAgIFJlZ2lzdGVy
SUQqIHJldCA9IGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwgZnVuYy5nZXQo
KSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0
KCksIGRpdm90RW5kKCkpOworICAgIFJlZ2lzdGVySUQqIHJldCA9IGdlbmVyYXRvci5lbWl0Q2Fs
bEluVGFpbFBvc2l0aW9uKHJldHVyblZhbHVlLmdldCgpLCBmdW5jLmdldCgpLCBOb0V4cGVjdGVk
RnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQo
KSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShyZXR1cm5WYWx1ZS5nZXQoKSwgZGl2
b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICByZXR1cm4gcmV0OwogfQpAQCAtNzMzLDcgKzcz
Myw3IEBAIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2Fk
KGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOwogICAgICAgICAv
LyBUaGlzIHBhc3NlcyBOb0V4cGVjdGVkRnVuY3Rpb24gYmVjYXVzZSB3ZSBleHBlY3QgdGhhdCBp
ZiB0aGUgZnVuY3Rpb24gaXMgaW4gYQogICAgICAgICAvLyBsb2NhbCB2YXJpYWJsZSwgdGhlbiBp
dCdzIG5vdCBvbmUgb2Ygb3VyIGJ1aWx0LWluIGNvbnN0cnVjdG9ycy4KLSAgICAgICAgUmVnaXN0
ZXJJRCogcmV0ID0gZ2VuZXJhdG9yLmVtaXRDYWxsKHJldHVyblZhbHVlLmdldCgpLCBmdW5jLmdl
dCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3Rh
cnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgIFJlZ2lzdGVySUQqIHJldCA9IGdlbmVyYXRvci5l
bWl0Q2FsbEluVGFpbFBvc2l0aW9uKHJldHVyblZhbHVlLmdldCgpLCBmdW5jLmdldCgpLCBOb0V4
cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2
b3RFbmQoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocmV0dXJuVmFsdWUu
Z2V0KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgIHJldHVybiByZXQ7CiAg
ICAgfQpAQCAtNzQ5LDcgKzc0OSw3IEBAIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbFJlc29sdmVO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwKICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwg
dmFyKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUoZnVuYy5nZXQoKSwgY2FsbEFy
Z3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgdmFyLCBUaHJvd0lmTm90Rm91bmQpOwogICAgIGdlbmVy
YXRvci5lbWl0VERaQ2hlY2tJZk5lY2Vzc2FyeSh2YXIsIGZ1bmMuZ2V0KCksIG51bGxwdHIpOwot
ICAgIFJlZ2lzdGVySUQqIHJldCA9IGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQo
KSwgZnVuYy5nZXQoKSwgZXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwg
ZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICBSZWdpc3RlcklEKiByZXQgPSBnZW5lcmF0
b3IuZW1pdENhbGxJblRhaWxQb3NpdGlvbihyZXR1cm5WYWx1ZS5nZXQoKSwgZnVuYy5nZXQoKSwg
ZXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBk
aXZvdEVuZCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHJldHVyblZhbHVlLmdl
dCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIHJldHVybiByZXQ7CiB9CkBAIC04
MTcsNyArODE3LDcgQEAgUmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxsQnJhY2tldE5vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLAogICAgICAgICBnZW5lcmF0b3Iu
ZW1pdE1vdmUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLnRoaXNSZWdp
c3RlcigpKTsKICAgICBlbHNlCiAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1l
bnRzLnRoaXNSZWdpc3RlcigpLCBiYXNlLmdldCgpKTsKLSAgICBSZWdpc3RlcklEKiByZXQgPSBn
ZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0aW9uLmdldCgpLCBOb0V4
cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2
b3RFbmQoKSk7CisgICAgUmVnaXN0ZXJJRCogcmV0ID0gZ2VuZXJhdG9yLmVtaXRDYWxsSW5UYWls
UG9zaXRpb24ocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVu
Y3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7
CiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShyZXR1cm5WYWx1ZS5nZXQoKSwgZGl2b3RT
dGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICByZXR1cm4gcmV0OwogfQpAQCAtODM2LDcgKzgzNiw3
IEBAIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShj
YWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBtX2Jhc2UpOwogICAgIGdlbmVyYXRvci5lbWl0
RXhwcmVzc2lvbkluZm8oc3ViZXhwcmVzc2lvbkRpdm90KCksIHN1YmV4cHJlc3Npb25TdGFydCgp
LCBzdWJleHByZXNzaW9uRW5kKCkpOwogICAgIGdlbmVyYXRvci5lbWl0R2V0QnlJZChmdW5jdGlv
bi5nZXQoKSwgYmFzZUlzU3VwZXIgPyBlbWl0U3VwZXJCYXNlRm9yQ2FsbGVlKGdlbmVyYXRvcikg
OiBjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBtX2lkZW50KTsKLSAgICBSZWdpc3RlcklE
KiByZXQgPSBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0aW9uLmdl
dCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3Rh
cnQoKSwgZGl2b3RFbmQoKSk7CisgICAgUmVnaXN0ZXJJRCogcmV0ID0gZ2VuZXJhdG9yLmVtaXRD
YWxsSW5UYWlsUG9zaXRpb24ocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0aW9uLmdldCgpLCBOb0V4
cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2
b3RFbmQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShyZXR1cm5WYWx1ZS5nZXQo
KSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICByZXR1cm4gcmV0OwogfQpAQCAtODY1
LDcgKzg2NSw3IEBAIFJlZ2lzdGVySUQqIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwKICAgICAgICAgICAgIGFyZ3VtZW50
c1JlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXROb2RlKHN1YmplY3QpOwogICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhzcHJlYWQtPmRpdm90KCksIHNwcmVhZC0+ZGl2b3RT
dGFydCgpLCBzcHJlYWQtPmRpdm90RW5kKCkpOwogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHRoaXNSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0R2V0QnlWYWwoZ2VuZXJhdG9yLm5ld1Rl
bXBvcmFyeSgpLCBhcmd1bWVudHNSZWdpc3Rlci5nZXQoKSwgZ2VuZXJhdG9yLmVtaXRMb2FkKDAs
IGpzTnVtYmVyKDApKSk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGxWYXJhcmdzKHJl
dHVyblZhbHVlLmdldCgpLCBiYXNlLmdldCgpLCB0aGlzUmVnaXN0ZXIuZ2V0KCksIGFyZ3VtZW50
c1JlZ2lzdGVyLmdldCgpLCBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIDEsIHByb2ZpbGVIb29r
UmVnaXN0ZXIuZ2V0KCksIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGxWYXJhcmdzSW5UYWlsUG9zaXRpb24ocmV0dXJuVmFs
dWUuZ2V0KCksIGJhc2UuZ2V0KCksIHRoaXNSZWdpc3Rlci5nZXQoKSwgYXJndW1lbnRzUmVnaXN0
ZXIuZ2V0KCksIGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgMSwgcHJvZmlsZUhvb2tSZWdpc3Rl
ci5nZXQoKSwgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgfSBl
bHNlIGlmIChtX2FyZ3MtPm1fbGlzdE5vZGUgJiYgbV9hcmdzLT5tX2xpc3ROb2RlLT5tX2V4cHIp
IHsKICAgICAgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIG9sZExpc3QgPSBtX2FyZ3MtPm1fbGlz
dE5vZGU7CiAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5v
ZGUtPm1fbmV4dDsKQEAgLTg3MywxMyArODczLDEzIEBAIFJlZ2lzdGVySUQqIENhbGxGdW5jdGlv
bkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwK
ICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3Iu
ZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpKTsKICAg
ICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7
CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0
ZXIoKSwgb2xkTGlzdC0+bV9leHByKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChy
ZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24s
IGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGxJblRhaWxQb3NpdGlvbihyZXR1cm5WYWx1ZS5nZXQo
KSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMs
IGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgICAgICBtX2FyZ3Mt
Pm1fbGlzdE5vZGUgPSBvbGRMaXN0OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0
b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwogICAgICAgICAgICAgQ2FsbEFy
Z3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5l
ZCgpKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXR1cm5WYWx1ZS5nZXQoKSwg
cmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRp
dm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdENhbGxJblRhaWxQb3NpdGlvbihyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdl
dCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3Rh
cnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKGVtaXRDYWxsQ2hl
Y2spIHsKQEAgLTg4OCw3ICs4ODgsNyBAQCBSZWdpc3RlcklEKiBDYWxsRnVuY3Rpb25DYWxsRG90
Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsCiAgICAgICAg
IHsKICAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1f
YXJncyk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE1vdmUoY2FsbEFyZ3VtZW50cy50aGlz
UmVnaXN0ZXIoKSwgYmFzZS5nZXQoKSk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwo
cmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNh
bGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAg
ICAgICBnZW5lcmF0b3IuZW1pdENhbGxJblRhaWxQb3NpdGlvbihyZXR1cm5WYWx1ZS5nZXQoKSwg
ZnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3Qo
KSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgfQogICAgICAgICBnZW5lcmF0
b3IuZW1pdExhYmVsKGVuZC5nZXQoKSk7CiAgICAgfQpAQCAtOTUxLDcgKzk1MSw3IEBAIFJlZ2lz
dGVySUQqIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsCiAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TGFi
ZWwoZW5kLmdldCgpKTsKICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0RW51bWVyYXRpb24odGhpcywgc3ByZWFkLT5leHByZXNzaW9uKCksIGV4dHJhY3Rv
cik7Ci0gICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsVmFyYXJncyhyZXR1cm5WYWx1
ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCB0aGlzUmVnaXN0ZXIuZ2V0KCksIGFyZ3VtZW50
c1JlZ2lzdGVyLmdldCgpLCBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIDAsIHByb2ZpbGVIb29r
UmVnaXN0ZXIuZ2V0KCksIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAg
ICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsVmFyYXJnc0luVGFpbFBvc2l0aW9uKHJldHVy
blZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIHRoaXNSZWdpc3Rlci5nZXQoKSwgYXJn
dW1lbnRzUmVnaXN0ZXIuZ2V0KCksIGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgMCwgcHJvZmls
ZUhvb2tSZWdpc3Rlci5nZXQoKSwgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsK
ICAgICAgICAgICAgIH0gZWxzZSBpZiAobV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQpIHsKICAg
ICAgICAgICAgICAgICBBU1NFUlQobV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fZXhwci0+
aXNTaW1wbGVBcnJheSgpKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoIW1fYXJncy0+bV9saXN0
Tm9kZS0+bV9uZXh0LT5tX25leHQpOwpAQCAtOTU5LDIwICs5NTksMjAgQEAgUmVnaXN0ZXJJRCog
QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwKICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0
aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwg
YmFzZS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRz
KGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUo
Y2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgb2xkTGlzdC0+bV9leHByKTsKLSAgICAgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwocmV0dXJuVmFsdWUuZ2V0KCksIHJlYWxGdW5jdGlv
bi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZv
dFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2Fs
bEluVGFpbFBvc2l0aW9uKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5v
RXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBk
aXZvdEVuZCgpKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgbV9hcmdz
LT5tX2xpc3ROb2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQ7CiAgICAgICAgICAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShn
ZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwogICAgICAgICAgICAg
ICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CiAgICAg
ICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVy
KCksIG9sZExpc3QtPm1fZXhwcik7Ci0gICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxs
KHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlv
biwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAg
ICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGxJblRhaWxQb3NpdGlvbihyZXR1cm5WYWx1
ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1
bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBvbGRMaXN0OwogICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVy
YXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkp
OwogICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9h
cmdzKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRzLnRoaXNS
ZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2Fs
bChyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rp
b24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Cisg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGxJblRhaWxQb3NpdGlvbihyZXR1cm5WYWx1ZS5n
ZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVu
dHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgIH0KICAgICB9
IGVsc2UgewogICAgICAgICBBU1NFUlQobV9hcmdzLT5tX2xpc3ROb2RlICYmIG1fYXJncy0+bV9s
aXN0Tm9kZS0+bV9uZXh0KTsKQEAgLTk5MCwxNCArOTkwLDE0IEBAIFJlZ2lzdGVySUQqIEFwcGx5
RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsCiAgICAgICAgIHdoaWxlICgoYXJncyA9IGFyZ3MtPm1fbmV4dCkpCiAgICAgICAgICAg
ICBnZW5lcmF0b3IuZW1pdE5vZGUoYXJncy0+bV9leHByKTsKIAotICAgICAgICBnZW5lcmF0b3Iu
ZW1pdENhbGxWYXJhcmdzKHJldHVyblZhbHVlLmdldCgpLCByZWFsRnVuY3Rpb24uZ2V0KCksIHRo
aXNSZWdpc3Rlci5nZXQoKSwgYXJnc1JlZ2lzdGVyLmdldCgpLCBnZW5lcmF0b3IubmV3VGVtcG9y
YXJ5KCksIDAsIHByb2ZpbGVIb29rUmVnaXN0ZXIuZ2V0KCksIGRpdm90KCksIGRpdm90U3RhcnQo
KSwgZGl2b3RFbmQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbFZhcmFyZ3NJblRhaWxQ
b3NpdGlvbihyZXR1cm5WYWx1ZS5nZXQoKSwgcmVhbEZ1bmN0aW9uLmdldCgpLCB0aGlzUmVnaXN0
ZXIuZ2V0KCksIGFyZ3NSZWdpc3Rlci5nZXQoKSwgZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCAw
LCBwcm9maWxlSG9va1JlZ2lzdGVyLmdldCgpLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90
RW5kKCkpOwogICAgIH0KICAgICBpZiAoZW1pdENhbGxDaGVjaykgewogICAgICAgICBnZW5lcmF0
b3IuZW1pdEp1bXAoZW5kLmdldCgpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChyZWFs
Q2FsbC5nZXQoKSk7CiAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0
b3IsIG1fYXJncyk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRo
aXNSZWdpc3RlcigpLCBiYXNlLmdldCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKHJl
dHVyblZhbHVlLmdldCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxs
QXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICBn
ZW5lcmF0b3IuZW1pdENhbGxJblRhaWxQb3NpdGlvbihyZXR1cm5WYWx1ZS5nZXQoKSwgZnVuY3Rp
b24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2
b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChlbmQu
Z2V0KCkpOwogICAgIH0KICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHJldHVyblZhbHVl
LmdldCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwpAQCAtMTYzMiw3ICsxNjMyLDcgQEAg
UmVnaXN0ZXJJRCogTG9naWNhbE9wTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZGYWxz
ZSh0ZW1wLmdldCgpLCB0YXJnZXQuZ2V0KCkpOwogICAgIGVsc2UKICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRKdW1wSWZUcnVlKHRlbXAuZ2V0KCksIHRhcmdldC5nZXQoKSk7Ci0gICAgZ2VuZXJhdG9y
LmVtaXROb2RlKHRlbXAuZ2V0KCksIG1fZXhwcjIpOworICAgIGdlbmVyYXRvci5lbWl0Tm9kZUlu
VGFpbFBvc2l0aW9uKHRlbXAuZ2V0KCksIG1fZXhwcjIpOwogICAgIGdlbmVyYXRvci5lbWl0TGFi
ZWwodGFyZ2V0LmdldCgpKTsKIAogICAgIHJldHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRp
b25JZk5lZWRlZChkc3QsIHRlbXAuZ2V0KCkpOwpAQCAtMTY2MywxMiArMTY2MywxMiBAQCBSZWdp
c3RlcklEKiBDb25kaXRpb25hbE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcgogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoYmVmb3JlVGhlbi5n
ZXQoKSk7CiAKICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVDb250cm9sRmxvdyhtX2V4cHIxLT5z
dGFydE9mZnNldCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdE5vZGUobmV3RHN0LmdldCgpLCBtX2V4
cHIxKTsKKyAgICBnZW5lcmF0b3IuZW1pdE5vZGVJblRhaWxQb3NpdGlvbihuZXdEc3QuZ2V0KCks
IG1fZXhwcjEpOwogICAgIGdlbmVyYXRvci5lbWl0SnVtcChhZnRlckVsc2UuZ2V0KCkpOwogCiAg
ICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChiZWZvcmVFbHNlLmdldCgpKTsKICAgICBnZW5lcmF0b3Iu
ZW1pdFByb2ZpbGVDb250cm9sRmxvdyhtX2V4cHIxLT5lbmRPZmZzZXQoKSArIDEpOwotICAgIGdl
bmVyYXRvci5lbWl0Tm9kZShuZXdEc3QuZ2V0KCksIG1fZXhwcjIpOworICAgIGdlbmVyYXRvci5l
bWl0Tm9kZUluVGFpbFBvc2l0aW9uKG5ld0RzdC5nZXQoKSwgbV9leHByMik7CiAKICAgICBnZW5l
cmF0b3IuZW1pdExhYmVsKGFmdGVyRWxzZS5nZXQoKSk7CiAKQEAgLTE5MjYsNyArMTkyNiw3IEBA
IFJlZ2lzdGVySUQqIENvbW1hTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzCiAgICAgQ29tbWFOb2RlKiBub2RlID0gdGhpczsKICAg
ICBmb3IgKDsgbm9kZSAmJiBub2RlLT5uZXh0KCk7IG5vZGUgPSBub2RlLT5uZXh0KCkpCiAgICAg
ICAgIGdlbmVyYXRvci5lbWl0Tm9kZShnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpLCBub2RlLT5t
X2V4cHIpOwotICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBub2RlLT5tX2V4cHIp
OworICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdE5vZGVJblRhaWxQb3NpdGlvbihkc3QsIG5vZGUt
Pm1fZXhwcik7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTb3VyY2VF
bGVtZW50cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xOTQwLDcgKzE5NDAs
NyBAQCBpbmxpbmUgU3RhdGVtZW50Tm9kZSogU291cmNlRWxlbWVudHM6Omxhc3RTdGF0ZW1lbnQo
KSBjb25zdAogaW5saW5lIHZvaWQgU291cmNlRWxlbWVudHM6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgZm9yIChTdGF0
ZW1lbnROb2RlKiBzdGF0ZW1lbnQgPSBtX2hlYWQ7IHN0YXRlbWVudDsgc3RhdGVtZW50ID0gc3Rh
dGVtZW50LT5uZXh0KCkpCi0gICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIHN0YXRlbWVu
dCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZUluVGFpbFBvc2l0aW9uKGRzdCwgc3RhdGVt
ZW50KTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEJsb2NrTm9kZSAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTIwOTQsNyArMjA5NCw3IEBA
IHZvaWQgSWZFbHNlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqIGRzdCkKICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVDb250cm9sRmxv
dyhtX2lmQmxvY2stPnN0YXJ0T2Zmc2V0KCkpOwogCiAgICAgaWYgKCFkaWRGb2xkSWZCbG9jaykg
ewotICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX2lmQmxvY2spOworICAgICAgICBn
ZW5lcmF0b3IuZW1pdE5vZGVJblRhaWxQb3NpdGlvbihkc3QsIG1faWZCbG9jayk7CiAgICAgICAg
IGlmIChtX2Vsc2VCbG9jaykKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChhZnRlckVs
c2UuZ2V0KCkpOwogICAgIH0KQEAgLTIxMDMsNyArMjEwMyw3IEBAIHZvaWQgSWZFbHNlTm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRz
dCkKIAogICAgIGlmIChtX2Vsc2VCbG9jaykgewogICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2Zp
bGVDb250cm9sRmxvdyhtX2lmQmxvY2stPmVuZE9mZnNldCgpICsgKG1faWZCbG9jay0+aXNCbG9j
aygpID8gMSA6IDApKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9lbHNlQmxv
Y2spOworICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGVJblRhaWxQb3NpdGlvbihkc3QsIG1fZWxz
ZUJsb2NrKTsKICAgICB9CiAKICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGFmdGVyRWxzZS5nZXQo
KSk7CkBAIC0yMTIyLDcgKzIxMjIsNyBAQCB2b2lkIERvV2hpbGVOb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogICAgIGdlbmVy
YXRvci5lbWl0TG9vcEhpbnQoKTsKICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhl
Y3V0ZVN0YXRlbWVudCwgbGFzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0
KCkpOwogCi0gICAgZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9zdGF0ZW1lbnQpOworICAgIGdl
bmVyYXRvci5lbWl0Tm9kZUluVGFpbFBvc2l0aW9uKGRzdCwgbV9zdGF0ZW1lbnQpOwogCiAgICAg
Z2VuZXJhdG9yLmVtaXRMYWJlbChzY29wZS0+Y29udGludWVUYXJnZXQoKSk7CiAgICAgZ2VuZXJh
dG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGxhc3RMaW5lKCksIHN0YXJ0
T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKQEAgLTIxNDUsNyArMjE0NSw3IEBAIHZvaWQg
V2hpbGVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCogZHN0KQogICAgIGdlbmVyYXRvci5lbWl0TG9vcEhpbnQoKTsKICAgICAKICAgICBn
ZW5lcmF0b3IuZW1pdFByb2ZpbGVDb250cm9sRmxvdyhtX3N0YXRlbWVudC0+c3RhcnRPZmZzZXQo
KSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9zdGF0ZW1lbnQpOworICAgIGdlbmVy
YXRvci5lbWl0Tm9kZUluVGFpbFBvc2l0aW9uKGRzdCwgbV9zdGF0ZW1lbnQpOwogCiAgICAgZ2Vu
ZXJhdG9yLmVtaXRMYWJlbChzY29wZS0+Y29udGludWVUYXJnZXQoKSk7CiAgICAgZ2VuZXJhdG9y
LmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBzdGFydE9m
ZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7CkBAIC0yMTc5LDcgKzIxNzksNyBAQCB2b2lkIEZv
ck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklEKiBkc3QpCiAgICAgZ2VuZXJhdG9yLmVtaXRMb29wSGludCgpOwogICAgIGdlbmVyYXRvci5l
bWl0UHJvZmlsZUNvbnRyb2xGbG93KG1fc3RhdGVtZW50LT5zdGFydE9mZnNldCgpKTsKIAotICAg
IGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fc3RhdGVtZW50KTsKKyAgICBnZW5lcmF0b3IuZW1p
dE5vZGVJblRhaWxQb3NpdGlvbihkc3QsIG1fc3RhdGVtZW50KTsKIAogICAgIGdlbmVyYXRvci5l
bWl0TGFiZWwoc2NvcGUtPmNvbnRpbnVlVGFyZ2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0RGVi
dWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwg
bGluZVN0YXJ0T2Zmc2V0KCkpOwpAQCAtMjU1Niw3ICsyNTU2LDcgQEAgdm9pZCBSZXR1cm5Ob2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCog
ZHN0KQogICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKICAgICAgICAg
ZHN0ID0gMDsKIAotICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5SZWdpc3RlciA9IG1fdmFs
dWUgPyBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX3ZhbHVlKSA6IGdlbmVyYXRvci5lbWl0TG9h
ZChkc3QsIGpzVW5kZWZpbmVkKCkpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5SZWdp
c3RlciA9IG1fdmFsdWUgPyBnZW5lcmF0b3IuZW1pdE5vZGVJblRhaWxQb3NpdGlvbihkc3QsIG1f
dmFsdWUpIDogZ2VuZXJhdG9yLmVtaXRMb2FkKGRzdCwganNVbmRlZmluZWQoKSk7CiAgICAgZ2Vu
ZXJhdG9yLmVtaXRQcm9maWxlVHlwZShyZXR1cm5SZWdpc3Rlci5nZXQoKSwgUHJvZmlsZVR5cGVC
eXRlY29kZUZ1bmN0aW9uUmV0dXJuU3RhdGVtZW50LCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkp
OwogICAgIGlmIChnZW5lcmF0b3IuaXNJbkZpbmFsbHlCbG9jaygpKSB7CiAgICAgICAgIHJldHVy
blJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwg
cmV0dXJuUmVnaXN0ZXIuZ2V0KCkpOwpAQCAtMjU4MSw3ICsyNTgxLDcgQEAgdm9pZCBXaXRoTm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
IGRzdCkKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdE5vZGUo
bV9leHByKTsKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKG1fZGl2b3QsIG1fZGl2
b3QgLSBtX2V4cHJlc3Npb25MZW5ndGgsIG1fZGl2b3QpOwogICAgIGdlbmVyYXRvci5lbWl0UHVz
aFdpdGhTY29wZShzY29wZS5nZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9z
dGF0ZW1lbnQpOworICAgIGdlbmVyYXRvci5lbWl0Tm9kZUluVGFpbFBvc2l0aW9uKGRzdCwgbV9z
dGF0ZW1lbnQpOwogICAgIGdlbmVyYXRvci5lbWl0UG9wV2l0aFNjb3BlKCk7CiB9CiAKQEAgLTI4
MzQsNyArMjgzNCwxMCBAQCB2b2lkIFRyeU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAKICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRQdXNoQ2F0Y2hTY29wZShtX3Rocm93blZhbHVlSWRlbnQsIHRocm93blZhbHVlUmVnaXN0ZXIu
Z2V0KCksIG1fY2F0Y2hFbnZpcm9ubWVudCk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmls
ZUNvbnRyb2xGbG93KG1fdHJ5QmxvY2stPmVuZE9mZnNldCgpICsgMSk7Ci0gICAgICAgIGdlbmVy
YXRvci5lbWl0Tm9kZShkc3QsIG1fY2F0Y2hCbG9jayk7CisgICAgICAgIGlmIChtX2ZpbmFsbHlC
bG9jaykKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fY2F0Y2hCbG9jayk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZUluVGFpbFBvc2l0
aW9uKGRzdCwgbV9jYXRjaEJsb2NrKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQb3BDYXRjaFNj
b3BlKG1fY2F0Y2hFbnZpcm9ubWVudCk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoY2F0
Y2hFbmRMYWJlbC5nZXQoKSk7CiAgICAgfQpAQCAtMjg1MCw3ICsyODUzLDcgQEAgdm9pZCBUcnlO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCogZHN0KQogCiAgICAgICAgIC8vIE5vcm1hbCBwYXRoOiBydW4gdGhlIGZpbmFsbHkgY29kZSwg
YW5kIGp1bXAgdG8gdGhlIGVuZC4KICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlQ29udHJv
bEZsb3coZmluYWxseVN0YXJ0T2Zmc2V0KTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGRz
dCwgbV9maW5hbGx5QmxvY2spOworICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGVJblRhaWxQb3Np
dGlvbihkc3QsIG1fZmluYWxseUJsb2NrKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxl
Q29udHJvbEZsb3cobV9maW5hbGx5QmxvY2stPmVuZE9mZnNldCgpICsgMSk7CiAgICAgICAgIGdl
bmVyYXRvci5lbWl0SnVtcChmaW5hbGx5RW5kTGFiZWwuZ2V0KCkpOwogCkBAIC0yODU5LDcgKzI4
NjIsNyBAQCB2b2lkIFRyeU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aHJv
d25WYWx1ZVJlZ2lzdGVyID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgICAgICBnZW5l
cmF0b3IucG9wVHJ5QW5kRW1pdENhdGNoKHRyeURhdGEsIGV4Y2VwdGlvblJlZ2lzdGVyLmdldCgp
LCB0aHJvd25WYWx1ZVJlZ2lzdGVyLmdldCgpLCBwcmVGaW5hbGx5TGFiZWwuZ2V0KCksIEhhbmRs
ZXJUeXBlOjpGaW5hbGx5KTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlQ29udHJvbEZs
b3coZmluYWxseVN0YXJ0T2Zmc2V0KTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwg
bV9maW5hbGx5QmxvY2spOworICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGVJblRhaWxQb3NpdGlv
bihkc3QsIG1fZmluYWxseUJsb2NrKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRUaHJvdyhleGNl
cHRpb25SZWdpc3Rlci5nZXQoKSk7CiAKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChmaW5h
bGx5RW5kTGFiZWwuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT3B0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5o
CmluZGV4IDJmN2ZkMzUzMmNhMjk1OGVkMGM0NTUzMjNhMGNmMzE3ZGZlYmRiN2QuLjliYWNiZDFh
ZTZmNmI3Yjg1ZGRmMWNkNzY5YTY3ZThhYTg4OWFiMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25zLmgKQEAgLTEyOCw2ICsxMjgsNyBAQCB0eXBlZGVmIGNvbnN0IGNoYXIq
IG9wdGlvblN0cmluZzsKICAgICB2KGJvb2wsIGZvcmNlUHJvZmlsZXJCeXRlY29kZUdlbmVyYXRp
b24sIGZhbHNlLCBudWxscHRyKSBcCiAgICAgXAogICAgIHYoYm9vbCwgZW5hYmxlRnVuY3Rpb25E
b3RBcmd1bWVudHMsIHRydWUsIG51bGxwdHIpIFwKKyAgICB2KGJvb2wsIGVuYWJsZVRhaWxDYWxs
cywgdHJ1ZSwgbnVsbHB0cikgXAogICAgIFwKICAgICAvKiBzaG93RGlzYXNzZW1ibHkgaW1wbGll
cyBzaG93REZHRGlzYXNzZW1ibHkuICovIFwKICAgICB2KGJvb2wsIHNob3dEaXNhc3NlbWJseSwg
ZmFsc2UsICJkdW1wcyBkaXNhc3NlbWJseSBvZiBhbGwgSklUIGNvbXBpbGVkIGNvZGUgdXBvbiBj
b21waWxhdGlvbiIpIFwK
</data>

          </attachment>
      

    </bug>

</bugzilla>