<?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>159389</bug_id>
          
          <creation_ts>2016-07-03 10:59:04 -0700</creation_ts>
          <short_desc>FTL should refer to B3 types directly</short_desc>
          <delta_ts>2016-07-03 12:37:08 -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>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenb</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1207505</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-07-03 10:59:04 -0700</bug_when>
    <thetext>We should say Int32 instead of m_out.int32, for example.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1207506</commentid>
    <comment_count>1</comment_count>
      <attachid>282662</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-07-03 11:01:47 -0700</bug_when>
    <thetext>Created attachment 282662
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1207507</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-03 11:04:45 -0700</bug_when>
    <thetext>Attachment 282662 did not pass style-queue:


ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:1871:  Wrong number of spaces before statement. (expected: 24)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:1871:  Wrong number of spaces before statement. (expected: 24)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:3768:  Missing space after ,  [whitespace/comma] [3]
Total errors found: 3 in 2 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1207510</commentid>
    <comment_count>3</comment_count>
      <attachid>282662</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-07-03 11:39:03 -0700</bug_when>
    <thetext>Comment on attachment 282662
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1207513</commentid>
    <comment_count>4</comment_count>
      <attachid>282664</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-07-03 11:55:43 -0700</bug_when>
    <thetext>Created attachment 282664
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1207514</commentid>
    <comment_count>5</comment_count>
      <attachid>282664</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-07-03 11:56:32 -0700</bug_when>
    <thetext>Comment on attachment 282664
the patch

Reviewed by Saam.  The only change in this patch is a fix for the debug build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1207515</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-03 11:58:45 -0700</bug_when>
    <thetext>Attachment 282664 did not pass style-queue:


ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:1871:  Wrong number of spaces before statement. (expected: 24)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:1871:  Wrong number of spaces before statement. (expected: 24)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:3768:  Missing space after ,  [whitespace/comma] [3]
Total errors found: 3 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1207520</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-07-03 12:37:08 -0700</bug_when>
    <thetext>Landed in r202792</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282662</attachid>
            <date>2016-07-03 11:01:47 -0700</date>
            <delta_ts>2016-07-03 11:55:43 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>73318</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAyNzkxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0NSBA
