From - Wed Nov 24 09:43:03 1999
Received: from newton.math.grin.edu ([132.161.33.70]) by EXCHANGESERVER with SMTP (Microsoft Exchange Internet Mail Service Version 5.5.2448.0)
	id XHVQTAJ9; Mon, 22 Nov 1999 20:26:10 -0600
Received: from EXCHANGESERVER (grinnell.edu.10.161.132.IN-ADDR.ARPA [132.161.10.18] (may be forged))
	by newton.math.grin.edu (8.8.8/8.8.8) with ESMTP id UAA25409
	for <rebelsky@math.grin.edu>; Mon, 22 Nov 1999 20:26:09 -0600 (CST)
Received: from webmail.grinnell.edu (webmailsrvr.grinnell.edu [132.161.10.61]) by EXCHANGESERVER with SMTP (Microsoft Exchange Internet Mail Service Version 5.5.2448.0)
	id XHVQTAJ7; Mon, 22 Nov 1999 20:26:09 -0600
Message-Id: <199911230226.UAA25409@newton.math.grin.edu>
Date: Mon, 22 Nov 1999 20:27:20 -0600
Sender: Jeremy Barton <barton@grinnell.edu>
From: Jeremy Barton <barton@grinnell.edu>
To: Samuel Rebelsky <rebelsky@math.grin.edu>
X-EXP32-SerialNo: 00002379
Subject: RE: New files ...
Mime-Version: 1.0
Content-Type: multipart/mixed; boundary="mime-boundary-interchange-383a19ab"
X-Mailer: WebMail (Hydra) SMTP v3.51

  This is the preamble of a multipart MIME formatted message.
  If you are reading this text your mail system is most likely
  not capable of properly decoding MIME messages.  To extract
  the contents of this message, save it to a file and then use
  an external MIME decoding utility.

--mime-boundary-interchange-383a19ab
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: 7bit

>===== Original Message From Samuel Rebelsky <rebelsky@math.grin.edu> =====
>Good job on your presentations.  The other CS faculty were quite
>impressed.
>
>Please email me the current versions of your files so that I can make
>them available to the rest of the group.
>
>-- SamR

Alright.  Here they are as presented.

Jeremy


--mime-boundary-interchange-383a19ab
Content-Type: application/octet-stream; name="Compose.java"
Content-disposition: attachment; filename="Compose.java"
Content-Transfer-Encoding: BASE64

