From: Date: November 27 2008 5:37pm Subject: bzr commit into mysql-6.0-runtime branch (alik:2778) List-Archive: http://lists.mysql.com/commits/60080 Message-Id: <20081127163709.363EA1D48F3@quad.opbmk> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 I0F0IGZpbGU6Ly8vbW50L3JhaWQvYWxpay9NeVNRTC9ienIvd2w0MjY0LzYuMC1hbGlrLXdsNDI2 NC4xLwoKIDI3NzggQWxleGFuZGVyIE5vemRyaW4JMjAwOC0xMS0yNwogICAgICAxLiBFeHBvc2Ug d2FybmluZ3MgdG8gdGhlIGJhY2t1cAogICAgICAyLiBFbGltaW5hdGUgSV9TLlVTRVJfUFJJVklM RUdFUwogICAgICAzLiBSZWZhY3RvciB0byBlbGltaW5hdGUgY29weSAmIHBhc3RlIGluIEFic3Ry YWN0X29iajo6Y3JlYXRlKCksCiAgICAgICAgQWJzdHJhY3Rfb2JqOjpkcm9wKCkgYW5kIHJ1bl9z ZXJ2aWNlX2ludGVyZmFjZV9zcWwoKS4KbW9kaWZpZWQ6CiAgbXlzcWwtdGVzdC9zdWl0ZS9iYWNr dXAvci9iYWNrdXAucmVzdWx0CiAgbXlzcWwtdGVzdC9zdWl0ZS9iYWNrdXAvci9iYWNrdXBfYmFj a3VwZGlyLnJlc3VsdAogIG15c3FsLXRlc3Qvc3VpdGUvYmFja3VwL3IvYmFja3VwX2Jsb2IucmVz dWx0CiAgbXlzcWwtdGVzdC9zdWl0ZS9iYWNrdXAvci9iYWNrdXBfY2hhcnNldHMucmVzdWx0CiAg bXlzcWwtdGVzdC9zdWl0ZS9iYWNrdXAvci9iYWNrdXBfY29tbWl0X2JhY2t1cC5yZXN1bHQKICBt eXNxbC10ZXN0L3N1aXRlL2JhY2t1cC9yL2JhY2t1cF9jb21taXRfYmxvY2tlci5yZXN1bHQKICBt eXNxbC10ZXN0L3N1aXRlL2JhY2t1cC9yL2JhY2t1cF9jb21taXRfcmVzdG9yZS5yZXN1bHQKICBt eXNxbC10ZXN0L3N1aXRlL2JhY2t1cC9yL2JhY2t1cF9jb21wcmVzc2lvbi5yZXN1bHQKICBteXNx bC10ZXN0L3N1aXRlL2JhY2t1cC9yL2JhY2t1cF9jb25jdXJyZW50LnJlc3VsdAogIG15c3FsLXRl c3Qvc3VpdGUvYmFja3VwL3IvYmFja3VwX2RiX2dyYW50cy5yZXN1bHQKICBteXNxbC10ZXN0L3N1 aXRlL2JhY2t1cC9yL2JhY2t1cF9kZWZhdWx0LnJlc3VsdAogIG15c3FsLXRlc3Qvc3VpdGUvYmFj a3VwL3IvYmFja3VwX2ZrZXkucmVzdWx0CiAgbXlzcWwtdGVzdC9zdWl0ZS9iYWNrdXAvci9iYWNr dXBfbG9ja19teWlzYW0ucmVzdWx0CiAgbXlzcWwtdGVzdC9zdWl0ZS9iYWNrdXAvci9iYWNrdXBf bG9ncy5yZXN1bHQKICBteXNxbC10ZXN0L3N1aXRlL2JhY2t1cC9yL2JhY2t1cF9tYW55X2Ricy5y ZXN1bHQKICBteXNxbC10ZXN0L3N1aXRlL2JhY2t1cC9yL2JhY2t1cF9tdWx0aV9ibG9ja3MucmVz dWx0CiAgbXlzcWwtdGVzdC9zdWl0ZS9iYWNrdXAvci9iYWNrdXBfbXlpc2FtMi5yZXN1bHQKICBt eXNxbC10ZXN0L3N1aXRlL2JhY2t1cC9yL2JhY2t1cF9vYmplY3RzLnJlc3VsdAogIG15c3FsLXRl c3Qvc3VpdGUvYmFja3VwL3IvYmFja3VwX3Byb2NlZHVyZXMucmVzdWx0CiAgbXlzcWwtdGVzdC9z dWl0ZS9iYWNrdXAvci9iYWNrdXBfc2VjdXJpdHkucmVzdWx0CiAgbXlzcWwtdGVzdC9zdWl0ZS9i YWNrdXAvci9iYWNrdXBfc25hcHNob3QucmVzdWx0CiAgbXlzcWwtdGVzdC9zdWl0ZS9iYWNrdXAv ci9iYWNrdXBfdGFibGVzcGFjZS5yZXN1bHQKICBteXNxbC10ZXN0L3N1aXRlL2JhY2t1cC9yL2Jh Y2t1cF92aWV3X29uX3ZpZXcucmVzdWx0CiAgbXlzcWwtdGVzdC9zdWl0ZS9iYWNrdXAvci9iYWNr dXBfdmlld3MucmVzdWx0CiAgc3FsL3NpX29iamVjdHMuY2MKICBzcWwvc2lfb2JqZWN0cy5oCgo9 PT0gbW9kaWZpZWQgZmlsZSAnbXlzcWwtdGVzdC9zdWl0ZS9iYWNrdXAvci9iYWNrdXAucmVzdWx0 JwotLS0gYS9teXNxbC10ZXN0L3N1aXRlL2JhY2t1cC9yL2JhY2t1cC5yZXN1bHQJMjAwOC0xMS0x OSAxNjozMjowMSArMDAwMAorKysgYi9teXNxbC10ZXN0L3N1aXRlL2JhY2t1cC9yL2JhY2t1cC5y ZXN1bHQJMjAwOC0xMS0yNyAxNjozNjo1NyArMDAwMApAQCAtNjgsNiArNjgsMTMgQEAgVVNFIG15 c3FsOwogUkVTVE9SRSBGUk9NICd0ZXN0LmJhJzsKIGJhY2t1cF9pZAogIworV2FybmluZ3M6Cisj CTEwMDgJQ2FuJ3QgZHJvcCBkYXRhYmFzZSAnZGIxJzsgZGF0YWJhc2UgZG9lc24ndCBleGlzdAor IwkxMDA4CUNhbid0IGRyb3AgZGF0YWJhc2UgJ2RiMic7IGRhdGFiYXNlIGRvZXNuJ3QgZXhpc3QK KyMJMTA1MQlVbmtub3duIHRhYmxlICdidWlsZGluZycKKyMJMTA1MQlVbmtub3duIHRhYmxlICdk aXJlY3RvcmF0ZScKKyMJMTA1MQlVbmtub3duIHRhYmxlICdzdGFmZicKKyMJMTA1MQlVbmtub3du IHRhYmxlICd0YXNraW5nJwogU0VMRUNUIE1BWChiYWNrdXBfaWQpIEZST00gbXlzcWwuYmFja3Vw X2hpc3RvcnkgSU5UTyBAYmlkOwogU0hPVyBDUkVBVEUgREFUQUJBU0UgZGIxOwogRGF0YWJhc2UJ Q3JlYXRlIERhdGFiYXNlCkBAIC0zNTIsNiArMzU5LDIyIEBAIGJhY2t1cF9pZAogRFJPUCBEQVRB QkFTRSBidXBfZGVmYXVsdDsKIFJFU1RPUkUgRlJPTSAiYnVwX2RlZmF1bHQuYmFrIjsKIGJhY2t1 cF9pZAkjCitXYXJuaW5nczoKK0xldmVsCSMKK0NvZGUJMTAwOAorTWVzc2FnZQlDYW4ndCBkcm9w IGRhdGFiYXNlICdidXBfZGVmYXVsdCc7IGRhdGFiYXNlIGRvZXNuJ3QgZXhpc3QKK0xldmVsCSMK K0NvZGUJMTA0NgorTWVzc2FnZQlObyBkYXRhYmFzZSBzZWxlY3RlZAorTGV2ZWwJIworQ29kZQkx MDUxCitNZXNzYWdlCVVua25vd24gdGFibGUgJ3QxX2Jsb2InCitMZXZlbAkjCitDb2RlCTEwNTEK K01lc3NhZ2UJVW5rbm93biB0YWJsZSAndDInCitMZXZlbAkjCitDb2RlCTEwNTEKK01lc3NhZ2UJ VW5rbm93biB0YWJsZSAnd2lkZScKIFNFTEVDVCAqIEZST00gYnVwX2RlZmF1bHQudDE7CiBhCiAx CkBAIC00NTUsNiArNDc4LDEyIEBAIERST1AgREFUQUJBU0UgYnVwX2RlZmF1bHQ7CiBSRVNUT1JF IEZST00gJ2J1cF9kZWZhdWx0LmJhayc7CiBiYWNrdXBfaWQKICMKK1dhcm5pbmdzOgorIwkxMDA4 CUNhbid0IGRyb3AgZGF0YWJhc2UgJ2J1cF9kZWZhdWx0JzsgZGF0YWJhc2UgZG9lc24ndCBleGlz dAorIwkxMDQ2CU5vIGRhdGFiYXNlIHNlbGVjdGVkCisjCTEwNTEJVW5rbm93biB0YWJsZSAndDFf YmxvYicKKyMJMTA1MQlVbmtub3duIHRhYmxlICd0MicKKyMJMTA1MQlVbmtub3duIHRhYmxlICd3 aWRlJwogU0hPVyBWQVJJQUJMRVMgTElLRSAnc3FsX21vZGUnOwogVmFyaWFibGVfbmFtZQlWYWx1 ZQogc3FsX21vZGUJUkVBTF9BU19GTE9BVCxQSVBFU19BU19DT05DQVQsQU5TSV9RVU9URVMsSUdO T1JFX1NQQUNFLEFOU0kKQEAgLTUwMSw2ICs1MzAsMTIgQEAgRFJPUCBEQVRBQkFTRSBidXBfZGVm YXVsdDsKIFJFU1RPUkUgRlJPTSAnYnVwX2RlZmF1bHQuYmFrJzsKIGJhY2t1cF9pZAogIworV2Fy bmluZ3M6CisjCTEwMDgJQ2FuJ3QgZHJvcCBkYXRhYmFzZSAnYnVwX2RlZmF1bHQnOyBkYXRhYmFz ZSBkb2Vzbid0IGV4aXN0CisjCTEwNDYJTm8gZGF0YWJhc2Ugc2VsZWN0ZWQKKyMJMTA1MQlVbmtu b3duIHRhYmxlICd0MV9ibG9iJworIwkxMDUxCVVua25vd24gdGFibGUgJ3QyJworIwkxMDUxCVVu a25vd24gdGFibGUgJ3dpZGUnCiBTSE9XIFZBUklBQkxFUyBMSUtFICdzcWxfbW9kZSc7CiBWYXJp YWJsZV9uYW1lCVZhbHVlCiBzcWxfbW9kZQkKQEAgLTU2MSw2ICs1OTYsOCBAQCBkbyByZXN0b3Jl CiBSRVNUT1JFIEZST00gJ2J1cF9kZWxldGUuYmFrJzsKIGJhY2t1cF9pZAogIworV2FybmluZ3M6 CisjCTEwNTEJVW5rbm93biB0YWJsZSAnbWUnCiBzaG93IHRoZSBkYXRhCiBTRUxFQ1QgKiBGUk9N IGJ1cF9kZWxldGUubWU7CiBpZAljY29kZQpAQCAtNTk2LDYgKzYzMyw4IEBAIFJlc3RvcmUgdGhl IGRhdGFiYXNlLgogUkVTVE9SRSBGUk9NICdidXBfZGVmYXVsdF90aW1lc3RhbXAuYmFrJzsKIGJh Y2t1cF9pZAogIworV2FybmluZ3M6CisjCTEwNTEJVW5rbm93biB0YWJsZSAndGltZV90MScKIFNo b3cgZGF0YSBhZnRlciByZXN0b3JlICh0aW1lc3RhbXAgc2hvdWxkIGJlIHNhbWUgYXMgYWJvdmUp LgogU0VMRUNUICogRlJPTSBidXBfZGVmYXVsdC50aW1lX3QxOwogYQliCgo9PT0gbW9kaWZpZWQg ZmlsZSAnbXlzcWwtdGVzdC9zdWl0ZS9iYWNrdXAvci9iYWNrdXBfYmFja3VwZGlyLnJlc3VsdCcK LS0tIGEvbXlzcWwtdGVzdC9zdWl0ZS9iYWNrdXAvci9iYWNrdXBfYmFja3VwZGlyLnJlc3VsdAky MDA4LTEwLTI0IDE1OjM3OjExICswMDAwCisrKyBiL215c3FsLXRlc3Qvc3VpdGUvYmFja3VwL3Iv YmFja3VwX2JhY2t1cGRpci5yZXN1bHQJMjAwOC0xMS0yNyAxNjozNjo1NyArMDAwMApAQCAtMTgs NiArMTgsOCBAQCBQZXJmb3JtIHJlc3RvcmUKIFJFU1RPUkUgRlJPTSAnYnVwX2JhY2t1cGRpcjEu YmFrJzsKIGJhY2t1cF9pZAogIworV2FybmluZ3M6CisjCTEwNTEJVW5rbm93biB0YWJsZSAndDEn CiBOb3cgZG8gdGhlIGJhY2t1cCBhbmQgcmVzdG9yZSBieSBzcGVjaWZ5aW5nIGEgcGF0aC4KIFBl cmZvcm0gYmFja3VwCiBCQUNLVVAgREFUQUJBU0UgYnVwX2JhY2t1cGRpciBUTyAnLi4vYnVwX2Jh Y2t1cGRpcjIuYmFrJzsKQEAgLTI4LDYgKzMwLDggQEAgUGVyZm9ybSByZXN0b3JlCiBSRVNUT1JF IEZST00gJy4uL2J1cF9iYWNrdXBkaXIyLmJhayc7CiBiYWNrdXBfaWQKICMKK1dhcm5pbmdzOgor IwkxMDQ2CU5vIGRhdGFiYXNlIHNlbGVjdGVkCiBQZXJmb3JtIGJhY2t1cAogQkFDS1VQIERBVEFC QVNFIGJ1cF9iYWNrdXBkaXIgVE8gJy4uLy4uL2J1cF9iYWNrdXBkaXIzLmJhayc7CiBiYWNrdXBf aWQKCj09PSBtb2RpZmllZCBmaWxlICdteXNxbC10ZXN0L3N1aXRlL2JhY2t1cC9yL2JhY2t1cF9i bG9iLnJlc3VsdCcKLS0tIGEvbXlzcWwtdGVzdC9zdWl0ZS9iYWNrdXAvci9iYWNrdXBfYmxvYi5y ZXN1bHQJMjAwOC0xMC0wNyAxNzoxNTo0NCArMDAwMAorKysgYi9teXNxbC10ZXN0L3N1aXRlL2Jh Y2t1cC9yL2JhY2t1cF9ibG9iLnJlc3VsdAkyMDA4LTExLTI3IDE2OjM2OjU3ICswMDAwCkBAIC0z NCw2ICszNCwxMSBAQCBEUk9QIERBVEFCQVNFIG15c3FsdGVzdDsKIFJFU1RPUkUgRlJPTSAnYmxv Yi5iYWsnOwogYmFja3VwX2lkCiAjCitXYXJuaW5nczoKKyMJMTAwOAlDYW4ndCBkcm9wIGRhdGFi YXNlICdteXNxbHRlc3QnOyBkYXRhYmFzZSBkb2Vzbid0IGV4aXN0CisjCTEwNDYJTm8gZGF0YWJh c2Ugc2VsZWN0ZWQKKyMJMTA1MQlVbmtub3duIHRhYmxlICd0MicKKyMJMTA1MQlVbmtub3duIHRh YmxlICd0MycKIAogQ2hlY2sgdGFibGVzIGFmdGVyIHJlc3RvcmUKIFNFTEVDVCAqIEZST00gdDEg T1JERVIgQlkgaWQ7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnbXlzcWwtdGVzdC9zdWl0ZS9iYWNrdXAv ci9iYWNrdXBfY2hhcnNldHMucmVzdWx0JwotLS0gYS9teXNxbC10ZXN0L3N1aXRlL2JhY2t1cC9y L2JhY2t1cF9jaGFyc2V0cy5yZXN1bHQJMjAwOC0xMC0wNyAxNzoxNTo0NCArMDAwMAorKysgYi9t eXNxbC10ZXN0L3N1aXRlL2JhY2t1cC9yL2JhY2t1cF9jaGFyc2V0cy5yZXN1bHQJMjAwOC0xMS0y NyAxNjozNjo1NyArMDAwMApAQCAtMjEsNiArMjEsOSBAQCBEUk9QIERBVEFCQVNFIGJhY2t1cF9j czsKIFJFU1RPUkUgRlJPTSAiYmFja3VwX2NzLmJhayI7CiBiYWNrdXBfaWQKICMKK1dhcm5pbmdz OgorIwkxMDA4CUNhbid0IGRyb3AgZGF0YWJhc2UgJ2JhY2t1cF9jcyc7IGRhdGFiYXNlIGRvZXNu J3QgZXhpc3QKKyMJMTA0NglObyBkYXRhYmFzZSBzZWxlY3RlZAogVVNFIGJhY2t1cF9jczsKIFNI T1cgQ1JFQVRFIFRBQkxFIGDvvbHvvbHvvbFgOwogVGFibGUJQ3JlYXRlIFRhYmxlCkBAIC0zNSw2 ICszOCw5IEBAIERST1AgREFUQUJBU0UgYmFja3VwX2NzOwogUkVTVE9SRSBGUk9NICJiYWNrdXBf Y3MuYmFrIjsKIGJhY2t1cF9pZAogIworV2FybmluZ3M6CisjCTEwMDgJQ2FuJ3QgZHJvcCBkYXRh YmFzZSAnYmFja3VwX2NzJzsgZGF0YWJhc2UgZG9lc24ndCBleGlzdAorIwkxMDQ2CU5vIGRhdGFi YXNlIHNlbGVjdGVkCiBTSE9XIFRBQkxFUyBJTiBiYWNrdXBfY3M7CiBUYWJsZXNfaW5fYmFja3Vw X2NzCiA/Pz8KCj09PSBtb2RpZmllZCBmaWxlICdteXNxbC10ZXN0L3N1aXRlL2JhY2t1cC9yL2Jh Y2t1cF9jb21taXRfYmFja3VwLnJlc3VsdCcKLS0tIGEvbXlzcWwtdGVzdC9zdWl0ZS9iYWNrdXAv ci9iYWNrdXBfY29tbWl0X2JhY2t1cC5yZXN1bHQJMjAwOC0xMC0wNyAxNzoxNTo0NCArMDAwMAor KysgYi9teXNxbC10ZXN0L3N1aXRlL2JhY2t1cC9yL2JhY2t1cF9jb21taXRfYmFja3VwLnJlc3Vs dAkyMDA4LTExLTI3IDE2OjM2OjU3ICswMDAwCkBAIC0zMDIsNiArMzAyLDExIEBAIENoZWNraW5n IGNvbnRlbnRzIG9mIHRoZSBiYWNrdXAgaW1hZ2UKIFJFU1RPUkUgRlJPTSAnZGIxLmJhayc7CiBi YWNrdXBfaWQKICMKK1dhcm5pbmdzOgorIwkxMDUxCVVua25vd24gdGFibGUgJ3QxJworIwkxMDUx CVVua25vd24gdGFibGUgJ3QyJworIwkxMDUxCVVua25vd24gdGFibGUgJ3QzJworIwkxMDUxCVVu a25vd24gdGFibGUgJ3Q0JwogU0VMRUNUICogRlJPTSBkYjEudDE7CiBzMQogYjEKCj09PSBtb2Rp ZmllZCBmaWxlICdteXNxbC10ZXN0L3N1aXRlL2JhY2t1cC9yL2JhY2t1cF9jb21taXRfYmxvY2tl ci5yZXN1bHQnCi0tLSBhL215c3FsLXRlc3Qvc3VpdGUvYmFja3VwL3IvYmFja3VwX2NvbW1pdF9i bG9ja2VyLnJlc3VsdAkyMDA4LTEwLTA3IDE3OjE1OjQ0ICswMDAwCisrKyBiL215c3FsLXRlc3Qv c3VpdGUvYmFja3VwL3IvYmFja3VwX2NvbW1pdF9ibG9ja2VyLnJlc3VsdAkyMDA4LTExLTI3IDE2 OjM2OjU3ICswMDAwCkBAIC0xMzIsNiArMTMyLDEwIEBAIGNvbjE6IFJlc3RvcmluZyB0aGUgZGF0 YWJhc2UKIFJFU1RPUkUgRlJPTSAiYnVwX2NvbW1pdF9ibG9ja2VyLmJhayI7CiBiYWNrdXBfaWQK ICMKK1dhcm5pbmdzOgorIwkxMDUxCVVua25vd24gdGFibGUgJ3QxJworIwkxMDUxCVVua25vd24g dGFibGUgJ3QyJworIwkxMDUxCVVua25vd24gdGFibGUgJ3QzJwogY29uMTogU2hvd2luZyB0aGUg ZGF0YSAobm8gbmV3IGRhdGEgc2hvdWxkIGJlIGhlcmUpLgogU0VMRUNUICogRlJPTSBidXBfY29t bWl0X2Jsb2NrZXIudDE7CiBjb2xfYQpAQCAtMjMyLDYgKzIzNiw4IEBAIGNvbjE6IFJlc3Rvcmlu ZyB0aGUgZGF0YWJhc2UKIFJFU1RPUkUgRlJPTSAiYnVwX2NvbW1pdF9ibG9ja2VyLmJhayI7CiBi YWNrdXBfaWQKICMKK1dhcm5pbmdzOgorIwkxMDQ2CU5vIGRhdGFiYXNlIHNlbGVjdGVkCiBjb24x OiBTaG93aW5nIHRoZSBkYXRhIChubyBuZXcgZGF0YSBzaG91bGQgYmUgaGVyZSkuCiBTRUxFQ1Qg KiBGUk9NIGJ1cF9jb21taXRfYmxvY2tlci50NTsKIGNvbF9hCkBAIC00MTQsNiArNDIwLDExIEBA IGNvbjE6IFJlc3RvcmluZyB0aGUgZGF0YWJhc2UKIFJFU1RPUkUgRlJPTSAiYnVwX2NvbW1pdF9i bG9ja2VyLmJhayI7CiBiYWNrdXBfaWQKICMKK1dhcm5pbmdzOgorIwkxMDQ2CU5vIGRhdGFiYXNl IHNlbGVjdGVkCisjCTEwNTEJVW5rbm93biB0YWJsZSAndDInCisjCTEwNTEJVW5rbm93biB0YWJs ZSAndDMnCisjCTEwNTEJVW5rbm93biB0YWJsZSAndDUnCiBjb24xOiBTaG93aW5nIHRoZSBkYXRh IChubyBuZXcgZGF0YSBzaG91bGQgYmUgaGVyZSkuCiBTRUxFQ1QgKiBGUk9NIGJ1cF9jb21taXRf YmxvY2tlci50MTsKIGNvbF9hCgo9PT0gbW9kaWZpZWQgZmlsZSAnbXlzcWwtdGVzdC9zdWl0ZS9i YWNrdXAvci9iYWNrdXBfY29tbWl0X3Jlc3RvcmUucmVzdWx0JwotLS0gYS9teXNxbC10ZXN0L3N1 aXRlL2JhY2t1cC9yL2JhY2t1cF9jb21taXRfcmVzdG9yZS5yZXN1bHQJMjAwOC0xMC0yMyAwODox Mzo1NCArMDAwMAorKysgYi9teXNxbC10ZXN0L3N1aXRlL2JhY2t1cC9yL2JhY2t1cF9jb21taXRf cmVzdG9yZS5yZXN1bHQJMjAwOC0xMS0yNyAxNjozNjo1NyArMDAwMApAQCAtOSw2ICs5LDggQEAg YmFja3VwX2lkCiBSRVNUT1JFIEZST00gJzgxJzsKIGJhY2t1cF9pZAogIworV2FybmluZ3M6Cisj CTEwNDYJTm8gZGF0YWJhc2Ugc2VsZWN0ZWQKIFNFTEVDVCAqIEZST00gdDE7CiBzMQogYTEKQEAg LTI3LDYgKzI5LDkgQEAgYmFja3VwX2lkCiBSRVNUT1JFIEZST00gJzgyJzsKIGJhY2t1cF9pZAog IworV2FybmluZ3M6CisjCTEwNDYJTm8gZGF0YWJhc2Ugc2VsZWN0ZWQKKyMJMTA1MQlVbmtub3du IHRhYmxlICd0MicKIFNFTEVDVCAqIEZST00gdDE7CiBzMQogYTEKQEAgLTU0LDYgKzU5LDEwIEBA IGJhY2t1cF9pZAogUkVTVE9SRSBGUk9NICc4Myc7CiBiYWNrdXBfaWQKICMKK1dhcm5pbmdzOgor IwkxMDQ2CU5vIGRhdGFiYXNlIHNlbGVjdGVkCisjCTEwNTEJVW5rbm93biB0YWJsZSAndDInCisj CTEwNTEJVW5rbm93biB0YWJsZSAndDMnCiBTRUxFQ1QgKiBGUk9NIHQxOwogczEKIGExCkBAIC05 Miw2ICsxMDEsMTEgQEAgYmFja3VwX2lkCiBSRVNUT1JFIEZST00gJzg0JzsKIGJhY2t1cF9pZAog IworV2FybmluZ3M6CisjCTEwNDYJTm8gZGF0YWJhc2Ugc2VsZWN0ZWQKKyMJMTA1MQlVbmtub3du IHRhYmxlICd0MicKKyMJMTA1MQlVbmtub3duIHRhYmxlICd0MycKKyMJMTA1MQlVbmtub3duIHRh YmxlICd0NCcKIFNFTEVDVCAqIEZST00gdDE7CiBzMQogYTEKQEAgLTE0MSw2ICsxNTUsMTEgQEAg YmFja3VwX2lkCiBSRVNUT1JFIEZST00gJzg1JzsKIGJhY2t1cF9pZAogIworV2FybmluZ3M6Cisj CTEwNDYJTm8gZGF0YWJhc2Ugc2VsZWN0ZWQKKyMJMTA1MQlVbmtub3duIHRhYmxlICd0MicKKyMJ MTA1MQlVbmtub3duIHRhYmxlICd0MycKKyMJMTA1MQlVbmtub3duIHRhYmxlICd0NCcKIFNFTEVD VCAqIEZST00gdDE7CiBzMQogYTEKQEAgLTIwMSw2ICsyMjAsMTIgQEAgU0VUIEBAYXV0b2NvbW1p dD0wOwogUkVTVE9SRSBGUk9NICc4Nic7CiBiYWNrdXBfaWQKICMKK1dhcm5pbmdzOgorIwkxMDQ2 CU5vIGRhdGFiYXNlIHNlbGVjdGVkCisjCTEwNTEJVW5rbm93biB0YWJsZSAndDInCisjCTEwNTEJ VW5rbm93biB0YWJsZSAndDMnCisjCTEwNTEJVW5rbm93biB0YWJsZSAndDQnCisjCTEwNTEJVW5r bm93biB0YWJsZSAndDUnCiBEUk9QIFRBQkxFIHQ1OwogU0VMRUNUICogRlJPTSB0MTsKIHMxCkBA IC0yNjgsNiArMjkzLDExIEBAIFNFVCBAQGF1dG9jb21taXQ9MTsKIFJFU1RPUkUgRlJPTSAnODcn OwogYmFja3VwX2lkCiAjCitXYXJuaW5nczoKKyMJMTA0NglObyBkYXRhYmFzZSBzZWxlY3RlZAor IwkxMDUxCVVua25vd24gdGFibGUgJ3QyJworIwkxMDUxCVVua25vd24gdGFibGUgJ3QzJworIwkx MDUxCVVua25vd24gdGFibGUgJ3Q0JwogU0VMRUNUICogRlJPTSB0MTsKIHMxCiBhMQoKPT09IG1v ZGlmaWVkIGZpbGUgJ215c3FsLXRlc3Qvc3VpdGUvYmFja3VwL3IvYmFja3VwX2NvbXByZXNzaW9u LnJlc3VsdCcKLS0tIGEvbXlzcWwtdGVzdC9zdWl0ZS9iYWNrdXAvci9iYWNrdXBfY29tcHJlc3Np b24ucmVzdWx0CTIwMDgtMTAtMDcgMTc6MTU6NDQgKzAwMDAKKysrIGIvbXlzcWwtdGVzdC9zdWl0 ZS9iYWNrdXAvci9iYWNrdXBfY29tcHJlc3Npb24ucmVzdWx0CTIwMDgtMTEtMjcgMTY6MzY6NTcg KzAwMDAKQEAgLTEwLDEyICsxMCwxNyBAQCBiYWNrdXBfaWQKIFJFU1RPUkUgRlJPTSAnZGIxLmJh ay5neic7CiBiYWNrdXBfaWQKICMKK1dhcm5pbmdzOgorIwkxMDUxCVVua25vd24gdGFibGUgJ3Qx JwogU0hPVyBUQUJMRVMgRlJPTSBkYjE7CiBUYWJsZXNfaW5fZGIxCiB0MQogUkVTVE9SRSBGUk9N ICdkYjIuYmFrLmd6JzsKIGJhY2t1cF9pZAogIworV2FybmluZ3M6CisjCTEwNDYJTm8gZGF0YWJh c2Ugc2VsZWN0ZWQKKyMJMTA1MQlVbmtub3duIHRhYmxlICd0MicKIFNIT1cgVEFCTEVTIEZST00g ZGIxOwogVGFibGVzX2luX2RiMQogdDEKCj09PSBtb2RpZmllZCBmaWxlICdteXNxbC10ZXN0L3N1 aXRlL2JhY2t1cC9yL2JhY2t1cF9jb25jdXJyZW50LnJlc3VsdCcKLS0tIGEvbXlzcWwtdGVzdC9z dWl0ZS9iYWNrdXAvci9iYWNrdXBfY29uY3VycmVudC5yZXN1bHQJMjAwOC0xMC0wNyAxNzoxNTo0 NCArMDAwMAorKysgYi9teXNxbC10ZXN0L3N1aXRlL2JhY2t1cC9yL2JhY2t1cF9jb25jdXJyZW50 LnJlc3VsdAkyMDA4LTExLTI3IDE2OjM2OjU3ICswMDAwCkBAIC02OCw2ICs2OCw4IEBAIFdhaXQg Zm9yIGJhY2t1cCB0byBjb21wbGV0ZQogU0VUIERFQlVHX1NZTkM9ICdub3cgU0lHTkFMIHJlc3Rv cmUnOwogYmFja3VwX2lkCiAjCitXYXJuaW5nczoKKyMJMTA1MQlVbmtub3duIHRhYmxlICd0Jwog CiBUZXN0IGNvbXBsZXRlZC4gQ2xlYW5pbmcgdXAuCiAKCj09PSBtb2RpZmllZCBmaWxlICdteXNx bC10ZXN0L3N1aXRlL2JhY2t1cC9yL2JhY2t1cF9kYl9ncmFudHMucmVzdWx0JwotLS0gYS9teXNx bC10ZXN0L3N1aXRlL2JhY2t1cC9yL2JhY2t1cF9kYl9ncmFudHMucmVzdWx0CTIwMDgtMTEtMTkg MTY6MzI6MDEgKzAwMDAKKysrIGIvbXlzcWwtdGVzdC9zdWl0ZS9iYWNrdXAvci9iYWNrdXBfZGJf Z3JhbnRzLnJlc3VsdAkyMDA4LTExLTI3IDE2OjM2OjU3ICswMDAwCkBAIC03MCw2ICs3MCw4IEBA IFJFU1RPUkUgRlJPTSAnYnVwX2RiX2dyYW50cy5iYWsnOwogYmFja3VwX2lkCiAjCiBXYXJuaW5n czoKKyMJMTA1MQlVbmtub3duIHRhYmxlICdzMScKKyMJMTA1MQlVbmtub3duIHRhYmxlICd0MScK ICMJMTczNwlUaGUgZ3JhbnQgJ0FMVEVSIE9OIGJ1cF9kYl9ncmFudHMuKicgZm9yIHRoZSB1c2Vy ICdub191c2VyJ0AnJScgd2FzIHNraXBwZWQgYmVjYXVzZSB0aGUgdXNlciBkb2VzIG5vdCBleGlz dC4KICMJMTczNwlUaGUgZ3JhbnQgJ0FMVEVSIFJPVVRJTkUgT04gYnVwX2RiX2dyYW50cy4qJyBm b3IgdGhlIHVzZXIgJ25vX3VzZXInQCclJyB3YXMgc2tpcHBlZCBiZWNhdXNlIHRoZSB1c2VyIGRv ZXMgbm90IGV4aXN0LgogIwkxNzM3CVRoZSBncmFudCAnQ1JFQVRFIE9OIGJ1cF9kYl9ncmFudHMu KicgZm9yIHRoZSB1c2VyICdub191c2VyJ0AnJScgd2FzIHNraXBwZWQgYmVjYXVzZSB0aGUgdXNl ciBkb2VzIG5vdCBleGlzdC4KQEAgLTEyMSw2ICsxMjMsOCBAQCBSRVNUT1JFIEZST00gJ2J1cF9k Yl9ncmFudHMuYmFrJzsKIGJhY2t1cF9pZAogIwogV2FybmluZ3M6CisjCTEwNDYJTm8gZGF0YWJh c2Ugc2VsZWN0ZWQKKyMJMTA1MQlVbmtub3duIHRhYmxlICd0MScKICMJMTczNwlUaGUgZ3JhbnQg J0lOU0VSVCBPTiBidXBfZGJfZ3JhbnRzLionIGZvciB0aGUgdXNlciAnYnVwX3VzZXIyJ0AnJScg d2FzIHNraXBwZWQgYmVjYXVzZSB0aGUgdXNlciBkb2VzIG5vdCBleGlzdC4KICMJMTczNwlUaGUg Z3JhbnQgJ0lOU0VSVChiKSBPTiBidXBfZGJfZ3JhbnRzLnMxJyBmb3IgdGhlIHVzZXIgJ2J1cF91 c2VyMidAJyUnIHdhcyBza2lwcGVkIGJlY2F1c2UgdGhlIHVzZXIgZG9lcyBub3QgZXhpc3QuCiAj CTE3MzcJVGhlIGdyYW50ICdTRUxFQ1QoYikgT04gYnVwX2RiX2dyYW50cy5zMScgZm9yIHRoZSB1 c2VyICdidXBfdXNlcjInQCclJyB3YXMgc2tpcHBlZCBiZWNhdXNlIHRoZSB1c2VyIGRvZXMgbm90 IGV4aXN0LgpAQCAtMjEyLDYgKzIxNiw5IEBAIFJ1biByZXN0b3JlLgogUkVTVE9SRSBGUk9NICdi dXBfZGJfZ3JhbnRzLmJhayc7CiBiYWNrdXBfaWQKICMKK1dhcm5pbmdzOgorIwkxMDQ2CU5vIGRh dGFiYXNlIHNlbGVjdGVkCisjCTEwNTEJVW5rbm93biB0YWJsZSAndDEnCiBGTFVTSCBQUklWSUxF R0VTOwogRW5zdXJlIGdyYW50cyBoYXZlIGJlZW4gcmVzdG9yZWQuCiBFWEVDVVRFIHN0bXQzOwoK PT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3Qvc3VpdGUvYmFja3VwL3IvYmFja3VwX2RlZmF1 bHQucmVzdWx0JwotLS0gYS9teXNxbC10ZXN0L3N1aXRlL2JhY2t1cC9yL2JhY2t1cF9kZWZhdWx0 LnJlc3VsdAkyMDA4LTEwLTA3IDE3OjE1OjQ0ICswMDAwCisrKyBiL215c3FsLXRlc3Qvc3VpdGUv YmFja3VwL3IvYmFja3VwX2RlZmF1bHQucmVzdWx0CTIwMDgtMTEtMjcgMTY6MzY6NTcgKzAwMDAK QEAgLTIwLDYgKzIwLDkgQEAgcmVzdG9yZSBvbiBjc3Ygb25seQogUkVTVE9SRSBGUk9NICdidXBf Y3N2LmJhayc7CiBiYWNrdXBfaWQKICMKK1dhcm5pbmdzOgorIwkxMDA4CUNhbid0IGRyb3AgZGF0 YWJhc2UgJ2RiMSc7IGRhdGFiYXNlIGRvZXNuJ3QgZXhpc3QKKyMJMTA0NglObyBkYXRhYmFzZSBz ZWxlY3RlZAogdGVzdGluZyBjb250ZW50IGluIHJlc3RvcmVkIHRhYmxlcwogU0VMRUNUICogRlJP TSBjc3ZfdGFibGUgT1JERVIgQlkgaWQ7CiBpZAluYW1lCWNpdHkKCj09PSBtb2RpZmllZCBmaWxl ICdteXNxbC10ZXN0L3N1aXRlL2JhY2t1cC9yL2JhY2t1cF9ma2V5LnJlc3VsdCcKLS0tIGEvbXlz cWwtdGVzdC9zdWl0ZS9iYWNrdXAvci9iYWNrdXBfZmtleS5yZXN1bHQJMjAwOC0xMC0wNyAxNzox NTo0NCArMDAwMAorKysgYi9teXNxbC10ZXN0L3N1aXRlL2JhY2t1cC9yL2JhY2t1cF9ma2V5LnJl c3VsdAkyMDA4LTExLTI3IDE2OjM2OjU3ICswMDAwCkBAIC00Niw5ICs0NiwxNCBAQCBOb3cgcmVz dG9yZSB0aGUgZGF0YWJhc2UuCiBSRVNUT1JFIEZST00gJ2JhY2t1cF9ma2V5LmJhayc7CiBiYWNr dXBfaWQKICMKK1dhcm5pbmdzOgorIwkxMDUxCVVua25vd24gdGFibGUgJ2NoaWxkJwogUkVTVE9S RSBGUk9NICdiYWNrdXBfZmtleV9vcmlnLmJhayc7CiBiYWNrdXBfaWQKICMKK1dhcm5pbmdzOgor IwkxMDQ2CU5vIGRhdGFiYXNlIHNlbGVjdGVkCisjCTEwNTEJVW5rbm93biB0YWJsZSAncGFyZW50 JwogU2hvdyBkYXRhCiBTRUxFQ1QgKiBGUk9NIGJhY2t1cF9ma2V5LnBhcmVudDsKIGlkCkBAIC04 Nyw2ICs5Miw4IEBAIFJlc3RvcmluZyBkYXRhCiBSRVNUT1JFIEZST00gJ2JhY2t1cF9ma2V5LmJh ayc7CiBiYWNrdXBfaWQKICMKK1dhcm5pbmdzOgorIwkxMDQ2CU5vIGRhdGFiYXNlIHNlbGVjdGVk CiBWZXJpZnkgZm9yZWlnbl9rZXlfY2hlY2tzID0gT04KIFNIT1cgVkFSSUFCTEVTIExJS0UgJ2Zv cmVpZ25fa2V5X2NoZWNrcyUnOwogVmFyaWFibGVfbmFtZQlWYWx1ZQpAQCAtMTAwLDYgKzEwNyw4 IEBAIFJlc3RvcmluZyBkYXRhCiBSRVNUT1JFIEZST00gJ2JhY2t1cF9ma2V5LmJhayc7CiBiYWNr dXBfaWQKICMKK1dhcm5pbmdzOgorIwkxMDQ2CU5vIGRhdGFiYXNlIHNlbGVjdGVkCiBWZXJpZnkg Zm9yZWlnbl9rZXlfY2hlY2tzID0gT0ZGCiBTSE9XIFZBUklBQkxFUyBMSUtFICdmb3JlaWduX2tl eV9jaGVja3MlJzsKIFZhcmlhYmxlX25hbWUJVmFsdWUKCj09PSBtb2RpZmllZCBmaWxlICdteXNx bC10ZXN0L3N1aXRlL2JhY2t1cC9yL2JhY2t1cF9sb2NrX215aXNhbS5yZXN1bHQnCi0tLSBhL215 c3FsLXRlc3Qvc3VpdGUvYmFja3VwL3IvYmFja3VwX2xvY2tfbXlpc2FtLnJlc3VsdAkyMDA4LTEw LTA3IDE3OjE1OjQ0ICswMDAwCisrKyBiL215c3FsLXRlc3Qvc3VpdGUvYmFja3VwL3IvYmFja3Vw X2xvY2tfbXlpc2FtLnJlc3VsdAkyMDA4LTExLTI3IDE2OjM2OjU3ICswMDAwCkBAIC03MSw2ICs3 MSwxMSBAQCBSZWF0dGFjaCB0byBjb25uZWN0aW9uIDIgYW5kIGZpbmlzaC4KIFJlYXR0YWNoIHRv IGNvbm5lY3Rpb24gMSBhbmQgZmluaXNoLgogYmFja3VwX2lkCiAjCitXYXJuaW5nczoKKyMJMTAw OAlDYW4ndCBkcm9wIGRhdGFiYXNlICdkYjEnOyBkYXRhYmFzZSBkb2Vzbid0IGV4aXN0CisjCTEw NTEJVW5rbm93biB0YWJsZSAndDEnCisjCTEwNTEJVW5rbm93biB0YWJsZSAndDInCisjCTEwNTEJ VW5rbm93biB0YWJsZSAndDMnCiBTaG93IHRoZSBjb3VudCBmb3IgdDEuIEl0IHNob3VsZCBiZSAx IG1vcmUgdGhhbiBiZWZvcmUgcmVzdG9yZS4KIFNFTEVDVCBDT1VOVCgqKSBGUk9NIGRiMS50MTsK IENPVU5UKCopCkBAIC0xMjAsNiArMTI1LDEwIEBAIGEKIFJlYXR0YWNoIHRvIGNvbm5lY3Rpb24g MSBhbmQgZmluaXNoLgogYmFja3VwX2lkCiAjCitXYXJuaW5nczoKKyMJMTA0NglObyBkYXRhYmFz ZSBzZWxlY3RlZAorIwkxMDUxCVVua25vd24gdGFibGUgJ3QyJworIwkxMDUxCVVua25vd24gdGFi bGUgJ3QzJwogU2hvdyB0aGUgY291bnQgZm9yIHQxLiBJdCBzaG91bGQgYmUgdGhlIHNhbWUgYXMg YmVmb3JlIHJlc3RvcmUuCiBTRUxFQ1QgQ09VTlQoKikgRlJPTSBkYjEudDE7CiBDT1VOVCgqKQpA QCAtMTY0LDYgKzE3Myw5IEBAIERST1AgREFUQUJBU0UgZGIzOwogUkVTVE9SRSBGUk9NICdkYjMu YmFrJzsKIGJhY2t1cF9pZAogIworV2FybmluZ3M6CisjCTEwMDgJQ2FuJ3QgZHJvcCBkYXRhYmFz ZSAnZGIzJzsgZGF0YWJhc2UgZG9lc24ndCBleGlzdAorIwkxMDUxCVVua25vd24gdGFibGUgJ2Ri My52MScKIFNob3cgdGhlIHRhYmxlIGFuZCB2aWV3LgogU0hPVyBGVUxMIFRBQkxFUyBGUk9NIGRi MzsKIFRhYmxlc19pbl9kYjMJVGFibGVfdHlwZQoKPT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRl c3Qvc3VpdGUvYmFja3VwL3IvYmFja3VwX2xvZ3MucmVzdWx0JwotLS0gYS9teXNxbC10ZXN0L3N1 aXRlL2JhY2t1cC9yL2JhY2t1cF9sb2dzLnJlc3VsdAkyMDA4LTEwLTE1IDIwOjAwOjQ4ICswMDAw CisrKyBiL215c3FsLXRlc3Qvc3VpdGUvYmFja3VwL3IvYmFja3VwX2xvZ3MucmVzdWx0CTIwMDgt MTEtMjcgMTY6MzY6NTcgKzAwMDAKQEAgLTE1Niw2ICsxNTYsMTEgQEAgU0VUIERFQlVHX1NZTkM9 ICdub3cgU0lHTkFMIGZpbmlzaCc7CiBjb24yOiBGaW5pc2ggcmVzdG9yZSBjb21tYW5kCiBiYWNr dXBfaWQKICMKK1dhcm5pbmdzOgorIwkxMDUxCVVua25vd24gdGFibGUgJ3QxJworIwkxMDUxCVVu a25vd24gdGFibGUgJ3QxX3JlcycKKyMJMTA1MQlVbmtub3duIHRhYmxlICd0MicKKyMJMTA1MQlV bmtub3duIHRhYmxlICd0MycKIFNFVCBERUJVR19TWU5DPSAnbm93IFNJR05BTCBjb21wbGV0ZSc7 CiBTRVQgREVCVUdfU1lOQz0gJ25vdyBXQUlUX0ZPUiBjb21wbGV0ZSc7CiBERUxFVEUgRlJPTSBi YWNrdXBfbG9ncy50MV9yZXM7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnbXlzcWwtdGVzdC9zdWl0ZS9i YWNrdXAvci9iYWNrdXBfbWFueV9kYnMucmVzdWx0JwotLS0gYS9teXNxbC10ZXN0L3N1aXRlL2Jh Y2t1cC9yL2JhY2t1cF9tYW55X2Ricy5yZXN1bHQJMjAwOC0xMC0wNyAxNzoxNTo0NCArMDAwMAor KysgYi9teXNxbC10ZXN0L3N1aXRlL2JhY2t1cC9yL2JhY2t1cF9tYW55X2Ricy5yZXN1bHQJMjAw OC0xMS0yNyAxNjozNjo1NyArMDAwMApAQCAtNjQsNiArNjQsMjUgQEAgUmVzdG9yaW5nIGRhdGFi YXNlcwogUkVTVE9SRSBGUk9NICdidXBfbWFueWRicy5iYWsnOwogYmFja3VwX2lkCiAjCitXYXJu aW5nczoKKyMJMTAwOAlDYW4ndCBkcm9wIGRhdGFiYXNlICdkYjEnOyBkYXRhYmFzZSBkb2Vzbid0 IGV4aXN0CisjCTEwMDgJQ2FuJ3QgZHJvcCBkYXRhYmFzZSAnZGIyJzsgZGF0YWJhc2UgZG9lc24n dCBleGlzdAorIwkxMDA4CUNhbid0IGRyb3AgZGF0YWJhc2UgJ2RiMyc7IGRhdGFiYXNlIGRvZXNu J3QgZXhpc3QKKyMJMTAwOAlDYW4ndCBkcm9wIGRhdGFiYXNlICdkYjQnOyBkYXRhYmFzZSBkb2Vz bid0IGV4aXN0CisjCTEwMDgJQ2FuJ3QgZHJvcCBkYXRhYmFzZSAnZGI1JzsgZGF0YWJhc2UgZG9l c24ndCBleGlzdAorIwkxMDA4CUNhbid0IGRyb3AgZGF0YWJhc2UgJ2RiNic7IGRhdGFiYXNlIGRv ZXNuJ3QgZXhpc3QKKyMJMTAwOAlDYW4ndCBkcm9wIGRhdGFiYXNlICdkYjcnOyBkYXRhYmFzZSBk b2Vzbid0IGV4aXN0CisjCTEwMDgJQ2FuJ3QgZHJvcCBkYXRhYmFzZSAnZGI4JzsgZGF0YWJhc2Ug ZG9lc24ndCBleGlzdAorIwkxMDA4CUNhbid0IGRyb3AgZGF0YWJhc2UgJ2RiOSc7IGRhdGFiYXNl IGRvZXNuJ3QgZXhpc3QKKyMJMTAwOAlDYW4ndCBkcm9wIGRhdGFiYXNlICdkYjEwJzsgZGF0YWJh c2UgZG9lc24ndCBleGlzdAorIwkxMDA4CUNhbid0IGRyb3AgZGF0YWJhc2UgJ2RiMTEnOyBkYXRh YmFzZSBkb2Vzbid0IGV4aXN0CisjCTEwMDgJQ2FuJ3QgZHJvcCBkYXRhYmFzZSAnZGIxMic7IGRh dGFiYXNlIGRvZXNuJ3QgZXhpc3QKKyMJMTAwOAlDYW4ndCBkcm9wIGRhdGFiYXNlICdkYjEzJzsg ZGF0YWJhc2UgZG9lc24ndCBleGlzdAorIwkxMDA4CUNhbid0IGRyb3AgZGF0YWJhc2UgJ2RiMTQn OyBkYXRhYmFzZSBkb2Vzbid0IGV4aXN0CisjCTEwMDgJQ2FuJ3QgZHJvcCBkYXRhYmFzZSAnZGIx NSc7IGRhdGFiYXNlIGRvZXNuJ3QgZXhpc3QKKyMJMTAwOAlDYW4ndCBkcm9wIGRhdGFiYXNlICdk YjE2JzsgZGF0YWJhc2UgZG9lc24ndCBleGlzdAorIwkxMDA4CUNhbid0IGRyb3AgZGF0YWJhc2Ug J2RiMTcnOyBkYXRhYmFzZSBkb2Vzbid0IGV4aXN0CisjCTEwMDgJQ2FuJ3QgZHJvcCBkYXRhYmFz ZSAnZGIxOCc7IGRhdGFiYXNlIGRvZXNuJ3QgZXhpc3QKIENoZWNraW5nIHRoYXQgYWxsIGRicyBh cmUgdGhlcmUKIFNIT1cgREFUQUJBU0VTIExJS0UgJ2RiJSc7CiBEYXRhYmFzZSAoZGIlKQoKPT09 IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3Qvc3VpdGUvYmFja3VwL3IvYmFja3VwX211bHRpX2Js b2Nrcy5yZXN1bHQnCi0tLSBhL215c3FsLXRlc3Qvc3VpdGUvYmFja3VwL3IvYmFja3VwX211bHRp X2Jsb2Nrcy5yZXN1bHQJMjAwOC0xMC0wNyAxNzoxNTo0NCArMDAwMAorKysgYi9teXNxbC10ZXN0 L3N1aXRlL2JhY2t1cC9yL2JhY2t1cF9tdWx0aV9ibG9ja3MucmVzdWx0CTIwMDgtMTEtMjcgMTY6 MzY6NTcgKzAwMDAKQEAgLTMxLDYgKzMxLDkgQEAgUGVyZm9ybWluZyByZXN0b3JlIC4uLgogUkVT VE9SRSBGUk9NICd0ZXN0LmJhJzsKIGJhY2t1cF9pZAogIzsKK1dhcm5pbmdzOgorIzsJMTAwOAlD YW4ndCBkcm9wIGRhdGFiYXNlICdteXNxbHRlc3QnOyBkYXRhYmFzZSBkb2Vzbid0IGV4aXN0Cisj OwkxMDQ2CU5vIGRhdGFiYXNlIHNlbGVjdGVkCiBDaGVja2luZyBjb250ZW50cyBvZiByZXN0b3Jl IC4uLgogU0VMRUNUIExFTkdUSChhKSBGUk9NIHQxOwogTEVOR1RIKGEpCgo9PT0gbW9kaWZpZWQg ZmlsZSAnbXlzcWwtdGVzdC9zdWl0ZS9iYWNrdXAvci9iYWNrdXBfbXlpc2FtMi5yZXN1bHQnCi0t LSBhL215c3FsLXRlc3Qvc3VpdGUvYmFja3VwL3IvYmFja3VwX215aXNhbTIucmVzdWx0CTIwMDgt MTAtMDcgMTc6MTU6NDQgKzAwMDAKKysrIGIvbXlzcWwtdGVzdC9zdWl0ZS9iYWNrdXAvci9iYWNr dXBfbXlpc2FtMi5yZXN1bHQJMjAwOC0xMS0yNyAxNjozNjo1NyArMDAwMApAQCAtNDgsNiArNDgs OSBAQCBEUk9QIERBVEFCQVNFIG15c3FsdGVzdDsKIFJFU1RPUkUgRlJPTSAndGVzdC5iYSc7CiBi YWNrdXBfaWQKICMKK1dhcm5pbmdzOgorIwkxMDA4CUNhbid0IGRyb3AgZGF0YWJhc2UgJ215c3Fs dGVzdCc7IGRhdGFiYXNlIGRvZXNuJ3QgZXhpc3QKKyMJMTA0NglObyBkYXRhYmFzZSBzZWxlY3Rl ZAogU0VMRUNUIExFTkdUSChjMSkgRlJPTSB0MTsKIExFTkdUSChjMSkKIDI2MjE0NAoKPT09IG1v ZGlmaWVkIGZpbGUgJ215c3FsLXRlc3Qvc3VpdGUvYmFja3VwL3IvYmFja3VwX29iamVjdHMucmVz dWx0JwotLS0gYS9teXNxbC10ZXN0L3N1aXRlL2JhY2t1cC9yL2JhY2t1cF9vYmplY3RzLnJlc3Vs dAkyMDA4LTEwLTA3IDE3OjE1OjQ0ICswMDAwCisrKyBiL215c3FsLXRlc3Qvc3VpdGUvYmFja3Vw L3IvYmFja3VwX29iamVjdHMucmVzdWx0CTIwMDgtMTEtMjcgMTY6MzY6NTcgKzAwMDAKQEAgLTkw LDYgKzkwLDI0IEBAIFNFVCBjaGFyYWN0ZXJfc2V0X2NsaWVudCA9ICdsYXRpbjEnOwogUkVTVE9S RSBGUk9NICdidXBfb2JqZWN0cy5iYWsnOwogYmFja3VwX2lkCiAjCitXYXJuaW5nczoKKyMJMTAw OAlDYW4ndCBkcm9wIGRhdGFiYXNlICdkYjEnOyBkYXRhYmFzZSBkb2Vzbid0IGV4aXN0CisjCTEw MDgJQ2FuJ3QgZHJvcCBkYXRhYmFzZSAnZGIyJzsgZGF0YWJhc2UgZG9lc24ndCBleGlzdAorIwkx MDUxCVVua25vd24gdGFibGUgJ3QxMScKKyMJMTA1MQlVbmtub3duIHRhYmxlICd0MTInCisjCTEw NTEJVW5rbm93biB0YWJsZSAndDEzJworIwkxMDUxCVVua25vd24gdGFibGUgJ3QyMScKKyMJMTMw NQlQUk9DRURVUkUgZGIyLnAxMSBkb2VzIG5vdCBleGlzdAorIwkxMzA1CVBST0NFRFVSRSBkYjEu cDIxIGRvZXMgbm90IGV4aXN0CisjCTEzMDUJRlVOQ1RJT04gZGIyLmYyMSBkb2VzIG5vdCBleGlz dAorIwkxMDUxCVVua25vd24gdGFibGUgJ2RiMi52MjInCisjCTEwNTEJVW5rbm93biB0YWJsZSAn ZGIyLnYxMScKKyMJMTA1MQlVbmtub3duIHRhYmxlICdkYjEudjEyJworIwkxMDUxCVVua25vd24g dGFibGUgJ2RiMS52MjEnCisjCTEzNjAJVHJpZ2dlciBkb2VzIG5vdCBleGlzdAorIwkxMzYwCVRy aWdnZXIgZG9lcyBub3QgZXhpc3QKKyMJMTMwNQlFdmVudCBlMTEgZG9lcyBub3QgZXhpc3QKKyMJ MTMwNQlFdmVudCBlMjEgZG9lcyBub3QgZXhpc3QKIFNIT1cgVEFCTEVTIElOIGRiMTsKIFRhYmxl c19pbl9kYjEKIHQxMQoKPT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3Qvc3VpdGUvYmFja3Vw L3IvYmFja3VwX3Byb2NlZHVyZXMucmVzdWx0JwotLS0gYS9teXNxbC10ZXN0L3N1aXRlL2JhY2t1 cC9yL2JhY2t1cF9wcm9jZWR1cmVzLnJlc3VsdAkyMDA4LTEwLTA3IDE3OjE1OjQ0ICswMDAwCisr KyBiL215c3FsLXRlc3Qvc3VpdGUvYmFja3VwL3IvYmFja3VwX3Byb2NlZHVyZXMucmVzdWx0CTIw MDgtMTEtMjcgMTY6MzY6NTcgKzAwMDAKQEAgLTI2LDYgKzI2LDEwIEBAIERST1AgREFUQUJBU0Ug YnVwX3Byb2M7CiBSRVNUT1JFIEZST00gJ2J1cF9wcm9jLmJhayc7CiBiYWNrdXBfaWQKICMKK1dh cm5pbmdzOgorIwkxMDA4CUNhbid0IGRyb3AgZGF0YWJhc2UgJ2J1cF9wcm9jJzsgZGF0YWJhc2Ug ZG9lc24ndCBleGlzdAorIwkxMDQ2CU5vIGRhdGFiYXNlIHNlbGVjdGVkCisjCTEzMDUJUFJPQ0VE VVJFIGJ1cF9wcm9jLnAyIGRvZXMgbm90IGV4aXN0CiAKIENoZWNrIHRoYXQgcHJvY2VkdXJlcyBh cmUgdGhlcmUgYWZ0ZXIgdGhlIHJlc3RvcmUKIENBTEwgcDEoKTsKCj09PSBtb2RpZmllZCBmaWxl ICdteXNxbC10ZXN0L3N1aXRlL2JhY2t1cC9yL2JhY2t1cF9zZWN1cml0eS5yZXN1bHQnCi0tLSBh L215c3FsLXRlc3Qvc3VpdGUvYmFja3VwL3IvYmFja3VwX3NlY3VyaXR5LnJlc3VsdAkyMDA4LTEw LTA3IDE3OjE1OjQ0ICswMDAwCisrKyBiL215c3FsLXRlc3Qvc3VpdGUvYmFja3VwL3IvYmFja3Vw X3NlY3VyaXR5LnJlc3VsdAkyMDA4LTExLTI3IDE2OjM2OjU3ICswMDAwCkBAIC01Miw2ICs1Miw4 IEBAIG5vX3JpZ2h0czogQXR0ZW1wdGluZyByZXN0b3JlLiBTaG91bGQgc3UKIFJFU1RPUkUgRlJP TSAnYnVwX3dpdGhfcmlnaHRzLmJhayc7CiBiYWNrdXBfaWQKICMKK1dhcm5pbmdzOgorIwkxMDQ2 CU5vIGRhdGFiYXNlIHNlbGVjdGVkCiBTRUxFQ1QgKiBGUk9NIGJhY2t1cF90ZXN0LnQxOwogYQog MDEgVGVzdCAjMSAtIHN1cGVyIHByaXZpbGVnZQpAQCAtNjUsNiArNjcsOCBAQCBkZWZhdWx0OiBE byByZXN0b3JlIHRvIGVuc3VyZSBpdCBzdGlsbCB3CiBSRVNUT1JFIEZST00gJ2JhY2t1cF90ZXN0 X29yaWcuYmFrJzsKIGJhY2t1cF9pZAogIworV2FybmluZ3M6CisjCTEwNTEJVW5rbm93biB0YWJs ZSAndDEnCiBTRUxFQ1QgKiBGUk9NIGJhY2t1cF90ZXN0LnQxOwogYQogMDEgVGVzdCAjMSAtIHN1 cGVyIHByaXZpbGVnZQoKPT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3Qvc3VpdGUvYmFja3Vw L3IvYmFja3VwX3NuYXBzaG90LnJlc3VsdCcKLS0tIGEvbXlzcWwtdGVzdC9zdWl0ZS9iYWNrdXAv ci9iYWNrdXBfc25hcHNob3QucmVzdWx0CTIwMDgtMTAtMDcgMTc6MTU6NDQgKzAwMDAKKysrIGIv bXlzcWwtdGVzdC9zdWl0ZS9iYWNrdXAvci9iYWNrdXBfc25hcHNob3QucmVzdWx0CTIwMDgtMTEt MjcgMTY6MzY6NTcgKzAwMDAKQEAgLTYzLDYgKzYzLDkgQEAgY29uMTogUmVzdG9yaW5nIHRoZSBk YXRhYmFzZQogUkVTVE9SRSBGUk9NICJidXBfc25hcHNob3QuYmFrIjsKIGJhY2t1cF9pZAogIwor V2FybmluZ3M6CisjCTEwNTEJVW5rbm93biB0YWJsZSAndDEnCisjCTEwNTEJVW5rbm93biB0YWJs ZSAndDInCiBjb24xOiBTaG93aW5nIHRoZSBkYXRhIChubyBuZXcgZGF0YSBzaG91bGQgYmUgaGVy ZSkuCiBTRUxFQ1QgKiBGUk9NIGJ1cF9zbmFwc2hvdC50MSBXSEVSRSB3b3JkIExJS0UgJy0lJzsK IHdvcmQKQEAgLTEwOSw2ICsxMTIsOSBAQCBjb24xOiBSZXN0b3JpbmcgdGhlIGRhdGFiYXNlCiBS RVNUT1JFIEZST00gImJ1cF9zbmFwc2hvdC5iYWsiOwogYmFja3VwX2lkCiAjCitXYXJuaW5nczoK KyMJMTA0NglObyBkYXRhYmFzZSBzZWxlY3RlZAorIwkxMDUxCVVua25vd24gdGFibGUgJ3QyJwog Y29uMTogU2hvd2luZyB0aGUgZGF0YSAobm8gbmV3IGRhdGEgc2hvdWxkIGJlIGhlcmUpLgogU0VM RUNUICogRlJPTSBidXBfc25hcHNob3QudDEgV0hFUkUgd29yZCBMSUtFICctJSc7CiB3b3JkCgo9 PT0gbW9kaWZpZWQgZmlsZSAnbXlzcWwtdGVzdC9zdWl0ZS9iYWNrdXAvci9iYWNrdXBfdGFibGVz cGFjZS5yZXN1bHQnCi0tLSBhL215c3FsLXRlc3Qvc3VpdGUvYmFja3VwL3IvYmFja3VwX3RhYmxl c3BhY2UucmVzdWx0CTIwMDgtMTAtMTMgMTI6Mzc6MTAgKzAwMDAKKysrIGIvbXlzcWwtdGVzdC9z dWl0ZS9iYWNrdXAvci9iYWNrdXBfdGFibGVzcGFjZS5yZXN1bHQJMjAwOC0xMS0yNyAxNjozNjo1 NyArMDAwMApAQCAtMjgsNiArMjgsMTAgQEAgTm93IHJlc3RvcmUgdGhlIGRhdGFiYXNlLgogUkVT VE9SRSBGUk9NICdiYWNrdXBfdHMuYmFrJzsKIGJhY2t1cF9pZAogIworV2FybmluZ3M6CisjCTEw MDgJQ2FuJ3QgZHJvcCBkYXRhYmFzZSAnYmFja3VwX3RzJzsgZGF0YWJhc2UgZG9lc24ndCBleGlz dAorIwkxMDUxCVVua25vd24gdGFibGUgJ2hhc190cycKKyMJMTA1MQlVbmtub3duIHRhYmxlICdu b3RfdHMnCiBTaG93IGRhdGEKIFNFTEVDVCAqIEZST00gYmFja3VwX3RzLm5vdF90czsKIGlkCWNv bW1lbnQKCj09PSBtb2RpZmllZCBmaWxlICdteXNxbC10ZXN0L3N1aXRlL2JhY2t1cC9yL2JhY2t1 cF92aWV3X29uX3ZpZXcucmVzdWx0JwotLS0gYS9teXNxbC10ZXN0L3N1aXRlL2JhY2t1cC9yL2Jh Y2t1cF92aWV3X29uX3ZpZXcucmVzdWx0CTIwMDgtMTAtMDcgMTc6MTU6NDQgKzAwMDAKKysrIGIv bXlzcWwtdGVzdC9zdWl0ZS9iYWNrdXAvci9iYWNrdXBfdmlld19vbl92aWV3LnJlc3VsdAkyMDA4 LTExLTI3IDE2OjM2OjU3ICswMDAwCkBAIC0xMSw2ICsxMSwxMCBAQCBiYWNrdXBfaWQKIFJFU1RP UkUgRlJPTSAndGVzdC5iYWsnOwogYmFja3VwX2lkCiAjCitXYXJuaW5nczoKKyMJMTA1MQlVbmtu b3duIHRhYmxlICd0MScKKyMJMTA1MQlVbmtub3duIHRhYmxlICdkYjEudjEnCisjCTEwNTEJVW5r bm93biB0YWJsZSAnZGIxLnYyJwogU0VMRUNUICogRlJPTSBkYjEudjI7CiBhCiAxCgo9PT0gbW9k aWZpZWQgZmlsZSAnbXlzcWwtdGVzdC9zdWl0ZS9iYWNrdXAvci9iYWNrdXBfdmlld3MucmVzdWx0 JwotLS0gYS9teXNxbC10ZXN0L3N1aXRlL2JhY2t1cC9yL2JhY2t1cF92aWV3cy5yZXN1bHQJMjAw OC0xMS0yNiAxMzo0Njo0MiArMDAwMAorKysgYi9teXNxbC10ZXN0L3N1aXRlL2JhY2t1cC9yL2Jh Y2t1cF92aWV3cy5yZXN1bHQJMjAwOC0xMS0yNyAxNjozNjo1NyArMDAwMApAQCAtMjg1LDYgKzI4 NSwyMSBAQCBEUk9QIERBVEFCQVNFIGJ1cF9kYjI7CiBSRVNUT1JFIEZST00gJ2J1cF9vYmplY3R2 aWV3LmJhayc7CiBiYWNrdXBfaWQKICMKK1dhcm5pbmdzOgorIwkxMDA4CUNhbid0IGRyb3AgZGF0 YWJhc2UgJ2J1cF9kYjEnOyBkYXRhYmFzZSBkb2Vzbid0IGV4aXN0CisjCTEwMDgJQ2FuJ3QgZHJv cCBkYXRhYmFzZSAnYnVwX2RiMic7IGRhdGFiYXNlIGRvZXNuJ3QgZXhpc3QKKyMJMTA0NglObyBk YXRhYmFzZSBzZWxlY3RlZAorIwkxMDUxCVVua25vd24gdGFibGUgJ3QzJworIwkxMDUxCVVua25v d24gdGFibGUgJ3Q1JworIwkxMDUxCVVua25vd24gdGFibGUgJ3QyJworIwkxMDUxCVVua25vd24g dGFibGUgJ2J1cF9kYjIudjEnCisjCTEwNTEJVW5rbm93biB0YWJsZSAnYnVwX2RiMS52NScKKyMJ MTA1MQlVbmtub3duIHRhYmxlICdidXBfZGIxLnYyJworIwkxMDUxCVVua25vd24gdGFibGUgJ2J1 cF9kYjIudjYnCisjCTEwNTEJVW5rbm93biB0YWJsZSAnYnVwX2RiMS52Y29tYicKKyMJMTA1MQlV bmtub3duIHRhYmxlICdidXBfZGIxLnN0dWRlbnRfZGV0YWlscycKKyMJMTA1MQlVbmtub3duIHRh YmxlICdidXBfZGIyLnYzJworIwkxMDUxCVVua25vd24gdGFibGUgJ2J1cF9kYjIudnYnCiBzaG93 aW5nIG9iamVjdHMgYW5kIGNyZWF0ZSBzdGF0ZW1lbnRzCiBTSE9XIENSRUFURSBEQVRBQkFTRSBi dXBfZGIxOzsKIERhdGFiYXNlCWJ1cF9kYjEKQEAgLTQ5MCw2ICs1MDUsMjEgQEAgRFJPUCBEQVRB QkFTRSBidXBfZGIyOwogUkVTVE9SRSBGUk9NICdidXBfb2JqZWN0dmlldzMuYmFrJzsKIGJhY2t1 cF9pZAogIworV2FybmluZ3M6CisjCTEwMDgJQ2FuJ3QgZHJvcCBkYXRhYmFzZSAnYnVwX2RiMSc7 IGRhdGFiYXNlIGRvZXNuJ3QgZXhpc3QKKyMJMTAwOAlDYW4ndCBkcm9wIGRhdGFiYXNlICdidXBf ZGIyJzsgZGF0YWJhc2UgZG9lc24ndCBleGlzdAorIwkxMDQ2CU5vIGRhdGFiYXNlIHNlbGVjdGVk CisjCTEwNTEJVW5rbm93biB0YWJsZSAndDMnCisjCTEwNTEJVW5rbm93biB0YWJsZSAndDUnCisj CTEwNTEJVW5rbm93biB0YWJsZSAndDInCisjCTEwNTEJVW5rbm93biB0YWJsZSAnYnVwX2RiMi52 MScKKyMJMTA1MQlVbmtub3duIHRhYmxlICdidXBfZGIxLnY1JworIwkxMDUxCVVua25vd24gdGFi bGUgJ2J1cF9kYjEudjInCisjCTEwNTEJVW5rbm93biB0YWJsZSAnYnVwX2RiMi52NicKKyMJMTA1 MQlVbmtub3duIHRhYmxlICdidXBfZGIxLnZjb21iJworIwkxMDUxCVVua25vd24gdGFibGUgJ2J1 cF9kYjEuc3R1ZGVudF9kZXRhaWxzJworIwkxMDUxCVVua25vd24gdGFibGUgJ2J1cF9kYjIudjMn CisjCTEwNTEJVW5rbm93biB0YWJsZSAnYnVwX2RiMi52dicKIFNFTEVDVCAqIEZST00gYnVwX2Ri Mi52MyBPUkRFUiBCWSBhZ2U7CiBuYW1lCWFnZQllZHVjYXRpb24KIGFhMwkxOQlTY2hvb2wKQEAg LTUyMyw2ICs1NTMsMjEgQEAgRFJPUCBEQVRBQkFTRSBidXBfZGIyOwogUkVTVE9SRSBGUk9NICdi dXBfb2JqZWN0dmlldy5iYWsnOwogYmFja3VwX2lkCiAjCitXYXJuaW5nczoKKyMJMTAwOAlDYW4n dCBkcm9wIGRhdGFiYXNlICdidXBfZGIxJzsgZGF0YWJhc2UgZG9lc24ndCBleGlzdAorIwkxMDA4 CUNhbid0IGRyb3AgZGF0YWJhc2UgJ2J1cF9kYjInOyBkYXRhYmFzZSBkb2Vzbid0IGV4aXN0Cisj CTEwNDYJTm8gZGF0YWJhc2Ugc2VsZWN0ZWQKKyMJMTA1MQlVbmtub3duIHRhYmxlICd0MycKKyMJ MTA1MQlVbmtub3duIHRhYmxlICd0NScKKyMJMTA1MQlVbmtub3duIHRhYmxlICd0MicKKyMJMTA1 MQlVbmtub3duIHRhYmxlICdidXBfZGIyLnYxJworIwkxMDUxCVVua25vd24gdGFibGUgJ2J1cF9k YjEudjUnCisjCTEwNTEJVW5rbm93biB0YWJsZSAnYnVwX2RiMS52MicKKyMJMTA1MQlVbmtub3du IHRhYmxlICdidXBfZGIyLnY2JworIwkxMDUxCVVua25vd24gdGFibGUgJ2J1cF9kYjEudmNvbWIn CisjCTEwNTEJVW5rbm93biB0YWJsZSAnYnVwX2RiMS5zdHVkZW50X2RldGFpbHMnCisjCTEwNTEJ VW5rbm93biB0YWJsZSAnYnVwX2RiMi52MycKKyMJMTA1MQlVbmtub3duIHRhYmxlICdidXBfZGIy LnZ2JwogU0VMRUNUICogRlJPTSBidXBfZGIxLnQxOwogaWQJbmFtZQljaXR5CiAxCWFhMQlSUjEK QEAgLTU3NCw2ICs2MTksMjEgQEAgRFJPUCBEQVRBQkFTRSBidXBfZGIyOwogUkVTVE9SRSBGUk9N ICdidXBfb2JqZWN0dmlldy5iYWsnOwogYmFja3VwX2lkCiAjCitXYXJuaW5nczoKKyMJMTAwOAlD YW4ndCBkcm9wIGRhdGFiYXNlICdidXBfZGIxJzsgZGF0YWJhc2UgZG9lc24ndCBleGlzdAorIwkx MDA4CUNhbid0IGRyb3AgZGF0YWJhc2UgJ2J1cF9kYjInOyBkYXRhYmFzZSBkb2Vzbid0IGV4aXN0 CisjCTEwNDYJTm8gZGF0YWJhc2Ugc2VsZWN0ZWQKKyMJMTA1MQlVbmtub3duIHRhYmxlICd0MycK KyMJMTA1MQlVbmtub3duIHRhYmxlICd0NScKKyMJMTA1MQlVbmtub3duIHRhYmxlICd0MicKKyMJ MTA1MQlVbmtub3duIHRhYmxlICdidXBfZGIyLnYxJworIwkxMDUxCVVua25vd24gdGFibGUgJ2J1 cF9kYjEudjUnCisjCTEwNTEJVW5rbm93biB0YWJsZSAnYnVwX2RiMS52MicKKyMJMTA1MQlVbmtu b3duIHRhYmxlICdidXBfZGIyLnY2JworIwkxMDUxCVVua25vd24gdGFibGUgJ2J1cF9kYjEudmNv bWInCisjCTEwNTEJVW5rbm93biB0YWJsZSAnYnVwX2RiMS5zdHVkZW50X2RldGFpbHMnCisjCTEw NTEJVW5rbm93biB0YWJsZSAnYnVwX2RiMi52MycKKyMJMTA1MQlVbmtub3duIHRhYmxlICdidXBf ZGIyLnZ2JwogVVNFIGJ1cF9kYjE7CiBDUkVBVEUgVklFVyBhbHRlcjEgQVMgU0VMRUNUIDU7CiBD UkVBVEUgVklFVyBhbHRlcjIgQVMgU0VMRUNUICogRlJPTSBhbHRlcjE7Cgo9PT0gbW9kaWZpZWQg ZmlsZSAnc3FsL3NpX29iamVjdHMuY2MnCi0tLSBhL3NxbC9zaV9vYmplY3RzLmNjCTIwMDgtMTEt MjYgMTQ6NDM6MDMgKzAwMDAKKysrIGIvc3FsL3NpX29iamVjdHMuY2MJMjAwOC0xMS0yNyAxNjoz Njo1NyArMDAwMApAQCAtNDYsNTEgKzQ2LDE2OSBAQCBuYW1lc3BhY2UgewogLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIAorLyoqCisgIFNpX3Nlc3Npb25fY29udGV4dCBk ZWZpbmVzIGEgd2F5IHRvIHNhdmUvcmVzZXQvcmVzdG9yZSBzZXNzaW9uIGNvbnRleHQKKyAgZm9y IFNJLW9wZXJhdGlvbnMuCisqLworCitjbGFzcyBTaV9zZXNzaW9uX2NvbnRleHQKK3sKK3B1Ymxp YzoKKyAgaW5saW5lIFNpX3Nlc3Npb25fY29udGV4dCgpCisgIHsgfQorCitwdWJsaWM6CisgIHZv aWQgc2F2ZShUSEQgKnRoZCk7CisgIHZvaWQgcmVzZXQoVEhEICp0aGQpOworICB2b2lkIHJlc3Rv cmUoVEhEICp0aGQpOworCitwcml2YXRlOgorICB1bG9uZyBtX3NxbF9tb2RlX3NhdmVkOworICBD SEFSU0VUX0lORk8gKm1fY2xpZW50X2NzX3NhdmVkOworICBDSEFSU0VUX0lORk8gKm1fcmVzdWx0 c19jc19zYXZlZDsKKyAgQ0hBUlNFVF9JTkZPICptX2Nvbm5lY3Rpb25fY2xfc2F2ZWQ7CisgIFRp bWVfem9uZSAqbV90el9zYXZlZDsKKyAgVEFCTEUgKm1fdG1wX3RhYmxlc19zYXZlZDsKKworcHJp dmF0ZToKKyAgU2lfc2Vzc2lvbl9jb250ZXh0KGNvbnN0IFNpX3Nlc3Npb25fY29udGV4dCAmKTsK KyAgU2lfc2Vzc2lvbl9jb250ZXh0ICZvcGVyYXRvciA9KGNvbnN0IFNpX3Nlc3Npb25fY29udGV4 dCAmKTsKK307CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCisvKioKKyAgUHJlc2VydmUgdGhlIGZv bGxvd2luZyBzZXNzaW9uIGF0dHJpYnV0ZXM6CisgICAgLSBzcWxfbW9kZTsKKyAgICAtIGNoYXJh Y3Rlcl9zZXRfY2xpZW50OworICAgIC0gY2hhcmFjdGVyX3NldF9yZXN1bHRzOworICAgIC0gY29s bGF0aW9uX2Nvbm5lY3Rpb247CisgICAgLSB0aW1lX3pvbmU7CisKKyAgUmVtZW1iZXIgYWxzbyBz ZXNzaW9uIHRlbXBvcmFyeSB0YWJsZXMuCisqLworCit2b2lkIFNpX3Nlc3Npb25fY29udGV4dDo6 c2F2ZShUSEQgKnRoZCkKK3sKKyAgREJVR19FTlRFUigiU2lfc2Vzc2lvbl9jb250ZXh0OjpzYXZl Iik7CisgIG1fc3FsX21vZGVfc2F2ZWQ9IHRoZC0+dmFyaWFibGVzLnNxbF9tb2RlOworICBtX2Ns aWVudF9jc19zYXZlZD0gdGhkLT52YXJpYWJsZXMuY2hhcmFjdGVyX3NldF9jbGllbnQ7CisgIG1f cmVzdWx0c19jc19zYXZlZD0gdGhkLT52YXJpYWJsZXMuY2hhcmFjdGVyX3NldF9yZXN1bHRzOwor ICBtX2Nvbm5lY3Rpb25fY2xfc2F2ZWQ9IHRoZC0+dmFyaWFibGVzLmNvbGxhdGlvbl9jb25uZWN0 aW9uOworICBtX3R6X3NhdmVkPSB0aGQtPnZhcmlhYmxlcy50aW1lX3pvbmU7CisgIG1fdG1wX3Rh Ymxlc19zYXZlZD0gdGhkLT50ZW1wb3JhcnlfdGFibGVzOworCisgIERCVUdfVk9JRF9SRVRVUk47 Cit9CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCisvKioKKyAgUmVzZXQgc2Vzc2lvbiBzdGF0ZSB0 byB0aGUgZm9sbG93aW5nOgorICAgIC0gc3FsX21vZGU6IDAKKyAgICAtIGNoYXJhY3Rlcl9zZXRf Y2xpZW50OiB1dGY4CisgICAgLSBjaGFyYWN0ZXJfc2V0X3Jlc3VsdHM6IGJpbmFyeSAodG8gZmV0 Y2ggcmVzdWx0cyB3L28gY29udmVyc2lvbikKKyAgICAtIGNvbGxhdGlvbl9jb25uZWN0aW9uOiB1 dGY4CisKKyAgVGVtcG9yYXJ5IHRhYmxlcyBzaG91bGQgYmUgaWdub3JlZCB3aGlsZSBsb29raW5n IGZvciB0YWJsZSBzdHJ1Y3R1cmVzLgorICBXZSB3YW50IHRvIGRlYWwgd2l0aCByZWFsIHRhYmxl cywgbm90IHRlbXBvcmFyeSBvbmVzLgorKi8KKwordm9pZCBTaV9zZXNzaW9uX2NvbnRleHQ6OnJl c2V0KFRIRCAqdGhkKQoreworICBEQlVHX0VOVEVSKCJTaV9zZXNzaW9uX2NvbnRleHQ6OnJlc2V0 Iik7CisKKyAgdGhkLT52YXJpYWJsZXMuc3FsX21vZGU9IDA7CisKKyAgdGhkLT52YXJpYWJsZXMu Y2hhcmFjdGVyX3NldF9jbGllbnQ9IHN5c3RlbV9jaGFyc2V0X2luZm87CisgIHRoZC0+dmFyaWFi bGVzLmNoYXJhY3Rlcl9zZXRfcmVzdWx0cz0gJm15X2NoYXJzZXRfYmluOworICB0aGQtPnZhcmlh Ymxlcy5jb2xsYXRpb25fY29ubmVjdGlvbj0gc3lzdGVtX2NoYXJzZXRfaW5mbzsKKyAgdGhkLT51 cGRhdGVfY2hhcnNldCgpOworCisgIHRoZC0+dGVtcG9yYXJ5X3RhYmxlcz0gTlVMTDsKKworICBE QlVHX1ZPSURfUkVUVVJOOworfQorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworLyoqCisgIFJlc3Rv cmUgc2Vzc2lvbiBzdGF0ZS4KKyovCisKK3ZvaWQgU2lfc2Vzc2lvbl9jb250ZXh0OjpyZXN0b3Jl KFRIRCAqdGhkKQoreworICBEQlVHX0VOVEVSKCJTaV9zZXNzaW9uX2NvbnRleHQ6OnJlc3RvcmUi KTsKKworICB0aGQtPnZhcmlhYmxlcy5zcWxfbW9kZT0gbV9zcWxfbW9kZV9zYXZlZDsKKyAgdGhk LT52YXJpYWJsZXMudGltZV96b25lPSBtX3R6X3NhdmVkOworCisgIHRoZC0+dmFyaWFibGVzLmNv bGxhdGlvbl9jb25uZWN0aW9uPSBtX2Nvbm5lY3Rpb25fY2xfc2F2ZWQ7CisgIHRoZC0+dmFyaWFi bGVzLmNoYXJhY3Rlcl9zZXRfcmVzdWx0cz0gbV9yZXN1bHRzX2NzX3NhdmVkOworICB0aGQtPnZh cmlhYmxlcy5jaGFyYWN0ZXJfc2V0X2NsaWVudD0gbV9jbGllbnRfY3Nfc2F2ZWQ7CisgIHRoZC0+ dXBkYXRlX2NoYXJzZXQoKTsKKworICB0aGQtPnRlbXBvcmFyeV90YWJsZXM9IG1fdG1wX3RhYmxl c19zYXZlZDsKKworICBEQlVHX1ZPSURfUkVUVVJOOworfQorCisvLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K Ky8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLworCisvKioKKyAgRXhlY3V0ZSBvbmUgRE1MIHN0YXRlbWVudCBp biBhIGJhY2t1cC1zcGVjaWZpYyBjb250ZXh0LiBSZXN1bHQgc2V0IGFuZAorICB3YXJuaW5nIGlu Zm9ybWF0aW9uIGFyZSBzdG9yZWQgaW4gdGhlIG91dHB1dCBwYXJhbWV0ZXIuIFNvbWUgc2Vzc2lv bgorICBhdHRyaWJ1dGVzIGFyZSBwcmVzZXJ2ZWQgYW5kIHJlc2V0IHRvIHByZWRlZmluZWQgdmFs dWVzIGJlZm9yZSBxdWVyeQorICBleGVjdXRpb24gKEBzZWUgU2lfc2Vzc2lvbl9jb250ZXh0KS4K KworICBAcGFyYW1baW5dICB0aGQgICAgICAgICBUaHJlYWQgY29udGV4dC4KKyAgQHBhcmFtW2lu XSAgcXVlcnkgICAgICAgU1FMIHF1ZXJ5IHRvIGJlIGV4ZWN1dGVkLgorICBAcGFyYW1bb3V0XSBl ZF9yZXN1bHQgICBBIHBsYWNlIHRvIHN0b3JlIHJlc3VsdCBhbmQgd2FybmluZ3MuCisKKyAgQHJl dHVybiBFcnJvciBzdGF0dXMuCisgICAgQHJldHZhbCBUUlVFIG9uIGVycm9yLgorICAgIEByZXR2 YWwgRkFMU0Ugb24gc3VjY2Vzcy4KKyovCisKIGJvb2wKIHJ1bl9zZXJ2aWNlX2ludGVyZmFjZV9z cWwoVEhEICp0aGQsIGNvbnN0IExFWF9TVFJJTkcgKnF1ZXJ5LAogICAgICAgICAgICAgICAgICAg ICAgICAgICBFZF9yZXN1bHQgKmVkX3Jlc3VsdCkKIHsKLSAgdWxvbmcgc3FsX21vZGVfc2F2ZWQ9 IHRoZC0+dmFyaWFibGVzLnNxbF9tb2RlOwotICBDSEFSU0VUX0lORk8gKmNsaWVudF9jc19zYXZl ZD0gdGhkLT52YXJpYWJsZXMuY2hhcmFjdGVyX3NldF9jbGllbnQ7Ci0gIENIQVJTRVRfSU5GTyAq cmVzdWx0c19jc19zYXZlZD0gdGhkLT52YXJpYWJsZXMuY2hhcmFjdGVyX3NldF9yZXN1bHRzOwot ICBDSEFSU0VUX0lORk8gKmNvbm5lY3Rpb25fY2xfc2F2ZWQ9IHRoZC0+dmFyaWFibGVzLmNvbGxh dGlvbl9jb25uZWN0aW9uOwotICBUQUJMRSAqdG1wX3RhYmxlc19zYXZlZD0gdGhkLT50ZW1wb3Jh cnlfdGFibGVzOworICBTaV9zZXNzaW9uX2NvbnRleHQgc2Vzc2lvbl9jb250ZXh0OwogCiAgIERC VUdfRU5URVIoInJ1bl9zZXJ2aWNlX2ludGVyZmFjZV9zcWwiKTsKICAgREJVR19QUklOVCgicnVu X3NlcnZpY2VfaW50ZXJmYWNlX3NxbCIsCiAgICAgICAgICAgICAgKCJxdWVyeTogJS4qcyIsCiAg ICAgICAgICAgICAgIChpbnQpIHF1ZXJ5LT5sZW5ndGgsIChjb25zdCBjaGFyICopIHF1ZXJ5LT5z dHIpKTsKIAotICB0aGQtPnZhcmlhYmxlcy5zcWxfbW9kZT0gMDsKKyAgc2Vzc2lvbl9jb250ZXh0 LnNhdmUodGhkKTsKKyAgc2Vzc2lvbl9jb250ZXh0LnJlc2V0KHRoZCk7CiAKLSAgLyoKLSAgICBU ZW1wb3JhcnkgdGFibGVzIHNob3VsZCBiZSBpZ25vcmVkIHdoaWxlIGxvb2tpbmcgZm9yIHRhYmxl IHN0cnVjdHVyZXMuCi0gICAgQmFja3VwIHdhbnRzIHRvIGJhY2t1cCBvcmRpbmFyeSB0YWJsZXMs IG5vdCB0ZW1wb3Jhcnkgb25lcy4KLSAgKi8KLSAgdGhkLT50ZW1wb3JhcnlfdGFibGVzPSBOVUxM OworICBib29sIHJjPSBteXNxbF9leGVjdXRlX2RpcmVjdCh0aGQsICpxdWVyeSwgZWRfcmVzdWx0 KTsKIAotICAvKiBBIHF1ZXJ5IGlzIGluIFVURjggKGludGVybmFsIGNoYXJhY3RlciBzZXQpLiAq LwotICB0aGQtPnZhcmlhYmxlcy5jaGFyYWN0ZXJfc2V0X2NsaWVudD0gc3lzdGVtX2NoYXJzZXRf aW5mbzsKKyAgc2Vzc2lvbl9jb250ZXh0LnJlc3RvcmUodGhkKTsKIAotICAvKgotICAgIEVkX3Jl c3VsdHMgc2hvdWxkIGJlIGZldGNoZWQgd2l0aG91dCBhbnkgY29udmVyc2lvbiAoaW4gdGhlIG9y aWdpbmFsCi0gICAgY2hhcmFjdGVyIHNldCkgaW4gb3JkZXIgdG8gcHJlc2VydmUgb2JqZWN0IGRl ZmluaXRpb24gcXVlcnkgaW50YWN0LgotICAqLwotICB0aGQtPnZhcmlhYmxlcy5jaGFyYWN0ZXJf c2V0X3Jlc3VsdHM9ICZteV9jaGFyc2V0X2JpbjsKLSAgdGhkLT52YXJpYWJsZXMuY29sbGF0aW9u X2Nvbm5lY3Rpb249IHN5c3RlbV9jaGFyc2V0X2luZm87Ci0gIHRoZC0+dXBkYXRlX2NoYXJzZXQo KTsKKyAgREJVR19SRVRVUk4ocmMpOworfQogCi0gIGJvb2wgcmM9IG15c3FsX2V4ZWN1dGVfZGly ZWN0KHRoZCwgKnF1ZXJ5LCBlZF9yZXN1bHQpOworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8KIAotICB0aGQtPnZhcmlhYmxlcy5zcWxfbW9kZT0gc3FsX21vZGVfc2F2ZWQ7 Ci0gIHRoZC0+dmFyaWFibGVzLmNvbGxhdGlvbl9jb25uZWN0aW9uPSBjb25uZWN0aW9uX2NsX3Nh dmVkOwotICB0aGQtPnZhcmlhYmxlcy5jaGFyYWN0ZXJfc2V0X3Jlc3VsdHM9IHJlc3VsdHNfY3Nf c2F2ZWQ7Ci0gIHRoZC0+dmFyaWFibGVzLmNoYXJhY3Rlcl9zZXRfY2xpZW50PSBjbGllbnRfY3Nf c2F2ZWQ7Ci0gIHRoZC0+dXBkYXRlX2NoYXJzZXQoKTsKKy8qKgorICBVcGRhdGUgVEhEIHdpdGgg dGhlIHdhcm5pbmdzIGZyb20gdGhlIGdpdmVuIGxpc3QuCiAKLSAgdGhkLT50ZW1wb3JhcnlfdGFi bGVzPSB0bXBfdGFibGVzX3NhdmVkOworICBAcGFyYW1baW5dICB0aGQgICBUaHJlYWQgY29udGV4 dC4KKyAgQHBhcmFtcGluXSAgc3JjICAgV2FybmluZyBsaXN0LgorKi8KIAotICBEQlVHX1JFVFVS TihyYyk7Cit2b2lkIGNvcHlfd2FybmluZ3MoVEhEICp0aGQsIExpc3Q8TVlTUUxfRVJST1I+ICpz cmMpCit7CisgIExpc3RfaXRlcmF0b3JfZmFzdDxNWVNRTF9FUlJPUj4gZXJyX2l0KCpzcmMpOwor ICBNWVNRTF9FUlJPUiAqZXJyOworCisgIHdoaWxlICgoZXJyPSBlcnJfaXQrKykpCisgICAgdGhk LT53YXJuaW5nX2luZm8tPnB1c2hfd2FybmluZyh0aGQsIGVyci0+bGV2ZWwsIGVyci0+Y29kZSwg ZXJyLT5tc2cpOwogfQogCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KQEAgLTEwNiwxMCArMjI0LDEwIEBA IHB1YmxpYzoKICAgc3RhdGljIHZvaWQgZGVsZXRlX2tleSh2b2lkICpkYXRhKTsKIAogcHVibGlj OgotICBUYWJsZV9uYW1lX2tleShjb25zdCBjaGFyICpkYl9uYW1lX3N0ciwKLSAgICAgICAgICAg ICAgICAgdWludCBkYl9uYW1lX2xlbmd0aCwKLSAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAq dGFibGVfbmFtZV9zdHIsCi0gICAgICAgICAgICAgICAgIHVpbnQgdGFibGVfbmFtZV9sZW5ndGgp CisgIGlubGluZSBUYWJsZV9uYW1lX2tleShjb25zdCBjaGFyICpkYl9uYW1lX3N0ciwKKyAgICAg ICAgICAgICAgICAgICAgICAgIHVpbnQgZGJfbmFtZV9sZW5ndGgsCisgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBjaGFyICp0YWJsZV9uYW1lX3N0ciwKKyAgICAgICAgICAgICAgICAgICAg ICAgIHVpbnQgdGFibGVfbmFtZV9sZW5ndGgpCiAgIHsKICAgICBkYl9uYW1lLmNvcHkoZGJfbmFt ZV9zdHIsIGRiX25hbWVfbGVuZ3RoLCBzeXN0ZW1fY2hhcnNldF9pbmZvKTsKICAgICB0YWJsZV9u YW1lLmNvcHkodGFibGVfbmFtZV9zdHIsIHRhYmxlX25hbWVfbGVuZ3RoLCBzeXN0ZW1fY2hhcnNl dF9pbmZvKTsKQEAgLTE1OCw0NyArMjc2LDY5IEBAIHN0cnVjdCBJbnRfdmFsdWUKICAgeyB9CiB9 OwogCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIAogc3RydWN0IENfc3RyCiB7CiAgIExFWF9TVFJJTkcg bGV4X3N0cmluZzsKIAotICBDX3N0cihjb25zdCBjaGFyICpzdHIsIHNpemVfdCBsZW5ndGgpCisg IGlubGluZSBDX3N0cihjb25zdCBjaGFyICpzdHIsIHNpemVfdCBsZW5ndGgpCiAgIHsKICAgICBs ZXhfc3RyaW5nLnN0cj0gKGNoYXIgKikgc3RyOwogICAgIGxleF9zdHJpbmcubGVuZ3RoPSBsZW5n dGg7CiAgIH0KIH07CiAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogCiBjbGFzcyBTdHJpbmdfc3RyZWFt CiB7CiBwdWJsaWM6Ci0gIFN0cmluZ19zdHJlYW0oKQorICBpbmxpbmUgU3RyaW5nX3N0cmVhbSgp CiAgICAgOiBtX2J1ZmZlcigmbV9jb250YWluZXIpCiAgIHsgfQogCi0gIFN0cmluZ19zdHJlYW0o U3RyaW5nICpkc3QpCisgIGlubGluZSBTdHJpbmdfc3RyZWFtKFN0cmluZyAqZHN0KQogICAgIDog bV9idWZmZXIoZHN0KQogICB7IH0KIAogcHVibGljOgotICBTdHJpbmcgKnN0cigpIHsgcmV0dXJu IG1fYnVmZmVyOyB9CisgIGlubGluZSBTdHJpbmcgKnN0cigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9 CiAKLSAgY29uc3QgTEVYX1NUUklORyAqbGV4X3N0cmluZygpCisgIGlubGluZSBjb25zdCBMRVhf U1RSSU5HICpsZXhfc3RyaW5nKCkKICAgewogICAgIG1fbGV4X3N0cmluZz0gbV9idWZmZXItPmxl eF9zdHJpbmcoKTsKICAgICByZXR1cm4gJm1fbGV4X3N0cmluZzsKICAgfQogCi0gIHZvaWQgcmVz ZXQoKSB7IG1fYnVmZmVyLT5sZW5ndGgoMCk7IH0KKyAgaW5saW5lIHZvaWQgcmVzZXQoKSB7IG1f YnVmZmVyLT5sZW5ndGgoMCk7IH0KIAogcHVibGljOgogICBTdHJpbmdfc3RyZWFtICZvcGVyYXRv ciA8PChjb25zdCBJbnRfdmFsdWUgJnYpOwotICBTdHJpbmdfc3RyZWFtICZvcGVyYXRvciA8PChj b25zdCBDX3N0ciAmdik7Ci0gIFN0cmluZ19zdHJlYW0gJm9wZXJhdG9yIDw8KGNvbnN0IExFWF9T VFJJTkcgKnF1ZXJ5KTsKLSAgU3RyaW5nX3N0cmVhbSAmb3BlcmF0b3IgPDwoY29uc3QgU3RyaW5n ICpxdWVyeSk7Ci0gIFN0cmluZ19zdHJlYW0gJm9wZXJhdG9yIDw8KGNvbnN0IGNoYXIgKnN0cik7 CisKKyAgaW5saW5lIFN0cmluZ19zdHJlYW0gJm9wZXJhdG9yIDw8KGNvbnN0IENfc3RyICZ2KQor ICB7CisgICAgbV9idWZmZXItPmFwcGVuZCh2LmxleF9zdHJpbmcuc3RyLCB2LmxleF9zdHJpbmcu bGVuZ3RoKTsKKyAgICByZXR1cm4gKnRoaXM7CisgIH0KKworICBpbmxpbmUgU3RyaW5nX3N0cmVh bSAmb3BlcmF0b3IgPDwoY29uc3QgTEVYX1NUUklORyAqdikKKyAgeworICAgIG1fYnVmZmVyLT5h cHBlbmQodi0+c3RyLCB2LT5sZW5ndGgpOworICAgIHJldHVybiAqdGhpczsKKyAgfQorCisgIGlu bGluZSBTdHJpbmdfc3RyZWFtICZvcGVyYXRvciA8PChjb25zdCBTdHJpbmcgKnYpCisgIHsKKyAg ICBtX2J1ZmZlci0+YXBwZW5kKHYtPnB0cigpLCB2LT5sZW5ndGgoKSk7CisgICAgcmV0dXJuICp0 aGlzOworICB9CisKKyAgU3RyaW5nX3N0cmVhbSAmb3BlcmF0b3IgPDwoY29uc3QgY2hhciAqdikK KyAgeworICAgIG1fYnVmZmVyLT5hcHBlbmQodik7CisgICAgcmV0dXJuICp0aGlzOworICB9CiAK IHByaXZhdGU6CiAgIFN0cmluZyBtX2NvbnRhaW5lcjsKQEAgLTIxNyw0OSArMzU3LDM1IEBAIFN0 cmluZ19zdHJlYW0gJlN0cmluZ19zdHJlYW06Om9wZXJhdG9yIDwKICAgcmV0dXJuICp0aGlzOwog fQogCi0KLVN0cmluZ19zdHJlYW0gJlN0cmluZ19zdHJlYW06Om9wZXJhdG9yIDw8KGNvbnN0IENf c3RyICZ2KQotewotICBtX2J1ZmZlci0+YXBwZW5kKHYubGV4X3N0cmluZy5zdHIsIHYubGV4X3N0 cmluZy5sZW5ndGgpOwotICByZXR1cm4gKnRoaXM7Ci19Ci0KLQotU3RyaW5nX3N0cmVhbSAmU3Ry aW5nX3N0cmVhbTo6b3BlcmF0b3IgPDwoY29uc3QgTEVYX1NUUklORyAqc3RyKQotewotICBtX2J1 ZmZlci0+YXBwZW5kKHN0ci0+c3RyLCBzdHItPmxlbmd0aCk7Ci0gIHJldHVybiAqdGhpczsKLX0K LQotCi1TdHJpbmdfc3RyZWFtICZTdHJpbmdfc3RyZWFtOjpvcGVyYXRvciA8PChjb25zdCBTdHJp bmcgKnN0cikKLXsKLSAgbV9idWZmZXItPmFwcGVuZChzdHItPnB0cigpLCBzdHItPmxlbmd0aCgp KTsKLSAgcmV0dXJuICp0aGlzOwotfQotCi0KLVN0cmluZ19zdHJlYW0gJlN0cmluZ19zdHJlYW06 Om9wZXJhdG9yIDw8KGNvbnN0IGNoYXIgKnN0cikKLXsKLSAgbV9idWZmZXItPmFwcGVuZChzdHIp OwotICByZXR1cm4gKnRoaXM7Ci19Ci0KIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vCiAKIGNsYXNzIE91dF9zdHJlYW0KIHsKIHB1YmxpYzoKLSAgT3V0X3N0cmVhbShTdHJp bmcgKmltYWdlKSA6CisgIGlubGluZSBPdXRfc3RyZWFtKFN0cmluZyAqaW1hZ2UpIDoKICAgICBt X2ltYWdlKGltYWdlKQogICB7IH0KIAogcHVibGljOgotICBPdXRfc3RyZWFtICZvcGVyYXRvciA8 PChjb25zdCBjaGFyICpxdWVyeSk7CiAgIE91dF9zdHJlYW0gJm9wZXJhdG9yIDw8KGNvbnN0IExF WF9TVFJJTkcgKnF1ZXJ5KTsKLSAgT3V0X3N0cmVhbSAmb3BlcmF0b3IgPDwoY29uc3QgU3RyaW5n ICpxdWVyeSk7Ci0gIE91dF9zdHJlYW0gJm9wZXJhdG9yIDw8KFN0cmluZ19zdHJlYW0gJnNfc3Ry ZWFtKTsKKworICBpbmxpbmUgT3V0X3N0cmVhbSAmb3BlcmF0b3IgPDwoY29uc3QgY2hhciAqcXVl cnkpCisgIHsKKyAgICBMRVhfU1RSSU5HIHN0cj0geyAoY2hhciAqKSBxdWVyeSwgc3RybGVuKHF1 ZXJ5KSB9OworICAgIHJldHVybiBPdXRfc3RyZWFtOjpvcGVyYXRvciA8PCgmc3RyKTsKKyAgfQor CisgIGlubGluZSBPdXRfc3RyZWFtICZvcGVyYXRvciA8PChjb25zdCBTdHJpbmcgKnF1ZXJ5KQor ICB7CisgICAgTEVYX1NUUklORyBzdHI9IHsgKGNoYXIgKikgcXVlcnktPnB0cigpLCBxdWVyeS0+ bGVuZ3RoKCkgfTsKKyAgICByZXR1cm4gT3V0X3N0cmVhbTo6b3BlcmF0b3IgPDwoJnN0cik7Cisg IH0KKworICBpbmxpbmUgT3V0X3N0cmVhbSAmb3BlcmF0b3IgPDwoU3RyaW5nX3N0cmVhbSAmc19z dHJlYW0pCisgIHsKKyAgICByZXR1cm4gT3V0X3N0cmVhbTo6b3BlcmF0b3IgPDwoc19zdHJlYW0u c3RyKCkpOworICB9CiAKIHByaXZhdGU6CiAgIFN0cmluZyAqbV9pbWFnZTsKQEAgLTI2NywxNCAr MzkzLDYgQEAgcHJpdmF0ZToKIAogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAKLU91dF9zdHJlYW0gJk91 dF9zdHJlYW06Om9wZXJhdG9yIDw8KGNvbnN0IGNoYXIgKnF1ZXJ5KQotewotICBMRVhfU1RSSU5H IHN0cj0geyAoY2hhciAqKSBxdWVyeSwgc3RybGVuKHF1ZXJ5KSB9OwotICByZXR1cm4gT3V0X3N0 cmVhbTo6b3BlcmF0b3IgPDwoJnN0cik7Ci19Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCiBPdXRf c3RyZWFtICZPdXRfc3RyZWFtOjpvcGVyYXRvciA8PChjb25zdCBMRVhfU1RSSU5HICpxdWVyeSkK IHsKICAgU3RyaW5nX3N0cmVhbSBzX3N0cmVhbShtX2ltYWdlKTsKQEAgLTI4NiwzNyArNDA0LDE5 IEBAIE91dF9zdHJlYW0gJk91dF9zdHJlYW06Om9wZXJhdG9yIDw8KGNvbnMKIH0KIAogLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vCi0KLU91dF9zdHJlYW0gJk91dF9zdHJlYW06Om9wZXJhdG9yIDw8KGNvbnN0 IFN0cmluZyAqcXVlcnkpCi17Ci0gIExFWF9TVFJJTkcgc3RyPSB7IChjaGFyICopIHF1ZXJ5LT5w dHIoKSwgcXVlcnktPmxlbmd0aCgpIH07Ci0gIHJldHVybiBPdXRfc3RyZWFtOjpvcGVyYXRvciA8 PCgmc3RyKTsKLX0KLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLU91dF9zdHJlYW0gJk91dF9zdHJl YW06Om9wZXJhdG9yIDw8KFN0cmluZ19zdHJlYW0gJnNfc3RyZWFtKQotewotICByZXR1cm4gT3V0 X3N0cmVhbTo6b3BlcmF0b3IgPDwoc19zdHJlYW0uc3RyKCkpOwotfQotCi0vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8KIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogCiBjbGFzcyBJbl9zdHJlYW0KIHsKIHB1YmxpYzoK LSAgSW5fc3RyZWFtKHVpbnQgaW1hZ2VfdmVyc2lvbiwKLSAgICAgICAgICAgIGNvbnN0IFN0cmlu ZyAqaW1hZ2UpCi0gIDogbV9pbWFnZV92ZXJzaW9uKGltYWdlX3ZlcnNpb24pLAotICAgIG1faW1h Z2UoaW1hZ2UpLAotICAgIG1fcmVhZF9wdHIobV9pbWFnZS0+cHRyKCkpLAotICAgIG1fZW5kX3B0 cihtX2ltYWdlLT5wdHIoKSArIG1faW1hZ2UtPmxlbmd0aCgpKQorICBpbmxpbmUgSW5fc3RyZWFt KHVpbnQgaW1hZ2VfdmVyc2lvbiwgY29uc3QgU3RyaW5nICppbWFnZSkKKyAgICA6IG1faW1hZ2Vf dmVyc2lvbihpbWFnZV92ZXJzaW9uKSwKKyAgICAgIG1faW1hZ2UoaW1hZ2UpLAorICAgICAgbV9y ZWFkX3B0cihtX2ltYWdlLT5wdHIoKSksCisgICAgICBtX2VuZF9wdHIobV9pbWFnZS0+cHRyKCkg KyBtX2ltYWdlLT5sZW5ndGgoKSkKICAgeyB9CiAKIHB1YmxpYzoKLSAgdWludCBpbWFnZV92ZXJz aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZV92ZXJzaW9uOyB9Ci1wdWJsaWM6CiAgIGJvb2wg bmV4dChMRVhfU1RSSU5HICpjaHVuayk7CiAKIHByaXZhdGU6CkBAIC0zNTEsMTAgKzQ1MSwxMCBA QCBib29sIEluX3N0cmVhbTo6bmV4dChMRVhfU1RSSU5HICpjaHVuaykKICAgY2h1bmstPnN0cj0g KGNoYXIgKikgZGVsaW1pdGVyX3B0ciArIDE7CiAgIGNodW5rLT5sZW5ndGg9IGF0b2koYnVmZmVy KTsKIAotICBtX3JlYWRfcHRyKz0gbiAvKiBjaHVuayBsZW5ndGggKi8KLSAgICArIDEgLyogZGVs aW1pdGVyIChhIHNwYWNlKSAqLworICBtX3JlYWRfcHRyKz0gbiAgICAvKiBjaHVuayBsZW5ndGgg Ki8KKyAgICArIDEgICAgICAgICAgICAgLyogZGVsaW1pdGVyIChhIHNwYWNlKSAqLwogICAgICsg Y2h1bmstPmxlbmd0aCAvKiBjaHVuayAqLwotICAgICsgMTsgLyogY2h1bmsgZGVsaW1pdGVyIChc bikgKi8KKyAgICArIDE7ICAgICAgICAgICAgLyogY2h1bmsgZGVsaW1pdGVyIChcbikgKi8KIAog ICByZXR1cm4gRkFMU0U7CiB9CkBAIC0zNzEsNiArNDcxLDEyIEBAIG5hbWVzcGFjZSBvYnMgewog Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIAorLyoqCisgIEBjbGFzcyBB YnN0cmFjdF9vYmoKKworICBUaGlzIGNsYXNzIGlzIGEgYmFzZSBjbGFzcyBmb3IgYWxsIG90aGVy IE9iaiBpbXBsZW1lbnRhdGlvbnMuCisqLworCiBjbGFzcyBBYnN0cmFjdF9vYmogOiBwdWJsaWMg T2JqCiB7CiBwdWJsaWM6CkBAIC00NDQsOSArNTUwLDkgQEAgcHJvdGVjdGVkOgogICBTdHJpbmcg bV9pZDsgLy88IGlkZW50aWZ5IG9iamVjdAogCiBwcm90ZWN0ZWQ6Ci0gIEFic3RyYWN0X29iaihM RVhfU1RSSU5HIGlkKTsKKyAgaW5saW5lIEFic3RyYWN0X29iaihMRVhfU1RSSU5HIGlkKTsKIAot ICB2aXJ0dWFsIH5BYnN0cmFjdF9vYmooKTsKKyAgdmlydHVhbCBpbmxpbmUgfkFic3RyYWN0X29i aigpOwogCiBwcml2YXRlOgogICBBYnN0cmFjdF9vYmooY29uc3QgQWJzdHJhY3Rfb2JqICYpOwpA QCAtNDU1LDcgKzU2MSw3IEBAIHByaXZhdGU6CiAKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogCi1BYnN0 cmFjdF9vYmo6OkFic3RyYWN0X29iaihMRVhfU1RSSU5HIGlkKQoraW5saW5lIEFic3RyYWN0X29i ajo6QWJzdHJhY3Rfb2JqKExFWF9TVFJJTkcgaWQpCiB7CiAgIGluaXRfc3FsX2FsbG9jKCZtX21l bV9yb290LCBBTExPQ19ST09UX01JTl9CTE9DS19TSVpFLCAwKTsKIApAQCAtNDY3LDcgKzU3Myw3 IEBAIEFic3RyYWN0X29iajo6QWJzdHJhY3Rfb2JqKExFWF9TVFJJTkcgaWQKIAogLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vCiAKLUFic3RyYWN0X29iajo6fkFic3RyYWN0X29iaigpCitpbmxpbmUgQWJzdHJh Y3Rfb2JqOjp+QWJzdHJhY3Rfb2JqKCkKIHsKICAgZnJlZV9yb290KCZtX21lbV9yb290LCBNWUYo MCkpOwogfQpAQCAtNTMwLDYgKzYzNiw5IEBAIGJvb2wgQWJzdHJhY3Rfb2JqOjpjcmVhdGUoVEhE ICp0aGQpCiAgIGJvb2wgcmM9IEZBTFNFOwogICBMaXN0X2l0ZXJhdG9yX2Zhc3Q8TEVYX1NUUklO Rz4gaXQobV9zdG10X2xpc3QpOwogICBMRVhfU1RSSU5HICpzcWxfdGV4dDsKKyAgU2lfc2Vzc2lv bl9jb250ZXh0IHNlc3Npb25fY29udGV4dDsKKworICBEQlVHX0VOVEVSKCJBYnN0cmFjdF9vYmo6 OmNyZWF0ZSIpOwogCiAgIC8qCiAgICAgRHJvcCB0aGUgb2JqZWN0IGlmIGl0IGV4aXN0cyBmaXJz dCBvZiBhbGwuCkBAIC01NDAsNDQgKzY0OSwxMyBAQCBib29sIEFic3RyYWN0X29iajo6Y3JlYXRl KFRIRCAqdGhkKQogICBkcm9wKHRoZCk7CiAKICAgLyoKLSAgICBQcmVzZXJ2ZSB0aGUgZm9sbG93 aW5nIHNlc3Npb24gYXR0cmlidXRlczoKLSAgICAtIHNxbF9tb2RlOwotICAgIC0gY2hhcmFjdGVy X3NldF9jbGllbnQ7Ci0gICAgLSBjaGFyYWN0ZXJfc2V0X3Jlc3VsdHM7Ci0gICAgLSBjb2xsYXRp b25fY29ubmVjdGlvbjsKLSAgICAtIHRpbWVfem9uZTsKLQotICAgIEBub3RlIG90aGVyIHNlc3Np b24gdmFyaWFibGVzIGFyZSBub3QgcHJlc2VydmVkLCBzbyBzZXJpYWxpemF0aW9uIGltYWdlCi0g ICAgbXVzdCB0YWtlIGNhcmUgdG8gY2xlYW4gdXAgdGhlIGVudmlyb25tZW50IGFmdGVyIGl0c2Vs Zi4KLSAgKi8KLSAgdWxvbmcgc3FsX21vZGVfc2F2ZWQ9IHRoZC0+dmFyaWFibGVzLnNxbF9tb2Rl OwotICBUaW1lX3pvbmUgKnR6X3NhdmVkPSB0aGQtPnZhcmlhYmxlcy50aW1lX3pvbmU7Ci0gIENI QVJTRVRfSU5GTyAqY2xpZW50X2NzX3NhdmVkPSB0aGQtPnZhcmlhYmxlcy5jaGFyYWN0ZXJfc2V0 X2NsaWVudDsKLSAgQ0hBUlNFVF9JTkZPICpyZXN1bHRzX2NzX3NhdmVkPSB0aGQtPnZhcmlhYmxl cy5jaGFyYWN0ZXJfc2V0X3Jlc3VsdHM7Ci0gIENIQVJTRVRfSU5GTyAqY29ubmVjdGlvbl9jbF9z YXZlZD0gdGhkLT52YXJpYWJsZXMuY29sbGF0aW9uX2Nvbm5lY3Rpb247Ci0gIFRBQkxFICp0bXBf dGFibGVzX3NhdmVkPSB0aGQtPnRlbXBvcmFyeV90YWJsZXM7Ci0KLSAgLyoKLSAgICBSZXNldCBz ZXNzaW9uIHN0YXRlIHRvIHRoZSBmb2xsb3dpbmc6Ci0gICAgLSBzcWxfbW9kZTogMAotICAgIC0g Y2hhcmFjdGVyX3NldF9jbGllbnQ6IHV0ZjgKLSAgICAtIGNoYXJhY3Rlcl9zZXRfcmVzdWx0czog YmluYXJ5Ci0gICAgLSBjb2xsYXRpb25fY29ubmVjdGlvbjogdXRmOAotICAqLwotICB0aGQtPnZh cmlhYmxlcy5zcWxfbW9kZT0gMDsKLSAgdGhkLT52YXJpYWJsZXMuY2hhcmFjdGVyX3NldF9jbGll bnQ9IHN5c3RlbV9jaGFyc2V0X2luZm87Ci0gIHRoZC0+dmFyaWFibGVzLmNoYXJhY3Rlcl9zZXRf cmVzdWx0cz0gJm15X2NoYXJzZXRfYmluOwotICB0aGQtPnZhcmlhYmxlcy5jb2xsYXRpb25fY29u bmVjdGlvbj0gc3lzdGVtX2NoYXJzZXRfaW5mbzsKLSAgdGhkLT51cGRhdGVfY2hhcnNldCgpOwot Ci0gIC8qCi0gICAgVGVtcG9yYXJ5IHRhYmxlcyBzaG91bGQgYmUgaWdub3JlZCB3aGlsZSBsb29r aW5nIGZvciB0YWJsZSBzdHJ1Y3R1cmVzLgotICAgIEJhY2t1cCB3YW50cyB0byBkZWFsIHdpdGgg b3JkaW5hcnkgdGFibGVzLCBub3QgdGVtcG9yYXJ5IG9uZXMuCisgICAgTm93LCBwcm9jZWVkIHdp dGggY3JlYXRpbmcgdGhlIG9iamVjdC4KICAgKi8KLSAgdGhkLT50ZW1wb3JhcnlfdGFibGVzPSBO VUxMOworICBzZXNzaW9uX2NvbnRleHQuc2F2ZSh0aGQpOworICBzZXNzaW9uX2NvbnRleHQucmVz ZXQodGhkKTsKIAogICAvKiBBbGxvdyB0byBleGVjdXRlIERETCBvcGVyYXRpb25zLiAqLwotICBk ZGxfYmxvY2tlcl9leGNlcHRpb25fb24odGhkKTsKKyAgOjpvYnM6OmRkbF9ibG9ja2VyX2V4Y2Vw dGlvbl9vbih0aGQpOwogCiAgIC8qIFJ1biBxdWVyaWVzIGZyb20gdGhlIHNlcmlhbGl6YXRpb24g aW1hZ2UuICovCiAgIHdoaWxlICgoc3FsX3RleHQ9IGl0KyspKQpAQCAtNTg2LDI5ICs2NjQsMjUg QEAgYm9vbCBBYnN0cmFjdF9vYmo6OmNyZWF0ZShUSEQgKnRoZCkKIAogICAgIHJjPSBteXNxbF9l eGVjdXRlX2RpcmVjdCh0aGQsICpzcWxfdGV4dCwgJmVkX3Jlc3VsdCk7CiAKLSAgICAvKiBJZ25v cmUgd2FybmluZ3MgZnJvbSBtYXRlcmlhbGl6YXRpb24gZm9yIG5vdy4gKi8KKyAgICAvKiBQdXNo IHdhcm5pbmdzIG9uIHRoZSBUSEQgZXJyb3Igc3RhY2suICovCisgICAgY29weV93YXJuaW5ncyh0 aGQsICZlZF9yZXN1bHQuZ2V0X3dhcm5pbmdzKCkpOworCiAgICAgaWYgKHJjKQogICAgICAgYnJl YWs7CiAgIH0KIAotICBkZGxfYmxvY2tlcl9leGNlcHRpb25fb2ZmKHRoZCk7Ci0KLSAgdGhkLT52 YXJpYWJsZXMuc3FsX21vZGU9IHNxbF9tb2RlX3NhdmVkOwotICB0aGQtPnZhcmlhYmxlcy50aW1l X3pvbmU9IHR6X3NhdmVkOwotICB0aGQtPnZhcmlhYmxlcy5jb2xsYXRpb25fY29ubmVjdGlvbj0g Y29ubmVjdGlvbl9jbF9zYXZlZDsKLSAgdGhkLT52YXJpYWJsZXMuY2hhcmFjdGVyX3NldF9yZXN1 bHRzPSByZXN1bHRzX2NzX3NhdmVkOwotICB0aGQtPnZhcmlhYmxlcy5jaGFyYWN0ZXJfc2V0X2Ns aWVudD0gY2xpZW50X2NzX3NhdmVkOwotICB0aGQtPnVwZGF0ZV9jaGFyc2V0KCk7CisgIC8qIERp c2FibGUgZnVydGhlciBEREwgZXhlY3V0aW9uLiAqLworICA6Om9iczo6ZGRsX2Jsb2NrZXJfZXhj ZXB0aW9uX29mZih0aGQpOwogCi0gIHRoZC0+dGVtcG9yYXJ5X3RhYmxlcz0gdG1wX3RhYmxlc19z YXZlZDsKKyAgc2Vzc2lvbl9jb250ZXh0LnJlc3RvcmUodGhkKTsKIAotICByZXR1cm4gcmM7Cisg IERCVUdfUkVUVVJOKHJjKTsKIH0KIAogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAKIC8qKgotICBDcmVh dGUgdGhlIG9iamVjdCBpbiB0aGUgZGF0YWJhc2UuCisgIERyb3AgdGhlIG9iamVjdCBpbiB0aGUg ZGF0YWJhc2UuCiAKICAgQHBhcmFtW2luXSB0aGQgICAgICAgICAgICAgIFNlcnZlciB0aHJlYWQg Y29udGV4dC4KIApAQCAtNjE5LDcxICs2OTMsMzkgQEAgYm9vbCBBYnN0cmFjdF9vYmo6OmNyZWF0 ZShUSEQgKnRoZCkKIAogYm9vbCBBYnN0cmFjdF9vYmo6OmRyb3AoVEhEICp0aGQpCiB7Ci0gIGJv b2wgcmM9IEZBTFNFOworICBTdHJpbmdfc3RyZWFtIHNfc3RyZWFtOworICBjb25zdCBMRVhfU1RS SU5HICpzcWxfdGV4dDsKIAotICAvKgotICAgIFByZXNlcnZlIHRoZSBmb2xsb3dpbmcgc2Vzc2lv biBhdHRyaWJ1dGVzOgotICAgIC0gc3FsX21vZGU7Ci0gICAgLSBjaGFyYWN0ZXJfc2V0X2NsaWVu dDsKLSAgICAtIGNoYXJhY3Rlcl9zZXRfcmVzdWx0czsKLSAgICAtIGNvbGxhdGlvbl9jb25uZWN0 aW9uOworICBEQlVHX0VOVEVSKCJBYnN0cmFjdF9vYmo6OmRyb3AiKTsKIAotICAgIFJlbWVtYmVy IGFsc28gc2Vzc2lvbiB0ZW1wb3JhcnkgdGFibGVzLgotICAqLwotICB1bG9uZyBzcWxfbW9kZV9z YXZlZD0gdGhkLT52YXJpYWJsZXMuc3FsX21vZGU7Ci0gIENIQVJTRVRfSU5GTyAqY2xpZW50X2Nz X3NhdmVkPSB0aGQtPnZhcmlhYmxlcy5jaGFyYWN0ZXJfc2V0X2NsaWVudDsKLSAgQ0hBUlNFVF9J TkZPICpyZXN1bHRzX2NzX3NhdmVkPSB0aGQtPnZhcmlhYmxlcy5jaGFyYWN0ZXJfc2V0X3Jlc3Vs dHM7Ci0gIENIQVJTRVRfSU5GTyAqY29ubmVjdGlvbl9jbF9zYXZlZD0gdGhkLT52YXJpYWJsZXMu Y29sbGF0aW9uX2Nvbm5lY3Rpb247Ci0gIFRBQkxFICp0bXBfdGFibGVzX3NhdmVkPSB0aGQtPnRl bXBvcmFyeV90YWJsZXM7CisgIGJ1aWxkX2Ryb3Bfc3RhdGVtZW50KHNfc3RyZWFtKTsKKyAgc3Fs X3RleHQ9IHNfc3RyZWFtLmxleF9zdHJpbmcoKTsKIAotICAvKgotICAgIFJlc2V0IHNlc3Npb24g c3RhdGUgdG8gdGhlIGZvbGxvd2luZzoKLSAgICAtIHNxbF9tb2RlOiAwCi0gICAgLSBjaGFyYWN0 ZXJfc2V0X2NsaWVudDogdXRmOAotICAgIC0gY2hhcmFjdGVyX3NldF9yZXN1bHRzOiBiaW5hcnkK LSAgICAtIGNvbGxhdGlvbl9jb25uZWN0aW9uOiB1dGY4Ci0gICovCi0gIHRoZC0+dmFyaWFibGVz LnNxbF9tb2RlPSAwOwotICB0aGQtPnZhcmlhYmxlcy5jaGFyYWN0ZXJfc2V0X2NsaWVudD0gc3lz dGVtX2NoYXJzZXRfaW5mbzsKLSAgdGhkLT52YXJpYWJsZXMuY2hhcmFjdGVyX3NldF9yZXN1bHRz PSAmbXlfY2hhcnNldF9iaW47Ci0gIHRoZC0+dmFyaWFibGVzLmNvbGxhdGlvbl9jb25uZWN0aW9u PSBzeXN0ZW1fY2hhcnNldF9pbmZvOwotICB0aGQtPnVwZGF0ZV9jaGFyc2V0KCk7Ci0KLSAgLyoK LSAgICBUZW1wb3JhcnkgdGFibGVzIHNob3VsZCBiZSBpZ25vcmVkIHdoaWxlIGxvb2tpbmcgZm9y IHRhYmxlIHN0cnVjdHVyZXMuCi0gICAgQmFja3VwIHdhbnRzIHRvIGRlYWwgd2l0aCBvcmRpbmFy eSB0YWJsZXMsIG5vdCB0ZW1wb3Jhcnkgb25lcy4KLSAgKi8KLSAgdGhkLT50ZW1wb3JhcnlfdGFi bGVzPSBOVUxMOworICBpZiAoIXNxbF90ZXh0LT5zdHIgfHwgIXNxbF90ZXh0LT5sZW5ndGgpCisg ICAgREJVR19SRVRVUk4oRkFMU0UpOwogCi0gIC8qIEFsbG93IHRvIGV4ZWN1dGUgRERMIG9wZXJh dGlvbnMuICovCi0gIGRkbF9ibG9ja2VyX2V4Y2VwdGlvbl9vbih0aGQpOworICBTaV9zZXNzaW9u X2NvbnRleHQgc2Vzc2lvbl9jb250ZXh0OwogCi0gIC8qIFJ1biBxdWVyaWVzIGZyb20gdGhlIHNl cmlhbGl6YXRpb24gaW1hZ2UuICovCi0gIHsKLSAgICBFZF9yZXN1bHQgZWRfcmVzdWx0OwotICAg IFN0cmluZ19zdHJlYW0gc19zdHJlYW07Ci0gICAgY29uc3QgTEVYX1NUUklORyAqc3FsX3RleHQ7 CisgIHNlc3Npb25fY29udGV4dC5zYXZlKHRoZCk7CisgIHNlc3Npb25fY29udGV4dC5yZXNldCh0 aGQpOwogCi0gICAgYnVpbGRfZHJvcF9zdGF0ZW1lbnQoc19zdHJlYW0pOwotICAgIHNxbF90ZXh0 PSBzX3N0cmVhbS5sZXhfc3RyaW5nKCk7CisgIC8qIEFsbG93IHRvIGV4ZWN1dGUgRERMIG9wZXJh dGlvbnMuICovCisgIDo6b2JzOjpkZGxfYmxvY2tlcl9leGNlcHRpb25fb24odGhkKTsKIAotICAg IGlmIChzcWxfdGV4dC0+c3RyICYmIHNxbF90ZXh0LT5sZW5ndGgpCi0gICAgICByYz0gbXlzcWxf ZXhlY3V0ZV9kaXJlY3QodGhkLCAqc3FsX3RleHQsICZlZF9yZXN1bHQpOworICBFZF9yZXN1bHQg ZWRfcmVzdWx0OwogCi0gICAgLyogSWdub3JlIHdhcm5pbmdzLiAqLwotICB9CisgIC8qIEV4ZWN1 dGUgRERMIG9wZXJhdGlvbi4gKi8KKyAgYm9vbCByYz0gbXlzcWxfZXhlY3V0ZV9kaXJlY3QodGhk LCAqc3FsX3RleHQsICZlZF9yZXN1bHQpOwogCi0gIGRkbF9ibG9ja2VyX2V4Y2VwdGlvbl9vZmYo dGhkKTsKKyAgLyogUHVzaCB3YXJuaW5ncyBvbiB0aGUgVEhEIGVycm9yIHN0YWNrLiAqLworICBj b3B5X3dhcm5pbmdzKHRoZCwgJmVkX3Jlc3VsdC5nZXRfd2FybmluZ3MoKSk7CiAKLSAgdGhkLT52 YXJpYWJsZXMuc3FsX21vZGU9IHNxbF9tb2RlX3NhdmVkOwotICB0aGQtPnZhcmlhYmxlcy5jb2xs YXRpb25fY29ubmVjdGlvbj0gY29ubmVjdGlvbl9jbF9zYXZlZDsKLSAgdGhkLT52YXJpYWJsZXMu Y2hhcmFjdGVyX3NldF9yZXN1bHRzPSByZXN1bHRzX2NzX3NhdmVkOwotICB0aGQtPnZhcmlhYmxl cy5jaGFyYWN0ZXJfc2V0X2NsaWVudD0gY2xpZW50X2NzX3NhdmVkOwotICB0aGQtPnVwZGF0ZV9j aGFyc2V0KCk7CisgIC8qIERpc2FibGUgZnVydGhlciBEREwgZXhlY3V0aW9uLiAqLworICA6Om9i czo6ZGRsX2Jsb2NrZXJfZXhjZXB0aW9uX29mZih0aGQpOwogCi0gIHRoZC0+dGVtcG9yYXJ5X3Rh Ymxlcz0gdG1wX3RhYmxlc19zYXZlZDsKKyAgc2Vzc2lvbl9jb250ZXh0LnJlc3RvcmUodGhkKTsK IAotICByZXR1cm4gcmM7CisgIERCVUdfUkVUVVJOKHJjKTsKIH0KIAogLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vCkBAIC03MDUsMTUgKzc0NywxNSBAQCBib29sIEFic3RyYWN0X29iajo6ZG9faW5pdF9mcm9t X2ltYWdlKEluCiAgICAgTEVYX1NUUklORyAqc3FsX3RleHRfcm9vdD0gKExFWF9TVFJJTkcgKikg YWxsb2Nfcm9vdCgmbV9tZW1fcm9vdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZiAoTEVYX1NUUklORykpOwogCisgICAgaWYg KCFzcWxfdGV4dF9yb290KQorICAgICAgcmV0dXJuIFRSVUU7CisKICAgICBzcWxfdGV4dF9yb290 LT5zdHI9IHN0cm1ha2Vfcm9vdCgmbV9tZW1fcm9vdCwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzcWxfdGV4dC5zdHIsIHNxbF90ZXh0Lmxlbmd0aCk7CiAgICAgc3FsX3Rl eHRfcm9vdC0+bGVuZ3RoPSBzcWxfdGV4dC5sZW5ndGg7CiAKLSAgICBpZiAoIXNxbF90ZXh0X3Jv b3QgfHwgIXNxbF90ZXh0X3Jvb3QtPnN0ciB8fAotICAgICAgICBtX3N0bXRfbGlzdC5wdXNoX2Jh Y2soc3FsX3RleHRfcm9vdCkpCi0gICAgeworICAgIGlmICghc3FsX3RleHRfcm9vdC0+c3RyIHx8 IG1fc3RtdF9saXN0LnB1c2hfYmFjayhzcWxfdGV4dF9yb290KSkKICAgICAgIHJldHVybiBUUlVF OwotICAgIH0KICAgfQogCiAgIHJldHVybiBGQUxTRTsKQEAgLTczMiwxMSArNzc0LDExIEBAIGJv b2wgQWJzdHJhY3Rfb2JqOjpkb19pbml0X2Zyb21faW1hZ2UoSW4KIGNsYXNzIERhdGFiYXNlX29i aiA6IHB1YmxpYyBBYnN0cmFjdF9vYmoKIHsKIHB1YmxpYzoKLSAgRGF0YWJhc2Vfb2JqKGNvbnN0 IEVkX3JvdyAmZWRfcm93KQorICBpbmxpbmUgRGF0YWJhc2Vfb2JqKGNvbnN0IEVkX3JvdyAmZWRf cm93KQogICAgIDogQWJzdHJhY3Rfb2JqKGVkX3Jvd1swXSAvKiBkYXRhYmFzZSBuYW1lICovKQog ICB7IH0KIAotICBEYXRhYmFzZV9vYmooTEVYX1NUUklORyBkYl9uYW1lKQorICBpbmxpbmUgRGF0 YWJhc2Vfb2JqKExFWF9TVFJJTkcgZGJfbmFtZSkKICAgICA6IEFic3RyYWN0X29iaihkYl9uYW1l KQogICB7IH0KIApAQCAtNzYxLDcgKzgwMyw3IEBAIHByaXZhdGU6CiBjbGFzcyBEYXRhYmFzZV9p dGVtX29iaiA6IHB1YmxpYyBBYnN0cmFjdF9vYmoKIHsKIHB1YmxpYzoKLSAgRGF0YWJhc2VfaXRl bV9vYmooTEVYX1NUUklORyBkYl9uYW1lLCBMRVhfU1RSSU5HIG9iamVjdF9uYW1lKQorICBpbmxp bmUgRGF0YWJhc2VfaXRlbV9vYmooTEVYX1NUUklORyBkYl9uYW1lLCBMRVhfU1RSSU5HIG9iamVj dF9uYW1lKQogICAgIDogQWJzdHJhY3Rfb2JqKG9iamVjdF9uYW1lKQogICB7CiAgICAgaWYgKGRi X25hbWUuc3RyICYmIGRiX25hbWUubGVuZ3RoKQpAQCAtODA1LDE5ICs4NDcsMTkgQEAgcHJpdmF0 ZToKICAgc3RhdGljIGNvbnN0IExFWF9TVFJJTkcgVFlQRV9OQU1FOwogCiBwdWJsaWM6Ci0gIFRh YmxlX29iaihjb25zdCBFZF9yb3cgJmVkX3JvdykKKyAgaW5saW5lIFRhYmxlX29iaihjb25zdCBF ZF9yb3cgJmVkX3JvdykKICAgICA6IERhdGFiYXNlX2l0ZW1fb2JqKGVkX3Jvd1swXSwgLyogZGF0 YWJhc2UgbmFtZSAqLwogICAgICAgICAgICAgICAgICAgICAgICAgZWRfcm93WzFdKSAvKiB0YWJs ZSBuYW1lICovCiAgIHsgfQogCi0gIFRhYmxlX29iaihMRVhfU1RSSU5HIGRiX25hbWUsIExFWF9T VFJJTkcgdGFibGVfbmFtZSkKKyAgaW5saW5lIFRhYmxlX29iaihMRVhfU1RSSU5HIGRiX25hbWUs IExFWF9TVFJJTkcgdGFibGVfbmFtZSkKICAgICA6IERhdGFiYXNlX2l0ZW1fb2JqKGRiX25hbWUs IHRhYmxlX25hbWUpCiAgIHsgfQogCiBwcml2YXRlOgogICB2aXJ0dWFsIGJvb2wgZG9fc2VyaWFs aXplKFRIRCAqdGhkLCBPdXRfc3RyZWFtICZvdXRfc3RyZWFtKTsKIAotICB2aXJ0dWFsIGNvbnN0 IExFWF9TVFJJTkcgKmdldF90eXBlX25hbWUoKSBjb25zdAorICB2aXJ0dWFsIGlubGluZSBjb25z dCBMRVhfU1RSSU5HICpnZXRfdHlwZV9uYW1lKCkgY29uc3QKICAgeyByZXR1cm4gJlRhYmxlX29i ajo6VFlQRV9OQU1FOyB9CiB9OwogCkBAIC04NDEsMTkgKzg4MywxOSBAQCBwcml2YXRlOgogICBz dGF0aWMgY29uc3QgTEVYX1NUUklORyBUWVBFX05BTUU7CiAKIHB1YmxpYzoKLSAgVmlld19vYmoo Y29uc3QgRWRfcm93ICZlZF9yb3cpCisgIGlubGluZSBWaWV3X29iaihjb25zdCBFZF9yb3cgJmVk X3JvdykKICAgICA6IERhdGFiYXNlX2l0ZW1fb2JqKGVkX3Jvd1swXSwgLyogc2NoZW1hIG5hbWUg Ki8KICAgICAgICAgICAgICAgICAgICAgICAgIGVkX3Jvd1sxXSkgLyogdmlldyBuYW1lICovCiAg IHsgfQogCi0gIFZpZXdfb2JqKExFWF9TVFJJTkcgZGJfbmFtZSwgTEVYX1NUUklORyB2aWV3X25h bWUpCisgIGlubGluZSBWaWV3X29iaihMRVhfU1RSSU5HIGRiX25hbWUsIExFWF9TVFJJTkcgdmll d19uYW1lKQogICAgIDogRGF0YWJhc2VfaXRlbV9vYmooZGJfbmFtZSwgdmlld19uYW1lKQogICB7 IH0KIAogcHJpdmF0ZToKICAgdmlydHVhbCBib29sIGRvX3NlcmlhbGl6ZShUSEQgKnRoZCwgT3V0 X3N0cmVhbSAmb3V0X3N0cmVhbSk7CiAKLSAgdmlydHVhbCBjb25zdCBMRVhfU1RSSU5HICpnZXRf dHlwZV9uYW1lKCkgY29uc3QKKyAgdmlydHVhbCBpbmxpbmUgY29uc3QgTEVYX1NUUklORyAqZ2V0 X3R5cGVfbmFtZSgpIGNvbnN0CiAgIHsgcmV0dXJuICZWaWV3X29iajo6VFlQRV9OQU1FOyB9CiB9 OwogCkBAIC04NjQsMTAgKzkwNiwxNyBAQCBjb25zdCBMRVhfU1RSSU5HIFZpZXdfb2JqOjpUWVBF X05BTUU9IExYCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogCisvKioK KyAgQGNsYXNzIFN0b3JlZF9wcm9ncmFtX29iagorCisgIFRoaXMgaXMgYSBiYXNlIGNsYXNzIGZv ciBzdG9yZWQgcHJvZ3JhbSBvYmplY3RzOiBzdG9yZWQgcHJvY2VkdXJlcywKKyAgc3RvcmVkIGZ1 bmN0aW9ucywgdHJpZ2dlcnMsIGV2ZW50cy4KKyovCisKIGNsYXNzIFN0b3JlZF9wcm9ncmFtX29i aiA6IHB1YmxpYyBEYXRhYmFzZV9pdGVtX29iagogewogcHVibGljOgotICBTdG9yZWRfcHJvZ3Jh bV9vYmooTEVYX1NUUklORyBkYl9uYW1lLCBMRVhfU1RSSU5HIHNwX25hbWUpCisgIGlubGluZSBT dG9yZWRfcHJvZ3JhbV9vYmooTEVYX1NUUklORyBkYl9uYW1lLCBMRVhfU1RSSU5HIHNwX25hbWUp CiAgICAgOiBEYXRhYmFzZV9pdGVtX29iaihkYl9uYW1lLCBzcF9uYW1lKQogICB7IH0KIApAQCAt ODgyLDEwICs5MzEsMTcgQEAgcHJpdmF0ZToKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vCiAKKy8qKgorICBAY2xhc3MgU3RvcmVkX3JvdXRpbmVfb2JqCisKKyAgVGhpcyBp cyBhIGJhc2UgY2xhc3MgZm9yIHN0b3JlZCByb3V0aW5lIG9iamVjdHM6IHN0b3JlZCBwcm9jZWR1 cmVzLAorICBzdG9yZWQgZnVuY3Rpb25zLCB0cmlnZ2Vycy4KKyovCisKIGNsYXNzIFN0b3JlZF9y b3V0aW5lX29iaiA6IHB1YmxpYyBTdG9yZWRfcHJvZ3JhbV9vYmoKIHsKIHB1YmxpYzoKLSAgU3Rv cmVkX3JvdXRpbmVfb2JqKExFWF9TVFJJTkcgZGJfbmFtZSwgTEVYX1NUUklORyBzcl9uYW1lKQor ICBpbmxpbmUgU3RvcmVkX3JvdXRpbmVfb2JqKExFWF9TVFJJTkcgZGJfbmFtZSwgTEVYX1NUUklO RyBzcl9uYW1lKQogICAgIDogU3RvcmVkX3Byb2dyYW1fb2JqKGRiX25hbWUsIHNyX25hbWUpCiAg IHsgfQogCkBAIC05MTAsMTYgKzk2NiwxNiBAQCBwcml2YXRlOgogICBzdGF0aWMgY29uc3QgTEVY X1NUUklORyBUWVBFX05BTUU7CiAKIHB1YmxpYzoKLSAgVHJpZ2dlcl9vYmooY29uc3QgRWRfcm93 ICZlZF9yb3cpCisgIGlubGluZSBUcmlnZ2VyX29iaihjb25zdCBFZF9yb3cgJmVkX3JvdykKICAg ICA6IFN0b3JlZF9yb3V0aW5lX29iaihlZF9yb3dbMF0sIGVkX3Jvd1sxXSkKICAgeyB9CiAKLSAg VHJpZ2dlcl9vYmooTEVYX1NUUklORyBkYl9uYW1lLCBMRVhfU1RSSU5HIHRyaWdnZXJfbmFtZSkK KyAgaW5saW5lIFRyaWdnZXJfb2JqKExFWF9TVFJJTkcgZGJfbmFtZSwgTEVYX1NUUklORyB0cmln Z2VyX25hbWUpCiAgICAgOiBTdG9yZWRfcm91dGluZV9vYmooZGJfbmFtZSwgdHJpZ2dlcl9uYW1l KQogICB7IH0KIAogcHJpdmF0ZToKLSAgdmlydHVhbCBjb25zdCBMRVhfU1RSSU5HICpnZXRfdHlw ZV9uYW1lKCkgY29uc3QKKyAgdmlydHVhbCBpbmxpbmUgY29uc3QgTEVYX1NUUklORyAqZ2V0X3R5 cGVfbmFtZSgpIGNvbnN0CiAgIHsgcmV0dXJuICZUcmlnZ2VyX29iajo6VFlQRV9OQU1FOyB9CiB9 OwogCkBAIC05NDMsMTYgKzk5OSwxNiBAQCBwcml2YXRlOgogICBzdGF0aWMgY29uc3QgTEVYX1NU UklORyBUWVBFX05BTUU7CiAKIHB1YmxpYzoKLSAgU3RvcmVkX3Byb2Nfb2JqKGNvbnN0IEVkX3Jv dyAmZWRfcm93KQorICBpbmxpbmUgU3RvcmVkX3Byb2Nfb2JqKGNvbnN0IEVkX3JvdyAmZWRfcm93 KQogICAgIDogU3RvcmVkX3JvdXRpbmVfb2JqKGVkX3Jvd1swXSwgZWRfcm93WzFdKQogICB7IH0K IAotICBTdG9yZWRfcHJvY19vYmooTEVYX1NUUklORyBkYl9uYW1lLCBMRVhfU1RSSU5HIHNwX25h bWUpCisgIGlubGluZSBTdG9yZWRfcHJvY19vYmooTEVYX1NUUklORyBkYl9uYW1lLCBMRVhfU1RS SU5HIHNwX25hbWUpCiAgICAgOiBTdG9yZWRfcm91dGluZV9vYmooZGJfbmFtZSwgc3BfbmFtZSkK ICAgeyB9CiAKIHByaXZhdGU6Ci0gIHZpcnR1YWwgY29uc3QgTEVYX1NUUklORyAqZ2V0X3R5cGVf bmFtZSgpIGNvbnN0CisgIHZpcnR1YWwgaW5saW5lIGNvbnN0IExFWF9TVFJJTkcgKmdldF90eXBl X25hbWUoKSBjb25zdAogICB7IHJldHVybiAmU3RvcmVkX3Byb2Nfb2JqOjpUWVBFX05BTUU7IH0K IH07CiAKQEAgLTk3NiwxNiArMTAzMiwxNiBAQCBwcml2YXRlOgogICBzdGF0aWMgY29uc3QgTEVY X1NUUklORyBUWVBFX05BTUU7CiAKIHB1YmxpYzoKLSAgU3RvcmVkX2Z1bmNfb2JqKGNvbnN0IEVk X3JvdyAmZWRfcm93KQorICBpbmxpbmUgU3RvcmVkX2Z1bmNfb2JqKGNvbnN0IEVkX3JvdyAmZWRf cm93KQogICAgIDogU3RvcmVkX3JvdXRpbmVfb2JqKGVkX3Jvd1swXSwgZWRfcm93WzFdKQogICB7 IH0KIAotICBTdG9yZWRfZnVuY19vYmooTEVYX1NUUklORyBkYl9uYW1lLCBMRVhfU1RSSU5HIHNm X25hbWUpCisgIGlubGluZSBTdG9yZWRfZnVuY19vYmooTEVYX1NUUklORyBkYl9uYW1lLCBMRVhf U1RSSU5HIHNmX25hbWUpCiAgICAgOiBTdG9yZWRfcm91dGluZV9vYmooZGJfbmFtZSwgc2ZfbmFt ZSkKICAgeyB9CiAKIHByaXZhdGU6Ci0gIHZpcnR1YWwgY29uc3QgTEVYX1NUUklORyAqZ2V0X3R5 cGVfbmFtZSgpIGNvbnN0CisgIHZpcnR1YWwgaW5saW5lIGNvbnN0IExFWF9TVFJJTkcgKmdldF90 eXBlX25hbWUoKSBjb25zdAogICB7IHJldHVybiAmU3RvcmVkX2Z1bmNfb2JqOjpUWVBFX05BTUU7 IH0KIH07CiAKQEAgLTEwMTEsMTkgKzEwNjcsMjEgQEAgcHJpdmF0ZToKICAgc3RhdGljIGNvbnN0 IExFWF9TVFJJTkcgVFlQRV9OQU1FOwogCiBwdWJsaWM6Ci0gIEV2ZW50X29iaihjb25zdCBFZF9y b3cgJmVkX3JvdykKKyAgaW5saW5lIEV2ZW50X29iaihjb25zdCBFZF9yb3cgJmVkX3JvdykKICAg ICA6IFN0b3JlZF9wcm9ncmFtX29iaihlZF9yb3dbMF0sIGVkX3Jvd1sxXSkKICAgeyB9CiAKLSAg RXZlbnRfb2JqKExFWF9TVFJJTkcgZGJfbmFtZSwgTEVYX1NUUklORyBldmVudF9uYW1lKQorICBp bmxpbmUgRXZlbnRfb2JqKExFWF9TVFJJTkcgZGJfbmFtZSwgTEVYX1NUUklORyBldmVudF9uYW1l KQogICAgIDogU3RvcmVkX3Byb2dyYW1fb2JqKGRiX25hbWUsIGV2ZW50X25hbWUpCiAgIHsgfQog CiBwcml2YXRlOgotICB2aXJ0dWFsIGNvbnN0IExFWF9TVFJJTkcgKmdldF90eXBlX25hbWUoKSBj b25zdAorICB2aXJ0dWFsIGlubGluZSBjb25zdCBMRVhfU1RSSU5HICpnZXRfdHlwZV9uYW1lKCkg Y29uc3QKICAgeyByZXR1cm4gJkV2ZW50X29iajo6VFlQRV9OQU1FOyB9CiAKLSAgdmlydHVhbCBj b25zdCBMRVhfU1RSSU5HICpnZXRfY3JlYXRlX3N0bXQoRWRfcm93ICpyb3cpOworICB2aXJ0dWFs IGlubGluZSBjb25zdCBMRVhfU1RSSU5HICpnZXRfY3JlYXRlX3N0bXQoRWRfcm93ICpyb3cpCisg IHsgcmV0dXJuIHJvdy0+Z2V0X2NvbHVtbigzKTsgfQorCiAgIHZpcnR1YWwgdm9pZCBkdW1wX2hl YWRlcihFZF9yb3cgKnJvdywgT3V0X3N0cmVhbSAmb3V0X3N0cmVhbSk7CiB9OwogCkBAIC0xMDMx LDEzICsxMDg5LDYgQEAgcHJpdmF0ZToKIAogY29uc3QgTEVYX1NUUklORyBFdmVudF9vYmo6OlRZ UEVfTkFNRT0gTFhTX0lOSVQoIkVWRU5UIik7CiAKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi1jb25z dCBMRVhfU1RSSU5HICpFdmVudF9vYmo6OmdldF9jcmVhdGVfc3RtdChFZF9yb3cgKnJvdykKLXsK LSAgcmV0dXJuIHJvdy0+Z2V0X2NvbHVtbigzKTsKLX0KLQogI2VuZGlmIC8vIEhBVkVfRVZFTlRf U0NIRURVTEVSCiAKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpAQCAtMTE0MiwxMyArMTE5MywyMyBAQCBJ dGVyYXRvciAqY3JlYXRlX3Jvd19zZXRfaXRlcmF0b3IoVEhEICp0CiAvLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8KIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLwogCisvKioKKyAgQGNsYXNzIEVkX3Jlc3VsdF9zZXRfaXRl cmF0b3IKKworICBUaGlzIGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIE9ial9pdGVyYXRvciwgd2hp Y2ggY3JlYXRlcyBvYmplY3RzIGZyb20gYQorICByZXN1bHQgc2V0IChyZXByZXNlbnRlZCBieSBh biBpbnN0YW5jZSBvZiBFZF9yZXN1bHQpLgorKi8KKwogdGVtcGxhdGUgPHR5cGVuYW1lIE9ial90 eXBlPgogY2xhc3MgRWRfcmVzdWx0X3NldF9pdGVyYXRvciA6IHB1YmxpYyBPYmpfaXRlcmF0b3IK IHsKIHB1YmxpYzoKICAgaW5saW5lIEVkX3Jlc3VsdF9zZXRfaXRlcmF0b3IoRWRfcmVzdWx0ICpl ZF9yZXN1bHQpOwogICBpbmxpbmUgfkVkX3Jlc3VsdF9zZXRfaXRlcmF0b3IoKTsKKworcHVibGlj OgogICB2aXJ0dWFsIE9iaiAqbmV4dCgpOworCiBwcml2YXRlOgogICBFZF9yZXN1bHQgKm1fZWRf cmVzdWx0OwogICBMaXN0X2l0ZXJhdG9yX2Zhc3Q8RWRfcm93PiBtX3Jvd19pdDsKQEAgLTEyNTMs MTEgKzEzMTQsMTggQEAgY3JlYXRlX3Jvd19zZXRfaXRlcmF0b3I8R3JhbnRfaXRlcmF0b3I+KAog CiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8KIAorLyoqCisgIEBjbGFzcyBWaWV3X2Jhc2VfaXRlcmF0b3IK KworICBUaGlzIGlzIGEgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBPYmpfaXRlcmF0b3IgZm9yIHRo ZQorICB2aWV3LWRlcGVuZGVuY3ktb2JqZWN0IGl0ZXJhdG9ycy4KKyovCisKIGNsYXNzIFZpZXdf YmFzZV9vYmpfaXRlcmF0b3IgOiBwdWJsaWMgT2JqX2l0ZXJhdG9yCiB7CiBwdWJsaWM6Ci0gIFZp ZXdfYmFzZV9vYmpfaXRlcmF0b3IoKTsKLSAgdmlydHVhbCB+Vmlld19iYXNlX29ial9pdGVyYXRv cigpOworICBpbmxpbmUgVmlld19iYXNlX29ial9pdGVyYXRvcigpOworICB2aXJ0dWFsIGlubGlu ZSB+Vmlld19iYXNlX29ial9pdGVyYXRvcigpOwogCiBwdWJsaWM6CiAgIHZpcnR1YWwgT2JqICpu ZXh0KCk7CkBAIC0xMjk4LDE1ICsxMzY2LDE1IEBAIEl0ZXJhdG9yICpWaWV3X2Jhc2Vfb2JqX2l0 ZXJhdG9yOjpjcmVhdGUKIAogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAKLVZpZXdfYmFzZV9vYmpfaXRl cmF0b3I6OlZpZXdfYmFzZV9vYmpfaXRlcmF0b3IoKSA6Ci0gIG1fdGFibGVfbmFtZXMoTlVMTCks Ci0gIG1fY3VyX2lkeCgwKQoraW5saW5lIFZpZXdfYmFzZV9vYmpfaXRlcmF0b3I6OlZpZXdfYmFz ZV9vYmpfaXRlcmF0b3IoKQorICA6IG1fdGFibGVfbmFtZXMoTlVMTCksCisgICAgbV9jdXJfaWR4 KDApCiB7CiB9CiAKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogCi1WaWV3X2Jhc2Vfb2JqX2l0ZXJhdG9y Ojp+Vmlld19iYXNlX29ial9pdGVyYXRvcigpCitpbmxpbmUgVmlld19iYXNlX29ial9pdGVyYXRv cjo6flZpZXdfYmFzZV9vYmpfaXRlcmF0b3IoKQogewogICBpZiAoIW1fdGFibGVfbmFtZXMpCiAg ICAgcmV0dXJuOwpAQCAtMTQwNiwxMCArMTQ3NCwxNiBAQCBPYmogKlZpZXdfYmFzZV9vYmpfaXRl cmF0b3I6Om5leHQoKQogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIAor LyoqCisgIEBjbGFzcyBWaWV3X2Jhc2VfdGFibGVfaXRlcmF0b3IKKworICBUaGlzIGlzIGFuIGl0 ZXJhdG9yIG92ZXIgYmFzZSB0YWJsZXMgZm9yIGEgdmlldy4KKyovCisKIGNsYXNzIFZpZXdfYmFz ZV90YWJsZV9pdGVyYXRvciA6IHB1YmxpYyBWaWV3X2Jhc2Vfb2JqX2l0ZXJhdG9yCiB7CiBwdWJs aWM6Ci0gIHN0YXRpYyBWaWV3X2Jhc2Vfb2JqX2l0ZXJhdG9yICoKKyAgc3RhdGljIGlubGluZSBW aWV3X2Jhc2Vfb2JqX2l0ZXJhdG9yICoKICAgY3JlYXRlKFRIRCAqdGhkLCBjb25zdCBTdHJpbmcg KmRiX25hbWUsIGNvbnN0IFN0cmluZyAqdmlld19uYW1lKQogICB7CiAgICAgcmV0dXJuIFZpZXdf YmFzZV9vYmpfaXRlcmF0b3I6OmNyZWF0ZTxWaWV3X2Jhc2VfdGFibGVfaXRlcmF0b3I+CkBAIC0x NDE3LDEzICsxNDkxLDExIEBAIHB1YmxpYzoKICAgfQogCiBwcm90ZWN0ZWQ6Ci0gIHZpcnR1YWwg Ym9vbCBpc19vYmpfYWNjZXB0ZWQoVEFCTEVfTElTVCAqb2JqKQorICB2aXJ0dWFsIGlubGluZSBi b29sIGlzX29ial9hY2NlcHRlZChUQUJMRV9MSVNUICpvYmopCiAgIHsgcmV0dXJuICFvYmotPnZp ZXc7IH0KIAotICB2aXJ0dWFsIE9iaiAqY3JlYXRlX29iaihjb25zdCBTdHJpbmcgKmRiX25hbWUs IGNvbnN0IFN0cmluZyAqb2JqX25hbWUpCi0gIHsKLSAgICByZXR1cm4gbmV3IFRhYmxlX29iaihk Yl9uYW1lLT5sZXhfc3RyaW5nKCksIG9ial9uYW1lLT5sZXhfc3RyaW5nKCkpOwotICB9CisgIHZp cnR1YWwgaW5saW5lIE9iaiAqY3JlYXRlX29iaihjb25zdCBTdHJpbmcgKmRiX25hbWUsIGNvbnN0 IFN0cmluZyAqb2JqX25hbWUpCisgIHsgcmV0dXJuIG5ldyBUYWJsZV9vYmooZGJfbmFtZS0+bGV4 X3N0cmluZygpLCBvYmpfbmFtZS0+bGV4X3N0cmluZygpKTsgfQogfTsKIAogLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vCkBAIC0xNDM3LDEwICsxNTA5LDE2IEBAIGNyZWF0ZTxWaWV3X2Jhc2VfdGFibGVfaXRl cmF0b3I+KFRIRCAqdGgKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAK Ky8qKgorICBAY2xhc3MgVmlld19iYXNlX3ZpZXdfaXRlcmF0b3IKKworICBUaGlzIGlzIGFuIGl0 ZXJhdG9yIG92ZXIgYmFzZSB2aWV3cyBmb3IgYSB2aWV3LgorKi8KKwogY2xhc3MgVmlld19iYXNl X3ZpZXdfaXRlcmF0b3IgOiBwdWJsaWMgVmlld19iYXNlX29ial9pdGVyYXRvcgogewogcHVibGlj OgotICBzdGF0aWMgVmlld19iYXNlX29ial9pdGVyYXRvciAqCisgIHN0YXRpYyBpbmxpbmUgVmll d19iYXNlX29ial9pdGVyYXRvciAqCiAgIGNyZWF0ZShUSEQgKnRoZCwgY29uc3QgU3RyaW5nICpk Yl9uYW1lLCBjb25zdCBTdHJpbmcgKnZpZXdfbmFtZSkKICAgewogICAgIHJldHVybiBWaWV3X2Jh c2Vfb2JqX2l0ZXJhdG9yOjpjcmVhdGU8Vmlld19iYXNlX3ZpZXdfaXRlcmF0b3I+CkBAIC0xNDQ4 LDEzICsxNTI2LDExIEBAIHB1YmxpYzoKICAgfQogCiBwcm90ZWN0ZWQ6Ci0gIHZpcnR1YWwgYm9v bCBpc19vYmpfYWNjZXB0ZWQoVEFCTEVfTElTVCAqb2JqKQorICB2aXJ0dWFsIGlubGluZSBib29s IGlzX29ial9hY2NlcHRlZChUQUJMRV9MSVNUICpvYmopCiAgIHsgcmV0dXJuIG9iai0+dmlldzsg fQogCi0gIHZpcnR1YWwgT2JqICpjcmVhdGVfb2JqKGNvbnN0IFN0cmluZyAqZGJfbmFtZSwgY29u c3QgU3RyaW5nICpvYmpfbmFtZSkKLSAgewotICAgIHJldHVybiBuZXcgVmlld19vYmooZGJfbmFt ZS0+bGV4X3N0cmluZygpLCBvYmpfbmFtZS0+bGV4X3N0cmluZygpKTsKLSAgfQorICB2aXJ0dWFs IGlubGluZSBPYmogKmNyZWF0ZV9vYmooY29uc3QgU3RyaW5nICpkYl9uYW1lLCBjb25zdCBTdHJp bmcgKm9ial9uYW1lKQorICB7IHJldHVybiBuZXcgVmlld19vYmooZGJfbmFtZS0+bGV4X3N0cmlu ZygpLCBvYmpfbmFtZS0+bGV4X3N0cmluZygpKTsgfQogfTsKIAogLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v CkBAIC0xNzIwLDkgKzE3OTYsOSBAQCBib29sIFZpZXdfb2JqOjpkb19zZXJpYWxpemUoVEhEICp0 aGQsIE91CiAKICAgU3RyaW5nX3N0cmVhbSBzX3N0cmVhbTsKIAotICBMRVhfU1RSSU5HIGNyZWF0 ZV9zdG10OwotICBMRVhfU1RSSU5HIGNsaWVudF9jc19uYW1lOwotICBMRVhfU1RSSU5HIGNvbm5l Y3Rpb25fY2xfbmFtZTsKKyAgTEVYX1NUUklORyBjcmVhdGVfc3RtdD0gbnVsbF9sZXhfc3RyOwor ICBMRVhfU1RSSU5HIGNsaWVudF9jc19uYW1lPSBudWxsX2xleF9zdHI7CisgIExFWF9TVFJJTkcg Y29ubmVjdGlvbl9jbF9uYW1lPSBudWxsX2xleF9zdHI7CiAKICAgaWYgKGdldF92aWV3X2NyZWF0 ZV9zdG10KHRoZCwgdGhpcywgJmNyZWF0ZV9zdG10LAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgJmNsaWVudF9jc19uYW1lLCAmY29ubmVjdGlvbl9jbF9uYW1lKSkKQEAgLTIxNDQsNiArMjIy MCw4IEBAIE9ial9pdGVyYXRvciAqZ2V0X2RhdGFiYXNlcyhUSEQgKnRoZCkKICAgcmV0dXJuIGNy ZWF0ZV9yb3dfc2V0X2l0ZXJhdG9yPERhdGFiYXNlX2l0ZXJhdG9yPih0aGQsICZxdWVyeSk7CiB9 CiAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLworCiBPYmpfaXRlcmF0b3IgKmdldF9kYl90YWJsZXMoVEhE ICp0aGQsIGNvbnN0IFN0cmluZyAqZGJfbmFtZSkKIHsKICAgU3RyaW5nX3N0cmVhbSBzX3N0cmVh bTsKQEAgLTIxNTcsNiArMjIzNSw3IEBAIE9ial9pdGVyYXRvciAqZ2V0X2RiX3RhYmxlcyhUSEQg KnRoZCwgY28KICAgcmV0dXJuIGNyZWF0ZV9yb3dfc2V0X2l0ZXJhdG9yPERiX3RhYmxlc19pdGVy YXRvcj4odGhkLCBzX3N0cmVhbS5sZXhfc3RyaW5nKCkpOwogfQogCisvLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8KIAogT2JqX2l0ZXJhdG9yICpnZXRfZGJfdmlld3MoVEhEICp0aGQsIGNvbnN0IFN0cmluZyAq ZGJfbmFtZSkKIHsKQEAgLTIxNjksNiArMjI0OCw3IEBAIE9ial9pdGVyYXRvciAqZ2V0X2RiX3Zp ZXdzKFRIRCAqdGhkLCBjb24KICAgcmV0dXJuIGNyZWF0ZV9yb3dfc2V0X2l0ZXJhdG9yPERiX3Zp ZXdzX2l0ZXJhdG9yPih0aGQsIHNfc3RyZWFtLmxleF9zdHJpbmcoKSk7CiB9CiAKKy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLwogCiBPYmpfaXRlcmF0b3IgKmdldF9kYl90cmlnZ2VycyhUSEQgKnRoZCwgY29u c3QgU3RyaW5nICpkYl9uYW1lKQogewpAQCAtMjE4MSw2ICsyMjYxLDcgQEAgT2JqX2l0ZXJhdG9y ICpnZXRfZGJfdHJpZ2dlcnMoVEhEICp0aGQsIAogICByZXR1cm4gY3JlYXRlX3Jvd19zZXRfaXRl cmF0b3I8RGJfdHJpZ2dlcl9pdGVyYXRvcj4odGhkLCBzX3N0cmVhbS5sZXhfc3RyaW5nKCkpOwog fQogCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIAogT2JqX2l0ZXJhdG9yICpnZXRfZGJfc3RvcmVkX3By b2NlZHVyZXMoVEhEICp0aGQsIGNvbnN0IFN0cmluZyAqZGJfbmFtZSkKIHsKQEAgLTIxOTQsNiAr MjI3NSw3IEBAIE9ial9pdGVyYXRvciAqZ2V0X2RiX3N0b3JlZF9wcm9jZWR1cmVzKFQKICAgcmV0 dXJuIGNyZWF0ZV9yb3dfc2V0X2l0ZXJhdG9yPERiX3N0b3JlZF9wcm9jX2l0ZXJhdG9yPih0aGQs IHNfc3RyZWFtLmxleF9zdHJpbmcoKSk7CiB9CiAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogCiBPYmpf aXRlcmF0b3IgKmdldF9kYl9zdG9yZWRfZnVuY3Rpb25zKFRIRCAqdGhkLCBjb25zdCBTdHJpbmcg KmRiX25hbWUpCiB7CkBAIC0yMjA3LDYgKzIyODksNyBAQCBPYmpfaXRlcmF0b3IgKmdldF9kYl9z dG9yZWRfZnVuY3Rpb25zKFRICiAgIHJldHVybiBjcmVhdGVfcm93X3NldF9pdGVyYXRvcjxEYl9z dG9yZWRfZnVuY19pdGVyYXRvcj4odGhkLCBzX3N0cmVhbS5sZXhfc3RyaW5nKCkpOwogfQogCisv Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8KIAogT2JqX2l0ZXJhdG9yICpnZXRfZGJfZXZlbnRzKFRIRCAqdGhk LCBjb25zdCBTdHJpbmcgKmRiX25hbWUpCiB7CkBAIC0yMjIzLDQ2ICsyMzA2LDQwIEBAIE9ial9p dGVyYXRvciAqZ2V0X2RiX2V2ZW50cyhUSEQgKnRoZCwgY28KICNlbmRpZgogfQogCisvLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8KIAogT2JqX2l0ZXJhdG9yICpnZXRfYWxsX2RiX2dyYW50cyhUSEQgKnRoZCwg Y29uc3QgU3RyaW5nICpkYl9uYW1lKQogewogICBTdHJpbmdfc3RyZWFtIHNfc3RyZWFtOwogICBz X3N0cmVhbSA8PAotICAgICIoU0VMRUNUIHQxLmdyYW50ZWUgQVMgYzEsICIKLSAgICAidDEucHJp dmlsZWdlX3R5cGUgQVMgYzIsICIKLSAgICAidDEudGFibGVfc2NoZW1hIEFTIGMzLCAiCisgICAg IihTRUxFQ1QgZ3JhbnRlZSBBUyBjMSwgIgorICAgICJwcml2aWxlZ2VfdHlwZSBBUyBjMiwgIgor ICAgICJ0YWJsZV9zY2hlbWEgQVMgYzMsICIKICAgICAiTlVMTCBBUyBjNCwgIgogICAgICJOVUxM IEFTIGM1ICIKLSAgICAiRlJPTSBJTkZPUk1BVElPTl9TQ0hFTUEuU0NIRU1BX1BSSVZJTEVHRVMg QVMgdDEsICIKLSAgICAiSU5GT1JNQVRJT05fU0NIRU1BLlVTRVJfUFJJVklMRUdFUyBBUyB0MiAi Ci0gICAgIldIRVJFIHQxLnRhYmxlX3NjaGVtYSA9ICciIDw8IGRiX25hbWUgPDwgIicgQU5EICIK LSAgICAidDEuZ3JhbnRlZSA9IHQyLmdyYW50ZWUpICIKKyAgICAiRlJPTSBJTkZPUk1BVElPTl9T Q0hFTUEuU0NIRU1BX1BSSVZJTEVHRVMgIgorICAgICJXSEVSRSB0YWJsZV9zY2hlbWEgPSAnIiA8 PCBkYl9uYW1lIDw8ICInKSAiCiAgICAgIlVOSU9OICIKLSAgICAiKFNFTEVDVCB0MS5ncmFudGVl LCAiCi0gICAgInQxLnByaXZpbGVnZV90eXBlLCAiCi0gICAgInQxLnRhYmxlX3NjaGVtYSwgIgot ICAgICJ0MS50YWJsZV9uYW1lLCAiCisgICAgIihTRUxFQ1QgZ3JhbnRlZSwgIgorICAgICJwcml2 aWxlZ2VfdHlwZSwgIgorICAgICJ0YWJsZV9zY2hlbWEsICIKKyAgICAidGFibGVfbmFtZSwgIgog ICAgICJOVUxMICIKLSAgICAiRlJPTSBJTkZPUk1BVElPTl9TQ0hFTUEuVEFCTEVfUFJJVklMRUdF UyBBUyB0MSwgIgotICAgICJJTkZPUk1BVElPTl9TQ0hFTUEuVVNFUl9QUklWSUxFR0VTIEFTIHQy ICIKLSAgICAiV0hFUkUgdDEudGFibGVfc2NoZW1hID0gJyIgPDwgZGJfbmFtZSA8PCAiJyBBTkQg IgotICAgICJ0MS5ncmFudGVlID0gdDIuZ3JhbnRlZSkgIgorICAgICJGUk9NIElORk9STUFUSU9O X1NDSEVNQS5UQUJMRV9QUklWSUxFR0VTICIKKyAgICAiV0hFUkUgdGFibGVfc2NoZW1hID0gJyIg PDwgZGJfbmFtZSA8PCAiJykgIgogICAgICJVTklPTiAiCi0gICAgIihTRUxFQ1QgdDEuZ3JhbnRl ZSwgIgotICAgICJ0MS5wcml2aWxlZ2VfdHlwZSwgIgotICAgICJ0MS50YWJsZV9zY2hlbWEsICIK LSAgICAidDEudGFibGVfbmFtZSwgIgotICAgICJ0MS5jb2x1bW5fbmFtZSAiCi0gICAgIkZST00g SU5GT1JNQVRJT05fU0NIRU1BLkNPTFVNTl9QUklWSUxFR0VTIEFTIHQxLCAiCi0gICAgIklORk9S TUFUSU9OX1NDSEVNQS5VU0VSX1BSSVZJTEVHRVMgQVMgdDIgIgotICAgICJXSEVSRSB0MS50YWJs ZV9zY2hlbWEgPSAnIiA8PCBkYl9uYW1lIDw8ICInIEFORCAiCi0gICAgInQxLmdyYW50ZWUgPSB0 Mi5ncmFudGVlKSAiCisgICAgIihTRUxFQ1QgZ3JhbnRlZSwgIgorICAgICJwcml2aWxlZ2VfdHlw ZSwgIgorICAgICJ0YWJsZV9zY2hlbWEsICIKKyAgICAidGFibGVfbmFtZSwgIgorICAgICJjb2x1 bW5fbmFtZSAiCisgICAgIkZST00gSU5GT1JNQVRJT05fU0NIRU1BLkNPTFVNTl9QUklWSUxFR0VT ICIKKyAgICAiV0hFUkUgdGFibGVfc2NoZW1hID0gJyIgPDwgZGJfbmFtZSA8PCAiJykgIgogICAg ICJPUkRFUiBCWSBjMSBBU0MsIGMyIEFTQywgYzMgQVNDLCBjNCBBU0MsIGM1IEFTQyI7CiAKICAg cmV0dXJuIGNyZWF0ZV9yb3dfc2V0X2l0ZXJhdG9yPEdyYW50X2l0ZXJhdG9yPih0aGQsIHNfc3Ry ZWFtLmxleF9zdHJpbmcoKSk7CiB9CiAKLQogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAvLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8KIApAQCAtMjI3Myw2ICsyMzUwLDcgQEAgT2JqX2l0ZXJhdG9yKiBnZXRfdmlld19i YXNlX3RhYmxlcyhUSEQgKgogICByZXR1cm4gVmlld19iYXNlX3RhYmxlX2l0ZXJhdG9yOjpjcmVh dGUodGhkLCBkYl9uYW1lLCB2aWV3X25hbWUpOwogfQogCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIAog T2JqX2l0ZXJhdG9yKiBnZXRfdmlld19iYXNlX3ZpZXdzKFRIRCAqdGhkLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyAqZGJfbmFtZSwKQEAgLTIyOTQsNiAr MjM3Miw4IEBAIE9iaiAqZ2V0X2RhdGFiYXNlKGNvbnN0IFN0cmluZyAqZGJfbmFtZSwKICAgcmV0 dXJuIG9iajsKIH0KIAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKIE9iaiAqZ2V0X3RhYmxlKGNvbnN0 IFN0cmluZyAqZGJfbmFtZSwKICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyAqdGFibGVfbmFt ZSwKICAgICAgICAgICAgICAgIHVpbnQgaW1hZ2VfdmVyc2lvbiwKQEAgLTIzMDYsNiArMjM4Niw4 IEBAIE9iaiAqZ2V0X3RhYmxlKGNvbnN0IFN0cmluZyAqZGJfbmFtZSwKICAgcmV0dXJuIG9iajsK IH0KIAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKIE9iaiAqZ2V0X3ZpZXcoY29uc3QgU3RyaW5nICpk Yl9uYW1lLAogICAgICAgICAgICAgICBjb25zdCBTdHJpbmcgKnZpZXdfbmFtZSwKICAgICAgICAg ICAgICAgdWludCBpbWFnZV92ZXJzaW9uLApAQCAtMjMxNyw2ICsyMzk5LDggQEAgT2JqICpnZXRf dmlldyhjb25zdCBTdHJpbmcgKmRiX25hbWUsCiAgIHJldHVybiBvYmo7CiB9CiAKKy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLworCiBPYmogKmdldF90cmlnZ2VyKGNvbnN0IFN0cmluZyAqZGJfbmFtZSwKICAg ICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nICp0cmlnZ2VyX25hbWUsCiAgICAgICAgICAgICAg ICAgIHVpbnQgaW1hZ2VfdmVyc2lvbiwKQEAgLTIzMzMsNiArMjQxNyw4IEBAIE9iaiAqZ2V0X3Ry aWdnZXIoY29uc3QgU3RyaW5nICpkYl9uYW1lLAogICByZXR1cm4gb2JqOwogfQogCisvLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8KKwogT2JqICpnZXRfc3RvcmVkX3Byb2NlZHVyZShjb25zdCBTdHJpbmcgKmRi X25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyAqc3BfbmFtZSwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludCBpbWFnZV92ZXJzaW9uLApAQCAtMjM0OSw2 ICsyNDM1LDggQEAgT2JqICpnZXRfc3RvcmVkX3Byb2NlZHVyZShjb25zdCBTdHJpbmcgKgogICBy ZXR1cm4gb2JqOwogfQogCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKwogT2JqICpnZXRfc3RvcmVkX2Z1 bmN0aW9uKGNvbnN0IFN0cmluZyAqZGJfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBTdHJpbmcgKnNmX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgdWludCBpbWFn ZV92ZXJzaW9uLApAQCAtMjM2NSw2ICsyNDUzLDggQEAgT2JqICpnZXRfc3RvcmVkX2Z1bmN0aW9u KGNvbnN0IFN0cmluZyAqZAogICByZXR1cm4gb2JqOwogfQogCisvLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K KwogI2lmZGVmIEhBVkVfRVZFTlRfU0NIRURVTEVSCiAKIE9iaiAqZ2V0X2V2ZW50KGNvbnN0IFN0 cmluZyAqZGJfbmFtZSwKQEAgLTIzODUsNiArMjQ3NSw4IEBAIE9iaiAqZ2V0X2V2ZW50KGNvbnN0 IFN0cmluZyAqZGJfbmFtZSwKIAogI2VuZGlmCiAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCiBPYmog KmdldF90YWJsZXNwYWNlKGNvbnN0IFN0cmluZyAqdHNfbmFtZSwKICAgICAgICAgICAgICAgICAg ICAgdWludCBpbWFnZV92ZXJzaW9uLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcg KmltYWdlKQpAQCAtMjM5OCw2ICsyNDkwLDggQEAgT2JqICpnZXRfdGFibGVzcGFjZShjb25zdCBT dHJpbmcgKnRzX25hbQogCiAgIHJldHVybiBvYmo7CiB9CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwog CiBPYmogKmdldF9kYl9ncmFudChjb25zdCBTdHJpbmcgKmRiX25hbWUsCiAgICAgICAgICAgICAg ICAgICBjb25zdCBTdHJpbmcgKm5hbWUsCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3FsL3NpX29iamVj dHMuaCcKLS0tIGEvc3FsL3NpX29iamVjdHMuaAkyMDA4LTExLTI2IDE0OjQzOjAzICswMDAwCisr KyBiL3NxbC9zaV9vYmplY3RzLmgJMjAwOC0xMS0yNyAxNjozNjo1NyArMDAwMApAQCAtNDAsOCAr NDAsMTEgQEAgbmFtZXNwYWNlIG9icyB7CiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIAogLyoqCi0gIE9i aiBkZWZpbmVzIHRoZSBiYXNpYyBzZXQgb2Ygb3BlcmF0aW9ucyBmb3IgZWFjaCBkYXRhYmFzZSBv YmplY3QuCisgIEBjbGFzcyBPYmoKKworICBUaGlzIGludGVyZmFjZSBkZWZpbmVzIHRoZSBiYXNp YyBzZXQgb2Ygb3BlcmF0aW9ucyBmb3IgZWFjaCBkYXRhYmFzZSBvYmplY3QuCiAqLworCiBjbGFz cyBPYmoKIHsKIHB1YmxpYzoKQEAgLTk4LDggKzEwMSwxMSBAQCBwdWJsaWM6CiAvLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8KIAogLyoqCi0gIE9ial9pdGVyYXRvciBpcyBhIGJhc2ljIGludGVyZmFjZSB0byBl bnVtZXJhdGUgb2JqZWN0cy4KKyAgQGNsYXNzIE9ial9pdGVyYXRvcgorCisgIFRoaXMgaXMgYSBi YXNpYyBpbnRlcmZhY2UgdG8gZW51bWVyYXRlIG9iamVjdHMuCiAqLworCiBjbGFzcyBPYmpfaXRl cmF0b3IKIHsKIHB1YmxpYzoKCg==