ports/150493: Update for: security/openssh-portable port from 5.2p1 to 5.6p1

Oleg Gawriloff barzog at telecom.by
Wed Mar 9 17:00:40 UTC 2011


The following reply was made to PR ports/150493; it has been noted by GNATS.

From: Oleg Gawriloff <barzog at telecom.by>
To: bug-followup at FreeBSD.org, magik at roorback.net
Cc:  
Subject: Re: ports/150493: Update for: security/openssh-portable port from
 5.2p1 to 5.6p1
Date: Wed, 09 Mar 2011 18:37:54 +0200

 This is a multi-part message in MIME format.
 --------------090100050300010803050402
 Content-Type: text/plain; charset=UTF-8; format=flowed
 Content-Transfer-Encoding: 7bit
 
 Is there any news?
 Because sftp is also broken in 5.2pl1.
 
 [gawriloff at martin /usr/ports]$ sftp gawriloff at falcon-cl4
 Connecting to falcon-cl4...
 Password:
 sftp> ls -l
 Bus error: 10
 
 5.3pl1 is working perfectly. Patch attached.
 
 -- 
 Signed, Oleg Gawriloff.
 
 
 --------------090100050300010803050402
 Content-Type: text/plain;
  name="openssh-5.3pl1.diff"
 Content-Transfer-Encoding: base64
 Content-Disposition: attachment;
  filename="openssh-5.3pl1.diff"
 
 ZGlmZiAtTnJ1IC9ob21lL2dhd3JpbG9mZi9scGsvb3BlbnNzaC1wb3J0YWJsZS9NYWtlZmls
 ZSAvaG9tZS9nYXdyaWxvZmYvb3BlbnNzaC1wb3J0YWJsZS9NYWtlZmlsZQ0KLS0tIC9ob21l
 L2dhd3JpbG9mZi9scGsvb3BlbnNzaC1wb3J0YWJsZS9NYWtlZmlsZQkyMDEwLTExLTIyIDAx
 OjQ4OjQ5LjAwMDAwMDAwMCArMDIwMA0KKysrIC9ob21lL2dhd3JpbG9mZi9vcGVuc3NoLXBv
 cnRhYmxlL01ha2VmaWxlCTIwMTAtMTItMjEgMTE6MzA6MzYuMDAwMDAwMDAwICswMjAwDQpA
 QCAtNiw3ICs2LDcgQEANCiAjDQogDQogUE9SVE5BTUU9CW9wZW5zc2gNCi1ESVNUVkVSU0lP
 Tj0JNS4ycDENCitESVNUVkVSU0lPTj0JNS4zcDENCiBQT1JUUkVWSVNJT049CTMNCiBQT1JU
 RVBPQ0g9CTENCiBDQVRFR09SSUVTPQlzZWN1cml0eSBpcHY2DQpAQCAtMTYxLDcgKzE2MSw3
 IEBADQogDQogIyBTZWUgaHR0cDovL2Rldi5pbnZlcnNlcGF0aC5jb20vdHJhYy9vcGVuc3No
 LWxwaw0KIC5pZiBkZWZpbmVkKFdJVEhfTFBLKQ0KLUVYVFJBX1BBVENIRVMrPQkJJHtGSUxF
 U0RJUn0vY29udHJpYi1vcGVuc3NoLWxway01LjFwMS0wLjMuMTAucGF0Y2gNCitFWFRSQV9Q
 QVRDSEVTKz0JCSR7RklMRVNESVJ9L2NvbnRyaWItb3BlbnNzaC1scGstNS4zcDEtMC4zLjEw
 LnBhdGNoDQogVVNFX09QRU5MREFQPQkJeWVzDQogQ1BQRkxBR1MrPQkJIi1JJHtMT0NBTEJB
 U0V9L2luY2x1ZGUgLURXSVRIX0xEQVBfUFVCS0VZIg0KIENPTkZJR1VSRV9BUkdTKz0JLS13
 aXRoLWxpYnM9Jy1sbGRhcCcgLS13aXRoLWxkZmxhZ3M9Jy1MJHtMT0NBTEJBU0V9L2xpYicg
 XA0KQEAgLTE3NCwxMiArMTc0LDYgQEANCiBFWFRSQV9QQVRDSEVTKz0JCSR7RklMRVNESVJ9
 L2xwaytocG4tc2VydmNvbmYuYy5wYXRjaA0KIC5lbGlmIGRlZmluZWQoV0lUSF9IUE4pICYm
 ICFkZWZpbmVkKFdJVEhfTFBLKQ0KIEVYVFJBX1BBVENIRVMrPQkJJHtGSUxFU0RJUn0vb3Bl
 bnNzaC01LjJwMS1ocG4xM3Y2LXNlcnZjb25mLmMuZGlmZg0KLS5lbGlmIGRlZmluZWQoV0lU
 SF9MUEspICYmICFkZWZpbmVkKFdJVEhfSFBOKQ0KLUVYVFJBX1BBVENIRVMrPQkJJHtGSUxF
 U0RJUn0vY29udHJpYi1vcGVuc3NoLWxway01LjFwMS0wLjMuMTAtc2VydmNvbmYuYy5wYXRj
 aA0KLS5lbmRpZg0KLQ0KLS5pZiBkZWZpbmVkKFdJVEhfTFBLKSAmJiAke0FSQ0h9ID09ICJh
 bWQ2NCINCi1FWFRSQV9QQVRDSEVTKz0JCSR7RklMRVNESVJ9L2NvbnRyaWItb3BlbnNzaC01
 LjFfcDEtbHBrLTY0Yml0LnBhdGNoDQogLmVuZGlmDQogDQogIyBTZWUgaHR0cDovL3d3dy5y
 b3VtZW5wZXRyb3YuaW5mby9vcGVuc3NoLw0KZGlmZiAtTnJ1IC9ob21lL2dhd3JpbG9mZi9s
 cGsvb3BlbnNzaC1wb3J0YWJsZS9kaXN0aW5mbyAvaG9tZS9nYXdyaWxvZmYvb3BlbnNzaC1w
 b3J0YWJsZS9kaXN0aW5mbw0KLS0tIC9ob21lL2dhd3JpbG9mZi9scGsvb3BlbnNzaC1wb3J0
 YWJsZS9kaXN0aW5mbwkyMDA5LTA5LTE4IDE3OjA1OjUyLjAwMDAwMDAwMCArMDMwMA0KKysr
 IC9ob21lL2dhd3JpbG9mZi9vcGVuc3NoLXBvcnRhYmxlL2Rpc3RpbmZvCTIwMTAtMTItMjEg
 MTE6MTY6MTcuMDAwMDAwMDAwICswMjAwDQpAQCAtMSw2ICsxLDYgQEANCi1NRDUgKG9wZW5z
 c2gtNS4ycDEudGFyLmd6KSA9IGFkYTc5YzczMjhhODU1MWJkZjU1Yzk1ZTYzMWU3ZGFkDQot
 U0hBMjU2IChvcGVuc3NoLTUuMnAxLnRhci5neikgPSA0MDIzNzEwYzM3ZDBiM2Q3OWU2Mjk5
 Y2I3OWI2ZGUyYTMxZGI3ZDU4MWZlNTllNzc1YTUzNTE3ODQwMzRlY2FlDQotU0laRSAob3Bl
 bnNzaC01LjJwMS50YXIuZ3opID0gMTAxNjYxMg0KK01ENSAob3BlbnNzaC01LjNwMS50YXIu
 Z3opID0gMTM1NjNkYmY2MWYzNmNhOWExZTQyNTQyNjAxMzEwNDENCitTSEEyNTYgKG9wZW5z
 c2gtNS4zcDEudGFyLmd6KSA9IGQwYzkxNzQ2Mjg5Njk3NDQ4MGIxNDQ1NGE4ZTFjYjhiODA5
 MjkxZjY3ZTViOTc3OWM5YjRkYzQxNTZjNWVmMTINCitTSVpFIChvcGVuc3NoLTUuM3AxLnRh
 ci5neikgPSAxMDI3MTMwDQogTUQ1IChvcGVuc3NoLTUuMnAxK3g1MDktNi4yLmRpZmYuZ3op
 ID0gOGRiYmZiNzQzMjI2ODY0ZjZiYjQ5YjU2ZTc3Nzc2ZDkNCiBTSEEyNTYgKG9wZW5zc2gt
 NS4ycDEreDUwOS02LjIuZGlmZi5neikgPSA3MmNmYjFlMjMyYjZhZTBhOWRmNmU4NTM5YTlm
 NmI1M2RiN2MwYTIxNDFjZjJlNGRkNjViNDA3NzQ4ZmE5ZjM0DQogU0laRSAob3BlbnNzaC01
 LjJwMSt4NTA5LTYuMi5kaWZmLmd6KSA9IDE1MzAxMA0KZGlmZiAtTnJ1IC9ob21lL2dhd3Jp
 bG9mZi9scGsvb3BlbnNzaC1wb3J0YWJsZS9maWxlcy9jb250cmliLW9wZW5zc2gtNS4xX3Ax
 LWxway02NGJpdC5wYXRjaCAvaG9tZS9nYXdyaWxvZmYvb3BlbnNzaC1wb3J0YWJsZS9maWxl
 cy9jb250cmliLW9wZW5zc2gtNS4xX3AxLWxway02NGJpdC5wYXRjaA0KLS0tIC9ob21lL2dh
 d3JpbG9mZi9scGsvb3BlbnNzaC1wb3J0YWJsZS9maWxlcy9jb250cmliLW9wZW5zc2gtNS4x
 X3AxLWxway02NGJpdC5wYXRjaAkyMDA5LTA2LTIxIDIzOjM2OjE1LjAwMDAwMDAwMCArMDMw
 MA0KKysrIC9ob21lL2dhd3JpbG9mZi9vcGVuc3NoLXBvcnRhYmxlL2ZpbGVzL2NvbnRyaWIt
 b3BlbnNzaC01LjFfcDEtbHBrLTY0Yml0LnBhdGNoCTE5NzAtMDEtMDEgMDM6MDA6MDAuMDAw
 MDAwMDAwICswMzAwDQpAQCAtMSw0NCArMCwwIEBADQotZGlmZiAtTnVhciAtLWV4Y2x1ZGUg
 JyoucmVqJyBzZXJ2Y29uZi5jLm9yaWcgc2VydmNvbmYuYw0KLS0tLSBzZXJ2Y29uZi5jLm9y
 aWcJMjAwOC0wOC0yMyAxNTowMjo0Ny4wMDAwMDAwMDAgLTA3MDANCi0rKysgc2VydmNvbmYu
 YwkyMDA4LTA4LTIzIDE1OjA0OjIxLjAwMDAwMDAwMCAtMDcwMA0KLUBAIC03MDEsNiArNzAx
 LDcgQEANCi0gCWludCBjbWRsaW5lID0gMCwgKmludHB0ciwgdmFsdWUsIG47DQotIAlTeXNs
 b2dGYWNpbGl0eSAqbG9nX2ZhY2lsaXR5X3B0cjsNCi0gCUxvZ0xldmVsICpsb2dfbGV2ZWxf
 cHRyOw0KLSsgCXVuc2lnbmVkIGxvbmcgbHZhbHVlLCAqbG9uZ3B0cjsNCi0gCVNlcnZlck9w
 Q29kZXMgb3Bjb2RlOw0KLSAJdV9zaG9ydCBwb3J0Ow0KLSAJdV9pbnQgaSwgZmxhZ3MgPSAw
 Ow0KLUBAIC03MTUsNiArNzE2LDcgQEANCi0gCWlmICghYXJnIHx8ICEqYXJnIHx8ICphcmcg
 PT0gJyMnKQ0KLSAJCXJldHVybiAwOw0KLSAJaW50cHRyID0gTlVMTDsNCi0rCWxvbmdwdHIg
 PSBOVUxMOw0KLSAJY2hhcnB0ciA9IE5VTEw7DQotIAlvcGNvZGUgPSBwYXJzZV90b2tlbihh
 cmcsIGZpbGVuYW1lLCBsaW5lbnVtLCAmZmxhZ3MpOw0KLSANCi1AQCAtMTQ0OSwxMSArMTQ1
 MSwyMCBAQA0KLSAJCQkqaW50cHRyID0gdmFsdWU7DQotIAkJYnJlYWs7DQotIAljYXNlIHNC
 aW5kVGltZW91dDoNCi0tCQlpbnRwdHIgPSAoaW50ICopICZvcHRpb25zLT5scGsuYl90aW1l
 b3V0LnR2X3NlYzsNCi0tCQlnb3RvIHBhcnNlX2ludDsNCi0rCQlsb25ncHRyID0gKHVuc2ln
 bmVkIGxvbmcgKikgJm9wdGlvbnMtPmxway5iX3RpbWVvdXQudHZfc2VjOw0KLStwYXJzZV91
 bG9uZzoNCi0rCQlhcmcgPSBzdHJkZWxpbSgmY3ApOw0KLSsJCWlmICghYXJnIHx8ICphcmcg
 PT0gJ1wwJykNCi0rCQkJZmF0YWwoIiVzIGxpbmUgJWQ6IG1pc3NpbmcgaW50ZWdlciB2YWx1
 ZS4iLA0KLSsJCQkgICAgZmlsZW5hbWUsIGxpbmVudW0pOw0KLSsJCWx2YWx1ZSA9IGF0b2wo
 YXJnKTsNCi0rCQlpZiAoKmFjdGl2ZXAgJiYgKmxvbmdwdHIgPT0gLTEpDQotKwkJCSpsb25n
 cHRyID0gbHZhbHVlOw0KLSsJCWJyZWFrOw0KLSsNCi0gCWNhc2Ugc1NlYXJjaFRpbWVvdXQ6
 DQotLQkJaW50cHRyID0gKGludCAqKSAmb3B0aW9ucy0+bHBrLnNfdGltZW91dC50dl9zZWM7
 DQotLQkJZ290byBwYXJzZV9pbnQ7DQotKwkJbG9uZ3B0ciA9ICh1bnNpZ25lZCBsb25nICop
 ICZvcHRpb25zLT5scGsuc190aW1lb3V0LnR2X3NlYzsNCi0rCQlnb3RvIHBhcnNlX3Vsb25n
 Ow0KLSAJCWJyZWFrOw0KLSAJY2FzZSBzTGRhcENvbmY6DQotIAkJYXJnID0gY3A7DQpkaWZm
 IC1OcnUgL2hvbWUvZ2F3cmlsb2ZmL2xway9vcGVuc3NoLXBvcnRhYmxlL2ZpbGVzL2NvbnRy
 aWItb3BlbnNzaC1scGstNS4xcDEtMC4zLjEwLXNlcnZjb25mLmMucGF0Y2ggL2hvbWUvZ2F3
 cmlsb2ZmL29wZW5zc2gtcG9ydGFibGUvZmlsZXMvY29udHJpYi1vcGVuc3NoLWxway01LjFw
 MS0wLjMuMTAtc2VydmNvbmYuYy5wYXRjaA0KLS0tIC9ob21lL2dhd3JpbG9mZi9scGsvb3Bl
 bnNzaC1wb3J0YWJsZS9maWxlcy9jb250cmliLW9wZW5zc2gtbHBrLTUuMXAxLTAuMy4xMC1z
 ZXJ2Y29uZi5jLnBhdGNoCTIwMDktMDYtMjEgMjM6MzY6MTUuMDAwMDAwMDAwICswMzAwDQor
 KysgL2hvbWUvZ2F3cmlsb2ZmL29wZW5zc2gtcG9ydGFibGUvZmlsZXMvY29udHJpYi1vcGVu
 c3NoLWxway01LjFwMS0wLjMuMTAtc2VydmNvbmYuYy5wYXRjaAkxOTcwLTAxLTAxIDAzOjAw
 OjAwLjAwMDAwMDAwMCArMDMwMA0KQEAgLTEsMjEzICswLDAgQEANCi0tLS0gc2VydmNvbmYu
 Yy5vcmlnCTIwMDktMDUtMjYgMTU6MTM6MzIuMDAwMDAwMDAwICswNDAwDQotKysrIHNlcnZj
 b25mLmMJMjAwOS0wNS0yNiAxNToyNDozOS4wMDAwMDAwMDAgKzA0MDANCi1AQCAtNDIsNiAr
 NDIsMTAgQEANCi0gI2luY2x1ZGUgImNoYW5uZWxzLmgiDQotICNpbmNsdWRlICJncm91cGFj
 Y2Vzcy5oIg0KLSANCi0rI2lmZGVmIFdJVEhfTERBUF9QVUJLRVkNCi0rI2luY2x1ZGUgImxk
 YXBhdXRoLmgiDQotKyNlbmRpZg0KLSsNCi0gc3RhdGljIHZvaWQgYWRkX2xpc3Rlbl9hZGRy
 KFNlcnZlck9wdGlvbnMgKiwgY2hhciAqLCBpbnQpOw0KLSBzdGF0aWMgdm9pZCBhZGRfb25l
 X2xpc3Rlbl9hZGRyKFNlcnZlck9wdGlvbnMgKiwgY2hhciAqLCBpbnQpOw0KLSANCi1AQCAt
 MTI4LDYgKzEzMiwyNCBAQA0KLSAJb3B0aW9ucy0+YWRtX2ZvcmNlZF9jb21tYW5kID0gTlVM
 TDsNCi0gCW9wdGlvbnMtPmNocm9vdF9kaXJlY3RvcnkgPSBOVUxMOw0KLSAJb3B0aW9ucy0+
 emVyb19rbm93bGVkZ2VfcGFzc3dvcmRfYXV0aGVudGljYXRpb24gPSAtMTsNCi0rI2lmZGVm
 IFdJVEhfTERBUF9QVUJLRVkNCi0rIAkvKiBYWFggZGlydHkgKi8NCi0rIAlvcHRpb25zLT5s
 cGsubGQgPSBOVUxMOw0KLSsgCW9wdGlvbnMtPmxway5vbiA9IC0xOw0KLSsgCW9wdGlvbnMt
 Pmxway5zZXJ2ZXJzID0gTlVMTDsNCi0rIAlvcHRpb25zLT5scGsudV9iYXNlZG4gPSBOVUxM
 Ow0KLSsgCW9wdGlvbnMtPmxway5nX2Jhc2VkbiA9IE5VTEw7DQotKyAJb3B0aW9ucy0+bHBr
 LmJpbmRkbiA9IE5VTEw7DQotKyAJb3B0aW9ucy0+bHBrLmJpbmRwdyA9IE5VTEw7DQotKyAJ
 b3B0aW9ucy0+bHBrLnNncm91cCA9IE5VTEw7DQotKyAJb3B0aW9ucy0+bHBrLmZpbHRlciA9
 IE5VTEw7DQotKyAJb3B0aW9ucy0+bHBrLmZncm91cCA9IE5VTEw7DQotKyAJb3B0aW9ucy0+
 bHBrLmxfY29uZiA9IE5VTEw7DQotKyAJb3B0aW9ucy0+bHBrLnRscyA9IC0xOw0KLSsgCW9w
 dGlvbnMtPmxway5iX3RpbWVvdXQudHZfc2VjID0gLTE7DQotKyAJb3B0aW9ucy0+bHBrLnNf
 dGltZW91dC50dl9zZWMgPSAtMTsNCi0rIAlvcHRpb25zLT5scGsuZmxhZ3MgPSBGTEFHX0VN
 UFRZOw0KLSsjZW5kaWYNCi0gfQ0KLSANCi0gdm9pZA0KLUBAIC0yNjUsNiArMjg3LDMyIEBA
 DQotIAkJb3B0aW9ucy0+cGVybWl0X3R1biA9IFNTSF9UVU5NT0RFX05POw0KLSAJaWYgKG9w
 dGlvbnMtPnplcm9fa25vd2xlZGdlX3Bhc3N3b3JkX2F1dGhlbnRpY2F0aW9uID09IC0xKQ0K
 LSAJCW9wdGlvbnMtPnplcm9fa25vd2xlZGdlX3Bhc3N3b3JkX2F1dGhlbnRpY2F0aW9uID0g
 MDsNCi0rI2lmZGVmIFdJVEhfTERBUF9QVUJLRVkNCi0rCWlmIChvcHRpb25zLT5scGsub24g
 PT0gLTEpDQotKwkgICAgb3B0aW9ucy0+bHBrLm9uID0gX0RFRkFVTFRfTFBLX09OOw0KLSsJ
 aWYgKG9wdGlvbnMtPmxway5zZXJ2ZXJzID09IE5VTEwpDQotKwkgICAgb3B0aW9ucy0+bHBr
 LnNlcnZlcnMgPSBfREVGQVVMVF9MUEtfU0VSVkVSUzsNCi0rCWlmIChvcHRpb25zLT5scGsu
 dV9iYXNlZG4gPT0gTlVMTCkNCi0rCSAgICBvcHRpb25zLT5scGsudV9iYXNlZG4gPSBfREVG
 QVVMVF9MUEtfVUROOw0KLSsJaWYgKG9wdGlvbnMtPmxway5nX2Jhc2VkbiA9PSBOVUxMKQ0K
 LSsJICAgIG9wdGlvbnMtPmxway5nX2Jhc2VkbiA9IF9ERUZBVUxUX0xQS19HRE47DQotKwlp
 ZiAob3B0aW9ucy0+bHBrLmJpbmRkbiA9PSBOVUxMKQ0KLSsJICAgIG9wdGlvbnMtPmxway5i
 aW5kZG4gPSBfREVGQVVMVF9MUEtfQklOREROOw0KLSsJaWYgKG9wdGlvbnMtPmxway5iaW5k
 cHcgPT0gTlVMTCkNCi0rCSAgICBvcHRpb25zLT5scGsuYmluZHB3ID0gX0RFRkFVTFRfTFBL
 X0JJTkRQVzsNCi0rCWlmIChvcHRpb25zLT5scGsuc2dyb3VwID09IE5VTEwpDQotKwkgICAg
 b3B0aW9ucy0+bHBrLnNncm91cCA9IF9ERUZBVUxUX0xQS19TR1JPVVA7DQotKwlpZiAob3B0
 aW9ucy0+bHBrLmZpbHRlciA9PSBOVUxMKQ0KLSsJICAgIG9wdGlvbnMtPmxway5maWx0ZXIg
 PSBfREVGQVVMVF9MUEtfRklMVEVSOw0KLSsJaWYgKG9wdGlvbnMtPmxway50bHMgPT0gLTEp
 DQotKwkgICAgb3B0aW9ucy0+bHBrLnRscyA9IF9ERUZBVUxUX0xQS19UTFM7DQotKwlpZiAo
 b3B0aW9ucy0+bHBrLmJfdGltZW91dC50dl9zZWMgPT0gLTEpDQotKwkgICAgb3B0aW9ucy0+
 bHBrLmJfdGltZW91dC50dl9zZWMgPSBfREVGQVVMVF9MUEtfQlRJTUVPVVQ7DQotKwlpZiAo
 b3B0aW9ucy0+bHBrLnNfdGltZW91dC50dl9zZWMgPT0gLTEpDQotKwkgICAgb3B0aW9ucy0+
 bHBrLnNfdGltZW91dC50dl9zZWMgPSBfREVGQVVMVF9MUEtfU1RJTUVPVVQ7DQotKwlpZiAo
 b3B0aW9ucy0+bHBrLmxfY29uZiA9PSBOVUxMKQ0KLSsJICAgIG9wdGlvbnMtPmxway5sX2Nv
 bmYgPSBfREVGQVVMVF9MUEtfTERQOw0KLSsjZW5kaWYNCi0gDQotIAkvKiBUdXJuIHByaXZp
 bGVnZSBzZXBhcmF0aW9uIG9uIGJ5IGRlZmF1bHQgKi8NCi0gCWlmICh1c2VfcHJpdnNlcCA9
 PSAtMSkNCi1AQCAtMzExLDYgKzM1OSwxMiBAQA0KLSAJc1VzZVByaXZpbGVnZVNlcGFyYXRp
 b24sIHNBbGxvd0FnZW50Rm9yd2FyZGluZywNCi0gCXNaZXJvS25vd2xlZGdlUGFzc3dvcmRB
 dXRoZW50aWNhdGlvbiwNCi0gCXNEZXByZWNhdGVkLCBzVW5zdXBwb3J0ZWQNCi0rI2lmZGVm
 IFdJVEhfTERBUF9QVUJLRVkNCi0rCSxzTGRhcFB1YmxpY2tleSwgc0xkYXBTZXJ2ZXJzLCBz
 TGRhcFVzZXJETg0KLSsJLHNMZGFwR3JvdXBETiwgc0JpbmRETiwgc0JpbmRQdywgc015R3Jv
 dXANCi0rCSxzTGRhcEZpbHRlciwgc0ZvcmNlVExTLCBzQmluZFRpbWVvdXQNCi0rCSxzU2Vh
 cmNoVGltZW91dCwgc0xkYXBDb25mDQotKyNlbmRpZg0KLSB9IFNlcnZlck9wQ29kZXM7DQot
 IA0KLSAjZGVmaW5lIFNTSENGR19HTE9CQUwJMHgwMQkvKiBhbGxvd2VkIGluIG1haW4gc2Vj
 dGlvbiBvZiBzc2hkX2NvbmZpZyAqLw0KLUBAIC00MjEsNiArNDc1LDIwIEBADQotIAl7ICJj
 bGllbnRhbGl2ZWNvdW50bWF4Iiwgc0NsaWVudEFsaXZlQ291bnRNYXgsIFNTSENGR19HTE9C
 QUwgfSwNCi0gCXsgImF1dGhvcml6ZWRrZXlzZmlsZSIsIHNBdXRob3JpemVkS2V5c0ZpbGUs
 IFNTSENGR19HTE9CQUwgfSwNCi0gCXsgImF1dGhvcml6ZWRrZXlzZmlsZTIiLCBzQXV0aG9y
 aXplZEtleXNGaWxlMiwgU1NIQ0ZHX0dMT0JBTCB9LA0KLSsjaWZkZWYgV0lUSF9MREFQX1BV
 QktFWQ0KLSsJeyBfREVGQVVMVF9MUEtfVE9LRU4sIHNMZGFwUHVibGlja2V5LCBTU0hDRkdf
 R0xPQkFMIH0sDQotKwl7IF9ERUZBVUxUX1NSVl9UT0tFTiwgc0xkYXBTZXJ2ZXJzLCBTU0hD
 RkdfR0xPQkFMIH0sDQotKwl7IF9ERUZBVUxUX1VTUl9UT0tFTiwgc0xkYXBVc2VyRE4sIFNT
 SENGR19HTE9CQUwgfSwNCi0rCXsgX0RFRkFVTFRfR1JQX1RPS0VOLCBzTGRhcEdyb3VwRE4s
 IFNTSENGR19HTE9CQUwgfSwNCi0rCXsgX0RFRkFVTFRfQkROX1RPS0VOLCBzQmluZEROLCBT
 U0hDRkdfR0xPQkFMIH0sDQotKwl7IF9ERUZBVUxUX0JQV19UT0tFTiwgc0JpbmRQdywgU1NI
 Q0ZHX0dMT0JBTCB9LA0KLSsJeyBfREVGQVVMVF9NWUdfVE9LRU4sIHNNeUdyb3VwLCBTU0hD
 RkdfR0xPQkFMIH0sDQotKwl7IF9ERUZBVUxUX0ZJTF9UT0tFTiwgc0xkYXBGaWx0ZXIsIFNT
 SENGR19HTE9CQUwgfSwNCi0rCXsgX0RFRkFVTFRfVExTX1RPS0VOLCBzRm9yY2VUTFMsIFNT
 SENGR19HTE9CQUwgfSwNCi0rCXsgX0RFRkFVTFRfQlRJX1RPS0VOLCBzQmluZFRpbWVvdXQs
 IFNTSENGR19HTE9CQUwgfSwNCi0rCXsgX0RFRkFVTFRfU1RJX1RPS0VOLCBzU2VhcmNoVGlt
 ZW91dCwgU1NIQ0ZHX0dMT0JBTCB9LA0KLSsJeyBfREVGQVVMVF9MRFBfVE9LRU4sIHNMZGFw
 Q29uZiwgU1NIQ0ZHX0dMT0JBTCB9LA0KLSsjZW5kaWYNCi0gCXsgInVzZXByaXZpbGVnZXNl
 cGFyYXRpb24iLCBzVXNlUHJpdmlsZWdlU2VwYXJhdGlvbiwgU1NIQ0ZHX0dMT0JBTCB9LA0K
 LSAJeyAiYWNjZXB0ZW52Iiwgc0FjY2VwdEVudiwgU1NIQ0ZHX0dMT0JBTCB9LA0KLSAJeyAi
 cGVybWl0dHVubmVsIiwgc1Blcm1pdFR1bm5lbCwgU1NIQ0ZHX0dMT0JBTCB9LA0KLUBAIC0x
 MzExLDYgKzEzNzksMTA3IEBADQotIAkJd2hpbGUgKGFyZykNCi0gCQkgICAgYXJnID0gc3Ry
 ZGVsaW0oJmNwKTsNCi0gCQlicmVhazsNCi0rI2lmZGVmIFdJVEhfTERBUF9QVUJLRVkNCi0r
 CWNhc2Ugc0xkYXBQdWJsaWNrZXk6DQotKwkJaW50cHRyID0gJm9wdGlvbnMtPmxway5vbjsN
 Ci0rCQlnb3RvIHBhcnNlX2ZsYWc7DQotKwljYXNlIHNMZGFwU2VydmVyczoNCi0rCQkvKiBh
 cmcgPSBzdHJkZWxpbSgmY3ApOyAqLw0KLSsJCXAgPSBsaW5lOw0KLSsJCXdoaWxlKCpwKysp
 Ow0KLSsJCWFyZyA9IHA7DQotKwkJaWYgKCFhcmcgfHwgKmFyZyA9PSAnXDAnKQ0KLSsJCSAg
 ICBmYXRhbCgiJXMgbGluZSAlZDogbWlzc2luZyBsZGFwIHNlcnZlciIsZmlsZW5hbWUsbGlu
 ZW51bSk7DQotKwkJYXJnW3N0cmxlbihhcmcpXSA9ICdcMCc7DQotKwkJaWYgKChvcHRpb25z
 LT5scGsuc2VydmVycyA9IGxkYXBfcGFyc2Vfc2VydmVycyhhcmcpKSA9PSBOVUxMKQ0KLSsJ
 CSAgICBmYXRhbCgiJXMgbGluZSAlZDogZXJyb3IgaW4gbGRhcCBzZXJ2ZXJzIiwgZmlsZW5h
 bWUsIGxpbmVudW0pOw0KLSsJCW1lbXNldChhcmcsMCxzdHJsZW4oYXJnKSk7DQotKwkJYnJl
 YWs7DQotKwljYXNlIHNMZGFwVXNlckROOg0KLSsJCWFyZyA9IGNwOw0KLSsJCWlmICghYXJn
 IHx8ICphcmcgPT0gJ1wwJykNCi0rCQkgICAgZmF0YWwoIiVzIGxpbmUgJWQ6IG1pc3Npbmcg
 bGRhcCBzZXJ2ZXIiLGZpbGVuYW1lLGxpbmVudW0pOw0KLSsJCWFyZ1tzdHJsZW4oYXJnKV0g
 PSAnXDAnOw0KLSsJCW9wdGlvbnMtPmxway51X2Jhc2VkbiA9IHhzdHJkdXAoYXJnKTsNCi0r
 CQltZW1zZXQoYXJnLDAsc3RybGVuKGFyZykpOw0KLSsJCWJyZWFrOw0KLSsJY2FzZSBzTGRh
 cEdyb3VwRE46DQotKwkJYXJnID0gY3A7DQotKwkJaWYgKCFhcmcgfHwgKmFyZyA9PSAnXDAn
 KQ0KLSsJCSAgICBmYXRhbCgiJXMgbGluZSAlZDogbWlzc2luZyBsZGFwIHNlcnZlciIsZmls
 ZW5hbWUsbGluZW51bSk7DQotKwkJYXJnW3N0cmxlbihhcmcpXSA9ICdcMCc7DQotKwkJb3B0
 aW9ucy0+bHBrLmdfYmFzZWRuID0geHN0cmR1cChhcmcpOw0KLSsJCW1lbXNldChhcmcsMCxz
 dHJsZW4oYXJnKSk7DQotKwkJYnJlYWs7DQotKwljYXNlIHNCaW5kRE46DQotKwkJYXJnID0g
 Y3A7DQotKwkJaWYgKCFhcmcgfHwgKmFyZyA9PSAnXDAnKQ0KLSsJCSAgICBmYXRhbCgiJXMg
 bGluZSAlZDogbWlzc2luZyBiaW5kZG4iLGZpbGVuYW1lLGxpbmVudW0pOw0KLSsJCWFyZ1tz
 dHJsZW4oYXJnKV0gPSAnXDAnOw0KLSsJCW9wdGlvbnMtPmxway5iaW5kZG4gPSB4c3RyZHVw
 KGFyZyk7DQotKwkJbWVtc2V0KGFyZywwLHN0cmxlbihhcmcpKTsNCi0rCQlicmVhazsNCi0r
 CWNhc2Ugc0JpbmRQdzoNCi0rCQlhcmcgPSBjcDsNCi0rCQlpZiAoIWFyZyB8fCAqYXJnID09
 ICdcMCcpDQotKwkJICAgIGZhdGFsKCIlcyBsaW5lICVkOiBtaXNzaW5nIGJpbmRwdyIsZmls
 ZW5hbWUsbGluZW51bSk7DQotKwkJYXJnW3N0cmxlbihhcmcpXSA9ICdcMCc7DQotKwkJb3B0
 aW9ucy0+bHBrLmJpbmRwdyA9IHhzdHJkdXAoYXJnKTsNCi0rCQltZW1zZXQoYXJnLDAsc3Ry
 bGVuKGFyZykpOw0KLSsJCWJyZWFrOw0KLSsJY2FzZSBzTXlHcm91cDoNCi0rCQlhcmcgPSBj
 cDsNCi0rCQlpZiAoIWFyZyB8fCAqYXJnID09ICdcMCcpDQotKwkJICAgIGZhdGFsKCIlcyBs
 aW5lICVkOiBtaXNzaW5nIGdyb3VwbmFtZSIsZmlsZW5hbWUsIGxpbmVudW0pOw0KLSsJCWFy
 Z1tzdHJsZW4oYXJnKV0gPSAnXDAnOw0KLSsJCW9wdGlvbnMtPmxway5zZ3JvdXAgPSB4c3Ry
 ZHVwKGFyZyk7DQotKwkJaWYgKG9wdGlvbnMtPmxway5zZ3JvdXApDQotKwkJICAgIG9wdGlv
 bnMtPmxway5mZ3JvdXAgPSBsZGFwX3BhcnNlX2dyb3VwcyhvcHRpb25zLT5scGsuc2dyb3Vw
 KTsNCi0rCQltZW1zZXQoYXJnLDAsc3RybGVuKGFyZykpOw0KLSsJCWJyZWFrOw0KLSsJY2Fz
 ZSBzTGRhcEZpbHRlcjoNCi0rCQlhcmcgPSBjcDsNCi0rCQlpZiAoIWFyZyB8fCAqYXJnID09
 ICdcMCcpDQotKwkJICAgIGZhdGFsKCIlcyBsaW5lICVkOiBtaXNzaW5nIGZpbHRlciIsZmls
 ZW5hbWUsIGxpbmVudW0pOw0KLSsJCWFyZ1tzdHJsZW4oYXJnKV0gPSAnXDAnOw0KLSsJCW9w
 dGlvbnMtPmxway5maWx0ZXIgPSB4c3RyZHVwKGFyZyk7DQotKwkJbWVtc2V0KGFyZywwLHN0
 cmxlbihhcmcpKTsNCi0rCQlicmVhazsNCi0rCWNhc2Ugc0ZvcmNlVExTOg0KLSsJCWludHB0
 ciA9ICZvcHRpb25zLT5scGsudGxzOw0KLSsJCWFyZyA9IHN0cmRlbGltKCZjcCk7DQotKwkJ
 aWYgKCFhcmcgfHwgKmFyZyA9PSAnXDAnKQ0KLSsJCQlmYXRhbCgiJXMgbGluZSAlZDogbWlz
 c2luZyB5ZXMvbm8gYXJndW1lbnQuIiwNCi0rCQkJICAgIGZpbGVuYW1lLCBsaW5lbnVtKTsN
 Ci0rCQl2YWx1ZSA9IDA7CS8qIHNpbGVuY2UgY29tcGlsZXIgKi8NCi0rCQlpZiAoc3RyY21w
 KGFyZywgInllcyIpID09IDApDQotKwkJCXZhbHVlID0gMTsNCi0rCQllbHNlIGlmIChzdHJj
 bXAoYXJnLCAibm8iKSA9PSAwKQ0KLSsJCQl2YWx1ZSA9IDA7DQotKwkJZWxzZSBpZiAoc3Ry
 Y21wKGFyZywgInRyeSIpID09IDApDQotKwkJCXZhbHVlID0gLTE7DQotKwkJZWxzZQ0KLSsJ
 CQlmYXRhbCgiJXMgbGluZSAlZDogQmFkIHllcy9ubyBhcmd1bWVudDogJXMiLA0KLSsJCQkJ
 ZmlsZW5hbWUsIGxpbmVudW0sIGFyZyk7DQotKwkJaWYgKCppbnRwdHIgPT0gLTEpDQotKwkJ
 CSppbnRwdHIgPSB2YWx1ZTsNCi0rCQlicmVhazsNCi0rCWNhc2Ugc0JpbmRUaW1lb3V0Og0K
 LSsJCWludHB0ciA9IChpbnQgKikgJm9wdGlvbnMtPmxway5iX3RpbWVvdXQudHZfc2VjOw0K
 LSsJCWdvdG8gcGFyc2VfaW50Ow0KLSsJY2FzZSBzU2VhcmNoVGltZW91dDoNCi0rCQlpbnRw
 dHIgPSAoaW50ICopICZvcHRpb25zLT5scGsuc190aW1lb3V0LnR2X3NlYzsNCi0rCQlnb3Rv
 IHBhcnNlX2ludDsNCi0rCQlicmVhazsNCi0rCWNhc2Ugc0xkYXBDb25mOg0KLSsJCWFyZyA9
 IGNwOw0KLSsJCWlmICghYXJnIHx8ICphcmcgPT0gJ1wwJykNCi0rCQkgICAgZmF0YWwoIiVz
 IGxpbmUgJWQ6IG1pc3NpbmcgTHBrTGRhcENvbmYiLCBmaWxlbmFtZSwgbGluZW51bSk7DQot
 KwkJYXJnW3N0cmxlbihhcmcpXSA9ICdcMCc7DQotKwkJb3B0aW9ucy0+bHBrLmxfY29uZiA9
 IHhzdHJkdXAoYXJnKTsNCi0rCQltZW1zZXQoYXJnLCAwLCBzdHJsZW4oYXJnKSk7DQotKwkJ
 YnJlYWs7DQotKyNlbmRpZg0KLSANCi0gCWRlZmF1bHQ6DQotIAkJZmF0YWwoIiVzIGxpbmUg
 JWQ6IE1pc3NpbmcgaGFuZGxlciBmb3Igb3Bjb2RlICVzICglZCkiLA0KZGlmZiAtTnJ1IC9o
 b21lL2dhd3JpbG9mZi9scGsvb3BlbnNzaC1wb3J0YWJsZS9maWxlcy9jb250cmliLW9wZW5z
 c2gtbHBrLTUuMXAxLTAuMy4xMC5wYXRjaCAvaG9tZS9nYXdyaWxvZmYvb3BlbnNzaC1wb3J0
 YWJsZS9maWxlcy9jb250cmliLW9wZW5zc2gtbHBrLTUuMXAxLTAuMy4xMC5wYXRjaA0KLS0t
 IC9ob21lL2dhd3JpbG9mZi9scGsvb3BlbnNzaC1wb3J0YWJsZS9maWxlcy9jb250cmliLW9w
 ZW5zc2gtbHBrLTUuMXAxLTAuMy4xMC5wYXRjaAkyMDA5LTA2LTIxIDIzOjM2OjE1LjAwMDAw
 MDAwMCArMDMwMA0KKysrIC9ob21lL2dhd3JpbG9mZi9vcGVuc3NoLXBvcnRhYmxlL2ZpbGVz
 L2NvbnRyaWItb3BlbnNzaC1scGstNS4xcDEtMC4zLjEwLnBhdGNoCTE5NzAtMDEtMDEgMDM6
 MDA6MDAuMDAwMDAwMDAwICswMzAwDQpAQCAtMSwxNjgyICswLDAgQEANCi1UaGlzIGlzIGEg
 Zm9yd2FyZC1wb3J0IG9mIHRoZSBPcGVuU1NIIExQSyBzdXBwb3J0IHBhdGNoLg0KLQ0KLUl0
 IGFkZHMgc3VwcG9ydCBmb3Igc3RvcmluZyBPcGVuU1NIIHB1YmxpYyBrZXlzIGluIExEQVAu
 IEl0IGFsc28gc3VwcG9ydHMNCi1ncm91cGluZyBvZiBtYWNoaW5lcyBpbiB0aGUgTERBUCBk
 YXRhIHRvIGxpbWl0IHVzZXJzIHRvIHNwZWNpZmljIG1hY2hpbmVzLg0KLQ0KLVRoZSBsYXRl
 c3QgaG9tZXBhZ2UgZm9yIHRoZSBMUEsgcHJvamVjdCBpczoNCi1odHRwOi8vY29kZS5nb29n
 bGUuY29tL3Avb3BlbnNzaC1scGsvDQotDQotVGhlIDAuMy4xMCB2ZXJzaW9uIG9mIHRoZSBw
 YXRjaCBpbmNsdWRlcyBhIGZpeCBmb3IgNjQtYml0IHBsYXRmb3JtcywgYXMNCi1kaXNjb3Zl
 cmVkIGJ5IEdlbnRvbywgd2hlcmUgdGhlIGJpbmQgdGltZW91dCBhbmQgc2VhcmNoIHRpbWVv
 dXQgdmFsdWVzIHdlcmUgbm90DQotYmVpbmcgcGFyc2VkIGNvcnJlY3RseTogaHR0cDovL2J1
 Z3MuZ2VudG9vLm9yZy8yMTAxMTANCi0NCi1Gb3J3YXJkLXBvcnRlZC1mcm9tOiBvcGVuc3No
 LWxway01LjFwMS0wLjMuOS5wYXRjaA0KLVNpZ25lZC1vZmYtYnk6IFJvYmluIEguIEpvaG5z
 b24gPHJvYmJhdDJAZ2VudG9vLm9yZz4NCi0NCi1kaWZmIC1OdWFyIC0tZXhjbHVkZSAnKi5v
 cmlnJyAtLWV4Y2x1ZGUgJyoucmVqJyBhdXRoMi1wdWJrZXkuYyBhdXRoMi1wdWJrZXkuYw0K
 LS0tLSBhdXRoMi1wdWJrZXkuYwkyMDA4LTA3LTAzIDE5OjU0OjI1LjAwMDAwMDAwMCAtMDcw
 MA0KLSsrKyBhdXRoMi1wdWJrZXkuYwkyMDA4LTA4LTIzIDE1OjAyOjQ3LjAwMDAwMDAwMCAt
 MDcwMA0KLUBAIC01NSw2ICs1NSwxMCBAQA0KLSAjaW5jbHVkZSAibW9uaXRvcl93cmFwLmgi
 DQotICNpbmNsdWRlICJtaXNjLmgiDQotIA0KLSsjaWZkZWYgV0lUSF9MREFQX1BVQktFWQ0K
 LSsjaW5jbHVkZSAibGRhcGF1dGguaCINCi0rI2VuZGlmDQotKw0KLSAvKiBpbXBvcnQgKi8N
 Ci0gZXh0ZXJuIFNlcnZlck9wdGlvbnMgb3B0aW9uczsNCi0gZXh0ZXJuIHVfY2hhciAqc2Vz
 c2lvbl9pZDI7DQotQEAgLTE4NywxMCArMTkxLDc5IEBADQotIAl1X2xvbmcgbGluZW51bSA9
 IDA7DQotIAlLZXkgKmZvdW5kOw0KLSAJY2hhciAqZnA7DQotKyNpZmRlZiBXSVRIX0xEQVBf
 UFVCS0VZDQotKwlsZGFwX2tleV90ICogazsNCi0rCXVuc2lnbmVkIGludCBpID0gMDsNCi0r
 I2VuZGlmDQotIA0KLSAJLyogVGVtcG9yYXJpbHkgdXNlIHRoZSB1c2VyJ3MgdWlkLiAqLw0K
 LSAJdGVtcG9yYXJpbHlfdXNlX3VpZChwdyk7DQotIA0KLSsjaWZkZWYgV0lUSF9MREFQX1BV
 QktFWQ0KLSsgCWZvdW5kX2tleSA9IDA7DQotKyAJLyogYWxsb2NhdGUgYSBuZXcga2V5IHR5
 cGUgKi8NCi0rIAlmb3VuZCA9IGtleV9uZXcoa2V5LT50eXBlKTsNCi0rIA0KLSsgCS8qIGZp
 cnN0IGNoZWNrIGlmIHRoZSBvcHRpb25zIGlzIGVuYWJsZWQsIHRoZW4gdHJ5Li4gKi8NCi0r
 CWlmIChvcHRpb25zLmxway5vbikgew0KLSsJICAgIGRlYnVnKCJbTERBUF0gdHJ5aW5nIExE
 QVAgZmlyc3QgdWlkPSVzIixwdy0+cHdfbmFtZSk7DQotKwkgICAgaWYgKGxkYXBfaXNtZW1i
 ZXIoJm9wdGlvbnMubHBrLCBwdy0+cHdfbmFtZSkgPiAwKSB7DQotKwkJaWYgKChrID0gbGRh
 cF9nZXR1c2Vya2V5KCZvcHRpb25zLmxwaywgcHctPnB3X25hbWUpKSAhPSBOVUxMKSB7DQot
 KwkJICAgIC8qIFNraXAgbGVhZGluZyB3aGl0ZXNwYWNlLCBlbXB0eSBhbmQgY29tbWVudCBs
 aW5lcy4gKi8NCi0rCQkgICAgZm9yIChpID0gMCA7IGkgPCBrLT5udW0gOyBpKyspIHsNCi0r
 CQkJLyogZG9udCBmb3JnZXQgaWYgbXVsdGlwbGUga2V5cyB0byByZXNldCBvcHRpb25zICov
 DQotKwkJCWNoYXIgKmNwLCAqb3B0aW9ucyA9IE5VTEw7DQotKw0KLSsJCQlmb3IgKGNwID0g
 KGNoYXIgKilrLT5rZXlzW2ldLT5idl92YWw7ICpjcCA9PSAnICcgfHwgKmNwID09ICdcdCc7
 IGNwKyspDQotKwkJCSAgICA7DQotKwkJCWlmICghKmNwIHx8ICpjcCA9PSAnXG4nIHx8ICpj
 cCA9PSAnIycpDQotKwkJCSAgICBjb250aW51ZTsNCi0rDQotKwkJCWlmIChrZXlfcmVhZChm
 b3VuZCwgJmNwKSAhPSAxKSB7DQotKwkJCSAgICAvKiBubyBrZXk/ICBjaGVjayBpZiB0aGVy
 ZSBhcmUgb3B0aW9ucyBmb3IgdGhpcyBrZXkgKi8NCi0rCQkJICAgIGludCBxdW90ZWQgPSAw
 Ow0KLSsJCQkgICAgZGVidWcyKCJbTERBUF0gdXNlcl9rZXlfYWxsb3dlZDogY2hlY2sgb3B0
 aW9uczogJyVzJyIsIGNwKTsNCi0rCQkJICAgIG9wdGlvbnMgPSBjcDsNCi0rCQkJICAgIGZv
 ciAoOyAqY3AgJiYgKHF1b3RlZCB8fCAoKmNwICE9ICcgJyAmJiAqY3AgIT0gJ1x0JykpOyBj
 cCsrKSB7DQotKwkJCQlpZiAoKmNwID09ICdcXCcgJiYgY3BbMV0gPT0gJyInKQ0KLSsJCQkJ
 ICAgIGNwKys7CS8qIFNraXAgYm90aCAqLw0KLSsJCQkJZWxzZSBpZiAoKmNwID09ICciJykN
 Ci0rCQkJCSAgICBxdW90ZWQgPSAhcXVvdGVkOw0KLSsJCQkgICAgfQ0KLSsJCQkgICAgLyog
 U2tpcCByZW1haW5pbmcgd2hpdGVzcGFjZS4gKi8NCi0rCQkJICAgIGZvciAoOyAqY3AgPT0g
 JyAnIHx8ICpjcCA9PSAnXHQnOyBjcCsrKQ0KLSsJCQkJOw0KLSsJCQkgICAgaWYgKGtleV9y
 ZWFkKGZvdW5kLCAmY3ApICE9IDEpIHsNCi0rCQkJCWRlYnVnMigiW0xEQVBdIHVzZXJfa2V5
 X2FsbG93ZWQ6IGFkdmFuY2U6ICclcyciLCBjcCk7DQotKwkJCQkvKiBzdGlsbCBubyBrZXk/
 ICBhZHZhbmNlIHRvIG5leHQgbGluZSovDQotKwkJCQljb250aW51ZTsNCi0rCQkJICAgIH0N
 Ci0rCQkJfQ0KLSsNCi0rCQkJaWYgKGtleV9lcXVhbChmb3VuZCwga2V5KSAmJg0KLSsJCQkJ
 YXV0aF9wYXJzZV9vcHRpb25zKHB3LCBvcHRpb25zLCBmaWxlLCBsaW5lbnVtKSA9PSAxKSB7
 DQotKwkJCSAgICBmb3VuZF9rZXkgPSAxOw0KLSsJCQkgICAgZGVidWcoIltMREFQXSBtYXRj
 aGluZyBrZXkgZm91bmQiKTsNCi0rCQkJICAgIGZwID0ga2V5X2ZpbmdlcnByaW50KGZvdW5k
 LCBTU0hfRlBfTUQ1LCBTU0hfRlBfSEVYKTsNCi0rCQkJICAgIHZlcmJvc2UoIltMREFQXSBG
 b3VuZCBtYXRjaGluZyAlcyBrZXk6ICVzIiwga2V5X3R5cGUoZm91bmQpLCBmcCk7DQotKw0K
 LSsJCQkgICAgLyogcmVzdG9yaW5nIG1lbW9yeSAqLw0KLSsJCQkgICAgbGRhcF9rZXlzX2Zy
 ZWUoayk7DQotKwkJCSAgICB4ZnJlZShmcCk7DQotKwkJCSAgICByZXN0b3JlX3VpZCgpOw0K
 LSsJCQkgICAga2V5X2ZyZWUoZm91bmQpOw0KLSsJCQkgICAgcmV0dXJuIGZvdW5kX2tleTsN
 Ci0rCQkJICAgIGJyZWFrOw0KLSsJCQl9DQotKwkJICAgIH0vKiBlbmQgb2YgTERBUCBmb3Io
 KSAqLw0KLSsJCX0gZWxzZSB7DQotKwkJICAgIGxvZ2l0KCJbTERBUF0gbm8ga2V5cyBmb3Vu
 ZCBmb3IgJyVzJyEiLCBwdy0+cHdfbmFtZSk7DQotKwkJfQ0KLSsJICAgIH0gZWxzZSB7DQot
 KwkJbG9naXQoIltMREFQXSAnJXMnIGlzIG5vdCBpbiAnJXMnIiwgcHctPnB3X25hbWUsIG9w
 dGlvbnMubHBrLnNncm91cCk7DQotKwkgICAgfQ0KLSsJfQ0KLSsjZW5kaWYNCi0gCWRlYnVn
 KCJ0cnlpbmcgcHVibGljIGtleSBmaWxlICVzIiwgZmlsZSk7DQotIAlmID0gYXV0aF9vcGVu
 a2V5ZmlsZShmaWxlLCBwdywgb3B0aW9ucy5zdHJpY3RfbW9kZXMpOw0KLSANCi1kaWZmIC1O
 dWFyIC0tZXhjbHVkZSAnKi5vcmlnJyAtLWV4Y2x1ZGUgJyoucmVqJyBhdXRoLXJzYS5jIGF1
 dGgtcnNhLmMNCi0tLS0gYXV0aC1yc2EuYwkyMDA4LTA3LTAyIDA1OjM3OjMwLjAwMDAwMDAw
 MCAtMDcwMA0KLSsrKyBhdXRoLXJzYS5jCTIwMDgtMDgtMjMgMTU6MDI6NDcuMDAwMDAwMDAw
 IC0wNzAwDQotQEAgLTE3NCwxMCArMTc0LDk2IEBADQotIAlGSUxFICpmOw0KLSAJdV9sb25n
 IGxpbmVudW0gPSAwOw0KLSAJS2V5ICprZXk7DQotKyNpZmRlZiBXSVRIX0xEQVBfUFVCS0VZ
 DQotKwlsZGFwX2tleV90ICogazsNCi0rCXVuc2lnbmVkIGludCBpID0gMDsNCi0rI2VuZGlm
 DQotIA0KLSAJLyogVGVtcG9yYXJpbHkgdXNlIHRoZSB1c2VyJ3MgdWlkLiAqLw0KLSAJdGVt
 cG9yYXJpbHlfdXNlX3VpZChwdyk7DQotIA0KLSsjaWZkZWYgV0lUSF9MREFQX1BVQktFWQ0K
 LSsJLyogaGVyZSBpcyB0aGUgam9iICovDQotKwlrZXkgPSBrZXlfbmV3KEtFWV9SU0ExKTsN
 Ci0rDQotKwlpZiAob3B0aW9ucy5scGsub24pIHsNCi0rCSAgICBkZWJ1ZygiW0xEQVBdIHRy
 eWluZyBMREFQIGZpcnN0IHVpZD0lcyIsIHB3LT5wd19uYW1lKTsNCi0rCSAgICBpZiAoIGxk
 YXBfaXNtZW1iZXIoJm9wdGlvbnMubHBrLCBwdy0+cHdfbmFtZSkgPiAwKSB7DQotKwkJaWYg
 KCAoayA9IGxkYXBfZ2V0dXNlcmtleSgmb3B0aW9ucy5scGssIHB3LT5wd19uYW1lKSkgIT0g
 TlVMTCkgew0KLSsJCSAgICBmb3IgKGkgPSAwIDsgaSA8IGstPm51bSA7IGkrKykgew0KLSsJ
 CQljaGFyICpjcCwgKm9wdGlvbnMgPSBOVUxMOw0KLSsNCi0rCQkJZm9yIChjcCA9IGstPmtl
 eXNbaV0tPmJ2X3ZhbDsgKmNwID09ICcgJyB8fCAqY3AgPT0gJ1x0JzsgY3ArKykNCi0rCQkJ
 ICAgIDsNCi0rCQkJaWYgKCEqY3AgfHwgKmNwID09ICdcbicgfHwgKmNwID09ICcjJykNCi0r
 CQkJICAgIGNvbnRpbnVlOw0KLSsNCi0rCQkJLyoNCi0rCQkJKiBDaGVjayBpZiB0aGVyZSBh
 cmUgb3B0aW9ucyBmb3IgdGhpcyBrZXksIGFuZCBpZiBzbywNCi0rCQkJKiBzYXZlIHRoZWly
 IHN0YXJ0aW5nIGFkZHJlc3MgYW5kIHNraXAgdGhlIG9wdGlvbiBwYXJ0DQotKwkJCSogZm9y
 IG5vdy4gIElmIHRoZXJlIGFyZSBubyBvcHRpb25zLCBzZXQgdGhlIHN0YXJ0aW5nDQotKwkJ
 CSogYWRkcmVzcyB0byBOVUxMLg0KLSsJCQkgKi8NCi0rCQkJaWYgKCpjcCA8ICcwJyB8fCAq
 Y3AgPiAnOScpIHsNCi0rCQkJICAgIGludCBxdW90ZWQgPSAwOw0KLSsJCQkgICAgb3B0aW9u
 cyA9IGNwOw0KLSsJCQkgICAgZm9yICg7ICpjcCAmJiAocXVvdGVkIHx8ICgqY3AgIT0gJyAn
 ICYmICpjcCAhPSAnXHQnKSk7IGNwKyspIHsNCi0rCQkJCWlmICgqY3AgPT0gJ1xcJyAmJiBj
 cFsxXSA9PSAnIicpDQotKwkJCQkgICAgY3ArKzsJLyogU2tpcCBib3RoICovDQotKwkJCQll
 bHNlIGlmICgqY3AgPT0gJyInKQ0KLSsJCQkJICAgIHF1b3RlZCA9ICFxdW90ZWQ7DQotKwkJ
 CSAgICB9DQotKwkJCX0gZWxzZQ0KLSsJCQkgICAgb3B0aW9ucyA9IE5VTEw7DQotKw0KLSsJ
 CQkvKiBQYXJzZSB0aGUga2V5IGZyb20gdGhlIGxpbmUuICovDQotKwkJCWlmIChob3N0Zmls
 ZV9yZWFkX2tleSgmY3AsICZiaXRzLCBrZXkpID09IDApIHsNCi0rCQkJICAgIGRlYnVnKCJb
 TERBUF0gbGluZSAlZDogbm9uIHNzaDEga2V5IHN5bnRheCIsIGkpOw0KLSsJCQkgICAgY29u
 dGludWU7DQotKwkJCX0NCi0rCQkJLyogY3Agbm93IHBvaW50cyB0byB0aGUgY29tbWVudCBw
 YXJ0LiAqLw0KLSsNCi0rCQkJLyogQ2hlY2sgaWYgdGhlIHdlIGhhdmUgZm91bmQgdGhlIGRl
 c2lyZWQga2V5IChpZGVudGlmaWVkIGJ5IGl0cyBtb2R1bHVzKS4gKi8NCi0rCQkJaWYgKEJO
 X2NtcChrZXktPnJzYS0+biwgY2xpZW50X24pICE9IDApDQotKwkJCSAgICBjb250aW51ZTsN
 Ci0rDQotKwkJCS8qIGNoZWNrIHRoZSByZWFsIGJpdHMgICovDQotKwkJCWlmIChiaXRzICE9
 ICh1bnNpZ25lZCBpbnQpQk5fbnVtX2JpdHMoa2V5LT5yc2EtPm4pKQ0KLSsJCQkgICAgbG9n
 aXQoIltMREFQXSBXYXJuaW5nOiBsZGFwLCBsaW5lICVsdToga2V5c2l6ZSBtaXNtYXRjaDog
 Ig0KLSsJCQkJICAgICJhY3R1YWwgJWQgdnMuIGFubm91bmNlZCAlZC4iLCAodW5zaWduZWQg
 bG9uZylpLCBCTl9udW1fYml0cyhrZXktPnJzYS0+biksIGJpdHMpOw0KLSsNCi0rCQkJLyog
 V2UgaGF2ZSBmb3VuZCB0aGUgZGVzaXJlZCBrZXkuICovDQotKwkJCS8qDQotKwkJCSogSWYg
 b3VyIG9wdGlvbnMgZG8gbm90IGFsbG93IHRoaXMga2V5IHRvIGJlIHVzZWQsDQotKwkJCSog
 ZG8gbm90IHNlbmQgY2hhbGxlbmdlLg0KLSsJCQkgKi8NCi0rCQkJaWYgKCFhdXRoX3BhcnNl
 X29wdGlvbnMocHcsIG9wdGlvbnMsICJbTERBUF0iLCAodW5zaWduZWQgbG9uZykgaSkpDQot
 KwkJCSAgICBjb250aW51ZTsNCi0rDQotKwkJCS8qIGJyZWFrIG91dCwgdGhpcyBrZXkgaXMg
 YWxsb3dlZCAqLw0KLSsJCQlhbGxvd2VkID0gMTsNCi0rDQotKwkJCS8qIGFkZCB0aGUgcmV0
 dXJuIHN0dWZmIGV0Yy4uLiAqLw0KLSsJCQkvKiBSZXN0b3JlIHRoZSBwcml2aWxlZ2VkIHVp
 ZC4gKi8NCi0rCQkJcmVzdG9yZV91aWQoKTsNCi0rDQotKwkJCS8qIHJldHVybiBrZXkgaWYg
 YWxsb3dlZCAqLw0KLSsJCQlpZiAoYWxsb3dlZCAmJiBya2V5ICE9IE5VTEwpDQotKwkJCSAg
 ICAqcmtleSA9IGtleTsNCi0rCQkJZWxzZQ0KLSsJCQkgICAga2V5X2ZyZWUoa2V5KTsNCi0r
 DQotKwkJCWxkYXBfa2V5c19mcmVlKGspOw0KLSsJCQlyZXR1cm4gKGFsbG93ZWQpOw0KLSsJ
 CSAgICB9DQotKwkJfSBlbHNlIHsNCi0rCQkgICAgbG9naXQoIltMREFQXSBubyBrZXlzIGZv
 dW5kIGZvciAnJXMnISIsIHB3LT5wd19uYW1lKTsNCi0rCQl9DQotKwkgICAgfSBlbHNlIHsN
 Ci0rCQlsb2dpdCgiW0xEQVBdICclcycgaXMgbm90IGluICclcyciLCBwdy0+cHdfbmFtZSwg
 b3B0aW9ucy5scGsuc2dyb3VwKTsNCi0rCSAgICB9DQotKwl9DQotKyNlbmRpZg0KLSAJLyog
 VGhlIGF1dGhvcml6ZWQga2V5cy4gKi8NCi0gCWZpbGUgPSBhdXRob3JpemVkX2tleXNfZmls
 ZShwdyk7DQotIAlkZWJ1ZygidHJ5aW5nIHB1YmxpYyBSU0Ega2V5IGZpbGUgJXMiLCBmaWxl
 KTsNCi1kaWZmIC1OdWFyIC0tZXhjbHVkZSAnKi5vcmlnJyAtLWV4Y2x1ZGUgJyoucmVqJyBj
 b25maWcuaC5pbiBjb25maWcuaC5pbg0KLS0tLSBjb25maWcuaC5pbgkyMDA4LTA3LTIxIDAx
 OjMwOjQ5LjAwMDAwMDAwMCAtMDcwMA0KLSsrKyBjb25maWcuaC5pbgkyMDA4LTA4LTIzIDE1
 OjAyOjQ3LjAwMDAwMDAwMCAtMDcwMA0KLUBAIC01NjAsNiArNTYwLDkgQEANCi0gLyogRGVm
 aW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxsaW51eC9pZl90dW4uaD4gaGVhZGVyIGZpbGUu
 ICovDQotICN1bmRlZiBIQVZFX0xJTlVYX0lGX1RVTl9IDQotIA0KLSsvKiBEZWZpbmUgaWYg
 eW91IHdhbnQgTERBUCBzdXBwb3J0ICovDQotKyN1bmRlZiBXSVRIX0xEQVBfUFVCS0VZDQot
 Kw0KLSAvKiBEZWZpbmUgaWYgeW91ciBsaWJyYXJpZXMgZGVmaW5lIGxvZ2luKCkgKi8NCi0g
 I3VuZGVmIEhBVkVfTE9HSU4NCi0gDQotZGlmZiAtTnVhciAtLWV4Y2x1ZGUgJyoub3JpZycg
 LS1leGNsdWRlICcqLnJlaicgY29uZmlndXJlIGNvbmZpZ3VyZQ0KLS0tLSBjb25maWd1cmUJ
 MjAwOC0wNy0yMSAwMTozMDo1MC4wMDAwMDAwMDAgLTA3MDANCi0rKysgY29uZmlndXJlCTIw
 MDgtMDgtMjMgMTU6MDI6NDcuMDAwMDAwMDAwIC0wNzAwDQotQEAgLTEzNDAsNiArMTM0MCw3
 IEBADQotICAgLS13aXRoLXRjcC13cmFwcGVyc1s9UEFUSF0gRW5hYmxlIHRjcHdyYXBwZXJz
 IHN1cHBvcnQgKG9wdGlvbmFsbHkgaW4gUEFUSCkNCi0gICAtLXdpdGgtbGliZWRpdFs9UEFU
 SF0gICBFbmFibGUgbGliZWRpdCBzdXBwb3J0IGZvciBzZnRwDQotICAgLS13aXRoLWF1ZGl0
 PW1vZHVsZSAgICAgRW5hYmxlIEVYUEVSSU1FTlRBTCBhdWRpdCBzdXBwb3J0IChtb2R1bGVz
 PWRlYnVnLGJzbSkNCi0rICAtLXdpdGgtbGRhcFs9UEFUSF0gICAgICBFbmFibGUgTERBUCBw
 dWJrZXkgc3VwcG9ydCAob3B0aW9uYWxseSBpbiBQQVRIKQ0KLSAgIC0td2l0aC1zc2wtZGly
 PVBBVEggICAgIFNwZWNpZnkgcGF0aCB0byBPcGVuU1NMIGluc3RhbGxhdGlvbg0KLSAgIC0t
 d2l0aG91dC1vcGVuc3NsLWhlYWRlci1jaGVjayBEaXNhYmxlIE9wZW5TU0wgdmVyc2lvbiBj
 b25zaXN0ZW5jeSBjaGVjaw0KLSAgIC0td2l0aC1zc2wtZW5naW5lICAgICAgIEVuYWJsZSBP
 cGVuU1NMIChoYXJkd2FyZSkgRU5HSU5FIHN1cHBvcnQNCi1AQCAtMTI1NjgsNiArMTI1Njks
 ODUgQEANCi0gZmkNCi0gDQotIA0KLSsjIENoZWNrIHdoZXRoZXIgdXNlciB3YW50cyBMREFQ
 IHN1cHBvcnQNCi0rTERBUF9NU0c9Im5vIg0KLSsNCi0rIyBDaGVjayB3aGV0aGVyIC0td2l0
 aC1sZGFwIHdhcyBnaXZlbi4NCi0raWYgdGVzdCAiJHt3aXRoX2xkYXArc2V0fSIgPSBzZXQ7
 IHRoZW4NCi0rICB3aXRodmFsPSR3aXRoX2xkYXA7DQotKwkJaWYgdGVzdCAieCR3aXRodmFs
 IiAhPSAieG5vIiA7IHRoZW4NCi0rDQotKwkJCWlmIHRlc3QgIngkd2l0aHZhbCIgIT0gInh5
 ZXMiIDsgdGhlbg0KLSsJCQkJQ1BQRkxBR1M9IiRDUFBGTEFHUyAtSSR7d2l0aHZhbH0vaW5j
 bHVkZSINCi0rCQkJCUxERkxBR1M9IiRMREZMQUdTIC1MJHt3aXRodmFsfS9saWIiDQotKwkJ
 CWZpDQotKw0KLSsNCi0rY2F0ID4+Y29uZmRlZnMuaCA8PFxfQUNFT0YNCi0rI2RlZmluZSBX
 SVRIX0xEQVBfUFVCS0VZIDENCi0rX0FDRU9GDQotKw0KLSsJCQlMSUJTPSItbGxkYXAgJExJ
 QlMiDQotKwkJCUxEQVBfTVNHPSJ5ZXMiDQotKw0KLSsJCQl7IGVjaG8gIiRhc19tZTokTElO
 RU5POiBjaGVja2luZyBmb3IgTERBUCBzdXBwb3J0IiA+JjUNCi0rZWNobyAkRUNIT19OICJj
 aGVja2luZyBmb3IgTERBUCBzdXBwb3J0Li4uICRFQ0hPX0MiID4mNjsgfQ0KLSsJCQljYXQg
 PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YNCi0rLyogY29uZmRlZnMuaC4gICovDQotK19B
 Q0VPRg0KLStjYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQNCi0rY2F0ID4+Y29u
 ZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRg0KLSsvKiBlbmQgY29uZmRlZnMuaC4gICovDQotKyNp
 bmNsdWRlIDxzeXMvdHlwZXMuaD4NCi0rCQkJCSAjaW5jbHVkZSA8bGRhcC5oPg0KLStpbnQN
 Ci0rbWFpbiAoKQ0KLSt7DQotKyh2b2lkKWxkYXBfaW5pdCgwLCAwKTsNCi0rICA7DQotKyAg
 cmV0dXJuIDA7DQotK30NCi0rX0FDRU9GDQotK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQN
 Ci0raWYgeyAoYWNfdHJ5PSIkYWNfY29tcGlsZSINCi0rY2FzZSAiKCgkYWNfdHJ5IiBpbg0K
 LSsgICpcIiogfCAqXGAqIHwgKlxcKikgYWNfdHJ5X2VjaG89XCRhY190cnk7Ow0KLSsgICop
 IGFjX3RyeV9lY2hvPSRhY190cnk7Ow0KLStlc2FjDQotK2V2YWwgImVjaG8gXCJcJGFzX21l
 OiRMSU5FTk86ICRhY190cnlfZWNob1wiIikgPiY1DQotKyAgKGV2YWwgIiRhY19jb21waWxl
 IikgMj5jb25mdGVzdC5lcjENCi0rICBhY19zdGF0dXM9JD8NCi0rICBncmVwIC12ICdeICor
 JyBjb25mdGVzdC5lcjEgPmNvbmZ0ZXN0LmVycg0KLSsgIHJtIC1mIGNvbmZ0ZXN0LmVyMQ0K
 LSsgIGNhdCBjb25mdGVzdC5lcnIgPiY1DQotKyAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwk
 PyA9ICRhY19zdGF0dXMiID4mNQ0KLSsgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmIHsNCi0r
 CSB0ZXN0IC16ICIkYWNfY193ZXJyb3JfZmxhZyIgfHwNCi0rCSB0ZXN0ICEgLXMgY29uZnRl
 c3QuZXJyDQotKyAgICAgICB9ICYmIHRlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dDsgdGhl
 bg0KLSsgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogeWVzIiA+JjUNCi0rZWNo
 byAiJHtFQ0hPX1R9eWVzIiA+JjY7IH0NCi0rZWxzZQ0KLSsgIGVjaG8gIiRhc19tZTogZmFp
 bGVkIHByb2dyYW0gd2FzOiIgPiY1DQotK3NlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4
 dCA+JjUNCi0rDQotKw0KLSsJCQkJICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3Vs
 dDogbm8iID4mNQ0KLStlY2hvICIke0VDSE9fVH1ubyIgPiY2OyB9DQotKwkJCQkJeyB7IGVj
 aG8gIiRhc19tZTokTElORU5POiBlcnJvcjogKiogSW5jb21wbGV0ZSBvciBtaXNzaW5nIGxk
 YXAgbGlicmFyaWVzICoqIiA+JjUNCi0rZWNobyAiJGFzX21lOiBlcnJvcjogKiogSW5jb21w
 bGV0ZSBvciBtaXNzaW5nIGxkYXAgbGlicmFyaWVzICoqIiA+JjI7fQ0KLSsgICB7IChleGl0
 IDEpOyBleGl0IDE7IH07IH0NCi0rDQotKw0KLStmaQ0KLSsNCi0rcm0gLWYgY29yZSBjb25m
 dGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0DQotKwkJZmkN
 Ci0rDQotKw0KLStmaQ0KLSsNCi0rDQotIA0KLSANCi0gDQotQEAgLTMwMTM1LDYgKzMwMjE1
 LDcgQEANCi0gZWNobyAiICAgICAgICAgICAgICAgICBTbWFydGNhcmQgc3VwcG9ydDogJFND
 QVJEX01TRyINCi0gZWNobyAiICAgICAgICAgICAgICAgICAgICAgUy9LRVkgc3VwcG9ydDog
 JFNLRVlfTVNHIg0KLSBlY2hvICIgICAgICAgICAgICAgIFRDUCBXcmFwcGVycyBzdXBwb3J0
 OiAkVENQV19NU0ciDQotK2VjaG8gIiAgICAgICAgICAgICAgICAgICAgICBMREFQIHN1cHBv
 cnQ6ICRMREFQX01TRyINCi0gZWNobyAiICAgICAgICAgICAgICBNRDUgcGFzc3dvcmQgc3Vw
 cG9ydDogJE1ENV9NU0ciDQotIGVjaG8gIiAgICAgICAgICAgICAgICAgICBsaWJlZGl0IHN1
 cHBvcnQ6ICRMSUJFRElUX01TRyINCi0gZWNobyAiICBTb2xhcmlzIHByb2Nlc3MgY29udHJh
 Y3Qgc3VwcG9ydDogJFNQQ19NU0ciDQotZGlmZiAtTnVhciAtLWV4Y2x1ZGUgJyoub3JpZycg
 LS1leGNsdWRlICcqLnJlaicgY29uZmlndXJlLmFjIGNvbmZpZ3VyZS5hYw0KLS0tLSBjb25m
 aWd1cmUuYWMJMjAwOC0wNy0wOSAwNDowNzoxOS4wMDAwMDAwMDAgLTA3MDANCi0rKysgY29u
 ZmlndXJlLmFjCTIwMDgtMDgtMjMgMTU6MDI6NDcuMDAwMDAwMDAwIC0wNzAwDQotQEAgLTEy
 OTksNiArMTI5OSwzNyBAQA0KLSAJZXNhYyBdDQotICkNCi0gDQotKyMgQ2hlY2sgd2hldGhl
 ciB1c2VyIHdhbnRzIExEQVAgc3VwcG9ydA0KLStMREFQX01TRz0ibm8iDQotK0FDX0FSR19X
 SVRIKGxkYXAsDQotKwlbICAtLXdpdGgtbGRhcFtbPVBBVEhdXSAgICAgIEVuYWJsZSBMREFQ
 IHB1YmtleSBzdXBwb3J0IChvcHRpb25hbGx5IGluIFBBVEgpXSwNCi0rCVsNCi0rCQlpZiB0
 ZXN0ICJ4JHdpdGh2YWwiICE9ICJ4bm8iIDsgdGhlbg0KLSsNCi0rCQkJaWYgdGVzdCAieCR3
 aXRodmFsIiAhPSAieHllcyIgOyB0aGVuDQotKwkJCQlDUFBGTEFHUz0iJENQUEZMQUdTIC1J
 JHt3aXRodmFsfS9pbmNsdWRlIg0KLSsJCQkJTERGTEFHUz0iJExERkxBR1MgLUwke3dpdGh2
 YWx9L2xpYiINCi0rCQkJZmkNCi0rDQotKwkJCUFDX0RFRklORShbV0lUSF9MREFQX1BVQktF
 WV0sIDEsIFtFbmFibGUgTERBUCBwdWJrZXkgc3VwcG9ydF0pDQotKwkJCUxJQlM9Ii1sbGRh
 cCAkTElCUyINCi0rCQkJTERBUF9NU0c9InllcyINCi0rCQ0KLSsJCQlBQ19NU0dfQ0hFQ0tJ
 TkcoW2ZvciBMREFQIHN1cHBvcnRdKQ0KLSsJCQlBQ19UUllfQ09NUElMRSgNCi0rCQkJCVsj
 aW5jbHVkZSA8c3lzL3R5cGVzLmg+DQotKwkJCQkgI2luY2x1ZGUgPGxkYXAuaD5dLA0KLSsJ
 CQkJWyh2b2lkKWxkYXBfaW5pdCgwLCAwKTtdLA0KLSsJCQkJW0FDX01TR19SRVNVTFQoeWVz
 KV0sDQotKwkJCQlbDQotKwkJCQkgICAgQUNfTVNHX1JFU1VMVChubykgDQotKwkJCQkJQUNf
 TVNHX0VSUk9SKFsqKiBJbmNvbXBsZXRlIG9yIG1pc3NpbmcgbGRhcCBsaWJyYXJpZXMgKipd
 KQ0KLSsJCQkJXQ0KLSsgICAgICAgIAkpDQotKwkJZmkNCi0rCV0NCi0rKQ0KLSsNCi0gZG5s
 ICAgIENoZWNrcyBmb3IgbGlicmFyeSBmdW5jdGlvbnMuIFBsZWFzZSBrZWVwIGluIGFscGhh
 YmV0aWNhbCBvcmRlcg0KLSBBQ19DSEVDS19GVU5DUyggXA0KLSAJYXJjNHJhbmRvbSBcDQot
 QEAgLTQxMzcsNiArNDE2OCw3IEBADQotIGVjaG8gIiAgICAgICAgICAgICAgICAgU21hcnRj
 YXJkIHN1cHBvcnQ6ICRTQ0FSRF9NU0ciDQotIGVjaG8gIiAgICAgICAgICAgICAgICAgICAg
 IFMvS0VZIHN1cHBvcnQ6ICRTS0VZX01TRyINCi0gZWNobyAiICAgICAgICAgICAgICBUQ1Ag
 V3JhcHBlcnMgc3VwcG9ydDogJFRDUFdfTVNHIg0KLStlY2hvICIgICAgICAgICAgICAgICAg
 ICAgICAgTERBUCBzdXBwb3J0OiAkTERBUF9NU0ciDQotIGVjaG8gIiAgICAgICAgICAgICAg
 TUQ1IHBhc3N3b3JkIHN1cHBvcnQ6ICRNRDVfTVNHIg0KLSBlY2hvICIgICAgICAgICAgICAg
 ICAgICAgbGliZWRpdCBzdXBwb3J0OiAkTElCRURJVF9NU0ciDQotIGVjaG8gIiAgU29sYXJp
 cyBwcm9jZXNzIGNvbnRyYWN0IHN1cHBvcnQ6ICRTUENfTVNHIg0KLWRpZmYgLU51YXIgLS1l
 eGNsdWRlICcqLm9yaWcnIC0tZXhjbHVkZSAnKi5yZWonIGxkYXBhdXRoLmMgbGRhcGF1dGgu
 Yw0KLS0tLSBsZGFwYXV0aC5jCTE5NjktMTItMzEgMTY6MDA6MDAuMDAwMDAwMDAwIC0wODAw
 DQotKysrIGxkYXBhdXRoLmMJMjAwOC0wOC0yMyAxNTowMjo0Ny4wMDAwMDAwMDAgLTA3MDAN
 Ci1AQCAtMCwwICsxLDU3NSBAQA0KLSsvKiANCi0rICogJElkOiBvcGVuc3NoLWxway00LjNw
 MS0wLjMuNy5wYXRjaCx2IDEuMyAyMDA2LzA0LzE4IDE1OjI5OjA5IGVhdSBFeHAgJA0KLSsg
 Ki8NCi0rDQotKy8qDQotKyAqDQotKyAqIENvcHlyaWdodCAoYykgMjAwNSwgRXJpYyBBVUdF
 IDxlYXVAcGhlYXIub3JnPg0KLSsgKiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLSsgKg0KLSsg
 KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
 aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
 YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6DQotKyAqDQotKyAqIFJlZGlz
 dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
 Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
 ZGlzY2xhaW1lci4NCi0rICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
 cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
 ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0
 aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
 aW9uLg0KLSsgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBwaGVhci5vcmcgbm9yIHRoZSBu
 YW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
 bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
 ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4NCi0rICoNCi0rICogVEhJUyBTT0ZUV0FS
 RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
 UyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
 RElORywgDQotKyAqIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
 UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
 T1NFIEFSRSBESVNDTEFJTUVELiANCi0rICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
 SUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
 TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCANCi0rICogT1IgQ09O
 U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
 Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgDQotKyAqIExPU1Mg
 T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
 V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
 TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgDQotKyAqIE9SIFRPUlQgKElOQ0xVRElO
 RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
 SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
 SUxJVFkgT0YgU1VDSCBEQU1BR0UuDQotKyAqDQotKyAqDQotKyAqLw0KLSsNCi0rI2luY2x1
 ZGUgImluY2x1ZGVzLmgiDQotKw0KLSsjaWZkZWYgV0lUSF9MREFQX1BVQktFWQ0KLSsNCi0r
 I2luY2x1ZGUgPHN0ZGlvLmg+DQotKyNpbmNsdWRlIDxzdGRsaWIuaD4NCi0rI2luY2x1ZGUg
 PHVuaXN0ZC5oPg0KLSsjaW5jbHVkZSA8c3RyaW5nLmg+DQotKw0KLSsjaW5jbHVkZSAibGRh
 cGF1dGguaCINCi0rI2luY2x1ZGUgImxvZy5oIg0KLSsNCi0rc3RhdGljIGNoYXIgKmF0dHJz
 W10gPSB7DQotKyAgICBQVUJLRVlBVFRSLA0KLSsgICAgTlVMTA0KLSt9Ow0KLSsNCi0rLyog
 ZmlsdGVyIGJ1aWxkaW5nIGluZm9zICovDQotKyNkZWZpbmUgRklMVEVSX0dST1VQX1BSRUZJ
 WCAiKCYob2JqZWN0Y2xhc3M9cG9zaXhHcm91cCkiDQotKyNkZWZpbmUgRklMVEVSX09SX1BS
 RUZJWCAiKHwiDQotKyNkZWZpbmUgRklMVEVSX09SX1NVRkZJWCAiKSINCi0rI2RlZmluZSBG
 SUxURVJfQ05fUFJFRklYICIoY249Ig0KLSsjZGVmaW5lIEZJTFRFUl9DTl9TVUZGSVggIiki
 DQotKyNkZWZpbmUgRklMVEVSX1VJRF9GT1JNQVQgIihtZW1iZXJVaWQ9JXMpIg0KLSsjZGVm
 aW5lIEZJTFRFUl9HUk9VUF9TVUZGSVggIikiDQotKyNkZWZpbmUgRklMVEVSX0dST1VQX1NJ
 WkUoZ3JvdXApIChzaXplX3QpIChzdHJsZW4oZ3JvdXApKyhsZGFwX2NvdW50X2dyb3VwKGdy
 b3VwKSo1KSs1MikNCi0rDQotKy8qIGp1c3QgZmlsdGVyIGJ1aWxkaW5nIHN0dWZmICovDQot
 KyNkZWZpbmUgUkVRVUVTVF9HUk9VUF9TSVpFKGZpbHRlciwgdWlkKSAoc2l6ZV90KSAoc3Ry
 bGVuKGZpbHRlcikrc3RybGVuKHVpZCkrMSkNCi0rI2RlZmluZSBSRVFVRVNUX0dST1VQKGJ1
 ZmZlciwgcHJlZmlsdGVyLCBwd25hbWUpIFwNCi0rICAgIGJ1ZmZlciA9IChjaGFyICopIGNh
 bGxvYyhSRVFVRVNUX0dST1VQX1NJWkUocHJlZmlsdGVyLCBwd25hbWUpLCBzaXplb2YoY2hh
 cikpOyBcDQotKyAgICBpZiAoIWJ1ZmZlcikgeyBcDQotKyAgICAgICAgcGVycm9yKCJjYWxs
 b2MoKSIpOyBcDQotKyAgICAgICAgcmV0dXJuIEZBSUxVUkU7IFwNCi0rICAgIH0gXA0KLSsg
 ICAgc25wcmludGYoYnVmZmVyLCBSRVFVRVNUX0dST1VQX1NJWkUocHJlZmlsdGVyLHB3bmFt
 ZSksIHByZWZpbHRlciwgcHduYW1lKQ0KLSsvKg0KLStYWFggT0xEIGdyb3VwIGJ1aWxkaW5n
 IG1hY3Jvcw0KLSsjZGVmaW5lIFJFUVVFU1RfR1JPVVBfU0laRShncnAsIHVpZCkgKHNpemVf
 dCkgKHN0cmxlbihncnApK3N0cmxlbih1aWQpKzQ2KQ0KLSsjZGVmaW5lIFJFUVVFU1RfR1JP
 VVAoYnVmZmVyLHB3bmFtZSxncnApIFwNCi0rICAgIGJ1ZmZlciA9IChjaGFyICopIGNhbGxv
 YyhSRVFVRVNUX0dST1VQX1NJWkUoZ3JwLCBwd25hbWUpLCBzaXplb2YoY2hhcikpOyBcDQot
 KyAgICBpZiAoIWJ1ZmZlcikgeyBcDQotKyAgICAgICAgcGVycm9yKCJjYWxsb2MoKSIpOyBc
 DQotKyAgICAgICAgcmV0dXJuIEZBSUxVUkU7IFwNCi0rICAgIH0gXA0KLSsgICAgc25wcmlu
 dGYoYnVmZmVyLFJFUVVFU1RfR1JPVVBfU0laRShncnAscHduYW1lKSwiKCYob2JqZWN0Y2xh
 c3M9cG9zaXhHcm91cCkoY249JXMpKG1lbWJlclVpZD0lcykpIixncnAscHduYW1lKQ0KLSsg
 ICAgKi8NCi0rDQotKy8qDQotK1hYWCBzdG9jayB1cHN0cmVhbSB2ZXJzaW9uIHdpdGhvdXQg
 ZXh0cmEgZmlsdGVyIHN1cHBvcnQNCi0rI2RlZmluZSBSRVFVRVNUX1VTRVJfU0laRSh1aWQp
 IChzaXplX3QpIChzdHJsZW4odWlkKSs2NCkNCi0rI2RlZmluZSBSRVFVRVNUX1VTRVIoYnVm
 ZmVyLCBwd25hbWUpIFwNCi0rICAgIGJ1ZmZlciA9IChjaGFyICopIGNhbGxvYyhSRVFVRVNU
 X1VTRVJfU0laRShwd25hbWUpLCBzaXplb2YoY2hhcikpOyBcDQotKyAgICBpZiAoIWJ1ZmZl
 cikgeyBcDQotKyAgICAgICAgcGVycm9yKCJjYWxsb2MoKSIpOyBcDQotKyAgICAgICAgcmV0
 dXJuIE5VTEw7IFwNCi0rICAgIH0gXA0KLSsgICAgc25wcmludGYoYnVmZmVyLFJFUVVFU1Rf
 VVNFUl9TSVpFKHB3bmFtZSksIigmKG9iamVjdGNsYXNzPXBvc2l4QWNjb3VudCkob2JqZWN0
 Y2xhc3M9bGRhcFB1YmxpY0tleSkodWlkPSVzKSkiLHB3bmFtZSkNCi0rICAgKi8NCi0rDQot
 KyNkZWZpbmUgUkVRVUVTVF9VU0VSX1NJWkUodWlkLCBmaWx0ZXIpIChzaXplX3QpIChzdHJs
 ZW4odWlkKSs2NCsoZmlsdGVyICE9IE5VTEwgPyBzdHJsZW4oZmlsdGVyKSA6IDApKQ0KLSsj
 ZGVmaW5lIFJFUVVFU1RfVVNFUihidWZmZXIsIHB3bmFtZSwgY3VzdG9tZmlsdGVyKSBcDQot
 KyAgICBidWZmZXIgPSAoY2hhciAqKSBjYWxsb2MoUkVRVUVTVF9VU0VSX1NJWkUocHduYW1l
 LCBjdXN0b21maWx0ZXIpLCBzaXplb2YoY2hhcikpOyBcDQotKyAgICBpZiAoIWJ1ZmZlcikg
 eyBcDQotKyAgICAgICAgcGVycm9yKCJjYWxsb2MoKSIpOyBcDQotKyAgICAgICAgcmV0dXJu
 IE5VTEw7IFwNCi0rICAgIH0gXA0KLSsgICAgc25wcmludGYoYnVmZmVyLCBSRVFVRVNUX1VT
 RVJfU0laRShwd25hbWUsIGN1c3RvbWZpbHRlciksIFwNCi0rICAgIAkiKCYob2JqZWN0Y2xh
 c3M9cG9zaXhBY2NvdW50KShvYmplY3RjbGFzcz1sZGFwUHVibGljS2V5KSh1aWQ9JXMpJXMp
 IiwgXA0KLSsJcHduYW1lLCAoY3VzdG9tZmlsdGVyICE9IE5VTEwgPyBjdXN0b21maWx0ZXIg
 OiAiIikpDQotKw0KLSsvKiBzb21lIHBvcnRhYmxlIGFuZCB3b3JraW5nIHRva2VuaXplciwg
 bGFtZSB0aG91Z2ggKi8NCi0rc3RhdGljIGludCB0b2tlbml6ZShjaGFyICoqIG8sIHNpemVf
 dCBzaXplLCBjaGFyICogaW5wdXQpIHsNCi0rICAgIHVuc2lnbmVkIGludCBpID0gMCwgbnVt
 Ow0KLSsgICAgY29uc3QgY2hhciAqIGNoYXJzZXQgPSAiIFx0IjsNCi0rICAgIGNoYXIgKiBw
 dHIgPSBpbnB1dDsNCi0rDQotKyAgICAvKiBsZWFkaW5nIHdoaXRlIHNwYWNlcyBhcmUgaWdu
 b3JlZCAqLw0KLSsgICAgbnVtID0gc3Ryc3BuKHB0ciwgY2hhcnNldCk7DQotKyAgICBwdHIg
 Kz0gbnVtOw0KLSsNCi0rICAgIHdoaWxlICgobnVtID0gc3RyY3NwbihwdHIsIGNoYXJzZXQp
 KSkgew0KLSsgICAgICAgIGlmIChpIDwgc2l6ZS0xKSB7DQotKyAgICAgICAgICAgIG9baSsr
 XSA9IHB0cjsNCi0rICAgICAgICAgICAgcHRyICs9IG51bTsNCi0rICAgICAgICAgICAgaWYg
 KCpwdHIpDQotKyAgICAgICAgICAgICAgICAqcHRyKysgPSAnXDAnOw0KLSsgICAgICAgIH0N
 Ci0rICAgIH0NCi0rICAgIG9baV0gPSBOVUxMOw0KLSsgICAgcmV0dXJuIFNVQ0NFU1M7DQot
 K30NCi0rDQotK3ZvaWQgbGRhcF9jbG9zZShsZGFwX29wdF90ICogbGRhcCkgew0KLSsNCi0r
 ICAgIGlmICghbGRhcCkNCi0rICAgICAgICByZXR1cm47DQotKw0KLSsgICAgaWYgKCBsZGFw
 X3VuYmluZF9leHQobGRhcC0+bGQsIE5VTEwsIE5VTEwpIDwgMCkNCi0rCWxkYXBfcGVycm9y
 KGxkYXAtPmxkLCAibGRhcF91bmJpbmQoKSIpOw0KLSsNCi0rICAgIGxkYXAtPmxkID0gTlVM
 TDsNCi0rICAgIEZMQUdfU0VUX0RJU0NPTk5FQ1RFRChsZGFwLT5mbGFncyk7DQotKw0KLSsg
 ICAgcmV0dXJuOw0KLSt9DQotKw0KLSsvKiBpbml0ICYmIGJpbmQgKi8NCi0raW50IGxkYXBf
 Y29ubmVjdChsZGFwX29wdF90ICogbGRhcCkgew0KLSsgICAgaW50IHZlcnNpb24gPSBMREFQ
 X1ZFUlNJT04zOw0KLSsNCi0rICAgIGlmICghbGRhcC0+c2VydmVycykNCi0rICAgICAgICBy
 ZXR1cm4gRkFJTFVSRTsNCi0rDQotKyAgICAvKiBDb25uZWN0aW9uIEluaXQgYW5kIHNldHVw
 ICovDQotKyAgICBsZGFwLT5sZCA9IGxkYXBfaW5pdChsZGFwLT5zZXJ2ZXJzLCBMREFQX1BP
 UlQpOw0KLSsgICAgaWYgKCFsZGFwLT5sZCkgew0KLSsgICAgICAgIGxkYXBfcGVycm9yKGxk
 YXAtPmxkLCAibGRhcF9pbml0KCkiKTsNCi0rICAgICAgICByZXR1cm4gRkFJTFVSRTsNCi0r
 ICAgIH0NCi0rDQotKyAgICBpZiAoIGxkYXBfc2V0X29wdGlvbihsZGFwLT5sZCwgTERBUF9P
 UFRfUFJPVE9DT0xfVkVSU0lPTiwgJnZlcnNpb24pICE9IExEQVBfT1BUX1NVQ0NFU1MpIHsN
 Ci0rICAgICAgICBsZGFwX3BlcnJvcihsZGFwLT5sZCwgImxkYXBfc2V0X29wdGlvbihMREFQ
 X09QVF9QUk9UT0NPTF9WRVJTSU9OKSIpOw0KLSsgICAgICAgIHJldHVybiBGQUlMVVJFOw0K
 LSsgICAgfQ0KLSsNCi0rICAgIC8qIFRpbWVvdXRzIHNldHVwICovDQotKyAgICBpZiAobGRh
 cF9zZXRfb3B0aW9uKGxkYXAtPmxkLCBMREFQX09QVF9ORVRXT1JLX1RJTUVPVVQsICZsZGFw
 LT5iX3RpbWVvdXQpICE9IExEQVBfU1VDQ0VTUykgew0KLSsgICAgICAgIGxkYXBfcGVycm9y
 KGxkYXAtPmxkLCAibGRhcF9zZXRfb3B0aW9uKExEQVBfT1BUX05FVFdPUktfVElNRU9VVCki
 KTsNCi0rICAgIH0NCi0rICAgIGlmIChsZGFwX3NldF9vcHRpb24obGRhcC0+bGQsIExEQVBf
 T1BUX1RJTUVPVVQsICZsZGFwLT5zX3RpbWVvdXQpICE9IExEQVBfU1VDQ0VTUykgew0KLSsg
 ICAgICAgIGxkYXBfcGVycm9yKGxkYXAtPmxkLCAibGRhcF9zZXRfb3B0aW9uKExEQVBfT1BU
 X1RJTUVPVVQpIik7DQotKyAgICB9DQotKw0KLSsgICAgLyogVExTIHN1cHBvcnQgKi8NCi0r
 ICAgIGlmICggKGxkYXAtPnRscyA9PSAtMSkgfHwgKGxkYXAtPnRscyA9PSAxKSApIHsNCi0r
 ICAgICAgICBpZiAobGRhcF9zdGFydF90bHNfcyhsZGFwLT5sZCwgTlVMTCwgTlVMTCApICE9
 IExEQVBfU1VDQ0VTUykgew0KLSsgICAgICAgICAgICAvKiBmYWlsZWQgdGhlbiByZWluaXQg
 dGhlIGluaXRpYWwgY29ubmVjdCAqLw0KLSsgICAgICAgICAgICBsZGFwX3BlcnJvcihsZGFw
 LT5sZCwgImxkYXBfY29ubmVjdDogKFRMUykgbGRhcF9zdGFydF90bHMoKSIpOw0KLSsgICAg
 ICAgICAgICBpZiAobGRhcC0+dGxzID09IDEpDQotKyAgICAgICAgICAgICAgICByZXR1cm4g
 RkFJTFVSRTsNCi0rDQotKyAgICAgICAgICAgIGxkYXAtPmxkID0gbGRhcF9pbml0KGxkYXAt
 PnNlcnZlcnMsIExEQVBfUE9SVCk7DQotKyAgICAgICAgICAgIGlmICghbGRhcC0+bGQpIHsg
 DQotKyAgICAgICAgICAgICAgICBsZGFwX3BlcnJvcihsZGFwLT5sZCwgImxkYXBfaW5pdCgp
 Iik7DQotKyAgICAgICAgICAgICAgICByZXR1cm4gRkFJTFVSRTsNCi0rICAgICAgICAgICAg
 fQ0KLSsNCi0rICAgICAgICAgICAgaWYgKCBsZGFwX3NldF9vcHRpb24obGRhcC0+bGQsIExE
 QVBfT1BUX1BST1RPQ09MX1ZFUlNJT04sICZ2ZXJzaW9uKSAhPSBMREFQX09QVF9TVUNDRVNT
 KSB7DQotKyAgICAgICAgICAgICAgICAgbGRhcF9wZXJyb3IobGRhcC0+bGQsICJsZGFwX3Nl
 dF9vcHRpb24oKSIpOw0KLSsgICAgICAgICAgICAgICAgIHJldHVybiBGQUlMVVJFOw0KLSsg
 ICAgICAgICAgICB9DQotKyAgICAgICAgfQ0KLSsgICAgfQ0KLSsNCi0rDQotKyAgICBpZiAo
 IGxkYXBfc2ltcGxlX2JpbmRfcyhsZGFwLT5sZCwgbGRhcC0+YmluZGRuLCBsZGFwLT5iaW5k
 cHcpICE9IExEQVBfU1VDQ0VTUykgew0KLSsgICAgICAgIGxkYXBfcGVycm9yKGxkYXAtPmxk
 LCAibGRhcF9zaW1wbGVfYmluZF9zKCkiKTsNCi0rICAgICAgICByZXR1cm4gRkFJTFVSRTsN
 Ci0rICAgIH0NCi0rDQotKyAgICAvKiBzYXlzIGl0IGlzIGNvbm5lY3RlZCAqLw0KLSsgICAg
 RkxBR19TRVRfQ09OTkVDVEVEKGxkYXAtPmZsYWdzKTsNCi0rDQotKyAgICByZXR1cm4gU1VD
 Q0VTUzsNCi0rfQ0KLSsNCi0rLyogbXVzdCBmcmVlIGFsbG9jYXRlZCByZXNzb3VyY2UgKi8N
 Ci0rc3RhdGljIGNoYXIgKiBsZGFwX2J1aWxkX2hvc3QoY2hhciAqaG9zdCwgaW50IHBvcnQp
 IHsNCi0rICAgIHVuc2lnbmVkIGludCBzaXplID0gc3RybGVuKGhvc3QpKzExOw0KLSsgICAg
 Y2hhciAqIGggPSAoY2hhciAqKSBjYWxsb2MgKHNpemUsIHNpemVvZihjaGFyKSk7DQotKyAg
 ICBpbnQgcmM7DQotKyAgICBpZiAoIWgpDQotKyAgICAgICAgIHJldHVybiBOVUxMOw0KLSsN
 Ci0rICAgIHJjID0gc25wcmludGYoaCwgc2l6ZSwgIiVzOiVkICIsIGhvc3QsIHBvcnQpOw0K
 LSsgICAgaWYgKHJjID09IC0xKQ0KLSsgICAgICAgIHJldHVybiBOVUxMOw0KLSsgICAgcmV0
 dXJuIGg7DQotK30NCi0rDQotK3N0YXRpYyBpbnQgbGRhcF9jb3VudF9ncm91cChjb25zdCBj
 aGFyICogaW5wdXQpIHsNCi0rICAgIGNvbnN0IGNoYXIgKiBjaGFyc2V0ID0gIiBcdCI7DQot
 KyAgICBjb25zdCBjaGFyICogcHRyID0gaW5wdXQ7DQotKyAgICB1bnNpZ25lZCBpbnQgY291
 bnQgPSAwOw0KLSsgICAgdW5zaWduZWQgaW50IG51bTsNCi0rDQotKyAgICBudW0gPSBzdHJz
 cG4ocHRyLCBjaGFyc2V0KTsNCi0rICAgIHB0ciArPSBudW07DQotKw0KLSsgICAgd2hpbGUg
 KChudW0gPSBzdHJjc3BuKHB0ciwgY2hhcnNldCkpKSB7DQotKyAgICBjb3VudCsrOw0KLSsg
 ICAgcHRyICs9IG51bTsNCi0rICAgIHB0cisrOw0KLSsgICAgfQ0KLSsNCi0rICAgIHJldHVy
 biBjb3VudDsNCi0rfQ0KLSsNCi0rLyogZm9ybWF0IGZpbHRlciAqLw0KLStjaGFyICogbGRh
 cF9wYXJzZV9ncm91cHMoY29uc3QgY2hhciAqIGdyb3Vwcykgew0KLSsgICAgdW5zaWduZWQg
 aW50IGJ1ZmZlcl9zaXplID0gRklMVEVSX0dST1VQX1NJWkUoZ3JvdXBzKTsNCi0rICAgIGNo
 YXIgKiBidWZmZXIgPSAoY2hhciAqKSBjYWxsb2MoYnVmZmVyX3NpemUsIHNpemVvZihjaGFy
 KSk7DQotKyAgICBjaGFyICogZyA9IE5VTEw7DQotKyAgICBjaGFyICogZ2FycmF5WzMyXTsN
 Ci0rICAgIHVuc2lnbmVkIGludCBpID0gMDsNCi0rDQotKyAgICBpZiAoKCFncm91cHMpfHwo
 IWJ1ZmZlcikpDQotKyAgICAgICAgcmV0dXJuIE5VTEw7DQotKw0KLSsgICAgZyA9IHN0cmR1
 cChncm91cHMpOw0KLSsgICAgaWYgKCFnKSB7DQotKyAgICAgICAgZnJlZShidWZmZXIpOw0K
 LSsgICAgICAgIHJldHVybiBOVUxMOw0KLSsgICAgfQ0KLSsNCi0rICAgIC8qIGZpcnN0IHNl
 cGFyYXRlIGludG8gbiB0b2tlbnMgKi8NCi0rICAgIGlmICggdG9rZW5pemUoZ2FycmF5LCBz
 aXplb2YoZ2FycmF5KS9zaXplb2YoKmdhcnJheSksIGcpIDwgMCkgew0KLSsgICAgICAgIGZy
 ZWUoZyk7DQotKyAgICAgICAgZnJlZShidWZmZXIpOw0KLSsgICAgICAgIHJldHVybiBOVUxM
 Ow0KLSsgICAgfQ0KLSsNCi0rICAgIC8qIGJ1aWxkIHRoZSBmaW5hbCBmaWx0ZXIgZm9ybWF0
 ICovDQotKyAgICBzdHJsY2F0KGJ1ZmZlciwgRklMVEVSX0dST1VQX1BSRUZJWCwgYnVmZmVy
 X3NpemUpOw0KLSsgICAgc3RybGNhdChidWZmZXIsIEZJTFRFUl9PUl9QUkVGSVgsIGJ1ZmZl
 cl9zaXplKTsNCi0rICAgIGkgPSAwOw0KLSsgICAgd2hpbGUgKGdhcnJheVtpXSkgew0KLSsg
 ICAgICAgIHN0cmxjYXQoYnVmZmVyLCBGSUxURVJfQ05fUFJFRklYLCBidWZmZXJfc2l6ZSk7
 DQotKyAgICAgICAgc3RybGNhdChidWZmZXIsIGdhcnJheVtpXSwgYnVmZmVyX3NpemUpOw0K
 LSsgICAgICAgIHN0cmxjYXQoYnVmZmVyLCBGSUxURVJfQ05fU1VGRklYLCBidWZmZXJfc2l6
 ZSk7DQotKyAgICAgICAgaSsrOw0KLSsgICAgfQ0KLSsgICAgc3RybGNhdChidWZmZXIsIEZJ
 TFRFUl9PUl9TVUZGSVgsIGJ1ZmZlcl9zaXplKTsNCi0rICAgIHN0cmxjYXQoYnVmZmVyLCBG
 SUxURVJfVUlEX0ZPUk1BVCwgYnVmZmVyX3NpemUpOw0KLSsgICAgc3RybGNhdChidWZmZXIs
 IEZJTFRFUl9HUk9VUF9TVUZGSVgsIGJ1ZmZlcl9zaXplKTsNCi0rDQotKyAgICBmcmVlKGcp
 Ow0KLSsgICAgcmV0dXJuIGJ1ZmZlcjsNCi0rfQ0KLSsNCi0rLyogYSBiaXQgZGlydHkgYnV0
 IGxlYWsgZnJlZSAgKi8NCi0rY2hhciAqIGxkYXBfcGFyc2Vfc2VydmVycyhjb25zdCBjaGFy
 ICogc2VydmVycykgew0KLSsgICAgY2hhciAqIHMgPSBOVUxMOw0KLSsgICAgY2hhciAqIHRt
 cCA9IE5VTEwsICp1cmxzWzMyXTsNCi0rICAgIHVuc2lnbmVkIGludCBudW0gPSAwICwgaSA9
 IDAgLCBhc2l6ZSA9IDA7DQotKyAgICBMREFQVVJMRGVzYyAqdXJsZFszMl07DQotKw0KLSsg
 ICAgaWYgKCFzZXJ2ZXJzKQ0KLSsgICAgICAgIHJldHVybiBOVUxMOw0KLSsNCi0rICAgIC8q
 IGxvY2FsIGNvcHkgb2YgdGhlIGFyZyAqLw0KLSsgICAgcyA9IHN0cmR1cChzZXJ2ZXJzKTsN
 Ci0rICAgIGlmICghcykNCi0rICAgICAgICByZXR1cm4gTlVMTDsNCi0rDQotKyAgICAvKiBm
 aXJzdCBzZXBhcmF0ZSBpbnRvIFVSTCB0b2tlbnMgKi8NCi0rICAgIGlmICggdG9rZW5pemUo
 dXJscywgc2l6ZW9mKHVybHMpL3NpemVvZigqdXJscyksIHMpIDwgMCkNCi0rICAgICAgICBy
 ZXR1cm4gTlVMTDsNCi0rDQotKyAgICBpID0gMDsNCi0rICAgIHdoaWxlICh1cmxzW2ldKSB7
 DQotKyAgICAgICAgaWYgKCEgbGRhcF9pc19sZGFwX3VybCh1cmxzW2ldKSB8fA0KLSsgICAg
 ICAgICAgIChsZGFwX3VybF9wYXJzZSh1cmxzW2ldLCAmdXJsZFtpXSkgIT0gMCkpIHsNCi0r
 ICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOw0KLSsgICAgICAgIH0NCi0rICAgICAgICBp
 Kys7DQotKyAgICB9DQotKw0KLSsgICAgLyogbm93IGZyZWUocykgKi8NCi0rICAgIGZyZWUg
 KHMpOw0KLSsNCi0rICAgIC8qIGhvdyBtdWNoIG1lbW9yeSBkbyB3ZSBuZWVkICovDQotKyAg
 ICBudW0gPSBpOw0KLSsgICAgZm9yIChpID0gMCA7IGkgPCBudW0gOyBpKyspDQotKyAgICAg
 ICAgYXNpemUgKz0gc3RybGVuKHVybGRbaV0tPmx1ZF9ob3N0KSsxMTsNCi0rDQotKyAgICAv
 KiBhbGxvYyAqLw0KLSsgICAgcyA9IChjaGFyICopIGNhbGxvYyggYXNpemUrMSAsIHNpemVv
 ZihjaGFyKSk7DQotKyAgICBpZiAoIXMpIHsNCi0rICAgICAgICBmb3IgKGkgPSAwIDsgaSA8
 IG51bSA7IGkrKykNCi0rICAgICAgICAgICAgbGRhcF9mcmVlX3VybGRlc2ModXJsZFtpXSk7
 DQotKyAgICAgICAgcmV0dXJuIE5VTEw7DQotKyAgICB9DQotKw0KLSsgICAgLyogdGhlbiBi
 dWlsZCB0aGUgZmluYWwgaG9zdCBzdHJpbmcgKi8NCi0rICAgIGZvciAoaSA9IDAgOyBpIDwg
 bnVtIDsgaSsrKSB7DQotKyAgICAgICAgLyogYnVpbHQgaG9zdCBwYXJ0ICovDQotKyAgICAg
 ICAgdG1wID0gbGRhcF9idWlsZF9ob3N0KHVybGRbaV0tPmx1ZF9ob3N0LCB1cmxkW2ldLT5s
 dWRfcG9ydCk7DQotKyAgICAgICAgc3RybmNhdChzLCB0bXAsIHN0cmxlbih0bXApKTsNCi0r
 ICAgICAgICBsZGFwX2ZyZWVfdXJsZGVzYyh1cmxkW2ldKTsNCi0rICAgICAgICBmcmVlKHRt
 cCk7DQotKyAgICB9DQotKw0KLSsgICAgcmV0dXJuIHM7DQotK30NCi0rDQotK3ZvaWQgbGRh
 cF9vcHRpb25zX3ByaW50KGxkYXBfb3B0X3QgKiBsZGFwKSB7DQotKyAgICBkZWJ1ZygibGRh
 cCBvcHRpb25zOiIpOw0KLSsgICAgZGVidWcoInNlcnZlcnM6ICVzIiwgbGRhcC0+c2VydmVy
 cyk7DQotKyAgICBpZiAobGRhcC0+dV9iYXNlZG4pDQotKyAgICAgICAgZGVidWcoInVzZXIg
 YmFzZWRuOiAlcyIsIGxkYXAtPnVfYmFzZWRuKTsNCi0rICAgIGlmIChsZGFwLT5nX2Jhc2Vk
 bikNCi0rICAgICAgICBkZWJ1ZygiZ3JvdXAgYmFzZWRuOiAlcyIsIGxkYXAtPmdfYmFzZWRu
 KTsNCi0rICAgIGlmIChsZGFwLT5iaW5kZG4pDQotKyAgICAgICAgZGVidWcoImJpbmRkbjog
 JXMiLCBsZGFwLT5iaW5kZG4pOw0KLSsgICAgaWYgKGxkYXAtPmJpbmRwdykNCi0rICAgICAg
 ICBkZWJ1ZygiYmluZHB3OiAlcyIsIGxkYXAtPmJpbmRwdyk7DQotKyAgICBpZiAobGRhcC0+
 c2dyb3VwKQ0KLSsgICAgICAgIGRlYnVnKCJncm91cDogJXMiLCBsZGFwLT5zZ3JvdXApOw0K
 LSsgICAgaWYgKGxkYXAtPmZpbHRlcikNCi0rICAgICAgICBkZWJ1ZygiZmlsdGVyOiAlcyIs
 IGxkYXAtPmZpbHRlcik7DQotK30NCi0rDQotK3ZvaWQgbGRhcF9vcHRpb25zX2ZyZWUobGRh
 cF9vcHRfdCAqIGwpIHsNCi0rICAgIGlmICghbCkNCi0rICAgICAgICByZXR1cm47DQotKyAg
 ICBpZiAobC0+c2VydmVycykNCi0rICAgICAgICBmcmVlKGwtPnNlcnZlcnMpOw0KLSsgICAg
 aWYgKGwtPnVfYmFzZWRuKQ0KLSsgICAgICAgIGZyZWUobC0+dV9iYXNlZG4pOw0KLSsgICAg
 aWYgKGwtPmdfYmFzZWRuKQ0KLSsgICAgICAgIGZyZWUobC0+Z19iYXNlZG4pOw0KLSsgICAg
 aWYgKGwtPmJpbmRkbikNCi0rICAgICAgICBmcmVlKGwtPmJpbmRkbik7DQotKyAgICBpZiAo
 bC0+YmluZHB3KQ0KLSsgICAgICAgIGZyZWUobC0+YmluZHB3KTsNCi0rICAgIGlmIChsLT5z
 Z3JvdXApDQotKyAgICAgICAgZnJlZShsLT5zZ3JvdXApOw0KLSsgICAgaWYgKGwtPmZncm91
 cCkNCi0rICAgICAgICBmcmVlKGwtPmZncm91cCk7DQotKyAgICBpZiAobC0+ZmlsdGVyKQ0K
 LSsgICAgICAgIGZyZWUobC0+ZmlsdGVyKTsNCi0rICAgIGlmIChsLT5sX2NvbmYpDQotKyAg
 ICAgICAgZnJlZShsLT5sX2NvbmYpOw0KLSsgICAgZnJlZShsKTsNCi0rfQ0KLSsNCi0rLyog
 ZnJlZSBrZXlzICovDQotK3ZvaWQgbGRhcF9rZXlzX2ZyZWUobGRhcF9rZXlfdCAqIGspIHsN
 Ci0rICAgIGxkYXBfdmFsdWVfZnJlZV9sZW4oay0+a2V5cyk7DQotKyAgICBmcmVlKGspOw0K
 LSsgICAgcmV0dXJuOw0KLSt9DQotKw0KLStsZGFwX2tleV90ICogbGRhcF9nZXR1c2Vya2V5
 KGxkYXBfb3B0X3QgKmwsIGNvbnN0IGNoYXIgKiB1c2VyKSB7DQotKyAgICBsZGFwX2tleV90
 ICogayA9IChsZGFwX2tleV90ICopIGNhbGxvYyAoMSwgc2l6ZW9mKGxkYXBfa2V5X3QpKTsN
 Ci0rICAgIExEQVBNZXNzYWdlICpyZXMsICplOw0KLSsgICAgY2hhciAqIGZpbHRlcjsNCi0r
 ICAgIGludCBpOw0KLSsNCi0rICAgIGlmICgoIWspIHx8ICghbCkpDQotKyAgICAgICAgIHJl
 dHVybiBOVUxMOw0KLSsNCi0rICAgIC8qIEFtIGkgc3RpbGwgY29ubmVjdGVkID8gUkVUUlkg
 biB0aW1lcyAqLw0KLSsgICAgLyogWFhYIFRPRE86IHNldHVwIHNvbWUgY29uZiB2YWx1ZSBm
 b3IgcmV0cnlpbmcgKi8NCi0rICAgIGlmICghKGwtPmZsYWdzICYgRkxBR19DT05ORUNURUQp
 KQ0KLSsgICAgICAgIGZvciAoaSA9IDAgOyBpIDwgMiA7IGkrKykNCi0rICAgICAgICAgICAg
 aWYgKGxkYXBfY29ubmVjdChsKSA9PSAwKQ0KLSsgICAgICAgICAgICAgICAgYnJlYWs7DQot
 Kw0KLSsgICAgLyogcXVpY2sgY2hlY2sgZm9yIGF0dGVtcHRzIHRvIGJlIGV2aWwgKi8NCi0r
 ICAgIGlmICgoc3RyY2hyKHVzZXIsICcoJykgIT0gTlVMTCkgfHwgKHN0cmNocih1c2VyLCAn
 KScpICE9IE5VTEwpIHx8DQotKyAgICAgICAgKHN0cmNocih1c2VyLCAnKicpICE9IE5VTEwp
 IHx8IChzdHJjaHIodXNlciwgJ1xcJykgIT0gTlVMTCkpDQotKyAgICAgICAgcmV0dXJuIE5V
 TEw7DQotKw0KLSsgICAgLyogYnVpbGQgIGZpbHRlciBmb3IgTERBUCByZXF1ZXN0ICovDQot
 KyAgICBSRVFVRVNUX1VTRVIoZmlsdGVyLCB1c2VyLCBsLT5maWx0ZXIpOw0KLSsNCi0rICAg
 IGlmICggbGRhcF9zZWFyY2hfc3QoIGwtPmxkLA0KLSsgICAgICAgIGwtPnVfYmFzZWRuLA0K
 LSsgICAgICAgIExEQVBfU0NPUEVfU1VCVFJFRSwNCi0rICAgICAgICBmaWx0ZXIsDQotKyAg
 ICAgICAgYXR0cnMsIDAsICZsLT5zX3RpbWVvdXQsICZyZXMgKSAhPSBMREFQX1NVQ0NFU1Mp
 IHsNCi0rICAgICAgICANCi0rICAgICAgICBsZGFwX3BlcnJvcihsLT5sZCwgImxkYXBfc2Vh
 cmNoX3N0KCkiKTsNCi0rDQotKyAgICAgICAgZnJlZShmaWx0ZXIpOw0KLSsgICAgICAgIGZy
 ZWUoayk7DQotKw0KLSsgICAgICAgIC8qIFhYWCBlcnJvciBvbiBzZWFyY2gsIHRpbWVvdXQg
 ZXRjLi4gY2xvc2UgYXNrIGZvciByZWNvbm5lY3QgKi8NCi0rICAgICAgICBsZGFwX2Nsb3Nl
 KGwpOw0KLSsNCi0rICAgICAgICByZXR1cm4gTlVMTDsNCi0rICAgIH0gDQotKw0KLSsgICAg
 LyogZnJlZSAqLw0KLSsgICAgZnJlZShmaWx0ZXIpOw0KLSsNCi0rICAgIC8qIGNoZWNrIGlm
 IGFueSByZXN1bHRzICovDQotKyAgICBpID0gbGRhcF9jb3VudF9lbnRyaWVzKGwtPmxkLHJl
 cyk7DQotKyAgICBpZiAoaSA8PSAwKSB7DQotKyAgICAgICAgbGRhcF9tc2dmcmVlKHJlcyk7
 DQotKyAgICAgICAgZnJlZShrKTsNCi0rICAgICAgICByZXR1cm4gTlVMTDsNCi0rICAgIH0N
 Ci0rDQotKyAgICBpZiAoaSA+IDEpDQotKyAgICAgICAgZGVidWcoIltMREFQXSBkdXBsaWNh
 dGUgZW50cmllcywgdXNpbmcgdGhlIEZJUlNUIGVudHJ5IHJldHVybmVkIik7DQotKw0KLSsg
 ICAgZSA9IGxkYXBfZmlyc3RfZW50cnkobC0+bGQsIHJlcyk7DQotKyAgICBrLT5rZXlzID0g
 bGRhcF9nZXRfdmFsdWVzX2xlbihsLT5sZCwgZSwgUFVCS0VZQVRUUik7DQotKyAgICBrLT5u
 dW0gPSBsZGFwX2NvdW50X3ZhbHVlc19sZW4oay0+a2V5cyk7DQotKw0KLSsgICAgbGRhcF9t
 c2dmcmVlKHJlcyk7DQotKyAgICByZXR1cm4gazsNCi0rfQ0KLSsNCi0rDQotKy8qIC0xIGlm
 IHRyb3VibGUNCi0rICAgMCBpZiB1c2VyIGlzIE5PVCBtZW1iZXIgb2YgY3VycmVudCBzZXJ2
 ZXIgZ3JvdXANCi0rICAgMSBpZiB1c2VyIElTIE1FTUJFUiBvZiBjdXJyZW50IHNlcnZlciBn
 cm91cCANCi0rICovDQotK2ludCBsZGFwX2lzbWVtYmVyKGxkYXBfb3B0X3QgKiBsLCBjb25z
 dCBjaGFyICogdXNlcikgew0KLSsgICAgTERBUE1lc3NhZ2UgKnJlczsNCi0rICAgIGNoYXIg
 KiBmaWx0ZXI7DQotKyAgICBpbnQgaTsNCi0rDQotKyAgICBpZiAoKCFsLT5zZ3JvdXApIHx8
 ICEobC0+Z19iYXNlZG4pKQ0KLSsgICAgICAgIHJldHVybiAxOw0KLSsNCi0rICAgIC8qIEFt
 IGkgc3RpbGwgY29ubmVjdGVkID8gUkVUUlkgbiB0aW1lcyAqLw0KLSsgICAgLyogWFhYIFRP
 RE86IHNldHVwIHNvbWUgY29uZiB2YWx1ZSBmb3IgcmV0cnlpbmcgKi8NCi0rICAgIGlmICgh
 KGwtPmZsYWdzICYgRkxBR19DT05ORUNURUQpKSANCi0rICAgICAgICBmb3IgKGkgPSAwIDsg
 aSA8IDIgOyBpKyspDQotKyAgICAgICAgICAgIGlmIChsZGFwX2Nvbm5lY3QobCkgPT0gMCkN
 Ci0rICAgICAgICAgICAgICAgICBicmVhazsNCi0rDQotKyAgICAvKiBxdWljayBjaGVjayBm
 b3IgYXR0ZW1wdHMgdG8gYmUgZXZpbCAqLw0KLSsgICAgaWYgKChzdHJjaHIodXNlciwgJygn
 KSAhPSBOVUxMKSB8fCAoc3RyY2hyKHVzZXIsICcpJykgIT0gTlVMTCkgfHwNCi0rICAgICAg
 ICAoc3RyY2hyKHVzZXIsICcqJykgIT0gTlVMTCkgfHwgKHN0cmNocih1c2VyLCAnXFwnKSAh
 PSBOVUxMKSkNCi0rICAgICAgICByZXR1cm4gRkFJTFVSRTsNCi0rDQotKyAgICAvKiBidWls
 ZCBmaWx0ZXIgZm9yIExEQVAgcmVxdWVzdCAqLw0KLSsgICAgUkVRVUVTVF9HUk9VUChmaWx0
 ZXIsIGwtPmZncm91cCwgdXNlcik7DQotKw0KLSsgICAgaWYgKGxkYXBfc2VhcmNoX3N0KCBs
 LT5sZCwgDQotKyAgICAgICAgbC0+Z19iYXNlZG4sDQotKyAgICAgICAgTERBUF9TQ09QRV9T
 VUJUUkVFLA0KLSsgICAgICAgIGZpbHRlciwNCi0rICAgICAgICBOVUxMLCAwLCAmbC0+c190
 aW1lb3V0LCAmcmVzKSAhPSBMREFQX1NVQ0NFU1MpIHsNCi0rICAgIA0KLSsgICAgICAgIGxk
 YXBfcGVycm9yKGwtPmxkLCAibGRhcF9zZWFyY2hfc3QoKSIpOw0KLSsNCi0rICAgICAgICBm
 cmVlKGZpbHRlcik7DQotKw0KLSsgICAgICAgIC8qIFhYWCBlcnJvciBvbiBzZWFyY2gsIHRp
 bWVvdXQgZXRjLi4gY2xvc2UgYXNrIGZvciByZWNvbm5lY3QgKi8NCi0rICAgICAgICBsZGFw
 X2Nsb3NlKGwpOw0KLSsNCi0rICAgICAgICByZXR1cm4gRkFJTFVSRTsNCi0rICAgIH0NCi0r
 DQotKyAgICBmcmVlKGZpbHRlcik7DQotKw0KLSsgICAgLyogY2hlY2sgaWYgYW55IHJlc3Vs
 dHMgKi8NCi0rICAgIGlmIChsZGFwX2NvdW50X2VudHJpZXMobC0+bGQsIHJlcykgPiAwKSB7
 DQotKyAgICAgICAgbGRhcF9tc2dmcmVlKHJlcyk7DQotKyAgICAgICAgcmV0dXJuIDE7DQot
 KyAgICB9DQotKw0KLSsgICAgbGRhcF9tc2dmcmVlKHJlcyk7DQotKyAgICByZXR1cm4gMDsN
 Ci0rfQ0KLSsNCi0rLyoNCi0rICogbGRhcC5jb25mIHNpbXBsZSBwYXJzZXINCi0rICogWFhY
 IFRPRE86ICBzYW5pdHkgY2hlY2tzDQotKyAqIG11c3QgZWl0aGVyDQotKyAqIC0gZnJlZSB0
 aGUgcHJldmlvdXMgbGRhcF9vcHRfYmVmb3JlIHJlcGxhY2luZyBlbnRyaWVzDQotKyAqIC0g
 ZnJlZSBlYWNoIG5lY2Vzc2FyeSBwcmV2aW91c2x5IHBhcnNlZCBlbGVtZW50cw0KLSsgKiBy
 ZXQ6DQotKyAqIC0xIG9uIEZBSUxVUkUsIDAgb24gU1VDQ0VTUw0KLSsgKi8NCi0raW50IGxk
 YXBfcGFyc2VfbGNvbmYobGRhcF9vcHRfdCAqIGwpIHsNCi0rICAgIEZJTEUgKiBsY2Q7IC8q
 IGxkYXAuY29uZiBkZXNjcmlwdG9yICovDQotKyAgICBjaGFyIGJ1ZltCVUZTSVpdOw0KLSsg
 ICAgY2hhciAqIHMgPSBOVUxMLCAqIGsgPSBOVUxMLCAqIHYgPSBOVUxMOw0KLSsgICAgaW50
 IGxpLCBsZW47DQotKw0KLSsgICAgbGNkID0gZm9wZW4gKGwtPmxfY29uZiwgInIiKTsNCi0r
 ICAgIGlmIChsY2QgPT0gTlVMTCkgew0KLSsgICAgICAgIC8qIGRlYnVnKCJDYW5ub3Qgb3Bl
 biAlcyIsIGwtPmxfY29uZik7ICovDQotKyAgICAgICAgcGVycm9yKCJsZGFwX3BhcnNlX2xj
 b25mKCkiKTsNCi0rICAgICAgICByZXR1cm4gRkFJTFVSRTsNCi0rICAgIH0NCi0rICAgIA0K
 LSsgICAgd2hpbGUgKGZnZXRzIChidWYsIHNpemVvZiAoYnVmKSwgbGNkKSAhPSBOVUxMKSB7
 DQotKw0KLSsgICAgICAgIGlmICgqYnVmID09ICdcbicgfHwgKmJ1ZiA9PSAnIycpDQotKyAg
 ICAgICAgICAgIGNvbnRpbnVlOw0KLSsNCi0rICAgICAgICBrID0gYnVmOw0KLSsgICAgICAg
 IHYgPSBrOw0KLSsgICAgICAgIHdoaWxlICgqdiAhPSAnXDAnICYmICp2ICE9ICcgJyAmJiAq
 diAhPSAnXHQnKQ0KLSsgICAgICAgICAgICB2Kys7DQotKw0KLSsgICAgICAgIGlmICgqdiA9
 PSAnXDAnKQ0KLSsgICAgICAgICAgICBjb250aW51ZTsNCi0rDQotKyAgICAgICAgKih2Kysp
 ID0gJ1wwJzsNCi0rDQotKyAgICAgICAgd2hpbGUgKCp2ID09ICcgJyB8fCAqdiA9PSAnXHQn
 KQ0KLSsgICAgICAgICAgICB2Kys7DQotKw0KLSsgICAgICAgIGxpID0gc3RybGVuICh2KSAt
 IDE7DQotKyAgICAgICAgd2hpbGUgKHZbbGldID09ICcgJyB8fCB2W2xpXSA9PSAnXHQnIHx8
 IHZbbGldID09ICdcbicpDQotKyAgICAgICAgICAgIC0tbGk7DQotKyAgICAgICAgdltsaSAr
 IDFdID0gJ1wwJzsNCi0rDQotKyAgICAgICAgaWYgKCFzdHJjYXNlY21wIChrLCAidXJpIikp
 IHsNCi0rICAgICAgICAgICAgaWYgKChsLT5zZXJ2ZXJzID0gbGRhcF9wYXJzZV9zZXJ2ZXJz
 KHYpKSA9PSBOVUxMKSB7DQotKyAgICAgICAgICAgICAgICBmYXRhbCgiZXJyb3IgaW4gbGRh
 cCBzZXJ2ZXJzIik7DQotKyAgICAgICAgICAgIHJldHVybiBGQUlMVVJFOw0KLSsgICAgICAg
 ICAgICB9DQotKw0KLSsgICAgICAgIH0NCi0rICAgICAgICBlbHNlIGlmICghc3RyY2FzZWNt
 cCAoaywgImJhc2UiKSkgeyANCi0rICAgICAgICAgICAgcyA9IHN0cmNociAodiwgJz8nKTsN
 Ci0rICAgICAgICAgICAgaWYgKHMgIT0gTlVMTCkgew0KLSsgICAgICAgICAgICAgICAgbGVu
 ID0gcyAtIHY7DQotKyAgICAgICAgICAgICAgICBsLT51X2Jhc2VkbiA9IG1hbGxvYyAobGVu
 ICsgMSk7DQotKyAgICAgICAgICAgICAgICBzdHJuY3B5IChsLT51X2Jhc2VkbiwgdiwgbGVu
 KTsNCi0rICAgICAgICAgICAgICAgIGwtPnVfYmFzZWRuW2xlbl0gPSAnXDAnOw0KLSsgICAg
 ICAgICAgICB9IGVsc2Ugew0KLSsgICAgICAgICAgICAgICAgbC0+dV9iYXNlZG4gPSBzdHJk
 dXAgKHYpOw0KLSsgICAgICAgICAgICB9DQotKyAgICAgICAgfQ0KLSsgICAgICAgIGVsc2Ug
 aWYgKCFzdHJjYXNlY21wIChrLCAiYmluZGRuIikpIHsNCi0rICAgICAgICAgICAgbC0+Ymlu
 ZGRuID0gc3RyZHVwICh2KTsNCi0rICAgICAgICB9DQotKyAgICAgICAgZWxzZSBpZiAoIXN0
 cmNhc2VjbXAgKGssICJiaW5kcHciKSkgew0KLSsgICAgICAgICAgICBsLT5iaW5kcHcgPSBz
 dHJkdXAgKHYpOw0KLSsgICAgICAgIH0NCi0rICAgICAgICBlbHNlIGlmICghc3RyY2FzZWNt
 cCAoaywgInRpbWVsaW1pdCIpKSB7DQotKyAgICAgICAgICAgIGwtPnNfdGltZW91dC50dl9z
 ZWMgPSBhdG9pICh2KTsNCi0rICAgICAgICAgICAgICAgIH0NCi0rICAgICAgICBlbHNlIGlm
 ICghc3RyY2FzZWNtcCAoaywgImJpbmRfdGltZWxpbWl0IikpIHsNCi0rICAgICAgICAgICAg
 bC0+Yl90aW1lb3V0LnR2X3NlYyA9IGF0b2kgKHYpOw0KLSsgICAgICAgIH0NCi0rICAgICAg
 ICBlbHNlIGlmICghc3RyY2FzZWNtcCAoaywgInNzbCIpKSB7DQotKyAgICAgICAgICAgIGlm
 ICghc3RyY2FzZWNtcCAodiwgInN0YXJ0X3RscyIpKQ0KLSsgICAgICAgICAgICAgICAgbC0+
 dGxzID0gMTsNCi0rICAgICAgICB9DQotKyAgICB9DQotKw0KLSsgICAgZmNsb3NlIChsY2Qp
 Ow0KLSsgICAgcmV0dXJuIFNVQ0NFU1M7DQotK30NCi0rDQotKyNlbmRpZiAvKiBXSVRIX0xE
 QVBfUFVCS0VZICovDQotZGlmZiAtTnVhciAtLWV4Y2x1ZGUgJyoub3JpZycgLS1leGNsdWRl
 ICcqLnJlaicgbGRhcGF1dGguaCBsZGFwYXV0aC5oDQotLS0tIGxkYXBhdXRoLmgJMTk2OS0x
 Mi0zMSAxNjowMDowMC4wMDAwMDAwMDAgLTA4MDANCi0rKysgbGRhcGF1dGguaAkyMDA4LTA4
 LTIzIDE1OjAyOjQ3LjAwMDAwMDAwMCAtMDcwMA0KLUBAIC0wLDAgKzEsMTI0IEBADQotKy8q
 DQotKyAqICRJZDogb3BlbnNzaC1scGstNC4zcDEtMC4zLjcucGF0Y2gsdiAxLjMgMjAwNi8w
 NC8xOCAxNToyOTowOSBlYXUgRXhwICQgDQotKyAqLw0KLSsNCi0rLyoNCi0rICoNCi0rICog
 Q29weXJpZ2h0IChjKSAyMDA1LCBFcmljIEFVR0UgPGVhdUBwaGVhci5vcmc+DQotKyAqIEFs
 bCByaWdodHMgcmVzZXJ2ZWQuDQotKyAqDQotKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
 aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRp
 b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
 bnMgYXJlIG1ldDoNCi0rICoNCi0rICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
 IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
 Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KLSsgKiBSZWRpc3Ry
 aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
 aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
 IGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
 cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQotKyAqIE5laXRoZXIgdGhlIG5h
 bWUgb2YgdGhlIHBoZWFyLm9yZyBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMg
 bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
 bSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
 aW9uLg0KLSsgKg0KLSsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
 UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
 IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCANCi0rICogQlVUIE5PVCBMSU1J
 VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
 RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIA0KLSsg
 KiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9S
 UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
 SUFMLCBFWEVNUExBUlksIA0KLSsgKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
 RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
 T0RTIE9SIFNFUlZJQ0VTOyANCi0rICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
 IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
 SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
 SVRZLCANCi0rICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
 KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
 RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4NCi0r
 ICoNCi0rICoNCi0rICovDQotKw0KLSsjaWZuZGVmIExEQVBBVVRIX0gNCi0rI2RlZmluZSBM
 REFQQVVUSF9IDQotKw0KLSsjZGVmaW5lIExEQVBfREVQUkVDQVRFRCAxDQotKw0KLSsjaW5j
 bHVkZSA8c3RyaW5nLmg+DQotKyNpbmNsdWRlIDx0aW1lLmg+DQotKyNpbmNsdWRlIDxsZGFw
 Lmg+DQotKyNpbmNsdWRlIDxsYmVyLmg+DQotKw0KLSsvKiB0b2tlbnMgaW4gdXNlIGZvciBj
 b25maWcgKi8NCi0rI2RlZmluZSBfREVGQVVMVF9MUEtfVE9LRU4gIlVzZUxQSyINCi0rI2Rl
 ZmluZSBfREVGQVVMVF9TUlZfVE9LRU4gIkxwa1NlcnZlcnMiDQotKyNkZWZpbmUgX0RFRkFV
 TFRfVVNSX1RPS0VOICJMcGtVc2VyRE4iDQotKyNkZWZpbmUgX0RFRkFVTFRfR1JQX1RPS0VO
 ICJMcGtHcm91cEROIg0KLSsjZGVmaW5lIF9ERUZBVUxUX0JETl9UT0tFTiAiTHBrQmluZERO
 Ig0KLSsjZGVmaW5lIF9ERUZBVUxUX0JQV19UT0tFTiAiTHBrQmluZFB3Ig0KLSsjZGVmaW5l
 IF9ERUZBVUxUX01ZR19UT0tFTiAiTHBrU2VydmVyR3JvdXAiDQotKyNkZWZpbmUgX0RFRkFV
 TFRfRklMX1RPS0VOICJMcGtGaWx0ZXIiDQotKyNkZWZpbmUgX0RFRkFVTFRfVExTX1RPS0VO
 ICJMcGtGb3JjZVRMUyINCi0rI2RlZmluZSBfREVGQVVMVF9CVElfVE9LRU4gIkxwa0JpbmRU
 aW1lbGltaXQiDQotKyNkZWZpbmUgX0RFRkFVTFRfU1RJX1RPS0VOICJMcGtTZWFyY2hUaW1l
 bGltaXQiDQotKyNkZWZpbmUgX0RFRkFVTFRfTERQX1RPS0VOICJMcGtMZGFwQ29uZiINCi0r
 DQotKy8qIGRlZmF1bHQgb3B0aW9ucyAqLw0KLSsjZGVmaW5lIF9ERUZBVUxUX0xQS19PTiAw
 DQotKyNkZWZpbmUgX0RFRkFVTFRfTFBLX1NFUlZFUlMgTlVMTA0KLSsjZGVmaW5lIF9ERUZB
 VUxUX0xQS19VRE4gTlVMTA0KLSsjZGVmaW5lIF9ERUZBVUxUX0xQS19HRE4gTlVMTA0KLSsj
 ZGVmaW5lIF9ERUZBVUxUX0xQS19CSU5ERE4gTlVMTA0KLSsjZGVmaW5lIF9ERUZBVUxUX0xQ
 S19CSU5EUFcgTlVMTA0KLSsjZGVmaW5lIF9ERUZBVUxUX0xQS19TR1JPVVAgTlVMTA0KLSsj
 ZGVmaW5lIF9ERUZBVUxUX0xQS19GSUxURVIgTlVMTA0KLSsjZGVmaW5lIF9ERUZBVUxUX0xQ
 S19UTFMgLTENCi0rI2RlZmluZSBfREVGQVVMVF9MUEtfQlRJTUVPVVQgMTANCi0rI2RlZmlu
 ZSBfREVGQVVMVF9MUEtfU1RJTUVPVVQgMTANCi0rI2RlZmluZSBfREVGQVVMVF9MUEtfTERQ
 IE5VTEwNCi0rDQotKy8qIGZsYWdzICovDQotKyNkZWZpbmUgRkxBR19FTVBUWQkgICAgMHgw
 MDAwMDAwMA0KLSsjZGVmaW5lIEZMQUdfQ09OTkVDVEVECSAgICAweDAwMDAwMDAxDQotKw0K
 LSsvKiBmbGFnIG1hY3JvcyAqLw0KLSsjZGVmaW5lIEZMQUdfU0VUX0VNUFRZKHgpCQl4Jj0o
 RkxBR19FTVBUWSkNCi0rI2RlZmluZSBGTEFHX1NFVF9DT05ORUNURUQoeCkJCXh8PShGTEFH
 X0NPTk5FQ1RFRCkNCi0rI2RlZmluZSBGTEFHX1NFVF9ESVNDT05ORUNURUQoeCkJeCY9fihG
 TEFHX0NPTk5FQ1RFRCkNCi0rDQotKy8qIGRlZmluZXMgKi8NCi0rI2RlZmluZSBGQUlMVVJF
 IC0xDQotKyNkZWZpbmUgU1VDQ0VTUyAwDQotKyNkZWZpbmUgUFVCS0VZQVRUUiAic3NoUHVi
 bGljS2V5Ig0KLSsNCi0rLyogDQotKyAqDQotKyAqIGRlZmluZWQgZmlsZXMgcGF0aCANCi0r
 ICogKHNob3VsZCBiZSByZWxvY2F0ZWQgdG8gcGF0aG5hbWVzLmgsDQotKyAqIGlmIG9uZSBk
 YXkgaXQncyBpbmNsdWRlZCB3aXRoaW4gdGhlIHRyZWUpIA0KLSsgKg0KLSsgKi8NCi0rI2Rl
 ZmluZSBfUEFUSF9MREFQX0NPTkZJR19GSUxFICIvZXRjL2xkYXAuY29uZiINCi0rDQotKy8q
 IHN0cnVjdHVyZXMgKi8NCi0rdHlwZWRlZiBzdHJ1Y3QgbGRhcF9vcHRpb25zIHsNCi0rICAg
 IGludCBvbjsJCQkvKiBVc2UgaXQgb3IgTk9UICovDQotKyAgICBMREFQICogbGQ7CQkJLyog
 TERBUCBmaWxlIGRlc2MgKi8NCi0rICAgIGNoYXIgKiBzZXJ2ZXJzOwkJLyogcGFyc2VkIHNl
 cnZlcnMgZm9yIGxkYXBsaWIgZmFpbG92ZXIgaGFuZGxpbmcgKi8NCi0rICAgIGNoYXIgKiB1
 X2Jhc2VkbjsJCS8qIHVzZXIgYmFzZWRuICovDQotKyAgICBjaGFyICogZ19iYXNlZG47CQkv
 KiBncm91cCBiYXNlZG4gKi8NCi0rICAgIGNoYXIgKiBiaW5kZG47CQkvKiBiaW5kZG4gKi8N
 Ci0rICAgIGNoYXIgKiBiaW5kcHc7CQkvKiBiaW5kIHBhc3N3b3JkICovDQotKyAgICBjaGFy
 ICogc2dyb3VwOwkJLyogc2VydmVyIGdyb3VwICovDQotKyAgICBjaGFyICogZmdyb3VwOwkJ
 LyogZ3JvdXAgZmlsdGVyICovDQotKyAgICBjaGFyICogZmlsdGVyOwkJLyogYWRkaXRpb25h
 bCBmaWx0ZXIgKi8NCi0rICAgIGNoYXIgKiBsX2NvbmY7CQkvKiB1c2UgbGRhcC5jb25mICov
 DQotKyAgICBpbnQgdGxzOwkJCS8qIFRMUyBvbmx5ICovDQotKyAgICBzdHJ1Y3QgdGltZXZh
 bCBiX3RpbWVvdXQ7ICAgLyogYmluZCB0aW1lb3V0ICovDQotKyAgICBzdHJ1Y3QgdGltZXZh
 bCBzX3RpbWVvdXQ7ICAgLyogc2VhcmNoIHRpbWVvdXQgKi8NCi0rICAgIHVuc2lnbmVkIGlu
 dCBmbGFnczsJCS8qIG1pc2MgZmxhZ3MgKHJlY29ubmVjdGlvbiwgZnV0dXJlIHVzZT8pICov
 DQotK30gbGRhcF9vcHRfdDsNCi0rDQotK3R5cGVkZWYgc3RydWN0IGxkYXBfa2V5cyB7DQot
 KyAgICBzdHJ1Y3QgYmVydmFsICoqIGtleXM7CS8qIHRoZSBwdWJsaWMga2V5cyByZXRyaWV2
 ZWQgKi8NCi0rICAgIHVuc2lnbmVkIGludCBudW07CQkvKiBudW1iZXIgb2Yga2V5cyAqLw0K
 LSt9IGxkYXBfa2V5X3Q7DQotKw0KLSsNCi0rLyogZnVuY3Rpb24gaGVhZGVycyAqLw0KLSt2
 b2lkIGxkYXBfY2xvc2UobGRhcF9vcHRfdCAqKTsNCi0raW50IGxkYXBfY29ubmVjdChsZGFw
 X29wdF90ICopOw0KLStjaGFyICogbGRhcF9wYXJzZV9ncm91cHMoY29uc3QgY2hhciAqKTsN
 Ci0rY2hhciAqIGxkYXBfcGFyc2Vfc2VydmVycyhjb25zdCBjaGFyICopOw0KLSt2b2lkIGxk
 YXBfb3B0aW9uc19wcmludChsZGFwX29wdF90ICopOw0KLSt2b2lkIGxkYXBfb3B0aW9uc19m
 cmVlKGxkYXBfb3B0X3QgKik7DQotK3ZvaWQgbGRhcF9rZXlzX2ZyZWUobGRhcF9rZXlfdCAq
 KTsNCi0raW50IGxkYXBfcGFyc2VfbGNvbmYobGRhcF9vcHRfdCAqKTsNCi0rbGRhcF9rZXlf
 dCAqIGxkYXBfZ2V0dXNlcmtleShsZGFwX29wdF90ICosIGNvbnN0IGNoYXIgKik7DQotK2lu
 dCBsZGFwX2lzbWVtYmVyKGxkYXBfb3B0X3QgKiwgY29uc3QgY2hhciAqKTsNCi0rDQotKyNl
 bmRpZg0KLWRpZmYgLU51YXIgLS1leGNsdWRlICcqLm9yaWcnIC0tZXhjbHVkZSAnKi5yZWon
 IGxway11c2VyLWV4YW1wbGUudHh0IGxway11c2VyLWV4YW1wbGUudHh0DQotLS0tIGxway11
 c2VyLWV4YW1wbGUudHh0CTE5NjktMTItMzEgMTY6MDA6MDAuMDAwMDAwMDAwIC0wODAwDQot
 KysrIGxway11c2VyLWV4YW1wbGUudHh0CTIwMDgtMDgtMjMgMTU6MDI6NDcuMDAwMDAwMDAw
 IC0wNzAwDQotQEAgLTAsMCArMSwxMTcgQEANCi0rDQotK1Bvc3QgdG8gTUwgLT4gVXNlciBN
 YWRlIFF1aWNrIEluc3RhbGwgRG9jLg0KLStDb250cmlidXRpb24gZnJvbSBKb2huIExhbmUg
 PGpvaG5AbGFuZS51ay5uZXQ+DQotKw0KLSsrKysrKysrKysrKysrKysrKysrKysrKysrKysr
 KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQotKw0K
 LStPcGVuU1NIIExEQVAga2V5c3RvcmUgUGF0Y2gNCi0rPT09PT09PT09PT09PT09PT09PT09
 PT09PT09DQotKw0KLStOT1RFOiB0aGVzZSBub3RlcyBhcmUgYSB0cmFuc2NyaXB0IG9mIGEg
 c3BlY2lmaWMgaW5zdGFsbGF0aW9uDQotKyAgICAgIHRoZXkgd29yayBmb3IgbWUsIHlvdXIg
 c3BlY2lmaWNzIG1heSBiZSBkaWZmZXJlbnQhDQotKyAgICAgIGZyb20gSm9obiBMYW5lIE1h
 cmNoIDE3dGggMjAwNSAgICAgICAgIGpvaG5AbGFuZS51ay5uZXQNCi0rDQotK1RoaXMgaXMg
 YSBwYXRjaCB0byBPcGVuU1NIIDQuMHAxIHRvIGFsbG93IGl0IHRvIG9idGFpbiB1c2Vycycg
 cHVibGljIGtleXMNCi0rZnJvbSB0aGVpciBMREFQIHJlY29yZCBhcyBhbiBhbHRlcm5hdGl2
 ZSB0byB+Ly5zc2gvYXV0aG9yaXplZF9rZXlzLg0KLSsNCi0rKEFzc3VtaW5nIGhlcmUgdGhh
 dCBuZWNlc3NhcnkgYnVpbGQgc3R1ZmYgaXMgaW4gJEJVSUxEKQ0KLSsNCi0rY2QgJEJVSUxE
 L29wZW5zc2gtNC4wcDENCi0rcGF0Y2ggLU5wMSAtaSAkQlVJTEQvb3BlbnNzaC1scGstNC4w
 cDEtMC4zLnBhdGNoDQotK21rZGlyIC1wIC92YXIvZW1wdHkgJiYNCi0rLi9jb25maWd1cmUg
 LS1wcmVmaXg9L3VzciAtLXN5c2NvbmZkaXI9L2V0Yy9zc2ggXA0KLSsgICAgLS1saWJleGVj
 ZGlyPS91c3Ivc2JpbiAtLXdpdGgtbWQ1LXBhc3N3b3JkcyAtLXdpdGgtcGFtIFwNCi0rICAg
 IC0td2l0aC1saWJzPSItbGxkYXAiIC0td2l0aC1jcHBmbGFncz0iLURXSVRIX0xEQVBfUFVC
 S0VZIg0KLStOb3cgZG8uDQotK21ha2UgJiYNCi0rbWFrZSBpbnN0YWxsDQotKw0KLStBZGQg
 dGhlIGZvbGxvd2luZyBjb25maWcgdG8gL2V0Yy9zc2gvc3NoX2NvbmZpZw0KLStVc2VMUEsg
 eWVzDQotK0xwa1NlcnZlcnMgbGRhcDovL215aG9zdC5teWRvbWFpbi5jb20NCi0rTHBrVXNl
 ckROICBvdT1QZW9wbGUsZGM9bXlkb21haW4sZGM9Y29tDQotKw0KLStXZSBuZWVkIHRvIHRl
 bGwgc3NoZCBhYm91dCB0aGUgU1NMIGtleXMgZHVyaW5nIGJvb3QsIGFzIHJvb3Qncw0KLStl
 bnZpcm9ubWVudCBkb2VzIG5vdCBleGlzdCBhdCB0aGF0IHRpbWUuIEVkaXQgL2V0Yy9yYy5k
 L2luaXQuZC9zc2hkLg0KLStDaGFuZ2UgdGhlIHN0YXJ0dXAgY29kZSBmcm9tIHRoaXM6DQot
 KyAgICAgICAgICAgICAgICBlY2hvICJTdGFydGluZyBTU0ggU2VydmVyLi4uIg0KLSsgICAg
 ICAgICAgICAgICAgbG9hZHByb2MgL3Vzci9zYmluL3NzaGQNCi0rICAgICAgICAgICAgICAg
 IDs7DQotK3RvIHRoaXM6DQotKyAgICAgICAgICAgICAgICBlY2hvICJTdGFydGluZyBTU0gg
 U2VydmVyLi4uIg0KLSsgICAgICAgICAgICAgICAgTERBUFJDPSIvcm9vdC8ubGRhcHJjIiBs
 b2FkcHJvYyAvdXNyL3NiaW4vc3NoZA0KLSsgICAgICAgICAgICAgICAgOzsNCi0rDQotK1Jl
 LXN0YXJ0IHRoZSBzc2hkIGRhZW1vbjoNCi0rL2V0Yy9yYy5kL2luaXQuZC9zc2hkIHJlc3Rh
 cnQNCi0rDQotK0luc3RhbGwgdGhlIGFkZGl0aW9uYWwgTERBUCBzY2hlbWENCi0rY3AgJEJV
 SUxEL29wZW5zc2gtbHBrLTAuMi5zY2hlbWEgIC9ldGMvb3BlbmxkYXAvc2NoZW1hL29wZW5z
 c2guc2NoZW1hDQotKw0KLStOb3cgYWRkIHRoZSBvcGVuU1NIIExEQVAgc2NoZW1hIHRvIC9l
 dGMvb3BlbmxkYXAvc2xhcGQuY29uZjoNCi0rQWRkIHRoZSBmb2xsb3dpbmcgdG8gdGhlIGVu
 ZCBvZiB0aGUgZXhpc3RpbmcgYmxvY2sgb2Ygc2NoZW1hIGluY2x1ZGVzDQotK2luY2x1ZGUg
 ICAgICAgICAvZXRjL29wZW5sZGFwL3NjaGVtYS9vcGVuc3NoLnNjaGVtYQ0KLSsNCi0rUmUt
 c3RhcnQgdGhlIExEQVAgc2VydmVyOg0KLSsvZXRjL3JjLmQvaW5pdC5kL3NsYXBkIHJlc3Rh
 cnQNCi0rDQotK1RvIGFkZCBvbmUgb3IgbW9yZSBwdWJsaWMga2V5cyB0byBhIHVzZXIsIGVn
 ICJ0ZXN0dXNlciIgOg0KLStsZGFwc2VhcmNoIC14IC1XIC1aIC1MTEwgLWIgInVpZD10ZXN0
 dXNlcixvdT1QZW9wbGUsZGM9bXlkb21haW4sZGM9Y29tIiAtRA0KLSsidWlkPXRlc3R1c2Vy
 LG91PVBlb3BsZSxkYz1teWRvbWFpbixkYz1jb20iID4gL3RtcC90ZXN0dXNlcg0KLSsNCi0r
 YXBwZW5kIHRoZSBmb2xsb3dpbmcgdG8gdGhpcyAvdG1wL3Rlc3R1c2VyIGZpbGUNCi0rb2Jq
 ZWN0Y2xhc3M6IGxkYXBQdWJsaWNLZXkNCi0rc3NoUHVibGljS2V5OiBzc2gtcnNhDQotK0FB
 QUFCM056YUMxeWMyRUFBQUFCSlFBQUFJQjNkc3J3cVhxRDdFNHpZWXJ4d2RES0JVUXhLTWlv
 WHk5cHhGVmFpNjRrQVB4alU5S1MNCi0rcUlvN1Fma2pzbGZzamZsa3NqZmxkZmtqc2xkZmpM
 WC81emt6Um1UMjhJNXBpR3p1blB2MTdTODl6OFh3U3N1QW9SMXQ4NnQrNWRsSQ0KLSs3ZVpF
 L2dWYm4yVVFrUXE3K2tkRFRTMnlYVjZWbkM1Mk4va0tMRzNjaUJrQkF3PT0gR2VuZXJhbCBQ
 dXJwb3NlIFJTQSBLZXkNCi0rDQotK1RoZW4gZG8gYSBtb2RpZnk6DQotK2xkYXBtb2RpZnkg
 LXggLUQgInVpZD10ZXN0dXNlcixvdT1QZW9wbGUsZGM9bXlkb21haW4sZGM9Y29tIiAtVyAt
 Zg0KLSsvdG1wL3Rlc3R1c2VyIC1aDQotK0VudGVyIExEQVAgUGFzc3dvcmQ6DQotK21vZGlm
 eWluZyBlbnRyeSAidWlkPXRlc3R1c2VyLG91PVBlb3BsZSxkYz1teWRvbWFpbixkYz1jb20i
 DQotK0FuZCBjaGVjayB0aGUgbW9kaWZ5IGlzIG9rOg0KLStsZGFwc2VhcmNoIC14IC1XIC1a
 IC1iICJ1aWQ9dGVzdHVzZXIsb3U9UGVvcGxlLGRjPW15ZG9tYWluLGRjPWNvbSIgLUQNCi0r
 InVpZD10ZXN0dXNlcixvdT1QZW9wbGUsZGM9bXlkb21haW4sZGM9Y29tIg0KLStFbnRlciBM
 REFQIFBhc3N3b3JkOg0KLSsjIGV4dGVuZGVkIExESUYNCi0rIw0KLSsjIExEQVB2Mw0KLSsj
 IGJhc2UgPHVpZD10ZXN0dXNlcixvdT1QZW9wbGUsZGM9bXlkb21haW4sZGM9Y29tPiB3aXRo
 IHNjb3BlIHN1Yg0KLSsjIGZpbHRlcjogKG9iamVjdGNsYXNzPSopDQotKyMgcmVxdWVzdGlu
 ZzogQUxMDQotKyMNCi0rDQotKyMgdGVzdHVzZXIsIFBlb3BsZSwgbXlkb21haW4uY29tDQot
 K2RuOiB1aWQ9dGVzdHVzZXIsb3U9UGVvcGxlLGRjPW15ZG9tYWluLGRjPWNvbQ0KLSt1aWQ6
 IHRlc3R1c2VyDQotK2NuOiB0ZXN0dXNlcg0KLStvYmplY3RDbGFzczogYWNjb3VudA0KLStv
 YmplY3RDbGFzczogcG9zaXhBY2NvdW50DQotK29iamVjdENsYXNzOiB0b3ANCi0rb2JqZWN0
 Q2xhc3M6IHNoYWRvd0FjY291bnQNCi0rb2JqZWN0Q2xhc3M6IGxkYXBQdWJsaWNLZXkNCi0r
 c2hhZG93TGFzdENoYW5nZTogMTI3NTcNCi0rc2hhZG93TWF4OiA5OTk5OQ0KLStzaGFkb3dX
 YXJuaW5nOiA3DQotK2xvZ2luU2hlbGw6IC9iaW4vYmFzaA0KLSt1aWROdW1iZXI6IDk5OTkN
 Ci0rZ2lkTnVtYmVyOiA1MDENCi0raG9tZURpcmVjdG9yeTogL2hvbWUvdGVzdHVzZXINCi0r
 dXNlclBhc3N3b3JkOjogZTFOVFNFRjlVRGd3VjFobk0xVmpVRFJKSzBrMVluRmlMMWQ0WlVK
 T2JYbFpaM1ozVVRVPQ0KLStzc2hQdWJsaWNLZXk6IHNzaC1yc2ENCi0rQUFBQUIzTnphQzF5
 YzJFQUFBQUJKUUFBQUlCM2RzcndxWHFEN0U0ellZcnh3ZERLQlVReEtNaW9YeTlweEZWYWk2
 NGtBUHhqVTlLU3FJbzdRZmtqc2xmc2pmbGtzamZsZGZranNsZGZqTFgvNXprelJtVDI4STVw
 aUd6dW5QdjE3Uzg5eg0KLSs4WHdTc3VBb1IxdDg2dCs1ZGxJN2VaRS9nVmJuMlVRa1FxNytr
 ZERUUzJ5WFY2Vm5DNTJOL2tLTEczY2lCa0JBdz09IEdlbmVyYWwgUHVycG9zZSBSU0EgS2V5
 DQotKw0KLSsjIHNlYXJjaCByZXN1bHQNCi0rc2VhcmNoOiAzDQotK3Jlc3VsdDogMCBTdWNj
 ZXNzDQotKw0KLSsjIG51bVJlc3BvbnNlczogMg0KLSsjIG51bUVudHJpZXM6IDENCi0rDQot
 K05vdyBzdGFydCBhIHNzaCBzZXNzaW9uIHRvIHVzZXIgInRlc3R1c2VyIiBmcm9tIHVzdWFs
 IHNzaCBjbGllbnQgKGUuZy4NCi0rcHVUVFkpLiBMb2dpbiBzaG91bGQgc3VjY2VlZC4NCi0r
 DQotKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
 KysrKysrKysrKysrKysrKysrKysrKysrKysNCi1kaWZmIC1OdWFyIC0tZXhjbHVkZSAnKi5v
 cmlnJyAtLWV4Y2x1ZGUgJyoucmVqJyBNYWtlZmlsZS5pbiBNYWtlZmlsZS5pbg0KLS0tLSBN
 YWtlZmlsZS5pbgkyMDA4LTA3LTA4IDA3OjIxOjEyLjAwMDAwMDAwMCAtMDcwMA0KLSsrKyBN
 YWtlZmlsZS5pbgkyMDA4LTA4LTIzIDE1OjAyOjQ3LjAwMDAwMDAwMCAtMDcwMA0KLUBAIC04
 Niw3ICs4Niw3IEBADQotIAlhdXRoLWtyYjUubyBcDQotIAlhdXRoMi1nc3MubyBnc3Mtc2Vy
 di5vIGdzcy1zZXJ2LWtyYjUubyBcDQotIAlsb2dpbnJlYy5vIGF1dGgtcGFtLm8gYXV0aC1z
 aGFkb3cubyBhdXRoLXNpYS5vIG1kNWNyeXB0Lm8gXA0KLS0JYXVkaXQubyBhdWRpdC1ic20u
 byBwbGF0Zm9ybS5vIHNmdHAtc2VydmVyLm8gc2Z0cC1jb21tb24ubw0KLSsJYXVkaXQubyBh
 dWRpdC1ic20ubyBwbGF0Zm9ybS5vIGxkYXBhdXRoLm8gc2Z0cC1zZXJ2ZXIubyBzZnRwLWNv
 bW1vbi5vDQotIA0KLSBNQU5QQUdFUwk9IG1vZHVsaS41Lm91dCBzY3AuMS5vdXQgc3NoLWFk
 ZC4xLm91dCBzc2gtYWdlbnQuMS5vdXQgc3NoLWtleWdlbi4xLm91dCBzc2gta2V5c2Nhbi4x
 Lm91dCBzc2guMS5vdXQgc3NoZC44Lm91dCBzZnRwLXNlcnZlci44Lm91dCBzZnRwLjEub3V0
 IHNzaC1yYW5kLWhlbHBlci44Lm91dCBzc2gta2V5c2lnbi44Lm91dCBzc2hkX2NvbmZpZy41
 Lm91dCBzc2hfY29uZmlnLjUub3V0DQotIE1BTlBBR0VTX0lOCT0gbW9kdWxpLjUgc2NwLjEg
 c3NoLWFkZC4xIHNzaC1hZ2VudC4xIHNzaC1rZXlnZW4uMSBzc2gta2V5c2Nhbi4xIHNzaC4x
 IHNzaGQuOCBzZnRwLXNlcnZlci44IHNmdHAuMSBzc2gtcmFuZC1oZWxwZXIuOCBzc2gta2V5
 c2lnbi44IHNzaGRfY29uZmlnLjUgc3NoX2NvbmZpZy41DQotZGlmZiAtTnVhciAtLWV4Y2x1
 ZGUgJyoub3JpZycgLS1leGNsdWRlICcqLnJlaicgb3BlbnNzaC1scGtfb3BlbmxkYXAuc2No
 ZW1hIG9wZW5zc2gtbHBrX29wZW5sZGFwLnNjaGVtYQ0KLS0tLSBvcGVuc3NoLWxwa19vcGVu
 bGRhcC5zY2hlbWEJMTk2OS0xMi0zMSAxNjowMDowMC4wMDAwMDAwMDAgLTA4MDANCi0rKysg
 b3BlbnNzaC1scGtfb3BlbmxkYXAuc2NoZW1hCTIwMDgtMDgtMjMgMTU6MDI6NDcuMDAwMDAw
 MDAwIC0wNzAwDQotQEAgLTAsMCArMSwxOSBAQA0KLSsjDQotKyMgTERBUCBQdWJsaWMgS2V5
 IFBhdGNoIHNjaGVtYSBmb3IgdXNlIHdpdGggb3BlbnNzaC1sZGFwcHVia2V5DQotKyMgQXV0
 aG9yOiBFcmljIEFVR0UgPGVhdUBwaGVhci5vcmc+DQotKyMgDQotKyMgQmFzZWQgb24gdGhl
 IHByb3Bvc2FsIG9mIDogTWFyayBSdWlqdGVyDQotKyMNCi0rDQotKw0KLSsjIG9jdGV0U3Ry
 aW5nIFNZTlRBWA0KLSthdHRyaWJ1dGV0eXBlICggMS4zLjYuMS40LjEuMjQ1NTIuNTAwLjEu
 MS4xLjEzIE5BTUUgJ3NzaFB1YmxpY0tleScgDQotKwlERVNDICdNQU5EQVRPUlk6IE9wZW5T
 U0ggUHVibGljIGtleScgDQotKwlFUVVBTElUWSBvY3RldFN0cmluZ01hdGNoDQotKwlTWU5U
 QVggMS4zLjYuMS40LjEuMTQ2Ni4xMTUuMTIxLjEuNDAgKQ0KLSsNCi0rIyBwcmludGFibGVT
 dHJpbmcgU1lOVEFYIHllc3xubw0KLStvYmplY3RjbGFzcyAoIDEuMy42LjEuNC4xLjI0NTUy
 LjUwMC4xLjEuMi4wIE5BTUUgJ2xkYXBQdWJsaWNLZXknIFNVUCB0b3AgQVVYSUxJQVJZDQot
 KwlERVNDICdNQU5EQVRPUlk6IE9wZW5TU0ggTFBLIG9iamVjdGNsYXNzJw0KLSsJTVVTVCAo
 IHNzaFB1YmxpY0tleSAkIHVpZCApIA0KLSsJKQ0KLWRpZmYgLU51YXIgLS1leGNsdWRlICcq
 Lm9yaWcnIC0tZXhjbHVkZSAnKi5yZWonIG9wZW5zc2gtbHBrX3N1bi5zY2hlbWEgb3BlbnNz
 aC1scGtfc3VuLnNjaGVtYQ0KLS0tLSBvcGVuc3NoLWxwa19zdW4uc2NoZW1hCTE5NjktMTIt
 MzEgMTY6MDA6MDAuMDAwMDAwMDAwIC0wODAwDQotKysrIG9wZW5zc2gtbHBrX3N1bi5zY2hl
 bWEJMjAwOC0wOC0yMyAxNTowMjo0Ny4wMDAwMDAwMDAgLTA3MDANCi1AQCAtMCwwICsxLDIx
 IEBADQotKyMNCi0rIyBMREFQIFB1YmxpYyBLZXkgUGF0Y2ggc2NoZW1hIGZvciB1c2Ugd2l0
 aCBvcGVuc3NoLWxkYXBwdWJrZXkNCi0rIyBBdXRob3I6IEVyaWMgQVVHRSA8ZWF1QHBoZWFy
 Lm9yZz4NCi0rIyANCi0rIyBTY2hlbWEgZm9yIFN1biBEaXJlY3RvcnkgU2VydmVyLg0KLSsj
 IEJhc2VkIG9uIHRoZSBvcmlnaW5hbCBzY2hlbWEsIG1vZGlmaWVkIGJ5IFN0ZWZhbiBGaXNj
 aGVyLg0KLSsjDQotKw0KLStkbjogY249c2NoZW1hDQotKw0KLSsjIG9jdGV0U3RyaW5nIFNZ
 TlRBWA0KLSthdHRyaWJ1dGVUeXBlczogKCAxLjMuNi4xLjQuMS4yNDU1Mi41MDAuMS4xLjEu
 MTMgTkFNRSAnc3NoUHVibGljS2V5JyANCi0rCURFU0MgJ01BTkRBVE9SWTogT3BlblNTSCBQ
 dWJsaWMga2V5JyANCi0rCUVRVUFMSVRZIG9jdGV0U3RyaW5nTWF0Y2gNCi0rCVNZTlRBWCAx
 LjMuNi4xLjQuMS4xNDY2LjExNS4xMjEuMS40MCApDQotKw0KLSsjIHByaW50YWJsZVN0cmlu
 ZyBTWU5UQVggeWVzfG5vDQotK29iamVjdENsYXNzZXM6ICggMS4zLjYuMS40LjEuMjQ1NTIu
 NTAwLjEuMS4yLjAgTkFNRSAnbGRhcFB1YmxpY0tleScgU1VQIHRvcCBBVVhJTElBUlkNCi0r
 CURFU0MgJ01BTkRBVE9SWTogT3BlblNTSCBMUEsgb2JqZWN0Y2xhc3MnDQotKwlNVVNUICgg
 c3NoUHVibGljS2V5ICQgdWlkICkgDQotKwkpDQotZGlmZiAtTnVhciAtLWV4Y2x1ZGUgJyou
 b3JpZycgLS1leGNsdWRlICcqLnJlaicgUkVBRE1FLmxwayBSRUFETUUubHBrDQotLS0tIFJF
 QURNRS5scGsJMTk2OS0xMi0zMSAxNjowMDowMC4wMDAwMDAwMDAgLTA4MDANCi0rKysgUkVB
 RE1FLmxwawkyMDA4LTA4LTIzIDE1OjAyOjQ3LjAwMDAwMDAwMCAtMDcwMA0KLUBAIC0wLDAg
 KzEsMjY3IEBADQotK09wZW5TU0ggTERBUCBQVUJMSUMgS0VZIFBBVENIIA0KLStDb3B5cmln
 aHQgKGMpIDIwMDMgRXJpYyBBVUdFIChlYXVAcGhlYXIub3JnKQ0KLStBbGwgcmlnaHRzIHJl
 c2VydmVkLg0KLSsNCi0rUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
 bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQotK21vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
 dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KLSthcmUgbWV0
 Og0KLSsxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
 IGFib3ZlIGNvcHlyaWdodA0KLSsgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
 IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQotKzIuIFJlZGlzdHJpYnV0aW9ucyBp
 biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQotKyAg
 IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
 Y2xhaW1lciBpbiB0aGUNCi0rICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
 YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4NCi0rMy4gVGhlIG5hbWUgb2Yg
 dGhlIGF1dGhvciBtYXkgbm90IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
 Y3RzDQotKyAgIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
 cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0KLSsNCi0rVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
 SURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1INCi0rSU1Q
 TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
 UExJRUQgV0FSUkFOVElFUw0KLStPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
 IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELg0KLStJTiBOTyBFVkVOVCBT
 SEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsDQot
 K0lOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
 R0VTIChJTkNMVURJTkcsIEJVVA0KLStOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
 U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsDQotK0RBVEEsIE9S
 IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
 IE9OIEFOWQ0KLStUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
 VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUDQotKyhJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
 VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRg0KLStUSElT
 IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
 REFNQUdFLg0KLSsNCi0rcHVycG9zZXMgb2YgdGhpcyBwYXRjaDoNCi0rDQotK1RoaXMgcGF0
 Y2ggd291bGQgaGVscCB0byBoYXZlIGF1dGhlbnRpY2F0aW9uIGNlbnRyYWxpemF0aW9uIHBv
 bGljeQ0KLSt1c2luZyBzc2ggcHVibGljIGtleSBhdXRoZW50aWNhdGlvbi4NCi0rVGhpcyBw
 YXRjaCBjb3VsZCBiZSBhbiBhbHRlcm5hdGl2ZSB0byBvdGhlciAic2VjdXJlIiBhdXRoZW50
 aWNhdGlvbiBzeXN0ZW0NCi0rd29ya2luZyBpbiBhIHNpbWlsYXIgd2F5IChLZXJiZXJvcywg
 U2VjdXJJRCwgZXRjLi4uKSwgZXhjZXB0IHRoZSBmYWN0IA0KLSt0aGF0IGl0J3MgYmFzZWQg
 b24gT3BlblNTSCBhbmQgaXRzIHB1YmxpYyBrZXkgYWJpbGl0aWVzLg0KLSsNCi0rPj4gRllJ
 OiA8PA0KLSsndWlkJzogbWVhbnMgdW5peCBhY2NvdW50cyBleGlzdGluZyBvbiB0aGUgY3Vy
 cmVudCBzZXJ2ZXINCi0rJ2xwa1NlcnZlckdyb3VwOicgbWVhbiBzZXJ2ZXIgZ3JvdXAgY29u
 ZmlndXJlZCBvbiB0aGUgY3VycmVudCBzZXJ2ZXIgKCdscGtTZXJ2ZXJHcm91cCcgaW4gc3No
 ZF9jb25maWcpDQotKw0KLStleGFtcGxlIHNjaGVtYToNCi0rDQotKw0KLSsgICAgICAgICAg
 ICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyMSAodWlkOiBlYXUscml2YWwsdG90bykg
 KGxwa1NlcnZlckdyb3VwOiB1bml4KQ0KLSsgICAgICAgICAgICAgICAgX19fX19fX19fX18g
 ICAgICAvDQotKyAgICAgICAgICAgICAgIC8gICAgICAgICAgIFwgLS0tIC0gc2VydmVyMyAo
 dWlkOiBlYXUsIHRpdGkpIChscGtTZXJ2ZXJHcm91cDogdW5peCkNCi0rICAgICAgICAgICAg
 ICB8IExEQVAgU2VydmVyIHwgICAgXA0KLSsJICAgICAgfCBlYXUgICxyaXZhbCB8ICAgICBz
 ZXJ2ZXIyICh1aWQ6IHJpdmFsLCBlYXUpIChscGtTZXJ2ZXJHcm91cDogdW5peCkNCi0rCSAg
 ICAgIHwgdGl0aSAsdG90byAgfA0KLSsJICAgICAgfCB1c2VyeCwuLi4uICB8ICAgICAgICAg
 c2VydmVyNSAodWlkOiBlYXUpICAobHBrU2VydmVyR3JvdXA6IG1haWwpDQotKyAgICAgICAg
 ICAgICAgIFxfX19fX19fX19fXy8gXCAgICAgICAvDQotKwkgICAgICAgICAgICAgICAgICAg
 ICAgIC0tLS0tIC0gc2VydmVyNCAodWlkOiBlYXUsIHJpdmFsKSAgKG5vIGdyb3VwIGNvbmZp
 Z3VyZWQpDQotKwkJCSAgICAgICAgICAgICBcDQotKwkJCQkgICAgICAgIGV0Yy4uLg0KLSsN
 Ci0rLSBXSEFUIFdFIE5FRUQgOg0KLSsNCi0rICAqIGNvbmZpZ3VyZWQgTERBUCBzZXJ2ZXIg
 c29tZXdoZXJlIG9uIHRoZSBuZXR3b3JrIChpLmUuIE9wZW5MREFQKQ0KLSsgICogcGF0Y2hl
 ZCBzc2hkICh3aXRoIHRoaXMgcGF0Y2ggOykNCi0rICAqIExEQVAgdXNlcigvZ3JvdXApIGVu
 dHJ5IChsb29rIGF0IHVzZXJzLmxkaWYgKCYgZ3JvdXBzLmxkaWYpKToNCi0rICAgICAgICBV
 c2VyIGVudHJ5Og0KLSsJLSBhdHRhY2hlZCB0byB0aGUgJ2xkYXBQdWJsaWNLZXknIG9iamVj
 dGNsYXNzDQotKwktIGF0dGFjaGVkIHRvIHRoZSAncG9zaXhBY2NvdW50JyBvYmplY3RjbGFz
 cw0KLSsJLSB3aXRoIGEgZmlsbGVkICdzc2hQdWJsaWNLZXknIGF0dHJpYnV0ZSANCi0rCUV4
 YW1wbGU6DQotKwkJZG46IHVpZD1lYXUsb3U9dXNlcnMsZGM9Y3Vja29vcyxkYz1uZXQNCi0r
 CQlvYmplY3RjbGFzczogdG9wDQotKwkJb2JqZWN0Y2xhc3M6IHBlcnNvbg0KLSsJCW9iamVj
 dGNsYXNzOiBvcmdhbml6YXRpb25hbFBlcnNvbg0KLSsJCW9iamVjdGNsYXNzOiBwb3NpeEFj
 Y291bnQNCi0rCQlvYmplY3RjbGFzczogbGRhcFB1YmxpY0tleQ0KLSsJCWRlc2NyaXB0aW9u
 OiBFcmljIEFVR0UgQWNjb3VudA0KLSsJCXVzZXJQYXNzd29yZDogYmxhaA0KLSsJCWNuOiBF
 cmljIEFVR0UNCi0rCQlzbjogRXJpYyBBVUdFDQotKwkJdWlkOiBlYXUNCi0rCQl1aWROdW1i
 ZXI6IDEwMzQNCi0rCQlnaWROdW1iZXI6IDENCi0rCQlob21lRGlyZWN0b3J5OiAvZXhwb3J0
 L2hvbWUvZWF1DQotKwkJc3NoUHVibGljS2V5OiBzc2gtZHNzIEFBQUFCMy4uLg0KLSsJCXNz
 aFB1YmxpY0tleTogc3NoLWRzcyBBQUFBTTUuLi4NCi0rDQotKwlHcm91cCBlbnRyeToNCi0r
 CS0gYXR0YWNoZWQgdG8gdGhlICdwb3NpeEdyb3VwJyBvYmplY3RjbGFzcw0KLSsJLSB3aXRo
 IGEgJ2NuJyBncm91cG5hbWUgYXR0cmlidXRlDQotKwktIHdpdGggbXVsdGlwbGUgJ21lbWJl
 clVpZCcgYXR0cmlidXRlcyBmaWxsZWQgd2l0aCB1c2VybmFtZXMgYWxsb3dlZCBpbiB0aGlz
 IGdyb3VwDQotKwlFeGFtcGxlOg0KLSsJCSMgZmV3IG1lbWJlcnMNCi0rCQlkbjogY249dW5p
 eCxvdT1ncm91cHMsZGM9Y3Vja29vcyxkYz1uZXQNCi0rCQlvYmplY3RjbGFzczogdG9wDQot
 KwkJb2JqZWN0Y2xhc3M6IHBvc2l4R3JvdXANCi0rCQlkZXNjcmlwdGlvbjogVW5peCBiYXNl
 ZCBzZXJ2ZXJzIGdyb3VwDQotKwkJY246IHVuaXgNCi0rCQlnaWROdW1iZXI6IDEwMDINCi0r
 CQltZW1iZXJVaWQ6IGVhdQ0KLSsJCW1lbWJlclVpZDogdXNlcjENCi0rCQltZW1iZXJVaWQ6
 IHVzZXIyDQotKw0KLSsNCi0rLSBIT1cgSVQgV09SS1MgOg0KLSsNCi0rICAqIHdpdGhvdXQg
 cGF0Y2gNCi0rICBJZiBhIHVzZXIgd2FudHMgdG8gYXV0aGVudGljYXRlIHRvIGxvZyBpbiBh
 IHNlcnZlciB0aGUgc3NoZCwgd2lsbCBmaXJzdCBsb29rIGZvciBhdXRoZW50aWNhdGlvbiBt
 ZXRob2QgYWxsb3dlZCAoUlNBYXV0aCxrZXJiZXJvcyxldGMuLikNCi0rICBhbmQgaWYgUlNB
 YXV0aCBhbmQgdGlja2V0cyBiYXNlZCBhdXRoIGZhaWxzLCBpdCB3aWxsIGZhbGxiYWNrIHRv
 IHN0YW5kYXJkIHBhc3N3b3JkIGF1dGhlbnRpY2F0aW9uIChpZiBlbmFibGVkKS4NCi0rDQot
 KyAgKiB3aXRoIHRoZSBwYXRjaA0KLSsgIElmIGEgdXNlciB3YW50IHRvIGF1dGhlbnRpY2F0
 ZSB0byBsb2cgaW4gYSBzZXJ2ZXIsIHRoZSBzc2hkIHdpbGwgZmlyc3QgbG9vayBmb3IgYXV0
 aCBtZXRob2QgaW5jbHVkaW5nIExEQVAgcHVia2V5LCBpZiB0aGUgbGRhcHB1YmtleSBvcHRp
 b25zIGlzIGVuYWJsZWQuDQotKyAgSXQgd2lsbCBkbyBhbiBsZGFwc2VhcmNoIHRvIGdldCB0
 aGUgcHVibGljIGtleSBkaXJlY3RseSBmcm9tIHRoZSBMREFQIGluc3RlYWQgb2YgcmVhZGlu
 ZyBpdCBmcm9tIHRoZSBzZXJ2ZXIgZmlsZXN5c3RlbS4gDQotKyAgKHVzdWFsbHkgaW4gJEhP
 TUUvLnNzaC9hdXRob3JpemVkX2tleXMpDQotKw0KLSsgIElmIGdyb3VwcyBhcmUgZW5hYmxl
 ZCwgaXQgd2lsbCBhbHNvIGNoZWNrIGlmIHRoZSB1c2VyIHRoYXQgd2FudHMgdG8gbG9naW4g
 aXMgaW4gdGhlIGdyb3VwIG9mIHRoZSBzZXJ2ZXIgaGUgaXMgdHJ5aW5nIHRvIGxvZyBpbnRv
 Lg0KLSsgIElmIGl0IGZhaWxzLCBpdCBmYWxscyBiYWNrIG9uIFJTQSBhdXRoIGZpbGVzICgk
 SE9NRS8uc3NoL2F1dGhvcml6ZWRfa2V5cyksIGV0Yy4uIGFuZCBmaW5hbGx5IHRvIHN0YW5k
 YXJkIHBhc3N3b3JkIGF1dGhlbnRpY2F0aW9uIChpZiBlbmFibGVkKS4NCi0rDQotKyAgNyB0
 b2tlbnMgYXJlIGFkZGVkIHRvIHNzaGRfY29uZmlnIDoNCi0rICAjIGhlcmUgaXMgdGhlIG5l
 dyBwYXRjaGVkIGxkYXAgcmVsYXRlZCB0b2tlbnMNCi0rICAjIGVudHJpZXMgaW4geW91ciBM
 REFQIG11c3QgYmUgcG9zaXhBY2NvdW50ICYgc3Ryb25nQXV0aGVudGljYXRpb25Vc2VyICYg
 cG9zaXhHcm91cA0KLSsgIFVzZUxQSyB5ZXMJCQkJCQkJCSMgbG9vayB0aGUgcHViIGtleSBp
 bnRvIExEQVANCi0rICBMcGtTZXJ2ZXJzIGxkYXA6Ly8xMC4zMS4zMi41LyBsZGFwOi8vMTAu
 MzEuMzIuNCBsZGFwOi8vMTAuMzEuMzIuMwkjIHdoaWNoIExEQVAgc2VydmVyIGZvciB1c2Vy
 cyA/IChVUkwgZm9ybWF0KQ0KLSsgIExwa1VzZXJETiAgb3U9dXNlcnMsZGM9Zm9vYmFyLGRj
 PW5ldAkJCQkJIyB3aGljaCBiYXNlIEROIGZvciB1c2VycyA/DQotKyAgTHBrR3JvdXBETiBv
 dT1ncm91cHMsZGM9Zm9vYmFyLGRjPW5ldAkJCQkJIyB3aGljaCBiYXNlIEROIGZvciBncm91
 cHMgPyANCi0rICBMcGtCaW5kRE4gY249bWFuYWdlcixkYz1mb29iYXIsZGM9bmV0CQkJCQkj
 IHdoaWNoIGJpbmQgRE4gPw0KLSsgIExwa0JpbmRQdyBhc2VjcmV0CQkJCQkJCSMgYmluZCBE
 TiBjcmVkaWRlbnRpYWxzDQotKyAgTHBrU2VydmVyR3JvdXAgYWdyb3VwbmFtZQkJCQkJCSMg
 dGhlIGdyb3VwIHRoZSBzZXJ2ZXIgaXMgcGFydCBvZg0KLSsNCi0rICBSaWdodCBub3cgaSdt
 IHVzaW5nIGFub255bW91cyBiaW5kaW5nIHRvIGdldCBwdWJsaWMga2V5cywgYmVjYXVzZSBn
 ZXR0aW5nIHB1YmxpYyBrZXlzIG9mIHNvbWVvbmUgZG9lc24ndCBpbXBlcnNvbmF0ZSBoaW24
 IGJ1dCB0aGVyZSBpcyBzb21lDQotKyAgZmxhd3MgeW91IGhhdmUgdG8gdGFrZSBjYXJlIG9m
 Lg0KLSsNCi0rLSBIT1cgVE8gSU5TRVJUIEEgVVNFUi9LRVkgSU5UTyBBTiBMREFQIEVOVFJZ
 DQotKw0KLSsgICogbXkgd2F5ICh0aGVyZSBpcyBwbGVudHkgOikNCi0rICAtIGNyZWF0ZSBs
 ZGlmIGZpbGUgKGkuZS4gdXNlcnMubGRpZikNCi0rICAtIGNhdCB+Ly5zc2gvaWRfZHNhLnB1
 YiBPUiBjYXQgfi8uc3NoL2lkX3JzYS5wdWIgT1IgY2F0IH4vLnNzaC9pZGVudGl0eS5wdWIN
 Ci0rICAtIG15IHdheSBpbiA0IHN0ZXBzIDoNCi0rICBFeGFtcGxlOg0KLSsNCi0rICAjIHlv
 dSBhZGQgdGhpcyB0byB0aGUgdXNlciBlbnRyeSBpbiB0aGUgTERJRiBmaWxlIDoNCi0rICBb
 Li4uXQ0KLSsgIG9iamVjdGNsYXNzOiBwb3NpeEFjY291bnQNCi0rICBvYmplY3RjbGFzczog
 bGRhcFB1YmxpY0tleQ0KLSsgIFsuLi5dDQotKyAgc3NoUHVibGlLZXk6IHNzaC1kc3MgQUFB
 QUJEaDEyRERVUjIuLi4NCi0rICBbLi4uXQ0KLSsNCi0rICAjIGluc2VydCB5b3VyIGVudHJ5
 IGFuZCB5b3UncmUgZG9uZSA6KQ0KLSsgIGxkYXBhZGQgLUQgYmFsYmxhYmxhIC13IGJsZWgg
 PCBmaWxlLmxkaWYgDQotKyAgDQotKyAgYWxsIHN0YW5kYXJkIG9wdGlvbnMgY2FuIGJlIHBy
 ZXNlbnQgaW4gdGhlICdzc2hQdWJsaWNLZXknIGF0dHJpYnV0ZS4NCi0rDQotKy0gV0hZIDoN
 Ci0rDQotKyAgU2ltcGx5IGJlY2F1c2UsIGkgd2FzIGxvb2tpbmcgZm9yIGEgd2F5IHRvIGNl
 bnRyYWxpemUgYWxsIHN5c2FkbWlucyBhdXRoZW50aWNhdGlvbiwgZWFzaWx5LCAgd2l0aG91
 dCBjb21wbGV0ZWx5IHVzaW5nIExEQVAgDQotKyAgYXMgYXV0aGVudGljYXRpb24gbWV0aG9k
 IChsaWtlIHBhbV9sZGFwIGV0Yy4uKS4gIA0KLSsgIA0KLSsgIEFmdGVyIGxvb2tpbmcgaW50
 byBLZXJiZXJvcywgU2VjdXJJRCwgYW5kIG90aGVyIGNlbnRyYWxpemVkIHNlY3VyZSBhdXRo
 ZW50aWNhdGlvbnMgc3lzdGVtcywgdGhlIHVzZSBvZiBSU0EgYW5kIExEQVAgdG8gZ2V0IA0K
 LSsgIHB1YmxpYyBrZXkgZm9yIGF1dGhlbnRpY2F0aW9uIGFsbG93cyB1cyB0byBjb250cm9s
 IHdobyBoYXMgYWNjZXNzIHRvIHdoaWNoIHNlcnZlciAodGhlIHVzZXIgbmVlZHMgYW4gYWNj
 b3VudCBhbmQgdG8gYmUgaW4gJ3N0cm9uZ0F1dGhlbnRpY2F0aW9uVXNlcicNCi0rICBvYmpl
 Y3RjbGFzcyB3aXRoaW4gTERBUCBhbmQgcGFydCBvZiB0aGUgZ3JvdXAgdGhlIFNTSCBzZXJ2
 ZXIgaXMgaW4pLiANCi0rDQotKyAgUGFzc3dvcmRzIHVwZGF0ZSBhcmUgbm8gbG9uZ2VyIGEg
 bmlnaHRtYXJlIGZvciBhIHNlcnZlciBmYXJtIChrZXkgcGFpciBwYXNzcGhyYXNlIGlzIHN0
 b3JlZCBvbiBlYWNoIHVzZXIncyBib3ggYW5kIHByaXZhdGUga2V5IGlzIGxvY2FsbHkgZW5j
 cnlwdGVkIHVzaW5nIGhpcyBwYXNzcGhyYXNlIA0KLSsgIHNvIGVhY2ggdXNlciBjYW4gY2hh
 bmdlIGl0IGFzIG11Y2ggYXMgaGUgd2FudHMpLiANCi0rDQotKyAgQmxvY2tpbmcgYSB1c2Vy
 IGFjY291bnQgY2FuIGJlIGRvbmUgZGlyZWN0bHkgZnJvbSB0aGUgTERBUCAoaWYgc3NoZCBp
 cyB1c2luZyBSU0FBdXRoICsgbGRhcCBvbmx5KS4NCi0rDQotKy0gUlVMRVMgOiAgDQotKyAg
 RW50cnkgaW4gdGhlIExEQVAgc2VydmVyIG11c3QgcmVzcGVjdCAncG9zaXhBY2NvdW50JyBh
 bmQgJ2xkYXBQdWJsaWNLZXknIHdoaWNoIGFyZSBkZWZpbmVkIGluIGNvcmUuc2NoZW1hLiAN
 Ci0rICBhbmQgdGhlIGFkZGl0aW9ubmFsIGxway5zY2hlbWEuDQotKw0KLSsgIFRoaXMgcGF0
 Y2ggY291bGQgYWxsb3cgYSBzbW9vdGggdHJhbnNpdGlvbiBiZXR3ZWVuIHN0YW5kYXJkIGF1
 dGggKC9ldGMvcGFzc3dkKSBhbmQgY29tcGxldGUgTERBUCBiYXNlZCBhdXRoZW50aWNhdGlv
 biANCi0rICAocGFtbGRhcCwgbnNzX2xkYXAsIGV0Yy4uKS4NCi0rDQotKyAgVGhpcyBjYW4g
 YmUgYW4gYWx0ZXJuYXRpdmUgdG8gb3RoZXIgKG9sZD8vZXhwZW5zaXZlPykgYXV0aGVudGlj
 YXRpb24gbWV0aG9kcyAoS2VyYmVyb3MvU2VjdXJJRC8uLikuDQotKyAgDQotKyAgUmVmZXJy
 aW5nIHRvIHNjaGVtYSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoaXMgZmlsZSBpZiB1c2VyICdl
 YXUnIGlzIG9ubHkgaW4gZ3JvdXAgJ3VuaXgnDQotKyAgJ2VhdScgd291bGQgT05MWSBhY2Nl
 c3MgJ3NlcnZlcjEnLCAnc2VydmVyMicsICdzZXJ2ZXIzJyBBTkQgJ3NlcnZlcjQnIEJVVCBO
 T1QgJ3NlcnZlcjUnLg0KLSsgIElmIHlvdSB0aGVuIG1vZGlmeSB0aGUgTERBUCAnbWFpbCcg
 Z3JvdXAgZW50cnkgdG8gYWRkICdtZW1iZXJVaWQ6IGVhdScgVEhFTiB1c2VyICdlYXUnIHdv
 dWxkIGJlIGFibGUNCi0rICB0byBsb2cgaW4gJ3NlcnZlcjUnIChpIGhvcGUgeW91IGdvdCB0
 aGUgaWRlYSwgbXkgZW5nbGlzaCBpcyBiYWQgOikuDQotKw0KLSsgIEVhY2ggc2VydmVyJ3Mg
 c3NoZCBpcyBwYXRjaGVkIGFuZCBjb25maWd1cmVkIHRvIGFzayB0aGUgcHVibGljIGtleSBh
 bmQgdGhlIGdyb3VwIGluZm9zIGluIHRoZSBMREFQDQotKyAgc2VydmVyLg0KLSsgIFdoZW4g
 eW91IHdhbnQgdG8gYWxsb3cgYSBuZXcgdXNlciB0byBoYXZlIGFjY2VzcyB0byB0aGUgc2Vy
 dmVyIHBhcmMsIHlvdSBqdXN0IGFkZCBoaW0gYW4gYWNjb3VudCBvbiANCi0rICB5b3VyIHNl
 cnZlcnMsIHlvdSBhZGQgaGlzIHB1YmxpYyBrZXkgaW50byBoaXMgZW50cnkgb24gdGhlIExE
 QVAgc2VydmVyLCBpdCdzIGRvbmUuIA0KLSsNCi0rICBCZWNhdXNlIHNzaGRzIGFyZSBsb29r
 aW5nIHB1YmxpYyBrZXlzIGludG8gdGhlIExEQVAgZGlyZWN0bHkgaW5zdGVhZCBvZiBhIGZp
 bGUgKCRIT01FLy5zc2gvYXV0aG9yaXplZF9rZXlzKS4NCi0rDQotKyAgV2hlbiB0aGUgdXNl
 ciBuZWVkcyB0byBjaGFuZ2UgaGlzIHBhc3NwaHJhc2UgaGUgY2FuIGRvIGl0IGRpcmVjdGx5
 IGZyb20gaGlzIHdvcmtzdGF0aW9uIGJ5IGNoYW5naW5nIA0KLSsgIGhpcyBvd24ga2V5IHNl
 dCBsb2NrIHBhc3NwaHJhc2UsIGFuZCBhbGwgc2VydmVycyBhcmUgYXV0b21hdGljYWxseSBh
 d2FyZS4NCi0rIA0KLSsgIFdpdGggYSBDQVJFRlVMIExEQVAgc2VydmVyIGNvbmZpZ3VyYXRp
 b24geW91IGNvdWxkIGFsbG93IGEgdXNlciB0byBhZGQvZGVsZXRlL21vZGlmeSBoaXMgb3du
 IGVudHJ5IGhpbXNlbGYNCi0rICBzbyBoZSBjYW4gYWRkL21vZGlmeS9kZWxldGUgaGltc2Vs
 ZiBoaXMgcHVibGljIGtleSB3aGVuIG5lZWRlZC4NCi0rDQotK60gRkxBV1MgOg0KLSsgIExE
 QVAgbXVzdCBiZSB3ZWxsIGNvbmZpZ3VyZWQsIGdldHRpbmcgdGhlIHB1YmxpYyBrZXkgb2Yg
 c29tZSB1c2VyIGlzIG5vdCBhIHByb2JsZW0sIGJ1dCBpZiBhbm9ueW1vdXMgTERBUCANCi0r
 ICBhbGxvdyB3cml0ZSB0byB1c2VycyBkbiwgc29tZWJvZHkgY291bGQgcmVwbGFjZSBzb21l
 dXNlcidzIHB1YmxpYyBrZXkgYnkgaXRzIG93biBhbmQgaW1wZXJzb25hdGUgc29tZSANCi0r
 ICBvZiB5b3VyIHVzZXJzIGluIGFsbCB5b3VyIHNlcnZlciBmYXJtIGJlIFZFUlkgQ0FSRUZV
 TC4NCi0rICANCi0rICBNSVRNIGF0dGFjayB3aGVuIHNzaGQgaXMgcmVxdWVzdGluZyB0aGUg
 cHVibGljIGtleSwgY291bGQgbGVhZCB0byBhIGNvbXByb21pc2Ugb2YgeW91ciBzZXJ2ZXJz
 IGFsbG93aW5nIGxvZ2luIA0KLSsgIGFzIHRoZSBpbXBlcnNvbm5hdGVkIHVzZXIuDQotKw0K
 LSsgIElmIExEQVAgc2VydmVyIGlzIGRvd24gdGhlbiwgZmFsbGJhY2sgb24gcGFzc3dkIGF1
 dGguDQotKyAgDQotKyAgdGhlIGxkYXAgY29kZSBwYXJ0IGhhcyBub3QgYmVlbiB3ZWxsIGF1
 ZGl0ZWQgeWV0Lg0KLSsNCi0rLSBMREFQIFVTRVIgRU5UUlkgRVhBTVBMRVMgKExESUYgRm9y
 bWF0LCBsb29rIGluIHVzZXJzLmxkaWYpDQotKyAgICAtLS0gQ1VUIEhFUkUgLS0tDQotKyAg
 ICBkbjogdWlkPWpkb2Usb3U9dXNlcnMsZGM9Zm9vYmFyLGRjPW5ldA0KLSsgICAgb2JqZWN0
 Y2xhc3M6IHRvcA0KLSsgICAgb2JqZWN0Y2xhc3M6IHBlcnNvbg0KLSsgICAgb2JqZWN0Y2xh
 c3M6IG9yZ2FuaXphdGlvbmFsUGVyc29uDQotKyAgICBvYmplY3RjbGFzczogcG9zaXhBY2Nv
 dW50DQotKyAgICBvYmplY3RjbGFzczogbGRhcFB1YmxpY0tleQ0KLSsgICAgZGVzY3JpcHRp
 b246IE15IGFjY291bnQNCi0rICAgIGNuOiBKb2huIERvZQ0KLSsgICAgc246IEpvaG4gRG9l
 DQotKyAgICB1aWQ6IGpkb2UNCi0rICAgIHVpZE51bWJlcjogMTAwDQotKyAgICBnaWROdW1i
 ZXI6IDEwMA0KLSsgICAgaG9tZURpcmVjdG9yeTogL2hvbWUvamRvZQ0KLSsgICAgc3NoUHVi
 bGljS2V5OiBzc2gtZHNzIEFBQUFCM056YUMxa2MzTUFBQUVCQU92TDhwUkVVZzl3U3kvOCto
 UUo1NFlGM0FYa0IwT1pyWEIuLi4uDQotKyAgICBbLi4uXQ0KLSsgICAgLS0tIENVVCBIRVJF
 IC0tLQ0KLSsNCi0rLSBMREFQIEdST1VQIEVOVFJZIEVYQU1QTEVTIChMRElGIEZvcm1hdCwg
 bG9vayBpbiBncm91cHMubGRpZikNCi0rICAgIC0tLSBDVVQgSEVSRSAtLS0NCi0rICAgIGRu
 OiBjbj11bml4LG91PWdyb3VwcyxkYz1jdWNrb29zLGRjPW5ldA0KLSsgICAgb2JqZWN0Y2xh
 c3M6IHRvcA0KLSsgICAgb2JqZWN0Y2xhc3M6IHBvc2l4R3JvdXANCi0rICAgIGRlc2NyaXB0
 aW9uOiBVbml4IGJhc2VkIHNlcnZlcnMgZ3JvdXANCi0rICAgIGNuOiB1bml4DQotKyAgICBn
 aWROdW1iZXI6IDEwMDINCi0rICAgIG1lbWJlclVpZDogamRvZQ0KLSsgICAgbWVtYmVyVWlk
 OiB1c2VyMQ0KLSsgICAgbWVtYmVyVWlkOiB1c2VyMg0KLSsgICAgWy4uLl0NCi0rICAgIC0t
 LSBDVVQgSEVSRSAtLS0NCi0rDQotKz4+IEZZSTogPDwgDQotK011bHRpcGxlICdzc2hQdWJs
 aWNLZXknIGluIGEgdXNlciBlbnRyeSBhcmUgYWxsb3dlZCwgYXMgd2VsbCBhcyBtdWx0aXBs
 ZSAnbWVtYmVyVWlkJyBhdHRyaWJ1dGVzIGluIGEgZ3JvdXAgZW50cnkNCi0rDQotKy0gQ09N
 UElMSU5HOg0KLSsgIDEuIEFwcGx5IHRoZSBwYXRjaA0KLSsgIDIuIC4vY29uZmlndXJlIC0t
 d2l0aC15b3VyLW9wdGlvbnMgLS13aXRoLWxkYXA9L3ByZWZpeC90by9sZGFwX2xpYnNfYW5k
 X2luY2x1ZGVzDQotKyAgMy4gbWFrZQ0KLSsgIDQuIGl0J3MgZG9uZS4NCi0rDQotKy0gQkxB
 IDoNCi0rICBJIGhvcGUgdGhpcyBjb3VsZCBoZWxwLCBhbmQgaSBob3BlIHRvIGJlIGNsZWFy
 IGVub3VnaCwsIG9yIGdpdmUgaWRlYXMuICBxdWVzdGlvbnMvY29tbWVudHMvaW1wcm92ZW1l
 bnRzIGFyZSB3ZWxjb21lLg0KLSsgIA0KLSstIFRPRE8gOg0KLSsgIFJlZGVzaWduIGRpZmZl
 cmVudGx5Lg0KLSsNCi0rLSBET0NTL0xJTksgOg0KLSsgIGh0dHA6Ly9wYWNzZWMuanAvY29y
 ZTA1L3BzajA1LWJhcmlzYW5pLWVuLnBkZg0KLSsgIGh0dHA6Ly9mcml0ei5wb3RzZGFtLmVk
 dS9wcm9qZWN0cy9vcGVuc3NoLWxway8NCi0rICBodHRwOi8vZnJpdHoucG90c2RhbS5lZHUv
 cHJvamVjdHMvc3NoZ2F0ZS8NCi0rICBodHRwOi8vZGV2LmludmVyc2VwYXRoLmNvbS90cmFj
 L29wZW5zc2gtbHBrDQotKyAgaHR0cDovL2xhbS5zZi5uZXQvICggaHR0cDovL2xhbS5zb3Vy
 Y2Vmb3JnZS5uZXQvZG9jdW1lbnRhdGlvbi9zdXBwb3J0ZWRTY2hlbWFzLmh0bSApDQotKw0K
 LSstIENPTlRSSUJVVE9SUy9JREVBUy9HUkVFVFMgOg0KLSsgIC0gRmFsayBTaWVtb25zbWVp
 ZXIuDQotKyAgLSBKYWNvYiBSaWVmLg0KLSsgIC0gTWljaGFlbCBEdXJjaGdyYWYuDQotKyAg
 LSBmcmVkZXJpYyBwZXRlcnMuDQotKyAgLSBGaW5sYXkgZG9iYmllLg0KLSsgIC0gU3RlZmFu
 IEZpc2hlci4NCi0rICAtIFJvYmluIEguIEpvaG5zb24uDQotKyAgLSBBZHJpYW4gQnJpZGdl
 dHQuDQotKw0KLSstIENPTlRBQ1QgOg0KLSsgIC0gRXJpYyBBVUdFIDxlYXVAcGhlYXIub3Jn
 Pg0KLSsgIC0gQW5kcmVhIEJhcmlzYW5pIDxhbmRyZWFAaW52ZXJzZXBhdGguY29tPg0KLQ0K
 LWRpZmYgLU51YXIgLS1leGNsdWRlICcqLm9yaWcnIC0tZXhjbHVkZSAnKi5yZWonIHNlcnZj
 b25mLmggc2VydmNvbmYuaA0KLS0tLSBzZXJ2Y29uZi5oCTIwMDgtMDYtMTAgMDY6MDE6NTEu
 MDAwMDAwMDAwIC0wNzAwDQotKysrIHNlcnZjb25mLmgJMjAwOC0wOC0yMyAxNTowMjo0Ny4w
 MDAwMDAwMDAgLTA3MDANCi1AQCAtMTYsNiArMTYsMTAgQEANCi0gI2lmbmRlZiBTRVJWQ09O
 Rl9IDQotICNkZWZpbmUgU0VSVkNPTkZfSA0KLSANCi0rI2lmZGVmIFdJVEhfTERBUF9QVUJL
 RVkNCi0rI2luY2x1ZGUgImxkYXBhdXRoLmgiDQotKyNlbmRpZg0KLSsNCi0gI2RlZmluZSBN
 QVhfUE9SVFMJCTI1NgkvKiBNYXggIyBwb3J0cy4gKi8NCi0gDQotICNkZWZpbmUgTUFYX0FM
 TE9XX1VTRVJTCQkyNTYJLyogTWF4ICMgdXNlcnMgb24gYWxsb3cgbGlzdC4gKi8NCi1AQCAt
 MTQ1LDYgKzE0OSw5IEBADQotIAlpbnQJdXNlX3BhbTsJCS8qIEVuYWJsZSBhdXRoIHZpYSBQ
 QU0gKi8NCi0gDQotIAlpbnQJcGVybWl0X3R1bjsNCi0rI2lmZGVmIFdJVEhfTERBUF9QVUJL
 RVkNCi0rICAgICAgICBsZGFwX29wdF90IGxwazsNCi0rI2VuZGlmDQotIA0KLSAJaW50CW51
 bV9wZXJtaXR0ZWRfb3BlbnM7DQotIA0KLWRpZmYgLU51YXIgLS1leGNsdWRlICcqLm9yaWcn
 IC0tZXhjbHVkZSAnKi5yZWonIHNzaGQuYyBzc2hkLmMNCi0tLS0gc3NoZC5jCTIwMDgtMDct
 MTEgMDA6MzY6NDkuMDAwMDAwMDAwIC0wNzAwDQotKysrIHNzaGQuYwkyMDA4LTA4LTIzIDE1
 OjAyOjQ3LjAwMDAwMDAwMCAtMDcwMA0KLUBAIC0xMjcsNiArMTI3LDEwIEBADQotIGludCBk
 ZW55X3NldmVyaXR5Ow0KLSAjZW5kaWYgLyogTElCV1JBUCAqLw0KLSANCi0rI2lmZGVmIFdJ
 VEhfTERBUF9QVUJLRVkNCi0rI2luY2x1ZGUgImxkYXBhdXRoLmgiDQotKyNlbmRpZg0KLSsN
 Ci0gI2lmbmRlZiBPX05PQ1RUWQ0KLSAjZGVmaW5lIE9fTk9DVFRZCTANCi0gI2VuZGlmDQot
 QEAgLTE0ODQsNiArMTQ4OCwxNiBAQA0KLSAJCWV4aXQoMSk7DQotIAl9DQotIA0KLSsjaWZk
 ZWYgV0lUSF9MREFQX1BVQktFWQ0KLSsgICAgLyogbGRhcF9vcHRpb25zX3ByaW50KCZvcHRp
 b25zLmxwayk7ICovDQotKyAgICAvKiBYWFggaW5pdGlhbGl6ZS9jaGVjayBsZGFwIGNvbm5l
 Y3Rpb24gYW5kIHNldCAqTEQgKi8NCi0rICAgIGlmIChvcHRpb25zLmxway5vbikgew0KLSsg
 ICAgICAgIGlmIChvcHRpb25zLmxway5sX2NvbmYgJiYgKGxkYXBfcGFyc2VfbGNvbmYoJm9w
 dGlvbnMubHBrKSA8IDApICkNCi0rICAgICAgICAgICAgZXJyb3IoIltMREFQXSBjb3VsZCBu
 b3QgcGFyc2UgJXMiLCBvcHRpb25zLmxway5sX2NvbmYpOw0KLSsgICAgICAgIGlmIChsZGFw
 X2Nvbm5lY3QoJm9wdGlvbnMubHBrKSA8IDApDQotKyAgICAgICAgICAgIGVycm9yKCJbTERB
 UF0gY291bGQgbm90IGluaXRpYWxpemUgbGRhcCBjb25uZWN0aW9uIik7DQotKyAgICB9DQot
 KyNlbmRpZg0KLSAJZGVidWcoInNzaGQgdmVyc2lvbiAlLjEwMHMiLCBTU0hfUkVMRUFTRSk7
 DQotIA0KLSAJLyogU3RvcmUgcHJpdmlsZWdlIHNlcGFyYXRpb24gdXNlciBmb3IgbGF0ZXIg
 dXNlIGlmIHJlcXVpcmVkLiAqLw0KLWRpZmYgLU51YXIgLS1leGNsdWRlICcqLm9yaWcnIC0t
 ZXhjbHVkZSAnKi5yZWonIHNzaGRfY29uZmlnIHNzaGRfY29uZmlnDQotLS0tIHNzaGRfY29u
 ZmlnCTIwMDgtMDctMDIgMDU6MzU6NDMuMDAwMDAwMDAwIC0wNzAwDQotKysrIHNzaGRfY29u
 ZmlnCTIwMDgtMDgtMjMgMTU6MDI6NDcuMDAwMDAwMDAwIC0wNzAwDQotQEAgLTEwOSw2ICsx
 MDksMjEgQEANCi0gIyBubyBkZWZhdWx0IGJhbm5lciBwYXRoDQotICNCYW5uZXIgbm9uZQ0K
 LSANCi0rIyBoZXJlIGFyZSB0aGUgbmV3IHBhdGNoZWQgbGRhcCByZWxhdGVkIHRva2Vucw0K
 LSsjIGVudHJpZXMgaW4geW91ciBMREFQIG11c3QgaGF2ZSBwb3NpeEFjY291bnQgJiBsZGFw
 UHVibGljS2V5IG9iamVjdGNsYXNzDQotKyNVc2VMUEsgeWVzDQotKyNMcGtMZGFwQ29uZiAv
 ZXRjL2xkYXAuY29uZg0KLSsjTHBrU2VydmVycyAgbGRhcDovLzEwLjEuNy4xLyBsZGFwOi8v
 MTAuMS43LjIvDQotKyNMcGtVc2VyRE4gICBvdT11c2VycyxkYz1waGVhcixkYz1vcmcNCi0r
 I0xwa0dyb3VwRE4gIG91PWdyb3VwcyxkYz1waGVhcixkYz1vcmcNCi0rI0xwa0JpbmRETiBj
 bj1NYW5hZ2VyLGRjPXBoZWFyLGRjPW9yZw0KLSsjTHBrQmluZFB3IHNlY3JldA0KLSsjTHBr
 U2VydmVyR3JvdXAgbWFpbA0KLSsjTHBrRmlsdGVyIChob3N0QWNjZXNzPW1hc3Rlci5waGVh
 ci5vcmcpDQotKyNMcGtGb3JjZVRMUyBubw0KLSsjTHBrU2VhcmNoVGltZWxpbWl0IDMNCi0r
 I0xwa0JpbmRUaW1lbGltaXQgMw0KLSsNCi0gIyBvdmVycmlkZSBkZWZhdWx0IG9mIG5vIHN1
 YnN5c3RlbXMNCi0gU3Vic3lzdGVtCXNmdHAJL3Vzci9saWJleGVjL3NmdHAtc2VydmVyDQot
 IA0KLWRpZmYgLU51YXIgLS1leGNsdWRlICcqLm9yaWcnIC0tZXhjbHVkZSAnKi5yZWonIHNz
 aGRfY29uZmlnLjUgc3NoZF9jb25maWcuNQ0KLS0tLSBzc2hkX2NvbmZpZy41CTIwMDgtMDct
 MDIgMDU6MzU6NDMuMDAwMDAwMDAwIC0wNzAwDQotKysrIHNzaGRfY29uZmlnLjUJMjAwOC0w
 OC0yMyAxNTowMjo0Ny4wMDAwMDAwMDAgLTA3MDANCi1AQCAtMTAwMyw2ICsxMDAzLDYyIEBA
 DQotIHByb2dyYW0uDQotIFRoZSBkZWZhdWx0IGlzDQotIC5QYSAvdXNyL1gxMVI2L2Jpbi94
 YXV0aCAuDQotKy5JdCBDbSBVc2VMUEsNCi0rU3BlY2lmaWVzIHdoZXRoZXIgTERBUCBwdWJs
 aWMga2V5IHJldHJpZXZhbCBtdXN0IGJlIHVzZWQgb3Igbm90LiBJdCBhbGxvdw0KLSthbiBl
 YXN5IGNlbnRyYWxpc2F0aW9uIG9mIHB1YmxpYyBrZXlzIHdpdGhpbiBhbiBMREFQIGRpcmVj
 dG9yeS4gVGhlIGFyZ3VtZW50IG11c3QgYmUNCi0rLkRxIHllcw0KLStvcg0KLSsuRHEgbm8g
 Lg0KLSsuSXQgQ20gTHBrTGRhcENvbmYNCi0rU3BlY2lmaWVzIHdoZXRoZXIgTERBUCBQdWJs
 aWMga2V5cyBzaG91bGQgcGFyc2UgdGhlIHNwZWNpZmllZCBsZGFwLmNvbmYgZmlsZQ0KLStp
 bnN0ZWFkIG9mIHNzaGRfY29uZmlnIFRva2Vucy4gVGhlIGFyZ3VtZW50IG11c3QgYmUgYSB2
 YWxpZCBwYXRoIHRvIGFuIGxkYXAuY29uZg0KLStmaWxlIGxpa2UNCi0rLlBhIC9ldGMvbGRh
 cC5jb25mDQotKy5JdCBDbSBMcGtTZXJ2ZXJzDQotK1NwZWNpZmllcyBMREFQIG9uZSBvciBt
 b3JlIFs6c3BhY2U6XSBzZXBhcmF0ZWQgc2VydmVyJ3MgdXJsIHRoZSBmb2xsb3dpbmcgZm9y
 bSBtYXkgYmUgdXNlZDoNCi0rLlBwDQotK0xwa1NlcnZlcnMgbGRhcHM6Ly8xMjcuMC4wLjEg
 bGRhcDovLzEyNy4wLjAuMiBsZGFwOi8vMTI3LjAuMC4zDQotKy5JdCBDbSBMcGtVc2VyRE4N
 Ci0rU3BlY2lmaWVzIHRoZSBMREFQIHVzZXIgRE4uDQotKy5QcA0KLStMcGtVc2VyRE4gb3U9
 dXNlcnMsZGM9cGhlYXIsZGM9b3JnDQotKy5JdCBDbSBMcGtHcm91cERODQotK1NwZWNpZmll
 cyB0aGUgTERBUCBncm91cHMgRE4uDQotKy5QcA0KLStMcGtHcm91cEROIG91PWdyb3Vwcyxk
 Yz1waGVhcixkYz1vcmcNCi0rLkl0IENtIExwa0JpbmRETg0KLStTcGVjaWZpZXMgdGhlIExE
 QVAgYmluZCBETiB0byB1c2UgaWYgbmVjZXNzYXJ5Lg0KLSsuUHANCi0rTHBrQmluZEROIGNu
 PU1hbmFnZXIsZGM9cGhlYXIsZGM9b3JnDQotKy5JdCBDbSBMcGtCaW5kUHcNCi0rU3BlY2lm
 aWVzIHRoZSBMREFQIGJpbmQgY3JlZGVudGlhbC4gDQotKy5QcA0KLStMcGtCaW5kUHcgc2Vj
 cmV0DQotKy5JdCBDbSBMcGtTZXJ2ZXJHcm91cA0KLStTcGVjaWZpZXMgb25lIG9yIG1vcmUg
 WzpzcGFjZTpdIHNlcGFyYXRlZCBncm91cCB0aGUgc2VydmVyIGlzIHBhcnQgb2YuIA0KLSsu
 UHANCi0rTHBrU2VydmVyR3JvdXAgdW5peCBtYWlsIHByb2QNCi0rLkl0IENtIExwa0ZpbHRl
 cg0KLStTcGVjaWZpZXMgYW4gYWRkaXRpb25hbCBMREFQIGZpbHRlciB0byB1c2UgZm9yIGZp
 bmRpbmcgU1NIIGtleXMNCi0rLlBwDQotK0xwa0ZpbHRlciAoaG9zdEFjY2Vzcz1tYXN0ZXIu
 cGhlYXIub3JnKQ0KLSsuSXQgQ20gTHBrRm9yY2VUTFMNCi0rU3BlY2lmaWVzIGlmIHRoZSBM
 REFQIHNlcnZlciBjb25uZWN0aW9uIG11c3QgYmUgdHJpZWQsIGZvcmNlZCBvciBub3QgdXNl
 ZC4gVGhlIGFyZ3VtZW50IG11c3QgYmUgDQotKy5EcSB5ZXMNCi0rb3INCi0rLkRxIG5vDQot
 K29yDQotKy5EcSB0cnkgLg0KLSsuSXQgQ20gTHBrU2VhcmNoVGltZWxpbWl0DQotK1NlcGNp
 ZmllcyB0aGUgc2VhcmNoIHRpbWUgbGltaXQgYmVmb3JlIHRoZSBzZWFyY2ggaXMgY29uc2lk
 ZXJlZCBvdmVyLiB2YWx1ZSBpcw0KLStpbiBzZWNvbmRzLg0KLSsuUHANCi0rTHBrU2VhcmNo
 VGltZWxpbWl0IDMNCi0rLkl0IENtIExwa0JpbmRUaW1lbGltaXQNCi0rU2VwY2lmaWVzIHRo
 ZSBiaW5kIHRpbWUgbGltaXQgYmVmb3JlIHRoZSBjb25uZWN0aW9uIGlzIGNvbnNpZGVyZWQg
 ZGVhZC4gdmFsdWUgaXMNCi0raW4gc2Vjb25kcy4NCi0rLlBwDQotK0xwa0JpbmRUaW1lbGlt
 aXQgMw0KLSAuRWwNCi0gLlNoIFRJTUUgRk9STUFUUw0KLSAuWHIgc3NoZCA4DQpkaWZmIC1O
 cnUgL2hvbWUvZ2F3cmlsb2ZmL2xway9vcGVuc3NoLXBvcnRhYmxlL2ZpbGVzL2NvbnRyaWIt
 b3BlbnNzaC1scGstNS4zcDEtMC4zLjEwLnBhdGNoIC9ob21lL2dhd3JpbG9mZi9vcGVuc3No
 LXBvcnRhYmxlL2ZpbGVzL2NvbnRyaWItb3BlbnNzaC1scGstNS4zcDEtMC4zLjEwLnBhdGNo
 DQotLS0gL2hvbWUvZ2F3cmlsb2ZmL2xway9vcGVuc3NoLXBvcnRhYmxlL2ZpbGVzL2NvbnRy
 aWItb3BlbnNzaC1scGstNS4zcDEtMC4zLjEwLnBhdGNoCTE5NzAtMDEtMDEgMDM6MDA6MDAu
 MDAwMDAwMDAwICswMzAwDQorKysgL2hvbWUvZ2F3cmlsb2ZmL29wZW5zc2gtcG9ydGFibGUv
 ZmlsZXMvY29udHJpYi1vcGVuc3NoLWxway01LjNwMS0wLjMuMTAucGF0Y2gJMjAxMC0xMi0y
 MSAxMTozMDowMi4wMDAwMDAwMDAgKzAyMDANCkBAIC0wLDAgKzEsMTg4MSBAQA0KK2RpZmYg
 LU51YXIgLS1leGNsdWRlICcqLm9yaWcnIC0tZXhjbHVkZSAnKi5yZWonIGF1dGgyLXB1Ymtl
 eS5jIGF1dGgyLXB1YmtleS5jDQorLS0tIGF1dGgyLXB1YmtleS5jCTIwMDgtMDctMDMgMTk6
 NTQ6MjUuMDAwMDAwMDAwIC0wNzAwDQorKysrIGF1dGgyLXB1YmtleS5jCTIwMDgtMDgtMjMg
 MTU6MDI6NDcuMDAwMDAwMDAwIC0wNzAwDQorQEAgLTU1LDYgKzU1LDEwIEBADQorICNpbmNs
 dWRlICJtb25pdG9yX3dyYXAuaCINCisgI2luY2x1ZGUgIm1pc2MuaCINCisgDQorKyNpZmRl
 ZiBXSVRIX0xEQVBfUFVCS0VZDQorKyNpbmNsdWRlICJsZGFwYXV0aC5oIg0KKysjZW5kaWYN
 CisrDQorIC8qIGltcG9ydCAqLw0KKyBleHRlcm4gU2VydmVyT3B0aW9ucyBvcHRpb25zOw0K
 KyBleHRlcm4gdV9jaGFyICpzZXNzaW9uX2lkMjsNCitAQCAtMTgzLDEwICsxODcsNzkgQEAN
 CisgCXVfbG9uZyBsaW5lbnVtID0gMDsNCisgCUtleSAqZm91bmQ7DQorIAljaGFyICpmcDsN
 CisrI2lmZGVmIFdJVEhfTERBUF9QVUJLRVkNCisrCWxkYXBfa2V5X3QgKiBrOw0KKysJdW5z
 aWduZWQgaW50IGkgPSAwOw0KKysjZW5kaWYNCisgDQorIAkvKiBUZW1wb3JhcmlseSB1c2Ug
 dGhlIHVzZXIncyB1aWQuICovDQorIAl0ZW1wb3JhcmlseV91c2VfdWlkKHB3KTsNCisgDQor
 KyNpZmRlZiBXSVRIX0xEQVBfUFVCS0VZDQorKyAJZm91bmRfa2V5ID0gMDsNCisrIAkvKiBh
 bGxvY2F0ZSBhIG5ldyBrZXkgdHlwZSAqLw0KKysgCWZvdW5kID0ga2V5X25ldyhrZXktPnR5
 cGUpOw0KKysgDQorKyAJLyogZmlyc3QgY2hlY2sgaWYgdGhlIG9wdGlvbnMgaXMgZW5hYmxl
 ZCwgdGhlbiB0cnkuLiAqLw0KKysJaWYgKG9wdGlvbnMubHBrLm9uKSB7DQorKwkgICAgZGVi
 dWcoIltMREFQXSB0cnlpbmcgTERBUCBmaXJzdCB1aWQ9JXMiLHB3LT5wd19uYW1lKTsNCisr
 CSAgICBpZiAobGRhcF9pc21lbWJlcigmb3B0aW9ucy5scGssIHB3LT5wd19uYW1lKSA+IDAp
 IHsNCisrCQlpZiAoKGsgPSBsZGFwX2dldHVzZXJrZXkoJm9wdGlvbnMubHBrLCBwdy0+cHdf
 bmFtZSkpICE9IE5VTEwpIHsNCisrCQkgICAgLyogU2tpcCBsZWFkaW5nIHdoaXRlc3BhY2Us
 IGVtcHR5IGFuZCBjb21tZW50IGxpbmVzLiAqLw0KKysJCSAgICBmb3IgKGkgPSAwIDsgaSA8
 IGstPm51bSA7IGkrKykgew0KKysJCQkvKiBkb250IGZvcmdldCBpZiBtdWx0aXBsZSBrZXlz
 IHRvIHJlc2V0IG9wdGlvbnMgKi8NCisrCQkJY2hhciAqY3AsICpvcHRpb25zID0gTlVMTDsN
 CisrDQorKwkJCWZvciAoY3AgPSAoY2hhciAqKWstPmtleXNbaV0tPmJ2X3ZhbDsgKmNwID09
 ICcgJyB8fCAqY3AgPT0gJ1x0JzsgY3ArKykNCisrCQkJICAgIDsNCisrCQkJaWYgKCEqY3Ag
 fHwgKmNwID09ICdcbicgfHwgKmNwID09ICcjJykNCisrCQkJICAgIGNvbnRpbnVlOw0KKysN
 CisrCQkJaWYgKGtleV9yZWFkKGZvdW5kLCAmY3ApICE9IDEpIHsNCisrCQkJICAgIC8qIG5v
 IGtleT8gIGNoZWNrIGlmIHRoZXJlIGFyZSBvcHRpb25zIGZvciB0aGlzIGtleSAqLw0KKysJ
 CQkgICAgaW50IHF1b3RlZCA9IDA7DQorKwkJCSAgICBkZWJ1ZzIoIltMREFQXSB1c2VyX2tl
 eV9hbGxvd2VkOiBjaGVjayBvcHRpb25zOiAnJXMnIiwgY3ApOw0KKysJCQkgICAgb3B0aW9u
 cyA9IGNwOw0KKysJCQkgICAgZm9yICg7ICpjcCAmJiAocXVvdGVkIHx8ICgqY3AgIT0gJyAn
 ICYmICpjcCAhPSAnXHQnKSk7IGNwKyspIHsNCisrCQkJCWlmICgqY3AgPT0gJ1xcJyAmJiBj
 cFsxXSA9PSAnIicpDQorKwkJCQkgICAgY3ArKzsJLyogU2tpcCBib3RoICovDQorKwkJCQll
 bHNlIGlmICgqY3AgPT0gJyInKQ0KKysJCQkJICAgIHF1b3RlZCA9ICFxdW90ZWQ7DQorKwkJ
 CSAgICB9DQorKwkJCSAgICAvKiBTa2lwIHJlbWFpbmluZyB3aGl0ZXNwYWNlLiAqLw0KKysJ
 CQkgICAgZm9yICg7ICpjcCA9PSAnICcgfHwgKmNwID09ICdcdCc7IGNwKyspDQorKwkJCQk7
 DQorKwkJCSAgICBpZiAoa2V5X3JlYWQoZm91bmQsICZjcCkgIT0gMSkgew0KKysJCQkJZGVi
 dWcyKCJbTERBUF0gdXNlcl9rZXlfYWxsb3dlZDogYWR2YW5jZTogJyVzJyIsIGNwKTsNCisr
 CQkJCS8qIHN0aWxsIG5vIGtleT8gIGFkdmFuY2UgdG8gbmV4dCBsaW5lKi8NCisrCQkJCWNv
 bnRpbnVlOw0KKysJCQkgICAgfQ0KKysJCQl9DQorKw0KKysJCQlpZiAoa2V5X2VxdWFsKGZv
 dW5kLCBrZXkpICYmDQorKwkJCQlhdXRoX3BhcnNlX29wdGlvbnMocHcsIG9wdGlvbnMsIGZp
 bGUsIGxpbmVudW0pID09IDEpIHsNCisrCQkJICAgIGZvdW5kX2tleSA9IDE7DQorKwkJCSAg
 ICBkZWJ1ZygiW0xEQVBdIG1hdGNoaW5nIGtleSBmb3VuZCIpOw0KKysJCQkgICAgZnAgPSBr
 ZXlfZmluZ2VycHJpbnQoZm91bmQsIFNTSF9GUF9NRDUsIFNTSF9GUF9IRVgpOw0KKysJCQkg
 ICAgdmVyYm9zZSgiW0xEQVBdIEZvdW5kIG1hdGNoaW5nICVzIGtleTogJXMiLCBrZXlfdHlw
 ZShmb3VuZCksIGZwKTsNCisrDQorKwkJCSAgICAvKiByZXN0b3JpbmcgbWVtb3J5ICovDQor
 KwkJCSAgICBsZGFwX2tleXNfZnJlZShrKTsNCisrCQkJICAgIHhmcmVlKGZwKTsNCisrCQkJ
 ICAgIHJlc3RvcmVfdWlkKCk7DQorKwkJCSAgICBrZXlfZnJlZShmb3VuZCk7DQorKwkJCSAg
 ICByZXR1cm4gZm91bmRfa2V5Ow0KKysJCQkgICAgYnJlYWs7DQorKwkJCX0NCisrCQkgICAg
 fS8qIGVuZCBvZiBMREFQIGZvcigpICovDQorKwkJfSBlbHNlIHsNCisrCQkgICAgbG9naXQo
 IltMREFQXSBubyBrZXlzIGZvdW5kIGZvciAnJXMnISIsIHB3LT5wd19uYW1lKTsNCisrCQl9
 DQorKwkgICAgfSBlbHNlIHsNCisrCQlsb2dpdCgiW0xEQVBdICclcycgaXMgbm90IGluICcl
 cyciLCBwdy0+cHdfbmFtZSwgb3B0aW9ucy5scGsuc2dyb3VwKTsNCisrCSAgICB9DQorKwl9
 DQorKyNlbmRpZg0KKyAJZGVidWcoInRyeWluZyBwdWJsaWMga2V5IGZpbGUgJXMiLCBmaWxl
 KTsNCisgCWYgPSBhdXRoX29wZW5rZXlmaWxlKGZpbGUsIHB3LCBvcHRpb25zLnN0cmljdF9t
 b2Rlcyk7DQorIA0KK2RpZmYgLU51YXIgLS1leGNsdWRlICcqLm9yaWcnIC0tZXhjbHVkZSAn
 Ki5yZWonIGF1dGgtcnNhLmMgYXV0aC1yc2EuYw0KKy0tLSBhdXRoLXJzYS5jCTIwMDgtMDct
 MDIgMDU6Mzc6MzAuMDAwMDAwMDAwIC0wNzAwDQorKysrIGF1dGgtcnNhLmMJMjAwOC0wOC0y
 MyAxNTowMjo0Ny4wMDAwMDAwMDAgLTA3MDANCitAQCAtMTc0LDEwICsxNzQsOTYgQEANCisg
 CUZJTEUgKmY7DQorIAl1X2xvbmcgbGluZW51bSA9IDA7DQorIAlLZXkgKmtleTsNCisrI2lm
 ZGVmIFdJVEhfTERBUF9QVUJLRVkNCisrCWxkYXBfa2V5X3QgKiBrOw0KKysJdW5zaWduZWQg
 aW50IGkgPSAwOw0KKysjZW5kaWYNCisgDQorIAkvKiBUZW1wb3JhcmlseSB1c2UgdGhlIHVz
 ZXIncyB1aWQuICovDQorIAl0ZW1wb3JhcmlseV91c2VfdWlkKHB3KTsNCisgDQorKyNpZmRl
 ZiBXSVRIX0xEQVBfUFVCS0VZDQorKwkvKiBoZXJlIGlzIHRoZSBqb2IgKi8NCisrCWtleSA9
 IGtleV9uZXcoS0VZX1JTQTEpOw0KKysNCisrCWlmIChvcHRpb25zLmxway5vbikgew0KKysJ
 ICAgIGRlYnVnKCJbTERBUF0gdHJ5aW5nIExEQVAgZmlyc3QgdWlkPSVzIiwgcHctPnB3X25h
 bWUpOw0KKysJICAgIGlmICggbGRhcF9pc21lbWJlcigmb3B0aW9ucy5scGssIHB3LT5wd19u
 YW1lKSA+IDApIHsNCisrCQlpZiAoIChrID0gbGRhcF9nZXR1c2Vya2V5KCZvcHRpb25zLmxw
 aywgcHctPnB3X25hbWUpKSAhPSBOVUxMKSB7DQorKwkJICAgIGZvciAoaSA9IDAgOyBpIDwg
 ay0+bnVtIDsgaSsrKSB7DQorKwkJCWNoYXIgKmNwLCAqb3B0aW9ucyA9IE5VTEw7DQorKw0K
 KysJCQlmb3IgKGNwID0gay0+a2V5c1tpXS0+YnZfdmFsOyAqY3AgPT0gJyAnIHx8ICpjcCA9
 PSAnXHQnOyBjcCsrKQ0KKysJCQkgICAgOw0KKysJCQlpZiAoISpjcCB8fCAqY3AgPT0gJ1xu
 JyB8fCAqY3AgPT0gJyMnKQ0KKysJCQkgICAgY29udGludWU7DQorKw0KKysJCQkvKg0KKysJ
 CQkqIENoZWNrIGlmIHRoZXJlIGFyZSBvcHRpb25zIGZvciB0aGlzIGtleSwgYW5kIGlmIHNv
 LA0KKysJCQkqIHNhdmUgdGhlaXIgc3RhcnRpbmcgYWRkcmVzcyBhbmQgc2tpcCB0aGUgb3B0
 aW9uIHBhcnQNCisrCQkJKiBmb3Igbm93LiAgSWYgdGhlcmUgYXJlIG5vIG9wdGlvbnMsIHNl
 dCB0aGUgc3RhcnRpbmcNCisrCQkJKiBhZGRyZXNzIHRvIE5VTEwuDQorKwkJCSAqLw0KKysJ
 CQlpZiAoKmNwIDwgJzAnIHx8ICpjcCA+ICc5Jykgew0KKysJCQkgICAgaW50IHF1b3RlZCA9
 IDA7DQorKwkJCSAgICBvcHRpb25zID0gY3A7DQorKwkJCSAgICBmb3IgKDsgKmNwICYmIChx
 dW90ZWQgfHwgKCpjcCAhPSAnICcgJiYgKmNwICE9ICdcdCcpKTsgY3ArKykgew0KKysJCQkJ
 aWYgKCpjcCA9PSAnXFwnICYmIGNwWzFdID09ICciJykNCisrCQkJCSAgICBjcCsrOwkvKiBT
 a2lwIGJvdGggKi8NCisrCQkJCWVsc2UgaWYgKCpjcCA9PSAnIicpDQorKwkJCQkgICAgcXVv
 dGVkID0gIXF1b3RlZDsNCisrCQkJICAgIH0NCisrCQkJfSBlbHNlDQorKwkJCSAgICBvcHRp
 b25zID0gTlVMTDsNCisrDQorKwkJCS8qIFBhcnNlIHRoZSBrZXkgZnJvbSB0aGUgbGluZS4g
 Ki8NCisrCQkJaWYgKGhvc3RmaWxlX3JlYWRfa2V5KCZjcCwgJmJpdHMsIGtleSkgPT0gMCkg
 ew0KKysJCQkgICAgZGVidWcoIltMREFQXSBsaW5lICVkOiBub24gc3NoMSBrZXkgc3ludGF4
 IiwgaSk7DQorKwkJCSAgICBjb250aW51ZTsNCisrCQkJfQ0KKysJCQkvKiBjcCBub3cgcG9p
 bnRzIHRvIHRoZSBjb21tZW50IHBhcnQuICovDQorKw0KKysJCQkvKiBDaGVjayBpZiB0aGUg
 d2UgaGF2ZSBmb3VuZCB0aGUgZGVzaXJlZCBrZXkgKGlkZW50aWZpZWQgYnkgaXRzIG1vZHVs
 dXMpLiAqLw0KKysJCQlpZiAoQk5fY21wKGtleS0+cnNhLT5uLCBjbGllbnRfbikgIT0gMCkN
 CisrCQkJICAgIGNvbnRpbnVlOw0KKysNCisrCQkJLyogY2hlY2sgdGhlIHJlYWwgYml0cyAg
 Ki8NCisrCQkJaWYgKGJpdHMgIT0gKHVuc2lnbmVkIGludClCTl9udW1fYml0cyhrZXktPnJz
 YS0+bikpDQorKwkJCSAgICBsb2dpdCgiW0xEQVBdIFdhcm5pbmc6IGxkYXAsIGxpbmUgJWx1
 OiBrZXlzaXplIG1pc21hdGNoOiAiDQorKwkJCQkgICAgImFjdHVhbCAlZCB2cy4gYW5ub3Vu
 Y2VkICVkLiIsICh1bnNpZ25lZCBsb25nKWksIEJOX251bV9iaXRzKGtleS0+cnNhLT5uKSwg
 Yml0cyk7DQorKw0KKysJCQkvKiBXZSBoYXZlIGZvdW5kIHRoZSBkZXNpcmVkIGtleS4gKi8N
 CisrCQkJLyoNCisrCQkJKiBJZiBvdXIgb3B0aW9ucyBkbyBub3QgYWxsb3cgdGhpcyBrZXkg
 dG8gYmUgdXNlZCwNCisrCQkJKiBkbyBub3Qgc2VuZCBjaGFsbGVuZ2UuDQorKwkJCSAqLw0K
 KysJCQlpZiAoIWF1dGhfcGFyc2Vfb3B0aW9ucyhwdywgb3B0aW9ucywgIltMREFQXSIsICh1
 bnNpZ25lZCBsb25nKSBpKSkNCisrCQkJICAgIGNvbnRpbnVlOw0KKysNCisrCQkJLyogYnJl
 YWsgb3V0LCB0aGlzIGtleSBpcyBhbGxvd2VkICovDQorKwkJCWFsbG93ZWQgPSAxOw0KKysN
 CisrCQkJLyogYWRkIHRoZSByZXR1cm4gc3R1ZmYgZXRjLi4uICovDQorKwkJCS8qIFJlc3Rv
 cmUgdGhlIHByaXZpbGVnZWQgdWlkLiAqLw0KKysJCQlyZXN0b3JlX3VpZCgpOw0KKysNCisr
 CQkJLyogcmV0dXJuIGtleSBpZiBhbGxvd2VkICovDQorKwkJCWlmIChhbGxvd2VkICYmIHJr
 ZXkgIT0gTlVMTCkNCisrCQkJICAgICpya2V5ID0ga2V5Ow0KKysJCQllbHNlDQorKwkJCSAg
 ICBrZXlfZnJlZShrZXkpOw0KKysNCisrCQkJbGRhcF9rZXlzX2ZyZWUoayk7DQorKwkJCXJl
 dHVybiAoYWxsb3dlZCk7DQorKwkJICAgIH0NCisrCQl9IGVsc2Ugew0KKysJCSAgICBsb2dp
 dCgiW0xEQVBdIG5vIGtleXMgZm91bmQgZm9yICclcychIiwgcHctPnB3X25hbWUpOw0KKysJ
 CX0NCisrCSAgICB9IGVsc2Ugew0KKysJCWxvZ2l0KCJbTERBUF0gJyVzJyBpcyBub3QgaW4g
 JyVzJyIsIHB3LT5wd19uYW1lLCBvcHRpb25zLmxway5zZ3JvdXApOw0KKysJICAgIH0NCisr
 CX0NCisrI2VuZGlmDQorIAkvKiBUaGUgYXV0aG9yaXplZCBrZXlzLiAqLw0KKyAJZmlsZSA9
 IGF1dGhvcml6ZWRfa2V5c19maWxlKHB3KTsNCisgCWRlYnVnKCJ0cnlpbmcgcHVibGljIFJT
 QSBrZXkgZmlsZSAlcyIsIGZpbGUpOw0KK2RpZmYgLU51YXIgLS1leGNsdWRlICcqLm9yaWcn
 IC0tZXhjbHVkZSAnKi5yZWonIGNvbmZpZy5oLmluIGNvbmZpZy5oLmluDQorLS0tIGNvbmZp
 Zy5oLmluCTIwMDgtMDctMjEgMDE6MzA6NDkuMDAwMDAwMDAwIC0wNzAwDQorKysrIGNvbmZp
 Zy5oLmluCTIwMDgtMDgtMjMgMTU6MDI6NDcuMDAwMDAwMDAwIC0wNzAwDQorQEAgLTU3NSw2
 ICs1NzUsOSBAQA0KKyAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGxpbnV4L2lm
 X3R1bi5oPiBoZWFkZXIgZmlsZS4gKi8NCisgI3VuZGVmIEhBVkVfTElOVVhfSUZfVFVOX0gN
 CisgDQorKy8qIERlZmluZSBpZiB5b3Ugd2FudCBMREFQIHN1cHBvcnQgKi8NCisrI3VuZGVm
 IFdJVEhfTERBUF9QVUJLRVkNCisrDQorIC8qIERlZmluZSBpZiB5b3VyIGxpYnJhcmllcyBk
 ZWZpbmUgbG9naW4oKSAqLw0KKyAjdW5kZWYgSEFWRV9MT0dJTg0KKyANCitkaWZmIC1OdWFy
 IC0tZXhjbHVkZSAnKi5vcmlnJyAtLWV4Y2x1ZGUgJyoucmVqJyBjb25maWd1cmUgY29uZmln
 dXJlDQorLS0tIGNvbmZpZ3VyZQkyMDA4LTA3LTIxIDAxOjMwOjUwLjAwMDAwMDAwMCAtMDcw
 MA0KKysrKyBjb25maWd1cmUJMjAwOC0wOC0yMyAxNTowMjo0Ny4wMDAwMDAwMDAgLTA3MDAN
 CitAQCAtMTQ2OCw2ICsxNDY4LDcgQEANCisgICAtLXdpdGgtdGNwLXdyYXBwZXJzWz1QQVRI
 XSBFbmFibGUgdGNwd3JhcHBlcnMgc3VwcG9ydCAob3B0aW9uYWxseSBpbiBQQVRIKQ0KKyAg
 IC0td2l0aC1saWJlZGl0Wz1QQVRIXSAgIEVuYWJsZSBsaWJlZGl0IHN1cHBvcnQgZm9yIHNm
 dHANCisgICAtLXdpdGgtYXVkaXQ9bW9kdWxlICAgICBFbmFibGUgRVhQRVJJTUVOVEFMIGF1
 ZGl0IHN1cHBvcnQgKG1vZHVsZXM9ZGVidWcsYnNtKQ0KKysgIC0td2l0aC1sZGFwWz1QQVRI
 XSAgICAgIEVuYWJsZSBMREFQIHB1YmtleSBzdXBwb3J0IChvcHRpb25hbGx5IGluIFBBVEgp
 DQorICAgLS13aXRoLXNzbC1kaXI9UEFUSCAgICAgU3BlY2lmeSBwYXRoIHRvIE9wZW5TU0wg
 aW5zdGFsbGF0aW9uDQorICAgLS13aXRob3V0LW9wZW5zc2wtaGVhZGVyLWNoZWNrIERpc2Fi
 bGUgT3BlblNTTCB2ZXJzaW9uIGNvbnNpc3RlbmN5IGNoZWNrDQorICAgLS13aXRoLXNzbC1l
 bmdpbmUgICAgICAgRW5hYmxlIE9wZW5TU0wgKGhhcmR3YXJlKSBFTkdJTkUgc3VwcG9ydA0K
 K0BAIC0xMzQxMSw2ICsxMzQxMiw4NSBAQA0KKyBmaQ0KKyANCisgDQorKyMgQ2hlY2sgd2hl
 dGhlciB1c2VyIHdhbnRzIExEQVAgc3VwcG9ydA0KKytMREFQX01TRz0ibm8iDQorKw0KKysj
 IENoZWNrIHdoZXRoZXIgLS13aXRoLWxkYXAgd2FzIGdpdmVuLg0KKytpZiB0ZXN0ICIke3dp
 dGhfbGRhcCtzZXR9IiA9IHNldDsgdGhlbg0KKysgIHdpdGh2YWw9JHdpdGhfbGRhcDsNCisr
 CQlpZiB0ZXN0ICJ4JHdpdGh2YWwiICE9ICJ4bm8iIDsgdGhlbg0KKysNCisrCQkJaWYgdGVz
 dCAieCR3aXRodmFsIiAhPSAieHllcyIgOyB0aGVuDQorKwkJCQlDUFBGTEFHUz0iJENQUEZM
 QUdTIC1JJHt3aXRodmFsfS9pbmNsdWRlIg0KKysJCQkJTERGTEFHUz0iJExERkxBR1MgLUwk
 e3dpdGh2YWx9L2xpYiINCisrCQkJZmkNCisrDQorKw0KKytjYXQgPj5jb25mZGVmcy5oIDw8
 XF9BQ0VPRg0KKysjZGVmaW5lIFdJVEhfTERBUF9QVUJLRVkgMQ0KKytfQUNFT0YNCisrDQor
 KwkJCUxJQlM9Ii1sbGRhcCAkTElCUyINCisrCQkJTERBUF9NU0c9InllcyINCisrDQorKwkJ
 CXsgZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZvciBMREFQIHN1cHBvcnQiID4m
 NQ0KKytlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBMREFQIHN1cHBvcnQuLi4gJEVDSE9f
 QyIgPiY2OyB9DQorKwkJCWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRg0KKysvKiBj
 b25mZGVmcy5oLiAgKi8NCisrX0FDRU9GDQorK2NhdCBjb25mZGVmcy5oID4+Y29uZnRlc3Qu
 JGFjX2V4dA0KKytjYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GDQorKy8qIGVuZCBj
 b25mZGVmcy5oLiAgKi8NCisrI2luY2x1ZGUgPHN5cy90eXBlcy5oPg0KKysJCQkJICNpbmNs
 dWRlIDxsZGFwLmg+DQorK2ludA0KKyttYWluICgpDQorK3sNCisrKHZvaWQpbGRhcF9pbml0
 KDAsIDApOw0KKysgIDsNCisrICByZXR1cm4gMDsNCisrfQ0KKytfQUNFT0YNCisrcm0gLWYg
 Y29uZnRlc3QuJGFjX29iamV4dA0KKytpZiB7IChhY190cnk9IiRhY19jb21waWxlIg0KKytj
 YXNlICIoKCRhY190cnkiIGluDQorKyAgKlwiKiB8ICpcYCogfCAqXFwqKSBhY190cnlfZWNo
 bz1cJGFjX3RyeTs7DQorKyAgKikgYWNfdHJ5X2VjaG89JGFjX3RyeTs7DQorK2VzYWMNCisr
 ZXZhbCAiZWNobyBcIlwkYXNfbWU6JExJTkVOTzogJGFjX3RyeV9lY2hvXCIiKSA+JjUNCisr
 ICAoZXZhbCAiJGFjX2NvbXBpbGUiKSAyPmNvbmZ0ZXN0LmVyMQ0KKysgIGFjX3N0YXR1cz0k
 Pw0KKysgIGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0LmVyMSA+Y29uZnRlc3QuZXJyDQorKyAg
 cm0gLWYgY29uZnRlc3QuZXIxDQorKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUNCisrICBlY2hv
 ICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1DQorKyAgKGV4aXQgJGFj
 X3N0YXR1cyk7IH0gJiYgew0KKysJIHRlc3QgLXogIiRhY19jX3dlcnJvcl9mbGFnIiB8fA0K
 KysJIHRlc3QgISAtcyBjb25mdGVzdC5lcnINCisrICAgICAgIH0gJiYgdGVzdCAtcyBjb25m
 dGVzdC4kYWNfb2JqZXh0OyB0aGVuDQorKyAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogcmVz
 dWx0OiB5ZXMiID4mNQ0KKytlY2hvICIke0VDSE9fVH15ZXMiID4mNjsgfQ0KKytlbHNlDQor
 KyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUNCisrc2VkICdzL14v
 fCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQ0KKysNCisrDQorKwkJCQkgICAgeyBlY2hvICIk
 YXNfbWU6JExJTkVOTzogcmVzdWx0OiBubyIgPiY1DQorK2VjaG8gIiR7RUNIT19UfW5vIiA+
 JjY7IH0NCisrCQkJCQl7IHsgZWNobyAiJGFzX21lOiRMSU5FTk86IGVycm9yOiAqKiBJbmNv
 bXBsZXRlIG9yIG1pc3NpbmcgbGRhcCBsaWJyYXJpZXMgKioiID4mNQ0KKytlY2hvICIkYXNf
 bWU6IGVycm9yOiAqKiBJbmNvbXBsZXRlIG9yIG1pc3NpbmcgbGRhcCBsaWJyYXJpZXMgKioi
 ID4mMjt9DQorKyAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQ0KKysNCisrDQorK2ZpDQor
 Kw0KKytybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0
 ZXN0LiRhY19leHQNCisrCQlmaQ0KKysNCisrDQorK2ZpDQorKw0KKysNCisgDQorIA0KKyAN
 CitAQCAtMzIyMjUsNiArMzIzMDUsNyBAQA0KKyBlY2hvICIgICAgICAgICAgICAgICAgIFNt
 YXJ0Y2FyZCBzdXBwb3J0OiAkU0NBUkRfTVNHIg0KKyBlY2hvICIgICAgICAgICAgICAgICAg
 ICAgICBTL0tFWSBzdXBwb3J0OiAkU0tFWV9NU0ciDQorIGVjaG8gIiAgICAgICAgICAgICAg
 VENQIFdyYXBwZXJzIHN1cHBvcnQ6ICRUQ1BXX01TRyINCisrZWNobyAiICAgICAgICAgICAg
 ICAgICAgICAgIExEQVAgc3VwcG9ydDogJExEQVBfTVNHIg0KKyBlY2hvICIgICAgICAgICAg
 ICAgIE1ENSBwYXNzd29yZCBzdXBwb3J0OiAkTUQ1X01TRyINCisgZWNobyAiICAgICAgICAg
 ICAgICAgICAgIGxpYmVkaXQgc3VwcG9ydDogJExJQkVESVRfTVNHIg0KKyBlY2hvICIgIFNv
 bGFyaXMgcHJvY2VzcyBjb250cmFjdCBzdXBwb3J0OiAkU1BDX01TRyINCitkaWZmIC1OdWFy
 IC0tZXhjbHVkZSAnKi5vcmlnJyAtLWV4Y2x1ZGUgJyoucmVqJyBjb25maWd1cmUuYWMgY29u
 ZmlndXJlLmFjDQorLS0tIGNvbmZpZ3VyZS5hYwkyMDA4LTA3LTA5IDA0OjA3OjE5LjAwMDAw
 MDAwMCAtMDcwMA0KKysrKyBjb25maWd1cmUuYWMJMjAwOC0wOC0yMyAxNTowMjo0Ny4wMDAw
 MDAwMDAgLTA3MDANCitAQCAtMTMxOSw2ICsxMzE5LDM3IEBADQorIAllc2FjIF0NCisgKQ0K
 KyANCisrIyBDaGVjayB3aGV0aGVyIHVzZXIgd2FudHMgTERBUCBzdXBwb3J0DQorK0xEQVBf
 TVNHPSJubyINCisrQUNfQVJHX1dJVEgobGRhcCwNCisrCVsgIC0td2l0aC1sZGFwW1s9UEFU
 SF1dICAgICAgRW5hYmxlIExEQVAgcHVia2V5IHN1cHBvcnQgKG9wdGlvbmFsbHkgaW4gUEFU
 SCldLA0KKysJWw0KKysJCWlmIHRlc3QgIngkd2l0aHZhbCIgIT0gInhubyIgOyB0aGVuDQor
 Kw0KKysJCQlpZiB0ZXN0ICJ4JHdpdGh2YWwiICE9ICJ4eWVzIiA7IHRoZW4NCisrCQkJCUNQ
 UEZMQUdTPSIkQ1BQRkxBR1MgLUkke3dpdGh2YWx9L2luY2x1ZGUiDQorKwkJCQlMREZMQUdT
 PSIkTERGTEFHUyAtTCR7d2l0aHZhbH0vbGliIg0KKysJCQlmaQ0KKysNCisrCQkJQUNfREVG
 SU5FKFtXSVRIX0xEQVBfUFVCS0VZXSwgMSwgW0VuYWJsZSBMREFQIHB1YmtleSBzdXBwb3J0
 XSkNCisrCQkJTElCUz0iLWxsZGFwICRMSUJTIg0KKysJCQlMREFQX01TRz0ieWVzIg0KKysJ
 DQorKwkJCUFDX01TR19DSEVDS0lORyhbZm9yIExEQVAgc3VwcG9ydF0pDQorKwkJCUFDX1RS
 WV9DT01QSUxFKA0KKysJCQkJWyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4NCisrCQkJCSAjaW5j
 bHVkZSA8bGRhcC5oPl0sDQorKwkJCQlbKHZvaWQpbGRhcF9pbml0KDAsIDApO10sDQorKwkJ
 CQlbQUNfTVNHX1JFU1VMVCh5ZXMpXSwNCisrCQkJCVsNCisrCQkJCSAgICBBQ19NU0dfUkVT
 VUxUKG5vKSANCisrCQkJCQlBQ19NU0dfRVJST1IoWyoqIEluY29tcGxldGUgb3IgbWlzc2lu
 ZyBsZGFwIGxpYnJhcmllcyAqKl0pDQorKwkJCQldDQorKyAgICAgICAgCSkNCisrCQlmaQ0K
 KysJXQ0KKyspDQorKw0KKyBkbmwgICAgQ2hlY2tzIGZvciBsaWJyYXJ5IGZ1bmN0aW9ucy4g
 UGxlYXNlIGtlZXAgaW4gYWxwaGFiZXRpY2FsIG9yZGVyDQorIEFDX0NIRUNLX0ZVTkNTKCBc
 DQorIAlhcmM0cmFuZG9tIFwNCitAQCAtNDIyOSw2ICs0MjYwLDcgQEANCisgZWNobyAiICAg
 ICAgICAgICAgICAgICBTbWFydGNhcmQgc3VwcG9ydDogJFNDQVJEX01TRyINCisgZWNobyAi
 ICAgICAgICAgICAgICAgICAgICAgUy9LRVkgc3VwcG9ydDogJFNLRVlfTVNHIg0KKyBlY2hv
 ICIgICAgICAgICAgICAgIFRDUCBXcmFwcGVycyBzdXBwb3J0OiAkVENQV19NU0ciDQorK2Vj
 aG8gIiAgICAgICAgICAgICAgICAgICAgICBMREFQIHN1cHBvcnQ6ICRMREFQX01TRyINCisg
 ZWNobyAiICAgICAgICAgICAgICBNRDUgcGFzc3dvcmQgc3VwcG9ydDogJE1ENV9NU0ciDQor
 IGVjaG8gIiAgICAgICAgICAgICAgICAgICBsaWJlZGl0IHN1cHBvcnQ6ICRMSUJFRElUX01T
 RyINCisgZWNobyAiICBTb2xhcmlzIHByb2Nlc3MgY29udHJhY3Qgc3VwcG9ydDogJFNQQ19N
 U0ciDQorZGlmZiAtTnVhciAtLWV4Y2x1ZGUgJyoub3JpZycgLS1leGNsdWRlICcqLnJlaicg
 bGRhcGF1dGguYyBsZGFwYXV0aC5jDQorLS0tIGxkYXBhdXRoLmMJMTk2OS0xMi0zMSAxNjow
 MDowMC4wMDAwMDAwMDAgLTA4MDANCisrKysgbGRhcGF1dGguYwkyMDA4LTA4LTIzIDE1OjAy
 OjQ3LjAwMDAwMDAwMCAtMDcwMA0KK0BAIC0wLDAgKzEsNTc1IEBADQorKy8qIA0KKysgKiAk
 SWQ6IG9wZW5zc2gtbHBrLTQuM3AxLTAuMy43LnBhdGNoLHYgMS4zIDIwMDYvMDQvMTggMTU6
 Mjk6MDkgZWF1IEV4cCAkDQorKyAqLw0KKysNCisrLyoNCisrICoNCisrICogQ29weXJpZ2h0
 IChjKSAyMDA1LCBFcmljIEFVR0UgPGVhdUBwaGVhci5vcmc+DQorKyAqIEFsbCByaWdodHMg
 cmVzZXJ2ZWQuDQorKyAqDQorKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
 IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZSBw
 ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1l
 dDoNCisrICoNCisrICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
 YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
 cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KKysgKiBSZWRpc3RyaWJ1dGlvbnMg
 aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3Rp
 Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
 ZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
 ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQorKyAqIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhl
 IHBoZWFyLm9yZyBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVz
 ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNv
 ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0KKysg
 Kg0KKysgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
 REVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
 RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCANCisrICogQlVUIE5PVCBMSU1JVEVEIFRPLCBU
 SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
 T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIA0KKysgKiBJTiBOTyBF
 VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
 TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
 UExBUlksIA0KKysgKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
 IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
 UlZJQ0VTOyANCisrICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
 RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
 TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCANCisr
 ICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
 IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
 RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4NCisrICoNCisrICoN
 CisrICovDQorKw0KKysjaW5jbHVkZSAiaW5jbHVkZXMuaCINCisrDQorKyNpZmRlZiBXSVRI
 X0xEQVBfUFVCS0VZDQorKw0KKysjaW5jbHVkZSA8c3RkaW8uaD4NCisrI2luY2x1ZGUgPHN0
 ZGxpYi5oPg0KKysjaW5jbHVkZSA8dW5pc3RkLmg+DQorKyNpbmNsdWRlIDxzdHJpbmcuaD4N
 CisrDQorKyNpbmNsdWRlICJsZGFwYXV0aC5oIg0KKysjaW5jbHVkZSAibG9nLmgiDQorKw0K
 KytzdGF0aWMgY2hhciAqYXR0cnNbXSA9IHsNCisrICAgIFBVQktFWUFUVFIsDQorKyAgICBO
 VUxMDQorK307DQorKw0KKysvKiBmaWx0ZXIgYnVpbGRpbmcgaW5mb3MgKi8NCisrI2RlZmlu
 ZSBGSUxURVJfR1JPVVBfUFJFRklYICIoJihvYmplY3RjbGFzcz1wb3NpeEdyb3VwKSINCisr
 I2RlZmluZSBGSUxURVJfT1JfUFJFRklYICIofCINCisrI2RlZmluZSBGSUxURVJfT1JfU1VG
 RklYICIpIg0KKysjZGVmaW5lIEZJTFRFUl9DTl9QUkVGSVggIihjbj0iDQorKyNkZWZpbmUg
 RklMVEVSX0NOX1NVRkZJWCAiKSINCisrI2RlZmluZSBGSUxURVJfVUlEX0ZPUk1BVCAiKG1l
 bWJlclVpZD0lcykiDQorKyNkZWZpbmUgRklMVEVSX0dST1VQX1NVRkZJWCAiKSINCisrI2Rl
 ZmluZSBGSUxURVJfR1JPVVBfU0laRShncm91cCkgKHNpemVfdCkgKHN0cmxlbihncm91cCkr
 KGxkYXBfY291bnRfZ3JvdXAoZ3JvdXApKjUpKzUyKQ0KKysNCisrLyoganVzdCBmaWx0ZXIg
 YnVpbGRpbmcgc3R1ZmYgKi8NCisrI2RlZmluZSBSRVFVRVNUX0dST1VQX1NJWkUoZmlsdGVy
 LCB1aWQpIChzaXplX3QpIChzdHJsZW4oZmlsdGVyKStzdHJsZW4odWlkKSsxKQ0KKysjZGVm
 aW5lIFJFUVVFU1RfR1JPVVAoYnVmZmVyLCBwcmVmaWx0ZXIsIHB3bmFtZSkgXA0KKysgICAg
 YnVmZmVyID0gKGNoYXIgKikgY2FsbG9jKFJFUVVFU1RfR1JPVVBfU0laRShwcmVmaWx0ZXIs
 IHB3bmFtZSksIHNpemVvZihjaGFyKSk7IFwNCisrICAgIGlmICghYnVmZmVyKSB7IFwNCisr
 ICAgICAgICBwZXJyb3IoImNhbGxvYygpIik7IFwNCisrICAgICAgICByZXR1cm4gRkFJTFVS
 RTsgXA0KKysgICAgfSBcDQorKyAgICBzbnByaW50ZihidWZmZXIsIFJFUVVFU1RfR1JPVVBf
 U0laRShwcmVmaWx0ZXIscHduYW1lKSwgcHJlZmlsdGVyLCBwd25hbWUpDQorKy8qDQorK1hY
 WCBPTEQgZ3JvdXAgYnVpbGRpbmcgbWFjcm9zDQorKyNkZWZpbmUgUkVRVUVTVF9HUk9VUF9T
 SVpFKGdycCwgdWlkKSAoc2l6ZV90KSAoc3RybGVuKGdycCkrc3RybGVuKHVpZCkrNDYpDQor
 KyNkZWZpbmUgUkVRVUVTVF9HUk9VUChidWZmZXIscHduYW1lLGdycCkgXA0KKysgICAgYnVm
 ZmVyID0gKGNoYXIgKikgY2FsbG9jKFJFUVVFU1RfR1JPVVBfU0laRShncnAsIHB3bmFtZSks
 IHNpemVvZihjaGFyKSk7IFwNCisrICAgIGlmICghYnVmZmVyKSB7IFwNCisrICAgICAgICBw
 ZXJyb3IoImNhbGxvYygpIik7IFwNCisrICAgICAgICByZXR1cm4gRkFJTFVSRTsgXA0KKysg
 ICAgfSBcDQorKyAgICBzbnByaW50ZihidWZmZXIsUkVRVUVTVF9HUk9VUF9TSVpFKGdycCxw
 d25hbWUpLCIoJihvYmplY3RjbGFzcz1wb3NpeEdyb3VwKShjbj0lcykobWVtYmVyVWlkPSVz
 KSkiLGdycCxwd25hbWUpDQorKyAgICAqLw0KKysNCisrLyoNCisrWFhYIHN0b2NrIHVwc3Ry
 ZWFtIHZlcnNpb24gd2l0aG91dCBleHRyYSBmaWx0ZXIgc3VwcG9ydA0KKysjZGVmaW5lIFJF
 UVVFU1RfVVNFUl9TSVpFKHVpZCkgKHNpemVfdCkgKHN0cmxlbih1aWQpKzY0KQ0KKysjZGVm
 aW5lIFJFUVVFU1RfVVNFUihidWZmZXIsIHB3bmFtZSkgXA0KKysgICAgYnVmZmVyID0gKGNo
 YXIgKikgY2FsbG9jKFJFUVVFU1RfVVNFUl9TSVpFKHB3bmFtZSksIHNpemVvZihjaGFyKSk7
 IFwNCisrICAgIGlmICghYnVmZmVyKSB7IFwNCisrICAgICAgICBwZXJyb3IoImNhbGxvYygp
 Iik7IFwNCisrICAgICAgICByZXR1cm4gTlVMTDsgXA0KKysgICAgfSBcDQorKyAgICBzbnBy
 aW50ZihidWZmZXIsUkVRVUVTVF9VU0VSX1NJWkUocHduYW1lKSwiKCYob2JqZWN0Y2xhc3M9
 cG9zaXhBY2NvdW50KShvYmplY3RjbGFzcz1sZGFwUHVibGljS2V5KSh1aWQ9JXMpKSIscHdu
 YW1lKQ0KKysgICAqLw0KKysNCisrI2RlZmluZSBSRVFVRVNUX1VTRVJfU0laRSh1aWQsIGZp
 bHRlcikgKHNpemVfdCkgKHN0cmxlbih1aWQpKzY0KyhmaWx0ZXIgIT0gTlVMTCA/IHN0cmxl
 bihmaWx0ZXIpIDogMCkpDQorKyNkZWZpbmUgUkVRVUVTVF9VU0VSKGJ1ZmZlciwgcHduYW1l
 LCBjdXN0b21maWx0ZXIpIFwNCisrICAgIGJ1ZmZlciA9IChjaGFyICopIGNhbGxvYyhSRVFV
 RVNUX1VTRVJfU0laRShwd25hbWUsIGN1c3RvbWZpbHRlciksIHNpemVvZihjaGFyKSk7IFwN
 CisrICAgIGlmICghYnVmZmVyKSB7IFwNCisrICAgICAgICBwZXJyb3IoImNhbGxvYygpIik7
 IFwNCisrICAgICAgICByZXR1cm4gTlVMTDsgXA0KKysgICAgfSBcDQorKyAgICBzbnByaW50
 ZihidWZmZXIsIFJFUVVFU1RfVVNFUl9TSVpFKHB3bmFtZSwgY3VzdG9tZmlsdGVyKSwgXA0K
 KysgICAgCSIoJihvYmplY3RjbGFzcz1wb3NpeEFjY291bnQpKG9iamVjdGNsYXNzPWxkYXBQ
 dWJsaWNLZXkpKHVpZD0lcyklcykiLCBcDQorKwlwd25hbWUsIChjdXN0b21maWx0ZXIgIT0g
 TlVMTCA/IGN1c3RvbWZpbHRlciA6ICIiKSkNCisrDQorKy8qIHNvbWUgcG9ydGFibGUgYW5k
 IHdvcmtpbmcgdG9rZW5pemVyLCBsYW1lIHRob3VnaCAqLw0KKytzdGF0aWMgaW50IHRva2Vu
 aXplKGNoYXIgKiogbywgc2l6ZV90IHNpemUsIGNoYXIgKiBpbnB1dCkgew0KKysgICAgdW5z
 aWduZWQgaW50IGkgPSAwLCBudW07DQorKyAgICBjb25zdCBjaGFyICogY2hhcnNldCA9ICIg
 XHQiOw0KKysgICAgY2hhciAqIHB0ciA9IGlucHV0Ow0KKysNCisrICAgIC8qIGxlYWRpbmcg
 d2hpdGUgc3BhY2VzIGFyZSBpZ25vcmVkICovDQorKyAgICBudW0gPSBzdHJzcG4ocHRyLCBj
 aGFyc2V0KTsNCisrICAgIHB0ciArPSBudW07DQorKw0KKysgICAgd2hpbGUgKChudW0gPSBz
 dHJjc3BuKHB0ciwgY2hhcnNldCkpKSB7DQorKyAgICAgICAgaWYgKGkgPCBzaXplLTEpIHsN
 CisrICAgICAgICAgICAgb1tpKytdID0gcHRyOw0KKysgICAgICAgICAgICBwdHIgKz0gbnVt
 Ow0KKysgICAgICAgICAgICBpZiAoKnB0cikNCisrICAgICAgICAgICAgICAgICpwdHIrKyA9
 ICdcMCc7DQorKyAgICAgICAgfQ0KKysgICAgfQ0KKysgICAgb1tpXSA9IE5VTEw7DQorKyAg
 ICByZXR1cm4gU1VDQ0VTUzsNCisrfQ0KKysNCisrdm9pZCBsZGFwX2Nsb3NlKGxkYXBfb3B0
 X3QgKiBsZGFwKSB7DQorKw0KKysgICAgaWYgKCFsZGFwKQ0KKysgICAgICAgIHJldHVybjsN
 CisrDQorKyAgICBpZiAoIGxkYXBfdW5iaW5kX2V4dChsZGFwLT5sZCwgTlVMTCwgTlVMTCkg
 PCAwKQ0KKysJbGRhcF9wZXJyb3IobGRhcC0+bGQsICJsZGFwX3VuYmluZCgpIik7DQorKw0K
 KysgICAgbGRhcC0+bGQgPSBOVUxMOw0KKysgICAgRkxBR19TRVRfRElTQ09OTkVDVEVEKGxk
 YXAtPmZsYWdzKTsNCisrDQorKyAgICByZXR1cm47DQorK30NCisrDQorKy8qIGluaXQgJiYg
 YmluZCAqLw0KKytpbnQgbGRhcF9jb25uZWN0KGxkYXBfb3B0X3QgKiBsZGFwKSB7DQorKyAg
 ICBpbnQgdmVyc2lvbiA9IExEQVBfVkVSU0lPTjM7DQorKw0KKysgICAgaWYgKCFsZGFwLT5z
 ZXJ2ZXJzKQ0KKysgICAgICAgIHJldHVybiBGQUlMVVJFOw0KKysNCisrICAgIC8qIENvbm5l
 Y3Rpb24gSW5pdCBhbmQgc2V0dXAgKi8NCisrICAgIGxkYXAtPmxkID0gbGRhcF9pbml0KGxk
 YXAtPnNlcnZlcnMsIExEQVBfUE9SVCk7DQorKyAgICBpZiAoIWxkYXAtPmxkKSB7DQorKyAg
 ICAgICAgbGRhcF9wZXJyb3IobGRhcC0+bGQsICJsZGFwX2luaXQoKSIpOw0KKysgICAgICAg
 IHJldHVybiBGQUlMVVJFOw0KKysgICAgfQ0KKysNCisrICAgIGlmICggbGRhcF9zZXRfb3B0
 aW9uKGxkYXAtPmxkLCBMREFQX09QVF9QUk9UT0NPTF9WRVJTSU9OLCAmdmVyc2lvbikgIT0g
 TERBUF9PUFRfU1VDQ0VTUykgew0KKysgICAgICAgIGxkYXBfcGVycm9yKGxkYXAtPmxkLCAi
 bGRhcF9zZXRfb3B0aW9uKExEQVBfT1BUX1BST1RPQ09MX1ZFUlNJT04pIik7DQorKyAgICAg
 ICAgcmV0dXJuIEZBSUxVUkU7DQorKyAgICB9DQorKw0KKysgICAgLyogVGltZW91dHMgc2V0
 dXAgKi8NCisrICAgIGlmIChsZGFwX3NldF9vcHRpb24obGRhcC0+bGQsIExEQVBfT1BUX05F
 VFdPUktfVElNRU9VVCwgJmxkYXAtPmJfdGltZW91dCkgIT0gTERBUF9TVUNDRVNTKSB7DQor
 KyAgICAgICAgbGRhcF9wZXJyb3IobGRhcC0+bGQsICJsZGFwX3NldF9vcHRpb24oTERBUF9P
 UFRfTkVUV09SS19USU1FT1VUKSIpOw0KKysgICAgfQ0KKysgICAgaWYgKGxkYXBfc2V0X29w
 dGlvbihsZGFwLT5sZCwgTERBUF9PUFRfVElNRU9VVCwgJmxkYXAtPnNfdGltZW91dCkgIT0g
 TERBUF9TVUNDRVNTKSB7DQorKyAgICAgICAgbGRhcF9wZXJyb3IobGRhcC0+bGQsICJsZGFw
 X3NldF9vcHRpb24oTERBUF9PUFRfVElNRU9VVCkiKTsNCisrICAgIH0NCisrDQorKyAgICAv
 KiBUTFMgc3VwcG9ydCAqLw0KKysgICAgaWYgKCAobGRhcC0+dGxzID09IC0xKSB8fCAobGRh
 cC0+dGxzID09IDEpICkgew0KKysgICAgICAgIGlmIChsZGFwX3N0YXJ0X3Rsc19zKGxkYXAt
 PmxkLCBOVUxMLCBOVUxMICkgIT0gTERBUF9TVUNDRVNTKSB7DQorKyAgICAgICAgICAgIC8q
 IGZhaWxlZCB0aGVuIHJlaW5pdCB0aGUgaW5pdGlhbCBjb25uZWN0ICovDQorKyAgICAgICAg
 ICAgIGxkYXBfcGVycm9yKGxkYXAtPmxkLCAibGRhcF9jb25uZWN0OiAoVExTKSBsZGFwX3N0
 YXJ0X3RscygpIik7DQorKyAgICAgICAgICAgIGlmIChsZGFwLT50bHMgPT0gMSkNCisrICAg
 ICAgICAgICAgICAgIHJldHVybiBGQUlMVVJFOw0KKysNCisrICAgICAgICAgICAgbGRhcC0+
 bGQgPSBsZGFwX2luaXQobGRhcC0+c2VydmVycywgTERBUF9QT1JUKTsNCisrICAgICAgICAg
 ICAgaWYgKCFsZGFwLT5sZCkgeyANCisrICAgICAgICAgICAgICAgIGxkYXBfcGVycm9yKGxk
 YXAtPmxkLCAibGRhcF9pbml0KCkiKTsNCisrICAgICAgICAgICAgICAgIHJldHVybiBGQUlM
 VVJFOw0KKysgICAgICAgICAgICB9DQorKw0KKysgICAgICAgICAgICBpZiAoIGxkYXBfc2V0
 X29wdGlvbihsZGFwLT5sZCwgTERBUF9PUFRfUFJPVE9DT0xfVkVSU0lPTiwgJnZlcnNpb24p
 ICE9IExEQVBfT1BUX1NVQ0NFU1MpIHsNCisrICAgICAgICAgICAgICAgICBsZGFwX3BlcnJv
 cihsZGFwLT5sZCwgImxkYXBfc2V0X29wdGlvbigpIik7DQorKyAgICAgICAgICAgICAgICAg
 cmV0dXJuIEZBSUxVUkU7DQorKyAgICAgICAgICAgIH0NCisrICAgICAgICB9DQorKyAgICB9
 DQorKw0KKysNCisrICAgIGlmICggbGRhcF9zaW1wbGVfYmluZF9zKGxkYXAtPmxkLCBsZGFw
 LT5iaW5kZG4sIGxkYXAtPmJpbmRwdykgIT0gTERBUF9TVUNDRVNTKSB7DQorKyAgICAgICAg
 bGRhcF9wZXJyb3IobGRhcC0+bGQsICJsZGFwX3NpbXBsZV9iaW5kX3MoKSIpOw0KKysgICAg
 ICAgIHJldHVybiBGQUlMVVJFOw0KKysgICAgfQ0KKysNCisrICAgIC8qIHNheXMgaXQgaXMg
 Y29ubmVjdGVkICovDQorKyAgICBGTEFHX1NFVF9DT05ORUNURUQobGRhcC0+ZmxhZ3MpOw0K
 KysNCisrICAgIHJldHVybiBTVUNDRVNTOw0KKyt9DQorKw0KKysvKiBtdXN0IGZyZWUgYWxs
 b2NhdGVkIHJlc3NvdXJjZSAqLw0KKytzdGF0aWMgY2hhciAqIGxkYXBfYnVpbGRfaG9zdChj
 aGFyICpob3N0LCBpbnQgcG9ydCkgew0KKysgICAgdW5zaWduZWQgaW50IHNpemUgPSBzdHJs
 ZW4oaG9zdCkrMTE7DQorKyAgICBjaGFyICogaCA9IChjaGFyICopIGNhbGxvYyAoc2l6ZSwg
 c2l6ZW9mKGNoYXIpKTsNCisrICAgIGludCByYzsNCisrICAgIGlmICghaCkNCisrICAgICAg
 ICAgcmV0dXJuIE5VTEw7DQorKw0KKysgICAgcmMgPSBzbnByaW50ZihoLCBzaXplLCAiJXM6
 JWQgIiwgaG9zdCwgcG9ydCk7DQorKyAgICBpZiAocmMgPT0gLTEpDQorKyAgICAgICAgcmV0
 dXJuIE5VTEw7DQorKyAgICByZXR1cm4gaDsNCisrfQ0KKysNCisrc3RhdGljIGludCBsZGFw
 X2NvdW50X2dyb3VwKGNvbnN0IGNoYXIgKiBpbnB1dCkgew0KKysgICAgY29uc3QgY2hhciAq
 IGNoYXJzZXQgPSAiIFx0IjsNCisrICAgIGNvbnN0IGNoYXIgKiBwdHIgPSBpbnB1dDsNCisr
 ICAgIHVuc2lnbmVkIGludCBjb3VudCA9IDA7DQorKyAgICB1bnNpZ25lZCBpbnQgbnVtOw0K
 KysNCisrICAgIG51bSA9IHN0cnNwbihwdHIsIGNoYXJzZXQpOw0KKysgICAgcHRyICs9IG51
 bTsNCisrDQorKyAgICB3aGlsZSAoKG51bSA9IHN0cmNzcG4ocHRyLCBjaGFyc2V0KSkpIHsN
 CisrICAgIGNvdW50Kys7DQorKyAgICBwdHIgKz0gbnVtOw0KKysgICAgcHRyKys7DQorKyAg
 ICB9DQorKw0KKysgICAgcmV0dXJuIGNvdW50Ow0KKyt9DQorKw0KKysvKiBmb3JtYXQgZmls
 dGVyICovDQorK2NoYXIgKiBsZGFwX3BhcnNlX2dyb3Vwcyhjb25zdCBjaGFyICogZ3JvdXBz
 KSB7DQorKyAgICB1bnNpZ25lZCBpbnQgYnVmZmVyX3NpemUgPSBGSUxURVJfR1JPVVBfU0la
 RShncm91cHMpOw0KKysgICAgY2hhciAqIGJ1ZmZlciA9IChjaGFyICopIGNhbGxvYyhidWZm
 ZXJfc2l6ZSwgc2l6ZW9mKGNoYXIpKTsNCisrICAgIGNoYXIgKiBnID0gTlVMTDsNCisrICAg
 IGNoYXIgKiBnYXJyYXlbMzJdOw0KKysgICAgdW5zaWduZWQgaW50IGkgPSAwOw0KKysNCisr
 ICAgIGlmICgoIWdyb3Vwcyl8fCghYnVmZmVyKSkNCisrICAgICAgICByZXR1cm4gTlVMTDsN
 CisrDQorKyAgICBnID0gc3RyZHVwKGdyb3Vwcyk7DQorKyAgICBpZiAoIWcpIHsNCisrICAg
 ICAgICBmcmVlKGJ1ZmZlcik7DQorKyAgICAgICAgcmV0dXJuIE5VTEw7DQorKyAgICB9DQor
 Kw0KKysgICAgLyogZmlyc3Qgc2VwYXJhdGUgaW50byBuIHRva2VucyAqLw0KKysgICAgaWYg
 KCB0b2tlbml6ZShnYXJyYXksIHNpemVvZihnYXJyYXkpL3NpemVvZigqZ2FycmF5KSwgZykg
 PCAwKSB7DQorKyAgICAgICAgZnJlZShnKTsNCisrICAgICAgICBmcmVlKGJ1ZmZlcik7DQor
 KyAgICAgICAgcmV0dXJuIE5VTEw7DQorKyAgICB9DQorKw0KKysgICAgLyogYnVpbGQgdGhl
 IGZpbmFsIGZpbHRlciBmb3JtYXQgKi8NCisrICAgIHN0cmxjYXQoYnVmZmVyLCBGSUxURVJf
 R1JPVVBfUFJFRklYLCBidWZmZXJfc2l6ZSk7DQorKyAgICBzdHJsY2F0KGJ1ZmZlciwgRklM
 VEVSX09SX1BSRUZJWCwgYnVmZmVyX3NpemUpOw0KKysgICAgaSA9IDA7DQorKyAgICB3aGls
 ZSAoZ2FycmF5W2ldKSB7DQorKyAgICAgICAgc3RybGNhdChidWZmZXIsIEZJTFRFUl9DTl9Q
 UkVGSVgsIGJ1ZmZlcl9zaXplKTsNCisrICAgICAgICBzdHJsY2F0KGJ1ZmZlciwgZ2FycmF5
 W2ldLCBidWZmZXJfc2l6ZSk7DQorKyAgICAgICAgc3RybGNhdChidWZmZXIsIEZJTFRFUl9D
 Tl9TVUZGSVgsIGJ1ZmZlcl9zaXplKTsNCisrICAgICAgICBpKys7DQorKyAgICB9DQorKyAg
 ICBzdHJsY2F0KGJ1ZmZlciwgRklMVEVSX09SX1NVRkZJWCwgYnVmZmVyX3NpemUpOw0KKysg
 ICAgc3RybGNhdChidWZmZXIsIEZJTFRFUl9VSURfRk9STUFULCBidWZmZXJfc2l6ZSk7DQor
 KyAgICBzdHJsY2F0KGJ1ZmZlciwgRklMVEVSX0dST1VQX1NVRkZJWCwgYnVmZmVyX3NpemUp
 Ow0KKysNCisrICAgIGZyZWUoZyk7DQorKyAgICByZXR1cm4gYnVmZmVyOw0KKyt9DQorKw0K
 KysvKiBhIGJpdCBkaXJ0eSBidXQgbGVhayBmcmVlICAqLw0KKytjaGFyICogbGRhcF9wYXJz
 ZV9zZXJ2ZXJzKGNvbnN0IGNoYXIgKiBzZXJ2ZXJzKSB7DQorKyAgICBjaGFyICogcyA9IE5V
 TEw7DQorKyAgICBjaGFyICogdG1wID0gTlVMTCwgKnVybHNbMzJdOw0KKysgICAgdW5zaWdu
 ZWQgaW50IG51bSA9IDAgLCBpID0gMCAsIGFzaXplID0gMDsNCisrICAgIExEQVBVUkxEZXNj
 ICp1cmxkWzMyXTsNCisrDQorKyAgICBpZiAoIXNlcnZlcnMpDQorKyAgICAgICAgcmV0dXJu
 IE5VTEw7DQorKw0KKysgICAgLyogbG9jYWwgY29weSBvZiB0aGUgYXJnICovDQorKyAgICBz
 ID0gc3RyZHVwKHNlcnZlcnMpOw0KKysgICAgaWYgKCFzKQ0KKysgICAgICAgIHJldHVybiBO
 VUxMOw0KKysNCisrICAgIC8qIGZpcnN0IHNlcGFyYXRlIGludG8gVVJMIHRva2VucyAqLw0K
 KysgICAgaWYgKCB0b2tlbml6ZSh1cmxzLCBzaXplb2YodXJscykvc2l6ZW9mKCp1cmxzKSwg
 cykgPCAwKQ0KKysgICAgICAgIHJldHVybiBOVUxMOw0KKysNCisrICAgIGkgPSAwOw0KKysg
 ICAgd2hpbGUgKHVybHNbaV0pIHsNCisrICAgICAgICBpZiAoISBsZGFwX2lzX2xkYXBfdXJs
 KHVybHNbaV0pIHx8DQorKyAgICAgICAgICAgKGxkYXBfdXJsX3BhcnNlKHVybHNbaV0sICZ1
 cmxkW2ldKSAhPSAwKSkgew0KKysgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQorKyAg
 ICAgICAgfQ0KKysgICAgICAgIGkrKzsNCisrICAgIH0NCisrDQorKyAgICAvKiBub3cgZnJl
 ZShzKSAqLw0KKysgICAgZnJlZSAocyk7DQorKw0KKysgICAgLyogaG93IG11Y2ggbWVtb3J5
 IGRvIHdlIG5lZWQgKi8NCisrICAgIG51bSA9IGk7DQorKyAgICBmb3IgKGkgPSAwIDsgaSA8
 IG51bSA7IGkrKykNCisrICAgICAgICBhc2l6ZSArPSBzdHJsZW4odXJsZFtpXS0+bHVkX2hv
 c3QpKzExOw0KKysNCisrICAgIC8qIGFsbG9jICovDQorKyAgICBzID0gKGNoYXIgKikgY2Fs
 bG9jKCBhc2l6ZSsxICwgc2l6ZW9mKGNoYXIpKTsNCisrICAgIGlmICghcykgew0KKysgICAg
 ICAgIGZvciAoaSA9IDAgOyBpIDwgbnVtIDsgaSsrKQ0KKysgICAgICAgICAgICBsZGFwX2Zy
 ZWVfdXJsZGVzYyh1cmxkW2ldKTsNCisrICAgICAgICByZXR1cm4gTlVMTDsNCisrICAgIH0N
 CisrDQorKyAgICAvKiB0aGVuIGJ1aWxkIHRoZSBmaW5hbCBob3N0IHN0cmluZyAqLw0KKysg
 ICAgZm9yIChpID0gMCA7IGkgPCBudW0gOyBpKyspIHsNCisrICAgICAgICAvKiBidWlsdCBo
 b3N0IHBhcnQgKi8NCisrICAgICAgICB0bXAgPSBsZGFwX2J1aWxkX2hvc3QodXJsZFtpXS0+
 bHVkX2hvc3QsIHVybGRbaV0tPmx1ZF9wb3J0KTsNCisrICAgICAgICBzdHJuY2F0KHMsIHRt
 cCwgc3RybGVuKHRtcCkpOw0KKysgICAgICAgIGxkYXBfZnJlZV91cmxkZXNjKHVybGRbaV0p
 Ow0KKysgICAgICAgIGZyZWUodG1wKTsNCisrICAgIH0NCisrDQorKyAgICByZXR1cm4gczsN
 CisrfQ0KKysNCisrdm9pZCBsZGFwX29wdGlvbnNfcHJpbnQobGRhcF9vcHRfdCAqIGxkYXAp
 IHsNCisrICAgIGRlYnVnKCJsZGFwIG9wdGlvbnM6Iik7DQorKyAgICBkZWJ1Zygic2VydmVy
 czogJXMiLCBsZGFwLT5zZXJ2ZXJzKTsNCisrICAgIGlmIChsZGFwLT51X2Jhc2VkbikNCisr
 ICAgICAgICBkZWJ1ZygidXNlciBiYXNlZG46ICVzIiwgbGRhcC0+dV9iYXNlZG4pOw0KKysg
 ICAgaWYgKGxkYXAtPmdfYmFzZWRuKQ0KKysgICAgICAgIGRlYnVnKCJncm91cCBiYXNlZG46
 ICVzIiwgbGRhcC0+Z19iYXNlZG4pOw0KKysgICAgaWYgKGxkYXAtPmJpbmRkbikNCisrICAg
 ICAgICBkZWJ1ZygiYmluZGRuOiAlcyIsIGxkYXAtPmJpbmRkbik7DQorKyAgICBpZiAobGRh
 cC0+YmluZHB3KQ0KKysgICAgICAgIGRlYnVnKCJiaW5kcHc6ICVzIiwgbGRhcC0+YmluZHB3
 KTsNCisrICAgIGlmIChsZGFwLT5zZ3JvdXApDQorKyAgICAgICAgZGVidWcoImdyb3VwOiAl
 cyIsIGxkYXAtPnNncm91cCk7DQorKyAgICBpZiAobGRhcC0+ZmlsdGVyKQ0KKysgICAgICAg
 IGRlYnVnKCJmaWx0ZXI6ICVzIiwgbGRhcC0+ZmlsdGVyKTsNCisrfQ0KKysNCisrdm9pZCBs
 ZGFwX29wdGlvbnNfZnJlZShsZGFwX29wdF90ICogbCkgew0KKysgICAgaWYgKCFsKQ0KKysg
 ICAgICAgIHJldHVybjsNCisrICAgIGlmIChsLT5zZXJ2ZXJzKQ0KKysgICAgICAgIGZyZWUo
 bC0+c2VydmVycyk7DQorKyAgICBpZiAobC0+dV9iYXNlZG4pDQorKyAgICAgICAgZnJlZShs
 LT51X2Jhc2Vkbik7DQorKyAgICBpZiAobC0+Z19iYXNlZG4pDQorKyAgICAgICAgZnJlZShs
 LT5nX2Jhc2Vkbik7DQorKyAgICBpZiAobC0+YmluZGRuKQ0KKysgICAgICAgIGZyZWUobC0+
 YmluZGRuKTsNCisrICAgIGlmIChsLT5iaW5kcHcpDQorKyAgICAgICAgZnJlZShsLT5iaW5k
 cHcpOw0KKysgICAgaWYgKGwtPnNncm91cCkNCisrICAgICAgICBmcmVlKGwtPnNncm91cCk7
 DQorKyAgICBpZiAobC0+Zmdyb3VwKQ0KKysgICAgICAgIGZyZWUobC0+Zmdyb3VwKTsNCisr
 ICAgIGlmIChsLT5maWx0ZXIpDQorKyAgICAgICAgZnJlZShsLT5maWx0ZXIpOw0KKysgICAg
 aWYgKGwtPmxfY29uZikNCisrICAgICAgICBmcmVlKGwtPmxfY29uZik7DQorKyAgICBmcmVl
 KGwpOw0KKyt9DQorKw0KKysvKiBmcmVlIGtleXMgKi8NCisrdm9pZCBsZGFwX2tleXNfZnJl
 ZShsZGFwX2tleV90ICogaykgew0KKysgICAgbGRhcF92YWx1ZV9mcmVlX2xlbihrLT5rZXlz
 KTsNCisrICAgIGZyZWUoayk7DQorKyAgICByZXR1cm47DQorK30NCisrDQorK2xkYXBfa2V5
 X3QgKiBsZGFwX2dldHVzZXJrZXkobGRhcF9vcHRfdCAqbCwgY29uc3QgY2hhciAqIHVzZXIp
 IHsNCisrICAgIGxkYXBfa2V5X3QgKiBrID0gKGxkYXBfa2V5X3QgKikgY2FsbG9jICgxLCBz
 aXplb2YobGRhcF9rZXlfdCkpOw0KKysgICAgTERBUE1lc3NhZ2UgKnJlcywgKmU7DQorKyAg
 ICBjaGFyICogZmlsdGVyOw0KKysgICAgaW50IGk7DQorKw0KKysgICAgaWYgKCghaykgfHwg
 KCFsKSkNCisrICAgICAgICAgcmV0dXJuIE5VTEw7DQorKw0KKysgICAgLyogQW0gaSBzdGls
 bCBjb25uZWN0ZWQgPyBSRVRSWSBuIHRpbWVzICovDQorKyAgICAvKiBYWFggVE9ETzogc2V0
 dXAgc29tZSBjb25mIHZhbHVlIGZvciByZXRyeWluZyAqLw0KKysgICAgaWYgKCEobC0+Zmxh
 Z3MgJiBGTEFHX0NPTk5FQ1RFRCkpDQorKyAgICAgICAgZm9yIChpID0gMCA7IGkgPCAyIDsg
 aSsrKQ0KKysgICAgICAgICAgICBpZiAobGRhcF9jb25uZWN0KGwpID09IDApDQorKyAgICAg
 ICAgICAgICAgICBicmVhazsNCisrDQorKyAgICAvKiBxdWljayBjaGVjayBmb3IgYXR0ZW1w
 dHMgdG8gYmUgZXZpbCAqLw0KKysgICAgaWYgKChzdHJjaHIodXNlciwgJygnKSAhPSBOVUxM
 KSB8fCAoc3RyY2hyKHVzZXIsICcpJykgIT0gTlVMTCkgfHwNCisrICAgICAgICAoc3RyY2hy
 KHVzZXIsICcqJykgIT0gTlVMTCkgfHwgKHN0cmNocih1c2VyLCAnXFwnKSAhPSBOVUxMKSkN
 CisrICAgICAgICByZXR1cm4gTlVMTDsNCisrDQorKyAgICAvKiBidWlsZCAgZmlsdGVyIGZv
 ciBMREFQIHJlcXVlc3QgKi8NCisrICAgIFJFUVVFU1RfVVNFUihmaWx0ZXIsIHVzZXIsIGwt
 PmZpbHRlcik7DQorKw0KKysgICAgaWYgKCBsZGFwX3NlYXJjaF9zdCggbC0+bGQsDQorKyAg
 ICAgICAgbC0+dV9iYXNlZG4sDQorKyAgICAgICAgTERBUF9TQ09QRV9TVUJUUkVFLA0KKysg
 ICAgICAgIGZpbHRlciwNCisrICAgICAgICBhdHRycywgMCwgJmwtPnNfdGltZW91dCwgJnJl
 cyApICE9IExEQVBfU1VDQ0VTUykgew0KKysgICAgICAgIA0KKysgICAgICAgIGxkYXBfcGVy
 cm9yKGwtPmxkLCAibGRhcF9zZWFyY2hfc3QoKSIpOw0KKysNCisrICAgICAgICBmcmVlKGZp
 bHRlcik7DQorKyAgICAgICAgZnJlZShrKTsNCisrDQorKyAgICAgICAgLyogWFhYIGVycm9y
 IG9uIHNlYXJjaCwgdGltZW91dCBldGMuLiBjbG9zZSBhc2sgZm9yIHJlY29ubmVjdCAqLw0K
 KysgICAgICAgIGxkYXBfY2xvc2UobCk7DQorKw0KKysgICAgICAgIHJldHVybiBOVUxMOw0K
 KysgICAgfSANCisrDQorKyAgICAvKiBmcmVlICovDQorKyAgICBmcmVlKGZpbHRlcik7DQor
 Kw0KKysgICAgLyogY2hlY2sgaWYgYW55IHJlc3VsdHMgKi8NCisrICAgIGkgPSBsZGFwX2Nv
 dW50X2VudHJpZXMobC0+bGQscmVzKTsNCisrICAgIGlmIChpIDw9IDApIHsNCisrICAgICAg
 ICBsZGFwX21zZ2ZyZWUocmVzKTsNCisrICAgICAgICBmcmVlKGspOw0KKysgICAgICAgIHJl
 dHVybiBOVUxMOw0KKysgICAgfQ0KKysNCisrICAgIGlmIChpID4gMSkNCisrICAgICAgICBk
 ZWJ1ZygiW0xEQVBdIGR1cGxpY2F0ZSBlbnRyaWVzLCB1c2luZyB0aGUgRklSU1QgZW50cnkg
 cmV0dXJuZWQiKTsNCisrDQorKyAgICBlID0gbGRhcF9maXJzdF9lbnRyeShsLT5sZCwgcmVz
 KTsNCisrICAgIGstPmtleXMgPSBsZGFwX2dldF92YWx1ZXNfbGVuKGwtPmxkLCBlLCBQVUJL
 RVlBVFRSKTsNCisrICAgIGstPm51bSA9IGxkYXBfY291bnRfdmFsdWVzX2xlbihrLT5rZXlz
 KTsNCisrDQorKyAgICBsZGFwX21zZ2ZyZWUocmVzKTsNCisrICAgIHJldHVybiBrOw0KKyt9
 DQorKw0KKysNCisrLyogLTEgaWYgdHJvdWJsZQ0KKysgICAwIGlmIHVzZXIgaXMgTk9UIG1l
 bWJlciBvZiBjdXJyZW50IHNlcnZlciBncm91cA0KKysgICAxIGlmIHVzZXIgSVMgTUVNQkVS
 IG9mIGN1cnJlbnQgc2VydmVyIGdyb3VwIA0KKysgKi8NCisraW50IGxkYXBfaXNtZW1iZXIo
 bGRhcF9vcHRfdCAqIGwsIGNvbnN0IGNoYXIgKiB1c2VyKSB7DQorKyAgICBMREFQTWVzc2Fn
 ZSAqcmVzOw0KKysgICAgY2hhciAqIGZpbHRlcjsNCisrICAgIGludCBpOw0KKysNCisrICAg
 IGlmICgoIWwtPnNncm91cCkgfHwgIShsLT5nX2Jhc2VkbikpDQorKyAgICAgICAgcmV0dXJu
 IDE7DQorKw0KKysgICAgLyogQW0gaSBzdGlsbCBjb25uZWN0ZWQgPyBSRVRSWSBuIHRpbWVz
 ICovDQorKyAgICAvKiBYWFggVE9ETzogc2V0dXAgc29tZSBjb25mIHZhbHVlIGZvciByZXRy
 eWluZyAqLw0KKysgICAgaWYgKCEobC0+ZmxhZ3MgJiBGTEFHX0NPTk5FQ1RFRCkpIA0KKysg
 ICAgICAgIGZvciAoaSA9IDAgOyBpIDwgMiA7IGkrKykNCisrICAgICAgICAgICAgaWYgKGxk
 YXBfY29ubmVjdChsKSA9PSAwKQ0KKysgICAgICAgICAgICAgICAgIGJyZWFrOw0KKysNCisr
 ICAgIC8qIHF1aWNrIGNoZWNrIGZvciBhdHRlbXB0cyB0byBiZSBldmlsICovDQorKyAgICBp
 ZiAoKHN0cmNocih1c2VyLCAnKCcpICE9IE5VTEwpIHx8IChzdHJjaHIodXNlciwgJyknKSAh
 PSBOVUxMKSB8fA0KKysgICAgICAgIChzdHJjaHIodXNlciwgJyonKSAhPSBOVUxMKSB8fCAo
 c3RyY2hyKHVzZXIsICdcXCcpICE9IE5VTEwpKQ0KKysgICAgICAgIHJldHVybiBGQUlMVVJF
 Ow0KKysNCisrICAgIC8qIGJ1aWxkIGZpbHRlciBmb3IgTERBUCByZXF1ZXN0ICovDQorKyAg
 ICBSRVFVRVNUX0dST1VQKGZpbHRlciwgbC0+Zmdyb3VwLCB1c2VyKTsNCisrDQorKyAgICBp
 ZiAobGRhcF9zZWFyY2hfc3QoIGwtPmxkLCANCisrICAgICAgICBsLT5nX2Jhc2VkbiwNCisr
 ICAgICAgICBMREFQX1NDT1BFX1NVQlRSRUUsDQorKyAgICAgICAgZmlsdGVyLA0KKysgICAg
 ICAgIE5VTEwsIDAsICZsLT5zX3RpbWVvdXQsICZyZXMpICE9IExEQVBfU1VDQ0VTUykgew0K
 KysgICAgDQorKyAgICAgICAgbGRhcF9wZXJyb3IobC0+bGQsICJsZGFwX3NlYXJjaF9zdCgp
 Iik7DQorKw0KKysgICAgICAgIGZyZWUoZmlsdGVyKTsNCisrDQorKyAgICAgICAgLyogWFhY
 IGVycm9yIG9uIHNlYXJjaCwgdGltZW91dCBldGMuLiBjbG9zZSBhc2sgZm9yIHJlY29ubmVj
 dCAqLw0KKysgICAgICAgIGxkYXBfY2xvc2UobCk7DQorKw0KKysgICAgICAgIHJldHVybiBG
 QUlMVVJFOw0KKysgICAgfQ0KKysNCisrICAgIGZyZWUoZmlsdGVyKTsNCisrDQorKyAgICAv
 KiBjaGVjayBpZiBhbnkgcmVzdWx0cyAqLw0KKysgICAgaWYgKGxkYXBfY291bnRfZW50cmll
 cyhsLT5sZCwgcmVzKSA+IDApIHsNCisrICAgICAgICBsZGFwX21zZ2ZyZWUocmVzKTsNCisr
 ICAgICAgICByZXR1cm4gMTsNCisrICAgIH0NCisrDQorKyAgICBsZGFwX21zZ2ZyZWUocmVz
 KTsNCisrICAgIHJldHVybiAwOw0KKyt9DQorKw0KKysvKg0KKysgKiBsZGFwLmNvbmYgc2lt
 cGxlIHBhcnNlcg0KKysgKiBYWFggVE9ETzogIHNhbml0eSBjaGVja3MNCisrICogbXVzdCBl
 aXRoZXINCisrICogLSBmcmVlIHRoZSBwcmV2aW91cyBsZGFwX29wdF9iZWZvcmUgcmVwbGFj
 aW5nIGVudHJpZXMNCisrICogLSBmcmVlIGVhY2ggbmVjZXNzYXJ5IHByZXZpb3VzbHkgcGFy
 c2VkIGVsZW1lbnRzDQorKyAqIHJldDoNCisrICogLTEgb24gRkFJTFVSRSwgMCBvbiBTVUND
 RVNTDQorKyAqLw0KKytpbnQgbGRhcF9wYXJzZV9sY29uZihsZGFwX29wdF90ICogbCkgew0K
 KysgICAgRklMRSAqIGxjZDsgLyogbGRhcC5jb25mIGRlc2NyaXB0b3IgKi8NCisrICAgIGNo
 YXIgYnVmW0JVRlNJWl07DQorKyAgICBjaGFyICogcyA9IE5VTEwsICogayA9IE5VTEwsICog
 diA9IE5VTEw7DQorKyAgICBpbnQgbGksIGxlbjsNCisrDQorKyAgICBsY2QgPSBmb3BlbiAo
 bC0+bF9jb25mLCAiciIpOw0KKysgICAgaWYgKGxjZCA9PSBOVUxMKSB7DQorKyAgICAgICAg
 LyogZGVidWcoIkNhbm5vdCBvcGVuICVzIiwgbC0+bF9jb25mKTsgKi8NCisrICAgICAgICBw
 ZXJyb3IoImxkYXBfcGFyc2VfbGNvbmYoKSIpOw0KKysgICAgICAgIHJldHVybiBGQUlMVVJF
 Ow0KKysgICAgfQ0KKysgICAgDQorKyAgICB3aGlsZSAoZmdldHMgKGJ1Ziwgc2l6ZW9mIChi
 dWYpLCBsY2QpICE9IE5VTEwpIHsNCisrDQorKyAgICAgICAgaWYgKCpidWYgPT0gJ1xuJyB8
 fCAqYnVmID09ICcjJykNCisrICAgICAgICAgICAgY29udGludWU7DQorKw0KKysgICAgICAg
 IGsgPSBidWY7DQorKyAgICAgICAgdiA9IGs7DQorKyAgICAgICAgd2hpbGUgKCp2ICE9ICdc
 MCcgJiYgKnYgIT0gJyAnICYmICp2ICE9ICdcdCcpDQorKyAgICAgICAgICAgIHYrKzsNCisr
 DQorKyAgICAgICAgaWYgKCp2ID09ICdcMCcpDQorKyAgICAgICAgICAgIGNvbnRpbnVlOw0K
 KysNCisrICAgICAgICAqKHYrKykgPSAnXDAnOw0KKysNCisrICAgICAgICB3aGlsZSAoKnYg
 PT0gJyAnIHx8ICp2ID09ICdcdCcpDQorKyAgICAgICAgICAgIHYrKzsNCisrDQorKyAgICAg
 ICAgbGkgPSBzdHJsZW4gKHYpIC0gMTsNCisrICAgICAgICB3aGlsZSAodltsaV0gPT0gJyAn
 IHx8IHZbbGldID09ICdcdCcgfHwgdltsaV0gPT0gJ1xuJykNCisrICAgICAgICAgICAgLS1s
 aTsNCisrICAgICAgICB2W2xpICsgMV0gPSAnXDAnOw0KKysNCisrICAgICAgICBpZiAoIXN0
 cmNhc2VjbXAgKGssICJ1cmkiKSkgew0KKysgICAgICAgICAgICBpZiAoKGwtPnNlcnZlcnMg
 PSBsZGFwX3BhcnNlX3NlcnZlcnModikpID09IE5VTEwpIHsNCisrICAgICAgICAgICAgICAg
 IGZhdGFsKCJlcnJvciBpbiBsZGFwIHNlcnZlcnMiKTsNCisrICAgICAgICAgICAgcmV0dXJu
 IEZBSUxVUkU7DQorKyAgICAgICAgICAgIH0NCisrDQorKyAgICAgICAgfQ0KKysgICAgICAg
 IGVsc2UgaWYgKCFzdHJjYXNlY21wIChrLCAiYmFzZSIpKSB7IA0KKysgICAgICAgICAgICBz
 ID0gc3RyY2hyICh2LCAnPycpOw0KKysgICAgICAgICAgICBpZiAocyAhPSBOVUxMKSB7DQor
 KyAgICAgICAgICAgICAgICBsZW4gPSBzIC0gdjsNCisrICAgICAgICAgICAgICAgIGwtPnVf
 YmFzZWRuID0gbWFsbG9jIChsZW4gKyAxKTsNCisrICAgICAgICAgICAgICAgIHN0cm5jcHkg
 KGwtPnVfYmFzZWRuLCB2LCBsZW4pOw0KKysgICAgICAgICAgICAgICAgbC0+dV9iYXNlZG5b
 bGVuXSA9ICdcMCc7DQorKyAgICAgICAgICAgIH0gZWxzZSB7DQorKyAgICAgICAgICAgICAg
 ICBsLT51X2Jhc2VkbiA9IHN0cmR1cCAodik7DQorKyAgICAgICAgICAgIH0NCisrICAgICAg
 ICB9DQorKyAgICAgICAgZWxzZSBpZiAoIXN0cmNhc2VjbXAgKGssICJiaW5kZG4iKSkgew0K
 KysgICAgICAgICAgICBsLT5iaW5kZG4gPSBzdHJkdXAgKHYpOw0KKysgICAgICAgIH0NCisr
 ICAgICAgICBlbHNlIGlmICghc3RyY2FzZWNtcCAoaywgImJpbmRwdyIpKSB7DQorKyAgICAg
 ICAgICAgIGwtPmJpbmRwdyA9IHN0cmR1cCAodik7DQorKyAgICAgICAgfQ0KKysgICAgICAg
 IGVsc2UgaWYgKCFzdHJjYXNlY21wIChrLCAidGltZWxpbWl0IikpIHsNCisrICAgICAgICAg
 ICAgbC0+c190aW1lb3V0LnR2X3NlYyA9IGF0b2kgKHYpOw0KKysgICAgICAgICAgICAgICAg
 fQ0KKysgICAgICAgIGVsc2UgaWYgKCFzdHJjYXNlY21wIChrLCAiYmluZF90aW1lbGltaXQi
 KSkgew0KKysgICAgICAgICAgICBsLT5iX3RpbWVvdXQudHZfc2VjID0gYXRvaSAodik7DQor
 KyAgICAgICAgfQ0KKysgICAgICAgIGVsc2UgaWYgKCFzdHJjYXNlY21wIChrLCAic3NsIikp
 IHsNCisrICAgICAgICAgICAgaWYgKCFzdHJjYXNlY21wICh2LCAic3RhcnRfdGxzIikpDQor
 KyAgICAgICAgICAgICAgICBsLT50bHMgPSAxOw0KKysgICAgICAgIH0NCisrICAgIH0NCisr
 DQorKyAgICBmY2xvc2UgKGxjZCk7DQorKyAgICByZXR1cm4gU1VDQ0VTUzsNCisrfQ0KKysN
 CisrI2VuZGlmIC8qIFdJVEhfTERBUF9QVUJLRVkgKi8NCitkaWZmIC1OdWFyIC0tZXhjbHVk
 ZSAnKi5vcmlnJyAtLWV4Y2x1ZGUgJyoucmVqJyBsZGFwYXV0aC5oIGxkYXBhdXRoLmgNCist
 LS0gbGRhcGF1dGguaAkxOTY5LTEyLTMxIDE2OjAwOjAwLjAwMDAwMDAwMCAtMDgwMA0KKysr
 KyBsZGFwYXV0aC5oCTIwMDgtMDgtMjMgMTU6MDI6NDcuMDAwMDAwMDAwIC0wNzAwDQorQEAg
 LTAsMCArMSwxMjQgQEANCisrLyoNCisrICogJElkOiBvcGVuc3NoLWxway00LjNwMS0wLjMu
 Ny5wYXRjaCx2IDEuMyAyMDA2LzA0LzE4IDE1OjI5OjA5IGVhdSBFeHAgJCANCisrICovDQor
 Kw0KKysvKg0KKysgKg0KKysgKiBDb3B5cmlnaHQgKGMpIDIwMDUsIEVyaWMgQVVHRSA8ZWF1
 QHBoZWFyLm9yZz4NCisrICogQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisrICoNCisrICogUmVk
 aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
 ciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
 ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0Og0KKysgKg0KKysgKiBSZWRpc3RyaWJ1
 dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBu
 b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
 YWltZXIuDQorKyAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
 ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
 bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
 bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4N
 CisrICogTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgcGhlYXIub3JnIG5vciB0aGUgbmFtZXMg
 b2YgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
 cHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
 cmlvciB3cml0dGVuIHBlcm1pc3Npb24uDQorKyAqDQorKyAqIFRISVMgU09GVFdBUkUgSVMg
 UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFT
 IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
 IA0KKysgKiBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
 TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
 UkUgRElTQ0xBSU1FRC4gDQorKyAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQg
 T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
 Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgDQorKyAqIE9SIENPTlNFUVVF
 TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
 RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IA0KKysgKiBMT1NTIE9GIFVT
 RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
 IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
 VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIA0KKysgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVH
 TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
 RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
 IE9GIFNVQ0ggREFNQUdFLg0KKysgKg0KKysgKg0KKysgKi8NCisrDQorKyNpZm5kZWYgTERB
 UEFVVEhfSA0KKysjZGVmaW5lIExEQVBBVVRIX0gNCisrDQorKyNkZWZpbmUgTERBUF9ERVBS
 RUNBVEVEIDENCisrDQorKyNpbmNsdWRlIDxzdHJpbmcuaD4NCisrI2luY2x1ZGUgPHRpbWUu
 aD4NCisrI2luY2x1ZGUgPGxkYXAuaD4NCisrI2luY2x1ZGUgPGxiZXIuaD4NCisrDQorKy8q
 IHRva2VucyBpbiB1c2UgZm9yIGNvbmZpZyAqLw0KKysjZGVmaW5lIF9ERUZBVUxUX0xQS19U
 T0tFTiAiVXNlTFBLIg0KKysjZGVmaW5lIF9ERUZBVUxUX1NSVl9UT0tFTiAiTHBrU2VydmVy
 cyINCisrI2RlZmluZSBfREVGQVVMVF9VU1JfVE9LRU4gIkxwa1VzZXJETiINCisrI2RlZmlu
 ZSBfREVGQVVMVF9HUlBfVE9LRU4gIkxwa0dyb3VwRE4iDQorKyNkZWZpbmUgX0RFRkFVTFRf
 QkROX1RPS0VOICJMcGtCaW5kRE4iDQorKyNkZWZpbmUgX0RFRkFVTFRfQlBXX1RPS0VOICJM
 cGtCaW5kUHciDQorKyNkZWZpbmUgX0RFRkFVTFRfTVlHX1RPS0VOICJMcGtTZXJ2ZXJHcm91
 cCINCisrI2RlZmluZSBfREVGQVVMVF9GSUxfVE9LRU4gIkxwa0ZpbHRlciINCisrI2RlZmlu
 ZSBfREVGQVVMVF9UTFNfVE9LRU4gIkxwa0ZvcmNlVExTIg0KKysjZGVmaW5lIF9ERUZBVUxU
 X0JUSV9UT0tFTiAiTHBrQmluZFRpbWVsaW1pdCINCisrI2RlZmluZSBfREVGQVVMVF9TVElf
 VE9LRU4gIkxwa1NlYXJjaFRpbWVsaW1pdCINCisrI2RlZmluZSBfREVGQVVMVF9MRFBfVE9L
 RU4gIkxwa0xkYXBDb25mIg0KKysNCisrLyogZGVmYXVsdCBvcHRpb25zICovDQorKyNkZWZp
 bmUgX0RFRkFVTFRfTFBLX09OIDANCisrI2RlZmluZSBfREVGQVVMVF9MUEtfU0VSVkVSUyBO
 VUxMDQorKyNkZWZpbmUgX0RFRkFVTFRfTFBLX1VETiBOVUxMDQorKyNkZWZpbmUgX0RFRkFV
 TFRfTFBLX0dETiBOVUxMDQorKyNkZWZpbmUgX0RFRkFVTFRfTFBLX0JJTkRETiBOVUxMDQor
 KyNkZWZpbmUgX0RFRkFVTFRfTFBLX0JJTkRQVyBOVUxMDQorKyNkZWZpbmUgX0RFRkFVTFRf
 TFBLX1NHUk9VUCBOVUxMDQorKyNkZWZpbmUgX0RFRkFVTFRfTFBLX0ZJTFRFUiBOVUxMDQor
 KyNkZWZpbmUgX0RFRkFVTFRfTFBLX1RMUyAtMQ0KKysjZGVmaW5lIF9ERUZBVUxUX0xQS19C
 VElNRU9VVCAxMA0KKysjZGVmaW5lIF9ERUZBVUxUX0xQS19TVElNRU9VVCAxMA0KKysjZGVm
 aW5lIF9ERUZBVUxUX0xQS19MRFAgTlVMTA0KKysNCisrLyogZmxhZ3MgKi8NCisrI2RlZmlu
 ZSBGTEFHX0VNUFRZCSAgICAweDAwMDAwMDAwDQorKyNkZWZpbmUgRkxBR19DT05ORUNURUQJ
 ICAgIDB4MDAwMDAwMDENCisrDQorKy8qIGZsYWcgbWFjcm9zICovDQorKyNkZWZpbmUgRkxB
 R19TRVRfRU1QVFkoeCkJCXgmPShGTEFHX0VNUFRZKQ0KKysjZGVmaW5lIEZMQUdfU0VUX0NP
 Tk5FQ1RFRCh4KQkJeHw9KEZMQUdfQ09OTkVDVEVEKQ0KKysjZGVmaW5lIEZMQUdfU0VUX0RJ
 U0NPTk5FQ1RFRCh4KQl4Jj1+KEZMQUdfQ09OTkVDVEVEKQ0KKysNCisrLyogZGVmaW5lcyAq
 Lw0KKysjZGVmaW5lIEZBSUxVUkUgLTENCisrI2RlZmluZSBTVUNDRVNTIDANCisrI2RlZmlu
 ZSBQVUJLRVlBVFRSICJzc2hQdWJsaWNLZXkiDQorKw0KKysvKiANCisrICoNCisrICogZGVm
 aW5lZCBmaWxlcyBwYXRoIA0KKysgKiAoc2hvdWxkIGJlIHJlbG9jYXRlZCB0byBwYXRobmFt
 ZXMuaCwNCisrICogaWYgb25lIGRheSBpdCdzIGluY2x1ZGVkIHdpdGhpbiB0aGUgdHJlZSkg
 DQorKyAqDQorKyAqLw0KKysjZGVmaW5lIF9QQVRIX0xEQVBfQ09ORklHX0ZJTEUgIi9ldGMv
 bGRhcC5jb25mIg0KKysNCisrLyogc3RydWN0dXJlcyAqLw0KKyt0eXBlZGVmIHN0cnVjdCBs
 ZGFwX29wdGlvbnMgew0KKysgICAgaW50IG9uOwkJCS8qIFVzZSBpdCBvciBOT1QgKi8NCisr
 ICAgIExEQVAgKiBsZDsJCQkvKiBMREFQIGZpbGUgZGVzYyAqLw0KKysgICAgY2hhciAqIHNl
 cnZlcnM7CQkvKiBwYXJzZWQgc2VydmVycyBmb3IgbGRhcGxpYiBmYWlsb3ZlciBoYW5kbGlu
 ZyAqLw0KKysgICAgY2hhciAqIHVfYmFzZWRuOwkJLyogdXNlciBiYXNlZG4gKi8NCisrICAg
 IGNoYXIgKiBnX2Jhc2VkbjsJCS8qIGdyb3VwIGJhc2VkbiAqLw0KKysgICAgY2hhciAqIGJp
 bmRkbjsJCS8qIGJpbmRkbiAqLw0KKysgICAgY2hhciAqIGJpbmRwdzsJCS8qIGJpbmQgcGFz
 c3dvcmQgKi8NCisrICAgIGNoYXIgKiBzZ3JvdXA7CQkvKiBzZXJ2ZXIgZ3JvdXAgKi8NCisr
 ICAgIGNoYXIgKiBmZ3JvdXA7CQkvKiBncm91cCBmaWx0ZXIgKi8NCisrICAgIGNoYXIgKiBm
 aWx0ZXI7CQkvKiBhZGRpdGlvbmFsIGZpbHRlciAqLw0KKysgICAgY2hhciAqIGxfY29uZjsJ
 CS8qIHVzZSBsZGFwLmNvbmYgKi8NCisrICAgIGludCB0bHM7CQkJLyogVExTIG9ubHkgKi8N
 CisrICAgIHN0cnVjdCB0aW1ldmFsIGJfdGltZW91dDsgICAvKiBiaW5kIHRpbWVvdXQgKi8N
 CisrICAgIHN0cnVjdCB0aW1ldmFsIHNfdGltZW91dDsgICAvKiBzZWFyY2ggdGltZW91dCAq
 Lw0KKysgICAgdW5zaWduZWQgaW50IGZsYWdzOwkJLyogbWlzYyBmbGFncyAocmVjb25uZWN0
 aW9uLCBmdXR1cmUgdXNlPykgKi8NCisrfSBsZGFwX29wdF90Ow0KKysNCisrdHlwZWRlZiBz
 dHJ1Y3QgbGRhcF9rZXlzIHsNCisrICAgIHN0cnVjdCBiZXJ2YWwgKioga2V5czsJLyogdGhl
 IHB1YmxpYyBrZXlzIHJldHJpZXZlZCAqLw0KKysgICAgdW5zaWduZWQgaW50IG51bTsJCS8q
 IG51bWJlciBvZiBrZXlzICovDQorK30gbGRhcF9rZXlfdDsNCisrDQorKw0KKysvKiBmdW5j
 dGlvbiBoZWFkZXJzICovDQorK3ZvaWQgbGRhcF9jbG9zZShsZGFwX29wdF90ICopOw0KKytp
 bnQgbGRhcF9jb25uZWN0KGxkYXBfb3B0X3QgKik7DQorK2NoYXIgKiBsZGFwX3BhcnNlX2dy
 b3Vwcyhjb25zdCBjaGFyICopOw0KKytjaGFyICogbGRhcF9wYXJzZV9zZXJ2ZXJzKGNvbnN0
 IGNoYXIgKik7DQorK3ZvaWQgbGRhcF9vcHRpb25zX3ByaW50KGxkYXBfb3B0X3QgKik7DQor
 K3ZvaWQgbGRhcF9vcHRpb25zX2ZyZWUobGRhcF9vcHRfdCAqKTsNCisrdm9pZCBsZGFwX2tl
 eXNfZnJlZShsZGFwX2tleV90ICopOw0KKytpbnQgbGRhcF9wYXJzZV9sY29uZihsZGFwX29w
 dF90ICopOw0KKytsZGFwX2tleV90ICogbGRhcF9nZXR1c2Vya2V5KGxkYXBfb3B0X3QgKiwg
 Y29uc3QgY2hhciAqKTsNCisraW50IGxkYXBfaXNtZW1iZXIobGRhcF9vcHRfdCAqLCBjb25z
 dCBjaGFyICopOw0KKysNCisrI2VuZGlmDQorZGlmZiAtTnVhciAtLWV4Y2x1ZGUgJyoub3Jp
 ZycgLS1leGNsdWRlICcqLnJlaicgbHBrLXVzZXItZXhhbXBsZS50eHQgbHBrLXVzZXItZXhh
 bXBsZS50eHQNCistLS0gbHBrLXVzZXItZXhhbXBsZS50eHQJMTk2OS0xMi0zMSAxNjowMDow
 MC4wMDAwMDAwMDAgLTA4MDANCisrKysgbHBrLXVzZXItZXhhbXBsZS50eHQJMjAwOC0wOC0y
 MyAxNTowMjo0Ny4wMDAwMDAwMDAgLTA3MDANCitAQCAtMCwwICsxLDExNyBAQA0KKysNCisr
 UG9zdCB0byBNTCAtPiBVc2VyIE1hZGUgUXVpY2sgSW5zdGFsbCBEb2MuDQorK0NvbnRyaWJ1
 dGlvbiBmcm9tIEpvaG4gTGFuZSA8am9obkBsYW5lLnVrLm5ldD4NCisrDQorKysrKysrKysr
 KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
 KysrKysrKysrKysrKysNCisrDQorK09wZW5TU0ggTERBUCBrZXlzdG9yZSBQYXRjaA0KKys9
 PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisrDQorK05PVEU6IHRoZXNlIG5vdGVzIGFy
 ZSBhIHRyYW5zY3JpcHQgb2YgYSBzcGVjaWZpYyBpbnN0YWxsYXRpb24NCisrICAgICAgdGhl
 eSB3b3JrIGZvciBtZSwgeW91ciBzcGVjaWZpY3MgbWF5IGJlIGRpZmZlcmVudCENCisrICAg
 ICAgZnJvbSBKb2huIExhbmUgTWFyY2ggMTd0aCAyMDA1ICAgICAgICAgam9obkBsYW5lLnVr
 Lm5ldA0KKysNCisrVGhpcyBpcyBhIHBhdGNoIHRvIE9wZW5TU0ggNC4wcDEgdG8gYWxsb3cg
 aXQgdG8gb2J0YWluIHVzZXJzJyBwdWJsaWMga2V5cw0KKytmcm9tIHRoZWlyIExEQVAgcmVj
 b3JkIGFzIGFuIGFsdGVybmF0aXZlIHRvIH4vLnNzaC9hdXRob3JpemVkX2tleXMuDQorKw0K
 KysoQXNzdW1pbmcgaGVyZSB0aGF0IG5lY2Vzc2FyeSBidWlsZCBzdHVmZiBpcyBpbiAkQlVJ
 TEQpDQorKw0KKytjZCAkQlVJTEQvb3BlbnNzaC00LjBwMQ0KKytwYXRjaCAtTnAxIC1pICRC
 VUlMRC9vcGVuc3NoLWxway00LjBwMS0wLjMucGF0Y2gNCisrbWtkaXIgLXAgL3Zhci9lbXB0
 eSAmJg0KKysuL2NvbmZpZ3VyZSAtLXByZWZpeD0vdXNyIC0tc3lzY29uZmRpcj0vZXRjL3Nz
 aCBcDQorKyAgICAtLWxpYmV4ZWNkaXI9L3Vzci9zYmluIC0td2l0aC1tZDUtcGFzc3dvcmRz
 IC0td2l0aC1wYW0gXA0KKysgICAgLS13aXRoLWxpYnM9Ii1sbGRhcCIgLS13aXRoLWNwcGZs
 YWdzPSItRFdJVEhfTERBUF9QVUJLRVkiDQorK05vdyBkby4NCisrbWFrZSAmJg0KKyttYWtl
 IGluc3RhbGwNCisrDQorK0FkZCB0aGUgZm9sbG93aW5nIGNvbmZpZyB0byAvZXRjL3NzaC9z
 c2hfY29uZmlnDQorK1VzZUxQSyB5ZXMNCisrTHBrU2VydmVycyBsZGFwOi8vbXlob3N0Lm15
 ZG9tYWluLmNvbQ0KKytMcGtVc2VyRE4gIG91PVBlb3BsZSxkYz1teWRvbWFpbixkYz1jb20N
 CisrDQorK1dlIG5lZWQgdG8gdGVsbCBzc2hkIGFib3V0IHRoZSBTU0wga2V5cyBkdXJpbmcg
 Ym9vdCwgYXMgcm9vdCdzDQorK2Vudmlyb25tZW50IGRvZXMgbm90IGV4aXN0IGF0IHRoYXQg
 dGltZS4gRWRpdCAvZXRjL3JjLmQvaW5pdC5kL3NzaGQuDQorK0NoYW5nZSB0aGUgc3RhcnR1
 cCBjb2RlIGZyb20gdGhpczoNCisrICAgICAgICAgICAgICAgIGVjaG8gIlN0YXJ0aW5nIFNT
 SCBTZXJ2ZXIuLi4iDQorKyAgICAgICAgICAgICAgICBsb2FkcHJvYyAvdXNyL3NiaW4vc3No
 ZA0KKysgICAgICAgICAgICAgICAgOzsNCisrdG8gdGhpczoNCisrICAgICAgICAgICAgICAg
 IGVjaG8gIlN0YXJ0aW5nIFNTSCBTZXJ2ZXIuLi4iDQorKyAgICAgICAgICAgICAgICBMREFQ
 UkM9Ii9yb290Ly5sZGFwcmMiIGxvYWRwcm9jIC91c3Ivc2Jpbi9zc2hkDQorKyAgICAgICAg
 ICAgICAgICA7Ow0KKysNCisrUmUtc3RhcnQgdGhlIHNzaGQgZGFlbW9uOg0KKysvZXRjL3Jj
 LmQvaW5pdC5kL3NzaGQgcmVzdGFydA0KKysNCisrSW5zdGFsbCB0aGUgYWRkaXRpb25hbCBM
 REFQIHNjaGVtYQ0KKytjcCAkQlVJTEQvb3BlbnNzaC1scGstMC4yLnNjaGVtYSAgL2V0Yy9v
 cGVubGRhcC9zY2hlbWEvb3BlbnNzaC5zY2hlbWENCisrDQorK05vdyBhZGQgdGhlIG9wZW5T
 U0ggTERBUCBzY2hlbWEgdG8gL2V0Yy9vcGVubGRhcC9zbGFwZC5jb25mOg0KKytBZGQgdGhl
 IGZvbGxvd2luZyB0byB0aGUgZW5kIG9mIHRoZSBleGlzdGluZyBibG9jayBvZiBzY2hlbWEg
 aW5jbHVkZXMNCisraW5jbHVkZSAgICAgICAgIC9ldGMvb3BlbmxkYXAvc2NoZW1hL29wZW5z
 c2guc2NoZW1hDQorKw0KKytSZS1zdGFydCB0aGUgTERBUCBzZXJ2ZXI6DQorKy9ldGMvcmMu
 ZC9pbml0LmQvc2xhcGQgcmVzdGFydA0KKysNCisrVG8gYWRkIG9uZSBvciBtb3JlIHB1Ymxp
 YyBrZXlzIHRvIGEgdXNlciwgZWcgInRlc3R1c2VyIiA6DQorK2xkYXBzZWFyY2ggLXggLVcg
 LVogLUxMTCAtYiAidWlkPXRlc3R1c2VyLG91PVBlb3BsZSxkYz1teWRvbWFpbixkYz1jb20i
 IC1EDQorKyJ1aWQ9dGVzdHVzZXIsb3U9UGVvcGxlLGRjPW15ZG9tYWluLGRjPWNvbSIgPiAv
 dG1wL3Rlc3R1c2VyDQorKw0KKythcHBlbmQgdGhlIGZvbGxvd2luZyB0byB0aGlzIC90bXAv
 dGVzdHVzZXIgZmlsZQ0KKytvYmplY3RjbGFzczogbGRhcFB1YmxpY0tleQ0KKytzc2hQdWJs
 aWNLZXk6IHNzaC1yc2ENCisrQUFBQUIzTnphQzF5YzJFQUFBQUJKUUFBQUlCM2RzcndxWHFE
 N0U0ellZcnh3ZERLQlVReEtNaW9YeTlweEZWYWk2NGtBUHhqVTlLUw0KKytxSW83UWZranNs
 ZnNqZmxrc2pmbGRma2pzbGRmakxYLzV6a3pSbVQyOEk1cGlHenVuUHYxN1M4OXo4WHdTc3VB
 b1IxdDg2dCs1ZGxJDQorKzdlWkUvZ1ZibjJVUWtRcTcra2REVFMyeVhWNlZuQzUyTi9rS0xH
 M2NpQmtCQXc9PSBHZW5lcmFsIFB1cnBvc2UgUlNBIEtleQ0KKysNCisrVGhlbiBkbyBhIG1v
 ZGlmeToNCisrbGRhcG1vZGlmeSAteCAtRCAidWlkPXRlc3R1c2VyLG91PVBlb3BsZSxkYz1t
 eWRvbWFpbixkYz1jb20iIC1XIC1mDQorKy90bXAvdGVzdHVzZXIgLVoNCisrRW50ZXIgTERB
 UCBQYXNzd29yZDoNCisrbW9kaWZ5aW5nIGVudHJ5ICJ1aWQ9dGVzdHVzZXIsb3U9UGVvcGxl
 LGRjPW15ZG9tYWluLGRjPWNvbSINCisrQW5kIGNoZWNrIHRoZSBtb2RpZnkgaXMgb2s6DQor
 K2xkYXBzZWFyY2ggLXggLVcgLVogLWIgInVpZD10ZXN0dXNlcixvdT1QZW9wbGUsZGM9bXlk
 b21haW4sZGM9Y29tIiAtRA0KKysidWlkPXRlc3R1c2VyLG91PVBlb3BsZSxkYz1teWRvbWFp
 bixkYz1jb20iDQorK0VudGVyIExEQVAgUGFzc3dvcmQ6DQorKyMgZXh0ZW5kZWQgTERJRg0K
 KysjDQorKyMgTERBUHYzDQorKyMgYmFzZSA8dWlkPXRlc3R1c2VyLG91PVBlb3BsZSxkYz1t
 eWRvbWFpbixkYz1jb20+IHdpdGggc2NvcGUgc3ViDQorKyMgZmlsdGVyOiAob2JqZWN0Y2xh
 c3M9KikNCisrIyByZXF1ZXN0aW5nOiBBTEwNCisrIw0KKysNCisrIyB0ZXN0dXNlciwgUGVv
 cGxlLCBteWRvbWFpbi5jb20NCisrZG46IHVpZD10ZXN0dXNlcixvdT1QZW9wbGUsZGM9bXlk
 b21haW4sZGM9Y29tDQorK3VpZDogdGVzdHVzZXINCisrY246IHRlc3R1c2VyDQorK29iamVj
 dENsYXNzOiBhY2NvdW50DQorK29iamVjdENsYXNzOiBwb3NpeEFjY291bnQNCisrb2JqZWN0
 Q2xhc3M6IHRvcA0KKytvYmplY3RDbGFzczogc2hhZG93QWNjb3VudA0KKytvYmplY3RDbGFz
 czogbGRhcFB1YmxpY0tleQ0KKytzaGFkb3dMYXN0Q2hhbmdlOiAxMjc1Nw0KKytzaGFkb3dN
 YXg6IDk5OTk5DQorK3NoYWRvd1dhcm5pbmc6IDcNCisrbG9naW5TaGVsbDogL2Jpbi9iYXNo
 DQorK3VpZE51bWJlcjogOTk5OQ0KKytnaWROdW1iZXI6IDUwMQ0KKytob21lRGlyZWN0b3J5
 OiAvaG9tZS90ZXN0dXNlcg0KKyt1c2VyUGFzc3dvcmQ6OiBlMU5UU0VGOVVEZ3dWMWhuTTFW
 alVEUkpLMGsxWW5GaUwxZDRaVUpPYlhsWlozWjNVVFU9DQorK3NzaFB1YmxpY0tleTogc3No
 LXJzYQ0KKytBQUFBQjNOemFDMXljMkVBQUFBQkpRQUFBSUIzZHNyd3FYcUQ3RTR6WVlyeHdk
 REtCVVF4S01pb1h5OXB4RlZhaTY0a0FQeGpVOUtTcUlvN1Fma2pzbGZzamZsa3NqZmxkZmtq
 c2xkZmpMWC81emt6Um1UMjhJNXBpR3p1blB2MTdTODl6DQorKzhYd1NzdUFvUjF0ODZ0KzVk
 bEk3ZVpFL2dWYm4yVVFrUXE3K2tkRFRTMnlYVjZWbkM1Mk4va0tMRzNjaUJrQkF3PT0gR2Vu
 ZXJhbCBQdXJwb3NlIFJTQSBLZXkNCisrDQorKyMgc2VhcmNoIHJlc3VsdA0KKytzZWFyY2g6
 IDMNCisrcmVzdWx0OiAwIFN1Y2Nlc3MNCisrDQorKyMgbnVtUmVzcG9uc2VzOiAyDQorKyMg
 bnVtRW50cmllczogMQ0KKysNCisrTm93IHN0YXJ0IGEgc3NoIHNlc3Npb24gdG8gdXNlciAi
 dGVzdHVzZXIiIGZyb20gdXN1YWwgc3NoIGNsaWVudCAoZS5nLg0KKytwdVRUWSkuIExvZ2lu
 IHNob3VsZCBzdWNjZWVkLg0KKysNCisrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
 KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KK2RpZmYg
 LU51YXIgLS1leGNsdWRlICcqLm9yaWcnIC0tZXhjbHVkZSAnKi5yZWonIE1ha2VmaWxlLmlu
 IE1ha2VmaWxlLmluDQorLS0tIE1ha2VmaWxlLmluCTIwMDgtMDctMDggMDc6MjE6MTIuMDAw
 MDAwMDAwIC0wNzAwDQorKysrIE1ha2VmaWxlLmluCTIwMDgtMDgtMjMgMTU6MDI6NDcuMDAw
 MDAwMDAwIC0wNzAwDQorQEAgLTg3LDcgKzg3LDcgQEANCisgCWF1dGgta3JiNS5vIFwNCisg
 CWF1dGgyLWdzcy5vIGdzcy1zZXJ2Lm8gZ3NzLXNlcnYta3JiNS5vIFwNCisgCWxvZ2lucmVj
 Lm8gYXV0aC1wYW0ubyBhdXRoLXNoYWRvdy5vIGF1dGgtc2lhLm8gbWQ1Y3J5cHQubyBcDQor
 LQlhdWRpdC5vIGF1ZGl0LWJzbS5vIHBsYXRmb3JtLm8gc2Z0cC1zZXJ2ZXIubyBzZnRwLWNv
 bW1vbi5vIFwNCisrCWF1ZGl0Lm8gYXVkaXQtYnNtLm8gcGxhdGZvcm0ubyBsZGFwYXV0aC5v
 IHNmdHAtc2VydmVyLm8gc2Z0cC1jb21tb24ubyBcDQorIAlyb2FtaW5nX2NvbW1vbi5vDQor
 IA0KKyBNQU5QQUdFUwk9IG1vZHVsaS41Lm91dCBzY3AuMS5vdXQgc3NoLWFkZC4xLm91dCBz
 c2gtYWdlbnQuMS5vdXQgc3NoLWtleWdlbi4xLm91dCBzc2gta2V5c2Nhbi4xLm91dCBzc2gu
 MS5vdXQgc3NoZC44Lm91dCBzZnRwLXNlcnZlci44Lm91dCBzZnRwLjEub3V0IHNzaC1yYW5k
 LWhlbHBlci44Lm91dCBzc2gta2V5c2lnbi44Lm91dCBzc2hkX2NvbmZpZy41Lm91dCBzc2hf
 Y29uZmlnLjUub3V0DQorZGlmZiAtTnVhciAtLWV4Y2x1ZGUgJyoub3JpZycgLS1leGNsdWRl
 ICcqLnJlaicgb3BlbnNzaC1scGtfb3BlbmxkYXAuc2NoZW1hIG9wZW5zc2gtbHBrX29wZW5s
 ZGFwLnNjaGVtYQ0KKy0tLSBvcGVuc3NoLWxwa19vcGVubGRhcC5zY2hlbWEJMTk2OS0xMi0z
 MSAxNjowMDowMC4wMDAwMDAwMDAgLTA4MDANCisrKysgb3BlbnNzaC1scGtfb3BlbmxkYXAu
 c2NoZW1hCTIwMDgtMDgtMjMgMTU6MDI6NDcuMDAwMDAwMDAwIC0wNzAwDQorQEAgLTAsMCAr
 MSwxOSBAQA0KKysjDQorKyMgTERBUCBQdWJsaWMgS2V5IFBhdGNoIHNjaGVtYSBmb3IgdXNl
 IHdpdGggb3BlbnNzaC1sZGFwcHVia2V5DQorKyMgQXV0aG9yOiBFcmljIEFVR0UgPGVhdUBw
 aGVhci5vcmc+DQorKyMgDQorKyMgQmFzZWQgb24gdGhlIHByb3Bvc2FsIG9mIDogTWFyayBS
 dWlqdGVyDQorKyMNCisrDQorKw0KKysjIG9jdGV0U3RyaW5nIFNZTlRBWA0KKythdHRyaWJ1
 dGV0eXBlICggMS4zLjYuMS40LjEuMjQ1NTIuNTAwLjEuMS4xLjEzIE5BTUUgJ3NzaFB1Ymxp
 Y0tleScgDQorKwlERVNDICdNQU5EQVRPUlk6IE9wZW5TU0ggUHVibGljIGtleScgDQorKwlF
 UVVBTElUWSBvY3RldFN0cmluZ01hdGNoDQorKwlTWU5UQVggMS4zLjYuMS40LjEuMTQ2Ni4x
 MTUuMTIxLjEuNDAgKQ0KKysNCisrIyBwcmludGFibGVTdHJpbmcgU1lOVEFYIHllc3xubw0K
 KytvYmplY3RjbGFzcyAoIDEuMy42LjEuNC4xLjI0NTUyLjUwMC4xLjEuMi4wIE5BTUUgJ2xk
 YXBQdWJsaWNLZXknIFNVUCB0b3AgQVVYSUxJQVJZDQorKwlERVNDICdNQU5EQVRPUlk6IE9w
 ZW5TU0ggTFBLIG9iamVjdGNsYXNzJw0KKysJTVVTVCAoIHNzaFB1YmxpY0tleSAkIHVpZCAp
 IA0KKysJKQ0KK2RpZmYgLU51YXIgLS1leGNsdWRlICcqLm9yaWcnIC0tZXhjbHVkZSAnKi5y
 ZWonIG9wZW5zc2gtbHBrX3N1bi5zY2hlbWEgb3BlbnNzaC1scGtfc3VuLnNjaGVtYQ0KKy0t
 LSBvcGVuc3NoLWxwa19zdW4uc2NoZW1hCTE5NjktMTItMzEgMTY6MDA6MDAuMDAwMDAwMDAw
 IC0wODAwDQorKysrIG9wZW5zc2gtbHBrX3N1bi5zY2hlbWEJMjAwOC0wOC0yMyAxNTowMjo0
 Ny4wMDAwMDAwMDAgLTA3MDANCitAQCAtMCwwICsxLDIxIEBADQorKyMNCisrIyBMREFQIFB1
 YmxpYyBLZXkgUGF0Y2ggc2NoZW1hIGZvciB1c2Ugd2l0aCBvcGVuc3NoLWxkYXBwdWJrZXkN
 CisrIyBBdXRob3I6IEVyaWMgQVVHRSA8ZWF1QHBoZWFyLm9yZz4NCisrIyANCisrIyBTY2hl
 bWEgZm9yIFN1biBEaXJlY3RvcnkgU2VydmVyLg0KKysjIEJhc2VkIG9uIHRoZSBvcmlnaW5h
 bCBzY2hlbWEsIG1vZGlmaWVkIGJ5IFN0ZWZhbiBGaXNjaGVyLg0KKysjDQorKw0KKytkbjog
 Y249c2NoZW1hDQorKw0KKysjIG9jdGV0U3RyaW5nIFNZTlRBWA0KKythdHRyaWJ1dGVUeXBl
 czogKCAxLjMuNi4xLjQuMS4yNDU1Mi41MDAuMS4xLjEuMTMgTkFNRSAnc3NoUHVibGljS2V5
 JyANCisrCURFU0MgJ01BTkRBVE9SWTogT3BlblNTSCBQdWJsaWMga2V5JyANCisrCUVRVUFM
 SVRZIG9jdGV0U3RyaW5nTWF0Y2gNCisrCVNZTlRBWCAxLjMuNi4xLjQuMS4xNDY2LjExNS4x
 MjEuMS40MCApDQorKw0KKysjIHByaW50YWJsZVN0cmluZyBTWU5UQVggeWVzfG5vDQorK29i
 amVjdENsYXNzZXM6ICggMS4zLjYuMS40LjEuMjQ1NTIuNTAwLjEuMS4yLjAgTkFNRSAnbGRh
 cFB1YmxpY0tleScgU1VQIHRvcCBBVVhJTElBUlkNCisrCURFU0MgJ01BTkRBVE9SWTogT3Bl
 blNTSCBMUEsgb2JqZWN0Y2xhc3MnDQorKwlNVVNUICggc3NoUHVibGljS2V5ICQgdWlkICkg
 DQorKwkpDQorZGlmZiAtTnVhciAtLWV4Y2x1ZGUgJyoub3JpZycgLS1leGNsdWRlICcqLnJl
 aicgUkVBRE1FLmxwayBSRUFETUUubHBrDQorLS0tIFJFQURNRS5scGsJMTk2OS0xMi0zMSAx
 NjowMDowMC4wMDAwMDAwMDAgLTA4MDANCisrKysgUkVBRE1FLmxwawkyMDA4LTA4LTIzIDE1
 OjAyOjQ3LjAwMDAwMDAwMCAtMDcwMA0KK0BAIC0wLDAgKzEsMjY3IEBADQorK09wZW5TU0gg
 TERBUCBQVUJMSUMgS0VZIFBBVENIIA0KKytDb3B5cmlnaHQgKGMpIDIwMDMgRXJpYyBBVUdF
 IChlYXVAcGhlYXIub3JnKQ0KKytBbGwgcmlnaHRzIHJlc2VydmVkLg0KKysNCisrUmVkaXN0
 cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
 aXRob3V0DQorK21vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
 ZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KKythcmUgbWV0Og0KKysxLiBSZWRpc3RyaWJ1dGlv
 bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KKysg
 ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
 c2NsYWltZXIuDQorKzIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
 cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQorKyAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
 IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUNCisrICAg
 ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
 IGRpc3RyaWJ1dGlvbi4NCisrMy4gVGhlIG5hbWUgb2YgdGhlIGF1dGhvciBtYXkgbm90IGJl
 IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzDQorKyAgIGRlcml2ZWQgZnJv
 bSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
 aW9uLg0KKysNCisrVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBg
 QVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1INCisrSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
 VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUw0KKytP
 RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
 IEFSRSBESVNDTEFJTUVELg0KKytJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJ
 QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsDQorK0lOQ0lERU5UQUwsIFNQRUNJQUws
 IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVA0K
 KytOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
 RVJWSUNFUzsgTE9TUyBPRiBVU0UsDQorK0RBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
 IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQ0KKytUSEVPUlkgT0Yg
 TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
 T1JUDQorKyhJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
 QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRg0KKytUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
 VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KKysNCisrcHVycG9z
 ZXMgb2YgdGhpcyBwYXRjaDoNCisrDQorK1RoaXMgcGF0Y2ggd291bGQgaGVscCB0byBoYXZl
 IGF1dGhlbnRpY2F0aW9uIGNlbnRyYWxpemF0aW9uIHBvbGljeQ0KKyt1c2luZyBzc2ggcHVi
 bGljIGtleSBhdXRoZW50aWNhdGlvbi4NCisrVGhpcyBwYXRjaCBjb3VsZCBiZSBhbiBhbHRl
 cm5hdGl2ZSB0byBvdGhlciAic2VjdXJlIiBhdXRoZW50aWNhdGlvbiBzeXN0ZW0NCisrd29y
 a2luZyBpbiBhIHNpbWlsYXIgd2F5IChLZXJiZXJvcywgU2VjdXJJRCwgZXRjLi4uKSwgZXhj
 ZXB0IHRoZSBmYWN0IA0KKyt0aGF0IGl0J3MgYmFzZWQgb24gT3BlblNTSCBhbmQgaXRzIHB1
 YmxpYyBrZXkgYWJpbGl0aWVzLg0KKysNCisrPj4gRllJOiA8PA0KKysndWlkJzogbWVhbnMg
 dW5peCBhY2NvdW50cyBleGlzdGluZyBvbiB0aGUgY3VycmVudCBzZXJ2ZXINCisrJ2xwa1Nl
 cnZlckdyb3VwOicgbWVhbiBzZXJ2ZXIgZ3JvdXAgY29uZmlndXJlZCBvbiB0aGUgY3VycmVu
 dCBzZXJ2ZXIgKCdscGtTZXJ2ZXJHcm91cCcgaW4gc3NoZF9jb25maWcpDQorKw0KKytleGFt
 cGxlIHNjaGVtYToNCisrDQorKw0KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
 ICAgc2VydmVyMSAodWlkOiBlYXUscml2YWwsdG90bykgKGxwa1NlcnZlckdyb3VwOiB1bml4
 KQ0KKysgICAgICAgICAgICAgICAgX19fX19fX19fX18gICAgICAvDQorKyAgICAgICAgICAg
 ICAgIC8gICAgICAgICAgIFwgLS0tIC0gc2VydmVyMyAodWlkOiBlYXUsIHRpdGkpIChscGtT
 ZXJ2ZXJHcm91cDogdW5peCkNCisrICAgICAgICAgICAgICB8IExEQVAgU2VydmVyIHwgICAg
 XA0KKysJICAgICAgfCBlYXUgICxyaXZhbCB8ICAgICBzZXJ2ZXIyICh1aWQ6IHJpdmFsLCBl
 YXUpIChscGtTZXJ2ZXJHcm91cDogdW5peCkNCisrCSAgICAgIHwgdGl0aSAsdG90byAgfA0K
 KysJICAgICAgfCB1c2VyeCwuLi4uICB8ICAgICAgICAgc2VydmVyNSAodWlkOiBlYXUpICAo
 bHBrU2VydmVyR3JvdXA6IG1haWwpDQorKyAgICAgICAgICAgICAgIFxfX19fX19fX19fXy8g
 XCAgICAgICAvDQorKwkgICAgICAgICAgICAgICAgICAgICAgIC0tLS0tIC0gc2VydmVyNCAo
 dWlkOiBlYXUsIHJpdmFsKSAgKG5vIGdyb3VwIGNvbmZpZ3VyZWQpDQorKwkJCSAgICAgICAg
 ICAgICBcDQorKwkJCQkgICAgICAgIGV0Yy4uLg0KKysNCisrLSBXSEFUIFdFIE5FRUQgOg0K
 KysNCisrICAqIGNvbmZpZ3VyZWQgTERBUCBzZXJ2ZXIgc29tZXdoZXJlIG9uIHRoZSBuZXR3
 b3JrIChpLmUuIE9wZW5MREFQKQ0KKysgICogcGF0Y2hlZCBzc2hkICh3aXRoIHRoaXMgcGF0
 Y2ggOykNCisrICAqIExEQVAgdXNlcigvZ3JvdXApIGVudHJ5IChsb29rIGF0IHVzZXJzLmxk
 aWYgKCYgZ3JvdXBzLmxkaWYpKToNCisrICAgICAgICBVc2VyIGVudHJ5Og0KKysJLSBhdHRh
 Y2hlZCB0byB0aGUgJ2xkYXBQdWJsaWNLZXknIG9iamVjdGNsYXNzDQorKwktIGF0dGFjaGVk
 IHRvIHRoZSAncG9zaXhBY2NvdW50JyBvYmplY3RjbGFzcw0KKysJLSB3aXRoIGEgZmlsbGVk
 ICdzc2hQdWJsaWNLZXknIGF0dHJpYnV0ZSANCisrCUV4YW1wbGU6DQorKwkJZG46IHVpZD1l
 YXUsb3U9dXNlcnMsZGM9Y3Vja29vcyxkYz1uZXQNCisrCQlvYmplY3RjbGFzczogdG9wDQor
 KwkJb2JqZWN0Y2xhc3M6IHBlcnNvbg0KKysJCW9iamVjdGNsYXNzOiBvcmdhbml6YXRpb25h
 bFBlcnNvbg0KKysJCW9iamVjdGNsYXNzOiBwb3NpeEFjY291bnQNCisrCQlvYmplY3RjbGFz
 czogbGRhcFB1YmxpY0tleQ0KKysJCWRlc2NyaXB0aW9uOiBFcmljIEFVR0UgQWNjb3VudA0K
 KysJCXVzZXJQYXNzd29yZDogYmxhaA0KKysJCWNuOiBFcmljIEFVR0UNCisrCQlzbjogRXJp
 YyBBVUdFDQorKwkJdWlkOiBlYXUNCisrCQl1aWROdW1iZXI6IDEwMzQNCisrCQlnaWROdW1i
 ZXI6IDENCisrCQlob21lRGlyZWN0b3J5OiAvZXhwb3J0L2hvbWUvZWF1DQorKwkJc3NoUHVi
 bGljS2V5OiBzc2gtZHNzIEFBQUFCMy4uLg0KKysJCXNzaFB1YmxpY0tleTogc3NoLWRzcyBB
 QUFBTTUuLi4NCisrDQorKwlHcm91cCBlbnRyeToNCisrCS0gYXR0YWNoZWQgdG8gdGhlICdw
 b3NpeEdyb3VwJyBvYmplY3RjbGFzcw0KKysJLSB3aXRoIGEgJ2NuJyBncm91cG5hbWUgYXR0
 cmlidXRlDQorKwktIHdpdGggbXVsdGlwbGUgJ21lbWJlclVpZCcgYXR0cmlidXRlcyBmaWxs
 ZWQgd2l0aCB1c2VybmFtZXMgYWxsb3dlZCBpbiB0aGlzIGdyb3VwDQorKwlFeGFtcGxlOg0K
 KysJCSMgZmV3IG1lbWJlcnMNCisrCQlkbjogY249dW5peCxvdT1ncm91cHMsZGM9Y3Vja29v
 cyxkYz1uZXQNCisrCQlvYmplY3RjbGFzczogdG9wDQorKwkJb2JqZWN0Y2xhc3M6IHBvc2l4
 R3JvdXANCisrCQlkZXNjcmlwdGlvbjogVW5peCBiYXNlZCBzZXJ2ZXJzIGdyb3VwDQorKwkJ
 Y246IHVuaXgNCisrCQlnaWROdW1iZXI6IDEwMDINCisrCQltZW1iZXJVaWQ6IGVhdQ0KKysJ
 CW1lbWJlclVpZDogdXNlcjENCisrCQltZW1iZXJVaWQ6IHVzZXIyDQorKw0KKysNCisrLSBI
 T1cgSVQgV09SS1MgOg0KKysNCisrICAqIHdpdGhvdXQgcGF0Y2gNCisrICBJZiBhIHVzZXIg
 d2FudHMgdG8gYXV0aGVudGljYXRlIHRvIGxvZyBpbiBhIHNlcnZlciB0aGUgc3NoZCwgd2ls
 bCBmaXJzdCBsb29rIGZvciBhdXRoZW50aWNhdGlvbiBtZXRob2QgYWxsb3dlZCAoUlNBYXV0
 aCxrZXJiZXJvcyxldGMuLikNCisrICBhbmQgaWYgUlNBYXV0aCBhbmQgdGlja2V0cyBiYXNl
 ZCBhdXRoIGZhaWxzLCBpdCB3aWxsIGZhbGxiYWNrIHRvIHN0YW5kYXJkIHBhc3N3b3JkIGF1
 dGhlbnRpY2F0aW9uIChpZiBlbmFibGVkKS4NCisrDQorKyAgKiB3aXRoIHRoZSBwYXRjaA0K
 KysgIElmIGEgdXNlciB3YW50IHRvIGF1dGhlbnRpY2F0ZSB0byBsb2cgaW4gYSBzZXJ2ZXIs
 IHRoZSBzc2hkIHdpbGwgZmlyc3QgbG9vayBmb3IgYXV0aCBtZXRob2QgaW5jbHVkaW5nIExE
 QVAgcHVia2V5LCBpZiB0aGUgbGRhcHB1YmtleSBvcHRpb25zIGlzIGVuYWJsZWQuDQorKyAg
 SXQgd2lsbCBkbyBhbiBsZGFwc2VhcmNoIHRvIGdldCB0aGUgcHVibGljIGtleSBkaXJlY3Rs
 eSBmcm9tIHRoZSBMREFQIGluc3RlYWQgb2YgcmVhZGluZyBpdCBmcm9tIHRoZSBzZXJ2ZXIg
 ZmlsZXN5c3RlbS4gDQorKyAgKHVzdWFsbHkgaW4gJEhPTUUvLnNzaC9hdXRob3JpemVkX2tl
 eXMpDQorKw0KKysgIElmIGdyb3VwcyBhcmUgZW5hYmxlZCwgaXQgd2lsbCBhbHNvIGNoZWNr
 IGlmIHRoZSB1c2VyIHRoYXQgd2FudHMgdG8gbG9naW4gaXMgaW4gdGhlIGdyb3VwIG9mIHRo
 ZSBzZXJ2ZXIgaGUgaXMgdHJ5aW5nIHRvIGxvZyBpbnRvLg0KKysgIElmIGl0IGZhaWxzLCBp
 dCBmYWxscyBiYWNrIG9uIFJTQSBhdXRoIGZpbGVzICgkSE9NRS8uc3NoL2F1dGhvcml6ZWRf
 a2V5cyksIGV0Yy4uIGFuZCBmaW5hbGx5IHRvIHN0YW5kYXJkIHBhc3N3b3JkIGF1dGhlbnRp
 Y2F0aW9uIChpZiBlbmFibGVkKS4NCisrDQorKyAgNyB0b2tlbnMgYXJlIGFkZGVkIHRvIHNz
 aGRfY29uZmlnIDoNCisrICAjIGhlcmUgaXMgdGhlIG5ldyBwYXRjaGVkIGxkYXAgcmVsYXRl
 ZCB0b2tlbnMNCisrICAjIGVudHJpZXMgaW4geW91ciBMREFQIG11c3QgYmUgcG9zaXhBY2Nv
 dW50ICYgc3Ryb25nQXV0aGVudGljYXRpb25Vc2VyICYgcG9zaXhHcm91cA0KKysgIFVzZUxQ
 SyB5ZXMJCQkJCQkJCSMgbG9vayB0aGUgcHViIGtleSBpbnRvIExEQVANCisrICBMcGtTZXJ2
 ZXJzIGxkYXA6Ly8xMC4zMS4zMi41LyBsZGFwOi8vMTAuMzEuMzIuNCBsZGFwOi8vMTAuMzEu
 MzIuMwkjIHdoaWNoIExEQVAgc2VydmVyIGZvciB1c2VycyA/IChVUkwgZm9ybWF0KQ0KKysg
 IExwa1VzZXJETiAgb3U9dXNlcnMsZGM9Zm9vYmFyLGRjPW5ldAkJCQkJIyB3aGljaCBiYXNl
 IEROIGZvciB1c2VycyA/DQorKyAgTHBrR3JvdXBETiBvdT1ncm91cHMsZGM9Zm9vYmFyLGRj
 PW5ldAkJCQkJIyB3aGljaCBiYXNlIEROIGZvciBncm91cHMgPyANCisrICBMcGtCaW5kRE4g
 Y249bWFuYWdlcixkYz1mb29iYXIsZGM9bmV0CQkJCQkjIHdoaWNoIGJpbmQgRE4gPw0KKysg
 IExwa0JpbmRQdyBhc2VjcmV0CQkJCQkJCSMgYmluZCBETiBjcmVkaWRlbnRpYWxzDQorKyAg
 THBrU2VydmVyR3JvdXAgYWdyb3VwbmFtZQkJCQkJCSMgdGhlIGdyb3VwIHRoZSBzZXJ2ZXIg
 aXMgcGFydCBvZg0KKysNCisrICBSaWdodCBub3cgaSdtIHVzaW5nIGFub255bW91cyBiaW5k
 aW5nIHRvIGdldCBwdWJsaWMga2V5cywgYmVjYXVzZSBnZXR0aW5nIHB1YmxpYyBrZXlzIG9m
 IHNvbWVvbmUgZG9lc24ndCBpbXBlcnNvbmF0ZSBoaW24IGJ1dCB0aGVyZSBpcyBzb21lDQor
 KyAgZmxhd3MgeW91IGhhdmUgdG8gdGFrZSBjYXJlIG9mLg0KKysNCisrLSBIT1cgVE8gSU5T
 RVJUIEEgVVNFUi9LRVkgSU5UTyBBTiBMREFQIEVOVFJZDQorKw0KKysgICogbXkgd2F5ICh0
 aGVyZSBpcyBwbGVudHkgOikNCisrICAtIGNyZWF0ZSBsZGlmIGZpbGUgKGkuZS4gdXNlcnMu
 bGRpZikNCisrICAtIGNhdCB+Ly5zc2gvaWRfZHNhLnB1YiBPUiBjYXQgfi8uc3NoL2lkX3Jz
 YS5wdWIgT1IgY2F0IH4vLnNzaC9pZGVudGl0eS5wdWINCisrICAtIG15IHdheSBpbiA0IHN0
 ZXBzIDoNCisrICBFeGFtcGxlOg0KKysNCisrICAjIHlvdSBhZGQgdGhpcyB0byB0aGUgdXNl
 ciBlbnRyeSBpbiB0aGUgTERJRiBmaWxlIDoNCisrICBbLi4uXQ0KKysgIG9iamVjdGNsYXNz
 OiBwb3NpeEFjY291bnQNCisrICBvYmplY3RjbGFzczogbGRhcFB1YmxpY0tleQ0KKysgIFsu
 Li5dDQorKyAgc3NoUHVibGlLZXk6IHNzaC1kc3MgQUFBQUJEaDEyRERVUjIuLi4NCisrICBb
 Li4uXQ0KKysNCisrICAjIGluc2VydCB5b3VyIGVudHJ5IGFuZCB5b3UncmUgZG9uZSA6KQ0K
 KysgIGxkYXBhZGQgLUQgYmFsYmxhYmxhIC13IGJsZWggPCBmaWxlLmxkaWYgDQorKyAgDQor
 KyAgYWxsIHN0YW5kYXJkIG9wdGlvbnMgY2FuIGJlIHByZXNlbnQgaW4gdGhlICdzc2hQdWJs
 aWNLZXknIGF0dHJpYnV0ZS4NCisrDQorKy0gV0hZIDoNCisrDQorKyAgU2ltcGx5IGJlY2F1
 c2UsIGkgd2FzIGxvb2tpbmcgZm9yIGEgd2F5IHRvIGNlbnRyYWxpemUgYWxsIHN5c2FkbWlu
 cyBhdXRoZW50aWNhdGlvbiwgZWFzaWx5LCAgd2l0aG91dCBjb21wbGV0ZWx5IHVzaW5nIExE
 QVAgDQorKyAgYXMgYXV0aGVudGljYXRpb24gbWV0aG9kIChsaWtlIHBhbV9sZGFwIGV0Yy4u
 KS4gIA0KKysgIA0KKysgIEFmdGVyIGxvb2tpbmcgaW50byBLZXJiZXJvcywgU2VjdXJJRCwg
 YW5kIG90aGVyIGNlbnRyYWxpemVkIHNlY3VyZSBhdXRoZW50aWNhdGlvbnMgc3lzdGVtcywg
 dGhlIHVzZSBvZiBSU0EgYW5kIExEQVAgdG8gZ2V0IA0KKysgIHB1YmxpYyBrZXkgZm9yIGF1
 dGhlbnRpY2F0aW9uIGFsbG93cyB1cyB0byBjb250cm9sIHdobyBoYXMgYWNjZXNzIHRvIHdo
 aWNoIHNlcnZlciAodGhlIHVzZXIgbmVlZHMgYW4gYWNjb3VudCBhbmQgdG8gYmUgaW4gJ3N0
 cm9uZ0F1dGhlbnRpY2F0aW9uVXNlcicNCisrICBvYmplY3RjbGFzcyB3aXRoaW4gTERBUCBh
 bmQgcGFydCBvZiB0aGUgZ3JvdXAgdGhlIFNTSCBzZXJ2ZXIgaXMgaW4pLiANCisrDQorKyAg
 UGFzc3dvcmRzIHVwZGF0ZSBhcmUgbm8gbG9uZ2VyIGEgbmlnaHRtYXJlIGZvciBhIHNlcnZl
 ciBmYXJtIChrZXkgcGFpciBwYXNzcGhyYXNlIGlzIHN0b3JlZCBvbiBlYWNoIHVzZXIncyBi
 b3ggYW5kIHByaXZhdGUga2V5IGlzIGxvY2FsbHkgZW5jcnlwdGVkIHVzaW5nIGhpcyBwYXNz
 cGhyYXNlIA0KKysgIHNvIGVhY2ggdXNlciBjYW4gY2hhbmdlIGl0IGFzIG11Y2ggYXMgaGUg
 d2FudHMpLiANCisrDQorKyAgQmxvY2tpbmcgYSB1c2VyIGFjY291bnQgY2FuIGJlIGRvbmUg
 ZGlyZWN0bHkgZnJvbSB0aGUgTERBUCAoaWYgc3NoZCBpcyB1c2luZyBSU0FBdXRoICsgbGRh
 cCBvbmx5KS4NCisrDQorKy0gUlVMRVMgOiAgDQorKyAgRW50cnkgaW4gdGhlIExEQVAgc2Vy
 dmVyIG11c3QgcmVzcGVjdCAncG9zaXhBY2NvdW50JyBhbmQgJ2xkYXBQdWJsaWNLZXknIHdo
 aWNoIGFyZSBkZWZpbmVkIGluIGNvcmUuc2NoZW1hLiANCisrICBhbmQgdGhlIGFkZGl0aW9u
 bmFsIGxway5zY2hlbWEuDQorKw0KKysgIFRoaXMgcGF0Y2ggY291bGQgYWxsb3cgYSBzbW9v
 dGggdHJhbnNpdGlvbiBiZXR3ZWVuIHN0YW5kYXJkIGF1dGggKC9ldGMvcGFzc3dkKSBhbmQg
 Y29tcGxldGUgTERBUCBiYXNlZCBhdXRoZW50aWNhdGlvbiANCisrICAocGFtbGRhcCwgbnNz
 X2xkYXAsIGV0Yy4uKS4NCisrDQorKyAgVGhpcyBjYW4gYmUgYW4gYWx0ZXJuYXRpdmUgdG8g
 b3RoZXIgKG9sZD8vZXhwZW5zaXZlPykgYXV0aGVudGljYXRpb24gbWV0aG9kcyAoS2VyYmVy
 b3MvU2VjdXJJRC8uLikuDQorKyAgDQorKyAgUmVmZXJyaW5nIHRvIHNjaGVtYSBhdCB0aGUg
 YmVnaW5uaW5nIG9mIHRoaXMgZmlsZSBpZiB1c2VyICdlYXUnIGlzIG9ubHkgaW4gZ3JvdXAg
 J3VuaXgnDQorKyAgJ2VhdScgd291bGQgT05MWSBhY2Nlc3MgJ3NlcnZlcjEnLCAnc2VydmVy
 MicsICdzZXJ2ZXIzJyBBTkQgJ3NlcnZlcjQnIEJVVCBOT1QgJ3NlcnZlcjUnLg0KKysgIElm
 IHlvdSB0aGVuIG1vZGlmeSB0aGUgTERBUCAnbWFpbCcgZ3JvdXAgZW50cnkgdG8gYWRkICdt
 ZW1iZXJVaWQ6IGVhdScgVEhFTiB1c2VyICdlYXUnIHdvdWxkIGJlIGFibGUNCisrICB0byBs
 b2cgaW4gJ3NlcnZlcjUnIChpIGhvcGUgeW91IGdvdCB0aGUgaWRlYSwgbXkgZW5nbGlzaCBp
 cyBiYWQgOikuDQorKw0KKysgIEVhY2ggc2VydmVyJ3Mgc3NoZCBpcyBwYXRjaGVkIGFuZCBj
 b25maWd1cmVkIHRvIGFzayB0aGUgcHVibGljIGtleSBhbmQgdGhlIGdyb3VwIGluZm9zIGlu
 IHRoZSBMREFQDQorKyAgc2VydmVyLg0KKysgIFdoZW4geW91IHdhbnQgdG8gYWxsb3cgYSBu
 ZXcgdXNlciB0byBoYXZlIGFjY2VzcyB0byB0aGUgc2VydmVyIHBhcmMsIHlvdSBqdXN0IGFk
 ZCBoaW0gYW4gYWNjb3VudCBvbiANCisrICB5b3VyIHNlcnZlcnMsIHlvdSBhZGQgaGlzIHB1
 YmxpYyBrZXkgaW50byBoaXMgZW50cnkgb24gdGhlIExEQVAgc2VydmVyLCBpdCdzIGRvbmUu
 IA0KKysNCisrICBCZWNhdXNlIHNzaGRzIGFyZSBsb29raW5nIHB1YmxpYyBrZXlzIGludG8g
 dGhlIExEQVAgZGlyZWN0bHkgaW5zdGVhZCBvZiBhIGZpbGUgKCRIT01FLy5zc2gvYXV0aG9y
 aXplZF9rZXlzKS4NCisrDQorKyAgV2hlbiB0aGUgdXNlciBuZWVkcyB0byBjaGFuZ2UgaGlz
 IHBhc3NwaHJhc2UgaGUgY2FuIGRvIGl0IGRpcmVjdGx5IGZyb20gaGlzIHdvcmtzdGF0aW9u
 IGJ5IGNoYW5naW5nIA0KKysgIGhpcyBvd24ga2V5IHNldCBsb2NrIHBhc3NwaHJhc2UsIGFu
 ZCBhbGwgc2VydmVycyBhcmUgYXV0b21hdGljYWxseSBhd2FyZS4NCisrIA0KKysgIFdpdGgg
 YSBDQVJFRlVMIExEQVAgc2VydmVyIGNvbmZpZ3VyYXRpb24geW91IGNvdWxkIGFsbG93IGEg
 dXNlciB0byBhZGQvZGVsZXRlL21vZGlmeSBoaXMgb3duIGVudHJ5IGhpbXNlbGYNCisrICBz
 byBoZSBjYW4gYWRkL21vZGlmeS9kZWxldGUgaGltc2VsZiBoaXMgcHVibGljIGtleSB3aGVu
 IG5lZWRlZC4NCisrDQorK60gRkxBV1MgOg0KKysgIExEQVAgbXVzdCBiZSB3ZWxsIGNvbmZp
 Z3VyZWQsIGdldHRpbmcgdGhlIHB1YmxpYyBrZXkgb2Ygc29tZSB1c2VyIGlzIG5vdCBhIHBy
 b2JsZW0sIGJ1dCBpZiBhbm9ueW1vdXMgTERBUCANCisrICBhbGxvdyB3cml0ZSB0byB1c2Vy
 cyBkbiwgc29tZWJvZHkgY291bGQgcmVwbGFjZSBzb21ldXNlcidzIHB1YmxpYyBrZXkgYnkg
 aXRzIG93biBhbmQgaW1wZXJzb25hdGUgc29tZSANCisrICBvZiB5b3VyIHVzZXJzIGluIGFs
 bCB5b3VyIHNlcnZlciBmYXJtIGJlIFZFUlkgQ0FSRUZVTC4NCisrICANCisrICBNSVRNIGF0
 dGFjayB3aGVuIHNzaGQgaXMgcmVxdWVzdGluZyB0aGUgcHVibGljIGtleSwgY291bGQgbGVh
 ZCB0byBhIGNvbXByb21pc2Ugb2YgeW91ciBzZXJ2ZXJzIGFsbG93aW5nIGxvZ2luIA0KKysg
 IGFzIHRoZSBpbXBlcnNvbm5hdGVkIHVzZXIuDQorKw0KKysgIElmIExEQVAgc2VydmVyIGlz
 IGRvd24gdGhlbiwgZmFsbGJhY2sgb24gcGFzc3dkIGF1dGguDQorKyAgDQorKyAgdGhlIGxk
 YXAgY29kZSBwYXJ0IGhhcyBub3QgYmVlbiB3ZWxsIGF1ZGl0ZWQgeWV0Lg0KKysNCisrLSBM
 REFQIFVTRVIgRU5UUlkgRVhBTVBMRVMgKExESUYgRm9ybWF0LCBsb29rIGluIHVzZXJzLmxk
 aWYpDQorKyAgICAtLS0gQ1VUIEhFUkUgLS0tDQorKyAgICBkbjogdWlkPWpkb2Usb3U9dXNl
 cnMsZGM9Zm9vYmFyLGRjPW5ldA0KKysgICAgb2JqZWN0Y2xhc3M6IHRvcA0KKysgICAgb2Jq
 ZWN0Y2xhc3M6IHBlcnNvbg0KKysgICAgb2JqZWN0Y2xhc3M6IG9yZ2FuaXphdGlvbmFsUGVy
 c29uDQorKyAgICBvYmplY3RjbGFzczogcG9zaXhBY2NvdW50DQorKyAgICBvYmplY3RjbGFz
 czogbGRhcFB1YmxpY0tleQ0KKysgICAgZGVzY3JpcHRpb246IE15IGFjY291bnQNCisrICAg
 IGNuOiBKb2huIERvZQ0KKysgICAgc246IEpvaG4gRG9lDQorKyAgICB1aWQ6IGpkb2UNCisr
 ICAgIHVpZE51bWJlcjogMTAwDQorKyAgICBnaWROdW1iZXI6IDEwMA0KKysgICAgaG9tZURp
 cmVjdG9yeTogL2hvbWUvamRvZQ0KKysgICAgc3NoUHVibGljS2V5OiBzc2gtZHNzIEFBQUFC
 M056YUMxa2MzTUFBQUVCQU92TDhwUkVVZzl3U3kvOCtoUUo1NFlGM0FYa0IwT1pyWEIuLi4u
 DQorKyAgICBbLi4uXQ0KKysgICAgLS0tIENVVCBIRVJFIC0tLQ0KKysNCisrLSBMREFQIEdS
 T1VQIEVOVFJZIEVYQU1QTEVTIChMRElGIEZvcm1hdCwgbG9vayBpbiBncm91cHMubGRpZikN
 CisrICAgIC0tLSBDVVQgSEVSRSAtLS0NCisrICAgIGRuOiBjbj11bml4LG91PWdyb3Vwcyxk
 Yz1jdWNrb29zLGRjPW5ldA0KKysgICAgb2JqZWN0Y2xhc3M6IHRvcA0KKysgICAgb2JqZWN0
 Y2xhc3M6IHBvc2l4R3JvdXANCisrICAgIGRlc2NyaXB0aW9uOiBVbml4IGJhc2VkIHNlcnZl
 cnMgZ3JvdXANCisrICAgIGNuOiB1bml4DQorKyAgICBnaWROdW1iZXI6IDEwMDINCisrICAg
 IG1lbWJlclVpZDogamRvZQ0KKysgICAgbWVtYmVyVWlkOiB1c2VyMQ0KKysgICAgbWVtYmVy
 VWlkOiB1c2VyMg0KKysgICAgWy4uLl0NCisrICAgIC0tLSBDVVQgSEVSRSAtLS0NCisrDQor
 Kz4+IEZZSTogPDwgDQorK011bHRpcGxlICdzc2hQdWJsaWNLZXknIGluIGEgdXNlciBlbnRy
 eSBhcmUgYWxsb3dlZCwgYXMgd2VsbCBhcyBtdWx0aXBsZSAnbWVtYmVyVWlkJyBhdHRyaWJ1
 dGVzIGluIGEgZ3JvdXAgZW50cnkNCisrDQorKy0gQ09NUElMSU5HOg0KKysgIDEuIEFwcGx5
 IHRoZSBwYXRjaA0KKysgIDIuIC4vY29uZmlndXJlIC0td2l0aC15b3VyLW9wdGlvbnMgLS13
 aXRoLWxkYXA9L3ByZWZpeC90by9sZGFwX2xpYnNfYW5kX2luY2x1ZGVzDQorKyAgMy4gbWFr
 ZQ0KKysgIDQuIGl0J3MgZG9uZS4NCisrDQorKy0gQkxBIDoNCisrICBJIGhvcGUgdGhpcyBj
 b3VsZCBoZWxwLCBhbmQgaSBob3BlIHRvIGJlIGNsZWFyIGVub3VnaCwsIG9yIGdpdmUgaWRl
 YXMuICBxdWVzdGlvbnMvY29tbWVudHMvaW1wcm92ZW1lbnRzIGFyZSB3ZWxjb21lLg0KKysg
 IA0KKystIFRPRE8gOg0KKysgIFJlZGVzaWduIGRpZmZlcmVudGx5Lg0KKysNCisrLSBET0NT
 L0xJTksgOg0KKysgIGh0dHA6Ly9wYWNzZWMuanAvY29yZTA1L3BzajA1LWJhcmlzYW5pLWVu
 LnBkZg0KKysgIGh0dHA6Ly9mcml0ei5wb3RzZGFtLmVkdS9wcm9qZWN0cy9vcGVuc3NoLWxw
 ay8NCisrICBodHRwOi8vZnJpdHoucG90c2RhbS5lZHUvcHJvamVjdHMvc3NoZ2F0ZS8NCisr
 ICBodHRwOi8vZGV2LmludmVyc2VwYXRoLmNvbS90cmFjL29wZW5zc2gtbHBrDQorKyAgaHR0
 cDovL2xhbS5zZi5uZXQvICggaHR0cDovL2xhbS5zb3VyY2Vmb3JnZS5uZXQvZG9jdW1lbnRh
 dGlvbi9zdXBwb3J0ZWRTY2hlbWFzLmh0bSApDQorKw0KKystIENPTlRSSUJVVE9SUy9JREVB
 Uy9HUkVFVFMgOg0KKysgIC0gRmFsayBTaWVtb25zbWVpZXIuDQorKyAgLSBKYWNvYiBSaWVm
 Lg0KKysgIC0gTWljaGFlbCBEdXJjaGdyYWYuDQorKyAgLSBmcmVkZXJpYyBwZXRlcnMuDQor
 KyAgLSBGaW5sYXkgZG9iYmllLg0KKysgIC0gU3RlZmFuIEZpc2hlci4NCisrICAtIFJvYmlu
 IEguIEpvaG5zb24uDQorKyAgLSBBZHJpYW4gQnJpZGdldHQuDQorKw0KKystIENPTlRBQ1Qg
 Og0KKysgIC0gRXJpYyBBVUdFIDxlYXVAcGhlYXIub3JnPg0KKysgIC0gQW5kcmVhIEJhcmlz
 YW5pIDxhbmRyZWFAaW52ZXJzZXBhdGguY29tPg0KK2RpZmYgLU51YXIgLS1leGNsdWRlICcq
 Lm9yaWcnIC0tZXhjbHVkZSAnKi5yZWonIHNlcnZjb25mLmMgc2VydmNvbmYuYw0KKy0tLSBz
 ZXJ2Y29uZi5jCTIwMDgtMDctMDMgMjA6NTE6MTIuMDAwMDAwMDAwIC0wNzAwDQorKysrIHNl
 cnZjb25mLmMJMjAwOC0wOC0yMyAxNTowMjo0Ny4wMDAwMDAwMDAgLTA3MDANCitAQCAtNDIs
 NiArNDIsMTAgQEANCisgI2luY2x1ZGUgImNoYW5uZWxzLmgiDQorICNpbmNsdWRlICJncm91
 cGFjY2Vzcy5oIg0KKyANCisrI2lmZGVmIFdJVEhfTERBUF9QVUJLRVkNCisrI2luY2x1ZGUg
 ImxkYXBhdXRoLmgiDQorKyNlbmRpZg0KKysNCisgc3RhdGljIHZvaWQgYWRkX2xpc3Rlbl9h
 ZGRyKFNlcnZlck9wdGlvbnMgKiwgY2hhciAqLCBpbnQpOw0KKyBzdGF0aWMgdm9pZCBhZGRf
 b25lX2xpc3Rlbl9hZGRyKFNlcnZlck9wdGlvbnMgKiwgY2hhciAqLCBpbnQpOw0KKyANCitA
 QCAtMTI4LDYgKzEzMiwyNSBAQA0KKyAJb3B0aW9ucy0+YWRtX2ZvcmNlZF9jb21tYW5kID0g
 TlVMTDsNCisgCW9wdGlvbnMtPmNocm9vdF9kaXJlY3RvcnkgPSBOVUxMOw0KKyAJb3B0aW9u
 cy0+emVyb19rbm93bGVkZ2VfcGFzc3dvcmRfYXV0aGVudGljYXRpb24gPSAtMTsNCisrI2lm
 ZGVmIFdJVEhfTERBUF9QVUJLRVkNCisrIAkvKiBYWFggZGlydHkgKi8NCisrIAlvcHRpb25z
 LT5scGsubGQgPSBOVUxMOw0KKysgCW9wdGlvbnMtPmxway5vbiA9IC0xOw0KKysgCW9wdGlv
 bnMtPmxway5zZXJ2ZXJzID0gTlVMTDsNCisrIAlvcHRpb25zLT5scGsudV9iYXNlZG4gPSBO
 VUxMOw0KKysgCW9wdGlvbnMtPmxway5nX2Jhc2VkbiA9IE5VTEw7DQorKyAJb3B0aW9ucy0+
 bHBrLmJpbmRkbiA9IE5VTEw7DQorKyAJb3B0aW9ucy0+bHBrLmJpbmRwdyA9IE5VTEw7DQor
 KyAJb3B0aW9ucy0+bHBrLnNncm91cCA9IE5VTEw7DQorKyAJb3B0aW9ucy0+bHBrLmZpbHRl
 ciA9IE5VTEw7DQorKyAJb3B0aW9ucy0+bHBrLmZncm91cCA9IE5VTEw7DQorKyAJb3B0aW9u
 cy0+bHBrLmxfY29uZiA9IE5VTEw7DQorKyAJb3B0aW9ucy0+bHBrLnRscyA9IC0xOw0KKysg
 CW9wdGlvbnMtPmxway5iX3RpbWVvdXQudHZfc2VjID0gLTE7DQorKyAJb3B0aW9ucy0+bHBr
 LnNfdGltZW91dC50dl9zZWMgPSAtMTsNCisrIAlvcHRpb25zLT5scGsuZmxhZ3MgPSBGTEFH
 X0VNUFRZOw0KKysjZW5kaWYNCisrDQorIH0NCisgDQorIHZvaWQNCitAQCAtMjYxLDYgKzI4
 NCwzMiBAQA0KKyAJCW9wdGlvbnMtPnBlcm1pdF90dW4gPSBTU0hfVFVOTU9ERV9OTzsNCisg
 CWlmIChvcHRpb25zLT56ZXJvX2tub3dsZWRnZV9wYXNzd29yZF9hdXRoZW50aWNhdGlvbiA9
 PSAtMSkNCisgCQlvcHRpb25zLT56ZXJvX2tub3dsZWRnZV9wYXNzd29yZF9hdXRoZW50aWNh
 dGlvbiA9IDA7DQorKyNpZmRlZiBXSVRIX0xEQVBfUFVCS0VZDQorKwlpZiAob3B0aW9ucy0+
 bHBrLm9uID09IC0xKQ0KKysJICAgIG9wdGlvbnMtPmxway5vbiA9IF9ERUZBVUxUX0xQS19P
 TjsNCisrCWlmIChvcHRpb25zLT5scGsuc2VydmVycyA9PSBOVUxMKQ0KKysJICAgIG9wdGlv
 bnMtPmxway5zZXJ2ZXJzID0gX0RFRkFVTFRfTFBLX1NFUlZFUlM7DQorKwlpZiAob3B0aW9u
 cy0+bHBrLnVfYmFzZWRuID09IE5VTEwpDQorKwkgICAgb3B0aW9ucy0+bHBrLnVfYmFzZWRu
 ID0gX0RFRkFVTFRfTFBLX1VETjsNCisrCWlmIChvcHRpb25zLT5scGsuZ19iYXNlZG4gPT0g
 TlVMTCkNCisrCSAgICBvcHRpb25zLT5scGsuZ19iYXNlZG4gPSBfREVGQVVMVF9MUEtfR0RO
 Ow0KKysJaWYgKG9wdGlvbnMtPmxway5iaW5kZG4gPT0gTlVMTCkNCisrCSAgICBvcHRpb25z
 LT5scGsuYmluZGRuID0gX0RFRkFVTFRfTFBLX0JJTkRETjsNCisrCWlmIChvcHRpb25zLT5s
 cGsuYmluZHB3ID09IE5VTEwpDQorKwkgICAgb3B0aW9ucy0+bHBrLmJpbmRwdyA9IF9ERUZB
 VUxUX0xQS19CSU5EUFc7DQorKwlpZiAob3B0aW9ucy0+bHBrLnNncm91cCA9PSBOVUxMKQ0K
 KysJICAgIG9wdGlvbnMtPmxway5zZ3JvdXAgPSBfREVGQVVMVF9MUEtfU0dST1VQOw0KKysJ
 aWYgKG9wdGlvbnMtPmxway5maWx0ZXIgPT0gTlVMTCkNCisrCSAgICBvcHRpb25zLT5scGsu
 ZmlsdGVyID0gX0RFRkFVTFRfTFBLX0ZJTFRFUjsNCisrCWlmIChvcHRpb25zLT5scGsudGxz
 ID09IC0xKQ0KKysJICAgIG9wdGlvbnMtPmxway50bHMgPSBfREVGQVVMVF9MUEtfVExTOw0K
 KysJaWYgKG9wdGlvbnMtPmxway5iX3RpbWVvdXQudHZfc2VjID09IC0xKQ0KKysJICAgIG9w
 dGlvbnMtPmxway5iX3RpbWVvdXQudHZfc2VjID0gX0RFRkFVTFRfTFBLX0JUSU1FT1VUOw0K
 KysJaWYgKG9wdGlvbnMtPmxway5zX3RpbWVvdXQudHZfc2VjID09IC0xKQ0KKysJICAgIG9w
 dGlvbnMtPmxway5zX3RpbWVvdXQudHZfc2VjID0gX0RFRkFVTFRfTFBLX1NUSU1FT1VUOw0K
 KysJaWYgKG9wdGlvbnMtPmxway5sX2NvbmYgPT0gTlVMTCkNCisrCSAgICBvcHRpb25zLT5s
 cGsubF9jb25mID0gX0RFRkFVTFRfTFBLX0xEUDsNCisrI2VuZGlmDQorIA0KKyAJLyogVHVy
 biBwcml2aWxlZ2Ugc2VwYXJhdGlvbiBvbiBieSBkZWZhdWx0ICovDQorIAlpZiAodXNlX3By
 aXZzZXAgPT0gLTEpDQorQEAgLTMwNyw2ICszNTYsMTIgQEANCisgCXNVc2VQcml2aWxlZ2VT
 ZXBhcmF0aW9uLCBzQWxsb3dBZ2VudEZvcndhcmRpbmcsDQorCXNaZXJvS25vd2xlZGdlUGFz
 c3dvcmRBdXRoZW50aWNhdGlvbiwNCisgCXNEZXByZWNhdGVkLCBzVW5zdXBwb3J0ZWQNCisr
 I2lmZGVmIFdJVEhfTERBUF9QVUJLRVkNCisrCSxzTGRhcFB1YmxpY2tleSwgc0xkYXBTZXJ2
 ZXJzLCBzTGRhcFVzZXJETg0KKysJLHNMZGFwR3JvdXBETiwgc0JpbmRETiwgc0JpbmRQdywg
 c015R3JvdXANCisrCSxzTGRhcEZpbHRlciwgc0ZvcmNlVExTLCBzQmluZFRpbWVvdXQNCisr
 CSxzU2VhcmNoVGltZW91dCwgc0xkYXBDb25mDQorKyNlbmRpZg0KKyB9IFNlcnZlck9wQ29k
 ZXM7DQorIA0KKyAjZGVmaW5lIFNTSENGR19HTE9CQUwJMHgwMQkvKiBhbGxvd2VkIGluIG1h
 aW4gc2VjdGlvbiBvZiBzc2hkX2NvbmZpZyAqLw0KK0BAIC00MTcsNiArNDcyLDIwIEBADQor
 IAl7ICJjbGllbnRhbGl2ZWNvdW50bWF4Iiwgc0NsaWVudEFsaXZlQ291bnRNYXgsIFNTSENG
 R19HTE9CQUwgfSwNCisgCXsgImF1dGhvcml6ZWRrZXlzZmlsZSIsIHNBdXRob3JpemVkS2V5
 c0ZpbGUsIFNTSENGR19HTE9CQUwgfSwNCisgCXsgImF1dGhvcml6ZWRrZXlzZmlsZTIiLCBz
 QXV0aG9yaXplZEtleXNGaWxlMiwgU1NIQ0ZHX0dMT0JBTCB9LA0KKysjaWZkZWYgV0lUSF9M
 REFQX1BVQktFWQ0KKysJeyBfREVGQVVMVF9MUEtfVE9LRU4sIHNMZGFwUHVibGlja2V5LCBT
 U0hDRkdfR0xPQkFMIH0sDQorKwl7IF9ERUZBVUxUX1NSVl9UT0tFTiwgc0xkYXBTZXJ2ZXJz
 LCBTU0hDRkdfR0xPQkFMIH0sDQorKwl7IF9ERUZBVUxUX1VTUl9UT0tFTiwgc0xkYXBVc2Vy
 RE4sIFNTSENGR19HTE9CQUwgfSwNCisrCXsgX0RFRkFVTFRfR1JQX1RPS0VOLCBzTGRhcEdy
 b3VwRE4sIFNTSENGR19HTE9CQUwgfSwNCisrCXsgX0RFRkFVTFRfQkROX1RPS0VOLCBzQmlu
 ZEROLCBTU0hDRkdfR0xPQkFMIH0sDQorKwl7IF9ERUZBVUxUX0JQV19UT0tFTiwgc0JpbmRQ
 dywgU1NIQ0ZHX0dMT0JBTCB9LA0KKysJeyBfREVGQVVMVF9NWUdfVE9LRU4sIHNNeUdyb3Vw
 LCBTU0hDRkdfR0xPQkFMIH0sDQorKwl7IF9ERUZBVUxUX0ZJTF9UT0tFTiwgc0xkYXBGaWx0
 ZXIsIFNTSENGR19HTE9CQUwgfSwNCisrCXsgX0RFRkFVTFRfVExTX1RPS0VOLCBzRm9yY2VU
 TFMsIFNTSENGR19HTE9CQUwgfSwNCisrCXsgX0RFRkFVTFRfQlRJX1RPS0VOLCBzQmluZFRp
 bWVvdXQsIFNTSENGR19HTE9CQUwgfSwNCisrCXsgX0RFRkFVTFRfU1RJX1RPS0VOLCBzU2Vh
 cmNoVGltZW91dCwgU1NIQ0ZHX0dMT0JBTCB9LA0KKysJeyBfREVGQVVMVF9MRFBfVE9LRU4s
 IHNMZGFwQ29uZiwgU1NIQ0ZHX0dMT0JBTCB9LA0KKysjZW5kaWYNCisgCXsgInVzZXByaXZp
 bGVnZXNlcGFyYXRpb24iLCBzVXNlUHJpdmlsZWdlU2VwYXJhdGlvbiwgU1NIQ0ZHX0dMT0JB
 TH0sDQorIAl7ICJhY2NlcHRlbnYiLCBzQWNjZXB0RW52LCBTU0hDRkdfR0xPQkFMIH0sDQor
 IAl7ICJwZXJtaXR0dW5uZWwiLCBzUGVybWl0VHVubmVsLCBTU0hDRkdfR0xPQkFMIH0sDQor
 QEAgLTEzMDcsNiArMTM3NiwxMDcgQEANCisgCQl3aGlsZSAoYXJnKQ0KKyAJCSAgICBhcmcg
 PSBzdHJkZWxpbSgmY3ApOw0KKyAJCWJyZWFrOw0KKysjaWZkZWYgV0lUSF9MREFQX1BVQktF
 WQ0KKysJY2FzZSBzTGRhcFB1YmxpY2tleToNCisrCQlpbnRwdHIgPSAmb3B0aW9ucy0+bHBr
 Lm9uOw0KKysJCWdvdG8gcGFyc2VfZmxhZzsNCisrCWNhc2Ugc0xkYXBTZXJ2ZXJzOg0KKysJ
 CS8qIGFyZyA9IHN0cmRlbGltKCZjcCk7ICovDQorKwkJcCA9IGxpbmU7DQorKwkJd2hpbGUo
 KnArKyk7DQorKwkJYXJnID0gcDsNCisrCQlpZiAoIWFyZyB8fCAqYXJnID09ICdcMCcpDQor
 KwkJICAgIGZhdGFsKCIlcyBsaW5lICVkOiBtaXNzaW5nIGxkYXAgc2VydmVyIixmaWxlbmFt
 ZSxsaW5lbnVtKTsNCisrCQlhcmdbc3RybGVuKGFyZyldID0gJ1wwJzsNCisrCQlpZiAoKG9w
 dGlvbnMtPmxway5zZXJ2ZXJzID0gbGRhcF9wYXJzZV9zZXJ2ZXJzKGFyZykpID09IE5VTEwp
 DQorKwkJICAgIGZhdGFsKCIlcyBsaW5lICVkOiBlcnJvciBpbiBsZGFwIHNlcnZlcnMiLCBm
 aWxlbmFtZSwgbGluZW51bSk7DQorKwkJbWVtc2V0KGFyZywwLHN0cmxlbihhcmcpKTsNCisr
 CQlicmVhazsNCisrCWNhc2Ugc0xkYXBVc2VyRE46DQorKwkJYXJnID0gY3A7DQorKwkJaWYg
 KCFhcmcgfHwgKmFyZyA9PSAnXDAnKQ0KKysJCSAgICBmYXRhbCgiJXMgbGluZSAlZDogbWlz
 c2luZyBsZGFwIHNlcnZlciIsZmlsZW5hbWUsbGluZW51bSk7DQorKwkJYXJnW3N0cmxlbihh
 cmcpXSA9ICdcMCc7DQorKwkJb3B0aW9ucy0+bHBrLnVfYmFzZWRuID0geHN0cmR1cChhcmcp
 Ow0KKysJCW1lbXNldChhcmcsMCxzdHJsZW4oYXJnKSk7DQorKwkJYnJlYWs7DQorKwljYXNl
 IHNMZGFwR3JvdXBETjoNCisrCQlhcmcgPSBjcDsNCisrCQlpZiAoIWFyZyB8fCAqYXJnID09
 ICdcMCcpDQorKwkJICAgIGZhdGFsKCIlcyBsaW5lICVkOiBtaXNzaW5nIGxkYXAgc2VydmVy
 IixmaWxlbmFtZSxsaW5lbnVtKTsNCisrCQlhcmdbc3RybGVuKGFyZyldID0gJ1wwJzsNCisr
 CQlvcHRpb25zLT5scGsuZ19iYXNlZG4gPSB4c3RyZHVwKGFyZyk7DQorKwkJbWVtc2V0KGFy
 ZywwLHN0cmxlbihhcmcpKTsNCisrCQlicmVhazsNCisrCWNhc2Ugc0JpbmRETjoNCisrCQlh
 cmcgPSBjcDsNCisrCQlpZiAoIWFyZyB8fCAqYXJnID09ICdcMCcpDQorKwkJICAgIGZhdGFs
 KCIlcyBsaW5lICVkOiBtaXNzaW5nIGJpbmRkbiIsZmlsZW5hbWUsbGluZW51bSk7DQorKwkJ
 YXJnW3N0cmxlbihhcmcpXSA9ICdcMCc7DQorKwkJb3B0aW9ucy0+bHBrLmJpbmRkbiA9IHhz
 dHJkdXAoYXJnKTsNCisrCQltZW1zZXQoYXJnLDAsc3RybGVuKGFyZykpOw0KKysJCWJyZWFr
 Ow0KKysJY2FzZSBzQmluZFB3Og0KKysJCWFyZyA9IGNwOw0KKysJCWlmICghYXJnIHx8ICph
 cmcgPT0gJ1wwJykNCisrCQkgICAgZmF0YWwoIiVzIGxpbmUgJWQ6IG1pc3NpbmcgYmluZHB3
 IixmaWxlbmFtZSxsaW5lbnVtKTsNCisrCQlhcmdbc3RybGVuKGFyZyldID0gJ1wwJzsNCisr
 CQlvcHRpb25zLT5scGsuYmluZHB3ID0geHN0cmR1cChhcmcpOw0KKysJCW1lbXNldChhcmcs
 MCxzdHJsZW4oYXJnKSk7DQorKwkJYnJlYWs7DQorKwljYXNlIHNNeUdyb3VwOg0KKysJCWFy
 ZyA9IGNwOw0KKysJCWlmICghYXJnIHx8ICphcmcgPT0gJ1wwJykNCisrCQkgICAgZmF0YWwo
 IiVzIGxpbmUgJWQ6IG1pc3NpbmcgZ3JvdXBuYW1lIixmaWxlbmFtZSwgbGluZW51bSk7DQor
 KwkJYXJnW3N0cmxlbihhcmcpXSA9ICdcMCc7DQorKwkJb3B0aW9ucy0+bHBrLnNncm91cCA9
 IHhzdHJkdXAoYXJnKTsNCisrCQlpZiAob3B0aW9ucy0+bHBrLnNncm91cCkNCisrCQkgICAg
 b3B0aW9ucy0+bHBrLmZncm91cCA9IGxkYXBfcGFyc2VfZ3JvdXBzKG9wdGlvbnMtPmxway5z
 Z3JvdXApOw0KKysJCW1lbXNldChhcmcsMCxzdHJsZW4oYXJnKSk7DQorKwkJYnJlYWs7DQor
 KwljYXNlIHNMZGFwRmlsdGVyOg0KKysJCWFyZyA9IGNwOw0KKysJCWlmICghYXJnIHx8ICph
 cmcgPT0gJ1wwJykNCisrCQkgICAgZmF0YWwoIiVzIGxpbmUgJWQ6IG1pc3NpbmcgZmlsdGVy
 IixmaWxlbmFtZSwgbGluZW51bSk7DQorKwkJYXJnW3N0cmxlbihhcmcpXSA9ICdcMCc7DQor
 KwkJb3B0aW9ucy0+bHBrLmZpbHRlciA9IHhzdHJkdXAoYXJnKTsNCisrCQltZW1zZXQoYXJn
 LDAsc3RybGVuKGFyZykpOw0KKysJCWJyZWFrOw0KKysJY2FzZSBzRm9yY2VUTFM6DQorKwkJ
 aW50cHRyID0gJm9wdGlvbnMtPmxway50bHM7DQorKwkJYXJnID0gc3RyZGVsaW0oJmNwKTsN
 CisrCQlpZiAoIWFyZyB8fCAqYXJnID09ICdcMCcpDQorKwkJCWZhdGFsKCIlcyBsaW5lICVk
 OiBtaXNzaW5nIHllcy9ubyBhcmd1bWVudC4iLA0KKysJCQkgICAgZmlsZW5hbWUsIGxpbmVu
 dW0pOw0KKysJCXZhbHVlID0gMDsJLyogc2lsZW5jZSBjb21waWxlciAqLw0KKysJCWlmIChz
 dHJjbXAoYXJnLCAieWVzIikgPT0gMCkNCisrCQkJdmFsdWUgPSAxOw0KKysJCWVsc2UgaWYg
 KHN0cmNtcChhcmcsICJubyIpID09IDApDQorKwkJCXZhbHVlID0gMDsNCisrCQllbHNlIGlm
 IChzdHJjbXAoYXJnLCAidHJ5IikgPT0gMCkNCisrCQkJdmFsdWUgPSAtMTsNCisrCQllbHNl
 DQorKwkJCWZhdGFsKCIlcyBsaW5lICVkOiBCYWQgeWVzL25vIGFyZ3VtZW50OiAlcyIsDQor
 KwkJCQlmaWxlbmFtZSwgbGluZW51bSwgYXJnKTsNCisrCQlpZiAoKmludHB0ciA9PSAtMSkN
 CisrCQkJKmludHB0ciA9IHZhbHVlOw0KKysJCWJyZWFrOw0KKysJY2FzZSBzQmluZFRpbWVv
 dXQ6DQorKwkJaW50cHRyID0gKGludCAqKSAmb3B0aW9ucy0+bHBrLmJfdGltZW91dC50dl9z
 ZWM7DQorKwkJZ290byBwYXJzZV9pbnQ7DQorKwljYXNlIHNTZWFyY2hUaW1lb3V0Og0KKysJ
 CWludHB0ciA9IChpbnQgKikgJm9wdGlvbnMtPmxway5zX3RpbWVvdXQudHZfc2VjOw0KKysJ
 CWdvdG8gcGFyc2VfaW50Ow0KKysJCWJyZWFrOw0KKysJY2FzZSBzTGRhcENvbmY6DQorKwkJ
 YXJnID0gY3A7DQorKwkJaWYgKCFhcmcgfHwgKmFyZyA9PSAnXDAnKQ0KKysJCSAgICBmYXRh
 bCgiJXMgbGluZSAlZDogbWlzc2luZyBMcGtMZGFwQ29uZiIsIGZpbGVuYW1lLCBsaW5lbnVt
 KTsNCisrCQlhcmdbc3RybGVuKGFyZyldID0gJ1wwJzsNCisrCQlvcHRpb25zLT5scGsubF9j
 b25mID0geHN0cmR1cChhcmcpOw0KKysJCW1lbXNldChhcmcsIDAsIHN0cmxlbihhcmcpKTsN
 CisrCQlicmVhazsNCisrI2VuZGlmDQorIA0KKyAJZGVmYXVsdDoNCisgCQlmYXRhbCgiJXMg
 bGluZSAlZDogTWlzc2luZyBoYW5kbGVyIGZvciBvcGNvZGUgJXMgKCVkKSIsDQorZGlmZiAt
 TnVhciAtLWV4Y2x1ZGUgJyoub3JpZycgLS1leGNsdWRlICcqLnJlaicgc2VydmNvbmYuaCBz
 ZXJ2Y29uZi5oDQorLS0tIHNlcnZjb25mLmgJMjAwOC0wNi0xMCAwNjowMTo1MS4wMDAwMDAw
 MDAgLTA3MDANCisrKysgc2VydmNvbmYuaAkyMDA4LTA4LTIzIDE1OjAyOjQ3LjAwMDAwMDAw
 MCAtMDcwMA0KK0BAIC0xNiw2ICsxNiwxMCBAQA0KKyAjaWZuZGVmIFNFUlZDT05GX0gNCisg
 I2RlZmluZSBTRVJWQ09ORl9IDQorIA0KKysjaWZkZWYgV0lUSF9MREFQX1BVQktFWQ0KKysj
 aW5jbHVkZSAibGRhcGF1dGguaCINCisrI2VuZGlmDQorKw0KKyAjZGVmaW5lIE1BWF9QT1JU
 UwkJMjU2CS8qIE1heCAjIHBvcnRzLiAqLw0KKyANCisgI2RlZmluZSBNQVhfQUxMT1dfVVNF
 UlMJCTI1NgkvKiBNYXggIyB1c2VycyBvbiBhbGxvdyBsaXN0LiAqLw0KK0BAIC0xNDcsNiAr
 MTUxLDkgQEANCisgCWludAl1c2VfcGFtOwkJLyogRW5hYmxlIGF1dGggdmlhIFBBTSAqLw0K
 KyANCisgCWludAlwZXJtaXRfdHVuOw0KKysjaWZkZWYgV0lUSF9MREFQX1BVQktFWQ0KKysg
 ICAgICAgIGxkYXBfb3B0X3QgbHBrOw0KKysjZW5kaWYNCisgDQorIAlpbnQJbnVtX3Blcm1p
 dHRlZF9vcGVuczsNCisgDQorZGlmZiAtTnVhciAtLWV4Y2x1ZGUgJyoub3JpZycgLS1leGNs
 dWRlICcqLnJlaicgc3NoZC5jIHNzaGQuYw0KKy0tLSBzc2hkLmMJMjAwOC0wNy0xMSAwMDoz
 Njo0OS4wMDAwMDAwMDAgLTA3MDANCisrKysgc3NoZC5jCTIwMDgtMDgtMjMgMTU6MDI6NDcu
 MDAwMDAwMDAwIC0wNzAwDQorQEAgLTEyNyw2ICsxMjcsMTAgQEANCisgaW50IGRlbnlfc2V2
 ZXJpdHk7DQorICNlbmRpZiAvKiBMSUJXUkFQICovDQorIA0KKysjaWZkZWYgV0lUSF9MREFQ
 X1BVQktFWQ0KKysjaW5jbHVkZSAibGRhcGF1dGguaCINCisrI2VuZGlmDQorKw0KKyAjaWZu
 ZGVmIE9fTk9DVFRZDQorICNkZWZpbmUgT19OT0NUVFkJMA0KKyAjZW5kaWYNCitAQCAtMTQ4
 NCw2ICsxNDg4LDE2IEBADQorIAkJZXhpdCgxKTsNCisgCX0NCisgDQorKyNpZmRlZiBXSVRI
 X0xEQVBfUFVCS0VZDQorKyAgICAvKiBsZGFwX29wdGlvbnNfcHJpbnQoJm9wdGlvbnMubHBr
 KTsgKi8NCisrICAgIC8qIFhYWCBpbml0aWFsaXplL2NoZWNrIGxkYXAgY29ubmVjdGlvbiBh
 bmQgc2V0ICpMRCAqLw0KKysgICAgaWYgKG9wdGlvbnMubHBrLm9uKSB7DQorKyAgICAgICAg
 aWYgKG9wdGlvbnMubHBrLmxfY29uZiAmJiAobGRhcF9wYXJzZV9sY29uZigmb3B0aW9ucy5s
 cGspIDwgMCkgKQ0KKysgICAgICAgICAgICBlcnJvcigiW0xEQVBdIGNvdWxkIG5vdCBwYXJz
 ZSAlcyIsIG9wdGlvbnMubHBrLmxfY29uZik7DQorKyAgICAgICAgaWYgKGxkYXBfY29ubmVj
 dCgmb3B0aW9ucy5scGspIDwgMCkNCisrICAgICAgICAgICAgZXJyb3IoIltMREFQXSBjb3Vs
 ZCBub3QgaW5pdGlhbGl6ZSBsZGFwIGNvbm5lY3Rpb24iKTsNCisrICAgIH0NCisrI2VuZGlm
 DQorIAlkZWJ1Zygic3NoZCB2ZXJzaW9uICUuMTAwcyIsIFNTSF9SRUxFQVNFKTsNCisgDQor
 IAkvKiBTdG9yZSBwcml2aWxlZ2Ugc2VwYXJhdGlvbiB1c2VyIGZvciBsYXRlciB1c2UgaWYg
 cmVxdWlyZWQuICovDQorZGlmZiAtTnVhciAtLWV4Y2x1ZGUgJyoub3JpZycgLS1leGNsdWRl
 ICcqLnJlaicgc3NoZF9jb25maWcgc3NoZF9jb25maWcNCistLS0gc3NoZF9jb25maWcJMjAw
 OC0wNy0wMiAwNTozNTo0My4wMDAwMDAwMDAgLTA3MDANCisrKysgc3NoZF9jb25maWcJMjAw
 OC0wOC0yMyAxNTowMjo0Ny4wMDAwMDAwMDAgLTA3MDANCitAQCAtMTA5LDYgKzEwOSwyMSBA
 QA0KKyAjIG5vIGRlZmF1bHQgYmFubmVyIHBhdGgNCisgI0Jhbm5lciBub25lDQorIA0KKysj
 IGhlcmUgYXJlIHRoZSBuZXcgcGF0Y2hlZCBsZGFwIHJlbGF0ZWQgdG9rZW5zDQorKyMgZW50
 cmllcyBpbiB5b3VyIExEQVAgbXVzdCBoYXZlIHBvc2l4QWNjb3VudCAmIGxkYXBQdWJsaWNL
 ZXkgb2JqZWN0Y2xhc3MNCisrI1VzZUxQSyB5ZXMNCisrI0xwa0xkYXBDb25mIC9ldGMvbGRh
 cC5jb25mDQorKyNMcGtTZXJ2ZXJzICBsZGFwOi8vMTAuMS43LjEvIGxkYXA6Ly8xMC4xLjcu
 Mi8NCisrI0xwa1VzZXJETiAgIG91PXVzZXJzLGRjPXBoZWFyLGRjPW9yZw0KKysjTHBrR3Jv
 dXBETiAgb3U9Z3JvdXBzLGRjPXBoZWFyLGRjPW9yZw0KKysjTHBrQmluZEROIGNuPU1hbmFn
 ZXIsZGM9cGhlYXIsZGM9b3JnDQorKyNMcGtCaW5kUHcgc2VjcmV0DQorKyNMcGtTZXJ2ZXJH
 cm91cCBtYWlsDQorKyNMcGtGaWx0ZXIgKGhvc3RBY2Nlc3M9bWFzdGVyLnBoZWFyLm9yZykN
 CisrI0xwa0ZvcmNlVExTIG5vDQorKyNMcGtTZWFyY2hUaW1lbGltaXQgMw0KKysjTHBrQmlu
 ZFRpbWVsaW1pdCAzDQorKw0KKyAjIG92ZXJyaWRlIGRlZmF1bHQgb2Ygbm8gc3Vic3lzdGVt
 cw0KKyBTdWJzeXN0ZW0Jc2Z0cAkvdXNyL2xpYmV4ZWMvc2Z0cC1zZXJ2ZXINCisgDQorZGlm
 ZiAtTnVhciAtLWV4Y2x1ZGUgJyoub3JpZycgLS1leGNsdWRlICcqLnJlaicgc3NoZF9jb25m
 aWcuNSBzc2hkX2NvbmZpZy41DQorLS0tIHNzaGRfY29uZmlnLjUJMjAwOC0wNy0wMiAwNToz
 NTo0My4wMDAwMDAwMDAgLTA3MDANCisrKysgc3NoZF9jb25maWcuNQkyMDA4LTA4LTIzIDE1
 OjAyOjQ3LjAwMDAwMDAwMCAtMDcwMA0KK0BAIC0xMDEwLDYgKzEwMTAsNjIgQEANCisgcHJv
 Z3JhbS4NCisgVGhlIGRlZmF1bHQgaXMNCisgLlBhIC91c3IvWDExUjYvYmluL3hhdXRoIC4N
 CisrLkl0IENtIFVzZUxQSw0KKytTcGVjaWZpZXMgd2hldGhlciBMREFQIHB1YmxpYyBrZXkg
 cmV0cmlldmFsIG11c3QgYmUgdXNlZCBvciBub3QuIEl0IGFsbG93DQorK2FuIGVhc3kgY2Vu
 dHJhbGlzYXRpb24gb2YgcHVibGljIGtleXMgd2l0aGluIGFuIExEQVAgZGlyZWN0b3J5LiBU
 aGUgYXJndW1lbnQgbXVzdCBiZQ0KKysuRHEgeWVzDQorK29yDQorKy5EcSBubyAuDQorKy5J
 dCBDbSBMcGtMZGFwQ29uZg0KKytTcGVjaWZpZXMgd2hldGhlciBMREFQIFB1YmxpYyBrZXlz
 IHNob3VsZCBwYXJzZSB0aGUgc3BlY2lmaWVkIGxkYXAuY29uZiBmaWxlDQorK2luc3RlYWQg
 b2Ygc3NoZF9jb25maWcgVG9rZW5zLiBUaGUgYXJndW1lbnQgbXVzdCBiZSBhIHZhbGlkIHBh
 dGggdG8gYW4gbGRhcC5jb25mDQorK2ZpbGUgbGlrZQ0KKysuUGEgL2V0Yy9sZGFwLmNvbmYN
 CisrLkl0IENtIExwa1NlcnZlcnMNCisrU3BlY2lmaWVzIExEQVAgb25lIG9yIG1vcmUgWzpz
 cGFjZTpdIHNlcGFyYXRlZCBzZXJ2ZXIncyB1cmwgdGhlIGZvbGxvd2luZyBmb3JtIG1heSBi
 ZSB1c2VkOg0KKysuUHANCisrTHBrU2VydmVycyBsZGFwczovLzEyNy4wLjAuMSBsZGFwOi8v
 MTI3LjAuMC4yIGxkYXA6Ly8xMjcuMC4wLjMNCisrLkl0IENtIExwa1VzZXJETg0KKytTcGVj
 aWZpZXMgdGhlIExEQVAgdXNlciBETi4NCisrLlBwDQorK0xwa1VzZXJETiBvdT11c2Vycyxk
 Yz1waGVhcixkYz1vcmcNCisrLkl0IENtIExwa0dyb3VwRE4NCisrU3BlY2lmaWVzIHRoZSBM
 REFQIGdyb3VwcyBETi4NCisrLlBwDQorK0xwa0dyb3VwRE4gb3U9Z3JvdXBzLGRjPXBoZWFy
 LGRjPW9yZw0KKysuSXQgQ20gTHBrQmluZERODQorK1NwZWNpZmllcyB0aGUgTERBUCBiaW5k
 IEROIHRvIHVzZSBpZiBuZWNlc3NhcnkuDQorKy5QcA0KKytMcGtCaW5kRE4gY249TWFuYWdl
 cixkYz1waGVhcixkYz1vcmcNCisrLkl0IENtIExwa0JpbmRQdw0KKytTcGVjaWZpZXMgdGhl
 IExEQVAgYmluZCBjcmVkZW50aWFsLiANCisrLlBwDQorK0xwa0JpbmRQdyBzZWNyZXQNCisr
 Lkl0IENtIExwa1NlcnZlckdyb3VwDQorK1NwZWNpZmllcyBvbmUgb3IgbW9yZSBbOnNwYWNl
 Ol0gc2VwYXJhdGVkIGdyb3VwIHRoZSBzZXJ2ZXIgaXMgcGFydCBvZi4gDQorKy5QcA0KKytM
 cGtTZXJ2ZXJHcm91cCB1bml4IG1haWwgcHJvZA0KKysuSXQgQ20gTHBrRmlsdGVyDQorK1Nw
 ZWNpZmllcyBhbiBhZGRpdGlvbmFsIExEQVAgZmlsdGVyIHRvIHVzZSBmb3IgZmluZGluZyBT
 U0gga2V5cw0KKysuUHANCisrTHBrRmlsdGVyIChob3N0QWNjZXNzPW1hc3Rlci5waGVhci5v
 cmcpDQorKy5JdCBDbSBMcGtGb3JjZVRMUw0KKytTcGVjaWZpZXMgaWYgdGhlIExEQVAgc2Vy
 dmVyIGNvbm5lY3Rpb24gbXVzdCBiZSB0cmllZCwgZm9yY2VkIG9yIG5vdCB1c2VkLiBUaGUg
 YXJndW1lbnQgbXVzdCBiZSANCisrLkRxIHllcw0KKytvcg0KKysuRHEgbm8NCisrb3INCisr
 LkRxIHRyeSAuDQorKy5JdCBDbSBMcGtTZWFyY2hUaW1lbGltaXQNCisrU2VwY2lmaWVzIHRo
 ZSBzZWFyY2ggdGltZSBsaW1pdCBiZWZvcmUgdGhlIHNlYXJjaCBpcyBjb25zaWRlcmVkIG92
 ZXIuIHZhbHVlIGlzDQorK2luIHNlY29uZHMuDQorKy5QcA0KKytMcGtTZWFyY2hUaW1lbGlt
 aXQgMw0KKysuSXQgQ20gTHBrQmluZFRpbWVsaW1pdA0KKytTZXBjaWZpZXMgdGhlIGJpbmQg
 dGltZSBsaW1pdCBiZWZvcmUgdGhlIGNvbm5lY3Rpb24gaXMgY29uc2lkZXJlZCBkZWFkLiB2
 YWx1ZSBpcw0KKytpbiBzZWNvbmRzLg0KKysuUHANCisrTHBrQmluZFRpbWVsaW1pdCAzDQor
 IC5FbA0KKyAuU2ggVElNRSBGT1JNQVRTDQorIC5YciBzc2hkIDgNCmRpZmYgLU5ydSAvaG9t
 ZS9nYXdyaWxvZmYvbHBrL29wZW5zc2gtcG9ydGFibGUvZmlsZXMvcGF0Y2gtc3NoZF9jb25m
 aWcuNSAvaG9tZS9nYXdyaWxvZmYvb3BlbnNzaC1wb3J0YWJsZS9maWxlcy9wYXRjaC1zc2hk
 X2NvbmZpZy41DQotLS0gL2hvbWUvZ2F3cmlsb2ZmL2xway9vcGVuc3NoLXBvcnRhYmxlL2Zp
 bGVzL3BhdGNoLXNzaGRfY29uZmlnLjUJMjAwNi0xMC0wMSAwNToxNTowMC4wMDAwMDAwMDAg
 KzAzMDANCisrKyAvaG9tZS9nYXdyaWxvZmYvb3BlbnNzaC1wb3J0YWJsZS9maWxlcy9wYXRj
 aC1zc2hkX2NvbmZpZy41CTIwMTAtMTItMjEgMTE6MzY6MDYuMDAwMDAwMDAwICswMjAwDQpA
 QCAtMSwyNSArMSw1IEBADQogLS0tIHNzaGRfY29uZmlnLjUub3JpZwlUdWUgQXVnIDI5IDIy
 OjA2OjM0IDIwMDYNCiArKysgc3NoZF9jb25maWcuNQlTYXQgU2VwIDMwIDEwOjM5OjA3IDIw
 MDYNCi1AQCAtMTY5LDkgKzE3MCwxNiBAQA0KLSBCeSBkZWZhdWx0LCBubyBiYW5uZXIgaXMg
 ZGlzcGxheWVkLg0KLSAuSXQgQ20gQ2hhbGxlbmdlUmVzcG9uc2VBdXRoZW50aWNhdGlvbg0K
 LSBTcGVjaWZpZXMgd2hldGhlciBjaGFsbGVuZ2UtcmVzcG9uc2UgYXV0aGVudGljYXRpb24g
 aXMgYWxsb3dlZC4NCi0tQWxsIGF1dGhlbnRpY2F0aW9uIHN0eWxlcyBmcm9tDQotLS5YciBs
 b2dpbi5jb25mIDUNCi0tYXJlIHN1cHBvcnRlZC4NCi0rU3BlY2lmaWNhbGx5LCBpbg0KLSsu
 RnggLA0KLSt0aGlzIGNvbnRyb2xzIHRoZSB1c2Ugb2YgUEFNIChzZWUNCi0rLlhyIHBhbSAz
 ICkNCi0rZm9yIGF1dGhlbnRpY2F0aW9uLg0KLStOb3RlIHRoYXQgdGhpcyBhZmZlY3RzIHRo
 ZSBlZmZlY3RpdmVuZXNzIG9mIHRoZQ0KLSsuQ20gUGFzc3dvcmRBdXRoZW50aWNhdGlvbg0K
 LSthbmQNCi0rLkNtIFBlcm1pdFJvb3RMb2dpbg0KLSt2YXJpYWJsZXMuDQotIFRoZSBkZWZh
 dWx0IGlzDQotIC5EcSB5ZXMgLg0KLSAuSXQgQ20gQ2lwaGVycw0KIEBAIC01NTQsNyArNTYw
 LDIyIEBADQogIC5JdCBDbSBQYXNzd29yZEF1dGhlbnRpY2F0aW9uDQogIFNwZWNpZmllcyB3
 aGV0aGVyIHBhc3N3b3JkIGF1dGhlbnRpY2F0aW9uIGlzIGFsbG93ZWQuDQo=
 --------------090100050300010803050402--



More information about the freebsd-ports-bugs mailing list