<?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>225744</bug_id>
          
          <creation_ts>2021-05-13 04:37:37 -0700</creation_ts>
          <short_desc>[LFC] Cleanup FormattingContext class</short_desc>
          <delta_ts>2021-05-16 08:58:18 -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>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>225731</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1759623</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2021-05-13 04:37:37 -0700</bug_when>
    <thetext>This is part of bug 225731 activity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759650</commentid>
    <comment_count>1</comment_count>
      <attachid>428490</attachid>
    <who name="alan">zalan</who>
    <bug_when>2021-05-13 05:25:59 -0700</bug_when>
    <thetext>Created attachment 428490
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760601</commentid>
    <comment_count>2</comment_count>
      <attachid>428788</attachid>
    <who name="alan">zalan</who>
    <bug_when>2021-05-16 08:17:16 -0700</bug_when>
    <thetext>Created attachment 428788
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760609</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-16 08:57:46 -0700</bug_when>
    <thetext>Committed r277570 (237798@main): &lt;https://commits.webkit.org/237798@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 428788.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760610</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-16 08:58:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/78079310&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428490</attachid>
            <date>2021-05-13 05:25:59 -0700</date>
            <delta_ts>2021-05-16 08:17:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225744-20210513052558.patch</filename>
            <type>text/plain</type>
            <size>55120</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MDMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjE5ZDEyNDY2NTYyNDFh