QAorMjAxNi0wNy0wMyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEZUTCBzaG91bGQgcmVmZXIgdG8gQjMgdHlwZXMgZGlyZWN0bHkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTM4OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgV2hlbiB3ZSB1c2VkIExMVk0s
IHR5cGVzIHdlcmUgb2JqZWN0cyB0aGF0IHdlcmUgYWxsb2NhdGVkIGJ5IHRoZSBMTFZNQ29udGV4
dC4gV2UgaGFkIHRvCisgICAgICAgIHJlbWVtYmVyIHBvaW50ZXJzIHRvIHRoZW0gb3IgZWxzZSBj
YWxsIHRocm91Z2ggdGhlIEMgQVBJIGV2ZXJ5IHRpbWUgd2Ugd2FudGVkIHRoZSB0eXBlLiBXZQor
ICAgICAgICBzdG9yZWQgdGhlIHR5cGUgcG9pbnRlcnMgaW5zaWRlIEZUTDo6Q29tbW9uVmFsdWVz
LgorICAgICAgICAKKyAgICAgICAgQnV0IGluIEIzLCB0eXBlcyBhcmUganVzdCBtZW1iZXJzIG9m
IGFuIGVudW0uIFdlIGRvbid0IGhhdmUgdG8gcmVtZW1iZXIgcG9pbnRlcnMgdG8gdGhlbS4KKyAg
ICAgICAgCisgICAgICAgIFRoaXMgY2hhbmdlIHJlcGxhY2VzIGFsbCBwcmlvciB1c2VzIG9mIHRo
aW5ncyBsaWtlICJtX291dC5pbnQzMiIgd2l0aCBqdXN0ICJJbnQzMiIsIGFuZAorICAgICAgICBs
aWtld2lzZSBmb3IgbV9vdXQuYm9vbGVhbiwgbV9vdXQuaW50NjQsIG1fb3V0LmludFB0ciwgbV9v
dXQuZmxvYXRUeXBlLCBhbmQKKyAgICAgICAgbV9vdXQuZG91YmxlVHlwZS4KKyAgICAgICAgCisg
ICAgICAgIFdlIHN0aWxsIHVzZSBGVEw6OkNvbW1vblZhbHVlcyBmb3IgY29tbW9uIGNvbnN0YW50
cyB0aGF0IHdlIGhhdmUgcHJlLWhvaXN0ZWQuIEhvcGVmdWxseSB3ZQorICAgICAgICB3aWxsIGNv
bWUgdXAgd2l0aCBhIGJldHRlciBzdG9yeSBmb3IgdGhvc2UgZXZlbnR1YWxseSwgc2luY2UgdGhh
dCdzIHN0aWxsIGtpbmRhIHVnbHkuCisKKyAgICAgICAgKiBmdGwvRlRMQ29tbW9uVmFsdWVzLmNw
cDoKKyAgICAgICAgKEpTQzo6RlRMOjpDb21tb25WYWx1ZXM6OkNvbW1vblZhbHVlcyk6CisgICAg
ICAgICogZnRsL0ZUTENvbW1vblZhbHVlcy5oOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1Rv
QjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjcmVhdGVQaGlW
YXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
RG91YmxlUmVwKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGls
ZUJvb2xlYW5Ub051bWJlcik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6
OmNvbXBpbGVDYWxsT2JqZWN0Q29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjpjb21waWxlVG9UaGlzKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29tcGlsZVZhbHVlQWRkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29tcGlsZVN0ckNhdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVBcml0aE1pbk9yTWF4KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZUFyaXRoUG93KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZUFyaXRoUm91bmQpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlQXJyYXlpZnlUb1N0cnVjdHVyZSk6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRCeUlkKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldEJ5SWRXaXRoVGhpcyk6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRCeVZhbFdpdGhUaGlz
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVB1dEJ5SWRX
aXRoVGhpcyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQ
dXRCeVZhbFdpdGhUaGlzKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZUdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0QXJyYXlMZW5ndGgpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0QnlWYWwpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0TXlBcmd1bWVu
dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVB1
dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVB1
dEFjY2Vzc29yQnlJZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVQdXRHZXR0ZXJTZXR0ZXJCeUlkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZVB1dEFjY2Vzc29yQnlWYWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlQXJyYXlQdXNoKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUFycmF5UG9wKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNyZWF0ZUFjdGl2YXRpb24pOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTmV3RnVuY3Rpb24pOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ3JlYXRlRGlyZWN0QXJndW1lbnRz
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNyZWF0ZVNj
b3BlZEFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVDcmVhdGVDbG9uZWRBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlQ29weVJlc3QpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlR2V0UmVzdExlbmd0aCk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOZXdPYmplY3QpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlTmV3QXJyYXkpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlTmV3QXJyYXlCdWZmZXIpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTmV3QXJyYXlXaXRoU2l6ZSk6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOZXdUeXBlZEFycmF5KToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVRvTnVtYmVyKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVRvU3RyaW5nT3JDYWxs
U3RyaW5nQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlVG9QcmltaXRpdmUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjpjb21waWxlTWFrZVJvcGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjpjb21waWxlU3RyaW5nQ2hhckF0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZVN0cmluZ0NoYXJDb2RlQXQpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlU3RyaW5nRnJvbUNoYXJDb2RlKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldEJ5T2Zmc2V0KToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU11bHRpR2V0QnlPZmZzZXQpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0QnlPZmZzZXQp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ29tcGFyZVN0
cmljdEVxKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUxv
YWRWYXJhcmdzKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGls
ZUZvcndhcmRWYXJhcmdzKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZVN3aXRjaCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVJc1N0cmluZyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVJc0pTQXJyYXkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlSXNPYmplY3QpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlSXNPYmplY3RPck51bGwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjpjb21waWxlSXNGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmNvbXBpbGVJc1JlZ0V4cE9iamVjdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVJc1R5cGVkQXJyYXlWaWV3KToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVR5cGVPZik6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVJbik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVPdmVycmlkZXNIYXNJbnN0YW5jZSk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDaGVja1R5cGVJbmZvRmxhZ3MpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlSW5zdGFuY2VPZik6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVJbnN0YW5jZU9mQ3Vz
dG9tKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNvdW50
RXhlY3V0aW9uKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGls
ZUhhc0luZGV4ZWRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVIYXNHZW5lcmljUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjpjb21waWxlSGFzU3RydWN0dXJlUHJvcGVydHkpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0RGlyZWN0UG5hbWUpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0RW51bWVyYWJsZUxlbmd0
aCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRQcm9w
ZXJ0eUVudW1lcmF0b3IpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlR2V0RW51bWVyYXRvclN0cnVjdHVyZVBuYW1lKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldEVudW1lcmF0b3JHZW5lcmljUG5hbWUpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVG9JbmRleFN0cmluZyk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDaGVja1N0cnVj
dHVyZUltbWVkaWF0ZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVNYXRlcmlhbGl6ZU5ld09iamVjdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVNYXRlcmlhbGl6ZUNyZWF0ZUFjdGl2YXRpb24pOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlU2V0RnVuY3Rpb25OYW1lKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6bnVtYmVyT3JOb3RDZWxsVG9JbnQz
Mik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNoZWNrSW5mZXJyZWRU
eXBlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6aW5pdGlhbGl6ZUFy
cmF5RWxlbWVudHMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjphbGxv
Y2F0ZVByb3BlcnR5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OnJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjphbGxvY2F0ZVByb3BlcnR5U3RvcmFnZVdpdGhTaXplSW1wbCk6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmdldEJ5SWQpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21wYXJlKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVJlc29sdmVTY29wZSk6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXREeW5hbWljVmFyKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGFyZUVxT2JqZWN0T3JPdGhlclRvT2JqZWN0
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6c3BlY3VsYXRlVHJ1dGh5
T2JqZWN0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6bm9uU3BlY3Vs
YXRpdmVDb21wYXJlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6c3Ry
aW5nc0VxdWFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6YWxsb2Nh
dGVWYXJpYWJsZVNpemVkT2JqZWN0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6YWxsb2NhdGVPYmplY3QpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjphbGxvY2F0ZUpTQXJyYXkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjplbnN1cmVTaGFkb3dDaGlja2VuUGFja2V0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Ym9vbGlmeSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmVxdWFsTnVsbE9yVW5kZWZpbmVkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29udGlndW91c1B1dEJ5VmFsT3V0T2ZCb3VuZHMpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpidWlsZFN3aXRjaCk6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OnN3aXRjaFN0cmluZ1Nsb3cpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpkb3VibGVUb0ludDMyKToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6c2Vuc2libGVEb3VibGVUb0ludDMyKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6c3RyaWN0SW50NTJUb0pTVmFsdWUpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpzdHJpY3RJbnQ1MlRvSW50NTIpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjp1bmJveEludDMyKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Ym94SW50MzIpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjppc0NlbGxPck1pc2MpOgorICAgICAgICAoSlNDOjpGVEw6
OkRGRzo6TG93ZXJERkdUb0IzOjp1bmJveERvdWJsZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmJveERvdWJsZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmpzVmFsdWVUb1N0cmljdEludDUyKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6ZG91YmxlVG9TdHJpY3RJbnQ1Mik6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OmNvbnZlcnREb3VibGVUb0ludDMyKToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y2FsbENoZWNrKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y3Jhc2gpOgorCiAyMDE2LTA3LTAyICBGaWxpcCBQaXpsbyAgPGZw
aXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgREZHIExJQ00gbmVlZHMgdG8gZ28gYWxsLWluIG9u
IHRoZSBpZGVhIHRoYXQgc29tZSBsb29wcyBjYW4ndCBiZSBMSUNNZWQKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbW1vblZhbHVlcy5jcHAJKHJldmlzaW9uIDIwMjc5
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDIsMTMgKzQyLDYgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBG
VEwgewogdXNpbmcgbmFtZXNwYWNlIEIzOwogCiBDb21tb25WYWx1ZXM6OkNvbW1vblZhbHVlcygp
Ci0gICAgOiB2b2lkVHlwZShCMzo6Vm9pZCkKLSAgICAsIGJvb2xlYW4oQjM6OkludDMyKQotICAg
ICwgaW50MzIoQjM6OkludDMyKQotICAgICwgaW50NjQoQjM6OkludDY0KQotICAgICwgaW50UHRy
KEIzOjpwb2ludGVyVHlwZSgpKQotICAgICwgZmxvYXRUeXBlKEIzOjpGbG9hdCkKLSAgICAsIGRv
dWJsZVR5cGUoQjM6OkRvdWJsZSkKIHsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDb21tb25WYWx1ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTENvbW1vblZhbHVlcy5oCShyZXZpc2lvbiAyMDI3OTEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTENvbW1vblZhbHVlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niwx
MyArNDYsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGluaXRpYWxpemVDb25zdGFudHMoQjM6OlBy
b2NlZHVyZSYsIEIzOjpCYXNpY0Jsb2NrKik7CiAgICAgCi0gICAgY29uc3QgTFR5cGUgdm9pZFR5
cGU7Ci0gICAgY29uc3QgTFR5cGUgYm9vbGVhbjsKLSAgICBjb25zdCBMVHlwZSBpbnQzMjsKLSAg
ICBjb25zdCBMVHlwZSBpbnQ2NDsKLSAgICBjb25zdCBMVHlwZSBpbnRQdHI7Ci0gICAgY29uc3Qg
TFR5cGUgZmxvYXRUeXBlOwotICAgIGNvbnN0IExUeXBlIGRvdWJsZVR5cGU7CiAgICAgTFZhbHVl
IGJvb2xlYW5UcnVlIHsgbnVsbHB0ciB9OwogICAgIExWYWx1ZSBib29sZWFuRmFsc2UgeyBudWxs
cHRyIH07CiAgICAgTFZhbHVlIGludDMyWmVybyB7IG51bGxwdHIgfTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDIwMjc5
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzI4LDE5ICszMjgsMTkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICBMVHlwZSB0eXBlOwogICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+ZmxhZ3MoKSAmIE5v
ZGVSZXN1bHRNYXNrKSB7CiAgICAgICAgICAgICAgICAgY2FzZSBOb2RlUmVzdWx0RG91YmxlOgot
ICAgICAgICAgICAgICAgICAgICB0eXBlID0gbV9vdXQuZG91YmxlVHlwZTsKKyAgICAgICAgICAg
ICAgICAgICAgdHlwZSA9IERvdWJsZTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgY2FzZSBOb2RlUmVzdWx0SW50MzI6Ci0gICAgICAgICAgICAgICAgICAgIHR5
cGUgPSBtX291dC5pbnQzMjsKKyAgICAgICAgICAgICAgICAgICAgdHlwZSA9IEludDMyOwogICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIE5vZGVSZXN1bHRJ
bnQ1MjoKLSAgICAgICAgICAgICAgICAgICAgdHlwZSA9IG1fb3V0LmludDY0OworICAgICAgICAg
ICAgICAgICAgICB0eXBlID0gSW50NjQ7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgICAgIGNhc2UgTm9kZVJlc3VsdEJvb2xlYW46Ci0gICAgICAgICAgICAgICAgICAg
IHR5cGUgPSBtX291dC5ib29sZWFuOworICAgICAgICAgICAgICAgICAgICB0eXBlID0gSW50MzI7
CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgTm9kZVJl
c3VsdEpTOgotICAgICAgICAgICAgICAgICAgICB0eXBlID0gbV9vdXQuaW50NjQ7CisgICAgICAg
ICAgICAgICAgICAgIHR5cGUgPSBJbnQ2NDsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgREZHX0NSQVNIKG1f
Z3JhcGgsIG5vZGUsICJCYWQgUGhpIG5vZGUgcmVzdWx0IHR5cGUiKTsKQEAgLTExNTcsNyArMTE1
Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRv
KGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBzZXRE
b3VibGUobV9vdXQucGhpKG1fb3V0LmRvdWJsZVR5cGUsIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQp
KTsKKyAgICAgICAgICAgIHNldERvdWJsZShtX291dC5waGkoRG91YmxlLCBmYXN0UmVzdWx0LCBz
bG93UmVzdWx0KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgICAg
IApAQCAtMTIzMSw3ICsxMjMxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBtX291dC5q
dW1wKGNvbnRpbnVhdGlvbik7CiAKICAgICAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250
aW51YXRpb24sIGxhc3ROZXh0KTsKLSAgICAgICAgICAgICAgICBzZXREb3VibGUobV9vdXQucGhp
KG1fb3V0LmRvdWJsZVR5cGUsIGludFRvRG91YmxlLCB1bmJveGVkRG91YmxlLCBjb252ZXJ0ZWRV
bmRlZmluZWQsIGNvbnZlcnRlZE51bGwsIGNvbnZlcnRlZFRydWUsIGNvbnZlcnRlZEZhbHNlKSk7
CisgICAgICAgICAgICAgICAgc2V0RG91YmxlKG1fb3V0LnBoaShEb3VibGUsIGludFRvRG91Ymxl
LCB1bmJveGVkRG91YmxlLCBjb252ZXJ0ZWRVbmRlZmluZWQsIGNvbnZlcnRlZE51bGwsIGNvbnZl
cnRlZFRydWUsIGNvbnZlcnRlZEZhbHNlKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8obm9uRG91YmxlQ2FzZSwgY29u
dGludWF0aW9uKTsKQEAgLTEyNDAsNyArMTI0MCw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgICAg
IG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwogCi0gICAgICAgICAgICBz
ZXREb3VibGUobV9vdXQucGhpKG1fb3V0LmRvdWJsZVR5cGUsIGludFRvRG91YmxlLCB1bmJveGVk
RG91YmxlKSk7CisgICAgICAgICAgICBzZXREb3VibGUobV9vdXQucGhpKERvdWJsZSwgaW50VG9E
b3VibGUsIHVuYm94ZWREb3VibGUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
ICAgICAgICAgICAgCkBAIC0xMzUzLDcgKzEzNTMsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAg
ICAgc3dpdGNoIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgewogICAgICAgICBjYXNlIEJv
b2xlYW5Vc2U6IHsKLSAgICAgICAgICAgIHNldEludDMyKG1fb3V0Lnplcm9FeHQobG93Qm9vbGVh
bihtX25vZGUtPmNoaWxkMSgpKSwgbV9vdXQuaW50MzIpKTsKKyAgICAgICAgICAgIHNldEludDMy
KG1fb3V0Lnplcm9FeHQobG93Qm9vbGVhbihtX25vZGUtPmNoaWxkMSgpKSwgSW50MzIpKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC0xMzc1LDExICsx
Mzc1LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgICAgIExCYXNpY0Jsb2Nr
IGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oYm9vbGVhbkNhc2UsIGNvbnRpbnVhdGlvbik7CiAg
ICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBib29sZWFuUmVzdWx0ID0gbV9vdXQuYW5jaG9yKG1f
b3V0LmJpdE9yKAotICAgICAgICAgICAgICAgIG1fb3V0Lnplcm9FeHQodW5ib3hCb29sZWFuKHZh
bHVlKSwgbV9vdXQuaW50NjQpLCBtX3RhZ1R5cGVOdW1iZXIpKTsKKyAgICAgICAgICAgICAgICBt
X291dC56ZXJvRXh0KHVuYm94Qm9vbGVhbih2YWx1ZSksIEludDY0KSwgbV90YWdUeXBlTnVtYmVy
KSk7CiAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwotICAg
ICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkobV9vdXQuaW50NjQsIGJvb2xlYW5SZXN1bHQs
IG5vdEJvb2xlYW5SZXN1bHQpKTsKKyAgICAgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKElu
dDY0LCBib29sZWFuUmVzdWx0LCBub3RCb29sZWFuUmVzdWx0KSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMTQ4NiwxMSArMTQ4NiwxMSBAQCBwcml2
YXRlOgogICAgICAgICBtX291dC5icmFuY2goaXNPYmplY3QodmFsdWUpLCB1c3VhbGx5KGNvbnRp
bnVhdGlvbiksIHJhcmVseShzbG93Q2FzZSkpOwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNs
b3dDYXNlLCBjb250aW51YXRpb24pOwotICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0
ID0gbV9vdXQuYW5jaG9yKHZtQ2FsbChtX291dC5pbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJh
dGlvbk9iamVjdENvbnN0cnVjdG9yKSwgbV9jYWxsRnJhbWUsIG1fb3V0LmNvbnN0SW50UHRyKGds
b2JhbE9iamVjdCksIHZhbHVlKSk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQg
PSBtX291dC5hbmNob3Iodm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uT2Jq
ZWN0Q29uc3RydWN0b3IpLCBtX2NhbGxGcmFtZSwgbV9vdXQuY29uc3RJbnRQdHIoZ2xvYmFsT2Jq
ZWN0KSwgdmFsdWUpKTsKICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogCiAgICAg
ICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwotICAgICAgICBzZXRK
U1ZhbHVlKG1fb3V0LnBoaShtX291dC5pbnQ2NCwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCkpOwor
ICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShJbnQ2NCwgZmFzdFJlc3VsdCwgc2xvd1Jlc3Vs
dCkpOwogICAgIH0KICAgICAKICAgICB2b2lkIGNvbXBpbGVUb1RoaXMoKQpAQCAtMTUxOSwxMSAr
MTUxOSwxMSBAQCBwcml2YXRlOgogICAgICAgICBlbHNlCiAgICAgICAgICAgICBmdW5jdGlvbiA9
IG9wZXJhdGlvblRvVGhpczsKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1f
b3V0LmFuY2hvcigKLSAgICAgICAgICAgIHZtQ2FsbChtX291dC5pbnQ2NCwgbV9vdXQub3BlcmF0
aW9uKGZ1bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHZhbHVlKSk7CisgICAgICAgICAgICB2bUNhbGwo
SW50NjQsIG1fb3V0Lm9wZXJhdGlvbihmdW5jdGlvbiksIG1fY2FsbEZyYW1lLCB2YWx1ZSkpOwog
ICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgIAogICAgICAgICBtX291
dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKLSAgICAgICAgc2V0SlNWYWx1ZSht
X291dC5waGkobV9vdXQuaW50NjQsIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpKTsKKyAgICAgICAg
c2V0SlNWYWx1ZShtX291dC5waGkoSW50NjQsIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpKTsKICAg
ICB9CiAgICAgCiAgICAgdm9pZCBjb21waWxlVmFsdWVBZGQoKQpAQCAtMTUzNiwxMyArMTUzNiwx
MyBAQCBwcml2YXRlOgogICAgICAgICBMVmFsdWUgcmVzdWx0OwogICAgICAgICBpZiAobV9ub2Rl
LT5jaGlsZDMoKSkgewogICAgICAgICAgICAgcmVzdWx0ID0gdm1DYWxsKAotICAgICAgICAgICAg
ICAgIG1fb3V0LmludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uU3RyQ2F0MyksIG1fY2Fs
bEZyYW1lLAorICAgICAgICAgICAgICAgIEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9u
U3RyQ2F0MyksIG1fY2FsbEZyYW1lLAogICAgICAgICAgICAgICAgIGxvd0pTVmFsdWUobV9ub2Rl
LT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKSwKICAgICAgICAgICAgICAgICBs
b3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiksCiAg
ICAgICAgICAgICAgICAgbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMygpLCBNYW51YWxPcGVyYW5k
U3BlY3VsYXRpb24pKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHJlc3VsdCA9IHZt
Q2FsbCgKLSAgICAgICAgICAgICAgICBtX291dC5pbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJh
dGlvblN0ckNhdDIpLCBtX2NhbGxGcmFtZSwKKyAgICAgICAgICAgICAgICBJbnQ2NCwgbV9vdXQu
b3BlcmF0aW9uKG9wZXJhdGlvblN0ckNhdDIpLCBtX2NhbGxGcmFtZSwKICAgICAgICAgICAgICAg
ICBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiks
CiAgICAgICAgICAgICAgICAgbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpLCBNYW51YWxPcGVy
YW5kU3BlY3VsYXRpb24pKTsKICAgICAgICAgfQpAQCAtMTg2OCw3ICsxODY4LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7Ci0gICAg
ICAgICAgICBzZXREb3VibGUobV9vdXQucGhpKG1fb3V0LmRvdWJsZVR5cGUsIHJlc3VsdHMpKTsK
KyAgICAgICAgICAgIHNldERvdWJsZShtX291dC5waGkoRG91YmxlLCByZXN1bHRzKSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC0yMDQyLDcgKzIwNDIs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogCiAg
ICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKLSAgICAg
ICAgICAgIHNldERvdWJsZShtX291dC5waGkobV9vdXQuZG91YmxlVHlwZSwgcG93RG91YmxlSW50
UmVzdWx0LCB6ZXJvUmVzdWx0RXhwb25lbnRJc09uZUhhbGYsIHNxcnRSZXN1bHQsIHNxcnRJbmZp
bml0eVJlc3VsdCwgb25lT3ZlclNxcnRaZXJvUmVzdWx0LCBvbmVPdmVyU3FydFJlc3VsdCwgb25l
T3ZlclNxcnRJbmZpbml0eVJlc3VsdCwgcG93UmVzdWx0LCBwdXJlTmFuKSk7CisgICAgICAgICAg
ICBzZXREb3VibGUobV9vdXQucGhpKERvdWJsZSwgcG93RG91YmxlSW50UmVzdWx0LCB6ZXJvUmVz
dWx0RXhwb25lbnRJc09uZUhhbGYsIHNxcnRSZXN1bHQsIHNxcnRJbmZpbml0eVJlc3VsdCwgb25l
T3ZlclNxcnRaZXJvUmVzdWx0LCBvbmVPdmVyU3FydFJlc3VsdCwgb25lT3ZlclNxcnRJbmZpbml0
eVJlc3VsdCwgcG93UmVzdWx0LCBwdXJlTmFuKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTIx
MTgsNyArMjExOCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVh
dGlvbik7CiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0
KTsKIAotICAgICAgICAgICAgcmVzdWx0ID0gbV9vdXQucGhpKG1fb3V0LmRvdWJsZVR5cGUsIGlu
dGVnZXJWYWx1ZVJlc3VsdCwgaW50ZWdlclZhbHVlUm91bmRlZERvd25SZXN1bHQpOworICAgICAg
ICAgICAgcmVzdWx0ID0gbV9vdXQucGhpKERvdWJsZSwgaW50ZWdlclZhbHVlUmVzdWx0LCBpbnRl
Z2VyVmFsdWVSb3VuZGVkRG93blJlc3VsdCk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAocHJv
ZHVjZXNJbnRlZ2VyKG1fbm9kZS0+YXJpdGhSb3VuZGluZ01vZGUoKSkpIHsKQEAgLTI0MTksMTcg
KzI0MTksMTcgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIHN3aXRjaCAobV9ub2RlLT5h
cnJheU1vZGUoKS50eXBlKCkpIHsKICAgICAgICAgY2FzZSBBcnJheTo6SW50MzI6Ci0gICAgICAg
ICAgICB2bUNhbGwobV9vdXQudm9pZFR5cGUsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25FbnN1
cmVJbnQzMiksIG1fY2FsbEZyYW1lLCBjZWxsKTsKKyAgICAgICAgICAgIHZtQ2FsbChWb2lkLCBt
X291dC5vcGVyYXRpb24ob3BlcmF0aW9uRW5zdXJlSW50MzIpLCBtX2NhbGxGcmFtZSwgY2VsbCk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBcnJheTo6RG91YmxlOgotICAgICAg
ICAgICAgdm1DYWxsKG1fb3V0LnZvaWRUeXBlLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uRW5z
dXJlRG91YmxlKSwgbV9jYWxsRnJhbWUsIGNlbGwpOworICAgICAgICAgICAgdm1DYWxsKFZvaWQs
IG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25FbnN1cmVEb3VibGUpLCBtX2NhbGxGcmFtZSwgY2Vs
bCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBcnJheTo6Q29udGlndW91czoK
LSAgICAgICAgICAgIHZtQ2FsbChtX291dC52b2lkVHlwZSwgbV9vdXQub3BlcmF0aW9uKG9wZXJh
dGlvbkVuc3VyZUNvbnRpZ3VvdXMpLCBtX2NhbGxGcmFtZSwgY2VsbCk7CisgICAgICAgICAgICB2
bUNhbGwoVm9pZCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkVuc3VyZUNvbnRpZ3VvdXMpLCBt
X2NhbGxGcmFtZSwgY2VsbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBcnJh
eTo6QXJyYXlTdG9yYWdlOgogICAgICAgICBjYXNlIEFycmF5OjpTbG93UHV0QXJyYXlTdG9yYWdl
OgotICAgICAgICAgICAgdm1DYWxsKG1fb3V0LnZvaWRUeXBlLCBtX291dC5vcGVyYXRpb24ob3Bl
cmF0aW9uRW5zdXJlQXJyYXlTdG9yYWdlKSwgbV9jYWxsRnJhbWUsIGNlbGwpOworICAgICAgICAg
ICAgdm1DYWxsKFZvaWQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25FbnN1cmVBcnJheVN0b3Jh
Z2UpLCBtX2NhbGxGcmFtZSwgY2VsbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVm
YXVsdDoKICAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBtX25vZGUsICJCYWQgYXJyYXkg
dHlwZSIpOwpAQCAtMjQ5NSwxMyArMjQ5NSwxMyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICBt
X291dC5hcHBlbmRUbyhub3RDZWxsQ2FzZSwgY29udGludWF0aW9uKTsKICAgICAgICAgICAgIFZh
bHVlRnJvbUJsb2NrIG5vdENlbGxSZXN1bHQgPSBtX291dC5hbmNob3Iodm1DYWxsKAotICAgICAg
ICAgICAgICAgIG1fb3V0LmludDY0LCBtX291dC5vcGVyYXRpb24oZ2V0QnlJZEZ1bmN0aW9uKSwK
KyAgICAgICAgICAgICAgICBJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKGdldEJ5SWRGdW5jdGlvbiks
CiAgICAgICAgICAgICAgICAgbV9jYWxsRnJhbWUsIHZhbHVlLAogICAgICAgICAgICAgICAgIG1f
b3V0LmNvbnN0SW50UHRyKG1fZ3JhcGguaWRlbnRpZmllcnMoKVttX25vZGUtPmlkZW50aWZpZXJO
dW1iZXIoKV0pKSk7CiAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5l
eHQpOwotICAgICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkobV9vdXQuaW50NjQsIGNlbGxS
ZXN1bHQsIG5vdENlbGxSZXN1bHQpKTsKKyAgICAgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhp
KEludDY0LCBjZWxsUmVzdWx0LCBub3RDZWxsUmVzdWx0KSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMjUxNSw3ICsyNTE1LDcgQEAgcHJpdmF0ZToK
ICAgICB7CiAgICAgICAgIExWYWx1ZSBiYXNlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgp
KTsKICAgICAgICAgTFZhbHVlIHRoaXNWYWx1ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIo
KSk7Ci0gICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwobV9vdXQuaW50NjQsIG1fb3V0Lm9w
ZXJhdGlvbihvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXMpLCBtX2NhbGxGcmFtZSwgYmFzZSwgdGhp
c1ZhbHVlLCBtX291dC5jb25zdEludFB0cihtX2dyYXBoLmlkZW50aWZpZXJzKClbbV9ub2RlLT5p
ZGVudGlmaWVyTnVtYmVyKCldKSk7CisgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwoSW50
NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXMpLCBtX2NhbGxGcmFt
ZSwgYmFzZSwgdGhpc1ZhbHVlLCBtX291dC5jb25zdEludFB0cihtX2dyYXBoLmlkZW50aWZpZXJz
KClbbV9ub2RlLT5pZGVudGlmaWVyTnVtYmVyKCldKSk7CiAgICAgICAgIHNldEpTVmFsdWUocmVz
dWx0KTsKICAgICB9CiAKQEAgLTI1MjUsNyArMjUyNSw3IEBAIHByaXZhdGU6CiAgICAgICAgIExW
YWx1ZSB0aGlzVmFsdWUgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICBM
VmFsdWUgc3Vic2NyaXB0ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMygpKTsKIAotICAgICAg
ICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKG1fb3V0LmludDY0LCBtX291dC5vcGVyYXRpb24ob3Bl
cmF0aW9uR2V0QnlWYWxXaXRoVGhpcyksIG1fY2FsbEZyYW1lLCBiYXNlLCB0aGlzVmFsdWUsIHN1
YnNjcmlwdCk7CisgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwoSW50NjQsIG1fb3V0Lm9w
ZXJhdGlvbihvcGVyYXRpb25HZXRCeVZhbFdpdGhUaGlzKSwgbV9jYWxsRnJhbWUsIGJhc2UsIHRo
aXNWYWx1ZSwgc3Vic2NyaXB0KTsKICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgIH0K
IApAQCAtMjUzNSw3ICsyNTM1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgTFZhbHVlIHRoaXNWYWx1
ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgIExWYWx1ZSB2YWx1ZSA9
IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDMoKSk7CiAKLSAgICAgICAgdm1DYWxsKG1fb3V0LnZv
aWRUeXBlLCBtX291dC5vcGVyYXRpb24obV9ncmFwaC5pc1N0cmljdE1vZGVGb3IobV9ub2RlLT5v
cmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9uUHV0QnlJZFdpdGhUaGlzU3RyaWN0IDogb3BlcmF0
aW9uUHV0QnlJZFdpdGhUaGlzKSwKKyAgICAgICAgdm1DYWxsKFZvaWQsIG1fb3V0Lm9wZXJhdGlv
bihtX2dyYXBoLmlzU3RyaWN0TW9kZUZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykgPyBvcGVy
YXRpb25QdXRCeUlkV2l0aFRoaXNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeUlkV2l0aFRoaXMpLAog
ICAgICAgICAgICAgbV9jYWxsRnJhbWUsIGJhc2UsIHRoaXNWYWx1ZSwgdmFsdWUsIG1fb3V0LmNv
bnN0SW50UHRyKG1fZ3JhcGguaWRlbnRpZmllcnMoKVttX25vZGUtPmlkZW50aWZpZXJOdW1iZXIo
KV0pKTsKICAgICB9CiAKQEAgLTI1NDYsNyArMjU0Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIExW
YWx1ZSBwcm9wZXJ0eSA9IGxvd0pTVmFsdWUobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDIp
KTsKICAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShtX2dyYXBoLnZhckFyZ0NoaWxk
KG1fbm9kZSwgMykpOwogCi0gICAgICAgIHZtQ2FsbChtX291dC52b2lkVHlwZSwgbV9vdXQub3Bl
cmF0aW9uKG1fZ3JhcGguaXNTdHJpY3RNb2RlRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKSA/
IG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbFdpdGhU
aGlzKSwKKyAgICAgICAgdm1DYWxsKFZvaWQsIG1fb3V0Lm9wZXJhdGlvbihtX2dyYXBoLmlzU3Ry
aWN0TW9kZUZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykgPyBvcGVyYXRpb25QdXRCeVZhbFdp
dGhUaGlzU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhpcyksCiAgICAgICAgICAgICBt
X2NhbGxGcmFtZSwgYmFzZSwgdGhpc1ZhbHVlLCBwcm9wZXJ0eSwgdmFsdWUpOwogICAgIH0KICAg
ICAKQEAgLTI2NDksMTMgKzI2NDksMTMgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIExCYXNpY0Js
b2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oc2xvd1BhdGgsIGNvbnRpbnVhdGlvbik7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291
dC5hbmNob3IoCi0gICAgICAgICAgICAgICAgdm1DYWxsKG1fb3V0LmludFB0ciwgbV9vdXQub3Bl
cmF0aW9uKG9wZXJhdGlvblJlc29sdmVSb3BlKSwgbV9jYWxsRnJhbWUsIGNlbGwpKTsKKyAgICAg
ICAgICAgICAgICB2bUNhbGwocG9pbnRlclR5cGUoKSwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlv
blJlc29sdmVSb3BlKSwgbV9jYWxsRnJhbWUsIGNlbGwpKTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKICAgICAgICAgICAgIAot
ICAgICAgICAgICAgc2V0U3RvcmFnZShtX291dC5sb2FkUHRyKG1fb3V0LnBoaShtX291dC5pbnRQ
dHIsIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpLCBtX2hlYXBzLlN0cmluZ0ltcGxfZGF0YSkpOwor
ICAgICAgICAgICAgc2V0U3RvcmFnZShtX291dC5sb2FkUHRyKG1fb3V0LnBoaShwb2ludGVyVHlw
ZSgpLCBmYXN0UmVzdWx0LCBzbG93UmVzdWx0KSwgbV9oZWFwcy5TdHJpbmdJbXBsX2RhdGEpKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKQEAgLTI3MDYsNyArMjcw
Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAg
ICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CiAKLSAgICAgICAgc2V0
SW50MzIobV9vdXQuY2FzdFRvSW50MzIobV9vdXQucGhpKG1fb3V0LmludFB0ciwgc2ltcGxlT3V0
LCB3YXN0ZWZ1bE91dCkpKTsKKyAgICAgICAgc2V0SW50MzIobV9vdXQuY2FzdFRvSW50MzIobV9v
dXQucGhpKHBvaW50ZXJUeXBlKCksIHNpbXBsZU91dCwgd2FzdGVmdWxPdXQpKSk7CiAgICAgfQog
ICAgIAogICAgIHZvaWQgY29tcGlsZUdldEFycmF5TGVuZ3RoKCkKQEAgLTI4MDcsMTEgKzI4MDcs
MTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8o
c2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93
UmVzdWx0ID0gbV9vdXQuYW5jaG9yKAotICAgICAgICAgICAgICAgIHZtQ2FsbChtX291dC5pbnQ2
NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5VmFsQXJyYXlJbnQpLCBtX2NhbGxGcmFt
ZSwgYmFzZSwgaW5kZXgpKTsKKyAgICAgICAgICAgICAgICB2bUNhbGwoSW50NjQsIG1fb3V0Lm9w
ZXJhdGlvbihvcGVyYXRpb25HZXRCeVZhbEFycmF5SW50KSwgbV9jYWxsRnJhbWUsIGJhc2UsIGlu
ZGV4KSk7CiAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwot
ICAgICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkobV9vdXQuaW50NjQsIGZhc3RSZXN1bHQs
IHNsb3dSZXN1bHQpKTsKKyAgICAgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKEludDY0LCBm
YXN0UmVzdWx0LCBzbG93UmVzdWx0KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICAgICAgICAgIApAQCAtMjg1OSwxMSArMjg1OSwxMSBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93Q2FzZSwgY29udGludWF0aW9uKTsK
ICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3IoCi0g
ICAgICAgICAgICAgICAgdm1DYWxsKG1fb3V0LmludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0
aW9uR2V0QnlWYWxBcnJheUludCksIG1fY2FsbEZyYW1lLCBiYXNlLCBpbmRleCkpOworICAgICAg
ICAgICAgICAgIHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5VmFs
QXJyYXlJbnQpLCBtX2NhbGxGcmFtZSwgYmFzZSwgaW5kZXgpKTsKICAgICAgICAgICAgIG1fb3V0
Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9vdXQuYXBw
ZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7Ci0gICAgICAgICAgICBzZXRKU1ZhbHVlKG1f
b3V0LnBoaShtX291dC5pbnQ2NCwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCkpOworICAgICAgICAg
ICAgc2V0SlNWYWx1ZShtX291dC5waGkoSW50NjQsIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yOTQzLDEzICsyOTQzLDEzIEBA
IHByaXZhdGU6CiAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQp
OwotICAgICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkobV9vdXQuaW50NjQsIG5hbWVkUmVz
dWx0LCBvdmVyZmxvd1Jlc3VsdCkpOworICAgICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGko
SW50NjQsIG5hbWVkUmVzdWx0LCBvdmVyZmxvd1Jlc3VsdCkpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBBcnJheTo6R2VuZXJpYzog
ewogICAgICAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoCi0gICAgICAgICAgICAgICAgbV9vdXQu
aW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25HZXRCeVZhbCksIG1fY2FsbEZyYW1lLAor
ICAgICAgICAgICAgICAgIEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlWYWwp
LCBtX2NhbGxGcmFtZSwKICAgICAgICAgICAgICAgICBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQx
KCkpLCBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpKSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KQEAgLTMwMDMsNyArMzAwMyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIGlmICht
X25vZGUtPnNob3VsZFNwZWN1bGF0ZUFueUludCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBzZXRTdHJpY3RJbnQ1MihtX291dC56ZXJvRXh0KHJlc3VsdCwgbV9vdXQuaW50NjQpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHNldFN0cmljdEludDUyKG1fb3V0Lnplcm9FeHQocmVzdWx0
LCBJbnQ2NCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIApAQCAtMzA3Nyw3ICszMDc3LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgTFZhbHVlIHJlc3VsdDsKICAgICAgICAgaWYgKGJhc2UpIHsKICAgICAg
ICAgICAgIExWYWx1ZSBwb2ludGVyID0gbV9vdXQuYmFzZUluZGV4KAotICAgICAgICAgICAgICAg
IGJhc2UudmFsdWUoKSwgbV9vdXQuemVyb0V4dChpbmRleCwgbV9vdXQuaW50UHRyKSwgU2NhbGVF
aWdodCk7CisgICAgICAgICAgICAgICAgYmFzZS52YWx1ZSgpLCBtX291dC56ZXJvRXh0KGluZGV4
LCBwb2ludGVyVHlwZSgpKSwgU2NhbGVFaWdodCk7CiAgICAgICAgICAgICByZXN1bHQgPSBtX291
dC5sb2FkNjQoVHlwZWRQb2ludGVyKG1faGVhcHMudmFyaWFibGVzLmF0QW55SW5kZXgoKSwgcG9p
bnRlcikpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHJlc3VsdCA9IG1fb3V0LmNvbnN0
SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKTsKQEAgLTMxMTcsNyArMzExNyw3
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICB2bUNhbGwoCi0gICAgICAgICAgICAgICAgbV9vdXQudm9pZFR5cGUsIG1fb3V0Lm9wZXJhdGlv
bihvcGVyYXRpb24pLCBtX2NhbGxGcmFtZSwKKyAgICAgICAgICAgICAgICBWb2lkLCBtX291dC5v
cGVyYXRpb24ob3BlcmF0aW9uKSwgbV9jYWxsRnJhbWUsCiAgICAgICAgICAgICAgICAgbG93SlNW
YWx1ZShjaGlsZDEpLCBsb3dKU1ZhbHVlKGNoaWxkMiksIGxvd0pTVmFsdWUoY2hpbGQzKSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTMyMDksNyArMzIwOSw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmFkZCgKICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0b3JhZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5zaGwoCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbV9vdXQuemVyb0V4dChpbmRleCwgbV9vdXQuaW50UHRyKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX291dC56ZXJvRXh0KGluZGV4LCBwb2ludGVy
VHlwZSgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihs
b2dFbGVtZW50U2l6ZSh0eXBlKSkpKSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgT3V0cHV0OjpTdG9yZVR5cGUgc3RvcmVUeXBlOwpAQCAtMzI0Niw3ICszMjQ2LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlv
bik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50VmFsdWUgPSBtX291dC5waGkobV9vdXQuaW50MzIsIGludFZh
bHVlcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50VmFsdWUgPSBtX291dC5waGko
SW50MzIsIGludFZhbHVlcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMzI3OCw3ICsz
Mjc4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5qdW1w
KGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50VmFsdWUgPSBtX291dC5waGkobV9vdXQu
aW50MzIsIGludFZhbHVlcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50VmFsdWUg
PSBtX291dC5waGkoSW50MzIsIGludFZhbHVlcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9
IGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRWYWx1ZSA9IGRvdWJsZVRvSW50
MzIoZG91YmxlVmFsdWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0zMzQ5
LDcgKzMzNDksNyBAQCBwcml2YXRlOgogICAgICAgICBMVmFsdWUgYWNjZXNzb3IgPSBsb3dDZWxs
KG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICBhdXRvIHVpZCA9IG1fZ3JhcGguaWRlbnRpZmll
cnMoKVttX25vZGUtPmlkZW50aWZpZXJOdW1iZXIoKV07CiAgICAgICAgIHZtQ2FsbCgKLSAgICAg
ICAgICAgIG1fb3V0LnZvaWRUeXBlLAorICAgICAgICAgICAgVm9pZCwKICAgICAgICAgICAgIG1f
b3V0Lm9wZXJhdGlvbihtX25vZGUtPm9wKCkgPT0gUHV0R2V0dGVyQnlJZCA/IG9wZXJhdGlvblB1
dEdldHRlckJ5SWQgOiBvcGVyYXRpb25QdXRTZXR0ZXJCeUlkKSwKICAgICAgICAgICAgIG1fY2Fs
bEZyYW1lLCBiYXNlLCBtX291dC5jb25zdEludFB0cih1aWQpLCBtX291dC5jb25zdEludDMyKG1f
bm9kZS0+YWNjZXNzb3JBdHRyaWJ1dGVzKCkpLCBhY2Nlc3Nvcik7CiAgICAgfQpAQCAtMzM2MSw3
ICszMzYxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgTFZhbHVlIHNldHRlciA9IGxvd0pTVmFsdWUo
bV9ub2RlLT5jaGlsZDMoKSk7CiAgICAgICAgIGF1dG8gdWlkID0gbV9ncmFwaC5pZGVudGlmaWVy
cygpW21fbm9kZS0+aWRlbnRpZmllck51bWJlcigpXTsKICAgICAgICAgdm1DYWxsKAotICAgICAg
ICAgICAgbV9vdXQudm9pZFR5cGUsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25QdXRHZXR0ZXJT
ZXR0ZXIpLAorICAgICAgICAgICAgVm9pZCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvblB1dEdl
dHRlclNldHRlciksCiAgICAgICAgICAgICBtX2NhbGxGcmFtZSwgYmFzZSwgbV9vdXQuY29uc3RJ
bnRQdHIodWlkKSwgbV9vdXQuY29uc3RJbnQzMihtX25vZGUtPmFjY2Vzc29yQXR0cmlidXRlcygp
KSwgZ2V0dGVyLCBzZXR0ZXIpOwogCiAgICAgfQpAQCAtMzM3Miw3ICszMzcyLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgTFZhbHVlIHN1YnNjcmlwdCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIo
KSk7CiAgICAgICAgIExWYWx1ZSBhY2Nlc3NvciA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDMoKSk7
CiAgICAgICAgIHZtQ2FsbCgKLSAgICAgICAgICAgIG1fb3V0LnZvaWRUeXBlLAorICAgICAgICAg
ICAgVm9pZCwKICAgICAgICAgICAgIG1fb3V0Lm9wZXJhdGlvbihtX25vZGUtPm9wKCkgPT0gUHV0
R2V0dGVyQnlWYWwgPyBvcGVyYXRpb25QdXRHZXR0ZXJCeVZhbCA6IG9wZXJhdGlvblB1dFNldHRl
ckJ5VmFsKSwKICAgICAgICAgICAgIG1fY2FsbEZyYW1lLCBiYXNlLCBzdWJzY3JpcHQsIG1fb3V0
LmNvbnN0SW50MzIobV9ub2RlLT5hY2Nlc3NvckF0dHJpYnV0ZXMoKSksIGFjY2Vzc29yKTsKICAg
ICB9CkBAIC0zNDMzLDExICszNDMzLDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkFycmF5
UHVzaERvdWJsZSk7CiAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9v
dXQuYW5jaG9yKAotICAgICAgICAgICAgICAgIHZtQ2FsbChtX291dC5pbnQ2NCwgb3BlcmF0aW9u
LCBtX2NhbGxGcmFtZSwgdmFsdWUsIGJhc2UpKTsKKyAgICAgICAgICAgICAgICB2bUNhbGwoSW50
NjQsIG9wZXJhdGlvbiwgbV9jYWxsRnJhbWUsIHZhbHVlLCBiYXNlKSk7CiAgICAgICAgICAgICBt
X291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fb3V0
LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwotICAgICAgICAgICAgc2V0SlNWYWx1
ZShtX291dC5waGkobV9vdXQuaW50NjQsIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpKTsKKyAgICAg
ICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKEludDY0LCBmYXN0UmVzdWx0LCBzbG93UmVzdWx0
KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMzQ5
MCwxMSArMzQ5MCwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX291
dC5hcHBlbmRUbyhzbG93Q2FzZSwgY29udGludWF0aW9uKTsKICAgICAgICAgICAgIHJlc3VsdHMu
YXBwZW5kKG1fb3V0LmFuY2hvcih2bUNhbGwoCi0gICAgICAgICAgICAgICAgbV9vdXQuaW50NjQs
IG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25BcnJheVBvcEFuZFJlY292ZXJMZW5ndGgpLCBtX2Nh
bGxGcmFtZSwgYmFzZSkpKTsKKyAgICAgICAgICAgICAgICBJbnQ2NCwgbV9vdXQub3BlcmF0aW9u
KG9wZXJhdGlvbkFycmF5UG9wQW5kUmVjb3Zlckxlbmd0aCksIG1fY2FsbEZyYW1lLCBiYXNlKSkp
OwogICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKLSAgICAg
ICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKG1fb3V0LmludDY0LCByZXN1bHRzKSk7CisgICAg
ICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShJbnQ2NCwgcmVzdWx0cykpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTM1MTMsNyArMzUxMyw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIEFTU0VSVChpbml0aWFsaXphdGlvblZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgaW5pdGlh
bGl6YXRpb25WYWx1ZSA9PSBqc1REWlZhbHVlKCkpOwogICAgICAgICBpZiAodGFibGUtPnNpbmds
ZXRvblNjb3BlKCktPmlzU3RpbGxWYWxpZCgpKSB7CiAgICAgICAgICAgICBMVmFsdWUgY2FsbFJl
c3VsdCA9IHZtQ2FsbCgKLSAgICAgICAgICAgICAgICBtX291dC5pbnQ2NCwKKyAgICAgICAgICAg
ICAgICBJbnQ2NCwKICAgICAgICAgICAgICAgICBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uQ3Jl
YXRlQWN0aXZhdGlvbkRpcmVjdCksIG1fY2FsbEZyYW1lLCB3ZWFrUG9pbnRlcihzdHJ1Y3R1cmUp
LAogICAgICAgICAgICAgICAgIHNjb3BlLCB3ZWFrUG9pbnRlcih0YWJsZSksIG1fb3V0LmNvbnN0
SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGluaXRpYWxpemF0aW9uVmFsdWUpKSk7CiAgICAgICAgICAg
ICBzZXRKU1ZhbHVlKGNhbGxSZXN1bHQpOwpAQCAtMzU1Niw3ICszNTU2LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICAKICAgICAgICAgbV9v
dXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7Ci0gICAgICAgIHNldEpTVmFsdWUo
bV9vdXQucGhpKG1fb3V0LmludFB0ciwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCkpOworICAgICAg
ICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBmYXN0UmVzdWx0LCBzbG93UmVz
dWx0KSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgY29tcGlsZU5ld0Z1bmN0aW9uKCkKQEAgLTM1
NjksOCArMzU2OSw4IEBAIHByaXZhdGU6CiAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhl
Y3V0YWJsZSA9IG1fbm9kZS0+Y2FzdE9wZXJhbmQ8RnVuY3Rpb25FeGVjdXRhYmxlKj4oKTsKICAg
ICAgICAgaWYgKGV4ZWN1dGFibGUtPnNpbmdsZXRvbkZ1bmN0aW9uKCktPmlzU3RpbGxWYWxpZCgp
KSB7CiAgICAgICAgICAgICBMVmFsdWUgY2FsbFJlc3VsdCA9Ci0gICAgICAgICAgICAgICAgaXNH
ZW5lcmF0b3JGdW5jdGlvbiA/IHZtQ2FsbChtX291dC5pbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9w
ZXJhdGlvbk5ld0dlbmVyYXRvckZ1bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9p
bnRlcihleGVjdXRhYmxlKSkgOgotICAgICAgICAgICAgICAgIHZtQ2FsbChtX291dC5pbnQ2NCwg
bV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHNjb3Bl
LCB3ZWFrUG9pbnRlcihleGVjdXRhYmxlKSk7CisgICAgICAgICAgICAgICAgaXNHZW5lcmF0b3JG
dW5jdGlvbiA/IHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0dlbmVy
YXRvckZ1bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxl
KSkgOgorICAgICAgICAgICAgICAgIHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJh
dGlvbk5ld0Z1bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRh
YmxlKSk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKGNhbGxSZXN1bHQpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CkBAIC0zNjIwLDcgKzM2MjAsNyBAQCBwcml2YXRlOgogICAgICAg
ICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgIAogICAgICAgICBtX291dC5hcHBl
bmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKLSAgICAgICAgc2V0SlNWYWx1ZShtX291dC5w
aGkobV9vdXQuaW50UHRyLCBmYXN0UmVzdWx0LCBzbG93UmVzdWx0KSk7CisgICAgICAgIHNldEpT
VmFsdWUobV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpKTsK
ICAgICB9CiAgICAgCiAgICAgdm9pZCBjb21waWxlQ3JlYXRlRGlyZWN0QXJndW1lbnRzKCkKQEAg
LTM2NzgsNyArMzY3OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0
aW9uKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFz
dE5leHQpOwotICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQucGhpKG1fb3V0LmludFB0ciwg
ZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCk7CisgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5w
aGkocG9pbnRlclR5cGUoKSwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCk7CiAKICAgICAgICAgbV9v
dXQuc3RvcmVQdHIoZ2V0Q3VycmVudENhbGxlZSgpLCByZXN1bHQsIG1faGVhcHMuRGlyZWN0QXJn
dW1lbnRzX2NhbGxlZSk7CiAgICAgICAgIApAQCAtMzcxMSw3ICszNzExLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgbGFzdE5leHQgPSBtX291
dC5hcHBlbmRUbyhsb29wLCBlbmQpOwotICAgICAgICAgICAgTFZhbHVlIHByZXZpb3VzSW5kZXgg
PSBtX291dC5waGkobV9vdXQuaW50UHRyLCBvcmlnaW5hbExlbmd0aCk7CisgICAgICAgICAgICBM
VmFsdWUgcHJldmlvdXNJbmRleCA9IG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBvcmlnaW5hbExl
bmd0aCk7CiAgICAgICAgICAgICBMVmFsdWUgaW5kZXggPSBtX291dC5zdWIocHJldmlvdXNJbmRl
eCwgbV9vdXQuaW50UHRyT25lKTsKICAgICAgICAgICAgIG1fb3V0LnN0b3JlNjQoCiAgICAgICAg
ICAgICAgICAgbV9vdXQubG9hZDY0KG1fb3V0LmJhc2VJbmRleChtX2hlYXBzLnZhcmlhYmxlcywg
c3RhY2tCYXNlLCBpbmRleCkpLApAQCAtMzczMSw3ICszNzMxLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgTFZhbHVlIHNjb3BlID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgCiAg
ICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwoCi0gICAgICAgICAgICBtX291dC5pbnQ2NCwg
bV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkNyZWF0ZVNjb3BlZEFyZ3VtZW50cyksIG1fY2FsbEZy
YW1lLAorICAgICAgICAgICAgSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25DcmVhdGVT
Y29wZWRBcmd1bWVudHMpLCBtX2NhbGxGcmFtZSwKICAgICAgICAgICAgIHdlYWtQb2ludGVyKAog
ICAgICAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNl
bWFudGljKS0+c2NvcGVkQXJndW1lbnRzU3RydWN0dXJlKCkpLAogICAgICAgICAgICAgZ2V0QXJn
dW1lbnRzU3RhcnQoKSwgZ2V0QXJndW1lbnRzTGVuZ3RoKCkudmFsdWUsIGdldEN1cnJlbnRDYWxs
ZWUoKSwgc2NvcGUpOwpAQCAtMzc0Miw3ICszNzQyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNv
bXBpbGVDcmVhdGVDbG9uZWRBcmd1bWVudHMoKQogICAgIHsKICAgICAgICAgTFZhbHVlIHJlc3Vs
dCA9IHZtQ2FsbCgKLSAgICAgICAgICAgIG1fb3V0LmludDY0LCBtX291dC5vcGVyYXRpb24ob3Bl
cmF0aW9uQ3JlYXRlQ2xvbmVkQXJndW1lbnRzKSwgbV9jYWxsRnJhbWUsCisgICAgICAgICAgICBJ
bnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkNyZWF0ZUNsb25lZEFyZ3VtZW50cyksIG1f
Y2FsbEZyYW1lLAogICAgICAgICAgICAgd2Vha1BvaW50ZXIoCiAgICAgICAgICAgICAgICAgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5jbG9uZWRBcmd1
bWVudHNTdHJ1Y3R1cmUoKSksCiAgICAgICAgICAgICBnZXRBcmd1bWVudHNTdGFydCgpLCBnZXRB
cmd1bWVudHNMZW5ndGgoKS52YWx1ZSwgZ2V0Q3VycmVudENhbGxlZSgpKTsKQEAgLTM3NjUsNyAr
Mzc2NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIEFyZ3VtZW50czogMDpleGVjLCAxOkpTQ2Vs
bCogYXJyYXksIDI6YXJndW1lbnRzIHN0YXJ0LCAzOm51bWJlciBvZiBhcmd1bWVudHMgdG8gc2tp
cCwgNDphcnJheSBsZW5ndGgKICAgICAgICAgTFZhbHVlIG51bWJlck9mQXJndW1lbnRzVG9Ta2lw
ID0gbV9vdXQuY29uc3RJbnQzMihtX25vZGUtPm51bWJlck9mQXJndW1lbnRzVG9Ta2lwKCkpOwog
ICAgICAgICB2bUNhbGwoCi0gICAgICAgICAgICBtX291dC52b2lkVHlwZSxtX291dC5vcGVyYXRp
b24ob3BlcmF0aW9uQ29weVJlc3QpLCBtX2NhbGxGcmFtZSwgbG93Q2VsbChtX25vZGUtPmNoaWxk
MSgpKSwKKyAgICAgICAgICAgIFZvaWQsbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkNvcHlSZXN0
KSwgbV9jYWxsRnJhbWUsIGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksCiAgICAgICAgICAgICBn
ZXRBcmd1bWVudHNTdGFydCgpLCBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcCwgYXJyYXlMZW5ndGgp
OwogICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAKQEAgLTM3ODksNyArMzc4OSw3
IEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAg
CiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwotICAgICAg
ICBzZXRJbnQzMihtX291dC5waGkobV9vdXQuaW50MzIsIHplcm9MZW5ndGhSZXN1bHQsIG5vblpl
cm9MZW5ndGhSZXN1bHQpKTsKKyAgICAgICAgc2V0SW50MzIobV9vdXQucGhpKEludDMyLCB6ZXJv
TGVuZ3RoUmVzdWx0LCBub25aZXJvTGVuZ3RoUmVzdWx0KSk7CiAgICAgfQogICAgIAogICAgIHZv
aWQgY29tcGlsZU5ld09iamVjdCgpCkBAIC0zODUxLDcgKzM4NTEsNyBAQCBwcml2YXRlOgogICAg
ICAgICAKICAgICAgICAgaWYgKCFtX25vZGUtPm51bUNoaWxkcmVuKCkpIHsKICAgICAgICAgICAg
IHNldEpTVmFsdWUodm1DYWxsKAotICAgICAgICAgICAgICAgIG1fb3V0LmludDY0LCBtX291dC5v
cGVyYXRpb24ob3BlcmF0aW9uTmV3RW1wdHlBcnJheSksIG1fY2FsbEZyYW1lLAorICAgICAgICAg
ICAgICAgIEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uTmV3RW1wdHlBcnJheSksIG1f
Y2FsbEZyYW1lLAogICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKHN0cnVjdHVyZSkp
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMzg3Miw3ICszODcyLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKHNjcmF0Y2hTaXplKSwgbV9v
dXQuYWJzb2x1dGUoc2NyYXRjaEJ1ZmZlci0+YWN0aXZlTGVuZ3RoUHRyKCkpKTsKICAgICAgICAg
CiAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwoCi0gICAgICAgICAgICBtX291dC5pbnQ2
NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0FycmF5KSwgbV9jYWxsRnJhbWUsCisgICAg
ICAgICAgICBJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0FycmF5KSwgbV9jYWxs
RnJhbWUsCiAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihzdHJ1Y3R1cmUpLCBtX291dC5j
b25zdEludFB0cihidWZmZXIpLAogICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIobV9ub2Rl
LT5udW1DaGlsZHJlbigpKSk7CiAgICAgICAgIApAQCAtMzkxMSw3ICszOTExLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoCi0gICAg
ICAgICAgICBtX291dC5pbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0FycmF5QnVm
ZmVyKSwgbV9jYWxsRnJhbWUsCisgICAgICAgICAgICBJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9w
ZXJhdGlvbk5ld0FycmF5QnVmZmVyKSwgbV9jYWxsRnJhbWUsCiAgICAgICAgICAgICBtX291dC5j
b25zdEludFB0cihzdHJ1Y3R1cmUpLCBtX291dC5jb25zdEludFB0cihtX25vZGUtPnN0YXJ0Q29u
c3RhbnQoKSksCiAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihtX25vZGUtPm51bUNvbnN0
YW50cygpKSkpOwogICAgIH0KQEAgLTM5NDcsNyArMzk0Nyw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICBMVmFsdWUgdmVjdG9yTGVuZ3RoID0gcHVibGljTGVuZ3RoOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBMVmFsdWUgcGF5bG9hZFNpemUgPQotICAgICAgICAgICAgICAgIG1fb3V0LnNo
bChtX291dC56ZXJvRXh0KHZlY3Rvckxlbmd0aCwgbV9vdXQuaW50UHRyKSwgbV9vdXQuY29uc3RJ
bnRQdHIoMykpOworICAgICAgICAgICAgICAgIG1fb3V0LnNobChtX291dC56ZXJvRXh0KHZlY3Rv
ckxlbmd0aCwgcG9pbnRlclR5cGUoKSksIG1fb3V0LmNvbnN0SW50UHRyKDMpKTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgTFZhbHVlIGJ1dHRlcmZseVNpemUgPSBtX291dC5hZGQoCiAgICAg
ICAgICAgICAgICAgcGF5bG9hZFNpemUsIG1fb3V0LmNvbnN0SW50UHRyKHNpemVvZihJbmRleGlu
Z0hlYWRlcikpKTsKQEAgLTM5NzcsNyArMzk3Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250aW51YXRpb24pOwogICAg
ICAgICAgICAgTFZhbHVlIHN0cnVjdHVyZVZhbHVlID0gbV9vdXQucGhpKAotICAgICAgICAgICAg
ICAgIG1fb3V0LmludFB0ciwgbGFyZ2VTdHJ1Y3R1cmUsIGZhaWxTdHJ1Y3R1cmUpOworICAgICAg
ICAgICAgICAgIHBvaW50ZXJUeXBlKCksIGxhcmdlU3RydWN0dXJlLCBmYWlsU3RydWN0dXJlKTsK
ICAgICAgICAgICAgIExWYWx1ZSBzbG93UmVzdWx0VmFsdWUgPSBsYXp5U2xvd1BhdGgoCiAgICAg
ICAgICAgICAgICAgWz1dIChjb25zdCBWZWN0b3I8TG9jYXRpb24+JiBsb2NhdGlvbnMpIC0+IFJl
ZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4gewogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gY3JlYXRlTGF6eUNhbGxHZW5lcmF0b3IoCkBAIC0zOTg5LDcgKzM5ODksNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKLSAgICAg
ICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKG1fb3V0LmludFB0ciwgZmFzdFJlc3VsdCwgc2xv
d1Jlc3VsdCkpOworICAgICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkocG9pbnRlclR5cGUo
KSwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAgICAgICAgIApAQCAtMzk5OCw3ICszOTk4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IG1fb3V0LmNvbnN0SW50UHRyKAogICAgICAgICAgICAgICAgIGdsb2JhbE9iamVjdC0+YXJyYXlT
dHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aEFycmF5U3Rv
cmFnZSkpLAogICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIoc3RydWN0dXJlKSk7Ci0gICAg
ICAgIHNldEpTVmFsdWUodm1DYWxsKG1fb3V0LmludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0
aW9uTmV3QXJyYXlXaXRoU2l6ZSksIG1fY2FsbEZyYW1lLCBzdHJ1Y3R1cmVWYWx1ZSwgcHVibGlj
TGVuZ3RoKSk7CisgICAgICAgIHNldEpTVmFsdWUodm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRp
b24ob3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSksIG1fY2FsbEZyYW1lLCBzdHJ1Y3R1cmVWYWx1
ZSwgcHVibGljTGVuZ3RoKSk7CiAgICAgfQogCiAgICAgdm9pZCBjb21waWxlTmV3VHlwZWRBcnJh
eSgpCkBAIC00MDYwLDcgKzQwNjAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9vdXQuanVt
cChjb250aW51YXRpb24pOwogCiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRp
b24sIGxhc3ROZXh0KTsKLSAgICAgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKG1fb3V0Lmlu
dFB0ciwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCkpOworICAgICAgICAgICAgc2V0SlNWYWx1ZSht
X291dC5waGkocG9pbnRlclR5cGUoKSwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCkpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTQwNjgsNyArNDA2OCw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBMVmFsdWUgYXJndW1lbnQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQx
KCkpOwogCiAgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKAotICAgICAgICAgICAg
ICAgIG1fb3V0LmludFB0ciwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld1R5cGVkQXJyYXlX
aXRoT25lQXJndW1lbnRGb3JUeXBlKHR5cGUpKSwKKyAgICAgICAgICAgICAgICBwb2ludGVyVHlw
ZSgpLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uTmV3VHlwZWRBcnJheVdpdGhPbmVBcmd1bWVu
dEZvclR5cGUodHlwZSkpLAogICAgICAgICAgICAgICAgIG1fY2FsbEZyYW1lLCB3ZWFrUG9pbnRl
cihnbG9iYWxPYmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1cmVDb25jdXJyZW50bHkodHlwZSkpLCBh
cmd1bWVudCk7CiAKICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKQEAgLTQxMDMsNyAr
NDEwMyw3IEBAIHByaXZhdGU6CiAgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobV9u
b2RlLT5jaGlsZDEoKSk7CiAKICAgICAgICAgaWYgKCEoYWJzdHJhY3RWYWx1ZShtX25vZGUtPmNo
aWxkMSgpKS5tX3R5cGUgJiBTcGVjQnl0ZWNvZGVOdW1iZXIpKQotICAgICAgICAgICAgc2V0SlNW
YWx1ZSh2bUNhbGwobV9vdXQuaW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25Ub051bWJl
ciksIG1fY2FsbEZyYW1lLCB2YWx1ZSkpOworICAgICAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwo
SW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25Ub051bWJlciksIG1fY2FsbEZyYW1lLCB2
YWx1ZSkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5vdE51bWJl
ciA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRp
b24gPSBtX291dC5uZXdCbG9jaygpOwpAQCAtNDExNiwxMiArNDExNiwxMiBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgLy8gV2UgaGF2ZSBzZXZlcmFsIGF0dGVtcHRzIHRvIHJlbW92ZSBUb051bWJl
ci4gQnV0IFRvTnVtYmVyIHN0aWxsIGV4aXN0cy4KICAgICAgICAgICAgIC8vIEl0IG1lYW5zIHRo
YXQgY29udmVydGluZyBub24tbnVtYmVycyB0byBudW1iZXJzIGJ5IHRoaXMgVG9OdW1iZXIgaXMg
bm90IHJhcmUuCiAgICAgICAgICAgICAvLyBJbnN0ZWFkIG9mIHRoZSBsYXp5IHNsb3cgcGF0aCBn
ZW5lcmF0b3IsIHdlIGNhbGwgdGhlIG9wZXJhdGlvbiBoZXJlLgotICAgICAgICAgICAgVmFsdWVG
cm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcih2bUNhbGwobV9vdXQuaW50NjQsIG1f
b3V0Lm9wZXJhdGlvbihvcGVyYXRpb25Ub051bWJlciksIG1fY2FsbEZyYW1lLCB2YWx1ZSkpOwor
ICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcih2bUNh
bGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25Ub051bWJlciksIG1fY2FsbEZyYW1l
LCB2YWx1ZSkpOwogICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogCiAgICAg
ICAgICAgICAvLyBjb250aW51YXRpb24gY2FzZS4KICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRv
KGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwotICAgICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5w
aGkobV9vdXQuaW50NjQsIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpKTsKKyAgICAgICAgICAgIHNl
dEpTVmFsdWUobV9vdXQucGhpKEludDY0LCBmYXN0UmVzdWx0LCBzbG93UmVzdWx0KSk7CiAgICAg
ICAgIH0KICAgICB9CiAgICAgCkBAIC00MTU2LDcgKzQxNTYsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKLSAgICAgICAgICAgIHNl
dEpTVmFsdWUobV9vdXQucGhpKG1fb3V0LmludDY0LCBzaW1wbGVSZXN1bHQsIHVuYm94ZWRSZXN1
bHQpKTsKKyAgICAgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKEludDY0LCBzaW1wbGVSZXN1
bHQsIHVuYm94ZWRSZXN1bHQpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9pbnRlcnBy
ZXRlci5maWx0ZXIobV9ub2RlLT5jaGlsZDEoKSwgU3BlY1N0cmluZyB8IFNwZWNTdHJpbmdPYmpl
Y3QpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNDE5NiwxMSArNDE5NiwxMSBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IG1fb3V0Lm9wZXJhdGlvbihtX25vZGUtPm9w
KCkgPT0gVG9TdHJpbmcgPyBvcGVyYXRpb25Ub1N0cmluZ09uQ2VsbCA6IG9wZXJhdGlvbkNhbGxT
dHJpbmdDb25zdHJ1Y3Rvck9uQ2VsbCk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAg
ICAgb3BlcmF0aW9uID0gbV9vdXQub3BlcmF0aW9uKG1fbm9kZS0+b3AoKSA9PSBUb1N0cmluZyA/
IG9wZXJhdGlvblRvU3RyaW5nIDogb3BlcmF0aW9uQ2FsbFN0cmluZ0NvbnN0cnVjdG9yKTsKLSAg
ICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGNvbnZlcnRlZFJlc3VsdCA9IG1fb3V0LmFuY2hvcih2
bUNhbGwobV9vdXQuaW50NjQsIG9wZXJhdGlvbiwgbV9jYWxsRnJhbWUsIHZhbHVlKSk7CisgICAg
ICAgICAgICBWYWx1ZUZyb21CbG9jayBjb252ZXJ0ZWRSZXN1bHQgPSBtX291dC5hbmNob3Iodm1D
YWxsKEludDY0LCBvcGVyYXRpb24sIG1fY2FsbEZyYW1lLCB2YWx1ZSkpOwogICAgICAgICAgICAg
bV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX291
dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKLSAgICAgICAgICAgIHNldEpTVmFs
dWUobV9vdXQucGhpKG1fb3V0LmludDY0LCBzaW1wbGVSZXN1bHQsIGNvbnZlcnRlZFJlc3VsdCkp
OworICAgICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkoSW50NjQsIHNpbXBsZVJlc3VsdCwg
Y29udmVydGVkUmVzdWx0KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAg
ICAgICAgIApAQCAtNDIzMiwxMSArNDIzMiwxMSBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAg
ICAgbV9vdXQuYXBwZW5kVG8oaXNPYmplY3RDYXNlLCBjb250aW51YXRpb24pOwogICAgICAgICBy
ZXN1bHRzLmFwcGVuZChtX291dC5hbmNob3Iodm1DYWxsKAotICAgICAgICAgICAgbV9vdXQuaW50
NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25Ub1ByaW1pdGl2ZSksIG1fY2FsbEZyYW1lLCB2
YWx1ZSkpKTsKKyAgICAgICAgICAgIEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uVG9Q
cmltaXRpdmUpLCBtX2NhbGxGcmFtZSwgdmFsdWUpKSk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29u
dGludWF0aW9uKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlv
biwgbGFzdE5leHQpOwotICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShtX291dC5pbnQ2NCwg
cmVzdWx0cykpOworICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShJbnQ2NCwgcmVzdWx0cykp
OwogICAgIH0KICAgICAKICAgICB2b2lkIGNvbXBpbGVNYWtlUm9wZSgpCkBAIC00MzE1LDcgKzQz
MTUsNyBAQCBwcml2YXRlOgogICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAg
ICAgIAogICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKLSAg
ICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkobV9vdXQuaW50NjQsIGZhc3RSZXN1bHQsIHNsb3dS
ZXN1bHQpKTsKKyAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkoSW50NjQsIGZhc3RSZXN1bHQs
IHNsb3dSZXN1bHQpKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBjb21waWxlU3RyaW5nQ2hhckF0
KCkKQEAgLTQzNzEsMTMgKzQzNzEsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAg
ICBWZWN0b3I8VmFsdWVGcm9tQmxvY2ssIDQ+IHJlc3VsdHM7CiAgICAgICAgIHJlc3VsdHMuYXBw
ZW5kKG1fb3V0LmFuY2hvcih2bUNhbGwoCi0gICAgICAgICAgICBtX291dC5pbnQ2NCwgbV9vdXQu
b3BlcmF0aW9uKG9wZXJhdGlvblNpbmdsZUNoYXJhY3RlclN0cmluZyksCisgICAgICAgICAgICBJ
bnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvblNpbmdsZUNoYXJhY3RlclN0cmluZyksCiAg
ICAgICAgICAgICBtX2NhbGxGcmFtZSwgY2hhcjE2Qml0VmFsdWUpKSk7CiAgICAgICAgIG1fb3V0
Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgICAgIAogICAgICAgICBtX291dC5hcHBlbmRU
byhiaXRzQ29udGludWF0aW9uLCBzbG93UGF0aCk7CiAgICAgICAgICAgICAKLSAgICAgICAgTFZh
bHVlIGNoYXJhY3RlciA9IG1fb3V0LnBoaShtX291dC5pbnQzMiwgY2hhcjhCaXQsIGNoYXIxNkJp
dCk7CisgICAgICAgIExWYWx1ZSBjaGFyYWN0ZXIgPSBtX291dC5waGkoSW50MzIsIGNoYXI4Qml0
LCBjaGFyMTZCaXQpOwogICAgICAgICAgICAgCiAgICAgICAgIExWYWx1ZSBzbWFsbFN0cmluZ3Mg
PSBtX291dC5jb25zdEludFB0cih2bSgpLnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJp
bmdzKCkpOwogICAgICAgICAgICAgCkBAIC00NDE3LDEzICs0NDE3LDEzIEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICByZXN1bHRzLmFwcGVu
ZChtX291dC5hbmNob3Iodm1DYWxsKAotICAgICAgICAgICAgICAgIG1fb3V0LmludDY0LCBtX291
dC5vcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlWYWxTdHJpbmdJbnQpLCBtX2NhbGxGcmFtZSwgYmFz
ZSwgaW5kZXgpKSk7CisgICAgICAgICAgICAgICAgSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVy
YXRpb25HZXRCeVZhbFN0cmluZ0ludCksIG1fY2FsbEZyYW1lLCBiYXNlLCBpbmRleCkpKTsKICAg
ICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsK
ICAgICAgICAgICAgIAogICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3RO
ZXh0KTsKLSAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkobV9vdXQuaW50NjQsIHJlc3VsdHMp
KTsKKyAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkoSW50NjQsIHJlc3VsdHMpKTsKICAgICB9
CiAgICAgCiAgICAgdm9pZCBjb21waWxlU3RyaW5nQ2hhckNvZGVBdCgpCkBAIC00NDY3LDcgKzQ0
NjcsNyBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGlu
dWF0aW9uLCBsYXN0TmV4dCk7CiAgICAgICAgIAotICAgICAgICBzZXRJbnQzMihtX291dC5waGko
bV9vdXQuaW50MzIsIGNoYXI4Qml0LCBjaGFyMTZCaXQpKTsKKyAgICAgICAgc2V0SW50MzIobV9v
dXQucGhpKEludDMyLCBjaGFyOEJpdCwgY2hhcjE2Qml0KSk7CiAgICAgfQogCiAgICAgdm9pZCBj
b21waWxlU3RyaW5nRnJvbUNoYXJDb2RlKCkKQEAgLTQ0NzYsNyArNDQ3Niw3IEBAIHByaXZhdGU6
CiAgICAgICAgIAogICAgICAgICBpZiAoY2hpbGRFZGdlLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNl
KSB7CiAgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKAotICAgICAgICAgICAgICAg
IG1fb3V0LmludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uU3RyaW5nRnJvbUNoYXJDb2Rl
VW50eXBlZCksIG1fY2FsbEZyYW1lLAorICAgICAgICAgICAgICAgIEludDY0LCBtX291dC5vcGVy
YXRpb24ob3BlcmF0aW9uU3RyaW5nRnJvbUNoYXJDb2RlVW50eXBlZCksIG1fY2FsbEZyYW1lLAog
ICAgICAgICAgICAgICAgIGxvd0pTVmFsdWUoY2hpbGRFZGdlKSk7CiAgICAgICAgICAgICBzZXRK
U1ZhbHVlKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC00NTA1LDEzICs0NTA1LDEz
IEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250aW51YXRp
b24pOwogCiAgICAgICAgIExWYWx1ZSBzbG93UmVzdWx0VmFsdWUgPSB2bUNhbGwoCi0gICAgICAg
ICAgICBtX291dC5pbnRQdHIsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25TdHJpbmdGcm9tQ2hh
ckNvZGUpLCBtX2NhbGxGcmFtZSwgdmFsdWUpOworICAgICAgICAgICAgcG9pbnRlclR5cGUoKSwg
bV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvblN0cmluZ0Zyb21DaGFyQ29kZSksIG1fY2FsbEZyYW1l
LCB2YWx1ZSk7CiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNo
b3Ioc2xvd1Jlc3VsdFZhbHVlKTsKICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwog
CiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwogCi0gICAg
ICAgIHNldEpTVmFsdWUobV9vdXQucGhpKG1fb3V0LmludDY0LCBmYXN0UmVzdWx0LCBzbG93UmVz
dWx0KSk7CisgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKEludDY0LCBmYXN0UmVzdWx0LCBz
bG93UmVzdWx0KSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgY29tcGlsZUdldEJ5T2Zmc2V0KCkK
QEAgLTQ2MDksNyArNDYwOSw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0LnVucmVhY2hhYmxl
KCk7CiAgICAgICAgIAogICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3RO
ZXh0KTsKLSAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkobV9vdXQuaW50NjQsIHJlc3VsdHMp
KTsKKyAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkoSW50NjQsIHJlc3VsdHMpKTsKICAgICB9
CiAgICAgCiAgICAgdm9pZCBjb21waWxlUHV0QnlPZmZzZXQoKQpAQCAtNDg4MCw3ICs0ODgwLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKIAogICAg
ICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7Ci0gICAgICAg
ICAgICBzZXRCb29sZWFuKG1fb3V0LnBoaShtX291dC5ib29sZWFuLCBmYXN0UmVzdWx0LCBzbG93
UmVzdWx0KSk7CisgICAgICAgICAgICBzZXRCb29sZWFuKG1fb3V0LnBoaShJbnQzMiwgZmFzdFJl
c3VsdCwgc2xvd1Jlc3VsdCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAg
LTQ5NzIsNyArNDk3Miw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRp
bnVhdGlvbik7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRp
bnVhdGlvbiwgbGFzdE5leHQpOwotICAgICAgICAgICAgc2V0Qm9vbGVhbihtX291dC5waGkobV9v
dXQuYm9vbGVhbiwgbm90Q2VsbFJlc3VsdCwgbm90U3RyaW5nUmVzdWx0LCBpc1N0cmluZ1Jlc3Vs
dCkpOworICAgICAgICAgICAgc2V0Qm9vbGVhbihtX291dC5waGkoSW50MzIsIG5vdENlbGxSZXN1
bHQsIG5vdFN0cmluZ1Jlc3VsdCwgaXNTdHJpbmdSZXN1bHQpKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogICAgICAgICAKQEAgLTU1NDMsNyArNTU0Myw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIExWYWx1ZSBqc0FyZ3VtZW50cyA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7
CiAgICAgICAgIAogICAgICAgICBMVmFsdWUgbGVuZ3RoID0gdm1DYWxsKAotICAgICAgICAgICAg
bV9vdXQuaW50MzIsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25TaXplT2ZWYXJhcmdzKSwgbV9j
YWxsRnJhbWUsIGpzQXJndW1lbnRzLAorICAgICAgICAgICAgSW50MzIsIG1fb3V0Lm9wZXJhdGlv
bihvcGVyYXRpb25TaXplT2ZWYXJhcmdzKSwgbV9jYWxsRnJhbWUsIGpzQXJndW1lbnRzLAogICAg
ICAgICAgICAgbV9vdXQuY29uc3RJbnQzMihkYXRhLT5vZmZzZXQpKTsKICAgICAgICAgCiAgICAg
ICAgIC8vIEZJWE1FOiBUaGVyZSBpcyBhIGNoYW5jZSB0aGF0IHdlIHdpbGwgY2FsbCBhbiBlZmZl
Y3RmdWwgbGVuZ3RoIHByb3BlcnR5IHR3aWNlLiBUaGlzIGlzIHNhZmUKQEAgLTU1NjcsNyArNTU2
Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cigzKSk7CiAgICAg
ICAgIAogICAgICAgICB2bUNhbGwoCi0gICAgICAgICAgICBtX291dC52b2lkVHlwZSwgbV9vdXQu
b3BlcmF0aW9uKG9wZXJhdGlvbkxvYWRWYXJhcmdzKSwgbV9jYWxsRnJhbWUsCisgICAgICAgICAg
ICBWb2lkLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uTG9hZFZhcmFyZ3MpLCBtX2NhbGxGcmFt
ZSwKICAgICAgICAgICAgIG1fb3V0LmNhc3RUb0ludDMyKG1hY2hpbmVTdGFydCksIGpzQXJndW1l
bnRzLCBtX291dC5jb25zdEludDMyKGRhdGEtPm9mZnNldCksCiAgICAgICAgICAgICBsZW5ndGgs
IG1fb3V0LmNvbnN0SW50MzIoZGF0YS0+bWFuZGF0b3J5TWluaW11bSkpOwogICAgIH0KQEAgLTU2
MDUsNyArNTYwNSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBtX291dC5hYm92ZShsb29wQm91
bmRWYWx1ZSwgbGVuZ3RoQXNQdHIpLCB1bnN1cmUodW5kZWZpbmVkTG9vcCksIHVuc3VyZShtYWlu
TG9vcEVudHJ5KSk7CiAgICAgICAgIAogICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1f
b3V0LmFwcGVuZFRvKHVuZGVmaW5lZExvb3AsIG1haW5Mb29wRW50cnkpOwotICAgICAgICBMVmFs
dWUgcHJldmlvdXNJbmRleCA9IG1fb3V0LnBoaShtX291dC5pbnRQdHIsIGxvb3BCb3VuZCk7Cisg
ICAgICAgIExWYWx1ZSBwcmV2aW91c0luZGV4ID0gbV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIGxv
b3BCb3VuZCk7CiAgICAgICAgIExWYWx1ZSBjdXJyZW50SW5kZXggPSBtX291dC5zdWIocHJldmlv
dXNJbmRleCwgbV9vdXQuaW50UHRyT25lKTsKICAgICAgICAgbV9vdXQuc3RvcmU2NCgKICAgICAg
ICAgICAgIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSwK
QEAgLTU2MjAsNyArNTYyMCw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0LmJyYW5jaChtX291
dC5ub3ROdWxsKGxlbmd0aEFzUHRyKSwgdW5zdXJlKG1haW5Mb29wKSwgdW5zdXJlKGNvbnRpbnVh
dGlvbikpOwogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8obWFpbkxvb3AsIGNvbnRp
bnVhdGlvbik7Ci0gICAgICAgIHByZXZpb3VzSW5kZXggPSBtX291dC5waGkobV9vdXQuaW50UHRy
LCBsb29wQm91bmQpOworICAgICAgICBwcmV2aW91c0luZGV4ID0gbV9vdXQucGhpKHBvaW50ZXJU
eXBlKCksIGxvb3BCb3VuZCk7CiAgICAgICAgIGN1cnJlbnRJbmRleCA9IG1fb3V0LnN1YihwcmV2
aW91c0luZGV4LCBtX291dC5pbnRQdHJPbmUpOwogICAgICAgICBMVmFsdWUgdmFsdWUgPSBtX291
dC5sb2FkNjQoCiAgICAgICAgICAgICBtX291dC5iYXNlSW5kZXgoCkBAIC01NzAyLDcgKzU3MDIs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBt
X291dC5hcHBlbmRUbyhzd2l0Y2hPbkludHMsIGxhc3ROZXh0KTsKLSAgICAgICAgICAgIGJ1aWxk
U3dpdGNoKGRhdGEsIG1fb3V0LmludDMyLCBtX291dC5waGkobV9vdXQuaW50MzIsIGludFZhbHVl
cykpOworICAgICAgICAgICAgYnVpbGRTd2l0Y2goZGF0YSwgSW50MzIsIG1fb3V0LnBoaShJbnQz
MiwgaW50VmFsdWVzKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAg
CkBAIC01NzY4LDExICs1NzY4LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIG1fb3V0LmFwcGVuZFRvKG5lZWRSZXNvbHV0aW9uLCByZXNvbHZlZCk7CiAgICAgICAgICAg
ICB2YWx1ZXMuYXBwZW5kKG1fb3V0LmFuY2hvcigKLSAgICAgICAgICAgICAgICB2bUNhbGwobV9v
dXQuaW50UHRyLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uUmVzb2x2ZVJvcGUpLCBtX2NhbGxG
cmFtZSwgc3RyaW5nVmFsdWUpKSk7CisgICAgICAgICAgICAgICAgdm1DYWxsKHBvaW50ZXJUeXBl
KCksIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25SZXNvbHZlUm9wZSksIG1fY2FsbEZyYW1lLCBz
dHJpbmdWYWx1ZSkpKTsKICAgICAgICAgICAgIG1fb3V0Lmp1bXAocmVzb2x2ZWQpOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhyZXNvbHZlZCwgaXM4Qml0KTsKLSAg
ICAgICAgICAgIExWYWx1ZSB2YWx1ZSA9IG1fb3V0LnBoaShtX291dC5pbnRQdHIsIHZhbHVlcyk7
CisgICAgICAgICAgICBMVmFsdWUgdmFsdWUgPSBtX291dC5waGkocG9pbnRlclR5cGUoKSwgdmFs
dWVzKTsKICAgICAgICAgICAgIExWYWx1ZSBjaGFyYWN0ZXJEYXRhID0gbV9vdXQubG9hZFB0cih2
YWx1ZSwgbV9oZWFwcy5TdHJpbmdJbXBsX2RhdGEpOwogICAgICAgICAgICAgbV9vdXQuYnJhbmNo
KAogICAgICAgICAgICAgICAgIG1fb3V0LnRlc3ROb25aZXJvMzIoCkBAIC01NzkwLDcgKzU3OTAs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3RO
ZXh0KTsKLSAgICAgICAgICAgIGJ1aWxkU3dpdGNoKGRhdGEsIG1fb3V0LmludDMyLCBtX291dC5w
aGkobV9vdXQuaW50MzIsIGNoYXJhY3RlcnMpKTsKKyAgICAgICAgICAgIGJ1aWxkU3dpdGNoKGRh
dGEsIEludDMyLCBtX291dC5waGkoSW50MzIsIGNoYXJhY3RlcnMpKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogICAgICAgICAKQEAgLTU4NzEsNyArNTg3MSw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCi0g
ICAgICAgICAgICBidWlsZFN3aXRjaChtX25vZGUtPnN3aXRjaERhdGEoKSwgbV9vdXQuaW50UHRy
LCBjZWxsKTsKKyAgICAgICAgICAgIGJ1aWxkU3dpdGNoKG1fbm9kZS0+c3dpdGNoRGF0YSgpLCBw
b2ludGVyVHlwZSgpLCBjZWxsKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfSB9CiAg
ICAgICAgIApAQCAtNTk4NCw3ICs1OTg0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgbV9vdXQuanVt
cChjb250aW51YXRpb24pOwogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGlu
dWF0aW9uLCBsYXN0TmV4dCk7Ci0gICAgICAgIHNldEJvb2xlYW4obV9vdXQucGhpKG1fb3V0LmJv
b2xlYW4sIG5vdENlbGxSZXN1bHQsIGNlbGxSZXN1bHQpKTsKKyAgICAgICAgc2V0Qm9vbGVhbiht
X291dC5waGkoSW50MzIsIG5vdENlbGxSZXN1bHQsIGNlbGxSZXN1bHQpKTsKICAgICB9CiAKICAg
ICB2b2lkIGNvbXBpbGVJc0pTQXJyYXkoKQpAQCAtNjAwMyw3ICs2MDAzLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogCiAgICAgICAgIG1fb3V0LmFwcGVu
ZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwotICAgICAgICBzZXRCb29sZWFuKG1fb3V0LnBo
aShtX291dC5ib29sZWFuLCBub3RDZWxsUmVzdWx0LCBjZWxsUmVzdWx0KSk7CisgICAgICAgIHNl
dEJvb2xlYW4obV9vdXQucGhpKEludDMyLCBub3RDZWxsUmVzdWx0LCBjZWxsUmVzdWx0KSk7CiAg
ICAgfQogCiAgICAgdm9pZCBjb21waWxlSXNPYmplY3QoKQpAQCAtNjAyMiw3ICs2MDIyLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogCiAgICAgICAgIG1f
b3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwotICAgICAgICBzZXRCb29sZWFu
KG1fb3V0LnBoaShtX291dC5ib29sZWFuLCBub3RDZWxsUmVzdWx0LCBjZWxsUmVzdWx0KSk7Cisg
ICAgICAgIHNldEJvb2xlYW4obV9vdXQucGhpKEludDMyLCBub3RDZWxsUmVzdWx0LCBjZWxsUmVz
dWx0KSk7CiAgICAgfQogCiAgICAgdm9pZCBjb21waWxlSXNPYmplY3RPck51bGwoKQpAQCAtNjA3
Niw3ICs2MDc2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRv
KGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwogICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQu
cGhpKAotICAgICAgICAgICAgbV9vdXQuYm9vbGVhbiwKKyAgICAgICAgICAgIEludDMyLAogICAg
ICAgICAgICAgaXNGdW5jdGlvblJlc3VsdCwgbm90T2JqZWN0UmVzdWx0LCBvYmplY3RSZXN1bHQs
IHNsb3dSZXN1bHQsIG5vdENlbGxSZXN1bHQpOwogICAgICAgICBzZXRCb29sZWFuKHJlc3VsdCk7
CiAgICAgfQpAQCAtNjEyMSw3ICs2MTIxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAg
IG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwogICAgICAgICBMVmFsdWUg
cmVzdWx0ID0gbV9vdXQucGhpKAotICAgICAgICAgICAgbV9vdXQuYm9vbGVhbiwgbm90Q2VsbFJl
c3VsdCwgZnVuY3Rpb25SZXN1bHQsIG9iamVjdFJlc3VsdCwgc2xvd1Jlc3VsdCk7CisgICAgICAg
ICAgICBJbnQzMiwgbm90Q2VsbFJlc3VsdCwgZnVuY3Rpb25SZXN1bHQsIG9iamVjdFJlc3VsdCwg
c2xvd1Jlc3VsdCk7CiAgICAgICAgIHNldEJvb2xlYW4ocmVzdWx0KTsKICAgICB9CiAKQEAgLTYx
NDEsNyArNjE0MSw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9u
KTsKIAogICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKLSAg
ICAgICAgc2V0Qm9vbGVhbihtX291dC5waGkobV9vdXQuYm9vbGVhbiwgbm90Q2VsbFJlc3VsdCwg
Y2VsbFJlc3VsdCkpOworICAgICAgICBzZXRCb29sZWFuKG1fb3V0LnBoaShJbnQzMiwgbm90Q2Vs
bFJlc3VsdCwgY2VsbFJlc3VsdCkpOwogICAgIH0KIAogICAgIHZvaWQgY29tcGlsZUlzVHlwZWRB
cnJheVZpZXcoKQpAQCAtNjE1OSw3ICs2MTU5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgbV9vdXQu
anVtcChjb250aW51YXRpb24pOwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlv
biwgbGFzdE5leHQpOwotICAgICAgICBzZXRCb29sZWFuKG1fb3V0LnBoaShtX291dC5ib29sZWFu
LCBub3RDZWxsUmVzdWx0LCBjZWxsUmVzdWx0KSk7CisgICAgICAgIHNldEJvb2xlYW4obV9vdXQu
cGhpKEludDMyLCBub3RDZWxsUmVzdWx0LCBjZWxsUmVzdWx0KSk7CiAgICAgfQogCiAgICAgdm9p
ZCBjb21waWxlVHlwZU9mKCkKQEAgLTYxODAsNyArNjE4MCw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICB9KTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwg
bGFzdE5leHQpOwotICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShtX291dC5pbnQ2NCwgcmVz
dWx0cykpOworICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShJbnQ2NCwgcmVzdWx0cykpOwog
ICAgIH0KICAgICAKICAgICB2b2lkIGNvbXBpbGVJbigpCkBAIC02MjYwLDcgKzYyNjAsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgfQogICAgICAgICB9IAogCi0gICAgICAgIHNldEpTVmFsdWUo
dm1DYWxsKG1fb3V0LmludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uR2VuZXJpY0luKSwg
bV9jYWxsRnJhbWUsIGNlbGwsIGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSkpKTsKKyAgICAg
ICAgc2V0SlNWYWx1ZSh2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25HZW5l
cmljSW4pLCBtX2NhbGxGcmFtZSwgY2VsbCwgbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKSkp
OwogICAgIH0KIAogICAgIHZvaWQgY29tcGlsZU92ZXJyaWRlc0hhc0luc3RhbmNlKCkKQEAgLTYy
ODcsNyArNjI4Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9u
KTsKIAogICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKLSAg
ICAgICAgc2V0Qm9vbGVhbihtX291dC5waGkobV9vdXQuYm9vbGVhbiwgaW1wbGVtZW50c0RlZmF1
bHRIYXNJbnN0YW5jZVJlc3VsdCwgbm90RGVmYXVsdEhhc0luc3RhbmNlUmVzdWx0KSk7CisgICAg
ICAgIHNldEJvb2xlYW4obV9vdXQucGhpKEludDMyLCBpbXBsZW1lbnRzRGVmYXVsdEhhc0luc3Rh
bmNlUmVzdWx0LCBub3REZWZhdWx0SGFzSW5zdGFuY2VSZXN1bHQpKTsKICAgICB9CiAKICAgICB2
b2lkIGNvbXBpbGVDaGVja1R5cGVJbmZvRmxhZ3MoKQpAQCAtNjMzNCw3ICs2MzM0LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgbV9vdXQuanVtcChsb29wKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0
LmFwcGVuZFRvKGxvb3AsIGxvYWRQcm90b3R5cGVEaXJlY3QpOwotICAgICAgICBMVmFsdWUgdmFs
dWUgPSBtX291dC5waGkobV9vdXQuaW50NjQsIG9yaWdpbmFsVmFsdWUpOworICAgICAgICBMVmFs
dWUgdmFsdWUgPSBtX291dC5waGkoSW50NjQsIG9yaWdpbmFsVmFsdWUpOwogICAgICAgICBMVmFs
dWUgdHlwZSA9IG1fb3V0LmxvYWQ4WmVyb0V4dDMyKHZhbHVlLCBtX2hlYXBzLkpTQ2VsbF90eXBl
SW5mb1R5cGUpOwogICAgICAgICBtX291dC5icmFuY2goCiAgICAgICAgICAgICBtX291dC5ub3RF
cXVhbCh0eXBlLCBtX291dC5jb25zdEludDMyKFByb3h5T2JqZWN0VHlwZSkpLApAQCAtNjM1OCwx
MiArNjM1OCwxMiBAQCBwcml2YXRlOgogICAgICAgICAvLyBjYW4ganVzdCBjb250aW51ZSBvZmYg
ZnJvbSB3aGVyZXZlciB3ZSBiYWlsZWQgZnJvbSB0aGUKICAgICAgICAgLy8gbG9vcC4KICAgICAg
ICAgVmFsdWVGcm9tQmxvY2sgZGVmYXVsdEhhc0luc3RhbmNlUmVzdWx0ID0gbV9vdXQuYW5jaG9y
KAotICAgICAgICAgICAgdm1DYWxsKG1fb3V0LmJvb2xlYW4sIG1fb3V0Lm9wZXJhdGlvbihvcGVy
YXRpb25EZWZhdWx0SGFzSW5zdGFuY2UpLCBtX2NhbGxGcmFtZSwgdmFsdWUsIHByb3RvdHlwZSkp
OworICAgICAgICAgICAgdm1DYWxsKEludDMyLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uRGVm
YXVsdEhhc0luc3RhbmNlKSwgbV9jYWxsRnJhbWUsIHZhbHVlLCBwcm90b3R5cGUpKTsKICAgICAg
ICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBw
ZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CiAgICAgICAgIHNldEJvb2xlYW4oCi0gICAg
ICAgICAgICBtX291dC5waGkobV9vdXQuYm9vbGVhbiwgbm90Q2VsbFJlc3VsdCwgaXNJbnN0YW5j
ZVJlc3VsdCwgbm90SW5zdGFuY2VSZXN1bHQsIGRlZmF1bHRIYXNJbnN0YW5jZVJlc3VsdCkpOwor
ICAgICAgICAgICAgbV9vdXQucGhpKEludDMyLCBub3RDZWxsUmVzdWx0LCBpc0luc3RhbmNlUmVz
dWx0LCBub3RJbnN0YW5jZVJlc3VsdCwgZGVmYXVsdEhhc0luc3RhbmNlUmVzdWx0KSk7CiAgICAg
fQogCiAgICAgdm9pZCBjb21waWxlSW5zdGFuY2VPZkN1c3RvbSgpCkBAIC02MzcyLDcgKzYzNzIs
NyBAQCBwcml2YXRlOgogICAgICAgICBMVmFsdWUgY29uc3RydWN0b3IgPSBsb3dDZWxsKG1fbm9k
ZS0+Y2hpbGQyKCkpOwogICAgICAgICBMVmFsdWUgaGFzSW5zdGFuY2UgPSBsb3dKU1ZhbHVlKG1f
bm9kZS0+Y2hpbGQzKCkpOwogCi0gICAgICAgIHNldEJvb2xlYW4obV9vdXQubG9naWNhbE5vdCht
X291dC5lcXVhbChtX291dC5jb25zdEludDMyKDApLCB2bUNhbGwobV9vdXQuaW50MzIsIG1fb3V0
Lm9wZXJhdGlvbihvcGVyYXRpb25JbnN0YW5jZU9mQ3VzdG9tKSwgbV9jYWxsRnJhbWUsIHZhbHVl
LCBjb25zdHJ1Y3RvciwgaGFzSW5zdGFuY2UpKSkpOworICAgICAgICBzZXRCb29sZWFuKG1fb3V0
LmxvZ2ljYWxOb3QobV9vdXQuZXF1YWwobV9vdXQuY29uc3RJbnQzMigwKSwgdm1DYWxsKEludDMy
LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uSW5zdGFuY2VPZkN1c3RvbSksIG1fY2FsbEZyYW1l
LCB2YWx1ZSwgY29uc3RydWN0b3IsIGhhc0luc3RhbmNlKSkpKTsKICAgICB9CiAgICAgCiAgICAg
dm9pZCBjb21waWxlQ291bnRFeGVjdXRpb24oKQpAQCAtNjQxOSwxMSArNjQxOSwxMSBAQCBwcml2
YXRlOgogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7
CiAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKG1f
b3V0LmVxdWFsKAogICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5j
b2RlKGpzQm9vbGVhbih0cnVlKSkpLCAKLSAgICAgICAgICAgICAgICB2bUNhbGwobV9vdXQuaW50
NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHkpLCBtX2NhbGxG
cmFtZSwgYmFzZSwgaW5kZXgpKSk7CisgICAgICAgICAgICAgICAgdm1DYWxsKEludDY0LCBtX291
dC5vcGVyYXRpb24ob3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5KSwgbV9jYWxsRnJhbWUsIGJh
c2UsIGluZGV4KSkpOwogICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogCiAg
ICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKLSAgICAg
ICAgICAgIHNldEJvb2xlYW4obV9vdXQucGhpKG1fb3V0LmJvb2xlYW4sIGNoZWNrSG9sZVJlc3Vs
dCwgc2xvd1Jlc3VsdCkpOworICAgICAgICAgICAgc2V0Qm9vbGVhbihtX291dC5waGkoSW50MzIs
IGNoZWNrSG9sZVJlc3VsdCwgc2xvd1Jlc3VsdCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgQXJyYXk6OkRvdWJsZTogewpAQCAtNjQ1NCwxMSArNjQ1NCwx
MSBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRp
bnVhdGlvbik7CiAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQu
YW5jaG9yKG1fb3V0LmVxdWFsKAogICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50NjQoSlNW
YWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSkpLCAKLSAgICAgICAgICAgICAgICB2bUNhbGwo
bV9vdXQuaW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHkp
LCBtX2NhbGxGcmFtZSwgYmFzZSwgaW5kZXgpKSk7CisgICAgICAgICAgICAgICAgdm1DYWxsKElu
dDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5KSwgbV9jYWxs
RnJhbWUsIGJhc2UsIGluZGV4KSkpOwogICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRp
b24pOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRp
b24sIGxhc3ROZXh0KTsKLSAgICAgICAgICAgIHNldEJvb2xlYW4obV9vdXQucGhpKG1fb3V0LmJv
b2xlYW4sIGNoZWNrSG9sZVJlc3VsdCwgc2xvd1Jlc3VsdCkpOworICAgICAgICAgICAgc2V0Qm9v
bGVhbihtX291dC5waGkoSW50MzIsIGNoZWNrSG9sZVJlc3VsdCwgc2xvd1Jlc3VsdCkpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTY0NzIsNyArNjQ3
Miw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0pTVmFsdWUo
bV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIExWYWx1ZSBwcm9wZXJ0eSA9IGxvd0NlbGwobV9u
b2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgIHNldEpTVmFsdWUodm1DYWxsKG1fb3V0LmludDY0LCBt
X291dC5vcGVyYXRpb24ob3BlcmF0aW9uSGFzR2VuZXJpY1Byb3BlcnR5KSwgbV9jYWxsRnJhbWUs
IGJhc2UsIHByb3BlcnR5KSk7CisgICAgICAgIHNldEpTVmFsdWUodm1DYWxsKEludDY0LCBtX291
dC5vcGVyYXRpb24ob3BlcmF0aW9uSGFzR2VuZXJpY1Byb3BlcnR5KSwgbV9jYWxsRnJhbWUsIGJh
c2UsIHByb3BlcnR5KSk7CiAgICAgfQogCiAgICAgdm9pZCBjb21waWxlSGFzU3RydWN0dXJlUHJv
cGVydHkoKQpAQCAtNjQ5OCwxMSArNjQ5OCwxMSBAQCBwcml2YXRlOgogICAgICAgICBWYWx1ZUZy
b21CbG9jayB3cm9uZ1N0cnVjdHVyZVJlc3VsdCA9IG1fb3V0LmFuY2hvcigKICAgICAgICAgICAg
IG1fb3V0LmVxdWFsKAogICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6
ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSkpLCAKLSAgICAgICAgICAgICAgICB2bUNhbGwobV9vdXQu
aW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25IYXNHZW5lcmljUHJvcGVydHkpLCBtX2Nh
bGxGcmFtZSwgYmFzZSwgcHJvcGVydHkpKSk7CisgICAgICAgICAgICAgICAgdm1DYWxsKEludDY0
LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uSGFzR2VuZXJpY1Byb3BlcnR5KSwgbV9jYWxsRnJh
bWUsIGJhc2UsIHByb3BlcnR5KSkpOwogICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7
CiAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7Ci0gICAg
ICAgIHNldEJvb2xlYW4obV9vdXQucGhpKG1fb3V0LmJvb2xlYW4sIGNvcnJlY3RTdHJ1Y3R1cmVS
ZXN1bHQsIHdyb25nU3RydWN0dXJlUmVzdWx0KSk7CisgICAgICAgIHNldEJvb2xlYW4obV9vdXQu
cGhpKEludDMyLCBjb3JyZWN0U3RydWN0dXJlUmVzdWx0LCB3cm9uZ1N0cnVjdHVyZVJlc3VsdCkp
OwogICAgIH0KIAogICAgIHZvaWQgY29tcGlsZUdldERpcmVjdFBuYW1lKCkKQEAgLTY1MzAsNyAr
NjUzMCw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGlubGluZUxvYWQsIG91
dE9mTGluZUxvYWQpOwogICAgICAgICBWYWx1ZUZyb21CbG9jayBpbmxpbmVSZXN1bHQgPSBtX291
dC5hbmNob3IoCiAgICAgICAgICAgICBtX291dC5sb2FkNjQobV9vdXQuYmFzZUluZGV4KG1faGVh
cHMucHJvcGVydGllcy5hdEFueU51bWJlcigpLCAKLSAgICAgICAgICAgICAgICBiYXNlLCBtX291
dC56ZXJvRXh0KGluZGV4LCBtX291dC5pbnQ2NCksIFNjYWxlRWlnaHQsIEpTT2JqZWN0OjpvZmZz
ZXRPZklubGluZVN0b3JhZ2UoKSkpKTsKKyAgICAgICAgICAgICAgICBiYXNlLCBtX291dC56ZXJv
RXh0KGluZGV4LCBJbnQ2NCksIFNjYWxlRWlnaHQsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0
b3JhZ2UoKSkpKTsKICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogCiAgICAgICAg
IG1fb3V0LmFwcGVuZFRvKG91dE9mTGluZUxvYWQsIHNsb3dDYXNlKTsKQEAgLTY1NDQsMTEgKzY1
NDQsMTEgQEAgcHJpdmF0ZToKIAogICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93Q2FzZSwgY29u
dGludWF0aW9uKTsKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd0Nhc2VSZXN1bHQgPSBtX291
dC5hbmNob3IoCi0gICAgICAgICAgICB2bUNhbGwobV9vdXQuaW50NjQsIG1fb3V0Lm9wZXJhdGlv
bihvcGVyYXRpb25HZXRCeVZhbCksIG1fY2FsbEZyYW1lLCBiYXNlLCBwcm9wZXJ0eSkpOworICAg
ICAgICAgICAgdm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlWYWwp
LCBtX2NhbGxGcmFtZSwgYmFzZSwgcHJvcGVydHkpKTsKICAgICAgICAgbV9vdXQuanVtcChjb250
aW51YXRpb24pOwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5l
eHQpOwotICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShtX291dC5pbnQ2NCwgaW5saW5lUmVz
dWx0LCBvdXRPZkxpbmVSZXN1bHQsIHNsb3dDYXNlUmVzdWx0KSk7CisgICAgICAgIHNldEpTVmFs
dWUobV9vdXQucGhpKEludDY0LCBpbmxpbmVSZXN1bHQsIG91dE9mTGluZVJlc3VsdCwgc2xvd0Nh
c2VSZXN1bHQpKTsKICAgICB9CiAKICAgICB2b2lkIGNvbXBpbGVHZXRFbnVtZXJhYmxlTGVuZ3Ro
KCkKQEAgLTY1NjAsNyArNjU2MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21waWxlR2V0UHJv
cGVydHlFbnVtZXJhdG9yKCkKICAgICB7CiAgICAgICAgIExWYWx1ZSBiYXNlID0gbG93Q2VsbCht
X25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwobV9vdXQuaW50NjQs
IG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25HZXRQcm9wZXJ0eUVudW1lcmF0b3IpLCBtX2NhbGxG
cmFtZSwgYmFzZSkpOworICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChJbnQ2NCwgbV9vdXQub3Bl
cmF0aW9uKG9wZXJhdGlvbkdldFByb3BlcnR5RW51bWVyYXRvciksIG1fY2FsbEZyYW1lLCBiYXNl
KSk7CiAgICAgfQogCiAgICAgdm9pZCBjb21waWxlR2V0RW51bWVyYXRvclN0cnVjdHVyZVBuYW1l
KCkKQEAgLTY1ODYsNyArNjU4Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0Lmp1bXAoY29u
dGludWF0aW9uKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlv
biwgbGFzdE5leHQpOwotICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShtX291dC5pbnQ2NCwg
aW5Cb3VuZHNSZXN1bHQsIG91dE9mQm91bmRzUmVzdWx0KSk7CisgICAgICAgIHNldEpTVmFsdWUo
bV9vdXQucGhpKEludDY0LCBpbkJvdW5kc1Jlc3VsdCwgb3V0T2ZCb3VuZHNSZXN1bHQpKTsKICAg
ICB9CiAKICAgICB2b2lkIGNvbXBpbGVHZXRFbnVtZXJhdG9yR2VuZXJpY1BuYW1lKCkKQEAgLTY2
MTIsMTMgKzY2MTIsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRp
b24pOwogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0
TmV4dCk7Ci0gICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKG1fb3V0LmludDY0LCBpbkJvdW5k
c1Jlc3VsdCwgb3V0T2ZCb3VuZHNSZXN1bHQpKTsKKyAgICAgICAgc2V0SlNWYWx1ZShtX291dC5w
aGkoSW50NjQsIGluQm91bmRzUmVzdWx0LCBvdXRPZkJvdW5kc1Jlc3VsdCkpOwogICAgIH0KICAg
ICAKICAgICB2b2lkIGNvbXBpbGVUb0luZGV4U3RyaW5nKCkKICAgICB7CiAgICAgICAgIExWYWx1
ZSBpbmRleCA9IGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBzZXRKU1ZhbHVl
KHZtQ2FsbChtX291dC5pbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvblRvSW5kZXhTdHJp
bmcpLCBtX2NhbGxGcmFtZSwgaW5kZXgpKTsKKyAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoSW50
NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25Ub0luZGV4U3RyaW5nKSwgbV9jYWxsRnJhbWUs
IGluZGV4KSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgY29tcGlsZUNoZWNrU3RydWN0dXJlSW1t
ZWRpYXRlKCkKQEAgLTY3NTgsOCArNjc1OCw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7
CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgb2JqZWN0ID0gbV9vdXQucGhpKG1f
b3V0LmludFB0ciwgZmFzdE9iamVjdCwgc2xvd09iamVjdCk7Ci0gICAgICAgICAgICAgICAgYnV0
dGVyZmx5ID0gbV9vdXQucGhpKG1fb3V0LmludFB0ciwgZmFzdEJ1dHRlcmZseSwgc2xvd0J1dHRl
cmZseSk7CisgICAgICAgICAgICAgICAgb2JqZWN0ID0gbV9vdXQucGhpKHBvaW50ZXJUeXBlKCks
IGZhc3RPYmplY3QsIHNsb3dPYmplY3QpOworICAgICAgICAgICAgICAgIGJ1dHRlcmZseSA9IG1f
b3V0LnBoaShwb2ludGVyVHlwZSgpLCBmYXN0QnV0dGVyZmx5LCBzbG93QnV0dGVyZmx5KTsKIAog
ICAgICAgICAgICAgICAgIG1fb3V0LnN0b3JlMzIocHVibGljTGVuZ3RoLCBidXR0ZXJmbHksIG1f
aGVhcHMuQnV0dGVyZmx5X3B1YmxpY0xlbmd0aCk7CiAKQEAgLTY4OTQsNyArNjg5NCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIG1fb3V0LnVucmVhY2hhYmxlKCk7CiAgICAgICAgIAogICAgICAgICBt
X291dC5hcHBlbmRUbyhvdXRlckNvbnRpbnVhdGlvbiwgb3V0ZXJMYXN0TmV4dCk7Ci0gICAgICAg
IHNldEpTVmFsdWUobV9vdXQucGhpKG1fb3V0LmludFB0ciwgcmVzdWx0cykpOworICAgICAgICBz
ZXRKU1ZhbHVlKG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCByZXN1bHRzKSk7CiAgICAgfQogCiAg
ICAgdm9pZCBjb21waWxlTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uKCkKQEAgLTY5NDMsNyAr
Njk0Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKIAog
ICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKLSAgICAgICAg
TFZhbHVlIGFjdGl2YXRpb24gPSBtX291dC5waGkobV9vdXQuaW50UHRyLCBmYXN0UmVzdWx0LCBz
bG93UmVzdWx0KTsKKyAgICAgICAgTFZhbHVlIGFjdGl2YXRpb24gPSBtX291dC5waGkocG9pbnRl
clR5cGUoKSwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGRhdGEubV9wcm9wZXJ0aWVzLnNpemUoKSA9PSB0YWJsZS0+c2NvcGVTaXplKCkpOwogICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGF0YS5tX3Byb3BlcnRpZXMuc2l6ZSgpOyArK2kp
IHsKICAgICAgICAgICAgIFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSBk
YXRhLm1fcHJvcGVydGllc1tpXTsKQEAgLTcwNzMsNyArNzA3Myw3IEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIGNvbXBpbGVTZXRGdW5jdGlvbk5hbWUoKQogICAgIHsKLSAgICAgICAgdm1DYWxsKG1f
b3V0LnZvaWRUeXBlLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uU2V0RnVuY3Rpb25OYW1lKSwg
bV9jYWxsRnJhbWUsCisgICAgICAgIHZtQ2FsbChWb2lkLCBtX291dC5vcGVyYXRpb24ob3BlcmF0
aW9uU2V0RnVuY3Rpb25OYW1lKSwgbV9jYWxsRnJhbWUsCiAgICAgICAgICAgICBsb3dDZWxsKG1f
bm9kZS0+Y2hpbGQxKCkpLCBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpKTsKICAgICB9CiAg
ICAgCkBAIC03MzMyLDcgKzczMzIsNyBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKLSAgICAgICAg
cmV0dXJuIG1fb3V0LnBoaShtX291dC5pbnQzMiwgcmVzdWx0cyk7CisgICAgICAgIHJldHVybiBt
X291dC5waGkoSW50MzIsIHJlc3VsdHMpOwogICAgIH0KIAogICAgIHZvaWQgY2hlY2tJbmZlcnJl
ZFR5cGUoRWRnZSBlZGdlLCBMVmFsdWUgdmFsdWUsIGNvbnN0IEluZmVycmVkVHlwZTo6RGVzY3Jp
cHRvciYgdHlwZSkKQEAgLTc1MjgsOCArNzUyOCw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBt
X291dC5ub3RaZXJvMzIodmVjdG9yTGVuZ3RoKSwgdW5zdXJlKGluaXRMb29wKSwgdW5zdXJlKGlu
aXREb25lKSk7CiAgICAgICAgIAogICAgICAgICBMQmFzaWNCbG9jayBpbml0TGFzdE5leHQgPSBt
X291dC5hcHBlbmRUbyhpbml0TG9vcCwgaW5pdERvbmUpOwotICAgICAgICBMVmFsdWUgaW5kZXgg
PSBtX291dC5waGkobV9vdXQuaW50MzIsIG9yaWdpbmFsSW5kZXgpOwotICAgICAgICBMVmFsdWUg
cG9pbnRlciA9IG1fb3V0LnBoaShtX291dC5pbnRQdHIsIG9yaWdpbmFsUG9pbnRlcik7CisgICAg
ICAgIExWYWx1ZSBpbmRleCA9IG1fb3V0LnBoaShJbnQzMiwgb3JpZ2luYWxJbmRleCk7CisgICAg
ICAgIExWYWx1ZSBwb2ludGVyID0gbV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIG9yaWdpbmFsUG9p
bnRlcik7CiAgICAgICAgIAogICAgICAgICBtX291dC5zdG9yZTY0KAogICAgICAgICAgICAgbV9v
dXQuY29uc3RJbnQ2NChiaXR3aXNlX2Nhc3Q8aW50NjRfdD4oUE5hTikpLApAQCAtNzU0OCw3ICs3
NTQ4LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIGlmIChwcmV2aW91c1N0cnVjdHVyZS0+
Y291bGRIYXZlSW5kZXhpbmdIZWFkZXIoKSkgewogICAgICAgICAgICAgcmV0dXJuIHZtQ2FsbCgK
LSAgICAgICAgICAgICAgICBtX291dC5pbnRQdHIsCisgICAgICAgICAgICAgICAgcG9pbnRlclR5
cGUoKSwKICAgICAgICAgICAgICAgICBtX291dC5vcGVyYXRpb24oCiAgICAgICAgICAgICAgICAg
ICAgIG9wZXJhdGlvblJlYWxsb2NhdGVCdXR0ZXJmbHlUb0hhdmVQcm9wZXJ0eVN0b3JhZ2VXaXRo
SW5pdGlhbENhcGFjaXR5KSwKICAgICAgICAgICAgICAgICBtX2NhbGxGcmFtZSwgb2JqZWN0KTsK
QEAgLTc1NjksNyArNzU2OSw3IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBpZiAocHJl
dmlvdXMtPmNvdWxkSGF2ZUluZGV4aW5nSGVhZGVyKCkpIHsKICAgICAgICAgICAgIExWYWx1ZSBu
ZXdBbGxvY1NpemUgPSBtX291dC5jb25zdEludFB0cihuZXdTaXplKTsgICAgICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgcmV0dXJuIHZtQ2FsbChtX291dC5pbnRQdHIsIG1fb3V0Lm9wZXJh
dGlvbihvcGVyYXRpb25SZWFsbG9jYXRlQnV0dGVyZmx5VG9Hcm93UHJvcGVydHlTdG9yYWdlKSwg
bV9jYWxsRnJhbWUsIG9iamVjdCwgbmV3QWxsb2NTaXplKTsKKyAgICAgICAgICAgIHJldHVybiB2
bUNhbGwocG9pbnRlclR5cGUoKSwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvblJlYWxsb2NhdGVC
dXR0ZXJmbHlUb0dyb3dQcm9wZXJ0eVN0b3JhZ2UpLCBtX2NhbGxGcmFtZSwgb2JqZWN0LCBuZXdB
bGxvY1NpemUpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBMVmFsdWUgcmVzdWx0ID0g
YWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2VXaXRoU2l6ZUltcGwobmV3U2l6ZSk7CkBAIC03NjI3LDcg
Kzc2MjcsNyBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29u
dGludWF0aW9uLCBsYXN0TmV4dCk7CiAgICAgICAgIAotICAgICAgICByZXR1cm4gbV9vdXQucGhp
KG1fb3V0LmludFB0ciwgZmFzdEJ1dHRlcmZseSwgc2xvd0J1dHRlcmZseSk7CisgICAgICAgIHJl
dHVybiBtX291dC5waGkocG9pbnRlclR5cGUoKSwgZmFzdEJ1dHRlcmZseSwgc2xvd0J1dHRlcmZs
eSk7CiAgICAgfQogICAgIAogICAgIExWYWx1ZSBnZXRCeUlkKExWYWx1ZSBiYXNlLCBBY2Nlc3NU
eXBlIHR5cGUpCkBAIC03NzUxLDcgKzc3NTEsNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAobV9u
b2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nSWRlbnRVc2UpKSB7CiAgICAgICAgICAgICBMVmFs
dWUgbGVmdCA9IGxvd1N0cmluZ0lkZW50KG1fbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAg
TFZhbHVlIHJpZ2h0ID0gbG93U3RyaW5nSWRlbnQobV9ub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAg
ICAgICBzZXRCb29sZWFuKG1fb3V0LmNhbGxXaXRob3V0U2lkZUVmZmVjdHMobV9vdXQuYm9vbGVh
biwgc3RyaW5nSWRlbnRGdW5jdGlvbiwgbGVmdCwgcmlnaHQpKTsKKyAgICAgICAgICAgIHNldEJv
b2xlYW4obV9vdXQuY2FsbFdpdGhvdXRTaWRlRWZmZWN0cyhJbnQzMiwgc3RyaW5nSWRlbnRGdW5j
dGlvbiwgbGVmdCwgcmlnaHQpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBA
IC03NzYyLDcgKzc3NjIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgc3BlY3VsYXRlU3RyaW5n
KG1fbm9kZS0+Y2hpbGQyKCksIHJpZ2h0KTsKIAogICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9
IHZtQ2FsbCgKLSAgICAgICAgICAgICAgICBtX291dC5ib29sZWFuLCBtX291dC5vcGVyYXRpb24o
c3RyaW5nRnVuY3Rpb24pLAorICAgICAgICAgICAgICAgIEludDMyLCBtX291dC5vcGVyYXRpb24o
c3RyaW5nRnVuY3Rpb24pLAogICAgICAgICAgICAgICAgIG1fY2FsbEZyYW1lLCBsZWZ0LCByaWdo
dCk7CiAgICAgICAgICAgICBzZXRCb29sZWFuKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm47
CkBAIC03Nzc5LDE0ICs3Nzc5LDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21waWxlUmVzb2x2
ZVNjb3BlKCkKICAgICB7CiAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQgPSBtX2dyYXBo
LmlkZW50aWZpZXJzKClbbV9ub2RlLT5pZGVudGlmaWVyTnVtYmVyKCldOwotICAgICAgICBzZXRK
U1ZhbHVlKHZtQ2FsbChtX291dC5pbnRQdHIsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25SZXNv
bHZlU2NvcGUpLAorICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChwb2ludGVyVHlwZSgpLCBtX291
dC5vcGVyYXRpb24ob3BlcmF0aW9uUmVzb2x2ZVNjb3BlKSwKICAgICAgICAgICAgIG1fY2FsbEZy
YW1lLCBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX291dC5jb25zdEludFB0cih1aWQpKSk7
CiAgICAgfQogCiAgICAgdm9pZCBjb21waWxlR2V0RHluYW1pY1ZhcigpCiAgICAgewogICAgICAg
ICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gbV9ncmFwaC5pZGVudGlmaWVycygpW21fbm9kZS0+
aWRlbnRpZmllck51bWJlcigpXTsKLSAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwobV9vdXQuaW50
NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25HZXREeW5hbWljVmFyKSwKKyAgICAgICAgc2V0
SlNWYWx1ZSh2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25HZXREeW5hbWlj
VmFyKSwKICAgICAgICAgICAgIG1fY2FsbEZyYW1lLCBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkp
LCBtX291dC5jb25zdEludFB0cih1aWQpLCBtX291dC5jb25zdEludDMyKG1fbm9kZS0+Z2V0UHV0
SW5mbygpKSkpOwogICAgIH0KIApAQCAtNzgzNiw3ICs3ODM2LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBw
ZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7Ci0gICAgICAgIHNldEJvb2xlYW4obV9vdXQu
cGhpKG1fb3V0LmJvb2xlYW4sIGNlbGxSZXN1bHQsIG5vdENlbGxSZXN1bHQpKTsKKyAgICAgICAg
c2V0Qm9vbGVhbihtX291dC5waGkoSW50MzIsIGNlbGxSZXN1bHQsIG5vdENlbGxSZXN1bHQpKTsK
ICAgICB9CiAgICAgCiAgICAgdm9pZCBzcGVjdWxhdGVUcnV0aHlPYmplY3QoRWRnZSBlZGdlLCBM
VmFsdWUgY2VsbCwgU3BlY3VsYXRlZFR5cGUgZmlsdGVyKQpAQCAtNzg3NiwxMSArNzg3NiwxMSBA
QCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd1BhdGgsIGNv
bnRpbnVhdGlvbik7CiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5h
bmNob3IobV9vdXQubm90TnVsbCh2bUNhbGwoCi0gICAgICAgICAgICBtX291dC5pbnRQdHIsIG1f
b3V0Lm9wZXJhdGlvbihoZWxwZXJGdW5jdGlvbiksIG1fY2FsbEZyYW1lLCBsZWZ0LCByaWdodCkp
KTsKKyAgICAgICAgICAgIHBvaW50ZXJUeXBlKCksIG1fb3V0Lm9wZXJhdGlvbihoZWxwZXJGdW5j
dGlvbiksIG1fY2FsbEZyYW1lLCBsZWZ0LCByaWdodCkpKTsKICAgICAgICAgbV9vdXQuanVtcChj
b250aW51YXRpb24pOwogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0
aW9uLCBsYXN0TmV4dCk7Ci0gICAgICAgIHNldEJvb2xlYW4obV9vdXQucGhpKG1fb3V0LmJvb2xl
YW4sIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpKTsKKyAgICAgICAgc2V0Qm9vbGVhbihtX291dC5w
aGkoSW50MzIsIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpKTsKICAgICB9CiAKICAgICBMVmFsdWUg
c3RyaW5nc0VxdWFsKExWYWx1ZSBsZWZ0SlNTdHJpbmcsIExWYWx1ZSByaWdodEpTU3RyaW5nKQpA
QCAtNzk0Niw3ICs3OTQ2LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBtX291dC5hcHBlbmRUbyhs
b29wLCBieXRlc0VxdWFsKTsKIAotICAgICAgICBMVmFsdWUgaW5kZXhBdExvb3BUb3AgPSBtX291
dC5waGkobV9vdXQuaW50MzIsIGluZGV4QXRTdGFydCk7CisgICAgICAgIExWYWx1ZSBpbmRleEF0
TG9vcFRvcCA9IG1fb3V0LnBoaShJbnQzMiwgaW5kZXhBdFN0YXJ0KTsKICAgICAgICAgTFZhbHVl
IGluZGV4SW5Mb29wID0gbV9vdXQuc3ViKGluZGV4QXRMb29wVG9wLCBtX291dC5pbnQzMk9uZSk7
CiAKICAgICAgICAgTFZhbHVlIGxlZnRCeXRlID0gbV9vdXQubG9hZDhaZXJvRXh0MzIoCkBAIC03
OTc1LDEzICs3OTc1LDEzIEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dD
YXNlLCBjb250aW51YXRpb24pOwogCiAgICAgICAgIExWYWx1ZSBzbG93UmVzdWx0VmFsdWUgPSB2
bUNhbGwoCi0gICAgICAgICAgICBtX291dC5pbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlv
bkNvbXBhcmVTdHJpbmdFcSksIG1fY2FsbEZyYW1lLAorICAgICAgICAgICAgSW50NjQsIG1fb3V0
Lm9wZXJhdGlvbihvcGVyYXRpb25Db21wYXJlU3RyaW5nRXEpLCBtX2NhbGxGcmFtZSwKICAgICAg
ICAgICAgIGxlZnRKU1N0cmluZywgcmlnaHRKU1N0cmluZyk7CiAgICAgICAgIFZhbHVlRnJvbUJs
b2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3IodW5ib3hCb29sZWFuKHNsb3dSZXN1bHRWYWx1
ZSkpOwogICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAKICAgICAgICAgbV9vdXQu
YXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7Ci0gICAgICAgIHJldHVybiBtX291dC5w
aGkobV9vdXQuYm9vbGVhbiwgdHJ1ZVJlc3VsdCwgZmFsc2VSZXN1bHQsIHNsb3dSZXN1bHQpOwor
ICAgICAgICByZXR1cm4gbV9vdXQucGhpKEludDMyLCB0cnVlUmVzdWx0LCBmYWxzZVJlc3VsdCwg
c2xvd1Jlc3VsdCk7CiAgICAgfQogCiAgICAgZW51bSBTY3JhdGNoRlBSVXNhZ2UgewpAQCAtODI2
Nyw3ICs4MjY3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24p
OwogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4
dCk7Ci0gICAgICAgIExWYWx1ZSBhbGxvY2F0b3IgPSBtX291dC5waGkobV9vdXQuaW50UHRyLCBz
bWFsbEFsbG9jYXRvciwgbGFyZ2VBbGxvY2F0b3IpOworICAgICAgICBMVmFsdWUgYWxsb2NhdG9y
ID0gbV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIHNtYWxsQWxsb2NhdG9yLCBsYXJnZUFsbG9jYXRv
cik7CiAgICAgICAgIAogICAgICAgICByZXR1cm4gYWxsb2NhdGVPYmplY3QoYWxsb2NhdG9yLCBz
dHJ1Y3R1cmUsIGJ1dHRlcmZseSwgc2xvd1BhdGgpOwogICAgIH0KQEAgLTgzMjUsNyArODMyNSw3
IEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAg
CiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwotICAgICAg
ICByZXR1cm4gbV9vdXQucGhpKG1fb3V0LmludFB0ciwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCk7
CisgICAgICAgIHJldHVybiBtX291dC5waGkocG9pbnRlclR5cGUoKSwgZmFzdFJlc3VsdCwgc2xv
d1Jlc3VsdCk7CiAgICAgfQogICAgIAogICAgIHN0cnVjdCBBcnJheVZhbHVlcyB7CkBAIC04NDA5
LDggKzg0MDksOCBAQCBwcml2YXRlOgogICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRp
b24sIGxhc3ROZXh0KTsKICAgICAgICAgCiAgICAgICAgIHJldHVybiBBcnJheVZhbHVlcygKLSAg
ICAgICAgICAgIG1fb3V0LnBoaShtX291dC5pbnRQdHIsIGZhc3RBcnJheSwgc2xvd0FycmF5KSwK
LSAgICAgICAgICAgIG1fb3V0LnBoaShtX291dC5pbnRQdHIsIGZhc3RCdXR0ZXJmbHksIHNsb3dC
dXR0ZXJmbHkpKTsKKyAgICAgICAgICAgIG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBmYXN0QXJy
YXksIHNsb3dBcnJheSksCisgICAgICAgICAgICBtX291dC5waGkocG9pbnRlclR5cGUoKSwgZmFz
dEJ1dHRlcmZseSwgc2xvd0J1dHRlcmZseSkpOwogICAgIH0KICAgICAKICAgICBMVmFsdWUgZW5z
dXJlU2hhZG93Q2hpY2tlblBhY2tldCgpCkBAIC04NTg0LDcgKzg1ODQsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKLSAgICAgICAg
ICAgIHJldHVybiBtX291dC5waGkobV9vdXQuYm9vbGVhbiwgcmVzdWx0cyk7CisgICAgICAgICAg
ICByZXR1cm4gbV9vdXQucGhpKEludDMyLCByZXN1bHRzKTsKICAgICAgICAgfQogICAgICAgICBk
ZWZhdWx0OgogICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG1fbm9kZSwgIkJhZCB1c2Ug
a2luZCIpOwpAQCAtODY3OSw3ICs4Njc5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAg
IG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwogICAgICAgICAKLSAgICAg
ICAgcmV0dXJuIG1fb3V0LnBoaShtX291dC5ib29sZWFuLCByZXN1bHRzKTsKKyAgICAgICAgcmV0
dXJuIG1fb3V0LnBoaShJbnQzMiwgcmVzdWx0cyk7CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEZ1bmN0aW9uVHlwZT4KQEAgLTg3MTUsNyArODcxNSw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgaW5uZXJMYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRv
KG91dE9mQm91bmRzQ2FzZSwgaG9sZUNhc2UpOwogICAgICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICB2bUNhbGwoCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LnZvaWRUeXBlLCBt
X291dC5vcGVyYXRpb24oc2xvd1BhdGhGdW5jdGlvbiksCisgICAgICAgICAgICAgICAgICAgIFZv
aWQsIG1fb3V0Lm9wZXJhdGlvbihzbG93UGF0aEZ1bmN0aW9uKSwKICAgICAgICAgICAgICAgICAg
ICAgbV9jYWxsRnJhbWUsIGJhc2UsIGluZGV4LCB2YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKQEAgLTg3MzQsMTYg
Kzg3MzQsMTYgQEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGJ1aWxkU3dpdGNoKFN3aXRjaERh
dGEqIGRhdGEsIExUeXBlIHR5cGUsIExWYWx1ZSBzd2l0Y2hWYWx1ZSkKICAgICB7Ci0gICAgICAg
IEFTU0VSVCh0eXBlID09IG1fb3V0LmludFB0ciB8fCB0eXBlID09IG1fb3V0LmludDMyKTsKKyAg
ICAgICAgQVNTRVJUKHR5cGUgPT0gcG9pbnRlclR5cGUoKSB8fCB0eXBlID09IEludDMyKTsKIAog
ICAgICAgICBWZWN0b3I8U3dpdGNoQ2FzZT4gY2FzZXM7CiAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBkYXRhLT5jYXNlcy5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgU3dpdGNo
Q2FzZSBuZXdDYXNlOwogCi0gICAgICAgICAgICBpZiAodHlwZSA9PSBtX291dC5pbnRQdHIpIHsK
KyAgICAgICAgICAgIGlmICh0eXBlID09IHBvaW50ZXJUeXBlKCkpIHsKICAgICAgICAgICAgICAg
ICBuZXdDYXNlID0gU3dpdGNoQ2FzZShtX291dC5jb25zdEludFB0cihkYXRhLT5jYXNlc1tpXS52
YWx1ZS5zd2l0Y2hMb29rdXBWYWx1ZShkYXRhLT5raW5kKSksCiAgICAgICAgICAgICAgICAgICAg
IGxvd0Jsb2NrKGRhdGEtPmNhc2VzW2ldLnRhcmdldC5ibG9jayksIFdlaWdodChkYXRhLT5jYXNl
c1tpXS50YXJnZXQuY291bnQpKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBtX291
dC5pbnQzMikgeworICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09IEludDMyKSB7CiAgICAg
ICAgICAgICAgICAgbmV3Q2FzZSA9IFN3aXRjaENhc2UobV9vdXQuY29uc3RJbnQzMihkYXRhLT5j
YXNlc1tpXS52YWx1ZS5zd2l0Y2hMb29rdXBWYWx1ZShkYXRhLT5raW5kKSksCiAgICAgICAgICAg
ICAgICAgICAgIGxvd0Jsb2NrKGRhdGEtPmNhc2VzW2ldLnRhcmdldC5ibG9jayksIFdlaWdodChk
YXRhLT5jYXNlc1tpXS50YXJnZXQuY291bnQpKTsKICAgICAgICAgICAgIH0gZWxzZQpAQCAtODk5
MSw3ICs4OTkxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0NDM2OQogICAgICAgICAKICAgICAgICAgTFZhbHVlIGJyYW5j
aE9mZnNldCA9IHZtQ2FsbCgKLSAgICAgICAgICAgIG1fb3V0LmludDMyLCBtX291dC5vcGVyYXRp
b24ob3BlcmF0aW9uU3dpdGNoU3RyaW5nQW5kR2V0QnJhbmNoT2Zmc2V0KSwKKyAgICAgICAgICAg
IEludDMyLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uU3dpdGNoU3RyaW5nQW5kR2V0QnJhbmNo
T2Zmc2V0KSwKICAgICAgICAgICAgIG1fY2FsbEZyYW1lLCBtX291dC5jb25zdEludFB0cihkYXRh
LT5zd2l0Y2hUYWJsZUluZGV4KSwgc3RyaW5nKTsKICAgICAgICAgCiAgICAgICAgIFN0cmluZ0p1
bXBUYWJsZSYgdGFibGUgPSBjb2RlQmxvY2soKS0+c3RyaW5nU3dpdGNoSnVtcFRhYmxlKGRhdGEt
PnN3aXRjaFRhYmxlSW5kZXgpOwpAQCAtOTIxNiwxMSArOTIxNiwxMSBAQCBwcml2YXRlOgogICAg
ICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgIAogICAgICAgICBtX291dC5h
cHBlbmRUbyhzbG93UGF0aCwgY29udGludWF0aW9uKTsKLSAgICAgICAgcmVzdWx0cy5hcHBlbmQo
bV9vdXQuYW5jaG9yKG1fb3V0LmNhbGwobV9vdXQuaW50MzIsIG1fb3V0Lm9wZXJhdGlvbihvcGVy
YXRpb25Ub0ludDMyKSwgZG91YmxlVmFsdWUpKSk7CisgICAgICAgIHJlc3VsdHMuYXBwZW5kKG1f
b3V0LmFuY2hvcihtX291dC5jYWxsKEludDMyLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uVG9J
bnQzMiksIGRvdWJsZVZhbHVlKSkpOwogICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7
CiAgICAgICAgIAogICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0
KTsKLSAgICAgICAgcmV0dXJuIG1fb3V0LnBoaShtX291dC5pbnQzMiwgcmVzdWx0cyk7CisgICAg
ICAgIHJldHVybiBtX291dC5waGkoSW50MzIsIHJlc3VsdHMpOwogICAgIH0KICAgICAKICAgICBM
VmFsdWUgZG91YmxlVG9JbnQzMihMVmFsdWUgZG91YmxlVmFsdWUpCkBAIC05MjQ1LDExICs5MjQ1
LDExIEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9
IG1fb3V0LmFwcGVuZFRvKHNsb3dQYXRoLCBjb250aW51YXRpb24pOwogICAgICAgICBWYWx1ZUZy
b21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKAotICAgICAgICAgICAgbV9vdXQuY2Fs
bChtX291dC5pbnQzMiwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvblRvSW50MzIpLCBkb3VibGVW
YWx1ZSkpOworICAgICAgICAgICAgbV9vdXQuY2FsbChJbnQzMiwgbV9vdXQub3BlcmF0aW9uKG9w
ZXJhdGlvblRvSW50MzIpLCBkb3VibGVWYWx1ZSkpOwogICAgICAgICBtX291dC5qdW1wKGNvbnRp
bnVhdGlvbik7CiAgICAgICAgIAogICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24s
IGxhc3ROZXh0KTsKLSAgICAgICAgcmV0dXJuIG1fb3V0LnBoaShtX291dC5pbnQzMiwgZmFzdFJl
c3VsdCwgc2xvd1Jlc3VsdCk7CisgICAgICAgIHJldHVybiBtX291dC5waGkoSW50MzIsIGZhc3RS
ZXN1bHQsIHNsb3dSZXN1bHQpOwogICAgIH0KIAogICAgIC8vIFRoaXMgaXMgYSBtZWNoYW5pc20g
Zm9yIGNyZWF0aW5nIGEgY29kZSBnZW5lcmF0b3IgdGhhdCBmaWxscyBpbiBhIGdhcCBpbiB0aGUg
Y29kZSB1c2luZyBvdXIKQEAgLTk3NzEsNyArOTc3MSw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1f
b3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRv
KGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwotICAgICAgICByZXR1cm4gbV9vdXQucGhpKG1fb3V0
LmludDY0LCByZXN1bHRzKTsKKyAgICAgICAgcmV0dXJuIG1fb3V0LnBoaShJbnQ2NCwgcmVzdWx0
cyk7CiAgICAgfQogICAgIAogICAgIExWYWx1ZSBzdHJpY3RJbnQ1MlRvSW50NTIoTFZhbHVlIHZh
bHVlKQpAQCAtOTgwMiw3ICs5ODAyLDcgQEAgcHJpdmF0ZToKICAgICB9CiAgICAgTFZhbHVlIGJv
eEludDMyKExWYWx1ZSB2YWx1ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBtX291dC5hZGQobV9v
dXQuemVyb0V4dCh2YWx1ZSwgbV9vdXQuaW50NjQpLCBtX3RhZ1R5cGVOdW1iZXIpOworICAgICAg
ICByZXR1cm4gbV9vdXQuYWRkKG1fb3V0Lnplcm9FeHQodmFsdWUsIEludDY0KSwgbV90YWdUeXBl
TnVtYmVyKTsKICAgICB9CiAgICAgCiAgICAgTFZhbHVlIGlzQ2VsbE9yTWlzYyhMVmFsdWUganNW
YWx1ZSwgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IFNwZWNGdWxsVG9wKQpAQCAtOTgyMCwxMSArOTgy
MCwxMSBAQCBwcml2YXRlOgogCiAgICAgTFZhbHVlIHVuYm94RG91YmxlKExWYWx1ZSBqc1ZhbHVl
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fb3V0LmJpdENhc3QobV9vdXQuYWRkKGpzVmFsdWUs
IG1fdGFnVHlwZU51bWJlciksIG1fb3V0LmRvdWJsZVR5cGUpOworICAgICAgICByZXR1cm4gbV9v
dXQuYml0Q2FzdChtX291dC5hZGQoanNWYWx1ZSwgbV90YWdUeXBlTnVtYmVyKSwgRG91YmxlKTsK
ICAgICB9CiAgICAgTFZhbHVlIGJveERvdWJsZShMVmFsdWUgZG91YmxlVmFsdWUpCiAgICAgewot
ICAgICAgICByZXR1cm4gbV9vdXQuc3ViKG1fb3V0LmJpdENhc3QoZG91YmxlVmFsdWUsIG1fb3V0
LmludDY0KSwgbV90YWdUeXBlTnVtYmVyKTsKKyAgICAgICAgcmV0dXJuIG1fb3V0LnN1YihtX291
dC5iaXRDYXN0KGRvdWJsZVZhbHVlLCBJbnQ2NCksIG1fdGFnVHlwZU51bWJlcik7CiAgICAgfQog
ICAgIAogICAgIExWYWx1ZSBqc1ZhbHVlVG9TdHJpY3RJbnQ1MihFZGdlIGVkZ2UsIExWYWx1ZSBi
b3hlZFZhbHVlKQpAQCAtOTg1MSw3ICs5ODUxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgbV9vdXQu
YXBwZW5kVG8oZG91YmxlQ2FzZSwgY29udGludWF0aW9uKTsKICAgICAgICAgCiAgICAgICAgIExW
YWx1ZSBwb3NzaWJsZVJlc3VsdCA9IG1fb3V0LmNhbGwoCi0gICAgICAgICAgICBtX291dC5pbnQ2
NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkNvbnZlcnRCb3hlZERvdWJsZVRvSW50NTIpLCBi
b3hlZFZhbHVlKTsKKyAgICAgICAgICAgIEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9u
Q29udmVydEJveGVkRG91YmxlVG9JbnQ1MiksIGJveGVkVmFsdWUpOwogICAgICAgICBGVExfVFlQ
RV9DSEVDSygKICAgICAgICAgICAgIGpzVmFsdWVWYWx1ZShib3hlZFZhbHVlKSwgZWRnZSwgU3Bl
Y0ludDMyT25seSB8IFNwZWNBbnlJbnRBc0RvdWJsZSwKICAgICAgICAgICAgIG1fb3V0LmVxdWFs
KHBvc3NpYmxlUmVzdWx0LCBtX291dC5jb25zdEludDY0KEpTVmFsdWU6Om5vdEludDUyKSkpOwpA
QCAtOTg2MSwxMyArOTg2MSwxMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgIG1f
b3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwogICAgICAgICAgICAgCi0gICAg
ICAgIHJldHVybiBtX291dC5waGkobV9vdXQuaW50NjQsIGludFRvSW50NTIsIGRvdWJsZVRvSW50
NTIpOworICAgICAgICByZXR1cm4gbV9vdXQucGhpKEludDY0LCBpbnRUb0ludDUyLCBkb3VibGVU
b0ludDUyKTsKICAgICB9CiAgICAgCiAgICAgTFZhbHVlIGRvdWJsZVRvU3RyaWN0SW50NTIoRWRn
ZSBlZGdlLCBMVmFsdWUgdmFsdWUpCiAgICAgewogICAgICAgICBMVmFsdWUgcG9zc2libGVSZXN1
bHQgPSBtX291dC5jYWxsKAotICAgICAgICAgICAgbV9vdXQuaW50NjQsIG1fb3V0Lm9wZXJhdGlv
bihvcGVyYXRpb25Db252ZXJ0RG91YmxlVG9JbnQ1MiksIHZhbHVlKTsKKyAgICAgICAgICAgIElu
dDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uQ29udmVydERvdWJsZVRvSW50NTIpLCB2YWx1
ZSk7CiAgICAgICAgIEZUTF9UWVBFX0NIRUNLX1dJVEhfRVhJVF9LSU5EKEludDUyT3ZlcmZsb3cs
CiAgICAgICAgICAgICBkb3VibGVWYWx1ZSh2YWx1ZSksIGVkZ2UsIFNwZWNBbnlJbnRBc0RvdWJs
ZSwKICAgICAgICAgICAgIG1fb3V0LmVxdWFsKHBvc3NpYmxlUmVzdWx0LCBtX291dC5jb25zdElu
dDY0KEpTVmFsdWU6Om5vdEludDUyKSkpOwpAQCAtOTg4OSw3ICs5ODg5LDcgQEAgcHJpdmF0ZToK
IAogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyh2YWx1
ZUlzWmVybywgY29udGludWF0aW9uKTsKIAotICAgICAgICAgICAgTFZhbHVlIGRvdWJsZUJpdGNh
c3RUb0ludDY0ID0gbV9vdXQuYml0Q2FzdCh2YWx1ZSwgbV9vdXQuaW50NjQpOworICAgICAgICAg
ICAgTFZhbHVlIGRvdWJsZUJpdGNhc3RUb0ludDY0ID0gbV9vdXQuYml0Q2FzdCh2YWx1ZSwgSW50
NjQpOwogICAgICAgICAgICAgTFZhbHVlIHNpZ25CaXRTZXQgPSBtX291dC5sZXNzVGhhbihkb3Vi
bGVCaXRjYXN0VG9JbnQ2NCwgbV9vdXQuY29uc3RJbnQ2NCgwKSk7CiAKICAgICAgICAgICAgIHNw
ZWN1bGF0ZShOZWdhdGl2ZVplcm8sIEZvcm1hdHRlZFZhbHVlKERhdGFGb3JtYXREb3VibGUsIHZh
bHVlKSwgbV9ub2RlLCBzaWduQml0U2V0KTsKQEAgLTEwNzA4LDcgKzEwNzA4LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGNhbGxDaGVjaygpCiAgICAgewogICAgICAgICBpZiAoT3B0aW9uczo6dXNl
RXhjZXB0aW9uRnV6eigpKQotICAgICAgICAgICAgbV9vdXQuY2FsbChtX291dC52b2lkVHlwZSwg
bV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkV4Y2VwdGlvbkZ1enopLCBtX2NhbGxGcmFtZSk7Cisg
ICAgICAgICAgICBtX291dC5jYWxsKFZvaWQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25FeGNl
cHRpb25GdXp6KSwgbV9jYWxsRnJhbWUpOwogICAgICAgICAKICAgICAgICAgTFZhbHVlIGV4Y2Vw
dGlvbiA9IG1fb3V0LmxvYWQ2NChtX291dC5hYnNvbHV0ZSh2bSgpLmFkZHJlc3NPZkV4Y2VwdGlv
bigpKSk7CiAgICAgICAgIExWYWx1ZSBoYWRFeGNlcHRpb24gPSBtX291dC5ub3RaZXJvNjQoZXhj
ZXB0aW9uKTsKQEAgLTExMjk0LDcgKzExMjk0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIH0p
OwogI2Vsc2UKICAgICAgICAgbV9vdXQuY2FsbCgKLSAgICAgICAgICAgIG1fb3V0LnZvaWRUeXBl
LAorICAgICAgICAgICAgVm9pZCwKICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKGZ0bFVu
cmVhY2hhYmxlKSwKICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKGNvZGVCbG9jaygpKSwg
bV9vdXQuY29uc3RJbnQzMihibG9ja0luZGV4KSwKICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50
MzIobm9kZUluZGV4KSk7Cg==
</data>
<flag name="review"
          id="306462"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282664</attachid>
            <date>2016-07-03 11:55:43 -0700</date>
            <delta_ts>2016-07-03 11:56:32 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>73882</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAyNzkxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0NSBA