aW1wb3J0IGphdmEuYXd0Lio7DQppbXBvcnQgamF2YS5hd3QuZXZlbnQuKjsNCmltcG9ydCBqYXZh
LnV0aWwuKjsNCg0KcHVibGljIGNsYXNzIENvbXBvc2UgZXh0ZW5kcyBXaW5kb3dBZGFwdGVyIGlt
cGxlbWVudHMgQWN0aW9uTGlzdGVuZXIgDQogew0KDQovLyAgKy0tLS0tLS0tKw0KLy8gIHwgRmll
bGRzIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQ0KLy8gICstLS0tLS0tLSsNCg0KICAvKiogR1VJIGZpZWxkcyAqLw0KICBwcm90ZWN0ZWQgR3Jp
ZEJhZ0xheW91dCBncmlkOw0KICBwcm90ZWN0ZWQgTGFiZWwgR21haWw7DQogIHByb3RlY3RlZCBU
ZXh0RmllbGQgR1VJdG87DQogIHByb3RlY3RlZCBUZXh0RmllbGQgR1VJY2M7DQogIHByb3RlY3Rl
ZCBUZXh0RmllbGQgR1VJYmNjOw0KICBwcm90ZWN0ZWQgVGV4dEZpZWxkIEdVSXN1YmplY3Q7DQog
IHByb3RlY3RlZCBUZXh0QXJlYSBHVUlCb2R5Ow0KICBwcm90ZWN0ZWQgQnV0dG9uIHNlbmQ7DQog
IHByb3RlY3RlZCBCdXR0b24gY2xlYXI7DQogIHByb3RlY3RlZCBCdXR0b24gcXVpdDsNCiAgcHJv
dGVjdGVkIEJ1dHRvbiB1c2VIVE1MOw0KICBwcm90ZWN0ZWQgQnV0dG9uIGFkZFRhZ3M7DQogIHBy
b3RlY3RlZCBCdXR0b24gYXR0YWNoOw0KICBwcm90ZWN0ZWQgUGFuZWwgZ3VpOw0KICBwcm90ZWN0
ZWQgRnJhbWUgZnJhbWU7DQogIHByb3RlY3RlZCBib29sZWFuIGh0bWwgPSBmYWxzZTsNCiAgcHJv
dGVjdGVkIFN0cmluZyBib2R5U3RyaW5nOw0KICBwcm90ZWN0ZWQgRWRpdEhUTUwgbmV3SFRNTDsN
CiAgcHJvdGVjdGVkIFN0cmluZyB0YWdzX1RvX0FkZDsNCg0KLy8gKy0tLS0tLS0tLS0tLS0rLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vIHwgQ29uc3RydWN0b3IgfA0KLy8gKy0t
LS0tLS0tLS0tLS0rDQoNCiAgcHVibGljIENvbXBvc2UoKXsNCiAgICBmcmFtZSA9IG5ldyBGcmFt
ZSgiR21haWwgQ29tcG9zZSIpOw0KICAgIGZyYW1lLmFkZFdpbmRvd0xpc3RlbmVyKHRoaXMpOw0K
ICAgIGd1aSA9IG5ldyBQYW5lbCgpOw0KICAgIEdyaWRCYWdDb25zdHJhaW50cyBjID0gbmV3IEdy
aWRCYWdDb25zdHJhaW50cygpOw0KICAgIEdyaWRCYWdMYXlvdXQgZ3JpZCA9IG5ldyBHcmlkQmFn
TGF5b3V0KCk7DQogICAgZ3VpLnNldExheW91dChncmlkKTsNCiAgICBHbWFpbCA9IG5ldyBMYWJl
bCgiR01haWwgQ29tcG9zZSBXaW5kb3ciKTsNCiAgICBMYWJlbCBsVG8gPSBuZXcgTGFiZWwoIlRv
OiAgICAgICIpOw0KICAgIExhYmVsIGxDYyA9IG5ldyBMYWJlbCgiQ0M6ICAgICAgIik7DQogICAg
TGFiZWwgbEJjYyA9IG5ldyBMYWJlbCgiQkNDOiAgICAgIik7DQogICAgTGFiZWwgbFN1YmplY3Qg
PSBuZXcgTGFiZWwoIlN1YmplY3Q6ICIpOw0KICAgIHVzZUhUTUwgPSBuZXcgQnV0dG9uKCJIVE1M
Iik7DQogICAgYWRkVGFncyA9IG5ldyBCdXR0b24oIkFkZCBUYWdzIik7DQogICAgYXR0YWNoID0g
bmV3IEJ1dHRvbigiQXR0YWNobWVudHMiKTsNCiAgICBMYWJlbCBhdHRhY2hsID0gbmV3IExhYmVs
KCJObyBBdHRhY2htZW50cyIpOw0KICAgIEdVSXRvID0gbmV3IFRleHRGaWVsZCgpOw0KICAgIEdV
SWNjID0gbmV3IFRleHRGaWVsZCgpOw0KICAgIEdVSWJjYyA9IG5ldyBUZXh0RmllbGQoKTsNCiAg
ICBHVUlzdWJqZWN0ID0gbmV3IFRleHRGaWVsZCgpOw0KICAgIEdVSUJvZHkgPSBuZXcgVGV4dEFy
ZWEoKTsNCiAgICBzZW5kID0gbmV3IEJ1dHRvbigiU2VuZCIpOw0KICAgIGNsZWFyID0gbmV3IEJ1
dHRvbigiQ2xlYXIiKTsNCiAgICBxdWl0ID0gbmV3IEJ1dHRvbigiQ2xvc2UiKTsNCiAgICBzZW5k
LmFkZEFjdGlvbkxpc3RlbmVyKHRoaXMpOw0KICAgIGNsZWFyLmFkZEFjdGlvbkxpc3RlbmVyKHRo
aXMpOw0KICAgIHF1aXQuYWRkQWN0aW9uTGlzdGVuZXIodGhpcyk7DQogICAgYy5hbmNob3I9R3Jp
ZEJhZ0NvbnN0cmFpbnRzLk5PUlRIOw0KICAgIGMuZ3JpZHggPSAwOw0KICAgIGMuZ3JpZHkgPSAw
Ow0KICAgIGMuZmlsbD1HcmlkQmFnQ29uc3RyYWludHMuQk9USDsNCiAgICBjLmdyaWR3aWR0aD1H
cmlkQmFnQ29uc3RyYWludHMuUkVNQUlOREVSOw0KICAgIGdyaWQuc2V0Q29uc3RyYWludHMoR21h
aWwsIGMpOw0KICAgIGd1aS5hZGQoR21haWwpOw0KICAgIGMuZ3JpZHkgPSAxOw0KICAgIGMuZ3Jp
ZHdpZHRoPTE7DQogICAgZ3JpZC5zZXRDb25zdHJhaW50cyhsVG8sIGMpOw0KICAgIGd1aS5hZGQo
bFRvKTsNCiAgICBjLmdyaWR4PTE7DQogICAgYy53ZWlnaHR4PTEuMDsNCiAgICBjLmdyaWR3aWR0
aD1HcmlkQmFnQ29uc3RyYWludHMuUkVNQUlOREVSOw0KICAgIGdyaWQuc2V0Q29uc3RyYWludHMo
R1VJdG8sIGMpOw0KICAgIGd1aS5hZGQoR1VJdG8pOw0KICAgIGMuZ3JpZHk9MjsNCiAgICBjLmdy
aWR4PTA7DQogICAgYy5ncmlkd2lkdGg9MTsNCiAgICBjLndlaWdodHg9MDsNCiAgICBncmlkLnNl
dENvbnN0cmFpbnRzKGxDYywgYyk7DQogICAgZ3VpLmFkZChsQ2MpOw0KICAgIGMuZ3JpZHg9MTsN
CiAgICBjLndlaWdodHg9MS4wOw0KICAgIGMuZ3JpZHdpZHRoPUdyaWRCYWdDb25zdHJhaW50cy5S
RU1BSU5ERVI7DQogICAgZ3JpZC5zZXRDb25zdHJhaW50cyhHVUljYywgYyk7DQogICAgZ3VpLmFk
ZChHVUljYyk7DQogICAgYy5ncmlkeT0zOw0KICAgIGMuZ3JpZHg9MDsNCiAgICBjLmdyaWR3aWR0
aD0xOw0KICAgIGMud2VpZ2h0eD0wOw0KICAgIGdyaWQuc2V0Q29uc3RyYWludHMobEJjYywgYyk7
DQogICAgZ3VpLmFkZChsQmNjKTsNCiAgICBjLmdyaWR4PTE7DQogICAgYy53ZWlnaHR4PTEuMDsN
CiAgICBjLmdyaWR3aWR0aD1HcmlkQmFnQ29uc3RyYWludHMuUkVNQUlOREVSOw0KICAgIGdyaWQu
c2V0Q29uc3RyYWludHMoR1VJYmNjLCBjKTsNCiAgICBndWkuYWRkKEdVSWJjYyk7DQogICAgYy5n
cmlkeT00Ow0KICAgIGMuZ3JpZHg9MDsNCiAgICBjLmdyaWR3aWR0aD0xOw0KICAgIGMud2VpZ2h0
eD0wOw0KICAgIGdyaWQuc2V0Q29uc3RyYWludHMobFN1YmplY3QsIGMpOw0KICAgIGd1aS5hZGQo
bFN1YmplY3QpOw0KICAgIGMuZ3JpZHg9MTsNCiAgICBjLndlaWdodHg9MS4wOw0KICAgIGMuZ3Jp
ZHdpZHRoPUdyaWRCYWdDb25zdHJhaW50cy5SRU1BSU5ERVI7DQogICAgZ3JpZC5zZXRDb25zdHJh
aW50cyhHVUlzdWJqZWN0LCBjKTsNCiAgICBndWkuYWRkKEdVSXN1YmplY3QpOw0KDQogICAgUGFu
ZWwgZ3VpMyA9IG5ldyBQYW5lbCgpOw0KICAgIGMuYW5jaG9yPUdyaWRCYWdDb25zdHJhaW50cy5X
RVNUOw0KICAgIGMud2VpZ2h0eD0wLjA7DQogICAgYy53ZWlnaHR5PTAuMDsNCiAgICBjLmdyaWR4
PTA7DQogICAgYy5ncmlkeT0wOw0KICAgIEdyaWRCYWdMYXlvdXQgZ3JpZDMgPSBuZXcgR3JpZEJh
Z0xheW91dCgpOw0KICAgIGd1aTMuc2V0TGF5b3V0KGdyaWQzKTsNCiAgICBncmlkLnNldENvbnN0
cmFpbnRzKHVzZUhUTUwsIGMpOw0KICAgIGd1aTMuYWRkKHVzZUhUTUwpOw0KICAgIHVzZUhUTUwu
YWRkQWN0aW9uTGlzdGVuZXIodGhpcyk7DQogICAgDQogICAgYy5ncmlkeD0xOw0KICAgIGdyaWQu
c2V0Q29uc3RyYWludHMoYWRkVGFncywgYyk7DQogICAgZ3VpMy5hZGQoYWRkVGFncyk7DQogICAg
YWRkVGFncy5zZXRWaXNpYmxlKCB0cnVlICk7DQogICAgYWRkVGFncy5hZGRBY3Rpb25MaXN0ZW5l
cih0aGlzKTsNCg0KICAgIGMuZ3JpZHg9MjsNCiAgICBjLndlaWdodHg9MC4wOw0KICAgIGMuZ3Jp
ZHdpZHRoPTE7DQogICAgZ3JpZDMuc2V0Q29uc3RyYWludHMoYXR0YWNoLCBjKTsNCiAgICBndWkz
LmFkZChhdHRhY2gpOw0KICAgIGMuZ3JpZHg9MzsNCiAgICBjLndlaWdodHg9MS4wOw0KICAgIGMu
aW5zZXRzID0gbmV3IEluc2V0cygwLCA1LCAwLCAwKTsNCiAgICBncmlkMy5zZXRDb25zdHJhaW50
cyhhdHRhY2hsLCBjKTsNCiAgICBndWkzLmFkZChhdHRhY2hsKTsNCiAgICBjLmdyaWR5PTU7DQog
ICAgYy5ncmlkeD0wOw0KICAgIGMud2VpZ2h0eD0wLjA7DQogICAgYy5ncmlkd2lkdGg9R3JpZEJh
Z0NvbnN0cmFpbnRzLlJFTUFJTkRFUjsNCiAgICBncmlkLnNldENvbnN0cmFpbnRzKGd1aTMsIGMp
Ow0KICAgIGd1aS5hZGQoZ3VpMyk7DQoNCiAgICBjLmdyaWR5PTY7DQogICAgYy53ZWlnaHR5PTEu
MDsNCiAgICBjLmdyaWR4PTA7DQogICAgYy53ZWlnaHR4PTEuMDsNCiAgICBjLmdyaWR3aWR0aD1H
cmlkQmFnQ29uc3RyYWludHMuUkVNQUlOREVSOw0KICAgIGdyaWQuc2V0Q29uc3RyYWludHMoR1VJ
Qm9keSwgYyk7DQogICAgZ3VpLmFkZChHVUlCb2R5KTsNCiAgICBQYW5lbCBndWkyID0gbmV3IFBh
bmVsKCk7DQogICAgR3JpZEJhZ0xheW91dCBncmlkMiA9IG5ldyBHcmlkQmFnTGF5b3V0KCk7DQog
ICAgZ3VpMi5zZXRMYXlvdXQoZ3JpZDIpOw0KICAgIGMuZ3JpZHdpZHRoPTE7DQogICAgYy5ncmlk
eT0wOw0KICAgIGMuZ3JpZHg9MTsNCiAgICBjLndlaWdodHk9MDsNCiAgICBjLmZpbGw9R3JpZEJh
Z0NvbnN0cmFpbnRzLk5PTkU7DQogICAgZ3JpZDIuc2V0Q29uc3RyYWludHMoc2VuZCxjKTsNCiAg
ICBndWkyLmFkZChzZW5kKTsNCiAgICBjLmdyaWR4PTI7DQogICAgZ3JpZDIuc2V0Q29uc3RyYWlu
dHMoY2xlYXIsIGMpOw0KICAgIGd1aTIuYWRkKGNsZWFyKTsNCiAgICBjLmdyaWR4PTM7DQogICAg
Z3JpZDIuc2V0Q29uc3RyYWludHMocXVpdCwgYyk7DQogICAgZ3VpMi5hZGQocXVpdCk7DQoNCiAg
ICBjLmdyaWR5PTc7DQogICAgYy5ncmlkeD0xOw0KICAgIGMud2VpZ2h0eT0wOw0KICAgIGMud2Vp
Z2h0eD0wOw0KICAgIGMuYW5jaG9yPUdyaWRCYWdDb25zdHJhaW50cy5TT1VUSDsNCiAgICBncmlk
LnNldENvbnN0cmFpbnRzKGd1aTIsIGMpOw0KICAgIGd1aS5hZGQoZ3VpMik7DQogICAgZnJhbWUu
YWRkKGd1aSk7DQogICAgZnJhbWUucGFjaygpOw0KICAgIGZyYW1lLnNob3coKTsNCiAgICB9DQoN
Ci8vICArLS0tLS0tLS0tLS0tLS0tLSsNCi8vICB8IEV2ZW50IEhhbmRsZXJzIHwtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQovLyAgKy0tLS0tLS0tLS0t
LS0tLS0rDQoNCiAgcHVibGljIHZvaWQgYWN0aW9uUGVyZm9ybWVkKEFjdGlvbkV2ZW50IGV2dCl7
DQogICAgU3RyaW5nIGNvbW1hbmQgPSBldnQuZ2V0QWN0aW9uQ29tbWFuZCgpOw0KDQogICAgaWYg
KGNvbW1hbmQuZXF1YWxzKCJDbG9zZSIpKSB7DQogICAgICBmcmFtZS5kaXNwb3NlKCk7DQogICAg
ICBTeXN0ZW0uZXhpdCgwKTsNCiAgICB9DQoNCiAgICAgaWYgKGNvbW1hbmQuZXF1YWxzKCJIVE1M
IikpIHsNCiAgICAgICAgIGJvZHlTdHJpbmcgPSBHVUlCb2R5LmdldFRleHQoKTsNCiAgICAgICAg
IEdVSUJvZHkuc2V0VGV4dCgoIjxIVE1MPiIgKyAiXG4iICsgIjxIRUFERVI+IiArICJcbiIgKyAi
PC9IRUFERVI+IiArICJcbiIgKyAiXG4iICsgIjxCT0RZPiIgKyAiXG4iICsgIjxwPiIgKyBHVUlC
b2R5LmdldFRleHQoKSArICJcbiIgKyAiPC9CT0RZPiIgKyAiXG4iICsgIlxuIiArICI8L0hUTUw+
IikpOw0KICAgICAgICAgbmV3SFRNTCA9IG5ldyBFZGl0SFRNTCgiIik7DQogICAgICAgfQ0KDQog
ICAgIGlmIChjb21tYW5kLmVxdWFscygiQWRkIFRhZ3MiKSkgew0KICAgICAgIGlmIChuZXdIVE1M
ICE9IG51bGwpew0KICAgICAgICAgbmV3SFRNTC5zZXRTZWxlY3Rpb24oR1VJQm9keS5nZXRTZWxl
Y3RlZFRleHQoKSk7DQogICAgICAgICB0YWdzX1RvX0FkZCA9IG5ld0hUTUwuZ2V0VGFncygpOw0K
ICAgICAgICAgR1VJQm9keS5yZXBsYWNlUmFuZ2UodGFnc19Ub19BZGQsIEdVSUJvZHkuZ2V0U2Vs
ZWN0aW9uU3RhcnQoKSwgR1VJQm9keS5nZXRTZWxlY3Rpb25FbmQoKSk7DQogICAgICAgfQ0KICAg
ICB9DQoNCg0KICAgIGVsc2UgaWYgKGNvbW1hbmQuZXF1YWxzKCJDbGVhciIpKXsNCiAgICAgIGZy
YW1lLmRpc3Bvc2UoKTsNCiAgICAgIG5ld0hUTUwuZGlzcG9zZSgpOw0KICAgICAgbmV3IENvbXBv
c2UoKTsNCg0KDQogICAgICB9DQoNCiAgICBlbHNlIGlmIChjb21tYW5kLmVxdWFscygiU2VuZCIp
KXsNCiAgICAgICAvKiogICAgICBtZXNzYWdlID0gbmV3IFNpbXBsZU1haWxNZXNzYWdlKCk7DQog
ICAgICBtZXNzYWdlLnNldFJlY2lwaWVudChHVUl0by5nZXRUZXh0KCkpOw0KICAgICAgbWVzc2Fn
ZS5zZXREYXRlKG5ldyBTaW1wbGVEYXRlKCkpOw0KICAgICAgbWVzc2FnZS5zZXRTZW5kZXIoIiIs
ICJub2JvZHlAbm93aGVyZS5jb20iKTsNCiAgICAgIG1lc3NhZ2Uuc2V0U3ViamVjdChHVUlzdWJq
ZWN0LmdldFRleHQoKSk7DQogICAgICAqLw0KDQogICAgfQ0KICB9DQoNCi8vICstLS0tLS0tLS0t
LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQovLyB8IFdpbmRvdyBMaXN0ZW5lcnMg
fA0KLy8gKy0tLS0tLS0tLS0tLS0tLS0tLSsNCg0KICAgIHB1YmxpYyB2b2lkIHdpbmRvd0Nsb3Np
bmcoIFdpbmRvd0V2ZW50IGV2ZW50ICkgew0KICAgIGZyYW1lLmRpc3Bvc2UoKTsNCiAgICBTeXN0
ZW0uZXhpdCgwKTsNCiAgICB9DQoNCnB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFy
Z3Mpew0KICBuZXcgQ29tcG9zZSgpOw0KfQ0KfQ0K