MTM2ZGYzNzJjYjQxZjMyZGViNWY0MzYwNy4uOWJlMmRhMWEyODFlNjFmNmNiYmI3NTA3YzE0ZWVi
ZGY4Y2JjOTU1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDIxLTA1LTEzICBBbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZDXSBDbGVhbnVwIEZvcm1h
dHRpbmdDb250ZXh0IGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjU3NDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIGZpbmFsIHBhdGNoIG1ha2VzIHRoZSBGb3JtYXR0aW5nQ29udGV4dCBp
bnRlcmZhY2UgdW5jbHV0dGVyZWQuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdTdGF0ZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nU3RhdGU6OnNldEludHJpbnNpY1dpZHRoQ29u
c3RyYWludHMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nU3RhdGU6Omlu
dHJpbnNpY1dpZHRoQ29uc3RyYWludHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpGb3JtYXR0aW5nU3RhdGU6OnNldEludHJpbnNpY1dpZHRoQ29uc3RyYWludHNGb3JCb3gpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nU3RhdGU6OmludHJpbnNpY1dpZHRo
Q29uc3RyYWludHNGb3JCb3ggY29uc3QpOgorICAgICAgICAqIGxheW91dC9MYXlvdXRDb250ZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGF5b3V0Q29udGV4dDo6bGF5b3V0Rm9y
bWF0dGluZ0NvbnRleHRTdWJ0cmVlKToKKyAgICAgICAgKiBsYXlvdXQvTGF5b3V0VW5pdHMuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW50cmluc2ljV2lkdGhDb25zdHJhaW50czo6ZXhw
YW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW50cmluc2ljV2lkdGhDb25zdHJhaW50
czo6b3BlcmF0b3IrPSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkludHJpbnNpY1dpZHRo
Q29uc3RyYWludHM6Om9wZXJhdG9yLT0pOgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvRm9ybWF0dGluZ0NvbnRleHQuY3BwOgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvRm9ybWF0dGluZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
Rm9ybWF0dGluZ0NvbnRleHQ6OnJvb3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpGb3JtYXR0aW5nQ29udGV4dDo6Zm9ybWF0dGluZ1N0YXRlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OmlzQmxvY2tGb3JtYXR0aW5nQ29udGV4
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0Ojpp
c0lubGluZUZvcm1hdHRpbmdDb250ZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OmlzVGFibGVGb3JtYXR0aW5nQ29udGV4dCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0Ojppc1RhYmxlV3JhcHBl
ckJsb2NrRm9ybWF0dGluZ0NvbnRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpGb3JtYXR0aW5nQ29udGV4dDo6aXNGbGV4Rm9ybWF0dGluZ0NvbnRleHQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6SW50cmluc2ljV2lkdGhD
b25zdHJhaW50czo6ZXhwYW5kKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
Rm9ybWF0dGluZ0NvbnRleHQ6OkludHJpbnNpY1dpZHRoQ29uc3RyYWludHM6Om9wZXJhdG9yKz0p
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6
SW50cmluc2ljV2lkdGhDb25zdHJhaW50czo6b3BlcmF0b3ItPSk6IERlbGV0ZWQuCisgICAgICAg
ICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nR2VvbWV0cnkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nR2VvbWV0cnk6OmNvbXB1dGVkV2lkdGhW
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdHZW9tZXRyeTo6c2hy
aW5rVG9GaXRXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdHZW9t
ZXRyeTo6Y29uc3RyYWluQnlNaW5NYXhXaWR0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkZvcm1hdHRpbmdHZW9tZXRyeTo6Y29uc3RyYWludHNGb3JPdXRPZkZsb3dDb250ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0dlb21ldHJ5Ojpjb25zdHJh
aW50c0ZvckluRmxvd0NvbnRlbnQgY29uc3QpOgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvRm9ybWF0dGluZ0dlb21ldHJ5Lmg6CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZWRJbnRyaW5zaWNX
aWR0aENvbnN0cmFpbnRzKToKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Js
b2NrL0Jsb2NrRm9ybWF0dGluZ0dlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6QmxvY2tGb3JtYXR0aW5nR2VvbWV0cnk6OmludHJpbnNpY1dpZHRoQ29uc3RyYWludHMpOgor
ICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5n
R2VvbWV0cnkuaDoKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Js
b2NrTWFyZ2luQ29sbGFwc2UuY3BwOgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvZmxleC9GbGV4Rm9ybWF0dGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpGbGV4Rm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVkSW50cmluc2ljV2lkdGhDb25zdHJh
aW50cyk6CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9mbGV4L0ZsZXhGb3Jt
YXR0aW5nR2VvbWV0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGbGV4Rm9ybWF0
dGluZ0dlb21ldHJ5OjppbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzKToKKyAgICAgICAgKiBsYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2ZsZXgvRmxleEZvcm1hdHRpbmdHZW9tZXRyeS5oOgorICAg
ICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdD
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQ6OmNvbXB1dGVkSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyk6CisgICAgICAgICogbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6VGFibGVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0
ZWRJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
VGFibGVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZWRQcmVmZXJyZWRXaWR0aEZvckNvbHVtbnMp
OgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0
aW5nR2VvbWV0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUYWJsZUZvcm1hdHRp
bmdHZW9tZXRyeTo6aW50cmluc2ljV2lkdGhDb25zdHJhaW50c0ZvckNlbGwpOgorICAgICAgICAq
IGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nR2VvbWV0cnku
aDoKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlR3JpZC5o
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUYWJsZUdyaWQ6OnNldFdpZHRoQ29uc3RyYWlu
dHMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUYWJsZUdyaWQ6OndpZHRoQ29uc3RyYWlu
dHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUYWJsZUdyaWQ6OlNsb3Q6Ondp
ZHRoQ29uc3RyYWludHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUYWJsZUdy
aWQ6OlNsb3Q6OnNldFdpZHRoQ29uc3RyYWludHMpOgorCiAyMDIxLTA1LTA1ICBBbGljaWEgQm95
YSBHYXJjw61hICA8YWJveWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbTVNFXVtHU3RyZWFtZXJd
IFdlYktpdE1lZGlhU3JjIHJld29yayB2MgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGE2MWUxMTBkYmQzNTA4ZTU0NWFiNWI4M2Uy
YmIyOGMxMDk4M2YwY2IuLjlmN2UzODFkMGE0ZmQzOGRiOTlkNzdhOTllODFiODhhY2JkZjNjMzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTE4MjU0LDE0ICsxODI1NCwxNCBAQAogCQkJCTZGRDRGRTNFMjQ3MEIzQUQwMDczNzRD
QyAvKiB0YWJsZXdyYXBwZXIgKi8sCiAJCQkJMTE1Q0ZBNkQyMDhBRkFCNjAwMUU2OTkxIC8qIEJs
b2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwICovLAogCQkJCTExNUNGQTZDMjA4QUZBQjYwMDFFNjk5
MSAvKiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmggKi8sCi0JCQkJNkY3OUYwQzAyNjQ4N0M0QzAw
Njk4MkI2IC8qIEJsb2NrRm9ybWF0dGluZ0dlb21ldHJ5LmggKi8sCiAJCQkJNkYwODMwREYyMEI0
Njk1MTAwOEE5NDVCIC8qIEJsb2NrRm9ybWF0dGluZ0dlb21ldHJ5LmNwcCAqLywKLQkJCQk2RjlE
MUFGOTI2NDc2MTM1MDBGNUQzQUQgLyogQmxvY2tGb3JtYXR0aW5nUXVpcmtzLmggKi8sCisJCQkJ
NkY3OUYwQzAyNjQ4N0M0QzAwNjk4MkI2IC8qIEJsb2NrRm9ybWF0dGluZ0dlb21ldHJ5LmggKi8s
CiAJCQkJNkY4RjQ2MDMyMUIwM0JDNjAwNDFBQzNBIC8qIEJsb2NrRm9ybWF0dGluZ1F1aXJrcy5j
cHAgKi8sCisJCQkJNkY5RDFBRjkyNjQ3NjEzNTAwRjVEM0FEIC8qIEJsb2NrRm9ybWF0dGluZ1F1
aXJrcy5oICovLAogCQkJCTExNUNGQTc5MjA4QjhEOUQwMDFFNjk5MSAvKiBCbG9ja0Zvcm1hdHRp
bmdTdGF0ZS5jcHAgKi8sCiAJCQkJMTE1Q0ZBNzgyMDhCOEQ5RDAwMUU2OTkxIC8qIEJsb2NrRm9y
bWF0dGluZ1N0YXRlLmggKi8sCi0JCQkJNkY2REYzNkUyNjQ3MjJFQTAwOTNFODM0IC8qIEJsb2Nr
TWFyZ2luQ29sbGFwc2UuaCAqLywKIAkJCQkxMTVDRkE4OTIwOEI5MjFBMDAxRTY5OTEgLyogQmxv
Y2tNYXJnaW5Db2xsYXBzZS5jcHAgKi8sCisJCQkJNkY2REYzNkUyNjQ3MjJFQTAwOTNFODM0IC8q
IEJsb2NrTWFyZ2luQ29sbGFwc2UuaCAqLywKIAkJCQk2RkFFMTZCQTI0MDZERTdFMDBBNDg0MTQg
LyogUHJlY29tcHV0ZWRCbG9ja01hcmdpbkNvbGxhcHNlLmNwcCAqLywKIAkJCSk7CiAJCQlwYXRo
ID0gYmxvY2s7CkBAIC0xODI3NSwxMCArMTgyNzUsMTAgQEAKIAkJCQk2RkUxOTgxNTIxNzgzOTdD
MDA0NDZGMDggLyogSW5saW5lQ29udGVudEJyZWFrZXIuaCAqLywKIAkJCQk2RjdDQTNDOTIwOEMy
QjJFMDAyRjI5QUIgLyogSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwICovLAogCQkJCTZGN0NB
M0M4MjA4QzJCMkUwMDJGMjlBQiAvKiBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oICovLAotCQkJ
CTZGMjkxRjQ5MjY0ODgyMUUwMEIxNTc4NSAvKiBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuaCAq
LywKIAkJCQk2RjM1RUZBRjIxODdDQkQ1MDA0NEUwRjQgLyogSW5saW5lRm9ybWF0dGluZ0dlb21l
dHJ5LmNwcCAqLywKLQkJCQk2RkU2MzZFNzI2NDc5NjI5MDBGMDk1MUUgLyogSW5saW5lRm9ybWF0
dGluZ1F1aXJrcy5oICovLAorCQkJCTZGMjkxRjQ5MjY0ODgyMUUwMEIxNTc4NSAvKiBJbmxpbmVG
b3JtYXR0aW5nR2VvbWV0cnkuaCAqLywKIAkJCQk2RjEwQjA4NjIyQjg1NjhEMDA5MEU2OUMgLyog
SW5saW5lRm9ybWF0dGluZ1F1aXJrcy5jcHAgKi8sCisJCQkJNkZFNjM2RTcyNjQ3OTYyOTAwRjA5
NTFFIC8qIElubGluZUZvcm1hdHRpbmdRdWlya3MuaCAqLywKIAkJCQkxMTVDRkE3RDIwOEI4RTEw
MDAxRTY5OTEgLyogSW5saW5lRm9ybWF0dGluZ1N0YXRlLmNwcCAqLywKIAkJCQkxMTVDRkE3QzIw
OEI4RTEwMDAxRTY5OTEgLyogSW5saW5lRm9ybWF0dGluZ1N0YXRlLmggKi8sCiAJCQkJNkY3QjhD
RUMyMzYyNkU2NjAwQzlGRjE1IC8qIElubGluZUl0ZW0uY3BwICovLApAQCAtMjI2MzMsMTAgKzIy
NjMzLDEwIEBACiAJCQkJNkZDNUNBOTEyMkUzNTkzMzAwQjEzRTExIC8qIHRhYmxlICovLAogCQkJ
CTExNUNGQTY5MjA4QUY3RDAwMDFFNjk5MSAvKiBGb3JtYXR0aW5nQ29udGV4dC5jcHAgKi8sCiAJ
CQkJMTE1Q0ZBNjgyMDhBRjdEMDAwMUU2OTkxIC8qIEZvcm1hdHRpbmdDb250ZXh0LmggKi8sCi0J
CQkJNkYzNDBFQTEyNjQ4ODUyRDAwQTYzQTAwIC8qIEZvcm1hdHRpbmdHZW9tZXRyeS5oICovLAog
CQkJCTZGQkI4NjA1MjBCNDY0QjYwMERBRDkzOCAvKiBGb3JtYXR0aW5nR2VvbWV0cnkuY3BwICov
LAotCQkJCTZGNTZCNDQ2MjY0NzlFNjEwMEFBRTI1NyAvKiBGb3JtYXR0aW5nUXVpcmtzLmggKi8s
CisJCQkJNkYzNDBFQTEyNjQ4ODUyRDAwQTYzQTAwIC8qIEZvcm1hdHRpbmdHZW9tZXRyeS5oICov
LAogCQkJCTZGOEY0NjAxMjFCMDNCQjQwMDQxQUMzQSAvKiBGb3JtYXR0aW5nUXVpcmtzLmNwcCAq
LywKKwkJCQk2RjU2QjQ0NjI2NDc5RTYxMDBBQUUyNTcgLyogRm9ybWF0dGluZ1F1aXJrcy5oICov
LAogCQkJKTsKIAkJCXBhdGggPSBmb3JtYXR0aW5nQ29udGV4dHM7CiAJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOwpAQCAtMjI2NTcsOCArMjI2NTcsOCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJ
NkZCN0QyRDcyNTBGRDdFNTAwMDIwN0FBIC8qIEZsZXhGb3JtYXR0aW5nQ29udGV4dC5jcHAgKi8s
CiAJCQkJNkZCN0QyRDkyNTBGRDdGQzAwMDIwN0FBIC8qIEZsZXhGb3JtYXR0aW5nQ29udGV4dC5o
ICovLAotCQkJCTZGRjkxMUY2MjY0ODdGQzgwMDIwMjFERiAvKiBGbGV4Rm9ybWF0dGluZ0dlb21l
dHJ5LmggKi8sCiAJCQkJNkY3MERFREQyNTExMjZGMzAwRjBGQzc4IC8qIEZsZXhGb3JtYXR0aW5n
R2VvbWV0cnkuY3BwICovLAorCQkJCTZGRjkxMUY2MjY0ODdGQzgwMDIwMjFERiAvKiBGbGV4Rm9y
bWF0dGluZ0dlb21ldHJ5LmggKi8sCiAJCQkJNkZCN0QyRDgyNTBGRDdFRjAwMDIwN0FBIC8qIEZs
ZXhGb3JtYXR0aW5nU3RhdGUuY3BwICovLAogCQkJCTZGQjdEMkRBMjUwRkQ3RkMwMDAyMDdBQSAv
KiBGbGV4Rm9ybWF0dGluZ1N0YXRlLmggKi8sCiAJCQkpOwpAQCAtMjI2NzAsMTAgKzIyNjcwLDEw
IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQk2RkM1Q0E5NDIyRTM1OTk0MDBCMTNFMTEgLyogVGFi
bGVGb3JtYXR0aW5nQ29udGV4dC5jcHAgKi8sCiAJCQkJNkZDNUNBOTUyMkUzNTk5NDAwQjEzRTEx
IC8qIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQuaCAqLywKLQkJCQk2RkY5QTA4MzI2NDg4MzQxMDAx
MjUwRDggLyogVGFibGVGb3JtYXR0aW5nR2VvbWV0cnkuaCAqLywKIAkJCQkxMUQxOUMyRTIzMTU5
QkFFMDA4RjI0RDMgLyogVGFibGVGb3JtYXR0aW5nR2VvbWV0cnkuY3BwICovLAotCQkJCTZGNDlD
M0U2MjY0NzlCM0IwMDUxOTUzRCAvKiBUYWJsZUZvcm1hdHRpbmdRdWlya3MuaCAqLywKKwkJCQk2
RkY5QTA4MzI2NDg4MzQxMDAxMjUwRDggLyogVGFibGVGb3JtYXR0aW5nR2VvbWV0cnkuaCAqLywK
IAkJCQk2RkM1M0FFQjI0QUY3QThFMDA2MDU5RkUgLyogVGFibGVGb3JtYXR0aW5nUXVpcmtzLmNw
cCAqLywKKwkJCQk2RjQ5QzNFNjI2NDc5QjNCMDA1MTk1M0QgLyogVGFibGVGb3JtYXR0aW5nUXVp
cmtzLmggKi8sCiAJCQkJNkZDNUNBOTIyMkUzNTk5MzAwQjEzRTExIC8qIFRhYmxlRm9ybWF0dGlu
Z1N0YXRlLmNwcCAqLywKIAkJCQk2RkM1Q0E5NjIyRTM1OTk1MDBCMTNFMTEgLyogVGFibGVGb3Jt
YXR0aW5nU3RhdGUuaCAqLywKIAkJCQk2RjVCN0VBQTIzMDBBNzlFMDA2N0Q5QzMgLyogVGFibGVH
cmlkLmNwcCAqLywKQEAgLTIyNzAxLDggKzIyNzAxLDggQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJ
CTZGMTcyNjRDMjQ3MEM1RjcwMDUxOEM5NiAvKiBUYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0LmNwcCAqLywKIAkJCQk2RjE3MjY0RTI0NzBDNjBBMDA1MThDOTYgLyogVGFibGVXcmFw
cGVyQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oICovLAotCQkJCTZGMTU1MjIwMjY0NzZCNUIwMEUz
NTNDNiAvKiBUYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdRdWlya3MuaCAqLywKIAkJCQk2RjY2
MzhENDI0OUUyNjhCMDAxOTI1RkMgLyogVGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5nUXVpcmtz
LmNwcCAqLywKKwkJCQk2RjE1NTIyMDI2NDc2QjVCMDBFMzUzQzYgLyogVGFibGVXcmFwcGVyQmxv
Y2tGb3JtYXR0aW5nUXVpcmtzLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHRhYmxld3JhcHBlcjsK
IAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0zMTQ1OSw3ICszMTQ1OSw2IEBACiAJCQkJ
MzFBNzk1QzcxODg4QkNCMjAwMzgyRjkwIC8qIEFOR0xFSW5zdGFuY2VkQXJyYXlzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0OUU5MTJBQjBFRkFDOTA2MDA5RDBDQUYgLyogQW5pbWF0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQk3MUVGQ0VEQzIwMkIzOEE5MDBEN0M0MTEgLyogQW5pbWF0aW9uRWZm
ZWN0LmggaW4gSGVhZGVycyAqLywKLQkJCQk0NDlEODY0RjI2NDBDOUM1MDAwMTIyREUgLyogSGln
aGxpZ2h0VmlzaWJpbGl0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzFFMkM0MjYyMUM5MzUyODAw
MjRGOEM4IC8qIEFuaW1hdGlvbkVmZmVjdFBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTk4
NDgwMTFBMUQ4MTdCMDBBMTMzMTggLyogQW5pbWF0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTcxMUFEMTI2MjM2RDg2RTUwMDZGRjM3QyAvKiBBbmltYXRpb25FdmVudEJhc2UuaCBpbiBI
ZWFkZXJzICovLApAQCAtMzE2MDgsNyArMzE2MDcsNiBAQAogCQkJCTgzQjk4NzA5MjUyMjVGNzIw
MEE5MzlGMSAvKiBBdWRpb1dvcmtsZXROb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0I5ODcw
QTI1MjI1Rjc2MDBBOTM5RjEgLyogQXVkaW9Xb3JrbGV0Tm9kZU9wdGlvbnMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTgzQkI4QjVGMjUyNjc3NjQwMEQ4OUYwQiAvKiBBdWRpb1dvcmtsZXRQcm9jZXNz
b3IuaCBpbiBIZWFkZXJzICovLAotCQkJCTZGRjlBMDg0MjY0ODgzNDIwMDEyNTBEOCAvKiBUYWJs
ZUZvcm1hdHRpbmdHZW9tZXRyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODMyNzRGQ0YyNTJFMjZC
NzAwMUUzNURDIC8qIEF1ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdGlvbkRhdGEuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTgzNzI2RUZCMjUyNjc5QzUwMEM2MTE0RSAvKiBBdWRpb1dvcmtsZXRQ
cm9jZXNzb3JDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNGQzk5NEIyNTI1NTdF
QTAwMTc3NjE4IC8qIEF1ZGlvV29ya2xldFRocmVhZC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTY5
Myw3ICszMTY5MSwxMCBAQAogCQkJCTJFQjRCQ0QzMTIxRjAzRTMwMEVDNDg4NSAvKiBCbG9iUmVz
b3VyY2VIYW5kbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NkQ2QzdGMTIyQjhBM0QwMDFGRDFG
NyAvKiBCbG9iVVJMLmggaW4gSGVhZGVycyAqLywKIAkJCQkxMTVDRkE2RTIwOEFGQUI3MDAxRTY5
OTEgLyogQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkY3OUYw
QzEyNjQ4N0M0QzAwNjk4MkI2IC8qIEJsb2NrRm9ybWF0dGluZ0dlb21ldHJ5LmggaW4gSGVhZGVy
cyAqLywKKwkJCQk2RjlEMUFGQTI2NDc2MTM2MDBGNUQzQUQgLyogQmxvY2tGb3JtYXR0aW5nUXVp
cmtzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxMTVDRkE3QTIwOEI4RDlEMDAxRTY5OTEgLyogQmxv
Y2tGb3JtYXR0aW5nU3RhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTZGNkRGMzZGMjY0NzIyRUEw
MDkzRTgzNCAvKiBCbG9ja01hcmdpbkNvbGxhcHNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzVF
QjVFMTBFODFCRTg3MDBCMjU5NjUgLyogQm9yZGVyRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTg5NTU2RUQxOEQ0QTQ0MDAwNzY0QjAzIC8qIEJvcmRlckVkZ2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDNUVCNURCMEU4MUI3RUEwMEIyNTk2NSAvKiBCb3JkZXJWYWx1ZS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0zMTgyMSw3ICszMTgyMiw2IEBACiAJCQkJN0MzQTkxRTYxQzk2M0I4ODAwRDFBN0Uz
IC8qIENsaXBib2FyZEFjY2Vzc1BvbGljeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMzFCNDAw
QTQ0RUZDNzAwRjk5MkUwIC8qIENsaXBib2FyZEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlG
NEM1RjIwNzI0NzlFODgyMDBFOUI0RjUgLyogQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTZGOUQxQUZBMjY0NzYxMzYwMEY1RDNBRCAvKiBCbG9ja0Zvcm1hdHRpbmdR
dWlya3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0NDBFNzdCMjMzRDk0RDcwMDYzRjlBQiAvKiBD
bGlwYm9hcmRJdGVtLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDZDNDQ3RTIzNDY1NDU0MDAzOUE3
OUQgLyogQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRjREMDc1NTgyMzREODIyRDAwODgxRTczIC8qIENsaXBib2FyZEl0ZW1EYXRhU291cmNlLmgg
aW4gSGVhZGVycyAqLywKQEAgLTMxODU3LDcgKzMxODU3LDYgQEAKIAkJCQlCQ0RENDU0RTEyMzZD
OTVDMDA5QTc5ODUgLyogQ29sdW1uSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDNFREQ2N0Yx
QjQ4NURCRjAwNjQwRTc1IC8qIENvbWJpbmVkRmlsdGVyc0FscGhhYmV0LmggaW4gSGVhZGVycyAq
LywKIAkJCQkyNkU5NDREOTFBQzRCMkREMDA3Qjg1QjUgLyogQ29tYmluZWRVUkxGaWx0ZXJzLmgg
aW4gSGVhZGVycyAqLywKLQkJCQk2RjE1NTIyMTI2NDc2QjVDMDBFMzUzQzYgLyogVGFibGVXcmFw
cGVyQmxvY2tGb3JtYXR0aW5nUXVpcmtzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0RkUzNTE4
NjRENUFGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElIb3N0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNTg0RkUyQzE4NjM4NzBGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE1ODRGRTI2MTg2MzdEQUIwMDg0M0IxMCAvKiBDb21tYW5kTGluZUFQ
SU1vZHVsZVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjUwMCw2ICszMjQ5OSw3IEBACiAJ
CQkJMzcyQzAwRDkxMjk2MTlGODAwNUM5NTc1IC8qIEZpbmRPcHRpb25zLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBOENGRjA0RjBBMTU0RjA5MDAwQTQyMzQgLyogRml4ZWRUYWJsZUxheW91dC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNkZCN0QyREQyNTBGRDgyODAwMDIwN0FBIC8qIEZsZXhGb3JtYXR0
aW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkZGOTExRjcyNjQ4N0ZDODAwMjAyMURG
IC8qIEZsZXhGb3JtYXR0aW5nR2VvbWV0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTZGQjdEMkRF
MjUwRkQ4MkUwMDAyMDdBQSAvKiBGbGV4Rm9ybWF0dGluZ1N0YXRlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk2RkZEQzQ0MjIxMkVGRjE3MDBBOUNBOTEgLyogRmxvYXRBdm9pZGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzA3M0JBQTBDMzk5QjFGMDAwRjU5NzkgLyogRmxvYXRDb252ZXJzaW9uLmgg
aW4gSGVhZGVycyAqLywKQEAgLTMyNTUzLDYgKzMyNTUzLDggQEAKIAkJCQlEMDVDRUQyQTBBNDBC
QjJDMDBDNUFGMzggLyogRm9ybWF0QmxvY2tDb21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk3
Q0U2Q0JGQjE4N0YzNzA3MDBENDZCRjUgLyogRm9ybWF0Q29udmVydGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxMTVDRkE2QTIwOEFGN0QwMDAxRTY5OTEgLyogRm9ybWF0dGluZ0NvbnRleHQuaCBp
biBIZWFkZXJzICovLAorCQkJCTZGMzQwRUEyMjY0ODg1MkQwMEE2M0EwMCAvKiBGb3JtYXR0aW5n
R2VvbWV0cnkuaCBpbiBIZWFkZXJzICovLAorCQkJCTZGNTZCNDQ3MjY0NzlFNjIwMEFBRTI1NyAv
KiBGb3JtYXR0aW5nUXVpcmtzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxMTVDRkE3NjIwOEFGRTMw
MDAxRTY5OTEgLyogRm9ybWF0dGluZ1N0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTA2NjRG
ODE1N0Y1MkRDMDBBQzIyNkYgLyogRm9ybUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTUxNEM3NjcwMENFOTIzQTEwMDdFRjNDRCAvKiBGb3JtRGF0YS5oIGluIEhlYWRlcnMgKi8sCkBA
IC0zMjY4MSw2ICszMjY4Myw3IEBACiAJCQkJNDQzMEQwMEIyNTc1QTgzRTAwNDZENDAxIC8qIEhp
Z2hsaWdodC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDRkFCQkQxOEMwQUY3ODAwNkY4NDUwIC8q
IEhpZ2hsaWdodERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ0MzBEMDBEMjU3NUE4QTUwMDQ2
RDQwMSAvKiBIaWdobGlnaHRSZWdpc3Rlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDQ5RDg2NEYy
NjQwQzlDNTAwMDEyMkRFIC8qIEhpZ2hsaWdodFZpc2liaWxpdHkuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDOTREMTU0MEMyNzVDOEIwMDZCQzYxNyAvKiBIaXN0b3J5LmggaW4gSGVhZGVycyAqLywK
IAkJCQk5N0RDRTIwMjEwODA3Qzc1MDA1N0QzOTQgLyogSGlzdG9yeUNvbnRyb2xsZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUxNzQxRDExMEIwNzI1OUEwMEVENDQyQyAvKiBIaXN0b3J5SXRlbS5o
IGluIEhlYWRlcnMgKi8sCkBAIC0zMjk1Niw2ICszMjk1OSw4IEBACiAJCQkJQjU3Q0I1MkUxODJB
M0VGQzAwNzlBNjQ3IC8qIElubGluZUVsZW1lbnRCb3guaCBpbiBIZWFkZXJzICovLAogCQkJCUE4
Q0ZGNUUzMEExNTVBMDUwMDBBNDIzNCAvKiBJbmxpbmVGbG93Qm94LmggaW4gSGVhZGVycyAqLywK
IAkJCQk2RjdDQTNDQTIwOEMyQjJFMDAyRjI5QUIgLyogSW5saW5lRm9ybWF0dGluZ0NvbnRleHQu
aCBpbiBIZWFkZXJzICovLAorCQkJCTZGMjkxRjRBMjY0ODgyMUUwMEIxNTc4NSAvKiBJbmxpbmVG
b3JtYXR0aW5nR2VvbWV0cnkuaCBpbiBIZWFkZXJzICovLAorCQkJCTZGRTYzNkU4MjY0Nzk2Mjkw
MEYwOTUxRSAvKiBJbmxpbmVGb3JtYXR0aW5nUXVpcmtzLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
MTVDRkE3RTIwOEI4RTEwMDAxRTY5OTEgLyogSW5saW5lRm9ybWF0dGluZ1N0YXRlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk2RkU3Q0ZBMjIxNzdFRUYyMDA1QjE1NzMgLyogSW5saW5lSXRlbS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkNFNzg5MTYxMTIwRDYwODAwNjBFQ0U1IC8qIElubGluZUl0ZXJh
dG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTMzOTE2LDcgKzMzOTIxLDYgQEAKIAkJCQkxQTc2MkM3
QTBBMDc0RjI2MDA5ODlGNUIgLyogSlNYUGF0aFJlc3VsdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkNFRkUxRUIwRENBNUY2NDAwNzM5MjE5IC8qIEpTWFNMVFByb2Nlc3Nvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODNCNzRFRjYxRjNFMEJGMjAwOTk2QkM3IC8qIEtlZXBhbGl2ZVJlcXVlc3RUcmFj
a2VyLmggaW4gSGVhZGVycyAqLywKLQkJCQk2RjI5MUY0QTI2NDg4MjFFMDBCMTU3ODUgLyogSW5s
aW5lRm9ybWF0dGluZ0dlb21ldHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTAzMUI0NDBBNDRF
RkM3MDBGOTkyRTAgLyogS2V5Ym9hcmRFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFMDBE
NTkxODJEQUM4RDAwMDg3REQ3IC8qIEtleWVkQ29kaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MTdBNjNDNTFCNzQzMThGMDBFN0RDREMgLyogS2V5ZWREZWNvZGVyQ0YuaCBpbiBIZWFkZXJzICov
LApAQCAtMzQwNTAsNyArMzQwNTQsNiBAQAogCQkJCUZBQkU3MkY1MTA1OUMxRUIwMEQ5OTlERCAv
KiBNYXRoTUxFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NEEyOEFBQzEyREZCOEFDMDBB
RTkyM0IgLyogTWF0aE1MRWxlbWVudEZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBCQ0Y4
M0Y3MTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxGcmFjdGlvbkVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTZGNDlDM0U3MjY0NzlCM0MwMDUxOTUzRCAvKiBUYWJsZUZvcm1hdHRpbmdRdWly
a3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUZBQkU3MkY5MTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRo
TUxNYXRoRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDRBMjhBQUYxMkRGQjhCRjAwQUU5
MjNCIC8qIE1hdGhNTE5hbWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGQTY1NEE2QzExMDhBQkVE
MDAyNjE2RjEgLyogTWF0aE1MT3BlcmF0b3JFbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTM0
MjA2LDcgKzM0MjA5LDYgQEAKIAkJCQkwN0I5M0ZGQzIzQjk0RUM3MDAzNkY4RUEgLyogTUlNRVR5
cGVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM3NzJDNEYwQzRFQjMwNDAwODMyODVGIC8q
IE1JTUVUeXBlUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTUyRjEwODY2MTYyQjZEQTgw
MDlBQzgxRSAvKiBNaXhlZENvbnRlbnRDaGVja2VyLmggaW4gSGVhZGVycyAqLywKLQkJCQk2RjU2
QjQ0NzI2NDc5RTYyMDBBQUUyNTcgLyogRm9ybWF0dGluZ1F1aXJrcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTFFMDg2NjQyNDg5RDM1MzAwRTQ5NkQ5IC8qIE1vY2tBcHBsZVBheVNldHVwRmVhdHVy
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEyREVGMUQyM0E5MTg2NjAwRDg0MEY2IC8qIE1vY2tB
dWRpb1NoYXJlZFVuaXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUNERjJCMDExMTgyMDU0MDYwMEYy
QjQyNCAvKiBNb2NrQm94LmggaW4gSGVhZGVycyAqLywKQEAgLTM0OTIyLDcgKzM0OTI0LDYgQEAK
IAkJCQlFNDZCNDFGOTFDQjI0RTcwMDA4RjExREUgLyogU2NyaXB0RGlzYWxsb3dlZFNjb3BlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0OTk4QUVEMjEzRkIyMjREMDA5MEIxQUEgLyogU2NyaXB0ZWRB
bmltYXRpb25Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwOEE0ODQ3ODBFNTI3MkM1
MDBDM0ZFNzYgLyogU2NyaXB0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTREODZFNkQy
NjQwMzk0QzAwQjYyNDI1IC8qIFN0eWxlU2NvcGVPcmRpbmFsLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFM0U0RTJBODFFM0IxNzEwMDAyM0JCOEEgLyogU2NyaXB0RWxlbWVudENhY2hlZFNjcmlwdEZl
dGNoZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMUM5RDlCMEVCMzY4MTIwMEU0MDlEQiAvKiBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTEyMjNCQTI2MDI0
NEZFMDBCMEEwQjYgLyogU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIuaCBpbiBIZWFk
ZXJzICovLApAQCAtMzUwMDQsNyArMzUwMDUsNiBAQAogCQkJCTQ0NjVEN0JEMjUzNkQwNUUwMDE2
NjY2RCAvKiBTZWxlY3Rpb25SYW5nZURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNDA1Qzg5
MTkwQjAxNDQwMDc1NEY5NCAvKiBTZWxlY3Rpb25SZWN0R2F0aGVyZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTk4Q0JDODA1MjYxOEY2OEMwMDE1OTNDOCAvKiBTZWxlY3Rpb25SZXN0b3JhdGlvbk1v
ZGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTZGMzQwRUEyMjY0ODg1MkQwMEE2M0EwMCAvKiBGb3Jt
YXR0aW5nR2VvbWV0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0NEI0QkI0MTQxNjUwRDcwMDJC
MUQ4QiAvKiBTZWxlY3RvckNoZWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQzMkQzRkU4MThB
ODY1ODQwMEQ3REMwMyAvKiBTZWxlY3RvckNoZWNrZXJUZXN0RnVuY3Rpb25zLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkyNkI5OTk5NzE4MDRENTQyMDBEMDExMjEgLyogU2VsZWN0b3JDb21waWxlci5o
IGluIEhlYWRlcnMgKi8sCkBAIC0zNTIzOSw2ICszNTIzOSw3IEBACiAJCQkJRTQ5NDZFQUYxNTZF
NjRERDAwRDMyOTdGIC8qIFN0eWxlUnVsZUltcG9ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5
NEYzN0UyMzY2MTYyNjAwM0FBNUM3IC8qIFN0eWxlUnVsZVR5cGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUU0NjFENjVGMUJCMEM4MEQwMENCNTY0NSAvKiBTdHlsZVNjb3BlLmggaW4gSGVhZGVycyAq
LywKKwkJCQlFNEQ4NkU2RDI2NDAzOTRDMDBCNjI0MjUgLyogU3R5bGVTY29wZU9yZGluYWwuaCBp
biBIZWFkZXJzICovLAogCQkJCTRBNEY0OEFBMTZCMERGQzAwMEVEQkIyOSAvKiBTdHlsZVNjb3Bl
UnVsZVNldHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0N0E1RTNFMTk1QjhDOEEwMDQ4MzEwMCAv
KiBTdHlsZVNjcm9sbFNuYXBQb2ludHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTlENjM4MDEwMUFG
MTczMjIwMDMxQTE1QyAvKiBTdHlsZVNlbGZBbGlnbm1lbnREYXRhLmggaW4gSGVhZGVycyAqLywK
QEAgLTM1MzcwLDcgKzM1MzcxLDYgQEAKIAkJCQlCMjIyN0E1OTBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHUGF0aEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0NzZDOUYwMTFERjZBNTgwMDU1
NUIwMiAvKiBTVkdQYXRoUGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E1QjBEMDBC
RjIyMDA3MUI3ODIgLyogU1ZHUGF0aFNlZy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNkZFNjM2RTgy
NjQ3OTYyOTAwRjA5NTFFIC8qIElubGluZUZvcm1hdHRpbmdRdWlya3MuaCBpbiBIZWFkZXJzICov
LAogCQkJCUIyMjI3QTgxMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQYXRoU2VnTGlzdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODQ3NkM5RTYxMURGNkEwQjAwNTU1QjAyIC8qIFNWR1BhdGhTZWdMaXN0
QnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODRCNkI5NzgxMjBGMTNFNTAwQjhFRkFGIC8q
IFNWR1BhdGhTZWdMaXN0U291cmNlLmggaW4gSGVhZGVycyAqLywKQEAgLTM1NDY0LDggKzM1NDY0
LDExIEBACiAJCQkJRTNDMDQxMzgyNTRDQjMwRDAwMjFEMEU2IC8qIFN5c3RlbVNvdW5kRGVsZWdh
dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzQzA0MTJGMjU0Q0EyOUIwMDIxRDBFNiAvKiBTeXN0
ZW1Tb3VuZE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVENTk3NUIzMTk2MzVGMTEwMEQw
MDg3OCAvKiBTeXN0ZW1WZXJzaW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk2RkY5QTA4NDI2NDg4
MzQyMDAxMjUwRDggLyogVGFibGVGb3JtYXR0aW5nR2VvbWV0cnkuaCBpbiBIZWFkZXJzICovLAor
CQkJCTZGNDlDM0U3MjY0NzlCM0MwMDUxOTUzRCAvKiBUYWJsZUZvcm1hdHRpbmdRdWlya3MuaCBp
biBIZWFkZXJzICovLAogCQkJCUE4Q0ZGMDUxMEExNTRGMDkwMDBBNDIzNCAvKiBUYWJsZUxheW91
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkYxNzI2NEYyNDcwQzYwQjAwNTE4Qzk2IC8qIFRhYmxl
V3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAorCQkJCTZGMTU1
MjIxMjY0NzZCNUMwMEUzNTNDNiAvKiBUYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdRdWlya3Mu
aCBpbiBIZWFkZXJzICovLAogCQkJCTNCQjZCODExMjJBN0QzMTMwMDNBMkE2OSAvKiBUYWJTaXpl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NjNFQjYyMzFCODc4OUUwMDA5NkVENTEgLyogVGFnQ29s
bGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUIwQUJDQUUyMzZCQjQzMTAwQjQ1MDg1IC8q
IFRhc2tTb3VyY2UuaCBpbiBIZWFkZXJzICovLApAQCAtMzU1OTIsNyArMzU1OTUsNiBAQAogCQkJ
CTRCQUZEMEQ5MjE5MjFFQTAwMEMwQUI2NCAvKiBUeXBlZE9NQ1NTVW5wYXJzZWRWYWx1ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMUEwOTlFNjQ5MjAwNTZFNTgxIC8qIFR5cGluZ0NvbW1h
bmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MTUyQjZFMjFDRDk5NUQwMDBDMzdDQSAvKiBVMmZD
b21tYW5kQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAotCQkJCTZGNkRGMzZGMjY0NzIyRUEw
MDkzRTgzNCAvKiBCbG9ja01hcmdpbkNvbGxhcHNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzE1
MkI3QzIxREQ4QkExMDAwQzM3Q0EgLyogVTJmUmVzcG9uc2VDb252ZXJ0ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTg1MDMxQjRFMEE0NEVGQzcwMEY5OTJFMCAvKiBVSUV2ZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4M0ZFN0NBNzFEQTlGMUE3MDAzNzIzN0MgLyogVUlFdmVudEluaXQuaCBpbiBI
ZWFkZXJzICovLApAQCAtMzU2NDcsNyArMzU2NDksNiBAQAogCQkJCUY1MTNBM0VBMTVGRjQ4NDEw
MDE1MjZEQiAvKiBWYWxpZGF0aW9uTWVzc2FnZUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MTVDNzcwOEQxMDBEM0M2QjAwNUJBMjY3IC8qIFZhbGlkaXR5U3RhdGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUZEMzE2MEFGMTJCMDI2RjcwMEMxQTM1OSAvKiBWZWN0b3JNYXRoLmggaW4gSGVhZGVy
cyAqLywKLQkJCQk2Rjc5RjBDMTI2NDg3QzRDMDA2OTgyQjYgLyogQmxvY2tGb3JtYXR0aW5nR2Vv
bWV0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMUEwQzM4MjI5QTQ4MTgwMEQzN0FEQiAvKiBW
ZWxvY2l0eURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCURGNEUzOEUwMjUyNzk1OTUwMDJBNzQ4
MSAvKiBWZXJzaW9uQ2hlY2tzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0EyNTcxNTEyOTNDMDEw
MDA3QTI2M0QgLyogVmVydGljYWxQb3NpdGlvbkNhY2hlLmggaW4gSGVhZGVycyAqLywKQEAgLTM1
ODgxLDcgKzM1ODgyLDYgQEAKIAkJCQlCQzgyNDNFOTBEMENGRDc1MDA0NjBDOEYgLyogV2luZG93
RmVhdHVyZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdFOTlBRjUzMEIxMzg0NjQ2OEZCMDFBNSAv
KiBXaW5kb3dGb2N1c0FsbG93ZWRJbmRpY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxODVG
Q0I0MUJCNEM0RTgwMDEyODk4RiAvKiBXaW5kb3dPcldvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERh
dGFiYXNlLmggaW4gSGVhZGVycyAqLywKLQkJCQk2RkY5MTFGNzI2NDg3RkM4MDAyMDIxREYgLyog
RmxleEZvcm1hdHRpbmdHZW9tZXRyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDYzNTIxQUQyMDgx
MDkyQTAwQzI4OTIyIC8qIFdpbmRvd1Byb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUUxQkYw
MDExNUZGNkZCMDA2RjUyQ0EgLyogV2luZG93c0tleWJvYXJkQ29kZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTUwMUJBQUE5MTM5NTBFMkMwMEY3QUNFQiAvKiBXaW5kUnVsZS5oIGluIEhlYWRlcnMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ1N0YXRlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ1N0YXRlLmgKaW5kZXggYmQ2Yzk4YmZk
MWU4M2M0ZDY2MjU5YzJiN2UxOWRkMDRkYmE2NWE2ZS4uNTZjMWU4MWIxYTk1ZmFlNjFiMDhjNmZi
MDNlYTlkMzhlM2M5OTI1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1h
dHRpbmdTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nU3RhdGUu
aApAQCAtNDgsMTIgKzQ4LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIG1hcmtOZWVkc0xheW91dChj
b25zdCBCb3gmLCBTdHlsZURpZmYpOwogICAgIGJvb2wgbmVlZHNMYXlvdXQoY29uc3QgQm94Jik7
CiAKLSAgICB2b2lkIHNldEludHJpbnNpY1dpZHRoQ29uc3RyYWludHNGb3JCb3goY29uc3QgQm94
JiwgIEZvcm1hdHRpbmdDb250ZXh0OjpJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzKTsKLSAgICBP
cHRpb25hbDxGb3JtYXR0aW5nQ29udGV4dDo6SW50cmluc2ljV2lkdGhDb25zdHJhaW50cz4gaW50
cmluc2ljV2lkdGhDb25zdHJhaW50c0ZvckJveChjb25zdCBCb3gmKSBjb25zdDsKKyAgICB2b2lk
IHNldEludHJpbnNpY1dpZHRoQ29uc3RyYWludHNGb3JCb3goY29uc3QgQm94JiwgIEludHJpbnNp
Y1dpZHRoQ29uc3RyYWludHMpOworICAgIE9wdGlvbmFsPEludHJpbnNpY1dpZHRoQ29uc3RyYWlu
dHM+IGludHJpbnNpY1dpZHRoQ29uc3RyYWludHNGb3JCb3goY29uc3QgQm94JikgY29uc3Q7CiAg
ICAgdm9pZCBjbGVhckludHJpbnNpY1dpZHRoQ29uc3RyYWludHMoY29uc3QgQm94Jik7CiAKLSAg
ICB2b2lkIHNldEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMoRm9ybWF0dGluZ0NvbnRleHQ6Oklu
dHJpbnNpY1dpZHRoQ29uc3RyYWludHMgaW50cmluc2ljV2lkdGhDb25zdHJhaW50cykgeyBtX2lu
dHJpbnNpY1dpZHRoQ29uc3RyYWludHMgPSBpbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzOyB9Ci0g
ICAgT3B0aW9uYWw8Rm9ybWF0dGluZ0NvbnRleHQ6OkludHJpbnNpY1dpZHRoQ29uc3RyYWludHM+
IGludHJpbnNpY1dpZHRoQ29uc3RyYWludHMoKSBjb25zdCB7IHJldHVybiBtX2ludHJpbnNpY1dp
ZHRoQ29uc3RyYWludHM7IH0KKyAgICB2b2lkIHNldEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMo
SW50cmluc2ljV2lkdGhDb25zdHJhaW50cyBpbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzKSB7IG1f
aW50cmluc2ljV2lkdGhDb25zdHJhaW50cyA9IGludHJpbnNpY1dpZHRoQ29uc3RyYWludHM7IH0K
KyAgICBPcHRpb25hbDxJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzPiBpbnRyaW5zaWNXaWR0aENv
bnN0cmFpbnRzKCkgY29uc3QgeyByZXR1cm4gbV9pbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzOyB9
CiAKICAgICBib29sIGlzQmxvY2tGb3JtYXR0aW5nU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3R5
cGUgPT0gVHlwZTo6QmxvY2s7IH0KICAgICBib29sIGlzSW5saW5lRm9ybWF0dGluZ1N0YXRlKCkg
Y29uc3QgeyByZXR1cm4gbV90eXBlID09IFR5cGU6OklubGluZTsgfQpAQCAtNzgsMTQgKzc4LDE0
IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgTGF5b3V0U3RhdGUmIG1fbGF5b3V0U3RhdGU7
CiAgICAgUmVmPEZsb2F0aW5nU3RhdGU+IG1fZmxvYXRpbmdTdGF0ZTsKLSAgICBIYXNoTWFwPGNv
bnN0IEJveCosIEZvcm1hdHRpbmdDb250ZXh0OjpJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzPiBt
X2ludHJpbnNpY1dpZHRoQ29uc3RyYWludHNGb3JCb3hlczsKLSAgICBPcHRpb25hbDxGb3JtYXR0
aW5nQ29udGV4dDo6SW50cmluc2ljV2lkdGhDb25zdHJhaW50cz4gbV9pbnRyaW5zaWNXaWR0aENv
bnN0cmFpbnRzOworICAgIEhhc2hNYXA8Y29uc3QgQm94KiwgSW50cmluc2ljV2lkdGhDb25zdHJh
aW50cz4gbV9pbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzRm9yQm94ZXM7CisgICAgT3B0aW9uYWw8
SW50cmluc2ljV2lkdGhDb25zdHJhaW50cz4gbV9pbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzOwog
ICAgIC8vIEZJWE1FOiBUaGlzIG5lZWRzIFdlYWtMaXN0SGFzaFNldAogICAgIE91dE9mRmxvd0Jv
eExpc3QgbV9vdXRPZkZsb3dCb3hlczsKICAgICBUeXBlIG1fdHlwZTsKIH07CiAKLWlubGluZSB2
b2lkIEZvcm1hdHRpbmdTdGF0ZTo6c2V0SW50cmluc2ljV2lkdGhDb25zdHJhaW50c0ZvckJveChj
b25zdCBCb3gmIGxheW91dEJveCwgRm9ybWF0dGluZ0NvbnRleHQ6OkludHJpbnNpY1dpZHRoQ29u
c3RyYWludHMgaW50cmluc2ljV2lkdGhDb25zdHJhaW50cykKK2lubGluZSB2b2lkIEZvcm1hdHRp
bmdTdGF0ZTo6c2V0SW50cmluc2ljV2lkdGhDb25zdHJhaW50c0ZvckJveChjb25zdCBCb3gmIGxh
eW91dEJveCwgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyBpbnRyaW5zaWNXaWR0aENvbnN0cmFp
bnRzKQogewogICAgIEFTU0VSVCghbV9pbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzRm9yQm94ZXMu
Y29udGFpbnMoJmxheW91dEJveCkpOwogICAgIEFTU0VSVCgmbV9sYXlvdXRTdGF0ZS5mb3JtYXR0
aW5nU3RhdGVGb3JCb3gobGF5b3V0Qm94KSA9PSB0aGlzKTsKQEAgLTk4LDcgKzk4LDcgQEAgaW5s
aW5lIHZvaWQgRm9ybWF0dGluZ1N0YXRlOjpjbGVhckludHJpbnNpY1dpZHRoQ29uc3RyYWludHMo
Y29uc3QgQm94JiBsYXlvdXRCb3gKICAgICBtX2ludHJpbnNpY1dpZHRoQ29uc3RyYWludHNGb3JC
b3hlcy5yZW1vdmUoJmxheW91dEJveCk7CiB9CiAKLWlubGluZSBPcHRpb25hbDxGb3JtYXR0aW5n
Q29udGV4dDo6SW50cmluc2ljV2lkdGhDb25zdHJhaW50cz4gRm9ybWF0dGluZ1N0YXRlOjppbnRy
aW5zaWNXaWR0aENvbnN0cmFpbnRzRm9yQm94KGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAor
aW5saW5lIE9wdGlvbmFsPEludHJpbnNpY1dpZHRoQ29uc3RyYWludHM+IEZvcm1hdHRpbmdTdGF0
ZTo6aW50cmluc2ljV2lkdGhDb25zdHJhaW50c0ZvckJveChjb25zdCBCb3gmIGxheW91dEJveCkg
Y29uc3QKIHsKICAgICBBU1NFUlQoJm1fbGF5b3V0U3RhdGUuZm9ybWF0dGluZ1N0YXRlRm9yQm94
KGxheW91dEJveCkgPT0gdGhpcyk7CiAgICAgYXV0byBpdGVyYXRvciA9IG1faW50cmluc2ljV2lk
dGhDb25zdHJhaW50c0ZvckJveGVzLmZpbmQoJmxheW91dEJveCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvTGF5b3V0Q29udGV4dC5jcHAKaW5kZXggNTNlNzBlNTljNTViYzI0YTFkMDE0Mjg3MDUyYTIz
NmY3YTA4OTRjMy4uYjkwYTE3ZjY4M2Q1NjdjMWVhZDEwMDU3NThjMTQ2NWI3NTI0MTBiZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dENvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRDb250ZXh0LmNwcApAQCAtMTAwLDcgKzEwMCw3IEBA
IHZvaWQgTGF5b3V0Q29udGV4dDo6bGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRTdWJ0cmVlKGNvbnN0
IENvbnRhaW5lckJveCYgZm9ybWF0dGluCiAgICAgYXV0byYgYm94R2VvbWV0cnkgPSBsYXlvdXRT
dGF0ZSgpLmdlb21ldHJ5Rm9yQm94KGZvcm1hdHRpbmdDb250ZXh0Um9vdCk7CiAKICAgICBpZiAo
Zm9ybWF0dGluZ0NvbnRleHRSb290Lmhhc0luRmxvd09yRmxvYXRpbmdDaGlsZCgpKSB7Ci0gICAg
ICAgIGF1dG8gY29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50ID0gRm9ybWF0dGluZ0NvbnRleHQ6
OkNvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCB7IHsgYm94R2VvbWV0cnkuY29udGVudEJveExl
ZnQoKSwgYm94R2VvbWV0cnkuY29udGVudEJveFdpZHRoKCkgfSwgeyBib3hHZW9tZXRyeS5jb250
ZW50Qm94VG9wKCksIHsgfSB9IH07CisgICAgICAgIGF1dG8gY29uc3RyYWludHNGb3JJbkZsb3dD
b250ZW50ID0gQ29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50IHsgeyBib3hHZW9tZXRyeS5jb250
ZW50Qm94TGVmdCgpLCBib3hHZW9tZXRyeS5jb250ZW50Qm94V2lkdGgoKSB9LCB7IGJveEdlb21l
dHJ5LmNvbnRlbnRCb3hUb3AoKSwgeyB9IH0gfTsKICAgICAgICAgZm9ybWF0dGluZ0NvbnRleHQt
PmxheW91dEluRmxvd0NvbnRlbnQoaW52YWxpZGF0aW9uU3RhdGUsIGNvbnN0cmFpbnRzRm9ySW5G
bG93Q29udGVudCk7CiAgICAgfQogCkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBMYXlvdXRDb250
ZXh0OjpsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFN1YnRyZWUoY29uc3QgQ29udGFpbmVyQm94JiBm
b3JtYXR0aW4KICAgICAvLyBJdCBjb25zdHJ1Y3RzIGFuIEZDIGZvciBkZXNjZW5kYW50IGJveGVz
IGFuZCBydW5zIGxheW91dCBvbiB0aGVtLiBUaGUgZm9ybWF0dGluZ0NvbnRleHRSb290IGlzIGxh
aWQgb3V0IGluIHRoZSBGQyBpbiB3aGljaCBpdCBsaXZlcyAocGFyZW50IGZvcm1hdHRpbmcgY29u
dGV4dCkuCiAgICAgLy8gSXQgYWxzbyBtZWFucyB0aGF0IHRoZSBmb3JtYXR0aW5nQ29udGV4dFJv
b3QgaGFzIHRvIGhhdmUgYSB2YWxpZC9jbGVhbiBnZW9tZXRyeSBhdCB0aGlzIHBvaW50LgogICAg
IHsKLSAgICAgICAgYXV0byBjb25zdHJhaW50cyA9IEZvcm1hdHRpbmdDb250ZXh0OjpDb25zdHJh
aW50c0Zvck91dE9mRmxvd0NvbnRlbnQgeyB7IGJveEdlb21ldHJ5LnBhZGRpbmdCb3hMZWZ0KCks
IGJveEdlb21ldHJ5LnBhZGRpbmdCb3hXaWR0aCgpIH0sCisgICAgICAgIGF1dG8gY29uc3RyYWlu
dHMgPSBDb25zdHJhaW50c0Zvck91dE9mRmxvd0NvbnRlbnQgeyB7IGJveEdlb21ldHJ5LnBhZGRp
bmdCb3hMZWZ0KCksIGJveEdlb21ldHJ5LnBhZGRpbmdCb3hXaWR0aCgpIH0sCiAgICAgICAgICAg
ICB7IGJveEdlb21ldHJ5LnBhZGRpbmdCb3hUb3AoKSwgYm94R2VvbWV0cnkucGFkZGluZ0JveEhl
aWdodCgpIH0sIGJveEdlb21ldHJ5LmNvbnRlbnRCb3hXaWR0aCgpIH07CiAgICAgICAgIGZvcm1h
dHRpbmdDb250ZXh0LT5sYXlvdXRPdXRPZkZsb3dDb250ZW50KGludmFsaWRhdGlvblN0YXRlLCBj
b25zdHJhaW50cyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xh
eW91dFVuaXRzLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0VW5pdHMuaAppbmRleCA0
Mzk2NWE5OTJlOGFiMTc5NjVhYmE5ZDkyOGM4MmJlN2EwMTc5M2JlLi43YmNjNWJmZWYyMzZjY2U3
MTgwYzM3MzU5OTljN2IxMjJjNTM1YmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvTGF5b3V0VW5pdHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0VW5pdHMu
aApAQCAtMTY5LDYgKzE2OSwyOSBAQCBzdHJ1Y3QgVmVydGljYWxDb25zdHJhaW50cyB7CiAgICAg
T3B0aW9uYWw8TGF5b3V0VW5pdD4gbG9naWNhbEhlaWdodDsKIH07CiAKK3N0cnVjdCBDb25zdHJh
aW50c0ZvckluRmxvd0NvbnRlbnQgeworICAgIEhvcml6b250YWxDb25zdHJhaW50cyBob3Jpem9u
dGFsOworICAgIFZlcnRpY2FsQ29uc3RyYWludHMgdmVydGljYWw7Cit9OworCitzdHJ1Y3QgQ29u
c3RyYWludHNGb3JPdXRPZkZsb3dDb250ZW50IHsKKyAgICBIb3Jpem9udGFsQ29uc3RyYWludHMg
aG9yaXpvbnRhbDsKKyAgICBWZXJ0aWNhbENvbnN0cmFpbnRzIHZlcnRpY2FsOworICAgIC8vIEJv
cmRlcnMgYW5kIHBhZGRpbmcgYXJlIHJlc29sdmVkIGFnYWluc3QgdGhlIGNvbnRhaW5pbmcgYmxv
Y2sncyBjb250ZW50IGJveCBhcyBpZiB0aGUgYm94IHdhcyBhbiBpbi1mbG93IGJveC4KKyAgICBM
YXlvdXRVbml0IGJvcmRlckFuZFBhZGRpbmdDb25zdHJhaW50czsKK307CisKK3N0cnVjdCBJbnRy
aW5zaWNXaWR0aENvbnN0cmFpbnRzIHsKKyAgICB2b2lkIGV4cGFuZChMYXlvdXRVbml0IGhvcml6
b250YWxWYWx1ZSk7CisgICAgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyYgb3BlcmF0b3IrPShj
b25zdCBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzJik7CisgICAgSW50cmluc2ljV2lkdGhDb25z
dHJhaW50cyYgb3BlcmF0b3IrPShMYXlvdXRVbml0KTsKKyAgICBJbnRyaW5zaWNXaWR0aENvbnN0
cmFpbnRzJiBvcGVyYXRvci09KGNvbnN0IEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMmKTsKKyAg
ICBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzJiBvcGVyYXRvci09KExheW91dFVuaXQpOworCisg
ICAgTGF5b3V0VW5pdCBtaW5pbXVtOworICAgIExheW91dFVuaXQgbWF4aW11bTsKK307CisKIHN0
cnVjdCBPdmVycmlkZGVuSG9yaXpvbnRhbFZhbHVlcyB7CiAgICAgT3B0aW9uYWw8TGF5b3V0VW5p
dD4gd2lkdGg7CiAgICAgT3B0aW9uYWw8VXNlZEhvcml6b250YWxNYXJnaW4+IG1hcmdpbjsKQEAg
LTIwOCw2ICsyMzEsMzggQEAgaW5saW5lIElubGluZUxheW91dFVuaXQgbWF4SW5saW5lTGF5b3V0
VW5pdCgpCiAjZW5kaWYKIH0KIAoraW5saW5lIHZvaWQgSW50cmluc2ljV2lkdGhDb25zdHJhaW50
czo6ZXhwYW5kKExheW91dFVuaXQgaG9yaXpvbnRhbFZhbHVlKQoreworICAgIG1pbmltdW0gKz0g
aG9yaXpvbnRhbFZhbHVlOworICAgIG1heGltdW0gKz0gaG9yaXpvbnRhbFZhbHVlOworfQorCitp
bmxpbmUgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyYgSW50cmluc2ljV2lkdGhDb25zdHJhaW50
czo6b3BlcmF0b3IrPShjb25zdCBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzJiBvdGhlcikKK3sK
KyAgICBtaW5pbXVtICs9IG90aGVyLm1pbmltdW07CisgICAgbWF4aW11bSArPSBvdGhlci5tYXhp
bXVtOworICAgIHJldHVybiAqdGhpczsKK30KKworaW5saW5lIEludHJpbnNpY1dpZHRoQ29uc3Ry
YWludHMmIEludHJpbnNpY1dpZHRoQ29uc3RyYWludHM6Om9wZXJhdG9yKz0oTGF5b3V0VW5pdCB2
YWx1ZSkKK3sKKyAgICBleHBhbmQodmFsdWUpOworICAgIHJldHVybiAqdGhpczsKK30KKworaW5s
aW5lIEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMmIEludHJpbnNpY1dpZHRoQ29uc3RyYWludHM6
Om9wZXJhdG9yLT0oY29uc3QgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyYgb3RoZXIpCit7Cisg
ICAgbWluaW11bSAtPSBvdGhlci5taW5pbXVtOworICAgIG1heGltdW0gLT0gb3RoZXIubWF4aW11
bTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK2lubGluZSBJbnRyaW5zaWNXaWR0aENvbnN0cmFp
bnRzJiBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzOjpvcGVyYXRvci09KExheW91dFVuaXQgdmFs
dWUpCit7CisgICAgZXhwYW5kKC12YWx1ZSk7CisgICAgcmV0dXJuICp0aGlzOworfQorCiBzdHJ1
Y3QgU2xvdFBvc2l0aW9uIHsKICAgICBTbG90UG9zaXRpb24oKSA9IGRlZmF1bHQ7CiAgICAgU2xv
dFBvc2l0aW9uKHNpemVfdCBjb2x1bW4sIHNpemVfdCByb3cpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nQ29udGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdDb250
ZXh0LmNwcAppbmRleCAwMzRiNThkMTkzNGI2MjM5NGJmNDVlN2ExMWY2N2I1MWM5ZTAzNmUxLi4w
MTgxODJmMjhhZWJmNmJmZDQ4ODU3ZTFkM2FkMTIzNTdjMjZhZTU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdDb250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRp
bmdDb250ZXh0LmNwcApAQCAtMjksOCArMjksOCBAQAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFU
VElOR19DT05URVhUKQogCiAjaW5jbHVkZSAiRm9ybWF0dGluZ0dlb21ldHJ5LmgiCi0jaW5jbHVk
ZSAiRm9ybWF0dGluZ1N0YXRlLmgiCiAjaW5jbHVkZSAiRm9ybWF0dGluZ1F1aXJrcy5oIgorI2lu
Y2x1ZGUgIkZvcm1hdHRpbmdTdGF0ZS5oIgogI2luY2x1ZGUgIkludmFsaWRhdGlvblN0YXRlLmgi
CiAjaW5jbHVkZSAiTGF5b3V0Qm94LmgiCiAjaW5jbHVkZSAiTGF5b3V0Qm94R2VvbWV0cnkuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9y
bWF0dGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvRm9ybWF0dGluZ0NvbnRleHQuaAppbmRleCBiMjZhZGVmZmQzM2ExNzIwNGE5ZjI1OGI4MTRk
MDc2MTFlM2YyMmU3Li45ZjU3ZjdlMGE1NTM4N2YwYTQ1YzlkOGUyZTc5OTBkOTA5ZTU3M2U5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1h
dHRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9Gb3JtYXR0aW5nQ29udGV4dC5oCkBAIC01MSw0MSArNTEsMTcgQEAgY2xhc3MgTGF5b3V0
U3RhdGU7CiBjbGFzcyBGb3JtYXR0aW5nQ29udGV4dCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9D
QVRFRChGb3JtYXR0aW5nQ29udGV4dCk7CiBwdWJsaWM6Ci0gICAgRm9ybWF0dGluZ0NvbnRleHQo
Y29uc3QgQ29udGFpbmVyQm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QsIEZvcm1hdHRpbmdTdGF0
ZSYpOwogICAgIHZpcnR1YWwgfkZvcm1hdHRpbmdDb250ZXh0KCk7CiAKLSAgICBzdHJ1Y3QgQ29u
c3RyYWludHNGb3JJbkZsb3dDb250ZW50IHsKLSAgICAgICAgSG9yaXpvbnRhbENvbnN0cmFpbnRz
IGhvcml6b250YWw7Ci0gICAgICAgIFZlcnRpY2FsQ29uc3RyYWludHMgdmVydGljYWw7Ci0gICAg
fTsKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0SW5GbG93Q29udGVudChJbnZhbGlkYXRpb25TdGF0
ZSYsIGNvbnN0IENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCYpID0gMDsKLQotICAgIHN0cnVj
dCBDb25zdHJhaW50c0Zvck91dE9mRmxvd0NvbnRlbnQgewotICAgICAgICBIb3Jpem9udGFsQ29u
c3RyYWludHMgaG9yaXpvbnRhbDsKLSAgICAgICAgVmVydGljYWxDb25zdHJhaW50cyB2ZXJ0aWNh
bDsKLSAgICAgICAgLy8gQm9yZGVycyBhbmQgcGFkZGluZyBhcmUgcmVzb2x2ZWQgYWdhaW5zdCB0
aGUgY29udGFpbmluZyBibG9jaydzIGNvbnRlbnQgYm94IGFzIGlmIHRoZSBib3ggd2FzIGFuIGlu
LWZsb3cgYm94LgotICAgICAgICBMYXlvdXRVbml0IGJvcmRlckFuZFBhZGRpbmdDb25zdHJhaW50
czsKLSAgICB9OwogICAgIHZvaWQgbGF5b3V0T3V0T2ZGbG93Q29udGVudChJbnZhbGlkYXRpb25T
dGF0ZSYsIGNvbnN0IENvbnN0cmFpbnRzRm9yT3V0T2ZGbG93Q29udGVudCYpOwotCi0gICAgc3Ry
dWN0IEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgewotICAgICAgICB2b2lkIGV4cGFuZChMYXlv
dXRVbml0IGhvcml6b250YWxWYWx1ZSk7Ci0gICAgICAgIEludHJpbnNpY1dpZHRoQ29uc3RyYWlu
dHMmIG9wZXJhdG9yKz0oY29uc3QgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyYpOwotICAgICAg
ICBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzJiBvcGVyYXRvcis9KExheW91dFVuaXQpOwotICAg
ICAgICBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzJiBvcGVyYXRvci09KGNvbnN0IEludHJpbnNp
Y1dpZHRoQ29uc3RyYWludHMmKTsKLSAgICAgICAgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyYg
b3BlcmF0b3ItPShMYXlvdXRVbml0KTsKLQotICAgICAgICBMYXlvdXRVbml0IG1pbmltdW07Ci0g
ICAgICAgIExheW91dFVuaXQgbWF4aW11bTsKLSAgICB9OwogICAgIHZpcnR1YWwgSW50cmluc2lj
V2lkdGhDb25zdHJhaW50cyBjb21wdXRlZEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMoKSA9IDA7
CisKICAgICB2aXJ0dWFsIExheW91dFVuaXQgdXNlZENvbnRlbnRIZWlnaHQoKSBjb25zdCA9IDA7
CiAKLSAgICBib29sIGlzQmxvY2tGb3JtYXR0aW5nQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIHJv
b3QoKS5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKTsgfQotICAgIGJvb2wgaXNJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIHJvb3QoKS5lc3RhYmxpc2hl
c0lubGluZUZvcm1hdHRpbmdDb250ZXh0KCk7IH0KLSAgICBib29sIGlzVGFibGVGb3JtYXR0aW5n
Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIHJvb3QoKS5lc3RhYmxpc2hlc1RhYmxlRm9ybWF0dGlu
Z0NvbnRleHQoKTsgfQotICAgIGJvb2wgaXNUYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0KCkgY29uc3QgeyByZXR1cm4gaXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCkgJiYgcm9vdCgp
LmlzVGFibGVXcmFwcGVyQm94KCk7IH0KLSAgICBib29sIGlzRmxleEZvcm1hdHRpbmdDb250ZXh0
KCkgY29uc3QgeyByZXR1cm4gcm9vdCgpLmVzdGFibGlzaGVzRmxleEZvcm1hdHRpbmdDb250ZXh0
KCk7IH0KKyAgICBjb25zdCBDb250YWluZXJCb3gmIHJvb3QoKSBjb25zdCB7IHJldHVybiAqbV9y
b290OyB9CisgICAgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlKCkgY29uc3Q7CisgICAgY29uc3Qg
Rm9ybWF0dGluZ1N0YXRlJiBmb3JtYXR0aW5nU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1h
dHRpbmdTdGF0ZTsgfQogCiAgICAgZW51bSBjbGFzcyBFc2NhcGVSZWFzb24gewogICAgICAgICBU
YWJsZVF1aXJrTmVlZHNHZW9tZXRyeUZyb21Fc3RhYmxpc2hlZEZvcm1hdHRpbmdDb250ZXh0LApA
QCAtOTcsMTIgKzczLDE3IEBAIHB1YmxpYzoKICAgICAgICAgVGFibGVOZWVkc0FjY2Vzc1RvVGFi
bGVXcmFwcGVyCiAgICAgfTsKICAgICBjb25zdCBCb3hHZW9tZXRyeSYgZ2VvbWV0cnlGb3JCb3go
Y29uc3QgQm94JiwgT3B0aW9uYWw8RXNjYXBlUmVhc29uPiA9IFdURjo6bnVsbG9wdCkgY29uc3Q7
Ci0gICAgY29uc3QgQ29udGFpbmVyQm94JiByb290KCkgY29uc3QgeyByZXR1cm4gKm1fcm9vdDsg
fQogCi0gICAgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlKCkgY29uc3Q7Ci0gICAgY29uc3QgRm9y
bWF0dGluZ1N0YXRlJiBmb3JtYXR0aW5nU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdHRp
bmdTdGF0ZTsgfQorCisgICAgYm9vbCBpc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKSBjb25zdCB7
IHJldHVybiByb290KCkuZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCk7IH0KKyAg
ICBib29sIGlzSW5saW5lRm9ybWF0dGluZ0NvbnRleHQoKSBjb25zdCB7IHJldHVybiByb290KCku
ZXN0YWJsaXNoZXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCgpOyB9CisgICAgYm9vbCBpc1RhYmxl
Rm9ybWF0dGluZ0NvbnRleHQoKSBjb25zdCB7IHJldHVybiByb290KCkuZXN0YWJsaXNoZXNUYWJs
ZUZvcm1hdHRpbmdDb250ZXh0KCk7IH0KKyAgICBib29sIGlzVGFibGVXcmFwcGVyQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIGlzQmxvY2tGb3JtYXR0aW5nQ29udGV4dCgp
ICYmIHJvb3QoKS5pc1RhYmxlV3JhcHBlckJveCgpOyB9CisgICAgYm9vbCBpc0ZsZXhGb3JtYXR0
aW5nQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIHJvb3QoKS5lc3RhYmxpc2hlc0ZsZXhGb3JtYXR0
aW5nQ29udGV4dCgpOyB9CiAKIHByb3RlY3RlZDoKKyAgICBGb3JtYXR0aW5nQ29udGV4dChjb25z
dCBDb250YWluZXJCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgRm9ybWF0dGluZ1N0YXRlJik7
CisKICAgICB1c2luZyBMYXlvdXRRdWV1ZSA9IFZlY3Rvcjxjb25zdCBCb3gqPjsKIAogICAgIEZv
cm1hdHRpbmdTdGF0ZSYgZm9ybWF0dGluZ1N0YXRlKCkgeyByZXR1cm4gbV9mb3JtYXR0aW5nU3Rh
dGU7IH0KQEAgLTEyNSwzOCArMTA2LDYgQEAgcHJpdmF0ZToKICAgICBGb3JtYXR0aW5nU3RhdGUm
IG1fZm9ybWF0dGluZ1N0YXRlOwogfTsKIAotaW5saW5lIHZvaWQgRm9ybWF0dGluZ0NvbnRleHQ6
OkludHJpbnNpY1dpZHRoQ29uc3RyYWludHM6OmV4cGFuZChMYXlvdXRVbml0IGhvcml6b250YWxW
YWx1ZSkKLXsKLSAgICBtaW5pbXVtICs9IGhvcml6b250YWxWYWx1ZTsKLSAgICBtYXhpbXVtICs9
IGhvcml6b250YWxWYWx1ZTsKLX0KLQotaW5saW5lIEZvcm1hdHRpbmdDb250ZXh0OjpJbnRyaW5z
aWNXaWR0aENvbnN0cmFpbnRzJiBGb3JtYXR0aW5nQ29udGV4dDo6SW50cmluc2ljV2lkdGhDb25z
dHJhaW50czo6b3BlcmF0b3IrPShjb25zdCBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzJiBvdGhl
cikKLXsKLSAgICBtaW5pbXVtICs9IG90aGVyLm1pbmltdW07Ci0gICAgbWF4aW11bSArPSBvdGhl
ci5tYXhpbXVtOwotICAgIHJldHVybiAqdGhpczsKLX0KLQotaW5saW5lIEZvcm1hdHRpbmdDb250
ZXh0OjpJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzJiBGb3JtYXR0aW5nQ29udGV4dDo6SW50cmlu
c2ljV2lkdGhDb25zdHJhaW50czo6b3BlcmF0b3IrPShMYXlvdXRVbml0IHZhbHVlKQotewotICAg
IGV4cGFuZCh2YWx1ZSk7Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCi1pbmxpbmUgRm9ybWF0dGlu
Z0NvbnRleHQ6OkludHJpbnNpY1dpZHRoQ29uc3RyYWludHMmIEZvcm1hdHRpbmdDb250ZXh0OjpJ
bnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzOjpvcGVyYXRvci09KGNvbnN0IEludHJpbnNpY1dpZHRo
Q29uc3RyYWludHMmIG90aGVyKQotewotICAgIG1pbmltdW0gLT0gb3RoZXIubWluaW11bTsKLSAg
ICBtYXhpbXVtIC09IG90aGVyLm1heGltdW07Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCi1pbmxp
bmUgRm9ybWF0dGluZ0NvbnRleHQ6OkludHJpbnNpY1dpZHRoQ29uc3RyYWludHMmIEZvcm1hdHRp
bmdDb250ZXh0OjpJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzOjpvcGVyYXRvci09KExheW91dFVu
aXQgdmFsdWUpCi17Ci0gICAgZXhwYW5kKC12YWx1ZSk7Ci0gICAgcmV0dXJuICp0aGlzOwotfQot
CiB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvRm9ybWF0dGluZ0dlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0dlb21ldHJ5LmNwcAppbmRleCBjOWZiM2ZiMTQzYzk4
YzZkMmI5ZDllYmUxNDBmMWFlZmU2ZWQ4OTNkLi5kMmU0N2M4MWJlOTBkNDNiYzg4MDlhNTBiN2Ji
NDJlNjhiMDBhZWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL0Zvcm1hdHRpbmdHZW9tZXRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nR2VvbWV0cnkuY3BwCkBAIC0xNDMsNyAr
MTQzLDcgQEAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gRm9ybWF0dGluZ0dlb21ldHJ5Ojpjb21wdXRl
ZFdpZHRoVmFsdWUoY29uc3QgQm94JiBsYXlvdXRCb3gKICAgICAgICAgLy8gRklYTUU6IENvbnNp
ZGVyIHNwbGl0dGluZyB1cCBjb21wdXRlZEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgc28gdGhh
dCB3ZSBjb3VsZCBjb21wdXRlZCB0aGUgbWluIGFuZCBtYXggdmFsdWVzIHNlcGFyYXRlbHkuCiAg
ICAgICAgIGF1dG8gaW50cmluc2ljV2lkdGhDb25zdHJhaW50cyA9IFsmXSB7CiAgICAgICAgICAg
ICBpZiAoIWNvbnRhaW5lckJveC5oYXNJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gRm9ybWF0dGluZ0NvbnRleHQ6OkludHJpbnNpY1dpZHRoQ29uc3RyYWlu
dHMgeyAwX2x1LCBjb250YWluaW5nQmxvY2tXaWR0aCB9OworICAgICAgICAgICAgICAgIHJldHVy
biBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzIHsgMF9sdSwgY29udGFpbmluZ0Jsb2NrV2lkdGgg
fTsKICAgICAgICAgICAgIEFTU0VSVChjb250YWluZXJCb3guZXN0YWJsaXNoZXNGb3JtYXR0aW5n
Q29udGV4dCgpKTsKICAgICAgICAgICAgIGF1dG8mIGZvcm1hdHRpbmdTdGF0ZSA9IGxheW91dFN0
YXRlKCkuZW5zdXJlRm9ybWF0dGluZ1N0YXRlKGNvbnRhaW5lckJveCk7CiAgICAgICAgICAgICBp
ZiAoYXV0byBpbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzID0gZm9ybWF0dGluZ1N0YXRlLmludHJp
bnNpY1dpZHRoQ29uc3RyYWludHMoKSkKQEAgLTI5OSw3ICsyOTksNyBAQCBMYXlvdXRVbml0IEZv
cm1hdHRpbmdHZW9tZXRyeTo6c2hyaW5rVG9GaXRXaWR0aChjb25zdCBCb3gmIGZvcm1hdHRpbmdD
b250ZXh0Um9vdAogICAgIC8vICdwYWRkaW5nLWxlZnQnLCAncGFkZGluZy1yaWdodCcsICdib3Jk
ZXItcmlnaHQtd2lkdGgnLCAnbWFyZ2luLXJpZ2h0JywgYW5kIHRoZSB3aWR0aHMgb2YgYW55IHJl
bGV2YW50IHNjcm9sbCBiYXJzLgogCiAgICAgLy8gVGhlbiB0aGUgc2hyaW5rLXRvLWZpdCB3aWR0
aCBpczogbWluKG1heChwcmVmZXJyZWQgbWluaW11bSB3aWR0aCwgYXZhaWxhYmxlIHdpZHRoKSwg
cHJlZmVycmVkIHdpZHRoKS4KLSAgICBhdXRvIGludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgPSBG
b3JtYXR0aW5nQ29udGV4dDo6SW50cmluc2ljV2lkdGhDb25zdHJhaW50cyB7IH07CisgICAgYXV0
byBpbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzID0gSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyB7
IH07CiAgICAgYXV0byBoYXNDb250ZW50ID0gaXM8Q29udGFpbmVyQm94Pihmb3JtYXR0aW5nQ29u
dGV4dFJvb3QpICYmIGRvd25jYXN0PENvbnRhaW5lckJveD4oZm9ybWF0dGluZ0NvbnRleHRSb290
KS5oYXNJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKTsKICAgICAvLyBUaGUgdXNlZCB3aWR0aCBvZiB0
aGUgY29udGFpbm1lbnQgYm94IGlzIGRldGVybWluZWQgYXMgaWYgcGVyZm9ybWluZyBhIG5vcm1h
bCBsYXlvdXQgb2YgdGhlIGJveCwgZXhjZXB0IHRoYXQgaXQgaXMgdHJlYXRlZCBhcyBoYXZpbmcg
bm8gY29udGVudC4KICAgICBhdXRvIHNob3VsZElnbm9yZUNvbnRlbnQgPSBmb3JtYXR0aW5nQ29u
dGV4dFJvb3QuaXNTaXplQ29udGFpbm1lbnRCb3goKTsgIApAQCAtMTEyOCw3ICsxMTI4LDcgQEAg
Q29tcHV0ZWRWZXJ0aWNhbE1hcmdpbiBGb3JtYXR0aW5nR2VvbWV0cnk6OmNvbXB1dGVkVmVydGlj
YWxNYXJnaW4oY29uc3QgQm94JiBsYXkKICAgICByZXR1cm4geyBjb21wdXRlZFZhbHVlKHN0eWxl
Lm1hcmdpbkxlZnQoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpLCBjb21wdXRlZFZhbHVlKHN0eWxl
Lm1hcmdpblJpZ2h0KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKSB9OwogfQogCi1Gb3JtYXR0aW5n
Q29udGV4dDo6SW50cmluc2ljV2lkdGhDb25zdHJhaW50cyBGb3JtYXR0aW5nR2VvbWV0cnk6OmNv
bnN0cmFpbkJ5TWluTWF4V2lkdGgoY29uc3QgQm94JiBsYXlvdXRCb3gsIEZvcm1hdHRpbmdDb250
ZXh0OjpJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzIGludHJpbnNpY1dpZHRoKSBjb25zdAorSW50
cmluc2ljV2lkdGhDb25zdHJhaW50cyBGb3JtYXR0aW5nR2VvbWV0cnk6OmNvbnN0cmFpbkJ5TWlu
TWF4V2lkdGgoY29uc3QgQm94JiBsYXlvdXRCb3gsIEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMg
aW50cmluc2ljV2lkdGgpIGNvbnN0CiB7CiAgICAgYXV0byYgc3R5bGUgPSBsYXlvdXRCb3guc3R5
bGUoKTsKICAgICBhdXRvIG1pbldpZHRoID0gZml4ZWRWYWx1ZShzdHlsZS5sb2dpY2FsTWluV2lk
dGgoKSk7CkBAIC0xMTUwLDcgKzExNTAsNyBAQCBGb3JtYXR0aW5nQ29udGV4dDo6SW50cmluc2lj
V2lkdGhDb25zdHJhaW50cyBGb3JtYXR0aW5nR2VvbWV0cnk6OmNvbnN0cmFpbkJ5TWluTQogICAg
IHJldHVybiBpbnRyaW5zaWNXaWR0aDsKIH0KIAotRm9ybWF0dGluZ0NvbnRleHQ6OkNvbnN0cmFp
bnRzRm9yT3V0T2ZGbG93Q29udGVudCBGb3JtYXR0aW5nR2VvbWV0cnk6OmNvbnN0cmFpbnRzRm9y
T3V0T2ZGbG93Q29udGVudChjb25zdCBDb250YWluZXJCb3gmIGNvbnRhaW5lckJveCkKK0NvbnN0
cmFpbnRzRm9yT3V0T2ZGbG93Q29udGVudCBGb3JtYXR0aW5nR2VvbWV0cnk6OmNvbnN0cmFpbnRz
Rm9yT3V0T2ZGbG93Q29udGVudChjb25zdCBDb250YWluZXJCb3gmIGNvbnRhaW5lckJveCkKIHsK
ICAgICBhdXRvJiBib3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JC
b3goY29udGFpbmVyQm94KTsKICAgICByZXR1cm4gewpAQCAtMTE1OSw3ICsxMTU5LDcgQEAgRm9y
bWF0dGluZ0NvbnRleHQ6OkNvbnN0cmFpbnRzRm9yT3V0T2ZGbG93Q29udGVudCBGb3JtYXR0aW5n
R2VvbWV0cnk6OmNvbnN0cmFpbnQKICAgICAgICAgYm94R2VvbWV0cnkuY29udGVudEJveFdpZHRo
KCkgfTsKIH0KIAotRm9ybWF0dGluZ0NvbnRleHQ6OkNvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVu
dCBGb3JtYXR0aW5nR2VvbWV0cnk6OmNvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudChjb25zdCBD
b250YWluZXJCb3gmIGNvbnRhaW5lckJveCwgT3B0aW9uYWw8Rm9ybWF0dGluZ0NvbnRleHQ6OkVz
Y2FwZVJlYXNvbj4gZXNjYXBlUmVhc29uKSBjb25zdAorQ29uc3RyYWludHNGb3JJbkZsb3dDb250
ZW50IEZvcm1hdHRpbmdHZW9tZXRyeTo6Y29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50KGNvbnN0
IENvbnRhaW5lckJveCYgY29udGFpbmVyQm94LCBPcHRpb25hbDxGb3JtYXR0aW5nQ29udGV4dDo6
RXNjYXBlUmVhc29uPiBlc2NhcGVSZWFzb24pIGNvbnN0CiB7CiAgICAgYXV0byYgYm94R2VvbWV0
cnkgPSBmb3JtYXR0aW5nQ29udGV4dCgpLmdlb21ldHJ5Rm9yQm94KGNvbnRhaW5lckJveCwgZXNj
YXBlUmVhc29uKTsKICAgICByZXR1cm4geyB7IGJveEdlb21ldHJ5LmNvbnRlbnRCb3hMZWZ0KCks
IGJveEdlb21ldHJ5LmNvbnRlbnRCb3hXaWR0aCgpIH0sIHsgYm94R2VvbWV0cnkuY29udGVudEJv
eFRvcCgpLCBjb21wdXRlZEhlaWdodChjb250YWluZXJCb3gpIH0gfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0dlb21ldHJ5
LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdH
ZW9tZXRyeS5oCmluZGV4IDZjNTUwM2ZhMjk0MGNiZWJmMDhlYTA4YjNiY2I5ZjIwODI0ZWM3Mjku
LmFjOTkzNjdkNmFmMDA1MGQ4NzVmNjgzMTk3YjNjNjI0NDJlMWQzNDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0dlb21ldHJ5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0
aW5nR2VvbWV0cnkuaApAQCAtNzksMTIgKzc5LDEyIEBAIHB1YmxpYzoKICAgICBPcHRpb25hbDxM
YXlvdXRVbml0PiBjb21wdXRlZE1pbldpZHRoKGNvbnN0IEJveCYsIExheW91dFVuaXQgY29udGFp
bmluZ0Jsb2NrV2lkdGgpOwogICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGNvbXB1dGVkTWF4V2lk
dGgoY29uc3QgQm94JiwgTGF5b3V0VW5pdCBjb250YWluaW5nQmxvY2tXaWR0aCk7CiAKLSAgICBG
b3JtYXR0aW5nQ29udGV4dDo6SW50cmluc2ljV2lkdGhDb25zdHJhaW50cyBjb25zdHJhaW5CeU1p
bk1heFdpZHRoKGNvbnN0IEJveCYsIEZvcm1hdHRpbmdDb250ZXh0OjpJbnRyaW5zaWNXaWR0aENv
bnN0cmFpbnRzKSBjb25zdDsKKyAgICBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzIGNvbnN0cmFp
bkJ5TWluTWF4V2lkdGgoY29uc3QgQm94JiwgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cykgY29u
c3Q7CiAKICAgICBMYXlvdXRVbml0IGNvbnRlbnRIZWlnaHRGb3JGb3JtYXR0aW5nQ29udGV4dFJv
b3QoY29uc3QgQ29udGFpbmVyQm94JikgY29uc3Q7CiAKLSAgICBGb3JtYXR0aW5nQ29udGV4dDo6
Q29uc3RyYWludHNGb3JPdXRPZkZsb3dDb250ZW50IGNvbnN0cmFpbnRzRm9yT3V0T2ZGbG93Q29u
dGVudChjb25zdCBDb250YWluZXJCb3gmKTsKLSAgICBGb3JtYXR0aW5nQ29udGV4dDo6Q29uc3Ry
YWludHNGb3JJbkZsb3dDb250ZW50IGNvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudChjb25zdCBD
b250YWluZXJCb3gmLCBPcHRpb25hbDxGb3JtYXR0aW5nQ29udGV4dDo6RXNjYXBlUmVhc29uPiA9
IFdURjo6bnVsbG9wdCkgY29uc3Q7CisgICAgQ29uc3RyYWludHNGb3JPdXRPZkZsb3dDb250ZW50
IGNvbnN0cmFpbnRzRm9yT3V0T2ZGbG93Q29udGVudChjb25zdCBDb250YWluZXJCb3gmKTsKKyAg
ICBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQgY29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50
KGNvbnN0IENvbnRhaW5lckJveCYsIE9wdGlvbmFsPEZvcm1hdHRpbmdDb250ZXh0OjpFc2NhcGVS
ZWFzb24+ID0gV1RGOjpudWxsb3B0KSBjb25zdDsKIAogICAgIE9wdGlvbmFsPExheW91dFVuaXQ+
IGNvbXB1dGVkSGVpZ2h0KGNvbnN0IEJveCYsIE9wdGlvbmFsPExheW91dFVuaXQ+IGNvbnRhaW5p
bmdCbG9ja0hlaWdodCA9IFdURjo6bnVsbG9wdCkgY29uc3Q7CiAgICAgT3B0aW9uYWw8TGF5b3V0
VW5pdD4gY29tcHV0ZWRXaWR0aChjb25zdCBCb3gmLCBMYXlvdXRVbml0IGNvbnRhaW5pbmdCbG9j
a1dpZHRoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3Bw
CmluZGV4IGRmOWEwMDEwNTg2YjBiY2YyOGNkMzA3NWUxYzZhMzNjMjE3Y2ZjMTguLmZmNWM1MDNm
NGQwNTFjYzU4N2UzYzAzY2FjZDRhMzNjMGY2YmVlOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nQ29udGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9j
ay9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMjgsOCArMjgsOCBAQAogCiAjaWYgRU5B
QkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCiAKLSNpbmNsdWRlICJCbG9ja0Zvcm1hdHRp
bmdTdGF0ZS5oIgogI2luY2x1ZGUgIkJsb2NrRm9ybWF0dGluZ0dlb21ldHJ5LmgiCisjaW5jbHVk
ZSAiQmxvY2tGb3JtYXR0aW5nU3RhdGUuaCIKICNpbmNsdWRlICJCbG9ja01hcmdpbkNvbGxhcHNl
LmgiCiAjaW5jbHVkZSAiRmxvYXRpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiRmxvYXRpbmdTdGF0
ZS5oIgpAQCAtNDI2LDcgKzQyNiw3IEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29t
cHV0ZUhlaWdodEFuZE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QKICAgICB1cGRh
dGVNYXJnaW5BZnRlckZvclByZXZpb3VzU2libGluZyhsYXlvdXRCb3gpOwogfQogCi1Gb3JtYXR0
aW5nQ29udGV4dDo6SW50cmluc2ljV2lkdGhDb25zdHJhaW50cyBCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0Ojpjb21wdXRlZEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMoKQorSW50cmluc2ljV2lkdGhD
b25zdHJhaW50cyBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlZEludHJpbnNpY1dpZHRo
Q29uc3RyYWludHMoKQogewogICAgIGF1dG8mIGZvcm1hdHRpbmdTdGF0ZSA9IHRoaXMtPmZvcm1h
dHRpbmdTdGF0ZSgpOwogICAgIEFTU0VSVCghZm9ybWF0dGluZ1N0YXRlLmludHJpbnNpY1dpZHRo
Q29uc3RyYWludHMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0dlb21ldHJ5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nR2Vv
bWV0cnkuY3BwCmluZGV4IDk1MTcxOThkM2E4YTU0OTlkMDA4Y2QwMGVjODAyZTAxMmMyNzE4Nzgu
LjA0NzdkY2FjZjM4NWFlMDcxMGM5N2E5NTU5ZDcxMjE3ZjA4OGI1MTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0
aW5nR2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nR2VvbWV0cnkuY3BwCkBAIC0zMzIsNyArMzMyLDcg
QEAgQ29udGVudFdpZHRoQW5kTWFyZ2luIEJsb2NrRm9ybWF0dGluZ0dlb21ldHJ5Ojpjb21wdXRl
ZENvbnRlbnRXaWR0aEFuZE1hcmdpbihjb24KICAgICByZXR1cm4gY29udGVudFdpZHRoQW5kTWFy
Z2luOwogfQogCi1Gb3JtYXR0aW5nQ29udGV4dDo6SW50cmluc2ljV2lkdGhDb25zdHJhaW50cyBC
bG9ja0Zvcm1hdHRpbmdHZW9tZXRyeTo6aW50cmluc2ljV2lkdGhDb25zdHJhaW50cyhjb25zdCBC
b3gmIGxheW91dEJveCkKK0ludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgQmxvY2tGb3JtYXR0aW5n
R2VvbWV0cnk6OmludHJpbnNpY1dpZHRoQ29uc3RyYWludHMoY29uc3QgQm94JiBsYXlvdXRCb3gp
CiB7CiAgICAgYXV0byBmaXhlZE1hcmdpbkJvcmRlckFuZFBhZGRpbmcgPSBbJl0oYXV0byYgbGF5
b3V0Qm94KSB7CiAgICAgICAgIGF1dG8mIHN0eWxlID0gbGF5b3V0Qm94LnN0eWxlKCk7CkBAIC0z
NDQsNyArMzQ0LDcgQEAgRm9ybWF0dGluZ0NvbnRleHQ6OkludHJpbnNpY1dpZHRoQ29uc3RyYWlu
dHMgQmxvY2tGb3JtYXR0aW5nR2VvbWV0cnk6OmludHJpbnNpY1cKICAgICAgICAgICAgICsgZml4
ZWRWYWx1ZShzdHlsZS5tYXJnaW5FbmQoKSkudmFsdWVPcigwKTsKICAgICB9OwogCi0gICAgYXV0
byBjb21wdXRlZEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgPSBbJl0oKSAtPiBGb3JtYXR0aW5n
Q29udGV4dDo6SW50cmluc2ljV2lkdGhDb25zdHJhaW50cyB7CisgICAgYXV0byBjb21wdXRlZElu
dHJpbnNpY1dpZHRoQ29uc3RyYWludHMgPSBbJl0oKSAtPiBJbnRyaW5zaWNXaWR0aENvbnN0cmFp
bnRzIHsKICAgICAgICAgYXV0byBsb2dpY2FsV2lkdGggPSBsYXlvdXRCb3guc3R5bGUoKS5sb2dp
Y2FsV2lkdGgoKTsKICAgICAgICAgLy8gTWluaW11bS9tYXhpbXVtIHdpZHRoIGNhbid0IGJlIGRl
cGVuZGluZyBvbiB0aGUgY29udGFpbmluZyBibG9jaydzIHdpZHRoLgogICAgICAgICBhdXRvIG5l
ZWRzUmVzb2x2ZWRDb250YWluaW5nQmxvY2tXaWR0aCA9IGxvZ2ljYWxXaWR0aC5pc0NhbGN1bGF0
ZWQoKSB8fCBsb2dpY2FsV2lkdGguaXNQZXJjZW50KCkgfHwgbG9naWNhbFdpZHRoLmlzUmVsYXRp
dmUoKTsKQEAgLTM4MSw3ICszODEsNyBAQCBGb3JtYXR0aW5nQ29udGV4dDo6SW50cmluc2ljV2lk
dGhDb25zdHJhaW50cyBCbG9ja0Zvcm1hdHRpbmdHZW9tZXRyeTo6aW50cmluc2ljVwogICAgICAg
ICAgICAgcmV0dXJuIGludHJpbnNpY1dpZHRoQ29uc3RyYWludHM7CiAgICAgICAgIH0KIAotICAg
ICAgICBhdXRvIGludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgPSBGb3JtYXR0aW5nQ29udGV4dDo6
SW50cmluc2ljV2lkdGhDb25zdHJhaW50cyB7IH07CisgICAgICAgIGF1dG8gaW50cmluc2ljV2lk
dGhDb25zdHJhaW50cyA9IEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgeyB9OwogICAgICAgICBh
dXRvJiBmb3JtYXR0aW5nU3RhdGUgPSBsYXlvdXRTdGF0ZSgpLmZvcm1hdHRpbmdTdGF0ZUZvckJv
eChsYXlvdXRCb3gpOwogICAgICAgICBmb3IgKGF1dG8mIGNoaWxkIDogY2hpbGRyZW5PZlR5cGU8
Qm94Pihkb3duY2FzdDxDb250YWluZXJCb3g+KGxheW91dEJveCkpKSB7CiAgICAgICAgICAgICBp
ZiAoY2hpbGQuaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgfHwgKGNoaWxkLmlzRmxvYXRBdm9pZGVy
KCkgJiYgIWNoaWxkLmhhc0Zsb2F0Q2xlYXIoKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0dlb21ldHJ5
LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2Nr
Rm9ybWF0dGluZ0dlb21ldHJ5LmgKaW5kZXggMDZhNDAzMjBkNWRlNDdjMDAxNGM1ODMzNTc1ZWE3
YzY2ZWU4ZDE4OC4uYzIyNjZlMzQ4YTk2MzA5NTk0OWViODc2Mzk0NDEzYTQxZGE0ZTM0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9C
bG9ja0Zvcm1hdHRpbmdHZW9tZXRyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nR2VvbWV0cnkuaApAQCAtNDQsNyAr
NDQsNyBAQCBwdWJsaWM6CiAgICAgTGF5b3V0VW5pdCBzdGF0aWNWZXJ0aWNhbFBvc2l0aW9uKGNv
bnN0IEJveCYsIGNvbnN0IFZlcnRpY2FsQ29uc3RyYWludHMmKSBjb25zdDsKICAgICBMYXlvdXRV
bml0IHN0YXRpY0hvcml6b250YWxQb3NpdGlvbihjb25zdCBCb3gmLCBjb25zdCBIb3Jpem9udGFs
Q29uc3RyYWludHMmKSBjb25zdDsKIAotICAgIEZvcm1hdHRpbmdDb250ZXh0OjpJbnRyaW5zaWNX
aWR0aENvbnN0cmFpbnRzIGludHJpbnNpY1dpZHRoQ29uc3RyYWludHMoY29uc3QgQm94Jik7Cisg
ICAgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyBpbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzKGNv
bnN0IEJveCYpOwogCiAgICAgQ29udGVudFdpZHRoQW5kTWFyZ2luIGNvbXB1dGVkQ29udGVudFdp
ZHRoQW5kTWFyZ2luKGNvbnN0IEJveCYsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYsIE9w
dGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZVdpZHRoRmxvYXRBdm9pZGVyKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9j
a01hcmdpbkNvbGxhcHNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvYmxvY2svQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHAKaW5kZXggN2U3NTgwMTlmOGFkNjFh
NGMwZWRhNjlkYTRlYTFiYzUxZGVmNGRiNy4uYzY3NTJmNWI4MDY0NWE5YmNlYjYwMTM2OWQwNGVh
NzZiYTIyNjQyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9ibG9jay9CbG9ja01hcmdpbkNvbGxhcHNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrTWFyZ2luQ29sbGFwc2UuY3Bw
CkBAIC0yOCw4ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVY
VCkKIAotI2luY2x1ZGUgIkJsb2NrRm9ybWF0dGluZ1N0YXRlLmgiCiAjaW5jbHVkZSAiQmxvY2tG
b3JtYXR0aW5nUXVpcmtzLmgiCisjaW5jbHVkZSAiQmxvY2tGb3JtYXR0aW5nU3RhdGUuaCIKICNp
bmNsdWRlICJGbG9hdGluZ1N0YXRlLmgiCiAjaW5jbHVkZSAiSW5saW5lRm9ybWF0dGluZ1N0YXRl
LmgiCiAjaW5jbHVkZSAiTGF5b3V0Qm94LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2ZsZXgvRmxleEZvcm1hdHRpbmdDb250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvZmxleC9GbGV4Rm9ybWF0
dGluZ0NvbnRleHQuY3BwCmluZGV4IDRjZjZiNjlkM2M4OTRkZjg1OGUwN2U0YmExMjkzOTQ2ZDRm
YzJjYzMuLjYzNjFmOGU5MWU3NDQ3NDM0NjM0MjAxNDg4NmU1ZjEwZGEzYThkYjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvZmxleC9GbGV4Rm9y
bWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvZmxleC9GbGV4Rm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC01OSw3ICs1OSw3IEBA
IExheW91dFVuaXQgRmxleEZvcm1hdHRpbmdDb250ZXh0Ojp1c2VkQ29udGVudEhlaWdodCgpIGNv
bnN0CiAgICAgcmV0dXJuIExheW91dFVuaXQgeyBsaW5lcy5sYXN0KCkuYm90dG9tKCkgLSBsaW5l
cy5maXJzdCgpLnRvcCgpIH07CiB9CiAKLUZvcm1hdHRpbmdDb250ZXh0OjpJbnRyaW5zaWNXaWR0
aENvbnN0cmFpbnRzIEZsZXhGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZWRJbnRyaW5zaWNXaWR0
aENvbnN0cmFpbnRzKCkKK0ludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgRmxleEZvcm1hdHRpbmdD
b250ZXh0Ojpjb21wdXRlZEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMoKQogewogICAgIHJldHVy
biB7IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2ZsZXgvRmxleEZvcm1hdHRpbmdHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2ZsZXgvRmxleEZvcm1hdHRpbmdHZW9tZXRyeS5jcHAK
aW5kZXggODMxOTUwZTVmMjZmZjY2ZDBmMDA2NTU2ZTgwZGE4NWQ3MTJmYjcwZi4uM2U5NjIyMmRm
Y2M3OThkYzBmMTIzYWI3YjZkMzE1NmFiNGRkMDNkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9mbGV4L0ZsZXhGb3JtYXR0aW5nR2VvbWV0cnku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvZmxleC9G
bGV4Rm9ybWF0dGluZ0dlb21ldHJ5LmNwcApAQCAtNDAsNyArNDAsNyBAQCBGbGV4Rm9ybWF0dGlu
Z0dlb21ldHJ5OjpGbGV4Rm9ybWF0dGluZ0dlb21ldHJ5KGNvbnN0IEZsZXhGb3JtYXR0aW5nQ29u
dGV4dCYgZmxleAogewogfQogCi1Gb3JtYXR0aW5nQ29udGV4dDo6SW50cmluc2ljV2lkdGhDb25z
dHJhaW50cyBGbGV4Rm9ybWF0dGluZ0dlb21ldHJ5OjppbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRz
KGNvbnN0IENvbnRhaW5lckJveCYgZmxleEl0ZW0pCitJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRz
IEZsZXhGb3JtYXR0aW5nR2VvbWV0cnk6OmludHJpbnNpY1dpZHRoQ29uc3RyYWludHMoY29uc3Qg
Q29udGFpbmVyQm94JiBmbGV4SXRlbSkKIHsKICAgICBhdXRvIGZpeGVkTWFyZ2luQm9yZGVyQW5k
UGFkZGluZyA9IFsmXShhdXRvJiBsYXlvdXRCb3gpIHsKICAgICAgICAgYXV0byYgc3R5bGUgPSBs
YXlvdXRCb3guc3R5bGUoKTsKQEAgLTUyLDcgKzUyLDcgQEAgRm9ybWF0dGluZ0NvbnRleHQ6Oklu
dHJpbnNpY1dpZHRoQ29uc3RyYWludHMgRmxleEZvcm1hdHRpbmdHZW9tZXRyeTo6aW50cmluc2lj
V2kKICAgICAgICAgICAgICsgZml4ZWRWYWx1ZShzdHlsZS5tYXJnaW5FbmQoKSkudmFsdWVPcigw
KTsKICAgICB9OwogCi0gICAgYXV0byBjb21wdXRlZEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMg
PSBbJl0oKSAtPiBGb3JtYXR0aW5nQ29udGV4dDo6SW50cmluc2ljV2lkdGhDb25zdHJhaW50cyB7
CisgICAgYXV0byBjb21wdXRlZEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgPSBbJl0oKSAtPiBJ
bnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzIHsKICAgICAgICAgYXV0byBsb2dpY2FsV2lkdGggPSBm
bGV4SXRlbS5zdHlsZSgpLmxvZ2ljYWxXaWR0aCgpOwogICAgICAgICAvLyBNaW5pbXVtL21heGlt
dW0gd2lkdGggY2FuJ3QgYmUgZGVwZW5kaW5nIG9uIHRoZSBjb250YWluaW5nIGJsb2NrJ3Mgd2lk
dGguCiAgICAgICAgIGF1dG8gbmVlZHNSZXNvbHZlZENvbnRhaW5pbmdCbG9ja1dpZHRoID0gbG9n
aWNhbFdpZHRoLmlzQ2FsY3VsYXRlZCgpIHx8IGxvZ2ljYWxXaWR0aC5pc1BlcmNlbnQoKSB8fCBs
b2dpY2FsV2lkdGguaXNSZWxhdGl2ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9mbGV4L0ZsZXhGb3JtYXR0aW5nR2VvbWV0cnkuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvZmxleC9GbGV4Rm9ybWF0dGlu
Z0dlb21ldHJ5LmgKaW5kZXggNjI4YzkzMzUyODJjODEzMjE2YTYyMzFmMTczZGNkZmYyNzlmMjVh
Ni4uMTg5Y2Y4MmQ2MGNmMGRiOGY3Y2U2ODcyNzM1NjhkNDIwNmZlZmQzNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9mbGV4L0ZsZXhGb3JtYXR0
aW5nR2VvbWV0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2ZsZXgvRmxleEZvcm1hdHRpbmdHZW9tZXRyeS5oCkBAIC0zNyw3ICszNyw3IEBAIGNsYXNz
IEZsZXhGb3JtYXR0aW5nR2VvbWV0cnkgOiBwdWJsaWMgRm9ybWF0dGluZ0dlb21ldHJ5IHsKIHB1
YmxpYzoKICAgICBGbGV4Rm9ybWF0dGluZ0dlb21ldHJ5KGNvbnN0IEZsZXhGb3JtYXR0aW5nQ29u
dGV4dCYpOwogCi0gICAgRm9ybWF0dGluZ0NvbnRleHQ6OkludHJpbnNpY1dpZHRoQ29uc3RyYWlu
dHMgaW50cmluc2ljV2lkdGhDb25zdHJhaW50cyhjb25zdCBDb250YWluZXJCb3gmKTsKKyAgICBJ
bnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzIGludHJpbnNpY1dpZHRoQ29uc3RyYWludHMoY29uc3Qg
Q29udGFpbmVyQm94Jik7CiAKIHByaXZhdGU6CiAgICAgY29uc3QgRmxleEZvcm1hdHRpbmdDb250
ZXh0JiBmb3JtYXR0aW5nQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PEZsZXhGb3Jt
YXR0aW5nQ29udGV4dD4oRm9ybWF0dGluZ0dlb21ldHJ5Ojpmb3JtYXR0aW5nQ29udGV4dCgpKTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCmlu
ZGV4IGZkZTViZTVhYjQ5ODQzMjkxYmE3MDVlZGZjYWVmNWQ0Yjg0ZWIwODkuLjg2YzgzNGMzMTJm
NWNhNWRlZjY0MDRhNWY3MjA5YzEzM2VhNmVkZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTMxLDggKzMxLDggQEAKICNpbmNsdWRl
ICJGbG9hdGluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgogI2luY2x1ZGUg
IklubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5oIgotI2luY2x1ZGUgIklubGluZUZvcm1hdHRpbmdT
dGF0ZS5oIgogI2luY2x1ZGUgIklubGluZUZvcm1hdHRpbmdRdWlya3MuaCIKKyNpbmNsdWRlICJJ
bmxpbmVGb3JtYXR0aW5nU3RhdGUuaCIKICNpbmNsdWRlICJJbmxpbmVMaW5lQm94LmgiCiAjaW5j
bHVkZSAiSW5saW5lTGluZVJ1bi5oIgogI2luY2x1ZGUgIklubGluZVRleHRJdGVtLmgiCkBAIC0y
NDMsNyArMjQzLDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGluZUxheW91dChJ
bmxpbmVJdGVtcyYgaW5saW5lSXRlbXMsIExpbmVCdWlsZGVyOjoKICAgICB9CiB9CiAKLUZvcm1h
dHRpbmdDb250ZXh0OjpJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzIElubGluZUZvcm1hdHRpbmdD
b250ZXh0Ojpjb21wdXRlZEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMoKQorSW50cmluc2ljV2lk
dGhDb25zdHJhaW50cyBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZWRJbnRyaW5zaWNX
aWR0aENvbnN0cmFpbnRzKCkKIHsKICAgICBhdXRvJiBsYXlvdXRTdGF0ZSA9IHRoaXMtPmxheW91
dFN0YXRlKCk7CiAgICAgQVNTRVJUKCFmb3JtYXR0aW5nU3RhdGUoKS5pbnRyaW5zaWNXaWR0aENv
bnN0cmFpbnRzKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nQ29udGV4
dC5jcHAKaW5kZXggOWEyMDU4NTM5MjU3ZDNhOTAxY2IzY2FjMTczZmQzYWFlOTFmYjAzNi4uNTQx
YTA0YTY0MzM0NDhlYTViMmJjMjFlMTE4YjA2NWY1ZmRiZGVmMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdD
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L3RhYmxlL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC0zMDQsNyArMzA0LDcgQEAgdm9p
ZCBUYWJsZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRDZWxsKGNvbnN0IFRhYmxlR3JpZDo6Q2Vs
bCYgY2VsbCwgTGF5b3V0VW5pdAogICAgIGNlbGxCb3hHZW9tZXRyeS5zZXRDb250ZW50Qm94SGVp
Z2h0KGdlb21ldHJ5KCkuY2VsbEhlaWdoKGNlbGxCb3gpKTsKIH0KIAotRm9ybWF0dGluZ0NvbnRl
eHQ6OkludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6Y29t
cHV0ZWRJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzKCkKK0ludHJpbnNpY1dpZHRoQ29uc3RyYWlu
dHMgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZWRJbnRyaW5zaWNXaWR0aENvbnN0cmFp
bnRzKCkKIHsKICAgICBBU1NFUlQoIXJvb3QoKS5pc1NpemVDb250YWlubWVudEJveCgpKTsKICAg
ICAvLyBUYWJsZXMgaGF2ZSBhIHNsaWdodHkgZGlmZmVyZW50IGNvbmNlcHQgb2Ygc2hyaW5rIHRv
IGZpdC4gSXQncyByZWFsbHkgb25seSBkaWZmZXJlbnQgd2l0aCBub24tYXV0byAid2lkdGgiIHZh
bHVlcywgd2hlcmUKQEAgLTM3MSw3ICszNzEsNyBAQCBVbmlxdWVSZWY8VGFibGVHcmlkPiBUYWJs
ZUZvcm1hdHRpbmdDb250ZXh0OjplbnN1cmVUYWJsZUdyaWQoY29uc3QgQ29udGFpbmVyQm94Jgog
ICAgIHJldHVybiB0YWJsZUdyaWQ7CiB9CiAKLUZvcm1hdHRpbmdDb250ZXh0OjpJbnRyaW5zaWNX
aWR0aENvbnN0cmFpbnRzIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVkUHJlZmVycmVk
V2lkdGhGb3JDb2x1bW5zKCkKK0ludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgVGFibGVGb3JtYXR0
aW5nQ29udGV4dDo6Y29tcHV0ZWRQcmVmZXJyZWRXaWR0aEZvckNvbHVtbnMoKQogewogICAgIGF1
dG8mIGZvcm1hdHRpbmdTdGF0ZSA9IHRoaXMtPmZvcm1hdHRpbmdTdGF0ZSgpOwogICAgIGF1dG8m
IGdyaWQgPSBmb3JtYXR0aW5nU3RhdGUudGFibGVHcmlkKCk7CkBAIC00MTMsNyArNDEzLDcgQEAg
Rm9ybWF0dGluZ0NvbnRleHQ6OkludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgVGFibGVGb3JtYXR0
aW5nQ29udGV4dDo6Y29tcHV0ZWRQcmUKICAgICAgICAgZml4ZWRXaWR0aENvbHVtbnMuYXBwZW5k
KGZpeGVkV2lkdGgoKSk7CiAgICAgfQogCi0gICAgVmVjdG9yPEZvcm1hdHRpbmdDb250ZXh0OjpJ
bnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzPiBjb2x1bW5JbnRyaW5zaWNXaWR0aHMoY29sdW1uTGlz
dC5zaXplKCkpOworICAgIFZlY3RvcjxJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzPiBjb2x1bW5J
bnRyaW5zaWNXaWR0aHMoY29sdW1uTGlzdC5zaXplKCkpOwogICAgIC8vIDMuIENvbGxlY3QgaGUg
bWluL21heCB3aWR0aCBmb3IgZWFjaCBjb2x1bW4gYnV0IGlnbm9yZSBjb2x1bW4gc3BhbnMgZm9y
IG5vdy4KICAgICBWZWN0b3I8U2xvdFBvc2l0aW9uPiBzcGFubmluZ0NlbGxQb3NpdGlvbkxpc3Q7
CiAgICAgc2l6ZV90IG51bWJlck9mQWN0dWFsQ29sdW1ucyA9IDA7CkBAIC00MjksNyArNDI5LDcg
QEAgRm9ybWF0dGluZ0NvbnRleHQ6OkludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgVGFibGVGb3Jt
YXR0aW5nQ29udGV4dDo6Y29tcHV0ZWRQcmUKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGF1dG8gY29sdW1uRml4ZWRXaWR0aCA9IGZpeGVkV2lk
dGhDb2x1bW5zW2NvbHVtbkluZGV4XTsKLSAgICAgICAgICAgIGF1dG8gd2lkdGhDb25zdHJhaW50
cyA9ICFjb2x1bW5GaXhlZFdpZHRoID8gc2xvdC53aWR0aENvbnN0cmFpbnRzKCkgOiBGb3JtYXR0
aW5nQ29udGV4dDo6SW50cmluc2ljV2lkdGhDb25zdHJhaW50cyB7ICpjb2x1bW5GaXhlZFdpZHRo
LCAqY29sdW1uRml4ZWRXaWR0aCB9OworICAgICAgICAgICAgYXV0byB3aWR0aENvbnN0cmFpbnRz
ID0gIWNvbHVtbkZpeGVkV2lkdGggPyBzbG90LndpZHRoQ29uc3RyYWludHMoKSA6IEludHJpbnNp
Y1dpZHRoQ29uc3RyYWludHMgeyAqY29sdW1uRml4ZWRXaWR0aCwgKmNvbHVtbkZpeGVkV2lkdGgg
fTsKICAgICAgICAgICAgIGNvbHVtbkludHJpbnNpY1dpZHRoc1tjb2x1bW5JbmRleF0ubWluaW11
bSA9IHN0ZDo6bWF4KHdpZHRoQ29uc3RyYWludHMubWluaW11bSwgY29sdW1uSW50cmluc2ljV2lk
dGhzW2NvbHVtbkluZGV4XS5taW5pbXVtKTsKICAgICAgICAgICAgIGNvbHVtbkludHJpbnNpY1dp
ZHRoc1tjb2x1bW5JbmRleF0ubWF4aW11bSA9IHN0ZDo6bWF4KHdpZHRoQ29uc3RyYWludHMubWF4
aW11bSwgY29sdW1uSW50cmluc2ljV2lkdGhzW2NvbHVtbkluZGV4XS5tYXhpbXVtKTsKICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ0dlb21ldHJ5LmNwcApp
bmRleCBiOTExYTJhZjgyNTk1MzQ2ZjA0OTUwYWExYTI3Yzg4ODc3NzE2YmM3Li4zNzk1YzM2NzQy
Nzk0YTFlY2IwYTkwYmQwMzhlNzQ5MWNhN2Q5NGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ0dlb21ldHJ5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxl
L1RhYmxlRm9ybWF0dGluZ0dlb21ldHJ5LmNwcApAQCAtMTIwLDE1ICsxMjAsMTUgQEAgT3B0aW9u
YWw8TGF5b3V0VW5pdD4gVGFibGVGb3JtYXR0aW5nR2VvbWV0cnk6OmNvbXB1dGVkQ29sdW1uV2lk
dGgoY29uc3QgQ29udGFpbmUKICAgICByZXR1cm4gY29sdW1uQm94LmNvbHVtbldpZHRoKCk7CiB9
CiAKLUZvcm1hdHRpbmdDb250ZXh0OjpJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzIFRhYmxlRm9y
bWF0dGluZ0dlb21ldHJ5OjppbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzRm9yQ2VsbChjb25zdCBU
YWJsZUdyaWQ6OkNlbGwmIGNlbGwpCitJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzIFRhYmxlRm9y
bWF0dGluZ0dlb21ldHJ5OjppbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzRm9yQ2VsbChjb25zdCBU
YWJsZUdyaWQ6OkNlbGwmIGNlbGwpCiB7CiAgICAgYXV0byYgY2VsbEJveCA9IGNlbGwuYm94KCk7
CiAgICAgYXV0byYgc3R5bGUgPSBjZWxsQm94LnN0eWxlKCk7CiAKLSAgICBhdXRvIGNvbXB1dGVk
SW50cmluc2ljV2lkdGhDb25zdHJhaW50cyA9IFsmXSgpIC0+IEZvcm1hdHRpbmdDb250ZXh0OjpJ
bnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzIHsKKyAgICBhdXRvIGNvbXB1dGVkSW50cmluc2ljV2lk
dGhDb25zdHJhaW50cyA9IFsmXSgpIC0+IEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgewogICAg
ICAgICAvLyBFdmVuIGZpeGVkIHdpZHRoIGNlbGxzIGV4cGFuZCB0byB0aGVpciBtaW5pbXVtIGNv
bnRlbnQgd2lkdGgKICAgICAgICAgLy8gPHRkIHN0eWxlPSJ3aWR0aDogMTBweCI+dGVzdF9jb250
ZW50PC90ZD4gd2lsbCBzaXplIHRvIG1heChtaW5pbXVtIGNvbnRlbnQgd2lkdGgsIGNvbXB1dGVk
IHdpZHRoKS4KLSAgICAgICAgYXV0byBpbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzID0gRm9ybWF0
dGluZ0NvbnRleHQ6OkludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgeyB9OworICAgICAgICBhdXRv
IGludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgPSBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzIHsg
fTsKICAgICAgICAgaWYgKGNlbGxCb3guaGFzQ2hpbGQoKSkKICAgICAgICAgICAgIGludHJpbnNp
Y1dpZHRoQ29uc3RyYWludHMgPSBMYXlvdXRDb250ZXh0OjpjcmVhdGVGb3JtYXR0aW5nQ29udGV4
dChjZWxsQm94LCBsYXlvdXRTdGF0ZSgpKS0+Y29tcHV0ZWRJbnRyaW5zaWNXaWR0aENvbnN0cmFp
bnRzKCk7CiAgICAgICAgIGlmIChhdXRvIGZpeGVkV2lkdGggPSBmaXhlZFZhbHVlKHN0eWxlLmxv
Z2ljYWxXaWR0aCgpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nR2VvbWV0cnkuaCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nR2VvbWV0
cnkuaAppbmRleCA0NTljZWIzYWMxNWJiNTA0NDdlZTIzZDlhYTQ1ZGY0MjNiYmM3ZDBlLi4wMGNh
NTkxYzM1Nzg2NTI5ODU1MTJkMDViOGY4OTZlNjc5MTJmYzNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ0dl
b21ldHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90
YWJsZS9UYWJsZUZvcm1hdHRpbmdHZW9tZXRyeS5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoK
ICAgICBMYXlvdXRVbml0IGNlbGxIZWlnaChjb25zdCBDb250YWluZXJCb3gmKSBjb25zdDsKICAg
ICBFZGdlcyBjb21wdXRlZENlbGxCb3JkZXIoY29uc3QgVGFibGVHcmlkOjpDZWxsJikgY29uc3Q7
CiAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZWRDb2x1bW5XaWR0aChjb25zdCBDb250
YWluZXJCb3gmIGNvbHVtbkJveCk7Ci0gICAgRm9ybWF0dGluZ0NvbnRleHQ6OkludHJpbnNpY1dp
ZHRoQ29uc3RyYWludHMgaW50cmluc2ljV2lkdGhDb25zdHJhaW50c0ZvckNlbGwoY29uc3QgVGFi
bGVHcmlkOjpDZWxsJik7CisgICAgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyBpbnRyaW5zaWNX
aWR0aENvbnN0cmFpbnRzRm9yQ2VsbChjb25zdCBUYWJsZUdyaWQ6OkNlbGwmKTsKICAgICBJbmxp
bmVMYXlvdXRVbml0IHVzZWRCYXNlbGluZUZvckNlbGwoY29uc3QgQ29udGFpbmVyQm94JiBjZWxs
Qm94KTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVHcmlkLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlR3JpZC5oCmluZGV4IDYyNWEzZjQ0YmY2MjIx
Y2U0NjUyNTk0MDkxM2VjZTEwYjA2YWFjZWYuLmFmZTg0MTdjOWFlMTk1NzlhOGUzYjYwYjcxY2Iz
YzAzZjNkYzA5YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvdGFibGUvVGFibGVHcmlkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUdyaWQuaApAQCAtNTgsOCArNTgsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRDb2xsYXBzZWRCb3JkZXIoY29uc3QgRWRnZXMmIGNvbGxhcHNlZEJv
cmRlcikgeyBtX2NvbGxhcHNlZEJvcmRlciA9IGNvbGxhcHNlZEJvcmRlcjsgfQogICAgIE9wdGlv
bmFsPEVkZ2VzPiBjb2xsYXBzZWRCb3JkZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbGxhcHNlZEJv
cmRlcjsgfQogCi0gICAgdm9pZCBzZXRXaWR0aENvbnN0cmFpbnRzKEZvcm1hdHRpbmdDb250ZXh0
OjpJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzIGludHJpbnNpY1dpZHRoQ29uc3RyYWludHMpIHsg
bV9pbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzID0gaW50cmluc2ljV2lkdGhDb25zdHJhaW50czsg
fQotICAgIE9wdGlvbmFsPEZvcm1hdHRpbmdDb250ZXh0OjpJbnRyaW5zaWNXaWR0aENvbnN0cmFp
bnRzPiB3aWR0aENvbnN0cmFpbnRzKCkgY29uc3QgeyByZXR1cm4gbV9pbnRyaW5zaWNXaWR0aENv
bnN0cmFpbnRzOyB9CisgICAgdm9pZCBzZXRXaWR0aENvbnN0cmFpbnRzKEludHJpbnNpY1dpZHRo
Q29uc3RyYWludHMgaW50cmluc2ljV2lkdGhDb25zdHJhaW50cykgeyBtX2ludHJpbnNpY1dpZHRo
Q29uc3RyYWludHMgPSBpbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzOyB9CisgICAgT3B0aW9uYWw8
SW50cmluc2ljV2lkdGhDb25zdHJhaW50cz4gd2lkdGhDb25zdHJhaW50cygpIGNvbnN0IHsgcmV0
dXJuIG1faW50cmluc2ljV2lkdGhDb25zdHJhaW50czsgfQogCiAgICAgYm9vbCBpc0VtcHR5KCkg
Y29uc3QgeyByZXR1cm4gbV9zbG90TWFwLmlzRW1wdHkoKTsgfQogICAgIC8vIENvbHVtbiByZXBy
ZXNlbnRzIGEgdmVydGljYWwgc2V0IG9mIHNsb3RzIGluIHRoZSBncmlkLiBBIGNvbHVtbiBoYXMg
aG9yaXpvbnRhbCBwb3NpdGlvbiBhbmQgd2lkdGguCkBAIC0xODcsOCArMTg3LDggQEAgcHVibGlj
OgogICAgICAgICBjb25zdCBDZWxsJiBjZWxsKCkgY29uc3QgeyByZXR1cm4gKm1fY2VsbDsgfQog
ICAgICAgICBDZWxsJiBjZWxsKCkgeyByZXR1cm4gKm1fY2VsbDsgfQogCi0gICAgICAgIGNvbnN0
IEZvcm1hdHRpbmdDb250ZXh0OjpJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzJiB3aWR0aENvbnN0
cmFpbnRzKCkgY29uc3QgeyByZXR1cm4gbV93aWR0aENvbnN0cmFpbnRzOyB9Ci0gICAgICAgIHZv
aWQgc2V0V2lkdGhDb25zdHJhaW50cyhjb25zdCBGb3JtYXR0aW5nQ29udGV4dDo6SW50cmluc2lj
V2lkdGhDb25zdHJhaW50cyYgd2lkdGhDb25zdHJhaW50cykgeyBtX3dpZHRoQ29uc3RyYWludHMg
PSB3aWR0aENvbnN0cmFpbnRzOyB9CisgICAgICAgIGNvbnN0IEludHJpbnNpY1dpZHRoQ29uc3Ry
YWludHMmIHdpZHRoQ29uc3RyYWludHMoKSBjb25zdCB7IHJldHVybiBtX3dpZHRoQ29uc3RyYWlu
dHM7IH0KKyAgICAgICAgdm9pZCBzZXRXaWR0aENvbnN0cmFpbnRzKGNvbnN0IEludHJpbnNpY1dp
ZHRoQ29uc3RyYWludHMmIHdpZHRoQ29uc3RyYWludHMpIHsgbV93aWR0aENvbnN0cmFpbnRzID0g
d2lkdGhDb25zdHJhaW50czsgfQogCiAgICAgICAgIC8vIEluaXRpYWwgc2xvdCBwb3NpdGlvbiBm
b3IgYSBzcGFubmluZyBjZWxsLgogICAgICAgICAvLyA8dGQ+PC90ZD48dGQgY29sc3Bhbj0yPjwv
dGQ+IFsxLCAwXSBzbG90IGhhcyBjb2x1bW4gc3BhbiBvZiAyLgpAQCAtMjA1LDcgKzIwNSw3IEBA
IHB1YmxpYzoKICAgICAgICAgV2Vha1B0cjxDZWxsPiBtX2NlbGw7CiAgICAgICAgIGJvb2wgbV9p
c0NvbHVtblNwYW5uZWQgeyBmYWxzZSB9OwogICAgICAgICBib29sIG1faXNSb3dTcGFubmVkIHsg
ZmFsc2UgfTsKLSAgICAgICAgRm9ybWF0dGluZ0NvbnRleHQ6OkludHJpbnNpY1dpZHRoQ29uc3Ry
YWludHMgbV93aWR0aENvbnN0cmFpbnRzOworICAgICAgICBJbnRyaW5zaWNXaWR0aENvbnN0cmFp
bnRzIG1fd2lkdGhDb25zdHJhaW50czsKICAgICB9OwogCiAgICAgY29uc3QgQ29sdW1ucyYgY29s
dW1ucygpIGNvbnN0IHsgcmV0dXJuIG1fY29sdW1uczsgfQpAQCAtMjMxLDcgKzIzMSw3IEBAIHBy
aXZhdGU6CiAKICAgICBMYXlvdXRVbml0IG1faG9yaXpvbnRhbFNwYWNpbmc7CiAgICAgTGF5b3V0
VW5pdCBtX3ZlcnRpY2FsU3BhY2luZzsKLSAgICBPcHRpb25hbDxGb3JtYXR0aW5nQ29udGV4dDo6
SW50cmluc2ljV2lkdGhDb25zdHJhaW50cz4gbV9pbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzOwor
ICAgIE9wdGlvbmFsPEludHJpbnNpY1dpZHRoQ29uc3RyYWludHM+IG1faW50cmluc2ljV2lkdGhD
b25zdHJhaW50czsKICAgICBPcHRpb25hbDxFZGdlcz4gbV9jb2xsYXBzZWRCb3JkZXI7CiB9Owog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428788</attachid>
            <date>2021-05-16 08:17:16 -0700</date>
            <delta_ts>2021-05-16 08:57:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225744-20210516081715.patch</filename>
            <type>text/plain</type>
            <size>38450</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTNhNTcwMTgxZDc4YWE2
ZmEyNjg2ZmExMTkwZTMwMjM1ODc1MGY1Ny4uZjBmMDA3MWRmYmFhODQyYWNkMjE0OGIyYzMxOGVj
ODY3NWJlZmYzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDIxLTA1LTE2ICBBbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZDXSBDbGVhbnVwIEZvcm1h
dHRpbmdDb250ZXh0IGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjU3NDQKKworICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4K
KworICAgICAgICBUaGlzIGZpbmFsIHBhdGNoIG1ha2VzIHRoZSBGb3JtYXR0aW5nQ29udGV4dCBp
bnRlcmZhY2UgdW5jbHV0dGVyZWQuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdTdGF0ZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nU3RhdGU6OnNldEludHJpbnNpY1dpZHRoQ29u
c3RyYWludHMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nU3RhdGU6Omlu
dHJpbnNpY1dpZHRoQ29uc3RyYWludHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpGb3JtYXR0aW5nU3RhdGU6OnNldEludHJpbnNpY1dpZHRoQ29uc3RyYWludHNGb3JCb3gpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nU3RhdGU6OmludHJpbnNpY1dpZHRo
Q29uc3RyYWludHNGb3JCb3ggY29uc3QpOgorICAgICAgICAqIGxheW91dC9MYXlvdXRDb250ZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGF5b3V0Q29udGV4dDo6bGF5b3V0Rm9y
bWF0dGluZ0NvbnRleHRTdWJ0cmVlKToKKyAgICAgICAgKiBsYXlvdXQvTGF5b3V0VW5pdHMuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW50cmluc2ljV2lkdGhDb25zdHJhaW50czo6ZXhw
YW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW50cmluc2ljV2lkdGhDb25zdHJhaW50
czo6b3BlcmF0b3IrPSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkludHJpbnNpY1dpZHRo
Q29uc3RyYWludHM6Om9wZXJhdG9yLT0pOgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvRm9ybWF0dGluZ0NvbnRleHQuY3BwOgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvRm9ybWF0dGluZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
Rm9ybWF0dGluZ0NvbnRleHQ6OnJvb3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpGb3JtYXR0aW5nQ29udGV4dDo6Zm9ybWF0dGluZ1N0YXRlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OmlzQmxvY2tGb3JtYXR0aW5nQ29udGV4
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0Ojpp
c0lubGluZUZvcm1hdHRpbmdDb250ZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OmlzVGFibGVGb3JtYXR0aW5nQ29udGV4dCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0Ojppc1RhYmxlV3JhcHBl
ckJsb2NrRm9ybWF0dGluZ0NvbnRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpGb3JtYXR0aW5nQ29udGV4dDo6aXNGbGV4Rm9ybWF0dGluZ0NvbnRleHQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6SW50cmluc2ljV2lkdGhD
b25zdHJhaW50czo6ZXhwYW5kKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
Rm9ybWF0dGluZ0NvbnRleHQ6OkludHJpbnNpY1dpZHRoQ29uc3RyYWludHM6Om9wZXJhdG9yKz0p
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6
SW50cmluc2ljV2lkdGhDb25zdHJhaW50czo6b3BlcmF0b3ItPSk6IERlbGV0ZWQuCisgICAgICAg
ICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nR2VvbWV0cnkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nR2VvbWV0cnk6OmNvbXB1dGVkV2lkdGhW
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdHZW9tZXRyeTo6c2hy
aW5rVG9GaXRXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdHZW9t
ZXRyeTo6Y29uc3RyYWluQnlNaW5NYXhXaWR0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkZvcm1hdHRpbmdHZW9tZXRyeTo6Y29uc3RyYWludHNGb3JPdXRPZkZsb3dDb250ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0dlb21ldHJ5Ojpjb25zdHJh
aW50c0ZvckluRmxvd0NvbnRlbnQgY29uc3QpOgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvRm9ybWF0dGluZ0dlb21ldHJ5Lmg6CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZWRJbnRyaW5zaWNX
aWR0aENvbnN0cmFpbnRzKToKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Js
b2NrL0Jsb2NrRm9ybWF0dGluZ0dlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6QmxvY2tGb3JtYXR0aW5nR2VvbWV0cnk6OmludHJpbnNpY1dpZHRoQ29uc3RyYWludHMpOgor
ICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5n
R2VvbWV0cnkuaDoKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Js
b2NrTWFyZ2luQ29sbGFwc2UuY3BwOgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvZmxleC9GbGV4Rm9ybWF0dGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpGbGV4Rm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVkSW50cmluc2ljV2lkdGhDb25zdHJh
aW50cyk6CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9mbGV4L0ZsZXhGb3Jt
YXR0aW5nR2VvbWV0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGbGV4Rm9ybWF0
dGluZ0dlb21ldHJ5OjppbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzKToKKyAgICAgICAgKiBsYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2ZsZXgvRmxleEZvcm1hdHRpbmdHZW9tZXRyeS5oOgorICAg
ICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdD
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQ6OmNvbXB1dGVkSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyk6CisgICAgICAgICogbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6VGFibGVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0
ZWRJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
VGFibGVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZWRQcmVmZXJyZWRXaWR0aEZvckNvbHVtbnMp
OgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0
aW5nR2VvbWV0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUYWJsZUZvcm1hdHRp
bmdHZW9tZXRyeTo6aW50cmluc2ljV2lkdGhDb25zdHJhaW50c0ZvckNlbGwpOgorICAgICAgICAq
IGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nR2VvbWV0cnku
aDoKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlR3JpZC5o
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUYWJsZUdyaWQ6OnNldFdpZHRoQ29uc3RyYWlu
dHMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUYWJsZUdyaWQ6OndpZHRoQ29uc3RyYWlu
dHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUYWJsZUdyaWQ6OlNsb3Q6Ondp
ZHRoQ29uc3RyYWludHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUYWJsZUdy
aWQ6OlNsb3Q6OnNldFdpZHRoQ29uc3RyYWludHMpOgorCiAyMDIxLTA1LTE2ICBBbGFuIEJ1anRh
cyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXSBDbGVhbnVwIG1hcmdpbiBjb2xs
YXBzaW5nIGNsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGlu
Z1N0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ1N0YXRlLmgKaW5kZXgg
YmQ2Yzk4YmZkMWU4M2M0ZDY2MjU5YzJiN2UxOWRkMDRkYmE2NWE2ZS4uNTZjMWU4MWIxYTk1ZmFl
NjFiMDhjNmZiMDNlYTlkMzhlM2M5OTI1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L0Zvcm1hdHRpbmdTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0
aW5nU3RhdGUuaApAQCAtNDgsMTIgKzQ4LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIG1hcmtOZWVk
c0xheW91dChjb25zdCBCb3gmLCBTdHlsZURpZmYpOwogICAgIGJvb2wgbmVlZHNMYXlvdXQoY29u
c3QgQm94Jik7CiAKLSAgICB2b2lkIHNldEludHJpbnNpY1dpZHRoQ29uc3RyYWludHNGb3JCb3go
Y29uc3QgQm94JiwgIEZvcm1hdHRpbmdDb250ZXh0OjpJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRz
KTsKLSAgICBPcHRpb25hbDxGb3JtYXR0aW5nQ29udGV4dDo6SW50cmluc2ljV2lkdGhDb25zdHJh
aW50cz4gaW50cmluc2ljV2lkdGhDb25zdHJhaW50c0ZvckJveChjb25zdCBCb3gmKSBjb25zdDsK
KyAgICB2b2lkIHNldEludHJpbnNpY1dpZHRoQ29uc3RyYWludHNGb3JCb3goY29uc3QgQm94Jiwg
IEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMpOworICAgIE9wdGlvbmFsPEludHJpbnNpY1dpZHRo
Q29uc3RyYWludHM+IGludHJpbnNpY1dpZHRoQ29uc3RyYWludHNGb3JCb3goY29uc3QgQm94Jikg
Y29uc3Q7CiAgICAgdm9pZCBjbGVhckludHJpbnNpY1dpZHRoQ29uc3RyYWludHMoY29uc3QgQm94
Jik7CiAKLSAgICB2b2lkIHNldEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMoRm9ybWF0dGluZ0Nv
bnRleHQ6OkludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgaW50cmluc2ljV2lkdGhDb25zdHJhaW50
cykgeyBtX2ludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgPSBpbnRyaW5zaWNXaWR0aENvbnN0cmFp
bnRzOyB9Ci0gICAgT3B0aW9uYWw8Rm9ybWF0dGluZ0NvbnRleHQ6OkludHJpbnNpY1dpZHRoQ29u
c3RyYWludHM+IGludHJpbnNpY1dpZHRoQ29uc3RyYWludHMoKSBjb25zdCB7IHJldHVybiBtX2lu
dHJpbnNpY1dpZHRoQ29uc3RyYWludHM7IH0KKyAgICB2b2lkIHNldEludHJpbnNpY1dpZHRoQ29u
c3RyYWludHMoSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyBpbnRyaW5zaWNXaWR0aENvbnN0cmFp
bnRzKSB7IG1faW50cmluc2ljV2lkdGhDb25zdHJhaW50cyA9IGludHJpbnNpY1dpZHRoQ29uc3Ry
YWludHM7IH0KKyAgICBPcHRpb25hbDxJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzPiBpbnRyaW5z
aWNXaWR0aENvbnN0cmFpbnRzKCkgY29uc3QgeyByZXR1cm4gbV9pbnRyaW5zaWNXaWR0aENvbnN0
cmFpbnRzOyB9CiAKICAgICBib29sIGlzQmxvY2tGb3JtYXR0aW5nU3RhdGUoKSBjb25zdCB7IHJl
dHVybiBtX3R5cGUgPT0gVHlwZTo6QmxvY2s7IH0KICAgICBib29sIGlzSW5saW5lRm9ybWF0dGlu
Z1N0YXRlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFR5cGU6OklubGluZTsgfQpAQCAtNzgs
MTQgKzc4LDE0IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgTGF5b3V0U3RhdGUmIG1fbGF5
b3V0U3RhdGU7CiAgICAgUmVmPEZsb2F0aW5nU3RhdGU+IG1fZmxvYXRpbmdTdGF0ZTsKLSAgICBI
YXNoTWFwPGNvbnN0IEJveCosIEZvcm1hdHRpbmdDb250ZXh0OjpJbnRyaW5zaWNXaWR0aENvbnN0
cmFpbnRzPiBtX2ludHJpbnNpY1dpZHRoQ29uc3RyYWludHNGb3JCb3hlczsKLSAgICBPcHRpb25h
bDxGb3JtYXR0aW5nQ29udGV4dDo6SW50cmluc2ljV2lkdGhDb25zdHJhaW50cz4gbV9pbnRyaW5z
aWNXaWR0aENvbnN0cmFpbnRzOworICAgIEhhc2hNYXA8Y29uc3QgQm94KiwgSW50cmluc2ljV2lk
dGhDb25zdHJhaW50cz4gbV9pbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzRm9yQm94ZXM7CisgICAg
T3B0aW9uYWw8SW50cmluc2ljV2lkdGhDb25zdHJhaW50cz4gbV9pbnRyaW5zaWNXaWR0aENvbnN0
cmFpbnRzOwogICAgIC8vIEZJWE1FOiBUaGlzIG5lZWRzIFdlYWtMaXN0SGFzaFNldAogICAgIE91
dE9mRmxvd0JveExpc3QgbV9vdXRPZkZsb3dCb3hlczsKICAgICBUeXBlIG1fdHlwZTsKIH07CiAK
LWlubGluZSB2b2lkIEZvcm1hdHRpbmdTdGF0ZTo6c2V0SW50cmluc2ljV2lkdGhDb25zdHJhaW50
c0ZvckJveChjb25zdCBCb3gmIGxheW91dEJveCwgRm9ybWF0dGluZ0NvbnRleHQ6OkludHJpbnNp
Y1dpZHRoQ29uc3RyYWludHMgaW50cmluc2ljV2lkdGhDb25zdHJhaW50cykKK2lubGluZSB2b2lk
IEZvcm1hdHRpbmdTdGF0ZTo6c2V0SW50cmluc2ljV2lkdGhDb25zdHJhaW50c0ZvckJveChjb25z
dCBCb3gmIGxheW91dEJveCwgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyBpbnRyaW5zaWNXaWR0
aENvbnN0cmFpbnRzKQogewogICAgIEFTU0VSVCghbV9pbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRz
Rm9yQm94ZXMuY29udGFpbnMoJmxheW91dEJveCkpOwogICAgIEFTU0VSVCgmbV9sYXlvdXRTdGF0
ZS5mb3JtYXR0aW5nU3RhdGVGb3JCb3gobGF5b3V0Qm94KSA9PSB0aGlzKTsKQEAgLTk4LDcgKzk4
LDcgQEAgaW5saW5lIHZvaWQgRm9ybWF0dGluZ1N0YXRlOjpjbGVhckludHJpbnNpY1dpZHRoQ29u
c3RyYWludHMoY29uc3QgQm94JiBsYXlvdXRCb3gKICAgICBtX2ludHJpbnNpY1dpZHRoQ29uc3Ry
YWludHNGb3JCb3hlcy5yZW1vdmUoJmxheW91dEJveCk7CiB9CiAKLWlubGluZSBPcHRpb25hbDxG
b3JtYXR0aW5nQ29udGV4dDo6SW50cmluc2ljV2lkdGhDb25zdHJhaW50cz4gRm9ybWF0dGluZ1N0
YXRlOjppbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzRm9yQm94KGNvbnN0IEJveCYgbGF5b3V0Qm94
KSBjb25zdAoraW5saW5lIE9wdGlvbmFsPEludHJpbnNpY1dpZHRoQ29uc3RyYWludHM+IEZvcm1h
dHRpbmdTdGF0ZTo6aW50cmluc2ljV2lkdGhDb25zdHJhaW50c0ZvckJveChjb25zdCBCb3gmIGxh
eW91dEJveCkgY29uc3QKIHsKICAgICBBU1NFUlQoJm1fbGF5b3V0U3RhdGUuZm9ybWF0dGluZ1N0
YXRlRm9yQm94KGxheW91dEJveCkgPT0gdGhpcyk7CiAgICAgYXV0byBpdGVyYXRvciA9IG1faW50
cmluc2ljV2lkdGhDb25zdHJhaW50c0ZvckJveGVzLmZpbmQoJmxheW91dEJveCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvTGF5b3V0Q29udGV4dC5jcHAKaW5kZXggNTNlNzBlNTljNTViYzI0YTFkMDE0
Mjg3MDUyYTIzNmY3YTA4OTRjMy4uYjkwYTE3ZjY4M2Q1NjdjMWVhZDEwMDU3NThjMTQ2NWI3NTI0
MTBiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dENvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRDb250ZXh0LmNwcApAQCAtMTAwLDcg
KzEwMCw3IEBAIHZvaWQgTGF5b3V0Q29udGV4dDo6bGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRTdWJ0
cmVlKGNvbnN0IENvbnRhaW5lckJveCYgZm9ybWF0dGluCiAgICAgYXV0byYgYm94R2VvbWV0cnkg
PSBsYXlvdXRTdGF0ZSgpLmdlb21ldHJ5Rm9yQm94KGZvcm1hdHRpbmdDb250ZXh0Um9vdCk7CiAK
ICAgICBpZiAoZm9ybWF0dGluZ0NvbnRleHRSb290Lmhhc0luRmxvd09yRmxvYXRpbmdDaGlsZCgp
KSB7Ci0gICAgICAgIGF1dG8gY29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50ID0gRm9ybWF0dGlu
Z0NvbnRleHQ6OkNvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCB7IHsgYm94R2VvbWV0cnkuY29u
dGVudEJveExlZnQoKSwgYm94R2VvbWV0cnkuY29udGVudEJveFdpZHRoKCkgfSwgeyBib3hHZW9t
ZXRyeS5jb250ZW50Qm94VG9wKCksIHsgfSB9IH07CisgICAgICAgIGF1dG8gY29uc3RyYWludHNG
b3JJbkZsb3dDb250ZW50ID0gQ29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50IHsgeyBib3hHZW9t
ZXRyeS5jb250ZW50Qm94TGVmdCgpLCBib3hHZW9tZXRyeS5jb250ZW50Qm94V2lkdGgoKSB9LCB7
IGJveEdlb21ldHJ5LmNvbnRlbnRCb3hUb3AoKSwgeyB9IH0gfTsKICAgICAgICAgZm9ybWF0dGlu
Z0NvbnRleHQtPmxheW91dEluRmxvd0NvbnRlbnQoaW52YWxpZGF0aW9uU3RhdGUsIGNvbnN0cmFp
bnRzRm9ySW5GbG93Q29udGVudCk7CiAgICAgfQogCkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBM
YXlvdXRDb250ZXh0OjpsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFN1YnRyZWUoY29uc3QgQ29udGFp
bmVyQm94JiBmb3JtYXR0aW4KICAgICAvLyBJdCBjb25zdHJ1Y3RzIGFuIEZDIGZvciBkZXNjZW5k
YW50IGJveGVzIGFuZCBydW5zIGxheW91dCBvbiB0aGVtLiBUaGUgZm9ybWF0dGluZ0NvbnRleHRS
b290IGlzIGxhaWQgb3V0IGluIHRoZSBGQyBpbiB3aGljaCBpdCBsaXZlcyAocGFyZW50IGZvcm1h
dHRpbmcgY29udGV4dCkuCiAgICAgLy8gSXQgYWxzbyBtZWFucyB0aGF0IHRoZSBmb3JtYXR0aW5n
Q29udGV4dFJvb3QgaGFzIHRvIGhhdmUgYSB2YWxpZC9jbGVhbiBnZW9tZXRyeSBhdCB0aGlzIHBv
aW50LgogICAgIHsKLSAgICAgICAgYXV0byBjb25zdHJhaW50cyA9IEZvcm1hdHRpbmdDb250ZXh0
OjpDb25zdHJhaW50c0Zvck91dE9mRmxvd0NvbnRlbnQgeyB7IGJveEdlb21ldHJ5LnBhZGRpbmdC
b3hMZWZ0KCksIGJveEdlb21ldHJ5LnBhZGRpbmdCb3hXaWR0aCgpIH0sCisgICAgICAgIGF1dG8g
Y29uc3RyYWludHMgPSBDb25zdHJhaW50c0Zvck91dE9mRmxvd0NvbnRlbnQgeyB7IGJveEdlb21l
dHJ5LnBhZGRpbmdCb3hMZWZ0KCksIGJveEdlb21ldHJ5LnBhZGRpbmdCb3hXaWR0aCgpIH0sCiAg
ICAgICAgICAgICB7IGJveEdlb21ldHJ5LnBhZGRpbmdCb3hUb3AoKSwgYm94R2VvbWV0cnkucGFk
ZGluZ0JveEhlaWdodCgpIH0sIGJveEdlb21ldHJ5LmNvbnRlbnRCb3hXaWR0aCgpIH07CiAgICAg
ICAgIGZvcm1hdHRpbmdDb250ZXh0LT5sYXlvdXRPdXRPZkZsb3dDb250ZW50KGludmFsaWRhdGlv
blN0YXRlLCBjb25zdHJhaW50cyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L0xheW91dFVuaXRzLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0VW5pdHMu
aAppbmRleCA0Mzk2NWE5OTJlOGFiMTc5NjVhYmE5ZDkyOGM4MmJlN2EwMTc5M2JlLi43YmNjNWJm
ZWYyMzZjY2U3MTgwYzM3MzU5OTljN2IxMjJjNTM1YmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvTGF5b3V0VW5pdHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5
b3V0VW5pdHMuaApAQCAtMTY5LDYgKzE2OSwyOSBAQCBzdHJ1Y3QgVmVydGljYWxDb25zdHJhaW50
cyB7CiAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gbG9naWNhbEhlaWdodDsKIH07CiAKK3N0cnVj
dCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQgeworICAgIEhvcml6b250YWxDb25zdHJhaW50
cyBob3Jpem9udGFsOworICAgIFZlcnRpY2FsQ29uc3RyYWludHMgdmVydGljYWw7Cit9OworCitz
dHJ1Y3QgQ29uc3RyYWludHNGb3JPdXRPZkZsb3dDb250ZW50IHsKKyAgICBIb3Jpem9udGFsQ29u
c3RyYWludHMgaG9yaXpvbnRhbDsKKyAgICBWZXJ0aWNhbENvbnN0cmFpbnRzIHZlcnRpY2FsOwor
ICAgIC8vIEJvcmRlcnMgYW5kIHBhZGRpbmcgYXJlIHJlc29sdmVkIGFnYWluc3QgdGhlIGNvbnRh
aW5pbmcgYmxvY2sncyBjb250ZW50IGJveCBhcyBpZiB0aGUgYm94IHdhcyBhbiBpbi1mbG93IGJv
eC4KKyAgICBMYXlvdXRVbml0IGJvcmRlckFuZFBhZGRpbmdDb25zdHJhaW50czsKK307CisKK3N0
cnVjdCBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzIHsKKyAgICB2b2lkIGV4cGFuZChMYXlvdXRV
bml0IGhvcml6b250YWxWYWx1ZSk7CisgICAgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyYgb3Bl
cmF0b3IrPShjb25zdCBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzJik7CisgICAgSW50cmluc2lj
V2lkdGhDb25zdHJhaW50cyYgb3BlcmF0b3IrPShMYXlvdXRVbml0KTsKKyAgICBJbnRyaW5zaWNX
aWR0aENvbnN0cmFpbnRzJiBvcGVyYXRvci09KGNvbnN0IEludHJpbnNpY1dpZHRoQ29uc3RyYWlu
dHMmKTsKKyAgICBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzJiBvcGVyYXRvci09KExheW91dFVu
aXQpOworCisgICAgTGF5b3V0VW5pdCBtaW5pbXVtOworICAgIExheW91dFVuaXQgbWF4aW11bTsK
K307CisKIHN0cnVjdCBPdmVycmlkZGVuSG9yaXpvbnRhbFZhbHVlcyB7CiAgICAgT3B0aW9uYWw8
TGF5b3V0VW5pdD4gd2lkdGg7CiAgICAgT3B0aW9uYWw8VXNlZEhvcml6b250YWxNYXJnaW4+IG1h
cmdpbjsKQEAgLTIwOCw2ICsyMzEsMzggQEAgaW5saW5lIElubGluZUxheW91dFVuaXQgbWF4SW5s
aW5lTGF5b3V0VW5pdCgpCiAjZW5kaWYKIH0KIAoraW5saW5lIHZvaWQgSW50cmluc2ljV2lkdGhD
b25zdHJhaW50czo6ZXhwYW5kKExheW91dFVuaXQgaG9yaXpvbnRhbFZhbHVlKQoreworICAgIG1p
bmltdW0gKz0gaG9yaXpvbnRhbFZhbHVlOworICAgIG1heGltdW0gKz0gaG9yaXpvbnRhbFZhbHVl
OworfQorCitpbmxpbmUgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyYgSW50cmluc2ljV2lkdGhD
b25zdHJhaW50czo6b3BlcmF0b3IrPShjb25zdCBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzJiBv
dGhlcikKK3sKKyAgICBtaW5pbXVtICs9IG90aGVyLm1pbmltdW07CisgICAgbWF4aW11bSArPSBv
dGhlci5tYXhpbXVtOworICAgIHJldHVybiAqdGhpczsKK30KKworaW5saW5lIEludHJpbnNpY1dp
ZHRoQ29uc3RyYWludHMmIEludHJpbnNpY1dpZHRoQ29uc3RyYWludHM6Om9wZXJhdG9yKz0oTGF5
b3V0VW5pdCB2YWx1ZSkKK3sKKyAgICBleHBhbmQodmFsdWUpOworICAgIHJldHVybiAqdGhpczsK
K30KKworaW5saW5lIEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMmIEludHJpbnNpY1dpZHRoQ29u
c3RyYWludHM6Om9wZXJhdG9yLT0oY29uc3QgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyYgb3Ro
ZXIpCit7CisgICAgbWluaW11bSAtPSBvdGhlci5taW5pbXVtOworICAgIG1heGltdW0gLT0gb3Ro
ZXIubWF4aW11bTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK2lubGluZSBJbnRyaW5zaWNXaWR0
aENvbnN0cmFpbnRzJiBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzOjpvcGVyYXRvci09KExheW91
dFVuaXQgdmFsdWUpCit7CisgICAgZXhwYW5kKC12YWx1ZSk7CisgICAgcmV0dXJuICp0aGlzOwor
fQorCiBzdHJ1Y3QgU2xvdFBvc2l0aW9uIHsKICAgICBTbG90UG9zaXRpb24oKSA9IGRlZmF1bHQ7
CiAgICAgU2xvdFBvc2l0aW9uKHNpemVfdCBjb2x1bW4sIHNpemVfdCByb3cpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nQ29u
dGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0
aW5nQ29udGV4dC5oCmluZGV4IGIyNmFkZWZmZDMzYTE3MjA0YTlmMjU4YjgxNGQwNzYxMWUzZjIy
ZTcuLmUzMjM5MGRlZTkzYmRjMjQzNTk0ZmQwNmE3NTIyYTE3Y2Q3NTk2MWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0NvbnRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1h
dHRpbmdDb250ZXh0LmgKQEAgLTUxLDQxICs1MSwxNiBAQCBjbGFzcyBMYXlvdXRTdGF0ZTsKIGNs
YXNzIEZvcm1hdHRpbmdDb250ZXh0IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEZvcm1h
dHRpbmdDb250ZXh0KTsKIHB1YmxpYzoKLSAgICBGb3JtYXR0aW5nQ29udGV4dChjb25zdCBDb250
YWluZXJCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgRm9ybWF0dGluZ1N0YXRlJik7CiAgICAg
dmlydHVhbCB+Rm9ybWF0dGluZ0NvbnRleHQoKTsKIAotICAgIHN0cnVjdCBDb25zdHJhaW50c0Zv
ckluRmxvd0NvbnRlbnQgewotICAgICAgICBIb3Jpem9udGFsQ29uc3RyYWludHMgaG9yaXpvbnRh
bDsKLSAgICAgICAgVmVydGljYWxDb25zdHJhaW50cyB2ZXJ0aWNhbDsKLSAgICB9OwogICAgIHZp
cnR1YWwgdm9pZCBsYXlvdXRJbkZsb3dDb250ZW50KEludmFsaWRhdGlvblN0YXRlJiwgY29uc3Qg
Q29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50JikgPSAwOwotCi0gICAgc3RydWN0IENvbnN0cmFp
bnRzRm9yT3V0T2ZGbG93Q29udGVudCB7Ci0gICAgICAgIEhvcml6b250YWxDb25zdHJhaW50cyBo
b3Jpem9udGFsOwotICAgICAgICBWZXJ0aWNhbENvbnN0cmFpbnRzIHZlcnRpY2FsOwotICAgICAg
ICAvLyBCb3JkZXJzIGFuZCBwYWRkaW5nIGFyZSByZXNvbHZlZCBhZ2FpbnN0IHRoZSBjb250YWlu
aW5nIGJsb2NrJ3MgY29udGVudCBib3ggYXMgaWYgdGhlIGJveCB3YXMgYW4gaW4tZmxvdyBib3gu
Ci0gICAgICAgIExheW91dFVuaXQgYm9yZGVyQW5kUGFkZGluZ0NvbnN0cmFpbnRzOwotICAgIH07
CiAgICAgdm9pZCBsYXlvdXRPdXRPZkZsb3dDb250ZW50KEludmFsaWRhdGlvblN0YXRlJiwgY29u
c3QgQ29uc3RyYWludHNGb3JPdXRPZkZsb3dDb250ZW50Jik7Ci0KLSAgICBzdHJ1Y3QgSW50cmlu
c2ljV2lkdGhDb25zdHJhaW50cyB7Ci0gICAgICAgIHZvaWQgZXhwYW5kKExheW91dFVuaXQgaG9y
aXpvbnRhbFZhbHVlKTsKLSAgICAgICAgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyYgb3BlcmF0
b3IrPShjb25zdCBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzJik7Ci0gICAgICAgIEludHJpbnNp
Y1dpZHRoQ29uc3RyYWludHMmIG9wZXJhdG9yKz0oTGF5b3V0VW5pdCk7Ci0gICAgICAgIEludHJp
bnNpY1dpZHRoQ29uc3RyYWludHMmIG9wZXJhdG9yLT0oY29uc3QgSW50cmluc2ljV2lkdGhDb25z
dHJhaW50cyYpOwotICAgICAgICBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzJiBvcGVyYXRvci09
KExheW91dFVuaXQpOwotCi0gICAgICAgIExheW91dFVuaXQgbWluaW11bTsKLSAgICAgICAgTGF5
b3V0VW5pdCBtYXhpbXVtOwotICAgIH07CiAgICAgdmlydHVhbCBJbnRyaW5zaWNXaWR0aENvbnN0
cmFpbnRzIGNvbXB1dGVkSW50cmluc2ljV2lkdGhDb25zdHJhaW50cygpID0gMDsKICAgICB2aXJ0
dWFsIExheW91dFVuaXQgdXNlZENvbnRlbnRIZWlnaHQoKSBjb25zdCA9IDA7CiAKLSAgICBib29s
IGlzQmxvY2tGb3JtYXR0aW5nQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIHJvb3QoKS5lc3RhYmxp
c2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKTsgfQotICAgIGJvb2wgaXNJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIHJvb3QoKS5lc3RhYmxpc2hlc0lubGluZUZvcm1h
dHRpbmdDb250ZXh0KCk7IH0KLSAgICBib29sIGlzVGFibGVGb3JtYXR0aW5nQ29udGV4dCgpIGNv
bnN0IHsgcmV0dXJuIHJvb3QoKS5lc3RhYmxpc2hlc1RhYmxlRm9ybWF0dGluZ0NvbnRleHQoKTsg
fQotICAgIGJvb2wgaXNUYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCkgY29uc3Qg
eyByZXR1cm4gaXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCkgJiYgcm9vdCgpLmlzVGFibGVXcmFw
cGVyQm94KCk7IH0KLSAgICBib29sIGlzRmxleEZvcm1hdHRpbmdDb250ZXh0KCkgY29uc3QgeyBy
ZXR1cm4gcm9vdCgpLmVzdGFibGlzaGVzRmxleEZvcm1hdHRpbmdDb250ZXh0KCk7IH0KKyAgICBj
b25zdCBDb250YWluZXJCb3gmIHJvb3QoKSBjb25zdCB7IHJldHVybiAqbV9yb290OyB9CisgICAg
TGF5b3V0U3RhdGUmIGxheW91dFN0YXRlKCkgY29uc3Q7CisgICAgY29uc3QgRm9ybWF0dGluZ1N0
YXRlJiBmb3JtYXR0aW5nU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdHRpbmdTdGF0ZTsg
fQogCiAgICAgZW51bSBjbGFzcyBFc2NhcGVSZWFzb24gewogICAgICAgICBUYWJsZVF1aXJrTmVl
ZHNHZW9tZXRyeUZyb21Fc3RhYmxpc2hlZEZvcm1hdHRpbmdDb250ZXh0LApAQCAtOTcsMjIgKzcy
LDI0IEBAIHB1YmxpYzoKICAgICAgICAgVGFibGVOZWVkc0FjY2Vzc1RvVGFibGVXcmFwcGVyCiAg
ICAgfTsKICAgICBjb25zdCBCb3hHZW9tZXRyeSYgZ2VvbWV0cnlGb3JCb3goY29uc3QgQm94Jiwg
T3B0aW9uYWw8RXNjYXBlUmVhc29uPiA9IFdURjo6bnVsbG9wdCkgY29uc3Q7Ci0gICAgY29uc3Qg
Q29udGFpbmVyQm94JiByb290KCkgY29uc3QgeyByZXR1cm4gKm1fcm9vdDsgfQogCi0gICAgTGF5
b3V0U3RhdGUmIGxheW91dFN0YXRlKCkgY29uc3Q7Ci0gICAgY29uc3QgRm9ybWF0dGluZ1N0YXRl
JiBmb3JtYXR0aW5nU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdHRpbmdTdGF0ZTsgfQor
ICAgIGJvb2wgaXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gcm9vdCgp
LmVzdGFibGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4dCgpOyB9CisgICAgYm9vbCBpc0lubGlu
ZUZvcm1hdHRpbmdDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gcm9vdCgpLmVzdGFibGlzaGVzSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQoKTsgfQorICAgIGJvb2wgaXNUYWJsZUZvcm1hdHRpbmdDb250
ZXh0KCkgY29uc3QgeyByZXR1cm4gcm9vdCgpLmVzdGFibGlzaGVzVGFibGVGb3JtYXR0aW5nQ29u
dGV4dCgpOyB9CisgICAgYm9vbCBpc1RhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQo
KSBjb25zdCB7IHJldHVybiBpc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKSAmJiByb290KCkuaXNU
YWJsZVdyYXBwZXJCb3goKTsgfQorICAgIGJvb2wgaXNGbGV4Rm9ybWF0dGluZ0NvbnRleHQoKSBj
b25zdCB7IHJldHVybiByb290KCkuZXN0YWJsaXNoZXNGbGV4Rm9ybWF0dGluZ0NvbnRleHQoKTsg
fQogCiBwcm90ZWN0ZWQ6Ci0gICAgdXNpbmcgTGF5b3V0UXVldWUgPSBWZWN0b3I8Y29uc3QgQm94
Kj47CisgICAgRm9ybWF0dGluZ0NvbnRleHQoY29uc3QgQ29udGFpbmVyQm94JiBmb3JtYXR0aW5n
Q29udGV4dFJvb3QsIEZvcm1hdHRpbmdTdGF0ZSYpOwogCiAgICAgRm9ybWF0dGluZ1N0YXRlJiBm
b3JtYXR0aW5nU3RhdGUoKSB7IHJldHVybiBtX2Zvcm1hdHRpbmdTdGF0ZTsgfQotCiAgICAgdm9p
ZCBjb21wdXRlQm9yZGVyQW5kUGFkZGluZyhjb25zdCBCb3gmLCBjb25zdCBIb3Jpem9udGFsQ29u
c3RyYWludHMmKTsKIAogI2lmbmRlZiBOREVCVUcKICAgICB2aXJ0dWFsIHZvaWQgdmFsaWRhdGVH
ZW9tZXRyeUNvbnN0cmFpbnRzQWZ0ZXJMYXlvdXQoKSBjb25zdDsKICNlbmRpZgogCisgICAgdXNp
bmcgTGF5b3V0UXVldWUgPSBWZWN0b3I8Y29uc3QgQm94Kj47CiBwcml2YXRlOgogICAgIEZvcm1h
dHRpbmdHZW9tZXRyeSBnZW9tZXRyeSgpIGNvbnN0OwogICAgIEZvcm1hdHRpbmdRdWlya3MgcXVp
cmtzKCkgY29uc3Q7CkBAIC0xMjUsMzggKzEwMiw2IEBAIHByaXZhdGU6CiAgICAgRm9ybWF0dGlu
Z1N0YXRlJiBtX2Zvcm1hdHRpbmdTdGF0ZTsKIH07CiAKLWlubGluZSB2b2lkIEZvcm1hdHRpbmdD
b250ZXh0OjpJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzOjpleHBhbmQoTGF5b3V0VW5pdCBob3Jp
em9udGFsVmFsdWUpCi17Ci0gICAgbWluaW11bSArPSBob3Jpem9udGFsVmFsdWU7Ci0gICAgbWF4
aW11bSArPSBob3Jpem9udGFsVmFsdWU7Ci19Ci0KLWlubGluZSBGb3JtYXR0aW5nQ29udGV4dDo6
SW50cmluc2ljV2lkdGhDb25zdHJhaW50cyYgRm9ybWF0dGluZ0NvbnRleHQ6OkludHJpbnNpY1dp
ZHRoQ29uc3RyYWludHM6Om9wZXJhdG9yKz0oY29uc3QgSW50cmluc2ljV2lkdGhDb25zdHJhaW50
cyYgb3RoZXIpCi17Ci0gICAgbWluaW11bSArPSBvdGhlci5taW5pbXVtOwotICAgIG1heGltdW0g
Kz0gb3RoZXIubWF4aW11bTsKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLWlubGluZSBGb3JtYXR0
aW5nQ29udGV4dDo6SW50cmluc2ljV2lkdGhDb25zdHJhaW50cyYgRm9ybWF0dGluZ0NvbnRleHQ6
OkludHJpbnNpY1dpZHRoQ29uc3RyYWludHM6Om9wZXJhdG9yKz0oTGF5b3V0VW5pdCB2YWx1ZSkK
LXsKLSAgICBleHBhbmQodmFsdWUpOwotICAgIHJldHVybiAqdGhpczsKLX0KLQotaW5saW5lIEZv
cm1hdHRpbmdDb250ZXh0OjpJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzJiBGb3JtYXR0aW5nQ29u
dGV4dDo6SW50cmluc2ljV2lkdGhDb25zdHJhaW50czo6b3BlcmF0b3ItPShjb25zdCBJbnRyaW5z
aWNXaWR0aENvbnN0cmFpbnRzJiBvdGhlcikKLXsKLSAgICBtaW5pbXVtIC09IG90aGVyLm1pbmlt
dW07Ci0gICAgbWF4aW11bSAtPSBvdGhlci5tYXhpbXVtOwotICAgIHJldHVybiAqdGhpczsKLX0K
LQotaW5saW5lIEZvcm1hdHRpbmdDb250ZXh0OjpJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzJiBG
b3JtYXR0aW5nQ29udGV4dDo6SW50cmluc2ljV2lkdGhDb25zdHJhaW50czo6b3BlcmF0b3ItPShM
YXlvdXRVbml0IHZhbHVlKQotewotICAgIGV4cGFuZCgtdmFsdWUpOwotICAgIHJldHVybiAqdGhp
czsKLX0KLQogfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdHZW9tZXRyeS5jcHAKaW5kZXggYzlmYjNm
YjE0M2M5OGM2ZDJiOWQ5ZWJlMTQwZjFhZWZlNmVkODkzZC4uZDJlNDdjODFiZTkwZDQzYmM4ODA5
YTUwYjdiYjQyZTY4YjAwYWVlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nR2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0dlb21ldHJ5LmNwcApAQCAt
MTQzLDcgKzE0Myw3IEBAIE9wdGlvbmFsPExheW91dFVuaXQ+IEZvcm1hdHRpbmdHZW9tZXRyeTo6
Y29tcHV0ZWRXaWR0aFZhbHVlKGNvbnN0IEJveCYgbGF5b3V0Qm94CiAgICAgICAgIC8vIEZJWE1F
OiBDb25zaWRlciBzcGxpdHRpbmcgdXAgY29tcHV0ZWRJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRz
IHNvIHRoYXQgd2UgY291bGQgY29tcHV0ZWQgdGhlIG1pbiBhbmQgbWF4IHZhbHVlcyBzZXBhcmF0
ZWx5LgogICAgICAgICBhdXRvIGludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgPSBbJl0gewogICAg
ICAgICAgICAgaWYgKCFjb250YWluZXJCb3guaGFzSW5GbG93T3JGbG9hdGluZ0NoaWxkKCkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIEZvcm1hdHRpbmdDb250ZXh0OjpJbnRyaW5zaWNXaWR0aENv
bnN0cmFpbnRzIHsgMF9sdSwgY29udGFpbmluZ0Jsb2NrV2lkdGggfTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyB7IDBfbHUsIGNvbnRhaW5pbmdCbG9j
a1dpZHRoIH07CiAgICAgICAgICAgICBBU1NFUlQoY29udGFpbmVyQm94LmVzdGFibGlzaGVzRm9y
bWF0dGluZ0NvbnRleHQoKSk7CiAgICAgICAgICAgICBhdXRvJiBmb3JtYXR0aW5nU3RhdGUgPSBs
YXlvdXRTdGF0ZSgpLmVuc3VyZUZvcm1hdHRpbmdTdGF0ZShjb250YWluZXJCb3gpOwogICAgICAg
ICAgICAgaWYgKGF1dG8gaW50cmluc2ljV2lkdGhDb25zdHJhaW50cyA9IGZvcm1hdHRpbmdTdGF0
ZS5pbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzKCkpCkBAIC0yOTksNyArMjk5LDcgQEAgTGF5b3V0
VW5pdCBGb3JtYXR0aW5nR2VvbWV0cnk6OnNocmlua1RvRml0V2lkdGgoY29uc3QgQm94JiBmb3Jt
YXR0aW5nQ29udGV4dFJvb3QKICAgICAvLyAncGFkZGluZy1sZWZ0JywgJ3BhZGRpbmctcmlnaHQn
LCAnYm9yZGVyLXJpZ2h0LXdpZHRoJywgJ21hcmdpbi1yaWdodCcsIGFuZCB0aGUgd2lkdGhzIG9m
IGFueSByZWxldmFudCBzY3JvbGwgYmFycy4KIAogICAgIC8vIFRoZW4gdGhlIHNocmluay10by1m
aXQgd2lkdGggaXM6IG1pbihtYXgocHJlZmVycmVkIG1pbmltdW0gd2lkdGgsIGF2YWlsYWJsZSB3
aWR0aCksIHByZWZlcnJlZCB3aWR0aCkuCi0gICAgYXV0byBpbnRyaW5zaWNXaWR0aENvbnN0cmFp
bnRzID0gRm9ybWF0dGluZ0NvbnRleHQ6OkludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgeyB9Owor
ICAgIGF1dG8gaW50cmluc2ljV2lkdGhDb25zdHJhaW50cyA9IEludHJpbnNpY1dpZHRoQ29uc3Ry
YWludHMgeyB9OwogICAgIGF1dG8gaGFzQ29udGVudCA9IGlzPENvbnRhaW5lckJveD4oZm9ybWF0
dGluZ0NvbnRleHRSb290KSAmJiBkb3duY2FzdDxDb250YWluZXJCb3g+KGZvcm1hdHRpbmdDb250
ZXh0Um9vdCkuaGFzSW5GbG93T3JGbG9hdGluZ0NoaWxkKCk7CiAgICAgLy8gVGhlIHVzZWQgd2lk
dGggb2YgdGhlIGNvbnRhaW5tZW50IGJveCBpcyBkZXRlcm1pbmVkIGFzIGlmIHBlcmZvcm1pbmcg
YSBub3JtYWwgbGF5b3V0IG9mIHRoZSBib3gsIGV4Y2VwdCB0aGF0IGl0IGlzIHRyZWF0ZWQgYXMg
aGF2aW5nIG5vIGNvbnRlbnQuCiAgICAgYXV0byBzaG91bGRJZ25vcmVDb250ZW50ID0gZm9ybWF0
dGluZ0NvbnRleHRSb290LmlzU2l6ZUNvbnRhaW5tZW50Qm94KCk7ICAKQEAgLTExMjgsNyArMTEy
OCw3IEBAIENvbXB1dGVkVmVydGljYWxNYXJnaW4gRm9ybWF0dGluZ0dlb21ldHJ5Ojpjb21wdXRl
ZFZlcnRpY2FsTWFyZ2luKGNvbnN0IEJveCYgbGF5CiAgICAgcmV0dXJuIHsgY29tcHV0ZWRWYWx1
ZShzdHlsZS5tYXJnaW5MZWZ0KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKSwgY29tcHV0ZWRWYWx1
ZShzdHlsZS5tYXJnaW5SaWdodCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCkgfTsKIH0KIAotRm9y
bWF0dGluZ0NvbnRleHQ6OkludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgRm9ybWF0dGluZ0dlb21l
dHJ5Ojpjb25zdHJhaW5CeU1pbk1heFdpZHRoKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBGb3JtYXR0
aW5nQ29udGV4dDo6SW50cmluc2ljV2lkdGhDb25zdHJhaW50cyBpbnRyaW5zaWNXaWR0aCkgY29u
c3QKK0ludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgRm9ybWF0dGluZ0dlb21ldHJ5Ojpjb25zdHJh
aW5CeU1pbk1heFdpZHRoKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBJbnRyaW5zaWNXaWR0aENvbnN0
cmFpbnRzIGludHJpbnNpY1dpZHRoKSBjb25zdAogewogICAgIGF1dG8mIHN0eWxlID0gbGF5b3V0
Qm94LnN0eWxlKCk7CiAgICAgYXV0byBtaW5XaWR0aCA9IGZpeGVkVmFsdWUoc3R5bGUubG9naWNh
bE1pbldpZHRoKCkpOwpAQCAtMTE1MCw3ICsxMTUwLDcgQEAgRm9ybWF0dGluZ0NvbnRleHQ6Oklu
dHJpbnNpY1dpZHRoQ29uc3RyYWludHMgRm9ybWF0dGluZ0dlb21ldHJ5Ojpjb25zdHJhaW5CeU1p
bk0KICAgICByZXR1cm4gaW50cmluc2ljV2lkdGg7CiB9CiAKLUZvcm1hdHRpbmdDb250ZXh0OjpD
b25zdHJhaW50c0Zvck91dE9mRmxvd0NvbnRlbnQgRm9ybWF0dGluZ0dlb21ldHJ5Ojpjb25zdHJh
aW50c0Zvck91dE9mRmxvd0NvbnRlbnQoY29uc3QgQ29udGFpbmVyQm94JiBjb250YWluZXJCb3gp
CitDb25zdHJhaW50c0Zvck91dE9mRmxvd0NvbnRlbnQgRm9ybWF0dGluZ0dlb21ldHJ5Ojpjb25z
dHJhaW50c0Zvck91dE9mRmxvd0NvbnRlbnQoY29uc3QgQ29udGFpbmVyQm94JiBjb250YWluZXJC
b3gpCiB7CiAgICAgYXV0byYgYm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29udGV4dCgpLmdlb21l
dHJ5Rm9yQm94KGNvbnRhaW5lckJveCk7CiAgICAgcmV0dXJuIHsKQEAgLTExNTksNyArMTE1OSw3
IEBAIEZvcm1hdHRpbmdDb250ZXh0OjpDb25zdHJhaW50c0Zvck91dE9mRmxvd0NvbnRlbnQgRm9y
bWF0dGluZ0dlb21ldHJ5Ojpjb25zdHJhaW50CiAgICAgICAgIGJveEdlb21ldHJ5LmNvbnRlbnRC
b3hXaWR0aCgpIH07CiB9CiAKLUZvcm1hdHRpbmdDb250ZXh0OjpDb25zdHJhaW50c0ZvckluRmxv
d0NvbnRlbnQgRm9ybWF0dGluZ0dlb21ldHJ5Ojpjb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQo
Y29uc3QgQ29udGFpbmVyQm94JiBjb250YWluZXJCb3gsIE9wdGlvbmFsPEZvcm1hdHRpbmdDb250
ZXh0OjpFc2NhcGVSZWFzb24+IGVzY2FwZVJlYXNvbikgY29uc3QKK0NvbnN0cmFpbnRzRm9ySW5G
bG93Q29udGVudCBGb3JtYXR0aW5nR2VvbWV0cnk6OmNvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVu
dChjb25zdCBDb250YWluZXJCb3gmIGNvbnRhaW5lckJveCwgT3B0aW9uYWw8Rm9ybWF0dGluZ0Nv
bnRleHQ6OkVzY2FwZVJlYXNvbj4gZXNjYXBlUmVhc29uKSBjb25zdAogewogICAgIGF1dG8mIGJv
eEdlb21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRyeUZvckJveChjb250YWluZXJC
b3gsIGVzY2FwZVJlYXNvbik7CiAgICAgcmV0dXJuIHsgeyBib3hHZW9tZXRyeS5jb250ZW50Qm94
TGVmdCgpLCBib3hHZW9tZXRyeS5jb250ZW50Qm94V2lkdGgoKSB9LCB7IGJveEdlb21ldHJ5LmNv
bnRlbnRCb3hUb3AoKSwgY29tcHV0ZWRIZWlnaHQoY29udGFpbmVyQm94KSB9IH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdH
ZW9tZXRyeS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3Jt
YXR0aW5nR2VvbWV0cnkuaAppbmRleCA2YzU1MDNmYTI5NDBjYmViZjA4ZWEwOGIzYmNiOWYyMDgy
NGVjNzI5Li5hYzk5MzY3ZDZhZjAwNTBkODc1ZjY4MzE5N2IzYzYyNDQyZTFkMzQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdH
ZW9tZXRyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
Rm9ybWF0dGluZ0dlb21ldHJ5LmgKQEAgLTc5LDEyICs3OSwxMiBAQCBwdWJsaWM6CiAgICAgT3B0
aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZWRNaW5XaWR0aChjb25zdCBCb3gmLCBMYXlvdXRVbml0
IGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBjb21wdXRl
ZE1heFdpZHRoKGNvbnN0IEJveCYsIExheW91dFVuaXQgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwog
Ci0gICAgRm9ybWF0dGluZ0NvbnRleHQ6OkludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgY29uc3Ry
YWluQnlNaW5NYXhXaWR0aChjb25zdCBCb3gmLCBGb3JtYXR0aW5nQ29udGV4dDo6SW50cmluc2lj
V2lkdGhDb25zdHJhaW50cykgY29uc3Q7CisgICAgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyBj
b25zdHJhaW5CeU1pbk1heFdpZHRoKGNvbnN0IEJveCYsIEludHJpbnNpY1dpZHRoQ29uc3RyYWlu
dHMpIGNvbnN0OwogCiAgICAgTGF5b3V0VW5pdCBjb250ZW50SGVpZ2h0Rm9yRm9ybWF0dGluZ0Nv
bnRleHRSb290KGNvbnN0IENvbnRhaW5lckJveCYpIGNvbnN0OwogCi0gICAgRm9ybWF0dGluZ0Nv
bnRleHQ6OkNvbnN0cmFpbnRzRm9yT3V0T2ZGbG93Q29udGVudCBjb25zdHJhaW50c0Zvck91dE9m
Rmxvd0NvbnRlbnQoY29uc3QgQ29udGFpbmVyQm94Jik7Ci0gICAgRm9ybWF0dGluZ0NvbnRleHQ6
OkNvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCBjb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQo
Y29uc3QgQ29udGFpbmVyQm94JiwgT3B0aW9uYWw8Rm9ybWF0dGluZ0NvbnRleHQ6OkVzY2FwZVJl
YXNvbj4gPSBXVEY6Om51bGxvcHQpIGNvbnN0OworICAgIENvbnN0cmFpbnRzRm9yT3V0T2ZGbG93
Q29udGVudCBjb25zdHJhaW50c0Zvck91dE9mRmxvd0NvbnRlbnQoY29uc3QgQ29udGFpbmVyQm94
Jik7CisgICAgQ29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50IGNvbnN0cmFpbnRzRm9ySW5GbG93
Q29udGVudChjb25zdCBDb250YWluZXJCb3gmLCBPcHRpb25hbDxGb3JtYXR0aW5nQ29udGV4dDo6
RXNjYXBlUmVhc29uPiA9IFdURjo6bnVsbG9wdCkgY29uc3Q7CiAKICAgICBPcHRpb25hbDxMYXlv
dXRVbml0PiBjb21wdXRlZEhlaWdodChjb25zdCBCb3gmLCBPcHRpb25hbDxMYXlvdXRVbml0PiBj
b250YWluaW5nQmxvY2tIZWlnaHQgPSBXVEY6Om51bGxvcHQpIGNvbnN0OwogICAgIE9wdGlvbmFs
PExheW91dFVuaXQ+IGNvbXB1dGVkV2lkdGgoY29uc3QgQm94JiwgTGF5b3V0VW5pdCBjb250YWlu
aW5nQmxvY2tXaWR0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdDb250
ZXh0LmNwcAppbmRleCA5N2IzODQ5MjVkNzUxZjVkZjA1ZWY2ZTUxOTVhYjBlMDYwNmFiYmVjLi5m
ZjVjNTAzZjRkMDUxY2M1ODdlM2MwM2NhY2Q0YTMzYzBmNmJlZThlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGlu
Z0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTQyNiw3ICs0MjYsNyBAQCB2
b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVIZWlnaHRBbmRNYXJnaW4oY29uc3Qg
Qm94JiBsYXlvdXRCb3gsIGNvbnN0CiAgICAgdXBkYXRlTWFyZ2luQWZ0ZXJGb3JQcmV2aW91c1Np
YmxpbmcobGF5b3V0Qm94KTsKIH0KIAotRm9ybWF0dGluZ0NvbnRleHQ6OkludHJpbnNpY1dpZHRo
Q29uc3RyYWludHMgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZWRJbnRyaW5zaWNXaWR0
aENvbnN0cmFpbnRzKCkKK0ludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgQmxvY2tGb3JtYXR0aW5n
Q29udGV4dDo6Y29tcHV0ZWRJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzKCkKIHsKICAgICBhdXRv
JiBmb3JtYXR0aW5nU3RhdGUgPSB0aGlzLT5mb3JtYXR0aW5nU3RhdGUoKTsKICAgICBBU1NFUlQo
IWZvcm1hdHRpbmdTdGF0ZS5pbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zv
cm1hdHRpbmdHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0dlb21ldHJ5LmNwcAppbmRleCAxNGRjZTFkOGFk
MzAzYjU4OGY4ZmY0OWEwODYwYTY2ZjY2NGNkY2M1Li44ZGM2MjQ4YmIwNzM0MWY2NDIzNDQ1N2Qx
MDYzZDA1MjI1ZWRmMjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0dlb21ldHJ5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGlu
Z0dlb21ldHJ5LmNwcApAQCAtMzMyLDcgKzMzMiw3IEBAIENvbnRlbnRXaWR0aEFuZE1hcmdpbiBC
bG9ja0Zvcm1hdHRpbmdHZW9tZXRyeTo6Y29tcHV0ZWRDb250ZW50V2lkdGhBbmRNYXJnaW4oY29u
CiAgICAgcmV0dXJuIGNvbnRlbnRXaWR0aEFuZE1hcmdpbjsKIH0KIAotRm9ybWF0dGluZ0NvbnRl
eHQ6OkludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgQmxvY2tGb3JtYXR0aW5nR2VvbWV0cnk6Omlu
dHJpbnNpY1dpZHRoQ29uc3RyYWludHMoY29uc3QgQm94JiBsYXlvdXRCb3gpCitJbnRyaW5zaWNX
aWR0aENvbnN0cmFpbnRzIEJsb2NrRm9ybWF0dGluZ0dlb21ldHJ5OjppbnRyaW5zaWNXaWR0aENv
bnN0cmFpbnRzKGNvbnN0IEJveCYgbGF5b3V0Qm94KQogewogICAgIGF1dG8gZml4ZWRNYXJnaW5C
b3JkZXJBbmRQYWRkaW5nID0gWyZdKGF1dG8mIGxheW91dEJveCkgewogICAgICAgICBhdXRvJiBz
dHlsZSA9IGxheW91dEJveC5zdHlsZSgpOwpAQCAtMzQ0LDcgKzM0NCw3IEBAIEZvcm1hdHRpbmdD
b250ZXh0OjpJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzIEJsb2NrRm9ybWF0dGluZ0dlb21ldHJ5
OjppbnRyaW5zaWNXCiAgICAgICAgICAgICArIGZpeGVkVmFsdWUoc3R5bGUubWFyZ2luRW5kKCkp
LnZhbHVlT3IoMCk7CiAgICAgfTsKIAotICAgIGF1dG8gY29tcHV0ZWRJbnRyaW5zaWNXaWR0aENv
bnN0cmFpbnRzID0gWyZdKCkgLT4gRm9ybWF0dGluZ0NvbnRleHQ6OkludHJpbnNpY1dpZHRoQ29u
c3RyYWludHMgeworICAgIGF1dG8gY29tcHV0ZWRJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzID0g
WyZdKCkgLT4gSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyB7CiAgICAgICAgIGF1dG8gbG9naWNh
bFdpZHRoID0gbGF5b3V0Qm94LnN0eWxlKCkubG9naWNhbFdpZHRoKCk7CiAgICAgICAgIC8vIE1p
bmltdW0vbWF4aW11bSB3aWR0aCBjYW4ndCBiZSBkZXBlbmRpbmcgb24gdGhlIGNvbnRhaW5pbmcg
YmxvY2sncyB3aWR0aC4KICAgICAgICAgYXV0byBuZWVkc1Jlc29sdmVkQ29udGFpbmluZ0Jsb2Nr
V2lkdGggPSBsb2dpY2FsV2lkdGguaXNDYWxjdWxhdGVkKCkgfHwgbG9naWNhbFdpZHRoLmlzUGVy
Y2VudCgpIHx8IGxvZ2ljYWxXaWR0aC5pc1JlbGF0aXZlKCk7CkBAIC0zODEsNyArMzgxLDcgQEAg
Rm9ybWF0dGluZ0NvbnRleHQ6OkludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgQmxvY2tGb3JtYXR0
aW5nR2VvbWV0cnk6OmludHJpbnNpY1cKICAgICAgICAgICAgIHJldHVybiBpbnRyaW5zaWNXaWR0
aENvbnN0cmFpbnRzOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0byBpbnRyaW5zaWNXaWR0aENv
bnN0cmFpbnRzID0gRm9ybWF0dGluZ0NvbnRleHQ6OkludHJpbnNpY1dpZHRoQ29uc3RyYWludHMg
eyB9OworICAgICAgICBhdXRvIGludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgPSBJbnRyaW5zaWNX
aWR0aENvbnN0cmFpbnRzIHsgfTsKICAgICAgICAgYXV0byYgZm9ybWF0dGluZ1N0YXRlID0gbGF5
b3V0U3RhdGUoKS5mb3JtYXR0aW5nU3RhdGVGb3JCb3gobGF5b3V0Qm94KTsKICAgICAgICAgZm9y
IChhdXRvJiBjaGlsZCA6IGNoaWxkcmVuT2ZUeXBlPEJveD4oZG93bmNhc3Q8Q29udGFpbmVyQm94
PihsYXlvdXRCb3gpKSkgewogICAgICAgICAgICAgaWYgKGNoaWxkLmlzT3V0T2ZGbG93UG9zaXRp
b25lZCgpIHx8IChjaGlsZC5pc0Zsb2F0QXZvaWRlcigpICYmICFjaGlsZC5oYXNGbG9hdENsZWFy
KCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdHZW9tZXRyeS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdHZW9tZXRyeS5oCmluZGV4
IDA2YTQwMzIwZDVkZTQ3YzAwMTRjNTgzMzU3NWVhN2M2NmVlOGQxODguLmMyMjY2ZTM0OGE5NjMw
OTU5NDllYjg3NjM5NDQxM2E0MWRhNGUzNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nR2VvbWV0cnkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2Nr
Rm9ybWF0dGluZ0dlb21ldHJ5LmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIExheW91
dFVuaXQgc3RhdGljVmVydGljYWxQb3NpdGlvbihjb25zdCBCb3gmLCBjb25zdCBWZXJ0aWNhbENv
bnN0cmFpbnRzJikgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBzdGF0aWNIb3Jpem9udGFsUG9zaXRp
b24oY29uc3QgQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJikgY29uc3Q7CiAKLSAg
ICBGb3JtYXR0aW5nQ29udGV4dDo6SW50cmluc2ljV2lkdGhDb25zdHJhaW50cyBpbnRyaW5zaWNX
aWR0aENvbnN0cmFpbnRzKGNvbnN0IEJveCYpOworICAgIEludHJpbnNpY1dpZHRoQ29uc3RyYWlu
dHMgaW50cmluc2ljV2lkdGhDb25zdHJhaW50cyhjb25zdCBCb3gmKTsKIAogICAgIENvbnRlbnRX
aWR0aEFuZE1hcmdpbiBjb21wdXRlZENvbnRlbnRXaWR0aEFuZE1hcmdpbihjb25zdCBCb3gmLCBj
b25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmLCBPcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFi
bGVXaWR0aEZsb2F0QXZvaWRlcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvZmxleC9GbGV4Rm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9mbGV4L0ZsZXhGb3JtYXR0aW5n
Q29udGV4dC5jcHAKaW5kZXggNGNmNmI2OWQzYzg5NGRmODU4ZTA3ZTRiYTEyOTM5NDZkNGZjMmNj
My4uNjM2MWY4ZTkxZTc0NDc0MzQ2MzQyMDE0ODg2ZTVmMTBkYTNhOGRiNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9mbGV4L0ZsZXhGb3JtYXR0
aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9mbGV4L0ZsZXhGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgTGF5
b3V0VW5pdCBGbGV4Rm9ybWF0dGluZ0NvbnRleHQ6OnVzZWRDb250ZW50SGVpZ2h0KCkgY29uc3QK
ICAgICByZXR1cm4gTGF5b3V0VW5pdCB7IGxpbmVzLmxhc3QoKS5ib3R0b20oKSAtIGxpbmVzLmZp
cnN0KCkudG9wKCkgfTsKIH0KIAotRm9ybWF0dGluZ0NvbnRleHQ6OkludHJpbnNpY1dpZHRoQ29u
c3RyYWludHMgRmxleEZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlZEludHJpbnNpY1dpZHRoQ29u
c3RyYWludHMoKQorSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyBGbGV4Rm9ybWF0dGluZ0NvbnRl
eHQ6OmNvbXB1dGVkSW50cmluc2ljV2lkdGhDb25zdHJhaW50cygpCiB7CiAgICAgcmV0dXJuIHsg
fTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvZmxleC9GbGV4Rm9ybWF0dGluZ0dlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvZmxleC9GbGV4Rm9ybWF0dGluZ0dlb21ldHJ5LmNwcAppbmRl
eCA4MzE5NTBlNWYyNmZmNjZkMGYwMDY1NTZlODBkYTg1ZDcxMmZiNzBmLi4zZTk2MjIyZGZjYzc5
OGRjMGYxMjNhYjdiNmQzMTU2YWI0ZGQwM2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2ZsZXgvRmxleEZvcm1hdHRpbmdHZW9tZXRyeS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9mbGV4L0ZsZXhG
b3JtYXR0aW5nR2VvbWV0cnkuY3BwCkBAIC00MCw3ICs0MCw3IEBAIEZsZXhGb3JtYXR0aW5nR2Vv
bWV0cnk6OkZsZXhGb3JtYXR0aW5nR2VvbWV0cnkoY29uc3QgRmxleEZvcm1hdHRpbmdDb250ZXh0
JiBmbGV4CiB7CiB9CiAKLUZvcm1hdHRpbmdDb250ZXh0OjpJbnRyaW5zaWNXaWR0aENvbnN0cmFp
bnRzIEZsZXhGb3JtYXR0aW5nR2VvbWV0cnk6OmludHJpbnNpY1dpZHRoQ29uc3RyYWludHMoY29u
c3QgQ29udGFpbmVyQm94JiBmbGV4SXRlbSkKK0ludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgRmxl
eEZvcm1hdHRpbmdHZW9tZXRyeTo6aW50cmluc2ljV2lkdGhDb25zdHJhaW50cyhjb25zdCBDb250
YWluZXJCb3gmIGZsZXhJdGVtKQogewogICAgIGF1dG8gZml4ZWRNYXJnaW5Cb3JkZXJBbmRQYWRk
aW5nID0gWyZdKGF1dG8mIGxheW91dEJveCkgewogICAgICAgICBhdXRvJiBzdHlsZSA9IGxheW91
dEJveC5zdHlsZSgpOwpAQCAtNTIsNyArNTIsNyBAQCBGb3JtYXR0aW5nQ29udGV4dDo6SW50cmlu
c2ljV2lkdGhDb25zdHJhaW50cyBGbGV4Rm9ybWF0dGluZ0dlb21ldHJ5OjppbnRyaW5zaWNXaQog
ICAgICAgICAgICAgKyBmaXhlZFZhbHVlKHN0eWxlLm1hcmdpbkVuZCgpKS52YWx1ZU9yKDApOwog
ICAgIH07CiAKLSAgICBhdXRvIGNvbXB1dGVkSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyA9IFsm
XSgpIC0+IEZvcm1hdHRpbmdDb250ZXh0OjpJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzIHsKKyAg
ICBhdXRvIGNvbXB1dGVkSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyA9IFsmXSgpIC0+IEludHJp
bnNpY1dpZHRoQ29uc3RyYWludHMgewogICAgICAgICBhdXRvIGxvZ2ljYWxXaWR0aCA9IGZsZXhJ
dGVtLnN0eWxlKCkubG9naWNhbFdpZHRoKCk7CiAgICAgICAgIC8vIE1pbmltdW0vbWF4aW11bSB3
aWR0aCBjYW4ndCBiZSBkZXBlbmRpbmcgb24gdGhlIGNvbnRhaW5pbmcgYmxvY2sncyB3aWR0aC4K
ICAgICAgICAgYXV0byBuZWVkc1Jlc29sdmVkQ29udGFpbmluZ0Jsb2NrV2lkdGggPSBsb2dpY2Fs
V2lkdGguaXNDYWxjdWxhdGVkKCkgfHwgbG9naWNhbFdpZHRoLmlzUGVyY2VudCgpIHx8IGxvZ2lj
YWxXaWR0aC5pc1JlbGF0aXZlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2ZsZXgvRmxleEZvcm1hdHRpbmdHZW9tZXRyeS5oIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9mbGV4L0ZsZXhGb3JtYXR0aW5nR2Vv
bWV0cnkuaAppbmRleCA2MjhjOTMzNTI4MmM4MTMyMTZhNjIzMWYxNzNkY2RmZjI3OWYyNWE2Li4x
ODljZjgyZDYwY2YwZGI4ZjdjZTY4NzI3MzU2OGQ0MjA2ZmVmZDM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2ZsZXgvRmxleEZvcm1hdHRpbmdH
ZW9tZXRyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
ZmxleC9GbGV4Rm9ybWF0dGluZ0dlb21ldHJ5LmgKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgRmxl
eEZvcm1hdHRpbmdHZW9tZXRyeSA6IHB1YmxpYyBGb3JtYXR0aW5nR2VvbWV0cnkgewogcHVibGlj
OgogICAgIEZsZXhGb3JtYXR0aW5nR2VvbWV0cnkoY29uc3QgRmxleEZvcm1hdHRpbmdDb250ZXh0
Jik7CiAKLSAgICBGb3JtYXR0aW5nQ29udGV4dDo6SW50cmluc2ljV2lkdGhDb25zdHJhaW50cyBp
bnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzKGNvbnN0IENvbnRhaW5lckJveCYpOworICAgIEludHJp
bnNpY1dpZHRoQ29uc3RyYWludHMgaW50cmluc2ljV2lkdGhDb25zdHJhaW50cyhjb25zdCBDb250
YWluZXJCb3gmKTsKIAogcHJpdmF0ZToKICAgICBjb25zdCBGbGV4Rm9ybWF0dGluZ0NvbnRleHQm
IGZvcm1hdHRpbmdDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8RmxleEZvcm1hdHRp
bmdDb250ZXh0PihGb3JtYXR0aW5nR2VvbWV0cnk6OmZvcm1hdHRpbmdDb250ZXh0KCkpOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXgg
MDQyZDkwZjA4ZTZiMTc2ODVjZWVkNTYzNmM0N2FiZWIxYjU0OTc0ZS4uODZjODM0YzMxMmY1Y2E1
ZGVmNjQwNGE1ZjcyMDljMTMzZWE2ZWRkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMjQzLDcgKzI0Myw3IEBAIHZvaWQgSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXQoSW5saW5lSXRlbXMmIGlubGluZUl0ZW1zLCBM
aW5lQnVpbGRlcjo6CiAgICAgfQogfQogCi1Gb3JtYXR0aW5nQ29udGV4dDo6SW50cmluc2ljV2lk
dGhDb25zdHJhaW50cyBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZWRJbnRyaW5zaWNX
aWR0aENvbnN0cmFpbnRzKCkKK0ludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQ6OmNvbXB1dGVkSW50cmluc2ljV2lkdGhDb25zdHJhaW50cygpCiB7CiAgICAg
YXV0byYgbGF5b3V0U3RhdGUgPSB0aGlzLT5sYXlvdXRTdGF0ZSgpOwogICAgIEFTU0VSVCghZm9y
bWF0dGluZ1N0YXRlKCkuaW50cmluc2ljV2lkdGhDb25zdHJhaW50cygpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3Jt
YXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IDlhMjA1ODUzOTI1N2Qz
YTkwMWNiM2NhYzE3M2ZkM2FhZTkxZmIwMzYuLjU0MWEwNGE2NDMzNDQ4ZWE1YjJiYzIxZTExOGIw
NjVmNWZkYmRlZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdDb250
ZXh0LmNwcApAQCAtMzA0LDcgKzMwNCw3IEBAIHZvaWQgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6
bGF5b3V0Q2VsbChjb25zdCBUYWJsZUdyaWQ6OkNlbGwmIGNlbGwsIExheW91dFVuaXQKICAgICBj
ZWxsQm94R2VvbWV0cnkuc2V0Q29udGVudEJveEhlaWdodChnZW9tZXRyeSgpLmNlbGxIZWlnaChj
ZWxsQm94KSk7CiB9CiAKLUZvcm1hdHRpbmdDb250ZXh0OjpJbnRyaW5zaWNXaWR0aENvbnN0cmFp
bnRzIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVkSW50cmluc2ljV2lkdGhDb25zdHJh
aW50cygpCitJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6
OmNvbXB1dGVkSW50cmluc2ljV2lkdGhDb25zdHJhaW50cygpCiB7CiAgICAgQVNTRVJUKCFyb290
KCkuaXNTaXplQ29udGFpbm1lbnRCb3goKSk7CiAgICAgLy8gVGFibGVzIGhhdmUgYSBzbGlnaHR5
IGRpZmZlcmVudCBjb25jZXB0IG9mIHNocmluayB0byBmaXQuIEl0J3MgcmVhbGx5IG9ubHkgZGlm
ZmVyZW50IHdpdGggbm9uLWF1dG8gIndpZHRoIiB2YWx1ZXMsIHdoZXJlCkBAIC0zNzEsNyArMzcx
LDcgQEAgVW5pcXVlUmVmPFRhYmxlR3JpZD4gVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6ZW5zdXJl
VGFibGVHcmlkKGNvbnN0IENvbnRhaW5lckJveCYKICAgICByZXR1cm4gdGFibGVHcmlkOwogfQog
Ci1Gb3JtYXR0aW5nQ29udGV4dDo6SW50cmluc2ljV2lkdGhDb25zdHJhaW50cyBUYWJsZUZvcm1h
dHRpbmdDb250ZXh0Ojpjb21wdXRlZFByZWZlcnJlZFdpZHRoRm9yQ29sdW1ucygpCitJbnRyaW5z
aWNXaWR0aENvbnN0cmFpbnRzIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVkUHJlZmVy
cmVkV2lkdGhGb3JDb2x1bW5zKCkKIHsKICAgICBhdXRvJiBmb3JtYXR0aW5nU3RhdGUgPSB0aGlz
LT5mb3JtYXR0aW5nU3RhdGUoKTsKICAgICBhdXRvJiBncmlkID0gZm9ybWF0dGluZ1N0YXRlLnRh
YmxlR3JpZCgpOwpAQCAtNDEzLDcgKzQxMyw3IEBAIEZvcm1hdHRpbmdDb250ZXh0OjpJbnRyaW5z
aWNXaWR0aENvbnN0cmFpbnRzIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVkUHJlCiAg
ICAgICAgIGZpeGVkV2lkdGhDb2x1bW5zLmFwcGVuZChmaXhlZFdpZHRoKCkpOwogICAgIH0KIAot
ICAgIFZlY3RvcjxGb3JtYXR0aW5nQ29udGV4dDo6SW50cmluc2ljV2lkdGhDb25zdHJhaW50cz4g
Y29sdW1uSW50cmluc2ljV2lkdGhzKGNvbHVtbkxpc3Quc2l6ZSgpKTsKKyAgICBWZWN0b3I8SW50
cmluc2ljV2lkdGhDb25zdHJhaW50cz4gY29sdW1uSW50cmluc2ljV2lkdGhzKGNvbHVtbkxpc3Qu
c2l6ZSgpKTsKICAgICAvLyAzLiBDb2xsZWN0IGhlIG1pbi9tYXggd2lkdGggZm9yIGVhY2ggY29s
dW1uIGJ1dCBpZ25vcmUgY29sdW1uIHNwYW5zIGZvciBub3cuCiAgICAgVmVjdG9yPFNsb3RQb3Np
dGlvbj4gc3Bhbm5pbmdDZWxsUG9zaXRpb25MaXN0OwogICAgIHNpemVfdCBudW1iZXJPZkFjdHVh
bENvbHVtbnMgPSAwOwpAQCAtNDI5LDcgKzQyOSw3IEBAIEZvcm1hdHRpbmdDb250ZXh0OjpJbnRy
aW5zaWNXaWR0aENvbnN0cmFpbnRzIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVkUHJl
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBh
dXRvIGNvbHVtbkZpeGVkV2lkdGggPSBmaXhlZFdpZHRoQ29sdW1uc1tjb2x1bW5JbmRleF07Ci0g
ICAgICAgICAgICBhdXRvIHdpZHRoQ29uc3RyYWludHMgPSAhY29sdW1uRml4ZWRXaWR0aCA/IHNs
b3Qud2lkdGhDb25zdHJhaW50cygpIDogRm9ybWF0dGluZ0NvbnRleHQ6OkludHJpbnNpY1dpZHRo
Q29uc3RyYWludHMgeyAqY29sdW1uRml4ZWRXaWR0aCwgKmNvbHVtbkZpeGVkV2lkdGggfTsKKyAg
ICAgICAgICAgIGF1dG8gd2lkdGhDb25zdHJhaW50cyA9ICFjb2x1bW5GaXhlZFdpZHRoID8gc2xv
dC53aWR0aENvbnN0cmFpbnRzKCkgOiBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzIHsgKmNvbHVt
bkZpeGVkV2lkdGgsICpjb2x1bW5GaXhlZFdpZHRoIH07CiAgICAgICAgICAgICBjb2x1bW5JbnRy
aW5zaWNXaWR0aHNbY29sdW1uSW5kZXhdLm1pbmltdW0gPSBzdGQ6Om1heCh3aWR0aENvbnN0cmFp
bnRzLm1pbmltdW0sIGNvbHVtbkludHJpbnNpY1dpZHRoc1tjb2x1bW5JbmRleF0ubWluaW11bSk7
CiAgICAgICAgICAgICBjb2x1bW5JbnRyaW5zaWNXaWR0aHNbY29sdW1uSW5kZXhdLm1heGltdW0g
PSBzdGQ6Om1heCh3aWR0aENvbnN0cmFpbnRzLm1heGltdW0sIGNvbHVtbkludHJpbnNpY1dpZHRo
c1tjb2x1bW5JbmRleF0ubWF4aW11bSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nR2Vv
bWV0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJs
ZS9UYWJsZUZvcm1hdHRpbmdHZW9tZXRyeS5jcHAKaW5kZXggYjkxMWEyYWY4MjU5NTM0NmYwNDk1
MGFhMWEyN2M4ODg3NzcxNmJjNy4uMzc5NWMzNjc0Mjc5NGExZWNiMGE5MGJkMDM4ZTc0OTFjYTdk
OTRlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdHZW9tZXRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdHZW9tZXRyeS5j
cHAKQEAgLTEyMCwxNSArMTIwLDE1IEBAIE9wdGlvbmFsPExheW91dFVuaXQ+IFRhYmxlRm9ybWF0
dGluZ0dlb21ldHJ5Ojpjb21wdXRlZENvbHVtbldpZHRoKGNvbnN0IENvbnRhaW5lCiAgICAgcmV0
dXJuIGNvbHVtbkJveC5jb2x1bW5XaWR0aCgpOwogfQogCi1Gb3JtYXR0aW5nQ29udGV4dDo6SW50
cmluc2ljV2lkdGhDb25zdHJhaW50cyBUYWJsZUZvcm1hdHRpbmdHZW9tZXRyeTo6aW50cmluc2lj
V2lkdGhDb25zdHJhaW50c0ZvckNlbGwoY29uc3QgVGFibGVHcmlkOjpDZWxsJiBjZWxsKQorSW50
cmluc2ljV2lkdGhDb25zdHJhaW50cyBUYWJsZUZvcm1hdHRpbmdHZW9tZXRyeTo6aW50cmluc2lj
V2lkdGhDb25zdHJhaW50c0ZvckNlbGwoY29uc3QgVGFibGVHcmlkOjpDZWxsJiBjZWxsKQogewog
ICAgIGF1dG8mIGNlbGxCb3ggPSBjZWxsLmJveCgpOwogICAgIGF1dG8mIHN0eWxlID0gY2VsbEJv
eC5zdHlsZSgpOwogCi0gICAgYXV0byBjb21wdXRlZEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMg
PSBbJl0oKSAtPiBGb3JtYXR0aW5nQ29udGV4dDo6SW50cmluc2ljV2lkdGhDb25zdHJhaW50cyB7
CisgICAgYXV0byBjb21wdXRlZEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgPSBbJl0oKSAtPiBJ
bnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzIHsKICAgICAgICAgLy8gRXZlbiBmaXhlZCB3aWR0aCBj
ZWxscyBleHBhbmQgdG8gdGhlaXIgbWluaW11bSBjb250ZW50IHdpZHRoCiAgICAgICAgIC8vIDx0
ZCBzdHlsZT0id2lkdGg6IDEwcHgiPnRlc3RfY29udGVudDwvdGQ+IHdpbGwgc2l6ZSB0byBtYXgo
bWluaW11bSBjb250ZW50IHdpZHRoLCBjb21wdXRlZCB3aWR0aCkuCi0gICAgICAgIGF1dG8gaW50
cmluc2ljV2lkdGhDb25zdHJhaW50cyA9IEZvcm1hdHRpbmdDb250ZXh0OjpJbnRyaW5zaWNXaWR0
aENvbnN0cmFpbnRzIHsgfTsKKyAgICAgICAgYXV0byBpbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRz
ID0gSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyB7IH07CiAgICAgICAgIGlmIChjZWxsQm94Lmhh
c0NoaWxkKCkpCiAgICAgICAgICAgICBpbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzID0gTGF5b3V0
Q29udGV4dDo6Y3JlYXRlRm9ybWF0dGluZ0NvbnRleHQoY2VsbEJveCwgbGF5b3V0U3RhdGUoKSkt
PmNvbXB1dGVkSW50cmluc2ljV2lkdGhDb25zdHJhaW50cygpOwogICAgICAgICBpZiAoYXV0byBm
aXhlZFdpZHRoID0gZml4ZWRWYWx1ZShzdHlsZS5sb2dpY2FsV2lkdGgoKSkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9y
bWF0dGluZ0dlb21ldHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ0dlb21ldHJ5LmgKaW5kZXggNDU5Y2ViM2FjMTViYjUw
NDQ3ZWUyM2Q5YWE0NWRmNDIzYmJjN2QwZS4uMDBjYTU5MWMzNTc4NjUyOTg1NTEyZDA1YjhmODk2
ZTY3OTEyZmMzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdHZW9tZXRyeS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nR2VvbWV0
cnkuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgTGF5b3V0VW5pdCBjZWxsSGVpZ2go
Y29uc3QgQ29udGFpbmVyQm94JikgY29uc3Q7CiAgICAgRWRnZXMgY29tcHV0ZWRDZWxsQm9yZGVy
KGNvbnN0IFRhYmxlR3JpZDo6Q2VsbCYpIGNvbnN0OwogICAgIE9wdGlvbmFsPExheW91dFVuaXQ+
IGNvbXB1dGVkQ29sdW1uV2lkdGgoY29uc3QgQ29udGFpbmVyQm94JiBjb2x1bW5Cb3gpOwotICAg
IEZvcm1hdHRpbmdDb250ZXh0OjpJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzIGludHJpbnNpY1dp
ZHRoQ29uc3RyYWludHNGb3JDZWxsKGNvbnN0IFRhYmxlR3JpZDo6Q2VsbCYpOworICAgIEludHJp
bnNpY1dpZHRoQ29uc3RyYWludHMgaW50cmluc2ljV2lkdGhDb25zdHJhaW50c0ZvckNlbGwoY29u
c3QgVGFibGVHcmlkOjpDZWxsJik7CiAgICAgSW5saW5lTGF5b3V0VW5pdCB1c2VkQmFzZWxpbmVG
b3JDZWxsKGNvbnN0IENvbnRhaW5lckJveCYgY2VsbEJveCk7CiAKIHByaXZhdGU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxl
R3JpZC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9U
YWJsZUdyaWQuaAppbmRleCA2MjVhM2Y0NGJmNjIyMWNlNDY1MjU5NDA5MTNlY2UxMGIwNmFhY2Vm
Li5hZmU4NDE3YzlhZTE5NTc5YThlM2I2MGI3MWNiM2MwM2YzZGMwOWM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlR3JpZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFi
bGVHcmlkLmgKQEAgLTU4LDggKzU4LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q29sbGFwc2Vk
Qm9yZGVyKGNvbnN0IEVkZ2VzJiBjb2xsYXBzZWRCb3JkZXIpIHsgbV9jb2xsYXBzZWRCb3JkZXIg
PSBjb2xsYXBzZWRCb3JkZXI7IH0KICAgICBPcHRpb25hbDxFZGdlcz4gY29sbGFwc2VkQm9yZGVy
KCkgY29uc3QgeyByZXR1cm4gbV9jb2xsYXBzZWRCb3JkZXI7IH0KIAotICAgIHZvaWQgc2V0V2lk
dGhDb25zdHJhaW50cyhGb3JtYXR0aW5nQ29udGV4dDo6SW50cmluc2ljV2lkdGhDb25zdHJhaW50
cyBpbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzKSB7IG1faW50cmluc2ljV2lkdGhDb25zdHJhaW50
cyA9IGludHJpbnNpY1dpZHRoQ29uc3RyYWludHM7IH0KLSAgICBPcHRpb25hbDxGb3JtYXR0aW5n
Q29udGV4dDo6SW50cmluc2ljV2lkdGhDb25zdHJhaW50cz4gd2lkdGhDb25zdHJhaW50cygpIGNv
bnN0IHsgcmV0dXJuIG1faW50cmluc2ljV2lkdGhDb25zdHJhaW50czsgfQorICAgIHZvaWQgc2V0
V2lkdGhDb25zdHJhaW50cyhJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzIGludHJpbnNpY1dpZHRo
Q29uc3RyYWludHMpIHsgbV9pbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzID0gaW50cmluc2ljV2lk
dGhDb25zdHJhaW50czsgfQorICAgIE9wdGlvbmFsPEludHJpbnNpY1dpZHRoQ29uc3RyYWludHM+
IHdpZHRoQ29uc3RyYWludHMoKSBjb25zdCB7IHJldHVybiBtX2ludHJpbnNpY1dpZHRoQ29uc3Ry
YWludHM7IH0KIAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fc2xvdE1hcC5p
c0VtcHR5KCk7IH0KICAgICAvLyBDb2x1bW4gcmVwcmVzZW50cyBhIHZlcnRpY2FsIHNldCBvZiBz
bG90cyBpbiB0aGUgZ3JpZC4gQSBjb2x1bW4gaGFzIGhvcml6b250YWwgcG9zaXRpb24gYW5kIHdp
ZHRoLgpAQCAtMTg3LDggKzE4Nyw4IEBAIHB1YmxpYzoKICAgICAgICAgY29uc3QgQ2VsbCYgY2Vs
bCgpIGNvbnN0IHsgcmV0dXJuICptX2NlbGw7IH0KICAgICAgICAgQ2VsbCYgY2VsbCgpIHsgcmV0
dXJuICptX2NlbGw7IH0KIAotICAgICAgICBjb25zdCBGb3JtYXR0aW5nQ29udGV4dDo6SW50cmlu
c2ljV2lkdGhDb25zdHJhaW50cyYgd2lkdGhDb25zdHJhaW50cygpIGNvbnN0IHsgcmV0dXJuIG1f
d2lkdGhDb25zdHJhaW50czsgfQotICAgICAgICB2b2lkIHNldFdpZHRoQ29uc3RyYWludHMoY29u
c3QgRm9ybWF0dGluZ0NvbnRleHQ6OkludHJpbnNpY1dpZHRoQ29uc3RyYWludHMmIHdpZHRoQ29u
c3RyYWludHMpIHsgbV93aWR0aENvbnN0cmFpbnRzID0gd2lkdGhDb25zdHJhaW50czsgfQorICAg
ICAgICBjb25zdCBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzJiB3aWR0aENvbnN0cmFpbnRzKCkg
Y29uc3QgeyByZXR1cm4gbV93aWR0aENvbnN0cmFpbnRzOyB9CisgICAgICAgIHZvaWQgc2V0V2lk
dGhDb25zdHJhaW50cyhjb25zdCBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzJiB3aWR0aENvbnN0
cmFpbnRzKSB7IG1fd2lkdGhDb25zdHJhaW50cyA9IHdpZHRoQ29uc3RyYWludHM7IH0KIAogICAg
ICAgICAvLyBJbml0aWFsIHNsb3QgcG9zaXRpb24gZm9yIGEgc3Bhbm5pbmcgY2VsbC4KICAgICAg
ICAgLy8gPHRkPjwvdGQ+PHRkIGNvbHNwYW49Mj48L3RkPiBbMSwgMF0gc2xvdCBoYXMgY29sdW1u
IHNwYW4gb2YgMi4KQEAgLTIwNSw3ICsyMDUsNyBAQCBwdWJsaWM6CiAgICAgICAgIFdlYWtQdHI8
Q2VsbD4gbV9jZWxsOwogICAgICAgICBib29sIG1faXNDb2x1bW5TcGFubmVkIHsgZmFsc2UgfTsK
ICAgICAgICAgYm9vbCBtX2lzUm93U3Bhbm5lZCB7IGZhbHNlIH07Ci0gICAgICAgIEZvcm1hdHRp
bmdDb250ZXh0OjpJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzIG1fd2lkdGhDb25zdHJhaW50czsK
KyAgICAgICAgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyBtX3dpZHRoQ29uc3RyYWludHM7CiAg
ICAgfTsKIAogICAgIGNvbnN0IENvbHVtbnMmIGNvbHVtbnMoKSBjb25zdCB7IHJldHVybiBtX2Nv
bHVtbnM7IH0KQEAgLTIzMSw3ICsyMzEsNyBAQCBwcml2YXRlOgogCiAgICAgTGF5b3V0VW5pdCBt
X2hvcml6b250YWxTcGFjaW5nOwogICAgIExheW91dFVuaXQgbV92ZXJ0aWNhbFNwYWNpbmc7Ci0g
ICAgT3B0aW9uYWw8Rm9ybWF0dGluZ0NvbnRleHQ6OkludHJpbnNpY1dpZHRoQ29uc3RyYWludHM+
IG1faW50cmluc2ljV2lkdGhDb25zdHJhaW50czsKKyAgICBPcHRpb25hbDxJbnRyaW5zaWNXaWR0
aENvbnN0cmFpbnRzPiBtX2ludHJpbnNpY1dpZHRoQ29uc3RyYWludHM7CiAgICAgT3B0aW9uYWw8
RWRnZXM+IG1fY29sbGFwc2VkQm9yZGVyOwogfTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>