QAorMjAxNi0wNy0wMyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEZUTCBzaG91bGQgcmVmZXIgdG8gQjMgdHlwZXMgZGlyZWN0bHkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTM4OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgV2hlbiB3ZSB1c2VkIExMVk0s
IHR5cGVzIHdlcmUgb2JqZWN0cyB0aGF0IHdlcmUgYWxsb2NhdGVkIGJ5IHRoZSBMTFZNQ29udGV4
dC4gV2UgaGFkIHRvCisgICAgICAgIHJlbWVtYmVyIHBvaW50ZXJzIHRvIHRoZW0gb3IgZWxzZSBj
YWxsIHRocm91Z2ggdGhlIEMgQVBJIGV2ZXJ5IHRpbWUgd2Ugd2FudGVkIHRoZSB0eXBlLiBXZQor
ICAgICAgICBzdG9yZWQgdGhlIHR5cGUgcG9pbnRlcnMgaW5zaWRlIEZUTDo6Q29tbW9uVmFsdWVz
LgorICAgICAgICAKKyAgICAgICAgQnV0IGluIEIzLCB0eXBlcyBhcmUganVzdCBtZW1iZXJzIG9m
IGFuIGVudW0uIFdlIGRvbid0IGhhdmUgdG8gcmVtZW1iZXIgcG9pbnRlcnMgdG8gdGhlbS4KKyAg
ICAgICAgCisgICAgICAgIFRoaXMgY2hhbmdlIHJlcGxhY2VzIGFsbCBwcmlvciB1c2VzIG9mIHRo
aW5ncyBsaWtlICJtX291dC5pbnQzMiIgd2l0aCBqdXN0ICJJbnQzMiIsIGFuZAorICAgICAgICBs
aWtld2lzZSBmb3IgbV9vdXQuYm9vbGVhbiwgbV9vdXQuaW50NjQsIG1fb3V0LmludFB0ciwgbV9v
dXQuZmxvYXRUeXBlLCBhbmQKKyAgICAgICAgbV9vdXQuZG91YmxlVHlwZS4KKyAgICAgICAgCisg
ICAgICAgIFdlIHN0aWxsIHVzZSBGVEw6OkNvbW1vblZhbHVlcyBmb3IgY29tbW9uIGNvbnN0YW50
cyB0aGF0IHdlIGhhdmUgcHJlLWhvaXN0ZWQuIEhvcGVmdWxseSB3ZQorICAgICAgICB3aWxsIGNv
bWUgdXAgd2l0aCBhIGJldHRlciBzdG9yeSBmb3IgdGhvc2UgZXZlbnR1YWxseSwgc2luY2UgdGhh
dCdzIHN0aWxsIGtpbmRhIHVnbHkuCisKKyAgICAgICAgKiBmdGwvRlRMQ29tbW9uVmFsdWVzLmNw
cDoKKyAgICAgICAgKEpTQzo6RlRMOjpDb21tb25WYWx1ZXM6OkNvbW1vblZhbHVlcyk6CisgICAg
ICAgICogZnRsL0ZUTENvbW1vblZhbHVlcy5oOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1Rv
QjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjcmVhdGVQaGlW
YXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
RG91YmxlUmVwKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGls
ZUJvb2xlYW5Ub051bWJlcik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6
OmNvbXBpbGVDYWxsT2JqZWN0Q29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjpjb21waWxlVG9UaGlzKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29tcGlsZVZhbHVlQWRkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29tcGlsZVN0ckNhdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVBcml0aE1pbk9yTWF4KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZUFyaXRoUG93KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZUFyaXRoUm91bmQpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlQXJyYXlpZnlUb1N0cnVjdHVyZSk6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRCeUlkKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldEJ5SWRXaXRoVGhpcyk6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRCeVZhbFdpdGhUaGlz
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVB1dEJ5SWRX
aXRoVGhpcyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQ
dXRCeVZhbFdpdGhUaGlzKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZUdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0QXJyYXlMZW5ndGgpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0QnlWYWwpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0TXlBcmd1bWVu
dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVB1
dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVB1
dEFjY2Vzc29yQnlJZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVQdXRHZXR0ZXJTZXR0ZXJCeUlkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZVB1dEFjY2Vzc29yQnlWYWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlQXJyYXlQdXNoKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUFycmF5UG9wKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNyZWF0ZUFjdGl2YXRpb24pOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTmV3RnVuY3Rpb24pOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ3JlYXRlRGlyZWN0QXJndW1lbnRz
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNyZWF0ZVNj
b3BlZEFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVDcmVhdGVDbG9uZWRBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlQ29weVJlc3QpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlR2V0UmVzdExlbmd0aCk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOZXdPYmplY3QpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlTmV3QXJyYXkpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlTmV3QXJyYXlCdWZmZXIpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTmV3QXJyYXlXaXRoU2l6ZSk6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOZXdUeXBlZEFycmF5KToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVRvTnVtYmVyKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVRvU3RyaW5nT3JDYWxs
U3RyaW5nQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlVG9QcmltaXRpdmUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjpjb21waWxlTWFrZVJvcGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjpjb21waWxlU3RyaW5nQ2hhckF0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZVN0cmluZ0NoYXJDb2RlQXQpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlU3RyaW5nRnJvbUNoYXJDb2RlKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldEJ5T2Zmc2V0KToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU11bHRpR2V0QnlPZmZzZXQpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0QnlPZmZzZXQp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ29tcGFyZVN0
cmljdEVxKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUxv
YWRWYXJhcmdzKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGls
ZUZvcndhcmRWYXJhcmdzKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZVN3aXRjaCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVJc1N0cmluZyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVJc0pTQXJyYXkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlSXNPYmplY3QpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlSXNPYmplY3RPck51bGwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjpjb21waWxlSXNGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmNvbXBpbGVJc1JlZ0V4cE9iamVjdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVJc1R5cGVkQXJyYXlWaWV3KToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVR5cGVPZik6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVJbik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVPdmVycmlkZXNIYXNJbnN0YW5jZSk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDaGVja1R5cGVJbmZvRmxhZ3MpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlSW5zdGFuY2VPZik6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVJbnN0YW5jZU9mQ3Vz
dG9tKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNvdW50
RXhlY3V0aW9uKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGls
ZUhhc0luZGV4ZWRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVIYXNHZW5lcmljUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjpjb21waWxlSGFzU3RydWN0dXJlUHJvcGVydHkpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0RGlyZWN0UG5hbWUpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0RW51bWVyYWJsZUxlbmd0
aCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRQcm9w
ZXJ0eUVudW1lcmF0b3IpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlR2V0RW51bWVyYXRvclN0cnVjdHVyZVBuYW1lKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldEVudW1lcmF0b3JHZW5lcmljUG5hbWUpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVG9JbmRleFN0cmluZyk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDaGVja1N0cnVj
dHVyZUltbWVkaWF0ZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVNYXRlcmlhbGl6ZU5ld09iamVjdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVNYXRlcmlhbGl6ZUNyZWF0ZUFjdGl2YXRpb24pOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlU2V0RnVuY3Rpb25OYW1lKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6bnVtYmVyT3JOb3RDZWxsVG9JbnQz
Mik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNoZWNrSW5mZXJyZWRU
eXBlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6aW5pdGlhbGl6ZUFy
cmF5RWxlbWVudHMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjphbGxv
Y2F0ZVByb3BlcnR5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OnJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjphbGxvY2F0ZVByb3BlcnR5U3RvcmFnZVdpdGhTaXplSW1wbCk6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmdldEJ5SWQpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21wYXJlKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVJlc29sdmVTY29wZSk6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXREeW5hbWljVmFyKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGFyZUVxT2JqZWN0T3JPdGhlclRvT2JqZWN0
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6c3BlY3VsYXRlVHJ1dGh5
T2JqZWN0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6bm9uU3BlY3Vs
YXRpdmVDb21wYXJlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6c3Ry
aW5nc0VxdWFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6YWxsb2Nh
dGVWYXJpYWJsZVNpemVkT2JqZWN0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6YWxsb2NhdGVPYmplY3QpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjphbGxvY2F0ZUpTQXJyYXkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjplbnN1cmVTaGFkb3dDaGlja2VuUGFja2V0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Ym9vbGlmeSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmVxdWFsTnVsbE9yVW5kZWZpbmVkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29udGlndW91c1B1dEJ5VmFsT3V0T2ZCb3VuZHMpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpidWlsZFN3aXRjaCk6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OnN3aXRjaFN0cmluZ1Nsb3cpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpkb3VibGVUb0ludDMyKToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6c2Vuc2libGVEb3VibGVUb0ludDMyKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6c3RyaWN0SW50NTJUb0pTVmFsdWUpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpzdHJpY3RJbnQ1MlRvSW50NTIpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjp1bmJveEludDMyKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Ym94SW50MzIpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjppc0NlbGxPck1pc2MpOgorICAgICAgICAoSlNDOjpGVEw6
OkRGRzo6TG93ZXJERkdUb0IzOjp1bmJveERvdWJsZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmJveERvdWJsZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmpzVmFsdWVUb1N0cmljdEludDUyKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6ZG91YmxlVG9TdHJpY3RJbnQ1Mik6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OmNvbnZlcnREb3VibGVUb0ludDMyKToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y2FsbENoZWNrKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y3Jhc2gpOgorCiAyMDE2LTA3LTAyICBGaWxpcCBQaXpsbyAgPGZw
aXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgREZHIExJQ00gbmVlZHMgdG8gZ28gYWxsLWluIG9u
IHRoZSBpZGVhIHRoYXQgc29tZSBsb29wcyBjYW4ndCBiZSBMSUNNZWQKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbW1vblZhbHVlcy5jcHAJKHJldmlzaW9uIDIwMjc5
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDIsMTMgKzQyLDYgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBG
VEwgewogdXNpbmcgbmFtZXNwYWNlIEIzOwogCiBDb21tb25WYWx1ZXM6OkNvbW1vblZhbHVlcygp
Ci0gICAgOiB2b2lkVHlwZShCMzo6Vm9pZCkKLSAgICAsIGJvb2xlYW4oQjM6OkludDMyKQotICAg
ICwgaW50MzIoQjM6OkludDMyKQotICAgICwgaW50NjQoQjM6OkludDY0KQotICAgICwgaW50UHRy
KEIzOjpwb2ludGVyVHlwZSgpKQotICAgICwgZmxvYXRUeXBlKEIzOjpGbG9hdCkKLSAgICAsIGRv
dWJsZVR5cGUoQjM6OkRvdWJsZSkKIHsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDb21tb25WYWx1ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTENvbW1vblZhbHVlcy5oCShyZXZpc2lvbiAyMDI3OTEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTENvbW1vblZhbHVlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niwx
MyArNDYsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGluaXRpYWxpemVDb25zdGFudHMoQjM6OlBy
b2NlZHVyZSYsIEIzOjpCYXNpY0Jsb2NrKik7CiAgICAgCi0gICAgY29uc3QgTFR5cGUgdm9pZFR5
cGU7Ci0gICAgY29uc3QgTFR5cGUgYm9vbGVhbjsKLSAgICBjb25zdCBMVHlwZSBpbnQzMjsKLSAg
ICBjb25zdCBMVHlwZSBpbnQ2NDsKLSAgICBjb25zdCBMVHlwZSBpbnRQdHI7Ci0gICAgY29uc3Qg
TFR5cGUgZmxvYXRUeXBlOwotICAgIGNvbnN0IExUeXBlIGRvdWJsZVR5cGU7CiAgICAgTFZhbHVl
IGJvb2xlYW5UcnVlIHsgbnVsbHB0ciB9OwogICAgIExWYWx1ZSBib29sZWFuRmFsc2UgeyBudWxs
cHRyIH07CiAgICAgTFZhbHVlIGludDMyWmVybyB7IG51bGxwdHIgfTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDIwMjc5
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzI4LDE5ICszMjgsMTkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICBMVHlwZSB0eXBlOwogICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+ZmxhZ3MoKSAmIE5v
ZGVSZXN1bHRNYXNrKSB7CiAgICAgICAgICAgICAgICAgY2FzZSBOb2RlUmVzdWx0RG91YmxlOgot
ICAgICAgICAgICAgICAgICAgICB0eXBlID0gbV9vdXQuZG91YmxlVHlwZTsKKyAgICAgICAgICAg
ICAgICAgICAgdHlwZSA9IERvdWJsZTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgY2FzZSBOb2RlUmVzdWx0SW50MzI6Ci0gICAgICAgICAgICAgICAgICAgIHR5
cGUgPSBtX291dC5pbnQzMjsKKyAgICAgICAgICAgICAgICAgICAgdHlwZSA9IEludDMyOwogICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIE5vZGVSZXN1bHRJ
bnQ1MjoKLSAgICAgICAgICAgICAgICAgICAgdHlwZSA9IG1fb3V0LmludDY0OworICAgICAgICAg
ICAgICAgICAgICB0eXBlID0gSW50NjQ7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgICAgIGNhc2UgTm9kZVJlc3VsdEJvb2xlYW46Ci0gICAgICAgICAgICAgICAgICAg
IHR5cGUgPSBtX291dC5ib29sZWFuOworICAgICAgICAgICAgICAgICAgICB0eXBlID0gSW50MzI7
CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgTm9kZVJl
c3VsdEpTOgotICAgICAgICAgICAgICAgICAgICB0eXBlID0gbV9vdXQuaW50NjQ7CisgICAgICAg
ICAgICAgICAgICAgIHR5cGUgPSBJbnQ2NDsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgREZHX0NSQVNIKG1f
Z3JhcGgsIG5vZGUsICJCYWQgUGhpIG5vZGUgcmVzdWx0IHR5cGUiKTsKQEAgLTExNTcsNyArMTE1
Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRv
KGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBzZXRE
b3VibGUobV9vdXQucGhpKG1fb3V0LmRvdWJsZVR5cGUsIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQp
KTsKKyAgICAgICAgICAgIHNldERvdWJsZShtX291dC5waGkoRG91YmxlLCBmYXN0UmVzdWx0LCBz
bG93UmVzdWx0KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgICAg
IApAQCAtMTIzMSw3ICsxMjMxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBtX291dC5q
dW1wKGNvbnRpbnVhdGlvbik7CiAKICAgICAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250
aW51YXRpb24sIGxhc3ROZXh0KTsKLSAgICAgICAgICAgICAgICBzZXREb3VibGUobV9vdXQucGhp
KG1fb3V0LmRvdWJsZVR5cGUsIGludFRvRG91YmxlLCB1bmJveGVkRG91YmxlLCBjb252ZXJ0ZWRV
bmRlZmluZWQsIGNvbnZlcnRlZE51bGwsIGNvbnZlcnRlZFRydWUsIGNvbnZlcnRlZEZhbHNlKSk7
CisgICAgICAgICAgICAgICAgc2V0RG91YmxlKG1fb3V0LnBoaShEb3VibGUsIGludFRvRG91Ymxl
LCB1bmJveGVkRG91YmxlLCBjb252ZXJ0ZWRVbmRlZmluZWQsIGNvbnZlcnRlZE51bGwsIGNvbnZl
cnRlZFRydWUsIGNvbnZlcnRlZEZhbHNlKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8obm9uRG91YmxlQ2FzZSwgY29u
dGludWF0aW9uKTsKQEAgLTEyNDAsNyArMTI0MCw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgICAg
IG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwogCi0gICAgICAgICAgICBz
ZXREb3VibGUobV9vdXQucGhpKG1fb3V0LmRvdWJsZVR5cGUsIGludFRvRG91YmxlLCB1bmJveGVk
RG91YmxlKSk7CisgICAgICAgICAgICBzZXREb3VibGUobV9vdXQucGhpKERvdWJsZSwgaW50VG9E
b3VibGUsIHVuYm94ZWREb3VibGUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
ICAgICAgICAgICAgCkBAIC0xMzUzLDcgKzEzNTMsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAg
ICAgc3dpdGNoIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgewogICAgICAgICBjYXNlIEJv
b2xlYW5Vc2U6IHsKLSAgICAgICAgICAgIHNldEludDMyKG1fb3V0Lnplcm9FeHQobG93Qm9vbGVh
bihtX25vZGUtPmNoaWxkMSgpKSwgbV9vdXQuaW50MzIpKTsKKyAgICAgICAgICAgIHNldEludDMy
KG1fb3V0Lnplcm9FeHQobG93Qm9vbGVhbihtX25vZGUtPmNoaWxkMSgpKSwgSW50MzIpKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC0xMzc1LDExICsx
Mzc1LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgICAgIExCYXNpY0Jsb2Nr
IGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oYm9vbGVhbkNhc2UsIGNvbnRpbnVhdGlvbik7CiAg
ICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBib29sZWFuUmVzdWx0ID0gbV9vdXQuYW5jaG9yKG1f
b3V0LmJpdE9yKAotICAgICAgICAgICAgICAgIG1fb3V0Lnplcm9FeHQodW5ib3hCb29sZWFuKHZh
bHVlKSwgbV9vdXQuaW50NjQpLCBtX3RhZ1R5cGVOdW1iZXIpKTsKKyAgICAgICAgICAgICAgICBt
X291dC56ZXJvRXh0KHVuYm94Qm9vbGVhbih2YWx1ZSksIEludDY0KSwgbV90YWdUeXBlTnVtYmVy
KSk7CiAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwotICAg
ICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkobV9vdXQuaW50NjQsIGJvb2xlYW5SZXN1bHQs
IG5vdEJvb2xlYW5SZXN1bHQpKTsKKyAgICAgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKElu
dDY0LCBib29sZWFuUmVzdWx0LCBub3RCb29sZWFuUmVzdWx0KSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMTQ4NiwxMSArMTQ4NiwxMSBAQCBwcml2
YXRlOgogICAgICAgICBtX291dC5icmFuY2goaXNPYmplY3QodmFsdWUpLCB1c3VhbGx5KGNvbnRp
bnVhdGlvbiksIHJhcmVseShzbG93Q2FzZSkpOwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNs
b3dDYXNlLCBjb250aW51YXRpb24pOwotICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0
ID0gbV9vdXQuYW5jaG9yKHZtQ2FsbChtX291dC5pbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJh
dGlvbk9iamVjdENvbnN0cnVjdG9yKSwgbV9jYWxsRnJhbWUsIG1fb3V0LmNvbnN0SW50UHRyKGds
b2JhbE9iamVjdCksIHZhbHVlKSk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQg
PSBtX291dC5hbmNob3Iodm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uT2Jq
ZWN0Q29uc3RydWN0b3IpLCBtX2NhbGxGcmFtZSwgbV9vdXQuY29uc3RJbnRQdHIoZ2xvYmFsT2Jq
ZWN0KSwgdmFsdWUpKTsKICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogCiAgICAg
ICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwotICAgICAgICBzZXRK
U1ZhbHVlKG1fb3V0LnBoaShtX291dC5pbnQ2NCwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCkpOwor
ICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShJbnQ2NCwgZmFzdFJlc3VsdCwgc2xvd1Jlc3Vs
dCkpOwogICAgIH0KICAgICAKICAgICB2b2lkIGNvbXBpbGVUb1RoaXMoKQpAQCAtMTUxOSwxMSAr
MTUxOSwxMSBAQCBwcml2YXRlOgogICAgICAgICBlbHNlCiAgICAgICAgICAgICBmdW5jdGlvbiA9
IG9wZXJhdGlvblRvVGhpczsKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1f
b3V0LmFuY2hvcigKLSAgICAgICAgICAgIHZtQ2FsbChtX291dC5pbnQ2NCwgbV9vdXQub3BlcmF0
aW9uKGZ1bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHZhbHVlKSk7CisgICAgICAgICAgICB2bUNhbGwo
SW50NjQsIG1fb3V0Lm9wZXJhdGlvbihmdW5jdGlvbiksIG1fY2FsbEZyYW1lLCB2YWx1ZSkpOwog
ICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgIAogICAgICAgICBtX291
dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKLSAgICAgICAgc2V0SlNWYWx1ZSht
X291dC5waGkobV9vdXQuaW50NjQsIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpKTsKKyAgICAgICAg
c2V0SlNWYWx1ZShtX291dC5waGkoSW50NjQsIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpKTsKICAg
ICB9CiAgICAgCiAgICAgdm9pZCBjb21waWxlVmFsdWVBZGQoKQpAQCAtMTUzNiwxMyArMTUzNiwx
MyBAQCBwcml2YXRlOgogICAgICAgICBMVmFsdWUgcmVzdWx0OwogICAgICAgICBpZiAobV9ub2Rl
LT5jaGlsZDMoKSkgewogICAgICAgICAgICAgcmVzdWx0ID0gdm1DYWxsKAotICAgICAgICAgICAg
ICAgIG1fb3V0LmludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uU3RyQ2F0MyksIG1fY2Fs
bEZyYW1lLAorICAgICAgICAgICAgICAgIEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9u
U3RyQ2F0MyksIG1fY2FsbEZyYW1lLAogICAgICAgICAgICAgICAgIGxvd0pTVmFsdWUobV9ub2Rl
LT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKSwKICAgICAgICAgICAgICAgICBs
b3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiksCiAg
ICAgICAgICAgICAgICAgbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMygpLCBNYW51YWxPcGVyYW5k
U3BlY3VsYXRpb24pKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHJlc3VsdCA9IHZt
Q2FsbCgKLSAgICAgICAgICAgICAgICBtX291dC5pbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJh
dGlvblN0ckNhdDIpLCBtX2NhbGxGcmFtZSwKKyAgICAgICAgICAgICAgICBJbnQ2NCwgbV9vdXQu
b3BlcmF0aW9uKG9wZXJhdGlvblN0ckNhdDIpLCBtX2NhbGxGcmFtZSwKICAgICAgICAgICAgICAg
ICBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiks
CiAgICAgICAgICAgICAgICAgbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpLCBNYW51YWxPcGVy
YW5kU3BlY3VsYXRpb24pKTsKICAgICAgICAgfQpAQCAtMTg2OCw3ICsxODY4LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7Ci0gICAg
ICAgICAgICBzZXREb3VibGUobV9vdXQucGhpKG1fb3V0LmRvdWJsZVR5cGUsIHJlc3VsdHMpKTsK
KyAgICAgICAgICAgIHNldERvdWJsZShtX291dC5waGkoRG91YmxlLCByZXN1bHRzKSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC0yMDQyLDcgKzIwNDIs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogCiAg
ICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKLSAgICAg
ICAgICAgIHNldERvdWJsZShtX291dC5waGkobV9vdXQuZG91YmxlVHlwZSwgcG93RG91YmxlSW50
UmVzdWx0LCB6ZXJvUmVzdWx0RXhwb25lbnRJc09uZUhhbGYsIHNxcnRSZXN1bHQsIHNxcnRJbmZp
bml0eVJlc3VsdCwgb25lT3ZlclNxcnRaZXJvUmVzdWx0LCBvbmVPdmVyU3FydFJlc3VsdCwgb25l
T3ZlclNxcnRJbmZpbml0eVJlc3VsdCwgcG93UmVzdWx0LCBwdXJlTmFuKSk7CisgICAgICAgICAg
ICBzZXREb3VibGUobV9vdXQucGhpKERvdWJsZSwgcG93RG91YmxlSW50UmVzdWx0LCB6ZXJvUmVz
dWx0RXhwb25lbnRJc09uZUhhbGYsIHNxcnRSZXN1bHQsIHNxcnRJbmZpbml0eVJlc3VsdCwgb25l
T3ZlclNxcnRaZXJvUmVzdWx0LCBvbmVPdmVyU3FydFJlc3VsdCwgb25lT3ZlclNxcnRJbmZpbml0
eVJlc3VsdCwgcG93UmVzdWx0LCBwdXJlTmFuKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTIx
MTgsNyArMjExOCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVh
dGlvbik7CiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0
KTsKIAotICAgICAgICAgICAgcmVzdWx0ID0gbV9vdXQucGhpKG1fb3V0LmRvdWJsZVR5cGUsIGlu
dGVnZXJWYWx1ZVJlc3VsdCwgaW50ZWdlclZhbHVlUm91bmRlZERvd25SZXN1bHQpOworICAgICAg
ICAgICAgcmVzdWx0ID0gbV9vdXQucGhpKERvdWJsZSwgaW50ZWdlclZhbHVlUmVzdWx0LCBpbnRl
Z2VyVmFsdWVSb3VuZGVkRG93blJlc3VsdCk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAocHJv
ZHVjZXNJbnRlZ2VyKG1fbm9kZS0+YXJpdGhSb3VuZGluZ01vZGUoKSkpIHsKQEAgLTI0MTksMTcg
KzI0MTksMTcgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIHN3aXRjaCAobV9ub2RlLT5h
cnJheU1vZGUoKS50eXBlKCkpIHsKICAgICAgICAgY2FzZSBBcnJheTo6SW50MzI6Ci0gICAgICAg
ICAgICB2bUNhbGwobV9vdXQudm9pZFR5cGUsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25FbnN1
cmVJbnQzMiksIG1fY2FsbEZyYW1lLCBjZWxsKTsKKyAgICAgICAgICAgIHZtQ2FsbChWb2lkLCBt
X291dC5vcGVyYXRpb24ob3BlcmF0aW9uRW5zdXJlSW50MzIpLCBtX2NhbGxGcmFtZSwgY2VsbCk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBcnJheTo6RG91YmxlOgotICAgICAg
ICAgICAgdm1DYWxsKG1fb3V0LnZvaWRUeXBlLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uRW5z
dXJlRG91YmxlKSwgbV9jYWxsRnJhbWUsIGNlbGwpOworICAgICAgICAgICAgdm1DYWxsKFZvaWQs
IG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25FbnN1cmVEb3VibGUpLCBtX2NhbGxGcmFtZSwgY2Vs
bCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBcnJheTo6Q29udGlndW91czoK
LSAgICAgICAgICAgIHZtQ2FsbChtX291dC52b2lkVHlwZSwgbV9vdXQub3BlcmF0aW9uKG9wZXJh
dGlvbkVuc3VyZUNvbnRpZ3VvdXMpLCBtX2NhbGxGcmFtZSwgY2VsbCk7CisgICAgICAgICAgICB2
bUNhbGwoVm9pZCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkVuc3VyZUNvbnRpZ3VvdXMpLCBt
X2NhbGxGcmFtZSwgY2VsbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBcnJh
eTo6QXJyYXlTdG9yYWdlOgogICAgICAgICBjYXNlIEFycmF5OjpTbG93UHV0QXJyYXlTdG9yYWdl
OgotICAgICAgICAgICAgdm1DYWxsKG1fb3V0LnZvaWRUeXBlLCBtX291dC5vcGVyYXRpb24ob3Bl
cmF0aW9uRW5zdXJlQXJyYXlTdG9yYWdlKSwgbV9jYWxsRnJhbWUsIGNlbGwpOworICAgICAgICAg
ICAgdm1DYWxsKFZvaWQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25FbnN1cmVBcnJheVN0b3Jh
Z2UpLCBtX2NhbGxGcmFtZSwgY2VsbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVm
YXVsdDoKICAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBtX25vZGUsICJCYWQgYXJyYXkg
dHlwZSIpOwpAQCAtMjQ5NSwxMyArMjQ5NSwxMyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICBt
X291dC5hcHBlbmRUbyhub3RDZWxsQ2FzZSwgY29udGludWF0aW9uKTsKICAgICAgICAgICAgIFZh
bHVlRnJvbUJsb2NrIG5vdENlbGxSZXN1bHQgPSBtX291dC5hbmNob3Iodm1DYWxsKAotICAgICAg
ICAgICAgICAgIG1fb3V0LmludDY0LCBtX291dC5vcGVyYXRpb24oZ2V0QnlJZEZ1bmN0aW9uKSwK
KyAgICAgICAgICAgICAgICBJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKGdldEJ5SWRGdW5jdGlvbiks
CiAgICAgICAgICAgICAgICAgbV9jYWxsRnJhbWUsIHZhbHVlLAogICAgICAgICAgICAgICAgIG1f
b3V0LmNvbnN0SW50UHRyKG1fZ3JhcGguaWRlbnRpZmllcnMoKVttX25vZGUtPmlkZW50aWZpZXJO
dW1iZXIoKV0pKSk7CiAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5l
eHQpOwotICAgICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkobV9vdXQuaW50NjQsIGNlbGxS
ZXN1bHQsIG5vdENlbGxSZXN1bHQpKTsKKyAgICAgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhp
KEludDY0LCBjZWxsUmVzdWx0LCBub3RDZWxsUmVzdWx0KSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMjUxNSw3ICsyNTE1LDcgQEAgcHJpdmF0ZToK
ICAgICB7CiAgICAgICAgIExWYWx1ZSBiYXNlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgp
KTsKICAgICAgICAgTFZhbHVlIHRoaXNWYWx1ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIo
KSk7Ci0gICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwobV9vdXQuaW50NjQsIG1fb3V0Lm9w
ZXJhdGlvbihvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXMpLCBtX2NhbGxGcmFtZSwgYmFzZSwgdGhp
c1ZhbHVlLCBtX291dC5jb25zdEludFB0cihtX2dyYXBoLmlkZW50aWZpZXJzKClbbV9ub2RlLT5p
ZGVudGlmaWVyTnVtYmVyKCldKSk7CisgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwoSW50
NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXMpLCBtX2NhbGxGcmFt
ZSwgYmFzZSwgdGhpc1ZhbHVlLCBtX291dC5jb25zdEludFB0cihtX2dyYXBoLmlkZW50aWZpZXJz
KClbbV9ub2RlLT5pZGVudGlmaWVyTnVtYmVyKCldKSk7CiAgICAgICAgIHNldEpTVmFsdWUocmVz
dWx0KTsKICAgICB9CiAKQEAgLTI1MjUsNyArMjUyNSw3IEBAIHByaXZhdGU6CiAgICAgICAgIExW
YWx1ZSB0aGlzVmFsdWUgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICBM
VmFsdWUgc3Vic2NyaXB0ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMygpKTsKIAotICAgICAg
ICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKG1fb3V0LmludDY0LCBtX291dC5vcGVyYXRpb24ob3Bl
cmF0aW9uR2V0QnlWYWxXaXRoVGhpcyksIG1fY2FsbEZyYW1lLCBiYXNlLCB0aGlzVmFsdWUsIHN1
YnNjcmlwdCk7CisgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwoSW50NjQsIG1fb3V0Lm9w
ZXJhdGlvbihvcGVyYXRpb25HZXRCeVZhbFdpdGhUaGlzKSwgbV9jYWxsRnJhbWUsIGJhc2UsIHRo
aXNWYWx1ZSwgc3Vic2NyaXB0KTsKICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgIH0K
IApAQCAtMjUzNSw3ICsyNTM1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgTFZhbHVlIHRoaXNWYWx1
ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgIExWYWx1ZSB2YWx1ZSA9
IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDMoKSk7CiAKLSAgICAgICAgdm1DYWxsKG1fb3V0LnZv
aWRUeXBlLCBtX291dC5vcGVyYXRpb24obV9ncmFwaC5pc1N0cmljdE1vZGVGb3IobV9ub2RlLT5v
cmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9uUHV0QnlJZFdpdGhUaGlzU3RyaWN0IDogb3BlcmF0
aW9uUHV0QnlJZFdpdGhUaGlzKSwKKyAgICAgICAgdm1DYWxsKFZvaWQsIG1fb3V0Lm9wZXJhdGlv
bihtX2dyYXBoLmlzU3RyaWN0TW9kZUZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykgPyBvcGVy
YXRpb25QdXRCeUlkV2l0aFRoaXNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeUlkV2l0aFRoaXMpLAog
ICAgICAgICAgICAgbV9jYWxsRnJhbWUsIGJhc2UsIHRoaXNWYWx1ZSwgdmFsdWUsIG1fb3V0LmNv
bnN0SW50UHRyKG1fZ3JhcGguaWRlbnRpZmllcnMoKVttX25vZGUtPmlkZW50aWZpZXJOdW1iZXIo
KV0pKTsKICAgICB9CiAKQEAgLTI1NDYsNyArMjU0Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIExW
YWx1ZSBwcm9wZXJ0eSA9IGxvd0pTVmFsdWUobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDIp
KTsKICAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShtX2dyYXBoLnZhckFyZ0NoaWxk
KG1fbm9kZSwgMykpOwogCi0gICAgICAgIHZtQ2FsbChtX291dC52b2lkVHlwZSwgbV9vdXQub3Bl
cmF0aW9uKG1fZ3JhcGguaXNTdHJpY3RNb2RlRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKSA/
IG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbFdpdGhU
aGlzKSwKKyAgICAgICAgdm1DYWxsKFZvaWQsIG1fb3V0Lm9wZXJhdGlvbihtX2dyYXBoLmlzU3Ry
aWN0TW9kZUZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykgPyBvcGVyYXRpb25QdXRCeVZhbFdp
dGhUaGlzU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhpcyksCiAgICAgICAgICAgICBt
X2NhbGxGcmFtZSwgYmFzZSwgdGhpc1ZhbHVlLCBwcm9wZXJ0eSwgdmFsdWUpOwogICAgIH0KICAg
ICAKQEAgLTI2NDksMTMgKzI2NDksMTMgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIExCYXNpY0Js
b2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oc2xvd1BhdGgsIGNvbnRpbnVhdGlvbik7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291
dC5hbmNob3IoCi0gICAgICAgICAgICAgICAgdm1DYWxsKG1fb3V0LmludFB0ciwgbV9vdXQub3Bl
cmF0aW9uKG9wZXJhdGlvblJlc29sdmVSb3BlKSwgbV9jYWxsRnJhbWUsIGNlbGwpKTsKKyAgICAg
ICAgICAgICAgICB2bUNhbGwocG9pbnRlclR5cGUoKSwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlv
blJlc29sdmVSb3BlKSwgbV9jYWxsRnJhbWUsIGNlbGwpKTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKICAgICAgICAgICAgIAot
ICAgICAgICAgICAgc2V0U3RvcmFnZShtX291dC5sb2FkUHRyKG1fb3V0LnBoaShtX291dC5pbnRQ
dHIsIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpLCBtX2hlYXBzLlN0cmluZ0ltcGxfZGF0YSkpOwor
ICAgICAgICAgICAgc2V0U3RvcmFnZShtX291dC5sb2FkUHRyKG1fb3V0LnBoaShwb2ludGVyVHlw
ZSgpLCBmYXN0UmVzdWx0LCBzbG93UmVzdWx0KSwgbV9oZWFwcy5TdHJpbmdJbXBsX2RhdGEpKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKQEAgLTI3MDYsNyArMjcw
Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAg
ICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CiAKLSAgICAgICAgc2V0
SW50MzIobV9vdXQuY2FzdFRvSW50MzIobV9vdXQucGhpKG1fb3V0LmludFB0ciwgc2ltcGxlT3V0
LCB3YXN0ZWZ1bE91dCkpKTsKKyAgICAgICAgc2V0SW50MzIobV9vdXQuY2FzdFRvSW50MzIobV9v
dXQucGhpKHBvaW50ZXJUeXBlKCksIHNpbXBsZU91dCwgd2FzdGVmdWxPdXQpKSk7CiAgICAgfQog
ICAgIAogICAgIHZvaWQgY29tcGlsZUdldEFycmF5TGVuZ3RoKCkKQEAgLTI4MDcsMTEgKzI4MDcs
MTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8o
c2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93
UmVzdWx0ID0gbV9vdXQuYW5jaG9yKAotICAgICAgICAgICAgICAgIHZtQ2FsbChtX291dC5pbnQ2
NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5VmFsQXJyYXlJbnQpLCBtX2NhbGxGcmFt
ZSwgYmFzZSwgaW5kZXgpKTsKKyAgICAgICAgICAgICAgICB2bUNhbGwoSW50NjQsIG1fb3V0Lm9w
ZXJhdGlvbihvcGVyYXRpb25HZXRCeVZhbEFycmF5SW50KSwgbV9jYWxsRnJhbWUsIGJhc2UsIGlu
ZGV4KSk7CiAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwot
ICAgICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkobV9vdXQuaW50NjQsIGZhc3RSZXN1bHQs
IHNsb3dSZXN1bHQpKTsKKyAgICAgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKEludDY0LCBm
YXN0UmVzdWx0LCBzbG93UmVzdWx0KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICAgICAgICAgIApAQCAtMjg1OSwxMSArMjg1OSwxMSBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93Q2FzZSwgY29udGludWF0aW9uKTsK
ICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3IoCi0g
ICAgICAgICAgICAgICAgdm1DYWxsKG1fb3V0LmludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0
aW9uR2V0QnlWYWxBcnJheUludCksIG1fY2FsbEZyYW1lLCBiYXNlLCBpbmRleCkpOworICAgICAg
ICAgICAgICAgIHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5VmFs
QXJyYXlJbnQpLCBtX2NhbGxGcmFtZSwgYmFzZSwgaW5kZXgpKTsKICAgICAgICAgICAgIG1fb3V0
Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9vdXQuYXBw
ZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7Ci0gICAgICAgICAgICBzZXRKU1ZhbHVlKG1f
b3V0LnBoaShtX291dC5pbnQ2NCwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCkpOworICAgICAgICAg
ICAgc2V0SlNWYWx1ZShtX291dC5waGkoSW50NjQsIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yOTQzLDEzICsyOTQzLDEzIEBA
IHByaXZhdGU6CiAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQp
OwotICAgICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkobV9vdXQuaW50NjQsIG5hbWVkUmVz
dWx0LCBvdmVyZmxvd1Jlc3VsdCkpOworICAgICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGko
SW50NjQsIG5hbWVkUmVzdWx0LCBvdmVyZmxvd1Jlc3VsdCkpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBBcnJheTo6R2VuZXJpYzog
ewogICAgICAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoCi0gICAgICAgICAgICAgICAgbV9vdXQu
aW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25HZXRCeVZhbCksIG1fY2FsbEZyYW1lLAor
ICAgICAgICAgICAgICAgIEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlWYWwp
LCBtX2NhbGxGcmFtZSwKICAgICAgICAgICAgICAgICBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQx
KCkpLCBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpKSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KQEAgLTMwMDMsNyArMzAwMyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIGlmICht
X25vZGUtPnNob3VsZFNwZWN1bGF0ZUFueUludCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBzZXRTdHJpY3RJbnQ1MihtX291dC56ZXJvRXh0KHJlc3VsdCwgbV9vdXQuaW50NjQpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHNldFN0cmljdEludDUyKG1fb3V0Lnplcm9FeHQocmVzdWx0
LCBJbnQ2NCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIApAQCAtMzA3Nyw3ICszMDc3LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgTFZhbHVlIHJlc3VsdDsKICAgICAgICAgaWYgKGJhc2UpIHsKICAgICAg
ICAgICAgIExWYWx1ZSBwb2ludGVyID0gbV9vdXQuYmFzZUluZGV4KAotICAgICAgICAgICAgICAg
IGJhc2UudmFsdWUoKSwgbV9vdXQuemVyb0V4dChpbmRleCwgbV9vdXQuaW50UHRyKSwgU2NhbGVF
aWdodCk7CisgICAgICAgICAgICAgICAgYmFzZS52YWx1ZSgpLCBtX291dC56ZXJvRXh0KGluZGV4
LCBwb2ludGVyVHlwZSgpKSwgU2NhbGVFaWdodCk7CiAgICAgICAgICAgICByZXN1bHQgPSBtX291
dC5sb2FkNjQoVHlwZWRQb2ludGVyKG1faGVhcHMudmFyaWFibGVzLmF0QW55SW5kZXgoKSwgcG9p
bnRlcikpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHJlc3VsdCA9IG1fb3V0LmNvbnN0
SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKTsKQEAgLTMxMTcsNyArMzExNyw3
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICB2bUNhbGwoCi0gICAgICAgICAgICAgICAgbV9vdXQudm9pZFR5cGUsIG1fb3V0Lm9wZXJhdGlv
bihvcGVyYXRpb24pLCBtX2NhbGxGcmFtZSwKKyAgICAgICAgICAgICAgICBWb2lkLCBtX291dC5v
cGVyYXRpb24ob3BlcmF0aW9uKSwgbV9jYWxsRnJhbWUsCiAgICAgICAgICAgICAgICAgbG93SlNW
YWx1ZShjaGlsZDEpLCBsb3dKU1ZhbHVlKGNoaWxkMiksIGxvd0pTVmFsdWUoY2hpbGQzKSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTMyMDksNyArMzIwOSw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmFkZCgKICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0b3JhZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5zaGwoCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbV9vdXQuemVyb0V4dChpbmRleCwgbV9vdXQuaW50UHRyKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX291dC56ZXJvRXh0KGluZGV4LCBwb2ludGVy
VHlwZSgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihs
b2dFbGVtZW50U2l6ZSh0eXBlKSkpKSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgT3V0cHV0OjpTdG9yZVR5cGUgc3RvcmVUeXBlOwpAQCAtMzI0Niw3ICszMjQ2LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlv
bik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50VmFsdWUgPSBtX291dC5waGkobV9vdXQuaW50MzIsIGludFZh
bHVlcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50VmFsdWUgPSBtX291dC5waGko
SW50MzIsIGludFZhbHVlcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMzI3OCw3ICsz
Mjc4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5qdW1w
KGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50VmFsdWUgPSBtX291dC5waGkobV9vdXQu
aW50MzIsIGludFZhbHVlcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50VmFsdWUg
PSBtX291dC5waGkoSW50MzIsIGludFZhbHVlcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9
IGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRWYWx1ZSA9IGRvdWJsZVRvSW50
MzIoZG91YmxlVmFsdWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0zMzQ5
LDcgKzMzNDksNyBAQCBwcml2YXRlOgogICAgICAgICBMVmFsdWUgYWNjZXNzb3IgPSBsb3dDZWxs
KG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICBhdXRvIHVpZCA9IG1fZ3JhcGguaWRlbnRpZmll
cnMoKVttX25vZGUtPmlkZW50aWZpZXJOdW1iZXIoKV07CiAgICAgICAgIHZtQ2FsbCgKLSAgICAg
ICAgICAgIG1fb3V0LnZvaWRUeXBlLAorICAgICAgICAgICAgVm9pZCwKICAgICAgICAgICAgIG1f
b3V0Lm9wZXJhdGlvbihtX25vZGUtPm9wKCkgPT0gUHV0R2V0dGVyQnlJZCA/IG9wZXJhdGlvblB1
dEdldHRlckJ5SWQgOiBvcGVyYXRpb25QdXRTZXR0ZXJCeUlkKSwKICAgICAgICAgICAgIG1fY2Fs
bEZyYW1lLCBiYXNlLCBtX291dC5jb25zdEludFB0cih1aWQpLCBtX291dC5jb25zdEludDMyKG1f
bm9kZS0+YWNjZXNzb3JBdHRyaWJ1dGVzKCkpLCBhY2Nlc3Nvcik7CiAgICAgfQpAQCAtMzM2MSw3
ICszMzYxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgTFZhbHVlIHNldHRlciA9IGxvd0pTVmFsdWUo
bV9ub2RlLT5jaGlsZDMoKSk7CiAgICAgICAgIGF1dG8gdWlkID0gbV9ncmFwaC5pZGVudGlmaWVy
cygpW21fbm9kZS0+aWRlbnRpZmllck51bWJlcigpXTsKICAgICAgICAgdm1DYWxsKAotICAgICAg
ICAgICAgbV9vdXQudm9pZFR5cGUsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25QdXRHZXR0ZXJT
ZXR0ZXIpLAorICAgICAgICAgICAgVm9pZCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvblB1dEdl
dHRlclNldHRlciksCiAgICAgICAgICAgICBtX2NhbGxGcmFtZSwgYmFzZSwgbV9vdXQuY29uc3RJ
bnRQdHIodWlkKSwgbV9vdXQuY29uc3RJbnQzMihtX25vZGUtPmFjY2Vzc29yQXR0cmlidXRlcygp
KSwgZ2V0dGVyLCBzZXR0ZXIpOwogCiAgICAgfQpAQCAtMzM3Miw3ICszMzcyLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgTFZhbHVlIHN1YnNjcmlwdCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIo
KSk7CiAgICAgICAgIExWYWx1ZSBhY2Nlc3NvciA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDMoKSk7
CiAgICAgICAgIHZtQ2FsbCgKLSAgICAgICAgICAgIG1fb3V0LnZvaWRUeXBlLAorICAgICAgICAg
ICAgVm9pZCwKICAgICAgICAgICAgIG1fb3V0Lm9wZXJhdGlvbihtX25vZGUtPm9wKCkgPT0gUHV0
R2V0dGVyQnlWYWwgPyBvcGVyYXRpb25QdXRHZXR0ZXJCeVZhbCA6IG9wZXJhdGlvblB1dFNldHRl
ckJ5VmFsKSwKICAgICAgICAgICAgIG1fY2FsbEZyYW1lLCBiYXNlLCBzdWJzY3JpcHQsIG1fb3V0
LmNvbnN0SW50MzIobV9ub2RlLT5hY2Nlc3NvckF0dHJpYnV0ZXMoKSksIGFjY2Vzc29yKTsKICAg
ICB9CkBAIC0zNDMzLDExICszNDMzLDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkFycmF5
UHVzaERvdWJsZSk7CiAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9v
dXQuYW5jaG9yKAotICAgICAgICAgICAgICAgIHZtQ2FsbChtX291dC5pbnQ2NCwgb3BlcmF0aW9u
LCBtX2NhbGxGcmFtZSwgdmFsdWUsIGJhc2UpKTsKKyAgICAgICAgICAgICAgICB2bUNhbGwoSW50
NjQsIG9wZXJhdGlvbiwgbV9jYWxsRnJhbWUsIHZhbHVlLCBiYXNlKSk7CiAgICAgICAgICAgICBt
X291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fb3V0
LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwotICAgICAgICAgICAgc2V0SlNWYWx1
ZShtX291dC5waGkobV9vdXQuaW50NjQsIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpKTsKKyAgICAg
ICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKEludDY0LCBmYXN0UmVzdWx0LCBzbG93UmVzdWx0
KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMzQ5
MCwxMSArMzQ5MCwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX291
dC5hcHBlbmRUbyhzbG93Q2FzZSwgY29udGludWF0aW9uKTsKICAgICAgICAgICAgIHJlc3VsdHMu
YXBwZW5kKG1fb3V0LmFuY2hvcih2bUNhbGwoCi0gICAgICAgICAgICAgICAgbV9vdXQuaW50NjQs
IG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25BcnJheVBvcEFuZFJlY292ZXJMZW5ndGgpLCBtX2Nh
bGxGcmFtZSwgYmFzZSkpKTsKKyAgICAgICAgICAgICAgICBJbnQ2NCwgbV9vdXQub3BlcmF0aW9u
KG9wZXJhdGlvbkFycmF5UG9wQW5kUmVjb3Zlckxlbmd0aCksIG1fY2FsbEZyYW1lLCBiYXNlKSkp
OwogICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKLSAgICAg
ICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKG1fb3V0LmludDY0LCByZXN1bHRzKSk7CisgICAg
ICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShJbnQ2NCwgcmVzdWx0cykpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTM1MTMsNyArMzUxMyw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIEFTU0VSVChpbml0aWFsaXphdGlvblZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgaW5pdGlh
bGl6YXRpb25WYWx1ZSA9PSBqc1REWlZhbHVlKCkpOwogICAgICAgICBpZiAodGFibGUtPnNpbmds
ZXRvblNjb3BlKCktPmlzU3RpbGxWYWxpZCgpKSB7CiAgICAgICAgICAgICBMVmFsdWUgY2FsbFJl
c3VsdCA9IHZtQ2FsbCgKLSAgICAgICAgICAgICAgICBtX291dC5pbnQ2NCwKKyAgICAgICAgICAg
ICAgICBJbnQ2NCwKICAgICAgICAgICAgICAgICBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uQ3Jl
YXRlQWN0aXZhdGlvbkRpcmVjdCksIG1fY2FsbEZyYW1lLCB3ZWFrUG9pbnRlcihzdHJ1Y3R1cmUp
LAogICAgICAgICAgICAgICAgIHNjb3BlLCB3ZWFrUG9pbnRlcih0YWJsZSksIG1fb3V0LmNvbnN0
SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGluaXRpYWxpemF0aW9uVmFsdWUpKSk7CiAgICAgICAgICAg
ICBzZXRKU1ZhbHVlKGNhbGxSZXN1bHQpOwpAQCAtMzU1Niw3ICszNTU2LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICAKICAgICAgICAgbV9v
dXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7Ci0gICAgICAgIHNldEpTVmFsdWUo
bV9vdXQucGhpKG1fb3V0LmludFB0ciwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCkpOworICAgICAg
ICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBmYXN0UmVzdWx0LCBzbG93UmVz
dWx0KSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgY29tcGlsZU5ld0Z1bmN0aW9uKCkKQEAgLTM1
NjksOCArMzU2OSw4IEBAIHByaXZhdGU6CiAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhl
Y3V0YWJsZSA9IG1fbm9kZS0+Y2FzdE9wZXJhbmQ8RnVuY3Rpb25FeGVjdXRhYmxlKj4oKTsKICAg
ICAgICAgaWYgKGV4ZWN1dGFibGUtPnNpbmdsZXRvbkZ1bmN0aW9uKCktPmlzU3RpbGxWYWxpZCgp
KSB7CiAgICAgICAgICAgICBMVmFsdWUgY2FsbFJlc3VsdCA9Ci0gICAgICAgICAgICAgICAgaXNH
ZW5lcmF0b3JGdW5jdGlvbiA/IHZtQ2FsbChtX291dC5pbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9w
ZXJhdGlvbk5ld0dlbmVyYXRvckZ1bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9p
bnRlcihleGVjdXRhYmxlKSkgOgotICAgICAgICAgICAgICAgIHZtQ2FsbChtX291dC5pbnQ2NCwg
bV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHNjb3Bl
LCB3ZWFrUG9pbnRlcihleGVjdXRhYmxlKSk7CisgICAgICAgICAgICAgICAgaXNHZW5lcmF0b3JG
dW5jdGlvbiA/IHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0dlbmVy
YXRvckZ1bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxl
KSkgOgorICAgICAgICAgICAgICAgIHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJh
dGlvbk5ld0Z1bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRh
YmxlKSk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKGNhbGxSZXN1bHQpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CkBAIC0zNjIwLDcgKzM2MjAsNyBAQCBwcml2YXRlOgogICAgICAg
ICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgIAogICAgICAgICBtX291dC5hcHBl
bmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKLSAgICAgICAgc2V0SlNWYWx1ZShtX291dC5w
aGkobV9vdXQuaW50UHRyLCBmYXN0UmVzdWx0LCBzbG93UmVzdWx0KSk7CisgICAgICAgIHNldEpT
VmFsdWUobV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpKTsK
ICAgICB9CiAgICAgCiAgICAgdm9pZCBjb21waWxlQ3JlYXRlRGlyZWN0QXJndW1lbnRzKCkKQEAg
LTM2NzgsNyArMzY3OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0
aW9uKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFz
dE5leHQpOwotICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQucGhpKG1fb3V0LmludFB0ciwg
ZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCk7CisgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5w
aGkocG9pbnRlclR5cGUoKSwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCk7CiAKICAgICAgICAgbV9v
dXQuc3RvcmVQdHIoZ2V0Q3VycmVudENhbGxlZSgpLCByZXN1bHQsIG1faGVhcHMuRGlyZWN0QXJn
dW1lbnRzX2NhbGxlZSk7CiAgICAgICAgIApAQCAtMzcxMSw3ICszNzExLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgbGFzdE5leHQgPSBtX291
dC5hcHBlbmRUbyhsb29wLCBlbmQpOwotICAgICAgICAgICAgTFZhbHVlIHByZXZpb3VzSW5kZXgg
PSBtX291dC5waGkobV9vdXQuaW50UHRyLCBvcmlnaW5hbExlbmd0aCk7CisgICAgICAgICAgICBM
VmFsdWUgcHJldmlvdXNJbmRleCA9IG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBvcmlnaW5hbExl
bmd0aCk7CiAgICAgICAgICAgICBMVmFsdWUgaW5kZXggPSBtX291dC5zdWIocHJldmlvdXNJbmRl
eCwgbV9vdXQuaW50UHRyT25lKTsKICAgICAgICAgICAgIG1fb3V0LnN0b3JlNjQoCiAgICAgICAg
ICAgICAgICAgbV9vdXQubG9hZDY0KG1fb3V0LmJhc2VJbmRleChtX2hlYXBzLnZhcmlhYmxlcywg
c3RhY2tCYXNlLCBpbmRleCkpLApAQCAtMzczMSw3ICszNzMxLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgTFZhbHVlIHNjb3BlID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgCiAg
ICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwoCi0gICAgICAgICAgICBtX291dC5pbnQ2NCwg
bV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkNyZWF0ZVNjb3BlZEFyZ3VtZW50cyksIG1fY2FsbEZy
YW1lLAorICAgICAgICAgICAgSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25DcmVhdGVT
Y29wZWRBcmd1bWVudHMpLCBtX2NhbGxGcmFtZSwKICAgICAgICAgICAgIHdlYWtQb2ludGVyKAog
ICAgICAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNl
bWFudGljKS0+c2NvcGVkQXJndW1lbnRzU3RydWN0dXJlKCkpLAogICAgICAgICAgICAgZ2V0QXJn
dW1lbnRzU3RhcnQoKSwgZ2V0QXJndW1lbnRzTGVuZ3RoKCkudmFsdWUsIGdldEN1cnJlbnRDYWxs
ZWUoKSwgc2NvcGUpOwpAQCAtMzc0Miw3ICszNzQyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNv
bXBpbGVDcmVhdGVDbG9uZWRBcmd1bWVudHMoKQogICAgIHsKICAgICAgICAgTFZhbHVlIHJlc3Vs
dCA9IHZtQ2FsbCgKLSAgICAgICAgICAgIG1fb3V0LmludDY0LCBtX291dC5vcGVyYXRpb24ob3Bl
cmF0aW9uQ3JlYXRlQ2xvbmVkQXJndW1lbnRzKSwgbV9jYWxsRnJhbWUsCisgICAgICAgICAgICBJ
bnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkNyZWF0ZUNsb25lZEFyZ3VtZW50cyksIG1f
Y2FsbEZyYW1lLAogICAgICAgICAgICAgd2Vha1BvaW50ZXIoCiAgICAgICAgICAgICAgICAgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5jbG9uZWRBcmd1
bWVudHNTdHJ1Y3R1cmUoKSksCiAgICAgICAgICAgICBnZXRBcmd1bWVudHNTdGFydCgpLCBnZXRB
cmd1bWVudHNMZW5ndGgoKS52YWx1ZSwgZ2V0Q3VycmVudENhbGxlZSgpKTsKQEAgLTM3NjUsNyAr
Mzc2NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIEFyZ3VtZW50czogMDpleGVjLCAxOkpTQ2Vs
bCogYXJyYXksIDI6YXJndW1lbnRzIHN0YXJ0LCAzOm51bWJlciBvZiBhcmd1bWVudHMgdG8gc2tp
cCwgNDphcnJheSBsZW5ndGgKICAgICAgICAgTFZhbHVlIG51bWJlck9mQXJndW1lbnRzVG9Ta2lw
ID0gbV9vdXQuY29uc3RJbnQzMihtX25vZGUtPm51bWJlck9mQXJndW1lbnRzVG9Ta2lwKCkpOwog
ICAgICAgICB2bUNhbGwoCi0gICAgICAgICAgICBtX291dC52b2lkVHlwZSxtX291dC5vcGVyYXRp
b24ob3BlcmF0aW9uQ29weVJlc3QpLCBtX2NhbGxGcmFtZSwgbG93Q2VsbChtX25vZGUtPmNoaWxk
MSgpKSwKKyAgICAgICAgICAgIFZvaWQsbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkNvcHlSZXN0
KSwgbV9jYWxsRnJhbWUsIGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksCiAgICAgICAgICAgICBn
ZXRBcmd1bWVudHNTdGFydCgpLCBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcCwgYXJyYXlMZW5ndGgp
OwogICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAKQEAgLTM3ODksNyArMzc4OSw3
IEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAg
CiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwotICAgICAg
ICBzZXRJbnQzMihtX291dC5waGkobV9vdXQuaW50MzIsIHplcm9MZW5ndGhSZXN1bHQsIG5vblpl
cm9MZW5ndGhSZXN1bHQpKTsKKyAgICAgICAgc2V0SW50MzIobV9vdXQucGhpKEludDMyLCB6ZXJv
TGVuZ3RoUmVzdWx0LCBub25aZXJvTGVuZ3RoUmVzdWx0KSk7CiAgICAgfQogICAgIAogICAgIHZv
aWQgY29tcGlsZU5ld09iamVjdCgpCkBAIC0zODUxLDcgKzM4NTEsNyBAQCBwcml2YXRlOgogICAg
ICAgICAKICAgICAgICAgaWYgKCFtX25vZGUtPm51bUNoaWxkcmVuKCkpIHsKICAgICAgICAgICAg
IHNldEpTVmFsdWUodm1DYWxsKAotICAgICAgICAgICAgICAgIG1fb3V0LmludDY0LCBtX291dC5v
cGVyYXRpb24ob3BlcmF0aW9uTmV3RW1wdHlBcnJheSksIG1fY2FsbEZyYW1lLAorICAgICAgICAg
ICAgICAgIEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uTmV3RW1wdHlBcnJheSksIG1f
Y2FsbEZyYW1lLAogICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKHN0cnVjdHVyZSkp
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMzg3Miw3ICszODcyLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKHNjcmF0Y2hTaXplKSwgbV9v
dXQuYWJzb2x1dGUoc2NyYXRjaEJ1ZmZlci0+YWN0aXZlTGVuZ3RoUHRyKCkpKTsKICAgICAgICAg
CiAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwoCi0gICAgICAgICAgICBtX291dC5pbnQ2
NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0FycmF5KSwgbV9jYWxsRnJhbWUsCisgICAg
ICAgICAgICBJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0FycmF5KSwgbV9jYWxs
RnJhbWUsCiAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihzdHJ1Y3R1cmUpLCBtX291dC5j
b25zdEludFB0cihidWZmZXIpLAogICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIobV9ub2Rl
LT5udW1DaGlsZHJlbigpKSk7CiAgICAgICAgIApAQCAtMzkxMSw3ICszOTExLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoCi0gICAg
ICAgICAgICBtX291dC5pbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0FycmF5QnVm
ZmVyKSwgbV9jYWxsRnJhbWUsCisgICAgICAgICAgICBJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9w
ZXJhdGlvbk5ld0FycmF5QnVmZmVyKSwgbV9jYWxsRnJhbWUsCiAgICAgICAgICAgICBtX291dC5j
b25zdEludFB0cihzdHJ1Y3R1cmUpLCBtX291dC5jb25zdEludFB0cihtX25vZGUtPnN0YXJ0Q29u
c3RhbnQoKSksCiAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihtX25vZGUtPm51bUNvbnN0
YW50cygpKSkpOwogICAgIH0KQEAgLTM5NDcsNyArMzk0Nyw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICBMVmFsdWUgdmVjdG9yTGVuZ3RoID0gcHVibGljTGVuZ3RoOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBMVmFsdWUgcGF5bG9hZFNpemUgPQotICAgICAgICAgICAgICAgIG1fb3V0LnNo
bChtX291dC56ZXJvRXh0KHZlY3Rvckxlbmd0aCwgbV9vdXQuaW50UHRyKSwgbV9vdXQuY29uc3RJ
bnRQdHIoMykpOworICAgICAgICAgICAgICAgIG1fb3V0LnNobChtX291dC56ZXJvRXh0KHZlY3Rv
ckxlbmd0aCwgcG9pbnRlclR5cGUoKSksIG1fb3V0LmNvbnN0SW50UHRyKDMpKTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgTFZhbHVlIGJ1dHRlcmZseVNpemUgPSBtX291dC5hZGQoCiAgICAg
ICAgICAgICAgICAgcGF5bG9hZFNpemUsIG1fb3V0LmNvbnN0SW50UHRyKHNpemVvZihJbmRleGlu
Z0hlYWRlcikpKTsKQEAgLTM5NzcsNyArMzk3Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250aW51YXRpb24pOwogICAg
ICAgICAgICAgTFZhbHVlIHN0cnVjdHVyZVZhbHVlID0gbV9vdXQucGhpKAotICAgICAgICAgICAg
ICAgIG1fb3V0LmludFB0ciwgbGFyZ2VTdHJ1Y3R1cmUsIGZhaWxTdHJ1Y3R1cmUpOworICAgICAg
ICAgICAgICAgIHBvaW50ZXJUeXBlKCksIGxhcmdlU3RydWN0dXJlLCBmYWlsU3RydWN0dXJlKTsK
ICAgICAgICAgICAgIExWYWx1ZSBzbG93UmVzdWx0VmFsdWUgPSBsYXp5U2xvd1BhdGgoCiAgICAg
ICAgICAgICAgICAgWz1dIChjb25zdCBWZWN0b3I8TG9jYXRpb24+JiBsb2NhdGlvbnMpIC0+IFJl
ZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4gewogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gY3JlYXRlTGF6eUNhbGxHZW5lcmF0b3IoCkBAIC0zOTg5LDcgKzM5ODksNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKLSAgICAg
ICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKG1fb3V0LmludFB0ciwgZmFzdFJlc3VsdCwgc2xv
d1Jlc3VsdCkpOworICAgICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkocG9pbnRlclR5cGUo
KSwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAgICAgICAgIApAQCAtMzk5OCw3ICszOTk4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IG1fb3V0LmNvbnN0SW50UHRyKAogICAgICAgICAgICAgICAgIGdsb2JhbE9iamVjdC0+YXJyYXlT
dHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aEFycmF5U3Rv
cmFnZSkpLAogICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIoc3RydWN0dXJlKSk7Ci0gICAg
ICAgIHNldEpTVmFsdWUodm1DYWxsKG1fb3V0LmludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0
aW9uTmV3QXJyYXlXaXRoU2l6ZSksIG1fY2FsbEZyYW1lLCBzdHJ1Y3R1cmVWYWx1ZSwgcHVibGlj
TGVuZ3RoKSk7CisgICAgICAgIHNldEpTVmFsdWUodm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRp
b24ob3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSksIG1fY2FsbEZyYW1lLCBzdHJ1Y3R1cmVWYWx1
ZSwgcHVibGljTGVuZ3RoKSk7CiAgICAgfQogCiAgICAgdm9pZCBjb21waWxlTmV3VHlwZWRBcnJh
eSgpCkBAIC00MDYwLDcgKzQwNjAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9vdXQuanVt
cChjb250aW51YXRpb24pOwogCiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRp
b24sIGxhc3ROZXh0KTsKLSAgICAgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKG1fb3V0Lmlu
dFB0ciwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCkpOworICAgICAgICAgICAgc2V0SlNWYWx1ZSht
X291dC5waGkocG9pbnRlclR5cGUoKSwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCkpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTQwNjgsNyArNDA2OCw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBMVmFsdWUgYXJndW1lbnQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQx
KCkpOwogCiAgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKAotICAgICAgICAgICAg
ICAgIG1fb3V0LmludFB0ciwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld1R5cGVkQXJyYXlX
aXRoT25lQXJndW1lbnRGb3JUeXBlKHR5cGUpKSwKKyAgICAgICAgICAgICAgICBwb2ludGVyVHlw
ZSgpLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uTmV3VHlwZWRBcnJheVdpdGhPbmVBcmd1bWVu
dEZvclR5cGUodHlwZSkpLAogICAgICAgICAgICAgICAgIG1fY2FsbEZyYW1lLCB3ZWFrUG9pbnRl
cihnbG9iYWxPYmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1cmVDb25jdXJyZW50bHkodHlwZSkpLCBh
cmd1bWVudCk7CiAKICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKQEAgLTQxMDMsNyAr
NDEwMyw3IEBAIHByaXZhdGU6CiAgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobV9u
b2RlLT5jaGlsZDEoKSk7CiAKICAgICAgICAgaWYgKCEoYWJzdHJhY3RWYWx1ZShtX25vZGUtPmNo
aWxkMSgpKS5tX3R5cGUgJiBTcGVjQnl0ZWNvZGVOdW1iZXIpKQotICAgICAgICAgICAgc2V0SlNW
YWx1ZSh2bUNhbGwobV9vdXQuaW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25Ub051bWJl
ciksIG1fY2FsbEZyYW1lLCB2YWx1ZSkpOworICAgICAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwo
SW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25Ub051bWJlciksIG1fY2FsbEZyYW1lLCB2
YWx1ZSkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5vdE51bWJl
ciA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRp
b24gPSBtX291dC5uZXdCbG9jaygpOwpAQCAtNDExNiwxMiArNDExNiwxMiBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgLy8gV2UgaGF2ZSBzZXZlcmFsIGF0dGVtcHRzIHRvIHJlbW92ZSBUb051bWJl
ci4gQnV0IFRvTnVtYmVyIHN0aWxsIGV4aXN0cy4KICAgICAgICAgICAgIC8vIEl0IG1lYW5zIHRo
YXQgY29udmVydGluZyBub24tbnVtYmVycyB0byBudW1iZXJzIGJ5IHRoaXMgVG9OdW1iZXIgaXMg
bm90IHJhcmUuCiAgICAgICAgICAgICAvLyBJbnN0ZWFkIG9mIHRoZSBsYXp5IHNsb3cgcGF0aCBn
ZW5lcmF0b3IsIHdlIGNhbGwgdGhlIG9wZXJhdGlvbiBoZXJlLgotICAgICAgICAgICAgVmFsdWVG
cm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcih2bUNhbGwobV9vdXQuaW50NjQsIG1f
b3V0Lm9wZXJhdGlvbihvcGVyYXRpb25Ub051bWJlciksIG1fY2FsbEZyYW1lLCB2YWx1ZSkpOwor
ICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcih2bUNh
bGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25Ub051bWJlciksIG1fY2FsbEZyYW1l
LCB2YWx1ZSkpOwogICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogCiAgICAg
ICAgICAgICAvLyBjb250aW51YXRpb24gY2FzZS4KICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRv
KGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwotICAgICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5w
aGkobV9vdXQuaW50NjQsIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpKTsKKyAgICAgICAgICAgIHNl
dEpTVmFsdWUobV9vdXQucGhpKEludDY0LCBmYXN0UmVzdWx0LCBzbG93UmVzdWx0KSk7CiAgICAg
ICAgIH0KICAgICB9CiAgICAgCkBAIC00MTU2LDcgKzQxNTYsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKLSAgICAgICAgICAgIHNl
dEpTVmFsdWUobV9vdXQucGhpKG1fb3V0LmludDY0LCBzaW1wbGVSZXN1bHQsIHVuYm94ZWRSZXN1
bHQpKTsKKyAgICAgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKEludDY0LCBzaW1wbGVSZXN1
bHQsIHVuYm94ZWRSZXN1bHQpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9pbnRlcnBy
ZXRlci5maWx0ZXIobV9ub2RlLT5jaGlsZDEoKSwgU3BlY1N0cmluZyB8IFNwZWNTdHJpbmdPYmpl
Y3QpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNDE5NiwxMSArNDE5NiwxMSBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IG1fb3V0Lm9wZXJhdGlvbihtX25vZGUtPm9w
KCkgPT0gVG9TdHJpbmcgPyBvcGVyYXRpb25Ub1N0cmluZ09uQ2VsbCA6IG9wZXJhdGlvbkNhbGxT
dHJpbmdDb25zdHJ1Y3Rvck9uQ2VsbCk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAg
ICAgb3BlcmF0aW9uID0gbV9vdXQub3BlcmF0aW9uKG1fbm9kZS0+b3AoKSA9PSBUb1N0cmluZyA/
IG9wZXJhdGlvblRvU3RyaW5nIDogb3BlcmF0aW9uQ2FsbFN0cmluZ0NvbnN0cnVjdG9yKTsKLSAg
ICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGNvbnZlcnRlZFJlc3VsdCA9IG1fb3V0LmFuY2hvcih2
bUNhbGwobV9vdXQuaW50NjQsIG9wZXJhdGlvbiwgbV9jYWxsRnJhbWUsIHZhbHVlKSk7CisgICAg
ICAgICAgICBWYWx1ZUZyb21CbG9jayBjb252ZXJ0ZWRSZXN1bHQgPSBtX291dC5hbmNob3Iodm1D
YWxsKEludDY0LCBvcGVyYXRpb24sIG1fY2FsbEZyYW1lLCB2YWx1ZSkpOwogICAgICAgICAgICAg
bV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX291
dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKLSAgICAgICAgICAgIHNldEpTVmFs
dWUobV9vdXQucGhpKG1fb3V0LmludDY0LCBzaW1wbGVSZXN1bHQsIGNvbnZlcnRlZFJlc3VsdCkp
OworICAgICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkoSW50NjQsIHNpbXBsZVJlc3VsdCwg
Y29udmVydGVkUmVzdWx0KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAg
ICAgICAgIApAQCAtNDIzMiwxMSArNDIzMiwxMSBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAg
ICAgbV9vdXQuYXBwZW5kVG8oaXNPYmplY3RDYXNlLCBjb250aW51YXRpb24pOwogICAgICAgICBy
ZXN1bHRzLmFwcGVuZChtX291dC5hbmNob3Iodm1DYWxsKAotICAgICAgICAgICAgbV9vdXQuaW50
NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25Ub1ByaW1pdGl2ZSksIG1fY2FsbEZyYW1lLCB2
YWx1ZSkpKTsKKyAgICAgICAgICAgIEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uVG9Q
cmltaXRpdmUpLCBtX2NhbGxGcmFtZSwgdmFsdWUpKSk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29u
dGludWF0aW9uKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlv
biwgbGFzdE5leHQpOwotICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShtX291dC5pbnQ2NCwg
cmVzdWx0cykpOworICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShJbnQ2NCwgcmVzdWx0cykp
OwogICAgIH0KICAgICAKICAgICB2b2lkIGNvbXBpbGVNYWtlUm9wZSgpCkBAIC00MzE1LDcgKzQz
MTUsNyBAQCBwcml2YXRlOgogICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAg
ICAgIAogICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKLSAg
ICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkobV9vdXQuaW50NjQsIGZhc3RSZXN1bHQsIHNsb3dS
ZXN1bHQpKTsKKyAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkoSW50NjQsIGZhc3RSZXN1bHQs
IHNsb3dSZXN1bHQpKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBjb21waWxlU3RyaW5nQ2hhckF0
KCkKQEAgLTQzNzEsMTMgKzQzNzEsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAg
ICBWZWN0b3I8VmFsdWVGcm9tQmxvY2ssIDQ+IHJlc3VsdHM7CiAgICAgICAgIHJlc3VsdHMuYXBw
ZW5kKG1fb3V0LmFuY2hvcih2bUNhbGwoCi0gICAgICAgICAgICBtX291dC5pbnQ2NCwgbV9vdXQu
b3BlcmF0aW9uKG9wZXJhdGlvblNpbmdsZUNoYXJhY3RlclN0cmluZyksCisgICAgICAgICAgICBJ
bnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvblNpbmdsZUNoYXJhY3RlclN0cmluZyksCiAg
ICAgICAgICAgICBtX2NhbGxGcmFtZSwgY2hhcjE2Qml0VmFsdWUpKSk7CiAgICAgICAgIG1fb3V0
Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgICAgIAogICAgICAgICBtX291dC5hcHBlbmRU
byhiaXRzQ29udGludWF0aW9uLCBzbG93UGF0aCk7CiAgICAgICAgICAgICAKLSAgICAgICAgTFZh
bHVlIGNoYXJhY3RlciA9IG1fb3V0LnBoaShtX291dC5pbnQzMiwgY2hhcjhCaXQsIGNoYXIxNkJp
dCk7CisgICAgICAgIExWYWx1ZSBjaGFyYWN0ZXIgPSBtX291dC5waGkoSW50MzIsIGNoYXI4Qml0
LCBjaGFyMTZCaXQpOwogICAgICAgICAgICAgCiAgICAgICAgIExWYWx1ZSBzbWFsbFN0cmluZ3Mg
PSBtX291dC5jb25zdEludFB0cih2bSgpLnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJp
bmdzKCkpOwogICAgICAgICAgICAgCkBAIC00NDE3LDEzICs0NDE3LDEzIEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICByZXN1bHRzLmFwcGVu
ZChtX291dC5hbmNob3Iodm1DYWxsKAotICAgICAgICAgICAgICAgIG1fb3V0LmludDY0LCBtX291
dC5vcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlWYWxTdHJpbmdJbnQpLCBtX2NhbGxGcmFtZSwgYmFz
ZSwgaW5kZXgpKSk7CisgICAgICAgICAgICAgICAgSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVy
YXRpb25HZXRCeVZhbFN0cmluZ0ludCksIG1fY2FsbEZyYW1lLCBiYXNlLCBpbmRleCkpKTsKICAg
ICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsK
ICAgICAgICAgICAgIAogICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3RO
ZXh0KTsKLSAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkobV9vdXQuaW50NjQsIHJlc3VsdHMp
KTsKKyAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkoSW50NjQsIHJlc3VsdHMpKTsKICAgICB9
CiAgICAgCiAgICAgdm9pZCBjb21waWxlU3RyaW5nQ2hhckNvZGVBdCgpCkBAIC00NDY3LDcgKzQ0
NjcsNyBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGlu
dWF0aW9uLCBsYXN0TmV4dCk7CiAgICAgICAgIAotICAgICAgICBzZXRJbnQzMihtX291dC5waGko
bV9vdXQuaW50MzIsIGNoYXI4Qml0LCBjaGFyMTZCaXQpKTsKKyAgICAgICAgc2V0SW50MzIobV9v
dXQucGhpKEludDMyLCBjaGFyOEJpdCwgY2hhcjE2Qml0KSk7CiAgICAgfQogCiAgICAgdm9pZCBj
b21waWxlU3RyaW5nRnJvbUNoYXJDb2RlKCkKQEAgLTQ0NzYsNyArNDQ3Niw3IEBAIHByaXZhdGU6
CiAgICAgICAgIAogICAgICAgICBpZiAoY2hpbGRFZGdlLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNl
KSB7CiAgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKAotICAgICAgICAgICAgICAg
IG1fb3V0LmludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uU3RyaW5nRnJvbUNoYXJDb2Rl
VW50eXBlZCksIG1fY2FsbEZyYW1lLAorICAgICAgICAgICAgICAgIEludDY0LCBtX291dC5vcGVy
YXRpb24ob3BlcmF0aW9uU3RyaW5nRnJvbUNoYXJDb2RlVW50eXBlZCksIG1fY2FsbEZyYW1lLAog
ICAgICAgICAgICAgICAgIGxvd0pTVmFsdWUoY2hpbGRFZGdlKSk7CiAgICAgICAgICAgICBzZXRK
U1ZhbHVlKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC00NTA1LDEzICs0NTA1LDEz
IEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250aW51YXRp
b24pOwogCiAgICAgICAgIExWYWx1ZSBzbG93UmVzdWx0VmFsdWUgPSB2bUNhbGwoCi0gICAgICAg
ICAgICBtX291dC5pbnRQdHIsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25TdHJpbmdGcm9tQ2hh
ckNvZGUpLCBtX2NhbGxGcmFtZSwgdmFsdWUpOworICAgICAgICAgICAgcG9pbnRlclR5cGUoKSwg
bV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvblN0cmluZ0Zyb21DaGFyQ29kZSksIG1fY2FsbEZyYW1l
LCB2YWx1ZSk7CiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNo
b3Ioc2xvd1Jlc3VsdFZhbHVlKTsKICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwog
CiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwogCi0gICAg
ICAgIHNldEpTVmFsdWUobV9vdXQucGhpKG1fb3V0LmludDY0LCBmYXN0UmVzdWx0LCBzbG93UmVz
dWx0KSk7CisgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKEludDY0LCBmYXN0UmVzdWx0LCBz
bG93UmVzdWx0KSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgY29tcGlsZUdldEJ5T2Zmc2V0KCkK
QEAgLTQ2MDksNyArNDYwOSw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0LnVucmVhY2hhYmxl
KCk7CiAgICAgICAgIAogICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3RO
ZXh0KTsKLSAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkobV9vdXQuaW50NjQsIHJlc3VsdHMp
KTsKKyAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkoSW50NjQsIHJlc3VsdHMpKTsKICAgICB9
CiAgICAgCiAgICAgdm9pZCBjb21waWxlUHV0QnlPZmZzZXQoKQpAQCAtNDg4MCw3ICs0ODgwLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKIAogICAg
ICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7Ci0gICAgICAg
ICAgICBzZXRCb29sZWFuKG1fb3V0LnBoaShtX291dC5ib29sZWFuLCBmYXN0UmVzdWx0LCBzbG93
UmVzdWx0KSk7CisgICAgICAgICAgICBzZXRCb29sZWFuKG1fb3V0LnBoaShJbnQzMiwgZmFzdFJl
c3VsdCwgc2xvd1Jlc3VsdCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAg
LTQ5NzIsNyArNDk3Miw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRp
bnVhdGlvbik7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRp
bnVhdGlvbiwgbGFzdE5leHQpOwotICAgICAgICAgICAgc2V0Qm9vbGVhbihtX291dC5waGkobV9v
dXQuYm9vbGVhbiwgbm90Q2VsbFJlc3VsdCwgbm90U3RyaW5nUmVzdWx0LCBpc1N0cmluZ1Jlc3Vs
dCkpOworICAgICAgICAgICAgc2V0Qm9vbGVhbihtX291dC5waGkoSW50MzIsIG5vdENlbGxSZXN1
bHQsIG5vdFN0cmluZ1Jlc3VsdCwgaXNTdHJpbmdSZXN1bHQpKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogICAgICAgICAKQEAgLTU1NDMsNyArNTU0Myw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIExWYWx1ZSBqc0FyZ3VtZW50cyA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7
CiAgICAgICAgIAogICAgICAgICBMVmFsdWUgbGVuZ3RoID0gdm1DYWxsKAotICAgICAgICAgICAg
bV9vdXQuaW50MzIsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25TaXplT2ZWYXJhcmdzKSwgbV9j
YWxsRnJhbWUsIGpzQXJndW1lbnRzLAorICAgICAgICAgICAgSW50MzIsIG1fb3V0Lm9wZXJhdGlv
bihvcGVyYXRpb25TaXplT2ZWYXJhcmdzKSwgbV9jYWxsRnJhbWUsIGpzQXJndW1lbnRzLAogICAg
ICAgICAgICAgbV9vdXQuY29uc3RJbnQzMihkYXRhLT5vZmZzZXQpKTsKICAgICAgICAgCiAgICAg
ICAgIC8vIEZJWE1FOiBUaGVyZSBpcyBhIGNoYW5jZSB0aGF0IHdlIHdpbGwgY2FsbCBhbiBlZmZl
Y3RmdWwgbGVuZ3RoIHByb3BlcnR5IHR3aWNlLiBUaGlzIGlzIHNhZmUKQEAgLTU1NjcsNyArNTU2
Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cigzKSk7CiAgICAg
ICAgIAogICAgICAgICB2bUNhbGwoCi0gICAgICAgICAgICBtX291dC52b2lkVHlwZSwgbV9vdXQu
b3BlcmF0aW9uKG9wZXJhdGlvbkxvYWRWYXJhcmdzKSwgbV9jYWxsRnJhbWUsCisgICAgICAgICAg
ICBWb2lkLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uTG9hZFZhcmFyZ3MpLCBtX2NhbGxGcmFt
ZSwKICAgICAgICAgICAgIG1fb3V0LmNhc3RUb0ludDMyKG1hY2hpbmVTdGFydCksIGpzQXJndW1l
bnRzLCBtX291dC5jb25zdEludDMyKGRhdGEtPm9mZnNldCksCiAgICAgICAgICAgICBsZW5ndGgs
IG1fb3V0LmNvbnN0SW50MzIoZGF0YS0+bWFuZGF0b3J5TWluaW11bSkpOwogICAgIH0KQEAgLTU2
MDUsNyArNTYwNSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBtX291dC5hYm92ZShsb29wQm91
bmRWYWx1ZSwgbGVuZ3RoQXNQdHIpLCB1bnN1cmUodW5kZWZpbmVkTG9vcCksIHVuc3VyZShtYWlu
TG9vcEVudHJ5KSk7CiAgICAgICAgIAogICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1f
b3V0LmFwcGVuZFRvKHVuZGVmaW5lZExvb3AsIG1haW5Mb29wRW50cnkpOwotICAgICAgICBMVmFs
dWUgcHJldmlvdXNJbmRleCA9IG1fb3V0LnBoaShtX291dC5pbnRQdHIsIGxvb3BCb3VuZCk7Cisg
ICAgICAgIExWYWx1ZSBwcmV2aW91c0luZGV4ID0gbV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIGxv
b3BCb3VuZCk7CiAgICAgICAgIExWYWx1ZSBjdXJyZW50SW5kZXggPSBtX291dC5zdWIocHJldmlv
dXNJbmRleCwgbV9vdXQuaW50UHRyT25lKTsKICAgICAgICAgbV9vdXQuc3RvcmU2NCgKICAgICAg
ICAgICAgIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSwK
QEAgLTU2MjAsNyArNTYyMCw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0LmJyYW5jaChtX291
dC5ub3ROdWxsKGxlbmd0aEFzUHRyKSwgdW5zdXJlKG1haW5Mb29wKSwgdW5zdXJlKGNvbnRpbnVh
dGlvbikpOwogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8obWFpbkxvb3AsIGNvbnRp
bnVhdGlvbik7Ci0gICAgICAgIHByZXZpb3VzSW5kZXggPSBtX291dC5waGkobV9vdXQuaW50UHRy
LCBsb29wQm91bmQpOworICAgICAgICBwcmV2aW91c0luZGV4ID0gbV9vdXQucGhpKHBvaW50ZXJU
eXBlKCksIGxvb3BCb3VuZCk7CiAgICAgICAgIGN1cnJlbnRJbmRleCA9IG1fb3V0LnN1YihwcmV2
aW91c0luZGV4LCBtX291dC5pbnRQdHJPbmUpOwogICAgICAgICBMVmFsdWUgdmFsdWUgPSBtX291
dC5sb2FkNjQoCiAgICAgICAgICAgICBtX291dC5iYXNlSW5kZXgoCkBAIC01NzAyLDcgKzU3MDIs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBt
X291dC5hcHBlbmRUbyhzd2l0Y2hPbkludHMsIGxhc3ROZXh0KTsKLSAgICAgICAgICAgIGJ1aWxk
U3dpdGNoKGRhdGEsIG1fb3V0LmludDMyLCBtX291dC5waGkobV9vdXQuaW50MzIsIGludFZhbHVl
cykpOworICAgICAgICAgICAgYnVpbGRTd2l0Y2goZGF0YSwgSW50MzIsIG1fb3V0LnBoaShJbnQz
MiwgaW50VmFsdWVzKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAg
CkBAIC01NzY4LDExICs1NzY4LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIG1fb3V0LmFwcGVuZFRvKG5lZWRSZXNvbHV0aW9uLCByZXNvbHZlZCk7CiAgICAgICAgICAg
ICB2YWx1ZXMuYXBwZW5kKG1fb3V0LmFuY2hvcigKLSAgICAgICAgICAgICAgICB2bUNhbGwobV9v
dXQuaW50UHRyLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uUmVzb2x2ZVJvcGUpLCBtX2NhbGxG
cmFtZSwgc3RyaW5nVmFsdWUpKSk7CisgICAgICAgICAgICAgICAgdm1DYWxsKHBvaW50ZXJUeXBl
KCksIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25SZXNvbHZlUm9wZSksIG1fY2FsbEZyYW1lLCBz
dHJpbmdWYWx1ZSkpKTsKICAgICAgICAgICAgIG1fb3V0Lmp1bXAocmVzb2x2ZWQpOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhyZXNvbHZlZCwgaXM4Qml0KTsKLSAg
ICAgICAgICAgIExWYWx1ZSB2YWx1ZSA9IG1fb3V0LnBoaShtX291dC5pbnRQdHIsIHZhbHVlcyk7
CisgICAgICAgICAgICBMVmFsdWUgdmFsdWUgPSBtX291dC5waGkocG9pbnRlclR5cGUoKSwgdmFs
dWVzKTsKICAgICAgICAgICAgIExWYWx1ZSBjaGFyYWN0ZXJEYXRhID0gbV9vdXQubG9hZFB0cih2
YWx1ZSwgbV9oZWFwcy5TdHJpbmdJbXBsX2RhdGEpOwogICAgICAgICAgICAgbV9vdXQuYnJhbmNo
KAogICAgICAgICAgICAgICAgIG1fb3V0LnRlc3ROb25aZXJvMzIoCkBAIC01NzkwLDcgKzU3OTAs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3RO
ZXh0KTsKLSAgICAgICAgICAgIGJ1aWxkU3dpdGNoKGRhdGEsIG1fb3V0LmludDMyLCBtX291dC5w
aGkobV9vdXQuaW50MzIsIGNoYXJhY3RlcnMpKTsKKyAgICAgICAgICAgIGJ1aWxkU3dpdGNoKGRh
dGEsIEludDMyLCBtX291dC5waGkoSW50MzIsIGNoYXJhY3RlcnMpKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogICAgICAgICAKQEAgLTU4NzEsNyArNTg3MSw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCi0g
ICAgICAgICAgICBidWlsZFN3aXRjaChtX25vZGUtPnN3aXRjaERhdGEoKSwgbV9vdXQuaW50UHRy
LCBjZWxsKTsKKyAgICAgICAgICAgIGJ1aWxkU3dpdGNoKG1fbm9kZS0+c3dpdGNoRGF0YSgpLCBw
b2ludGVyVHlwZSgpLCBjZWxsKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfSB9CiAg
ICAgICAgIApAQCAtNTk4NCw3ICs1OTg0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgbV9vdXQuanVt
cChjb250aW51YXRpb24pOwogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGlu
dWF0aW9uLCBsYXN0TmV4dCk7Ci0gICAgICAgIHNldEJvb2xlYW4obV9vdXQucGhpKG1fb3V0LmJv
b2xlYW4sIG5vdENlbGxSZXN1bHQsIGNlbGxSZXN1bHQpKTsKKyAgICAgICAgc2V0Qm9vbGVhbiht
X291dC5waGkoSW50MzIsIG5vdENlbGxSZXN1bHQsIGNlbGxSZXN1bHQpKTsKICAgICB9CiAKICAg
ICB2b2lkIGNvbXBpbGVJc0pTQXJyYXkoKQpAQCAtNjAwMyw3ICs2MDAzLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogCiAgICAgICAgIG1fb3V0LmFwcGVu
ZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwotICAgICAgICBzZXRCb29sZWFuKG1fb3V0LnBo
aShtX291dC5ib29sZWFuLCBub3RDZWxsUmVzdWx0LCBjZWxsUmVzdWx0KSk7CisgICAgICAgIHNl
dEJvb2xlYW4obV9vdXQucGhpKEludDMyLCBub3RDZWxsUmVzdWx0LCBjZWxsUmVzdWx0KSk7CiAg
ICAgfQogCiAgICAgdm9pZCBjb21waWxlSXNPYmplY3QoKQpAQCAtNjAyMiw3ICs2MDIyLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogCiAgICAgICAgIG1f
b3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwotICAgICAgICBzZXRCb29sZWFu
KG1fb3V0LnBoaShtX291dC5ib29sZWFuLCBub3RDZWxsUmVzdWx0LCBjZWxsUmVzdWx0KSk7Cisg
ICAgICAgIHNldEJvb2xlYW4obV9vdXQucGhpKEludDMyLCBub3RDZWxsUmVzdWx0LCBjZWxsUmVz
dWx0KSk7CiAgICAgfQogCiAgICAgdm9pZCBjb21waWxlSXNPYmplY3RPck51bGwoKQpAQCAtNjA3
Niw3ICs2MDc2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRv
KGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwogICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQu
cGhpKAotICAgICAgICAgICAgbV9vdXQuYm9vbGVhbiwKKyAgICAgICAgICAgIEludDMyLAogICAg
ICAgICAgICAgaXNGdW5jdGlvblJlc3VsdCwgbm90T2JqZWN0UmVzdWx0LCBvYmplY3RSZXN1bHQs
IHNsb3dSZXN1bHQsIG5vdENlbGxSZXN1bHQpOwogICAgICAgICBzZXRCb29sZWFuKHJlc3VsdCk7
CiAgICAgfQpAQCAtNjEyMSw3ICs2MTIxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAg
IG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwogICAgICAgICBMVmFsdWUg
cmVzdWx0ID0gbV9vdXQucGhpKAotICAgICAgICAgICAgbV9vdXQuYm9vbGVhbiwgbm90Q2VsbFJl
c3VsdCwgZnVuY3Rpb25SZXN1bHQsIG9iamVjdFJlc3VsdCwgc2xvd1Jlc3VsdCk7CisgICAgICAg
ICAgICBJbnQzMiwgbm90Q2VsbFJlc3VsdCwgZnVuY3Rpb25SZXN1bHQsIG9iamVjdFJlc3VsdCwg
c2xvd1Jlc3VsdCk7CiAgICAgICAgIHNldEJvb2xlYW4ocmVzdWx0KTsKICAgICB9CiAKQEAgLTYx
NDEsNyArNjE0MSw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9u
KTsKIAogICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKLSAg
ICAgICAgc2V0Qm9vbGVhbihtX291dC5waGkobV9vdXQuYm9vbGVhbiwgbm90Q2VsbFJlc3VsdCwg
Y2VsbFJlc3VsdCkpOworICAgICAgICBzZXRCb29sZWFuKG1fb3V0LnBoaShJbnQzMiwgbm90Q2Vs
bFJlc3VsdCwgY2VsbFJlc3VsdCkpOwogICAgIH0KIAogICAgIHZvaWQgY29tcGlsZUlzVHlwZWRB
cnJheVZpZXcoKQpAQCAtNjE1OSw3ICs2MTU5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgbV9vdXQu
anVtcChjb250aW51YXRpb24pOwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlv
biwgbGFzdE5leHQpOwotICAgICAgICBzZXRCb29sZWFuKG1fb3V0LnBoaShtX291dC5ib29sZWFu
LCBub3RDZWxsUmVzdWx0LCBjZWxsUmVzdWx0KSk7CisgICAgICAgIHNldEJvb2xlYW4obV9vdXQu
cGhpKEludDMyLCBub3RDZWxsUmVzdWx0LCBjZWxsUmVzdWx0KSk7CiAgICAgfQogCiAgICAgdm9p
ZCBjb21waWxlVHlwZU9mKCkKQEAgLTYxODAsNyArNjE4MCw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICB9KTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwg
bGFzdE5leHQpOwotICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShtX291dC5pbnQ2NCwgcmVz
dWx0cykpOworICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShJbnQ2NCwgcmVzdWx0cykpOwog
ICAgIH0KICAgICAKICAgICB2b2lkIGNvbXBpbGVJbigpCkBAIC02MjYwLDcgKzYyNjAsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgfQogICAgICAgICB9IAogCi0gICAgICAgIHNldEpTVmFsdWUo
dm1DYWxsKG1fb3V0LmludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uR2VuZXJpY0luKSwg
bV9jYWxsRnJhbWUsIGNlbGwsIGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSkpKTsKKyAgICAg
ICAgc2V0SlNWYWx1ZSh2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25HZW5l
cmljSW4pLCBtX2NhbGxGcmFtZSwgY2VsbCwgbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKSkp
OwogICAgIH0KIAogICAgIHZvaWQgY29tcGlsZU92ZXJyaWRlc0hhc0luc3RhbmNlKCkKQEAgLTYy
ODcsNyArNjI4Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9u
KTsKIAogICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKLSAg
ICAgICAgc2V0Qm9vbGVhbihtX291dC5waGkobV9vdXQuYm9vbGVhbiwgaW1wbGVtZW50c0RlZmF1
bHRIYXNJbnN0YW5jZVJlc3VsdCwgbm90RGVmYXVsdEhhc0luc3RhbmNlUmVzdWx0KSk7CisgICAg
ICAgIHNldEJvb2xlYW4obV9vdXQucGhpKEludDMyLCBpbXBsZW1lbnRzRGVmYXVsdEhhc0luc3Rh
bmNlUmVzdWx0LCBub3REZWZhdWx0SGFzSW5zdGFuY2VSZXN1bHQpKTsKICAgICB9CiAKICAgICB2
b2lkIGNvbXBpbGVDaGVja1R5cGVJbmZvRmxhZ3MoKQpAQCAtNjMzNCw3ICs2MzM0LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgbV9vdXQuanVtcChsb29wKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0
LmFwcGVuZFRvKGxvb3AsIGxvYWRQcm90b3R5cGVEaXJlY3QpOwotICAgICAgICBMVmFsdWUgdmFs
dWUgPSBtX291dC5waGkobV9vdXQuaW50NjQsIG9yaWdpbmFsVmFsdWUpOworICAgICAgICBMVmFs
dWUgdmFsdWUgPSBtX291dC5waGkoSW50NjQsIG9yaWdpbmFsVmFsdWUpOwogICAgICAgICBMVmFs
dWUgdHlwZSA9IG1fb3V0LmxvYWQ4WmVyb0V4dDMyKHZhbHVlLCBtX2hlYXBzLkpTQ2VsbF90eXBl
SW5mb1R5cGUpOwogICAgICAgICBtX291dC5icmFuY2goCiAgICAgICAgICAgICBtX291dC5ub3RF
cXVhbCh0eXBlLCBtX291dC5jb25zdEludDMyKFByb3h5T2JqZWN0VHlwZSkpLApAQCAtNjM1OCwx
MiArNjM1OCwxMiBAQCBwcml2YXRlOgogICAgICAgICAvLyBjYW4ganVzdCBjb250aW51ZSBvZmYg
ZnJvbSB3aGVyZXZlciB3ZSBiYWlsZWQgZnJvbSB0aGUKICAgICAgICAgLy8gbG9vcC4KICAgICAg
ICAgVmFsdWVGcm9tQmxvY2sgZGVmYXVsdEhhc0luc3RhbmNlUmVzdWx0ID0gbV9vdXQuYW5jaG9y
KAotICAgICAgICAgICAgdm1DYWxsKG1fb3V0LmJvb2xlYW4sIG1fb3V0Lm9wZXJhdGlvbihvcGVy
YXRpb25EZWZhdWx0SGFzSW5zdGFuY2UpLCBtX2NhbGxGcmFtZSwgdmFsdWUsIHByb3RvdHlwZSkp
OworICAgICAgICAgICAgdm1DYWxsKEludDMyLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uRGVm
YXVsdEhhc0luc3RhbmNlKSwgbV9jYWxsRnJhbWUsIHZhbHVlLCBwcm90b3R5cGUpKTsKICAgICAg
ICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBw
ZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CiAgICAgICAgIHNldEJvb2xlYW4oCi0gICAg
ICAgICAgICBtX291dC5waGkobV9vdXQuYm9vbGVhbiwgbm90Q2VsbFJlc3VsdCwgaXNJbnN0YW5j
ZVJlc3VsdCwgbm90SW5zdGFuY2VSZXN1bHQsIGRlZmF1bHRIYXNJbnN0YW5jZVJlc3VsdCkpOwor
ICAgICAgICAgICAgbV9vdXQucGhpKEludDMyLCBub3RDZWxsUmVzdWx0LCBpc0luc3RhbmNlUmVz
dWx0LCBub3RJbnN0YW5jZVJlc3VsdCwgZGVmYXVsdEhhc0luc3RhbmNlUmVzdWx0KSk7CiAgICAg
fQogCiAgICAgdm9pZCBjb21waWxlSW5zdGFuY2VPZkN1c3RvbSgpCkBAIC02MzcyLDcgKzYzNzIs
NyBAQCBwcml2YXRlOgogICAgICAgICBMVmFsdWUgY29uc3RydWN0b3IgPSBsb3dDZWxsKG1fbm9k
ZS0+Y2hpbGQyKCkpOwogICAgICAgICBMVmFsdWUgaGFzSW5zdGFuY2UgPSBsb3dKU1ZhbHVlKG1f
bm9kZS0+Y2hpbGQzKCkpOwogCi0gICAgICAgIHNldEJvb2xlYW4obV9vdXQubG9naWNhbE5vdCht
X291dC5lcXVhbChtX291dC5jb25zdEludDMyKDApLCB2bUNhbGwobV9vdXQuaW50MzIsIG1fb3V0
Lm9wZXJhdGlvbihvcGVyYXRpb25JbnN0YW5jZU9mQ3VzdG9tKSwgbV9jYWxsRnJhbWUsIHZhbHVl
LCBjb25zdHJ1Y3RvciwgaGFzSW5zdGFuY2UpKSkpOworICAgICAgICBzZXRCb29sZWFuKG1fb3V0
LmxvZ2ljYWxOb3QobV9vdXQuZXF1YWwobV9vdXQuY29uc3RJbnQzMigwKSwgdm1DYWxsKEludDMy
LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uSW5zdGFuY2VPZkN1c3RvbSksIG1fY2FsbEZyYW1l
LCB2YWx1ZSwgY29uc3RydWN0b3IsIGhhc0luc3RhbmNlKSkpKTsKICAgICB9CiAgICAgCiAgICAg
dm9pZCBjb21waWxlQ291bnRFeGVjdXRpb24oKQpAQCAtNjQxOSwxMSArNjQxOSwxMSBAQCBwcml2
YXRlOgogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7
CiAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKG1f
b3V0LmVxdWFsKAogICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5j
b2RlKGpzQm9vbGVhbih0cnVlKSkpLCAKLSAgICAgICAgICAgICAgICB2bUNhbGwobV9vdXQuaW50
NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHkpLCBtX2NhbGxG
cmFtZSwgYmFzZSwgaW5kZXgpKSk7CisgICAgICAgICAgICAgICAgdm1DYWxsKEludDY0LCBtX291
dC5vcGVyYXRpb24ob3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5KSwgbV9jYWxsRnJhbWUsIGJh
c2UsIGluZGV4KSkpOwogICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogCiAg
ICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKLSAgICAg
ICAgICAgIHNldEJvb2xlYW4obV9vdXQucGhpKG1fb3V0LmJvb2xlYW4sIGNoZWNrSG9sZVJlc3Vs
dCwgc2xvd1Jlc3VsdCkpOworICAgICAgICAgICAgc2V0Qm9vbGVhbihtX291dC5waGkoSW50MzIs
IGNoZWNrSG9sZVJlc3VsdCwgc2xvd1Jlc3VsdCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgQXJyYXk6OkRvdWJsZTogewpAQCAtNjQ1NCwxMSArNjQ1NCwx
MSBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRp
bnVhdGlvbik7CiAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQu
YW5jaG9yKG1fb3V0LmVxdWFsKAogICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50NjQoSlNW
YWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSkpLCAKLSAgICAgICAgICAgICAgICB2bUNhbGwo
bV9vdXQuaW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHkp
LCBtX2NhbGxGcmFtZSwgYmFzZSwgaW5kZXgpKSk7CisgICAgICAgICAgICAgICAgdm1DYWxsKElu
dDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5KSwgbV9jYWxs
RnJhbWUsIGJhc2UsIGluZGV4KSkpOwogICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRp
b24pOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRp
b24sIGxhc3ROZXh0KTsKLSAgICAgICAgICAgIHNldEJvb2xlYW4obV9vdXQucGhpKG1fb3V0LmJv
b2xlYW4sIGNoZWNrSG9sZVJlc3VsdCwgc2xvd1Jlc3VsdCkpOworICAgICAgICAgICAgc2V0Qm9v
bGVhbihtX291dC5waGkoSW50MzIsIGNoZWNrSG9sZVJlc3VsdCwgc2xvd1Jlc3VsdCkpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTY0NzIsNyArNjQ3
Miw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0pTVmFsdWUo
bV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIExWYWx1ZSBwcm9wZXJ0eSA9IGxvd0NlbGwobV9u
b2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgIHNldEpTVmFsdWUodm1DYWxsKG1fb3V0LmludDY0LCBt
X291dC5vcGVyYXRpb24ob3BlcmF0aW9uSGFzR2VuZXJpY1Byb3BlcnR5KSwgbV9jYWxsRnJhbWUs
IGJhc2UsIHByb3BlcnR5KSk7CisgICAgICAgIHNldEpTVmFsdWUodm1DYWxsKEludDY0LCBtX291
dC5vcGVyYXRpb24ob3BlcmF0aW9uSGFzR2VuZXJpY1Byb3BlcnR5KSwgbV9jYWxsRnJhbWUsIGJh
c2UsIHByb3BlcnR5KSk7CiAgICAgfQogCiAgICAgdm9pZCBjb21waWxlSGFzU3RydWN0dXJlUHJv
cGVydHkoKQpAQCAtNjQ5OCwxMSArNjQ5OCwxMSBAQCBwcml2YXRlOgogICAgICAgICBWYWx1ZUZy
b21CbG9jayB3cm9uZ1N0cnVjdHVyZVJlc3VsdCA9IG1fb3V0LmFuY2hvcigKICAgICAgICAgICAg
IG1fb3V0LmVxdWFsKAogICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6
ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSkpLCAKLSAgICAgICAgICAgICAgICB2bUNhbGwobV9vdXQu
aW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25IYXNHZW5lcmljUHJvcGVydHkpLCBtX2Nh
bGxGcmFtZSwgYmFzZSwgcHJvcGVydHkpKSk7CisgICAgICAgICAgICAgICAgdm1DYWxsKEludDY0
LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uSGFzR2VuZXJpY1Byb3BlcnR5KSwgbV9jYWxsRnJh
bWUsIGJhc2UsIHByb3BlcnR5KSkpOwogICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7
CiAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7Ci0gICAg
ICAgIHNldEJvb2xlYW4obV9vdXQucGhpKG1fb3V0LmJvb2xlYW4sIGNvcnJlY3RTdHJ1Y3R1cmVS
ZXN1bHQsIHdyb25nU3RydWN0dXJlUmVzdWx0KSk7CisgICAgICAgIHNldEJvb2xlYW4obV9vdXQu
cGhpKEludDMyLCBjb3JyZWN0U3RydWN0dXJlUmVzdWx0LCB3cm9uZ1N0cnVjdHVyZVJlc3VsdCkp
OwogICAgIH0KIAogICAgIHZvaWQgY29tcGlsZUdldERpcmVjdFBuYW1lKCkKQEAgLTY1MzAsNyAr
NjUzMCw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGlubGluZUxvYWQsIG91
dE9mTGluZUxvYWQpOwogICAgICAgICBWYWx1ZUZyb21CbG9jayBpbmxpbmVSZXN1bHQgPSBtX291
dC5hbmNob3IoCiAgICAgICAgICAgICBtX291dC5sb2FkNjQobV9vdXQuYmFzZUluZGV4KG1faGVh
cHMucHJvcGVydGllcy5hdEFueU51bWJlcigpLCAKLSAgICAgICAgICAgICAgICBiYXNlLCBtX291
dC56ZXJvRXh0KGluZGV4LCBtX291dC5pbnQ2NCksIFNjYWxlRWlnaHQsIEpTT2JqZWN0OjpvZmZz
ZXRPZklubGluZVN0b3JhZ2UoKSkpKTsKKyAgICAgICAgICAgICAgICBiYXNlLCBtX291dC56ZXJv
RXh0KGluZGV4LCBJbnQ2NCksIFNjYWxlRWlnaHQsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0
b3JhZ2UoKSkpKTsKICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogCiAgICAgICAg
IG1fb3V0LmFwcGVuZFRvKG91dE9mTGluZUxvYWQsIHNsb3dDYXNlKTsKQEAgLTY1NDQsMTEgKzY1
NDQsMTEgQEAgcHJpdmF0ZToKIAogICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93Q2FzZSwgY29u
dGludWF0aW9uKTsKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd0Nhc2VSZXN1bHQgPSBtX291
dC5hbmNob3IoCi0gICAgICAgICAgICB2bUNhbGwobV9vdXQuaW50NjQsIG1fb3V0Lm9wZXJhdGlv
bihvcGVyYXRpb25HZXRCeVZhbCksIG1fY2FsbEZyYW1lLCBiYXNlLCBwcm9wZXJ0eSkpOworICAg
ICAgICAgICAgdm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlWYWwp
LCBtX2NhbGxGcmFtZSwgYmFzZSwgcHJvcGVydHkpKTsKICAgICAgICAgbV9vdXQuanVtcChjb250
aW51YXRpb24pOwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5l
eHQpOwotICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShtX291dC5pbnQ2NCwgaW5saW5lUmVz
dWx0LCBvdXRPZkxpbmVSZXN1bHQsIHNsb3dDYXNlUmVzdWx0KSk7CisgICAgICAgIHNldEpTVmFs
dWUobV9vdXQucGhpKEludDY0LCBpbmxpbmVSZXN1bHQsIG91dE9mTGluZVJlc3VsdCwgc2xvd0Nh
c2VSZXN1bHQpKTsKICAgICB9CiAKICAgICB2b2lkIGNvbXBpbGVHZXRFbnVtZXJhYmxlTGVuZ3Ro
KCkKQEAgLTY1NjAsNyArNjU2MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21waWxlR2V0UHJv
cGVydHlFbnVtZXJhdG9yKCkKICAgICB7CiAgICAgICAgIExWYWx1ZSBiYXNlID0gbG93Q2VsbCht
X25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwobV9vdXQuaW50NjQs
IG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25HZXRQcm9wZXJ0eUVudW1lcmF0b3IpLCBtX2NhbGxG
cmFtZSwgYmFzZSkpOworICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChJbnQ2NCwgbV9vdXQub3Bl
cmF0aW9uKG9wZXJhdGlvbkdldFByb3BlcnR5RW51bWVyYXRvciksIG1fY2FsbEZyYW1lLCBiYXNl
KSk7CiAgICAgfQogCiAgICAgdm9pZCBjb21waWxlR2V0RW51bWVyYXRvclN0cnVjdHVyZVBuYW1l
KCkKQEAgLTY1ODYsNyArNjU4Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0Lmp1bXAoY29u
dGludWF0aW9uKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlv
biwgbGFzdE5leHQpOwotICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShtX291dC5pbnQ2NCwg
aW5Cb3VuZHNSZXN1bHQsIG91dE9mQm91bmRzUmVzdWx0KSk7CisgICAgICAgIHNldEpTVmFsdWUo
bV9vdXQucGhpKEludDY0LCBpbkJvdW5kc1Jlc3VsdCwgb3V0T2ZCb3VuZHNSZXN1bHQpKTsKICAg
ICB9CiAKICAgICB2b2lkIGNvbXBpbGVHZXRFbnVtZXJhdG9yR2VuZXJpY1BuYW1lKCkKQEAgLTY2
MTIsMTMgKzY2MTIsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRp
b24pOwogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0
TmV4dCk7Ci0gICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKG1fb3V0LmludDY0LCBpbkJvdW5k
c1Jlc3VsdCwgb3V0T2ZCb3VuZHNSZXN1bHQpKTsKKyAgICAgICAgc2V0SlNWYWx1ZShtX291dC5w
aGkoSW50NjQsIGluQm91bmRzUmVzdWx0LCBvdXRPZkJvdW5kc1Jlc3VsdCkpOwogICAgIH0KICAg
ICAKICAgICB2b2lkIGNvbXBpbGVUb0luZGV4U3RyaW5nKCkKICAgICB7CiAgICAgICAgIExWYWx1
ZSBpbmRleCA9IGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBzZXRKU1ZhbHVl
KHZtQ2FsbChtX291dC5pbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvblRvSW5kZXhTdHJp
bmcpLCBtX2NhbGxGcmFtZSwgaW5kZXgpKTsKKyAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoSW50
NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25Ub0luZGV4U3RyaW5nKSwgbV9jYWxsRnJhbWUs
IGluZGV4KSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgY29tcGlsZUNoZWNrU3RydWN0dXJlSW1t
ZWRpYXRlKCkKQEAgLTY3NTgsOCArNjc1OCw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7
CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgb2JqZWN0ID0gbV9vdXQucGhpKG1f
b3V0LmludFB0ciwgZmFzdE9iamVjdCwgc2xvd09iamVjdCk7Ci0gICAgICAgICAgICAgICAgYnV0
dGVyZmx5ID0gbV9vdXQucGhpKG1fb3V0LmludFB0ciwgZmFzdEJ1dHRlcmZseSwgc2xvd0J1dHRl
cmZseSk7CisgICAgICAgICAgICAgICAgb2JqZWN0ID0gbV9vdXQucGhpKHBvaW50ZXJUeXBlKCks
IGZhc3RPYmplY3QsIHNsb3dPYmplY3QpOworICAgICAgICAgICAgICAgIGJ1dHRlcmZseSA9IG1f
b3V0LnBoaShwb2ludGVyVHlwZSgpLCBmYXN0QnV0dGVyZmx5LCBzbG93QnV0dGVyZmx5KTsKIAog
ICAgICAgICAgICAgICAgIG1fb3V0LnN0b3JlMzIocHVibGljTGVuZ3RoLCBidXR0ZXJmbHksIG1f
aGVhcHMuQnV0dGVyZmx5X3B1YmxpY0xlbmd0aCk7CiAKQEAgLTY4OTQsNyArNjg5NCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIG1fb3V0LnVucmVhY2hhYmxlKCk7CiAgICAgICAgIAogICAgICAgICBt
X291dC5hcHBlbmRUbyhvdXRlckNvbnRpbnVhdGlvbiwgb3V0ZXJMYXN0TmV4dCk7Ci0gICAgICAg
IHNldEpTVmFsdWUobV9vdXQucGhpKG1fb3V0LmludFB0ciwgcmVzdWx0cykpOworICAgICAgICBz
ZXRKU1ZhbHVlKG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCByZXN1bHRzKSk7CiAgICAgfQogCiAg
ICAgdm9pZCBjb21waWxlTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uKCkKQEAgLTY5NDMsNyAr
Njk0Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKIAog
ICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKLSAgICAgICAg
TFZhbHVlIGFjdGl2YXRpb24gPSBtX291dC5waGkobV9vdXQuaW50UHRyLCBmYXN0UmVzdWx0LCBz
bG93UmVzdWx0KTsKKyAgICAgICAgTFZhbHVlIGFjdGl2YXRpb24gPSBtX291dC5waGkocG9pbnRl
clR5cGUoKSwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGRhdGEubV9wcm9wZXJ0aWVzLnNpemUoKSA9PSB0YWJsZS0+c2NvcGVTaXplKCkpOwogICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGF0YS5tX3Byb3BlcnRpZXMuc2l6ZSgpOyArK2kp
IHsKICAgICAgICAgICAgIFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yIGRlc2NyaXB0b3IgPSBk
YXRhLm1fcHJvcGVydGllc1tpXTsKQEAgLTcwNzMsNyArNzA3Myw3IEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIGNvbXBpbGVTZXRGdW5jdGlvbk5hbWUoKQogICAgIHsKLSAgICAgICAgdm1DYWxsKG1f
b3V0LnZvaWRUeXBlLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uU2V0RnVuY3Rpb25OYW1lKSwg
bV9jYWxsRnJhbWUsCisgICAgICAgIHZtQ2FsbChWb2lkLCBtX291dC5vcGVyYXRpb24ob3BlcmF0
aW9uU2V0RnVuY3Rpb25OYW1lKSwgbV9jYWxsRnJhbWUsCiAgICAgICAgICAgICBsb3dDZWxsKG1f
bm9kZS0+Y2hpbGQxKCkpLCBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpKTsKICAgICB9CiAg
ICAgCkBAIC03MzMyLDcgKzczMzIsNyBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKLSAgICAgICAg
cmV0dXJuIG1fb3V0LnBoaShtX291dC5pbnQzMiwgcmVzdWx0cyk7CisgICAgICAgIHJldHVybiBt
X291dC5waGkoSW50MzIsIHJlc3VsdHMpOwogICAgIH0KIAogICAgIHZvaWQgY2hlY2tJbmZlcnJl
ZFR5cGUoRWRnZSBlZGdlLCBMVmFsdWUgdmFsdWUsIGNvbnN0IEluZmVycmVkVHlwZTo6RGVzY3Jp
cHRvciYgdHlwZSkKQEAgLTc1MjgsOCArNzUyOCw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBt
X291dC5ub3RaZXJvMzIodmVjdG9yTGVuZ3RoKSwgdW5zdXJlKGluaXRMb29wKSwgdW5zdXJlKGlu
aXREb25lKSk7CiAgICAgICAgIAogICAgICAgICBMQmFzaWNCbG9jayBpbml0TGFzdE5leHQgPSBt
X291dC5hcHBlbmRUbyhpbml0TG9vcCwgaW5pdERvbmUpOwotICAgICAgICBMVmFsdWUgaW5kZXgg
PSBtX291dC5waGkobV9vdXQuaW50MzIsIG9yaWdpbmFsSW5kZXgpOwotICAgICAgICBMVmFsdWUg
cG9pbnRlciA9IG1fb3V0LnBoaShtX291dC5pbnRQdHIsIG9yaWdpbmFsUG9pbnRlcik7CisgICAg
ICAgIExWYWx1ZSBpbmRleCA9IG1fb3V0LnBoaShJbnQzMiwgb3JpZ2luYWxJbmRleCk7CisgICAg
ICAgIExWYWx1ZSBwb2ludGVyID0gbV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIG9yaWdpbmFsUG9p
bnRlcik7CiAgICAgICAgIAogICAgICAgICBtX291dC5zdG9yZTY0KAogICAgICAgICAgICAgbV9v
dXQuY29uc3RJbnQ2NChiaXR3aXNlX2Nhc3Q8aW50NjRfdD4oUE5hTikpLApAQCAtNzU0OCw3ICs3
NTQ4LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIGlmIChwcmV2aW91c1N0cnVjdHVyZS0+
Y291bGRIYXZlSW5kZXhpbmdIZWFkZXIoKSkgewogICAgICAgICAgICAgcmV0dXJuIHZtQ2FsbCgK
LSAgICAgICAgICAgICAgICBtX291dC5pbnRQdHIsCisgICAgICAgICAgICAgICAgcG9pbnRlclR5
cGUoKSwKICAgICAgICAgICAgICAgICBtX291dC5vcGVyYXRpb24oCiAgICAgICAgICAgICAgICAg
ICAgIG9wZXJhdGlvblJlYWxsb2NhdGVCdXR0ZXJmbHlUb0hhdmVQcm9wZXJ0eVN0b3JhZ2VXaXRo
SW5pdGlhbENhcGFjaXR5KSwKICAgICAgICAgICAgICAgICBtX2NhbGxGcmFtZSwgb2JqZWN0KTsK
QEAgLTc1NjksNyArNzU2OSw3IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBpZiAocHJl
dmlvdXMtPmNvdWxkSGF2ZUluZGV4aW5nSGVhZGVyKCkpIHsKICAgICAgICAgICAgIExWYWx1ZSBu
ZXdBbGxvY1NpemUgPSBtX291dC5jb25zdEludFB0cihuZXdTaXplKTsgICAgICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgcmV0dXJuIHZtQ2FsbChtX291dC5pbnRQdHIsIG1fb3V0Lm9wZXJh
dGlvbihvcGVyYXRpb25SZWFsbG9jYXRlQnV0dGVyZmx5VG9Hcm93UHJvcGVydHlTdG9yYWdlKSwg
bV9jYWxsRnJhbWUsIG9iamVjdCwgbmV3QWxsb2NTaXplKTsKKyAgICAgICAgICAgIHJldHVybiB2
bUNhbGwocG9pbnRlclR5cGUoKSwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvblJlYWxsb2NhdGVC
dXR0ZXJmbHlUb0dyb3dQcm9wZXJ0eVN0b3JhZ2UpLCBtX2NhbGxGcmFtZSwgb2JqZWN0LCBuZXdB
bGxvY1NpemUpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBMVmFsdWUgcmVzdWx0ID0g
YWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2VXaXRoU2l6ZUltcGwobmV3U2l6ZSk7CkBAIC03NjI3LDcg
Kzc2MjcsNyBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29u
dGludWF0aW9uLCBsYXN0TmV4dCk7CiAgICAgICAgIAotICAgICAgICByZXR1cm4gbV9vdXQucGhp
KG1fb3V0LmludFB0ciwgZmFzdEJ1dHRlcmZseSwgc2xvd0J1dHRlcmZseSk7CisgICAgICAgIHJl
dHVybiBtX291dC5waGkocG9pbnRlclR5cGUoKSwgZmFzdEJ1dHRlcmZseSwgc2xvd0J1dHRlcmZs
eSk7CiAgICAgfQogICAgIAogICAgIExWYWx1ZSBnZXRCeUlkKExWYWx1ZSBiYXNlLCBBY2Nlc3NU
eXBlIHR5cGUpCkBAIC03NzUxLDcgKzc3NTEsNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAobV9u
b2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nSWRlbnRVc2UpKSB7CiAgICAgICAgICAgICBMVmFs
dWUgbGVmdCA9IGxvd1N0cmluZ0lkZW50KG1fbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAg
TFZhbHVlIHJpZ2h0ID0gbG93U3RyaW5nSWRlbnQobV9ub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAg
ICAgICBzZXRCb29sZWFuKG1fb3V0LmNhbGxXaXRob3V0U2lkZUVmZmVjdHMobV9vdXQuYm9vbGVh
biwgc3RyaW5nSWRlbnRGdW5jdGlvbiwgbGVmdCwgcmlnaHQpKTsKKyAgICAgICAgICAgIHNldEJv
b2xlYW4obV9vdXQuY2FsbFdpdGhvdXRTaWRlRWZmZWN0cyhJbnQzMiwgc3RyaW5nSWRlbnRGdW5j
dGlvbiwgbGVmdCwgcmlnaHQpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBA
IC03NzYyLDcgKzc3NjIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgc3BlY3VsYXRlU3RyaW5n
KG1fbm9kZS0+Y2hpbGQyKCksIHJpZ2h0KTsKIAogICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9
IHZtQ2FsbCgKLSAgICAgICAgICAgICAgICBtX291dC5ib29sZWFuLCBtX291dC5vcGVyYXRpb24o
c3RyaW5nRnVuY3Rpb24pLAorICAgICAgICAgICAgICAgIEludDMyLCBtX291dC5vcGVyYXRpb24o
c3RyaW5nRnVuY3Rpb24pLAogICAgICAgICAgICAgICAgIG1fY2FsbEZyYW1lLCBsZWZ0LCByaWdo
dCk7CiAgICAgICAgICAgICBzZXRCb29sZWFuKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm47
CkBAIC03Nzc5LDE0ICs3Nzc5LDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21waWxlUmVzb2x2
ZVNjb3BlKCkKICAgICB7CiAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQgPSBtX2dyYXBo
LmlkZW50aWZpZXJzKClbbV9ub2RlLT5pZGVudGlmaWVyTnVtYmVyKCldOwotICAgICAgICBzZXRK
U1ZhbHVlKHZtQ2FsbChtX291dC5pbnRQdHIsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25SZXNv
bHZlU2NvcGUpLAorICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChwb2ludGVyVHlwZSgpLCBtX291
dC5vcGVyYXRpb24ob3BlcmF0aW9uUmVzb2x2ZVNjb3BlKSwKICAgICAgICAgICAgIG1fY2FsbEZy
YW1lLCBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX291dC5jb25zdEludFB0cih1aWQpKSk7
CiAgICAgfQogCiAgICAgdm9pZCBjb21waWxlR2V0RHluYW1pY1ZhcigpCiAgICAgewogICAgICAg
ICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gbV9ncmFwaC5pZGVudGlmaWVycygpW21fbm9kZS0+
aWRlbnRpZmllck51bWJlcigpXTsKLSAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwobV9vdXQuaW50
NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25HZXREeW5hbWljVmFyKSwKKyAgICAgICAgc2V0
SlNWYWx1ZSh2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25HZXREeW5hbWlj
VmFyKSwKICAgICAgICAgICAgIG1fY2FsbEZyYW1lLCBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkp
LCBtX291dC5jb25zdEludFB0cih1aWQpLCBtX291dC5jb25zdEludDMyKG1fbm9kZS0+Z2V0UHV0
SW5mbygpKSkpOwogICAgIH0KIApAQCAtNzgzNiw3ICs3ODM2LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBw
ZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7Ci0gICAgICAgIHNldEJvb2xlYW4obV9vdXQu
cGhpKG1fb3V0LmJvb2xlYW4sIGNlbGxSZXN1bHQsIG5vdENlbGxSZXN1bHQpKTsKKyAgICAgICAg
c2V0Qm9vbGVhbihtX291dC5waGkoSW50MzIsIGNlbGxSZXN1bHQsIG5vdENlbGxSZXN1bHQpKTsK
ICAgICB9CiAgICAgCiAgICAgdm9pZCBzcGVjdWxhdGVUcnV0aHlPYmplY3QoRWRnZSBlZGdlLCBM
VmFsdWUgY2VsbCwgU3BlY3VsYXRlZFR5cGUgZmlsdGVyKQpAQCAtNzg3NiwxMSArNzg3NiwxMSBA
QCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd1BhdGgsIGNv
bnRpbnVhdGlvbik7CiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5h
bmNob3IobV9vdXQubm90TnVsbCh2bUNhbGwoCi0gICAgICAgICAgICBtX291dC5pbnRQdHIsIG1f
b3V0Lm9wZXJhdGlvbihoZWxwZXJGdW5jdGlvbiksIG1fY2FsbEZyYW1lLCBsZWZ0LCByaWdodCkp
KTsKKyAgICAgICAgICAgIHBvaW50ZXJUeXBlKCksIG1fb3V0Lm9wZXJhdGlvbihoZWxwZXJGdW5j
dGlvbiksIG1fY2FsbEZyYW1lLCBsZWZ0LCByaWdodCkpKTsKICAgICAgICAgbV9vdXQuanVtcChj
b250aW51YXRpb24pOwogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0
aW9uLCBsYXN0TmV4dCk7Ci0gICAgICAgIHNldEJvb2xlYW4obV9vdXQucGhpKG1fb3V0LmJvb2xl
YW4sIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpKTsKKyAgICAgICAgc2V0Qm9vbGVhbihtX291dC5w
aGkoSW50MzIsIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpKTsKICAgICB9CiAKICAgICBMVmFsdWUg
c3RyaW5nc0VxdWFsKExWYWx1ZSBsZWZ0SlNTdHJpbmcsIExWYWx1ZSByaWdodEpTU3RyaW5nKQpA
QCAtNzk0Niw3ICs3OTQ2LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBtX291dC5hcHBlbmRUbyhs
b29wLCBieXRlc0VxdWFsKTsKIAotICAgICAgICBMVmFsdWUgaW5kZXhBdExvb3BUb3AgPSBtX291
dC5waGkobV9vdXQuaW50MzIsIGluZGV4QXRTdGFydCk7CisgICAgICAgIExWYWx1ZSBpbmRleEF0
TG9vcFRvcCA9IG1fb3V0LnBoaShJbnQzMiwgaW5kZXhBdFN0YXJ0KTsKICAgICAgICAgTFZhbHVl
IGluZGV4SW5Mb29wID0gbV9vdXQuc3ViKGluZGV4QXRMb29wVG9wLCBtX291dC5pbnQzMk9uZSk7
CiAKICAgICAgICAgTFZhbHVlIGxlZnRCeXRlID0gbV9vdXQubG9hZDhaZXJvRXh0MzIoCkBAIC03
OTc1LDEzICs3OTc1LDEzIEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dD
YXNlLCBjb250aW51YXRpb24pOwogCiAgICAgICAgIExWYWx1ZSBzbG93UmVzdWx0VmFsdWUgPSB2
bUNhbGwoCi0gICAgICAgICAgICBtX291dC5pbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlv
bkNvbXBhcmVTdHJpbmdFcSksIG1fY2FsbEZyYW1lLAorICAgICAgICAgICAgSW50NjQsIG1fb3V0
Lm9wZXJhdGlvbihvcGVyYXRpb25Db21wYXJlU3RyaW5nRXEpLCBtX2NhbGxGcmFtZSwKICAgICAg
ICAgICAgIGxlZnRKU1N0cmluZywgcmlnaHRKU1N0cmluZyk7CiAgICAgICAgIFZhbHVlRnJvbUJs
b2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3IodW5ib3hCb29sZWFuKHNsb3dSZXN1bHRWYWx1
ZSkpOwogICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAKICAgICAgICAgbV9vdXQu
YXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7Ci0gICAgICAgIHJldHVybiBtX291dC5w
aGkobV9vdXQuYm9vbGVhbiwgdHJ1ZVJlc3VsdCwgZmFsc2VSZXN1bHQsIHNsb3dSZXN1bHQpOwor
ICAgICAgICByZXR1cm4gbV9vdXQucGhpKEludDMyLCB0cnVlUmVzdWx0LCBmYWxzZVJlc3VsdCwg
c2xvd1Jlc3VsdCk7CiAgICAgfQogCiAgICAgZW51bSBTY3JhdGNoRlBSVXNhZ2UgewpAQCAtODI2
Nyw3ICs4MjY3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24p
OwogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4
dCk7Ci0gICAgICAgIExWYWx1ZSBhbGxvY2F0b3IgPSBtX291dC5waGkobV9vdXQuaW50UHRyLCBz
bWFsbEFsbG9jYXRvciwgbGFyZ2VBbGxvY2F0b3IpOworICAgICAgICBMVmFsdWUgYWxsb2NhdG9y
ID0gbV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIHNtYWxsQWxsb2NhdG9yLCBsYXJnZUFsbG9jYXRv
cik7CiAgICAgICAgIAogICAgICAgICByZXR1cm4gYWxsb2NhdGVPYmplY3QoYWxsb2NhdG9yLCBz
dHJ1Y3R1cmUsIGJ1dHRlcmZseSwgc2xvd1BhdGgpOwogICAgIH0KQEAgLTgzMjUsNyArODMyNSw3
IEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAg
CiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwotICAgICAg
ICByZXR1cm4gbV9vdXQucGhpKG1fb3V0LmludFB0ciwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCk7
CisgICAgICAgIHJldHVybiBtX291dC5waGkocG9pbnRlclR5cGUoKSwgZmFzdFJlc3VsdCwgc2xv
d1Jlc3VsdCk7CiAgICAgfQogICAgIAogICAgIHN0cnVjdCBBcnJheVZhbHVlcyB7CkBAIC04NDA5
LDggKzg0MDksOCBAQCBwcml2YXRlOgogICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRp
b24sIGxhc3ROZXh0KTsKICAgICAgICAgCiAgICAgICAgIHJldHVybiBBcnJheVZhbHVlcygKLSAg
ICAgICAgICAgIG1fb3V0LnBoaShtX291dC5pbnRQdHIsIGZhc3RBcnJheSwgc2xvd0FycmF5KSwK
LSAgICAgICAgICAgIG1fb3V0LnBoaShtX291dC5pbnRQdHIsIGZhc3RCdXR0ZXJmbHksIHNsb3dC
dXR0ZXJmbHkpKTsKKyAgICAgICAgICAgIG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBmYXN0QXJy
YXksIHNsb3dBcnJheSksCisgICAgICAgICAgICBtX291dC5waGkocG9pbnRlclR5cGUoKSwgZmFz
dEJ1dHRlcmZseSwgc2xvd0J1dHRlcmZseSkpOwogICAgIH0KICAgICAKICAgICBMVmFsdWUgZW5z
dXJlU2hhZG93Q2hpY2tlblBhY2tldCgpCkBAIC04NTg0LDcgKzg1ODQsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKLSAgICAgICAg
ICAgIHJldHVybiBtX291dC5waGkobV9vdXQuYm9vbGVhbiwgcmVzdWx0cyk7CisgICAgICAgICAg
ICByZXR1cm4gbV9vdXQucGhpKEludDMyLCByZXN1bHRzKTsKICAgICAgICAgfQogICAgICAgICBk
ZWZhdWx0OgogICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG1fbm9kZSwgIkJhZCB1c2Ug
a2luZCIpOwpAQCAtODY3OSw3ICs4Njc5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAg
IG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwogICAgICAgICAKLSAgICAg
ICAgcmV0dXJuIG1fb3V0LnBoaShtX291dC5ib29sZWFuLCByZXN1bHRzKTsKKyAgICAgICAgcmV0
dXJuIG1fb3V0LnBoaShJbnQzMiwgcmVzdWx0cyk7CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEZ1bmN0aW9uVHlwZT4KQEAgLTg3MTUsNyArODcxNSw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgaW5uZXJMYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRv
KG91dE9mQm91bmRzQ2FzZSwgaG9sZUNhc2UpOwogICAgICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICB2bUNhbGwoCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LnZvaWRUeXBlLCBt
X291dC5vcGVyYXRpb24oc2xvd1BhdGhGdW5jdGlvbiksCisgICAgICAgICAgICAgICAgICAgIFZv
aWQsIG1fb3V0Lm9wZXJhdGlvbihzbG93UGF0aEZ1bmN0aW9uKSwKICAgICAgICAgICAgICAgICAg
ICAgbV9jYWxsRnJhbWUsIGJhc2UsIGluZGV4LCB2YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKQEAgLTg3MzQsMTYg
Kzg3MzQsMTYgQEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGJ1aWxkU3dpdGNoKFN3aXRjaERh
dGEqIGRhdGEsIExUeXBlIHR5cGUsIExWYWx1ZSBzd2l0Y2hWYWx1ZSkKICAgICB7Ci0gICAgICAg
IEFTU0VSVCh0eXBlID09IG1fb3V0LmludFB0ciB8fCB0eXBlID09IG1fb3V0LmludDMyKTsKKyAg
ICAgICAgQVNTRVJUKHR5cGUgPT0gcG9pbnRlclR5cGUoKSB8fCB0eXBlID09IEludDMyKTsKIAog
ICAgICAgICBWZWN0b3I8U3dpdGNoQ2FzZT4gY2FzZXM7CiAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBkYXRhLT5jYXNlcy5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgU3dpdGNo
Q2FzZSBuZXdDYXNlOwogCi0gICAgICAgICAgICBpZiAodHlwZSA9PSBtX291dC5pbnRQdHIpIHsK
KyAgICAgICAgICAgIGlmICh0eXBlID09IHBvaW50ZXJUeXBlKCkpIHsKICAgICAgICAgICAgICAg
ICBuZXdDYXNlID0gU3dpdGNoQ2FzZShtX291dC5jb25zdEludFB0cihkYXRhLT5jYXNlc1tpXS52
YWx1ZS5zd2l0Y2hMb29rdXBWYWx1ZShkYXRhLT5raW5kKSksCiAgICAgICAgICAgICAgICAgICAg
IGxvd0Jsb2NrKGRhdGEtPmNhc2VzW2ldLnRhcmdldC5ibG9jayksIFdlaWdodChkYXRhLT5jYXNl
c1tpXS50YXJnZXQuY291bnQpKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBtX291
dC5pbnQzMikgeworICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09IEludDMyKSB7CiAgICAg
ICAgICAgICAgICAgbmV3Q2FzZSA9IFN3aXRjaENhc2UobV9vdXQuY29uc3RJbnQzMihkYXRhLT5j
YXNlc1tpXS52YWx1ZS5zd2l0Y2hMb29rdXBWYWx1ZShkYXRhLT5raW5kKSksCiAgICAgICAgICAg
ICAgICAgICAgIGxvd0Jsb2NrKGRhdGEtPmNhc2VzW2ldLnRhcmdldC5ibG9jayksIFdlaWdodChk
YXRhLT5jYXNlc1tpXS50YXJnZXQuY291bnQpKTsKICAgICAgICAgICAgIH0gZWxzZQpAQCAtODk5
MSw3ICs4OTkxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0NDM2OQogICAgICAgICAKICAgICAgICAgTFZhbHVlIGJyYW5j
aE9mZnNldCA9IHZtQ2FsbCgKLSAgICAgICAgICAgIG1fb3V0LmludDMyLCBtX291dC5vcGVyYXRp
b24ob3BlcmF0aW9uU3dpdGNoU3RyaW5nQW5kR2V0QnJhbmNoT2Zmc2V0KSwKKyAgICAgICAgICAg
IEludDMyLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uU3dpdGNoU3RyaW5nQW5kR2V0QnJhbmNo
T2Zmc2V0KSwKICAgICAgICAgICAgIG1fY2FsbEZyYW1lLCBtX291dC5jb25zdEludFB0cihkYXRh
LT5zd2l0Y2hUYWJsZUluZGV4KSwgc3RyaW5nKTsKICAgICAgICAgCiAgICAgICAgIFN0cmluZ0p1
bXBUYWJsZSYgdGFibGUgPSBjb2RlQmxvY2soKS0+c3RyaW5nU3dpdGNoSnVtcFRhYmxlKGRhdGEt
PnN3aXRjaFRhYmxlSW5kZXgpOwpAQCAtOTIxNiwxMSArOTIxNiwxMSBAQCBwcml2YXRlOgogICAg
ICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgIAogICAgICAgICBtX291dC5h
cHBlbmRUbyhzbG93UGF0aCwgY29udGludWF0aW9uKTsKLSAgICAgICAgcmVzdWx0cy5hcHBlbmQo
bV9vdXQuYW5jaG9yKG1fb3V0LmNhbGwobV9vdXQuaW50MzIsIG1fb3V0Lm9wZXJhdGlvbihvcGVy
YXRpb25Ub0ludDMyKSwgZG91YmxlVmFsdWUpKSk7CisgICAgICAgIHJlc3VsdHMuYXBwZW5kKG1f
b3V0LmFuY2hvcihtX291dC5jYWxsKEludDMyLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uVG9J
bnQzMiksIGRvdWJsZVZhbHVlKSkpOwogICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7
CiAgICAgICAgIAogICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0
KTsKLSAgICAgICAgcmV0dXJuIG1fb3V0LnBoaShtX291dC5pbnQzMiwgcmVzdWx0cyk7CisgICAg
ICAgIHJldHVybiBtX291dC5waGkoSW50MzIsIHJlc3VsdHMpOwogICAgIH0KICAgICAKICAgICBM
VmFsdWUgZG91YmxlVG9JbnQzMihMVmFsdWUgZG91YmxlVmFsdWUpCkBAIC05MjQ1LDExICs5MjQ1
LDExIEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9
IG1fb3V0LmFwcGVuZFRvKHNsb3dQYXRoLCBjb250aW51YXRpb24pOwogICAgICAgICBWYWx1ZUZy
b21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKAotICAgICAgICAgICAgbV9vdXQuY2Fs
bChtX291dC5pbnQzMiwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvblRvSW50MzIpLCBkb3VibGVW
YWx1ZSkpOworICAgICAgICAgICAgbV9vdXQuY2FsbChJbnQzMiwgbV9vdXQub3BlcmF0aW9uKG9w
ZXJhdGlvblRvSW50MzIpLCBkb3VibGVWYWx1ZSkpOwogICAgICAgICBtX291dC5qdW1wKGNvbnRp
bnVhdGlvbik7CiAgICAgICAgIAogICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24s
IGxhc3ROZXh0KTsKLSAgICAgICAgcmV0dXJuIG1fb3V0LnBoaShtX291dC5pbnQzMiwgZmFzdFJl
c3VsdCwgc2xvd1Jlc3VsdCk7CisgICAgICAgIHJldHVybiBtX291dC5waGkoSW50MzIsIGZhc3RS
ZXN1bHQsIHNsb3dSZXN1bHQpOwogICAgIH0KIAogICAgIC8vIFRoaXMgaXMgYSBtZWNoYW5pc20g
Zm9yIGNyZWF0aW5nIGEgY29kZSBnZW5lcmF0b3IgdGhhdCBmaWxscyBpbiBhIGdhcCBpbiB0aGUg
Y29kZSB1c2luZyBvdXIKQEAgLTk3NzEsNyArOTc3MSw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1f
b3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRv
KGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwotICAgICAgICByZXR1cm4gbV9vdXQucGhpKG1fb3V0
LmludDY0LCByZXN1bHRzKTsKKyAgICAgICAgcmV0dXJuIG1fb3V0LnBoaShJbnQ2NCwgcmVzdWx0
cyk7CiAgICAgfQogICAgIAogICAgIExWYWx1ZSBzdHJpY3RJbnQ1MlRvSW50NTIoTFZhbHVlIHZh
bHVlKQpAQCAtOTgwMiw3ICs5ODAyLDcgQEAgcHJpdmF0ZToKICAgICB9CiAgICAgTFZhbHVlIGJv
eEludDMyKExWYWx1ZSB2YWx1ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBtX291dC5hZGQobV9v
dXQuemVyb0V4dCh2YWx1ZSwgbV9vdXQuaW50NjQpLCBtX3RhZ1R5cGVOdW1iZXIpOworICAgICAg
ICByZXR1cm4gbV9vdXQuYWRkKG1fb3V0Lnplcm9FeHQodmFsdWUsIEludDY0KSwgbV90YWdUeXBl
TnVtYmVyKTsKICAgICB9CiAgICAgCiAgICAgTFZhbHVlIGlzQ2VsbE9yTWlzYyhMVmFsdWUganNW
YWx1ZSwgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IFNwZWNGdWxsVG9wKQpAQCAtOTgyMCwxMSArOTgy
MCwxMSBAQCBwcml2YXRlOgogCiAgICAgTFZhbHVlIHVuYm94RG91YmxlKExWYWx1ZSBqc1ZhbHVl
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fb3V0LmJpdENhc3QobV9vdXQuYWRkKGpzVmFsdWUs
IG1fdGFnVHlwZU51bWJlciksIG1fb3V0LmRvdWJsZVR5cGUpOworICAgICAgICByZXR1cm4gbV9v
dXQuYml0Q2FzdChtX291dC5hZGQoanNWYWx1ZSwgbV90YWdUeXBlTnVtYmVyKSwgRG91YmxlKTsK
ICAgICB9CiAgICAgTFZhbHVlIGJveERvdWJsZShMVmFsdWUgZG91YmxlVmFsdWUpCiAgICAgewot
ICAgICAgICByZXR1cm4gbV9vdXQuc3ViKG1fb3V0LmJpdENhc3QoZG91YmxlVmFsdWUsIG1fb3V0
LmludDY0KSwgbV90YWdUeXBlTnVtYmVyKTsKKyAgICAgICAgcmV0dXJuIG1fb3V0LnN1YihtX291
dC5iaXRDYXN0KGRvdWJsZVZhbHVlLCBJbnQ2NCksIG1fdGFnVHlwZU51bWJlcik7CiAgICAgfQog
ICAgIAogICAgIExWYWx1ZSBqc1ZhbHVlVG9TdHJpY3RJbnQ1MihFZGdlIGVkZ2UsIExWYWx1ZSBi
b3hlZFZhbHVlKQpAQCAtOTg1MSw3ICs5ODUxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgbV9vdXQu
YXBwZW5kVG8oZG91YmxlQ2FzZSwgY29udGludWF0aW9uKTsKICAgICAgICAgCiAgICAgICAgIExW
YWx1ZSBwb3NzaWJsZVJlc3VsdCA9IG1fb3V0LmNhbGwoCi0gICAgICAgICAgICBtX291dC5pbnQ2
NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkNvbnZlcnRCb3hlZERvdWJsZVRvSW50NTIpLCBi
b3hlZFZhbHVlKTsKKyAgICAgICAgICAgIEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9u
Q29udmVydEJveGVkRG91YmxlVG9JbnQ1MiksIGJveGVkVmFsdWUpOwogICAgICAgICBGVExfVFlQ
RV9DSEVDSygKICAgICAgICAgICAgIGpzVmFsdWVWYWx1ZShib3hlZFZhbHVlKSwgZWRnZSwgU3Bl
Y0ludDMyT25seSB8IFNwZWNBbnlJbnRBc0RvdWJsZSwKICAgICAgICAgICAgIG1fb3V0LmVxdWFs
KHBvc3NpYmxlUmVzdWx0LCBtX291dC5jb25zdEludDY0KEpTVmFsdWU6Om5vdEludDUyKSkpOwpA
QCAtOTg2MSwxMyArOTg2MSwxMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgIG1f
b3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwogICAgICAgICAgICAgCi0gICAg
ICAgIHJldHVybiBtX291dC5waGkobV9vdXQuaW50NjQsIGludFRvSW50NTIsIGRvdWJsZVRvSW50
NTIpOworICAgICAgICByZXR1cm4gbV9vdXQucGhpKEludDY0LCBpbnRUb0ludDUyLCBkb3VibGVU
b0ludDUyKTsKICAgICB9CiAgICAgCiAgICAgTFZhbHVlIGRvdWJsZVRvU3RyaWN0SW50NTIoRWRn
ZSBlZGdlLCBMVmFsdWUgdmFsdWUpCiAgICAgewogICAgICAgICBMVmFsdWUgcG9zc2libGVSZXN1
bHQgPSBtX291dC5jYWxsKAotICAgICAgICAgICAgbV9vdXQuaW50NjQsIG1fb3V0Lm9wZXJhdGlv
bihvcGVyYXRpb25Db252ZXJ0RG91YmxlVG9JbnQ1MiksIHZhbHVlKTsKKyAgICAgICAgICAgIElu
dDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uQ29udmVydERvdWJsZVRvSW50NTIpLCB2YWx1
ZSk7CiAgICAgICAgIEZUTF9UWVBFX0NIRUNLX1dJVEhfRVhJVF9LSU5EKEludDUyT3ZlcmZsb3cs
CiAgICAgICAgICAgICBkb3VibGVWYWx1ZSh2YWx1ZSksIGVkZ2UsIFNwZWNBbnlJbnRBc0RvdWJs
ZSwKICAgICAgICAgICAgIG1fb3V0LmVxdWFsKHBvc3NpYmxlUmVzdWx0LCBtX291dC5jb25zdElu
dDY0KEpTVmFsdWU6Om5vdEludDUyKSkpOwpAQCAtOTg4OSw3ICs5ODg5LDcgQEAgcHJpdmF0ZToK
IAogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyh2YWx1
ZUlzWmVybywgY29udGludWF0aW9uKTsKIAotICAgICAgICAgICAgTFZhbHVlIGRvdWJsZUJpdGNh
c3RUb0ludDY0ID0gbV9vdXQuYml0Q2FzdCh2YWx1ZSwgbV9vdXQuaW50NjQpOworICAgICAgICAg
ICAgTFZhbHVlIGRvdWJsZUJpdGNhc3RUb0ludDY0ID0gbV9vdXQuYml0Q2FzdCh2YWx1ZSwgSW50
NjQpOwogICAgICAgICAgICAgTFZhbHVlIHNpZ25CaXRTZXQgPSBtX291dC5sZXNzVGhhbihkb3Vi
bGVCaXRjYXN0VG9JbnQ2NCwgbV9vdXQuY29uc3RJbnQ2NCgwKSk7CiAKICAgICAgICAgICAgIHNw
ZWN1bGF0ZShOZWdhdGl2ZVplcm8sIEZvcm1hdHRlZFZhbHVlKERhdGFGb3JtYXREb3VibGUsIHZh
bHVlKSwgbV9ub2RlLCBzaWduQml0U2V0KTsKQEAgLTEwNzA4LDcgKzEwNzA4LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGNhbGxDaGVjaygpCiAgICAgewogICAgICAgICBpZiAoT3B0aW9uczo6dXNl
RXhjZXB0aW9uRnV6eigpKQotICAgICAgICAgICAgbV9vdXQuY2FsbChtX291dC52b2lkVHlwZSwg
bV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkV4Y2VwdGlvbkZ1enopLCBtX2NhbGxGcmFtZSk7Cisg
ICAgICAgICAgICBtX291dC5jYWxsKFZvaWQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25FeGNl
cHRpb25GdXp6KSwgbV9jYWxsRnJhbWUpOwogICAgICAgICAKICAgICAgICAgTFZhbHVlIGV4Y2Vw
dGlvbiA9IG1fb3V0LmxvYWQ2NChtX291dC5hYnNvbHV0ZSh2bSgpLmFkZHJlc3NPZkV4Y2VwdGlv
bigpKSk7CiAgICAgICAgIExWYWx1ZSBoYWRFeGNlcHRpb24gPSBtX291dC5ub3RaZXJvNjQoZXhj
ZXB0aW9uKTsKQEAgLTExMjk0LDcgKzExMjk0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIH0p
OwogI2Vsc2UKICAgICAgICAgbV9vdXQuY2FsbCgKLSAgICAgICAgICAgIG1fb3V0LnZvaWRUeXBl
LAorICAgICAgICAgICAgVm9pZCwKICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKGZ0bFVu
cmVhY2hhYmxlKSwKICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKGNvZGVCbG9jaygpKSwg
bV9vdXQuY29uc3RJbnQzMihibG9ja0luZGV4KSwKICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50
MzIobm9kZUluZGV4KSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQu
Y3BwCShyZXZpc2lvbiAyMDI3OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91
dHB1dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0OSw3ICs2NDksNyBAQCBWYWx1ZUZyb21CbG9j
ayBPdXRwdXQ6OmFuY2hvcihMVmFsdWUgdmFsCiAKIExWYWx1ZSBPdXRwdXQ6OmJpdENhc3QoTFZh
bHVlIHZhbHVlLCBMVHlwZSB0eXBlKQogewotICAgIEFTU0VSVF9VTlVTRUQodHlwZSwgdHlwZSA9
PSBpbnQ2NCB8fCB0eXBlID09IGRvdWJsZVR5cGUpOworICAgIEFTU0VSVF9VTlVTRUQodHlwZSwg
dHlwZSA9PSBJbnQ2NCB8fCB0eXBlID09IERvdWJsZSk7CiAgICAgcmV0dXJuIG1fYmxvY2stPmFw
cGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkJpdHdpc2VDYXN0LCBvcmlnaW4oKSwgdmFs
dWUpOwogfQogCg==
</data>
<flag name="review"
          id="306464"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>