--mime-boundary-interchange-383a19ab
Content-Type: application/octet-stream; name="EditHTML.java"
Content-disposition: attachment; filename="EditHTML.java"
Content-Transfer-Encoding: BASE64

aW1wb3J0IGphdmEuYXd0Lio7DQppbXBvcnQgamF2YS5hd3QuZXZlbnQuKjsNCmltcG9ydCBTaW1w
bGVPdXRwdXQ7DQppbXBvcnQgQ29tcGFyYXRvcjsNCg0KDQovKioNCiAqUHJvdmlkZXMgdGhlIGh0
bWwgdGFncyB3aGljaCBjYW4gYmUgYWRkZWQgdG8gYW4gaHRtbCBlbWFpbA0KICoNCiAqYXV0aG9y
IEZsYW1pbmdvDQogKi8NCg0KcHVibGljIGNsYXNzIEVkaXRIVE1MIGV4dGVuZHMgRnJhbWUgaW1w
bGVtZW50cyBXaW5kb3dMaXN0ZW5lcg0Kew0KDQogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0NCiAgICAvLyAgICAgICAgICAgIEZpZWxkcw0KICAgIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICAgcHJpdmF0ZSBMYWJlbCBjb2xvckxhYmVsID0gbnVs
bDsNCiAgICBwcml2YXRlIExhYmVsIGZvbnRMYWJlbCA9IG51bGw7DQogICAgcHJpdmF0ZSBMYWJl
bCBzdHlsZUxhYmVsID0gbnVsbDsNCiAgICBwcml2YXRlIENoZWNrYm94IGNvbG9yMSA9IG51bGw7
DQogICAgcHJpdmF0ZSBDaGVja2JveCBjb2xvcjIgPSBudWxsOw0KICAgIHByaXZhdGUgQ2hlY2ti
b3ggY29sb3IzID0gbnVsbDsNCiAgICBwcml2YXRlIENoZWNrYm94IGNvbG9yNCA9IG51bGw7DQog
ICAgcHJpdmF0ZSBDaGVja2JveCBjb2xvcjUgPSBudWxsOw0KICAgIHByaXZhdGUgQ2hlY2tib3gg
Y29sb3I2ID0gbnVsbDsNCiAgICBwcml2YXRlIENoZWNrYm94IHN0eWxlSXRhbGljcyA9IG51bGw7
DQogICAgcHJpdmF0ZSBDaGVja2JveCBzdHlsZUJvbGQgPSBudWxsOw0KICAgIHByaXZhdGUgQ2hl
Y2tib3ggc3R5bGVUZWxldHlwZSA9IG51bGw7DQogICAgcHJpdmF0ZSBDaGVja2JveCBmb250MSA9
IG51bGw7DQogICAgcHJpdmF0ZSBDaGVja2JveCBmb250MiA9IG51bGw7DQogICAgcHJpdmF0ZSBD
aGVja2JveCBmb250MyA9IG51bGw7DQogICAgcHJpdmF0ZSBDaGVja2JveEdyb3VwIGNoZWNrR3Jv
dXAxID0gbmV3IENoZWNrYm94R3JvdXAoKTsNCiAgICBwcml2YXRlIENoZWNrYm94R3JvdXAgY2hl
Y2tHcm91cDIgPSBuZXcgQ2hlY2tib3hHcm91cCgpOw0KICAgIHByaXZhdGUgQnV0dG9uIFJldHVy
blRhZ3M7DQogICAgcHJpdmF0ZSBTdHJpbmcgY29sb3J0YWcgPSAiIjsNCiAgICBwcml2YXRlIFN0
cmluZyBjb2xvcnRhZzIgPSAiIjsNCiAgICBwcml2YXRlIFN0cmluZyBmb250dGFnID0gIiI7IA0K
ICAgIHByaXZhdGUgU3RyaW5nIGZvbnR0YWcyID0gIiI7ICANCiAgICBwcm90ZWN0ZWQgU3RyaW5n
IHRleHRTZWxlY3Rpb24gPSAiIjsNCiAgICBwcm90ZWN0ZWQgU3RyaW5nIGJvbGR0YWcgPSAiIjsN
CiAgICBwcm90ZWN0ZWQgU3RyaW5nIGJvbGR0YWcyID0gIiI7DQogICAgcHJvdGVjdGVkIFN0cmlu
ZyBpdGFsaWNzdGFnID0gIiI7DQogICAgcHJvdGVjdGVkIFN0cmluZyBpdGFsaWNzdGFnMiA9ICIi
Ow0KICAgIHByb3RlY3RlZCBTdHJpbmcgdGVsZXR5cGV0YWcgPSAiIjsNCiAgICBwcm90ZWN0ZWQg
U3RyaW5nIHRlbGV0eXBldGFnMiA9ICIiOw0KICAgIHByb3RlY3RlZCBTdHJpbmcgY29sb3JzZWxl
Y3RlZCA9ICIiOw0KICAgIHByb3RlY3RlZCBGcmFtZSBmcmFtZTsNCg0KICAgIC8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICAgLy8gICAgICAgICAgQ29uc3RydWN0b3JzDQogICAg
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgICBwdWJsaWMgRWRpdEhUTUwoU3Ry
aW5nIHNlbGVjdGlvbikNCiAgICB7DQogICAgICAgIC8vIENhbGwgc3VwZXIgY29uc3RydWN0b3Iu
DQogICAgICAgIHN1cGVyKCAiRGVzaWduZXIgR21haWwiICk7DQogICAgICAgIHRleHRTZWxlY3Rp
b24gPSBzZWxlY3Rpb247DQogICAgICAgIC8vIFNldCB1cCBjb250YWluZXIgY29tcG9uZW50DQog
ICAgICAgIHNldEJhY2tncm91bmQoIG5ldyBDb2xvciggMCwgMjU1LCAzMCApICk7DQogICAgICAg
IHNldEZvcmVncm91bmQoIG5ldyBDb2xvciggNTAsIDUwLCAyNTUgKSApOw0KICAgICAgICBzZXRT
aXplKCBuZXcgRGltZW5zaW9uKCAxNTAsIDMwMCApICk7DQogICAgICAgIHNldFJlc2l6YWJsZSgg
dHJ1ZSApOw0KDQogICAgICAgIC8vQWRkIGxpc3RlbmVycy4NCiAgICAgICAgYWRkV2luZG93TGlz
dGVuZXIoIHRoaXMgKTsNCg0KICAgICAgICAvLyBNYWtlIHRoZSBHVUkuDQogICAgICAgIG1ha2VH
VUkoKTsNCg0KDQoNCiAgICAgDQogICAgICAgDQoNCiAgICB9DQoNCiAgICAvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0NCiAgICAvLyBHVUkgYnVpbGRlcg0KICAgIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQ0KICAgIHByaXZhdGUgdm9pZCBtYWtlR1VJKCkNCiAgICB7DQoNCiAg
ICAgICAgLy8gQ3JlYXRlIHRoZSBHVUkgc3lzdGVtLg0KICAgICAgICBHcmlkQmFnTGF5b3V0IG1h
aW5MYXlvdXQgPSBuZXcgR3JpZEJhZ0xheW91dCgpOw0KICAgICAgICBzZXRMYXlvdXQoIG1haW5M
YXlvdXQgKTsNCiAgICAgICAgY29sb3JMYWJlbCA9IG5ldyBMYWJlbCggIkNvbG9yIiwgTGFiZWwu
Q0VOVEVSICk7DQogICAgICAgIG1haW5MYXlvdXQuc2V0Q29uc3RyYWludHMoIGNvbG9yTGFiZWws
IG1ha2VHcmlkQ29ucyggMCwgNiwgNCwgMiwgMTAwLCAxMDAsIEdyaWRCYWdDb25zdHJhaW50cy5C
T1RILCBHcmlkQmFnQ29uc3RyYWludHMuQ0VOVEVSLCAwLCAwLCAwLCAwLCAwLCAwICkgKTsNCiAg
ICAgICAgYWRkKCBjb2xvckxhYmVsICk7DQogICAgICAgIGNvbG9yTGFiZWwuc2V0QmFja2dyb3Vu
ZCggbmV3IENvbG9yKCAxOTIsIDE5MiwgMTkyICkgKTsNCiAgICAgICAgY29sb3JMYWJlbC5zZXRG
b3JlZ3JvdW5kKCBuZXcgQ29sb3IoIDAsIDAsIDAgKSApOw0KICAgICAgICBjb2xvckxhYmVsLnNl
dEVuYWJsZWQoIHRydWUgKTsNCiAgICAgICAgY29sb3JMYWJlbC5zZXRWaXNpYmxlKCB0cnVlICk7
DQogICAgICAgIGZvbnRMYWJlbCA9IG5ldyBMYWJlbCggIkZvbnQiLCBMYWJlbC5DRU5URVIgKTsN
CiAgICAgICAgbWFpbkxheW91dC5zZXRDb25zdHJhaW50cyggZm9udExhYmVsLCBtYWtlR3JpZENv
bnMoIDUsIDYsIDQsIDIsIDEwMCwgMTAwLCBHcmlkQmFnQ29uc3RyYWludHMuQk9USCwgR3JpZEJh
Z0NvbnN0cmFpbnRzLkNFTlRFUiwgMCwgMCwgMCwgMCwgMCwgMCApICk7DQogICAgICAgIGFkZCgg
Zm9udExhYmVsICk7DQogICAgICAgIGZvbnRMYWJlbC5zZXRCYWNrZ3JvdW5kKCBuZXcgQ29sb3Io
IDE5MiwgMTkyLCAxOTIgKSApOw0KICAgICAgICBmb250TGFiZWwuc2V0Rm9yZWdyb3VuZCggbmV3
IENvbG9yKCAwLCAwLCAwICkgKTsNCiAgICAgICAgZm9udExhYmVsLnNldEVuYWJsZWQoIHRydWUg
KTsNCiAgICAgICAgZm9udExhYmVsLnNldFZpc2libGUoIHRydWUgKTsNCiAgICAgICAgc3R5bGVM
YWJlbCA9IG5ldyBMYWJlbCggIlN0eWxlIiwgTGFiZWwuQ0VOVEVSICk7DQogICAgICAgIG1haW5M
YXlvdXQuc2V0Q29uc3RyYWludHMoIHN0eWxlTGFiZWwsIG1ha2VHcmlkQ29ucyggMCwgMCwgOSwg
MiwgMTAwLCAxMDAsIEdyaWRCYWdDb25zdHJhaW50cy5CT1RILCBHcmlkQmFnQ29uc3RyYWludHMu
Q0VOVEVSLCAwLCAwLCAwLCAwLCAwLCAwICkgKTsNCiAgICAgICAgYWRkKCBzdHlsZUxhYmVsICk7
DQogICAgICAgIHN0eWxlTGFiZWwuc2V0QmFja2dyb3VuZCggbmV3IENvbG9yKCAxOTIsIDE5Miwg
MTkyICkgKTsNCiAgICAgICAgc3R5bGVMYWJlbC5zZXRGb3JlZ3JvdW5kKCBuZXcgQ29sb3IoIDAs
IDAsIDAgKSApOw0KICAgICAgICBzdHlsZUxhYmVsLnNldEVuYWJsZWQoIHRydWUgKTsNCiAgICAg
ICAgc3R5bGVMYWJlbC5zZXRWaXNpYmxlKCB0cnVlICk7DQogICAgICAgIGNvbG9yMSA9IG5ldyBD
aGVja2JveCggIlllbGxvdyIsIGZhbHNlICk7DQogICAgICAgIGNvbG9yMS5zZXRDaGVja2JveEdy
b3VwKCBjaGVja0dyb3VwMSApOw0KICAgICAgICBtYWluTGF5b3V0LnNldENvbnN0cmFpbnRzKCBj
b2xvcjEsIG1ha2VHcmlkQ29ucyggMCwgOSwgNCwgMSwgMTAwLCAxMDAsIEdyaWRCYWdDb25zdHJh
aW50cy5CT1RILCBHcmlkQmFnQ29uc3RyYWludHMuQ0VOVEVSLCAwLCAwLCAwLCAwLCAwLCAwICkg
KTsNCiAgICAgICAgYWRkKCBjb2xvcjEgKTsNCiAgICAgICAgY29sb3IxLnNldEJhY2tncm91bmQo
IG5ldyBDb2xvciggMTkyLCAxOTIsIDE5MiApICk7DQogICAgICAgIGNvbG9yMS5zZXRGb3JlZ3Jv
dW5kKCBuZXcgQ29sb3IoIDEwMCwgMTAwLCA1MCApICk7DQogICAgICAgIGNvbG9yMS5zZXRFbmFi
bGVkKCB0cnVlICk7DQogICAgICAgIGNvbG9yMS5zZXRWaXNpYmxlKCB0cnVlICk7DQogICAgICAg
IGNvbG9yMiA9IG5ldyBDaGVja2JveCggIkRlZmF1bHQiLCBmYWxzZSApOw0KICAgICAgICBjb2xv
cjIuc2V0Q2hlY2tib3hHcm91cCggY2hlY2tHcm91cDEgKTsNCiAgICAgICAgbWFpbkxheW91dC5z
ZXRDb25zdHJhaW50cyggY29sb3IyLCBtYWtlR3JpZENvbnMoIDAsIDgsIDQsIDEsIDEwMCwgMTAw
LCBHcmlkQmFnQ29uc3RyYWludHMuQk9USCwgR3JpZEJhZ0NvbnN0cmFpbnRzLkNFTlRFUiwgMCwg
MCwgMCwgMCwgMCwgMCApICk7DQogICAgICAgIGFkZCggY29sb3IyICk7DQogICAgICAgIGNvbG9y
Mi5zZXRCYWNrZ3JvdW5kKCBuZXcgQ29sb3IoIDE5MiwgMTkyLCAxOTIgKSApOw0KICAgICAgICBj
b2xvcjIuc2V0Rm9yZWdyb3VuZCggbmV3IENvbG9yKCAwLCAwLCAwICkgKTsNCiAgICAgICAgY29s
b3IyLnNldEVuYWJsZWQoIHRydWUgKTsNCiAgICAgICAgY29sb3IyLnNldFZpc2libGUoIHRydWUg
KTsNCiAgICAgICAgY29sb3IyLnNldFN0YXRlKHRydWUpOw0KICAgICAgICBjb2xvcjMgPSBuZXcg
Q2hlY2tib3goICJCbHVlIiwgZmFsc2UgKTsNCiAgICAgICAgY29sb3IzLnNldENoZWNrYm94R3Jv
dXAoIGNoZWNrR3JvdXAxICk7DQogICAgICAgIG1haW5MYXlvdXQuc2V0Q29uc3RyYWludHMoIGNv
bG9yMywgbWFrZUdyaWRDb25zKCAwLCAxMCwgNCwgMSwgMTAwLCAxMDAsIEdyaWRCYWdDb25zdHJh
aW50cy5CT1RILCBHcmlkQmFnQ29uc3RyYWludHMuQ0VOVEVSLCAwLCAwLCAwLCAwLCAwLCAwICkg
KTsNCiAgICAgICAgYWRkKCBjb2xvcjMgKTsNCiAgICAgICAgY29sb3IzLnNldEJhY2tncm91bmQo
IG5ldyBDb2xvciggMTkyLCAxOTIsIDE5MiApICk7DQogICAgICAgIGNvbG9yMy5zZXRGb3JlZ3Jv
dW5kKCBuZXcgQ29sb3IoIDAsIDAsIDI1NSApICk7DQogICAgICAgIGNvbG9yMy5zZXRFbmFibGVk
KCB0cnVlICk7DQogICAgICAgIGNvbG9yMy5zZXRWaXNpYmxlKCB0cnVlICk7DQogICAgICAgIGNv
bG9yNCA9IG5ldyBDaGVja2JveCggIlJlZCIsIGZhbHNlICk7DQogICAgICAgIGNvbG9yNC5zZXRD
aGVja2JveEdyb3VwKCBjaGVja0dyb3VwMSApOw0KICAgICAgICBtYWluTGF5b3V0LnNldENvbnN0
cmFpbnRzKCBjb2xvcjQsIG1ha2VHcmlkQ29ucyggMCwgMTEsIDQsIDEsIDEwMCwgMTAwLCBHcmlk
QmFnQ29uc3RyYWludHMuQk9USCwgR3JpZEJhZ0NvbnN0cmFpbnRzLkNFTlRFUiwgMCwgMCwgMCwg
MCwgMCwgMCApICk7DQogICAgICAgIGFkZCggY29sb3I0ICk7ICAgICANCiAgICAgICAgY29sb3I0
LnNldEJhY2tncm91bmQoIG5ldyBDb2xvciggMTkyLCAxOTIsIDE5MiApICk7DQogICAgICAgIGNv
bG9yNC5zZXRGb3JlZ3JvdW5kKCBuZXcgQ29sb3IoIDI1NSwgMCwgMCApICk7DQogICAgICAgIGNv
bG9yNC5zZXRFbmFibGVkKCB0cnVlICk7DQogICAgICAgIGNvbG9yNC5zZXRWaXNpYmxlKCB0cnVl
ICk7DQogICAgICAgIGNvbG9yNSA9IG5ldyBDaGVja2JveCggIkdyZWVuIiwgZmFsc2UgKTsNCiAg
ICAgICAgY29sb3I1LnNldENoZWNrYm94R3JvdXAoIGNoZWNrR3JvdXAxICk7DQogICAgICAgIG1h
aW5MYXlvdXQuc2V0Q29uc3RyYWludHMoIGNvbG9yNSwgbWFrZUdyaWRDb25zKCAwLCAxMiwgNCwg
MSwgMTAwLCAxMDAsIEdyaWRCYWdDb25zdHJhaW50cy5CT1RILCBHcmlkQmFnQ29uc3RyYWludHMu
Q0VOVEVSLCAwLCAwLCAwLCAwLCAwLCAwICkgKTsNCiAgICAgICAgYWRkKCBjb2xvcjUgKTsNCiAg
ICAgICAgY29sb3I1LnNldEJhY2tncm91bmQoIG5ldyBDb2xvciggMTkyLCAxOTIsIDE5MiApICk7
DQogICAgICAgIGNvbG9yNS5zZXRGb3JlZ3JvdW5kKCBuZXcgQ29sb3IoIDAsIDI1NSwgMCApICk7
DQogICAgICAgIGNvbG9yNS5zZXRFbmFibGVkKCB0cnVlICk7DQogICAgICAgIGNvbG9yNS5zZXRW
aXNpYmxlKCB0cnVlICk7DQogICAgICAgIGNvbG9yNiA9IG5ldyBDaGVja2JveCggIk9yYW5nZSIs
IGZhbHNlICk7DQogICAgICAgIGNvbG9yNi5zZXRDaGVja2JveEdyb3VwKCBjaGVja0dyb3VwMSAp
Ow0KICAgICAgICBtYWluTGF5b3V0LnNldENvbnN0cmFpbnRzKCBjb2xvcjYsIG1ha2VHcmlkQ29u
cyggMCwgMTMsIDQsIDEsIDEwMCwgMTAwLCBHcmlkQmFnQ29uc3RyYWludHMuQk9USCwgR3JpZEJh
Z0NvbnN0cmFpbnRzLkNFTlRFUiwgMCwgMCwgMCwgMCwgMCwgMCApICk7DQogICAgICAgIGFkZCgg
Y29sb3I2ICk7DQogICAgICAgIGNvbG9yNi5zZXRCYWNrZ3JvdW5kKCBuZXcgQ29sb3IoIDE5Miwg
MTkyLCAxOTIgKSApOw0KICAgICAgICBjb2xvcjYuc2V0Rm9yZWdyb3VuZCggbmV3IENvbG9yKCA1
MCwgNTAsIDUwICkgKTsNCiAgICAgICAgY29sb3I2LnNldEVuYWJsZWQoIHRydWUgKTsNCiAgICAg
ICAgY29sb3I2LnNldFZpc2libGUoIHRydWUgKTsNCiAgICAgICAgc3R5bGVJdGFsaWNzID0gbmV3
IENoZWNrYm94KCAiSVRBTElDUyIsIGZhbHNlICk7DQogICAgICAgIG1haW5MYXlvdXQuc2V0Q29u
c3RyYWludHMoIHN0eWxlSXRhbGljcywgbWFrZUdyaWRDb25zKCAwLCAzLCA5LCAxLCAxMDAsIDEw
MCwgR3JpZEJhZ0NvbnN0cmFpbnRzLkJPVEgsIEdyaWRCYWdDb25zdHJhaW50cy5DRU5URVIsIDAs
IDAsIDAsIDAsIDAsIDAgKSApOw0KICAgICAgICBhZGQoIHN0eWxlSXRhbGljcyApOw0KICAgICAg
ICBzdHlsZUl0YWxpY3Muc2V0QmFja2dyb3VuZCggbmV3IENvbG9yKCAxOTIsIDE5MiwgMTkyICkg
KTsNCiAgICAgICAgc3R5bGVJdGFsaWNzLnNldEZvcmVncm91bmQoIG5ldyBDb2xvciggMCwgMCwg
MCApICk7DQogICAgICAgIHN0eWxlSXRhbGljcy5zZXRFbmFibGVkKCB0cnVlICk7DQogICAgICAg
IHN0eWxlSXRhbGljcy5zZXRWaXNpYmxlKCB0cnVlICk7DQogICAgICAgIHN0eWxlQm9sZCA9IG5l
dyBDaGVja2JveCggIkJPTEQiLCBmYWxzZSApOw0KICAgICAgICBtYWluTGF5b3V0LnNldENvbnN0
cmFpbnRzKCBzdHlsZUJvbGQsIG1ha2VHcmlkQ29ucyggMCwgMiwgOSwgMSwgMTAwLCAxMDAsIEdy
aWRCYWdDb25zdHJhaW50cy5CT1RILCBHcmlkQmFnQ29uc3RyYWludHMuQ0VOVEVSLCAwLCAwLCAw
LCAwLCAwLCAwICkgKTsNCiAgICAgICAgYWRkKCBzdHlsZUJvbGQgKTsNCiAgICAgICAgc3R5bGVC
b2xkLnNldEJhY2tncm91bmQoIG5ldyBDb2xvciggMTkyLCAxOTIsIDE5MiApICk7DQogICAgICAg
IHN0eWxlQm9sZC5zZXRGb3JlZ3JvdW5kKCBuZXcgQ29sb3IoIDAsIDAsIDAgKSApOw0KICAgICAg
ICBzdHlsZUJvbGQuc2V0RW5hYmxlZCggdHJ1ZSApOw0KICAgICAgICBzdHlsZUJvbGQuc2V0Vmlz
aWJsZSggdHJ1ZSApOw0KICAgICAgICBzdHlsZVRlbGV0eXBlID0gbmV3IENoZWNrYm94KCAiVEVM
RVRZUEUiLCBmYWxzZSApOw0KICAgICAgICBtYWluTGF5b3V0LnNldENvbnN0cmFpbnRzKCBzdHls
ZVRlbGV0eXBlLCBtYWtlR3JpZENvbnMoIDAsIDQsIDksIDEsIDEwMCwgMTAwLCBHcmlkQmFnQ29u
c3RyYWludHMuQk9USCwgR3JpZEJhZ0NvbnN0cmFpbnRzLkNFTlRFUiwgMCwgMCwgMCwgMCwgMCwg
MCApICk7DQogICAgICAgIGFkZCggc3R5bGVUZWxldHlwZSApOw0KICAgICAgICBzdHlsZVRlbGV0
eXBlLnNldEJhY2tncm91bmQoIG5ldyBDb2xvciggMTkyLCAxOTIsIDE5MiApICk7DQogICAgICAg
IHN0eWxlVGVsZXR5cGUuc2V0Rm9yZWdyb3VuZCggbmV3IENvbG9yKCAwLCAwLCAwICkgKTsNCiAg
ICAgICAgc3R5bGVUZWxldHlwZS5zZXRFbmFibGVkKCB0cnVlICk7DQogICAgICAgIHN0eWxlVGVs
ZXR5cGUuc2V0VmlzaWJsZSggdHJ1ZSApOw0KICAgICAgICBmb250MSA9IG5ldyBDaGVja2JveCgg
IkRlZmF1bHQiLCBmYWxzZSApOw0KICAgICAgICBmb250MS5zZXRDaGVja2JveEdyb3VwKCBjaGVj
a0dyb3VwMiApOw0KICAgICAgICBtYWluTGF5b3V0LnNldENvbnN0cmFpbnRzKCBmb250MSwgbWFr
ZUdyaWRDb25zKCA1LCA4LCA0LCAxLCAxMDAsIDEwMCwgR3JpZEJhZ0NvbnN0cmFpbnRzLkJPVEgs
IEdyaWRCYWdDb25zdHJhaW50cy5DRU5URVIsIDAsIDAsIDAsIDAsIDAsIDAgKSApOw0KICAgICAg
ICBhZGQoIGZvbnQxICk7DQogICAgICAgIGZvbnQxLnNldEJhY2tncm91bmQoIG5ldyBDb2xvcigg
MTkyLCAxOTIsIDE5MiApICk7DQogICAgICAgIGZvbnQxLnNldEZvcmVncm91bmQoIG5ldyBDb2xv
ciggMCwgMCwgMCApICk7DQogICAgICAgIGZvbnQxLnNldEVuYWJsZWQoIHRydWUgKTsNCiAgICAg
ICAgZm9udDEuc2V0VmlzaWJsZSggdHJ1ZSApOw0KICAgICAgICBmb250MS5zZXRTdGF0ZSh0cnVl
KTsNCiAgICAgICAgZm9udDIgPSBuZXcgQ2hlY2tib3goICJIYW5kd3JpdGluZyIsIGZhbHNlICk7
DQogICAgICAgIGZvbnQyLnNldENoZWNrYm94R3JvdXAoIGNoZWNrR3JvdXAyICk7DQogICAgICAg
IG1haW5MYXlvdXQuc2V0Q29uc3RyYWludHMoIGZvbnQyLCBtYWtlR3JpZENvbnMoIDUsIDksIDQs
IDEsIDEwMCwgMTAwLCBHcmlkQmFnQ29uc3RyYWludHMuQk9USCwgR3JpZEJhZ0NvbnN0cmFpbnRz
LkNFTlRFUiwgMCwgMCwgMCwgMCwgMCwgMCApICk7DQogICAgICAgIGFkZCggZm9udDIgKTsNCiAg
ICAgICAgZm9udDIuc2V0QmFja2dyb3VuZCggbmV3IENvbG9yKCAxOTIsIDE5MiwgMTkyICkgKTsN
CiAgICAgICAgZm9udDIuc2V0Rm9yZWdyb3VuZCggbmV3IENvbG9yKCAwLCAwLCAwICkgKTsNCiAg
ICAgICAgZm9udDIuc2V0RW5hYmxlZCggdHJ1ZSApOw0KICAgICAgICBmb250Mi5zZXRWaXNpYmxl
KCB0cnVlICk7DQogICAgICAgIGZvbnQzID0gbmV3IENoZWNrYm94KCAiQ291cmllciBOZXciLCBm
YWxzZSApOw0KICAgICAgICBmb250My5zZXRDaGVja2JveEdyb3VwKCBjaGVja0dyb3VwMiApOw0K
ICAgICAgICBtYWluTGF5b3V0LnNldENvbnN0cmFpbnRzKCBmb250MywgbWFrZUdyaWRDb25zKCA1
LCAxMCwgNCwgMSwgMTAwLCAxMDAsIEdyaWRCYWdDb25zdHJhaW50cy5CT1RILCBHcmlkQmFnQ29u
c3RyYWludHMuQ0VOVEVSLCAwLCAwLCAwLCAwLCAwLCAwICkgKTsNCiAgICAgICAgYWRkKCBmb250
MyApOw0KICAgICAgICBmb250My5zZXRCYWNrZ3JvdW5kKCBuZXcgQ29sb3IoIDE5MiwgMTkyLCAx
OTIgKSApOw0KICAgICAgICBmb250My5zZXRGb3JlZ3JvdW5kKCBuZXcgQ29sb3IoIDAsIDAsIDAg
KSApOw0KICAgICAgICBmb250My5zZXRFbmFibGVkKCB0cnVlICk7DQogICAgICAgIGZvbnQzLnNl
dFZpc2libGUoIHRydWUgKTsNCg0KICAgICAgICBwYWNrKCk7DQogICAgICAgIHNob3coKTsNCg0K
ICAgIH0NCg0KDQogICAgLypBbGxvd3MgdGhlIHNlbGVjdGlvbiBvZiB0ZXh0IHRoYXQgaXMgdG8g
aGF2ZSBodG1sIHRhZ3MgDQogICAgICphZGRlZCB0byBiZSBzZXQNCiAgICAgKi8NCg0KICAgIHB1
YmxpYyB2b2lkIHNldFNlbGVjdGlvbihTdHJpbmcgc2VsZWN0aW9uKSB7DQogICAgICAgIA0KICAg
ICAgICB0ZXh0U2VsZWN0aW9uID0gc2VsZWN0aW9uOw0KICAgIH0NCg0KICAgIC8qUmV0dXJucyB0
aGUgdGFncyB0aGUgdXNlciBoYXMgY2hvc2VuLCB0aHJ1IHRoZSBHVUksIA0KICAgICAqdG8gYWRk
IHRvIHRoZSBzZWxlY3RlZCB0ZXh0DQogICAgICovDQoNCiAgICBwdWJsaWMgU3RyaW5nIGdldFRh
Z3MoKSB7DQoNCiAgICAgICAgaWYgKHN0eWxlQm9sZC5nZXRTdGF0ZSgpKSB7DQogICAgICAgICAg
ICBib2xkdGFnID0gIjxiPiI7DQogICAgICAgICAgICBib2xkdGFnMiA9ICI8L2I+IjsNCiAgICAg
ICAgfQ0KDQogICAgICAgIGlmIChzdHlsZUl0YWxpY3MuZ2V0U3RhdGUoKSkgew0KICAgICAgICAg
ICAgaXRhbGljc3RhZyA9ICI8aT4iOw0KICAgICAgICAgICAgaXRhbGljc3RhZzIgPSAiPC9pPiI7
DQogICAgICAgIH0NCg0KICAgICAgICBpZiAoc3R5bGVUZWxldHlwZS5nZXRTdGF0ZSgpKSB7DQog
ICAgICAgICAgICB0ZWxldHlwZXRhZyA9ICI8dHQ+IjsNCiAgICAgICAgICAgIHRlbGV0eXBldGFn
MiA9ICI8L3R0PiI7DQogICAgICAgIH0NCg0KICAgICAgICBjb2xvcnRhZyA9ICgiPGZvbnQgY29s
b3I9IiArIGdldENvbG9yKCkgKyAiPiIpOw0KICAgICAgICBjb2xvcnRhZzIgPSAoIjwvZm9udD4i
KTsNCiAgICAgICAgZm9udHRhZyA9ICgiPGZvbnQ9IiArIChjaGVja0dyb3VwMi5nZXRTZWxlY3Rl
ZENoZWNrYm94KCkpLmdldExhYmVsKCkgKyAiPiIpOw0KICAgICAgICBmb250dGFnMiA9ICgiPC9m
b250PiIpOw0KICAgICAgICByZXR1cm4gKGJvbGR0YWcgKyBpdGFsaWNzdGFnICsgdGVsZXR5cGV0
YWcgKyBmb250dGFnICsgY29sb3J0YWcgKyAiXG4iICsgIiAgICAiICsgdGV4dFNlbGVjdGlvbiAr
ICJcbiIgKyBmb250dGFnMiArIGNvbG9ydGFnMiArIGJvbGR0YWcyICsgaXRhbGljc3RhZzIgKyB0
ZWxldHlwZXRhZzIpOw0KICAgIH0NCg0KDQogICAgcHVibGljIFN0cmluZyBnZXRDb2xvcigpIHsN
CiAgICAgICAgU2ltcGxlT3V0cHV0IG91dCA9IG5ldyBTaW1wbGVPdXRwdXQoKTsNCiAgICAgICAg
b3V0LnByaW50bG4oKGNoZWNrR3JvdXAxLmdldFNlbGVjdGVkQ2hlY2tib3goKSkuZ2V0TGFiZWwo
KSk7DQogICAgICAgIGlmICgoY2hlY2tHcm91cDEuZ2V0U2VsZWN0ZWRDaGVja2JveCgpKS5nZXRM
YWJlbCgpLmVxdWFscygiUmVkIikpIHsNCiAgICAgICAgICAgIGNvbG9yc2VsZWN0ZWQgPSAiI0ZG
MzMwMCI7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIGlmICgoY2hlY2tHcm91cDEuZ2V0
U2VsZWN0ZWRDaGVja2JveCgpKS5nZXRMYWJlbCgpLmVxdWFscygiQmx1ZSIpKSB7DQogICAgICAg
ICAgICBjb2xvcnNlbGVjdGVkID0gIiMwMDAwRkYiOw0KICAgICAgICB9DQoNCiAgICAgICAgaWYg
KChjaGVja0dyb3VwMS5nZXRTZWxlY3RlZENoZWNrYm94KCkpLmdldExhYmVsKCkuZXF1YWxzKCJH
cmVlbiIpKSB7DQogICAgICAgICAgICBjb2xvcnNlbGVjdGVkID0gIiMwMENDMzMiOw0KICAgICAg
ICB9DQoNCiAgICAgICAgaWYgKChjaGVja0dyb3VwMS5nZXRTZWxlY3RlZENoZWNrYm94KCkpLmdl
dExhYmVsKCkuZXF1YWxzKCJZZWxsb3ciKSkgew0KICAgICAgICAgICAgY29sb3JzZWxlY3RlZCA9
ICIjOTlGRjAwIjsNCiAgICAgICAgfQ0KDQogICAgICAgIGlmICgoY2hlY2tHcm91cDEuZ2V0U2Vs
ZWN0ZWRDaGVja2JveCgpKS5nZXRMYWJlbCgpLmVxdWFscygiT3JhbmdlIikpIHsNCiAgICAgICAg
ICAgIGNvbG9yc2VsZWN0ZWQgPSAiI0NDMzMwMCI7DQogICAgICAgIH0NCg0KICAgICAgIA0KICAg
ICAgICBpZiAoKGNoZWNrR3JvdXAxLmdldFNlbGVjdGVkQ2hlY2tib3goKSkuZ2V0TGFiZWwoKS5l
cXVhbHMoIkRlZmF1bHQiKSkgeyANCiAgICAgICAgICAgIGNvbG9yc2VsZWN0ZWQgPSAiIzAwMDAw
MCI7DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuIGNvbG9yc2VsZWN0ZWQ7DQogICAgfQ0KDQog
ICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgICAv
LyAgU2lsbHksIHNpbGx5IGdyaWRiYWdsYXlvdXQNCiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgIHB1YmxpYyBHcmlkQmFnQ29uc3RyYWludHMg
bWFrZUdyaWRDb25zKCBpbnQgeCwgaW50IHksIGludCBkeCwgaW50IGR5LCBpbnQgd3gsIGludCB3
eSwgaW50IGZpbGwsIGludCBhbmNoLCBpbnQgaXQsIGludCBpbCwgaW50IGliLCBpbnQgaXIsIGlu
dCBweCwgaW50IHB5ICkNCiAgICB7DQogICAgICAgIEdyaWRCYWdDb25zdHJhaW50cyBjb25zID0g
bmV3IEdyaWRCYWdDb25zdHJhaW50cygpOw0KDQogICAgICAgIC8vIFNldCB0aGUgY29uc3RyYWlu
dHMuDQogICAgICAgIGNvbnMud2VpZ2h0eCAgICA9IHd4Ow0KICAgICAgICBjb25zLndlaWdodHkg
ICAgPSB3eTsNCiAgICAgICAgY29ucy5ncmlkeCAgICAgID0geDsNCiAgICAgICAgY29ucy5ncmlk
eSAgICAgID0geTsNCiAgICAgICAgY29ucy5ncmlkd2lkdGggID0gZHg7DQogICAgICAgIGNvbnMu
Z3JpZGhlaWdodCA9IGR5Ow0KICAgICAgICBjb25zLmZpbGwgICAgICAgPSBmaWxsOw0KICAgICAg
ICBjb25zLmFuY2hvciAgICAgPSBhbmNoOw0KICAgICAgICBjb25zLmluc2V0cyAgICAgPSBuZXcg
SW5zZXRzKCBpdCwgaWwsIGliLCBpciApOw0KICAgICAgICBjb25zLmlwYWR4ICAgICAgPSBweDsN
CiAgICAgICAgY29ucy5pcGFkeSAgICAgID0gcHk7DQoNCiAgICAgICAgLy8gUmV0dXJuIHRoZSBj
b25zdHJhaW50cyANCiAgICAgICAgcmV0dXJuIGNvbnM7DQoNCiAgICB9DQoNCiAgICAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgICAvLyB3aW5kb3cgbGlzdGVuZXJzDQogICAgLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICAgcHVibGljIHZvaWQgd2luZG93Q2xvc2luZyggV2lu
ZG93RXZlbnQgZXZlbnQgKSB7IGRpc3Bvc2UoKTsgfQ0KICAgIHB1YmxpYyB2b2lkIHdpbmRvd09w
ZW5lZCggV2luZG93RXZlbnQgZXZlbnQgKSB7fQ0KICAgIHB1YmxpYyB2b2lkIHdpbmRvd0ljb25p
ZmllZCggV2luZG93RXZlbnQgZXZlbnQgKSB7fQ0KICAgIHB1YmxpYyB2b2lkIHdpbmRvd0RlaWNv
bmlmaWVkKCBXaW5kb3dFdmVudCBldmVudCApIHt9DQogICAgcHVibGljIHZvaWQgd2luZG93Q2xv
c2VkKCBXaW5kb3dFdmVudCBldmVudCApIHt9DQogICAgcHVibGljIHZvaWQgd2luZG93QWN0aXZh
dGVkKCBXaW5kb3dFdmVudCBldmVudCApIHt9DQogICAgcHVibGljIHZvaWQgd2luZG93RGVhY3Rp
dmF0ZWQoIFdpbmRvd0V2ZW50IGV2ZW50ICkge30NCiAgICAgIA0KICAgIC8vcHVibGljIHN0YXRp
YyB2b2lkIG1haW4oU3RyaW5nIGFyZ3NbXSkgew0KICAgIC8vdGV4dHNlbGVjdGlvbiA9IChuZXcg
dHJ5MygiTGV0J3MgY2hhbmdlIHRoaXMgdGV4dCIpKTsNCiAgICAvL30NCn0NCg==

--mime-boundary-interchange-383a19ab--

