ZGlmZiAtLWdpdCBhLy5kaXItbG9jYWxzLmVsIGIvLmRpci1sb2NhbHMuZWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWQ5MWIxMgotLS0gL2Rldi9udWxsCisrKyBiLy5kaXItbG9jYWxzLmVsCkBAIC0wLDAgKzEsMTAgQEAKKzs7OyBEaXJlY3RvcnkgTG9jYWwgVmFyaWFibGVzCis7OzsgU2VlIEluZm8gbm9kZSBgKGVtYWNzKSBEaXJlY3RvcnkgVmFyaWFibGVzJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworKChuaWwgLiAoKGluZGVudC10YWJzLW1vZGUgLiBuaWwpCisgICAgICAgICAoc2hvdy10cmFpbGluZy13aGl0ZXNwYWNlIC4gdCkpKQorIChjLW1vZGUgLiAoKGMtYmFzaWMtb2Zmc2V0IC4gMikKKyAgICAgICAgICAgICkpCisgKGMrKy1tb2RlIC4gKChjLWJhc2ljLW9mZnNldCAuIDIpCisgICAgICAgICAgICAgICkpCisgKQpkaWZmIC0tZ2l0IGEvLmdpdGh1Yi9DT05UUklCVVRJTkcubWQgYi8uZ2l0aHViL0NPTlRSSUJVVElORy5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNGY1ODBiCi0tLSAvZGV2L251bGwKKysrIGIvLmdpdGh1Yi9DT05UUklCVVRJTkcubWQKQEAgLTAsMCArMSwyMyBAQAorSG93IHRvIGNvbnRyaWJ1dGUgdG8gY3VybAorPT09PT09PT09PT09PT09PT09PT09PT09PQorCitKb2luIHRoZSBjb21tdW5pdHkKKy0tLS0tLS0tLS0tLS0tLS0tLQorCisgMS4gQ2xpY2sgJ3dhdGNoJyBvbiB0aGUgZ2l0aHViIHJlcG8KKworIDIuIFN1YnNjcmliZSB0byB0aGUgc3VpdGFibGUgW21haWxpbmcgbGlzdHNdKGh0dHBzOi8vY3VybC5oYXh4LnNlL21haWwvKQorCitSZWFkIFtDT05UUklCVVRFXSguLi9kb2NzL0NPTlRSSUJVVEUpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworU2VuZCB5b3VyIHN1Z2dlc3Rpb25zIHVzaW5nIG9uZSBvZiB0aGVzZSBtZXRob2RzOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgMS4gaW4gYSBtYWlsIHRvIHRoZSBtYWlsaW5nIGxpc3QKKworIDIuIGFzIGEgW3B1bGwgcmVxdWVzdF0oaHR0cHM6Ly9naXRodWIuY29tL2N1cmwvY3VybC9wdWxscykKKworIDMuIGFzIGFuIFtpc3N1ZV0oaHR0cHM6Ly9naXRodWIuY29tL2N1cmwvY3VybC9pc3N1ZXMpCisKKy8gVGhlIGNVUkwgdGVhbSEKZGlmZiAtLWdpdCBhLy5naXRodWIvSVNTVUVfVEVNUExBVEUgYi8uZ2l0aHViL0lTU1VFX1RFTVBMQVRFCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3ZWY5MTAKLS0tIC9kZXYvbnVsbAorKysgYi8uZ2l0aHViL0lTU1VFX1RFTVBMQVRFCkBAIC0wLDAgKzEsOSBAQAorIyMjIEkgZGlkIHRoaXMKKworIyMjIEkgZXhwZWN0ZWQgdGhlIGZvbGxvd2luZworCisjIyMgY3VybC9saWJjdXJsIHZlcnNpb24KKworW2N1cmwgLVYgb3V0cHV0IHBlcmhhcHM/XQorCisjIyMgb3BlcmF0aW5nIHN5c3RlbQpkaWZmIC0tZ2l0IGEvLmdpdGlnbm9yZSBiLy5naXRpZ25vcmUKaW5kZXggODNlNzUwOC4uMTgzMTM2YSAxMDA2NDQKLS0tIGEvLmdpdGlnbm9yZQorKysgYi8uZ2l0aWdub3JlCkBAIC0xLDUxICsxLDUyIEBACi0uZGVwcwotLmxpYnMKLSoubGliCi0qLnBkYgorKi5hc2MKICouZGxsCiAqLmV4ZQotKi5vYmoKLSouYXNjCi0uKi5zd3AKLURlYnVnCi1SZWxlYXNlCiAqLmV4cAorKi5sYQorKi5saWIKKyoubG8KKyoubworKi5vYmoKKyoucGRiCisqfgorLiouc3dwCisuY3Byb2plY3QKKy5kZXBzCisuZGlyc3RhbXAKKy5saWJzCisucHJvamVjdAorLnNldHRpbmdzCisvYnVpbGQvCisvYnVpbGRzLworQ0hBTkdFUy5kaXN0CitEZWJ1ZworSU5TVEFMTAogTWFrZWZpbGUKIE1ha2VmaWxlLmluCitSZWxlYXNlCitUQUdTCiBhY2xvY2FsLm00CithY2xvY2FsLm00LmJhawogYXV0b200dGUuY2FjaGUKK2NvbXBpbGUKIGNvbmZpZy5jYWNoZQogY29uZmlnLmd1ZXNzCiBjb25maWcubG9nCiBjb25maWcuc3RhdHVzCiBjb25maWcuc3ViCiBjb25maWd1cmUKLWRlcGNvbXAKLWxpYnRvb2wKLWx0bWFpbi5zaAotY29tcGlsZQotY3VybC1jb25maWcKLWxpYmN1cmwucGMKLW1pc3NpbmcKLWN1cmwtKi50YXIuZ3oKIGN1cmwtKi50YXIuYnoyCitjdXJsLSoudGFyLmd6CiBjdXJsLSoudGFyLmx6bWEKIGN1cmwtKi56aXAKLUlOU1RBTEwKK2N1cmwtY29uZmlnCitkZXBjb21wCiBpbnN0YWxsLXNoCi0qLm8KLSoubG8KLSoubGEKK2xpYmN1cmwucGMKK2xpYnRvb2wKK2x0bWFpbi5zaAorbWlzc2luZwogbWtpbnN0YWxsZGlycwogdGFncwotVEFHUwotKn4KLWFjbG9jYWwubTQuYmFrCi1DSEFOR0VTLmRpc3QKLS5wcm9qZWN0Ci0uY3Byb2plY3QKLS5zZXR0aW5ncwotLmRpcnN0YW1wCiB0ZXN0LWRyaXZlcgotL2J1aWxkLwotL2J1aWxkcy8KK3NjcmlwdHMvX2N1cmwKZGlmZiAtLWdpdCBhLy50cmF2aXMueW1sIGIvLnRyYXZpcy55bWwKaW5kZXggYjk3NjU1Zi4uYzc2ZDEwYyAxMDA2NDQKLS0tIGEvLnRyYXZpcy55bWwKKysrIGIvLnRyYXZpcy55bWwKQEAgLTEsNSArMSwxNSBAQAorb3M6CisgIC0gbGludXgKKyAgLSBvc3gKKworc3VkbzogZmFsc2UKKwogbGFuZ3VhZ2U6IGMKIAoraW5zdGFsbDoKKyAgLSBpZiBbICIkVFJBVklTX09TX05BTUUiID09ICJvc3giIF07IHRoZW4gYnJldyB1cGRhdGUgPiAvZGV2L251bGw7IGZpCisgIC0gaWYgWyAiJFRSQVZJU19PU19OQU1FIiA9PSAib3N4IiBdOyB0aGVuIGJyZXcgaW5zdGFsbCBvcGVuc3NsIGxpYmlkbiBydG1wZHVtcCBsaWJzc2gyIGMtYXJlcyBsaWJtZXRhbGluayBsaWJyZXNzbCBuZ2h0dHAyOyBmaQorCiBiZWZvcmVfc2NyaXB0OgogICAtIC4vYnVpbGRjb25mCiAKZGlmZiAtLWdpdCBhL0NIQU5HRVMgYi9DSEFOR0VTCmluZGV4IGZlMGZiOGMuLmI3Mzk4NmIgMTAwNjQ0Ci0tLSBhL0NIQU5HRVMKKysrIGIvQ0hBTkdFUwpAQCAtMSwxNSArMSw3IEBACi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorU2VlIGh0dHBzOi8vY3VybC5oYXh4LnNlL2NoYW5nZXMuaHRtbCBmb3IgdGhlIGVkaXRlZCBhbmQgaHVtYW4gcmVhZGFibGUgb25saW5lCit2ZXJzaW9uIG9mIHdoYXQgaGFzIGNoYW5nZWQgb3ZlciB0aGUgeWVhcnMgaW4gZGlmZmVyZW50IGN1cmwgcmVsZWFzZXMuCiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFuZ2Vsb2cKLQotVGhpcyBmaWxlIG5vIGxvbmdlciBob2xkcyB0aGUgY2hhbmdlbG9nLiBOb3cgeW91IGNhbiBnZW5lcmF0ZSBpdCB5b3Vyc2VsZgotbGlrZSB0aGlzOgorR2VuZXJhdGUgYSBDSEFOR0VTIGZpbGUgbGlrZSB0aGUgb25lIHByZXNlbnQgaW4gZXZleSByZWxlYXNlIGxpa2UgdGhpczoKIAogJCBnaXQgbG9nIC0tcHJldHR5PWZ1bGxlciAtLW5vLWNvbG9yIC0tZGF0ZT1zaG9ydCAtLWRlY29yYXRlPWZ1bGwgfCBcCiAgIC4vbG9nMmNoYW5nZXMucGwKLQotVGhlIG9sZGVyLCBtYW51YWxseSBlZGl0ZWQsIGNoYW5nZWxvZyBpcyBmb3VuZCBpbiBnaXQgbmFtZWQgQ0hBTkdFUy4wCmRpZmYgLS1naXQgYS9DSEFOR0VTLjAgYi9DSEFOR0VTLjAKaW5kZXggZWFiMjZkYS4uZjAzMjk4MSAxMDA2NDQKLS0tIGEvQ0hBTkdFUy4wCisrKyBiL0NIQU5HRVMuMApAQCAtNDAsNyArNDAsNyBAQAogICB0aGluayBhZGRyZXNzZWQgdGhlIGlzc3VlIGJldHRlciBhbmQgYWxzbyB1c2VzIHRoZSBjb25uZWN0IHRpbWVvdXQgZm9yIHRoZQogICBpbml0aWFsIHBhcnQgb2YgdGhlIFNTSC9TRlRQIGRvbmUgZHVyaW5nIHRoZSAicHJvdG9jb2wgY29ubmVjdCIgcGhhc2UuCiAKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTMwMDY3ODYpCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MzAwNjc4NikKIAogWWFuZyBUc2UgKDIgSnVuZSAyMDEwKQogLSBBZGRlZCBtaXNzaW5nIG5ldyBsaWJjdXJsIGZpbGVzIHRvIG5vbi1jb25maWd1cmUgdGFyZ2V0cy4gQWRqdXN0ZWQKQEAgLTk2LDEzICs5NiwxMyBAQAogICBmaXggdGhlIHByb2JsZW0pIGFzIGl0IG5vdyBhY3R1YWxseSBhbGxvd3MgZm9yIGVhc2llciAoZnV0dXJlKSBjdXN0b21pemF0aW9uCiAgIG9mIHRoZSB0aW1lb3V0LgogCi0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0zMDAzNzA1KQorICAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTMwMDM3MDUpCiAKIC0gRG91Z2xhcyBLaWxwYXRyaWNrIGZpbGVkIGJ1ZyByZXBvcnQgIzMwMDQ3ODcgYW5kIHBvaW50ZWQgb3V0IHRoYXQgdGhlIFRGVFAKICAgY29kZSBkaWRuJ3QgaGFuZGxlIGJsb2NrIGlkIHdyYXBzIGNvcnJlY3RseS4gSGlzIHN1Z2dlc3RlZCBmaXggaW5zcGlyZWQgdGhlCiAgIGZpeCBJIGNvbW1pdHRlZC4KIAotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MzAwNDc4NykKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0zMDA0Nzg3KQogCiBEYW5pZWwgU3RlbmJlcmcgKDIwIE1heSAyMDEwKQogLSBUYW5ndXkgRmF1dHJlIGJyb3VnaHQgYSBmaXggdG8gYWxsb3cgY3VybCB0byBidWlsZCB3aXRoIE1pY3Jvc29mdCBWQzEwLgpAQCAtMTEyLDcgKzExMiw3IEBACiAgIGNvZGUgd2FzIG5vdCBzZW5kaW5nIHRoZSB0aW1lb3V0IG9wdGlvbiBwcm9wZXJseSB0byB0aGUgc2VydmVyLCBhbmQKICAgc3VnZ2VzdGVkIGEgZml4LgogCi0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0zMDAzMDA1KQorICAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTMwMDMwMDUpCiAKIEthbWlsIER1ZGthICgxNiBNYXkgMjAxMCkKIC0gUGF2ZWwgUmFpc2t1cCBpbnRyb2R1Y2VkIGEgbmV3IG9wdGlvbiBDVVJMT1BUX0ZOTUFUQ0hfREFUQSBpbiBvcmRlciB0byBwYXNzCkBAIC0xMzgsMTQgKzEzOCwxNCBAQAogICBuZXZlciBvYnRhaW4gYSB2YWxpZCBmZHNldCwgYW5kIHRodXMgbm90IGRyaXZlIHRoZSBtdWx0aSBoYW5kbGUsIHJlc3VsdGluZwogICBpbiBhIGhhbmcuCiAKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTMwMDAwNTIpCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MzAwMDA1MikKIAogLSBTZWJhc3RpYW4gViByZXBvcnRlZCBidWcgIzMwMDAwNTYgaWRlbnRpZnlpbmcgYSBwcm9ibGVtIHdpdGggcmVkaXJlY3QKICAgZm9sbG93aW5nLiBJdCBzaG93ZWQgdGhhdCB3aGVuIGN1cmwgZm9sbG93ZWQgcmVkaXJlY3RzIGl0IGRpZG4ndCBwcm9wZXJseQogICBpZ25vcmUgdGhlIHJlc3BvbnNlIGJvZHkgb2YgdGhlIDMwWCByZXNwb25zZSBpZiB0aGF0IHJlc3BvbnNlIHdhcyB1c2luZwogICBjb21wcmVzc2VkIENvbnRlbnQtRW5jb2RpbmchCiAKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTMwMDAwNTYpCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MzAwMDA1NikKIAogRGFuaWVsIFN0ZW5iZXJnICgxMiBNYXkgMjAxMCkKIC0gSG93YXJkIENodSBicm91Z2h0IHN1cHBvcnQgZm9yIFJUTVAuIFRoaXMgaXMgcG93ZXJlZCBieSB0aGUgdW5kZXJseWluZwpAQCAtMjY5LDcgKzI2OSw3IEBACiAgIHVubmVjZXNhcnkgcmV2ZXJzZSBuYW1lIGxvb2t1cHMgaW4gbWFueSBjYXNlcyB3aGVuIGJ1aWx0IHRvIHVzZSBJUHY0IGFuZAogICBnZXRhZGRyaW5mbygpLiBUaGUgbG9naWMgZm9yIElQdjYgaXMgbm93IHVzZWQgZm9yIElQdjQgdG9vLgogCi0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yOTYzNjc5KQorICAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI5NjM2NzkpCiAKIFZlcnNpb24gNy4yMC4xICgxNCBBcHJpbCAyMDEwKQogCkBAIC0zNDAsMTAgKzM0MCwxMCBAQAogICBQUk9YWVRVTk5FTC4gSGUgZm91bmQgYSBjYXNlIHdoZXJlIGl0IHdvdWxkIGNvbm5lY3QgZmluZSBidXQgYml0cy50Y3Bjb25uZWN0CiAgIHdhcyBub3Qgc2V0IGNvcnJlY3Qgc28gbGliY3VybCBkaWRuJ3Qgd29yayBwcm9wZXJseS4KIAotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9Mjk2MzY3OSkKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yOTYzNjc5KQogCiAtIEFrb3MgUGFzenRvcnkgZmlsZWQgZGViaWFuIGJ1ZyByZXBvcnQgIzU3MjI3NgotICBodHRwOi8vYnVncy5kZWJpYW4ub3JnL2NnaS1iaW4vYnVncmVwb3J0LmNnaT9idWc9NTcyMjc2IG1lbnRpb25pbmcgYSBwcm9ibGVtCisgIGh0dHBzOi8vYnVncy5kZWJpYW4ub3JnL2NnaS1iaW4vYnVncmVwb3J0LmNnaT9idWc9NTcyMjc2IG1lbnRpb25pbmcgYSBwcm9ibGVtCiAgIHdpdGggYSByZXNvdXJjZSB0aGF0IHJldHVybnMgY2h1bmtlZC1lbmNvZGVkIF9hbmRfIHdpdGggYSBDb250ZW50LUxlbmd0aAogICBhbmQgbGliY3VybCBmYWlsZWQgdG8gcHJvcGVybHkgaWdub3JlIHRoZSBsYXR0ZXIgaW5mb3JtYXRpb24uCiAKQEAgLTM4Miw3ICszODIsNyBAQAogLSBCZW4gR3JlZWFyIGltcHJvdmVkIFRGVFA6IHRoZSBlcnJvciBjb2RlIHJldHVybmluZyBhbmQgdGhlIHRyZWF0bWVudAogICBvZiBUU0laRSA9PSAwIHdoZW4gdXBsb2FkaW5nLgogCi0tIFdlJ3ZlIHN3aXRjaGVkIGZyb20gQ1ZTIHRvIGdpdC4gU2VlIGh0dHA6Ly9jdXJsLmhheHguc2Uvc291cmNlLmh0bWwKKy0gV2UndmUgc3dpdGNoZWQgZnJvbSBDVlMgdG8gZ2l0LiBTZWUgaHR0cHM6Ly9jdXJsLmhheHguc2Uvc291cmNlLmh0bWwKIAogS2FtaWwgRHVka2EgKDE5IE1hciAyMDEwKQogLSBJbXByb3ZlZCBDdXJsX3JlYWQoKSB0byBub3QgaWdub3JlIHRoZSBlcnJvciByZXR1cm5lZCBmcm9tIEN1cmxfc3NsX3JlY3YoKS4KQEAgLTM5MSw3ICszOTEsNyBAQAogLSBDb25zdGFudGluZSBTYXB1bnR6YWtpcyBicm91Z2h0IGEgcGF0Y2g6CiAKICAgVGhlIHByb2JsZW0gbWVudGlvbmVkIG9uIERlYyAxMCAyMDA5Ci0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yOTA1MjIwKSB3YXMgb25seSBwYXJ0aWFsbHkgZml4ZWQuCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjkwNTIyMCkgd2FzIG9ubHkgcGFydGlhbGx5IGZpeGVkLgogICBQYXJ0aWFsbHkgYmVjYXVzZSBhbiBlYXN5IGhhbmRsZSBjYW4gYmUgYXNzb2NpYXRlZCB3aXRoIG1hbnkgY29ubmVjdGlvbnMgaW4KICAgdGhlIGNhY2hlIChlLmcuIGlmIHRoZXJlIGlzIGEgcmVkaXJlY3QgZHVyaW5nIHRoZSBsaWZldGltZSBvZiB0aGUgZWFzeQogICBoYW5kbGUpLiAgVGhlIHByZXZpb3VzIHBhdGNoIG9ubHkgY2xlYW5lZCB1cCB0aGUgZmlyc3Qgb25lLiBUaGUgbmV3IGZpeCBub3cKQEAgLTQzMywxMyArNDMzLDEzIEBACiAgIENVUkxPUFRfQ0VSVElORk8gZmVhdHVyZSBsZWFrZWQgbWVtb3J5IGR1ZSB0byBhIG1pc3NpbmcgT3BlblNTTCBmdW5jdGlvbgogICBjYWxsLiBIZSBwcm92aWRlZCB0aGUgcGF0Y2ggdG8gZml4IGl0IHRvby4KIAotICBodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yOTU2Njk4CisgIGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yOTU2Njk4CiAKIC0gTWFya3VzIER1ZnQgcG9pbnRlZCBvdXQgaW4gYnVnICMyOTYxNzk2IHRoYXQgZXZlbiB0aG91Z2ggSW50ZXJpeCBoYXMgYQogICBwb2xsKCkgZnVuY3Rpb24gaXQgZG9lc24ndCBxdWl0ZSB3b3JrIHRoZSB3YXkgd2Ugd2FudCBpdCBzbyB3ZSBtdXN0IGRpc2FibGUKICAgaXQsIGFuZCBoZSBhbHNvIHByb3ZpZGVkIGEgcGF0Y2ggZm9yIGl0LgogCi0gIGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI5NjE3OTYKKyAgaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI5NjE3OTYKIAogLSBNYWRlIHRoZSBwaW5ncG9uZyB0aW1lb3V0IGNvZGUgcHJvcGVybHkgZGVhbCB3aXRoIHRoZSByZXNwb25zZSB0aW1lb3V0IEFORAogICB0aGUgZ2xvYmFsIHRpbWVvdXQgaWYgc2V0LiBBbHNvLCBhcyB3YXMgcmVwb3J0ZWQgaW4gdGhlIGJ1ZyByZXBvcnQgIzI5NTY0MzcKQEAgLTQ0OCw3ICs0NDgsNyBAQAogICB0aGF0IGp1c3Qgbm93LiBUaGlzIHdhcyBhIHJlZ3Jlc3Npb24gY29tcGFyZWQgdG8gNy4xOS43IGR1ZSB0byB0aGUKICAgY29udmVyc2lvbiBvZiBGVFAgY29kZSBvdmVyIHRvIHRoZSBnZW5lcmljIHBpbmdwb25nIGNvbmNlcHRzLgogCi0gIGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI5NTY0MzcKKyAgaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI5NTY0MzcKIAogRGFuaWVsIFN0ZW5iZXJnICgxIE1hciAyMDEwKQogLSBCZW4gR3JlZWFyIHByb3ZpZGVkIGFuIHVwZGF0ZSBmb3IgVEZUUCB0aGF0IGZpeGVzIHVwbG9hZC4KQEAgLTQ1NywyMCArNDU3LDIwIEBACiAgIE9wZW5TU0wgYmFzZWQgU1NMIGhhbmRzaGFraW5nIGV2ZW4gdGhvdWdoIHRoZSBtdWx0aSBpbnRlcmZhY2Ugd2FzIHVzZWQgYW5kCiAgIHRoZXJlIHdhcyBubyBnb29kIHJlYXNvbiBmb3IgaXQuCiAKLSAgaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9Mjk1ODE3OQorICBodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9Mjk1ODE3OQogCiBEYW5pZWwgU3RlbmJlcmcgKDI2IEZlYiAyMDEwKQogLSBQYXQgUmF5IGluIGJ1ZyAjMjk1ODQ3NCBwb2ludGVkIG91dCBhbiBvZmYtYnktb25lIGNhc2Ugd2hlbiByZWNlaXZpbmcgYQogICBjaHVua2VkLWVuY29kaW5nIHRyYWlsZXIuCiAKLSAgaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9Mjk1ODQ3NAorICBodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9Mjk1ODQ3NAogCiBEYW5pZWwgRmFuZHJpY2ggKDI1IEZlYiAyMDEwKQogLSBGaXhlZCBhIGNvdXBsZSBvZiBvdXQgb2YgbWVtb3J5IGxlYWtzIGFuZCBhIHNlZ2ZhdWx0IGluIHRoZSBTTVRQICYgSU1BUCBjb2RlLgogCiBZYW5nIFRzZSAoMjUgRmViIDIwMTApCiAtIEkgZml4ZWQgYnVnIHJlcG9ydCAjMjk1ODA3NCBpbmRpY2F0aW5nCi0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yOTU4MDc0KSB0aGF0IGN1cmwgb24gV2luZG93cyB3aXRoCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9Mjk1ODA3NCkgdGhhdCBjdXJsIG9uIFdpbmRvd3Mgd2l0aAogICBvcHRpb24gLS10cmFjZS10aW1lIGRpZCBub3QgdXNlIGxvY2FsIHRpbWUgd2hlbiB0aW1lc3RhbXBpbmcgdHJhY2UgbGluZXMuCiAgIFRoaXMgY291bGQgYWxzbyBoYXBwZW4gb24gb3RoZXIgc3lzdGVtcyBkZXBlbmRpbmcgb24gdGltZSBzb3V1cmNlLgogCkBAIC01MDEsMTEgKzUwMSwxMSBAQAogRGFuaWVsIFN0ZW5iZXJnICgxMyBGZWIgMjAxMCkKIC0gTWFydGluIEhhZ2VyIHJlcG9ydGVkIGFuZCBmaXhlZCBhIHByb2JsZW0gd2l0aCBhIG1pc3NpbmcgcXVvdGUgaW4gbGliY3VybC5tNAogCi0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yOTUxMzE5KQorICAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI5NTEzMTkpCiAKIC0gVG9tIERvbm92YW4gZml4ZWQgdGhlIENVUkxfRk9STUFUXyogZGVmaW5lcyB3aGVuIGJ1aWxkaW5nIHdpdGggY21ha2UuCiAKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI5NTEyNjkpCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9Mjk1MTI2OSkKIAogRGFuaWVsIFN0ZW5iZXJnICgxMiBGZWIgMjAxMCkKIC0gSmFjayBaaGFuZyByZXBvcnRlZCBhIHByb2JsZW0gd2l0aCBTTVRQOiB3ZSB3cm9uZ2x5IHVzZWQgbXVsdGlwbGUgYWRkcmVzc2VzCkBAIC01MzIsNyArNTMyLDcgQEAKICAgVGhpcyBpcyBmdXJ0aGVyIGRldGFpbGVkIGFuZCBleHBsYWluZWQgaW4gdGhlIGxpYmN1cmwgc2VjdXJpdHkgYWR2aXNvcnkKICAgMjAxMDAyMDkgYXQKIAotICAgIGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9hZHZfMjAxMDAyMDkuaHRtbAorICAgIGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvYWR2XzIwMTAwMjA5Lmh0bWwKIAogRGFuaWVsIEZhbmRyaWNoICgzIEZlYiAyMDEwKQogLSBDaGFuZ2VkIHRoZSBXYXRjb20gbWFrZWZpbGVzIHRvIG1ha2UgdGhlbSBlYXNpZXIgdG8ga2VlcCBpbiBzeW5jIHdpdGgKQEAgLTY4NSw3ICs2ODUsNyBAQAogICBTU0xfU0VTU0lPTl9mcmVlKCkgYWZ0ZXIgZWFjaCBjb25zZWN1dGl2ZSBTU0xfZ2V0MV9zZXNzaW9uKCkgdG8gYXZvaWQKICAgaW50cm9kdWNpbmcgYSBtZW1vcnkgbGVhay4KIAotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjkyNjI4NCkKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yOTI2Mjg0KQogCiBEYW5pZWwgU3RlbmJlcmcgKDcgSmFuIDIwMTApCiAtIE1ha2Ugc3VyZSB0aGUgcHJvZ3Jlc3MgY2FsbGJhY2sgaXMgY2FsbGVkIHJlcGVhdGVkbHkgZXZlbiBkdXJpbmcgdmVyeSBzbG93CkBAIC03MjcsNyArNzI3LDcgQEAKIC0gUmVuYXRvIEJvdGVsaG8gYW5kIFBldGVyIFBlbnRjaGV2IGJyb3VnaHQgYSBwYXRjaCB0aGF0IG1ha2VzIHRoZSBsaWJjdXJsCiAgIGhlYWRlcnMgd29yayBjb3JyZWN0bHkgZXZlbiBvbiBGcmVlQlNEIHN5c3RlbXMgYmVmb3JlIHY4LgogCi0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yOTE2OTE1KQorICAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI5MTY5MTUpCiAKIERhbmllbCBTdGVuYmVyZyAoMTcgRGVjIDIwMDkpCiAtIERhdmlkIEJ5cm9uIGZpeGVkIEN1cmxfb3NzbF9jbGVhbnVwIHRvIGFjdHVhbGx5IGNhbGwgRU5HSU5FX2NsZWFudXAgd2hlbgpAQCAtNzU1LDcgKzc1NSw3IEBACiAgIGZyb20gJ1twcm90b2NvbF1fcHJveHknLiBPYnZpb3VzbHkgdGhpcyBicm9rZSBhZnRlciA3LjE5LjQuIEkgbm93IGFsc28gYWRkZWQKICAgdGVzdCBjYXNlIDExMDYgdGhhdCB2ZXJpZmllcyB0aGlzIGZ1bmN0aW9uYWxpdHkuCiAKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI5MTM4ODYpCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjkxMzg4NikKIAogRGFuaWVsIFN0ZW5iZXJnICgxMiBEZWMgMjAwOSkKIC0gSU1BUCwgUE9QMyBhbmQgU01UUCBzdXBwb3J0IGFuZCB0aGVpciBUTFMgdmVyc2lvbnMgKGluY2x1ZGluZyBJTUFQUywgUE9QM1MKQEAgLTc3NCwxNCArNzc0LDE0IEBACiAgIE5vdyB0aGUgcmV0cnkgY29kZSByZXRyaWVzIG9uIGFsbCBGVFAgdHJhbnNmZXIgZmFpbHVyZXMgdGhhdCBlbmRlZCB3aXRoIGEKICAgNHh4IHJlc3BvbnNlLgogCi0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yOTExMjc5KQorICAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI5MTEyNzkpCiAKIC0gQ29uc3RhbnRpbmUgU2FwdW50emFraXMgZmlndXJlZCBvdXQgYSBjYXNlIHdoaWNoIHdvdWxkIGxlYWQgdG8gbGliY3VybAogICBhY2Nlc3NpbmcgYWxyZWR5IGZyZWVkIG1lbW9yeSBhbmQgdGh1cyBjcmFzaCB3aGVuIHVzaW5nIEhUVFBTICh3aXRoCiAgIE9wZW5TU0wpLCBtdWx0aSBpbnRlcmZhY2UgYW5kIHRoZSBDVVJMT1BUX0RFQlVHRlVOQ1RJT04gYW5kIGEgY2VydGFpbiBvcmRlcgogICBvZiBjbGVhbmluZyB0aGluZ3MgdXAuIEkgZml4ZWQgaXQuCiAKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI5MDUyMjApCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjkwNTIyMCkKIAogRGFuaWVsIFN0ZW5iZXJnICg3IERlYyAyMDA5KQogLSBNYXJ0aW4gU3RvcnNqbyBtYWRlIGxpYmN1cmwgdXNlIHRoZSBFeHBlY3Q6IDEwMC1jb250aW51ZSBoZWFkZXIgZm9yIHBvc3RzCkBAIC04NTYsMTIgKzg1NiwxMiBAQAogICBBZnRlciB0aGUgY3VybF9lYXN5X2NsZWFudXAgY2FsbCwgdGhlcmUgd2lsbCBiZSBjdXJsIGRucyBlbnRyaWVzIGhhbmdpbmcKICAgYXJvdW5kIHdpdGggaW5fdXNlICE9IDAuCiAKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI4OTE1OTEpCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9Mjg5MTU5MSkKIAogLSBNYXJjIEtsZWluZS1CdWRkZSBmaXhlZDogY3VybCBzYXZlZCB0aGUgTERGTEFHUyBzZXQgZHVyaW5nIGNvbmZpZ3VyZSBpbnRvCiAgIGl0cyBwa2ctY29uZmlnIGZpbGUuICBTbyAtV2wgc3R1ZmYgZW5kZWQgdXAgaW4gdGhlIC5wYyBmaWxlLCB3aGljaCBpcyByZWFsbHkKICAgYmFkLCBhbmQgYnJlYWtzIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSAtV2wgaW4gb3VyIExERkxBR1MgKHdoaWNoIGFyZSBpbgotICBQVFhkaXN0KS4gYnVnICMyODkzNTkyIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yODkzNTkyKQorICBQVFhkaXN0KS4gYnVnICMyODkzNTkyIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9Mjg5MzU5MikKIAogS2FtaWwgRHVka2EgKDE1IE5vdiAyMDA5KQogLSBEYXZpZCBCeXJvbiBpbXByb3ZlZCB0aGUgY29uZmlndXJlIHNjcmlwdCB0byB1c2UgcGtnLWNvbmZpZyB0byBmaW5kIE9wZW5TU0wKQEAgLTkxOSw3ICs5MTksNyBAQAogCiBEYW5pZWwgU3RlbmJlcmcgKDExIE5vdiAyMDA5KQogLSBDb25zdGFudGluZSBTYXB1bnR6YWtpcyBwb3N0ZWQgYnVnICMyODkxNTk1Ci0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yODkxNTk1KSB3aGljaCBpZGVudGlmaWVkIGhvdyBhbiBlbnRyeQorICAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI4OTE1OTUpIHdoaWNoIGlkZW50aWZpZWQgaG93IGFuIGVudHJ5CiAgIGluIHRoZSBETlMgY2FjaGUgd291bGQgbGluZ2VyIHRvbyBsb25nIGlmIHRoZSByZXF1ZXN0IHRoYXQgYWRkZWQgaXQgd2FzIGluCiAgIHVzZSB0aGF0IGxvbmcuIEhlIGFsc28gcHJvdmlkZWQgdGhlIHBhdGNoIHRoYXQgbm93IG1ha2VzIGxpYmN1cmwgY2FwYWJsZSBvZgogICBzdGlsbCBkb2luZyBhIHJlcXVlc3Qgd2hpbGUgdGhlIEROUyBoYXNoIGVudHJ5IG1heSBnZXQgdGltZWQgb3V0LgpAQCAtOTgwLDcgKzk4MCw3IEBACiAtIEF0dGVtcHQgdG8gdXNlIHBrZy1jb25maWcgZm9yIGZpbmRpbmcgb3V0IGxpYnNzaDIgaW5zdGFsbGF0aW9uIGRldGFpbHMKICAgZHVyaW5nIGNvbmZpZ3VyZS4KIAotLSBBIHBhdGNoIGluIGJ1ZyByZXBvcnQgIzI4ODMxNzcgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI4ODMxNzcpCistIEEgcGF0Y2ggaW4gYnVnIHJlcG9ydCAjMjg4MzE3NyAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI4ODMxNzcpCiAgIGJ5IEpvaGFuIHZhbiBTZWxzdCBpbnRyb2R1Y2VkIHRoZSAtLWNybGZpbGUgb3B0aW9uIHRvIGN1cmwsIHdoaWNoIG1ha2VzIGN1cmwKICAgdGVsbCBsaWJjdXJsIGFib3V0IGEgZmlsZSB3aXRoIENSTCAoY2VydGlmaWNhdGUgcmV2b2NhdGlvbiBsaXN0KSBkYXRhIHRvCiAgIHJlYWQuCkBAIC05OTUsNyArOTk1LDcgQEAKICAgZGF0YSEKIAogLSBKb2huIERlbm5pcyBmaWxlZCBidWcgcmVwb3J0ICMyODczNjY2Ci0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yODczNjY2KSB3aGljaCBpZGVudGlmaWVkIGEgcHJvYmxlbQorICAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI4NzM2NjYpIHdoaWNoIGlkZW50aWZpZWQgYSBwcm9ibGVtCiAgIHdoaWNoIG1hZGUgbGliY3VybCBsb29wIGluZmluaXRlbHkgd2hlbiBnaXZlbiBpbmNvcnJlY3QgY3JlZGVudGlhbHMgd2hlbgogICB1c2luZyBIVFRQIEdTUyBuZWdvdGlhdGUgYXV0aGVudGljYXRpb24uIEhlIGFsc28gcHJvdmlkZWQgYSBzbWFsbCBhbmQgc2ltcGxlCiAgIHBhdGNoIGZvciBpdC4KQEAgLTEwMDYsMTQgKzEwMDYsMTQgQEAKIAogWWFuZyBUc2UgKDE3IE9jdCAyMDA5KQogLSBCdWcgcmVwb3J0ICMyODY2NzI0IGluZGljYXRlZAotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9Mjg2NjcyNCkgdGhhdCBjdXJsIG9uIFdpbmRvd3MgZmFpbGVkCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9Mjg2NjcyNCkgdGhhdCBjdXJsIG9uIFdpbmRvd3MgZmFpbGVkCiAgIHdoZW4gd3JpdGluZyBmaWxlcyB3aG9zZSBmaWxlIG5hbWVzIG9yaWdpbmFsbHkgY29udGFpbmVkIGNoYXJhY3RlcnMgd2hpY2gKICAgYXJlIG5vdCB2YWxpZCBmb3IgZmlsZSBuYW1lcyBvbiBXaW5kb3dzLiBEYW4gRmFuZHJpY2ggcHJvdmlkZWQgYW4gaW5pdGlhbAogICBwYXRjaCBhbmQgYW5vdGhlciByZXZpc2VkIG9uZSB0byBmaXggdGhpcyBpc3N1ZS4KIAogRGFuaWVsIFN0ZW5iZXJnICgxIE9jdCAyMDA5KQogLSBUb20gTXVlbGxlciBjb3JyZWN0bHkgcmVwb3J0ZWQgaW4gYnVnIHJlcG9ydCAjMjg3MDIyMQotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9Mjg3MDIyMSkgdGhhdCBsaWJjdXJsIHJldHVybmVkIGFuCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9Mjg3MDIyMSkgdGhhdCBsaWJjdXJsIHJldHVybmVkIGFuCiAgIGluY29ycmVjdCByZXR1cm4gY29kZSBmcm9tIHRoZSBpbnRlcm5hbCB0cnluZXh0aXAoKSBmdW5jdGlvbiB3aGljaCBjYXVzZWQKICAgaGltIGdyaWVmLiBUaGlzIGlzIGEgcmVncmVzc2lvbiB0aGF0IHdhcyBpbnRyb2R1Y2VkIGluIDcuMTkuMSBhbmQgSSBmaW5kIGl0CiAgIHN0cmFuZ2UgaXQgaGFzbid0IGhpdCB1cyBoYXJkZXIsIGJ1dCBJIHdvbid0IHBlcnN1ZSBpbnRvIGZpZ3VyaW5nIG91dApAQCAtMTA0OSw3ICsxMDQ5LDcgQEAKIAogRGFuaWVsIFN0ZW5iZXJnICgyNSBTZXAgMjAwOSkKIC0gQ2hyaXMgTXVtZm9yZCBmaWxlZCBidWcgcmVwb3J0ICMyODYxNTg3Ci0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yODYxNTg3KSBpZGVudGlmeWluZyB0aGF0IGxpYmN1cmwgdXNlZAorICAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI4NjE1ODcpIGlkZW50aWZ5aW5nIHRoYXQgbGliY3VybCB1c2VkCiAgIHRoZSBPcGVuU1NMIGZ1bmN0aW9uIFg1MDlfbG9hZF9jcmxfZmlsZSgpIHdyb25nbHkgYW5kIGZhaWxlZCBpZiBpdCB3b3VsZAogICBsb2FkIGEgQ1JMIGZpbGUgd2l0aCBtb3JlIHRoYW4gb25lIGNlcnRpZmljYXRlIHdpdGhpbi4gVGhpcyBpcyBub3cgZml4ZWQuCiAKQEAgLTExMjgsNyArMTEyOCw3IEBACiAKIERhbmllbCBTdGVuYmVyZyAoMjQgQXVnIDIwMDkpCiAtIE1hcmMgZGUgQnJ1aW4gcG9pbnRlZCBvdXQgdGhhdCBjb25maWd1cmUgLS13aXRoLWdudXRscz1QQVRIIGRpZG4ndCB3b3JrCi0gIHByb3Blcmx5IGFuZCBwcm92aWRlZCBhIGZpeC4gaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9Mjg0MzAwOAorICBwcm9wZXJseSBhbmQgcHJvdmlkZWQgYSBmaXguIGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yODQzMDA4CiAKIC0gRXJpYyBXb25nIGludHJvZHVjZWQgc3VwcG9ydCBmb3IgdGhlIG5ldyBvcHRpb24gLVQuIChkb3QpIHRoYXQgbWFrZXMgY3VybAogICByZWFkIHN0ZGluIGluIGEgbm9uLWJsb2NraW5nIGZhc2hpb24uIFRoaXMgYWxzbyBicmluZ3MgYmFjayAtVC0gKG1pbnVzKSB0bwpAQCAtMTE4Miw3ICsxMTgyLDcgQEAKICAgaW4gdGVzdCAzMTEuCiAKIC0gQmVuYnVjayBOYXNvbiBwb3N0ZWQgdGhlIGJ1ZyByZXBvcnQgIzI4MzUxOTYKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI4MzUxOTYpLCBmaXhpbmcgYSBmZXcgY29tcGlsZXIKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yODM1MTk2KSwgZml4aW5nIGEgZmV3IGNvbXBpbGVyCiAgIHdhcm5pbmdzIHdoZW4gbWl4aW5nIGludHMgYW5kIGJvb2xzLgogCiBEYW5pZWwgRmFuZHJpY2ggKDEwIEF1ZyAyMDA5KQpAQCAtMTIwMiw3ICsxMjAyLDcgQEAKIAogRGFuaWVsIFN0ZW5iZXJnICgxIEF1ZyAyMDA5KQogLSBTY290dCBDYW50b3IgcG9zdGVkIHRoZSBidWcgcmVwb3J0ICMyODI5OTU1Ci0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yODI5OTU1KSBtZW50aW9uaW5nIHRoZSByZWNlbnQgU1NMIGNlcnQKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yODI5OTU1KSBtZW50aW9uaW5nIHRoZSByZWNlbnQgU1NMIGNlcnQKICAgdmVyaWZpY2F0aW9uIGZsYXcgZm91bmQgYW5kIGV4cGxvaXRlZCBieSBNb3hpZSBNYXJsaW5zcGlrZS4gVGhlIHByZXNlbnRhdGlvbgogICBoZSBkaWQgYXQgQmxhY2sgSGF0IGlzIGF2YWlsYWJsZSBoZXJlOgogICBodHRwczovL3d3dy5ibGFja2hhdC5jb20vaHRtbC9iaC11c2EtMDkvYmgtdXNhLTA5LWFyY2hpdmVzLmh0bWwjTWFybGluc3Bpa2UKQEAgLTEyMzcsNyArMTIzNyw3IEBACiAKIERhbmllbCBTdGVuYmVyZyAoMjYgSnVsIDIwMDkpCiAtIEpvaGFuIHZhbiBTZWxzdCBwb3N0ZWQgYnVnIHJlcG9ydCAjMjgyNTk4OQotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjgyNTk4OSkgcG9pbnRpbmcgb3V0IHRoYXQKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yODI1OTg5KSBwb2ludGluZyBvdXQgdGhhdAogICBPcGVuU1NMLXBvd2VyZWQgbGliY3VybCBkaWRuJ3Qgc3VwcG9ydCB0aGUgU0hBLTIgZGlnZXN0IGFsZ29yaXRobSwgYW5kCiAgIHByb3ZpZGVkIHRoZSBzb2x1dGlvbiB0b286IHRvIHVzZSBPcGVuU1NMX2FkZF9hbGxfYWxnb3JpdGhtcygpIGluIGFkZGl0aW9uCiAgIHRvIHRoZSBvbGRlciBTU0xlYXlfKiBhbHRlcm5hdGl2ZS4gT3BlblNTTF9hZGRfYWxsX2FsZ29yaXRobXMgd2FzIGFkZGVkIGluCkBAIC0xMjgzLDcgKzEyODMsNyBAQAogCiBEYW5pZWwgU3RlbmJlcmcgKDggSnVsIDIwMDkpCiAtIENvbnN0YW50aW5lIFNhcHVudHpha2lzIHBvc3RlZCBidWcgcmVwb3J0ICMyODEzMTIzCi0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yODEzMTIzKSBhbmQgYW4gYSBwYXRjaCB0aGF0IGZpeGVzIHRoZQorICAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI4MTMxMjMpIGFuZCBhbiBhIHBhdGNoIHRoYXQgZml4ZXMgdGhlCiAgIHByb2JsZW06CiAKICAgVXJsIEEgaXMgYWNjZXNzZWQgdXNpbmcgYXV0aC4gVXJsIEEgcmVkaXJlY3RzIHRvIFVybCBCIChvbiBhIGRpZmZlcmVudApAQCAtMTM3OCw3ICsxMzc4LDcgQEAKIERhbmllbCBTdGVuYmVyZyAoOCBKdW4gMjAwOSkKIC0gQ2xhZXMgSmFrb2Jzc29uIHByb3ZpZGVkIGEgcGF0Y2ggZm9yIGxpYmN1cmwtTlNTIHRoYXQgZml4ZWQgYSBiYWQgcmVmY291bnQKICAgaXNzdWUgd2l0aCBjbGllbnQgY2VydHMgdGhhdCBjYXVzZWQgaXNzdWVzIGxpa2Ugc2VnZmF1bHRzLgotICBodHRwOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMDktMDUvMDMxNi5odG1sCisgIGh0dHBzOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMDktMDUvMDMxNi5odG1sCiAKIC0gVHJpZ2dlcmVkIGJ5IGJ1ZyByZXBvcnQgIzI3OTg4NTIgYW5kIHRoZSBwYXRjaCBpbiB0aGVyZSwgSSBmaXhlZCBjb25maWd1cmUKICAgdG8gZGV0ZWN0IGdudXRscyBidWlsZCBvcHRpb25zIHdpdGggcGtnLWNvbmZpZyBvbmx5IGFuZCBub3QgbGliZ251dGxzLWNvbmZpZwpAQCAtMTQyMSw3ICsxNDIxLDcgQEAKICAga25vd3MgaXQgd2lsbCBqdXN0IGdldCBhIDQwMS80MDcgYmFjay4gSWYgdGhlIGFwcCB0aGVuIHJlcGxhY2VkIHRoZQogICBDb250ZW50LUxlbmd0aCBoZWFkZXIsIGl0IGNhdXNlZCB0aGUgc2VydmVyIHRvIHdhaXQgZm9yIGlucHV0IHRoYXQgbGliY3VybAogICB3b3VsZG4ndCBzZW5kLiBBYXJvbiBPbmVhbCByZXBvcnRlZCB0aGlzIHByb2JsZW0gaW4gYnVnIHJlcG9ydCAjMjc5OTAwOAotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9Mjc5OTAwOCkgYW5kIGhlbHBlZCB1cyB2ZXJpZnkgdGhlIGZpeC4KKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yNzk5MDA4KSBhbmQgaGVscGVkIHVzIHZlcmlmeSB0aGUgZml4LgogCiBZYW5nIFRzZSAoNCBKdW4gMjAwOSkKIC0gSWdvciBOb3Zvc2VsdHNldiBwcm92aWRlZCBwYXRjaGVzIGFuZCBpbmZvcm1hdGlvbiwgdGhhdCBhZnRlciBzb21lCkBAIC0xNDYxLDcgKzE0NjEsNyBAQAogICBQSzExX0NyZWF0ZUdlbmVyaWNPYmplY3QoKSBmdW5jdGlvbi4KIAogRGFuaWVsIFN0ZW5iZXJnICgyNSBNYXkgMjAwOSkKLS0gYnVnIHJlcG9ydCAjMjc5NjM1OCAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9Mjc5NjM1OCkgcG9pbnRlZAorLSBidWcgcmVwb3J0ICMyNzk2MzU4IChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9Mjc5NjM1OCkgcG9pbnRlZAogICBvdXQgdGhhdCB0aGUgY29va2llIHBhcnNlciB3b3VsZCBsZWFrIG1lbW9yeSB3aGVuIGl0IHBhcnNlcyBjb29raWVzIHRoYXQgYXJlCiAgIHJlY2VpdmVkIHdpdGggZG9tYWluLCBwYXRoIGV0YyBzZXQgbXVsdGlwbGUgdGltZXMgaW4gdGhlIHNhbWUgaGVhZGVyLiBXaGlsZQogICBzdWNoIGEgY29va2llIGlzIHF1ZXN0aW9uYWJsZSwgdGhleSBvY2N1ciBpbiB0aGUgd2lsZCBhbmQgbGliY3VybCBubyBsb25nZXIKQEAgLTE0OTIsNyArMTQ5Miw3IEBACiAtIEJhbGludCBTemlsYWtzemkgcmVwb3J0ZWQgYSBtZW1vcnkgbGVhayB3aGVuIGxpYmN1cmwgZGlkIGd6aXAgZGVjb21wcmVzc2lvbgogICBvZiBzdHJlYW1zIHRoYXQgaGFkIHNvbWUgcGFydHMgKGxlZ2l0aW1hdGVseSkgbWlzc2luZy4gV2Ugbm93IHByb3ZpZGUgYW5kIHVzZQogICBhIHByb3BlciBjbGVhbnVwIGZ1bmN0aW9uIGZvciB0aGUgY29udGVudCBlbmNvZGluZyBzdWJtb2R1bGUuCi0gIGh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC9saWItMjAwOS0wNS8wMDkyLmh0bWwKKyAgaHR0cHM6Ly9jdXJsLmhheHguc2UvbWFpbC9saWItMjAwOS0wNS8wMDkyLmh0bWwKIAogLSBLYW1pbCBEdWRrYSBwcm92aWRlZCBhIGZpeCBmb3IgbGliY3VybC1OU1MgcmVwb3J0ZWQgYnkgTWljaGFlbCBDcm9uZW53b3J0aAogICBhdCBodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTQ1MzYxMiNjMTIKQEAgLTE1MjMsNyArMTUyMyw3IEBACiAKIERhbmllbCBTdGVuYmVyZyAoOCBNYXkgMjAwOSkKIC0gQ29uc3RhbnRpbmUgU2FwdW50emFraXMgZml4ZWQgYnVnIHJlcG9ydCAjMjc4NDA1NQotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9Mjc4NDA1NSkgaWRlbnRpZnlpbmcgYSBwcm9ibGVtIHRvCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9Mjc4NDA1NSkgaWRlbnRpZnlpbmcgYSBwcm9ibGVtIHRvCiAgIGNvbm5lY3QgdG8gU09DS1MgcHJveGllcyB3aGVuIHVzaW5nIHRoZSBtdWx0aSBpbnRlcmZhY2UuIEl0IHR1cm5lZCBvdXQgdG8KICAgYWxtb3N0IG5vdCB3b3JrIGF0IGFsbCBwcmV2aW91c2x5LiBXZSBuZWVkIHRvIHdhaXQgZm9yIHRoZSBUQ1AgY29ubmVjdCB0bwogICBiZSBwcm9wZXJseSB2ZXJpZmllZCBiZWZvcmUgZG9pbmcgdGhlIFNPQ0tTIG1hZ2ljLgpAQCAtMTU0Myw3ICsxNTQzLDcgQEAKICAgcmVwb3J0ZWQgaW4gdGhlIERlYmlhbiBwYWNrYWdlLgogCiAtIFZpamF5IEcgZmlsZWQgYnVnIHJlcG9ydCAjMjcyMzIzNgotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjcyMzIzNikgaWRlbnRpZnlpbmcgYSBwcm9ibGVtIHdpdGgKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yNzIzMjM2KSBpZGVudGlmeWluZyBhIHByb2JsZW0gd2l0aAogICBsaWJjdXJsJ3MgVEZUUCBjb2RlIGFuZCBpdHMgbGFjayBvZiBkZWFsaW5nIHdpdGggdGhlIE9BQ0sgcGFja2V0LgogCiBZYW5nIFRzZSAoNSBNYXkgMjAwOSkKQEAgLTE1NTcsNyArMTU1Nyw3IEBACiAKIERhbmllbCBTdGVuYmVyZyAoNCBNYXkgMjAwOSkKIC0gTWljaGFlbCBTbWl0aCBwb3N0ZWQgYnVnIHJlcG9ydCAjMjc4NjI1NQotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9Mjc4NjI1NSkgd2l0aCBhIHBhdGNoLCBpZGVudGlmeWluZyBob3cKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yNzg2MjU1KSB3aXRoIGEgcGF0Y2gsIGlkZW50aWZ5aW5nIGhvdwogICBsaWJjdXJsIGRpZCBub3QgZGVhbCB3aXRoIFNTTCBzZXNzaW9uIGlkcyBwcm9wZXJseSBpZiB0aGUgc2VydmVyIHJlamVjdGVkIGEKICAgcmUtdXNlIG9mIG9uZS4gU3RhcnRpbmcgbm93LCBpdCB3aWxsIGZvcmdldCB0aGUgcmVqZWN0ZWQgb25lIGFuZCByZW1lbWJlcgogICB0aGUgbmV3LiBUaGlzIGNoYW5nZSB3YXMgZm9yIE9wZW5TU0wgb25seSwgaXQgaXMgbGlrZWx5IHRoYXQgb3RoZXIgU1NMIGxpYgpAQCAtMTU5Nyw3ICsxNTk3LDcgQEAKICAgdGhpcyBidWcgc28gSSBoZXJlYnkgY29uc2lkZXIgaXQgbm90IGEgYnVnIGFueW1vcmUhCiAKIERhbmllbCBTdGVuYmVyZyAoMjkgQXByIDIwMDkpCi0tIEJhc2VkIG9uIGJ1ZyByZXBvcnQgIzI3MjMyMTkgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI3MjMyMTkpCistIEJhc2VkIG9uIGJ1ZyByZXBvcnQgIzI3MjMyMTkgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yNzIzMjE5KQogICBJJ3ZlIG5vdyBtYWRlIFRGVFAgImNvbm5lY3Rpb25zIiBub3QgYmVpbmcga2VwdCBmb3IgcmUtdXNlIHdpdGhpbiBsaWJjdXJsLgogICBURlRQIGlzIFVEUC1iYXNlZCBzbyB0aGUgYmVuZWZpdCB3YXMgcmVhbGx5IGxvdyAoaWYgZXZlbiBleGlzdGluZykgdG8gYmVnaW4KICAgd2l0aCBzbyBpbnN0ZWFkIG9mIHRyYWNraW5nIGRvd24gdG8gZml4IHRoaXMgcHJvYmxlbSB3ZSBpbnN0ZWFkIHJlbW92ZWQgdGhlCkBAIC0xNjA2LDEyICsxNjA2LDEyIEBACiAKIERhbmllbCBTdGVuYmVyZyAoMjggQXByIDIwMDkpCiAtIENvbnN0YW50aW5lIFNhcHVudHpha2lzIGZpbGVkIGJ1ZyByZXBvcnQgIzI3ODMwOTAKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI3ODMwOTApIHBvaW50aW5nIG91dCB0aGF0IG9uIHdpbmRvd3MKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yNzgzMDkwKSBwb2ludGluZyBvdXQgdGhhdCBvbiB3aW5kb3dzCiAgIHdlIG5lZWQgdG8gZ3JvdyB0aGUgU09fU05EQlVGIGJ1ZmZlciBzb21ld2hhdCB0byBnZXQgcmVhbGx5IGdvb2QgdXBsb2FkCi0gIHNwZWVkcy4gaHR0cDovL3N1cHBvcnQubWljcm9zb2Z0LmNvbS9rYi84MjM3NjQgaGFzIHRoZSBkZXRhaWxzLiBGcmllbmRzCisgIHNwZWVkcy4gaHR0cHM6Ly9zdXBwb3J0Lm1pY3Jvc29mdC5jb20va2IvODIzNzY0IGhhcyB0aGUgZGV0YWlscy4gRnJpZW5kcwogICBjb25maXJtZWQgdGhhdCBzaW1wbHkgYWRkaW5nIDMyIHRvIENVUkxfTUFYX1dSSVRFX1NJWkUgaXMgZW5vdWdoLgogCi0tIEJ1ZyByZXBvcnQgIzI3MDkwMDQgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI3MDkwMDQpIGJ5IFRpbQorLSBCdWcgcmVwb3J0ICMyNzA5MDA0IChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjcwOTAwNCkgYnkgVGltCiAgIENoZW4gcG9pbnRlZCBvdXQgaG93IGN1cmwgY291bGRuJ3QgdXBsb2FkIHdpdGggcmVzdW1lIHdoZW4gcmVhZGluZyBmcm9tIGEKICAgcGlwZS4KIApAQCAtMTYyMywxNCArMTYyMywxNCBAQAogICBmcm9tIGEgc3RyZWFtIQogCiBEYW5pZWwgU3RlbmJlcmcgKDI2IEFwciAyMDA5KQotLSBCdWcgcmVwb3J0ICMyNzc5NzMzIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yNzc5NzMzKSBieSBTdmVuCistIEJ1ZyByZXBvcnQgIzI3Nzk3MzMgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yNzc5NzMzKSBieSBTdmVuCiAgIFdlZ2VuZXIgcG9pbnRlZCBvdXQgdGhhdCBDVVJMSU5GT19BUFBDT05ORUNUX1RJTUUgZGlkbid0IHdvcmsgd2l0aCB0aGUgbXVsdGkKICAgaW50ZXJmYWNlIGFuZCBwcm92aWRlZCBhIHBhdGNoIHRoYXQgZml4ZWQgdGhlIHByb2JsZW0hCiAKIERhbmllbCBTdGVuYmVyZyAoMjQgQXByIDIwMDkpCiAtIEthbWlsIER1ZGthIGZpeGVkIGFub3RoZXIgTlNTLXJlbGF0ZWQgbGVhayB3aGVuIGNsaWVudCBjZXJ0cyB3ZXJlIHVzZWQuCiAKLS0gQnVnIHJlcG9ydCAjMjc3OTI0NSAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9Mjc3OTI0NSkgYnkgUmFpbmVyCistIEJ1ZyByZXBvcnQgIzI3NzkyNDUgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yNzc5MjQ1KSBieSBSYWluZXIKICAgS29lbmlnIHBvaW50ZWQgb3V0IHRoYXQgdGhlIG1hbiBwYWdlIGRpZG4ndCB0ZWxsIHRoYXQgdGhlICpfcHJveHkKICAgZW52aXJvbm1lbnQgdmFyaWFibGVzIGNhbiBiZSBzcGVjaWZpZWQgbG93ZXIgY2FzZSBvciBVUFBFUiBDQVNFIGFuZCB0aGUKICAgbG93ZXIgY2FzZSB0YWtlcyBwcmVjZWRlbmNlLApAQCAtMTY0Nyw3ICsxNjQ3LDcgQEAKIAogRGFuaWVsIFN0ZW5iZXJnICgyMCBBcHIgMjAwOSkKIC0gTGVhbmljIExlZmV2ZXIgcmVwb3J0ZWQgYSBjcmFzaCBhbmQgZGlkIHNvbWUgZGV0YWlsZWQgcmVzZWFyY2ggb24gd2h5IGFuZAotICBob3cgaXQgb2NjdXJzIChodHRwOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMDktMDQvMDI4OS5odG1sKS4gVGhlCisgIGhvdyBpdCBvY2N1cnMgKGh0dHBzOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMDktMDQvMDI4OS5odG1sKS4gVGhlCiAgIGNvbmNsdXNpb24gd2FzIHRoYXQgaWYgYW4gZXJyb3IgaXMgZGV0ZWN0ZWQgYW5kIEN1cmxfZG9uZSgpIGlzIGNhbGxlZCBmb3IKICAgdGhlIGNvbm5lY3Rpb24sIGZ0cF9kb25lKCkgY291bGQgYXQgdGltZXMgcmV0dXJuIGFub3RoZXIgZXJyb3IgY29kZSB0aGF0CiAgIHRoZW4gd291bGQgdGFrZSBwcmVjZWRlbmNlIGFuZCB0aGF0IG5ldyBjb2RlIGNvbmZ1c2VkIGV4aXN0aW5nIGxvZ2ljIHRoYXQKQEAgLTE2NzAsNyArMTY3MCw3IEBACiAgIHN0ZGVyciBvdXRwdXQgYWZ0ZXIgYSB0ZXN0IHJ1biB0byBzZWUgdGhhdCBpdCB0cnVseSBkaWQgdGhlIHJpZ2h0IHRoaW5nLgogCiBEYW5pZWwgU3RlbmJlcmcgKDEzIEFwciAyMDA5KQotLSBidWcgcmVwb3J0ICMyNzI3OTgxIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yNzI3OTgxKSBieSBNYXJ0aW4KKy0gYnVnIHJlcG9ydCAjMjcyNzk4MSAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI3Mjc5ODEpIGJ5IE1hcnRpbgogICBTdG9yc2r2IHBvaW50ZWQgb3V0IGhvdyBzZXR0aW5nIENVUkxPUFRfTk9CT0RZIHRvIDAgY291bGQgYmUgZG93bnJpZ2h0CiAgIGNvbmZ1c2luZyBhcyBpdCBzZXQgdGhlIG1ldGhvZCB0byBlaXRoZXIgR0VUIG9yIEhFQUQuIFRoZSBleGFtcGxlIGhlIHNob3dlZAogICBsb29rZWQgbGlrZToKQEAgLTE3ODYsNyArMTc4Niw3IEBACiAgIHdoZW4gdGhlIG1hbiBwYWdlcyBzdGF0ZSB0aGF0IEdOVVRMU19FX1NVQ0NFU1MgaXMgcmV0dXJuZWQgb24gc3VjY2VzcyBhbmQKICAgb3RoZXIgdmFsdWVzIGluZGljYXRlIGVycm9yIGNvbmRpdGlvbnMuCiAKLS0gQmlsbCBFZ2VydCBwb2ludGVkIG91dCAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjY3MTYwMikgdGhhdAorLSBCaWxsIEVnZXJ0IHBvaW50ZWQgb3V0IChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjY3MTYwMikgdGhhdAogICBjdXJsIGRpZG4ndCB1c2Ugc3ByaW50ZigpIGluIGEgd2F5IHRoYXQgaXMgZG9jdW1lbnRlZCB0byB3b3JrIGluIFBPU0lYIGJ1dAogICBzaW5jZSB3ZSB1c2Ugb3VyIG93biBwcmludGYoKSBjb2RlIChmcm9tIGxpYmN1cmwpIHRoYXQgc2hvdWxkbid0IGJlIGEKICAgcHJvYmxlbS4gTm9uZXRoZWxlc3MgSSBtb2RpZmllZCB0aGUgY29kZSB0byBub3QgcmVseSBvbiBzdWNoIHBhcnRpY3VsYXIKQEAgLTE4MjAsNyArMTgyMCw3IEBACiAKIERhbmllbCBTdGVuYmVyZyAoMyBNYXIgMjAwOSkKIC0gRGF2aWQgS2llcnpub3dza2kgbm90aWZpZWQgdXMgYWJvdXQgYSBzZWN1cml0eSBmbGF3Ci0gIChodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvYWR2XzIwMDkwMzAzLmh0bWwgYWxzbyBrbm93biBhcyBDVkUtMjAwOS0wMDM3KSBpbgorICAoaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9hZHZfMjAwOTAzMDMuaHRtbCBhbHNvIGtub3duIGFzIENWRS0yMDA5LTAwMzcpIGluCiAgIHdoaWNoIHByZXZpb3VzIGxpYmN1cmwgdmVyc2lvbnMgKGJ5IGRlc2lnbikgY2FuIGJlIHRyaWNrZWQgdG8gYWNjZXNzIGFuCiAgIGFyYml0cmFyeSBsb2NhbC9kaWZmZXJlbnQgZmlsZSBpbnN0ZWFkIG9mIGEgcmVtb3RlIG9uZSB3aGVuCiAgIENVUkxPUFRfRk9MTE9XTE9DQVRJT04gaXMgZW5hYmxlZC4gVGhpcyBmbGF3IGlzIG5vdyBmaXhlZCBpbiB0aGlzIHJlbGVhc2UKQEAgLTE5MjksNyArMTkyOSw3IEBACiAgIHRoZSBjb25kaXRpb24gaW4gdGhlIHByZXZpb3VzIHJlcXVlc3Qgd2FzIHVubWV0LiBUaGlzIGlzIHR5cGljYWxseSBhIHRpbWUKICAgY29uZGl0aW9uIHNldCB3aXRoIENVUkxPUFRfVElNRUNPTkRJVElPTiBhbmQgd2FzIHByZXZpb3VzbHkgbm90IHBvc3NpYmxlIHRvCiAgIHJlbGlhYmx5IGZpZ3VyZSBvdXQuIEZyb20gYnVnIHJlcG9ydCAjMjU2NTEyOAotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjU2NTEyOCkgZmlsZWQgYnkgSm9jZWx5biBKYXViZXJ0LgorICAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI1NjUxMjgpIGZpbGVkIGJ5IEpvY2VseW4gSmF1YmVydC4KIAogRGFuaWVsIEZhbmRyaWNoICg0IEZlYiAyMDA5KQogLSBEb24ndCBhZGQgdGhlIHN0YW5kYXJkIC91c3IvbGliIG9yIC91c3IvaW5jbHVkZSBwYXRocyB0byBMREZMQUdTIGFuZCBDUFBGTEFHUwpAQCAtMTk2OCw3ICsxOTY4LDcgQEAKIAogRGFuaWVsIFN0ZW5iZXJnICgzMCBKYW4gMjAwOSkKIC0gU2NvdHQgQ2FudG9yIGZpbGVkIGJ1ZyByZXBvcnQgIzI1NTAwNjEKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI1NTAwNjEpIG1lbnRpb25pbmcgdGhhdCBJIGZhaWxlZCB0bworICAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI1NTAwNjEpIG1lbnRpb25pbmcgdGhhdCBJIGZhaWxlZCB0bwogICBwcm9wZXJseSBtYWtlIHN1cmUgdGhhdCB0aGUgVkM5IG1ha2VmaWxlcyBnb3QgaW5jbHVkZWQgaW4gdGhlIGxhdGVzdAogICByZWxlYXNlLiBJJ3ZlIG5vdyBmaXhlZCB0aGUgcmVsZWFzZSBzY3JpcHQgYW5kIHZlcmlmaWVkIGl0IHNvIG5leHQgcmVsZWFzZQogICB3aWxsIGhvcGVmdWxseSBpbmNsdWRlIHRoZW0gcHJvcGVybHkhCkBAIC0yMDEyLDcgKzIwMTIsNyBAQAogICBvbiB0aGUgcHJvcGVyIGFjdGlvbi4KIAogLSBBbGV4ZXkgQm9yem92IGZpbGVkIGJ1ZyByZXBvcnQgIzI1MzU1MDQKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI1MzU1MDQpIHBvaW50aW5nIG91dCB0aGF0IHJlYWxtcyB3aXRoCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjUzNTUwNCkgcG9pbnRpbmcgb3V0IHRoYXQgcmVhbG1zIHdpdGgKICAgcXVvdGVkIHF1b3RhdGlvbiBtYXJrcyBpbiBIVFRQIERpZ2VzdCBoZWFkZXJzIGRpZG4ndCB3b3JrLiBJJ3ZlIG5vdyBhZGRlZAogICB0ZXN0IGNhc2UgMTA5NSB0aGF0IHZlcmlmaWVzIG15IGZpeC4KIApAQCAtMjA5NSw3ICsyMDk1LDcgQEAKICAgU3VuUHJvIGNvbXBpbGVycy4KIAogRGFuaWVsIFN0ZW5iZXJnICgxMiBKYW4gMjAwOSkKLS0gQmFzZWQgb24gYnVnIHJlcG9ydCAjMjQ5ODY2NSAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjQ5ODY2NSkKKy0gQmFzZWQgb24gYnVnIHJlcG9ydCAjMjQ5ODY2NSAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI0OTg2NjUpCiAgIGJ5IERhbmllbCBCbGFjaywgSSd2ZSBub3cgYWRkZWQgbWFnaWMgdG8gdGhlIGNvbmZpZ3VyZSBzY3JpcHQgdGhhdCBtYWtlcyBpdAogICB1c2UgcGtnLWNvbmZpZyB0byBkZXRlY3QgZ251dGxzIGRldGFpbHMgYXMgd2VsbCBpZiB0aGUgZXhpc3RpbmcgbWV0aG9kCiAgICh1c2luZyBsaWJnbnV0bHMtY29uZmlnKSBmYWlscy4gV2hpbGUgZG9pbmcgdGhpcywgSSBjbGVhbmVkIHVwIGFuZCB1bmlmaWVkCkBAIC0yMTQ3LDEzICsyMTQ3LDEzIEBACiAtICdyZWNvbmYnIGlzIHJlbW92ZWQgc2luY2Ugd2UgcmF0aGVyIGhhdmUgdXNlcnMgdXNlICdidWlsZGNvbmYnCiAKIERhbmllbCBTdGVuYmVyZyAoMzEgRGVjIDIwMDgpCi0tIEJhcyBNZXZpc3NlbiByZXBvcnRlZCBodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yNDc5MDMwIHBvaW50aW5nCistIEJhcyBNZXZpc3NlbiByZXBvcnRlZCBodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjQ3OTAzMCBwb2ludGluZwogICBvdXQgdGhhdCAncmVjb25mJyBkaWRuJ3QgcHJvcGVybHkgcG9pbnQgb3V0IHRoZSBtNCBzdWJkaXJlY3Rvcnkgd2hlbiBydW5uaW5nCiAgIGFjbG9jYWwuCiAKIERhbmllbCBTdGVuYmVyZyAoMjkgRGVjIDIwMDgpCiAgLSBQaGlsIExpc2llY2tpIGZpbGVkIGJ1ZyByZXBvcnQgIzI0MTMwNjcKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI0MTMwNjcpIHRoYXQgaWRlbnRpZmllZCBhIHByb2JsZW0gdGhhdAorICAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTI0MTMwNjcpIHRoYXQgaWRlbnRpZmllZCBhIHByb2JsZW0gdGhhdAogICB3b3VsZCBjYXVzZSBsaWJjdXJsIHRvIG1hcmsgYSBETlMgY2FjaGUgZW50cnkgImluIHVzZSIgZXRlcm5hbGx5IGlmIHRoZQogICBzdWJzZXF1ZW5jZSBUQ1AgY29ubmVjdCBmYWlsZWQuIEl0IHdvdWxkIHRodXMgbmV2ZXIgZ2V0IHBydW5lZCBhbmQgcmVmcmVzaGVkCiAgIGFzIGl0IHNob3VsZCd2ZSBiZWVuLgpAQCAtMjIxOCw3ICsyMjE4LDcgQEAKIC0gTW9yZSB3b3JrIHdpdGggSWdvciBOb3Zvc2VsdHNldiB0byBmaXJzdCBmaXggdGhlIHJlbWFpbmluZyBzdHVmZiBmb3IKICAgcmVtb3ZpbmcgZWFzeSBoYW5kbGVzIGZyb20gbXVsdGkgaGFuZGxlcyB3aGVuIHRoZSBlYXN5IGhhbmRsZSBpcy93YXMgd2l0aGluCiAgIGEgSFRUUCBwaXBlbGluZS4gSGlzIGJ1ZyByZXBvcnQgIzIzNTE2NTMKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTIzNTE2NTMpIHdhcyBhbHNvIHJlbGF0ZWQgYW5kIHdhcworICAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTIzNTE2NTMpIHdhcyBhbHNvIHJlbGF0ZWQgYW5kIHdhcwogICBldmVudHVhbGx5IGZpeGVkIGJ5IGEgcGF0Y2ggYnkgSWdvciBoaW1zZWxmLgogCiBZYW5nIFRzZSAoMTIgRGVjIDIwMDgpCkBAIC0yMjI4LDcgKzIyMjgsNyBAQAogRGFuaWVsIFN0ZW5iZXJnICgxMiBEZWMgMjAwOCkKIC0gTWFyayBLYXJwZWxlcyBmaWxlZCBidWcgcmVwb3J0ICMyNDE2MTgyIHRpdGxlZCAiY3Jhc2ggaW4gQ29ubmVjdGlvbkV4aXN0cwogICB3aGVuIHVzaW5nIGR1cGhhbmRsZStjdXJsX211dGxpIgotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjQxNjE4Mikgd2hpY2ggc2hvd2VkIHRoYXQKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yNDE2MTgyKSB3aGljaCBzaG93ZWQgdGhhdAogICBjdXJsX2Vhc3lfZHVwaGFuZGxlKCkgd3JvbmdseSBhbHNvIGNvcGllZCB0aGUgcG9pbnRlciB0byB0aGUgY29ubmVjdGlvbgogICBjYWNoZSwgd2hpY2ggd2FzIHBsYWluIHdyb25nIGFuZCBjYXVzZWQgYSBzZWdmYXVsdCBpZiB0aGUgaGFuZGxlIHdvdWxkIGJlCiAgIHVzZWQgaW4gYSBkaWZmZXJlbnQgbXVsdGkgaGFuZGxlIHRoYW4gdGhlIGhhbmRsZSBpdCB3YXMgZHVwbGljYXRlZCBmcm9tLgpAQCAtMjI4MSw3ICsyMjgxLDcgQEAKICAgTk9UIHRha2UgYSA1NTAgcmVzcG9uc2UgZnJvbSBTSVpFIGFzIGEgaGludCB0aGF0IHRoZSBmaWxlIGRvZXNuJ3QgZXhpc3QuCiAKIC0gQ2hyaXN0aWFuIEtyYXVzZSBmaWxlZCBidWcgIzIyMjEyMzcKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTIyMjEyMzcpIHRoYXQgaWRlbnRpZmllZCBhbiBpbmZpbml0ZQorICAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTIyMjEyMzcpIHRoYXQgaWRlbnRpZmllZCBhbiBpbmZpbml0ZQogICBsb29wIGR1cmluZyBHU1MgYXV0aGVudGljYXRpb24gZ2l2ZW4gc29tZSBzcGVjaWZpYyBjb25kaXRpb25zLiBXaXRoIGhpcwogICBwYXRpZW5jZSBhbmQgZ3JlYXQgZmVlZGJhY2sgSSBtYW5hZ2VkIHRvIG5hcnJvdyBkb3duIHRoZSBwcm9ibGVtIGFuZAogICBldmVudHVhbGx5IGZpeCBpdCBhbHRob3VnaCBJIGNhbid0IHRlc3QgYW55IG9mIHRoaXMgbXlzZWxmIQpAQCAtMjI5MiwxMyArMjI5MiwxMyBAQAogCiBEYW5pZWwgU3RlbmJlcmcgKDMgRGVjIDIwMDgpCiAtIElnb3IgTm92b3NlbHRzZXYgZmlsZWQgYnVnICMyMzUxNjQ1Ci0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yMzUxNjQ1KSB0aGF0IGlkZW50aWZpZWQgYSBwcm9ibGVtIHdpdGgKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yMzUxNjQ1KSB0aGF0IGlkZW50aWZpZWQgYSBwcm9ibGVtIHdpdGgKICAgdGhlIG11bHRpIGludGVyZmFjZSB0aGF0IG9jY3VyZWQgaWYgeW91IHJlbW92ZWQgYW4gZWFzeSBoYW5kbGUgd2hpbGUgaW4KICAgcHJvZ3Jlc3MgYW5kIHRoZSBoYW5kbGUgd2FzIHVzZWQgaW4gYSBIVFRQIHBpcGVsaW5lLgogCiAtIFBhd2VsIEtpZXJza2kgcG9pbnRlZCBvdXQgYSBtaXN0YWtlIGluIHRoZSBjb29raWUgY29kZSB0aGF0IGNvdWxkIGxlYWQgdG8gYQogICBiYWQgZmNsb3NlKCkgYWZ0ZXIgYSBmYXRhbCBlcnJvciBoYWQgb2NjdXJlZC4KLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTIzODIyMTkpCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjM4MjIxOSkKIAogRGFuaWVsIEZhbmRyaWNoICgyNSBOb3YgMjAwOCkKIC0gSWYgYSBIVFRQIHJlcXVlc3QgaXMgQmFzaWMgYW5kIG51bSBpcyBhbHJlYWR5ID49MTAwMCwgdGhlIEhUVFAgdGVzdApAQCAtMjMzMSw3ICsyMzMxLDcgQEAKICAgd2hhdGV2ZXIgeW91IHNlZSBmaXQKIAogLSBDaHJpc3RpYW4gS3JhdXNlIHJlcG9ydGVkIGFuZCBmaXhlZCBhIG1lbW9yeSBsZWFrIHRoYXQgd291bGQgb2NjdXIgd2l0aCBIVFRQCi0gIEdTUy9rZXJiZXJvcyBhdXRoZW50aWNhdGlvbiAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjI4NDM4NikKKyAgR1NTL2tlcmJlcm9zIGF1dGhlbnRpY2F0aW9uIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjI4NDM4NikKIAogLSBBbmRyZWFzIFd1cmYgYW5kIE1hcmt1cyBLb2V0dGVyIGhlbHBlZCBtZSBhbmFseXplIGEgcHJvYmxlbSB0aGF0IEFuZHJlYXMgZ290CiAgIHdoZW4gdXBsb2FkaW5nIGZpbGVzIHRvIGEgc2luZ2xlIEZUUCBzZXJ2ZXIgdXNpbmcgbXVsdGlwbGUgZWFzeSBoYW5kbGUKQEAgLTIzOTIsNyArMjM5Miw3IEBACiAKIERhbmllbCBTdGVuYmVyZyAoMTEgTm92IDIwMDgpCiAtIFJhaW5lciBDYW5hdmFuIGZpbGVkIGJ1ZyAjMjI1NTYyNwotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjI1NTYyNykgd2hpY2ggcG9pbnRlZCBvdXQgdGhhdCBhCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjI1NTYyNykgd2hpY2ggcG9pbnRlZCBvdXQgdGhhdCBhCiAgIHByb2dyYW0gdXNpbmcgbGliY3VybCdzIG11bHRpIGludGVyZmFjZSB0byBkb3dubG9hZCBhIEhUVFBTIHBhZ2Ugd2l0aCBhCiAgIGxpYmN1cmwgYnVpbHQgcG93ZXJlZCBieSBPcGVuU1NMLCB3b3VsZCBlYXNpbHkgZ2V0IHNpbGx5IGFuZCBpbnN0ZWFkIGhhbmQKICAgb3ZlciBTU0wgZGV0YWlscyBhcyBkYXRhIGluc3RlYWQgb2YgdGhlIGFjdHVhbCBIVFRQIGhlYWRlcnMgYW5kIGJvZHkuIFRoaXMKQEAgLTI0MDYsNyArMjQwNiw3IEBACiAgIHVuZm9ydHVuYXRlbHkgaXQgZGlkbid0IHRyaWdnZXIgaXQgZXZlbiBiZWZvcmUgdGhpcyBmaXghCiAKIFlhbmcgVHNlICgxMSBOb3YgMjAwOCkKLS0gUmVsYXRlZCB3aXRoIGJ1ZyAjMjIzMDUzNSAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjIzMDUzNSkKKy0gUmVsYXRlZCB3aXRoIGJ1ZyAjMjIzMDUzNSAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTIyMzA1MzUpCiAgIERhbmllbCBGYW5kcmljaCBub3RpY2VkIHRoYXQgY3VybF9hZGRyaW5mbyB3YXMgYWxzbyBtaXNzaW5nIGluIHRoZSBidWlsZAogICBwcm9jZXNzIG9mIG90aGVyIGZvdXIgbm9uLWNvbmZpZ3VyZSBwbGF0Zm9ybXMuIEFkZGVkIG5vdy4KIApAQCAtMjQxOSw3ICsyNDE5LDcgQEAKIC0gTWVyZ2VkIGV4aXN0aW5nIElQdjQgYW5kIElQdjYgQ3VybF9pcDJhZGRyIGZ1bmN0aW9ucyBpbnRvIGEgc2luZ2xlIG9uZQogICB3aGljaCBub3cgYWxzbyB0YWtlcyBhIHByb3RvY29sIGFkZHJlc3MgZmFtaWx5IGFyZ3VtZW50LgogCi0tIEJ1ZyAjMjIzMDUzNSAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjIzMDUzNSkgcG9pbnRlZCBvdXQgYQorLSBCdWcgIzIyMzA1MzUgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yMjMwNTM1KSBwb2ludGVkIG91dCBhCiAgIHByb2JsZW0gd2l0aCBNU1ZDIDYgbWFrZWZpbGUgdGhhdCBjYXVzZWQgYSBidWlsZCBmYWlsdXJlLiBJdCB3YXMgbm90ZWQgdGhhdAogICB0aGUgY3VybF9hZGRyaW5mby5vYmogcmVmZXJlbmNlIHdhcyBtaXNzaW5nLiBJIHRvb2sgdGhlIG9wcG9ydHVuaXR5IHRvIHNvcnQKICAgdGhlIGxpc3QgaW4gd2hpY2ggdGhpcyB3YXMgbWlzc2luZy4gSXNzdWUgc3VibWl0dGVkIGJ5IEpvaG4gV2lsa2luc29uLgpAQCAtMjQzMCw3ICsyNDMwLDcgQEAKIC0gQ1VSTElORk9fRklMRVRJTUUgbm93IHdvcmtzIGZvciBmaWxlOi8vIHRyYW5zZmVycyBhcyB3ZWxsCiAKIERhbmllbCBTdGVuYmVyZyAoMyBOb3YgMjAwOCkKLS0gQnVnICMyMjE4NDgwIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yMjE4NDgwKSBwb2ludGVkIG91dCBhCistIEJ1ZyAjMjIxODQ4MCAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTIyMTg0ODApIHBvaW50ZWQgb3V0IGEKICAgcHJvYmxlbSB3aXRoIG15IENVUkxJTkZPX1BSSU1BUllfSVAgZml4IGZyb20gT2N0b2JlciA3dGggdGhhdCBjYXVzZWQgYSBOVUxMCiAgIHBvaW50ZXIgcmVhZC4gSSBhbHNvIHRvb2sgdGhlIG9wcG9ydHVuaXR5IHRvIGNsZWFuIHVwIHRoaXMgbG9naWMgKHN0b3Jpbmcgb2YKICAgdGhlIGNvbm5lY3Rpb24ncyBJUCBhZGRyZXNzKSBzb21ld2hhdCBhcyB3ZSBoYWQgaXQgc3RvcmVkIGluIHR3byBkaWZmZXJlbnQKQEAgLTI1MDcsNyArMjUwNyw3IEBACiAKIERhbmllbCBTdGVuYmVyZyAoMTUgT2N0IDIwMDgpCiAtIFBhc2NhbCBUZXJqYW4gZmlsZWQgYnVnICMyMTU0NjI3Ci0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yMTU0NjI3KSB3aGljaCBwb2ludGVkIG91dCB0aGF0IGxpYmN1cmwKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yMTU0NjI3KSB3aGljaCBwb2ludGVkIG91dCB0aGF0IGxpYmN1cmwKICAgdXNlcyBzdHJjYXNlY21wKCkgaW4gbXVsdGlwbGUgcGxhY2VzIHdoZXJlIGl0IGNhdXNlcyBmYWlsdXJlcyB3aGVuIHRoZQogICBUdXJraXNoIGxvY2FsZSBpcyB1c2VkLiBUaGlzIGlzIGJlY2F1c2UgJ2knIGFuZCAnSScgaXNuJ3QgdGhlIHNhbWUgbGV0dGVyIHNvCiAgIHN0cmNhc2VjbXAoKSBvbiB0aG9zZSBsZXR0ZXJzIGFyZSBkaWZmZXJlbnQgaW4gVHVya2lzaCB0aGFuIGluIEVuZ2xpc2ggKG9yCkBAIC0yNTI0LDcgKzI1MjQsNyBAQAogCiBEYW5pZWwgU3RlbmJlcmcgKDE1IE9jdCAyMDA4KQogLSBKb2huIFdpbGtpbnNvbiBmaWxlZCBidWcgIzIxNTU0OTYKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTIxNTU0OTYpIHBvaW50aW5nIG91dCBhbiBlcnJvciBjYXNlCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjE1NTQ5NikgcG9pbnRpbmcgb3V0IGFuIGVycm9yIGNhc2UKICAgd2l0aG91dCBhIHByb3BlciBodW1hbi1yZWFkYWJsZSBlcnJvciBtZXNzYWdlLiBXaGVuIGEgcmVhZCBjYWxsYmFjayByZXR1cm5zCiAgIGEgdG9vIGxhcmdlIHZhbHVlIChsaWtlIHdoZW4gdHJ5aW5nIHRvIHJldHVybiBhIG5lZ2F0aXZlIG51bWJlcikgaXQgd291bGQKICAgdHJpZ2dlciBhbmQgdGhlIGdlbmVyaWMgZXJyb3IgbWVzc2FnZSB0aGVuIG1ha2VzIHRoZSBwcm9wbGVtIHNsaWdodGx5CkBAIC0yNTQ1LDcgKzI1NDUsNyBAQAogCiBEYW5pZWwgU3RlbmJlcmcgKDggT2N0IDIwMDgpCiAtIEpvaG4gV2lsa2luc29uIGZpbGVkIGJ1ZyAjMjE1MjI3MAotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjE1MjI3MCkgd2hpY2ggaWRlbnRpZmllZCBhbmQgZml4ZWQgYQorICAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTIxNTIyNzApIHdoaWNoIGlkZW50aWZpZWQgYW5kIGZpeGVkIGEKICAgQ1VSTElORk9fUkVESVJFQ1RfVVJMIG1lbW9yeSBsZWFrIGFuZCBhbiBhZGRpdGlvbmFsIHdyb25nLWRvaW5nOgogCiAgIEFueSBzdWJzZXF1ZW50IHRyYW5zZmVyIHdpdGggYSByZWRpcmVjdCBsZWFrcyBtZW1vcnksIGV2ZW50dWFsbHkgY3Jhc2hpbmcKQEAgLTI1NTUsNyArMjU1NSw3IEBACiAgIHRoYXQgRElEIG9jY3VyIG9uIHNvbWUgcHJldmlvdXMgdHJhbnNmZXIgdG8gc3RpbGwgYmUgcmVwb3J0ZWQuCiAKIC0gSWdvciBOb3Zvc2VsdHNldiBmaWxlZCBidWcgIzIxMTE2MTMKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTIxMTE2MTMpIHRoYXQgZXZlbnR1YWxseSBpZGVudGlmaWVkIGEKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yMTExNjEzKSB0aGF0IGV2ZW50dWFsbHkgaWRlbnRpZmllZCBhCiAgIGZsYXcgaW4gaG93IHRoZSBtdWx0aV9zb2NrZXQgaW50ZXJmYWNlIGluIHNvbWUgY2FzZXMgbWlzc2VkIHRvIGNhbGwgdGhlCiAgIHRpbWVvdXQgY2FsbGJhY2sgd2hlbiBlYXN5IGludGVyZmFjZXMgYXJlIHJlbW92ZWQgYW5kIGFkZGVkIHdpdGhpbiB0aGUgc2FtZQogICBtaWxsaXNlY29uZC4KQEAgLTI2MjAsMTMgKzI2MjAsMTMgQEAKICAgZG93bmxvYWRzIQogCiAtIE1heGltIEl2YW5vdiBmaWxlZCBidWcgcmVwb3J0ICMyMTA3ODAzCi0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yMTA3ODAzKSAibm8gQ1VSTElORk9fUkVESVJFQ1RfVVJMIGluCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjEwNzgwMykgIm5vIENVUkxJTkZPX1JFRElSRUNUX1VSTCBpbgogICBtdWx0aSBtb2RlIiB0b2dldGhlciB3aXRoIGEgcGF0Y2ggdGhhdCBmaXhlZCB0aGUgcHJvYmxlbS4KIAogRGFuaWVsIFN0ZW5iZXJnICgyNSBTZXAgMjAwOCkKIC0gRW1hbnVlbGUgQm92aXNpbyBzdWJtaXR0ZWQgYnVnIHJlcG9ydCAjMjEyNjQzNS4gV2UgZml4ZWQgdGhlIEhUVFAgRGlnZXN0CiAgIGF1dGggY29kZSB0byBub3QgYmVoYXZlIGJhZGx5IHdoZW4gZ2V0dGluZyBhIGJsYW5rIHJlYWxtIHdpdGgKLSAgcmVhbG09IiIuIGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTIxMjY0MzUKKyAgcmVhbG09IiIuIGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yMTI2NDM1CiAKIERhbmllbCBGYW5kcmljaCAoMjMgU2VwIDIwMDgpCiAtIE1ha2Ugc3VyZSBub3QgdG8gZGVyZWZlcmVuY2UgdGhlIHdyb25nIFVybFN0YXRlIHByb3RvIHVuaW9uIG1lbWJlciB3aGVuCkBAIC0yNjU5LDE0ICsyNjU5LDE0IEBACiAKIERhbmllbCBTdGVuYmVyZyAoMjIgU2VwIDIwMDgpCiAtIE1hZGUgdGhlIFNPQ0tTIGNvZGUgdXNlIHRoZSBuZXcgQ3VybF9yZWFkX3BsYWluKCkgZnVuY3Rpb24gdG8gZml4IHRoZSBidWcKLSAgTWFya3VzIE1vZWxsZXIgcmVwb3J0ZWQ6IGh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC9hcmNoaXZlLTIwMDgtMDkvMDAxNi5odG1sCisgIE1hcmt1cyBNb2VsbGVyIHJlcG9ydGVkOiBodHRwczovL2N1cmwuaGF4eC5zZS9tYWlsL2FyY2hpdmUtMjAwOC0wOS8wMDE2Lmh0bWwKIAogLSByZWN2KCkgZXJyb3JzIG90aGVyIHRoYW4gdGhvc2UgZXF1YWwgdG8gRUFHQUlOIG5vdyBjYXVzZSBwcm9wZXIKICAgQ1VSTEVfUkVDVl9FUlJPUiB0byBnZXQgcmV0dXJuZWQuIFRoaXMgbWFkZSB0ZXN0IGNhc2UgMTYwIGZhaWwgc28gSSd2ZSBub3cKICAgZGlzYWJsZWQgaXQgdW50aWwgd2UgY2FuIGZpZ3VyZSBvdXQgYW5vdGhlciB3YXkgdG8gZXhlcmNpc2UgdGhhdCBsb2dpYy4KIAogLSBNaWNoYWVsIEdvZmZpb3VsIGZpbGVkIGJ1ZyByZXBvcnQgIzIxMDczNzcgIlByb2JsZW0gd2l0aCBtdWx0aSArIEdudVRMUyArCi0gIHByb3h5IiAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjEwNzM3NykgdGhhdCBzaG93ZWQgaG93IGEgbXVsdGkKKyAgcHJveHkiIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjEwNzM3NykgdGhhdCBzaG93ZWQgaG93IGEgbXVsdGkKICAgaW50ZXJmYWNlIHVzaW5nIHByb2dyYW0gZGlkbid0IHdvcmsgd2hlbiBidWlsdCB3aXRoIEdudVRMUyBhbmQgYSBDT05ORUNUCiAgIHJlcXVlc3Qgd2FzIGRvbmUgb3ZlciBhIHByb3h5IChiYXNpY2FsbHkgdGVzdCA1MDIgb3ZlciBhIHByb3h5IHRvIGEgSFRUUFMKICAgc2l0ZSkuIEl0IHR1cm5lZCBvdXQgdGhlIHNzbCBjb25uZWN0IGZ1bmN0aW9uIHdvdWxkIGdldCBjYWxsZWQgdHdpY2Ugd2hpY2gKQEAgLTI4MTIsMTkgKzI4MTIsMTkgQEAKICAgIkNvbm5lY3Rpb246IGNsb3NlIiBhbmQgYWN0dWFsbHkgY2xvc2UgdGhlIGNvbm5lY3Rpb24gYWZ0ZXIgdGhlCiAgIHJlc3BvbnNlLWJvZHksIGxpYmN1cmwgY291bGQgc3RpbGwgaGF2ZSBvdXRzdGFuZGluZyBkYXRhIHRvIHNlbmQgYW5kIGl0CiAgIHdvdWxkIG5vdCBwcm9wZXJseSBub3RpY2UgdGhpcyBhbmQgc3RvcCBzZW5kaW5nLiBUaGlzIGNhdXNlZCB3ZWlyZG5lc3MgYW5kCi0gIHNhZCBmYWNlcy4gaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjA4MDIyMgorICBzYWQgZmFjZXMuIGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yMDgwMjIyCiAKICAgTm90ZSB0aGF0IHRoZXJlIGFyZSBzdGlsbCByZWFzb25zIHRvIGNvbnNpZGVyIGxpYmN1cmwncyBiZWhhdmlvciB3aGVuCiAgIGdldHRpbmcgYSA+PSA0MDAgcmVzcG9uc2UgY29kZSB3aGlsZSBzZW5kaW5nIGRhdGEsIGFzIENyYWlnIFBlcnJhcycgbm90ZQogICAiaHR0cCB1cGxvYWQ6IGhvdyB0byBzdG9wIG9uIGVycm9yIiBzcGVjaWZpZXM6Ci0gIGh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC9hcmNoaXZlLTIwMDgtMDgvMDEzOC5odG1sCisgIGh0dHBzOi8vY3VybC5oYXh4LnNlL21haWwvYXJjaGl2ZS0yMDA4LTA4LzAxMzguaHRtbAogCiBEYW5pZWwgU3RlbmJlcmcgKDI4IEF1ZyAyMDA4KQogLSBEZW5nbWlud2VuIHJlcG9ydGVkIHRoYXQgbGliY3VybCB3b3VsZCBsb2NrIGEgKGNvb2tpZSkgc2hhcmUgdHdpY2UgKHdpdGhvdXQKICAgYW4gdW5sb2NrIGluIGJldHdlZW4pIGZvciBhIGNlcnRhaW4gY2FzZSBhbmQgdGhhdCBpbiBmYWN0IHdvcmtzIHdoZW4gdXNpbmcKICAgcmVndWxhciB3aW5kb3dzIG11dGV4ZXMgYnV0IG5vdCB3aXRoIHB0aHJlYWRzJyEgTG9ja3Mgc2hvdWxkIG9mIGNvdXJzZSBub3QKICAgZ2V0IGxvY2tlZCBhZ2FpbiBzbyB0aGlzIGlzIG5vdyBmaXhlZC4KLSAgaHR0cDovL2N1cmwuaGF4eC5zZS9tYWlsL2xpYi0yMDA4LTA4LzA0MjIuaHRtbAorICBodHRwczovL2N1cmwuaGF4eC5zZS9tYWlsL2xpYi0yMDA4LTA4LzA0MjIuaHRtbAogCiAtIEknbSBhYmFuZG9uaW5nIHRoZSBzeXN0ZW0gd2l0aCB0aGUgd2ViIHNpdGUgbWlycm9ycyAoYnV0IGtlZXBpbmcgZG93bmxvYWQKICAgZmlsZXMgYmluZyBtaXJyb3JlZCkgYW5kIHRodXMgSSd2ZSBjaGFuZ2VkIHRoZSBVUkwgaW4gdGhlIGNvb2tpZWphciBoZWFkZXIKQEAgLTI4NjEsNyArMjg2MSw3IEBACiAKIC0gQ29uc3RhbnRpbmUgU2FwdW50emFraXMgZml4ZWQgYSBidWcgd2hlbiBkb2luZyBwcm94eSBDT05ORUNUIHdpdGggdGhlIG11bHRpCiAgIGludGVyZmFjZSwgYW5kIHRoZSBwcm94eSB3b3VsZCBzZW5kIENvbm5lY3Rpb246IGNsb3NlIGR1cmluZyB0aGUKLSAgYXV0aGVudGljYXRpb24gcGhhc2UuICBodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yMDY5MDQ3CisgIGF1dGhlbnRpY2F0aW9uIHBoYXNlLiAgaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTIwNjkwNDcKIAogRGFuaWVsIEZhbmRyaWNoICgyMiBBdWcgMjAwOCkKIC0gRml4ZWQgYSBwcm9ibGVtIHdoZW4gLS1kdW1wLWhlYWRlciAtIHdhcyBnaXZlbiB3aXRoIG1vcmUgdGhhbiBvbmUgVVJMLApAQCAtMjk1OSwxMyArMjk1OSwxMyBAQAogCiBEYW5pZWwgU3RlbmJlcmcgKDExIEF1ZyAyMDA4KQogLSBDb25zdGFudGluZSBTYXB1bnR6YWtpcyBmaWxlZCBidWcgcmVwb3J0ICMyMDQyNDMwCi0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yMDQyNDMwKSB3aXRoIGEgcGF0Y2guICJOVExNIFdpbmRvd3MKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0yMDQyNDMwKSB3aXRoIGEgcGF0Y2guICJOVExNIFdpbmRvd3MKICAgU1NQSSBjb2RlIGlzIG5vdCB0aHJlYWQgc2FmZSIuIFRoaXMgd2FzIGR1ZSB0byBsaWJjdXJsIHVzaW5nIHN0YXRpYwogICB2YXJpYWJsZXMgdG8gdGVsbCB3ZXRoZXIgdG8gbG9hZCB0aGUgbmVjZXNzYXJ5IFNTUEkgRExMLCBidXQgbm93IHRoZSBsb2FkaW5nCiAgIGhhcyBiZWVuIG1vdmVkIHRvIHRoZSBtb3JlIHN1aXRhYmxlIGN1cmxfZ2xvYmFsX2luaXQoKSBjYWxsLgogCiAtIENvbnN0YW50aW5lIFNhcHVudHpha2lzIGZpbGVkIGJ1ZyByZXBvcnQgIzIwNDI0NDAKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTIwNDI0NDApIHdpdGggYSBwYXRjaC4gSGUgaWRlbnRpZmllZCBhCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjA0MjQ0MCkgd2l0aCBhIHBhdGNoLiBIZSBpZGVudGlmaWVkIGEKICAgcHJvYmxlbSB3aGVuIHVzaW5nIE5UTE0gb3ZlciBhIHByb3h5IGJ1dCB0aGUgZW5kLXBvaW50IGRvZXMgQmFzaWMsIGFuZCB0aGVuCiAgIGxpYmN1cmwgd291bGQgZG8gd3Jvbmcgd2hlbiB0aGUgaG9zdCBzZW50ICJDb25uZWN0aW9uOiBjbG9zZSIgYXMgdGhlIHByb3h5J3MKICAgTlRMTSBzdGF0ZSB3YXMgZXJyb25lb3VzbHkgY2xlYXJlZC4KQEAgLTMxMTUsNyArMzExNSw3IEBACiAKIERhbmllbCBTdGVuYmVyZyAoMjYgSnVsIDIwMDgpCiAtIERhdmlkIEJhdSBmaWxlZCBidWcgcmVwb3J0ICMyMDI2MjQwICJDVVJMX1JFQURGVU5DX1BBVVNFIGxlYWRzIHRvIGJ1ZmZlcgotICBvdmVycnVuIiAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjAyNjI0MCkgaWRlbnRpZnlpbmcgdHdvCisgIG92ZXJydW4iIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjAyNjI0MCkgaWRlbnRpZnlpbmcgdHdvCiAgIHByb2JsZW1zLCBhbmQgcHJvdmlkaW5nIHRoZSBmaXggZm9yIHRoZW06CiAKICAgLSBDVVJMX1JFQURGVU5DX1BBVVNFIGRpZCBpbiBmYWN0IG5vdCBwYXVzZSB0aGUgX3NlbmRpbmdfIG9mIGRhdGEgdGhhdCBpdCBpcwpAQCAtMzIwOCw3ICszMjA4LDcgQEAKIAogWWFuZyBUc2UgKDEwIEp1bCAyMDA4KQogLSBQZXRlciBMYW1iZXJnIGZpbGVkIGJ1ZyByZXBvcnQgIzIwMTUxMjY6ICJwb2xsIGdpdmVzIFdTQUVJTlZBTCB3aGVuIFBPTExQUkkKLSAgaXMgc2V0IGluIGZkc2V0LmV2ZW50cyIgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTIwMTUxMjYpIHdoaWNoCisgIGlzIHNldCBpbiBmZHNldC5ldmVudHMiIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MjAxNTEyNikgd2hpY2gKICAgZXhhY3RseSBwaW5wb2ludGVkIHRoZSBwcm9ibGVtIG9ubHkgdHJpZ2dlcmVkIG9uIFdpbmRvd3MgVmlzdGEsIHByb3ZpZGVkCiAgIHJlZmVyZW5jZSB0byBkb2NzIGFuZCBhbHNvIGEgZml4LiBUaGVyZSBpcyBtdWNoIHdvcmsgYmVoaW5kIFBldGVyIExhbWJlcmcncwogICBleGNlbGxlbnQgYnVnIHJlcG9ydC4gVGhhbmsgWW91IQpAQCAtMzI3Niw3ICszMjc2LDcgQEAKIAogWWFuZyBUc2UgKDI5IEp1biAyMDA4KQogLSBKb2huIExpZ2h0c2V5IGZpbGVkIGJ1ZyByZXBvcnQgIzE5OTkxODE6ICJDTE9DS19NT05PVE9OSUMgYWx3YXlzIGZhaWxzIG9uCi0gIHNvbWUgc3lzdGVtcyIgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE5OTkxODEpLiBUaGUgcHJvYmxlbSB3YXMKKyAgc29tZSBzeXN0ZW1zIiAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE5OTkxODEpLiBUaGUgcHJvYmxlbSB3YXMKICAgdGhhdCB0aGUgY29uZmlndXJlIHNjcmlwdCBkaWQgbm90IHVzZSB0aGUgX1BPU0lYX01PTk9UT05JQ19DTE9DSyBmZWF0dXJlIHRlc3QKICAgbWFjcm8gd2hlbiBjaGVja2luZyBtb25vdG9uaWMgY2xvY2sgYXZhaWxhYmlsaXR5LiBUaGlzIGlzIG5vdyBmaXhlZCBhbmQgdGhlCiAgIG1vbm90b25pYyBjbG9jayB3aWxsIG5vdCBiZSB1c2VkIHVubGVzcyB0aGUgZmVhdHVyZSB0ZXN0IG1hY3JvIGlzIGRlZmluZWQKQEAgLTMyOTAsNyArMzI5MCw3IEBACiAKIERhbmllbCBTdGVuYmVyZyAoMjIgSnVuIDIwMDgpCiAtIEVkdWFyZCBCbG9jaCBmaWxlZCB0aGUgZGViaWFuIGJ1ZyByZXBvcnQgIzQ4NzU2NwotICAoaHR0cDovL2J1Z3MuZGViaWFuLm9yZy9jZ2ktYmluL2J1Z3JlcG9ydC5jZ2k/YnVnPTQ4NzU2NykgcG9pbnRpbmcgb3V0IHRoYXQKKyAgKGh0dHBzOi8vYnVncy5kZWJpYW4ub3JnL2NnaS1iaW4vYnVncmVwb3J0LmNnaT9idWc9NDg3NTY3KSBwb2ludGluZyBvdXQgdGhhdAogICBsaWJjdXJsIHVzZWQgQ29udGVudC1SYW5nZTogaW5zdGVhZCBvZiBSYW5nZSB3aGVuIGRvaW5nIGEgcmFuZ2UgcmVxdWVzdCB3aXRoCiAgIC0taGVhZCAoQ1VSTE9QVF9OT0JPRFkpLiBUaGlzIGlzIG5vdyBmaXhlZCBhbmQgdGVzdCBjYXNlIDEwMzIgd2FzIGFkZGVkIHRvCiAgIHZlcmlmeS4KQEAgLTM0MjcsMTAgKzM0MjcsMTAgQEAKIC0gSmVmZiBXZWJlciByZXBvcnRlZCBtZW1vcnkgbGVha3Mgd2l0aCBhYm9ydGVkIFNDUCBhbmQgU0ZUUCB0cmFuc2ZlcnMgYW5kCiAgIHByb3ZpZGVkIGV4Y2VsbGVudCByZXBlYXQgcmVjaXBlcy4gSSBmaXhlZCB0aGUgY2FzZXMgSSBtYW5hZ2VkIHRvIHJlcHJvZHVjZQogICBidXQgSmVmZiBzdGlsbCBnb3Qgc29tZSAoU0NQKSBwcm9ibGVtcyBldmVuIGFmdGVyIHRoZXNlIGZpeGVzOgotICBodHRwOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMDgtMDUvMDM0Mi5odG1sCisgIGh0dHBzOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMDgtMDUvMDM0Mi5odG1sCiAKIERhbmllbCBTdGVuYmVyZyAoMjYgTWF5IDIwMDgpCi0tIEJ1ZyByZXBvcnQgIzE5NzMzNTIgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE5NzMzNTIpIGlkZW50aWZpZWQKKy0gQnVnIHJlcG9ydCAjMTk3MzM1MiAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE5NzMzNTIpIGlkZW50aWZpZWQKICAgaG93IHRoZSBIVFRQIHJlZGlyZWN0IGZvbGxvd2luZyBjb2RlIGRpZG4ndCBwcm9wZXJseSBmb2xsb3cgdG8gYSBuZXcgVVJMIGlmCiAgIHRoZSBuZXcgdXJsIHdhcyBidXQgYSBxdWVyeSBzdHJpbmcgc3VjaCBhcyAiTG9jYXRpb246ID9tb289Zm9vIi4gVGVzdCBjYXNlCiAgIDEwMzEgd2FzIGFkZGVkIHRvIHZlcmlmeSB0aGlzIGZpeC4KQEAgLTM0ODYsNyArMzQ4Niw3IEBACiAKIERhbmllbCBTdGVuYmVyZyAoNyBNYXkgMjAwOCkKIC0gTGlhbSBIZWFseSBmaWxlZCB0aGUgZGViaWFuIGJ1ZyByZXBvcnQgIzQ4MDA0NAotICAoaHR0cDovL2J1Z3MuZGViaWFuLm9yZy9jZ2ktYmluL2J1Z3JlcG9ydC5jZ2k/YnVnPTQ4MDA0NCkgaWRlbnRpZnlpbmcgYQorICAoaHR0cHM6Ly9idWdzLmRlYmlhbi5vcmcvY2dpLWJpbi9idWdyZXBvcnQuY2dpP2J1Zz00ODAwNDQpIGlkZW50aWZ5aW5nIGEKICAgc2VnZmF1bHQgd2hlbiB1c2luZyBrcmI1IGZ0cCwgYnV0IHRoZSBrcmI0IGNvZGUgaGFkIHRoZSBzYW1lIHByb2JsZW0uCiAKIFlhbmcgVHNlICg3IE1heSAyMDA4KQpAQCAtMzQ5OSw3ICszNDk5LDcgQEAKIAogRGFuaWVsIFN0ZW5iZXJnICgzIE1heSAyMDA4KQogLSBCZW4gVmFuIEhvZiBmaWxlZCBidWcgcmVwb3J0ICMxOTQ1MjQwOiAibGliY3VybCBzb21ldGltZXMgc2VuZHMgYm9keSB0d2ljZQotICB3aGVuIHVzaW5nIENVUkxfQVVUSF9BTlkiIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xOTQ1MjQwKS4KKyAgd2hlbiB1c2luZyBDVVJMX0FVVEhfQU5ZIiAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE5NDUyNDApLgogICBUaGUgcHJvYmxlbSB3YXMgdGhhdCB3aGVuIGxpYmN1cmwgcmV3b3VuZCBhIHN0cmVhbSBtZWFudCBmb3IgdXBsb2FkIHdoZW4gaXQKICAgd291bGQgcHJlcGFyZSBmb3IgYSBzZWNvbmQgcmVxdWVzdCwgaXQgY291bGQgYWNjaWRlbnRhbGx5IGNvbnRpbnVlIHRoZQogICBzZW5kaW5nIG9mIHRoZSByZXdvdW5kIGRhdGEgb24gdGhlIGZpcnN0IHJlcXVlc3QgaW5zdGVhZCBvZiBvbiB0aGUgc2Vjb25kLgpAQCAtMzUxMCw3ICszNTEwLDcgQEAKICAgc2luY2UgbGliY3VybCB1c2VkIGdldHByb3RvYnluYW1lKCkgYW5kIHRoYXQgaXNuJ3QgdGhyZWFkLXNhZmUuIFdlIG5vdwogICBzd2l0Y2hlZCB0byB1c2UgSVBQUk9UT19UQ1AgdW5jb25kaXRpb25hbGx5LCBidXQgcGVyaGFwcyB0aGUgcHJvcGVyIGZpeCBpcwogICB0byBkZXRlY3QgdGhlIHRocmVhZC1zYWZlIHZlcnNpb24gb2YgdGhlIGZ1bmN0aW9uIGFuZCB1c2UgdGhhdC4KLSAgaHR0cDovL2N1cmwuaGF4eC5zZS9tYWlsL2xpYi0yMDA4LTA1LzAwMTEuaHRtbAorICBodHRwczovL2N1cmwuaGF4eC5zZS9tYWlsL2xpYi0yMDA4LTA1LzAwMTEuaHRtbAogCiBEYW5pZWwgU3RlbmJlcmcgKDEgTWF5IDIwMDgpCiAtIEJhcnQgV2hpdGVsZXkgcHJvdmlkZWQgYSBwYXRjaCB0aGF0IG1hZGUgbGliY3VybCB3b3JrIHByb3Blcmx5IHdoZW4gYW4gYXBwCkBAIC0zNTM0LDkgKzM1MzQsOSBAQAogCiBEYW5pZWwgU3RlbmJlcmcgKDI4IEFwciAyMDA4KQogLSBOb3JiZXJ0IEZyZXNlIGZpbGVkIGJ1ZyByZXBvcnQgIzE5NTE1ODg6ICJQcm9ibGVtIHdpdGggY3VybGZ0cGZzIGFuZAotICBsaWJjdXJsIiAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTk1MTU4OCkgd2hpY2ggc2VlbXMgdG8gYmUgYW4KKyAgbGliY3VybCIgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xOTUxNTg4KSB3aGljaCBzZWVtcyB0byBiZSBhbgogICBpZGVudGljYWwgcmVwb3J0IHRvIHdoYXQgRGVuaXMgR29sb3ZhbiByZXBvcnRlZCBpbgotICBodHRwOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMDgtMDIvMDEwOC5odG1sIFRoZSBGVFAgY29kZSBkaWRuJ3QgcmVzZXQgdGhlCisgIGh0dHBzOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMDgtMDIvMDEwOC5odG1sIFRoZSBGVFAgY29kZSBkaWRuJ3QgcmVzZXQgdGhlCiAgIHVzZXIvcGFzc3dvcmQgcG9pbnRlcnMgcHJvcGVybHkgZXZlbiB0aG91Z2ggdGhlcmUgbWlnaHQndmUgYmVlbiBhIG5ldwogICBzdHJ1Y3QvY2Nvbm5lY3Rpb24gZ2V0dGluZyB1c2VkLgogCkBAIC0zNTQ0LDggKzM1NDQsOCBAQAogLSBSZXZlcnRlZCBiYWNrIHRvIHVzZSBhdXRvbWFrZSAxLjkuNiBpbiB0aGUgbmV4dCByZWxlYXNlIChmcm9tIGF1dG9tYWtlCiAgIDEuMTAuMSkgc2luY2UgaXQgKnN0aWxsKiBzdWZmZXJzIGZyb20gU29sYXJpcy1yZWxhdGVkIGJ1Z3MuIE91ciBwcmV2aW91cwogICBhdXRvbWFrZSAxLjEwIHByb2JsZW0gd2FzIHJlcG9ydGVkIGluIGJ1ZyAjMTcwMTM2MAotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTcwMTM2MCkgYW5kIHRoaXMgcmVjZW50IHByb2JsZW0gd2FzCi0gIGJ1ZyAjMTk0NDgyNSAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTk0NDgyNSkuIEkgaGF2ZSBub3QKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNzAxMzYwKSBhbmQgdGhpcyByZWNlbnQgcHJvYmxlbSB3YXMKKyAgYnVnICMxOTQ0ODI1IChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTk0NDgyNSkuIEkgaGF2ZSBub3QKICAgcGVyc29uYWxseSBhcHByb2FjaGVkIHRoZSBhdXRvbWFrZSB0ZWFtIGFib3V0IGVpdGhlciBvbmUgb2YgdGhlc2UgYnV0IEkKICAgZmlndXJlIHdlIG5lZWQgYSBTb2xhcmlzIDEwIGd1eSB0byBkbyBpdCEKIApAQCAtMzU2OSw3ICszNTY5LDcgQEAKIAogTWljaGFsIE1hcmVrICgxNCBBcHIgMjAwOCkKIC0gYWxsb3cgZGlzYWJsaW5nIHRoZSB0eXBlY2hlY2tlciBieSBkZWZpbmluZyBDVVJMX0RJU0FCTEVfVFlQRUNIRUNLLCBhcwotICBkaXNjdXNzZWQgaW4gaHR0cDovL2N1cmwuaGF4eC5zZS9tYWlsL2xpYi0yMDA4LTA0LzAyOTEuaHRtbAorICBkaXNjdXNzZWQgaW4gaHR0cHM6Ly9jdXJsLmhheHguc2UvbWFpbC9saWItMjAwOC0wNC8wMjkxLmh0bWwKIAogRGFuaWVsIFN0ZW5iZXJnICgxNCBBcHIgMjAwOCkKIC0gU3RlZmFuIEtyYXVzZSByZXBvcnRlZCBhIGNhc2Ugd2hlcmUgdGhlIE9wZW5TU0wgaGFuZHNoYWtlIHBoYXNlIHdhc24ndApAQCAtMzU4MCw3ICszNTgwLDcgQEAKICAgcmV0dXJuIGNvZGUgaW4gdGhlIE5lZ290aWF0ZSBjb2RlLgogCiAtIFNhbmRvciBGZWxkaSByZXBvcnRlZCBidWcgIzE5NDIwMjIKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE5NDIwMjIpIHBvaW50aW5nIG91dCBhIG1pc3Rha2UgaW4gdGhlCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTk0MjAyMikgcG9pbnRpbmcgb3V0IGEgbWlzdGFrZSBpbiB0aGUKICAgbGliL01ha2VmaWxlLnZjWzY4XSBtYWtlZmlsZXMnIHJlbGVhc2Utc3NsLWRsbCB0YXJnZXQuCiAKIC0gQnJvY2sgTm9sYW5kIHJlcG9ydGVkIHRoYXQgY3VybCBiZWhhdmVkIGRpZmZlcmVudGx5IGRlcGVuZGluZyBvbiB3aGljaCBvcmRlcgpAQCAtMzcwOCw3ICszNzA4LDcgQEAKIAogRGFuaWVsIFN0ZW5iZXJnICgxMSBNYXIgMjAwOCkKIC0gRG1pdHJ5IFBvcG92IGZpbGVkIGJ1ZyByZXBvcnQgIzE5MTEwNjkKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE5MTEwNjkpIHRoYXQgaWRlbnRpZmllZCBhIHJhY2UKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xOTExMDY5KSB0aGF0IGlkZW50aWZpZWQgYSByYWNlCiAgIGNvbmRpdGlvbiBpbiB0aGUgbmFtZSByZXNvbHZlciBjb2RlIHdoZW4gdGhlIEROUyBjYWNoZSBpcyBzaGFyZWQgYmV0d2VlbgogICBtdWx0aXBsZSBlYXN5IGhhbmRsZXMsIGVhY2ggcnVubmluZyBpbiBzaW11bHRhbmVvdXMgdGhyZWFkcyB0aGF0IGNvdWxkIGNhdXNlCiAgIGNyYXNoZXMuCkBAIC0zNzIwLDggKzM3MjAsOCBAQAogCiBNaWNoYWwgTWFyZWsgKDExIE1hciAyMDA4KQogLSBBZGRlZCBhIHR5cGUgY2hlY2tpbmcgbWFjcm8gZm9yIGN1cmxfZWFzeV9zZXRvcHQoKSwgbmVlZHMgZ2NjLTQuMyBhbmQgb25seQotICB3b3JrcyBpbiBDIG1vZGUgYXRtIChodHRwOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMDgtMDIvMDI2Ny5odG1sICwKLSAgaHR0cDovL2N1cmwuaGF4eC5zZS9tYWlsL2xpYi0yMDA4LTAyLzAyOTIuaHRtbCApCisgIHdvcmtzIGluIEMgbW9kZSBhdG0gKGh0dHBzOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMDgtMDIvMDI2Ny5odG1sICwKKyAgaHR0cHM6Ly9jdXJsLmhheHguc2UvbWFpbC9saWItMjAwOC0wMi8wMjkyLmh0bWwgKQogCiBEYW5pZWwgRmFuZHJpY2ggKDEwIE1hciAyMDA4KQogLSBBZGRlZCB0ZXN0cyA2MTgtNjIxIHRvIHRlc3QgU0ZUUC9TQ1AgdHJhbnNmZXJzIG9mIG1vcmUgdGhhbiBvbmUgZmlsZQpAQCAtMzc2OCw3ICszNzY4LDcgQEAKIAogRGFuaWVsIFMgKDIzIEZlYiAyMDA4KQogLSBTYW0gTGlzdG9wYWQgcHJvdmlkZWQgYSBwYXRjaCBpbiBmZWF0dXJlLXJlcXVlc3QgIzE5MDAwMTQKLSAgaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvZmVhdHVyZS5jZ2k/aWQ9MTkwMDAxNCB0aGF0IG1ha2VzIGxpYmN1cmwgKGJ1aWx0IHRvCisgIGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy9mZWF0dXJlLmNnaT9pZD0xOTAwMDE0IHRoYXQgbWFrZXMgbGliY3VybCAoYnVpbHQgdG8KICAgdXNlIE9wZW5TU0wpIHN1cHBvcnQgYSBmdWxsIGNoYWluIG9mIGNlcnRpZmljYXRlcyBpbiBhIGdpdmVuIFBLQ1MxMgogICBjZXJ0aWZpY2F0ZS4KIApAQCAtMzc4MCw3ICszNzgwLDcgQEAKIC0gWm1leSBQZXRyb2ZmIGZvdW5kIGEgY3Jhc2ggd2hlbiBsaWJjdXJsIGFjY2Vzc2VkIGEgTlVMTCBwb2ludGVyLCB3aGljaAogICBoYXBwZW5lZCBpZiB5b3Ugc2V0IHRoZSBjb25uZWN0aW9uIGNhY2hlIHNpemUgdG8gMSBhbmQgZm9yIGV4YW1wbGUgZmFpbGVkIHRvCiAgIGxvZ2luIHRvIGFuIEZUUCBzaXRlLiBCdWcgcmVwb3J0ICMxODk2Njk4Ci0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xODk2Njk4KQorICAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE4OTY2OTgpCiAKIERhbmllbCBTICgyMCBGZWIgMjAwOCkKIC0gRml4ZWQgdGVzdCBjYXNlIDQwNSB0byBub3QgZmFpbCB3aGVuIGxpYmN1cmwgaXMgYnVpbHQgd2l0aCBHbnVUTFMKQEAgLTM4MTEsNyArMzgxMSw3IEBACiBEYW5pZWwgUyAoMTggRmViIDIwMDgpCiAtIFdlJ3JlIG5vIGxvbmdlciBwcm92aWRpbmcgYSB2ZXJ5IG9sZCBjYS1idW5kbGUgaW4gdGhlIGN1cmwgdGFyYmFsbC4gWW91IGNhbgogICBnZXQgYSBmcmVzaCBvbmUgZG93bmxvYWRlZCBhbmQgY3JlYXRlZCB3aXRoICdtYWtlIGNhLWJ1bmRsZScgb3IgeW91IGNhbiBnZXQKLSAgb25lIGZyb20gaGVyZSA9PiBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY2FleHRyYWN0Lmh0bWwgaWYgeW91IHdhbnQgYSBmcmVzaAorICBvbmUgZnJvbSBoZXJlID0+IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY2FleHRyYWN0Lmh0bWwgaWYgeW91IHdhbnQgYSBmcmVzaAogICBuZXcgb25lIGV4dHJhY3RlZCBmcm9tIE1vemlsbGEncyByZWNlbnQgbGlzdCBvZiBjYSBjZXJ0cy4KIAogICBUaGUgY29uZmlndXJlIG9wdGlvbiAtLXdpdGgtY2EtYnVuZGxlIG5vdyBsZXRzIHlvdSBzcGVjaWZ5IHdoYXQgZmlsZSB0byB1c2UKQEAgLTM4NDYsNyArMzg0Niw3IEBACiAgIHByb2JsZW1zIGJ1dCBub3cgdGhleSBzaG91bGQgYmUgZml4ZWQuCiAKIFlhbmcgVHNlICgxMCBGZWIgMjAwOCkKLS0gQnVnIHJlcG9ydCAjMTg4ODkzMiAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTg4ODkzMikgcG9pbnRzIG91dAorLSBCdWcgcmVwb3J0ICMxODg4OTMyIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTg4ODkzMikgcG9pbnRzIG91dAogICBhbmQgcHJvdmlkZXMgdGVzdCBwcm9ncmFtIHRoYXQgZGVtb25zdHJhdGVzIHRoYXQgbGliY3VybCBtaWdodCBub3Qgc2V0IGVycm9yCiAgIGRlc2NyaXB0aW9uIG1lc3NhZ2UgZm9yIGVycm9yIENVUkxFX0NPVUxETlRfUkVTT0xWRV9IT1NUIGZvciBXaW5kb3dzIHRocmVhZGVkCiAgIG5hbWUgcmVzb2x2ZXIgYnVpbGRzLiBGaXhlZCBub3cuCkBAIC0zODU3LDcgKzM4NTcsNyBAQAogCiBEYW5pZWwgUyAoOCBGZWIgMjAwOCkKIC0gTWlrZSBIb21tZXkgZmlsZWQgYW5kIGZpeGVkIGJ1ZyByZXBvcnQgIzE4ODk4NTYKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE4ODk4NTYpOiBXaGVuIHVzaW5nIHRoZSBnbnV0bHMgc3NsCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTg4OTg1Nik6IFdoZW4gdXNpbmcgdGhlIGdudXRscyBzc2wKICAgbGF5ZXIsIGNsZWFuaW5nLXVwIGFuZCByZWluaXRpYWxpemluZyBjdXJsIGVuZHMgdXAgd2l0aCBodHRwcyByZXF1ZXN0cwogICBmYWlsaW5nIHdpdGggIkFTTjEgcGFyc2VyOiBFbGVtZW50IHdhcyBub3QgZm91bmQiIGVycm9ycy4gT2J2aW91c2x5IGEKICAgcmVncmVzc2lvbiBhZGRlZCBpbiA3LjE2LjMuCkBAIC0zODk2LDcgKzM4OTYsNyBAQAogRGFuaWVsIFMgKDMxIEphbiAyMDA4KQogLSBOaWtsYXMgQW5nZWJyYW5kIG1hZGUgdGhlIGNvb2tpZSBzdXBwb3J0IGluIGxpYmN1cmwgcHJvcGVybHkgZGVhbCB3aXRoIHRoZQogICAiSHR0cE9ubHkiIGZlYXR1cmUgaW50cm9kdWNlZCBieSBNaWNyb3NvZnQgYW5kIGFwcGFyZW50bHkgYWxzbyBzdXBwb3J0ZWQgYnkKLSAgRmlyZWZveDogaHR0cDovL21zZG4yLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9tczUzMzA0Ni5hc3B4IC4gSHR0cE9ubHkKKyAgRmlyZWZveDogaHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9tczUzMzA0Ni5hc3B4IC4gSHR0cE9ubHkKICAgaXMgbm93IHN1cHBvcnRlZCB3aGVuIHJlY2VpdmVkIGZyb20gc2VydmVycyBpbiBIVFRQIGhlYWRlcnMsIHdoZW4gd3JpdHRlbiB0bwogICBjb29raWUgamFycyBhbmQgd2hlbiByZWFkIGZyb20gZXhpc3RpbmcgY29va2llIGphcnMuCiAKQEAgLTM5MjMsNyArMzkyMyw3IEBACiAKIERhbmllbCBTICgyNiBKYW4gMjAwOCkKIC0gS2V2aW4gUmVlZCBmaWxlZCBidWcgcmVwb3J0ICMxODc5Mzc1Ci0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xODc5Mzc1KSB3aGljaCBkZXNjcmliZXMgaG93IGxpYmN1cmwKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xODc5Mzc1KSB3aGljaCBkZXNjcmliZXMgaG93IGxpYmN1cmwKICAgZ290IGxvc3QgaW4gdGhpcyBzY2VuYXJpbzogcHJveHkgdHVubmVsIChvciBIVFRQUyBvdmVyIHByb3h5KSwgYXNrIHRvIGRvIGFueQogICBwcm94eSBhdXRoZW50aWNhdGlvbiBhbmQgdGhlIHByb3h5IHJlcGxpZXMgd2l0aCBhbiBhdXRoIChsaWtlIE5UTE0pIGFuZCB0aGVuCiAgIGNsb3NlcyB0aGUgY29ubmVjdGlvbiBhZnRlciB0aGF0IGluaXRpYWwgaW5mb3JtYXRpb25hbCByZXNwb25zZS4KQEAgLTM5ODYsNyArMzk4Niw3IEBACiAKIERhbmllbCBTICgxNCBKYW4gMjAwOCkKIC0gSm9lIE1hbGlja2kgZmlsZWQgYnVnIHJlcG9ydCAjMTg3MTI2OQotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTg3MTI2OSkgYW5kIHdlIGNvdWxkIGZpeCBoaXMgaGFuZy0KKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xODcxMjY5KSBhbmQgd2UgY291bGQgZml4IGhpcyBoYW5nLQogICBwcm9ibGVtIHRoYXQgb2NjdXJyZWQgd2hlbiBkb2luZyBhIGxhcmdlIEhUVFAgUE9TVCByZXF1ZXN0IHdpdGggdGhlCiAgIHJlc3BvbnNlLWJvZHkgcmVhZCBmcm9tIGEgY2FsbGJhY2suCiAKQEAgLTQwMzAsNyArNDAzMCw3IEBACiAgIGRvaW5nIG11bHRpLXN0YWdlIEhUVFAgYXV0aCB3aXRoIFBPU1QvUFVULgogCiAtIE5pa2l0aW5za2l0IERtaXRyaXkgZmlsZWQgYnVnIHJlcG9ydCAjMTg2ODI1NQotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTg2ODI1NSkgd2l0aCBhIHBhdGNoLiBJdCBpZGVudGlmaWVzCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTg2ODI1NSkgd2l0aCBhIHBhdGNoLiBJdCBpZGVudGlmaWVzCiAgIGFuZCBmaXhlcyBhIHByb2JsZW0gd2l0aCBwYXJzaW5nIFdXVy1BdXRoZW50aWNhdGU6IGhlYWRlcnMgd2l0aCBhZGRpdGlvbmFsCiAgIHNwYWNlcyBpbiB0aGUgbGluZSB0aGF0IHRoZSBwYXJzZXIgd2Fzbid0IHdyaXR0ZW4gdG8gZGVhbCB3aXRoLgogCkBAIC00MDQxLDcgKzQwNDEsNyBAQAogCiBEYW5pZWwgUyAoNiBKYW4gMjAwOCkKIC0gSmVmZiBKb2huc29uIGZpbGVkIGJ1ZyByZXBvcnQgIzE4NjMxNzEKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE4NjMxNzEpIHdoZXJlIGhlIHBvaW50ZWQgb3V0IHRoYXQKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xODYzMTcxKSB3aGVyZSBoZSBwb2ludGVkIG91dCB0aGF0CiAgIGxpYmN1cmwncyBkYXRlIHBhcnNlciBkaWRuJ3QgYWNjZXB0IGEgKzEzMDAgdGltZSB6b25lIHdoaWNoIGFjdHVhbGx5IGlzIHVzZWQKICAgZmFpcmx5IG9mdGVuIChsaWtlIE5ldyBaZWFsYW5kJ3MgRGFpbGlnaHQgU2F2aW5ncyBUaW1lKSwgc28gSSBtb2RpZmllZCB0aGUKICAgcGFyc2VyIHRvIG5vdyBhY2NlcHQgdXAgdG8gYW5kIGluY2x1ZGluZyAtMTQwMCB0byArMTQwMC4KQEAgLTQwOTcsMTMgKzQwOTcsMTMgQEAKIAogRGFuaWVsIFMgKDI3IERlYyAyMDA3KQogLSBEbWl0cnkgS3Vyb2Noa2luIG1lbnRpb25lZCBhIGZsYXcKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC9saWItMjAwNy0xMi8wMjUyLmh0bWwpIGluIGRldGVjdF9wcm94eSgpIHdoaWNoCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9tYWlsL2xpYi0yMDA3LTEyLzAyNTIuaHRtbCkgaW4gZGV0ZWN0X3Byb3h5KCkgd2hpY2gKICAgZmFpbGVkIHRvIHNldCB0aGUgYml0cy5wcm94eSB2YXJpYWJsZSBwcm9wZXJseSB3aGVuIGFuIGVudmlyb25tZW50IHZhcmlhYmxlCiAgIHRvbGQgbGliY3VybCB0byB1c2UgYSBodHRwIHByb3h5LgogCiBEYW5pZWwgUyAoMjYgRGVjIDIwMDcpCiAtIEluIGFuIGF0dGVtcHQgdG8gcmVwZWF0IHRoZSBwcm9ibGVtIGluIGJ1ZyByZXBvcnQgIzE4NTA3MzAKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE4NTA3MzApIEkgd3JvdGUgdXAgdGVzdCBjYXNlIDU1Mi4gVGhlCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTg1MDczMCkgSSB3cm90ZSB1cCB0ZXN0IGNhc2UgNTUyLiBUaGUKICAgdGVzdCBpcyBkb2luZyBhIDcwSyBQT1NUIHdpdGggYSByZWFkIGNhbGxiYWNrIGFuZCBhbiBpb2N0bCBjYWxsYmFjayBvdmVyIGEKICAgcHJveHkgcmVxdWlyaW5nIERpZ2VzdCBhdXRoLiBUaGUgdGVzdCBjYXNlIGNvZGUgaXMgbW9yZSBvciBsZXNzIGlkZW50aWNhbCB0bwogICB0aGUgdGVzdCByZWNpcGUgY29kZSBwcm92aWRlZCBieSBTcGFjZW4gSmFzc2V0ICh3aG8gc3VibWl0dGVkIHRoZSBidWcKQEAgLTQxMTEsNyArNDExMSw3IEBACiAKIERhbmllbCBTICgyNSBEZWMgMjAwNykKIC0gR2FyeSBNYXh3ZWxsIGZpbGVkIGJ1ZyByZXBvcnQgIzE4NTY2MjgKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE4NTY2MjgpIGFuZCBwcm92aWRlZCBhIGZpeCBmb3IgdGhlCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTg1NjYyOCkgYW5kIHByb3ZpZGVkIGEgZml4IGZvciB0aGUKICAgKHNtYWxsKSBtZW1vcnkgbGVhayBpbiB0aGUgU1NMIHNlc3Npb24gSUQgY2FjaGluZyBjb2RlLiBJdCBoYXBwZW5lZCB3aGVuIGEKICAgcHJldmlvdXMgZW50cnkgaW4gdGhlIGNhY2hlIHdhcyByZS11c2VkLgogCkBAIC00MTI1LDcgKzQxMjUsNyBAQAogICBpZiBubyBidWlsZCB0YXJnZXQgaGFzIGJlZW4gZGVmaW5lZCB3ZSB3aWxsIHRhcmdldCBXaW5YUCB3aGVuIGJ1aWxkaW5nCiAgIGN1cmwvbGliY3VybCB3aXRoIE1TVkMgOS4wIChWUzIwMDgpLgogCi0tIChodHRwOi8vY3VybC5oYXh4LnNlL21haWwvYXJjaGl2ZS0yMDA3LTEyLzAwMzkuaHRtbCkgcmVwb3J0ZWQgYW5kIGZpeGVkCistIChodHRwczovL2N1cmwuaGF4eC5zZS9tYWlsL2FyY2hpdmUtMjAwNy0xMi8wMDM5Lmh0bWwpIHJlcG9ydGVkIGFuZCBmaXhlZAogICBhIGZpbGUgdHJ1bmNhdGlvbiBwcm9ibGVtIG9uIFdpbmRvd3MgYnVpbGQgdGFyZ2V0cyB0cmlnZ2VyZWQgd2hlbiByZXRyeWluZwogICBhIGRvd25sb2FkIHdpdGggY3VybC4KIApAQCAtNDEzNiw3ICs0MTM2LDcgQEAKIAogRGFuaWVsIFMgKDEzIERlYyAyMDA3KQogLSBEYXZpZCBXcmlnaHQgZmlsZWQgYnVnIHJlcG9ydCAjMTg0OTc2NAotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTg0OTc2NCkgd2l0aCBhbiBpbmNsdWRlZCBmaXguIEhlCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTg0OTc2NCkgd2l0aCBhbiBpbmNsdWRlZCBmaXguIEhlCiAgIGlkZW50aWZpZWQgYSBwcm9ibGVtIGZvciByZS11c2VkIGNvbm5lY3Rpb25zIHRoYXQgcHJldmlvdXNseSBoYWQgc2VudAogICBFeHBlY3Q6IDEwMC1jb250aW51ZSBhbmQgaW4gc29tZSBzaXR1YXRpb25zIHRoZSBzdWJzZXF1ZW50IFBPU1QgKHRoYXQgZGlkbid0CiAgIHVzZSBFeHBlY3Q6KSBzdGlsbCBoYWQgdGhlIGludGVybmFsIGZsYWcgc2V0IGZvciBpdHMgdXNlLiBEYXZpZCdzIGZpeCAodGhhdApAQCAtNDE0OSw3ICs0MTQ5LDcgQEAKIAogRGFuaWVsIFMgKDkgRGVjIDIwMDcpCiAtIEFuZHJldyBNb2lzZSBmaWxlZCBidWcgcmVwb3J0ICMxODQ3NTAxCi0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xODQ3NTAxKSBhbmQgcG9pbnRlZCBvdXQgYSBtZW1jcHkoKQorICAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE4NDc1MDEpIGFuZCBwb2ludGVkIG91dCBhIG1lbWNweSgpCiAgIHRoYXQgc2hvdWxkIGJlIG1lbW1vdmUoKSBpbiB0aGUgY29udmVydF9saW5lZW5kcygpIGZ1bmN0aW9uLgogCiBEYW5pZWwgUyAoOCBEZWMgMjAwNykKQEAgLTQxNzgsNyArNDE3OCw3IEBACiAKIERhbmllbCBTICgzIERlYyAyMDA3KQogLSBSYXkgUGVrb3dza2kgZmlsZWQgYnVnIHJlcG9ydCAjMTg0MjAyOQotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTg0MjAyOSkgaW4gd2hpY2ggaGUgaWRlbnRpZmllZCBhCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTg0MjAyOSkgaW4gd2hpY2ggaGUgaWRlbnRpZmllZCBhCiAgIHByb2JsZW0gd2l0aCBTU0wgc2Vzc2lvbiBjYWNoaW5nIHRoYXQgcHJldmVudCBpdCBmcm9tIHdvcmtpbmcsIGFuZCBwcm92aWRlZAogICB0aGUgYXNzb2NpYXRlZCBmaXghCiAKQEAgLTQyNjMsNyArNDI2Myw3IEBACiAgIGNhbGxiYWNrIHdhcyB1c2VkLCBhcyBpdCBjb3VsZCB3cm9uZ2x5IHBhc3Mgb24gYSBiYWQgc2l6ZSBmb3IgdGhlIG91dGdvaW5nCiAgIEhUVFAgaGVhZGVyLiBUaGUgYmFkIHNpemUgd291bGQgYmUgYSB2ZXJ5IGxhcmdlIHZhbHVlIGFzIGl0IHdhcyBhIHdyYXBwZWQKICAgc2l6ZV90IGNvbnRlbnQuIFRoaXMgaGFwcGVuZWQgd2hlbiB0aGUgd2hvbGUgSFRUUCByZXF1ZXN0IGZhaWxlZCB0byBnZXQgc2VudAotICBpbiBvbmUgc2luZ2xlIHNlbmQuICBodHRwOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMDctMTEvMDE2NS5odG1sCisgIGluIG9uZSBzaW5nbGUgc2VuZC4gIGh0dHBzOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMDctMTEvMDE2NS5odG1sCiAKIERhbmllbCBTICgxNSBOb3YgMjAwNykKIC0gRml4ZWQgeWV0IGFub3RoZXIgcmVtYWluaW5nIHByb2JsZW0gd2l0aCBkb2luZyBTRlRQIGRpcmVjdG9yeSBsaXN0aW5ncyBvbiBhCkBAIC00MjgyLDcgKzQyODIsNyBAQAogICBwZXJzaXN0ZW50IGNvbm5lY3Rpb24uIE1lbnRpb25lZCBieSBJbW1hbnVlbCBHcmVnb2lyZSBvbiB0aGUgbWFpbGluZyBsaXN0LgogCiBEYW5pZWwgUyAoMTIgTm92IDIwMDcpCi0tIEJ1ZyByZXBvcnQgIzE4MzA2MzcgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE4MzA2MzcpLCB3aGljaCB3YXMKKy0gQnVnIHJlcG9ydCAjMTgzMDYzNyAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE4MzA2MzcpLCB3aGljaCB3YXMKICAgZm9yd2FyZGVkIGZyb20gdGhlIEdlbnRvbyBidWcgdHJhY2tlciBieSBEYW5pZWwgQmxhY2sgYW5kIHdhcyBvcmlnaW5hbGx5CiAgIHN1Ym1pdHRlZCBieSBSb2JpbiBKb2huc29uLCBwb2ludGVkIG91dCB0aGF0IGxpYmN1cmwgd291bGQgZG8gYmFkIG1lbW9yeQogICByZWZlcmVuY2VzIHdoZW4gaXQgZmFpbGVkIGFuZCBiYWlsZWQgb3V0IGJlZm9yZSB0aGUgaGFuZGxlciB0aGluZyB3YXMKQEAgLTQyOTEsMTIgKzQyOTEsMTIgQEAKICAgbWVtYmVyLgogCiBZYW5nIFRzZSAoMTAgTm92IDIwMDcpCi0tIFZpa3JhbSBTYXhlbmEgKGh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC9saWItMjAwNy0xMS8wMDk2Lmh0bWwpIHBvaW50ZWQgb3V0CistIFZpa3JhbSBTYXhlbmEgKGh0dHBzOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMDctMTEvMDA5Ni5odG1sKSBwb2ludGVkIG91dAogICB0aGF0IHRoZSBwb2xsZmQgc3RydWN0IHdhcyBiZWluZyBtdWx0aSBkZWZpbmVkIHdoZW4gdXNpbmcgVlMyMDA4LiBUaGlzIGlzCiAgIG5vdyBmaXhlZCBpbiAvY3VybC9saWIvc2VsZWN0LmgKIAogRGFuaWVsIFMgKDggTm92IDIwMDcpCi0tIEJ1ZyByZXBvcnQgIzE4MjM0ODcgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE4MjM0ODcpIHBvaW50ZWQKKy0gQnVnIHJlcG9ydCAjMTgyMzQ4NyAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE4MjM0ODcpIHBvaW50ZWQKICAgb3V0IHRoYXQgU0ZUUCByZXF1ZXN0cyBkaWRuJ3QgdXNlIHBlcnNpc3RlbnQgY29ubmVjdGlvbnMuIE5laXRoZXIgZGlkIFNDUAogICBvbmVzLiAgSSBnYXZlIHRoZSBTU0ggY29kZSBhIGdvb2QgYmVhdGluZyBhbmQgbm93IGJvdGggU0NQIGFuZCBTRlRQIHNob3VsZAogICB1c2UgcGVyc2lzdGVudCBjb25uZWN0aW9ucyBmaW5lLiBJIGFsc28gZGlkIGEgYnVuY2ggb2YgaW5kZW50IGNoYW5nZXMgYXMKQEAgLTQzMDgsNyArNDMwOCw3IEBACiAgIGlzIG5vdyBhcyBsaXR0bGUgYXMgb25lIHBlciBzZWdtZW50LgogCiBZYW5nIFRzZSAoNiBOb3YgMjAwNykKLS0gQnVnIHJlcG9ydCAjMTgyNDg5NCAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTgyNDg5NCkgcG9pbnRlZAorLSBCdWcgcmVwb3J0ICMxODI0ODk0IChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTgyNDg5NCkgcG9pbnRlZAogICBvdXQgYSBwcm9ibGVtIGluIGN1cmwuaCB3aGVuIGJ1aWxkaW5nIEMrKyBhcHBzIHdpdGggTVNWQy4gVG8gZml4IGl0LCB0aGUKICAgaW5jbHVzaW9uIG9mIGhlYWRlciBmaWxlcyBpbiBjdXJsLmggaXMgbW92ZWQgb3V0c2lkZSBvZiB0aGUgQysrIGV4dGVybiAiQyIKICAgbGlua2FnZSBibG9jay4KQEAgLTQzODMsNyArNDM4Myw3IEBACiAgIGFjY29yZGluZ2x5LgogCiBEYW5pZWwgUyAoMjMgT2N0b2JlciAyMDA3KQotLSBCdWcgcmVwb3J0ICMxODEyMTkwIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xODEyMTkwKSBwb2ludHMgb3V0CistIEJ1ZyByZXBvcnQgIzE4MTIxOTAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xODEyMTkwKSBwb2ludHMgb3V0CiAgIHRoYXQgbGliY3VybCB0cmllZCB0byByZS11c2UgY29ubmVjdGlvbnMgYSBiaXQgdG9vIG11Y2ggd2hlbiB1c2luZyBub24tU1NMCiAgIHByb3RvY29scyB0dW5uZWxlZCBvdmVyIGEgSFRUUCBwcm94eS4KIApAQCAtNDQwNSw3ICs0NDA1LDcgQEAKICAgQSBsb25nLXRlcm0gZ29hbCBpcyBvZiBjb3Vyc2UgdG8gc29tZWhvdyBnZXQgcmlkIG9mIGhvdyB0aGUgcmVxZGF0YSBzdHJ1Y3QKICAgaXMgdXNlZCwgYXMgaXQgaXMgdG9vIGVycm9yLXByb25lLgogCi0tIEJ1ZyByZXBvcnQgIzE4MTU1MzAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE4MTU1MzApIHBvaW50cyBvdXQKKy0gQnVnIHJlcG9ydCAjMTgxNTUzMCAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE4MTU1MzApIHBvaW50cyBvdXQKICAgdGhhdCBzcGVjaWZ5aW5nIGEgcHJveHkgd2l0aCBhIHRyYWlsaW5nIHNsYXNoIGRpZG4ndCB3b3JrICh1bmxlc3MgaXQgYWxzbwogICBjb250YWluZWQgYSBwb3J0IG51bWJlcikuCiAKQEAgLTQ1NzQsNyArNDU3NCw3IEBACiBWZXJzaW9uIDcuMTcuMCAoMTMgU2VwdGVtYmVyIDIwMDcpCiAKIERhbmllbCBTICgxMiBTZXB0ZW1iZXIgMjAwNykKLS0gQnVnIHJlcG9ydCAjMTc5MjY0OSAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTc5MjY0OSkgcG9pbnRlZAorLSBCdWcgcmVwb3J0ICMxNzkyNjQ5IChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTc5MjY0OSkgcG9pbnRlZAogICBvdXQgYSBwcm9ibGVtIHdpdGggZG9pbmcgYW4gZW1wdHkgdXBsb2FkIG92ZXIgRlRQIG9uIGEgcmUtdXNlZCBjb25uZWN0aW9uLgogICBJIGFkZGVkIHRlc3QgY2FzZSA1NDEgdG8gcmVwcm9kdWNlIGl0IGFuZCB0byB2ZXJpZnkgdGhlIGZpeC4KIApAQCAtNDU5Myw3ICs0NTkzLDcgQEAKIAogRGFuaWVsIFMgKDUgU2VwdGVtYmVyIDIwMDcpCiAtIENvbnRpbnVlZCB0aGUgd29yayBvbiBhIGZpeCBmb3IgIzE3NzkwNTQKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE3NzkwNTQpLiBNeSBwcmV2aW91cyBmaXggZnJvbSBBdWd1c3QKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNzc5MDU0KS4gTXkgcHJldmlvdXMgZml4IGZyb20gQXVndXN0CiAgIDI0IHdhcyBub3QgY29tcGxldGUgKGVpdGhlcikgYnV0IGNvdWxkIGFjY2lkZW50YWxseSAiZm9yZ2V0IiBwYXJ0cyBvZiBhCiAgIHNlcnZlciByZXNwb25zZSB3aGljaCBsZWQgdG8gZmF1bHR5IHNlcnZlciByZXNwb25zZSB0aW1lLW91dCBlcnJvcnMuCiAKQEAgLTQ2NjgsNyArNDY2OCw3IEBACiAtIFNvbWUgbWlub3IgaW50ZXJuYWwgdHlwZSBhbmQgY29uc3QgY2hhbmdlcyBiYXNlZCBvbiBhIHNwbGludCBzY2FuLgogCiBEYW5pZWwgUyAoMjQgQXVndXN0IDIwMDcpCi0tIEJ1ZyByZXBvcnQgIzE3NzkwNTQgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE3NzkwNTQpIHBvaW50ZWQKKy0gQnVnIHJlcG9ydCAjMTc3OTA1NCAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE3NzkwNTQpIHBvaW50ZWQKICAgb3V0IHRoYXQgbGliY3VybCBkaWRuJ3QgZGVhbCB3aXRoIGxhcmdlIHJlc3BvbnNlcyBmcm9tIHNlcnZlciBjb21tYW5kcywgd2hlbgogICB0aGUgc2luZ2xlIHJlc3BvbnNlIHdhcyBjb25zaXN0aW5nIG9mIG11bHRpcGxlIGxpbmVzIGJ1dCBvZiBhIHRvdGFsIHNpemUgb2YKICAgMTZLQiBvciBtb3JlLiBEYW4gRmFuZHJpY2ggaW1wcm92ZWQgdGhlIGZ0cCB0ZXN0IHNjcmlwdCBhbmQgcHJvdmlkZWQgdGVzdApAQCAtNDY4MCwxMiArNDY4MCwxMiBAQAogICBTZWUgcGFja2FnZXMvT1M0MDAvUkVBRE1FLk9TNDAwLgogCiBEYW5pZWwgUyAoMjMgQXVndXN0IDIwMDcpCi0tIEJ1ZyByZXBvcnQgIzE3Nzk3NTEgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE3Nzk3NTEpIHBvaW50ZWQKKy0gQnVnIHJlcG9ydCAjMTc3OTc1MSAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE3Nzk3NTEpIHBvaW50ZWQKICAgb3V0IHRoYXQgZG9pbmcgZmlyc3QgYSBmaWxlOi8vIHVwbG9hZCBhbmQgdGhlbiBhbiBGVFAgdXBsb2FkIGNyYXNoZWQgbGliY3VybAogICBvciBhdCBiZXN0IGNhdXNlZCBmdXJpb3VzIHZhbGdyaW5kIGNvbXBsYWludHMuIEZpeGVkIG5vdyEKIAogRGFuaWVsIFMgKDIyIEF1Z3VzdCAyMDA3KQotLSBCdWcgcmVwb3J0ICMxNzc5MDU0IChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNzc5MDU0KSBwb2ludGVkCistIEJ1ZyByZXBvcnQgIzE3NzkwNTQgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNzc5MDU0KSBwb2ludGVkCiAgIG91dCB0aGF0IGxpYmN1cmwgZGlkbid0IGRlYWwgd2l0aCB2ZXJ5IGxvbmcgKD4xNkspIEZUUCBzZXJ2ZXIgcmVzcG9uc2UgbGluZXMKICAgcHJvcGVybHkuIFN0YXJ0aW5nIG5vdywgbGliY3VybCB3aWxsIGNob3AgdGhlbSBvZmYgKHRodXMgdGhlIGNsaWVudCBhcHAgd2lsbAogICBub3QgZ2V0IHRoZSBmdWxsIGxpbmUpIGJ1dCBzdXJ2aXZlIGFuZCBkZWFsIHdpdGggdGhlbSBmaW5lIG90aGVyd2lzZS4gVGVzdApAQCAtNDY5OSwxMiArNDY5OSwxMiBAQAogCiBEYW5pZWwgUyAoMTggQXVndXN0IDIwMDcpCiAtIFJvYnNvbiBCcmFnYSBBcmF1am8gZmlsZWQgYnVnIHJlcG9ydCAjMTc3NjIzMgotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTc3NjIzMikgYWJvdXQgbGliY3VybCBjYWxsaW5nCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTc3NjIzMikgYWJvdXQgbGliY3VybCBjYWxsaW5nCiAgIEN1cmxfY2xpZW50X3dyaXRlKCksIHBhc3Npbmcgb24gYSBjb25zdCBzdHJpbmcgdGhhdCB0aGUgY2FsbGVyIG1heSBub3QKICAgbW9kaWZ5IGFuZCB5ZXQgaXQgZG9lcyAob24gc29tZSBwbGF0Zm9ybXMpLgogCiAtIFJvYnNvbiBCcmFnYSBBcmF1am8gZmlsZWQgYnVnIHJlcG9ydCAjMTc3NjIzNQotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTc3NjIzNSkgYWJvdXQgZnRwIHJlcXVlc3RzIHdpdGggTk9CT0RZCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTc3NjIzNSkgYWJvdXQgZnRwIHJlcXVlc3RzIHdpdGggTk9CT0RZCiAgIG9uIGEgZGlyZWN0b3J5IHdvdWxkIGRvIGEgIlNJWkUgKG51bGwpIiByZXF1ZXN0LiBUaGlzIGlzIG5vdyBmaXhlZCBhbmQgdGVzdAogICBjYXNlIDEwMDAgd2FzIGFkZGVkIHRvIHZlcmlmeS4KIApAQCAtNDc0Niw3ICs0NzQ2LDcgQEAKIAogRGFuaWVsIFMgKDIgQXVndXN0IDIwMDcpCiAtIFNjb3R0IENhbnRvciBmaWxlZCBidWcgcmVwb3J0ICMxNzY2MzIwCi0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNzY2MzIwKSBwb2ludGluZyBvdXQgdGhhdCB0aGUgbGliY3VybAorICAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE3NjYzMjApIHBvaW50aW5nIG91dCB0aGF0IHRoZSBsaWJjdXJsCiAgIGNvZGUgYWNjZXNzZWQgdHdvIGN1cmxfZWFzeV9zZXRvcHQoKSBvcHRpb25zIChDVVJMT1BUX0ROU19DQUNIRV9USU1FT1VUIGFuZAogICBDVVJMT1BUX0ROU19VU0VfR0xPQkFMX0NBQ0hFKSBhcyBpbnRzIGV2ZW4gdGhvdWdoIHRoZXkncmUgZG9jdW1lbnRlZCB0byBiZQogICBwYXNzZWQgaW4gYXMgbG9uZ3MsIGFuZCB0aGF0IG1ha2VzIGEgZGlmZmVyZW5jZSBvbiA2NCBiaXQgYXJjaGl0ZWN0dXJlcy4KQEAgLTQ3ODIsNyArNDc4Miw3IEBACiAKIERhbmllbCBTICgyOSBKdWx5IDIwMDcpCiAtIEpheWVzaCBBIFNoYWggZmlsZWQgYnVnIHJlcG9ydCAjMTc1OTU0MgotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTc1OTU0MikgaWRlbnRpZnlpbmcgYSByYXRoZXIgc2VyaW91cworICAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE3NTk1NDIpIGlkZW50aWZ5aW5nIGEgcmF0aGVyIHNlcmlvdXMKICAgcHJvYmxlbSB3aXRoIEZUUFM6IGxpYmN1cmwgY2xvc2VkIHRoZSBkYXRhIGNvbm5lY3Rpb24gc29ja2V0IGFuZCB0aGVuIGxhdGVyCiAgIGluIHRoZSBmbG93IGl0IHdvdWxkIGNhbGwgdGhlIFNTTCBsYXllciB0byBkbyBTU0wgc2h1dGRvd24gd2hpY2ggdGhlbiB3b3VsZAogICB1c2UgYSBzb2NrZXQgdGhhdCBoYWQgYWxyZWFkeSBiZWVuIGNsb3NlZCAtIHNvIGlmIHRoZSBhcHBsaWNhdGlvbiBoYWQgb3BlbmVkCkBAIC00ODQyLDcgKzQ4NDIsNyBAQAogLSBKYW1lcyBIb3VzbGV5IGZpeGVkIHRoZSBTRlRQIFBXRCBjb21tYW5kIHRvIHdvcmsuCiAKIC0gUmFsZiBTLiBFbmdlbHNjaGFsbCBmaWxlZCBidWcgcmVwb3J0ICMxNzU3MzI4Ci0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNzU3MzI4KSBhbmQgc3VibWl0dGVkIGEgcGF0Y2guIEl0CisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTc1NzMyOCkgYW5kIHN1Ym1pdHRlZCBhIHBhdGNoLiBJdAogICB0dXJucyBvdXQgd2UgYnJva2UgbG9naW4gdG8gRlRQIHNlcnZlcnMgdGhhdCBkb24ndCByZXF1aXJlIChub3IgdW5kZXJzdGFuZCkKICAgUEFTUyBhZnRlciB0aGUgVVNFUiBjb21tYW5kLiBUaGUgYnJlYWthZ2Ugd2FzIGRvbmUgYXMgcGFydCBvZiB0aGUga3JiNQogICBjb21taXQgc28gYSBrcmItdXNpbmcgcGVyc29uIG5lZWRzIHRvIHZlcmlmeSB0aGF0IHRoZSBjdXJyZW50IHZlcnNpb24gbm93CkBAIC00ODY0LDcgKzQ4NjQsNyBAQAogCiBEYW5pZWwgUyAoMTMgSnVseSAyMDA3KQogLSBDb2xpbiBIb2diZW4gZmlsZWQgYnVnIHJlcG9ydCAjMTc1MDI3NAotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTc1MDI3NCkgYW5kIHN1Ym1pdHRlZCBhIHBhdGNoIGZvciB0aGUKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNzUwMjc0KSBhbmQgc3VibWl0dGVkIGEgcGF0Y2ggZm9yIHRoZQogICBjYXNlIHdoZXJlIGxpYmN1cmwgZGlkIGEgY29ubmVjdCBhdHRlbXB0IHRvIGEgbm9uLWxpc3RlbmluZyBwb3J0IGFuZCBkaWRuJ3QKICAgcHJvdmlkZSBhIGh1bWFuIHJlYWRhYmxlIGVycm9yIHN0cmluZyBiYWNrLgogCkBAIC00OTE0LDcgKzQ5MTQsNyBAQAogCiBEYW5pZWwgUyAoMTAgSnVseSAyMDA3KQogLSBLZWVzIENvb2sgbm90aWZpZWQgdXMgYWJvdXQgYSBzZWN1cml0eSBmbGF3Ci0gIChodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvYWR2XzIwMDcwNzEwLmh0bWwpIGluIHdoaWNoIGxpYmN1cmwgZmFpbGVkIHRvCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2Fkdl8yMDA3MDcxMC5odG1sKSBpbiB3aGljaCBsaWJjdXJsIGZhaWxlZCB0bwogICBwcm9wZXJseSByZWplY3Qgc29tZSBvdXRkYXRlZCBvciBub3QgeWV0IHZhbGlkIHNlcnZlciBjZXJ0aWZpY2F0ZXMgd2hlbgogICBidWlsdCB3aXRoIEdudVRMUy4gS2VlcyBhbHNvIHByb3ZpZGVkIHRoZSBwYXRjaC4KIApAQCAtNDk2MCw4ICs0OTYwLDggQEAKIFZlcnNpb24gNy4xNi4zICgyNSBKdW5lIDIwMDcpCiAKIERhbmllbCBTICgyMyBKdW5lIDIwMDcpCi0tIEFzIHJlcG9ydGVkIGJ5ICJUcm8iIGluIGh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC9saWItMjAwNy0wNi8wMTYxLmh0bWwgYW5kCi0gIGh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC9saWItMjAwNy0wNi8wMjM4Lmh0bWwsIGxpYmN1cmwgZGlkbid0IHByb3Blcmx5IGRvCistIEFzIHJlcG9ydGVkIGJ5ICJUcm8iIGluIGh0dHBzOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMDctMDYvMDE2MS5odG1sIGFuZAorICBodHRwczovL2N1cmwuaGF4eC5zZS9tYWlsL2xpYi0yMDA3LTA2LzAyMzguaHRtbCwgbGliY3VybCBkaWRuJ3QgcHJvcGVybHkgZG8KICAgbm8tYm9keSByZXF1ZXN0cyBvbiBGVFAgZmlsZXMgb24gcmUtdXNlZCBjb25uZWN0aW9ucyBwcm9wZXJseSwgb3IgYXQgbGVhc3QKICAgaXQgZGlkbid0IHByb3ZpZGUgdGhlIGluZm8gYmFjayBpbiB0aGUgaGVhZGVyIGNhbGxiYWNrIHByb3Blcmx5IGluIHRoZQogICBzdWJzZXF1ZW50IHJlcXVlc3RzLgpAQCAtNDk3MywxNCArNDk3MywxNCBAQAogCiBEYW5pZWwgUyAoMjAgSnVuZSAyMDA3KQogLSBBZGFtIFBpZ2dvdHQgZmlsZWQgYnVnIHJlcG9ydCAjMTc0MDI2MwotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTc0MDI2MykuIEFkYW0gZGlzY292ZXJlZCB0aGF0IHdoZW4KKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNzQwMjYzKS4gQWRhbSBkaXNjb3ZlcmVkIHRoYXQgd2hlbgogICBnZXR0aW5nIGEgbGFyZ2UgYW1vdW50IG9mIFVSTHMgd2l0aCBjdXJsLCB0aGV5IHdlcmUgZmV0Y2hlZCBzbG93ZXIgYW5kCiAgIHNsb3dlci4uLiB3aGljaCB0dXJuZWQgb3V0IHRvIGJlIGJlY2F1c2UgdGhlIC0tbGliY3VybCBkYXRhIGNvbGxlY3Rpbmcgd2hpY2gKICAgd3JvbmdseSBhbHdheXMgd2FzIGVuYWJsZWQsIGJ1dCBubyBsb25nZXIgaXMuLi4KIAogRGFuaWVsIFMgKDE4IEp1bmUgMjAwNykKIC0gUm9ic29uIEJyYWdhIEFyYXVqbyBmaWxlZCBidWcgcmVwb3J0ICMxNzM5MTAwCi0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNzM5MTAwKSB0aGF0IG1lbnRpb25lZCB0aGF0IGxpYmN1cmwKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNzM5MTAwKSB0aGF0IG1lbnRpb25lZCB0aGF0IGxpYmN1cmwKICAgY291bGQgbm90IGFjdHVhbGx5IGxpc3QgdGhlIGNvbnRlbnRzIG9mIHRoZSByb290IGRpcmVjdG9yeSBvZiBhIGdpdmVuIEZUUAogICBzZXJ2ZXIgaWYgdGhlIGxvZ2luIGRpcmVjdG9yeSBpc24ndCByb290LiBJIGZpeGVkIHRoZSBwcm9ibGVtIGFuZCBhZGRlZAogICB0aHJlZSB0ZXN0IGNhc2VzIChvbmUgaXMgZGlzYWJsZWQgZm9yIG5vdyBzaW5jZSBJIGlkZW50aWZpZWQgS05PV05fQlVHUyAjNDQsCkBAIC01MDE0LDkgKzUwMTQsOSBAQAogICB2ZXJ5IGltcG9ydGFudCkKIAogLSBEYXZlIFZhc2lsZXZza3kgZmlsZWQgYnVnIHJlcG9ydCAjMTczNjg3NQotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTczNjg3NSkgYWxtb3N0IHNpbXVsdGFub3Vlc2x5IGFzIERhbgorICAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE3MzY4NzUpIGFsbW9zdCBzaW11bHRhbm91ZXNseSBhcyBEYW4KICAgRmFuZHJpY2ggbWVudGlvbmVkIGEgcmVsYXRlZCBidWlsZCBwcm9ibGVtIG9uIHRoZSBsaWJjdXJsIG1haWxpbmcgbGlzdDoKLSAgaHR0cDovL2N1cmwuaGF4eC5zZS9tYWlsL2xpYi0yMDA3LTA2LzAxMzEuaHRtbC4gQm90aCBwcm9ibGVtcyBoYWQgdGhlIHNhbWUKKyAgaHR0cHM6Ly9jdXJsLmhheHguc2UvbWFpbC9saWItMjAwNy0wNi8wMTMxLmh0bWwuIEJvdGggcHJvYmxlbXMgaGFkIHRoZSBzYW1lCiAgIHJlYXNvbjogdGhlIGRlZmluaXRpb25zIG9mIHRoZSBQT0xMKiBkZWZpbmVzIGFuZCB0aGUgcG9sbGZkIHN0cnVjdCBpbiB0aGUKICAgbGliY3VybCBjb2RlIHdhcyBkZXBlbmRpbmcgb24gSEFWRV9QT0xMIGluc3RlYWQgb2YgSEFWRV9TWVNfUE9MTF9ILgogCkBAIC01MDI2LDcgKzUwMjYsNyBAQAogICBvbmVzLgogCiAtIFJpY2ggUmF1ZW56YWhuIGZpbGVkIGJ1ZyByZXBvcnQgIzE3MzMxMTkKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE3MzMxMTkpIGFuZCB3ZSBjb2xsYWJvcmF0ZWQgb24gdGhlCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTczMzExOSkgYW5kIHdlIGNvbGxhYm9yYXRlZCBvbiB0aGUKICAgZml4LiAgVGhlIHByb2JsZW0gaXMgdGhhdCBmb3IgNjRiaXQgSFBVWCBidWlsZHMsIHNldmVyYWwgc29ja2V0LXJlbGF0ZWQKICAgZnVuY3Rpb25zIHdvdWxkIHN0aWxsIGFzc3VtZSBpbnQgKDMyIGJpdCkgYXJndW1lbnRzIGFuZCBub3Qgc29ja2xlbl90ICg2NAogICBiaXQpIG9uZXMuCkBAIC01MDc5LDE2ICs1MDc5LDE2IEBACiAKIERhbmllbCBTICgyNSBNYXkgMjAwNykKIC0gUm9iIENyaXR0ZW5kZW4gZml4ZWQgYnVnICMxNzA1ODAyCi0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNzA1ODAyKSwgd2hpY2ggd2FzIGZpbGVkIGJ5IERhbmllbAorICAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE3MDU4MDIpLCB3aGljaCB3YXMgZmlsZWQgYnkgRGFuaWVsCiAgIEJsYWNrIGlkZW50aWZ5aW5nIHNldmVyYWwgRlRQLVNTTCB0ZXN0IGNhc2VzIGZhaWwgd2hlbiB3ZSBidWlsZCBsaWJjdXJsIHdpdGgKICAgTlNTIGZvciBUTFMvU1NMLiBMaXN0ZWQgYXMgIzQyIGluIEtOT1dOX0JVR1MuCiAKIERhbmllbCBTICgyNCBNYXkgMjAwNykKIC0gU29uZyBNYSBmaWxlZCBidWcgcmVwb3J0ICMxNzI0MDE2Ci0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNzI0MDE2KSBub3RpY2luZyB0aGF0IGRvd25sb2FkaW5nCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTcyNDAxNikgbm90aWNpbmcgdGhhdCBkb3dubG9hZGluZwogICBnbG9iLXJhbmdlcyBmb3IgVEZUUCB3YXMgYnJva2VuIGluIENWUy4gRml4ZWQgbm93LgogCi0tICdteXR4JyBpbiBidWcgcmVwb3J0ICMxNzIzMTk0IChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNzIzMTk0KQorLSAnbXl0eCcgaW4gYnVnIHJlcG9ydCAjMTcyMzE5NCAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE3MjMxOTQpCiAgIHBvaW50ZWQgb3V0IHRoYXQgdGhlIHdhcm5mKCkgZnVuY3Rpb24gaW4gdGhlIGN1cmwgdG9vbCBkaWRuJ3QgcHJvcGVybHkgZGVhbAogICB3aXRoIHRoZSBjYXNlcyB3aGVuIGV4Y2Vzc2l2ZWx5IGxvbmcgd29yZHMgd2VyZSB1c2VkIGluIHRoZSBzdHJpbmcgdG8gY2hvcAogICB1cC4KQEAgLTUxMDEsMTQgKzUxMDEsMTQgQEAKIAogRGFuaWVsIFMgKDE4IE1heSAyMDA3KQogLSBGZW5nIFR1IHJlcG9ydGVkIHRoYXQgY3VybCAtdyBkaWQgd3Jvbmcgb24gVEZUUCB0cmFuc2ZlcnMgaW4gYnVnIHJlcG9ydAotICAjMTcxNTM5NCAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTcxNTM5NCksIGFuZCB0aGUKKyAgIzE3MTUzOTQgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNzE1Mzk0KSwgYW5kIHRoZQogICB0cmFuc2Zlci1yZWxhdGVkIGluZm8gInZhcmlhYmxlcyIgd2VyZSBpbmRlZWQgb3ZlcndyaXR0ZW4gd2l0aCB6ZXJvZXMKICAgd3JvbmdseSBhbmQgaGF2ZSBub3cgYmVlbiBhZGp1c3RlZC4gVGhlIHVwbG9hZCBzaXplIHN0aWxsIGlzbid0IGFjY3VyYXRlLgogCiBEYW5pZWwgUyAoMTcgTWF5IDIwMDcpCiAtIEZlbmcgVHUgcG9pbnRlZCBvdXQgYSBkaXZpc2lvbiBieSB6ZXJvIGVycm9yIGluIHRoZSBURlRQIGNvbm5lY3QgdGltZW91dAogICBjb2RlIGZvciB0aW1lb3V0cyBsZXNzIHRoYW4gZml2ZSBzZWNvbmRzLCBhbmQgYWxzbyBwcm92aWRlZCBhIGZpeCBmb3IgaXQuCi0gIEJ1ZyByZXBvcnQgIzE3MTUzOTIgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE3MTUzOTIpCisgIEJ1ZyByZXBvcnQgIzE3MTUzOTIgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNzE1MzkyKQogCiBEYW4gRiAoMTYgTWF5IDIwMDcpCiAtIEFkZGVkIHN1cHBvcnQgZm9yIGNvbXBpbGluZyB1bmRlciBNaW5peCAzLjEuMyB1c2luZyBBQ0suCkBAIC01MjE3LDEzICs1MjE3LDEzIEBACiAgIHRoZSBtYW4gcGFnZSBub3cuCiAKIC0gRGFuaWVsIEJsYWNrIGZpbGVkIGJ1ZyAjMTcwNTE3NwotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTcwNTE3Nykgd2hlcmUgLS13aXRob3V0LXNzbAorICAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE3MDUxNzcpIHdoZXJlIC0td2l0aG91dC1zc2wKICAgLS13aXRoLWdudXRsIG91dHB1dHMgYSB3YXJuaW5nIGFib3V0IFNTTCBub3QgYmVpbmcgZW5hYmxlZCBldmVuIHRob3VnaCBHbnVUTFMKICAgd2FzIGZvdW5kIGFuZCB1c2VkLgogCiBEYW5pZWwgUyAoMjEgQXByaWwgMjAwNykKIC0gRGFuaWVsIEJsYWNrIGZpbGVkIGJ1ZyAjMTcwNDY3NQotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTcwNDY3NSkgaWRlbnRpZnlpbmcgYSBkb3VibGUtZnJlZQorICAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE3MDQ2NzUpIGlkZW50aWZ5aW5nIGEgZG91YmxlLWZyZWUKICAgcHJvYmxlbSBpbiB0aGUgU1NMLWRlYWxpbmcgbGF5ZXIsIHRlbGxpbmcgR251VExTIHRvIGZyZWUgTlVMTCBjcmVkZW50aWFscyBvbgogICBjbG9zZWRvd24gYWZ0ZXIgYSBmYWlsdXJlIGFuZCBhIGJhZCAjaWZkZWYgZm9yIE5TUyB3aGVuIGNsb3NpbmcgZG93biBTU0wuCiAKQEAgLTUyNzQsNyArNTI3NCw3IEBACiAtIFNvbmcgTWEgZm91bmQgYSBtZW1vcnkgbGVhayBpbiB0aGUgaWYyaXAgY29kZSBpZiB5b3UgcGFzcyBpbiBhbiBpbnRlcmZhY2UKICAgbmFtZSBsb25nZXIgdGhhbiB0aGUgbmFtZSBmaWVsZCBvZiB0aGUgaWZyZXEgc3RydWN0ICh0eXBpY2FsbHkgNiBieXRlcyksIGFzCiAgIHRoZW4gaXQgd291bGRuJ3QgY2xvc2UgdGhlIHVzZWQgZHVtbXkgc29ja2V0LiBCdWcgIzE2OTg5NzQKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE2OTg5NzQpCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTY5ODk3NCkKIAogVmVyc2lvbiA3LjE2LjIgKDExIEFwcmlsIDIwMDcpCiAKQEAgLTU0MjksNyArNTQyOSw3IEBACiAKIC0gSnVzdGluIEZsZXRjaGVyIGZpeGVkIGEgZmlsZSBkZXNjcmlwdG9yIGxlYWsgaW4gdGhlIGN1cmwgdG9vbCB3aGVuIHRyeWluZyB0bwogICB1cGxvYWQgYSBmaWxlIGl0IGNvdWxkbid0IG9wZW4uIEJ1ZyAjMTY3NjU4MQotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTY3NjU4MSkKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNjc2NTgxKQogCiBEYW4gRiAoOSBNYXJjaCAyMDA3KQogLSBVcGRhdGVkIHRoZSB0ZXN0IGhhcm5lc3MgdG8gY2hlY2sgZm9yIHByb3RvY29sIHN1cHBvcnQgYmVmb3JlIHJ1bm5pbmcgZWFjaApAQCAtNTUzOCw3ICs1NTM4LDcgQEAKIAogRGFuaWVsICgxMiBGZWJydWFyeSAyMDA3KQogLSBSb2IgQ3JpdHRlbmRlbiBhZGRlZCBzdXBwb3J0IGZvciBOU1MgKE5ldHdvcmsgU2VjdXJpdHkgU2VydmljZSkgZm9yIHRoZQotICBTU0wvVExTIGxheWVyLiBodHRwOi8vd3d3Lm1vemlsbGEub3JnL3Byb2plY3RzL3NlY3VyaXR5L3BraS9uc3MvCisgIFNTTC9UTFMgbGF5ZXIuIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvTW96aWxsYS9Qcm9qZWN0cy9OU1MKIAogICBUaGlzIGlzIHRoZSBmb3VydGggc3VwcG9ydGVkIGxpYnJhcnkgZm9yIFRMUy9TU0wgdGhhdCBsaWJjdXJsIHN1cHBvcnRzIQogCkBAIC01Njg0LDcgKzU2ODQsNyBAQAogCiBEYW5pZWwgKDIgSmFudWFyeSAyMDA3KQogLSBWaWN0b3IgU25lemhrbyBoZWxwZWQgdXMgZml4IGJ1ZyByZXBvcnQgIzE2MDM3MTIKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE2MDM3MTIpIChrbm93biBidWcgIzM2KSAtLWxpbWl0LXJhdGUKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNjAzNzEyKSAoa25vd24gYnVnICMzNikgLS1saW1pdC1yYXRlCiAgIChDVVJMT1BUX01BWF9TRU5EX1NQRUVEX0xBUkdFIGFuZCBDVVJMT1BUX01BWF9SRUNWX1NQRUVEX0xBUkdFKSBhcmUgYnJva2VuCiAgIG9uIFdpbmRvd3MgKHNpbmNlIDcuMTYuMCwgYnV0IHRoYXQncyB3aGVuIHRoZXkgd2VyZSBpbnRyb2R1Y2VkIGFzIHByZXZpb3VzCiAgIHRvIHRoYXQgdGhlIGxpbWl0aW5nIGxvZ2ljIHdhcyBtYWRlIGluIHRoZSBhcHBsaWNhdGlvbiBvbmx5IGFuZCBub3QgaW4gdGhlCkBAIC01Njk2LDcgKzU2OTYsNyBAQAogLSBNb2RpZmllZCBsaWJjdXJsLnBjLmluIHRvIHVzZSBMaWJzLnByaXZhdGUgZm9yIHRoZSBsaWJzIGxpYmN1cmwgaXRzZWxmIG5lZWRzCiAgIHRvIGdldCBidWlsdCBzdGF0aWMuIEl0IGhhcyBiZWVuIG1lbnRpb25lZCBiZWZvcmUgYW5kIHdhcyBhZ2FpbiBicm91Z2h0IHRvCiAgIG91ciBhdHRlbnRpb24gYnkgTmF0aGFuYWVsIE5lcm9kZSB3aG8gZmlsZWQgZGViaWFuIGJ1ZyByZXBvcnQgIzQwNTIyNgotICAoaHR0cDovL2J1Z3MuZGViaWFuLm9yZy9jZ2ktYmluL2J1Z3JlcG9ydC5jZ2k/YnVnPTQwNTIyNikuCisgIChodHRwczovL2J1Z3MuZGViaWFuLm9yZy9jZ2ktYmluL2J1Z3JlcG9ydC5jZ2k/YnVnPTQwNTIyNikuCiAKIERhbmllbCAoMjkgRGVjZW1iZXIgMjAwNikKIC0gTWFrZSBjdXJsX2Vhc3lfZHVwaGFuZGxlKCkgc2V0IHRoZSBtYWdpYyBudW1iZXIgaW4gdGhlIG5ldyBoYW5kbGUuCkBAIC01NzE3LDcgKzU3MTcsNyBAQAogCiBEYW5pZWwgKDIxIERlY2VtYmVyIDIwMDYpCiAtIFJvYnNvbiBCcmFnYSBBcmF1am8gcmVwb3J0ZWQgYnVnICMxNjE4MzU5Ci0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNjE4MzU5KSBhbmQgc3Vic2VxdWVudGx5IHByb3ZpZGVkIGEKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNjE4MzU5KSBhbmQgc3Vic2VxdWVudGx5IHByb3ZpZGVkIGEKICAgcGF0Y2ggZm9yIGl0OiB3aGVuIGRvd25sb2FkaW5nIDIgemVybyBieXRlIGZpbGVzIGluIGEgcm93LCBjdXJsIDcuMTYuMAogICBlbnRlcnMgYW4gaW5maW5pdGUgbG9vcCwgd2hpbGUgY3VybCA3LjE2LjEtMjAwNjEyMTggZG9lcyBvbmUgYWRkaXRpb25hbAogICB1bm5lY2Vzc2FyeSByZXF1ZXN0LgpAQCAtNTc0NSw3ICs1NzQ1LDcgQEAKIAogRGFuaWVsICg2IERlY2VtYmVyIDIwMDYpCiAtIFNlYmFzdGllbiBXaWxsZW1pam5zIHJlcG9ydGVkIGJ1ZyAjMTYwMzcxMgotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTYwMzcxMikgd2hpY2ggaXMgYWJvdXQgY29ubmVjdGlvbnMKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNjAzNzEyKSB3aGljaCBpcyBhYm91dCBjb25uZWN0aW9ucwogICBnZXR0aW5nIGN1dCBvZmYgcHJlbWF0dXJlbHkgd2hlbiAtLWxpbWl0LXJhdGUgaXMgdXNlZC4gV2hpbGUgSSBmb3VuZCBubyBzdWNoCiAgIHByb2JsZW1zIGluIG15IHRlc3RzIG5vciBpbiBteSByZWFkaW5nIG9mIHRoZSBjb2RlLCBJIGZvdW5kIHRoYXQgdGhlCiAgIC0tbGltaXQtcmF0ZSBjb2RlIHdhcyBzZXZlcmx5IGZsYXdlZCAoc2luY2UgaXQgd2FzIG1vdmVkIGludG8gdGhlIGxpYiwgc2luY2UKQEAgLTU3NjYsNyArNTc2Niw3IEBACiAgIHRoZSBjb2RlLgogCiAtIEphcmVkIEx1bmRlbGwgZmlsZWQgYnVnIHJlcG9ydCAjMTYwNDk1NgotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTYwNDk1Nikgd2hpY2ggaWRlbnRpZmllZCBzZXR0aW5nCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTYwNDk1Nikgd2hpY2ggaWRlbnRpZmllZCBzZXR0aW5nCiAgIENVUkxPUFRfTUFYQ09OTkVDVFMgdG8gemVybyBjYXVzZWQgbGliY3VybCB0byBTSUdTRUdWLiBTdGFydGluZyBub3csIGxpYmN1cmwKICAgd2lsbCBhbHdheXMgaW50ZXJuYWxseSB1c2Ugbm8gbGVzcyB0aGFuIDEgZW50cnkgaW4gdGhlIGNvbm5lY3Rpb24gY2FjaGUuCiAKQEAgLTU3NzQsMTIgKzU3NzQsMTIgQEAKICAgdGhlIDcuMTYuMCByZWxlYXNlLgogCiAtIE1hcnRpbiBTa2lubmVyIGJyb3VnaHQgYmFjayBidWcgcmVwb3J0ICMxMjMwMTE4IHRvIGhhdW50IHVzIG9uY2UgYWdhaW4uCi0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xMjMwMTE4KSBjdXJsX2dldGRhdGUoKSBkaWQgbm90IHdvcmsKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xMjMwMTE4KSBjdXJsX2dldGRhdGUoKSBkaWQgbm90IHdvcmsKICAgcHJvcGVybHkgZm9yIGFsbCBpbnB1dCBkYXRlcyBvbiBXaW5kb3dzLiBJdCB3YXMgbW9zdGx5IHNlZW4gb24gc29tZSBUWiB0aW1lCiAgIHpvbmVzIHVzaW5nIERTVC4gTHVja2lseSwgTWFydGluIGFsc28gcHJvdmlkZWQgYSBmaXguCiAKIC0gQWxleGV5IFNpbWFrIGZpbGVkIGJ1ZyByZXBvcnQgIzE2MDA0NDcKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE2MDA0NDcpIGluIHdoaWNoIGhlIG5vdGVkIHRoYXQgYWN0aXZlCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTYwMDQ0NykgaW4gd2hpY2ggaGUgbm90ZWQgdGhhdCBhY3RpdmUKICAgRlRQIGNvbm5lY3Rpb25zIGRvbid0IHdvcmsgd2l0aCB0aGUgbXVsdGkgaW50ZXJmYWNlLiBUaGUgcHJvYmxlbSBpcyBoZXJlCiAgIHRoYXQgdGhlIG11bHRpIGludGVyZmFjZSBzdGF0ZSBtYWNoaW5lIGhhcyBhIHN0YXRlIGR1cmluZyB3aGljaCBpdCBjYW4gd2FpdAogICBmb3IgdGhlIGRhdGEgY29ubmVjdGlvbiB0byBjb25uZWN0LCBidXQgdGhlIGFjdGl2ZSBjb25uZWN0aW9uIGlzIG5vdCBkb25lIGluCkBAIC01ODI5LDcgKzU4MjksNyBAQAogLSBKYW1lcyBIb3VzbGV5IGRpZCBsb3RzIG9mIHdvcmsgYW5kIGludHJvZHVjZWQgU0ZUUCBkb3dubG9hZHMuCiAKIERhbmllbCAoMTMgTm92ZW1iZXIgMjAwNikKLS0gUm9uIGluIGJ1ZyAjMTU5NTM0OCAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTU5NTM0OCkgcG9pbnRlZAorLSBSb24gaW4gYnVnICMxNTk1MzQ4IChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTU5NTM0OCkgcG9pbnRlZAogICBvdXQgYSBzdGFjayBvdmVyd3JpdGUgKGFuZCB0aGUgY29ycmVzcG9uZGluZyBmaXgpIG9uIDY0Yml0IFdpbmRvd3Mgd2hlbgogICBkZWFsaW5nIHdpdGggSFRUUCBjaHVua2VkIGVuY29kaW5nLgogCkBAIC01OTg3LDcgKzU5ODcsNyBAQAogICB2ZXJzaW9uIGluZm8gZm9yIHRoZSBsaWIuCiAKIERhbmllbCAoMjggU2VwdGVtYmVyIDIwMDYpCi0tIFJlcG9ydGVkIGluICMxNTYxNDcwIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNTYxNDcwKSwgbGliY3VybAorLSBSZXBvcnRlZCBpbiAjMTU2MTQ3MCAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE1NjE0NzApLCBsaWJjdXJsCiAgIHdvdWxkIGNyYXNoIGlmIGEgYmFkIGZ1bmN0aW9uIHNlcXVlbmNlIHdhcyB1c2VkIHdoZW4gc2h1dHRpbmcgZG93biBhZnRlcgogICB1c2luZyB0aGUgbXVsdGkgaW50ZXJmYWNlIChpLmUgdXNpbmcgZWFzeV9jbGVhbnVwIGFmdGVyIG11bHRpX2NsZWFudXApIHNvCiAgIHByZWNhdXRpb25zIGhhdmUgYmVlbiBhZGRlZCB0byBtYWtlIHN1cmUgaXQgZG9lc24ndCBhbnkgbW9yZSAtIHRlc3QgY2FzZSA1MjkKQEAgLTYwMTQsNyArNjAxNCw3IEBACiAKIERhbmllbCAoMjEgU2VwdGVtYmVyIDIwMDYpCiAtIEFkZGVkIHRlc3QgY2FzZSA1MzEgaW4gYW4gYXR0ZW1wdCB0byByZXBlYXQgYnVnIHJlcG9ydCAjMTU2MTQ3MAotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTU2MTQ3MCkgdGhhdCBpcyBzYWlkIHRvIGNyYXNoIHdoZW4gYW4KKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNTYxNDcwKSB0aGF0IGlzIHNhaWQgdG8gY3Jhc2ggd2hlbiBhbgogICBGVFAgdXBsb2FkIGZhaWxzIHdpdGggdGhlIG11bHRpIGludGVyZmFjZS4gSXQgZGlkIG5vdCwgYnV0IEkgbWFkZSBhIGZhaWxlZAogICB1cGxvYWQgc3RpbGwgYXNzdW1lIHRoZSBjb250cm9sIGNvbm5lY3Rpb24gdG8gYmUgZmluZS4KIApAQCAtNjA4MCw3ICs2MDgwLDcgQEAKICAgVGhpcyBpcyBhIG1ham9yIGNoYW5nZS4KIAogRGFuaWVsICg0IFNlcHRlbWJlciAyMDA2KQotLSBEbWl0cnkgUmVjaGtpbiAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTU1MTQxMikgcHJvdmlkZWQgYQorLSBEbWl0cnkgUmVjaGtpbiAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE1NTE0MTIpIHByb3ZpZGVkIGEKICAgcGF0Y2ggdGhhdCB3aGlsZSBub3QgZml4aW5nIHRoaW5ncyB2ZXJ5IG5pY2VseSwgaXQgZG9lcyBtYWtlIHRoZSBTT0NLUzUKICAgcHJveHkgY29ubmVjdGlvbiBzbGlnaHRseSBiZXR0ZXIgYXMgaXQgbm93IGFja25vd2xlZGdlcyB0aGUgdGltZW91dCBmb3IKICAgY29ubmVjdGlvbiBhbmQgaXQgbm8gbG9uZ2VyIHNlZ2ZhdWx0cyBpbiB0aGUgY2FzZSB3aGVuIFNPQ0tTIHJlcXVpcmVzCkBAIC02MTQ3LDEyICs2MTQ3LDEyIEBACiBEYW5pZWwgKDIgQXVndXN0IDIwMDYpCiAtIE1hcmsgTGVudGN6bmVyIGZpeGVkIGhvdyBsaWJjdXJsIHdhcyBub3QgcHJvcGVybHkgZG9pbmcgY2h1bmtlZCBlbmNvZGluZwogICBpZiB0aGUgaGVhZGVyICJUcmFuc2Zlci1FbmNvZGluZzogY2h1bmtlZCIgd2FzIHNldCBieSB0aGUgYXBwbGljYXRpb24uCi0gIGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE1MzE4MzgKKyAgaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE1MzE4MzgKIAogRGFuaWVsICgxIEF1Z3VzdCAyMDA2KQogLSBNYWNpZWogS2FycGl1ayBmaXhlZCBhIGNyYXNoIHRoYXQgd291bGQgb2NjdXIgaWYgd2UgcGFzc2VkIEN1cmxfc3RyZXJyb3IoKQogICBhbiB1bmtub3duIGVycm9yIG51bWJlciBvbiBnbGliYyBzeXN0ZW1zLgotICBodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNTMyMjg5CisgIGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNTMyMjg5CiAKIERhbmllbCAoMzEgSnVseSAyMDA2KQogLSAqQUxFUlQqIGN1cmxfbXVsdGlfc29ja2V0KCkgYW5kIGN1cmxfbXVsdGlfc29ja2V0X2FsbCgpIGdvdCBtb2RpZmllZApAQCAtNjI4Nyw3ICs2Mjg3LDcgQEAKICAgcm91dGUgb2Ygc2tpcHBpbmcgdGhlbSBmb3IgKi0qLWN5Z3dpbiouCiAKICAgVGhlIHRoaXJkIHBhdGNoIHJlcGxhY2VzIGFsbCB1c2VzIG9mIHRoZSBhbmNpZW50IGFuZCBvYnNvbGV0ZSBfX0NZR1dJTjMyX18KLSAgd2l0aCBfX0NZR1dJTl9fLiBSZWY6IDxodHRwOi8vY3lnd2luLmNvbS9tbC9jeWd3aW4vMjAwMy0wOS9tc2cwMTUyMC5odG1sPi4KKyAgd2l0aCBfX0NZR1dJTl9fLiBSZWY6IDxodHRwczovL2N5Z3dpbi5jb20vbWwvY3lnd2luLzIwMDMtMDkvbXNnMDE1MjAuaHRtbD4uCiAKIERhbmllbCAoNyBKdW5lIDIwMDYpCiAtIE1pa2FlbCBTZW5uZXJob2xtIHByb3ZpZGVkIGEgcGF0Y2ggdGhhdCBhZGRlZCBOVExNMiBzZXNzaW9uIHJlc3BvbnNlIHN1cHBvcnQKQEAgLTYzODQsNyArNjM4NCw3IEBACiAKIERhbmllbCAoNSBNYXkgMjAwNikKIC0gUm9sYW5kIEJsb20gZmlsZWQgYnVnIHJlcG9ydCAjMTQ4MTIxNwotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTQ4MTIxNyksIHdpdGggZm9sbG93LXVwcyBieSBNaWNoZWxlCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTQ4MTIxNyksIHdpdGggZm9sbG93LXVwcyBieSBNaWNoZWxlCiAgIEJpbmkgYW5kIERhdmlkIEJ5cm9uLiBsaWJjdXJsIHByZXZpb3VzbHkgd3JvbmdseSB1c2VkIEdldExhc3RFcnJvcigpIG9uCiAgIHdpbmRvd3MgdG8gZ2V0IGVycm9yIGRldGFpbHMgYWZ0ZXIgc29ja2V0LXJlbGF0ZWQgZnVuY3Rpb24gY2FsbHMsIHdoZW4gaXQKICAgcmVhbGx5IHNob3VsZCB1c2UgV1NBR2V0TGFzdEVycm9yKCkgaW5zdGVhZC4KQEAgLTYzOTUsNyArNjM5NSw3IEBACiAKIERhbmllbCAoNCBNYXkgMjAwNikKIC0gTWFyayBFaWNoaW4gc3VibWl0dGVkIGJ1ZyByZXBvcnQgIzE0ODA4MjEKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE0ODA4MjEpIEhlIGZvdW5kIGFuZCBpZGVudGlmaWVkIGEKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNDgwODIxKSBIZSBmb3VuZCBhbmQgaWRlbnRpZmllZCBhCiAgIHByb2JsZW0gd2l0aCBob3cgbGliY3VybCBkZWFsdCB3aXRoIEdudVRMUyBhbmQgYSBjYXNlIHdoZXJlIGdudXRscyByZXR1cm5lZAogICBHTlVUTFNfRV9BR0FJTiBpbmRpY2F0aW5nIGl0IHdvdWxkIGJsb2NrLiBJdCB3b3VsZCB0aGVuIHJldHVybiBhbiB1bmV4cGVjdGVkCiAgIHJldHVybiBjb2RlLCBtYWtpbmcgQ3VybF9zc2xfc2VuZCgpIGNvbmZ1c2UgdGhlIHVwcGVyIGxheWVyIC0gY2F1c2luZyByYW5kb20KQEAgLTY0NDUsNyArNjQ0NSw3IEBACiAgIGF0dGVtcHQgZnJvbSBBcHJpbCAxMC4KIAogRGFuaWVsICgxMSBBcHJpbCAyMDA2KQotLSAjMTQ2ODMzMCAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTQ2ODMzMCkgcG9pbnRlZCBvdXQgYSBiYWQKKy0gIzE0NjgzMzAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNDY4MzMwKSBwb2ludGVkIG91dCBhIGJhZAogICB0eXBlY2FzdCBpbiB0aGUgY3VybCB0b29sIGxlYWRpbmcgdG8gYSBjcmFzaCB3aXRoICg2NGJpdD8pIFZTMjAwNSAoYXQgbGVhc3QpCiAgIHNpbmNlIHRoZSBzdHJ1Y3QgdGltZXZhbCBmaWVsZCB0dl9zZWMgaXMgYW4gaW50IHdoaWxlIHRpbWVfdCBpcyA2NGJpdC4KIApAQCAtNjQ1NCw3ICs2NDU0LDcgQEAKICAgQ1VSTE9QVF9USU1FT1VULCB0aGUgX2xvbmdlcl8gdGltZSB3b3VsZCB3cm9uZ2x5IGJlIHVzZWQgZm9yIHRoZSBTU0wKICAgY29ubmVjdGlvbiB0aW1lLW91dCEKIAotLSBJIG1lcmdlZCBteSBoaXBlciBwYXRjaCAoaHR0cDovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2hpcGVyLykgaW50byB0aGUgbWFpbgorLSBJIG1lcmdlZCBteSBoaXBlciBwYXRjaCAoaHR0cHM6Ly9jdXJsLmhheHguc2UvbGliY3VybC9oaXBlci8pIGludG8gdGhlIG1haW4KICAgc291cmNlcy4gU2VlIHRoZSBsaWIvUkVBRE1FLm11bHRpX3NvY2tldCBmb3IgaW1wbGVtZW50YXRpb24gc3Rvcnkgd2l0aAogICBkZXRhaWxzLiBEb24ndCBleHBlY3QgaXQgdG8gd29yayBmdWxseSB5ZXQuIEkgZG9uJ3QgaW50ZW5kIHRvIGJsb3cgYW55CiAgIHdoaXN0bGVzIG9yIHJpbmcgYW55IGJlbGxzIGFib3V0IGl0IHVudGlsIEknbSBtb3JlIGNvbnZpbmNlZCBpdCB3b3JrcyBhdApAQCAtNjQ3MCw3ICs2NDcwLDcgQEAKIAogRGFuaWVsICg1IEFwcmlsIDIwMDYpCiAtIE1pY2hlbGUgQmluaSBtb2RpZmllZCB0aGUgTlRMTSBjb2RlIHRvIHdvcmsgZm9yIGhpcyAid2VpcmQgSUlTIGNhc2UiCi0gIChodHRwOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMDYtMDIvMDE1NC5odG1sKSBieSBhZGRpbmcgdGhlIE5UTE0gaGFzaAorICAoaHR0cHM6Ly9jdXJsLmhheHguc2UvbWFpbC9saWItMjAwNi0wMi8wMTU0Lmh0bWwpIGJ5IGFkZGluZyB0aGUgTlRMTSBoYXNoCiAgIGZ1bmN0aW9uIGluIGFkZGl0aW9uIHRvIHRoZSBMTSBvbmUgYW5kIG1ha2luZyBzb21lIG90aGVyIGFkanVzdG1lbnRzIGluIHRoZQogICBvcmRlciB0aGUgZGlmZmVyZW50IHBhcnRzIG9mIHRoZSBkYXRhIGJsb2NrIGFyZSBzZW50IGluIHRoZSBUeXBlLTIgcmVwbHkuCiAgIEluc3BpcmF0aW9uIGZvciB0aGlzIHdvcmsgd2FzIHRha2VuIGZyb20gdGhlIEZpcmVmb3ggTlRMTSBpbXBsZW1lbnRhdGlvbi4KQEAgLTY0ODAsNyArNjQ4MCw3IEBACiAgIHRoZSB0ZXN0IGNhc2VzIG5vdyBvbmx5IGNvbXBhcmUgcGFydHMgb2YgdGhhdCBjaHVuay4KIAogRGFuaWVsICgyOCBNYXJjaCAyMDA2KQotLSAjMTQ1MTkyOSAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTQ1MTkyOSkgZGV0YWlsZWQgYSBidWcgdGhhdAorLSAjMTQ1MTkyOSAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE0NTE5MjkpIGRldGFpbGVkIGEgYnVnIHRoYXQKICAgb2NjdXJyZWQgd2hlbiBhc2tpbmcgbGliY3VybCB0byBmb2xsb3cgSFRUUCByZWRpcmVjdHMgYW5kIHRoZSBvcmlnaW5hbCBVUkwKICAgaGFkIG1vcmUgdGhhbiBvbmUgcXVlc3Rpb24gbWFyayAoPykuIEFkZGVkIHRlc3QgY2FzZSAyNzYgdG8gdmVyaWZ5LgogCkBAIC02NTg5LDcgKzY1ODksNyBAQAogCiBEYW5pZWwgKDIyIEZlYnJ1YXJ5IDIwMDYpCiAtIExvdHMgb2Ygd29yayBhbmQgYW5hbHlzaXMgYnkgInhieF9fXyIgaW4gYnVnICMxNDMxNzUwCi0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNDMxNzUwKSBoZWxwZWQgbWUgaWRlbnRpZnkgYW5kIGZpeCB0d28KKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNDMxNzUwKSBoZWxwZWQgbWUgaWRlbnRpZnkgYW5kIGZpeCB0d28KICAgZGlmZmVyZW50IGJ1dCByZWxhdGVkIGJ1Z3M6CiAKICAgMSkgUmVtb3ZpbmcgYW4gZWFzeSBoYW5kbGUgZnJvbSBhIG11bHRpIGhhbmRsZSBiZWZvcmUgdGhlIHRyYW5zZmVyIGlzIGRvbmUKQEAgLTY2NzksNyArNjY3OSw3IEBACiAgIChidWlsdCBJUHY0LW9ubHkpIGRpZG4ndCB3b3JrLgogCiBEYW5pZWwgKDE4IEphbnVhcnkgMjAwNikKLS0gQXMgcmVwb3J0ZWQgaW4gYnVnICMxNDA4NzQyIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xNDA4NzQyKSwKKy0gQXMgcmVwb3J0ZWQgaW4gYnVnICMxNDA4NzQyIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTQwODc0MiksCiAgIHRoZSBjb25maWd1cmUgc2NyaXB0IGNvbXBsYWluZWQgYWJvdXQgYSBtaXNzaW5nICJtaXNzaW5nIiBzY3JpcHQgaWYgeW91IHJhbgogICBjb25maWd1cmUgd2l0aGluIGEgcGF0aCB3aG9zZSBuYW1lIGluY2x1ZGVkIG9uZSBvciBtb3JlIHNwYWNlcy4gVGhpcyBpcyBkdWUKICAgdG8gYSBmbGF3IGluIGF1dG9tYWtlICgxLjkuNiBhbmQgZWFybGllcikuIEkndmUgbm93IHdvcmtlZCBhcm91bmQgaXQgYnkKQEAgLTY3OTksNyArNjc5OSw3IEBACiBWZXJzaW9uIDcuMTUuMSAoNyBEZWNlbWJlciAyMDA1KQogCiBEYW5pZWwgKDYgRGVjZW1iZXIgMjAwNSkKLS0gRnVsbCB0ZXh0IGhlcmU6IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9hZHZfMjAwNTEyMDcuaHRtbCBQb2ludGVkIG91dCBieQorLSBGdWxsIHRleHQgaGVyZTogaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9hZHZfMjAwNTEyMDcuaHRtbCBQb2ludGVkIG91dCBieQogICBTdGVmYW4gRXNzZXIuCiAKICAgVlVMTkVSQUJJTElUWQpAQCAtNjg1MSwxMCArNjg1MSwxMCBAQAogRGFuaWVsICgxNCBOb3ZlbWJlciAyMDA1KQogLSBRdWFnbWlyZSByZXBvcnRlZCB0aGF0IGhlIG5lZWRlZCB0byByYWlzZSBhIE5UTE0gYnVmZmVyIGZvciBTU1BJIHRvIHdvcmsKICAgcHJvcGVybHkgZm9yIGEgY2FzZSwgYW5kIHNvIHdlIGRpZC4gV2UgcmFpc2VkIGl0IGV2ZW4gZm9yIG5vbi1TU1BJIGJ1aWxkcwotICBidXQgaXQgc2hvdWxkIG5vdCBkbyBhbnkgaGFybS4gaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTM1NjcxNQorICBidXQgaXQgc2hvdWxkIG5vdCBkbyBhbnkgaGFybS4gaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTEzNTY3MTUKIAogLSBKYW4gS3VuZGVyJ3MgZGViaWFuIGJ1ZyByZXBvcnQKLSAgaHR0cDovL2J1Z3MuZGViaWFuLm9yZy9jZ2ktYmluL2J1Z3JlcG9ydC5jZ2k/YnVnPTMzODY4MCBpZGVudGlmaWVkIGEgd2VpcmQKKyAgaHR0cHM6Ly9idWdzLmRlYmlhbi5vcmcvY2dpLWJpbi9idWdyZXBvcnQuY2dpP2J1Zz0zMzg2ODAgaWRlbnRpZmllZCBhIHdlaXJkCiAgIGVycm9yIG1lc3NhZ2UgZm9yIHdoZW4geW91IHRyeSB0byB1cGxvYWQgYSBmaWxlIGFuZCB0aGUgcmVxdWVzdGVkIGRpcmVjdG9yeQogICBkb2Vzbid0IGV4aXN0IG9uIHRoZSB0YXJnZXQgc2VydmVyLgogCkBAIC02ODY0LDcgKzY4NjQsNyBAQAogRGFuaWVsICgxMyBOb3ZlbWJlciAyMDA1KQogLSBEZWJpYW4gYnVnIHJlcG9ydCAzMzg2ODEgYnkgSmFuIEt1bmRlcjogbWFrZSBjdXJsIGJldHRlciBkZXRlY3QgYW5kIHJlcG9ydAogICBiYWQgbGltaXQtcmF0ZSB1bml0czoKLSAgaHR0cDovL2J1Z3MuZGViaWFuLm9yZy9jZ2ktYmluL2J1Z3JlcG9ydC5jZ2k/YnVnPTMzODY4MSBOb3cgY3VybCB3aWxsIHJldHVybgorICBodHRwczovL2J1Z3MuZGViaWFuLm9yZy9jZ2ktYmluL2J1Z3JlcG9ydC5jZ2k/YnVnPTMzODY4MSBOb3cgY3VybCB3aWxsIHJldHVybgogICBlcnJvciBpZiBhIGJhZCB1bml0IGlzIHVzZWQuCiAKIC0gVGhhbmtzIHRvIHRoaXMgbmljZSBzdW1tYXJ5IG9mIHBvbGwoKSBpbXBsZW1lbnRhdGlvbnM6CkBAIC02ODc1LDEyICs2ODc1LDEyIEBACiAKIERhbmllbCAoMTIgTm92ZW1iZXIgMjAwNSkKIC0gRXVnZW5lIEtvdGx5YXJvdiBmb3VuZCBvdXQgdGhhdCBjeWd3aW4ncyBwb2xsKCkgZnVuY3Rpb24gaXNuJ3QgZG9pbmcgdGhpbmdzCi0gIHJpZ2h0OiBodHRwOi8vY3VybC5oYXh4LnNlL21haWwvYXJjaGl2ZS0yMDA1LTExLzAwNDUuaHRtbCBzbyB3ZSBub3cgZGlzYWJsZQorICByaWdodDogaHR0cHM6Ly9jdXJsLmhheHguc2UvbWFpbC9hcmNoaXZlLTIwMDUtMTEvMDA0NS5odG1sIHNvIHdlIG5vdyBkaXNhYmxlCiAgIHBvbGwoKSBhbmQgdXNlIHNlbGVjdCgpIG9uIGN5Z3dpbiB0b28gKHdlIGFscmVhZHkgZG8gdGhlIHNhbWUgY2hvaWNlIG9uIE1hYwogICBPUyBYKQogCiAtIERpbWEgQmFyc2t5IHBhdGNoZWQgcHJvYmxlbSAjMTM0ODkzMDogdGhlIEdudVRMUyBjb2RlIGNvbXBsZXRlbHkgaWdub3JlZAotICBjbGllbnQgY2VydGlmaWNhdGVzISAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTM0ODkzMCkuCisgIGNsaWVudCBjZXJ0aWZpY2F0ZXMhIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTM0ODkzMCkuCiAKIERhbmllbCAoMTAgTm92ZW1iZXIgMjAwNSkKIC0gRGF2aWQgTGFuZyBmaXhlZCBJUHY2IHN1cHBvcnQgZm9yIFRGVFAhCkBAIC02OTMxLDE0ICs2OTMxLDE0IEBACiAKIERhbmllbCAoMjcgT2N0b2JlciAyMDA1KQogLSBOaXMgSm9yZ2Vuc2VuIGZpbGVkIGJ1ZyByZXBvcnQgIzEzMzg2NDgKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTEzMzg2NDgpIHdoaWNoIHJlYWxseSBpcyBtb3JlIG9mIGEKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xMzM4NjQ4KSB3aGljaCByZWFsbHkgaXMgbW9yZSBvZiBhCiAgIGZlYXR1cmUgcmVxdWVzdCwgYnV0IGFueXdheS4gSXQgcG9pbnRlZCBvdXQgdGhhdCAtLW1heC1yZWRpcnMgZGlkIG5vdCBhbGxvdwogICBpdCB0byBiZSBzZXQgdG8gMCwgd2hpY2ggdGhlbiB3b3VsZCByZXR1cm4gYW4gZXJyb3IgY29kZSBvbiB0aGUgZmlyc3QKICAgTG9jYXRpb246IGZvdW5kLiBCYXNlZCBvbiBOaXMnIHBhdGNoLCBub3cgbGliY3VybCBzdXBwb3J0cyBDVVJMT1BUX01BWFJFRElSUwogICBzZXQgdG8gMCwgb3IgLTEgZm9yIGluZmluaXR5LiBBZGRlZCB0ZXN0IGNhc2UgMjc0IHRvIHZlcmlmeS4KIAogLSB0b21taW5rW2F0XXBvc3QucGwgcmVwb3J0ZWQgaW4gYnVnIHJlcG9ydCAjMTMzNzcyMwotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTMzNzcyMykgdGhhdCBjdXJsIGNvdWxkIG5vdCB1cGxvYWQKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xMzM3NzIzKSB0aGF0IGN1cmwgY291bGQgbm90IHVwbG9hZAogICBiaW5hcnkgZGF0YSBmcm9tIHN0ZGluIG9uIFdpbmRvd3MgaWYgdGhlIGRhdGEgY29udGFpbmVkIGNvbnRyb2wtWiAoaGV4IDFhKQogICBzaW5jZSB0aGF0IGlzIHRyZWF0ZWQgYXMgZW5kLW9mLWZpbGUgd2hlbiByZWFkIGluIHRleHQgbW9kZS4gR2lzbGUgVmFuZW0KICAgcG9pbnRlZCBvdXQgdGhlIGZpeCwgYW5kIEkgbWFkZSBib3RoIC1UIGFuZCAtLWRhdGEtYmluYXJ5IHRha2UgYWR2YW50YWdlIG9mCkBAIC02OTUyLDcgKzY5NTIsNyBAQAogCiBEYW5pZWwgKDI1IE9jdG9iZXIgMjAwNSkKIC0gQW1vbCBQYXR0ZWthciByZXBvcnRlZCBhIGJ1ZyB3aXRoIGdyZWF0IGRldGFpbCBhbmQgYSBmaW5lIGV4YW1wbGUgaW4gYnVnCi0gICMxMzI2MzA2IChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xMzI2MzA2KS4gV2hlbiB1c2luZyB0aGUgbXVsdGkKKyAgIzEzMjYzMDYgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xMzI2MzA2KS4gV2hlbiB1c2luZyB0aGUgbXVsdGkKICAgaW50ZXJmYWNlIGFuZCBjb25uZWN0aW5nIHRvIGEgaG9zdCB3aXRoIG11bHRpcGxlIElQIGFkZHJlc3NlcywgYW5kIG9uZSBvZgogICB0aGUgYWRkcmVzc2VzIGZhaWxzIHRvIGNvbm5lY3QgKHRoZSBzZXJ2ZXIgbXVzdCBleGlzdCBhbmQgcmVzcG9uZCwganVzdCBub3QKICAgYWNjZXB0IGNvbm5lY3Rpb25zKSBsaWJjdXJsIGxlYWtzIGEgc29ja2V0IGRlc2NyaXB0b3IuIFRoYW5rcyB0byB0aGUgZmluZQpAQCAtNjk2MCw3ICs2OTYwLDcgQEAKIAogRGFuaWVsICgyMiBPY3RvYmVyIDIwMDUpCiAtIERpbWEgQmFyc2t5IHJlcG9ydGVkIGEgcHJvYmxlbSB3aXRoIEdudVRMUy1lbmFibGVkIGxpYmN1cmwgaW4gYnVnIHJlcG9ydAotICAjMTMzNDMzOCAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTMzNDMzOCkuIFdoZW4gcmVhZGluZyBhbiBTU0wKKyAgIzEzMzQzMzggKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xMzM0MzM4KS4gV2hlbiByZWFkaW5nIGFuIFNTTAogICBzdHJlYW0gZnJvbSBhIHNlcnZlciBhbmQgdGhlIHNlcnZlciByZXF1ZXN0cyBhICJyZWhhbmRzaGFrZSIsIHRoZSBjdXJyZW50CiAgIGNvZGUgc2ltcGx5IHJldHVybnMgdGhpcyBhcyBhbiBlcnJvci4gSSBoYXZlIG5vIGdvb2Qgd2F5IHRvIHRlc3QgdGhpcywgYnV0CiAgIEkndmUgYWRkZWQgYSBjcnVkZSBhdHRlbXB0IG9mIGRlYWxpbmcgd2l0aCB0aGlzIHNpdHVhdGlvbiBzbGlnaHRseSBiZXR0ZXIgLQpAQCAtNjk3MiwxMSArNjk3MiwxMSBAQAogRGFuaWVsICgyMSBPY3RvYmVyIDIwMDUpCiAtICJPZmVyIiByZXBvcnRlZCBhIHByb2JsZW0gd2hlbiBsaWJjdXJsIHJlLXVzZWQgYSBjb25uZWN0aW9uIGFuZCBmYWlsZWQgdG8gZG8KICAgaXQsIGl0IGNvdWxkIHRoZW4gYWNjaWRlbnRhbGx5IGFjdHVhbGx5IGNyYXNoLiBQcmVzdW1hYmx5LCB0aGlzIGNvbmNlcm5zIEZUUAotICBjb25uZWN0aW9ucy4gIGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTEzMzAzMTAKKyAgY29ubmVjdGlvbnMuICBodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTMzMDMxMAogCiAtIFRlbXByaW11cyBpbXByb3ZlZCB0aGUgTVNWQyBtYWtlZmlsZSBzbyB0aGF0IHRoZSBzdGF0aWMgZGVidWcgU1NMIGxpYnMgYXJlCiAgIGxpbmtlZCB0byB0aGUgZXhlY3V0YWJsZSBhbmQgbm90IHRvIHRoZSBsaWJjdXJsZC5saWIKLSAgaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTMyNjY3NgorICBodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTMyNjY3NgogCiAtIEJyYWRmb3JkIEJydWNlIG1hZGUgdGhlIHdpbmRvd3MgcmVzb2x2ZXIgY29kZSBwcm9wZXJseSByZXR1cm4KICAgQ1VSTEVfQ09VTEROVF9SRVNPTFZFX1BST1hZIGFuZCBDVVJMRV9DT1VMRE5UX1JFU09MVkVfSE9TVCBvbiByZXNvbHZpbmcKQEAgLTY5OTEsNyArNjk5MSw3IEBACiAtIFRlbXByaW11cyBpbXByb3ZlZCB0aGUgTVNWQyBtYWtlZmlsZTogIm1ha2VzIGEgYnVpbGQgb3B0aW9uIGF2YWlsYWJsZSBzbyBpZgogICB5b3Ugc2V0IHJ0bGliY2ZnPXN0YXRpYyBmb3IgdGhlIG1ha2UsIHRoZW4gaXQgd291bGQgYnVpbGQgd2l0aCAvTVQuIFRoZQogICBkZWZhdWx0IGJlaGF2aW91ciBpcyAvTUQgKHRoZSBvcmlnaW5hbCkuIgotICBodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xMzI2NjY1CisgIGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xMzI2NjY1CiAKIERhbmllbCAoMTQgT2N0b2JlciAyMDA1KQogLSBSZXZlcnRlZCB0aGUgTElCQ1VSTF9WRVJTSU9OX05VTSBjaGFuZ2UgZnJvbSBPY3RvYmVyIDYuIEFzIERhdmUgRHJpYmluCkBAIC03MDEzLDcgKzcwMTMsNyBAQAogICAgICAgYXBwcm9wcmlhdGUgSFRUUCAzMHggcmVzcG9uc2UgY29kZSkgYW5kIHRoZSBuZXcgVVJMIGNvbnRhaW5zIGEgVVJMIHdpdGgKICAgICAgIGEgdXNlciBuYW1lIGFuZCBkb21haW4gbmFtZSB0aGF0IHRvZ2V0aGVyIGFyZSBsb25nZXIgdGhhbiAxOTIgYnl0ZXMKIAotICBTZWUgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL3NlY3VyaXR5Lmh0bWwgZm9yIGZ1cnRoZXIgZGV0YWlscyBhbmQgdXBkYXRlcworICBTZWUgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9zZWN1cml0eS5odG1sIGZvciBmdXJ0aGVyIGRldGFpbHMgYW5kIHVwZGF0ZXMKIAogRGFuaWVsICg1IE9jdG9iZXIgMjAwNSkKIC0gRGFycnlsIEhvdXNlIHJlcG9ydGVkIGEgcHJvYmxlbSB3aXRoIHVzaW5nIC16IHRvIGRvd25sb2FkIGZpbGVzIGZyb20gRlRQLgpAQCAtNzAyOSw3ICs3MDI5LDcgQEAKICAgdGhlIE1FU1QgYW5kIENFU1QgdGltZSB6b25lcy4KIAogRGFuaWVsICgyNyBTZXB0ZW1iZXIgMjAwNSkKLS0gRGF2aWQgWWFuIGZpbGVkIGJ1ZyAjMTI5OTE4MSAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTI5OTE4MSkKKy0gRGF2aWQgWWFuIGZpbGVkIGJ1ZyAjMTI5OTE4MSAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTEyOTkxODEpCiAgIHRoYXQgaWRlbnRpZmllZCBhIHNpbGx5IHByb2JsZW0gd2l0aCBDb250ZW50LVJhbmdlOiBoZWFkZXJzIHdpdGggdGhlICdieXRlcycKICAga2V5d29yZCB3cml0dGVuIGluIGEgZGlmZmVyZW50IGNhc2UgdGhhbiBhbGwgbG93ZXJjYXNlISBJdCB3b3VsZCBjYXVzZSBhCiAgIHNlZ2ZhdWx0IQpAQCAtNzA0MCwxNSArNzA0MCwxNSBAQAogCiBEYW5pZWwgKDIxIFNlcHRlbWJlciAyMDA1KQogLSBGaXhlZCAiY3V0IG9mZiIgc2VudGVuY2UgaW4gdGhlIGxpYmN1cmwtdHV0b3JpYWwgbWFuIHBhZ2U6Ci0gIGh0dHA6Ly9idWdzLmRlYmlhbi5vcmcvY2dpLWJpbi9idWdyZXBvcnQuY2dpP2J1Zz0zMjkzMDUKKyAgaHR0cHM6Ly9idWdzLmRlYmlhbi5vcmcvY2dpLWJpbi9idWdyZXBvcnQuY2dpP2J1Zz0zMjkzMDUKIAogLSBDbGFyaWZpZWQgaW4gdGhlIGN1cmxfZWFzeV9zZXRvcHQgbWFuIHBhZ2Ugd2hhdCB0aGUgZGVmYXVsdAogICBDVVJMT1BUX1dSSVRFRlVOQ1RJT04gYW5kIENVUkxPUFRfV1JJVEVEQVRBIG1lYW46Ci0gIGh0dHA6Ly9idWdzLmRlYmlhbi5vcmcvY2dpLWJpbi9idWdyZXBvcnQuY2dpP2J1Zz0zMjkzMTEKKyAgaHR0cHM6Ly9idWdzLmRlYmlhbi5vcmcvY2dpLWJpbi9idWdyZXBvcnQuY2dpP2J1Zz0zMjkzMTEKIAogLSBDbGFyaWZpZWQgaW4gdGhlIGN1cmxfZWFzeV9zZXRvcHQgbWFuIHBhZ2UgdGhhdCBDVVJMT1BUX0VSUk9SQlVGRkVSCiAgIHNvbWV0aW1lcyBkb2Vzbid0IGZpbGwgaW4gdGhlIGJ1ZmZlciBldmVuIHRob3VnaCBpdCBpcyBzdXBwb3NlZCB0bzoKLSAgaHR0cDovL2J1Z3MuZGViaWFuLm9yZy9jZ2ktYmluL2J1Z3JlcG9ydC5jZ2k/YnVnPTMyOTMxMworICBodHRwczovL2J1Z3MuZGViaWFuLm9yZy9jZ2ktYmluL2J1Z3JlcG9ydC5jZ2k/YnVnPTMyOTMxMwogCiAtIFdoZW4gQ1VSTEVfVVJMX01BTEZPUk1BVCBpcyByZXR1cm5lZCBkdWUgdG8gYSBtaXNzaW5nIFVSTCwgaXQgbm93IGhhcyBhbgogICBlcnJvciBzdHJpbmcgc2V0LgpAQCAtNzA3NSw3ICs3MDc1LDcgQEAKIERhbmllbCAoNCBTZXB0ZW1iZXIgMjAwNSkKIC0gSSBhcHBsaWVkIE5pY29sYXMgRnJhbudvaXMnIG1hbiBwYWdlIHBhdGNoIGhlIHBvc3RlZCB0byB0aGUgRGViaWFuIGJ1ZwogICB0cmFja2VyLiBJdCBjb3JyZWN0ZWQgdHdvIGxpbmVzIHRoYXQgc3RhcnRlZCB3aXRoIGFwb3N0cm9waGVzLCB3aGljaCBpc24ndAotICBsZWdhbCBucm9mZiBmb3JtYXQuIGh0dHA6Ly9idWdzLmRlYmlhbi5vcmcvY2dpLWJpbi9idWdyZXBvcnQuY2dpP2J1Zz0zMjY1MTEKKyAgbGVnYWwgbnJvZmYgZm9ybWF0LiBodHRwczovL2J1Z3MuZGViaWFuLm9yZy9jZ2ktYmluL2J1Z3JlcG9ydC5jZ2k/YnVnPTMyNjUxMQogCiAtIEFkZGVkIC0tZnRwLXNraXAtcGFzdi1pcCB0byB0aGUgY29tbWFuZCBsaW5lIHRvb2wsIHRoYXQgc2V0cyB0aGUgbmV3CiAgIENVUkxPUFRfRlRQX1NLSVBfUEFTVl9JUCBvcHRpb24uIEl0IG1ha2VzIGxpYmN1cmwgcmUtdXNlIHRoZSBjb250cm9sCkBAIC03MTc5LDcgKzcxNzksNyBAQAogCiBEYW5pZWwgKDggQXVndXN0IDIwMDUpCiAtIEpvbiBHcnViYnMgZmlsZWQgYnVnIHJlcG9ydCAjMTI0OTk2MgotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTI0OTk2Mikgd2hpY2ggaWRlbnRpZmllZCBhIHByb2JsZW0KKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xMjQ5OTYyKSB3aGljaCBpZGVudGlmaWVkIGEgcHJvYmxlbQogICB3aXRoIE5UTE0gb24gYSBIVFRQIHByb3h5IGlmIGFuIEZUUCBVUkwgd2FzIGdpdmVuLiBsaWJjdXJsIG5vdyBwcm9wZXJseQogICBzd2l0Y2hlcyB0byBwdXJlIEhUVFAgaW50ZXJuYWxseSB3aGVuIGFuIEhUVFAgcHJveHkgaXMgdXNlZCwgZXZlbiBmb3IgRlRQCiAgIFVSTHMuIFRoZSBwcm9ibGVtIHdvdWxkIGFsc28gb2NjdXIgd2l0aCBvdGhlciBtdWx0aS1wYXNzIGF1dGggbWV0aG9kcy4KQEAgLTcyMTIsNyArNzIxMiw3IEBACiAKIERhbmllbCAoNSBKdWx5IDIwMDUpCiAtIEdpc2xlIFZhbmVtIGNhbWUgdXAgd2l0aCBhIG5pY2UgbGl0dGxlIHdvcmstYXJvdW5kIGZvciBidWcgIzEyMzAxMTgKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTEyMzAxMTgpLiBJdCBzZWVtcyB0aGUgV2luZG93cyAoTVNWQykKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xMjMwMTE4KS4gSXQgc2VlbXMgdGhlIFdpbmRvd3MgKE1TVkMpCiAgIGxpYmMgdGltZSBmdW5jdGlvbnMgbWF5IHJldHVybiBkYXRhIG9uZSBob3VyIG9mZiBpZiBUWiBpcyBub3Qgc2V0IGFuZAogICBhdXRvbWF0aWMgRFNUIGFkanVzdG1lbnQgaXMgZW5hYmxlZC4gVGhpcyBtYWRlIGN1cmxfZ2V0ZGF0ZSgpIHJldHVybiB3cm9uZwogICB2YWx1ZSwgYW5kIGl0IGFsc28gY29uY2VybmVkIGludGVybmFsIGNvb2tpZSBleHBpcmF0aW9ucyBldGMuCkBAIC03MjUyLDggKzcyNTIsOCBAQAogCiBEYW5pZWwgKDE0IEp1bmUgMjAwNSkKIC0gR2lzbGUgVmFuZW0gZml4ZWQgYSBwb3RlbnRpYWwgdGhyZWFkIGhhbmRsZSBsZWFrLiBCdWcgcmVwb3J0ICMxMjE2NTAwCi0gIChodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xMjE2NTAwKS4gIENvbW1lbnQgaW4KLSAgaHR0cDovL2N1cmwuaGF4eC5zZS9tYWlsL2xpYi0yMDA1LTA2LzAwNTkuaHRtbAorICAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTEyMTY1MDApLiAgQ29tbWVudCBpbgorICBodHRwczovL2N1cmwuaGF4eC5zZS9tYWlsL2xpYi0yMDA1LTA2LzAwNTkuaHRtbAogCiBEYW5pZWwgKDEzIEp1bmUgMjAwNSkKIC0gTWFkZSBidWlsZGNvbmYgcnVuIGxpYnRvb2xpemUgaW4gdGhlIGFyZXMgZGlyIHRvbyAoaW5zcGlyZWQgYnkgVHVwb25lJ3MKQEAgLTcyODEsNyArNzI4MSw3IEBACiAKIERhbmllbCAoMyBKdW5lIDIwMDUpCiAtIEFkZGVkIGRvY3MvbGliY3VybC9nZXRpbmZvLXRpbWVzLCBiYXNlZCBvbiBmZWVkYmFjayBmcm9tICdFZGknOgotICBodHRwOi8vY3VybC5oYXh4LnNlL2ZlZWRiYWNrL2Rpc3BsYXkuY2dpP2lkPTExMTc4MzI1Nzk4Mjk5JnN1cHBvcnQ9eWVzCisgIGh0dHBzOi8vY3VybC5oYXh4LnNlL2ZlZWRiYWNrL2Rpc3BsYXkuY2dpP2lkPTExMTc4MzI1Nzk4Mjk5JnN1cHBvcnQ9eWVzCiAKIC0gQW5kcmVzIEdhcmNpYSBwcm92aWRlZCB5ZXQgYW5vdGhlciB0ZXh0IG1vZGUgcGF0Y2ggZm9yIHNldmVyYWwgdGVzdCBjYXNlcyBzbwogICB0aGF0IHRoZXkgZG8gdGV4dCBjb21wYXJpc2lvbnMgYmV0dGVyIG9uIFdpbmRvd3MgKG5ld2xpbmUtd2lzZSkuCkBAIC03Mjg5LDcgKzcyODksNyBAQAogRGFuaWVsICgxIEp1bmUgMjAwNSkKIC0gVGhlIGNvbmZpZ3VyZSBjaGVjayBmb3IgYy1hcmVzIG5vdyBhZGRzIHRoZSBjYXJlcyBsaWIgYmVmb3JlIHRoZSBvdGhlciBsaWJzLAogICB0byBtYWtlIGl0IGJ1aWxkIGZpbmUgd2l0aCBtaW5ndy4gSW5zcGlyZWQgYnkgVHVwb25lIEFsZnJlZG8ncyBidWcgcmVwb3J0Ci0gIGFuZCBwYXRjaDogaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTIxMjk0MAorICBhbmQgcGF0Y2g6IGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xMjEyOTQwCiAKIERhbmllbCAoMzEgTWF5IDIwMDUpCiAtIFRvZGQgS3VsZXN6YSByZXBvcnRlZCBhIGZsYXcgaW4gdGhlIHByb3h5IG9wdGlvbiwgc2luY2UgYSBudW1lcmljYWwgSVB2NgpAQCAtNzMwMSw3ICs3MzAxLDcgQEAKIC0gRXJpYyBDb29wZXIgcmVwb3J0ZWQgYWJvdXQgYSBwcm9ibGVtIHdpdGggSFRUUCBzZXJ2ZXJzIHRoYXQgcmVzcG9uZHMgd2l0aAogICBiaW5hcnkgemVyb2VzIHdpdGhpbiB0aGUgaGVhZGVycy4gVGhleSBjb25mdXNlZCBsaWJjdXJsIHRvIGRvIHdyb25nIHNvIHRoZQogICBkb3dubG9hZGVkIGhlYWRlcnMgYmVjb21lIGluY29tcGxldGUuIFRoZSBmaXggaXMgbm93IHZlcmlmaWVkIHdpdGggdGVzdCBjYXNlCi0gIDI2Mi4gaHR0cDovL2J1Z3MuZGViaWFuLm9yZy9jZ2ktYmluL2J1Z3JlcG9ydC5jZ2k/YnVnPTMxMDk0OAorICAyNjIuIGh0dHBzOi8vYnVncy5kZWJpYW4ub3JnL2NnaS1iaW4vYnVncmVwb3J0LmNnaT9idWc9MzEwOTQ4CiAKIERhbmllbCAoMjUgTWF5IDIwMDUpCiAtIEZpeGVkIHByb2JsZW1zIHdpdGggdGhlIHRlc3Qgc3VpdGUsIGFuZCBpbiBwYXJ0aWN1bGFyIHRoZSBGVFAgdGVzdCBjYXNlcwpAQCAtNzMyNCw3ICs3MzI0LDcgQEAKIAogRGFuaWVsICgxOCBNYXkgMjAwNSkKIC0gSm9obiBNY0dvd2FuIGlkZW50aWZpZWQgYSBwcm9ibGVtIGluIGJ1ZyByZXBvcnQgIzEyMDQ0MzUKLSAgKGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTEyMDQ0MzUpIHdpdGggbWFsZm9ybWVkIFVSTHMgbGlrZQorICAoaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTEyMDQ0MzUpIHdpdGggbWFsZm9ybWVkIFVSTHMgbGlrZQogICAiaHR0cDovL3NvbWVob3N0P2RhdGEiIGFzIGl0IGFkZGVkIGEgc2xhc2ggdG9vIG11Y2ggaW4gdGhlIHJlcXVlc3QgKCJHRVQKICAgLz9kYXRhLyIuLi4pLiBBZGRlZCB0ZXN0IGNhc2UgMjYwIHRvIHZlcmlmeS4KIApAQCAtNzM1MCw3ICs3MzUwLDcgQEAKICAgb3ZlciBhIHByb3h5IHRoYXQgdXNlcyBOVExNIGF1dGhlbnRpY2F0aW9uLCBsaWJjdXJsIGZhaWxlZCB0byB1c2UgTlRMTSBhZ2FpbgogICBwcm9wZXJseSAodGhlIGF1dGggbWV0aG9kIHdhcyBhY2NpZGVudGFsbHkgcmVzZXQgdG8gdGhlIHNhbWUgYXMgaGFkIGJlZW4gc2V0CiAgIGZvciBob3N0IGF1dGgsIHdoaWNoIGRlZmF1bHRzIHRvIEJhc2ljKS4gQnVnIHJlcG9ydCAjMTIwMDY2MQotICAoaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTIwMDY2MSkgaWRlbnRpZmllZCB0aGUgdGhlIHByb2JsZW0gYW5kCisgIChodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTIwMDY2MSkgaWRlbnRpZmllZCB0aGUgdGhlIHByb2JsZW0gYW5kCiAgIHRoZSBmaXguCiAKIC0gSWYgLXovLS10aW1lLWNvbmQgaXMgdXNlZCB3aXRoIGFuIGludmFsaWQgZGF0ZSBzeW50YXgsIHRoaXMgaXMgbm8gbG9uZ2VyCkBAIC03Mzg5LDcgKzczODksNyBAQAogRGFuaWVsICgxMCBNYXkgMjAwNSkKIC0gSGFsZi1iYWtlZCBhdHRlbXB0IHRvIGJhaWwgb3V0IGlmIHNlbGVjdCgpIHJldHVybnMgX29ubHlfIGVycm9yZmRzIHdoZW4gdGhlCiAgIHRyYW5zZmVyIGlzIGluIHByb2dyZXNzLiBBbiBhdHRlbXB0IHRvIGZpeCBBbGxhbidzIHByb2JsZW0uIFNlZQotICBodHRwOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMDUtMDUvMDA3My5odG1sIGFuZCB0aGUgcmVzdCBvZiB0aGF0IHRocmVhZAorICBodHRwczovL2N1cmwuaGF4eC5zZS9tYWlsL2xpYi0yMDA1LTA1LzAwNzMuaHRtbCBhbmQgdGhlIHJlc3Qgb2YgdGhhdCB0aHJlYWQKICAgZm9yIGRldGFpbHMuCiAKICAgSSdtIHN0aWxsIG5vdCBzdXJlIHRoaXMgaXMgdGhlIHJpZ2h0IGZpeCwgYnV0Li4uCkBAIC03NjU4LDcgKzc2NTgsNyBAQAogRGFuaWVsICgyMiBGZWJydWFyeSAyMDA1KQogLSBOVExNIGFuZCBmdHAta3JiNCBidWZmZXIgb3ZlcmZsb3cgZml4ZWQsIGFzIHJlcG9ydGVkIGhlcmU6CiAgIGh0dHA6Ly93d3cuc2VjdXJpdHlmb2N1cy5jb20vYXJjaGl2ZS8xLzM5MTA0MiBhbmQgdGhlIENBTiByZXBvcnQgaGVyZToKLSAgaHR0cDovL2N2ZS5taXRyZS5vcmcvY2dpLWJpbi9jdmVuYW1lLmNnaT9uYW1lPUNBTi0yMDA1LTA0OTAKKyAgaHR0cHM6Ly9jdmUubWl0cmUub3JnL2NnaS1iaW4vY3ZlbmFtZS5jZ2k/bmFtZT1DQU4tMjAwNS0wNDkwCiAKICAgSWYgdGhlc2Ugc2VjdXJpdHkgZ3V5cyB3ZXJlIHNlcmlvdXMsIHdlJ2QgYmVlbiBub3RpZmllZCBpbiBhZHZhbmNlIGFuZCB3ZQogICBjb3VsZCd2ZSBzYXZlZCBhIGZldyBvZiB5b3UgYSBsaXR0bGUgc3VycHJpc2UsIGJ1dCBub3cgd2Ugd2VyZW4ndC4KQEAgLTc3MTksNyArNzcxOSw3IEBACiAKIERhbmllbCAoOSBGZWJydWFyeSAyMDA1KQogLSBEYXZpZCBCeXJvbiBmaXhlZCBoaXMgU1NMIHByb2JsZW1zLCBpbml0aWFsbHkgbWVudGlvbmVkIGhlcmU6Ci0gIGh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC9saWItMjAwNS0wMS8wMjQwLmh0bWwuIEl0IHR1cm5lZCBvdXQgd2UgZGlkbid0IHVzZQorICBodHRwczovL2N1cmwuaGF4eC5zZS9tYWlsL2xpYi0yMDA1LTAxLzAyNDAuaHRtbC4gSXQgdHVybmVkIG91dCB3ZSBkaWRuJ3QgdXNlCiAgIFNTTF9wZW5kaW5nKCkgYXMgd2Ugc2hvdWxkLgogCiAtIENvbnZlcnRlZCBsb3RzIG9mIEZUUCBjb2RlIHRvIGEgc3RhdGVtYWNoaW5lLCBzbyB0aGF0IHRoZSBtdWx0aSBpbnRlcmZhY2UKQEAgLTc5MTgsNyArNzkxOCw3IEBACiAgIGh0dHA6Ly93d3cuZ3JlZW5oaWxscy5jby51ay9tYWsvZ2VudG9vL2N1cmwtZWludHItYnVnLmMsIEkgbm93IG1hZGUgdGhlCiAgIHNlbGVjdCgpIGFuZCBwb2xsKCkgY2FsbHMgcHJvcGVybHkgbG9vcCBpZiB0aGV5IHJldHVybiAtMSBhbmQgZXJybm8gaXMKICAgRUlOVFIuIGdsaWJjIGRvY3MgZm9yIHRoaXMgaXMgZm91bmQgaGVyZToKLSAgaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2xpYmMvbWFudWFsL2h0bWxfbm9kZS9JbnRlcnJ1cHRlZC1QcmltaXRpdmVzLmh0bWwKKyAgaHR0cHM6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9saWJjL21hbnVhbC9odG1sX25vZGUvSW50ZXJydXB0ZWQtUHJpbWl0aXZlcy5odG1sCiAKICAgVGhpcyBsYXN0IGxpbmsgc2F5cyBCU0QgZG9lc24ndCBoYXZlIHRoaXMgImVmZmVjdCIuIFdpbGwgdGhlcmUgYmUgYSBwcm9ibGVtCiAgIGlmIHdlIGRvIHRoaXMgdW5jb25kaXRpb25hbGx5PwpAQCAtNzkzMSw3ICs3OTMxLDcgQEAKICAgdXNpbmcgYSBjdXN0b20gSG9zdDogaGVhZGVyIGFuZCBjdXJsIGZhaWxzIHRvIHNlbmQgYSByZXF1ZXN0IG9uIGEgcmUtdXNlZAogICBwZXJzaXN0ZW50IGNvbm5lY3Rpb24gYW5kIHRodXMgY3JlYXRlcyBhIG5ldyBjb25uZWN0aW9uIGFuZCByZXNlbmRzIGl0LiBJdAogICB0aGVuIHNlbnQgdHdvIEhvc3Q6IGhlYWRlcnMuIEN5cmlsbCdzIGFuYWx5c2lzIHdhcyBwb3N0ZWQgaGVyZToKLSAgaHR0cDovL2N1cmwuaGF4eC5zZS9tYWlsL2FyY2hpdmUtMjAwNS0wMS8wMDIyLmh0bWwKKyAgaHR0cHM6Ly9jdXJsLmhheHguc2UvbWFpbC9hcmNoaXZlLTIwMDUtMDEvMDAyMi5odG1sCiAKIC0gQnJ1Y2UgTWl0Y2hlbmVyIGlkZW50aWZpZWQgKGJ1ZyByZXBvcnQgIzEwOTk2NDApIHRoZSBuZXZlci1lbmRpbmcgU09DS1M1CiAgIHByb2JsZW0gd2l0aCB0aGUgdmVyc2lvbiBieXRlIGFuZCB0aGUgY2hlY2sgZm9yIGJhZCB2ZXJzaW9ucy4gQnJ1Y2UgaGFzIGxvdHMKQEAgLTg0ODcsNyArODQ4Nyw3IEBACiAgIGh0dHA6Ly9ic2RmdHBkLXNzbC5zYy5ydS8iIHdoaWNoIGFjY29yZGluZ2x5IGRvZXNuJ3QgcHJvcGVybHkgd29yayB3aXRoIGN1cmwKICAgd2hlbiAiQVVUSCBTU0wiIGlzIGlzc3VlZCAoYWx0aG91Z2ggdGhlIHNlcnZlciByZXNwb25kcyBmaW5lIGFuZCBldmVyeXRoaW5nKQogICBidXQgcmVxdWlyZXMgdGhhdCBjdXJsIGlzc3VlcyAiQVVUSCBUTFMiIGluc3RlYWQuIFNlZQotICBodHRwOi8vY3VybC5oYXh4LnNlL2ZlZWRiYWNrL2Rpc3BsYXkuY2dpP2lkPTEwOTUxOTQ0OTM3NjAzJnN1cHBvcnQ9eWVzCisgIGh0dHBzOi8vY3VybC5oYXh4LnNlL2ZlZWRiYWNrL2Rpc3BsYXkuY2dpP2lkPTEwOTUxOTQ0OTM3NjAzJnN1cHBvcnQ9eWVzCiAKICAgSW50cm9kdWNpbmcgQ1VSTE9QVF9GVFBTU0xBVVRIIHRoYXQgYWxsb3dzIHRoZSBhcHBsaWNhdGlvbiB0byBzZWxlY3Qgd2hpY2gKICAgb2YgdGhlIEFVVEggc3RyaW5ncyB0byBhdHRlbXB0IGZpcnN0LgpAQCAtOTY1Niw3ICs5NjU2LDcgQEAKICAgY3VybHhfc3RydG9sbCgpIGZ1bmN0aW9uLiBUaGlzIGlzIG1hZGUgdG8gYWxsb3cgdGhlIGFwcCB0byB1c2UgZXhpc3RpbmcgY29kZSwKICAgYnV0IHdpdGhvdXQgcG9sbHV0aW5nIHRoZSBsaWJjdXJsIEFQSS4gRnVydGhlciBleHBsYW5hdGlvbnMgcG9zdGVkIGhlcmU6CiAKLSAgICBodHRwOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMDQtMDIvMDIxNS5odG1sCisgICAgaHR0cHM6Ly9jdXJsLmhheHguc2UvbWFpbC9saWItMjAwNC0wMi8wMjE1Lmh0bWwKIAogRGFuaWVsICgxOCBGZWJydWFyeSAyMDA0KQogLSBGaXhlZCBidWlsZGNvbmYgdG8gbm90IHVzZSAid2hpY2giIGFzIEFJWCBhbmQgVHJ1NjQgaGF2ZSB3aGF0IGhhdmUgYmVlbgpAQCAtOTc1OCw3ICs5NzU4LDcgQEAKICAgbWVzc2FnZXMgd2hlbiBiYWlsaW5nIG91dCBpbiB0aGUgdGhhdCBmdW5jdGlvbi4KIAogLSBUb3IgQXJudHNlbiBub3cgcHJvdmlkZXMgQUlYIGFuZCBJUklYICh1c2luZyBnY2MsIHhsYyBhbmQgdGhlIE1JUFNQcm8KLSAgY29tcGlsZXJzKSBhdXRvbWF0ZWQgYnVpbGQgbG9ncyAoaHR0cDovL2N1cmwuaGF4eC5zZS9hdXRvLykgYW5kIHdlJ3ZlIGZpeGVkCisgIGNvbXBpbGVycykgYXV0b21hdGVkIGJ1aWxkIGxvZ3MgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2F1dG8vKSBhbmQgd2UndmUgZml4ZWQKICAgbnVtZXJvdXMgbWlub3IgcXVpcmtzIHRvIG1ha2UgbGVzcyB3YXJuaW5ncyBhcHBlYXIuCiAKIERhbmllbCAoNCBGZWJydWFyeSAyMDA0KQpAQCAtMTAxMDcsNyArMTAxMDcsNyBAQAogICBwcm9ibGVtcyByZWxhdGVkIHRvIGZ0cCBwYXJ0aWFsIGRvd25sb2FkczogaWYgYSBwYXJ0aWFsIHRyYW5zZmVyIGlzCiAgIGRldGVjdGVkLCB3ZSBtdXN0IGNsb3NlIHRoZSBjb25uZWN0aW9uIGFzIHdlIGNhbm5vdCBrbm93IGluIHdoYXQgc3RhdGUgaXQgaXMKICAgYW55bW9yZS4gVGhpcyBsb29rcyBsaWtlIGEgUHJvRlRQRCBidWc6Ci0gIGh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC9saWItMjAwMy0xMS8wMDc5Lmh0bWwKKyAgaHR0cHM6Ly9jdXJsLmhheHguc2UvbWFpbC9saWItMjAwMy0xMS8wMDc5Lmh0bWwKIAogRGFuaWVsICgxNyBOb3ZlbWJlcikKIC0gTWFjaWVqIFcuIFJvenlja2kgbWFkZSB0aGUgY29uZmlndXJlIHNjcmlwdCB1c2UgYSBjYWNoZSB2YXJpYWJsZSBmb3IgdGhlCkBAIC0xMDgwOCw3ICsxMDgwOCw3IEBACiAgIGNvbW1lbnRzIGFuZCBjbGFyaWZpZWQgdGhlIGN1cnJlbnQgY29kZSBtb3JlLiBVc2luZyB0aGUgbmV3IGtub3dsZWRnZSwgd2UKICAgc2hvdWxkIGJlIGFibGUgdG8gbWFrZSB0aGUgTlRMTSBzdHVmZiB3b3JrIGV2ZW4gYmV0dGVyLgogICBFcmljJ3Mgb3JpZ2luYWwgVVJMOiBodHRwOi8vZGF2ZW5wb3J0LnNvdXJjZWZvcmdlLm5ldC9udGxtLmh0bWwKLSAgVmVyc2lvbiBzdG9yZWQgYW5kIHByb3ZpZGVkIGF0IGN1cmwgc2l0ZTogaHR0cDovL2N1cmwuaGF4eC5zZS9yZmMvbnRsbS5odG1sCisgIFZlcnNpb24gc3RvcmVkIGFuZCBwcm92aWRlZCBhdCBjdXJsIHNpdGU6IGh0dHBzOi8vY3VybC5oYXh4LnNlL3JmYy9udGxtLmh0bWwKIAogLSBGaXhlZCB0aGUgbWlub3IgY29tcGlsZSBwcm9ibGVtcyBwcmUzIGhhZCBpZiBidWlsdCB3aXRob3V0IEdTU0FQSSBhbmQvb3IKICAgU1NMLgpAQCAtMTE0OTQsNyArMTE0OTQsNyBAQAogCiBEYW5pZWwgKDkgSmFuIDIwMDMpCiAtIFVwZGF0ZWQgbGliL3NoYXJlLmMgcXVpdGUgYSBiaXQgdG8gbWF0Y2ggdGhlIGRlc2lnbiBkb2N1bWVudCBhdAotICBodHRwOi8vY3VybC5oYXh4LnNlL2Rldi9zaGFyaW5nLnR4dCBhIGxvdCBtb3JlLgorICBodHRwczovL2N1cmwuaGF4eC5zZS9kZXYvc2hhcmluZy50eHQgYSBsb3QgbW9yZS4KIAogICBJJ2xsIHRyeSB0byB1cGRhdGUgdGhlIGRvY3VtZW50IHNvb25pc2guIHNoYXJlLmMgaXMgc3RpbGwgbm90IGFjdHVhbGx5IHVzZWQKICAgYnkgbGliY3VybCwgYnV0IHRoZSBBUEkgaXMgc2xvd2x5IGdldHRpbmcgdGhlcmUgYW5kIHdlIGNhbiBzdGFydApAQCAtMTE5MzUsNyArMTE5MzUsNyBAQAogCiBEYW5pZWwgKDMgU2VwIDIwMDIpCiAtIFVwZGF0ZWQgYWxsIHNvdXJjZSBjb2RlIGhlYWRlcnMgdG8gdXNlIE1JVC1saWNlbnNlIHJlZmVyZW5jZXMgb25seSwgYW5kCi0gIHBvaW50IHRvIHRoZSBDT1BZSU5HIGZpbGUgYW5kIHRoZSBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwKKyAgcG9pbnQgdG8gdGhlIENPUFlJTkcgZmlsZSBhbmQgdGhlIGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwKICAgVVJMLiBJJ3ZlIGN1dCBvdXQgYWxsIHJlZmVyZW5jZXMgdG8gTVBMIHRoYXQgSSBjb3VsZCBmaW5kLgogCiAtIENvcmVjdGVkIHRoZSBtYWtlZmlsZXMgdG8gbm90IGFsd2F5cyB1c2UgLWx6IHdoZW4gbGlua2luZwpAQCAtMTI1MDMsNyArMTI1MDMsNyBAQAogICB3aW5kb3dzIG1ha2VmaWxlcy4KIAogLSBKb24gRGlsbG9uIHByb3ZpZGVkIHVzIHdpdGggc2V2ZXJhbCBnb29kLWxvb2tpbmcgY3VybCBpbWFnZXMgZm9yCi0gIHByb21vdGlvbi4gVmlldyB0aGVtIGhlcmUgaHR0cDovL2N1cmwuaGF4eC5zZS9pY29ucy5odG1sCisgIHByb21vdGlvbi4gVmlldyB0aGVtIGhlcmUgaHR0cHM6Ly9jdXJsLmhheHguc2UvaWNvbnMuaHRtbAogCiBEYW5pZWwgKDIwIE1hcmNoIDIwMDIpCiAtIFBldGVyIFZlcmhhcyBmb3VuZCBvdXQgdGhhdCBDUkxGIHJlcGxhY2VtZW50IGluIHVwbG9hZHMgd2FzIG5vdCB3b3JraW5nLiBJCkBAIC0xMjU0Miw3ICsxMjU0Miw3IEBACiAgIFBBU1YgZnRwIHRyYW5zZmVycy4gSXQgY291bGQgbWFrZSBsaWJjdXJsIGNyYXNoLgogCiAgIERldGFpbHMgaW4gYnVnIHJlcG9ydCAjNTMwNTYyOgotICBodHRwOi8vc291cmNlZm9yZ2UubmV0L3RyYWNrZXIvP2Z1bmM9ZGV0YWlsJmF0aWQ9MTAwOTc2JmFpZD01MzA1NjImZ3JvdXBfaWQ9OTc2CisgIGh0dHBzOi8vc291cmNlZm9yZ2UubmV0L3AvY3VybC9idWdzLzE3OC8KIAogRGFuaWVsICgxNSBNYXJjaCAyMDAyKQogLSBKdW4taWNoaXJvIGl0b2p1biBIYWdpbm8gZmlsZWQgYnVnIHJlcG9ydCAjNTMwMjA0IHRoYXQgY2xlYXJseSBwb2ludGVkIG91dApAQCAtMTI5MjIsNyArMTI5MjIsNyBAQAogCiAtIFJpY2hhcmQgQXJjaGVyIGJyb3VnaHQgYmFjayB0aGUgYWJpbGl0eSB0byBjb21waWxlIGFuZCBidWlsZCB3aXRoIE9wZW5TU0wKICAgdmVyc2lvbnMgYmVmb3JlIDAuOS41LgotICBbaHR0cDovL3NvdXJjZWZvcmdlLm5ldC90cmFja2VyLz9mdW5jPWRldGFpbCZhdGlkPTEwMDk3NiZhaWQ9NTA0MTYzJmdyb3VwX2lkPTk3Nl0KKyAgW2h0dHBzOi8vc291cmNlZm9yZ2UubmV0L3AvY3VybC9idWdzLzE0OS9dCiAKIC0gVGhlIEROUyBjYWNoZSBjb2RlIGRpZG4ndCB0YWtlIHRoZSBwb3J0IG51bWJlciBpbnRvIGFjY291bnQsIHdoaWNoIG1hZGUgaXQKICAgd29yayByYXRoZXIgYmFkIG9uIElQdjYtZW5hYmxlZCBob3N0cyAoZXNwZWNpYWxseSB3aGVuIGRvaW5nIHBhc3NpdmUKQEAgLTEyOTcxLDcgKzEyOTcxLDcgQEAKIC0gUG9zdGVkIHRoZSBjdXJsIHF1ZXN0aW9ubmFpcmUgb24gdGhlIHdlYiBzaXRlLiBJZiB5b3UgaGF2ZW4ndCBwb3N0ZWQgeW91cgogICBvcGluaW9ucyB0aGVyZSB5ZXQsIGdvIHRoZXJlIGFuZCBkbyBpdCBub3cgd2hpbGUgaXQgaXMgc3RpbGwgdGhlcmU6CiAKLSAgICAgICAgaHR0cDovL2N1cmwuaGF4eC5zZS9xLworICAgICAgICBodHRwczovL2N1cmwuaGF4eC5zZS9xLwogCiAtIEdlb3JnIEhvcm4gcXVpY2tseSBmb3VuZCBvdXQgdGhhdCB0aGUgU1NMIHJlYWRpbmcgbm8gbG9uZ2VyIHdvcmtlZCBhcwogICBzdXBwb3NlZCBzaW5jZSB0aGUgc3dpdGNoIHRvIG5vbi1ibG9ja2luZyBzb2NrZXRzLiBJJ3ZlIG1hZGUgYSBxdWljayBwYXRjaApAQCAtMTMzNzksNyArMTMzNzksNyBAQAogCiAtIE1pbm9yIHVwZGF0ZXMgdG8gdGhlIEZBUSwgYWRkZWQgYSBicmFuZCBuZXcgc2VjdGlvbiB0byB0aGUgd2ViIHNpdGUgYWJvdXQKICAgdGhlIG5hbWUgaXNzdWUgKHdobyBvd25zICJjdXJsIj8gd2lsbCBzb21lb25lIHN1ZSB1cz8gZXRjIGV0Yyk6Ci0gIGh0dHA6Ly9jdXJsLmhheHguc2UvbGVnYWwvdGhlbmFtZS5odG1sCisgIGh0dHBzOi8vY3VybC5oYXh4LnNlL2xlZ2FsL3RoZW5hbWUuaHRtbAogCiBWZXJzaW9uIDcuOS4xLXByZTcKIApAQCAtMTYzNTksNyArMTYzNTksNyBAQAogICAgcHJvZ3Jlc3MgZGVhbCBiZXR0ZXIgd2l0aCBsYXJnZXIgZmlsZXMgYW5kIGFkZGVkIGEgIlRpbWUiIGZpZWxkIHdoaWNoIHNob3dzCiAgICB0aGUgdGltZSBzcGVudCBvbiB0aGUgZG93bmxvYWQgc28gZmFyLgogIC0gSSdtIG5vdyB1c2luZyB0aGUgQ1ZTIHJlcG9zaXRvcnkgb24gc291cmNlZm9yZ2UubmV0LCB3aGljaCBhbHNvIGFsbG93cyB3ZWIKLSAgIGJyb3dzaW5nLiBTZWUgaHR0cDovL2N1cmwuaGF4eC5udS4KKyAgIGJyb3dzaW5nLgogCiBEYW5pZWwgKDEwIEphbnVhcnkgMjAwMCk6CiAgLSBSZW51bWJlcmVkIHNvbWUgZW51bXMgaW4gY3VybC9jdXJsLmggc2luY2UgdGFnIG51bWJlciAzNSB3YXMgdXNlZCB0d2ljZSEKQEAgLTE2NzQ4LDcgKzE2NzQ4LDcgQEAKICAtIEkgY29ycmVjdGVkIGEgZmV3IG1pbm9yIHRoaW5ncyB0aGF0IG1hZGUgdGhlIGNvbXBpbGVyIGNvbXBsYWluIHdoZW4KICAgIC1XYWxsIC1wZWRhbnRpYyB3YXMgdXNlZC4KIAotIC0gSSdtIG1vdmluZyB0aGUgb2ZmaWNpYWwgY3VybCB3ZWIgcGFnZSB0byBodHRwOi8vY3VybC5oYXh4Lm51LiBJIHRoaW5rIGl0CisgLSBJJ20gbW92aW5nIHRoZSBvZmZpY2lhbCBjdXJsIHdlYiBwYWdlIHRvIGN1cmwuaGF4eC5udS4gSSB0aGluayBpdAogICAgd2lsbCBtYWtlIGl0IGVhc2llciB0byByZW1lbWJlciBhcyBpdCBpcyBhIGxvdCBzaG9ydGVyIGFuZCBsZXNzIGNyeXB0aWMuCiAgICBUaGUgb2xkIG9uZSBzdGlsbCB3b3JrcyBhbmQgc2hvd3MgdGhlIHNhbWUgaW5mby4KIApkaWZmIC0tZ2l0IGEvQ01ha2UvQ3VybFRlc3RzLmMgYi9DTWFrZS9DdXJsVGVzdHMuYwppbmRleCAwNGQ1ZTdlLi5jZWZmMzkxIDEwMDY0NAotLS0gYS9DTWFrZS9DdXJsVGVzdHMuYworKysgYi9DTWFrZS9DdXJsVGVzdHMuYwpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0xMzksNyArMTM5LDcgQEAKICAgcmMgPSBnZXRob3N0YnluYW1lX3IoYWRkcmVzcywgJmgsICZoZGF0YSk7CiAjZWxpZiBkZWZpbmVkKEhBVkVfR0VUSE9TVEJZTkFNRV9SXzUpIHx8IFwKICAgICAgIGRlZmluZWQoSEFWRV9HRVRIT1NUQllOQU1FX1JfNV9SRUVOVFJBTlQpCi0gIHJjID0gZ2V0aG9zdGJ5bmFtZV9yKGFkZHJlc3MsICZoLCBidWZmZXIsIDgxOTIsIDAsICZoX2Vycm5vcCk7CisgIHJjID0gZ2V0aG9zdGJ5bmFtZV9yKGFkZHJlc3MsICZoLCBidWZmZXIsIDgxOTIsICZoX2Vycm5vcCk7CiAgICh2b2lkKWhwOyAvKiBub3QgdXNlZCBmb3IgdGVzdCAqLwogI2VsaWYgZGVmaW5lZChIQVZFX0dFVEhPU1RCWU5BTUVfUl82KSB8fCBcCiAgICAgICBkZWZpbmVkKEhBVkVfR0VUSE9TVEJZTkFNRV9SXzZfUkVFTlRSQU5UKQpkaWZmIC0tZ2l0IGEvQ01ha2UvT3RoZXJUZXN0cy5jbWFrZSBiL0NNYWtlL090aGVyVGVzdHMuY21ha2UKaW5kZXggNGYwN2YyMi4uZDU5OTQ5OCAxMDA2NDQKLS0tIGEvQ01ha2UvT3RoZXJUZXN0cy5jbWFrZQorKysgYi9DTWFrZS9PdGhlclRlc3RzLmNtYWtlCkBAIC0xMCw4ICsxMCw4IEBACiAKIHNldChzaWduYXR1cmVfY2FsbF9jb252KQogaWYoSEFWRV9XSU5ET1dTX0gpCi0gIGFkZF9oZWFkZXJfaW5jbHVkZShIQVZFX1dJTkRPV1NfSCAid2luZG93cy5oIikKICAgYWRkX2hlYWRlcl9pbmNsdWRlKEhBVkVfV0lOU09DSzJfSCAid2luc29jazIuaCIpCisgIGFkZF9oZWFkZXJfaW5jbHVkZShIQVZFX1dJTkRPV1NfSCAid2luZG93cy5oIikKICAgYWRkX2hlYWRlcl9pbmNsdWRlKEhBVkVfV0lOU09DS19IICJ3aW5zb2NrLmgiKQogICBzZXQoX3NvdXJjZV9lcGlsb2d1ZQogICAgICAgIiR7X3NvdXJjZV9lcGlsb2d1ZX1cbiNpZm5kZWYgV0lOMzJfTEVBTl9BTkRfTUVBTlxuI2RlZmluZSBXSU4zMl9MRUFOX0FORF9NRUFOXG4jZW5kaWYiKQpkaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4dAppbmRleCA4YWE0NGJiLi4wNmYxOGNmIDEwMDY0NAotLS0gYS9DTWFrZUxpc3RzLnR4dAorKysgYi9DTWFrZUxpc3RzLnR4dApAQCAtOSw3ICs5LDcgQEAKICMKICMgVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICMgeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICMKICMgWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAjIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNjQsNyArNjQsNyBAQAogIyBTRVQoUEFDS0FHRV9OQU1FICJjdXJsIikKICMgU0VUKFBBQ0tBR0VfVkVSU0lPTiAiLSIpCiAjIFNFVChQQUNLQUdFX1NUUklORyAiY3VybC0iKQotIyBTRVQoUEFDS0FHRV9CVUdSRVBPUlQgImEgc3VpdGFibGUgY3VybCBtYWlsaW5nIGxpc3QgPT4gaHR0cDovL2N1cmwuaGF4eC5zZS9tYWlsLyIpCisjIFNFVChQQUNLQUdFX0JVR1JFUE9SVCAiYSBzdWl0YWJsZSBjdXJsIG1haWxpbmcgbGlzdCA9PiBodHRwczovL2N1cmwuaGF4eC5zZS9tYWlsLyIpCiBzZXQoT1BFUkFUSU5HX1NZU1RFTSAiJHtDTUFLRV9TWVNURU1fTkFNRX0iKQogc2V0KE9TICJcIiR7Q01BS0VfU1lTVEVNX05BTUV9XCIiKQogCkBAIC0xMjIsMTEgKzEyMiw2IEBACiBvcHRpb24oQ1VSTF9ISURERU5fU1lNQk9MUyAiU2V0IHRvIE9OIHRvIGhpZGUgbGliY3VybCBpbnRlcm5hbCBzeW1ib2xzICg9aGlkZSBhbGwgc3ltYm9scyB0aGF0IGFyZW4ndCBvZmZpY2lhbGx5IGV4dGVybmFsKS4iIE9OKQogbWFya19hc19hZHZhbmNlZChDVVJMX0hJRERFTl9TWU1CT0xTKQogCi0jIElGKFdJTjMyKQotIyBPUFRJT04oQ1VSTF9XSU5ET1dTX1NTUEkgIlVzZSB3aW5kb3dzIGxpYnJhcmllcyB0byBhbGxvdyBOVExNIGF1dGhlbnRpY2F0aW9uIHdpdGhvdXQgb3BlbnNzbCIgT04pCi0jIE1BUktfQVNfQURWQU5DRUQoQ1VSTF9XSU5ET1dTX1NTUEkpCi0jIEVORElGKCkKLQogb3B0aW9uKEhUVFBfT05MWSAiZGlzYWJsZXMgYWxsIHByb3RvY29scyBleGNlcHQgSFRUUCAoVGhpcyBvdmVycmlkZXMgYWxsIENVUkxfRElTQUJMRV8qIG9wdGlvbnMpIiBPRkYpCiBtYXJrX2FzX2FkdmFuY2VkKEhUVFBfT05MWSkKIG9wdGlvbihDVVJMX0RJU0FCTEVfRlRQICJkaXNhYmxlcyBGVFAiIE9GRikKQEAgLTE4Niw3ICsxODEsNyBAQAogbWFya19hc19hZHZhbmNlZChESVNBQkxFRF9USFJFQURTQUZFKQogb3B0aW9uKEVOQUJMRV9JUFY2ICJEZWZpbmUgaWYgeW91IHdhbnQgdG8gZW5hYmxlIElQdjYgc3VwcG9ydCIgT04pCiBtYXJrX2FzX2FkdmFuY2VkKEVOQUJMRV9JUFY2KQotaWYoRU5BQkxFX0lQVjYpCitpZihFTkFCTEVfSVBWNiBBTkQgTk9UIFdJTjMyKQogICBpbmNsdWRlKENoZWNrU3RydWN0SGFzTWVtYmVyKQogICBjaGVja19zdHJ1Y3RfaGFzX21lbWJlcigic3RydWN0IHNvY2thZGRyX2luNiIgc2luNl9hZGRyICJuZXRpbmV0L2luLmgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBVkVfU09DS0FERFJfSU42X1NJTjZfQUREUikKQEAgLTI1Myw2ICsyNDgsNyBAQAogaW5jbHVkZSAoQ2hlY2tTeW1ib2xFeGlzdHMpCiBpbmNsdWRlIChDaGVja1R5cGVTaXplKQogaW5jbHVkZSAoQ2hlY2tDU291cmNlQ29tcGlsZXMpCitpbmNsdWRlIChDTWFrZURlcGVuZGVudE9wdGlvbikKIAogIyBPbiB3aW5kb3dzIHByZWxvYWQgc2V0dGluZ3MKIGlmKFdJTjMyKQpAQCAtMjkwLDE0ICsyODYsMjIgQEAKIAogY2hlY2tfZnVuY3Rpb25fZXhpc3RzKGdldGhvc3RuYW1lIEhBVkVfR0VUSE9TVE5BTUUpCiAKK3NldChPUEVOU1NMX0RFRkFVTFQgT04pCiBpZihXSU4zMikKKyAgc2V0KE9QRU5TU0xfREVGQVVMVCBPRkYpCiAgIGNoZWNrX2xpYnJhcnlfZXhpc3RzX2NvbmNhdCgid3MyXzMyIiBnZXRjaCAgICAgICAgSEFWRV9MSUJXUzJfMzIpCiAgIGNoZWNrX2xpYnJhcnlfZXhpc3RzX2NvbmNhdCgid2lubW0iICBnZXRjaCAgICAgICAgSEFWRV9MSUJXSU5NTSkKIGVuZGlmKCkKIAotb3B0aW9uKENNQUtFX1VTRV9PUEVOU1NMICJVc2UgT3BlblNTTCBjb2RlLiBFeHBlcmltZW50YWwiIE9OKQorb3B0aW9uKENNQUtFX1VTRV9PUEVOU1NMICJVc2UgT3BlblNTTCBjb2RlLiBFeHBlcmltZW50YWwiICR7T1BFTlNTTF9ERUZBVUxUfSkKIG1hcmtfYXNfYWR2YW5jZWQoQ01BS0VfVVNFX09QRU5TU0wpCiAKK2lmKFdJTjMyKQorICBDTUFLRV9ERVBFTkRFTlRfT1BUSU9OKENVUkxfV0lORE9XU19TU1BJICJVc2Ugd2luZG93cyBsaWJyYXJpZXMgdG8gYWxsb3cgTlRMTSBhdXRoZW50aWNhdGlvbiB3aXRob3V0IG9wZW5zc2wiIE9OCisgICAgIk5PVCBDTUFLRV9VU0VfT1BFTlNTTCIgT0ZGKQorICBtYXJrX2FzX2FkdmFuY2VkKENVUkxfV0lORE9XU19TU1BJKQorZW5kaWYoKQorCiBzZXQoVVNFX09QRU5TU0wgT0ZGKQogc2V0KEhBVkVfTElCQ1JZUFRPIE9GRikKIHNldChIQVZFX0xJQlNTTCBPRkYpCkBAIC0zMjAsNiArMzI0LDggQEAKICAgICBjaGVja19pbmNsdWRlX2ZpbGUoIm9wZW5zc2wvc3NsLmgiICAgIEhBVkVfT1BFTlNTTF9TU0xfSCkKICAgICBjaGVja19pbmNsdWRlX2ZpbGUoIm9wZW5zc2wveDUwOS5oIiAgIEhBVkVfT1BFTlNTTF9YNTA5X0gpCiAgICAgY2hlY2tfaW5jbHVkZV9maWxlKCJvcGVuc3NsL3JhbmQuaCIgICBIQVZFX09QRU5TU0xfUkFORF9IKQorICBlbHNlaWYoV0lOMzIpCisgICAgc2V0KENVUkxfV0lORE9XU19TU1BJIE9OKQogICBlbmRpZigpCiBlbmRpZigpCiAKQEAgLTM1NSw5ICszNjEsMTAgQEAKICAgICBjaGVja19pbmNsdWRlX2ZpbGVfY29uY2F0KCJ3aW5iZXIuaCIgIEhBVkVfV0lOQkVSX0gpCiAgIGVuZGlmKCkKICAgCisgIHNldChDTUFLRV9SRVFVSVJFRF9JTkNMVURFU19CQUsgJHtDTUFLRV9SRVFVSVJFRF9JTkNMVURFU30pCiAgIHNldChDTUFLRV9MREFQX0lOQ0xVREVfRElSICIiIENBQ0hFIFNUUklORyAiUGF0aCB0byBMREFQIGluY2x1ZGUgZGlyZWN0b3J5IikKICAgaWYoQ01BS0VfTERBUF9JTkNMVURFX0RJUikKLSAgICBzZXQoQ01BS0VfUkVRVUlSRURfSU5DTFVERVMgJHtDTUFLRV9MREFQX0lOQ0xVREVfRElSfSkKKyAgICBsaXN0KEFQUEVORCBDTUFLRV9SRVFVSVJFRF9JTkNMVURFUyAke0NNQUtFX0xEQVBfSU5DTFVERV9ESVJ9KQogICBlbmRpZigpCiAgIGNoZWNrX2luY2x1ZGVfZmlsZV9jb25jYXQoImxkYXAuaCIgICAgICAgICAgIEhBVkVfTERBUF9IKQogICBjaGVja19pbmNsdWRlX2ZpbGVfY29uY2F0KCJsYmVyLmgiICAgICAgICAgICBIQVZFX0xCRVJfSCkKQEAgLTM2NSw5ICszNzIsMTEgQEAKICAgaWYoTk9UIEhBVkVfTERBUF9IKQogICAgIG1lc3NhZ2UoU1RBVFVTICJMREFQX0ggbm90IGZvdW5kIENVUkxfRElTQUJMRV9MREFQIHNldCBPTiIpCiAgICAgc2V0KENVUkxfRElTQUJMRV9MREFQIE9OIENBQ0hFIEJPT0wgIiIgRk9SQ0UpCisgICAgc2V0KENNQUtFX1JFUVVJUkVEX0lOQ0xVREVTICR7Q01BS0VfUkVRVUlSRURfSU5DTFVERVNfQkFLfSkgI0xEQVAgaW5jbHVkZXMgd29uJ3QgYmUgdXNlZAogICBlbHNlaWYoTk9UIEhBVkVfTElCTERBUCkKICAgICBtZXNzYWdlKFNUQVRVUyAiTERBUCBsaWJyYXJ5ICcke0NNQUtFX0xEQVBfTElCfScgbm90IGZvdW5kIENVUkxfRElTQUJMRV9MREFQIHNldCBPTiIpCiAgICAgc2V0KENVUkxfRElTQUJMRV9MREFQIE9OIENBQ0hFIEJPT0wgIiIgRk9SQ0UpCisgICAgc2V0KENNQUtFX1JFUVVJUkVEX0lOQ0xVREVTICR7Q01BS0VfUkVRVUlSRURfSU5DTFVERVNfQkFLfSkgI0xEQVAgaW5jbHVkZXMgd29uJ3QgYmUgdXNlZAogICBlbHNlKCkKICAgICBpZihDTUFLRV9VU0VfT1BFTkxEQVApCiAgICAgICBzZXQoVVNFX09QRU5MREFQIE9OKQpAQCAtNDQ4LDYgKzQ1Nyw3IEBACiAgICAgc2V0KEhBVkVfTElCWiBPTikKICAgICBsaXN0KEFQUEVORCBDVVJMX0xJQlMgJHtaTElCX0xJQlJBUklFU30pCiAgICAgaW5jbHVkZV9kaXJlY3Rvcmllcygke1pMSUJfSU5DTFVERV9ESVJTfSkKKyAgICBsaXN0KEFQUEVORCBDTUFLRV9SRVFVSVJFRF9JTkNMVURFUyAke1pMSUJfSU5DTFVERV9ESVJTfSkKICAgZW5kaWYoKQogZW5kaWYoKQogCkBAIC00NjMsNyArNDczLDcgQEAKICAgaWYoTElCU1NIMl9GT1VORCkKICAgICBsaXN0KEFQUEVORCBDVVJMX0xJQlMgJHtMSUJTU0gyX0xJQlJBUll9KQogICAgIHNldChDTUFLRV9SRVFVSVJFRF9MSUJSQVJJRVMgJHtMSUJTU0gyX0xJQlJBUll9KQotICAgIHNldChDTUFLRV9SRVFVSVJFRF9JTkNMVURFUyAiJHtMSUJTU0gyX0lOQ0xVREVfRElSfSIpCisgICAgbGlzdChBUFBFTkQgQ01BS0VfUkVRVUlSRURfSU5DTFVERVMgIiR7TElCU1NIMl9JTkNMVURFX0RJUn0iKQogICAgIGluY2x1ZGVfZGlyZWN0b3JpZXMoIiR7TElCU1NIMl9JTkNMVURFX0RJUn0iKQogICAgIHNldChIQVZFX0xJQlNTSDIgT04pCiAgICAgc2V0KFVTRV9MSUJTU0gyIE9OKQpAQCAtNDkxLDEyICs1MDEsMTIgQEAKIGlmKENNQUtFX1VTRV9HU1NBUEkpCiAgIGZpbmRfcGFja2FnZShHU1MpCiAKLSAgc2V0KEhBVkVfR1NTX0FQSSAke0dTU19GT1VORH0pCisgIHNldChIQVZFX0dTU0FQSSAke0dTU19GT1VORH0pCiAgIGlmKEdTU19GT1VORCkKIAogICAgIG1lc3NhZ2UoU1RBVFVTICJGb3VuZCAke0dTU19GTEFWT1VSfSBHU1NBUEkgdmVyc2lvbjogXCIke0dTU19WRVJTSU9OfVwiIikKIAotICAgIHNldChDTUFLRV9SRVFVSVJFRF9JTkNMVURFUyAke0dTU19JTkNMVURFX0RJUn0pCisgICAgbGlzdChBUFBFTkQgQ01BS0VfUkVRVUlSRURfSU5DTFVERVMgJHtHU1NfSU5DTFVERV9ESVJFQ1RPUklFU30pCiAgICAgY2hlY2tfaW5jbHVkZV9maWxlX2NvbmNhdCgiZ3NzYXBpL2dzc2FwaS5oIiAgSEFWRV9HU1NBUElfR1NTQVBJX0gpCiAgICAgY2hlY2tfaW5jbHVkZV9maWxlX2NvbmNhdCgiZ3NzYXBpL2dzc2FwaV9nZW5lcmljLmgiIEhBVkVfR1NTQVBJX0dTU0FQSV9HRU5FUklDX0gpCiAgICAgY2hlY2tfaW5jbHVkZV9maWxlX2NvbmNhdCgiZ3NzYXBpL2dzc2FwaV9rcmI1LmgiIEhBVkVfR1NTQVBJX0dTU0FQSV9LUkI1X0gpCkBAIC01MzIsNyArNTQyLDcgQEAKIAogICAgIGVuZGlmKCkKIAotICAgIGluY2x1ZGVfZGlyZWN0b3JpZXMoJHtHU1NfSU5DTFVERV9ESVJ9KQorICAgIGluY2x1ZGVfZGlyZWN0b3JpZXMoJHtHU1NfSU5DTFVERV9ESVJFQ1RPUklFU30pCiAgICAgbGlua19kaXJlY3Rvcmllcygke0dTU19MSU5LX0RJUkVDVE9SSUVTfSkKICAgICBzZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAke0dTU19DT01QSUxFUl9GTEFHU30iKQogICAgIHNldChDTUFLRV9TSEFSRURfTElOS0VSX0ZMQUdTICIke0NNQUtFX1NIQVJFRF9MSU5LRVJfRkxBR1N9ICR7R1NTX0xJTktFUl9GTEFHU30iKQpAQCAtNTUyLDEyICs1NjIsMjUgQEAKICAgdW5zZXQoVVNFX1VOSVhfU09DS0VUUyBDQUNIRSkKIGVuZGlmKCkKIAorCiAjIENoZWNrIGZvciBoZWFkZXIgZmlsZXMKIGlmKE5PVCBVTklYKQogICBjaGVja19pbmNsdWRlX2ZpbGVfY29uY2F0KCJ3aW5kb3dzLmgiICAgICAgSEFWRV9XSU5ET1dTX0gpCiAgIGNoZWNrX2luY2x1ZGVfZmlsZV9jb25jYXQoIndpbnNvY2suaCIgICAgICBIQVZFX1dJTlNPQ0tfSCkKICAgY2hlY2tfaW5jbHVkZV9maWxlX2NvbmNhdCgid3MydGNwaXAuaCIgICAgIEhBVkVfV1MyVENQSVBfSCkKICAgY2hlY2tfaW5jbHVkZV9maWxlX2NvbmNhdCgid2luc29jazIuaCIgICAgIEhBVkVfV0lOU09DSzJfSCkKKyAgaWYoQ1VSTF9XSU5ET1dTX1NTUEkpCisgICAgc2V0KENNQUtFX1JFUVVJUkVEX0RFRklOSVRJT05TICIke0NNQUtFX1JFUVVJUkVEX0RFRklOSVRJT05TfSAtRFNFQ1VSSVRZX1dJTjMyIikKKyAgICBjaGVja19pbmNsdWRlX2ZpbGVfY29uY2F0KCJzc3BpLmgiICAgICAgIEhBVkVfU1NQSV9IKQorICAgIGlmKEhBVkVfU1NQSV9IKQorICAgICAgY2hlY2tfaW5jbHVkZV9maWxlX2NvbmNhdCgic2NoYW5uZWwuaCIgSEFWRV9TQ0hBTk5FTF9IKQorICAgICAgc2V0KFVTRV9XSU5ET1dTX1NTUEkgT04pCisgICAgICBpZihIQVZFX1NDSEFOTkVMX0gpCisgICAgICAgIHNldChVU0VfU0NIQU5ORUwgT04pCisgICAgICAgIHNldChTU0xfRU5BQkxFRCBPTikKKyAgICAgIGVuZGlmKCkKKyAgICBlbmRpZigpCisgIGVuZGlmKCkKIGVuZGlmKE5PVCBVTklYKQogCiBjaGVja19pbmNsdWRlX2ZpbGVfY29uY2F0KCJzdGRpby5oIiAgICAgICAgICBIQVZFX1NURElPX0gpCkBAIC0xMDM4LDcgKzEwNjEsOCBAQAogCiAjIENsZWFyIGxpc3QgYW5kIHRyeSB0byBkZXRlY3QgYXZhaWxhYmxlIGZlYXR1cmVzCiBzZXQoX2l0ZW1zKQotX2FkZF9pZigiU1NMIiAgICAgICAgICAgU1NMX0VOQUJMRUQpCitfYWRkX2lmKCJXaW5TU0wiICAgICAgICBTU0xfRU5BQkxFRCBBTkQgVVNFX1dJTkRPV1NfU1NQSSkKK19hZGRfaWYoIk9wZW5TU0wiICAgICAgIFNTTF9FTkFCTEVEIEFORCBVU0VfT1BFTlNTTCkKIF9hZGRfaWYoIklQdjYiICAgICAgICAgIEVOQUJMRV9JUFY2KQogX2FkZF9pZigidW5peC1zb2NrZXRzIiAgVVNFX1VOSVhfU09DS0VUUykKIF9hZGRfaWYoImxpYnoiICAgICAgICAgIEhBVkVfTElCWikKQEAgLTEwNDYsMTIgKzEwNzAsMTIgQEAKIF9hZGRfaWYoIklETiIgICAgICAgICAgIEhBVkVfTElCSUROKQogIyBUT0RPIFNTUDEgKFdpblNTTCkgY2hlY2sgaXMgbWlzc2luZwogX2FkZF9pZigiU1NQSSIgICAgICAgICAgVVNFX1dJTkRPV1NfU1NQSSkKLV9hZGRfaWYoIkdTUy1BUEkiICAgICAgIEhBVkVfR1NTX0FQSSkKK19hZGRfaWYoIkdTUy1BUEkiICAgICAgIEhBVkVfR1NTQVBJKQogIyBUT0RPIFNTUDEgbWlzc2luZyBmb3IgU1BORUdPCiBfYWRkX2lmKCJTUE5FR08iICAgICAgICBOT1QgQ1VSTF9ESVNBQkxFX0NSWVBUT19BVVRIIEFORAotICAgICAgICAgICAgICAgICAgICAgICAgKEhBVkVfR1NTX0FQSSBPUiBVU0VfV0lORE9XU19TU1BJKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIChIQVZFX0dTU0FQSSBPUiBVU0VfV0lORE9XU19TU1BJKSkKIF9hZGRfaWYoIktlcmJlcm9zIiAgICAgIE5PVCBDVVJMX0RJU0FCTEVfQ1JZUFRPX0FVVEggQU5ECi0gICAgICAgICAgICAgICAgICAgICAgICAoSEFWRV9HU1NfQVBJIE9SIFVTRV9XSU5ET1dTX1NTUEkpKQorICAgICAgICAgICAgICAgICAgICAgICAgKEhBVkVfR1NTQVBJIE9SIFVTRV9XSU5ET1dTX1NTUEkpKQogIyBOVExNIHN1cHBvcnQgcmVxdWlyZXMgY3J5cHRvIGZ1bmN0aW9uIGFkYXB0aW9ucyBmcm9tIHZhcmlvdXMgU1NMIGxpYnMKICMgVE9ETyBhbHRlcm5hdGl2ZSBTU0wgbGlicyB0ZXN0cyBmb3IgU1NQMSwgR05VVExTLCBOU1MsIERBUldJTlNTTAogaWYoTk9UIENVUkxfRElTQUJMRV9DUllQVE9fQVVUSCBBTkQgKFVTRV9PUEVOU1NMIE9SCkBAIC0xMTM2LDcgKzExNjAsNyBAQAogIyBGaW5hbGx5IGdlbmVyYXRlIGEgImN1cmwtY29uZmlnIiBtYXRjaGluZyB0aGlzIGNvbmZpZwogY29uZmlndXJlX2ZpbGUoIiR7Q1VSTF9TT1VSQ0VfRElSfS9jdXJsLWNvbmZpZy5pbiIKICAgICAgICAgICAgICAgICIke0NVUkxfQklOQVJZX0RJUn0vY3VybC1jb25maWciIEBPTkxZKQotaW5zdGFsbChGSUxFUyAiJHtDTUFLRV9CSU5BUllfRElSfS9jdXJsLWNvbmZpZyIKK2luc3RhbGwoRklMRVMgIiR7Q1VSTF9CSU5BUllfRElSfS9jdXJsLWNvbmZpZyIKICAgICAgICAgREVTVElOQVRJT04gYmluCiAgICAgICAgIFBFUk1JU1NJT05TCiAgICAgICAgICAgT1dORVJfUkVBRCBPV05FUl9XUklURSBPV05FUl9FWEVDVVRFCkBAIC0xMTQ2LDcgKzExNzAsNyBAQAogIyBGaW5hbGx5IGdlbmVyYXRlIGEgcGtnLWNvbmZpZyBmaWxlIG1hdGNoaW5nIHRoaXMgY29uZmlnCiBjb25maWd1cmVfZmlsZSgiJHtDVVJMX1NPVVJDRV9ESVJ9L2xpYmN1cmwucGMuaW4iCiAgICAgICAgICAgICAgICAiJHtDVVJMX0JJTkFSWV9ESVJ9L2xpYmN1cmwucGMiIEBPTkxZKQotaW5zdGFsbChGSUxFUyAiJHtDTUFLRV9CSU5BUllfRElSfS9saWJjdXJsLnBjIgoraW5zdGFsbChGSUxFUyAiJHtDVVJMX0JJTkFSWV9ESVJ9L2xpYmN1cmwucGMiCiAgICAgICAgIERFU1RJTkFUSU9OIGxpYi9wa2djb25maWcpCiAKICMgVGhpcyBuZWVkcyB0byBiZSBydW4gdmVyeSBsYXN0IHNvIG90aGVyIHBhcnRzIG9mIHRoZSBzY3JpcHRzIGNhbiB0YWtlIGFkdmFudGFnZSBvZiB0aGlzLgpkaWZmIC0tZ2l0IGEvQ09OVFJJQlVUSU5HLm1kIGIvQ09OVFJJQlVUSU5HLm1kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMGE2NzcxLi4wMDAwMDAwCi0tLSBhL0NPTlRSSUJVVElORy5tZAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLUhvdyB0byBjb250cmlidXRlIHRvIGN1cmwKLT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotSm9pbiB0aGUgY29tbXVuaXR5Ci0tLS0tLS0tLS0tLS0tLS0tLS0KLQotIDEuIENsaWNrICd3YXRjaCcgb24gdGhlIGdpdGh1YiByZXBvCi0KLSAyLiBTdWJzY3JpYmUgdG8gdGhlIHN1aXRhYmxlIFttYWlsaW5nIGxpc3RzXShodHRwOi8vY3VybC5oYXh4LnNlL21haWwvKQotCi1SZWFkIFtkb2NzL0NPTlRSSUJVVEVdKGRvY3MvQ09OVFJJQlVURSkKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1TZW5kIHlvdXIgc3VnZ2VzdGlvbnMgdXNpbmcgb25lIG9mIHRoZXNlIG1ldGhvZHM6Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAxLiBpbiBhIG1haWwgdG8gdGhlIG1haWxpbmcgbGlzdAotCi0gMi4gYXMgYSBwdWxsIHJlcXVlc3Qgb24gZ2l0aHViCi0KLSAzLiBhcyBhbiBpc3N1ZSBvbiBnaXRodWIKLSAgIAotCi0vIFRoZSBjVVJMIHRlYW0hCi0KZGlmZiAtLWdpdCBhL0NPUFlJTkcgYi9DT1BZSU5HCmluZGV4IDZiNWQ1OWYuLmE5ODY2M2UgMTAwNjQ0Ci0tLSBhL0NPUFlJTkcKKysrIGIvQ09QWUlORwpAQCAtMSw2ICsxLDcgQEAKIENPUFlSSUdIVCBBTkQgUEVSTUlTU0lPTiBOT1RJQ0UKIAotQ29weXJpZ2h0IChjKSAxOTk2IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LgorQ29weXJpZ2h0IChjKSAxOTk2IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBhbmQgbWFueQorY29udHJpYnV0b3JzLCBzZWUgdGhlIFRIQU5LUyBmaWxlLgogCiBBbGwgcmlnaHRzIHJlc2VydmVkLgogCmRpZmYgLS1naXQgYS9NYWNPU1gtRnJhbWV3b3JrIGIvTWFjT1NYLUZyYW1ld29yawppbmRleCA2MjUxYmZmLi4xOWIzMzhmIDEwMDc1NQotLS0gYS9NYWNPU1gtRnJhbWV3b3JrCisrKyBiL01hY09TWC1GcmFtZXdvcmsKQEAgLTY1LDcgKzY1LDcgQEAKICBBUkNIRVM2ND0nLWFyY2ggeDg2XzY0JwogICNXZSAia25vdyIgdGhhdCAxMC40IGFuZCBlYXJsaWVyIGRvIG5vdCBzdXBwb3J0IDY0Yml0CiAgT0xEX1NESzY0PWBscyAgJFNES19QQVRIfGVncmVwIC12ICIxMC5bMC00XSJ8aGVhZCAtMWAKLSBORVdfU0RLNjQ9YGxzIC1yICRTREtfUEFUSHxlZ3JlcCAtdiAiMTAuWzAtNF0ifGhlYWQgLTFgCisgTkVXX1NESzY0PWBscyAtciAkU0RLX1BBVEh8ZWdyZXAgLXYgIjEwLlswLTRdW14wLTldIiB8IGhlYWQgLTFgCiAgaWYgdGVzdCAkVVNFX09MRCAtZ3QgMAogICB0aGVuCiAgICBTREs2ND0kT0xEX1NESzY0CmRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCmluZGV4IDIyODIzZDkuLjI5ODZhY2YgMTAwNjQ0Ci0tLSBhL01ha2VmaWxlLmFtCisrKyBiL01ha2VmaWxlLmFtCkBAIC01LDExICs1LDExIEBACiAjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogIwotIyBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorIyBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogIwogIyBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogIyB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0jIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisjIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogIwogIyBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICMgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zMiw4NiArMzIsMTA1IEBACiBWQzZfTElCVE1QTCA9IHByb2plY3RzL1dpbmRvd3MvVkM2L2xpYi9saWJjdXJsLnRtcGwKIFZDNl9MSUJEU1AgPSBwcm9qZWN0cy9XaW5kb3dzL1ZDNi9saWIvbGliY3VybC5kc3AuZGlzdAogVkM2X0xJQkRTUF9ERVBTID0gJChWQzZfTElCVE1QTCkgTWFrZWZpbGUuYW0gbGliL01ha2VmaWxlLmluYwotVkM2X1NSQ1RNUEwgPSBwcm9qZWN0cy9XaW5kb3dzL1ZDNi9zcmMvY3VybHNyYy50bXBsCi1WQzZfU1JDRFNQID0gcHJvamVjdHMvV2luZG93cy9WQzYvc3JjL2N1cmxzcmMuZHNwLmRpc3QKK1ZDNl9TUkNUTVBMID0gcHJvamVjdHMvV2luZG93cy9WQzYvc3JjL2N1cmwudG1wbAorVkM2X1NSQ0RTUCA9IHByb2plY3RzL1dpbmRvd3MvVkM2L3NyYy9jdXJsLmRzcC5kaXN0CiBWQzZfU1JDRFNQX0RFUFMgPSAkKFZDNl9TUkNUTVBMKSBNYWtlZmlsZS5hbSBzcmMvTWFrZWZpbGUuaW5jCiAKIFZDN19MSUJUTVBMID0gcHJvamVjdHMvV2luZG93cy9WQzcvbGliL2xpYmN1cmwudG1wbAogVkM3X0xJQlZDUFJPSiA9IHByb2plY3RzL1dpbmRvd3MvVkM3L2xpYi9saWJjdXJsLnZjcHJvai5kaXN0CiBWQzdfTElCVkNQUk9KX0RFUFMgPSAkKFZDN19MSUJUTVBMKSBNYWtlZmlsZS5hbSBsaWIvTWFrZWZpbGUuaW5jCi1WQzdfU1JDVE1QTCA9IHByb2plY3RzL1dpbmRvd3MvVkM3L3NyYy9jdXJsc3JjLnRtcGwKLVZDN19TUkNWQ1BST0ogPSBwcm9qZWN0cy9XaW5kb3dzL1ZDNy9zcmMvY3VybHNyYy52Y3Byb2ouZGlzdAorVkM3X1NSQ1RNUEwgPSBwcm9qZWN0cy9XaW5kb3dzL1ZDNy9zcmMvY3VybC50bXBsCitWQzdfU1JDVkNQUk9KID0gcHJvamVjdHMvV2luZG93cy9WQzcvc3JjL2N1cmwudmNwcm9qLmRpc3QKIFZDN19TUkNWQ1BST0pfREVQUyA9ICQoVkM3X1NSQ1RNUEwpIE1ha2VmaWxlLmFtIHNyYy9NYWtlZmlsZS5pbmMKIAogVkM3MV9MSUJUTVBMID0gcHJvamVjdHMvV2luZG93cy9WQzcuMS9saWIvbGliY3VybC50bXBsCiBWQzcxX0xJQlZDUFJPSiA9IHByb2plY3RzL1dpbmRvd3MvVkM3LjEvbGliL2xpYmN1cmwudmNwcm9qLmRpc3QKIFZDNzFfTElCVkNQUk9KX0RFUFMgPSAkKFZDNzFfTElCVE1QTCkgTWFrZWZpbGUuYW0gbGliL01ha2VmaWxlLmluYwotVkM3MV9TUkNUTVBMID0gcHJvamVjdHMvV2luZG93cy9WQzcuMS9zcmMvY3VybHNyYy50bXBsCi1WQzcxX1NSQ1ZDUFJPSiA9IHByb2plY3RzL1dpbmRvd3MvVkM3LjEvc3JjL2N1cmxzcmMudmNwcm9qLmRpc3QKK1ZDNzFfU1JDVE1QTCA9IHByb2plY3RzL1dpbmRvd3MvVkM3LjEvc3JjL2N1cmwudG1wbAorVkM3MV9TUkNWQ1BST0ogPSBwcm9qZWN0cy9XaW5kb3dzL1ZDNy4xL3NyYy9jdXJsLnZjcHJvai5kaXN0CiBWQzcxX1NSQ1ZDUFJPSl9ERVBTID0gJChWQzcxX1NSQ1RNUEwpIE1ha2VmaWxlLmFtIHNyYy9NYWtlZmlsZS5pbmMKIAogVkM4X0xJQlRNUEwgPSBwcm9qZWN0cy9XaW5kb3dzL1ZDOC9saWIvbGliY3VybC50bXBsCiBWQzhfTElCVkNQUk9KID0gcHJvamVjdHMvV2luZG93cy9WQzgvbGliL2xpYmN1cmwudmNwcm9qLmRpc3QKIFZDOF9MSUJWQ1BST0pfREVQUyA9ICQoVkM4X0xJQlRNUEwpIE1ha2VmaWxlLmFtIGxpYi9NYWtlZmlsZS5pbmMKLVZDOF9TUkNUTVBMID0gcHJvamVjdHMvV2luZG93cy9WQzgvc3JjL2N1cmxzcmMudG1wbAotVkM4X1NSQ1ZDUFJPSiA9IHByb2plY3RzL1dpbmRvd3MvVkM4L3NyYy9jdXJsc3JjLnZjcHJvai5kaXN0CitWQzhfU1JDVE1QTCA9IHByb2plY3RzL1dpbmRvd3MvVkM4L3NyYy9jdXJsLnRtcGwKK1ZDOF9TUkNWQ1BST0ogPSBwcm9qZWN0cy9XaW5kb3dzL1ZDOC9zcmMvY3VybC52Y3Byb2ouZGlzdAogVkM4X1NSQ1ZDUFJPSl9ERVBTID0gJChWQzhfU1JDVE1QTCkgTWFrZWZpbGUuYW0gc3JjL01ha2VmaWxlLmluYwogCiBWQzlfTElCVE1QTCA9IHByb2plY3RzL1dpbmRvd3MvVkM5L2xpYi9saWJjdXJsLnRtcGwKIFZDOV9MSUJWQ1BST0ogPSBwcm9qZWN0cy9XaW5kb3dzL1ZDOS9saWIvbGliY3VybC52Y3Byb2ouZGlzdAogVkM5X0xJQlZDUFJPSl9ERVBTID0gJChWQzlfTElCVE1QTCkgTWFrZWZpbGUuYW0gbGliL01ha2VmaWxlLmluYwotVkM5X1NSQ1RNUEwgPSBwcm9qZWN0cy9XaW5kb3dzL1ZDOS9zcmMvY3VybHNyYy50bXBsCi1WQzlfU1JDVkNQUk9KID0gcHJvamVjdHMvV2luZG93cy9WQzkvc3JjL2N1cmxzcmMudmNwcm9qLmRpc3QKK1ZDOV9TUkNUTVBMID0gcHJvamVjdHMvV2luZG93cy9WQzkvc3JjL2N1cmwudG1wbAorVkM5X1NSQ1ZDUFJPSiA9IHByb2plY3RzL1dpbmRvd3MvVkM5L3NyYy9jdXJsLnZjcHJvai5kaXN0CiBWQzlfU1JDVkNQUk9KX0RFUFMgPSAkKFZDOV9TUkNUTVBMKSBNYWtlZmlsZS5hbSBzcmMvTWFrZWZpbGUuaW5jCiAKIFZDMTBfTElCVE1QTCA9IHByb2plY3RzL1dpbmRvd3MvVkMxMC9saWIvbGliY3VybC50bXBsCiBWQzEwX0xJQlZDWFBST0ogPSBwcm9qZWN0cy9XaW5kb3dzL1ZDMTAvbGliL2xpYmN1cmwudmN4cHJvai5kaXN0CiBWQzEwX0xJQlZDWFBST0pfREVQUyA9ICQoVkMxMF9MSUJUTVBMKSBNYWtlZmlsZS5hbSBsaWIvTWFrZWZpbGUuaW5jCi1WQzEwX1NSQ1RNUEwgPSBwcm9qZWN0cy9XaW5kb3dzL1ZDMTAvc3JjL2N1cmxzcmMudG1wbAotVkMxMF9TUkNWQ1hQUk9KID0gcHJvamVjdHMvV2luZG93cy9WQzEwL3NyYy9jdXJsc3JjLnZjeHByb2ouZGlzdAorVkMxMF9TUkNUTVBMID0gcHJvamVjdHMvV2luZG93cy9WQzEwL3NyYy9jdXJsLnRtcGwKK1ZDMTBfU1JDVkNYUFJPSiA9IHByb2plY3RzL1dpbmRvd3MvVkMxMC9zcmMvY3VybC52Y3hwcm9qLmRpc3QKIFZDMTBfU1JDVkNYUFJPSl9ERVBTID0gJChWQzEwX1NSQ1RNUEwpIE1ha2VmaWxlLmFtIHNyYy9NYWtlZmlsZS5pbmMKIAogVkMxMV9MSUJUTVBMID0gcHJvamVjdHMvV2luZG93cy9WQzExL2xpYi9saWJjdXJsLnRtcGwKIFZDMTFfTElCVkNYUFJPSiA9IHByb2plY3RzL1dpbmRvd3MvVkMxMS9saWIvbGliY3VybC52Y3hwcm9qLmRpc3QKIFZDMTFfTElCVkNYUFJPSl9ERVBTID0gJChWQzExX0xJQlRNUEwpIE1ha2VmaWxlLmFtIGxpYi9NYWtlZmlsZS5pbmMKLVZDMTFfU1JDVE1QTCA9IHByb2plY3RzL1dpbmRvd3MvVkMxMS9zcmMvY3VybHNyYy50bXBsCi1WQzExX1NSQ1ZDWFBST0ogPSBwcm9qZWN0cy9XaW5kb3dzL1ZDMTEvc3JjL2N1cmxzcmMudmN4cHJvai5kaXN0CitWQzExX1NSQ1RNUEwgPSBwcm9qZWN0cy9XaW5kb3dzL1ZDMTEvc3JjL2N1cmwudG1wbAorVkMxMV9TUkNWQ1hQUk9KID0gcHJvamVjdHMvV2luZG93cy9WQzExL3NyYy9jdXJsLnZjeHByb2ouZGlzdAogVkMxMV9TUkNWQ1hQUk9KX0RFUFMgPSAkKFZDMTFfU1JDVE1QTCkgTWFrZWZpbGUuYW0gc3JjL01ha2VmaWxlLmluYwogCiBWQzEyX0xJQlRNUEwgPSBwcm9qZWN0cy9XaW5kb3dzL1ZDMTIvbGliL2xpYmN1cmwudG1wbAogVkMxMl9MSUJWQ1hQUk9KID0gcHJvamVjdHMvV2luZG93cy9WQzEyL2xpYi9saWJjdXJsLnZjeHByb2ouZGlzdAogVkMxMl9MSUJWQ1hQUk9KX0RFUFMgPSAkKFZDMTJfTElCVE1QTCkgTWFrZWZpbGUuYW0gbGliL01ha2VmaWxlLmluYwotVkMxMl9TUkNUTVBMID0gcHJvamVjdHMvV2luZG93cy9WQzEyL3NyYy9jdXJsc3JjLnRtcGwKLVZDMTJfU1JDVkNYUFJPSiA9IHByb2plY3RzL1dpbmRvd3MvVkMxMi9zcmMvY3VybHNyYy52Y3hwcm9qLmRpc3QKK1ZDMTJfU1JDVE1QTCA9IHByb2plY3RzL1dpbmRvd3MvVkMxMi9zcmMvY3VybC50bXBsCitWQzEyX1NSQ1ZDWFBST0ogPSBwcm9qZWN0cy9XaW5kb3dzL1ZDMTIvc3JjL2N1cmwudmN4cHJvai5kaXN0CiBWQzEyX1NSQ1ZDWFBST0pfREVQUyA9ICQoVkMxMl9TUkNUTVBMKSBNYWtlZmlsZS5hbSBzcmMvTWFrZWZpbGUuaW5jCiAKLVZDX0RJU1QgPSBwcm9qZWN0cy9SRUFETUUJXAotIHByb2plY3RzL2J1aWxkLW9wZW5zc2wuYmF0CVwKLSBwcm9qZWN0cy9jaGVja3NyYy5iYXQJXAotIHByb2plY3RzL1dpbmRvd3MvVkM2L2N1cmwtYWxsLmRzdwlcCi0gcHJvamVjdHMvV2luZG93cy9WQzYvbGliL2xpYmN1cmwuZHN3IFwKLSBwcm9qZWN0cy9XaW5kb3dzL1ZDNi9zcmMvY3VybHNyYy5kc3cgXAotIHByb2plY3RzL1dpbmRvd3MvVkM3L2N1cmwtYWxsLnNsbglcCi0gcHJvamVjdHMvV2luZG93cy9WQzcvbGliL2xpYmN1cmwuc2xuIAlcCi0gcHJvamVjdHMvV2luZG93cy9WQzcvc3JjL2N1cmxzcmMuc2xuIAlcCi0gcHJvamVjdHMvV2luZG93cy9WQzcuMS9jdXJsLWFsbC5zbG4JXAotIHByb2plY3RzL1dpbmRvd3MvVkM3LjEvbGliL2xpYmN1cmwuc2xuIFwKLSBwcm9qZWN0cy9XaW5kb3dzL1ZDNy4xL3NyYy9jdXJsc3JjLnNsbiBcCi0gcHJvamVjdHMvV2luZG93cy9WQzgvY3VybC1hbGwuc2xuCVwKLSBwcm9qZWN0cy9XaW5kb3dzL1ZDOC9saWIvbGliY3VybC5zbG4gCVwKLSBwcm9qZWN0cy9XaW5kb3dzL1ZDOC9zcmMvY3VybHNyYy5zbG4gCVwKLSBwcm9qZWN0cy9XaW5kb3dzL1ZDOS9jdXJsLWFsbC5zbG4JXAotIHByb2plY3RzL1dpbmRvd3MvVkM5L2xpYi9saWJjdXJsLnNsbiAJXAotIHByb2plY3RzL1dpbmRvd3MvVkM5L3NyYy9jdXJsc3JjLnNsbiAJXAotIHByb2plY3RzL1dpbmRvd3MvVkMxMC9jdXJsLWFsbC5zbG4JXAotIHByb2plY3RzL1dpbmRvd3MvVkMxMC9saWIvbGliY3VybC5zbG4gCVwKLSBwcm9qZWN0cy9XaW5kb3dzL1ZDMTAvc3JjL2N1cmxzcmMuc2xuICBcCi0gcHJvamVjdHMvV2luZG93cy9WQzExL2N1cmwtYWxsLnNsbglcCi0gcHJvamVjdHMvV2luZG93cy9WQzExL2xpYi9saWJjdXJsLnNsbiAJXAotIHByb2plY3RzL1dpbmRvd3MvVkMxMS9zcmMvY3VybHNyYy5zbG4gCVwKLSBwcm9qZWN0cy9XaW5kb3dzL1ZDMTIvY3VybC1hbGwuc2xuCVwKLSBwcm9qZWN0cy9XaW5kb3dzL1ZDMTIvbGliL2xpYmN1cmwuc2xuIAlcCi0gcHJvamVjdHMvV2luZG93cy9WQzEyL3NyYy9jdXJsc3JjLnNsbgorVkMxNF9MSUJUTVBMID0gcHJvamVjdHMvV2luZG93cy9WQzE0L2xpYi9saWJjdXJsLnRtcGwKK1ZDMTRfTElCVkNYUFJPSiA9IHByb2plY3RzL1dpbmRvd3MvVkMxNC9saWIvbGliY3VybC52Y3hwcm9qLmRpc3QKK1ZDMTRfTElCVkNYUFJPSl9ERVBTID0gJChWQzE0X0xJQlRNUEwpIE1ha2VmaWxlLmFtIGxpYi9NYWtlZmlsZS5pbmMKK1ZDMTRfU1JDVE1QTCA9IHByb2plY3RzL1dpbmRvd3MvVkMxNC9zcmMvY3VybC50bXBsCitWQzE0X1NSQ1ZDWFBST0ogPSBwcm9qZWN0cy9XaW5kb3dzL1ZDMTQvc3JjL2N1cmwudmN4cHJvai5kaXN0CitWQzE0X1NSQ1ZDWFBST0pfREVQUyA9ICQoVkMxNF9TUkNUTVBMKSBNYWtlZmlsZS5hbSBzcmMvTWFrZWZpbGUuaW5jCisKK1ZDX0RJU1QgPSBwcm9qZWN0cy9SRUFETUUgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgcHJvamVjdHMvYnVpbGQtb3BlbnNzbC5iYXQgICAgICAgICAgICAgICAgICAgICAgICAgXAorIHByb2plY3RzL2J1aWxkLXdvbGZzc2wuYmF0ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyBwcm9qZWN0cy9jaGVja3NyYy5iYXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgcHJvamVjdHMvV2luZG93cy9WQzYvY3VybC1hbGwuZHN3ICAgICAgICAgICAgICAgICAgXAorIHByb2plY3RzL1dpbmRvd3MvVkM2L2xpYi9saWJjdXJsLmRzdyAgICAgICAgICAgICAgIFwKKyBwcm9qZWN0cy9XaW5kb3dzL1ZDNi9zcmMvY3VybC5kc3cgICAgICAgICAgICAgICAgICBcCisgcHJvamVjdHMvV2luZG93cy9WQzcvY3VybC1hbGwuc2xuICAgICAgICAgICAgICAgICAgXAorIHByb2plY3RzL1dpbmRvd3MvVkM3L2xpYi9saWJjdXJsLnNsbiAgICAgICAgICAgICAgIFwKKyBwcm9qZWN0cy9XaW5kb3dzL1ZDNy9zcmMvY3VybC5zbG4gICAgICAgICAgICAgICAgICBcCisgcHJvamVjdHMvV2luZG93cy9WQzcuMS9jdXJsLWFsbC5zbG4gICAgICAgICAgICAgICAgXAorIHByb2plY3RzL1dpbmRvd3MvVkM3LjEvbGliL2xpYmN1cmwuc2xuICAgICAgICAgICAgIFwKKyBwcm9qZWN0cy9XaW5kb3dzL1ZDNy4xL3NyYy9jdXJsLnNsbiAgICAgICAgICAgICAgICBcCisgcHJvamVjdHMvV2luZG93cy9WQzgvY3VybC1hbGwuc2xuICAgICAgICAgICAgICAgICAgXAorIHByb2plY3RzL1dpbmRvd3MvVkM4L2xpYi9saWJjdXJsLnNsbiAgICAgICAgICAgICAgIFwKKyBwcm9qZWN0cy9XaW5kb3dzL1ZDOC9zcmMvY3VybC5zbG4gICAgICAgICAgICAgICAgICBcCisgcHJvamVjdHMvV2luZG93cy9WQzkvY3VybC1hbGwuc2xuICAgICAgICAgICAgICAgICAgXAorIHByb2plY3RzL1dpbmRvd3MvVkM5L2xpYi9saWJjdXJsLnNsbiAgICAgICAgICAgICAgIFwKKyBwcm9qZWN0cy9XaW5kb3dzL1ZDOS9zcmMvY3VybC5zbG4gICAgICAgICAgICAgICAgICBcCisgcHJvamVjdHMvV2luZG93cy9WQzEwL2N1cmwtYWxsLnNsbiAgICAgICAgICAgICAgICAgXAorIHByb2plY3RzL1dpbmRvd3MvVkMxMC9saWIvbGliY3VybC5zbG4gICAgICAgICAgICAgIFwKKyBwcm9qZWN0cy9XaW5kb3dzL1ZDMTAvbGliL2xpYmN1cmwudmN4cHJvai5maWx0ZXJzICBcCisgcHJvamVjdHMvV2luZG93cy9WQzEwL3NyYy9jdXJsLnNsbiAgICAgICAgICAgICAgICAgXAorIHByb2plY3RzL1dpbmRvd3MvVkMxMC9zcmMvY3VybC52Y3hwcm9qLmZpbHRlcnMgICAgIFwKKyBwcm9qZWN0cy9XaW5kb3dzL1ZDMTEvY3VybC1hbGwuc2xuICAgICAgICAgICAgICAgICBcCisgcHJvamVjdHMvV2luZG93cy9WQzExL2xpYi9saWJjdXJsLnNsbiAgICAgICAgICAgICAgXAorIHByb2plY3RzL1dpbmRvd3MvVkMxMS9saWIvbGliY3VybC52Y3hwcm9qLmZpbHRlcnMgIFwKKyBwcm9qZWN0cy9XaW5kb3dzL1ZDMTEvc3JjL2N1cmwuc2xuICAgICAgICAgICAgICAgICBcCisgcHJvamVjdHMvV2luZG93cy9WQzExL3NyYy9jdXJsLnZjeHByb2ouZmlsdGVycyAgICAgXAorIHByb2plY3RzL1dpbmRvd3MvVkMxMi9jdXJsLWFsbC5zbG4gICAgICAgICAgICAgICAgIFwKKyBwcm9qZWN0cy9XaW5kb3dzL1ZDMTIvbGliL2xpYmN1cmwuc2xuICAgICAgICAgICAgICBcCisgcHJvamVjdHMvV2luZG93cy9WQzEyL2xpYi9saWJjdXJsLnZjeHByb2ouZmlsdGVycyAgXAorIHByb2plY3RzL1dpbmRvd3MvVkMxMi9zcmMvY3VybC5zbG4gICAgICAgICAgICAgICAgIFwKKyBwcm9qZWN0cy9XaW5kb3dzL1ZDMTIvc3JjL2N1cmwudmN4cHJvai5maWx0ZXJzICAgICBcCisgcHJvamVjdHMvV2luZG93cy9WQzE0L2N1cmwtYWxsLnNsbiAgICAgICAgICAgICAgICAgXAorIHByb2plY3RzL1dpbmRvd3MvVkMxNC9saWIvbGliY3VybC5zbG4gICAgICAgICAgICAgIFwKKyBwcm9qZWN0cy9XaW5kb3dzL1ZDMTQvbGliL2xpYmN1cmwudmN4cHJvai5maWx0ZXJzICBcCisgcHJvamVjdHMvV2luZG93cy9WQzE0L3NyYy9jdXJsLnNsbiAgICAgICAgICAgICAgICAgXAorIHByb2plY3RzL1dpbmRvd3MvVkMxNC9zcmMvY3VybC52Y3hwcm9qLmZpbHRlcnMKIAogV0lOQlVJTERfRElTVCA9IHdpbmJ1aWxkL0JVSUxELldJTkRPV1MudHh0IHdpbmJ1aWxkL2dlbl9yZXNwX2ZpbGUuYmF0CVwKICB3aW5idWlsZC9NYWtlZmlsZUJ1aWxkLnZjIHdpbmJ1aWxkL01ha2VmaWxlLnZjCQkJCVwKQEAgLTExOSwxNyArMTM4LDE5IEBACiAKIEVYVFJBX0RJU1QgPSBDSEFOR0VTIENPUFlJTkcgbWFrZXRneiBNYWtlZmlsZS5kaXN0IGN1cmwtY29uZmlnLmluCVwKICBSRUxFQVNFLU5PVEVTIGJ1aWxkY29uZiBsaWJjdXJsLnBjLmluIE1hY09TWC1GcmFtZXdvcmsgc2NyaXB0cy96c2gucGwJXAotICQoQ01BS0VfRElTVCkgJChWQ19ESVNUKSAkKFdJTkJVSUxEX0RJU1QpIGxpYi9saWJjdXJsLnZlcnMuaW4KKyAkKENNQUtFX0RJU1QpICQoVkNfRElTVCkgJChXSU5CVUlMRF9ESVNUKSBsaWIvbGliY3VybC52ZXJzLmluICAgICAgICAgIFwKKyBidWlsZGNvbmYuYmF0CiAKIENMRUFORklMRVMgPSAkKFZDNl9MSUJEU1ApICQoVkM2X1NSQ0RTUCkgJChWQzdfTElCVkNQUk9KKSAkKFZDN19TUkNWQ1BST0opCVwKICAkKFZDNzFfTElCVkNQUk9KKSAkKFZDNzFfU1JDVkNQUk9KKSAkKFZDOF9MSUJWQ1BST0opICQoVkM4X1NSQ1ZDUFJPSikJXAogICQoVkM5X0xJQlZDUFJPSikgJChWQzlfU1JDVkNQUk9KKSAkKFZDMTBfTElCVkNYUFJPSikgJChWQzEwX1NSQ1ZDWFBST0opCVwKLSAkKFZDMTFfTElCVkNYUFJPSikgJChWQzExX1NSQ1ZDWFBST0opICQoVkMxMl9MSUJWQ1hQUk9KKSAkKFZDMTJfU1JDVkNYUFJPSikKKyAkKFZDMTFfTElCVkNYUFJPSikgJChWQzExX1NSQ1ZDWFBST0opICQoVkMxMl9MSUJWQ1hQUk9KKSAkKFZDMTJfU1JDVkNYUFJPSikJXAorICQoVkMxNF9MSUJWQ1hQUk9KKSAkKFZDMTRfU1JDVkNYUFJPSikKIAogYmluX1NDUklQVFMgPSBjdXJsLWNvbmZpZwogCiBTVUJESVJTID0gbGliIHNyYyBpbmNsdWRlCi1ESVNUX1NVQkRJUlMgPSAkKFNVQkRJUlMpIHRlc3RzIHBhY2thZ2VzIGRvY3MKK0RJU1RfU1VCRElSUyA9ICQoU1VCRElSUykgdGVzdHMgcGFja2FnZXMgZG9jcyBzY3JpcHRzCiAKIHBrZ2NvbmZpZ2RpciA9ICQobGliZGlyKS9wa2djb25maWcKIHBrZ2NvbmZpZ19EQVRBID0gbGliY3VybC5wYwpAQCAtMTQ4LDEwICsxNjksMTAgQEAKIAlkb25lKQogCiBodG1sOgotCWNkIGRvY3M7IG1ha2UgaHRtbAorCWNkIGRvY3MgJiYgbWFrZSBodG1sCiAKIHBkZjoKLQljZCBkb2NzOyBtYWtlIHBkZgorCWNkIGRvY3MgJiYgbWFrZSBwZGYKIAogY2hlY2s6IHRlc3QgZXhhbXBsZXMgY2hlY2stZG9jcwogCkBAIC0yNjEsNiArMjgyLDkgQEAKIGNoZWNrc3JjOgogCWNkIGxpYiAmJiAkKE1BS0UpIGNoZWNrc3JjCiAJY2Qgc3JjICYmICQoTUFLRSkgY2hlY2tzcmMKKwljZCB0ZXN0cyAmJiAkKE1BS0UpIGNoZWNrc3JjCisJY2QgaW5jbHVkZS9jdXJsICYmICQoTUFLRSkgY2hlY2tzcmMKKwljZCBkb2NzL2V4YW1wbGVzICYmICQoTUFLRSkgY2hlY2tzcmMKIAogLlBIT05ZOiB2Yy1pZGUKIApAQCAtMjY5LDEwICsyOTMsMTIgQEAKICAkKFZDOF9MSUJWQ1BST0pfREVQUykgJChWQzhfU1JDVkNQUk9KX0RFUFMpICQoVkM5X0xJQlZDUFJPSl9ERVBTKQlcCiAgJChWQzlfU1JDVkNQUk9KX0RFUFMpICQoVkMxMF9MSUJWQ1hQUk9KX0RFUFMpICQoVkMxMF9TUkNWQ1hQUk9KX0RFUFMpCVwKICAkKFZDMTFfTElCVkNYUFJPSl9ERVBTKSAkKFZDMTFfU1JDVkNYUFJPSl9ERVBTKSAkKFZDMTJfTElCVkNYUFJPSl9ERVBTKQlcCi0gJChWQzEyX1NSQ1ZDWFBST0pfREVQUykKKyAkKFZDMTJfU1JDVkNYUFJPSl9ERVBTKSAkKFZDMTRfTElCVkNYUFJPSl9ERVBTKSAkKFZDMTRfU1JDVkNYUFJPSl9ERVBTKQogCUAod2luMzJfbGliX3NyY3M9JyQoTElCX0NGSUxFUyknOyBcCiAJd2luMzJfbGliX2hkcnM9JyQoTElCX0hGSUxFUykgY29uZmlnLXdpbjMyLmgnOyBcCiAJd2luMzJfbGliX3JjPSckKExJQl9SQ0ZJTEVTKSc7IFwKKwl3aW4zMl9saWJfdmF1dGhfc3Jjcz0nJChMSUJfVkFVVEhfQ0ZJTEVTKSc7IFwKKwl3aW4zMl9saWJfdmF1dGhfaGRycz0nJChMSUJfVkFVVEhfSEZJTEVTKSc7IFwKIAl3aW4zMl9saWJfdnRsc19zcmNzPSckKExJQl9WVExTX0NGSUxFUyknOyBcCiAJd2luMzJfbGliX3Z0bHNfaGRycz0nJChMSUJfVlRMU19IRklMRVMpJzsgXAogCXdpbjMyX3NyY19zcmNzPSckKENVUkxfQ0ZJTEVTKSc7IFwKQEAgLTI4Myw2ICszMDksOCBAQAogCVwKIAlzb3J0ZWRfbGliX3NyY3M9YGZvciBmaWxlIGluICQkd2luMzJfbGliX3NyY3M7IGRvIGVjaG8gJCRmaWxlOyBkb25lIHwgc29ydGA7IFwKIAlzb3J0ZWRfbGliX2hkcnM9YGZvciBmaWxlIGluICQkd2luMzJfbGliX2hkcnM7IGRvIGVjaG8gJCRmaWxlOyBkb25lIHwgc29ydGA7IFwKKwlzb3J0ZWRfbGliX3ZhdXRoX3NyY3M9YGZvciBmaWxlIGluICQkd2luMzJfbGliX3ZhdXRoX3NyY3M7IGRvIGVjaG8gJCRmaWxlOyBkb25lIHwgc29ydGA7IFwKKwlzb3J0ZWRfbGliX3ZhdXRoX2hkcnM9YGZvciBmaWxlIGluICQkd2luMzJfbGliX3ZhdXRoX2hkcnM7IGRvIGVjaG8gJCRmaWxlOyBkb25lIHwgc29ydGA7IFwKIAlzb3J0ZWRfbGliX3Z0bHNfc3Jjcz1gZm9yIGZpbGUgaW4gJCR3aW4zMl9saWJfdnRsc19zcmNzOyBkbyBlY2hvICQkZmlsZTsgZG9uZSB8IHNvcnRgOyBcCiAJc29ydGVkX2xpYl92dGxzX2hkcnM9YGZvciBmaWxlIGluICQkd2luMzJfbGliX3Z0bHNfaGRyczsgZG8gZWNobyAkJGZpbGU7IGRvbmUgfCBzb3J0YDsgXAogCXNvcnRlZF9zcmNfc3Jjcz1gZm9yIGZpbGUgaW4gJCR3aW4zMl9zcmNfc3JjczsgZG8gZWNobyAkJGZpbGU7IGRvbmUgfCBzb3J0YDsgXApAQCAtMjkzLDEwICszMjEsMTEgQEAKIAlhd2tfY29kZT0nXAogZnVuY3Rpb24gZ2VuX2VsZW1lbnQodHlwZSwgZGlyLCBmaWxlKVwKIHtcCisgIHN1YigvdmF1dGhcLy8sICIiLCBmaWxlKTtcCiAgIHN1YigvdnRsc1wvLywgIiIsIGZpbGUpO1wKIFwKICAgc3BhY2VzPSIgICAgIjtcCi0gIGlmKGRpciA9PSAibGliXFx2dGxzIilcCisgIGlmKGRpciA9PSAibGliXFx2YXV0aCIgfHwgZGlyID09ICJsaWJcXHZ0bHMiKVwKICAgICB0YWJzPSIJCQkJIjtcCiAgIGVsc2VcCiAgICAgdGFicz0iCQkJIjtcCkBAIC0zNTAsNiArMzc5LDE0IEBACiAgICAgc3BsaXQobGliX3JjLCBhcnIpO1wKICAgICBmb3IodmFsIGluIGFycikgZ2VuX2VsZW1lbnQocHJval90eXBlLCAibGliIiwgYXJyW3ZhbF0pO1wKICAgfVwKKyAgZWxzZSBpZigkJDAgPT0gIkNVUkxfTElCX1ZBVVRIX0NfRklMRVMiKSB7XAorICAgIHNwbGl0KGxpYl92YXV0aF9zcmNzLCBhcnIpO1wKKyAgICBmb3IodmFsIGluIGFycikgZ2VuX2VsZW1lbnQocHJval90eXBlLCAibGliXFx2YXV0aCIsIGFyclt2YWxdKTtcCisgIH1cCisgIGVsc2UgaWYoJCQwID09ICJDVVJMX0xJQl9WQVVUSF9IX0ZJTEVTIikge1wKKyAgICBzcGxpdChsaWJfdmF1dGhfaGRycywgYXJyKTtcCisgICAgZm9yKHZhbCBpbiBhcnIpIGdlbl9lbGVtZW50KHByb2pfdHlwZSwgImxpYlxcdmF1dGgiLCBhcnJbdmFsXSk7XAorICB9XAogICBlbHNlIGlmKCQkMCA9PSAiQ1VSTF9MSUJfVlRMU19DX0ZJTEVTIikge1wKICAgICBzcGxpdChsaWJfdnRsc19zcmNzLCBhcnIpO1wKICAgICBmb3IodmFsIGluIGFycikgZ2VuX2VsZW1lbnQocHJval90eXBlLCAibGliXFx2dGxzIiwgYXJyW3ZhbF0pO1wKQEAgLTM5Myw2ICs0MzAsOCBAQAogCQktdiBsaWJfc3Jjcz0iJCRzb3J0ZWRfbGliX3NyY3MiIFwKIAkJLXYgbGliX2hkcnM9IiQkc29ydGVkX2xpYl9oZHJzIiBcCiAJCS12IGxpYl9yYz0iJCR3aW4zMl9saWJfcmMiIFwKKwkJLXYgbGliX3ZhdXRoX3NyY3M9IiQkc29ydGVkX2xpYl92YXV0aF9zcmNzIiBcCisJCS12IGxpYl92YXV0aF9oZHJzPSIkJHNvcnRlZF9saWJfdmF1dGhfaGRycyIgXAogCQktdiBsaWJfdnRsc19zcmNzPSIkJHNvcnRlZF9saWJfdnRsc19zcmNzIiBcCiAJCS12IGxpYl92dGxzX2hkcnM9IiQkc29ydGVkX2xpYl92dGxzX2hkcnMiIFwKIAkJIiQkYXdrX2NvZGUiICQoc3JjZGlyKS8kKFZDNl9MSUJUTVBMKSA+ICQoVkM2X0xJQkRTUCkgfHwgeyBleGl0IDE7IH07IFwKQEAgLTQxMSw2ICs0NTAsOCBAQAogCQktdiBsaWJfc3Jjcz0iJCRzb3J0ZWRfbGliX3NyY3MiIFwKIAkJLXYgbGliX2hkcnM9IiQkc29ydGVkX2xpYl9oZHJzIiBcCiAJCS12IGxpYl9yYz0iJCR3aW4zMl9saWJfcmMiIFwKKwkJLXYgbGliX3ZhdXRoX3NyY3M9IiQkc29ydGVkX2xpYl92YXV0aF9zcmNzIiBcCisJCS12IGxpYl92YXV0aF9oZHJzPSIkJHNvcnRlZF9saWJfdmF1dGhfaGRycyIgXAogCQktdiBsaWJfdnRsc19zcmNzPSIkJHNvcnRlZF9saWJfdnRsc19zcmNzIiBcCiAJCS12IGxpYl92dGxzX2hkcnM9IiQkc29ydGVkX2xpYl92dGxzX2hkcnMiIFwKIAkJIiQkYXdrX2NvZGUiICQoc3JjZGlyKS8kKFZDN19MSUJUTVBMKSA+ICQoVkM3X0xJQlZDUFJPSikgfHwgeyBleGl0IDE7IH07IFwKQEAgLTQyOSw2ICs0NzAsOCBAQAogCQktdiBsaWJfc3Jjcz0iJCRzb3J0ZWRfbGliX3NyY3MiIFwKIAkJLXYgbGliX2hkcnM9IiQkc29ydGVkX2xpYl9oZHJzIiBcCiAJCS12IGxpYl9yYz0iJCR3aW4zMl9saWJfcmMiIFwKKwkJLXYgbGliX3ZhdXRoX3NyY3M9IiQkc29ydGVkX2xpYl92YXV0aF9zcmNzIiBcCisJCS12IGxpYl92YXV0aF9oZHJzPSIkJHNvcnRlZF9saWJfdmF1dGhfaGRycyIgXAogCQktdiBsaWJfdnRsc19zcmNzPSIkJHNvcnRlZF9saWJfdnRsc19zcmNzIiBcCiAJCS12IGxpYl92dGxzX2hkcnM9IiQkc29ydGVkX2xpYl92dGxzX2hkcnMiIFwKIAkJIiQkYXdrX2NvZGUiICQoc3JjZGlyKS8kKFZDNzFfTElCVE1QTCkgPiAkKFZDNzFfTElCVkNQUk9KKSB8fCB7IGV4aXQgMTsgfTsgXApAQCAtNDQ3LDYgKzQ5MCw4IEBACiAJCS12IGxpYl9zcmNzPSIkJHNvcnRlZF9saWJfc3JjcyIgXAogCQktdiBsaWJfaGRycz0iJCRzb3J0ZWRfbGliX2hkcnMiIFwKIAkJLXYgbGliX3JjPSIkJHdpbjMyX2xpYl9yYyIgXAorCQktdiBsaWJfdmF1dGhfc3Jjcz0iJCRzb3J0ZWRfbGliX3ZhdXRoX3NyY3MiIFwKKwkJLXYgbGliX3ZhdXRoX2hkcnM9IiQkc29ydGVkX2xpYl92YXV0aF9oZHJzIiBcCiAJCS12IGxpYl92dGxzX3NyY3M9IiQkc29ydGVkX2xpYl92dGxzX3NyY3MiIFwKIAkJLXYgbGliX3Z0bHNfaGRycz0iJCRzb3J0ZWRfbGliX3Z0bHNfaGRycyIgXAogCQkiJCRhd2tfY29kZSIgJChzcmNkaXIpLyQoVkM4X0xJQlRNUEwpID4gJChWQzhfTElCVkNQUk9KKSB8fCB7IGV4aXQgMTsgfTsgXApAQCAtNDY1LDYgKzUxMCw4IEBACiAJCS12IGxpYl9zcmNzPSIkJHNvcnRlZF9saWJfc3JjcyIgXAogCQktdiBsaWJfaGRycz0iJCRzb3J0ZWRfbGliX2hkcnMiIFwKIAkJLXYgbGliX3JjPSIkJHdpbjMyX2xpYl9yYyIgXAorCQktdiBsaWJfdmF1dGhfc3Jjcz0iJCRzb3J0ZWRfbGliX3ZhdXRoX3NyY3MiIFwKKwkJLXYgbGliX3ZhdXRoX2hkcnM9IiQkc29ydGVkX2xpYl92YXV0aF9oZHJzIiBcCiAJCS12IGxpYl92dGxzX3NyY3M9IiQkc29ydGVkX2xpYl92dGxzX3NyY3MiIFwKIAkJLXYgbGliX3Z0bHNfaGRycz0iJCRzb3J0ZWRfbGliX3Z0bHNfaGRycyIgXAogCQkiJCRhd2tfY29kZSIgJChzcmNkaXIpLyQoVkM5X0xJQlRNUEwpID4gJChWQzlfTElCVkNQUk9KKSB8fCB7IGV4aXQgMTsgfTsgXApAQCAtNDgzLDYgKzUzMCw4IEBACiAJCS12IGxpYl9zcmNzPSIkJHNvcnRlZF9saWJfc3JjcyIgXAogCQktdiBsaWJfaGRycz0iJCRzb3J0ZWRfbGliX2hkcnMiIFwKIAkJLXYgbGliX3JjPSIkJHdpbjMyX2xpYl9yYyIgXAorCQktdiBsaWJfdmF1dGhfc3Jjcz0iJCRzb3J0ZWRfbGliX3ZhdXRoX3NyY3MiIFwKKwkJLXYgbGliX3ZhdXRoX2hkcnM9IiQkc29ydGVkX2xpYl92YXV0aF9oZHJzIiBcCiAJCS12IGxpYl92dGxzX3NyY3M9IiQkc29ydGVkX2xpYl92dGxzX3NyY3MiIFwKIAkJLXYgbGliX3Z0bHNfaGRycz0iJCRzb3J0ZWRfbGliX3Z0bHNfaGRycyIgXAogCQkiJCRhd2tfY29kZSIgJChzcmNkaXIpLyQoVkMxMF9MSUJUTVBMKSA+ICQoVkMxMF9MSUJWQ1hQUk9KKSB8fCB7IGV4aXQgMTsgfTsgXApAQCAtNTAxLDYgKzU1MCw4IEBACiAJCS12IGxpYl9zcmNzPSIkJHNvcnRlZF9saWJfc3JjcyIgXAogCQktdiBsaWJfaGRycz0iJCRzb3J0ZWRfbGliX2hkcnMiIFwKIAkJLXYgbGliX3JjPSIkJHdpbjMyX2xpYl9yYyIgXAorCQktdiBsaWJfdmF1dGhfc3Jjcz0iJCRzb3J0ZWRfbGliX3ZhdXRoX3NyY3MiIFwKKwkJLXYgbGliX3ZhdXRoX2hkcnM9IiQkc29ydGVkX2xpYl92YXV0aF9oZHJzIiBcCiAJCS12IGxpYl92dGxzX3NyY3M9IiQkc29ydGVkX2xpYl92dGxzX3NyY3MiIFwKIAkJLXYgbGliX3Z0bHNfaGRycz0iJCRzb3J0ZWRfbGliX3Z0bHNfaGRycyIgXAogCQkiJCRhd2tfY29kZSIgJChzcmNkaXIpLyQoVkMxMV9MSUJUTVBMKSA+ICQoVkMxMV9MSUJWQ1hQUk9KKSB8fCB7IGV4aXQgMTsgfTsgXApAQCAtNTE5LDYgKzU3MCw4IEBACiAJCS12IGxpYl9zcmNzPSIkJHNvcnRlZF9saWJfc3JjcyIgXAogCQktdiBsaWJfaGRycz0iJCRzb3J0ZWRfbGliX2hkcnMiIFwKIAkJLXYgbGliX3JjPSIkJHdpbjMyX2xpYl9yYyIgXAorCQktdiBsaWJfdmF1dGhfc3Jjcz0iJCRzb3J0ZWRfbGliX3ZhdXRoX3NyY3MiIFwKKwkJLXYgbGliX3ZhdXRoX2hkcnM9IiQkc29ydGVkX2xpYl92YXV0aF9oZHJzIiBcCiAJCS12IGxpYl92dGxzX3NyY3M9IiQkc29ydGVkX2xpYl92dGxzX3NyY3MiIFwKIAkJLXYgbGliX3Z0bHNfaGRycz0iJCRzb3J0ZWRfbGliX3Z0bHNfaGRycyIgXAogCQkiJCRhd2tfY29kZSIgJChzcmNkaXIpLyQoVkMxMl9MSUJUTVBMKSA+ICQoVkMxMl9MSUJWQ1hQUk9KKSB8fCB7IGV4aXQgMTsgfTsgXApAQCAtNTMwLDQgKzU4MywyNCBAQAogCQktdiBzcmNfcmM9IiQkd2luMzJfc3JjX3JjIiBcCiAJCS12IHNyY194X3NyY3M9IiQkc29ydGVkX3NyY194X3NyY3MiIFwKIAkJLXYgc3JjX3hfaGRycz0iJCRzb3J0ZWRfc3JjX3hfaGRycyIgXAotCQkiJCRhd2tfY29kZSIgJChzcmNkaXIpLyQoVkMxMl9TUkNUTVBMKSA+ICQoVkMxMl9TUkNWQ1hQUk9KKSB8fCB7IGV4aXQgMTsgfTspCisJCSIkJGF3a19jb2RlIiAkKHNyY2RpcikvJChWQzEyX1NSQ1RNUEwpID4gJChWQzEyX1NSQ1ZDWFBST0opIHx8IHsgZXhpdCAxOyB9OyBcCisJXAorCWVjaG8gImdlbmVyYXRpbmcgJyQoVkMxNF9MSUJWQ1hQUk9KKSciOyBcCisJYXdrIC12IHByb2pfdHlwZT12Y3hwcm9qIFwKKwkJLXYgbGliX3NyY3M9IiQkc29ydGVkX2xpYl9zcmNzIiBcCisJCS12IGxpYl9oZHJzPSIkJHNvcnRlZF9saWJfaGRycyIgXAorCQktdiBsaWJfcmM9IiQkd2luMzJfbGliX3JjIiBcCisJCS12IGxpYl92YXV0aF9zcmNzPSIkJHNvcnRlZF9saWJfdmF1dGhfc3JjcyIgXAorCQktdiBsaWJfdmF1dGhfaGRycz0iJCRzb3J0ZWRfbGliX3ZhdXRoX2hkcnMiIFwKKwkJLXYgbGliX3Z0bHNfc3Jjcz0iJCRzb3J0ZWRfbGliX3Z0bHNfc3JjcyIgXAorCQktdiBsaWJfdnRsc19oZHJzPSIkJHNvcnRlZF9saWJfdnRsc19oZHJzIiBcCisJCSIkJGF3a19jb2RlIiAkKHNyY2RpcikvJChWQzE0X0xJQlRNUEwpID4gJChWQzE0X0xJQlZDWFBST0opIHx8IHsgZXhpdCAxOyB9OyBcCisJXAorCWVjaG8gImdlbmVyYXRpbmcgJyQoVkMxNF9TUkNWQ1hQUk9KKSciOyBcCisJYXdrIC12IHByb2pfdHlwZT12Y3hwcm9qIFwKKwkJLXYgc3JjX3NyY3M9IiQkc29ydGVkX3NyY19zcmNzIiBcCisJCS12IHNyY19oZHJzPSIkJHNvcnRlZF9zcmNfaGRycyIgXAorCQktdiBzcmNfcmM9IiQkd2luMzJfc3JjX3JjIiBcCisJCS12IHNyY194X3NyY3M9IiQkc29ydGVkX3NyY194X3NyY3MiIFwKKwkJLXYgc3JjX3hfaGRycz0iJCRzb3J0ZWRfc3JjX3hfaGRycyIgXAorCQkiJCRhd2tfY29kZSIgJChzcmNkaXIpLyQoVkMxNF9TUkNUTVBMKSA+ICQoVkMxNF9TUkNWQ1hQUk9KKSB8fCB7IGV4aXQgMTsgfTspCmRpZmYgLS1naXQgYS9NYWtlZmlsZS5kaXN0IGIvTWFrZWZpbGUuZGlzdAppbmRleCBmMGY1MGQ4Li4zMjllNGYzIDEwMDY0NAotLS0gYS9NYWtlZmlsZS5kaXN0CisrKyBiL01ha2VmaWxlLmRpc3QKQEAgLTUsMTEgKzUsMTEgQEAKICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAjCi0jIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisjIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAjCiAjIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAjCiAjIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTU2Niw2ICs1NjYsMTcgQEAKIAlAZWNobyAiZ2VuZXJhdGUgJEAiCiAJQHNlZCAtZSAicyMvR1ggL0RXSU4zMiAvWVgjL0VIc2MgL0RXSU4zMiMiIC1lICJzIy9HWiMvUlRDMSMiIC1lICJzL3dzMl8zMi5saWIvd3MyXzMyLmxpYi9nIiAtZSAicy92YzYvdmMxMi9nIiAtZSAicy9WQzYvVkMxMi9nIiBzcmMvTWFrZWZpbGUudmM2ID4gc3JjL01ha2VmaWxlLnZjMTIKIAorIyBWQzE0IG1ha2VmaWxlcyBhcmUgZm9yIHVzZSB3aXRoIFZTMjAxNQordmMxNDogbGliL01ha2VmaWxlLnZjMTQgc3JjL01ha2VmaWxlLnZjMTQKKworbGliL01ha2VmaWxlLnZjMTQ6IGxpYi9NYWtlZmlsZS52YzYKKwlAZWNobyAiZ2VuZXJhdGUgJEAiCisJQHNlZCAtZSAicyMvR1ggL0RXSU4zMiAvWVgjL0VIc2MgL0RXSU4zMiMiIC1lICJzIy9HWiMvUlRDMSMiIC1lICJzL3dzMl8zMi5saWIvd3MyXzMyLmxpYi9nIiAtZSAicy92YzYvdmMxNC9nIiAtZSAicy9WQzYvVkMxNC9nIiBsaWIvTWFrZWZpbGUudmM2ID4gbGliL01ha2VmaWxlLnZjMTQKKworc3JjL01ha2VmaWxlLnZjMTQ6IHNyYy9NYWtlZmlsZS52YzYKKwlAZWNobyAiZ2VuZXJhdGUgJEAiCisJQHNlZCAtZSAicyMvR1ggL0RXSU4zMiAvWVgjL0VIc2MgL0RXSU4zMiMiIC1lICJzIy9HWiMvUlRDMSMiIC1lICJzL3dzMl8zMi5saWIvd3MyXzMyLmxpYi9nIiAtZSAicy92YzYvdmMxNC9nIiAtZSAicy9WQzYvVkMxNC9nIiBzcmMvTWFrZWZpbGUudmM2ID4gc3JjL01ha2VmaWxlLnZjMTQKKwogY2EtYnVuZGxlOiBsaWIvbWstY2EtYnVuZGxlLnBsCiAJQGVjaG8gImdlbmVyYXRlIGEgZnJlc2ggY2EtYnVuZGxlLmNydCIKIAlAcGVybCAkPCAtYiAtbCAtdSBsaWIvY2EtYnVuZGxlLmNydApkaWZmIC0tZ2l0IGEvUkVBRE1FIGIvUkVBRE1FCmluZGV4IGQ5MmM3ZjguLmYwYjNiOTMgMTAwNjQ0Ci0tLSBhL1JFQURNRQorKysgYi9SRUFETUUKQEAgLTI0LDcgKzI0LDcgQEAKIENPTlRBQ1QKIAogICBJZiB5b3UgaGF2ZSBwcm9ibGVtcywgcXVlc3Rpb25zLCBpZGVhcyBvciBzdWdnZXN0aW9ucywgcGxlYXNlIGNvbnRhY3QgdXMKLSAgYnkgcG9zdGluZyB0byBhIHN1aXRhYmxlIG1haWxpbmcgbGlzdC4gU2VlIGh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC8KKyAgYnkgcG9zdGluZyB0byBhIHN1aXRhYmxlIG1haWxpbmcgbGlzdC4gU2VlIGh0dHBzOi8vY3VybC5oYXh4LnNlL21haWwvCiAKICAgQWxsIGNvbnRyaWJ1dG9ycyB0byB0aGUgcHJvamVjdCBhcmUgbGlzdGVkIGluIHRoZSBUSEFOS1MgZG9jdW1lbnQuCiAKQEAgLTMyLDEzICszMiwxMyBAQAogCiAgIFZpc2l0IHRoZSBjdXJsIHdlYiBzaXRlIGZvciB0aGUgbGF0ZXN0IG5ld3MgYW5kIGRvd25sb2FkczoKIAotICAgICAgICBodHRwOi8vY3VybC5oYXh4LnNlLworICAgICAgICBodHRwczovL2N1cmwuaGF4eC5zZS8KIAogR0lUCiAKICAgVG8gZG93bmxvYWQgdGhlIHZlcnkgbGF0ZXN0IHNvdXJjZSBvZmYgdGhlIEdJVCBzZXJ2ZXIgZG8gdGhpczoKIAotICAgIGdpdCBjbG9uZSBodHRwczovL2dpdGh1Yi5jb20vYmFnZGVyL2N1cmwuZ2l0CisgICAgZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9jdXJsL2N1cmwuZ2l0CiAKICAgKHlvdSdsbCBnZXQgYSBkaXJlY3RvcnkgbmFtZWQgY3VybCBjcmVhdGVkLCBmaWxsZWQgd2l0aCB0aGUgc291cmNlIGNvZGUpCiAKZGlmZiAtLWdpdCBhL1JFQURNRS5tZCBiL1JFQURNRS5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYjBjYTU1Ci0tLSAvZGV2L251bGwKKysrIGIvUkVBRE1FLm1kCkBAIC0wLDAgKzEsNDUgQEAKKworQ3VybCBpcyBhIGNvbW1hbmQgbGluZSB0b29sIGZvciB0cmFuc2ZlcnJpbmcgZGF0YSBzcGVjaWZpZWQgd2l0aCBVUkwKK3N5bnRheC4gRmluZCBvdXQgaG93IHRvIHVzZSBjdXJsIGJ5IHJlYWRpbmcgW3RoZSBjdXJsLjEgbWFuCitwYWdlXShodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL21hbnBhZ2UuaHRtbCkgb3IgW3RoZSBNQU5VQUwKK2RvY3VtZW50XShodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL21hbnVhbC5odG1sKS4gRmluZCBvdXQgaG93IHRvIGluc3RhbGwgQ3VybAorYnkgcmVhZGluZyBbdGhlIElOU1RBTEwgZG9jdW1lbnRdKGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvaW5zdGFsbC5odG1sKS4KKworbGliY3VybCBpcyB0aGUgbGlicmFyeSBjdXJsIGlzIHVzaW5nIHRvIGRvIGl0cyBqb2IuIEl0IGlzIHJlYWRpbHkgYXZhaWxhYmxlIHRvCitiZSB1c2VkIGJ5IHlvdXIgc29mdHdhcmUuIFJlYWQgW3RoZSBsaWJjdXJsLjMgbWFuCitwYWdlXShodHRwczovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvbGliY3VybC5odG1sKSB0byBsZWFybiBob3chCisKK1lvdSBmaW5kIGFuc3dlcnMgdG8gdGhlIG1vc3QgZnJlcXVlbnQgcXVlc3Rpb25zIHdlIGdldCBpbiBbdGhlIEZBUQorZG9jdW1lbnRdKGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvZmFxLmh0bWwpLgorCitTdHVkeSBbdGhlIENPUFlJTkcgZmlsZV0oaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbCkgZm9yCitkaXN0cmlidXRpb24gdGVybXMgYW5kIHNpbWlsYXIuIElmIHlvdSBkaXN0cmlidXRlIGN1cmwgYmluYXJpZXMgb3Igb3RoZXIKK2JpbmFyaWVzIHRoYXQgaW52b2x2ZSBsaWJjdXJsLCB5b3UgbWlnaHQgZW5qb3kgW3RoZSBMSUNFTlNFLU1JWElORworZG9jdW1lbnRdKGh0dHBzOi8vY3VybC5oYXh4LnNlL2xlZ2FsL2xpY21peC5odG1sKS4KKworIyMgQ09OVEFDVAorCitJZiB5b3UgaGF2ZSBwcm9ibGVtcywgcXVlc3Rpb25zLCBpZGVhcyBvciBzdWdnZXN0aW9ucywgcGxlYXNlIGNvbnRhY3QgdXMgYnkKK3Bvc3RpbmcgdG8gYSBzdWl0YWJsZSBbbWFpbGluZyBsaXN0XShodHRwczovL2N1cmwuaGF4eC5zZS9tYWlsLykuCisKK0FsbCBjb250cmlidXRvcnMgdG8gdGhlIHByb2plY3QgYXJlIGxpc3RlZCBpbiBbdGhlIFRIQU5LUworZG9jdW1lbnRdKGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvdGhhbmtzLmh0bWwpLgorCisjIyBXRUIgU0lURQorCitWaXNpdCB0aGUgW2N1cmwgd2ViIHNpdGVdKGh0dHBzOi8vY3VybC5oYXh4LnNlLykgZm9yIHRoZSBsYXRlc3QgbmV3cyBhbmQKK2Rvd25sb2Fkcy4KKworIyMgR0lUCisKK1RvIGRvd25sb2FkIHRoZSB2ZXJ5IGxhdGVzdCBzb3VyY2Ugb2ZmIHRoZSBHSVQgc2VydmVyIGRvIHRoaXM6CisKKyAgICBnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL2N1cmwvY3VybC5naXQKKworKHlvdSdsbCBnZXQgYSBkaXJlY3RvcnkgbmFtZWQgY3VybCBjcmVhdGVkLCBmaWxsZWQgd2l0aCB0aGUgc291cmNlIGNvZGUpCisKKyMjIE5PVElDRQorCitDdXJsIGNvbnRhaW5zIHBpZWNlcyBvZiBzb3VyY2UgY29kZSB0aGF0IGlzIENvcHlyaWdodCAoYykgMTk5OCwgMTk5OSBLdW5nbGlnYQorVGVrbmlza2EgSMO2Z3Nrb2xhbi4gVGhpcyBub3RpY2UgaXMgaW5jbHVkZWQgaGVyZSB0byBjb21wbHkgd2l0aCB0aGUKK2Rpc3RyaWJ1dGlvbiB0ZXJtcy4KZGlmZiAtLWdpdCBhL1JFTEVBU0UtTk9URVMgYi9SRUxFQVNFLU5PVEVTCmluZGV4IDgyZjAzNDguLmNhMzE0MmMgMTAwNjQ0Ci0tLSBhL1JFTEVBU0UtTk9URVMKKysrIGIvUkVMRUFTRS1OT1RFUwpAQCAtMSwxNDUgKzEsNTcgQEAKLUN1cmwgYW5kIGxpYmN1cmwgNy40My4wCitDdXJsIGFuZCBsaWJjdXJsIDcuNDkuMQogCi0gUHVibGljIGN1cmwgcmVsZWFzZXM6ICAgICAgICAgMTQ3Ci0gQ29tbWFuZCBsaW5lIG9wdGlvbnM6ICAgICAgICAgMTc2Ci0gY3VybF9lYXN5X3NldG9wdCgpIG9wdGlvbnM6ICAgMjE5Ci0gUHVibGljIGZ1bmN0aW9ucyBpbiBsaWJjdXJsOiAgNTgKLSBDb250cmlidXRvcnM6ICAgICAgICAgICAgICAgICAxMjkxCi0KLVRoaXMgcmVsZWFzZSBpbmNsdWRlcyB0aGUgZm9sbG93aW5nIGNoYW5nZXM6Ci0KLSBvIEFkZGVkIENVUkxPUFRfUFJPWFlfU0VSVklDRV9OQU1FWzExXQotIG8gQWRkZWQgQ1VSTE9QVF9TRVJWSUNFX05BTUVbMTJdCi0gbyBOZXcgY3VybCBvcHRpb246IC0tcHJveHktc2VydmljZS1uYW1lWzEzXQotIG8gTWV3IGN1cmwgb3B0aW9uOiAtLXNlcnZpY2UtbmFtZSBbMTRdCi0gbyBOZXcgY3VybCBvcHRpb246IC0tZGF0YS1yYXcgWzVdCi0gbyBBZGRlZCBDVVJMT1BUX1BJUEVXQUlUIFsxNV0KLSBvIEFkZGVkIHN1cHBvcnQgZm9yIG11bHRpcGxleGluZyB0cmFuc2ZlcnMgdXNpbmcgSFRUUC8yLCBlbmFibGUgdGhpcwotICAgd2l0aCB0aGUgbmV3IENVUkxQSVBFX01VTFRJUExFWCBiaXQgZm9yIENVUkxNT1BUX1BJUEVMSU5JTkcgWzE2XQotIG8gSFRUUC8yOiByZXF1aXJlcyBuZ2h0dHAyIDEuMC4wIG9yIGxhdGVyCi0gbyBzY3JpcHRzOiBhZGQgenNoLnBsIGZvciBnZW5lcmF0aW5nIHpzaCBjb21wbGV0aW9uCi0gbyBjdXJsLmg6IGFkZCBDVVJMX0hUVFBfVkVSU0lPTl8yCisgUHVibGljIGN1cmwgcmVsZWFzZXM6ICAgICAgICAgMTU1CisgQ29tbWFuZCBsaW5lIG9wdGlvbnM6ICAgICAgICAgMTg1CisgY3VybF9lYXN5X3NldG9wdCgpIG9wdGlvbnM6ICAgMjI0CisgUHVibGljIGZ1bmN0aW9ucyBpbiBsaWJjdXJsOiAgNjEKKyBDb250cmlidXRvcnM6ICAgICAgICAgICAgICAgICAxNDA0CiAKIFRoaXMgcmVsZWFzZSBpbmNsdWRlcyB0aGUgZm9sbG93aW5nIGJ1Z2ZpeGVzOgogCi0gbyBDVkUtMjAxNS0zMjM2OiBsaW5nZXJpbmcgSFRUUCBjcmVkZW50aWFscyBpbiBjb25uZWN0aW9uIHJlLXVzZSBbMzBdCi0gbyBDVkUtMjAxNS0zMjM3OiBTTUIgc2VuZCBvZmYgdW5yZWxhdGVkIG1lbW9yeSBjb250ZW50cyBbMzFdCi0gbyBuc3M6IGZpeCBjb21waWxhdGlvbiBmYWlsdXJlIHdpdGggb2xkIHZlcnNpb25zIG9mIE5TUyBbMV0KLSBvIGN1cmxfZWFzeV9nZXRpbmZvLjM6IGRvY3VtZW50ICdpbnRlcm5hbHMnIGluIENVUkxJTkZPX1RMU19TRVNTSU9OCi0gbyBzY2hhbm5lbC5jOiBGaXggcG9zc2libGUgU0VDX0VfQlVGRkVSX1RPT19TTUFMTCBlcnJvcgotIG8gQ3VybF9vc3NsX2luaXQ6IGxvYWQgYnVpbHRpbiBtb2R1bGVzIFsyXQotIG8gY29uZmlndXJlOiBmb2xsb3ctdXAgZml4IGZvciBrcmI1LWNvbmZpZyBbM10KLSBvIHNhc2xfc3NwaTogUG9wdWxhdGUgZG9tYWluIGZyb20gdGhlIHJlYWxtIGluIHRoZSBjaGFsbGVuZ2UgWzRdCi0gbyBuZXRyYzogc3VwcG9ydCAnZGVmYXVsdCcgdG9rZW4KLSBvIFJFQURNRTogY29udmVydCB0byBVVEYtOAotIG8gY3lhc3NsOiBJbXBsZW1lbnQgcHVibGljIGtleSBwaW5uaW5nCi0gbyBuc3M6IGltcGxlbWVudCBwdWJsaWMga2V5IHBpbm5pbmcgZm9yIE5TUyBiYWNrZW5kCi0gbyBtaW5ndyBidWlsZDogYWRkIGFyY2ggLW0zMi8tbTY0IHRvIExERkxBR1MKLSBvIHNjaGFubmVsOiBGaXggb3V0IG9mIGJvdW5kcyBhcnJheSBbNl0KLSBvIGNvbmZpZ3VyZTogcmVtb3ZlIGF1dG9nZW5lcmF0ZWQgZmlsZXMgYnkgYXV0b2NvbmYKLSBvIGNvbmZpZ3VyZTogcmVtb3ZlIC0tYXV0b21ha2UgZnJvbSBsaWJ0b29saXplIGNhbGwKLSBvIGFjaW5jbHVkZS5tNDogZml4IHNoZWxsIHRlc3QgZm9yIGRlZmF1bHQgQ0EgY2VydCBidW5kbGUvcGF0aAotIG8gc2NoYW5uZWw6IGZpeCByZWdyZXNzaW9uIGluIHNjaGFubmVsX3JlY3YgWzddCi0gbyBvcGVuc3NsOiBza2lwIHRyYWNlIG91dHB1dHMgZm9yIHNzbF92ZXIgPT0gMCBbOF0KLSBvIGdudXRsczogcHJvcGVybHkgcmV0cmlldmUgY2VydGlmaWNhdGUgc3RhdHVzCi0gbyBuZXRyYzogUmVhZCBpbiB0ZXh0IG1vZGUgd2hlbiBjeWd3aW4gWzldCi0gbyB3aW5idWlsZDogRG9jdW1lbnQgdGhlIG9wdGlvbiB1c2VkIHRvIHN0YXRpY2FsbHkgbGluayB0aGUgQ1JUIFsxMF0KLSBvIEZUUDogTWFrZSBFUFNWIHVzZSB0aGUgY29udHJvbCBJUCBhZGRyZXNzIHJhdGhlciB0aGFuIHRoZSBvcmlnaW5hbCBob3N0Ci0gbyBGVFA6IGZpeCBkYW5nbGluZyBjb25uLT5pcF9hZGRyIGRlcmVmZXJlbmNlIG9uIHZlcmJvc2UgRVBTVgotIG8gY29ubmNhY2hlOiBrZWVwIGJ1bmRsZXMgb24gaG9zdCtwb3J0IGJhc2VzLCBub3Qgb25seSBob3N0IG5hbWVzCi0gbyBydW50ZXN0cy5wbDogdXNlICdoMmMnIG5vdywgbm8gLTE0IGFueW1vcmUKLSBvIGN1cmx2ZXI6IGludHJvZHVjaW5nIG5ldyB2ZXJzaW9uIG51bWJlciAoY2hlY2tpbmcpIG1hY3JvcwotIG8gb3BlbnNzbDogYm9yaW5nc3NsIGJ1aWxkIGJyZWthZ2UsIHVzZSBTU0xfQ1RYX3NldF9tc2dfY2FsbGJhY2sgWzE3XQotIG8gQ1VSTE9QVF9QT1NURklFTERTLjM6IGNvcnJlY3QgdmFyaWFibGUgbmFtZXMgWzE4XQotIG8gY3VybF9lYXN5X3VuZXNjYXBlLjM6IHVwZGF0ZSBSRkMgcmVmZXJlbmNlIFsxOV0KLSBvIGdudXRsczogZG9uJ3QgZmFpbCBvbiBub24tZmF0YWwgYWxlcnRzIGR1cmluZyBoYW5kc2hha2UKLSBvIHRlc3RjdXJsLnBsOiBhbGxvdyBzb3VyY2UgdG8gYmUgaW4gYW4gYXJiaXRyYXJ5IGRpcmVjdG9yeQotIG8gQ1VSTE9QVF9IVFRQUFJPWFlUVU5ORUwuMzogb25seSB3b3JrcyB3aXRoIGEgSFRUUCBwcm94eQotIG8gU1NQSS1lcnJvcjogQ2hhbmdlIFNFQ19FX0lMTEVHQUxfTUVTU0FHRSBkZXNjcmlwdGlvbiBbMjBdCi0gbyBwYXJzZV9wcm94eTogc3dpdGNoIG9mZiB0dW5uZWxpbmcgaWYgbm9uLUhUVFAgcHJveHkgWzIxXQotIG8gc2hhcmVfaW5pdDogZml4IE9PTSBjcmFzaAotIG8gcGVybDogcmVtb3ZlIHN1YmRpciwgbm90IHRvdWNoZWQgaW4gOSB5ZWFycwotIG8gQ1VSTE9QVF9DT09LSUVMSVNULjM6IEFkZCBleGFtcGxlCi0gbyBDVVJMT1BUX0NPT0tJRS4zOiBFeHBsYWluIHRoYXQgdGhlIGNvb2tpZXMgd29uJ3QgYmUgbW9kaWZpZWQgWzIyXQotIG8gQ1VSTE9QVF9DT09LSUVMSVNULjM6IEV4cGxhaW4gU2V0LUNvb2tpZSB3aXRob3V0IGEgZG9tYWluIFsyM10KLSBvIEZBUTogSG93IGRvIEkgcG9ydCBsaWJjdXJsIHRvIG15IE9TPwotIG8gb3BlbnNzbDogVXNlIFRMU19jbGllbnRfbWV0aG9kIGZvciBPcGVuU1NMIDEuMS4wKwotIG8gSFRUUC1OVExNOiBmYWlsIGF1dGggb24gY29ubmVjdGlvbiBjbG9zZSBpbnN0ZWFkIG9mIGxvb3BpbmcgWzI0XQotIG8gY3VybF9zZXR1cDogQWRkIG1hY3JvcyBmb3IgRk9QRU5fUkVBRFRFWFQsIEZPUEVOX1dSSVRFVEVYVCBbMjVdCi0gbyBjdXJsX2dldGRhdGUuMzogdXBkYXRlIFJGQyByZWZlcmVuY2UKLSBvIGN1cmxfbXVsdGlfaW5mb19yZWFkLjM6IGFkZGVkIGV4YW1wbGUKLSBvIGN1cmxfbXVsdGlfcGVyZm9ybS4zOiBhZGRlZCBleGFtcGxlCi0gbyBjdXJsX211bHRpX3RpbWVvdXQuMzogYWRkZWQgZXhhbXBsZQotIG8gY29va2llOiBTdG9wIGV4cG9ydGluZyBhbnktZG9tYWluIGNvb2tpZXMgWzI2XQotIG8gb3BlbnNzbDogcmVtb3ZlIGR1bW15IGNhbGxiYWNrIHVzZSBmcm9tIFNTTF9DVFhfc2V0X3ZlcmlmeSgpCi0gbyBvcGVuc3NsOiByZW1vdmUgU1NMX2dldF9zZXNzaW9uKCktdXNpbmcgY29kZQotIG8gb3BlbnNzbDogcmVtb3ZlZCBVU0VSREFUQV9JTl9QV0RfQ0FMTEJBQ0sga2x1ZGdlCi0gbyBvcGVuc3NsOiByZW1vdmVkIGVycm9yIHN0cmluZyAjaWZkZWYKLSBvIG9wZW5zc2w6IEZpeCB2ZXJpZmljYXRpb24gb2Ygc2VydmVyLXNlbnQgbGVnYWN5IGludGVybWVkaWF0ZXMgWzI3XQotIG8gZG9jczogbWFuIHBhZ2UgaW5kZW50YXRpb24gYW5kIHN5bnRheCBmaXhlcwotIG8gZG9jczogU3BlbGxpbmcgZml4ZXMKLSBvIGZvcGVuLmM6IGZpeCBhIGZldyBjb21waWxlciB3YXJuaW5ncwotIG8gQ1VSTE9QVF9PUEVOU09DS0VURlVOQ1RJT046IHJldHVybiBlcnJvciBhdCBvbmNlIFsyOF0KLSBvIHNjaGFubmVsOiBBZGQgc3VwcG9ydCBmb3Igb3B0aW9uYWwgY2xpZW50IGNlcnRpZmljYXRlcwotIG8gYnVpbGQ6IFByb3Blcmx5IGRldGVjdCBPcGVuU1NMIDEuMC4yIHdoZW4gdXNpbmcgY29uZmlndXJlCi0gbyB1cmxkYXRhOiBzdG9yZSBQT1NUIHNpemUgaW4gc3RhdGUuaW5maWxlc2l6ZSB0b28gWzI5XQotIG8gc2VjdXJpdHk6Y2hvb3NlX21lY2ggcmVtb3ZlIGRlYWQgY29kZQotIG8gcnRzcF9kbzogcmVtb3ZlIGRlYWQgY29kZQotIG8gZG9jczogbWFueSBIVFRQIFVSSXMgY2hhbmdlZCB0byBIVFRQUwotIG8gc2NoYW5uZWw6IHNjaGFubmVsX3JlY3Ygb3ZlcmhhdWwgWzMyXQorIG8gV2luZG93czogcHJldmVudCBETEwgaGlqYWNraW5nLCBDVkUtMjAxNi00ODAyIFsxMV0KKyBvIGRpc3Q6IGluY2x1ZGUgbWFucGFnZS1zY2FuLnBsLCBucm9mZi1zY2FuLnBsIGFuZCBDSEVDS1NSQy5tZCBbMV0KKyBvIHNjaGFubmVsOiBmaXggY29tcGlsZSBicmVhayB3aXRoIE1TVkMgWFAgdG9vbHNldCBbMl0KKyBvIGN1cmxidWlsZC5oLmRpc3Q6IGNoZWNrIF9fTFA2NF9fIGFzIHdlbGwgdG8gZml4IE1JUFMgYnVpbGQgWzNdCisgbyBkaXN0OiBpbmNsdWRlIGN1cmxfbXVsdGlfc29ja2V0X2FsbC4zIFs0XQorIG8gaHR0cDI6IHVzZSBIVFRQLzIgaW4gdGhlIEhUVFAvMS4xLWFsaWtlIHJlc3BvbnNlCisgbyBvcGVuc3NsOiBFUlJfcmVtb3ZlX3RocmVhZF9zdGF0ZSgpIGlzIGRlcHJlY2F0ZWQgaW4gbGF0ZXN0IDEuMS4wCisgbyBDVVJMT1BUX0NPTk5FQ1RfVE8uMzogdXNlciBtdXN0IG5vdCBmcmVlIHRoZSBsaXN0IHByZW1hdHVyZWx5IFs1XQorIG8gbGliY3VybC5tNDogQXZvaWQgb2Jzb2xldGUgd2FybmluZyBbNl0KKyBvIHdpbmJ1aWxkL01ha2VmaWxlLnZjOiBGaXggY2hlY2sgb24gU1NMLCBNQkVEVExTLCBXSU5TU0wgZXhjbHVzaXZpdHkgWzddCisgbyBjdXJsX211bHRpYnl0ZTogZml4IGNvbXBpbGVyIGVycm9yCisgbyBvcGVuc3NsOiBjbGVhbnVwIG11c3QgZnJlZSBjb21wcmVzc2lvbiBtZXRob2RzIChtZW1vcnkgbGVhaykgWzhdCisgbyBtYmVkdGxzOiBmaXggaW5jbHVkZXMgc28gc25wcmludGYoKSB3b3JrcyBbOV0KKyBvIGNoZWNrc3JjLnBsOiBBZGRlZCB2YXJpYW50cyBvZiBzdHJjYXQoKSAmIHN0cm5jYXQoKSB0byBiYW5uZWQgZnVuY3Rpb24gbGlzdAorIG8gY29udHJpYnV0b3JzLnNoOiBiZXR0ZXIgZ3JlcCBwYXR0ZXJuIGFuZCBzaG93IEdpdEh1YiB1c2VybmFtZSBbMTBdCisgbyBzc2g6IGZpeCBidWlsZCBmb3IgbGlic3NoMiBiZWZvcmUgMS4yLjYgWzEyXQorIG8gY3VybF9zaGFyZV9zZXRvcHQuMzogQWRkIG1pbiB2ZXIgbmVlZGVkIGZvciBzc2wgc2Vzc2lvbiBsb2NrIFsxM10KIAogVGhpcyByZWxlYXNlIGluY2x1ZGVzIHRoZSBmb2xsb3dpbmcga25vd24gYnVnczoKIAotIG8gc2VlIGRvY3MvS05PV05fQlVHUyAoaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2tub3duYnVncy5odG1sKQorIG8gc2VlIGRvY3MvS05PV05fQlVHUyAoaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9rbm93bmJ1Z3MuaHRtbCkKIAogVGhpcyByZWxlYXNlIHdvdWxkIG5vdCBoYXZlIGxvb2tlZCBsaWtlIHRoaXMgd2l0aG91dCBoZWxwLCBjb2RlLCByZXBvcnRzIGFuZAogYWR2aWNlIGZyb20gZnJpZW5kcyBsaWtlIHRoZXNlOgogCi0gIEFsZXNzYW5kcm8gR2hlZGluaSwgQWxleGFuZGVyIER5YWdpbGV2LCBBbmRlcnMgQmFra2VuLCBBbnRob255IEF2aW5hLAotICBBc2hpc2ggU2h1a2xhLCBCZXJ0IEh1aWpiZW4sIEJyaWFuIENocmlzbWFuLCBCcmlhbiBQcm9kb2VobCwgQ2hyaXMgQXJhbWFuLAotICBEYWdvYmVydCBNaWNoZWxzZW4sIERhbiBGYW5kcmljaCwgRGFuaWVsIE1lbGFuaSwgRGFuaWVsIFN0ZW5iZXJnLAotICBEbWl0cnkgRXJlbWluLVNvbGVuaWtvdiwgRHJha2UgQXJjb25pcywgRWdvbiBFY2tlcnQsIEZyYW5rIE1laWVyLCBGcmVkIFN0bHVrYSwKLSAgR2lzbGUgVmFuZW0sIEdyYW50IFBhbm5lbGwsIElzYWFjIEJvdWtyaXMsIEplbnMgUmFudGlsLCBKb2VsIERlcG9vdGVyLAotICBLYW1pbCBEdWRrYSwgTGludXMgTmllbHNlbiBGZWx0emluZywgTGludXMgTmllbHNlbiBGZWx0emluZyBGZWx0emluZywKLSAgTGl2aXUgQ2hpcmN1LCBNYXJjIEhvZXJza2VuLCBNaWNoYWVsIE9zaXBvdiwgT3JlbiBTb3Vyb3Vqb24sIE9yZ2FkIFNoYW5laCwKLSAgUGF0cmljayBNb25uZXJhdCwgUGF0cmljayBSYXBpbiwgUGF1bCBIb3dhcnRoLCBQYXVsIE9saXZlciwgUmFmYXllbCBNa3J0Y2h5YW4sCi0gIFJheSBTYXRpcm8sIFNlYW4gQm91ZHJlYXUsIFRhdHN1aGlybyBUc3VqaWthd2EsIFRvbWFzIFRvbWVjZWssIFZpa3RvciBTemFrw6F0cywKLSAgVmlsbGUgU2t5dHTDpCwgWWVoZXprZWwgSG9yb3dpdHosCi0gICg0MyBjb250cmlidXRvcnMpCisgIEFsZXhhbmRlciBUcmF1ZCwgRGFuaWVsIFN0ZW5iZXJnLCBHaXNsZSBWYW5lbSwgSmFuIEVocmhhcmR0LAorICBqdmVhemV5IG9uIGdpdGh1YiwgTWFyY2VsIFJhYWQsIE1pY2hhZWwgS2F1Zm1hbm4sIE1pY2hhZWwgV2FsbG5lciwKKyAgTW90aSBBdnJhaGFtaSwgUGF1bCBIb3dhcnRoLCBSYXkgU2F0aXJvLCBTdGV2ZSBIb2xtZSwgVG9tYXMgSmFrb2Jzc29uLAorICAoMTMgY29udHJpYnV0b3JzKQogCiAgICAgICAgIFRoYW5rcyEgKGFuZCBzb3JyeSBpZiBJIGZvcmdvdCB0byBtZW50aW9uIHNvbWVvbmUpCiAKIFJlZmVyZW5jZXMgdG8gYnVnIHJlcG9ydHMgYW5kIGRpc2N1c3Npb25zIG9uIGlzc3VlczoKIAotIFsxXSA9IGh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC9saWItMjAxNS0wNC8wMDk1Lmh0bWwKLSBbMl0gPSBodHRwczovL2dpdGh1Yi5jb20vYmFnZGVyL2N1cmwvcHVsbC8yMDYKLSBbM10gPSBodHRwczovL2dpdGh1Yi5jb20vYmFnZGVyL2N1cmwvY29tbWl0LzViNjY4NjA2NTI3NjEzMTc5ZDAzNDlmMjFiNGFiMGRmMjk3MWUzZDIjY29tbWl0Y29tbWVudC0xMDQ3MzQ0NQotIFs0XSA9IGh0dHBzOi8vZ2l0aHViLmNvbS9iYWdkZXIvY3VybC9wdWxsLzE0MQotIFs1XSA9IGh0dHBzOi8vZ2l0aHViLmNvbS9iYWdkZXIvY3VybC9pc3N1ZXMvMTk4Ci0gWzZdID0gaHR0cDovL2N1cmwuaGF4eC5zZS9tYWlsL2xpYi0yMDE1LTA0LzAxOTkuaHRtbAotIFs3XSA9IGh0dHBzOi8vZ2l0aHViLmNvbS9iYWdkZXIvY3VybC9pc3N1ZXMvMjQ0Ci0gWzhdID0gaHR0cHM6Ly9naXRodWIuY29tL2JhZ2Rlci9jdXJsL2lzc3Vlcy8yMTkKLSBbOV0gPSBodHRwczovL2dpdGh1Yi5jb20vYmFnZGVyL2N1cmwvcHVsbC8yNTgKLSBbMTBdID0gaHR0cHM6Ly9naXRodWIuY29tL2JhZ2Rlci9jdXJsL2lzc3Vlcy8yNTQKLSBbMTFdID0gaHR0cDovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvQ1VSTE9QVF9QUk9YWV9TRVJWSUNFX05BTUUuaHRtbAotIFsxMl0gPSBodHRwOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvYy9DVVJMT1BUX1NFUlZJQ0VfTkFNRS5odG1sCi0gWzEzXSA9IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9tYW5wYWdlLmh0bWwjLS1wcm94eS1zZXJ2aWNlLW5hbWUKLSBbMTRdID0gaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL21hbnBhZ2UuaHRtbCMtLXNlcnZpY2UtbmFtZQotIFsxNV0gPSBodHRwOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvYy9DVVJMT1BUX1BJUEVXQUlULmh0bWwKLSBbMTZdID0gaHR0cDovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvQ1VSTE1PUFRfUElQRUxJTklORy5odG1sCi0gWzE3XSA9IGh0dHBzOi8vZ2l0aHViLmNvbS9iYWdkZXIvY3VybC9pc3N1ZXMvMjc1Ci0gWzE4XSA9IGh0dHBzOi8vZ2l0aHViLmNvbS9iYWdkZXIvY3VybC9pc3N1ZXMvMjgxCi0gWzE5XSA9IGh0dHBzOi8vZ2l0aHViLmNvbS9iYWdkZXIvY3VybC9pc3N1ZXMvMjgyCi0gWzIwXSA9IGh0dHBzOi8vZ2l0aHViLmNvbS9iYWdkZXIvY3VybC9pc3N1ZXMvMjY3Ci0gWzIxXSA9IGh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC9saWItMjAxNS0wNS8wMDU2Lmh0bWwKLSBbMjJdID0gaHR0cDovL2N1cmwuaGF4eC5zZS9tYWlsL2xpYi0yMDE1LTA1LzAxMTUuaHRtbAotIFsyM10gPSBodHRwOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMTUtMDUvMDEzNy5odG1sCi0gWzI0XSA9IGh0dHBzOi8vZ2l0aHViLmNvbS9iYWdkZXIvY3VybC9pc3N1ZXMvMjU2Ci0gWzI1XSA9IGh0dHBzOi8vZ2l0aHViLmNvbS9iYWdkZXIvY3VybC9wdWxsLzI1OCNpc3N1ZWNvbW1lbnQtMTA3MDkzMDU1Ci0gWzI2XSA9IGh0dHBzOi8vZ2l0aHViLmNvbS9iYWdkZXIvY3VybC9pc3N1ZXMvMjkyCi0gWzI3XSA9IGh0dHBzOi8vcnQub3BlbnNzbC5vcmcvVGlja2V0L0Rpc3BsYXkuaHRtbD9pZD0zNjIxJnVzZXI9Z3Vlc3QmcGFzcz1ndWVzdAotIFsyOF0gPSBodHRwOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMTUtMDYvMDA0Ny5odG1sCi0gWzI5XSA9IGh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC9saWItMjAxNS0wNi8wMDE5Lmh0bWwKLSBbMzBdID0gaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2Fkdl8yMDE1MDYxN0EuaHRtbAotIFszMV0gPSBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvYWR2XzIwMTUwNjE3Qi5odG1sCi0gWzMyXSA9IGh0dHBzOi8vZ2l0aHViLmNvbS9iYWdkZXIvY3VybC9pc3N1ZXMvMjQ0CisgWzFdID0gaHR0cHM6Ly9jdXJsLmhheHguc2UvbWFpbC9saWItMjAxNi0wNS8wMTEzLmh0bWwKKyBbMl0gPSBodHRwczovL2N1cmwuaGF4eC5zZS9idWcvP2k9ODEyCisgWzNdID0gaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnLz9pPTgxMworIFs0XSA9IGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy8/aT04MTYKKyBbNV0gPSBodHRwczovL2N1cmwuaGF4eC5zZS9idWcvP2k9ODE5CisgWzZdID0gaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnLz9pPTgyMQorIFs3XSA9IGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy8/aT04MTgKKyBbOF0gPSBodHRwczovL2N1cmwuaGF4eC5zZS9idWcvP2k9ODE3CisgWzldID0gaHR0cHM6Ly9jdXJsLmhheHguc2UvbWFpbC9saWItMjAxNi0wNS8wMTk2Lmh0bWwKKyBbMTBdID0gaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnLz9pPTgyNAorIFsxMV0gPSBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2Fkdl8yMDE2MDUyNy5odG1sCisgWzEyXSA9IGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy8/aT04MzEKKyBbMTNdID0gaHR0cHM6Ly9naXRodWIuY29tL2N1cmwvY3VybC9pc3N1ZXMvODI2CmRpZmYgLS1naXQgYS9hY2luY2x1ZGUubTQgYi9hY2luY2x1ZGUubTQKaW5kZXggZjAxMzJhNS4uNjhhMzcxMCAxMDA2NDQKLS0tIGEvYWNpbmNsdWRlLm00CisrKyBiL2FjaW5jbHVkZS5tNApAQCAtNSwxMSArNSwxMSBAQAogIyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICMKLSMgQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMywgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyMgQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICMKICMgVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICMgeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICMKICMgWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAjIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjAsNyArMjAsNiBAQAogIwogIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogCi0KIGRubCBDVVJMX0NIRUNLX0RFRiAoU1lNQk9MLCBbSU5DTFVERVNdLCBbU0lMRU5UXSkKIGRubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBkbmwgVXNlIHRoZSBDIHByZXByb2Nlc3NvciB0byBmaW5kIG91dCBpZiB0aGUgZ2l2ZW4gb2JqZWN0LXN0eWxlIHN5bWJvbApAQCAtMzEsNiArMzAsMTAgQEAKIGRubCBhY3R1YWxseSBiZSBhIHNpbmdsZSBkb3VibGUtcXVvdGVkIHN0cmluZyBjb25jYXRlbmF0aW5nIGFsbCB0aGVtLgogCiBBQ19ERUZVTihbQ1VSTF9DSEVDS19ERUZdLCBbCisgIEFDX1JFUVVJUkUoW0NVUkxfQ1BQX1BdKWRubAorICBPTERDUFBGTEFHUz0kQ1BQRkxBR1MKKyAgIyBDUFBQRkxBR1MgY29tZXMgZnJvbSBDVVJMX0NQUF9QCisgIENQUEZMQUdTPSIkQ1BQUEZMQUdTIgogICBBU19WQVJfUFVTSERFRihbYWNfSGF2ZURlZl0sIFtjdXJsX2N2X2hhdmVfZGVmXyQxXSlkbmwKICAgQVNfVkFSX1BVU0hERUYoW2FjX0RlZl0sIFtjdXJsX2N2X2RlZl8kMV0pZG5sCiAgIGlmIHRlc3QgLXogIiRTRUQiOyB0aGVuCkBAIC02Nyw2ICs3MCw3IEBACiAgIGZpCiAgIEFTX1ZBUl9QT1BERUYoW2FjX0RlZl0pZG5sCiAgIEFTX1ZBUl9QT1BERUYoW2FjX0hhdmVEZWZdKWRubAorICBDUFBGTEFHUz0kT0xEQ1BQRkxBR1MKIF0pCiAKIApAQCAtMTcwLDcgKzE3NCw3IEBACiBkbmwgQ2hlY2sgZm9yIGNvbXBpbGFibGUgYW5kIHZhbGlkIHdpbmRvd3MuaCBoZWFkZXIKIAogQUNfREVGVU4oW0NVUkxfQ0hFQ0tfSEVBREVSX1dJTkRPV1NdLCBbCi0gIEFDX0NBQ0hFX0NIRUNLKFtmb3Igd2luZG93cy5oXSwgW2FjX2N2X2hlYWRlcl93aW5kb3dzX2hdLCBbCisgIEFDX0NBQ0hFX0NIRUNLKFtmb3Igd2luZG93cy5oXSwgW2N1cmxfY3ZfaGVhZGVyX3dpbmRvd3NfaF0sIFsKICAgICBBQ19DT01QSUxFX0lGRUxTRShbCiAgICAgICBBQ19MQU5HX1BST0dSQU0oW1sKICN1bmRlZiBpbmxpbmUKQEAgLTE4NiwxMiArMTkwLDEyIEBACiAjZW5kaWYKICAgICAgIF1dKQogICAgIF0sWwotICAgICAgYWNfY3ZfaGVhZGVyX3dpbmRvd3NfaD0ieWVzIgorICAgICAgY3VybF9jdl9oZWFkZXJfd2luZG93c19oPSJ5ZXMiCiAgICAgXSxbCi0gICAgICBhY19jdl9oZWFkZXJfd2luZG93c19oPSJubyIKKyAgICAgIGN1cmxfY3ZfaGVhZGVyX3dpbmRvd3NfaD0ibm8iCiAgICAgXSkKICAgXSkKLSAgY2FzZSAiJGFjX2N2X2hlYWRlcl93aW5kb3dzX2giIGluCisgIGNhc2UgIiRjdXJsX2N2X2hlYWRlcl93aW5kb3dzX2giIGluCiAgICAgeWVzKQogICAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfV0lORE9XU19ILCAxLAogICAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIHdpbmRvd3MuaCBoZWFkZXIgZmlsZS5dKQpAQCAtMjA4LDkgKzIxMiw5IEBACiAKIEFDX0RFRlVOKFtDVVJMX0NIRUNLX05BVElWRV9XSU5ET1dTXSwgWwogICBBQ19SRVFVSVJFKFtDVVJMX0NIRUNLX0hFQURFUl9XSU5ET1dTXSlkbmwKLSAgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgYnVpbGQgdGFyZ2V0IGlzIGEgbmF0aXZlIFdpbmRvd3Mgb25lXSwgW2FjX2N2X25hdGl2ZV93aW5kb3dzXSwgWwotICAgIGlmIHRlc3QgIiRhY19jdl9oZWFkZXJfd2luZG93c19oIiA9ICJubyI7IHRoZW4KLSAgICAgIGFjX2N2X25hdGl2ZV93aW5kb3dzPSJubyIKKyAgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgYnVpbGQgdGFyZ2V0IGlzIGEgbmF0aXZlIFdpbmRvd3Mgb25lXSwgW2N1cmxfY3ZfbmF0aXZlX3dpbmRvd3NdLCBbCisgICAgaWYgdGVzdCAiJGN1cmxfY3ZfaGVhZGVyX3dpbmRvd3NfaCIgPSAibm8iOyB0aGVuCisgICAgICBjdXJsX2N2X25hdGl2ZV93aW5kb3dzPSJubyIKICAgICBlbHNlCiAgICAgICBBQ19DT01QSUxFX0lGRUxTRShbCiAgICAgICAgIEFDX0xBTkdfUFJPR1JBTShbWwpAQCAtMjIzLDEzICsyMjcsMTMgQEAKICNlbmRpZgogICAgICAgICBdXSkKICAgICAgIF0sWwotICAgICAgICBhY19jdl9uYXRpdmVfd2luZG93cz0ieWVzIgorICAgICAgICBjdXJsX2N2X25hdGl2ZV93aW5kb3dzPSJ5ZXMiCiAgICAgICBdLFsKLSAgICAgICAgYWNfY3ZfbmF0aXZlX3dpbmRvd3M9Im5vIgorICAgICAgICBjdXJsX2N2X25hdGl2ZV93aW5kb3dzPSJubyIKICAgICAgIF0pCiAgICAgZmkKICAgXSkKLSAgQU1fQ09ORElUSU9OQUwoRE9JTkdfTkFUSVZFX1dJTkRPV1MsIHRlc3QgIngkYWNfY3ZfbmF0aXZlX3dpbmRvd3MiID0geHllcykKKyAgQU1fQ09ORElUSU9OQUwoRE9JTkdfTkFUSVZFX1dJTkRPV1MsIHRlc3QgIngkY3VybF9jdl9uYXRpdmVfd2luZG93cyIgPSB4eWVzKQogXSkKIAogCkBAIC0yMzksNyArMjQzLDcgQEAKIAogQUNfREVGVU4oW0NVUkxfQ0hFQ0tfSEVBREVSX1dJTlNPQ0tdLCBbCiAgIEFDX1JFUVVJUkUoW0NVUkxfQ0hFQ0tfSEVBREVSX1dJTkRPV1NdKWRubAotICBBQ19DQUNIRV9DSEVDSyhbZm9yIHdpbnNvY2suaF0sIFthY19jdl9oZWFkZXJfd2luc29ja19oXSwgWworICBBQ19DQUNIRV9DSEVDSyhbZm9yIHdpbnNvY2suaF0sIFtjdXJsX2N2X2hlYWRlcl93aW5zb2NrX2hdLCBbCiAgICAgQUNfQ09NUElMRV9JRkVMU0UoWwogICAgICAgQUNfTEFOR19QUk9HUkFNKFtbCiAjdW5kZWYgaW5saW5lCkBAIC0yNTYsMTIgKzI2MCwxMiBAQAogI2VuZGlmCiAgICAgICBdXSkKICAgICBdLFsKLSAgICAgIGFjX2N2X2hlYWRlcl93aW5zb2NrX2g9InllcyIKKyAgICAgIGN1cmxfY3ZfaGVhZGVyX3dpbnNvY2tfaD0ieWVzIgogICAgIF0sWwotICAgICAgYWNfY3ZfaGVhZGVyX3dpbnNvY2tfaD0ibm8iCisgICAgICBjdXJsX2N2X2hlYWRlcl93aW5zb2NrX2g9Im5vIgogICAgIF0pCiAgIF0pCi0gIGNhc2UgIiRhY19jdl9oZWFkZXJfd2luc29ja19oIiBpbgorICBjYXNlICIkY3VybF9jdl9oZWFkZXJfd2luc29ja19oIiBpbgogICAgIHllcykKICAgICAgIEFDX0RFRklORV9VTlFVT1RFRChIQVZFX1dJTlNPQ0tfSCwgMSwKICAgICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSB3aW5zb2NrLmggaGVhZGVyIGZpbGUuXSkKQEAgLTI3Niw3ICsyODAsNyBAQAogCiBBQ19ERUZVTihbQ1VSTF9DSEVDS19IRUFERVJfV0lOU09DSzJdLCBbCiAgIEFDX1JFUVVJUkUoW0NVUkxfQ0hFQ0tfSEVBREVSX1dJTkRPV1NdKWRubAotICBBQ19DQUNIRV9DSEVDSyhbZm9yIHdpbnNvY2syLmhdLCBbYWNfY3ZfaGVhZGVyX3dpbnNvY2syX2hdLCBbCisgIEFDX0NBQ0hFX0NIRUNLKFtmb3Igd2luc29jazIuaF0sIFtjdXJsX2N2X2hlYWRlcl93aW5zb2NrMl9oXSwgWwogICAgIEFDX0NPTVBJTEVfSUZFTFNFKFsKICAgICAgIEFDX0xBTkdfUFJPR1JBTShbWwogI3VuZGVmIGlubGluZQpAQCAtMjkzLDEyICsyOTcsMTIgQEAKICNlbmRpZgogICAgICAgXV0pCiAgICAgXSxbCi0gICAgICBhY19jdl9oZWFkZXJfd2luc29jazJfaD0ieWVzIgorICAgICAgY3VybF9jdl9oZWFkZXJfd2luc29jazJfaD0ieWVzIgogICAgIF0sWwotICAgICAgYWNfY3ZfaGVhZGVyX3dpbnNvY2syX2g9Im5vIgorICAgICAgY3VybF9jdl9oZWFkZXJfd2luc29jazJfaD0ibm8iCiAgICAgXSkKICAgXSkKLSAgY2FzZSAiJGFjX2N2X2hlYWRlcl93aW5zb2NrMl9oIiBpbgorICBjYXNlICIkY3VybF9jdl9oZWFkZXJfd2luc29jazJfaCIgaW4KICAgICB5ZXMpCiAgICAgICBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9XSU5TT0NLMl9ILCAxLAogICAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIHdpbnNvY2syLmggaGVhZGVyIGZpbGUuXSkKQEAgLTMxMyw3ICszMTcsNyBAQAogCiBBQ19ERUZVTihbQ1VSTF9DSEVDS19IRUFERVJfV1MyVENQSVBdLCBbCiAgIEFDX1JFUVVJUkUoW0NVUkxfQ0hFQ0tfSEVBREVSX1dJTlNPQ0syXSlkbmwKLSAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciB3czJ0Y3BpcC5oXSwgW2FjX2N2X2hlYWRlcl93czJ0Y3BpcF9oXSwgWworICBBQ19DQUNIRV9DSEVDSyhbZm9yIHdzMnRjcGlwLmhdLCBbY3VybF9jdl9oZWFkZXJfd3MydGNwaXBfaF0sIFsKICAgICBBQ19DT01QSUxFX0lGRUxTRShbCiAgICAgICBBQ19MQU5HX1BST0dSQU0oW1sKICN1bmRlZiBpbmxpbmUKQEAgLTMzMSwxMiArMzM1LDEyIEBACiAjZW5kaWYKICAgICAgIF1dKQogICAgIF0sWwotICAgICAgYWNfY3ZfaGVhZGVyX3dzMnRjcGlwX2g9InllcyIKKyAgICAgIGN1cmxfY3ZfaGVhZGVyX3dzMnRjcGlwX2g9InllcyIKICAgICBdLFsKLSAgICAgIGFjX2N2X2hlYWRlcl93czJ0Y3BpcF9oPSJubyIKKyAgICAgIGN1cmxfY3ZfaGVhZGVyX3dzMnRjcGlwX2g9Im5vIgogICAgIF0pCiAgIF0pCi0gIGNhc2UgIiRhY19jdl9oZWFkZXJfd3MydGNwaXBfaCIgaW4KKyAgY2FzZSAiJGN1cmxfY3ZfaGVhZGVyX3dzMnRjcGlwX2giIGluCiAgICAgeWVzKQogICAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfV1MyVENQSVBfSCwgMSwKICAgICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSB3czJ0Y3BpcC5oIGhlYWRlciBmaWxlLl0pCkBAIC0zNTEsNyArMzU1LDcgQEAKIAogQUNfREVGVU4oW0NVUkxfQ0hFQ0tfSEVBREVSX1dJTkxEQVBdLCBbCiAgIEFDX1JFUVVJUkUoW0NVUkxfQ0hFQ0tfSEVBREVSX1dJTkRPV1NdKWRubAotICBBQ19DQUNIRV9DSEVDSyhbZm9yIHdpbmxkYXAuaF0sIFthY19jdl9oZWFkZXJfd2lubGRhcF9oXSwgWworICBBQ19DQUNIRV9DSEVDSyhbZm9yIHdpbmxkYXAuaF0sIFtjdXJsX2N2X2hlYWRlcl93aW5sZGFwX2hdLCBbCiAgICAgQUNfQ09NUElMRV9JRkVMU0UoWwogICAgICAgQUNfTEFOR19QUk9HUkFNKFtbCiAjdW5kZWYgaW5saW5lCkBAIC0zNzEsMTIgKzM3NSwxMiBAQAogI2VuZGlmCiAgICAgICBdXSkKICAgICBdLFsKLSAgICAgIGFjX2N2X2hlYWRlcl93aW5sZGFwX2g9InllcyIKKyAgICAgIGN1cmxfY3ZfaGVhZGVyX3dpbmxkYXBfaD0ieWVzIgogICAgIF0sWwotICAgICAgYWNfY3ZfaGVhZGVyX3dpbmxkYXBfaD0ibm8iCisgICAgICBjdXJsX2N2X2hlYWRlcl93aW5sZGFwX2g9Im5vIgogICAgIF0pCiAgIF0pCi0gIGNhc2UgIiRhY19jdl9oZWFkZXJfd2lubGRhcF9oIiBpbgorICBjYXNlICIkY3VybF9jdl9oZWFkZXJfd2lubGRhcF9oIiBpbgogICAgIHllcykKICAgICAgIEFDX0RFRklORV9VTlFVT1RFRChIQVZFX1dJTkxEQVBfSCwgMSwKICAgICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSB3aW5sZGFwLmggaGVhZGVyIGZpbGUuXSkKQEAgLTM5MSw3ICszOTUsNyBAQAogCiBBQ19ERUZVTihbQ1VSTF9DSEVDS19IRUFERVJfV0lOQkVSXSwgWwogICBBQ19SRVFVSVJFKFtDVVJMX0NIRUNLX0hFQURFUl9XSU5MREFQXSlkbmwKLSAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciB3aW5iZXIuaF0sIFthY19jdl9oZWFkZXJfd2luYmVyX2hdLCBbCisgIEFDX0NBQ0hFX0NIRUNLKFtmb3Igd2luYmVyLmhdLCBbY3VybF9jdl9oZWFkZXJfd2luYmVyX2hdLCBbCiAgICAgQUNfQ09NUElMRV9JRkVMU0UoWwogICAgICAgQUNfTEFOR19QUk9HUkFNKFtbCiAjdW5kZWYgaW5saW5lCkBAIC00MTMsMTIgKzQxNywxMiBAQAogI2VuZGlmCiAgICAgICBdXSkKICAgICBdLFsKLSAgICAgIGFjX2N2X2hlYWRlcl93aW5iZXJfaD0ieWVzIgorICAgICAgY3VybF9jdl9oZWFkZXJfd2luYmVyX2g9InllcyIKICAgICBdLFsKLSAgICAgIGFjX2N2X2hlYWRlcl93aW5iZXJfaD0ibm8iCisgICAgICBjdXJsX2N2X2hlYWRlcl93aW5iZXJfaD0ibm8iCiAgICAgXSkKICAgXSkKLSAgY2FzZSAiJGFjX2N2X2hlYWRlcl93aW5iZXJfaCIgaW4KKyAgY2FzZSAiJGN1cmxfY3ZfaGVhZGVyX3dpbmJlcl9oIiBpbgogICAgIHllcykKICAgICAgIEFDX0RFRklORV9VTlFVT1RFRChIQVZFX1dJTkJFUl9ILCAxLAogICAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIHdpbmJlci5oIGhlYWRlciBmaWxlLl0pCkBAIC00MzQsNyArNDM4LDcgQEAKIAogQUNfREVGVU4oW0NVUkxfQ0hFQ0tfSEVBREVSX0xCRVJdLCBbCiAgIEFDX1JFUVVJUkUoW0NVUkxfQ0hFQ0tfSEVBREVSX1dJTkRPV1NdKWRubAotICBBQ19DQUNIRV9DSEVDSyhbZm9yIGxiZXIuaF0sIFthY19jdl9oZWFkZXJfbGJlcl9oXSwgWworICBBQ19DQUNIRV9DSEVDSyhbZm9yIGxiZXIuaF0sIFtjdXJsX2N2X2hlYWRlcl9sYmVyX2hdLCBbCiAgICAgQUNfQ09NUElMRV9JRkVMU0UoWwogICAgICAgQUNfTEFOR19QUk9HUkFNKFtbCiAjdW5kZWYgaW5saW5lCkBAIC00NTgsMTIgKzQ2MiwxMiBAQAogICAgICAgICBiZXJfZnJlZShiZXAsIDEpOwogICAgICAgXV0pCiAgICAgXSxbCi0gICAgICBhY19jdl9oZWFkZXJfbGJlcl9oPSJ5ZXMiCisgICAgICBjdXJsX2N2X2hlYWRlcl9sYmVyX2g9InllcyIKICAgICBdLFsKLSAgICAgIGFjX2N2X2hlYWRlcl9sYmVyX2g9Im5vIgorICAgICAgY3VybF9jdl9oZWFkZXJfbGJlcl9oPSJubyIKICAgICBdKQogICBdKQotICBpZiB0ZXN0ICIkYWNfY3ZfaGVhZGVyX2xiZXJfaCIgPSAieWVzIjsgdGhlbgorICBpZiB0ZXN0ICIkY3VybF9jdl9oZWFkZXJfbGJlcl9oIiA9ICJ5ZXMiOyB0aGVuCiAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfTEJFUl9ILCAxLAogICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBsYmVyLmggaGVhZGVyIGZpbGUuXSkKICAgICAjCkBAIC01MTQsNyArNTE4LDcgQEAKIAogQUNfREVGVU4oW0NVUkxfQ0hFQ0tfSEVBREVSX0xEQVBdLCBbCiAgIEFDX1JFUVVJUkUoW0NVUkxfQ0hFQ0tfSEVBREVSX0xCRVJdKWRubAotICBBQ19DQUNIRV9DSEVDSyhbZm9yIGxkYXAuaF0sIFthY19jdl9oZWFkZXJfbGRhcF9oXSwgWworICBBQ19DQUNIRV9DSEVDSyhbZm9yIGxkYXAuaF0sIFtjdXJsX2N2X2hlYWRlcl9sZGFwX2hdLCBbCiAgICAgQUNfQ09NUElMRV9JRkVMU0UoWwogICAgICAgQUNfTEFOR19QUk9HUkFNKFtbCiAjdW5kZWYgaW5saW5lCkBAIC01NDAsMTIgKzU0NCwxMiBAQAogICAgICAgICBpbnQgcmVzID0gbGRhcF91bmJpbmQobGRwKTsKICAgICAgIF1dKQogICAgIF0sWwotICAgICAgYWNfY3ZfaGVhZGVyX2xkYXBfaD0ieWVzIgorICAgICAgY3VybF9jdl9oZWFkZXJfbGRhcF9oPSJ5ZXMiCiAgICAgXSxbCi0gICAgICBhY19jdl9oZWFkZXJfbGRhcF9oPSJubyIKKyAgICAgIGN1cmxfY3ZfaGVhZGVyX2xkYXBfaD0ibm8iCiAgICAgXSkKICAgXSkKLSAgY2FzZSAiJGFjX2N2X2hlYWRlcl9sZGFwX2giIGluCisgIGNhc2UgIiRjdXJsX2N2X2hlYWRlcl9sZGFwX2giIGluCiAgICAgeWVzKQogICAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfTERBUF9ILCAxLAogICAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGxkYXAuaCBoZWFkZXIgZmlsZS5dKQpAQCAtNTYwLDcgKzU2NCw3IEBACiAKIEFDX0RFRlVOKFtDVVJMX0NIRUNLX0hFQURFUl9MREFQX1NTTF0sIFsKICAgQUNfUkVRVUlSRShbQ1VSTF9DSEVDS19IRUFERVJfTERBUF0pZG5sCi0gIEFDX0NBQ0hFX0NIRUNLKFtmb3IgbGRhcF9zc2wuaF0sIFthY19jdl9oZWFkZXJfbGRhcF9zc2xfaF0sIFsKKyAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBsZGFwX3NzbC5oXSwgW2N1cmxfY3ZfaGVhZGVyX2xkYXBfc3NsX2hdLCBbCiAgICAgQUNfQ09NUElMRV9JRkVMU0UoWwogICAgICAgQUNfTEFOR19QUk9HUkFNKFtbCiAjdW5kZWYgaW5saW5lCkBAIC01ODgsMTIgKzU5MiwxMiBAQAogICAgICAgICBMREFQICpsZHAgPSBsZGFwc3NsX2luaXQoImR1bW15IiwgTERBUFNfUE9SVCwgMSk7CiAgICAgICBdXSkKICAgICBdLFsKLSAgICAgIGFjX2N2X2hlYWRlcl9sZGFwX3NzbF9oPSJ5ZXMiCisgICAgICBjdXJsX2N2X2hlYWRlcl9sZGFwX3NzbF9oPSJ5ZXMiCiAgICAgXSxbCi0gICAgICBhY19jdl9oZWFkZXJfbGRhcF9zc2xfaD0ibm8iCisgICAgICBjdXJsX2N2X2hlYWRlcl9sZGFwX3NzbF9oPSJubyIKICAgICBdKQogICBdKQotICBjYXNlICIkYWNfY3ZfaGVhZGVyX2xkYXBfc3NsX2giIGluCisgIGNhc2UgIiRjdXJsX2N2X2hlYWRlcl9sZGFwX3NzbF9oIiBpbgogICAgIHllcykKICAgICAgIEFDX0RFRklORV9VTlFVT1RFRChIQVZFX0xEQVBfU1NMX0gsIDEsCiAgICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgbGRhcF9zc2wuaCBoZWFkZXIgZmlsZS5dKQpAQCAtNjA4LDcgKzYxMiw3IEBACiAKIEFDX0RFRlVOKFtDVVJMX0NIRUNLX0hFQURFUl9MREFQU1NMXSwgWwogICBBQ19SRVFVSVJFKFtDVVJMX0NIRUNLX0hFQURFUl9MREFQXSlkbmwKLSAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBsZGFwc3NsLmhdLCBbYWNfY3ZfaGVhZGVyX2xkYXBzc2xfaF0sIFsKKyAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBsZGFwc3NsLmhdLCBbY3VybF9jdl9oZWFkZXJfbGRhcHNzbF9oXSwgWwogICAgIEFDX0NPTVBJTEVfSUZFTFNFKFsKICAgICAgIEFDX0xBTkdfUFJPR1JBTShbWwogI3VuZGVmIGlubGluZQpAQCAtNjQwLDEyICs2NDQsMTIgQEAKICAgICAgICAgTERBUCAqbGRwID0gbGRhcF9zc2xfaW5pdCgiZHVtbXkiLCBMREFQU19QT1JULCBjZXJ0X2xhYmVsKTsKICAgICAgIF1dKQogICAgIF0sWwotICAgICAgYWNfY3ZfaGVhZGVyX2xkYXBzc2xfaD0ieWVzIgorICAgICAgY3VybF9jdl9oZWFkZXJfbGRhcHNzbF9oPSJ5ZXMiCiAgICAgXSxbCi0gICAgICBhY19jdl9oZWFkZXJfbGRhcHNzbF9oPSJubyIKKyAgICAgIGN1cmxfY3ZfaGVhZGVyX2xkYXBzc2xfaD0ibm8iCiAgICAgXSkKICAgXSkKLSAgY2FzZSAiJGFjX2N2X2hlYWRlcl9sZGFwc3NsX2giIGluCisgIGNhc2UgIiRjdXJsX2N2X2hlYWRlcl9sZGFwc3NsX2giIGluCiAgICAgeWVzKQogICAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfTERBUFNTTF9ILCAxLAogICAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGxkYXBzc2wuaCBoZWFkZXIgZmlsZS5dKQpAQCAtODYyLDcgKzg2Niw3IEBACiBkbmwgYW5kIGNoZWNrIGlmIGl0IGlzIG5lZWRlZCBldmVuIHdpdGggc3RkbGliLmgKIAogQUNfREVGVU4oW0NVUkxfQ0hFQ0tfSEVBREVSX01BTExPQ10sIFsKLSAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBtYWxsb2MuaF0sIFthY19jdl9oZWFkZXJfbWFsbG9jX2hdLCBbCisgIEFDX0NBQ0hFX0NIRUNLKFtmb3IgbWFsbG9jLmhdLCBbY3VybF9jdl9oZWFkZXJfbWFsbG9jX2hdLCBbCiAgICAgQUNfQ09NUElMRV9JRkVMU0UoWwogICAgICAgQUNfTEFOR19QUk9HUkFNKFtbCiAjaW5jbHVkZSA8bWFsbG9jLmg+CkBAIC04NzMsMTIgKzg3NywxMiBAQAogICAgICAgICBmcmVlKHEpOwogICAgICAgXV0pCiAgICAgXSxbCi0gICAgICBhY19jdl9oZWFkZXJfbWFsbG9jX2g9InllcyIKKyAgICAgIGN1cmxfY3ZfaGVhZGVyX21hbGxvY19oPSJ5ZXMiCiAgICAgXSxbCi0gICAgICBhY19jdl9oZWFkZXJfbWFsbG9jX2g9Im5vIgorICAgICAgY3VybF9jdl9oZWFkZXJfbWFsbG9jX2g9Im5vIgogICAgIF0pCiAgIF0pCi0gIGlmIHRlc3QgIiRhY19jdl9oZWFkZXJfbWFsbG9jX2giID0gInllcyI7IHRoZW4KKyAgaWYgdGVzdCAiJGN1cmxfY3ZfaGVhZGVyX21hbGxvY19oIiA9ICJ5ZXMiOyB0aGVuCiAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfTUFMTE9DX0gsIDEsCiAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIG1hbGxvYy5oIGhlYWRlciBmaWxlLl0pCiAgICAgIwpAQCAtOTE0LDcgKzkxOCw3IEBACiBkbmwgbWVtb3J5IHJlbGF0ZWQgZnVuY3Rpb25zLgogCiBBQ19ERUZVTihbQ1VSTF9DSEVDS19IRUFERVJfTUVNT1JZXSwgWwotICBBQ19DQUNIRV9DSEVDSyhbZm9yIG1lbW9yeS5oXSwgW2FjX2N2X2hlYWRlcl9tZW1vcnlfaF0sIFsKKyAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBtZW1vcnkuaF0sIFtjdXJsX2N2X2hlYWRlcl9tZW1vcnlfaF0sIFsKICAgICBBQ19DT01QSUxFX0lGRUxTRShbCiAgICAgICBBQ19MQU5HX1BST0dSQU0oW1sKICNpbmNsdWRlIDxtZW1vcnkuaD4KQEAgLTkyNSwxMiArOTI5LDEyIEBACiAgICAgICAgIGZyZWUocSk7CiAgICAgICBdXSkKICAgICBdLFsKLSAgICAgIGFjX2N2X2hlYWRlcl9tZW1vcnlfaD0ieWVzIgorICAgICAgY3VybF9jdl9oZWFkZXJfbWVtb3J5X2g9InllcyIKICAgICBdLFsKLSAgICAgIGFjX2N2X2hlYWRlcl9tZW1vcnlfaD0ibm8iCisgICAgICBjdXJsX2N2X2hlYWRlcl9tZW1vcnlfaD0ibm8iCiAgICAgXSkKICAgXSkKLSAgaWYgdGVzdCAiJGFjX2N2X2hlYWRlcl9tZW1vcnlfaCIgPSAieWVzIjsgdGhlbgorICBpZiB0ZXN0ICIkY3VybF9jdl9oZWFkZXJfbWVtb3J5X2giID0gInllcyI7IHRoZW4KICAgICBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9NRU1PUllfSCwgMSwKICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgbWVtb3J5LmggaGVhZGVyIGZpbGUuXSkKICAgICAjCkBAIC0xMTU0LDcgKzExNTgsNyBAQAogICAgICAgIwogICAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfR0VUTkFNRUlORk8sIDEsCiAgICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgZ2V0bmFtZWluZm8gZnVuY3Rpb24uXSkKLSAgICAgIGFjX2N2X2Z1bmNfZ2V0bmFtZWluZm89InllcyIKKyAgICAgIGN1cmxfY3ZfZnVuY19nZXRuYW1laW5mbz0ieWVzIgogICAgIGZpCiAgIGZpCiBdKQpAQCAtMTIwOSw3ICsxMjEzLDcgQEAKICAgICAgICAgICAgICAgICAgICBuZXRkYi5oIG5ldGluZXQvaW4uaCBhcnBhL2luZXQuaCkKICAgIwogICBBQ19DQUNIRV9DSEVDSyhbZm9yIHdvcmtpbmcgTklfV0lUSFNDT1BFSURdLAotICAgIFthY19jdl93b3JraW5nX25pX3dpdGhzY29wZWlkXSwgWworICAgIFtjdXJsX2N2X3dvcmtpbmdfbmlfd2l0aHNjb3BlaWRdLCBbCiAgICAgQUNfUlVOX0lGRUxTRShbCiAgICAgICBBQ19MQU5HX1BST0dSQU0oW1sKICNpZmRlZiBIQVZFX1NURExJQl9ICkBAIC0xMjY3LDEwICsxMjcxLDEwIEBACiAgICAgICBdXSkgIyBBQy1MQU5HLVBST0dSQU0KICAgICBdLFsKICAgICAgICMgRXhpdCBjb2RlID09IDAuIFByb2dyYW0gd29ya2VkLgotICAgICAgYWNfY3Zfd29ya2luZ19uaV93aXRoc2NvcGVpZD0ieWVzIgorICAgICAgY3VybF9jdl93b3JraW5nX25pX3dpdGhzY29wZWlkPSJ5ZXMiCiAgICAgXSxbCiAgICAgICAjIEV4aXQgY29kZSAhPSAwLiBQcm9ncmFtIGZhaWxlZC4KLSAgICAgIGFjX2N2X3dvcmtpbmdfbmlfd2l0aHNjb3BlaWQ9Im5vIgorICAgICAgY3VybF9jdl93b3JraW5nX25pX3dpdGhzY29wZWlkPSJubyIKICAgICBdLFsKICAgICAgICMgUHJvZ3JhbSBpcyBub3QgcnVuIHdoZW4gY3Jvc3MtY29tcGlsaW5nLiBTbyB3ZSBhc3N1bWUKICAgICAgICMgTklfV0lUSFNDT1BFSUQgd2lsbCB3b3JrIGlmIHdlIGFyZSBhYmxlIHRvIGNvbXBpbGUgaXQuCkBAIC0xMjgzLDEzICsxMjg3LDEzIEBACiAgICAgICAgICAgdW5zaWduZWQgaW50IGR1bW15PSBOSV9OVU1FUklDSE9TVCB8IE5JX05VTUVSSUNTRVJWIHwgTklfV0lUSFNDT1BFSUQ7CiAgICAgICAgIF1dKQogICAgICAgXSxbCi0gICAgICAgIGFjX2N2X3dvcmtpbmdfbmlfd2l0aHNjb3BlaWQ9InllcyIKKyAgICAgICAgY3VybF9jdl93b3JraW5nX25pX3dpdGhzY29wZWlkPSJ5ZXMiCiAgICAgICBdLFsKLSAgICAgICAgYWNfY3Zfd29ya2luZ19uaV93aXRoc2NvcGVpZD0ibm8iCisgICAgICAgIGN1cmxfY3Zfd29ya2luZ19uaV93aXRoc2NvcGVpZD0ibm8iCiAgICAgICBdKSAjIEFDLUNPTVBJTEUtSUZFTFNFCiAgICAgXSkgIyBBQy1SVU4tSUZFTFNFCiAgIF0pICMgQUMtQ0FDSEUtQ0hFQ0sKLSAgY2FzZSAiJGFjX2N2X3dvcmtpbmdfbmlfd2l0aHNjb3BlaWQiIGluCisgIGNhc2UgIiRjdXJsX2N2X3dvcmtpbmdfbmlfd2l0aHNjb3BlaWQiIGluCiAgICAgeWVzKQogICAgICAgQUNfREVGSU5FKEhBVkVfTklfV0lUSFNDT1BFSUQsIDEsCiAgICAgICAgIFtEZWZpbmUgdG8gMSBpZiBOSV9XSVRIU0NPUEVJRCBleGlzdHMgYW5kIHdvcmtzLl0pCkBAIC0xNDIzLDcgKzE0MjcsNyBAQAogICAgICAgIwogICAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfUkVDViwgMSwKICAgICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSByZWN2IGZ1bmN0aW9uLl0pCi0gICAgICBhY19jdl9mdW5jX3JlY3Y9InllcyIKKyAgICAgIGN1cmxfY3ZfZnVuY19yZWN2PSJ5ZXMiCiAgICAgZmkKICAgZWxzZQogICAgIEFDX01TR19FUlJPUihbVW5hYmxlIHRvIGxpbmsgZnVuY3Rpb24gcmVjdl0pCkBAIC0xNTkwLDcgKzE1OTQsNyBAQAogICAgICAgIwogICAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfU0VORCwgMSwKICAgICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBzZW5kIGZ1bmN0aW9uLl0pCi0gICAgICBhY19jdl9mdW5jX3NlbmQ9InllcyIKKyAgICAgIGN1cmxfY3ZfZnVuY19zZW5kPSJ5ZXMiCiAgICAgZmkKICAgZWxzZQogICAgIEFDX01TR19FUlJPUihbVW5hYmxlIHRvIGxpbmsgZnVuY3Rpb24gc2VuZF0pCkBAIC0xNjAzLDcgKzE2MDcsNyBAQAogCiBBQ19ERUZVTihbQ1VSTF9DSEVDS19NU0dfTk9TSUdOQUxdLCBbCiAgIEFDX0NIRUNLX0hFQURFUlMoc3lzL3R5cGVzLmggc3lzL3NvY2tldC5oKQotICBBQ19DQUNIRV9DSEVDSyhbZm9yIE1TR19OT1NJR05BTF0sIFthY19jdl9tc2dfbm9zaWduYWxdLCBbCisgIEFDX0NBQ0hFX0NIRUNLKFtmb3IgTVNHX05PU0lHTkFMXSwgW2N1cmxfY3ZfbXNnX25vc2lnbmFsXSwgWwogICAgIEFDX0NPTVBJTEVfSUZFTFNFKFsKICAgICAgIEFDX0xBTkdfUFJPR1JBTShbWwogI3VuZGVmIGlubGluZQpAQCAtMTYzMSwxMiArMTYzNSwxMiBAQAogICAgICAgICBpbnQgZmxhZz1NU0dfTk9TSUdOQUw7CiAgICAgICBdXSkKICAgICBdLFsKLSAgICAgIGFjX2N2X21zZ19ub3NpZ25hbD0ieWVzIgorICAgICAgY3VybF9jdl9tc2dfbm9zaWduYWw9InllcyIKICAgICBdLFsKLSAgICAgIGFjX2N2X21zZ19ub3NpZ25hbD0ibm8iCisgICAgICBjdXJsX2N2X21zZ19ub3NpZ25hbD0ibm8iCiAgICAgXSkKICAgXSkKLSAgY2FzZSAiJGFjX2N2X21zZ19ub3NpZ25hbCIgaW4KKyAgY2FzZSAiJGN1cmxfY3ZfbXNnX25vc2lnbmFsIiBpbgogICAgIHllcykKICAgICAgIEFDX0RFRklORV9VTlFVT1RFRChIQVZFX01TR19OT1NJR05BTCwgMSwKICAgICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBNU0dfTk9TSUdOQUwgZmxhZy5dKQpAQCAtMTY1NCw3ICsxNjU4LDcgQEAKICAgQUNfUkVRVUlSRShbQ1VSTF9DSEVDS19IRUFERVJfV0lOU09DS10pZG5sCiAgIEFDX1JFUVVJUkUoW0NVUkxfQ0hFQ0tfSEVBREVSX1dJTlNPQ0syXSlkbmwKICAgQUNfQ0hFQ0tfSEVBREVSUyhzeXMvdHlwZXMuaCBzeXMvdGltZS5oIHRpbWUuaCBzeXMvc29ja2V0LmgpCi0gIEFDX0NBQ0hFX0NIRUNLKFtmb3Igc3RydWN0IHRpbWV2YWxdLCBbYWNfY3Zfc3RydWN0X3RpbWV2YWxdLCBbCisgIEFDX0NBQ0hFX0NIRUNLKFtmb3Igc3RydWN0IHRpbWV2YWxdLCBbY3VybF9jdl9zdHJ1Y3RfdGltZXZhbF0sIFsKICAgICBBQ19DT01QSUxFX0lGRUxTRShbCiAgICAgICBBQ19MQU5HX1BST0dSQU0oW1sKICN1bmRlZiBpbmxpbmUKQEAgLTE2OTMsMTIgKzE2OTcsMTIgQEAKICAgICAgICAgdHMudHZfdXNlYyA9IDA7CiAgICAgICBdXSkKICAgICBdLFsKLSAgICAgIGFjX2N2X3N0cnVjdF90aW1ldmFsPSJ5ZXMiCisgICAgICBjdXJsX2N2X3N0cnVjdF90aW1ldmFsPSJ5ZXMiCiAgICAgXSxbCi0gICAgICBhY19jdl9zdHJ1Y3RfdGltZXZhbD0ibm8iCisgICAgICBjdXJsX2N2X3N0cnVjdF90aW1ldmFsPSJubyIKICAgICBdKQogICBdKQotICBjYXNlICIkYWNfY3Zfc3RydWN0X3RpbWV2YWwiIGluCisgIGNhc2UgIiRjdXJsX2N2X3N0cnVjdF90aW1ldmFsIiBpbgogICAgIHllcykKICAgICAgIEFDX0RFRklORV9VTlFVT1RFRChIQVZFX1NUUlVDVF9USU1FVkFMLCAxLAogICAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIHRpbWV2YWwgc3RydWN0Ll0pCkBAIC0xNzM2LDEzICsxNzQwLDEzIEBACiAgICAgICAgIF1dKQogICAgICAgXSxbCiAgICAgICAgIEFDX01TR19SRVNVTFQoW25vXSkKLSAgICAgICAgYWNfY3Zfc2lnX2F0b21pY190X3ZvbGF0aWxlPSJubyIKKyAgICAgICAgY3VybF9jdl9zaWdfYXRvbWljX3Rfdm9sYXRpbGU9Im5vIgogICAgICAgXSxbCiAgICAgICAgIEFDX01TR19SRVNVTFQoW3llc10pCi0gICAgICAgIGFjX2N2X3NpZ19hdG9taWNfdF92b2xhdGlsZT0ieWVzIgorICAgICAgICBjdXJsX2N2X3NpZ19hdG9taWNfdF92b2xhdGlsZT0ieWVzIgogICAgICAgXSkKICAgICAgICMKLSAgICAgIGlmIHRlc3QgIiRhY19jdl9zaWdfYXRvbWljX3Rfdm9sYXRpbGUiID0gInllcyI7IHRoZW4KKyAgICAgIGlmIHRlc3QgIiRjdXJsX2N2X3NpZ19hdG9taWNfdF92b2xhdGlsZSIgPSAieWVzIjsgdGhlbgogICAgICAgICBBQ19ERUZJTkUoSEFWRV9TSUdfQVRPTUlDX1RfVk9MQVRJTEUsIDEsCiAgICAgICAgICAgW0RlZmluZSB0byAxIGlmIHNpZ19hdG9taWNfdCBpcyBhbHJlYWR5IGRlZmluZWQgYXMgdm9sYXRpbGUuXSkKICAgICAgIGZpCkBAIC0xODUxLDggKzE4NTUsMTAgQEAKICAgQUNfUkVRVUlSRShbQUNfSEVBREVSX1RJTUVdKWRubAogICBBQ19DSEVDS19IRUFERVJTKHN5cy90eXBlcy5oIHN5cy90aW1lLmggdGltZS5oKQogICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBtb25vdG9uaWMgY2xvY2tfZ2V0dGltZV0pCi0gIEFDX0NPTVBJTEVfSUZFTFNFKFsKLSAgICBBQ19MQU5HX1BST0dSQU0oW1sKKyAgIworICBpZiB0ZXN0ICJ4JGRvbnR3YW50X3J0IiA9PSAieG5vIiA7IHRoZW4KKyAgICBBQ19DT01QSUxFX0lGRUxTRShbCisgICAgICBBQ19MQU5HX1BST0dSQU0oW1sKICNpZmRlZiBIQVZFX1NZU19UWVBFU19ICiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjZW5kaWYKQEAgLTE4NjYsMTcgKzE4NzIsMTggQEAKICNpbmNsdWRlIDx0aW1lLmg+CiAjZW5kaWYKICNlbmRpZgotICAgIF1dLFtbCi0gICAgICBzdHJ1Y3QgdGltZXNwZWMgdHM7Ci0gICAgICAodm9pZCljbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgJnRzKTsKLSAgICBdXSkKLSAgXSxbCi0gICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKLSAgICBhY19jdl9mdW5jX2Nsb2NrX2dldHRpbWU9InllcyIKLSAgXSxbCi0gICAgQUNfTVNHX1JFU1VMVChbbm9dKQotICAgIGFjX2N2X2Z1bmNfY2xvY2tfZ2V0dGltZT0ibm8iCi0gIF0pCisgICAgICBdXSxbWworICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgdHM7CisgICAgICAgICh2b2lkKWNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCAmdHMpOworICAgICAgXV0pCisgICAgXSxbCisgICAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQorICAgICAgY3VybF9mdW5jX2Nsb2NrX2dldHRpbWU9InllcyIKKyAgICBdLFsKKyAgICAgIEFDX01TR19SRVNVTFQoW25vXSkKKyAgICAgIGN1cmxfZnVuY19jbG9ja19nZXR0aW1lPSJubyIKKyAgICBdKQorICBmaQogICBkbmwgRGVmaW5pdGlvbiBvZiBIQVZFX0NMT0NLX0dFVFRJTUVfTU9OT1RPTklDIGlzIGludGVudGlvbmFsbHkgcG9zdHBvbmVkCiAgIGRubCB1bnRpbCBsaWJyYXJ5IGxpbmtpbmcgYW5kIHJ1bi10aW1lIGNoZWNrcyBmb3IgY2xvY2tfZ2V0dGltZSBzdWNjZWVkLgogXSkKQEAgLTE4OTAsNyArMTg5Nyw3IEBACiBBQ19ERUZVTihbQ1VSTF9DSEVDS19MSUJTX0NMT0NLX0dFVFRJTUVfTU9OT1RPTklDXSwgWwogICBBQ19SRVFVSVJFKFtDVVJMX0NIRUNLX0ZVTkNfQ0xPQ0tfR0VUVElNRV9NT05PVE9OSUNdKWRubAogICAjCi0gIGlmIHRlc3QgIiRhY19jdl9mdW5jX2Nsb2NrX2dldHRpbWUiID0gInllcyI7IHRoZW4KKyAgaWYgdGVzdCAiJGN1cmxfZnVuY19jbG9ja19nZXR0aW1lIiA9ICJ5ZXMiOyB0aGVuCiAgICAgIwogICAgIEFDX01TR19DSEVDS0lORyhbZm9yIGNsb2NrX2dldHRpbWUgaW4gbGlicmFyaWVzXSkKICAgICAjCkBAIC0xOTM1LDExICsxOTQyLDExIEBACiAgICAgICBYLXVua25vd24pCiAgICAgICAgIEFDX01TR19SRVNVTFQoW2Nhbm5vdCBmaW5kIGNsb2NrX2dldHRpbWVdKQogICAgICAgICBBQ19NU0dfV0FSTihbSEFWRV9DTE9DS19HRVRUSU1FX01PTk9UT05JQyB3aWxsIG5vdCBiZSBkZWZpbmVkXSkKLSAgICAgICAgYWNfY3ZfZnVuY19jbG9ja19nZXR0aW1lPSJubyIKKyAgICAgICAgY3VybF9mdW5jX2Nsb2NrX2dldHRpbWU9Im5vIgogICAgICAgICA7OwogICAgICAgWC0pCiAgICAgICAgIEFDX01TR19SRVNVTFQoW25vIGFkZGl0aW9uYWwgbGliIHJlcXVpcmVkXSkKLSAgICAgICAgYWNfY3ZfZnVuY19jbG9ja19nZXR0aW1lPSJ5ZXMiCisgICAgICAgIGN1cmxfZnVuY19jbG9ja19nZXR0aW1lPSJ5ZXMiCiAgICAgICAgIDs7CiAgICAgICAqKQogICAgICAgICBpZiB0ZXN0IC16ICIkY3VybF9jdl9zYXZlX0xJQlMiOyB0aGVuCkBAIC0xOTQ4LDEzICsxOTU1LDEzIEBACiAgICAgICAgICAgTElCUz0iJGN1cmxfY3ZfZ2Nsa19MSUJTICRjdXJsX2N2X3NhdmVfTElCUyIKICAgICAgICAgZmkKICAgICAgICAgQUNfTVNHX1JFU1VMVChbJGN1cmxfY3ZfZ2Nsa19MSUJTXSkKLSAgICAgICAgYWNfY3ZfZnVuY19jbG9ja19nZXR0aW1lPSJ5ZXMiCisgICAgICAgIGN1cmxfZnVuY19jbG9ja19nZXR0aW1lPSJ5ZXMiCiAgICAgICAgIDs7CiAgICAgZXNhYwogICAgICMKICAgICBkbmwgb25seSBkbyBydW50aW1lIHZlcmlmaWNhdGlvbiB3aGVuIG5vdCBjcm9zcy1jb21waWxpbmcKICAgICBpZiB0ZXN0ICJ4JGNyb3NzX2NvbXBpbGluZyIgIT0gInh5ZXMiICYmCi0gICAgICB0ZXN0ICIkYWNfY3ZfZnVuY19jbG9ja19nZXR0aW1lIiA9ICJ5ZXMiOyB0aGVuCisgICAgICB0ZXN0ICIkY3VybF9mdW5jX2Nsb2NrX2dldHRpbWUiID0gInllcyI7IHRoZW4KICAgICAgIEFDX01TR19DSEVDS0lORyhbaWYgbW9ub3RvbmljIGNsb2NrX2dldHRpbWUgd29ya3NdKQogICAgICAgQUNfUlVOX0lGRUxTRShbCiAgICAgICAgIEFDX0xBTkdfUFJPR1JBTShbWwpAQCAtMTk4NiwxMiArMTk5MywxMiBAQAogICAgICAgXSxbCiAgICAgICAgIEFDX01TR19SRVNVTFQoW25vXSkKICAgICAgICAgQUNfTVNHX1dBUk4oW0hBVkVfQ0xPQ0tfR0VUVElNRV9NT05PVE9OSUMgd2lsbCBub3QgYmUgZGVmaW5lZF0pCi0gICAgICAgIGFjX2N2X2Z1bmNfY2xvY2tfZ2V0dGltZT0ibm8iCisgICAgICAgIGN1cmxfZnVuY19jbG9ja19nZXR0aW1lPSJubyIKICAgICAgICAgTElCUz0iJGN1cmxfY3Zfc2F2ZV9MSUJTIgogICAgICAgXSkKICAgICBmaQogICAgICMKLSAgICBjYXNlICIkYWNfY3ZfZnVuY19jbG9ja19nZXR0aW1lIiBpbgorICAgIGNhc2UgIiRjdXJsX2Z1bmNfY2xvY2tfZ2V0dGltZSIgaW4KICAgICAgIHllcykKICAgICAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfQ0xPQ0tfR0VUVElNRV9NT05PVE9OSUMsIDEsCiAgICAgICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBjbG9ja19nZXR0aW1lIGZ1bmN0aW9uIGFuZCBtb25vdG9uaWMgdGltZXIuXSkKQEAgLTIxNTIsNyArMjE1OSw3IEBACiAgIEFDX01TR19DSEVDS0lORyhbc2l6ZSBvZiBjdXJsX3NvY2tsZW5fdF0pCiAgIGN1cmxfc2l6ZW9mX2N1cmxfc29ja2xlbl90PSJ1bmtub3duIgogICBjdXJsX3B1bGxfaGVhZGVyc19zb2NrbGVuX3Q9InVua25vd24iCi0gIGlmIHRlc3QgIiRhY19jdl9oZWFkZXJfd3MydGNwaXBfaCIgPSAieWVzIjsgdGhlbgorICBpZiB0ZXN0ICIkY3VybF9jdl9oZWFkZXJfd3MydGNwaXBfaCIgPSAieWVzIjsgdGhlbgogICAgIHRzdF9wdWxsX2hlYWRlcl9jaGVja3M9J25vbmUgd3MydGNwaXAnCiAgICAgdHN0X3NpemVfY2hlY2tzPSc0JwogICBlbHNlCkBAIC0yNDQ2LDcgKzI0NTMsNyBAQAogICAgICAgIwogICAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfU0VMRUNULCAxLAogICAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIHNlbGVjdCBmdW5jdGlvbi5dKQotICAgICAgYWNfY3ZfZnVuY19zZWxlY3Q9InllcyIKKyAgICAgIGN1cmxfY3ZfZnVuY19zZWxlY3Q9InllcyIKICAgICBmaQogICBmaQogXSkKQEAgLTI1NjcsNyArMjU3NCw4IEBACiAgIEFDX01TR19DSEVDS0lORyhbZGVmYXVsdCBDQSBjZXJ0IGJ1bmRsZS9wYXRoXSkKIAogICBBQ19BUkdfV0lUSChjYS1idW5kbGUsCi1BQ19IRUxQX1NUUklORyhbLS13aXRoLWNhLWJ1bmRsZT1GSUxFXSwgW0ZpbGUgbmFtZSB0byB1c2UgYXMgQ0EgYnVuZGxlXSkKK0FDX0hFTFBfU1RSSU5HKFstLXdpdGgtY2EtYnVuZGxlPUZJTEVdLAorW1BhdGggdG8gYSBmaWxlIGNvbnRhaW5pbmcgQ0EgY2VydGlmaWNhdGVzIChleGFtcGxlOiAvZXRjL2NhLWJ1bmRsZS5jcnQpXSkKIEFDX0hFTFBfU1RSSU5HKFstLXdpdGhvdXQtY2EtYnVuZGxlXSwgW0Rvbid0IHVzZSBhIGRlZmF1bHQgQ0EgYnVuZGxlXSksCiAgIFsKICAgICB3YW50X2NhPSIkd2l0aHZhbCIKQEAgLTI1NzcsNyArMjU4NSwxMSBAQAogICBdLAogICBbIHdhbnRfY2E9InVuc2V0IiBdKQogICBBQ19BUkdfV0lUSChjYS1wYXRoLAotQUNfSEVMUF9TVFJJTkcoWy0td2l0aC1jYS1wYXRoPURJUkVDVE9SWV0sIFtEaXJlY3RvcnkgdG8gdXNlIGFzIENBIHBhdGhdKQorQUNfSEVMUF9TVFJJTkcoWy0td2l0aC1jYS1wYXRoPURJUkVDVE9SWV0sCitbUGF0aCB0byBhIGRpcmVjdG9yeSBjb250YWluaW5nIENBIGNlcnRpZmljYXRlcyBzdG9yZWQgaW5kaXZpZHVhbGx5LCB3aXRoIFwKK3RoZWlyIGZpbGVuYW1lcyBpbiBhIGhhc2ggZm9ybWF0LiBUaGlzIG9wdGlvbiBjYW4gYmUgdXNlZCB3aXRoIE9wZW5TU0wsIFwKK0dudVRMUyBhbmQgUG9sYXJTU0wgYmFja2VuZHMuIFJlZmVyIHRvIE9wZW5TU0wgY19yZWhhc2ggZm9yIGRldGFpbHMuIFwKKyhleGFtcGxlOiAvZXRjL2NlcnRpZmljYXRlcyldKQogQUNfSEVMUF9TVFJJTkcoWy0td2l0aG91dC1jYS1wYXRoXSwgW0Rvbid0IHVzZSBhIGRlZmF1bHQgQ0EgcGF0aF0pLAogICBbCiAgICAgd2FudF9jYXBhdGg9IiR3aXRodmFsIgpAQCAtMjU4Nyw2ICsyNTk5LDEwIEBACiAgIF0sCiAgIFsgd2FudF9jYXBhdGg9InVuc2V0Il0pCiAKKyAgY2Ffd2FybmluZz0iICAgKHdhcm5pbmc6IGNlcnRzIG5vdCBmb3VuZCkiCisgIGNhcGF0aF93YXJuaW5nPSIgICAod2FybmluZzogY2VydHMgbm90IGZvdW5kKSIKKyAgY2hlY2tfY2FwYXRoPSIiCisKICAgaWYgdGVzdCAieCR3YW50X2NhIiAhPSAieG5vIiAtYSAieCR3YW50X2NhIiAhPSAieHVuc2V0IiAtYSBcCiAgICAgICAgICAgIngkd2FudF9jYXBhdGgiICE9ICJ4bm8iIC1hICJ4JHdhbnRfY2FwYXRoIiAhPSAieHVuc2V0IjsgdGhlbgogICAgIGRubCBib3RoIGdpdmVuCkBAIC0yNjM1LDEyICsyNjUxLDcgQEAKICAgICAgIGZpCiAgICAgICBpZiB0ZXN0ICJ4JHdhbnRfY2FwYXRoIiA9ICJ4dW5zZXQiIC1hICJ4JGNhIiA9ICJ4bm8iIC1hIFwKICAgICAgICAgICAgICAgIngkT1BFTlNTTF9FTkFCTEVEIiA9ICJ4MSI7IHRoZW4KLSAgICAgICAgZm9yIGEgaW4gL2V0Yy9zc2wvY2VydHMvOyBkbwotICAgICAgICAgIGlmIHRlc3QgLWQgIiRhIiAmJiBscyAiJGEiL1tbMC05YS1mXVswLTlhLWZdWzAtOWEtZl1bMC05YS1mXVswLTlhLWZdWzAtOWEtZl1bMC05YS1mXVswLTlhLWZdXS4wID4vZGV2L251bGwgMj4vZGV2L251bGw7IHRoZW4KLSAgICAgICAgICAgIGNhcGF0aD0iJGEiCi0gICAgICAgICAgICBicmVhawotICAgICAgICAgIGZpCi0gICAgICAgIGRvbmUKKyAgICAgICAgY2hlY2tfY2FwYXRoPSIvZXRjL3NzbC9jZXJ0cy8iCiAgICAgICBmaQogICAgIGVsc2UKICAgICAgIGRubCBubyBvcHRpb24gZ2l2ZW4gYW5kIGNyb3NzLWNvbXBpbGluZwpAQCAtMjY0OCw2ICsyNjU5LDMwIEBACiAgICAgZmkKICAgZmkKIAorICBpZiB0ZXN0ICJ4JGNhIiA9ICJ4bm8iIHx8IHRlc3QgLWYgIiRjYSI7IHRoZW4KKyAgICBjYV93YXJuaW5nPSIiCisgIGZpCisKKyAgaWYgdGVzdCAieCRjYXBhdGgiICE9ICJ4bm8iOyB0aGVuCisgICAgY2hlY2tfY2FwYXRoPSIkY2FwYXRoIgorICBmaQorCisgIGlmIHRlc3QgISAteiAiJGNoZWNrX2NhcGF0aCI7IHRoZW4KKyAgICBmb3IgYSBpbiAiJGNoZWNrX2NhcGF0aCI7IGRvCisgICAgICBpZiB0ZXN0IC1kICIkYSIgJiYgbHMgIiRhIi9bWzAtOWEtZl1bMC05YS1mXVswLTlhLWZdWzAtOWEtZl1bMC05YS1mXVswLTlhLWZdWzAtOWEtZl1bMC05YS1mXV0uMCA+L2Rldi9udWxsIDI+L2Rldi9udWxsOyB0aGVuCisgICAgICAgIGlmIHRlc3QgIngkY2FwYXRoIiA9ICJ4bm8iOyB0aGVuCisgICAgICAgICAgY2FwYXRoPSIkYSIKKyAgICAgICAgZmkKKyAgICAgICAgY2FwYXRoX3dhcm5pbmc9IiIKKyAgICAgICAgYnJlYWsKKyAgICAgIGZpCisgICAgZG9uZQorICBmaQorCisgIGlmIHRlc3QgIngkY2FwYXRoIiA9ICJ4bm8iOyB0aGVuCisgICAgY2FwYXRoX3dhcm5pbmc9IiIKKyAgZmkKKwogICBpZiB0ZXN0ICJ4JGNhIiAhPSAieG5vIjsgdGhlbgogICAgIENVUkxfQ0FfQlVORExFPSciJyRjYSciJwogICAgIEFDX0RFRklORV9VTlFVT1RFRChDVVJMX0NBX0JVTkRMRSwgIiRjYSIsIFtMb2NhdGlvbiBvZiBkZWZhdWx0IGNhIGJ1bmRsZV0pCkBAIC0yNjYyLDYgKzI2OTcsMjQgQEAKICAgaWYgdGVzdCAieCRjYSIgPSAieG5vIiAmJiB0ZXN0ICJ4JGNhcGF0aCIgPSAieG5vIjsgdGhlbgogICAgIEFDX01TR19SRVNVTFQoW25vXSkKICAgZmkKKworICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gdXNlIGJ1aWx0aW4gQ0Egc3RvcmUgb2YgU1NMIGxpYnJhcnldKQorICBBQ19BUkdfV0lUSChjYS1mYWxsYmFjaywKK0FDX0hFTFBfU1RSSU5HKFstLXdpdGgtY2EtZmFsbGJhY2tdLCBbVXNlIHRoZSBidWlsdCBpbiBDQSBzdG9yZSBvZiB0aGUgU1NMIGxpYnJhcnldKQorQUNfSEVMUF9TVFJJTkcoWy0td2l0aG91dC1jYS1mYWxsYmFja10sIFtEb24ndCB1c2UgdGhlIGJ1aWx0IGluIENBIHN0b3JlIG9mIHRoZSBTU0wgbGlicmFyeV0pLAorICBbCisgICAgaWYgdGVzdCAieCR3aXRoX2NhX2ZhbGxiYWNrIiAhPSAieHllcyIgLWEgIngkd2l0aF9jYV9mYWxsYmFjayIgIT0gInhubyI7IHRoZW4KKyAgICAgIEFDX01TR19FUlJPUihbLS13aXRoLWNhLWZhbGxiYWNrIG9ubHkgYWxsb3dzIHllcyBvciBubyBhcyBwYXJhbWV0ZXJdKQorICAgIGZpCisgIF0sCisgIFsgd2l0aF9jYV9mYWxsYmFjaz0ibm8iXSkKKyAgQUNfTVNHX1JFU1VMVChbJHdpdGhfY2FfZmFsbGJhY2tdKQorICBpZiB0ZXN0ICJ4JHdpdGhfY2FfZmFsbGJhY2siID0gInh5ZXMiOyB0aGVuCisgICAgaWYgdGVzdCAieCRPUEVOU1NMX0VOQUJMRUQiICE9ICJ4MSIgLWEgIngkR05VVExTX0VOQUJMRUQiICE9ICJ4MSI7IHRoZW4KKyAgICAgIEFDX01TR19FUlJPUihbLS13aXRoLWNhLWZhbGxiYWNrIG9ubHkgd29ya3Mgd2l0aCBPcGVuU1NMIG9yIEdudVRMU10pCisgICAgZmkKKyAgICBBQ19ERUZJTkVfVU5RVU9URUQoQ1VSTF9DQV9GQUxMQkFDSywgMSwgW2RlZmluZSAiMSIgdG8gdXNlIGJ1aWx0IGluIENBIHN0b3JlIG9mIFNTTCBsaWJyYXJ5IF0pCisgIGZpCiBdKQogCiAKQEAgLTI4MzQsNyArMjg4Nyw2IEBACiAgICMKICAgeF9MUDY0X2xvbmc9IiIKICAgeF9MUDMyX2xvbmc9IiIKLSAgeF9MUDE2X2xvbmc9IiIKICAgIwogICBpZiB0ZXN0ICIkYWNfY3Zfc2l6ZW9mX2xvbmciIC1lcSAiOCIgJiYKICAgICAgdGVzdCAiJGFjX2N2X3NpemVvZl92b2lkcCIgLWdlICI4IjsgdGhlbgpAQCAtMjg0Miw5ICsyODk0LDYgQEAKICAgZWxpZiB0ZXN0ICIkYWNfY3Zfc2l6ZW9mX2xvbmciIC1lcSAiNCIgJiYKICAgICAgICB0ZXN0ICIkYWNfY3Zfc2l6ZW9mX3ZvaWRwIiAtZ2UgIjQiOyB0aGVuCiAgICAgeF9MUDMyX2xvbmc9ImxvbmciCi0gIGVsaWYgdGVzdCAiJGFjX2N2X3NpemVvZl9sb25nIiAtZXEgIjIiICYmCi0gICAgICAgdGVzdCAiJGFjX2N2X3NpemVvZl92b2lkcCIgLWdlICIyIjsgdGhlbgotICAgIHhfTFAxNl9sb25nPSJsb25nIgogICBmaQogICAjCiAgIGRubCBET19DVVJMX09GRl9UX0NIRUNLIHJlc3VsdHMgYXJlIHN0b3JlZCBpbiBuZXh0IDMgdmFycwpAQCAtMjg3OSwxNyArMjkyOCw2IEBACiAgICAgQUNfTVNHX1JFU1VMVChbJGN1cmxfdHlwZW9mX2N1cmxfb2ZmX3RdKQogICBmaQogICBpZiB0ZXN0ICIkY3VybF90eXBlb2ZfY3VybF9vZmZfdCIgPSAidW5rbm93biI7IHRoZW4KLSAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciAxNi1iaXQgY3VybF9vZmZfdCBkYXRhIHR5cGVdKQotICAgIGZvciB0MiBpbiAgICAgICAgICBcCi0gICAgICAiJHhfTFAxNl9sb25nIiAgIFwKLSAgICAgICdpbnQxNl90JyAgICAgICAgXAotICAgICAgJ19faW50MTYnICAgICAgICBcCi0gICAgICAnaW50JyAgICAgICAgICAgIDsgZG8KLSAgICAgIERPX0NVUkxfT0ZGX1RfQ0hFQ0soWyR0Ml0sIFsyXSkKLSAgICBkb25lCi0gICAgQUNfTVNHX1JFU1VMVChbJGN1cmxfdHlwZW9mX2N1cmxfb2ZmX3RdKQotICBmaQotICBpZiB0ZXN0ICIkY3VybF90eXBlb2ZfY3VybF9vZmZfdCIgPSAidW5rbm93biI7IHRoZW4KICAgICBBQ19NU0dfRVJST1IoW2Nhbm5vdCBmaW5kIGRhdGEgdHlwZSBmb3IgY3VybF9vZmZfdC5dKQogICBmaQogICAjCkBAIC0yOTczLDcgKzMwMTEsNyBAQAogICBBQ19SRVFVSVJFKFtDVVJMX0NIRUNLX0hFQURFUl9XSU5ET1dTXSlkbmwKICAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIGJ1aWxkIHRhcmdldCBzdXBwb3J0cyBXSU4zMiBmaWxlIEFQSV0pCiAgIGN1cmxfd2luMzJfZmlsZV9hcGk9Im5vIgotICBpZiB0ZXN0ICIkYWNfY3ZfaGVhZGVyX3dpbmRvd3NfaCIgPSAieWVzIjsgdGhlbgorICBpZiB0ZXN0ICIkY3VybF9jdl9oZWFkZXJfd2luZG93c19oIiA9ICJ5ZXMiOyB0aGVuCiAgICAgaWYgdGVzdCB4IiRlbmFibGVfbGFyZ2VmaWxlIiAhPSAieG5vIjsgdGhlbgogICAgICAgQUNfQ09NUElMRV9JRkVMU0UoWwogICAgICAgICBBQ19MQU5HX1BST0dSQU0oW1sKQEAgLTMwNDksMTIgKzMwODcsMTQgQEAKIGRubAogCiBBQ19ERUZVTihbQ1VSTF9DSEVDS19QS0dDT05GSUddLCBbCisgICAgaWYgdGVzdCAtbiAiJFBLR19DT05GSUciOyB0aGVuCisgICAgICBQS0dDT05GSUc9IiRQS0dfQ09ORklHIgorICAgIGVsc2UKKyAgICAgIEFDX1BBVEhfVE9PTChbUEtHQ09ORklHXSwgW3BrZy1jb25maWddLCBbbm9dLAorICAgICAgICBbJFBBVEg6L3Vzci9iaW46L3Vzci9sb2NhbC9iaW5dKQorICAgIGZpCiAKLSAgICBQS0dDT05GSUc9Im5vIgotCi0gICAgQUNfUEFUSF9UT09MKCBQS0dDT05GSUcsIHBrZy1jb25maWcsIG5vLCAkUEFUSDovdXNyL2JpbjovdXNyL2xvY2FsL2JpbikKLQotICAgIGlmIHRlc3QgeCRQS0dDT05GSUcgIT0geG5vOyB0aGVuCisgICAgaWYgdGVzdCAieCRQS0dDT05GSUciICE9ICJ4bm8iOyB0aGVuCiAgICAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciAkMSBvcHRpb25zIHdpdGggcGtnLWNvbmZpZ10pCiAgICAgICBkbmwgYXNrIHBrZy1jb25maWcgYWJvdXQgJDEKICAgICAgIGl0ZXhpc3RzPWBDVVJMX0VYUE9SVF9QQ0RJUihbJDJdKSBkbmwKQEAgLTMxMTEsMyArMzE1MSw0OCBAQAogMTsKIF9FT0YKIF0pCisKK2RubCBDVVJMX0NQUF9QCitkbmwKK2RubCBDaGVjayBpZiAkY3BwIC1QIHNob3VsZCBiZSB1c2VkIGZvciBleHRyYWN0IGRlZmluZSB2YWx1ZXMgZHVlIHRvIGdjYyA1Citkbmwgc3BsaXR0aW5nIHVwIHN0cmluZ3MgYW5kIGRlZmluZXMgYmV0d2VlbiBsaW5lIG91dHB1dHMuIGdjYyBieSBkZWZhdWx0CitkbmwgKHdpdGhvdXQgLVApIHdpbGwgc2hvdyBURVNUIEVJTlZBTCBURVNUIGFzCitkbmwKK2RubCAjIDEzICJjb25mdGVzdC5jIgorZG5sIFRFU1QKK2RubCAjIDEzICJjb25mdGVzdC5jIiAzIDQKK2RubCAgICAgMjIKK2RubCAjIDEzICJjb25mdGVzdC5jIgorZG5sICAgICAgICAgICAgVEVTVAorCitBQ19ERUZVTihbQ1VSTF9DUFBfUF0sIFsKKyAgQUNfTVNHX0NIRUNLSU5HKFtpZiBjcHAgLVAgaXMgbmVlZGVkXSkKKyAgQUNfRUdSRVBfQ1BQKFtURVNULipURVNUXSwgWworICNpbmNsdWRlIDxlcnJuby5oPgorVEVTVCBFSU5WQUwgVEVTVAorICBdLCBbY3BwPW5vXSwgW2NwcD15ZXNdKQorICBBQ19NU0dfUkVTVUxUKFskY3BwXSkKKworICBkbmwgd2UgbmVlZCBjcHAgLVAgc28gY2hlY2sgaWYgaXQgd29ya3MgdGhlbgorICBpZiB0ZXN0ICJ4JGNwcCIgPSAieHllcyI7IHRoZW4KKyAgICBBQ19NU0dfQ0hFQ0tJTkcoW2lmIGNwcCAtUCB3b3Jrc10pCisgICAgT0xEQ1BQRkxBR1M9JENQUEZMQUdTCisgICAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAtUCIKKyAgICBBQ19FR1JFUF9DUFAoW1RFU1QuKlRFU1RdLCBbCisgI2luY2x1ZGUgPGVycm5vLmg+CitURVNUIEVJTlZBTCBURVNUCisgICAgXSwgW2NwcF9wPXllc10sIFtjcHBfcD1ub10pCisgICAgQUNfTVNHX1JFU1VMVChbJGNwcF9wXSkKKworICAgIGlmIHRlc3QgIngkY3BwX3AiID0gInhubyI7IHRoZW4KKyAgICAgIEFDX01TR19XQVJOKFtmYWlsZWQgdG8gZmlndXJlIG91dCBjcHAgLVAgYWx0ZXJuYXRpdmVdKQorICAgICAgIyB3aXRob3V0IC1QCisgICAgICBDUFBQRkxBR1M9JE9MRENQUEZMQUdTCisgICAgZWxzZQorICAgICAgIyB3aXRoIC1QCisgICAgICBDUFBQRkxBR1M9JENQUEZMQUdTCisgICAgZmkKKyAgICBkbmwgcmVzdG9yZSBDUFBGTEFHUworICAgIENQUEZMQUdTPSRPTERDUFBGTEFHUworICBmaQorXSkKZGlmZiAtLWdpdCBhL2FuZHJvaWRjb25maWd1cmUgYi9hbmRyb2lkY29uZmlndXJlCmluZGV4IDg5NTQ2NWMuLmY2YzFhZWEgMTAwNzU1Ci0tLSBhL2FuZHJvaWRjb25maWd1cmUKKysrIGIvYW5kcm9pZGNvbmZpZ3VyZQpAQCAtMSw3ICsxLDE4IEBACiAjIS9iaW4vYmFzaAogCi1leHBvcnQgQ0M9IiQobHMgIiR7QU5EUk9JRF9UT09MQ0hBSU59IiB8IGdyZXAgIlwtZ2NjJCIpIgotZXhwb3J0IExEPSIkKGxzICIke0FORFJPSURfVE9PTENIQUlOfSIgfCBncmVwICJcLWxkJCIpIgorc2V0IC1lCisKK2lmIFtbICIke1RBUkdFVF9QUk9EVUNUfSIgIT0gImFvc3BfYXJtIiBdXTsgdGhlbgorICAjIFNvbWUgb2YgdGhlIGluY2x1ZGUgcGF0aHMgYmVsb3cgYXNzdW1lIHRoYXQgdGhpcyBpcyBhbiBhcm0gMzJiaXQgY29uZmlndXJlCisgICMgcnVuLgorICBlY2hvICJSdW4gJ2x1bmNoIGFvc3BfYXJtLWVuZycgZmlyc3QuIiA+JjIKKyAgZXhpdCAxCitmaQorCitjZCAkKGRpcm5hbWUgIiQwIikKKworZXhwb3J0IENDPSIkKGxzICIke0FORFJPSURfVE9PTENIQUlOfSIgfCBncmVwICJcLWdjYyQiIHwgZ3JlcCAtdiBrZXJuZWwpIgorZXhwb3J0IExEPSIkKGxzICIke0FORFJPSURfVE9PTENIQUlOfSIgfCBncmVwICJcLWxkJCIgfCBncmVwIC12IGtlcm5lbCkiCiAKIFQ9IiR7QU5EUk9JRF9CVUlMRF9UT1B9IgogQ0ZMQUdTPSgKQEAgLTEyLDcgKzIzLDYgQEAKICAgIi1pc3lzdGVtICR7VH0vYmlvbmljL2xpYmMva2VybmVsL3VhcGkvYXNtLWFybS8iCiAgICItaXN5c3RlbSAke1R9L2Jpb25pYy9saWJtL2luY2x1ZGUiCiAgICItaXN5c3RlbSAke1R9L2J1aWxkL2NvcmUvY29tYm8vaW5jbHVkZS9hcmNoL2xpbnV4LWFybS8iCi0gICItaW5jbHVkZSAke1R9L2J1aWxkL2NvcmUvY29tYm8vaW5jbHVkZS9hcmNoL2xpbnV4LWFybS9BbmRyb2lkQ29uZmlnLmgiCiAgICItZm5vLWV4Y2VwdGlvbnMiCiAgICItZmZ1bmN0aW9uLXNlY3Rpb25zIgogICAiLWZkYXRhLXNlY3Rpb25zIgpAQCAtMjYsMTEgKzM2LDE5IEBACiAgICItbm9zdGRsaWIiCiApCiAKLQogLi9idWlsZGNvbmYKIENGTEFHUz0iJHtDRkxBR1NbQF19IgotLi9jb25maWd1cmUgLS1ob3N0PWFybS1saW51eC1hbmRyb2lkZWFiaSAtLXdpdGgtc3NsPSIke1R9L2V4dGVybmFsL2JvcmluZ3NzbCIgXAotICBDRkxBR1M9IiR7Q0ZMQUdTfSIgIExJQlM9Ii1sYyIgQ1BQRkxBR1M9IiR7Q0ZMQUdTfSAtSSR7VH0vZXh0ZXJuYWwvemxpYi9zcmMiIFwKLSAgTERGTEFHUz0iLUwke0FORFJPSURfUFJPRFVDVF9PVVR9L29iai9saWIvIiAtLWRpc2FibGUtbnRsbS13YiAtLWVuYWJsZS1pcHY2IFwKLSAgLS13aXRoLXpsaWIKKy4vY29uZmlndXJlIFwKKyAgLS1ob3N0PWFybS1saW51eC1hbmRyb2lkZWFiaSBcCisgIENGTEFHUz0iJHtDRkxBR1N9IiBcCisgIExJQlM9Ii1sYyIgXAorICBDUFBGTEFHUz0iJHtDRkxBR1N9IC1JJHtUfS9leHRlcm5hbC96bGliL3NyYyIgXAorICBMREZMQUdTPSItTCR7QU5EUk9JRF9QUk9EVUNUX09VVH0vb2JqL2xpYi8iIFwKKyAgLS1kaXNhYmxlLW50bG0td2IgXAorICAtLWVuYWJsZS1pcHY2IFwKKyAgLS13aXRoLXNzbD0iJHtUfS9leHRlcm5hbC9ib3Jpbmdzc2wiIFwKKyAgLS13aXRoLXpsaWIgXAorICAtLXdpdGgtY2EtcGF0aD0iL3N5c3RlbS9ldGMvc2VjdXJpdHkvY2FjZXJ0cyIKIAorIyBBcHBseSBsb2NhbCBjaGFuZ2VzIHRvIHRoZSBkZWZhdWx0IGNvbmZpZ3VyZSBvdXRwdXQuCitwYXRjaCAtcDEgLS1uby1iYWNrdXAtaWYtbWlzbWF0Y2ggPCBsb2NhbC1jb25maWd1cmUucGF0Y2gKZGlmZiAtLWdpdCBhL2FwcHZleW9yLnltbCBiL2FwcHZleW9yLnltbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNzI1YzQ0Ci0tLSAvZGV2L251bGwKKysrIGIvYXBwdmV5b3IueW1sCkBAIC0wLDAgKzEsMzUgQEAKK3ZlcnNpb246IDcuNDcuMC57YnVpbGR9CisKK2Vudmlyb25tZW50OgorICAgIG1hdHJpeDoKKyAgICAgIC0gUFJKX0dFTjogIlZpc3VhbCBTdHVkaW8gMTEgMjAxMiBXaW42NCIKKyAgICAgICAgQkRJUjogbXN2YzIwMTIKKyAgICAgICAgUFJKX0NGRzogUmVsZWFzZQorICAgICAgICBPUEVOU1NMOiBPRkYKKyAgICAgIC0gUFJKX0dFTjogIlZpc3VhbCBTdHVkaW8gMTIgMjAxMyBXaW42NCIKKyAgICAgICAgQkRJUjogbXN2YzIwMTMKKyAgICAgICAgUFJKX0NGRzogUmVsZWFzZQorICAgICAgICBPUEVOU1NMOiBPRkYKKyAgICAgIC0gUFJKX0dFTjogIlZpc3VhbCBTdHVkaW8gMTQgMjAxNSBXaW42NCIKKyAgICAgICAgQkRJUjogbXN2YzIwMTUKKyAgICAgICAgUFJKX0NGRzogUmVsZWFzZQorICAgICAgICBPUEVOU1NMOiBPRkYKKyAgICAgIC0gUFJKX0dFTjogIlZpc3VhbCBTdHVkaW8gMTEgMjAxMiBXaW42NCIKKyAgICAgICAgQkRJUjogbXN2YzIwMTIKKyAgICAgICAgUFJKX0NGRzogUmVsZWFzZQorICAgICAgICBPUEVOU1NMOiBPTgorICAgICAgLSBQUkpfR0VOOiAiVmlzdWFsIFN0dWRpbyAxMiAyMDEzIFdpbjY0IgorICAgICAgICBCRElSOiBtc3ZjMjAxMworICAgICAgICBQUkpfQ0ZHOiBSZWxlYXNlCisgICAgICAgIE9QRU5TU0w6IE9OCisgICAgICAtIFBSSl9HRU46ICJWaXN1YWwgU3R1ZGlvIDE0IDIwMTUgV2luNjQiCisgICAgICAgIEJESVI6IG1zdmMyMDE1CisgICAgICAgIFBSSl9DRkc6IFJlbGVhc2UKKyAgICAgICAgT1BFTlNTTDogT04KKworCitidWlsZF9zY3JpcHQ6CisgICAgLSBta2RpciBidWlsZC4lQkRJUiUKKyAgICAtIGNkIGJ1aWxkLiVCRElSJQorICAgIC0gY21ha2UgLi4gLUciJVBSSl9HRU4lIiAtRENNQUtFX1VTRV9PUEVOU1NMPSVPUEVOU1NMJQorICAgIC0gY21ha2UgLS1idWlsZCAuIC0tY29uZmlnICVQUkpfQ0ZHJSAtLWNsZWFuLWZpcnN0CmRpZmYgLS1naXQgYS9idWlsZGNvbmYgYi9idWlsZGNvbmYKaW5kZXggNzA1ZjBkMy4uMGQ5OThjMiAxMDA3NTUKLS0tIGEvYnVpbGRjb25mCisrKyBiL2J1aWxkY29uZgpAQCAtMTAsNyArMTAsNyBAQAogIwogIyBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogIyB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0jIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisjIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogIwogIyBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICMgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9idWlsZGNvbmYuYmF0IGIvYnVpbGRjb25mLmJhdAppbmRleCBkYzU1ZmFiLi5hZDNmYmE2IDEwMDY0NAotLS0gYS9idWlsZGNvbmYuYmF0CisrKyBiL2J1aWxkY29uZi5iYXQKQEAgLTEsMzggKzEsMzUwIEBACiBAZWNobyBvZmYKLVJFTQotUkVNCi1SRU0gVGhpcyBiYXRjaCBmaWxlIG11c3QgYmUgdXNlZCB0byBzZXQgdXAgYSBnaXQgdHJlZSB0byBidWlsZCBvbgotUkVNIHN5c3RlbXMgd2hlcmUgdGhlcmUgaXMgbm8gYXV0b3Rvb2xzIHN1cHBvcnQgKGkuZS4gTWljcm9zb2Z0KS4KLVJFTQotUkVNIFRoaXMgZmlsZSBpcyBub3QgaW5jbHVkZWQgbm9yIG5lZWRlZCBmb3IgY3VybCdzIHJlbGVhc2UKLVJFTSBhcmNoaXZlcywgbmVpdGhlciBmb3IgY3VybCdzIGRhaWx5IHNuYXBzaG90IGFyY2hpdmVzLgorcmVtICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorcmVtICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworcmVtICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKK3JlbSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CityZW0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworcmVtICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CityZW0gKgorcmVtICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KK3JlbSAqCityZW0gKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAorcmVtICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcworcmVtICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCityZW0gKgorcmVtICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCityZW0gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKK3JlbSAqIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCityZW0gKgorcmVtICogVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQorcmVtICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KK3JlbSAqCityZW0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAKLWlmIGV4aXN0IEdJVC1JTkZPIGdvdG8gc3RhcnRfZG9pbmcKLUVDSE8gRVJST1I6IFRoaXMgZmlsZSBzaGFsbCBvbmx5IGJlIHVzZWQgd2l0aCBhIGN1cmwgZ2l0IHRyZWUgY2hlY2tvdXQuCi1nb3RvIGVuZF9hbGwKLTpzdGFydF9kb2luZworcmVtIE5PVEVTCityZW0KK3JlbSBUaGlzIGJhdGNoIGZpbGUgbXVzdCBiZSB1c2VkIHRvIHNldCB1cCBhIGdpdCB0cmVlIHRvIGJ1aWxkIG9uIHN5c3RlbXMgd2hlcmUKK3JlbSB0aGVyZSBpcyBubyBhdXRvdG9vbHMgc3VwcG9ydCAoaS5lLiBET1MgYW5kIFdpbmRvd3MpLgorcmVtCiAKLVJFTSBjcmVhdGUgdG9vbF9odWdlaGVscC5jCi1pZiBub3QgZXhpc3Qgc3JjXHRvb2xfaHVnZWhlbHAuYy5jdnMgZ290byBlbmRfaHVnZWhlbHBfYwotY29weSAvWSBzcmNcdG9vbF9odWdlaGVscC5jLmN2cyBzcmNcdG9vbF9odWdlaGVscC5jCi06ZW5kX2h1Z2VoZWxwX2MKKzpiZWdpbgorICByZW0gU2V0IG91ciB2YXJpYWJsZXMKKyAgaWYgIiVPUyUiID09ICJXaW5kb3dzX05UIiBzZXRsb2NhbAorICBzZXQgTU9ERT1HRU5FUkFURQogCi1SRU0gY3JlYXRlIE1ha2VmaWxlCi1pZiBub3QgZXhpc3QgTWFrZWZpbGUuZGlzdCBnb3RvIGVuZF9tYWtlZmlsZQotY29weSAvWSBNYWtlZmlsZS5kaXN0IE1ha2VmaWxlCi06ZW5kX21ha2VmaWxlCisgIHJlbSBTd2l0Y2ggdG8gdGhpcyBiYXRjaCBmaWxlJ3MgZGlyZWN0b3J5CisgIGNkIC9kICIlfjBcLi4iIDE+TlVMIDI+JjEKIAotUkVNIGNyZWF0ZSBjdXJsYnVpbGQuaAotaWYgbm90IGV4aXN0IGluY2x1ZGVcY3VybFxjdXJsYnVpbGQuaC5kaXN0IGdvdG8gZW5kX2N1cmxidWlsZF9oCi1jb3B5IC9ZIGluY2x1ZGVcY3VybFxjdXJsYnVpbGQuaC5kaXN0IGluY2x1ZGVcY3VybFxjdXJsYnVpbGQuaAotOmVuZF9jdXJsYnVpbGRfaAorICByZW0gQ2hlY2sgd2UgYXJlIHJ1bm5pbmcgZnJvbSBhIGN1cmwgZ2l0IHJlcG9zaXRvcnkKKyAgaWYgbm90IGV4aXN0IEdJVC1JTkZPIGdvdG8gbm9yZXBvCiAKLVJFTSBzZXR1cCBjLWFyZXMgZ2l0IHRyZWUKLWlmIG5vdCBleGlzdCBhcmVzXGJ1aWxkY29uZi5iYXQgZ290byBlbmRfY19hcmVzCi1jZCBhcmVzCi1jYWxsIGJ1aWxkY29uZi5iYXQKLWNkIC4uCi06ZW5kX2NfYXJlcworICByZW0gRGV0ZWN0IHByb2dyYW1zLiBIQVZFXzxQUk9HTkFNRT4KKyAgcmVtIFdoZW4gbm90IGZvdW5kIHRoZSB2YXJpYWJsZSBpcyBzZXQgdW5kZWZpbmVkLiBUaGUgdW5kZWZpbmVkIHBhdHRlcm4KKyAgcmVtIGFsbG93cyBmb3Igc3RhdGVtZW50cyBsaWtlICJpZiBub3QgZGVmaW5lZCBIQVZFX1BFUkwgKGNvbW1hbmQpIgorICBncm9mZiAtLXZlcnNpb24gPE5VTCAxPk5VTCAyPiYxCisgIGlmIGVycm9ybGV2ZWwgMSAoc2V0IEhBVkVfR1JPRkY9KSBlbHNlIChzZXQgSEFWRV9HUk9GRj1ZKQorICBucm9mZiAtLXZlcnNpb24gPE5VTCAxPk5VTCAyPiYxCisgIGlmIGVycm9ybGV2ZWwgMSAoc2V0IEhBVkVfTlJPRkY9KSBlbHNlIChzZXQgSEFWRV9OUk9GRj1ZKQorICBwZXJsIC0tdmVyc2lvbiA8TlVMIDE+TlVMIDI+JjEKKyAgaWYgZXJyb3JsZXZlbCAxIChzZXQgSEFWRV9QRVJMPSkgZWxzZSAoc2V0IEhBVkVfUEVSTD1ZKQorICBnemlwIC0tdmVyc2lvbiA8TlVMIDE+TlVMIDI+JjEKKyAgaWYgZXJyb3JsZXZlbCAxIChzZXQgSEFWRV9HWklQPSkgZWxzZSAoc2V0IEhBVkVfR1pJUD1ZKQogCi06ZW5kX2FsbAorOnBhcnNlQXJncworICBpZiAiJX4xIiA9PSAiIiBnb3RvIHN0YXJ0CiAKKyAgaWYgL2kgIiV+MSIgPT0gIi1jbGVhbiIgKAorICAgIHNldCBNT0RFPUNMRUFOCisgICkgZWxzZSBpZiAvaSAiJX4xIiA9PSAiLT8iICgKKyAgICBnb3RvIHN5bnRheAorICApIGVsc2UgaWYgL2kgIiV+MSIgPT0gIi1oIiAoCisgICAgZ290byBzeW50YXgKKyAgKSBlbHNlIGlmIC9pICIlfjEiID09ICItaGVscCIgKAorICAgIGdvdG8gc3ludGF4CisgICkgZWxzZSAoCisgICAgZ290byB1bmtub3duCisgICkKKworICBzaGlmdCAmIGdvdG8gcGFyc2VBcmdzCisKKzpzdGFydAorICBpZiAiJU1PREUlIiA9PSAiR0VORVJBVEUiICgKKyAgICBlY2hvLgorICAgIGVjaG8gR2VuZXJhdGluZyBwcmVyZXF1aXNpdGUgZmlsZXMKKworICAgIGNhbGwgOmdlbmVyYXRlCisgICAgaWYgZXJyb3JsZXZlbCA0IGdvdG8gbm9nZW5jdXJsYnVpbGQKKyAgICBpZiBlcnJvcmxldmVsIDMgZ290byBub2dlbmh1Z2VoZWxwCisgICAgaWYgZXJyb3JsZXZlbCAyIGdvdG8gbm9nZW5tYWtlZmlsZQorICAgIGlmIGVycm9ybGV2ZWwgMSBnb3RvIHdhcm5pbmcKKworICApIGVsc2UgKAorICAgIGVjaG8uCisgICAgZWNobyBSZW1vdmluZyBwcmVyZXF1aXNpdGUgZmlsZXMKKworICAgIGNhbGwgOmNsZWFuCisgICAgaWYgZXJyb3JsZXZlbCAzIGdvdG8gbm9jbGVhbmN1cmxidWlsZAorICAgIGlmIGVycm9ybGV2ZWwgMiBnb3RvIG5vY2xlYW5odWdlaGVscAorICAgIGlmIGVycm9ybGV2ZWwgMSBnb3RvIG5vY2xlYW5tYWtlZmlsZQorICApCisKKyAgZ290byBzdWNjZXNzCisKK3JlbSBNYWluIGdlbmVyYXRlIGZ1bmN0aW9uLgorcmVtCityZW0gUmV0dXJuczoKK3JlbQorcmVtIDAgLSBzdWNjZXNzCityZW0gMSAtIHN1Y2Nlc3Mgd2l0aCBzaW1wbGlmaWVkIHRvb2xfaHVnZWhlbHAuYyAKK3JlbSAyIC0gZmFpbGVkIHRvIGdlbmVyYXRlIE1ha2VmaWxlCityZW0gMyAtIGZhaWxlZCB0byBnZW5lcmF0ZSB0b29sX2h1Z2VoZWxwLmMKK3JlbSA0IC0gZmFpbGVkIHRvIGdlbmVyYXRlIGN1cmxidWlsZC5oCityZW0KKzpnZW5lcmF0ZQorICBpZiAiJU9TJSIgPT0gIldpbmRvd3NfTlQiIHNldGxvY2FsCisgIHNldCBCQVNJQ19IVUdFSEVMUD0wCisKKyAgcmVtIENyZWF0ZSBNYWtlZmlsZQorICBlY2hvICogJUNEJVxNYWtlZmlsZQorICBpZiBleGlzdCBNYWtlZmlsZS5kaXN0ICgKKyAgICBjb3B5IC9ZIE1ha2VmaWxlLmRpc3QgTWFrZWZpbGUgMT5OVUwgMj4mMQorICAgIGlmIGVycm9ybGV2ZWwgMSAoCisgICAgICBpZiAiJU9TJSIgPT0gIldpbmRvd3NfTlQiIGVuZGxvY2FsCisgICAgICBleGl0IC9CIDIKKyAgICApCisgICkKKworICByZW0gQ3JlYXRlIHRvb2xfaHVnZWhlbHAuYworICBlY2hvICogJUNEJVxzcmNcdG9vbF9odWdlaGVscC5jCisgIGNhbGwgOmdlbkh1Z2VIZWxwCisgIGlmIGVycm9ybGV2ZWwgMiAoCisgICAgaWYgIiVPUyUiID09ICJXaW5kb3dzX05UIiBlbmRsb2NhbAorICAgIGV4aXQgL0IgMworICApCisgIGlmIGVycm9ybGV2ZWwgMSAoCisgICAgc2V0IEJBU0lDX0hVR0VIRUxQPTEKKyAgKQorICBjbWQgL2MgZXhpdCAwCisKKyAgcmVtIENyZWF0ZSBjdXJsYnVpbGQuaAorICBlY2hvICogJUNEJVxpbmNsdWRlXGN1cmxcY3VybGJ1aWxkLmgKKyAgaWYgZXhpc3QgaW5jbHVkZVxjdXJsXGN1cmxidWlsZC5oLmRpc3QgKAorICAgIGNvcHkgL1kgaW5jbHVkZVxjdXJsXGN1cmxidWlsZC5oLmRpc3QgaW5jbHVkZVxjdXJsXGN1cmxidWlsZC5oIDE+TlVMIDI+JjEKKyAgICBpZiBlcnJvcmxldmVsIDEgKAorICAgICAgaWYgIiVPUyUiID09ICJXaW5kb3dzX05UIiBlbmRsb2NhbAorICAgICAgZXhpdCAvQiA0CisgICAgKQorICApCisKKyAgcmVtIFNldHVwIGMtYXJlcyBnaXQgdHJlZQorICBpZiBleGlzdCBhcmVzXGJ1aWxkY29uZi5iYXQgKAorICAgIGVjaG8uCisgICAgZWNobyBDb25maWd1cmluZyBjLWFyZXMgYnVpbGQgZW52aXJvbm1lbnQKKyAgICBjZCBhcmVzCisgICAgY2FsbCBidWlsZGNvbmYuYmF0CisgICAgY2QgLi4KKyAgKQorCisgIGlmICIlQkFTSUNfSFVHRUhFTFAlIiA9PSAiMSIgKAorICAgIGlmICIlT1MlIiA9PSAiV2luZG93c19OVCIgZW5kbG9jYWwKKyAgICBleGl0IC9CIDEKKyAgKQorCisgIGlmICIlT1MlIiA9PSAiV2luZG93c19OVCIgZW5kbG9jYWwKKyAgZXhpdCAvQiAwCisKK3JlbSBNYWluIGNsZWFuIGZ1bmN0aW9uLgorcmVtCityZW0gUmV0dXJuczoKK3JlbQorcmVtIDAgLSBzdWNjZXNzCityZW0gMSAtIGZhaWxlZCB0byBjbGVhbiBNYWtlZmlsZQorcmVtIDIgLSBmYWlsZWQgdG8gY2xlYW4gdG9vbF9odWdlaGVscC5jCityZW0gMyAtIGZhaWxlZCB0byBjbGVhbiBjdXJsYnVpbGQuaAorcmVtCis6Y2xlYW4KKyAgcmVtIFJlbW92ZSBNYWtlZmlsZQorICBlY2hvICogJUNEJVxNYWtlZmlsZQorICBpZiBleGlzdCBNYWtlZmlsZSAoCisgICAgZGVsIE1ha2VmaWxlIDI+TlVMCisgICAgaWYgZXhpc3QgTWFrZWZpbGUgKAorICAgICAgZXhpdCAvQiAxCisgICAgKQorICApCisKKyAgcmVtIFJlbW92ZSB0b29sX2h1Z2VoZWxwLmMKKyAgZWNobyAqICVDRCVcc3JjXHRvb2xfaHVnZWhlbHAuYworICBpZiBleGlzdCBzcmNcdG9vbF9odWdlaGVscC5jICgKKyAgICBkZWwgc3JjXHRvb2xfaHVnZWhlbHAuYyAyPk5VTAorICAgIGlmIGV4aXN0IHNyY1x0b29sX2h1Z2VoZWxwLmMgKAorICAgICAgZXhpdCAvQiAyCisgICAgKQorICApCisKKyAgcmVtIFJlbW92ZSBjdXJsYnVpbGQuaAorICBlY2hvICogJUNEJVxpbmNsdWRlXGN1cmxcY3VybGJ1aWxkLmgKKyAgaWYgZXhpc3QgaW5jbHVkZVxjdXJsXGN1cmxidWlsZC5oICgKKyAgICBkZWwgaW5jbHVkZVxjdXJsXGN1cmxidWlsZC5oIDI+TlVMCisgICAgaWYgZXhpc3QgaW5jbHVkZVxjdXJsXGN1cmxidWlsZC5oICgKKyAgICAgIGV4aXQgL0IgMworICAgICkKKyAgKQorCisgIGV4aXQgL0IKKworcmVtIEZ1bmN0aW9uIHRvIGdlbmVyYXRlIHNyY1x0b29sX2h1Z2VoZWxwLmMKK3JlbQorcmVtIFJldHVybnM6CityZW0KK3JlbSAwIC0gZnVsbCB0b29sX2h1Z2VoZWxwLmMgZ2VuZXJhdGVkCityZW0gMSAtIHNpbXBsaWZpZWQgdG9vbF9odWdlaGVscC5jCityZW0gMiAtIGZhaWx1cmUKK3JlbQorOmdlbkh1Z2VIZWxwCisgIGlmICIlT1MlIiA9PSAiV2luZG93c19OVCIgc2V0bG9jYWwKKyAgc2V0IExDX0FMTD1DCisgIHNldCBST0ZGQ01EPQorICBzZXQgQkFTSUM9MQorCisgIGlmIGRlZmluZWQgSEFWRV9QRVJMICgKKyAgICBpZiBkZWZpbmVkIEhBVkVfR1JPRkYgKAorICAgICAgc2V0IFJPRkZDTUQ9Z3JvZmYgLW10dHktY2hhciAtVGFzY2lpIC1QLWMgLW1hbgorICAgICkgZWxzZSBpZiBkZWZpbmVkIEhBVkVfTlJPRkYgKAorICAgICAgc2V0IFJPRkZDTUQ9bnJvZmYgLWMgLVRhc2NpaSAtbWFuCisgICAgKQorICApCisKKyAgaWYgZGVmaW5lZCBST0ZGQ01EICgKKyAgICBlY2hvICNpbmNsdWRlICJ0b29sX3NldHVwLmgiPiBzcmNcdG9vbF9odWdlaGVscC5jCisgICAgZWNobyAjaW5jbHVkZSAidG9vbF9odWdlaGVscC5oIj4+IHNyY1x0b29sX2h1Z2VoZWxwLmMgCisKKyAgICBpZiBkZWZpbmVkIEhBVkVfR1pJUCAoCisgICAgICBlY2hvICNpZm5kZWYgSEFWRV9MSUJaPj4gc3JjXHRvb2xfaHVnZWhlbHAuYworICAgICkKKworICAgICVST0ZGQ01EJSBkb2NzXGN1cmwuMSAyPk5VTCB8IHBlcmwgc3JjXG1raGVscC5wbCBkb2NzXE1BTlVBTCA+PiBzcmNcdG9vbF9odWdlaGVscC5jCisgICAgaWYgZGVmaW5lZCBIQVZFX0daSVAgKAorICAgICAgZWNobyAjZWxzZT4+IHNyY1x0b29sX2h1Z2VoZWxwLmMKKyAgICAgICVST0ZGQ01EJSBkb2NzXGN1cmwuMSAyPk5VTCB8IHBlcmwgc3JjXG1raGVscC5wbCAtYyBkb2NzXE1BTlVBTCA+PiBzcmNcdG9vbF9odWdlaGVscC5jCisgICAgICBlY2hvICNlbmRpZiAvXiogSEFWRV9MSUJaIF4qLz4+IHNyY1x0b29sX2h1Z2VoZWxwLmMKKyAgICApCisKKyAgICBzZXQgQkFTSUM9MAorICApIGVsc2UgKAorICAgIGlmIGV4aXN0IHNyY1x0b29sX2h1Z2VoZWxwLmMuY3ZzICgKKyAgICAgIGNvcHkgL1kgc3JjXHRvb2xfaHVnZWhlbHAuYy5jdnMgc3JjXHRvb2xfaHVnZWhlbHAuYyAxPk5VTCAyPiYxCisgICAgKSBlbHNlICgKKyAgICAgIGVjaG8gI2luY2x1ZGUgInRvb2xfc2V0dXAuaCI+IHNyY1x0b29sX2h1Z2VoZWxwLmMKKyAgICAgIGVjaG8gI2luY2x1ZGUgInRvb2xfaHVnZWhlbHAuaGQiPj4gc3JjXHRvb2xfaHVnZWhlbHAuYworICAgICAgZWNoby4+PiBzcmNcdG9vbF9odWdlaGVscC5jCisgICAgICBlY2hvIHZvaWQgaHVnZWhlbHAodm9pZF4pPj4gc3JjXHRvb2xfaHVnZWhlbHAuYworICAgICAgZWNobyB7Pj4gc3JjXHRvb2xfaHVnZWhlbHAuYworICAgICAgZWNobyAjaWZkZWYgVVNFX01BTlVBTD4+IHNyY1x0b29sX2h1Z2VoZWxwLmMKKyAgICAgIGVjaG8gICBmcHV0cygiQnVpbHQtaW4gbWFudWFsIG5vdCBpbmNsdWRlZFxuIiwgc3Rkb3V0Xik7Pj4gc3JjXHRvb2xfaHVnZWhlbHAuYworICAgICAgZWNobyAjZW5kaWY+PiBzcmNcdG9vbF9odWdlaGVscC5jCisgICAgICBlY2hvIH0+PiBzcmNcdG9vbF9odWdlaGVscC5jCisgICAgKQorICApCisKKyAgZmluZHN0ciAiL0M6dm9pZCBodWdlaGVscCh2b2lkKSIgc3JjXHRvb2xfaHVnZWhlbHAuYyAxPk5VTCAyPiYxCisgIGlmIGVycm9ybGV2ZWwgMSAoCisgICAgaWYgIiVPUyUiID09ICJXaW5kb3dzX05UIiBlbmRsb2NhbAorICAgIGV4aXQgL0IgMgorICApCisKKyAgaWYgIiVCQVNJQyUiID09ICIxIiAoCisgICAgaWYgIiVPUyUiID09ICJXaW5kb3dzX05UIiBlbmRsb2NhbAorICAgIGV4aXQgL0IgMQorICApCisKKyAgaWYgIiVPUyUiID09ICJXaW5kb3dzX05UIiBlbmRsb2NhbAorICBleGl0IC9CIDAKKworcmVtIEZ1bmN0aW9uIHRvIGNsZWFuLXVwIGxvY2FsIHZhcmlhYmxlcyB1bmRlciBET1MsIFdpbmRvd3MgMy54IGFuZAorcmVtIFdpbmRvd3MgOXggYXMgc2V0bG9jYWwgaXNuJ3QgYXZhaWxhYmxlIHVudGlsIFdpbmRvd3MgTlQKK3JlbQorOmRvc0NsZWFudXAKKyAgc2V0IE1PREU9CisgIHNldCBIQVZFX0dST0ZGPQorICBzZXQgSEFWRV9OUk9GRj0KKyAgc2V0IEhBVkVfUEVSTD0KKyAgc2V0IEhBVkVfR1pJUD0KKyAgc2V0IEJBU0lDX0hVR0VIRUxQPQorICBzZXQgTENfQUxMCisgIHNldCBST0ZGQ01EPQorICBzZXQgQkFTSUM9CisKKyAgZXhpdCAvQgorCis6c3ludGF4CisgIHJlbSBEaXNwbGF5IHRoZSBoZWxwCisgIGVjaG8uCisgIGVjaG8gVXNhZ2U6IGJ1aWxkY29uZiBbLWNsZWFuXQorICBlY2hvLgorICBlY2hvIC1jbGVhbiAgICAtIFJlbW92ZXMgdGhlIGZpbGVzCisgIGdvdG8gZXJyb3IKKworOnVua25vd24KKyAgZWNoby4KKyAgZWNobyBFcnJvcjogVW5rbm93biBhcmd1bWVudCAnJTEnCisgIGdvdG8gZXJyb3IKKworOm5vcmVwbworICBlY2hvLgorICBlY2hvIEVycm9yOiBUaGlzIGJhdGNoIGZpbGUgc2hvdWxkIG9ubHkgYmUgdXNlZCB3aXRoIGEgY3VybCBnaXQgcmVwb3NpdG9yeQorICBnb3RvIGVycm9yCisKKzpub2dlbm1ha2VmaWxlCisgIGVjaG8uCisgIGVjaG8gRXJyb3I6IFVuYWJsZSB0byBnZW5lcmF0ZSBNYWtlZmlsZQorICBnb3RvIGVycm9yCisKKzpub2dlbmh1Z2VoZWxwCisgIGVjaG8uCisgIGVjaG8gRXJyb3I6IFVuYWJsZSB0byBnZW5lcmF0ZSBzcmNcdG9vbF9odWdlaGVscC5jCisgIGdvdG8gZXJyb3IKKworOm5vZ2VuY3VybGJ1aWxkCisgIGVjaG8uCisgIGVjaG8gRXJyb3I6IFVuYWJsZSB0byBnZW5lcmF0ZSBpbmNsdWRlXGN1cmxcY3VybGJ1aWxkLmgKKyAgZ290byBlcnJvcgorCis6bm9jbGVhbm1ha2VmaWxlCisgIGVjaG8uCisgIGVjaG8gRXJyb3I6IFVuYWJsZSB0byBjbGVhbiBNYWtlZmlsZQorICBnb3RvIGVycm9yCisKKzpub2NsZWFuaHVnZWhlbHAKKyAgZWNoby4KKyAgZWNobyBFcnJvcjogVW5hYmxlIHRvIGNsZWFuIHNyY1x0b29sX2h1Z2VoZWxwLmMKKyAgZ290byBlcnJvcgorCis6bm9jbGVhbmN1cmxidWlsZAorICBlY2hvLgorICBlY2hvIEVycm9yOiBVbmFibGUgdG8gY2xlYW4gaW5jbHVkZVxjdXJsXGN1cmxidWlsZC5oCisgIGdvdG8gZXJyb3IKKworOndhcm5pbmcKKyAgZWNoby4KKyAgZWNobyBXYXJuaW5nOiBUaGUgY3VybCBtYW51YWwgY291bGQgbm90IGJlIGludGVncmF0ZWQgaW4gdGhlIHNvdXJjZS4gVGhpcyBtZWFucyB3aGVuCisgIGVjaG8geW91IGJ1aWxkIGN1cmwgdGhlIG1hbnVhbCB3aWxsIG5vdCBiZSBhdmFpbGFibGUgKGN1cmwgLS1tYW5eKS4gSW50ZWdyYXRpb24gb2YKKyAgZWNobyB0aGUgbWFudWFsIGlzIG5vdCByZXF1aXJlZCBhbmQgYSBzdW1tYXJ5IG9mIHRoZSBvcHRpb25zIHdpbGwgc3RpbGwgYmUgYXZhaWxhYmxlCisgIGVjaG8gKGN1cmwgLS1oZWxwXikuIFRvIGludGVncmF0ZSB0aGUgbWFudWFsIHlvdXIgUEFUSCBpcyByZXF1aXJlZCB0byBoYXZlCisgIGVjaG8gZ3JvZmYvbnJvZmYsIHBlcmwgYW5kIG9wdGlvbmFsbHkgZ3ppcCBmb3IgY29tcHJlc3Npb24uCisgIGdvdG8gc3VjY2VzcworCis6ZXJyb3IKKyAgaWYgIiVPUyUiID09ICJXaW5kb3dzX05UIiAoCisgICAgZW5kbG9jYWwKKyAgKSBlbHNlICgKKyAgICBjYWxsIDpkb3NDbGVhbnVwCisgICkKKyAgZXhpdCAvQiAxCisKKzpzdWNjZXNzCisgIGlmICIlT1MlIiA9PSAiV2luZG93c19OVCIgKAorICAgIGVuZGxvY2FsCisgICkgZWxzZSAoCisgICAgY2FsbCA6ZG9zQ2xlYW51cAorICApCisgIGV4aXQgL0IgMApkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCmluZGV4IGE1ZThiNGMuLmRhMGU5ZDggMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYworKysgYi9jb25maWd1cmUuYWMKQEAgLTUsMTEgKzUsMTEgQEAKICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAjCi0jIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisjIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAjCiAjIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAjCiAjIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTI0LDE0ICsyNCwxNCBAQAogQUNfUFJFUkVRKDIuNTcpCiAKIGRubCBXZSBkb24ndCBrbm93IHRoZSB2ZXJzaW9uIG51bWJlciAic3RhdGljYWxseSIgc28gd2UgdXNlIGEgZGFzaCBoZXJlCi1BQ19JTklUKFtjdXJsXSwgWy1dLCBbYSBzdWl0YWJsZSBjdXJsIG1haWxpbmcgbGlzdDogaHR0cDovL2N1cmwuaGF4eC5zZS9tYWlsL10pCitBQ19JTklUKFtjdXJsXSwgWy1dLCBbYSBzdWl0YWJsZSBjdXJsIG1haWxpbmcgbGlzdDogaHR0cHM6Ly9jdXJsLmhheHguc2UvbWFpbC9dKQogCiBYQ19PVlJfWlo1MAogWENfT1ZSX1paNjAKIENVUkxfT1ZFUlJJREVfQVVUT0NPTkYKIAogZG5sIGNvbmZpZ3VyZSBzY3JpcHQgY29weXJpZ2h0Ci1BQ19DT1BZUklHSFQoW0NvcHlyaWdodCAoYykgMTk5OCAtIDIwMTQgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+CitBQ19DT1BZUklHSFQoW0NvcHlyaWdodCAoYykgMTk5OCAtIDIwMTYgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+CiBUaGlzIGNvbmZpZ3VyZSBzY3JpcHQgbWF5IGJlIGNvcGllZCwgZGlzdHJpYnV0ZWQgYW5kIG1vZGlmaWVkIHVuZGVyIHRoZQogdGVybXMgb2YgdGhlIGN1cmwgbGljZW5zZTsgc2VlIENPUFlJTkcgZm9yIG1vcmUgZGV0YWlsc10pCiAKQEAgLTM5LDYgKzM5LDcgQEAKIEFDX0NPTkZJR19IRUFERVJTKGxpYi9jdXJsX2NvbmZpZy5oIGluY2x1ZGUvY3VybC9jdXJsYnVpbGQuaCkKIEFDX0NPTkZJR19NQUNST19ESVIoW200XSkKIEFNX01BSU5UQUlORVJfTU9ERQorbTRfaWZkZWYoW0FNX1NJTEVOVF9SVUxFU10sIFtBTV9TSUxFTlRfUlVMRVMoW3llc10pXSkKIAogQ1VSTF9DSEVDS19PUFRJT05fREVCVUcKIENVUkxfQ0hFQ0tfT1BUSU9OX09QVElNSVpFCkBAIC00Nyw2ICs0OCw3IEBACiBDVVJMX0NIRUNLX09QVElPTl9DVVJMREVCVUcKIENVUkxfQ0hFQ0tfT1BUSU9OX1NZTUJPTF9ISURJTkcKIENVUkxfQ0hFQ0tfT1BUSU9OX0FSRVMKK0NVUkxfQ0hFQ0tfT1BUSU9OX1JUCiAKIFhDX0NIRUNLX1BBVEhfU0VQQVJBVE9SCiAKQEAgLTE0Nyw3ICsxNDksNyBAQAogCiBkbmwKIGRubCBpbml0aWFsaXplIGFsbCB0aGUgaW5mbyB2YXJpYWJsZXMKLSAgICBjdXJsX3NzbF9tc2c9Im5vICAgICAgKC0td2l0aC17c3NsLGdudXRscyxuc3MscG9sYXJzc2wsY3lhc3NsLGF4dGxzLHdpbnNzbCxkYXJ3aW5zc2x9ICkiCisgICAgY3VybF9zc2xfbXNnPSJubyAgICAgICgtLXdpdGgte3NzbCxnbnV0bHMsbnNzLHBvbGFyc3NsLG1iZWR0bHMsY3lhc3NsLGF4dGxzLHdpbnNzbCxkYXJ3aW5zc2x9ICkiCiAgICAgY3VybF9zc2hfbXNnPSJubyAgICAgICgtLXdpdGgtbGlic3NoMikiCiAgICBjdXJsX3psaWJfbXNnPSJubyAgICAgICgtLXdpdGgtemxpYikiCiAgICAgY3VybF9nc3NfbXNnPSJubyAgICAgICgtLXdpdGgtZ3NzYXBpKSIKQEAgLTE2NSw2ICsxNjcsNyBAQAogICAgY3VybF9ydHNwX21zZz0ibm8gICAgICAoLS1lbmFibGUtcnRzcCkiCiAgICBjdXJsX3J0bXBfbXNnPSJubyAgICAgICgtLXdpdGgtbGlicnRtcCkiCiAgIGN1cmxfbXRsbmtfbXNnPSJubyAgICAgICgtLXdpdGgtbGlibWV0YWxpbmspIgorICAgIGN1cmxfcHNsX21zZz0ibm8gICAgICAoLS13aXRoLWxpYnBzbCkiCiAKICAgICBpbml0X3NzbF9tc2c9JHtjdXJsX3NzbF9tc2d9CiAKQEAgLTMyOCw3ICszMzEsNyBAQAogCiBDVVJMX0NIRUNLX0hFQURFUl9XSU5ET1dTCiBDVVJMX0NIRUNLX05BVElWRV9XSU5ET1dTCi1jYXNlIFgtIiRhY19jdl9uYXRpdmVfd2luZG93cyIgaW4KK2Nhc2UgWC0iJGN1cmxfY3ZfbmF0aXZlX3dpbmRvd3MiIGluCiAgIFgteWVzKQogICAgIENVUkxfQ0hFQ0tfSEVBREVSX1dJTlNPQ0sKICAgICBDVVJMX0NIRUNLX0hFQURFUl9XSU5TT0NLMgpAQCAtMzM3LDExICszNDAsMTEgQEAKICAgICBDVVJMX0NIRUNLX0hFQURFUl9XSU5CRVIKICAgICA7OwogICAqKQotICAgIGFjX2N2X2hlYWRlcl93aW5zb2NrX2g9Im5vIgotICAgIGFjX2N2X2hlYWRlcl93aW5zb2NrMl9oPSJubyIKLSAgICBhY19jdl9oZWFkZXJfd3MydGNwaXBfaD0ibm8iCi0gICAgYWNfY3ZfaGVhZGVyX3dpbmxkYXBfaD0ibm8iCi0gICAgYWNfY3ZfaGVhZGVyX3dpbmJlcl9oPSJubyIKKyAgICBjdXJsX2N2X2hlYWRlcl93aW5zb2NrX2g9Im5vIgorICAgIGN1cmxfY3ZfaGVhZGVyX3dpbnNvY2syX2g9Im5vIgorICAgIGN1cmxfY3ZfaGVhZGVyX3dzMnRjcGlwX2g9Im5vIgorICAgIGN1cmxfY3ZfaGVhZGVyX3dpbmxkYXBfaD0ibm8iCisgICAgY3VybF9jdl9oZWFkZXJfd2luYmVyX2g9Im5vIgogICAgIDs7CiBlc2FjCiBDVVJMX0NIRUNLX1dJTjMyX0xBUkdFRklMRQpAQCAtNzMxLDggKzczNCw4IEBACiBpZiB0ZXN0ICIkSEFWRV9HRVRIT1NUQllOQU1FIiAhPSAiMSIKIHRoZW4KICAgZG5sIFRoaXMgaXMgZm9yIHdpbnNvY2sgc3lzdGVtcwotICBpZiB0ZXN0ICIkYWNfY3ZfaGVhZGVyX3dpbmRvd3NfaCIgPSAieWVzIjsgdGhlbgotICAgIGlmIHRlc3QgIiRhY19jdl9oZWFkZXJfd2luc29ja19oIiA9ICJ5ZXMiOyB0aGVuCisgIGlmIHRlc3QgIiRjdXJsX2N2X2hlYWRlcl93aW5kb3dzX2giID0gInllcyI7IHRoZW4KKyAgICBpZiB0ZXN0ICIkY3VybF9jdl9oZWFkZXJfd2luc29ja19oIiA9ICJ5ZXMiOyB0aGVuCiAgICAgICBjYXNlICRob3N0IGluCiAgICAgICAgICotKi1taW5ndzMyY2UqKQogICAgICAgICAgIHdpbnNvY2tfTElCPSItbHdpbnNvY2siCkBAIC03NDIsNyArNzQ1LDcgQEAKICAgICAgICAgICA7OwogICAgICAgZXNhYwogICAgIGZpCi0gICAgaWYgdGVzdCAiJGFjX2N2X2hlYWRlcl93aW5zb2NrMl9oIiA9ICJ5ZXMiOyB0aGVuCisgICAgaWYgdGVzdCAiJGN1cmxfY3ZfaGVhZGVyX3dpbnNvY2syX2giID0gInllcyI7IHRoZW4KICAgICAgIHdpbnNvY2tfTElCPSItbHdzMl8zMiIKICAgICBmaQogICAgIGlmIHRlc3QgISAteiAiJHdpbnNvY2tfTElCIjsgdGhlbgpAQCAtODQwLDE3ICs4NDMsNiBAQAogICBBQ19NU0dfRVJST1IoW2NvdWxkbid0IGZpbmQgbGlicmFyaWVzIGZvciBnZXRob3N0YnluYW1lKCldKQogZmkKIAotZG5sIHJlc29sdmUgbGliPwotQUNfQ0hFQ0tfRlVOQyhzdHJjYXNlY21wLCAsIFsgQUNfQ0hFQ0tfTElCKHJlc29sdmUsIHN0cmNhc2VjbXApIF0pCi0KLWlmIHRlc3QgIiRhY19jdl9saWJfcmVzb2x2ZV9zdHJjYXNlY21wIiA9ICIkYWNfY3ZfZnVuY19zdHJjYXNlY21wIjsgdGhlbgotICBBQ19DSEVDS19MSUIocmVzb2x2ZSwgc3RyY2FzZWNtcCwKLSAgICAgICAgICAgICAgW0xJQlM9Ii1scmVzb2x2ZSAkTElCUyJdLAotICAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICAgLWxuc2wpCi1maQotYWNfY3ZfZnVuY19zdHJjYXNlY21wPSJubyIKLQogQ1VSTF9DSEVDS19MSUJTX0NPTk5FQ1QKIAogQ1VSTF9ORVRXT1JLX0xJQlM9JExJQlMKQEAgLTk4OCw3ICs5ODAsNyBAQAogICBDVVJMX0NIRUNLX0hFQURFUl9MREFQX1NTTAogCiAgIGlmIHRlc3QgLXogIiRMREFQTElCTkFNRSIgOyB0aGVuCi0gICAgaWYgdGVzdCAiJGFjX2N2X25hdGl2ZV93aW5kb3dzIiA9ICJ5ZXMiOyB0aGVuCisgICAgaWYgdGVzdCAiJGN1cmxfY3ZfbmF0aXZlX3dpbmRvd3MiID0gInllcyI7IHRoZW4KICAgICAgIGRubCBXaW5kb3dzIHVzZXMgYSBzaW5nbGUgYW5kIHVuaXF1ZSBMREFQIGxpYnJhcnkgbmFtZQogICAgICAgTERBUExJQk5BTUU9IndsZGFwMzIiCiAgICAgICBMQkVSTElCTkFNRT0ibm8iCkBAIC0xMDcyLDcgKzEwNjQsMTEgQEAKIAogICBBQ19UUllfUlVOKFsgLyogaXMgQUZfSU5FVDYgYXZhaWxhYmxlPyAqLwogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2lmZGVmIEhBVkVfV0lOU09DSzJfSAorI2luY2x1ZGUgPHdpbnNvY2syLmg+CisjZWxzZQogI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNlbmRpZgogI2luY2x1ZGUgPHN0ZGxpYi5oPiAvKiBmb3IgZXhpdCgpICovCiBtYWluKCkKIHsKQEAgLTEwODYsOCArMTA4Miw4IEBACiAgIGlwdjY9eWVzLAogICBBQ19NU0dfUkVTVUxUKG5vKQogICBpcHY2PW5vLAotICBBQ19NU0dfUkVTVUxUKG5vKQotICBpcHY2PW5vCisgIEFDX01TR19SRVNVTFQoeWVzKQorICBpcHY2PXllcwogKSkKIAogaWYgdGVzdCAiJGlwdjYiID0gInllcyI7IHRoZW4KQEAgLTEwOTksNyArMTA5NSwxMiBAQAogICBBQ19NU0dfQ0hFQ0tJTkcoW2lmIHN0cnVjdCBzb2NrYWRkcl9pbjYgaGFzIHNpbjZfc2NvcGVfaWQgbWVtYmVyXSkKICAgQUNfVFJZX0NPTVBJTEUoWwogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2luY2x1ZGUgPG5ldGluZXQvaW4uaD5dICwKKyNpZmRlZiBIQVZFX1dJTlNPQ0syX0gKKyNpbmNsdWRlIDx3aW5zb2NrMi5oPgorI2luY2x1ZGUgPHdzMnRjcGlwLmg+CisjZWxzZQorI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyNlbmRpZl0gLAogICBzdHJ1Y3Qgc29ja2FkZHJfaW42IHM7IHMuc2luNl9zY29wZV9pZCA9IDA7ICwgaGF2ZV9zaW42X3Njb3BlX2lkPXllcykKICAgaWYgdGVzdCAiJGhhdmVfc2luNl9zY29wZV9pZCIgPSB5ZXM7IHRoZW4KICAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQpAQCAtMTMyOSw3ICsxMzMwLDcgQEAKIEFDX01TR19DSEVDS0lORyhbd2hldGhlciB0byBlbmFibGUgV2luZG93cyBuYXRpdmUgU1NML1RMUyAoV2luZG93cyBuYXRpdmUgYnVpbGRzIG9ubHkpXSkKIGlmIHRlc3QgIiRjdXJsX3NzbF9tc2ciID0gIiRpbml0X3NzbF9tc2ciOyB0aGVuCiAgIGlmIHRlc3QgIngkT1BUX1dJTlNTTCIgIT0gInhubyIgICYmCi0gICAgIHRlc3QgIngkYWNfY3ZfbmF0aXZlX3dpbmRvd3MiID0gInh5ZXMiOyB0aGVuCisgICAgIHRlc3QgIngkY3VybF9jdl9uYXRpdmVfd2luZG93cyIgPSAieHllcyI7IHRoZW4KICAgICBBQ19NU0dfUkVTVUxUKHllcykKICAgICBBQ19ERUZJTkUoVVNFX1NDSEFOTkVMLCAxLCBbdG8gZW5hYmxlIFdpbmRvd3MgbmF0aXZlIFNTTC9UTFMgc3VwcG9ydF0pCiAgICAgQUNfU1VCU1QoVVNFX1NDSEFOTkVMLCBbMV0pCkBAIC0xMzg4LDYgKzEzODksMjQgQEAKICAgQ0xFQU5DUFBGTEFHUz0iJENQUEZMQUdTIgogICBDTEVBTkxJQlM9IiRMSUJTIgogCisgIGRubCBUaGlzIGlzIGZvciBNc3lzL01pbmd3CisgIGNhc2UgJGhvc3QgaW4KKyAgICAqLSotbXN5cyogfCAqLSotbWluZ3cqKQorICAgICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgZ2RpMzJdKQorICAgICAgbXlfYWNfc2F2ZV9MSUJTPSRMSUJTCisgICAgICBMSUJTPSItbGdkaTMyICRMSUJTIgorICAgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDx3aW5kZWYuaD4KKyAgICAgICAgICAgICAgICAgICAjaW5jbHVkZSA8d2luZ2RpLmg+XSwKKyAgICAgICAgICAgICAgICAgICBbR2RpRmx1c2goKTtdLAorICAgICAgICAgICAgICAgICAgIFsgZG5sIHdvcmtlZCEKKyAgICAgICAgICAgICAgICAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKV0sCisgICAgICAgICAgICAgICAgICAgWyBkbmwgZmFpbGVkLCByZXN0b3JlIExJQlMKKyAgICAgICAgICAgICAgICAgICBMSUJTPSRteV9hY19zYXZlX0xJQlMKKyAgICAgICAgICAgICAgICAgICBBQ19NU0dfUkVTVUxUKG5vKV0KKyAgICAgICAgICAgICAgICAgICkKKyAgICAgIDs7CisgIGVzYWMKKwogICBjYXNlICIkT1BUX1NTTCIgaW4KICAgeWVzKQogICAgIGRubCAtLXdpdGgtc3NsICh3aXRob3V0IHBhdGgpIHVzZWQKQEAgLTE0NjYsMzEgKzE0ODUsMTMgQEAKICAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAkU1NMX0NQUEZMQUdTIgogICBMREZMQUdTPSIkTERGTEFHUyAkU1NMX0xERkxBR1MiCiAKLSAgZG5sIFRoaXMgaXMgZm9yIE1zeXMvTWluZ3cKLSAgY2FzZSAkaG9zdCBpbgotICAgICotKi1tc3lzKiB8ICotKi1taW5ndyopCi0gICAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBnZGkzMl0pCi0gICAgICBteV9hY19zYXZlX0xJQlM9JExJQlMKLSAgICAgIExJQlM9Ii1sZ2RpMzIgJExJQlMiCi0gICAgICBBQ19UUllfTElOSyhbI2luY2x1ZGUgPHdpbmRlZi5oPgotICAgICAgICAgICAgICAgICAgICNpbmNsdWRlIDx3aW5nZGkuaD5dLAotICAgICAgICAgICAgICAgICAgIFtHZGlGbHVzaCgpO10sCi0gICAgICAgICAgICAgICAgICAgWyBkbmwgd29ya2VkIQotICAgICAgICAgICAgICAgICAgIEFDX01TR19SRVNVTFQoW3llc10pXSwKLSAgICAgICAgICAgICAgICAgICBbIGRubCBmYWlsZWQsIHJlc3RvcmUgTElCUwotICAgICAgICAgICAgICAgICAgIExJQlM9JG15X2FjX3NhdmVfTElCUwotICAgICAgICAgICAgICAgICAgIEFDX01TR19SRVNVTFQobm8pXQotICAgICAgICAgICAgICAgICAgKQotICAgICAgOzsKLSAgZXNhYwotCi0gIEFDX0NIRUNLX0xJQihjcnlwdG8sIENSWVBUT19sb2NrLFsKKyAgQUNfQ0hFQ0tfTElCKGNyeXB0bywgSE1BQ19VcGRhdGUsWwogICAgICBIQVZFQ1JZUFRPPSJ5ZXMiCiAgICAgIExJQlM9Ii1sY3J5cHRvICRMSUJTIgogICAgICBdLFsKICAgICAgTERGTEFHUz0iJENMRUFOTERGTEFHUyAtTCRMSUJfT1BFTlNTTCIKICAgICAgQ1BQRkxBR1M9IiRDTEVBTkNQUEZMQUdTIC1JJFBSRUZJWF9PUEVOU1NML2luY2x1ZGUvb3BlbnNzbCAtSSRQUkVGSVhfT1BFTlNTTC9pbmNsdWRlIgotICAgICBBQ19DSEVDS19MSUIoY3J5cHRvLCBITUFDX0luaXQsWworICAgICBBQ19DSEVDS19MSUIoY3J5cHRvLCBITUFDX0luaXRfZXgsWwogICAgICAgIEhBVkVDUllQVE89InllcyIKICAgICAgICBMSUJTPSItbGNyeXB0byAkTElCUyJdLCBbCiAgICAgICAgTERGTEFHUz0iJENMRUFOTERGTEFHUyIKQEAgLTE1MDEsNiArMTUwMiw0NiBAQAogCiAKICAgaWYgdGVzdCBYIiRIQVZFQ1JZUFRPIiA9IFgieWVzIjsgdGhlbgorICAgICBBQ19NU0dfQ0hFQ0tJTkcoW09wZW5TU0wgbGlua2luZyB3aXRob3V0IC1sZGxdKQorICAgICBzYXZlZF9saWJzPSRMSUJTCisgICAgIEFDX1RSWV9MSU5LKAorICAgICAgICBbCisgICAgICAgICAgI2luY2x1ZGUgPG9wZW5zc2wvZXZwLmg+CisgICAgICAgIF0sCisgICAgICAgIFsKKyAgICAgICAgICBTU0xlYXlfYWRkX2FsbF9hbGdvcml0aG1zKCk7CisgICAgICAgIF0sCisgICAgICAgIFsKKyAgICAgICAgICBBQ19NU0dfUkVTVUxUKHllcykKKyAgICAgICAgICBMSUJTPSIkc2F2ZWRfbGlicyIKKyAgICAgICAgXSwKKyAgICAgICAgWworICAgICAgICAgIEFDX01TR19SRVNVTFQobm8pCisgICAgICAgICAgQUNfTVNHX0NIRUNLSU5HKFtPcGVuU1NMIGxpbmtpbmcgd2l0aCAtbGRsXSkKKyAgICAgICAgICBMSUJTPSItbGRsICRMSUJTIgorICAgICAgICAgIEFDX1RSWV9MSU5LKAorICAgICAgICAgIFsKKyAgICAgICAgICAgICNpbmNsdWRlIDxvcGVuc3NsL2V2cC5oPgorICAgICAgICAgIF0sCisgICAgICAgICAgWworICAgICAgICAgICAgU1NMZWF5X2FkZF9hbGxfYWxnb3JpdGhtcygpOworICAgICAgICAgIF0sCisgICAgICAgICAgWworICAgICAgICAgICAgQUNfTVNHX1JFU1VMVCh5ZXMpCisgICAgICAgICAgICBMSUJTPSIkc2F2ZWRfbGlicyAtbGRsIgorICAgICAgICAgIF0sCisgICAgICAgICAgWworICAgICAgICAgICAgQUNfTVNHX1JFU1VMVChubykKKyAgICAgICAgICAgIExJQlM9IiRzYXZlZF9saWJzIgorICAgICAgICAgIF0KKyAgICAgICAgICApCisKKyAgICAgICAgXQorICAgICApCisKKyAgZmkKKworICBpZiB0ZXN0IFgiJEhBVkVDUllQVE8iID0gWCJ5ZXMiOyB0aGVuCiAgICAgZG5sIFRoaXMgaXMgb25seSByZWFzb25hYmxlIHRvIGRvIGlmIGNyeXB0byBhY3R1YWxseSBpcyB0aGVyZTogY2hlY2sgZm9yCiAgICAgZG5sIFNTTCBsaWJzIE5PVEU6IGl0IGlzIGltcG9ydGFudCB0byBkbyB0aGlzIEFGVEVSIHRoZSBjcnlwdG8gbGliCiAKQEAgLTE1NzEsNyArMTYxMiw2IEBACiAgICAgZG5sIE9sZGVyIHZlcnNpb25zIG9mIEN5YXNzbCAoc29tZSB0aW1lIGJlZm9yZSAyLjkuNCkgZG9uJ3QgaGF2ZQogICAgIGRubCBTU0xfZ2V0X3NodXRkb3duIChidXQgdGhpcyBjaGVjayB3b24ndCBhY3R1YWxseSBkZXRlY3QgaXQgdGhlcmUKICAgICBkbmwgYXMgaXQncyBhIG1hY3JvIHRoYXQgbmVlZHMgdGhlIGhlYWRlciBmaWxlcyBiZSBpbmNsdWRlZCkKLSAgICBkbmwgQm9yaW5nU1NMIGRvZXNuJ3QgaGF2ZSBERVNfc2V0X29kZF9wYXJpdHkKIAogICAgIEFDX0NIRUNLX0ZVTkNTKCBSQU5EX3N0YXR1cyBcCiAgICAgICAgICAgICAgICAgICAgIFJBTkRfc2NyZWVuIFwKQEAgLTE1NzksMjQgKzE2MTksMjQgQEAKICAgICAgICAgICAgICAgICAgICAgRU5HSU5FX2NsZWFudXAgXAogICAgICAgICAgICAgICAgICAgICBDUllQVE9fY2xlYW51cF9hbGxfZXhfZGF0YSBcCiAgICAgICAgICAgICAgICAgICAgIFNTTF9nZXRfc2h1dGRvd24gXAotICAgICAgICAgICAgICAgICAgICBTU0x2Ml9jbGllbnRfbWV0aG9kIFwKLSAgICAgICAgICAgICAgICAgICAgREVTX3NldF9vZGRfcGFyaXR5ICkKKyAgICAgICAgICAgICAgICAgICAgU1NMdjJfY2xpZW50X21ldGhvZCApCiAKICAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBCb3JpbmdTU0xdKQogICAgIEFDX0NPTVBJTEVfSUZFTFNFKFsKLSAgICAgIEFDX0xBTkdfUFJPR1JBTShbWwotI2luY2x1ZGUgPG9wZW5zc2wvYmFzZS5oPgotICAgICAgXV0sW1sKLSNpZm5kZWYgT1BFTlNTTF9JU19CT1JJTkdTU0wKLSNlcnJvciBub3QgYm9yaW5nc3NsCi0jZW5kaWYKLSAgICAgIF1dKQorICAgICAgICBBQ19MQU5HX1BST0dSQU0oW1sKKyAgICAgICAgICAgICAgICAjaW5jbHVkZSA8b3BlbnNzbC9iYXNlLmg+CisgICAgICAgICAgICAgICAgXV0sW1sKKyAgICAgICAgICAgICAgICAjaWZuZGVmIE9QRU5TU0xfSVNfQk9SSU5HU1NMCisgICAgICAgICAgICAgICAgI2Vycm9yIG5vdCBib3Jpbmdzc2wKKyAgICAgICAgICAgICAgICAjZW5kaWYKKyAgICAgICBdXSkKICAgICBdLFsKLSAgICAgIEFDX01TR19SRVNVTFQoW3llc10pCi0gICAgICBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9CT1JJTkdTU0wsIDEsCi0gICAgICAgIFtEZWZpbmUgdG8gMSBpZiB1c2luZyBCb3JpbmdTU0wuXSkKKyAgICAgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKKyAgICAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfQk9SSU5HU1NMLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgW0RlZmluZSB0byAxIGlmIHVzaW5nIEJvcmluZ1NTTC5dKQorICAgICAgICBjdXJsX3NzbF9tc2c9ImVuYWJsZWQgKEJvcmluZ1NTTCkiCiAgICAgXSxbCi0gICAgICBBQ19NU0dfUkVTVUxUKFtub10pCisgICAgICAgIEFDX01TR19SRVNVTFQoW25vXSkKICAgICBdKQogCiAgICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgbGlicmVzc2xdKQpAQCAtMTc4MCwxMiArMTgyMCwxMyBAQAogICAgICAgICAgIGRubCBsaW5rZXIgZG9lc24ndCBzZWFyY2ggdGhyb3VnaCwgd2UgbmVlZCB0byBhZGQgaXQgdG8KICAgICAgICAgICBkbmwgTERfTElCUkFSWV9QQVRIIHRvIHByZXZlbnQgZnVydGhlciBjb25maWd1cmUgdGVzdHMgdG8gZmFpbAogICAgICAgICAgIGRubCBkdWUgdG8gdGhpcwotICAgICAgICAgIGlmIHRlc3QgIngkY3Jvc3NfY29tcGlsaW5nIiAhPSAieHllcyI7IHRoZW4gCisgICAgICAgICAgaWYgdGVzdCAieCRjcm9zc19jb21waWxpbmciICE9ICJ4eWVzIjsgdGhlbgogICAgICAgICAgICAgTERfTElCUkFSWV9QQVRIPSIkTERfTElCUkFSWV9QQVRIOiRndGxzbGliIgogICAgICAgICAgICAgZXhwb3J0IExEX0xJQlJBUllfUEFUSAogICAgICAgICAgICAgQUNfTVNHX05PVElDRShbQWRkZWQgJGd0bHNsaWIgdG8gTERfTElCUkFSWV9QQVRIXSkKICAgICAgICAgICBmaQogICAgICAgICBmaQorICAgICAgICBBQ19DSEVDS19GVU5DUyhnbnV0bHNfY2VydGlmaWNhdGVfc2V0X3g1MDlfa2V5X2ZpbGUyKQogICAgICAgZmkKIAogICAgIGZpCkBAIC0xOTI0LDYgKzE5NjUsOTMgQEAKIGZpCiAKIGRubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgY2hlY2sgZm9yIG1iZWRUTFMKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK09QVF9NQkVEVExTPW5vCisKK19jcHBmbGFncz0kQ1BQRkxBR1MKK19sZGZsYWdzPSRMREZMQUdTCitBQ19BUkdfV0lUSChtYmVkdGxzLGRubAorQUNfSEVMUF9TVFJJTkcoWy0td2l0aC1tYmVkdGxzPVBBVEhdLFt3aGVyZSB0byBsb29rIGZvciBtYmVkVExTLCBQQVRIIHBvaW50cyB0byB0aGUgaW5zdGFsbGF0aW9uIHJvb3RdKQorQUNfSEVMUF9TVFJJTkcoWy0td2l0aG91dC1tYmVkdGxzXSwgW2Rpc2FibGUgbWJlZFRMUyBkZXRlY3Rpb25dKSwKKyAgT1BUX01CRURUTFM9JHdpdGh2YWwpCisKK2lmIHRlc3QgIiRjdXJsX3NzbF9tc2ciID0gIiRpbml0X3NzbF9tc2ciOyB0aGVuCisKKyAgaWYgdGVzdCBYIiRPUFRfTUJFRFRMUyIgIT0gWG5vOyB0aGVuCisKKyAgICBpZiB0ZXN0ICIkT1BUX01CRURUTFMiID0gInllcyI7IHRoZW4KKyAgICAgIE9QVF9NQkVEVExTPSIiCisgICAgZmkKKworICAgIGlmIHRlc3QgLXogIiRPUFRfTUJFRFRMUyIgOyB0aGVuCisgICAgICBkbmwgY2hlY2sgZm9yIGxpYiBmaXJzdCB3aXRob3V0IHNldHRpbmcgYW55IG5ldyBwYXRoCisKKyAgICAgIEFDX0NIRUNLX0xJQihtYmVkdGxzLCBtYmVkdGxzX2hhdmVnZV9pbml0LAorICAgICAgZG5sIGxpYm1iZWR0bHMgZm91bmQsIHNldCB0aGUgdmFyaWFibGUKKyAgICAgICBbCisgICAgICAgICBBQ19ERUZJTkUoVVNFX01CRURUTFMsIDEsIFtpZiBtYmVkVExTIGlzIGVuYWJsZWRdKQorICAgICAgICAgQUNfU1VCU1QoVVNFX01CRURUTFMsIFsxXSkKKyAgICAgICAgIE1CRURUTFNfRU5BQkxFRD0xCisgICAgICAgICBVU0VfTUJFRFRMUz0ieWVzIgorICAgICAgICAgY3VybF9zc2xfbXNnPSJlbmFibGVkIChtYmVkVExTKSIKKyAgICAgICAgXSwgW10sIC1sbWJlZHg1MDkgLWxtYmVkY3J5cHRvKQorICAgIGZpCisKKyAgICBhZGRsZD0iIgorICAgIGFkZGxpYj0iIgorICAgIGFkZGNmbGFncz0iIgorICAgIG1iZWR0bHNsaWI9IiIKKworICAgIGlmIHRlc3QgIngkVVNFX01CRURUTFMiICE9ICJ4eWVzIjsgdGhlbgorICAgICAgZG5sIGFkZCB0aGUgcGF0aCBhbmQgdGVzdCBhZ2FpbgorICAgICAgYWRkbGQ9LUwkT1BUX01CRURUTFMvbGliJGxpYnN1ZmYKKyAgICAgIGFkZGNmbGFncz0tSSRPUFRfTUJFRFRMUy9pbmNsdWRlCisgICAgICBtYmVkdGxzbGliPSRPUFRfTUJFRFRMUy9saWIkbGlic3VmZgorCisgICAgICBMREZMQUdTPSIkTERGTEFHUyAkYWRkbGQiCisgICAgICBpZiB0ZXN0ICIkYWRkY2ZsYWdzIiAhPSAiLUkvdXNyL2luY2x1ZGUiOyB0aGVuCisgICAgICAgICBDUFBGTEFHUz0iJENQUEZMQUdTICRhZGRjZmxhZ3MiCisgICAgICBmaQorCisgICAgICBBQ19DSEVDS19MSUIobWJlZHRscywgbWJlZHRsc19zc2xfaW5pdCwKKyAgICAgICBbCisgICAgICAgQUNfREVGSU5FKFVTRV9NQkVEVExTLCAxLCBbaWYgbWJlZFRMUyBpcyBlbmFibGVkXSkKKyAgICAgICBBQ19TVUJTVChVU0VfTUJFRFRMUywgWzFdKQorICAgICAgIE1CRURUTFNfRU5BQkxFRD0xCisgICAgICAgVVNFX01CRURUTFM9InllcyIKKyAgICAgICBjdXJsX3NzbF9tc2c9ImVuYWJsZWQgKG1iZWRUTFMpIgorICAgICAgIF0sCisgICAgICAgWworICAgICAgICAgQ1BQRkxBR1M9JF9jcHBmbGFncworICAgICAgICAgTERGTEFHUz0kX2xkZmxhZ3MKKyAgICAgICBdLCAtbG1iZWR4NTA5IC1sbWJlZGNyeXB0bykKKyAgICBmaQorCisgICAgaWYgdGVzdCAieCRVU0VfTUJFRFRMUyIgPSAieHllcyI7IHRoZW4KKyAgICAgIEFDX01TR19OT1RJQ0UoW2RldGVjdGVkIG1iZWRUTFNdKQorCisgICAgICBMSUJTPSItbG1iZWR0bHMgLWxtYmVkeDUwOSAtbG1iZWRjcnlwdG8gJExJQlMiCisKKyAgICAgIGlmIHRlc3QgLW4gIiRtYmVkdGxzbGliIjsgdGhlbgorICAgICAgICBkbmwgd2hlbiBzaGFyZWQgbGlicyB3ZXJlIGZvdW5kIGluIGEgcGF0aCB0aGF0IHRoZSBydW4tdGltZQorICAgICAgICBkbmwgbGlua2VyIGRvZXNuJ3Qgc2VhcmNoIHRocm91Z2gsIHdlIG5lZWQgdG8gYWRkIGl0IHRvCisgICAgICAgIGRubCBMRF9MSUJSQVJZX1BBVEggdG8gcHJldmVudCBmdXJ0aGVyIGNvbmZpZ3VyZSB0ZXN0cyB0byBmYWlsCisgICAgICAgIGRubCBkdWUgdG8gdGhpcworICAgICAgICBpZiB0ZXN0ICJ4JGNyb3NzX2NvbXBpbGluZyIgIT0gInh5ZXMiOyB0aGVuCisgICAgICAgICAgTERfTElCUkFSWV9QQVRIPSIkTERfTElCUkFSWV9QQVRIOiRtYmVkdGxzbGliIgorICAgICAgICAgIGV4cG9ydCBMRF9MSUJSQVJZX1BBVEgKKyAgICAgICAgICBBQ19NU0dfTk9USUNFKFtBZGRlZCAkbWJlZHRsc2xpYiB0byBMRF9MSUJSQVJZX1BBVEhdKQorICAgICAgICBmaQorICAgICAgZmkKKyAgICBmaQorCisgIGZpIGRubCBtYmVkVExTIG5vdCBkaXNhYmxlZAorCitmaQorCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogZG5sIGNoZWNrIGZvciBDeWFTU0wKIGRubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKQEAgLTIwMjYsMTEgKzIxNTQsMTEgQEAKIAldXSkKICAgICAgIF0sWwogICAgICAgICAgQUNfTVNHX1JFU1VMVCh5ZXMpCi0gICAgICAgICBBQ19ERUZJTkUoVVNFX0NZQVNTTCwgMSwgW2lmIEN5YVNTTCBpcyBlbmFibGVkXSkKKyAgICAgICAgIEFDX0RFRklORShVU0VfQ1lBU1NMLCAxLCBbaWYgQ3lhU1NML1dvbGZTU0wgaXMgZW5hYmxlZF0pCiAgICAgICAgICBBQ19TVUJTVChVU0VfQ1lBU1NMLCBbMV0pCiAgICAgICAgICBDWUFTU0xfRU5BQkxFRD0xCiAgICAgICAgICBVU0VfQ1lBU1NMPSJ5ZXMiCi0gICAgICAgICBjdXJsX3NzbF9tc2c9ImVuYWJsZWQgKEN5YVNTTCkiCisgICAgICAgICBjdXJsX3NzbF9tc2c9ImVuYWJsZWQgKFdvbGZTU0wpIgogICAgICAgIF0sCiAgICAgICAgWwogICAgICAgICAgQUNfTVNHX1JFU1VMVChubykKQEAgLTIwNDIsNyArMjE3MCw3IEBACiAgICAgZmkKIAogICAgIGlmIHRlc3QgIngkVVNFX0NZQVNTTCIgPSAieHllcyI7IHRoZW4KLSAgICAgIEFDX01TR19OT1RJQ0UoW2RldGVjdGVkIEN5YVNTTF0pCisgICAgICBBQ19NU0dfTk9USUNFKFtkZXRlY3RlZCAkY3lhc3NsbGlibmFtZV0pCiAKICAgICAgIGRubCBjeWFzc2wvY3Rhb2NyeXB0L3R5cGVzLmggbmVlZHMgU0laRU9GX0xPTkdfTE9ORyBkZWZpbmVkIQogICAgICAgQUNfQ0hFQ0tfU0laRU9GKGxvbmcgbG9uZykKQEAgLTIwNTUsNiArMjE4MywxOSBAQAogCiAgICAgICBMSUJTPSItbCRjeWFzc2xsaWJuYW1lIC1sbSAkTElCUyIKIAorICAgICAgaWYgdGVzdCAieCRjeWFzc2xsaWJuYW1lIiA9ICJ4d29sZnNzbCI7IHRoZW4KKyAgICAgICAgZG5sIFJlY2VudCBXb2xmU1NMIHZlcnNpb25zIGJ1aWxkIHdpdGhvdXQgU1NMdjMgYnkgZGVmYXVsdAorICAgICAgICBkbmwgV29sZlNTTCBuZWVkcyBjb25maWd1cmUgLS1lbmFibGUtb3BlbnNzbGV4dHJhIHRvIGhhdmUgKmdldF9wZWVyKgorICAgICAgICBBQ19DSEVDS19GVU5DUyh3b2xmU1NMdjNfY2xpZW50X21ldGhvZCBcCisgICAgICAgICAgICAgICAgICAgICAgIHdvbGZTU0xfQ1RYX1VzZVN1cHBvcnRlZEN1cnZlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgd29sZlNTTF9nZXRfcGVlcl9jZXJ0aWZpY2F0ZSBcCisgICAgICAgICAgICAgICAgICAgICAgIHdvbGZTU0xfVXNlQUxQTikKKyAgICAgIGVsc2UKKyAgICAgICAgZG5sIEN5YXNzbCBuZWVkcyBjb25maWd1cmUgLS1lbmFibGUtb3BlbnNzbGV4dHJhIHRvIGhhdmUgKmdldF9wZWVyKgorICAgICAgICBBQ19DSEVDS19GVU5DUyhDeWFTU0xfQ1RYX1VzZVN1cHBvcnRlZEN1cnZlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgQ3lhU1NMX2dldF9wZWVyX2NlcnRpZmljYXRlKQorICAgICAgZmkKKwogICAgICAgaWYgdGVzdCAtbiAiJGN5YXNzbGxpYiI7IHRoZW4KICAgICAgICAgZG5sIHdoZW4gc2hhcmVkIGxpYnMgd2VyZSBmb3VuZCBpbiBhIHBhdGggdGhhdCB0aGUgcnVuLXRpbWUKICAgICAgICAgZG5sIGxpbmtlciBkb2Vzbid0IHNlYXJjaCB0aHJvdWdoLCB3ZSBuZWVkIHRvIGFkZCBpdCB0bwpAQCAtMjI0Nyw3ICsyMzg4LDcgQEAKICAgZmkKIGZpCiAKLWlmIHRlc3QgIngkT1BFTlNTTF9FTkFCTEVEJEdOVVRMU19FTkFCTEVEJE5TU19FTkFCTEVEJFBPTEFSU1NMX0VOQUJMRUQkQVhUTFNfRU5BQkxFRCRDWUFTU0xfRU5BQkxFRCRXSU5TU0xfRU5BQkxFRCREQVJXSU5TU0xfRU5BQkxFRCIgPSAieCI7IHRoZW4KK2lmIHRlc3QgIngkT1BFTlNTTF9FTkFCTEVEJEdOVVRMU19FTkFCTEVEJE5TU19FTkFCTEVEJFBPTEFSU1NMX0VOQUJMRUQkTUJFRFRMU19FTkFCTEVEJEFYVExTX0VOQUJMRUQkQ1lBU1NMX0VOQUJMRUQkV0lOU1NMX0VOQUJMRUQkREFSV0lOU1NMX0VOQUJMRUQiID0gIngiOyB0aGVuCiAgIEFDX01TR19XQVJOKFtTU0wgZGlzYWJsZWQsIHlvdSB3aWxsIG5vdCBiZSBhYmxlIHRvIHVzZSBIVFRQUywgRlRQUywgTlRMTSBhbmQgbW9yZS5dKQogICBBQ19NU0dfV0FSTihbVXNlIC0td2l0aC1zc2wsIC0td2l0aC1nbnV0bHMsIC0td2l0aC1wb2xhcnNzbCwgLS13aXRoLWN5YXNzbCwgLS13aXRoLW5zcywgLS13aXRoLWF4dGxzLCAtLXdpdGgtd2luc3NsLCBvciAtLXdpdGgtZGFyd2luc3NsIHRvIGFkZHJlc3MgdGhpcy5dKQogZWxzZQpAQCAtMjI2Myw2ICsyNDA0LDI3IEBACiBDVVJMX0NIRUNLX0NBX0JVTkRMRQogCiBkbmwgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorZG5sIENoZWNrIGZvciBsaWJwc2wKK2RubCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK0FDX0FSR19XSVRIKGxpYnBzbCwKKyAgICAgICAgICAgQVNfSEVMUF9TVFJJTkcoWy0td2l0aG91dC1saWJwc2xdLAorICAgICAgICAgICBbZGlzYWJsZSBzdXBwb3J0IGZvciBsaWJwc2wgY29va2llIGNoZWNraW5nXSksCisgICAgICAgICAgIHdpdGhfbGlicHNsPSR3aXRodmFsLAorICAgICAgICAgICB3aXRoX2xpYnBzbD15ZXMpCitpZiB0ZXN0ICR3aXRoX2xpYnBzbCAhPSAibm8iOyB0aGVuCisgIEFDX1NFQVJDSF9MSUJTKHBzbF9idWlsdGluLCBwc2wsCisgICAgW2N1cmxfcHNsX21zZz0ieWVzIjsKKyAgICAgQUNfREVGSU5FKFtVU0VfTElCUFNMXSwgWzFdLCBbUFNMIHN1cHBvcnQgZW5hYmxlZF0pCisgICAgIF0sCisgICAgW2N1cmxfcHNsX21zZz0ibm8gICAgICAobGlicHNsIG5vdCBmb3VuZCkiOworICAgICBBQ19NU0dfV0FSTihbbGlicHNsIHdhcyBub3QgZm91bmRdKQorICAgICBdCisgICkKK2ZpCitBTV9DT05ESVRJT05BTChbVVNFX0xJQlBTTF0sIFt0ZXN0ICIkY3VybF9wc2xfbXNnIiA9ICJ5ZXMiXSkKKworZG5sICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIGRubCBDaGVjayBmb3IgbGlibWV0YWxpbmsKIGRubCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAKQEAgLTI4NzAsNiArMzAzMiwzMSBAQAogZmkKIAogZG5sICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK2RubCBDaGVjayBmb3IgenNoIGNvbXBsZXRpb24gcGF0aAorZG5sICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworT1BUX1pTSF9GUEFUSD1kZWZhdWx0CitBQ19BUkdfV0lUSCh6c2gtZnVuY3Rpb25zLWRpciwKK0FDX0hFTFBfU1RSSU5HKFstLXdpdGgtenNoLWZ1bmN0aW9ucy1kaXI9UEFUSF0sW0luc3RhbGwgenNoIGNvbXBsZXRpb25zIHRvIFBBVEhdKQorQUNfSEVMUF9TVFJJTkcoWy0td2l0aG91dC16c2gtZnVuY3Rpb25zLWRpcl0sW0RvIG5vdCBpbnN0YWxsIHpzaCBjb21wbGV0aW9uc10pLAorICBbT1BUX1pTSF9GUEFUSD0kd2l0aHZhbF0pCitjYXNlICIkT1BUX1pTSF9GUEFUSCIgaW4KKyAgbm8pCisgICAgZG5sIC0td2l0aG91dC16c2gtZnVuY3Rpb25zLWRpciBvcHRpb24gdXNlZAorICAgIDs7CisgIGRlZmF1bHR8eWVzKQorICAgIGRubCAtLXdpdGgtenNoLWZ1bmN0aW9ucy1kaXIgb3B0aW9uIHVzZWQgd2l0aG91dCBwYXRoCisgICAgWlNIX0ZVTkNUSU9OU19ESVI9IiRkYXRhcm9vdGRpci96c2gvc2l0ZS1mdW5jdGlvbnMiCisgICAgQUNfU1VCU1QoWlNIX0ZVTkNUSU9OU19ESVIpCisgICAgOzsKKyAgKikKKyAgICBkbmwgLS13aXRoLXpzaC1mdW5jdGlvbnMtZGlyIG9wdGlvbiB1c2VkIHdpdGggcGF0aAorICAgIFpTSF9GVU5DVElPTlNfRElSPSIkd2l0aHZhbCIKKyAgICBBQ19TVUJTVChaU0hfRlVOQ1RJT05TX0RJUikKKyAgICA7OworZXNhYworCitkbmwgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogZG5sIEJhY2sgdG8gIm5vcm1hbCIgY29uZmlndXJpbmcKIGRubCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAKQEAgLTI5NjEsNyArMzE0OCw3IEBACiBBQ19DSEVDS19TSVpFT0Yob2ZmX3QpCiAKIHNvbmFtZV9idW1wPW5vCi1pZiB0ZXN0IHgiJGFjX2N2X25hdGl2ZV93aW5kb3dzIiAhPSAieHllcyIgJiYKK2lmIHRlc3QgeCIkY3VybF9jdl9uYXRpdmVfd2luZG93cyIgIT0gInh5ZXMiICYmCiAgICB0ZXN0ICRhY19jdl9zaXplb2Zfb2ZmX3QgLW5lICRjdXJsX3NpemVvZl9jdXJsX29mZl90OyB0aGVuCiAgIEFDX01TR19XQVJOKFtUaGlzIGxpYmN1cmwgYnVpbHQgaXMgcHJvYmFibHkgbm90IEFCSSBjb21wYXRpYmxlIHdpdGggcHJldmlvdXNdKQogICBBQ19NU0dfV0FSTihbYnVpbGRzISBZb3UgTVVTVCByZWFkIGxpYi9SRUFETUUuY3VybF9vZmZfdCB0byBmaWd1cmUgaXQgb3V0Ll0pCkBAIC0zMTI5LDcgKzMzMTYsNyBAQAogQ1VSTF9DSEVDS19GVU5DX0dFVE5BTUVJTkZPCiAKIGlmIHRlc3QgIiRpcHY2IiA9ICJ5ZXMiOyB0aGVuCi0gIGlmIHRlc3QgIiRhY19jdl9mdW5jX2dldGFkZHJpbmZvIiA9ICJ5ZXMiOyB0aGVuCisgIGlmIHRlc3QgIiRjdXJsX2N2X2Z1bmNfZ2V0YWRkcmluZm8iID0gInllcyI7IHRoZW4KICAgICBBQ19ERUZJTkUoRU5BQkxFX0lQVjYsIDEsIFtEZWZpbmUgaWYgeW91IHdhbnQgdG8gZW5hYmxlIElQdjYgc3VwcG9ydF0pCiAgICAgSVBWNl9FTkFCTEVEPTEKICAgICBBQ19TVUJTVChJUFY2X0VOQUJMRUQpCkBAIC0zMTk2LDcgKzMzODMsNyBAQAogQ1VSTF9DSEVDS19MSUJfQVJFUwogQU1fQ09ORElUSU9OQUwoVVNFX0VNQkVEREVEX0FSRVMsIHRlc3QgeCRlbWJlZGRlZF9hcmVzID0geHllcykKIAotaWYgdGVzdCAieCRhY19jdl9uYXRpdmVfd2luZG93cyIgIT0gInh5ZXMiICYmCitpZiB0ZXN0ICJ4JGN1cmxfY3ZfbmF0aXZlX3dpbmRvd3MiICE9ICJ4eWVzIiAmJgogICAgdGVzdCAieCRlbmFibGVfc2hhcmVkIiA9ICJ4eWVzIjsgdGhlbgogICBidWlsZF9saWJob3N0bmFtZT15ZXMKIGVsc2UKQEAgLTMyMTEsNyArMzM5OCw3IEBACiBbT3B0aW9ucyAtLWVuYWJsZS10aHJlYWRlZC1yZXNvbHZlciBhbmQgLS1lbmFibGUtYXJlcyBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlXSkKIGZpCiAKLWlmIHRlc3QgIiR3YW50X3RocmVzIiA9ICJ5ZXMiOyB0aGVuCitpZiB0ZXN0ICIkd2FudF90aHJlcyIgPSAieWVzIiAmJiB0ZXN0ICIkZG9udHdhbnRfcnQiID0gIm5vIjsgdGhlbgogICBBQ19DSEVDS19IRUFERVIocHRocmVhZC5oLAogICAgIFsgQUNfREVGSU5FKEhBVkVfUFRIUkVBRF9ILCAxLCBbaWYgeW91IGhhdmUgPHB0aHJlYWQuaD5dKQogICAgICAgc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCkBAIC0zMjY2LDcgKzM0NTMsNyBAQAogQUNfSEVMUF9TVFJJTkcoWy0tZGlzYWJsZS1zc3BpXSxbRGlzYWJsZSBTU1BJXSksCiBbIGNhc2UgIiRlbmFibGV2YWwiIGluCiAgIHllcykKLSAgICAgICBpZiB0ZXN0ICIkYWNfY3ZfbmF0aXZlX3dpbmRvd3MiID0gInllcyI7IHRoZW4KKyAgICAgICBpZiB0ZXN0ICIkY3VybF9jdl9uYXRpdmVfd2luZG93cyIgPSAieWVzIjsgdGhlbgogICAgICAgICAgQUNfTVNHX1JFU1VMVCh5ZXMpCiAgICAgICAgICBBQ19ERUZJTkUoVVNFX1dJTkRPV1NfU1NQSSwgMSwgW3RvIGVuYWJsZSBTU1BJIHN1cHBvcnRdKQogICAgICAgICAgQUNfU1VCU1QoVVNFX1dJTkRPV1NfU1NQSSwgWzFdKQpAQCAtMzQ3OSw2ICszNjY2LDEwIEBACiAgIFNVUFBPUlRfRkVBVFVSRVM9IiRTVVBQT1JUX0ZFQVRVUkVTIEdTUy1BUEkiCiBmaQogCitpZiB0ZXN0ICJ4JGN1cmxfcHNsX21zZyIgPSAieHllcyI7IHRoZW4KKyAgU1VQUE9SVF9GRUFUVVJFUz0iJFNVUFBPUlRfRkVBVFVSRVMgUFNMIgorZmkKKwogaWYgdGVzdCAieCRDVVJMX0RJU0FCTEVfQ1JZUFRPX0FVVEgiICE9ICJ4MSIgLWEgXAogICAgIFwoICJ4JEhBVkVfR1NTQVBJIiA9ICJ4MSIgLW8gIngkVVNFX1dJTkRPV1NfU1NQSSIgPSAieDEiIFwpOyB0aGVuCiAgIFNVUFBPUlRfRkVBVFVSRVM9IiRTVVBQT1JUX0ZFQVRVUkVTIFNQTkVHTyIKQEAgLTM2MjYsNiArMzgxNyw3IEBACiAgICAgICAgICAgIGluY2x1ZGUvY3VybC9NYWtlZmlsZSBcCiAgICAgICAgICAgIHNyYy9NYWtlZmlsZSBcCiAgICAgICAgICAgIGxpYi9NYWtlZmlsZSBcCisgICAgICAgICAgIHNjcmlwdHMvTWFrZWZpbGUgXAogICAgICAgICAgICBsaWIvbGliY3VybC52ZXJzIFwKICAgICAgICAgICAgdGVzdHMvTWFrZWZpbGUgXAogICAgICAgICAgICB0ZXN0cy9jZXJ0cy9NYWtlZmlsZSBcCkBAIC0zNjc3LDEzICszODY5LDE1IEBACiAgIC0tbGliY3VybCBvcHRpb246ICR7Y3VybF9saWJjdXJsX21zZ30KICAgVmVyYm9zZSBlcnJvcnM6ICAgJHtjdXJsX3ZlcmJvc2VfbXNnfQogICBTU1BJIHN1cHBvcnQ6ICAgICAke2N1cmxfc3NwaV9tc2d9Ci0gIGNhIGNlcnQgYnVuZGxlOiAgICR7Y2F9Ci0gIGNhIGNlcnQgcGF0aDogICAgICR7Y2FwYXRofQorICBjYSBjZXJ0IGJ1bmRsZTogICAke2NhfSR7Y2Ffd2FybmluZ30KKyAgY2EgY2VydCBwYXRoOiAgICAgJHtjYXBhdGh9JHtjYXBhdGhfd2FybmluZ30KKyAgY2EgZmFsbGJhY2s6ICAgICAgJHt3aXRoX2NhX2ZhbGxiYWNrfQogICBMREFQIHN1cHBvcnQ6ICAgICAke2N1cmxfbGRhcF9tc2d9CiAgIExEQVBTIHN1cHBvcnQ6ICAgICR7Y3VybF9sZGFwc19tc2d9CiAgIFJUU1Agc3VwcG9ydDogICAgICR7Y3VybF9ydHNwX21zZ30KICAgUlRNUCBzdXBwb3J0OiAgICAgJHtjdXJsX3J0bXBfbXNnfQogICBtZXRhbGluayBzdXBwb3J0OiAke2N1cmxfbXRsbmtfbXNnfQorICBQU0wgc3VwcG9ydDogICAgICAke2N1cmxfcHNsX21zZ30KICAgSFRUUDIgc3VwcG9ydDogICAgJHtjdXJsX2gyX21zZ30KICAgUHJvdG9jb2xzOiAgICAgICAgJHtTVVBQT1JUX1BST1RPQ09MU30KIF0pCmRpZmYgLS1naXQgYS9jdXJsLWNvbmZpZy5pbiBiL2N1cmwtY29uZmlnLmluCmluZGV4IDkzOTg3MjIuLmFmNDg0YjQgMTAwNjQ0Ci0tLSBhL2N1cmwtY29uZmlnLmluCisrKyBiL2N1cmwtY29uZmlnLmluCkBAIC0xMCw3ICsxMCw3IEBACiAjCiAjIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAjCiAjIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvQklORElOR1MgYi9kb2NzL0JJTkRJTkdTCmluZGV4IGZlZDE2ZTkuLmViNjdjM2QgMTAwNjQ0Ci0tLSBhL2RvY3MvQklORElOR1MKKysrIGIvZG9jcy9CSU5ESU5HUwpAQCAtMjcsNyArMjcsNyBAQAogCiBDCiAgIGxpYmN1cmwgaXMgYSBDIGxpYnJhcnkgaW4gaXRzZWxmIQotICBodHRwOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvCisgIGh0dHBzOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvCiAKIEMrKwogCkBAIC0xODQsNyArMTg0LDcgQEAKIFJQRwogCiAgIFN1cHBvcnQgZm9yIElMRS9SUEcgb24gT1MvNDAwIGlzIGluY2x1ZGVkIGluIHNvdXJjZSBkaXN0cmlidXRpb24KLSAgaHR0cDovL2N1cmwuaGF4eC5zZS9saWJjdXJsLworICBodHRwczovL2N1cmwuaGF4eC5zZS9saWJjdXJsLwogICBTZWUgcGFja2FnZXMvT1M0MDAvUkVBRE1FLk9TNDAwIGFuZCBwYWNrYWdlcy9PUzQwMC9jdXJsLmluYy5pbgogCiBSdWJ5CmRpZmYgLS1naXQgYS9kb2NzL0JVR1MgYi9kb2NzL0JVR1MKaW5kZXggMzY2ODZlZi4uZGZkOWIyMCAxMDA2NDQKLS0tIGEvZG9jcy9CVUdTCisrKyBiL2RvY3MvQlVHUwpAQCAtMzUsMTIgKzM1LDEyIEBACiAgIGhhdmUgYSBnbyBhdCBhIHNvbHV0aW9uLiBZb3UgY2FuIG9wdGlvbmFsbHkgYWxzbyBwb3N0IHlvdXIgYnVnL3Byb2JsZW0gYXQKICAgY3VybCdzIGJ1ZyB0cmFja2luZyBzeXN0ZW0gb3ZlciBhdAogCi0gICAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9iYWdkZXIvY3VybC9pc3N1ZXMKKyAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL2N1cmwvY3VybC9pc3N1ZXMKIAogICBQbGVhc2UgcmVhZCB0aGUgcmVzdCBvZiB0aGlzIGRvY3VtZW50IGJlbG93IGZpcnN0IGJlZm9yZSBkb2luZyB0aGF0IQogCiAgIElmIHlvdSBmZWVsIHlvdSBuZWVkIHRvIGFzayBhcm91bmQgZmlyc3QsIGZpbmQgYSBzdWl0YWJsZSBtYWlsaW5nIGxpc3QgYW5kCi0gIHBvc3QgdGhlcmUuIFRoZSBsaXN0cyBhcmUgYXZhaWxhYmxlIG9uIGh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC8KKyAgcG9zdCB0aGVyZS4gVGhlIGxpc3RzIGFyZSBhdmFpbGFibGUgb24gaHR0cHM6Ly9jdXJsLmhheHguc2UvbWFpbC8KIAogMS4zIFdoYXQgdG8gcmVwb3J0CiAKZGlmZiAtLWdpdCBhL2RvY3MvQ0hFQ0tTUkMubWQgYi9kb2NzL0NIRUNLU1JDLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5MWUwNjYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL0NIRUNLU1JDLm1kCkBAIC0wLDAgKzEsMTI0IEBACisjIGNoZWNrc3JjCisKK1RoaXMgaXMgdGhlIHRvb2wgd2UgdXNlIHdpdGhpbiB0aGUgY3VybCBwcm9qZWN0IHRvIHNjYW4gQyBzb3VyY2UgY29kZSBhbmQKK2NoZWNrIHRoYXQgaXQgYWRoZXJlcyB0byBvdXIgW1NvdXJjZSBDb2RlIFN0eWxlIGd1aWRlXShDT0RFX1NUWUxFLm1kKS4KKworIyMgVXNhZ2UKKworICAgIGNoZWNrc3JjLnBsIFtvcHRpb25zXSBbZmlsZTFdIFtmaWxlMl0gLi4uCisKKyMjIENvbW1hbmQgbGluZSBvcHRpb25zCisKK2AtV1tmaWxlXWAgd2hpdGVsaXN0cyB0aGF0IGZpbGUgYW5kIGV4Y2x1ZGVzIGl0IGZyb20gYmVpbmcgY2hlY2tlZC4gSGVscGZ1bAord2hlbiwgZm9yIGV4YW1wbGUsIG9uZSBvZiB0aGUgZmlsZXMgaXMgZ2VuZXJhdGVkLgorCitgLURbZGlyXWAgZGlyZWN0b3J5IG5hbWUgdG8gcHJlcGVuZCB0byBmaWxlIG5hbWVzIHdoZW4gYWNjZXNzaW5nIHRoZW0uCisKK2AtaGAgc2hvd3MgdGhlIGhlbHAgb3V0cHV0LCB0aGF0IGFsc28gbGlzdHMgYWxsIHJlY29nbml6ZWQgd2FybmluZ3MKKworIyMgV2hhdCBkb2VzIGNoZWNrc3JjIHdhcm4gZm9yPworCitjaGVja3NyYyBkb2VzIG5vdCBjaGVjayBhbmQgdmVyaWZ5IHRoZSBjb2RlIGFnYWluc3QgdGhlIGVudGlyZSBzdHlsZSBndWlkZSwKK2J1dCB0aGUgc2NyaXB0IGlzIGluc3RlYWQgYW4gZWZmb3J0IHRvIGRldGVjdCB0aGUgbW9zdCBjb21tb24gbWlzdGFrZXMgYW5kCitzeW50YXggbWlzdGFrZXMgdGhhdCBjb250cmlidXRlcnMgbWFrZSBiZWZvcmUgdGhleSBnZXQgYWNjdXN0b21lZCB0byBvdXIgY29kZQorc3R5bGUuIEhlY2ssIG1hbnkgb2YgdXMgcmVndWxhcnMgZG8gdGhlIG1pc3Rha2VzIHRvbyBhbmQgdGhpcyBzY3JpcHQgaGVscHMgdXMKK2tlZXAgdGhlIGNvZGUgaW4gc2hhcGUuCisKKyAgICBjaGVja3NyYy5wbCAtaAorCitMaXN0cyBob3cgdG8gdXNlIHRoZSBzY3JpcHQgYW5kIGl0IGxpc3RzIGFsbCBleGlzdGluZyB3YXJuaW5ncyBpdCBoYXMgYW5kCitwcm9ibGVtcyBpdCBkZXRlY3RzLiBBdCB0aGUgdGltZSBvZiB0aGlzIHdyaXRpbmcsIHRoZSBleGlzdGluZyBjaGVja3NyYword2FybmluZ3MgYXJlOgorCistIGBCQURDT01NQU5EYDogVGhlcmUncyBhIGJhZCAhY2hlY2tzcmMhIGluc3RydWN0aW9uIGluIHRoZSBjb2RlLiBTZWUgdGhlCisgICAqKklnbm9yZSBjZXJ0YWluIHdhcm5pbmdzKiogc2VjdGlvbiBiZWxvdyBmb3IgZGV0YWlscy4KKworLSBgQkFOTkVERlVOQ2A6IEEgYmFubmVkIGZ1bmN0aW9uIHdhcyB1c2VkLiBUaGUgZnVudGlvbnMgc3ByaW50ZiwgdnNwcmludGYsCisgICBzdHJjYXQsIHN0cm5jYXQsIGdldHMgYXJlICoqbmV2ZXIqKiBhbGxvd2VkIGluIGN1cmwgc291cmNlIGNvZGUuCisKKy0gYEJSQUNFRUxTRWA6ICd9IGVsc2UnIG9uIHRoZSBzYW1lIGxpbmUuIFRoZSBlbHNlIGlzIHN1cHBvc2VkIHRvIGJlIG9uIHRoZQorICBmb2xsb3dpbmcgbGluZS4KKworLSBgQlJBQ0VQT1NgOiB3cm9uZyBwb3NpdGlvbiBmb3IgYW4gb3BlbiBicmFjZSAoYHtgKS4KKworLSBgQ09NTUFOT1NQQUNFYDogYSBjb21tYSB3aXRob3V0IGZvbGxvd2luZyBzcGFjZQorCistIGBDT1BZUklHSFRgOiB0aGUgZmlsZSBpcyBtaXNzaW5nIGEgY29weXJpZ2h0IHN0YXRlbWVudCEKKworLSBgQ1BQQ09NTUVOVFNgOiBgLy9gIGNvbW1lbnQgZGV0ZWN0ZWQsIHRoYXQncyBub3QgQzg5IGNvbXBsaWFudAorCistIGBGT1BFTk1PREVgOiBgZm9wZW4oKWAgbmVlZHMgYSBtYWNybyBmb3IgdGhlIG1vZGUgc3RyaW5nLCB1c2UgaXQKKworLSBgSU5ERU5UQVRJT05gOiBkZXRlY3RlZCBhIHdyb25nIHN0YXJ0IGNvbHVtbiBmb3IgY29kZS4gTm90ZSB0aGF0IHRoaXMgd2FybmluZworICAgb25seSBjaGVja3Mgc29tZSBzcGVjaWZpYyBwbGFjZXMgYW5kIHdpbGwgY2VydGFpbmx5IG1pc3MgbWFueSBiYWQKKyAgIGluZGVudGF0aW9ucy4KKworLSBgTE9OR0xJTkVgOiBBIGxpbmUgaXMgbG9uZ2VyIHRoYW4gNzkgY29sdW1ucy4KKworLSBgUEFSRU5CUkFDRWA6IGApe2Agd2FzIHVzZWQgd2l0aG91dCBzdWZmaWNpZW50IHNwYWNlIGluIGJldHdlZW4uCisKKy0gYFJFVFVSTk5PU1BBQ0VgOiBgcmV0dXJuYCB3YXMgdXNlZCB3aXRob3V0IHNwYWNlIGJldHdlZW4gdGhlIGtleXdvcmQgYW5kIHRoZQorICAgZm9sbG93aW5nIHZhbHVlLgorCistIGBTUEFDRUFGVEVSUEFSRU5gOiB0aGVyZSB3YXMgYSBzcGFjZSBhZnRlciBvcGVuIHBhcmVudGhlc2lzLCBgKCB0ZXh0YC4KKworLSBgU1BBQ0VCRUZPUkVDTE9TRWA6IHRoZXJlIHdhcyBhIHNwYWNlIGJlZm9yZSBhIGNsb3NlIHBhcmVudGhlc2lzLCBgdGV4dCApYC4KKworLSBgU1BBQ0VCRUZPUkVDT01NQWA6IHRoZXJlIHdhcyBhIHNwYWNlIGJlZm9yZSBhIGNvbW1hLCBgb25lICwgdHdvYC4KKworLSBgU1BBQ0VCRUZPUkVQQVJFTmA6IHRoZXJlIHdhcyBhIHNwYWNlIGJlZm9yZSBhbiBvcGVuIHBhcmVudGhlc2lzLCBgaWYgKGAsCisgICB3aGVyZSBvbmUgd2FzIG5vdCBleHBlY3RlZAorCistIGBTUEFDRVNFTUlMQ09MT05gOiB0aGVyZSB3YXMgYSBzcGFjZSBiZWZvcmUgc2VtaWNvbG9uLCBgIDtgLgorCistIGBUQUJTYDogVEFCIGNoYXJhY3RlcnMgYXJlIG5vdCBhbGxvd2VkIQorCistIGBUUkFJTElOR1NQQUNFYDogVHJhaWxpbmcgd2hpdGUgc3BhY2Ugb24gdGhlIGxpbmUKKworLSBgVU5VU0VESUdOT1JFYDogYSBjaGVja3NyYyBpbmxpbmVkIHdhcm5pbmcgaWdub3JlIHdhcyBhc2tlZCBmb3IgYnV0IG5vdCB1c2VkLAorICAgdGhhdCdzIGFuIGlnbm9yZSB0aGF0IHNob3VsZCBiZSByZW1vdmVkIG9yIGNoYW5nZWQgdG8gZ2V0IHVzZWQuCisKKyMjIElnbm9yZSBjZXJ0YWluIHdhcm5pbmdzCisKK0R1ZSB0byB0aGUgbmF0dXJlIG9mIHRoZSBzb3VyY2UgY29kZSBhbmQgdGhlIGZsYXdzIG9mIHRoZSBjaGVja3NyYyB0b29sLCB0aGVyZQoraXMgc29tZXRpbWVzIGEgbmVlZCB0byBpZ25vcmUgc3BlY2lmaWMgd2FybmluZ3MuIGNoZWNrc3JjIGFsbG93cyBhIGZldworZGlmZmVyZW50IHdheXMgdG8gZG8gdGhpcy4KKworIyMjIElubGluZSBpZ25vcmUKKworWW91IGNhbiBjb250cm9sIHdoYXQgdG8gaWdub3JlIHdpdGhpbiBhIHNwZWNpZmljIHNvdXJjZSBmaWxlIGJ5IHByb3ZpZGluZworaW5zdHJ1Y3Rpb25zIHRvIGNoZWNrc3JjIGluIHRoZSBzb3VyY2UgY29kZSBpdHNlbGYuIFlvdSBuZWVkIGEgbWFnaWMgbWFya2VyCit0aGF0IGlzIGAhY2hlY2tzcmMhYCBmb2xsb3dlZCBieSB0aGUgaW5zdHJ1Y3Rpb24uIFRoZSBpbnN0cnVjdGlvbiBjYW4gYXNrIHRvCitpZ25vcmUgYSBzcGVjaWZpYyB3YXJuaW5nIE4gbnVtYmVyIG9mIHRpbWVzIG9yIHlvdSBpZ25vcmUgYWxsIG9mIHRoZW0gdW50aWwKK3lvdSBtYXJrIHRoZSBlbmQgb2YgdGhlIGlnbm9yZWQgc2VjdGlvbi4KKworSW5saW5lIGlnbm9yZXMgYXJlIG9ubHkgZG9uZSBmb3IgdGhhdCBzaW5nbGUgc3BlY2lmaWMgc291cmNlIGNvZGUgZmlsZS4KKworRXhhbXBsZQorCisgICAgLyogIWNoZWNrc3JjISBkaXNhYmxlIExPTkdMSU5FIGFsbCAqLworCitUaGlzIHdpbGwgaWdub3JlIHRoZSB3YXJuaW5nIGZvciBvdmVybHkgbG9uZyBsaW5lcyB1bnRpbCBpdCBpcyByZS1lbmFibGVkIHdpdGg6CisKKyAgICAvKiAhY2hlY2tzcmMhIGVuYWJsZSBMT05HTElORSAqLworCitJZiB0aGUgZW5hYmxpbmcgaXNuJ3QgcGVyZm9ybWVkIGJlZm9yZSB0aGUgZW5kIG9mIHRoZSBmaWxlLCBpdCB3aWxsIGJlIGVuYWJsZWQKK2F1dG9tYXRpY2FsbHkgZm9yIHRoZSBuZXh0IGZpbGUuCisKK1lvdSBjYW4gYWxzbyBvcHQgdG8gaWdub3JlIGp1c3QgTiB2aW9sYXRpb25zIHNvIHRoYXQgaWYgeW91IGhhdmUgYSBzaW5nbGUgbG9uZworbGluZSB5b3UganVzdCBjYW4ndCBzaG9ydGVuIGFuZCBpcyBhZ3JlZWQgdG8gYmUgZmluZSBhbnl3YXk6CisKKyAgICAvKiAhY2hlY2tzcmMhIGRpc2FibGUgTE9OR0xJTkUgMSAqLworCisuLi4gYW5kIHRoZSB3YXJuaW5nIGZvciBsb25nIGxpbmVzIHdpbGwgYmUgZW5hYmxlZCBhZ2FpbiBhdXRvbWF0aWNhbGx5IGFmdGVyCitpdCBoYXMgaWdub3JlZCB0aGF0IHNpbmdsZSB3YXJuaW5nLiBUaGUgbnVtYmVyIGAxYCBjYW4gb2YgY291cnNlIGJlIGNoYW5nZWQgdG8KK2FueSBvdGhlciBpbnRlZ2VyIG51bWJlci4gSXQgY2FuIGJlIHVzZWQgdG8gbWFrZSBzdXJlIG9ubHkgdGhlIGV4YWN0IGludGVuZGVkCitpbnN0YW5jZXMgYXJlIGlnbm9yZWQgYW5kIG5vdGhpbmcgZXh0cmEuCisKKyMjIyBEaXJlY3Rvcnkgd2lkZSBpZ25vcmUgcGF0dGVybnMKKworVGhpcyBpcyBhIG1ldGhvZCB3ZSd2ZSB0cmFuc2l0aW9uZWQgYXdheSBmcm9tLiBVc2UgaW5saW5lIGlnbm9yZXMgYXMgZmFyIGFzCitwb3NzaWJsZS4KKworTWFrZSBhIGBjaGVja3NyYy53aGl0ZWxpc3RgIGZpbGUgaW4gdGhlIGRpcmVjdG9yeSBvZiB0aGUgc291cmNlIGNvZGUgd2l0aCB0aGUKK2ZhbHNlIHBvc2l0aXZlLCBhbmQgaW5jbHVkZSB0aGUgZnVsbCBvZmZlbmRpbmcgbGluZSBpbnRvIHRoaXMgZmlsZS4KZGlmZiAtLWdpdCBhL2RvY3MvQ09ERV9PRl9DT05EVUNULm1kIGIvZG9jcy9DT0RFX09GX0NPTkRVQ1QubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDRlYTY2ZQotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvQ09ERV9PRl9DT05EVUNULm1kCkBAIC0wLDAgKzEsMzIgQEAKK0NvbnRyaWJ1dG9yIENvZGUgb2YgQ29uZHVjdAorPT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0FzIGNvbnRyaWJ1dG9ycyBhbmQgbWFpbnRhaW5lcnMgb2YgdGhpcyBwcm9qZWN0LCB3ZSBwbGVkZ2UgdG8gcmVzcGVjdCBhbGwKK3Blb3BsZSB3aG8gY29udHJpYnV0ZSB0aHJvdWdoIHJlcG9ydGluZyBpc3N1ZXMsIHBvc3RpbmcgZmVhdHVyZSByZXF1ZXN0cywKK3VwZGF0aW5nIGRvY3VtZW50YXRpb24sIHN1Ym1pdHRpbmcgcHVsbCByZXF1ZXN0cyBvciBwYXRjaGVzLCBhbmQgb3RoZXIKK2FjdGl2aXRpZXMuCisKK1dlIGFyZSBjb21taXR0ZWQgdG8gbWFraW5nIHBhcnRpY2lwYXRpb24gaW4gdGhpcyBwcm9qZWN0IGEgaGFyYXNzbWVudC1mcmVlCitleHBlcmllbmNlIGZvciBldmVyeW9uZSwgcmVnYXJkbGVzcyBvZiBsZXZlbCBvZiBleHBlcmllbmNlLCBnZW5kZXIsIGdlbmRlcgoraWRlbnRpdHkgYW5kIGV4cHJlc3Npb24sIHNleHVhbCBvcmllbnRhdGlvbiwgZGlzYWJpbGl0eSwgcGVyc29uYWwgYXBwZWFyYW5jZSwKK2JvZHkgc2l6ZSwgcmFjZSwgZXRobmljaXR5LCBhZ2UsIG9yIHJlbGlnaW9uLgorCitFeGFtcGxlcyBvZiB1bmFjY2VwdGFibGUgYmVoYXZpb3IgYnkgcGFydGljaXBhbnRzIGluY2x1ZGUgdGhlIHVzZSBvZiBzZXh1YWwKK2xhbmd1YWdlIG9yIGltYWdlcnksIGRlcm9nYXRvcnkgY29tbWVudHMgb3IgcGVyc29uYWwgYXR0YWNrcywgdHJvbGxpbmcsIHB1YmxpYworb3IgcHJpdmF0ZSBoYXJhc3NtZW50LCBpbnN1bHRzLCBvciBvdGhlciB1bnByb2Zlc3Npb25hbCBjb25kdWN0LgorCitQcm9qZWN0IG1haW50YWluZXJzIGhhdmUgdGhlIHJpZ2h0IGFuZCByZXNwb25zaWJpbGl0eSB0byByZW1vdmUsIGVkaXQsIG9yCityZWplY3QgY29tbWVudHMsIGNvbW1pdHMsIGNvZGUsIHdpa2kgZWRpdHMsIGlzc3VlcywgYW5kIG90aGVyIGNvbnRyaWJ1dGlvbnMKK3RoYXQgYXJlIG5vdCBhbGlnbmVkIHRvIHRoaXMgQ29kZSBvZiBDb25kdWN0LiBQcm9qZWN0IG1haW50YWluZXJzIHdobyBkbyBub3QKK2ZvbGxvdyB0aGUgQ29kZSBvZiBDb25kdWN0IG1heSBiZSByZW1vdmVkIGZyb20gdGhlIHByb2plY3QgdGVhbS4KKworVGhpcyBjb2RlIG9mIGNvbmR1Y3QgYXBwbGllcyBib3RoIHdpdGhpbiBwcm9qZWN0IHNwYWNlcyBhbmQgaW4gcHVibGljIHNwYWNlcword2hlbiBhbiBpbmRpdmlkdWFsIGlzIHJlcHJlc2VudGluZyB0aGUgcHJvamVjdCBvciBpdHMgY29tbXVuaXR5LgorCitJbnN0YW5jZXMgb2YgYWJ1c2l2ZSwgaGFyYXNzaW5nLCBvciBvdGhlcndpc2UgdW5hY2NlcHRhYmxlIGJlaGF2aW9yIG1heSBiZQorcmVwb3J0ZWQgYnkgb3BlbmluZyBhbiBpc3N1ZSBvciBjb250YWN0aW5nIG9uZSBvciBtb3JlIG9mIHRoZSBwcm9qZWN0CittYWludGFpbmVycy4KKworVGhpcyBDb2RlIG9mIENvbmR1Y3QgaXMgYWRhcHRlZCBmcm9tIHRoZSBbQ29udHJpYnV0b3IKK0NvdmVuYW50XShodHRwOi8vY29udHJpYnV0b3ItY292ZW5hbnQub3JnKSwgdmVyc2lvbiAxLjEuMCwgYXZhaWxhYmxlIGF0CitbaHR0cDovL2NvbnRyaWJ1dG9yLWNvdmVuYW50Lm9yZy92ZXJzaW9uLzEvMS8wL10oaHR0cDovL2NvbnRyaWJ1dG9yLWNvdmVuYW50Lm9yZy92ZXJzaW9uLzEvMS8wLykKZGlmZiAtLWdpdCBhL2RvY3MvQ09ERV9TVFlMRS5tZCBiL2RvY3MvQ09ERV9TVFlMRS5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43M2E0ZDk0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9DT0RFX1NUWUxFLm1kCkBAIC0wLDAgKzEsMTg2IEBACisjIGNVUkwgQyBjb2RlIHN0eWxlCisKK1NvdXJjZSBjb2RlIHRoYXQgaGFzIGEgY29tbW9uIHN0eWxlIGlzIGVhc2llciB0byByZWFkIHRoYW4gY29kZSB0aGF0IHVzZXMKK2RpZmZlcmVudCBzdHlsZXMgaW4gZGlmZmVyZW50IHBsYWNlcy4gSXQgaGVscHMgbWFraW5nIHRoZSBjb2RlIGZlZWwgbGlrZSBvbmUKK3NpbmdsZSBjb2RlIGJhc2UuIEVhc3ktdG8tcmVhZCBpcyBhIHZlcnkgaW1wb3J0YW50IHByb3BlcnR5IG9mIGNvZGUgYW5kIGhlbHBzCittYWtpbmcgaXQgZWFzaWVyIHRvIHJldmlldyB3aGVuIG5ldyB0aGluZ3MgYXJlIGFkZGVkIGFuZCBpdCBoZWxwcyBkZWJ1Z2dpbmcKK2NvZGUgd2hlbiBkZXZlbG9wZXJzIGFyZSB0cnlpbmcgdG8gZmlndXJlIG91dCB3aHkgdGhpbmdzIGdvIHdyb25nLiBBIHVuaWZpZWQKK3N0eWxlIGlzIG1vcmUgaW1wb3J0YW50IHRoYW4gaW5kaXZpZHVhbCBjb250cmlidXRvcnMgaGF2aW5nIHRoZWlyIG93biBwZXJzb25hbAordGFzdGVzIHNhdGlzZmllZC4KKworT3VyIEMgY29kZSBoYXMgYSBmZXcgc3R5bGUgcnVsZXMuIE1vc3Qgb2YgdGhlbSBhcmUgdmVyaWZpZWQgYW5kIHVwaGVsZCBieSB0aGUKK2xpYi9jaGVja3NyYy5wbCBzY3JpcHQuIEludm9rZWQgd2l0aCBgbWFrZSBjaGVja3NyY2Agb3IgZXZlbiBieSBkZWZhdWx0IGJ5IHRoZQorYnVpbGQgc3lzdGVtIHdoZW4gYnVpbHQgYWZ0ZXIgYC4vY29uZmlndXJlIC0tZW5hYmxlLWRlYnVnYCBoYXMgYmVlbiB1c2VkLgorCitJdCBpcyBub3JtYWxseSBub3QgYSBwcm9ibGVtIGZvciBhbnlvbmUgdG8gZm9sbG93IHRoZSBndWlkZWxpbmVzLCBhcyB5b3UganVzdAorbmVlZCB0byBjb3B5IHRoZSBzdHlsZSBhbHJlYWR5IHVzZWQgaW4gdGhlIHNvdXJjZSBjb2RlIGFuZCB0aGVyZSBhcmUgbm8KK3BhcnRpY3VsYXJseSB1bnVzdWFsIHJ1bGVzIGluIG91ciBzZXQgb2YgcnVsZXMuCisKK1dlIGFsc28gd29yayBoYXJkIG9uIHdyaXRpbmcgY29kZSB0aGF0IGFyZSB3YXJuaW5nLWZyZWUgb24gYWxsIHRoZSBtYWpvcgorcGxhdGZvcm1zIGFuZCBpbiBnZW5lcmFsIG9uIGFzIG1hbnkgcGxhdGZvcm1zIGFzIHBvc3NpYmxlLiBDb2RlIHRoYXQgb2J2aW91c2x5Cit3aWxsIGNhdXNlIHdhcm5pbmdzIHdpbGwgbm90IGJlIGFjY2VwdGVkIGFzLWlzLgorCisjIyBOYW1pbmcKKworVHJ5IHVzaW5nIGEgbm9uLWNvbmZ1c2luZyBuYW1pbmcgc2NoZW1lIGZvciB5b3VyIG5ldyBmdW5jdGlvbnMgYW5kIHZhcmlhYmxlCituYW1lcy4gSXQgZG9lc24ndCBuZWNlc3NhcmlseSBoYXZlIHRvIG1lYW4gdGhhdCB5b3Ugc2hvdWxkIHVzZSB0aGUgc2FtZSBhcyBpbgorb3RoZXIgcGxhY2VzIG9mIHRoZSBjb2RlLCBqdXN0IHRoYXQgdGhlIG5hbWVzIHNob3VsZCBiZSBsb2dpY2FsLAordW5kZXJzdGFuZGFibGUgYW5kIGJlIG5hbWVkIGFjY29yZGluZyB0byB3aGF0IHRoZXkncmUgdXNlZCBmb3IuIEZpbGUtbG9jYWwKK2Z1bmN0aW9ucyBzaG91bGQgYmUgbWFkZSBzdGF0aWMuIFdlIGxpa2UgbG93ZXIgY2FzZSBuYW1lcy4KKworU2VlIHRoZSBJTlRFUk5BTFMgZG9jdW1lbnQgb24gaG93IHdlIG5hbWUgbm9uLWV4cG9ydGVkIGxpYnJhcnktZ2xvYmFsIHN5bWJvbHMuCisKKyMjIEluZGVudGluZworCitXZSB1c2Ugb25seSBzcGFjZXMgZm9yIGluZGVudGF0aW9uLCBuZXZlciBUQUJzLiBXZSB1c2UgdHdvIHNwYWNlcyBmb3IgZWFjaCBuZXcKK29wZW4gYnJhY2UuCisKKyAgICBpZihzb21ldGhpbmdfaXNfdHJ1ZSkgeworICAgICAgd2hpbGUoc2Vjb25kX3N0YXRlbWVudCA9PSBmaW5lKSB7CisgICAgICAgIG1vbygpOworICAgICAgfQorICAgIH0KKworIyMgQ29tbWVudHMKKworU2luY2Ugd2Ugd3JpdGUgQzg5IGNvZGUsIGAvL2AgY29tbWVudHMgYXJlIG5vdCBhbGxvd2VkLiBUaGV5IHdlcmVuJ3QKK2ludHJvZHVjZWQgaW4gdGhlIEMgc3RhbmRhcmQgdW50aWwgQzk5LiBXZSB1c2Ugb25seSBgLypgIGFuZCBgKi9gIGNvbW1lbnRzOgorCisgICAgLyogdGhpcyBpcyBhIGNvbW1lbnQgKi8KKworIyMgTG9uZyBsaW5lcworCitTb3VyY2UgY29kZSBpbiBjdXJsIG1heSBuZXZlciBiZSB3aWRlciB0aGFuIDgwIGNvbHVtbnMgYW5kIHRoZXJlIGFyZSB0d28KK3JlYXNvbnMgZm9yIG1haW50YWluaW5nIHRoaXMgZXZlbiBpbiB0aGUgbW9kZXJuIGVyYSBvZiB2ZXJ5IGxhcmdlIGFuZCBoaWdoCityZXNvbHV0aW9uIHNjcmVlbnM6CisKKzEuIE5hcnJvd2VyIGNvbHVtbnMgYXJlIGVhc2llciB0byByZWFkIHRoYW4gdmVyeSB3aWRlIG9uZXMuIFRoZXJlJ3MgYSByZWFzb24KKyAgIG5ld3NwYXBlcnMgaGF2ZSB1c2VkIGNvbHVtbnMgZm9yIGRlY2FkZXMgb3IgY2VudHVyaWVzLgorCisyLiBOYXJyb3dlciBjb2x1bW5zIGFsbG93IGRldmVsb3BlcnMgdG8gZWFzaWVyIHNob3cgbXVsdGlwbGUgcGllY2VzIG9mIGNvZGUKKyAgIG5leHQgdG8gZWFjaCBvdGhlciBpbiBkaWZmZXJlbnQgd2luZG93cy4gSSBvZnRlbiBoYXZlIHR3byBvciB0aHJlZSBzb3VyY2UKKyAgIGNvZGUgd2luZG93cyBuZXh0IHRvIGVhY2ggb3RoZXIgb24gdGhlIHNhbWUgc2NyZWVuIC0gYXMgd2VsbCBhcyBtdWx0aXBsZQorICAgdGVybWluYWwgYW5kIGRlYnVnZ2luZyB3aW5kb3dzLgorCisjIyBCcmFjZXMKKworSW4gaWYvd2hpbGUvZG8vZm9yIGV4cHJlc3Npb25zLCB3ZSB3cml0ZSB0aGUgb3BlbiBicmFjZSBvbiB0aGUgc2FtZSBsaW5lIGFzCit0aGUga2V5d29yZCBhbmQgd2UgdGhlbiBzZXQgdGhlIGNsb3NpbmcgYnJhY2Ugb24gdGhlIHNhbWUgaW5kZW50YXRpb24gbGV2ZWwgYXMKK3RoZSBpbml0aWFsIGtleXdvcmQuIExpa2UgdGhpczoKKworICAgIGlmKGFnZSA8IDQwKSB7CisgICAgICAvKiBjbGVhcmx5IGEgeW91bmdzdGVyICovCisgICAgfQorCitXaGVuIHdlIHdyaXRlIGZ1bmN0aW9ucyBob3dldmVyLCB0aGUgb3BlbmluZyBicmFjZSBzaG91bGQgYmUgaW4gdGhlIGZpcnN0Citjb2x1bW4gb2YgdGhlIGZpcnN0IGxpbmU6CisKKyAgICBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgICAgeworICAgICAgcmV0dXJuIDE7CisgICAgfQorCisjIyAnZWxzZScgb24gdGhlIGZvbGxvd2luZyBsaW5lCisKK1doZW4gYWRkaW5nIGFuIGBlbHNlYCBjbGF1c2UgdG8gYSBjb25kaXRpb25hbCBleHByZXNzaW9uIHVzaW5nIGJyYWNlcywgd2UgYWRkCitpdCBvbiBhIG5ldyBsaW5lIGFmdGVyIHRoZSBjbG9zaW5nIGJyYWNlLiBMaWtlIHRoaXM6CisKKyAgICBpZihhZ2UgPCA0MCkgeworICAgICAgLyogY2xlYXJseSBhIHlvdW5nc3RlciAqLworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIC8qIHByb2JhYmx5IGdydW1weSAqLworICAgIH0KKworIyMgTm8gc3BhY2UgYmVmb3JlIHBhcmVudGhlc2VzCisKK1doZW4gd3JpdGluZyBleHByZXNzaW9ucyB1c2luZyBpZi93aGlsZS9kby9mb3IsIHRoZXJlIHNoYWxsIGJlIG5vIHNwYWNlCitiZXR3ZWVuIHRoZSBrZXl3b3JkIGFuZCB0aGUgb3BlbiBwYXJlbnRoZXNpcy4gTGlrZSB0aGlzOgorCisgICAgd2hpbGUoMSkgeworICAgICAgLyogbG9vcCBmb3JldmVyICovCisgICAgfQorCisjIyBVc2UgYm9vbGVhbiBjb25kaXRpb25zCisKK1JhdGhlciB0aGFuIHRlc3QgYSBjb25kaXRpb25hbCB2YWx1ZSBzdWNoIGFzIGEgYm9vbCBhZ2FpbnN0IFRSVUUgb3IgRkFMU0UsIGEKK3BvaW50ZXIgYWdhaW5zdCBOVUxMIG9yICE9IE5VTEwgYW5kIGFuIGludCBhZ2FpbnN0IHplcm8gb3Igbm90IHplcm8gaW4KK2lmL3doaWxlIGNvbmRpdGlvbnMgd2UgcHJlZmVyOgorCisgICAgcmVzdWx0ID0gZG9fc29tZXRoaW5nKCk7CisgICAgaWYoIXJlc3VsdCkgeworICAgICAgLyogc29tZXRoaW5nIHdlbnQgd3JvbmcgKi8KKyAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisjIyBObyBhc3NpZ25tZW50cyBpbiBjb25kaXRpb25zCisKK1RvIGluY3JlYXNlIHJlYWRhYmlsaXR5IGFuZCByZWR1Y2UgY29tcGxleGl0eSBvZiBjb25kaXRpb25hbHMsIHdlIGF2b2lkCithc3NpZ25pbmcgdmFyaWFibGVzIHdpdGhpbiBpZi93aGlsZSBjb25kaXRpb25zLiBXZSBmcm93biB1cG9uIHRoaXMgc3R5bGU6CisKKyAgICBpZigocHRyID0gbWFsbG9jKDEwMCkpID09IE5VTEwpCisgICAgICByZXR1cm4gTlVMTDsKKworYW5kIGluc3RlYWQgd2UgZW5jb3VyYWdlIHRoZSBhYm92ZSB2ZXJzaW9uIHRvIGJlIHNwZWxsZWQgb3V0IG1vcmUgY2xlYXJseToKKworICAgIHB0ciA9IG1hbGxvYygxMDApOworICAgIGlmKCFwdHIpCisgICAgICByZXR1cm4gTlVMTDsKKworIyMgTmV3IGJsb2NrIG9uIGEgbmV3IGxpbmUKKworV2UgbmV2ZXIgd3JpdGUgbXVsdGlwbGUgc3RhdGVtZW50cyBvbiB0aGUgc2FtZSBzb3VyY2UgbGluZSwgZXZlbiBmb3IgdmVyeQorc2hvcnQgaWYoKSBjb25kaXRpb25zLgorCisgICAgaWYoYSkKKyAgICAgIHJldHVybiBUUlVFOworICAgIGVsc2UgaWYoYikKKyAgICAgIHJldHVybiBGQUxTRTsKKworYW5kIE5FVkVSOgorCisgICAgaWYoYSkgcmV0dXJuIFRSVUU7CisgICAgZWxzZSBpZihiKSByZXR1cm4gRkFMU0U7CisKKyMjIFNwYWNlIGFyb3VuZCBvcGVyYXRvcnMKKworUGxlYXNlIHVzZSBzcGFjZXMgb24gYm90aCBzaWRlcyBvZiBvcGVyYXRvcnMgaW4gQyBleHByZXNzaW9ucy4gIFBvc3RmaXggYCgpLAorW10sIC0+LCAuLCArKywgLS1gIGFuZCBVbmFyeSBgKywgLSAhLCB+LCAmYCBvcGVyYXRvcnMgZXhjbHVkZWQgdGhleSBzaG91bGQKK2hhdmUgbm8gc3BhY2UuCisKK0V4YW1wbGVzOgorCisgICAgYmxhID0gZnVuYygpOworICAgIHdobyA9IG5hbWVbMF07CisgICAgYWdlICs9IDE7CisgICAgdHJ1ZSA9ICFmYWxzZTsKKyAgICBzaXplICs9IC0yICsgMyAqIChhICsgYik7CisgICAgcHRyLT5tZW1iZXIgPSBhKys7CisgICAgc3RydWN0LmZpZWxkID0gYi0tOworICAgIHB0ciA9ICZhZGRyZXNzOworICAgIGNvbnRlbnRzID0gKnBvaW50ZXI7CisgICAgY29tcGxlbWVudCA9IH5iaXRzOworICAgIGVtcHR5ID0gKCEqc3RyaW5nKSA/IFRSVUUgOiBGQUxTRTsKKworIyMgUGxhdGZvcm0gZGVwZW5kZW50IGNvZGUKKworVXNlIGAjaWZkZWYgSEFWRV9GRUFUVVJFYCB0byBkbyBjb25kaXRpb25hbCBjb2RlLiBXZSBhdm9pZCBjaGVja2luZyBmb3IKK3BhcnRpY3VsYXIgb3BlcmF0aW5nIHN5c3RlbXMgb3IgaGFyZHdhcmUgaW4gdGhlICNpZmRlZiBsaW5lcy4gVGhlIEhBVkVfRkVBVFVSRQorc2hhbGwgYmUgZ2VuZXJhdGVkIGJ5IHRoZSBjb25maWd1cmUgc2NyaXB0IGZvciB1bml4LWxpa2Ugc3lzdGVtcyBhbmQgdGhleSBhcmUKK2hhcmQtY29kZWQgaW4gdGhlIGNvbmZpZy1bc3lzdGVtXS5oIGZpbGVzIGZvciB0aGUgb3RoZXJzLgorCitXZSBhbHNvIGVuY291cmFnZSB1c2Ugb2YgbWFjcm9zL2Z1bmN0aW9ucyB0aGF0IHBvc3NpYmx5IGFyZSBlbXB0eSBvciBkZWZpbmVkCit0byBjb25zdGFudHMgd2hlbiBsaWJjdXJsIGlzIGJ1aWx0IHdpdGhvdXQgdGhhdCBmZWF0dXJlLCB0byBtYWtlIHRoZSBjb2RlCitzZWFtbGVzcy4gTGlrZSB0aGlzIHN0eWxlIHdoZXJlIHRoZSBgbWFnaWMoKWAgZnVuY3Rpb24gd29ya3MgZGlmZmVyZW50bHkKK2RlcGVuZGluZyBvbiBhIGJ1aWxkLXRpbWUgY29uZGl0aW9uYWw6CisKKyAgICAjaWZkZWYgSEFWRV9NQUdJQworICAgIHZvaWQgbWFnaWMoaW50IGEpCisgICAgeworICAgICAgcmV0dXJuIGEgKyAyOworICAgIH0KKyAgICAjZWxzZQorICAgICNkZWZpbmUgbWFnaWMoeCkgMQorICAgICNlbmRpZgorCisgICAgaW50IGNvbnRlbnQgPSBtYWdpYygzKTsKZGlmZiAtLWdpdCBhL2RvY3MvQ09OVFJJQlVURSBiL2RvY3MvQ09OVFJJQlVURQppbmRleCBjNmVhOTc3Li45ZTg0MTc1IDEwMDY0NAotLS0gYS9kb2NzL0NPTlRSSUJVVEUKKysrIGIvZG9jcy9DT05UUklCVVRFCkBAIC0xNSwxOCArMTUsMTMgQEAKICAxLjIgTGljZW5zZQogIDEuMyBXaGF0IFRvIFJlYWQKIAotIDIuIGNVUkwgQ29kaW5nIFN0YW5kYXJkcwotIDIuMSBOYW1pbmcKLSAyLjIgSW5kZW50aW5nCi0gMi4zIENvbW1lbnRpbmcKLSAyLjQgTGluZSBMZW5ndGhzCi0gMi41IEdlbmVyYWwgU3R5bGUKLSAyLjYgTm9uLWNsb2JiZXJpbmcgQWxsIE92ZXIKLSAyLjcgUGxhdGZvcm0gRGVwZW5kZW50IENvZGUKLSAyLjggV3JpdGUgU2VwYXJhdGUgUGF0Y2hlcwotIDIuOSBQYXRjaCBBZ2FpbnN0IFJlY2VudCBTb3VyY2VzCi0gMi4xMCBEb2N1bWVudAotIDIuMTEgVGVzdCBDYXNlcworIDIuIFdyaXRlIGEgZ29vZCBwYXRjaAorIDIuMSBGb2xsb3cgY29kZSBzdHlsZQorIDIuMiBOb24tY2xvYmJlcmluZyBBbGwgT3ZlcgorIDIuMyBXcml0ZSBTZXBhcmF0ZSBQYXRjaGVzCisgMi40IFBhdGNoIEFnYWluc3QgUmVjZW50IFNvdXJjZXMKKyAyLjUgRG9jdW1lbnQKKyAyLjYgVGVzdCBDYXNlcwogCiAgMy4gUHVzaGluZyBPdXQgWW91ciBDaGFuZ2VzCiAgMy4xIFdyaXRlIEFjY2VzcyB0byBnaXQgUmVwb3NpdG9yeQpAQCAtNDIsMTMgKzM3LDEzIEBACiAKIDEuMSBKb2luIHRoZSBDb21tdW5pdHkKIAotIFNraXAgb3ZlciB0byBodHRwOi8vY3VybC5oYXh4LnNlL21haWwvIGFuZCBqb2luIHRoZSBhcHByb3ByaWF0ZSBtYWlsaW5nCisgU2tpcCBvdmVyIHRvIGh0dHBzOi8vY3VybC5oYXh4LnNlL21haWwvIGFuZCBqb2luIHRoZSBhcHByb3ByaWF0ZSBtYWlsaW5nCiAgbGlzdChzKS4gIFJlYWQgdXAgb24gZGV0YWlscyBiZWZvcmUgeW91IHBvc3QgcXVlc3Rpb25zLiBSZWFkIHRoaXMgZmlsZSBiZWZvcmUKICB5b3Ugc3RhcnQgc2VuZGluZyBwYXRjaGVzISBXZSBwcmVmZXIgcGF0Y2hlcyBhbmQgZGlzY3Vzc2lvbnMgYmVpbmcgaGVsZCBvbgogIHRoZSBtYWlsaW5nIGxpc3QocyksIG5vdCBzZW50IHRvIGluZGl2aWR1YWxzLgogCiAgQmVmb3JlIHBvc3RpbmcgdG8gb25lIG9mIHRoZSBjdXJsIG1haWxpbmcgbGlzdHMsIHBsZWFzZSByZWFkIHVwIG9uIHRoZSBtYWlsaW5nCi0gbGlzdCBldGlxdWV0dGU6IGh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC9ldGlxdWV0dGUuaHRtbAorIGxpc3QgZXRpcXVldHRlOiBodHRwczovL2N1cmwuaGF4eC5zZS9tYWlsL2V0aXF1ZXR0ZS5odG1sCiAKICBXZSBhbHNvIGhhbmcgb3V0IG9uIElSQyBpbiAjY3VybCBvbiBpcmMuZnJlZW5vZGUubmV0CiAKQEAgLTg3LDQ4ICs4MiwxNSBAQAogIGxpc3QgaXMgZ29ubmEgZ2l2ZSB5b3UgYSBsb3Qgb2YgaW5zaWdodHMgb24gd2hhdCdzIGdvaW5nIG9uIHJpZ2h0IG5vdy4gQXNraW5nCiAgdGhlcmUgaXMgYSBnb29kIGlkZWEgdG9vLgogCi0yLiBjVVJMIENvZGluZyBTdGFuZGFyZHMKKzIuIFdyaXRlIGEgZ29vZCBwYXRjaAogCi0yLjEgTmFtaW5nCisyLjEgRm9sbG93IGNvZGUgc3R5bGUKIAotIFRyeSB1c2luZyBhIG5vbi1jb25mdXNpbmcgbmFtaW5nIHNjaGVtZSBmb3IgeW91ciBuZXcgZnVuY3Rpb25zIGFuZCB2YXJpYWJsZQotIG5hbWVzLiBJdCBkb2Vzbid0IG5lY2Vzc2FyaWx5IGhhdmUgdG8gbWVhbiB0aGF0IHlvdSBzaG91bGQgdXNlIHRoZSBzYW1lIGFzIGluCi0gb3RoZXIgcGxhY2VzIG9mIHRoZSBjb2RlLCBqdXN0IHRoYXQgdGhlIG5hbWVzIHNob3VsZCBiZSBsb2dpY2FsLAotIHVuZGVyc3RhbmRhYmxlIGFuZCBiZSBuYW1lZCBhY2NvcmRpbmcgdG8gd2hhdCB0aGV5J3JlIHVzZWQgZm9yLiBGaWxlLWxvY2FsCi0gZnVuY3Rpb25zIHNob3VsZCBiZSBtYWRlIHN0YXRpYy4gV2UgbGlrZSBsb3dlciBjYXNlIG5hbWVzLgorIFdoZW4gd3JpdGluZyBDIGNvZGUsIGZvbGxvdyB0aGUgQ09ERV9TVFlMRSBhbHJlYWR5IGVzdGFibGlzaGVkIGluIHRoZQorIHByb2plY3QuIENvbnNpc3RlbnQgc3R5bGUgbWFrZXMgY29kZSBlYXNpZXIgdG8gcmVhZCBhbmQgbWlzdGFrZXMgbGVzcyBsaWtlbHkKKyB0byBoYXBwZW4uCiAKLSBTZWUgdGhlIElOVEVSTkFMUyBkb2N1bWVudCBvbiBob3cgd2UgbmFtZSBub24tZXhwb3J0ZWQgbGlicmFyeS1nbG9iYWwKLSBzeW1ib2xzLgotCi0yLjIgSW5kZW50aW5nCi0KLSBVc2UgdGhlIHNhbWUgaW5kZW50aW5nIGxldmVscyBhbmQgYnJhY2luZyBtZXRob2QgYXMgYWxsIHRoZSBvdGhlciBjb2RlCi0gYWxyZWFkeSBkb2VzLiBJdCBtYWtlcyB0aGUgc291cmNlIGNvZGUgZWFzaWVyIHRvIGZvbGxvdyBpZiBhbGwgb2YgaXQgaXMKLSB3cml0dGVuIHVzaW5nIHRoZSBzYW1lIHN0eWxlLiBXZSBkb24ndCBhc2sgeW91IHRvIGxpa2UgaXQsIHdlIGp1c3QgYXNrIHlvdSB0bwotIGZvbGxvdyB0aGUgdHJhZGl0aW9uISA7LSkgVGhpcyBtYWlubHkgbWVhbnM6IDItbGV2ZWwgaW5kZW50cywgdXNpbmcgc3BhY2VzCi0gb25seSAobm8gdGFicykgYW5kIGhhdmluZyB0aGUgb3BlbmluZyBicmFjZSAoeykgb24gdGhlIHNhbWUgbGluZSBhcyB0aGUgaWYoKQotIG9yIHdoaWxlKCkuCi0KLSBBbHNvIG5vdGUgdGhhdCB3ZSB1c2UgaWYoKSBhbmQgd2hpbGUoKSB3aXRoIG5vIHNwYWNlIGJlZm9yZSB0aGUgcGFyZW50aGVzaXMuCi0KLTIuMyBDb21tZW50aW5nCi0KLSBDb21tZW50IHlvdXIgc291cmNlIGNvZGUgZXh0ZW5zaXZlbHkgdXNpbmcgQyBjb21tZW50cyAoLyogY29tbWVudCAqLyksIERPIE5PVAotIHVzZSBDKysgY29tbWVudHMgKC8vIHRoaXMgc3R5bGUpLiBDb21tZW50ZWQgY29kZSBpcyBxdWFsaXR5IGNvZGUgYW5kIGVuYWJsZXMKLSBmdXR1cmUgbW9kaWZpY2F0aW9ucyBtdWNoIG1vcmUuIFVuY29tbWVudGVkIGNvZGUgcmlzayBoYXZpbmcgdG8gYmUgY29tcGxldGVseQotIHJlcGxhY2VkIHdoZW4gc29tZW9uZSB3YW50cyB0byBleHRlbmQgdGhpbmdzLCBzaW5jZSBvdGhlciBwZXJzb25zJyBzb3VyY2UKLSBjb2RlIGNhbiBnZXQgcXVpdGUgaGFyZCB0byByZWFkLgotCi0yLjQgTGluZSBMZW5ndGhzCi0KLSBXZSB3cml0ZSBzb3VyY2UgbGluZXMgc2hvcnRlciB0aGFuIDgwIGNvbHVtbnMuCi0KLTIuNSBHZW5lcmFsIFN0eWxlCi0KLSBLZWVwIHlvdXIgZnVuY3Rpb25zIHNtYWxsLiBJZiB0aGV5J3JlIHNtYWxsIHlvdSBhdm9pZCBhIGxvdCBvZiBtaXN0YWtlcyBhbmQKLSB5b3UgZG9uJ3QgYWNjaWRlbnRhbGx5IG1peCB1cCB2YXJpYWJsZXMgZXRjLgotCi0yLjYgTm9uLWNsb2JiZXJpbmcgQWxsIE92ZXIKKzIuMiBOb24tY2xvYmJlcmluZyBBbGwgT3ZlcgogCiAgV2hlbiB5b3Ugd3JpdGUgbmV3IGZ1bmN0aW9uYWxpdHkgb3IgZml4IGJ1Z3MsIGl0IGlzIGltcG9ydGFudCB0aGF0IHlvdSBkb24ndAogIGZpZGRsZSBhbGwgb3ZlciB0aGUgc291cmNlIGZpbGVzIGFuZCBmdW5jdGlvbnMuIFJlbWVtYmVyIHRoYXQgaXQgaXMgbGlrZWx5CkBAIC0xMzcsMTQgKzk5LDcgQEAKICBmdW5jdGlvbmFsaXR5LCB0cnkgd3JpdGluZyBpdCBpbiBhIG5ldyBzb3VyY2UgZmlsZS4gSWYgeW91IGZpeCBidWdzLCB0cnkgdG8KICBmaXggb25lIGJ1ZyBhdCBhIHRpbWUgYW5kIHNlbmQgdGhlbSBhcyBzZXBhcmF0ZSBwYXRjaGVzLgogCi0yLjcgUGxhdGZvcm0gRGVwZW5kZW50IENvZGUKLQotIFVzZSAjaWZkZWYgSEFWRV9GRUFUVVJFIHRvIGRvIGNvbmRpdGlvbmFsIGNvZGUuIFdlIGF2b2lkIGNoZWNraW5nIGZvcgotIHBhcnRpY3VsYXIgb3BlcmF0aW5nIHN5c3RlbXMgb3IgaGFyZHdhcmUgaW4gdGhlICNpZmRlZiBsaW5lcy4gVGhlCi0gSEFWRV9GRUFUVVJFIHNoYWxsIGJlIGdlbmVyYXRlZCBieSB0aGUgY29uZmlndXJlIHNjcmlwdCBmb3IgdW5peC1saWtlIHN5c3RlbXMKLSBhbmQgdGhleSBhcmUgaGFyZC1jb2RlZCBpbiB0aGUgY29uZmlnLVtzeXN0ZW1dLmggZmlsZXMgZm9yIHRoZSBvdGhlcnMuCi0KLTIuOCBXcml0ZSBTZXBhcmF0ZSBQYXRjaGVzCisyLjMgV3JpdGUgU2VwYXJhdGUgUGF0Y2hlcwogCiAgSXQgaXMgYW5ub3lpbmcgd2hlbiB5b3UgZ2V0IGEgaHVnZSBwYXRjaCBmcm9tIHNvbWVvbmUgdGhhdCBpcyBzYWlkIHRvIGZpeCA1MTEKICBvZGQgcHJvYmxlbXMsIGJ1dCBkaXNjdXNzaW9ucyBhbmQgb3BpbmlvbnMgZG9uJ3QgYWdyZWUgd2l0aCA1MTAgb2YgdGhlbSAtIG9yCkBAIC0xNTgsMTQgKzExMywxNCBAQAogIEFsc28sIHNlcGFyYXRlIHBhdGNoZXMgZW5hYmxlIGJpc2VjdGluZyBtdWNoIGJldHRlciB3aGVuIHdlIHRyYWNrIHByb2JsZW1zIGluCiAgdGhlIGZ1dHVyZS4KIAotMi45IFBhdGNoIEFnYWluc3QgUmVjZW50IFNvdXJjZXMKKzIuNCBQYXRjaCBBZ2FpbnN0IFJlY2VudCBTb3VyY2VzCiAKICBQbGVhc2UgdHJ5IHRvIGdldCB0aGUgbGF0ZXN0IGF2YWlsYWJsZSBzb3VyY2VzIHRvIG1ha2UgeW91ciBwYXRjaGVzCiAgYWdhaW5zdC4gSXQgbWFrZXMgdGhlIGxpZmUgb2YgdGhlIGRldmVsb3BlcnMgc28gbXVjaCBlYXNpZXIuIFRoZSB2ZXJ5IGJlc3QgaXMKICBpZiB5b3UgZ2V0IHRoZSBtb3N0IHVwLXRvLWRhdGUgc291cmNlcyBmcm9tIHRoZSBnaXQgcmVwb3NpdG9yeSwgYnV0IHRoZQogIGxhdGVzdCByZWxlYXNlIGFyY2hpdmUgaXMgcXVpdGUgT0sgYXMgd2VsbCEKIAotMi4xMCBEb2N1bWVudAorMi41IERvY3VtZW50CiAKICBXcml0aW5nIGRvY3MgaXMgZGVhZCBib3JpbmcgYW5kIG9uZSBvZiB0aGUgYmlnIHByb2JsZW1zIHdpdGggbWFueSBvcGVuIHNvdXJjZQogIHByb2plY3RzLiBTb21lb25lJ3MgZ290dGEgZG8gaXQuIEl0IG1ha2VzIGl0IGEgbG90IGVhc2llciBpZiB5b3Ugc3VibWl0IGEKQEAgLTE3Niw3ICsxMzEsNyBAQAogIEFTQ0lJIGZpbGVzLiBBbGwgSFRNTCBmaWxlcyBvbiB0aGUgd2ViIHNpdGUgYW5kIGluIHRoZSByZWxlYXNlIGFyY2hpdmVzIGFyZQogIGdlbmVyYXRlZCBmcm9tIHRoZSBucm9mZi9BU0NJSSB2ZXJzaW9ucy4KIAotMi4xMSBUZXN0IENhc2VzCisyLjYgVGVzdCBDYXNlcwogCiAgU2luY2UgdGhlIGludHJvZHVjdGlvbiBvZiB0aGUgdGVzdCBzdWl0ZSwgd2UgY2FuIHF1aWNrbHkgdmVyaWZ5IHRoYXQgdGhlIG1haW4KICBmZWF0dXJlcyBhcmUgd29ya2luZyBhcyB0aGV5J3JlIHN1cHBvc2VkIHRvLiBUbyBtYWludGFpbiB0aGlzIHNpdHVhdGlvbiBhbmQKQEAgLTIwMyw3ICsxNTgsNyBAQAogCiAgWW91IG5lZWQgdG8gZmlyc3QgY2hlY2tvdXQgdGhlIHJlcG9zaXRvcnk6CiAKLSAgICAgZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9iYWdkZXIvY3VybC5naXQKKyAgICAgZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9jdXJsL2N1cmwuZ2l0CiAKICBZb3UgdGhlbiBwcm9jZWVkIGFuZCBlZGl0IGFsbCB0aGUgZmlsZXMgeW91IGxpa2UgYW5kIHlvdSBjb21taXQgdGhlbSB0byB5b3VyCiAgbG9jYWwgcmVwb3NpdG9yeToKZGlmZiAtLWdpdCBhL2RvY3MvRElTVFJPLURJTEVNTUEgYi9kb2NzL0RJU1RSTy1ESUxFTU1BCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZDMxN2ZkLi4wMDAwMDAwCi0tLSBhL2RvY3MvRElTVFJPLURJTEVNTUEKKysrIC9kZXYvbnVsbApAQCAtMSwxNzYgKzAsMCBAQAotICBEYXRlOiBGZWJydWFyeSAxMSwgMjAwNwotICBBdXRob3I6IERhbmllbCBTdGVuYmVyZyA8ZGFuaWVsQGhheHguc2U+Ci0gIFVSTDogaHR0cDovL2N1cmwuaGF4eC5zZS9sZWdhbC9kaXN0cm8tZGlsZW1tYS5odG1sCi0KLUNvbmRpdGlvbgotCi0gVGhpcyBkb2N1bWVudCBpcyB3cml0dGVuIHRvIGRlc2NyaWJlIHRoZSBzaXR1YXRpb24gYXMgaXQgaXMgcmlnaHQgbm93LgotIGxpYmN1cmwgNy4xNi4xIGlzIGN1cnJlbnRseSB0aGUgbGF0ZXN0IHZlcnNpb24gYXZhaWxhYmxlLiBUaGluZ3MgbWF5IG9mCi0gY291cnNlIGNoYW5nZSBpbiB0aGUgZnV0dXJlLgotCi0gVGhpcyBkb2N1bWVudCByZWZsZWN0cyBteSB2aWV3IGFuZCB1bmRlcnN0YW5kaW5nIG9mIHRoZXNlIHRoaW5ncy4gUGxlYXNlIHRlbGwKLSBtZSB3aGVyZSBhbmQgaG93IHlvdSB0aGluayBJJ20gd3JvbmcsIGFuZCBJJ2xsIHRyeSB0byBjb3JyZWN0IG15IG1pc3Rha2VzLgotCi1CYWNrZ3JvdW5kCi0KLSBUaGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIGhhcyBkZWVtZWQgdGhlIE9yaWdpbmFsIEJTRCBsaWNlbnNlWzFdIHRvIGJlCi0gImluY29tcGF0aWJsZSJbMl0gd2l0aCBHUExbM10uIEknZCByYXRoZXIgc2F5IGl0IGlzIHRoZSBvdGhlciB3YXkgYXJvdW5kLCBidXQKLSB0aGUgcG9pbnQgaXMgdGhlIHNhbWU6IGlmIHlvdSBkaXN0cmlidXRlIGEgYmluYXJ5IHZlcnNpb24gb2YgYSBHUEwgcHJvZ3JhbSwKLSBpdCBNVVNUIE5PVCBiZSBsaW5rZWQgd2l0aCBhbnkgT3JpZ2luYWwgQlNELWxpY2Vuc2VkIHBhcnRzIG9yIGxpYnJhcmllcy4KLSBEb2luZyBzbyB3aWxsIHZpb2xhdGUgdGhlIEdQTCBsaWNlbnNlLiBGb3IgYSBsb25nIHRpbWUsIHZlcnkgbWFueSBHUEwKLSBsaWNlbnNlZCBwcm9ncmFtcyBoYXZlIGF2b2lkZWQgdGhpcyBsaWNlbnNlIG1lc3MgYnkgYWRkaW5nIGFuIGV4Y2VwdGlvbls4XSB0bwotIHRoZWlyIGxpY2Vuc2UuIEFuZCBtYW55IG90aGVycyBoYXZlIGp1c3QgY2xvc2VkIHRoZWlyIGV5ZXMgZm9yIHRoaXMgcHJvYmxlbS4KLQotIGxpYmN1cmwgaXMgTUlULXN0eWxlWzRdIGxpY2Vuc2VkIC0gaG93IG9uIGVhcnRoIGRpZCB0aGlzIGRpbGVtbWEgZmFsbCBvbnRvCi0gb3VyIHBsYXRlcz8KLQotIGxpYmN1cmwgaXMgb25seSBhIGxpdHRsZSBsaWJyYXJ5LiBsaWJjdXJsIGNhbiBiZSBidWlsdCB0byB1c2UgT3BlblNTTCBmb3IgaXRzCi0gU1NML1RMUyBjYXBhYmlsaXRpZXMuIE9wZW5TU0wgaXMgYmFzaWNhbGx5IE9yaWdpbmFsIEJTRCBsaWNlbnNlZFs1XS4KLQotIElmIGxpYmN1cmwgYnVpbHQgdG8gdXNlIE9wZW5TU0wgaXMgdXNlZCBieSBhIEdQTC1saWNlbnNlZCBhcHBsaWNhdGlvbiBhbmQgeW91Ci0gZGVjaWRlIHRvIGRpc3RyaWJ1dGUgYSBiaW5hcnkgdmVyc2lvbiBvZiBpdCAoTGludXggZGlzdHJvcyAtIGZvciBleGFtcGxlIC0KLSB0ZW5kIHRvKSwgeW91IGhhdmUgYSBjbGFzaC4gR1BMIHZzIE9yaWdpbmFsIEJTRC4KLQotIFRoaXMgZGlsZW1tYSBpcyBub3QgbGliY3VybC1zcGVjaWZpYyBub3IgaXMgaXQgc3BlY2lmaWMgdG8gYW55IHBhcnRpY3VsYXIKLSBMaW51eCBkaXN0cm8uIChUaGlzIGFydGljbGUgbWVudGlvbnMgYW5kIHJlZmVycyB0byBEZWJpYW4gc2V2ZXJhbCB0aW1lcywgYnV0Ci0gb25seSBiZWNhdXNlIERlYmlhbiBzZWVtcyB0byBiZSB0aGUgb25seSBMaW51eCBkaXN0cm8gdG8gaGF2ZSBmYWNlZCB0aGlzCi0gaXNzdWUgeWV0IHNpbmNlIG5vIG90aGVyIGRpc3RybyBpcyBzaGlwcGluZyBsaWJjdXJsIGJ1aWx0IHdpdGggdHdvIFNTTAotIGxpYnJhcmllcy4pCi0KLVBhcnQgb2YgdGhlIE9wZXJhdGluZyBTeXN0ZW0KLQotIFRoaXMgd291bGQgbm90IGJlIGEgcHJvYmxlbSBpZiB0aGUgdXNlZCBsaWIgd291bGQgYmUgY29uc2lkZXJlZCBwYXJ0IG9mIHRoZQotIHVuZGVybHlpbmcgb3BlcmF0aW5nIHN5c3RlbSwgYXMgdGhlbiB0aGUgR1BMIGxpY2Vuc2UgaGFzIGFuIGV4Y2VwdGlvbgotIGNsYXVzZVs2XSB0aGF0IGFsbG93cyBhcHBsaWNhdGlvbnMgdG8gdXNlIHN1Y2ggbGlicyB3aXRob3V0IGhhdmluZyB0byBiZQotIGFsbG93ZWQgdG8gZGlzdHJpYnV0ZSBpdCBvciBpdHMgc291cmNlcy4gUG9zc2libHkgc29tZSBkaXN0cm9zIHdpbGwgY2xhaW0KLSB0aGF0IE9wZW5TU0wgaXMgcGFydCBvZiB0aGVpciBvcGVyYXRpbmcgc3lzdGVtLgotCi0gRGViaWFuIGRvZXMgaG93ZXZlciBub3QgdGFrZSB0aGlzIHN0YW5jZSBhbmQgaGFzIG9mZmljaWFsbHkoPykgY2xhaW1lZCB0aGF0Ci0gT3BlblNTTCBpcyBub3QgYSByZXF1aXJlZCBwYXJ0IG9mIHRoZSBEZWJpYW4gb3BlcmF0aW5nIHN5c3RlbQotCi0gU29tZSBwZW9wbGUgY2xhaW0gdGhhdCB0aGlzIHBhcmFncmFwaCBjYW5ub3QgYmUgZXhwbG9pdGVkIHRoaXMgd2F5IGJ5IGEgTGludXgKLSBkaXN0cm8sIGJ1dCBJIGFtIG5vdCBhIGxhd3llciBhbmQgdGhhdCBpcyBhIGRpc2N1c3Npb24gbGVmdCBvdXRzaWRlIG9mIHRoaXMKLSBkb2N1bWVudC4KLQotR251VExTCi0KLSBTaW5jZSBNYXkgMjAwNSBsaWJjdXJsIGNhbiBnZXQgYnVpbHQgdG8gdXNlIEdudVRMUyBpbnN0ZWFkIG9mIE9wZW5TU0wuIEdudVRMUwotIGlzIGFuIExHUExbN10gbGljZW5zZWQgbGlicmFyeSB0aGF0IG9mZmVycyBhIG1hdGNoaW5nIHNldCBvZiBmZWF0dXJlcyBhcwotIE9wZW5TU0wgZG9lcy4gTm93LCB5b3UgY2FuIGJ1aWxkIGFuZCBkaXN0cmlidXRlIGFuIFRMUy9TU0wgY2FwYWJsZSBsaWJjdXJsCi0gd2l0aG91dCBpbmNsdWRpbmcgYW55IE9yaWdpbmFsIEJTRCBsaWNlbnNlZCBjb2RlLgotCi0gSSBiZWxpZXZlIERlYmlhbiBpcyB0aGUgZmlyc3QgKG9ubHk/KSBkaXN0cm8gdGhhdCBwcm92aWRlcyBsaWJjdXJsL0dudVRMUwotIHBhY2thZ2VzLgotCi15YXNzbAotCi0gbGliY3VybCBjYW4gZ2V0IGFsc28gZ2V0IGJ1aWx0IHRvIHVzZSB5YXNzbCBmb3IgdGhlIFRMUy9TU0wgbGF5ZXIuIHlhc3NsIGlzIGEKLSBHUExbM10gbGljZW5zZWQgbGlicmFyeS4KLQotCi1HbnVUTFMgdnMgT3BlblNTTCB2cyB5YXNzbAotCi0gV2hpbGUgdGhlc2UgdGhyZWUgbGlicmFyaWVzIG9mZmVyIHNpbWlsYXIgZmVhdHVyZXMsIHRoZXkgYXJlIG5vdCBlcXVhbC4KLSBsaWJjdXJsIGRvZXMgbm90ICh5ZXQpIG9mZmVyIGEgc3RhbmRhcmRpemVkIHN0YWJsZSBBQkkgaWYgeW91IGRlY2lkZSB0bwotIHN3aXRjaCBmcm9tIHVzaW5nIGxpYmN1cmwtb3BlbnNzbCB0byBsaWJjdXJsLWdudXRscyBvciB2aWNlLXZlcnNhLiBUaGUgR251VExTCi0gYW5kIHlhc3NsIHN1cHBvcnQgaXMgdmVyeSByZWNlbnQgaW4gbGliY3VybCBhbmQgaXQgaGFzIG5vdCBiZWVuIHRlc3RlZCBub3IKLSB1c2VkIHZlcnkgZXh0ZW5zaXZlbHksIHdoaWxlIHRoZSBPcGVuU1NMIGVxdWl2YWxlbnQgY29kZSBoYXMgYmVlbiB1c2VkIGFuZAotIHRodXMgbWF0dXJlZCBzaW5jZSAxOTk5LgotCi0gR251VExTCi0gICAtIExHUEwgbGljZW5zZWQKLSAgIC0gc3VwcG9ydHMgU1JQCi0gICAtIGxhY2tzIFNTTHYyIHN1cHBvcnQKLSAgIC0gbGFja3MgTUQyIHN1cHBvcnQgKHVzZWQgYnkgYXQgbGVhc3Qgc29tZSBDQSBjZXJ0cykKLSAgIC0gbGFja3MgdGhlIGNyeXB0byBmdW5jdGlvbnMgbGliY3VybCB1c2VzIGZvciBOVExNCi0KLSBPcGVuU1NMCi0gICAtIE9yaWdpbmFsIEJTRCBsaWNlbnNlZAotICAgLSBsYWNrcyBTUlAKLSAgIC0gc3VwcG9ydHMgU1NMdjIKLSAgIC0gb2xkZXIgYW5kIG1vcmUgd2lkZWx5IHVzZWQKLSAgIC0gcHJvdmlkZXMgY3J5cHRvIGZ1bmN0aW9ucyBsaWJjdXJsIHVzZXMgZm9yIE5UTE0KLSAgIC0gbGliY3VybCBjYW4gZG8gbm9uLWJsb2NraW5nIGNvbm5lY3RzIHdpdGggaXQgaW4gNy4xNS40IGFuZCBsYXRlcgotCi0geWFzc2wKLSAgIC0gR1BMIGxpY2Vuc2VkCi0gICAtIG11Y2ggdW50ZXN0ZWQgYW5kIHVucHJvdmVuIGluIHRoZSByZWFsIHdvcmsgYnkgKGxpYiljdXJsIHVzZXJzIHNvIHdlIGRvbid0Ci0gICAgIGtub3cgYSBsb3QgYWJvdXQgcmVzdHJpY3Rpb25zIG9yIGJlbmVmaXRzIGZyb20gdXNpbmcgdGhpcwotCi1UaGUgQmV0dGVyIExpY2Vuc2UsIE9yaWdpbmFsIEJTRCwgR1BMIG9yIExHUEw/Ci0KLSBJdCBpc24ndCBvYnZpb3VzIG9yIHdpdGhvdXQgZGViYXRlIHRvIGFueSBvYmplY3RpdmUgaW50ZXJlc3RlZCBwYXJ0eSB0aGF0Ci0gZWl0aGVyIG9mIHRoZXNlIGxpY2Vuc2VzIGFyZSB0aGUgImJldHRlciIgb3IgZXZlbiB0aGUgInByZWZlcnJlZCIgb25lIGluIGEKLSBnZW5lcmljIHNpdHVhdGlvbi4KLQotIEluc3RlYWQsIEkgdGhpbmsgd2Ugc2hvdWxkIGFjY2VwdCB0aGUgZmFjdCB0aGF0IHRoZSBTU0wvVExTIGxpYnJhcmllcyBhbmQKLSB0aGVpciBkaWZmZXJlbnQgbGljZW5zZXMgd2lsbCBmaXQgZGlmZmVyZW50IGFwcGxpY2F0aW9ucyBhbmQgdGhlaXIgYXV0aG9ycwotIGRpZmZlcmVudGx5IGRlcGVuZGluZyBvbiB0aGUgYXBwbGljYXRpb25zJyBsaWNlbnNlcyBhbmQgdGhlaXIgZ2VuZXJhbCB1c2FnZQotIHBhdHRlcm4gKGNvbnNpZGVyaW5nIGhvdyBHUEwgYW5kIExHUEwgbGlicmFyaWVzIGZvciBleGFtcGxlIGNhbiBiZSBidXJkZW5zb21lCi0gZm9yIGVtYmVkZGVkIHN5c3RlbXMgdXNhZ2UpLgotCi0gSW4gRGViaWFuIGxhbmQsIHRoZXJlIHNlZW1zIHRvIGJlIGEgY29tbW9uIG9waW5pb24gdGhhdCBMR1BMIGlzICJtYXhpbWFsbHkKLSBjb21wYXRpYmxlIiB3aXRoIGFwcHMgd2hpbGUgT3JpZ2luYWwgQlNEIGlzIG5vdC4gTGlrZSB0aGlzOgotCi0gICAgICAgIGh0dHBzOi8vbGlzdHMuZGViaWFuLm9yZy9kZWJpYW4tZGV2ZWwvMjAwNS8wOS9tc2cwMTQxNy5odG1sCi0KLU1vcmUgU1NMIExpYnJhcmllcwotCi0gSW4gbGliY3VybCwgdGhlcmUncyBubyBzdG9wcGluZyB1cyBoZXJlLiBUaGVyZSBhcmUgbW9yZSBPcGVuIFNvdXJjZS9GcmVlCi0gU1NML1RMUyBsaWJyYXJpZXMgb3V0IHRoZXJlIGFuZCB3ZSB3b3VsZCB2ZXJ5IG11Y2ggbGlrZSB0byBzdXBwb3J0IHRoZW0gYXMKLSB3ZWxsLCB0byBvZmZlciBhcHBsaWNhdGlvbiBhdXRob3JzIGFuIGV2ZW4gd2lkZXIgc2NvcGUgb2YgY2hvaWNlLgotCi1BcHBsaWNhdGlvbiBBbmdsZSBvZiB0aGlzIFByb2JsZW0KLQotIGxpYmN1cmwgaXMgYnVpbHQgdG8gdXNlIG9uZSBTU0wvVExTIGxpYnJhcnkuIEl0IHVzZXMgYSBzaW5nbGUgZml4ZWQgbmFtZSAoYnkKLSBkZWZhdWx0KSBvbiB0aGUgYnVpbHQvY3JlYXRlZCBsaWIgZmlsZSwgYW5kIGFwcGxpY2F0aW9ucyBhcmUgYnVpbHQvbGlua2VkIHRvCi0gdXNlIHRoYXQgc2luZ2xlIGxpYi4gUmVwbGFjaW5nIG9uZSBsaWJjdXJsIGluc3RhbmNlIHdpdGggYW5vdGhlciBvbmUgdGhhdAotIHVzZXMgdGhlIG90aGVyIFNTTC9UTFMgbGlicmFyeSBtaWdodCBicmVhayBvbmUgb3IgbW9yZSBhcHBsaWNhdGlvbnMgKGR1ZSB0bwotIEFCSSBkaWZmZXJlbmNlcyBhbmQvb3IgZGlmZmVyZW50IGZlYXR1cmUgc2V0KS4gWW91IHdhbnQgeW91ciBhcHBsaWNhdGlvbiB0bwotIHVzZSB0aGUgbGliY3VybCBpdCB3YXMgYnVpbHQgZm9yLgotCi1Qcm9qZWN0IGNVUkwgQW5nbGUgb2YgdGhpcyBQcm9ibGVtCi0KLSBXZSBkaXN0cmlidXRlIGxpYmN1cmwgYW5kIGV2ZXJ5b25lIG1heSBidWlsZCBsaWJjdXJsIHdpdGggZWl0aGVyIGxpYnJhcnkgYXQKLSB0aGVpciBjaG9pY2UuIFRoaXMgcHJvYmxlbSBpcyBub3QgZGlyZWN0bHkgYSBwcm9ibGVtIG9mIG91cnMuIEl0IG1lcmVseQotIGFmZmVjdHMgdXNlcnMgLSBHUEwgYXBwbGljYXRpb24gYXV0aG9ycyBvbmx5IC0gb2Ygb3VyIGxpYiBhcyBpdCBjb21lcwotIGluY2x1ZGVkIGFuZCBkZWxpdmVyZWQgb24gc29tZSBkaXN0cm9zLgotCi0gbGliY3VybCBoYXMgZGlmZmVyZW50IEFCSSB3aGVuIGJ1aWx0IHdpdGggZGlmZmVyZW50IFNTTC9UTFMgbGlicmFyaWVzIGR1ZSB0bwotIHRoZXNlIHJlYXNvbnM6Ci0KLSAxLiBObyBvbmUgaGFzIHdvcmtlZCBvbiBmaXhpbmcgdGhpcy4gVGhlIG11dGV4L2xvY2sgY2FsbGJhY2tzIHNob3VsZCBiZSBzZXQKLSAgICB3aXRoIGEgZ2VuZXJpYyBsaWJjdXJsIGZ1bmN0aW9uIHRoYXQgc2hvdWxkIHVzZSB0aGUgcHJvcGVyIHVuZGVybHlpbmcKLSAgICBmdW5jdGlvbnMuCi0KLSAyLiBUaGUgQ1VSTE9QVF9TU0xfQ1RYX0ZVTkNUSU9OIG9wdGlvbiBpcyBub3QgcG9zc2libGUgdG8gImVtdWxhdGUiIG9uIEdudVRMUwotICAgIGJ1dCBzaW1wbHkgcmVxdWlyZXMgT3BlblNTTC4KLQotIDMuIFRoZXJlIG1pZ2h0IGJlIHNvbWUgb3RoZXIgc3VidGxlIGRpZmZlcmVuY2VzIGp1c3QgYmVjYXVzZSBub2JvZHkgaGFzIHlldAotICAgIHRyaWVkIHRvIG1ha2UgYSBmaXhlZCBBQkkgbGlrZSB0aGlzLgotCi1EaXN0cm8gQW5nbGUgb2YgdGhpcyBQcm9ibGVtCi0KLSBUbyBteSBrbm93bGVkZ2UgdGhlcmUgaXMgb25seSBvbmUgZGlzdHJvIHRoYXQgc2hpcHMgbGliY3VybCBidWlsdCB3aXRoIGVpdGhlcgotIE9wZW5TU0wgb3IgR251VExTLgotCi0gRGViaWFuIExpbnV4IGlzIG5vdyAoc2luY2UgbWlkIFNlcHRlbWJlciAyMDA1KSBwcm92aWRpbmcgdHdvIGRpZmZlcmVudAotIGxpYmN1cmwgcGFja2FnZXMsIG9uZSBmb3IgbGliY3VybCBidWlsdCB3aXRoIE9wZW5TU0wgYW5kIG9uZSBidWlsdCB3aXRoCi0gR251VExTLiBUaGV5IHVzZSBkaWZmZXJlbnQgLnNvIG5hbWVzIGFuZCBjYW4gdGhpcyBib3RoIGJlIGluc3RhbGxlZCBpbiBhCi0gc2luZ2xlIHN5c3RlbSBzaW11bHRhbmVvdXNseS4gVGhpcyBoYXMgYmVlbiBzYWlkIHRvIGJlIGEgdHJhbnNpdGlvbmFsIHN5c3RlbQotIG5vdCBkZXNpcmVkIHRvIGtlZXAgaW4gdGhlIGxvbmcgcnVuLgotCi1Gb290bm90ZXMKLQotIFsxXSA9IGh0dHA6Ly93d3cueGZyZWU4Ni5vcmcvMy4zLjYvQ09QWVJJR0hUMi5odG1sIzYKLSBbMl0gPSBodHRwczovL3d3dy5nbnUub3JnL3BoaWxvc29waHkvYnNkLmh0bWwKLSBbM10gPSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC5odG1sCi0gWzRdID0gaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sCi0gWzVdID0gaHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvc291cmNlL2xpY2Vuc2UuaHRtbAotIFs2XSA9IGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLmh0bWwgZW5kIG9mIHNlY3Rpb24gMwotIFs3XSA9IGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGdwbC5odG1sCi0gWzhdID0gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvT3BlblNTTF9leGNlcHRpb24KLQotRmVlZGJhY2svVXBkYXRlcyBwcm92aWRlZCBieQotCi0gRXJpYyBDb29wZXIKZGlmZiAtLWdpdCBhL2RvY3MvRkFRIGIvZG9jcy9GQVEKaW5kZXggMDZhMzA2ZC4uOGNlNTIxNyAxMDA2NDQKLS0tIGEvZG9jcy9GQVEKKysrIGIvZG9jcy9GQVEKQEAgLTMwLDYgKzMwLDcgQEAKICAgMi4yIERvZXMgY3VybCB3b3JrL2J1aWxkIHdpdGggb3RoZXIgU1NMIGxpYnJhcmllcz8KICAgMi4zIFdoZXJlIGNhbiBJIGZpbmQgYSBjb3B5IG9mIExJQkVBWTMyLkRMTD8KICAgMi40IERvZXMgY3VybCBzdXBwb3J0IFNPQ0tTIChSRkMgMTkyOCkgPworICAyLjUgSW5zdGFsbCBsaWJjdXJsIGZvciBib3RoIDMyYml0IGFuZCA2NGJpdD8KIAogIDMuIFVzYWdlIFByb2JsZW1zCiAgIDMuMSBjdXJsOiAoMSkgU1NMIGlzIGRpc2FibGVkLCBodHRwczogbm90IHN1cHBvcnRlZApAQCAtMjI1LDcgKzIyNiw5IEBACiAgIGltcGxlbWVudCBpdCBmb3IgeW91LCB0aGF0IGlzIG5vdCBhIHZlcnkgZnJpZW5kbHkgYXR0aXR1ZGUuIFdlIHNwZW5kIGEKICAgY29uc2lkZXJhYmxlIHRpbWUgYWxyZWFkeSBvbiBtYWludGFpbmluZyBhbmQgZGV2ZWxvcGluZyBjdXJsLiBJbiBvcmRlciB0bwogICBnZXQgbW9yZSBvdXQgb2YgdXMsIHlvdSBzaG91bGQgY29uc2lkZXIgdHJhZGluZyBpbiBzb21lIG9mIHlvdXIgdGltZSBhbmQKLSAgZWZmb3J0cyBpbiByZXR1cm4uCisgIGVmZm9ydHMgaW4gcmV0dXJuLiBTaW1wbHkgZ28gdG8gdGhlIEdpdEh1YiByZXBvIHdoaWNoIHJlc2lkZXMgYXQKKyAgaHR0cHM6Ly9naXRodWIuY29tL2N1cmwvY3VybCwgZm9yayB0aGUgcHJvamVjdCwgYW5kIGNyZWF0ZSBwdWxsIHJlcXVlc3RzCisgIHdpdGggeW91ciBwcm9wb3NlZCBjaGFuZ2VzLgogCiAgIElmIHlvdSB3cml0ZSB0aGUgY29kZSwgY2hhbmNlcyBhcmUgYmlnZ2VyIHRoYXQgaXQgd2lsbCBnZXQgaW50byBjdXJsIGZhc3Rlci4KIApAQCAtMjUxLDkgKzI1NCwxMCBAQAogCiAgIFdlIHN0aWxsIGdldCBoZWxwIGZyb20gY29tcGFuaWVzLiBIYXh4IHByb3ZpZGVzIHdlYiBzaXRlLCBiYW5kd2lkdGgsIG1haWxpbmcKICAgbGlzdHMgZXRjLCBzb3VyY2Vmb3JnZS5uZXQgaG9zdHMgcHJvamVjdCBzZXJ2aWNlcyB3ZSB0YWtlIGFkdmFudGFnZSBmcm9tLAotICBsaWtlIHRoZSBidWcgdHJhY2tlciBhbmQgZ2l0aHViIGhvc3RzIHRoZSBwcmltYXJ5IGdpdCByZXBvc2l0b3J5LiBBbHNvCi0gIGFnYWluLCBzb21lIGNvbXBhbmllcyBoYXZlIHNwb25zb3JlZCBjZXJ0YWluIHBhcnRzIG9mIHRoZSBkZXZlbG9wbWVudCBpbiB0aGUKLSAgcGFzdCBhbmQgSSBob3BlIHNvbWUgd2lsbCBjb250aW51ZSB0byBkbyBzbyBpbiB0aGUgZnV0dXJlLgorICBsaWtlIHRoZSBidWcgdHJhY2tlciwgYW5kIEdpdEh1YiBob3N0cyB0aGUgcHJpbWFyeSBnaXQgcmVwb3NpdG9yeSBhdAorICBodHRwczovL2dpdGh1Yi5jb20vY3VybC9jdXJsLiBBbHNvIGFnYWluLCBzb21lIGNvbXBhbmllcyBoYXZlIHNwb25zb3JlZAorICBjZXJ0YWluIHBhcnRzIG9mIHRoZSBkZXZlbG9wbWVudCBpbiB0aGUgcGFzdCBhbmQgSSBob3BlIHNvbWUgd2lsbCBjb250aW51ZSB0bworICBkbyBzbyBpbiB0aGUgZnV0dXJlLgogCiAgIElmIHlvdSB3YW50IHRvIHN1cHBvcnQgb3VyIHByb2plY3QsIGNvbnNpZGVyIGEgZG9uYXRpb24gb3IgYSBiYW5uZXItcHJvZ3JhbQogICBvciBldmVuIGJldHRlcjogYnkgaGVscGluZyB1cyBjb2RpbmcsIGRvY3VtZW50aW5nLCB0ZXN0aW5nIGV0Yy4KQEAgLTI3OCw3ICsyODIsNyBAQAogICBQbGVhc2UgZG8gbm90IG1haWwgYW55IHNpbmdsZSBpbmRpdmlkdWFsIHVubGVzcyB5b3UgcmVhbGx5IG5lZWQgdG8uIEtlZXAKICAgY3VybC1yZWxhdGVkIHF1ZXN0aW9ucyBvbiBhIHN1aXRhYmxlIG1haWxpbmcgbGlzdC4gQWxsIGF2YWlsYWJsZSBtYWlsaW5nCiAgIGxpc3RzIGFyZSBsaXN0ZWQgaW4gdGhlIE1BTlVBTCBkb2N1bWVudCBhbmQgb25saW5lIGF0Ci0gIGh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC8KKyAgaHR0cHM6Ly9jdXJsLmhheHguc2UvbWFpbC8KIAogICBLZWVwaW5nIGN1cmwtcmVsYXRlZCBxdWVzdGlvbnMgYW5kIGRpc2N1c3Npb25zIG9uIG1haWxpbmcgbGlzdHMgYWxsb3dzCiAgIG90aGVycyB0byBqb2luIGluIGFuZCBoZWxwLCB0byBzaGFyZSB0aGVpciBpZGVhcywgY29udHJpYnV0ZSB0aGVpcgpAQCAtMjk5LDcgKzMwMyw3IEBACiAgIHlvdXIgY3VybC1yZWxhdGVkIHByb2JsZW1zLgogCiAgIFdlIGxpc3QgYXZhaWxhYmxlIGFsdGVybmF0aXZlcyBvbiB0aGUgY3VybCB3ZWIgc2l0ZToKLSAgaHR0cDovL2N1cmwuaGF4eC5zZS9zdXBwb3J0Lmh0bWwKKyAgaHR0cHM6Ly9jdXJsLmhheHguc2Uvc3VwcG9ydC5odG1sCiAKICAgMS4xMCBIb3cgbWFueSBhcmUgdXNpbmcgY3VybD8KIApAQCAtMzE2LDcgKzMyMCw3IEBACiAgIEluIE1heSAyMDEyIERhbmllbCBkaWQgYSBjb3VudGluZyBnYW1lIGFuZCBjYW1lIHVwIHdpdGggYSBudW1iZXIgdGhhdCBtYXkKICAgYmUgY29tcGxldGVseSB3cm9uZyBvciBzb21ld2hhdCBhY2N1cmF0ZS4gT3ZlciA1MDAgbWlsbGlvbiEKIAotICBTZWUgaHR0cDovL2RhbmllbC5oYXh4LnNlL2Jsb2cvMjAxMi8wNS8xNi8zMDBtLXVzZXJzLworICBTZWUgaHR0cHM6Ly9kYW5pZWwuaGF4eC5zZS9ibG9nLzIwMTIvMDUvMTYvMzAwbS11c2Vycy8KIAogICAxLjExIFdoeSBkb24ndCB5b3UgdXBkYXRlIGNhLWJ1bmRsZS5jcnQKIApAQCAtMzM4LDcgKzM0Miw3IEBACiAgIElmIHlvdSB3YW50IHRoZSBtb3N0IHJlY2VudCBjb2xsZWN0aW9uIG9mIGNhIGNlcnRzIHRoYXQgTW96aWxsYSBGaXJlZm94CiAgIHVzZXMsIHdlIHJlY29tbWVuZCB0aGF0IHlvdSBleHRyYWN0IHRoZSBjb2xsZWN0aW9uIHlvdXJzZWxmIGZyb20gTW96aWxsYQogICBGaXJlZm94IChieSBydW5uaW5nICdtYWtlIGNhLWJ1bmRsZSksIG9yIGJ5IHVzaW5nIG91ciBvbmxpbmUgc2VydmljZSBzZXR1cAotICBmb3IgdGhpcyBwdXJwb3NlOiBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY2FleHRyYWN0Lmh0bWwKKyAgZm9yIHRoaXMgcHVycG9zZTogaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jYWV4dHJhY3QuaHRtbAogCiAgIDEuMTIgSSBoYXZlIGEgcHJvYmxlbSB3aG8gY2FuIEkgY2hhdCB3aXRoPwogCkBAIC0zNTIsMTMgKzM1NiwxNSBAQAogICBjcnlwdG9ncmFwaHkuIFdoZW4gZG9pbmcgc28sIHRoZSBFeHBvcnQgQ29udHJvbCBDbGFzc2lmaWNhdGlvbiBOdW1iZXIgKEVDQ04pCiAgIGlzIHVzZWQgdG8gaWRlbnRpZnkgdGhlIGxldmVsIG9mIGV4cG9ydCBjb250cm9sIGV0Yy4KIAotICBBU0YgZ2l2ZXMgYSBnb29kIGV4cGxhbmF0aW9uIGF0IGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvZGV2L2NyeXB0by5odG1sCisgIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIGdpdmVzIGEgZ29vZCBleHBsYW5hdGlvbiBvZiBFQ0NOcyBhdAorICBodHRwczovL3d3dy5hcGFjaGUub3JnL2Rldi9jcnlwdG8uaHRtbAogCiAgIFdlIGJlbGlldmUgY3VybCdzIG51bWJlciBtaWdodCBiZSBFQ0NOIDVEMDAyLCBhbm90aGVyIHBvc3NpYmlsaXR5IGlzCi0gIDVEOTkyLiBJdCBzZWVtcyBuZWNlc3NhcnkgdG8gd3JpdGUgdGhlbSwgYXNraW5nIHRvIGNvbmZpcm0uCisgIDVEOTkyLiBJdCBzZWVtcyBuZWNlc3NhcnkgdG8gd3JpdGUgdGhlbSAodGhlIGF1dGhvcml0eSB0aGF0IGFkbWluaXN0ZXJzIEVDQ04KKyAgbnVtYmVycyksIGFza2luZyB0byBjb25maXJtLgogCi0gIENvbXByZWhlbnNpYmxlIGV4cGxhbmF0aW9ucyBvZiB0aGUgbWVhbmluZyBvZiBzdWNoIG51bWJlcnMgYW5kIGhvdyB0bwotICBvYnRhaW4gdGhlbSAocmVzcC4pIGFyZSBoZXJlCisgIENvbXByZWhlbnNpYmxlIGV4cGxhbmF0aW9ucyBvZiB0aGUgbWVhbmluZyBvZiBzdWNoIG51bWJlcnMgYW5kIGhvdyB0byBvYnRhaW4KKyAgdGhlbSAocmVzcC4pIGFyZSBoZXJlCiAKICAgaHR0cDovL3d3dy5iaXMuZG9jLmdvdi9saWNlbnNpbmcvZXhwb3J0aW5nYmFzaWNzLmh0bQogICBodHRwOi8vd3d3LmJpcy5kb2MuZ292L2xpY2Vuc2luZy9kb19pX25lZWRhbmVjY24uaHRtbApAQCAtNDQ0LDcgKzQ1MCw3IEBACiAgIEdudVRMUywgeWFzc2wsIE5TUywgUG9sYXJTU0wsIGF4VExTLCBTZWN1cmUgVHJhbnNwb3J0IChuYXRpdmUgaU9TL09TIFgpLAogICBXaW5TU0wgKG5hdGl2ZSBXaW5kb3dzKSBvciBHU0tpdCAobmF0aXZlIElCTSBpKS4gVGhleSBhbGwgaGF2ZSB0aGVpciBwcm9zCiAgIGFuZCBjb25zLCBhbmQgd2UgdHJ5IHRvIG1haW50YWluIGEgY29tcGFyaXNvbiBvZiB0aGVtIGhlcmU6Ci0gIGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9zc2wtY29tcGFyZWQuaHRtbAorICBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL3NzbC1jb21wYXJlZC5odG1sCiAKICAgMi4zIFdoZXJlIGNhbiBJIGZpbmQgYSBjb3B5IG9mIExJQkVBWTMyLkRMTD8KIApAQCAtNDU5LDYgKzQ2NSwzMiBAQAogCiAgIFllcywgU09DS1MgNCBhbmQgNSBhcmUgc3VwcG9ydGVkLgogCisgIDIuNSBJbnN0YWxsIGxpYmN1cmwgZm9yIGJvdGggMzJiaXQgYW5kIDY0Yml0PworCisgIEluIGN1cmwncyBjb25maWd1cmUgcHJvY2VkdXJlIG9uZSBvZiB0aGUgcmVndWxhciBpbmNsdWRlIGZpbGVzIGdldCBjcmVhdGVkCisgIHdpdGggcGxhdGZvcm0gc3BlY2lmaWMgaW5mb3JtYXRpb24uIFRoZSBmaWxlICdjdXJsL2N1cmxidWlsZC5oJyBpbiB0aGUKKyAgaW5zdGFsbGVkIGxpYmN1cmwgZmlsZSB0cmVlIGlzIHRoZXJlZm9yZSBzb21ld2hhdCB0aWVkIHRvIHRoYXQgcGFydGljdWxhcgorICBwbGF0Zm9ybS4KKworICBUbyBhbGxvdyBhcHBsaWNhdGlvbnMgdG8gZ2V0IGJ1aWx0IGZvciBlaXRoZXIgMzJiaXQgb3IgNjRiaXQgeW91IG5lZWQgdG8KKyAgaW5zdGFsbCBsaWJjdXJsIGhlYWRlcnMgZm9yIGJvdGggc2V0dXBzIGFuZCB1bmZvcnR1bmF0ZWx5IGN1cmwgZG9lc24ndCBkbworICB0aGlzIGF1dG9tYXRpY2FsbHkuCisKKyAgQSBjb21tb25seSB1c2VkIHByb2NlZHVyZSBpcyB0aGlzOgorCisgICAgICQgLi9jb25maWd1cmUgWzMyYml0IHBsYXRmb3JtXQorICAgICAkIG12IGN1cmwvY3VybGJ1aWxkLmggY3VybC9jdXJsYnVpbGQtMzJiaXQuaAorICAgICAkIC4vY29uZmlndXJlIFs2NGJpdCBwbGF0Zm9ybV0KKyAgICAgJCBtdiBjdXJsL2N1cmxidWlsZC5oIGN1cmwvY3VybGJ1aWxkLTY0Yml0LmgKKworICBUaGVuIHlvdSBtYWtlIGEgdG9wbGV2ZWwgY3VybC9jdXJsYnVpbGQuaCByZXBsYWNlbWVudCB0aGF0IG9ubHkgZG9lcyB0aGlzOgorCisgICAgICNpZmRlZiBJU18zMkJJVAorICAgICAjaW5jbHVkZSAiY3VybGJ1aWxkLTMyYml0LmgiCisgICAgIGVsc2UKKyAgICAgI2luY2x1ZGUgImN1cmxidWlsZC02NGJpdC5oIgorICAgICAjZW5kaWYKKwogCiAzLiBVc2FnZSBwcm9ibGVtcwogCkBAIC01NTYsNyArNTg4LDcgQEAKIAogICBGaW5kIG91dCBtb3JlIGFib3V0IHdoaWNoIGxhbmd1YWdlcyB0aGF0IHN1cHBvcnQgY3VybCBkaXJlY3RseSwgYW5kIGhvdyB0bwogICBpbnN0YWxsIGFuZCB1c2UgdGhlbSwgaW4gdGhlIGxpYmN1cmwgc2VjdGlvbiBvZiB0aGUgY3VybCB3ZWIgc2l0ZToKLSAgaHR0cDovL2N1cmwuaGF4eC5zZS9saWJjdXJsLworICBodHRwczovL2N1cmwuaGF4eC5zZS9saWJjdXJsLwogCiAgIEFsbCB0aGUgdmFyaW91cyBiaW5kaW5ncyB0byBsaWJjdXJsIGFyZSBtYWRlIGJ5IG90aGVyIHByb2plY3RzIGFuZCBwZW9wbGUsCiAgIG91dHNpZGUgb2YgdGhlIGNVUkwgcHJvamVjdC4gVGhlIGNVUkwgcHJvamVjdCBpdHNlbGYgb25seSBwcm9kdWNlcyBsaWJjdXJsCkBAIC02ODksNyArNzIxLDcgQEAKICAgY2VydGlmaWNhdGUuIFNlcnZlciBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gaXMgZW5hYmxlZCBieSBkZWZhdWx0IGluIGN1cmwKICAgYW5kIGxpYmN1cmwgYW5kIGlzIG9mdGVuIHRoZSByZWFzb24gZm9yIHByb2JsZW1zIGFzIGV4cGxhaW5lZCBpbiBGQVEgZW50cnkKICAgNC4xMiBhbmQgdGhlIFNTTENFUlRTIGRvY3VtZW50Ci0gIChodHRwOi8vY3VybC5oYXh4LnNlL2RvY3Mvc3NsY2VydHMuaHRtbCkuIFNlcnZlciBjZXJ0aWZpY2F0ZXMgdGhhdCBhcmUKKyAgKGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3Mvc3NsY2VydHMuaHRtbCkuIFNlcnZlciBjZXJ0aWZpY2F0ZXMgdGhhdCBhcmUKICAgInNlbGYtc2lnbmVkIiBvciBvdGhlcndpc2Ugc2lnbmVkIGJ5IGEgQ0EgdGhhdCB5b3UgZG8gbm90IGhhdmUgYSBDQSBjZXJ0CiAgIGZvciwgY2Fubm90IGJlIHZlcmlmaWVkLiBJZiB0aGUgdmVyaWZpY2F0aW9uIGR1cmluZyBhIGNvbm5lY3QgZmFpbHMsIHlvdSBhcmUKICAgcmVmdXNlZCBhY2Nlc3MuIFlvdSB0aGVuIG5lZWQgdG8gZXhwbGljaXRseSBkaXNhYmxlIHRoZSB2ZXJpZmljYXRpb24gdG8KQEAgLTk4MCw3ICsxMDEyLDcgQEAKICAgdGhpcyBjaGVjay4KIAogICBEZXRhaWxzIGFyZSBhbHNvIGluIHRoZSBTU0xDRVJUUyBmaWxlIGluIHRoZSByZWxlYXNlIGFyY2hpdmVzLCBmb3VuZCBvbmxpbmUKLSAgaGVyZTogaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL3NzbGNlcnRzLmh0bWwKKyAgaGVyZTogaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9zc2xjZXJ0cy5odG1sCiAKICAgNC4xMyBXaHkgaXMgY3VybCAtUiBvbiBXaW5kb3dzIG9uZSBob3VyIG9mZj8KIApAQCAtMTA4Nyw3ICsxMTE5LDcgQEAKIAogICBJbiBzdWNoIGNhc2VzLCB0aGUgVENQL0lQIHN0YWNrIGlzIHJlc3BvbnNpYmxlIGZvciBkZXRlY3Rpbmcgd2hlbiB0aGUKICAgbmV0d29yayBjb25uZWN0aW9uIGlzIGlycmV2b2NhYmx5IGxvc3QuIFNpbmNlIHdpdGggc29tZSBwcm90b2NvbHMgaXQgaXMKLSAgcGVyZmVjdGx5IGxlZ2FsIGZvciB0aGUgY2xpZW50IHdhaXQgaW5kZWZpbml0ZWx5IGZvciBkYXRhLCB0aGUgc3RhY2sgbWF5CisgIHBlcmZlY3RseSBsZWdhbCBmb3IgdGhlIGNsaWVudCB0byB3YWl0IGluZGVmaW5pdGVseSBmb3IgZGF0YSwgdGhlIHN0YWNrIG1heQogICBuZXZlciByZXBvcnQgYSBwcm9ibGVtLCBhbmQgZXZlbiB3aGVuIGl0IGRvZXMsIGl0IGNhbiB0YWtlIHVwIHRvIDIwIG1pbnV0ZXMKICAgZm9yIGl0IHRvIGRldGVjdCBhbiBpc3N1ZS4gIFRoZSBjdXJsIG9wdGlvbiAtLWtlZXBhbGl2ZS10aW1lIGVuYWJsZXMKICAga2VlcC1hbGl2ZSBzdXBwb3J0IGluIHRoZSBUQ1AvSVAgc3RhY2sgd2hpY2ggbWFrZXMgaXQgcGVyaW9kaWNhbGx5IHByb2JlIHRoZQpAQCAtMTE1MywyNSArMTE4NSw5IEBACiAgIHlvdXIgc3lzdGVtIGhhcyBzdWNoLiAgTm90ZSB0aGF0IHlvdSBtdXN0IG5ldmVyIHNoYXJlIHRoZSBzYW1lIGhhbmRsZSBpbgogICBtdWx0aXBsZSB0aHJlYWRzLgogCi0gIGxpYmN1cmwncyBpbXBsZW1lbnRhdGlvbiBvZiB0aW1lb3V0cyBtaWdodCB1c2Ugc2lnbmFscyAoZGVwZW5kaW5nIG9uIHdoYXQgaXQKLSAgd2FzIGJ1aWx0IHRvIHVzZSBmb3IgbmFtZSByZXNvbHZpbmcpLCBhbmQgc2lnbmFsIGhhbmRsaW5nIGlzIGdlbmVyYWxseSBub3QKLSAgdGhyZWFkLXNhZmUuICBNdWx0aS10aHJlYWRlZCBBcHBsaWNhdGlvbnNzIHRoYXQgY2FsbCBsaWJjdXJsIGZyb20gZGlmZmVyZW50Ci0gIHRocmVhZHMgKG9uIGRpZmZlcmVudCBoYW5kbGVzKSBtaWdodCB3YW50IHRvIHVzZSBDVVJMT1BUX05PU0lHTkFMLCBlLmcuOgotCi0gICAgY3VybF9lYXN5X3NldG9wdChoYW5kbGUsIENVUkxPUFRfTk9TSUdOQUwsIHRydWUpOwotCi0gIElmIHlvdSB1c2UgYSBPcGVuU1NMLXBvd2VyZWQgbGliY3VybCBpbiBhIG11bHRpLXRocmVhZGVkIGVudmlyb25tZW50LCB5b3UKLSAgbmVlZCB0byBwcm92aWRlIG9uZSBvciB0d28gbG9ja2luZyBmdW5jdGlvbnM6Ci0KLSAgICBodHRwczovL3d3dy5vcGVuc3NsLm9yZy9kb2NzL2NyeXB0by90aHJlYWRzLmh0bWwKLQotICBJZiB5b3UgdXNlIGEgR251VExTLXBvd2VyZWQgbGliY3VybCBpbiBhIG11bHRpLXRocmVhZGVkIGVudmlyb25tZW50LCB5b3UKLSAgbmVlZCB0byBwcm92aWRlIGxvY2tpbmcgZnVuY3Rpb24ocykgZm9yIGxpYmdjcnlwdCAod2hpY2ggaXMgdXNlZCBieSBHbnVUTFMKLSAgZm9yIHRoZSBjcnlwdG8gZnVuY3Rpb25zKS4KLQotICAgIGh0dHBzOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8yMDExMTEwMzA4MzMzMC9odHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvZ251dGxzL21hbnVhbC9odG1sX25vZGUvTXVsdGlfMDAyZHRocmVhZGVkLWFwcGxpY2F0aW9ucy5odG1sCi0KLSAgTm8gc3BlY2lhbCBsb2NraW5nIGlzIG5lZWRlZCB3aXRoIGEgTlNTLXBvd2VyZWQgbGliY3VybC4gTlNTIGlzIHRocmVhZC1zYWZlLgorICBUaGVyZSBtYXkgYmUgc29tZSBleGNlcHRpb25zIHRvIHRocmVhZCBzYWZldHkgZGVwZW5kaW5nIG9uIGhvdyBsaWJjdXJsIHdhcworICBidWlsdC4gUGxlYXNlIHJldmlldyB0aGUgZ3VpZGVsaW5lcyBmb3IgdGhyZWFkIHNhZmV0eSB0byBsZWFybiBtb3JlOgorICBodHRwczovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvdGhyZWFkc2FmZS5odG1sCiAKICAgNS4yIEhvdyBjYW4gSSByZWNlaXZlIGFsbCBkYXRhIGludG8gYSBsYXJnZSBtZW1vcnkgY2h1bms/CiAKQEAgLTEzOTcsNyArMTQxMyw3IEBACiAgIHRvIGRvICJMSVNUIC1hIiBvciBzaW1pbGFyIHRvIHNlZSB0aGVtLgogCiAgIFRoZSBhcHBsaWNhdGlvbiB0aHVzIG5lZWRzIHRvIHBhcnNlIHRoZSBMSVNUIG91dHB1dC4gT25lIHN1Y2ggZXhpc3RpbmcKLSAgbGlzdCBwYXJzZXIgaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly9jci55cC50by9mdHBwYXJzZS5odG1sICBWZXJzaW9ucyBvZgorICBsaXN0IHBhcnNlciBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jci55cC50by9mdHBwYXJzZS5odG1sICBWZXJzaW9ucyBvZgogICBsaWJjdXJsIHNpbmNlIDcuMjEuMCBhbHNvIHByb3ZpZGUgdGhlIGFiaWxpdHkgdG8gc3BlY2lmeSBhIHdpbGRjYXJkIHRvCiAgIGRvd25sb2FkIG11bHRpcGxlIGZpbGVzIGZyb20gb25lIEZUUCBkaXJlY3RvcnkuCiAKQEAgLTE1MTYsNyArMTUzMiw3IEBACiAgIG5vdGljZSIgc29tZXdoZXJlLiBNb3N0IHByb2JhYmx5IGxpa2UgaW4gdGhlIGRvY3VtZW50YXRpb24gb3IgaW4gdGhlIHNlY3Rpb24KICAgd2hlcmUgb3RoZXIgdGhpcmQgcGFydHkgZGVwZW5kZW5jaWVzIGFscmVhZHkgYXJlIG1lbnRpb25lZCBhbmQgYWNrbm93bGVkZ2VkLgogCi0gIEFzIGNhbiBiZSBzZWVuIGhlcmU6IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb21wYW5pZXMuaHRtbCBhbmQgZWxzZXdoZXJlLAorICBBcyBjYW4gYmUgc2VlbiBoZXJlOiBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvbXBhbmllcy5odG1sIGFuZCBlbHNld2hlcmUsCiAgIG1vcmUgYW5kIG1vcmUgY29tcGFuaWVzIGFyZSBkaXNjb3ZlcmluZyB0aGUgcG93ZXIgb2YgbGliY3VybCBhbmQgdGFrZQogICBhZHZhbnRhZ2Ugb2YgaXQgZXZlbiBpbiBjb21tZXJjaWFsIGVudmlyb25tZW50cy4KIApAQCAtMTUzNiw5ICsxNTUyLDcgQEAKIAogICA3LjIgV2hvIHdyb3RlIFBIUC9DVVJMPwogCi0gIFBIUC9DVVJMIGlzIGEgbW9kdWxlIHRoYXQgY29tZXMgd2l0aCB0aGUgcmVndWxhciBQSFAgcGFja2FnZS4gSXQgZGVwZW5kcyBhbmQKLSAgdXNlcyBsaWJjdXJsLCBzbyB5b3UgbmVlZCB0byBoYXZlIGxpYmN1cmwgaW5zdGFsbGVkIHByb3Blcmx5IGZpcnN0IGJlZm9yZQotICBQSFAvQ1VSTCBjYW4gYmUgdXNlZC4gUEhQL0NVUkwgd2FzIGluaXRpYWxseSB3cml0dGVuIGJ5IFN0ZXJsaW5nIEh1Z2hlcy4KKyAgUEhQL0NVUkwgd2FzIGluaXRpYWxseSB3cml0dGVuIGJ5IFN0ZXJsaW5nIEh1Z2hlcy4KIAogICA3LjMgQ2FuIEkgcGVyZm9ybSBtdWx0aXBsZSByZXF1ZXN0cyB1c2luZyB0aGUgc2FtZSBoYW5kbGU/CiAKQEAgLTE1NDcsNCArMTU2MSwxMCBAQAogICB1bmtub3duIHRvIG1lKS4KIAogICBBZnRlciBhIHRyYW5zZmVyLCB5b3UganVzdCBzZXQgbmV3IG9wdGlvbnMgaW4gdGhlIGhhbmRsZSBhbmQgbWFrZSBhbm90aGVyCi0gIHRyYW5zZmVyLiBUaGlzIHdpbGwgbWFrZSBsaWJjdXJsIHRvIHJlLXVzZSB0aGUgc2FtZSBjb25uZWN0aW9uIGlmIGl0IGNhbi4KKyAgdHJhbnNmZXIuIFRoaXMgd2lsbCBtYWtlIGxpYmN1cmwgcmUtdXNlIHRoZSBzYW1lIGNvbm5lY3Rpb24gaWYgaXQgY2FuLgorCisgIDcuNCBEb2VzIFBIUC9DVVJMIGhhdmUgZGVwZW5kZW5jaWVzPworCisgIFBIUC9DVVJMIGlzIGEgbW9kdWxlIHRoYXQgY29tZXMgd2l0aCB0aGUgcmVndWxhciBQSFAgcGFja2FnZS4gSXQgZGVwZW5kcyBvbgorICBhbmQgdXNlcyBsaWJjdXJsLCBzbyB5b3UgbmVlZCB0byBoYXZlIGxpYmN1cmwgaW5zdGFsbGVkIHByb3Blcmx5IGJlZm9yZQorICBQSFAvQ1VSTCBjYW4gYmUgdXNlZC4KZGlmZiAtLWdpdCBhL2RvY3MvSElTVE9SWSBiL2RvY3MvSElTVE9SWQppbmRleCBlNzZlNWI5Li5mODc4ZWUxIDEwMDY0NAotLS0gYS9kb2NzL0hJU1RPUlkKKysrIGIvZG9jcy9ISVNUT1JZCkBAIC02NSw3ICs2NSw3IEBACiBNYXksIGZpcnN0IERlYmlhbiBwYWNrYWdlLgogCiBBdWd1c3QsIExEQVA6Ly8gYW5kIEZJTEU6Ly8gc3VwcG9ydCBhZGRlZC4gVGhlIGN1cmwgd2ViIHNpdGUgZ2V0cyAxMzAwIHZpc2l0cwotd2Vla2x5Lgord2Vla2x5LiBNb3ZlZCBzaXRlIHRvIGN1cmwuaGF4eC5udS4KIAogUmVsZWFzZWQgY3VybCA2LjAgaW4gU2VwdGVtYmVyLiAxNTAwMCBsaW5lcyBvZiBjb2RlLgogCkBAIC04MSw2ICs4MSw4IEBACiBvdGhlciBzb2Z0d2FyZSBhbmQgcHJvZ3JhbXMgdG8gZ2V0IGJhc2VkIG9uIGFuZCBwb3dlcmVkIGJ5IGxpYmN1cmwuIEFsbW9zdAogMjAwMDAgbGluZXMgb2YgY29kZS4KIAorSnVuZSAyMDAwOiB0aGUgY3VybCBzaXRlIG1vdmVzIHRvICJjdXJsLmhheHguc2UiCisKIEF1Z3VzdCwgdGhlIGN1cmwgd2ViIHNpdGUgZ2V0cyA0MDAwIHZpc2l0cyB3ZWVrbHkuCiAKIFRoZSBQSFAgZ3V5cyBhZG9wdGVkIGxpYmN1cmwgYWxyZWFkeSB0aGUgc2FtZSBtb250aCwgd2hlbiB0aGUgZmlyc3QgZXZlciB0aGlyZApkaWZmIC0tZ2l0IGEvZG9jcy9IVFRQLUNPT0tJRVMgYi9kb2NzL0hUVFAtQ09PS0lFUwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjVhYmRkZi4uMDAwMDAwMAotLS0gYS9kb2NzL0hUVFAtQ09PS0lFUworKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi1VcGRhdGVkOiBKdWx5IDMsIDIwMTIgKGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9odHRwLWNvb2tpZXMuaHRtbCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198Ci0KLQotSFRUUCBDb29raWVzCi0KLSAxLiBIVFRQIENvb2tpZXMKLSAxLjEgQ29va2llIG92ZXJ2aWV3Ci0gMS4yIENvb2tpZXMgc2F2ZWQgdG8gZGlzawotIDEuMyBDb29raWVzIHdpdGggY3VybCB0aGUgY29tbWFuZCBsaW5lIHRvb2wKLSAxLjQgQ29va2llcyB3aXRoIGxpYmN1cmwKLSAxLjUgQ29va2llcyB3aXRoIGphdmFzY3JpcHQKLQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLTEuIEhUVFAgQ29va2llcwotCi0gIDEuMSBDb29raWUgb3ZlcnZpZXcKLQotICBIVFRQIGNvb2tpZXMgYXJlIHBpZWNlcyBvZiAnbmFtZT1jb250ZW50cycgc25pcHBldHMgdGhhdCBhIHNlcnZlciB0ZWxscyB0aGUKLSAgY2xpZW50IHRvIGhvbGQgYW5kIHRoZW4gdGhlIGNsaWVudCBzZW5kcyBiYWNrIHRob3NlIHRoZSBzZXJ2ZXIgb24gc3Vic2VxdWVudAotICByZXF1ZXN0cyB0byB0aGUgc2FtZSBkb21haW5zL3BhdGhzIGZvciB3aGljaCB0aGUgY29va2llcyB3ZXJlIHNldC4KLQotICBDb29raWVzIGFyZSBlaXRoZXIgInNlc3Npb24gY29va2llcyIgd2hpY2ggdHlwaWNhbGx5IGFyZSBmb3Jnb3R0ZW4gd2hlbiB0aGUKLSAgc2Vzc2lvbiBpcyBvdmVyIHdoaWNoIGlzIG9mdGVuIHRyYW5zbGF0ZWQgdG8gZXF1YWwgd2hlbiBicm93c2VyIHF1aXRzLCBvcgotICB0aGUgY29va2llcyBhcmVuJ3Qgc2Vzc2lvbiBjb29raWVzIHRoZXkgaGF2ZSBleHBpcmF0aW9uIGRhdGVzIGFmdGVyIHdoaWNoCi0gIHRoZSBjbGllbnQgd2lsbCB0aHJvdyB0aGVtIGF3YXkuCi0KLSAgQ29va2llcyBhcmUgc2V0IHRvIHRoZSBjbGllbnQgd2l0aCB0aGUgU2V0LUNvb2tpZTogaGVhZGVyIGFuZCBhcmUgc2VudCB0bwotICBzZXJ2ZXJzIHdpdGggdGhlIENvb2tpZTogaGVhZGVyLgotCi0gIEZvciBhIHZlcnkgbG9uZyB0aW1lLCB0aGUgb25seSBzcGVjIGV4cGxhaW5pbmcgaG93IHRvIHVzZSBjb29raWVzIHdhcyB0aGUKLSAgb3JpZ2luYWwgTmV0c2NhcGUgc3BlYyBmcm9tIDE5OTQ6IGh0dHA6Ly9jdXJsLmhheHguc2UvcmZjL2Nvb2tpZV9zcGVjLmh0bWwKLQotICBJbiAyMDExLCBSRkM2MjY1IChodHRwczovL3d3dy5pZXRmLm9yZy9yZmMvcmZjNjI2NS50eHQpIHdhcyBmaW5hbGx5IHB1Ymxpc2hlZAotICBhbmQgZGV0YWlscyBob3cgY29va2llcyB3b3JrIHdpdGhpbiBIVFRQLgotCi0gIDEuMiBDb29raWVzIHNhdmVkIHRvIGRpc2sKLQotICBOZXRzY2FwZSBvbmNlIGNyZWF0ZWQgYSBmaWxlIGZvcm1hdCBmb3Igc3RvcmluZyBjb29raWVzIG9uIGRpc2sgc28gdGhhdCB0aGV5Ci0gIHdvdWxkIHN1cnZpdmUgYnJvd3NlciByZXN0YXJ0cy4gY3VybCBhZG9wdGVkIHRoYXQgZmlsZSBmb3JtYXQgdG8gYWxsb3cKLSAgc2hhcmluZyB0aGUgY29va2llcyB3aXRoIGJyb3dzZXJzLCBvbmx5IHRvIHNlZSBicm93c2VycyBtb3ZlIGF3YXkgZnJvbSB0aGF0Ci0gIGZvcm1hdC4gTW9kZXJuIGJyb3dzZXJzIG5vIGxvbmdlciB1c2UgaXQsIHdoaWxlIGN1cmwgc3RpbGwgZG9lcy4KLQotICBUaGUgbmV0c2NhcGUgY29va2llIGZpbGUgZm9ybWF0IHN0b3JlcyBvbmUgY29va2llIHBlciBwaHlzaWNhbCBsaW5lIGluIHRoZQotICBmaWxlIHdpdGggYSBidW5jaCBvZiBhc3NvY2lhdGVkIG1ldGEgZGF0YSwgZWFjaCBmaWVsZCBzZXBhcmF0ZWQgd2l0aAotICBUQUIuIFRoYXQgZmlsZSBpcyBjYWxsZWQgdGhlIGNvb2tpZWphciBpbiBjdXJsIHRlcm1pbm9sb2d5LgotCi0gIFdoZW4gbGliY3VybCBzYXZlcyBhIGNvb2tpZWphciwgaXQgY3JlYXRlcyBhIGZpbGUgaGVhZGVyIG9mIGl0cyBvd24gaW4gd2hpY2gKLSAgdGhlcmUgaXMgYSBVUkwgbWVudGlvbiB0aGF0IHdpbGwgbGluayB0byB0aGUgd2ViIHZlcnNpb24gb2YgdGhpcyBkb2N1bWVudC4KLQotICAxLjMgQ29va2llcyB3aXRoIGN1cmwgdGhlIGNvbW1hbmQgbGluZSB0b29sCi0KLSAgY3VybCBoYXMgYSBmdWxsIGNvb2tpZSAiZW5naW5lIiBidWlsdCBpbi4gSWYgeW91IGp1c3QgYWN0aXZhdGUgaXQsIHlvdSBjYW4KLSAgaGF2ZSBjdXJsIHJlY2VpdmUgYW5kIHNlbmQgY29va2llcyBleGFjdGx5IGFzIG1hbmRhdGVkIGluIHRoZSBzcGVjcy4KLQotICBDb21tYW5kIGxpbmUgb3B0aW9uczoKLQotICAtYiwgLS1jb29raWUKLQotICAgIHRlbGwgY3VybCBhIGZpbGUgdG8gcmVhZCBjb29raWVzIGZyb20gYW5kIHN0YXJ0IHRoZSBjb29raWUgZW5naW5lLCBvciBpZgotICAgIGl0IGlzbid0IGEgZmlsZSBpdCB3aWxsIHBhc3Mgb24gdGhlIGdpdmVuIHN0cmluZy4gLWIgbmFtZT12YXIgd29ya3MgYW5kIHNvCi0gICAgZG9lcyAtYiBjb29raWVmaWxlLgotCi0gIC1qLCAtLWp1bmstc2Vzc2lvbi1jb29raWVzCi0KLSAgICB3aGVuIHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCAtYiwgaXQgd2lsbCBza2lwIGFsbCAic2Vzc2lvbiBjb29raWVzIiBvbgotICAgIGxvYWQgc28gYXMgdG8gYXBwZWFyIHRvIHN0YXJ0IGEgbmV3IGNvb2tpZSBzZXNzaW9uLgotCi0gIC1jLCAtLWNvb2tpZS1qYXIKLQotICAgIHRlbGwgY3VybCB0byBzdGFydCB0aGUgY29va2llIGVuZ2luZSBhbmQgd3JpdGUgY29va2llcyB0byB0aGUgZ2l2ZW4gZmlsZQotICAgIGFmdGVyIHRoZSByZXF1ZXN0KHMpCi0KLSAgMS40IENvb2tpZXMgd2l0aCBsaWJjdXJsCi0KLSAgbGliY3VybCBvZmZlcnMgc2V2ZXJhbCB3YXlzIHRvIGVuYWJsZSBhbmQgaW50ZXJmYWNlIHRoZSBjb29raWUgZW5naW5lLiBUaGVzZQotICBvcHRpb25zIGFyZSB0aGUgb25lcyBwcm92aWRlZCBieSB0aGUgbmF0aXZlIEFQSS4gbGliY3VybCBiaW5kaW5ncyBtYXkgb2ZmZXIKLSAgYWNjZXNzIHRvIHRoZW0gdXNpbmcgb3RoZXIgbWVhbnMuCi0KLSAgQ1VSTE9QVF9DT09LSUUKLQotICAgIElzIHVzZWQgd2hlbiB5b3Ugd2FudCB0byBzcGVjaWZ5IHRoZSBleGFjdCBjb250ZW50cyBvZiBhIGNvb2tpZSBoZWFkZXIgdG8KLSAgICBzZW5kIHRvIHRoZSBzZXJ2ZXIuCi0KLSAgQ1VSTE9QVF9DT09LSUVGSUxFCi0KLSAgICBUZWxsIGxpYmN1cmwgdG8gYWN0aXZhdGUgdGhlIGNvb2tpZSBlbmdpbmUsIGFuZCB0byByZWFkIHRoZSBpbml0aWFsIHNldCBvZgotICAgIGNvb2tpZXMgZnJvbSB0aGUgZ2l2ZW4gZmlsZS4gUmVhZC1vbmx5LgotCi0gIENVUkxPUFRfQ09PS0lFSkFSCi0KLSAgICBUZWxsIGxpYmN1cmwgdG8gYWN0aXZhdGUgdGhlIGNvb2tpZSBlbmdpbmUsIGFuZCB3aGVuIHRoZSBlYXN5IGhhbmRsZSBpcwotICAgIGNsb3NlZCBzYXZlIGFsbCBrbm93biBjb29raWVzIHRvIHRoZSBnaXZlbiBjb29raWVqYXIgZmlsZS4gV3JpdGUtb25seS4KLQotICBDVVJMT1BUX0NPT0tJRUxJU1QKLQotICAgIFByb3ZpZGUgZGV0YWlsZWQgaW5mb3JtYXRpb24gYWJvdXQgYSBzaW5nbGUgY29va2llIHRvIGFkZCB0byB0aGUgaW50ZXJuYWwKLSAgICBzdG9yYWdlIG9mIGNvb2tpZXMuIFBhc3MgaW4gdGhlIGNvb2tpZSBhcyBhIEhUVFAgaGVhZGVyIHdpdGggYWxsIHRoZQotICAgIGRldGFpbHMgc2V0LCBvciBwYXNzIGluIGEgbGluZSBmcm9tIGEgbmV0c2NhcGUgY29va2llIGZpbGUuIFRoaXMgb3B0aW9uCi0gICAgY2FuIGFsc28gYmUgdXNlZCB0byBmbHVzaCB0aGUgY29va2llcyBldGMuCi0gICAgCi0gIENVUkxJTkZPX0NPT0tJRUxJU1QKLQotICAgIEV4dHJhY3QgY29va2llIGluZm9ybWF0aW9uIGZyb20gdGhlIGludGVybmFsIGNvb2tpZSBzdG9yYWdlIGFzIGEgbGlua2VkCi0gICAgbGlzdC4KLQotICAxLjUgQ29va2llcyB3aXRoIGphdmFzY3JpcHQKLQotICBUaGVzZSBkYXlzIGEgbG90IG9mIHRoZSB3ZWIgaXMgYnVpbHQgdXAgYnkgamF2YXNjcmlwdC4gVGhlIHdlYmJyb3dzZXIgbG9hZHMKLSAgY29tcGxldGUgcHJvZ3JhbXMgdGhhdCByZW5kZXIgdGhlIHBhZ2UgeW91IHNlZS4gVGhlc2UgamF2YXNjcmlwdCBwcm9ncmFtcwotICBjYW4gYWxzbyBzZXQgYW5kIGFjY2VzcyBjb29raWVzLgotCi0gIFNpbmNlIGN1cmwgYW5kIGxpYmN1cmwgYXJlIHBsYWluIEhUVFAgY2xpZW50cyB3aXRob3V0IGFueSBrbm93bGVkZ2Ugb2Ygb3IKLSAgY2FwYWJpbGl0eSB0byBoYW5kbGUgamF2YXNjcmlwdCwgc3VjaCBjb29raWVzIHdpbGwgbm90IGJlIGRldGVjdGVkIG9yIHVzZWQuCi0KLSAgT2Z0ZW4sIGlmIHlvdSB3YW50IHRvIG1pbWljIHdoYXQgYSBicm93c2VyIGRvZXMgb24gc3VjaCB3ZWIgc2l0ZXMsIHlvdSBjYW4KLSAgcmVjb3JkIHdlYiBicm93c2VyIEhUVFAgdHJhZmZpYyB3aGVuIHVzaW5nIHN1Y2ggYSBzaXRlIGFuZCB0aGVuIHJlcGVhdCB0aGUKLSAgY29va2llIG9wZXJhdGlvbnMgdXNpbmcgY3VybCBvciBsaWJjdXJsLgpkaWZmIC0tZ2l0IGEvZG9jcy9IVFRQLUNPT0tJRVMubWQgYi9kb2NzL0hUVFAtQ09PS0lFUy5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMWIyODM0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9IVFRQLUNPT0tJRVMubWQKQEAgLTAsMCArMSwxMDQgQEAKKyMgSFRUUCBDb29raWVzCisKKyMjIENvb2tpZSBvdmVydmlldworCisgIENvb2tpZXMgYXJlIGBuYW1lPWNvbnRlbnRzYCBwYWlycyB0aGF0IGEgSFRUUCBzZXJ2ZXIgdGVsbHMgdGhlIGNsaWVudCB0bworICBob2xkIGFuZCB0aGVuIHRoZSBjbGllbnQgc2VuZHMgYmFjayB0aG9zZSB0byB0aGUgc2VydmVyIG9uIHN1YnNlcXVlbnQKKyAgcmVxdWVzdHMgdG8gdGhlIHNhbWUgZG9tYWlucyBhbmQgcGF0aHMgZm9yIHdoaWNoIHRoZSBjb29raWVzIHdlcmUgc2V0LgorCisgIENvb2tpZXMgYXJlIGVpdGhlciAic2Vzc2lvbiBjb29raWVzIiB3aGljaCB0eXBpY2FsbHkgYXJlIGZvcmdvdHRlbiB3aGVuIHRoZQorICBzZXNzaW9uIGlzIG92ZXIgd2hpY2ggaXMgb2Z0ZW4gdHJhbnNsYXRlZCB0byBlcXVhbCB3aGVuIGJyb3dzZXIgcXVpdHMsIG9yCisgIHRoZSBjb29raWVzIGFyZW4ndCBzZXNzaW9uIGNvb2tpZXMgdGhleSBoYXZlIGV4cGlyYXRpb24gZGF0ZXMgYWZ0ZXIgd2hpY2gKKyAgdGhlIGNsaWVudCB3aWxsIHRocm93IHRoZW0gYXdheS4KKworICBDb29raWVzIGFyZSBzZXQgdG8gdGhlIGNsaWVudCB3aXRoIHRoZSBTZXQtQ29va2llOiBoZWFkZXIgYW5kIGFyZSBzZW50IHRvCisgIHNlcnZlcnMgd2l0aCB0aGUgQ29va2llOiBoZWFkZXIuCisKKyAgRm9yIGEgdmVyeSBsb25nIHRpbWUsIHRoZSBvbmx5IHNwZWMgZXhwbGFpbmluZyBob3cgdG8gdXNlIGNvb2tpZXMgd2FzIHRoZQorICBvcmlnaW5hbCBbTmV0c2NhcGUgc3BlYyBmcm9tIDE5OTRdKGh0dHBzOi8vY3VybC5oYXh4LnNlL3JmYy9jb29raWVfc3BlYy5odG1sKS4KKworICBJbiAyMDExLCBbUkZDNjI2NV0oaHR0cHM6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzYyNjUudHh0KSB3YXMgZmluYWxseQorICBwdWJsaXNoZWQgYW5kIGRldGFpbHMgaG93IGNvb2tpZXMgd29yayB3aXRoaW4gSFRUUC4KKworIyMgQ29va2llcyBzYXZlZCB0byBkaXNrCisKKyAgTmV0c2NhcGUgb25jZSBjcmVhdGVkIGEgZmlsZSBmb3JtYXQgZm9yIHN0b3JpbmcgY29va2llcyBvbiBkaXNrIHNvIHRoYXQgdGhleQorICB3b3VsZCBzdXJ2aXZlIGJyb3dzZXIgcmVzdGFydHMuIGN1cmwgYWRvcHRlZCB0aGF0IGZpbGUgZm9ybWF0IHRvIGFsbG93CisgIHNoYXJpbmcgdGhlIGNvb2tpZXMgd2l0aCBicm93c2Vycywgb25seSB0byBzZWUgYnJvd3NlcnMgbW92ZSBhd2F5IGZyb20gdGhhdAorICBmb3JtYXQuIE1vZGVybiBicm93c2VycyBubyBsb25nZXIgdXNlIGl0LCB3aGlsZSBjdXJsIHN0aWxsIGRvZXMuCisKKyAgVGhlIG5ldHNjYXBlIGNvb2tpZSBmaWxlIGZvcm1hdCBzdG9yZXMgb25lIGNvb2tpZSBwZXIgcGh5c2ljYWwgbGluZSBpbiB0aGUKKyAgZmlsZSB3aXRoIGEgYnVuY2ggb2YgYXNzb2NpYXRlZCBtZXRhIGRhdGEsIGVhY2ggZmllbGQgc2VwYXJhdGVkIHdpdGgKKyAgVEFCLiBUaGF0IGZpbGUgaXMgY2FsbGVkIHRoZSBjb29raWVqYXIgaW4gY3VybCB0ZXJtaW5vbG9neS4KKworICBXaGVuIGxpYmN1cmwgc2F2ZXMgYSBjb29raWVqYXIsIGl0IGNyZWF0ZXMgYSBmaWxlIGhlYWRlciBvZiBpdHMgb3duIGluIHdoaWNoCisgIHRoZXJlIGlzIGEgVVJMIG1lbnRpb24gdGhhdCB3aWxsIGxpbmsgdG8gdGhlIHdlYiB2ZXJzaW9uIG9mIHRoaXMgZG9jdW1lbnQuCisKKyMjIENvb2tpZXMgd2l0aCBjdXJsIHRoZSBjb21tYW5kIGxpbmUgdG9vbAorCisgIGN1cmwgaGFzIGEgZnVsbCBjb29raWUgImVuZ2luZSIgYnVpbHQgaW4uIElmIHlvdSBqdXN0IGFjdGl2YXRlIGl0LCB5b3UgY2FuCisgIGhhdmUgY3VybCByZWNlaXZlIGFuZCBzZW5kIGNvb2tpZXMgZXhhY3RseSBhcyBtYW5kYXRlZCBpbiB0aGUgc3BlY3MuCisKKyAgQ29tbWFuZCBsaW5lIG9wdGlvbnM6CisKKyAgYC1iLCAtLWNvb2tpZWAKKworICB0ZWxsIGN1cmwgYSBmaWxlIHRvIHJlYWQgY29va2llcyBmcm9tIGFuZCBzdGFydCB0aGUgY29va2llIGVuZ2luZSwgb3IgaWYgaXQKKyAgaXNuJ3QgYSBmaWxlIGl0IHdpbGwgcGFzcyBvbiB0aGUgZ2l2ZW4gc3RyaW5nLiAtYiBuYW1lPXZhciB3b3JrcyBhbmQgc28gZG9lcworICAtYiBjb29raWVmaWxlLgorCisgIGAtaiwgLS1qdW5rLXNlc3Npb24tY29va2llc2AKKworICB3aGVuIHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCAtYiwgaXQgd2lsbCBza2lwIGFsbCAic2Vzc2lvbiBjb29raWVzIiBvbiBsb2FkCisgIHNvIGFzIHRvIGFwcGVhciB0byBzdGFydCBhIG5ldyBjb29raWUgc2Vzc2lvbi4KKworICBgLWMsIC0tY29va2llLWphcmAKKworICB0ZWxsIGN1cmwgdG8gc3RhcnQgdGhlIGNvb2tpZSBlbmdpbmUgYW5kIHdyaXRlIGNvb2tpZXMgdG8gdGhlIGdpdmVuIGZpbGUKKyAgYWZ0ZXIgdGhlIHJlcXVlc3QocykKKworIyMgQ29va2llcyB3aXRoIGxpYmN1cmwKKworICBsaWJjdXJsIG9mZmVycyBzZXZlcmFsIHdheXMgdG8gZW5hYmxlIGFuZCBpbnRlcmZhY2UgdGhlIGNvb2tpZSBlbmdpbmUuIFRoZXNlCisgIG9wdGlvbnMgYXJlIHRoZSBvbmVzIHByb3ZpZGVkIGJ5IHRoZSBuYXRpdmUgQVBJLiBsaWJjdXJsIGJpbmRpbmdzIG1heSBvZmZlcgorICBhY2Nlc3MgdG8gdGhlbSB1c2luZyBvdGhlciBtZWFucy4KKworICBgQ1VSTE9QVF9DT09LSUVgCisKKyAgSXMgdXNlZCB3aGVuIHlvdSB3YW50IHRvIHNwZWNpZnkgdGhlIGV4YWN0IGNvbnRlbnRzIG9mIGEgY29va2llIGhlYWRlciB0bworICBzZW5kIHRvIHRoZSBzZXJ2ZXIuCisKKyAgYENVUkxPUFRfQ09PS0lFRklMRWAKKworICBUZWxsIGxpYmN1cmwgdG8gYWN0aXZhdGUgdGhlIGNvb2tpZSBlbmdpbmUsIGFuZCB0byByZWFkIHRoZSBpbml0aWFsIHNldCBvZgorICBjb29raWVzIGZyb20gdGhlIGdpdmVuIGZpbGUuIFJlYWQtb25seS4KKworICBgQ1VSTE9QVF9DT09LSUVKQVJgCisKKyAgVGVsbCBsaWJjdXJsIHRvIGFjdGl2YXRlIHRoZSBjb29raWUgZW5naW5lLCBhbmQgd2hlbiB0aGUgZWFzeSBoYW5kbGUgaXMKKyAgY2xvc2VkIHNhdmUgYWxsIGtub3duIGNvb2tpZXMgdG8gdGhlIGdpdmVuIGNvb2tpZWphciBmaWxlLiBXcml0ZS1vbmx5LgorCisgIGBDVVJMT1BUX0NPT0tJRUxJU1RgCisKKyAgUHJvdmlkZSBkZXRhaWxlZCBpbmZvcm1hdGlvbiBhYm91dCBhIHNpbmdsZSBjb29raWUgdG8gYWRkIHRvIHRoZSBpbnRlcm5hbAorICBzdG9yYWdlIG9mIGNvb2tpZXMuIFBhc3MgaW4gdGhlIGNvb2tpZSBhcyBhIEhUVFAgaGVhZGVyIHdpdGggYWxsIHRoZSBkZXRhaWxzCisgIHNldCwgb3IgcGFzcyBpbiBhIGxpbmUgZnJvbSBhIG5ldHNjYXBlIGNvb2tpZSBmaWxlLiBUaGlzIG9wdGlvbiBjYW4gYWxzbyBiZQorICB1c2VkIHRvIGZsdXNoIHRoZSBjb29raWVzIGV0Yy4KKworICBgQ1VSTElORk9fQ09PS0lFTElTVGAKKworICBFeHRyYWN0IGNvb2tpZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBpbnRlcm5hbCBjb29raWUgc3RvcmFnZSBhcyBhIGxpbmtlZAorICBsaXN0LgorCisjIyBDb29raWVzIHdpdGggamF2YXNjcmlwdAorCisgIFRoZXNlIGRheXMgYSBsb3Qgb2YgdGhlIHdlYiBpcyBidWlsdCB1cCBieSBqYXZhc2NyaXB0LiBUaGUgd2ViYnJvd3NlciBsb2FkcworICBjb21wbGV0ZSBwcm9ncmFtcyB0aGF0IHJlbmRlciB0aGUgcGFnZSB5b3Ugc2VlLiBUaGVzZSBqYXZhc2NyaXB0IHByb2dyYW1zCisgIGNhbiBhbHNvIHNldCBhbmQgYWNjZXNzIGNvb2tpZXMuCisKKyAgU2luY2UgY3VybCBhbmQgbGliY3VybCBhcmUgcGxhaW4gSFRUUCBjbGllbnRzIHdpdGhvdXQgYW55IGtub3dsZWRnZSBvZiBvcgorICBjYXBhYmlsaXR5IHRvIGhhbmRsZSBqYXZhc2NyaXB0LCBzdWNoIGNvb2tpZXMgd2lsbCBub3QgYmUgZGV0ZWN0ZWQgb3IgdXNlZC4KKworICBPZnRlbiwgaWYgeW91IHdhbnQgdG8gbWltaWMgd2hhdCBhIGJyb3dzZXIgZG9lcyBvbiBzdWNoIHdlYiBzaXRlcywgeW91IGNhbgorICByZWNvcmQgd2ViIGJyb3dzZXIgSFRUUCB0cmFmZmljIHdoZW4gdXNpbmcgc3VjaCBhIHNpdGUgYW5kIHRoZW4gcmVwZWF0IHRoZQorICBjb29raWUgb3BlcmF0aW9ucyB1c2luZyBjdXJsIG9yIGxpYmN1cmwuCmRpZmYgLS1naXQgYS9kb2NzL0hUVFAyLm1kIGIvZG9jcy9IVFRQMi5tZAppbmRleCBiNGUyOTgzLi5jYzVhNWIzIDEwMDY0NAotLS0gYS9kb2NzL0hUVFAyLm1kCisrKyBiL2RvY3MvSFRUUDIubWQKQEAgLTIsMTIgKzIsMTMgQEAKID09PT09PT09PT09PT09PT0KIAogW0hUVFAvMiBTcGVjXShodHRwczovL3d3dy5yZmMtZWRpdG9yLm9yZy9yZmMvcmZjNzU0MC50eHQpCi1baHR0cDIgZXhwbGFpbmVkXShodHRwOi8vZGFuaWVsLmhheHguc2UvaHR0cDIvKQorW2h0dHAyIGV4cGxhaW5lZF0oaHR0cHM6Ly9kYW5pZWwuaGF4eC5zZS9odHRwMi8pCiAKIEJ1aWxkIHByZXJlcXVpc2l0ZXMKIC0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLSBuZ2h0dHAyCi0gIC0gT3BlblNTTCwgTlNTLCBHbnV0VExTIG9yIFBvbGFyU1NMIHdpdGggYSBuZXcgZW5vdWdoIHZlcnNpb24KKyAgLSBPcGVuU1NMLCBsaWJyZXNzbCwgQm9yaW5nU1NMLCBOU1MsIEdudXRUTFMsIG1iZWRUTFMsIHdvbGZTU0wgb3IgU0NoYW5uZWwKKyAgICB3aXRoIGEgbmV3IGVub3VnaCB2ZXJzaW9uLgogCiBbbmdodHRwMl0oaHR0cHM6Ly9uZ2h0dHAyLm9yZy8pCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0zNiwyMyArMzcsMzIgQEAKIElmIGBDVVJMT1BUX0hUVFBfVkVSU0lPTmAgaXMgc2V0IHRvIGBDVVJMX0hUVFBfVkVSU0lPTl8yXzBgLCBsaWJjdXJsIHdpbGwgdXNlCiBBTFBOIChvciBOUE4pIHRvIG5lZ290aWF0ZSB3aGljaCBwcm90b2NvbCB0byBjb250aW51ZSB3aXRoLiBQb3NzaWJseSBpbnRyb2R1Y2UKIGFuIG9wdGlvbiB0aGF0IHdpbGwgY2F1c2UgbGliY3VybCB0byBmYWlsIGlmIG5vdCBwb3NzaWJsZSB0byB1c2UgSFRUUC8yLgotQ29uc2lkZXIgb3B0aW9ucyB0byBleHBsaWNpdGx5IGRpc2FibGUgQUxQTiBhbmQvb3IgTlBOLgorCitgQ1VSTF9IVFRQX1ZFUlNJT05fMlRMU2Agd2FzIGFkZGVkIGluIDcuNDcuMCBhcyBhIHdheSB0byBhc2sgbGliY3VybCB0byBwcmVmZXIKK0hUVFAvMiBmb3IgSFRUUFMgYnV0IHN0aWNrIHRvIDEuMSBieSBkZWZhdWx0IGZvciBwbGFpbiBvbGQgSFRUUCBjb25uZWN0aW9ucy4KIAogQUxQTiBpcyB0aGUgVExTIGV4dGVuc2lvbiB0aGF0IEhUVFAvMiBpcyBleHBlY3RlZCB0byB1c2UuIFRoZSBOUE4gZXh0ZW5zaW9uIGlzCiBmb3IgYSBzaW1pbGFyIHB1cnBvc2UsIHdhcyBtYWRlIHByaW9yIHRvIEFMUE4gYW5kIGlzIHVzZWQgZm9yIFNQRFkgc28gZWFybHkKIEhUVFAvMiBzZXJ2ZXJzIGFyZSBpbXBsZW1lbnRlZCB1c2luZyBOUE4gYmVmb3JlIEFMUE4gc3VwcG9ydCBpcyB3aWRlc3ByZWFkLgogCitgQ1VSTE9QVF9TU0xfRU5BQkxFX0FMUE5gIGFuZCBgQ1VSTE9QVF9TU0xfRU5BQkxFX05QTmAgYXJlIG9mZmVyZWQgdG8gYWxsb3cKK2FwcGxpY2F0aW9ucyB0byBleHBsaWNpdGx5IGRpc2FibGUgQUxQTiBvciBOUE4uCisKIFNTTCBsaWJzCiAtLS0tLS0tLQogCiBUaGUgY2hhbGxlbmdlIGlzIHRoZSBBTFBOIGFuZCBOUE4gc3VwcG9ydCBhbmQgYWxsIG91ciBkaWZmZXJlbnQgU1NMCi1iYWNrZW5kcy4gWW91IG1heSBuZWVkIGEgZmFpcmx5IHVwZGF0ZWQgU1NMIGxpYnJhcnkgdmVyc2lvbiBmb3IgaXQgdG8KLXByb3ZpZGUgdGhlIG5lY2Vzc2FyeSBUTFMgZmVhdHVyZXMuIFJpZ2h0IG5vdyB3ZSBzdXBwb3J0OgorYmFja2VuZHMuIFlvdSBtYXkgbmVlZCBhIGZhaXJseSB1cGRhdGVkIFNTTCBsaWJyYXJ5IHZlcnNpb24gZm9yIGl0IHRvIHByb3ZpZGUKK3RoZSBuZWNlc3NhcnkgVExTIGZlYXR1cmVzLiBSaWdodCBub3cgd2Ugc3VwcG9ydDoKIAotICAtIE9wZW5TU0w6ICBBTFBOIGFuZCBOUE4KLSAgLSBOU1M6ICAgICAgQUxQTiBhbmQgTlBOCi0gIC0gR251VExTOiAgIEFMUE4KLSAgLSBQb2xhclNTTDogQUxQTgorICAtIE9wZW5TU0w6ICAgQUxQTiBhbmQgTlBOCisgIC0gbGlicmVzc2w6ICBBTFBOIGFuZCBOUE4KKyAgLSBCb3JpbmdTU0w6IEFMUE4gYW5kIE5QTgorICAtIE5TUzogICAgICAgQUxQTiBhbmQgTlBOCisgIC0gR251VExTOiAgICBBTFBOCisgIC0gbWJlZFRMUzogICBBTFBOCisgIC0gU0NoYW5uZWw6ICBBTFBOCisgIC0gd29sZlNTTDogICBBTFBOCiAKIE11bHRpcGxleGluZwogLS0tLS0tLS0tLS0tCkBAIC04NCw3ICs5NCwxMiBAQAogY3VybCB0b29sCiAtLS0tLS0tLS0KIAotY3VybCBvZmZlcnMgdGhlIGAtLWh0dHAyYCBjb21tYW5kIGxpbmUgb3B0aW9uIHRvIGVuYWJsZSB1c2Ugb2YgSFRUUC8yCitjdXJsIG9mZmVycyB0aGUgYC0taHR0cDJgIGNvbW1hbmQgbGluZSBvcHRpb24gdG8gZW5hYmxlIHVzZSBvZiBIVFRQLzIuCisKK2N1cmwgb2ZmZXJzIHRoZSBgLS1odHRwMi1wcmlvci1rbm93bGVkZ2VgIGNvbW1hbmQgbGluZSBvcHRpb24gdG8gZW5hYmxlIHVzZSBvZiAKK0hUVFAvMiB3aXRob3V0IEhUVFAvMS4xIFVwZ3JhZGUuCisKK1NpbmNlIDcuNDcuMCwgdGhlIGN1cmwgdG9vbCBlbmFibGVzIEhUVFAvMiBieSBkZWZhdWx0IGZvciBIVFRQUyBjb25uZWN0aW9ucy4KIAogSFRUUCBBbHRlcm5hdGl2ZSBTZXJ2aWNlcwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtOTUsMTMgKzExMCw0IEBACiBjbGllbnQgY2FuIHVzZSB0aGF0IGhpbnQgdG8gY3JlYXRlIGEgbmV3IGNvbm5lY3Rpb24gYXN5bmNocm9ub3VzbHkuICBGb3IKIGxpYmN1cmwsIHdlIG1heSBpbnRyb2R1Y2UgYSB3YXkgdG8gYnJpbmcgc3VjaCBjbHVlcyB0byB0aGUgYXBwbGljYXRvbiBhbmQvb3IKIGxldCBhIHN1YnNlcXVlbnQgcmVxdWVzdCB1c2UgdGhlIGFsdGVybmF0ZSByb3V0ZQotYXV0b21hdGljYWxseS4gW1NwZWNdKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1pZXRmLWh0dHBiaXMtYWx0LXN2Yy0wNSkKLQotVE9ETwotLS0tLQotCi0gIC0gUHJvdmlkZSBBUEkgdG8gc2V0IHByaW9yaXRpZXMgLyBkZXBlbmRlbmNpZXMgb2YgaW5kaXZpZHVhbCBzdHJlYW1zCi0KLSAgLSBJbXBsZW1lbnQgInByaW9yLWtub3dsZWRnZSIgSFRUUC8yIGNvbm5lY2l0b25zIG92ZXIgY2xlYXIgdGV4dCBzbyB0aGF0Ci0gICAgY3VybCBjYW4gY29ubmVjdCB3aXRoIEhUVFAvMiBhdCBvbmNlIHdpdGhvdXQgMS4xK1VwZ3JhZGUuCi0KK2F1dG9tYXRpY2FsbHkuIFtTcGVjXShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtaWV0Zi1odHRwYmlzLWFsdC1zdmMtMTQpCmRpZmYgLS1naXQgYS9kb2NzL0lOU1RBTEwgYi9kb2NzL0lOU1RBTEwKaW5kZXggNDU3MDMxOC4uMmUxMDc1YiAxMDA2NDQKLS0tIGEvZG9jcy9JTlNUQUxMCisrKyBiL2RvY3MvSU5TVEFMTApAQCAtNDcxLDYgKzQ3MSwxNSBAQAogICAgYWRkICctRENVUkxfU1RBVElDTElCJyB0byB5b3VyIENGTEFHUy4gIE90aGVyd2lzZSB0aGUgbGlua2VyIHdpbGwgbG9vayBmb3IKICAgIGR5bmFtaWMgaW1wb3J0IHN5bWJvbHMuCiAKKyAgIExlZ2FjeSBXaW5kb3dzIGFuZCBTU0wKKyAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgV2luU1NMIChzcGVjaWZpY2FsbHkgU0NoYW5uZWwgZnJvbSBXaW5kb3dzIFNTUEkpLCBpcyB0aGUgbmF0aXZlIFNTTCBsaWJyYXJ5CisgICBpbiBXaW5kb3dzLiBIb3dldmVyLCBXaW5TU0wgaW4gV2luZG93cyA8PSBYUCBpcyB1bmFibGUgdG8gY29ubmVjdCB0byBzZXJ2ZXJzCisgICB0aGF0IG5vIGxvbmdlciBzdXBwb3J0IHRoZSBsZWdhY3kgaGFuZHNoYWtlcyBhbmQgYWxnb3JpdGhtcyB1c2VkIGJ5IHRob3NlCisgICB2ZXJzaW9ucy4gSWYgeW91IHdpbGwgYmUgdXNpbmcgY3VybCBpbiBvbmUgb2YgdGhvc2UgZWFybGllciB2ZXJzaW9ucyBvZgorICAgV2luZG93cyB5b3Ugc2hvdWxkIGNob29zZSBhbm90aGVyIFNTTCBiYWNrZW5kIHN1Y2ggYXMgT3BlblNTTC4KKwogQXBwbGUgaU9TIGFuZCBNYWMgT1MgWAogPT09PT09PT09PT09PT09PT09PT09PQogCkBAIC02OTcsNyArNzA2LDcgQEAKICAgIEJ1aWxkcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgOCB0aW1lcyBhIGRheSBmcm9tIGN1cnJlbnQgZ2l0IGFyZSBoZXJlOgogICAgaHR0cDovL3d3dy5na253Lm5ldC9taXJyb3IvY3VybC9hdXRvYnVpbGRzLwogICAgdGhlIHN0YXR1cyBvZiB0aGVzZSBidWlsZHMgY2FuIGJlIHZpZXdlZCBhdCB0aGUgYXV0b2J1aWxkIHRhYmxlOgotICAgaHR0cDovL2N1cmwuaGF4eC5zZS9kZXYvYnVpbGRzLmh0bWwKKyAgIGh0dHBzOi8vY3VybC5oYXh4LnNlL2Rldi9idWlsZHMuaHRtbAogCiBlQ29zCiA9PT09CkBAIC05NDEsOSArOTUwLDEwIEBACiAgICBpbXBvcnRhbnQgZmFjdG9yLiAgRmlyc3QsIGJlIHN1cmUgdG8gc2V0IHRoZSBDRkxBR1MgdmFyaWFibGUgd2hlbgogICAgY29uZmlndXJpbmcgd2l0aCBhbnkgcmVsZXZhbnQgY29tcGlsZXIgb3B0aW1pemF0aW9uIGZsYWdzIHRvIHJlZHVjZSB0aGUKICAgIHNpemUgb2YgdGhlIGJpbmFyeS4gIEZvciBnY2MsIHRoaXMgd291bGQgbWVhbiBhdCBtaW5pbXVtIHRoZSAtT3Mgb3B0aW9uLAotICAgYW5kIHBvdGVudGlhbGx5IHRoZSAtbWFyY2g9WCBhbmQgLW1keW5hbWljLW5vLXBpYyBvcHRpb25zIGFzIHdlbGwsIGUuZy4KKyAgIGFuZCBwb3RlbnRpYWxseSB0aGUgLW1hcmNoPVgsIC1tZHluYW1pYy1uby1waWMgYW5kIC1mbHRvIG9wdGlvbnMgYXMgd2VsbCwKKyAgIGUuZy4KIAotICAgICAgLi9jb25maWd1cmUgQ0ZMQUdTPSctT3MnIC4uLgorICAgICAgLi9jb25maWd1cmUgQ0ZMQUdTPSctT3MnIExERkxBR1M9Jy1XbCwtQnN5bWJvbGljJy4uLgogCiAgICBOb3RlIHRoYXQgbmV3ZXIgY29tcGlsZXJzIG9mdGVuIHByb2R1Y2Ugc21hbGxlciBjb2RlIHRoYW4gb2xkZXIgdmVyc2lvbnMKICAgIGR1ZSB0byBpbXByb3ZlZCBvcHRpbWl6YXRpb24uCkBAIC05NjEsNyArOTcxLDkgQEAKICAgICAgLS1kaXNhYmxlLWlwdjYgKGRpc2FibGVzIHN1cHBvcnQgZm9yIElQdjYpCiAgICAgIC0tZGlzYWJsZS1tYW51YWwgKGRpc2FibGVzIHN1cHBvcnQgZm9yIHRoZSBidWlsdC1pbiBkb2N1bWVudGF0aW9uKQogICAgICAtLWRpc2FibGUtcHJveHkgKGRpc2FibGVzIHN1cHBvcnQgZm9yIEhUVFAgYW5kIFNPQ0tTIHByb3hpZXMpCisgICAgIC0tZGlzYWJsZS11bml4LXNvY2tldHMgKGRpc2FibGVzIHN1cHBvcnQgZm9yIFVOSVggc29ja2V0cykKICAgICAgLS1kaXNhYmxlLXZlcmJvc2UgKGVsaW1pbmF0ZXMgZGVidWdnaW5nIHN0cmluZ3MgYW5kIGVycm9yIGNvZGUgc3RyaW5ncykKKyAgICAgLS1kaXNhYmxlLXZlcnNpb25lZC1zeW1ib2xzIChkaXNhYmxlcyBzdXBwb3J0IGZvciB2ZXJzaW9uZWQgc3ltYm9scykKICAgICAgLS1lbmFibGUtaGlkZGVuLXN5bWJvbHMgKGVsaW1pbmF0ZXMgdW5uZWVkZWQgc3ltYm9scyBpbiB0aGUgc2hhcmVkIGxpYnJhcnkpCiAgICAgIC0td2l0aG91dC1saWJpZG4gKGRpc2FibGVzIHN1cHBvcnQgZm9yIHRoZSBsaWJpZG4gRE5TIGxpYnJhcnkpCiAgICAgIC0td2l0aG91dC1saWJydG1wIChkaXNhYmxlcyBzdXBwb3J0IGZvciBSVE1QKQpAQCAtOTc0LDcgKzk4Niw3IEBACiAgICBjb25maWd1cmUgY29tbWFuZC1saW5lLCBlLmcuCiAKICAgICAgQ0ZMQUdTPSItT3MgLWZmdW5jdGlvbi1zZWN0aW9ucyAtZmRhdGEtc2VjdGlvbnMgXAotICAgICAgICAgICAgIC1mbm8tdW53aW5kLXRhYmxlcyAtZm5vLWFzeW5jaHJvbm91cy11bndpbmQtdGFibGVzIiBcCisgICAgICAgICAgICAgLWZuby11bndpbmQtdGFibGVzIC1mbm8tYXN5bmNocm9ub3VzLXVud2luZC10YWJsZXMgLWZsdG8iIFwKICAgICAgTERGTEFHUz0iLVdsLC1zIC1XbCwtQnN5bWJvbGljIC1XbCwtLWdjLXNlY3Rpb25zIgogCiAgICBCZSBzdXJlIGFsc28gdG8gc3RyaXAgZGVidWdnaW5nIHN5bWJvbHMgZnJvbSB5b3VyIGJpbmFyaWVzIGFmdGVyCkBAIC05ODQsOSArOTk2LDkgQEAKICAgIC5jb21tZW50IHNlY3Rpb24pLgogCiAgICBVc2luZyB0aGVzZSB0ZWNobmlxdWVzIGl0IGlzIHBvc3NpYmxlIHRvIGNyZWF0ZSBhIGJhc2ljIEhUVFAtb25seSBzaGFyZWQKLSAgIGxpYmN1cmwgbGlicmFyeSBmb3IgaTM4NiBMaW51eCBwbGF0Zm9ybXMgdGhhdCBpcyBvbmx5IDExNCBLaUIgaW4gc2l6ZSwgYW5kCi0gICBhbiBGVFAtb25seSBsaWJyYXJ5IHRoYXQgaXMgMTE1IEtpQiBpbiBzaXplIChhcyBvZiBsaWJjdXJsIHZlcnNpb24gNy4zNS4wLAotICAgdXNpbmcgZ2NjIDQuOC4yKS4KKyAgIGxpYmN1cmwgbGlicmFyeSBmb3IgaTM4NiBMaW51eCBwbGF0Zm9ybXMgdGhhdCBpcyBvbmx5IDEwOSBLaUIgaW4gc2l6ZSwgYW5kCisgICBhbiBGVFAtb25seSBsaWJyYXJ5IHRoYXQgaXMgMTA5IEtpQiBpbiBzaXplIChhcyBvZiBsaWJjdXJsIHZlcnNpb24gNy40NS4wLAorICAgdXNpbmcgZ2NjIDQuOS4yKS4KIAogICAgWW91IG1heSBmaW5kIHRoYXQgc3RhdGljYWxseSBsaW5raW5nIGxpYmN1cmwgdG8geW91ciBhcHBsaWNhdGlvbiB3aWxsCiAgICByZXN1bHQgaW4gYSBsb3dlciB0b3RhbCBzaXplIHRoYW4gZHluYW1pY2FsbHkgbGlua2luZy4KQEAgLTEwODksNyArMTEwMSw3IEBACiBIZWltZGFsICAgICAgaHR0cDovL3d3dy5oNWwub3JnLwogbGliaWRuICAgICAgIGh0dHBzOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGliaWRuLwogbGlibWV0YWxpbmsgIGh0dHBzOi8vbGF1bmNocGFkLm5ldC9saWJtZXRhbGluay8KLWxpYnNzaDIgICAgICBodHRwOi8vd3d3LmxpYnNzaDIub3JnLworbGlic3NoMiAgICAgIGh0dHBzOi8vd3d3LmxpYnNzaDIub3JnLwogTUlUIEtlcmJlcm9zIGh0dHA6Ly93ZWIubWl0LmVkdS9rZXJiZXJvcy93d3cvZGlzdC8KIE5TUyAgICAgICAgICBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL01vemlsbGEvUHJvamVjdHMvTlNTCiBPcGVuTERBUCAgICAgaHR0cDovL3d3dy5vcGVubGRhcC5vcmcvCmRpZmYgLS1naXQgYS9kb2NzL0lOU1RBTEwuZGV2Y3BwIGIvZG9jcy9JTlNUQUxMLmRldmNwcAppbmRleCBlZTJkNzAzLi5mOTg5ZDUyIDEwMDY0NAotLS0gYS9kb2NzL0lOU1RBTEwuZGV2Y3BwCisrKyBiL2RvY3MvSU5TVEFMTC5kZXZjcHAKQEAgLTI0OCw3ICsyNDgsNyBAQAogb3BlbnNzbC0wLjkuN2Utd2luMzItYmluLnppcCBmb3IgdGhlIG1pbmltYWxpc3QgcGFja2FnZSBvZiB0aGUgb3BlbnNzbC0wLjkuN2UKIGJpbmFyaWVzIHBvcnRlZCB0byBNUyBXaW5kb3dzIDk1Lzk4L05UL1hQIHVzaW5nIHRoZSBNaW5nVzMyL0dDQy0zLjEKIGRldmVsb3BtZW50IGVudmlyb25tZW50LiBUaGUgZmlsZSBtYXkgYmUgZG93bmxvYWRlZCBhdAotaHR0cDovL2N1cmwuaGF4eC5zZS9kb3dubG9hZC8uCitodHRwczovL2N1cmwuaGF4eC5zZS9kb3dubG9hZC8uCiAKIDItIE9wZW4gdGhlIGFib3ZlIHppcCBmaWxlLiBZb3Ugd2lsbCBmaW5kIHR3byBmaWxlcyAtIFNETC5kbGwsCiBTRExfbWl4ZXIuZGxsLiBJbnN0YWxsIHRoZW0gaW4gdGhlIGRpcmVjdG9yeSBDOlxXSU5ET1dTXFNZU1RFTTMyIGZvciBXaW4gOXgKZGlmZiAtLWdpdCBhL2RvY3MvSU5URVJOQUxTIGIvZG9jcy9JTlRFUk5BTFMKaW5kZXggNGNkNjNiNC4uNjk4ZDY2ZSAxMDA2NDQKLS0tIGEvZG9jcy9JTlRFUk5BTFMKKysrIGIvZG9jcy9JTlRFUk5BTFMKQEAgLTEwNzksMTcgKzEwNzksMTcgQEAKICAgdGhlIHNoYXJlIEFQSS4KIAogCi1bMV06IGh0dHA6Ly9jdXJsLmhheHguc2UvbGliY3VybC9jL2N1cmxfZWFzeV9zZXRvcHQuaHRtbAotWzJdOiBodHRwOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvYy9jdXJsX2Vhc3lfaW5pdC5odG1sCitbMV06IGh0dHBzOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvYy9jdXJsX2Vhc3lfc2V0b3B0Lmh0bWwKK1syXTogaHR0cHM6Ly9jdXJsLmhheHguc2UvbGliY3VybC9jL2N1cmxfZWFzeV9pbml0Lmh0bWwKIFszXTogaHR0cDovL2MtYXJlcy5oYXh4LnNlLwogWzRdOiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMCAiUkZDIDcyMzAiCi1bNV06IGh0dHA6Ly9jdXJsLmhheHguc2UvbGliY3VybC9jL0NVUkxPUFRfQUNDRVBUX0VOQ09ESU5HLmh0bWwKLVs2XTogaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL21hbnBhZ2UuaHRtbCMtLWNvbXByZXNzZWQKLVs3XTogaHR0cDovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvY3VybF9tdWx0aV9zb2NrZXRfYWN0aW9uLmh0bWwKLVs4XTogaHR0cDovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvY3VybF9tdWx0aV90aW1lb3V0Lmh0bWwKLVs5XTogaHR0cDovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvY3VybF9tdWx0aV9zZXRvcHQuaHRtbAotWzEwXTogaHR0cDovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvQ1VSTE1PUFRfVElNRVJGVU5DVElPTi5odG1sCi1bMTFdOiBodHRwOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvYy9jdXJsX211bHRpX3BlcmZvcm0uaHRtbAotWzEyXTogaHR0cDovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvY3VybF9tdWx0aV9mZHNldC5odG1sCi1bMTNdOiBodHRwOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvYy9jdXJsX211bHRpX2FkZF9oYW5kbGUuaHRtbAotWzE0XTogaHR0cDovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvY3VybF9tdWx0aV9pbmZvX3JlYWQuaHRtbAorWzVdOiBodHRwczovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvQ1VSTE9QVF9BQ0NFUFRfRU5DT0RJTkcuaHRtbAorWzZdOiBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL21hbnBhZ2UuaHRtbCMtLWNvbXByZXNzZWQKK1s3XTogaHR0cHM6Ly9jdXJsLmhheHguc2UvbGliY3VybC9jL2N1cmxfbXVsdGlfc29ja2V0X2FjdGlvbi5odG1sCitbOF06IGh0dHBzOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvYy9jdXJsX211bHRpX3RpbWVvdXQuaHRtbAorWzldOiBodHRwczovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvY3VybF9tdWx0aV9zZXRvcHQuaHRtbAorWzEwXTogaHR0cHM6Ly9jdXJsLmhheHguc2UvbGliY3VybC9jL0NVUkxNT1BUX1RJTUVSRlVOQ1RJT04uaHRtbAorWzExXTogaHR0cHM6Ly9jdXJsLmhheHguc2UvbGliY3VybC9jL2N1cmxfbXVsdGlfcGVyZm9ybS5odG1sCitbMTJdOiBodHRwczovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvY3VybF9tdWx0aV9mZHNldC5odG1sCitbMTNdOiBodHRwczovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvY3VybF9tdWx0aV9hZGRfaGFuZGxlLmh0bWwKK1sxNF06IGh0dHBzOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvYy9jdXJsX211bHRpX2luZm9fcmVhZC5odG1sCmRpZmYgLS1naXQgYS9kb2NzL0tOT1dOX0JVR1MgYi9kb2NzL0tOT1dOX0JVR1MKaW5kZXggMzQ1ZGM0NS4uYzkxYzM4OCAxMDA2NDQKLS0tIGEvZG9jcy9LTk9XTl9CVUdTCisrKyBiL2RvY3MvS05PV05fQlVHUwpAQCAtMSwyNTcgKzEsNTE2IEBACi1UaGVzZSBhcmUgcHJvYmxlbXMga25vd24gdG8gZXhpc3QgYXQgdGhlIHRpbWUgb2YgdGhpcyByZWxlYXNlLiBGZWVsIGZyZWUgdG8KLWpvaW4gaW4gYW5kIGhlbHAgdXMgY29ycmVjdCBvbmUgb3IgbW9yZSBvZiB0aGVzZSEgQWxzbyBiZSBzdXJlIHRvIGNoZWNrIHRoZQotY2hhbmdlbG9nIG9mIHRoZSBjdXJyZW50IGRldmVsb3BtZW50IHN0YXR1cywgYXMgb25lIG9yIG1vcmUgb2YgdGhlc2UgcHJvYmxlbXMKLW1heSBoYXZlIGJlZW4gZml4ZWQgc2luY2UgdGhpcyB3YXMgd3JpdHRlbiEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAKLTkwLiBJTUFQICJTRUFSQ0ggQUxMIiB0cnVuY2F0ZXMgb3V0cHV0IG9uIGxhcmdlIGJveGVzLiAiQSBxdWljayBzZWFyY2ggb2YgdGhlCi0gIGNvZGUgcmV2ZWFscyB0aGF0IHBpbmdwb25nLmMgY29udGFpbnMgc29tZSB0cnVuY2F0aW9uIGNvZGUsIGF0IGxpbmUgNDA4LAotICB3aGVuIGl0IGRlZW1zIHRoZSBzZXJ2ZXIgcmVzcG9uc2UgdG8gYmUgdG9vIGxhcmdlIHRydW5jYXRpbmcgaXQgdG8gNDAKLSAgY2hhcmFjdGVycyIKLSAgaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTM2NgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtub3duIEJ1Z3MKIAotODkuIERpc2FibGluZyBIVFRQIFBpcGVsaW5pbmcgd2hlbiB0aGVyZSBhcmUgb25nb2luZyB0cmFuc2ZlcnMgY2FuIGxlYWQgdG8KLSAgaGVhcCBjb3JydXB0aW9uIGFuZCBjcmFzaC4gaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTQxMQorVGhlc2UgYXJlIHByb2JsZW1zIGFuZCBidWdzIGtub3duIHRvIGV4aXN0IGF0IHRoZSB0aW1lIG9mIHRoaXMgcmVsZWFzZS4gRmVlbAorZnJlZSB0byBqb2luIGluIGFuZCBoZWxwIHVzIGNvcnJlY3Qgb25lIG9yIG1vcmUgb2YgdGhlc2UhIEFsc28gYmUgc3VyZSB0bworY2hlY2sgdGhlIGNoYW5nZWxvZyBvZiB0aGUgY3VycmVudCBkZXZlbG9wbWVudCBzdGF0dXMsIGFzIG9uZSBvciBtb3JlIG9mIHRoZXNlCitwcm9ibGVtcyBtYXkgaGF2ZSBiZWVuIGZpeGVkIG9yIGNoYW5nZWQgc29tZXdoYXQgc2luY2UgdGhpcyB3YXMgd3JpdHRlbiEKIAotODguIGxpYmN1cmwgZG9lc24ndCBzdXBwb3J0IENVUkxJTkZPX0ZJTEVUSU1FIGZvciBTRlRQIHRyYW5zZmVycyBhbmQgdGh1cwotICBjdXJsJ3MgLVIgb3B0aW9uIGFsc28gZG9lc24ndCB3b3JrIHRoZW4uCisgMS4gSFRUUAorIDEuMSBDVVJMRk9STV9DT05URU5UTEVOIGluIGFuIGFycmF5CisgMS4yIERpc2FibGluZyBIVFRQIFBpcGVsaW5pbmcKKyAxLjMgU1RBUlRUUkFOU0ZFUiB0aW1lIGlzIHdyb25nIGZvciBIVFRQIFBPU1RzCisgMS40IG11bHRpcGFydCBmb3JtcG9zdHMgZmlsZSBuYW1lIGVuY29kaW5nCisgMS41IEV4cGVjdC0xMDAgbWVldHMgNDE3CisgMS42IFVubmVjZXNzYXJ5IGNsb3NlIHdoZW4gNDAxIHJlY2VpdmVkIHdhaXRpbmcgZm9yIDEwMAorIDEuNyBDT05ORUNUIHJlc3BvbnNlIGxhcmdlciB0aGFuIDE2S0IKKyAxLjggRE5TIHRpbWluZyBpcyB3cm9uZyBmb3IgSFRUUCByZWRpcmVjdHMKKyAxLjkgSFRUUC8yIGZyYW1lcyB3aGlsZSBpbiB0aGUgY29ubmVjdGlvbiBwb29sIGtpbGwgcmV1c2UKKyAxLjEwIFN0cmlwcyB0cmFpbGluZyBkb3QgZnJvbSBob3N0IG5hbWUKIAotODcuIC1KLy0tcmVtb3RlLWhlYWRlci1uYW1lIGRvZXNuJ3QgZGVjb2RlICUtZW5jb2RlZCBmaWxlIG5hbWVzLiBSRkM2MjY2Ci0gIGRldGFpbHMgaG93IGl0IHNob3VsZCBiZSBkb25lLiBUaGUgY2FuIG9mIHdvcm0gaXMgYmFzaWNhbGx5IHRoYXQgd2UgaGF2ZSBubwotICBjaGFyc2V0IGhhbmRsaW5nIGluIGN1cmwgYW5kIGFzY2lpID49MTI4IGlzIGEgY2hhbGxlbmdlIGZvciB1cy4gTm90IHRvCi0gIG1lbnRpb24gdGhhdCBkZWNvZGluZyBhbHNvIG1lYW5zIHRoYXQgd2UgbmVlZCB0byBjaGVjayBmb3IgbmFzdGluZXNzIHRoYXQgaXMKLSAgYXR0ZW1wdGVkLCBsaWtlICIuLi8iIHNlcXVlbmNlcyBhbmQgdGhlIGxpa2UuIFByb2JhYmx5IGV2ZXJ5dGhpbmcgdG8gdGhlIGxlZnQKLSAgb2YgYW55IGVtYmVkZGVkIHNsYXNoZXMgc2hvdWxkIGJlIGN1dCBvZmYuCi0gIGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTEyOTQKKyAyLiBUTFMKKyAyLjEgSGFuZ3Mgd2l0aCBQb2xhclNTTAorIDIuMiBDVVJMSU5GT19TU0xfVkVSSUZZUkVTVUxUIGhhcyBsaW1pdGVkIHN1cHBvcnQKKyAyLjMgREVSIGluIGtleWNoYWluCisgMi40IEdudVRMUyBiYWNrZW5kIHNraXBzIHJlYWxseSBsb25nIGNlcnRpZmljYXRlIGZpZWxkcwogCi04Ni4gVGhlIGRpc2Nvbm5lY3QgY29tbWFuZHMgKExPR09VVCBhbmQgUVVJVCkgbWF5IG5vdCBiZSBzZW50IGJ5IElNQVAsIFBPUDMKLSAgYW5kIFNNVFAgaWYgYSBmYWlsdXJlIG9jY3VycyBkdXJpbmcgdGhlIGF1dGhlbnRpY2F0aW9uIHBoYXNlIG9mIGEKLSAgY29ubmVjdGlvbi4KKyAzLiBFbWFpbCBwcm90b2NvbHMKKyAzLjEgSU1BUCBTRUFSQ0ggQUxMIHRydW5jYXRlZCByZXNwb25zZQorIDMuMiBObyBkaXNjb25uZWN0IGNvbW1hbmQKKyAzLjMgU01UUCB0byBtdWx0aXBsZSByZWNpcGllbnRzCiAKLTg1LiBXcm9uZyBTVEFSVFRSQU5TRkVSIHRpbWVyIGFjY291bnRpbmcgZm9yIFBPU1QgcmVxdWVzdHMKLSAgVGltZXIgd29ya3MgZmluZSB3aXRoIEdFVCByZXF1ZXN0cywgYnV0IHdoaWxlIHVzaW5nIFBPU1QgdGhlIHRpbWUgZm9yCi0gIENVUkxJTkZPX1NUQVJUVFJBTlNGRVJfVElNRSBpcyB3cm9uZy4gV2hpbGUgdXNpbmcgUE9TVAotICBDVVJMSU5GT19TVEFSVFRSQU5TRkVSX1RJTUUgbWludXMgQ1VSTElORk9fUFJFVFJBTlNGRVJfVElNRSBpcyBuZWFyIHRvIHplcm8KLSAgZXZlcnkgdGltZS4KLSAgaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTIxMworIDQuIENvbW1hbmQgbGluZQorIDQuMSAtSiB3aXRoICUtZW5jb2RlZCBmaWxlIG5hbWVhcworIDQuMiAtSiB3aXRoIC1DIC0gZmFpbHMKKyA0LjMgLS1yZXRyeSBhbmQgdHJhbnNmZXIgdGltZW91dHMKIAotODQuIENVUkxJTkZPX1NTTF9WRVJJRllSRVNVTFQgaXMgb25seSBpbXBsZW1lbnRlZCBmb3IgdGhlIE9wZW5TU0wgYW5kIE5TUwotICBiYWNrZW5kcywgc28gcmVseWluZyBvbiB0aGlzIGluZm9ybWF0aW9uIGluIGEgZ2VuZXJpYyBhcHAgaXMgZmxha3kuCisgNS4gQnVpbGQgYW5kIHBvcnRhYmlsaXR5IGlzc3VlcworIDUuMSBXaW5kb3dzIEJvcmxhbmQgY29tcGlsZXIKKyA1LjIgY3VybC1jb25maWcgLS1saWJzIGNvbnRhaW5zIHByaXZhdGUgZGV0YWlscworIDUuMyBsaWJpZG4gYW5kIG9sZCBpY29udgorIDUuNCBBSVggc2hhcmVkIGJ1aWxkIHdpdGggYy1hcmVzIGZhaWxzCisgNS41IGNhbid0IGhhbmRsZSBVbmljb2RlIGFyZ3VtZW50cyBpbiBXaW5kb3dzCiAKLTgyLiBXaGVuIGJ1aWxkaW5nIHdpdGggdGhlIFdpbmRvd3MgQm9ybGFuZCBjb21waWxlciwgaXQgZmFpbHMgYmVjYXVzZSB0aGUKLSAgInRsaWIiIHRvb2wgZG9lc24ndCBzdXBwb3J0IGh5cGhlbnMgKG1pbnVzIHNpZ25zKSBpbiBmaWxlIG5hbWVzIGFuZCB3ZSBoYXZlCi0gIHN1Y2ggaW4gdGhlIGJ1aWxkLgotICBodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xMjIyCisgNi4gQXV0aGVudGljYXRpb24KKyA2LjEgTlRMTSBhdXRoZW50aWNhdGlvbiBhbmQgdW5pY29kZQorIDYuMiBNSVQgS2VyYmVyb3MgZm9yIFdpbmRvd3MgYnVpbGQKKyA2LjMgTlRMTSBpbiBzeXN0ZW0gY29udGV4dCB1c2VzIHdyb25nIG5hbWUKKyA2LjQgTmVnb3RpYXRlIG5lZWRzIGEgZmFrZSB1c2VyIG5hbWUKIAotODEuIFdoZW4gdXNpbmcgLUogKHdpdGggLU8pLCBhdXRvbWF0aWNhbGx5IHJlc3VtZWQgZG93bmxvYWRpbmcgdG9nZXRoZXIgd2l0aAotICAiLUMgLSIgZmFpbHMuIFdpdGhvdXQgLUogdGhlIHNhbWUgY29tbWFuZCBsaW5lIHdvcmtzISBUaGlzIGhhcHBlbnMgYmVjYXVzZQotICB0aGUgcmVzdW1lIGxvZ2ljIGlzIHdvcmtlZCBvdXQgYmVmb3JlIHRoZSB0YXJnZXQgZmlsZSBuYW1lIChhbmQgdGh1cyBpdHMKLSAgcHJlLXRyYW5zZmVyIHNpemUpIGhhcyBiZWVuIGZpZ3VyZWQgb3V0IQotICBodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xMTY5CisgNy4gRlRQCisgNy4xIEZUUCB3aXRob3V0IG9yIHNsb3cgMjIwIHJlc3BvbnNlCisgNy4yIEZUUCB3aXRoIENPTk5FQ1QgYW5kIHNsb3cgc2VydmVyCisgNy4zIEZUUCB3aXRoIE5PQk9EWSBhbmQgRkFJTE9ORVJST1IKKyA3LjQgRlRQIHdpdGggQUNDVAorIDcuNSBBU0NJSSBGVFAKKyA3LjYgRlRQIHdpdGggTlVMcyBpbiBVUkwgcGFydHMKKyA3LjcgRlRQIGFuZCBlbXB0eSBwYXRoIHBhcnRzIGluIHRoZSBVUkwKIAotODAuIEN1cmwgZG9lc24ndCByZWNvZ25pemUgY2VydGlmaWNhdGVzIGluIERFUiBmb3JtYXQgaW4ga2V5Y2hhaW4sIGJ1dCBpdAotICB3b3JrcyB3aXRoIFBFTS4KLSAgaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTA2NQorIDguIFRFTE5FVAorIDguMSBURUxORVQgYW5kIHRpbWUgbGltdGlhdGlvbnMgZG9uJ3Qgd29yaworIDguMiBNaWNyb3NvZnQgdGVsbmV0IHNlcnZlcgogCi03OS4gU01UUC4gV2hlbiBzZW5kaW5nIGRhdGEgdG8gbXVsdGlwbGUgcmVjaXBpZW50cywgY3VybCB3aWxsIGFib3J0IGFuZCByZXR1cm4KLSAgZmFpbHVyZSBpZiBvbmUgb2YgdGhlIHJlY2lwaWVudHMgaW5kaWNhdGUgZmFpbHVyZSAob24gdGhlICJSQ1BUIFRPIgotICBjb21tYW5kKS4gT3JkaW5hcnkgbWFpbCBwcm9ncmFtcyB3b3VsZCBwcm9jZWVkIGFuZCBzdGlsbCBzZW5kIHRvIHRoZSBvbmVzCi0gIHRoYXQgY2FuIHJlY2VpdmUgZGF0YS4gVGhpcyBpcyBzdWJqZWN0IGZvciBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4KLSAgaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTExNgorIDkuIFNGVFAgYW5kIFNDUAorIDkuMSBTRlRQIGRvZXNuJ3QgZG8gQ1VSTE9QVF9QT1NUUVVPVEUgY29ycmVjdAogCi03OC4gY3VybCBhbmQgbGliY3VybCBkb24ndCBhbHdheXMgc2lnbmFsIHRoZSBjbGllbnQgcHJvcGVybHkgd2hlbiAic2VuZGluZyIKLSAgemVybyBieXRlcyBmaWxlcyAtIGl0IG1ha2VzIGZvciBleGFtcGxlIHRoZSBjb21tYW5kIGxpbmUgY2xpZW50IG5vdCBjcmVhdGluZwotICBhbnkgZmlsZSBhdCBhbGwuIExpa2Ugd2hlbiB1c2luZyBGVFAuCi0gIGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTEwNjMKKyAxMC4gU09DS1MKKyAxMC4xIFNPQ0tTIHByb3h5IGNvbm5lY3Rpb25zIGFyZSBkb25lIGJsb2NraW5nCisgMTAuMiBTT0NLUyBkb24ndCBzdXBwb3J0IHRpbWVvdXRzCisgMTAuMyBGVFBTIG92ZXIgU09DS1MKKyAxMC40IGFjdGl2ZSBGVFAgb3ZlciBhIFNPQ0tTCiAKLTc2LiBUaGUgU09DS0VUIHR5cGUgaW4gV2luNjQgaXMgNjQgYml0cyBsYXJnZSAoYW5kIHRodXMgc28gaXMgY3VybF9zb2NrZXRfdCBvbgotICB0aGF0IHBsYXRmb3JtKSwgYW5kIGxvbmcgaXMgb25seSAzMiBiaXRzLiBJdCBtYWtlcyBpdCBpbXBvc3NpYmxlIGZvcgotICBjdXJsX2Vhc3lfZ2V0aW5mbygpIHRvIHJldHVybiBhIHNvY2tldCBwcm9wZXJseSB3aXRoIHRoZSBDVVJMSU5GT19MQVNUU09DS0VUCi0gIG9wdGlvbiBhcyBmb3IgYWxsIG90aGVyIG9wZXJhdGluZyBzeXN0ZW1zLgorIDExLiBJbnRlcm5hbHMKKyAxMS4xIEN1cmwgbGVha3MgLm9uaW9uIGhvc3RuYW1lcyBpbiBETlMKKyAxMS4yIGVycm9yIGJ1ZmZlciBub3Qgc2V0IGlmIGNvbm5lY3Rpb24gdG8gbXVsdGlwbGUgYWRkcmVzc2VzIGZhaWxzCiAKLTc1LiBOVExNIGF1dGhlbnRpY2F0aW9uIGludm9sdmluZyB1bmljb2RlIHVzZXIgbmFtZSBvciBwYXNzd29yZCBvbmx5IHdvcmtzCi0gIHByb3Blcmx5IGlmIGJ1aWx0IHdpdGggVU5JQ09ERSBkZWZpbmVkIHRvZ2V0aGVyIHdpdGggdGhlIFdpblNTTC9zY2hhbm5lbAotICBiYWNrZW5kLiBUaGUgb3JpZ2luYWwgcHJvYmxlbSB3YXMgbWVudGlvbmVkIGluOgotICBodHRwOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMDktMTAvMDAyNC5odG1sCi0gIGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTg5NgorIDEyLiBMREFQIGFuZCBPcGVuTERBUAorIDEyLjEgT3BlbkxEQVAgaGFuZ3MgYWZ0ZXIgcmV0dXJuaW5nIHJlc3VsdHMKIAotICBUaGUgV2luU1NML3NjaGFubmVsIHZlcnNpb24gdmVyaWZpZWQgdG8gd29yayBhcyBtZW50aW9uZWQgaW4KLSAgaHR0cDovL2N1cmwuaGF4eC5zZS9tYWlsL2xpYi0yMDEyLTA3LzAwNzMuaHRtbAorIDEzIFRDUC9JUAorIDEzLjEgLS1pbnRlcmZhY2UgZm9yIGlwdjYgYmluZHMgdG8gdW51c2FibGUgSVAgYWRkcmVzcwogCi03My4gaWYgYSBjb25uZWN0aW9uIGlzIG1hZGUgdG8gYSBGVFAgc2VydmVyIGJ1dCB0aGUgc2VydmVyIHRoZW4ganVzdCBuZXZlcgotICBzZW5kcyB0aGUgMjIwIHJlc3BvbnNlIG9yIG90aGVyd2lzZSBpcyBkZWFkIHNsb3csIGxpYmN1cmwgd2lsbCBub3QKLSAgYWNrbm93bGVkZ2UgdGhlIGNvbm5lY3Rpb24gdGltZW91dCBkdXJpbmcgdGhhdCBwaGFzZSBidXQgb25seSB0aGUgInJlYWwiCi0gIHRpbWVvdXQgLSB3aGljaCBtYXkgc3VycHJpc2UgdXNlcnMgYXMgaXQgaXMgcHJvYmFibHkgY29uc2lkZXJlZCB0byBiZSB0aGUKLSAgY29ubmVjdCBwaGFzZSB0byBtb3N0IHBlb3BsZS4gQnJvdWdodCB1cCAoYW5kIGlzIGJlaW5nIG1pc3VuZGVyc3Rvb2QpIGluOgotICBodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD04NTYKIAotNzIuICJQYXVzaW5nIHBpcGVsaW5lIHByb2JsZW1zLiIKLSAgaHR0cDovL2N1cmwuaGF4eC5zZS9tYWlsL2xpYi0yMDA5LTA3LzAyMTQuaHRtbAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKLTcwLiBQcm9ibGVtIHJlLXVzaW5nIGVhc3kgaGFuZGxlIGFmdGVyIGNhbGwgdG8gY3VybF9tdWx0aV9yZW1vdmVfaGFuZGxlCi0gIGh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC9saWItMjAwOS0wNy8wMjQ5Lmh0bWwKKzEuIEhUVFAKIAotNjguICJNb3JlIHF1ZXN0aW9ucyBhYm91dCBhcmVzIGJlaGF2aW9yIi4KLSAgaHR0cDovL2N1cmwuaGF4eC5zZS9tYWlsL2xpYi0yMDA5LTA4LzAwMTIuaHRtbAorMS4xIENVUkxGT1JNX0NPTlRFTlRMRU4gaW4gYW4gYXJyYXkKIAotNjcuIFdoZW4gY3JlYXRpbmcgbXVsdGlwYXJ0IGZvcm1wb3N0cy4gVGhlIGZpbGUgbmFtZSBwYXJ0IGNhbiBiZSBlbmNvZGVkIHdpdGgKLSAgc29tZXRoaW5nIGJleW9uZCBhc2NpaSBidXQgY3VycmVudGx5IGxpYmN1cmwgd2lsbCBvbmx5IHBhc3MgaW4gdGhlIHZlcmJhdGltCi0gIHN0cmluZyB0aGUgYXBwIHByb3ZpZGVzLiBUaGVyZSBhcmUgc2V2ZXJhbCBicm93c2VycyB0aGF0IGFscmVhZHkgZG8gdGhpcwotICBlbmNvZGluZy4gVGhlIGtleSBzZWVtcyB0byBiZSB0aGUgdXBkYXRlZCBkcmFmdCB0byBSRkMyMjMxOgotICBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtcmVzY2hrZS1yZmMyMjMxLWluLWh0dHAtMDIKKyBJdCBpcyBub3QgcG9zc2libGUgdG8gcGFzcyBhIDY0LWJpdCB2YWx1ZSB1c2luZyBDVVJMRk9STV9DT05URU5UTEVOIHdpdGgKKyBDVVJMRk9STV9BUlJBWSwgd2hlbiBjb21waWxlZCBvbiAzMi1iaXQgcGxhdGZvcm1zIHRoYXQgc3VwcG9ydCA2NC1iaXQKKyBpbnRlZ2Vycy4gVGhpcyBpcyBiZWNhdXNlIHRoZSB1bmRlcmx5aW5nIHN0cnVjdHVyZSAnY3VybF9mb3JtcycgdXNlcyBhIGR1YWwKKyBwdXJwb3NlIGNoYXIqIGZvciBzdG9yaW5nIHRoZXNlIHZhbHVlcyBpbiB2aWEgY2FzdGluZy4gRm9yIG1vcmUgaW5mb3JtYXRpb24KKyBzZWUgdGhlIG5vdyBjbG9zZWQgcmVsYXRlZCBpc3N1ZToKKyBodHRwczovL2dpdGh1Yi5jb20vY3VybC9jdXJsL2lzc3Vlcy82MDgKIAotNjYuIFdoZW4gdXNpbmcgdGVsbmV0LCB0aGUgdGltZSBsaW1pdGF0aW9uIG9wdGlvbnMgZG9uJ3Qgd29yay4KLSAgaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9ODQ2CisxLjIgRGlzYWJsaW5nIEhUVFAgUGlwZWxpbmluZwogCi02NS4gV2hlbiBkb2luZyBGVFAgb3ZlciBhIHNvY2tzIHByb3h5IG9yIENPTk5FQ1QgdGhyb3VnaCBIVFRQIHByb3h5IGFuZCB0aGUKLSAgbXVsdGkgaW50ZXJmYWNlIGlzIHVzZWQsIGxpYmN1cmwgd2lsbCBmYWlsIGlmIHRoZSAocGFzc2l2ZSkgVENQIGNvbm5lY3Rpb24KLSAgZm9yIHRoZSBkYXRhIHRyYW5zZmVyIGlzbid0IG1vcmUgb3IgbGVzcyBpbnN0YW50IGFzIHRoZSBjb2RlIGRvZXMgbm90Ci0gIHByb3Blcmx5IHdhaXQgZm9yIHRoZSBjb25uZWN0IHRvIGJlIGNvbmZpcm1lZC4gU2VlIHRlc3QgY2FzZSA1NjQgZm9yIGEgZmlyc3QKLSAgc2hvdCBhdCBhIHRlc3QgY2FzZS4KKyBEaXNhYmxpbmcgSFRUUCBQaXBlbGluaW5nIHdoZW4gdGhlcmUgYXJlIG9uZ29pbmcgdHJhbnNmZXJzIGNhbiBsZWFkIHRvCisgaGVhcCBjb3JydXB0aW9uIGFuZCBjcmFzaC4gaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTE0MTEKIAotNjMuIFdoZW4gQ1VSTE9QVF9DT05ORUNUX09OTFkgaXMgdXNlZCwgdGhlIGhhbmRsZSBjYW5ub3QgcmVsaWFibHkgYmUgcmUtdXNlZAotICBmb3IgYW55IGZ1cnRoZXIgcmVxdWVzdHMgb3IgdHJhbnNmZXJzLiBUaGUgd29yay1hcm91bmQgaXMgdGhlbiB0byBjbG9zZSB0aGF0Ci0gIGhhbmRsZSB3aXRoIGN1cmxfZWFzeV9jbGVhbnVwKCkgYW5kIGNyZWF0ZSBhIG5ldy4gU29tZSBtb3JlIGRldGFpbHM6Ci0gIGh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC9saWItMjAwOS0wNC8wMzAwLmh0bWwKKzEuMyBTVEFSVFRSQU5TRkVSIHRpbWUgaXMgd3JvbmcgZm9yIEhUVFAgUE9TVHMKIAotNjEuIElmIGFuIHVwbG9hZCB1c2luZyBFeHBlY3Q6IDEwMC1jb250aW51ZSByZWNlaXZlcyBhbiBIVFRQIDQxNyByZXNwb25zZSwKLSAgaXQgb3VnaHQgdG8gYmUgYXV0b21hdGljYWxseSByZXNlbnQgd2l0aG91dCB0aGUgRXhwZWN0Oi4gIEEgd29ya2Fyb3VuZCBpcwotICBmb3IgdGhlIGNsaWVudCBhcHBsaWNhdGlvbiB0byByZWRvIHRoZSB0cmFuc2ZlciBhZnRlciBkaXNhYmxpbmcgRXhwZWN0Oi4KLSAgaHR0cDovL2N1cmwuaGF4eC5zZS9tYWlsL2FyY2hpdmUtMjAwOC0wMi8wMDQzLmh0bWwKKyBXcm9uZyBTVEFSVFRSQU5TRkVSIHRpbWVyIGFjY291bnRpbmcgZm9yIFBPU1QgcmVxdWVzdHMgVGltZXIgd29ya3MgZmluZSB3aXRoCisgR0VUIHJlcXVlc3RzLCBidXQgd2hpbGUgdXNpbmcgUE9TVCB0aGUgdGltZSBmb3IgQ1VSTElORk9fU1RBUlRUUkFOU0ZFUl9USU1FCisgaXMgd3JvbmcuIFdoaWxlIHVzaW5nIFBPU1QgQ1VSTElORk9fU1RBUlRUUkFOU0ZFUl9USU1FIG1pbnVzCisgQ1VSTElORk9fUFJFVFJBTlNGRVJfVElNRSBpcyBuZWFyIHRvIHplcm8gZXZlcnkgdGltZS4KIAotNjAuIGxpYmN1cmwgY2xvc2VzIHRoZSBjb25uZWN0aW9uIGlmIGFuIEhUVFAgNDAxIHJlcGx5IGlzIHJlY2VpdmVkIHdoaWxlIGl0Ci0gIGlzIHdhaXRpbmcgZm9yIHRoZSB0aGUgMTAwLWNvbnRpbnVlIHJlc3BvbnNlLgotICBodHRwOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMDgtMDgvMDQ2Mi5odG1sCisgaHR0cHM6Ly9naXRodWIuY29tL2N1cmwvY3VybC9pc3N1ZXMvMjE4CisgaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTEyMTMKIAotNTguIEl0IHNlZW1zIHNlbnNpYmxlIHRvIGJlIGFibGUgdG8gdXNlIENVUkxPUFRfTk9CT0RZIGFuZAotICBDVVJMT1BUX0ZBSUxPTkVSUk9SIHdpdGggRlRQIHRvIGRldGVjdCBpZiBhIGZpbGUgZXhpc3RzIG9yIG5vdCwgYnV0IGl0IGlzCi0gIG5vdCB3b3JraW5nOiBodHRwOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMDgtMDcvMDI5NS5odG1sCisxLjQgbXVsdGlwYXJ0IGZvcm1wb3N0cyBmaWxlIG5hbWUgZW5jb2RpbmcKIAotNTYuIFdoZW4gbGliY3VybCBzZW5kcyBDVVJMT1BUX1BPU1RRVU9URSBjb21tYW5kcyB3aGVuIGNvbm5lY3RlZCB0byBhIFNGVFAKLSAgc2VydmVyIHVzaW5nIHRoZSBtdWx0aSBpbnRlcmZhY2UsIHRoZSBjb21tYW5kcyBhcmUgbm90IGJlaW5nIHNlbnQgY29ycmVjdGx5Ci0gIGFuZCBpbnN0ZWFkIHRoZSBjb25uZWN0aW9uIGlzICJjYW5jZWxsZWQiICh0aGUgb3BlcmF0aW9uIGlzIGNvbnNpZGVyZWQgZG9uZSkKLSAgcHJlbWF0dXJlbHkuIFRoZXJlIGlzIGEgaGFsZi1iYWtlZCAoYnVzeS1sb29waW5nKSBwYXRjaCBwcm92aWRlZCBpbiB0aGUgYnVnCi0gIHJlcG9ydCBidXQgaXQgY2Fubm90IGJlIGFjY2VwdGVkIGFzLWlzLiBTZWUKLSAgaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9NzQ4CisgV2hlbiBjcmVhdGluZyBtdWx0aXBhcnQgZm9ybXBvc3RzLiBUaGUgZmlsZSBuYW1lIHBhcnQgY2FuIGJlIGVuY29kZWQgd2l0aAorIHNvbWV0aGluZyBiZXlvbmQgYXNjaWkgYnV0IGN1cnJlbnRseSBsaWJjdXJsIHdpbGwgb25seSBwYXNzIGluIHRoZSB2ZXJiYXRpbQorIHN0cmluZyB0aGUgYXBwIHByb3ZpZGVzLiBUaGVyZSBhcmUgc2V2ZXJhbCBicm93c2VycyB0aGF0IGFscmVhZHkgZG8gdGhpcworIGVuY29kaW5nLiBUaGUga2V5IHNlZW1zIHRvIGJlIHRoZSB1cGRhdGVkIGRyYWZ0IHRvIFJGQzIyMzE6CisgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LXJlc2Noa2UtcmZjMjIzMS1pbi1odHRwLTAyCiAKLTU1LiBsaWJjdXJsIGZhaWxzIHRvIGJ1aWxkIHdpdGggTUlUIEtlcmJlcm9zIGZvciBXaW5kb3dzIChLZlcpIGR1ZSB0byBLZlcncwotICBsaWJyYXJ5IGhlYWRlciBmaWxlcyBleHBvcnRpbmcgc3ltYm9scy9tYWNyb3MgdGhhdCBzaG91bGQgYmUga2VwdCBwcml2YXRlCi0gIHRvIHRoZSBLZlcgbGlicmFyeS4gU2VlIHRpY2tldCAjNTYwMSBhdCBodHRwOi8va3JiZGV2Lm1pdC5lZHUvcnQvCisxLjUgRXhwZWN0LTEwMCBtZWV0cyA0MTcKIAotNTIuIEdhdXRhbSBLYWNocm9vJ3MgaXNzdWUgdGhhdCBpZGVudGlmaWVzIGEgcHJvYmxlbSB3aXRoIHRoZSBtdWx0aSBpbnRlcmZhY2UKLSAgd2hlcmUgYSBjb25uZWN0aW9uIGNhbiBiZSByZS11c2VkIHdpdGhvdXQgYWN0dWFsbHkgYmVpbmcgcHJvcGVybHkKLSAgU1NMLW5lZ290aWF0ZWQ6Ci0gIGh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC9saWItMjAwOC0wMS8wMjc3Lmh0bWwKKyBJZiBhbiB1cGxvYWQgdXNpbmcgRXhwZWN0OiAxMDAtY29udGludWUgcmVjZWl2ZXMgYW4gSFRUUCA0MTcgcmVzcG9uc2UsIGl0Cisgb3VnaHQgdG8gYmUgYXV0b21hdGljYWxseSByZXNlbnQgd2l0aG91dCB0aGUgRXhwZWN0Oi4gIEEgd29ya2Fyb3VuZCBpcyBmb3IKKyB0aGUgY2xpZW50IGFwcGxpY2F0aW9uIHRvIHJlZG8gdGhlIHRyYW5zZmVyIGFmdGVyIGRpc2FibGluZyBFeHBlY3Q6LgorIGh0dHBzOi8vY3VybC5oYXh4LnNlL21haWwvYXJjaGl2ZS0yMDA4LTAyLzAwNDMuaHRtbAogCi00OS4gSWYgdXNpbmcgLS1yZXRyeSBhbmQgdGhlIHRyYW5zZmVyIHRpbWVvdXRzIChwb3NzaWJseSBkdWUgdG8gdXNpbmcgLW0gb3IKLSAgLXkvLVkpIHRoZSBuZXh0IGF0dGVtcHQgZG9lc24ndCByZXN1bWUgdGhlIHRyYW5zZmVyIHByb3Blcmx5IGZyb20gd2hhdCB3YXMKLSAgZG93bmxvYWRlZCBpbiB0aGUgcHJldmlvdXMgYXR0ZW1wdCBidXQgd2lsbCB0cnVuY2F0ZSBhbmQgcmVzdGFydCBhdCB0aGUKLSAgb3JpZ2luYWwgcG9zaXRpb24gd2hlcmUgaXQgd2FzIGF0IGJlZm9yZSB0aGUgcHJldmlvdXMgZmFpbGVkIGF0dGVtcHQuIFNlZQotICBodHRwOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMDgtMDEvMDA4MC5odG1sIGFuZCBNYW5kcml2YSBidWcgcmVwb3J0Ci0gIGh0dHBzOi8vcWEubWFuZHJpdmEuY29tL3Nob3dfYnVnLmNnaT9pZD0yMjU2NQorMS42IFVubmVjZXNzYXJ5IGNsb3NlIHdoZW4gNDAxIHJlY2VpdmVkIHdhaXRpbmcgZm9yIDEwMAogCi00OC4gSWYgYSBDT05ORUNUIHJlc3BvbnNlLWhlYWRlcnMgYXJlIGxhcmdlciB0aGFuIEJVRlNJWkUgKDE2S0IpIHdoZW4gdGhlCi0gIGNvbm5lY3Rpb24gaXMgbWVhbnQgdG8gYmUga2VwdCBhbGl2ZSAobGlrZSBmb3IgTlRMTSBwcm94eSBhdXRoKSwgdGhlCi0gIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIHByZW1hdHVyZWx5IGFuZCB3aWxsIGNvbmZ1c2UgdGhlIHJlc3Qgb2YgdGhlIEhUVFAKLSAgcHJvdG9jb2wgY29kZS4gVGhpcyBzaG91bGQgYmUgdmVyeSByYXJlLgorIGxpYmN1cmwgY2xvc2VzIHRoZSBjb25uZWN0aW9uIGlmIGFuIEhUVFAgNDAxIHJlcGx5IGlzIHJlY2VpdmVkIHdoaWxlIGl0IGlzCisgd2FpdGluZyBmb3IgdGhlIHRoZSAxMDAtY29udGludWUgcmVzcG9uc2UuCisgaHR0cHM6Ly9jdXJsLmhheHguc2UvbWFpbC9saWItMjAwOC0wOC8wNDYyLmh0bWwKIAotNDMuIFRoZXJlIHNlZW1zIHRvIGJlIGEgcHJvYmxlbSB3aGVuIGNvbm5lY3RpbmcgdG8gdGhlIE1pY3Jvc29mdCB0ZWxuZXQgc2VydmVyLgotICBodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD02NDkKKzEuNyBDT05ORUNUIHJlc3BvbnNlIGxhcmdlciB0aGFuIDE2S0IKIAotNDEuIFdoZW4gZG9pbmcgYW4gb3BlcmF0aW9uIG92ZXIgRlRQIHRoYXQgcmVxdWlyZXMgdGhlIEFDQ1QgY29tbWFuZCAoYnV0IG5vdAotICB3aGVuIGxvZ2dpbmcgaW4pLCB0aGUgb3BlcmF0aW9uIHdpbGwgZmFpbCBzaW5jZSBsaWJjdXJsIGRvZXNuJ3QgZGV0ZWN0IHRoaXMKLSAgYW5kIHRodXMgZmFpbHMgdG8gaXNzdWUgdGhlIGNvcnJlY3QgY29tbWFuZDoKLSAgaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9NjM1CisgSWYgYSBDT05ORUNUIHJlc3BvbnNlLWhlYWRlcnMgYXJlIGxhcmdlciB0aGFuIEJVRlNJWkUgKDE2S0IpIHdoZW4gdGhlCisgY29ubmVjdGlvbiBpcyBtZWFudCB0byBiZSBrZXB0IGFsaXZlIChsaWtlIGZvciBOVExNIHByb3h5IGF1dGgpLCB0aGUgZnVuY3Rpb24KKyB3aWxsIHJldHVybiBwcmVtYXR1cmVseSBhbmQgd2lsbCBjb25mdXNlIHRoZSByZXN0IG9mIHRoZSBIVFRQIHByb3RvY29sCisgY29kZS4gVGhpcyBzaG91bGQgYmUgdmVyeSByYXJlLgogCi0zOS4gU3RlZmZlbiBSdW1sZXIncyBSYWNlIENvbmRpdGlvbiBpbiBDdXJsX3Byb3h5Q09OTkVDVDoKLSAgaHR0cDovL2N1cmwuaGF4eC5zZS9tYWlsL2xpYi0yMDA3LTAxLzAwNDUuaHRtbAorMS44IEROUyB0aW1pbmcgaXMgd3JvbmcgZm9yIEhUVFAgcmVkaXJlY3RzCiAKLTM4LiBLdW1hciBTd2FteSBCaGF0dCdzIHByb2JsZW0gaW4gZnRwL3NzbCAiTElTVCIgb3BlcmF0aW9uOgotICBodHRwOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMDctMDEvMDEwMy5odG1sCisgV2hlbiBleHRyYWN0aW5nIHRpbWluZyBpbmZvcm1hdGlvbiBhZnRlciBIVFRQIHJlZGlyZWN0cywgb25seSB0aGUgbGFzdAorIHRyYW5zZmVyJ3MgcmVzdWx0cyBhcmUgcmV0dXJuZWQgYW5kIG5vdCB0aGUgdG90YWxzOgorIGh0dHBzOi8vZ2l0aHViLmNvbS9jdXJsL2N1cmwvaXNzdWVzLzUyMgogCi0zNS4gQm90aCBTT0NLUzUgYW5kIFNPQ0tTNCBwcm94eSBjb25uZWN0aW9ucyBhcmUgZG9uZSBibG9ja2luZywgd2hpY2ggaXMgdmVyeQotICBiYWQgd2hlbiB1c2VkIHdpdGggdGhlIG11bHRpIGludGVyZmFjZS4KKzEuOSBIVFRQLzIgZnJhbWVzIHdoaWxlIGluIHRoZSBjb25uZWN0aW9uIHBvb2wga2lsbCByZXVzZQogCi0zNC4gVGhlIFNPQ0tTNCBjb25uZWN0aW9uIGNvZGVzIGRvbid0IHByb3Blcmx5IGFja25vd2xlZGdlIChjb25uZWN0KSB0aW1lb3V0cy4KLSAgQWxzbyBzZWUgIzEyLiBBY2NvcmRpbmcgdG8gYnVnICMxNTU2NTI4LCBldmVuIHRoZSBTT0NLUzUgY29ubmVjdCBjb2RlIGRvZXMKLSAgbm90IGRvIGl0IHJpZ2h0OiBodHRwOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD02MDQKKyBJZiB0aGUgc2VydmVyIHNlbmRzIEhUVFAvMiBmcmFtZXMgKGxpa2UgZm9yIGV4YW1wbGUgYW4gSFRUUC8yIFBJTkcgZnJhbWUpIHRvCisgY3VybCB3aGlsZSB0aGUgY29ubmVjdGlvbiBpcyBoZWxkIGluIGN1cmwncyBjb25uZWN0aW9uIHBvb2wsIHRoZSBzb2NrZXQgd2lsbAorIGJlIGZvdW5kIHJlYWRhYmxlIHdoZW4gY29uc2lkZXJlZCBmb3IgcmV1c2UgYW5kIHRoYXQgbWFrZXMgY3VybCB0aGluayBpdCBpcworIGRlYWQgYW5kIHRoZW4gaXQgd2lsbCBiZSBjbG9zZWQgYW5kIGEgbmV3IGNvbm5lY3Rpb24gZ2V0cyBjcmVhdGVkIGluc3RlYWQuCiAKLTMxLiAiY3VybC1jb25maWcgLS1saWJzIiB3aWxsIGluY2x1ZGUgZGV0YWlscyBzZXQgaW4gTERGTEFHUyB3aGVuIGNvbmZpZ3VyZSBpcwotICBydW4gdGhhdCBtaWdodCBiZSBuZWVkZWQgb25seSBmb3IgYnVpbGRpbmcgbGliY3VybC4gRnVydGhlciwgY3VybC1jb25maWcKLSAgLS1jZmxhZ3Mgc3VmZmVycyBmcm9tIHRoZSBzYW1lIGVmZmVjdHMgd2l0aCBDRkxBR1MvQ1BQRkxBR1MuCisgVGhpcyBpcyAqYmVzdCogZml4ZWQgYnkgYWRkaW5nIG1vbml0b3JpbmcgdG8gY29ubmVjdGlvbnMgd2hpbGUgdGhleSBhcmUga2VwdAorIGluIHRoZSBwb29sIHNvIHRoYXQgcGluZ3MgY2FuIGJlIHJlc3BvbmRlZCB0byBhcHByb3ByaWF0ZWx5LgogCi0yNi4gTlRMTSBhdXRoZW50aWNhdGlvbiB1c2luZyBTU1BJIChvbiBXaW5kb3dzKSB3aGVuIChsaWIpY3VybCBpcyBydW5uaW5nIGluCi0gICJzeXN0ZW0gY29udGV4dCIgd2lsbCBtYWtlIGl0IHVzZSB3cm9uZyg/KSB1c2VyIG5hbWUgLSBhdCBsZWFzdCB3aGVuIGNvbXBhcmVkCi0gIHRvIHdoYXQgd2luaHR0cCBkb2VzLiBTZWUgaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9NTM1CisxLjEwIFN0cmlwcyB0cmFpbGluZyBkb3QgZnJvbSBob3N0IG5hbWUKIAotMjMuIFNPQ0tTLXJlbGF0ZWQgcHJvYmxlbXM6Ci0gIEIpIGxpYmN1cmwgZG9lc24ndCBzdXBwb3J0IEZUUFMgb3ZlciBhIFNPQ0tTIHByb3h5LgotICBFKSBsaWJjdXJsIGRvZXNuJ3Qgc3VwcG9ydCBhY3RpdmUgRlRQIG92ZXIgYSBTT0NLUyBwcm94eQorIFdoZW4gZ2l2ZW4gYSBVUkwgd2l0IGEgdHJhaWxpbmcgZG90IGZvciB0aGUgaG9zdCBuYW1lIHBhcnQ6CisgImh0dHBzOi8vZXhhbXBsZS5jb20uLyIsIGxpYmN1cmwgd2lsbCBzdHJpcCBvZmYgdGhlIGRvdCBhbmQgdXNlIHRoZSBuYW1lCisgd2l0aG91dCBhIGRvdCBpbnRlcm5hbGx5IGFuZCBzZW5kIGl0IGRvdC1sZXNzIGluIEhUVFAgSG9zdDogaGVhZGVycyBhbmQgaW4KKyB0aGUgVExTIFNOSSBmaWVsZC4KIAotICBXZSBwcm9iYWJseSBoYXZlIGV2ZW4gbW9yZSBidWdzIGFuZCBsYWNrIG9mIGZlYXR1cmVzIHdoZW4gYSBTT0NLUyBwcm94eSBpcwotICB1c2VkLgorIFRoZSBIVFRQIHBhcnQgdmlvbGF0ZXMgUkZDIDcyMzAgc2VjdGlvbiA1LjQgYnV0IHRoZSBTTkkgcGFydCBpcyBhY2NvcmRhbmNlCisgd2l0aCBSRkMgNjA2NiBzZWN0aW9uIDMuCiAKLTIxLiBGVFAgQVNDSUkgdHJhbnNmZXJzIGRvIG5vdCBmb2xsb3cgUkZDOTU5LiBUaGV5IGRvbid0IGNvbnZlcnQgdGhlIGRhdGEKLSAgIGFjY29yZGluZ2x5IChub3QgZm9yIHNlbmRpbmcgbm9yIGZvciByZWNlaXZpbmcpLiBSRkMgOTU5IHNlY3Rpb24gMy4xLjEuMQotICAgY2xlYXJseSBkZXNjcmliZXMgaG93IHRoaXMgc2hvdWxkIGJlIGRvbmU6CisgVVJMcyB1c2luZyB0aGVzZSB0cmFpbGluZyBkb3RzIGFyZSB2ZXJ5IHJhcmUgaW4gdGhlIHdpbGQgYW5kIHdlIGhhdmUgbm90IHNlZW4KKyBvciBnb3R0ZW4gYW55IHJlYWwtd29ybGQgcHJvYmxlbXMgd2l0aCBzdWNoIFVSTHMgcmVwb3J0ZWQuIFRoZSBwb3B1bGFyCisgYnJvd3NlcnMgc2VlbSB0byBoYXZlIHN0YXllZCB3aXRoIG5vdCBzdHJpcHBpbmcgdGhlIGRvdCBmb3IgYm90aCB1c2VzICh0aHVzCisgdGhleSB2aW9sYXRlIFJGQyA2MDY2IGluc3RlYWQgb2YgUkZDIDcyMzApLgogCi0gICAgIFRoZSBzZW5kZXIgY29udmVydHMgdGhlIGRhdGEgZnJvbSBhbiBpbnRlcm5hbCBjaGFyYWN0ZXIgcmVwcmVzZW50YXRpb24gdG8KLSAgICAgdGhlIHN0YW5kYXJkIDgtYml0IE5WVC1BU0NJSSByZXByZXNlbnRhdGlvbiAoc2VlIHRoZSBUZWxuZXQKLSAgICAgc3BlY2lmaWNhdGlvbikuICBUaGUgcmVjZWl2ZXIgd2lsbCBjb252ZXJ0IHRoZSBkYXRhIGZyb20gdGhlIHN0YW5kYXJkCi0gICAgIGZvcm0gdG8gaGlzIG93biBpbnRlcm5hbCBmb3JtLgorIERhbmllbCB0b29rIHRoZSBkaXNjdXNzaW9uIHRvIHRoZSBIVFRQYmlzIG1haWxpbmcgbGlzdCBpbiBNYXJjaCAyMDE2OgorIGh0dHBzOi8vbGlzdHMudzMub3JnL0FyY2hpdmVzL1B1YmxpYy9pZXRmLWh0dHAtd2cvMjAxNkphbk1hci8wNDMwLmh0bWwgYnV0CisgdGhlcmUgd2FzIG5vdCBtYWpvciBydXNoIG9yIGludGVyZXN0IHRvIGZpeCB0aGlzLiBUaGUgaW1wcmVzc2lvbiBJIGdldCBpcworIHRoYXQgbW9zdCBIVFRQIHBlb3BsZSByYXRoZXIgbm90IHJvY2sgdGhlIGJvYXQgbm93IGFuZCBpbnN0ZWFkIHByaW9yaXRpemUgd2ViCisgY29tcGF0aWJpbGl0eSByYXRoZXIgdGhhbiB0byBzdHJpY3RseSBhZGhlcmUgdG8gdGhlc2UgUkZDcy4KIAotICAgU2luY2UgNy4xNS40IGF0IGxlYXN0IGxpbmUgZW5kaW5ncyBhcmUgY29udmVydGVkLgorIE91ciBjdXJyZW50IGFwcHJvYWNoIGFsbG93cyBhIGtub3dpbmcgY2xpZW50IHRvIHNlbmQgYSBjdXN0b20gSFRUUCBoZWFkZXIKKyB3aXRoIHRoZSBkb3QgYWRkZWQuCiAKLTE2LiBGVFAgVVJMcyBwYXNzZWQgdG8gY3VybCBtYXkgY29udGFpbiBOVUwgKDB4MDApIGluIHRoZSBSRkMgMTczOCA8dXNlcj4sCi0gIDxwYXNzd29yZD4sIGFuZCA8ZnBhdGg+IGNvbXBvbmVudHMsIGVuY29kZWQgYXMgIiUwMCIuICBUaGUgcHJvYmxlbSBpcyB0aGF0Ci0gIGN1cmxfdW5lc2NhcGUgZG9lcyBub3QgZGV0ZWN0IHRoaXMsIGJ1dCBpbnN0ZWFkIHJldHVybnMgYSBzaG9ydGVuZWQgQwotICBzdHJpbmcuICBGcm9tIGEgc3RyaWN0IEZUUCBwcm90b2NvbCBzdGFuZHBvaW50LCBOVUwgaXMgYSB2YWxpZCBjaGFyYWN0ZXIKLSAgd2l0aGluIFJGQyA5NTkgPHN0cmluZz4sIHNvIHRoZSB3YXkgdG8gaGFuZGxlIHRoaXMgY29ycmVjdGx5IGluIGN1cmwgd291bGQKLSAgYmUgdG8gdXNlIGEgZGF0YSBzdHJ1Y3R1cmUgb3RoZXIgdGhhbiBhIHBsYWluIEMgc3RyaW5nLCBvbmUgdGhhdCBjYW4gaGFuZGxlCi0gIGVtYmVkZGVkIE5VTCBjaGFyYWN0ZXJzLiAgRnJvbSBhIHByYWN0aWNhbCBzdGFuZHBvaW50LCBtb3N0IEZUUCBzZXJ2ZXJzCi0gIHdvdWxkIG5vdCBtZWFuaW5nZnVsbHkgc3VwcG9ydCBOVUwgY2hhcmFjdGVycyB3aXRoaW4gUkZDIDk1OSA8c3RyaW5nPiwKLSAgYW55d2F5IChlLmcuLCBVbml4IHBhdGhuYW1lcyBtYXkgbm90IGNvbnRhaW4gTlVMKS4KKyBJdCBjYW4gYWxzbyBiZSBub3RlZCB0aGF0IHdoaWxlIGFkZGluZyBhIHRyYWlsaW5nIGRvdCB0byB0aGUgaG9zdCBuYW1lIGluCisgbW9zdCAoYWxsPykgY2FzZXMgd2lsbCBtYWtlIHRoZSBuYW1lIHJlc29sdmUgdG8gdGhlIHNhbWUgc2V0IG9mIElQIGFkZHJlc3NlcywKKyBtYW55IEhUVFAgc2VydmVycyB3aWxsIG5vdCBoYXBwaWx5IGFjY2VwdCB0aGUgdHJhaWxpbmcgZG90IHRoZXJlIHVubGVzcyB0aGF0CisgaGFzIGJlZW4gc3BlY2lmaWNseSBjb25maWd1cmVkIHRvIGJlIGEgZmluZSB2aXJ0dWFsIGhvc3QuCiAKLTE0LiBUZXN0IGNhc2UgMTY1IG1pZ2h0IGZhaWwgb24gYSBzeXN0ZW0gd2hpY2ggaGFzIGxpYmlkbiBwcmVzZW50LCBidXQgd2l0aCBhbgotICBvbGQgaWNvbnYgdmVyc2lvbiAoMi4xLjMgaXMgYSBrbm93biBiYWQgdmVyc2lvbiksIHNpbmNlIGl0IGRvZXNuJ3QgcmVjb2duaXplCi0gIHRoZSBjaGFyc2V0IHdoZW4gbmFtZWQgSVNPODg1OS0xLiBDaGFuZ2luZyB0aGUgbmFtZSB0byBJU08tODg1OS0xIG1ha2VzIHRoZQotICB0ZXN0IHBhc3MsIGJ1dCBpbnN0ZWFkIG1ha2VzIGl0IGZhaWwgb24gU29sYXJpcyBob3N0cyB0aGF0IHVzZSBpdHMgbmF0aXZlCi0gIGljb252LgorIElmIFVSTHMgd2l0aCB0cmFpbGluZyBkb3RzIGZvciBob3N0IG5hbWVzIGJlY29tZSBtb3JlIHBvcHVsYXIgb3IgZXZlbiBqdXN0CisgdXNlZCBtb3JlIHRoYW4gZm9yIGp1c3QgcGxhaW4gZnVuIGV4cGVyaW1lbnRzLCBJJ20gc3VyZSB3ZSB3aWxsIGhhdmUgcmVhc29uCisgdG8gZ28gYmFjayBhbmQgcmVjb25zaWRlci4KIAotMTMuIGN1cmwgdmVyc2lvbiA3LjEyLjIgZmFpbHMgb24gQUlYIGlmIGNvbXBpbGVkIHdpdGggLS1lbmFibGUtYXJlcy4KLSAgVGhlIHdvcmthcm91bmQgaXMgdG8gY29tYmluZSAtLWVuYWJsZS1hcmVzIHdpdGggLS1kaXNhYmxlLXNoYXJlZAorIFNlZSBodHRwczovL2dpdGh1Yi5jb20vY3VybC9jdXJsL2lzc3Vlcy83MTYgZm9yIHRoZSBkaXNjdXNzaW9uLgogCi0xMi4gV2hlbiBjb25uZWN0aW5nIHRvIGEgU09DS1MgcHJveHksIHRoZSAoY29ubmVjdCkgdGltZW91dCBpcyBub3QgcHJvcGVybHkKLSAgYWNrbm93bGVkZ2VkIGFmdGVyIHRoZSBhY3R1YWwgVENQIGNvbm5lY3QgKGR1cmluZyB0aGUgU09DS1MgIm5lZ290aWF0ZSIKLSAgcGhhc2UpLgogCi0xMC4gVG8gZ2V0IEhUVFAgTmVnb3RpYXRlIChTUE5FR08pIGF1dGhlbnRpY2F0aW9uIHRvIHdvcmsgZmluZSwgeW91IG5lZWQgdG8KLSAgcHJvdmlkZSBhIChmYWtlKSB1c2VyIG5hbWUgKHRoaXMgY29uY2VybnMgYm90aCBjdXJsIGFuZCB0aGUgbGliKSBiZWNhdXNlIHRoZQotICBjb2RlIHdyb25nbHkgb25seSBjb25zaWRlcnMgYXV0aGVudGljYXRpb24gaWYgdGhlcmUncyBhIHVzZXIgbmFtZSBwcm92aWRlZC4KLSAgaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9NDQwIEhvdz8KLSAgaHR0cDovL2N1cmwuaGF4eC5zZS9tYWlsL2xpYi0yMDA0LTA4LzAxODIuaHRtbAorMi4gVExTCiAKLTguIERvaW5nIHJlc3VtZWQgdXBsb2FkIG92ZXIgSFRUUCBkb2VzIG5vdCB3b3JrIHdpdGggJy1DIC0nLCBiZWNhdXNlIGN1cmwKLSAgZG9lc24ndCBkbyBhIEhFQUQgZmlyc3QgdG8gZ2V0IHRoZSBpbml0aWFsIHNpemUuIFRoaXMgbmVlZHMgdG8gYmUgZG9uZQotICBtYW51YWxseSBmb3IgSFRUUCBQVVQgcmVzdW1lIHRvIHdvcmssIGFuZCB0aGVuICctQyBbaW5kZXhdJy4KKzIuMSBIYW5ncyB3aXRoIFBvbGFyU1NMCiAKLTYuIGxpYmN1cmwgaWdub3JlcyBlbXB0eSBwYXRoIHBhcnRzIGluIEZUUCBVUkxzLCB3aGVyZWFzIFJGQzE3Mzggc3RhdGVzIHRoYXQKLSAgc3VjaCBwYXJ0cyBzaG91bGQgYmUgc2VudCB0byB0aGUgc2VydmVyIGFzICdDV0QgJyAod2l0aG91dCBhbiBhcmd1bWVudCkuCi0gIFRoZSBvbmx5IGV4Y2VwdGlvbiB0byB0aGlzIHJ1bGUsIGlzIHRoYXQgd2Uga25vd2luZ2x5IGJyZWFrIHRoaXMgaWYgdGhlCi0gIGVtcHR5IHBhcnQgaXMgZmlyc3QgaW4gdGhlIHBhdGgsIGFzIHRoZW4gd2UgdXNlIHRoZSBkb3VibGUgc2xhc2hlcyB0bwotICBpbmRpY2F0ZSB0aGF0IHRoZSB1c2VyIHdhbnRzIHRvIHJlYWNoIHRoZSByb290IGRpciAodGhpcyBleGNlcHRpb24gU0hBTEwKLSAgcmVtYWluIGV2ZW4gd2hlbiB0aGlzIGJ1ZyBpcyBmaXhlZCkuCisgImN1cmxfZWFzeV9wZXJmb3JtIGhhbmdzIHdpdGggaW1hcCBhbmQgUG9sYXJTU0wiCisgaHR0cHM6Ly9naXRodWIuY29tL2N1cmwvY3VybC9pc3N1ZXMvMzM0CiAKLTUuIGxpYmN1cmwgZG9lc24ndCB0cmVhdCB0aGUgY29udGVudC1sZW5ndGggb2YgY29tcHJlc3NlZCBkYXRhIHByb3Blcmx5LCBhcwotICBpdCBzZWVtcyBIVFRQIHNlcnZlcnMgc2VuZCB0aGUgKnVuY29tcHJlc3NlZCogbGVuZ3RoIGluIHRoYXQgaGVhZGVyIGFuZAotICBsaWJjdXJsIHRoaW5rcyBvZiBpdCBhcyB0aGUgKmNvbXByZXNzZWQqIGxlbmd0aC4gU29tZSBleHBsYW5hdGlvbnMgYXJlIGhlcmU6Ci0gIGh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC9saWItMjAwMy0wNi8wMTQ2Lmh0bWwKKyBNb3N0IGxpa2VseSwgYSBmaXggc2ltaWxhciB0byBjb21taXQgYzExMTE3OGJkNCAoZm9yIG1iZWRUTFMpIGlzCisgbmVjZXNzYXJ5LiBPciBpZiB3ZSBqdXN0IHdhaXQgYSBsaXR0bGUgbG9uZ2VyIHdlJ2xsIHJpcCBvdXQgYWxsIHN1cHBvcnQgZm9yCisgUG9sYXJTU0wgaW5zdGVhZC4uLgogCi0yLiBJZiBhIEhUVFAgc2VydmVyIHJlc3BvbmRzIHRvIGEgSEVBRCByZXF1ZXN0IGFuZCBpbmNsdWRlcyBhIGJvZHkgKHRodXMKLSAgdmlvbGF0aW5nIHRoZSBSRkMyNjE2KSwgY3VybCB3b24ndCB3YWl0IHRvIHJlYWQgdGhlIHJlc3BvbnNlIGJ1dCBqdXN0IHN0b3AKLSAgcmVhZGluZyBhbmQgcmV0dXJuIGJhY2suIElmIGEgc2Vjb25kIHJlcXVlc3QgKGxldCdzIGFzc3VtZSBhIEdFVCkgaXMgdGhlbgotICBpbW1lZGlhdGVseSBtYWRlIHRvIHRoZSBzYW1lIHNlcnZlciBhZ2FpbiwgdGhlIGNvbm5lY3Rpb24gd2lsbCBiZSByZS11c2VkCi0gIGZpbmUgb2YgY291cnNlLCBhbmQgdGhlIHNlY29uZCByZXF1ZXN0IHdpbGwgYmUgc2VudCBvZmYgYnV0IHdoZW4gdGhlCi0gIHJlc3BvbnNlIGlzIHRvIGdldCByZWFkLCB0aGUgcHJldmlvdXMgcmVzcG9uc2UtYm9keSBpcyB3aGF0IGN1cmwgd2lsbCByZWFkCi0gIGFuZCBoYXZvYyBpcyB3aGF0IGhhcHBlbnMuCi0gIE1vcmUgZGV0YWlscyBvbiB0aGlzIGlzIGZvdW5kIGluIHRoaXMgbGliY3VybCBtYWlsaW5nIGxpc3QgdGhyZWFkOgotICBodHRwOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMDItMDgvMDAwMC5odG1sCisyLjIgQ1VSTElORk9fU1NMX1ZFUklGWVJFU1VMVCBoYXMgbGltaXRlZCBzdXBwb3J0CisKKyBDVVJMSU5GT19TU0xfVkVSSUZZUkVTVUxUIGlzIG9ubHkgaW1wbGVtZW50ZWQgZm9yIHRoZSBPcGVuU1NMIGFuZCBOU1MKKyBiYWNrZW5kcywgc28gcmVseWluZyBvbiB0aGlzIGluZm9ybWF0aW9uIGluIGEgZ2VuZXJpYyBhcHAgaXMgZmxha3kuCisKKzIuMyBERVIgaW4ga2V5Y2hhaW4KKworIEN1cmwgZG9lc24ndCByZWNvZ25pemUgY2VydGlmaWNhdGVzIGluIERFUiBmb3JtYXQgaW4ga2V5Y2hhaW4sIGJ1dCBpdCB3b3JrcworIHdpdGggUEVNLiAgaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTEwNjUKKworMi40IEdudVRMUyBiYWNrZW5kIHNraXBzIHJlYWxseSBsb25nIGNlcnRpZmljYXRlIGZpZWxkcworCisgbGliY3VybCBjYWxscyBnbnV0bHNfeDUwOV9jcnRfZ2V0X2RuKCkgd2l0aCBhIGZpeGVkIGJ1ZmZlciBzaXplIGFuZCBpZiB0aGUKKyBmaWVsZCBpcyB0b28gbG9uZyBpbiB0aGUgY2VydCwgaXQnbGwganVzdCByZXR1cm4gYW4gZXJyb3IgYW5kIHRoZSBmaWVsZCB3aWxsCisgYmUgZGlzcGxheWVkIGJsYW5rLgorCisKKzMuIEVtYWlsIHByb3RvY29scworCiszLjEgSU1BUCBTRUFSQ0ggQUxMIHRydW5jYXRlZCByZXNwb25zZQorCisgSU1BUCAiU0VBUkNIIEFMTCIgdHJ1bmNhdGVzIG91dHB1dCBvbiBsYXJnZSBib3hlcy4gIkEgcXVpY2sgc2VhcmNoIG9mIHRoZQorIGNvZGUgcmV2ZWFscyB0aGF0IHBpbmdwb25nLmMgY29udGFpbnMgc29tZSB0cnVuY2F0aW9uIGNvZGUsIGF0IGxpbmUgNDA4LCB3aGVuCisgaXQgZGVlbXMgdGhlIHNlcnZlciByZXNwb25zZSB0byBiZSB0b28gbGFyZ2UgdHJ1bmNhdGluZyBpdCB0byA0MCBjaGFyYWN0ZXJzIgorIGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xMzY2CisKKzMuMiBObyBkaXNjb25uZWN0IGNvbW1hbmQKKworIFRoZSBkaXNjb25uZWN0IGNvbW1hbmRzIChMT0dPVVQgYW5kIFFVSVQpIG1heSBub3QgYmUgc2VudCBieSBJTUFQLCBQT1AzIGFuZAorIFNNVFAgaWYgYSBmYWlsdXJlIG9jY3VycyBkdXJpbmcgdGhlIGF1dGhlbnRpY2F0aW9uIHBoYXNlIG9mIGEgY29ubmVjdGlvbi4KKworMy4zIFNNVFAgdG8gbXVsdGlwbGUgcmVjaXBpZW50cworCisgV2hlbiBzZW5kaW5nIGRhdGEgdG8gbXVsdGlwbGUgcmVjaXBpZW50cywgY3VybCB3aWxsIGFib3J0IGFuZCByZXR1cm4gZmFpbHVyZQorIGlmIG9uZSBvZiB0aGUgcmVjaXBpZW50cyBpbmRpY2F0ZSBmYWlsdXJlIChvbiB0aGUgIlJDUFQgVE8iCisgY29tbWFuZCkuIE9yZGluYXJ5IG1haWwgcHJvZ3JhbXMgd291bGQgcHJvY2VlZCBhbmQgc3RpbGwgc2VuZCB0byB0aGUgb25lcworIHRoYXQgY2FuIHJlY2VpdmUgZGF0YS4gVGhpcyBpcyBzdWJqZWN0IGZvciBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4KKyBodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9MTExNgorCisKKzQuIENvbW1hbmQgbGluZQorCis0LjEgLUogd2l0aCAlLWVuY29kZWQgZmlsZSBuYW1lYXMKKworIC1KLy0tcmVtb3RlLWhlYWRlci1uYW1lIGRvZXNuJ3QgZGVjb2RlICUtZW5jb2RlZCBmaWxlIG5hbWVzLiBSRkM2MjY2IGRldGFpbHMKKyBob3cgaXQgc2hvdWxkIGJlIGRvbmUuIFRoZSBjYW4gb2Ygd29ybSBpcyBiYXNpY2FsbHkgdGhhdCB3ZSBoYXZlIG5vIGNoYXJzZXQKKyBoYW5kbGluZyBpbiBjdXJsIGFuZCBhc2NpaSA+PTEyOCBpcyBhIGNoYWxsZW5nZSBmb3IgdXMuIE5vdCB0byBtZW50aW9uIHRoYXQKKyBkZWNvZGluZyBhbHNvIG1lYW5zIHRoYXQgd2UgbmVlZCB0byBjaGVjayBmb3IgbmFzdGluZXNzIHRoYXQgaXMgYXR0ZW1wdGVkLAorIGxpa2UgIi4uLyIgc2VxdWVuY2VzIGFuZCB0aGUgbGlrZS4gUHJvYmFibHkgZXZlcnl0aGluZyB0byB0aGUgbGVmdCBvZiBhbnkKKyBlbWJlZGRlZCBzbGFzaGVzIHNob3VsZCBiZSBjdXQgb2ZmLgorIGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xMjk0CisKKzQuMiAtSiB3aXRoIC1DIC0gZmFpbHMKKworIFdoZW4gdXNpbmcgLUogKHdpdGggLU8pLCBhdXRvbWF0aWNhbGx5IHJlc3VtZWQgZG93bmxvYWRpbmcgdG9nZXRoZXIgd2l0aCAiLUMKKyAtIiBmYWlscy4gV2l0aG91dCAtSiB0aGUgc2FtZSBjb21tYW5kIGxpbmUgd29ya3MhIFRoaXMgaGFwcGVucyBiZWNhdXNlIHRoZQorIHJlc3VtZSBsb2dpYyBpcyB3b3JrZWQgb3V0IGJlZm9yZSB0aGUgdGFyZ2V0IGZpbGUgbmFtZSAoYW5kIHRodXMgaXRzCisgcHJlLXRyYW5zZmVyIHNpemUpIGhhcyBiZWVuIGZpZ3VyZWQgb3V0IQorIGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xMTY5CisKKzQuMyAtLXJldHJ5IGFuZCB0cmFuc2ZlciB0aW1lb3V0cworCisgSWYgdXNpbmcgLS1yZXRyeSBhbmQgdGhlIHRyYW5zZmVyIHRpbWVvdXRzIChwb3NzaWJseSBkdWUgdG8gdXNpbmcgLW0gb3IKKyAteS8tWSkgdGhlIG5leHQgYXR0ZW1wdCBkb2Vzbid0IHJlc3VtZSB0aGUgdHJhbnNmZXIgcHJvcGVybHkgZnJvbSB3aGF0IHdhcworIGRvd25sb2FkZWQgaW4gdGhlIHByZXZpb3VzIGF0dGVtcHQgYnV0IHdpbGwgdHJ1bmNhdGUgYW5kIHJlc3RhcnQgYXQgdGhlCisgb3JpZ2luYWwgcG9zaXRpb24gd2hlcmUgaXQgd2FzIGF0IGJlZm9yZSB0aGUgcHJldmlvdXMgZmFpbGVkIGF0dGVtcHQuIFNlZQorIGh0dHBzOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMDgtMDEvMDA4MC5odG1sIGFuZCBNYW5kcml2YSBidWcgcmVwb3J0CisgaHR0cHM6Ly9xYS5tYW5kcml2YS5jb20vc2hvd19idWcuY2dpP2lkPTIyNTY1CisKKworNS4gQnVpbGQgYW5kIHBvcnRhYmlsaXR5IGlzc3VlcworCis1LjEgV2luZG93cyBCb3JsYW5kIGNvbXBpbGVyCisKKyBXaGVuIGJ1aWxkaW5nIHdpdGggdGhlIFdpbmRvd3MgQm9ybGFuZCBjb21waWxlciwgaXQgZmFpbHMgYmVjYXVzZSB0aGUgInRsaWIiCisgdG9vbCBkb2Vzbid0IHN1cHBvcnQgaHlwaGVucyAobWludXMgc2lnbnMpIGluIGZpbGUgbmFtZXMgYW5kIHdlIGhhdmUgc3VjaCBpbgorIHRoZSBidWlsZC4gIGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD0xMjIyCisKKzUuMiBjdXJsLWNvbmZpZyAtLWxpYnMgY29udGFpbnMgcHJpdmF0ZSBkZXRhaWxzCisKKyAiY3VybC1jb25maWcgLS1saWJzIiB3aWxsIGluY2x1ZGUgZGV0YWlscyBzZXQgaW4gTERGTEFHUyB3aGVuIGNvbmZpZ3VyZSBpcworIHJ1biB0aGF0IG1pZ2h0IGJlIG5lZWRlZCBvbmx5IGZvciBidWlsZGluZyBsaWJjdXJsLiBGdXJ0aGVyLCBjdXJsLWNvbmZpZworIC0tY2ZsYWdzIHN1ZmZlcnMgZnJvbSB0aGUgc2FtZSBlZmZlY3RzIHdpdGggQ0ZMQUdTL0NQUEZMQUdTLgorCis1LjMgbGliaWRuIGFuZCBvbGQgaWNvbnYKKworIFRlc3QgY2FzZSAxNjUgbWlnaHQgZmFpbCBvbiBhIHN5c3RlbSB3aGljaCBoYXMgbGliaWRuIHByZXNlbnQsIGJ1dCB3aXRoIGFuCisgb2xkIGljb252IHZlcnNpb24gKDIuMS4zIGlzIGEga25vd24gYmFkIHZlcnNpb24pLCBzaW5jZSBpdCBkb2Vzbid0IHJlY29nbml6ZQorIHRoZSBjaGFyc2V0IHdoZW4gbmFtZWQgSVNPODg1OS0xLiBDaGFuZ2luZyB0aGUgbmFtZSB0byBJU08tODg1OS0xIG1ha2VzIHRoZQorIHRlc3QgcGFzcywgYnV0IGluc3RlYWQgbWFrZXMgaXQgZmFpbCBvbiBTb2xhcmlzIGhvc3RzIHRoYXQgdXNlIGl0cyBuYXRpdmUKKyBpY29udi4KKworNS40IEFJWCBzaGFyZWQgYnVpbGQgd2l0aCBjLWFyZXMgZmFpbHMKKworIGN1cmwgdmVyc2lvbiA3LjEyLjIgZmFpbHMgb24gQUlYIGlmIGNvbXBpbGVkIHdpdGggLS1lbmFibGUtYXJlcy4gIFRoZQorIHdvcmthcm91bmQgaXMgdG8gY29tYmluZSAtLWVuYWJsZS1hcmVzIHdpdGggLS1kaXNhYmxlLXNoYXJlZAorCis1LjUgY2FuJ3QgaGFuZGxlIFVuaWNvZGUgYXJndW1lbnRzIGluIFdpbmRvd3MKKworIElmIGEgVVJMIG9yIGZpbGVuYW1lIGNhbid0IGJlIGVuY29kZWQgdXNpbmcgdGhlIHVzZXIncyBjdXJyZW50IGNvZGVwYWdlIHRoZW4KKyBpdCBjYW4gb25seSBiZSBlbmNvZGVkIHByb3Blcmx5IGluIHRoZSBVbmljb2RlIGNoYXJhY3RlciBzZXQuIFdpbmRvd3MgdXNlcworIFVURi0xNiBlbmNvZGluZyBmb3IgVW5pY29kZSBhbmQgc3RvcmVzIGl0IGluIHdpZGUgY2hhcmFjdGVycywgaG93ZXZlciBjdXJsCisgYW5kIGxpYmN1cmwgYXJlIG5vdCBlcXVpcHBlZCBmb3IgdGhhdCBhdCB0aGUgbW9tZW50LiBBbmQsIGV4Y2VwdCBmb3IgQ3lnd2luLAorIFdpbmRvd3MgY2FuJ3QgdXNlIFVURi04IGFzIGEgbG9jYWxlLgorCisgIGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy8/aT0zNDUKKyAgaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnLz9pPTczMQorCisKKzYuIEF1dGhlbnRpY2F0aW9uCisKKzYuMSBOVExNIGF1dGhlbnRpY2F0aW9uIGFuZCB1bmljb2RlCisKKyBOVExNIGF1dGhlbnRpY2F0aW9uIGludm9sdmluZyB1bmljb2RlIHVzZXIgbmFtZSBvciBwYXNzd29yZCBvbmx5IHdvcmtzCisgcHJvcGVybHkgaWYgYnVpbHQgd2l0aCBVTklDT0RFIGRlZmluZWQgdG9nZXRoZXIgd2l0aCB0aGUgV2luU1NML3NjaGFubmVsCisgYmFja2VuZC4gVGhlIG9yaWdpbmFsIHByb2JsZW0gd2FzIG1lbnRpb25lZCBpbjoKKyBodHRwczovL2N1cmwuaGF4eC5zZS9tYWlsL2xpYi0yMDA5LTEwLzAwMjQuaHRtbAorIGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD04OTYKKworIFRoZSBXaW5TU0wvc2NoYW5uZWwgdmVyc2lvbiB2ZXJpZmllZCB0byB3b3JrIGFzIG1lbnRpb25lZCBpbgorIGh0dHBzOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMTItMDcvMDA3My5odG1sCisKKzYuMiBNSVQgS2VyYmVyb3MgZm9yIFdpbmRvd3MgYnVpbGQKKworIGxpYmN1cmwgZmFpbHMgdG8gYnVpbGQgd2l0aCBNSVQgS2VyYmVyb3MgZm9yIFdpbmRvd3MgKEtmVykgZHVlIHRvIEtmVydzCisgbGlicmFyeSBoZWFkZXIgZmlsZXMgZXhwb3J0aW5nIHN5bWJvbHMvbWFjcm9zIHRoYXQgc2hvdWxkIGJlIGtlcHQgcHJpdmF0ZSB0bworIHRoZSBLZlcgbGlicmFyeS4gU2VlIHRpY2tldCAjNTYwMSBhdCBodHRwOi8va3JiZGV2Lm1pdC5lZHUvcnQvCisKKzYuMyBOVExNIGluIHN5c3RlbSBjb250ZXh0IHVzZXMgd3JvbmcgbmFtZQorCisgTlRMTSBhdXRoZW50aWNhdGlvbiB1c2luZyBTU1BJIChvbiBXaW5kb3dzKSB3aGVuIChsaWIpY3VybCBpcyBydW5uaW5nIGluCisgInN5c3RlbSBjb250ZXh0IiB3aWxsIG1ha2UgaXQgdXNlIHdyb25nKD8pIHVzZXIgbmFtZSAtIGF0IGxlYXN0IHdoZW4gY29tcGFyZWQKKyB0byB3aGF0IHdpbmh0dHAgZG9lcy4gU2VlIGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD01MzUKKworNi40IE5lZ290aWF0ZSBuZWVkcyBhIGZha2UgdXNlciBuYW1lCisKKyBUbyBnZXQgSFRUUCBOZWdvdGlhdGUgKFNQTkVHTykgYXV0aGVudGljYXRpb24gdG8gd29yayBmaW5lLCB5b3UgbmVlZCB0bworIHByb3ZpZGUgYSAoZmFrZSkgdXNlciBuYW1lICh0aGlzIGNvbmNlcm5zIGJvdGggY3VybCBhbmQgdGhlIGxpYikgYmVjYXVzZSB0aGUKKyBjb2RlIHdyb25nbHkgb25seSBjb25zaWRlcnMgYXV0aGVudGljYXRpb24gaWYgdGhlcmUncyBhIHVzZXIgbmFtZSBwcm92aWRlZC4KKyBodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9NDQwIEhvdz8KKyBodHRwczovL2N1cmwuaGF4eC5zZS9tYWlsL2xpYi0yMDA0LTA4LzAxODIuaHRtbAorCisKKzcuIEZUUAorCis3LjEgRlRQIHdpdGhvdXQgb3Igc2xvdyAyMjAgcmVzcG9uc2UKKworIElmIGEgY29ubmVjdGlvbiBpcyBtYWRlIHRvIGEgRlRQIHNlcnZlciBidXQgdGhlIHNlcnZlciB0aGVuIGp1c3QgbmV2ZXIgc2VuZHMKKyB0aGUgMjIwIHJlc3BvbnNlIG9yIG90aGVyd2lzZSBpcyBkZWFkIHNsb3csIGxpYmN1cmwgd2lsbCBub3QgYWNrbm93bGVkZ2UgdGhlCisgY29ubmVjdGlvbiB0aW1lb3V0IGR1cmluZyB0aGF0IHBoYXNlIGJ1dCBvbmx5IHRoZSAicmVhbCIgdGltZW91dCAtIHdoaWNoIG1heQorIHN1cnByaXNlIHVzZXJzIGFzIGl0IGlzIHByb2JhYmx5IGNvbnNpZGVyZWQgdG8gYmUgdGhlIGNvbm5lY3QgcGhhc2UgdG8gbW9zdAorIHBlb3BsZS4gQnJvdWdodCB1cCAoYW5kIGlzIGJlaW5nIG1pc3VuZGVyc3Rvb2QpIGluOgorIGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD04NTYKKworNy4yIEZUUCB3aXRoIENPTk5FQ1QgYW5kIHNsb3cgc2VydmVyCisKKyBXaGVuIGRvaW5nIEZUUCBvdmVyIGEgc29ja3MgcHJveHkgb3IgQ09OTkVDVCB0aHJvdWdoIEhUVFAgcHJveHkgYW5kIHRoZSBtdWx0aQorIGludGVyZmFjZSBpcyB1c2VkLCBsaWJjdXJsIHdpbGwgZmFpbCBpZiB0aGUgKHBhc3NpdmUpIFRDUCBjb25uZWN0aW9uIGZvciB0aGUKKyBkYXRhIHRyYW5zZmVyIGlzbid0IG1vcmUgb3IgbGVzcyBpbnN0YW50IGFzIHRoZSBjb2RlIGRvZXMgbm90IHByb3Blcmx5IHdhaXQKKyBmb3IgdGhlIGNvbm5lY3QgdG8gYmUgY29uZmlybWVkLiBTZWUgdGVzdCBjYXNlIDU2NCBmb3IgYSBmaXJzdCBzaG90IGF0IGEgdGVzdAorIGNhc2UuCisKKzcuMyBGVFAgd2l0aCBOT0JPRFkgYW5kIEZBSUxPTkVSUk9SCisKKyBJdCBzZWVtcyBzZW5zaWJsZSB0byBiZSBhYmxlIHRvIHVzZSBDVVJMT1BUX05PQk9EWSBhbmQgQ1VSTE9QVF9GQUlMT05FUlJPUgorIHdpdGggRlRQIHRvIGRldGVjdCBpZiBhIGZpbGUgZXhpc3RzIG9yIG5vdCwgYnV0IGl0IGlzIG5vdCB3b3JraW5nOgorIGh0dHBzOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMDgtMDcvMDI5NS5odG1sCisKKzcuNCBGVFAgd2l0aCBBQ0NUCisKKyBXaGVuIGRvaW5nIGFuIG9wZXJhdGlvbiBvdmVyIEZUUCB0aGF0IHJlcXVpcmVzIHRoZSBBQ0NUIGNvbW1hbmQgKGJ1dCBub3Qgd2hlbgorIGxvZ2dpbmcgaW4pLCB0aGUgb3BlcmF0aW9uIHdpbGwgZmFpbCBzaW5jZSBsaWJjdXJsIGRvZXNuJ3QgZGV0ZWN0IHRoaXMgYW5kCisgdGh1cyBmYWlscyB0byBpc3N1ZSB0aGUgY29ycmVjdCBjb21tYW5kOgorIGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD02MzUKKworNy41IEFTQ0lJIEZUUAorCisgRlRQIEFTQ0lJIHRyYW5zZmVycyBkbyBub3QgZm9sbG93IFJGQzk1OS4gVGhleSBkb24ndCBjb252ZXJ0IHRoZSBkYXRhCisgYWNjb3JkaW5nbHkgKG5vdCBmb3Igc2VuZGluZyBub3IgZm9yIHJlY2VpdmluZykuIFJGQyA5NTkgc2VjdGlvbiAzLjEuMS4xCisgY2xlYXJseSBkZXNjcmliZXMgaG93IHRoaXMgc2hvdWxkIGJlIGRvbmU6CisKKyAgICBUaGUgc2VuZGVyIGNvbnZlcnRzIHRoZSBkYXRhIGZyb20gYW4gaW50ZXJuYWwgY2hhcmFjdGVyIHJlcHJlc2VudGF0aW9uIHRvCisgICAgdGhlIHN0YW5kYXJkIDgtYml0IE5WVC1BU0NJSSByZXByZXNlbnRhdGlvbiAoc2VlIHRoZSBUZWxuZXQKKyAgICBzcGVjaWZpY2F0aW9uKS4gIFRoZSByZWNlaXZlciB3aWxsIGNvbnZlcnQgdGhlIGRhdGEgZnJvbSB0aGUgc3RhbmRhcmQKKyAgICBmb3JtIHRvIGhpcyBvd24gaW50ZXJuYWwgZm9ybS4KKworIFNpbmNlIDcuMTUuNCBhdCBsZWFzdCBsaW5lIGVuZGluZ3MgYXJlIGNvbnZlcnRlZC4KKworNy42IEZUUCB3aXRoIE5VTHMgaW4gVVJMIHBhcnRzCisKKyBGVFAgVVJMcyBwYXNzZWQgdG8gY3VybCBtYXkgY29udGFpbiBOVUwgKDB4MDApIGluIHRoZSBSRkMgMTczOCA8dXNlcj4sCisgPHBhc3N3b3JkPiwgYW5kIDxmcGF0aD4gY29tcG9uZW50cywgZW5jb2RlZCBhcyAiJTAwIi4gIFRoZSBwcm9ibGVtIGlzIHRoYXQKKyBjdXJsX3VuZXNjYXBlIGRvZXMgbm90IGRldGVjdCB0aGlzLCBidXQgaW5zdGVhZCByZXR1cm5zIGEgc2hvcnRlbmVkIEMgc3RyaW5nLgorIEZyb20gYSBzdHJpY3QgRlRQIHByb3RvY29sIHN0YW5kcG9pbnQsIE5VTCBpcyBhIHZhbGlkIGNoYXJhY3RlciB3aXRoaW4gUkZDCisgOTU5IDxzdHJpbmc+LCBzbyB0aGUgd2F5IHRvIGhhbmRsZSB0aGlzIGNvcnJlY3RseSBpbiBjdXJsIHdvdWxkIGJlIHRvIHVzZSBhCisgZGF0YSBzdHJ1Y3R1cmUgb3RoZXIgdGhhbiBhIHBsYWluIEMgc3RyaW5nLCBvbmUgdGhhdCBjYW4gaGFuZGxlIGVtYmVkZGVkIE5VTAorIGNoYXJhY3RlcnMuICBGcm9tIGEgcHJhY3RpY2FsIHN0YW5kcG9pbnQsIG1vc3QgRlRQIHNlcnZlcnMgd291bGQgbm90CisgbWVhbmluZ2Z1bGx5IHN1cHBvcnQgTlVMIGNoYXJhY3RlcnMgd2l0aGluIFJGQyA5NTkgPHN0cmluZz4sIGFueXdheSAoZS5nLiwKKyBVbml4IHBhdGhuYW1lcyBtYXkgbm90IGNvbnRhaW4gTlVMKS4KKworNy43IEZUUCBhbmQgZW1wdHkgcGF0aCBwYXJ0cyBpbiB0aGUgVVJMCisKKyBsaWJjdXJsIGlnbm9yZXMgZW1wdHkgcGF0aCBwYXJ0cyBpbiBGVFAgVVJMcywgd2hlcmVhcyBSRkMxNzM4IHN0YXRlcyB0aGF0Cisgc3VjaCBwYXJ0cyBzaG91bGQgYmUgc2VudCB0byB0aGUgc2VydmVyIGFzICdDV0QgJyAod2l0aG91dCBhbiBhcmd1bWVudCkuICBUaGUKKyBvbmx5IGV4Y2VwdGlvbiB0byB0aGlzIHJ1bGUsIGlzIHRoYXQgd2Uga25vd2luZ2x5IGJyZWFrIHRoaXMgaWYgdGhlIGVtcHR5CisgcGFydCBpcyBmaXJzdCBpbiB0aGUgcGF0aCwgYXMgdGhlbiB3ZSB1c2UgdGhlIGRvdWJsZSBzbGFzaGVzIHRvIGluZGljYXRlIHRoYXQKKyB0aGUgdXNlciB3YW50cyB0byByZWFjaCB0aGUgcm9vdCBkaXIgKHRoaXMgZXhjZXB0aW9uIFNIQUxMIHJlbWFpbiBldmVuIHdoZW4KKyB0aGlzIGJ1ZyBpcyBmaXhlZCkuCisKKworOC4gVEVMTkVUCisKKzguMSBURUxORVQgYW5kIHRpbWUgbGltdGlhdGlvbnMgZG9uJ3Qgd29yaworCisgV2hlbiB1c2luZyB0ZWxuZXQsIHRoZSB0aW1lIGxpbWl0YXRpb24gb3B0aW9ucyBkb24ndCB3b3JrLgorIGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD04NDYKKworOC4yIE1pY3Jvc29mdCB0ZWxuZXQgc2VydmVyCisKKyBUaGVyZSBzZWVtcyB0byBiZSBhIHByb2JsZW0gd2hlbiBjb25uZWN0aW5nIHRvIHRoZSBNaWNyb3NvZnQgdGVsbmV0IHNlcnZlci4KKyBodHRwczovL2N1cmwuaGF4eC5zZS9idWcvdmlldy5jZ2k/aWQ9NjQ5CisKKworOS4gU0ZUUCBhbmQgU0NQCisKKzkuMSBTRlRQIGRvZXNuJ3QgZG8gQ1VSTE9QVF9QT1NUUVVPVEUgY29ycmVjdAorCisgV2hlbiBsaWJjdXJsIHNlbmRzIENVUkxPUFRfUE9TVFFVT1RFIGNvbW1hbmRzIHdoZW4gY29ubmVjdGVkIHRvIGEgU0ZUUCBzZXJ2ZXIKKyB1c2luZyB0aGUgbXVsdGkgaW50ZXJmYWNlLCB0aGUgY29tbWFuZHMgYXJlIG5vdCBiZWluZyBzZW50IGNvcnJlY3RseSBhbmQKKyBpbnN0ZWFkIHRoZSBjb25uZWN0aW9uIGlzICJjYW5jZWxsZWQiICh0aGUgb3BlcmF0aW9uIGlzIGNvbnNpZGVyZWQgZG9uZSkKKyBwcmVtYXR1cmVseS4gVGhlcmUgaXMgYSBoYWxmLWJha2VkIChidXN5LWxvb3BpbmcpIHBhdGNoIHByb3ZpZGVkIGluIHRoZSBidWcKKyByZXBvcnQgYnV0IGl0IGNhbm5vdCBiZSBhY2NlcHRlZCBhcy1pcy4gU2VlCisgaHR0cHM6Ly9jdXJsLmhheHguc2UvYnVnL3ZpZXcuY2dpP2lkPTc0OAorCisKKzEwLiBTT0NLUworCisxMC4xIFNPQ0tTIHByb3h5IGNvbm5lY3Rpb25zIGFyZSBkb25lIGJsb2NraW5nCisKKyBCb3RoIFNPQ0tTNSBhbmQgU09DS1M0IHByb3h5IGNvbm5lY3Rpb25zIGFyZSBkb25lIGJsb2NraW5nLCB3aGljaCBpcyB2ZXJ5IGJhZAorIHdoZW4gdXNlZCB3aXRoIHRoZSBtdWx0aSBpbnRlcmZhY2UuCisKKzEwLjIgU09DS1MgZG9uJ3Qgc3VwcG9ydCB0aW1lb3V0cworCisgVGhlIFNPQ0tTNCBjb25uZWN0aW9uIGNvZGVzIGRvbid0IHByb3Blcmx5IGFja25vd2xlZGdlIChjb25uZWN0KSB0aW1lb3V0cy4KKyBBY2NvcmRpbmcgdG8gYnVnICMxNTU2NTI4LCBldmVuIHRoZSBTT0NLUzUgY29ubmVjdCBjb2RlIGRvZXMgbm90IGRvIGl0IHJpZ2h0OgorIGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy92aWV3LmNnaT9pZD02MDQKKworIFdoZW4gY29ubmVjdGluZyB0byBhIFNPQ0sgcHJveHksIHRoZSAoY29ubmVjdCkgdGltZW91dCBpcyBub3QgcHJvcGVybHkKKyBhY2tub3dsZWRnZWQgYWZ0ZXIgdGhlIGFjdHVhbCBUQ1AgY29ubmVjdCAoZHVyaW5nIHRoZSBTT0NLUyAibmVnb3RpYXRlIgorIHBoYXNlKS4KKworMTAuMyBGVFBTIG92ZXIgU09DS1MKKworIGxpYmN1cmwgZG9lc24ndCBzdXBwb3J0IEZUUFMgb3ZlciBhIFNPQ0tTIHByb3h5LgorCisxMC40IGFjdGl2ZSBGVFAgb3ZlciBhIFNPQ0tTCisKKyBsaWJjdXJsIGRvZXNuJ3Qgc3VwcG9ydCBhY3RpdmUgRlRQIG92ZXIgYSBTT0NLUyBwcm94eQorCisKKzExLiBJbnRlcm5hbHMKKworMTEuMSBDdXJsIGxlYWtzIC5vbmlvbiBob3N0bmFtZXMgaW4gRE5TCisKKyBDdXJsIHNlbmRzIEROUyByZXF1ZXN0cyBmb3IgaG9zdG5hbWVzIHdpdGggYSAub25pb24gVExELiBUaGlzIGxlYWtzCisgaW5mb3JtYXRpb24gYWJvdXQgd2hhdCB0aGUgdXNlciBpcyBhdHRlbXB0aW5nIHRvIGFjY2VzcywgYW5kIHZpb2xhdGVzIHRoaXMKKyByZXF1aXJlbWVudCBvZiBSRkM3Njg2OiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzY4NgorCisgSXNzdWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9jdXJsL2N1cmwvaXNzdWVzLzU0MworCisxMS4yIGVycm9yIGJ1ZmZlciBub3Qgc2V0IGlmIGNvbm5lY3Rpb24gdG8gbXVsdGlwbGUgYWRkcmVzc2VzIGZhaWxzCisKKyBJZiB5b3UgYXNrIGxpYmN1cmwgdG8gcmVzb2x2ZSBhIGhvc3RuYW1lIGxpa2UgZXhhbXBsZS5jb20gdG8gSVB2NiBhZGRyZXNzZXMKKyBvbmx5LiBCdXQgeW91IG9ubHkgaGF2ZSBJUHY0IGNvbm5lY3Rpdml0eS4gbGliY3VybCB3aWxsIGNvcnJlY3RseSBmYWlsIHdpdGgKKyBDVVJMRV9DT1VMRE5UX0NPTk5FQ1QuIEJ1dCB0aGUgZXJyb3IgYnVmZmVyIHNldCBieSBDVVJMT1BUX0VSUk9SQlVGRkVSCisgcmVtYWlucyBlbXB0eS4gSXNzdWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9jdXJsL2N1cmwvaXNzdWVzLzU0NAorCisKKzEyLiBMREFQIGFuZCBPcGVuTERBUAorCisxMi4xIE9wZW5MREFQIGhhbmdzIGFmdGVyIHJldHVybmluZyByZXN1bHRzCisKKyBCeSBjb25maWd1cmF0aW9uIGRlZmF1bHRzLCBvcGVubGRhcCBhdXRvbWF0aWNhbGx5IGNoYXNlIHJlZmVycmFscyBvbgorIHNlY29uZGFyeSBzb2NrZXQgZGVzY3JpcHRvcnMuIFRoZSBPcGVuTERBUCBiYWNrZW5kIGlzIGFzeW5jaHJvbm91cyBhbmQgdGh1cworIHNob3VsZCBtb25pdG9yIGFsbCBzb2NrZXQgZGVzY3JpcHRvcnMgaW52b2x2ZWQuIEN1cnJlbnRseSwgdGhlc2Ugc2Vjb25kYXJ5CisgZGVzY3JpcHRvcnMgYXJlIG5vdCBtb25pdG9yZWQsIGNhdXNpbmcgb3BlbmxkYXAgbGlicmFyeSB0byBuZXZlciByZWNlaXZlCisgZGF0YSBmcm9tIHRoZW0uCisKKyBBcyBhIHRlbXBvcmFyeSB3b3JrYXJvdW5kLCBkaXNhYmxlIHJlZmVycmFscyBjaGFzaW5nIGJ5IGNvbmZpZ3VyYXRpb24uCisKKyBUaGUgZml4IGlzIG5vdCBlYXN5OiBwcm9wZXIgYXV0b21hdGljIHJlZmVycmFscyBjaGFzaW5nIHJlcXVpcmVzIGEKKyBzeW5jaHJvbm91cyBiaW5kIGNhbGxiYWNrIGFuZCBtb25pdG9yaW5nIGFuIGFyYml0cmFyeSBudW1iZXIgb2Ygc29ja2V0CisgZGVzY3JpcHRvcnMgZm9yIGEgc2luZ2xlIGVhc3kgaGFuZGxlIChjdXJyZW50bHkgbGltaXRlZCB0byA1KS4KKworIEdlbmVyaWMgTERBUCBpcyBzeW5jaHJvbm91czogT0suCisKKyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2N1cmwvY3VybC9pc3N1ZXMvNjIyIGFuZAorICAgICBodHRwczovL2N1cmwuaGF4eC5zZS9tYWlsL2xpYi0yMDE2LTAxLzAxMDEuaHRtbAorCisKKzEzIFRDUC9JUAorCisxMy4xIC0taW50ZXJmYWNlIGZvciBpcHY2IGJpbmRzIHRvIHVudXNhYmxlIElQIGFkZHJlc3MKKworIFNpbmNlIElQdjYgcHJvdmlkZXMgYSBsb3Qgb2YgYWRkcmVzc2VzIHdpdGggZGlmZmVyZW50IHNjb3BlLCBiaW5kaW5nIHRvIGFuCisgSVB2NiBhZGRyZXNzIG5lZWRzIHRvIHRha2UgdGhlIHByb3BlciBjYXJlIHNvIHRoYXQgaXQgZG9lc24ndCBiaW5kIHRvIGEKKyBsb2NhbGx5IHNjb3BlZCBhZGRyZXNzIGFzIHRoYXQgaXMgYm91bmQgdG8gZmFpbC4KKworIGh0dHBzOi8vZ2l0aHViLmNvbS9jdXJsL2N1cmwvaXNzdWVzLzY4NgpkaWZmIC0tZ2l0IGEvZG9jcy9MSUNFTlNFLU1JWElORyBiL2RvY3MvTElDRU5TRS1NSVhJTkcKaW5kZXggY2NiNmFkYS4uZDhlMzZjYSAxMDA2NDQKLS0tIGEvZG9jcy9MSUNFTlNFLU1JWElORworKysgYi9kb2NzL0xJQ0VOU0UtTUlYSU5HCkBAIC0xOCw3ICsxOCw3IEBACiBhZGRyZXNzZWQgd2hlbiB0aGUgTW9kaWZpZWQgQlNEIGxpY2Vuc2Ugd2FzIGNyZWF0ZWQsIHdoaWNoIGRvZXMgbm90IGhhdmUgdGhlCiBhbm5vdW5jZW1lbnQgY2xhdXNlIHRoYXQgY29sbGlkZXMgd2l0aCBHUEwuCiAKLWxpYmN1cmwgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sCitsaWJjdXJsIGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwKIAogICAgICAgICBVc2VzIGFuIE1JVCAob3IgTW9kaWZpZWQgQlNEKS1zdHlsZSBsaWNlbnNlIHRoYXQgaXMgYXMgbGliZXJhbCBhcwogICAgICAgICBwb3NzaWJsZS4KQEAgLTczLDcgKzczLDcgQEAKICAgICAgICAgKE1heSBiZSB1c2VkIGZvciBTU0wvVExTIHN1cHBvcnQpIEFzIGFuIE9wZW5TU0wgZm9yaywgaXQgaGFzIHRoZSBzYW1lCiAgICAgICAgIGxpY2Vuc2UgYXMgdGhhdC4KIAotYy1hcmVzICBodHRwOi8vZGFuaWVsLmhheHguc2UvcHJvamVjdHMvYy1hcmVzL2xpY2Vuc2UuaHRtbAorYy1hcmVzICBodHRwczovL2RhbmllbC5oYXh4LnNlL3Byb2plY3RzL2MtYXJlcy9saWNlbnNlLmh0bWwKIAogICAgICAgICAoVXNlZCBmb3IgYXN5bmNocm9ub3VzIG5hbWUgcmVzb2x2ZXMpIFVzZXMgYW4gTUlUIGxpY2Vuc2UgdGhhdCBpcyB2ZXJ5CiAgICAgICAgIGxpYmVyYWwgYW5kIGltcG9zZXMgbm8gcmVzdHJpY3Rpb25zIG9uIGFueSBvdGhlciBsaWJyYXJ5IG9yIHBhcnQgeW91CkBAIC0xMTYsNyArMTE2LDcgQEAKICAgICAgICAgbGliY3VybCB1c2VzIE9wZW5MREFQIGFzIGEgc2hhcmVkIGxpYnJhcnkgb25seSwgSSBoYXZlIG5vdCBoZWFyZCBvZgogICAgICAgICBhbnlvbmUgdGhhdCBzaGlwcyBPcGVuTERBUCBsaW5rZWQgd2l0aCBsaWJjdXJsIGluIGFuIGFwcC4KIAotbGlic3NoMiBodHRwOi8vd3d3LmxpYnNzaDIub3JnLworbGlic3NoMiBodHRwczovL3d3dy5saWJzc2gyLm9yZy8KIAogICAgICAgICAoVXNlZCBmb3Igc2NwIGFuZCBzZnRwIHN1cHBvcnQpIGxpYnNzaDIgdXNlcyBhIE1vZGlmaWVkIEJTRC1zdHlsZQogICAgICAgICBsaWNlbnNlLgpkaWZmIC0tZ2l0IGEvZG9jcy9NQUlMLUVUSVFVRVRURSBiL2RvY3MvTUFJTC1FVElRVUVUVEUKaW5kZXggYjZjMGY0NS4uNzUwNTgwMCAxMDA2NDQKLS0tIGEvZG9jcy9NQUlMLUVUSVFVRVRURQorKysgYi9kb2NzL01BSUwtRVRJUVVFVFRFCkBAIC0zMyw3ICszMyw3IEBACiAgIDEuMSBNYWlsaW5nIExpc3RzCiAKICAgVGhlIG1haWxpbmcgbGlzdHMgd2UgaGF2ZSBhcmUgYWxsIGxpc3RlZCBhbmQgZGVzY3JpYmVkIGF0Ci0gIGh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC8KKyAgaHR0cHM6Ly9jdXJsLmhheHguc2UvbWFpbC8KIAogICBFYWNoIG1haWxpbmcgbGlzdCBpcyB0YXJnZXRlZCB0byBhIHNwZWNpZmljIHNldCBvZiB1c2VycyBhbmQgc3ViamVjdHMsCiAgIHBsZWFzZSB1c2UgdGhlIG9uZSBvciB0aGUgb25lcyB0aGF0IHN1aXQgeW91IHRoZSBtb3N0LgpkaWZmIC0tZ2l0IGEvZG9jcy9NQU5VQUwgYi9kb2NzL01BTlVBTAppbmRleCBmYjM0OTQ4Li4wOGZkYjU3IDEwMDY0NAotLS0gYS9kb2NzL01BTlVBTAorKysgYi9kb2NzL01BTlVBTApAQCAtMyw3ICszLDcgQEAKICAgWW91IGFsd2F5cyBmaW5kIG5ld3MgYWJvdXQgd2hhdCdzIGdvaW5nIG9uIGFzIHdlbGwgYXMgdGhlIGxhdGVzdCB2ZXJzaW9ucwogICBmcm9tIHRoZSBjdXJsIHdlYiBwYWdlcywgbG9jYXRlZCBhdDoKIAotICAgICAgICBodHRwOi8vY3VybC5oYXh4LnNlCisgICAgICAgIGh0dHBzOi8vY3VybC5oYXh4LnNlCiAKIFNJTVBMRSBVU0FHRQogCkBAIC04MjQsNyArODI0LDcgQEAKICAgV29ya2luZyB3aXRoIExEQVAgVVJMcyI6CiAgIGh0dHA6Ly9kZXZlbG9wZXIubmV0c2NhcGUuY29tL2RvY3MvbWFudWFscy9kaXJzZGsvY3NkazMwL3VybC5odG0KIAotICBSRkMgMjI1NSwgIlRoZSBMREFQIFVSTCBGb3JtYXQiIGh0dHA6Ly9jdXJsLmhheHguc2UvcmZjL3JmYzIyNTUudHh0CisgIFJGQyAyMjU1LCAiVGhlIExEQVAgVVJMIEZvcm1hdCIgaHR0cHM6Ly9jdXJsLmhheHguc2UvcmZjL3JmYzIyNTUudHh0CiAKICAgVG8gc2hvdyB5b3UgYW4gZXhhbXBsZSwgdGhpcyBpcyBob3cgSSBjYW4gZ2V0IGFsbCBwZW9wbGUgZnJvbSBteSBsb2NhbCBMREFQCiAgIHNlcnZlciB0aGF0IGhhcyBhIGNlcnRhaW4gc3ViLWRvbWFpbiBpbiB0aGVpciBlbWFpbCBhZGRyZXNzOgpAQCAtMTAxMSw3ICsxMDExLDcgQEAKIAogICBGb3IgeW91ciBjb252ZW5pZW5jZSwgd2UgaGF2ZSBzZXZlcmFsIG9wZW4gbWFpbGluZyBsaXN0cyB0byBkaXNjdXNzIGN1cmwsCiAgIGl0cyBkZXZlbG9wbWVudCBhbmQgdGhpbmdzIHJlbGV2YW50IHRvIHRoaXMuIEdldCBhbGwgaW5mbyBhdAotICBodHRwOi8vY3VybC5oYXh4LnNlL21haWwvLiBTb21lIG9mIHRoZSBsaXN0cyBhdmFpbGFibGUgYXJlOgorICBodHRwczovL2N1cmwuaGF4eC5zZS9tYWlsLy4gU29tZSBvZiB0aGUgbGlzdHMgYXZhaWxhYmxlIGFyZToKIAogICBjdXJsLXVzZXJzCiAKZGlmZiAtLWdpdCBhL2RvY3MvTWFrZWZpbGUuYW0gYi9kb2NzL01ha2VmaWxlLmFtCmluZGV4IGUzZTI3ZDMuLjI4NGU1MzEgMTAwNjQ0Ci0tLSBhL2RvY3MvTWFrZWZpbGUuYW0KKysrIGIvZG9jcy9NYWtlZmlsZS5hbQpAQCAtNSwxMSArNSwxMSBAQAogIyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICMKLSMgQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyMgQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICMKICMgVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICMgeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICMKICMgWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAjIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzMsMjIgKzMzLDIyIEBACiAKIENMRUFORklMRVMgPSAkKEdFTkhUTUxQQUdFUykgJChQREZQQUdFUykKIAotRVhUUkFfRElTVCA9IE1BTlVBTCBCVUdTIENPTlRSSUJVVEUgRkFRIEZFQVRVUkVTIElOVEVSTkFMUyBTU0xDRVJUUwkgXAotIFJFQURNRS53aW4zMiBSRVNPVVJDRVMgVE9ETyBUaGVBcnRPZkh0dHBTY3JpcHRpbmcgVEhBTktTIFZFUlNJT05TCSBcCi0gS05PV05fQlVHUyBCSU5ESU5HUyAkKG1hbl9NQU5TKSAkKEhUTUxQQUdFUykgSElTVE9SWSBJTlNUQUxMCQkgXAotICQoUERGUEFHRVMpIExJQ0VOU0UtTUlYSU5HIFJFQURNRS5uZXR3YXJlIERJU1RSTy1ESUxFTU1BIElOU1RBTEwuZGV2Y3BwIFwKLSBNQUlMLUVUSVFVRVRURSBIVFRQLUNPT0tJRVMgU0VDVVJJVFkgUkVMRUFTRS1QUk9DRURVUkUgIFwKLSBTU0wtUFJPQkxFTVMgSFRUUDIubWQgUk9BRE1BUC5tZAorRVhUUkFfRElTVCA9IE1BTlVBTCBCVUdTIENPTlRSSUJVVEUgRkFRIEZFQVRVUkVTIElOVEVSTkFMUyBTU0xDRVJUUyAgICAgXAorIFJFQURNRS53aW4zMiBSRVNPVVJDRVMgVE9ETyBUaGVBcnRPZkh0dHBTY3JpcHRpbmcgVEhBTktTIFZFUlNJT05TICAgICAgXAorIEtOT1dOX0JVR1MgQklORElOR1MgJChtYW5fTUFOUykgJChIVE1MUEFHRVMpIEhJU1RPUlkgSU5TVEFMTCAgICAgICAgICAgXAorICQoUERGUEFHRVMpIExJQ0VOU0UtTUlYSU5HIFJFQURNRS5uZXR3YXJlIElOU1RBTEwuZGV2Y3BwICAgICAgICAgICAgICAgXAorIE1BSUwtRVRJUVVFVFRFIEhUVFAtQ09PS0lFUy5tZCBTRUNVUklUWSBSRUxFQVNFLVBST0NFRFVSRSBTU0wtUFJPQkxFTVMgXAorIEhUVFAyLm1kIFJPQURNQVAubWQgQ09ERV9PRl9DT05EVUNULm1kIENPREVfU1RZTEUubWQgQ0hFQ0tTUkMubWQKIAotTUFOMkhUTUw9IHJvZmZpdCA8ICQ8ID4kQAorTUFOMkhUTUw9IHJvZmZpdCAkPCA+JEAKIAogU1VGRklYRVMgPSAuMSAuaHRtbCAucGRmCiAKIGh0bWw6ICQoSFRNTFBBR0VTKQotCWNkIGxpYmN1cmw7IG1ha2UgaHRtbAorCWNkIGxpYmN1cmwgJiYgbWFrZSBodG1sCiAKIHBkZjogJChQREZQQUdFUykKLQljZCBsaWJjdXJsOyBtYWtlIHBkZgorCWNkIGxpYmN1cmwgJiYgbWFrZSBwZGYKIAogLjEuaHRtbDoKIAkkKE1BTjJIVE1MKQpkaWZmIC0tZ2l0IGEvZG9jcy9SRUxFQVNFLVBST0NFRFVSRSBiL2RvY3MvUkVMRUFTRS1QUk9DRURVUkUKaW5kZXggZmMzMTI3NC4uNDc5MDc4ZiAxMDA2NDQKLS0tIGEvZG9jcy9SRUxFQVNFLVBST0NFRFVSRQorKysgYi9kb2NzL1JFTEVBU0UtUFJPQ0VEVVJFCkBAIC0xMSw4ICsxMSw4IEBACiAtIG1ha2Ugc3VyZSBhbGwgcmVsZXZhbnQgY2hhbmdlcyBhcmUgY29tbWl0dGVkIG9uIHRoZSBtYXN0ZXIgYnJhbmNoCiAKIC0gdGFnIHRoZSBnaXQgcmVwbyBpbiB0aGlzIHN0eWxlOiBgZ2l0IHRhZyAtYSBjdXJsLTdfMzRfMGAuIC1hIGFubm90YXRlcyB0aGUKLSAgdGFnIGFuZCB3ZSB1c2UgdW5kZXJzY29yZXMgaW5zdGVhZCBvZiBkb3RzIGluIHRoZSB2ZXJzaW9uIG51bWJlci4gCi0gICAKKyAgdGFnIGFuZCB3ZSB1c2UgdW5kZXJzY29yZXMgaW5zdGVhZCBvZiBkb3RzIGluIHRoZSB2ZXJzaW9uIG51bWJlci4KKwogLSBydW4gIi4vbWFrZXRneiA3LjM0LjAiIHRvIGJ1aWxkIHRoZSByZWxlYXNlIHRhcmJhbGxzLiBJdCBpcyBpbXBvcnRhbnQgdGhhdAogICB5b3UgcnVuIHRoaXMgb24gYSBtYWNoaW5lIHdpdGggdGhlIGNvcnJlY3Qgc2V0IG9mIGF1dG90b29scyBldGMgaW5zdGFsbGVkCiAgIGFzIHRoaXMgaXMgd2hhdCB0aGVuIHdpbGwgYmUgc2hpcHBlZCBhbmQgdXNlZCBieSBtb3N0IHVzZXJzIG9uICpuaXggbGlrZQpAQCAtNDEsNiArNDEsMTEgQEAKIAogICAodGhlIHdlYiBzaXRlIHRoZW4gdXBkYXRlcyBpdHMgY29udGVudHMgYXV0b21hdGljYWxseSkKIAorb24gZ2l0aHViCistLS0tLS0tLS0KKworLSBlZGl0IHRoZSBuZXdseSBtYWRlIHJlbGVhc2UgdGFnIHNvIHRoYXQgaXQgaXMgbGlzdGVkIGFzIHRoZSBsYXRlc3QgcmVsZWFzZQorCiBpbmZvcm0KIC0tLS0tLQogCkBAIC03OCwxMiArODMsMTAgQEAKIEJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbiBhYm92ZSwgaGVyZSBhcmUgc29tZSBwbGFubmVkIHJlbGVhc2UgZGF0ZXMgKGF0IHRoZQogdGltZSBvZiB0aGlzIHdyaXRpbmcpOgogCi0tIEp1bmUgMTcsIDIwMTUgKHZlcnNpb24gNy40My4wKQotLSBBdWd1c3QgMTIsIDIwMTUKLS0gT2N0b2JlciA3LCAyMDE1Ci0tIERlY2VtYmVyIDIsIDIwMTUKLS0gSmFudWFyeSAyNywgMjAxNgotLSBNYXJjaCAyMywgMjAxNgorLSBNYXJjaCAyMywgMjAxNiAodmVyc2lvbiA3LjQ4LjApCiAtIE1heSAxOCwgMjAxNgogLSBKdWx5IDEzLCAyMDE2CiAtIFNlcHRlbWJlciA3LCAyMDE2CistIE5vdmVtYmVyIDIsIDIwMTYKKy0gRGVjZW1iZXIgMjgsIDIwMTYKKy0gRmVicnVhcnkgMjIsIDIwMTcKZGlmZiAtLWdpdCBhL2RvY3MvUkVTT1VSQ0VTIGIvZG9jcy9SRVNPVVJDRVMKaW5kZXggNzYwZTc1OS4uMWFkOGFhYyAxMDA2NDQKLS0tIGEvZG9jcy9SRVNPVVJDRVMKKysrIGIvZG9jcy9SRVNPVVJDRVMKQEAgLTM2LDcgKzM2LDcgQEAKIAogICBSRkMgMjEwOSAtIEhUVFAgU3RhdGUgTWFuYWdlbWVudCBNZWNoYW5pc20gKGNvb2tpZSBzdHVmZikKICAgICAgICAgICAgLSBBbHNvLCByZWFkIE5ldHNjYXBlJ3Mgc3BlY2lmaWNhdGlvbiBhdAotICAgICAgICAgICAgIGh0dHA6Ly9jdXJsLmhheHguc2UvcmZjL2Nvb2tpZV9zcGVjLmh0bWwKKyAgICAgICAgICAgICBodHRwczovL2N1cmwuaGF4eC5zZS9yZmMvY29va2llX3NwZWMuaHRtbAogCiAgIFJGQyAyMTgzIC0gVGhlIENvbnRlbnQtRGlzcG9zaXRpb24gSGVhZGVyIEZpZWxkCiAKZGlmZiAtLWdpdCBhL2RvY3MvUk9BRE1BUC5tZCBiL2RvY3MvUk9BRE1BUC5tZAppbmRleCBlYjUyZDE4Li5kNjY0NDAzIDEwMDY0NAotLS0gYS9kb2NzL1JPQURNQVAubWQKKysrIGIvZG9jcy9ST0FETUFQLm1kCkBAIC0xOCwzMSArMTgsMTggQEAKICAgIFRvIGRlY2lkZTogaWYgd2UgbmVlZCB0byBidW5kbGUgcGFydHMgb2YgdGhlIG5naHR0cDIgc3R1ZmYgdGhhdCBwcm9iYWJseQogICAgd29uJ3QgYmUgc2hpcHBlZCBieSBtYW55IGRpc3Ryb3MuCiAKLS0gc3RyZWFtIHByb3BlcnRpZXMgQVBJCitIVFRQIGNvb2tpZXMKKy0tLS0tLS0tLS0tLQogCi0gICBQcm92aWRlIG9wdGlvbnMgZm9yIHNldHRpbmcgcHJpb3JpdGllcyBhbmQgZGVwZW5kZW5jaWVzIGFtb25nIHRoZSBzdHJlYW1zCi0gICAoZWFzeSBoYW5kbGVzKS4gVGhleSBhcmUgbW9zdGx5IGluZm9ybWF0aW9uIHNldCBmb3IgdGhlIHN0cmVhbSBhbmQgc2VudCB0bwotICAgdGhlIHNlcnZlciBzbyB3ZSBkb24ndCBoYXZlIHRvIGFkZCBtdWNoIGxvZ2ljIGZvciB0aGlzLgorVHdvIGNvb2tpZSBkcmFmdHMgaGF2ZSBiZWVuIGFkb3B0ZWQgYnkgdGhlIGh0dHB3ZyBpbiBJRVRGIGFuZCB3ZSBzaG91bGQKK3N1cHBvcnQgdGhlbSBhcyB0aGUgcG9wdWxhciBicm93c2VycyB3aWxsIGFzIHdlbGw6CiAKLS0gc2VydmVyIHB1c2gKK1tEZXByZWNhdGUgbW9kaWZpY2F0aW9uIG9mICdzZWN1cmUnIGNvb2tpZXMgZnJvbSBub24tc2VjdXJlCitvcmlnaW5zXShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtaWV0Zi1odHRwYmlzLWNvb2tpZS1hbG9uZS0wMCkKIAotICAgTm90IGV4YWN0bHkgY2xlYXIgZXhhY3RseSBob3cgdG8gc3VwcG9ydCB0aGlzIEFQSS13aXNlLCBidXQgYnkgYWRkaW5nCi0gICBoYW5kbGVzIHdpdGhvdXQgYXNraW5nIGZvciBhIHJlc291cmNlIGl0IGNvdWxkIGJlIGEgd2F5IHRvIGJlIHByZXBhcmVkIHRvCi0gICByZWNlaXZlIHB1c2hlcyBpbiBjYXNlIHN1Y2ggYXJlIHNlbnQuIFdlIHByb2JhYmx5IG5lZWQgaXQgdG8gc3RpbGwgc3BlY2lmeQotICAgYSBVUkwgd2l0aCBob3N0IG5hbWUsIHBvcnQgZXRjIGJ1dCB3ZSBwcm9iYWJseSBuZWVkIGEgc3BlY2lhbCBvcHRpb24gdG8KLSAgIHRlbGwgbGliY3VybCBpdCBpcyBmb3Igc2VydmVyIHB1c2ggcHVycG9zZXMuCitbQ29va2llIFByZWZpeGVzXShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtaWV0Zi1odHRwYmlzLWNvb2tpZS1wcmVmaXhlcy0wMCkKIAotLSBwcm92aWRlIG9wdGlvbiBmb3IgSFRUUC8yICJwcmlvciBrbm93bGVkZ2UiIG92ZXIgY2xlYXIgdGV4dAotCi0gICBBcyBpdCB3b3VsZCBhdm9pZCB0aGUgcm91bmR0cmlwLWhlYXZ5IFVwZ3JhZGU6IHByb2NlZHVyZXMgd2hlbiB5b3UgX2tub3dfCi0gICBpdCBzcGVha3MgSFRUUC8yLgotCi0tIHByb3ZpZGUgb3B0aW9uIHRvIGFsbG93IGN1cmwgdG8gZGVmYXVsdCB0byBIVFRQLzIgb25seSB3aGVuIHVzaW5nIEhUVFBTCi0KLSAgIFdlIGNvdWxkIHN3aXRjaCBvbiBIVFRQLzIgYnktZGVmYXVsdCBmb3IgSFRUUFMgcXVpdGUgZWFzaWx5IGFuZCBpdAotICAgc2hvdWxkbid0IGh1cnQgYW55b25lLCB3aGlsZSBIVFRQLzIgZm9yIEhUVFAgYnkgZGVmYXVsdCBjb3VsZCBpbnRyb2R1Y2UKLSAgIGxvdHMgb2YgVXBncmFkZTogcm91bmR0cmlwcyB0aGF0IHVzZXJzIHdvbid0IGxpa2UuIFNvIGEgc2VwYXJhdGVkIG9wdGlvbgotICAgYWx0ZXJuYXRpdmUgbWFrZXMgc2Vuc2UuCitbRmlyZWZveCBidWcgcmVwb3J0IGFib3V0IHNlY3VyZSBjb29raWVzXShodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD05NzYwNzMpCiAKIFNSViByZWNvcmRzCiAtLS0tLS0tLS0tLQpAQCAtNTIsNyArMzksOSBAQAogSFRUUFMgdG8gcHJveHkKIC0tLS0tLS0tLS0tLS0tCiAKLVRvIGF2b2lkIG5ldHdvcmsgdHJhZmZpYyB0by9mcm9tIHRoZSBwcm94eSBnZXR0aW5nIHNub29wZWQgb24uCitUbyBhdm9pZCBuZXR3b3JrIHRyYWZmaWMgdG8vZnJvbSB0aGUgcHJveHkgZ2V0dGluZyBzbm9vcGVkIG9uLiBUaGVyZSdzIGEgZ2l0CiticmFuY2ggaW4gdGhlIHB1YmxpYyBnaXQgcmVwb3NpdG9yeSBmb3IgdGhpcyB0aGF0IHdlIG5lZWQgdG8gbWFrZSBzdXJlIHdvcmtzCitmb3IgYWxsIFRMUyBiYWNrZW5kcyBhbmQgdGhlbiBtZXJnZSEKIAogY3VybF9mb3JtYWRkKCkKIC0tLS0tLS0tLS0tLS0tCkBAIC02MSwxMiArNTAsMTAgQEAKIGBjdXJsX2Zvcm1nZXQoKWAgYW5kIGBjdXJsX2Zvcm1mcmVlKClgIGJ5IGFkZGluZyByZXBsYWNlbWVudCBmdW5jdGlvbnMgYW5kCiBkZXByZWNhdGluZyB0aGUgb2xkIG9uZXMgdG8gYWxsb3cgY3VzdG9tIG1hbGxvY3MgYW5kIG1vcmUKIAotdGhpcmQtcGFydHkgU0FTTAorVGhpcmQtcGFydHkgU0FTTAogLS0tLS0tLS0tLS0tLS0tLQogCi1hZGQgc3VwcG9ydCBmb3IgdGhpcmQtcGFydHkgU0FTTCBsaWJyYXJpZXMgc3VjaCBhcyBDeXJ1cyBTQVNMIC0gbWF5IG5lZWQgdG8KLW1vdmUgZXhpc3RpbmcgbmF0aXZlIGFuZCBTU1BJIGJhc2VkIGF1dGhlbnRpY2F0aW9uIGludG8gdnNhc2wgZm9sZGVyIGFmdGVyCi1yZXdvcmtpbmcgSFRUUCBhbmQgU0FTTCBjb2RlCitBZGQgc3VwcG9ydCBmb3IgdGhpcmQtcGFydHkgU0FTTCBsaWJyYXJpZXMgc3VjaCBhcyBDeXJ1cyBTQVNMLgogCiBTQVNMIGF1dGhlbnRpY2F0aW9uIGluIExEQVAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTE3LDcgKzEwNCw3IEBACiAKIDIuIGN1cmwgLWggb3V0cHV0IChjb25zaWRlcmVkIG92ZXJ3aGVsbWluZyB0byB1c2VycykKIAotMy4gd2UgaGF2ZSA+IDE2MCBjb21tYW5kIGxpbmUgb3B0aW9ucywgaXMgdGhlcmUgYSB3YXkgdG8gcmVkbyB0aGluZ3MgdG8KKzMuIHdlIGhhdmUgPiAxNzAgY29tbWFuZCBsaW5lIG9wdGlvbnMsIGlzIHRoZXJlIGEgd2F5IHRvIHJlZG8gdGhpbmdzIHRvCiAgICBzaW1wbGlmeSBvciBpbXByb3ZlIHRoZSBzaXR1YXRpb24gYXMgd2UgYXJlIGxpa2VseSB0byBrZWVwIGFkZGluZwogICAgZmVhdHVyZXMvb3B0aW9ucyBpbiB0aGUgZnV0dXJlIHRvbwogCmRpZmYgLS1naXQgYS9kb2NzL1NFQ1VSSVRZIGIvZG9jcy9TRUNVUklUWQppbmRleCBlZTg0NGQ4Li43YjI0NWQ3IDEwMDY0NAotLS0gYS9kb2NzL1NFQ1VSSVRZCisrKyBiL2RvY3MvU0VDVVJJVFkKQEAgLTE0LDcgKzE0LDcgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogQWxsIGtub3duIGFuZCBwdWJsaWMgY3VybCBvciBsaWJjdXJsIHJlbGF0ZWQgdnVsbmVyYWJpbGl0aWVzIGFyZSBsaXN0ZWQgb24KLVt0aGUgY3VybCB3ZWIgc2l0ZSBzZWN1cml0eSBwYWdlXShodHRwOi8vY3VybC5oYXh4LnNlL2RvY3Mvc2VjdXJpdHkuaHRtbCkuCitbdGhlIGN1cmwgd2ViIHNpdGUgc2VjdXJpdHkgcGFnZV0oaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9zZWN1cml0eS5odG1sKS4KIAogU2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzIHNob3VsZCBub3QgYmUgZW50ZXJlZCBpbiB0aGUgcHJvamVjdCdzIHB1YmxpYyBidWcKIHRyYWNrZXIgdW5sZXNzIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbiBpcyBpbiBwbGFjZSB0byBsaW1pdCBhY2Nlc3MgdG8gdGhlCmRpZmYgLS1naXQgYS9kb2NzL1NTTC1QUk9CTEVNUyBiL2RvY3MvU1NMLVBST0JMRU1TCmluZGV4IDM2NTAyNjcuLmU2Mzk4NzEgMTAwNjQ0Ci0tLSBhL2RvY3MvU1NMLVBST0JMRU1TCisrKyBiL2RvY3MvU1NMLVBST0JMRU1TCkBAIC0yNiw3ICsyNiw3IEBACiAgIHByb2JsZW1zIGlmIHlvdXIgQ0EgY2VydCBkb2VzIG5vdCBoYXZlIHRoZSBjZXJ0aWZpY2F0ZXMgZm9yIHRoZQogICBpbnRlcm1lZGlhdGVzIGluIHRoZSB3aG9sZSB0cnVzdCBjaGFpbi4KIAotU1NMIHZlcnNpb24KK1Byb3RvY29sIHZlcnNpb24KIAogICBTb21lIGJyb2tlbiBzZXJ2ZXJzIGZhaWwgdG8gc3VwcG9ydCB0aGUgcHJvdG9jb2wgbmVnb3RpYXRpb24gcHJvcGVybHkgdGhhdAogICBTU0wgc2VydmVycyBhcmUgc3VwcG9zZWQgdG8gaGFuZGxlLiBUaGlzIG1heSBjYXVzZSB0aGUgY29ubmVjdGlvbiB0byBmYWlsCkBAIC0zNiw3ICszNiw5IEBACiAgIEFuIGFkZGl0aW9uYWwgY29tcGxpY2F0aW9uIGNhbiBiZSB0aGF0IG1vZGVybiBTU0wgbGlicmFyaWVzIHNvbWV0aW1lcyBhcmUKICAgYnVpbHQgd2l0aCBzdXBwb3J0IGZvciBvbGRlciBTU0wgYW5kIFRMUyB2ZXJzaW9ucyBkaXNhYmxlZCEKIAotU1NMIGNpcGhlcnMKKyAgQWxsIHZlcnNpb25zIG9mIFNTTCBhcmUgY29uc2lkZXJlZCBpbnNlY3VyZSBhbmQgc2hvdWxkIGJlIGF2b2lkZWQuIFVzZSBUTFMuCisKK0NpcGhlcnMKIAogICBDbGllbnRzIGdpdmUgc2VydmVycyBhIGxpc3Qgb2YgY2lwaGVycyB0byBzZWxlY3QgZnJvbS4gSWYgdGhlIGxpc3QgZG9lc24ndAogICBpbmNsdWRlIGFueSBjaXBoZXJzIHRoZSBzZXJ2ZXIgd2FudHMvY2FuIHVzZSwgdGhlIGNvbm5lY3Rpb24gaGFuZHNoYWtlCkBAIC01MSwxMCArNTMsMTQgQEAKICAgTm90ZSB0aGF0IHRoZXNlIHdlYWsgY2lwaGVycyBhcmUgaWRlbnRpZmllZCBhcyBmbGF3ZWQuIEZvciBleGFtcGxlLCB0aGlzCiAgIGluY2x1ZGVzIHN5bW1ldHJpYyBjaXBoZXJzIHdpdGggbGVzcyB0aGFuIDEyOCBiaXQga2V5cyBhbmQgUkM0LgogCisgIFdpblNTTCBpbiBXaW5kb3dzIFhQIGlzIG5vdCBhYmxlIHRvIGNvbm5lY3QgdG8gc2VydmVycyB0aGF0IG5vIGxvbmdlcgorICBzdXBwb3J0IHRoZSBsZWdhY3kgaGFuZHNoYWtlcyBhbmQgYWxnb3JpdGhtcyB1c2VkIGJ5IHRob3NlIHZlcnNpb25zLCBzbyB3ZQorICBhZHZpY2UgYWdhaW5zdCBidWlsZGluZyBjdXJsIHRvIHVzZSBXaW5TU0wgb24gcmVhbGx5IG9sZCBXaW5kb3dzIHZlcnNpb25zLgorCiAgIFJlZmVyZW5jZXM6CiAKICAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LXBvcG92LXRscy1wcm9oaWJpdGluZy1yYzQtMDEKLSAgCisKIEFsbG93IEJFQVNUCiAKICAgQkVBU1QgaXMgdGhlIG5hbWUgb2YgYSBUTFMgMS4wIGF0dGFjayB0aGF0IHN1cmZhY2VkIDIwMTEuIFdoZW4gYWRkaW5nIG1lYW5zCkBAIC02NSwzICs3MSwxNyBAQAogICBpbnRyb2R1Y2VkLiBFeGFjdGx5IGFzIGl0IHNvdW5kcywgaXQgcmUtaW50cm9kdWNlcyB0aGUgQkVBU1QgdnVsbmVyYWJpbGl0eQogICBidXQgb24gdGhlIG90aGVyIGhhbmQgaXQgYWxsb3dzIGN1cmwgdG8gY29ubmVjdCB0byB0aGF0IGtpbmQgb2Ygc3RyYW5nZQogICBzZXJ2ZXJzLgorCitEaXNhYmxpbmcgY2VydGlmaWNhdGUgcmV2b2NhdGlvbiBjaGVja3MKKworICBTb21lIFNTTCBiYWNrZW5kcyBtYXkgZG8gY2VydGlmaWNhdGUgcmV2b2NhdGlvbiBjaGVja3MgKENSTCwgT0NTUCwgZXRjKQorICBkZXBlbmRpbmcgb24gdGhlIE9TIG9yIGJ1aWxkIGNvbmZpZ3VyYXRpb24uIFRoZSAtLXNzbC1uby1yZXZva2Ugb3B0aW9uIHdhcworICBpbnRyb2R1Y2VkIGluIDcuNDQuMCB0byBkaXNhYmxlIHJldm9jYXRpb24gY2hlY2tpbmcgYnV0IGN1cnJlbnRseSBpcyBvbmx5CisgIHN1cHBvcnRlZCBmb3IgV2luU1NMICh0aGUgbmF0aXZlIFdpbmRvd3MgU1NMIGxpYnJhcnkpLCB3aXRoIGFuIGV4Y2VwdGlvbiBpbgorICB0aGUgY2FzZSBvZiBXaW5kb3dzJyBVbnRydXN0ZWQgUHVibGlzaGVycyBibGFja2xpc3Qgd2hpY2ggaXQgc2VlbXMgY2FuJ3QgYmUKKyAgYnlwYXNzZWQuIFRoaXMgb3B0aW9uIG1heSBoYXZlIGJyb2FkZXIgc3VwcG9ydCB0byBhY2NvbW1vZGF0ZSBvdGhlciBTU0wKKyAgYmFja2VuZHMgaW4gdGhlIGZ1dHVyZS4KKworICBSZWZlcmVuY2VzOgorCisgIGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3Mvc3NsLWNvbXBhcmVkLmh0bWwKZGlmZiAtLWdpdCBhL2RvY3MvU1NMQ0VSVFMgYi9kb2NzL1NTTENFUlRTCmluZGV4IDg5ZTViYjYuLjc3NTU2MDkgMTAwNjQ0Ci0tLSBhL2RvY3MvU1NMQ0VSVFMKKysrIGIvZG9jcy9TU0xDRVJUUwpAQCAtMjAsOCArMjAsOCBAQAogSXQgaXMgYWJvdXQgdHJ1c3QKIC0tLS0tLS0tLS0tLS0tLS0tCiAKLVRoaXMgc3lzdGVtIGlzIGFib3V0IHRydXN0LiBJbiB5b3VyIGxvY2FsIENBIGNlcnQgYnVuZGxlIHlvdSBoYXZlIGNlcnRzIGZyb20KLSp0cnVzdGVkKiBDZXJ0aWZpY2F0ZSBBdXRob3JpdGllcyB0aGF0IHlvdSB0aGVuIGNhbiB1c2UgdG8gdmVyaWZ5IHRoYXQgdGhlCitUaGlzIHN5c3RlbSBpcyBhYm91dCB0cnVzdC4gSW4geW91ciBsb2NhbCBDQSBjZXJ0aWZpY2F0ZSBzdG9yZSB5b3UgaGF2ZSBjZXJ0cworZnJvbSAqdHJ1c3RlZCogQ2VydGlmaWNhdGUgQXV0aG9yaXRpZXMgdGhhdCB5b3UgdGhlbiBjYW4gdXNlIHRvIHZlcmlmeSB0aGF0IHRoZQogc2VydmVyIGNlcnRpZmljYXRlcyB5b3Ugc2VlIGFyZSB2YWxpZC4gVGhleSdyZSBzaWduZWQgYnkgb25lIG9mIHRoZSBDQXMgeW91CiB0cnVzdC4KIApAQCAtMzUsMTYgKzM1LDE2IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogbGliY3VybCBwZXJmb3JtcyBwZWVyIFNTTCBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gYnkgZGVmYXVsdC4gIFRoaXMgaXMgZG9uZQotYnkgdXNpbmcgQ0EgY2VydCBidW5kbGUgdGhhdCB0aGUgU1NMIGxpYnJhcnkgY2FuIHVzZSB0byBtYWtlIHN1cmUgdGhlIHBlZXIncwotc2VydmVyIGNlcnRpZmljYXRlIGlzIHZhbGlkLgorYnkgdXNpbmcgYSBDQSBjZXJ0aWZpY2F0ZSBzdG9yZSB0aGF0IHRoZSBTU0wgbGlicmFyeSBjYW4gdXNlIHRvIG1ha2Ugc3VyZSB0aGUKK3BlZXIncyBzZXJ2ZXIgY2VydGlmaWNhdGUgaXMgdmFsaWQuCiAKIElmIHlvdSBjb21tdW5pY2F0ZSB3aXRoIEhUVFBTLCBGVFBTIG9yIG90aGVyIFRMUy11c2luZyBzZXJ2ZXJzIHVzaW5nCi1jZXJ0aWZpY2F0ZXMgdGhhdCBhcmUgc2lnbmVkIGJ5IENBcyBwcmVzZW50IGluIHRoZSBidW5kbGUsIHlvdSBjYW4gYmUgc3VyZQorY2VydGlmaWNhdGVzIHRoYXQgYXJlIHNpZ25lZCBieSBDQXMgcHJlc2VudCBpbiB0aGUgc3RvcmUsIHlvdSBjYW4gYmUgc3VyZQogdGhhdCB0aGUgcmVtb3RlIHNlcnZlciByZWFsbHkgaXMgdGhlIG9uZSBpdCBjbGFpbXMgdG8gYmUuCiAKIElmIHRoZSByZW1vdGUgc2VydmVyIHVzZXMgYSBzZWxmLXNpZ25lZCBjZXJ0aWZpY2F0ZSwgaWYgeW91IGRvbid0IGluc3RhbGwgYSBDQQotY2VydCBidW5kbGUsIGlmIHRoZSBzZXJ2ZXIgdXNlcyBhIGNlcnRpZmljYXRlIHNpZ25lZCBieSBhIENBIHRoYXQgaXNuJ3QKLWluY2x1ZGVkIGluIHRoZSBidW5kbGUgeW91IHVzZSBvciBpZiB0aGUgcmVtb3RlIGhvc3QgaXMgYW4gaW1wb3N0b3IKK2NlcnQgc3RvcmUsIGlmIHRoZSBzZXJ2ZXIgdXNlcyBhIGNlcnRpZmljYXRlIHNpZ25lZCBieSBhIENBIHRoYXQgaXNuJ3QKK2luY2x1ZGVkIGluIHRoZSBzdG9yZSB5b3UgdXNlIG9yIGlmIHRoZSByZW1vdGUgaG9zdCBpcyBhbiBpbXBvc3RvcgogaW1wZXJzb25hdGluZyB5b3VyIGZhdm9yaXRlIHNpdGUsIGFuZCB5b3Ugd2FudCB0byB0cmFuc2ZlciBmaWxlcyBmcm9tIHRoaXMKIHNlcnZlciwgZG8gb25lIG9mIHRoZSBmb2xsb3dpbmc6CiAKQEAgLTU5LDEyICs1OSwyMiBAQAogCiAgICAgV2l0aCB0aGUgY3VybCBjb21tYW5kIGxpbmUgdG9vbDogLS1jYWNlcnQgW2ZpbGVdCiAKLSAzLiBBZGQgdGhlIENBIGNlcnQgZm9yIHlvdXIgc2VydmVyIHRvIHRoZSBleGlzdGluZyBkZWZhdWx0IENBIGNlcnQgYnVuZGxlLgotICAgIFRoZSBkZWZhdWx0IHBhdGggb2YgdGhlIENBIGJ1bmRsZSB1c2VkIGNhbiBiZSBjaGFuZ2VkIGJ5IHJ1bm5pbmcgY29uZmlndXJlCi0gICAgd2l0aCB0aGUgLS13aXRoLWNhLWJ1bmRsZSBvcHRpb24gcG9pbnRpbmcgb3V0IHRoZSBwYXRoIG9mIHlvdXIgY2hvaWNlLgorIDMuIEFkZCB0aGUgQ0EgY2VydCBmb3IgeW91ciBzZXJ2ZXIgdG8gdGhlIGV4aXN0aW5nIGRlZmF1bHQgQ0EgY2VydGlmaWNhdGUKKyAgICBzdG9yZS4gVGhlIGRlZmF1bHQgQ0EgY2VydGlmaWNhdGUgc3RvcmUgY2FuIGNoYW5nZWQgYXQgY29tcGlsZSB0aW1lIHdpdGggdGhlCisgICAgZm9sbG93aW5nIGNvbmZpZ3VyZSBvcHRpb25zOgogCi0gICAgVG8gZG8gdGhpcywgeW91IG5lZWQgdG8gZ2V0IHRoZSBDQSBjZXJ0IGZvciB5b3VyIHNlcnZlciBpbiBQRU0gZm9ybWF0IGFuZAotICAgIHRoZW4gYXBwZW5kIHRoYXQgdG8geW91ciBDQSBjZXJ0IGJ1bmRsZS4KKyAgICAtLXdpdGgtY2EtYnVuZGxlPUZJTEU6IHVzZSB0aGUgc3BlY2lmaWVkIGZpbGUgYXMgQ0EgY2VydGlmaWNhdGUgc3RvcmUuIENBCisgICAgY2VydGlmaWNhdGVzIG5lZWQgdG8gYmUgY29uY2F0ZW5hdGVkIGluIFBFTSBmb3JtYXQgaW50byB0aGlzIGZpbGUuCisKKyAgICAtLXdpdGgtY2EtcGF0aD1QQVRIOiB1c2UgdGhlIHNwZWNpZmllZCBwYXRoIGFzIENBIGNlcnRpZmljYXRlIHN0b3JlLiBDQQorICAgIGNlcnRpZmljYXRlcyBuZWVkIHRvIGJlIHN0b3JlZCBhcyBpbmRpdmlkdWFsIFBFTSBmaWxlcyBpbiB0aGlzIGRpcmVjdG9yeS4KKyAgICBZb3UgbWF5IG5lZWQgdG8gcnVuIGNfcmVoYXNoIGFmdGVyIGFkZGluZyBmaWxlcyB0aGVyZS4KKworICAgIElmIG5laXRoZXIgb2YgdGhlIHR3byBvcHRpb25zIGlzIHNwZWNpZmllZCwgY29uZmlndXJlIHdpbGwgdHJ5IHRvIGF1dG8tZGV0ZWN0CisgICAgYSBzZXR0aW5nLiBJdCdzIGFsc28gcG9zc2libGUgdG8gZXhwbGljaXRseSBub3QgaGFyZGNvZGUgYW55IGRlZmF1bHQgc3RvcmUKKyAgICBidXQgcmVseSBvbiB0aGUgYnVpbHQgaW4gZGVmYXVsdCB0aGUgY3J5cHRvIGxpYnJhcnkgbWF5IHByb3ZpZGUgaW5zdGVhZC4KKyAgICBZb3UgY2FuIGFjaGlldmUgdGhhdCBieSBwYXNzaW5nIGJvdGggLS13aXRob3V0LWNhLWJ1bmRsZSBhbmQKKyAgICAtLXdpdGhvdXQtY2EtcGF0aCB0byB0aGUgY29uZmlndXJlIHNjcmlwdC4KIAogICAgIElmIHlvdSB1c2UgSW50ZXJuZXQgRXhwbG9yZXIsIHRoaXMgaXMgb25lIHdheSB0byBnZXQgZXh0cmFjdCB0aGUgQ0EgY2VydAogICAgIGZvciBhIHBhcnRpY3VsYXIgc2VydmVyOgpAQCAtNzYsNyArODYsNyBAQAogICAgICAtIENvbnZlcnQgaXQgZnJvbSBjcnQgdG8gUEVNIHVzaW5nIHRoZSBvcGVuc3NsIHRvb2w6CiAgICAgICAgb3BlbnNzbCB4NTA5IC1pbmZvcm0gREVTIC1pbiB5b3VyZG93bmxvYWRlZC5jcnQgXAogICAgICAgIC1vdXQgb3V0Y2VydC5wZW0gLXRleHQKLSAgICAgLSBBcHBlbmQgdGhlICdvdXRjZXJ0LnBlbScgdG8gdGhlIENBIGNlcnQgYnVuZGxlIG9yIHVzZSBpdCBzdGFuZC1hbG9uZQorICAgICAtIEFkZCB0aGUgJ291dGNlcnQucGVtJyB0byB0aGUgQ0EgY2VydGlmaWNhdGUgc3RvcmUgb3IgdXNlIGl0IHN0YW5kLWFsb25lCiAgICAgICAgYXMgZGVzY3JpYmVkIGJlbG93LgogCiAgICAgSWYgeW91IHVzZSB0aGUgJ29wZW5zc2wnIHRvb2wsIHRoaXMgaXMgb25lIHdheSB0byBnZXQgZXh0cmFjdCB0aGUgQ0EgY2VydApAQCAtODksOSArOTksOSBAQAogICAgICAtIElmIHlvdSB3YW50IHRvIHNlZSB0aGUgZGF0YSBpbiB0aGUgY2VydGlmaWNhdGUsIHlvdSBjYW4gZG86ICJvcGVuc3NsCiAgICAgICAgeDUwOSAtaW5mb3JtIFBFTSAtaW4gY2VydGZpbGUgLXRleHQgLW91dCBjZXJ0ZGF0YSIgd2hlcmUgY2VydGZpbGUgaXMKICAgICAgICB0aGUgY2VydCB5b3UgZXh0cmFjdGVkIGZyb20gbG9nZmlsZS4gTG9vayBpbiBjZXJ0ZGF0YS4KLSAgICAgLSBJZiB5b3Ugd2FudCB0byB0cnVzdCB0aGUgY2VydGlmaWNhdGUsIHlvdSBjYW4gYXBwZW5kIGl0IHRvIHlvdXIKLSAgICAgICBjZXJ0IGJ1bmRsZSBvciB1c2UgaXQgc3RhbmQtYWxvbmUgYXMgZGVzY3JpYmVkLiBKdXN0IHJlbWVtYmVyIHRoYXQgdGhlCi0gICAgICAgc2VjdXJpdHkgaXMgbm8gYmV0dGVyIHRoYW4gdGhlIHdheSB5b3Ugb2J0YWluZWQgdGhlIGNlcnRpZmljYXRlLgorICAgICAtIElmIHlvdSB3YW50IHRvIHRydXN0IHRoZSBjZXJ0aWZpY2F0ZSwgeW91IGNhbiBhZGQgaXQgdG8geW91ciBDQQorICAgICAgIGNlcnRpZmljYXRlIHN0b3JlIG9yIHVzZSBpdCBzdGFuZC1hbG9uZSBhcyBkZXNjcmliZWQuIEp1c3QgcmVtZW1iZXIgdGhhdAorICAgICAgIHRoZSBzZWN1cml0eSBpcyBubyBiZXR0ZXIgdGhhbiB0aGUgd2F5IHlvdSBvYnRhaW5lZCB0aGUgY2VydGlmaWNhdGUuCiAKICA0LiBJZiB5b3UncmUgdXNpbmcgdGhlIGN1cmwgY29tbWFuZCBsaW5lIHRvb2wsIHlvdSBjYW4gc3BlY2lmeSB5b3VyIG93biBDQQogICAgIGNlcnQgcGF0aCBieSBzZXR0aW5nIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBgQ1VSTF9DQV9CVU5ETEVgIHRvIHRoZSBwYXRoCkBAIC0xMDksMTMgKzExOSwxMyBAQAogIDUuIEdldCBhIGJldHRlci9kaWZmZXJlbnQvbmV3ZXIgQ0EgY2VydCBidW5kbGUhIE9uZSBvcHRpb24gaXMgdG8gZXh0cmFjdCB0aGUKICAgICBvbmUgYSByZWNlbnQgRmlyZWZveCBicm93c2VyIHVzZXMgYnkgcnVubmluZyAnbWFrZSBjYS1idW5kbGUnIGluIHRoZSBjdXJsCiAgICAgYnVpbGQgdHJlZSByb290LCBvciBwb3NzaWJseSBkb3dubG9hZCBhIHZlcnNpb24gdGhhdCB3YXMgZ2VuZXJhdGVkIHRoaXMKLSAgICB3YXkgZm9yIHlvdTogW0NBIEV4dHJhY3RdKGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jYWV4dHJhY3QuaHRtbCkKKyAgICB3YXkgZm9yIHlvdTogW0NBIEV4dHJhY3RdKGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY2FleHRyYWN0Lmh0bWwpCiAKIE5lZ2xlY3RpbmcgdG8gdXNlIG9uZSBvZiB0aGUgYWJvdmUgbWV0aG9kcyB3aGVuIGRlYWxpbmcgd2l0aCBhIHNlcnZlciB1c2luZyBhCiBjZXJ0aWZpY2F0ZSB0aGF0IGlzbid0IHNpZ25lZCBieSBvbmUgb2YgdGhlIGNlcnRpZmljYXRlcyBpbiB0aGUgaW5zdGFsbGVkIENBCi1jZXJ0IGJ1bmRsZSwgd2lsbCBjYXVzZSBTU0wgdG8gcmVwb3J0IGFuIGVycm9yICgiY2VydGlmaWNhdGUgdmVyaWZ5IGZhaWxlZCIpCi1kdXJpbmcgdGhlIGhhbmRzaGFrZSBhbmQgU1NMIHdpbGwgdGhlbiByZWZ1c2UgZnVydGhlciBjb21tdW5pY2F0aW9uIHdpdGggdGhhdAotc2VydmVyLgorY2VydGlmaWNhdGUgc3RvcmUsIHdpbGwgY2F1c2UgU1NMIHRvIHJlcG9ydCBhbiBlcnJvciAoImNlcnRpZmljYXRlIHZlcmlmeQorZmFpbGVkIikgZHVyaW5nIHRoZSBoYW5kc2hha2UgYW5kIFNTTCB3aWxsIHRoZW4gcmVmdXNlIGZ1cnRoZXIgY29tbXVuaWNhdGlvbgord2l0aCB0aGF0IHNlcnZlci4KIAogQ2VydGlmaWNhdGUgVmVyaWZpY2F0aW9uIHdpdGggTlNTCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTEyMyw4ICsxMzMsOCBAQAogSWYgbGliY3VybCB3YXMgYnVpbHQgd2l0aCBOU1Mgc3VwcG9ydCwgdGhlbiBkZXBlbmRpbmcgb24gdGhlIE9TIGRpc3RyaWJ1dGlvbiwKIGl0IGlzIHByb2JhYmx5IHJlcXVpcmVkIHRvIHRha2Ugc29tZSBhZGRpdGlvbmFsIHN0ZXBzIHRvIHVzZSB0aGUgc3lzdGVtLXdpZGUKIENBIGNlcnQgZGIuIFJlZEhhdCBzaGlwcyB3aXRoIGFuIGFkZGl0aW9uYWwgbW9kdWxlLCBsaWJuc3NwZW0uc28sIHdoaWNoCi1lbmFibGVzIE5TUyB0byByZWFkIHRoZSBPcGVuU1NMIFBFTSBDQSBidW5kbGUuIFRoaXMgbGlicmFyeSBpcyBtaXNzaW5nIGluCi1PcGVuU3VTRSwgYW5kIHdpdGhvdXQgaXQsIE5TUyBjYW4gb25seSB3b3JrIHdpdGggaXRzIG93biBpbnRlcm5hbCBmb3JtYXRzLiBOU1MKK2VuYWJsZXMgTlNTIHRvIHJlYWQgdGhlIE9wZW5TU0wgUEVNIENBIGJ1bmRsZS4gT24gb3BlblNVU0UgeW91IGNhbiBpbnN0YWxsCitwMTEta2l0LW5zcy10cnVzdCB3aGljaCBtYWtlcyBOU1MgdXNlIHRoZSBzeXN0ZW0gd2lkZSBDQSBjZXJ0aWZpY2F0ZSBzdG9yZS4gTlNTCiBhbHNvIGhhcyBhIG5ldyBbZGF0YWJhc2UgZm9ybWF0XShodHRwczovL3dpa2kubW96aWxsYS5vcmcvTlNTX1NoYXJlZF9EQikuCiAKIFN0YXJ0aW5nIHdpdGggdmVyc2lvbiA3LjE5LjcsIGxpYmN1cmwgYXV0b21hdGljYWxseSBhZGRzIHRoZSAnc3FsOicgcHJlZml4IHRvCmRpZmYgLS1naXQgYS9kb2NzL1RIQU5LUyBiL2RvY3MvVEhBTktTCmluZGV4IDg5YTczOGQuLmU4MTE5MmMgMTAwNjQ0Ci0tLSBhL2RvY3MvVEhBTktTCisrKyBiL2RvY3MvVEhBTktTCkBAIC00LDYgKzQsOCBAQAogCiAgSWYgeW91IGhhdmUgY29udHJpYnV0ZWQgYnV0IGFyZSBtaXNzaW5nIGhlcmUsIHBsZWFzZSBsZXQgdXMga25vdyEKIAorIkNhcHRhaW4gQmFzaWwiCisiU3Bvb24gTWFuIgogQWFybyBLb3NraW5lbgogQWFyb24gT25lYWwKIEFhcm9uIE9yZW5zdGVpbgpAQCAtNDQsMTcgKzQ2LDIwIEBACiBBbGV4YW5kZXIgTGF6aWMKIEFsZXhhbmRlciBQZXBwZXIKIEFsZXhhbmRlciBQZXNseWFrCitBbGV4YW5kZXIgVHJhdWQKIEFsZXhhbmRlciBaaHVyYXZsZXYKIEFsZXhleSBCb3J6b3YKIEFsZXhleSBQZXN0ZXJuaWtvdgogQWxleGV5IFNpbWFrCiBBbGV4ZXkgWmFraGxlc3RpbgogQWxleGlzIENhcnZhbGhvCitBbGV4aXMgTGEgR291dHRlCiBBbGZyZWQgR2ViZXJ0CiBBbGxlbiBQdWxzaWZlcgogQWxvbmEgUm9zc2VuCiBBbW9sIFBhdHRla2FyCiBBbXIgU2hhaGluCitBbmF0b2wgQmVsc2tpCiBBbmF0b2xpIFR1Ym1hbgogQW5kZXJzIEJha2tlbgogQW5kZXJzIEd1c3RhZnNzb24KQEAgLTEwMCw2ICsxMDUsNyBAQAogQW50b24gS2FsbXlrb3YKIEFudG9uIE1hbG92CiBBbnRvbiBZYWJjaGluc2tpeQorQW50b25pbyBMYXJyb3NhCiBBcmthZGl1c3ogTWlza2lld2ljegogQXJtZWwgQXNzZWxpbgogQXJuYXVkIENvbXBhbgpAQCAtMTMxLDEyICsxMzcsMTUgQEAKIEJlbmphbWluIEdlcmFyZAogQmVuamFtaW4gR2lsYmVydAogQmVuamFtaW4gSm9obnNvbgorQmVuamFtaW4gS2lyY2hlcgogQmVub2l0IE5laWwKIEJlbm9pdCBTaWdvdXJlCiBCZXJuYXJkIExlYWsKK0Jlcm5hcmQgU3BpbAogQmVybmhhcmQgUmV1dG5lci1GaXNjaGVyCiBCZXJ0IEh1aWpiZW4KIEJlcnRyYW5kIERlbWlkZGVsYWVyCitCZXJ0cmFuZCBTaW1vbm5ldAogQmlsbCBEb3lsZQogQmlsbCBFZ2VydAogQmlsbCBIb2ZmbWFuCkBAIC0xNTIsNiArMTYxLDcgQEAKIEJvYiBTY2hhZGVyCiBCb2dkYW4gTmljdWxhCiBCcmFkIEJ1cmRpY2sKK0JyYWQgRml0enBhdHJpY2sKIEJyYWQgSGFyZGVyCiBCcmFkIEhhcmRzCiBCcmFkIEtpbmcKQEAgLTE2OSw2ICsxNzksNyBAQAogQnJpYW4gUiBEdWZmeQogQnJpYW4gVWxtCiBCcm9jayBOb2xhbmQKK0JydSBSb20KIEJydWNlIE1pdGNoZW5lcgogQnJ1bm8gVGhvbXNlbgogQnJ1bm8gZGUgQ2FydmFsaG8KQEAgLTIwNSw2ICsyMTYsNyBAQAogQ2hyaXN0aWFuIEt1cnoKIENocmlzdGlhbiBSb2JvdHRvbSBSZWlzCiBDaHJpc3RpYW4gU2NobWl0egorQ2hyaXN0aWFuIFN0ZXdhcnQKIENocmlzdGlhbiBWb2d0CiBDaHJpc3RpYW4gV2Vpc2dlcmJlcgogQ2hyaXN0b3BoZSBEZW1vcnkKQEAgLTIxOCw2ICsyMzAsNyBAQAogQ2xhcmVuY2UgR2FyZG5lcgogQ2xlbWVucyBHcnViZXIKIENsaWZmb3JkIFdvbGYKK0NsaW50IENsYXl0b24KIENvZHkgSm9uZXMKIENvZHkgTWFjawogQ29sYnkgUmFuZ2VyCkBAIC0yMjYsNiArMjM5LDcgQEAKIENvbGluIFdhdHNvbgogQ29sbSBCdWNrbGV5CiBDb25zdGFudGluZSBTYXB1bnR6YWtpcworQ29yeSBCZW5maWVsZAogQ29yeSBOZWxzb24KIENyYWlnIEEgV2VzdAogQ3JhaWcgRGF2aXNvbgpAQCAtMjM0LDYgKzI0OCw3IEBACiBDcmlzdGlhbiBSb2Ryw61ndWV6CiBDdXJ0IEJvZ21pbmUKIEN5cmlsbCBPc3RlcndhbGRlcgorQ8OpZHJpYyBDb25uZXMKIEPDqWRyaWMgRGVsdGhlaWwKIEQuIEZsaW5rbWFubgogRGEtWW9vbiBDaHVuZwpAQCAtMjQxLDggKzI1NiwxMCBAQAogRGFnb2JlcnQgTWljaGVsc2VuCiBEYW1pYW4gRGl4b24KIERhbWllbiBBZGFudAorRGFtaWVuIFZpZWxwZWF1CiBEYW4gQmVja2VyCiBEYW4gQworRGFuIENyaXN0aWFuCiBEYW4gRmFuZHJpY2gKIERhbiBMb2NrcwogRGFuIE5lbHNvbgpAQCAtMjUyLDkgKzI2OSwxNSBAQAogRGFuaWVsIEJsYWNrCiBEYW5pZWwgQ2F0ZXIKIERhbmllbCBFZ2dlcgorRGFuaWVsIEh3YW5nCiBEYW5pZWwgSm9obnNvbgorRGFuaWVsIEthaG4gR2lsbG1vcgorRGFuaWVsIExlZSBId2FuZwogRGFuaWVsIE1lbGFuaQogRGFuaWVsIE1lbnR6CitEYW5pZWwgU2NoYXVlbmJlcmcKK0RhbmllbCBTZWl0aGVyCitEYW5pZWwgU2hhaGFmCiBEYW5pZWwgU3RlaW5iZXJnCiBEYW5pZWwgU3RlbmJlcmcKIERhbmllbCBUaGVyb24KQEAgLTI2OCw3ICsyOTEsOSBAQAogRGF2ZSBSZWlzbmVyCiBEYXZlIFRob21wc29uCiBEYXZlIFZhc2lsZXZza3kKK0RhdmV5IFNoYWZpawogRGF2aWQgQmF1CitEYXZpZCBCZW5qYW1pbgogRGF2aWQgQmluZGVybWFuCiBEYXZpZCBCbGFpa2llCiBEYXZpZCBCeXJvbgpAQCAtMjk3LDEwICszMjIsMTIgQEAKIERhdmlkIFdyaWdodAogRGF2aWQgWWFuCiBEZW5nbWlud2VuCitEZW5pcyBGZWtsdXNoa2luCiBEZW5uaXMgQ2xhcmtlCiBEZXJlayBIaWdnaW5zCiBEZXRsZWYgU2NobWllcgogRGlkaWVyIEJyaXNlYm91cmcKK0RpZWdvIEJlcwogRGllZ28gQ2Fzb3JyYW4KIERpbHlhbiBQYWxhdXpvdgogRGltYSBCYXJza3kKQEAgLTMyMCwxMiArMzQ3LDE0IEBACiBEbWl0cnkgS3Vyb2Noa2luCiBEbWl0cnkgUG9wb3YKIERtaXRyeSBSZWNoa2luCitEbWl0cnkgUy4gQmFpa292CiBEb2xibmVmZiBBLlYKIERvbWVuaWNvIEFuZHJlb2xpCiBEb21pbmljayBNZWdsaW8KIERvbWluaXF1ZSBMZXVlbmJlcmdlcgogRG91ZyBLYXVmbWFuCiBEb3VnIFBvcnRlcgorRG91Z2xhcyBDcmVhZ2VyCiBEb3VnbGFzIEUuIFdlZ3NjaGVpZAogRG91Z2xhcyBLaWxwYXRyaWNrCiBEb3VnbGFzIFIuIEhvcm5lcgpAQCAtMzM1LDYgKzM2NCw3IEBACiBEdWFuZSBDYXRoZXkKIER1bmNhbiBNYWMtVmljYXIgUHJldHQKIER1c3RpbiBCb3N3ZWxsCitEdXN0eSBNYWJlCiBEeWxhbiBFbGxpY290dAogRHlsYW4gU2FsaXNidXJ5CiBFYXJseSBFaGxpbmdlcgpAQCAtMzY0LDEyICszOTQsMTQgQEAKIEVyaWMgTWVsdmlsbGUKIEVyaWMgTWVydGVucwogRXJpYyBSYXV0bWFuCitFcmljIFJpZGdlCiBFcmljIFMuIFJheW1vbmQKIEVyaWMgVGhlbGluCiBFcmljIFZlcmduYXVkCiBFcmljIFdvbmcKIEVyaWMgWW91bmcKIEVyaWNrIE51d2VuZGFtCitFcmlrIEphbnNzZW4KIEVyaWsgSm9oYW5zc29uCiBFcm5lc3QgQmVpbnJvaHIKIEVyd2FuIExlZ3JhbmQKQEAgLTM3Nyw2ICs0MDksNyBAQAogRXRoYW4gR2xhc3NlciBDYW1wCiBFdWdlbmUgS290bHlhcm92CiBFdmFuIEpvcmRhbgorRXZnZW55IEdyaW4KIEV2Z2VueSBUdXJuYWV2CiBFeWdlbmUgUnlhYmlua2luCiBGYWJpYW4gRnJhbmsKQEAgLTM4NCwxMiArNDE3LDE1IEBACiBGYWJpYW4gS2VpbAogRmFicml6aW8gQW1tb2xsbwogRmVkb3IgS2FycGVsZXZpdGNoCitGZWlzdCBKb3NzZWxpbgogRmVsaXggWWFuCiBGZWxpeCB2b24gTGVpdG5lcgogRmVuZyBUdQorRmxhdmlvIE1lZGVpcm9zCiBGbG9yaWFuIFNjaG9wcG1hbm4KIEZsb3JpYW4gV2VpbWVyCiBGb3JyZXN0IENhaG9vbgorRnJhbmNpc2NvIE1vcmFlcwogRnJhbmsgR2V2YWVydHMKIEZyYW5rIEhlbXBlbAogRnJhbmsgS2VlbmV5CkBAIC00MzcsNiArNDczLDcgQEAKIEdsZW4gTmFrYW11cmEKIEdsZW4gU2NvdHQKIEdsZW5uIFNoZXJpZGFuCitHb29nbGUgSW5jLgogR29yZG9uIE1hcmxlcgogR29yaWxsYSBNYWd1aWxhCiBHcmFudCBFcmlja3NvbgpAQCAtNDUzLDYgKzQ5MCw3IEBACiBHdWlsbGF1bWUgQXJsdWlzb24KIEd1bnRlciBLbmF1ZgogR3VzdGFmIEh1aQorR3VzdGF2byBHcmllY28KIEd3ZW5vbGUgQmVhdWNoZXNuZQogR8O2a2hhbiDFnmVuZ8O8bgogR8O2dHogQmFiaW4tRWJlbGwKQEAgLTQ3Myw2ICs1MTEsNyBAQAogSGVpbnJpY2ggU2NoYWVmZXIKIEhlbHdpbmcgTHV0egogSGVuZHJpayBWaXNhZ2UKK0hlbnJpayBHYcOfbWFubgogSGVucmlrIFN0b3JuZXIKIEhlbnJ5IEx1ZGVtYW5uCiBIZXJ2ZSBBbWJsYXJkCkBAIC00OTcsOSArNTM2LDExIEBACiBJbGd1aXogTGF0eXBvdgogSWxqYSB2YW4gU3BydW5kZWwKIEltbWFudWVsIEdyZWdvaXJlCitJbmNhIFIKIEluZ21hciBSdW5nZQogSW5nbyBSYWxmIEJsdW0KIEluZ28gV2lsa2VuCitJcmZhbiBBZGlsb3ZpYwogSXNhYWMgQm91a3JpcwogSXNoYW4gU2luZ2hMZXZldHQKIEl2byBCZWxsaW4gU2FsYXJpbgpAQCAtNTA3LDcgKzU0OCw5IEBACiBKYWNreSBMYW0KIEphY29iIE1ldXNlcgogSmFjb2IgTW9zaGVua28KK0phY3RyeSBaZW5nCiBKYWQgQ2hhbWNoYW0KK0phaW1lIEZ1bGxhb25kbwogSmFrdWIgWmFrcnpld3NraQogSmFtZXMgQnVyc2EKIEphbWVzIENoZW5nCkBAIC01MzUsNiArNTc4LDcgQEAKIEphc29uIE1jRG9uYWxkCiBKYXNvbiBTLiBQcmllYmUKIEphdmllciBCYXJyb3NvCitKYXZpZXIgRy4gU29nbwogSmF5IEF1c3RpbgogSmF5ZXNoIEEgU2hhaAogSmF6IEZyZXNoCkBAIC01NTQsNiArNTk4LDcgQEAKIEplZmYgUGhpbGxpcHMKIEplZmYgUG9obG1leWVyCiBKZWZmIFdlYmVyCitKZWZmcmV5IFdhbHRvbgogSmVucyBSYW50aWwKIEplcmVteSBGcmllc25lcgogSmVyZW15IEh1ZGRsZXN0b24KQEAgLTU2OCw2ICs2MTMsNyBAQAogSmVzIEJhZHdhbAogSmVzcGVyIEplbnNlbgogSmVzc2UgTm9sbGVyCitKZXNzZSBUYW4KIEppZSBIZQogSmltIERyYXNoCiBKaW0gRnJlZW1hbgpAQCAtNTkwLDYgKzYzNiw3IEBACiBKb2hhbiB2YW4gU2Vsc3QKIEpvaGFubmVzIEJhdWVyCiBKb2hhbm5lcyBFcm5zdAorSm9oYW5uZXMgU2NoaW5kZWxpbgogSm9obiBCcmFkc2hhdwogSm9obiBDb2ZmZXkKIEpvaG4gQ3JvdwpAQCAtNjAwLDEzICs2NDcsMTYgQEAKIEpvaG4gSmFuc3NlbgogSm9obiBKb3NlcGggQmFjaGlyCiBKb2huIEtlbGx5CitKb2huIEtvaGwKIEpvaG4gTGFzaworSm9obiBMZXZvbgogSm9obiBMaWdodHNleQogSm9obiBNYXJpbm8KIEpvaG4gTWFyc2hhbGwKIEpvaG4gTWNHb3dhbgogSm9obiBQLiBNY0Nhc2tleQogSm9obiBTdXByb2NrCitKb2huIFdhbmdodWkKIEpvaG4gV2lsa2luc29uCiBKb2huLU1hcmsgQmVsbAogSm9obm55IEx1b25nCkBAIC02MTksNiArNjY5LDcgQEAKIEpvbiBUcmF2aXMKIEpvbiBUdXJuZXIKIEpvbmFzIEZvcnNtYW4KK0pvbmFzIE1pbm5iZXJnCiBKb25hcyBTY2huZWxsaQogSm9uYXRhbiBMYW5kZXIKIEpvbmF0YW4gVmVsYQpAQCAtNjI3LDYgKzY3OCw3IEBACiBKb25hdGhhbiBIc2V1CiBKb25hdGhhbiBOaWVkZXIKIEpvbmdraSBTdXdhbmRpCitKb29uYXMgS3VvcmlsZWh0bwogSm9zZSBBbGYKIEpvc2UgS2FoYW4KIEpvc2VmIFdvbGYKQEAgLTYzNiw2ICs2ODgsNyBAQAogSnVhbiBCYXJyZXRvCiBKdWFuIEYuIENvZGFnbm9uZQogSnVhbiBJZ25hY2lvIEhlcnbDoXMKK0p1YW4gUlAKIEp1ZHNvbiBCaXNob3AKIEp1ZXJnZW4gV2lsa2UKIEp1a2thIFBpaGwKQEAgLTY0Nyw2ICs3MDAsNyBAQAogSnVsaWVuIFJveWVyCiBKdW4taWNoaXJvIGl0b2p1biBIYWdpbm8KIEp1cmlqIFNtYWtvdgorSnVzdGluIEVobGVydAogSnVzdGluIEZsZXRjaGVyCiBKdXN0aW4gS2FybmVnZXMKIEp1c3RpbiBNYWdnYXJkCkBAIC02NTQsMTUgKzcwOCwxOCBAQAogSsO2cm4gSGFydHJvdGgKIEsuIFIuIFdhbGtlcgogS2FpIEVuZ2VydAorS2FpIE5vZGEKIEthaSBTb21tZXJmZWxkCiBLYWktVXdlIFJvbW1lbAogS2FsbGUgVmFobG1hbgogS2FtaWwgRHVka2EKK0thbmcgTGluCiBLYW5nLUppbiBMZWUKIEthcmwgTW9lcmRlcgogS2Fyb2wgUGlldHJ6YWsKIEthc3BhciBCcmFuZAogS2F0aWUgV2FuZworS2F6dWhvIE9rdQogS2VlcyBDb29rCiBLZWl0aCBNYWNEb25hbGQKIEtlaXRoIE1jR3VpZ2FuCkBAIC02ODksNiArNzQ2LDcgQEAKIEtyaXN0ZXIgSm9oYW5zZW4KIEtyaXN0aWFuIEd1bnN0b25lCiBLcmlzdGlhbiBLw7ZobnRvcHAKK0t1cnQgRmFua2hhdXNlcgogS3lsZSBKLiBNY0theQogS3lsZSBMLiBIdWZmCiBLeWxlIFNhbGxlZQpAQCAtNzA1LDYgKzc2Myw3IEBACiBMYXJzIFRvcmJlbiBXaWxzb24KIExhdSBIYW5nIEtpbgogTGF1cmVudCBSYWJyZXQKK0xhdXJpIEthc2FuZW4KIExlZ29mZiBWaW5jZW50CiBMZWhlbCBCZXJuYWR0CiBMZWlmIFcKQEAgLTcyMCw2ICs3NzksOCBAQAogTGluZGxleSBGcmVuY2gKIExpbmcgVGhpbwogTGludXMgTmllbHNlbiBGZWx0emluZworTGludXMgTm9yZGJlcmcKK0xpb3IgS2FwbGFuCiBMaXNhIFh1CiBMaXZpdSBDaGlyY3UKIExpemEgQWxlbmNoZXJ5CkBAIC03MzIsNiArNzkzLDggQEAKIEx1Y2FzIFBhcmR1ZQogTHVkZWsgRmluc3RybGUKIEx1ZG92aWNvIENhdmVkb24KK0x1ZHdpZyBOdXNzZWwKK0x1a2FzIFJ1emlja2EKIEx1a2FzeiBDemVraWVyZGEKIEx1a2UgQW1lcnkKIEx1a2UgQ2FsbApAQCAtNzQyLDYgKzgwNSw4IEBACiBNYWNpZWogUHV6aW8KIE1hY2llaiBXLiBSb3p5Y2tpCiBNYWtzIE5hdW1vdgorTWFrc2ltIEt1emV2YW5vdgorTWFrc2ltIFN0c2VwYW5lbmthCiBNYW1vcnUgVGFzYWthCiBNYW5keSBXdQogTWFuZnJlZCBTY2h3YXJiCkBAIC03NzksNiArODQ0LDcgQEAKIE1hcmt1cyBLb2V0dGVyCiBNYXJrdXMgTW9lbGxlcgogTWFya3VzIE9iZXJodW1lcgorTWFycXVpcyBkZSBNdWVzbGkKIE1hcnRpam4gS29zdGVyCiBNYXJ0aW4gQy4gTWFydGluCiBNYXJ0aW4gRHJhc2FyCkBAIC04MjUsNyArODkxLDkgQEAKIE1pY2hhZWwgR29mZmlvdWwKIE1pY2hhZWwgSmFobgogTWljaGFlbCBKZXJyaXMKK01pY2hhZWwgS2FsaW5pbgogTWljaGFlbCBLYXVmbWFubgorTWljaGFlbCBLw7ZuaWcKIE1pY2hhZWwgTWVhbGxpbmcKIE1pY2hhZWwgTXVlbGxlcgogTWljaGFlbCBPc2lwb3YKQEAgLTgzNSw4ICs5MDMsMTAgQEAKIE1pY2hhZWwgV2FsbG5lcgogTWljaGFsIEJvbmlubwogTWljaGFsIE1hcmVrCitNaWNoYcWCIEZpdGEKIE1pY2hhxYIgR8Ozcm55CiBNaWNoYcWCIEtvd2FsY3p5aworTWljaGHFgiBQaWVjaG93c2tpCiBNaWNoZWwgUHJvbW9uZXQKIE1pY2hlbGUgQmluaQogTWlndWVsIEFuZ2VsCkBAIC04NjIsMTIgKzkzMiwxNCBAQAogTW9oYW1tYWQgQWxTYWxlaAogTW9odW4gQmlzd2FzCiBNb3N0eW4gQnJhbWxleS1Nb29yZQorTW90aSBBdnJhaGFtaQogTXlrIFRheWxvcgogTmFjaCBNLiBTLgogTmFnYWkgSAogTmF0aGFuIENvdWx0ZXIKIE5hdGhhbiBPJ1N1bGxpdmFuCiBOYXRoYW5hZWwgTmVyb2RlCitOYXRoYW5pZWwgV2Fpc2Jyb3QKIE5hdmVlbiBDaGFuZHJhbgogTmF2ZWVuIE5vZWwKIE5laWwgQm93ZXJzCkBAIC04OTQsMTUgKzk2NiwyMCBAQAogTm9idWhpcm8gQmFuCiBOb2RhayBTb2RhawogTm9yYmVydCBGcmVzZQorTm9yYmVydCBLZXR0CiBOb3JiZXJ0IE5vdm90bnkKK09jdGF2aW8gU2Nocm9lZGVyCiBPZmVyCiBPbGEgTW9yawogT2xhZiBGbGViYmUKIE9sYWYgU3TDvGJlbgorT2xlZyBQdWRleWV2CiBPbGl2ZXIgR29uZMW+YQorT2xpdmVyIEdyYXV0ZQogT2xpdmVyIEt1Y2tlcnR6CiBPbGl2ZXIgU2NoaW5kbGVyCiBPbGl2aWVyIEJlcmdlcgorT3JhbmdlIFRzYWkKIE9yZW4gU291cm91am9uCiBPcmVuIFRpcm9zaAogT3JnYWQgU2hhbmVoCkBAIC05NDQsNiArMTAyMSw3IEBACiBQYXdlbCBLaWVyc2tpCiBQZWRybyBMYXJyb3kKIFBlZHJvIE5ldmVzCitQZXIgTWFsbWJlcmcKIFBldGVyIEJyYXkKIFBldGVyIEZvcnJldAogUGV0ZXIgR2FsCkBAIC05OTEsNiArMTA2OSw3IEBACiBRdWlubiBTbGFjawogUmFkdSBTaW1pb25lc2N1CiBSYWZhIE11eW8KK1JhZmFlbCBBbnRvbmlvCiBSYWZhZWwgU2FndWxhCiBSYWZheWVsIE1rcnRjaHlhbgogUmFmYcOrbCBDYXJyw6kKQEAgLTk5OCw2ICsxMDc3LDcgQEAKIFJhaW5lciBKdW5nCiBSYWluZXIgS29lbmlnCiBSYWplc2ggTmFnYW5hdGhhbgorUmFqa3VtYXIgTWFuZGFsCiBSYWxmIFMuIEVuZ2Vsc2NoYWxsCiBSYWxwaCBCZWNrbWFubgogUmFscGggTWl0Y2hlbGwKQEAgLTEwMDcsNiArMTA4Nyw3IEBACiBSYXkgRGFzc2VuCiBSYXkgUGVrb3dza2kKIFJheSBTYXRpcm8KK1JhenZhbiBDb2pvY2FydQogUmVpbm91dCB2YW4gU2Nob3V3ZW4KIFJlbWkgR2Fjb2duZQogUmVuYXRvIEJvdGVsaG8KQEAgLTEwMjcsMTAgKzExMDgsMTIgQEAKIFJpY2hhcmQgQ2xheXRvbgogUmljaGFyZCBDb29wZXIKIFJpY2hhcmQgR29ydG9uCitSaWNoYXJkIEhvc2tpbmcKIFJpY2hhcmQgTWljaGFlbAogUmljaGFyZCBNb29yZQogUmljaGFyZCBQcmVzY290dAogUmljaGFyZCBTaWx2ZXJtYW4KK1JpY2hhcmQgdmFuIGRlbiBCZXJnCiBSaWNrIEpvbmVzCiBSaWNrIFJpY2hhcmRzb24KIFJvYiBDcml0dGVuZGVuCkBAIC0xMDUxLDkgKzExMzQsMTEgQEAKIFJvYmluIEpvaG5zb24KIFJvYmluIEtheQogUm9ic29uIEJyYWdhIEFyYXVqbworUm9kIFdpZGRvd3NvbgogUm9kbmV5IFNpbW1vbnMKIFJvZHJpYyBHbGFzZXIKIFJvZHJpZ28gU2lsdmEKK1JvZ2VyIExlaWdoCiBSb2xhbmQgQmxvbQogUm9sYW5kIEtyaWthdmEKIFJvbGFuZCBaaW1tZXJtYW5uCkBAIC0xMDc4LDYgKzExNjMsNyBAQAogU2FsdmF0b3JlIFNvcnJlbnRpbm8KIFNhbSBEZWFuZQogU2FtIEh1cnN0CitTYW0gUm90aAogU2FtIFNjaGFua2VuCiBTYW1wbyBLZWxsb21ha2kKIFNhbXVlbCBEw61heiBHYXJjw61hCkBAIC0xMDk3LDIzICsxMTgzLDI3IEBACiBTY290dCBEYXZpcwogU2NvdHQgTWNDcmVhcnkKIFNlYW4gQm91ZHJlYXUKK1NlYmFzdGlhbiBQb2hsc2NobWlkdAogU2ViYXN0aWFuIFJhc211c3NlbgogU2VudGhpbCBSYWphIFZlbHUKIFNlcmdlaSBOaWt1bG92CiBTZXJnZXkgVGF0YXJpbmNldgogU2VyZ2lvIEJhbGxlc3RyZXJvCiBTZXNodWJhYnUgUGFzYW0KK1NldGggTW9zCiBTaCBEaWFvCiBTaGFvIFNodWNoYW8KIFNoYXJhZCBHdXB0YQogU2hhcmQKIFNoYXduIExhbmRkZW4KIFNoYXduIFBvdWxzb24KK1NoaW5lIEZhbgogU2htdWxpayBSZWdldgogU2lkZGhhcnRoYSBQcmFrYXNoIEphaW4KLVNpZG5leSBTYW4gTWFydGluCitTaWRuZXkgU2FuIE1hcnTDrW4KIFNpZWdmcmllZCBHeXVyaWNza28KIFNpbW9uIERpY2sKK1NpbW9uIEguCiBTaW1vbiBKb3NlZnNzb24KIFNpbW9uIExpdQogU29uZyBNYQpAQCAtMTE1NywxNiArMTI0NywyMSBAQAogU3ZlbiBBbmRlcnMKIFN2ZW4gTmV1aGF1cwogU3ZlbiBXZWdlbmVyCitTdnlhdG9zbGF2IE1pc2h5bgogU3ltZW9uIFBhcmFzY2hvdWRpcwogU8OpYmFzdGllbiBXaWxsZW1pam5zCiBULiBCaGFyYXRoCiBULiBZYW1hZGEKK1RKIFNhdW5kZXJzCiBUYWUgSHlvdW5nIEFobgotVGFuZWxpIFZhaGFrYW5nYXMKK1RhbmVsaSBWw6Row6RrYW5nYXMKIFRhbmd1eSBGYXV0cmUKIFRhdHN1aGlybyBUc3VqaWthd2EKIFRlbXByaW11cworVGVycmkgT2RhCitUaGVvZG9yZSBEdWJvaXMKIFRob21hcyBCcmF1bgorVGhvbWFzIEdsYW56bWFubgogVGhvbWFzIEouIE1vb3JlCiBUaG9tYXMgS2xhdXNuZXIKIFRob21hcyBMLiBTaGlubmljawpAQCAtMTE3NCw2ICsxMjY5LDcgQEAKIFRob21hcyBSdWVja2VyCiBUaG9tYXMgU2Nod2luZ2UKIFRob21hcyBUb25pbm8KK1Rob3JzdGVuIFNjaMO2bmluZwogVGlpdCBQaWttYQogVGlsbCBNYWFzCiBUaW0gQW5zZWxsCkBAIC0xMTg0LDEwICsxMjgwLDEyIEBACiBUaW0gSGFyZGVyCiBUaW0gSGVja21hbgogVGltIE5ld3NvbWUKLVRpbSBSdWVoc2VuCitUaW0gUsO8aHNlbgogVGltIFNuZWRkb24KK1RpbSBTdGFjawogVGltIFN0YXJsaW5nCiBUaW1vIFNpcmFpbmVuCitUaW1vdGVqIExhemFyCiBUaW51cyB2YW4gZGVuIEJlcmcKIFRvYmlhcyBNYXJrdXMKIFRvYmlhcyBSdW5kc3Ryw7ZtCkBAIC0xMTk1LDcgKzEyOTMsNiBAQAogVG9ieSBQZXRlcnNvbgogVG9kZCBBIE91c2thCiBUb2RkIEt1bGVzemEKLVRvZGQgT3Vza2EKIFRvZGQgVmllcmxpbmcKIFRvbSBCZW5vaXN0CiBUb20gRG9ub3ZhbgpAQCAtMTIwOSw2ICsxMzA2LDcgQEAKIFRvbSBXcmlnaHQKIFRvbSBaZXJ1Y2hhCiBUb21hcyBIb2dlcgorVG9tYXMgSmFrb2Jzc29uCiBUb21hcyBNbGNvY2gKIFRvbWFzIFBvc3Bpc2VrCiBUb21hcyBTemVwZQpAQCAtMTIyNSw2ICsxMzIzLDcgQEAKIFRvc2hpbyBLdXJhdG9taQogVG9zaGl5dWtpIE1hZXphd2EKIFRyYWlhbiBOaWNvbGVzY3UKK1RyYXZpcyBCdXJ0cnVtCiBUcm9lbHMgV2Fsc3RlZCBIYW5zZW4KIFRyb3kgRW5nZWwKIFR1cG9uZSBBbGZyZWRvCkBAIC0xMjU1LDkgKzEzNTQsMTEgQEAKIFZvanRlY2ggTWluYXJpawogVm9qdMSbY2ggS3LDoWwKIFZzZXZvbG9kIE5vdmlrb3YKK1cuIE1hcmsgS3ViYWNraQogV2FsZGVrIEtvemJhCiBXYWx0ZXIgSi4gTWFjawogV2FyZCBXaWxsYXRzCitXYXJwIEthd2FkYQogV2FycmVuIE1lbnplcgogV2F5bmUgSGFpZ2gKIFdlcm5lciBLb2NoCkBAIC0xMjcyLDYgKzEzNzMsNyBAQAogV291dGVyIFZhbiBSb295CiBXdSBZb25nemhlbmcKIFhhdmllciBCb3VjaG91eAorWGlhbmdiaW4gTGkKIFlhYWtvdiBTZWxrb3dpdHoKIFlhbWFkYSBZYXN1aGFydQogWWFuZyBUc2UKQEAgLTEyOTEsNyArMTM5MywxOCBAQAogWmVrdW4gTmkKIFptZXkgUGV0cm9mZgogWnZpIEhhcidFbAorYXNhdmFoIG9uIGdpdGh1YgorYmF1bWFuaiBvbiBnaXRodWIKK2JzYW1tb24gb24gZ2l0aHViCitka2pqcjg5IG9uIGdpdGh1YgorZVhlQzY0IG9uIGdpdGh1YgoranZlYXpleSBvbiBnaXRodWIKK2tyZXNoYW5vIG9uIGdpdGh1YgorbWFyYy1ncm91bmRjdGwgb24gZ2l0aHViCituZWV4IG9uIGdpdGh1YgogbmsKK3NpbHZlamExIG9uIGdpdGh1Ygogc3dhbGthdXMgYXQgeWFob28uY29tCiB0b21taW5rW2F0XXBvc3QucGwKK8WgdGVmYW4gS3JlbWXFiAog0J3QuNC60LjRgtCwINCU0L7RgNC+0YXQuNC9CmRpZmYgLS1naXQgYS9kb2NzL1RIQU5LUy1maWx0ZXIgYi9kb2NzL1RIQU5LUy1maWx0ZXIKaW5kZXggMzlhOGE0Yy4uZGVmZDYwNSAxMDA2NDQKLS0tIGEvZG9jcy9USEFOS1MtZmlsdGVyCisrKyBiL2RvY3MvVEhBTktTLWZpbHRlcgpAQCAtNDgsNSArNDgsMjMgQEAKIHMvdGV0ZXRlc3QgdGV0ZXRlc3QvLwogcy9KacWZw60gSHJ1xaFrYS9KaXJpIEhydXNrYS8KIHMvVmlrdG9yIFN6YWthdHMvVmlrdG9yIFN6YWvDoXRzLwotcy9Kb25hdGhhbiBDYXJkb3NvL0pvbmF0aGFuIENhcmRvc28gTWFjaGFkby8KLXMvTGludXMgTmllbHNlbi9MaW51cyBOaWVsc2VuIEZlbHR6aW5nLworcy9Kb25hdGhhbiBDYXJkb3NvJC9Kb25hdGhhbiBDYXJkb3NvIE1hY2hhZG8vCitzL0xpbnVzIE5pZWxzZW4kL0xpbnVzIE5pZWxzZW4gRmVsdHppbmcvCitzL1RvZGQgT3Vza2EkL1RvZGQgQSBPdXNrYS8KK3MvVGltIFJ1ZWhzZW4vVGltIFLDvGhzZW4vCitzL01pY2hhZWwgS29lbmlnL01pY2hhZWwgS8O2bmlnLworcy9tb3BhcmlzdGhlYmVzdC9UcmF2aXMgQnVydHJ1bS8KK3MvSmFuLUUvSmFuIEVocmhhcmR0Lworcy9QYXJhcyBTJC9QYXJhcyBTZXRoaWEvCitzL0NyaXN0aWFuIFJvZHJceEVEZ3VleiQvQ3Jpc3RpYW4gUm9kcsOtZ3Vlei8KK3MvU2lkbmV5IFNhbiBNYXJ0XHhFRG4kL1NpZG5leSBTYW4gTWFydMOtbi8KK3MvU2lkbmV5IFNhbiBNYXJ0aW4kL1NpZG5leSBTYW4gTWFydMOtbi8KK3MvVGFuZWxpIFZceEU0aFx4RTRrYW5nYXMkL1RhbmVsaSBWw6Row6RrYW5nYXMvCitzL1RhbmVsaSBWYWhha2FuZ2FzJC9UYW5lbGkgVsOkaMOka2FuZ2FzLworcy/QndC40LrQuNGC0LAg0JTQvtGA0L7RhdC40L0uL9Cd0LjQutC40YLQsCDQlNC+0YDQvtGF0LjQvS8KK3MvdXBzdHJlYW0gdGVzdHMgMzA1Ly8KK3MvIChlZGl0ZWQpLy8KK3MvSmVhbi1QaGlsaXBwZSBCYXJldHRlLUxhUGllcnJlJC9KZWFuLVBoaWxpcHBlIEJhcnJldHRlLUxhUGllcnJlLworcy9Kb2VybiBIYXJ0cm90aCQvSsO2cm4gSGFydHJvdGgvCitzL0hvbmdsaSBMYWkgKFBodXNpb24pJC9Ib25nbGkgTGFpLworcy9naXRodWIgdXNlciAna3Jlc2hhbm8nJC9rcmVzaGFubyBvbiBnaXRodWIvCmRpZmYgLS1naXQgYS9kb2NzL1RPRE8gYi9kb2NzL1RPRE8KaW5kZXggNjViZjJmZi4uZjNiMDYwMCAxMDA2NDQKLS0tIGEvZG9jcy9UT0RPCisrKyBiL2RvY3MvVE9ETwpAQCAtMjUsMTEgKzI1LDIxIEBACiAgMS43IERldGVjdCB3aGVuIGNhbGxlZCBmcm9tIHdpdGhpbiBjYWxsYmFja3MKICAxLjggQWxsb3cgU1NMIChIVFRQUykgdG8gcHJveHkKICAxLjkgQ2FjaGUgbmVnYXRpdmUgbmFtZSByZXNvbHZlcworIDEuMTAgU3VwcG9ydCBJRE5BMjAwOAorIDEuMTEgbWluaW1pemUgZGVwZW5kZW5jaWVzIHdpdGggZHluYW1pY2x5IGxvYWRlZCBtb2R1bGVzCisgMS4xMiBoYXZlIGZvcm0gZnVuY3Rpb25zIHVzZSBDVVJMIGhhbmRsZSBhcmd1bWVudAorIDEuMTMgQWRkIENVUkxPUFRfTUFJTF9DTElFTlQgb3B0aW9uCisgMS4xNCBUeXBlc2FmZSBjdXJsX2Vhc3lfc2V0b3B0KCkKKyAxLjE1IFRDUCBGYXN0IE9wZW4KKyAxLjE2IFRyeSB0byBVUkwgZW5jb2RlIGdpdmVuIFVSTAorIDEuMTcgQWRkIHN1cHBvcnQgZm9yIElSSXMKIAogIDIuIGxpYmN1cmwgLSBtdWx0aSBpbnRlcmZhY2UKICAyLjEgTW9yZSBub24tYmxvY2tpbmcKLSAyLjIgRml4IEhUVFAgUGlwZWxpbmluZyBmb3IgUFVUCi0gMi4zIEJldHRlciBzdXBwb3J0IGZvciBzYW1lIG5hbWUgcmVzb2x2ZXMKKyAyLjIgQmV0dGVyIHN1cHBvcnQgZm9yIHNhbWUgbmFtZSByZXNvbHZlcworIDIuMyBOb24tYmxvY2tpbmcgY3VybF9tdWx0aV9yZW1vdmVfaGFuZGxlKCkKKyAyLjQgU3BsaXQgY29ubmVjdCBhbmQgYXV0aGVudGljYXRpb24gcHJvY2VzcworIDIuNSBFZGdlLXRyaWdnZXJlZCBzb2NrZXRzIHNob3VsZCB3b3JrCiAKICAzLiBEb2N1bWVudGF0aW9uCiAgMy4xIFVwZGF0ZSBkYXRlIGFuZCB2ZXJzaW9uIGluIG1hbiBwYWdlcwpAQCAtNTAsNiArNjAsNyBAQAogIDUuNCBTUERZCiAgNS41IGF1dGg9IGluIFVSTHMKICA1LjYgUmVmdXNlICJkb3duZ3JhZGUiIHJlZGlyZWN0cworIDUuNyBNb3JlIGNvbXByZXNzaW9ucwogCiAgNi4gVEVMTkVUCiAgNi4xIGRpdGNoIHN0ZGluCkBAIC02MCwyMiArNzEsMjMgQEAKICA3LiBTTVRQCiAgNy4xIFBpcGVsaW5pbmcKICA3LjIgRW5oYW5jZWQgY2FwYWJpbGl0eSBzdXBwb3J0Ci0gCisKICA4LiBQT1AzCiAgOC4xIFBpcGVsaW5pbmcKICA4LjIgRW5oYW5jZWQgY2FwYWJpbGl0eSBzdXBwb3J0Ci0gCisKICA5LiBJTUFQCiAgOS4xIEVuaGFuY2VkIGNhcGFiaWxpdHkgc3VwcG9ydAotIAorCiAgMTAuIExEQVAKICAxMC4xIFNBU0wgYmFzZWQgYXV0aGVudGljYXRpb24gbWVjaGFuaXNtcwotIAorCiAgMTEuIFNNQgogIDExLjEgRmlsZSBsaXN0aW5nIHN1cHBvcnQKICAxMS4yIEhvbm9yIGZpbGUgdGltZXN0YW1wcwogIDExLjMgVXNlIE5UTE12MgotIAorIDExLjQgQ3JlYXRlIHJlbW90ZSBkaXJlY3RvcmllcworCiAgMTIuIE5ldyBwcm90b2NvbHMKICAxMi4xIFJTWU5DCiAKQEAgLTEwMSw4ICsxMTMsOSBAQAogIDE2LiBTQVNMCiAgMTYuMSBPdGhlciBhdXRoZW50aWNhdGlvbiBtZWNoYW5pc21zCiAgMTYuMiBBZGQgUU9QIHN1cHBvcnQgdG8gR1NTQVBJIGF1dGhlbnRpY2F0aW9uCi0gCi0gMTcuIENsaWVudAorIDE2LjMgU3VwcG9ydCBiaW5hcnkgbWVzc2FnZXMgKGkuZS46IG5vbi1iYXNlNjQpCisKKyAxNy4gQ29tbWFuZCBsaW5lIHRvb2wKICAxNy4xIHN5bmMKICAxNy4yIGdsb2IgcG9zdHMKICAxNy4zIHByZXZlbnQgZmlsZSBvdmVyd3JpdGluZwpAQCAtMTEyLDYgKzEyNSwxMSBAQAogIDE3Ljcgd2FybmluZyB3aGVuIHNlbmRpbmcgYmluYXJ5IG91dHB1dCB0byB0ZXJtaW5hbAogIDE3Ljggb2ZmZXIgY29sb3ItY29kZWQgSFRUUCBoZWFkZXIgb3V0cHV0CiAgMTcuOSBDaG9vc2UgdGhlIG5hbWUgb2YgZmlsZSBpbiBicmFjZXMgZm9yIGNvbXBsZXggVVJMcworIDE3LjEwIGltcHJvdmUgaG93IGN1cmwgd29ya3MgaW4gYSB3aW5kb3dzIGNvbnNvbGUgd2luZG93CisgMTcuMTEgLXcgb3V0cHV0IHRvIHN0ZGVycgorIDE3LjEyIGtlZXAgcnVubmluZywgcmVhZCBpbnN0cnVjdGlvbnMgZnJvbSBwaXBlL3NvY2tldAorIDE3LjEzIHN1cHBvcnQgbWV0YWxpbmsgaW4gaHR0cCBoZWFkZXJzCisgMTcuMTQgLS1mYWlsIHdpdGhvdXQgLS1sb2NhdGlvbiBzaG91bGQgdHJlYXQgM3h4IGFzIGEgZmFpbHVyZQogCiAgMTguIEJ1aWxkCiAgMTguMSByb2ZmaXQKQEAgLTEyMiw2ICsxNDAsNyBAQAogIDE5LjMgbW9yZSBwcm90b2NvbHMgc3VwcG9ydGVkCiAgMTkuNCBtb3JlIHBsYXRmb3JtcyBzdXBwb3J0ZWQKICAxOS41IEFkZCBzdXBwb3J0IGZvciBjb25jdXJyZW50IGNvbm5lY3Rpb25zCisgMTkuNiBVc2UgdGhlIFJGQzYyNjUgdGVzdCBzdWl0ZQogCiAgMjAuIE5leHQgU09OQU1FIGJ1bXAKICAyMC4xIGh0dHAtc3R5bGUgSEVBRCBvdXRwdXQgZm9yIEZUUApAQCAtMTM3LDggKzE1Niw2IEBACiAgMjEuNiByZW1vdmUgQ1VSTE9QVF9ETlNfVVNFX0dMT0JBTF9DQUNIRQogIDIxLjcgcmVtb3ZlIHByb2dyZXNzIG1ldGVyIGZyb20gbGliY3VybAogIDIxLjggcmVtb3ZlICdjdXJsX2h0dHBwb3N0JyBmcm9tIHB1YmxpYwotIDIxLjkgaGF2ZSBmb3JtIGZ1bmN0aW9ucyB1c2UgQ1VSTCBoYW5kbGUgYXJndW1lbnQKLSAyMS4xMCBBZGQgQ1VSTE9QVF9NQUlMX0NMSUVOVCBvcHRpb24KIAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKQEAgLTE2Myw3ICsxODAsNyBAQAogIHNpZ25hbCBoYW5kbGVyIGJhY2sgaW50byB0aGUgbGlicmFyeSB3aXRoIGEgc2lnc2V0am1wLCB3aGljaCBlZmZlY3RpdmVseQogIGNhdXNlcyBsaWJjdXJsIHRvIGNvbnRpbnVlIHJ1bm5pbmcgd2l0aGluIHRoZSBzaWduYWwgaGFuZGxlci4gVGhpcyBpcwogIG5vbi1wb3J0YWJsZSBhbmQgY291bGQgY2F1c2UgcHJvYmxlbXMgb24gc29tZSBwbGF0Zm9ybXMuIEEgZGlzY3Vzc2lvbiBvbiB0aGUKLSBwcm9ibGVtIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMDgtMDkvMDE5Ny5odG1sCisgcHJvYmxlbSBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvbWFpbC9saWItMjAwOC0wOS8wMTk3Lmh0bWwKIAogIEFsc28sIGFsYXJtKCkgcHJvdmlkZXMgdGltZW91dCByZXNvbHV0aW9uIG9ubHkgdG8gdGhlIG5lYXJlc3Qgc2Vjb25kLiBhbGFybQogIG91Z2h0IHRvIGJlIHJlcGxhY2VkIGJ5IHNldGl0aW1lciBvbiBzeXN0ZW1zIHRoYXQgc3VwcG9ydCBpdC4KQEAgLTIxOCw2ICsyMzUsODIgQEAKICBBIG5hbWUgcmVzb2x2ZSB0aGF0IGhhcyBmYWlsZWQgaXMgbGlrZWx5IHRvIGZhaWwgd2hlbiBtYWRlIGFnYWluIHdpdGhpbiBhCiAgc2hvcnQgcGVyaW9kIG9mIHRpbWUuIEN1cnJlbnRseSB3ZSBvbmx5IGNhY2hlIHBvc2l0aXZlIHJlc3BvbnNlcy4KIAorMS4xMCBTdXBwb3J0IElETkEyMDA4CisKKyBJbnRlcm5hdGlvbmFsIERvbWFpbiBOYW1lcyBhcmUgc3VwcG9ydGVkIGluIGxpYmN1cmwgc2luY2UgeWVhcnMgYmFjaywgcG93ZXJlZAorIGJ5IGxpYmlkbi4gbGliaWRuIGltcGxlbWVudHMgSUROQTIwMDMgd2hpY2ggaGFzIGJlZW4gc3VwZXJzZWRlZCBieSBJRE5BMjAwOC4KKyBsaWJpZG4yIGlzIGFuIGV4aXN0aW5nIGxpYnJhcnkgb2ZmZXJpbmcgc3VwcG9ydCBmb3IgSUROQTIwMDguCisKKzEuMTEgbWluaW1pemUgZGVwZW5kZW5jaWVzIHdpdGggZHluYW1pY2x5IGxvYWRlZCBtb2R1bGVzCisKKyBXZSBjYW4gY3JlYXRlIGEgc3lzdGVtIHdpdGggbG9hZGFibGUgbW9kdWxlcy9wbHVnLWlucywgd2hlcmUgdGhlc2UgbW9kdWxlcworIHdvdWxkIGJlIHRoZSBvbmVzIHRoYXQgbGluayB0byAzcmQgcGFydHkgbGlicy4gVGhhdCB3b3VsZCBhbGxvdyB1cyB0byBhdm9pZAorIGhhdmluZyB0byBsb2FkIEFMTCBkZXBlbmRlbmNpZXMgc2luY2Ugb25seSB0aGUgbmVjZXNzYXJ5IG9uZXMgZm9yIHRoaXMKKyBhcHAvaW52b2tlL3VzZWQgcHJvdG9jb2xzIHdvdWxkIGJlIG5lY2Vzc2FyeSB0byBsb2FkLiAgU2VlCisgaHR0cHM6Ly9naXRodWIuY29tL2N1cmwvY3VybC9pc3N1ZXMvMzQ5CisKKzEuMTIgaGF2ZSBmb3JtIGZ1bmN0aW9ucyB1c2UgQ1VSTCBoYW5kbGUgYXJndW1lbnQKKworIGN1cmxfZm9ybWFkZCgpIGFuZCBjdXJsX2Zvcm1nZXQoKSBib3RoIGN1cnJlbnRseSBoYXZlIG5vIENVUkwgaGFuZGxlCisgYXJndW1lbnQsIGJ1dCBib3RoIGNhbiB1c2UgYSBjYWxsYmFjayB0aGF0IGlzIHNldCBpbiB0aGUgZWFzeSBoYW5kbGUsIGFuZAorIHRodXMgY3VybF9mb3JtZ2V0KCkgd2l0aCBjYWxsYmFjayBjYW5ub3QgZnVuY3Rpb24gd2l0aG91dCBmaXJzdCBoYXZpbmcKKyBjdXJsX2Vhc3lfcGVyZm9ybSgpIChvciBzaW1pbGFyKSBjYWxsZWQgLSB3aGljaCBpcyBoYXJkIHRvIGdyYXNwIGFuZCBhIGRlc2lnbgorIG1pc3Rha2UuCisKKyBUaGUgY3VybF9mb3JtYWRkKCkgZGVzaWduIGNhbiBwcm9iYWJseSBhbHNvIGJlIHJlY29uc2lkZXJlZCB0byBtYWtlIGl0IGVhc2llcgorIHRvIHVzZSBhbmQgbGVzcyBlcnJvci1wcm9uZS4gUHJvYmFibHkgZWFzaWVzdCBieSBzcGxpdHRpbmcgaXQgaW50byBzZXZlcmFsCisgZnVuY3Rpb24gY2FsbHMuCisKKzEuMTMgQWRkIENVUkxPUFRfTUFJTF9DTElFTlQgb3B0aW9uCisKKyBSYXRoZXIgdGhhbiB1c2UgdGhlIFVSTCB0byBzcGVjaWZ5IHRoZSBtYWlsIGNsaWVudCBzdHJpbmcgdG8gcHJlc2VudCBpbiB0aGUKKyBIRUxPIGFuZCBFSExPIGNvbW1hbmRzLCBsaWJjdXJsIHNob3VsZCBzdXBwb3J0IGEgbmV3IENVUkxPUFQgc3BlY2lmaWNhbGx5IGZvcgorIHNwZWNpZnlpbmcgdGhpcyBkYXRhIGFzIHRoZSBVUkwgaXMgbm9uLXN0YW5kYXJkIGFuZCB0byBiZSBob25lc3QgYSBiaXQgb2YgYQorIGhhY2sgOy0pCisKKyBQbGVhc2Ugc2VlIHRoZSBmb2xsb3dpbmcgdGhyZWFkIGZvciBtb3JlIGluZm9ybWF0aW9uOgorIGh0dHBzOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMTItMDUvMDE3OC5odG1sCisKKzEuMTQgVHlwZXNhZmUgY3VybF9lYXN5X3NldG9wdCgpCisKKyBPbmUgb2YgdGhlIG1vc3QgY29tbW9uIHByb2JsZW1zIGluIGxpYmN1cmwgdXNpbmcgYXBwbGljYXRpb25zIGlzIHRoZSBsYWNrIG9mCisgdHlwZSBjaGVja3MgZm9yIGN1cmxfZWFzeV9zZXRvcHQoKSB3aGljaCBoYXBwZW5zIGJlY2F1c2UgaXQgYWNjZXB0cyB2YXJhcmdzCisgYW5kIHRodXMgY2FuIHRha2UgYW55IHR5cGUuCisKKyBPbmUgcG9zc2libGUgc29sdXRpb24gdG8gdGhpcyBpcyB0byBpbnRyb2R1Y2UgYSBmZXcgZGlmZmVyZW50IHZlcnNpb25zIG9mIHRoZQorIHNldG9wdCB2ZXJzaW9uIGZvciB0aGUgZGlmZmVyZW50IGtpbmRzIG9mIGRhdGEgeW91IGNhbiBzZXQuCisKKyAgY3VybF9lYXN5X3NldF9udW0oKSAtIHNldHMgYSBsb25nIHZhbHVlCisKKyAgY3VybF9lYXN5X3NldF9sYXJnZSgpIC0gc2V0cyBhIGN1cmxfb2ZmX3QgdmFsdWUKKworICBjdXJsX2Vhc3lfc2V0X3B0cigpIC0gc2V0cyBhIHBvaW50ZXIKKworICBjdXJsX2Vhc3lfc2V0X2NiKCkgLSBzZXRzIGEgY2FsbGJhY2sgUExVUyBpdHMgY2FsbGJhY2sgZGF0YQorCisxLjE1IFRDUCBGYXN0IE9wZW4KKworIFJGQyA3NDEzIGRlZmluZXMgaG93IHRvIGluY2x1ZGUgZGF0YSBhbHJlYWR5IGluIHRoZSBUQ1AgU1lOIGhhbmRzaGFrZSB0bworIHJlZHVjZSBsYXRlbmN5LgorCisxLjE2IFRyeSB0byBVUkwgZW5jb2RlIGdpdmVuIFVSTAorCisgR2l2ZW4gYSBVUkwgdGhhdCBmb3IgZXhhbXBsZSBjb250YWlucyBzcGFjZXMsIGxpYmN1cmwgY291bGQgaGF2ZSBhbiBvcHRpb24KKyB0aGF0IHdvdWxkIHRyeSBzb21ld2hhdCBoYXJkZXIgdGhhbiBpdCBkb2VzIG5vdyBhbmQgY29udmVydCBzcGFjZXMgdG8gJTIwIGFuZAorIHBlcmhhcHMgVVJMIGVuY29kZWQgYnl0ZSB2YWx1ZXMgb3ZlciAxMjggZXRjIChiYXNpY2FsbHkgZG8gd2hhdCB0aGUgcmVkaXJlY3QKKyBmb2xsb3dpbmcgY29kZSBhbHJlYWR5IGRvZXMpLgorCisgaHR0cHM6Ly9naXRodWIuY29tL2N1cmwvY3VybC9pc3N1ZXMvNTE0CisKKzEuMTcgQWRkIHN1cHBvcnQgZm9yIElSSXMKKworIElSSXMgKFJGQyAzOTg3KSBhbGxvdyBsb2NhbGl6ZWQsIG5vbi1hc2NpaSwgbmFtZXMgaW4gdGhlIFVSTC4gVG8gcHJvcGVybHkKKyBzdXBwb3J0IHRoaXMsIGN1cmwvbGliY3VybCB3b3VsZCBuZWVkIHRvIHRyYW5zbGF0ZS9lbmNvZGUgdGhlIGdpdmVuIGlucHV0CisgZnJvbSB0aGUgaW5wdXQgc3RyaW5nIGVuY29kaW5nIGludG8gcGVyY2VudCBlbmNvZGVkIG91dHB1dCAib3ZlciB0aGUgd2lyZSIuCisKKyBUbyBtYWtlIHRoYXQgd29yayBzbW9vdGhseSBmb3IgY3VybCB1c2VycyBldmVuIG9uIFdpbmRvd3MsIGN1cmwgd291bGQKKyBwcm9iYWJseSBuZWVkIHRvIGJlIGFibGUgdG8gY29udmVydCBmcm9tIHNldmVyYWwgaW5wdXQgZW5jb2RpbmdzLgorCiAKIDIuIGxpYmN1cmwgLSBtdWx0aSBpbnRlcmZhY2UKIApAQCAtMjM1LDEzICszMjgsNyBAQAogIC0gVGhlICJET05FIiBvcGVyYXRpb24gKHBvc3QgdHJhbnNmZXIgcHJvdG9jb2wtc3BlY2lmaWMgYWN0aW9ucykgZm9yIHRoZQogICAgcHJvdG9jb2xzIFNGVFAsIFNNVFAsIEZUUC4gRml4aW5nIEN1cmxfZG9uZSgpIGZvciB0aGlzIGlzIGEgd29ydGh5IHRhc2suCiAKLTIuMiBGaXggSFRUUCBQaXBlbGluaW5nIGZvciBQVVQKLQotIEhUVFAgUGlwZWxpbmluZyBjYW4gYmUgYSB3YXkgdG8gZ3JlYXRseSBlbmhhbmNlIHBlcmZvcm1hbmNlIGZvciBtdWx0aXBsZQotIHNlcmlhbCByZXF1ZXN0cyBhbmQgY3VycmVudGx5IGxpYmN1cmwgb25seSBzdXBwb3J0cyB0aGF0IGZvciBIRUFEIGFuZCBHRVQKLSByZXF1ZXN0cyBidXQgaXQgc2hvdWxkIGFsc28gYmUgcG9zc2libGUgZm9yIFBVVC4KLQotMi4zIEJldHRlciBzdXBwb3J0IGZvciBzYW1lIG5hbWUgcmVzb2x2ZXMKKzIuMiBCZXR0ZXIgc3VwcG9ydCBmb3Igc2FtZSBuYW1lIHJlc29sdmVzCiAKICBJZiBhIG5hbWUgcmVzb2x2ZSBoYXMgYmVlbiBpbml0aWF0ZWQgZm9yIG5hbWUgTk4gYW5kIGEgc2Vjb25kIGVhc3kgaGFuZGxlCiAgd2FudHMgdG8gcmVzb2x2ZSB0aGF0IG5hbWUgYXMgd2VsbCwgbWFrZSBpdCB3YWl0IGZvciB0aGUgZmlyc3QgcmVzb2x2ZSB0byBlbmQKQEAgLTI0OSw2ICszMzYsMjYgQEAKICBlc3BlY2lhbGx5IG5lZWRlZCB3aGVuIGFkZGluZyBtYW55IHNpbXVsdGFuZW91cyBoYW5kbGVzIHVzaW5nIHRoZSBzYW1lIGhvc3QKICBuYW1lIHdoZW4gdGhlIEROUyByZXNvbHZlciBjYW4gZ2V0IGZsb29kZWQuCiAKKzIuMyBOb24tYmxvY2tpbmcgY3VybF9tdWx0aV9yZW1vdmVfaGFuZGxlKCkKKworIFRoZSBtdWx0aSBpbnRlcmZhY2UgaGFzIGEgZmV3IEFQSSBjYWxscyB0aGF0IGFzc3VtZSBhIGJsb2NraW5nIGJlaGF2aW9yLCBsaWtlCisgYWRkX2hhbmRsZSgpIGFuZCByZW1vdmVfaGFuZGxlKCkgd2hpY2ggbGltaXRzIHdoYXQgd2UgY2FuIGRvIGludGVybmFsbHkuIFRoZQorIG11bHRpIEFQSSBuZWVkIHRvIGJlIG1vdmVkIGV2ZW4gbW9yZSBpbnRvIGEgc2luZ2xlIGZ1bmN0aW9uIHRoYXQgImRyaXZlcyIKKyBldmVyeXRoaW5nIGluIGEgbm9uLWJsb2NraW5nIG1hbm5lciBhbmQgc2lnbmFscyB3aGVuIHNvbWV0aGluZyBpcyBkb25lLiBBCisgcmVtb3ZlIG9yIGFkZCB3b3VsZCB0aGVuIG9ubHkgYXNrIGZvciB0aGUgYWN0aW9uIHRvIGdldCBzdGFydGVkIGFuZCB0aGVuCisgbXVsdGlfcGVyZm9ybSgpIGV0YyBzdGlsbCBiZSBjYWxsZWQgdW50aWwgdGhlIGFkZC9yZW1vdmUgaXMgY29tcGxldGVkLgorCisyLjQgU3BsaXQgY29ubmVjdCBhbmQgYXV0aGVudGljYXRpb24gcHJvY2VzcworCisgVGhlIG11bHRpIGludGVyZmFjZSB0cmVhdHMgdGhlIGF1dGhlbnRpY2F0aW9uIHByb2Nlc3MgYXMgcGFydCBvZiB0aGUgY29ubmVjdAorIHBoYXNlLiBBcyBzdWNoIGFueSBmYWlsdXJlcyBkdXJpbmcgYXV0aGVudGljYXRpb24gd29uJ3QgdHJpZ2dlciB0aGUgcmVsZXZhbnQKKyBRVUlUIG9yIExPR09GRiBmb3IgcHJvdG9jb2xzIHN1Y2ggYXMgSU1BUCwgUE9QMyBhbmQgU01UUC4KKworMi41IEVkZ2UtdHJpZ2dlcmVkIHNvY2tldHMgc2hvdWxkIHdvcmsKKworIFRoZSBtdWx0aV9zb2NrZXQgQVBJIHNob3VsZCB3b3JrIHdpdGggZWRnZS10cmlnZ2VyZWQgc29ja2V0IGV2ZW50cy4gT25lIG9mCisgdGhlIGludGVybmFsIGFjdGlvbnMgdGhhdCBuZWVkIHRvIGJlIGltcHJvdmVkIGZvciB0aGlzIHRvIHdvcmsgcGVyZmVjdGx5IGlzCisgdGhlICdtYXhsb29wcycgaGFuZGxpbmcgaW4gdHJhbnNmZXIuYzpyZWFkd3JpdGVfZGF0YSgpLgogCiAzLiBEb2N1bWVudGF0aW9uCiAKQEAgLTI3Miw3ICszNzksNyBAQAogIFdoZW4gdHJ5aW5nIHRvIGNvbm5lY3QgcGFzc2l2ZWx5IHRvIGEgc2VydmVyIHdoaWNoIG9ubHkgc3VwcG9ydHMgYWN0aXZlCiAgY29ubmVjdGlvbnMsIGxpYmN1cmwgcmV0dXJucyBDVVJMRV9GVFBfV0VJUkRfUEFTVl9SRVBMWSBhbmQgY2xvc2VzIHRoZQogIGNvbm5lY3Rpb24uIFRoZXJlIGNvdWxkIGJlIGEgd2F5IHRvIGZhbGxiYWNrIHRvIGFuIGFjdGl2ZSBjb25uZWN0aW9uIChhbmQKLSB2aWNlIHZlcnNhKS4gaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvZmVhdHVyZS5jZ2k/aWQ9MTc1NDc5MworIHZpY2UgdmVyc2EpLiBodHRwczovL2N1cmwuaGF4eC5zZS9idWcvZmVhdHVyZS5jZ2k/aWQ9MTc1NDc5MwogCiA0LjMgRWFybGllciBiYWQgbGV0dGVyIGRldGVjdGlvbgogCkBAIC0zMDksMTMgKzQxNiwxMyBAQAogNS4xIEJldHRlciBwZXJzaXN0ZW5jeSBmb3IgSFRUUCAxLjAKIAogICJCZXR0ZXIiIHN1cHBvcnQgZm9yIHBlcnNpc3RlbnQgY29ubmVjdGlvbnMgb3ZlciBIVFRQIDEuMAotIGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL2ZlYXR1cmUuY2dpP2lkPTEwODkwMDEKKyBodHRwczovL2N1cmwuaGF4eC5zZS9idWcvZmVhdHVyZS5jZ2k/aWQ9MTA4OTAwMQogCiA1LjIgc3VwcG9ydCBGRjMgc3FsaXRlIGNvb2tpZSBmaWxlcwogCiAgRmlyZWZveCAzIGlzIGNoYW5naW5nIGZyb20gaXRzIGZvcm1lciBmb3JtYXQgdG8gYSBhIHNxbGl0ZSBkYXRhYmFzZSBpbnN0ZWFkLgogIFdlIHNob3VsZCBjb25zaWRlciBob3cgKGxpYiljdXJsIGNhbi9zaG91bGQgc3VwcG9ydCB0aGlzLgotIGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL2ZlYXR1cmUuY2dpP2lkPTE4NzEzODgKKyBodHRwczovL2N1cmwuaGF4eC5zZS9idWcvZmVhdHVyZS5jZ2k/aWQ9MTg3MTM4OAogCiA1LjMgUmVhcnJhbmdlIHJlcXVlc3QgaGVhZGVyIG9yZGVyCiAKQEAgLTM0NSwxNyArNDUyLDI1IEBACiAgRm9yIGV4YW1wbGU6CiAKICBodHRwOi8vdGVzdDpwYXNzO2F1dGg9TlRMTUBleGFtcGxlLmNvbSB3b3VsZCBiZSBlcXVpdmFsZW50IHRvIHNwZWNpZnlpbmcgLS11c2VyCi0gdGVzdDpwYXNzO2F1dGg9TlRMTSBvciAtLXVzZXIgdGVzdDpwYXNzIC0tbnRsbSBmcm9tIHRoZSBjb21tYW5kIGxpbmUuIAorIHRlc3Q6cGFzczthdXRoPU5UTE0gb3IgLS11c2VyIHRlc3Q6cGFzcyAtLW50bG0gZnJvbSB0aGUgY29tbWFuZCBsaW5lLgogCiAgQWRkaXRpb25hbGx5IHRoaXMgc2hvdWxkIGJlIGltcGxlbWVudGVkIGZvciBwcm94eSBiYXNlIFVSTHMgYXMgd2VsbC4KIAogNS42IFJlZnVzZSAiZG93bmdyYWRlIiByZWRpcmVjdHMKIAotIFNlZSBodHRwczovL2dpdGh1Yi5jb20vYmFnZGVyL2N1cmwvaXNzdWVzLzIyNgorIFNlZSBodHRwczovL2dpdGh1Yi5jb20vY3VybC9jdXJsL2lzc3Vlcy8yMjYKIAogIENvbnNpZGVyIGEgd2F5IHRvIHRlbGwgY3VybCB0byByZWZ1c2UgdG8gImRvd25ncmFkZSIgcHJvdG9jb2wgd2l0aCBhIHJlZGlyZWN0CiAgYW5kL29yIHBvc3NpYmx5IGEgYml0IHRoYXQgcmVmdXNlcyByZWRpcmVjdCB0byBjaGFuZ2UgcHJvdG9jb2wgY29tcGxldGVseS4KIAorNS43IE1vcmUgY29tcHJlc3Npb25zCisKKyBDb21wcmVzc2lvbiBhbGdvcml0aG1zIHRoYXQgcGVyZm9ybSBiZXR0ZXIgdGhhbiBnemlwIGFyZSBiZWluZyBjb25zaWRlcmVkIGZvcgorIHVzZSBhbmQgaW5jbHVzaW9uIGluIGV4aXN0aW5nIGJyb3dzZXJzLiBGb3IgZXhhbXBsZSAnYnJvdGxpJy4gSWYgc2VydmVycworIGZvbGxvdyBhbG9uZyBpdCBpcyBhIGdvb2QgcmVhc29uIGZvciB1cyB0byBhbHNvIGFsbG93IHVzZXJzIHRvIHRha2UgYWR2YW50YWdlCisgb2YgdGhpcy4gVGhlIGFsZ29yaXRobTogaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9icm90bGkgVGhlIEZpcmVmb3ggYnVnOgorIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTM2NjU1OQorCiAKIDYuIFRFTE5FVAogCkBAIC00MzUsNiArNTUwLDExIEBACiAKIEN1cnJlbnRseSB0aGUgU01CIGF1dGhlbnRpY2F0aW9uIHVzZXMgTlRMTXYxLgogCisxMS40IENyZWF0ZSByZW1vdGUgZGlyZWN0b3JpZXMKKworU3VwcG9ydCBmb3IgY3JlYXRpbmcgcmVtb3RlIGRpcmVjdG9yaWVzIHdoZW4gdXBsb2FkaW5nIGEgZmlsZSB0byBhIGRpcmVjdG9yeQordGhhdCBkb2Vzbid0IGV4aXN0IG9uIHRoZSBzZXJ2ZXIsIGp1c3QgbGlrZSAtLWZ0cC1jcmVhdGUtZGlycy4KKwogMTIuIE5ldyBwcm90b2NvbHMKIAogMTIuMSBSU1lOQwpAQCAtNDQ3LDcgKzU2Nyw3IEBACiAxMy4xIERpc2FibGUgc3BlY2lmaWMgdmVyc2lvbnMKIAogIFByb3ZpZGUgYW4gb3B0aW9uIHRoYXQgYWxsb3dzIGZvciBkaXNhYmxpbmcgc3BlY2lmaWMgU1NMIHZlcnNpb25zLCBzdWNoIGFzCi0gU1NMdjIgaHR0cDovL2N1cmwuaGF4eC5zZS9idWcvZmVhdHVyZS5jZ2k/aWQ9MTc2NzI3NgorIFNTTHYyIGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy9mZWF0dXJlLmNnaT9pZD0xNzY3Mjc2CiAKIDEzLjIgUHJvdmlkZSBtdXRleCBsb2NraW5nIEFQSQogCkBAIC00NTgsNyArNTc4LDcgQEAKIDEzLjMgRXZhbHVhdGUgU1NMIHBhdGNoZXMKIAogIEV2YWx1YXRlL2FwcGx5IEdlcnRqYW4gdmFuIFdpbmdlcmRlJ3MgU1NMIHBhdGNoZXM6Ci0gaHR0cDovL2N1cmwuaGF4eC5zZS9tYWlsL2xpYi0yMDA0LTAzLzAwODcuaHRtbAorIGh0dHBzOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMDQtMDMvMDA4Ny5odG1sCiAKIDEzLjQgQ2FjaGUgT3BlblNTTCBjb250ZXh0cwogCkBAIC00OTYsOSArNjE2LDkgQEAKICBodHRwczovL3d3dy5yZmMtZWRpdG9yLm9yZy9yZmMvcmZjNjY5OC50eHQKIAogIEFuIGluaXRpYWwgcGF0Y2ggd2FzIHBvc3RlZCBieSBTdXJlc2ggS3Jpc2huYXN3YW15IG9uIE1hcmNoIDd0aCAyMDEzCi0gKGh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC9saWItMjAxMy0wMy8wMDc1Lmh0bWwpIGJ1dCBpdCB3YXMgYSB0b28gc2ltcGxlCisgKGh0dHBzOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMTMtMDMvMDA3NS5odG1sKSBidXQgaXQgd2FzIGEgdG9vIHNpbXBsZQogIGFwcHJvYWNoLiBTZWUgRGFuaWVsJ3MgY29tbWVudHM6Ci0gaHR0cDovL2N1cmwuaGF4eC5zZS9tYWlsL2xpYi0yMDEzLTAzLzAxMDMuaHRtbCAuIGxpYnVuYm91bmQgbWF5IGJlIHRoZQorIGh0dHBzOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMTMtMDMvMDEwMy5odG1sIC4gbGlidW5ib3VuZCBtYXkgYmUgdGhlCiAgY29ycmVjdCBsaWJyYXJ5IHRvIGJhc2UgdGhpcyBkZXZlbG9wbWVudCBvbi4KIAogMTQuIEdudVRMUwpAQCAtNTUzLDcgKzY3Myw3IEBACiAKICBBZGQgc3VwcG9ydCBmb3Igb3RoZXIgYXV0aGVudGljYXRpb24gbWVjaGFuaXNtcyBzdWNoIGFzIE9MUCwKICBHU1MtU1BORUdPIGFuZCBvdGhlcnMuCi0gCisKIDE2LjIgQWRkIFFPUCBzdXBwb3J0IHRvIEdTU0FQSSBhdXRoZW50aWNhdGlvbgogCiAgQ3VycmVudGx5IHRoZSBHU1NBUEkgYXV0aGVudGljYXRpb24gb25seSBzdXBwb3J0cyB0aGUgZGVmYXVsdCBRT1Agb2YgYXV0aApAQCAtNTYxLDcgKzY4MSwxMSBAQAogIHdpdGggaW50ZWdyaXR5IHByb3RlY3Rpb24pIGFuZCBhdXRoLWNvbmYgKEF1dGhlbnRpY2F0aW9uIHdpdGggaW50ZWdyaXR5IGFuZAogIHByaXZhY3kgcHJvdGVjdGlvbikuCiAKLTE3LiBDbGllbnQKKzE2LjMgU3VwcG9ydCBiaW5hcnkgbWVzc2FnZXMgKGkuZS46IG5vbi1iYXNlNjQpCisKKyAgTWFuZGF0b3J5IHRvIHN1cHBvcnQgTERBUCBTQVNMIGF1dGhlbnRpY2F0aW9uLgorCisxNy4gQ29tbWFuZCBsaW5lIHRvb2wKIAogMTcuMSBzeW5jCiAKQEAgLTU5MCw3ICs3MTQsNyBAQAogIFRoZSBjbGllbnQgY291bGQgYmUgdG9sZCB0byB1c2UgbWF4aW11bSBOIHNpbXVsdGFuZW91cyBwYXJhbGxlbCB0cmFuc2ZlcnMgYW5kCiAgdGhlbiBqdXN0IG1ha2Ugc3VyZSB0aGF0IGhhcHBlbnMuIEl0IHNob3VsZCBvZiBjb3Vyc2Ugbm90IG1ha2UgbW9yZSB0aGFuIG9uZQogIGNvbm5lY3Rpb24gdG8gdGhlIHNhbWUgcmVtb3RlIGhvc3QuIFRoaXMgd291bGQgcmVxdWlyZSB0aGUgY2xpZW50IHRvIHVzZSB0aGUKLSBtdWx0aSBpbnRlcmZhY2UuIGh0dHA6Ly9jdXJsLmhheHguc2UvYnVnL2ZlYXR1cmUuY2dpP2lkPTE1NTg1OTUKKyBtdWx0aSBpbnRlcmZhY2UuIGh0dHBzOi8vY3VybC5oYXh4LnNlL2J1Zy9mZWF0dXJlLmNnaT9pZD0xNTU4NTk1CiAKIDE3LjUgcHJvdmlkZSBmb3JtcG9zdCBoZWFkZXJzCiAKQEAgLTYwOCwzMiArNzMyLDc4IEBACiAKIDE3LjYgd2FybmluZyB3aGVuIHNldHRpbmcgYW4gb3B0aW9uCiAKLSAgRGlzcGxheSBhIHdhcm5pbmcgd2hlbiBsaWJjdXJsIHJldHVybnMgYW4gZXJyb3Igd2hlbiBzZXR0aW5nIGFuIG9wdGlvbi4KLSAgVGhpcyBjYW4gYmUgdXNlZnVsIHRvIHRlbGwgd2hlbiBzdXBwb3J0IGZvciBhIHBhcnRpY3VsYXIgZmVhdHVyZSBoYXNuJ3QgYmVlbgotICBjb21waWxlZCBpbnRvIHRoZSBsaWJyYXJ5LgorIERpc3BsYXkgYSB3YXJuaW5nIHdoZW4gbGliY3VybCByZXR1cm5zIGFuIGVycm9yIHdoZW4gc2V0dGluZyBhbiBvcHRpb24uCisgVGhpcyBjYW4gYmUgdXNlZnVsIHRvIHRlbGwgd2hlbiBzdXBwb3J0IGZvciBhIHBhcnRpY3VsYXIgZmVhdHVyZSBoYXNuJ3QgYmVlbgorIGNvbXBpbGVkIGludG8gdGhlIGxpYnJhcnkuCiAKIDE3Ljcgd2FybmluZyB3aGVuIHNlbmRpbmcgYmluYXJ5IG91dHB1dCB0byB0ZXJtaW5hbAogCi0gIFByb3ZpZGUgYSB3YXkgdGhhdCBwcm9tcHRzIHRoZSB1c2VyIGZvciBjb25maXJtYXRpb24gYmVmb3JlIGJpbmFyeSBkYXRhIGlzCi0gIHNlbnQgdG8gdGhlIHRlcm1pbmFsLCBtdWNoIGluIHRoZSBzdHlsZSAnbGVzcycgZG9lcyBpdC4KKyBQcm92aWRlIGEgd2F5IHRoYXQgcHJvbXB0cyB0aGUgdXNlciBmb3IgY29uZmlybWF0aW9uIGJlZm9yZSBiaW5hcnkgZGF0YSBpcworIHNlbnQgdG8gdGhlIHRlcm1pbmFsLCBtdWNoIGluIHRoZSBzdHlsZSAnbGVzcycgZG9lcyBpdC4KIAogMTcuOCBvZmZlciBjb2xvci1jb2RlZCBIVFRQIGhlYWRlciBvdXRwdXQKIAotICBCeSBvZmZlcmluZyBkaWZmZXJlbnQgY29sb3Igb3V0cHV0IG9uIHRoZSBoZWFkZXIgbmFtZSBhbmQgdGhlIGhlYWRlcgotICBjb250ZW50cywgdGhleSBjb3VsZCBiZSBtYWRlIG1vcmUgcmVhZGFibGUgYW5kIHRodXMgaGVscCB1c2VycyB3b3JraW5nIG9uCi0gIEhUVFAgc2VydmljZXMuCisgQnkgb2ZmZXJpbmcgZGlmZmVyZW50IGNvbG9yIG91dHB1dCBvbiB0aGUgaGVhZGVyIG5hbWUgYW5kIHRoZSBoZWFkZXIKKyBjb250ZW50cywgdGhleSBjb3VsZCBiZSBtYWRlIG1vcmUgcmVhZGFibGUgYW5kIHRodXMgaGVscCB1c2VycyB3b3JraW5nIG9uCisgSFRUUCBzZXJ2aWNlcy4KIAogMTcuOSBDaG9vc2UgdGhlIG5hbWUgb2YgZmlsZSBpbiBicmFjZXMgZm9yIGNvbXBsZXggVVJMcwogCi0gIFdoZW4gdXNpbmcgYnJhY2VzIHRvIGRvd25sb2FkIGEgbGlzdCBvZiBVUkxzIGFuZCB5b3UgdXNlIGNvbXBsaWNhdGVkIG5hbWVzCi0gIGluIHRoZSBsaXN0IG9mIGFsdGVybmF0aXZlcywgaXQgY291bGQgYmUgaGFuZHkgdG8gYWxsb3cgY3VybCB0byB1c2Ugb3RoZXIKLSAgbmFtZXMgd2hlbiBzYXZpbmcuCisgV2hlbiB1c2luZyBicmFjZXMgdG8gZG93bmxvYWQgYSBsaXN0IG9mIFVSTHMgYW5kIHlvdSB1c2UgY29tcGxpY2F0ZWQgbmFtZXMKKyBpbiB0aGUgbGlzdCBvZiBhbHRlcm5hdGl2ZXMsIGl0IGNvdWxkIGJlIGhhbmR5IHRvIGFsbG93IGN1cmwgdG8gdXNlIG90aGVyCisgbmFtZXMgd2hlbiBzYXZpbmcuCiAKLSAgQ29uc2lkZXIgYSB3YXkgdG8gb2ZmZXIgdGhhdC4gUG9zc2libHkgbGlrZQotICB7cGFydFVSTDE6bmFtZTEscGFydFVSTDI6bmFtZTIscGFydFVSTDM6bmFtZTN9IHdoZXJlIHRoZSBuYW1lIGZvbGxvd2luZyB0aGUKLSAgY29sb24gaXMgdGhlIG91dHB1dCBuYW1lLgorIENvbnNpZGVyIGEgd2F5IHRvIG9mZmVyIHRoYXQuIFBvc3NpYmx5IGxpa2UKKyB7cGFydFVSTDE6bmFtZTEscGFydFVSTDI6bmFtZTIscGFydFVSTDM6bmFtZTN9IHdoZXJlIHRoZSBuYW1lIGZvbGxvd2luZyB0aGUKKyBjb2xvbiBpcyB0aGUgb3V0cHV0IG5hbWUuCiAKLSAgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9iYWdkZXIvY3VybC9pc3N1ZXMvMjIxCisgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9jdXJsL2N1cmwvaXNzdWVzLzIyMQorCisxNy4xMCBpbXByb3ZlIGhvdyBjdXJsIHdvcmtzIGluIGEgd2luZG93cyBjb25zb2xlIHdpbmRvdworCisgSWYgeW91IHB1bGwgdGhlIHNjcm9sbGJhciB3aGVuIHRyYW5zZmVycmluZyB3aXRoIGN1cmwgaW4gYSBXaW5kb3dzIGNvbnNvbGUKKyB3aW5kb3csIHRoZSB0cmFuc2ZlciBpcyBpbnRlcnJ1cHRlZCBhbmQgY2FuIGdldCBkaXNjb25uZWN0ZWQuIFRoaXMgY2FuCisgcHJvYmFibHkgYmUgaW1wcm92ZWQuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vY3VybC9jdXJsL2lzc3Vlcy8zMjIKKworMTcuMTEgLXcgb3V0cHV0IHRvIHN0ZGVycgorCisgLXcgaXMgcXVpdGUgdXNlZnVsLCBidXQgbm90IHRvIHRob3NlIG9mIHVzIHdobyB1c2UgY3VybCB3aXRob3V0IC1vIG9yIC1PCisgKHN1Y2ggYXMgZm9yIHNjcmlwdGluZyB0aHJvdWdoIGEgaGlnaGVyIGxldmVsIGxhbmd1YWdlKS4gSXQgd291bGQgYmUgbmljZSB0bworIGhhdmUgYW4gb3B0aW9uIHRoYXQgaXMgZXhhY3RseSBsaWtlIC13IGJ1dCBzZW5kcyBpdCB0byBzdGRlcnIKKyBpbnN0ZWFkLiBQcm9wb3NlZCBuYW1lOiAtLXdyaXRlLXN0ZGVyci4gU2VlCisgaHR0cHM6Ly9naXRodWIuY29tL2N1cmwvY3VybC9pc3N1ZXMvNjEzCisKKzE3LjEyIGtlZXAgcnVubmluZywgcmVhZCBpbnN0cnVjdGlvbnMgZnJvbSBwaXBlL3NvY2tldAorCisgUHJvdmlkZSBhbiBvcHRpb24gdGhhdCBtYWtlcyBjdXJsIG5vdCBleGl0IGFmdGVyIHRoZSBsYXN0IFVSTCAob3IgZXZlbiB3b3JrCisgd2l0aG91dCBhIGdpdmVuIFVSTCksIGFuZCB0aGVuIG1ha2UgaXQgcmVhZCBpbnN0cnVjdGlvbnMgcGFzc2VkIG9uIGEgcGlwZSBvcgorIG92ZXIgYSBzb2NrZXQgdG8gbWFrZSBmdXJ0aGVyIGluc3RydWN0aW9ucyBzbyB0aGF0IGEgc2Vjb25kIHN1YnNlcXVlbnQgY3VybAorIGludm9rZSBjYW4gdGFsayB0byB0aGUgc3RpbGwgcnVubmluZyBpbnN0YW5jZSBhbmQgYXNrIGZvciB0cmFuc2ZlcnMgdG8gZ2V0CisgZG9uZSwgYW5kIHRodXMgbWFpbnRhaW4gaXRzIGNvbm5lY3Rpb24gcG9vbCwgRE5TIGNhY2hlIGFuZCBtb3JlLgorCisxNy4xMyBzdXBwb3J0IG1ldGFsaW5rIGluIGh0dHAgaGVhZGVycworCisgQ3VybCBoYXMgc3VwcG9ydCBmb3IgZG93bmxvYWRpbmcgYSBtZXRhbGluayB4bWwgZmlsZSwgcHJvY2Vzc2luZyBpdCwgYW5kIHRoZW4KKyBkb3dubG9hZGluZyB0aGUgdGFyZ2V0IG9mIHRoZSBtZXRhbGluay4gVGhpcyBpcyBkb25lIHZpYSB0aGUgLS1tZXRhbGluayBvcHRpb24uCisgSXQgd291bGQgYmUgbmljZSBpZiBtZXRhbGluayBhbHNvIHN1cHBvcnRlZCBkb3dubG9hZGluZyB2aWEgbWV0YWxpbmsKKyBpbmZvcm1hdGlvbiB0aGF0IGlzIHN0b3JlZCBpbiBIVFRQIGhlYWRlcnMgKFJGQyA2MjQ5KS4gVGhlb3JldGljYWxseSB0aGlzIGNvdWxkCisgYWxzbyBiZSBzdXBwb3J0ZWQgd2l0aCB0aGUgLS1tZXRhbGluayBvcHRpb24uCisKKyBTZWUgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzYyNDkKKworIFNlZSBhbHNvIGh0dHBzOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvYnVnLXdnZXQvMjAxNS0wNi9tc2cwMDAzNC5odG1sIGZvcgorIGFuIGltcGxlbWF0YXRpb24gb2YgdGhpcyBpbiB3Z2V0LgorCisxNy4xNCAtLWZhaWwgd2l0aG91dCAtLWxvY2F0aW9uIHNob3VsZCB0cmVhdCAzeHggYXMgYSBmYWlsdXJlCisKKyBUbyBhbGxvdyBhIGNvbW1hbmQgbGluZSBsaWtlIHRoaXMgdG8gZGV0ZWN0IGEgcmVkaXJlY3QgYW5kIGNvbnNpZGVyIGl0IGEKKyBmYWlsdXJlOgorCisgICAgY3VybCAtdiAtLWZhaWwgLU8gaHR0cHM6Ly9leGFtcGxlLmNvbS9jdXJsLTcuNDguMC50YXIuZ3oKKworIC4uLiAtLWZhaWwgbXVzdCB0cmVhdCAzeHggcmVzcG9uc2VzIGFzIGZhaWx1cmVzIHRvby4gVGhlIGxlYXN0IHByb2JsZW1hdGljCisgd2F5IHRvIGltcGxlbWVudCB0aGlzIGlzIHByb2JhYmx5IHRvIGFkZCB0aGF0IG5ldyBsb2dpYyBpbiB0aGUgY29tbWFuZCBsaW5lCisgdG9vbCBvbmx5IGFuZCBub3QgaW4gdGhlIHVuZGVybHlpbmcgQ1VSTE9QVF9GQUlMT05FUlJPUiBsb2dpYy4KIAogCiAxOC4gQnVpbGQKQEAgLTY4MCw2ICs4NTAsMTYgQEAKICBhbmQgdGh1cyB0aGUgd2FpdCBmb3IgY29ubmVjdGlvbnMgbG9vcCBpcyBuZXZlciBlbnRlcmVkIHRvIHJlY2VpdmUgdGhlIHNlY29uZAogIGNvbm5lY3Rpb24uCiAKKzE5LjYgVXNlIHRoZSBSRkM2MjY1IHRlc3Qgc3VpdGUKKworIEEgdGVzdCBzdWl0ZSBtYWRlIGZvciBIVFRQIGNvb2tpZXMgKFJGQyA2MjY1KSBieSBBZGFtIEJhcnRoIGlzIGF2YWlsYWJsZSBhdAorIGh0dHBzOi8vZ2l0aHViLmNvbS9hYmFydGgvaHR0cC1zdGF0ZS90cmVlL21hc3Rlci90ZXN0cworCisgSXQnZCBiZSByZWFsbHkgYXdlc29tZSBpZiBzb21lb25lIHdvdWxkIHdyaXRlIGEgc2NyaXB0L3NldHVwIHRoYXQgd291bGQgcnVuCisgY3VybCB3aXRoIHRoYXQgdGVzdCBzdWl0ZSBhbmQgZGV0ZWN0IGRldmlhbmNlcy4gSWRlYWxseSwgdGhhdCB3b3VsZCBldmVuIGJlCisgaW5jb3Jwb3JhdGVkIGludG8gb3VyIHJlZ3VsYXIgdGVzdCBzdWl0ZS4KKworCiAyMC4gTmV4dCBTT05BTUUgYnVtcAogCiAyMC4xIGh0dHAtc3R5bGUgSEVBRCBvdXRwdXQgZm9yIEZUUApAQCAtNzg0LDIyICs5NjQsMyBAQAogCiAgQ2hhbmdpbmcgdGhlbSB0byByZXR1cm4gYSBwcml2YXRlIGhhbmRsZSB3aWxsIGJlbmVmaXQgdGhlIGltcGxlbWVudGF0aW9uIGFuZAogIGFsbG93IHVzIG11Y2ggZ3JlYXRlciBmcmVlZG9tcyB3aGlsZSBzdGlsbCBtYWludGFpbmluZyBhIHNvbGlkIEFQSSBhbmQgQUJJLgotCi0yMS45IGhhdmUgZm9ybSBmdW5jdGlvbnMgdXNlIENVUkwgaGFuZGxlIGFyZ3VtZW50Ci0KLSBjdXJsX2Zvcm1hZGQoKSBhbmQgY3VybF9mb3JtZ2V0KCkgYm90aCBjdXJyZW50bHkgaGF2ZSBubyBDVVJMIGhhbmRsZQotIGFyZ3VtZW50LCBidXQgYm90aCBjYW4gdXNlIGEgY2FsbGJhY2sgdGhhdCBpcyBzZXQgaW4gdGhlIGVhc3kgaGFuZGxlLCBhbmQKLSB0aHVzIGN1cmxfZm9ybWdldCgpIHdpdGggY2FsbGJhY2sgY2Fubm90IGZ1bmN0aW9uIHdpdGhvdXQgZmlyc3QgaGF2aW5nCi0gY3VybF9lYXN5X3BlcmZvcm0oKSAob3Igc2ltaWxhcikgY2FsbGVkIC0gd2hpY2ggaXMgaGFyZCB0byBncmFzcCBhbmQgYSBkZXNpZ24KLSBtaXN0YWtlLgotCi0yMS4xMCBBZGQgQ1VSTE9QVF9NQUlMX0NMSUVOVCBvcHRpb24KLQotIFJhdGhlciB0aGFuIHVzZSB0aGUgVVJMIHRvIHNwZWNpZnkgdGhlIG1haWwgY2xpZW50IHN0cmluZyB0byBwcmVzZW50IGluIHRoZQotIEhFTE8gYW5kIEVITE8gY29tbWFuZHMsIGxpYmN1cmwgc2hvdWxkIHN1cHBvcnQgYSBuZXcgQ1VSTE9QVCBzcGVjaWZpY2FsbHkgZm9yCi0gc3BlY2lmeWluZyB0aGlzIGRhdGEgYXMgdGhlIFVSTCBpcyBub24tc3RhbmRhcmQgYW5kIHRvIGJlIGhvbmVzdCBhIGJpdCBvZiBhCi0gaGFjayA7LSkKLQotIFBsZWFzZSBzZWUgdGhlIGZvbGxvd2luZyB0aHJlYWQgZm9yIG1vcmUgaW5mb3JtYXRpb246Ci0gaHR0cDovL2N1cmwuaGF4eC5zZS9tYWlsL2xpYi0yMDEyLTA1LzAxNzguaHRtbAotIApkaWZmIC0tZ2l0IGEvZG9jcy9UaGVBcnRPZkh0dHBTY3JpcHRpbmcgYi9kb2NzL1RoZUFydE9mSHR0cFNjcmlwdGluZwppbmRleCA3NmZhZWU0Li4wNDdkYjgwIDEwMDY0NAotLS0gYS9kb2NzL1RoZUFydE9mSHR0cFNjcmlwdGluZworKysgYi9kb2NzL1RoZUFydE9mSHR0cFNjcmlwdGluZwpAQCAtMTM2LDcgKzEzNiw3IEBACiAKICBUaGUgVW5pZm9ybSBSZXNvdXJjZSBMb2NhdG9yIGZvcm1hdCBpcyBob3cgeW91IHNwZWNpZnkgdGhlIGFkZHJlc3Mgb2YgYQogIHBhcnRpY3VsYXIgcmVzb3VyY2Ugb24gdGhlIEludGVybmV0LiBZb3Uga25vdyB0aGVzZSwgeW91J3ZlIHNlZW4gVVJMcyBsaWtlCi0gaHR0cDovL2N1cmwuaGF4eC5zZSBvciBodHRwczovL3lvdXJiYW5rLmNvbSBhIG1pbGxpb24gdGltZXMuIFJGQyAzOTg2IGlzIHRoZQorIGh0dHBzOi8vY3VybC5oYXh4LnNlIG9yIGh0dHBzOi8veW91cmJhbmsuY29tIGEgbWlsbGlvbiB0aW1lcy4gUkZDIDM5ODYgaXMgdGhlCiAgY2Fub25pY2FsIHNwZWMuIEFuZCB5ZWFoLCB0aGUgZm9ybWFsIG5hbWUgaXMgbm90IFVSTCwgaXQgaXMgVVJJLgogCiAgMi4yIEhvc3QKQEAgLTIwMyw3ICsyMDMsNyBAQAogIGlzc3VlcyBhIEdFVCByZXF1ZXN0IHRvIHRoZSBzZXJ2ZXIgYW5kIHJlY2VpdmVzIHRoZSBkb2N1bWVudCBpdCBhc2tlZCBmb3IuCiAgSWYgeW91IGlzc3VlIHRoZSBjb21tYW5kIGxpbmUKIAotICAgICAgICBjdXJsIGh0dHA6Ly9jdXJsLmhheHguc2UKKyAgICAgICAgY3VybCBodHRwczovL2N1cmwuaGF4eC5zZQogCiAgeW91IGdldCBhIHdlYiBwYWdlIHJldHVybmVkIGluIHlvdXIgdGVybWluYWwgd2luZG93LiBUaGUgZW50aXJlIEhUTUwgZG9jdW1lbnQKICB0aGF0IHRoYXQgVVJMIGhvbGRzLgpAQCAtNjI4LDcgKzYyOCw3IEBACiAgIE1vcmUgYWJvdXQgc2VydmVyIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbiBhbmQgY2EgY2VydCBidW5kbGVzIGNhbiBiZSByZWFkCiAgIGluIHRoZSBTU0xDRVJUUyBkb2N1bWVudCwgYXZhaWxhYmxlIG9ubGluZSBoZXJlOgogCi0gICAgICAgIGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9zc2xjZXJ0cy5odG1sCisgICAgICAgIGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3Mvc3NsY2VydHMuaHRtbAogCiAgIEF0IHRpbWVzIHlvdSBtYXkgZW5kIHVwIHdpdGggeW91ciBvd24gQ0EgY2VydCBzdG9yZSBhbmQgdGhlbiB5b3UgY2FuIHRlbGwKICAgY3VybCB0byB1c2UgdGhhdCB0byB2ZXJpZnkgdGhlIHNlcnZlcidzIGNlcnRpZmljYXRlOgpAQCAtNzU1LDQgKzc1NSw0IEBACiAKICAxNC4yIFNpdGVzCiAKLSBodHRwOi8vY3VybC5oYXh4LnNlIGlzIHRoZSBob21lIG9mIHRoZSBjVVJMIHByb2plY3QKKyBodHRwczovL2N1cmwuaGF4eC5zZSBpcyB0aGUgaG9tZSBvZiB0aGUgY1VSTCBwcm9qZWN0CmRpZmYgLS1naXQgYS9kb2NzL2N1cmwtY29uZmlnLjEgYi9kb2NzL2N1cmwtY29uZmlnLjEKaW5kZXggMTRhOWQyYi4uNGMxZTMyMyAxMDA2NDQKLS0tIGEvZG9jcy9jdXJsLWNvbmZpZy4xCisrKyBiL2RvY3MvY3VybC1jb25maWcuMQpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2N1cmwuMSBiL2RvY3MvY3VybC4xCmluZGV4IDExYjk1ZDQuLmYyZDQ4ZjEgMTAwNjQ0Ci0tLSBhL2RvY3MvY3VybC4xCisrKyBiL2RvY3MvY3VybC4xCkBAIC01LDExICs1LDExIEBACiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAuXCIgKgotLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNTEsMTYgKzUxLDE2IEBACiAKIG9yIHlvdSBjYW4gZ2V0IHNlcXVlbmNlcyBvZiBhbHBoYW51bWVyaWMgc2VyaWVzIGJ5IHVzaW5nIFtdIGFzIGluOgogCi0gIGZ0cDovL2Z0cC5udW1lcmljYWxzLmNvbS9maWxlWzEtMTAwXS50eHQKKyAgZnRwOi8vZnRwLmV4YW1wbGUuY29tL2ZpbGVbMS0xMDBdLnR4dAogCi0gIGZ0cDovL2Z0cC5udW1lcmljYWxzLmNvbS9maWxlWzAwMS0xMDBdLnR4dCAgICAod2l0aCBsZWFkaW5nIHplcm9zKQorICBmdHA6Ly9mdHAuZXhhbXBsZS5jb20vZmlsZVswMDEtMTAwXS50eHQgICAgKHdpdGggbGVhZGluZyB6ZXJvcykKIAotICBmdHA6Ly9mdHAubGV0dGVycy5jb20vZmlsZVthLXpdLnR4dAorICBmdHA6Ly9mdHAuZXhhbXBsZS5jb20vZmlsZVthLXpdLnR4dAogCiBOZXN0ZWQgc2VxdWVuY2VzIGFyZSBub3Qgc3VwcG9ydGVkLCBidXQgeW91IGNhbiB1c2Ugc2V2ZXJhbCBvbmVzIG5leHQgdG8gZWFjaAogb3RoZXI6CiAKLSAgaHR0cDovL2FueS5vcmcvYXJjaGl2ZVsxOTk2LTE5OTldL3ZvbFsxLTRdL3BhcnR7YSxiLGN9Lmh0bWwKKyAgaHR0cDovL2V4YW1wbGUuY29tL2FyY2hpdmVbMTk5Ni0xOTk5XS92b2xbMS00XS9wYXJ0e2EsYixjfS5odG1sCiAKIFlvdSBjYW4gc3BlY2lmeSBhbnkgYW1vdW50IG9mIFVSTHMgb24gdGhlIGNvbW1hbmQgbGluZS4gVGhleSB3aWxsIGJlIGZldGNoZWQKIGluIGEgc2VxdWVudGlhbCBtYW5uZXIgaW4gdGhlIHNwZWNpZmllZCBvcmRlci4KQEAgLTY4LDkgKzY4LDkgQEAKIFlvdSBjYW4gc3BlY2lmeSBhIHN0ZXAgY291bnRlciBmb3IgdGhlIHJhbmdlcyB0byBnZXQgZXZlcnkgTnRoIG51bWJlciBvcgogbGV0dGVyOgogCi0gIGh0dHA6Ly93d3cubnVtZXJpY2Fscy5jb20vZmlsZVsxLTEwMDoxMF0udHh0CisgIGh0dHA6Ly9leGFtcGxlLmNvbS9maWxlWzEtMTAwOjEwXS50eHQKIAotICBodHRwOi8vd3d3LmxldHRlcnMuY29tL2ZpbGVbYS16OjJdLnR4dAorICBodHRwOi8vZXhhbXBsZS5jb20vZmlsZVthLXo6Ml0udHh0CiAKIFdoZW4gdXNpbmcgW10gb3Ige30gc2VxdWVuY2VzIHdoZW4gaW52b2tlZCBmcm9tIGEgY29tbWFuZCBsaW5lIHByb21wdCwgeW91CiBwcm9iYWJseSBoYXZlIHRvIHB1dCB0aGUgZnVsbCBVUkwgd2l0aGluIGRvdWJsZSBxdW90ZXMgdG8gYXZvaWQgdGhlIHNoZWxsIGZyb20KQEAgLTE1MCw2ICsxNTAsMTQgQEAKIC5JUCAiLS1odHRwMiIKIChIVFRQKSBUZWxscyBjdXJsIHRvIGlzc3VlIGl0cyByZXF1ZXN0cyB1c2luZyBIVFRQIDIuIFRoaXMgcmVxdWlyZXMgdGhhdCB0aGUKIHVuZGVybHlpbmcgbGliY3VybCB3YXMgYnVpbHQgdG8gc3VwcG9ydCBpdC4gKEFkZGVkIGluIDcuMzMuMCkKKy5JUCAiLS1odHRwMi1wcmlvci1rbm93bGVkZ2UiCisoSFRUUCkgVGVsbHMgY3VybCB0byBpc3N1ZSBpdHMgbm9uLVRMUyBIVFRQIHJlcXVlc3RzIHVzaW5nIEhUVFAvMiB3aXRob3V0CitIVFRQLzEuMSBVcGdyYWRlLiBJdCByZXF1aXJlcyBwcmlvciBrbm93bGVkZ2UgdGhhdCB0aGUgc2VydmVyIHN1cHBvcnRzIEhUVFAvMgorc3RyYWlnaHQgYXdheS4gSFRUUFMgcmVxdWVzdHMgd2lsbCBzdGlsbCBkbyBIVFRQLzIgdGhlIHN0YW5kYXJkIHdheSB3aXRoCituZWdvdGlhdGVkIHByb3RvY29sIHZlcnNpb24gaW4gdGhlIFRMUyBoYW5kc2hha2UuCisKK0hUVFAvMiBzdXBwb3J0IGluIGdlbmVyYWwgYWxzbyByZXF1aXJlcyB0aGF0IHRoZSB1bmRlcmx5aW5nIGxpYmN1cmwgd2FzIGJ1aWx0Cit0byBzdXBwb3J0IGl0LiAoQWRkZWQgaW4gNy40OS4wKQogLklQICItLW5vLW5wbiIKIERpc2FibGUgdGhlIE5QTiBUTFMgZXh0ZW5zaW9uLiBOUE4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IGlmIGxpYmN1cmwgd2FzIGJ1aWx0CiB3aXRoIGFuIFNTTCBsaWJyYXJ5IHRoYXQgc3VwcG9ydHMgTlBOLiBOUE4gaXMgdXNlZCBieSBhIGxpYmN1cmwgdGhhdCBzdXBwb3J0cwpAQCAtMTcxLDEwICsxNzksMTEgQEAKIC5JUCAiLTIsIC0tc3NsdjIiCiAoU1NMKSBGb3JjZXMgY3VybCB0byB1c2UgU1NMIHZlcnNpb24gMiB3aGVuIG5lZ290aWF0aW5nIHdpdGggYSByZW1vdGUgU1NMCiBzZXJ2ZXIuIFNvbWV0aW1lcyBjdXJsIGlzIGJ1aWx0IHdpdGhvdXQgU1NMdjIgc3VwcG9ydC4gU1NMdjIgaXMgd2lkZWx5Ci1jb25zaWRlcmVkIGluc2VjdXJlLgorY29uc2lkZXJlZCBpbnNlY3VyZSAoc2VlIFJGQyA2MTc2KS4KIC5JUCAiLTMsIC0tc3NsdjMiCiAoU1NMKSBGb3JjZXMgY3VybCB0byB1c2UgU1NMIHZlcnNpb24gMyB3aGVuIG5lZ290aWF0aW5nIHdpdGggYSByZW1vdGUgU1NMCi1zZXJ2ZXIuIFNvbWV0aW1lcyBjdXJsIGlzIGJ1aWx0IHdpdGhvdXQgU1NMdjMgc3VwcG9ydC4KK3NlcnZlci4gU29tZXRpbWVzIGN1cmwgaXMgYnVpbHQgd2l0aG91dCBTU0x2MyBzdXBwb3J0LiBTU0x2MyBpcyB3aWRlbHkKK2NvbnNpZGVyZWQgaW5zZWN1cmUgKHNlZSBSRkMgNzU2OCkuCiAuSVAgIi00LCAtLWlwdjQiCiBUaGlzIG9wdGlvbiB0ZWxscyBjdXJsIHRvIHJlc29sdmUgbmFtZXMgdG8gSVB2NCBhZGRyZXNzZXMgb25seSwgYW5kIG5vdCBmb3IKIGV4YW1wbGUgdHJ5IElQdjYuCkBAIC0yMTIsMTYgKzIyMSwyNSBAQAogCiBJZiBubyAnPScgc3ltYm9sIGlzIHVzZWQgaW4gdGhlIGxpbmUsIGl0IGlzIHRyZWF0ZWQgYXMgYSBmaWxlbmFtZSB0byB1c2UgdG8KIHJlYWQgcHJldmlvdXNseSBzdG9yZWQgY29va2llIGxpbmVzIGZyb20sIHdoaWNoIHNob3VsZCBiZSB1c2VkIGluIHRoaXMgc2Vzc2lvbgotaWYgdGhleSBtYXRjaC4gVXNpbmcgdGhpcyBtZXRob2QgYWxzbyBhY3RpdmF0ZXMgdGhlICJjb29raWUgcGFyc2VyIiB3aGljaCB3aWxsCitpZiB0aGV5IG1hdGNoLiBVc2luZyB0aGlzIG1ldGhvZCBhbHNvIGFjdGl2YXRlcyB0aGUgY29va2llIGVuZ2luZSB3aGljaCB3aWxsCiBtYWtlIGN1cmwgcmVjb3JkIGluY29taW5nIGNvb2tpZXMgdG9vLCB3aGljaCBtYXkgYmUgaGFuZHkgaWYgeW91J3JlIHVzaW5nIHRoaXMKIGluIGNvbWJpbmF0aW9uIHdpdGggdGhlIFxmSS1MLCAtLWxvY2F0aW9uXGZQIG9wdGlvbi4gVGhlIGZpbGUgZm9ybWF0IG9mIHRoZQotZmlsZSB0byByZWFkIGNvb2tpZXMgZnJvbSBzaG91bGQgYmUgcGxhaW4gSFRUUCBoZWFkZXJzIG9yIHRoZSBOZXRzY2FwZS9Nb3ppbGxhCi1jb29raWUgZmlsZSBmb3JtYXQuCitmaWxlIHRvIHJlYWQgY29va2llcyBmcm9tIHNob3VsZCBiZSBwbGFpbiBIVFRQIGhlYWRlcnMgKFNldC1Db29raWUgc3R5bGUpIG9yCit0aGUgTmV0c2NhcGUvTW96aWxsYSBjb29raWUgZmlsZSBmb3JtYXQuCiAKIFRoZSBmaWxlIHNwZWNpZmllZCB3aXRoIFxmSS1iLCAtLWNvb2tpZVxmUCBpcyBvbmx5IHVzZWQgYXMgaW5wdXQuIE5vIGNvb2tpZXMKIHdpbGwgYmUgd3JpdHRlbiB0byB0aGUgZmlsZS4gVG8gc3RvcmUgY29va2llcywgdXNlIHRoZSBcZkktYywgLS1jb29raWUtamFyXGZQCiBvcHRpb24uCiAKK0V4ZXJjaXNlIGNhdXRpb24gaWYgeW91IGFyZSB1c2luZyB0aGlzIG9wdGlvbiBhbmQgbXVsdGlwbGUgdHJhbnNmZXJzIG1heSBvY2N1ci4KK0lmIHlvdSB1c2UgdGhlIE5BTUUxPVZBTFVFMTsgZm9ybWF0LCBvciBpbiBhIGZpbGUgdXNlIHRoZSBTZXQtQ29va2llIGZvcm1hdCBhbmQKK2Rvbid0IHNwZWNpZnkgYSBkb21haW4sIHRoZW4gdGhlIGNvb2tpZSBpcyBzZW50IGZvciBhbnkgZG9tYWluIChldmVuIGFmdGVyCityZWRpcmVjdHMgYXJlIGZvbGxvd2VkKSBhbmQgY2Fubm90IGJlIG1vZGlmaWVkIGJ5IGEgc2VydmVyLXNldCBjb29raWUuIElmIHRoZQorY29va2llIGVuZ2luZSBpcyBlbmFibGVkIGFuZCBhIHNlcnZlciBzZXRzIGEgY29va2llIG9mIHRoZSBzYW1lIG5hbWUgdGhlbiBib3RoCit3aWxsIGJlIHNlbnQgb24gYSBmdXR1cmUgdHJhbnNmZXIgdG8gdGhhdCBzZXJ2ZXIsIGxpa2VseSBub3Qgd2hhdCB5b3UgaW50ZW5kZWQuCitUbyBhZGRyZXNzIHRoZXNlIGlzc3VlcyBzZXQgYSBkb21haW4gaW4gU2V0LUNvb2tpZSAoZG9pbmcgdGhhdCB3aWxsIGluY2x1ZGUKK3N1Yi1kb21haW5zKSBvciB1c2UgdGhlIE5ldHNjYXBlIGZvcm1hdC4KKwogSWYgdGhpcyBvcHRpb24gaXMgdXNlZCBzZXZlcmFsIHRpbWVzLCB0aGUgbGFzdCBvbmUgd2lsbCBiZSB1c2VkLgogLklQICItQiwgLS11c2UtYXNjaWkiCiAoRlRQL0xEQVApIEVuYWJsZSBBU0NJSSB0cmFuc2Zlci4gRm9yIEZUUCwgdGhpcyBjYW4gYWxzbyBiZSBlbmZvcmNlZCBieSB1c2luZwpAQCAtMjUzLDYgKzI3MSw5IEBACiBkaXNwbGF5ZWQsIGJ1dCB0aGF0IGlzIHRoZSBvbmx5IHZpc2libGUgZmVlZGJhY2sgeW91IGdldCBhYm91dCB0aGlzIHBvc3NpYmx5CiBsZXRoYWwgc2l0dWF0aW9uLgogCitTaW5jZSA3LjQzLjAgY29va2llcyB0aGF0IHdlcmUgaW1wb3J0ZWQgaW4gdGhlIFNldC1Db29raWUgZm9ybWF0IHdpdGhvdXQgYQorZG9tYWluIG5hbWUgYXJlIG5vdCBleHBvcnRlZCBieSB0aGlzIG9wdGlvbi4KKwogSWYgdGhpcyBvcHRpb24gaXMgdXNlZCBzZXZlcmFsIHRpbWVzLCB0aGUgbGFzdCBzcGVjaWZpZWQgZmlsZSBuYW1lIHdpbGwgYmUKIHVzZWQuCiAuSVAgIi1DLCAtLWNvbnRpbnVlLWF0IDxvZmZzZXQ+IgpAQCAtNDE3LDYgKzQzOCw5IEBACiBcZkItLWVwcnRcZlAgY2FuIGJlIHVzZWQgdG8gZXhwbGljaXRseSBlbmFibGUgRVBSVCBhZ2FpbiBhbmQgXGZCLS1uby1lcHJ0XGZQCiBpcyBhbiBhbGlhcyBmb3IgXGZCLS1kaXNhYmxlLWVwcnRcZlAuCiAKK0lmIHRoZSBzZXJ2ZXIgaXMgYW4gSVB2NiBob3N0LCB0aGlzIG9wdGlvbiB3aWxsIGhhdmUgbm8gZWZmZWN0IGFzIEVQUlQgaXMKK25lY2Vzc2FyeSB0aGVuLgorCiBEaXNhYmxpbmcgRVBSVCBvbmx5IGNoYW5nZXMgdGhlIGFjdGl2ZSBiZWhhdmlvci4gSWYgeW91IHdhbnQgdG8gc3dpdGNoIHRvCiBwYXNzaXZlIG1vZGUgeW91IG5lZWQgdG8gbm90IHVzZSBcZkktUCwgLS1mdHAtcG9ydFxmUCBvciBmb3JjZSBpdCB3aXRoCiBcZkktLWZ0cC1wYXN2XGZQLgpAQCAtNDI4LDYgKzQ1Miw5IEBACiBcZkItLWVwc3ZcZlAgY2FuIGJlIHVzZWQgdG8gZXhwbGljaXRseSBlbmFibGUgRVBTViBhZ2FpbiBhbmQgXGZCLS1uby1lcHN2XGZQCiBpcyBhbiBhbGlhcyBmb3IgXGZCLS1kaXNhYmxlLWVwc3ZcZlAuCiAKK0lmIHRoZSBzZXJ2ZXIgaXMgYW4gSVB2NiBob3N0LCB0aGlzIG9wdGlvbiB3aWxsIGhhdmUgbm8gZWZmZWN0IGFzIEVQU1YgaXMKK25lY2Vzc2FyeSB0aGVuLgorCiBEaXNhYmxpbmcgRVBTViBvbmx5IGNoYW5nZXMgdGhlIHBhc3NpdmUgYmVoYXZpb3IuIElmIHlvdSB3YW50IHRvIHN3aXRjaCB0bwogYWN0aXZlIG1vZGUgeW91IG5lZWQgdG8gdXNlIFxmSS1QLCAtLWZ0cC1wb3J0XGZQLgogLklQICItLWRucy1pbnRlcmZhY2UgPGludGVyZmFjZT4iCkBAIC00NzUsMTAgKzUwMiwxMCBAQAogKFNTTCkgVGVsbHMgY3VybCB0byB1c2UgdGhlIHNwZWNpZmllZCBjbGllbnQgY2VydGlmaWNhdGUgZmlsZSB3aGVuIGdldHRpbmcgYQogZmlsZSB3aXRoIEhUVFBTLCBGVFBTIG9yIGFub3RoZXIgU1NMLWJhc2VkIHByb3RvY29sLiBUaGUgY2VydGlmaWNhdGUgbXVzdCBiZQogaW4gUEtDUyMxMiBmb3JtYXQgaWYgdXNpbmcgU2VjdXJlIFRyYW5zcG9ydCwgb3IgUEVNIGZvcm1hdCBpZiB1c2luZyBhbnkgb3RoZXIKLWVuZ2luZS4gIElmIHRoZSBvcHRpb25hbCBwYXNzd29yZCBpc24ndCBzcGVjaWZpZWQsIGl0IHdpbGwgYmUgcXVlcmllZAotZm9yIG9uIHRoZSB0ZXJtaW5hbC4gTm90ZSB0aGF0IHRoaXMgb3B0aW9uIGFzc3VtZXMgYSBcJiJjZXJ0aWZpY2F0ZSIgZmlsZSB0aGF0Ci1pcyB0aGUgcHJpdmF0ZSBrZXkgYW5kIHRoZSBwcml2YXRlIGNlcnRpZmljYXRlIGNvbmNhdGVuYXRlZCEgU2VlIFxmSS0tY2VydFxmUAotYW5kIFxmSS0ta2V5XGZQIHRvIHNwZWNpZnkgdGhlbSBpbmRlcGVuZGVudGx5LgorZW5naW5lLiAgSWYgdGhlIG9wdGlvbmFsIHBhc3N3b3JkIGlzbid0IHNwZWNpZmllZCwgaXQgd2lsbCBiZSBxdWVyaWVkIGZvciBvbgordGhlIHRlcm1pbmFsLiBOb3RlIHRoYXQgdGhpcyBvcHRpb24gYXNzdW1lcyBhIFwmImNlcnRpZmljYXRlIiBmaWxlIHRoYXQgaXMgdGhlCitwcml2YXRlIGtleSBhbmQgdGhlIGNsaWVudCBjZXJ0aWZpY2F0ZSBjb25jYXRlbmF0ZWQhIFNlZSBcZkktLWNlcnRcZlAgYW5kCitcZkktLWtleVxmUCB0byBzcGVjaWZ5IHRoZW0gaW5kZXBlbmRlbnRseS4KIAogSWYgY3VybCBpcyBidWlsdCBhZ2FpbnN0IHRoZSBOU1MgU1NMIGxpYnJhcnkgdGhlbiB0aGlzIG9wdGlvbiBjYW4gdGVsbAogY3VybCB0aGUgbmlja25hbWUgb2YgdGhlIGNlcnRpZmljYXRlIHRvIHVzZSB3aXRoaW4gdGhlIE5TUyBkYXRhYmFzZSBkZWZpbmVkCkBAIC01MTAsNiArNTM3LDEzIEBACiAoU1NMKSBTcGVjaWZ5IHRoZSBwYXRoIG5hbWUgdG8gdGhlIEVudHJvcHkgR2F0aGVyaW5nIERhZW1vbiBzb2NrZXQuIFRoZSBzb2NrZXQKIGlzIHVzZWQgdG8gc2VlZCB0aGUgcmFuZG9tIGVuZ2luZSBmb3IgU1NMIGNvbm5lY3Rpb25zLiBTZWUgYWxzbyB0aGUKIFxmSS0tcmFuZG9tLWZpbGVcZlAgb3B0aW9uLgorLklQICItLWV4cGVjdDEwMC10aW1lb3V0IDxzZWNvbmRzPiIKKyhIVFRQKSBNYXhpbXVtIHRpbWUgaW4gc2Vjb25kcyB0aGF0IHlvdSBhbGxvdyBjdXJsIHRvIHdhaXQgZm9yIGEgMTAwLWNvbnRpbnVlCityZXNwb25zZSB3aGVuIGN1cmwgZW1pdHMgYW4gRXhwZWN0czogMTAwLWNvbnRpbnVlIGhlYWRlciBpbiBpdHMgcmVxdWVzdC4gQnkKK2RlZmF1bHQgY3VybCB3aWxsIHdhaXQgb25lIHNlY29uZC4gVGhpcyBvcHRpb24gYWNjZXB0cyBkZWNpbWFsIHZhbHVlcyEgV2hlbgorY3VybCBzdG9wcyB3YWl0aW5nLCBpdCB3aWxsIGNvbnRpbnVlIGFzIGlmIHRoZSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZC4KKworKEFkZGVkIGluIDcuNDcuMCkKIC5JUCAiLS1jZXJ0LXR5cGUgPHR5cGU+IgogKFNTTCkgVGVsbHMgY3VybCB3aGF0IGNlcnRpZmljYXRlIHR5cGUgdGhlIHByb3ZpZGVkIGNlcnRpZmljYXRlIGlzIGluLiBQRU0sCiBERVIgYW5kIEVORyBhcmUgcmVjb2duaXplZCB0eXBlcy4gIElmIG5vdCBzcGVjaWZpZWQsIFBFTSBpcyBhc3N1bWVkLgpAQCAtNTQ0LDE3ICs1NzgsMjcgQEAKIAogSWYgdGhpcyBvcHRpb24gaXMgc2V0LCB0aGUgZGVmYXVsdCBjYXBhdGggdmFsdWUgd2lsbCBiZSBpZ25vcmVkLCBhbmQgaWYgaXQgaXMKIHVzZWQgc2V2ZXJhbCB0aW1lcywgdGhlIGxhc3Qgb25lIHdpbGwgYmUgdXNlZC4KLS5JUCAiLS1waW5uZWRwdWJrZXkgPHBpbm5lZCBwdWJsaWMga2V5PiIKLShTU0wpIFRlbGxzIGN1cmwgdG8gdXNlIHRoZSBzcGVjaWZpZWQgcHVibGljIGtleSBmaWxlIHRvIHZlcmlmeSB0aGUgcGVlci4gVGhlCi1maWxlIG11c3QgY29udGFpbiBhIHNpbmdsZSBwdWJsaWMga2V5IGluIFBFTSBvciBERVIgZm9ybWF0LgorLklQICItLXBpbm5lZHB1YmtleSA8cGlubmVkIHB1YmxpYyBrZXkgKGhhc2hlcyk+IgorKFNTTCkgVGVsbHMgY3VybCB0byB1c2UgdGhlIHNwZWNpZmllZCBwdWJsaWMga2V5IGZpbGUgKG9yIGhhc2hlcykgdG8gdmVyaWZ5IHRoZQorcGVlci4gVGhpcyBjYW4gYmUgYSBwYXRoIHRvIGEgZmlsZSB3aGljaCBjb250YWlucyBhIHNpbmdsZSBwdWJsaWMga2V5IGluIFBFTSBvcgorREVSIGZvcm1hdCwgb3IgYW55IG51bWJlciBvZiBiYXNlNjQgZW5jb2RlZCBzaGEyNTYgaGFzaGVzIHByZWNlZGVkIGJ5CitcJ3NoYTI1Ni8vXCcgYW5kIHNlcGFyYXRlZCBieSBcJztcJwogCiBXaGVuIG5lZ290aWF0aW5nIGEgVExTIG9yIFNTTCBjb25uZWN0aW9uLCB0aGUgc2VydmVyIHNlbmRzIGEgY2VydGlmaWNhdGUKIGluZGljYXRpbmcgaXRzIGlkZW50aXR5LiBBIHB1YmxpYyBrZXkgaXMgZXh0cmFjdGVkIGZyb20gdGhpcyBjZXJ0aWZpY2F0ZSBhbmQKIGlmIGl0IGRvZXMgbm90IGV4YWN0bHkgbWF0Y2ggdGhlIHB1YmxpYyBrZXkgcHJvdmlkZWQgdG8gdGhpcyBvcHRpb24sIGN1cmwgd2lsbAogYWJvcnQgdGhlIGNvbm5lY3Rpb24gYmVmb3JlIHNlbmRpbmcgb3IgcmVjZWl2aW5nIGFueSBkYXRhLgogCi1BZGRlZCBpbiA3LjM5LjAgZm9yIE9wZW5TU0wsIEdudVRMUyBhbmQgR1NLaXQuIEFkZGVkIGluIDcuNDMuMCBmb3IgTlNTIGFuZAotd29sZlNTTC9DeWFTU0wuIE90aGVyIFNTTCBiYWNrZW5kcyBub3Qgc3VwcG9ydGVkLgorUEVNL0RFUiBzdXBwb3J0OgorICA3LjM5LjA6IE9wZW5TU0wsIEdudVRMUyBhbmQgR1NLaXQKKyAgNy40My4wOiBOU1MgYW5kIHdvbGZTU0wvQ3lhU1NMCisgIDcuNDcuMDogbWJlZHRscworICA3LjQ5LjA6IFBvbGFyU1NMCitzaGEyNTYgc3VwcG9ydDoKKyAgNy40NC4wOiBPcGVuU1NMLCBHbnVUTFMsIE5TUyBhbmQgd29sZlNTTC9DeWFTU0wuCisgIDcuNDcuMDogbWJlZHRscworICA3LjQ5LjA6IFBvbGFyU1NMCitPdGhlciBTU0wgYmFja2VuZHMgbm90IHN1cHBvcnRlZC4KIAogSWYgdGhpcyBvcHRpb24gaXMgdXNlZCBzZXZlcmFsIHRpbWVzLCB0aGUgbGFzdCBvbmUgd2lsbCBiZSB1c2VkLgogLklQICItLWNlcnQtc3RhdHVzIgpAQCAtNTk3LDM2ICs2NDEsMzcgQEAKIGF0dGFjaGVkIGluIHRoZSBwb3N0IGFzIGEgZmlsZSB1cGxvYWQsIHdoaWxlIHRoZSA8IG1ha2VzIGEgdGV4dCBmaWVsZCBhbmQganVzdAogZ2V0IHRoZSBjb250ZW50cyBmb3IgdGhhdCB0ZXh0IGZpZWxkIGZyb20gYSBmaWxlLgogCi1FeGFtcGxlLCB0byBzZW5kIHlvdXIgcGFzc3dvcmQgZmlsZSB0byB0aGUgc2VydmVyLCB3aGVyZQotXCYncGFzc3dvcmQnIGlzIHRoZSBuYW1lIG9mIHRoZSBmb3JtLWZpZWxkIHRvIHdoaWNoIC9ldGMvcGFzc3dkIHdpbGwgYmUgdGhlCi1pbnB1dDoKK0V4YW1wbGU6IHRvIHNlbmQgYW4gaW1hZ2UgdG8gYSBzZXJ2ZXIsIHdoZXJlIFwmJ3Byb2ZpbGUnIGlzIHRoZSBuYW1lIG9mIHRoZQorZm9ybS1maWVsZCB0byB3aGljaCBwb3J0cmFpdC5qcGcgd2lsbCBiZSB0aGUgaW5wdXQ6CiAKLVxmQmN1cmxcZlAgLUYgcGFzc3dvcmQ9QC9ldGMvcGFzc3dkIHd3dy5teXBhc3N3b3Jkcy5jb20KK1xmQmN1cmxcZlAgLUYgcHJvZmlsZT1AcG9ydHJhaXQuanBnIGh0dHBzOi8vZXhhbXBsZS5jb20vdXBsb2FkLmNnaQogCiBUbyByZWFkIGNvbnRlbnQgZnJvbSBzdGRpbiBpbnN0ZWFkIG9mIGEgZmlsZSwgdXNlIC0gYXMgdGhlIGZpbGVuYW1lLiBUaGlzIGdvZXMKLWZvciBib3RoIEAgYW5kIDwgY29uc3RydWN0cy4KK2ZvciBib3RoIEAgYW5kIDwgY29uc3RydWN0cy4gVW5mb3J0dW5hdGVseSBpdCBkb2VzIG5vdCBzdXBwb3J0IHJlYWRpbmcgdGhlCitmaWxlIGZyb20gYSBuYW1lZCBwaXBlIG9yIHNpbWlsYXIsIGFzIGl0IG5lZWRzIHRoZSBmdWxsIHNpemUgYmVmb3JlIHRoZQordHJhbnNmZXIgc3RhcnRzLgogCiBZb3UgY2FuIGFsc28gdGVsbCBjdXJsIHdoYXQgQ29udGVudC1UeXBlIHRvIHVzZSBieSB1c2luZyAndHlwZT0nLCBpbiBhIG1hbm5lcgogc2ltaWxhciB0bzoKIAotXGZCY3VybFxmUCAtRiAid2ViPUBpbmRleC5odG1sO3R5cGU9dGV4dC9odG1sIiB1cmwuY29tCitcZkJjdXJsXGZQIC1GICJ3ZWI9QGluZGV4Lmh0bWw7dHlwZT10ZXh0L2h0bWwiIGV4YW1wbGUuY29tCiAKIG9yCiAKLVxmQmN1cmxcZlAgLUYgIm5hbWU9ZGFuaWVsO3R5cGU9dGV4dC9mb28iIHVybC5jb20KK1xmQmN1cmxcZlAgLUYgIm5hbWU9ZGFuaWVsO3R5cGU9dGV4dC9mb28iIGV4YW1wbGUuY29tCiAKIFlvdSBjYW4gYWxzbyBleHBsaWNpdGx5IGNoYW5nZSB0aGUgbmFtZSBmaWVsZCBvZiBhIGZpbGUgdXBsb2FkIHBhcnQgYnkgc2V0dGluZwogZmlsZW5hbWU9LCBsaWtlIHRoaXM6CiAKLVxmQmN1cmxcZlAgLUYgImZpbGU9QGxvY2FsZmlsZTtmaWxlbmFtZT1uYW1laW5wb3N0IiB1cmwuY29tCitcZkJjdXJsXGZQIC1GICJmaWxlPUBsb2NhbGZpbGU7ZmlsZW5hbWU9bmFtZWlucG9zdCIgZXhhbXBsZS5jb20KIAogSWYgZmlsZW5hbWUvcGF0aCBjb250YWlucyAnLCcgb3IgJzsnLCBpdCBtdXN0IGJlIHF1b3RlZCBieSBkb3VibGUtcXVvdGVzIGxpa2U6CiAKLVxmQmN1cmxcZlAgLUYgImZpbGU9QFxcImxvY2FsZmlsZVxcIjtmaWxlbmFtZT1cXCJuYW1laW5wb3N0XFwiIiB1cmwuY29tCitcZkJjdXJsXGZQIC1GICJmaWxlPUBcXCJsb2NhbGZpbGVcXCI7ZmlsZW5hbWU9XFwibmFtZWlucG9zdFxcIiIgZXhhbXBsZS5jb20KIAogb3IKIAotXGZCY3VybFxmUCAtRiAnZmlsZT1AImxvY2FsZmlsZSI7ZmlsZW5hbWU9Im5hbWVpbnBvc3QiJyB1cmwuY29tCitcZkJjdXJsXGZQIC1GICdmaWxlPUAibG9jYWxmaWxlIjtmaWxlbmFtZT0ibmFtZWlucG9zdCInIGV4YW1wbGUuY29tCiAKIE5vdGUgdGhhdCBpZiBhIGZpbGVuYW1lL3BhdGggaXMgcXVvdGVkIGJ5IGRvdWJsZS1xdW90ZXMsIGFueSBkb3VibGUtcXVvdGUKIG9yIGJhY2tzbGFzaCB3aXRoaW4gdGhlIGZpbGVuYW1lIG11c3QgYmUgZXNjYXBlZCBieSBiYWNrc2xhc2guCkBAIC03MTAsNiArNzU1LDEwIEBACiBhdXRoZW50aWNhdGlvbiwgYnV0IG5vbi1lbmNyeXB0ZWQgZGF0YSB0cmFuc2ZlcnMgZm9yIGVmZmljaWVuY3kuICBGYWlscyB0aGUKIHRyYW5zZmVyIGlmIHRoZSBzZXJ2ZXIgZG9lc24ndCBzdXBwb3J0IFNTTC9UTFMuICAoQWRkZWQgaW4gNy4xNi4wKQogdGhhdCBjYW4gc3RpbGwgYmUgdXNlZCBidXQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHZlcnNpb24uCisuSVAgIi0tZnRwLXNzbCIKKyhGVFApIFRoaXMgZGVwcmVjYXRlZCBvcHRpb24gaXMgbm93IGtub3duIGFzIFxmSS0tc3NsXGZQLgorLklQICItLWZ0cC1zc2wtcmVxZCIKKyhGVFApIFRoaXMgZGVwcmVjYXRlZCBvcHRpb24gaXMgbm93IGtub3duIGFzIFxmSS0tc3NsLXJlcWRcZlAuCiAuSVAgIi0tZm9ybS1zdHJpbmcgPG5hbWU9c3RyaW5nPiIKIChIVFRQKSBTaW1pbGFyIHRvIFxmSS0tZm9ybVxmUCBleGNlcHQgdGhhdCB0aGUgdmFsdWUgc3RyaW5nIGZvciB0aGUgbmFtZWQKIHBhcmFtZXRlciBpcyB1c2VkIGxpdGVyYWxseS4gTGVhZGluZyBcJidAJyBhbmQgXCYnPCcgY2hhcmFjdGVycywgYW5kIHRoZQpAQCAtNzU3LDcgKzgwNiw3IEBACiAKIEV4YW1wbGU6CiAKLVwmIyBjdXJsIC1IICJYLUZpcnN0LU5hbWU6IEpvZSIgaHR0cDovLzE5Mi4xNjguMC4xLworXCYjIGN1cmwgLUggIlgtRmlyc3QtTmFtZTogSm9lIiBodHRwOi8vZXhhbXBsZS5jb20vCiAKIFxmQldBUk5JTkdcZlA6IGhlYWRlcnMgc2V0IHdpdGggdGhpcyBvcHRpb24gd2lsbCBiZSBzZXQgaW4gYWxsIHJlcXVlc3RzIC0gZXZlbgogYWZ0ZXIgcmVkaXJlY3RzIGFyZSBmb2xsb3dlZCwgbGlrZSB3aGVuIHRvbGQgd2l0aCBcZkItTCwgLS1sb2NhdGlvblxmUC4gVGhpcwpAQCAtNzcxLDEwICs4MjAsMTIgQEAKIGJlIHRoZSAxMjggYml0IE1ENSBjaGVja3N1bSBvZiB0aGUgcmVtb3RlIGhvc3QncyBwdWJsaWMga2V5LCBjdXJsIHdpbGwgcmVmdXNlCiB0aGUgY29ubmVjdGlvbiB3aXRoIHRoZSBob3N0IHVubGVzcyB0aGUgbWQ1c3VtcyBtYXRjaC4gKEFkZGVkIGluIDcuMTcuMSkKIC5JUCAiLS1pZ25vcmUtY29udGVudC1sZW5ndGgiCi0oSFRUUCkKLUlnbm9yZSB0aGUgQ29udGVudC1MZW5ndGggaGVhZGVyLiBUaGlzIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgZm9yIHNlcnZlcnMKLXJ1bm5pbmcgQXBhY2hlIDEueCwgd2hpY2ggd2lsbCByZXBvcnQgaW5jb3JyZWN0IENvbnRlbnQtTGVuZ3RoIGZvciBmaWxlcwotbGFyZ2VyIHRoYW4gMiBnaWdhYnl0ZXMuCitGb3IgSFRUUCwgSWdub3JlIHRoZSBDb250ZW50LUxlbmd0aCBoZWFkZXIuIFRoaXMgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBmb3IKK3NlcnZlcnMgcnVubmluZyBBcGFjaGUgMS54LCB3aGljaCB3aWxsIHJlcG9ydCBpbmNvcnJlY3QgQ29udGVudC1MZW5ndGggZm9yCitmaWxlcyBsYXJnZXIgdGhhbiAyIGdpZ2FieXRlcy4KKworRm9yIEZUUCAoc2luY2UgNy40Ni4wKSwgc2tpcCB0aGUgUkVUUiBjb21tYW5kIHRvIGZpZ3VyZSBvdXQgdGhlIHNpemUgYmVmb3JlCitkb3dubG9hZGluZyBhIGZpbGUuCiAuSVAgIi1pLCAtLWluY2x1ZGUiCiAoSFRUUCkgSW5jbHVkZSB0aGUgSFRUUC1oZWFkZXIgaW4gdGhlIG91dHB1dC4gVGhlIEhUVFAtaGVhZGVyIGluY2x1ZGVzIHRoaW5ncwogbGlrZSBzZXJ2ZXItbmFtZSwgZGF0ZSBvZiB0aGUgZG9jdW1lbnQsIEhUVFAtdmVyc2lvbiBhbmQgbW9yZS4uLgpAQCAtNzg4LDcgKzgzOSw3IEBACiBQZXJmb3JtIGFuIG9wZXJhdGlvbiB1c2luZyBhIHNwZWNpZmllZCBpbnRlcmZhY2UuIFlvdSBjYW4gZW50ZXIgaW50ZXJmYWNlCiBuYW1lLCBJUCBhZGRyZXNzIG9yIGhvc3QgbmFtZS4gQW4gZXhhbXBsZSBjb3VsZCBsb29rIGxpa2U6CiAKLSBjdXJsIC0taW50ZXJmYWNlIGV0aDA6MSBodHRwOi8vd3d3Lm5ldHNjYXBlLmNvbS8KKyBjdXJsIC0taW50ZXJmYWNlIGV0aDA6MSBodHRwczovL3d3dy5leGFtcGxlLmNvbS8KIAogSWYgdGhpcyBvcHRpb24gaXMgdXNlZCBzZXZlcmFsIHRpbWVzLCB0aGUgbGFzdCBvbmUgd2lsbCBiZSB1c2VkLgogLklQICItaiwgLS1qdW5rLXNlc3Npb24tY29va2llcyIKQEAgLTgwMSw4ICs4NTIsMTcgQEAKIHNlcnZlci1zcGVjaWZpZWQgQ29udGVudC1EaXNwb3NpdGlvbiBmaWxlbmFtZSBpbnN0ZWFkIG9mIGV4dHJhY3RpbmcgYSBmaWxlbmFtZQogZnJvbSB0aGUgVVJMLgogCitJZiB0aGUgc2VydmVyIHNwZWNpZmllcyBhIGZpbGUgbmFtZSBhbmQgYSBmaWxlIHdpdGggdGhhdCBuYW1lIGFscmVhZHkgZXhpc3RzCitpbiB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBpdCB3aWxsIG5vdCBiZSBvdmVyd3JpdHRlbiBhbmQgYW4gZXJyb3Igd2lsbAorb2NjdXIuIElmIHRoZSBzZXJ2ZXIgZG9lc24ndCBzcGVjaWZ5IGEgZmlsZSBuYW1lIHRoZW4gdGhpcyBvcHRpb24gaGFzIG5vCitlZmZlY3QuCisKIFRoZXJlJ3Mgbm8gYXR0ZW1wdCB0byBkZWNvZGUgJS1zZXF1ZW5jZXMgKHlldCkgaW4gdGhlIHByb3ZpZGVkIGZpbGUgbmFtZSwgc28KIHRoaXMgb3B0aW9uIG1heSBwcm92aWRlIHlvdSB3aXRoIHJhdGhlciB1bmV4cGVjdGVkIGZpbGUgbmFtZXMuCisKK1xmQldBUk5JTkdcZlA6IEV4ZXJjaXNlIGp1ZGljaW91cyB1c2Ugb2YgdGhpcyBvcHRpb24sIGVzcGVjaWFsbHkgb24gV2luZG93cy4gQQorcm9ndWUgc2VydmVyIGNvdWxkIHNlbmQgeW91IHRoZSBuYW1lIG9mIGEgRExMIG9yIG90aGVyIGZpbGUgdGhhdCBjb3VsZCBwb3NzaWJseQorYmUgbG9hZGVkIGF1dG9tYXRpY2FsbHkgYnkgV2luZG93cyBvciBzb21lIHRoaXJkIHBhcnR5IHNvZnR3YXJlLgogLklQICItaywgLS1pbnNlY3VyZSIKIChTU0wpIFRoaXMgb3B0aW9uIGV4cGxpY2l0bHkgYWxsb3dzIGN1cmwgdG8gcGVyZm9ybSAiaW5zZWN1cmUiIFNTTCBjb25uZWN0aW9ucwogYW5kIHRyYW5zZmVycy4gQWxsIFNTTCBjb25uZWN0aW9ucyBhcmUgYXR0ZW1wdGVkIHRvIGJlIG1hZGUgc2VjdXJlIGJ5IHVzaW5nCkBAIC04MTAsNyArODcwLDcgQEAKIGNvbnNpZGVyZWQgImluc2VjdXJlIiBmYWlsIHVubGVzcyBcZkktaywgLS1pbnNlY3VyZVxmUCBpcyB1c2VkLgogCiBTZWUgdGhpcyBvbmxpbmUgcmVzb3VyY2UgZm9yIGZ1cnRoZXIgZGV0YWlsczoKLVxmQmh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9zc2xjZXJ0cy5odG1sXGZQCitcZkJodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL3NzbGNlcnRzLmh0bWxcZlAKIC5JUCAiLUssIC0tY29uZmlnIDxjb25maWcgZmlsZT4iCiBTcGVjaWZ5IHdoaWNoIGNvbmZpZyBmaWxlIHRvIHJlYWQgY3VybCBhcmd1bWVudHMgZnJvbS4gVGhlIGNvbmZpZyBmaWxlIGlzIGEKIHRleHQgZmlsZSBpbiB3aGljaCBjb21tYW5kIGxpbmUgYXJndW1lbnRzIGNhbiBiZSB3cml0dGVuIHdoaWNoIHRoZW4gd2lsbCBiZQpAQCAtODM3LDcgKzg5Nyw3IEBACiBpdCB1c2luZyB0aGUgXGZJLS11cmxcZlAgb3B0aW9uLCBhbmQgbm90IGJ5IHNpbXBseSB3cml0aW5nIHRoZSBVUkwgb24gaXRzIG93bgogbGluZS4gU28sIGl0IGNvdWxkIGxvb2sgc2ltaWxhciB0byB0aGlzOgogCi11cmwgPSAiaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzLyIKK3VybCA9ICJodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzLyIKIAogV2hlbiBjdXJsIGlzIGludm9rZWQsIGl0IGFsd2F5cyAodW5sZXNzIFxmSS1xXGZQIGlzIHVzZWQpIGNoZWNrcyBmb3IgYSBkZWZhdWx0CiBjb25maWcgZmlsZSBhbmQgdXNlcyBpdCBpZiBmb3VuZC4gVGhlIGRlZmF1bHQgY29uZmlnIGZpbGUgaXMgY2hlY2tlZCBmb3IgaW4KQEAgLTg1NiwxNCArOTE2LDE0IEBACiAubmYKICMgLS0tIEV4YW1wbGUgZmlsZSAtLS0KICMgdGhpcyBpcyBhIGNvbW1lbnQKLXVybCA9ICJjdXJsLmhheHguc2UiCit1cmwgPSAiZXhhbXBsZS5jb20iCiBvdXRwdXQgPSAiY3VybGhlcmUuaHRtbCIKIHVzZXItYWdlbnQgPSAic3VwZXJhZ2VudC8xLjAiCiAKICMgYW5kIGZldGNoIGFub3RoZXIgVVJMIHRvbwotdXJsID0gImN1cmwuaGF4eC5zZS9kb2NzL21hbnBhZ2UuaHRtbCIKK3VybCA9ICJleGFtcGxlLmNvbS9kb2NzL21hbnBhZ2UuaHRtbCIKIC1PCi1yZWZlcmVyID0gImh0dHA6Ly9ub3doZXJlYXRhbGwuY29tLyIKK3JlZmVyZXIgPSAiaHR0cDovL25vd2hlcmVhdGFsbC5leGFtcGxlLmNvbS8iCiAjIC0tLSBFbmQgb2YgZXhhbXBsZSBmaWxlIC0tLQogLmZpCiAKQEAgLTg5OCw2ICs5NTgsOCBAQAogdmVyeSBjb21tb24uIFVzZSBcZkktViwgLS12ZXJzaW9uXGZQIHRvIHNlZSBpZiB5b3VyIGN1cmwgc3VwcG9ydHMgaXQuCiAKIElmIHRoaXMgb3B0aW9uIGlzIHVzZWQgc2V2ZXJhbCB0aW1lcywgdGhlIGxhc3Qgb25lIHdpbGwgYmUgdXNlZC4KKy5JUCAiLS1rcmI0IDxsZXZlbD4iCisoRlRQKSBUaGlzIGlzIHRoZSBmb3JtZXIgbmFtZSBmb3IgXGZJLS1rcmJcZlAuIERvIG5vdCB1c2UuCiAuSVAgIi1sLCAtLWxpc3Qtb25seSIKIChGVFApCiBXaGVuIGxpc3RpbmcgYW4gRlRQIGRpcmVjdG9yeSwgdGhpcyBzd2l0Y2ggZm9yY2VzIGEgbmFtZS1vbmx5IHZpZXcuIFRoaXMgaXMKQEAgLTkzNSw3ICs5OTcsNyBAQAogCiBZb3UgY2FuIHRlbGwgY3VybCB0byBub3QgY2hhbmdlIHRoZSBub24tR0VUIHJlcXVlc3QgbWV0aG9kIHRvIEdFVCBhZnRlciBhIDMweAogcmVzcG9uc2UgYnkgdXNpbmcgdGhlIGRlZGljYXRlZCBvcHRpb25zIGZvciB0aGF0OiBcZkktLXBvc3QzMDFcZlAsCi1cZkktLXBvc3QzMDJcZlAgYW5kIFxmSS1wb3N0MzAzXGZQLgorXGZJLS1wb3N0MzAyXGZQIGFuZCBcZkktLXBvc3QzMDNcZlAuCiAuSVAgIi0tbGliY3VybCA8ZmlsZT4iCiBBcHBlbmQgdGhpcyBvcHRpb24gdG8gYW55IG9yZGluYXJ5IGN1cmwgY29tbWFuZCBsaW5lLCBhbmQgeW91IHdpbGwgZ2V0IGEKIGxpYmN1cmwtdXNpbmcgQyBzb3VyY2UgY29kZSB3cml0dGVuIHRvIHRoZSBmaWxlIHRoYXQgZG9lcyB0aGUgZXF1aXZhbGVudApAQCAtMTAxMSw3ICsxMDczLDggQEAKIGZpbGVzIHRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3QgZXZlbiBpZiB0aGUgZmlsZSB0cmFuc2ZlciBlbmRzIHVwIGJlaW5nIGxhcmdlcgogdGhhbiB0aGlzIGdpdmVuIGxpbWl0LiBUaGlzIGNvbmNlcm5zIGJvdGggRlRQIGFuZCBIVFRQIHRyYW5zZmVycy4KIC5JUCAiLS1tYWlsLXJjcHQgPGFkZHJlc3M+IgotKFNNVFApIFNwZWNpZnkgYSBzaW5nbGUgYWRkcmVzcywgdXNlciBuYW1lIG9yIG1haWxpbmcgbGlzdCBuYW1lLgorKFNNVFApIFNwZWNpZnkgYSBzaW5nbGUgYWRkcmVzcywgdXNlciBuYW1lIG9yIG1haWxpbmcgbGlzdCBuYW1lLiBSZXBlYXQgdGhpcworb3B0aW9uIHNldmVyYWwgdGltZXMgdG8gc2VuZCB0byBtdWx0aXBsZSByZWNpcGllbnRzLgogCiBXaGVuIHBlcmZvcm1pbmcgYSBtYWlsIHRyYW5zZmVyLCB0aGUgcmVjaXBpZW50IHNob3VsZCBzcGVjaWZ5IGEgdmFsaWQgZW1haWwKIGFkZHJlc3MgdG8gc2VuZCB0aGUgbWFpbCB0by4gKEFkZGVkIGluIDcuMjAuMCkKQEAgLTExMjcsNiArMTE5MCwxOSBAQAogYSBkb21haW4gd2hpY2ggY29udGFpbnMgdGhlIGhvc3RuYW1lLCBvciB0aGUgaG9zdG5hbWUgaXRzZWxmLiBGb3IgZXhhbXBsZSwKIGxvY2FsLmNvbSB3b3VsZCBtYXRjaCBsb2NhbC5jb20sIGxvY2FsLmNvbTo4MCwgYW5kIHd3dy5sb2NhbC5jb20sIGJ1dCBub3QKIHd3dy5ub3Rsb2NhbC5jb20uICAoQWRkZWQgaW4gNy4xOS40KS4KKy5JUCAiLS1jb25uZWN0LXRvIDxob3N0OnBvcnQ6Y29ubmVjdC10by1ob3N0OmNvbm5lY3QtdG8tcG9ydD4iCitGb3IgYSByZXF1ZXN0IHRvIHRoZSBnaXZlbiAiaG9zdDpwb3J0IiBwYWlyLCBjb25uZWN0IHRvCisiY29ubmVjdC10by1ob3N0OmNvbm5lY3QtdG8tcG9ydCIgaW5zdGVhZC4KK1RoaXMgaXMgc3VpdGFibGUgdG8gZGlyZWN0IHRoZSByZXF1ZXN0IGF0IGEgc3BlY2lmaWMgc2VydmVyLCBlLmcuIGF0IGEgc3BlY2lmaWMKK2NsdXN0ZXIgbm9kZSBpbiBhIGNsdXN0ZXIgb2Ygc2VydmVycy4KK1RoaXMgb3B0aW9uIGlzIG9ubHkgdXNlZCB0byBlc3RhYmxpc2ggdGhlIG5ldHdvcmsgY29ubmVjdGlvbi4gSXQgZG9lcyBOT1QKK2FmZmVjdCB0aGUgaG9zdG5hbWUvcG9ydCB0aGF0IGlzIHVzZWQgZm9yIFRMUy9TU0wgKGUuZy4gU05JLCBjZXJ0aWZpY2F0ZQordmVyaWZpY2F0aW9uKSBvciBmb3IgdGhlIGFwcGxpY2F0aW9uIHByb3RvY29scy4KKyJob3N0IiBhbmQgInBvcnQiIG1heSBiZSB0aGUgZW1wdHkgc3RyaW5nLCBtZWFuaW5nICJhbnkgaG9zdC9wb3J0Ii4KKyJjb25uZWN0LXRvLWhvc3QiIGFuZCAiY29ubmVjdC10by1wb3J0IiBtYXkgYWxzbyBiZSB0aGUgZW1wdHkgc3RyaW5nLAorbWVhbmluZyAidXNlIHRoZSByZXF1ZXN0J3Mgb3JpZ2luYWwgaG9zdC9wb3J0Ii4KK1RoaXMgb3B0aW9uIGNhbiBiZSB1c2VkIG1hbnkgdGltZXMgdG8gYWRkIG1hbnkgY29ubmVjdCBydWxlcy4KKyhBZGRlZCBpbiA3LjQ5LjApLgogLklQICItLW50bG0iCiAoSFRUUCkgRW5hYmxlcyBOVExNIGF1dGhlbnRpY2F0aW9uLiBUaGUgTlRMTSBhdXRoZW50aWNhdGlvbiBtZXRob2Qgd2FzCiBkZXNpZ25lZCBieSBNaWNyb3NvZnQgYW5kIGlzIHVzZWQgYnkgSUlTIHdlYiBzZXJ2ZXJzLiBJdCBpcyBhIHByb3ByaWV0YXJ5CkBAIC0xMTQyLDEzICsxMjE4LDE3IEBACiBcZkktViwgLS12ZXJzaW9uXGZQIHRvIHNlZSBpZiB5b3VyIGN1cmwgc3VwcG9ydHMgTlRMTS4KIAogSWYgdGhpcyBvcHRpb24gaXMgdXNlZCBzZXZlcmFsIHRpbWVzLCBvbmx5IHRoZSBmaXJzdCBvbmUgaXMgdXNlZC4KKy5JUCAiLS1udGxtLXdiIgorKEhUVFApIEVuYWJsZXMgTlRMTSBtdWNoIGluIHRoZSBzdHlsZSBcZkktLW50bG1cZlAgZG9lcywgYnV0IGhhbmQgb3ZlciB0aGUKK2F1dGhlbnRpY2F0aW9uIHRvIHRoZSBzZXBhcmF0ZSBiaW5hcnkgbnRsbWF1dGggYXBwbGljYXRpb24gdGhhdCBpcyBleGVjdXRlZAord2hlbiBuZWVkZWQuCiAuSVAgIi1vLCAtLW91dHB1dCA8ZmlsZT4iCiBXcml0ZSBvdXRwdXQgdG8gPGZpbGU+IGluc3RlYWQgb2Ygc3Rkb3V0LiBJZiB5b3UgYXJlIHVzaW5nIHt9IG9yIFtdIHRvIGZldGNoCiBtdWx0aXBsZSBkb2N1bWVudHMsIHlvdSBjYW4gdXNlICcjJyBmb2xsb3dlZCBieSBhIG51bWJlciBpbiB0aGUgPGZpbGU+CiBzcGVjaWZpZXIuIFRoYXQgdmFyaWFibGUgd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSBjdXJyZW50IHN0cmluZyBmb3IgdGhlIFVSTAogYmVpbmcgZmV0Y2hlZC4gTGlrZSBpbjoKIAotICBjdXJsIGh0dHA6Ly97b25lLHR3b30uc2l0ZS5jb20gLW8gImZpbGVfIzEudHh0IgorICBjdXJsIGh0dHA6Ly97b25lLHR3b30uZXhhbXBsZS5jb20gLW8gImZpbGVfIzEudHh0IgogCiBvciB1c2Ugc2V2ZXJhbCB2YXJpYWJsZXMgbGlrZToKIApAQCAtMTE2MywxMiArMTI0MywxNSBAQAogV3JpdGUgb3V0cHV0IHRvIGEgbG9jYWwgZmlsZSBuYW1lZCBsaWtlIHRoZSByZW1vdGUgZmlsZSB3ZSBnZXQuIChPbmx5IHRoZSBmaWxlCiBwYXJ0IG9mIHRoZSByZW1vdGUgZmlsZSBpcyB1c2VkLCB0aGUgcGF0aCBpcyBjdXQgb2ZmLikKIAotVGhlIHJlbW90ZSBmaWxlIG5hbWUgdG8gdXNlIGZvciBzYXZpbmcgaXMgZXh0cmFjdGVkIGZyb20gdGhlIGdpdmVuIFVSTCwKLW5vdGhpbmcgZWxzZS4KK1RoZSBmaWxlIHdpbGwgYmUgc2F2ZWQgaW4gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuIElmIHlvdSB3YW50IHRoZSBmaWxlCitzYXZlZCBpbiBhIGRpZmZlcmVudCBkaXJlY3RvcnksIG1ha2Ugc3VyZSB5b3UgY2hhbmdlIHRoZSBjdXJyZW50IHdvcmtpbmcKK2RpcmVjdG9yeSBiZWZvcmUgaW52b2tpbmcgY3VybCB3aXRoIHRoaXMgb3B0aW9uLgogCi1Db25zZXF1ZW50aWFsbHksIHRoZSBmaWxlIHdpbGwgYmUgc2F2ZWQgaW4gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuIElmCi15b3Ugd2FudCB0aGUgZmlsZSBzYXZlZCBpbiBhIGRpZmZlcmVudCBkaXJlY3RvcnksIG1ha2Ugc3VyZSB5b3UgY2hhbmdlIGN1cnJlbnQKLXdvcmtpbmcgZGlyZWN0b3J5IGJlZm9yZSB5b3UgaW52b2tlIGN1cmwgd2l0aCB0aGUgXGZCLU8sIC0tcmVtb3RlLW5hbWVcZlAgZmxhZyEKK1RoZSByZW1vdGUgZmlsZSBuYW1lIHRvIHVzZSBmb3Igc2F2aW5nIGlzIGV4dHJhY3RlZCBmcm9tIHRoZSBnaXZlbiBVUkwsIG5vdGhpbmcKK2Vsc2UsIGFuZCBpZiBpdCBhbHJlYWR5IGV4aXN0cyBpdCB3aWxsIGJlIG92ZXJ3cml0dGVuLiBJZiB5b3Ugd2FudCB0aGUgc2VydmVyCit0byBiZSBhYmxlIHRvIGNob29zZSB0aGUgZmlsZSBuYW1lIHJlZmVyIHRvIFxmSS1KLCAtLXJlbW90ZS1oZWFkZXItbmFtZVxmUAord2hpY2ggY2FuIGJlIHVzZWQgaW4gYWRkaXRpb24gdG8gdGhpcyBvcHRpb24uIElmIHRoZSBzZXJ2ZXIgY2hvb3NlcyBhIGZpbGUgbmFtZQorYW5kIHRoYXQgbmFtZSBhbHJlYWR5IGV4aXN0cyBpdCB3aWxsIG5vdCBiZSBvdmVyd3JpdHRlbi4KIAogVGhlcmUgaXMgbm8gVVJMIGRlY29kaW5nIGRvbmUgb24gdGhlIGZpbGUgbmFtZS4gSWYgaXQgaGFzICUyMCBvciBvdGhlciBVUkwKIGVuY29kZWQgcGFydHMgb2YgdGhlIG5hbWUsIHRoZXkgd2lsbCBlbmQgdXAgYXMtaXMgYXMgZmlsZSBuYW1lLgpAQCAtMTI0NSwyMSArMTMyOCwyMSBAQAogCiAoQWRkZWQgaW4gNy40Mi4wKQogLklQICItLXBvc3QzMDEiCi0oSFRUUCkgVGVsbHMgY3VybCB0byByZXNwZWN0IFJGQyAyNjE2LzEwLjMuMiBhbmQgbm90IGNvbnZlcnQgUE9TVCByZXF1ZXN0cworKEhUVFApIFRlbGxzIGN1cmwgdG8gcmVzcGVjdCBSRkMgNzIzMC82LjQuMiBhbmQgbm90IGNvbnZlcnQgUE9TVCByZXF1ZXN0cwogaW50byBHRVQgcmVxdWVzdHMgd2hlbiBmb2xsb3dpbmcgYSAzMDEgcmVkaXJlY3Rpb24uIFRoZSBub24tUkZDIGJlaGF2aW91ciBpcwogdWJpcXVpdG91cyBpbiB3ZWIgYnJvd3NlcnMsIHNvIGN1cmwgZG9lcyB0aGUgY29udmVyc2lvbiBieSBkZWZhdWx0IHRvIG1haW50YWluCiBjb25zaXN0ZW5jeS4gSG93ZXZlciwgYSBzZXJ2ZXIgbWF5IHJlcXVpcmUgYSBQT1NUIHRvIHJlbWFpbiBhIFBPU1QgYWZ0ZXIgc3VjaAogYSByZWRpcmVjdGlvbi4gVGhpcyBvcHRpb24gaXMgbWVhbmluZ2Z1bCBvbmx5IHdoZW4gdXNpbmcgXGZJLUwsIC0tbG9jYXRpb25cZlAKIChBZGRlZCBpbiA3LjE3LjEpCiAuSVAgIi0tcG9zdDMwMiIKLShIVFRQKSBUZWxscyBjdXJsIHRvIHJlc3BlY3QgUkZDIDI2MTYvMTAuMy4yIGFuZCBub3QgY29udmVydCBQT1NUIHJlcXVlc3RzCisoSFRUUCkgVGVsbHMgY3VybCB0byByZXNwZWN0IFJGQyA3MjMwLzYuNC4zIGFuZCBub3QgY29udmVydCBQT1NUIHJlcXVlc3RzCiBpbnRvIEdFVCByZXF1ZXN0cyB3aGVuIGZvbGxvd2luZyBhIDMwMiByZWRpcmVjdGlvbi4gVGhlIG5vbi1SRkMgYmVoYXZpb3VyIGlzCiB1YmlxdWl0b3VzIGluIHdlYiBicm93c2Vycywgc28gY3VybCBkb2VzIHRoZSBjb252ZXJzaW9uIGJ5IGRlZmF1bHQgdG8gbWFpbnRhaW4KIGNvbnNpc3RlbmN5LiBIb3dldmVyLCBhIHNlcnZlciBtYXkgcmVxdWlyZSBhIFBPU1QgdG8gcmVtYWluIGEgUE9TVCBhZnRlciBzdWNoCiBhIHJlZGlyZWN0aW9uLiBUaGlzIG9wdGlvbiBpcyBtZWFuaW5nZnVsIG9ubHkgd2hlbiB1c2luZyBcZkktTCwgLS1sb2NhdGlvblxmUAogKEFkZGVkIGluIDcuMTkuMSkKIC5JUCAiLS1wb3N0MzAzIgotKEhUVFApIFRlbGxzIGN1cmwgdG8gcmVzcGVjdCBSRkMgMjYxNi8xMC4zLjIgYW5kIG5vdCBjb252ZXJ0IFBPU1QgcmVxdWVzdHMKKyhIVFRQKSBUZWxscyBjdXJsIHRvIHJlc3BlY3QgUkZDIDcyMzAvNi40LjQgYW5kIG5vdCBjb252ZXJ0IFBPU1QgcmVxdWVzdHMKIGludG8gR0VUIHJlcXVlc3RzIHdoZW4gZm9sbG93aW5nIGEgMzAzIHJlZGlyZWN0aW9uLiBUaGUgbm9uLVJGQyBiZWhhdmlvdXIgaXMKIHViaXF1aXRvdXMgaW4gd2ViIGJyb3dzZXJzLCBzbyBjdXJsIGRvZXMgdGhlIGNvbnZlcnNpb24gYnkgZGVmYXVsdCB0byBtYWludGFpbgogY29uc2lzdGVuY3kuIEhvd2V2ZXIsIGEgc2VydmVyIG1heSByZXF1aXJlIGEgUE9TVCB0byByZW1haW4gYSBQT1NUIGFmdGVyIHN1Y2gKQEAgLTEzMDYsOSArMTM4OSw0MCBAQAogYXMgY29uY2F0ZW5hdGluZyB0aGUgcHJvdG9jb2xzIGludG8gb25lIGluc3RhbmNlIG9mIHRoZSBvcHRpb24uCiAKIChBZGRlZCBpbiA3LjIwLjIpCisuSVAgIi0tcHJvdG8tZGVmYXVsdCA8cHJvdG9jb2w+IgorVGVsbHMgY3VybCB0byB1c2UgXGZJcHJvdG9jb2xcZlAgZm9yIGFueSBVUkwgbWlzc2luZyBhIHNjaGVtZSBuYW1lLgorCitFeGFtcGxlOgorCisuUlMKKy5JUCAiLS1wcm90by1kZWZhdWx0IGh0dHBzIGZ0cC5tb3ppbGxhLm9yZyIKK2h0dHBzOi8vZnRwLm1vemlsbGEub3JnCisuUkUKKworQW4gdW5rbm93biBvciB1bnN1cHBvcnRlZCBwcm90b2NvbCBjYXVzZXMgZXJyb3IKK1xmSUNVUkxFX1VOU1VQUE9SVEVEX1BST1RPQ09MXGZQLgorCitUaGlzIG9wdGlvbiBkb2VzIG5vdCBjaGFuZ2UgdGhlIGRlZmF1bHQgcHJveHkgcHJvdG9jb2wgKGh0dHApLgorCitXaXRob3V0IHRoaXMgb3B0aW9uIGN1cmwgd291bGQgbWFrZSBhIGd1ZXNzIGJhc2VkIG9uIHRoZSBob3N0LCBzZWUgXGZJLS11cmxcZlAKK2ZvciBkZXRhaWxzLgorCisoQWRkZWQgaW4gNy40NS4wKQogLklQICItLXByb3RvLXJlZGlyIDxwcm90b2NvbHM+IgotVGVsbHMgY3VybCB0byB1c2UgdGhlIGxpc3RlZCBwcm90b2NvbHMgYWZ0ZXIgYSByZWRpcmVjdC4gU2VlIC0tcHJvdG8gZm9yCi1ob3cgcHJvdG9jb2xzIGFyZSByZXByZXNlbnRlZC4KK1RlbGxzIGN1cmwgdG8gdXNlIHRoZSBsaXN0ZWQgcHJvdG9jb2xzIG9uIHJlZGlyZWN0LiBTZWUgLS1wcm90byBmb3IgaG93Citwcm90b2NvbHMgYXJlIHJlcHJlc2VudGVkLgorCitFeGFtcGxlOgorCisuUlMKKy5JUCAiLS1wcm90by1yZWRpciAtYWxsLGh0dHAsaHR0cHMiCitBbGxvdyBvbmx5IEhUVFAgYW5kIEhUVFBTIG9uIHJlZGlyZWN0LgorLlJFCisKK0J5IGRlZmF1bHQgY3VybCB3aWxsIGFsbG93IGFsbCBwcm90b2NvbHMgb24gcmVkaXJlY3QgZXhjZXB0IHNldmVyYWwgZGlzYWJsZWQKK2ZvciBzZWN1cml0eSByZWFzb25zOiBTaW5jZSA3LjE5LjQgRklMRSBhbmQgU0NQIGFyZSBkaXNhYmxlZCwgYW5kIHNpbmNlIDcuNDAuMAorU01CIGFuZCBTTUJTIGFyZSBhbHNvIGRpc2FibGVkLiBTcGVjaWZ5aW5nIFxmSWFsbFxmUCBvciBcZkkrYWxsXGZQIGVuYWJsZXMgYWxsCitwcm90b2NvbHMgb24gcmVkaXJlY3QsIGluY2x1ZGluZyB0aG9zZSBkaXNhYmxlZCBmb3Igc2VjdXJpdHkuCiAKIChBZGRlZCBpbiA3LjIwLjIpCiAuSVAgIi0tcHJveHktYW55YXV0aCIKQEAgLTEzNTEsNyArMTQ2NSw3IEBACiBwcml2YXRlIGtleSBmaWxlLCBzbyBwYXNzaW5nIHRoaXMgb3B0aW9uIGlzIGdlbmVyYWxseSBub3QgcmVxdWlyZWQuIE5vdGUgdGhhdAogdGhpcyBwdWJsaWMga2V5IGV4dHJhY3Rpb24gcmVxdWlyZXMgbGliY3VybCB0byBiZSBsaW5rZWQgYWdhaW5zdCBhIGNvcHkgb2YKIGxpYnNzaDIgMS4yLjggb3IgaGlnaGVyIHRoYXQgaXMgaXRzZWxmIGxpbmtlZCBhZ2FpbnN0IE9wZW5TU0wuKQotLklQICItcSIKKy5JUCAiLXEsIC0tZGlzYWJsZSIKIElmIHVzZWQgYXMgdGhlIGZpcnN0IHBhcmFtZXRlciBvbiB0aGUgY29tbWFuZCBsaW5lLCB0aGUgXGZJY3VybHJjXGZQIGNvbmZpZwogZmlsZSB3aWxsIG5vdCBiZSByZWFkIGFuZCB1c2VkLiBTZWUgdGhlIFxmSS1LLCAtLWNvbmZpZ1xmUCBmb3IgZGV0YWlscyBvbiB0aGUKIGRlZmF1bHQgY29uZmlnIGZpbGUgc2VhcmNoIHBhdGguCkBAIC0xNDIzLDEzICsxNTM3LDEwIEBACiBzcGVjaWZpZXMgdGhlIGJ5dGVzIGZyb20gb2Zmc2V0IDk1MDAgYW5kIGZvcndhcmQKIC5UUAogLkIgMC0wLC0xCi1zcGVjaWZpZXMgdGhlIGZpcnN0IGFuZCBsYXN0IGJ5dGUgb25seSgqKShIKQotLlRQCi0uQiA1MDAtNzAwLDYwMC03OTkKLXNwZWNpZmllcyAzMDAgYnl0ZXMgZnJvbSBvZmZzZXQgNTAwKEgpCitzcGVjaWZpZXMgdGhlIGZpcnN0IGFuZCBsYXN0IGJ5dGUgb25seSgqKShIVFRQKQogLlRQCiAuQiAxMDAtMTk5LDUwMC01OTkKLXNwZWNpZmllcyB0d28gc2VwYXJhdGUgMTAwLWJ5dGUgcmFuZ2VzKCopKEgpCitzcGVjaWZpZXMgdHdvIHNlcGFyYXRlIDEwMC1ieXRlIHJhbmdlcygqKSAoSFRUUCkKIC5SRQogLklQCiAoKikgPSBOT1RFIHRoYXQgdGhpcyB3aWxsIGNhdXNlIHRoZSBzZXJ2ZXIgdG8gcmVwbHkgd2l0aCBhIG11bHRpcGFydApAQCAtMTQ3NCw2ICsxNTg1LDkgQEAKIHlvdSBuZWVkIHNldmVyYWwgZW50cmllcyBpZiB5b3Ugd2FudCB0byBwcm92aWRlIGFkZHJlc3MgZm9yIHRoZSBzYW1lIGhvc3QgYnV0CiBkaWZmZXJlbnQgcG9ydHMuCiAKK1RoZSBwcm92aWRlZCBhZGRyZXNzIHNldCBieSB0aGlzIG9wdGlvbiB3aWxsIGJlIHVzZWQgZXZlbiBpZiBcZkktNCwgLS1pcHY0XGZQCitvciBcZkktNiwgLS1pcHY2XGZQIGlzIHNldCB0byBtYWtlIGN1cmwgdXNlIGFub3RoZXIgSVAgdmVyc2lvbi4KKwogVGhpcyBvcHRpb24gY2FuIGJlIHVzZWQgbWFueSB0aW1lcyB0byBhZGQgbWFueSBob3N0IG5hbWVzIHRvIHJlc29sdmUuCiAKIChBZGRlZCBpbiA3LjIxLjMpCkBAIC0xNTM0LDE0ICsxNjQ4LDE3IEBACiAoRlRQLCBQT1AzLCBJTUFQLCBTTVRQKSBSZXF1aXJlIFNTTC9UTFMgZm9yIHRoZSBjb25uZWN0aW9uLiAgVGVybWluYXRlcyB0aGUKIGNvbm5lY3Rpb24gaWYgdGhlIHNlcnZlciBkb2Vzbid0IHN1cHBvcnQgU1NML1RMUy4gKEFkZGVkIGluIDcuMjAuMCkKIAotVGhpcyBvcHRpb24gd2FzIGZvcm1lcmx5IGtub3duIGFzIFxmSS0tZnRwLXNzbC1yZXFkXGZQIChhZGRlZCBpbiA3LjE1LjUpLiBUaGF0Ci1vcHRpb24gbmFtZSBjYW4gc3RpbGwgYmUgdXNlZCBidXQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHZlcnNpb24uCitUaGlzIG9wdGlvbiB3YXMgZm9ybWVybHkga25vd24gYXMgXGZJLS1mdHAtc3NsLXJlcWRcZlAuCiAuSVAgIi0tc3NsLWFsbG93LWJlYXN0IgogKFNTTCkgVGhpcyBvcHRpb24gdGVsbHMgY3VybCB0byBub3Qgd29yayBhcm91bmQgYSBzZWN1cml0eSBmbGF3IGluIHRoZSBTU0wzCiBhbmQgVExTMS4wIHByb3RvY29scyBrbm93biBhcyBCRUFTVC4gIElmIHRoaXMgb3B0aW9uIGlzbid0IHVzZWQsIHRoZSBTU0wgbGF5ZXIKIG1heSB1c2Ugd29ya2Fyb3VuZHMga25vd24gdG8gY2F1c2UgaW50ZXJvcGVyYWJpbGl0eSBwcm9ibGVtcyB3aXRoIHNvbWUgb2xkZXIKIFNTTCBpbXBsZW1lbnRhdGlvbnMuIFdBUk5JTkc6IHRoaXMgb3B0aW9uIGxvb3NlbnMgdGhlIFNTTCBzZWN1cml0eSwgYW5kIGJ5CiB1c2luZyB0aGlzIGZsYWcgeW91IGFzayBmb3IgZXhhY3RseSB0aGF0LiAgKEFkZGVkIGluIDcuMjUuMCkKKy5JUCAiLS1zc2wtbm8tcmV2b2tlIgorKFdpblNTTCkgVGhpcyBvcHRpb24gdGVsbHMgY3VybCB0byBkaXNhYmxlIGNlcnRpZmljYXRlIHJldm9jYXRpb24gY2hlY2tzLgorV0FSTklORzogdGhpcyBvcHRpb24gbG9vc2VucyB0aGUgU1NMIHNlY3VyaXR5LCBhbmQgYnkgdXNpbmcgdGhpcyBmbGFnIHlvdSBhc2sKK2ZvciBleGFjdGx5IHRoYXQuICAoQWRkZWQgaW4gNy40NC4wKQogLklQICItLXNvY2tzNCA8aG9zdFs6cG9ydF0+IgogVXNlIHRoZSBzcGVjaWZpZWQgU09DS1M0IHByb3h5LiBJZiB0aGUgcG9ydCBudW1iZXIgaXMgbm90IHNwZWNpZmllZCwgaXQgaXMKIGFzc3VtZWQgYXQgcG9ydCAxMDgwLiAoQWRkZWQgaW4gNy4xNS4yKQpAQCAtMTYzNywxNCArMTc1NCwxNiBAQAogYXJndW1lbnQsIG1lYW5pbmcgdGhhdCB5b3UgY2FuIHVwbG9hZCBtdWx0aXBsZSBmaWxlcyB0byBhIHNpbmdsZSBVUkwgYnkgdXNpbmcKIHRoZSBzYW1lIFVSTCBnbG9iYmluZyBzdHlsZSBzdXBwb3J0ZWQgaW4gdGhlIFVSTCwgbGlrZSB0aGlzOgogCi1jdXJsIC1UICJ7ZmlsZTEsZmlsZTJ9IiBodHRwOi8vd3d3LnVwbG9hZHRvdGhpc3NpdGUuY29tCitjdXJsIC1UICJ7ZmlsZTEsZmlsZTJ9IiBodHRwOi8vd3d3LmV4YW1wbGUuY29tCiAKIG9yIGV2ZW4KIAotY3VybCAtVCAiaW1nWzEtMTAwMF0ucG5nIiBmdHA6Ly9mdHAucGljdHVyZW1hbmlhLmNvbS91cGxvYWQvCitjdXJsIC1UICJpbWdbMS0xMDAwXS5wbmciIGZ0cDovL2Z0cC5leGFtcGxlLmNvbS91cGxvYWQvCiAuSVAgIi0tdGNwLW5vZGVsYXkiCiBUdXJuIG9uIHRoZSBUQ1BfTk9ERUxBWSBvcHRpb24uIFNlZSB0aGUgXGZJY3VybF9lYXN5X3NldG9wdCgzKVxmUCBtYW4gcGFnZSBmb3IKIGRldGFpbHMgYWJvdXQgdGhpcyBvcHRpb24uIChBZGRlZCBpbiA3LjExLjIpCisuSVAgIi0tdGNwLWZhc3RvcGVuIgorRW5hYmxlIHVzZSBvZiBUQ1AgRmFzdCBPcGVuIChSRkM3NDEzKS4gKEFkZGVkIGluIDcuNDkuMCkKIC5JUCAiLS10ZnRwLWJsa3NpemUgPHZhbHVlPiIKIChURlRQKSBTZXQgVEZUUCBCTEtTSVpFIG9wdGlvbiAobXVzdCBiZSA+NTEyKS4gVGhpcyBpcyB0aGUgYmxvY2sgc2l6ZSB0aGF0CiBjdXJsIHdpbGwgdHJ5IHRvIHVzZSB3aGVuIHRyYW5zZmVycmluZyBkYXRhIHRvIG9yIGZyb20gYSBURlRQIHNlcnZlci4gQnkKQEAgLTE2NTMsNiArMTc3MiwxNCBAQAogSWYgdGhpcyBvcHRpb24gaXMgdXNlZCBzZXZlcmFsIHRpbWVzLCB0aGUgbGFzdCBvbmUgd2lsbCBiZSB1c2VkLgogCiAoQWRkZWQgaW4gNy4yMC4wKQorLklQICItLXRmdHAtbm8tb3B0aW9ucyIKKyhURlRQKSBUZWxscyBjdXJsIG5vdCB0byBzZW5kIFRGVFAgb3B0aW9ucyByZXF1ZXN0cy4KKworVGhpcyBvcHRpb24gaW1wcm92ZXMgaW50ZXJvcCB3aXRoIHNvbWUgbGVnYWN5IHNlcnZlcnMgdGhhdCBkbyBub3QgYWNrbm93bGVkZ2UKK29yIHByb3Blcmx5IGltcGxlbWVudCBURlRQIG9wdGlvbnMuIFdoZW4gdGhpcyBvcHRpb24gaXMgdXNlZAorXGZJLS10ZnRwLWJsa3NpemVcZlAgaXMgaWdub3JlZC4KKworKEFkZGVkIGluIDcuNDguMCkKIC5JUCAiLS10bHNhdXRodHlwZSA8YXV0aHR5cGU+IgogU2V0IFRMUyBhdXRoZW50aWNhdGlvbiB0eXBlLiBDdXJyZW50bHksIHRoZSBvbmx5IHN1cHBvcnRlZCBvcHRpb24gaXMgIlNSUCIsCiBmb3IgVExTLVNSUCAoUkZDIDUwNTQpLiBJZiBcZkktLXRsc3VzZXJcZlAgYW5kIFxmSS0tdGxzcGFzc3dvcmRcZlAgYXJlCkBAIC0xNzUxLDYgKzE4NzgsMTIgQEAKIFNwZWNpZnkgYSBVUkwgdG8gZmV0Y2guIFRoaXMgb3B0aW9uIGlzIG1vc3RseSBoYW5keSB3aGVuIHlvdSB3YW50IHRvIHNwZWNpZnkKIFVSTChzKSBpbiBhIGNvbmZpZyBmaWxlLgogCitJZiB0aGUgZ2l2ZW4gVVJMIGlzIG1pc3NpbmcgYSBzY2hlbWUgbmFtZSAoc3VjaCBhcyAiaHR0cDovLyIgb3IgImZ0cDovLyIgZXRjKQordGhlbiBjdXJsIHdpbGwgbWFrZSBhIGd1ZXNzIGJhc2VkIG9uIHRoZSBob3N0LiBJZiB0aGUgb3V0ZXJtb3N0IHN1Yi1kb21haW4gbmFtZQorbWF0Y2hlcyBESUNULCBGVFAsIElNQVAsIExEQVAsIFBPUDMgb3IgU01UUCB0aGVuIHRoYXQgcHJvdG9jb2wgd2lsbCBiZSB1c2VkLAorb3RoZXJ3aXNlIEhUVFAgd2lsbCBiZSB1c2VkLiBTaW5jZSA3LjQ1LjAgZ3Vlc3NpbmcgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgYQorZGVmYXVsdCBwcm90b2NvbCwgc2VlIFxmSS0tcHJvdG8tZGVmYXVsdFxmUCBmb3IgZGV0YWlscy4KKwogVGhpcyBvcHRpb24gbWF5IGJlIHVzZWQgYW55IG51bWJlciBvZiB0aW1lcy4gVG8gY29udHJvbCB3aGVyZSB0aGlzIFVSTCBpcwogd3JpdHRlbiwgdXNlIHRoZSBcZkktbywgLS1vdXRwdXRcZlAgb3IgdGhlIFxmSS1PLCAtLXJlbW90ZS1uYW1lXGZQIG9wdGlvbnMuCiAuSVAgIi12LCAtLXZlcmJvc2UiCkBAIC0xNzk2LDcgKzE5MjksNyBAQAogVGhlIHVsdGltYXRlIGZpbGVuYW1lIHRoYXQgY3VybCB3cml0ZXMgb3V0IHRvLiBUaGlzIGlzIG9ubHkgbWVhbmluZ2Z1bCBpZiBjdXJsCiBpcyB0b2xkIHRvIHdyaXRlIHRvIGEgZmlsZSB3aXRoIHRoZSBcZkktLXJlbW90ZS1uYW1lXGZQIG9yIFxmSS0tb3V0cHV0XGZQCiBvcHRpb24uIEl0J3MgbW9zdCB1c2VmdWwgaW4gY29tYmluYXRpb24gd2l0aCB0aGUgXGZJLS1yZW1vdGUtaGVhZGVyLW5hbWVcZlAKLW9wdGlvbi4gKEFkZGVkIGluIDcuMjUuMSkKK29wdGlvbi4gKEFkZGVkIGluIDcuMjYuMCkKIC5UUAogLkIgZnRwX2VudHJ5X3BhdGgKIFRoZSBpbml0aWFsIHBhdGggY3VybCBlbmRlZCB1cCBpbiB3aGVuIGxvZ2dpbmcgb24gdG8gdGhlIHJlbW90ZSBGVFAKQEAgLTIyNzAsNyArMjQwMyw3IEBACiBEYW5pZWwgU3RlbmJlcmcgaXMgdGhlIG1haW4gYXV0aG9yLCBidXQgdGhlIHdob2xlIGxpc3Qgb2YgY29udHJpYnV0b3JzIGlzCiBmb3VuZCBpbiB0aGUgc2VwYXJhdGUgVEhBTktTIGZpbGUuCiAuU0ggV1dXCi1odHRwOi8vY3VybC5oYXh4LnNlCitodHRwczovL2N1cmwuaGF4eC5zZQogLlNIIEZUUAogZnRwOi8vZnRwLnN1bmV0LnNlL3B1Yi93d3cvdXRpbGl0aWVzL2N1cmwvCiAuU0ggIlNFRSBBTFNPIgpkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy8uZ2l0aWdub3JlIGIvZG9jcy9leGFtcGxlcy8uZ2l0aWdub3JlCmluZGV4IGQ2NGUxMmQuLmFlY2U2NzEgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvLmdpdGlnbm9yZQorKysgYi9kb2NzL2V4YW1wbGVzLy5naXRpZ25vcmUKQEAgLTczLDMgKzczLDcgQEAKIHVybDJmaWxlCiB1c2VyY2VydGlubWVtCiB4bWxzdHJlYW0KK2h0dHAyLWRvd25sb2FkCitodHRwMi1zZXJ2ZXJwdXNoCitodHRwMi11cGxvYWQKK2ltYXAtbHN1YgpkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy8xMC1hdC1hLXRpbWUuYyBiL2RvY3MvZXhhbXBsZXMvMTAtYXQtYS10aW1lLmMKaW5kZXggNWQ5NWE4YS4uYWExODYyZSAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy8xMC1hdC1hLXRpbWUuYworKysgYi9kb2NzL2V4YW1wbGVzLzEwLWF0LWEtdGltZS5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTksOSArMTksMTAgQEAKICAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qIEV4YW1wbGUgYXBwbGljYXRpb24gc291cmNlIGNvZGUgdXNpbmcgdGhlIG11bHRpIGludGVyZmFjZSB0byBkb3dubG9hZCBtYW55Ci0gKiBmaWxlcywgYnV0IHdpdGggYSBjYXBwZWQgbWF4aW11bSBhbW91bnQgb2Ygc2ltdWx0YW5lb3VzIHRyYW5zZmVycy4KLSAqCisvKiA8REVTQz4KKyAqIFNvdXJjZSBjb2RlIHVzaW5nIHRoZSBtdWx0aSBpbnRlcmZhY2UgdG8gZG93bmxvYWQgbWFueQorICogZmlsZXMsIHdpdGggYSBjYXBwZWQgbWF4aW11bSBhbW91bnQgb2Ygc2ltdWx0YW5lb3VzIHRyYW5zZmVycy4KKyAqIDwvREVTQz4KICAqIFdyaXR0ZW4gYnkgTWljaGFlbCBXYWxsbmVyCiAgKi8KIApAQCAtMTI2LDQxICsxMjcsNDIgQEAKICAgICAgdXNlcyAqLwogICBjdXJsX211bHRpX3NldG9wdChjbSwgQ1VSTE1PUFRfTUFYQ09OTkVDVFMsIChsb25nKU1BWCk7CiAKLSAgZm9yIChDID0gMDsgQyA8IE1BWDsgKytDKSB7CisgIGZvcihDID0gMDsgQyA8IE1BWDsgKytDKSB7CiAgICAgaW5pdChjbSwgQyk7CiAgIH0KIAotICB3aGlsZSAoVSkgeworICB3aGlsZShVKSB7CiAgICAgY3VybF9tdWx0aV9wZXJmb3JtKGNtLCAmVSk7CiAKLSAgICBpZiAoVSkgeworICAgIGlmKFUpIHsKICAgICAgIEZEX1pFUk8oJlIpOwogICAgICAgRkRfWkVSTygmVyk7CiAgICAgICBGRF9aRVJPKCZFKTsKIAotICAgICAgaWYgKGN1cmxfbXVsdGlfZmRzZXQoY20sICZSLCAmVywgJkUsICZNKSkgeworICAgICAgaWYoY3VybF9tdWx0aV9mZHNldChjbSwgJlIsICZXLCAmRSwgJk0pKSB7CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRTogY3VybF9tdWx0aV9mZHNldFxuIik7CiAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CiAgICAgICB9CiAKLSAgICAgIGlmIChjdXJsX211bHRpX3RpbWVvdXQoY20sICZMKSkgeworICAgICAgaWYoY3VybF9tdWx0aV90aW1lb3V0KGNtLCAmTCkpIHsKICAgICAgICAgZnByaW50ZihzdGRlcnIsICJFOiBjdXJsX211bHRpX3RpbWVvdXRcbiIpOwogICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICAgICAgfQotICAgICAgaWYgKEwgPT0gLTEpCisgICAgICBpZihMID09IC0xKQogICAgICAgICBMID0gMTAwOwogCi0gICAgICBpZiAoTSA9PSAtMSkgeworICAgICAgaWYoTSA9PSAtMSkgewogI2lmZGVmIFdJTjMyCiAgICAgICAgIFNsZWVwKEwpOwogI2Vsc2UKLSAgICAgICAgc2xlZXAoTCAvIDEwMDApOworICAgICAgICBzbGVlcCgodW5zaWduZWQgaW50KUwgLyAxMDAwKTsKICNlbmRpZgotICAgICAgfSBlbHNlIHsKKyAgICAgIH0KKyAgICAgIGVsc2UgewogICAgICAgICBULnR2X3NlYyA9IEwvMTAwMDsKICAgICAgICAgVC50dl91c2VjID0gKEwlMTAwMCkqMTAwMDsKIAotICAgICAgICBpZiAoMCA+IHNlbGVjdChNKzEsICZSLCAmVywgJkUsICZUKSkgeworICAgICAgICBpZigwID4gc2VsZWN0KE0rMSwgJlIsICZXLCAmRSwgJlQpKSB7CiAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJFOiBzZWxlY3QoJWksLCwsJWxpKTogJWk6ICVzXG4iLAogICAgICAgICAgICAgICBNKzEsIEwsIGVycm5vLCBzdHJlcnJvcihlcnJubykpOwogICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CkBAIC0xNjgsOCArMTcwLDggQEAKICAgICAgIH0KICAgICB9CiAKLSAgICB3aGlsZSAoKG1zZyA9IGN1cmxfbXVsdGlfaW5mb19yZWFkKGNtLCAmUSkpKSB7Ci0gICAgICBpZiAobXNnLT5tc2cgPT0gQ1VSTE1TR19ET05FKSB7CisgICAgd2hpbGUoKG1zZyA9IGN1cmxfbXVsdGlfaW5mb19yZWFkKGNtLCAmUSkpKSB7CisgICAgICBpZihtc2ctPm1zZyA9PSBDVVJMTVNHX0RPTkUpIHsKICAgICAgICAgY2hhciAqdXJsOwogICAgICAgICBDVVJMICplID0gbXNnLT5lYXN5X2hhbmRsZTsKICAgICAgICAgY3VybF9lYXN5X2dldGluZm8obXNnLT5lYXN5X2hhbmRsZSwgQ1VSTElORk9fUFJJVkFURSwgJnVybCk7CkBAIC0xODEsNyArMTgzLDcgQEAKICAgICAgIGVsc2UgewogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkU6IENVUkxNc2cgKCVkKVxuIiwgbXNnLT5tc2cpOwogICAgICAgfQotICAgICAgaWYgKEMgPCBDTlQpIHsKKyAgICAgIGlmKEMgPCBDTlQpIHsKICAgICAgICAgaW5pdChjbSwgQysrKTsKICAgICAgICAgVSsrOyAvKiBqdXN0IHRvIHByZXZlbnQgaXQgZnJvbSByZW1haW5pbmcgYXQgMCBpZiB0aGVyZSBhcmUgbW9yZQogICAgICAgICAgICAgICAgIFVSTHMgdG8gZ2V0ICovCmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL01ha2VmaWxlLmFtIGIvZG9jcy9leGFtcGxlcy9NYWtlZmlsZS5hbQppbmRleCA4ZTJiYzlhLi43YTU2ZjM0IDEwMDY0NAotLS0gYS9kb2NzL2V4YW1wbGVzL01ha2VmaWxlLmFtCisrKyBiL2RvY3MvZXhhbXBsZXMvTWFrZWZpbGUuYW0KQEAgLTUsMTEgKzUsMTEgQEAKICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAjCi0jIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTIsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisjIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAjCiAjIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAjCiAjIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTYxLDMgKzYxLDYgQEAKIGluY2x1ZGUgTWFrZWZpbGUuaW5jCiAKIGFsbDogJChjaGVja19QUk9HUkFNUykKKworY2hlY2tzcmM6CisJQFBFUkxAICQodG9wX3NyY2RpcikvbGliL2NoZWNrc3JjLnBsICQoc3JjZGlyKS8qLmMKZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvTWFrZWZpbGUuZXhhbXBsZSBiL2RvY3MvZXhhbXBsZXMvTWFrZWZpbGUuZXhhbXBsZQppbmRleCBkZmQxMTc4Li4xN2U2MTRlIDEwMDY0NAotLS0gYS9kb2NzL2V4YW1wbGVzL01ha2VmaWxlLmV4YW1wbGUKKysrIGIvZG9jcy9leGFtcGxlcy9NYWtlZmlsZS5leGFtcGxlCkBAIC05LDcgKzksNyBAQAogIwogIyBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogIyB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0jIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisjIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogIwogIyBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICMgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL01ha2VmaWxlLmluYyBiL2RvY3MvZXhhbXBsZXMvTWFrZWZpbGUuaW5jCmluZGV4IDRiMGMyOGYuLjhjZTZmNTcgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvTWFrZWZpbGUuaW5jCisrKyBiL2RvY3MvZXhhbXBsZXMvTWFrZWZpbGUuaW5jCkBAIC01LDExICs1LDExIEBACiAjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogIwotIyBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorIyBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogIwogIyBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogIyB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0jIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisjIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogIwogIyBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICMgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zMiw3ICszMiw3IEBACiAgIGltYXAtbGlzdCBpbWFwLWxzdWIgaW1hcC1mZXRjaCBpbWFwLXN0b3JlIGltYXAtYXBwZW5kIGltYXAtZXhhbWluZSAgICAgICBcCiAgIGltYXAtc2VhcmNoIGltYXAtY3JlYXRlIGltYXAtZGVsZXRlIGltYXAtY29weSBpbWFwLW5vb3AgaW1hcC1zc2wgICAgICAgICBcCiAgIGltYXAtdGxzIGltYXAtbXVsdGkgdXJsMmZpbGUgc2Z0cGdldCBmdHBzZ2V0IHBvc3Rpbm1lbW9yeSBodHRwMi1kb3dubG9hZCBcCi0gIGh0dHAyLXVwbG9hZAorICBodHRwMi11cGxvYWQgaHR0cDItc2VydmVycHVzaCBnZXRyZWRpcmVjdAogCiAjIFRoZXNlIGV4YW1wbGVzIHJlcXVpcmUgZXh0ZXJuYWwgZGVwZW5kZW5jaWVzIHRoYXQgbWF5IG5vdCBiZSBjb21tb25seQogIyBhdmFpbGFibGUgb24gUE9TSVggc3lzdGVtcywgc28gZG9uJ3QgYm90aGVyIGF0dGVtcHRpbmcgdG8gY29tcGlsZSB0aGVtIGhlcmUuCmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL01ha2VmaWxlLm0zMiBiL2RvY3MvZXhhbXBsZXMvTWFrZWZpbGUubTMyCmluZGV4IDJkYTUyOTQuLmU3NWI2ZDEgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvTWFrZWZpbGUubTMyCisrKyBiL2RvY3MvZXhhbXBsZXMvTWFrZWZpbGUubTMyCkBAIC05LDcgKzksNyBAQAogIwogIyBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogIyB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0jIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisjIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogIwogIyBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICMgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC01MCw3ICs1MCw3IEBACiBlbmRpZgogIyBFZGl0IHRoZSBwYXRoIGJlbG93IHRvIHBvaW50IHRvIHRoZSBiYXNlIG9mIHlvdXIgbGliaWRuIHBhY2thZ2UuCiBpZm5kZWYgTElCSUROX1BBVEgKLUxJQklETl9QQVRIID0gLi4vLi4vLi4vbGliaWRuLTEuMzAKK0xJQklETl9QQVRIID0gLi4vLi4vLi4vbGliaWRuLTEuMzIKIGVuZGlmCiAjIEVkaXQgdGhlIHBhdGggYmVsb3cgdG8gcG9pbnQgdG8gdGhlIGJhc2Ugb2YgeW91ciBNUyBJRE4gcGFja2FnZS4KICMgTWljcm9zb2Z0IEludGVybmF0aW9uYWxpemVkIERvbWFpbiBOYW1lcyAoSUROKSBNaXRpZ2F0aW9uIEFQSXMgMS4xCmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL01ha2VmaWxlLm5ldHdhcmUgYi9kb2NzL2V4YW1wbGVzL01ha2VmaWxlLm5ldHdhcmUKaW5kZXggZjhlOTk1NS4uMmQ4NWU3MyAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9NYWtlZmlsZS5uZXR3YXJlCisrKyBiL2RvY3MvZXhhbXBsZXMvTWFrZWZpbGUubmV0d2FyZQpAQCAtMzQsNyArMzQsNyBAQAogCiAjIEVkaXQgdGhlIHBhdGggYmVsb3cgdG8gcG9pbnQgdG8gdGhlIGJhc2Ugb2YgeW91ciBsaWJpZG4gcGFja2FnZS4KIGlmbmRlZiBMSUJJRE5fUEFUSAotTElCSUROX1BBVEggPSAuLi8uLi8uLi9saWJpZG4tMS4zMAorTElCSUROX1BBVEggPSAuLi8uLi8uLi9saWJpZG4tMS4zMgogZW5kaWYKIAogIyBFZGl0IHRoZSBwYXRoIGJlbG93IHRvIHBvaW50IHRvIHRoZSBiYXNlIG9mIHlvdXIgbGlicnRtcCBwYWNrYWdlLgpkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy9SRUFETUUgYi9kb2NzL2V4YW1wbGVzL1JFQURNRQppbmRleCAxY2E2MmExLi4wNzhjYWJlIDEwMDY0NAotLS0gYS9kb2NzL2V4YW1wbGVzL1JFQURNRQorKysgYi9kb2NzL2V4YW1wbGVzL1JFQURNRQpAQCAtMzIsNTEgKzMyLDcgQEAKIAogRVhBTVBMRVMKIAotYW55YXV0aHB1dC5jICAgLSBIVFRQIFBVVCB1c2luZyAiYW55IiBhdXRoZW50aWNhdGlvbiBtZXRob2QKLWNhY2VydGlubWVtLmMgIC0gVXNlIGEgYnVpbHQtaW4gUEVNIGNlcnRpZmljYXRlIHRvIHJldHJpZXZlIGEgaHR0cHMgcGFnZQotY29va2llX2ludGVyZmFjZS5jIC0gc2hvd3MgdXNhZ2Ugb2Ygc2ltcGxlIGNvb2tpZSBpbnRlcmZhY2UKLWN1cmxndGsuYyAgICAgIC0gZG93bmxvYWQgdXNpbmcgYSBHVEsgcHJvZ3Jlc3MgYmFyCi1jdXJseC5jICAgICAgICAtIGdldHRpbmcgZmlsZSBpbmZvIGZyb20gdGhlIHJlbW90ZSBjZXJ0IGRhdGEKLWRlYnVnLmMgICAgICAgIC0gc2hvd2luZyBob3cgdG8gdXNlIHRoZSBkZWJ1ZyBjYWxsYmFjawotZmlsZXVwbG9hZC5jICAgLSB1cGxvYWRpbmcgdG8gYSBmaWxlOi8vIFVSTAotZm9wZW4uYyAgICAgICAgLSBmb3BlbigpIGxheWVyIHRoYXQgc3VwcG9ydHMgb3BlbmluZyBVUkxzIGFuZCBmaWxlcwotZnRwZ2V0LmMgICAgICAgLSBzaW1wbGUgZ2V0dGluZyBhIGZpbGUgZnJvbSBGVFAKLWZ0cGdldHJlc3AuYyAgIC0gZ2V0IHRoZSByZXNwb25zZSBzdHJpbmdzIGZyb20gdGhlIEZUUCBzZXJ2ZXIKLWZ0cHVwbG9hZC5jICAgIC0gdXBsb2FkIGEgZmlsZSB0byBhbiBGVFAgc2VydmVyCi1mdHB1cGxvYWRyZXN1bWUuYyAtIHJlc3VtZSBhbiB1cGxvYWQgdG8gYW4gRlRQIHNlcnZlcgotZ2V0aW5mby5jICAgICAgLSBnZXQgdGhlIENvbnRlbnQtVHlwZSBmcm9tIHRoZSByZWNlbnQgdHJhbnNmZXIKLWdldGlubWVtb3J5LmMgIC0gZG93bmxvYWQgYSBmaWxlIHRvIG1lbW9yeSBvbmx5Ci1naGlwZXIuYyAgICAgICAtIGN1cmxfbXVsdGlfc29ja2V0KCkgdXNpbmcgY29kZSB3aXRoIGdsaWItMgotaGlwZXJmaWZvLmMgICAgLSBkb3dubG9hZHMgYWxsIFVSTHMgd3JpdHRlbiB0byB0aGUgZmlmbywgdXNpbmcKLSAgICAgICAgICAgICAgICAgY3VybF9tdWx0aV9zb2NrZXQoKSBhbmQgbGliZXZlbnQKLWh0bWx0aWR5LmMgICAgIC0gZG93bmxvYWQgYSBkb2N1bWVudCBhbmQgdXNlIGxpYnRpZHkgdG8gcGFyc2UgdGhlIEhUTUwKLWh0bWx0aXRsZS5jYyAgIC0gZG93bmxvYWQgYSBIVE1MIGZpbGUgYW5kIGV4dHJhY3QgdGhlIDx0aXRsZT4gdGFnIGZyb20gYSBIVE1MCi0gICAgICAgICAgICAgICAgIHBhZ2UgdXNpbmcgbGlieG1sCi1odHRwLXBvc3QuYyAgICAtIEhUVFAgUE9TVAotaHR0cHB1dC5jICAgICAgLSBIVFRQIFBVVCBhIGxvY2FsIGZpbGUKLWh0dHBzLmMgICAgICAgIC0gc2ltcGxlIEhUVFBTIHRyYW5zZmVyCi1pbWFwLmMgICAgICAgICAtIHNpbXBsZSBJTUFQIHRyYW5zZmVyCi1tdWx0aS1hcHAuYyAgICAtIGEgbXVsdGktaW50ZXJmYWNlIGFwcAotbXVsdGktZGVidWdjYWxsYmFjay5jIC0gYSBtdWx0aS1pbnRlcmZhY2UgYXBwIHVzaW5nIHRoZSBkZWJ1ZyBjYWxsYmFjawotbXVsdGktZG91YmxlLmMgLSBhIG11bHRpLWludGVyZmFjZSBhcHAgZG9pbmcgdHdvIHNpbXVsdGFuZW91cyB0cmFuc2ZlcnMKLW11bHRpLXBvc3QuYyAgIC0gYSBtdWx0aS1pbnRlcmZhY2UgYXBwIGRvaW5nIGEgbXVsdGlwYXJ0IGZvcm1wb3N0Ci1tdWx0aS1zaW5nbGUuYyAtIGEgbXVsdGktaW50ZXJmYWNlIGFwcCBnZXR0aW5nIGEgc2luZ2xlIGZpbGUKLW11bHRpLXV2LmMgICAgIC0gYSBtdWx0aS1pbnRlcmZhY2UgYXBwIHVzaW5nIGxpYnV2Ci1tdWx0aXRocmVhZC5jICAtIGFuIGV4YW1wbGUgdXNpbmcgbXVsdGktdHJlYWRpbmcgdHJhbnNmZXJyaW5nIG11bHRpcGxlIGZpbGVzCi1vcGVuc3NsdGhyZWFkbG9jay5jIC0gc2hvdyBob3cgdG8gZG8gbG9ja2luZyB3aGVuIHVzaW5nIE9wZW5TU0wgbXVsdGktdGhyZWFkZWQKLXBlcnNpc3RhbnQuYyAgIC0gcmVxdWVzdCB0d28gVVJMcyB3aXRoIGEgcGVyc2lzdGVudCBjb25uZWN0aW9uCi1wb3Azcy5jICAgICAgICAtIFBPUDNTIHRyYW5zZmVyCi1wb3Azc2xpc3QuYyAgICAtIFBPUDNTIExJU1QKLXBvc3QtY2FsbGJhY2suYyAtIHNlbmQgYSBIVFRQIFBPU1QgdXNpbmcgYSBjYWxsYmFjawotcG9zdGl0Mi5jICAgICAgLSBzZW5kIGEgSFRUUCBtdWx0aXBhcnQgZm9ybXBvc3QKLXNhbXBsZWNvbnYuYyAgIC0gc2hvd2luZyBob3cgYSBwcm9ncmFtIG9uIGEgbm9uLUFTQ0lJIHBsYXRmb3JtIHdvdWxkIGludm9rZQotICAgICAgICAgICAgICAgICBjYWxsYmFja3MgdG8gZG8gaXRzIG93biBjb2Rlc2V0IGNvbnZlcnNpb25zIGluc3RlYWQgb2YgdXNpbmcKLSAgICAgICAgICAgICAgICAgdGhlIGJ1aWx0LWluIGljb252IGZ1bmN0aW9ucyBpbiBsaWJjdXJsCi1zZXBoZWFkZXJzLmMgICAtIGRvd25sb2FkIGhlYWRlcnMgdG8gYSBzZXBhcmF0ZSBmaWxlCi1zaW1wbGUuYyAgICAgICAtIHRoZSBtb3N0IHNpbXBsZSBkb3dubG9hZCBhIFVSTCBzb3VyY2UKLXNpbXBsZXBvc3QuYyAgIC0gSFRUUCBQT1NUCi1zaW1wbGVzc2wuYyAgICAtIEhUVFBTIGV4YW1wbGUgd2l0aCBjZXJ0aWZpY2F0ZXMgbWFueSBvcHRpb25zIHNldAotc3luY3RpbWUuYyAgICAgLSBTeW5jIGxvY2FsIHRpbWUgYnkgZXh0cmFjdGluZyBkYXRlIGZyb20gcmVtb3RlIEhUVFAgc2VydmVycwotdXJsMmZpbGUuYyAgICAgLSBkb3dubG9hZCBhIGRvY3VtZW50IGFuZCBzdG9yZSBpdCBpbiBhIGZpbGUKLXhtbHN0cmVhbS5jICAgIC0gU3RyZWFtLXBhcnNlIGEgZG9jdW1lbnQgdXNpbmcgdGhlIHN0cmVhbWluZyBFeHBhdCBwYXJzZXIKLTEwLWF0LWEtdGltZS5jIC0gRG93bmxvYWQgbWFueSBmaWxlcyBzaW11bHRhbmVvdXNseSwgMTAgYXQgYSB0aW1lLgorRWFjaCBleGFtcGxlIHNvdXJjZSBjb2RlIGZpbGUgaXMgZGVzaWduZWQgdG8gYmUgYW5kIHdvcmsgc3RhbmQtYWxvbmUgYW5kCityYXRoZXIgc2VsZi1leHBsYW5hdG9yeS4gVGhlIGV4YW1wbGVzIG1heSBhdCB0aW1lcyBsYWNrIHRoZSBsZXZlbCBvZiBlcnJvcgorY2hlY2tzIHlvdSBuZWVkIGluIGEgcmVhbCB3b3JsZCwgYnV0IHRoYXQgaXMgdGhlbiBvbmx5IGZvciB0aGUgc2FrZSBvZgorcmVhZGFiaWxpdHk6IHRvIG1ha2UgdGhlIGNvZGUgc21hbGxlciBhbmQgZWFzaWVyIHRvIGZvbGxvdy4KZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvYWRkZG9jc3JlZi5wbCBiL2RvY3MvZXhhbXBsZXMvYWRkZG9jc3JlZi5wbAppbmRleCAyZGNjMjRiLi5lZmViZmUyIDEwMDc1NQotLS0gYS9kb2NzL2V4YW1wbGVzL2FkZGRvY3NyZWYucGwKKysrIGIvZG9jcy9leGFtcGxlcy9hZGRkb2NzcmVmLnBsCkBAIC0yLDcgKzIsNyBAQAogCiAjIHBhc3MgZmlsZXMgYXMgYXJndW1lbnQocykKIAotbXkgJGRvY3Jvb3Q9Imh0dHA6Ly9jdXJsLmhheHguc2UvbGliY3VybC9jIjsKK215ICRkb2Nyb290PSJodHRwczovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MiOwogCiBmb3IgJGYgKEBBUkdWKSB7CiAgICAgb3BlbihORVcsICI+JGYubmV3Iik7CmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL2FueWF1dGhwdXQuYyBiL2RvY3MvZXhhbXBsZXMvYW55YXV0aHB1dC5jCmluZGV4IGI4OWRjYTIuLmIxMzY3ZGUgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvYW55YXV0aHB1dC5jCisrKyBiL2RvY3MvZXhhbXBsZXMvYW55YXV0aHB1dC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTksNiArMTksMTEgQEAKICAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIDxERVNDPgorICogSFRUUCBQVVQgdXBsb2FkIHdpdGggYXV0aGVudGljdGlvbiB1c2luZyAiYW55IiBtZXRob2QuIGxpYmN1cmwgcGlja3MgdGhlCisgKiBvbmUgdGhlIHNlcnZlciBzdXBwb3J0cy93YW50cy4KKyAqIDwvREVTQz4KKyAqLwogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8ZmNudGwuaD4KICNpZmRlZiBXSU4zMgpAQCAtNzMsNyArNzgsOCBAQAogLyogaW9jdGwgY2FsbGJhY2sgZnVuY3Rpb24gKi8KIHN0YXRpYyBjdXJsaW9lcnIgbXlfaW9jdGwoQ1VSTCAqaGFuZGxlLCBjdXJsaW9jbWQgY21kLCB2b2lkICp1c2VycCkKIHsKLSAgaW50cHRyX3QgZmQgPSAoaW50cHRyX3QpdXNlcnA7CisgIGludCAqZmRwID0gKGludCAqKXVzZXJwOworICBpbnQgZmQgPSAqZmRwOwogCiAgICh2b2lkKWhhbmRsZTsgLyogbm90IHVzZWQgaW4gaGVyZSAqLwogCkBAIC05NSwxMCArMTAxLDExIEBACiAvKiByZWFkIGNhbGxiYWNrIGZ1bmN0aW9uLCBmcmVhZCgpIGxvb2sgYWxpa2UgKi8KIHN0YXRpYyBzaXplX3QgcmVhZF9jYWxsYmFjayh2b2lkICpwdHIsIHNpemVfdCBzaXplLCBzaXplX3Qgbm1lbWIsIHZvaWQgKnN0cmVhbSkKIHsKLSAgc2l6ZV90IHJldGNvZGU7CisgIHNzaXplX3QgcmV0Y29kZTsKICAgY3VybF9vZmZfdCBucmVhZDsKIAotICBpbnRwdHJfdCBmZCA9IChpbnRwdHJfdClzdHJlYW07CisgIGludCAqZmRwID0gKGludCAqKXN0cmVhbTsKKyAgaW50IGZkID0gKmZkcDsKIAogICByZXRjb2RlID0gcmVhZChmZCwgcHRyLCBzaXplICogbm1lbWIpOwogCkBAIC0xMTQsNyArMTIxLDcgQEAKIHsKICAgQ1VSTCAqY3VybDsKICAgQ1VSTGNvZGUgcmVzOwotICBpbnRwdHJfdCBoZCA7CisgIGludCBoZDsKICAgc3RydWN0IHN0YXQgZmlsZV9pbmZvOwogCiAgIGNoYXIgKmZpbGU7CkBAIC0xMjcsNyArMTM0LDcgQEAKICAgdXJsID0gYXJndlsyXTsKIAogICAvKiBnZXQgdGhlIGZpbGUgc2l6ZSBvZiB0aGUgbG9jYWwgZmlsZSAqLwotICBoZCA9IG9wZW4oZmlsZSwgT19SRE9OTFkpIDsKKyAgaGQgPSBvcGVuKGZpbGUsIE9fUkRPTkxZKTsKICAgZnN0YXQoaGQsICZmaWxlX2luZm8pOwogCiAgIC8qIEluIHdpbmRvd3MsIHRoaXMgd2lsbCBpbml0IHRoZSB3aW5zb2NrIHN0dWZmICovCkBAIC0xNDAsMjAgKzE0NywyMCBAQAogICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9SRUFERlVOQ1RJT04sIHJlYWRfY2FsbGJhY2spOwogCiAgICAgLyogd2hpY2ggZmlsZSB0byB1cGxvYWQgKi8KLSAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfUkVBRERBVEEsICh2b2lkKiloZCk7CisgICAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1JFQUREQVRBLCAodm9pZCopJmhkKTsKIAogICAgIC8qIHNldCB0aGUgaW9jdGwgZnVuY3Rpb24gKi8KICAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfSU9DVExGVU5DVElPTiwgbXlfaW9jdGwpOwogCiAgICAgLyogcGFzcyB0aGUgZmlsZSBkZXNjcmlwdG9yIHRvIHRoZSBpb2N0bCBjYWxsYmFjayBhcyB3ZWxsICovCi0gICAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX0lPQ1RMREFUQSwgKHZvaWQqKWhkKTsKKyAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfSU9DVExEQVRBLCAodm9pZCopJmhkKTsKIAogICAgIC8qIGVuYWJsZSAidXBsb2FkaW5nIiAod2hpY2ggbWVhbnMgUFVUIHdoZW4gZG9pbmcgSFRUUCkgKi8KLSAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfVVBMT0FELCAxTCkgOworICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9VUExPQUQsIDFMKTsKIAogICAgIC8qIHNwZWNpZnkgdGFyZ2V0IFVSTCwgYW5kIG5vdGUgdGhhdCB0aGlzIFVSTCBzaG91bGQgYWxzbyBpbmNsdWRlIGEgZmlsZQogICAgICAgIG5hbWUsIG5vdCBvbmx5IGEgZGlyZWN0b3J5IChhcyB5b3UgY2FuIGRvIHdpdGggR1RQIHVwbG9hZHMpICovCi0gICAgY3VybF9lYXN5X3NldG9wdChjdXJsLENVUkxPUFRfVVJMLCB1cmwpOworICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9VUkwsIHVybCk7CiAKICAgICAvKiBhbmQgZ2l2ZSB0aGUgc2l6ZSBvZiB0aGUgdXBsb2FkLCB0aGlzIHN1cHBvcnRzIGxhcmdlIGZpbGUgc2l6ZXMKICAgICAgICBvbiBzeXN0ZW1zIHRoYXQgaGF2ZSBnZW5lcmFsIHN1cHBvcnQgZm9yIGl0ICovCmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL2FzaW9oaXBlci5jcHAgYi9kb2NzL2V4YW1wbGVzL2FzaW9oaXBlci5jcHAKaW5kZXggZWI1Y2QwMy4uZDYwNjVlNSAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9hc2lvaGlwZXIuY3BwCisrKyBiL2RvY3MvZXhhbXBsZXMvYXNpb2hpcGVyLmNwcApAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMjAxMiAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTIwLDExICsyMCwxMSBAQAogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKKy8qIDxERVNDPgorICogZGVtb25zdHJhdGUgdGhlIHVzZSBvZiBtdWx0aSBzb2NrZXQgaW50ZXJmYWNlIHdpdGggYm9vc3Q6OmFzaW8KKyAqIDwvREVTQz4KKyAqLwogLyoKLSAqIGZpbGU6IGFzaW9oaXBlci5jcHAKLSAqIEV4YW1wbGUgcHJvZ3JhbSB0byBkZW1vbnN0cmF0ZSB0aGUgdXNlIG9mIG11bHRpIHNvY2tldCBpbnRlcmZhY2UKLSAqIHdpdGggYm9vc3Q6OmFzaW8KLSAqCiAgKiBUaGlzIHByb2dyYW0gaXMgaW4gYysrIGFuZCB1c2VzIGJvb3N0Ojphc2lvIGluc3RlYWQgb2YgbGliZXZlbnQvbGliZXYuCiAgKiBSZXF1aXJlcyBib29zdDo6YXNpbywgYm9vc3Q6OmJpbmQgYW5kIGJvb3N0OjpzeXN0ZW0KICAqCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAjaW5jbHVkZSA8Ym9vc3QvYXNpby5ocHA+CiAjaW5jbHVkZSA8Ym9vc3QvYmluZC5ocHA+CisjaW5jbHVkZSA8aW9zdHJlYW0+CiAKICNkZWZpbmUgTVNHX09VVCBzdGRvdXQgLyogU2VuZCBpbmZvIHRvIHN0ZG91dCwgY2hhbmdlIHRvIHN0ZGVyciBpZiB5b3Ugd2FudCAqLwogCkBAIC0zNzgsOSArMzc5LDkgQEAKIH0KIAogLyogQ1VSTE9QVF9DTE9TRVNPQ0tFVEZVTkNUSU9OICovCi1zdGF0aWMgaW50IGNsb3Nlc29ja2V0KHZvaWQgKmNsaWVudHAsIGN1cmxfc29ja2V0X3QgaXRlbSkKK3N0YXRpYyBpbnQgY2xvc2Vfc29ja2V0KHZvaWQgKmNsaWVudHAsIGN1cmxfc29ja2V0X3QgaXRlbSkKIHsKLSAgZnByaW50ZihNU0dfT1VULCAiXG5jbG9zZXNvY2tldCA6ICVkIiwgaXRlbSk7CisgIGZwcmludGYoTVNHX09VVCwgIlxuY2xvc2Vfc29ja2V0IDogJWQiLCBpdGVtKTsKIAogICBzdGQ6Om1hcDxjdXJsX3NvY2tldF90LCBib29zdDo6YXNpbzo6aXA6OnRjcDo6c29ja2V0ICo+OjppdGVyYXRvciBpdCA9IHNvY2tldF9tYXAuZmluZChpdGVtKTsKIApAQCAtNDI3LDcgKzQyOCw3IEBACiAgIGN1cmxfZWFzeV9zZXRvcHQoY29ubi0+ZWFzeSwgQ1VSTE9QVF9PUEVOU09DS0VURlVOQ1RJT04sIG9wZW5zb2NrZXQpOwogCiAgIC8qIGNhbGwgdGhpcyBmdW5jdGlvbiB0byBjbG9zZSBhIHNvY2tldCAqLwotICBjdXJsX2Vhc3lfc2V0b3B0KGNvbm4tPmVhc3ksIENVUkxPUFRfQ0xPU0VTT0NLRVRGVU5DVElPTiwgY2xvc2Vzb2NrZXQpOworICBjdXJsX2Vhc3lfc2V0b3B0KGNvbm4tPmVhc3ksIENVUkxPUFRfQ0xPU0VTT0NLRVRGVU5DVElPTiwgY2xvc2Vfc29ja2V0KTsKIAogICBmcHJpbnRmKE1TR19PVVQsCiAgICAgICAgICAgIlxuQWRkaW5nIGVhc3kgJXAgdG8gbXVsdGkgJXAgKCVzKSIsIGNvbm4tPmVhc3ksIGctPm11bHRpLCB1cmwpOwpAQCAtNDQxLDcgKzQ0Miw2IEBACiBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiB7CiAgIEdsb2JhbEluZm8gZzsKLSAgQ1VSTE1jb2RlIHJjOwogCiAgICh2b2lkKWFyZ2M7CiAgICh2b2lkKWFyZ3Y7CmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL2NhY2VydGlubWVtLmMgYi9kb2NzL2V4YW1wbGVzL2NhY2VydGlubWVtLmMKaW5kZXggMzBhNTE1My4uYmJhOGM3MiAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9jYWNlcnRpbm1lbS5jCisrKyBiL2RvY3MvZXhhbXBsZXMvY2FjZXJ0aW5tZW0uYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDI1ICsxOSwxOSBAQAogICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyogRXhhbXBsZSB1c2luZyBhICJpbiBjb3JlIiBQRU0gY2VydGlmaWNhdGUgdG8gcmV0cmlldmUgYSBodHRwcyBwYWdlLgotICogV3JpdHRlbiBieSBUaGVvIEJvcm0KKy8qIDxERVNDPgorICogQ0EgY2VydCBpbiBtZW1vcnkgd2l0aCBPcGVuU1NMIHRvIGdldCBhIEhUVFBTIHBhZ2UuCisgKiA8L0RFU0M+CiAgKi8KIAotLyogb24gYSBuZXRCU0Qgc3lzdGVtIHdpdGggT1BFTlNTTCYgTElCQ1VSTCBpbnN0YWxsZWQgZnJvbQotICogcGtnc3JjICh1c2luZyBkZWZhdWx0IHBhdGhzKSB0aGlzIHByb2dyYW0gY2FuIGJlIGNvbXBpbGVkIHVzaW5nOgotICogZ2NjIC1JL3Vzci9wa2cvaW5jbHVkZSAtTC91c3IvcGtnL2xpYiAtbGN1cmwgLVdsLC1SL3Vzci9wa2cvbGliIC1sc3NsCi0gKiAtbGNyeXB0byAtbHogLW8gY3VybGNhY2VydHRlc3QgY3VybGNhY2VydHRlc3QuYwotICogb24gb3RoZXIgb3BlcmF0aW5nIHN5c3RlbXMgeW91IG1heSB3YW50IHRvIGNoYW5nZSBwYXRocyB0byBoZWFkZXJzCi0gKiBhbmQgbGlicmFyaWVzCi0qLwogI2luY2x1ZGUgPG9wZW5zc2wvc3NsLmg+CiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KIAotc2l6ZV90IHdyaXRlZnVuY3Rpb24oIHZvaWQgKnB0ciwgc2l6ZV90IHNpemUsIHNpemVfdCBubWVtYiwgdm9pZCAqc3RyZWFtKQorc2l6ZV90IHdyaXRlZnVuY3Rpb24odm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IG5tZW1iLCB2b2lkICpzdHJlYW0pCiB7Ci0gIGZ3cml0ZShwdHIsc2l6ZSxubWVtYixzdHJlYW0pOwotICByZXR1cm4obm1lbWIqc2l6ZSk7CisgIGZ3cml0ZShwdHIsIHNpemUsIG5tZW1iLCBzdHJlYW0pOworICByZXR1cm4gKG5tZW1iKnNpemUpOwogfQogCiBzdGF0aWMgQ1VSTGNvZGUgc3NsY3R4X2Z1bmN0aW9uKENVUkwgKiBjdXJsLCB2b2lkICogc3NsY3R4LCB2b2lkICogcGFybSkKQEAgLTkzLDE0ICs4NywxNCBAQAogICAgKiBzdHJ1Y3R1cmUgdGhhdCBTU0wgY2FuIHVzZQogICAgKi8KICAgUEVNX3JlYWRfYmlvX1g1MDkoYmlvLCAmY2VydCwgMCwgTlVMTCk7Ci0gIGlmIChjZXJ0ID09IE5VTEwpCisgIGlmKGNlcnQgPT0gTlVMTCkKICAgICBwcmludGYoIlBFTV9yZWFkX2Jpb19YNTA5IGZhaWxlZC4uLlxuIik7CiAKICAgLyogZ2V0IGEgcG9pbnRlciB0byB0aGUgWDUwOSBjZXJ0aWZpY2F0ZSBzdG9yZSAod2hpY2ggbWF5IGJlIGVtcHR5ISkgKi8KICAgc3RvcmU9U1NMX0NUWF9nZXRfY2VydF9zdG9yZSgoU1NMX0NUWCAqKXNzbGN0eCk7CiAKICAgLyogYWRkIG91ciBjZXJ0aWZpY2F0ZSB0byB0aGlzIHN0b3JlICovCi0gIGlmIChYNTA5X1NUT1JFX2FkZF9jZXJ0KHN0b3JlLCBjZXJ0KT09MCkKKyAgaWYoWDUwOV9TVE9SRV9hZGRfY2VydChzdG9yZSwgY2VydCk9PTApCiAgICAgcHJpbnRmKCJlcnJvciBhZGRpbmcgY2VydGlmaWNhdGVcbiIpOwogCiAgIC8qIGRlY3JlYXNlIHJlZmVyZW5jZSBjb3VudHMgKi8KQEAgLTEwOCw3ICsxMDIsNyBAQAogICBCSU9fZnJlZShiaW8pOwogCiAgIC8qIGFsbCBzZXQgdG8gZ28gKi8KLSAgcmV0dXJuIENVUkxFX09LIDsKKyAgcmV0dXJuIENVUkxFX09LOwogfQogCiBpbnQgbWFpbih2b2lkKQpAQCAtMTE4LDIyICsxMTIsMjIgQEAKIAogICBydj1jdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCk7CiAgIGNoPWN1cmxfZWFzeV9pbml0KCk7Ci0gIHJ2PWN1cmxfZWFzeV9zZXRvcHQoY2gsQ1VSTE9QVF9WRVJCT1NFLCAwTCk7Ci0gIHJ2PWN1cmxfZWFzeV9zZXRvcHQoY2gsQ1VSTE9QVF9IRUFERVIsIDBMKTsKLSAgcnY9Y3VybF9lYXN5X3NldG9wdChjaCxDVVJMT1BUX05PUFJPR1JFU1MsIDFMKTsKLSAgcnY9Y3VybF9lYXN5X3NldG9wdChjaCxDVVJMT1BUX05PU0lHTkFMLCAxTCk7Ci0gIHJ2PWN1cmxfZWFzeV9zZXRvcHQoY2gsQ1VSTE9QVF9XUklURUZVTkNUSU9OLCAqd3JpdGVmdW5jdGlvbik7Ci0gIHJ2PWN1cmxfZWFzeV9zZXRvcHQoY2gsQ1VSTE9QVF9XUklURURBVEEsIHN0ZG91dCk7Ci0gIHJ2PWN1cmxfZWFzeV9zZXRvcHQoY2gsQ1VSTE9QVF9IRUFERVJGVU5DVElPTiwgKndyaXRlZnVuY3Rpb24pOwotICBydj1jdXJsX2Vhc3lfc2V0b3B0KGNoLENVUkxPUFRfSEVBREVSREFUQSwgc3RkZXJyKTsKLSAgcnY9Y3VybF9lYXN5X3NldG9wdChjaCxDVVJMT1BUX1NTTENFUlRUWVBFLCJQRU0iKTsKLSAgcnY9Y3VybF9lYXN5X3NldG9wdChjaCxDVVJMT1BUX1NTTF9WRVJJRllQRUVSLDFMKTsKKyAgcnY9Y3VybF9lYXN5X3NldG9wdChjaCwgQ1VSTE9QVF9WRVJCT1NFLCAwTCk7CisgIHJ2PWN1cmxfZWFzeV9zZXRvcHQoY2gsIENVUkxPUFRfSEVBREVSLCAwTCk7CisgIHJ2PWN1cmxfZWFzeV9zZXRvcHQoY2gsIENVUkxPUFRfTk9QUk9HUkVTUywgMUwpOworICBydj1jdXJsX2Vhc3lfc2V0b3B0KGNoLCBDVVJMT1BUX05PU0lHTkFMLCAxTCk7CisgIHJ2PWN1cmxfZWFzeV9zZXRvcHQoY2gsIENVUkxPUFRfV1JJVEVGVU5DVElPTiwgKndyaXRlZnVuY3Rpb24pOworICBydj1jdXJsX2Vhc3lfc2V0b3B0KGNoLCBDVVJMT1BUX1dSSVRFREFUQSwgc3Rkb3V0KTsKKyAgcnY9Y3VybF9lYXN5X3NldG9wdChjaCwgQ1VSTE9QVF9IRUFERVJGVU5DVElPTiwgKndyaXRlZnVuY3Rpb24pOworICBydj1jdXJsX2Vhc3lfc2V0b3B0KGNoLCBDVVJMT1BUX0hFQURFUkRBVEEsIHN0ZGVycik7CisgIHJ2PWN1cmxfZWFzeV9zZXRvcHQoY2gsIENVUkxPUFRfU1NMQ0VSVFRZUEUsICJQRU0iKTsKKyAgcnY9Y3VybF9lYXN5X3NldG9wdChjaCwgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwgMUwpOwogICBydj1jdXJsX2Vhc3lfc2V0b3B0KGNoLCBDVVJMT1BUX1VSTCwgImh0dHBzOi8vd3d3LmV4YW1wbGUuY29tLyIpOwogCiAgIC8qIGZpcnN0IHRyeTogcmV0cmlldmUgcGFnZSB3aXRob3V0IGNhY2VydHMnIGNlcnRpZmljYXRlIC0+IHdpbGwgZmFpbAogICAgKi8KICAgcnY9Y3VybF9lYXN5X3BlcmZvcm0oY2gpOwotICBpZiAocnY9PUNVUkxFX09LKQorICBpZihydj09Q1VSTEVfT0spCiAgICAgcHJpbnRmKCIqKiogdHJhbnNmZXIgc3VjY2VlZGVkICoqKlxuIik7CiAgIGVsc2UKICAgICBwcmludGYoIioqKiB0cmFuc2ZlciBmYWlsZWQgKioqXG4iKTsKQEAgLTE0Miw5ICsxMzYsOSBAQAogICAgKiBsb2FkIHRoZSBjZXJ0aWZpY2F0ZSBieSBpbnN0YWxsaW5nIGEgZnVuY3Rpb24gZG9pbmcgdGhlIG5lc2Nlc3NhcnkKICAgICogIm1vZGlmaWNhdGlvbnMiIHRvIHRoZSBTU0wgQ09OVEVYVCBqdXN0IGJlZm9yZSBsaW5rIGluaXQKICAgICovCi0gIHJ2PWN1cmxfZWFzeV9zZXRvcHQoY2gsQ1VSTE9QVF9TU0xfQ1RYX0ZVTkNUSU9OLCAqc3NsY3R4X2Z1bmN0aW9uKTsKKyAgcnY9Y3VybF9lYXN5X3NldG9wdChjaCwgQ1VSTE9QVF9TU0xfQ1RYX0ZVTkNUSU9OLCAqc3NsY3R4X2Z1bmN0aW9uKTsKICAgcnY9Y3VybF9lYXN5X3BlcmZvcm0oY2gpOwotICBpZiAocnY9PUNVUkxFX09LKQorICBpZihydj09Q1VSTEVfT0spCiAgICAgcHJpbnRmKCIqKiogdHJhbnNmZXIgc3VjY2VlZGVkICoqKlxuIik7CiAgIGVsc2UKICAgICBwcmludGYoIioqKiB0cmFuc2ZlciBmYWlsZWQgKioqXG4iKTsKZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvY2VydGluZm8uYyBiL2RvY3MvZXhhbXBsZXMvY2VydGluZm8uYwppbmRleCBhYzAxMDliLi5kZTJlMzEwIDEwMDY0NAotLS0gYS9kb2NzL2V4YW1wbGVzL2NlcnRpbmZvLmMKKysrIGIvZG9jcy9leGFtcGxlcy9jZXJ0aW5mby5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTksNiArMTksMTAgQEAKICAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIDxERVNDPgorICogRXh0cmFjdCBsb3RzIG9mIFRMUyBjZXJ0aWZpY2F0ZSBpbmZvLgorICogPC9ERVNDPgorICovCiAjaW5jbHVkZSA8c3RkaW8uaD4KIAogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgpkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy9jaGtzcGVlZC5jIGIvZG9jcy9leGFtcGxlcy9jaGtzcGVlZC5jCmluZGV4IDMxOTQ5YjguLmRlMjA1NjcgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvY2hrc3BlZWQuYworKysgYi9kb2NzL2V4YW1wbGVzL2Noa3NwZWVkLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDExLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0xOSw2ICsxOSwxMCBAQAogICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogPERFU0M+CisgKiBTaG93IHRyYW5zZmVyIHRpbWluZyBpbmZvIGFmdGVyIGRvd25sb2FkIGNvbXBsZXRlcy4KKyAqIDwvREVTQz4KKyAqLwogLyogRXhhbXBsZSBzb3VyY2UgY29kZSB0byBzaG93IGhvdyB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8KICAqIGRvd25sb2FkIGRhdGEgaW50byBhIGNodW5rIG9mIG1lbW9yeSBpbnN0ZWFkIG9mIHN0b3JpbmcgaXQgaW4gYSBmaWxlLgogICogQWZ0ZXIgc3VjY2Vzc2Z1bCBkb3dubG9hZCB3ZSB1c2UgY3VybF9lYXN5X2dldGluZm8oKSBjYWxscyB0byBnZXQgdGhlCkBAIC02NCw2MyArNjgsNzggQEAKICAgY29uc3QgY2hhciAqdXJsID0gVVJMXzFNOwogICBjaGFyICphcHBuYW1lID0gYXJndlswXTsKIAotICBpZiAoYXJnYyA+IDEpIHsKKyAgaWYoYXJnYyA+IDEpIHsKICAgICAvKiBwYXJzZSBpbnB1dCBwYXJhbWV0ZXJzICovCi0gICAgZm9yIChhcmdjLS0sIGFyZ3YrKzsgKmFyZ3Y7IGFyZ2MtLSwgYXJndisrKSB7Ci0gICAgICBpZiAoc3RybmNhc2VjbXAoKmFyZ3YsICItIiwgMSkgPT0gMCkgewotICAgICAgICBpZiAoc3RybmNhc2VjbXAoKmFyZ3YsICItSCIsIDIpID09IDApIHsKKyAgICBmb3IoYXJnYy0tLCBhcmd2Kys7ICphcmd2OyBhcmdjLS0sIGFyZ3YrKykgeworICAgICAgaWYoc3RybmNhc2VjbXAoKmFyZ3YsICItIiwgMSkgPT0gMCkgeworICAgICAgICBpZihzdHJuY2FzZWNtcCgqYXJndiwgIi1IIiwgMikgPT0gMCkgewogICAgICAgICAgIGZwcmludGYoc3RkZXJyLAogICAgICAgICAgICAgICAgICAgIlxyVXNhZ2U6ICVzIFstbT0xfDJ8NXwxMHwyMHw1MHwxMDBdIFstdF0gWy14XSBbdXJsXVxuIiwKICAgICAgICAgICAgICAgICAgIGFwcG5hbWUpOwogICAgICAgICAgIGV4aXQoMSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoc3RybmNhc2VjbXAoKmFyZ3YsICItViIsIDIpID09IDApIHsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmKHN0cm5jYXNlY21wKCphcmd2LCAiLVYiLCAyKSA9PSAwKSB7CiAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJcciVzICVzIC0gJXNcbiIsCiAgICAgICAgICAgICAgICAgICBhcHBuYW1lLCBDSEtTUEVFRF9WRVJTSU9OLCBjdXJsX3ZlcnNpb24oKSk7CiAgICAgICAgICAgZXhpdCgxKTsKLSAgICAgICAgfSBlbHNlIGlmIChzdHJuY2FzZWNtcCgqYXJndiwgIi1BIiwgMikgPT0gMCkgeworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYoc3RybmNhc2VjbXAoKmFyZ3YsICItQSIsIDIpID09IDApIHsKICAgICAgICAgICBwcnRhbGwgPSAxOwotICAgICAgICB9IGVsc2UgaWYgKHN0cm5jYXNlY21wKCphcmd2LCAiLVgiLCAyKSA9PSAwKSB7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZihzdHJuY2FzZWNtcCgqYXJndiwgIi1YIiwgMikgPT0gMCkgewogICAgICAgICAgIHBydHNlcCA9IDE7Ci0gICAgICAgIH0gZWxzZSBpZiAoc3RybmNhc2VjbXAoKmFyZ3YsICItVCIsIDIpID09IDApIHsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmKHN0cm5jYXNlY21wKCphcmd2LCAiLVQiLCAyKSA9PSAwKSB7CiAgICAgICAgICAgcHJ0dGltZSA9IDE7Ci0gICAgICAgIH0gZWxzZSBpZiAoc3RybmNhc2VjbXAoKmFyZ3YsICItTT0iLCAzKSA9PSAwKSB7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZihzdHJuY2FzZWNtcCgqYXJndiwgIi1NPSIsIDMpID09IDApIHsKICAgICAgICAgICBsb25nIG0gPSBzdHJ0b2woKCphcmd2KSszLCBOVUxMLCAxMCk7CiAgICAgICAgICAgc3dpdGNoKG0pIHsKLSAgICAgICAgICAgIGNhc2UgICAxOiB1cmwgPSBVUkxfMU07Ci0gICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICAgMjogdXJsID0gVVJMXzJNOwotICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAgIDU6IHVybCA9IFVSTF81TTsKLSAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgIDEwOiB1cmwgPSBVUkxfMTBNOwotICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAgMjA6IHVybCA9IFVSTF8yME07Ci0gICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICA1MDogdXJsID0gVVJMXzUwTTsKLSAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgMTAwOiB1cmwgPSBVUkxfMTAwTTsKLSAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6ICBmcHJpbnRmKHN0ZGVyciwgIlxyJXM6IGludmFsaWQgcGFyYW1ldGVyICVzXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbmFtZSwgKmFyZ3YgKyAzKTsKLSAgICAgICAgICAgICAgICAgICAgICBleGl0KDEpOworICAgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgIHVybCA9IFVSTF8xTTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIHVybCA9IFVSTF8yTTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGNhc2UgNToKKyAgICAgICAgICAgIHVybCA9IFVSTF81TTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGNhc2UgMTA6CisgICAgICAgICAgICB1cmwgPSBVUkxfMTBNOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSAyMDoKKyAgICAgICAgICAgIHVybCA9IFVSTF8yME07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIDUwOgorICAgICAgICAgICAgdXJsID0gVVJMXzUwTTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGNhc2UgMTAwOgorICAgICAgICAgICAgdXJsID0gVVJMXzEwME07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJcciVzOiBpbnZhbGlkIHBhcmFtZXRlciAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgYXBwbmFtZSwgKmFyZ3YgKyAzKTsKKyAgICAgICAgICAgIGV4aXQoMSk7CiAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgeworICAgICAgICB9CisgICAgICAgIGVsc2UgewogICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiXHIlczogaW52YWxpZCBvciB1bmtub3duIG9wdGlvbiAlc1xuIiwKICAgICAgICAgICAgICAgICAgIGFwcG5hbWUsICphcmd2KTsKICAgICAgICAgICBleGl0KDEpOwogICAgICAgICB9Ci0gICAgICB9IGVsc2UgeworICAgICAgfQorICAgICAgZWxzZSB7CiAgICAgICAgIHVybCA9ICphcmd2OwogICAgICAgfQogICAgIH0KICAgfQogCiAgIC8qIHByaW50IHNlcGFyYXRvciBsaW5lICovCi0gIGlmIChwcnRzZXApIHsKKyAgaWYocHJ0c2VwKSB7CiAgICAgcHJpbnRmKCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsKICAgfQogICAvKiBwcmludCBsb2NhbHRpbWUgKi8KLSAgaWYgKHBydHRpbWUpIHsKKyAgaWYocHJ0dGltZSkgewogICAgIHRpbWVfdCB0ID0gdGltZShOVUxMKTsKICAgICBwcmludGYoIkxvY2FsdGltZTogJXMiLCBjdGltZSgmdCkpOwogICB9CkBAIC0xNjMsNyArMTgyLDcgQEAKICAgICBpZigoQ1VSTEVfT0sgPT0gcmVzKSAmJiAodmFsPjApKQogICAgICAgcHJpbnRmKCJBdmVyYWdlIGRvd25sb2FkIHNwZWVkOiAlMC4zZiBrYnl0ZS9zZWMuXG4iLCB2YWwgLyAxMDI0KTsKIAotICAgIGlmIChwcnRhbGwpIHsKKyAgICBpZihwcnRhbGwpIHsKICAgICAgIC8qIGNoZWNrIGZvciBuYW1lIHJlc29sdXRpb24gdGltZSAqLwogICAgICAgcmVzID0gY3VybF9lYXN5X2dldGluZm8oY3VybF9oYW5kbGUsIENVUkxJTkZPX05BTUVMT09LVVBfVElNRSwgJnZhbCk7CiAgICAgICBpZigoQ1VSTEVfT0sgPT0gcmVzKSAmJiAodmFsPjApKQpAQCAtMTc0LDggKzE5Myw4IEBACiAgICAgICBpZigoQ1VSTEVfT0sgPT0gcmVzKSAmJiAodmFsPjApKQogICAgICAgICBwcmludGYoIkNvbm5lY3QgdGltZTogJTAuM2Ygc2VjLlxuIiwgdmFsKTsKICAgICB9Ci0KLSAgfSBlbHNlIHsKKyAgfQorICBlbHNlIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgIkVycm9yIHdoaWxlIGZldGNoaW5nICclcycgOiAlc1xuIiwKICAgICAgICAgICAgIHVybCwgY3VybF9lYXN5X3N0cmVycm9yKHJlcykpOwogICB9CmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL2Nvb2tpZV9pbnRlcmZhY2UuYyBiL2RvY3MvZXhhbXBsZXMvY29va2llX2ludGVyZmFjZS5jCmluZGV4IDI4ZWU3ODEuLjA2NGM3YjMgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvY29va2llX2ludGVyZmFjZS5jCisrKyBiL2RvY3MvZXhhbXBsZXMvY29va2llX2ludGVyZmFjZS5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTksNyArMTksMTAgQEAKICAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qIFRoaXMgZXhhbXBsZSBzaG93cyB1c2FnZSBvZiBzaW1wbGUgY29va2llIGludGVyZmFjZS4gKi8KKy8qIDxERVNDPgorICogSW1wb3J0IGFuZCBleHBvcnQgY29va2llcyB3aXRoIENPT0tJRUxJU1QuCisgKiA8L0RFU0M+CisgKi8KIAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CkBAIC0zOSwxNyArNDIsMTggQEAKIAogICBwcmludGYoIkNvb2tpZXMsIGN1cmwga25vd3M6XG4iKTsKICAgcmVzID0gY3VybF9lYXN5X2dldGluZm8oY3VybCwgQ1VSTElORk9fQ09PS0lFTElTVCwgJmNvb2tpZXMpOwotICBpZiAocmVzICE9IENVUkxFX09LKSB7Ci0gICAgZnByaW50ZihzdGRlcnIsICJDdXJsIGN1cmxfZWFzeV9nZXRpbmZvIGZhaWxlZDogJXNcbiIsIGN1cmxfZWFzeV9zdHJlcnJvcihyZXMpKTsKKyAgaWYocmVzICE9IENVUkxFX09LKSB7CisgICAgZnByaW50ZihzdGRlcnIsICJDdXJsIGN1cmxfZWFzeV9nZXRpbmZvIGZhaWxlZDogJXNcbiIsCisgICAgICAgICAgICBjdXJsX2Vhc3lfc3RyZXJyb3IocmVzKSk7CiAgICAgZXhpdCgxKTsKICAgfQogICBuYyA9IGNvb2tpZXMsIGkgPSAxOwotICB3aGlsZSAobmMpIHsKKyAgd2hpbGUobmMpIHsKICAgICBwcmludGYoIlslZF06ICVzXG4iLCBpLCBuYy0+ZGF0YSk7CiAgICAgbmMgPSBuYy0+bmV4dDsKICAgICBpKys7CiAgIH0KLSAgaWYgKGkgPT0gMSkgeworICBpZihpID09IDEpIHsKICAgICBwcmludGYoIihub25lKVxuIik7CiAgIH0KICAgY3VybF9zbGlzdF9mcmVlX2FsbChjb29raWVzKTsKQEAgLTYzLDE0ICs2NywxNCBAQAogCiAgIGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKTsKICAgY3VybCA9IGN1cmxfZWFzeV9pbml0KCk7Ci0gIGlmIChjdXJsKSB7CisgIGlmKGN1cmwpIHsKICAgICBjaGFyIG5saW5lWzI1Nl07CiAKICAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfVVJMLCAiaHR0cDovL3d3dy5leGFtcGxlLmNvbS8iKTsKICAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfVkVSQk9TRSwgMUwpOwotICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9DT09LSUVGSUxFLCAiIik7IC8qIGp1c3QgdG8gc3RhcnQgdGhlIGNvb2tpZSBlbmdpbmUgKi8KKyAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfQ09PS0lFRklMRSwgIiIpOyAvKiBzdGFydCBjb29raWUgZW5naW5lICovCiAgICAgcmVzID0gY3VybF9lYXN5X3BlcmZvcm0oY3VybCk7Ci0gICAgaWYgKHJlcyAhPSBDVVJMRV9PSykgeworICAgIGlmKHJlcyAhPSBDVVJMRV9PSykgewogICAgICAgZnByaW50ZihzdGRlcnIsICJDdXJsIHBlcmZvcm0gZmFpbGVkOiAlc1xuIiwgY3VybF9lYXN5X3N0cmVycm9yKHJlcykpOwogICAgICAgcmV0dXJuIDE7CiAgICAgfQpAQCAtODksMTAgKzkzLDEzIEBACiAjZW5kaWYKICAgICAvKiBOZXRzY2FwZSBmb3JtYXQgY29va2llICovCiAgICAgc25wcmludGYobmxpbmUsIHNpemVvZihubGluZSksICIlc1x0JXNcdCVzXHQlc1x0JWx1XHQlc1x0JXMiLAotICAgICAgIi5nb29nbGUuY29tIiwgIlRSVUUiLCAiLyIsICJGQUxTRSIsICh1bnNpZ25lZCBsb25nKXRpbWUoTlVMTCkgKyAzMTMzN1VMLCAiUFJFRiIsICJoZWxsbyBnb29nbGUsIGkgbGlrZSB5b3UgdmVyeSBtdWNoISIpOworICAgICAgICAgICAgICIuZ29vZ2xlLmNvbSIsICJUUlVFIiwgIi8iLCAiRkFMU0UiLAorICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKXRpbWUoTlVMTCkgKyAzMTMzN1VMLAorICAgICAgICAgICAgICJQUkVGIiwgImhlbGxvIGdvb2dsZSwgaSBsaWtlIHlvdSB2ZXJ5IG11Y2ghIik7CiAgICAgcmVzID0gY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX0NPT0tJRUxJU1QsIG5saW5lKTsKLSAgICBpZiAocmVzICE9IENVUkxFX09LKSB7Ci0gICAgICBmcHJpbnRmKHN0ZGVyciwgIkN1cmwgY3VybF9lYXN5X3NldG9wdCBmYWlsZWQ6ICVzXG4iLCBjdXJsX2Vhc3lfc3RyZXJyb3IocmVzKSk7CisgICAgaWYocmVzICE9IENVUkxFX09LKSB7CisgICAgICBmcHJpbnRmKHN0ZGVyciwgIkN1cmwgY3VybF9lYXN5X3NldG9wdCBmYWlsZWQ6ICVzXG4iLAorICAgICAgICAgICAgICBjdXJsX2Vhc3lfc3RyZXJyb3IocmVzKSk7CiAgICAgICByZXR1cm4gMTsKICAgICB9CiAKQEAgLTEwNiwxOCArMTEzLDIxIEBACiAgICAgICAiU2V0LUNvb2tpZTogT0xEX1BSRUY9M2QxNDE0MTRiZjQyMDkzMjE7ICIKICAgICAgICJleHBpcmVzPVN1biwgMTctSmFuLTIwMzggMTk6MTQ6MDcgR01UOyBwYXRoPS87IGRvbWFpbj0uZ29vZ2xlLmNvbSIpOwogICAgIHJlcyA9IGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9DT09LSUVMSVNULCBubGluZSk7Ci0gICAgaWYgKHJlcyAhPSBDVVJMRV9PSykgewotICAgICAgZnByaW50ZihzdGRlcnIsICJDdXJsIGN1cmxfZWFzeV9zZXRvcHQgZmFpbGVkOiAlc1xuIiwgY3VybF9lYXN5X3N0cmVycm9yKHJlcykpOworICAgIGlmKHJlcyAhPSBDVVJMRV9PSykgeworICAgICAgZnByaW50ZihzdGRlcnIsICJDdXJsIGN1cmxfZWFzeV9zZXRvcHQgZmFpbGVkOiAlc1xuIiwKKyAgICAgICAgICAgICAgY3VybF9lYXN5X3N0cmVycm9yKHJlcykpOwogICAgICAgcmV0dXJuIDE7CiAgICAgfQogCiAgICAgcHJpbnRfY29va2llcyhjdXJsKTsKIAogICAgIHJlcyA9IGN1cmxfZWFzeV9wZXJmb3JtKGN1cmwpOwotICAgIGlmIChyZXMgIT0gQ1VSTEVfT0spIHsKKyAgICBpZihyZXMgIT0gQ1VSTEVfT0spIHsKICAgICAgIGZwcmludGYoc3RkZXJyLCAiQ3VybCBwZXJmb3JtIGZhaWxlZDogJXNcbiIsIGN1cmxfZWFzeV9zdHJlcnJvcihyZXMpKTsKICAgICAgIHJldHVybiAxOwogICAgIH0KKworICAgIGN1cmxfZWFzeV9jbGVhbnVwKGN1cmwpOwogICB9CiAgIGVsc2UgewogICAgIGZwcmludGYoc3RkZXJyLCAiQ3VybCBpbml0IGZhaWxlZCFcbiIpOwpkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy9jdXJsZ3RrLmMgYi9kb2NzL2V4YW1wbGVzL2N1cmxndGsuYwppbmRleCA4Y2I5OTE0Li5jMzEyOWMxIDEwMDY0NAotLS0gYS9kb2NzL2V4YW1wbGVzL2N1cmxndGsuYworKysgYi9kb2NzL2V4YW1wbGVzL2N1cmxndGsuYwpAQCAtNSw5ICs1LDEyIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgorICogIENvcHlyaWdodCAoYykgMjAwMCBEYXZpZCBPZGluIChha2EgRGluZGluWCkgZm9yIE1hbmRyYWtlU29mdAogICovCi0vKiBDb3B5cmlnaHQgKGMpIDIwMDAgRGF2aWQgT2RpbiAoYWthIERpbmRpblgpIGZvciBNYW5kcmFrZVNvZnQgKi8KLS8qIGFuIGF0dGVtcHQgdG8gdXNlIHRoZSBjdXJsIGxpYnJhcnkgaW4gY29uY2VydCB3aXRoIGEgZ3RrLXRocmVhZGVkIGFwcGxpY2F0aW9uICovCisvKiA8REVTQz4KKyAqIHVzZSB0aGUgbGliY3VybCBpbiBhIGd0ay10aHJlYWRlZCBhcHBsaWNhdGlvbgorICogPC9ERVNDPgorICovCiAKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KQEAgLTQ3LDkgKzUwLDkgQEAKICAgZ2NoYXIgKnVybCA9IHB0cjsKIAogICBjdXJsID0gY3VybF9lYXN5X2luaXQoKTsKLSAgaWYoY3VybCkKLSAgewotICAgIG91dGZpbGUgPSBmb3BlbigidGVzdC5jdXJsIiwgInciKTsKKyAgaWYoY3VybCkgeworICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lID0gInRlc3QuY3VybCI7CisgICAgb3V0ZmlsZSA9IGZvcGVuKGZpbGVuYW1lLCAid2IiKTsKIAogICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9VUkwsIHVybCk7CiAgICAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1dSSVRFREFUQSwgb3V0ZmlsZSk7CkBAIC05NCw3ICs5Nyw3IEBACiAgIGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIoRnJhbWUyKSwgQmFyKTsKICAgZ3RrX3dpZGdldF9zaG93X2FsbChXaW5kb3cpOwogCi0gIGlmICghZ190aHJlYWRfY3JlYXRlKCZteV90aHJlYWQsIGFyZ3ZbMV0sIEZBTFNFLCBOVUxMKSAhPSAwKQorICBpZighZ190aHJlYWRfY3JlYXRlKCZteV90aHJlYWQsIGFyZ3ZbMV0sIEZBTFNFLCBOVUxMKSAhPSAwKQogICAgIGdfd2FybmluZygiY2FuJ3QgY3JlYXRlIHRoZSB0aHJlYWQiKTsKIAogCmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL2N1cmx4LmMgYi9kb2NzL2V4YW1wbGVzL2N1cmx4LmMKaW5kZXggYzY4Y2YwZC4uMTU1ZGEyMyAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9jdXJseC5jCisrKyBiL2RvY3MvZXhhbXBsZXMvY3VybHguYwpAQCAtOSw3ICs5LDEwIEBACiAgIGNlcnRpZmljYXRlIHByZXNlbnRlZCBkdXJpbmcgc3NsIHNlc3Npb24gZXN0YWJsaXNobWVudC4KIAogKi8KLQorLyogPERFU0M+CisgKiBkZW1vbnN0cmF0ZXMgdXNlIG9mIFNTTCBjb250ZXh0IGNhbGxiYWNrLCByZXF1aXJlcyBPcGVuU1NMCisgKiA8L0RFU0M+CisgKi8KIAogLyoKICAqIENvcHlyaWdodCAoYykgMjAwMyBUaGUgT3BlbkV2aWRlbmNlIFByb2plY3QuICBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtMzMsNyArMzYsNyBAQAogICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5ldmlkZW5jZSBQcm9qZWN0CiAgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuRXZpZGVuY2UgVG9vbGtpdC4gKGh0dHA6Ly93d3cub3BlbmV2aWRlbmNlLm9yZy8pIgogICogICAgVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0Ci0gKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQgKGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvKSIKKyAqICAgIGZvciB1c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdCAoaHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvKSIKICAqICAgIFRoaXMgcHJvZHVjdCBpbmNsdWRlcyBjcnlwdG9ncmFwaGljIHNvZnR3YXJlIHdyaXR0ZW4gYnkgRXJpYyBZb3VuZwogICogICAgKGVheUBjcnlwdHNvZnQuY29tKS4gIFRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSB3cml0dGVuIGJ5IFRpbQogICogICAgSHVkc29uICh0amhAY3J5cHRzb2Z0LmNvbSkuIgpAQCAtNTIsNyArNTUsNyBAQAogICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5FdmlkZW5jZSBQcm9qZWN0CiAgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuRXZpZGVuY2UgVG9vbGtpdCAoaHR0cDovL3d3dy5vcGVuZXZpZGVuY2Uub3JnLykKICAqICAgIFRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVjdAotICogICAgZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0IChodHRwOi8vd3d3Lm9wZW5zc2wub3JnLykiCisgKiAgICBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQgKGh0dHBzOi8vd3d3Lm9wZW5zc2wub3JnLykiCiAgKiAgICBUaGlzIHByb2R1Y3QgaW5jbHVkZXMgY3J5cHRvZ3JhcGhpYyBzb2Z0d2FyZSB3cml0dGVuIGJ5IEVyaWMgWW91bmcKICAqICAgIChlYXlAY3J5cHRzb2Z0LmNvbSkuICBUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgd3JpdHRlbiBieSBUaW0KICAqICAgIEh1ZHNvbiAodGpoQGNyeXB0c29mdC5jb20pLiIKQEAgLTcyLDcgKzc1LDcgQEAKICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgKgogICogVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0Ci0gKiBmb3IgdXNlIGluIHRoZSBPcGVuU1NMIFRvb2xraXQgKGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvKQorICogZm9yIHVzZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0IChodHRwczovL3d3dy5vcGVuc3NsLm9yZy8pCiAgKiBUaGlzIHByb2R1Y3QgaW5jbHVkZXMgY3J5cHRvZ3JhcGhpYyBzb2Z0d2FyZSB3cml0dGVuIGJ5IEVyaWMgWW91bmcKICAqIChlYXlAY3J5cHRzb2Z0LmNvbSkuICBUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgd3JpdHRlbiBieSBUaW0KICAqIEh1ZHNvbiAodGpoQGNyeXB0c29mdC5jb20pLgpAQCAtOTgsMTMgKzEwMSwxOCBAQAogc3RhdGljIGNvbnN0IGNoYXIgKmN1cmx4X3VzYWdlW109ewogICAidXNhZ2U6IGN1cmx4IGFyZ3NcbiIsCiAgICIgLXAxMiBhcmcgICAgICAgICAtIHRpYSAgZmlsZSAiLAotICAiIC1lbnZwYXNzIGFyZyAgICAgLSBlbnZpcm9uZW1lbnQgdmFyaWFibGUgd2hpY2ggY29udGVudCB0aGUgdGlhIHByaXZhdGUga2V5IHBhc3N3b3JkIiwKKyAgIiAtZW52cGFzcyBhcmcgICAgIC0gZW52aXJvbmVtZW50IHZhcmlhYmxlIHdoaWNoIGNvbnRlbnQgdGhlIHRpYSBwcml2YXRlIgorICAiIGtleSBwYXNzd29yZCIsCiAgICIgLW91dCBhcmcgICAgICAgICAtIG91dHB1dCBmaWxlIChyZXNwb25zZSktIGRlZmF1bHQgc3Rkb3V0IiwKICAgIiAtaW4gYXJnICAgICAgICAgIC0gaW5wdXQgZmlsZSAocmVxdWVzdCktIGRlZmF1bHQgc3RkaW4iLAotICAiIC1jb25uZWN0IGFyZyAgICAgLSBVUkwgb2YgdGhlIHNlcnZlciBmb3IgdGhlIGNvbm5lY3Rpb24gZXg6IHd3dy5vcGVuZXZpZGVuY2Uub3JnIiwKLSAgIiAtbWltZXR5cGUgYXJnICAgIC0gTUlNRSB0eXBlIGZvciBkYXRhIGluIGV4IDogYXBwbGljYXRpb24vdGltZXN0YW1wLXF1ZXJ5IG9yIGFwcGxpY2F0aW9uL2R2Y3MgLWRlZmF1bHQgYXBwbGljYXRpb24vdGltZXN0YW1wLXF1ZXJ5IiwKLSAgIiAtYWNjZXB0bWltZSBhcmcgIC0gTUlNRSB0eXBlIGFjY2VwdGFibGUgZm9yIHRoZSByZXNwb25zZSBleCA6IGFwcGxpY2F0aW9uL3RpbWVzdGFtcC1yZXNwb25zZSBvciBhcHBsaWNhdGlvbi9kdmNzIC1kZWZhdWx0IG5vbmUiLAotICAiIC1hY2Nlc3N0eXBlIGFyZyAgLSBhbiBPYmplY3QgaWRlbnRpZmllciBpbiBhbiBBSUEvU0lBIG1ldGhvZCwgZS5nLiBBRF9EVkNTIG9yIGFkX3RpbWVzdGFtcGluZyIsCisgICIgLWNvbm5lY3QgYXJnICAgICAtIFVSTCBvZiB0aGUgc2VydmVyIGZvciB0aGUgY29ubmVjdGlvbiBleDoiCisgICIgd3d3Lm9wZW5ldmlkZW5jZS5vcmciLAorICAiIC1taW1ldHlwZSBhcmcgICAgLSBNSU1FIHR5cGUgZm9yIGRhdGEgaW4gZXggOiBhcHBsaWNhdGlvbi90aW1lc3RhbXAtcXVlcnkiCisgICIgb3IgYXBwbGljYXRpb24vZHZjcyAtZGVmYXVsdCBhcHBsaWNhdGlvbi90aW1lc3RhbXAtcXVlcnkiLAorICAiIC1hY2NlcHRtaW1lIGFyZyAgLSBNSU1FIHR5cGUgYWNjZXB0YWJsZSBmb3IgdGhlIHJlc3BvbnNlIGV4IDogIgorICAiYXBwbGljYXRpb24vdGltZXN0YW1wLXJlc3BvbnNlIG9yIGFwcGxpY2F0aW9uL2R2Y3MgLWRlZmF1bHQgbm9uZSIsCisgICIgLWFjY2Vzc3R5cGUgYXJnICAtIGFuIE9iamVjdCBpZGVudGlmaWVyIGluIGFuIEFJQS9TSUEgbWV0aG9kLCBlLmcuIgorICAiIEFEX0RWQ1Mgb3IgYWRfdGltZXN0YW1waW5nIiwKICAgTlVMTAogfTsKIApAQCAtMTI1LDIyICsxMzMsMjIgQEAKIC8qIFRoaXMgaXMgYSBjb250ZXh0IHRoYXQgd2UgcGFzcyB0byBhbGwgY2FsbGJhY2tzICovCiAKIHR5cGVkZWYgc3RydWN0IHNzbGN0eHBhcm1fc3QgewotICB1bnNpZ25lZCBjaGFyICogcDEyZmlsZSA7Ci0gIGNvbnN0IGNoYXIgKiBwc3QgOwotICBQS0NTMTIgKiBwMTIgOwotICBFVlBfUEtFWSAqIHBrZXkgOwotICBYNTA5ICogdXNlcmNlcnQgOwotICBTVEFDS19PRihYNTA5KSAqIGNhIDsKKyAgdW5zaWduZWQgY2hhciAqIHAxMmZpbGU7CisgIGNvbnN0IGNoYXIgKiBwc3Q7CisgIFBLQ1MxMiAqIHAxMjsKKyAgRVZQX1BLRVkgKiBwa2V5OworICBYNTA5ICogdXNlcmNlcnQ7CisgIFNUQUNLX09GKFg1MDkpICogY2E7CiAgIENVUkwgKiBjdXJsOwogICBCSU8gKiBlcnJvcmJpbzsKLSAgaW50IGFjY2Vzc3R5cGUgOworICBpbnQgYWNjZXNzdHlwZTsKICAgaW50IHZlcmJvc2U7CiAKIH0gc3NsY3R4cGFybTsKIAogLyogc29tZSBoZWxwZXIgZnVuY3Rpb24uICovCiAKLXN0YXRpYyBjaGFyICppMnNfQVNOMV9JQTVTVFJJTkcoIEFTTjFfSUE1U1RSSU5HICppYTUpCitzdGF0aWMgY2hhciAqaWE1c3RyaW5nKEFTTjFfSUE1U1RSSU5HICppYTUpCiB7CiAgIGNoYXIgKnRtcDsKICAgaWYoIWlhNSB8fCAhaWE1LT5sZW5ndGgpCkBAIC0xNTIsMjAgKzE2MCwyMCBAQAogfQogCiAvKiBBIGNvbnZlbmlhbmNlIHJvdXRpbmUgdG8gZ2V0IGFuIGFjY2VzcyBVUkkuICovCi0KLXN0YXRpYyB1bnNpZ25lZCBjaGFyICpteV9nZXRfZXh0KFg1MDkgKiBjZXJ0LCBjb25zdCBpbnQgdHlwZSwgaW50IGV4dGVuc2lvbnR5cGUpIHsKLQorc3RhdGljIHVuc2lnbmVkIGNoYXIgKm15X2dldF9leHQoWDUwOSAqY2VydCwgY29uc3QgaW50IHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZXh0ZW5zaW9udHlwZSkKK3sKICAgaW50IGk7Ci0gIFNUQUNLX09GKEFDQ0VTU19ERVNDUklQVElPTikgKiBhY2Nlc3NpbmZvIDsKLSAgYWNjZXNzaW5mbyA9ICBYNTA5X2dldF9leHRfZDJpKGNlcnQsIGV4dGVuc2lvbnR5cGUsIE5VTEwsIE5VTEwpIDsKKyAgU1RBQ0tfT0YoQUNDRVNTX0RFU0NSSVBUSU9OKSAqIGFjY2Vzc2luZm87CisgIGFjY2Vzc2luZm8gPSAgWDUwOV9nZXRfZXh0X2QyaShjZXJ0LCBleHRlbnNpb250eXBlLCBOVUxMLCBOVUxMKTsKIAotICBpZiAoIXNrX0FDQ0VTU19ERVNDUklQVElPTl9udW0oYWNjZXNzaW5mbykpCisgIGlmKCFza19BQ0NFU1NfREVTQ1JJUFRJT05fbnVtKGFjY2Vzc2luZm8pKQogICAgIHJldHVybiBOVUxMOwotICBmb3IgKGkgPSAwOyBpIDwgc2tfQUNDRVNTX0RFU0NSSVBUSU9OX251bShhY2Nlc3NpbmZvKTsgaSsrKSB7CisgIGZvcihpID0gMDsgaSA8IHNrX0FDQ0VTU19ERVNDUklQVElPTl9udW0oYWNjZXNzaW5mbyk7IGkrKykgewogICAgIEFDQ0VTU19ERVNDUklQVElPTiAqIGFkID0gc2tfQUNDRVNTX0RFU0NSSVBUSU9OX3ZhbHVlKGFjY2Vzc2luZm8sIGkpOwotICAgIGlmIChPQkpfb2JqMm5pZChhZC0+bWV0aG9kKSA9PSB0eXBlKSB7Ci0gICAgICBpZiAoYWQtPmxvY2F0aW9uLT50eXBlID09IEdFTl9VUkkpIHsKLSAgICAgICAgcmV0dXJuIGkyc19BU04xX0lBNVNUUklORyhhZC0+bG9jYXRpb24tPmQuaWE1KTsKKyAgICBpZihPQkpfb2JqMm5pZChhZC0+bWV0aG9kKSA9PSB0eXBlKSB7CisgICAgICBpZihhZC0+bG9jYXRpb24tPnR5cGUgPT0gR0VOX1VSSSkgeworICAgICAgICByZXR1cm4gaWE1c3RyaW5nKGFkLT5sb2NhdGlvbi0+ZC5pYTUpOwogICAgICAgfQogICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMTg0LDg0ICsxOTIsODYgQEAKICAgc3NsY3R4cGFybSAqIHAgPSAoc3NsY3R4cGFybSAqKSBhcmc7CiAgIGludCBvazsKIAotICBpZiAocC0+dmVyYm9zZSA+IDIpCi0gICAgQklPX3ByaW50ZihwLT5lcnJvcmJpbywiZW50ZXJpbmcgc3NsX2FwcF92ZXJpZnlfY2FsbGJhY2tcbiIpOworICBpZihwLT52ZXJib3NlID4gMikKKyAgICBCSU9fcHJpbnRmKHAtPmVycm9yYmlvLCAiZW50ZXJpbmcgc3NsX2FwcF92ZXJpZnlfY2FsbGJhY2tcbiIpOwogCi0gIGlmICgob2s9IFg1MDlfdmVyaWZ5X2NlcnQoY3R4KSkgJiYgY3R4LT5jZXJ0KSB7Ci0gICAgdW5zaWduZWQgY2hhciAqIGFjY2Vzc2luZm8gOwotICAgIGlmIChwLT52ZXJib3NlID4gMSkKLSAgICAgIFg1MDlfcHJpbnRfZXgocC0+ZXJyb3JiaW8sY3R4LT5jZXJ0LDAsMCk7CisgIGlmKChvaz0gWDUwOV92ZXJpZnlfY2VydChjdHgpKSAmJiBjdHgtPmNlcnQpIHsKKyAgICB1bnNpZ25lZCBjaGFyICogYWNjZXNzaW5mbzsKKyAgICBpZihwLT52ZXJib3NlID4gMSkKKyAgICAgIFg1MDlfcHJpbnRfZXgocC0+ZXJyb3JiaW8sIGN0eC0+Y2VydCwgMCwgMCk7CiAKLSAgICBpZiAoYWNjZXNzaW5mbyA9IG15X2dldF9leHQoY3R4LT5jZXJ0LHAtPmFjY2Vzc3R5cGUgLE5JRF9zaW5mb19hY2Nlc3MpKSB7Ci0gICAgICBpZiAocC0+dmVyYm9zZSkKLSAgICAgICAgQklPX3ByaW50ZihwLT5lcnJvcmJpbywiU2V0dGluZyBVUkwgZnJvbSBTSUEgdG86ICVzXG4iLCBhY2Nlc3NpbmZvKTsKKyAgICBpZihhY2Nlc3NpbmZvID0gbXlfZ2V0X2V4dChjdHgtPmNlcnQsIHAtPmFjY2Vzc3R5cGUsIE5JRF9zaW5mb19hY2Nlc3MpKSB7CisgICAgICBpZihwLT52ZXJib3NlKQorICAgICAgICBCSU9fcHJpbnRmKHAtPmVycm9yYmlvLCAiU2V0dGluZyBVUkwgZnJvbSBTSUEgdG86ICVzXG4iLCBhY2Nlc3NpbmZvKTsKIAotICAgICAgY3VybF9lYXN5X3NldG9wdChwLT5jdXJsLCBDVVJMT1BUX1VSTCxhY2Nlc3NpbmZvKTsKKyAgICAgIGN1cmxfZWFzeV9zZXRvcHQocC0+Y3VybCwgQ1VSTE9QVF9VUkwsIGFjY2Vzc2luZm8pOwogICAgIH0KLSAgICBlbHNlIGlmIChhY2Nlc3NpbmZvID0gbXlfZ2V0X2V4dChjdHgtPmNlcnQscC0+YWNjZXNzdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSURfaW5mb19hY2Nlc3MpKSB7Ci0gICAgICBpZiAocC0+dmVyYm9zZSkKLSAgICAgICAgQklPX3ByaW50ZihwLT5lcnJvcmJpbywiU2V0dGluZyBVUkwgZnJvbSBBSUEgdG86ICVzXG4iLCBhY2Nlc3NpbmZvKTsKKyAgICBlbHNlIGlmKGFjY2Vzc2luZm8gPSBteV9nZXRfZXh0KGN0eC0+Y2VydCwgcC0+YWNjZXNzdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JRF9pbmZvX2FjY2VzcykpIHsKKyAgICAgIGlmKHAtPnZlcmJvc2UpCisgICAgICAgIEJJT19wcmludGYocC0+ZXJyb3JiaW8sICJTZXR0aW5nIFVSTCBmcm9tIEFJQSB0bzogJXNcbiIsIGFjY2Vzc2luZm8pOwogCi0gICAgICBjdXJsX2Vhc3lfc2V0b3B0KHAtPmN1cmwsIENVUkxPUFRfVVJMLGFjY2Vzc2luZm8pOworICAgICAgY3VybF9lYXN5X3NldG9wdChwLT5jdXJsLCBDVVJMT1BUX1VSTCwgYWNjZXNzaW5mbyk7CiAgICAgfQogICB9Ci0gIGlmIChwLT52ZXJib3NlID4gMikKLSAgICBCSU9fcHJpbnRmKHAtPmVycm9yYmlvLCJsZWF2aW5nIHNzbF9hcHBfdmVyaWZ5X2NhbGxiYWNrIHdpdGggJWRcbiIsIG9rKTsKLSAgcmV0dXJuKG9rKTsKKyAgaWYocC0+dmVyYm9zZSA+IDIpCisgICAgQklPX3ByaW50ZihwLT5lcnJvcmJpbywgImxlYXZpbmcgc3NsX2FwcF92ZXJpZnlfY2FsbGJhY2sgd2l0aCAlZFxuIiwgb2spOworCisgIHJldHVybiBvazsKIH0KIAogCi0vKiBUaGlzIGlzIGFuIGV4YW1wbGUgb2YgYW4gY3VybCBTU0wgaW5pdGlhbGlzYXRpb24gY2FsbCBiYWNrLiBUaGUgY2FsbGJhY2sgc2V0czoKKy8qIFRoZSBTU0wgaW5pdGlhbGlzYXRpb24gY2FsbGJhY2suIFRoZSBjYWxsYmFjayBzZXRzOgogICAgLSBhIHByaXZhdGUga2V5IGFuZCBjZXJ0aWZpY2F0ZQogICAgLSBhIHRydXN0ZWQgY2EgY2VydGlmaWNhdGUKICAgIC0gYSBwcmVmZXJyZWQgY2lwaGVybGlzdAogICAgLSBhbiBhcHBsaWNhdGlvbiB2ZXJpZmljYXRpb24gY2FsbGJhY2sgKHRoZSBmdW5jdGlvbiBhYm92ZSkKICovCiAKLXN0YXRpYyBDVVJMY29kZSBzc2xjdHhmdW4oQ1VSTCAqIGN1cmwsIHZvaWQgKiBzc2xjdHgsIHZvaWQgKiBwYXJtKSB7Ci0KK3N0YXRpYyBDVVJMY29kZSBzc2xjdHhmdW4oQ1VSTCAqIGN1cmwsIHZvaWQgKiBzc2xjdHgsIHZvaWQgKiBwYXJtKQorewogICBzc2xjdHhwYXJtICogcCA9IChzc2xjdHhwYXJtICopIHBhcm07Ci0gIFNTTF9DVFggKiBjdHggPSAoU1NMX0NUWCAqKSBzc2xjdHggOworICBTU0xfQ1RYICogY3R4ID0gKFNTTF9DVFggKikgc3NsY3R4OwogCi0gIGlmICghU1NMX0NUWF91c2VfY2VydGlmaWNhdGUoY3R4LHAtPnVzZXJjZXJ0KSkgewotICAgIEJJT19wcmludGYocC0+ZXJyb3JiaW8sICJTU0xfQ1RYX3VzZV9jZXJ0aWZpY2F0ZSBwcm9ibGVtXG4iKTsgZ290byBlcnI7CisgIGlmKCFTU0xfQ1RYX3VzZV9jZXJ0aWZpY2F0ZShjdHgsIHAtPnVzZXJjZXJ0KSkgeworICAgIEJJT19wcmludGYocC0+ZXJyb3JiaW8sICJTU0xfQ1RYX3VzZV9jZXJ0aWZpY2F0ZSBwcm9ibGVtXG4iKTsKKyAgICBnb3RvIGVycjsKICAgfQotICBpZiAoIVNTTF9DVFhfdXNlX1ByaXZhdGVLZXkoY3R4LHAtPnBrZXkpKSB7Ci0gICAgQklPX3ByaW50ZihwLT5lcnJvcmJpbywgIlNTTF9DVFhfdXNlX1ByaXZhdGVLZXlcbiIpOyBnb3RvIGVycjsKKyAgaWYoIVNTTF9DVFhfdXNlX1ByaXZhdGVLZXkoY3R4LCBwLT5wa2V5KSkgeworICAgIEJJT19wcmludGYocC0+ZXJyb3JiaW8sICJTU0xfQ1RYX3VzZV9Qcml2YXRlS2V5XG4iKTsKKyAgICBnb3RvIGVycjsKICAgfQogCi0gIGlmICghU1NMX0NUWF9jaGVja19wcml2YXRlX2tleShjdHgpKSB7Ci0gICAgQklPX3ByaW50ZihwLT5lcnJvcmJpbywgIlNTTF9DVFhfY2hlY2tfcHJpdmF0ZV9rZXlcbiIpOyBnb3RvIGVycjsKKyAgaWYoIVNTTF9DVFhfY2hlY2tfcHJpdmF0ZV9rZXkoY3R4KSkgeworICAgIEJJT19wcmludGYocC0+ZXJyb3JiaW8sICJTU0xfQ1RYX2NoZWNrX3ByaXZhdGVfa2V5XG4iKTsKKyAgICBnb3RvIGVycjsKICAgfQogCi0gIFNTTF9DVFhfc2V0X3F1aWV0X3NodXRkb3duKGN0eCwxKTsKLSAgU1NMX0NUWF9zZXRfY2lwaGVyX2xpc3QoY3R4LCJSQzQtTUQ1Iik7CisgIFNTTF9DVFhfc2V0X3F1aWV0X3NodXRkb3duKGN0eCwgMSk7CisgIFNTTF9DVFhfc2V0X2NpcGhlcl9saXN0KGN0eCwgIlJDNC1NRDUiKTsKICAgU1NMX0NUWF9zZXRfbW9kZShjdHgsIFNTTF9NT0RFX0FVVE9fUkVUUlkpOwogCi0gIFg1MDlfU1RPUkVfYWRkX2NlcnQoU1NMX0NUWF9nZXRfY2VydF9zdG9yZShjdHgpLCBza19YNTA5X3ZhbHVlKHAtPmNhLCBza19YNTA5X251bShwLT5jYSktMSkpOworICBYNTA5X1NUT1JFX2FkZF9jZXJ0KFNTTF9DVFhfZ2V0X2NlcnRfc3RvcmUoY3R4KSwKKyAgICAgICAgICAgICAgICAgICAgICBza19YNTA5X3ZhbHVlKHAtPmNhLCBza19YNTA5X251bShwLT5jYSktMSkpOwogCi0gIFNTTF9DVFhfc2V0X3ZlcmlmeV9kZXB0aChjdHgsMik7Ci0KLSAgU1NMX0NUWF9zZXRfdmVyaWZ5KGN0eCxTU0xfVkVSSUZZX1BFRVIsWkVST19OVUxMKTsKLQorICBTU0xfQ1RYX3NldF92ZXJpZnlfZGVwdGgoY3R4LCAyKTsKKyAgU1NMX0NUWF9zZXRfdmVyaWZ5KGN0eCwgU1NMX1ZFUklGWV9QRUVSLCBaRVJPX05VTEwpOwogICBTU0xfQ1RYX3NldF9jZXJ0X3ZlcmlmeV9jYWxsYmFjayhjdHgsIHNzbF9hcHBfdmVyaWZ5X2NhbGxiYWNrLCBwYXJtKTsKIAotCi0gIHJldHVybiBDVVJMRV9PSyA7CisgIHJldHVybiBDVVJMRV9PSzsKICAgZXJyOgogICBFUlJfcHJpbnRfZXJyb3JzKHAtPmVycm9yYmlvKTsKICAgcmV0dXJuIENVUkxFX1NTTF9DRVJUUFJPQkxFTTsKIAogfQogCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKLQoraW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorewogICBCSU8qIGluPU5VTEw7CiAgIEJJTyogb3V0PU5VTEw7CiAKICAgY2hhciAqIG91dGZpbGUgPSBOVUxMOwotICBjaGFyICogaW5maWxlID0gTlVMTCA7CisgIGNoYXIgKiBpbmZpbGUgPSBOVUxMOwogCiAgIGludCB0YWJMZW5ndGg9MTAwOwogICBjaGFyICpiaW5hcnlwdHI7CkBAIC0yNzAsNyArMjgwLDcgQEAKICAgY2hhciogY29udGVudHR5cGU7CiAgIGNvbnN0IGNoYXIqKiBwcDsKICAgdW5zaWduZWQgY2hhciogaG9zdHBvcnR1cmwgPSBOVUxMOwotICBCSU8gKiBwMTJiaW8gOworICBCSU8gKiBwMTJiaW87CiAgIGNoYXIgKiphcmdzID0gYXJndiArIDE7CiAgIHVuc2lnbmVkIGNoYXIgKiBzZXJ2ZXJ1cmw7CiAgIHNzbGN0eHBhcm0gcDsKQEAgLTI5Myw2NiArMzAzLDkxIEBACiAgIE9wZW5TU0xfYWRkX2FsbF9kaWdlc3RzKCk7CiAgIEVSUl9sb2FkX2NyeXB0b19zdHJpbmdzKCk7CiAKLQotCi0gIHdoaWxlICgqYXJncyAmJiAqYXJnc1swXSA9PSAnLScpIHsKLSAgICBpZiAoIXN0cmNtcCAoKmFyZ3MsICItaW4iKSkgewotICAgICAgaWYgKGFyZ3NbMV0pIHsKKyAgd2hpbGUoKmFyZ3MgJiYgKmFyZ3NbMF0gPT0gJy0nKSB7CisgICAgaWYoIXN0cmNtcCAoKmFyZ3MsICItaW4iKSkgeworICAgICAgaWYoYXJnc1sxXSkgewogICAgICAgICBpbmZpbGU9KigrK2FyZ3MpOwotICAgICAgfSBlbHNlIGJhZGFyZz0xOwotICAgIH0gZWxzZSBpZiAoIXN0cmNtcCAoKmFyZ3MsICItb3V0IikpIHsKLSAgICAgIGlmIChhcmdzWzFdKSB7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICAgIGJhZGFyZz0xOworICAgIH0KKyAgICBlbHNlIGlmKCFzdHJjbXAgKCphcmdzLCAiLW91dCIpKSB7CisgICAgICBpZihhcmdzWzFdKSB7CiAgICAgICAgIG91dGZpbGU9KigrK2FyZ3MpOwotICAgICAgfSBlbHNlIGJhZGFyZz0xOwotICAgIH0gZWxzZSBpZiAoIXN0cmNtcCAoKmFyZ3MsICItcDEyIikpIHsKLSAgICAgIGlmIChhcmdzWzFdKSB7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICAgIGJhZGFyZz0xOworICAgIH0KKyAgICBlbHNlIGlmKCFzdHJjbXAgKCphcmdzLCAiLXAxMiIpKSB7CisgICAgICBpZihhcmdzWzFdKSB7CiAgICAgICAgIHAucDEyZmlsZSA9ICooKythcmdzKTsKLSAgICAgIH0gZWxzZSBiYWRhcmc9MTsKLSAgICB9IGVsc2UgaWYgKHN0cmNtcCgqYXJncywiLWVudnBhc3MiKSA9PSAwKSB7Ci0gICAgICBpZiAoYXJnc1sxXSkgeworICAgICAgfQorICAgICAgZWxzZQorICAgICAgICBiYWRhcmc9MTsKKyAgICB9CisgICAgZWxzZSBpZihzdHJjbXAoKmFyZ3MsICItZW52cGFzcyIpID09IDApIHsKKyAgICAgIGlmKGFyZ3NbMV0pIHsKICAgICAgICAgcC5wc3QgPSBnZXRlbnYoKigrK2FyZ3MpKTsKLSAgICAgIH0gZWxzZSBiYWRhcmc9MTsKLSAgICB9IGVsc2UgaWYgKHN0cmNtcCgqYXJncywiLWNvbm5lY3QiKSA9PSAwKSB7Ci0gICAgICBpZiAoYXJnc1sxXSkgeworICAgICAgfQorICAgICAgZWxzZQorICAgICAgICBiYWRhcmc9MTsKKyAgICB9CisgICAgZWxzZSBpZihzdHJjbXAoKmFyZ3MsICItY29ubmVjdCIpID09IDApIHsKKyAgICAgIGlmKGFyZ3NbMV0pIHsKICAgICAgICAgaG9zdHBvcnR1cmwgPSAqKCsrYXJncyk7Ci0gICAgICB9IGVsc2UgYmFkYXJnPTE7Ci0gICAgfSBlbHNlIGlmIChzdHJjbXAoKmFyZ3MsIi1taW1ldHlwZSIpID09IDApIHsKLSAgICAgIGlmIChhcmdzWzFdKSB7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICAgIGJhZGFyZz0xOworICAgIH0KKyAgICBlbHNlIGlmKHN0cmNtcCgqYXJncywgIi1taW1ldHlwZSIpID09IDApIHsKKyAgICAgIGlmKGFyZ3NbMV0pIHsKICAgICAgICAgbWltZXR5cGUgPSAqKCsrYXJncyk7Ci0gICAgICB9IGVsc2UgYmFkYXJnPTE7Ci0gICAgfSBlbHNlIGlmIChzdHJjbXAoKmFyZ3MsIi1hY2NlcHRtaW1lIikgPT0gMCkgewotICAgICAgaWYgKGFyZ3NbMV0pIHsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgICAgYmFkYXJnPTE7CisgICAgfQorICAgIGVsc2UgaWYoc3RyY21wKCphcmdzLCAiLWFjY2VwdG1pbWUiKSA9PSAwKSB7CisgICAgICBpZihhcmdzWzFdKSB7CiAgICAgICAgIG1pbWV0eXBlYWNjZXB0ID0gKigrK2FyZ3MpOwotICAgICAgfSBlbHNlIGJhZGFyZz0xOwotICAgIH0gZWxzZSBpZiAoc3RyY21wKCphcmdzLCItYWNjZXNzdHlwZSIpID09IDApIHsKLSAgICAgIGlmIChhcmdzWzFdKSB7Ci0gICAgICAgIGlmICgocC5hY2Nlc3N0eXBlID0gT0JKX29iajJuaWQoT0JKX3R4dDJvYmooKisrYXJncywwKSkpID09IDApIGJhZGFyZz0xOwotICAgICAgfSBlbHNlIGJhZGFyZz0xOwotICAgIH0gZWxzZSBpZiAoc3RyY21wKCphcmdzLCItdmVyYm9zZSIpID09IDApIHsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgICAgYmFkYXJnPTE7CisgICAgfQorICAgIGVsc2UgaWYoc3RyY21wKCphcmdzLCAiLWFjY2Vzc3R5cGUiKSA9PSAwKSB7CisgICAgICBpZihhcmdzWzFdKSB7CisgICAgICAgIGlmKChwLmFjY2Vzc3R5cGUgPSBPQkpfb2JqMm5pZChPQkpfdHh0Mm9iaigqKythcmdzLCAwKSkpID09IDApCisgICAgICAgICAgYmFkYXJnPTE7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICAgIGJhZGFyZz0xOworICAgIH0KKyAgICBlbHNlIGlmKHN0cmNtcCgqYXJncywgIi12ZXJib3NlIikgPT0gMCkgewogICAgICAgcC52ZXJib3NlKys7Ci0gICAgfSBlbHNlIGJhZGFyZz0xOworICAgIH0KKyAgICBlbHNlCisgICAgICBiYWRhcmc9MTsKICAgICBhcmdzKys7CiAgIH0KIAotICBpZiAobWltZXR5cGU9PU5VTEwgfHwgbWltZXR5cGVhY2NlcHQgPT0gTlVMTCkgYmFkYXJnID0gMTsKKyAgaWYobWltZXR5cGU9PU5VTEwgfHwgbWltZXR5cGVhY2NlcHQgPT0gTlVMTCkKKyAgICBiYWRhcmcgPSAxOwogCi0gIGlmIChiYWRhcmcpIHsKLSAgICBmb3IgKHBwPWN1cmx4X3VzYWdlOyAoKnBwICE9IE5VTEwpOyBwcCsrKQotICAgICAgQklPX3ByaW50ZihwLmVycm9yYmlvLCIlc1xuIiwqcHApOwotICAgIEJJT19wcmludGYocC5lcnJvcmJpbywiXG4iKTsKKyAgaWYoYmFkYXJnKSB7CisgICAgZm9yKHBwPWN1cmx4X3VzYWdlOyAoKnBwICE9IE5VTEwpOyBwcCsrKQorICAgICAgQklPX3ByaW50ZihwLmVycm9yYmlvLCAiJXNcbiIsICpwcCk7CisgICAgQklPX3ByaW50ZihwLmVycm9yYmlvLCAiXG4iKTsKICAgICBnb3RvIGVycjsKICAgfQogCi0KLQogICAvKiBzZXQgaW5wdXQgKi8KIAotICBpZiAoKGluPUJJT19uZXcoQklPX3NfZmlsZSgpKSkgPT0gTlVMTCkgeworICBpZigoaW49QklPX25ldyhCSU9fc19maWxlKCkpKSA9PSBOVUxMKSB7CiAgICAgQklPX3ByaW50ZihwLmVycm9yYmlvLCAiRXJyb3Igc2V0dGluZyBpbnB1dCBiaW9cbiIpOwogICAgIGdvdG8gZXJyOwotICB9IGVsc2UgaWYgKGluZmlsZSA9PSBOVUxMKQotICAgIEJJT19zZXRfZnAoaW4sc3RkaW4sQklPX05PQ0xPU0V8QklPX0ZQX1RFWFQpOwotICBlbHNlIGlmIChCSU9fcmVhZF9maWxlbmFtZShpbixpbmZpbGUpIDw9IDApIHsKKyAgfQorICBlbHNlIGlmKGluZmlsZSA9PSBOVUxMKQorICAgIEJJT19zZXRfZnAoaW4sIHN0ZGluLCBCSU9fTk9DTE9TRXxCSU9fRlBfVEVYVCk7CisgIGVsc2UgaWYoQklPX3JlYWRfZmlsZW5hbWUoaW4sIGluZmlsZSkgPD0gMCkgewogICAgIEJJT19wcmludGYocC5lcnJvcmJpbywgIkVycm9yIG9wZW5pbmcgaW5wdXQgZmlsZSAlc1xuIiwgaW5maWxlKTsKICAgICBCSU9fZnJlZShpbik7CiAgICAgZ290byBlcnI7CkBAIC0zNjAsMTIgKzM5NSwxMyBAQAogCiAgIC8qIHNldCBvdXRwdXQgICovCiAKLSAgaWYgKChvdXQ9QklPX25ldyhCSU9fc19maWxlKCkpKSA9PSBOVUxMKSB7CisgIGlmKChvdXQ9QklPX25ldyhCSU9fc19maWxlKCkpKSA9PSBOVUxMKSB7CiAgICAgQklPX3ByaW50ZihwLmVycm9yYmlvLCAiRXJyb3Igc2V0dGluZyBvdXRwdXQgYmlvLlxuIik7CiAgICAgZ290byBlcnI7Ci0gIH0gZWxzZSBpZiAob3V0ZmlsZSA9PSBOVUxMKQotICAgIEJJT19zZXRfZnAob3V0LHN0ZG91dCxCSU9fTk9DTE9TRXxCSU9fRlBfVEVYVCk7Ci0gIGVsc2UgaWYgKEJJT193cml0ZV9maWxlbmFtZShvdXQsb3V0ZmlsZSkgPD0gMCkgeworICB9CisgIGVsc2UgaWYob3V0ZmlsZSA9PSBOVUxMKQorICAgIEJJT19zZXRfZnAob3V0LCBzdGRvdXQsIEJJT19OT0NMT1NFfEJJT19GUF9URVhUKTsKKyAgZWxzZSBpZihCSU9fd3JpdGVfZmlsZW5hbWUob3V0LCBvdXRmaWxlKSA8PSAwKSB7CiAgICAgQklPX3ByaW50ZihwLmVycm9yYmlvLCAiRXJyb3Igb3BlbmluZyBvdXRwdXQgZmlsZSAlc1xuIiwgb3V0ZmlsZSk7CiAgICAgQklPX2ZyZWUob3V0KTsKICAgICBnb3RvIGVycjsKQEAgLTM3NCw2MiArNDEwLDY2IEBACiAKICAgcC5lcnJvcmJpbyA9IEJJT19uZXdfZnAgKHN0ZGVyciwgQklPX05PQ0xPU0UpOwogCi0gIGlmICghKHAuY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpKSB7CisgIGlmKCEocC5jdXJsID0gY3VybF9lYXN5X2luaXQoKSkpIHsKICAgICBCSU9fcHJpbnRmKHAuZXJyb3JiaW8sICJDYW5ub3QgaW5pdCBjdXJsIGxpYlxuIik7CiAgICAgZ290byBlcnI7CiAgIH0KIAotCi0KLSAgaWYgKCEocDEyYmlvID0gQklPX25ld19maWxlKHAucDEyZmlsZSAsICJyYiIpKSkgewotICAgIEJJT19wcmludGYocC5lcnJvcmJpbywgIkVycm9yIG9wZW5pbmcgUDEyIGZpbGUgJXNcbiIsIHAucDEyZmlsZSk7IGdvdG8gZXJyOworICBpZighKHAxMmJpbyA9IEJJT19uZXdfZmlsZShwLnAxMmZpbGUsICJyYiIpKSkgeworICAgIEJJT19wcmludGYocC5lcnJvcmJpbywgIkVycm9yIG9wZW5pbmcgUDEyIGZpbGUgJXNcbiIsIHAucDEyZmlsZSk7CisgICAgZ290byBlcnI7CiAgIH0KLSAgaWYgKCEocC5wMTIgPSBkMmlfUEtDUzEyX2JpbyAocDEyYmlvLCBOVUxMKSkpIHsKLSAgICBCSU9fcHJpbnRmKHAuZXJyb3JiaW8sICJDYW5ub3QgZGVjb2RlIFAxMiBzdHJ1Y3R1cmUgJXNcbiIsIHAucDEyZmlsZSk7IGdvdG8gZXJyOworICBpZighKHAucDEyID0gZDJpX1BLQ1MxMl9iaW8gKHAxMmJpbywgTlVMTCkpKSB7CisgICAgQklPX3ByaW50ZihwLmVycm9yYmlvLCAiQ2Fubm90IGRlY29kZSBQMTIgc3RydWN0dXJlICVzXG4iLCBwLnAxMmZpbGUpOworICAgIGdvdG8gZXJyOwogICB9CiAKICAgcC5jYT0gTlVMTDsKLSAgaWYgKCEoUEtDUzEyX3BhcnNlIChwLnAxMiwgcC5wc3QsICYocC5wa2V5KSwgJihwLnVzZXJjZXJ0KSwgJihwLmNhKSApICkpIHsKLSAgICBCSU9fcHJpbnRmKHAuZXJyb3JiaW8sIkludmFsaWQgUDEyIHN0cnVjdHVyZSBpbiAlc1xuIiwgcC5wMTJmaWxlKTsgZ290byBlcnI7CisgIGlmKCEoUEtDUzEyX3BhcnNlIChwLnAxMiwgcC5wc3QsICYocC5wa2V5KSwgJihwLnVzZXJjZXJ0KSwgJihwLmNhKSApICkpIHsKKyAgICBCSU9fcHJpbnRmKHAuZXJyb3JiaW8sICJJbnZhbGlkIFAxMiBzdHJ1Y3R1cmUgaW4gJXNcbiIsIHAucDEyZmlsZSk7CisgICAgZ290byBlcnI7CiAgIH0KIAotICBpZiAoc2tfWDUwOV9udW0ocC5jYSkgPD0gMCkgewotICAgIEJJT19wcmludGYocC5lcnJvcmJpbywiTm8gdHJ1c3R3b3J0aHkgQ0EgZ2l2ZW4uJXNcbiIsIHAucDEyZmlsZSk7IGdvdG8gZXJyOworICBpZihza19YNTA5X251bShwLmNhKSA8PSAwKSB7CisgICAgQklPX3ByaW50ZihwLmVycm9yYmlvLCAiTm8gdHJ1c3R3b3J0aHkgQ0EgZ2l2ZW4uJXNcbiIsIHAucDEyZmlsZSk7CisgICAgZ290byBlcnI7CiAgIH0KIAotICBpZiAocC52ZXJib3NlID4gMSkKLSAgICBYNTA5X3ByaW50X2V4KHAuZXJyb3JiaW8scC51c2VyY2VydCwwLDApOworICBpZihwLnZlcmJvc2UgPiAxKQorICAgIFg1MDlfcHJpbnRfZXgocC5lcnJvcmJpbywgcC51c2VyY2VydCwgMCwgMCk7CiAKICAgLyogZGV0ZXJtaW5lIFVSTCB0byBnbyAqLwogCi0gIGlmIChob3N0cG9ydHVybCkgewotICAgIHNlcnZlcnVybCA9IG1hbGxvYyg5K3N0cmxlbihob3N0cG9ydHVybCkpOwotICAgIHNwcmludGYoc2VydmVydXJsLCJodHRwczovLyVzIixob3N0cG9ydHVybCk7CisgIGlmKGhvc3Rwb3J0dXJsKSB7CisgICAgc2l6ZV90IGxlbiA9IHN0cmxlbihob3N0cG9ydHVybCkgKyA5OworICAgIHNlcnZlcnVybCA9IG1hbGxvYyhsZW4pOworICAgIHNucHJpbnRmKHNlcnZlcnVybCwgbGVuLCAiaHR0cHM6Ly8lcyIsIGhvc3Rwb3J0dXJsKTsKICAgfQotICBlbHNlIGlmIChwLmFjY2Vzc3R5cGUgIT0gMCkgeyAvKiBzZWUgd2hldGhlciB3ZSBjYW4gZmluZCBhbiBBSUEgb3IgU0lBIGZvciBhIGdpdmVuIGFjY2VzcyB0eXBlICovCi0gICAgaWYgKCEoc2VydmVydXJsID0gbXlfZ2V0X2V4dChwLnVzZXJjZXJ0LHAuYWNjZXNzdHlwZSxOSURfaW5mb19hY2Nlc3MpKSkgeworICBlbHNlIGlmKHAuYWNjZXNzdHlwZSAhPSAwKSB7IC8qIHNlZSB3aGV0aGVyIHdlIGNhbiBmaW5kIGFuIEFJQSBvciBTSUEgZm9yIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaXZlbiBhY2Nlc3MgdHlwZSAqLworICAgIGlmKCEoc2VydmVydXJsID0gbXlfZ2V0X2V4dChwLnVzZXJjZXJ0LCBwLmFjY2Vzc3R5cGUsIE5JRF9pbmZvX2FjY2VzcykpKSB7CiAgICAgICBpbnQgaj0wOwotICAgICAgQklPX3ByaW50ZihwLmVycm9yYmlvLCJubyBzZXJ2aWNlIFVSTCBpbiB1c2VyIGNlcnQgIgorICAgICAgQklPX3ByaW50ZihwLmVycm9yYmlvLCAibm8gc2VydmljZSBVUkwgaW4gdXNlciBjZXJ0ICIKICAgICAgICAgICAgICAgICAgImNoZXJjaGluZyBpbiBvdGhlcnMgY2VydGlmaWNhdHNcbiIpOwotICAgICAgZm9yIChqPTA7ajxza19YNTA5X251bShwLmNhKTtqKyspIHsKLSAgICAgICAgaWYgKChzZXJ2ZXJ1cmwgPSBteV9nZXRfZXh0KHNrX1g1MDlfdmFsdWUocC5jYSxqKSxwLmFjY2Vzc3R5cGUsCisgICAgICBmb3Ioaj0wOyBqPHNrX1g1MDlfbnVtKHAuY2EpOyBqKyspIHsKKyAgICAgICAgaWYoKHNlcnZlcnVybCA9IG15X2dldF9leHQoc2tfWDUwOV92YWx1ZShwLmNhLCBqKSwgcC5hY2Nlc3N0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTklEX2luZm9fYWNjZXNzKSkpCiAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGlmICgoc2VydmVydXJsID0gbXlfZ2V0X2V4dChza19YNTA5X3ZhbHVlKHAuY2EsaikscC5hY2Nlc3N0eXBlLAorICAgICAgICBpZigoc2VydmVydXJsID0gbXlfZ2V0X2V4dChza19YNTA5X3ZhbHVlKHAuY2EsIGopLCBwLmFjY2Vzc3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSURfc2luZm9fYWNjZXNzKSkpCiAgICAgICAgICAgYnJlYWs7CiAgICAgICB9CiAgICAgfQogICB9CiAKLSAgaWYgKCFzZXJ2ZXJ1cmwpIHsKKyAgaWYoIXNlcnZlcnVybCkgewogICAgIEJJT19wcmludGYocC5lcnJvcmJpbywgIm5vIHNlcnZpY2UgVVJMIGluIGNlcnRpZmljYXRzLCIKICAgICAgICAgICAgICAgICIgY2hlY2sgJy1hY2Nlc3N0eXBlIChBRF9EVkNTIHwgYWRfdGltZXN0YW1waW5nKSciCiAgICAgICAgICAgICAgICAiIG9yIHVzZSAnLWNvbm5lY3QnXG4iKTsKICAgICBnb3RvIGVycjsKICAgfQogCi0gIGlmIChwLnZlcmJvc2UpCisgIGlmKHAudmVyYm9zZSkKICAgICBCSU9fcHJpbnRmKHAuZXJyb3JiaW8sICJTZXJ2aWNlIFVSTDogPCVzPlxuIiwgc2VydmVydXJsKTsKIAogICBjdXJsX2Vhc3lfc2V0b3B0KHAuY3VybCwgQ1VSTE9QVF9VUkwsIHNlcnZlcnVybCk7CkBAIC00MzcsMzggKzQ3NywzOSBAQAogICAvKiBOb3cgc3BlY2lmeSB0aGUgUE9TVCBiaW5hcnkgZGF0YSAqLwogCiAgIGN1cmxfZWFzeV9zZXRvcHQocC5jdXJsLCBDVVJMT1BUX1BPU1RGSUVMRFMsIGJpbmFyeXB0cik7Ci0gIGN1cmxfZWFzeV9zZXRvcHQocC5jdXJsLCBDVVJMT1BUX1BPU1RGSUVMRFNJWkUsKGxvbmcpdGFiTGVuZ3RoKTsKKyAgY3VybF9lYXN5X3NldG9wdChwLmN1cmwsIENVUkxPUFRfUE9TVEZJRUxEU0laRSwgKGxvbmcpdGFiTGVuZ3RoKTsKIAogICAvKiBwYXNzIG91ciBsaXN0IG9mIGN1c3RvbSBtYWRlIGhlYWRlcnMgKi8KIAogICBjb250ZW50dHlwZSA9IG1hbGxvYygxNStzdHJsZW4obWltZXR5cGUpKTsKLSAgc3ByaW50Zihjb250ZW50dHlwZSwiQ29udGVudC10eXBlOiAlcyIsbWltZXR5cGUpOwotICBoZWFkZXJzID0gY3VybF9zbGlzdF9hcHBlbmQoaGVhZGVycyxjb250ZW50dHlwZSk7CisgIHNucHJpbnRmKGNvbnRlbnR0eXBlLCAxNStzdHJsZW4obWltZXR5cGUpLCAiQ29udGVudC10eXBlOiAlcyIsIG1pbWV0eXBlKTsKKyAgaGVhZGVycyA9IGN1cmxfc2xpc3RfYXBwZW5kKGhlYWRlcnMsIGNvbnRlbnR0eXBlKTsKICAgY3VybF9lYXN5X3NldG9wdChwLmN1cmwsIENVUkxPUFRfSFRUUEhFQURFUiwgaGVhZGVycyk7CiAKLSAgaWYgKHAudmVyYm9zZSkKKyAgaWYocC52ZXJib3NlKQogICAgIEJJT19wcmludGYocC5lcnJvcmJpbywgIlNlcnZpY2UgVVJMOiA8JXM+XG4iLCBzZXJ2ZXJ1cmwpOwogCiAgIHsKICAgICBGSUxFICpvdXRmcDsKLSAgICBCSU9fZ2V0X2ZwKG91dCwmb3V0ZnApOworICAgIEJJT19nZXRfZnAob3V0LCAmb3V0ZnApOwogICAgIGN1cmxfZWFzeV9zZXRvcHQocC5jdXJsLCBDVVJMT1BUX1dSSVRFREFUQSwgb3V0ZnApOwogICB9CiAKLSAgcmVzID0gY3VybF9lYXN5X3NldG9wdChwLmN1cmwsIENVUkxPUFRfU1NMX0NUWF9GVU5DVElPTiwgc3NsY3R4ZnVuKSAgOworICByZXMgPSBjdXJsX2Vhc3lfc2V0b3B0KHAuY3VybCwgQ1VSTE9QVF9TU0xfQ1RYX0ZVTkNUSU9OLCBzc2xjdHhmdW4pOwogCi0gIGlmIChyZXMgIT0gQ1VSTEVfT0spCi0gICAgQklPX3ByaW50ZihwLmVycm9yYmlvLCIlZCAlcz0lZCAlZFxuIiwgX19MSU5FX18sICJDVVJMT1BUX1NTTF9DVFhfRlVOQ1RJT04iLENVUkxPUFRfU1NMX0NUWF9GVU5DVElPTixyZXMpOworICBpZihyZXMgIT0gQ1VSTEVfT0spCisgICAgQklPX3ByaW50ZihwLmVycm9yYmlvLCAiJWQgJXM9JWQgJWRcbiIsIF9fTElORV9fLAorICAgICAgICAgICAgICAgIkNVUkxPUFRfU1NMX0NUWF9GVU5DVElPTiIsIENVUkxPUFRfU1NMX0NUWF9GVU5DVElPTiwgcmVzKTsKIAogICBjdXJsX2Vhc3lfc2V0b3B0KHAuY3VybCwgQ1VSTE9QVF9TU0xfQ1RYX0RBVEEsICZwKTsKIAogICB7CiAgICAgaW50IGx1OyBpbnQgaT0wOwotICAgIHdoaWxlICgobHUgPSBCSU9fcmVhZCAoaW4sJmJpbmFyeXB0cltpXSx0YWJMZW5ndGgtaSkpID4wICkgeworICAgIHdoaWxlKChsdSA9IEJJT19yZWFkIChpbiwgJmJpbmFyeXB0cltpXSwgdGFiTGVuZ3RoLWkpKSA+MCkgewogICAgICAgaSs9bHU7Ci0gICAgICBpZiAoaT09IHRhYkxlbmd0aCkgeworICAgICAgaWYoaT09IHRhYkxlbmd0aCkgewogICAgICAgICB0YWJMZW5ndGgrPTEwMDsKLSAgICAgICAgYmluYXJ5cHRyPXJlYWxsb2MoYmluYXJ5cHRyLHRhYkxlbmd0aCk7IC8qIHNob3VsZCBiZSBtb3JlIGNhcmVmdWwgKi8KKyAgICAgICAgYmluYXJ5cHRyPXJlYWxsb2MoYmluYXJ5cHRyLCB0YWJMZW5ndGgpOyAvKiBzaG91bGQgYmUgbW9yZSBjYXJlZnVsICovCiAgICAgICB9CiAgICAgfQogICAgIHRhYkxlbmd0aCA9IGk7CkBAIC00NzYsMjMgKzUxNywyMyBAQAogICAvKiBOb3cgc3BlY2lmeSB0aGUgUE9TVCBiaW5hcnkgZGF0YSAqLwogCiAgIGN1cmxfZWFzeV9zZXRvcHQocC5jdXJsLCBDVVJMT1BUX1BPU1RGSUVMRFMsIGJpbmFyeXB0cik7Ci0gIGN1cmxfZWFzeV9zZXRvcHQocC5jdXJsLCBDVVJMT1BUX1BPU1RGSUVMRFNJWkUsKGxvbmcpdGFiTGVuZ3RoKTsKKyAgY3VybF9lYXN5X3NldG9wdChwLmN1cmwsIENVUkxPUFRfUE9TVEZJRUxEU0laRSwgKGxvbmcpdGFiTGVuZ3RoKTsKIAogCiAgIC8qIFBlcmZvcm0gdGhlIHJlcXVlc3QsIHJlcyB3aWxsIGdldCB0aGUgcmV0dXJuIGNvZGUgKi8KIAotICBCSU9fcHJpbnRmKHAuZXJyb3JiaW8sIiVkICVzICVkXG4iLCBfX0xJTkVfXywgImN1cmxfZWFzeV9wZXJmb3JtIiwKKyAgQklPX3ByaW50ZihwLmVycm9yYmlvLCAiJWQgJXMgJWRcbiIsIF9fTElORV9fLCAiY3VybF9lYXN5X3BlcmZvcm0iLAogICAgICAgICAgICAgIHJlcyA9IGN1cmxfZWFzeV9wZXJmb3JtKHAuY3VybCkpOwogICB7Ci0gICAgaW50IHJlc3VsdCA9Y3VybF9lYXN5X2dldGluZm8ocC5jdXJsLENVUkxJTkZPX0NPTlRFTlRfVFlQRSwmcmVzcG9uc2UpOwotICAgIGlmKCBtaW1ldHlwZWFjY2VwdCAmJiBwLnZlcmJvc2UpCi0gICAgICBpZighc3RyY21wKG1pbWV0eXBlYWNjZXB0LHJlc3BvbnNlKSkKLSAgICAgICAgQklPX3ByaW50ZihwLmVycm9yYmlvLCJ0aGUgcmVzcG9uc2UgaGFzIGEgY29ycmVjdCBtaW1ldHlwZSA6ICVzXG4iLAorICAgIGludCByZXN1bHQgPWN1cmxfZWFzeV9nZXRpbmZvKHAuY3VybCwgQ1VSTElORk9fQ09OVEVOVF9UWVBFLCAmcmVzcG9uc2UpOworICAgIGlmKG1pbWV0eXBlYWNjZXB0ICYmIHAudmVyYm9zZSkKKyAgICAgIGlmKCFzdHJjbXAobWltZXR5cGVhY2NlcHQsIHJlc3BvbnNlKSkKKyAgICAgICAgQklPX3ByaW50ZihwLmVycm9yYmlvLCAidGhlIHJlc3BvbnNlIGhhcyBhIGNvcnJlY3QgbWltZXR5cGUgOiAlc1xuIiwKICAgICAgICAgICAgICAgICAgICByZXNwb25zZSk7CiAgICAgICBlbHNlCi0gICAgICAgIEJJT19wcmludGYocC5lcnJvcmJpbywidGhlIHJlc3BvbnNlIGRvZXNuXCd0IGhhdmUgYW4gYWNjZXB0YWJsZSAiCisgICAgICAgIEJJT19wcmludGYocC5lcnJvcmJpbywgInRoZSByZXNwb25zZSBkb2VzblwndCBoYXZlIGFuIGFjY2VwdGFibGUgIgogICAgICAgICAgICAgICAgICAgICJtaW1lIHR5cGUsIGl0IGlzICVzIGluc3RlYWQgb2YgJXNcbiIsCi0gICAgICAgICAgICAgICAgICAgcmVzcG9uc2UsbWltZXR5cGVhY2NlcHQpOworICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLCBtaW1ldHlwZWFjY2VwdCk7CiAgIH0KIAogICAvKioqIGNvZGUgZCdlcnJldXIgc2kgYWNjZXB0IG1pbWUgKioqLCBlZ2FsZW1lbnQgY29kZSByZXR1cm4gSFRUUCAhPSAyMDAgKioqLwpAQCAtNTA4LDYgKzU0OSw2IEBACiAgIEJJT19mcmVlKG91dCk7CiAgIHJldHVybiAoRVhJVF9TVUNDRVNTKTsKIAotICBlcnI6IEJJT19wcmludGYocC5lcnJvcmJpbywiZXJyb3IiKTsKKyAgZXJyOiBCSU9fcHJpbnRmKHAuZXJyb3JiaW8sICJlcnJvciIpOwogICBleGl0KDEpOwogfQpkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy9kZWJ1Zy5jIGIvZG9jcy9leGFtcGxlcy9kZWJ1Zy5jCmluZGV4IDM2ZGQ4MGQuLmY1ZDU4YmYgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvZGVidWcuYworKysgYi9kb2NzL2V4YW1wbGVzL2RlYnVnLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDEzLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0xOSw2ICsxOSwxMCBAQAogICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogPERFU0M+CisgKiBTaG93IGhvdyBDVVJMT1BUX0RFQlVHRlVOQ1RJT04gY2FuIGJlIHVzZWQuCisgKiA8L0RFU0M+CisgKi8KICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgogCkBAIC01OCwxNCArNjIsMTQgQEAKIAogICAgIGZvcihjID0gMDsgKGMgPCB3aWR0aCkgJiYgKGkrYyA8IHNpemUpOyBjKyspIHsKICAgICAgIC8qIGNoZWNrIGZvciAwRDBBOyBpZiBmb3VuZCwgc2tpcCBwYXN0IGFuZCBzdGFydCBhIG5ldyBsaW5lIG9mIG91dHB1dCAqLwotICAgICAgaWYgKG5vaGV4ICYmIChpK2MrMSA8IHNpemUpICYmIHB0cltpK2NdPT0weDBEICYmIHB0cltpK2MrMV09PTB4MEEpIHsKKyAgICAgIGlmKG5vaGV4ICYmIChpK2MrMSA8IHNpemUpICYmIHB0cltpK2NdPT0weDBEICYmIHB0cltpK2MrMV09PTB4MEEpIHsKICAgICAgICAgaSs9KGMrMi13aWR0aCk7CiAgICAgICAgIGJyZWFrOwogICAgICAgfQogICAgICAgZnByaW50ZihzdHJlYW0sICIlYyIsCiAgICAgICAgICAgICAgIChwdHJbaStjXT49MHgyMCkgJiYgKHB0cltpK2NdPDB4ODApP3B0cltpK2NdOicuJyk7CiAgICAgICAvKiBjaGVjayBhZ2FpbiBmb3IgMEQwQSwgdG8gYXZvaWQgYW4gZXh0cmEgXG4gaWYgaXQncyBhdCB3aWR0aCAqLwotICAgICAgaWYgKG5vaGV4ICYmIChpK2MrMiA8IHNpemUpICYmIHB0cltpK2MrMV09PTB4MEQgJiYgcHRyW2krYysyXT09MHgwQSkgeworICAgICAgaWYobm9oZXggJiYgKGkrYysyIDwgc2l6ZSkgJiYgcHRyW2krYysxXT09MHgwRCAmJiBwdHJbaStjKzJdPT0weDBBKSB7CiAgICAgICAgIGkrPShjKzMtd2lkdGgpOwogICAgICAgICBicmVhazsKICAgICAgIH0KZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvZXZoaXBlcmZpZm8uYyBiL2RvY3MvZXhhbXBsZXMvZXZoaXBlcmZpZm8uYwppbmRleCBlMDM4MDFkLi4xMThmMTUyIDEwMDY0NAotLS0gYS9kb2NzL2V4YW1wbGVzL2V2aGlwZXJmaWZvLmMKKysrIGIvZG9jcy9leGFtcGxlcy9ldmhpcGVyZmlmby5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTksNiArMTksMTAgQEAKICAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIDxERVNDPgorICogbXVsdGkgc29ja2V0IGludGVyZmFjZSB0b2dldGhlciB3aXRoIGxpYmV2CisgKiA8L0RFU0M+CisgKi8KIC8qIEV4YW1wbGUgYXBwbGljYXRpb24gc291cmNlIGNvZGUgdXNpbmcgdGhlIG11bHRpIHNvY2tldCBpbnRlcmZhY2UgdG8KICAqIGRvd25sb2FkIG1hbnkgZmlsZXMgYXQgb25jZS4KICAqCkBAIC0xMTUsMTIgKzExOSwxMiBAQAogewogICBEUFJJTlQoIiVzICVsaVxuIiwgX19QUkVUVFlfRlVOQ1RJT05fXywgIHRpbWVvdXRfbXMpOwogICBldl90aW1lcl9zdG9wKGctPmxvb3AsICZnLT50aW1lcl9ldmVudCk7Ci0gIGlmICh0aW1lb3V0X21zID4gMCkKLSAgeworICBpZih0aW1lb3V0X21zID4gMCkgewogICAgIGRvdWJsZSAgdCA9IHRpbWVvdXRfbXMgLyAxMDAwOwogICAgIGV2X3RpbWVyX2luaXQoJmctPnRpbWVyX2V2ZW50LCB0aW1lcl9jYiwgdCwgMC4pOwogICAgIGV2X3RpbWVyX3N0YXJ0KGctPmxvb3AsICZnLT50aW1lcl9ldmVudCk7Ci0gIH1lbHNlCisgIH0KKyAgZWxzZQogICAgIHRpbWVyX2NiKGctPmxvb3AsICZnLT50aW1lcl9ldmVudCwgMCk7CiAgIHJldHVybiAwOwogfQpAQCAtMTI4LDIwICsxMzIsMzIgQEAKIC8qIERpZSBpZiB3ZSBnZXQgYSBiYWQgQ1VSTE1jb2RlIHNvbWV3aGVyZSAqLwogc3RhdGljIHZvaWQgbWNvZGVfb3JfZGllKGNvbnN0IGNoYXIgKndoZXJlLCBDVVJMTWNvZGUgY29kZSkKIHsKLSAgaWYgKCBDVVJMTV9PSyAhPSBjb2RlICkKLSAgeworICBpZihDVVJMTV9PSyAhPSBjb2RlKSB7CiAgICAgY29uc3QgY2hhciAqczsKLSAgICBzd2l0Y2ggKCBjb2RlICkKLSAgICB7Ci0gICAgY2FzZSBDVVJMTV9CQURfSEFORExFOiAgICAgICAgIHM9IkNVUkxNX0JBRF9IQU5ETEUiOyAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1VSTE1fQkFEX0VBU1lfSEFORExFOiAgICBzPSJDVVJMTV9CQURfRUFTWV9IQU5ETEUiOyAgICBicmVhazsKLSAgICBjYXNlIENVUkxNX09VVF9PRl9NRU1PUlk6ICAgICAgcz0iQ1VSTE1fT1VUX09GX01FTU9SWSI7ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDVVJMTV9JTlRFUk5BTF9FUlJPUjogICAgIHM9IkNVUkxNX0lOVEVSTkFMX0VSUk9SIjsgICAgIGJyZWFrOwotICAgIGNhc2UgQ1VSTE1fVU5LTk9XTl9PUFRJT046ICAgICBzPSJDVVJMTV9VTktOT1dOX09QVElPTiI7ICAgICBicmVhazsKLSAgICBjYXNlIENVUkxNX0xBU1Q6ICAgICAgICAgICAgICAgcz0iQ1VSTE1fTEFTVCI7ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDogcz0iQ1VSTE1fdW5rbm93biI7CisgICAgc3dpdGNoIChjb2RlKSB7CisgICAgY2FzZSBDVVJMTV9CQURfSEFORExFOgorICAgICAgcz0iQ1VSTE1fQkFEX0hBTkRMRSI7CiAgICAgICBicmVhazsKLSAgICBjYXNlICAgICBDVVJMTV9CQURfU09DS0VUOiAgICAgICAgIHM9IkNVUkxNX0JBRF9TT0NLRVQiOworICAgIGNhc2UgQ1VSTE1fQkFEX0VBU1lfSEFORExFOgorICAgICAgcz0iQ1VSTE1fQkFEX0VBU1lfSEFORExFIjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgQ1VSTE1fT1VUX09GX01FTU9SWToKKyAgICAgIHM9IkNVUkxNX09VVF9PRl9NRU1PUlkiOworICAgICAgYnJlYWs7CisgICAgY2FzZSBDVVJMTV9JTlRFUk5BTF9FUlJPUjoKKyAgICAgIHM9IkNVUkxNX0lOVEVSTkFMX0VSUk9SIjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgQ1VSTE1fVU5LTk9XTl9PUFRJT046CisgICAgICBzPSJDVVJMTV9VTktOT1dOX09QVElPTiI7CisgICAgICBicmVhazsKKyAgICBjYXNlIENVUkxNX0xBU1Q6CisgICAgICBzPSJDVVJMTV9MQVNUIjsKKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICBzPSJDVVJMTV91bmtub3duIjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgQ1VSTE1fQkFEX1NPQ0tFVDoKKyAgICAgIHM9IkNVUkxNX0JBRF9TT0NLRVQiOwogICAgICAgZnByaW50ZihNU0dfT1VULCAiRVJST1I6ICVzIHJldHVybnMgJXNcbiIsIHdoZXJlLCBzKTsKICAgICAgIC8qIGlnbm9yZSB0aGlzIGVycm9yICovCiAgICAgICByZXR1cm47CkBAIC0xNjQsOCArMTgwLDggQEAKICAgQ1VSTGNvZGUgcmVzOwogCiAgIGZwcmludGYoTVNHX09VVCwgIlJFTUFJTklORzogJWRcbiIsIGctPnN0aWxsX3J1bm5pbmcpOwotICB3aGlsZSAoKG1zZyA9IGN1cmxfbXVsdGlfaW5mb19yZWFkKGctPm11bHRpLCAmbXNnc19sZWZ0KSkpIHsKLSAgICBpZiAobXNnLT5tc2cgPT0gQ1VSTE1TR19ET05FKSB7CisgIHdoaWxlKChtc2cgPSBjdXJsX211bHRpX2luZm9fcmVhZChnLT5tdWx0aSwgJm1zZ3NfbGVmdCkpKSB7CisgICAgaWYobXNnLT5tc2cgPT0gQ1VSTE1TR19ET05FKSB7CiAgICAgICBlYXN5ID0gbXNnLT5lYXN5X2hhbmRsZTsKICAgICAgIHJlcyA9IG1zZy0+ZGF0YS5yZXN1bHQ7CiAgICAgICBjdXJsX2Vhc3lfZ2V0aW5mbyhlYXN5LCBDVVJMSU5GT19QUklWQVRFLCAmY29ubik7CkBAIC0xOTMsOCArMjA5LDcgQEAKICAgcmMgPSBjdXJsX211bHRpX3NvY2tldF9hY3Rpb24oZy0+bXVsdGksIHctPmZkLCBhY3Rpb24sICZnLT5zdGlsbF9ydW5uaW5nKTsKICAgbWNvZGVfb3JfZGllKCJldmVudF9jYjogY3VybF9tdWx0aV9zb2NrZXRfYWN0aW9uIiwgcmMpOwogICBjaGVja19tdWx0aV9pbmZvKGcpOwotICBpZiAoIGctPnN0aWxsX3J1bm5pbmcgPD0gMCApCi0gIHsKKyAgaWYoZy0+c3RpbGxfcnVubmluZyA8PSAwKSB7CiAgICAgZnByaW50ZihNU0dfT1VULCAibGFzdCB0cmFuc2ZlciBkb25lLCBraWxsIHRpbWVvdXRcbiIpOwogICAgIGV2X3RpbWVyX3N0b3AoZy0+bG9vcCwgJmctPnRpbWVyX2V2ZW50KTsKICAgfQpAQCAtMjA4LDcgKzIyMyw4IEBACiAgIEdsb2JhbEluZm8gKmcgPSAoR2xvYmFsSW5mbyAqKXctPmRhdGE7CiAgIENVUkxNY29kZSByYzsKIAotICByYyA9IGN1cmxfbXVsdGlfc29ja2V0X2FjdGlvbihnLT5tdWx0aSwgQ1VSTF9TT0NLRVRfVElNRU9VVCwgMCwgJmctPnN0aWxsX3J1bm5pbmcpOworICByYyA9IGN1cmxfbXVsdGlfc29ja2V0X2FjdGlvbihnLT5tdWx0aSwgQ1VSTF9TT0NLRVRfVElNRU9VVCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmctPnN0aWxsX3J1bm5pbmcpOwogICBtY29kZV9vcl9kaWUoInRpbWVyX2NiOiBjdXJsX211bHRpX3NvY2tldF9hY3Rpb24iLCByYyk7CiAgIGNoZWNrX211bHRpX2luZm8oZyk7CiB9CkBAIC0yMTcsOSArMjMzLDggQEAKIHN0YXRpYyB2b2lkIHJlbXNvY2soU29ja0luZm8gKmYsIEdsb2JhbEluZm8gKmcpCiB7CiAgIHByaW50ZigiJXMgIFxuIiwgX19QUkVUVFlfRlVOQ1RJT05fXyk7Ci0gIGlmICggZiApCi0gIHsKLSAgICBpZiAoIGYtPmV2c2V0ICkKKyAgaWYoZikgeworICAgIGlmKGYtPmV2c2V0KQogICAgICAgZXZfaW9fc3RvcChnLT5sb29wLCAmZi0+ZXYpOwogICAgIGZyZWUoZik7CiAgIH0KQEAgLTIzNyw3ICsyNTIsNyBAQAogICBmLT5zb2NrZmQgPSBzOwogICBmLT5hY3Rpb24gPSBhY3Q7CiAgIGYtPmVhc3kgPSBlOwotICBpZiAoIGYtPmV2c2V0ICkKKyAgaWYoZi0+ZXZzZXQpCiAgICAgZXZfaW9fc3RvcChnLT5sb29wLCAmZi0+ZXYpOwogICBldl9pb19pbml0KCZmLT5ldiwgZXZlbnRfY2IsIGYtPnNvY2tmZCwga2luZCk7CiAgIGYtPmV2LmRhdGEgPSBnOwpAQCAtMjY5LDE4ICsyODQsMTYgQEAKIAogICBmcHJpbnRmKE1TR19PVVQsCiAgICAgICAgICAgInNvY2tldCBjYWxsYmFjazogcz0lZCBlPSVwIHdoYXQ9JXMgIiwgcywgZSwgd2hhdHN0clt3aGF0XSk7Ci0gIGlmICggd2hhdCA9PSBDVVJMX1BPTExfUkVNT1ZFICkKLSAgeworICBpZih3aGF0ID09IENVUkxfUE9MTF9SRU1PVkUpIHsKICAgICBmcHJpbnRmKE1TR19PVVQsICJcbiIpOwogICAgIHJlbXNvY2soZmRwLCBnKTsKLSAgfSBlbHNlCi0gIHsKLSAgICBpZiAoICFmZHAgKQotICAgIHsKKyAgfQorICBlbHNlIHsKKyAgICBpZighZmRwKSB7CiAgICAgICBmcHJpbnRmKE1TR19PVVQsICJBZGRpbmcgZGF0YTogJXNcbiIsIHdoYXRzdHJbd2hhdF0pOwogICAgICAgYWRkc29jayhzLCBlLCB3aGF0LCBnKTsKLSAgICB9IGVsc2UKLSAgICB7CisgICAgfQorICAgIGVsc2UgewogICAgICAgZnByaW50ZihNU0dfT1VULAogICAgICAgICAgICAgICAiQ2hhbmdpbmcgYWN0aW9uIGZyb20gJXMgdG8gJXNcbiIsCiAgICAgICAgICAgICAgIHdoYXRzdHJbZmRwLT5hY3Rpb25dLCB3aGF0c3RyW3doYXRdKTsKQEAgLTMxNiw3ICszMjksNyBAQAogCiAKIC8qIENyZWF0ZSBhIG5ldyBlYXN5IGhhbmRsZSwgYW5kIGFkZCBpdCB0byB0aGUgZ2xvYmFsIGN1cmxfbXVsdGkgKi8KLXN0YXRpYyB2b2lkIG5ld19jb25uKGNoYXIgKnVybCwgR2xvYmFsSW5mbyAqZyApCitzdGF0aWMgdm9pZCBuZXdfY29ubihjaGFyICp1cmwsIEdsb2JhbEluZm8gKmcpCiB7CiAgIENvbm5JbmZvICpjb25uOwogICBDVVJMTWNvZGUgcmM7CkBAIC0zMjYsOCArMzM5LDcgQEAKICAgY29ubi0+ZXJyb3JbMF09J1wwJzsKIAogICBjb25uLT5lYXN5ID0gY3VybF9lYXN5X2luaXQoKTsKLSAgaWYgKCAhY29ubi0+ZWFzeSApCi0gIHsKKyAgaWYoIWNvbm4tPmVhc3kpIHsKICAgICBmcHJpbnRmKE1TR19PVVQsICJjdXJsX2Vhc3lfaW5pdCgpIGZhaWxlZCwgZXhpdGluZyFcbiIpOwogICAgIGV4aXQoMik7CiAgIH0KQEAgLTM2MiwxNiArMzc0LDE2IEBACiAgIGludCBuPTA7CiAgIEdsb2JhbEluZm8gKmcgPSAoR2xvYmFsSW5mbyAqKXctPmRhdGE7CiAKLSAgZG8KLSAgeworICBkbyB7CiAgICAgc1swXT0nXDAnOwogICAgIHJ2PWZzY2FuZihnLT5pbnB1dCwgIiUxMDIzcyVuIiwgcywgJm4pOwogICAgIHNbbl09J1wwJzsKLSAgICBpZiAoIG4gJiYgc1swXSApCi0gICAgewotICAgICAgbmV3X2Nvbm4ocyxnKTsgIC8qIGlmIHdlIHJlYWQgYSBVUkwsIGdvIGdldCBpdCEgKi8KLSAgICB9IGVsc2UgYnJlYWs7Ci0gIH0gd2hpbGUgKCBydiAhPSBFT0YgKTsKKyAgICBpZihuICYmIHNbMF0pIHsKKyAgICAgIG5ld19jb25uKHMsIGcpOyAgLyogaWYgd2UgcmVhZCBhIFVSTCwgZ28gZ2V0IGl0ISAqLworICAgIH0KKyAgICBlbHNlCisgICAgICBicmVhazsKKyAgfSB3aGlsZShydiAhPSBFT0YpOwogfQogCiAvKiBDcmVhdGUgYSBuYW1lZCBwaXBlIGFuZCB0ZWxsIGxpYmV2ZW50IHRvIG1vbml0b3IgaXQgKi8KQEAgLTM4MiwyNCArMzk0LDIwIEBACiAgIGN1cmxfc29ja2V0X3Qgc29ja2ZkOwogCiAgIGZwcmludGYoTVNHX09VVCwgIkNyZWF0aW5nIG5hbWVkIHBpcGUgXCIlc1wiXG4iLCBmaWZvKTsKLSAgaWYgKCBsc3RhdCAoZmlmbywgJnN0KSA9PSAwICkKLSAgewotICAgIGlmICggKHN0LnN0X21vZGUgJiBTX0lGTVQpID09IFNfSUZSRUcgKQotICAgIHsKKyAgaWYobHN0YXQgKGZpZm8sICZzdCkgPT0gMCkgeworICAgIGlmKChzdC5zdF9tb2RlICYgU19JRk1UKSA9PSBTX0lGUkVHKSB7CiAgICAgICBlcnJubyA9IEVFWElTVDsKICAgICAgIHBlcnJvcigibHN0YXQiKTsKICAgICAgIGV4aXQgKDEpOwogICAgIH0KICAgfQogICB1bmxpbmsoZmlmbyk7Ci0gIGlmICggbWtmaWZvIChmaWZvLCAwNjAwKSA9PSAtMSApCi0gIHsKKyAgaWYobWtmaWZvIChmaWZvLCAwNjAwKSA9PSAtMSkgewogICAgIHBlcnJvcigibWtmaWZvIik7CiAgICAgZXhpdCAoMSk7CiAgIH0KICAgc29ja2ZkID0gb3BlbihmaWZvLCBPX1JEV1IgfCBPX05PTkJMT0NLLCAwKTsKLSAgaWYgKCBzb2NrZmQgPT0gLTEgKQotICB7CisgIGlmKHNvY2tmZCA9PSAtMSkgewogICAgIHBlcnJvcigib3BlbiIpOwogICAgIGV4aXQgKDEpOwogICB9CkBAIC00MDgsNyArNDE2LDcgQEAKICAgZnByaW50ZihNU0dfT1VULCAiTm93LCBwaXBlIHNvbWUgVVJMJ3MgaW50byA+ICVzXG4iLCBmaWZvKTsKICAgZXZfaW9faW5pdCgmZy0+Zmlmb19ldmVudCwgZmlmb19jYiwgc29ja2ZkLCBFVl9SRUFEKTsKICAgZXZfaW9fc3RhcnQoZy0+bG9vcCwgJmctPmZpZm9fZXZlbnQpOwotICByZXR1cm4oMCk7CisgIHJldHVybiAoMCk7CiB9CiAKIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvZXh0ZXJuYWxzb2NrZXQuYyBiL2RvY3MvZXhhbXBsZXMvZXh0ZXJuYWxzb2NrZXQuYwppbmRleCA1NDg2ZDEyLi45YjE0NGI0IDEwMDY0NAotLS0gYS9kb2NzL2V4YW1wbGVzL2V4dGVybmFsc29ja2V0LmMKKysrIGIvZG9jcy9leGFtcGxlcy9leHRlcm5hbHNvY2tldC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTksOSArMTksMTAgQEAKICAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qCi0gKiBUaGlzIGlzIGFuIGV4YW1wbGUgZGVtb25zdHJhdGluZyBob3cgYW4gYXBwbGljYXRpb24gY2FuIHBhc3MgaW4gYSBjdXN0b20KKy8qIDxERVNDPgorICogQW4gZXhhbXBsZSBkZW1vbnN0cmF0aW5nIGhvdyBhbiBhcHBsaWNhdGlvbiBjYW4gcGFzcyBpbiBhIGN1c3RvbQogICogc29ja2V0IHRvIGxpYmN1cmwgdG8gdXNlLiBUaGlzIGV4YW1wbGUgYWxzbyBoYW5kbGVzIHRoZSBjb25uZWN0IGl0c2VsZi4KKyAqIDwvREVTQz4KICAqLwogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CkBAIC01Myw3ICs1NCw3IEBACiAKIHN0YXRpYyBzaXplX3Qgd3JpdGVfZGF0YSh2b2lkICpwdHIsIHNpemVfdCBzaXplLCBzaXplX3Qgbm1lbWIsIHZvaWQgKnN0cmVhbSkKIHsKLSAgaW50IHdyaXR0ZW4gPSBmd3JpdGUocHRyLCBzaXplLCBubWVtYiwgKEZJTEUgKilzdHJlYW0pOworICBzaXplX3Qgd3JpdHRlbiA9IGZ3cml0ZShwdHIsIHNpemUsIG5tZW1iLCAoRklMRSAqKXN0cmVhbSk7CiAgIHJldHVybiB3cml0dGVuOwogfQogCkBAIC05MSw3ICs5Miw3IEBACiAgIFdTQURBVEEgd3NhRGF0YTsKICAgaW50IGluaXR3c2E7CiAKLSAgaWYoKGluaXR3c2EgPSBXU0FTdGFydHVwKE1BS0VXT1JEKDIsMCksICZ3c2FEYXRhKSkgIT0gMCkgeworICBpZigoaW5pdHdzYSA9IFdTQVN0YXJ0dXAoTUFLRVdPUkQoMiwgMCksICZ3c2FEYXRhKSkgIT0gMCkgewogICAgIHByaW50ZigiV1NBU3RhcnR1cCBmYWlsZWQ6ICVkXG4iLCBpbml0d3NhKTsKICAgICByZXR1cm4gMTsKICAgfQpAQCAtMTA2LDcgKzEwNyw3IEBACiAgICAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1VSTCwgImh0dHA6Ly85OS45OS45OS45OTo5OTk5Iik7CiAKICAgICAvKiBDcmVhdGUgdGhlIHNvY2tldCAibWFudWFsbHkiICovCi0gICAgaWYoIChzb2NrZmQgPSBzb2NrZXQoQUZfSU5FVCwgU09DS19TVFJFQU0sIDApKSA9PSBDVVJMX1NPQ0tFVF9CQUQgKSB7CisgICAgaWYoKHNvY2tmZCA9IHNvY2tldChBRl9JTkVULCBTT0NLX1NUUkVBTSwgMCkpID09IENVUkxfU09DS0VUX0JBRCkgewogICAgICAgcHJpbnRmKCJFcnJvciBjcmVhdGluZyBsaXN0ZW5pbmcgc29ja2V0LlxuIik7CiAgICAgICByZXR1cm4gMzsKICAgICB9CkBAIC0xMTUsMTAgKzExNiwxMCBAQAogICAgIHNlcnZhZGRyLnNpbl9mYW1pbHkgPSBBRl9JTkVUOwogICAgIHNlcnZhZGRyLnNpbl9wb3J0ICAgPSBodG9ucyhQT1JUTlVNKTsKIAotICAgIGlmIChJTkFERFJfTk9ORSA9PSAoc2VydmFkZHIuc2luX2FkZHIuc19hZGRyID0gaW5ldF9hZGRyKElQQUREUikpKQorICAgIGlmKElOQUREUl9OT05FID09IChzZXJ2YWRkci5zaW5fYWRkci5zX2FkZHIgPSBpbmV0X2FkZHIoSVBBRERSKSkpCiAgICAgICByZXR1cm4gMjsKIAotICAgIGlmKGNvbm5lY3Qoc29ja2ZkLChzdHJ1Y3Qgc29ja2FkZHIgKikgJnNlcnZhZGRyLCBzaXplb2Yoc2VydmFkZHIpKSA9PQorICAgIGlmKGNvbm5lY3Qoc29ja2ZkLCAoc3RydWN0IHNvY2thZGRyICopICZzZXJ2YWRkciwgc2l6ZW9mKHNlcnZhZGRyKSkgPT0KICAgICAgICAtMSkgewogICAgICAgY2xvc2Uoc29ja2ZkKTsKICAgICAgIHByaW50ZigiY2xpZW50IGVycm9yOiBjb25uZWN0OiAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvZmlsZXVwbG9hZC5jIGIvZG9jcy9leGFtcGxlcy9maWxldXBsb2FkLmMKaW5kZXggNjY1ZWNhMC4uMzYzZmFlNiAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9maWxldXBsb2FkLmMKKysrIGIvZG9jcy9leGFtcGxlcy9maWxldXBsb2FkLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDExLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0xOSw2ICsxOSwxMCBAQAogICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogPERFU0M+CisgKiBVcGxvYWQgdG8gYSBmaWxlOi8vIFVSTAorICogPC9ERVNDPgorICovCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KICNpbmNsdWRlIDxzeXMvc3RhdC5oPgpkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy9mb3Blbi5jIGIvZG9jcy9leGFtcGxlcy9mb3Blbi5jCmluZGV4IDBhYWQwYWIuLjcxYmUxNzggMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvZm9wZW4uYworKysgYi9kb2NzL2V4YW1wbGVzL2ZvcGVuLmMKQEAgLTQyLDYgKzQyLDEwIEBACiAgKgogICogVGhpcyBleGFtcGxlIHJlcXVpcmVzIGxpYmN1cmwgNy45Ljcgb3IgbGF0ZXIuCiAgKi8KKy8qIDxERVNDPgorICogaW1wbGVtZW50cyBhbiBmb3BlbigpIGFic3RyYWN0aW9uIGFsbG93aW5nIHJlYWRpbmcgZnJvbSBVUkxzCisgKiA8L0RFU0M+CisgKi8KIAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CkBAIC03Niw3ICs4MCw3IEBACiB0eXBlZGVmIHN0cnVjdCBmY3VybF9kYXRhIFVSTF9GSUxFOwogCiAvKiBleHBvcnRlZCBmdW5jdGlvbnMgKi8KLVVSTF9GSUxFICp1cmxfZm9wZW4oY29uc3QgY2hhciAqdXJsLGNvbnN0IGNoYXIgKm9wZXJhdGlvbik7CitVUkxfRklMRSAqdXJsX2ZvcGVuKGNvbnN0IGNoYXIgKnVybCwgY29uc3QgY2hhciAqb3BlcmF0aW9uKTsKIGludCB1cmxfZmNsb3NlKFVSTF9GSUxFICpmaWxlKTsKIGludCB1cmxfZmVvZihVUkxfRklMRSAqZmlsZSk7CiBzaXplX3QgdXJsX2ZyZWFkKHZvaWQgKnB0ciwgc2l6ZV90IHNpemUsIHNpemVfdCBubWVtYiwgVVJMX0ZJTEUgKmZpbGUpOwpAQCAtMTAyLDkgKzEwNiw5IEBACiAKICAgaWYoc2l6ZSA+IHJlbWJ1ZmYpIHsKICAgICAvKiBub3QgZW5vdWdoIHNwYWNlIGluIGJ1ZmZlciAqLwotICAgIG5ld2J1ZmY9cmVhbGxvYyh1cmwtPmJ1ZmZlcix1cmwtPmJ1ZmZlcl9sZW4gKyAoc2l6ZSAtIHJlbWJ1ZmYpKTsKKyAgICBuZXdidWZmPXJlYWxsb2ModXJsLT5idWZmZXIsIHVybC0+YnVmZmVyX2xlbiArIChzaXplIC0gcmVtYnVmZikpOwogICAgIGlmKG5ld2J1ZmY9PU5VTEwpIHsKLSAgICAgIGZwcmludGYoc3RkZXJyLCJjYWxsYmFjayBidWZmZXIgZ3JvdyBmYWlsZWRcbiIpOworICAgICAgZnByaW50ZihzdGRlcnIsICJjYWxsYmFjayBidWZmZXIgZ3JvdyBmYWlsZWRcbiIpOwogICAgICAgc2l6ZT1yZW1idWZmOwogICAgIH0KICAgICBlbHNlIHsKQEAgLTE2MSw4ICsxNjUsNyBAQAogICAgIC8qIGdldCBmaWxlIGRlc2NyaXB0b3JzIGZyb20gdGhlIHRyYW5zZmVycyAqLwogICAgIG1jID0gY3VybF9tdWx0aV9mZHNldChtdWx0aV9oYW5kbGUsICZmZHJlYWQsICZmZHdyaXRlLCAmZmRleGNlcCwgJm1heGZkKTsKIAotICAgIGlmKG1jICE9IENVUkxNX09LKQotICAgIHsKKyAgICBpZihtYyAhPSBDVVJMTV9PSykgewogICAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX211bHRpX2Zkc2V0KCkgZmFpbGVkLCBjb2RlICVkLlxuIiwgbWMpOwogICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMjI2LDcgKzIyOSw3IEBACiAgIHJldHVybiAwOwogfQogCi1VUkxfRklMRSAqdXJsX2ZvcGVuKGNvbnN0IGNoYXIgKnVybCxjb25zdCBjaGFyICpvcGVyYXRpb24pCitVUkxfRklMRSAqdXJsX2ZvcGVuKGNvbnN0IGNoYXIgKnVybCwgY29uc3QgY2hhciAqb3BlcmF0aW9uKQogewogICAvKiB0aGlzIGNvZGUgY291bGQgY2hlY2sgZm9yIFVSTHMgb3IgdHlwZXMgaW4gdGhlICd1cmwnIGFuZAogICAgICBiYXNpY2FsbHkgdXNlIHRoZSByZWFsIGZvcGVuKCkgZm9yIHN0YW5kYXJkIGZpbGVzICovCkBAIC0yNDAsNyArMjQzLDcgQEAKIAogICBtZW1zZXQoZmlsZSwgMCwgc2l6ZW9mKFVSTF9GSUxFKSk7CiAKLSAgaWYoKGZpbGUtPmhhbmRsZS5maWxlPWZvcGVuKHVybCxvcGVyYXRpb24pKSkKKyAgaWYoKGZpbGUtPmhhbmRsZS5maWxlPWZvcGVuKHVybCwgb3BlcmF0aW9uKSkpCiAgICAgZmlsZS0+dHlwZSA9IENGVFlQRV9GSUxFOyAvKiBtYXJrZWQgYXMgVVJMICovCiAKICAgZWxzZSB7CkBAIC0zMzQsMTMgKzMzNywxMyBAQAogCiAgIHN3aXRjaChmaWxlLT50eXBlKSB7CiAgIGNhc2UgQ0ZUWVBFX0ZJTEU6Ci0gICAgd2FudD1mcmVhZChwdHIsc2l6ZSxubWVtYixmaWxlLT5oYW5kbGUuZmlsZSk7CisgICAgd2FudD1mcmVhZChwdHIsIHNpemUsIG5tZW1iLCBmaWxlLT5oYW5kbGUuZmlsZSk7CiAgICAgYnJlYWs7CiAKICAgY2FzZSBDRlRZUEVfQ1VSTDoKICAgICB3YW50ID0gbm1lbWIgKiBzaXplOwogCi0gICAgZmlsbF9idWZmZXIoZmlsZSx3YW50KTsKKyAgICBmaWxsX2J1ZmZlcihmaWxlLCB3YW50KTsKIAogICAgIC8qIGNoZWNrIGlmIHRoZXJlcyBkYXRhIGluIHRoZSBidWZmZXIgLSBpZiBub3QgZmlsbF9idWZmZXIoKQogICAgICAqIGVpdGhlciBlcnJvcmVkIG9yIEVPRiAqLwpAQCAtMzU0LDcgKzM1Nyw3IEBACiAgICAgLyogeGZlciBkYXRhIHRvIGNhbGxlciAqLwogICAgIG1lbWNweShwdHIsIGZpbGUtPmJ1ZmZlciwgd2FudCk7CiAKLSAgICB1c2VfYnVmZmVyKGZpbGUsd2FudCk7CisgICAgdXNlX2J1ZmZlcihmaWxlLCB3YW50KTsKIAogICAgIHdhbnQgPSB3YW50IC8gc2l6ZTsgICAgIC8qIG51bWJlciBvZiBpdGVtcyAqLwogICAgIGJyZWFrOwpAQCAtMzc5LDcgKzM4Miw3IEBACiAgICAgYnJlYWs7CiAKICAgY2FzZSBDRlRZUEVfQ1VSTDoKLSAgICBmaWxsX2J1ZmZlcihmaWxlLHdhbnQpOworICAgIGZpbGxfYnVmZmVyKGZpbGUsIHdhbnQpOwogCiAgICAgLyogY2hlY2sgaWYgdGhlcmVzIGRhdGEgaW4gdGhlIGJ1ZmZlciAtIGlmIG5vdCBmaWxsIGVpdGhlciBlcnJvcmVkIG9yCiAgICAgICogRU9GICovCkBAIC00MDMsNyArNDA2LDcgQEAKICAgICBtZW1jcHkocHRyLCBmaWxlLT5idWZmZXIsIHdhbnQpOwogICAgIHB0clt3YW50XT0wOy8qIGFsbHdheXMgbnVsbCB0ZXJtaW5hdGUgKi8KIAotICAgIHVzZV9idWZmZXIoZmlsZSx3YW50KTsKKyAgICB1c2VfYnVmZmVyKGZpbGUsIHdhbnQpOwogCiAgICAgYnJlYWs7CiAKQEAgLTQ0Myw2ICs0NDYsMTAgQEAKICAgfQogfQogCisjZGVmaW5lIEZHRVRTRklMRSAiZmdldHMudGVzdCIKKyNkZWZpbmUgRlJFQURGSUxFICJmcmVhZC50ZXN0IgorI2RlZmluZSBSRVdJTkRGSUxFICJyZXdpbmQudGVzdCIKKwogLyogU21hbGwgbWFpbiBwcm9ncmFtIHRvIHJldHJpdmUgZnJvbSBhIHVybCB1c2luZyBmZ2V0cyBhbmQgZnJlYWQgc2F2aW5nIHRoZQogICogb3V0cHV0IHRvIHR3byB0ZXN0IGZpbGVzIChub3RlIHRoZSBmZ2V0cyBtZXRob2Qgd2lsbCBjb3JydXB0IGJpbmFyeSBmaWxlcyBpZgogICogdGhleSBjb250YWluIDAgY2hhcnMgKi8KQEAgLTQ2MSw3ICs0NjgsNyBAQAogICAgIHVybD1hcmd2WzFdOy8qIHVzZSBwYXNzZWQgdXJsICovCiAKICAgLyogY29weSBmcm9tIHVybCBsaW5lIGJ5IGxpbmUgd2l0aCBmZ2V0cyAqLwotICBvdXRmPWZvcGVuKCJmZ2V0cy50ZXN0IiwidysiKTsKKyAgb3V0Zj1mb3BlbihGR0VUU0ZJTEUsICJ3YisiKTsKICAgaWYoIW91dGYpIHsKICAgICBwZXJyb3IoImNvdWxkbid0IG9wZW4gZmdldHMgb3V0cHV0IGZpbGVcbiIpOwogICAgIHJldHVybiAxOwpAQCAtNDc1LDggKzQ4Miw4IEBACiAgIH0KIAogICB3aGlsZSghdXJsX2Zlb2YoaGFuZGxlKSkgewotICAgIHVybF9mZ2V0cyhidWZmZXIsc2l6ZW9mKGJ1ZmZlciksaGFuZGxlKTsKLSAgICBmd3JpdGUoYnVmZmVyLDEsc3RybGVuKGJ1ZmZlciksb3V0Zik7CisgICAgdXJsX2ZnZXRzKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksIGhhbmRsZSk7CisgICAgZndyaXRlKGJ1ZmZlciwgMSwgc3RybGVuKGJ1ZmZlciksIG91dGYpOwogICB9CiAKICAgdXJsX2ZjbG9zZShoYW5kbGUpOwpAQCAtNDg1LDcgKzQ5Miw3IEBACiAKIAogICAvKiBDb3B5IGZyb20gdXJsIHdpdGggZnJlYWQgKi8KLSAgb3V0Zj1mb3BlbigiZnJlYWQudGVzdCIsIncrIik7CisgIG91dGY9Zm9wZW4oRlJFQURGSUxFLCAid2IrIik7CiAgIGlmKCFvdXRmKSB7CiAgICAgcGVycm9yKCJjb3VsZG4ndCBvcGVuIGZyZWFkIG91dHB1dCBmaWxlXG4iKTsKICAgICByZXR1cm4gMTsKQEAgLTUwMCw3ICs1MDcsNyBAQAogCiAgIGRvIHsKICAgICBucmVhZCA9IHVybF9mcmVhZChidWZmZXIsIDEsIHNpemVvZihidWZmZXIpLCBoYW5kbGUpOwotICAgIGZ3cml0ZShidWZmZXIsMSxucmVhZCxvdXRmKTsKKyAgICBmd3JpdGUoYnVmZmVyLCAxLCBucmVhZCwgb3V0Zik7CiAgIH0gd2hpbGUobnJlYWQpOwogCiAgIHVybF9mY2xvc2UoaGFuZGxlKTsKQEAgLTUwOSw3ICs1MTYsNyBAQAogCiAKICAgLyogVGVzdCByZXdpbmQgKi8KLSAgb3V0Zj1mb3BlbigicmV3aW5kLnRlc3QiLCJ3KyIpOworICBvdXRmPWZvcGVuKFJFV0lOREZJTEUsICJ3YisiKTsKICAgaWYoIW91dGYpIHsKICAgICBwZXJyb3IoImNvdWxkbid0IG9wZW4gZnJlYWQgb3V0cHV0IGZpbGVcbiIpOwogICAgIHJldHVybiAxOwpAQCAtNTIyLDIxICs1MjksMTkgQEAKICAgICByZXR1cm4gMjsKICAgfQogCi0gIG5yZWFkID0gdXJsX2ZyZWFkKGJ1ZmZlciwgMSxzaXplb2YoYnVmZmVyKSwgaGFuZGxlKTsKLSAgZndyaXRlKGJ1ZmZlciwxLG5yZWFkLG91dGYpOworICBucmVhZCA9IHVybF9mcmVhZChidWZmZXIsIDEsIHNpemVvZihidWZmZXIpLCBoYW5kbGUpOworICBmd3JpdGUoYnVmZmVyLCAxLCBucmVhZCwgb3V0Zik7CiAgIHVybF9yZXdpbmQoaGFuZGxlKTsKIAogICBidWZmZXJbMF09J1xuJzsKLSAgZndyaXRlKGJ1ZmZlciwxLDEsb3V0Zik7CisgIGZ3cml0ZShidWZmZXIsIDEsIDEsIG91dGYpOwogCi0gIG5yZWFkID0gdXJsX2ZyZWFkKGJ1ZmZlciwgMSxzaXplb2YoYnVmZmVyKSwgaGFuZGxlKTsKLSAgZndyaXRlKGJ1ZmZlciwxLG5yZWFkLG91dGYpOwotCisgIG5yZWFkID0gdXJsX2ZyZWFkKGJ1ZmZlciwgMSwgc2l6ZW9mKGJ1ZmZlciksIGhhbmRsZSk7CisgIGZ3cml0ZShidWZmZXIsIDEsIG5yZWFkLCBvdXRmKTsKIAogICB1cmxfZmNsb3NlKGhhbmRsZSk7CiAKICAgZmNsb3NlKG91dGYpOwogCi0KICAgcmV0dXJuIDA7LyogYWxsIGRvbmUgKi8KIH0KZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvZnRwLXdpbGRjYXJkLmMgYi9kb2NzL2V4YW1wbGVzL2Z0cC13aWxkY2FyZC5jCmluZGV4IGQxNzVkZGYuLmYyNDliYzEgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvZnRwLXdpbGRjYXJkLmMKKysrIGIvZG9jcy9leGFtcGxlcy9mdHAtd2lsZGNhcmQuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDYgKzE5LDEwIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiA8REVTQz4KKyAqIEZUUCB3aWxkY2FyZCBwYXR0ZXJuIG1hdGNoaW5nCisgKiA8L0RFU0M+CisgKi8KICNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KICNpbmNsdWRlIDxzdGRpby5oPgogCkBAIC0xMTUsNyArMTE5LDcgQEAKICAgICAgIHJldHVybiBDVVJMX0NIVU5LX0JHTl9GVU5DX1NLSVA7CiAgICAgfQogCi0gICAgZGF0YS0+b3V0cHV0ID0gZm9wZW4oZmluZm8tPmZpbGVuYW1lLCAidyIpOworICAgIGRhdGEtPm91dHB1dCA9IGZvcGVuKGZpbmZvLT5maWxlbmFtZSwgIndiIik7CiAgICAgaWYoIWRhdGEtPm91dHB1dCkgewogICAgICAgcmV0dXJuIENVUkxfQ0hVTktfQkdOX0ZVTkNfRkFJTDsKICAgICB9CmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL2Z0cGdldC5jIGIvZG9jcy9leGFtcGxlcy9mdHBnZXQuYwppbmRleCAyODUyODNmLi45YjdkYzAyIDEwMDY0NAotLS0gYS9kb2NzL2V4YW1wbGVzL2Z0cGdldC5jCisrKyBiL2RvY3MvZXhhbXBsZXMvZnRwZ2V0LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDExLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yMywxMSArMjMsOSBAQAogCiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAKLS8qCi0gKiBUaGlzIGlzIGFuIGV4YW1wbGUgc2hvd2luZyBob3cgdG8gZ2V0IGEgc2luZ2xlIGZpbGUgZnJvbSBhbiBGVFAgc2VydmVyLgotICogSXQgZGVsYXlzIHRoZSBhY3R1YWwgZGVzdGluYXRpb24gZmlsZSBjcmVhdGlvbiB1bnRpbCB0aGUgZmlyc3Qgd3JpdGUKLSAqIGNhbGxiYWNrIHNvIHRoYXQgaXQgd29uJ3QgY3JlYXRlIGFuIGVtcHR5IGZpbGUgaW4gY2FzZSB0aGUgcmVtb3RlIGZpbGUKLSAqIGRvZXNuJ3QgZXhpc3Qgb3Igc29tZXRoaW5nIGVsc2UgZmFpbHMuCisvKiA8REVTQz4KKyAqIEdldCBhIHNpbmdsZSBmaWxlIGZyb20gYW4gRlRQIHNlcnZlci4KKyAqIDwvREVTQz4KICAqLwogCiBzdHJ1Y3QgRnRwRmlsZSB7CkBAIC02NSw3ICs2Myw3IEBACiAgICAgICogWW91IGJldHRlciByZXBsYWNlIHRoZSBVUkwgd2l0aCBvbmUgdGhhdCB3b3JrcyEKICAgICAgKi8KICAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfVVJMLAotICAgICAgICAgICAgICAgICAgICAgImZ0cDovL2Z0cC5leGFtcGxlLmNvbS9wdWIvd3d3L3V0aWxpdGllcy9jdXJsL2N1cmwtNy45LjIudGFyLmd6Iik7CisgICAgICAgICAgICAgICAgICAgICAiZnRwOi8vZnRwLmV4YW1wbGUuY29tL2N1cmwvY3VybC03LjkuMi50YXIuZ3oiKTsKICAgICAvKiBEZWZpbmUgb3VyIGNhbGxiYWNrIHRvIGdldCBjYWxsZWQgd2hlbiB0aGVyZSdzIGRhdGEgdG8gYmUgd3JpdHRlbiAqLwogICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9XUklURUZVTkNUSU9OLCBteV9md3JpdGUpOwogICAgIC8qIFNldCBhIHBvaW50ZXIgdG8gb3VyIHN0cnVjdCB0byBwYXNzIHRvIHRoZSBjYWxsYmFjayAqLwpkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy9mdHBnZXRpbmZvLmMgYi9kb2NzL2V4YW1wbGVzL2Z0cGdldGluZm8uYwppbmRleCBkZmRjZjc4Li4yNzdlNTJiIDEwMDY0NAotLS0gYS9kb2NzL2V4YW1wbGVzL2Z0cGdldGluZm8uYworKysgYi9kb2NzL2V4YW1wbGVzL2Z0cGdldGluZm8uYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTIsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTI0LDkgKzI0LDkgQEAKIAogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgogCi0vKgotICogVGhpcyBpcyBhbiBleGFtcGxlIHNob3dpbmcgaG93IHRvIGNoZWNrIGEgc2luZ2xlIGZpbGUncyBzaXplIGFuZCBtdGltZQotICogZnJvbSBhbiBGVFAgc2VydmVyLgorLyogPERFU0M+CisgKiBDaGVja3MgYSBzaW5nbGUgZmlsZSdzIHNpemUgYW5kIG10aW1lIGZyb20gYW4gRlRQIHNlcnZlci4KKyAqIDwvREVTQz4KICAqLwogCiBzdGF0aWMgc2l6ZV90IHRocm93X2F3YXkodm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IG5tZW1iLCB2b2lkICpkYXRhKQpAQCAtNjUsMTYgKzY1LDE4IEBACiAgICAgcmVzID0gY3VybF9lYXN5X3BlcmZvcm0oY3VybCk7CiAKICAgICBpZihDVVJMRV9PSyA9PSByZXMpIHsKLSAgICAgIC8qIGh0dHA6Ly9jdXJsLmhheHguc2UvbGliY3VybC9jL2N1cmxfZWFzeV9nZXRpbmZvLmh0bWwgKi8KKyAgICAgIC8qIGh0dHBzOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvYy9jdXJsX2Vhc3lfZ2V0aW5mby5odG1sICovCiAgICAgICByZXMgPSBjdXJsX2Vhc3lfZ2V0aW5mbyhjdXJsLCBDVVJMSU5GT19GSUxFVElNRSwgJmZpbGV0aW1lKTsKICAgICAgIGlmKChDVVJMRV9PSyA9PSByZXMpICYmIChmaWxldGltZSA+PSAwKSkgewogICAgICAgICB0aW1lX3QgZmlsZV90aW1lID0gKHRpbWVfdClmaWxldGltZTsKICAgICAgICAgcHJpbnRmKCJmaWxldGltZSAlczogJXMiLCBmaWxlbmFtZSwgY3RpbWUoJmZpbGVfdGltZSkpOwogICAgICAgfQotICAgICAgcmVzID0gY3VybF9lYXN5X2dldGluZm8oY3VybCwgQ1VSTElORk9fQ09OVEVOVF9MRU5HVEhfRE9XTkxPQUQsICZmaWxlc2l6ZSk7CisgICAgICByZXMgPSBjdXJsX2Vhc3lfZ2V0aW5mbyhjdXJsLCBDVVJMSU5GT19DT05URU5UX0xFTkdUSF9ET1dOTE9BRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmaWxlc2l6ZSk7CiAgICAgICBpZigoQ1VSTEVfT0sgPT0gcmVzKSAmJiAoZmlsZXNpemU+MC4wKSkKICAgICAgICAgcHJpbnRmKCJmaWxlc2l6ZSAlczogJTAuMGYgYnl0ZXNcbiIsIGZpbGVuYW1lLCBmaWxlc2l6ZSk7Ci0gICAgfSBlbHNlIHsKKyAgICB9CisgICAgZWxzZSB7CiAgICAgICAvKiB3ZSBmYWlsZWQgKi8KICAgICAgIGZwcmludGYoc3RkZXJyLCAiY3VybCB0b2xkIHVzICVkXG4iLCByZXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvZnRwZ2V0cmVzcC5jIGIvZG9jcy9leGFtcGxlcy9mdHBnZXRyZXNwLmMKaW5kZXggZGNiMjk2YS4uN2RjMzQ0MCAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9mdHBnZXRyZXNwLmMKKysrIGIvZG9jcy9leGFtcGxlcy9mdHBnZXRyZXNwLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDExLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yMywxMyArMjMsMTEgQEAKIAogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgogCi0vKgotICogU2ltaWxhciB0byBmdHBnZXQuYyBidXQgdGhpcyBhbHNvIHN0b3JlcyB0aGUgcmVjZWl2ZWQgcmVzcG9uc2UtbGluZXMKKy8qIDxERVNDPgorICogU2ltaWxhciB0byBmdHBnZXQuYyBidXQgYWxzbyBzdG9yZXMgdGhlIHJlY2VpdmVkIHJlc3BvbnNlLWxpbmVzCiAgKiBpbiBhIHNlcGFyYXRlIGZpbGUgdXNpbmcgb3VyIG93biBjYWxsYmFjayEKLSAqCi0gKiBUaGlzIGZ1bmN0aW9uYWxpdHkgd2FzIGludHJvZHVjZWQgaW4gbGliY3VybCA3LjkuMy4KKyAqIDwvREVTQz4KICAqLwotCiBzdGF0aWMgc2l6ZV90CiB3cml0ZV9yZXNwb25zZSh2b2lkICpwdHIsIHNpemVfdCBzaXplLCBzaXplX3Qgbm1lbWIsIHZvaWQgKmRhdGEpCiB7CkBAIC0zNyw2ICszNSw5IEBACiAgIHJldHVybiBmd3JpdGUocHRyLCBzaXplLCBubWVtYiwgd3JpdGVoZXJlKTsKIH0KIAorI2RlZmluZSBGVFBCT0RZICJmdHAtbGlzdCIKKyNkZWZpbmUgRlRQSEVBREVSUyAiZnRwLXJlc3BvbnNlcyIKKwogaW50IG1haW4odm9pZCkKIHsKICAgQ1VSTCAqY3VybDsKQEAgLTQ1LDEwICs0NiwxMCBAQAogICBGSUxFICpyZXNwZmlsZTsKIAogICAvKiBsb2NhbCBmaWxlIG5hbWUgdG8gc3RvcmUgdGhlIGZpbGUgYXMgKi8KLSAgZnRwZmlsZSA9IGZvcGVuKCJmdHAtbGlzdCIsICJ3YiIpOyAvKiBiIGlzIGJpbmFyeSwgbmVlZGVkIG9uIHdpbjMyICovCisgIGZ0cGZpbGUgPSBmb3BlbihGVFBCT0RZLCAid2IiKTsgLyogYiBpcyBiaW5hcnksIG5lZWRlZCBvbiB3aW4zMiAqLwogCiAgIC8qIGxvY2FsIGZpbGUgbmFtZSB0byBzdG9yZSB0aGUgRlRQIHNlcnZlcidzIHJlc3BvbnNlIGxpbmVzIGluICovCi0gIHJlc3BmaWxlID0gZm9wZW4oImZ0cC1yZXNwb25zZXMiLCAid2IiKTsgLyogYiBpcyBiaW5hcnksIG5lZWRlZCBvbiB3aW4zMiAqLworICByZXNwZmlsZSA9IGZvcGVuKEZUUEhFQURFUlMsICJ3YiIpOyAvKiBiIGlzIGJpbmFyeSwgbmVlZGVkIG9uIHdpbjMyICovCiAKICAgY3VybCA9IGN1cmxfZWFzeV9pbml0KCk7CiAgIGlmKGN1cmwpIHsKZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvZnRwc2dldC5jIGIvZG9jcy9leGFtcGxlcy9mdHBzZ2V0LmMKaW5kZXggZGFlNDUzNC4uZDUzZjA4OCAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9mdHBzZ2V0LmMKKysrIGIvZG9jcy9leGFtcGxlcy9mdHBzZ2V0LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDEyLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yNCwxMSArMjQsOSBAQAogCiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAKLS8qCi0gKiBUaGlzIGlzIGFuIGV4YW1wbGUgc2hvd2luZyBob3cgdG8gZ2V0IGEgc2luZ2xlIGZpbGUgZnJvbSBhbiBGVFBTIHNlcnZlci4KLSAqIEl0IGRlbGF5cyB0aGUgYWN0dWFsIGRlc3RpbmF0aW9uIGZpbGUgY3JlYXRpb24gdW50aWwgdGhlIGZpcnN0IHdyaXRlCi0gKiBjYWxsYmFjayBzbyB0aGF0IGl0IHdvbid0IGNyZWF0ZSBhbiBlbXB0eSBmaWxlIGluIGNhc2UgdGhlIHJlbW90ZSBmaWxlCi0gKiBkb2Vzbid0IGV4aXN0IG9yIHNvbWV0aGluZyBlbHNlIGZhaWxzLgorLyogPERFU0M+CisgKiBHZXQgYSBzaW5nbGUgZmlsZSBmcm9tIGFuIEZUUFMgc2VydmVyLgorICogPC9ERVNDPgogICovCiAKIHN0cnVjdCBGdHBGaWxlIHsKZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvZnRwdXBsb2FkLmMgYi9kb2NzL2V4YW1wbGVzL2Z0cHVwbG9hZC5jCmluZGV4IGU3OWY4ZDguLmJiYTBjNGQgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvZnRwdXBsb2FkLmMKKysrIGIvZG9jcy9leGFtcGxlcy9mdHB1cGxvYWQuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTIsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTMzLDExICszMywxMCBAQAogI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2VuZGlmCiAKLS8qCi0gKiBUaGlzIGV4YW1wbGUgc2hvd3MgYW4gRlRQIHVwbG9hZCwgd2l0aCBhIHJlbmFtZSBvZiB0aGUgZmlsZSBqdXN0IGFmdGVyCi0gKiBhIHN1Y2Nlc3NmdWwgdXBsb2FkLgotICoKLSAqIEV4YW1wbGUgYmFzZWQgb24gc291cmNlIGNvZGUgcHJvdmlkZWQgYnkgRXJpY2sgTnV3ZW5kYW0uIFRoYW5rcyEKKy8qIDxERVNDPgorICogUGVyZm9ybXMgYW4gRlRQIHVwbG9hZCBhbmQgcmVuYW1lcyB0aGUgZmlsZSBqdXN0IGFmdGVyIGEgc3VjY2Vzc2Z1bAorICogdHJhbnNmZXIuCisgKiA8L0RFU0M+CiAgKi8KIAogI2RlZmluZSBMT0NBTF9GSUxFICAgICAgIi90bXAvdXBsb2FkdGhpcy50eHQiCkBAIC0xMDUsNyArMTA0LDcgQEAKICAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfVVBMT0FELCAxTCk7CiAKICAgICAvKiBzcGVjaWZ5IHRhcmdldCAqLwotICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCxDVVJMT1BUX1VSTCwgUkVNT1RFX1VSTCk7CisgICAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1VSTCwgUkVNT1RFX1VSTCk7CiAKICAgICAvKiBwYXNzIGluIHRoYXQgbGFzdCBvZiBGVFAgY29tbWFuZHMgdG8gcnVuIGFmdGVyIHRoZSB0cmFuc2ZlciAqLwogICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9QT1NUUVVPVEUsIGhlYWRlcmxpc3QpOwpkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy9mdHB1cGxvYWRyZXN1bWUuYyBiL2RvY3MvZXhhbXBsZXMvZnRwdXBsb2FkcmVzdW1lLmMKaW5kZXggNTViODk4Ni4uNjQxNTYzNCAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9mdHB1cGxvYWRyZXN1bWUuYworKysgYi9kb2NzL2V4YW1wbGVzL2Z0cHVwbG9hZHJlc3VtZS5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTksMTMgKzE5LDkgQEAKICAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qIFVwbG9hZCB0byBGVFAsIHJlc3VtaW5nIGZhaWxlZCB0cmFuc2ZlcnMKLSAqCi0gKiBDb21waWxlIGZvciBNaW5HVyBsaWtlIHRoaXM6Ci0gKiAgZ2NjIC1XYWxsIC1wZWRhbnRpYyAtc3RkPWM5OSBmdHB1cGxvYWR3aXRocmVzdW1lLmMgLW8gZnRwdXBsb2FkcmVzdW1lLmV4ZQotICogIC1sY3VybCAtbG1zdmNyNzAKLSAqCi0gKiBXcml0dGVuIGJ5IFBoaWxpcCBCb2NrCisvKiA8REVTQz4KKyAqIFVwbG9hZCB0byBGVFAsIHJlc3VtaW5nIGZhaWxlZCB0cmFuc2ZlcnMuCisgKiA8L0RFU0M+CiAgKi8KIAogI2luY2x1ZGUgPHN0ZGxpYi5oPgpAQCAtNDAsNyArMzYsOCBAQAogLyogVGhlIE1pbkdXIGhlYWRlcnMgYXJlIG1pc3NpbmcgYSBmZXcgV2luMzIgZnVuY3Rpb24gZGVmaW5pdGlvbnMsCiAgICB5b3Ugc2hvdWxkbid0IG5lZWQgdGhpcyBpZiB5b3UgdXNlIFZDKysgKi8KICNpZiBkZWZpbmVkKF9fTUlOR1czMl9fKSAmJiAhZGVmaW5lZChfX01JTkdXNjRfXykKLWludCBfX2NkZWNsIF9zbnNjYW5mKGNvbnN0IGNoYXIgKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCwgY29uc3QgY2hhciAqIGZvcm1hdCwgLi4uKTsKK2ludCBfX2NkZWNsIF9zbnNjYW5mKGNvbnN0IGNoYXIgKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiBmb3JtYXQsIC4uLik7CiAjZW5kaWYKIAogCkBAIC01Myw3ICs1MCw3IEBACiAgIC8qIF9zbnNjYW5mKCkgaXMgV2luMzIgc3BlY2lmaWMgKi8KICAgciA9IF9zbnNjYW5mKHB0ciwgc2l6ZSAqIG5tZW1iLCAiQ29udGVudC1MZW5ndGg6ICVsZFxuIiwgJmxlbik7CiAKLSAgaWYgKHIpIC8qIE1pY3Jvc29mdDogd2UgZG9uJ3QgcmVhZCB0aGUgc3BlY3MgKi8KKyAgaWYocikgLyogTWljcm9zb2Z0OiB3ZSBkb24ndCByZWFkIHRoZSBzcGVjcyAqLwogICAgICooKGxvbmcgKikgc3RyZWFtKSA9IGxlbjsKIAogICByZXR1cm4gc2l6ZSAqIG5tZW1iOwpAQCAtNzEsNyArNjgsNyBAQAogICBGSUxFICpmID0gc3RyZWFtOwogICBzaXplX3QgbjsKIAotICBpZiAoZmVycm9yKGYpKQorICBpZihmZXJyb3IoZikpCiAgICAgcmV0dXJuIENVUkxfUkVBREZVTkNfQUJPUlQ7CiAKICAgbiA9IGZyZWFkKHB0ciwgc2l6ZSwgbm1lbWIsIGYpICogc2l6ZTsKQEAgLTg5LDcgKzg2LDcgQEAKICAgaW50IGM7CiAKICAgZiA9IGZvcGVuKGxvY2FscGF0aCwgInJiIik7Ci0gIGlmIChmID09IE5VTEwpIHsKKyAgaWYoIWYpIHsKICAgICBwZXJyb3IoTlVMTCk7CiAgICAgcmV0dXJuIDA7CiAgIH0KQEAgLTk4LDcgKzk1LDcgQEAKIAogICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmxoYW5kbGUsIENVUkxPUFRfVVJMLCByZW1vdGVwYXRoKTsKIAotICBpZiAodGltZW91dCkKKyAgaWYodGltZW91dCkKICAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmxoYW5kbGUsIENVUkxPUFRfRlRQX1JFU1BPTlNFX1RJTUVPVVQsIHRpbWVvdXQpOwogCiAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybGhhbmRsZSwgQ1VSTE9QVF9IRUFERVJGVU5DVElPTiwgZ2V0Y29udGVudGxlbmd0aGZ1bmMpOwpAQCAtMTA5LDE0ICsxMDYsMTUgQEAKICAgY3VybF9lYXN5X3NldG9wdChjdXJsaGFuZGxlLCBDVVJMT1BUX1JFQURGVU5DVElPTiwgcmVhZGZ1bmMpOwogICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmxoYW5kbGUsIENVUkxPUFRfUkVBRERBVEEsIGYpOwogCi0gIGN1cmxfZWFzeV9zZXRvcHQoY3VybGhhbmRsZSwgQ1VSTE9QVF9GVFBQT1JULCAiLSIpOyAvKiBkaXNhYmxlIHBhc3NpdmUgbW9kZSAqLworICAvKiBkaXNhYmxlIHBhc3NpdmUgbW9kZSAqLworICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmxoYW5kbGUsIENVUkxPUFRfRlRQUE9SVCwgIi0iKTsKICAgY3VybF9lYXN5X3NldG9wdChjdXJsaGFuZGxlLCBDVVJMT1BUX0ZUUF9DUkVBVEVfTUlTU0lOR19ESVJTLCAxTCk7CiAKICAgY3VybF9lYXN5X3NldG9wdChjdXJsaGFuZGxlLCBDVVJMT1BUX1ZFUkJPU0UsIDFMKTsKIAotICBmb3IgKGMgPSAwOyAociAhPSBDVVJMRV9PSykgJiYgKGMgPCB0cmllcyk7IGMrKykgeworICBmb3IoYyA9IDA7IChyICE9IENVUkxFX09LKSAmJiAoYyA8IHRyaWVzKTsgYysrKSB7CiAgICAgLyogYXJlIHdlIHJlc3VtaW5nPyAqLwotICAgIGlmIChjKSB7IC8qIHllcyAqLworICAgIGlmKGMpIHsgLyogeWVzICovCiAgICAgICAvKiBkZXRlcm1pbmUgdGhlIGxlbmd0aCBvZiB0aGUgZmlsZSBhbHJlYWR5IHdyaXR0ZW4gKi8KIAogICAgICAgLyoKQEAgLTEzMSw3ICsxMjksNyBAQAogICAgICAgY3VybF9lYXN5X3NldG9wdChjdXJsaGFuZGxlLCBDVVJMT1BUX0hFQURFUiwgMUwpOwogCiAgICAgICByID0gY3VybF9lYXN5X3BlcmZvcm0oY3VybGhhbmRsZSk7Ci0gICAgICBpZiAociAhPSBDVVJMRV9PSykKKyAgICAgIGlmKHIgIT0gQ1VSTEVfT0spCiAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmxoYW5kbGUsIENVUkxPUFRfTk9CT0RZLCAwTCk7CkBAIC0xNTAsNyArMTQ4LDcgQEAKIAogICBmY2xvc2UoZik7CiAKLSAgaWYgKHIgPT0gQ1VSTEVfT0spCisgIGlmKHIgPT0gQ1VSTEVfT0spCiAgICAgcmV0dXJuIDE7CiAgIGVsc2UgewogICAgIGZwcmludGYoc3RkZXJyLCAiJXNcbiIsIGN1cmxfZWFzeV9zdHJlcnJvcihyKSk7CkBAIC0xNjUsNyArMTYzLDggQEAKICAgY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpOwogICBjdXJsaGFuZGxlID0gY3VybF9lYXN5X2luaXQoKTsKIAotICB1cGxvYWQoY3VybGhhbmRsZSwgImZ0cDovL3VzZXI6cGFzc0BleGFtcGxlLmNvbS9wYXRoL2ZpbGUiLCAiQzpcXGZpbGUiLCAwLCAzKTsKKyAgdXBsb2FkKGN1cmxoYW5kbGUsICJmdHA6Ly91c2VyOnBhc3NAZXhhbXBsZS5jb20vcGF0aC9maWxlIiwgIkM6XFxmaWxlIiwKKyAgICAgICAgIDAsIDMpOwogCiAgIGN1cmxfZWFzeV9jbGVhbnVwKGN1cmxoYW5kbGUpOwogICBjdXJsX2dsb2JhbF9jbGVhbnVwKCk7CmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL2dldGluZm8uYyBiL2RvY3MvZXhhbXBsZXMvZ2V0aW5mby5jCmluZGV4IGFjYmUxZTEuLjU1ODU1NjQgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvZ2V0aW5mby5jCisrKyBiL2RvY3MvZXhhbXBsZXMvZ2V0aW5mby5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTksNiArMTksMTAgQEAKICAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIDxERVNDPgorICogVXNlIGdldGluZm8gdG8gZ2V0IGNvbnRlbnQtdHlwZSBhZnRlciBjb21wbGV0ZWQgdHJhbnNmZXIuCisgKiA8L0RFU0M+CisgKi8KICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgogCkBAIC0yNywxOCArMzEsMTQgQEAKICAgQ1VSTCAqY3VybDsKICAgQ1VSTGNvZGUgcmVzOwogCi0gIC8qIGh0dHA6Ly9jdXJsLmhheHguc2UvbGliY3VybC9jL2N1cmxfZWFzeV9pbml0Lmh0bWwgKi8KICAgY3VybCA9IGN1cmxfZWFzeV9pbml0KCk7CiAgIGlmKGN1cmwpIHsKLSAgICAvKiBodHRwOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvYy9jdXJsX2Vhc3lfc2V0b3B0Lmh0bWwjQ1VSTE9QVFVSTCAqLwogICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9VUkwsICJodHRwOi8vd3d3LmV4YW1wbGUuY29tLyIpOwotICAgIC8qIGh0dHA6Ly9jdXJsLmhheHguc2UvbGliY3VybC9jL2N1cmxfZWFzeV9wZXJmb3JtLmh0bWwgKi8KICAgICByZXMgPSBjdXJsX2Vhc3lfcGVyZm9ybShjdXJsKTsKIAogICAgIGlmKENVUkxFX09LID09IHJlcykgewogICAgICAgY2hhciAqY3Q7CiAgICAgICAvKiBhc2sgZm9yIHRoZSBjb250ZW50LXR5cGUgKi8KLSAgICAgIC8qIGh0dHA6Ly9jdXJsLmhheHguc2UvbGliY3VybC9jL2N1cmxfZWFzeV9nZXRpbmZvLmh0bWwgKi8KICAgICAgIHJlcyA9IGN1cmxfZWFzeV9nZXRpbmZvKGN1cmwsIENVUkxJTkZPX0NPTlRFTlRfVFlQRSwgJmN0KTsKIAogICAgICAgaWYoKENVUkxFX09LID09IHJlcykgJiYgY3QpCkBAIC00Niw3ICs0Niw2IEBACiAgICAgfQogCiAgICAgLyogYWx3YXlzIGNsZWFudXAgKi8KLSAgICAvKiBodHRwOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvYy9jdXJsX2Vhc3lfY2xlYW51cC5odG1sICovCiAgICAgY3VybF9lYXN5X2NsZWFudXAoY3VybCk7CiAgIH0KICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL2dldGlubWVtb3J5LmMgYi9kb2NzL2V4YW1wbGVzL2dldGlubWVtb3J5LmMKaW5kZXggYTFjMjE0MC4uZmI3OTQ3OCAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9nZXRpbm1lbW9yeS5jCisrKyBiL2RvY3MvZXhhbXBsZXMvZ2V0aW5tZW1vcnkuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTMsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDggKzE5LDEwIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKiBFeGFtcGxlIHNvdXJjZSBjb2RlIHRvIHNob3cgaG93IHRoZSBjYWxsYmFjayBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0bwotICogZG93bmxvYWQgZGF0YSBpbnRvIGEgY2h1bmsgb2YgbWVtb3J5IGluc3RlYWQgb2Ygc3RvcmluZyBpdCBpbiBhIGZpbGUuCisvKiA8REVTQz4KKyAqIFNob3dzIGhvdyB0aGUgd3JpdGUgY2FsbGJhY2sgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gZG93bmxvYWQgZGF0YSBpbnRvIGEKKyAqIGNodW5rIG9mIG1lbW9yeSBpbnN0ZWFkIG9mIHN0b3JpbmcgaXQgaW4gYSBmaWxlLgorICogPC9ERVNDPgogICovCiAKICNpbmNsdWRlIDxzdGRpby5oPgpAQCAtMzQsNyArMzYsNiBAQAogICBzaXplX3Qgc2l6ZTsKIH07CiAKLQogc3RhdGljIHNpemVfdAogV3JpdGVNZW1vcnlDYWxsYmFjayh2b2lkICpjb250ZW50cywgc2l6ZV90IHNpemUsIHNpemVfdCBubWVtYiwgdm9pZCAqdXNlcnApCiB7CkBAIC01NSw3ICs1Niw2IEBACiAgIHJldHVybiByZWFsc2l6ZTsKIH0KIAotCiBpbnQgbWFpbih2b2lkKQogewogICBDVVJMICpjdXJsX2hhbmRsZTsKZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvZ2V0cmVkaXJlY3QuYyBiL2RvY3MvZXhhbXBsZXMvZ2V0cmVkaXJlY3QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDdiMWU5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9leGFtcGxlcy9nZXRyZWRpcmVjdC5jCkBAIC0wLDAgKzEsNzAgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKyAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorICoKKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKgorICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKyAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICoKKyAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIDxERVNDPgorICogU2hvdyBob3cgdG8gZXh0cmFjdCBMb2NhdGlvbjogaGVhZGVyIGFuZCBVUkwgdG8gcmVkaXJlY3QgdG8uCisgKiA8L0RFU0M+CisgKi8KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCitpbnQgbWFpbih2b2lkKQoreworICBDVVJMICpjdXJsOworICBDVVJMY29kZSByZXM7CisgIGNoYXIgKmxvY2F0aW9uOworICBsb25nIHJlc3BvbnNlX2NvZGU7CisKKyAgY3VybCA9IGN1cmxfZWFzeV9pbml0KCk7CisgIGlmKGN1cmwpIHsKKyAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfVVJMLCAiaHR0cDovL2V4YW1wbGUuY29tIik7CisKKyAgICAvKiBleGFtcGxlLmNvbSBpcyByZWRpcmVjdGVkLCBmaWd1cmUgb3V0IHRoZSByZWRpcmVjdGlvbiEgKi8KKworICAgIC8qIFBlcmZvcm0gdGhlIHJlcXVlc3QsIHJlcyB3aWxsIGdldCB0aGUgcmV0dXJuIGNvZGUgKi8KKyAgICByZXMgPSBjdXJsX2Vhc3lfcGVyZm9ybShjdXJsKTsKKyAgICAvKiBDaGVjayBmb3IgZXJyb3JzICovCisgICAgaWYocmVzICE9IENVUkxFX09LKQorICAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2Vhc3lfcGVyZm9ybSgpIGZhaWxlZDogJXNcbiIsCisgICAgICAgICAgICAgIGN1cmxfZWFzeV9zdHJlcnJvcihyZXMpKTsKKyAgICBlbHNlIHsKKyAgICAgIHJlcyA9IGN1cmxfZWFzeV9nZXRpbmZvKGN1cmwsIENVUkxJTkZPX1JFU1BPTlNFX0NPREUsICZyZXNwb25zZV9jb2RlKTsKKyAgICAgIGlmKChyZXMgPT0gQ1VSTEVfT0spICYmCisgICAgICAgICAoKHJlc3BvbnNlX2NvZGUgLyAxMDApICE9IDMpKSB7CisgICAgICAgIC8qIGEgcmVkaXJlY3QgaW1wbGllcyBhIDN4eCByZXNwb25zZSBjb2RlICovCisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiTm90IGEgcmVkaXJlY3QuXG4iKTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXMgPSBjdXJsX2Vhc3lfZ2V0aW5mbyhjdXJsLCBDVVJMSU5GT19SRURJUkVDVF9VUkwsICZsb2NhdGlvbik7CisKKyAgICAgICAgaWYoKHJlcyA9PSBDVVJMRV9PSykgJiYgbG9jYXRpb24pIHsKKyAgICAgICAgICAvKiBUaGlzIGlzIHRoZSBuZXcgYWJzb2x1dGUgVVJMIHRoYXQgeW91IGNvdWxkIHJlZGlyZWN0IHRvLCBldmVuIGlmCisgICAgICAgICAgICogdGhlIExvY2F0aW9uOiByZXNwb25zZSBoZWFkZXIgbWF5IGhhdmUgYmVlbiBhIHJlbGF0aXZlIFVSTC4gKi8KKyAgICAgICAgICBwcmludGYoIlJlZGlyZWN0ZWQgdG86ICVzXG4iLCBsb2NhdGlvbik7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisKKyAgICAvKiBhbHdheXMgY2xlYW51cCAqLworICAgIGN1cmxfZWFzeV9jbGVhbnVwKGN1cmwpOworICB9CisgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy9naGlwZXIuYyBiL2RvY3MvZXhhbXBsZXMvZ2hpcGVyLmMKaW5kZXggNzU3MWZmYS4uNzMxN2E2MyAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9naGlwZXIuYworKysgYi9kb2NzL2V4YW1wbGVzL2doaXBlci5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTksMzggKzE5LDQxIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiA8REVTQz4KKyAqIG11bHRpIHNvY2tldCBBUEkgdXNhZ2UgdG9nZXRoZXIgd2l0aCB3aXRoIGdsaWIyCisgKiA8L0RFU0M+CisgKi8KIC8qIEV4YW1wbGUgYXBwbGljYXRpb24gc291cmNlIGNvZGUgdXNpbmcgdGhlIG11bHRpIHNvY2tldCBpbnRlcmZhY2UgdG8KICAqIGRvd25sb2FkIG1hbnkgZmlsZXMgYXQgb25jZS4KICAqCiAgKiBXcml0dGVuIGJ5IEplZmYgUG9obG1leWVyCiAKLVJlcXVpcmVzIGdsaWItMi54IGFuZCBhIChQT1NJWD8pIHN5c3RlbSB0aGF0IGhhcyBta2ZpZm8oKS4KKyBSZXF1aXJlcyBnbGliLTIueCBhbmQgYSAoUE9TSVg/KSBzeXN0ZW0gdGhhdCBoYXMgbWtmaWZvKCkuCiAKLVRoaXMgaXMgYW4gYWRhcHRhdGlvbiBvZiBsaWJjdXJsJ3MgImhpcGV2LmMiIGFuZCBsaWJldmVudCdzICJldmVudC10ZXN0LmMiCi1zYW1wbGUgcHJvZ3JhbXMsIGFkYXB0ZWQgdG8gdXNlIGdsaWIncyBnX2lvX2NoYW5uZWwgaW4gcGxhY2Ugb2YgbGliZXZlbnQuCisgVGhpcyBpcyBhbiBhZGFwdGF0aW9uIG9mIGxpYmN1cmwncyAiaGlwZXYuYyIgYW5kIGxpYmV2ZW50J3MgImV2ZW50LXRlc3QuYyIKKyBzYW1wbGUgcHJvZ3JhbXMsIGFkYXB0ZWQgdG8gdXNlIGdsaWIncyBnX2lvX2NoYW5uZWwgaW4gcGxhY2Ugb2YgbGliZXZlbnQuCiAKLVdoZW4gcnVubmluZywgdGhlIHByb2dyYW0gY3JlYXRlcyB0aGUgbmFtZWQgcGlwZSAiaGlwZXIuZmlmbyIKKyBXaGVuIHJ1bm5pbmcsIHRoZSBwcm9ncmFtIGNyZWF0ZXMgdGhlIG5hbWVkIHBpcGUgImhpcGVyLmZpZm8iCiAKLVdoZW5ldmVyIHRoZXJlIGlzIGlucHV0IGludG8gdGhlIGZpZm8sIHRoZSBwcm9ncmFtIHJlYWRzIHRoZSBpbnB1dCBhcyBhIGxpc3QKLW9mIFVSTCdzIGFuZCBjcmVhdGVzIHNvbWUgbmV3IGVhc3kgaGFuZGxlcyB0byBmZXRjaCBlYWNoIFVSTCB2aWEgdGhlCi1jdXJsX211bHRpICJoaXBlciIgQVBJLgorIFdoZW5ldmVyIHRoZXJlIGlzIGlucHV0IGludG8gdGhlIGZpZm8sIHRoZSBwcm9ncmFtIHJlYWRzIHRoZSBpbnB1dCBhcyBhIGxpc3QKKyBvZiBVUkwncyBhbmQgY3JlYXRlcyBzb21lIG5ldyBlYXN5IGhhbmRsZXMgdG8gZmV0Y2ggZWFjaCBVUkwgdmlhIHRoZQorIGN1cmxfbXVsdGkgImhpcGVyIiBBUEkuCiAKIAotVGh1cywgeW91IGNhbiB0cnkgYSBzaW5nbGUgVVJMOgotICAlIGVjaG8gaHR0cDovL3d3dy55YWhvby5jb20gPiBoaXBlci5maWZvCisgVGh1cywgeW91IGNhbiB0cnkgYSBzaW5nbGUgVVJMOgorICUgZWNobyBodHRwOi8vd3d3LnlhaG9vLmNvbSA+IGhpcGVyLmZpZm8KIAotT3IgYSB3aG9sZSBidW5jaCBvZiB0aGVtOgotICAlIGNhdCBteS11cmwtbGlzdCA+IGhpcGVyLmZpZm8KKyBPciBhIHdob2xlIGJ1bmNoIG9mIHRoZW06CisgJSBjYXQgbXktdXJsLWxpc3QgPiBoaXBlci5maWZvCiAKLVRoZSBmaWZvIGJ1ZmZlciBpcyBoYW5kbGVkIGFsbW9zdCBpbnN0YW50bHksIHNvIHlvdSBjYW4gZXZlbiBhZGQgbW9yZSBVUkwncwotd2hpbGUgdGhlIHByZXZpb3VzIHJlcXVlc3RzIGFyZSBzdGlsbCBiZWluZyBkb3dubG9hZGVkLgorIFRoZSBmaWZvIGJ1ZmZlciBpcyBoYW5kbGVkIGFsbW9zdCBpbnN0YW50bHksIHNvIHlvdSBjYW4gZXZlbiBhZGQgbW9yZSBVUkwncworIHdoaWxlIHRoZSBwcmV2aW91cyByZXF1ZXN0cyBhcmUgc3RpbGwgYmVpbmcgZG93bmxvYWRlZC4KIAotVGhpcyBpcyBwdXJlbHkgYSBkZW1vIGFwcCwgYWxsIHJldHJpZXZlZCBkYXRhIGlzIHNpbXBseSBkaXNjYXJkZWQgYnkgdGhlIHdyaXRlCi1jYWxsYmFjay4KKyBUaGlzIGlzIHB1cmVseSBhIGRlbW8gYXBwLCBhbGwgcmV0cmlldmVkIGRhdGEgaXMgc2ltcGx5IGRpc2NhcmRlZCBieSB0aGUgd3JpdGUKKyBjYWxsYmFjay4KIAogKi8KIAotCiAjaW5jbHVkZSA8Z2xpYi5oPgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CkBAIC02MCwxMyArNjMsMTAgQEAKICNpbmNsdWRlIDxlcnJuby5oPgogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgogCi0KICNkZWZpbmUgTVNHX09VVCBnX3ByaW50ICAgLyogQ2hhbmdlIHRvICJnX2Vycm9yIiB0byB3cml0ZSB0byBzdGRlcnIgKi8KICNkZWZpbmUgU0hPV19WRVJCT1NFIDAgICAgLyogU2V0IHRvIG5vbi16ZXJvIGZvciBsaWJjdXJsIG1lc3NhZ2VzICovCiAjZGVmaW5lIFNIT1dfUFJPR1JFU1MgMCAgIC8qIFNldCB0byBub24temVybyB0byBlbmFibGUgcHJvZ3Jlc3MgY2FsbGJhY2sgKi8KIAotCi0KIC8qIEdsb2JhbCBpbmZvcm1hdGlvbiwgY29tbW9uIHRvIGFsbCBjb25uZWN0aW9ucyAqLwogdHlwZWRlZiBzdHJ1Y3QgX0dsb2JhbEluZm8gewogICBDVVJMTSAqbXVsdGk7CkBAIC03NCw4ICs3NCw2IEBACiAgIGludCBzdGlsbF9ydW5uaW5nOwogfSBHbG9iYWxJbmZvOwogCi0KLQogLyogSW5mb3JtYXRpb24gYXNzb2NpYXRlZCB3aXRoIGEgc3BlY2lmaWMgZWFzeSBoYW5kbGUgKi8KIHR5cGVkZWYgc3RydWN0IF9Db25uSW5mbyB7CiAgIENVUkwgKmVhc3k7CkBAIC04NCw3ICs4Miw2IEBACiAgIGNoYXIgZXJyb3JbQ1VSTF9FUlJPUl9TSVpFXTsKIH0gQ29ubkluZm87CiAKLQogLyogSW5mb3JtYXRpb24gYXNzb2NpYXRlZCB3aXRoIGEgc3BlY2lmaWMgc29ja2V0ICovCiB0eXBlZGVmIHN0cnVjdCBfU29ja0luZm8gewogICBjdXJsX3NvY2tldF90IHNvY2tmZDsKQEAgLTk2LDMwICs5MywyNSBAQAogICBHbG9iYWxJbmZvICpnbG9iYWw7CiB9IFNvY2tJbmZvOwogCi0KLQotCiAvKiBEaWUgaWYgd2UgZ2V0IGEgYmFkIENVUkxNY29kZSBzb21ld2hlcmUgKi8KIHN0YXRpYyB2b2lkIG1jb2RlX29yX2RpZShjb25zdCBjaGFyICp3aGVyZSwgQ1VSTE1jb2RlIGNvZGUpIHsKLSAgaWYgKCBDVVJMTV9PSyAhPSBjb2RlICkgeworICBpZihDVVJMTV9PSyAhPSBjb2RlKSB7CiAgICAgY29uc3QgY2hhciAqczsKICAgICBzd2l0Y2ggKGNvZGUpIHsKLSAgICAgIGNhc2UgICAgIENVUkxNX0JBRF9IQU5ETEU6ICAgICAgICAgcz0iQ1VSTE1fQkFEX0hBTkRMRSI7ICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlICAgICBDVVJMTV9CQURfRUFTWV9IQU5ETEU6ICAgIHM9IkNVUkxNX0JBRF9FQVNZX0hBTkRMRSI7ICAgIGJyZWFrOwotICAgICAgY2FzZSAgICAgQ1VSTE1fT1VUX09GX01FTU9SWTogICAgICBzPSJDVVJMTV9PVVRfT0ZfTUVNT1JZIjsgICAgICBicmVhazsKLSAgICAgIGNhc2UgICAgIENVUkxNX0lOVEVSTkFMX0VSUk9SOiAgICAgcz0iQ1VSTE1fSU5URVJOQUxfRVJST1IiOyAgICAgYnJlYWs7Ci0gICAgICBjYXNlICAgICBDVVJMTV9CQURfU09DS0VUOiAgICAgICAgIHM9IkNVUkxNX0JBRF9TT0NLRVQiOyAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSAgICAgQ1VSTE1fVU5LTk9XTl9PUFRJT046ICAgICBzPSJDVVJMTV9VTktOT1dOX09QVElPTiI7ICAgICBicmVhazsKLSAgICAgIGNhc2UgICAgIENVUkxNX0xBU1Q6ICAgICAgICAgICAgICAgcz0iQ1VSTE1fTEFTVCI7ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICBkZWZhdWx0OiBzPSJDVVJMTV91bmtub3duIjsKKyAgICBjYXNlICAgICBDVVJMTV9CQURfSEFORExFOiAgICAgICAgIHM9IkNVUkxNX0JBRF9IQU5ETEUiOyAgICAgICAgIGJyZWFrOworICAgIGNhc2UgICAgIENVUkxNX0JBRF9FQVNZX0hBTkRMRTogICAgcz0iQ1VSTE1fQkFEX0VBU1lfSEFORExFIjsgICAgYnJlYWs7CisgICAgY2FzZSAgICAgQ1VSTE1fT1VUX09GX01FTU9SWTogICAgICBzPSJDVVJMTV9PVVRfT0ZfTUVNT1JZIjsgICAgICBicmVhazsKKyAgICBjYXNlICAgICBDVVJMTV9JTlRFUk5BTF9FUlJPUjogICAgIHM9IkNVUkxNX0lOVEVSTkFMX0VSUk9SIjsgICAgIGJyZWFrOworICAgIGNhc2UgICAgIENVUkxNX0JBRF9TT0NLRVQ6ICAgICAgICAgcz0iQ1VSTE1fQkFEX1NPQ0tFVCI7ICAgICAgICAgYnJlYWs7CisgICAgY2FzZSAgICAgQ1VSTE1fVU5LTk9XTl9PUFRJT046ICAgICBzPSJDVVJMTV9VTktOT1dOX09QVElPTiI7ICAgICBicmVhazsKKyAgICBjYXNlICAgICBDVVJMTV9MQVNUOiAgICAgICAgICAgICAgIHM9IkNVUkxNX0xBU1QiOyAgICAgICAgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6IHM9IkNVUkxNX3Vua25vd24iOwogICAgIH0KICAgICBNU0dfT1VUKCJFUlJPUjogJXMgcmV0dXJucyAlc1xuIiwgd2hlcmUsIHMpOwogICAgIGV4aXQoY29kZSk7CiAgIH0KIH0KIAotCi0KIC8qIENoZWNrIGZvciBjb21wbGV0ZWQgdHJhbnNmZXJzLCBhbmQgcmVtb3ZlIHRoZWlyIGVhc3kgaGFuZGxlcyAqLwogc3RhdGljIHZvaWQgY2hlY2tfbXVsdGlfaW5mbyhHbG9iYWxJbmZvICpnKQogewpAQCAtMTMxLDggKzEyMyw4IEBACiAgIENVUkxjb2RlIHJlczsKIAogICBNU0dfT1VUKCJSRU1BSU5JTkc6ICVkXG4iLCBnLT5zdGlsbF9ydW5uaW5nKTsKLSAgd2hpbGUgKChtc2cgPSBjdXJsX211bHRpX2luZm9fcmVhZChnLT5tdWx0aSwgJm1zZ3NfbGVmdCkpKSB7Ci0gICAgaWYgKG1zZy0+bXNnID09IENVUkxNU0dfRE9ORSkgeworICB3aGlsZSgobXNnID0gY3VybF9tdWx0aV9pbmZvX3JlYWQoZy0+bXVsdGksICZtc2dzX2xlZnQpKSkgeworICAgIGlmKG1zZy0+bXNnID09IENVUkxNU0dfRE9ORSkgewogICAgICAgZWFzeSA9IG1zZy0+ZWFzeV9oYW5kbGU7CiAgICAgICByZXMgPSBtc2ctPmRhdGEucmVzdWx0OwogICAgICAgY3VybF9lYXN5X2dldGluZm8oZWFzeSwgQ1VSTElORk9fUFJJVkFURSwgJmNvbm4pOwpAQCAtMTQ2LDggKzEzOCw2IEBACiAgIH0KIH0KIAotCi0KIC8qIENhbGxlZCBieSBnbGliIHdoZW4gb3VyIHRpbWVvdXQgZXhwaXJlcyAqLwogc3RhdGljIGdib29sZWFuIHRpbWVyX2NiKGdwb2ludGVyIGRhdGEpCiB7CkBAIC0xNTUsMTQgKzE0NSwxMiBAQAogICBDVVJMTWNvZGUgcmM7CiAKICAgcmMgPSBjdXJsX211bHRpX3NvY2tldF9hY3Rpb24oZy0+bXVsdGksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSTF9TT0NLRVRfVElNRU9VVCwgMCwgJmctPnN0aWxsX3J1bm5pbmcpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDVVJMX1NPQ0tFVF9USU1FT1VULCAwLCAmZy0+c3RpbGxfcnVubmluZyk7CiAgIG1jb2RlX29yX2RpZSgidGltZXJfY2I6IGN1cmxfbXVsdGlfc29ja2V0X2FjdGlvbiIsIHJjKTsKICAgY2hlY2tfbXVsdGlfaW5mbyhnKTsKICAgcmV0dXJuIEZBTFNFOwogfQogCi0KLQogLyogVXBkYXRlIHRoZSBldmVudCB0aW1lciBhZnRlciBjdXJsX211bHRpIGxpYnJhcnkgY2FsbHMgKi8KIHN0YXRpYyBpbnQgdXBkYXRlX3RpbWVvdXRfY2IoQ1VSTE0gKm11bHRpLCBsb25nIHRpbWVvdXRfbXMsIHZvaWQgKnVzZXJwKQogewpAQCAtMTcyLDE1ICsxNjAsMTIgQEAKICAgdGltZW91dC50dl91c2VjID0gKHRpbWVvdXRfbXMlMTAwMCkqMTAwMDsKIAogICBNU0dfT1VUKCIqKiogdXBkYXRlX3RpbWVvdXRfY2IgJWxkID0+ICVsZDolbGQgKioqXG4iLAotICAgICAgICAgICAgICB0aW1lb3V0X21zLCB0aW1lb3V0LnR2X3NlYywgdGltZW91dC50dl91c2VjKTsKKyAgICAgICAgICB0aW1lb3V0X21zLCB0aW1lb3V0LnR2X3NlYywgdGltZW91dC50dl91c2VjKTsKIAogICBnLT50aW1lcl9ldmVudCA9IGdfdGltZW91dF9hZGQodGltZW91dF9tcywgdGltZXJfY2IsIGcpOwogICByZXR1cm4gMDsKIH0KIAotCi0KLQogLyogQ2FsbGVkIGJ5IGdsaWIgd2hlbiB3ZSBnZXQgYWN0aW9uIG9uIGEgbXVsdGkgc29ja2V0ICovCiBzdGF0aWMgZ2Jvb2xlYW4gZXZlbnRfY2IoR0lPQ2hhbm5lbCAqY2gsIEdJT0NvbmRpdGlvbiBjb25kaXRpb24sIGdwb2ludGVyIGRhdGEpCiB7CkBAIC0xOTgsNDEgKzE4Myw0MyBAQAogICBjaGVja19tdWx0aV9pbmZvKGcpOwogICBpZihnLT5zdGlsbF9ydW5uaW5nKSB7CiAgICAgcmV0dXJuIFRSVUU7Ci0gIH0gZWxzZSB7CisgIH0KKyAgZWxzZSB7CiAgICAgTVNHX09VVCgibGFzdCB0cmFuc2ZlciBkb25lLCBraWxsIHRpbWVvdXRcbiIpOwotICAgIGlmIChnLT50aW1lcl9ldmVudCkgeyBnX3NvdXJjZV9yZW1vdmUoZy0+dGltZXJfZXZlbnQpOyB9CisgICAgaWYoZy0+dGltZXJfZXZlbnQpIHsKKyAgICAgIGdfc291cmNlX3JlbW92ZShnLT50aW1lcl9ldmVudCk7CisgICAgfQogICAgIHJldHVybiBGQUxTRTsKICAgfQogfQogCi0KLQogLyogQ2xlYW4gdXAgdGhlIFNvY2tJbmZvIHN0cnVjdHVyZSAqLwogc3RhdGljIHZvaWQgcmVtc29jayhTb2NrSW5mbyAqZikKIHsKLSAgaWYgKCFmKSB7IHJldHVybjsgfQotICBpZiAoZi0+ZXYpIHsgZ19zb3VyY2VfcmVtb3ZlKGYtPmV2KTsgfQorICBpZighZikgeworICAgIHJldHVybjsKKyAgfQorICBpZihmLT5ldikgeworICAgIGdfc291cmNlX3JlbW92ZShmLT5ldik7CisgIH0KICAgZ19mcmVlKGYpOwogfQogCi0KLQogLyogQXNzaWduIGluZm9ybWF0aW9uIHRvIGEgU29ja0luZm8gc3RydWN0dXJlICovCiBzdGF0aWMgdm9pZCBzZXRzb2NrKFNvY2tJbmZvKmYsIGN1cmxfc29ja2V0X3QgcywgQ1VSTCplLCBpbnQgYWN0LCBHbG9iYWxJbmZvKmcpCiB7CiAgIEdJT0NvbmRpdGlvbiBraW5kID0KLSAgICAgKGFjdCZDVVJMX1BPTExfSU4/R19JT19JTjowKXwoYWN0JkNVUkxfUE9MTF9PVVQ/R19JT19PVVQ6MCk7CisgICAgKGFjdCZDVVJMX1BPTExfSU4/R19JT19JTjowKXwoYWN0JkNVUkxfUE9MTF9PVVQ/R19JT19PVVQ6MCk7CiAKICAgZi0+c29ja2ZkID0gczsKICAgZi0+YWN0aW9uID0gYWN0OwogICBmLT5lYXN5ID0gZTsKLSAgaWYgKGYtPmV2KSB7IGdfc291cmNlX3JlbW92ZShmLT5ldik7IH0KLSAgZi0+ZXY9Z19pb19hZGRfd2F0Y2goZi0+Y2gsIGtpbmQsIGV2ZW50X2NiLGcpOwotCisgIGlmKGYtPmV2KSB7CisgICAgZ19zb3VyY2VfcmVtb3ZlKGYtPmV2KTsKKyAgfQorICBmLT5ldj1nX2lvX2FkZF93YXRjaChmLT5jaCwga2luZCwgZXZlbnRfY2IsIGcpOwogfQogCi0KLQogLyogSW5pdGlhbGl6ZSBhIG5ldyBTb2NrSW5mbyBzdHJ1Y3R1cmUgKi8KIHN0YXRpYyB2b2lkIGFkZHNvY2soY3VybF9zb2NrZXRfdCBzLCBDVVJMICplYXN5LCBpbnQgYWN0aW9uLCBHbG9iYWxJbmZvICpnKQogewpAQCAtMjQ0LDggKzIzMSw2IEBACiAgIGN1cmxfbXVsdGlfYXNzaWduKGctPm11bHRpLCBzLCBmZHApOwogfQogCi0KLQogLyogQ1VSTE1PUFRfU09DS0VURlVOQ1RJT04gKi8KIHN0YXRpYyBpbnQgc29ja19jYihDVVJMICplLCBjdXJsX3NvY2tldF90IHMsIGludCB3aGF0LCB2b2lkICpjYnAsIHZvaWQgKnNvY2twKQogewpAQCAtMjU0LDE0ICsyMzksMTUgQEAKICAgc3RhdGljIGNvbnN0IGNoYXIgKndoYXRzdHJbXT17ICJub25lIiwgIklOIiwgIk9VVCIsICJJTk9VVCIsICJSRU1PVkUiIH07CiAKICAgTVNHX09VVCgic29ja2V0IGNhbGxiYWNrOiBzPSVkIGU9JXAgd2hhdD0lcyAiLCBzLCBlLCB3aGF0c3RyW3doYXRdKTsKLSAgaWYgKHdoYXQgPT0gQ1VSTF9QT0xMX1JFTU9WRSkgeworICBpZih3aGF0ID09IENVUkxfUE9MTF9SRU1PVkUpIHsKICAgICBNU0dfT1VUKCJcbiIpOwogICAgIHJlbXNvY2soZmRwKTsKLSAgfSBlbHNlIHsKLSAgICBpZiAoIWZkcCkgeworICB9CisgIGVsc2UgeworICAgIGlmKCFmZHApIHsKICAgICAgIE1TR19PVVQoIkFkZGluZyBkYXRhOiAlcyVzXG4iLAotICAgICAgICAgICAgIHdoYXQmQ1VSTF9QT0xMX0lOPyJSRUFEIjoiIiwKLSAgICAgICAgICAgICB3aGF0JkNVUkxfUE9MTF9PVVQ/IldSSVRFIjoiIiApOworICAgICAgICAgICAgICB3aGF0JkNVUkxfUE9MTF9JTj8iUkVBRCI6IiIsCisgICAgICAgICAgICAgIHdoYXQmQ1VSTF9QT0xMX09VVD8iV1JJVEUiOiIiKTsKICAgICAgIGFkZHNvY2socywgZSwgd2hhdCwgZyk7CiAgICAgfQogICAgIGVsc2UgewpAQCAtMjczLDggKzI1OSw2IEBACiAgIHJldHVybiAwOwogfQogCi0KLQogLyogQ1VSTE9QVF9XUklURUZVTkNUSU9OICovCiBzdGF0aWMgc2l6ZV90IHdyaXRlX2NiKHZvaWQgKnB0ciwgc2l6ZV90IHNpemUsIHNpemVfdCBubWVtYiwgdm9pZCAqZGF0YSkKIHsKQEAgLTI4NSwzMCArMjY5LDI1IEBACiAgIHJldHVybiByZWFsc2l6ZTsKIH0KIAotCi0KIC8qIENVUkxPUFRfUFJPR1JFU1NGVU5DVElPTiAqLwotc3RhdGljIGludCBwcm9nX2NiICh2b2lkICpwLCBkb3VibGUgZGx0b3RhbCwgZG91YmxlIGRsbm93LCBkb3VibGUgdWx0LCBkb3VibGUgdWxuKQorc3RhdGljIGludCBwcm9nX2NiICh2b2lkICpwLCBkb3VibGUgZGx0b3RhbCwgZG91YmxlIGRsbm93LCBkb3VibGUgdWx0LAorICAgICAgICAgICAgICAgICAgICBkb3VibGUgdWxuKQogewogICBDb25uSW5mbyAqY29ubiA9IChDb25uSW5mbyAqKXA7CiAgIE1TR19PVVQoIlByb2dyZXNzOiAlcyAoJWcvJWcpXG4iLCBjb25uLT51cmwsIGRsbm93LCBkbHRvdGFsKTsKICAgcmV0dXJuIDA7CiB9CiAKLQotCiAvKiBDcmVhdGUgYSBuZXcgZWFzeSBoYW5kbGUsIGFuZCBhZGQgaXQgdG8gdGhlIGdsb2JhbCBjdXJsX211bHRpICovCi1zdGF0aWMgdm9pZCBuZXdfY29ubihjaGFyICp1cmwsIEdsb2JhbEluZm8gKmcgKQorc3RhdGljIHZvaWQgbmV3X2Nvbm4oY2hhciAqdXJsLCBHbG9iYWxJbmZvICpnKQogewogICBDb25uSW5mbyAqY29ubjsKICAgQ1VSTE1jb2RlIHJjOwogCiAgIGNvbm4gPSBnX21hbGxvYzAoc2l6ZW9mKENvbm5JbmZvKSk7Ci0KICAgY29ubi0+ZXJyb3JbMF09J1wwJzsKLQogICBjb25uLT5lYXN5ID0gY3VybF9lYXN5X2luaXQoKTsKLSAgaWYgKCFjb25uLT5lYXN5KSB7CisgIGlmKCFjb25uLT5lYXN5KSB7CiAgICAgTVNHX09VVCgiY3VybF9lYXN5X2luaXQoKSBmYWlsZWQsIGV4aXRpbmchXG4iKTsKICAgICBleGl0KDIpOwogICB9CkBAIC0zMzYsOTMgKzMxNSw5MCBAQAogICAgICB0aGF0IHRoZSBuZWNlc3Nhcnkgc29ja2V0X2FjdGlvbigpIGNhbGwgd2lsbCBiZSBjYWxsZWQgYnkgdGhpcyBhcHAgKi8KIH0KIAotCiAvKiBUaGlzIGdldHMgY2FsbGVkIGJ5IGdsaWIgd2hlbmV2ZXIgZGF0YSBpcyByZWNlaXZlZCBmcm9tIHRoZSBmaWZvICovCiBzdGF0aWMgZ2Jvb2xlYW4gZmlmb19jYiAoR0lPQ2hhbm5lbCAqY2gsIEdJT0NvbmRpdGlvbiBjb25kaXRpb24sIGdwb2ludGVyIGRhdGEpCiB7Ci0gICNkZWZpbmUgQlVGX1NJWkUgMTAyNAorI2RlZmluZSBCVUZfU0laRSAxMDI0CiAgIGdzaXplIGxlbiwgdHA7CiAgIGdjaGFyICpidWYsICp0bXAsICphbGw9TlVMTDsKICAgR0lPU3RhdHVzIHJ2OwogCiAgIGRvIHsKICAgICBHRXJyb3IgKmVycj1OVUxMOwotICAgIHJ2ID0gZ19pb19jaGFubmVsX3JlYWRfbGluZSAoY2gsJmJ1ZiwmbGVuLCZ0cCwmZXJyKTsKLSAgICBpZiAoIGJ1ZiApIHsKLSAgICAgIGlmICh0cCkgeyBidWZbdHBdPSdcMCc7IH0KLSAgICAgIG5ld19jb25uKGJ1ZiwoR2xvYmFsSW5mbyopZGF0YSk7CisgICAgcnYgPSBnX2lvX2NoYW5uZWxfcmVhZF9saW5lKGNoLCAmYnVmLCAmbGVuLCAmdHAsICZlcnIpOworICAgIGlmKGJ1ZikgeworICAgICAgaWYodHApIHsKKyAgICAgICAgYnVmW3RwXT0nXDAnOworICAgICAgfQorICAgICAgbmV3X2Nvbm4oYnVmLCAoR2xvYmFsSW5mbyopZGF0YSk7CiAgICAgICBnX2ZyZWUoYnVmKTsKLSAgICB9IGVsc2UgeworICAgIH0KKyAgICBlbHNlIHsKICAgICAgIGJ1ZiA9IGdfbWFsbG9jKEJVRl9TSVpFKzEpOwotICAgICAgd2hpbGUgKFRSVUUpIHsKKyAgICAgIHdoaWxlKFRSVUUpIHsKICAgICAgICAgYnVmW0JVRl9TSVpFXT0nXDAnOwotICAgICAgICBnX2lvX2NoYW5uZWxfcmVhZF9jaGFycyhjaCxidWYsQlVGX1NJWkUsJmxlbiwmZXJyKTsKLSAgICAgICAgaWYgKGxlbikgeworICAgICAgICBnX2lvX2NoYW5uZWxfcmVhZF9jaGFycyhjaCwgYnVmLCBCVUZfU0laRSwgJmxlbiwgJmVycik7CisgICAgICAgIGlmKGxlbikgewogICAgICAgICAgIGJ1ZltsZW5dPSdcMCc7Ci0gICAgICAgICAgaWYgKGFsbCkgeworICAgICAgICAgIGlmKGFsbCkgewogICAgICAgICAgICAgdG1wPWFsbDsKICAgICAgICAgICAgIGFsbD1nX3N0cmR1cF9wcmludGYoIiVzJXMiLCB0bXAsIGJ1Zik7CiAgICAgICAgICAgICBnX2ZyZWUodG1wKTsKLSAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGFsbCA9IGdfc3RyZHVwKGJ1Zik7CiAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgfQotICAgICAgaWYgKGFsbCkgewotICAgICAgICBuZXdfY29ubihhbGwsKEdsb2JhbEluZm8qKWRhdGEpOworICAgICAgaWYoYWxsKSB7CisgICAgICAgIG5ld19jb25uKGFsbCwgKEdsb2JhbEluZm8qKWRhdGEpOwogICAgICAgICBnX2ZyZWUoYWxsKTsKICAgICAgIH0KICAgICAgIGdfZnJlZShidWYpOwogICAgIH0KLSAgICBpZiAoIGVyciApIHsKKyAgICBpZihlcnIpIHsKICAgICAgIGdfZXJyb3IoImZpZm9fY2I6ICVzIiwgZXJyLT5tZXNzYWdlKTsKICAgICAgIGdfZnJlZShlcnIpOwogICAgICAgYnJlYWs7CiAgICAgfQotICB9IHdoaWxlICggKGxlbikgJiYgKHJ2ID09IEdfSU9fU1RBVFVTX05PUk1BTCkgKTsKKyAgfSB3aGlsZSgobGVuKSAmJiAocnYgPT0gR19JT19TVEFUVVNfTk9STUFMKSk7CiAgIHJldHVybiBUUlVFOwogfQogCi0KLQotCiBpbnQgaW5pdF9maWZvKHZvaWQpCiB7Ci0gc3RydWN0IHN0YXQgc3Q7Ci0gY29uc3QgY2hhciAqZmlmbyA9ICJoaXBlci5maWZvIjsKLSBpbnQgc29ja2V0OworICBzdHJ1Y3Qgc3RhdCBzdDsKKyAgY29uc3QgY2hhciAqZmlmbyA9ICJoaXBlci5maWZvIjsKKyAgaW50IHNvY2tldDsKIAotIGlmIChsc3RhdCAoZmlmbywgJnN0KSA9PSAwKSB7Ci0gIGlmICgoc3Quc3RfbW9kZSAmIFNfSUZNVCkgPT0gU19JRlJFRykgewotICAgZXJybm8gPSBFRVhJU1Q7Ci0gICBwZXJyb3IoImxzdGF0Iik7Ci0gICBleGl0ICgxKTsKKyAgaWYobHN0YXQgKGZpZm8sICZzdCkgPT0gMCkgeworICAgIGlmKChzdC5zdF9tb2RlICYgU19JRk1UKSA9PSBTX0lGUkVHKSB7CisgICAgICBlcnJubyA9IEVFWElTVDsKKyAgICAgIHBlcnJvcigibHN0YXQiKTsKKyAgICAgIGV4aXQgKDEpOworICAgIH0KICAgfQotIH0KIAotIHVubGluayAoZmlmbyk7Ci0gaWYgKG1rZmlmbyAoZmlmbywgMDYwMCkgPT0gLTEpIHsKLSAgcGVycm9yKCJta2ZpZm8iKTsKLSAgZXhpdCAoMSk7Ci0gfQorICB1bmxpbmsgKGZpZm8pOworICBpZihta2ZpZm8gKGZpZm8sIDA2MDApID09IC0xKSB7CisgICAgcGVycm9yKCJta2ZpZm8iKTsKKyAgICBleGl0ICgxKTsKKyAgfQogCi0gc29ja2V0ID0gb3BlbiAoZmlmbywgT19SRFdSIHwgT19OT05CTE9DSywgMCk7CisgIHNvY2tldCA9IG9wZW4gKGZpZm8sIE9fUkRXUiB8IE9fTk9OQkxPQ0ssIDApOwogCi0gaWYgKHNvY2tldCA9PSAtMSkgewotICBwZXJyb3IoIm9wZW4iKTsKLSAgZXhpdCAoMSk7Ci0gfQotIE1TR19PVVQoIk5vdywgcGlwZSBzb21lIFVSTCdzIGludG8gPiAlc1xuIiwgZmlmbyk7CisgIGlmKHNvY2tldCA9PSAtMSkgeworICAgIHBlcnJvcigib3BlbiIpOworICAgIGV4aXQgKDEpOworICB9CisgIE1TR19PVVQoIk5vdywgcGlwZSBzb21lIFVSTCdzIGludG8gPiAlc1xuIiwgZmlmbyk7CiAKLSByZXR1cm4gc29ja2V0OwotCisgIHJldHVybiBzb2NrZXQ7CiB9CiAKLQotCi0KIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIHsKICAgR2xvYmFsSW5mbyAqZzsKQEAgLTQzNCw4ICs0MTAsOCBAQAogCiAgIGZkPWluaXRfZmlmbygpOwogICBjaD1nX2lvX2NoYW5uZWxfdW5peF9uZXcoZmQpOwotICBnX2lvX2FkZF93YXRjaChjaCxHX0lPX0lOLGZpZm9fY2IsZyk7Ci0gIGdtYWluPWdfbWFpbl9sb29wX25ldyhOVUxMLEZBTFNFKTsKKyAgZ19pb19hZGRfd2F0Y2goY2gsIEdfSU9fSU4sIGZpZm9fY2IsIGcpOworICBnbWFpbj1nX21haW5fbG9vcF9uZXcoTlVMTCwgRkFMU0UpOwogICBnLT5tdWx0aSA9IGN1cmxfbXVsdGlfaW5pdCgpOwogICBjdXJsX211bHRpX3NldG9wdChnLT5tdWx0aSwgQ1VSTE1PUFRfU09DS0VURlVOQ1RJT04sIHNvY2tfY2IpOwogICBjdXJsX211bHRpX3NldG9wdChnLT5tdWx0aSwgQ1VSTE1PUFRfU09DS0VUREFUQSwgZyk7CmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL2hpcGVyZmlmby5jIGIvZG9jcy9leGFtcGxlcy9oaXBlcmZpZm8uYwppbmRleCA4NDAzNWFhLi45OGJjYWZlIDEwMDY0NAotLS0gYS9kb2NzL2V4YW1wbGVzL2hpcGVyZmlmby5jCisrKyBiL2RvY3MvZXhhbXBsZXMvaGlwZXJmaWZvLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0xOSw2ICsxOSwxMCBAQAogICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogPERFU0M+CisgKiBtdWx0aSBzb2NrZXQgQVBJIHVzYWdlIHdpdGggbGliZXZlbnQgMgorICogPC9ERVNDPgorICovCiAvKiBFeGFtcGxlIGFwcGxpY2F0aW9uIHNvdXJjZSBjb2RlIHVzaW5nIHRoZSBtdWx0aSBzb2NrZXQgaW50ZXJmYWNlIHRvCiAgICBkb3dubG9hZCBtYW55IGZpbGVzIGF0IG9uY2UuCiAKQEAgLTEyMiw3ICsxMjYsNyBAQAogLyogRGllIGlmIHdlIGdldCBhIGJhZCBDVVJMTWNvZGUgc29tZXdoZXJlICovCiBzdGF0aWMgdm9pZCBtY29kZV9vcl9kaWUoY29uc3QgY2hhciAqd2hlcmUsIENVUkxNY29kZSBjb2RlKQogewotICBpZiAoIENVUkxNX09LICE9IGNvZGUgKSB7CisgIGlmKENVUkxNX09LICE9IGNvZGUpIHsKICAgICBjb25zdCBjaGFyICpzOwogICAgIHN3aXRjaCAoY29kZSkgewogICAgICAgY2FzZSAgICAgQ1VSTE1fQkFEX0hBTkRMRTogICAgICAgICBzPSJDVVJMTV9CQURfSEFORExFIjsgICAgICAgICBicmVhazsKQEAgLTE1Niw4ICsxNjAsOCBAQAogICBDVVJMY29kZSByZXM7CiAKICAgZnByaW50ZihNU0dfT1VULCAiUkVNQUlOSU5HOiAlZFxuIiwgZy0+c3RpbGxfcnVubmluZyk7Ci0gIHdoaWxlICgobXNnID0gY3VybF9tdWx0aV9pbmZvX3JlYWQoZy0+bXVsdGksICZtc2dzX2xlZnQpKSkgewotICAgIGlmIChtc2ctPm1zZyA9PSBDVVJMTVNHX0RPTkUpIHsKKyAgd2hpbGUoKG1zZyA9IGN1cmxfbXVsdGlfaW5mb19yZWFkKGctPm11bHRpLCAmbXNnc19sZWZ0KSkpIHsKKyAgICBpZihtc2ctPm1zZyA9PSBDVVJMTVNHX0RPTkUpIHsKICAgICAgIGVhc3kgPSBtc2ctPmVhc3lfaGFuZGxlOwogICAgICAgcmVzID0gbXNnLT5kYXRhLnJlc3VsdDsKICAgICAgIGN1cmxfZWFzeV9nZXRpbmZvKGVhc3ksIENVUkxJTkZPX1BSSVZBVEUsICZjb25uKTsKQEAgLTE4Nyw5ICsxOTEsOSBAQAogICBtY29kZV9vcl9kaWUoImV2ZW50X2NiOiBjdXJsX211bHRpX3NvY2tldF9hY3Rpb24iLCByYyk7CiAKICAgY2hlY2tfbXVsdGlfaW5mbyhnKTsKLSAgaWYgKCBnLT5zdGlsbF9ydW5uaW5nIDw9IDAgKSB7CisgIGlmKGctPnN0aWxsX3J1bm5pbmcgPD0gMCkgewogICAgIGZwcmludGYoTVNHX09VVCwgImxhc3QgdHJhbnNmZXIgZG9uZSwga2lsbCB0aW1lb3V0XG4iKTsKLSAgICBpZiAoZXZ0aW1lcl9wZW5kaW5nKGctPnRpbWVyX2V2ZW50LCBOVUxMKSkgeworICAgIGlmKGV2dGltZXJfcGVuZGluZyhnLT50aW1lcl9ldmVudCwgTlVMTCkpIHsKICAgICAgIGV2dGltZXJfZGVsKGctPnRpbWVyX2V2ZW50KTsKICAgICB9CiAgIH0KQEAgLTIxNiw4ICsyMjAsOCBAQAogLyogQ2xlYW4gdXAgdGhlIFNvY2tJbmZvIHN0cnVjdHVyZSAqLwogc3RhdGljIHZvaWQgcmVtc29jayhTb2NrSW5mbyAqZikKIHsKLSAgaWYgKGYpIHsKLSAgICBpZiAoZi0+ZXZzZXQpCisgIGlmKGYpIHsKKyAgICBpZihmLT5ldnNldCkKICAgICAgIGV2ZW50X2ZyZWUoZi0+ZXYpOwogICAgIGZyZWUoZik7CiAgIH0KQEAgLTIzNCw3ICsyMzgsNyBAQAogICBmLT5zb2NrZmQgPSBzOwogICBmLT5hY3Rpb24gPSBhY3Q7CiAgIGYtPmVhc3kgPSBlOwotICBpZiAoZi0+ZXZzZXQpCisgIGlmKGYtPmV2c2V0KQogICAgIGV2ZW50X2ZyZWUoZi0+ZXYpOwogICBmLT5ldiA9IGV2ZW50X25ldyhnLT5ldmJhc2UsIGYtPnNvY2tmZCwga2luZCwgZXZlbnRfY2IsIGcpOwogICBmLT5ldnNldCA9IDE7CkBAIC0yNjIsMTIgKzI2NiwxMiBAQAogCiAgIGZwcmludGYoTVNHX09VVCwKICAgICAgICAgICAic29ja2V0IGNhbGxiYWNrOiBzPSVkIGU9JXAgd2hhdD0lcyAiLCBzLCBlLCB3aGF0c3RyW3doYXRdKTsKLSAgaWYgKHdoYXQgPT0gQ1VSTF9QT0xMX1JFTU9WRSkgeworICBpZih3aGF0ID09IENVUkxfUE9MTF9SRU1PVkUpIHsKICAgICBmcHJpbnRmKE1TR19PVVQsICJcbiIpOwogICAgIHJlbXNvY2soZmRwKTsKICAgfQogICBlbHNlIHsKLSAgICBpZiAoIWZkcCkgeworICAgIGlmKCFmZHApIHsKICAgICAgIGZwcmludGYoTVNHX09VVCwgIkFkZGluZyBkYXRhOiAlc1xuIiwgd2hhdHN0clt3aGF0XSk7CiAgICAgICBhZGRzb2NrKHMsIGUsIHdoYXQsIGcpOwogICAgIH0KQEAgLTMwOCw3ICszMTIsNyBAQAogCiAKIC8qIENyZWF0ZSBhIG5ldyBlYXN5IGhhbmRsZSwgYW5kIGFkZCBpdCB0byB0aGUgZ2xvYmFsIGN1cmxfbXVsdGkgKi8KLXN0YXRpYyB2b2lkIG5ld19jb25uKGNoYXIgKnVybCwgR2xvYmFsSW5mbyAqZyApCitzdGF0aWMgdm9pZCBuZXdfY29ubihjaGFyICp1cmwsIEdsb2JhbEluZm8gKmcpCiB7CiAgIENvbm5JbmZvICpjb25uOwogICBDVVJMTWNvZGUgcmM7CkBAIC0zMTgsNyArMzIyLDcgQEAKICAgY29ubi0+ZXJyb3JbMF09J1wwJzsKIAogICBjb25uLT5lYXN5ID0gY3VybF9lYXN5X2luaXQoKTsKLSAgaWYgKCFjb25uLT5lYXN5KSB7CisgIGlmKCFjb25uLT5lYXN5KSB7CiAgICAgZnByaW50ZihNU0dfT1VULCAiY3VybF9lYXN5X2luaXQoKSBmYWlsZWQsIGV4aXRpbmchXG4iKTsKICAgICBleGl0KDIpOwogICB9CkBAIC0zMjYsNyArMzMwLDcgQEAKICAgY29ubi0+dXJsID0gc3RyZHVwKHVybCk7CiAgIGN1cmxfZWFzeV9zZXRvcHQoY29ubi0+ZWFzeSwgQ1VSTE9QVF9VUkwsIGNvbm4tPnVybCk7CiAgIGN1cmxfZWFzeV9zZXRvcHQoY29ubi0+ZWFzeSwgQ1VSTE9QVF9XUklURUZVTkNUSU9OLCB3cml0ZV9jYik7Ci0gIGN1cmxfZWFzeV9zZXRvcHQoY29ubi0+ZWFzeSwgQ1VSTE9QVF9XUklURURBVEEsICZjb25uKTsKKyAgY3VybF9lYXN5X3NldG9wdChjb25uLT5lYXN5LCBDVVJMT1BUX1dSSVRFREFUQSwgY29ubik7CiAgIGN1cmxfZWFzeV9zZXRvcHQoY29ubi0+ZWFzeSwgQ1VSTE9QVF9WRVJCT1NFLCAxTCk7CiAgIGN1cmxfZWFzeV9zZXRvcHQoY29ubi0+ZWFzeSwgQ1VSTE9QVF9FUlJPUkJVRkZFUiwgY29ubi0+ZXJyb3IpOwogICBjdXJsX2Vhc3lfc2V0b3B0KGNvbm4tPmVhc3ksIENVUkxPUFRfUFJJVkFURSwgY29ubik7CkBAIC0zNTYsMTAgKzM2MCwxMiBAQAogICAgIHNbMF09J1wwJzsKICAgICBydj1mc2NhbmYoZy0+aW5wdXQsICIlMTAyM3MlbiIsIHMsICZuKTsKICAgICBzW25dPSdcMCc7Ci0gICAgaWYgKCBuICYmIHNbMF0gKSB7Ci0gICAgICBuZXdfY29ubihzLGFyZyk7ICAvKiBpZiB3ZSByZWFkIGEgVVJMLCBnbyBnZXQgaXQhICovCi0gICAgfSBlbHNlIGJyZWFrOwotICB9IHdoaWxlICggcnYgIT0gRU9GKTsKKyAgICBpZihuICYmIHNbMF0pIHsKKyAgICAgIG5ld19jb25uKHMsIGFyZyk7ICAvKiBpZiB3ZSByZWFkIGEgVVJMLCBnbyBnZXQgaXQhICovCisgICAgfQorICAgIGVsc2UKKyAgICAgIGJyZWFrOworICB9IHdoaWxlKHJ2ICE9IEVPRik7CiB9CiAKIC8qIENyZWF0ZSBhIG5hbWVkIHBpcGUgYW5kIHRlbGwgbGliZXZlbnQgdG8gbW9uaXRvciBpdCAqLwpAQCAtMzcwLDIwICszNzYsMjAgQEAKICAgY3VybF9zb2NrZXRfdCBzb2NrZmQ7CiAKICAgZnByaW50ZihNU0dfT1VULCAiQ3JlYXRpbmcgbmFtZWQgcGlwZSBcIiVzXCJcbiIsIGZpZm8pOwotICBpZiAobHN0YXQgKGZpZm8sICZzdCkgPT0gMCkgewotICAgIGlmICgoc3Quc3RfbW9kZSAmIFNfSUZNVCkgPT0gU19JRlJFRykgeworICBpZihsc3RhdCAoZmlmbywgJnN0KSA9PSAwKSB7CisgICAgaWYoKHN0LnN0X21vZGUgJiBTX0lGTVQpID09IFNfSUZSRUcpIHsKICAgICAgIGVycm5vID0gRUVYSVNUOwogICAgICAgcGVycm9yKCJsc3RhdCIpOwogICAgICAgZXhpdCAoMSk7CiAgICAgfQogICB9CiAgIHVubGluayhmaWZvKTsKLSAgaWYgKG1rZmlmbyAoZmlmbywgMDYwMCkgPT0gLTEpIHsKKyAgaWYobWtmaWZvIChmaWZvLCAwNjAwKSA9PSAtMSkgewogICAgIHBlcnJvcigibWtmaWZvIik7CiAgICAgZXhpdCAoMSk7CiAgIH0KICAgc29ja2ZkID0gb3BlbihmaWZvLCBPX1JEV1IgfCBPX05PTkJMT0NLLCAwKTsKLSAgaWYgKHNvY2tmZCA9PSAtMSkgeworICBpZihzb2NrZmQgPT0gLTEpIHsKICAgICBwZXJyb3IoIm9wZW4iKTsKICAgICBleGl0ICgxKTsKICAgfQpkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy9ocmVmX2V4dHJhY3Rvci5jIGIvZG9jcy9leGFtcGxlcy9ocmVmX2V4dHJhY3Rvci5jCmluZGV4IGMxMTMyNWQuLjE2ZjUwYzAgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvaHJlZl9leHRyYWN0b3IuYworKysgYi9kb2NzL2V4YW1wbGVzL2hyZWZfZXh0cmFjdG9yLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTIwLDEzICsyMCwxMyBAQAogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKKy8qIDxERVNDPgorICogVXNlcyB0aGUgIlN0cmVhbWluZyBIVE1MIHBhcnNlciIgdG8gZXh0cmFjdCB0aGUgaHJlZiBwaWVjZXMgaW4gYSBzdHJlYW1pbmcKKyAqIG1hbm5lciBmcm9tIGEgZG93bmxvYWRlZCBIVE1MLgorICogPC9ERVNDPgorICovCiAvKgotICogVGhpcyBleGFtcGxlIHVzZXMgdGhlICJTdHJlYW1pbmcgSFRNTCBwYXJzZXIiIHRvIGV4dHJhY3QgdGhlIGhyZWYgcGllY2VzIGluCi0gKiBhIHN0cmVhbWluZyBtYW5uZXIgZnJvbSBhIGRvd25sb2FkZWQgSFRNTC4gS2luZGx5IGRvbmF0ZWQgYnkgTWljaGHFggotICogS293YWxjenlrLgotICoKLSAqIFRoZSBwYXJzZXIgaXMgZm91bmQgYXQKLSAqIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9odG1sc3RyZWFtcGFyc2VyLworICogVGhlIEhUTUwgcGFyc2VyIGlzIGZvdW5kIGF0IGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9odG1sc3RyZWFtcGFyc2VyLwogICovCiAKICNpbmNsdWRlIDxzdGRpby5oPgpAQCAtMzgsMTEgKzM4LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmhzcCkKIHsKICAgc2l6ZV90IHJlYWxzaXplID0gc2l6ZSAqIG5tZW1iLCBwOwotICBmb3IgKHAgPSAwOyBwIDwgcmVhbHNpemU7IHArKykgeworICBmb3IocCA9IDA7IHAgPCByZWFsc2l6ZTsgcCsrKSB7CiAgICAgaHRtbF9wYXJzZXJfY2hhcl9wYXJzZShoc3AsICgoY2hhciAqKWJ1ZmZlcilbcF0pOwotICAgIGlmIChodG1sX3BhcnNlcl9jbXBfdGFnKGhzcCwgImEiLCAxKSkKLSAgICAgIGlmIChodG1sX3BhcnNlcl9jbXBfYXR0cihoc3AsICJocmVmIiwgNCkpCi0gICAgICAgIGlmIChodG1sX3BhcnNlcl9pc19pbihoc3AsIEhUTUxfVkFMVUVfRU5ERUQpKSB7CisgICAgaWYoaHRtbF9wYXJzZXJfY21wX3RhZyhoc3AsICJhIiwgMSkpCisgICAgICBpZihodG1sX3BhcnNlcl9jbXBfYXR0cihoc3AsICJocmVmIiwgNCkpCisgICAgICAgIGlmKGh0bWxfcGFyc2VyX2lzX2luKGhzcCwgSFRNTF9WQUxVRV9FTkRFRCkpIHsKICAgICAgICAgICBodG1sX3BhcnNlcl92YWwoaHNwKVtodG1sX3BhcnNlcl92YWxfbGVuZ3RoKGhzcCldID0gJ1wwJzsKICAgICAgICAgICBwcmludGYoIiVzXG4iLCBodG1sX3BhcnNlcl92YWwoaHNwKSk7CiAgICAgICAgIH0KQEAgLTU2LDcgKzU2LDcgQEAKICAgQ1VSTCAqY3VybDsKICAgSFRNTFNUUkVBTVBBUlNFUiAqaHNwOwogCi0gIGlmIChhcmdjICE9IDIpIHsKKyAgaWYoYXJnYyAhPSAyKSB7CiAgICAgcHJpbnRmKCJVc2FnZTogJXMgVVJMXG4iLCBhcmd2WzBdKTsKICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICB9CmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL2h0bWx0aWR5LmMgYi9kb2NzL2V4YW1wbGVzL2h0bWx0aWR5LmMKaW5kZXggYTM2ZTMzMS4uNjg3ZTNmMyAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9odG1sdGlkeS5jCisrKyBiL2RvY3MvZXhhbXBsZXMvaHRtbHRpZHkuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTEsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDEzICsxOSwxMiBAQAogICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyogRG93bmxvYWQgYSBkb2N1bWVudCBhbmQgdXNlIGxpYnRpZHkgdG8gcGFyc2UgdGhlIEhUTUwuCi0gKiBXcml0dGVuIGJ5IEplZmYgUG9obG1leWVyCi0gKgorLyogPERFU0M+CisgKiBEb3dubG9hZCBhIGRvY3VtZW50IGFuZCB1c2UgbGlidGlkeSB0byBwYXJzZSB0aGUgSFRNTC4KKyAqIDwvREVTQz4KKyAqLworLyoKICAqIExpYlRpZHkgPT4gaHR0cDovL3RpZHkuc291cmNlZm9yZ2UubmV0Ci0gKgotICogZ2NjIC1XYWxsIC1JL3Vzci9sb2NhbC9pbmNsdWRlIHRpZHljdXJsLmMgLWxjdXJsIC1sdGlkeSAtbyB0aWR5Y3VybAotICoKICAqLwogCiAjaW5jbHVkZSA8c3RkaW8uaD4KQEAgLTM4LDI5ICszNywyNyBAQAogewogICB1aW50IHI7CiAgIHIgPSBzaXplICogbm1lbWI7Ci0gIHRpZHlCdWZBcHBlbmQoIG91dCwgaW4sIHIgKTsKLSAgcmV0dXJuKHIpOworICB0aWR5QnVmQXBwZW5kKG91dCwgaW4sIHIpOworICByZXR1cm4gcjsKIH0KIAogLyogVHJhdmVyc2UgdGhlIGRvY3VtZW50IHRyZWUgKi8KLXZvaWQgZHVtcE5vZGUoVGlkeURvYyBkb2MsIFRpZHlOb2RlIHRub2QsIGludCBpbmRlbnQgKQordm9pZCBkdW1wTm9kZShUaWR5RG9jIGRvYywgVGlkeU5vZGUgdG5vZCwgaW50IGluZGVudCkKIHsKICAgVGlkeU5vZGUgY2hpbGQ7Ci0gIGZvciAoIGNoaWxkID0gdGlkeUdldENoaWxkKHRub2QpOyBjaGlsZDsgY2hpbGQgPSB0aWR5R2V0TmV4dChjaGlsZCkgKQotICB7Ci0gICAgY3RtYnN0ciBuYW1lID0gdGlkeU5vZGVHZXROYW1lKCBjaGlsZCApOwotICAgIGlmICggbmFtZSApCi0gICAgeworICBmb3IoY2hpbGQgPSB0aWR5R2V0Q2hpbGQodG5vZCk7IGNoaWxkOyBjaGlsZCA9IHRpZHlHZXROZXh0KGNoaWxkKSApIHsKKyAgICBjdG1ic3RyIG5hbWUgPSB0aWR5Tm9kZUdldE5hbWUoY2hpbGQpOworICAgIGlmKG5hbWUpIHsKICAgICAgIC8qIGlmIGl0IGhhcyBhIG5hbWUsIHRoZW4gaXQncyBhbiBIVE1MIHRhZyAuLi4gKi8KICAgICAgIFRpZHlBdHRyIGF0dHI7Ci0gICAgICBwcmludGYoICIlKi4qcyVzICIsIGluZGVudCwgaW5kZW50LCAiPCIsIG5hbWUpOworICAgICAgcHJpbnRmKCIlKi4qcyVzICIsIGluZGVudCwgaW5kZW50LCAiPCIsIG5hbWUpOwogICAgICAgLyogd2FsayB0aGUgYXR0cmlidXRlIGxpc3QgKi8KLSAgICAgIGZvciAoIGF0dHI9dGlkeUF0dHJGaXJzdChjaGlsZCk7IGF0dHI7IGF0dHI9dGlkeUF0dHJOZXh0KGF0dHIpICkgeworICAgICAgZm9yKGF0dHI9dGlkeUF0dHJGaXJzdChjaGlsZCk7IGF0dHI7IGF0dHI9dGlkeUF0dHJOZXh0KGF0dHIpICkgewogICAgICAgICBwcmludGYodGlkeUF0dHJOYW1lKGF0dHIpKTsKICAgICAgICAgdGlkeUF0dHJWYWx1ZShhdHRyKT9wcmludGYoIj1cIiVzXCIgIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlkeUF0dHJWYWx1ZShhdHRyKSk6cHJpbnRmKCIgIik7CiAgICAgICB9Ci0gICAgICBwcmludGYoICI+XG4iKTsKKyAgICAgIHByaW50ZigiPlxuIik7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgLyogaWYgaXQgZG9lc24ndCBoYXZlIGEgbmFtZSwgdGhlbiBpdCdzIHByb2JhYmx5IHRleHQsIGNkYXRhLCBldGMuLi4gKi8KQEAgLTcwLDEyICs2NywxMiBAQAogICAgICAgcHJpbnRmKCIlKi4qc1xuIiwgaW5kZW50LCBpbmRlbnQsIGJ1Zi5icD8oY2hhciAqKWJ1Zi5icDoiIik7CiAgICAgICB0aWR5QnVmRnJlZSgmYnVmKTsKICAgICB9Ci0gICAgZHVtcE5vZGUoIGRvYywgY2hpbGQsIGluZGVudCArIDQgKTsgLyogcmVjdXJzaXZlICovCisgICAgZHVtcE5vZGUoZG9jLCBjaGlsZCwgaW5kZW50ICsgNCk7IC8qIHJlY3Vyc2l2ZSAqLwogICB9CiB9CiAKIAotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2ICkKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIHsKICAgQ1VSTCAqY3VybDsKICAgY2hhciBjdXJsX2VycmJ1ZltDVVJMX0VSUk9SX1NJWkVdOwpAQCAtODMsNyArODAsNyBAQAogICBUaWR5QnVmZmVyIGRvY2J1ZiA9IHswfTsKICAgVGlkeUJ1ZmZlciB0aWR5X2VycmJ1ZiA9IHswfTsKICAgaW50IGVycjsKLSAgaWYgKCBhcmdjID09IDIpIHsKKyAgaWYoYXJnYyA9PSAyKSB7CiAgICAgY3VybCA9IGN1cmxfZWFzeV9pbml0KCk7CiAgICAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1VSTCwgYXJndlsxXSk7CiAgICAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX0VSUk9SQlVGRkVSLCBjdXJsX2VycmJ1Zik7CkBAIC05NCwxOSArOTEsMTkgQEAKICAgICB0ZG9jID0gdGlkeUNyZWF0ZSgpOwogICAgIHRpZHlPcHRTZXRCb29sKHRkb2MsIFRpZHlGb3JjZU91dHB1dCwgeWVzKTsgLyogdHJ5IGhhcmRlciAqLwogICAgIHRpZHlPcHRTZXRJbnQodGRvYywgVGlkeVdyYXBMZW4sIDQwOTYpOwotICAgIHRpZHlTZXRFcnJvckJ1ZmZlciggdGRvYywgJnRpZHlfZXJyYnVmICk7CisgICAgdGlkeVNldEVycm9yQnVmZmVyKHRkb2MsICZ0aWR5X2VycmJ1Zik7CiAgICAgdGlkeUJ1ZkluaXQoJmRvY2J1Zik7CiAKICAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfV1JJVEVEQVRBLCAmZG9jYnVmKTsKICAgICBlcnI9Y3VybF9lYXN5X3BlcmZvcm0oY3VybCk7Ci0gICAgaWYgKCAhZXJyICkgeworICAgIGlmKCFlcnIpIHsKICAgICAgIGVyciA9IHRpZHlQYXJzZUJ1ZmZlcih0ZG9jLCAmZG9jYnVmKTsgLyogcGFyc2UgdGhlIGlucHV0ICovCi0gICAgICBpZiAoIGVyciA+PSAwICkgeworICAgICAgaWYoZXJyID49IDApIHsKICAgICAgICAgZXJyID0gdGlkeUNsZWFuQW5kUmVwYWlyKHRkb2MpOyAvKiBmaXggYW55IHByb2JsZW1zICovCi0gICAgICAgIGlmICggZXJyID49IDAgKSB7CisgICAgICAgIGlmKGVyciA+PSAwKSB7CiAgICAgICAgICAgZXJyID0gdGlkeVJ1bkRpYWdub3N0aWNzKHRkb2MpOyAvKiBsb2FkIHRpZHkgZXJyb3IgYnVmZmVyICovCi0gICAgICAgICAgaWYgKCBlcnIgPj0gMCApIHsKLSAgICAgICAgICAgIGR1bXBOb2RlKCB0ZG9jLCB0aWR5R2V0Um9vdCh0ZG9jKSwgMCApOyAvKiB3YWxrIHRoZSB0cmVlICovCisgICAgICAgICAgaWYoZXJyID49IDApIHsKKyAgICAgICAgICAgIGR1bXBOb2RlKHRkb2MsIHRpZHlHZXRSb290KHRkb2MpLCAwKTsgLyogd2FsayB0aGUgdHJlZSAqLwogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlc1xuIiwgdGlkeV9lcnJidWYuYnApOyAvKiBzaG93IGVycm9ycyAqLwogICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTIwLDExICsxMTcsMTEgQEAKICAgICB0aWR5QnVmRnJlZSgmZG9jYnVmKTsKICAgICB0aWR5QnVmRnJlZSgmdGlkeV9lcnJidWYpOwogICAgIHRpZHlSZWxlYXNlKHRkb2MpOwotICAgIHJldHVybihlcnIpOworICAgIHJldHVybiBlcnI7CiAKICAgfQogICBlbHNlCi0gICAgcHJpbnRmKCAidXNhZ2U6ICVzIDx1cmw+XG4iLCBhcmd2WzBdICk7CisgICAgcHJpbnRmKCJ1c2FnZTogJXMgPHVybD5cbiIsIGFyZ3ZbMF0pOwogCi0gIHJldHVybigwKTsKKyAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL2h0bWx0aXRsZS5jcHAgYi9kb2NzL2V4YW1wbGVzL2h0bWx0aXRsZS5jcHAKaW5kZXggYWI4OWJiNi4uNWU2YjRhMCAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9odG1sdGl0bGUuY3BwCisrKyBiL2RvY3MvZXhhbXBsZXMvaHRtbHRpdGxlLmNwcApAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTEsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDggKzE5LDEwIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vLyBHZXQgYSB3ZWIgcGFnZSwgcGFyc2UgaXQgd2l0aCBsaWJ4bWwuCi0vLworLyogPERFU0M+CisgKiBHZXQgYSB3ZWIgcGFnZSwgZXh0cmFjdCB0aGUgdGl0bGUgd2l0aCBsaWJ4bWwuCisgKiA8L0RFU0M+CisgKi8KIC8vIFdyaXR0ZW4gYnkgTGFycyBOaWxzc29uCiAvLwogLy8gR05VIEMrKyBjb21waWxlIGNvbW1hbmQgbGluZSBzdWdnZXN0aW9uIChlZGl0IHBhdGhzIGFjY29yZGluZ2x5KToKQEAgLTQwLDcgKzQyLDcgQEAKIC8vCiAKICNpZmRlZiBfTVNDX1ZFUgotI2RlZmluZSBDT01QQVJFKGEsIGIpICghc3RyaWNtcCgoYSksIChiKSkpCisjZGVmaW5lIENPTVBBUkUoYSwgYikgKCFfc3RyaWNtcCgoYSksIChiKSkpCiAjZWxzZQogI2RlZmluZSBDT01QQVJFKGEsIGIpICghc3RyY2FzZWNtcCgoYSksIChiKSkpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvaHR0cC1wb3N0LmMgYi9kb2NzL2V4YW1wbGVzL2h0dHAtcG9zdC5jCmluZGV4IGYxOTc1YjEuLjAxNzU0NTIgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvaHR0cC1wb3N0LmMKKysrIGIvZG9jcy9leGFtcGxlcy9odHRwLXBvc3QuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTEsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDYgKzE5LDEwIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiA8REVTQz4KKyAqIHNpbXBsZSBIVFRQIFBPU1QgdXNpbmcgdGhlIGVhc3kgaW50ZXJmYWNlCisgKiA8L0RFU0M+CisgKi8KICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgogCmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL2h0dHAyLWRvd25sb2FkLmMgYi9kb2NzL2V4YW1wbGVzL2h0dHAyLWRvd25sb2FkLmMKaW5kZXggM2I3Y2E4MS4uOWU4N2EwNiAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9odHRwMi1kb3dubG9hZC5jCisrKyBiL2RvY3MvZXhhbXBsZXMvaHR0cDItZG93bmxvYWQuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDggKzE5LDEzIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiA8REVTQz4KKyAqIE11bHRpcGxleGVkIEhUVFAvMiBkb3dubG9hZHMgb3ZlciBhIHNpbmdsZSBjb25uZWN0aW9uCisgKiA8L0RFU0M+CisgKi8KICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgogCiAvKiBzb21ld2hhdCB1bml4LXNwZWNpZmljICovCiAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KQEAgLTg0LDE0ICs4OSwxNCBAQAogCiAgICAgZm9yKGMgPSAwOyAoYyA8IHdpZHRoKSAmJiAoaStjIDwgc2l6ZSk7IGMrKykgewogICAgICAgLyogY2hlY2sgZm9yIDBEMEE7IGlmIGZvdW5kLCBza2lwIHBhc3QgYW5kIHN0YXJ0IGEgbmV3IGxpbmUgb2Ygb3V0cHV0ICovCi0gICAgICBpZiAobm9oZXggJiYgKGkrYysxIDwgc2l6ZSkgJiYgcHRyW2krY109PTB4MEQgJiYgcHRyW2krYysxXT09MHgwQSkgeworICAgICAgaWYobm9oZXggJiYgKGkrYysxIDwgc2l6ZSkgJiYgcHRyW2krY109PTB4MEQgJiYgcHRyW2krYysxXT09MHgwQSkgewogICAgICAgICBpKz0oYysyLXdpZHRoKTsKICAgICAgICAgYnJlYWs7CiAgICAgICB9CiAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVjIiwKICAgICAgICAgICAgICAgKHB0cltpK2NdPj0weDIwKSAmJiAocHRyW2krY108MHg4MCk/cHRyW2krY106Jy4nKTsKICAgICAgIC8qIGNoZWNrIGFnYWluIGZvciAwRDBBLCB0byBhdm9pZCBhbiBleHRyYSBcbiBpZiBpdCdzIGF0IHdpZHRoICovCi0gICAgICBpZiAobm9oZXggJiYgKGkrYysyIDwgc2l6ZSkgJiYgcHRyW2krYysxXT09MHgwRCAmJiBwdHJbaStjKzJdPT0weDBBKSB7CisgICAgICBpZihub2hleCAmJiAoaStjKzIgPCBzaXplKSAmJiBwdHJbaStjKzFdPT0weDBEICYmIHB0cltpK2MrMl09PTB4MEEpIHsKICAgICAgICAgaSs9KGMrMy13aWR0aCk7CiAgICAgICAgIGJyZWFrOwogICAgICAgfQpAQCAtMTQ0LDcgKzE0OSw3IEBACiAgIEZJTEUgKm91dDsKICAgY2hhciBmaWxlbmFtZVsxMjhdOwogCi0gIHNwcmludGYoZmlsZW5hbWUsICJkbC0lZCIsIG51bSk7CisgIHNucHJpbnRmKGZpbGVuYW1lLCAxMjgsICJkbC0lZCIsIG51bSk7CiAKICAgb3V0ID0gZm9wZW4oZmlsZW5hbWUsICJ3YiIpOwogCkBAIC0yMzksOCArMjQ0LDcgQEAKICAgICAvKiBnZXQgZmlsZSBkZXNjcmlwdG9ycyBmcm9tIHRoZSB0cmFuc2ZlcnMgKi8KICAgICBtYyA9IGN1cmxfbXVsdGlfZmRzZXQobXVsdGlfaGFuZGxlLCAmZmRyZWFkLCAmZmR3cml0ZSwgJmZkZXhjZXAsICZtYXhmZCk7CiAKLSAgICBpZihtYyAhPSBDVVJMTV9PSykKLSAgICB7CisgICAgaWYobWMgIT0gQ1VSTE1fT0spIHsKICAgICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9tdWx0aV9mZHNldCgpIGZhaWxlZCwgY29kZSAlZC5cbiIsIG1jKTsKICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvaHR0cDItc2VydmVycHVzaC5jIGIvZG9jcy9leGFtcGxlcy9odHRwMi1zZXJ2ZXJwdXNoLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWE4YzY5YgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvZXhhbXBsZXMvaHR0cDItc2VydmVycHVzaC5jCkBAIC0wLDAgKzEsMzIwIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqCisgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiA8REVTQz4KKyAqIEhUVFAvMiBzZXJ2ZXIgcHVzaAorICogPC9ERVNDPgorICovCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworLyogc29tZXdoYXQgdW5peC1zcGVjaWZpYyAqLworI2luY2x1ZGUgPHN5cy90aW1lLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisKKy8qIGN1cmwgc3R1ZmYgKi8KKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKworI2lmbmRlZiBDVVJMUElQRV9NVUxUSVBMRVgKKyNlcnJvciAidG9vIG9sZCBsaWJjdXJsLCBjYW4ndCBkbyBIVFRQLzIgc2VydmVyIHB1c2ghIgorI2VuZGlmCisKK3N0YXRpYwordm9pZCBkdW1wKGNvbnN0IGNoYXIgKnRleHQsIHVuc2lnbmVkIGNoYXIgKnB0ciwgc2l6ZV90IHNpemUsCisgICAgICAgICAgY2hhciBub2hleCkKK3sKKyAgc2l6ZV90IGk7CisgIHNpemVfdCBjOworCisgIHVuc2lnbmVkIGludCB3aWR0aD0weDEwOworCisgIGlmKG5vaGV4KQorICAgIC8qIHdpdGhvdXQgdGhlIGhleCBvdXRwdXQsIHdlIGNhbiBmaXQgbW9yZSBvbiBzY3JlZW4gKi8KKyAgICB3aWR0aCA9IDB4NDA7CisKKyAgZnByaW50ZihzdGRlcnIsICIlcywgJWxkIGJ5dGVzICgweCVseClcbiIsCisgICAgICAgICAgdGV4dCwgKGxvbmcpc2l6ZSwgKGxvbmcpc2l6ZSk7CisKKyAgZm9yKGk9MDsgaTxzaXplOyBpKz0gd2lkdGgpIHsKKworICAgIGZwcmludGYoc3RkZXJyLCAiJTQuNGx4OiAiLCAobG9uZylpKTsKKworICAgIGlmKCFub2hleCkgeworICAgICAgLyogaGV4IG5vdCBkaXNhYmxlZCwgc2hvdyBpdCAqLworICAgICAgZm9yKGMgPSAwOyBjIDwgd2lkdGg7IGMrKykKKyAgICAgICAgaWYoaStjIDwgc2l6ZSkKKyAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiUwMnggIiwgcHRyW2krY10pOworICAgICAgICBlbHNlCisgICAgICAgICAgZnB1dHMoIiAgICIsIHN0ZGVycik7CisgICAgfQorCisgICAgZm9yKGMgPSAwOyAoYyA8IHdpZHRoKSAmJiAoaStjIDwgc2l6ZSk7IGMrKykgeworICAgICAgLyogY2hlY2sgZm9yIDBEMEE7IGlmIGZvdW5kLCBza2lwIHBhc3QgYW5kIHN0YXJ0IGEgbmV3IGxpbmUgb2Ygb3V0cHV0ICovCisgICAgICBpZihub2hleCAmJiAoaStjKzEgPCBzaXplKSAmJiBwdHJbaStjXT09MHgwRCAmJiBwdHJbaStjKzFdPT0weDBBKSB7CisgICAgICAgIGkrPShjKzItd2lkdGgpOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIGZwcmludGYoc3RkZXJyLCAiJWMiLAorICAgICAgICAgICAgICAocHRyW2krY10+PTB4MjApICYmIChwdHJbaStjXTwweDgwKT9wdHJbaStjXTonLicpOworICAgICAgLyogY2hlY2sgYWdhaW4gZm9yIDBEMEEsIHRvIGF2b2lkIGFuIGV4dHJhIFxuIGlmIGl0J3MgYXQgd2lkdGggKi8KKyAgICAgIGlmKG5vaGV4ICYmIChpK2MrMiA8IHNpemUpICYmIHB0cltpK2MrMV09PTB4MEQgJiYgcHRyW2krYysyXT09MHgwQSkgeworICAgICAgICBpKz0oYyszLXdpZHRoKTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgfQorICAgIGZwdXRjKCdcbicsIHN0ZGVycik7IC8qIG5ld2xpbmUgKi8KKyAgfQorfQorCitzdGF0aWMKK2ludCBteV90cmFjZShDVVJMICpoYW5kbGUsIGN1cmxfaW5mb3R5cGUgdHlwZSwKKyAgICAgICAgICAgICBjaGFyICpkYXRhLCBzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICB2b2lkICp1c2VycCkKK3sKKyAgY29uc3QgY2hhciAqdGV4dDsKKyAgKHZvaWQpaGFuZGxlOyAvKiBwcmV2ZW50IGNvbXBpbGVyIHdhcm5pbmcgKi8KKyAgKHZvaWQpdXNlcnA7CisgIHN3aXRjaCAodHlwZSkgeworICBjYXNlIENVUkxJTkZPX1RFWFQ6CisgICAgZnByaW50ZihzdGRlcnIsICI9PSBJbmZvOiAlcyIsIGRhdGEpOworICBkZWZhdWx0OiAvKiBpbiBjYXNlIGEgbmV3IG9uZSBpcyBpbnRyb2R1Y2VkIHRvIHNob2NrIHVzICovCisgICAgcmV0dXJuIDA7CisKKyAgY2FzZSBDVVJMSU5GT19IRUFERVJfT1VUOgorICAgIHRleHQgPSAiPT4gU2VuZCBoZWFkZXIiOworICAgIGJyZWFrOworICBjYXNlIENVUkxJTkZPX0RBVEFfT1VUOgorICAgIHRleHQgPSAiPT4gU2VuZCBkYXRhIjsKKyAgICBicmVhazsKKyAgY2FzZSBDVVJMSU5GT19TU0xfREFUQV9PVVQ6CisgICAgdGV4dCA9ICI9PiBTZW5kIFNTTCBkYXRhIjsKKyAgICBicmVhazsKKyAgY2FzZSBDVVJMSU5GT19IRUFERVJfSU46CisgICAgdGV4dCA9ICI8PSBSZWN2IGhlYWRlciI7CisgICAgYnJlYWs7CisgIGNhc2UgQ1VSTElORk9fREFUQV9JTjoKKyAgICB0ZXh0ID0gIjw9IFJlY3YgZGF0YSI7CisgICAgYnJlYWs7CisgIGNhc2UgQ1VSTElORk9fU1NMX0RBVEFfSU46CisgICAgdGV4dCA9ICI8PSBSZWN2IFNTTCBkYXRhIjsKKyAgICBicmVhazsKKyAgfQorCisgIGR1bXAodGV4dCwgKHVuc2lnbmVkIGNoYXIgKilkYXRhLCBzaXplLCAxKTsKKyAgcmV0dXJuIDA7Cit9CisKKyNkZWZpbmUgT1VUUFVURklMRSAiZGwiCisKK3N0YXRpYyB2b2lkIHNldHVwKENVUkwgKmhuZCkKK3sKKyAgRklMRSAqb3V0ID0gZm9wZW4oT1VUUFVURklMRSwgIndiIik7CisKKyAgLyogd3JpdGUgdG8gdGhpcyBmaWxlICovCisgIGN1cmxfZWFzeV9zZXRvcHQoaG5kLCBDVVJMT1BUX1dSSVRFREFUQSwgb3V0KTsKKworICAvKiBzZXQgdGhlIHNhbWUgVVJMICovCisgIGN1cmxfZWFzeV9zZXRvcHQoaG5kLCBDVVJMT1BUX1VSTCwgImh0dHBzOi8vbG9jYWxob3N0Ojg0NDMvaW5kZXguaHRtbCIpOworCisgIC8qIHNlbmQgaXQgdmVyYm9zZSBmb3IgbWF4IGRlYnVnZ2FpbGl0eSAqLworICBjdXJsX2Vhc3lfc2V0b3B0KGhuZCwgQ1VSTE9QVF9WRVJCT1NFLCAxTCk7CisgIGN1cmxfZWFzeV9zZXRvcHQoaG5kLCBDVVJMT1BUX0RFQlVHRlVOQ1RJT04sIG15X3RyYWNlKTsKKworICAvKiBIVFRQLzIgcGxlYXNlICovCisgIGN1cmxfZWFzeV9zZXRvcHQoaG5kLCBDVVJMT1BUX0hUVFBfVkVSU0lPTiwgQ1VSTF9IVFRQX1ZFUlNJT05fMl8wKTsKKworICAvKiB3ZSB1c2UgYSBzZWxmLXNpZ25lZCB0ZXN0IHNlcnZlciwgc2tpcCB2ZXJpZmljYXRpb24gZHVyaW5nIGRlYnVnZ2luZyAqLworICBjdXJsX2Vhc3lfc2V0b3B0KGhuZCwgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwgMEwpOworICBjdXJsX2Vhc3lfc2V0b3B0KGhuZCwgQ1VSTE9QVF9TU0xfVkVSSUZZSE9TVCwgMEwpOworCisjaWYgKENVUkxQSVBFX01VTFRJUExFWCA+IDApCisgIC8qIHdhaXQgZm9yIHBpcGUgY29ubmVjdGlvbiB0byBjb25maXJtICovCisgIGN1cmxfZWFzeV9zZXRvcHQoaG5kLCBDVVJMT1BUX1BJUEVXQUlULCAxTCk7CisjZW5kaWYKKworfQorCisvKiBjYWxsZWQgd2hlbiB0aGVyZSdzIGFuIGluY29taW5nIHB1c2ggKi8KK3N0YXRpYyBpbnQgc2VydmVyX3B1c2hfY2FsbGJhY2soQ1VSTCAqcGFyZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDVVJMICplYXN5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbnVtX2hlYWRlcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjdXJsX3B1c2hoZWFkZXJzICpoZWFkZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp1c2VycCkKK3sKKyAgY2hhciAqaGVhZHA7CisgIHNpemVfdCBpOworICBpbnQgKnRyYW5zZmVycyA9IChpbnQgKil1c2VycDsKKyAgY2hhciBmaWxlbmFtZVsxMjhdOworICBGSUxFICpvdXQ7CisgIHN0YXRpYyB1bnNpZ25lZCBpbnQgY291bnQgPSAwOworCisgICh2b2lkKXBhcmVudDsgLyogd2UgaGF2ZSBubyB1c2UgZm9yIHRoaXMgKi8KKworICBzbnByaW50ZihmaWxlbmFtZSwgMTI4LCAicHVzaCV1IiwgY291bnQrKyk7CisKKyAgLyogaGVyZSdzIGEgbmV3IHN0cmVhbSwgc2F2ZSBpdCBpbiBhIG5ldyBmaWxlIGZvciBlYWNoIG5ldyBwdXNoICovCisgIG91dCA9IGZvcGVuKGZpbGVuYW1lLCAid2IiKTsKKworICAvKiB3cml0ZSB0byB0aGlzIGZpbGUgKi8KKyAgY3VybF9lYXN5X3NldG9wdChlYXN5LCBDVVJMT1BUX1dSSVRFREFUQSwgb3V0KTsKKworICBmcHJpbnRmKHN0ZGVyciwgIioqKiogcHVzaCBjYWxsYmFjayBhcHByb3ZlcyBzdHJlYW0gJXUsIGdvdCAlZCBoZWFkZXJzIVxuIiwKKyAgICAgICAgICBjb3VudCwgKGludCludW1faGVhZGVycyk7CisKKyAgZm9yKGk9MDsgaTxudW1faGVhZGVyczsgaSsrKSB7CisgICAgaGVhZHAgPSBjdXJsX3B1c2hoZWFkZXJfYnludW0oaGVhZGVycywgaSk7CisgICAgZnByaW50ZihzdGRlcnIsICIqKioqIGhlYWRlciAldTogJXNcbiIsIChpbnQpaSwgaGVhZHApOworICB9CisKKyAgaGVhZHAgPSBjdXJsX3B1c2hoZWFkZXJfYnluYW1lKGhlYWRlcnMsICI6cGF0aCIpOworICBpZihoZWFkcCkgeworICAgIGZwcmludGYoc3RkZXJyLCAiKioqKiBUaGUgUEFUSCBpcyAlc1xuIiwgaGVhZHAgLyogc2tpcCA6cGF0aCArIGNvbG9uICovKTsKKyAgfQorCisgICgqdHJhbnNmZXJzKSsrOyAvKiBvbmUgbW9yZSAqLworICByZXR1cm4gQ1VSTF9QVVNIX09LOworfQorCisKKy8qCisgKiBEb3dubG9hZCBhIGZpbGUgb3ZlciBIVFRQLzIsIHRha2UgY2FyZSBvZiBzZXJ2ZXIgcHVzaC4KKyAqLworaW50IG1haW4odm9pZCkKK3sKKyAgQ1VSTCAqZWFzeTsKKyAgQ1VSTE0gKm11bHRpX2hhbmRsZTsKKyAgaW50IHN0aWxsX3J1bm5pbmc7IC8qIGtlZXAgbnVtYmVyIG9mIHJ1bm5pbmcgaGFuZGxlcyAqLworICBpbnQgdHJhbnNmZXJzPTE7IC8qIHdlIHN0YXJ0IHdpdGggb25lICovCisgIHN0cnVjdCBDVVJMTXNnICptOworCisgIC8qIGluaXQgYSBtdWx0aSBzdGFjayAqLworICBtdWx0aV9oYW5kbGUgPSBjdXJsX211bHRpX2luaXQoKTsKKworICBlYXN5ID0gY3VybF9lYXN5X2luaXQoKTsKKworICAvKiBzZXQgb3B0aW9ucyAqLworICBzZXR1cChlYXN5KTsKKworICAvKiBhZGQgdGhlIGVhc3kgdHJhbnNmZXIgKi8KKyAgY3VybF9tdWx0aV9hZGRfaGFuZGxlKG11bHRpX2hhbmRsZSwgZWFzeSk7CisKKyAgY3VybF9tdWx0aV9zZXRvcHQobXVsdGlfaGFuZGxlLCBDVVJMTU9QVF9QSVBFTElOSU5HLCBDVVJMUElQRV9NVUxUSVBMRVgpOworICBjdXJsX211bHRpX3NldG9wdChtdWx0aV9oYW5kbGUsIENVUkxNT1BUX1BVU0hGVU5DVElPTiwgc2VydmVyX3B1c2hfY2FsbGJhY2spOworICBjdXJsX211bHRpX3NldG9wdChtdWx0aV9oYW5kbGUsIENVUkxNT1BUX1BVU0hEQVRBLCAmdHJhbnNmZXJzKTsKKworICAvKiB3ZSBzdGFydCBzb21lIGFjdGlvbiBieSBjYWxsaW5nIHBlcmZvcm0gcmlnaHQgYXdheSAqLworICBjdXJsX211bHRpX3BlcmZvcm0obXVsdGlfaGFuZGxlLCAmc3RpbGxfcnVubmluZyk7CisKKyAgZG8geworICAgIHN0cnVjdCB0aW1ldmFsIHRpbWVvdXQ7CisgICAgaW50IHJjOyAvKiBzZWxlY3QoKSByZXR1cm4gY29kZSAqLworICAgIENVUkxNY29kZSBtYzsgLyogY3VybF9tdWx0aV9mZHNldCgpIHJldHVybiBjb2RlICovCisKKyAgICBmZF9zZXQgZmRyZWFkOworICAgIGZkX3NldCBmZHdyaXRlOworICAgIGZkX3NldCBmZGV4Y2VwOworICAgIGludCBtYXhmZCA9IC0xOworCisgICAgbG9uZyBjdXJsX3RpbWVvID0gLTE7CisKKyAgICBGRF9aRVJPKCZmZHJlYWQpOworICAgIEZEX1pFUk8oJmZkd3JpdGUpOworICAgIEZEX1pFUk8oJmZkZXhjZXApOworCisgICAgLyogc2V0IGEgc3VpdGFibGUgdGltZW91dCB0byBwbGF5IGFyb3VuZCB3aXRoICovCisgICAgdGltZW91dC50dl9zZWMgPSAxOworICAgIHRpbWVvdXQudHZfdXNlYyA9IDA7CisKKyAgICBjdXJsX211bHRpX3RpbWVvdXQobXVsdGlfaGFuZGxlLCAmY3VybF90aW1lbyk7CisgICAgaWYoY3VybF90aW1lbyA+PSAwKSB7CisgICAgICB0aW1lb3V0LnR2X3NlYyA9IGN1cmxfdGltZW8gLyAxMDAwOworICAgICAgaWYodGltZW91dC50dl9zZWMgPiAxKQorICAgICAgICB0aW1lb3V0LnR2X3NlYyA9IDE7CisgICAgICBlbHNlCisgICAgICAgIHRpbWVvdXQudHZfdXNlYyA9IChjdXJsX3RpbWVvICUgMTAwMCkgKiAxMDAwOworICAgIH0KKworICAgIC8qIGdldCBmaWxlIGRlc2NyaXB0b3JzIGZyb20gdGhlIHRyYW5zZmVycyAqLworICAgIG1jID0gY3VybF9tdWx0aV9mZHNldChtdWx0aV9oYW5kbGUsICZmZHJlYWQsICZmZHdyaXRlLCAmZmRleGNlcCwgJm1heGZkKTsKKworICAgIGlmKG1jICE9IENVUkxNX09LKSB7CisgICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfbXVsdGlfZmRzZXQoKSBmYWlsZWQsIGNvZGUgJWQuXG4iLCBtYyk7CisgICAgICBicmVhazsKKyAgICB9CisKKyAgICAvKiBPbiBzdWNjZXNzIHRoZSB2YWx1ZSBvZiBtYXhmZCBpcyBndWFyYW50ZWVkIHRvIGJlID49IC0xLiBXZSBjYWxsCisgICAgICAgc2VsZWN0KG1heGZkICsgMSwgLi4uKTsgc3BlY2lhbGx5IGluIGNhc2Ugb2YgKG1heGZkID09IC0xKSB0aGVyZSBhcmUKKyAgICAgICBubyBmZHMgcmVhZHkgeWV0IHNvIHdlIGNhbGwgc2VsZWN0KDAsIC4uLikgLS1vciBTbGVlcCgpIG9uIFdpbmRvd3MtLQorICAgICAgIHRvIHNsZWVwIDEwMG1zLCB3aGljaCBpcyB0aGUgbWluaW11bSBzdWdnZXN0ZWQgdmFsdWUgaW4gdGhlCisgICAgICAgY3VybF9tdWx0aV9mZHNldCgpIGRvYy4gKi8KKworICAgIGlmKG1heGZkID09IC0xKSB7CisjaWZkZWYgX1dJTjMyCisgICAgICBTbGVlcCgxMDApOworICAgICAgcmMgPSAwOworI2Vsc2UKKyAgICAgIC8qIFBvcnRhYmxlIHNsZWVwIGZvciBwbGF0Zm9ybXMgb3RoZXIgdGhhbiBXaW5kb3dzLiAqLworICAgICAgc3RydWN0IHRpbWV2YWwgd2FpdCA9IHsgMCwgMTAwICogMTAwMCB9OyAvKiAxMDBtcyAqLworICAgICAgcmMgPSBzZWxlY3QoMCwgTlVMTCwgTlVMTCwgTlVMTCwgJndhaXQpOworI2VuZGlmCisgICAgfQorICAgIGVsc2UgeworICAgICAgLyogTm90ZSB0aGF0IG9uIHNvbWUgcGxhdGZvcm1zICd0aW1lb3V0JyBtYXkgYmUgbW9kaWZpZWQgYnkgc2VsZWN0KCkuCisgICAgICAgICBJZiB5b3UgbmVlZCBhY2Nlc3MgdG8gdGhlIG9yaWdpbmFsIHZhbHVlIHNhdmUgYSBjb3B5IGJlZm9yZWhhbmQuICovCisgICAgICByYyA9IHNlbGVjdChtYXhmZCsxLCAmZmRyZWFkLCAmZmR3cml0ZSwgJmZkZXhjZXAsICZ0aW1lb3V0KTsKKyAgICB9CisKKyAgICBzd2l0Y2gocmMpIHsKKyAgICBjYXNlIC0xOgorICAgICAgLyogc2VsZWN0IGVycm9yICovCisgICAgICBicmVhazsKKyAgICBjYXNlIDA6CisgICAgZGVmYXVsdDoKKyAgICAgIC8qIHRpbWVvdXQgb3IgcmVhZGFibGUvd3JpdGFibGUgc29ja2V0cyAqLworICAgICAgY3VybF9tdWx0aV9wZXJmb3JtKG11bHRpX2hhbmRsZSwgJnN0aWxsX3J1bm5pbmcpOworICAgICAgYnJlYWs7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBBIGxpdHRsZSBjYXV0aW9uIHdoZW4gZG9pbmcgc2VydmVyIHB1c2ggaXMgdGhhdCBsaWJjdXJsIGl0c2VsZiBoYXMKKyAgICAgKiBjcmVhdGVkIGFuZCBhZGRlZCBvbmUgb3IgbW9yZSBlYXN5IGhhbmRsZXMgYnV0IHdlIG5lZWQgdG8gY2xlYW4gdGhlbSB1cAorICAgICAqIHdoZW4gd2UgYXJlIGRvbmUuCisgICAgICovCisKKyAgICBkbyB7CisgICAgICBpbnQgbXNncSA9IDA7OworICAgICAgbSA9IGN1cmxfbXVsdGlfaW5mb19yZWFkKG11bHRpX2hhbmRsZSwgJm1zZ3EpOworICAgICAgaWYobSAmJiAobS0+bXNnID09IENVUkxNU0dfRE9ORSkpIHsKKyAgICAgICAgQ1VSTCAqZSA9IG0tPmVhc3lfaGFuZGxlOworICAgICAgICB0cmFuc2ZlcnMtLTsKKyAgICAgICAgY3VybF9tdWx0aV9yZW1vdmVfaGFuZGxlKG11bHRpX2hhbmRsZSwgZSk7CisgICAgICAgIGN1cmxfZWFzeV9jbGVhbnVwKGUpOworICAgICAgfQorICAgIH0gd2hpbGUobSk7CisKKyAgfSB3aGlsZSh0cmFuc2ZlcnMpOyAvKiBhcyBsb25nIGFzIHdlIGhhdmUgdHJhbnNmZXJzIGdvaW5nICovCisKKyAgY3VybF9tdWx0aV9jbGVhbnVwKG11bHRpX2hhbmRsZSk7CisKKworICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvaHR0cDItdXBsb2FkLmMgYi9kb2NzL2V4YW1wbGVzL2h0dHAyLXVwbG9hZC5jCmluZGV4IGJjYTE2YzAuLmI2MzUzNzEgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvaHR0cDItdXBsb2FkLmMKKysrIGIvZG9jcy9leGFtcGxlcy9odHRwMi11cGxvYWQuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDggKzE5LDEzIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiA8REVTQz4KKyAqIE11bHRpcGxleGVkIEhUVFAvMiB1cGxvYWRzIG92ZXIgYSBzaW5nbGUgY29ubmVjdGlvbgorICogPC9ERVNDPgorICovCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDxmY250bC5oPgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAKQEAgLTg1LDE0ICs5MCwxNCBAQAogCiAgICAgZm9yKGMgPSAwOyAoYyA8IHdpZHRoKSAmJiAoaStjIDwgc2l6ZSk7IGMrKykgewogICAgICAgLyogY2hlY2sgZm9yIDBEMEE7IGlmIGZvdW5kLCBza2lwIHBhc3QgYW5kIHN0YXJ0IGEgbmV3IGxpbmUgb2Ygb3V0cHV0ICovCi0gICAgICBpZiAobm9oZXggJiYgKGkrYysxIDwgc2l6ZSkgJiYgcHRyW2krY109PTB4MEQgJiYgcHRyW2krYysxXT09MHgwQSkgeworICAgICAgaWYobm9oZXggJiYgKGkrYysxIDwgc2l6ZSkgJiYgcHRyW2krY109PTB4MEQgJiYgcHRyW2krYysxXT09MHgwQSkgewogICAgICAgICBpKz0oYysyLXdpZHRoKTsKICAgICAgICAgYnJlYWs7CiAgICAgICB9CiAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVjIiwKICAgICAgICAgICAgICAgKHB0cltpK2NdPj0weDIwKSAmJiAocHRyW2krY108MHg4MCk/cHRyW2krY106Jy4nKTsKICAgICAgIC8qIGNoZWNrIGFnYWluIGZvciAwRDBBLCB0byBhdm9pZCBhbiBleHRyYSBcbiBpZiBpdCdzIGF0IHdpZHRoICovCi0gICAgICBpZiAobm9oZXggJiYgKGkrYysyIDwgc2l6ZSkgJiYgcHRyW2krYysxXT09MHgwRCAmJiBwdHJbaStjKzJdPT0weDBBKSB7CisgICAgICBpZihub2hleCAmJiAoaStjKzIgPCBzaXplKSAmJiBwdHJbaStjKzFdPT0weDBEICYmIHB0cltpK2MrMl09PTB4MEEpIHsKICAgICAgICAgaSs9KGMrMy13aWR0aCk7CiAgICAgICAgIGJyZWFrOwogICAgICAgfQpAQCAtMTgyLDEwICsxODcsMTAgQEAKICAgc3RydWN0IHN0YXQgZmlsZV9pbmZvOwogICBjdXJsX29mZl90IHVwbG9hZHNpemU7CiAKLSAgc3ByaW50ZihmaWxlbmFtZSwgImRsLSVkIiwgbnVtKTsKKyAgc25wcmludGYoZmlsZW5hbWUsIDEyOCwgImRsLSVkIiwgbnVtKTsKICAgb3V0ID0gZm9wZW4oZmlsZW5hbWUsICJ3YiIpOwogCi0gIHNwcmludGYodXJsLCAiaHR0cHM6Ly9sb2NhbGhvc3Q6ODQ0My91cGxvYWQtJWQiLCBudW0pOworICBzbnByaW50Zih1cmwsIDI1NiwgImh0dHBzOi8vbG9jYWxob3N0Ojg0NDMvdXBsb2FkLSVkIiwgbnVtKTsKIAogICAvKiBnZXQgdGhlIGZpbGUgc2l6ZSBvZiB0aGUgbG9jYWwgZmlsZSAqLwogICBzdGF0KHVwbG9hZCwgJmZpbGVfaW5mbyk7CkBAIC0zMDMsOCArMzA4LDcgQEAKICAgICAvKiBnZXQgZmlsZSBkZXNjcmlwdG9ycyBmcm9tIHRoZSB0cmFuc2ZlcnMgKi8KICAgICBtYyA9IGN1cmxfbXVsdGlfZmRzZXQobXVsdGlfaGFuZGxlLCAmZmRyZWFkLCAmZmR3cml0ZSwgJmZkZXhjZXAsICZtYXhmZCk7CiAKLSAgICBpZihtYyAhPSBDVVJMTV9PSykKLSAgICB7CisgICAgaWYobWMgIT0gQ1VSTE1fT0spIHsKICAgICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9tdWx0aV9mZHNldCgpIGZhaWxlZCwgY29kZSAlZC5cbiIsIG1jKTsKICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvaHR0cGN1c3RvbWhlYWRlci5jIGIvZG9jcy9leGFtcGxlcy9odHRwY3VzdG9taGVhZGVyLmMKaW5kZXggODU0MmVhZC4uZDIyYjdiYyAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9odHRwY3VzdG9taGVhZGVyLmMKKysrIGIvZG9jcy9leGFtcGxlcy9odHRwY3VzdG9taGVhZGVyLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0xOSw2ICsxOSwxMCBAQAogICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogPERFU0M+CisgKiBIVFRQIHJlcXVlc3Qgd2l0aCBjdXN0b20gbW9kaWZpZWQsIHJlbW92ZWQgYW5kIGFkZGVkIGhlYWRlcnMKKyAqIDwvREVTQz4KKyAqLwogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAKZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvaHR0cHB1dC5jIGIvZG9jcy9leGFtcGxlcy9odHRwcHV0LmMKaW5kZXggMmU5ZGMyMS4uNGY4YWVjZSAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9odHRwcHV0LmMKKysrIGIvZG9jcy9leGFtcGxlcy9odHRwcHV0LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDEyLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0xOSw2ICsxOSwxMCBAQAogICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogPERFU0M+CisgKiBIVFRQIFBVVCB3aXRoIGVhc3kgaW50ZXJmYWNlIGFuZCByZWFkIGNhbGxiYWNrCisgKiA8L0RFU0M+CisgKi8KICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPGZjbnRsLmg+CiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KQEAgLTU2LDcgKzYwLDcgQEAKIHsKICAgQ1VSTCAqY3VybDsKICAgQ1VSTGNvZGUgcmVzOwotICBGSUxFICogaGRfc3JjIDsKKyAgRklMRSAqIGhkX3NyYzsKICAgc3RydWN0IHN0YXQgZmlsZV9pbmZvOwogCiAgIGNoYXIgKmZpbGU7CmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL2h0dHBzLmMgYi9kb2NzL2V4YW1wbGVzL2h0dHBzLmMKaW5kZXggYmQ5YTMzYi4uY2NhODNmZSAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9odHRwcy5jCisrKyBiL2RvY3MvZXhhbXBsZXMvaHR0cHMuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTIsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDYgKzE5LDEwIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiA8REVTQz4KKyAqIFNpbXBsZSBIVFRQUyBHRVQKKyAqIDwvREVTQz4KKyAqLwogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAKZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvaW1hcC1hcHBlbmQuYyBiL2RvY3MvZXhhbXBsZXMvaW1hcC1hcHBlbmQuYwppbmRleCBmYTUzMWE4Li4zZjgzMjg5IDEwMDY0NAotLS0gYS9kb2NzL2V4YW1wbGVzL2ltYXAtYXBwZW5kLmMKKysrIGIvZG9jcy9leGFtcGxlcy9pbWFwLWFwcGVuZC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTksNiArMTksMTIgQEAKICAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogPERFU0M+CisgKiBJTUFQIGV4YW1wbGUgc2hvd2luZyBob3cgdG8gc2VuZCBlLW1haWxzCisgKiA8L0RFU0M+CisgKi8KKwogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CkBAIC0zOCw3ICs0NCw4IEBACiAgICJUbzogIiBUTyAiXHJcbiIsCiAgICJGcm9tOiAiIEZST00gIihFeGFtcGxlIFVzZXIpXHJcbiIsCiAgICJDYzogIiBDQyAiKEFub3RoZXIgZXhhbXBsZSBVc2VyKVxyXG4iLAotICAiTWVzc2FnZS1JRDogPGRjZDdjYjM2LTExZGItNDg3YS05ZjNhLWU2NTJhOTQ1OGVmZEByZmNwZWRhbnQuZXhhbXBsZS5vcmc+XHJcbiIsCisgICJNZXNzYWdlLUlEOiAiCisgICI8ZGNkN2NiMzYtMTFkYi00ODdhLTlmM2EtZTY1MmE5NDU4ZWZkQHJmY3BlZGFudC5leGFtcGxlLm9yZz5cclxuIiwKICAgIlN1YmplY3Q6IElNQVAgZXhhbXBsZSBtZXNzYWdlXHJcbiIsCiAgICJcclxuIiwgLyogZW1wdHkgbGluZSB0byBkaXZpZGUgaGVhZGVycyBmcm9tIGJvZHksIHNlZSBSRkM1MzIyICovCiAgICJUaGUgYm9keSBvZiB0aGUgbWVzc2FnZSBzdGFydHMgaGVyZS5cclxuIiwKZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvaW1hcC1jb3B5LmMgYi9kb2NzL2V4YW1wbGVzL2ltYXAtY29weS5jCmluZGV4IGZlMmQ5MWMuLjRjM2I2NDAgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvaW1hcC1jb3B5LmMKKysrIGIvZG9jcy9leGFtcGxlcy9pbWFwLWNvcHkuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDYgKzE5LDEyIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIDxERVNDPgorICogSU1BUCBleGFtcGxlIHNob3dpbmcgaG93IHRvIGNvcHkgYW4gZS1tYWlsIGZyb20gb25lIGZvbGRlciB0byBhbm90aGVyCisgKiA8L0RFU0M+CisgKi8KKwogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAKZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvaW1hcC1jcmVhdGUuYyBiL2RvY3MvZXhhbXBsZXMvaW1hcC1jcmVhdGUuYwppbmRleCA2NWRkZWRlLi44ZjcyY2I4IDEwMDY0NAotLS0gYS9kb2NzL2V4YW1wbGVzL2ltYXAtY3JlYXRlLmMKKysrIGIvZG9jcy9leGFtcGxlcy9pbWFwLWNyZWF0ZS5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTksNiArMTksMTIgQEAKICAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogPERFU0M+CisgKiBJTUFQIGV4YW1wbGUgc2hvd2luZyBob3cgdG8gY3JlYXRlIGEgbmV3IGZvbGRlcgorICogPC9ERVNDPgorICovCisKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgogCmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL2ltYXAtZGVsZXRlLmMgYi9kb2NzL2V4YW1wbGVzL2ltYXAtZGVsZXRlLmMKaW5kZXggNTExM2JlOS4uYmQ5ZDFhNCAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9pbWFwLWRlbGV0ZS5jCisrKyBiL2RvY3MvZXhhbXBsZXMvaW1hcC1kZWxldGUuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDYgKzE5LDEyIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIDxERVNDPgorICogSU1BUCBleGFtcGxlIHNob3dpbmcgaG93IHRvIGRlbGV0ZSBhIGZvbGRlcgorICogPC9ERVNDPgorICovCisKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgogCmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL2ltYXAtZXhhbWluZS5jIGIvZG9jcy9leGFtcGxlcy9pbWFwLWV4YW1pbmUuYwppbmRleCBhN2I0MWM1Li40Mjg3ZjhhIDEwMDY0NAotLS0gYS9kb2NzL2V4YW1wbGVzL2ltYXAtZXhhbWluZS5jCisrKyBiL2RvY3MvZXhhbXBsZXMvaW1hcC1leGFtaW5lLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0xOSw2ICsxOSwxMiBAQAogICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiA8REVTQz4KKyAqIElNQVAgZXhhbXBsZSBzaG93aW5nIGhvdyB0byBvYnRhaW4gaW5mb3JtYXRpb24gYWJvdXQgYSBmb2xkZXIKKyAqIDwvREVTQz4KKyAqLworCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KIApkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy9pbWFwLWZldGNoLmMgYi9kb2NzL2V4YW1wbGVzL2ltYXAtZmV0Y2guYwppbmRleCA4MzFkMGRjLi4xOTJkMmU5IDEwMDY0NAotLS0gYS9kb2NzL2V4YW1wbGVzL2ltYXAtZmV0Y2guYworKysgYi9kb2NzL2V4YW1wbGVzL2ltYXAtZmV0Y2guYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDYgKzE5LDEyIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIDxERVNDPgorICogSU1BUCBleGFtcGxlIHNob3dpbmcgaG93IHRvIHJldHJlaWV2ZSBlLW1haWxzCisgKiA8L0RFU0M+CisgKi8KKwogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAKQEAgLTQwLDcgKzQ2LDggQEAKICAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfUEFTU1dPUkQsICJzZWNyZXQiKTsKIAogICAgIC8qIFRoaXMgd2lsbCBmZXRjaCBtZXNzYWdlIDEgZnJvbSB0aGUgdXNlcidzIGluYm94ICovCi0gICAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1VSTCwgImltYXA6Ly9pbWFwLmV4YW1wbGUuY29tL0lOQk9YLztVSUQ9MSIpOworICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9VUkwsCisgICAgICAgICAgICAgICAgICAgICAiaW1hcDovL2ltYXAuZXhhbXBsZS5jb20vSU5CT1gvO1VJRD0xIik7CiAKICAgICAvKiBQZXJmb3JtIHRoZSBmZXRjaCAqLwogICAgIHJlcyA9IGN1cmxfZWFzeV9wZXJmb3JtKGN1cmwpOwpkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy9pbWFwLWxpc3QuYyBiL2RvY3MvZXhhbXBsZXMvaW1hcC1saXN0LmMKaW5kZXggNDIyMzA1Mi4uMjkxZTFlNiAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9pbWFwLWxpc3QuYworKysgYi9kb2NzL2V4YW1wbGVzL2ltYXAtbGlzdC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTksNiArMTksMTIgQEAKICAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogPERFU0M+CisgKiBJTUFQIGV4YW1wbGUgdG8gbGlzdCB0aGUgZm9sZGVycyB3aXRoaW4gYSBtYWlsYm94CisgKiA8L0RFU0M+CisgKi8KKwogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAKZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvaW1hcC1sc3ViLmMgYi9kb2NzL2V4YW1wbGVzL2ltYXAtbHN1Yi5jCmluZGV4IDg5NjBiNjIuLmQxMzBjM2QgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvaW1hcC1sc3ViLmMKKysrIGIvZG9jcy9leGFtcGxlcy9pbWFwLWxzdWIuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDYgKzE5LDEyIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIDxERVNDPgorICogSU1BUCBleGFtcGxlIHRvIGxpc3QgdGhlIHN1YnNjcmliZWQgZm9sZGVycworICogPC9ERVNDPgorICovCisKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgogCmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL2ltYXAtbXVsdGkuYyBiL2RvY3MvZXhhbXBsZXMvaW1hcC1tdWx0aS5jCmluZGV4IGM3ZGMxMzAuLjhjZDQ4NTggMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvaW1hcC1tdWx0aS5jCisrKyBiL2RvY3MvZXhhbXBsZXMvaW1hcC1tdWx0aS5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTksNyArMTksMTQgQEAKICAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogPERFU0M+CisgKiBJTUFQIGV4YW1wbGUgdXNpbmcgdGhlIG11bHRpIGludGVyZmFjZQorICogPC9ERVNDPgorICovCisKICNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgogCiAvKiBUaGlzIGlzIGEgc2ltcGxlIGV4YW1wbGUgc2hvd2luZyBob3cgdG8gZmV0Y2ggbWFpbCB1c2luZyBsaWJjdXJsJ3MgSU1BUApAQCAtMTEzLDggKzEyMCw3IEBACiAgICAgLyogZ2V0IGZpbGUgZGVzY3JpcHRvcnMgZnJvbSB0aGUgdHJhbnNmZXJzICovCiAgICAgbWMgPSBjdXJsX211bHRpX2Zkc2V0KG1jdXJsLCAmZmRyZWFkLCAmZmR3cml0ZSwgJmZkZXhjZXAsICZtYXhmZCk7CiAKLSAgICBpZihtYyAhPSBDVVJMTV9PSykKLSAgICB7CisgICAgaWYobWMgIT0gQ1VSTE1fT0spIHsKICAgICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9tdWx0aV9mZHNldCgpIGZhaWxlZCwgY29kZSAlZC5cbiIsIG1jKTsKICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvaW1hcC1ub29wLmMgYi9kb2NzL2V4YW1wbGVzL2ltYXAtbm9vcC5jCmluZGV4IDcxYTU1NzIuLjU2Njg5MGUgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvaW1hcC1ub29wLmMKKysrIGIvZG9jcy9leGFtcGxlcy9pbWFwLW5vb3AuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDYgKzE5LDEyIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIDxERVNDPgorICogSU1BUCBleGFtcGxlIHNob3dpbmcgaG93IHRvIHBlcmZvcm0gYSBub29wCisgKiA8L0RFU0M+CisgKi8KKwogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAKZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvaW1hcC1zZWFyY2guYyBiL2RvY3MvZXhhbXBsZXMvaW1hcC1zZWFyY2guYwppbmRleCAwYzFkMjY3Li5mMTI2MWUxIDEwMDY0NAotLS0gYS9kb2NzL2V4YW1wbGVzL2ltYXAtc2VhcmNoLmMKKysrIGIvZG9jcy9leGFtcGxlcy9pbWFwLXNlYXJjaC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTksNiArMTksMTIgQEAKICAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogPERFU0M+CisgKiBJTUFQIGV4YW1wbGUgc2hvd2luZyBob3cgdG8gc2VhcmNoIGZvciBuZXcgZS1tYWlscworICogPC9ERVNDPgorICovCisKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgogCmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL2ltYXAtc3NsLmMgYi9kb2NzL2V4YW1wbGVzL2ltYXAtc3NsLmMKaW5kZXggZWVjOWIwZS4uNjk4MzlhZCAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9pbWFwLXNzbC5jCisrKyBiL2RvY3MvZXhhbXBsZXMvaW1hcC1zc2wuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDYgKzE5LDEyIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIDxERVNDPgorICogSU1BUCBleGFtcGxlIHVzaW5nIFNTTAorICogPC9ERVNDPgorICovCisKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgogCkBAIC00Miw3ICs0OCw4IEBACiAKICAgICAvKiBUaGlzIHdpbGwgZmV0Y2ggbWVzc2FnZSAxIGZyb20gdGhlIHVzZXIncyBpbmJveC4gTm90ZSB0aGUgdXNlIG9mCiAgICAgKiBpbWFwczovLyByYXRoZXIgdGhhbiBpbWFwOi8vIHRvIHJlcXVlc3QgYSBTU0wgYmFzZWQgY29ubmVjdGlvbi4gKi8KLSAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfVVJMLCAiaW1hcHM6Ly9pbWFwLmV4YW1wbGUuY29tL0lOQk9YLztVSUQ9MSIpOworICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9VUkwsCisgICAgICAgICAgICAgICAgICAgICAiaW1hcHM6Ly9pbWFwLmV4YW1wbGUuY29tL0lOQk9YLztVSUQ9MSIpOwogCiAgICAgLyogSWYgeW91IHdhbnQgdG8gY29ubmVjdCB0byBhIHNpdGUgd2hvIGlzbid0IHVzaW5nIGEgY2VydGlmaWNhdGUgdGhhdCBpcwogICAgICAqIHNpZ25lZCBieSBvbmUgb2YgdGhlIGNlcnRzIGluIHRoZSBDQSBidW5kbGUgeW91IGhhdmUsIHlvdSBjYW4gc2tpcCB0aGUKZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvaW1hcC1zdG9yZS5jIGIvZG9jcy9leGFtcGxlcy9pbWFwLXN0b3JlLmMKaW5kZXggOGY1ZTdkNS4uODQ3OTQ1NyAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9pbWFwLXN0b3JlLmMKKysrIGIvZG9jcy9leGFtcGxlcy9pbWFwLXN0b3JlLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0xOSw2ICsxOSwxMiBAQAogICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiA8REVTQz4KKyAqIElNQVAgZXhhbXBsZSBzaG93aW5nIGhvdyB0byBtb2RpZnkgdGhlIHByb3BlcnRpZXMgb2YgYW4gZS1tYWlsCisgKiA8L0RFU0M+CisgKi8KKwogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAKZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvaW1hcC10bHMuYyBiL2RvY3MvZXhhbXBsZXMvaW1hcC10bHMuYwppbmRleCBjNDM5ODY0Li43ZGFhMGJmIDEwMDY0NAotLS0gYS9kb2NzL2V4YW1wbGVzL2ltYXAtdGxzLmMKKysrIGIvZG9jcy9leGFtcGxlcy9pbWFwLXRscy5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTksNiArMTksMTIgQEAKICAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogPERFU0M+CisgKiBJTUFQIGV4YW1wbGUgdXNpbmcgVExTCisgKiA8L0RFU0M+CisgKi8KKwogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAKQEAgLTQxLDcgKzQ3LDggQEAKICAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfUEFTU1dPUkQsICJzZWNyZXQiKTsKIAogICAgIC8qIFRoaXMgd2lsbCBmZXRjaCBtZXNzYWdlIDEgZnJvbSB0aGUgdXNlcidzIGluYm94ICovCi0gICAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1VSTCwgImltYXA6Ly9pbWFwLmV4YW1wbGUuY29tL0lOQk9YLztVSUQ9MSIpOworICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9VUkwsCisgICAgICAgICAgICAgICAgICAgICAiaW1hcDovL2ltYXAuZXhhbXBsZS5jb20vSU5CT1gvO1VJRD0xIik7CiAKICAgICAvKiBJbiB0aGlzIGV4YW1wbGUsIHdlJ2xsIHN0YXJ0IHdpdGggYSBwbGFpbiB0ZXh0IGNvbm5lY3Rpb24sIGFuZCB1cGdyYWRlCiAgICAgICogdG8gVHJhbnNwb3J0IExheWVyIFNlY3VyaXR5IChUTFMpIHVzaW5nIHRoZSBTVEFSVFRMUyBjb21tYW5kLiBCZSBjYXJlZnVsCkBAIC01NSwxMiArNjIsMTMgQEAKICAgICAgKiBDVVJMT1BUX1NTTF9WRVJJRllQRUVSIGFuZCBDVVJMT1BUX1NTTF9WRVJJRllIT1NUIG9wdGlvbnMgdG8gMCAoZmFsc2UpLgogICAgICAqICAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1NTTF9WRVJJRllQRUVSLCAwTCk7CiAgICAgICogICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfU1NMX1ZFUklGWUhPU1QsIDBMKTsKKyAgICAgKgogICAgICAqIFRoYXQgaXMsIGluIGdlbmVyYWwsIGEgYmFkIGlkZWEuIEl0IGlzIHN0aWxsIGJldHRlciB0aGFuIHNlbmRpbmcgeW91cgotICAgICAqIGF1dGhlbnRpY2F0aW9uIGRldGFpbHMgaW4gcGxhaW4gdGV4dCB0aG91Z2guCi0gICAgICogSW5zdGVhZCwgeW91IHNob3VsZCBnZXQgdGhlIGlzc3VlciBjZXJ0aWZpY2F0ZSAob3IgdGhlIGhvc3QgY2VydGlmaWNhdGUKLSAgICAgKiBpZiB0aGUgY2VydGlmaWNhdGUgaXMgc2VsZi1zaWduZWQpIGFuZCBhZGQgaXQgdG8gdGhlIHNldCBvZiBjZXJ0aWZpY2F0ZXMKLSAgICAgKiB0aGF0IGFyZSBrbm93biB0byBsaWJjdXJsIHVzaW5nIENVUkxPUFRfQ0FJTkZPIGFuZC9vciBDVVJMT1BUX0NBUEFUSC4gU2VlCi0gICAgICogZG9jcy9TU0xDRVJUUyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4gKi8KKyAgICAgKiBhdXRoZW50aWNhdGlvbiBkZXRhaWxzIGluIHBsYWluIHRleHQgdGhvdWdoLiAgSW5zdGVhZCwgeW91IHNob3VsZCBnZXQKKyAgICAgKiB0aGUgaXNzdWVyIGNlcnRpZmljYXRlIChvciB0aGUgaG9zdCBjZXJ0aWZpY2F0ZSBpZiB0aGUgY2VydGlmaWNhdGUgaXMKKyAgICAgKiBzZWxmLXNpZ25lZCkgYW5kIGFkZCBpdCB0byB0aGUgc2V0IG9mIGNlcnRpZmljYXRlcyB0aGF0IGFyZSBrbm93biB0bworICAgICAqIGxpYmN1cmwgdXNpbmcgQ1VSTE9QVF9DQUlORk8gYW5kL29yIENVUkxPUFRfQ0FQQVRILiBTZWUgZG9jcy9TU0xDRVJUUworICAgICAqIGZvciBtb3JlIGluZm9ybWF0aW9uLiAqLwogICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9DQUlORk8sICIvcGF0aC90by9jZXJ0aWZpY2F0ZS5wZW0iKTsKIAogICAgIC8qIFNpbmNlIHRoZSB0cmFmZmljIHdpbGwgYmUgZW5jcnlwdGVkLCBpdCBpcyB2ZXJ5IHVzZWZ1bCB0byB0dXJuIG9uIGRlYnVnCmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL21ha2VmaWxlLmRqIGIvZG9jcy9leGFtcGxlcy9tYWtlZmlsZS5kagppbmRleCBjMThlZjhhLi5hZjc2MTEzIDEwMDY0NAotLS0gYS9kb2NzL2V4YW1wbGVzL21ha2VmaWxlLmRqCisrKyBiL2RvY3MvZXhhbXBsZXMvbWFrZWZpbGUuZGoKQEAgLTksNyArOSw3IEBACiAjCiAjIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAjCiAjIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDEwICsxOSw2IEBACiAjIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAjCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMKLSMgIEFkYXB0ZWQgZm9yIGRqZ3BwIC8gV2F0dC0zMiAvIERPUyBieQotIyAgR2lzbGUgVmFuZW0gPGd2YW5lbUBicm9hZHBhcmsubm8+Ci0jCiAKIFRPUERJUiA9IC4uLy4uCiAKZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvbXVsdGktYXBwLmMgYi9kb2NzL2V4YW1wbGVzL211bHRpLWFwcC5jCmluZGV4IGI4MjU4OTcuLmY4NDQ3OTMgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvbXVsdGktYXBwLmMKKysrIGIvZG9jcy9leGFtcGxlcy9tdWx0aS1hcHAuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTEsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDcgKzE5LDExIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKiBUaGlzIGlzIGFuIGV4YW1wbGUgYXBwbGljYXRpb24gc291cmNlIGNvZGUgdXNpbmcgdGhlIG11bHRpIGludGVyZmFjZS4gKi8KKy8qIDxERVNDPgorICogQSBiYXNpYyBhcHBsaWNhdGlvbiBzb3VyY2UgY29kZSB1c2luZyB0aGUgbXVsdGkgaW50ZXJmYWNlIGRvaW5nIHR3bworICogdHJhbnNmZXJzIGluIHBhcmFsbGVsLgorICogPC9ERVNDPgorICovCiAKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgpAQCAtNTEsOCArNTUsOCBAQAogICBpbnQgbXNnc19sZWZ0OyAvKiBob3cgbWFueSBtZXNzYWdlcyBhcmUgbGVmdCAqLwogCiAgIC8qIEFsbG9jYXRlIG9uZSBDVVJMIGhhbmRsZSBwZXIgdHJhbnNmZXIgKi8KLSAgZm9yIChpPTA7IGk8SEFORExFQ09VTlQ7IGkrKykKLSAgICAgIGhhbmRsZXNbaV0gPSBjdXJsX2Vhc3lfaW5pdCgpOworICBmb3IoaT0wOyBpPEhBTkRMRUNPVU5UOyBpKyspCisgICAgaGFuZGxlc1tpXSA9IGN1cmxfZWFzeV9pbml0KCk7CiAKICAgLyogc2V0IHRoZSBvcHRpb25zIChJIGxlZnQgb3V0IGEgZmV3LCB5b3UnbGwgZ2V0IHRoZSBwb2ludCBhbnl3YXkpICovCiAgIGN1cmxfZWFzeV9zZXRvcHQoaGFuZGxlc1tIVFRQX0hBTkRMRV0sIENVUkxPUFRfVVJMLCAiaHR0cDovL2V4YW1wbGUuY29tIik7CkBAIC02NCw4ICs2OCw4IEBACiAgIG11bHRpX2hhbmRsZSA9IGN1cmxfbXVsdGlfaW5pdCgpOwogCiAgIC8qIGFkZCB0aGUgaW5kaXZpZHVhbCB0cmFuc2ZlcnMgKi8KLSAgZm9yIChpPTA7IGk8SEFORExFQ09VTlQ7IGkrKykKLSAgICAgIGN1cmxfbXVsdGlfYWRkX2hhbmRsZShtdWx0aV9oYW5kbGUsIGhhbmRsZXNbaV0pOworICBmb3IoaT0wOyBpPEhBTkRMRUNPVU5UOyBpKyspCisgICAgY3VybF9tdWx0aV9hZGRfaGFuZGxlKG11bHRpX2hhbmRsZSwgaGFuZGxlc1tpXSk7CiAKICAgLyogd2Ugc3RhcnQgc29tZSBhY3Rpb24gYnkgY2FsbGluZyBwZXJmb3JtIHJpZ2h0IGF3YXkgKi8KICAgY3VybF9tdWx0aV9wZXJmb3JtKG11bHRpX2hhbmRsZSwgJnN0aWxsX3J1bm5pbmcpOwpAQCAtMTAyLDggKzEwNiw3IEBACiAgICAgLyogZ2V0IGZpbGUgZGVzY3JpcHRvcnMgZnJvbSB0aGUgdHJhbnNmZXJzICovCiAgICAgbWMgPSBjdXJsX211bHRpX2Zkc2V0KG11bHRpX2hhbmRsZSwgJmZkcmVhZCwgJmZkd3JpdGUsICZmZGV4Y2VwLCAmbWF4ZmQpOwogCi0gICAgaWYobWMgIT0gQ1VSTE1fT0spCi0gICAgeworICAgIGlmKG1jICE9IENVUkxNX09LKSB7CiAgICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfbXVsdGlfZmRzZXQoKSBmYWlsZWQsIGNvZGUgJWQuXG4iLCBtYyk7CiAgICAgICBicmVhazsKICAgICB9CkBAIC0xNDIsMTIgKzE0NSwxMiBAQAogICB9IHdoaWxlKHN0aWxsX3J1bm5pbmcpOwogCiAgIC8qIFNlZSBob3cgdGhlIHRyYW5zZmVycyB3ZW50ICovCi0gIHdoaWxlICgobXNnID0gY3VybF9tdWx0aV9pbmZvX3JlYWQobXVsdGlfaGFuZGxlLCAmbXNnc19sZWZ0KSkpIHsKLSAgICBpZiAobXNnLT5tc2cgPT0gQ1VSTE1TR19ET05FKSB7CisgIHdoaWxlKChtc2cgPSBjdXJsX211bHRpX2luZm9fcmVhZChtdWx0aV9oYW5kbGUsICZtc2dzX2xlZnQpKSkgeworICAgIGlmKG1zZy0+bXNnID09IENVUkxNU0dfRE9ORSkgewogICAgICAgaW50IGlkeCwgZm91bmQgPSAwOwogCiAgICAgICAvKiBGaW5kIG91dCB3aGljaCBoYW5kbGUgdGhpcyBtZXNzYWdlIGlzIGFib3V0ICovCi0gICAgICBmb3IgKGlkeD0wOyBpZHg8SEFORExFQ09VTlQ7IGlkeCsrKSB7CisgICAgICBmb3IoaWR4PTA7IGlkeDxIQU5ETEVDT1VOVDsgaWR4KyspIHsKICAgICAgICAgZm91bmQgPSAobXNnLT5lYXN5X2hhbmRsZSA9PSBoYW5kbGVzW2lkeF0pOwogICAgICAgICBpZihmb3VuZCkKICAgICAgICAgICBicmVhazsKQEAgLTE2Nyw4ICsxNzAsOCBAQAogICBjdXJsX211bHRpX2NsZWFudXAobXVsdGlfaGFuZGxlKTsKIAogICAvKiBGcmVlIHRoZSBDVVJMIGhhbmRsZXMgKi8KLSAgZm9yIChpPTA7IGk8SEFORExFQ09VTlQ7IGkrKykKLSAgICAgIGN1cmxfZWFzeV9jbGVhbnVwKGhhbmRsZXNbaV0pOworICBmb3IoaT0wOyBpPEhBTkRMRUNPVU5UOyBpKyspCisgICAgY3VybF9lYXN5X2NsZWFudXAoaGFuZGxlc1tpXSk7CiAKICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL211bHRpLWRlYnVnY2FsbGJhY2suYyBiL2RvY3MvZXhhbXBsZXMvbXVsdGktZGVidWdjYWxsYmFjay5jCmluZGV4IDVmYjg2YmUuLmQwN2NjM2IgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvbXVsdGktZGVidWdjYWxsYmFjay5jCisrKyBiL2RvY3MvZXhhbXBsZXMvbXVsdGktZGVidWdjYWxsYmFjay5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTksNyArMTksMTAgQEAKICAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qIFRoaXMgaXMgYW4gZXhhbXBsZSBzaG93aW5nIHRoZSBtdWx0aSBpbnRlcmZhY2UgYW5kIHRoZSBkZWJ1ZyBjYWxsYmFjay4gKi8KKy8qIDxERVNDPgorICogbXVsdGkgaW50ZXJmYWNlIGFuZCBkZWJ1ZyBjYWxsYmFjaworICogPC9ERVNDPgorICovCiAKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgpAQCAtNjYsMTQgKzY5LDE0IEBACiAKICAgICBmb3IoYyA9IDA7IChjIDwgd2lkdGgpICYmIChpK2MgPCBzaXplKTsgYysrKSB7CiAgICAgICAvKiBjaGVjayBmb3IgMEQwQTsgaWYgZm91bmQsIHNraXAgcGFzdCBhbmQgc3RhcnQgYSBuZXcgbGluZSBvZiBvdXRwdXQgKi8KLSAgICAgIGlmIChub2hleCAmJiAoaStjKzEgPCBzaXplKSAmJiBwdHJbaStjXT09MHgwRCAmJiBwdHJbaStjKzFdPT0weDBBKSB7CisgICAgICBpZihub2hleCAmJiAoaStjKzEgPCBzaXplKSAmJiBwdHJbaStjXT09MHgwRCAmJiBwdHJbaStjKzFdPT0weDBBKSB7CiAgICAgICAgIGkrPShjKzItd2lkdGgpOwogICAgICAgICBicmVhazsKICAgICAgIH0KICAgICAgIGZwcmludGYoc3RyZWFtLCAiJWMiLAogICAgICAgICAgICAgICAocHRyW2krY10+PTB4MjApICYmIChwdHJbaStjXTwweDgwKT9wdHJbaStjXTonLicpOwogICAgICAgLyogY2hlY2sgYWdhaW4gZm9yIDBEMEEsIHRvIGF2b2lkIGFuIGV4dHJhIFxuIGlmIGl0J3MgYXQgd2lkdGggKi8KLSAgICAgIGlmIChub2hleCAmJiAoaStjKzIgPCBzaXplKSAmJiBwdHJbaStjKzFdPT0weDBEICYmIHB0cltpK2MrMl09PTB4MEEpIHsKKyAgICAgIGlmKG5vaGV4ICYmIChpK2MrMiA8IHNpemUpICYmIHB0cltpK2MrMV09PTB4MEQgJiYgcHRyW2krYysyXT09MHgwQSkgewogICAgICAgICBpKz0oYyszLXdpZHRoKTsKICAgICAgICAgYnJlYWs7CiAgICAgICB9CkBAIC0xNzYsOCArMTc5LDcgQEAKICAgICAvKiBnZXQgZmlsZSBkZXNjcmlwdG9ycyBmcm9tIHRoZSB0cmFuc2ZlcnMgKi8KICAgICBtYyA9IGN1cmxfbXVsdGlfZmRzZXQobXVsdGlfaGFuZGxlLCAmZmRyZWFkLCAmZmR3cml0ZSwgJmZkZXhjZXAsICZtYXhmZCk7CiAKLSAgICBpZihtYyAhPSBDVVJMTV9PSykKLSAgICB7CisgICAgaWYobWMgIT0gQ1VSTE1fT0spIHsKICAgICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9tdWx0aV9mZHNldCgpIGZhaWxlZCwgY29kZSAlZC5cbiIsIG1jKTsKICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvbXVsdGktZG91YmxlLmMgYi9kb2NzL2V4YW1wbGVzL211bHRpLWRvdWJsZS5jCmluZGV4IDBkOGQwZGUuLjRlNTBjNzYgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvbXVsdGktZG91YmxlLmMKKysrIGIvZG9jcy9leGFtcGxlcy9tdWx0aS1kb3VibGUuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTEsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDYgKzE5LDEwIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiA8REVTQz4KKyAqIG11bHRpIGludGVyZmFjZSBjb2RlIGRvaW5nIHR3byBwYXJhbGxlbCBIVFRQIHRyYW5zZmVycworICogPC9ERVNDPgorICovCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KIApAQCAtOTEsOCArOTUsNyBAQAogICAgIC8qIGdldCBmaWxlIGRlc2NyaXB0b3JzIGZyb20gdGhlIHRyYW5zZmVycyAqLwogICAgIG1jID0gY3VybF9tdWx0aV9mZHNldChtdWx0aV9oYW5kbGUsICZmZHJlYWQsICZmZHdyaXRlLCAmZmRleGNlcCwgJm1heGZkKTsKIAotICAgIGlmKG1jICE9IENVUkxNX09LKQotICAgIHsKKyAgICBpZihtYyAhPSBDVVJMTV9PSykgewogICAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX211bHRpX2Zkc2V0KCkgZmFpbGVkLCBjb2RlICVkLlxuIiwgbWMpOwogICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy9tdWx0aS1wb3N0LmMgYi9kb2NzL2V4YW1wbGVzL211bHRpLXBvc3QuYwppbmRleCA1YmZkY2ZkLi41ZDlhYmMxIDEwMDY0NAotLS0gYS9kb2NzL2V4YW1wbGVzL211bHRpLXBvc3QuYworKysgYi9kb2NzL2V4YW1wbGVzL211bHRpLXBvc3QuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTEsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDggKzE5LDExIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKiBUaGlzIGlzIGFuIGV4YW1wbGUgYXBwbGljYXRpb24gc291cmNlIGNvZGUgdXNpbmcgdGhlIG11bHRpIGludGVyZmFjZQotICogdG8gZG8gYSBtdWx0aXBhcnQgZm9ybXBvc3Qgd2l0aG91dCAiYmxvY2tpbmciLiAqLworLyogPERFU0M+CisgKiB1c2luZyB0aGUgbXVsdGkgaW50ZXJmYWNlIHRvIGRvIGEgbXVsdGlwYXJ0IGZvcm1wb3N0IHdpdGhvdXQgYmxvY2tpbmcKKyAqIDwvREVTQz4KKyAqLworCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDxzeXMvdGltZS5oPgpAQCAtMTEyLDggKzExNSw3IEBACiAgICAgICAvKiBnZXQgZmlsZSBkZXNjcmlwdG9ycyBmcm9tIHRoZSB0cmFuc2ZlcnMgKi8KICAgICAgIG1jID0gY3VybF9tdWx0aV9mZHNldChtdWx0aV9oYW5kbGUsICZmZHJlYWQsICZmZHdyaXRlLCAmZmRleGNlcCwgJm1heGZkKTsKIAotICAgICAgaWYobWMgIT0gQ1VSTE1fT0spCi0gICAgICB7CisgICAgICBpZihtYyAhPSBDVVJMTV9PSykgewogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfbXVsdGlfZmRzZXQoKSBmYWlsZWQsIGNvZGUgJWQuXG4iLCBtYyk7CiAgICAgICAgIGJyZWFrOwogICAgICAgfQpkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy9tdWx0aS1zaW5nbGUuYyBiL2RvY3MvZXhhbXBsZXMvbXVsdGktc2luZ2xlLmMKaW5kZXggYTQzYTlmNS4uNzBiNmQyNCAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9tdWx0aS1zaW5nbGUuYworKysgYi9kb2NzL2V4YW1wbGVzL211bHRpLXNpbmdsZS5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTksNyArMTksMTAgQEAKICAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qIFRoaXMgaXMgYSB2ZXJ5IHNpbXBsZSBleGFtcGxlIHVzaW5nIHRoZSBtdWx0aSBpbnRlcmZhY2UuICovCisvKiA8REVTQz4KKyAqIHVzaW5nIHRoZSBtdWx0aSBpbnRlcmZhY2UgdG8gZG8gYSBzaW5nbGUgZG93bmxvYWQKKyAqIDwvREVTQz4KKyAqLwogCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KQEAgLTc0LDkgKzc3LDggQEAKICAgICAvKiB3YWl0IGZvciBhY3Rpdml0eSwgdGltZW91dCBvciAibm90aGluZyIgKi8KICAgICBtYyA9IGN1cmxfbXVsdGlfd2FpdChtdWx0aV9oYW5kbGUsIE5VTEwsIDAsIDEwMDAsICZudW1mZHMpOwogCi0gICAgaWYobWMgIT0gQ1VSTE1fT0spCi0gICAgewotICAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX211bHRpX2Zkc2V0KCkgZmFpbGVkLCBjb2RlICVkLlxuIiwgbWMpOworICAgIGlmKG1jICE9IENVUkxNX09LKSB7CisgICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfbXVsdGlfd2FpdCgpIGZhaWxlZCwgY29kZSAlZC5cbiIsIG1jKTsKICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy9tdWx0aS11di5jIGIvZG9jcy9leGFtcGxlcy9tdWx0aS11di5jCmluZGV4IDBjMGY4YTIuLjUxNTI2YzggMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvbXVsdGktdXYuYworKysgYi9kb2NzL2V4YW1wbGVzL211bHRpLXV2LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yMCw2ICsyMCwxMCBAQAogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKKy8qIDxERVNDPgorICogbXVsdGlfc29ja2V0IEFQSSB1c2luZyBsaWJ1dgorICogPC9ERVNDPgorICovCiAvKiBFeGFtcGxlIGFwcGxpY2F0aW9uIGNvZGUgdXNpbmcgdGhlIG11bHRpIHNvY2tldCBpbnRlcmZhY2UgdG8gZG93bmxvYWQKICAgIG11bHRpcGxlIGZpbGVzIGF0IG9uY2UsIGJ1dCBpbnN0ZWFkIG9mIHVzaW5nIGN1cmxfbXVsdGlfcGVyZm9ybSBhbmQKICAgIGN1cmxfbXVsdGlfd2FpdCwgd2hpY2ggdXNlcyBzZWxlY3QoKSwgd2UgdXNlIGxpYnV2LgpAQCAtODAsOSArODQsOSBAQAogICBGSUxFICpmaWxlOwogICBDVVJMICpoYW5kbGU7CiAKLSAgc3ByaW50ZihmaWxlbmFtZSwgIiVkLmRvd25sb2FkIiwgbnVtKTsKKyAgc25wcmludGYoZmlsZW5hbWUsIDUwLCAiJWQuZG93bmxvYWQiLCBudW0pOwogCi0gIGZpbGUgPSBmb3BlbihmaWxlbmFtZSwgInciKTsKKyAgZmlsZSA9IGZvcGVuKGZpbGVuYW1lLCAid2IiKTsKICAgaWYoIWZpbGUpIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgIkVycm9yIG9wZW5pbmcgJXNcbiIsIGZpbGVuYW1lKTsKICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL211bHRpdGhyZWFkLmMgYi9kb2NzL2V4YW1wbGVzL211bHRpdGhyZWFkLmMKaW5kZXggODMxYTA3NC4uNDc1ZThmYyAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9tdWx0aXRocmVhZC5jCisrKyBiL2RvY3MvZXhhbXBsZXMvbXVsdGl0aHJlYWQuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTEsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDggKzE5LDEwIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKiBBIG11bHRpLXRocmVhZGVkIGV4YW1wbGUgdGhhdCB1c2VzIHB0aHJlYWRzIGV4dGVuc2l2ZWx5IHRvIGZldGNoCi0gKiBYIHJlbW90ZSBmaWxlcyBhdCBvbmNlICovCisvKiA8REVTQz4KKyAqIEEgbXVsdGktdGhyZWFkZWQgZXhhbXBsZSB0aGF0IHVzZXMgcHRocmVhZHMgdG8gZmV0Y2ggc2V2ZXJhbCBmaWxlcyBhdCBvbmNlCisgKiA8L0RFU0M+CisgKi8KIAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8cHRocmVhZC5oPgpAQCAtMzQsMTEgKzM2LDExIEBACiAgIElmIHlvdSBpbnRlbmQgdG8gdXNlIGEgU1NMLWJhc2VkIHByb3RvY29sIGhlcmUgeW91IE1VU1Qgc2V0dXAgdGhlIE9wZW5TU0wKICAgY2FsbGJhY2sgZnVuY3Rpb25zIGFzIGRlc2NyaWJlZCBoZXJlOgogCi0gIGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvZG9jcy9jcnlwdG8vdGhyZWFkcy5odG1sI0RFU0NSSVBUSU9OCisgIGh0dHBzOi8vd3d3Lm9wZW5zc2wub3JnL2RvY3MvY3J5cHRvL3RocmVhZHMuaHRtbCNERVNDUklQVElPTgogCiAqLwogY29uc3QgY2hhciAqIGNvbnN0IHVybHNbTlVNVF09IHsKLSAgImh0dHA6Ly9jdXJsLmhheHguc2UvIiwKKyAgImh0dHBzOi8vY3VybC5oYXh4LnNlLyIsCiAgICJmdHA6Ly9jb29sLmhheHguc2UvIiwKICAgImh0dHA6Ly93d3cuY29udGFjdG9yLnNlLyIsCiAgICJ3d3cuaGF4eC5zZSIKZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvb3BlbnNzbHRocmVhZGxvY2suYyBiL2RvY3MvZXhhbXBsZXMvb3BlbnNzbHRocmVhZGxvY2suYwppbmRleCBhZDU0ZjA4Li5lZWJjNDJlIDEwMDY0NAotLS0gYS9kb2NzL2V4YW1wbGVzL29wZW5zc2x0aHJlYWRsb2NrLmMKKysrIGIvZG9jcy9leGFtcGxlcy9vcGVuc3NsdGhyZWFkbG9jay5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTksMTYgKzE5LDE3IEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKiBFeGFtcGxlIHNvdXJjZSBjb2RlIHRvIHNob3cgb25lIHdheSB0byBzZXQgdGhlIG5lY2Vzc2FyeSBPcGVuU1NMIGxvY2tpbmcKLSAqIGNhbGxiYWNrcyBpZiB5b3Ugd2FudCB0byBkbyBtdWx0aS10aHJlYWRlZCB0cmFuc2ZlcnMgd2l0aCBIVFRQUy9GVFBTIHdpdGgKLSAqIGxpYmN1cmwgYnVpbHQgdG8gdXNlIE9wZW5TU0wuCi0gKgorLyogPERFU0M+CisgKiBvbmUgd2F5IHRvIHNldCB0aGUgbmVjZXNzYXJ5IE9wZW5TU0wgbG9ja2luZyBjYWxsYmFja3MgaWYgeW91IHdhbnQgdG8gZG8KKyAqIG11bHRpLXRocmVhZGVkIHRyYW5zZmVycyB3aXRoIEhUVFBTL0ZUUFMgd2l0aCBsaWJjdXJsIGJ1aWx0IHRvIHVzZSBPcGVuU1NMLgorICogPC9ERVNDPgorICovCisvKgogICogVGhpcyBpcyBub3QgYSBjb21wbGV0ZSBzdGFuZC1hbG9uZSBleGFtcGxlLgogICoKICAqIEF1dGhvcjogSmVyZW15IEJyb3duCiAgKi8KIAotCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxwdGhyZWFkLmg+CiAjaW5jbHVkZSA8b3BlbnNzbC9lcnIuaD4KQEAgLTM4LDIyICszOSwyMiBAQAogI2RlZmluZSBNVVRFWF9DTEVBTlVQKHgpIHB0aHJlYWRfbXV0ZXhfZGVzdHJveSgmKHgpKQogI2RlZmluZSBNVVRFWF9MT0NLKHgpICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmKHgpKQogI2RlZmluZSBNVVRFWF9VTkxPQ0soeCkgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCYoeCkpCi0jZGVmaW5lIFRIUkVBRF9JRCAgICAgICAgcHRocmVhZF9zZWxmKCAgKQorI2RlZmluZSBUSFJFQURfSUQgICAgICAgIHB0aHJlYWRfc2VsZigpCiAKIAotdm9pZCBoYW5kbGVfZXJyb3IoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmVubywgY29uc3QgY2hhciAqbXNnKXsKLSAgICAgZnByaW50ZihzdGRlcnIsICIqKiAlczolZCAlc1xuIiwgZmlsZSwgbGluZW5vLCBtc2cpOwotICAgICBFUlJfcHJpbnRfZXJyb3JzX2ZwKHN0ZGVycik7Ci0gICAgIC8qIGV4aXQoLTEpOyAqLwotIH0KK3ZvaWQgaGFuZGxlX2Vycm9yKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lbm8sIGNvbnN0IGNoYXIgKm1zZykKK3sKKyAgZnByaW50ZihzdGRlcnIsICIqKiAlczolZCAlc1xuIiwgZmlsZSwgbGluZW5vLCBtc2cpOworICBFUlJfcHJpbnRfZXJyb3JzX2ZwKHN0ZGVycik7CisgIC8qIGV4aXQoLTEpOyAqLworfQogCiAvKiBUaGlzIGFycmF5IHdpbGwgc3RvcmUgYWxsIG9mIHRoZSBtdXRleGVzIGF2YWlsYWJsZSB0byBPcGVuU1NMLiAqLwogc3RhdGljIE1VVEVYX1RZUEUgKm11dGV4X2J1Zj0gTlVMTDsKIAotCiBzdGF0aWMgdm9pZCBsb2NraW5nX2Z1bmN0aW9uKGludCBtb2RlLCBpbnQgbiwgY29uc3QgY2hhciAqIGZpbGUsIGludCBsaW5lKQogewotICBpZiAobW9kZSAmIENSWVBUT19MT0NLKQorICBpZihtb2RlICYgQ1JZUFRPX0xPQ0spCiAgICAgTVVURVhfTE9DSyhtdXRleF9idWZbbl0pOwogICBlbHNlCiAgICAgTVVURVhfVU5MT0NLKG11dGV4X2J1ZltuXSk7CkBAIC02OCwxMCArNjksMTAgQEAKIHsKICAgaW50IGk7CiAKLSAgbXV0ZXhfYnVmID0gbWFsbG9jKENSWVBUT19udW1fbG9ja3MoICApICogc2l6ZW9mKE1VVEVYX1RZUEUpKTsKLSAgaWYgKCFtdXRleF9idWYpCisgIG11dGV4X2J1ZiA9IG1hbGxvYyhDUllQVE9fbnVtX2xvY2tzKCkgKiBzaXplb2YoTVVURVhfVFlQRSkpOworICBpZighbXV0ZXhfYnVmKQogICAgIHJldHVybiAwOwotICBmb3IgKGkgPSAwOyAgaSA8IENSWVBUT19udW1fbG9ja3MoICApOyAgaSsrKQorICBmb3IoaSA9IDA7ICBpIDwgQ1JZUFRPX251bV9sb2NrcygpOyAgaSsrKQogICAgIE1VVEVYX1NFVFVQKG11dGV4X2J1ZltpXSk7CiAgIENSWVBUT19zZXRfaWRfY2FsbGJhY2soaWRfZnVuY3Rpb24pOwogICBDUllQVE9fc2V0X2xvY2tpbmdfY2FsbGJhY2sobG9ja2luZ19mdW5jdGlvbik7CkBAIC04MiwxMSArODMsMTEgQEAKIHsKICAgaW50IGk7CiAKLSAgaWYgKCFtdXRleF9idWYpCisgIGlmKCFtdXRleF9idWYpCiAgICAgcmV0dXJuIDA7CiAgIENSWVBUT19zZXRfaWRfY2FsbGJhY2soTlVMTCk7CiAgIENSWVBUT19zZXRfbG9ja2luZ19jYWxsYmFjayhOVUxMKTsKLSAgZm9yIChpID0gMDsgIGkgPCBDUllQVE9fbnVtX2xvY2tzKCAgKTsgIGkrKykKKyAgZm9yKGkgPSAwOyAgaSA8IENSWVBUT19udW1fbG9ja3MoKTsgIGkrKykKICAgICBNVVRFWF9DTEVBTlVQKG11dGV4X2J1ZltpXSk7CiAgIGZyZWUobXV0ZXhfYnVmKTsKICAgbXV0ZXhfYnVmID0gTlVMTDsKZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvcGVyc2lzdGFudC5jIGIvZG9jcy9leGFtcGxlcy9wZXJzaXN0YW50LmMKaW5kZXggMDkxN2RmZC4uYTFlNjE0YiAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9wZXJzaXN0YW50LmMKKysrIGIvZG9jcy9leGFtcGxlcy9wZXJzaXN0YW50LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDExLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0xOSw2ICsxOSwxMCBAQAogICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogPERFU0M+CisgKiByZS11c2luZyBoYW5kbGVzIHRvIGRvIEhUVFAgcGVyc2lzdGVudCBjb25uZWN0aW9ucworICogPC9ERVNDPgorICovCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KICNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvcG9wMy1kZWxlLmMgYi9kb2NzL2V4YW1wbGVzL3BvcDMtZGVsZS5jCmluZGV4IGZhYjU5OGYuLjE0NDk3ODMgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvcG9wMy1kZWxlLmMKKysrIGIvZG9jcy9leGFtcGxlcy9wb3AzLWRlbGUuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDYgKzE5LDEyIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIDxERVNDPgorICogUE9QMyBleGFtcGxlIHNob3dpbmcgaG93IHRvIGRlbGV0ZSBlLW1haWxzCisgKiA8L0RFU0M+CisgKi8KKwogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAKZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvcG9wMy1saXN0LmMgYi9kb2NzL2V4YW1wbGVzL3BvcDMtbGlzdC5jCmluZGV4IGFlYmNlYTYuLmI1MzBhMDQgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvcG9wMy1saXN0LmMKKysrIGIvZG9jcy9leGFtcGxlcy9wb3AzLWxpc3QuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDYgKzE5LDEyIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIDxERVNDPgorICogUE9QMyBleGFtcGxlIHRvIGxpc3QgdGhlIGNvbnRlbnRzIG9mIGEgbWFpbGJveAorICogPC9ERVNDPgorICovCisKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgogCmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL3BvcDMtbXVsdGkuYyBiL2RvY3MvZXhhbXBsZXMvcG9wMy1tdWx0aS5jCmluZGV4IDZkZjA5YTIuLmY5MzI5MTggMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvcG9wMy1tdWx0aS5jCisrKyBiL2RvY3MvZXhhbXBsZXMvcG9wMy1tdWx0aS5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTksNyArMTksMTQgQEAKICAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogPERFU0M+CisgKiBQT1AzIGV4YW1wbGUgdXNpbmcgdGhlIG11bHRpIGludGVyZmFjZQorICogPC9ERVNDPgorICovCisKICNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgogCiAvKiBUaGlzIGlzIGEgc2ltcGxlIGV4YW1wbGUgc2hvd2luZyBob3cgdG8gcmV0cmlldmUgbWFpbCB1c2luZyBsaWJjdXJsJ3MgUE9QMwpAQCAtMTEzLDggKzEyMCw3IEBACiAgICAgLyogZ2V0IGZpbGUgZGVzY3JpcHRvcnMgZnJvbSB0aGUgdHJhbnNmZXJzICovCiAgICAgbWMgPSBjdXJsX211bHRpX2Zkc2V0KG1jdXJsLCAmZmRyZWFkLCAmZmR3cml0ZSwgJmZkZXhjZXAsICZtYXhmZCk7CiAKLSAgICBpZihtYyAhPSBDVVJMTV9PSykKLSAgICB7CisgICAgaWYobWMgIT0gQ1VSTE1fT0spIHsKICAgICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9tdWx0aV9mZHNldCgpIGZhaWxlZCwgY29kZSAlZC5cbiIsIG1jKTsKICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvcG9wMy1ub29wLmMgYi9kb2NzL2V4YW1wbGVzL3BvcDMtbm9vcC5jCmluZGV4IDRlZmU2NzEuLmJjMTYyZDAgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvcG9wMy1ub29wLmMKKysrIGIvZG9jcy9leGFtcGxlcy9wb3AzLW5vb3AuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDYgKzE5LDEyIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIDxERVNDPgorICogUE9QMyBleGFtcGxlIHNob3dpbmcgaG93IHRvIHBlcmZvcm0gYSBub29wCisgKiA8L0RFU0M+CisgKi8KKwogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAKZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvcG9wMy1yZXRyLmMgYi9kb2NzL2V4YW1wbGVzL3BvcDMtcmV0ci5jCmluZGV4IGI1MTEzZmEuLmIzNmRkYjUgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvcG9wMy1yZXRyLmMKKysrIGIvZG9jcy9leGFtcGxlcy9wb3AzLXJldHIuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDYgKzE5LDEyIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIDxERVNDPgorICogUE9QMyBleGFtcGxlIHNob3dpbmcgaG93IHRvIHJldHJpZXZlIGUtbWFpbHMKKyAqIDwvREVTQz4KKyAqLworCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KIApkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy9wb3AzLXNzbC5jIGIvZG9jcy9leGFtcGxlcy9wb3AzLXNzbC5jCmluZGV4IDBiYmVjOGQuLmYwZDRlMjYgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvcG9wMy1zc2wuYworKysgYi9kb2NzL2V4YW1wbGVzL3BvcDMtc3NsLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0xOSw2ICsxOSwxMiBAQAogICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiA8REVTQz4KKyAqIFBPUDMgZXhhbXBsZSB1c2luZyBTU0wKKyAqIDwvREVTQz4KKyAqLworCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KIApkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy9wb3AzLXN0YXQuYyBiL2RvY3MvZXhhbXBsZXMvcG9wMy1zdGF0LmMKaW5kZXggN2IzMThmYy4uNDZhMGE0NSAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9wb3AzLXN0YXQuYworKysgYi9kb2NzL2V4YW1wbGVzL3BvcDMtc3RhdC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTksNiArMTksMTIgQEAKICAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogPERFU0M+CisgKiBQT1AzIGV4YW1wbGUgc2hvd2luZyBob3cgdG8gb2J0YWluIG1lc3NhZ2Ugc3RhdGlzdGljcworICogPC9ERVNDPgorICovCisKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgogCmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL3BvcDMtdGxzLmMgYi9kb2NzL2V4YW1wbGVzL3BvcDMtdGxzLmMKaW5kZXggNTgyNzhhMS4uMWE2YzQ0NyAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9wb3AzLXRscy5jCisrKyBiL2RvY3MvZXhhbXBsZXMvcG9wMy10bHMuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDYgKzE5LDEyIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIDxERVNDPgorICogUE9QMyBleGFtcGxlIHVzaW5nIFRMUworICogPC9ERVNDPgorICovCisKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgogCkBAIC01NSwxMiArNjEsMTMgQEAKICAgICAgKiBDVVJMT1BUX1NTTF9WRVJJRllQRUVSIGFuZCBDVVJMT1BUX1NTTF9WRVJJRllIT1NUIG9wdGlvbnMgdG8gMCAoZmFsc2UpLgogICAgICAqICAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1NTTF9WRVJJRllQRUVSLCAwTCk7CiAgICAgICogICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfU1NMX1ZFUklGWUhPU1QsIDBMKTsKKyAgICAgKgogICAgICAqIFRoYXQgaXMsIGluIGdlbmVyYWwsIGEgYmFkIGlkZWEuIEl0IGlzIHN0aWxsIGJldHRlciB0aGFuIHNlbmRpbmcgeW91cgotICAgICAqIGF1dGhlbnRpY2F0aW9uIGRldGFpbHMgaW4gcGxhaW4gdGV4dCB0aG91Z2guCi0gICAgICogSW5zdGVhZCwgeW91IHNob3VsZCBnZXQgdGhlIGlzc3VlciBjZXJ0aWZpY2F0ZSAob3IgdGhlIGhvc3QgY2VydGlmaWNhdGUKLSAgICAgKiBpZiB0aGUgY2VydGlmaWNhdGUgaXMgc2VsZi1zaWduZWQpIGFuZCBhZGQgaXQgdG8gdGhlIHNldCBvZiBjZXJ0aWZpY2F0ZXMKLSAgICAgKiB0aGF0IGFyZSBrbm93biB0byBsaWJjdXJsIHVzaW5nIENVUkxPUFRfQ0FJTkZPIGFuZC9vciBDVVJMT1BUX0NBUEFUSC4gU2VlCi0gICAgICogZG9jcy9TU0xDRVJUUyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4gKi8KKyAgICAgKiBhdXRoZW50aWNhdGlvbiBkZXRhaWxzIGluIHBsYWluIHRleHQgdGhvdWdoLiAgSW5zdGVhZCwgeW91IHNob3VsZCBnZXQKKyAgICAgKiB0aGUgaXNzdWVyIGNlcnRpZmljYXRlIChvciB0aGUgaG9zdCBjZXJ0aWZpY2F0ZSBpZiB0aGUgY2VydGlmaWNhdGUgaXMKKyAgICAgKiBzZWxmLXNpZ25lZCkgYW5kIGFkZCBpdCB0byB0aGUgc2V0IG9mIGNlcnRpZmljYXRlcyB0aGF0IGFyZSBrbm93biB0bworICAgICAqIGxpYmN1cmwgdXNpbmcgQ1VSTE9QVF9DQUlORk8gYW5kL29yIENVUkxPUFRfQ0FQQVRILiBTZWUgZG9jcy9TU0xDRVJUUworICAgICAqIGZvciBtb3JlIGluZm9ybWF0aW9uLiAqLwogICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9DQUlORk8sICIvcGF0aC90by9jZXJ0aWZpY2F0ZS5wZW0iKTsKIAogICAgIC8qIFNpbmNlIHRoZSB0cmFmZmljIHdpbGwgYmUgZW5jcnlwdGVkLCBpdCBpcyB2ZXJ5IHVzZWZ1bCB0byB0dXJuIG9uIGRlYnVnCmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL3BvcDMtdG9wLmMgYi9kb2NzL2V4YW1wbGVzL3BvcDMtdG9wLmMKaW5kZXggMjFjZWU4OC4uZjQ1MmI0MSAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9wb3AzLXRvcC5jCisrKyBiL2RvY3MvZXhhbXBsZXMvcG9wMy10b3AuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDYgKzE5LDEyIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIDxERVNDPgorICogUE9QMyBleGFtcGxlIHNob3dpbmcgaG93IHRvIHJldHJlaXZlIG9ubHkgdGhlIGhlYWRlcnMgb2YgYW4gZS1tYWlsCisgKiA8L0RFU0M+CisgKi8KKwogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAKZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvcG9wMy11aWRsLmMgYi9kb2NzL2V4YW1wbGVzL3BvcDMtdWlkbC5jCmluZGV4IGRlYmIxNzkuLmYxMjcxMjAgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvcG9wMy11aWRsLmMKKysrIGIvZG9jcy9leGFtcGxlcy9wb3AzLXVpZGwuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDYgKzE5LDEyIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIDxERVNDPgorICogUE9QMyBleGFtcGxlIHRvIGxpc3QgdGhlIGNvbnRlbnRzIG9mIGEgbWFpbGJveCBieSB1bmlxdWUgSUQKKyAqIDwvREVTQz4KKyAqLworCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KIApkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy9wb3N0LWNhbGxiYWNrLmMgYi9kb2NzL2V4YW1wbGVzL3Bvc3QtY2FsbGJhY2suYwppbmRleCAzZTFjZmIwLi5mNGNkNTBjIDEwMDY0NAotLS0gYS9kb2NzL2V4YW1wbGVzL3Bvc3QtY2FsbGJhY2suYworKysgYi9kb2NzL2V4YW1wbGVzL3Bvc3QtY2FsbGJhY2suYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTIsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDggKzE5LDEwIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKiBBbiBleGFtcGxlIHNvdXJjZSBjb2RlIHRoYXQgaXNzdWVzIGEgSFRUUCBQT1NUIGFuZCB3ZSBwcm92aWRlIHRoZSBhY3R1YWwKKy8qIDxERVNDPgorICogQW4gZXhhbXBsZSBzb3VyY2UgY29kZSB0aGF0IGlzc3VlcyBhIEhUVFAgUE9TVCBhbmQgd2UgcHJvdmlkZSB0aGUgYWN0dWFsCiAgKiBkYXRhIHRocm91Z2ggYSByZWFkIGNhbGxiYWNrLgorICogPC9ERVNDPgogICovCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvcG9zdGlubWVtb3J5LmMgYi9kb2NzL2V4YW1wbGVzL3Bvc3Rpbm1lbW9yeS5jCmluZGV4IDNhZmFjNGIuLjlkZDRjYjYgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvcG9zdGlubWVtb3J5LmMKKysrIGIvZG9jcy9leGFtcGxlcy9wb3N0aW5tZW1vcnkuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTMsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDYgKzE5LDEwIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiA8REVTQz4KKyAqIE1ha2UgYSBIVFRQIFBPU1Qgd2l0aCBkYXRhIGZyb20gbWVtb3J5IGFuZCByZWNlaXZlIHJlc3BvbnNlIGluIG1lbW9yeS4KKyAqIDwvREVTQz4KKyAqLwogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL3Bvc3RpdDIuYyBiL2RvY3MvZXhhbXBsZXMvcG9zdGl0Mi5jCmluZGV4IDg4ZWE3OGMuLjY3ZTY4NWYgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvcG9zdGl0Mi5jCisrKyBiL2RvY3MvZXhhbXBsZXMvcG9zdGl0Mi5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTksNiArMTksMTAgQEAKICAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIDxERVNDPgorICogSFRUUCBNdWx0aXBhcnQgZm9ybXBvc3Qgd2l0aCBmaWxlIHVwbG9hZCBhbmQgdHdvIGFkZGl0aW9uYWwgcGFydHMuCisgKiA8L0RFU0M+CisgKi8KIC8qIEV4YW1wbGUgY29kZSB0aGF0IHVwbG9hZHMgYSBmaWxlIG5hbWUgJ2ZvbycgdG8gYSByZW1vdGUgc2NyaXB0IHRoYXQgYWNjZXB0cwogICogIkhUTUwgZm9ybSBiYXNlZCIgKGFzIGRlc2NyaWJlZCBpbiBSRkMxNzM4KSB1cGxvYWRzIHVzaW5nIEhUVFAgUE9TVC4KICAqCkBAIC03OSw3ICs4Myw3IEBACiAgIGlmKGN1cmwpIHsKICAgICAvKiB3aGF0IFVSTCB0aGF0IHJlY2VpdmVzIHRoaXMgUE9TVCAqLwogICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9VUkwsICJodHRwOi8vZXhhbXBsZS5jb20vZXhhbXBsZXBvc3QuY2dpIik7Ci0gICAgaWYgKCAoYXJnYyA9PSAyKSAmJiAoIXN0cmNtcChhcmd2WzFdLCAibm9leHBlY3RoZWFkZXIiKSkgKQorICAgIGlmKChhcmdjID09IDIpICYmICghc3RyY21wKGFyZ3ZbMV0sICJub2V4cGVjdGhlYWRlciIpKSkKICAgICAgIC8qIG9ubHkgZGlzYWJsZSAxMDAtY29udGludWUgaGVhZGVyIGlmIGV4cGxpY2l0bHkgcmVxdWVzdGVkICovCiAgICAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfSFRUUEhFQURFUiwgaGVhZGVybGlzdCk7CiAgICAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX0hUVFBQT1NULCBmb3JtcG9zdCk7CmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL3Byb2dyZXNzZnVuYy5jIGIvZG9jcy9leGFtcGxlcy9wcm9ncmVzc2Z1bmMuYwppbmRleCBiMjYzNWJjLi5hYjM0ZWY5IDEwMDY0NAotLS0gYS9kb2NzL2V4YW1wbGVzL3Byb2dyZXNzZnVuYy5jCisrKyBiL2RvY3MvZXhhbXBsZXMvcHJvZ3Jlc3NmdW5jLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDEzLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0xOSw2ICsxOSwxMSBAQAogICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogPERFU0M+CisgKiBVc2UgdGhlIHByb2dyZXNzIGNhbGxiYWNrcywgb2xkIGFuZC9vciBuZXcgb25lIGRlcGVuZGluZyBvbiBhdmFpbGFibGUKKyAqIGxpYmN1cmwgdmVyc2lvbi4KKyAqIDwvREVTQz4KKyAqLwogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAKZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvcmVzb2x2ZS5jIGIvZG9jcy9leGFtcGxlcy9yZXNvbHZlLmMKaW5kZXggN2IzZTU2NS4uMTVlMzQzZiAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9yZXNvbHZlLmMKKysrIGIvZG9jcy9leGFtcGxlcy9yZXNvbHZlLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDExLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0xOSw2ICsxOSwxMSBAQAogICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogPERFU0M+CisgKiBVc2UgQ1VSTE9QVF9SRVNPTFZFIHRvIGZlZWQgY3VzdG9tIElQIGFkZHJlc3NlcyBmb3IgZ2l2ZW4gaG9zdCBuYW1lICsgcG9ydAorICogbnVtYmVyIGNvbWJpbmF0aW9ucy4KKyAqIDwvREVTQz4KKyAqLwogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAKZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvcnRzcC5jIGIvZG9jcy9leGFtcGxlcy9ydHNwLmMKaW5kZXggZmVkMzQzZC4uNjNjNDZlMSAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9ydHNwLmMKKysrIGIvZG9jcy9leGFtcGxlcy9ydHNwLmMKQEAgLTI3LDYgKzI3LDEwIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICoKICAqLworLyogPERFU0M+CisgKiBBIGJhc2ljIFJUU1AgdHJhbnNmZXIKKyAqIDwvREVTQz4KKyAqLwogCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KQEAgLTQyLDEyICs0NiwxMiBAQAogewogICBzdHJ1Y3QgdGVybWlvcyBvbGR0LCBuZXd0OwogICBpbnQgY2g7Ci0gIHRjZ2V0YXR0ciggU1RESU5fRklMRU5PLCAmb2xkdCApOworICB0Y2dldGF0dHIoU1RESU5fRklMRU5PLCAmb2xkdCk7CiAgIG5ld3QgPSBvbGR0OwotICBuZXd0LmNfbGZsYWcgJj0gfiggSUNBTk9OIHwgRUNITyApOwotICB0Y3NldGF0dHIoIFNURElOX0ZJTEVOTywgVENTQU5PVywgJm5ld3QgKTsKKyAgbmV3dC5jX2xmbGFnICY9IH4oIElDQU5PTiB8IEVDSE8pOworICB0Y3NldGF0dHIoU1RESU5fRklMRU5PLCBUQ1NBTk9XLCAmbmV3dCk7CiAgIGNoID0gZ2V0Y2hhcigpOwotICB0Y3NldGF0dHIoIFNURElOX0ZJTEVOTywgVENTQU5PVywgJm9sZHQgKTsKKyAgdGNzZXRhdHRyKFNURElOX0ZJTEVOTywgVENTQU5PVywgJm9sZHQpOwogICByZXR1cm4gY2g7CiB9CiAjZW5kaWYKQEAgLTU4LDEyICs2MiwxMiBAQAogCiAvKiBlcnJvciBoYW5kbGluZyBtYWNyb3MgKi8KICNkZWZpbmUgbXlfY3VybF9lYXN5X3NldG9wdChBLCBCLCBDKSBcCi0gIGlmICgocmVzID0gY3VybF9lYXN5X3NldG9wdCgoQSksIChCKSwgKEMpKSkgIT0gQ1VSTEVfT0spIFwKKyAgaWYoKHJlcyA9IGN1cmxfZWFzeV9zZXRvcHQoKEEpLCAoQiksIChDKSkpICE9IENVUkxFX09LKSBcCiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2Vhc3lfc2V0b3B0KCVzLCAlcywgJXMpIGZhaWxlZDogJWRcbiIsIFwKICAgICAgICAgICAgICNBLCAjQiwgI0MsIHJlcyk7CiAKICNkZWZpbmUgbXlfY3VybF9lYXN5X3BlcmZvcm0oQSkgXAotICBpZiAoKHJlcyA9IGN1cmxfZWFzeV9wZXJmb3JtKChBKSkpICE9IENVUkxFX09LKSBcCisgIGlmKChyZXMgPSBjdXJsX2Vhc3lfcGVyZm9ybSgoQSkpKSAhPSBDVVJMRV9PSykgXAogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9lYXN5X3BlcmZvcm0oJXMpIGZhaWxlZDogJWRcbiIsICNBLCByZXMpOwogCiAKQEAgLTgzLDkgKzg3LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc2RwX2ZpbGVuYW1lKQogewogICBDVVJMY29kZSByZXMgPSBDVVJMRV9PSzsKLSAgRklMRSAqc2RwX2ZwID0gZm9wZW4oc2RwX2ZpbGVuYW1lLCAid3QiKTsKKyAgRklMRSAqc2RwX2ZwID0gZm9wZW4oc2RwX2ZpbGVuYW1lLCAid2IiKTsKICAgcHJpbnRmKCJcblJUU1A6IERFU0NSSUJFICVzXG4iLCB1cmkpOwotICBpZiAoc2RwX2ZwID09IE5VTEwpIHsKKyAgaWYoc2RwX2ZwID09IE5VTEwpIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgIkNvdWxkIG5vdCBvcGVuICclcycgZm9yIHdyaXRpbmdcbiIsIHNkcF9maWxlbmFtZSk7CiAgICAgc2RwX2ZwID0gc3Rkb3V0OwogICB9CkBAIC05Niw3ICsxMDAsNyBAQAogICBteV9jdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfUlRTUF9SRVFVRVNULCAobG9uZylDVVJMX1JUU1BSRVFfREVTQ1JJQkUpOwogICBteV9jdXJsX2Vhc3lfcGVyZm9ybShjdXJsKTsKICAgbXlfY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1dSSVRFREFUQSwgc3Rkb3V0KTsKLSAgaWYgKHNkcF9mcCAhPSBzdGRvdXQpIHsKKyAgaWYoc2RwX2ZwICE9IHN0ZG91dCkgewogICAgIGZjbG9zZShzZHBfZnApOwogICB9CiB9CkBAIC0xMzcsMTQgKzE0MSwxNSBAQAogCiAKIC8qIGNvbnZlcnQgdXJsIGludG8gYW4gc2RwIGZpbGVuYW1lICovCi1zdGF0aWMgdm9pZCBnZXRfc2RwX2ZpbGVuYW1lKGNvbnN0IGNoYXIgKnVybCwgY2hhciAqc2RwX2ZpbGVuYW1lKQorc3RhdGljIHZvaWQgZ2V0X3NkcF9maWxlbmFtZShjb25zdCBjaGFyICp1cmwsIGNoYXIgKnNkcF9maWxlbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG5hbWVsZW4pCiB7CiAgIGNvbnN0IGNoYXIgKnMgPSBzdHJyY2hyKHVybCwgJy8nKTsKICAgc3RyY3B5KHNkcF9maWxlbmFtZSwgInZpZGVvLnNkcCIpOwotICBpZiAocyAhPSBOVUxMKSB7CisgIGlmKHMgIT0gTlVMTCkgewogICAgIHMrKzsKLSAgICBpZiAoc1swXSAhPSAnXDAnKSB7Ci0gICAgICBzcHJpbnRmKHNkcF9maWxlbmFtZSwgIiVzLnNkcCIsIHMpOworICAgIGlmKHNbMF0gIT0gJ1wwJykgeworICAgICAgc25wcmludGYoc2RwX2ZpbGVuYW1lLCBuYW1lbGVuLCAiJXMuc2RwIiwgcyk7CiAgICAgfQogICB9CiB9CkBAIC0xNTYsMTAgKzE2MSwxMCBAQAogewogICBpbnQgbWF4X2xlbiA9IDI1NjsKICAgY2hhciAqcyA9IG1hbGxvYyhtYXhfbGVuKTsKLSAgRklMRSAqc2RwX2ZwID0gZm9wZW4oc2RwX2ZpbGVuYW1lLCAicnQiKTsKKyAgRklMRSAqc2RwX2ZwID0gZm9wZW4oc2RwX2ZpbGVuYW1lLCAicmIiKTsKICAgY29udHJvbFswXSA9ICdcMCc7Ci0gIGlmIChzZHBfZnAgIT0gTlVMTCkgewotICAgIHdoaWxlIChmZ2V0cyhzLCBtYXhfbGVuIC0gMiwgc2RwX2ZwKSAhPSBOVUxMKSB7CisgIGlmKHNkcF9mcCAhPSBOVUxMKSB7CisgICAgd2hpbGUoZmdldHMocywgbWF4X2xlbiAtIDIsIHNkcF9mcCkgIT0gTlVMTCkgewogICAgICAgc3NjYW5mKHMsICIgYSA9IGNvbnRyb2w6ICVzIiwgY29udHJvbCk7CiAgICAgfQogICAgIGZjbG9zZShzZHBfZnApOwpAQCAtMTc0LDcgKzE3OSw4IEBACiAjaWYgMQogICBjb25zdCBjaGFyICp0cmFuc3BvcnQgPSAiUlRQL0FWUDt1bmljYXN0O2NsaWVudF9wb3J0PTEyMzQtMTIzNSI7ICAvKiBVRFAgKi8KICNlbHNlCi0gIGNvbnN0IGNoYXIgKnRyYW5zcG9ydCA9ICJSVFAvQVZQL1RDUDt1bmljYXN0O2NsaWVudF9wb3J0PTEyMzQtMTIzNSI7ICAvKiBUQ1AgKi8KKyAgLyogVENQICovCisgIGNvbnN0IGNoYXIgKnRyYW5zcG9ydCA9ICJSVFAvQVZQL1RDUDt1bmljYXN0O2NsaWVudF9wb3J0PTEyMzQtMTIzNSI7CiAjZW5kaWYKICAgY29uc3QgY2hhciAqcmFuZ2UgPSAiMC4wMDAtIjsKICAgaW50IHJjID0gRVhJVF9TVUNDRVNTOwpAQCAtMTg1LDUwICsxOTEsNTMgQEAKICAgcHJpbnRmKCIgICAgUmVxdWlyZXMgY1VSTCBWNy4yMCBvciBncmVhdGVyXG5cbiIpOwogCiAgIC8qIGNoZWNrIGNvbW1hbmQgbGluZSAqLwotICBpZiAoKGFyZ2MgIT0gMikgJiYgKGFyZ2MgIT0gMykpIHsKKyAgaWYoKGFyZ2MgIT0gMikgJiYgKGFyZ2MgIT0gMykpIHsKICAgICBiYXNlX25hbWUgPSBzdHJyY2hyKGFyZ3ZbMF0sICcvJyk7Ci0gICAgaWYgKGJhc2VfbmFtZSA9PSBOVUxMKSB7CisgICAgaWYoYmFzZV9uYW1lID09IE5VTEwpIHsKICAgICAgIGJhc2VfbmFtZSA9IHN0cnJjaHIoYXJndlswXSwgJ1xcJyk7CiAgICAgfQotICAgIGlmIChiYXNlX25hbWUgPT0gTlVMTCkgeworICAgIGlmKGJhc2VfbmFtZSA9PSBOVUxMKSB7CiAgICAgICBiYXNlX25hbWUgPSBhcmd2WzBdOwotICAgIH0gZWxzZSB7CisgICAgfQorICAgIGVsc2UgewogICAgICAgYmFzZV9uYW1lKys7CiAgICAgfQogICAgIHByaW50ZigiVXNhZ2U6ICAgJXMgdXJsIFt0cmFuc3BvcnRdXG4iLCBiYXNlX25hbWUpOwogICAgIHByaW50ZigiICAgICAgICAgdXJsIG9mIHZpZGVvIHNlcnZlclxuIik7Ci0gICAgcHJpbnRmKCIgICAgICAgICB0cmFuc3BvcnQgKG9wdGlvbmFsKSBzcGVjaWZpZXIgZm9yIG1lZGlhIHN0cmVhbSBwcm90b2NvbFxuIik7CisgICAgcHJpbnRmKCIgICAgICAgICB0cmFuc3BvcnQgKG9wdGlvbmFsKSBzcGVjaWZpZXIgZm9yIG1lZGlhIHN0cmVhbSIKKyAgICAgICAgICAgIiBwcm90b2NvbFxuIik7CiAgICAgcHJpbnRmKCIgICAgICAgICBkZWZhdWx0IHRyYW5zcG9ydDogJXNcbiIsIHRyYW5zcG9ydCk7CiAgICAgcHJpbnRmKCJFeGFtcGxlOiAlcyBydHNwOi8vMTkyLjE2OC4wLjIvbWVkaWEvdmlkZW8xXG5cbiIsIGJhc2VfbmFtZSk7CiAgICAgcmMgPSBFWElUX0ZBSUxVUkU7Ci0gIH0gZWxzZSB7CisgIH0KKyAgZWxzZSB7CiAgICAgY29uc3QgY2hhciAqdXJsID0gYXJndlsxXTsKICAgICBjaGFyICp1cmkgPSBtYWxsb2Moc3RybGVuKHVybCkgKyAzMik7CiAgICAgY2hhciAqc2RwX2ZpbGVuYW1lID0gbWFsbG9jKHN0cmxlbih1cmwpICsgMzIpOwogICAgIGNoYXIgKmNvbnRyb2wgPSBtYWxsb2Moc3RybGVuKHVybCkgKyAzMik7CiAgICAgQ1VSTGNvZGUgcmVzOwotICAgIGdldF9zZHBfZmlsZW5hbWUodXJsLCBzZHBfZmlsZW5hbWUpOwotICAgIGlmIChhcmdjID09IDMpIHsKKyAgICBnZXRfc2RwX2ZpbGVuYW1lKHVybCwgc2RwX2ZpbGVuYW1lLCBzdHJsZW4odXJsKSArIDMyKTsKKyAgICBpZihhcmdjID09IDMpIHsKICAgICAgIHRyYW5zcG9ydCA9IGFyZ3ZbMl07CiAgICAgfQogCiAgICAgLyogaW5pdGlhbGl6ZSBjdXJsICovCiAgICAgcmVzID0gY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpOwotICAgIGlmIChyZXMgPT0gQ1VSTEVfT0spIHsKKyAgICBpZihyZXMgPT0gQ1VSTEVfT0spIHsKICAgICAgIGN1cmxfdmVyc2lvbl9pbmZvX2RhdGEgKmRhdGEgPSBjdXJsX3ZlcnNpb25faW5mbyhDVVJMVkVSU0lPTl9OT1cpOwogICAgICAgQ1VSTCAqY3VybDsKICAgICAgIGZwcmludGYoc3RkZXJyLCAiICAgIGNVUkwgViVzIGxvYWRlZFxuIiwgZGF0YS0+dmVyc2lvbik7CiAKICAgICAgIC8qIGluaXRpYWxpemUgdGhpcyBjdXJsIHNlc3Npb24gKi8KICAgICAgIGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpOwotICAgICAgaWYgKGN1cmwgIT0gTlVMTCkgeworICAgICAgaWYoY3VybCAhPSBOVUxMKSB7CiAgICAgICAgIG15X2N1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9WRVJCT1NFLCAwTCk7CiAgICAgICAgIG15X2N1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9OT1BST0dSRVNTLCAxTCk7CiAgICAgICAgIG15X2N1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9IRUFERVJEQVRBLCBzdGRvdXQpOwogICAgICAgICBteV9jdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfVVJMLCB1cmwpOwogCiAgICAgICAgIC8qIHJlcXVlc3Qgc2VydmVyIG9wdGlvbnMgKi8KLSAgICAgICAgc3ByaW50Zih1cmksICIlcyIsIHVybCk7CisgICAgICAgIHNucHJpbnRmKHVyaSwgc3RybGVuKHVybCkgKyAzMiwgIiVzIiwgdXJsKTsKICAgICAgICAgcnRzcF9vcHRpb25zKGN1cmwsIHVyaSk7CiAKICAgICAgICAgLyogcmVxdWVzdCBzZXNzaW9uIGRlc2NyaXB0aW9uIGFuZCB3cml0ZSByZXNwb25zZSB0byBzZHAgZmlsZSAqLwpAQCAtMjM4LDExICsyNDcsMTEgQEAKICAgICAgICAgZ2V0X21lZGlhX2NvbnRyb2xfYXR0cmlidXRlKHNkcF9maWxlbmFtZSwgY29udHJvbCk7CiAKICAgICAgICAgLyogc2V0dXAgbWVkaWEgc3RyZWFtICovCi0gICAgICAgIHNwcmludGYodXJpLCAiJXMvJXMiLCB1cmwsIGNvbnRyb2wpOworICAgICAgICBzbnByaW50Zih1cmksIHN0cmxlbih1cmwpICsgMzIsICIlcy8lcyIsIHVybCwgY29udHJvbCk7CiAgICAgICAgIHJ0c3Bfc2V0dXAoY3VybCwgdXJpLCB0cmFuc3BvcnQpOwogCiAgICAgICAgIC8qIHN0YXJ0IHBsYXlpbmcgbWVkaWEgc3RyZWFtICovCi0gICAgICAgIHNwcmludGYodXJpLCAiJXMvIiwgdXJsKTsKKyAgICAgICAgc25wcmludGYodXJpLCBzdHJsZW4odXJsKSArIDMyLCAiJXMvIiwgdXJsKTsKICAgICAgICAgcnRzcF9wbGF5KGN1cmwsIHVyaSwgcmFuZ2UpOwogICAgICAgICBwcmludGYoIlBsYXlpbmcgdmlkZW8sIHByZXNzIGFueSBrZXkgdG8gc3RvcCAuLi4iKTsKICAgICAgICAgX2dldGNoKCk7CkBAIC0yNTQsMTEgKzI2MywxMyBAQAogICAgICAgICAvKiBjbGVhbnVwICovCiAgICAgICAgIGN1cmxfZWFzeV9jbGVhbnVwKGN1cmwpOwogICAgICAgICBjdXJsID0gTlVMTDsKLSAgICAgIH0gZWxzZSB7CisgICAgICB9CisgICAgICBlbHNlIHsKICAgICAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2Vhc3lfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgICB9CiAgICAgICBjdXJsX2dsb2JhbF9jbGVhbnVwKCk7Ci0gICAgfSBlbHNlIHsKKyAgICB9CisgICAgZWxzZSB7CiAgICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZ2xvYmFsX2luaXQoJXMpIGZhaWxlZDogJWRcbiIsCiAgICAgICAgICAgICAgICJDVVJMX0dMT0JBTF9BTEwiLCByZXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvc2FtcGxlY29udi5jIGIvZG9jcy9leGFtcGxlcy9zYW1wbGVjb252LmMKaW5kZXggM2RiMzE2MC4uZWVjZTZhYSAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9zYW1wbGVjb252LmMKKysrIGIvZG9jcy9leGFtcGxlcy9zYW1wbGVjb252LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDExLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0xOSwxMCArMTksMTMgQEAKICAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIDxERVNDPgorICogVGhpcyBpcyBhIHNpbXBsZSBleGFtcGxlIHNob3dpbmcgaG93IGEgcHJvZ3JhbSBvbiBhIG5vbi1BU0NJSSBwbGF0Zm9ybQorICogd291bGQgaW52b2tlIGNhbGxiYWNrcyB0byBkbyBpdHMgb3duIGNvZGVzZXQgY29udmVyc2lvbnMgaW5zdGVhZCBvZgorICogdXNpbmcgdGhlIGJ1aWx0LWluIGljb252IGZ1bmN0aW9ucyBpbiBsaWJjdXJsLgorICogPC9ERVNDPgorICovCiAvKgotICAgVGhpcyBpcyBhIHNpbXBsZSBleGFtcGxlIHNob3dpbmcgaG93IGEgcHJvZ3JhbSBvbiBhIG5vbi1BU0NJSSBwbGF0Zm9ybQotICAgd291bGQgaW52b2tlIGNhbGxiYWNrcyB0byBkbyBpdHMgb3duIGNvZGVzZXQgY29udmVyc2lvbnMgaW5zdGVhZCBvZgotICAgdXNpbmcgdGhlIGJ1aWx0LWluIGljb252IGZ1bmN0aW9ucyBpbiBsaWJjdXJsLgogCiAgICBUaGUgSUJNLTEwNDcgRUJDRElDIGNvZGVzZXQgaXMgdXNlZCBmb3IgdGhpcyBleGFtcGxlIGJ1dCB0aGUgY29kZQogICAgd291bGQgYmUgc2ltaWxhciBmb3Igb3RoZXIgbm9uLUFTQ0lJIGNvZGVzZXRzLgpAQCAtNDYsMTAgKzQ5LDExIEBACiAgICAgaW50IHJjOwogICAgIHRlbXBwdHJpbiA9IHRlbXBwdHJvdXQgPSBidWZmZXI7CiAgICAgcmMgPSBwbGF0Zm9ybV9hMmUoJnRlbXBwdHJpbiwgJmJ5dGVzLCAmdGVtcHB0cm91dCwgJmJ5dGVzKTsKLSAgICBpZiAocmMgPT0gUExBVEZPUk1fQ09OVl9PSykgewotICAgICAgcmV0dXJuKENVUkxFX09LKTsKLSAgICB9IGVsc2UgewotICAgICAgcmV0dXJuKENVUkxFX0NPTlZfRkFJTEVEKTsKKyAgICBpZihyYyA9PSBQTEFURk9STV9DT05WX09LKSB7CisgICAgICByZXR1cm4gQ1VSTEVfT0s7CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIENVUkxFX0NPTlZfRkFJTEVEOwogICAgIH0KIH0KIApAQCAtNjAsMTAgKzY0LDExIEBACiAgICAgaW50IHJjOwogICAgIHRlbXBwdHJpbiA9IHRlbXBwdHJvdXQgPSBidWZmZXI7CiAgICAgcmMgPSBwbGF0Zm9ybV9lMmEoJnRlbXBwdHJpbiwgJmJ5dGVzLCAmdGVtcHB0cm91dCwgJmJ5dGVzKTsKLSAgICBpZiAocmMgPT0gUExBVEZPUk1fQ09OVl9PSykgewotICAgICAgcmV0dXJuKENVUkxFX09LKTsKLSAgICB9IGVsc2UgewotICAgICAgcmV0dXJuKENVUkxFX0NPTlZfRkFJTEVEKTsKKyAgICBpZihyYyA9PSBQTEFURk9STV9DT05WX09LKSB7CisgICAgICByZXR1cm4gQ1VSTEVfT0s7CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIENVUkxFX0NPTlZfRkFJTEVEOwogICAgIH0KIH0KIApAQCAtNzQsMTAgKzc5LDExIEBACiAgICAgaW50IHJjOwogICAgIHRlbXBwdHJpbiA9IHRlbXBwdHJvdXQgPSBidWZmZXI7CiAgICAgcmMgPSBwbGF0Zm9ybV91MmUoJnRlbXBwdHJpbiwgJmJ5dGVzLCAmdGVtcHB0cm91dCwgJmJ5dGVzKTsKLSAgICBpZiAocmMgPT0gUExBVEZPUk1fQ09OVl9PSykgewotICAgICAgcmV0dXJuKENVUkxFX09LKTsKLSAgICB9IGVsc2UgewotICAgICAgcmV0dXJuKENVUkxFX0NPTlZfRkFJTEVEKTsKKyAgICBpZihyYyA9PSBQTEFURk9STV9DT05WX09LKSB7CisgICAgICByZXR1cm4gQ1VSTEVfT0s7CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmV0dXJuIENVUkxFX0NPTlZfRkFJTEVEOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy9zZW5kcmVjdi5jIGIvZG9jcy9leGFtcGxlcy9zZW5kcmVjdi5jCmluZGV4IDg4ZmRkZjUuLjQxZTI4M2MgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvc2VuZHJlY3YuYworKysgYi9kb2NzL2V4YW1wbGVzL3NlbmRyZWN2LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDEyLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0xOSw3ICsxOSwxMCBAQAogICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyogQW4gZXhhbXBsZSBvZiBjdXJsX2Vhc3lfc2VuZCgpIGFuZCBjdXJsX2Vhc3lfcmVjdigpIHVzYWdlLiAqLworLyogPERFU0M+CisgKiBBbiBleGFtcGxlIG9mIGN1cmxfZWFzeV9zZW5kKCkgYW5kIGN1cmxfZWFzeV9yZWN2KCkgdXNhZ2UuCisgKiA8L0RFU0M+CisgKi8KIAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CkBAIC00MSwxMiArNDQsMTAgQEAKIAogICBGRF9TRVQoc29ja2ZkLCAmZXJyZmQpOyAvKiBhbHdheXMgY2hlY2sgZm9yIGVycm9yICovCiAKLSAgaWYoZm9yX3JlY3YpCi0gIHsKKyAgaWYoZm9yX3JlY3YpIHsKICAgICBGRF9TRVQoc29ja2ZkLCAmaW5mZCk7CiAgIH0KLSAgZWxzZQotICB7CisgIGVsc2UgewogICAgIEZEX1NFVChzb2NrZmQsICZvdXRmZCk7CiAgIH0KIApAQCAtNjYsNiArNjcsMTQgQEAKICAgc2l6ZV90IGlvbGVuOwogICBjdXJsX29mZl90IG5yZWFkOwogCisgIC8qIEEgZ2VuZXJhbCBub3RlIG9mIGNhdXRpb24gaGVyZTogaWYgeW91J3JlIHVzaW5nIGN1cmxfZWFzeV9yZWN2KCkgb3IKKyAgICAgY3VybF9lYXN5X3NlbmQoKSB0byBpbXBsZW1lbnQgSFRUUCBvciBfYW55XyBvdGhlciBwcm90b2NvbCBsaWJjdXJsCisgICAgIHN1cHBvcnRzICJuYXRpdmVseSIsIHlvdSdyZSBkb2luZyBpdCB3cm9uZyBhbmQgeW91IHNob3VsZCBzdG9wLgorCisgICAgIFRoaXMgZXhhbXBsZSB1c2VzIEhUVFAgb25seSB0byBzaG93IGhvdyB0byB1c2UgdGhpcyBBUEksIGl0IGRvZXMgbm90CisgICAgIHN1Z2dlc3QgdGhhdCB3cml0aW5nIGFuIGFwcGxpY2F0aW9uIGRvaW5nIHRoaXMgaXMgc2Vuc2libGUuCisgICovCisKICAgY3VybCA9IGN1cmxfZWFzeV9pbml0KCk7CiAgIGlmKGN1cmwpIHsKICAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfVVJMLCAiaHR0cDovL2V4YW1wbGUuY29tIik7CkBAIC03Myw4ICs4Miw3IEBACiAgICAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX0NPTk5FQ1RfT05MWSwgMUwpOwogICAgIHJlcyA9IGN1cmxfZWFzeV9wZXJmb3JtKGN1cmwpOwogCi0gICAgaWYoQ1VSTEVfT0sgIT0gcmVzKQotICAgIHsKKyAgICBpZihDVVJMRV9PSyAhPSByZXMpIHsKICAgICAgIHByaW50ZigiRXJyb3I6ICVzXG4iLCBzdHJlcnJvcihyZXMpKTsKICAgICAgIHJldHVybiAxOwogICAgIH0KQEAgLTg1LDE3ICs5MywxNSBAQAogICAgICAqLwogICAgIHJlcyA9IGN1cmxfZWFzeV9nZXRpbmZvKGN1cmwsIENVUkxJTkZPX0xBU1RTT0NLRVQsICZzb2NrZXh0cik7CiAKLSAgICBpZihDVVJMRV9PSyAhPSByZXMpCi0gICAgeworICAgIGlmKENVUkxFX09LICE9IHJlcykgewogICAgICAgcHJpbnRmKCJFcnJvcjogJXNcbiIsIGN1cmxfZWFzeV9zdHJlcnJvcihyZXMpKTsKICAgICAgIHJldHVybiAxOwogICAgIH0KIAotICAgIHNvY2tmZCA9IHNvY2tleHRyOworICAgIHNvY2tmZCA9IChjdXJsX3NvY2tldF90KXNvY2tleHRyOwogCiAgICAgLyogd2FpdCBmb3IgdGhlIHNvY2tldCB0byBiZWNvbWUgcmVhZHkgZm9yIHNlbmRpbmcgKi8KLSAgICBpZighd2FpdF9vbl9zb2NrZXQoc29ja2ZkLCAwLCA2MDAwMEwpKQotICAgIHsKKyAgICBpZighd2FpdF9vbl9zb2NrZXQoc29ja2ZkLCAwLCA2MDAwMEwpKSB7CiAgICAgICBwcmludGYoIkVycm9yOiB0aW1lb3V0LlxuIik7CiAgICAgICByZXR1cm4gMTsKICAgICB9CkBAIC0xMDUsMTYgKzExMSwxNCBAQAogICAgICAqIHRvIHNlZSBpZiBhbGwgdGhlIHJlcXVlc3QgaGFzIGJlZW4gc2VudCAqLwogICAgIHJlcyA9IGN1cmxfZWFzeV9zZW5kKGN1cmwsIHJlcXVlc3QsIHN0cmxlbihyZXF1ZXN0KSwgJmlvbGVuKTsKIAotICAgIGlmKENVUkxFX09LICE9IHJlcykKLSAgICB7CisgICAgaWYoQ1VSTEVfT0sgIT0gcmVzKSB7CiAgICAgICBwcmludGYoIkVycm9yOiAlc1xuIiwgY3VybF9lYXN5X3N0cmVycm9yKHJlcykpOwogICAgICAgcmV0dXJuIDE7CiAgICAgfQogICAgIHB1dHMoIlJlYWRpbmcgcmVzcG9uc2UuIik7CiAKICAgICAvKiByZWFkIHRoZSByZXNwb25zZSAqLwotICAgIGZvcig7OykKLSAgICB7CisgICAgZm9yKDs7KSB7CiAgICAgICBjaGFyIGJ1ZlsxMDI0XTsKIAogICAgICAgd2FpdF9vbl9zb2NrZXQoc29ja2ZkLCAxLCA2MDAwMEwpOwpkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy9zZXBoZWFkZXJzLmMgYi9kb2NzL2V4YW1wbGVzL3NlcGhlYWRlcnMuYwppbmRleCA3NDAyZTM1Li5hODY1ZDU3IDEwMDY0NAotLS0gYS9kb2NzL2V4YW1wbGVzL3NlcGhlYWRlcnMuYworKysgYi9kb2NzL2V4YW1wbGVzL3NlcGhlYWRlcnMuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDYgKzE5LDEwIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiA8REVTQz4KKyAqIFNpbXBsZSBIVFRQIEdFVCB0aGF0IHN0b3JlcyB0aGUgaGVhZGVycyBpbiBhIHNlcGFyYXRlIGZpbGUKKyAqIDwvREVTQz4KKyAqLwogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CkBAIC0yNyw3ICszMSw3IEBACiAKIHN0YXRpYyBzaXplX3Qgd3JpdGVfZGF0YSh2b2lkICpwdHIsIHNpemVfdCBzaXplLCBzaXplX3Qgbm1lbWIsIHZvaWQgKnN0cmVhbSkKIHsKLSAgaW50IHdyaXR0ZW4gPSBmd3JpdGUocHRyLCBzaXplLCBubWVtYiwgKEZJTEUgKilzdHJlYW0pOworICBzaXplX3Qgd3JpdHRlbiA9IGZ3cml0ZShwdHIsIHNpemUsIG5tZW1iLCAoRklMRSAqKXN0cmVhbSk7CiAgIHJldHVybiB3cml0dGVuOwogfQogCmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL3Nlc3Npb25pbmZvLmMgYi9kb2NzL2V4YW1wbGVzL3Nlc3Npb25pbmZvLmMKaW5kZXggMjY0MWM3MS4uMTFjODdjZCAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9zZXNzaW9uaW5mby5jCisrKyBiL2RvY3MvZXhhbXBsZXMvc2Vzc2lvbmluZm8uYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTMsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDYgKzE5LDEwIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiA8REVTQz4KKyAqIFVzZXMgdGhlIENVUkxJTkZPX1RMU19TRVNTSU9OIGRhdGEuCisgKiA8L0RFU0M+CisgKi8KIAogLyogTm90ZSB0aGF0IHRoaXMgZXhhbXBsZSBjdXJyZW50bHkgcmVxdWlyZXMgY1VSTCB0byBiZSBsaW5rZWQgYWdhaW5zdAogICAgR251VExTIChhbmQgdGhpcyBwcm9ncmFtIG11c3QgYWxzbyBiZSBsaW5rZWQgYWdhaW5zdCAtbGdudXRscykuICovCmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL3NmdHBnZXQuYyBiL2RvY3MvZXhhbXBsZXMvc2Z0cGdldC5jCmluZGV4IDQzNDI5OWQuLjFjYTc0NDggMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvc2Z0cGdldC5jCisrKyBiL2RvY3MvZXhhbXBsZXMvc2Z0cGdldC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTksNiArMTksMTAgQEAKICAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIDxERVNDPgorICogR2V0cyBhIGZpbGUgdXNpbmcgYW4gU0ZUUCBVUkwuCisgKiA8L0RFU0M+CisgKi8KIAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAKZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvc2ltcGxlLmMgYi9kb2NzL2V4YW1wbGVzL3NpbXBsZS5jCmluZGV4IDE5MTJjZTYuLjcyMjZmNGIgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvc2ltcGxlLmMKKysrIGIvZG9jcy9leGFtcGxlcy9zaW1wbGUuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTMsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDYgKzE5LDEwIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiA8REVTQz4KKyAqIFZlcnkgc2ltcGxlIEhUVFAgR0VUCisgKiA8L0RFU0M+CisgKi8KICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgogCmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL3NpbXBsZXBvc3QuYyBiL2RvY3MvZXhhbXBsZXMvc2ltcGxlcG9zdC5jCmluZGV4IDg2NTc3NzEuLjk5ZGYwNTcgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvc2ltcGxlcG9zdC5jCisrKyBiL2RvY3MvZXhhbXBsZXMvc2ltcGxlcG9zdC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTksNiArMTksMTAgQEAKICAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIDxERVNDPgorICogVmVyeSBzaW1wbGUgSFRUUCBQT1NUCisgKiA8L0RFU0M+CisgKi8KICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgpkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy9zaW1wbGVzc2wuYyBiL2RvY3MvZXhhbXBsZXMvc2ltcGxlc3NsLmMKaW5kZXggYWVmYjc5Zi4uODE3MTNhYiAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9zaW1wbGVzc2wuYworKysgYi9kb2NzL2V4YW1wbGVzL3NpbXBsZXNzbC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTksNiArMTksMTAgQEAKICAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIDxERVNDPgorICogU2hvd3MgSFRUUFMgdXNhZ2Ugd2l0aCBjbGllbnQgY2VydHMgYW5kIG9wdGlvbmFsIHNzbCBlbmdpbmUgdXNlLgorICogPC9ERVNDPgorICovCiAjaW5jbHVkZSA8c3RkaW8uaD4KIAogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgpAQCAtNDMsNyArNDcsNiBAQAogCiBpbnQgbWFpbih2b2lkKQogewotICBpbnQgaTsKICAgQ1VSTCAqY3VybDsKICAgQ1VSTGNvZGUgcmVzOwogICBGSUxFICpoZWFkZXJmaWxlOwpAQCAtNTEsNiArNTQsNyBAQAogCiAgIHN0YXRpYyBjb25zdCBjaGFyICpwQ2VydEZpbGUgPSAidGVzdGNlcnQucGVtIjsKICAgc3RhdGljIGNvbnN0IGNoYXIgKnBDQUNlcnRGaWxlPSJjYWNlcnQucGVtIjsKKyAgc3RhdGljIGNvbnN0IGNoYXIgKnBIZWFkZXJGaWxlID0gImR1bXBpdCI7CiAKICAgY29uc3QgY2hhciAqcEtleU5hbWU7CiAgIGNvbnN0IGNoYXIgKnBLZXlUeXBlOwpAQCAtNjcsNyArNzEsNyBAQAogICBwRW5naW5lICAgPSBOVUxMOwogI2VuZGlmCiAKLSAgaGVhZGVyZmlsZSA9IGZvcGVuKCJkdW1waXQiLCAidyIpOworICBoZWFkZXJmaWxlID0gZm9wZW4ocEhlYWRlckZpbGUsICJ3YiIpOwogCiAgIGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfREVGQVVMVCk7CiAKQEAgLTc3LDQ3ICs4MSw0NiBAQAogICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9VUkwsICJIVFRQUzovL3lvdXIuZmF2b3VyaXRlLnNzbC5zaXRlIik7CiAgICAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX0hFQURFUkRBVEEsIGhlYWRlcmZpbGUpOwogCi0gICAgZm9yKGkgPSAwOyBpIDwgMTsgaSsrKSAvKiBzaW5nbGUtaXRlcmF0aW9uIGxvb3AsIGp1c3QgdG8gYnJlYWsgb3V0IGZyb20gKi8KLSAgICB7Ci0gICAgICBpZiAocEVuZ2luZSkgICAgICAgICAgICAgLyogdXNlIGNyeXB0byBlbmdpbmUgKi8KLSAgICAgIHsKLSAgICAgICAgaWYgKGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9TU0xFTkdJTkUscEVuZ2luZSkgIT0gQ1VSTEVfT0spCi0gICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAvKiBsb2FkIHRoZSBjcnlwdG8gZW5naW5lICovCi0gICAgICAgICAgZnByaW50ZihzdGRlcnIsImNhbid0IHNldCBjcnlwdG8gZW5naW5lXG4iKTsKKyAgICBkbyB7IC8qIGR1bW15IGxvb3AsIGp1c3QgdG8gYnJlYWsgb3V0IGZyb20gKi8KKyAgICAgIGlmKHBFbmdpbmUpIHsKKyAgICAgICAgLyogdXNlIGNyeXB0byBlbmdpbmUgKi8KKyAgICAgICAgaWYoY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1NTTEVOR0lORSwgcEVuZ2luZSkgIT0gQ1VSTEVfT0spIHsKKyAgICAgICAgICAvKiBsb2FkIHRoZSBjcnlwdG8gZW5naW5lICovCisgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJjYW4ndCBzZXQgY3J5cHRvIGVuZ2luZVxuIik7CiAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9TU0xFTkdJTkVfREVGQVVMVCwxTCkgIT0gQ1VSTEVfT0spCi0gICAgICAgIHsgLyogc2V0IHRoZSBjcnlwdG8gZW5naW5lIGFzIGRlZmF1bHQgKi8KKyAgICAgICAgaWYoY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1NTTEVOR0lORV9ERUZBVUxULCAxTCkgIT0gQ1VSTEVfT0spIHsKKyAgICAgICAgICAvKiBzZXQgdGhlIGNyeXB0byBlbmdpbmUgYXMgZGVmYXVsdCAqLwogICAgICAgICAgIC8qIG9ubHkgbmVlZGVkIGZvciB0aGUgZmlyc3QgdGltZSB5b3UgbG9hZAogICAgICAgICAgICAgIGEgZW5naW5lIGluIGEgY3VybCBvYmplY3QuLi4gKi8KLSAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwiY2FuJ3Qgc2V0IGNyeXB0byBlbmdpbmUgYXMgZGVmYXVsdFxuIik7CisgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJjYW4ndCBzZXQgY3J5cHRvIGVuZ2luZSBhcyBkZWZhdWx0XG4iKTsKICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgfQogICAgICAgLyogY2VydCBpcyBzdG9yZWQgUEVNIGNvZGVkIGluIGZpbGUuLi4gKi8KICAgICAgIC8qIHNpbmNlIFBFTSBpcyBkZWZhdWx0LCB3ZSBuZWVkbid0IHNldCBpdCBmb3IgUEVNICovCi0gICAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsQ1VSTE9QVF9TU0xDRVJUVFlQRSwiUEVNIik7CisgICAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfU1NMQ0VSVFRZUEUsICJQRU0iKTsKIAogICAgICAgLyogc2V0IHRoZSBjZXJ0IGZvciBjbGllbnQgYXV0aGVudGljYXRpb24gKi8KLSAgICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCxDVVJMT1BUX1NTTENFUlQscENlcnRGaWxlKTsKKyAgICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9TU0xDRVJULCBwQ2VydEZpbGUpOwogCiAgICAgICAvKiBzb3JyeSwgZm9yIGVuZ2luZSB3ZSBtdXN0IHNldCB0aGUgcGFzc3BocmFzZQogICAgICAgICAgKGlmIHRoZSBrZXkgaGFzIG9uZS4uLikgKi8KLSAgICAgIGlmIChwUGFzc3BocmFzZSkKLSAgICAgICAgY3VybF9lYXN5X3NldG9wdChjdXJsLENVUkxPUFRfS0VZUEFTU1dELHBQYXNzcGhyYXNlKTsKKyAgICAgIGlmKHBQYXNzcGhyYXNlKQorICAgICAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfS0VZUEFTU1dELCBwUGFzc3BocmFzZSk7CiAKICAgICAgIC8qIGlmIHdlIHVzZSBhIGtleSBzdG9yZWQgaW4gYSBjcnlwdG8gZW5naW5lLAogICAgICAgICAgd2UgbXVzdCBzZXQgdGhlIGtleSB0eXBlIHRvICJFTkciICovCi0gICAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsQ1VSTE9QVF9TU0xLRVlUWVBFLHBLZXlUeXBlKTsKKyAgICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9TU0xLRVlUWVBFLCBwS2V5VHlwZSk7CiAKICAgICAgIC8qIHNldCB0aGUgcHJpdmF0ZSBrZXkgKGZpbGUgb3IgSUQgaW4gZW5naW5lKSAqLwotICAgICAgY3VybF9lYXN5X3NldG9wdChjdXJsLENVUkxPUFRfU1NMS0VZLHBLZXlOYW1lKTsKKyAgICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9TU0xLRVksIHBLZXlOYW1lKTsKIAogICAgICAgLyogc2V0IHRoZSBmaWxlIHdpdGggdGhlIGNlcnRzIHZhaWxkYXRpbmcgdGhlIHNlcnZlciAqLwotICAgICAgY3VybF9lYXN5X3NldG9wdChjdXJsLENVUkxPUFRfQ0FJTkZPLHBDQUNlcnRGaWxlKTsKKyAgICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9DQUlORk8sIHBDQUNlcnRGaWxlKTsKIAogICAgICAgLyogZGlzY29ubmVjdCBpZiB3ZSBjYW4ndCB2YWxpZGF0ZSBzZXJ2ZXIncyBjZXJ0ICovCi0gICAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwxTCk7CisgICAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIsIDFMKTsKIAogICAgICAgLyogUGVyZm9ybSB0aGUgcmVxdWVzdCwgcmVzIHdpbGwgZ2V0IHRoZSByZXR1cm4gY29kZSAqLwogICAgICAgcmVzID0gY3VybF9lYXN5X3BlcmZvcm0oY3VybCk7CkBAIC0xMjcsNyArMTMwLDcgQEAKICAgICAgICAgICAgICAgICBjdXJsX2Vhc3lfc3RyZXJyb3IocmVzKSk7CiAKICAgICAgIC8qIHdlIGFyZSBkb25lLi4uICovCi0gICAgfQorICAgIH0gd2hpbGUoMCk7CiAgICAgLyogYWx3YXlzIGNsZWFudXAgKi8KICAgICBjdXJsX2Vhc3lfY2xlYW51cChjdXJsKTsKICAgfQpkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy9zbW9vdGgtZ3RrLXRocmVhZC5jIGIvZG9jcy9leGFtcGxlcy9zbW9vdGgtZ3RrLXRocmVhZC5jCmluZGV4IDkzMmY2ZTMuLjU0N2NjMGYgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvc21vb3RoLWd0ay10aHJlYWQuYworKysgYi9kb2NzL2V4YW1wbGVzL3Ntb290aC1ndGstdGhyZWFkLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDExLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0xOSw5ICsxOSwxMiBAQAogICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyogVGhpcyBpcyBhIG11bHRpIHRocmVhZGVkIGFwcGxpY2F0aW9uIHRoYXQgdXNlcyBhIHByb2dyZXNzIGJhciB0byBzaG93CisvKiA8REVTQz4KKyAqIEEgbXVsdGkgdGhyZWFkZWQgYXBwbGljYXRpb24gdGhhdCB1c2VzIGEgcHJvZ3Jlc3MgYmFyIHRvIHNob3cKICAqIHN0YXR1cy4gIEl0IHVzZXMgR3RrKyB0byBtYWtlIGEgc21vb3RoIHB1bHNlLgotICoKKyAqIDwvREVTQz4KKyAqLworLyoKICAqIFdyaXR0ZW4gYnkgSnVkIEJpc2hvcCBhZnRlciBzdHVkeWluZyB0aGUgb3RoZXIgZXhhbXBsZXMgcHJvdmlkZWQgd2l0aAogICogbGliY3VybC4KICAqCkBAIC03MSwyMiArNzQsMTkgQEAKIAogICAvKiBTdG9wIHRocmVhZHMgZnJvbSBlbnRlcmluZyB1bmxlc3MgaiBpcyBpbmNyZW1lbnRlZCAqLwogICBwdGhyZWFkX211dGV4X2xvY2soJmxvY2spOwotICB3aGlsZSAoIGogPCBudW1fdXJscyApCi0gIHsKKyAgd2hpbGUoaiA8IG51bV91cmxzKSB7CiAgICAgcHJpbnRmKCJqID0gJWRcbiIsIGopOwogCiAgICAgaHR0cCA9CiAgICAgICBnX3N0cmR1cF9wcmludGYoInhvYXAud2VhdGhlci5jb20vd2VhdGhlci9sb2NhbC8lcz9jYz0qJmRheWY9NSZ1bml0PWlcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgdXJsc1tqXSk7CiAKLSAgICBwcmludGYoICJodHRwICVzIiwgaHR0cCApOworICAgIHByaW50ZigiaHR0cCAlcyIsIGh0dHApOwogCiAgICAgY3VybCA9IGN1cmxfZWFzeV9pbml0KCk7Ci0gICAgaWYoY3VybCkKLSAgICB7CisgICAgaWYoY3VybCkgewogCi0gICAgICBvdXRmaWxlID0gZm9wZW4odXJsc1tqXSwgInciKTsKLSAgICAgIC8qIHByaW50ZigiZm9wZW5cbiIpOyAqLworICAgICAgb3V0ZmlsZSA9IGZvcGVuKHVybHNbal0sICJ3YiIpOwogCiAgICAgICAvKiBTZXQgdGhlIFVSTCBhbmQgdHJhbnNmZXIgdHlwZSAqLwogICAgICAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1VSTCwgaHR0cCk7CkBAIC0yMTYsNyArMjE2LDcgQEAKICAgZ19zaWduYWxfY29ubmVjdChHX09CSkVDVCAodG9wX3dpbmRvdyksICJkZWxldGUtZXZlbnQiLAogICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJBQ0soY2JfZGVsZXRlKSwgTlVMTCk7CiAKLSAgaWYgKCFnX3RocmVhZF9jcmVhdGUoJmNyZWF0ZV90aHJlYWQsIHByb2dyZXNzX2JhciwgRkFMU0UsIE5VTEwpICE9IDApCisgIGlmKCFnX3RocmVhZF9jcmVhdGUoJmNyZWF0ZV90aHJlYWQsIHByb2dyZXNzX2JhciwgRkFMU0UsIE5VTEwpICE9IDApCiAgICAgZ193YXJuaW5nKCJjYW4ndCBjcmVhdGUgdGhlIHRocmVhZCIpOwogCiAgIGd0a19tYWluKCk7CkBAIC0yMjUsNCArMjI1LDMgQEAKIAogICByZXR1cm4gMDsKIH0KLQpkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy9zbXRwLWV4cG4uYyBiL2RvY3MvZXhhbXBsZXMvc210cC1leHBuLmMKaW5kZXggMDMyMmQyZi4uZmIwZWQxZCAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy9zbXRwLWV4cG4uYworKysgYi9kb2NzL2V4YW1wbGVzL3NtdHAtZXhwbi5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTksMTEgKzE5LDE3IEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIDxERVNDPgorICogU01UUCBleGFtcGxlIHNob3dpbmcgaG93IHRvIGV4cGFuZCBhbiBlLW1haWwgbWFpbGluZyBsaXN0CisgKiA8L0RFU0M+CisgKi8KKwogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAKLS8qIFRoaXMgaXMgYSBzaW1wbGUgZXhhbXBsZSBzaG93aW5nIGhvdyB0byBleHBhbmQgYW4gZW1haWwgbWFpbGluZyBsaXN0LgorLyogVGhpcyBpcyBhIHNpbXBsZSBleGFtcGxlIHNob3dpbmcgaG93IHRvIGV4cGFuZCBhbiBlLW1haWwgbWFpbGluZyBsaXN0LgogICoKICAqIE5vdGVzOgogICoKZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvc210cC1tYWlsLmMgYi9kb2NzL2V4YW1wbGVzL3NtdHAtbWFpbC5jCmluZGV4IGVlYTkwYjguLjMxNWJiMmMgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvc210cC1tYWlsLmMKKysrIGIvZG9jcy9leGFtcGxlcy9zbXRwLW1haWwuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDYgKzE5LDEyIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIDxERVNDPgorICogU01UUCBleGFtcGxlIHNob3dpbmcgaG93IHRvIHNlbmQgZS1tYWlscworICogPC9ERVNDPgorICovCisKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgpAQCAtMzksNyArNDUsOCBAQAogICAiVG86ICIgVE8gIlxyXG4iLAogICAiRnJvbTogIiBGUk9NICIoRXhhbXBsZSBVc2VyKVxyXG4iLAogICAiQ2M6ICIgQ0MgIihBbm90aGVyIGV4YW1wbGUgVXNlcilcclxuIiwKLSAgIk1lc3NhZ2UtSUQ6IDxkY2Q3Y2IzNi0xMWRiLTQ4N2EtOWYzYS1lNjUyYTk0NThlZmRAcmZjcGVkYW50LmV4YW1wbGUub3JnPlxyXG4iLAorICAiTWVzc2FnZS1JRDogPGRjZDdjYjM2LTExZGItNDg3YS05ZjNhLWU2NTJhOTQ1OGVmZEAiCisgICJyZmNwZWRhbnQuZXhhbXBsZS5vcmc+XHJcbiIsCiAgICJTdWJqZWN0OiBTTVRQIGV4YW1wbGUgbWVzc2FnZVxyXG4iLAogICAiXHJcbiIsIC8qIGVtcHR5IGxpbmUgdG8gZGl2aWRlIGhlYWRlcnMgZnJvbSBib2R5LCBzZWUgUkZDNTMyMiAqLwogICAiVGhlIGJvZHkgb2YgdGhlIG1lc3NhZ2Ugc3RhcnRzIGhlcmUuXHJcbiIsCkBAIC04OSwxMSArOTYsMTIgQEAKICAgICAvKiBUaGlzIGlzIHRoZSBVUkwgZm9yIHlvdXIgbWFpbHNlcnZlciAqLwogICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9VUkwsICJzbXRwOi8vbWFpbC5leGFtcGxlLmNvbSIpOwogCi0gICAgLyogTm90ZSB0aGF0IHRoaXMgb3B0aW9uIGlzbid0IHN0cmljdGx5IHJlcXVpcmVkLCBvbWl0dGluZyBpdCB3aWxsIHJlc3VsdCBpbgotICAgICAqIGxpYmN1cmwgc2VuZGluZyB0aGUgTUFJTCBGUk9NIGNvbW1hbmQgd2l0aCBlbXB0eSBzZW5kZXIgZGF0YS4gQWxsCisgICAgLyogTm90ZSB0aGF0IHRoaXMgb3B0aW9uIGlzbid0IHN0cmljdGx5IHJlcXVpcmVkLCBvbWl0dGluZyBpdCB3aWxsIHJlc3VsdAorICAgICAqIGluIGxpYmN1cmwgc2VuZGluZyB0aGUgTUFJTCBGUk9NIGNvbW1hbmQgd2l0aCBlbXB0eSBzZW5kZXIgZGF0YS4gQWxsCiAgICAgICogYXV0b3Jlc3BvbnNlcyBzaG91bGQgaGF2ZSBhbiBlbXB0eSByZXZlcnNlLXBhdGgsIGFuZCBzaG91bGQgYmUgZGlyZWN0ZWQKLSAgICAgKiB0byB0aGUgYWRkcmVzcyBpbiB0aGUgcmV2ZXJzZS1wYXRoIHdoaWNoIHRyaWdnZXJlZCB0aGVtLiBPdGhlcndpc2UsIHRoZXkKLSAgICAgKiBjb3VsZCBjYXVzZSBhbiBlbmRsZXNzIGxvb3AuIFNlZSBSRkMgNTMyMSBTZWN0aW9uIDQuNS41IGZvciBtb3JlIGRldGFpbHMuCisgICAgICogdG8gdGhlIGFkZHJlc3MgaW4gdGhlIHJldmVyc2UtcGF0aCB3aGljaCB0cmlnZ2VyZWQgdGhlbS4gT3RoZXJ3aXNlLAorICAgICAqIHRoZXkgY291bGQgY2F1c2UgYW4gZW5kbGVzcyBsb29wLiBTZWUgUkZDIDUzMjEgU2VjdGlvbiA0LjUuNSBmb3IgbW9yZQorICAgICAqIGRldGFpbHMuCiAgICAgICovCiAgICAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX01BSUxfRlJPTSwgRlJPTSk7CiAKQEAgLTEyMiwxMyArMTMwLDEzIEBACiAgICAgLyogRnJlZSB0aGUgbGlzdCBvZiByZWNpcGllbnRzICovCiAgICAgY3VybF9zbGlzdF9mcmVlX2FsbChyZWNpcGllbnRzKTsKIAotICAgIC8qIGN1cmwgd29uJ3Qgc2VuZCB0aGUgUVVJVCBjb21tYW5kIHVudGlsIHlvdSBjYWxsIGNsZWFudXAsIHNvIHlvdSBzaG91bGQgYmUKLSAgICAgKiBhYmxlIHRvIHJlLXVzZSB0aGlzIGNvbm5lY3Rpb24gZm9yIGFkZGl0aW9uYWwgbWVzc2FnZXMgKHNldHRpbmcKKyAgICAvKiBjdXJsIHdvbid0IHNlbmQgdGhlIFFVSVQgY29tbWFuZCB1bnRpbCB5b3UgY2FsbCBjbGVhbnVwLCBzbyB5b3Ugc2hvdWxkCisgICAgICogYmUgYWJsZSB0byByZS11c2UgdGhpcyBjb25uZWN0aW9uIGZvciBhZGRpdGlvbmFsIG1lc3NhZ2VzIChzZXR0aW5nCiAgICAgICogQ1VSTE9QVF9NQUlMX0ZST00gYW5kIENVUkxPUFRfTUFJTF9SQ1BUIGFzIHJlcXVpcmVkLCBhbmQgY2FsbGluZwogICAgICAqIGN1cmxfZWFzeV9wZXJmb3JtKCkgYWdhaW4uIEl0IG1heSBub3QgYmUgYSBnb29kIGlkZWEgdG8ga2VlcCB0aGUKLSAgICAgKiBjb25uZWN0aW9uIG9wZW4gZm9yIGEgdmVyeSBsb25nIHRpbWUgdGhvdWdoIChtb3JlIHRoYW4gYSBmZXcgbWludXRlcyBtYXkKLSAgICAgKiByZXN1bHQgaW4gdGhlIHNlcnZlciB0aW1pbmcgb3V0IHRoZSBjb25uZWN0aW9uKSwgYW5kIHlvdSBkbyB3YW50IHRvIGNsZWFuCi0gICAgICogdXAgaW4gdGhlIGVuZC4KKyAgICAgKiBjb25uZWN0aW9uIG9wZW4gZm9yIGEgdmVyeSBsb25nIHRpbWUgdGhvdWdoIChtb3JlIHRoYW4gYSBmZXcgbWludXRlcworICAgICAqIG1heSByZXN1bHQgaW4gdGhlIHNlcnZlciB0aW1pbmcgb3V0IHRoZSBjb25uZWN0aW9uKSwgYW5kIHlvdSBkbyB3YW50IHRvCisgICAgICogY2xlYW4gdXAgaW4gdGhlIGVuZC4KICAgICAgKi8KICAgICBjdXJsX2Vhc3lfY2xlYW51cChjdXJsKTsKICAgfQpkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy9zbXRwLW11bHRpLmMgYi9kb2NzL2V4YW1wbGVzL3NtdHAtbXVsdGkuYwppbmRleCA0MDk4YzdkLi44OWUxZDk0IDEwMDY0NAotLS0gYS9kb2NzL2V4YW1wbGVzL3NtdHAtbXVsdGkuYworKysgYi9kb2NzL2V4YW1wbGVzL3NtdHAtbXVsdGkuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDYgKzE5LDEyIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIDxERVNDPgorICogU01UUCBleGFtcGxlIHVzaW5nIHRoZSBtdWx0aSBpbnRlcmZhY2UKKyAqIDwvREVTQz4KKyAqLworCiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAKQEAgLTQwLDcgKzQ2LDggQEAKICAgIlRvOiAiIFRPICJcclxuIiwKICAgIkZyb206ICIgRlJPTSAiKEV4YW1wbGUgVXNlcilcclxuIiwKICAgIkNjOiAiIENDICIoQW5vdGhlciBleGFtcGxlIFVzZXIpXHJcbiIsCi0gICJNZXNzYWdlLUlEOiA8ZGNkN2NiMzYtMTFkYi00ODdhLTlmM2EtZTY1MmE5NDU4ZWZkQHJmY3BlZGFudC5leGFtcGxlLm9yZz5cclxuIiwKKyAgIk1lc3NhZ2UtSUQ6IDxkY2Q3Y2IzNi0xMWRiLTQ4N2EtOWYzYS1lNjUyYTk0NThlZmRAIgorICAicmZjcGVkYW50LmV4YW1wbGUub3JnPlxyXG4iLAogICAiU3ViamVjdDogU01UUCBtdWx0aSBleGFtcGxlIG1lc3NhZ2VcclxuIiwKICAgIlxyXG4iLCAvKiBlbXB0eSBsaW5lIHRvIGRpdmlkZSBoZWFkZXJzIGZyb20gYm9keSwgc2VlIFJGQzUzMjIgKi8KICAgIlRoZSBib2R5IG9mIHRoZSBtZXNzYWdlIHN0YXJ0cyBoZXJlLlxyXG4iLApAQCAtMTgwLDggKzE4Nyw3IEBACiAgICAgLyogZ2V0IGZpbGUgZGVzY3JpcHRvcnMgZnJvbSB0aGUgdHJhbnNmZXJzICovCiAgICAgbWMgPSBjdXJsX211bHRpX2Zkc2V0KG1jdXJsLCAmZmRyZWFkLCAmZmR3cml0ZSwgJmZkZXhjZXAsICZtYXhmZCk7CiAKLSAgICBpZihtYyAhPSBDVVJMTV9PSykKLSAgICB7CisgICAgaWYobWMgIT0gQ1VSTE1fT0spIHsKICAgICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9tdWx0aV9mZHNldCgpIGZhaWxlZCwgY29kZSAlZC5cbiIsIG1jKTsKICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvc210cC1zc2wuYyBiL2RvY3MvZXhhbXBsZXMvc210cC1zc2wuYwppbmRleCBhNzc0NDAzLi5mMDEyMzQwIDEwMDY0NAotLS0gYS9kb2NzL2V4YW1wbGVzL3NtdHAtc3NsLmMKKysrIGIvZG9jcy9leGFtcGxlcy9zbXRwLXNzbC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTksNiArMTksMTIgQEAKICAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogPERFU0M+CisgKiBTTVRQIGV4YW1wbGUgdXNpbmcgU1NMCisgKiA8L0RFU0M+CisgKi8KKwogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CkBAIC00MCw3ICs0Niw4IEBACiAgICJUbzogIiBUTyAiXHJcbiIsCiAgICJGcm9tOiAiIEZST00gIihFeGFtcGxlIFVzZXIpXHJcbiIsCiAgICJDYzogIiBDQyAiKEFub3RoZXIgZXhhbXBsZSBVc2VyKVxyXG4iLAotICAiTWVzc2FnZS1JRDogPGRjZDdjYjM2LTExZGItNDg3YS05ZjNhLWU2NTJhOTQ1OGVmZEByZmNwZWRhbnQuZXhhbXBsZS5vcmc+XHJcbiIsCisgICJNZXNzYWdlLUlEOiA8ZGNkN2NiMzYtMTFkYi00ODdhLTlmM2EtZTY1MmE5NDU4ZWZkQCIKKyAgInJmY3BlZGFudC5leGFtcGxlLm9yZz5cclxuIiwKICAgIlN1YmplY3Q6IFNNVFAgU1NMIGV4YW1wbGUgbWVzc2FnZVxyXG4iLAogICAiXHJcbiIsIC8qIGVtcHR5IGxpbmUgdG8gZGl2aWRlIGhlYWRlcnMgZnJvbSBib2R5LCBzZWUgUkZDNTMyMiAqLwogICAiVGhlIGJvZHkgb2YgdGhlIG1lc3NhZ2Ugc3RhcnRzIGhlcmUuXHJcbiIsCkBAIC0xMTUsMTEgKzEyMiwxMiBAQAogICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9TU0xfVkVSSUZZSE9TVCwgMEwpOwogI2VuZGlmCiAKLSAgICAvKiBOb3RlIHRoYXQgdGhpcyBvcHRpb24gaXNuJ3Qgc3RyaWN0bHkgcmVxdWlyZWQsIG9taXR0aW5nIGl0IHdpbGwgcmVzdWx0IGluCi0gICAgICogbGliY3VybCBzZW5kaW5nIHRoZSBNQUlMIEZST00gY29tbWFuZCB3aXRoIGVtcHR5IHNlbmRlciBkYXRhLiBBbGwKKyAgICAvKiBOb3RlIHRoYXQgdGhpcyBvcHRpb24gaXNuJ3Qgc3RyaWN0bHkgcmVxdWlyZWQsIG9taXR0aW5nIGl0IHdpbGwgcmVzdWx0CisgICAgICogaW4gbGliY3VybCBzZW5kaW5nIHRoZSBNQUlMIEZST00gY29tbWFuZCB3aXRoIGVtcHR5IHNlbmRlciBkYXRhLiBBbGwKICAgICAgKiBhdXRvcmVzcG9uc2VzIHNob3VsZCBoYXZlIGFuIGVtcHR5IHJldmVyc2UtcGF0aCwgYW5kIHNob3VsZCBiZSBkaXJlY3RlZAotICAgICAqIHRvIHRoZSBhZGRyZXNzIGluIHRoZSByZXZlcnNlLXBhdGggd2hpY2ggdHJpZ2dlcmVkIHRoZW0uIE90aGVyd2lzZSwgdGhleQotICAgICAqIGNvdWxkIGNhdXNlIGFuIGVuZGxlc3MgbG9vcC4gU2VlIFJGQyA1MzIxIFNlY3Rpb24gNC41LjUgZm9yIG1vcmUgZGV0YWlscy4KKyAgICAgKiB0byB0aGUgYWRkcmVzcyBpbiB0aGUgcmV2ZXJzZS1wYXRoIHdoaWNoIHRyaWdnZXJlZCB0aGVtLiBPdGhlcndpc2UsCisgICAgICogdGhleSBjb3VsZCBjYXVzZSBhbiBlbmRsZXNzIGxvb3AuIFNlZSBSRkMgNTMyMSBTZWN0aW9uIDQuNS41IGZvciBtb3JlCisgICAgICogZGV0YWlscy4KICAgICAgKi8KICAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfTUFJTF9GUk9NLCBGUk9NKTsKIApkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy9zbXRwLXRscy5jIGIvZG9jcy9leGFtcGxlcy9zbXRwLXRscy5jCmluZGV4IDQ4NzJkYmQuLmM4NjNlMDUgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvc210cC10bHMuYworKysgYi9kb2NzL2V4YW1wbGVzL3NtdHAtdGxzLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0xOSw2ICsxOSwxMiBAQAogICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiA8REVTQz4KKyAqIFNNVFAgZXhhbXBsZSB1c2luZyBUTFMKKyAqIDwvREVTQz4KKyAqLworCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KQEAgLTQwLDcgKzQ2LDggQEAKICAgIlRvOiAiIFRPICJcclxuIiwKICAgIkZyb206ICIgRlJPTSAiKEV4YW1wbGUgVXNlcilcclxuIiwKICAgIkNjOiAiIENDICIoQW5vdGhlciBleGFtcGxlIFVzZXIpXHJcbiIsCi0gICJNZXNzYWdlLUlEOiA8ZGNkN2NiMzYtMTFkYi00ODdhLTlmM2EtZTY1MmE5NDU4ZWZkQHJmY3BlZGFudC5leGFtcGxlLm9yZz5cclxuIiwKKyAgIk1lc3NhZ2UtSUQ6IDxkY2Q3Y2IzNi0xMWRiLTQ4N2EtOWYzYS1lNjUyYTk0NThlZmRAIgorICAicmZjcGVkYW50LmV4YW1wbGUub3JnPlxyXG4iLAogICAiU3ViamVjdDogU01UUCBUTFMgZXhhbXBsZSBtZXNzYWdlXHJcbiIsCiAgICJcclxuIiwgLyogZW1wdHkgbGluZSB0byBkaXZpZGUgaGVhZGVycyBmcm9tIGJvZHksIHNlZSBSRkM1MzIyICovCiAgICJUaGUgYm9keSBvZiB0aGUgbWVzc2FnZSBzdGFydHMgaGVyZS5cclxuIiwKQEAgLTExMCwxOCArMTE3LDE5IEBACiAgICAgICogICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIsIDBMKTsKICAgICAgKiAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9TU0xfVkVSSUZZSE9TVCwgMEwpOwogICAgICAqIFRoYXQgaXMsIGluIGdlbmVyYWwsIGEgYmFkIGlkZWEuIEl0IGlzIHN0aWxsIGJldHRlciB0aGFuIHNlbmRpbmcgeW91cgotICAgICAqIGF1dGhlbnRpY2F0aW9uIGRldGFpbHMgaW4gcGxhaW4gdGV4dCB0aG91Z2guCi0gICAgICogSW5zdGVhZCwgeW91IHNob3VsZCBnZXQgdGhlIGlzc3VlciBjZXJ0aWZpY2F0ZSAob3IgdGhlIGhvc3QgY2VydGlmaWNhdGUKLSAgICAgKiBpZiB0aGUgY2VydGlmaWNhdGUgaXMgc2VsZi1zaWduZWQpIGFuZCBhZGQgaXQgdG8gdGhlIHNldCBvZiBjZXJ0aWZpY2F0ZXMKLSAgICAgKiB0aGF0IGFyZSBrbm93biB0byBsaWJjdXJsIHVzaW5nIENVUkxPUFRfQ0FJTkZPIGFuZC9vciBDVVJMT1BUX0NBUEFUSC4gU2VlCi0gICAgICogZG9jcy9TU0xDRVJUUyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4gKi8KKyAgICAgKiBhdXRoZW50aWNhdGlvbiBkZXRhaWxzIGluIHBsYWluIHRleHQgdGhvdWdoLiAgSW5zdGVhZCwgeW91IHNob3VsZCBnZXQKKyAgICAgKiB0aGUgaXNzdWVyIGNlcnRpZmljYXRlIChvciB0aGUgaG9zdCBjZXJ0aWZpY2F0ZSBpZiB0aGUgY2VydGlmaWNhdGUgaXMKKyAgICAgKiBzZWxmLXNpZ25lZCkgYW5kIGFkZCBpdCB0byB0aGUgc2V0IG9mIGNlcnRpZmljYXRlcyB0aGF0IGFyZSBrbm93biB0bworICAgICAqIGxpYmN1cmwgdXNpbmcgQ1VSTE9QVF9DQUlORk8gYW5kL29yIENVUkxPUFRfQ0FQQVRILiBTZWUgZG9jcy9TU0xDRVJUUworICAgICAqIGZvciBtb3JlIGluZm9ybWF0aW9uLiAqLwogICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9DQUlORk8sICIvcGF0aC90by9jZXJ0aWZpY2F0ZS5wZW0iKTsKIAotICAgIC8qIE5vdGUgdGhhdCB0aGlzIG9wdGlvbiBpc24ndCBzdHJpY3RseSByZXF1aXJlZCwgb21pdHRpbmcgaXQgd2lsbCByZXN1bHQgaW4KLSAgICAgKiBsaWJjdXJsIHNlbmRpbmcgdGhlIE1BSUwgRlJPTSBjb21tYW5kIHdpdGggZW1wdHkgc2VuZGVyIGRhdGEuIEFsbAorICAgIC8qIE5vdGUgdGhhdCB0aGlzIG9wdGlvbiBpc24ndCBzdHJpY3RseSByZXF1aXJlZCwgb21pdHRpbmcgaXQgd2lsbCByZXN1bHQKKyAgICAgKiBpbiBsaWJjdXJsIHNlbmRpbmcgdGhlIE1BSUwgRlJPTSBjb21tYW5kIHdpdGggZW1wdHkgc2VuZGVyIGRhdGEuIEFsbAogICAgICAqIGF1dG9yZXNwb25zZXMgc2hvdWxkIGhhdmUgYW4gZW1wdHkgcmV2ZXJzZS1wYXRoLCBhbmQgc2hvdWxkIGJlIGRpcmVjdGVkCi0gICAgICogdG8gdGhlIGFkZHJlc3MgaW4gdGhlIHJldmVyc2UtcGF0aCB3aGljaCB0cmlnZ2VyZWQgdGhlbS4gT3RoZXJ3aXNlLCB0aGV5Ci0gICAgICogY291bGQgY2F1c2UgYW4gZW5kbGVzcyBsb29wLiBTZWUgUkZDIDUzMjEgU2VjdGlvbiA0LjUuNSBmb3IgbW9yZSBkZXRhaWxzLgorICAgICAqIHRvIHRoZSBhZGRyZXNzIGluIHRoZSByZXZlcnNlLXBhdGggd2hpY2ggdHJpZ2dlcmVkIHRoZW0uIE90aGVyd2lzZSwKKyAgICAgKiB0aGV5IGNvdWxkIGNhdXNlIGFuIGVuZGxlc3MgbG9vcC4gU2VlIFJGQyA1MzIxIFNlY3Rpb24gNC41LjUgZm9yIG1vcmUKKyAgICAgKiBkZXRhaWxzLgogICAgICAqLwogICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9NQUlMX0ZST00sIEZST00pOwogCmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL3NtdHAtdnJmeS5jIGIvZG9jcy9leGFtcGxlcy9zbXRwLXZyZnkuYwppbmRleCA0ZTQ0Y2VhLi40ZTA2MjNmIDEwMDY0NAotLS0gYS9kb2NzL2V4YW1wbGVzL3NtdHAtdnJmeS5jCisrKyBiL2RvY3MvZXhhbXBsZXMvc210cC12cmZ5LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0xOSwxMSArMTksMTcgQEAKICAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogPERFU0M+CisgKiBTTVRQIGV4YW1wbGUgc2hvd2luZyBob3cgdG8gdmVyaWZ5IGFuIGUtbWFpbCBhZGRyZXNzCisgKiA8L0RFU0M+CisgKi8KKwogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAKLS8qIFRoaXMgaXMgYSBzaW1wbGUgZXhhbXBsZSBzaG93aW5nIGhvdyB0byB2ZXJpZnkgYW4gZW1haWwgYWRkcmVzcyBmcm9tIGFuCisvKiBUaGlzIGlzIGEgc2ltcGxlIGV4YW1wbGUgc2hvd2luZyBob3cgdG8gdmVyaWZ5IGFuIGUtbWFpbCBhZGRyZXNzIGZyb20gYW4KICAqIFNNVFAgc2VydmVyLgogICoKICAqIE5vdGVzOgpkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy9zeW5jdGltZS5jIGIvZG9jcy9leGFtcGxlcy9zeW5jdGltZS5jCmluZGV4IGNkN2QwNzMuLjFjNzg3YmIgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvc3luY3RpbWUuYworKysgYi9kb2NzL2V4YW1wbGVzL3N5bmN0aW1lLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0xOSw2ICsxOSwxMCBAQAogICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogPERFU0M+CisgKiBTZXQgeW91ciBzeXN0ZW0gdGltZSBmcm9tIGEgcmVtb3RlIEhUVFAgc2VydmVyJ3MgRGF0ZTogaGVhZGVyLgorICogPC9ERVNDPgorICovCiAvKiBUaGlzIGV4YW1wbGUgY29kZSBvbmx5IGJ1aWxkcyBhcy1pcyBvbiBXaW5kb3dzLgogICoKICAqIFdoaWxlIFVuaXgvTGludXggdXNlciwgeW91IGRvIG5vdCBuZWVkIHRoaXMgc29mdHdhcmUuCkBAIC0xMjUsNyArMTI5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnN0cmVhbSkKIHsKICAgZndyaXRlKHB0ciwgc2l6ZSwgbm1lbWIsIHN0cmVhbSk7Ci0gIHJldHVybihubWVtYipzaXplKTsKKyAgcmV0dXJuIChubWVtYipzaXplKTsKIH0KIAogc2l6ZV90IFN5bmNUaW1lX0NVUkxfV3JpdGVIZWFkZXIodm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IG5tZW1iLApAQCAtMTM0LDE3ICsxMzgsMTcgQEAKICAgaW50ICAgaSwgUmV0VmFsOwogICBjaGFyICBUbXBTdHIxWzI2XSwgVG1wU3RyMlsyNl07CiAKLSAgaWYgKFNob3dBbGxIZWFkZXIgPT0gMSkKKyAgaWYoU2hvd0FsbEhlYWRlciA9PSAxKQogICAgIGZwcmludGYoc3RkZXJyLCAiJXMiLCAoY2hhciAqKShwdHIpKTsKIAotICBpZiAoc3RybmNtcCgoY2hhciAqKShwdHIpLCAiRGF0ZToiLCA1KSA9PSAwKSB7Ci0gICAgaWYgKFNob3dBbGxIZWFkZXIgPT0gMCkKKyAgaWYoc3RybmNtcCgoY2hhciAqKShwdHIpLCAiRGF0ZToiLCA1KSA9PSAwKSB7CisgICAgaWYoU2hvd0FsbEhlYWRlciA9PSAwKQogICAgICAgZnByaW50ZihzdGRlcnIsICJIVFRQIFNlcnZlci4gJXMiLCAoY2hhciAqKShwdHIpKTsKIAotICAgIGlmIChBdXRvU3luY1RpbWUgPT0gMSkgeworICAgIGlmKEF1dG9TeW5jVGltZSA9PSAxKSB7CiAgICAgICAqVG1wU3RyMSA9IDA7CiAgICAgICAqVG1wU3RyMiA9IDA7Ci0gICAgICBpZiAoc3RybGVuKChjaGFyICopKHB0cikpID4gNTApIC8qIENhbiBwcmV2ZW50IGJ1ZmZlciBvdmVyZmxvdyB0bworICAgICAgaWYoc3RybGVuKChjaGFyICopKHB0cikpID4gNTApIC8qIENhbiBwcmV2ZW50IGJ1ZmZlciBvdmVyZmxvdyB0bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUbXBTdHIxICYgMj8gKi8KICAgICAgICAgQXV0b1N5bmNUaW1lID0gMDsKICAgICAgIGVsc2UgewpAQCAtMTUyLDExICsxNTYsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBUbXBTdHIxLCAmU1lTVGltZS53RGF5LCBUbXBTdHIyLCAmU1lTVGltZS53WWVhciwKICAgICAgICAgICAgICAgICAgICAgICAgICAmU1lTVGltZS53SG91ciwgJlNZU1RpbWUud01pbnV0ZSwgJlNZU1RpbWUud1NlY29uZCk7CiAKLSAgICAgICAgaWYgKFJldFZhbCA9PSA3KSB7Ci0KKyAgICAgICAgaWYoUmV0VmFsID09IDcpIHsKICAgICAgICAgICBTWVNUaW1lLndNaWxsaXNlY29uZHMgPSA1MDA7ICAgIC8qIGFkanVzdCB0byBtaWRwb2ludCwgMC41IHNlYyAqLwotICAgICAgICAgIGZvciAoaT0wOyBpPDEyOyBpKyspIHsKLSAgICAgICAgICAgIGlmIChzdHJjbXAoTXRoU3RyW2ldLCBUbXBTdHIyKSA9PSAwKSB7CisgICAgICAgICAgZm9yKGk9MDsgaTwxMjsgaSsrKSB7CisgICAgICAgICAgICBpZihzdHJjbXAoTXRoU3RyW2ldLCBUbXBTdHIyKSA9PSAwKSB7CiAgICAgICAgICAgICAgIFNZU1RpbWUud01vbnRoID0gaSsxOwogICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTE3MCwyMSArMTczLDIxIEBACiAgICAgfQogICB9CiAKLSAgaWYgKHN0cm5jbXAoKGNoYXIgKikocHRyKSwgIlgtQ2FjaGU6IEhJVCIsIDEyKSA9PSAwKSB7CisgIGlmKHN0cm5jbXAoKGNoYXIgKikocHRyKSwgIlgtQ2FjaGU6IEhJVCIsIDEyKSA9PSAwKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJFUlJPUjogSFRUUCBTZXJ2ZXIgZGF0YSBpcyBjYWNoZWQuIgogICAgICAgICAgICAgIiBTZXJ2ZXIgRGF0ZSBpcyBubyBsb25nZXIgdmFsaWQuXG4iKTsKICAgICBBdXRvU3luY1RpbWUgPSAwOwogICB9Ci0gIHJldHVybihubWVtYipzaXplKTsKKyAgcmV0dXJuIChubWVtYipzaXplKTsKIH0KIAogdm9pZCBTeW5jVGltZV9DVVJMX0luaXQoQ1VSTCAqY3VybCwgY2hhciAqcHJveHlfcG9ydCwKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKnByb3h5X3VzZXJfcGFzc3dvcmQpCiB7Ci0gIGlmIChzdHJsZW4ocHJveHlfcG9ydCkgPiAwKQorICBpZihzdHJsZW4ocHJveHlfcG9ydCkgPiAwKQogICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9QUk9YWSwgcHJveHlfcG9ydCk7CiAKLSAgaWYgKHN0cmxlbihwcm94eV91c2VyX3Bhc3N3b3JkKSA+IDApCisgIGlmKHN0cmxlbihwcm94eV91c2VyX3Bhc3N3b3JkKSA+IDApCiAgICAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1BST1hZVVNFUlBXRCwgcHJveHlfdXNlcl9wYXNzd29yZCk7CiAKICNpZmRlZiBTWU5DVElNRV9VQQpAQCAtMjAxLDcgKzIwNCw3IEBACiAgIENVUkxjb2RlIHJlczsKIAogICBvdXRmaWxlID0gTlVMTDsKLSAgaWYgKEh0dHBHZXRCb2R5ID09IEhUVFBfQ09NTUFORF9IRUFEKQorICBpZihIdHRwR2V0Qm9keSA9PSBIVFRQX0NPTU1BTkRfSEVBRCkKICAgICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfTk9CT0RZLCAxTCk7CiAgIGVsc2UgewogICAgIG91dGZpbGUgPSBmb3BlbihPdXRGaWxlTmFtZSwgIndiIik7CkBAIC0yMTAsNyArMjEzLDcgQEAKIAogICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfVVJMLCBVUkxfU3RyKTsKICAgcmVzID0gY3VybF9lYXN5X3BlcmZvcm0oY3VybCk7Ci0gIGlmIChvdXRmaWxlICE9IE5VTEwpCisgIGlmKG91dGZpbGUgIT0gTlVMTCkKICAgICBmY2xvc2Uob3V0ZmlsZSk7CiAgIHJldHVybiByZXM7ICAvKiAoQ1VSTEVfT0spICovCiB9CkBAIC0yNDAsNyArMjQzLDcgQEAKICAgaW50IGk7CiAKICAgKmNvbmYtPmh0dHBfcHJveHkgICAgICAgPSAwOwotICBmb3IgKGk9MDsgaTxNQVhfU1RSSU5HMTsgaSsrKQorICBmb3IoaT0wOyBpPE1BWF9TVFJJTkcxOyBpKyspCiAgICAgY29uZi0+cHJveHlfdXNlcltpXSAgICAgPSAwOyAgICAvKiBDbGVhbiB1cCBwYXNzd29yZCBmcm9tIG1lbW9yeSAqLwogICAqY29uZi0+dGltZXNlcnZlciAgICAgICA9IDA7CiAgIHJldHVybiAxOwpAQCAtMjY4LDI0ICsyNzEsMjQgQEAKICAgUmV0VmFsdWUgICAgICAgID0gMDsgICAgLyogU3VjY2Vzc2Z1bCBFeGl0ICovCiAgIGNvbmZfaW5pdChjb25mKTsKIAotICBpZiAoYXJnYyA+IDEpIHsKLSAgICB3aGlsZSAoT3B0aW9uSW5kZXggPCBhcmdjKSB7Ci0gICAgICBpZiAoc3RybmNtcChhcmd2W09wdGlvbkluZGV4XSwgIi0tc2VydmVyPSIsIDkpID09IDApCisgIGlmKGFyZ2MgPiAxKSB7CisgICAgd2hpbGUoT3B0aW9uSW5kZXggPCBhcmdjKSB7CisgICAgICBpZihzdHJuY21wKGFyZ3ZbT3B0aW9uSW5kZXhdLCAiLS1zZXJ2ZXI9IiwgOSkgPT0gMCkKICAgICAgICAgc25wcmludGYoY29uZi0+dGltZXNlcnZlciwgTUFYX1NUUklORywgIiVzIiwgJmFyZ3ZbT3B0aW9uSW5kZXhdWzldKTsKIAotICAgICAgaWYgKHN0cmNtcChhcmd2W09wdGlvbkluZGV4XSwgIi0tc2hvd2FsbCIpID09IDApCisgICAgICBpZihzdHJjbXAoYXJndltPcHRpb25JbmRleF0sICItLXNob3dhbGwiKSA9PSAwKQogICAgICAgICBTaG93QWxsSGVhZGVyID0gMTsKIAotICAgICAgaWYgKHN0cmNtcChhcmd2W09wdGlvbkluZGV4XSwgIi0tc3luY3RpbWUiKSA9PSAwKQorICAgICAgaWYoc3RyY21wKGFyZ3ZbT3B0aW9uSW5kZXhdLCAiLS1zeW5jdGltZSIpID09IDApCiAgICAgICAgIEF1dG9TeW5jVGltZSA9IDE7CiAKLSAgICAgIGlmIChzdHJuY21wKGFyZ3ZbT3B0aW9uSW5kZXhdLCAiLS1wcm94eS11c2VyPSIsIDEzKSA9PSAwKQorICAgICAgaWYoc3RybmNtcChhcmd2W09wdGlvbkluZGV4XSwgIi0tcHJveHktdXNlcj0iLCAxMykgPT0gMCkKICAgICAgICAgc25wcmludGYoY29uZi0+cHJveHlfdXNlciwgTUFYX1NUUklORywgIiVzIiwgJmFyZ3ZbT3B0aW9uSW5kZXhdWzEzXSk7CiAKLSAgICAgIGlmIChzdHJuY21wKGFyZ3ZbT3B0aW9uSW5kZXhdLCAiLS1wcm94eT0iLCA4KSA9PSAwKQorICAgICAgaWYoc3RybmNtcChhcmd2W09wdGlvbkluZGV4XSwgIi0tcHJveHk9IiwgOCkgPT0gMCkKICAgICAgICAgc25wcmludGYoY29uZi0+aHR0cF9wcm94eSwgTUFYX1NUUklORywgIiVzIiwgJmFyZ3ZbT3B0aW9uSW5kZXhdWzhdKTsKIAotICAgICAgaWYgKChzdHJjbXAoYXJndltPcHRpb25JbmRleF0sICItLWhlbHAiKSA9PSAwKSB8fAorICAgICAgaWYoKHN0cmNtcChhcmd2W09wdGlvbkluZGV4XSwgIi0taGVscCIpID09IDApIHx8CiAgICAgICAgICAgKHN0cmNtcChhcmd2W09wdGlvbkluZGV4XSwgIi8/IikgPT0gMCkpIHsKICAgICAgICAgc2hvd1VzYWdlKCk7CiAgICAgICAgIHJldHVybiAwOwpAQCAtMjk0LDEzICsyOTcsMTMgQEAKICAgICB9CiAgIH0KIAotICBpZiAoKmNvbmYtPnRpbWVzZXJ2ZXIgPT0gMCkgICAgIC8qIFVzZSBkZWZhdWx0IHNlcnZlciBmb3IgdGltZSBpbmZvcm1hdGlvbiAqLworICBpZigqY29uZi0+dGltZXNlcnZlciA9PSAwKSAgICAgLyogVXNlIGRlZmF1bHQgc2VydmVyIGZvciB0aW1lIGluZm9ybWF0aW9uICovCiAgICAgc25wcmludGYoY29uZi0+dGltZXNlcnZlciwgTUFYX1NUUklORywgIiVzIiwgRGVmYXVsdFRpbWVTZXJ2ZXJbMF0pOwogCiAgIC8qIEluaXQgQ1VSTCBiZWZvcmUgdXNhZ2UgKi8KICAgY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpOwogICBjdXJsID0gY3VybF9lYXN5X2luaXQoKTsKLSAgaWYgKGN1cmwpIHsKKyAgaWYoY3VybCkgewogICAgIFN5bmNUaW1lX0NVUkxfSW5pdChjdXJsLCBjb25mLT5odHRwX3Byb3h5LCBjb25mLT5wcm94eV91c2VyKTsKIAogICAgIC8qIENhbGN1bGF0aW5nIHRpbWUgZGlmZiBiZXR3ZWVuIEdNVCBhbmQgbG9jYWx0aW1lICovCkBAIC0zMTIsNyArMzE1LDcgQEAKICAgICB0em9uZWRpZmZGbG9hdCA9IGRpZmZ0aW1lKHR0X2xvY2FsLCB0dF9nbXQpOwogICAgIHR6b25lZGlmZldvcmQgID0gKGludCkodHpvbmVkaWZmRmxvYXQvMzYwMC4wKTsKIAotICAgIGlmICgoZG91YmxlKSh0em9uZWRpZmZXb3JkICogMzYwMCkgPT0gdHpvbmVkaWZmRmxvYXQpCisgICAgaWYoKGRvdWJsZSkodHpvbmVkaWZmV29yZCAqIDM2MDApID09IHR6b25lZGlmZkZsb2F0KQogICAgICAgc25wcmludGYodHpvbmVCdWYsIDE1LCAiJSswM2QnMDAnIiwgdHpvbmVkaWZmV29yZCk7CiAgICAgZWxzZQogICAgICAgc25wcmludGYodHpvbmVCdWYsIDE1LCAiJSswM2QnMzAnIiwgdHpvbmVkaWZmV29yZCk7CkBAIC0zNDEsOSArMzQ0LDkgQEAKICAgICAgICAgICAgICBMT0NBTFRpbWUud01pbGxpc2Vjb25kcyk7CiAgICAgZnByaW50ZihzdGRlcnIsICJcbkFmdGVyICBIVFRQLiBEYXRlOiAlcyVzXG4iLCB0aW1lQnVmLCB0em9uZUJ1Zik7CiAKLSAgICBpZiAoQXV0b1N5bmNUaW1lID09IDMpIHsKKyAgICBpZihBdXRvU3luY1RpbWUgPT0gMykgewogICAgICAgLyogU3luY2hyb25pc2luZyBjb21wdXRlciBjbG9jayAqLwotICAgICAgaWYgKCFTZXRTeXN0ZW1UaW1lKCZTWVNUaW1lKSkgeyAgLyogU2V0IHN5c3RlbSB0aW1lICovCisgICAgICBpZighU2V0U3lzdGVtVGltZSgmU1lTVGltZSkpIHsgIC8qIFNldCBzeXN0ZW0gdGltZSAqLwogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkVSUk9SOiBVbmFibGUgdG8gc2V0IHN5c3RlbSB0aW1lLlxuIik7CiAgICAgICAgIFJldFZhbHVlID0gMTsKICAgICAgIH0KZGlmZiAtLWdpdCBhL2RvY3MvZXhhbXBsZXMvdGhyZWFkZWQtc3NsLmMgYi9kb2NzL2V4YW1wbGVzL3RocmVhZGVkLXNzbC5jCmluZGV4IGE3ZTljMmQuLjVmMWQ5YjkgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvdGhyZWFkZWQtc3NsLmMKKysrIGIvZG9jcy9leGFtcGxlcy90aHJlYWRlZC1zc2wuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTEsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDE0ICsxOSwxOSBAQAogICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogPERFU0M+CisgKiBTaG93IHRoZSByZXF1aXJlZCBtdXRleCBjYWxsYmFjayBzZXR1cHMgZm9yIEdudVRMUyBhbmQgT3BlblNTTCB3aGVuIHVzaW5nCisgKiBsaWJjdXJsIG11bHRpLXRocmVhZGVkLgorICogPC9ERVNDPgorICovCiAvKiBBIG11bHRpLXRocmVhZGVkIGV4YW1wbGUgdGhhdCB1c2VzIHB0aHJlYWRzIGFuZCBmZXRjaGVzIDQgcmVtb3RlIGZpbGVzIGF0CiAgKiBvbmNlIG92ZXIgSFRUUFMuIFRoZSBsb2NrIGNhbGxiYWNrcyBhbmQgc3R1ZmYgYXNzdW1lIE9wZW5TU0wgb3IgR251VExTCiAgKiAobGliZ2NyeXB0KSBzbyBmYXIuCiAgKgogICogT3BlblNTTCBkb2NzIGZvciB0aGlzOgotICogICBodHRwOi8vd3d3Lm9wZW5zc2wub3JnL2RvY3MvY3J5cHRvL3RocmVhZHMuaHRtbAorICogICBodHRwczovL3d3dy5vcGVuc3NsLm9yZy9kb2NzL2NyeXB0by90aHJlYWRzLmh0bWwKICAqIGdjcnlwdCBkb2NzIGZvciB0aGlzOgotICogICBodHRwOi8vZ251cGcub3JnL2RvY3VtZW50YXRpb24vbWFudWFscy9nY3J5cHQvTXVsdGlfMDAyZFRocmVhZGluZy5odG1sCisgKiAgIGh0dHBzOi8vZ251cGcub3JnL2RvY3VtZW50YXRpb24vbWFudWFscy9nY3J5cHQvTXVsdGlfMDAyZFRocmVhZGluZy5odG1sCiAgKi8KIAogI2RlZmluZSBVU0VfT1BFTlNTTCAvKiBvciBVU0VfR05VVExTIGFjY29yZGluZ2x5ICovCkBAIC00Niw3ICs1MSw3IEBACiB7CiAgICh2b2lkKWZpbGU7CiAgICh2b2lkKWxpbmU7Ci0gIGlmIChtb2RlICYgQ1JZUFRPX0xPQ0spIHsKKyAgaWYobW9kZSAmIENSWVBUT19MT0NLKSB7CiAgICAgcHRocmVhZF9tdXRleF9sb2NrKCYobG9ja2FycmF5W3R5cGVdKSk7CiAgIH0KICAgZWxzZSB7CkBAIC01OSw3ICs2NCw3IEBACiAgIHVuc2lnbmVkIGxvbmcgcmV0OwogCiAgIHJldD0odW5zaWduZWQgbG9uZylwdGhyZWFkX3NlbGYoKTsKLSAgcmV0dXJuKHJldCk7CisgIHJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyB2b2lkIGluaXRfbG9ja3Modm9pZCkKQEAgLTY4LDggKzczLDggQEAKIAogICBsb2NrYXJyYXk9KHB0aHJlYWRfbXV0ZXhfdCAqKU9QRU5TU0xfbWFsbG9jKENSWVBUT19udW1fbG9ja3MoKSAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihwdGhyZWFkX211dGV4X3QpKTsKLSAgZm9yIChpPTA7IGk8Q1JZUFRPX251bV9sb2NrcygpOyBpKyspIHsKLSAgICBwdGhyZWFkX211dGV4X2luaXQoJihsb2NrYXJyYXlbaV0pLE5VTEwpOworICBmb3IoaT0wOyBpPENSWVBUT19udW1fbG9ja3MoKTsgaSsrKSB7CisgICAgcHRocmVhZF9tdXRleF9pbml0KCYobG9ja2FycmF5W2ldKSwgTlVMTCk7CiAgIH0KIAogICBDUllQVE9fc2V0X2lkX2NhbGxiYWNrKCh1bnNpZ25lZCBsb25nICgqKSgpKXRocmVhZF9pZCk7CkBAIC04MSw3ICs4Niw3IEBACiAgIGludCBpOwogCiAgIENSWVBUT19zZXRfbG9ja2luZ19jYWxsYmFjayhOVUxMKTsKLSAgZm9yIChpPTA7IGk8Q1JZUFRPX251bV9sb2NrcygpOyBpKyspCisgIGZvcihpPTA7IGk8Q1JZUFRPX251bV9sb2NrcygpOyBpKyspCiAgICAgcHRocmVhZF9tdXRleF9kZXN0cm95KCYobG9ja2FycmF5W2ldKSk7CiAKICAgT1BFTlNTTF9mcmVlKGxvY2thcnJheSk7CmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL3VybDJmaWxlLmMgYi9kb2NzL2V4YW1wbGVzL3VybDJmaWxlLmMKaW5kZXggYWRmNjk2Yy4uMzlmODRkNiAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy91cmwyZmlsZS5jCisrKyBiL2RvY3MvZXhhbXBsZXMvdXJsMmZpbGUuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTIsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE5LDYgKzE5LDEwIEBACiAgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiA8REVTQz4KKyAqIERvd25sb2FkIGEgZ2l2ZW4gVVJMIGludG8gYSBsb2NhbCBmaWxlIG5hbWVkIHBhZ2Uub3V0LgorICogPC9ERVNDPgorICovCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KQEAgLTM3LDcgKzQxLDcgQEAKICAgc3RhdGljIGNvbnN0IGNoYXIgKnBhZ2VmaWxlbmFtZSA9ICJwYWdlLm91dCI7CiAgIEZJTEUgKnBhZ2VmaWxlOwogCi0gIGlmKGFyZ2MgPCAyICkgeworICBpZihhcmdjIDwgMikgewogICAgIHByaW50ZigiVXNhZ2U6ICVzIDxVUkw+XG4iLCBhcmd2WzBdKTsKICAgICByZXR1cm4gMTsKICAgfQpAQCAtNjEsNyArNjUsNyBAQAogCiAgIC8qIG9wZW4gdGhlIGZpbGUgKi8KICAgcGFnZWZpbGUgPSBmb3BlbihwYWdlZmlsZW5hbWUsICJ3YiIpOwotICBpZiAocGFnZWZpbGUpIHsKKyAgaWYocGFnZWZpbGUpIHsKIAogICAgIC8qIHdyaXRlIHRoZSBwYWdlIGJvZHkgdG8gdGhpcyBmaWxlIGhhbmRsZSAqLwogICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybF9oYW5kbGUsIENVUkxPUFRfV1JJVEVEQVRBLCBwYWdlZmlsZSk7CmRpZmYgLS1naXQgYS9kb2NzL2V4YW1wbGVzL3VzZXJjZXJ0aW5tZW0uYyBiL2RvY3MvZXhhbXBsZXMvdXNlcmNlcnRpbm1lbS5jCmluZGV4IGRkNTZjNjEuLjQ3NTczZWIgMTAwNjQ0Ci0tLSBhL2RvY3MvZXhhbXBsZXMvdXNlcmNlcnRpbm1lbS5jCisrKyBiL2RvY3MvZXhhbXBsZXMvdXNlcmNlcnRpbm1lbS5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0xOSwxMCArMTksMTMgQEAKICAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIDxERVNDPgogLyogRXhhbXBsZSB1c2luZyBhbiBpbiBtZW1vcnkgUEVNIHVzZXIgY2VydGlmaWNhdGUgYW5kIFJTQSBrZXkgdG8gcmV0cmlldmUgYW4KICAqIGh0dHBzIHBhZ2UuCi0gKiBXcml0dGVuIGJ5IElzaGFuIFNpbmdoTGV2ZXR0LCBiYXNlZCBvbiBUaGVvIEJvcm0ncyBjYWNlcnRpbm1lbS5jLgotICogTm90ZSB0aGF0IHRvIG1haW50YWluIHNpbXBsaWNpdHkgdGhpcyBleGFtcGxlIGRvZXMgbm90IHVzZSBhIENBIGNlcnRpZmljYXRlIAorICogPC9ERVNDPgorICovCisvKiBXcml0dGVuIGJ5IElzaGFuIFNpbmdoTGV2ZXR0LCBiYXNlZCBvbiBUaGVvIEJvcm0ncyBjYWNlcnRpbm1lbS5jLgorICogTm90ZSB0aGF0IHRvIG1haW50YWluIHNpbXBsaWNpdHkgdGhpcyBleGFtcGxlIGRvZXMgbm90IHVzZSBhIENBIGNlcnRpZmljYXRlCiAgKiBmb3IgcGVlciB2ZXJpZmljYXRpb24uICBIb3dldmVyLCBzb21lIGZvcm0gb2YgcGVlciB2ZXJpZmljYXRpb24KICAqIG11c3QgYmUgdXNlZCBpbiByZWFsIGNpcmN1bXN0YW5jZXMgd2hlbiBhIHNlY3VyZSBjb25uZWN0aW9uIGlzIHJlcXVpcmVkLgogICovCkBAIC0zNSw4ICszOCw4IEBACiAKIHN0YXRpYyBzaXplX3Qgd3JpdGVmdW5jdGlvbih2b2lkICpwdHIsIHNpemVfdCBzaXplLCBzaXplX3Qgbm1lbWIsIHZvaWQgKnN0cmVhbSkKIHsKLSAgZndyaXRlKHB0cixzaXplLG5tZW1iLHN0cmVhbSk7Ci0gIHJldHVybihubWVtYipzaXplKTsKKyAgZndyaXRlKHB0ciwgc2l6ZSwgbm1lbWIsIHN0cmVhbSk7CisgIHJldHVybiAobm1lbWIqc2l6ZSk7CiB9CiAKIHN0YXRpYyBDVVJMY29kZSBzc2xjdHhfZnVuY3Rpb24oQ1VSTCAqY3VybCwgdm9pZCAqc3NsY3R4LCB2b2lkICpwYXJtKQpAQCAtMTE3LDcgKzEyMCw3IEBACiAgIC8qIGdldCBhIEJJTyAqLwogICBiaW8gPSBCSU9fbmV3X21lbV9idWYoKGNoYXIgKilteXBlbSwgLTEpOwogCi0gIGlmIChiaW8gPT0gTlVMTCkgeworICBpZihiaW8gPT0gTlVMTCkgewogICAgIHByaW50ZigiQklPX25ld19tZW1fYnVmIGZhaWxlZFxuIik7CiAgIH0KIApAQCAtMTI1LDQ5ICsxMjgsNDkgQEAKICAgICogc3RydWN0dXJlIHRoYXQgU1NMIGNhbiB1c2UKICAgICovCiAgIGNlcnQgPSBQRU1fcmVhZF9iaW9fWDUwOShiaW8sIE5VTEwsIDAsIE5VTEwpOwotICBpZiAoY2VydCA9PSBOVUxMKSB7CisgIGlmKGNlcnQgPT0gTlVMTCkgewogICAgIHByaW50ZigiUEVNX3JlYWRfYmlvX1g1MDkgZmFpbGVkLi4uXG4iKTsKICAgfQogCiAgIC8qdGVsbCBTU0wgdG8gdXNlIHRoZSBYNTA5IGNlcnRpZmljYXRlKi8KICAgcmV0ID0gU1NMX0NUWF91c2VfY2VydGlmaWNhdGUoKFNTTF9DVFgqKXNzbGN0eCwgY2VydCk7Ci0gIGlmIChyZXQgIT0gMSkgeworICBpZihyZXQgIT0gMSkgewogICAgIHByaW50ZigiVXNlIGNlcnRpZmljYXRlIGZhaWxlZFxuIik7CiAgIH0KIAogICAvKmNyZWF0ZSBhIGJpbyBmb3IgdGhlIFJTQSBrZXkqLwogICBrYmlvID0gQklPX25ld19tZW1fYnVmKChjaGFyICopbXlrZXksIC0xKTsKLSAgaWYgKGtiaW8gPT0gTlVMTCkgeworICBpZihrYmlvID09IE5VTEwpIHsKICAgICBwcmludGYoIkJJT19uZXdfbWVtX2J1ZiBmYWlsZWRcbiIpOwogICB9CiAKICAgLypyZWFkIHRoZSBrZXkgYmlvIGludG8gYW4gUlNBIG9iamVjdCovCiAgIHJzYSA9IFBFTV9yZWFkX2Jpb19SU0FQcml2YXRlS2V5KGtiaW8sIE5VTEwsIDAsIE5VTEwpOwotICBpZiAocnNhID09IE5VTEwpIHsKKyAgaWYocnNhID09IE5VTEwpIHsKICAgICBwcmludGYoIkZhaWxlZCB0byBjcmVhdGUga2V5IGJpb1xuIik7CiAgIH0KIAogICAvKnRlbGwgU1NMIHRvIHVzZSB0aGUgUlNBIGtleSBmcm9tIG1lbW9yeSovCiAgIHJldCA9IFNTTF9DVFhfdXNlX1JTQVByaXZhdGVLZXkoKFNTTF9DVFgqKXNzbGN0eCwgcnNhKTsKLSAgaWYgKHJldCAhPSAxKSB7CisgIGlmKHJldCAhPSAxKSB7CiAgICAgcHJpbnRmKCJVc2UgS2V5IGZhaWxlZFxuIik7CiAgIH0KIAogICAvKiBmcmVlIHJlc291cmNlcyB0aGF0IGhhdmUgYmVlbiBhbGxvY2F0ZWQgYnkgb3BlbnNzbCBmdW5jdGlvbnMgKi8KLSAgaWYgKGJpbykKKyAgaWYoYmlvKQogICAgIEJJT19mcmVlKGJpbyk7CiAKLSAgaWYgKGtiaW8pCisgIGlmKGtiaW8pCiAgICAgQklPX2ZyZWUoa2Jpbyk7CiAKLSAgaWYgKHJzYSkKKyAgaWYocnNhKQogICAgIFJTQV9mcmVlKHJzYSk7CiAKLSAgaWYgKGNlcnQpCisgIGlmKGNlcnQpCiAgICAgWDUwOV9mcmVlKGNlcnQpOwogCiAgIC8qIGFsbCBzZXQgdG8gZ28gKi8KLSAgcmV0dXJuIENVUkxFX09LIDsKKyAgcmV0dXJuIENVUkxFX09LOwogfQogCiBpbnQgbWFpbih2b2lkKQpAQCAtMTc3LDI4ICsxODAsMjggQEAKIAogICBydiA9IGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKTsKICAgY2ggPSBjdXJsX2Vhc3lfaW5pdCgpOwotICBydiA9IGN1cmxfZWFzeV9zZXRvcHQoY2gsQ1VSTE9QVF9WRVJCT1NFLCAwTCk7Ci0gIHJ2ID0gY3VybF9lYXN5X3NldG9wdChjaCxDVVJMT1BUX0hFQURFUiwgMEwpOwotICBydiA9IGN1cmxfZWFzeV9zZXRvcHQoY2gsQ1VSTE9QVF9OT1BST0dSRVNTLCAxTCk7Ci0gIHJ2ID0gY3VybF9lYXN5X3NldG9wdChjaCxDVVJMT1BUX05PU0lHTkFMLCAxTCk7Ci0gIHJ2ID0gY3VybF9lYXN5X3NldG9wdChjaCxDVVJMT1BUX1dSSVRFRlVOQ1RJT04sICp3cml0ZWZ1bmN0aW9uKTsKLSAgcnYgPSBjdXJsX2Vhc3lfc2V0b3B0KGNoLENVUkxPUFRfV1JJVEVEQVRBLCBzdGRvdXQpOwotICBydiA9IGN1cmxfZWFzeV9zZXRvcHQoY2gsQ1VSTE9QVF9IRUFERVJGVU5DVElPTiwgKndyaXRlZnVuY3Rpb24pOwotICBydiA9IGN1cmxfZWFzeV9zZXRvcHQoY2gsQ1VSTE9QVF9IRUFERVJEQVRBLCBzdGRlcnIpOwotICBydiA9IGN1cmxfZWFzeV9zZXRvcHQoY2gsQ1VSTE9QVF9TU0xDRVJUVFlQRSwiUEVNIik7CisgIHJ2ID0gY3VybF9lYXN5X3NldG9wdChjaCwgQ1VSTE9QVF9WRVJCT1NFLCAwTCk7CisgIHJ2ID0gY3VybF9lYXN5X3NldG9wdChjaCwgQ1VSTE9QVF9IRUFERVIsIDBMKTsKKyAgcnYgPSBjdXJsX2Vhc3lfc2V0b3B0KGNoLCBDVVJMT1BUX05PUFJPR1JFU1MsIDFMKTsKKyAgcnYgPSBjdXJsX2Vhc3lfc2V0b3B0KGNoLCBDVVJMT1BUX05PU0lHTkFMLCAxTCk7CisgIHJ2ID0gY3VybF9lYXN5X3NldG9wdChjaCwgQ1VSTE9QVF9XUklURUZVTkNUSU9OLCB3cml0ZWZ1bmN0aW9uKTsKKyAgcnYgPSBjdXJsX2Vhc3lfc2V0b3B0KGNoLCBDVVJMT1BUX1dSSVRFREFUQSwgc3Rkb3V0KTsKKyAgcnYgPSBjdXJsX2Vhc3lfc2V0b3B0KGNoLCBDVVJMT1BUX0hFQURFUkZVTkNUSU9OLCB3cml0ZWZ1bmN0aW9uKTsKKyAgcnYgPSBjdXJsX2Vhc3lfc2V0b3B0KGNoLCBDVVJMT1BUX0hFQURFUkRBVEEsIHN0ZGVycik7CisgIHJ2ID0gY3VybF9lYXN5X3NldG9wdChjaCwgQ1VSTE9QVF9TU0xDRVJUVFlQRSwgIlBFTSIpOwogCiAgIC8qIGJvdGggVkVSSUZZUEVFUiBhbmQgVkVSSUZZSE9TVCBhcmUgc2V0IHRvIDAgaW4gdGhpcyBjYXNlIGJlY2F1c2UgdGhlcmUgaXMKICAgICAgbm8gQ0EgY2VydGlmaWNhdGUqLwogCi0gIHJ2ID0gY3VybF9lYXN5X3NldG9wdChjaCxDVVJMT1BUX1NTTF9WRVJJRllQRUVSLCAwTCk7Ci0gIHJ2ID0gY3VybF9lYXN5X3NldG9wdChjaCxDVVJMT1BUX1NTTF9WRVJJRllIT1NULCAwTCk7CisgIHJ2ID0gY3VybF9lYXN5X3NldG9wdChjaCwgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwgMEwpOworICBydiA9IGN1cmxfZWFzeV9zZXRvcHQoY2gsIENVUkxPUFRfU1NMX1ZFUklGWUhPU1QsIDBMKTsKICAgcnYgPSBjdXJsX2Vhc3lfc2V0b3B0KGNoLCBDVVJMT1BUX1VSTCwgImh0dHBzOi8vd3d3LmV4YW1wbGUuY29tLyIpOwogICBydiA9IGN1cmxfZWFzeV9zZXRvcHQoY2gsIENVUkxPUFRfU1NMS0VZVFlQRSwgIlBFTSIpOwogCiAgIC8qIGZpcnN0IHRyeTogcmV0cmlldmUgcGFnZSB3aXRob3V0IHVzZXIgY2VydGlmaWNhdGUgYW5kIGtleSAtPiB3aWxsIGZhaWwKICAgICovCiAgIHJ2ID0gY3VybF9lYXN5X3BlcmZvcm0oY2gpOwotICBpZiAocnY9PUNVUkxFX09LKSB7CisgIGlmKHJ2PT1DVVJMRV9PSykgewogICAgIHByaW50ZigiKioqIHRyYW5zZmVyIHN1Y2NlZWRlZCAqKipcbiIpOwogICB9CiAgIGVsc2UgewpAQCAtMjA5LDkgKzIxMiw5IEBACiAgICAqIGxvYWQgdGhlIGNlcnRpZmljYXRlIGFuZCBrZXkgYnkgaW5zdGFsbGluZyBhIGZ1bmN0aW9uIGRvaW5nIHRoZSBuZWNlc3NhcnkKICAgICogIm1vZGlmaWNhdGlvbnMiIHRvIHRoZSBTU0wgQ09OVEVYVCBqdXN0IGJlZm9yZSBsaW5rIGluaXQKICAgICovCi0gIHJ2ID0gY3VybF9lYXN5X3NldG9wdChjaCxDVVJMT1BUX1NTTF9DVFhfRlVOQ1RJT04sICpzc2xjdHhfZnVuY3Rpb24pOworICBydiA9IGN1cmxfZWFzeV9zZXRvcHQoY2gsIENVUkxPUFRfU1NMX0NUWF9GVU5DVElPTiwgKnNzbGN0eF9mdW5jdGlvbik7CiAgIHJ2ID0gY3VybF9lYXN5X3BlcmZvcm0oY2gpOwotICBpZiAocnY9PUNVUkxFX09LKSB7CisgIGlmKHJ2PT1DVVJMRV9PSykgewogICAgIHByaW50ZigiKioqIHRyYW5zZmVyIHN1Y2NlZWRlZCAqKipcbiIpOwogICB9CiAgIGVsc2UgewpkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy92ZXJzaW9uLWNoZWNrLnBsIGIvZG9jcy9leGFtcGxlcy92ZXJzaW9uLWNoZWNrLnBsCmluZGV4IDkyZjA4MDguLjA3NGU1MGQgMTAwNzU1Ci0tLSBhL2RvY3MvZXhhbXBsZXMvdmVyc2lvbi1jaGVjay5wbAorKysgYi9kb2NzL2V4YW1wbGVzL3ZlcnNpb24tY2hlY2sucGwKQEAgLTEwLDcgKzEwLDcgQEAKICMKICMgVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICMgeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICMKICMgWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAjIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9leGFtcGxlcy94bWxzdHJlYW0uYyBiL2RvY3MvZXhhbXBsZXMveG1sc3RyZWFtLmMKaW5kZXggODE5MzQ0NS4uODA2NjgyOCAxMDA2NDQKLS0tIGEvZG9jcy9leGFtcGxlcy94bWxzdHJlYW0uYworKysgYi9kb2NzL2V4YW1wbGVzL3htbHN0cmVhbS5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMywgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTksOCArMTksMTEgQEAKICAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qIFN0cmVhbS1wYXJzZSBhIGRvY3VtZW50IHVzaW5nIHRoZSBzdHJlYW1pbmcgRXhwYXQgcGFyc2VyLgotICogV3JpdHRlbiBieSBEYXZpZCBTdHJhdXNzCisvKiA8REVTQz4KKyAqIFN0cmVhbS1wYXJzZSBhIGRvY3VtZW50IHVzaW5nIHRoZSBzdHJlYW1pbmcgRXhwYXQgcGFyc2VyLgorICogPC9ERVNDPgorICovCisvKiBXcml0dGVuIGJ5IERhdmlkIFN0cmF1c3MKICAqCiAgKiBFeHBhdCA9PiBodHRwOi8vd3d3LmxpYmV4cGF0Lm9yZy8KICAqCkBAIC00OCw3ICs1MSw4IEBACiAgIHN0cnVjdCBNZW1vcnlTdHJ1Y3QgY2hhcmFjdGVyczsKIH07CiAKLXN0YXRpYyB2b2lkIHN0YXJ0RWxlbWVudCh2b2lkICp1c2VyRGF0YSwgY29uc3QgWE1MX0NoYXIgKm5hbWUsIGNvbnN0IFhNTF9DaGFyICoqYXR0cykKK3N0YXRpYyB2b2lkIHN0YXJ0RWxlbWVudCh2b2lkICp1c2VyRGF0YSwgY29uc3QgWE1MX0NoYXIgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgWE1MX0NoYXIgKiphdHRzKQogewogICBzdHJ1Y3QgUGFyc2VyU3RydWN0ICpzdGF0ZSA9IChzdHJ1Y3QgUGFyc2VyU3RydWN0ICopIHVzZXJEYXRhOwogICBzdGF0ZS0+dGFncysrOwpAQCAtODYsMTYgKzkwLDE4IEBACiAgIHByaW50ZigiJTVsdSAgICUxMGx1ICAgJXNcbiIsIHN0YXRlLT5kZXB0aCwgc3RhdGUtPmNoYXJhY3RlcnMuc2l6ZSwgbmFtZSk7CiB9CiAKLXN0YXRpYyBzaXplX3QgcGFyc2VTdHJlYW1DYWxsYmFjayh2b2lkICpjb250ZW50cywgc2l6ZV90IGxlbmd0aCwgc2l6ZV90IG5tZW1iLCB2b2lkICp1c2VycCkKK3N0YXRpYyBzaXplX3QgcGFyc2VTdHJlYW1DYWxsYmFjayh2b2lkICpjb250ZW50cywgc2l6ZV90IGxlbmd0aCwgc2l6ZV90IG5tZW1iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnVzZXJwKQogewogICBYTUxfUGFyc2VyIHBhcnNlciA9IChYTUxfUGFyc2VyKSB1c2VycDsKICAgc2l6ZV90IHJlYWxfc2l6ZSA9IGxlbmd0aCAqIG5tZW1iOwogICBzdHJ1Y3QgUGFyc2VyU3RydWN0ICpzdGF0ZSA9IChzdHJ1Y3QgUGFyc2VyU3RydWN0ICopIFhNTF9HZXRVc2VyRGF0YShwYXJzZXIpOwogCiAgIC8qIE9ubHkgcGFyc2UgaWYgd2UncmUgbm90IGFscmVhZHkgaW4gYSBmYWlsdXJlIHN0YXRlLiAqLwotICBpZiAoc3RhdGUtPm9rICYmIFhNTF9QYXJzZShwYXJzZXIsIGNvbnRlbnRzLCByZWFsX3NpemUsIDApID09IDApIHsKKyAgaWYoc3RhdGUtPm9rICYmIFhNTF9QYXJzZShwYXJzZXIsIGNvbnRlbnRzLCByZWFsX3NpemUsIDApID09IDApIHsKICAgICBpbnQgZXJyb3JfY29kZSA9IFhNTF9HZXRFcnJvckNvZGUocGFyc2VyKTsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIlBhcnNpbmcgcmVzcG9uc2UgYnVmZmVyIG9mIGxlbmd0aCAlbHUgZmFpbGVkIHdpdGggZXJyb3IgY29kZSAlZCAoJXMpLlxuIiwKKyAgICBmcHJpbnRmKHN0ZGVyciwgIlBhcnNpbmcgcmVzcG9uc2UgYnVmZmVyIG9mIGxlbmd0aCAlbHUgZmFpbGVkIgorICAgICAgICAgICAgIiB3aXRoIGVycm9yIGNvZGUgJWQgKCVzKS5cbiIsCiAgICAgICAgICAgICByZWFsX3NpemUsIGVycm9yX2NvZGUsIFhNTF9FcnJvclN0cmluZyhlcnJvcl9jb2RlKSk7CiAgICAgc3RhdGUtPm9rID0gMDsKICAgfQpAQCAtMTIzLDcgKzEyOSw4IEBACiAgIC8qIEluaXRpYWxpemUgYSBsaWJjdXJsIGhhbmRsZS4gKi8KICAgY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwgXiBDVVJMX0dMT0JBTF9TU0wpOwogICBjdXJsX2hhbmRsZSA9IGN1cmxfZWFzeV9pbml0KCk7Ci0gIGN1cmxfZWFzeV9zZXRvcHQoY3VybF9oYW5kbGUsIENVUkxPUFRfVVJMLCAiaHR0cDovL3d3dy53M3NjaG9vbHMuY29tL3htbC9zaW1wbGUueG1sIik7CisgIGN1cmxfZWFzeV9zZXRvcHQoY3VybF9oYW5kbGUsIENVUkxPUFRfVVJMLAorICAgICAgICAgICAgICAgICAgICJodHRwOi8vd3d3Lnczc2Nob29scy5jb20veG1sL3NpbXBsZS54bWwiKTsKICAgY3VybF9lYXN5X3NldG9wdChjdXJsX2hhbmRsZSwgQ1VSTE9QVF9XUklURUZVTkNUSU9OLCBwYXJzZVN0cmVhbUNhbGxiYWNrKTsKICAgY3VybF9lYXN5X3NldG9wdChjdXJsX2hhbmRsZSwgQ1VSTE9QVF9XUklURURBVEEsICh2b2lkICopcGFyc2VyKTsKIApAQCAtMTM1LDkgKzE0Miw5IEBACiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2Vhc3lfcGVyZm9ybSgpIGZhaWxlZDogJXNcbiIsCiAgICAgICAgICAgICBjdXJsX2Vhc3lfc3RyZXJyb3IocmVzKSk7CiAgIH0KLSAgZWxzZSBpZiAoc3RhdGUub2spIHsKKyAgZWxzZSBpZihzdGF0ZS5vaykgewogICAgIC8qIEV4cGF0IHJlcXVpcmVzIG9uZSBmaW5hbCBjYWxsIHRvIGZpbmFsaXplIHBhcnNpbmcuICovCi0gICAgaWYgKFhNTF9QYXJzZShwYXJzZXIsIE5VTEwsIDAsIDEpID09IDApIHsKKyAgICBpZihYTUxfUGFyc2UocGFyc2VyLCBOVUxMLCAwLCAxKSA9PSAwKSB7CiAgICAgICBpbnQgZXJyb3JfY29kZSA9IFhNTF9HZXRFcnJvckNvZGUocGFyc2VyKTsKICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmluYWxpemluZyBwYXJzaW5nIGZhaWxlZCB3aXRoIGVycm9yIGNvZGUgJWQgKCVzKS5cbiIsCiAgICAgICAgICAgICAgIGVycm9yX2NvZGUsIFhNTF9FcnJvclN0cmluZyhlcnJvcl9jb2RlKSk7CmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvQUJJIGIvZG9jcy9saWJjdXJsL0FCSQppbmRleCBlZjBjYWE2Li5jN2M5MTQyIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvQUJJCisrKyBiL2RvY3MvbGliY3VybC9BQkkKQEAgLTEsNjMgKzEsNTUgQEAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgbGliY3VybCdzIGJpbmFyeSBpbnRlcmZhY2UKLQogQUJJIC0gQXBwbGljYXRpb24gQmluYXJ5IEludGVyZmFjZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCi0gICJBQkkiIGRlc2NyaWJlcyB0aGUgbG93LWxldmVsIGludGVyZmFjZSBiZXR3ZWVuIGFuIGFwcGxpY2F0aW9uIHByb2dyYW0gYW5kIGEKLSAgbGlicmFyeS4gQ2FsbGluZyBjb252ZW50aW9ucywgZnVuY3Rpb24gYXJndW1lbnRzLCByZXR1cm4gdmFsdWVzLCBzdHJ1Y3QKLSAgc2l6ZXMvZGVmaW5lcyBhbmQgbW9yZS4KKyAiQUJJIiBkZXNjcmliZXMgdGhlIGxvdy1sZXZlbCBpbnRlcmZhY2UgYmV0d2VlbiBhbiBhcHBsaWNhdGlvbiBwcm9ncmFtIGFuZCBhCisgbGlicmFyeS4gQ2FsbGluZyBjb252ZW50aW9ucywgZnVuY3Rpb24gYXJndW1lbnRzLCByZXR1cm4gdmFsdWVzLCBzdHJ1Y3QKKyBzaXplcy9kZWZpbmVzIGFuZCBtb3JlLgogCi0gIFtXaWtpcGVkaWEgaGFzIGEgbG9uZ2VyIGRlc2NyaXB0aW9uXShodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FwcGxpY2F0aW9uX2JpbmFyeV9pbnRlcmZhY2UpCisgW1dpa2lwZWRpYSBoYXMgYSBsb25nZXIgZGVzY3JpcHRpb25dKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FwcGxpY2F0aW9uX2JpbmFyeV9pbnRlcmZhY2UpCiAKIFVwZ3JhZGVzCiAtLS0tLS0tLQogCi0gIEluIHRoZSB2YXN0IG1ham9yaXR5IG9mIGFsbCBjYXNlcywgYSB0eXBpY2FsIGxpYmN1cmwgdXBncmFkZSBkb2VzIG5vdCBicmVhawotICB0aGUgQUJJIGF0IGFsbC4gWW91ciBhcHBsaWNhdGlvbiBjYW4gcmVtYWluIHVzaW5nIGxpYmN1cmwganVzdCBhcyBiZWZvcmUsCi0gIG9ubHkgd2l0aCBsZXNzIGJ1Z3MgYW5kIHBvc3NpYmx5IHdpdGggYWRkZWQgbmV3IGZlYXR1cmVzLiBZb3UgbmVlZCB0byByZWFkCi0gIHRoZSByZWxlYXNlIG5vdGVzLCBhbmQgaWYgdGhleSBtZW50aW9uIGFuIEFCSSBicmVhay9zb25hbWUgYnVtcCwgeW91IG1heQotICBoYXZlIHRvIHZlcmlmeSB0aGF0IHlvdXIgYXBwbGljYXRpb24gc3RpbGwgYnVpbGRzIGZpbmUgYW5kIHVzZXMgbGliY3VybCBhcwotICBpdCBub3cgaXMgZGVmaW5lZCB0byB3b3JrLgorIEluIHRoZSB2YXN0IG1ham9yaXR5IG9mIGFsbCBjYXNlcywgYSB0eXBpY2FsIGxpYmN1cmwgdXBncmFkZSBkb2VzIG5vdCBicmVhaworIHRoZSBBQkkgYXQgYWxsLiBZb3VyIGFwcGxpY2F0aW9uIGNhbiByZW1haW4gdXNpbmcgbGliY3VybCBqdXN0IGFzIGJlZm9yZSwKKyBvbmx5IHdpdGggbGVzcyBidWdzIGFuZCBwb3NzaWJseSB3aXRoIGFkZGVkIG5ldyBmZWF0dXJlcy4gWW91IG5lZWQgdG8gcmVhZAorIHRoZSByZWxlYXNlIG5vdGVzLCBhbmQgaWYgdGhleSBtZW50aW9uIGFuIEFCSSBicmVhay9zb25hbWUgYnVtcCwgeW91IG1heSBoYXZlCisgdG8gdmVyaWZ5IHRoYXQgeW91ciBhcHBsaWNhdGlvbiBzdGlsbCBidWlsZHMgZmluZSBhbmQgdXNlcyBsaWJjdXJsIGFzIGl0IG5vdworIGlzIGRlZmluZWQgdG8gd29yay4KIAogVmVyc2lvbiBOdW1iZXJzCiAtLS0tLS0tLS0tLS0tLS0KIAotICBJbiBsaWJjdXJsIGxhbmQsIHlvdSByZWFsbHkgY2FuJ3QgdGVsbCBieSB0aGUgbGliY3VybCB2ZXJzaW9uIG51bWJlciBpZiB0aGF0Ci0gIGxpYmN1cmwgaXMgYmluYXJ5IGNvbXBhdGlibGUgb3Igbm90IHdpdGggYW5vdGhlciBsaWJjdXJsIHZlcnNpb24uCisgSW4gbGliY3VybCBsYW5kLCB5b3UgcmVhbGx5IGNhbid0IHRlbGwgYnkgdGhlIGxpYmN1cmwgdmVyc2lvbiBudW1iZXIgaWYgdGhhdAorIGxpYmN1cmwgaXMgYmluYXJ5IGNvbXBhdGlibGUgb3Igbm90IHdpdGggYW5vdGhlciBsaWJjdXJsIHZlcnNpb24uCiAKIFNvbmFtZSBCdW1wcwogLS0tLS0tLS0tLS0tCiAKLSAgV2hlbmV2ZXIgdGhlcmUgYXJlIGNoYW5nZXMgZG9uZSB0byB0aGUgbGlicmFyeSB0aGF0IHdpbGwgY2F1c2UgYW4gQUJJCi0gIGJyZWFrYWdlLCB0aGF0IG1heSByZXF1aXJlIHlvdXIgYXBwbGljYXRpb24gdG8gZ2V0IGF0dGVudGlvbiBvciBwb3NzaWJseSBiZQotICBjaGFuZ2VkIHRvIGFkaGVyZSB0byBuZXcgdGhpbmdzLCB3ZSB3aWxsIGJ1bXAgdGhlIHNvbmFtZS4gVGhlbiB0aGUgbGlicmFyeQotICB3aWxsIGdldCBhIGRpZmZlcmVudCBvdXRwdXQgbmFtZSBhbmQgdGh1cyBjYW4gaW4gZmFjdCBiZSBpbnN0YWxsZWQgaW4KLSAgcGFyYWxsZWwgd2l0aCBhbiBvbGRlciBpbnN0YWxsZWQgbGliIChvbiBtb3N0IHN5c3RlbXMpLiBUaHVzLCBvbGQKLSAgYXBwbGljYXRpb25zIGJ1aWx0IGFnYWluc3QgdGhlIHByZXZpb3VzIEFCSSB2ZXJzaW9uIHdpbGwgcmVtYWluIHdvcmtpbmcgYW5kCi0gIHVzaW5nIHRoZSBvbGRlciBsaWIsIHdoaWxlIG5ld2VyIGFwcGxpY2F0aW9ucyBidWlsZCBhbmQgdXNlIHRoZSBuZXdlciBvbmUuCisgV2hlbmV2ZXIgdGhlcmUgYXJlIGNoYW5nZXMgZG9uZSB0byB0aGUgbGlicmFyeSB0aGF0IHdpbGwgY2F1c2UgYW4gQUJJCisgYnJlYWthZ2UsIHRoYXQgbWF5IHJlcXVpcmUgeW91ciBhcHBsaWNhdGlvbiB0byBnZXQgYXR0ZW50aW9uIG9yIHBvc3NpYmx5IGJlCisgY2hhbmdlZCB0byBhZGhlcmUgdG8gbmV3IHRoaW5ncywgd2Ugd2lsbCBidW1wIHRoZSBzb25hbWUuIFRoZW4gdGhlIGxpYnJhcnkKKyB3aWxsIGdldCBhIGRpZmZlcmVudCBvdXRwdXQgbmFtZSBhbmQgdGh1cyBjYW4gaW4gZmFjdCBiZSBpbnN0YWxsZWQgaW4KKyBwYXJhbGxlbCB3aXRoIGFuIG9sZGVyIGluc3RhbGxlZCBsaWIgKG9uIG1vc3Qgc3lzdGVtcykuIFRodXMsIG9sZAorIGFwcGxpY2F0aW9ucyBidWlsdCBhZ2FpbnN0IHRoZSBwcmV2aW91cyBBQkkgdmVyc2lvbiB3aWxsIHJlbWFpbiB3b3JraW5nIGFuZAorIHVzaW5nIHRoZSBvbGRlciBsaWIsIHdoaWxlIG5ld2VyIGFwcGxpY2F0aW9ucyBidWlsZCBhbmQgdXNlIHRoZSBuZXdlciBvbmUuCiAKLSAgRHVyaW5nIHRoZSBmaXJzdCBzZXZlbiB5ZWFycyBvZiBsaWJjdXJsIHJlbGVhc2VzLCB0aGVyZSBoYXZlIG9ubHkgYmVlbiBmb3VyCi0gIEFCSSBicmVha2FnZXMuCisgRHVyaW5nIHRoZSBmaXJzdCBzZXZlbiB5ZWFycyBvZiBsaWJjdXJsIHJlbGVhc2VzLCB0aGVyZSBoYXZlIG9ubHkgYmVlbiBmb3VyCisgQUJJIGJyZWFrYWdlcy4KIAotICBXZSBhcmUgZGV0ZXJtaW5lZCB0byBidW1wIHRoZSBTT05BTUUgYXMgcmFyZWx5IGFzIHBvc3NpYmxlLiAgSWRlYWxseSwgd2UKLSAgbmV2ZXIgZG8gaXQgYWdhaW4uCisgV2UgYXJlIGRldGVybWluZWQgdG8gYnVtcCB0aGUgU09OQU1FIGFzIHJhcmVseSBhcyBwb3NzaWJsZS4gIElkZWFsbHksIHdlCisgbmV2ZXIgZG8gaXQgYWdhaW4uCiAKIERvd25ncmFkZXMKIC0tLS0tLS0tLS0KIAotICBHb2luZyB0byBhbiBvbGRlciBsaWJjdXJsIHZlcnNpb24gZnJvbSBvbmUgeW91J3JlIGN1cnJlbnRseSB1c2luZyBjYW4gYmUgYQotICB0cmlja3kgdGhpbmcuIE1vc3RseSB3ZSBhZGQgZmVhdHVyZXMgYW5kIG9wdGlvbnMgdG8gbmV3ZXIgbGliY3VybHMgYXMgdGhhdAotICB3b24ndCBicmVhayBBQkkgb3IgaGFtcGVyIGV4aXN0aW5nIGFwcGxpY2F0aW9ucy4gVGhpcyBoYXMgdGhlIGltcGxpY2F0aW9uCi0gIHRoYXQgZ29pbmcgYmFja3dhcmRzIG1heSBnZXQgeW91IGluIGEgc2l0dWF0aW9uIHdoZXJlIHlvdSBwaWNrIGEgbGliY3VybAotICB0aGF0IGRvZXNuJ3Qgc3VwcG9ydCB0aGUgb3B0aW9ucyB5b3VyIGFwcGxpY2F0aW9uIG5lZWRzLiBPciBwb3NzaWJseSB5b3UKLSAgZXZlbiBkb3duZ3JhZGUgc28gZmFyIHNvIHlvdSBjcm9zcyBhbiBBQkkgYnJlYWsgYm9yZGVyIGFuZCB0aHVzIGEgZGlmZmVyZW50Ci0gIHNvbmFtZSwgYW5kIHRoZW4geW91ciBhcHBsaWNhdGlvbiBtYXkgbmVlZCB0byBhZGFwdCB0byB0aGUgbW9kaWZpZWQgQUJJLgorIEdvaW5nIHRvIGFuIG9sZGVyIGxpYmN1cmwgdmVyc2lvbiBmcm9tIG9uZSB5b3UncmUgY3VycmVudGx5IHVzaW5nIGNhbiBiZSBhCisgdHJpY2t5IHRoaW5nLiBNb3N0bHkgd2UgYWRkIGZlYXR1cmVzIGFuZCBvcHRpb25zIHRvIG5ld2VyIGxpYmN1cmxzIGFzIHRoYXQKKyB3b24ndCBicmVhayBBQkkgb3IgaGFtcGVyIGV4aXN0aW5nIGFwcGxpY2F0aW9ucy4gVGhpcyBoYXMgdGhlIGltcGxpY2F0aW9uCisgdGhhdCBnb2luZyBiYWNrd2FyZHMgbWF5IGdldCB5b3UgaW4gYSBzaXR1YXRpb24gd2hlcmUgeW91IHBpY2sgYSBsaWJjdXJsIHRoYXQKKyBkb2Vzbid0IHN1cHBvcnQgdGhlIG9wdGlvbnMgeW91ciBhcHBsaWNhdGlvbiBuZWVkcy4gT3IgcG9zc2libHkgeW91IGV2ZW4KKyBkb3duZ3JhZGUgc28gZmFyIHNvIHlvdSBjcm9zcyBhbiBBQkkgYnJlYWsgYm9yZGVyIGFuZCB0aHVzIGEgZGlmZmVyZW50Cisgc29uYW1lLCBhbmQgdGhlbiB5b3VyIGFwcGxpY2F0aW9uIG1heSBuZWVkIHRvIGFkYXB0IHRvIHRoZSBtb2RpZmllZCBBQkkuCiAKIEhpc3RvcnkKIC0tLS0tLS0KZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9NYWtlZmlsZS5hbSBiL2RvY3MvbGliY3VybC9NYWtlZmlsZS5hbQppbmRleCAzOTI3MmFjLi40OWFjZDk3IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvTWFrZWZpbGUuYW0KKysrIGIvZG9jcy9saWJjdXJsL01ha2VmaWxlLmFtCkBAIC01LDExICs1LDExIEBACiAjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogIwotIyBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorIyBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogIwogIyBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogIyB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0jIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisjIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogIwogIyBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICMgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yOSwxOCArMjksMTkgQEAKICBjdXJsX2Zvcm1hZGQuMyBjdXJsX2Zvcm1mcmVlLjMgY3VybF9nZXRkYXRlLjMgY3VybF9nZXRlbnYuMwkJIFwKICBjdXJsX3NsaXN0X2FwcGVuZC4zIGN1cmxfc2xpc3RfZnJlZV9hbGwuMyBjdXJsX3ZlcnNpb24uMwkJIFwKICBjdXJsX3ZlcnNpb25faW5mby4zIGN1cmxfZXNjYXBlLjMgY3VybF91bmVzY2FwZS4zIGN1cmxfZnJlZS4zCQkgXAotIGN1cmxfc3RyZXF1YWwuMyBjdXJsX21wcmludGYuMyBjdXJsX2dsb2JhbF9pbml0LjMgY3VybF9nbG9iYWxfY2xlYW51cC4zIFwKLSBjdXJsX211bHRpX2FkZF9oYW5kbGUuMyBjdXJsX211bHRpX2NsZWFudXAuMyBjdXJsX211bHRpX2Zkc2V0LjMJIFwKLSBjdXJsX211bHRpX2luZm9fcmVhZC4zIGN1cmxfbXVsdGlfaW5pdC4zIGN1cmxfbXVsdGlfcGVyZm9ybS4zCQkgXAotIGN1cmxfbXVsdGlfcmVtb3ZlX2hhbmRsZS4zIGN1cmxfc2hhcmVfY2xlYW51cC4zIGN1cmxfc2hhcmVfaW5pdC4zCSBcCi0gY3VybF9zaGFyZV9zZXRvcHQuMyBsaWJjdXJsLjMgbGliY3VybC1lYXN5LjMgbGliY3VybC1tdWx0aS4zCQkgXAotIGxpYmN1cmwtc2hhcmUuMyBsaWJjdXJsLWVycm9ycy4zIGN1cmxfZWFzeV9zdHJlcnJvci4zCQkJIFwKKyBjdXJsX3N0cmVxdWFsLjMgY3VybF9tcHJpbnRmLjMgY3VybF9nbG9iYWxfaW5pdC4zCQkJIFwKKyBjdXJsX2dsb2JhbF9jbGVhbnVwLjMgY3VybF9tdWx0aV9hZGRfaGFuZGxlLjMgY3VybF9tdWx0aV9jbGVhbnVwLjMJIFwKKyBjdXJsX211bHRpX2Zkc2V0LjMgY3VybF9tdWx0aV9pbmZvX3JlYWQuMyBjdXJsX211bHRpX2luaXQuMwkJIFwKKyBjdXJsX211bHRpX3BlcmZvcm0uMyBjdXJsX211bHRpX3JlbW92ZV9oYW5kbGUuMyBjdXJsX3NoYXJlX2NsZWFudXAuMwkgXAorIGN1cmxfc2hhcmVfaW5pdC4zIGN1cmxfc2hhcmVfc2V0b3B0LjMgbGliY3VybC4zIGxpYmN1cmwtZWFzeS4zIAkgXAorIGxpYmN1cmwtbXVsdGkuMyBsaWJjdXJsLXNoYXJlLjMgbGliY3VybC1lcnJvcnMuMyBjdXJsX2Vhc3lfc3RyZXJyb3IuMwkgXAogIGN1cmxfbXVsdGlfc3RyZXJyb3IuMyBjdXJsX3NoYXJlX3N0cmVycm9yLjMgY3VybF9nbG9iYWxfaW5pdF9tZW0uMwkgXAogIGxpYmN1cmwtdHV0b3JpYWwuMyBjdXJsX2Vhc3lfcmVzZXQuMyBjdXJsX2Vhc3lfZXNjYXBlLjMJCSBcCiAgY3VybF9lYXN5X3VuZXNjYXBlLjMgY3VybF9tdWx0aV9zZXRvcHQuMyBjdXJsX211bHRpX3NvY2tldC4zCQkgXAogIGN1cmxfbXVsdGlfdGltZW91dC4zIGN1cmxfZm9ybWdldC4zIGN1cmxfbXVsdGlfYXNzaWduLjMJCSBcCiAgY3VybF9lYXN5X3BhdXNlLjMgY3VybF9lYXN5X3JlY3YuMyBjdXJsX2Vhc3lfc2VuZC4zCQkJIFwKLSBjdXJsX211bHRpX3NvY2tldF9hY3Rpb24uMyBjdXJsX211bHRpX3dhaXQuMyBsaWJjdXJsLXN5bWJvbHMuMworIGN1cmxfbXVsdGlfc29ja2V0X2FjdGlvbi4zIGN1cmxfbXVsdGlfd2FpdC4zIGxpYmN1cmwtc3ltYm9scy4zIAkgXAorIGxpYmN1cmwtdGhyZWFkLjMgY3VybF9tdWx0aV9zb2NrZXRfYWxsLjMKIAogSFRNTFBBR0VTID0gY3VybF9lYXN5X2NsZWFudXAuaHRtbCBjdXJsX2Vhc3lfZ2V0aW5mby5odG1sCQlcCiAgY3VybF9lYXN5X2luaXQuaHRtbCBjdXJsX2Vhc3lfcGVyZm9ybS5odG1sIGN1cmxfZWFzeV9zZXRvcHQuaHRtbAlcCkBAIC02MCwyNyArNjEsMjkgQEAKICBjdXJsX2Vhc3lfdW5lc2NhcGUuaHRtbCBjdXJsX211bHRpX3NldG9wdC5odG1sIGN1cmxfbXVsdGlfc29ja2V0Lmh0bWwJXAogIGN1cmxfbXVsdGlfdGltZW91dC5odG1sIGN1cmxfZm9ybWdldC5odG1sIGN1cmxfbXVsdGlfYXNzaWduLmh0bWwJXAogIGN1cmxfZWFzeV9wYXVzZS5odG1sIGN1cmxfZWFzeV9yZWN2Lmh0bWwgY3VybF9lYXN5X3NlbmQuaHRtbAkJXAotIGN1cmxfbXVsdGlfc29ja2V0X2FjdGlvbi5odG1sIGN1cmxfbXVsdGlfd2FpdC5odG1sIGxpYmN1cmwtc3ltYm9scy5odG1sCisgY3VybF9tdWx0aV9zb2NrZXRfYWN0aW9uLmh0bWwgY3VybF9tdWx0aV93YWl0Lmh0bWwJCQlcCisgbGliY3VybC1zeW1ib2xzLmh0bWwgbGliY3VybC10aHJlYWQuaHRtbCBjdXJsX211bHRpX3NvY2tldF9hbGwuaHRtbAogCiBQREZQQUdFUyA9IGN1cmxfZWFzeV9jbGVhbnVwLnBkZiBjdXJsX2Vhc3lfZ2V0aW5mby5wZGYJCQkgXAogIGN1cmxfZWFzeV9pbml0LnBkZiBjdXJsX2Vhc3lfcGVyZm9ybS5wZGYgY3VybF9lYXN5X3NldG9wdC5wZGYJCSBcCiAgY3VybF9lYXN5X2R1cGhhbmRsZS5wZGYgY3VybF9mb3JtYWRkLnBkZiBjdXJsX2Zvcm1mcmVlLnBkZgkJIFwKLSBjdXJsX2dldGRhdGUucGRmIGN1cmxfZ2V0ZW52LnBkZiBjdXJsX3NsaXN0X2FwcGVuZC5wZGYJCQkgXAotIGN1cmxfc2xpc3RfZnJlZV9hbGwucGRmIGN1cmxfdmVyc2lvbi5wZGYgY3VybF92ZXJzaW9uX2luZm8ucGRmCQkgXAorIGN1cmxfZ2V0ZGF0ZS5wZGYgY3VybF9nZXRlbnYucGRmIGN1cmxfc2xpc3RfYXBwZW5kLnBkZiAJCSBcCisgY3VybF9zbGlzdF9mcmVlX2FsbC5wZGYgY3VybF92ZXJzaW9uLnBkZiBjdXJsX3ZlcnNpb25faW5mby5wZGYgCSBcCiAgY3VybF9lc2NhcGUucGRmIGN1cmxfdW5lc2NhcGUucGRmIGN1cmxfZnJlZS5wZGYgY3VybF9zdHJlcXVhbC5wZGYJIFwKICBjdXJsX21wcmludGYucGRmIGN1cmxfZ2xvYmFsX2luaXQucGRmIGN1cmxfZ2xvYmFsX2NsZWFudXAucGRmCQkgXAogIGN1cmxfbXVsdGlfYWRkX2hhbmRsZS5wZGYgY3VybF9tdWx0aV9jbGVhbnVwLnBkZiBjdXJsX211bHRpX2Zkc2V0LnBkZgkgXAogIGN1cmxfbXVsdGlfaW5mb19yZWFkLnBkZiBjdXJsX211bHRpX2luaXQucGRmIGN1cmxfbXVsdGlfcGVyZm9ybS5wZGYJIFwKLSBjdXJsX211bHRpX3JlbW92ZV9oYW5kbGUucGRmIGN1cmxfc2hhcmVfY2xlYW51cC5wZGYgY3VybF9zaGFyZV9pbml0LnBkZiBcCi0gY3VybF9zaGFyZV9zZXRvcHQucGRmIGxpYmN1cmwucGRmIGxpYmN1cmwtbXVsdGkucGRmIGxpYmN1cmwtZWFzeS5wZGYJIFwKLSBsaWJjdXJsLXNoYXJlLnBkZiBsaWJjdXJsLWVycm9ycy5wZGYgY3VybF9lYXN5X3N0cmVycm9yLnBkZgkJIFwKLSBjdXJsX211bHRpX3N0cmVycm9yLnBkZiBjdXJsX3NoYXJlX3N0cmVycm9yLnBkZgkJCSBcCi0gY3VybF9nbG9iYWxfaW5pdF9tZW0ucGRmIGxpYmN1cmwtdHV0b3JpYWwucGRmIGN1cmxfZWFzeV9yZXNldC5wZGYJIFwKLSBjdXJsX2Vhc3lfZXNjYXBlLnBkZiBjdXJsX2Vhc3lfdW5lc2NhcGUucGRmIGN1cmxfbXVsdGlfc2V0b3B0LnBkZgkgXAotIGN1cmxfbXVsdGlfc29ja2V0LnBkZiBjdXJsX211bHRpX3RpbWVvdXQucGRmIGN1cmxfZm9ybWdldC5wZGYJCSBcCi0gY3VybF9tdWx0aV9hc3NpZ24ucGRmIGN1cmxfZWFzeV9wYXVzZS5wZGYgY3VybF9lYXN5X3JlY3YucGRmCQkgXAotIGN1cmxfZWFzeV9zZW5kLnBkZiBjdXJsX211bHRpX3NvY2tldF9hY3Rpb24ucGRmIGN1cmxfbXVsdGlfd2FpdC5wZGYgICAgIFwKLSBsaWJjdXJsLXN5bWJvbHMucGRmCisgY3VybF9tdWx0aV9yZW1vdmVfaGFuZGxlLnBkZiBjdXJsX3NoYXJlX2NsZWFudXAucGRmCQkJIFwKKyBjdXJsX3NoYXJlX2luaXQucGRmIGN1cmxfc2hhcmVfc2V0b3B0LnBkZiBsaWJjdXJsLnBkZgkJCSBcCisgbGliY3VybC1tdWx0aS5wZGYgbGliY3VybC1lYXN5LnBkZiBsaWJjdXJsLXNoYXJlLnBkZgkJCSBcCisgbGliY3VybC1lcnJvcnMucGRmIGN1cmxfZWFzeV9zdHJlcnJvci5wZGYgY3VybF9tdWx0aV9zdHJlcnJvci5wZGYJIFwKKyBjdXJsX3NoYXJlX3N0cmVycm9yLnBkZiBjdXJsX2dsb2JhbF9pbml0X21lbS5wZGYgbGliY3VybC10dXRvcmlhbC5wZGYJIFwKKyBjdXJsX2Vhc3lfcmVzZXQucGRmIGN1cmxfZWFzeV9lc2NhcGUucGRmIGN1cmxfZWFzeV91bmVzY2FwZS5wZGYJIFwKKyBjdXJsX211bHRpX3NldG9wdC5wZGYgY3VybF9tdWx0aV9zb2NrZXQucGRmIGN1cmxfbXVsdGlfdGltZW91dC5wZGYJIFwKKyBjdXJsX2Zvcm1nZXQucGRmIGN1cmxfbXVsdGlfYXNzaWduLnBkZiBjdXJsX2Vhc3lfcGF1c2UucGRmCQkgXAorIGN1cmxfZWFzeV9yZWN2LnBkZiBjdXJsX2Vhc3lfc2VuZC5wZGYgY3VybF9tdWx0aV9zb2NrZXRfYWN0aW9uLnBkZiAJIFwKKyBjdXJsX211bHRpX3dhaXQucGRmIGxpYmN1cmwtc3ltYm9scy5wZGYgbGliY3VybC10aHJlYWQucGRmCQkgXAorIGN1cmxfbXVsdGlfc29ja2V0X2FsbC5wZGYKIAogbTRtYWNyb2RpciA9ICQoZGF0YWRpcikvYWNsb2NhbAogZGlzdF9tNG1hY3JvX0RBVEEgPSBsaWJjdXJsLm00CkBAIC04OSw3ICs5Miw3IEBACiAKIEVYVFJBX0RJU1QgPSAkKG1hbl9NQU5TKSAkKEhUTUxQQUdFUykgaW5kZXguaHRtbCAkKFBERlBBR0VTKSBBQkkgXAogICBzeW1ib2xzLWluLXZlcnNpb25zIHN5bWJvbHMucGwgbWtzeW1ib2xzbWFucGFnZS5wbAotTUFOMkhUTUw9IHJvZmZpdCAtLW1hbmRpcj0uIDwgJDwgPiRACitNQU4ySFRNTD0gcm9mZml0IC0tbWFuZGlyPS4gJDwgPiRACiAKIFNVRkZJWEVTID0gLjMgLmh0bWwKIApAQCAtOTcsMTMgKzEwMCwxMyBAQAogCXBlcmwgJChzcmNkaXIpL21rc3ltYm9sc21hbnBhZ2UucGwgPCAkKHNyY2Rpcikvc3ltYm9scy1pbi12ZXJzaW9ucyA+ICRACiAKIGh0bWw6ICQoSFRNTFBBR0VTKQotCWNkIG9wdHM7IG1ha2UgaHRtbAorCWNkIG9wdHMgJiYgbWFrZSBodG1sCiAKIC4zLmh0bWw6CiAJJChNQU4ySFRNTCkKIAogcGRmOiAkKFBERlBBR0VTKQotCWNkIG9wdHM7IG1ha2UgcGRmCisJY2Qgb3B0cyAmJiBtYWtlIHBkZgogCiAuMy5wZGY6CiAJQChmb289YGVjaG8gJEAgfCBzZWQgLWUgJ3MvXC5bMC05XSQkLy9nJ2A7IFwKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9jdXJsX2Vhc3lfY2xlYW51cC4zIGIvZG9jcy9saWJjdXJsL2N1cmxfZWFzeV9jbGVhbnVwLjMKaW5kZXggZThjZDU1MC4uY2M1OTkwZSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL2N1cmxfZWFzeV9jbGVhbnVwLjMKKysrIGIvZG9jcy9saWJjdXJsL2N1cmxfZWFzeV9jbGVhbnVwLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL2N1cmxfZWFzeV9kdXBoYW5kbGUuMyBiL2RvY3MvbGliY3VybC9jdXJsX2Vhc3lfZHVwaGFuZGxlLjMKaW5kZXggMzRjYmE1OC4uMjYyY2ViZCAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL2N1cmxfZWFzeV9kdXBoYW5kbGUuMworKysgYi9kb2NzL2xpYmN1cmwvY3VybF9lYXN5X2R1cGhhbmRsZS4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9jdXJsX2Vhc3lfZXNjYXBlLjMgYi9kb2NzL2xpYmN1cmwvY3VybF9lYXN5X2VzY2FwZS4zCmluZGV4IGRhMmIzODIuLmQyYjZjZDIgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9jdXJsX2Vhc3lfZXNjYXBlLjMKKysrIGIvZG9jcy9saWJjdXJsL2N1cmxfZWFzeV9lc2NhcGUuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yNiw3ICsyNiw4IEBACiAuU0ggU1lOT1BTSVMKIC5CICNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KIC5zcAotLkJJICJjaGFyICpjdXJsX2Vhc3lfZXNjYXBlKCBDVVJMICoiIGN1cmwgIiwgY2hhciAqIiBzdHJpbmcgIiwgaW50ICJsZW5ndGggIiApOyIKKy5CSSAiY2hhciAqY3VybF9lYXN5X2VzY2FwZSggQ1VSTCAqIiBjdXJsICIsIGNvbnN0IGNoYXIgKiIgc3RyaW5nCisuQkkgIiwgaW50ICJsZW5ndGggIiApOyIKIC5hZAogLlNIIERFU0NSSVBUSU9OCiBUaGlzIGZ1bmN0aW9uIGNvbnZlcnRzIHRoZSBnaXZlbiBpbnB1dCBcZklzdHJpbmdcZlAgdG8gYSBVUkwgZW5jb2RlZCBzdHJpbmcKQEAgLTQ4LDEwICs0OSwxMCBAQAogaWYoY3VybCkgewogICBjaGFyICpvdXRwdXQgPSBjdXJsX2Vhc3lfZXNjYXBlKGN1cmwsICJkYXRhIHRvIGNvbnZlcnQiLCAxNSk7CiAgIGlmKG91dHB1dCkgewotICAgIHByaW50ZigiRW5jb2RlZDogJXNcbiIsIG91dHB1dCk7CisgICAgcHJpbnRmKCJFbmNvZGVkOiAlc1xcbiIsIG91dHB1dCk7CiAgICAgY3VybF9mcmVlKG91dHB1dCk7CiAgIH0KLX19Cit9CiAuZmkKIC5TSCAiU0VFIEFMU08iCiAuQlIgY3VybF9lYXN5X3VuZXNjYXBlICIoMyksICIgY3VybF9mcmVlICIoMyksICIgUkZDIDM5ODYKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9jdXJsX2Vhc3lfZ2V0aW5mby4zIGIvZG9jcy9saWJjdXJsL2N1cmxfZWFzeV9nZXRpbmZvLjMKaW5kZXggZDQ4Y2EwNC4uMmI0YzdmZSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL2N1cmxfZWFzeV9nZXRpbmZvLjMKKysrIGIvZG9jcy9saWJjdXJsL2N1cmxfZWFzeV9nZXRpbmZvLjMKQEAgLTUsMTEgKzUsMTEgQEAKIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKIC5cIiAqCi0uXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zNCw3ICszNCw3IEBACiBwb2ludGVyIHRvIGEgc3RydWN0IGN1cmxfc2xpc3QgKiBvciBhIHBvaW50ZXIgdG8gYSBkb3VibGUgKGFzIHRoaXMKIGRvY3VtZW50YXRpb24gZGVzY3JpYmVzIGZ1cnRoZXIgZG93bikuICBUaGUgZGF0YSBwb2ludGVkLXRvIHdpbGwgYmUgZmlsbGVkIGluCiBhY2NvcmRpbmdseSBhbmQgY2FuIGJlIHJlbGllZCB1cG9uIG9ubHkgaWYgdGhlIGZ1bmN0aW9uIHJldHVybnMgQ1VSTEVfT0suICBVc2UKLXRoaXMgZnVuY3Rpb24gQUZURVIgYSBwZXJmb3JtZWQgdHJhbnNmZXIgaWYgeW91IHdhbnQgdG8gZ2V0IHRyYW5zZmVyLSBvcmllbnRlZAordGhpcyBmdW5jdGlvbiBBRlRFUiBhIHBlcmZvcm1lZCB0cmFuc2ZlciBpZiB5b3Ugd2FudCB0byBnZXQgdHJhbnNmZXIgcmVsYXRlZAogZGF0YS4KIAogWW91IHNob3VsZCBub3QgZnJlZSB0aGUgbWVtb3J5IHJldHVybmVkIGJ5IHRoaXMgZnVuY3Rpb24gdW5sZXNzIGl0IGlzCkBAIC00MiwyNDggKzQyLDE0MSBAQAogLlNIIEFWQUlMQUJMRSBJTkZPUk1BVElPTgogVGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiBjYW4gYmUgZXh0cmFjdGVkOgogLklQIENVUkxJTkZPX0VGRkVDVElWRV9VUkwKLVBhc3MgYSBwb2ludGVyIHRvIGEgY2hhciBwb2ludGVyIHRvIHJlY2VpdmUgdGhlIGxhc3QgdXNlZCBlZmZlY3RpdmUgVVJMLgorTGFzdCB1c2VkIFVSTC4KK1NlZSBcZklDVVJMSU5GT19FRkZFQ1RJVkVfVVJMKDMpXGZQCiAuSVAgQ1VSTElORk9fUkVTUE9OU0VfQ09ERQotUGFzcyBhIHBvaW50ZXIgdG8gYSBsb25nIHRvIHJlY2VpdmUgdGhlIGxhc3QgcmVjZWl2ZWQgSFRUUCwgRlRQIG9yIFNNVFAKLXJlc3BvbnNlIGNvZGUuIFRoaXMgb3B0aW9uIHdhcyBwcmV2aW91c2x5IGtub3duIGFzIENVUkxJTkZPX0hUVFBfQ09ERSBpbgotbGliY3VybCA3LjEwLjcgYW5kIGVhcmxpZXIuIFRoZSB2YWx1ZSB3aWxsIGJlIHplcm8gaWYgbm8gc2VydmVyIHJlc3BvbnNlIGNvZGUKLWhhcyBiZWVuIHJlY2VpdmVkLiBOb3RlIHRoYXQgYSBwcm94eSdzIENPTk5FQ1QgcmVzcG9uc2Ugc2hvdWxkIGJlIHJlYWQgd2l0aAotXGZJQ1VSTElORk9fSFRUUF9DT05ORUNUQ09ERVxmUCBhbmQgbm90IHRoaXMuCi0KLVN1cHBvcnQgZm9yIFNNVFAgcmVzcG9uc2VzIGFkZGVkIGluIDcuMjUuMC4KK0xhc3QgcmVjZWl2ZWQgcmVzcG9uc2UgY29kZS4KK1NlZSBcZklDVVJMSU5GT19SRVNQT05TRV9DT0RFKDMpXGZQCiAuSVAgQ1VSTElORk9fSFRUUF9DT05ORUNUQ09ERQotUGFzcyBhIHBvaW50ZXIgdG8gYSBsb25nIHRvIHJlY2VpdmUgdGhlIGxhc3QgcmVjZWl2ZWQgcHJveHkgcmVzcG9uc2UgY29kZSB0byBhCi1DT05ORUNUIHJlcXVlc3QuCitMYXN0IHByb3h5IENPTk5FQ1QgcmVzcG9uc2UgY29kZS4KK1NlZSBcZklDVVJMSU5GT19IVFRQX0NPTk5FQ1RDT0RFKDMpXGZQCiAuSVAgQ1VSTElORk9fRklMRVRJTUUKLVBhc3MgYSBwb2ludGVyIHRvIGEgbG9uZyB0byByZWNlaXZlIHRoZSByZW1vdGUgdGltZSBvZiB0aGUgcmV0cmlldmVkIGRvY3VtZW50Ci0oaW4gbnVtYmVyIG9mIHNlY29uZHMgc2luY2UgMSBqYW4gMTk3MCBpbiB0aGUgR01UL1VUQyB0aW1lIHpvbmUpLiBJZiB5b3UgZ2V0Ci0tMSwgaXQgY2FuIGJlIGJlY2F1c2Ugb2YgbWFueSByZWFzb25zICh1bmtub3duLCB0aGUgc2VydmVyIGhpZGVzIGl0IG9yIHRoZQotc2VydmVyIGRvZXNuJ3Qgc3VwcG9ydCB0aGUgY29tbWFuZCB0aGF0IHRlbGxzIGRvY3VtZW50IHRpbWUgZXRjKSBhbmQgdGhlIHRpbWUKLW9mIHRoZSBkb2N1bWVudCBpcyB1bmtub3duLiBOb3RlIHRoYXQgeW91IG11c3QgdGVsbCB0aGUgc2VydmVyIHRvIGNvbGxlY3QgdGhpcwotaW5mb3JtYXRpb24gYmVmb3JlIHRoZSB0cmFuc2ZlciBpcyBtYWRlLCBieSB1c2luZyB0aGUKLVxmSUNVUkxPUFRfRklMRVRJTUUoMylcZlAgb3B0aW9uIHRvIFxmSWN1cmxfZWFzeV9zZXRvcHQoMylcZlAgb3IgeW91IHdpbGwKLXVuY29uZGl0aW9uYWxseSBnZXQgYSAtMSBiYWNrLiAoQWRkZWQgaW4gNy41KQorUmVtb3RlIHRpbWUgb2YgdGhlIHJldHJpZXZlZCBkb2N1bWVudC4KK1NlZSBcZklDVVJMSU5GT19GSUxFVElNRSgzKVxmUAogLklQIENVUkxJTkZPX1RPVEFMX1RJTUUKLVBhc3MgYSBwb2ludGVyIHRvIGEgZG91YmxlIHRvIHJlY2VpdmUgdGhlIHRvdGFsIHRpbWUgaW4gc2Vjb25kcyBmb3IgdGhlCi1wcmV2aW91cyB0cmFuc2ZlciwgaW5jbHVkaW5nIG5hbWUgcmVzb2x2aW5nLCBUQ1AgY29ubmVjdCBldGMuCitUb3RhbCB0aW1lIG9mIHByZXZpb3VzIHRyYW5zZmVyLgorU2VlIFxmSUNVUkxJTkZPX1RPVEFMX1RJTUUoMylcZlAKIC5JUCBDVVJMSU5GT19OQU1FTE9PS1VQX1RJTUUKLVBhc3MgYSBwb2ludGVyIHRvIGEgZG91YmxlIHRvIHJlY2VpdmUgdGhlIHRpbWUsIGluIHNlY29uZHMsIGl0IHRvb2sgZnJvbSB0aGUKLXN0YXJ0IHVudGlsIHRoZSBuYW1lIHJlc29sdmluZyB3YXMgY29tcGxldGVkLgorVGltZSBmcm9tIHN0YXJ0IHVudGlsIG5hbWUgcmVzb2x2aW5nIGNvbXBsZXRlZC4KK1NlZSBcZklDVVJMSU5GT19OQU1FTE9PS1VQX1RJTUUoMylcZlAKIC5JUCBDVVJMSU5GT19DT05ORUNUX1RJTUUKLVBhc3MgYSBwb2ludGVyIHRvIGEgZG91YmxlIHRvIHJlY2VpdmUgdGhlIHRpbWUsIGluIHNlY29uZHMsIGl0IHRvb2sgZnJvbSB0aGUKLXN0YXJ0IHVudGlsIHRoZSBjb25uZWN0IHRvIHRoZSByZW1vdGUgaG9zdCAob3IgcHJveHkpIHdhcyBjb21wbGV0ZWQuCitUaW1lIGZyb20gc3RhcnQgdW50aWwgcmVtb3RlIGhvc3Qgb3IgcHJveHkgY29tcGxldGVkLgorU2VlIFxmSUNVUkxJTkZPX0NPTk5FQ1RfVElNRSgzKVxmUAogLklQIENVUkxJTkZPX0FQUENPTk5FQ1RfVElNRQotUGFzcyBhIHBvaW50ZXIgdG8gYSBkb3VibGUgdG8gcmVjZWl2ZSB0aGUgdGltZSwgaW4gc2Vjb25kcywgaXQgdG9vayBmcm9tIHRoZQotc3RhcnQgdW50aWwgdGhlIFNTTC9TU0ggY29ubmVjdC9oYW5kc2hha2UgdG8gdGhlIHJlbW90ZSBob3N0IHdhcyBjb21wbGV0ZWQuCi1UaGlzIHRpbWUgaXMgbW9zdCBvZnRlbiB2ZXJ5IG5lYXIgdG8gdGhlIFBSRVRSQU5TRkVSIHRpbWUsIGV4Y2VwdCBmb3IgY2FzZXMKLXN1Y2ggYXMgSFRUUCBwaXBlbGluaW5nIHdoZXJlIHRoZSBwcmV0cmFuc2ZlciB0aW1lIGNhbiBiZSBkZWxheWVkIGR1ZSB0byB3YWl0cwotaW4gbGluZSBmb3IgdGhlIHBpcGVsaW5lIGFuZCBtb3JlLiAoQWRkZWQgaW4gNy4xOS4wKQorVGltZSBmcm9tIHN0YXJ0IHVudGlsIFNTTC9TU0ggaGFuZHNoYWtlIGNvbXBsZXRlZC4KK1NlZSBcZklDVVJMSU5GT19BUFBDT05ORUNUX1RJTUUoMylcZlAKIC5JUCBDVVJMSU5GT19QUkVUUkFOU0ZFUl9USU1FCi1QYXNzIGEgcG9pbnRlciB0byBhIGRvdWJsZSB0byByZWNlaXZlIHRoZSB0aW1lLCBpbiBzZWNvbmRzLCBpdCB0b29rIGZyb20gdGhlCi1zdGFydCB1bnRpbCB0aGUgZmlsZSB0cmFuc2ZlciBpcyBqdXN0IGFib3V0IHRvIGJlZ2luLiBUaGlzIGluY2x1ZGVzIGFsbAotcHJlLXRyYW5zZmVyIGNvbW1hbmRzIGFuZCBuZWdvdGlhdGlvbnMgdGhhdCBhcmUgc3BlY2lmaWMgdG8gdGhlIHBhcnRpY3VsYXIKLXByb3RvY29sKHMpIGludm9sdmVkLiBJdCBkb2VzIFxmSW5vdFxmUCBpbnZvbHZlIHRoZSBzZW5kaW5nIG9mIHRoZSBwcm90b2NvbC0KLXNwZWNpZmljIHJlcXVlc3QgdGhhdCB0cmlnZ2VycyBhIHRyYW5zZmVyLgorVGltZSBmcm9tIHN0YXJ0IHVudGlsIGp1c3QgYmVmb3JlIHRoZSB0cmFuc2ZlciBiZWdpbnMuCitTZWUgXGZJQ1VSTElORk9fUFJFVFJBTlNGRVJfVElNRSgzKVxmUAogLklQIENVUkxJTkZPX1NUQVJUVFJBTlNGRVJfVElNRQotUGFzcyBhIHBvaW50ZXIgdG8gYSBkb3VibGUgdG8gcmVjZWl2ZSB0aGUgdGltZSwgaW4gc2Vjb25kcywgaXQgdG9vayBmcm9tIHRoZQotc3RhcnQgdW50aWwgdGhlIGZpcnN0IGJ5dGUgaXMgcmVjZWl2ZWQgYnkgbGliY3VybC4gVGhpcyBpbmNsdWRlcwotQ1VSTElORk9fUFJFVFJBTlNGRVJfVElNRSBhbmQgYWxzbyB0aGUgdGltZSB0aGUgc2VydmVyIG5lZWRzIHRvIGNhbGN1bGF0ZSB0aGUKLXJlc3VsdC4KK1RpbWUgZnJvbSBzdGFydCB1bnRpbCBqdXN0IHdoZW4gdGhlIGZpcnN0IGJ5dGUgaXMgcmVjZWl2ZWQuCitTZWUgXGZJQ1VSTElORk9fU1RBUlRUUkFOU0ZFUl9USU1FKDMpXGZQCiAuSVAgQ1VSTElORk9fUkVESVJFQ1RfVElNRQotUGFzcyBhIHBvaW50ZXIgdG8gYSBkb3VibGUgdG8gcmVjZWl2ZSB0aGUgdG90YWwgdGltZSwgaW4gc2Vjb25kcywgaXQgdG9vayBmb3IKLWFsbCByZWRpcmVjdGlvbiBzdGVwcyBpbmNsdWRlIG5hbWUgbG9va3VwLCBjb25uZWN0LCBwcmV0cmFuc2ZlciBhbmQgdHJhbnNmZXIKLWJlZm9yZSBmaW5hbCB0cmFuc2FjdGlvbiB3YXMgc3RhcnRlZC4gQ1VSTElORk9fUkVESVJFQ1RfVElNRSBjb250YWlucyB0aGUKLWNvbXBsZXRlIGV4ZWN1dGlvbiB0aW1lIGZvciBtdWx0aXBsZSByZWRpcmVjdGlvbnMuICAoQWRkZWQgaW4gNy45LjcpCitUaW1lIHRha2VuIGZvciBhbGwgcmVkaXJlY3Qgc3RlcHMgYmVmb3JlIHRoZSBmaW5hbCB0cmFuc2Zlci4KK1NlZSBcZklDVVJMSU5GT19SRURJUkVDVF9USU1FKDMpXGZQCiAuSVAgQ1VSTElORk9fUkVESVJFQ1RfQ09VTlQKLVBhc3MgYSBwb2ludGVyIHRvIGEgbG9uZyB0byByZWNlaXZlIHRoZSB0b3RhbCBudW1iZXIgb2YgcmVkaXJlY3Rpb25zIHRoYXQgd2VyZQotYWN0dWFsbHkgZm9sbG93ZWQuICAoQWRkZWQgaW4gNy45LjcpCitUb3RhbCBudW1iZXIgb2YgcmVkaXJlY3RzIHRoYXQgd2VyZSBmb2xsb3dlZC4KK1NlZSBcZklDVVJMSU5GT19SRURJUkVDVF9DT1VOVCgzKVxmUAogLklQIENVUkxJTkZPX1JFRElSRUNUX1VSTAotUGFzcyBhIHBvaW50ZXIgdG8gYSBjaGFyIHBvaW50ZXIgdG8gcmVjZWl2ZSB0aGUgVVJMIGEgcmVkaXJlY3QgXGZJd291bGRcZlAKLXRha2UgeW91IHRvIGlmIHlvdSB3b3VsZCBlbmFibGUgXGZJQ1VSTE9QVF9GT0xMT1dMT0NBVElPTigzKVxmUC4gVGhpcyBjYW4gY29tZQotdmVyeSBoYW5keSBpZiB5b3UgdGhpbmsgdXNpbmcgdGhlIGJ1aWx0LWluIGxpYmN1cmwgcmVkaXJlY3QgbG9naWMgaXNuJ3QgZ29vZAotZW5vdWdoIGZvciB5b3UgYnV0IHlvdSB3b3VsZCBzdGlsbCBwcmVmZXIgdG8gYXZvaWQgaW1wbGVtZW50aW5nIGFsbCB0aGUgbWFnaWMKLW9mIGZpZ3VyaW5nIG91dCB0aGUgbmV3IFVSTC4gKEFkZGVkIGluIDcuMTguMikKK1VSTCBhIHJlZGlyZWN0IHdvdWxkIHRha2UgeW91IHRvLCBoYWQgeW91IGVuYWJsZWQgcmVkaXJlY3RzLgorU2VlIFxmSUNVUkxJTkZPX1JFRElSRUNUX1VSTCgzKVxmUAogLklQIENVUkxJTkZPX1NJWkVfVVBMT0FECi1QYXNzIGEgcG9pbnRlciB0byBhIGRvdWJsZSB0byByZWNlaXZlIHRoZSB0b3RhbCBhbW91bnQgb2YgYnl0ZXMgdGhhdCB3ZXJlCi11cGxvYWRlZC4KK051bWJlciBvZiBieXRlcyB1cGxvYWRlZC4KK1NlZSBcZklDVVJMSU5GT19TSVpFX1VQTE9BRCgzKVxmUAogLklQIENVUkxJTkZPX1NJWkVfRE9XTkxPQUQKLVBhc3MgYSBwb2ludGVyIHRvIGEgZG91YmxlIHRvIHJlY2VpdmUgdGhlIHRvdGFsIGFtb3VudCBvZiBieXRlcyB0aGF0IHdlcmUKLWRvd25sb2FkZWQuIFRoZSBhbW91bnQgaXMgb25seSBmb3IgdGhlIGxhdGVzdCB0cmFuc2ZlciBhbmQgd2lsbCBiZSByZXNldCBhZ2FpbgotZm9yIGVhY2ggbmV3IHRyYW5zZmVyLiBUaGlzIGNvdW50cyBhY3R1YWwgcGF5bG9hZCBkYXRhLCB3aGF0J3MgYWxzbyBjb21tb25seQotY2FsbGVkIGJvZHkuIEFsbCBtZXRhIGFuZCBoZWFkZXIgZGF0YSBhcmUgZXhjbHVkZWQgYW5kIHdpbGwgbm90IGJlIGNvdW50ZWQgaW4KLXRoaXMgbnVtYmVyLgorTnVtYmVyIG9mIGJ5dGVzIGRvd25sb2FkZWQuCitTZWUgXGZJQ1VSTElORk9fU0laRV9ET1dOTE9BRCgzKVxmUAogLklQIENVUkxJTkZPX1NQRUVEX0RPV05MT0FECi1QYXNzIGEgcG9pbnRlciB0byBhIGRvdWJsZSB0byByZWNlaXZlIHRoZSBhdmVyYWdlIGRvd25sb2FkIHNwZWVkIHRoYXQgY3VybAotbWVhc3VyZWQgZm9yIHRoZSBjb21wbGV0ZSBkb3dubG9hZC4gTWVhc3VyZWQgaW4gYnl0ZXMvc2Vjb25kLgorQXZlcmFnZSBkb3dubG9hZCBzcGVlZC4KK1NlZSBcZklDVVJMSU5GT19TUEVFRF9ET1dOTE9BRCgzKVxmUAogLklQIENVUkxJTkZPX1NQRUVEX1VQTE9BRAotUGFzcyBhIHBvaW50ZXIgdG8gYSBkb3VibGUgdG8gcmVjZWl2ZSB0aGUgYXZlcmFnZSB1cGxvYWQgc3BlZWQgdGhhdCBjdXJsCi1tZWFzdXJlZCBmb3IgdGhlIGNvbXBsZXRlIHVwbG9hZC4gTWVhc3VyZWQgaW4gYnl0ZXMvc2Vjb25kLgorQXZlcmFnZSB1cGxvYWQgc3BlZWQuCitTZWUgXGZJQ1VSTElORk9fU1BFRURfVVBMT0FEKDMpXGZQCiAuSVAgQ1VSTElORk9fSEVBREVSX1NJWkUKLVBhc3MgYSBwb2ludGVyIHRvIGEgbG9uZyB0byByZWNlaXZlIHRoZSB0b3RhbCBzaXplIG9mIGFsbCB0aGUgaGVhZGVycwotcmVjZWl2ZWQuIE1lYXN1cmVkIGluIG51bWJlciBvZiBieXRlcy4KK051bWJlciBvZiBieXRlcyBvZiBhbGwgaGVhZGVycyByZWNlaXZlZC4KK1NlZSBcZklDVVJMSU5GT19IRUFERVJfU0laRSgzKVxmUAogLklQIENVUkxJTkZPX1JFUVVFU1RfU0laRQotUGFzcyBhIHBvaW50ZXIgdG8gYSBsb25nIHRvIHJlY2VpdmUgdGhlIHRvdGFsIHNpemUgb2YgdGhlIGlzc3VlZAotcmVxdWVzdHMuIFRoaXMgaXMgc28gZmFyIG9ubHkgZm9yIEhUVFAgcmVxdWVzdHMuIE5vdGUgdGhhdCB0aGlzIG1heSBiZSBtb3JlCi10aGFuIG9uZSByZXF1ZXN0IGlmIEZPTExPV0xPQ0FUSU9OIGlzIHRydWUuCitOdW1iZXIgb2YgYnl0ZXMgc2VudCBpbiB0aGUgaXNzdWVkIEhUVFAgcmVxdWVzdHMuCitTZWUgXGZJQ1VSTElORk9fUkVRVUVTVF9TSVpFKDMpXGZQCiAuSVAgQ1VSTElORk9fU1NMX1ZFUklGWVJFU1VMVAotUGFzcyBhIHBvaW50ZXIgdG8gYSBsb25nIHRvIHJlY2VpdmUgdGhlIHJlc3VsdCBvZiB0aGUgY2VydGlmaWNhdGlvbgotdmVyaWZpY2F0aW9uIHRoYXQgd2FzIHJlcXVlc3RlZCAodXNpbmcgdGhlIFxmSUNVUkxPUFRfU1NMX1ZFUklGWVBFRVIoMylcZlAKLW9wdGlvbiB0byBcZkljdXJsX2Vhc3lfc2V0b3B0KDMpXGZQKS4KK0NlcnRpZmljYXRlIHZlcmlmaWNhdGlvbiByZXN1bHQuCitTZWUgXGZJQ1VSTElORk9fU1NMX1ZFUklGWVJFU1VMVCgzKVxmUAogLklQIENVUkxJTkZPX1NTTF9FTkdJTkVTCi1QYXNzIHRoZSBhZGRyZXNzIG9mIGEgJ3N0cnVjdCBjdXJsX3NsaXN0IConIHRvIHJlY2VpdmUgYSBsaW5rZWQtbGlzdCBvZgotT3BlblNTTCBjcnlwdG8tZW5naW5lcyBzdXBwb3J0ZWQuIE5vdGUgdGhhdCBlbmdpbmVzIGFyZSBub3JtYWxseSBpbXBsZW1lbnRlZAotaW4gc2VwYXJhdGUgZHluYW1pYyBsaWJyYXJpZXMuIEhlbmNlIG5vdCBhbGwgdGhlIHJldHVybmVkIGVuZ2luZXMgbWF5IGJlCi1hdmFpbGFibGUgYXQgcnVuLXRpbWUuIFxmQk5PVEU6XGZQIHlvdSBtdXN0IGNhbGwgXGZJY3VybF9zbGlzdF9mcmVlX2FsbCgzKVxmUAotb24gdGhlIGxpc3QgcG9pbnRlciBvbmNlIHlvdSdyZSBkb25lIHdpdGggaXQsIGFzIGxpYmN1cmwgd2lsbCBub3QgZnJlZSB0aGUKLWRhdGEgZm9yIHlvdS4gKEFkZGVkIGluIDcuMTIuMykKK0EgbGlzdCBvZiBPcGVuU1NMIGNyeXB0byBlbmdpbmVzLgorU2VlIFxmSUNVUkxJTkZPX1NTTF9FTkdJTkVTKDMpXGZQCiAuSVAgQ1VSTElORk9fQ09OVEVOVF9MRU5HVEhfRE9XTkxPQUQKLVBhc3MgYSBwb2ludGVyIHRvIGEgZG91YmxlIHRvIHJlY2VpdmUgdGhlIGNvbnRlbnQtbGVuZ3RoIG9mIHRoZSBkb3dubG9hZC4gVGhpcwotaXMgdGhlIHZhbHVlIHJlYWQgZnJvbSB0aGUgQ29udGVudC1MZW5ndGg6IGZpZWxkLiBTaW5jZSA3LjE5LjQsIHRoaXMgcmV0dXJucyAtMQotaWYgdGhlIHNpemUgaXNuJ3Qga25vd24uCitDb250ZW50IGxlbmd0aCBmcm9tIHRoZSBDb250ZW50LUxlbmd0aCBoZWFkZXIuCitTZWUgXGZJQ1VSTElORk9fQ09OVEVOVF9MRU5HVEhfRE9XTkxPQUQoMylcZlAKIC5JUCBDVVJMSU5GT19DT05URU5UX0xFTkdUSF9VUExPQUQKLVBhc3MgYSBwb2ludGVyIHRvIGEgZG91YmxlIHRvIHJlY2VpdmUgdGhlIHNwZWNpZmllZCBzaXplIG9mIHRoZSB1cGxvYWQuICBTaW5jZQotNy4xOS40LCB0aGlzIHJldHVybnMgLTEgaWYgdGhlIHNpemUgaXNuJ3Qga25vd24uCitVcGxvYWQgc2l6ZS4KK1NlZSBcZklDVVJMSU5GT19DT05URU5UX0xFTkdUSF9VUExPQUQoMylcZlAKIC5JUCBDVVJMSU5GT19DT05URU5UX1RZUEUKLVBhc3MgYSBwb2ludGVyIHRvIGEgY2hhciBwb2ludGVyIHRvIHJlY2VpdmUgdGhlIGNvbnRlbnQtdHlwZSBvZiB0aGUgZG93bmxvYWRlZAotb2JqZWN0LiBUaGlzIGlzIHRoZSB2YWx1ZSByZWFkIGZyb20gdGhlIENvbnRlbnQtVHlwZTogZmllbGQuIElmIHlvdSBnZXQgTlVMTCwKLWl0IG1lYW5zIHRoYXQgdGhlIHNlcnZlciBkaWRuJ3Qgc2VuZCBhIHZhbGlkIENvbnRlbnQtVHlwZSBoZWFkZXIgb3IgdGhhdCB0aGUKLXByb3RvY29sIHVzZWQgZG9lc24ndCBzdXBwb3J0IHRoaXMuCitDb250ZW50IHR5cGUgZnJvbSB0aGUgQ29udGVudC1UeXBlIGhlYWRlci4KK1NlZSBcZklDVVJMSU5GT19DT05URU5UX1RZUEUoMylcZlAKIC5JUCBDVVJMSU5GT19QUklWQVRFCi1QYXNzIGEgcG9pbnRlciB0byBhIGNoYXIgcG9pbnRlciB0byByZWNlaXZlIHRoZSBwb2ludGVyIHRvIHRoZSBwcml2YXRlIGRhdGEKLWFzc29jaWF0ZWQgd2l0aCB0aGUgY3VybCBoYW5kbGUgKHNldCB3aXRoIHRoZSBcZklDVVJMT1BUX1BSSVZBVEUoMylcZlAgb3B0aW9uCi10byBcZkljdXJsX2Vhc3lfc2V0b3B0KDMpXGZQKS4gUGxlYXNlIG5vdGUgdGhhdCBmb3IgaW50ZXJuYWwgcmVhc29ucywgdGhlCi12YWx1ZSBpcyByZXR1cm5lZCBhcyBhIGNoYXIgcG9pbnRlciwgYWx0aG91Z2ggZWZmZWN0aXZlbHkgYmVpbmcgYSAndm9pZCAqJy4KLShBZGRlZCBpbiA3LjEwLjMpCitVc2VyJ3MgcHJpdmF0ZSBkYXRhIHBvaW50ZXIuCitTZWUgXGZJQ1VSTElORk9fUFJJVkFURSgzKVxmUAogLklQIENVUkxJTkZPX0hUVFBBVVRIX0FWQUlMCi1QYXNzIGEgcG9pbnRlciB0byBhIGxvbmcgdG8gcmVjZWl2ZSBhIGJpdG1hc2sgaW5kaWNhdGluZyB0aGUgYXV0aGVudGljYXRpb24KLW1ldGhvZChzKSBhdmFpbGFibGUuIFRoZSBtZWFuaW5nIG9mIHRoZSBiaXRzIGlzIGV4cGxhaW5lZCBpbiB0aGUKLVxmSUNVUkxPUFRfSFRUUEFVVEgoMylcZlAgb3B0aW9uIGZvciBcZkljdXJsX2Vhc3lfc2V0b3B0KDMpXGZQLiAgKEFkZGVkIGluCi03LjEwLjgpCitBdmFpbGFibGUgSFRUUCBhdXRoZW50aWNhdGlvbiBtZXRob2RzLgorU2VlIFxmSUNVUkxJTkZPX0hUVFBBVVRIX0FWQUlMKDMpXGZQCiAuSVAgQ1VSTElORk9fUFJPWFlBVVRIX0FWQUlMCi1QYXNzIGEgcG9pbnRlciB0byBhIGxvbmcgdG8gcmVjZWl2ZSBhIGJpdG1hc2sgaW5kaWNhdGluZyB0aGUgYXV0aGVudGljYXRpb24KLW1ldGhvZChzKSBhdmFpbGFibGUgZm9yIHlvdXIgcHJveHkgYXV0aGVudGljYXRpb24uICAoQWRkZWQgaW4gNy4xMC44KQorQXZhaWxhYmxlIEhUVFAgcHJveHkgYXV0aGVudGljYXRpb24gbWV0aG9kcy4KK1NlZSBcZklDVVJMSU5GT19QUk9YWUFVVEhfQVZBSUwoMylcZlAKIC5JUCBDVVJMSU5GT19PU19FUlJOTwotUGFzcyBhIHBvaW50ZXIgdG8gYSBsb25nIHRvIHJlY2VpdmUgdGhlIGVycm5vIHZhcmlhYmxlIGZyb20gYSBjb25uZWN0IGZhaWx1cmUuCi1Ob3RlIHRoYXQgdGhlIHZhbHVlIGlzIG9ubHkgc2V0IG9uIGZhaWx1cmUsIGl0IGlzIG5vdCByZXNldCB1cG9uIGEKLXN1Y2Nlc3NmdWwgb3BlcmF0aW9uLiAgKEFkZGVkIGluIDcuMTIuMikKK1RoZSBlcnJubyBmcm9tIHRoZSBsYXN0IGZhaWx1cmUgdG8gY29ubmVjdC4KK1NlZSBcZklDVVJMSU5GT19PU19FUlJOTygzKVxmUAogLklQIENVUkxJTkZPX05VTV9DT05ORUNUUwotUGFzcyBhIHBvaW50ZXIgdG8gYSBsb25nIHRvIHJlY2VpdmUgaG93IG1hbnkgbmV3IGNvbm5lY3Rpb25zIGxpYmN1cmwgaGFkIHRvCi1jcmVhdGUgdG8gYWNoaWV2ZSB0aGUgcHJldmlvdXMgdHJhbnNmZXIgKG9ubHkgdGhlIHN1Y2Nlc3NmdWwgY29ubmVjdHMgYXJlCi1jb3VudGVkKS4gIENvbWJpbmVkIHdpdGggXGZJQ1VSTElORk9fUkVESVJFQ1RfQ09VTlRcZlAgeW91IGFyZSBhYmxlIHRvIGtub3cKLWhvdyBtYW55IHRpbWVzIGxpYmN1cmwgc3VjY2Vzc2Z1bGx5IHJldXNlZCBleGlzdGluZyBjb25uZWN0aW9uKHMpIG9yIG5vdC4gIFNlZQotdGhlIENvbm5lY3Rpb24gT3B0aW9ucyBvZiBcZkljdXJsX2Vhc3lfc2V0b3B0KDMpXGZQIHRvIHNlZSBob3cgbGliY3VybCB0cmllcwotdG8gbWFrZSBwZXJzaXN0ZW50IGNvbm5lY3Rpb25zIHRvIHNhdmUgdGltZS4gIChBZGRlZCBpbiA3LjEyLjMpCitOdW1iZXIgb2YgbmV3IHN1Y2Nlc3NmdWwgY29ubmVjdGlvbnMgdXNlZCBmb3IgcHJldmlvdXMgdHJhbnNmZXIuCitTZWUgXGZJQ1VSTElORk9fTlVNX0NPTk5FQ1RTKDMpXGZQCiAuSVAgQ1VSTElORk9fUFJJTUFSWV9JUAotUGFzcyBhIHBvaW50ZXIgdG8gYSBjaGFyIHBvaW50ZXIgdG8gcmVjZWl2ZSB0aGUgcG9pbnRlciB0byBhIHplcm8tdGVybWluYXRlZAotc3RyaW5nIGhvbGRpbmcgdGhlIElQIGFkZHJlc3Mgb2YgdGhlIG1vc3QgcmVjZW50IGNvbm5lY3Rpb24gZG9uZSB3aXRoIHRoaXMKLVxmQmN1cmxcZlAgaGFuZGxlLiBUaGlzIHN0cmluZyBtYXkgYmUgSVB2NiBpZiB0aGF0J3MgZW5hYmxlZC4gTm90ZSB0aGF0IHlvdQotZ2V0IGEgcG9pbnRlciB0byBhIG1lbW9yeSBhcmVhIHRoYXQgd2lsbCBiZSByZS11c2VkIGF0IG5leHQgcmVxdWVzdCBzbyB5b3UKLW5lZWQgdG8gY29weSB0aGUgc3RyaW5nIGlmIHlvdSB3YW50IHRvIGtlZXAgdGhlIGluZm9ybWF0aW9uLiAoQWRkZWQgaW4gNy4xOS4wKQorSVAgYWRkcmVzcyBvZiB0aGUgbGFzdCBjb25uZWN0aW9uLgorU2VlIFxmSUNVUkxJTkZPX1BSSU1BUllfSVAoMylcZlAKIC5JUCBDVVJMSU5GT19QUklNQVJZX1BPUlQKLVBhc3MgYSBwb2ludGVyIHRvIGEgbG9uZyB0byByZWNlaXZlIHRoZSBkZXN0aW5hdGlvbiBwb3J0IG9mIHRoZSBtb3N0IHJlY2VudAotY29ubmVjdGlvbiBkb25lIHdpdGggdGhpcyBcZkJjdXJsXGZQIGhhbmRsZS4gKEFkZGVkIGluIDcuMjEuMCkKK1BvcnQgb2YgdGhlIGxhc3QgY29ubmVjdGlvbi4KK1NlZSBcZklDVVJMSU5GT19QUklNQVJZX1BPUlQoMylcZlAKIC5JUCBDVVJMSU5GT19MT0NBTF9JUAotUGFzcyBhIHBvaW50ZXIgdG8gYSBjaGFyIHBvaW50ZXIgdG8gcmVjZWl2ZSB0aGUgcG9pbnRlciB0byBhIHplcm8tdGVybWluYXRlZAotc3RyaW5nIGhvbGRpbmcgdGhlIGxvY2FsIChzb3VyY2UpIElQIGFkZHJlc3Mgb2YgdGhlIG1vc3QgcmVjZW50IGNvbm5lY3Rpb24gZG9uZQotd2l0aCB0aGlzIFxmQmN1cmxcZlAgaGFuZGxlLiBUaGlzIHN0cmluZyBtYXkgYmUgSVB2NiBpZiB0aGF0J3MgZW5hYmxlZC4gVGhlCi1zYW1lIHJlc3RyaWN0aW9ucyBhcHBseSBhcyB0byBcZklDVVJMSU5GT19QUklNQVJZX0lQXGZQLiAoQWRkZWQgaW4gNy4yMS4wKQorTG9jYWwtZW5kIElQIGFkZHJlc3Mgb2YgbGFzdCBjb25uZWN0aW9uLgorU2VlIFxmSUNVUkxJTkZPX0xPQ0FMX0lQKDMpXGZQCiAuSVAgQ1VSTElORk9fTE9DQUxfUE9SVAotUGFzcyBhIHBvaW50ZXIgdG8gYSBsb25nIHRvIHJlY2VpdmUgdGhlIGxvY2FsIChzb3VyY2UpIHBvcnQgb2YgdGhlIG1vc3QgcmVjZW50Ci1jb25uZWN0aW9uIGRvbmUgd2l0aCB0aGlzIFxmQmN1cmxcZlAgaGFuZGxlLiAoQWRkZWQgaW4gNy4yMS4wKQorTG9jYWwtZW5kIHBvcnQgb2YgbGFzdCBjb25uZWN0aW9uLgorU2VlIFxmSUNVUkxJTkZPX0xPQ0FMX1BPUlQoMylcZlAKIC5JUCBDVVJMSU5GT19DT09LSUVMSVNUCi1QYXNzIGEgcG9pbnRlciB0byBhICdzdHJ1Y3QgY3VybF9zbGlzdCAqJyB0byByZWNlaXZlIGEgbGlua2VkLWxpc3Qgb2YgYWxsCi1jb29raWVzIGNVUkwga25vd3MgKGV4cGlyZWQgb25lcywgdG9vKS4gRG9uJ3QgZm9yZ2V0IHRvCi1cZkljdXJsX3NsaXN0X2ZyZWVfYWxsKDMpXGZQIHRoZSBsaXN0IGFmdGVyIGl0IGhhcyBiZWVuIHVzZWQuICBJZiB0aGVyZSBhcmUgbm8KLWNvb2tpZXMgKGNvb2tpZXMgZm9yIHRoZSBoYW5kbGUgaGF2ZSBub3QgYmVlbiBlbmFibGVkIG9yIHNpbXBseSBub25lIGhhdmUgYmVlbgotcmVjZWl2ZWQpICdzdHJ1Y3QgY3VybF9zbGlzdCAqJyB3aWxsIGJlIHNldCB0byBwb2ludCB0byBOVUxMLiAoQWRkZWQgaW4KLTcuMTQuMSkKK0xpc3Qgb2YgYWxsIGtub3duIGNvb2tpZXMuCitTZWUgXGZJQ1VSTElORk9fQ09PS0lFTElTVCgzKVxmUAogLklQIENVUkxJTkZPX0xBU1RTT0NLRVQKLVBhc3MgYSBwb2ludGVyIHRvIGEgbG9uZyB0byByZWNlaXZlIHRoZSBsYXN0IHNvY2tldCB1c2VkIGJ5IHRoaXMgY3VybAotc2Vzc2lvbi4gSWYgdGhlIHNvY2tldCBpcyBubyBsb25nZXIgdmFsaWQsIC0xIGlzIHJldHVybmVkLiBXaGVuIHlvdSBmaW5pc2gKLXdvcmtpbmcgd2l0aCB0aGUgc29ja2V0LCB5b3UgbXVzdCBjYWxsIGN1cmxfZWFzeV9jbGVhbnVwKCkgYXMgdXN1YWwgYW5kIGxldAotbGliY3VybCBjbG9zZSB0aGUgc29ja2V0IGFuZCBjbGVhbnVwIG90aGVyIHJlc291cmNlcyBhc3NvY2lhdGVkIHdpdGggdGhlCi1oYW5kbGUuIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgaW4gY29tYmluYXRpb24gd2l0aAotXGZJQ1VSTE9QVF9DT05ORUNUX09OTFkoMylcZlAuICAoQWRkZWQgaW4gNy4xNS4yKQotCi1OT1RFOiB0aGlzIEFQSSBpcyBub3QgcmVhbGx5IHdvcmtpbmcgb24gd2luNjQsIHNpbmNlIHRoZSBTT0NLRVQgdHlwZSBvbiB3aW42NAotaXMgNjQgYml0IGxhcmdlIHdoaWxlIGl0cyAnbG9uZycgaXMgb25seSAzMiBiaXRzLgorTGFzdCBzb2NrZXQgdXNlZC4KK1NlZSBcZklDVVJMSU5GT19MQVNUU09DS0VUKDMpXGZQCisuSVAgQ1VSTElORk9fQUNUSVZFU09DS0VUCitUaGUgc2Vzc2lvbidzIGFjdGl2ZSBzb2NrZXQuCitTZWUgXGZJQ1VSTElORk9fQUNUSVZFU09DS0VUKDMpXGZQCiAuSVAgQ1VSTElORk9fRlRQX0VOVFJZX1BBVEgKLVBhc3MgYSBwb2ludGVyIHRvIGEgY2hhciBwb2ludGVyIHRvIHJlY2VpdmUgYSBwb2ludGVyIHRvIGEgc3RyaW5nIGhvbGRpbmcgdGhlCi1wYXRoIG9mIHRoZSBlbnRyeSBwYXRoLiBUaGF0IGlzIHRoZSBpbml0aWFsIHBhdGggbGliY3VybCBlbmRlZCB1cCBpbiB3aGVuCi1sb2dnaW5nIG9uIHRvIHRoZSByZW1vdGUgRlRQIHNlcnZlci4gVGhpcyBzdG9yZXMgYSBOVUxMIGFzIHBvaW50ZXIgaWYKLXNvbWV0aGluZyBpcyB3cm9uZy4gKEFkZGVkIGluIDcuMTUuNCkKLQotQWxzbyB3b3JrcyBmb3IgU0ZUUCBzaW5jZSA3LjIxLjQKK1RoZSBlbnRyeSBwYXRoIGFmdGVyIGxvZ2dpbmcgaW4gdG8gYW4gRlRQIHNlcnZlci4KK1NlZSBcZklDVVJMSU5GT19GVFBfRU5UUllfUEFUSCgzKVxmUAogLklQIENVUkxJTkZPX0NFUlRJTkZPCi1QYXNzIGEgcG9pbnRlciB0byBhICdzdHJ1Y3QgY3VybF9jZXJ0aW5mbyAqJyBhbmQgeW91J2xsIGdldCBpdCBzZXQgdG8gcG9pbnQgdG8KLXN0cnVjdCB0aGF0IGhvbGRzIGEgbnVtYmVyIG9mIGxpbmtlZCBsaXN0cyB3aXRoIGluZm8gYWJvdXQgdGhlIGNlcnRpZmljYXRlCi1jaGFpbiwgYXNzdW1pbmcgeW91IGhhZCBcZklDVVJMT1BUX0NFUlRJTkZPKDMpXGZQIGVuYWJsZWQgd2hlbiB0aGUgcHJldmlvdXMKLXJlcXVlc3Qgd2FzIGRvbmUuIFRoZSBzdHJ1Y3QgcmVwb3J0cyBob3cgbWFueSBjZXJ0cyBpdCBmb3VuZCBhbmQgdGhlbiB5b3UgY2FuCi1leHRyYWN0IGluZm8gZm9yIGVhY2ggb2YgdGhvc2UgY2VydHMgYnkgZm9sbG93aW5nIHRoZSBsaW5rZWQgbGlzdHMuIFRoZSBpbmZvCi1jaGFpbiBpcyBwcm92aWRlZCBpbiBhIHNlcmllcyBvZiBkYXRhIGluIHRoZSBmb3JtYXQgIm5hbWU6Y29udGVudCIgd2hlcmUgdGhlCi1jb250ZW50IGlzIGZvciB0aGUgc3BlY2lmaWMgbmFtZWQgZGF0YS4gU2VlIGFsc28gdGhlIGNlcnRpbmZvLmMgZXhhbXBsZS4gTk9URToKLXRoaXMgb3B0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIGluIGxpYmN1cmwgYnVpbHQgd2l0aCBPcGVuU1NMLCBOU1Mgb3IgR1NLaXQKLXN1cHBvcnQuIChBZGRlZCBpbiA3LjE5LjEpCitDZXJ0aWZpY2F0ZSBjaGFpbi4KK1NlZSBcZklDVVJMSU5GT19DRVJUSU5GTygzKVxmUAorLklQIENVUkxJTkZPX1RMU19TU0xfUFRSCitUTFMgc2Vzc2lvbiBpbmZvIHRoYXQgY2FuIGJlIHVzZWQgZm9yIGZ1cnRoZXIgcHJvY2Vzc2luZy4KK1NlZSBcZklDVVJMSU5GT19UTFNfU1NMX1BUUigzKVxmUAogLklQIENVUkxJTkZPX1RMU19TRVNTSU9OCi1QYXNzIGEgcG9pbnRlciB0byBhICdzdHJ1Y3QgY3VybF90bHNzZXNzaW9uaW5mbyAqJy4gIFRoZSBwb2ludGVyIHdpbGwgYmUKLWluaXRpYWxpemVkIHRvIHJlZmVyIHRvIGEgJ3N0cnVjdCBjdXJsX3Rsc3Nlc3Npb25pbmZvIConIHRoYXQgd2lsbCBjb250YWluIGFuCi1lbnVtIGluZGljYXRpbmcgdGhlIFNTTCBsaWJyYXJ5IHVzZWQgZm9yIHRoZSBoYW5kc2hha2UgYW5kIHRoZSByZXNwZWN0aXZlCi1pbnRlcm5hbCBUTFMgc2Vzc2lvbiBzdHJ1Y3R1cmUgb2YgdGhpcyB1bmRlcmx5aW5nIFNTTCBsaWJyYXJ5LgotCi1UaGlzIG1heSB0aGVuIGJlIHVzZWQgdG8gZXh0cmFjdCBjZXJ0aWZpY2F0ZSBpbmZvcm1hdGlvbiBpbiBhIGZvcm1hdAotY29udmVuaWVudCBmb3IgZnVydGhlciBwcm9jZXNzaW5nLCBzdWNoIGFzIG1hbnVhbCB2YWxpZGF0aW9uLiBOT1RFOiB0aGlzCi1vcHRpb24gbWF5IG5vdCBiZSBhdmFpbGFibGUgZm9yIGFsbCBTU0wgYmFja2VuZHM7IHVuc3VwcG9ydGVkIFNTTCBiYWNrZW5kcwotd2lsbCByZXR1cm4gJ0NVUkxTU0xCQUNLRU5EX05PTkUnIHRvIGluZGljYXRlIHRoYXQgdGhleSBhcmUgbm90IHN1cHBvcnRlZDsKLXRoaXMgZG9lcyBub3QgbWVhbiB0aGF0IG5vIFNTTCBiYWNrZW5kIHdhcyB1c2VkLiAoQWRkZWQgaW4gNy4zNC4wKQotCi0ubmYKLXN0cnVjdCBjdXJsX3Rsc3Nlc3Npb25pbmZvIHsKLSAgY3VybF9zc2xiYWNrZW5kIGJhY2tlbmQ7Ci0gIHZvaWQgKmludGVybmFsczsKLX07Ci0uZmkKLQotVGhlIFxmSWludGVybmFsc1xmUCBzdHJ1Y3QgbWVtYmVyIHdpbGwgcG9pbnQgdG8gYSBUTFMgbGlicmFyeSBzcGVjaWZpYyBwb2ludGVyCi13aXRoIHRoZSBmb2xsb3dpbmcgdW5kZXJseWluZyB0eXBlczoKLS5SUwotLklQIE9wZW5TU0wKLVNTTF9DVFggKgotLklQIEdudVRMUwotZ251dGxzX3Nlc3Npb25fdAotLklQIE5TUwotUFJGaWxlRGVzYyAqCi0uSVAgZ3NraXQKLWdza19oYW5kbGUKLS5SRQotCitUTFMgc2Vzc2lvbiBpbmZvIHRoYXQgY2FuIGJlIHVzZWQgZm9yIGZ1cnRoZXIgcHJvY2Vzc2luZy4gIFNlZQorXGZJQ1VSTElORk9fVExTX1NFU1NJT04oMylcZlAuIERlcHJlY2F0ZWQgb3B0aW9uLCB1c2UKK1xmSUNVUkxJTkZPX1RMU19TU0xfUFRSKDMpXGZQIGluc3RlYWQhCiAuSVAgQ1VSTElORk9fQ09ORElUSU9OX1VOTUVUCi1QYXNzIGEgcG9pbnRlciB0byBhIGxvbmcgdG8gcmVjZWl2ZSB0aGUgbnVtYmVyIDEgaWYgdGhlIGNvbmRpdGlvbiBwcm92aWRlZCBpbgotdGhlIHByZXZpb3VzIHJlcXVlc3QgZGlkbid0IG1hdGNoIChzZWUgXGZJQ1VSTE9QVF9USU1FQ09ORElUSU9OKDMpXGZQKS4gQWxhcywKLWlmIHRoaXMgcmV0dXJucyBhIDEgeW91IGtub3cgdGhhdCB0aGUgcmVhc29uIHlvdSBkaWRuJ3QgZ2V0IGRhdGEgaW4gcmV0dXJuIGlzCi1iZWNhdXNlIGl0IGRpZG4ndCBmdWxmaWxsIHRoZSBjb25kaXRpb24uIFRoZSBsb25nIHRocyBhcmd1bWVudCBwb2ludHMgdG8gd2lsbAotZ2V0IGEgemVybyBzdG9yZWQgaWYgdGhlIGNvbmRpdGlvbiBpbnN0ZWFkIHdhcyBtZXQuIChBZGRlZCBpbiA3LjE5LjQpCitXaGV0aGVyIG9yIG5vdCBhIHRpbWUgY29uZGl0aW9uYWwgd2FzIG1ldC4KK1NlZSBcZklDVVJMSU5GT19DT05ESVRJT05fVU5NRVQoMylcZlAKIC5JUCBDVVJMSU5GT19SVFNQX1NFU1NJT05fSUQKLVBhc3MgYSBwb2ludGVyIHRvIGEgY2hhciBwb2ludGVyIHRvIHJlY2VpdmUgYSBwb2ludGVyIHRvIGEgc3RyaW5nIGhvbGRpbmcgdGhlCi1tb3N0IHJlY2VudCBSVFNQIFNlc3Npb24gSUQuCi0KLUFwcGxpY2F0aW9ucyB3aXNoaW5nIHRvIHJlc3VtZSBhbiBSVFNQIHNlc3Npb24gb24gYW5vdGhlciBjb25uZWN0aW9uIHNob3VsZAotcmV0cmlldmUgdGhpcyBpbmZvIGJlZm9yZSBjbG9zaW5nIHRoZSBhY3RpdmUgY29ubmVjdGlvbi4KK1JUU1Agc2Vzc2lvbiBJRC4KK1NlZSBcZklDVVJMSU5GT19SVFNQX1NFU1NJT05fSUQoMylcZlAKIC5JUCBDVVJMSU5GT19SVFNQX0NMSUVOVF9DU0VRCi1QYXNzIGEgcG9pbnRlciB0byBhIGxvbmcgdG8gcmVjZWl2ZSB0aGUgbmV4dCBDU2VxIHRoYXQgd2lsbCBiZSB1c2VkIGJ5IHRoZQotYXBwbGljYXRpb24uCitSVFNQIENTZXEgdGhhdCB3aWxsIG5leHQgYmUgdXNlZC4KK1NlZSBcZklDVVJMSU5GT19SVFNQX0NMSUVOVF9DU0VRKDMpXGZQCiAuSVAgQ1VSTElORk9fUlRTUF9TRVJWRVJfQ1NFUQotUGFzcyBhIHBvaW50ZXIgdG8gYSBsb25nIHRvIHJlY2VpdmUgdGhlIG5leHQgc2VydmVyIENTZXEgdGhhdCB3aWxsIGJlIGV4cGVjdGVkCi1ieSB0aGUgYXBwbGljYXRpb24uCi0KLVxmSShOT1RFOiBsaXN0ZW5pbmcgZm9yIHNlcnZlciBpbml0aWF0ZWQgcmVxdWVzdHMgaXMgY3VycmVudGx5Ci11bmltcGxlbWVudGVkKS5cZlAKLQotQXBwbGljYXRpb25zIHdpc2hpbmcgdG8gcmVzdW1lIGFuIFJUU1Agc2Vzc2lvbiBvbiBhbm90aGVyIGNvbm5lY3Rpb24gc2hvdWxkCi1yZXRyaWV2ZSB0aGlzIGluZm8gYmVmb3JlIGNsb3NpbmcgdGhlIGFjdGl2ZSBjb25uZWN0aW9uLgorUlRTUCBDU2VxIHRoYXQgd2lsbCBuZXh0IGJlIGV4cGVjdGVkLgorU2VlIFxmSUNVUkxJTkZPX1JUU1BfU0VSVkVSX0NTRVEoMylcZlAKIC5JUCBDVVJMSU5GT19SVFNQX0NTRVFfUkVDVgotUGFzcyBhIHBvaW50ZXIgdG8gYSBsb25nIHRvIHJlY2VpdmUgdGhlIG1vc3QgcmVjZW50bHkgcmVjZWl2ZWQgQ1NlcSBmcm9tIHRoZQotc2VydmVyLiBJZiB5b3VyIGFwcGxpY2F0aW9uIGVuY291bnRlcnMgYSBcZklDVVJMRV9SVFNQX0NTRVFfRVJST1JcZlAgdGhlbiB5b3UKLW1heSB3aXNoIHRvIHRyb3VibGVzaG9vdCBhbmQvb3IgZml4IHRoZSBDU2VxIG1pc21hdGNoIGJ5IHBlZWtpbmcgYXQgdGhpcyB2YWx1ZS4KK1JUU1AgQ1NlcSBsYXN0IHJlY2VpdmVkLgorU2VlIFxmSUNVUkxJTkZPX1JUU1BfQ1NFUV9SRUNWKDMpXGZQCiAuU0ggVElNRVMKIC5uZgogQW4gb3ZlcnZpZXcgb2YgdGhlIHNpeCB0aW1lIHZhbHVlcyBhdmFpbGFibGUgZnJvbSBjdXJsX2Vhc3lfZ2V0aW5mbygpCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvY3VybF9lYXN5X2luaXQuMyBiL2RvY3MvbGliY3VybC9jdXJsX2Vhc3lfaW5pdC4zCmluZGV4IDRmN2YwMDQuLjM3MWEzYjggMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9jdXJsX2Vhc3lfaW5pdC4zCisrKyBiL2RvY3MvbGliY3VybC9jdXJsX2Vhc3lfaW5pdC4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9jdXJsX2Vhc3lfcGF1c2UuMyBiL2RvY3MvbGliY3VybC9jdXJsX2Vhc3lfcGF1c2UuMwppbmRleCAwZjZhZDVhLi4xMzFmYTc3IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvY3VybF9lYXN5X3BhdXNlLjMKKysrIGIvZG9jcy9saWJjdXJsL2N1cmxfZWFzeV9wYXVzZS4zCkBAIC01LDExICs1LDExIEBACiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAuXCIgKgotLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNjIsNyArNjIsNyBAQAogLklQIENVUkxQQVVTRV9BTEwKIENvbnZlbmllbmNlIGRlZmluZSB0aGF0IHBhdXNlcyBib3RoIGRpcmVjdGlvbnMuCiAuSVAgQ1VSTFBBVVNFX0NPTlQKLUNvbnZlbmllbmNlIGRlZmluZSB0aGF0IHVucGF1c2VzIGJvdGggZGlyZWN0aW9ucworQ29udmVuaWVuY2UgZGVmaW5lIHRoYXQgdW5wYXVzZXMgYm90aCBkaXJlY3Rpb25zLgogLlNIIFJFVFVSTiBWQUxVRQogQ1VSTEVfT0sgKHplcm8pIG1lYW5zIHRoYXQgdGhlIG9wdGlvbiB3YXMgc2V0IHByb3Blcmx5LCBhbmQgYSBub24temVybyByZXR1cm4KIGNvZGUgbWVhbnMgc29tZXRoaW5nIHdyb25nIG9jY3VycmVkIGFmdGVyIHRoZSBuZXcgc3RhdGUgd2FzIHNldC4gIFNlZSB0aGUKQEAgLTc5LDcgKzc5LDcgQEAKIHRoZXJlIHdhcyBubyBwYXJ0aWN1bGFyIGZvcmNlZCByZWNoZWNraW5nIG9yIHNpbWlsYXIgb2YgdGhlIHNvY2tldCdzIHN0YXRlLAogd2hpY2ggbWFkZSB0aGUgY29udGludWF0aW9uIG9mIHRoZSB0cmFuc2ZlciBnZXQgZGVsYXllZCB1bnRpbCBuZXh0CiBtdWx0aS1zb2NrZXQgY2FsbCBpbnZva2Ugb3IgZXZlbiBsb25nZXIuIEFsdGVybmF0aXZlbHksIHRoZSB1c2VyIGNvdWxkCi1mb3JjaWJseSBjYWxsIGZvciBleGFtcGxlIGN1cmxfbXVsdGlfc29ja2V0X2FsbCgzKSAtIHdpdGggYSByYXRoZXIgaGVmdHkKK2ZvcmNpYmx5IGNhbGwgZm9yIGV4YW1wbGUgXGZJY3VybF9tdWx0aV9zb2NrZXRfYWxsKDMpXGZQIC0gd2l0aCBhIHJhdGhlciBoZWZ0eQogcGVyZm9ybWFuY2UgcGVuYWx0eS4KIAogU3RhcnRpbmcgaW4gbGliY3VybCA3LjMyLjAsIHVucGF1c2luZyBhIHRyYW5zZmVyIHdpbGwgc2NoZWR1bGUgYSB0aW1lb3V0CmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvY3VybF9lYXN5X3BlcmZvcm0uMyBiL2RvY3MvbGliY3VybC9jdXJsX2Vhc3lfcGVyZm9ybS4zCmluZGV4IGZjOGM1OWUuLjQ4YzFmMzEgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9jdXJsX2Vhc3lfcGVyZm9ybS4zCisrKyBiL2RvY3MvbGliY3VybC9jdXJsX2Vhc3lfcGVyZm9ybS4zCkBAIC01LDExICs1LDExIEBACiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAuXCIgKgotLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNTUsNyArNTUsNyBAQAogLlNIIFJFVFVSTiBWQUxVRQogQ1VSTEVfT0sgKDApIG1lYW5zIGV2ZXJ5dGhpbmcgd2FzIG9rLCBub24temVybyBtZWFucyBhbiBlcnJvciBvY2N1cnJlZCBhcwogLkkgPGN1cmwvY3VybC5oPgotZGVmaW5lcyAtIHNlZSBcZklsaWJjdXJsLWVycm9ycygzKVxmUC4gSWYgdGhlIFxmQkNVUkxPUFRfRVJST1JCVUZGRVIoMylcZlAgd2FzCitkZWZpbmVzIC0gc2VlIFxmSWxpYmN1cmwtZXJyb3JzKDMpXGZQLiBJZiB0aGUgXGZJQ1VSTE9QVF9FUlJPUkJVRkZFUigzKVxmUCB3YXMKIHNldCB3aXRoIFxmSWN1cmxfZWFzeV9zZXRvcHQoMylcZlAgdGhlcmUgd2lsbCBiZSBhIHJlYWRhYmxlIGVycm9yIG1lc3NhZ2UgaW4KIHRoZSBlcnJvciBidWZmZXIgd2hlbiBub24temVybyBpcyByZXR1cm5lZC4KIC5TSCBFWEFNUExFCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvY3VybF9lYXN5X3JlY3YuMyBiL2RvY3MvbGliY3VybC9jdXJsX2Vhc3lfcmVjdi4zCmluZGV4IDlkZTYzNjQuLjM1NjBjYzUgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9jdXJsX2Vhc3lfcmVjdi4zCisrKyBiL2RvY3MvbGliY3VybC9jdXJsX2Vhc3lfcmVjdi4zCkBAIC01LDExICs1LDExIEBACiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAuXCIgKgotLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNDEsMTUgKzQxLDE1IEBACiBidWZmZXIuIFRoZSB2YXJpYWJsZSBcZkJuXGZQIHBvaW50cyB0byB3aWxsIHJlY2VpdmUgdGhlIG51bWJlciBvZiByZWNlaXZlZAogYnl0ZXMuCiAKLVRvIGVzdGFibGlzaCB0aGUgY29ubmVjdGlvbiwgc2V0IFxmQkNVUkxPUFRfQ09OTkVDVF9PTkxZKDMpXGZQIG9wdGlvbiBiZWZvcmUKLWNhbGxpbmcgXGZJY3VybF9lYXN5X3BlcmZvcm0oMylcZlAgb3IgXGNJY3VybF9tdWx0aV9wZXJmb3JtKDMpXGZQLiBOb3RlIHRoYXQKK1RvIGVzdGFibGlzaCB0aGUgY29ubmVjdGlvbiwgc2V0IFxmSUNVUkxPUFRfQ09OTkVDVF9PTkxZKDMpXGZQIG9wdGlvbiBiZWZvcmUKK2NhbGxpbmcgXGZJY3VybF9lYXN5X3BlcmZvcm0oMylcZlAgb3IgXGZJY3VybF9tdWx0aV9wZXJmb3JtKDMpXGZQLiBOb3RlIHRoYXQKIFxmSWN1cmxfZWFzeV9yZWN2KDMpXGZQIGRvZXMgbm90IHdvcmsgb24gY29ubmVjdGlvbnMgdGhhdCB3ZXJlIGNyZWF0ZWQgd2l0aG91dAogdGhpcyBvcHRpb24uCiAKIFlvdSBtdXN0IGVuc3VyZSB0aGF0IHRoZSBzb2NrZXQgaGFzIGRhdGEgdG8gcmVhZCBiZWZvcmUgY2FsbGluZwogXGZJY3VybF9lYXN5X3JlY3YoMylcZlAsIG90aGVyd2lzZSB0aGUgY2FsbCB3aWxsIHJldHVybiBcZkJDVVJMRV9BR0FJTlxmUCAtCiB0aGUgc29ja2V0IGlzIHVzZWQgaW4gbm9uLWJsb2NraW5nIG1vZGUgaW50ZXJuYWxseS4gVXNlCi1cZkljdXJsX2Vhc3lfZ2V0aW5mbygzKVxmUCB3aXRoIFxmQkNVUkxJTkZPX0xBU1RTT0NLRVRcZlAgdG8gb2J0YWluIHRoZQorXGZJY3VybF9lYXN5X2dldGluZm8oMylcZlAgd2l0aCBcZklDVVJMSU5GT19BQ1RJVkVTT0NLRVQoMylcZlAgdG8gb2J0YWluIHRoZQogc29ja2V0OyB1c2UgeW91ciBvcGVyYXRpbmcgc3lzdGVtIGZhY2lsaXRpZXMgbGlrZSBcZklzZWxlY3QoMilcZlAgdG8gY2hlY2sgaWYKIGl0IGhhcyBhbnkgZGF0YSB5b3UgY2FuIHJlYWQuCiAuU0ggQVZBSUxBQklMSVRZCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvY3VybF9lYXN5X3Jlc2V0LjMgYi9kb2NzL2xpYmN1cmwvY3VybF9lYXN5X3Jlc2V0LjMKaW5kZXggY2I2OWJkZC4uMGJhZmI2NCAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL2N1cmxfZWFzeV9yZXNldC4zCisrKyBiL2RvY3MvbGliY3VybC9jdXJsX2Vhc3lfcmVzZXQuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvY3VybF9lYXN5X3NlbmQuMyBiL2RvY3MvbGliY3VybC9jdXJsX2Vhc3lfc2VuZC4zCmluZGV4IDZmNWE2ZWEuLjJhNzQ0MzkgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9jdXJsX2Vhc3lfc2VuZC4zCisrKyBiL2RvY3MvbGliY3VybC9jdXJsX2Vhc3lfc2VuZC4zCkBAIC01LDExICs1LDExIEBACiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAuXCIgKgotLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzksNyArMzksNyBAQAogXGZCYnVmZmVyXGZQIGlzIGEgcG9pbnRlciB0byB0aGUgZGF0YSBvZiBsZW5ndGggXGZCYnVmbGVuXGZQIHRoYXQgeW91IHdhbnQgc2VudC4KIFRoZSB2YXJpYWJsZSBcZkJuXGZQIHBvaW50cyB0byB3aWxsIHJlY2VpdmUgdGhlIG51bWJlciBvZiBzZW50IGJ5dGVzLgogCi1UbyBlc3RhYmxpc2ggdGhlIGNvbm5lY3Rpb24sIHNldCBcZkJDVVJMT1BUX0NPTk5FQ1RfT05MWSgzKVxmUCBvcHRpb24gYmVmb3JlCitUbyBlc3RhYmxpc2ggdGhlIGNvbm5lY3Rpb24sIHNldCBcZklDVVJMT1BUX0NPTk5FQ1RfT05MWSgzKVxmUCBvcHRpb24gYmVmb3JlCiBjYWxsaW5nIFxmSWN1cmxfZWFzeV9wZXJmb3JtKDMpXGZQIG9yIFxmSWN1cmxfbXVsdGlfcGVyZm9ybSgpXGZQLiBOb3RlIHRoYXQKIFxmSWN1cmxfZWFzeV9zZW5kKDMpXGZQIHdpbGwgbm90IHdvcmsgb24gY29ubmVjdGlvbnMgdGhhdCB3ZXJlIGNyZWF0ZWQgd2l0aG91dAogdGhpcyBvcHRpb24uCkBAIC00Nyw3ICs0Nyw3IEBACiBZb3UgbXVzdCBlbnN1cmUgdGhhdCB0aGUgc29ja2V0IGlzIHdyaXRhYmxlIGJlZm9yZSBjYWxsaW5nCiBcZkljdXJsX2Vhc3lfc2VuZCgzKVxmUCwgb3RoZXJ3aXNlIHRoZSBjYWxsIHdpbGwgcmV0dXJuIFxmQkNVUkxFX0FHQUlOXGZQIC0KIHRoZSBzb2NrZXQgaXMgdXNlZCBpbiBub24tYmxvY2tpbmcgbW9kZSBpbnRlcm5hbGx5LiBVc2UKLVxmSWN1cmxfZWFzeV9nZXRpbmZvKDMpXGZQIHdpdGggXGZCQ1VSTElORk9fTEFTVFNPQ0tFVFxmUCB0byBvYnRhaW4gdGhlCitcZkljdXJsX2Vhc3lfZ2V0aW5mbygzKVxmUCB3aXRoIFxmSUNVUkxJTkZPX0FDVElWRVNPQ0tFVCgzKVxmUCB0byBvYnRhaW4gdGhlCiBzb2NrZXQ7IHVzZSB5b3VyIG9wZXJhdGluZyBzeXN0ZW0gZmFjaWxpdGllcyBsaWtlIFxmSXNlbGVjdCgyKVxmUCB0byBjaGVjayBpZgogaXQgY2FuIGJlIHdyaXR0ZW4gdG8uCiAuU0ggQVZBSUxBQklMSVRZCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvY3VybF9lYXN5X3NldG9wdC4zIGIvZG9jcy9saWJjdXJsL2N1cmxfZWFzeV9zZXRvcHQuMwppbmRleCA0ZTViOGRlLi43NWYxY2U0IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvY3VybF9lYXN5X3NldG9wdC4zCisrKyBiL2RvY3MvbGliY3VybC9jdXJsX2Vhc3lfc2V0b3B0LjMKQEAgLTUsMTEgKzUsMTEgQEAKIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKIC5cIiAqCi0uXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC01MCw2ICs1MCw4IEBACiBcZklDVVJMT1BUX0NPUFlQT1NURklFTERTKDMpXGZQIGhhcyBzb21lIHVzYWdlIGNoYXJhY3RlcmlzdGljcyB5b3UgbmVlZCB0bwogcmVhZCB1cCBvbi4KIAorVGhlIG9yZGVyIGluIHdoaWNoIHRoZSBvcHRpb25zIGFyZSBzZXQgZG9lcyBub3QgbWF0dGVyLgorCiBCZWZvcmUgdmVyc2lvbiA3LjE3LjAsIHN0cmluZ3Mgd2VyZSBub3QgY29waWVkLiBJbnN0ZWFkIHRoZSB1c2VyIHdhcyBmb3JjZWQKIGtlZXAgdGhlbSBhdmFpbGFibGUgdW50aWwgbGliY3VybCBubyBsb25nZXIgbmVlZGVkIHRoZW0uCiAKQEAgLTE1MSw2ICsxNTMsOCBAQAogQWxsb3dlZCBwcm90b2NvbHMuIFNlZSBcZklDVVJMT1BUX1BST1RPQ09MUygzKVxmUAogLklQIENVUkxPUFRfUkVESVJfUFJPVE9DT0xTCiBQcm90b2NvbHMgdG8gYWxsb3cgcmVkaXJlY3RzIHRvLiBTZWUgXGZJQ1VSTE9QVF9SRURJUl9QUk9UT0NPTFMoMylcZlAKKy5JUCBDVVJMT1BUX0RFRkFVTFRfUFJPVE9DT0wKK0RlZmF1bHQgcHJvdG9jb2wuIFNlZSBcZklDVVJMT1BUX0RFRkFVTFRfUFJPVE9DT0woMylcZlAKIC5JUCBDVVJMT1BUX1BST1hZCiBQcm94eSB0byB1c2UuIFNlZSBcZklDVVJMT1BUX1BST1hZKDMpXGZQCiAuSVAgQ1VSTE9QVF9QUk9YWVBPUlQKQEAgLTE2MSwxNCArMTY1LDE2IEBACiBGaWx0ZXIgb3V0IGhvc3RzIGZyb20gcHJveHkgdXNlLiBcZklDVVJMT1BUX05PUFJPWFkoMylcZlAKIC5JUCBDVVJMT1BUX0hUVFBQUk9YWVRVTk5FTAogVHVubmVsIHRocm91Z2ggdGhlIEhUVFAgcHJveHkuIFxmSUNVUkxPUFRfSFRUUFBST1hZVFVOTkVMKDMpXGZQCisuSVAgQ1VSTE9QVF9DT05ORUNUX1RPCitDb25uZWN0IHRvIGEgc3BlY2lmaWMgaG9zdCBhbmQgcG9ydC4gU2VlIFxmSUNVUkxPUFRfQ09OTkVDVF9UTygzKVxmUAogLklQIENVUkxPUFRfU09DS1M1X0dTU0FQSV9TRVJWSUNFCiBTb2NrczUgR1NTQVBJIHNlcnZpY2UgbmFtZS4gXGZJQ1VSTE9QVF9TT0NLUzVfR1NTQVBJX1NFUlZJQ0UoMylcZlAKIC5JUCBDVVJMT1BUX1NPQ0tTNV9HU1NBUElfTkVDCiBTb2NrczUgR1NTQVBJIE5FQyBtb2RlLiBTZWUgXGZJQ1VSTE9QVF9TT0NLUzVfR1NTQVBJX05FQygzKVxmUAogLklQIENVUkxPUFRfUFJPWFlfU0VSVklDRV9OQU1FCi1Qcm94eSBzZXJ2aWNlIG5hbWUuIFxmSUNVUkxPUFRfUFJPWFlfU0VSVklDRV9OQU1FKDMpXGZQCitQcm94eSBhdXRoZW50aWNhdGlvbiBzZXJ2aWNlIG5hbWUuIFxmSUNVUkxPUFRfUFJPWFlfU0VSVklDRV9OQU1FKDMpXGZQCiAuSVAgQ1VSTE9QVF9TRVJWSUNFX05BTUUKLVNQTkVHTyBzZXJ2aWNlIG5hbWUuIFxmSUNVUkxPUFRfU0VSVklDRV9OQU1FKDMpXGZQCitBdXRoZW50aWNhdGlvbiBzZXJ2aWNlIG5hbWUuIFxmSUNVUkxPUFRfU0VSVklDRV9OQU1FKDMpXGZQCiAuSVAgQ1VSTE9QVF9JTlRFUkZBQ0UKIEJpbmQgY29ubmVjdGlvbiBsb2NhbGx5IHRvIHRoaXMuIFNlZSBcZklDVVJMT1BUX0lOVEVSRkFDRSgzKVxmUAogLklQIENVUkxPUFRfTE9DQUxQT1JUCkBAIC0xODMsNiArMTg5LDggQEAKIEFzayBmb3Igc21hbGxlciBidWZmZXIgc2l6ZS4gU2VlIFxmSUNVUkxPUFRfQlVGRkVSU0laRSgzKVxmUAogLklQIENVUkxPUFRfUE9SVAogUG9ydCBudW1iZXIgdG8gY29ubmVjdCB0by4gU2VlIFxmSUNVUkxPUFRfUE9SVCgzKVxmUAorLklQIENVUkxPUFRfVENQX0ZBU1RPUEVOCitFbmFibGUgVEZPLCBUQ1AgRmFzdCBPcGVuLiBTZWUgXGZJQ1VSTE9QVF9UQ1BfRkFTVE9QRU4oMylcZlAKIC5JUCBDVVJMT1BUX1RDUF9OT0RFTEFZCiBEaXNhYmxlIHRoZSBOYWdsZSBhbGdvcml0aG0uIFNlZSBcZklDVVJMT1BUX1RDUF9OT0RFTEFZKDMpXGZQCiAuSVAgQ1VSTE9QVF9BRERSRVNTX1NDT1BFCkBAIC0yOTEsNiArMjk5LDE1IEBACiBEaXNhYmxlIFRyYW5zZmVyIGRlY29kaW5nLiBTZWUgXGZJQ1VSTE9QVF9IVFRQX1RSQU5TRkVSX0RFQ09ESU5HKDMpXGZQCiAuSVAgQ1VSTE9QVF9FWFBFQ1RfMTAwX1RJTUVPVVRfTVMKIDEwMC1jb250aW51ZSB0aW1lb3V0LiBTZWUgXGZJQ1VSTE9QVF9FWFBFQ1RfMTAwX1RJTUVPVVRfTVMoMylcZlAKKy5JUCBDVVJMT1BUX1BJUEVXQUlUCitXYWl0IG9uIGNvbm5lY3Rpb24gdG8gcGlwZWxpbmUgb24gaXQuIFNlZSBcZklDVVJMT1BUX1BJUEVXQUlUKDMpXGZQCisuSVAgQ1VSTE9QVF9TVFJFQU1fREVQRU5EUworVGhpcyBIVFRQLzIgc3RyZWFtIGRlcGVuZHMgb24gYW5vdGhlci4gU2VlIFxmSUNVUkxPUFRfU1RSRUFNX0RFUEVORFMoMylcZlAKKy5JUCBDVVJMT1BUX1NUUkVBTV9ERVBFTkRTX0UKK1RoaXMgSFRUUC8yIHN0cmVhbSBkZXBlbmRzIG9uIGFub3RoZXIgZXhjbHVzaXZlbHkuIFNlZQorXGZJQ1VSTE9QVF9TVFJFQU1fREVQRU5EU19FKDMpXGZQCisuSVAgQ1VSTE9QVF9TVFJFQU1fV0VJR0hUCitTZXQgdGhpcyBIVFRQLzIgc3RyZWFtJ3Mgd2VpZ2h0LiBTZWUgXGZJQ1VSTE9QVF9TVFJFQU1fV0VJR0hUKDMpXGZQCiAuU0ggU01UUCBPUFRJT05TCiAuSVAgQ1VSTE9QVF9NQUlMX0ZST00KIEFkZHJlc3Mgb2YgdGhlIHNlbmRlci4gU2VlIFxmSUNVUkxPUFRfTUFJTF9GUk9NKDMpXGZQCkBAIC0zMDEsNiArMzE4LDggQEAKIC5TSCBURlRQIE9QVElPTlMKIC5JUCBDVVJMT1BUX1RGVFBfQkxLU0laRQogVEZUUCBibG9jayBzaXplLiBTZWUgXGZJQ1VSTE9QVF9URlRQX0JMS1NJWkUoMylcZlAKKy5JUCBDVVJMT1BUX1RGVFBfTk9fT1BUSU9OUworRG8gbm90IHNlbmQgVEZUUCBvcHRpb25zIHJlcXVlc3RzLiBTZWUgXGZJQ1VSTE9QVF9URlRQX05PX09QVElPTlMoMylcZlAKIC5TSCBGVFAgT1BUSU9OUwogLklQIENVUkxPUFRfRlRQUE9SVAogVXNlIGFjdGl2ZSBGVFAuIFNlZSBcZklDVVJMT1BUX0ZUUFBPUlQoMylcZlAKQEAgLTUyMyw4ICs1NDIsOCBAQAogICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfVVJMLCAiaHR0cDovL2V4YW1wbGUuY29tIik7CiAgIHJlcyA9IGN1cmxfZWFzeV9wZXJmb3JtKGN1cmwpOwogICBjdXJsX2Vhc3lfY2xlYW51cChjdXJsKTsKLX19Cit9CiAuZmkKIC5TSCAiU0VFIEFMU08iCiAuQlIgY3VybF9lYXN5X2luaXQgIigzKSwgIiBjdXJsX2Vhc3lfY2xlYW51cCAiKDMpLCAiIGN1cmxfZWFzeV9yZXNldCAiKDMpLCAiCi0uQlIgY3VybF9tdWx0aV9zZXRvcHQgIigzKSwgIgorLkJSIGN1cmxfZWFzeV9nZXRpbmZvICIoMyksICIgY3VybF9tdWx0aV9zZXRvcHQgIigzKSwgIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL2N1cmxfZWFzeV9zdHJlcnJvci4zIGIvZG9jcy9saWJjdXJsL2N1cmxfZWFzeV9zdHJlcnJvci4zCmluZGV4IDU1N2Q0NjcuLmFjOTQxMjIgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9jdXJsX2Vhc3lfc3RyZXJyb3IuMworKysgYi9kb2NzL2xpYmN1cmwvY3VybF9lYXN5X3N0cmVycm9yLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL2N1cmxfZWFzeV91bmVzY2FwZS4zIGIvZG9jcy9saWJjdXJsL2N1cmxfZWFzeV91bmVzY2FwZS4zCmluZGV4IDIzY2U5YzMuLjA2ZmQ2ZmMgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9jdXJsX2Vhc3lfdW5lc2NhcGUuMworKysgYi9kb2NzL2xpYmN1cmwvY3VybF9lYXN5X3VuZXNjYXBlLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjYsOCArMjYsOCBAQAogLlNIIFNZTk9QU0lTCiAuQiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAuc3AKLS5CSSAiY2hhciAqY3VybF9lYXN5X3VuZXNjYXBlKCBDVVJMICoiIGN1cmwgIiwgY2hhciAqIiB1cmwgIiwgaW50ICJpbmxlbmd0aAotLkJJICIsIGludCAqIiBvdXRsZW5ndGggIiApOyIKKy5CSSAiY2hhciAqY3VybF9lYXN5X3VuZXNjYXBlKCBDVVJMICoiIGN1cmwgIiwgY29uc3QgY2hhciAqIiB1cmwKKy5CSSAiLCBpbnQgImlubGVuZ3RoICIsIGludCAqIiBvdXRsZW5ndGggIiApOyIKIC5hZAogLlNIIERFU0NSSVBUSU9OCiBUaGlzIGZ1bmN0aW9uIGNvbnZlcnRzIHRoZSBnaXZlbiBVUkwgZW5jb2RlZCBpbnB1dCBzdHJpbmcgdG8gYSAicGxhaW4gc3RyaW5nIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL2N1cmxfZXNjYXBlLjMgYi9kb2NzL2xpYmN1cmwvY3VybF9lc2NhcGUuMwppbmRleCA3NWZkNTFmLi4wM2YwMmQzIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvY3VybF9lc2NhcGUuMworKysgYi9kb2NzL2xpYmN1cmwvY3VybF9lc2NhcGUuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yNSw3ICsyNSw3IEBACiAuU0ggU1lOT1BTSVMKIC5CICNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KIC5zcAotLkJJICJjaGFyICpjdXJsX2VzY2FwZSggY2hhciAqIiB1cmwgIiwgaW50ICJsZW5ndGggIiApOyIKKy5CSSAiY2hhciAqY3VybF9lc2NhcGUoIGNvbnN0IGNoYXIgKiIgdXJsICIsIGludCAibGVuZ3RoICIgKTsiCiAuYWQKIC5TSCBERVNDUklQVElPTgogT2Jzb2xldGUgZnVuY3Rpb24uIFVzZSBcZkljdXJsX2Vhc3lfZXNjYXBlKDMpXGZQIGluc3RlYWQhCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvY3VybF9mb3JtYWRkLjMgYi9kb2NzL2xpYmN1cmwvY3VybF9mb3JtYWRkLjMKaW5kZXggM2U0ODE0OS4uNjkyMzkxMyAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL2N1cmxfZm9ybWFkZC4zCisrKyBiL2RvY3MvbGliY3VybC9jdXJsX2Zvcm1hZGQuMwpAQCAtNSwxMSArNSwxMSBAQAogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogLlwiICoKLS5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTMyLDcgKzMyLDcgQEAKIGN1cmxfZm9ybWFkZCgpIGlzIHVzZWQgdG8gYXBwZW5kIHNlY3Rpb25zIHdoZW4gYnVpbGRpbmcgYSBtdWx0aXBhcnQvZm9ybWRhdGEKIEhUVFAgUE9TVCAoc29tZXRpbWVzIHJlZmVycmVkIHRvIGFzIFJGQzIzODgtc3R5bGUgcG9zdHMpLiBBcHBlbmQgb25lIHNlY3Rpb24KIGF0IGEgdGltZSB1bnRpbCB5b3UndmUgYWRkZWQgYWxsIHRoZSBzZWN0aW9ucyB5b3Ugd2FudCBpbmNsdWRlZCBhbmQgdGhlbiB5b3UKLXBhc3MgdGhlIFxmSWZpcnN0aXRlbVxmUCBwb2ludGVyIGFzIHBhcmFtZXRlciB0byBcZkJDVVJMT1BUX0hUVFBQT1NUKDMpXGZQLgorcGFzcyB0aGUgXGZJZmlyc3RpdGVtXGZQIHBvaW50ZXIgYXMgcGFyYW1ldGVyIHRvIFxmSUNVUkxPUFRfSFRUUFBPU1QoMylcZlAuCiBcZklsYXN0aXRlbVxmUCBpcyBzZXQgYWZ0ZXIgZWFjaCBcZkljdXJsX2Zvcm1hZGQoMylcZlAgY2FsbCBhbmQgb24gcmVwZWF0ZWQKIGludm9rZXMgaXQgc2hvdWxkIGJlIGxlZnQgYXMgc2V0IHRvIGFsbG93IHJlcGVhdGVkIGludm9rZXMgdG8gZmluZCB0aGUgZW5kIG9mCiB0aGUgbGlzdCBmYXN0ZXIuCkBAIC04Myw3ICs4MywxOCBAQAogYXBwbGljYXRpb24sIHNvIHlvdSBtdXN0IG1ha2Ugc3VyZSBpdCByZW1haW5zIHVudGlsIGN1cmwgbm8gbG9uZ2VyIG5lZWRzIGl0LgogSWYgdGhlIGRhdGEgaXNuJ3QgTlVMLXRlcm1pbmF0ZWQsIG9yIGlmIHlvdSdkIGxpa2UgaXQgdG8gY29udGFpbiB6ZXJvIGJ5dGVzLAogeW91IG11c3Qgc2V0IGl0cyBsZW5ndGggIHdpdGggXGZCQ1VSTEZPUk1fQ09OVEVOVFNMRU5HVEhcZlAuCisuSVAgQ1VSTEZPUk1fQ09OVEVOVExFTgorZm9sbG93ZWQgYnkgYSBjdXJsX29mZl90IHZhbHVlIGdpdmluZyB0aGUgbGVuZ3RoIG9mIHRoZSBjb250ZW50cy4gTm90ZSB0aGF0Citmb3IgXGZJQ1VSTEZPUk1fU1RSRUFNXGZQIGNvbnRlbnRzLCB0aGlzIG9wdGlvbiBpcyBtYW5kYXRvcnkuCisKK0lmIHlvdSBwYXNzIGEgMCAoemVybykgZm9yIHRoaXMgb3B0aW9uLCBsaWJjdXJsIHdpbGwgaW5zdGVhZCBkbyBhIHN0cmxlbigpIG9uCit0aGUgY29udGVudHMgdG8gZmlndXJlIG91dCB0aGUgc2l6ZS4gSWYgeW91IHJlYWxseSB3YW50IHRvIHNlbmQgYSB6ZXJvIGJ5dGUKK2NvbnRlbnQgdGhlbiB5b3UgbXVzdCBtYWtlIHN1cmUgc3RybGVuKCkgb24gdGhlIGRhdGEgcG9pbnRlciByZXR1cm5zIHplcm8uCisKKyhPcHRpb24gYWRkZWQgaW4gNy40Ni4wKQogLklQIENVUkxGT1JNX0NPTlRFTlRTTEVOR1RICisoVGhpcyBvcHRpb24gaXMgZGVwcmVjYXRlZC4gVXNlIFxmSUNVUkxGT1JNX0NPTlRFTlRMRU5cZlAgaW5zdGVhZCEpCisKIGZvbGxvd2VkIGJ5IGEgbG9uZyBnaXZpbmcgdGhlIGxlbmd0aCBvZiB0aGUgY29udGVudHMuIE5vdGUgdGhhdCBmb3IKIFxmSUNVUkxGT1JNX1NUUkVBTVxmUCBjb250ZW50cywgdGhpcyBvcHRpb24gaXMgbWFuZGF0b3J5LgogCkBAIC0xMDMsNiArMTE0LDkgQEAKIHByb3ZpZGluZyBtdWx0aXBsZSBcZkJDVVJMRk9STV9GSUxFXGZQIGFyZ3VtZW50cyBlYWNoIGZvbGxvd2VkIGJ5IHRoZSBmaWxlbmFtZQogKGFuZCBlYWNoIFxmSUNVUkxGT1JNX0ZJTEVcZlAgaXMgYWxsb3dlZCB0byBoYXZlIGEKIFxmSUNVUkxGT1JNX0NPTlRFTlRUWVBFXGZQKS4KKworVGhlIGdpdmVuIHVwbG9hZCBmaWxlIGhhcyB0byBleGlzdCBpbiBpdHMgZnVsbCBpbiB0aGUgZmlsZSBzeXN0ZW0gYWxyZWFkeSB3aGVuCit0aGUgdXBsb2FkIHN0YXJ0cywgYXMgbGliY3VybCBuZWVkcyB0byByZWFkIHRoZSBjb3JyZWN0IGZpbGUgc2l6ZSBiZWZvcmVoYW5kLgogLklQIENVUkxGT1JNX0NPTlRFTlRUWVBFCiBpcyB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggXGZJQ1VSTEZPUk1fRklMRVxmUC4gRm9sbG93ZWQgYnkgYSBwb2ludGVyIHRvIGEKIHN0cmluZyB3aGljaCBwcm92aWRlcyB0aGUgY29udGVudC10eXBlIGZvciB0aGlzIHBhcnQsIHBvc3NpYmx5IGluc3RlYWQgb2YgYW4KZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9jdXJsX2Zvcm1mcmVlLjMgYi9kb2NzL2xpYmN1cmwvY3VybF9mb3JtZnJlZS4zCmluZGV4IGZkMTk0OTEuLmEyNTM2Y2QgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9jdXJsX2Zvcm1mcmVlLjMKKysrIGIvZG9jcy9saWJjdXJsL2N1cmxfZm9ybWZyZWUuMwpAQCAtNSwxMSArNSwxMSBAQAogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogLlwiICoKLS5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTMzLDcgKzMzLDcgQEAKIHR5cGljYWxseSBtZWFucyBhZnRlciBcZkljdXJsX2Vhc3lfcGVyZm9ybSgzKVxmUCBoYXMgYmVlbiBjYWxsZWQuCiAKIFRoZSBwb2ludGVyIHRvIGZyZWUgaXMgdGhlIHNhbWUgcG9pbnRlciB5b3UgcGFzc2VkIHRvIHRoZQotXGZCQ1VSTE9QVF9IVFRQUE9TVCgzKVxmUCBvcHRpb24sIHdoaWNoIGlzIHRoZSBcZklmaXJzdGl0ZW1cZlAgcG9pbnRlciBmcm9tCitcZklDVVJMT1BUX0hUVFBQT1NUKDMpXGZQIG9wdGlvbiwgd2hpY2ggaXMgdGhlIFxmSWZpcnN0aXRlbVxmUCBwb2ludGVyIGZyb20KIHRoZSBcZkljdXJsX2Zvcm1hZGQoMylcZlAgaW52b2tlKHMpLgogCiBcZkJmb3JtXGZQIGlzIHRoZSBwb2ludGVyIGFzIHJldHVybmVkIGZyb20gYSBwcmV2aW91cyBjYWxsIHRvCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvY3VybF9mb3JtZ2V0LjMgYi9kb2NzL2xpYmN1cmwvY3VybF9mb3JtZ2V0LjMKaW5kZXggYjUyNjIyMS4uNjM1YzQ4NyAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL2N1cmxfZm9ybWdldC4zCisrKyBiL2RvY3MvbGliY3VybC9jdXJsX2Zvcm1nZXQuMwpAQCAtNSwxMSArNSwxMSBAQAogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogLlwiICoKLS5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTEsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTI2LDcgKzI2LDcgQEAKIC5uZgogLkIgI2luY2x1ZGUgPGN1cmwvY3VybC5oPgogCi12b2lkIGN1cmxfZm9ybWdldChzdHJ1Y3QgY3VybF9odHRwcG9zdCAqIGZvcm0sIHZvaWQgKnVzZXJwLAoraW50IGN1cmxfZm9ybWdldChzdHJ1Y3QgY3VybF9odHRwcG9zdCAqIGZvcm0sIHZvaWQgKnVzZXJwLAogICAgICAgICAgICAgICAgICAgY3VybF9mb3JtZ2V0X2NhbGxiYWNrIGFwcGVuZCApOwogLlNIIERFU0NSSVBUSU9OCiBjdXJsX2Zvcm1nZXQoKSBpcyB1c2VkIHRvIHNlcmlhbGl6ZSBkYXRhIHByZXZpb3VzbHkgYnVpbHQvYXBwZW5kZWQgd2l0aApkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL2N1cmxfZnJlZS4zIGIvZG9jcy9saWJjdXJsL2N1cmxfZnJlZS4zCmluZGV4IDllNTU3MGYuLjViYmY3NDUgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9jdXJsX2ZyZWUuMworKysgYi9kb2NzL2xpYmN1cmwvY3VybF9mcmVlLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL2N1cmxfZ2V0ZGF0ZS4zIGIvZG9jcy9saWJjdXJsL2N1cmxfZ2V0ZGF0ZS4zCmluZGV4IDJlN2Q3YWEuLmQwOTk4MGQgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9jdXJsX2dldGRhdGUuMworKysgYi9kb2NzL2xpYmN1cmwvY3VybF9nZXRkYXRlLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL2N1cmxfZ2V0ZW52LjMgYi9kb2NzL2xpYmN1cmwvY3VybF9nZXRlbnYuMwppbmRleCAzMzU1NDQ3Li5jNmJlZTk4IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvY3VybF9nZXRlbnYuMworKysgYi9kb2NzL2xpYmN1cmwvY3VybF9nZXRlbnYuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvY3VybF9nbG9iYWxfY2xlYW51cC4zIGIvZG9jcy9saWJjdXJsL2N1cmxfZ2xvYmFsX2NsZWFudXAuMwppbmRleCA4M2E1NGU0Li4yZTNmZjAzIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvY3VybF9nbG9iYWxfY2xlYW51cC4zCisrKyBiL2RvY3MvbGliY3VybC9jdXJsX2dsb2JhbF9jbGVhbnVwLjMKQEAgLTUsMTEgKzUsMTEgQEAKIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKIC5cIiAqCi0uXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDExLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yOCw3ICsyOCw3IEBACiAuQkkgInZvaWQgY3VybF9nbG9iYWxfY2xlYW51cCh2b2lkKTsiCiAuYWQKIC5TSCBERVNDUklQVElPTgotVGhpcyBmdW5jdGlvbiByZWxlYXNlcyByZXNvdXJjZXMgYWNxdWlyZWQgYnkgXGZCY3VybF9nbG9iYWxfaW5pdCgzKVxmUC4KK1RoaXMgZnVuY3Rpb24gcmVsZWFzZXMgcmVzb3VyY2VzIGFjcXVpcmVkIGJ5IFxmSWN1cmxfZ2xvYmFsX2luaXQoMylcZlAuCiAKIFlvdSBzaG91bGQgY2FsbCBcZkljdXJsX2dsb2JhbF9jbGVhbnVwKDMpXGZQIG9uY2UgZm9yIGVhY2ggY2FsbCB5b3UgbWFrZSB0bwogXGZJY3VybF9nbG9iYWxfaW5pdCgzKVxmUCwgYWZ0ZXIgeW91IGFyZSBkb25lIHVzaW5nIGxpYmN1cmwuCkBAIC0zNiwxMSArMzYsMTEgQEAKIFxmQlRoaXMgZnVuY3Rpb24gaXMgbm90IHRocmVhZCBzYWZlLlxmUCBZb3UgbXVzdCBub3QgY2FsbCBpdCB3aGVuIGFueSBvdGhlcgogdGhyZWFkIGluIHRoZSBwcm9ncmFtIChpLmUuIGEgdGhyZWFkIHNoYXJpbmcgdGhlIHNhbWUgbWVtb3J5KSBpcyBydW5uaW5nLgogVGhpcyBkb2Vzbid0IGp1c3QgbWVhbiBubyBvdGhlciB0aHJlYWQgdGhhdCBpcyB1c2luZyBsaWJjdXJsLiAgQmVjYXVzZQotXGZCY3VybF9nbG9iYWxfY2xlYW51cCgzKVxmUCBjYWxscyBmdW5jdGlvbnMgb2Ygb3RoZXIgbGlicmFyaWVzIHRoYXQgYXJlCitcZkljdXJsX2dsb2JhbF9jbGVhbnVwKDMpXGZQIGNhbGxzIGZ1bmN0aW9ucyBvZiBvdGhlciBsaWJyYXJpZXMgdGhhdCBhcmUKIHNpbWlsYXJseSB0aHJlYWQgdW5zYWZlLCBpdCBjb3VsZCBjb25mbGljdCB3aXRoIGFueSBvdGhlciB0aHJlYWQgdGhhdCB1c2VzCiB0aGVzZSBvdGhlciBsaWJyYXJpZXMuCiAKLVNlZSB0aGUgZGVzY3JpcHRpb24gaW4gXGZCbGliY3VybCgzKVxmUCBvZiBnbG9iYWwgZW52aXJvbm1lbnQgcmVxdWlyZW1lbnRzIGZvcgorU2VlIHRoZSBkZXNjcmlwdGlvbiBpbiBcZklsaWJjdXJsKDMpXGZQIG9mIGdsb2JhbCBlbnZpcm9ubWVudCByZXF1aXJlbWVudHMgZm9yCiBkZXRhaWxzIG9mIGhvdyB0byB1c2UgdGhpcyBmdW5jdGlvbi4KIAogLlNIICJTRUUgQUxTTyIKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9jdXJsX2dsb2JhbF9pbml0LjMgYi9kb2NzL2xpYmN1cmwvY3VybF9nbG9iYWxfaW5pdC4zCmluZGV4IDc3MTcyYmUuLmQ1NmRmNWIgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9jdXJsX2dsb2JhbF9pbml0LjMKKysrIGIvZG9jcy9saWJjdXJsL2N1cmxfZ2xvYmFsX2luaXQuMwpAQCAtNSwxMSArNSwxMSBAQAogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogLlwiICoKLS5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTUwLDcgKzUwLDExIEBACiBzaW1pbGFybHkgdGhyZWFkIHVuc2FmZSwgaXQgY291bGQgY29uZmxpY3Qgd2l0aCBhbnkgb3RoZXIgdGhyZWFkIHRoYXQgdXNlcwogdGhlc2Ugb3RoZXIgbGlicmFyaWVzLgogCi1TZWUgdGhlIGRlc2NyaXB0aW9uIGluIFxmQmxpYmN1cmwoMylcZlAgb2YgZ2xvYmFsIGVudmlyb25tZW50IHJlcXVpcmVtZW50cyBmb3IKK0lmIHlvdSBhcmUgaW5pdGlhbGl6aW5nIGxpYmN1cmwgZnJvbSBhIFdpbmRvd3MgRExMIHlvdSBzaG91bGQgbm90IGluaXRpYWxpemUgaXQKK2Zyb20gRGxsTWFpbiBvciBhIHN0YXRpYyBpbml0aWFsaXplciBiZWNhdXNlIFdpbmRvd3MgaG9sZHMgdGhlIGxvYWRlciBsb2NrCitkdXJpbmcgdGhhdCB0aW1lIGFuZCBpdCBjb3VsZCBjYXVzZSBhIGRlYWRsb2NrLgorCitTZWUgdGhlIGRlc2NyaXB0aW9uIGluIFxmSWxpYmN1cmwoMylcZlAgb2YgZ2xvYmFsIGVudmlyb25tZW50IHJlcXVpcmVtZW50cyBmb3IKIGRldGFpbHMgb2YgaG93IHRvIHVzZSB0aGlzIGZ1bmN0aW9uLgogCiAuU0ggRkxBR1MKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9jdXJsX2dsb2JhbF9pbml0X21lbS4zIGIvZG9jcy9saWJjdXJsL2N1cmxfZ2xvYmFsX2luaXRfbWVtLjMKaW5kZXggOWNkZGVmNy4uNzI1MmNmOSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL2N1cmxfZ2xvYmFsX2luaXRfbWVtLjMKKysrIGIvZG9jcy9saWJjdXJsL2N1cmxfZ2xvYmFsX2luaXRfbWVtLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzYsMTEgKzM2LDEzIEBACiBhbGxvd3MgdGhlIGFwcGxpY2F0aW9uIHRvIHNldCBjYWxsYmFja3MgdG8gcmVwbGFjZSB0aGUgb3RoZXJ3aXNlIHVzZWQgaW50ZXJuYWwKIG1lbW9yeSBmdW5jdGlvbnMuCiAKLVRoaXMgbWFuIHBhZ2Ugb25seSBhZGRzIGRvY3VtZW50YXRpb24gZm9yIHRoZSBjYWxsYmFja3MsIHNlZSB0aGUKLVxmSWN1cmxfZ2xvYmFsX2luaXQoMylcZlAgbWFuIHBhZ2UgZm9yIGFsbCB0aGUgcmVzdC4gV2hlbiB5b3UgdXNlIHRoaXMKLWZ1bmN0aW9uLCBhbGwgY2FsbGJhY2sgYXJndW1lbnRzIG11c3QgYmUgc2V0IHRvIHZhbGlkIGZ1bmN0aW9uIHBvaW50ZXJzLgorSWYgeW91IGFyZSB1c2luZyBsaWJjdXJsIGZyb20gbXVsdGlwbGUgdGhyZWFkcyBvciBsaWJjdXJsIHdhcyBidWlsdCB3aXRoIHRoZQordGhyZWFkZWQgcmVzb2x2ZXIgb3B0aW9uIHRoZW4gdGhlIGNhbGxiYWNrIGZ1bmN0aW9ucyBtdXN0IGJlIHRocmVhZCBzYWZlLiBUaGUKK3RocmVhZGVkIHJlc29sdmVyIGlzIGEgY29tbW9uIGJ1aWxkIG9wdGlvbiB0byBlbmFibGUgKGFuZCBpbiBzb21lIGNhc2VzIHRoZQorZGVmYXVsdCkgc28gd2Ugc3Ryb25nbHkgdXJnZSB5b3UgdG8gbWFrZSB5b3VyIGNhbGxiYWNrIGZ1bmN0aW9ucyB0aHJlYWQgc2FmZS4KIAotVGhlIHByb3RvdHlwZXMgZm9yIHRoZSBnaXZlbiBjYWxsYmFja3Mgc2hvdWxkIG1hdGNoIHRoZXNlOgorQWxsIGNhbGxiYWNrIGFyZ3VtZW50cyBtdXN0IGJlIHNldCB0byB2YWxpZCBmdW5jdGlvbiBwb2ludGVycy4gVGhlCitwcm90b3R5cGVzIGZvciB0aGUgZ2l2ZW4gY2FsbGJhY2tzIG11c3QgbWF0Y2ggdGhlc2U6CiAuSVAgInZvaWQgKm1hbGxvY19jYWxsYmFjayhzaXplX3Qgc2l6ZSk7IgogVG8gcmVwbGFjZSBtYWxsb2MoKQogLklQICJ2b2lkIGZyZWVfY2FsbGJhY2sodm9pZCAqcHRyKTsiCkBAIC01MSw2ICs1Myw5IEBACiBUbyByZXBsYWNlIHN0cmR1cCgpCiAuSVAgInZvaWQgKmNhbGxvY19jYWxsYmFjayhzaXplX3Qgbm1lbWIsIHNpemVfdCBzaXplKTsiCiBUbyByZXBsYWNlIGNhbGxvYygpCisuUkUKK1RoaXMgZnVuY3Rpb24gaXMgb3RoZXJ3aXNlIHRoZSBzYW1lIGFzIFxmSWN1cmxfZ2xvYmFsX2luaXQoMylcZlAsIHBsZWFzZSByZWZlcgordG8gdGhhdCBtYW4gcGFnZSBmb3IgZG9jdW1lbnRhdGlvbi4KIC5TSCAiQ0FVVElPTiIKIE1hbmlwdWxhdGluZyB0aGVzZSBnaXZlcyBjb25zaWRlcmFibGUgcG93ZXJzIHRvIHRoZSBhcHBsaWNhdGlvbiB0byBzZXZlcmVseQogc2NyZXcgdGhpbmdzIHVwIGZvciBsaWJjdXJsLiBUYWtlIGNhcmUhCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvY3VybF9tcHJpbnRmLjMgYi9kb2NzL2xpYmN1cmwvY3VybF9tcHJpbnRmLjMKaW5kZXggY2JmMTBlMS4uZTg2MWVkOSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL2N1cmxfbXByaW50Zi4zCisrKyBiL2RvY3MvbGliY3VybC9jdXJsX21wcmludGYuMwpAQCAtNSwxMSArNSwxMSBAQAogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogLlwiICoKLS5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTEsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTkxLDE1ICs5MSw5IEBACiBMaWtlIGN1cmxfbWFwcmludGYoKSBidXQgdGFrZXMgYSB2YV9saXN0IHBvaW50ZXIgYXJndW1lbnQgaW5zdGVhZCBvZiBhCiB2YXJpYWJsZSBhbW91bnQgb2YgYXJndW1lbnRzLgogLlJFCi0KLVRvIGVhc2lseSB1c2UgYWxsIHRoZXNlIGNsb25lZCBmdW5jdGlvbnMgaW5zdGVhZCBvZiB0aGUgbm9ybWFsIG9uZXMsICNkZWZpbmUKLV9NUFJJTlRGX1JFUExBQ0UgYmVmb3JlIHlvdSBpbmNsdWRlIHRoZSA8Y3VybC9tcHJpbnRmLmg+IGZpbGUuIFRoZW4gYWxsIHRoZQotbm9ybWFsIG5hbWVzIGxpa2UgcHJpbnRmLCBmcHJpbnRmLCBzcHJpbnRmIGV0YyB3aWxsIHVzZSB0aGUgY3VybC1mdW5jdGlvbnMKLWluc3RlYWQuCiAuU0ggQVZBSUxBQklMSVRZCi1UaGVzZSBmdW5jdGlvbiB3aWxsIGJlIHJlbW92ZWQgZnJvbSB0aGUgcHVibGljIGxpYmN1cmwgQVBJIGluIGEgbmVhcgotZnV0dXJlLiBUaGV5IHdpbGwgaW5zdGVhZCBiZSBtYWRlICJhdmFpbGFibGUiIGJ5IHNvdXJjZSBjb2RlIGFjY2VzcyBvbmx5LCBhbmQKLXRoZW4gYXMgY3VybHhfLXByZWZpeGVkIGZ1bmN0aW9ucy4gU2VlIGxpYi9SRUFETUUuY3VybHggZm9yIGZ1cnRoZXIgZGV0YWlscy4KK1RoZXNlIGZ1bmN0aW9ucyB3aWxsIGJlIHJlbW92ZWQgZnJvbSB0aGUgcHVibGljIGxpYmN1cmwgQVBJIGluIHRoZSBmdXR1cmUuIERvCitub3QgdXNlIHRoZW0gaW4gYW55IG5ldyBwcm9ncmFtcyBvciBwcm9qZWN0cy4KIC5TSCBSRVRVUk4gVkFMVUUKIFRoZSBcZkJjdXJsX21hcHJpbnRmXGZQIGFuZCBcZkJjdXJsX212YXByaW50ZlxmUCBmdW5jdGlvbnMgcmV0dXJuIGEgcG9pbnRlciB0bwogYSBuZXdseSBhbGxvY2F0ZWQgc3RyaW5nLCBvciBOVUxMIGlmIGl0IGZhaWxlZC4KZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9jdXJsX211bHRpX2FkZF9oYW5kbGUuMyBiL2RvY3MvbGliY3VybC9jdXJsX211bHRpX2FkZF9oYW5kbGUuMwppbmRleCAyNTNiODY0Li40YzI5NGY1IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvY3VybF9tdWx0aV9hZGRfaGFuZGxlLjMKKysrIGIvZG9jcy9saWJjdXJsL2N1cmxfbXVsdGlfYWRkX2hhbmRsZS4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTMxLDcgKzMxLDcgQEAKIEFkZHMgYSBzdGFuZGFyZCBlYXN5IGhhbmRsZSB0byB0aGUgbXVsdGkgc3RhY2suIFRoaXMgZnVuY3Rpb24gY2FsbCB3aWxsIG1ha2UKIHRoaXMgXGZJbXVsdGlfaGFuZGxlXGZQIGNvbnRyb2wgdGhlIHNwZWNpZmllZCBcZkllYXN5X2hhbmRsZVxmUC4KIAotV2hpbGUgYW4gZWFzeSBoYW5kbGUgaXMgYWRkZWQgdG8gYSBtdWx0aSBzdGFjaywgeW91IGNhbiBub3QgYW5kIHlvdSBtdXN0IG5vdAorV2hpbGUgYW4gZWFzeSBoYW5kbGUgaXMgYWRkZWQgdG8gYSBtdWx0aSBzdGFjaywgeW91IGNhbm5vdCBhbmQgeW91IG11c3Qgbm90CiB1c2UgXGZJY3VybF9lYXN5X3BlcmZvcm0oMylcZlAgb24gdGhhdCBoYW5kbGUuIEFmdGVyIGhhdmluZyByZW1vdmVkIHRoZSBlYXN5CiBoYW5kbGUgZnJvbSB0aGUgbXVsdGkgc3RhY2sgYWdhaW4sIGl0IGlzIHBlcmZlY3RseSBmaW5lIHRvIHVzZSBpdCB3aXRoIHRoZQogZWFzeSBpbnRlcmZhY2UgYWdhaW4uCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvY3VybF9tdWx0aV9hc3NpZ24uMyBiL2RvY3MvbGliY3VybC9jdXJsX211bHRpX2Fzc2lnbi4zCmluZGV4IDBhMjM3OGQuLjc1Y2I4NmIgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9jdXJsX211bHRpX2Fzc2lnbi4zCisrKyBiL2RvY3MvbGliY3VybC9jdXJsX211bHRpX2Fzc2lnbi4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9jdXJsX211bHRpX2NsZWFudXAuMyBiL2RvY3MvbGliY3VybC9jdXJsX211bHRpX2NsZWFudXAuMwppbmRleCA1MGJjOGFkLi4wN2Q5MjE2IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvY3VybF9tdWx0aV9jbGVhbnVwLjMKKysrIGIvZG9jcy9saWJjdXJsL2N1cmxfbXVsdGlfY2xlYW51cC4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9jdXJsX211bHRpX2Zkc2V0LjMgYi9kb2NzL2xpYmN1cmwvY3VybF9tdWx0aV9mZHNldC4zCmluZGV4IDkwOGVmNTUuLmJlZWY0ZGUgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9jdXJsX211bHRpX2Zkc2V0LjMKKysrIGIvZG9jcy9saWJjdXJsL2N1cmxfbXVsdGlfZmRzZXQuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvY3VybF9tdWx0aV9pbmZvX3JlYWQuMyBiL2RvY3MvbGliY3VybC9jdXJsX211bHRpX2luZm9fcmVhZC4zCmluZGV4IDAzYmUzNDEuLjczNjE4M2QgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9jdXJsX211bHRpX2luZm9fcmVhZC4zCisrKyBiL2RvY3MvbGliY3VybC9jdXJsX211bHRpX2luZm9fcmVhZC4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9jdXJsX211bHRpX2luaXQuMyBiL2RvY3MvbGliY3VybC9jdXJsX211bHRpX2luaXQuMwppbmRleCBjYTkzNzRlLi5lODRlYjc2IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvY3VybF9tdWx0aV9pbml0LjMKKysrIGIvZG9jcy9saWJjdXJsL2N1cmxfbXVsdGlfaW5pdC4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9jdXJsX211bHRpX3BlcmZvcm0uMyBiL2RvY3MvbGliY3VybC9jdXJsX211bHRpX3BlcmZvcm0uMwppbmRleCAzZWMxZmFkLi5kMmFlNTQxIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvY3VybF9tdWx0aV9wZXJmb3JtLjMKKysrIGIvZG9jcy9saWJjdXJsL2N1cmxfbXVsdGlfcGVyZm9ybS4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9jdXJsX211bHRpX3JlbW92ZV9oYW5kbGUuMyBiL2RvY3MvbGliY3VybC9jdXJsX211bHRpX3JlbW92ZV9oYW5kbGUuMwppbmRleCAxYzIxNjViLi5iOWRhYWU5IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvY3VybF9tdWx0aV9yZW1vdmVfaGFuZGxlLjMKKysrIGIvZG9jcy9saWJjdXJsL2N1cmxfbXVsdGlfcmVtb3ZlX2hhbmRsZS4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTI4LDcgKzI4LDcgQEAKIENVUkxNY29kZSBjdXJsX211bHRpX3JlbW92ZV9oYW5kbGUoQ1VSTE0gKm11bHRpX2hhbmRsZSwgQ1VSTCAqZWFzeV9oYW5kbGUpOwogLmFkCiAuU0ggREVTQ1JJUFRJT04KLVJlbW92ZXMgYSBnaXZlbiBcZkllYXN5X2hhbmRsZVxmSSBmcm9tIHRoZSBcZkltdWx0aV9oYW5kbGVcZkkuIFRoaXMgd2lsbCBtYWtlCitSZW1vdmVzIGEgZ2l2ZW4gXGZJZWFzeV9oYW5kbGVcZlAgZnJvbSB0aGUgXGZJbXVsdGlfaGFuZGxlXGZQLiBUaGlzIHdpbGwgbWFrZQogdGhlIHNwZWNpZmllZCBlYXN5IGhhbmRsZSBiZSByZW1vdmVkIGZyb20gdGhpcyBtdWx0aSBoYW5kbGUncyBjb250cm9sLgogCiBXaGVuIHRoZSBlYXN5IGhhbmRsZSBoYXMgYmVlbiByZW1vdmVkIGZyb20gYSBtdWx0aSBzdGFjaywgaXQgaXMgYWdhaW4KZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9jdXJsX211bHRpX3NldG9wdC4zIGIvZG9jcy9saWJjdXJsL2N1cmxfbXVsdGlfc2V0b3B0LjMKaW5kZXggOTUxMzQ5Zi4uZDI3YzUyNCAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL2N1cmxfbXVsdGlfc2V0b3B0LjMKKysrIGIvZG9jcy9saWJjdXJsL2N1cmxfbXVsdGlfc2V0b3B0LjMKQEAgLTUsMTEgKzUsMTEgQEAKIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKIC5cIiAqCi0uXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zNywzMiArMzcsMzYgQEAKIGJlaGF2ZSBiYWRseSEgIFlvdSBjYW4gb25seSBzZXQgb25lIG9wdGlvbiBpbiBlYWNoIGZ1bmN0aW9uIGNhbGwuCiAKIC5TSCBPUFRJT05TCi0uSVAgQ1VSTE1PUFRfU09DS0VURlVOQ1RJT04KLVNlZSBcZklDVVJMTU9QVF9TT0NLRVRGVU5DVElPTigzKVxmUAotLklQIENVUkxNT1BUX1NPQ0tFVERBVEEKLVNlZSBcZklDVVJMTU9QVF9TT0NLRVREQVRBKDMpXGZQCi0uSVAgQ1VSTE1PUFRfUElQRUxJTklORwotU2VlIFxmSUNVUkxNT1BUX1BJUEVMSU5JTkcoMylcZlAKLS5JUCBDVVJMTU9QVF9USU1FUkZVTkNUSU9OCi1TZWUgXGZJQ1VSTE1PUFRfVElNRVJGVU5DVElPTigzKVxmUAotLklQIENVUkxNT1BUX1RJTUVSREFUQQotU2VlIFxmSUNVUkxNT1BUX1RJTUVSREFUQSgzKVxmUAotLklQIENVUkxNT1BUX01BWENPTk5FQ1RTCi1TZWUgXGZJQ1VSTE1PUFRfTUFYQ09OTkVDVFMoMylcZlAKKy5JUCBDVVJMTU9QVF9DSFVOS19MRU5HVEhfUEVOQUxUWV9TSVpFCitTZWUgXGZJQ1VSTE1PUFRfQ0hVTktfTEVOR1RIX1BFTkFMVFlfU0laRSgzKVxmUAorLklQIENVUkxNT1BUX0NPTlRFTlRfTEVOR1RIX1BFTkFMVFlfU0laRQorU2VlIFxmSUNVUkxNT1BUX0NPTlRFTlRfTEVOR1RIX1BFTkFMVFlfU0laRSgzKVxmUAogLklQIENVUkxNT1BUX01BWF9IT1NUX0NPTk5FQ1RJT05TCiBTZWUgXGZJQ1VSTE1PUFRfTUFYX0hPU1RfQ09OTkVDVElPTlMoMylcZlAKIC5JUCBDVVJMTU9QVF9NQVhfUElQRUxJTkVfTEVOR1RICiBTZWUgXGZJQ1VSTE1PUFRfTUFYX1BJUEVMSU5FX0xFTkdUSCgzKVxmUAotLklQIENVUkxNT1BUX0NPTlRFTlRfTEVOR1RIX1BFTkFMVFlfU0laRQotU2VlIFxmSUNVUkxNT1BUX0NPTlRFTlRfTEVOR1RIX1BFTkFMVFlfU0laRSgzKVxmUAotLklQIENVUkxNT1BUX0NIVU5LX0xFTkdUSF9QRU5BTFRZX1NJWkUKLVNlZSBcZklDVVJMTU9QVF9DSFVOS19MRU5HVEhfUEVOQUxUWV9TSVpFKDMpXGZQCisuSVAgQ1VSTE1PUFRfTUFYX1RPVEFMX0NPTk5FQ1RJT05TCitTZWUgXGZJQ1VSTE1PUFRfTUFYX1RPVEFMX0NPTk5FQ1RJT05TKDMpXGZQCisuSVAgQ1VSTE1PUFRfTUFYQ09OTkVDVFMKK1NlZSBcZklDVVJMTU9QVF9NQVhDT05ORUNUUygzKVxmUAorLklQIENVUkxNT1BUX1BJUEVMSU5JTkcKK1NlZSBcZklDVVJMTU9QVF9QSVBFTElOSU5HKDMpXGZQCiAuSVAgQ1VSTE1PUFRfUElQRUxJTklOR19TSVRFX0JMCiBTZWUgXGZJQ1VSTE1PUFRfUElQRUxJTklOR19TSVRFX0JMKDMpXGZQCiAuSVAgQ1VSTE1PUFRfUElQRUxJTklOR19TRVJWRVJfQkwKIFNlZSBcZklDVVJMTU9QVF9QSVBFTElOSU5HX1NFUlZFUl9CTCgzKVxmUAotLklQIENVUkxNT1BUX01BWF9UT1RBTF9DT05ORUNUSU9OUwotU2VlIFxmSUNVUkxNT1BUX01BWF9UT1RBTF9DT05ORUNUSU9OUygzKVxmUAorLklQIENVUkxNT1BUX1BVU0hGVU5DVElPTgorU2VlIFxmSUNVUkxNT1BUX1BVU0hGVU5DVElPTigzKVxmUAorLklQIENVUkxNT1BUX1BVU0hEQVRBCitTZWUgXGZJQ1VSTE1PUFRfUFVTSERBVEEoMylcZlAKKy5JUCBDVVJMTU9QVF9TT0NLRVRGVU5DVElPTgorU2VlIFxmSUNVUkxNT1BUX1NPQ0tFVEZVTkNUSU9OKDMpXGZQCisuSVAgQ1VSTE1PUFRfU09DS0VUREFUQQorU2VlIFxmSUNVUkxNT1BUX1NPQ0tFVERBVEEoMylcZlAKKy5JUCBDVVJMTU9QVF9USU1FUkZVTkNUSU9OCitTZWUgXGZJQ1VSTE1PUFRfVElNRVJGVU5DVElPTigzKVxmUAorLklQIENVUkxNT1BUX1RJTUVSREFUQQorU2VlIFxmSUNVUkxNT1BUX1RJTUVSREFUQSgzKVxmUAogLlNIIFJFVFVSTlMKIFRoZSBzdGFuZGFyZCBDVVJMTWNvZGUgZm9yIG11bHRpIGludGVyZmFjZSBlcnJvciBjb2Rlcy4gTm90ZSB0aGF0IGl0IHJldHVybnMgYQogQ1VSTE1fVU5LTk9XTl9PUFRJT04gaWYgeW91IHRyeSBzZXR0aW5nIGFuIG9wdGlvbiB0aGF0IHRoaXMgdmVyc2lvbiBvZiBsaWJjdXJsCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvY3VybF9tdWx0aV9zb2NrZXQuMyBiL2RvY3MvbGliY3VybC9jdXJsX211bHRpX3NvY2tldC4zCmluZGV4IDZiMjYyZjIuLjUyYWJmMWUgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9jdXJsX211bHRpX3NvY2tldC4zCisrKyBiL2RvY3MvbGliY3VybC9jdXJsX211bHRpX3NvY2tldC4zCkBAIC01LDExICs1LDExIEBACiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAuXCIgKgotLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNDMsNyArNDMsNyBAQAogaXMgdGhlIG9uZSB0aGF0IGNvbXBsZXRlZC4gVXNlIFxmSWN1cmxfbXVsdGlfaW5mb19yZWFkKDMpXGZQIHRvIGZpZ3VyZSBvdXQKIHdoaWNoIGVhc3kgaGFuZGxlIHRoYXQgY29tcGxldGVkLgogCi1UaGUgXGZCY3VybF9tdWx0aV9zb2NrZXRfYWN0aW9uKDMpXGZQIGZ1bmN0aW9ucyBpbmZvcm0gdGhlIGFwcGxpY2F0aW9uIGFib3V0CitUaGUgXGZJY3VybF9tdWx0aV9zb2NrZXRfYWN0aW9uKDMpXGZQIGZ1bmN0aW9ucyBpbmZvcm0gdGhlIGFwcGxpY2F0aW9uIGFib3V0CiB1cGRhdGVzIGluIHRoZSBzb2NrZXQgKGZpbGUgZGVzY3JpcHRvcikgc3RhdHVzIGJ5IGRvaW5nIG5vbmUsIG9uZSwgb3IgbXVsdGlwbGUKIGNhbGxzIHRvIHRoZSBzb2NrZXQgY2FsbGJhY2sgZnVuY3Rpb24gc2V0IHdpdGggdGhlIENVUkxNT1BUX1NPQ0tFVEZVTkNUSU9OCiBvcHRpb24gdG8gXGZJY3VybF9tdWx0aV9zZXRvcHQoMylcZlAuIFRoZXkgdXBkYXRlIHRoZSBzdGF0dXMgd2l0aCBjaGFuZ2VzCkBAIC01Miw3ICs1Miw3IEBACiBHZXQgdGhlIHRpbWVvdXQgdGltZSBieSBzZXR0aW5nIHRoZSBcZklDVVJMTU9QVF9USU1FUkZVTkNUSU9OXGZQIG9wdGlvbiB3aXRoCiBcZkljdXJsX211bHRpX3NldG9wdCgzKVxmUC4gWW91ciBhcHBsaWNhdGlvbiB3aWxsIHRoZW4gZ2V0IGNhbGxlZCB3aXRoCiBpbmZvcm1hdGlvbiBvbiBob3cgbG9uZyB0byB3YWl0IGZvciBzb2NrZXQgYWN0aW9ucyBhdCBtb3N0IGJlZm9yZSBkb2luZyB0aGUKLXRpbWVvdXQgYWN0aW9uOiBjYWxsIHRoZSBcZkJjdXJsX211bHRpX3NvY2tldF9hY3Rpb24oMylcZlAgZnVuY3Rpb24gd2l0aCB0aGUKK3RpbWVvdXQgYWN0aW9uOiBjYWxsIHRoZSBcZkljdXJsX211bHRpX3NvY2tldF9hY3Rpb24oMylcZlAgZnVuY3Rpb24gd2l0aCB0aGUKIFxmQnNvY2tmZFxmUCBhcmd1bWVudCBzZXQgdG8gQ1VSTF9TT0NLRVRfVElNRU9VVC4gWW91IGNhbiBhbHNvIHVzZSB0aGUKIFxmSWN1cmxfbXVsdGlfdGltZW91dCgzKVxmUCBmdW5jdGlvbiB0byBwb2xsIHRoZSB2YWx1ZSBhdCBhbnkgZ2l2ZW4gdGltZSwgYnV0CiBmb3IgYW4gZXZlbnQtYmFzZWQgc3lzdGVtIHVzaW5nIHRoZSBjYWxsYmFjayBpcyBmYXIgYmV0dGVyIHRoYW4gcmVseWluZyBvbgpAQCAtNjMsNyArNjMsNyBAQAogMC4KIAogRm9yY2UgbGliY3VybCB0byAocmUtKWNoZWNrIGFsbCBpdHMgaW50ZXJuYWwgc29ja2V0cyBhbmQgdHJhbnNmZXJzIGluc3RlYWQgb2YKLWp1c3QgYSBzaW5nbGUgb25lIGJ5IGNhbGxpbmcgXGZCY3VybF9tdWx0aV9zb2NrZXRfYWxsKDMpXGZQLiBOb3RlIHRoYXQgdGhlcmUKK2p1c3QgYSBzaW5nbGUgb25lIGJ5IGNhbGxpbmcgXGZJY3VybF9tdWx0aV9zb2NrZXRfYWxsKDMpXGZQLiBOb3RlIHRoYXQgdGhlcmUKIHNob3VsZCBub3QgYmUgYW55IHJlYXNvbiB0byB1c2UgdGhpcyBmdW5jdGlvbiEKIC5TSCAiQ0FMTEJBQ0sgREVUQUlMUyIKIApkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL2N1cmxfbXVsdGlfc29ja2V0X2FjdGlvbi4zIGIvZG9jcy9saWJjdXJsL2N1cmxfbXVsdGlfc29ja2V0X2FjdGlvbi4zCmluZGV4IDQ1YjYxMDUuLjY1YTNmYjMgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9jdXJsX211bHRpX3NvY2tldF9hY3Rpb24uMworKysgYi9kb2NzL2xpYmN1cmwvY3VybF9tdWx0aV9zb2NrZXRfYWN0aW9uLjMKQEAgLTUsMTEgKzUsMTEgQEAKIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKIC5cIiAqCi0uXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDEyLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yNyw3ICsyNyw4IEBACiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAKIENVUkxNY29kZSBjdXJsX211bHRpX3NvY2tldF9hY3Rpb24oQ1VSTE0gKiBtdWx0aV9oYW5kbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cmxfc29ja2V0X3Qgc29ja2ZkLCBpbnQgZXZfYml0bWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VybF9zb2NrZXRfdCBzb2NrZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBldl9iaXRtYXNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKnJ1bm5pbmdfaGFuZGxlcyk7CiAuZmkKIC5TSCBERVNDUklQVElPTgpAQCAtNTAsMTYgKzUxLDE3IEBACiBpcyB0aGUgb25lIHRoYXQgY29tcGxldGVkLiBVc2UgXGZJY3VybF9tdWx0aV9pbmZvX3JlYWQoMylcZlAgdG8gZmlndXJlIG91dAogd2hpY2ggZWFzeSBoYW5kbGUgdGhhdCBjb21wbGV0ZWQuCiAKLVRoZSBcZkJjdXJsX211bHRpX3NvY2tldF9hY3Rpb24oMylcZlAgZnVuY3Rpb25zIGluZm9ybSB0aGUgYXBwbGljYXRpb24gYWJvdXQKK1RoZSBcZkljdXJsX211bHRpX3NvY2tldF9hY3Rpb24oMylcZlAgZnVuY3Rpb25zIGluZm9ybSB0aGUgYXBwbGljYXRpb24gYWJvdXQKIHVwZGF0ZXMgaW4gdGhlIHNvY2tldCAoZmlsZSBkZXNjcmlwdG9yKSBzdGF0dXMgYnkgZG9pbmcgbm9uZSwgb25lLCBvciBtdWx0aXBsZQotY2FsbHMgdG8gdGhlIHNvY2tldCBjYWxsYmFjayBmdW5jdGlvbiBzZXQgd2l0aCB0aGUgQ1VSTE1PUFRfU09DS0VURlVOQ1RJT04KLW9wdGlvbiB0byBcZkljdXJsX211bHRpX3NldG9wdCgzKVxmUC4gVGhleSB1cGRhdGUgdGhlIHN0YXR1cyB3aXRoIGNoYW5nZXMKLXNpbmNlIHRoZSBwcmV2aW91cyB0aW1lIHRoZSBjYWxsYmFjayB3YXMgY2FsbGVkLgorY2FsbHMgdG8gdGhlIHNvY2tldCBjYWxsYmFjayBmdW5jdGlvbiBzZXQgd2l0aCB0aGUKK1xmSUNVUkxNT1BUX1NPQ0tFVEZVTkNUSU9OKDMpXGZQIG9wdGlvbiB0byBcZkljdXJsX211bHRpX3NldG9wdCgzKVxmUC4gVGhleQordXBkYXRlIHRoZSBzdGF0dXMgd2l0aCBjaGFuZ2VzIHNpbmNlIHRoZSBwcmV2aW91cyB0aW1lIHRoZSBjYWxsYmFjayB3YXMKK2NhbGxlZC4KIAotR2V0IHRoZSB0aW1lb3V0IHRpbWUgYnkgc2V0dGluZyB0aGUgXGZJQ1VSTE1PUFRfVElNRVJGVU5DVElPTlxmUCBvcHRpb24gd2l0aAotXGZJY3VybF9tdWx0aV9zZXRvcHQoMylcZlAuIFlvdXIgYXBwbGljYXRpb24gd2lsbCB0aGVuIGdldCBjYWxsZWQgd2l0aAorR2V0IHRoZSB0aW1lb3V0IHRpbWUgYnkgc2V0dGluZyB0aGUgXGZJQ1VSTE1PUFRfVElNRVJGVU5DVElPTigzKVxmUCBvcHRpb24KK3dpdGggXGZJY3VybF9tdWx0aV9zZXRvcHQoMylcZlAuIFlvdXIgYXBwbGljYXRpb24gd2lsbCB0aGVuIGdldCBjYWxsZWQgd2l0aAogaW5mb3JtYXRpb24gb24gaG93IGxvbmcgdG8gd2FpdCBmb3Igc29ja2V0IGFjdGlvbnMgYXQgbW9zdCBiZWZvcmUgZG9pbmcgdGhlCi10aW1lb3V0IGFjdGlvbjogY2FsbCB0aGUgXGZCY3VybF9tdWx0aV9zb2NrZXRfYWN0aW9uKDMpXGZQIGZ1bmN0aW9uIHdpdGggdGhlCit0aW1lb3V0IGFjdGlvbjogY2FsbCB0aGUgXGZJY3VybF9tdWx0aV9zb2NrZXRfYWN0aW9uKDMpXGZQIGZ1bmN0aW9uIHdpdGggdGhlCiBcZkJzb2NrZmRcZlAgYXJndW1lbnQgc2V0IHRvIENVUkxfU09DS0VUX1RJTUVPVVQuIFlvdSBjYW4gYWxzbyB1c2UgdGhlCiBcZkljdXJsX211bHRpX3RpbWVvdXQoMylcZlAgZnVuY3Rpb24gdG8gcG9sbCB0aGUgdmFsdWUgYXQgYW55IGdpdmVuIHRpbWUsIGJ1dAogZm9yIGFuIGV2ZW50LWJhc2VkIHN5c3RlbSB1c2luZyB0aGUgY2FsbGJhY2sgaXMgZmFyIGJldHRlciB0aGFuIHJlbHlpbmcgb24KQEAgLTc2LDcgKzc4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnNvY2tldHApOyAvKiBwcml2YXRlIHNvY2tldCBwb2ludGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxmQk5VTExcZlAgaWYgbm90CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNseSBhc3NpZ25lZCB3aXRoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXGZCY3VybF9tdWx0aV9hc3NpZ24oMylcZlAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcZkljdXJsX211bHRpX2Fzc2lnbigzKVxmUCAqLwogCiAuZmkKIFRoZSBjYWxsYmFjayBNVVNUIHJldHVybiAwLgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL2N1cmxfbXVsdGlfc3RyZXJyb3IuMyBiL2RvY3MvbGliY3VybC9jdXJsX211bHRpX3N0cmVycm9yLjMKaW5kZXggNDBkMDk3NC4uYjVhYTdhZiAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL2N1cmxfbXVsdGlfc3RyZXJyb3IuMworKysgYi9kb2NzL2xpYmN1cmwvY3VybF9tdWx0aV9zdHJlcnJvci4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9jdXJsX211bHRpX3RpbWVvdXQuMyBiL2RvY3MvbGliY3VybC9jdXJsX211bHRpX3RpbWVvdXQuMwppbmRleCBmMGM5MDc5Li43MWIyYjMyIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvY3VybF9tdWx0aV90aW1lb3V0LjMKKysrIGIvZG9jcy9saWJjdXJsL2N1cmxfbXVsdGlfdGltZW91dC4zCkBAIC01LDExICs1LDExIEBACiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAuXCIgKgotLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjksMTIgKzI5LDEyIEBACiAuU0ggREVTQ1JJUFRJT04KIAogQW4gYXBwbGljYXRpb24gdXNpbmcgdGhlIGxpYmN1cmwgbXVsdGkgaW50ZXJmYWNlIHNob3VsZCBjYWxsCi1cZkJjdXJsX211bHRpX3RpbWVvdXQoMylcZlAgdG8gZmlndXJlIG91dCBob3cgbG9uZyBpdCBzaG91bGQgd2FpdCBmb3Igc29ja2V0CitcZkljdXJsX211bHRpX3RpbWVvdXQoMylcZlAgdG8gZmlndXJlIG91dCBob3cgbG9uZyBpdCBzaG91bGQgd2FpdCBmb3Igc29ja2V0CiBhY3Rpb25zIFwtIGF0IG1vc3QgXC0gYmVmb3JlIHByb2NlZWRpbmcuCiAKIFByb2NlZWRpbmcgbWVhbnMgZWl0aGVyIGRvaW5nIHRoZSBzb2NrZXQtc3R5bGUgdGltZW91dCBhY3Rpb246IGNhbGwgdGhlCi1cZkJjdXJsX211bHRpX3NvY2tldF9hY3Rpb24oMylcZlAgZnVuY3Rpb24gd2l0aCB0aGUgXGZCc29ja2ZkXGZQIGFyZ3VtZW50IHNldAotdG8gQ1VSTF9TT0NLRVRfVElNRU9VVCwgb3IgY2FsbCBcZkJjdXJsX211bHRpX3BlcmZvcm0oMylcZlAgaWYgeW91J3JlIHVzaW5nCitcZkljdXJsX211bHRpX3NvY2tldF9hY3Rpb24oMylcZlAgZnVuY3Rpb24gd2l0aCB0aGUgXGZCc29ja2ZkXGZQIGFyZ3VtZW50IHNldAordG8gQ1VSTF9TT0NLRVRfVElNRU9VVCwgb3IgY2FsbCBcZkljdXJsX211bHRpX3BlcmZvcm0oMylcZlAgaWYgeW91J3JlIHVzaW5nCiB0aGUgc2ltcGxlciBhbmQgb2xkZXIgbXVsdGkgaW50ZXJmYWNlIGFwcHJvYWNoLgogCiBUaGUgdGltZW91dCB2YWx1ZSByZXR1cm5lZCBpbiB0aGUgbG9uZyBcZkJ0aW1lb3V0XGZQIHBvaW50cyB0bywgaXMgaW4gbnVtYmVyCkBAIC02OCw5ICs2OCw5IEBACiAuU0ggIlJFVFVSTiBWQUxVRSIKIFRoZSBzdGFuZGFyZCBDVVJMTWNvZGUgZm9yIG11bHRpIGludGVyZmFjZSBlcnJvciBjb2Rlcy4KIC5TSCAiVFlQSUNBTCBVU0FHRSIKLUNhbGwgXGZCY3VybF9tdWx0aV90aW1lb3V0KDMpXGZQLCB0aGVuIHdhaXQgZm9yIGFjdGlvbiBvbiB0aGUgc29ja2V0cy4gWW91Ci1maWd1cmUgb3V0IHdoaWNoIHNvY2tldHMgdG8gd2FpdCBmb3IgYnkgY2FsbGluZyBcZkJjdXJsX211bHRpX2Zkc2V0KDMpXGZQIG9yCi1ieSBhIHByZXZpb3VzIGNhbGwgdG8gXGZCY3VybF9tdWx0aV9zb2NrZXQoMylcZlAuCitDYWxsIFxmSWN1cmxfbXVsdGlfdGltZW91dCgzKVxmUCwgdGhlbiB3YWl0IGZvciBhY3Rpb24gb24gdGhlIHNvY2tldHMuIFlvdQorZmlndXJlIG91dCB3aGljaCBzb2NrZXRzIHRvIHdhaXQgZm9yIGJ5IGNhbGxpbmcgXGZJY3VybF9tdWx0aV9mZHNldCgzKVxmUCBvcgorYnkgYSBwcmV2aW91cyBjYWxsIHRvIFxmSWN1cmxfbXVsdGlfc29ja2V0KDMpXGZQLgogLlNIIEFWQUlMQUJJTElUWQogVGhpcyBmdW5jdGlvbiB3YXMgYWRkZWQgaW4gbGliY3VybCA3LjE1LjQuCiAuU0ggIlNFRSBBTFNPIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL2N1cmxfbXVsdGlfd2FpdC4zIGIvZG9jcy9saWJjdXJsL2N1cmxfbXVsdGlfd2FpdC4zCmluZGV4IDQ1YzJlOGMuLjlmMTVjNWYgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9jdXJsX211bHRpX3dhaXQuMworKysgYi9kb2NzL2xpYmN1cmwvY3VybF9tdWx0aV93YWl0LjMKQEAgLTUsMTEgKzUsMTEgQEAKIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKIC5cIiAqCi0uXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC03MSw2ICs3MSw0OCBAQAogLklQIENVUkxfV0FJVF9QT0xMT1VUCiBCaXQgZmxhZyB0byBjdXJsX3dhaXRmZC5ldmVudHMgaW5kaWNhdGluZyB0aGUgc29ja2V0IHNob3VsZCBwb2xsIG9uIHdyaXRlCiBldmVudHMgc3VjaCBhcyB0aGUgc29ja2V0IGJlaW5nIGNsZWFyIHRvIHdyaXRlIHdpdGhvdXQgYmxvY2tpbmcuCisuU0ggRVhBTVBMRQorLm5mCitDVVJMICplYXN5X2hhbmRsZTsKK0NVUkxNICptdWx0aV9oYW5kbGU7CisKKy8qIGFkZCB0aGUgaW5kaXZpZHVhbCBlYXN5IGhhbmRsZSAqLworY3VybF9tdWx0aV9hZGRfaGFuZGxlKG11bHRpX2hhbmRsZSwgZWFzeV9oYW5kbGUpOworCitkbyB7CisgIENVUkxNY29kZSBtYzsKKyAgaW50IG51bWZkczsKKworICBtYyA9IGN1cmxfbXVsdGlfcGVyZm9ybShtdWx0aV9oYW5kbGUsICZzdGlsbF9ydW5uaW5nKTsKKworICBpZihtYyA9PSBDVVJMTV9PSyApIHsKKyAgICAvKiB3YWl0IGZvciBhY3Rpdml0eSwgdGltZW91dCBvciAibm90aGluZyIgKi8KKyAgICBtYyA9IGN1cmxfbXVsdGlfd2FpdChtdWx0aV9oYW5kbGUsIE5VTEwsIDAsIDEwMDAsICZudW1mZHMpOworICB9CisKKyAgaWYobWMgIT0gQ1VSTE1fT0spIHsKKyAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfbXVsdGkgZmFpbGVkLCBjb2RlICVkLlxuIiwgbWMpOworICAgIGJyZWFrOworICB9CisKKyAgLyogJ251bWZkcycgYmVpbmcgemVybyBtZWFucyBlaXRoZXIgYSB0aW1lb3V0IG9yIG5vIGZpbGUgZGVzY3JpcHRvcnMgdG8KKyAgICAgd2FpdCBmb3IuIFRyeSB0aW1lb3V0IG9uIGZpcnN0IG9jY3VycmVuY2UsIHRoZW4gYXNzdW1lIG5vIGZpbGUKKyAgICAgZGVzY3JpcHRvcnMgYW5kIG5vIGZpbGUgZGVzY3JpcHRvcnMgdG8gd2FpdCBmb3IgbWVhbnMgd2FpdCBmb3IgMTAwCisgICAgIG1pbGxpc2Vjb25kcy4gKi8KKworICBpZighbnVtZmRzKSB7CisgICAgcmVwZWF0cysrOyAvKiBjb3VudCBudW1iZXIgb2YgcmVwZWF0ZWQgemVybyBudW1mZHMgKi8KKyAgICBpZihyZXBlYXRzID4gMSkgeworICAgICAgV0FJVE1TKDEwMCk7IC8qIHNsZWVwIDEwMCBtaWxsaXNlY29uZHMgKi8KKyAgICB9CisgIH0KKyAgZWxzZQorICAgIHJlcGVhdHMgPSAwOworCit9IHdoaWxlKHN0aWxsX3J1bm5pbmcpOworCitjdXJsX211bHRpX3JlbW92ZV9oYW5kbGUobXVsdGlfaGFuZGxlLCBlYXN5X2hhbmRsZSk7CisuZmkKIC5TSCBSRVRVUk4gVkFMVUUKIENVUkxNY29kZSB0eXBlLCBnZW5lcmFsIGxpYmN1cmwgbXVsdGkgaW50ZXJmYWNlIGVycm9yIGNvZGUuIFNlZQogXGZJbGliY3VybC1lcnJvcnMoMylcZlAKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9jdXJsX3NoYXJlX2NsZWFudXAuMyBiL2RvY3MvbGliY3VybC9jdXJsX3NoYXJlX2NsZWFudXAuMwppbmRleCAzYWYxNzA3Li4wYjI2NWU4IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvY3VybF9zaGFyZV9jbGVhbnVwLjMKKysrIGIvZG9jcy9saWJjdXJsL2N1cmxfc2hhcmVfY2xlYW51cC4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9jdXJsX3NoYXJlX2luaXQuMyBiL2RvY3MvbGliY3VybC9jdXJsX3NoYXJlX2luaXQuMwppbmRleCA0ODMzYThhLi41NDViYTAzIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvY3VybF9zaGFyZV9pbml0LjMKKysrIGIvZG9jcy9saWJjdXJsL2N1cmxfc2hhcmVfaW5pdC4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9jdXJsX3NoYXJlX3NldG9wdC4zIGIvZG9jcy9saWJjdXJsL2N1cmxfc2hhcmVfc2V0b3B0LjMKaW5kZXggYzE5Njc0My4uNTVlMDZmMSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL2N1cmxfc2hhcmVfc2V0b3B0LjMKKysrIGIvZG9jcy9saWJjdXJsL2N1cmxfc2hhcmVfc2V0b3B0LjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNjgsNyArNjgsOCBAQAogU1NMIHNlc3Npb24gSURzIHdpbGwgYmUgc2hhcmVkIGFjcm9zcyB0aGUgZWFzeSBoYW5kbGVzIHVzaW5nIHRoaXMgc2hhcmVkCiBvYmplY3QuIFRoaXMgd2lsbCByZWR1Y2UgdGhlIHRpbWUgc3BlbnQgaW4gdGhlIFNTTCBoYW5kc2hha2Ugd2hlbiByZWNvbm5lY3RpbmcKIHRvIHRoZSBzYW1lIHNlcnZlci4gTm90ZSBTU0wgc2Vzc2lvbiBJRHMgYXJlIHJldXNlZCB3aXRoaW4gdGhlIHNhbWUgZWFzeSBoYW5kbGUKLWJ5IGRlZmF1bHQuCitieSBkZWZhdWx0LiBOb3RlIHRoaXMgc3ltYm9sIHdhcyBhZGRlZCBpbiA3LjEwLjMgYnV0IHdhcyBub3QgaW1wbGVtZW50ZWQgdW50aWwKKzcuMjMuMC4KIC5SRQogLklQIENVUkxTSE9QVF9VTlNIQVJFCiBUaGlzIG9wdGlvbiBkb2VzIHRoZSBvcHBvc2l0ZSBvZiBcZklDVVJMU0hPUFRfU0hBUkVcZlAuIEl0IHNwZWNpZmllcyB0aGF0CmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvY3VybF9zaGFyZV9zdHJlcnJvci4zIGIvZG9jcy9saWJjdXJsL2N1cmxfc2hhcmVfc3RyZXJyb3IuMwppbmRleCBmMWJjMzk4Li5mYWE1Mjk5IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvY3VybF9zaGFyZV9zdHJlcnJvci4zCisrKyBiL2RvY3MvbGliY3VybC9jdXJsX3NoYXJlX3N0cmVycm9yLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL2N1cmxfc2xpc3RfYXBwZW5kLjMgYi9kb2NzL2xpYmN1cmwvY3VybF9zbGlzdF9hcHBlbmQuMwppbmRleCA1Mjk1NjBlLi5mZWQ4MDI5IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvY3VybF9zbGlzdF9hcHBlbmQuMworKysgYi9kb2NzL2xpYmN1cmwvY3VybF9zbGlzdF9hcHBlbmQuMwpAQCAtNSwxMSArNSwxMSBAQAogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogLlwiICoKLS5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTEsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTM2LDcgKzM2LDcgQEAKIHN0cmluZy4KIAogVGhlIGxpc3Qgc2hvdWxkIGJlIGZyZWVkIGFnYWluIChhZnRlciB1c2FnZSkgd2l0aAotXGZCY3VybF9zbGlzdF9mcmVlX2FsbCgzKVxmUC4KK1xmSWN1cmxfc2xpc3RfZnJlZV9hbGwoMylcZlAuCiAuU0ggUkVUVVJOIFZBTFVFCiBBIG51bGwgcG9pbnRlciBpcyByZXR1cm5lZCBpZiBhbnl0aGluZyB3ZW50IHdyb25nLCBvdGhlcndpc2UgdGhlIG5ldyBsaXN0CiBwb2ludGVyIGlzIHJldHVybmVkLgpAQCAtNDYsNiArNDYsMTAgQEAKICBzdHJ1Y3QgY3VybF9zbGlzdCAqc2xpc3Q9TlVMTDsKIAogIHNsaXN0ID0gY3VybF9zbGlzdF9hcHBlbmQoc2xpc3QsICJwcmFnbWE6Iik7CisKKyBpZiAoc2xpc3QgPT0gTlVMTCkKKyAgIHJldHVybiAtMTsKKwogIGN1cmxfZWFzeV9zZXRvcHQoaGFuZGxlLCBDVVJMT1BUX0hUVFBIRUFERVIsIHNsaXN0KTsKIAogIGN1cmxfZWFzeV9wZXJmb3JtKGhhbmRsZSk7CmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvY3VybF9zbGlzdF9mcmVlX2FsbC4zIGIvZG9jcy9saWJjdXJsL2N1cmxfc2xpc3RfZnJlZV9hbGwuMwppbmRleCBmYWIzZDYwLi4zMWQ4MWRhIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvY3VybF9zbGlzdF9mcmVlX2FsbC4zCisrKyBiL2RvY3MvbGliY3VybC9jdXJsX3NsaXN0X2ZyZWVfYWxsLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL2N1cmxfc3RyZXF1YWwuMyBiL2RvY3MvbGliY3VybC9jdXJsX3N0cmVxdWFsLjMKaW5kZXggY2U1NzVkNy4uYTc0NWY3ZSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL2N1cmxfc3RyZXF1YWwuMworKysgYi9kb2NzL2xpYmN1cmwvY3VybF9zdHJlcXVhbC4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9jdXJsX3VuZXNjYXBlLjMgYi9kb2NzL2xpYmN1cmwvY3VybF91bmVzY2FwZS4zCmluZGV4IDhkMTY4NTIuLjA2MWZiYmYgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9jdXJsX3VuZXNjYXBlLjMKKysrIGIvZG9jcy9saWJjdXJsL2N1cmxfdW5lc2NhcGUuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yNSw3ICsyNSw3IEBACiAuU0ggU1lOT1BTSVMKIC5CICNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KIC5zcAotLkJJICJjaGFyICpjdXJsX3VuZXNjYXBlKCBjaGFyICoiIHVybCAiLCBpbnQgImxlbmd0aCAiICk7IgorLkJJICJjaGFyICpjdXJsX3VuZXNjYXBlKCBjb25zdCBjaGFyICoiIHVybCAiLCBpbnQgImxlbmd0aCAiICk7IgogLmFkCiAuU0ggREVTQ1JJUFRJT04KIE9ic29sZXRlIGZ1bmN0aW9uLiBVc2UgXGZJY3VybF9lYXN5X3VuZXNjYXBlKDMpXGZQIGluc3RlYWQhCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvY3VybF92ZXJzaW9uLjMgYi9kb2NzL2xpYmN1cmwvY3VybF92ZXJzaW9uLjMKaW5kZXggMDM5MjJjOS4uNGFjZDczYSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL2N1cmxfdmVyc2lvbi4zCisrKyBiL2RvY3MvbGliY3VybC9jdXJsX3ZlcnNpb24uMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvY3VybF92ZXJzaW9uX2luZm8uMyBiL2RvY3MvbGliY3VybC9jdXJsX3ZlcnNpb25faW5mby4zCmluZGV4IGU5ZDVhYjcuLjUyNDRjMjEgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9jdXJsX3ZlcnNpb25faW5mby4zCisrKyBiL2RvY3MvbGliY3VybC9jdXJsX3ZlcnNpb25faW5mby4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTc2LDkgKzc2LDkgQEAKIC5maQogCiBcZklhZ2VcZlAgZGVzY3JpYmVzIHdoYXQgdGhlIGFnZSBvZiB0aGlzIHN0cnVjdCBpcy4gVGhlIG51bWJlciBkZXBlbmRzIG9uIGhvdwotbmV3IHRoZSBsaWJjdXJsIHlvdSdyZSB1c2luZyBpcy4gWW91IGFyZSBob3dldmVyIGd1YXJhbnRlZWQgdG8gZ2V0IGEgc3RydWN0IHRoYXQgeW91Ci1oYXZlIGEgbWF0Y2hpbmcgc3RydWN0IGZvciBpbiB0aGUgaGVhZGVyLCBhcyB5b3UgdGVsbCBsaWJjdXJsIHlvdXIgImFnZSIgd2l0aAotdGhlIGlucHV0IGFyZ3VtZW50LgorbmV3IHRoZSBsaWJjdXJsIHlvdSdyZSB1c2luZyBpcy4gWW91IGFyZSBob3dldmVyIGd1YXJhbnRlZWQgdG8gZ2V0IGEgc3RydWN0Cit0aGF0IHlvdSBoYXZlIGEgbWF0Y2hpbmcgc3RydWN0IGZvciBpbiB0aGUgaGVhZGVyLCBhcyB5b3UgdGVsbCBsaWJjdXJsIHlvdXIKKyJhZ2UiIHdpdGggdGhlIGlucHV0IGFyZ3VtZW50LgogCiBcZkl2ZXJzaW9uXGZQIGlzIGp1c3QgYW4gYXNjaWkgc3RyaW5nIGZvciB0aGUgbGliY3VybCB2ZXJzaW9uLgogCkBAIC0xNDksNiArMTQ5LDEwIEBACiAuSVAgQ1VSTF9WRVJTSU9OX1VOSVhfU09DS0VUUwogbGliY3VybCB3YXMgYnVpbHQgd2l0aCBzdXBwb3J0IGZvciBVbml4IGRvbWFpbiBzb2NrZXRzLgogKEFkZGVkIGluIDcuNDAuMCkKKy5JUCBDVVJMX1ZFUlNJT05fUFNMCitsaWJjdXJsIHdhcyBidWlsdCB3aXRoIHN1cHBvcnQgZm9yIE1vemlsbGEncyBQdWJsaWMgU3VmZml4IExpc3QuIFRoaXMgbWFrZXMKK2xpYmN1cmwgaWdub3JlIGNvb2tpZXMgd2l0aCBhIGRvbWFpbiB0aGF0J3Mgb24gdGhlIGxpc3QuCisoQWRkZWQgaW4gNy40Ny4wKQogLlJFCiBcZklzc2xfdmVyc2lvblxmUCBpcyBhbiBBU0NJSSBzdHJpbmcgZm9yIHRoZSBPcGVuU1NMIHZlcnNpb24gdXNlZC4gSWYgbGliY3VybAogaGFzIG5vIFNTTCBzdXBwb3J0LCB0aGlzIGlzIE5VTEwuCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvaW5kZXguaHRtbCBiL2RvY3MvbGliY3VybC9pbmRleC5odG1sCmluZGV4IGNhNzczMTMuLmY0NmNjODUgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9pbmRleC5odG1sCisrKyBiL2RvY3MvbGliY3VybC9pbmRleC5odG1sCkBAIC0xNyw2ICsxNyw3IEBACiA8YnI+PGEgaHJlZj0ibGliY3VybC1zaGFyZS5odG1sIj5saWJjdXJsLXNoYXJlPC9hPgogPGJyPjxhIGhyZWY9ImxpYmN1cmwtZXJyb3JzLmh0bWwiPmxpYmN1cmwtZXJyb3JzPC9hPgogPGJyPjxhIGhyZWY9ImxpYmN1cmwtdHV0b3JpYWwuaHRtbCI+bGliY3VybC10dXRvcmlhbDwvYT4KKzxicj48YSBocmVmPSJsaWJjdXJsLXRocmVhZC5odG1sIj5saWJjdXJsLXRocmVhZDwvYT4KIAogPEgyPkxpYnJhcnkgRnVuY3Rpb25zIChBLVopPC9IMj4KIDxhIGhyZWY9ImN1cmxfZWFzeV9jbGVhbnVwLmh0bWwiPmN1cmxfZWFzeV9jbGVhbnVwPC9BPgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL2xpYmN1cmwtZWFzeS4zIGIvZG9jcy9saWJjdXJsL2xpYmN1cmwtZWFzeS4zCmluZGV4IGY4NTA2YTIuLmQxMTI2MzIgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9saWJjdXJsLWVhc3kuMworKysgYi9kb2NzL2xpYmN1cmwvbGliY3VybC1lYXN5LjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL2xpYmN1cmwtZXJyb3JzLjMgYi9kb2NzL2xpYmN1cmwvbGliY3VybC1lcnJvcnMuMwppbmRleCAwNzA5MWI1Li4wYTIxYTc1IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvbGliY3VybC1lcnJvcnMuMworKysgYi9kb2NzL2xpYmN1cmwvbGliY3VybC1lcnJvcnMuMwpAQCAtNSwxMSArNSwxMSBAQAogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogLlwiICoKLS5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTc0LDcgKzc0LDcgQEAKIHJlcGx5LiBUaGlzIGVycm9yIGNvZGUgaW5kaWNhdGVzIHRoYXQgYW4gdW5leHBlY3RlZCBjb2RlIHdhcyByZXR1cm5lZC4KIC5JUCAiQ1VSTEVfRlRQX0FDQ0VQVF9USU1FT1VUICgxMikiCiBEdXJpbmcgYW4gYWN0aXZlIEZUUCBzZXNzaW9uIHdoaWxlIHdhaXRpbmcgZm9yIHRoZSBzZXJ2ZXIgdG8gY29ubmVjdCwgdGhlCi1cZklDVVJMT1BUX0FDQ0VQVFRJTU9VVF9NUygzKVxmUCAob3IgdGhlIGludGVybmFsIGRlZmF1bHQpIHRpbWVvdXQgZXhwaXJlZC4KK1xmSUNVUkxPUFRfQUNDRVBUVElNRU9VVF9NUygzKVxmUCAob3IgdGhlIGludGVybmFsIGRlZmF1bHQpIHRpbWVvdXQgZXhwaXJlZC4KIC5JUCAiQ1VSTEVfRlRQX1dFSVJEX1BBU1ZfUkVQTFkgKDEzKSIKIGxpYmN1cmwgZmFpbGVkIHRvIGdldCBhIHNlbnNpYmxlIHJlc3VsdCBiYWNrIGZyb20gdGhlIHNlcnZlciBhcyBhIHJlc3BvbnNlIHRvCiBlaXRoZXIgYSBQQVNWIG9yIGEgRVBTViBjb21tYW5kLiBUaGUgc2VydmVyIGlzIGZsYXdlZC4KQEAgLTI0Nyw2ICsyNDcsMTIgQEAKIC5JUCAiQ1VSTEVfTk9fQ09OTkVDVElPTl9BVkFJTEFCTEUgKDg5KSIKIChGb3IgaW50ZXJuYWwgdXNlIG9ubHksIHdpbGwgbmV2ZXIgYmUgcmV0dXJuZWQgYnkgbGliY3VybCkgTm8gY29ubmVjdGlvbgogYXZhaWxhYmxlLCB0aGUgc2Vzc2lvbiB3aWxsIGJlIHF1ZXVlZC4gKGFkZGVkIGluIDcuMzAuMCkKKy5JUCAiQ1VSTEVfU1NMX1BJTk5FRFBVQktFWU5PVE1BVENIICg5MCkiCitGYWlsZWQgdG8gbWF0Y2ggdGhlIHBpbm5lZCBrZXkgc3BlY2lmaWVkIHdpdGggXGZJQ1VSTE9QVF9QSU5ORURQVUJMSUNLRVkoMylcZlAuCisuSVAgIkNVUkxFX1NTTF9JTlZBTElEQ0VSVFNUQVRVUyAoOTEpIgorU3RhdHVzIHJldHVybmVkIGZhaWx1cmUgd2hlbiBhc2tlZCB3aXRoIFxmSUNVUkxPUFRfU1NMX1ZFUklGWVNUQVRVUygzKVxmUC4KKy5JUCAiQ1VSTEVfSFRUUDJfU1RSRUFNICg5MikiCitTdHJlYW0gZXJyb3IgaW4gdGhlIEhUVFAvMiBmcmFtaW5nIGxheWVyLgogLklQICJDVVJMRV9PQlNPTEVURSoiCiBUaGVzZSBlcnJvciBjb2RlcyB3aWxsIG5ldmVyIGJlIHJldHVybmVkLiBUaGV5IHdlcmUgdXNlZCBpbiBhbiBvbGQgbGliY3VybAogdmVyc2lvbiBhbmQgYXJlIGN1cnJlbnRseSB1bnVzZWQuCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvbGliY3VybC1tdWx0aS4zIGIvZG9jcy9saWJjdXJsL2xpYmN1cmwtbXVsdGkuMwppbmRleCBmNzdjMzY2Li5hN2YzZGJiIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvbGliY3VybC1tdWx0aS4zCisrKyBiL2RvY3MvbGliY3VybC9saWJjdXJsLW11bHRpLjMKQEAgLTUsMTEgKzUsMTEgQEAKIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKIC5cIiAqCi0uXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC01MSwyOCArNTEsMjcgQEAKIFxmSWN1cmxfbXVsdGlfaW5pdCgzKVxmUC4gVGhpcyBoYW5kbGUgaXMgdGhlbiB1c2VkIGFzIGlucHV0IHRvIGFsbCBmdXJ0aGVyCiBjdXJsX211bHRpXyogZnVuY3Rpb25zLgogCi1XaXRoIGEgbXVsdGkgaGFuZGxlIGFuZCB0aGUgbXVsdGkgaW50ZXJmYWNlIHlvdSBjYW4gZG8gYW55IGFtb3VudCBvZgotc2ltdWx0YW5lb3VzIHRyYW5zZmVycyBpbiBwYXJhbGxlbC4gRWFjaCBzaW5nbGUgdHJhbnNmZXIgaXMgYnVpbHQgdXAgYXJvdW5kIGFuCi1lYXN5IGhhbmRsZS4gWW91IG11c3QgY3JlYXRlIHRoZSBlYXN5IGhhbmRsZXMgeW91IG5lZWQsIGFuZCBzZXR1cCB0aGUKLWFwcHJvcHJpYXRlIG9wdGlvbnMgZm9yIGVhY2ggZWFzeSBoYW5kbGUsIGFzIG91dGxpbmVkIGluIHRoZSBcZklsaWJjdXJsKDMpXGZQCi1tYW4gcGFnZSwgdXNpbmcgXGZJY3VybF9lYXN5X3NldG9wdCgzKVxmUC4KK1dpdGggYSBtdWx0aSBoYW5kbGUgYW5kIHRoZSBtdWx0aSBpbnRlcmZhY2UgeW91IGNhbiBkbyBzZXZlcmFsIHNpbXVsdGFuZW91cwordHJhbnNmZXJzIGluIHBhcmFsbGVsLiBFYWNoIHNpbmdsZSB0cmFuc2ZlciBpcyBidWlsdCB1cCBhcm91bmQgYW4gZWFzeQoraGFuZGxlLiBZb3UgY3JlYXRlIGFsbCB0aGUgZWFzeSBoYW5kbGVzIHlvdSBuZWVkLCBhbmQgc2V0dXAgdGhlIGFwcHJvcHJpYXRlCitvcHRpb25zIGZvciBlYWNoIGVhc3kgaGFuZGxlIHVzaW5nIFxmSWN1cmxfZWFzeV9zZXRvcHQoMylcZlAuCiAKIFRoZXJlIGFyZSB0d28gZmxhdm91cnMgb2YgdGhlIG11bHRpIGludGVyZmFjZSwgdGhlIHNlbGVjdCgpIG9yaWVudGVkIG9uZSBhbmQKLXRoZSBldmVudCBiYXNlZCBvbmUgd2UgY2FsbGVkIG11bHRpX3NvY2tldC4gWW91IHdpbGwgYmVuZWZpdCBmcm9tIHJlYWRpbmcKLXRocm91Z2ggdGhlIGRlc2NyaXB0aW9uIG9mIGJvdGggdmVyc2lvbnMgdG8gZnVsbCB1bmRlcnN0YW5kIGhvdyB0aGV5IHdvcmsgYW5kCit0aGUgZXZlbnQgYmFzZWQgb25lIHdlIGNhbGwgbXVsdGlfc29ja2V0LiBZb3Ugd2lsbCBiZW5lZml0IGZyb20gcmVhZGluZwordGhyb3VnaCB0aGUgZGVzY3JpcHRpb24gb2YgYm90aCB2ZXJzaW9ucyB0byBmdWxseSB1bmRlcnN0YW5kIGhvdyB0aGV5IHdvcmsgYW5kCiBkaWZmZXJlbnRpYXRlLiBXZSBzdGFydCBvdXQgd2l0aCB0aGUgc2VsZWN0KCkgb3JpZW50ZWQgdmVyc2lvbi4KIAotV2hlbiBhbiBlYXN5IGhhbmRsZSBpcyBzZXR1cCBmb3IgYSB0cmFuc2ZlciwgdGhlbiBpbnN0ZWFkIG9mIHVzaW5nCitXaGVuIGFuIGVhc3kgaGFuZGxlIGlzIHNldHVwIGFuZCByZWFkeSBmb3IgdHJhbnNmZXIsIHRoZW4gaW5zdGVhZCBvZiB1c2luZwogXGZJY3VybF9lYXN5X3BlcmZvcm0oMylcZlAgbGlrZSB3aGVuIHVzaW5nIHRoZSBlYXN5IGludGVyZmFjZSBmb3IgdHJhbnNmZXJzLAogeW91IHNob3VsZCBhZGQgdGhlIGVhc3kgaGFuZGxlIHRvIHRoZSBtdWx0aSBoYW5kbGUgd2l0aAotXGZJY3VybF9tdWx0aV9hZGRfaGFuZGxlKDMpXGZQLiBUaGUgbXVsdGkgaGFuZGxlIGlzIHNvbWV0aW1lcyByZWZlcnJlZCB0byBhcyBhCi1cJ211bHRpIHN0YWNrXCcgYmVjYXVzZSBvZiB0aGUgZmFjdCB0aGF0IGl0IG1heSBob2xkIGEgbGFyZ2UgYW1vdW50IG9mIGVhc3kKLWhhbmRsZXMuCitcZkljdXJsX211bHRpX2FkZF9oYW5kbGUoMylcZlAuIFlvdSBjYW4gYWRkIG1vcmUgZWFzeSBoYW5kbGVzIHRvIGEgbXVsdGkKK2hhbmRsZSBhdCBhbnkgcG9pbnQsIGV2ZW4gaWYgb3RoZXIgdHJhbnNmZXJzIGFyZSBhbHJlYWR5IHJ1bm5pbmcuCiAKIFNob3VsZCB5b3UgY2hhbmdlIHlvdXIgbWluZCwgdGhlIGVhc3kgaGFuZGxlIGlzIGFnYWluIHJlbW92ZWQgZnJvbSB0aGUgbXVsdGkKIHN0YWNrIHVzaW5nIFxmSWN1cmxfbXVsdGlfcmVtb3ZlX2hhbmRsZSgzKVxmUC4gT25jZSByZW1vdmVkIGZyb20gdGhlIG11bHRpCiBoYW5kbGUsIHlvdSBjYW4gYWdhaW4gdXNlIG90aGVyIGVhc3kgaW50ZXJmYWNlIGZ1bmN0aW9ucyBsaWtlCi1cZkljdXJsX2Vhc3lfcGVyZm9ybSgzKVxmUCBvbiB0aGUgaGFuZGxlIG9yIHdoYXRldmVyIHlvdSB0aGluayBpcyBuZWNlc3NhcnkuCitcZkljdXJsX2Vhc3lfcGVyZm9ybSgzKVxmUCBvbiB0aGUgaGFuZGxlIG9yIHdoYXRldmVyIHlvdSB0aGluayBpcworbmVjZXNzYXJ5LiBZb3UgY2FuIHJlbW92ZSBoYW5kbGVzIGF0IGFueSBwb2ludCBpbiB0aW1lIGR1cmluZyB0cmFuc2ZlcnMuCiAKIEFkZGluZyB0aGUgZWFzeSBoYW5kbGUgdG8gdGhlIG11bHRpIGhhbmRsZSBkb2VzIG5vdCBzdGFydCB0aGUgdHJhbnNmZXIuCiBSZW1lbWJlciB0aGF0IG9uZSBvZiB0aGUgbWFpbiBpZGVhcyB3aXRoIHRoaXMgaW50ZXJmYWNlIGlzIHRvIGxldCB5b3VyCkBAIC04NCwxNiArODMsMTYgQEAKIG1heSBiZSBhbGwsIGl0IG1heSBiZSBub25lLiBXaGVuIHRoZXJlJ3Mgbm90aGluZyBtb3JlIHRvIGRvIGZvciBub3csIGl0CiByZXR1cm5zIGJhY2sgdG8gdGhlIGNhbGxpbmcgYXBwbGljYXRpb24uCiAKLVlvdXIgYXBwbGljYXRpb24gY2FuIGFjcXVpcmUga25vd2xlZGdlIGZyb20gbGliY3VybCB3aGVuIGl0IHdvdWxkIGxpa2UgdG8gZ2V0Ci1pbnZva2VkIHRvIHRyYW5zZmVyIGRhdGEsIHNvIHRoYXQgeW91IGRvbid0IGhhdmUgdG8gYnVzeS1sb29wIGFuZCBjYWxsIHRoYXQKLVxmSWN1cmxfbXVsdGlfcGVyZm9ybSgzKVxmUCBsaWtlIGNyYXp5LiBcZkljdXJsX211bHRpX2Zkc2V0KDMpXGZQIG9mZmVycyBhbgotaW50ZXJmYWNlIHVzaW5nIHdoaWNoIHlvdSBjYW4gZXh0cmFjdCBmZF9zZXRzIGZyb20gbGliY3VybCB0byB1c2UgaW4gc2VsZWN0KCkKLW9yIHBvbGwoKSBjYWxscyBpbiBvcmRlciB0byBnZXQgdG8ga25vdyB3aGVuIHRoZSB0cmFuc2ZlcnMgaW4gdGhlIG11bHRpIHN0YWNrCi1taWdodCBuZWVkIGF0dGVudGlvbi4gVGhpcyBhbHNvIG1ha2VzIGl0IHZlcnkgZWFzeSBmb3IgeW91ciBwcm9ncmFtIHRvIHdhaXQKLWZvciBpbnB1dCBvbiB5b3VyIG93biBwcml2YXRlIGZpbGUgZGVzY3JpcHRvcnMgYXQgdGhlIHNhbWUgdGltZSBvciBwZXJoYXBzCi10aW1lb3V0IGV2ZXJ5IG5vdyBhbmQgdGhlbiwgc2hvdWxkIHlvdSB3YW50IHRoYXQuIFxmSWN1cmxfbXVsdGlfdGltZW91dCgzKVxmUAotYWxzbyBoZWxwcyB5b3Ugd2l0aCBwcm92aWRpbmcgYSBzdWl0YWJsZSB0aW1lb3V0IHBlcmlvZCBmb3IgeW91ciBzZWxlY3QoKQotY2FsbC4KK1lvdXIgYXBwbGljYXRpb24gZXh0cmFjdHMgaW5mbyBmcm9tIGxpYmN1cmwgYWJvdXQgd2hlbiBpdCB3b3VsZCBsaWtlIHRvIGdldAoraW52b2tlZCB0byB0cmFuc2ZlciBkYXRhIG9yIGRvIG90aGVyIHdvcmsuIFRoZSBtb3N0IGNvbnZlbmllbnQgd2F5IGlzIHRvIHVzZQorXGZJY3VybF9tdWx0aV93YWl0KDMpXGZQIHRoYXQgd2lsbCBoZWxwIHlvdSB3YWl0IHVudGlsIHRoZSBhcHBsaWNhdGlvbiBzaG91bGQKK2NhbGwgbGliY3VybCBhZ2Fpbi4gVGhlIG9sZGVyIEFQSSB0byBhY2NvbXBsaXNoIHRoZSBzYW1lIHRoaW5nIGlzCitcZkljdXJsX211bHRpX2Zkc2V0KDMpXGZQIHRoYXQgZXh0cmFjdHMgZmRfc2V0cyBmcm9tIGxpYmN1cmwgdG8gdXNlIGluCitzZWxlY3QoKSBvciBwb2xsKCkgY2FsbHMgaW4gb3JkZXIgdG8gZ2V0IHRvIGtub3cgd2hlbiB0aGUgdHJhbnNmZXJzIGluIHRoZQorbXVsdGkgc3RhY2sgbWlnaHQgbmVlZCBhdHRlbnRpb24uIEJvdGggdGhlc2UgQVBJcyBhbGxvdyBmb3IgeW91ciBwcm9ncmFtIHRvCit3YWl0IGZvciBpbnB1dCBvbiB5b3VyIG93biBwcml2YXRlIGZpbGUgZGVzY3JpcHRvcnMgYXQgdGhlIHNhbWUgdGltZQorXGZJY3VybF9tdWx0aV90aW1lb3V0KDMpXGZQIGFsc28gaGVscHMgeW91IHdpdGggcHJvdmlkaW5nIGEgc3VpdGFibGUgdGltZW91dAorcGVyaW9kIGZvciB5b3VyIHNlbGVjdCgpIGNhbGxzLgogCiBcZkljdXJsX211bHRpX3BlcmZvcm0oMylcZlAgc3RvcmVzIHRoZSBudW1iZXIgb2Ygc3RpbGwgcnVubmluZyB0cmFuc2ZlcnMgaW4KIG9uZSBvZiBpdHMgaW5wdXQgYXJndW1lbnRzLCBhbmQgYnkgcmVhZGluZyB0aGF0IHlvdSBjYW4gZmlndXJlIG91dCB3aGVuIGFsbApAQCAtMTE0LDkgKzExMyw5IEBACiBcZkljdXJsX2Vhc3lfY2xlYW51cCgzKVxmUCwgb3IgcG9zc2libHkgc2V0IG5ldyBvcHRpb25zIHRvIGl0IGFuZCBhZGQgaXQgYWdhaW4KIHdpdGggXGZJY3VybF9tdWx0aV9hZGRfaGFuZGxlKDMpXGZQIHRvIHN0YXJ0IGFub3RoZXIgdHJhbnNmZXIuCiAKLVdoZW4gYWxsIHRyYW5zZmVycyBpbiB0aGUgbXVsdGkgc3RhY2sgYXJlIGRvbmUsIGNsZWFudXAgdGhlIG11bHRpIGhhbmRsZSB3aXRoCitXaGVuIGFsbCB0cmFuc2ZlcnMgaW4gdGhlIG11bHRpIHN0YWNrIGFyZSBkb25lLCBjbG9zZSB0aGUgbXVsdGkgaGFuZGxlIHdpdGgKIFxmSWN1cmxfbXVsdGlfY2xlYW51cCgzKVxmUC4gQmUgY2FyZWZ1bCBhbmQgcGxlYXNlIG5vdGUgdGhhdCB5b3UgXGZCTVVTVFxmUAotaW52b2tlIHNlcGFyYXRlIFxmSWN1cmxfZWFzeV9jbGVhbnVwKDMpXGZQIGNhbGxzIG9uIGV2ZXJ5IHNpbmdsZSBlYXN5IGhhbmRsZQoraW52b2tlIHNlcGFyYXRlIFxmSWN1cmxfZWFzeV9jbGVhbnVwKDMpXGZQIGNhbGxzIGZvciBldmVyeSBzaW5nbGUgZWFzeSBoYW5kbGUKIHRvIGNsZWFuIHRoZW0gdXAgcHJvcGVybHkuCiAKIElmIHlvdSB3YW50IHRvIHJlLXVzZSBhbiBlYXN5IGhhbmRsZSB0aGF0IHdhcyBhZGRlZCB0byB0aGUgbXVsdGkgaGFuZGxlIGZvcgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL2xpYmN1cmwtc2hhcmUuMyBiL2RvY3MvbGliY3VybC9saWJjdXJsLXNoYXJlLjMKaW5kZXggYjQ2ZWVkYS4uYzdjZDY1NSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL2xpYmN1cmwtc2hhcmUuMworKysgYi9kb2NzL2xpYmN1cmwvbGliY3VybC1zaGFyZS4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9saWJjdXJsLXRocmVhZC4zIGIvZG9jcy9saWJjdXJsL2xpYmN1cmwtdGhyZWFkLjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzc5Y2E4ZgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbGliY3VybC9saWJjdXJsLXRocmVhZC4zCkBAIC0wLDAgKzEsMTA1IEBACisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKy5cIiAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorLlwiICoKKy5cIiAqIENvcHlyaWdodCAoQykgMjAxNSAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKy5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICoKKy5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisuXCIgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKy5cIiAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisuXCIgKgorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIKKy5USCBsaWJjdXJsLXRocmVhZCAzICIxMyBKdWwgMjAxNSIgImxpYmN1cmwiICJsaWJjdXJsIHRocmVhZCBzYWZldHkiCisuU0ggTkFNRQorbGliY3VybC10aHJlYWQgXC0gbGliY3VybCB0aHJlYWQgc2FmZXR5CisuU0ggIk11bHRpLXRocmVhZGluZyB3aXRoIGxpYmN1cmwiCitsaWJjdXJsIGlzIHRocmVhZCBzYWZlIGJ1dCBoYXMgbm8gaW50ZXJuYWwgdGhyZWFkIHN5bmNocm9uaXphdGlvbi4gWW91IG1heSBoYXZlCit0byBwcm92aWRlIHlvdXIgb3duIGxvY2tpbmcgc2hvdWxkIHlvdSBtZWV0IGFueSBvZiB0aGUgdGhyZWFkIHNhZmV0eSBleGNlcHRpb25zCitiZWxvdy4KKworXGZCSGFuZGxlcy5cZlAgWW91IG11c3QgXGZCbmV2ZXJcZlAgc2hhcmUgdGhlIHNhbWUgaGFuZGxlIGluIG11bHRpcGxlIHRocmVhZHMuCitZb3UgY2FuIHBhc3MgdGhlIGhhbmRsZXMgYXJvdW5kIGFtb25nIHRocmVhZHMsIGJ1dCB5b3UgbXVzdCBuZXZlciB1c2UgYSBzaW5nbGUKK2hhbmRsZSBmcm9tIG1vcmUgdGhhbiBvbmUgdGhyZWFkIGF0IGFueSBnaXZlbiB0aW1lLgorCitcZkJTaGFyZWQgb2JqZWN0cy5cZlAgWW91IGNhbiBzaGFyZSBjZXJ0YWluIGRhdGEgYmV0d2VlbiBtdWx0aXBsZSBoYW5kbGVzIGJ5Cit1c2luZyB0aGUgc2hhcmUgaW50ZXJmYWNlIGJ1dCB5b3UgbXVzdCBwcm92aWRlIHlvdXIgb3duIGxvY2tpbmcgYW5kIHNldAorXGZJY3VybF9zaGFyZV9zZXRvcHQoMylcZlAgQ1VSTFNIT1BUX0xPQ0tGVU5DIGFuZCBDVVJMU0hPUFRfVU5MT0NLRlVOQy4KKy5TSCBUTFMKK0lmIHlvdSBhcmUgYWNjZXNzaW5nIEhUVFBTIG9yIEZUUFMgVVJMcyBpbiBhIG11bHRpLXRocmVhZGVkIG1hbm5lciwgeW91IGFyZQordGhlbiBvZiBjb3Vyc2UgdXNpbmcgdGhlIHVuZGVybHlpbmcgU1NMIGxpYnJhcnkgbXVsdGktdGhyZWFkZWQgYW5kIHRob3NlIGxpYnMKK21pZ2h0IGhhdmUgdGhlaXIgb3duIHJlcXVpcmVtZW50cyBvbiB0aGlzIGlzc3VlLiAgWW91IG1heSBuZWVkIHRvIHByb3ZpZGUgb25lCitvciB0d28gZnVuY3Rpb25zIHRvIGFsbG93IGl0IHRvIGZ1bmN0aW9uIHByb3Blcmx5OgorLklQIE9wZW5TU0wKK09wZW5TU0wgMS4xLjAgImNhbiBiZSBzYWZlbHkgdXNlZCBpbiBtdWx0aS10aHJlYWRlZCBhcHBsaWNhdGlvbnMgcHJvdmlkZWQgdGhhdAorc3VwcG9ydCBmb3IgdGhlIHVuZGVybHlpbmcgT1MgdGhyZWFkaW5nIEFQSSBpcyBidWlsdC1pbi4iCisKK2h0dHBzOi8vd3d3Lm9wZW5zc2wub3JnL2RvY3MvbWFubWFzdGVyL2NyeXB0by90aHJlYWRzLmh0bWwjREVTQ1JJUFRJT04KKworT3BlblNTTCA8PSAxLjAuMiB0aGUgdXNlciBtdXN0IHNldCBjYWxsYmFja3MuCisKK2h0dHBzOi8vd3d3Lm9wZW5zc2wub3JnL2RvY3MvbWFuMS4wLjIvY3J5cHRvL3RocmVhZHMuaHRtbCNERVNDUklQVElPTgorCitodHRwczovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2Mvb3BlbnNzbHRocmVhZGxvY2suaHRtbAorCisuSVAgR251VExTCitodHRwOi8vZ251dGxzLm9yZy9tYW51YWwvaHRtbF9ub2RlL1RocmVhZC1zYWZldHkuaHRtbAorLklQIE5TUwordGhyZWFkLXNhZmUgYWxyZWFkeSB3aXRob3V0IGFueXRoaW5nIHJlcXVpcmVkLgorLklQIFBvbGFyU1NMCitSZXF1aXJlZCBhY3Rpb25zIHVua25vd24uCisuSVAgeWFzc2wKK1JlcXVpcmVkIGFjdGlvbnMgdW5rbm93bi4KKy5JUCBheFRMUworUmVxdWlyZWQgYWN0aW9ucyB1bmtub3duLgorLklQIFNlY3VyZS1UcmFuc3BvcnQKK1RoZSBlbmdpbmUgaXMgdXNlZCBieSBsaWJjdXJsIGluIGEgd2F5IHRoYXQgaXMgZnVsbHkgdGhyZWFkLXNhZmUuCisuSVAgV2luU1NMCitUaGUgZW5naW5lIGlzIHVzZWQgYnkgbGliY3VybCBpbiBhIHdheSB0aGF0IGlzIGZ1bGx5IHRocmVhZC1zYWZlLgorLklQIHdvbGZTU0wKK1RoZSBlbmdpbmUgaXMgdXNlZCBieSBsaWJjdXJsIGluIGEgd2F5IHRoYXQgaXMgZnVsbHkgdGhyZWFkLXNhZmUuCisuSVAgQm9yaW5nU1NMCitUaGUgZW5naW5lIGlzIHVzZWQgYnkgbGliY3VybCBpbiBhIHdheSB0aGF0IGlzIGZ1bGx5IHRocmVhZC1zYWZlLgorLlNIICJPdGhlciBhcmVhcyBvZiBjYXV0aW9uIgorLklQIFNpZ25hbHMKK1NpZ25hbHMgYXJlIHVzZWQgZm9yIHRpbWluZyBvdXQgbmFtZSByZXNvbHZlcyAoZHVyaW5nIEROUyBsb29rdXApIC0gd2hlbiBidWlsdAord2l0aG91dCB1c2luZyBlaXRoZXIgdGhlIGMtYXJlcyBvciB0aHJlYWRlZCByZXNvbHZlciBiYWNrZW5kcy4gV2hlbiB1c2luZworbXVsdGlwbGUgdGhyZWFkcyB5b3Ugc2hvdWxkIHNldCB0aGUgXGZJQ1VSTE9QVF9OT1NJR05BTCgzKVxmUCBvcHRpb24gdG8gMUwgZm9yCithbGwgaGFuZGxlcy4gRXZlcnl0aGluZyB3aWxsIG9yIG1pZ2h0IHdvcmsgZmluZSBleGNlcHQgdGhhdCB0aW1lb3V0cyBhcmUgbm90Citob25vcmVkIGR1cmluZyB0aGUgRE5TIGxvb2t1cCAtIHdoaWNoIHlvdSBjYW4gd29yayBhcm91bmQgYnkgYnVpbGRpbmcgbGliY3VybAord2l0aCBjLWFyZXMgc3VwcG9ydC4gYy1hcmVzIGlzIGEgbGlicmFyeSB0aGF0IHByb3ZpZGVzIGFzeW5jaHJvbm91cyBuYW1lCityZXNvbHZlcy4gT24gc29tZSBwbGF0Zm9ybXMsIGxpYmN1cmwgc2ltcGx5IHdpbGwgbm90IGZ1bmN0aW9uIHByb3Blcmx5CittdWx0aS10aHJlYWRlZCB1bmxlc3MgdGhpcyBvcHRpb24gaXMgc2V0LgorLklQICJOYW1lIHJlc29sdmluZyIKK1xmQmdldGhvc3RieSogZnVuY3Rpb25zIGFuZCBvdGhlciBzeXN0ZW0gY2FsbHMuXGZQIFRoZXNlIGZ1bmN0aW9ucywgcHJvdmlkZWQKK2J5IHlvdXIgb3BlcmF0aW5nIHN5c3RlbSwgbXVzdCBiZSB0aHJlYWQgc2FmZS4gSXQgaXMgdmVyeSBpbXBvcnRhbnQgdGhhdAorbGliY3VybCBjYW4gZmluZCBhbmQgdXNlIHRocmVhZCBzYWZlIHZlcnNpb25zIG9mIHRoZXNlIGFuZCBvdGhlciBzeXN0ZW0gY2FsbHMsCithcyBvdGhlcndpc2UgaXQgY2FuJ3QgZnVuY3Rpb24gZnVsbHkgdGhyZWFkIHNhZmUuIFNvbWUgb3BlcmF0aW5nIHN5c3RlbXMgYXJlCitrbm93biB0byBoYXZlIGZhdWx0eSB0aHJlYWQgaW1wbGVtZW50YXRpb25zLiBXZSBoYXZlIHByZXZpb3VzbHkgcmVjZWl2ZWQKK3Byb2JsZW0gcmVwb3J0cyBvbiAqQlNEIChhdCBsZWFzdCBpbiB0aGUgcGFzdCwgdGhleSBtYXkgYmUgd29ya2luZyBmaW5lIHRoZXNlCitkYXlzKS4gIFNvbWUgb3BlcmF0aW5nIHN5c3RlbXMgdGhhdCBhcmUga25vd24gdG8gaGF2ZSBzb2xpZCBhbmQgd29ya2luZyB0aHJlYWQKK3N1cHBvcnQgYXJlIExpbnV4LCBTb2xhcmlzIGFuZCBXaW5kb3dzLgorLklQICJjdXJsX2dsb2JhbF8qIGZ1bmN0aW9ucyIKK1RoZXNlIGZ1bmN0aW9ucyBhcmUgbm90IHRocmVhZCBzYWZlLiBJZiB5b3UgYXJlIHVzaW5nIGxpYmN1cmwgd2l0aCBtdWx0aXBsZQordGhyZWFkcyBpdCBpcyBlc3BlY2lhbGx5IGltcG9ydGFudCB0aGF0IGJlZm9yZSB1c2UgeW91IGNhbGwKK1xmSWN1cmxfZ2xvYmFsX2luaXQoMylcZlAgb3IgXGZJY3VybF9nbG9iYWxfaW5pdF9tZW0oMylcZlAgdG8gZXhwbGljaXRseQoraW5pdGlhbGl6ZSB0aGUgbGlicmFyeSBhbmQgaXRzIGRlcGVuZGVudHMsIHJhdGhlciB0aGFuIHJlbHkgb24gdGhlICJsYXp5IgorZmFpbC1zYWZlIGluaXRpYWxpemF0aW9uIHRoYXQgdGFrZXMgcGxhY2UgdGhlIGZpcnN0IHRpbWUKK1xmSWN1cmxfZWFzeV9pbml0KDMpXGZQIGlzIGNhbGxlZC4gRm9yIGFuIGluLWRlcHRoIGV4cGxhbmF0aW9uIHJlZmVyIHRvCitcZklsaWJjdXJsKDMpXGZQIHNlY3Rpb24gXGZCR0xPQkFMIENPTlNUQU5UU1xmUC4KKy5JUCAiTWVtb3J5IGZ1bmN0aW9ucyIKK1RoZXNlIGZ1bmN0aW9ucywgcHJvdmlkZWQgZWl0aGVyIGJ5IHlvdXIgb3BlcmF0aW5nIHN5c3RlbSBvciB5b3VyIG93bgorcmVwbGFjZW1lbnRzLCBtdXN0IGJlIHRocmVhZCBzYWZlLiBZb3UgY2FuIHVzZSBcZkljdXJsX2dsb2JhbF9pbml0X21lbSgzKVxmUAordG8gc2V0IHlvdXIgb3duIHJlcGxhY2VtZW50IG1lbW9yeSBmdW5jdGlvbnMuCisuSVAgIk5vbi1zYWZlIGZ1bmN0aW9ucyIKK1xmSUNVUkxPUFRfRE5TX1VTRV9HTE9CQUxfQ0FDSEUoMylcZlAgaXMgbm90IHRocmVhZC1zYWZlLgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL2xpYmN1cmwtdHV0b3JpYWwuMyBiL2RvY3MvbGliY3VybC9saWJjdXJsLXR1dG9yaWFsLjMKaW5kZXggMTFiMDE5MC4uMzE0NGRhMyAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL2xpYmN1cmwtdHV0b3JpYWwuMworKysgYi9kb2NzL2xpYmN1cmwvbGliY3VybC10dXRvcmlhbC4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTI1Niw1OCArMjU2LDggQEAKIG9mIGFsbCB0aGUgZGV0YWlscyBuZWVkZWQgdG8gZ2V0IHRoZSBmaWxlIG1vdmVkIGZyb20gb25lIG1hY2hpbmUgdG8gYW5vdGhlci4KIAogLlNIICJNdWx0aS10aHJlYWRpbmcgSXNzdWVzIgotVGhlIGZpcnN0IGJhc2ljIHJ1bGUgaXMgdGhhdCB5b3UgbXVzdCBcZkJuZXZlclxmUCBzaW11bHRhbmVvdXNseSBzaGFyZSBhCi1saWJjdXJsIGhhbmRsZSAoYmUgaXQgZWFzeSBvciBtdWx0aSBvciB3aGF0ZXZlcikgYmV0d2VlbiBtdWx0aXBsZQotdGhyZWFkcy4gT25seSB1c2Ugb25lIGhhbmRsZSBpbiBvbmUgdGhyZWFkIGF0IGFueSB0aW1lLiBZb3UgY2FuIHBhc3MgdGhlCi1oYW5kbGVzIGFyb3VuZCBhbW9uZyB0aHJlYWRzLCBidXQgeW91IG11c3QgbmV2ZXIgdXNlIGEgc2luZ2xlIGhhbmRsZSBmcm9tIG1vcmUKLXRoYW4gb25lIHRocmVhZCBhdCBhbnkgZ2l2ZW4gdGltZS4KLQotbGliY3VybCBpcyBjb21wbGV0ZWx5IHRocmVhZCBzYWZlLCBleGNlcHQgZm9yIHR3byBpc3N1ZXM6IHNpZ25hbHMgYW5kIFNTTC9UTFMKLWhhbmRsZXJzLiBTaWduYWxzIGFyZSB1c2VkIGZvciB0aW1pbmcgb3V0IG5hbWUgcmVzb2x2ZXMgKGR1cmluZyBETlMgbG9va3VwKSAtCi13aGVuIGJ1aWx0IHdpdGhvdXQgdXNpbmcgZWl0aGVyIHRoZSBjLWFyZXMgb3IgdGhyZWFkZWQgcmVzb2x2ZXIgYmFja2VuZHMuCi0KLUlmIHlvdSBhcmUgYWNjZXNzaW5nIEhUVFBTIG9yIEZUUFMgVVJMcyBpbiBhIG11bHRpLXRocmVhZGVkIG1hbm5lciwgeW91IGFyZQotdGhlbiBvZiBjb3Vyc2UgdXNpbmcgdGhlIHVuZGVybHlpbmcgU1NMIGxpYnJhcnkgbXVsdGktdGhyZWFkZWQgYW5kIHRob3NlIGxpYnMKLW1pZ2h0IGhhdmUgdGhlaXIgb3duIHJlcXVpcmVtZW50cyBvbiB0aGlzIGlzc3VlLiBCYXNpY2FsbHksIHlvdSBuZWVkIHRvCi1wcm92aWRlIG9uZSBvciB0d28gZnVuY3Rpb25zIHRvIGFsbG93IGl0IHRvIGZ1bmN0aW9uIHByb3Blcmx5LiBGb3IgYWxsCi1kZXRhaWxzLCBzZWUgdGhpczoKLQotT3BlblNTTAotCi0gaHR0cDovL3d3dy5vcGVuc3NsLm9yZy9kb2NzL2NyeXB0by90aHJlYWRzLmh0bWwjREVTQ1JJUFRJT04KLQotR251VExTCi0KLSBodHRwOi8vZ251dGxzLm9yZy9tYW51YWwvaHRtbF9ub2RlL1RocmVhZC1zYWZldHkuaHRtbAotCi1OU1MKLQotIGlzIGNsYWltZWQgdG8gYmUgdGhyZWFkLXNhZmUgYWxyZWFkeSB3aXRob3V0IGFueXRoaW5nIHJlcXVpcmVkLgotCi1Qb2xhclNTTAotCi0gUmVxdWlyZWQgYWN0aW9ucyB1bmtub3duLgotCi15YXNzbAotCi0gUmVxdWlyZWQgYWN0aW9ucyB1bmtub3duLgotCi1heFRMUwotCi0gUmVxdWlyZWQgYWN0aW9ucyB1bmtub3duLgotCi1TZWN1cmUgVHJhbnNwb3J0Ci0KLSBUaGUgZW5naW5lIGlzIGZ1bGx5IHRocmVhZC1zYWZlLCBhbmQgbm8gYWRkaXRpb25hbCBzdGVwcyBhcmUgcmVxdWlyZWQuCi0KLVdoZW4gdXNpbmcgbXVsdGlwbGUgdGhyZWFkcyB5b3Ugc2hvdWxkIHNldCB0aGUgXGZJQ1VSTE9QVF9OT1NJR05BTCgzKVxmUAotb3B0aW9uIHRvIDEgZm9yIGFsbCBoYW5kbGVzLiBFdmVyeXRoaW5nIHdpbGwgb3IgbWlnaHQgd29yayBmaW5lIGV4Y2VwdCB0aGF0Ci10aW1lb3V0cyBhcmUgbm90IGhvbm9yZWQgZHVyaW5nIHRoZSBETlMgbG9va3VwIC0gd2hpY2ggeW91IGNhbiB3b3JrIGFyb3VuZCBieQotYnVpbGRpbmcgbGliY3VybCB3aXRoIGMtYXJlcyBzdXBwb3J0LiBjLWFyZXMgaXMgYSBsaWJyYXJ5IHRoYXQgcHJvdmlkZXMKLWFzeW5jaHJvbm91cyBuYW1lIHJlc29sdmVzLiBPbiBzb21lIHBsYXRmb3JtcywgbGliY3VybCBzaW1wbHkgd2lsbCBub3QKLWZ1bmN0aW9uIHByb3Blcmx5IG11bHRpLXRocmVhZGVkIHVubGVzcyB0aGlzIG9wdGlvbiBpcyBzZXQuCi0KLUFsc28sIG5vdGUgdGhhdCBcZklDVVJMT1BUX0ROU19VU0VfR0xPQkFMX0NBQ0hFKDMpXGZQIGlzIG5vdCB0aHJlYWQtc2FmZS4KK2xpYmN1cmwgaXMgdGhyZWFkIHNhZmUgYnV0IHRoZXJlIGFyZSBhIGZldyBleGNlcHRpb25zLiBSZWZlciB0bworXGZJbGliY3VybC10aHJlYWQoMylcZlAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAKIC5TSCAiV2hlbiBJdCBEb2Vzbid0IFdvcmsiCiBUaGVyZSB3aWxsIGFsd2F5cyBiZSB0aW1lcyB3aGVuIHRoZSB0cmFuc2ZlciBmYWlscyBmb3Igc29tZSByZWFzb24uIFlvdSBtaWdodApAQCAtMTAwNSw3ICs5NTUsNyBAQAogdGhlIHBhcnNlciBpcyBlbmFibGVkIHRoZSBjb29raWVzIHdpbGwgYmUgdW5kZXJzdG9vZCBhbmQgdGhlIGNvb2tpZXMgd2lsbCBiZQoga2VwdCBpbiBtZW1vcnkgYW5kIHVzZWQgcHJvcGVybHkgaW4gc3Vic2VxdWVudCByZXF1ZXN0cyB3aGVuIHRoZSBzYW1lIGhhbmRsZQogaXMgdXNlZC4gTWFueSB0aW1lcyB0aGlzIGlzIGVub3VnaCwgYW5kIHlvdSBtYXkgbm90IGhhdmUgdG8gc2F2ZSB0aGUgY29va2llcwotdG8gZGlzayBhdCBhbGwuIE5vdGUgdGhhdCB0aGUgZmlsZSB5b3Ugc3BlY2lmeSB0byBcSUNVUkxPUFRfQ09PS0lFRklMRSgzKVxmUAordG8gZGlzayBhdCBhbGwuIE5vdGUgdGhhdCB0aGUgZmlsZSB5b3Ugc3BlY2lmeSB0byBcZklDVVJMT1BUX0NPT0tJRUZJTEUoMylcZlAKIGRvZXNuJ3QgaGF2ZSB0byBleGlzdCB0byBlbmFibGUgdGhlIHBhcnNlciwgc28gYSBjb21tb24gd2F5IHRvIGp1c3QgZW5hYmxlIHRoZQogcGFyc2VyIGFuZCBub3QgcmVhZCBhbnkgY29va2llcyBpcyB0byB1c2UgdGhlIG5hbWUgb2YgYSBmaWxlIHlvdSBrbm93IGRvZXNuJ3QKIGV4aXN0LgpAQCAtMTA5Niw3ICsxMDQ2LDcgQEAKIHNvbWUgcmlza3MgaW4gdGhlIHdheXMgaW4gd2hpY2ggYXBwbGljYXRpb25zIGNvbW1vbmx5IHVzZSBsaWJjdXJsIGFuZAogcG90ZW50aWFsIG1pdGlnYXRpb25zIG9mIHRob3NlIHJpc2tzLiBJdCBpcyBieSBubyBtZWFucyBjb21wcmVoZW5zaXZlLCBidXQKIHNob3dzIGNsYXNzZXMgb2YgYXR0YWNrcyB0aGF0IHJvYnVzdCBhcHBsaWNhdGlvbnMgc2hvdWxkIGNvbnNpZGVyLiBUaGUKLUNvbW1vbiBXZWFrbmVzcyBFbnVtZXJhdGlvbiBwcm9qZWN0IGF0IGh0dHA6Ly9jd2UubWl0cmUub3JnLyBpcyBhIGdvb2QKK0NvbW1vbiBXZWFrbmVzcyBFbnVtZXJhdGlvbiBwcm9qZWN0IGF0IGh0dHBzOi8vY3dlLm1pdHJlLm9yZy8gaXMgYSBnb29kCiByZWZlcmVuY2UgZm9yIG1hbnkgb2YgdGhlc2UgYW5kIHNpbWlsYXIgdHlwZXMgb2Ygd2Vha25lc3NlcyBvZiB3aGljaAogYXBwbGljYXRpb24gd3JpdGVycyBzaG91bGQgYmUgYXdhcmUuCiAKQEAgLTExMzYsMTEgKzEwODYsMTUgQEAKIC5JUCAiUmVkaXJlY3RzIgogVGhlIFxmSUNVUkxPUFRfRk9MTE9XTE9DQVRJT04oMylcZlAgb3B0aW9uIGF1dG9tYXRpY2FsbHkgZm9sbG93cyBIVFRQCiByZWRpcmVjdHMgc2VudCBieSBhIHJlbW90ZSBzZXJ2ZXIuICBUaGVzZSByZWRpcmVjdHMgY2FuIHJlZmVyIHRvIGFueSBraW5kIG9mCi1VUkwsIG5vdCBqdXN0IEhUVFAuICBBIHJlZGlyZWN0IHRvIGEgZmlsZTogVVJMIHdvdWxkIGNhdXNlIHRoZSBsaWJjdXJsIHRvIHJlYWQKLShvciB3cml0ZSkgYXJiaXRyYXJ5IGZpbGVzIGZyb20gdGhlIGxvY2FsIGZpbGVzeXN0ZW0uICBJZiB0aGUgYXBwbGljYXRpb24KLXJldHVybnMgdGhlIGRhdGEgYmFjayB0byB0aGUgdXNlciAoYXMgd291bGQgaGFwcGVuIGluIHNvbWUga2luZHMgb2YgQ0dJCi1zY3JpcHRzKSwgYW4gYXR0YWNrZXIgY291bGQgbGV2ZXJhZ2UgdGhpcyB0byByZWFkIG90aGVyd2lzZSBmb3JiaWRkZW4gZGF0YQotKGUuZy4gIGZpbGU6Ly9sb2NhbGhvc3QvZXRjL3Bhc3N3ZCkuCitVUkwsIG5vdCBqdXN0IEhUVFAuIEJ5IGRlZmF1bHQgbGliY3VybCB3aWxsIGFsbG93IGFsbCBwcm90b2NvbHMgb24gcmVkaXJlY3QKK2V4Y2VwdCBzZXZlcmFsIGRpc2FibGVkIGZvciBzZWN1cml0eSByZWFzb25zOiBTaW5jZSA3LjE5LjQgRklMRSBhbmQgU0NQIGFyZQorZGlzYWJsZWQsIGFuZCBzaW5jZSA3LjQwLjAgU01CIGFuZCBTTUJTIGFyZSBhbHNvIGRpc2FibGVkLgorCitBIHJlZGlyZWN0IHRvIGEgZmlsZTogVVJMIHdvdWxkIGNhdXNlIHRoZSBsaWJjdXJsIHRvIHJlYWQgKG9yIHdyaXRlKSBhcmJpdHJhcnkKK2ZpbGVzIGZyb20gdGhlIGxvY2FsIGZpbGVzeXN0ZW0uICBJZiB0aGUgYXBwbGljYXRpb24gcmV0dXJucyB0aGUgZGF0YSBiYWNrIHRvCit0aGUgdXNlciAoYXMgd291bGQgaGFwcGVuIGluIHNvbWUga2luZHMgb2YgQ0dJIHNjcmlwdHMpLCBhbiBhdHRhY2tlciBjb3VsZAorbGV2ZXJhZ2UgdGhpcyB0byByZWFkIG90aGVyd2lzZSBmb3JiaWRkZW4gZGF0YSAoZS5nLgorZmlsZTovL2xvY2FsaG9zdC9ldGMvcGFzc3dkKS4KIAogSWYgYXV0aGVudGljYXRpb24gY3JlZGVudGlhbHMgYXJlIHN0b3JlZCBpbiB0aGUgfi8ubmV0cmMgZmlsZSwgb3IgS2VyYmVyb3MKIGlzIGluIHVzZSwgYW55IG90aGVyIFVSTCB0eXBlIChub3QganVzdCBmaWxlOikgdGhhdCByZXF1aXJlcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL2xpYmN1cmwuMyBiL2RvY3MvbGliY3VybC9saWJjdXJsLjMKaW5kZXggMzliY2NjZC4uNjYxODczNCAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL2xpYmN1cmwuMworKysgYi9kb2NzL2xpYmN1cmwvbGliY3VybC4zCkBAIC01LDExICs1LDExIEBACiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAuXCIgKgotLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtOTcsOCArOTcsOCBAQAogb2Z0ZW4gZG9uJ3QgcHJvdmlkZSB0aGUgY3VybC1jb25maWcgdG9vbCwgYnV0IHNpbXBseSBpbnN0YWxsIHRoZSBsaWJyYXJ5IGFuZAogaGVhZGVycyBpbiB0aGUgY29tbW9uIHBhdGggZm9yIHRoaXMgcHVycG9zZS4KIAotTWFueSBMaW51eCBhbmQgc2ltaWxhciBzeXRlbXMgdXNlIHBrZy1jb25maWcgdG8gcHJvdmlkZSBidWlsZCBhbmQgbGluayBvcHRpb25zCi1hYm91dCBsaWJyYXJpZXMgYW5kIGxpYmN1cmwgc3VwcG9ydHMgdGhhdCBhcyB3ZWxsLgorTWFueSBMaW51eCBhbmQgc2ltaWxhciBzeXN0ZW1zIHVzZSBwa2ctY29uZmlnIHRvIHByb3ZpZGUgYnVpbGQgYW5kIGxpbmsKK29wdGlvbnMgYWJvdXQgbGlicmFyaWVzIGFuZCBsaWJjdXJsIHN1cHBvcnRzIHRoYXQgYXMgd2VsbC4KIC5TSCAiTElCQ1VSTCBTWU1CT0wgTkFNRVMiCiBBbGwgcHVibGljIGZ1bmN0aW9ucyBpbiB0aGUgbGliY3VybCBpbnRlcmZhY2UgYXJlIHByZWZpeGVkIHdpdGggJ2N1cmxfJyAod2l0aAogYSBsb3dlcmNhc2UgYykuIFlvdSBjYW4gZmluZCBvdGhlciBmdW5jdGlvbnMgaW4gdGhlIGxpYnJhcnkgc291cmNlIGNvZGUsIGJ1dApAQCAtMTExLDEzICsxMTEsOCBAQAogLkIgZXhhY3RseQogdGhlIHNhbWUsIG9uIGFueSBvZiB0aGUgcGxhdGZvcm1zIGl0IGNvbXBpbGVzIGFuZCBidWlsZHMgb24uCiAuU0ggIlRIUkVBRFMiCi1OZXZlciBldmVyIGNhbGwgY3VybC1mdW5jdGlvbnMgc2ltdWx0YW5lb3VzbHkgdXNpbmcgdGhlIHNhbWUgaGFuZGxlIGZyb20KLXNldmVyYWwgdGhyZWFkcy4gbGliY3VybCBpcyB0aHJlYWQtc2FmZSBhbmQgY2FuIGJlIHVzZWQgaW4gYW55IG51bWJlciBvZgotdGhyZWFkcywgYnV0IHlvdSBtdXN0IHVzZSBzZXBhcmF0ZSBjdXJsIGhhbmRsZXMgaWYgeW91IHdhbnQgdG8gdXNlIGxpYmN1cmwgaW4KLW1vcmUgdGhhbiBvbmUgdGhyZWFkIHNpbXVsdGFuZW91c2x5LgotCi1UaGUgZ2xvYmFsIGVudmlyb25tZW50IGZ1bmN0aW9ucyBhcmUgbm90IHRocmVhZC1zYWZlLiAgU2VlIFxmQkdMT0JBTAotQ09OU1RBTlRTXGZQIGJlbG93IGZvciBkZXRhaWxzLgorbGliY3VybCBpcyB0aHJlYWQgc2FmZSBidXQgdGhlcmUgYXJlIGEgZmV3IGV4Y2VwdGlvbnMuIFJlZmVyIHRvCitcZklsaWJjdXJsLXRocmVhZCgzKVxmUCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KIAogLlNIICJQRVJTSVNURU5UIENPTk5FQ1RJT05TIgogUGVyc2lzdGVudCBjb25uZWN0aW9ucyBtZWFucyB0aGF0IGxpYmN1cmwgY2FuIHJlLXVzZSB0aGUgc2FtZSBjb25uZWN0aW9uIGZvcgpAQCAtMTk5LDYgKzE5NCw5IEBACiBhdXRob3Igb2YgdGhpcyBsaWJjdXJsLXVzaW5nIG1vZHVsZSwgeW91IGNhbiBtYWtlIHRoZSBjb25zdHJ1Y3RvciBjYWxsCiBcZkljdXJsX2dsb2JhbF9pbml0KDMpXGZQIGFuZCB0aGUgZGVzdHJ1Y3RvciBjYWxsIFxmSWN1cmxfZ2xvYmFsX2NsZWFudXAoMylcZlAKIGFuZCBzYXRpc2Z5IGxpYmN1cmwncyByZXF1aXJlbWVudHMgd2l0aG91dCB5b3VyIHVzZXIgaGF2aW5nIHRvIHRoaW5rIGFib3V0IGl0LgorKENhdmVhdDogSWYgeW91IGFyZSBpbml0aWFsaXppbmcgbGliY3VybCBmcm9tIGEgV2luZG93cyBETEwgeW91IHNob3VsZCBub3QKK2luaXRpYWxpemUgaXQgZnJvbSBEbGxNYWluIG9yIGEgc3RhdGljIGluaXRpYWxpemVyIGJlY2F1c2UgV2luZG93cyBob2xkcyB0aGUKK2xvYWRlciBsb2NrIGR1cmluZyB0aGF0IHRpbWUgYW5kIGl0IGNvdWxkIGNhdXNlIGEgZGVhZGxvY2suKQogCiBcZkljdXJsX2dsb2JhbF9pbml0KDMpXGZQIGhhcyBhbiBhcmd1bWVudCB0aGF0IHRlbGxzIHdoYXQgcGFydGljdWxhciBwYXJ0cyBvZgogdGhlIGdsb2JhbCBjb25zdGFudCBlbnZpcm9ubWVudCB0byBzZXQgdXAuICBJbiBvcmRlciB0byBzdWNjZXNzZnVsbHkgdXNlIGFueQpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL2xpYmN1cmwubTQgYi9kb2NzL2xpYmN1cmwvbGliY3VybC5tNAppbmRleCAyY2YzZWRkLi41M2Q2OTRkIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvbGliY3VybC5tNAorKysgYi9kb2NzL2xpYmN1cmwvbGliY3VybC5tNApAQCAtOSw3ICs5LDcgQEAKICMKICMgVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICMgeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICMKICMgWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAjIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtODIsNyArODIsNyBAQAogICBBSF9URU1QTEFURShbTElCQ1VSTF9QUk9UT0NPTF9TTVRQXSxbRGVmaW5lZCBpZiBsaWJjdXJsIHN1cHBvcnRzIFNNVFBdKQogCiAgIEFDX0FSR19XSVRIKGxpYmN1cmwsCi0gICAgIEFDX0hFTFBfU1RSSU5HKFstLXdpdGgtbGliY3VybD1QUkVGSVhdLFtsb29rIGZvciB0aGUgY3VybCBsaWJyYXJ5IGluIFBSRUZJWC9saWIgYW5kIGhlYWRlcnMgaW4gUFJFRklYL2luY2x1ZGVdKSwKKyAgICAgQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1saWJjdXJsPVBSRUZJWF0sW2xvb2sgZm9yIHRoZSBjdXJsIGxpYnJhcnkgaW4gUFJFRklYL2xpYiBhbmQgaGVhZGVycyBpbiBQUkVGSVgvaW5jbHVkZV0pLAogICAgICBbX2xpYmN1cmxfd2l0aD0kd2l0aHZhbF0sW19saWJjdXJsX3dpdGg9aWZlbHNlKFskMV0sLFt5ZXNdLFskMV0pXSkKIAogICBpZiB0ZXN0ICIkX2xpYmN1cmxfd2l0aCIgIT0gIm5vIiA7IHRoZW4KQEAgLTE3OCw3ICsxNzgsNyBAQAogeD1DVVJMT1BUX0VSUk9SQlVGRkVSOwogeD1DVVJMT1BUX1NUREVSUjsKIHg9Q1VSTE9QVF9WRVJCT1NFOwotaWYgKHgpIDsKK2lmICh4KSB7O30KIF1dKV0sbGliY3VybF9jdl9saWJfY3VybF91c2FibGU9eWVzLGxpYmN1cmxfY3ZfbGliX2N1cmxfdXNhYmxlPW5vKQogCiAgICAgICAgICAgIENQUEZMQUdTPSRfbGliY3VybF9zYXZlX2NwcGZsYWdzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvbWtzeW1ib2xzbWFucGFnZS5wbCBiL2RvY3MvbGliY3VybC9ta3N5bWJvbHNtYW5wYWdlLnBsCmluZGV4IDFiY2E0ZDAuLjIxMDUzYzQgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9ta3N5bWJvbHNtYW5wYWdlLnBsCisrKyBiL2RvY3MvbGliY3VybC9ta3N5bWJvbHNtYW5wYWdlLnBsCkBAIC0xMCw3ICsxMCw3IEBACiAjICoKICMgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogIyAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSMgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorIyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogIyAqCiAjICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAjICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zOSw3ICszOSw3IEBACiAuXFwiICoKIC5cXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlxcIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlxcIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlxcIiAqCiAuXFwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXFwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19BQ1RJVkVTT0NLRVQuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX0FDVElWRVNPQ0tFVC4zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4OTZkMTUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19BQ1RJVkVTT0NLRVQuMwpAQCAtMCwwICsxLDUxIEBACisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKy5cIiAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorLlwiICoKKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKy5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICoKKy5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisuXCIgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKy5cIiAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisuXCIgKgorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIKKy5USCBDVVJMSU5GT19BQ1RJVkVTT0NLRVQgMyAiMTIgU2VwIDIwMTUiICJsaWJjdXJsIDcuNDQuMCIgImN1cmxfZWFzeV9nZXRpbmZvIG9wdGlvbnMiCisuU0ggTkFNRQorQ1VSTElORk9fQUNUSVZFU09DS0VUIFwtIGdldCB0aGUgYWN0aXZlIHNvY2tldAorLlNIIFNZTk9QU0lTCisjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CisKK0NVUkxjb2RlIGN1cmxfZWFzeV9nZXRpbmZvKENVUkwgKmhhbmRsZSwgQ1VSTElORk9fQUNUSVZFU09DS0VULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VybF9zb2NrZXRfdCAqc29ja2V0KTsKKy5TSCBERVNDUklQVElPTgorUGFzcyBhIHBvaW50ZXIgdG8gYSBjdXJsX3NvY2tldF90IHRvIHJlY2VpdmUgdGhlIGFjdGl2ZSBzb2NrZXQgdXNlZCBieSB0aGlzCitjdXJsIHNlc3Npb24uIElmIHRoZSBzb2NrZXQgaXMgbm8gbG9uZ2VyIHZhbGlkLCBcZklDVVJMX1NPQ0tFVF9CQURcZlAgaXMKK3JldHVybmVkLiBXaGVuIHlvdSBmaW5pc2ggd29ya2luZyB3aXRoIHRoZSBzb2NrZXQsIHlvdSBtdXN0IGNhbGwKK1xmSWN1cmxfZWFzeV9jbGVhbnVwKDMpXGZQIGFzIHVzdWFsIG9uIHRoZSBlYXN5IGhhbmRsZSBhbmQgbGV0IGxpYmN1cmwgY2xvc2UKK3RoZSBzb2NrZXQgYW5kIGNsZWFudXAgb3RoZXIgcmVzb3VyY2VzIGFzc29jaWF0ZWQgd2l0aCB0aGUgaGFuZGxlLiBUaGlzIGlzCit0eXBpY2FsbHkgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIFxmSUNVUkxPUFRfQ09OTkVDVF9PTkxZKDMpXGZQLgorCitUaGlzIG9wdGlvbiB3YXMgYWRkZWQgYXMgYSByZXBsYWNlbWVudCBmb3IgXGZJQ1VSTElORk9fTEFTVFNPQ0tFVCgzKVxmUCBzaW5jZQordGhhdCBvbmUgaXNuJ3Qgd29ya2luZyBvbiBhbGwgcGxhdGZvcm1zLgorLlNIIFBST1RPQ09MUworQWxsCisuU0ggRVhBTVBMRQorVE9ETworLlNIIEFWQUlMQUJJTElUWQorQWRkZWQgaW4gNy40NS4wCisuU0ggUkVUVVJOIFZBTFVFCitSZXR1cm5zIENVUkxFX09LIGlmIHRoZSBvcHRpb24gaXMgc3VwcG9ydGVkLCBhbmQgQ1VSTEVfVU5LTk9XTl9PUFRJT04gaWYgbm90LgorLlNIICJTRUUgQUxTTyIKKy5CUiBjdXJsX2Vhc3lfZ2V0aW5mbyAiKDMpLCAiIGN1cmxfZWFzeV9zZXRvcHQgIigzKSwgIgorLkJSIENVUkxJTkZPX0xBU1RTT0NLRVQgIigzKSwgIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fQVBQQ09OTkVDVF9USU1FLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19BUFBDT05ORUNUX1RJTUUuMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kY2ViOThiCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fQVBQQ09OTkVDVF9USU1FLjMKQEAgLTAsMCArMSw0NyBAQAorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisuXCIgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKy5cIiAqCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqCisuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKy5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworLlwiICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisuXCIgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLlwiICoKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiCisuVEggQ1VSTElORk9fQVBQQ09OTkVDVF9USU1FIDMgIjI4IEF1ZyAyMDE1IiAibGliY3VybCA3LjQ0LjAiICJjdXJsX2Vhc3lfZ2V0aW5mbyBvcHRpb25zIgorLlNIIE5BTUUKK0NVUkxJTkZPX0FQUENPTk5FQ1RfVElNRSBcLSBnZXQgdGhlIHRpbWUgdW50aWwgdGhlIFNTTC9TU0ggaGFuZHNoYWtlIGlzIGNvbXBsZXRlZAorLlNIIFNZTk9QU0lTCisjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CisKK0NVUkxjb2RlIGN1cmxfZWFzeV9nZXRpbmZvKENVUkwgKmhhbmRsZSwgQ1VSTElORk9fQVBQQ09OTkVDVF9USU1FLCBkb3VibGUgKnRpbWVwKTsKKy5TSCBERVNDUklQVElPTgorUGFzcyBhIHBvaW50ZXIgdG8gYSBkb3VibGUgdG8gcmVjZWl2ZSB0aGUgdGltZSwgaW4gc2Vjb25kcywgaXQgdG9vayBmcm9tIHRoZQorc3RhcnQgdW50aWwgdGhlIFNTTC9TU0ggY29ubmVjdC9oYW5kc2hha2UgdG8gdGhlIHJlbW90ZSBob3N0IHdhcyBjb21wbGV0ZWQuCitUaGlzIHRpbWUgaXMgbW9zdCBvZnRlbiB2ZXJ5IG5lYXIgdG8gdGhlIFxmSUNVUkxJTkZPX1BSRVRSQU5TRkVSX1RJTUUoMylcZlAKK3RpbWUsIGV4Y2VwdCBmb3IgY2FzZXMgc3VjaCBhcyBIVFRQIHBpcGVsaW5pbmcgd2hlcmUgdGhlIHByZXRyYW5zZmVyIHRpbWUgY2FuCitiZSBkZWxheWVkIGR1ZSB0byB3YWl0cyBpbiBsaW5lIGZvciB0aGUgcGlwZWxpbmUgYW5kIG1vcmUuCisKK1NlZSBhbHNvIHRoZSBUSU1FUyBvdmVydmlldyBpbiB0aGUgXGZJY3VybF9lYXN5X2dldGluZm8oMylcZlAgbWFuIHBhZ2UuCisuU0ggUFJPVE9DT0xTCitBbGwKKy5TSCBFWEFNUExFCitUT0RPCisuU0ggQVZBSUxBQklMSVRZCitBZGRlZCBpbiA3LjE5LjAKKy5TSCBSRVRVUk4gVkFMVUUKK1JldHVybnMgQ1VSTEVfT0sgaWYgdGhlIG9wdGlvbiBpcyBzdXBwb3J0ZWQsIGFuZCBDVVJMRV9VTktOT1dOX09QVElPTiBpZiBub3QuCisuU0ggIlNFRSBBTFNPIgorLkJSIGN1cmxfZWFzeV9nZXRpbmZvICIoMyksICIgY3VybF9lYXN5X3NldG9wdCAiKDMpLCAiCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19DRVJUSU5GTy4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fQ0VSVElORk8uMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNzZkYWE3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fQ0VSVElORk8uMwpAQCAtMCwwICsxLDUxIEBACisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKy5cIiAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorLlwiICoKKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKy5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICoKKy5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisuXCIgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKy5cIiAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisuXCIgKgorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIKKy5USCBDVVJMSU5GT19DRVJUSU5GTyAzICIxMiBTZXAgMjAxNSIgImxpYmN1cmwgNy40NC4wIiAiY3VybF9lYXN5X2dldGluZm8gb3B0aW9ucyIKKy5TSCBOQU1FCitDVVJMSU5GT19DRVJUSU5GTyBcLSBnZXQgdGhlIFRMUyBjZXJ0aWZpY2F0ZSBjaGFpbgorLlNIIFNZTk9QU0lTCisjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CisKK0NVUkxjb2RlIGN1cmxfZWFzeV9nZXRpbmZvKENVUkwgKmhhbmRsZSwgQ1VSTElORk9fQ0VSVElORk8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY3VybF9jZXJ0aW5mbyAqY2hhaW5wKTsKKy5TSCBERVNDUklQVElPTgorUGFzcyBhIHBvaW50ZXIgdG8gYSAnc3RydWN0IGN1cmxfY2VydGluZm8gKicgYW5kIHlvdSdsbCBnZXQgaXQgc2V0IHRvIHBvaW50IHRvCitzdHJ1Y3QgdGhhdCBob2xkcyBhIG51bWJlciBvZiBsaW5rZWQgbGlzdHMgd2l0aCBpbmZvIGFib3V0IHRoZSBjZXJ0aWZpY2F0ZQorY2hhaW4sIGFzc3VtaW5nIHlvdSBoYWQgXGZJQ1VSTE9QVF9DRVJUSU5GTygzKVxmUCBlbmFibGVkIHdoZW4gdGhlIHJlcXVlc3Qgd2FzCittYWRlLiBUaGUgc3RydWN0IHJlcG9ydHMgaG93IG1hbnkgY2VydHMgaXQgZm91bmQgYW5kIHRoZW4geW91IGNhbiBleHRyYWN0IGluZm8KK2ZvciBlYWNoIG9mIHRob3NlIGNlcnRzIGJ5IGZvbGxvd2luZyB0aGUgbGlua2VkIGxpc3RzLiBUaGUgaW5mbyBjaGFpbiBpcworcHJvdmlkZWQgaW4gYSBzZXJpZXMgb2YgZGF0YSBpbiB0aGUgZm9ybWF0ICJuYW1lOmNvbnRlbnQiIHdoZXJlIHRoZSBjb250ZW50IGlzCitmb3IgdGhlIHNwZWNpZmljIG5hbWVkIGRhdGEuIFNlZSBhbHNvIHRoZSBjZXJ0aW5mby5jIGV4YW1wbGUuCisuU0ggUFJPVE9DT0xTCitBbGwgVExTLWJhc2VkCisuU0ggRVhBTVBMRQorVE9ETworLlNIIEFWQUlMQUJJTElUWQorVGhpcyBvcHRpb24gaXMgb25seSB3b3JraW5nIGluIGxpYmN1cmwgYnVpbHQgd2l0aCBPcGVuU1NMLCBOU1Mgb3IgR1NLaXQKK3N1cHBvcnQuCisKK0FkZGVkIGluIDcuMTkuMQorLlNIIFJFVFVSTiBWQUxVRQorUmV0dXJucyBDVVJMRV9PSyBpZiB0aGUgb3B0aW9uIGlzIHN1cHBvcnRlZCwgYW5kIENVUkxFX1VOS05PV05fT1BUSU9OIGlmIG5vdC4KKy5TSCAiU0VFIEFMU08iCisuQlIgY3VybF9lYXN5X2dldGluZm8gIigzKSwgIiBjdXJsX2Vhc3lfc2V0b3B0ICIoMyksICIKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX0NPTkRJVElPTl9VTk1FVC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fQ09ORElUSU9OX1VOTUVULjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDUyYzI2MQotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX0NPTkRJVElPTl9VTk1FVC4zCkBAIC0wLDAgKzEsNDUgQEAKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworLlwiICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisuXCIgKgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAorLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcworLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKgorLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCisuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKy5cIiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQorLlwiICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy5cIiAqCisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIgorLlRIIENVUkxJTkZPX0NPTkRJVElPTl9VTk1FVCAzICIxIFNlcCAyMDE1IiAibGliY3VybCA3LjQ0LjAiICJjdXJsX2Vhc3lfZ2V0aW5mbyBvcHRpb25zIgorLlNIIE5BTUUKK0NVUkxJTkZPX0NPTkRJVElPTl9VTk1FVCBcLSBnZXQgaW5mbyBvbiB1bm1ldCB0aW1lIGNvbmRpdGlvbmFsCisuU0ggU1lOT1BTSVMKKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKworQ1VSTGNvZGUgY3VybF9lYXN5X2dldGluZm8oQ1VSTCAqaGFuZGxlLCBDVVJMSU5GT19DT05ESVRJT05fVU5NRVQsIGxvbmcgKnVubWV0KTsKKy5TSCBERVNDUklQVElPTgorUGFzcyBhIHBvaW50ZXIgdG8gYSBsb25nIHRvIHJlY2VpdmUgdGhlIG51bWJlciAxIGlmIHRoZSBjb25kaXRpb24gcHJvdmlkZWQgaW4KK3RoZSBwcmV2aW91cyByZXF1ZXN0IGRpZG4ndCBtYXRjaCAoc2VlIFxmSUNVUkxPUFRfVElNRUNPTkRJVElPTigzKVxmUCkuIEFsYXMsCitpZiB0aGlzIHJldHVybnMgYSAxIHlvdSBrbm93IHRoYXQgdGhlIHJlYXNvbiB5b3UgZGlkbid0IGdldCBkYXRhIGluIHJldHVybiBpcworYmVjYXVzZSBpdCBkaWRuJ3QgZnVsZmlsbCB0aGUgY29uZGl0aW9uLiBUaGUgbG9uZyB0aHMgYXJndW1lbnQgcG9pbnRzIHRvIHdpbGwKK2dldCBhIHplcm8gc3RvcmVkIGlmIHRoZSBjb25kaXRpb24gaW5zdGVhZCB3YXMgbWV0LgorLlNIIFBST1RPQ09MUworSFRUUCBhbmQgc29tZQorLlNIIEVYQU1QTEUKK1RPRE8KKy5TSCBBVkFJTEFCSUxJVFkKK0FkZGVkIGluIDcuMTkuNAorLlNIIFJFVFVSTiBWQUxVRQorUmV0dXJucyBDVVJMRV9PSyBpZiB0aGUgb3B0aW9uIGlzIHN1cHBvcnRlZCwgYW5kIENVUkxFX1VOS05PV05fT1BUSU9OIGlmIG5vdC4KKy5TSCAiU0VFIEFMU08iCisuQlIgY3VybF9lYXN5X2dldGluZm8gIigzKSwgIiBjdXJsX2Vhc3lfc2V0b3B0ICIoMyksICIKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX0NPTk5FQ1RfVElNRS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fQ09OTkVDVF9USU1FLjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWI2M2UyMwotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX0NPTk5FQ1RfVElNRS4zCkBAIC0wLDAgKzEsNDQgQEAKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworLlwiICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisuXCIgKgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAorLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcworLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKgorLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCisuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKy5cIiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQorLlwiICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy5cIiAqCisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIgorLlRIIENVUkxJTkZPX0NPTk5FQ1RfVElNRSAzICIyOCBBdWcgMjAxNSIgImxpYmN1cmwgNy40NC4wIiAiY3VybF9lYXN5X2dldGluZm8gb3B0aW9ucyIKKy5TSCBOQU1FCitDVVJMSU5GT19DT05ORUNUX1RJTUUgXC0gZ2V0IHRoZSB0aW1lIHVudGlsIGNvbm5lY3QKKy5TSCBTWU5PUFNJUworI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCitDVVJMY29kZSBjdXJsX2Vhc3lfZ2V0aW5mbyhDVVJMICpoYW5kbGUsIENVUkxJTkZPX0NPTk5FQ1RfVElNRSwgZG91YmxlICp0aW1lcCk7CisuU0ggREVTQ1JJUFRJT04KK1Bhc3MgYSBwb2ludGVyIHRvIGEgZG91YmxlIHRvIHJlY2VpdmUgdGhlIHRvdGFsIHRpbWUgaW4gc2Vjb25kcyBmcm9tIHRoZSBzdGFydAordW50aWwgdGhlIGNvbm5lY3Rpb24gdG8gdGhlIHJlbW90ZSBob3N0IChvciBwcm94eSkgd2FzIGNvbXBsZXRlZC4KKworU2VlIGFsc28gdGhlIFRJTUVTIG92ZXJ2aWV3IGluIHRoZSBcZkljdXJsX2Vhc3lfZ2V0aW5mbygzKVxmUCBtYW4gcGFnZS4KKy5TSCBQUk9UT0NPTFMKK0FsbAorLlNIIEVYQU1QTEUKK1RPRE8KKy5TSCBBVkFJTEFCSUxJVFkKK0FkZGVkIGluIDcuNC4xCisuU0ggUkVUVVJOIFZBTFVFCitSZXR1cm5zIENVUkxFX09LIGlmIHRoZSBvcHRpb24gaXMgc3VwcG9ydGVkLCBhbmQgQ1VSTEVfVU5LTk9XTl9PUFRJT04gaWYgbm90LgorLlNIICJTRUUgQUxTTyIKKy5CUiBjdXJsX2Vhc3lfZ2V0aW5mbyAiKDMpLCAiIGN1cmxfZWFzeV9zZXRvcHQgIigzKSwgIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fQ09OVEVOVF9MRU5HVEhfRE9XTkxPQUQuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX0NPTlRFTlRfTEVOR1RIX0RPV05MT0FELjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzExZjMxMwotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX0NPTlRFTlRfTEVOR1RIX0RPV05MT0FELjMKQEAgLTAsMCArMSw0NSBAQAorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisuXCIgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKy5cIiAqCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqCisuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKy5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworLlwiICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisuXCIgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLlwiICoKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiCisuVEggQ1VSTElORk9fQ09OVEVOVF9MRU5HVEhfRE9XTkxPQUQgMyAiMSBTZXAgMjAxNSIgImxpYmN1cmwgNy40NC4wIiAiY3VybF9lYXN5X2dldGluZm8gb3B0aW9ucyIKKy5TSCBOQU1FCitDVVJMSU5GT19DT05URU5UX0xFTkdUSF9ET1dOTE9BRCBcLSBnZXQgY29udGVudC1sZW5ndGggb2YgZG93bmxvYWQKKy5TSCBTWU5PUFNJUworI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCitDVVJMY29kZSBjdXJsX2Vhc3lfZ2V0aW5mbyhDVVJMICpoYW5kbGUsIENVUkxJTkZPX0NPTlRFTlRfTEVOR1RIX0RPV05MT0FELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlICpjb250ZW50X2xlbmd0aCk7CisuU0ggREVTQ1JJUFRJT04KK1Bhc3MgYSBwb2ludGVyIHRvIGEgZG91YmxlIHRvIHJlY2VpdmUgdGhlIGNvbnRlbnQtbGVuZ3RoIG9mIHRoZSBkb3dubG9hZC4gVGhpcworaXMgdGhlIHZhbHVlIHJlYWQgZnJvbSB0aGUgQ29udGVudC1MZW5ndGg6IGZpZWxkLiBTaW5jZSA3LjE5LjQsIHRoaXMgcmV0dXJucworLTEgaWYgdGhlIHNpemUgaXNuJ3Qga25vd24uCisuU0ggUFJPVE9DT0xTCitIVFRQKFMpCisuU0ggRVhBTVBMRQorVE9ETworLlNIIEFWQUlMQUJJTElUWQorQWRkZWQgaW4gNy42LjEKKy5TSCBSRVRVUk4gVkFMVUUKK1JldHVybnMgQ1VSTEVfT0sgaWYgdGhlIG9wdGlvbiBpcyBzdXBwb3J0ZWQsIGFuZCBDVVJMRV9VTktOT1dOX09QVElPTiBpZiBub3QuCisuU0ggIlNFRSBBTFNPIgorLkJSIGN1cmxfZWFzeV9nZXRpbmZvICIoMyksICIgY3VybF9lYXN5X3NldG9wdCAiKDMpLCAiCisuQlIgQ1VSTElORk9fQ09OVEVOVF9MRU5HVEhfVVBMT0FEICIoMyksICIKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX0NPTlRFTlRfTEVOR1RIX1VQTE9BRC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fQ09OVEVOVF9MRU5HVEhfVVBMT0FELjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTQwZDVlYQotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX0NPTlRFTlRfTEVOR1RIX1VQTE9BRC4zCkBAIC0wLDAgKzEsNDMgQEAKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworLlwiICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisuXCIgKgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAorLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcworLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKgorLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCisuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKy5cIiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQorLlwiICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy5cIiAqCisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIgorLlRIIENVUkxJTkZPX0NPTlRFTlRfTEVOR1RIX1VQTE9BRCAzICIxIFNlcCAyMDE1IiAibGliY3VybCA3LjQ0LjAiICJjdXJsX2Vhc3lfZ2V0aW5mbyBvcHRpb25zIgorLlNIIE5BTUUKK0NVUkxJTkZPX0NPTlRFTlRfTEVOR1RIX1VQTE9BRCBcLSBnZXQgdGhlIHNwZWNpZmllZCBzaXplIG9mIHRoZSB1cGxvYWQKKy5TSCBTWU5PUFNJUworI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCitDVVJMY29kZSBjdXJsX2Vhc3lfZ2V0aW5mbyhDVVJMICpoYW5kbGUsIENVUkxJTkZPX0NPTlRFTlRfTEVOR1RIX1VQTE9BRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSAqY29udGVudF9sZW5ndGgpOworLlNIIERFU0NSSVBUSU9OCitQYXNzIGEgcG9pbnRlciB0byBhIGRvdWJsZSB0byByZWNlaXZlIHRoZSBzcGVjaWZpZWQgc2l6ZSBvZiB0aGUgdXBsb2FkLiAgU2luY2UKKzcuMTkuNCwgdGhpcyByZXR1cm5zIC0xIGlmIHRoZSBzaXplIGlzbid0IGtub3duLgorLlNIIFBST1RPQ09MUworQWxsCisuU0ggRVhBTVBMRQorVE9ETworLlNIIEFWQUlMQUJJTElUWQorQWRkZWQgaW4gNy42LjEKKy5TSCBSRVRVUk4gVkFMVUUKK1JldHVybnMgQ1VSTEVfT0sgaWYgdGhlIG9wdGlvbiBpcyBzdXBwb3J0ZWQsIGFuZCBDVVJMRV9VTktOT1dOX09QVElPTiBpZiBub3QuCisuU0ggIlNFRSBBTFNPIgorLkJSIGN1cmxfZWFzeV9nZXRpbmZvICIoMyksICIgY3VybF9lYXN5X3NldG9wdCAiKDMpLCAiCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19DT05URU5UX1RZUEUuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX0NPTlRFTlRfVFlQRS4zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1MzYwMDAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19DT05URU5UX1RZUEUuMwpAQCAtMCwwICsxLDQ4IEBACisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKy5cIiAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorLlwiICoKKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKy5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICoKKy5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisuXCIgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKy5cIiAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisuXCIgKgorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIKKy5USCBDVVJMSU5GT19DT05URU5UX1RZUEUgMyAiMSBTZXAgMjAxNSIgImxpYmN1cmwgNy40NC4wIiAiY3VybF9lYXN5X2dldGluZm8gb3B0aW9ucyIKKy5TSCBOQU1FCitDVVJMSU5GT19DT05URU5UX1RZUEUgXC0gZ2V0IENvbnRlbnQtVHlwZQorLlNIIFNZTk9QU0lTCisjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CisKK0NVUkxjb2RlIGN1cmxfZWFzeV9nZXRpbmZvKENVUkwgKmhhbmRsZSwgQ1VSTElORk9fQ09OVEVOVF9UWVBFLCBjaGFyICoqY3QpOworLlNIIERFU0NSSVBUSU9OCitQYXNzIGEgcG9pbnRlciB0byBhIGNoYXIgcG9pbnRlciB0byByZWNlaXZlIHRoZSBjb250ZW50LXR5cGUgb2YgdGhlIGRvd25sb2FkZWQKK29iamVjdC4gVGhpcyBpcyB0aGUgdmFsdWUgcmVhZCBmcm9tIHRoZSBDb250ZW50LVR5cGU6IGZpZWxkLiBJZiB5b3UgZ2V0IE5VTEwsCitpdCBtZWFucyB0aGF0IHRoZSBzZXJ2ZXIgZGlkbid0IHNlbmQgYSB2YWxpZCBDb250ZW50LVR5cGUgaGVhZGVyIG9yIHRoYXQgdGhlCitwcm90b2NvbCB1c2VkIGRvZXNuJ3Qgc3VwcG9ydCB0aGlzLgorCitUaGUgXGZCY3RcZlAgcG9pbnRlciB3aWxsIGJlIE5VTEwgb3IgcG9pbnRpbmcgdG8gcHJpdmF0ZSBtZW1vcnkgeW91IE1VU1QgTk9UCitmcmVlIGl0IC0gaXQgZ2V0cyBmcmVlZCB3aGVuIHlvdSBjYWxsIFxmSWN1cmxfZWFzeV9jbGVhbnVwKDMpXGZQIG9uIHRoZQorY29ycmVzcG9uZGluZyBDVVJMIGhhbmRsZS4KKy5TSCBQUk9UT0NPTFMKK0hUVFAoUykKKy5TSCBFWEFNUExFCitUT0RPCisuU0ggQVZBSUxBQklMSVRZCitBZGRlZCBpbiA3LjkuNAorLlNIIFJFVFVSTiBWQUxVRQorUmV0dXJucyBDVVJMRV9PSyBpZiB0aGUgb3B0aW9uIGlzIHN1cHBvcnRlZCwgYW5kIENVUkxFX1VOS05PV05fT1BUSU9OIGlmIG5vdC4KKy5TSCAiU0VFIEFMU08iCisuQlIgY3VybF9lYXN5X2dldGluZm8gIigzKSwgIiBjdXJsX2Vhc3lfc2V0b3B0ICIoMyksICIKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX0NPT0tJRUxJU1QuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX0NPT0tJRUxJU1QuMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjFmZDk4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fQ09PS0lFTElTVC4zCkBAIC0wLDAgKzEsNTAgQEAKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworLlwiICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisuXCIgKgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAorLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcworLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKgorLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCisuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKy5cIiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQorLlwiICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy5cIiAqCisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIgorLlRIIENVUkxJTkZPX0NPT0tJRUxJU1QgMyAiMSBTZXAgMjAxNSIgImxpYmN1cmwgNy40NC4wIiAiY3VybF9lYXN5X2dldGluZm8gb3B0aW9ucyIKKy5TSCBOQU1FCitDVVJMSU5GT19DT09LSUVMSVNUIFwtIGdldCBhbGwga25vd24gY29va2llcworLlNIIFNZTk9QU0lTCisjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CisKK0NVUkxjb2RlIGN1cmxfZWFzeV9nZXRpbmZvKENVUkwgKmhhbmRsZSwgQ1VSTElORk9fQ09PS0lFTElTVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjdXJsX3NsaXN0ICoqY29va2llcyk7CisuU0ggREVTQ1JJUFRJT04KK1Bhc3MgYSBwb2ludGVyIHRvIGEgJ3N0cnVjdCBjdXJsX3NsaXN0IConIHRvIHJlY2VpdmUgYSBsaW5rZWQtbGlzdCBvZiBhbGwKK2Nvb2tpZXMgY1VSTCBrbm93cyAoZXhwaXJlZCBvbmVzLCB0b28pLiBEb24ndCBmb3JnZXQgdG8gY2FsbAorXGZJY3VybF9zbGlzdF9mcmVlX2FsbCgzKVxmUCBvbiB0aGUgbGlzdCBhZnRlciBpdCBoYXMgYmVlbiB1c2VkLiAgSWYgdGhlcmUgYXJlCitubyBjb29raWVzIChjb29raWVzIGZvciB0aGUgaGFuZGxlIGhhdmUgbm90IGJlZW4gZW5hYmxlZCBvciBzaW1wbHkgbm9uZSBoYXZlCitiZWVuIHJlY2VpdmVkKSAnc3RydWN0IGN1cmxfc2xpc3QgKicgd2lsbCBiZSBzZXQgdG8gcG9pbnQgdG8gTlVMTC4KKworU2luY2UgNy40My4wIGNvb2tpZXMgdGhhdCB3ZXJlIGltcG9ydGVkIGluIHRoZSBTZXQtQ29va2llIGZvcm1hdCB3aXRob3V0IGEKK2RvbWFpbiBuYW1lIGFyZSBub3QgZXhwb3J0ZWQgYnkgdGhpcyBvcHRpb24uCisuU0ggUFJPVE9DT0xTCitIVFRQKFMpCisuU0ggRVhBTVBMRQorVE9ETworLlNIIEFWQUlMQUJJTElUWQorQWRkZWQgaW4gNy4xNC4xCisuU0ggUkVUVVJOIFZBTFVFCitSZXR1cm5zIENVUkxFX09LIGlmIHRoZSBvcHRpb24gaXMgc3VwcG9ydGVkLCBhbmQgQ1VSTEVfVU5LTk9XTl9PUFRJT04gaWYgbm90LgorLlNIICJTRUUgQUxTTyIKKy5CUiBjdXJsX2Vhc3lfZ2V0aW5mbyAiKDMpLCAiIGN1cmxfZWFzeV9zZXRvcHQgIigzKSwgIgorLkJSIENVUkxPUFRfQ09PS0lFTElTVCAiKDMpLCAiCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19FRkZFQ1RJVkVfVVJMLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19FRkZFQ1RJVkVfVVJMLjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzQyZmQ1ZAotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX0VGRkVDVElWRV9VUkwuMwpAQCAtMCwwICsxLDQ4IEBACisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKy5cIiAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorLlwiICoKKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKy5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICoKKy5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisuXCIgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKy5cIiAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisuXCIgKgorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIKKy5USCBDVVJMSU5GT19FRkZFQ1RJVkVfVVJMIDMgIjI4IEF1ZyAyMDE1IiAibGliY3VybCA3LjQ0LjAiICJjdXJsX2Vhc3lfZ2V0aW5mbyBvcHRpb25zIgorLlNIIE5BTUUKK0NVUkxJTkZPX0VGRkVDVElWRV9VUkwgXC0gZ2V0IHRoZSBsYXN0IHVzZWQgVVJMCisuU0ggU1lOT1BTSVMKKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKworQ1VSTGNvZGUgY3VybF9lYXN5X2dldGluZm8oQ1VSTCAqaGFuZGxlLCBDVVJMSU5GT19FRkZFQ1RJVkVfVVJMLCBjaGFyICoqdXJscCk7CisuU0ggREVTQ1JJUFRJT04KK1Bhc3MgaW4gYSBwb2ludGVyIHRvIGEgY2hhciBwb2ludGVyIGFuZCBnZXQgdGhlIGxhc3QgdXNlZCBlZmZlY3RpdmUgVVJMLgorCitJbiBjYXNlcyB3aGVuIHlvdSd2ZSBhc2tlZCBsaWJjdXJsIHRvIGZvbGxvdyByZWRpcmVjdHMsIGl0IG1heSB2ZXJ5IHdlbGwgbm90CitiZSB0aGUgc2FtZSB2YWx1ZSB5b3Ugc2V0IHdpdGggXGZJQ1VSTE9QVF9VUkwoMylcZlAuCisKK1RoZSBcZkJ1cmxwXGZQIHBvaW50ZXIgd2lsbCBiZSBOVUxMIG9yIHBvaW50aW5nIHRvIHByaXZhdGUgbWVtb3J5IHlvdSBNVVNUIE5PVAorZnJlZSAtIGl0IGdldHMgZnJlZWQgd2hlbiB5b3UgY2FsbCBcZkljdXJsX2Vhc3lfY2xlYW51cCgzKVxmUCBvbiB0aGUKK2NvcnJlc3BvbmRpbmcgQ1VSTCBoYW5kbGUuCisuU0ggUFJPVE9DT0xTCitIVFRQKFMpCisuU0ggRVhBTVBMRQorVE9ETworLlNIIEFWQUlMQUJJTElUWQorQWRkZWQgaW4gNy40CisuU0ggUkVUVVJOIFZBTFVFCitSZXR1cm5zIENVUkxFX09LIGlmIHRoZSBvcHRpb24gaXMgc3VwcG9ydGVkLCBhbmQgQ1VSTEVfVU5LTk9XTl9PUFRJT04gaWYgbm90LgorLlNIICJTRUUgQUxTTyIKKy5CUiBjdXJsX2Vhc3lfZ2V0aW5mbyAiKDMpLCAiIGN1cmxfZWFzeV9zZXRvcHQgIigzKSwgIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fRklMRVRJTUUuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX0ZJTEVUSU1FLjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODQwOTNlYgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX0ZJTEVUSU1FLjMKQEAgLTAsMCArMSw0OSBAQAorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisuXCIgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKy5cIiAqCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqCisuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKy5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworLlwiICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisuXCIgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLlwiICoKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiCisuVEggQ1VSTElORk9fRklMRVRJTUUgMyAiMjggQXVnIDIwMTUiICJsaWJjdXJsIDcuNDQuMCIgImN1cmxfZWFzeV9nZXRpbmZvIG9wdGlvbnMiCisuU0ggTkFNRQorQ1VSTElORk9fRklMRVRJTUUgXC0gZ2V0IHRoZSByZW1vdGUgdGltZSBvZiB0aGUgcmV0cmlldmVkIGRvY3VtZW50CisuU0ggU1lOT1BTSVMKKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKworQ1VSTGNvZGUgY3VybF9lYXN5X2dldGluZm8oQ1VSTCAqaGFuZGxlLCBDVVJMSU5GT19GSUxFVElNRSwgbG9uZyAqdGltZXApOworLlNIIERFU0NSSVBUSU9OCitQYXNzIGEgcG9pbnRlciB0byBhIGxvbmcgdG8gcmVjZWl2ZSB0aGUgcmVtb3RlIHRpbWUgb2YgdGhlIHJldHJpZXZlZCBkb2N1bWVudAorKGluIG51bWJlciBvZiBzZWNvbmRzIHNpbmNlIDEgamFuIDE5NzAgaW4gdGhlIEdNVC9VVEMgdGltZSB6b25lKS4gSWYgeW91IGdldAorLTEsIGl0IGNhbiBiZSBiZWNhdXNlIG9mIG1hbnkgcmVhc29ucyAoaXQgbWlnaHQgYmUgdW5rbm93biwgdGhlIHNlcnZlciBtaWdodAoraGlkZSBpdCBvciB0aGUgc2VydmVyIGRvZXNuJ3Qgc3VwcG9ydCB0aGUgY29tbWFuZCB0aGF0IHRlbGxzIGRvY3VtZW50IHRpbWUKK2V0YykgYW5kIHRoZSB0aW1lIG9mIHRoZSBkb2N1bWVudCBpcyB1bmtub3duLgorCitOb3RlIHRoYXQgeW91IG11c3QgdGVsbCB0aGUgc2VydmVyIHRvIGNvbGxlY3QgdGhpcyBpbmZvcm1hdGlvbiBiZWZvcmUgdGhlCit0cmFuc2ZlciBpcyBtYWRlLCBieSB1c2luZyB0aGUgXGZJQ1VSTE9QVF9GSUxFVElNRSgzKVxmUCBvcHRpb24gdG8KK1xmSWN1cmxfZWFzeV9zZXRvcHQoMylcZlAgb3IgeW91IHdpbGwgdW5jb25kaXRpb25hbGx5IGdldCBhIC0xIGJhY2suCisuU0ggUFJPVE9DT0xTCitIVFRQKFMpLCBGVFAoUyksIFNGVFAKKy5TSCBFWEFNUExFCitUT0RPCisuU0ggQVZBSUxBQklMSVRZCitBZGRlZCBpbiA3LjUKKy5TSCBSRVRVUk4gVkFMVUUKK1JldHVybnMgQ1VSTEVfT0sgaWYgdGhlIG9wdGlvbiBpcyBzdXBwb3J0ZWQsIGFuZCBDVVJMRV9VTktOT1dOX09QVElPTiBpZiBub3QuCisuU0ggIlNFRSBBTFNPIgorLkJSIGN1cmxfZWFzeV9nZXRpbmZvICIoMyksICIgY3VybF9lYXN5X3NldG9wdCAiKDMpLCAiCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19GVFBfRU5UUllfUEFUSC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fRlRQX0VOVFJZX1BBVEguMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lN2Q3ZmNmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fRlRQX0VOVFJZX1BBVEguMwpAQCAtMCwwICsxLDQ4IEBACisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKy5cIiAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorLlwiICoKKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKy5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICoKKy5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisuXCIgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKy5cIiAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisuXCIgKgorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIKKy5USCBDVVJMSU5GT19GVFBfRU5UUllfUEFUSCAzICIxMiBTZXAgMjAxNSIgImxpYmN1cmwgNy40NC4wIiAiY3VybF9lYXN5X2dldGluZm8gb3B0aW9ucyIKKy5TSCBOQU1FCitDVVJMSU5GT19GVFBfRU5UUllfUEFUSCBcLSBnZXQgZW50cnkgcGF0aCBpbiBGVFAgc2VydmVyCisuU0ggU1lOT1BTSVMKKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKworQ1VSTGNvZGUgY3VybF9lYXN5X2dldGluZm8oQ1VSTCAqaGFuZGxlLCBDVVJMSU5GT19GVFBfRU5UUllfUEFUSCwgY2hhciAqKnBhdGgpOworLlNIIERFU0NSSVBUSU9OCitQYXNzIGEgcG9pbnRlciB0byBhIGNoYXIgcG9pbnRlciB0byByZWNlaXZlIGEgcG9pbnRlciB0byBhIHN0cmluZyBob2xkaW5nIHRoZQorcGF0aCBvZiB0aGUgZW50cnkgcGF0aC4gVGhhdCBpcyB0aGUgaW5pdGlhbCBwYXRoIGxpYmN1cmwgZW5kZWQgdXAgaW4gd2hlbgorbG9nZ2luZyBvbiB0byB0aGUgcmVtb3RlIEZUUCBzZXJ2ZXIuIFRoaXMgc3RvcmVzIGEgTlVMTCBhcyBwb2ludGVyIGlmCitzb21ldGhpbmcgaXMgd3JvbmcuCisKK1RoZSBcZkJwYXRoXGZQIHBvaW50ZXIgd2lsbCBiZSBOVUxMIG9yIHBvaW50aW5nIHRvIHByaXZhdGUgbWVtb3J5IHlvdSBNVVNUIE5PVAorZnJlZSAtIGl0IGdldHMgZnJlZWQgd2hlbiB5b3UgY2FsbCBcZkljdXJsX2Vhc3lfY2xlYW51cCgzKVxmUCBvbiB0aGUKK2NvcnJlc3BvbmRpbmcgQ1VSTCBoYW5kbGUuCisuU0ggUFJPVE9DT0xTCitGVFAoUykgYW5kIFNGVFAKKy5TSCBFWEFNUExFCitUT0RPCisuU0ggQVZBSUxBQklMSVRZCitBZGRlZCBpbiA3LjE1LjQuIFdvcmtzIGZvciBTRlRQIHNpbmNlIDcuMjEuNAorLlNIIFJFVFVSTiBWQUxVRQorUmV0dXJucyBDVVJMRV9PSyBpZiB0aGUgb3B0aW9uIGlzIHN1cHBvcnRlZCwgYW5kIENVUkxFX1VOS05PV05fT1BUSU9OIGlmIG5vdC4KKy5TSCAiU0VFIEFMU08iCisuQlIgY3VybF9lYXN5X2dldGluZm8gIigzKSwgIiBjdXJsX2Vhc3lfc2V0b3B0ICIoMyksICIKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX0hFQURFUl9TSVpFLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19IRUFERVJfU0laRS4zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0YjliNTcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19IRUFERVJfU0laRS4zCkBAIC0wLDAgKzEsNDQgQEAKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworLlwiICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisuXCIgKgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAorLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcworLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKgorLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCisuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKy5cIiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQorLlwiICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy5cIiAqCisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIgorLlRIIENVUkxJTkZPX0hFQURFUl9TSVpFIDMgIjEgU2VwIDIwMTUiICJsaWJjdXJsIDcuNDQuMCIgImN1cmxfZWFzeV9nZXRpbmZvIG9wdGlvbnMiCisuU0ggTkFNRQorQ1VSTElORk9fSEVBREVSX1NJWkUgXC0gZ2V0IHNpemUgb2YgcmV0cmlldmVkIGhlYWRlcnMKKy5TSCBTWU5PUFNJUworI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCitDVVJMY29kZSBjdXJsX2Vhc3lfZ2V0aW5mbyhDVVJMICpoYW5kbGUsIENVUkxJTkZPX0hFQURFUl9TSVpFLCBsb25nICpzaXplcCk7CisuU0ggREVTQ1JJUFRJT04KK1Bhc3MgYSBwb2ludGVyIHRvIGEgbG9uZyB0byByZWNlaXZlIHRoZSB0b3RhbCBzaXplIG9mIGFsbCB0aGUgaGVhZGVycworcmVjZWl2ZWQuIE1lYXN1cmVkIGluIG51bWJlciBvZiBieXRlcy4KKy5TSCBQUk9UT0NPTFMKK0FsbAorLlNIIEVYQU1QTEUKK1RPRE8KKy5TSCBBVkFJTEFCSUxJVFkKK0FkZGVkIGluIDcuNC4xCisuU0ggUkVUVVJOIFZBTFVFCitSZXR1cm5zIENVUkxFX09LIGlmIHRoZSBvcHRpb24gaXMgc3VwcG9ydGVkLCBhbmQgQ1VSTEVfVU5LTk9XTl9PUFRJT04gaWYgbm90LgorLlNIICJTRUUgQUxTTyIKKy5CUiBjdXJsX2Vhc3lfZ2V0aW5mbyAiKDMpLCAiIGN1cmxfZWFzeV9zZXRvcHQgIigzKSwgIgorLkJSIENVUkxJTkZPX1JFUVVFU1RfU0laRSAiKDMpLCAiCisuQlIgQ1VSTElORk9fU0laRV9ET1dOTE9BRCAiKDMpLCAiCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19IVFRQQVVUSF9BVkFJTC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fSFRUUEFVVEhfQVZBSUwuMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNWQwZTcyCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fSFRUUEFVVEhfQVZBSUwuMwpAQCAtMCwwICsxLDQ0IEBACisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKy5cIiAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorLlwiICoKKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKy5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICoKKy5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisuXCIgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKy5cIiAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisuXCIgKgorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIKKy5USCBDVVJMSU5GT19IVFRQQVVUSF9BVkFJTCAzICIxMiBTZXAgMjAxNSIgImxpYmN1cmwgNy40NC4wIiAiY3VybF9lYXN5X2dldGluZm8gb3B0aW9ucyIKKy5TSCBOQU1FCitDVVJMSU5GT19IVFRQQVVUSF9BVkFJTCBcLSBnZXQgYXZhaWxhYmxlIEhUVFAgYXV0aGVudGljYXRpb24gbWV0aG9kcworLlNIIFNZTk9QU0lTCisjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CisKK0NVUkxjb2RlIGN1cmxfZWFzeV9nZXRpbmZvKENVUkwgKmhhbmRsZSwgQ1VSTElORk9fSFRUUEFVVEhfQVZBSUwsIGxvbmcgKmF1dGhwKTsKKy5TSCBERVNDUklQVElPTgorUGFzcyBhIHBvaW50ZXIgdG8gYSBsb25nIHRvIHJlY2VpdmUgYSBiaXRtYXNrIGluZGljYXRpbmcgdGhlIGF1dGhlbnRpY2F0aW9uCittZXRob2QocykgYXZhaWxhYmxlIGFjY29yZGluZyB0byB0aGUgcHJldmlvdXMgcmVzcG9uc2UuIFRoZSBtZWFuaW5nIG9mIHRoZQorYml0cyBpcyBleHBsYWluZWQgaW4gdGhlIFxmSUNVUkxPUFRfSFRUUEFVVEgoMylcZlAgb3B0aW9uIGZvcgorXGZJY3VybF9lYXN5X3NldG9wdCgzKVxmUC4KKy5TSCBQUk9UT0NPTFMKK0hUVFAoUykKKy5TSCBFWEFNUExFCitUT0RPCisuU0ggQVZBSUxBQklMSVRZCitBZGRlZCBpbiA3LjEwLjgKKy5TSCBSRVRVUk4gVkFMVUUKK1JldHVybnMgQ1VSTEVfT0sgaWYgdGhlIG9wdGlvbiBpcyBzdXBwb3J0ZWQsIGFuZCBDVVJMRV9VTktOT1dOX09QVElPTiBpZiBub3QuCisuU0ggIlNFRSBBTFNPIgorLkJSIGN1cmxfZWFzeV9nZXRpbmZvICIoMyksICIgY3VybF9lYXN5X3NldG9wdCAiKDMpLCAiCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19IVFRQX0NPTk5FQ1RDT0RFLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19IVFRQX0NPTk5FQ1RDT0RFLjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWNmZWY3NwotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX0hUVFBfQ09OTkVDVENPREUuMwpAQCAtMCwwICsxLDQ0IEBACisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKy5cIiAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorLlwiICoKKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKy5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICoKKy5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisuXCIgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKy5cIiAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisuXCIgKgorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIKKy5USCBDVVJMSU5GT19IVFRQX0NPTk5FQ1RDT0RFIDMgIjI4IEF1ZyAyMDE1IiAibGliY3VybCA3LjQ0LjAiICJjdXJsX2Vhc3lfZ2V0aW5mbyBvcHRpb25zIgorLlNIIE5BTUUKK0NVUkxJTkZPX0hUVFBfQ09OTkVDVENPREUgXC0gZ2V0IHRoZSBDT05ORUNUIHJlc3BvbnNlIGNvZGUKKy5TSCBTWU5PUFNJUworI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCitDVVJMY29kZSBjdXJsX2Vhc3lfZ2V0aW5mbyhDVVJMICpoYW5kbGUsIENVUkxJTkZPX0hUVFBfQ09OTkVDVENPREUsIGxvbmcgKnApOworLlNIIERFU0NSSVBUSU9OCitQYXNzIGEgcG9pbnRlciB0byBhIGxvbmcgdG8gcmVjZWl2ZSB0aGUgbGFzdCByZWNlaXZlZCBIVFRQIHByb3h5IHJlc3BvbnNlIGNvZGUKK3RvIGEgQ09OTkVDVCByZXF1ZXN0LiBUaGUgcmV0dXJuZWQgdmFsdWUgd2lsbCBiZSB6ZXJvIGlmIG5vIHN1Y2ggcmVzcG9uc2UgY29kZQord2FzIGF2YWlsYWJsZS4KKy5TSCBQUk9UT0NPTFMKK0hUVFAKKy5TSCBFWEFNUExFCitUT0RPCisuU0ggQVZBSUxBQklMSVRZCitBZGRlZCBpbiA3LjEwLjcKKy5TSCBSRVRVUk4gVkFMVUUKK1JldHVybnMgQ1VSTEVfT0sgaWYgdGhlIG9wdGlvbiBpcyBzdXBwb3J0ZWQsIGFuZCBDVVJMRV9VTktOT1dOX09QVElPTiBpZiBub3QuCisuU0ggIlNFRSBBTFNPIgorLkJSIENVUkxJTkZPX1JFU1BPTlNFX0NPREUgIigzKSwgIgorLkJSIGN1cmxfZWFzeV9nZXRpbmZvICIoMyksICIgY3VybF9lYXN5X3NldG9wdCAiKDMpLCAiCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19MQVNUU09DS0VULjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19MQVNUU09DS0VULjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGU3MzQ1MwotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX0xBU1RTT0NLRVQuMwpAQCAtMCwwICsxLDUzIEBACisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKy5cIiAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorLlwiICoKKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKy5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICoKKy5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisuXCIgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKy5cIiAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisuXCIgKgorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIKKy5USCBDVVJMSU5GT19MQVNUU09DS0VUIDMgIjEyIFNlcCAyMDE1IiAibGliY3VybCA3LjQ0LjAiICJjdXJsX2Vhc3lfZ2V0aW5mbyBvcHRpb25zIgorLlNIIE5BTUUKK0NVUkxJTkZPX0xBU1RTT0NLRVQgXC0gZ2V0IHRoZSBsYXN0IHNvY2tldCB1c2VkCisuU0ggU1lOT1BTSVMKKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKworQ1VSTGNvZGUgY3VybF9lYXN5X2dldGluZm8oQ1VSTCAqaGFuZGxlLCBDVVJMSU5GT19MQVNUU09DS0VULCBsb25nICpzb2NrZXQpOworLlNIIERFU0NSSVBUSU9OCitEZXByZWNhdGVkIHNpbmNlIDcuNDUuMC4gVXNlIFxmSUNVUkxJTkZPX0FDVElWRVNPQ0tFVCgzKVxmUCBpbnN0ZWFkLgorCitQYXNzIGEgcG9pbnRlciB0byBhIGxvbmcgdG8gcmVjZWl2ZSB0aGUgbGFzdCBzb2NrZXQgdXNlZCBieSB0aGlzIGN1cmwKK3Nlc3Npb24uIElmIHRoZSBzb2NrZXQgaXMgbm8gbG9uZ2VyIHZhbGlkLCAtMSBpcyByZXR1cm5lZC4gV2hlbiB5b3UgZmluaXNoCit3b3JraW5nIHdpdGggdGhlIHNvY2tldCwgeW91IG11c3QgY2FsbCBjdXJsX2Vhc3lfY2xlYW51cCgpIGFzIHVzdWFsIGFuZCBsZXQKK2xpYmN1cmwgY2xvc2UgdGhlIHNvY2tldCBhbmQgY2xlYW51cCBvdGhlciByZXNvdXJjZXMgYXNzb2NpYXRlZCB3aXRoIHRoZQoraGFuZGxlLiBUaGlzIGlzIHR5cGljYWxseSB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGgKK1xmSUNVUkxPUFRfQ09OTkVDVF9PTkxZKDMpXGZQLgorCitOT1RFOiB0aGlzIEFQSSBpcyBkZXByZWNhdGVkIHNpbmNlIGl0IGlzIG5vdCB3b3JraW5nIG9uIHdpbjY0IHdoZXJlIHRoZSBTT0NLRVQKK3R5cGUgaXMgNjQgYml0cyBsYXJnZSB3aGlsZSBpdHMgJ2xvbmcnIGlzIDMyIGJpdHMuIFVzZSB0aGUKK1xmSUNVUkxJTkZPX0FDVElWRVNPQ0tFVCgzKVxmUCBpbnN0ZWFkLCBpZiBwb3NzaWJsZS4KKy5TSCBQUk9UT0NPTFMKK0FsbAorLlNIIEVYQU1QTEUKK1RPRE8KKy5TSCBBVkFJTEFCSUxJVFkKK0FkZGVkIGluIDcuMTUuMgorLlNIIFJFVFVSTiBWQUxVRQorUmV0dXJucyBDVVJMRV9PSyBpZiB0aGUgb3B0aW9uIGlzIHN1cHBvcnRlZCwgYW5kIENVUkxFX1VOS05PV05fT1BUSU9OIGlmIG5vdC4KKy5TSCAiU0VFIEFMU08iCisuQlIgY3VybF9lYXN5X2dldGluZm8gIigzKSwgIiBjdXJsX2Vhc3lfc2V0b3B0ICIoMyksICIKKy5CUiBDVVJMSU5GT19BQ1RJVkVTT0NLRVQgIigzKSwgIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fTE9DQUxfSVAuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX0xPQ0FMX0lQLjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjIyMjhlMgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX0xPQ0FMX0lQLjMKQEAgLTAsMCArMSw1MSBAQAorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisuXCIgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKy5cIiAqCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqCisuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKy5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworLlwiICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisuXCIgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLlwiICoKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiCisuVEggQ1VSTElORk9fTE9DQUxfSVAgMyAiMTIgU2VwIDIwMTUiICJsaWJjdXJsIDcuNDQuMCIgImN1cmxfZWFzeV9nZXRpbmZvIG9wdGlvbnMiCisuU0ggTkFNRQorQ1VSTElORk9fTE9DQUxfSVAgXC0gZ2V0IGxvY2FsIElQIGFkZHJlc3Mgb2YgbGFzdCBjb25uZWN0aW9uCisuU0ggU1lOT1BTSVMKKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKworQ1VSTGNvZGUgY3VybF9lYXN5X2dldGluZm8oQ1VSTCAqaGFuZGxlLCBDVVJMSU5GT19MT0NBTF9JUCwgY2hhciAqKmlwKTsKKy5TSCBERVNDUklQVElPTgorUGFzcyBhIHBvaW50ZXIgdG8gYSBjaGFyIHBvaW50ZXIgdG8gcmVjZWl2ZSB0aGUgcG9pbnRlciB0byBhIHplcm8tdGVybWluYXRlZAorc3RyaW5nIGhvbGRpbmcgdGhlIElQIGFkZHJlc3Mgb2YgdGhlIGxvY2FsIGVuZCBvZiBtb3N0IHJlY2VudCBjb25uZWN0aW9uIGRvbmUKK3dpdGggdGhpcyBcZkJjdXJsXGZQIGhhbmRsZS4gVGhpcyBzdHJpbmcgbWF5IGJlIElQdjYgd2hlbiB0aGF0IGlzCitlbmFibGVkLiBOb3RlIHRoYXQgeW91IGdldCBhIHBvaW50ZXIgdG8gYSBtZW1vcnkgYXJlYSB0aGF0IHdpbGwgYmUgcmUtdXNlZCBhdAorbmV4dCByZXF1ZXN0IHNvIHlvdSBuZWVkIHRvIGNvcHkgdGhlIHN0cmluZyBpZiB5b3Ugd2FudCB0byBrZWVwIHRoZQoraW5mb3JtYXRpb24uCisKK1RoZSBcZkJpcFxmUCBwb2ludGVyIHdpbGwgYmUgTlVMTCBvciBwb2ludGluZyB0byBwcml2YXRlIG1lbW9yeSB5b3UgTVVTVCBOT1QKK2ZyZWUgLSBpdCBnZXRzIGZyZWVkIHdoZW4geW91IGNhbGwgXGZJY3VybF9lYXN5X2NsZWFudXAoMylcZlAgb24gdGhlCitjb3JyZXNwb25kaW5nIENVUkwgaGFuZGxlLgorLlNIIFBST1RPQ09MUworQWxsCisuU0ggRVhBTVBMRQorVE9ETworLlNIIEFWQUlMQUJJTElUWQorQWRkZWQgaW4gNy4yMS4wCisuU0ggUkVUVVJOIFZBTFVFCitSZXR1cm5zIENVUkxFX09LIGlmIHRoZSBvcHRpb24gaXMgc3VwcG9ydGVkLCBhbmQgQ1VSTEVfVU5LTk9XTl9PUFRJT04gaWYgbm90LgorLlNIICJTRUUgQUxTTyIKKy5CUiBjdXJsX2Vhc3lfZ2V0aW5mbyAiKDMpLCAiIGN1cmxfZWFzeV9zZXRvcHQgIigzKSwgIgorLkJSIENVUkxJTkZPX1BSSU1BUllfSVAgIigzKSwgIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fTE9DQUxfUE9SVC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fTE9DQUxfUE9SVC4zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhN2Y0MTgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19MT0NBTF9QT1JULjMKQEAgLTAsMCArMSw0MyBAQAorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisuXCIgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKy5cIiAqCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqCisuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKy5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworLlwiICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisuXCIgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLlwiICoKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiCisuVEggQ1VSTElORk9fTE9DQUxfUE9SVCAzICIxMiBTZXAgMjAxNSIgImxpYmN1cmwgNy40NC4wIiAiY3VybF9lYXN5X2dldGluZm8gb3B0aW9ucyIKKy5TSCBOQU1FCitDVVJMSU5GT19MT0NBTF9QT1JUIFwtIGdldCB0aGUgbGF0ZXN0IGxvY2FsIHBvcnQgbnVtYmVyCisuU0ggU1lOT1BTSVMKKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKworQ1VSTGNvZGUgY3VybF9lYXN5X2dldGluZm8oQ1VSTCAqaGFuZGxlLCBDVVJMSU5GT19MT0NBTF9QT1JULCBsb25nICpwb3J0cCk7CisuU0ggREVTQ1JJUFRJT04KK1Bhc3MgYSBwb2ludGVyIHRvIGEgbG9uZyB0byByZWNlaXZlIHRoZSBsb2NhbCBwb3J0IG51bWJlciBvZiB0aGUgbW9zdCByZWNlbnQKK2Nvbm5lY3Rpb24gZG9uZSB3aXRoIHRoaXMgXGZCY3VybFxmUCBoYW5kbGUuCisuU0ggUFJPVE9DT0xTCitBbGwKKy5TSCBFWEFNUExFCitUT0RPCisuU0ggQVZBSUxBQklMSVRZCitBZGRlZCBpbiA3LjIxLjAKKy5TSCBSRVRVUk4gVkFMVUUKK1JldHVybnMgQ1VSTEVfT0sgaWYgdGhlIG9wdGlvbiBpcyBzdXBwb3J0ZWQsIGFuZCBDVVJMRV9VTktOT1dOX09QVElPTiBpZiBub3QuCisuU0ggIlNFRSBBTFNPIgorLkJSIGN1cmxfZWFzeV9nZXRpbmZvICIoMyksICIgY3VybF9lYXN5X3NldG9wdCAiKDMpLCAiCisuQlIgQ1VSTElORk9fUFJJTUFSWV9QT1JUICIoMyksICIgQ1VSTElORk9fTE9DQUxfSVAgIigzKSwgIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fTkFNRUxPT0tVUF9USU1FLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19OQU1FTE9PS1VQX1RJTUUuMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ODA1OWVjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fTkFNRUxPT0tVUF9USU1FLjMKQEAgLTAsMCArMSw0NCBAQAorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisuXCIgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKy5cIiAqCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqCisuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKy5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworLlwiICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisuXCIgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLlwiICoKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiCisuVEggQ1VSTElORk9fTkFNRUxPT0tVUF9USU1FIDMgIjI4IEF1ZyAyMDE1IiAibGliY3VybCA3LjQ0LjAiICJjdXJsX2Vhc3lfZ2V0aW5mbyBvcHRpb25zIgorLlNIIE5BTUUKK0NVUkxJTkZPX05BTUVMT09LVVBfVElNRSBcLSBnZXQgdGhlIG5hbWUgbG9va3VwIHRpbWUKKy5TSCBTWU5PUFNJUworI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCitDVVJMY29kZSBjdXJsX2Vhc3lfZ2V0aW5mbyhDVVJMICpoYW5kbGUsIENVUkxJTkZPX05BTUVMT09LVVBfVElNRSwgZG91YmxlICp0aW1lcCk7CisuU0ggREVTQ1JJUFRJT04KK1Bhc3MgYSBwb2ludGVyIHRvIGEgZG91YmxlIHRvIHJlY2VpdmUgdGhlIHRvdGFsIHRpbWUgaW4gc2Vjb25kcyBmcm9tIHRoZSBzdGFydAordW50aWwgdGhlIG5hbWUgcmVzb2x2aW5nIHdhcyBjb21wbGV0ZWQuCisKK1NlZSBhbHNvIHRoZSBUSU1FUyBvdmVydmlldyBpbiB0aGUgXGZJY3VybF9lYXN5X2dldGluZm8oMylcZlAgbWFuIHBhZ2UuCisuU0ggUFJPVE9DT0xTCitBbGwKKy5TSCBFWEFNUExFCitUT0RPCisuU0ggQVZBSUxBQklMSVRZCitBZGRlZCBpbiA3LjQuMQorLlNIIFJFVFVSTiBWQUxVRQorUmV0dXJucyBDVVJMRV9PSyBpZiB0aGUgb3B0aW9uIGlzIHN1cHBvcnRlZCwgYW5kIENVUkxFX1VOS05PV05fT1BUSU9OIGlmIG5vdC4KKy5TSCAiU0VFIEFMU08iCisuQlIgY3VybF9lYXN5X2dldGluZm8gIigzKSwgIiBjdXJsX2Vhc3lfc2V0b3B0ICIoMyksICIKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX05VTV9DT05ORUNUUy4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fTlVNX0NPTk5FQ1RTLjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWNjZmY1MAotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX05VTV9DT05ORUNUUy4zCkBAIC0wLDAgKzEsNDYgQEAKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworLlwiICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisuXCIgKgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAorLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcworLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKgorLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCisuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKy5cIiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQorLlwiICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy5cIiAqCisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIgorLlRIIENVUkxJTkZPX05VTV9DT05ORUNUUyAzICIxMiBTZXAgMjAxNSIgImxpYmN1cmwgNy40NC4wIiAiY3VybF9lYXN5X2dldGluZm8gb3B0aW9ucyIKKy5TSCBOQU1FCitDVVJMSU5GT19OVU1fQ09OTkVDVFMgXC0gZ2V0IG51bWJlciBvZiBjcmVhdGVkIGNvbm5lY3Rpb25zCisuU0ggU1lOT1BTSVMKKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKworQ1VSTGNvZGUgY3VybF9lYXN5X2dldGluZm8oQ1VSTCAqaGFuZGxlLCBDVVJMSU5GT19OVU1fQ09OTkVDVFMsIGxvbmcgKm51bXApOworLlNIIERFU0NSSVBUSU9OCitQYXNzIGEgcG9pbnRlciB0byBhIGxvbmcgdG8gcmVjZWl2ZSBob3cgbWFueSBuZXcgY29ubmVjdGlvbnMgbGliY3VybCBoYWQgdG8KK2NyZWF0ZSB0byBhY2hpZXZlIHRoZSBwcmV2aW91cyB0cmFuc2ZlciAob25seSB0aGUgc3VjY2Vzc2Z1bCBjb25uZWN0cyBhcmUKK2NvdW50ZWQpLiAgQ29tYmluZWQgd2l0aCBcZklDVVJMSU5GT19SRURJUkVDVF9DT1VOVCgzKVxmUCB5b3UgYXJlIGFibGUgdG8ga25vdworaG93IG1hbnkgdGltZXMgbGliY3VybCBzdWNjZXNzZnVsbHkgcmV1c2VkIGV4aXN0aW5nIGNvbm5lY3Rpb24ocykgb3Igbm90LiAgU2VlCit0aGUgY29ubmVjdGlvbiBvcHRpb25zIG9mIFxmSWN1cmxfZWFzeV9zZXRvcHQoMylcZlAgdG8gc2VlIGhvdyBsaWJjdXJsIHRyaWVzCit0byBtYWtlIHBlcnNpc3RlbnQgY29ubmVjdGlvbnMgdG8gc2F2ZSB0aW1lLgorLlNIIFBST1RPQ09MUworQWxsCisuU0ggRVhBTVBMRQorVE9ETworLlNIIEFWQUlMQUJJTElUWQorQWRkZWQgaW4gNy4xMi4zCisuU0ggUkVUVVJOIFZBTFVFCitSZXR1cm5zIENVUkxFX09LIGlmIHRoZSBvcHRpb24gaXMgc3VwcG9ydGVkLCBhbmQgQ1VSTEVfVU5LTk9XTl9PUFRJT04gaWYgbm90LgorLlNIICJTRUUgQUxTTyIKKy5CUiBjdXJsX2Vhc3lfZ2V0aW5mbyAiKDMpLCAiIGN1cmxfZWFzeV9zZXRvcHQgIigzKSwgIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fT1NfRVJSTk8uMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX09TX0VSUk5PLjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjU2ZDQwZQotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX09TX0VSUk5PLjMKQEAgLTAsMCArMSw0MyBAQAorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisuXCIgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKy5cIiAqCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqCisuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKy5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworLlwiICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisuXCIgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLlwiICoKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiCisuVEggQ1VSTElORk9fT1NfRVJSTk8gMyAiMSBTZXAgMjAxNSIgImxpYmN1cmwgNy40NC4wIiAiY3VybF9lYXN5X2dldGluZm8gb3B0aW9ucyIKKy5TSCBOQU1FCitDVVJMSU5GT19PU19FUlJOTyBcLSBnZXQgZXJybm8gbnVtYmVyIGZyb20gbGFzdCBjb25uZWN0IGZhaWx1cmUKKy5TSCBTWU5PUFNJUworI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCitDVVJMY29kZSBjdXJsX2Vhc3lfZ2V0aW5mbyhDVVJMICpoYW5kbGUsIENVUkxJTkZPX09TX0VSUk5PLCBsb25nICplcnJub3ApOworLlNIIERFU0NSSVBUSU9OCitQYXNzIGEgcG9pbnRlciB0byBhIGxvbmcgdG8gcmVjZWl2ZSB0aGUgZXJybm8gdmFyaWFibGUgZnJvbSBhIGNvbm5lY3QgZmFpbHVyZS4KK05vdGUgdGhhdCB0aGUgdmFsdWUgaXMgb25seSBzZXQgb24gZmFpbHVyZSwgaXQgaXMgbm90IHJlc2V0IHVwb24gYSBzdWNjZXNzZnVsCitvcGVyYXRpb24uIFRoZSBudW1iZXIgaXMgT1MgYW5kIHN5c3RlbSBzcGVjaWZpYy4KKy5TSCBQUk9UT0NPTFMKK0FsbAorLlNIIEVYQU1QTEUKK1RPRE8KKy5TSCBBVkFJTEFCSUxJVFkKK0FkZGVkIGluIDcuMTIuMgorLlNIIFJFVFVSTiBWQUxVRQorUmV0dXJucyBDVVJMRV9PSyBpZiB0aGUgb3B0aW9uIGlzIHN1cHBvcnRlZCwgYW5kIENVUkxFX1VOS05PV05fT1BUSU9OIGlmIG5vdC4KKy5TSCAiU0VFIEFMU08iCisuQlIgY3VybF9lYXN5X2dldGluZm8gIigzKSwgIiBjdXJsX2Vhc3lfc2V0b3B0ICIoMyksICIKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX1BSRVRSQU5TRkVSX1RJTUUuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX1BSRVRSQU5TRkVSX1RJTUUuMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDQ1ZWEwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fUFJFVFJBTlNGRVJfVElNRS4zCkBAIC0wLDAgKzEsNDcgQEAKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworLlwiICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisuXCIgKgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAorLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcworLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKgorLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCisuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKy5cIiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQorLlwiICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy5cIiAqCisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIgorLlRIIENVUkxJTkZPX1BSRVRSQU5TRkVSX1RJTUUgMyAiMjggQXVnIDIwMTUiICJsaWJjdXJsIDcuNDQuMCIgImN1cmxfZWFzeV9nZXRpbmZvIG9wdGlvbnMiCisuU0ggTkFNRQorQ1VSTElORk9fUFJFVFJBTlNGRVJfVElNRSBcLSBnZXQgdGhlIHRpbWUgdW50aWwgdGhlIGZpbGUgdHJhbnNmZXIgc3RhcnQKKy5TSCBTWU5PUFNJUworI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCitDVVJMY29kZSBjdXJsX2Vhc3lfZ2V0aW5mbyhDVVJMICpoYW5kbGUsIENVUkxJTkZPX1BSRVRSQU5TRkVSX1RJTUUsIGRvdWJsZSAqdGltZXApOworLlNIIERFU0NSSVBUSU9OCitQYXNzIGEgcG9pbnRlciB0byBhIGRvdWJsZSB0byByZWNlaXZlIHRoZSB0aW1lLCBpbiBzZWNvbmRzLCBpdCB0b29rIGZyb20gdGhlCitzdGFydCB1bnRpbCB0aGUgZmlsZSB0cmFuc2ZlciBpcyBqdXN0IGFib3V0IHRvIGJlZ2luLiBUaGlzIGluY2x1ZGVzIGFsbAorcHJlLXRyYW5zZmVyIGNvbW1hbmRzIGFuZCBuZWdvdGlhdGlvbnMgdGhhdCBhcmUgc3BlY2lmaWMgdG8gdGhlIHBhcnRpY3VsYXIKK3Byb3RvY29sKHMpIGludm9sdmVkLiBJdCBkb2VzIFxmSW5vdFxmUCBpbnZvbHZlIHRoZSBzZW5kaW5nIG9mIHRoZSBwcm90b2NvbC0KK3NwZWNpZmljIHJlcXVlc3QgdGhhdCB0cmlnZ2VycyBhIHRyYW5zZmVyLgorCitTZWUgYWxzbyB0aGUgVElNRVMgb3ZlcnZpZXcgaW4gdGhlIFxmSWN1cmxfZWFzeV9nZXRpbmZvKDMpXGZQIG1hbiBwYWdlLgorLlNIIFBST1RPQ09MUworQWxsCisuU0ggRVhBTVBMRQorVE9ETworLlNIIEFWQUlMQUJJTElUWQorQWRkZWQgaW4gNy40LjEKKy5TSCBSRVRVUk4gVkFMVUUKK1JldHVybnMgQ1VSTEVfT0sgaWYgdGhlIG9wdGlvbiBpcyBzdXBwb3J0ZWQsIGFuZCBDVVJMRV9VTktOT1dOX09QVElPTiBpZiBub3QuCisuU0ggIlNFRSBBTFNPIgorLkJSIGN1cmxfZWFzeV9nZXRpbmZvICIoMyksICIgY3VybF9lYXN5X3NldG9wdCAiKDMpLCAiCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19QUklNQVJZX0lQLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19QUklNQVJZX0lQLjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWQyNzZlYQotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX1BSSU1BUllfSVAuMwpAQCAtMCwwICsxLDQ5IEBACisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKy5cIiAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorLlwiICoKKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKy5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICoKKy5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisuXCIgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKy5cIiAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisuXCIgKgorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIKKy5USCBDVVJMSU5GT19QUklNQVJZX0lQIDMgIjEyIFNlcCAyMDE1IiAibGliY3VybCA3LjQ0LjAiICJjdXJsX2Vhc3lfZ2V0aW5mbyBvcHRpb25zIgorLlNIIE5BTUUKK0NVUkxJTkZPX1BSSU1BUllfSVAgXC0gZ2V0IElQIGFkZHJlc3Mgb2YgbGFzdCBjb25uZWN0aW9uCisuU0ggU1lOT1BTSVMKKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKworQ1VSTGNvZGUgY3VybF9lYXN5X2dldGluZm8oQ1VSTCAqaGFuZGxlLCBDVVJMSU5GT19QUklNQVJZX0lQLCBjaGFyICoqaXApOworLlNIIERFU0NSSVBUSU9OCitQYXNzIGEgcG9pbnRlciB0byBhIGNoYXIgcG9pbnRlciB0byByZWNlaXZlIHRoZSBwb2ludGVyIHRvIGEgemVyby10ZXJtaW5hdGVkCitzdHJpbmcgaG9sZGluZyB0aGUgSVAgYWRkcmVzcyBvZiB0aGUgbW9zdCByZWNlbnQgY29ubmVjdGlvbiBkb25lIHdpdGggdGhpcworXGZCY3VybFxmUCBoYW5kbGUuIFRoaXMgc3RyaW5nIG1heSBiZSBJUHY2IHdoZW4gdGhhdCBpcyBlbmFibGVkLiBOb3RlIHRoYXQgeW91CitnZXQgYSBwb2ludGVyIHRvIGEgbWVtb3J5IGFyZWEgdGhhdCB3aWxsIGJlIHJlLXVzZWQgYXQgbmV4dCByZXF1ZXN0IHNvIHlvdQorbmVlZCB0byBjb3B5IHRoZSBzdHJpbmcgaWYgeW91IHdhbnQgdG8ga2VlcCB0aGUgaW5mb3JtYXRpb24uCisKK1RoZSBcZkJpcFxmUCBwb2ludGVyIHdpbGwgYmUgTlVMTCBvciBwb2ludGluZyB0byBwcml2YXRlIG1lbW9yeSB5b3UgTVVTVCBOT1QKK2ZyZWUgLSBpdCBnZXRzIGZyZWVkIHdoZW4geW91IGNhbGwgXGZJY3VybF9lYXN5X2NsZWFudXAoMylcZlAgb24gdGhlCitjb3JyZXNwb25kaW5nIENVUkwgaGFuZGxlLgorLlNIIFBST1RPQ09MUworLlNIIEVYQU1QTEUKK1RPRE8KKy5TSCBBVkFJTEFCSUxJVFkKK0FkZGVkIGluIDcuMTkuMAorLlNIIFJFVFVSTiBWQUxVRQorUmV0dXJucyBDVVJMRV9PSyBpZiB0aGUgb3B0aW9uIGlzIHN1cHBvcnRlZCwgYW5kIENVUkxFX1VOS05PV05fT1BUSU9OIGlmIG5vdC4KKy5TSCAiU0VFIEFMU08iCisuQlIgY3VybF9lYXN5X2dldGluZm8gIigzKSwgIiBjdXJsX2Vhc3lfc2V0b3B0ICIoMyksICIKKy5CUiBDVVJMSU5GT19QUklNQVJZX1BPUlQgIigzKSwgIiBDVVJMSU5GT19MT0NBTF9JUCAiKDMpLCAiCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19QUklNQVJZX1BPUlQuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX1BSSU1BUllfUE9SVC4zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1ZWQ2YTYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19QUklNQVJZX1BPUlQuMwpAQCAtMCwwICsxLDQyIEBACisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKy5cIiAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorLlwiICoKKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKy5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICoKKy5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisuXCIgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKy5cIiAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisuXCIgKgorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIKKy5USCBDVVJMSU5GT19QUklNQVJZX1BPUlQgMyAiMTIgU2VwIDIwMTUiICJsaWJjdXJsIDcuNDQuMCIgImN1cmxfZWFzeV9nZXRpbmZvIG9wdGlvbnMiCisuU0ggTkFNRQorQ1VSTElORk9fUFJJTUFSWV9QT1JUIFwtIGdldCB0aGUgbGF0ZXN0IGRlc3RpbmF0aW9uIHBvcnQgbnVtYmVyCisuU0ggU1lOT1BTSVMKKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKworQ1VSTGNvZGUgY3VybF9lYXN5X2dldGluZm8oQ1VSTCAqaGFuZGxlLCBDVVJMSU5GT19QUklNQVJZX1BPUlQsIGxvbmcgKnBvcnRwKTsKKy5TSCBERVNDUklQVElPTgorUGFzcyBhIHBvaW50ZXIgdG8gYSBsb25nIHRvIHJlY2VpdmUgdGhlIGRlc3RpbmF0aW9uIHBvcnQgb2YgdGhlIG1vc3QgcmVjZW50Citjb25uZWN0aW9uIGRvbmUgd2l0aCB0aGlzIFxmQmN1cmxcZlAgaGFuZGxlLgorLlNIIFBST1RPQ09MUworQWxsCisuU0ggRVhBTVBMRQorVE9ETworLlNIIEFWQUlMQUJJTElUWQorQWRkZWQgaW4gNy4yMS4wCisuU0ggUkVUVVJOIFZBTFVFCitSZXR1cm5zIENVUkxFX09LIGlmIHRoZSBvcHRpb24gaXMgc3VwcG9ydGVkLCBhbmQgQ1VSTEVfVU5LTk9XTl9PUFRJT04gaWYgbm90LgorLlNIICJTRUUgQUxTTyIKKy5CUiBjdXJsX2Vhc3lfZ2V0aW5mbyAiKDMpLCAiIGN1cmxfZWFzeV9zZXRvcHQgIigzKSwgIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fUFJJVkFURS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fUFJJVkFURS4zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3ZmU5ZDUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19QUklWQVRFLjMKQEAgLTAsMCArMSw0NSBAQAorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisuXCIgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKy5cIiAqCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqCisuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKy5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworLlwiICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisuXCIgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLlwiICoKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiCisuVEggQ1VSTElORk9fUFJJVkFURSAzICIxIFNlcCAyMDE1IiAibGliY3VybCA3LjQ0LjAiICJjdXJsX2Vhc3lfZ2V0aW5mbyBvcHRpb25zIgorLlNIIE5BTUUKK0NVUkxJTkZPX1BSSVZBVEUgXC0gZ2V0IHRoZSBwcml2YXRlIHBvaW50ZXIKKy5TSCBTWU5PUFNJUworI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCitDVVJMY29kZSBjdXJsX2Vhc3lfZ2V0aW5mbyhDVVJMICpoYW5kbGUsIENVUkxJTkZPX1BSSVZBVEUsIGNoYXIgKipwcml2YXRlKTsKKy5TSCBERVNDUklQVElPTgorUGFzcyBhIHBvaW50ZXIgdG8gYSBjaGFyIHBvaW50ZXIgdG8gcmVjZWl2ZSB0aGUgcG9pbnRlciB0byB0aGUgcHJpdmF0ZSBkYXRhCithc3NvY2lhdGVkIHdpdGggdGhlIGN1cmwgaGFuZGxlIChzZXQgd2l0aCB0aGUgXGZJQ1VSTE9QVF9QUklWQVRFKDMpXGZQKS4KK1BsZWFzZSBub3RlIHRoYXQgZm9yIGludGVybmFsIHJlYXNvbnMsIHRoZSB2YWx1ZSBpcyByZXR1cm5lZCBhcyBhIGNoYXIKK3BvaW50ZXIsIGFsdGhvdWdoIGVmZmVjdGl2ZWx5IGJlaW5nIGEgJ3ZvaWQgKicuCisuU0ggUFJPVE9DT0xTCitBbGwKKy5TSCBFWEFNUExFCitUT0RPCisuU0ggQVZBSUxBQklMSVRZCitBZGRlZCBpbiA3LjEwLjMKKy5TSCBSRVRVUk4gVkFMVUUKK1JldHVybnMgQ1VSTEVfT0sgaWYgdGhlIG9wdGlvbiBpcyBzdXBwb3J0ZWQsIGFuZCBDVVJMRV9VTktOT1dOX09QVElPTiBpZiBub3QuCisuU0ggIlNFRSBBTFNPIgorLkJSIGN1cmxfZWFzeV9nZXRpbmZvICIoMyksICIgY3VybF9lYXN5X3NldG9wdCAiKDMpLCAiCisuQlIgQ1VSTE9QVF9QUklWQVRFICIoMyksICIKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX1BST1hZQVVUSF9BVkFJTC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fUFJPWFlBVVRIX0FWQUlMLjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDA3YzViOQotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX1BST1hZQVVUSF9BVkFJTC4zCkBAIC0wLDAgKzEsNDQgQEAKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworLlwiICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisuXCIgKgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAorLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcworLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKgorLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCisuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKy5cIiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQorLlwiICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy5cIiAqCisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIgorLlRIIENVUkxJTkZPX1BST1hZQVVUSF9BVkFJTCAzICIxMiBTZXAgMjAxNSIgImxpYmN1cmwgNy40NC4wIiAiY3VybF9lYXN5X2dldGluZm8gb3B0aW9ucyIKKy5TSCBOQU1FCitDVVJMSU5GT19QUk9YWUFVVEhfQVZBSUwgXC0gZ2V0IGF2YWlsYWJsZSBIVFRQIHByb3h5IGF1dGhlbnRpY2F0aW9uIG1ldGhvZHMKKy5TSCBTWU5PUFNJUworI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCitDVVJMY29kZSBjdXJsX2Vhc3lfZ2V0aW5mbyhDVVJMICpoYW5kbGUsIENVUkxJTkZPX1BST1hZQVVUSF9BVkFJTCwgbG9uZyAqYXV0aHApOworLlNIIERFU0NSSVBUSU9OCitQYXNzIGEgcG9pbnRlciB0byBhIGxvbmcgdG8gcmVjZWl2ZSBhIGJpdG1hc2sgaW5kaWNhdGluZyB0aGUgYXV0aGVudGljYXRpb24KK21ldGhvZChzKSBhdmFpbGFibGUgYWNjb3JkaW5nIHRvIHRoZSBwcmV2aW91cyByZXNwb25zZS4gVGhlIG1lYW5pbmcgb2YgdGhlCitiaXRzIGlzIGV4cGxhaW5lZCBpbiB0aGUgXGZJQ1VSTE9QVF9QUk9YWUFVVEgoMylcZlAgb3B0aW9uIGZvcgorXGZJY3VybF9lYXN5X3NldG9wdCgzKVxmUC4KKy5TSCBQUk9UT0NPTFMKK0hUVFAoUykKKy5TSCBFWEFNUExFCitUT0RPCisuU0ggQVZBSUxBQklMSVRZCitBZGRlZCBpbiA3LjEwLjgKKy5TSCBSRVRVUk4gVkFMVUUKK1JldHVybnMgQ1VSTEVfT0sgaWYgdGhlIG9wdGlvbiBpcyBzdXBwb3J0ZWQsIGFuZCBDVVJMRV9VTktOT1dOX09QVElPTiBpZiBub3QuCisuU0ggIlNFRSBBTFNPIgorLkJSIGN1cmxfZWFzeV9nZXRpbmZvICIoMyksICIgY3VybF9lYXN5X3NldG9wdCAiKDMpLCAiCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19SRURJUkVDVF9DT1VOVC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fUkVESVJFQ1RfQ09VTlQuMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZTFlYmJiCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fUkVESVJFQ1RfQ09VTlQuMwpAQCAtMCwwICsxLDQyIEBACisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKy5cIiAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorLlwiICoKKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKy5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICoKKy5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisuXCIgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKy5cIiAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisuXCIgKgorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIKKy5USCBDVVJMSU5GT19SRURJUkVDVF9DT1VOVCAzICIyOCBBdWcgMjAxNSIgImxpYmN1cmwgNy40NC4wIiAiY3VybF9lYXN5X2dldGluZm8gb3B0aW9ucyIKKy5TSCBOQU1FCitDVVJMSU5GT19SRURJUkVDVF9DT1VOVCBcLSBnZXQgdGhlIG51bWJlciBvZiByZWRpcmVjdHMKKy5TSCBTWU5PUFNJUworI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCitDVVJMY29kZSBjdXJsX2Vhc3lfZ2V0aW5mbyhDVVJMICpoYW5kbGUsIENVUkxJTkZPX1JFRElSRUNUX0NPVU5ULCBsb25nICpjb3VudHApOworLlNIIERFU0NSSVBUSU9OCitQYXNzIGEgcG9pbnRlciB0byBhIGxvbmcgdG8gcmVjZWl2ZSB0aGUgdG90YWwgbnVtYmVyIG9mIHJlZGlyZWN0aW9ucyB0aGF0IHdlcmUKK2FjdHVhbGx5IGZvbGxvd2VkLgorLlNIIFBST1RPQ09MUworSFRUUChTKQorLlNIIEVYQU1QTEUKK1RPRE8KKy5TSCBBVkFJTEFCSUxJVFkKK0FkZGVkIGluIDcuOS43CisuU0ggUkVUVVJOIFZBTFVFCitSZXR1cm5zIENVUkxFX09LIGlmIHRoZSBvcHRpb24gaXMgc3VwcG9ydGVkLCBhbmQgQ1VSTEVfVU5LTk9XTl9PUFRJT04gaWYgbm90LgorLlNIICJTRUUgQUxTTyIKKy5CUiBjdXJsX2Vhc3lfZ2V0aW5mbyAiKDMpLCAiIGN1cmxfZWFzeV9zZXRvcHQgIigzKSwgIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fUkVESVJFQ1RfVElNRS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fUkVESVJFQ1RfVElNRS4zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhOWU2ZGYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19SRURJUkVDVF9USU1FLjMKQEAgLTAsMCArMSw0NiBAQAorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisuXCIgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKy5cIiAqCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqCisuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKy5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworLlwiICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisuXCIgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLlwiICoKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiCisuVEggQ1VSTElORk9fUkVESVJFQ1RfVElNRSAzICIyOCBBdWcgMjAxNSIgImxpYmN1cmwgNy40NC4wIiAiY3VybF9lYXN5X2dldGluZm8gb3B0aW9ucyIKKy5TSCBOQU1FCitDVVJMSU5GT19SRURJUkVDVF9USU1FIFwtIGdldCB0aGUgdGltZSBmb3IgYWxsIHJlZGlyZWN0aW9uIHN0ZXBzCisuU0ggU1lOT1BTSVMKKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKworQ1VSTGNvZGUgY3VybF9lYXN5X2dldGluZm8oQ1VSTCAqaGFuZGxlLCBDVVJMSU5GT19SRURJUkVDVF9USU1FLCBkb3VibGUgKnRpbWVwKTsKKy5TSCBERVNDUklQVElPTgorUGFzcyBhIHBvaW50ZXIgdG8gYSBkb3VibGUgdG8gcmVjZWl2ZSB0aGUgdG90YWwgdGltZSwgaW4gc2Vjb25kcywgaXQgdG9vayBmb3IKK2FsbCByZWRpcmVjdGlvbiBzdGVwcyBpbmNsdWRlIG5hbWUgbG9va3VwLCBjb25uZWN0LCBwcmV0cmFuc2ZlciBhbmQgdHJhbnNmZXIKK2JlZm9yZSBmaW5hbCB0cmFuc2FjdGlvbiB3YXMgc3RhcnRlZC4gQ1VSTElORk9fUkVESVJFQ1RfVElNRSBjb250YWlucyB0aGUKK2NvbXBsZXRlIGV4ZWN1dGlvbiB0aW1lIGZvciBtdWx0aXBsZSByZWRpcmVjdGlvbnMuCisKK1NlZSBhbHNvIHRoZSBUSU1FUyBvdmVydmlldyBpbiB0aGUgXGZJY3VybF9lYXN5X2dldGluZm8oMylcZlAgbWFuIHBhZ2UuCisuU0ggUFJPVE9DT0xTCitBbGwKKy5TSCBFWEFNUExFCitUT0RPCisuU0ggQVZBSUxBQklMSVRZCitBZGRlZCBpbiA3LjkuNworLlNIIFJFVFVSTiBWQUxVRQorUmV0dXJucyBDVVJMRV9PSyBpZiB0aGUgb3B0aW9uIGlzIHN1cHBvcnRlZCwgYW5kIENVUkxFX1VOS05PV05fT1BUSU9OIGlmIG5vdC4KKy5TSCAiU0VFIEFMU08iCisuQlIgY3VybF9lYXN5X2dldGluZm8gIigzKSwgIiBjdXJsX2Vhc3lfc2V0b3B0ICIoMyksICIKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX1JFRElSRUNUX1VSTC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fUkVESVJFQ1RfVVJMLjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTdiZjcyNgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX1JFRElSRUNUX1VSTC4zCkBAIC0wLDAgKzEsNDUgQEAKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworLlwiICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisuXCIgKgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAorLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcworLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKgorLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCisuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKy5cIiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQorLlwiICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy5cIiAqCisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIgorLlRIIENVUkxJTkZPX1JFRElSRUNUX1VSTCAzICIyOCBBdWcgMjAxNSIgImxpYmN1cmwgNy40NC4wIiAiY3VybF9lYXN5X2dldGluZm8gb3B0aW9ucyIKKy5TSCBOQU1FCitDVVJMSU5GT19SRURJUkVDVF9VUkwgXC0gZ2V0IHRoZSBVUkwgYSByZWRpcmVjdCB3b3VsZCBnbyB0bworLlNIIFNZTk9QU0lTCisjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CisKK0NVUkxjb2RlIGN1cmxfZWFzeV9nZXRpbmZvKENVUkwgKmhhbmRsZSwgQ1VSTElORk9fUkVESVJFQ1RfVVJMLCBjaGFyICoqdXJscCk7CisuU0ggREVTQ1JJUFRJT04KK1Bhc3MgYSBwb2ludGVyIHRvIGEgY2hhciBwb2ludGVyIHRvIHJlY2VpdmUgdGhlIFVSTCBhIHJlZGlyZWN0IFxmSXdvdWxkXGZQCit0YWtlIHlvdSB0byBpZiB5b3Ugd291bGQgZW5hYmxlIFxmSUNVUkxPUFRfRk9MTE9XTE9DQVRJT04oMylcZlAuIFRoaXMgY2FuIGNvbWUKK3ZlcnkgaGFuZHkgaWYgeW91IHRoaW5rIHVzaW5nIHRoZSBidWlsdC1pbiBsaWJjdXJsIHJlZGlyZWN0IGxvZ2ljIGlzbid0IGdvb2QKK2Vub3VnaCBmb3IgeW91IGJ1dCB5b3Ugd291bGQgc3RpbGwgcHJlZmVyIHRvIGF2b2lkIGltcGxlbWVudGluZyBhbGwgdGhlIG1hZ2ljCitvZiBmaWd1cmluZyBvdXQgdGhlIG5ldyBVUkwuCisuU0ggUFJPVE9DT0xTCitIVFRQKFMpCisuU0ggRVhBTVBMRQorVE9ETworLlNIIEFWQUlMQUJJTElUWQorQWRkZWQgaW4gNy4xOC4yCisuU0ggUkVUVVJOIFZBTFVFCitSZXR1cm5zIENVUkxFX09LIGlmIHRoZSBvcHRpb24gaXMgc3VwcG9ydGVkLCBhbmQgQ1VSTEVfVU5LTk9XTl9PUFRJT04gaWYgbm90LgorLlNIICJTRUUgQUxTTyIKKy5CUiBjdXJsX2Vhc3lfZ2V0aW5mbyAiKDMpLCAiIGN1cmxfZWFzeV9zZXRvcHQgIigzKSwgIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fUkVRVUVTVF9TSVpFLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19SRVFVRVNUX1NJWkUuMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Zjg1NzM1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fUkVRVUVTVF9TSVpFLjMKQEAgLTAsMCArMSw0NSBAQAorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisuXCIgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKy5cIiAqCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqCisuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKy5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworLlwiICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisuXCIgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLlwiICoKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiCisuVEggQ1VSTElORk9fUkVRVUVTVF9TSVpFIDMgIjEgU2VwIDIwMTUiICJsaWJjdXJsIDcuNDQuMCIgImN1cmxfZWFzeV9nZXRpbmZvIG9wdGlvbnMiCisuU0ggTkFNRQorQ1VSTElORk9fUkVRVUVTVF9TSVpFIFwtIGdldCBzaXplIG9mIHNlbnQgcmVxdWVzdAorLlNIIFNZTk9QU0lTCisjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CisKK0NVUkxjb2RlIGN1cmxfZWFzeV9nZXRpbmZvKENVUkwgKmhhbmRsZSwgQ1VSTElORk9fUkVRVUVTVF9TSVpFLCBsb25nICpzaXplcCk7CisuU0ggREVTQ1JJUFRJT04KK1Bhc3MgYSBwb2ludGVyIHRvIGEgbG9uZyB0byByZWNlaXZlIHRoZSB0b3RhbCBzaXplIG9mIHRoZSBpc3N1ZWQKK3JlcXVlc3RzLiBUaGlzIGlzIHNvIGZhciBvbmx5IGZvciBIVFRQIHJlcXVlc3RzLiBOb3RlIHRoYXQgdGhpcyBtYXkgYmUgbW9yZQordGhhbiBvbmUgcmVxdWVzdCBpZiBcZklDVVJMT1BUX0ZPTExPV0xPQ0FUSU9OKDMpXGZQIGlzIGVuYWJsZWQuCisuU0ggUFJPVE9DT0xTCitBbGwKKy5TSCBFWEFNUExFCitUT0RPCisuU0ggQVZBSUxBQklMSVRZCitBZGRlZCBpbiA3LjQuMQorLlNIIFJFVFVSTiBWQUxVRQorUmV0dXJucyBDVVJMRV9PSyBpZiB0aGUgb3B0aW9uIGlzIHN1cHBvcnRlZCwgYW5kIENVUkxFX1VOS05PV05fT1BUSU9OIGlmIG5vdC4KKy5TSCAiU0VFIEFMU08iCisuQlIgY3VybF9lYXN5X2dldGluZm8gIigzKSwgIiBjdXJsX2Vhc3lfc2V0b3B0ICIoMyksICIKKy5CUiBDVVJMSU5GT19IRUFERVJfU0laRSAiKDMpLCAiCisuQlIgQ1VSTElORk9fU0laRV9ET1dOTE9BRCAiKDMpLCAiCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19SRVNQT05TRV9DT0RFLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19SRVNQT05TRV9DT0RFLjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjFmNDg0NwotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX1JFU1BPTlNFX0NPREUuMwpAQCAtMCwwICsxLDYwIEBACisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKy5cIiAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorLlwiICoKKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKy5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICoKKy5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisuXCIgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKy5cIiAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisuXCIgKgorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIKKy5USCBDVVJMSU5GT19SRVNQT05TRV9DT0RFIDMgIjI4IEF1ZyAyMDE1IiAibGliY3VybCA3LjQ0LjAiICJjdXJsX2Vhc3lfZ2V0aW5mbyBvcHRpb25zIgorLlNIIE5BTUUKK0NVUkxJTkZPX1JFU1BPTlNFX0NPREUgXC0gZ2V0IHRoZSBsYXN0IHJlc3BvbnNlIGNvZGUKKy5TSCBTWU5PUFNJUworI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCitDVVJMY29kZSBjdXJsX2Vhc3lfZ2V0aW5mbyhDVVJMICpoYW5kbGUsIENVUkxJTkZPX1JFU1BPTlNFX0NPREUsIGxvbmcgKmNvZGVwKTsKKy5TSCBERVNDUklQVElPTgorUGFzcyBhIHBvaW50ZXIgdG8gYSBsb25nIHRvIHJlY2VpdmUgdGhlIGxhc3QgcmVjZWl2ZWQgSFRUUCwgRlRQIG9yIFNNVFAKK3Jlc3BvbnNlIGNvZGUuIFRoaXMgb3B0aW9uIHdhcyBwcmV2aW91c2x5IGtub3duIGFzIENVUkxJTkZPX0hUVFBfQ09ERSBpbgorbGliY3VybCA3LjEwLjcgYW5kIGVhcmxpZXIuIFRoZSBzdG9yZWQgdmFsdWUgd2lsbCBiZSB6ZXJvIGlmIG5vIHNlcnZlcgorcmVzcG9uc2UgY29kZSBoYXMgYmVlbiByZWNlaXZlZC4gTm90ZSB0aGF0IGEgcHJveHkncyBDT05ORUNUIHJlc3BvbnNlIHNob3VsZAorYmUgcmVhZCB3aXRoIFxmSUNVUkxJTkZPX0hUVFBfQ09OTkVDVENPREUoMylcZlAgYW5kIG5vdCB0aGlzLgorCitTdXBwb3J0IGZvciBTTVRQIHJlc3BvbnNlcyBhZGRlZCBpbiA3LjI1LjAuCisuU0ggUFJPVE9DT0xTCitIVFRQLCBGVFAgYW5kIFNNVFAKKy5TSCBFWEFNUExFCisubmYKK0NVUkwgKmN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpOworaWYoY3VybCkgeworICBDVVJMY29kZSByZXM7CisgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9VUkwsICJodHRwOi8vZXhhbXBsZS5jb20iKTsKKyAgcmVzID0gY3VybF9lYXN5X3BlcmZvcm0oY3VybCk7CisgIGlmKHJlcyA9PSBDVVJMRV9PSykgeworICAgIGxvbmcgcmVzcG9uc2VfY29kZTsKKyAgICBjdXJsX2Vhc3lfZ2V0aW5mbyhjdXJsLCBDVVJMSU5GT19SRVNQT05TRV9DT0RFLCAmcmVzcG9uc2VfY29kZSk7CisgIH0KKyAgY3VybF9lYXN5X2NsZWFudXAoY3VybCk7Cit9CisuZmkKKy5TSCBBVkFJTEFCSUxJVFkKK0FkZGVkIGluIDcuMTAuOC4gQ1VSTElORk9fSFRUUF9DT0RFIHdhcyBhZGRlZCBpbiA3LjQuMS4KKy5TSCBSRVRVUk4gVkFMVUUKK1JldHVybnMgQ1VSTEVfT0sgaWYgdGhlIG9wdGlvbiBpcyBzdXBwb3J0ZWQsIGFuZCBDVVJMRV9VTktOT1dOX09QVElPTiBpZiBub3QuCisuU0ggIlNFRSBBTFNPIgorLkJSIGN1cmxfZWFzeV9nZXRpbmZvICIoMyksICIgY3VybF9lYXN5X3NldG9wdCAiKDMpLCAiCisuQlIgQ1VSTElORk9fSFRUUF9DT05ORUNUQ09ERSAiKDMpLCAiCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19SVFNQX0NMSUVOVF9DU0VRLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19SVFNQX0NMSUVOVF9DU0VRLjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODIyZmRlOAotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX1JUU1BfQ0xJRU5UX0NTRVEuMwpAQCAtMCwwICsxLDQyIEBACisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKy5cIiAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorLlwiICoKKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKy5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICoKKy5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisuXCIgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKy5cIiAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisuXCIgKgorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIKKy5USCBDVVJMSU5GT19SVFNQX0NMSUVOVF9DU0VRIDMgIjEgU2VwIDIwMTUiICJsaWJjdXJsIDcuNDQuMCIgImN1cmxfZWFzeV9nZXRpbmZvIG9wdGlvbnMiCisuU0ggTkFNRQorQ1VSTElORk9fUlRTUF9DTElFTlRfQ1NFUSBcLSBnZXQgdGhlIG5leHQgUlRTUCBjbGllbnQgQ1NlcQorLlNIIFNZTk9QU0lTCisjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CisKK0NVUkxjb2RlIGN1cmxfZWFzeV9nZXRpbmZvKENVUkwgKmhhbmRsZSwgQ1VSTElORk9fUlRTUF9DTElFTlRfQ1NFUSwgbG9uZyAqY3NlcSk7CisuU0ggREVTQ1JJUFRJT04KK1Bhc3MgYSBwb2ludGVyIHRvIGEgbG9uZyB0byByZWNlaXZlIHRoZSBuZXh0IENTZXEgdGhhdCB3aWxsIGJlIHVzZWQgYnkgdGhlCithcHBsaWNhdGlvbi4KKy5TSCBQUk9UT0NPTFMKK1JUU1AKKy5TSCBFWEFNUExFCitUT0RPCisuU0ggQVZBSUxBQklMSVRZCitBZGRlZCBpbiA3LjIwLjAKKy5TSCBSRVRVUk4gVkFMVUUKK1JldHVybnMgQ1VSTEVfT0sgaWYgdGhlIG9wdGlvbiBpcyBzdXBwb3J0ZWQsIGFuZCBDVVJMRV9VTktOT1dOX09QVElPTiBpZiBub3QuCisuU0ggIlNFRSBBTFNPIgorLkJSIGN1cmxfZWFzeV9nZXRpbmZvICIoMyksICIgY3VybF9lYXN5X3NldG9wdCAiKDMpLCAiCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19SVFNQX0NTRVFfUkVDVi4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fUlRTUF9DU0VRX1JFQ1YuMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xM2QxMzE5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fUlRTUF9DU0VRX1JFQ1YuMwpAQCAtMCwwICsxLDQ0IEBACisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKy5cIiAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorLlwiICoKKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKy5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICoKKy5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisuXCIgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKy5cIiAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisuXCIgKgorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIKKy5USCBDVVJMSU5GT19SVFNQX0NTRVFfUkVDViAzICIxMiBTZXAgMjAxNSIgImxpYmN1cmwgNy40NC4wIiAiY3VybF9lYXN5X2dldGluZm8gb3B0aW9ucyIKKy5TSCBOQU1FCitDVVJMSU5GT19SVFNQX0NTRVFfUkVDViBcLSBnZXQgdGhlIHJlY2VudGx5IHJlY2VpdmVkIENTZXEKKy5TSCBTWU5PUFNJUworI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCitDVVJMY29kZSBjdXJsX2Vhc3lfZ2V0aW5mbyhDVVJMICpoYW5kbGUsIENVUkxJTkZPX1JUU1BfQ1NFUV9SRUNWLCBsb25nICpjc2VxKTsKKy5TSCBERVNDUklQVElPTgorUGFzcyBhIHBvaW50ZXIgdG8gYSBsb25nIHRvIHJlY2VpdmUgdGhlIG1vc3QgcmVjZW50bHkgcmVjZWl2ZWQgQ1NlcSBmcm9tIHRoZQorc2VydmVyLiBJZiB5b3VyIGFwcGxpY2F0aW9uIGVuY291bnRlcnMgYSBcZklDVVJMRV9SVFNQX0NTRVFfRVJST1JcZlAgdGhlbiB5b3UKK21heSB3aXNoIHRvIHRyb3VibGVzaG9vdCBhbmQvb3IgZml4IHRoZSBDU2VxIG1pc21hdGNoIGJ5IHBlZWtpbmcgYXQgdGhpcwordmFsdWUuCisuU0ggUFJPVE9DT0xTCitSVFNQCisuU0ggRVhBTVBMRQorVE9ETworLlNIIEFWQUlMQUJJTElUWQorQWRkZWQgaW4gNy4yMC4wCisuU0ggUkVUVVJOIFZBTFVFCitSZXR1cm5zIENVUkxFX09LIGlmIHRoZSBvcHRpb24gaXMgc3VwcG9ydGVkLCBhbmQgQ1VSTEVfVU5LTk9XTl9PUFRJT04gaWYgbm90LgorLlNIICJTRUUgQUxTTyIKKy5CUiBjdXJsX2Vhc3lfZ2V0aW5mbyAiKDMpLCAiIGN1cmxfZWFzeV9zZXRvcHQgIigzKSwgIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fUlRTUF9TRVJWRVJfQ1NFUS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fUlRTUF9TRVJWRVJfQ1NFUS4zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3MWE5MTUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19SVFNQX1NFUlZFUl9DU0VRLjMKQEAgLTAsMCArMSw0NyBAQAorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisuXCIgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKy5cIiAqCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqCisuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKy5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworLlwiICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisuXCIgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLlwiICoKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiCisuVEggQ1VSTElORk9fUlRTUF9TRVJWRVJfQ1NFUSAzICIxIFNlcCAyMDE1IiAibGliY3VybCA3LjQ0LjAiICJjdXJsX2Vhc3lfZ2V0aW5mbyBvcHRpb25zIgorLlNIIE5BTUUKK0NVUkxJTkZPX1JUU1BfU0VSVkVSX0NTRVEgXC0gZ2V0IHRoZSBuZXh0IFJUU1Agc2VydmVyIENTZXEKKy5TSCBTWU5PUFNJUworI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCitDVVJMY29kZSBjdXJsX2Vhc3lfZ2V0aW5mbyhDVVJMICpoYW5kbGUsIENVUkxJTkZPX1JUU1BfU0VSVkVSX0NTRVEsIGxvbmcgKmNzZXEpOworLlNIIERFU0NSSVBUSU9OCitQYXNzIGEgcG9pbnRlciB0byBhIGxvbmcgdG8gcmVjZWl2ZSB0aGUgbmV4dCBDU2VxIHRoYXQgd2lsbCBiZSBleHBlY3RlZCBieSB0aGUKK2FwcGxpY2F0aW9uLgorCitMbGlzdGVuaW5nIGZvciBzZXJ2ZXIgaW5pdGlhdGVkIHJlcXVlc3RzIGlzIGN1cnJlbnRseSB1bmltcGxlbWVudGVkIQorCitBcHBsaWNhdGlvbnMgd2lzaGluZyB0byByZXN1bWUgYW4gUlRTUCBzZXNzaW9uIG9uIGFub3RoZXIgY29ubmVjdGlvbiBzaG91bGQKK3JldHJpZXZlIHRoaXMgaW5mbyBiZWZvcmUgY2xvc2luZyB0aGUgYWN0aXZlIGNvbm5lY3Rpb24uCisuU0ggUFJPVE9DT0xTCitSVFNQCisuU0ggRVhBTVBMRQorVE9ETworLlNIIEFWQUlMQUJJTElUWQorQWRkZWQgaW4gNy4yMC4wCisuU0ggUkVUVVJOIFZBTFVFCitSZXR1cm5zIENVUkxFX09LIGlmIHRoZSBvcHRpb24gaXMgc3VwcG9ydGVkLCBhbmQgQ1VSTEVfVU5LTk9XTl9PUFRJT04gaWYgbm90LgorLlNIICJTRUUgQUxTTyIKKy5CUiBjdXJsX2Vhc3lfZ2V0aW5mbyAiKDMpLCAiIGN1cmxfZWFzeV9zZXRvcHQgIigzKSwgIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fUlRTUF9TRVNTSU9OX0lELjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19SVFNQX1NFU1NJT05fSUQuMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDRkM2YxCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fUlRTUF9TRVNTSU9OX0lELjMKQEAgLTAsMCArMSw0OSBAQAorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisuXCIgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKy5cIiAqCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqCisuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKy5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworLlwiICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisuXCIgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLlwiICoKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiCisuVEggQ1VSTElORk9fUlRTUF9TRVNTSU9OX0lEIDMgIjEyIFNlcCAyMDE1IiAibGliY3VybCA3LjQ0LjAiICJjdXJsX2Vhc3lfZ2V0aW5mbyBvcHRpb25zIgorLlNIIE5BTUUKK0NVUkxJTkZPX1JUU1BfU0VTU0lPTl9JRCBcLSBnZXQgUlRTUCBzZXNzaW9uIElECisuU0ggU1lOT1BTSVMKKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKworQ1VSTGNvZGUgY3VybF9lYXN5X2dldGluZm8oQ1VSTCAqaGFuZGxlLCBDVVJMSU5GT19SVFNQX1NFU1NJT05fSUQsIGNoYXIgKippZCk7CisuU0ggREVTQ1JJUFRJT04KK1Bhc3MgYSBwb2ludGVyIHRvIGEgY2hhciBwb2ludGVyIHRvIHJlY2VpdmUgYSBwb2ludGVyIHRvIGEgc3RyaW5nIGhvbGRpbmcgdGhlCittb3N0IHJlY2VudCBSVFNQIFNlc3Npb24gSUQuCisKK0FwcGxpY2F0aW9ucyB3aXNoaW5nIHRvIHJlc3VtZSBhbiBSVFNQIHNlc3Npb24gb24gYW5vdGhlciBjb25uZWN0aW9uIHNob3VsZAorcmV0cmlldmUgdGhpcyBpbmZvIGJlZm9yZSBjbG9zaW5nIHRoZSBhY3RpdmUgY29ubmVjdGlvbi4KKworVGhlIFxmQmlkXGZQIHBvaW50ZXIgd2lsbCBiZSBOVUxMIG9yIHBvaW50aW5nIHRvIHByaXZhdGUgbWVtb3J5IHlvdSBNVVNUIE5PVAorZnJlZSAtIGl0IGdldHMgZnJlZWQgd2hlbiB5b3UgY2FsbCBcZkljdXJsX2Vhc3lfY2xlYW51cCgzKVxmUCBvbiB0aGUKK2NvcnJlc3BvbmRpbmcgQ1VSTCBoYW5kbGUuCisuU0ggUFJPVE9DT0xTCitSVFNQCisuU0ggRVhBTVBMRQorVE9ETworLlNIIEFWQUlMQUJJTElUWQorQWRkZWQgaW4gNy4yMC4wCisuU0ggUkVUVVJOIFZBTFVFCitSZXR1cm5zIENVUkxFX09LIGlmIHRoZSBvcHRpb24gaXMgc3VwcG9ydGVkLCBhbmQgQ1VSTEVfVU5LTk9XTl9PUFRJT04gaWYgbm90LgorLlNIICJTRUUgQUxTTyIKKy5CUiBjdXJsX2Vhc3lfZ2V0aW5mbyAiKDMpLCAiIGN1cmxfZWFzeV9zZXRvcHQgIigzKSwgIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fU0laRV9ET1dOTE9BRC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fU0laRV9ET1dOTE9BRC4zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1MDM5ZmYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19TSVpFX0RPV05MT0FELjMKQEAgLTAsMCArMSw0NSBAQAorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisuXCIgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKy5cIiAqCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqCisuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKy5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworLlwiICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisuXCIgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLlwiICoKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiCisuVEggQ1VSTElORk9fU0laRV9ET1dOTE9BRCAzICIyOCBBdWcgMjAxNSIgImxpYmN1cmwgNy40NC4wIiAiY3VybF9lYXN5X2dldGluZm8gb3B0aW9ucyIKKy5TSCBOQU1FCitDVVJMSU5GT19TSVpFX0RPV05MT0FEIFwtIGdldCB0aGUgbnVtYmVyIG9mIGRvd25sb2FkZWQgYnl0ZXMKKy5TSCBTWU5PUFNJUworI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCitDVVJMY29kZSBjdXJsX2Vhc3lfZ2V0aW5mbyhDVVJMICpoYW5kbGUsIENVUkxJTkZPX1NJWkVfRE9XTkxPQUQsIGRvdWJsZSAqZGxwKTsKKy5TSCBERVNDUklQVElPTgorUGFzcyBhIHBvaW50ZXIgdG8gYSBkb3VibGUgdG8gcmVjZWl2ZSB0aGUgdG90YWwgYW1vdW50IG9mIGJ5dGVzIHRoYXQgd2VyZQorZG93bmxvYWRlZC4gIFRoZSBhbW91bnQgaXMgb25seSBmb3IgdGhlIGxhdGVzdCB0cmFuc2ZlciBhbmQgd2lsbCBiZSByZXNldAorYWdhaW4gZm9yIGVhY2ggbmV3IHRyYW5zZmVyLiBUaGlzIGNvdW50cyBhY3R1YWwgcGF5bG9hZCBkYXRhLCB3aGF0J3MgYWxzbworY29tbW9ubHkgY2FsbGVkIGJvZHkuIEFsbCBtZXRhIGFuZCBoZWFkZXIgZGF0YSBhcmUgZXhjbHVkZWQgYW5kIHdpbGwgbm90IGJlCitjb3VudGVkIGluIHRoaXMgbnVtYmVyLgorLlNIIFBST1RPQ09MUworQWxsCisuU0ggRVhBTVBMRQorVE9ETworLlNIIEFWQUlMQUJJTElUWQorQWRkZWQgaW4gNy40LjEKKy5TSCBSRVRVUk4gVkFMVUUKK1JldHVybnMgQ1VSTEVfT0sgaWYgdGhlIG9wdGlvbiBpcyBzdXBwb3J0ZWQsIGFuZCBDVVJMRV9VTktOT1dOX09QVElPTiBpZiBub3QuCisuU0ggIlNFRSBBTFNPIgorLkJSIGN1cmxfZWFzeV9nZXRpbmZvICIoMyksICIgY3VybF9lYXN5X3NldG9wdCAiKDMpLCAiCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19TSVpFX1VQTE9BRC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fU0laRV9VUExPQUQuMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzRjNmRmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fU0laRV9VUExPQUQuMwpAQCAtMCwwICsxLDQyIEBACisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKy5cIiAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorLlwiICoKKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKy5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICoKKy5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisuXCIgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKy5cIiAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisuXCIgKgorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIKKy5USCBDVVJMSU5GT19TSVpFX1VQTE9BRCAzICIyOCBBdWcgMjAxNSIgImxpYmN1cmwgNy40NC4wIiAiY3VybF9lYXN5X2dldGluZm8gb3B0aW9ucyIKKy5TSCBOQU1FCitDVVJMSU5GT19TSVpFX1VQTE9BRCBcLSBnZXQgdGhlIG51bWJlciBvZiB1cGxvYWRlZCBieXRlcworLlNIIFNZTk9QU0lTCisjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CisKK0NVUkxjb2RlIGN1cmxfZWFzeV9nZXRpbmZvKENVUkwgKmhhbmRsZSwgQ1VSTElORk9fU0laRV9VUExPQUQsIGRvdWJsZSAqdXBsb2FkcCk7CisuU0ggREVTQ1JJUFRJT04KK1Bhc3MgYSBwb2ludGVyIHRvIGEgZG91YmxlIHRvIHJlY2VpdmUgdGhlIHRvdGFsIGFtb3VudCBvZiBieXRlcyB0aGF0IHdlcmUKK3VwbG9hZGVkLgorLlNIIFBST1RPQ09MUworQWxsCisuU0ggRVhBTVBMRQorVE9ETworLlNIIEFWQUlMQUJJTElUWQorQWRkZWQgaW4gNy40LjEKKy5TSCBSRVRVUk4gVkFMVUUKK1JldHVybnMgQ1VSTEVfT0sgaWYgdGhlIG9wdGlvbiBpcyBzdXBwb3J0ZWQsIGFuZCBDVVJMRV9VTktOT1dOX09QVElPTiBpZiBub3QuCisuU0ggIlNFRSBBTFNPIgorLkJSIGN1cmxfZWFzeV9nZXRpbmZvICIoMyksICIgY3VybF9lYXN5X3NldG9wdCAiKDMpLCAiCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19TUEVFRF9ET1dOTE9BRC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fU1BFRURfRE9XTkxPQUQuMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZjFjNzM5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fU1BFRURfRE9XTkxPQUQuMwpAQCAtMCwwICsxLDQyIEBACisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKy5cIiAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorLlwiICoKKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKy5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICoKKy5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisuXCIgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKy5cIiAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisuXCIgKgorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIKKy5USCBDVVJMSU5GT19TUEVFRF9ET1dOTE9BRCAzICIyOCBBdWcgMjAxNSIgImxpYmN1cmwgNy40NC4wIiAiY3VybF9lYXN5X2dldGluZm8gb3B0aW9ucyIKKy5TSCBOQU1FCitDVVJMSU5GT19TUEVFRF9ET1dOTE9BRCBcLSBnZXQgZG93bmxvYWQgc3BlZWQKKy5TSCBTWU5PUFNJUworI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCitDVVJMY29kZSBjdXJsX2Vhc3lfZ2V0aW5mbyhDVVJMICpoYW5kbGUsIENVUkxJTkZPX1NQRUVEX0RPV05MT0FELCBkb3VibGUgKnNwZWVkKTsKKy5TSCBERVNDUklQVElPTgorUGFzcyBhIHBvaW50ZXIgdG8gYSBkb3VibGUgdG8gcmVjZWl2ZSB0aGUgYXZlcmFnZSBkb3dubG9hZCBzcGVlZCB0aGF0IGN1cmwKK21lYXN1cmVkIGZvciB0aGUgY29tcGxldGUgZG93bmxvYWQuIE1lYXN1cmVkIGluIGJ5dGVzL3NlY29uZC4KKy5TSCBQUk9UT0NPTFMKKy5TSCBFWEFNUExFCitUT0RPCisuU0ggQVZBSUxBQklMSVRZCitBZGRlZCBpbiA3LjQuMQorLlNIIFJFVFVSTiBWQUxVRQorUmV0dXJucyBDVVJMRV9PSyBpZiB0aGUgb3B0aW9uIGlzIHN1cHBvcnRlZCwgYW5kIENVUkxFX1VOS05PV05fT1BUSU9OIGlmIG5vdC4KKy5TSCAiU0VFIEFMU08iCisuQlIgY3VybF9lYXN5X2dldGluZm8gIigzKSwgIiBjdXJsX2Vhc3lfc2V0b3B0ICIoMyksICIKKy5CUiBDVVJMSU5GT19TUEVFRF9VUExPQUQgIigzKSwgIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fU1BFRURfVVBMT0FELjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19TUEVFRF9VUExPQUQuMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNzllYTFmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fU1BFRURfVVBMT0FELjMKQEAgLTAsMCArMSw0MiBAQAorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisuXCIgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKy5cIiAqCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqCisuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKy5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworLlwiICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisuXCIgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLlwiICoKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiCisuVEggQ1VSTElORk9fU1BFRURfVVBMT0FEIDMgIjI4IEF1ZyAyMDE1IiAibGliY3VybCA3LjQ0LjAiICJjdXJsX2Vhc3lfZ2V0aW5mbyBvcHRpb25zIgorLlNIIE5BTUUKK0NVUkxJTkZPX1NQRUVEX1VQTE9BRCBcLSBnZXQgdXBsb2FkIHNwZWVkCisuU0ggU1lOT1BTSVMKKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKworQ1VSTGNvZGUgY3VybF9lYXN5X2dldGluZm8oQ1VSTCAqaGFuZGxlLCBDVVJMSU5GT19TUEVFRF9VUExPQUQsIGRvdWJsZSAqc3BlZWQpOworLlNIIERFU0NSSVBUSU9OCitQYXNzIGEgcG9pbnRlciB0byBhIGRvdWJsZSB0byByZWNlaXZlIHRoZSBhdmVyYWdlIHVwbG9hZCBzcGVlZCB0aGF0IGN1cmwKK21lYXN1cmVkIGZvciB0aGUgY29tcGxldGUgdXBsb2FkLiBNZWFzdXJlZCBpbiBieXRlcy9zZWNvbmQuCisuU0ggUFJPVE9DT0xTCisuU0ggRVhBTVBMRQorVE9ETworLlNIIEFWQUlMQUJJTElUWQorQWRkZWQgaW4KKy5TSCBSRVRVUk4gVkFMVUUKK1JldHVybnMgQ1VSTEVfT0sgaWYgdGhlIG9wdGlvbiBpcyBzdXBwb3J0ZWQsIGFuZCBDVVJMRV9VTktOT1dOX09QVElPTiBpZiBub3QuCisuU0ggIlNFRSBBTFNPIgorLkJSIGN1cmxfZWFzeV9nZXRpbmZvICIoMyksICIgY3VybF9lYXN5X3NldG9wdCAiKDMpLCAiCisuQlIgQ1VSTElORk9fU1BFRURfRE9XTkxPQUQgIigzKSwgIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fU1NMX0VOR0lORVMuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX1NTTF9FTkdJTkVTLjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzFlYmZjOQotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX1NTTF9FTkdJTkVTLjMKQEAgLTAsMCArMSw0NyBAQAorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisuXCIgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKy5cIiAqCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqCisuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKy5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworLlwiICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisuXCIgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLlwiICoKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiCisuVEggQ1VSTElORk9fU1NMX0VOR0lORVMgMyAiMSBTZXAgMjAxNSIgImxpYmN1cmwgNy40NC4wIiAiY3VybF9lYXN5X2dldGluZm8gb3B0aW9ucyIKKy5TSCBOQU1FCitDVVJMSU5GT19TU0xfRU5HSU5FUyBcLSBnZXQgYW4gc2xpc3Qgb2YgT3BlblNTTCBjcnlwdG8tZW5naW5lcworLlNIIFNZTk9QU0lTCisjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CisKK0NVUkxjb2RlIGN1cmxfZWFzeV9nZXRpbmZvKENVUkwgKmhhbmRsZSwgQ1VSTElORk9fU1NMX0VOR0lORVMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY3VybF9zbGlzdCAqKmVuZ2luZV9saXN0KTsKKy5TSCBERVNDUklQVElPTgorUGFzcyB0aGUgYWRkcmVzcyBvZiBhICdzdHJ1Y3QgY3VybF9zbGlzdCAqJyB0byByZWNlaXZlIGEgbGlua2VkLWxpc3Qgb2YKK09wZW5TU0wgY3J5cHRvLWVuZ2luZXMgc3VwcG9ydGVkLiBOb3RlIHRoYXQgZW5naW5lcyBhcmUgbm9ybWFsbHkgaW1wbGVtZW50ZWQKK2luIHNlcGFyYXRlIGR5bmFtaWMgbGlicmFyaWVzLiBIZW5jZSBub3QgYWxsIHRoZSByZXR1cm5lZCBlbmdpbmVzIG1heSBiZQorYXZhaWxhYmxlIGF0IHJ1bi10aW1lLiBcZkJOT1RFOlxmUCB5b3UgbXVzdCBjYWxsIFxmSWN1cmxfc2xpc3RfZnJlZV9hbGwoMylcZlAKK29uIHRoZSBsaXN0IHBvaW50ZXIgb25jZSB5b3UncmUgZG9uZSB3aXRoIGl0LCBhcyBsaWJjdXJsIHdpbGwgbm90IGZyZWUgdGhlCitkYXRhIGZvciB5b3UuCisuU0ggUFJPVE9DT0xTCitBbGwgVExTIGJhc2VkIG9uZXMuCisuU0ggRVhBTVBMRQorVE9ETworLlNIIEFWQUlMQUJJTElUWQorQWRkZWQgaW4gNy4xMi4zLiBBdmFpbGFibGUgaW4gT3BlblNTTCBidWlsZHMgd2l0aCAiZW5naW5lIiBzdXBwb3J0LgorLlNIIFJFVFVSTiBWQUxVRQorUmV0dXJucyBDVVJMRV9PSyBpZiB0aGUgb3B0aW9uIGlzIHN1cHBvcnRlZCwgYW5kIENVUkxFX1VOS05PV05fT1BUSU9OIGlmIG5vdC4KKy5TSCAiU0VFIEFMU08iCisuQlIgY3VybF9lYXN5X2dldGluZm8gIigzKSwgIiBjdXJsX2Vhc3lfc2V0b3B0ICIoMyksICIKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX1NTTF9WRVJJRllSRVNVTFQuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX1NTTF9WRVJJRllSRVNVTFQuMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODdjY2ZlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fU1NMX1ZFUklGWVJFU1VMVC4zCkBAIC0wLDAgKzEsNDMgQEAKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworLlwiICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisuXCIgKgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAorLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcworLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKgorLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCisuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKy5cIiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQorLlwiICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy5cIiAqCisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIgorLlRIIENVUkxJTkZPX1NTTF9WRVJJRllSRVNVTFQgMyAiMSBTZXAgMjAxNSIgImxpYmN1cmwgNy40NC4wIiAiY3VybF9lYXN5X2dldGluZm8gb3B0aW9ucyIKKy5TSCBOQU1FCitDVVJMSU5GT19TU0xfVkVSSUZZUkVTVUxUIFwtIGdldCB0aGUgcmVzdWx0IG9mIHRoZSBjZXJ0aWZpY2F0aW9uIHZlcmlmaWNhdGlvbgorLlNIIFNZTk9QU0lTCisjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CisKK0NVUkxjb2RlIGN1cmxfZWFzeV9nZXRpbmZvKENVUkwgKmhhbmRsZSwgQ1VSTElORk9fU1NMX1ZFUklGWVJFU1VMVCwgbG9uZyAqcmVzdWx0KTsKKy5TSCBERVNDUklQVElPTgorUGFzcyBhIHBvaW50ZXIgdG8gYSBsb25nIHRvIHJlY2VpdmUgdGhlIHJlc3VsdCBvZiB0aGUgY2VydGlmaWNhdGlvbgordmVyaWZpY2F0aW9uIHRoYXQgd2FzIHJlcXVlc3RlZCAodXNpbmcgdGhlIFxmSUNVUkxPUFRfU1NMX1ZFUklGWVBFRVIoMylcZlAKK29wdGlvbi4KKy5TSCBQUk9UT0NPTFMKK0FsbCB1c2luZyBUTFMKKy5TSCBFWEFNUExFCitUT0RPCisuU0ggQVZBSUxBQklMSVRZCitBZGRlZCBpbiA3LjUKKy5TSCBSRVRVUk4gVkFMVUUKK1JldHVybnMgQ1VSTEVfT0sgaWYgdGhlIG9wdGlvbiBpcyBzdXBwb3J0ZWQsIGFuZCBDVVJMRV9VTktOT1dOX09QVElPTiBpZiBub3QuCisuU0ggIlNFRSBBTFNPIgorLkJSIGN1cmxfZWFzeV9nZXRpbmZvICIoMyksICIgY3VybF9lYXN5X3NldG9wdCAiKDMpLCAiCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19TVEFSVFRSQU5TRkVSX1RJTUUuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX1NUQVJUVFJBTlNGRVJfVElNRS4zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0NjQzNjQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19TVEFSVFRSQU5TRkVSX1RJTUUuMwpAQCAtMCwwICsxLDQ2IEBACisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKy5cIiAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorLlwiICoKKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKy5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICoKKy5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisuXCIgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKy5cIiAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisuXCIgKgorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIKKy5USCBDVVJMSU5GT19TVEFSVFRSQU5TRkVSX1RJTUUgMyAiMjggQXVnIDIwMTUiICJsaWJjdXJsIDcuNDQuMCIgImN1cmxfZWFzeV9nZXRpbmZvIG9wdGlvbnMiCisuU0ggTkFNRQorQ1VSTElORk9fU1RBUlRUUkFOU0ZFUl9USU1FIFwtIGdldCB0aGUgdGltZSB1bnRpbCB0aGUgZmlyc3QgYnl0ZSBpcyByZWNlaXZlZAorLlNIIFNZTk9QU0lTCisjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CisKK0NVUkxjb2RlIGN1cmxfZWFzeV9nZXRpbmZvKENVUkwgKmhhbmRsZSwgQ1VSTElORk9fU1RBUlRUUkFOU0ZFUl9USU1FLCBkb3VibGUgKnRpbWVwKTsKKy5TSCBERVNDUklQVElPTgorUGFzcyBhIHBvaW50ZXIgdG8gYSBkb3VibGUgdG8gcmVjZWl2ZSB0aGUgdGltZSwgaW4gc2Vjb25kcywgaXQgdG9vayBmcm9tIHRoZQorc3RhcnQgdW50aWwgdGhlIGZpcnN0IGJ5dGUgaXMgcmVjZWl2ZWQgYnkgbGliY3VybC4gVGhpcyBpbmNsdWRlcworXGZJQ1VSTElORk9fUFJFVFJBTlNGRVJfVElNRSgzKVxmUCBhbmQgYWxzbyB0aGUgdGltZSB0aGUgc2VydmVyIG5lZWRzIHRvCitjYWxjdWxhdGUgdGhlIHJlc3VsdC4KKworU2VlIGFsc28gdGhlIFRJTUVTIG92ZXJ2aWV3IGluIHRoZSBcZkljdXJsX2Vhc3lfZ2V0aW5mbygzKVxmUCBtYW4gcGFnZS4KKy5TSCBQUk9UT0NPTFMKK0FsbAorLlNIIEVYQU1QTEUKK1RPRE8KKy5TSCBBVkFJTEFCSUxJVFkKK0FkZGVkIGluIDcuOS4yCisuU0ggUkVUVVJOIFZBTFVFCitSZXR1cm5zIENVUkxFX09LIGlmIHRoZSBvcHRpb24gaXMgc3VwcG9ydGVkLCBhbmQgQ1VSTEVfVU5LTk9XTl9PUFRJT04gaWYgbm90LgorLlNIICJTRUUgQUxTTyIKKy5CUiBjdXJsX2Vhc3lfZ2V0aW5mbyAiKDMpLCAiIGN1cmxfZWFzeV9zZXRvcHQgIigzKSwgIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fVExTX1NFU1NJT04uMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX1RMU19TRVNTSU9OLjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NjM2I2NQotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX1RMU19TRVNTSU9OLjMKQEAgLTAsMCArMSw2MCBAQAorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisuXCIgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKy5cIiAqCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqCisuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKy5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworLlwiICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisuXCIgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLlwiICoKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiCisuVEggQ1VSTElORk9fVExTX1NFU1NJT04gMyAiMTIgU2VwIDIwMTUiICJsaWJjdXJsIDcuNDQuMCIgImN1cmxfZWFzeV9nZXRpbmZvIG9wdGlvbnMiCisuU0ggTkFNRQorQ1VSTElORk9fVExTX1NFU1NJT04gXC0gZ2V0IFRMUyBzZXNzaW9uIGluZm8KKy5TSCBTWU5PUFNJUworLm5mCisjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CisKK0NVUkxjb2RlIGN1cmxfZWFzeV9nZXRpbmZvKENVUkwgKmhhbmRsZSwgQ1VSTElORk9fVExTX1NFU1NJT04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY3VybF90bHNzZXNzaW9uaW5mbyAqKnNlc3Npb24pOworLlNIIERFU0NSSVBUSU9OCitcZkJUaGlzIG9wdGlvbiBoYXMgYmVlbiBzdXBlcnNlZGVkXGZQIGJ5IFxmSUNVUkxJTkZPX1RMU19TU0xfUFRSKDMpXGZQIHdoaWNoCit3YXMgYWRkZWQgaW4gNy40OC4wLiBUaGUgb25seSByZWFzb24geW91IHdvdWxkIHVzZSB0aGlzIG9wdGlvbiBpbnN0ZWFkIGlzIGlmCit5b3UgY291bGQgYmUgdXNpbmcgYSB2ZXJzaW9uIG9mIGxpYmN1cmwgZWFybGllciB0aGFuIDcuNDguMC4KKworVGhpcyBvcHRpb24gaXMgZXhhY3RseSB0aGUgc2FtZSBhcyBcZklDVVJMSU5GT19UTFNfU1NMX1BUUigzKVxmUCBleGNlcHQgaW4gdGhlCitjYXNlIG9mIE9wZW5TU0wuIElmIHRoZSBzZXNzaW9uIFxmSWJhY2tlbmRcZlAgaXMgQ1VSTFNTTEJBQ0tFTkRfT1BFTlNTTCB0aGUKK3Nlc3Npb24gXGZJaW50ZXJuYWxzXGZQIHBvaW50ZXIgdmFyaWVzIGRlcGVuZGluZyBvbiB0aGUgb3B0aW9uOgorCitDVVJMSU5GT19UTFNfU0VTU0lPTiBPcGVuU1NMIHNlc3Npb24gXGZJaW50ZXJuYWxzXGZQIGlzIFNTTF9DVFggKi4KKworQ1VSTElORk9fVExTX1NTTF9QVFIgT3BlblNTTCBzZXNzaW9uIFxmSWludGVybmFsc1xmUCBpcyBTU0wgKi4KKworWW91IGNhbiBvYnRhaW4gYW4gU1NMX0NUWCBwb2ludGVyIGZyb20gYW4gU1NMIHBvaW50ZXIgdXNpbmcgT3BlblNTTCBmdW5jdGlvbgorU1NMX2dldF9TU0xfQ1RYLiBUaGVyZWZvcmUgdW5sZXNzIHlvdSBuZWVkIGNvbXBhdGliaWxpdHkgd2l0aCBvbGRlciB2ZXJzaW9ucyBvZgorbGliY3VybCB1c2UgXGZJQ1VSTElORk9fVExTX1NTTF9QVFIoMylcZlAuIFJlZmVyIHRvIHRoYXQgZG9jdW1lbnQgZm9yIG1vcmUKK2luZm9ybWF0aW9uLgorLlNIIFBST1RPQ09MUworQWxsIFRMUy1iYXNlZAorLlNIIEVYQU1QTEUKK1RPRE8KKy5TSCBBVkFJTEFCSUxJVFkKK0FkZGVkIGluIDcuMzQuMCwgYW5kIHN1cHBvcnRlZCBPcGVuU1NMLCBHbnVUTFMsIE5TUyBhbmQgZ3NraXQgb25seSB1cCB1bnRpbAorNy40OC4wIHdhcyByZWxlYXNlZC4KKy5TSCBSRVRVUk4gVkFMVUUKK1JldHVybnMgQ1VSTEVfT0sgaWYgdGhlIG9wdGlvbiBpcyBzdXBwb3J0ZWQsIGFuZCBDVVJMRV9VTktOT1dOX09QVElPTiBpZiBub3QuCisuU0ggIlNFRSBBTFNPIgorLkJSIGN1cmxfZWFzeV9nZXRpbmZvICIoMyksICIgY3VybF9lYXN5X3NldG9wdCAiKDMpLCAiCisuQlIgQ1VSTElORk9fVExTX1NTTF9QVFIgIigzKSwgIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fVExTX1NTTF9QVFIuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX1RMU19TU0xfUFRSLjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGVjZjBmYwotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxJTkZPX1RMU19TU0xfUFRSLjMKQEAgLTAsMCArMSwxNDEgQEAKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworLlwiICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisuXCIgKgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAorLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcworLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKgorLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCisuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKy5cIiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQorLlwiICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy5cIiAqCisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIgorLlRIIENVUkxJTkZPX1RMU19TU0xfUFRSIDMgIjIzIEZlYiAyMDE2IiAibGliY3VybCA3LjQ4LjAiICJjdXJsX2Vhc3lfZ2V0aW5mbyBvcHRpb25zIgorLlNIIE5BTUUKK0NVUkxJTkZPX1RMU19TRVNTSU9OLCBDVVJMSU5GT19UTFNfU1NMX1BUUiBcLSBnZXQgVExTIHNlc3Npb24gaW5mbworLlNIIFNZTk9QU0lTCisubmYKKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKworQ1VSTGNvZGUgY3VybF9lYXN5X2dldGluZm8oQ1VSTCAqaGFuZGxlLCBDVVJMSU5GT19UTFNfU1NMX1BUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjdXJsX3Rsc3Nlc3Npb25pbmZvICoqc2Vzc2lvbik7CisKKy8qIGlmIHlvdSBuZWVkIGNvbXBhdGliaWxpdHkgd2l0aCBsaWJjdXJsIDwgNy40OC4wIHVzZQorICAgQ1VSTElORk9fVExTX1NFU1NJT04gaW5zdGVhZDogKi8KKworQ1VSTGNvZGUgY3VybF9lYXN5X2dldGluZm8oQ1VSTCAqaGFuZGxlLCBDVVJMSU5GT19UTFNfU0VTU0lPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjdXJsX3Rsc3Nlc3Npb25pbmZvICoqc2Vzc2lvbik7CisuU0ggREVTQ1JJUFRJT04KK1Bhc3MgYSBwb2ludGVyIHRvIGEgJ3N0cnVjdCBjdXJsX3Rsc3Nlc3Npb25pbmZvIConLiAgVGhlIHBvaW50ZXIgd2lsbCBiZQoraW5pdGlhbGl6ZWQgdG8gcmVmZXIgdG8gYSAnc3RydWN0IGN1cmxfdGxzc2Vzc2lvbmluZm8gKicgdGhhdCB3aWxsIGNvbnRhaW4gYW4KK2VudW0gaW5kaWNhdGluZyB0aGUgU1NMIGxpYnJhcnkgdXNlZCBmb3IgdGhlIGhhbmRzaGFrZSBhbmQgYSBwb2ludGVyIHRvIHRoZQorcmVzcGVjdGl2ZSBpbnRlcm5hbCBUTFMgc2Vzc2lvbiBzdHJ1Y3R1cmUgb2YgdGhpcyB1bmRlcmx5aW5nIFNTTCBsaWJyYXJ5LgorCitUaGlzIG9wdGlvbiBtYXkgYmUgdXNlZnVsIGZvciBleGFtcGxlIHRvIGV4dHJhY3QgY2VydGlmaWNhdGUgaW5mb3JtYXRpb24gaW4gYQorZm9ybWF0IGNvbnZlbmllbnQgZm9yIGZ1cnRoZXIgcHJvY2Vzc2luZywgc3VjaCBhcyBtYW51YWwgdmFsaWRhdGlvbi4gUmVmZXIgdG8KK3RoZSBcZkJMSU1JVEFUSU9OU1xmUCBzZWN0aW9uLgorCisubmYKK3N0cnVjdCBjdXJsX3Rsc3Nlc3Npb25pbmZvIHsKKyAgY3VybF9zc2xiYWNrZW5kIGJhY2tlbmQ7CisgIHZvaWQgKmludGVybmFsczsKK307CisuZmkKKworVGhlIFxmSWJhY2tlbmRcZlAgc3RydWN0IG1lbWJlciBpcyBvbmUgb2YgdGhlIGRlZmluZXMgaW4gdGhlIENVUkxTU0xCQUNLRU5EXyoKK3NlcmllczogQ1VSTFNTTEJBQ0tFTkRfTk9ORSAod2hlbiBidWlsdCB3aXRob3V0IFRMUyBzdXBwb3J0KSwKK0NVUkxTU0xCQUNLRU5EX0FYVExTLCBDVVJMU1NMQkFDS0VORF9DWUFTU0wsIENVUkxTU0xCQUNLRU5EX0RBUldJTlNTTCwKK0NVUkxTU0xCQUNLRU5EX0dOVVRMUywgQ1VSTFNTTEJBQ0tFTkRfR1NLSVQsIENVUkxTU0xCQUNLRU5EX01CRURUTFMsCitDVVJMU1NMQkFDS0VORF9OU1MsIENVUkxTU0xCQUNLRU5EX09QRU5TU0wsIENVUkxTU0xCQUNLRU5EX1BPTEFSU1NMIG9yCitDVVJMU1NMQkFDS0VORF9TQ0hBTk5FTC4gKE5vdGUgdGhhdCB0aGUgT3BlblNTTCBmb3JrcyBhcmUgYWxsIHJlcG9ydGVkIGFzIGp1c3QKK09wZW5TU0wgaGVyZS4pCisKK1RoZSBcZklpbnRlcm5hbHNcZlAgc3RydWN0IG1lbWJlciB3aWxsIHBvaW50IHRvIGEgVExTIGxpYnJhcnkgc3BlY2lmaWMgcG9pbnRlcgorZm9yIHRoZSBhY3RpdmUgKCJpbiB1c2UiKSBTU0wgY29ubmVjdGlvbiwgd2l0aCB0aGUgZm9sbG93aW5nIHVuZGVybHlpbmcgdHlwZXM6CisuUlMKKy5JUCBHbnVUTFMKK2dudXRsc19zZXNzaW9uX3QKKy5JUCBnc2tpdAorZ3NrX2hhbmRsZQorLklQIE5TUworUFJGaWxlRGVzYyAqCisuSVAgT3BlblNTTAorQ1VSTElORk9fVExTX1NFU1NJT046IFNTTF9DVFggKgorCitDVVJMSU5GT19UTFNfU1NMX1BUUjogU1NMICoKKy5SRQorU2luY2UgNy40OC4wIHRoZSBcZklpbnRlcm5hbHNcZlAgbWVtYmVyIGNhbiBwb2ludCB0byB0aGVzZSBvdGhlciBTU0wgYmFja2VuZHMKK2FzIHdlbGw6CisuUlMKKy5JUCBheFRMUworU1NMICoKKy5JUCBtYmVkVExTCittYmVkdGxzX3NzbF9jb250ZXh0ICoKKy5JUCBQb2xhclNTTAorc3NsX2NvbnRleHQgKgorLklQICJTZWN1cmUgQ2hhbm5lbCAoV2luU1NMKSIKK0N0eHRIYW5kbGUgKgorLklQICJTZWN1cmUgVHJhbnNwb3J0IChEYXJ3aW5TU0wpIgorU1NMQ29udGV4dCAqCisuSVAgIldvbGZTU0wgKGZvcm1lcmx5IEN5YVNTTCkiCitTU0wgKgorLlJFCisKK0lmIHRoZSBcZklpbnRlcm5hbHNcZlAgcG9pbnRlciBpcyBOVUxMIHRoZW4gZWl0aGVyIHRoZSBTU0wgYmFja2VuZCBpcyBub3QKK3N1cHBvcnRlZCwgYW4gU1NMIHNlc3Npb24gaGFzIG5vdCB5ZXQgYmVlbiBlc3RhYmxpc2hlZCBvciB0aGUgY29ubmVjdGlvbiBpcyBubworbG9uZ2VyIGFzc29jaWF0ZWQgd2l0aCB0aGUgZWFzeSBoYW5kbGUgKGVnIGN1cmxfZWFzeV9wZXJmb3JtIGhhcyByZXR1cm5lZCkuCisuU0ggTElNSVRBVElPTlMKK1xmQlRoaXMgb3B0aW9uIGhhcyBzb21lIGxpbWl0YXRpb25zIHRoYXQgY291bGQgbWFrZSBpdCB1bnNhZmUgd2hlbiBpdCBjb21lcyB0bwordGhlIG1hbnVhbCB2ZXJpZmljYXRpb24gb2YgY2VydGlmaWNhdGVzLlxmUAorCitUaGlzIG9wdGlvbiBvbmx5IHJldHJpZXZlcyB0aGUgZmlyc3QgaW4tdXNlIFNTTCBzZXNzaW9uIHBvaW50ZXIgZm9yIHlvdXIgZWFzeQoraGFuZGxlLCBob3dldmVyIHlvdXIgZWFzeSBoYW5kbGUgbWF5IGhhdmUgbW9yZSB0aGFuIG9uZSBpbi11c2UgU1NMIHNlc3Npb24gaWYKK3VzaW5nIEZUUCBvdmVyIFNTTC4gVGhhdCBpcyBiZWNhdXNlIHRoZSBGVFAgcHJvdG9jb2wgaGFzIGEgY29udHJvbCBjaGFubmVsIGFuZAorYSBkYXRhIGNoYW5uZWwgYW5kIG9uZSBvciBib3RoIG1heSBiZSBvdmVyIFNTTC4gXGZCQ3VycmVudGx5IHRoZXJlIGlzIG5vIHdheSB0bworcmV0cmlldmUgYSBzZWNvbmQgaW4tdXNlIFNTTCBzZXNzaW9uIGFzc29jaWF0ZWQgd2l0aCBhbiBlYXN5IGhhbmRsZS5cZlAKKworVGhpcyBvcHRpb24gaGFzIG5vdCBiZWVuIHRob3JvdWdobHkgdGVzdGVkIHdpdGggcGxhaW50ZXh0IHByb3RvY29scyB0aGF0IGNhbiBiZQordXBncmFkZWQvZG93bmdyYWRlZCB0by9mcm9tIFNTTDogRlRQLCBTTVRQLCBQT1AzLCBJTUFQIHdoZW4gdXNlZCB3aXRoCitcZklDVVJMT1BUX1VTRV9TU0woMylcZlAuIFRob3VnaCB5b3Ugd2lsbCBiZSBhYmxlIHRvIHJldHJpZXZlIHRoZSBTU0wgcG9pbnRlciwKK2l0J3MgcG9zc2libGUgdGhhdCBiZWZvcmUgeW91IGNhbiBkbyB0aGF0IFxmQmRhdGEgKGluY2x1ZGluZyBhdXRoKSBtYXkgaGF2ZQorYWxyZWFkeSBiZWVuIHNlbnQgb3ZlciBhIGNvbm5lY3Rpb24gYWZ0ZXIgaXQgd2FzIHVwZ3JhZGVkLlxmUAorCitSZW5lZ290aWF0aW9uLiBJZiB1bnNhZmUgcmVuZWdvdGlhdGlvbiBvciByZW5lZ290aWF0aW9uIGluIGEgd2F5IHRoYXQgdGhlCitjZXJ0aWZpY2F0ZSBpcyBhbGxvd2VkIHRvIGNoYW5nZSBpcyBhbGxvd2VkIGJ5IHlvdXIgU1NMIGxpYnJhcnkgdGhpcyBtYXkgb2NjdXIKK2FuZCB0aGUgY2VydGlmaWNhdGUgbWF5IGNoYW5nZSwgYW5kIFxmQmRhdGEgbWF5IGNvbnRpbnVlIHRvIGJlIHNlbnQgb3IgcmVjZWl2ZWQKK2FmdGVyIHJlbmVnb3RpYXRpb24gYnV0IGJlZm9yZSB5b3UgYXJlIGFibGUgdG8gZ2V0IHRoZSAocG9zc2libHkpIGNoYW5nZWQgU1NMCitwb2ludGVyLFxmUCB3aXRoIHRoZSAocG9zc2libHkpIGNoYW5nZWQgY2VydGlmaWNhdGUgaW5mb3JtYXRpb24uCisKK0lmIHlvdSBhcmUgdXNpbmcgT3BlblNTTCBvciB3b2xmU1NMIHRoZW4gXGZJQ1VSTE9QVF9TU0xfQ1RYX0ZVTkNUSU9OKDMpXGZQIGNhbgorYmUgdXNlZCB0byBzZXQgYSBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gY2FsbGJhY2sgaW4gdGhlIENUWC4gVGhhdCBpcyBzYWZlcgordGhhbiB1c2luZyB0aGlzIG9wdGlvbiB0byBwb2xsIGZvciBjZXJ0aWZpY2F0ZSBjaGFuZ2VzIGFuZCBkb2Vzbid0IHN1ZmZlciBmcm9tCithbnkgb2YgdGhlIHByb2JsZW1zIGFib3ZlLiBUaGVyZSBpcyBjdXJyZW50bHkgbm8gd2F5IGluIGxpYmN1cmwgdG8gc2V0IGEKK3ZlcmlmaWNhdGlvbiBjYWxsYmFjayBmb3IgdGhlIG90aGVyIFNTTCBiYWNrZW5kcy4KKworSG93IGFyZSB5b3UgdXNpbmcgdGhpcyBvcHRpb24/IEFyZSB5b3UgYWZmZWN0ZWQgYnkgYW55IG9mIHRoZXNlIGxpbWl0YXRpb25zPworUGxlYXNlIGxldCB1cyBrbm93IGJ5IG1ha2luZyBhIGNvbW1lbnQgYXQKK2h0dHBzOi8vZ2l0aHViLmNvbS9jdXJsL2N1cmwvaXNzdWVzLzY4NQorLlNIIFBST1RPQ09MUworQWxsIFRMUy1iYXNlZAorLlNIIEVYQU1QTEUKK1RPRE8KKy5TSCBBVkFJTEFCSUxJVFkKK0FkZGVkIGluIDcuNDguMC4KKworVGhpcyBvcHRpb24gc3VwZXJzZWRlcyBcZklDVVJMSU5GT19UTFNfU0VTU0lPTigzKVxmUCB3aGljaCB3YXMgYWRkZWQgaW4gNy4zNC4wLgorVGhpcyBvcHRpb24gaXMgZXhhY3RseSB0aGUgc2FtZSBhcyB0aGF0IG9wdGlvbiBleGNlcHQgaW4gdGhlIGNhc2Ugb2YgT3BlblNTTC4KKy5TSCBSRVRVUk4gVkFMVUUKK1JldHVybnMgQ1VSTEVfT0sgaWYgdGhlIG9wdGlvbiBpcyBzdXBwb3J0ZWQsIGFuZCBDVVJMRV9VTktOT1dOX09QVElPTiBpZiBub3QuCisuU0ggIlNFRSBBTFNPIgorLkJSIGN1cmxfZWFzeV9nZXRpbmZvICIoMyksICIgY3VybF9lYXN5X3NldG9wdCAiKDMpLCAiCisuQlIgQ1VSTElORk9fVExTX1NFU1NJT04gIigzKSwgIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fVE9UQUxfVElNRS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTElORk9fVE9UQUxfVElNRS4zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwNjhhOGIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMSU5GT19UT1RBTF9USU1FLjMKQEAgLTAsMCArMSw0NSBAQAorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisuXCIgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKy5cIiAqCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqCisuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKy5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworLlwiICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisuXCIgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLlwiICoKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiCisuVEggQ1VSTElORk9fVE9UQUxfVElNRSAzICIyOCBBdWcgMjAxNSIgImxpYmN1cmwgNy40NC4wIiAiY3VybF9lYXN5X2dldGluZm8gb3B0aW9ucyIKKy5TSCBOQU1FCitDVVJMSU5GT19UT1RBTF9USU1FIFwtIGdldCB0b3RhbCB0aW1lIG9mIHByZXZpb3VzIHRyYW5zZmVyCisuU0ggU1lOT1BTSVMKKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKworQ1VSTGNvZGUgY3VybF9lYXN5X2dldGluZm8oQ1VSTCAqaGFuZGxlLCBDVVJMSU5GT19UT1RBTF9USU1FLCBkb3VibGUgKnRpbWVwKTsKKy5TSCBERVNDUklQVElPTgorUGFzcyBhIHBvaW50ZXIgdG8gYSBkb3VibGUgdG8gcmVjZWl2ZSB0aGUgdG90YWwgdGltZSBpbiBzZWNvbmRzIGZvciB0aGUKK3ByZXZpb3VzIHRyYW5zZmVyLCBpbmNsdWRpbmcgbmFtZSByZXNvbHZpbmcsIFRDUCBjb25uZWN0IGV0Yy4gVGhlIGRvdWJsZQorcmVwcmVzZW50cyB0aGUgdGltZSBpbiBzZWNvbmRzLCBpbmNsdWRpbmcgZnJhY3Rpb25zLgorCitTZWUgYWxzbyB0aGUgVElNRVMgb3ZlcnZpZXcgaW4gdGhlIFxmSWN1cmxfZWFzeV9nZXRpbmZvKDMpXGZQIG1hbiBwYWdlLgorLlNIIFBST1RPQ09MUworQWxsCisuU0ggRVhBTVBMRQorVE9ETworLlNIIEFWQUlMQUJJTElUWQorQWRkZWQgaW4gNy40LjEKKy5TSCBSRVRVUk4gVkFMVUUKK1JldHVybnMgQ1VSTEVfT0sgaWYgdGhlIG9wdGlvbiBpcyBzdXBwb3J0ZWQsIGFuZCBDVVJMRV9VTktOT1dOX09QVElPTiBpZiBub3QuCisuU0ggIlNFRSBBTFNPIgorLkJSIGN1cmxfZWFzeV9nZXRpbmZvICIoMyksICIgY3VybF9lYXN5X3NldG9wdCAiKDMpLCAiCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMTU9QVF9DSFVOS19MRU5HVEhfUEVOQUxUWV9TSVpFLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMTU9QVF9DSFVOS19MRU5HVEhfUEVOQUxUWV9TSVpFLjMKaW5kZXggNjZjZWFiOC4uYWIyZDJmNiAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE1PUFRfQ0hVTktfTEVOR1RIX1BFTkFMVFlfU0laRS4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxNT1BUX0NIVU5LX0xFTkdUSF9QRU5BTFRZX1NJWkUuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMTU9QVF9DT05URU5UX0xFTkdUSF9QRU5BTFRZX1NJWkUuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxNT1BUX0NPTlRFTlRfTEVOR1RIX1BFTkFMVFlfU0laRS4zCmluZGV4IDIwM2I2YWMuLjNiNGU4MWQgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxNT1BUX0NPTlRFTlRfTEVOR1RIX1BFTkFMVFlfU0laRS4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxNT1BUX0NPTlRFTlRfTEVOR1RIX1BFTkFMVFlfU0laRS4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxNT1BUX01BWENPTk5FQ1RTLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMTU9QVF9NQVhDT05ORUNUUy4zCmluZGV4IDc1OWNlMDguLmVlOWJkY2EgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxNT1BUX01BWENPTk5FQ1RTLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE1PUFRfTUFYQ09OTkVDVFMuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMTU9QVF9NQVhfSE9TVF9DT05ORUNUSU9OUy4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE1PUFRfTUFYX0hPU1RfQ09OTkVDVElPTlMuMwppbmRleCA3NTIyZDQzLi4yZTAzNTJmIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMTU9QVF9NQVhfSE9TVF9DT05ORUNUSU9OUy4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxNT1BUX01BWF9IT1NUX0NPTk5FQ1RJT05TLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE1PUFRfTUFYX1BJUEVMSU5FX0xFTkdUSC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE1PUFRfTUFYX1BJUEVMSU5FX0xFTkdUSC4zCmluZGV4IGMyYWRiNDUuLmNhYzNjNzEgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxNT1BUX01BWF9QSVBFTElORV9MRU5HVEguMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMTU9QVF9NQVhfUElQRUxJTkVfTEVOR1RILjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE1PUFRfTUFYX1RPVEFMX0NPTk5FQ1RJT05TLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMTU9QVF9NQVhfVE9UQUxfQ09OTkVDVElPTlMuMwppbmRleCAyNzgzYTdkLi44MzVjMmJkIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMTU9QVF9NQVhfVE9UQUxfQ09OTkVDVElPTlMuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMTU9QVF9NQVhfVE9UQUxfQ09OTkVDVElPTlMuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMTU9QVF9QSVBFTElOSU5HLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMTU9QVF9QSVBFTElOSU5HLjMKaW5kZXggYzc5NWM0OC4uNGM3OWIxYiAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE1PUFRfUElQRUxJTklORy4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxNT1BUX1BJUEVMSU5JTkcuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMTU9QVF9QSVBFTElOSU5HX1NFUlZFUl9CTC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE1PUFRfUElQRUxJTklOR19TRVJWRVJfQkwuMwppbmRleCBlM2VhNGIxLi42NjBhZmVjIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMTU9QVF9QSVBFTElOSU5HX1NFUlZFUl9CTC4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxNT1BUX1BJUEVMSU5JTkdfU0VSVkVSX0JMLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE1PUFRfUElQRUxJTklOR19TSVRFX0JMLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMTU9QVF9QSVBFTElOSU5HX1NJVEVfQkwuMwppbmRleCBjZjZlNmU3Li44YzVmNWQ0IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMTU9QVF9QSVBFTElOSU5HX1NJVEVfQkwuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMTU9QVF9QSVBFTElOSU5HX1NJVEVfQkwuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMTU9QVF9QVVNIREFUQS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE1PUFRfUFVTSERBVEEuMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYTlmZThhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE1PUFRfUFVTSERBVEEuMwpAQCAtMCwwICsxLDQ5IEBACisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKy5cIiAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorLlwiICoKKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKy5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICoKKy5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisuXCIgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKy5cIiAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisuXCIgKgorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIKKy5USCBDVVJMTU9QVF9QVVNIREFUQSAzICIxIEp1biAyMDE1IiAibGliY3VybCA3LjQ0LjAiICJjdXJsX211bHRpX3NldG9wdCBvcHRpb25zIgorLlNIIE5BTUUKK0NVUkxNT1BUX1BVU0hEQVRBIFwtIHBvaW50ZXIgdG8gcGFzcyB0byBwdXNoIGNhbGxiYWNrCisuU0ggU1lOT1BTSVMKKy5uZgorI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCitDVVJMTWNvZGUgY3VybF9tdWx0aV9zZXRvcHQoQ1VSTE0gKmhhbmRsZSwgQ1VSTE1PUFRfUFVTSERBVEEsIHZvaWQgKnBvaW50ZXIpOworLmZpCisuU0ggREVTQ1JJUFRJT04KK1NldCBcZklwb2ludGVyXGZQIHRvIHBhc3MgYXMgdGhlIGxhc3QgYXJndW1lbnQgdG8gdGhlCitcZklDVVJMTU9QVF9QVVNIRlVOQ1RJT04oMylcZlAgY2FsbGJhY2suIFRoZSBwb2ludGVyIHdpbGwgbm90IGJlIHRvdWNoZWQgb3IKK3VzZWQgYnkgbGliY3VybCBpdHNlbGYsIG9ubHkgcGFzc2VkIG9uIHRvIHRoZSBjYWxsYmFjayBmdW5jdGlvbi4KKy5TSCBERUZBVUxUCitOVUxMCisuU0ggUFJPVE9DT0xTCitIVFRQKFMpCisuU0ggRVhBTVBMRQorVE9ETworLlNIIEFWQUlMQUJJTElUWQorQWRkZWQgaW4gNy40NC4wCisuU0ggUkVUVVJOIFZBTFVFCitSZXR1cm5zIENVUkxNX09LIGlmIHRoZSBvcHRpb24gaXMgc3VwcG9ydGVkLCBhbmQgQ1VSTE1fVU5LTk9XTl9PUFRJT04gaWYgbm90LgorLlNIICJTRUUgQUxTTyIKKy5CUiBDVVJMTU9QVF9QVVNIRlVOQ1RJT04gIigzKSwgIiBDVVJMTU9QVF9QSVBFTElOSU5HICIoMyksICIKKy5CUiBDVVJMT1BUX1BJUEVXQUlUICIoMyksICIKKy5CUiBSRkMgNzU0MApkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE1PUFRfUFVTSEZVTkNUSU9OLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMTU9QVF9QVVNIRlVOQ1RJT04uMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZmUwMmY4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE1PUFRfUFVTSEZVTkNUSU9OLjMKQEAgLTAsMCArMSwxMzMgQEAKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworLlwiICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisuXCIgKgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAorLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcworLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKgorLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCisuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKy5cIiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQorLlwiICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy5cIiAqCisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIgorLlRIIENVUkxNT1BUX1BVU0hGVU5DVElPTiAzICIxIEp1biAyMDE1IiAibGliY3VybCA3LjQ0LjAiICJjdXJsX211bHRpX3NldG9wdCBvcHRpb25zIgorLlNIIE5BTUUKK0NVUkxNT1BUX1BVU0hGVU5DVElPTiBcLSBjYWxsYmFjayB0aGF0IGFwcHJvdmVzIG9yIGRlbmllcyBzZXJ2ZXIgcHVzaGVzCisuU0ggU1lOT1BTSVMKKy5uZgorI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCitjaGFyICpjdXJsX3B1c2hoZWFkZXJfYnludW0oc3RydWN0IGN1cmxfcHVzaGhlYWRlcnMgKmgsIHNpemVfdCBudW0pOworY2hhciAqY3VybF9wdXNoaGVhZGVyX2J5bmFtZShzdHJ1Y3QgY3VybF9wdXNoaGVhZGVycyAqaCwgY29uc3QgY2hhciAqbmFtZSk7CisKK2ludCBjdXJsX3B1c2hfY2FsbGJhY2soQ1VSTCAqcGFyZW50LAorICAgICAgICAgICAgICAgICAgICAgICBDVVJMICplYXN5LAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbnVtX2hlYWRlcnMsCisgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjdXJsX3B1c2hoZWFkZXJzICpoZWFkZXJzLAorICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp1c2VycCk7CisKK0NVUkxNY29kZSBjdXJsX211bHRpX3NldG9wdChDVVJMTSAqaGFuZGxlLCBDVVJMTU9QVF9QVVNIRlVOQ1RJT04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VybF9wdXNoX2NhbGxiYWNrIGZ1bmMpOworLmZpCisuU0ggREVTQ1JJUFRJT04KK1RoaXMgY2FsbGJhY2sgZ2V0cyBjYWxsZWQgd2hlbiBhIG5ldyBIVFRQLzIgc3RyZWFtIGlzIGJlaW5nIHB1c2hlZCBieSB0aGUKK3NlcnZlciAodXNpbmcgdGhlIFBVU0hfUFJPTUlTRSBmcmFtZSkuIElmIG5vIHB1c2ggY2FsbGJhY2sgaXMgc2V0LCBhbGwgb2ZmZXJlZAorcHVzaGVzIHdpbGwgYmUgZGVuaWVkIGF1dG9tYXRpY2FsbHkuCisuU0ggQ0FMTEJBQ0sgREVTQ1JJUFRJT04KK1RoZSBjYWxsYmFjayBnZXRzIGl0cyBhcmd1bWVudHMgbGlrZSB0aGlzOgorCitcZklwYXJlbnRcZlAgaXMgdGhlIGhhbmRsZSBvZiB0aGUgc3RyZWFtIG9uIHdoaWNoIHRoaXMgcHVzaCBhcnJpdmVzLiBUaGUgbmV3CitoYW5kbGUgaGFzIGJlZW4gZHVwaGFuZGxlKClkIGZyb20gdGhlIHBhcmVudCwgbWVhbmluZyB0aGF0IGl0IGhhcyBnb3R0ZW4gYWxsCitpdHMgb3B0aW9ucyBpbmhlcml0ZWQuIEl0IGlzIHRoZW4gdXAgdG8gdGhlIGFwcGxpY2F0aW9uIHRvIGFsdGVyIGFueSBvcHRpb25zCitpZiBkZXNpcmVkLgorCitcZkllYXN5XGZQIGlzIGEgbmV3bHkgY3JlYXRlZCBoYW5kbGUgdGhhdCByZXByZXNlbnRzIHRoaXMgdXBjb21pbmcgdHJhbnNmZXIuCisKK1xmSW51bV9oZWFkZXJzXGZQIGlzIHRoZSBudW1iZXIgb2YgbmFtZSt2YWx1ZSBwYWlycyB0aGF0IHdhcyByZWNlaXZlZCBhbmQgY2FuCitiZSBhY2Nlc3NlZAorCitcZkloZWFkZXJzXGZQIGlzIGEgaGFuZGxlIHVzZWQgdG8gYWNjZXNzIHB1c2ggaGVhZGVycyB1c2luZyB0aGUgYWNjZXNzb3IKK2Z1bmN0aW9ucyBkZXNjcmliZWQgYmVsb3cuIFRoaXMgb25seSBhY2Nlc3NlcyBhbmQgcHJvdmlkZXMgdGhlIFBVU0hfUFJPTUlTRQoraGVhZGVycywgdGhlIG5vcm1hbCByZXNwb25zZSBoZWFkZXJzIHdpbGwgYmUgcHJvdmlkZWQgaW4gdGhlIGhlYWRlciBjYWxsYmFjaworYXMgdXN1YWwuCisKK1xmSXVzZXJwXGZQIGlzIHRoZSBwb2ludGVyIHNldCB3aXRoIFxmSUNVUkxNT1BUX1BVU0hEQVRBKDMpXGZQCisKK0lmIHRoZSBjYWxsYmFjayByZXR1cm5zIENVUkxfUFVTSF9PSywgdGhlICdlYXN5JyBoYW5kbGUgd2lsbCBiZSBhZGRlZCB0byB0aGUKK211bHRpIGhhbmRsZSwgdGhlIGNhbGxiYWNrIG11c3Qgbm90IGRvIHRoYXQgYnkgaXRzZWxmLgorCitUaGUgY2FsbGJhY2sgY2FuIGFjY2VzcyBQVVNIX1BST01JU0UgaGVhZGVycyB3aXRoIHR3byBhY2Nlc3NvcgorZnVuY3Rpb25zLiBUaGVzZSBmdW5jdGlvbnMgY2FuIG9ubHkgYmUgdXNlZCBmcm9tIHdpdGhpbiB0aGlzIGNhbGxiYWNrIGFuZCB0aGV5CitjYW4gb25seSBhY2Nlc3MgdGhlIFBVU0hfUFJPTUlTRSBoZWFkZXJzLiBUaGUgbm9ybWFsIHJlc3BvbnNlIGhlYWRlcnMgd2lsbCBiZQorcGFzc2VkIHRvIHRoZSBoZWFkZXIgY2FsbGJhY2sgZm9yIHB1c2hlZCBzdHJlYW1zIGp1c3QgYXMgZm9yIG5vcm1hbCBzdHJlYW1zLgorLklQIGN1cmxfcHVzaGhlYWRlcl9ieW51bQorUmV0dXJucyB0aGUgaGVhZGVyIGF0IGluZGV4ICdudW0nIChvciBOVUxMKS4gVGhlIHJldHVybmVkIHBvaW50ZXIgcG9pbnRzIHRvIGEKKyJuYW1lOnZhbHVlIiBzdHJpbmcgdGhhdCB3aWxsIGJlIGZyZWVkIHdoZW4gdGhpcyBjYWxsYmFjayByZXR1cm5zLgorLklQIGN1cmxfcHVzaGhlYWRlcl9ieW5hbWUKK1JldHVybnMgdGhlIHZhbHVlIGZvciB0aGUgZ2l2ZW4gaGVhZGVyIG5hbWUgKG9yIE5VTEwpLiBUaGlzIGlzIGEgc2hvcnRjdXQgc28KK3RoYXQgdGhlIGFwcGxpY2F0aW9uIGRvZXNuJ3QgaGF2ZSB0byBsb29wIHRocm91Z2ggYWxsIGhlYWRlcnMgdG8gZmluZCB0aGUgb25lCitpdCBpcyBpbnRlcmVzdGVkIGluLiBUaGUgZGF0YSBwb2ludGVkIHdpbGwgYmUgZnJlZWQgd2hlbiB0aGlzIGNhbGxiYWNrCityZXR1cm5zLiBJZiBtb3JlIHRoYW4gb25lIGhlYWRlciBmaWVsZCB1c2UgdGhlIHNhbWUgbmFtZSwgdGhpcyByZXR1cm5zIG9ubHkKK3RoZSBmaXJzdCBvbmUuCisuU0ggQ0FMTEJBQ0sgUkVUVVJOIFZBTFVFCisuSVAgIkNVUkxfUFVTSF9PSyAoMCkiCitUaGUgYXBwbGljYXRpb24gaGFzIGFjY2VwdGVkIHRoZSBzdHJlYW0gYW5kIGl0IGNhbiBub3cgc3RhcnQgcmVjZWl2aW5nIGRhdGEsCit0aGUgb3duZXJzaGlwIG9mIHRoZSBDVVJMIGhhbmRsZSBoYXMgYmVlbiB0YWtlbiBvdmVyIGJ5IHRoZSBhcHBsaWNhdGlvbi4KKy5JUCAiQ1VSTF9QVVNIX0RFTlkgKDEpIgorVGhlIGNhbGxiYWNrIGRlbmllcyB0aGUgc3RyZWFtIGFuZCBubyBkYXRhIGZvciB0aGlzIHdpbGwgcmVhY2ggdGhlCithcHBsaWNhdGlvbiwgdGhlIGVhc3kgaGFuZGxlIHdpbGwgYmUgZGVzdHJveWVkIGJ5IGxpYmN1cmwuCisuSVAgKgorQWxsIG90aGVyIHJldHVybiBjb2RlcyBhcmUgcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UuCisuU0ggREVGQVVMVAorTlVMTCwgbm8gY2FsbGJhY2sKKy5TSCBQUk9UT0NPTFMKK0hUVFAoUykgKEhUVFAvMiBvbmx5KQorLlNIIEVYQU1QTEUKKy5uZgorLyogb25seSBhbGxvdyBwdXNoZXMgZm9yIGZpbGUgbmFtZXMgc3RhcnRpbmcgd2l0aCAicHVzaC0iICovCitpbnQgcHVzaF9jYWxsYmFjayhDVVJMICpwYXJlbnQsCisgICAgICAgICAgICAgICAgICBDVVJMICplYXN5LAorICAgICAgICAgICAgICAgICAgc2l6ZV90IG51bV9oZWFkZXJzLAorICAgICAgICAgICAgICAgICAgc3RydWN0IGN1cmxfcHVzaGhlYWRlcnMgKmhlYWRlcnMsCisgICAgICAgICAgICAgICAgICB2b2lkICp1c2VycCkKK3sKKyAgY2hhciAqaGVhZHA7CisgIGludCAqdHJhbnNmZXJzID0gKGludCAqKXVzZXJwOworICBGSUxFICpvdXQ7CisgIGhlYWRwID0gY3VybF9wdXNoaGVhZGVyX2J5bmFtZShoZWFkZXJzLCAiOnBhdGgiKTsKKyAgaWYoaGVhZHAgJiYgIXN0cm5jbXAoaGVhZHAsICIvcHVzaC0iLCA2KSkgeworICAgIGZwcmludGYoc3RkZXJyLCAiVGhlIFBBVEggaXMgJXNcXG4iLCBoZWFkcCk7CisKKyAgICAvKiBzYXZlIHRoZSBwdXNoIGhlcmUgKi8KKyAgICBvdXQgPSBmb3BlbigicHVzaGVkLXN0cmVhbSIsICJ3YiIpOworCisgICAgLyogd3JpdGUgdG8gdGhpcyBmaWxlICovCisgICAgY3VybF9lYXN5X3NldG9wdChlYXN5LCBDVVJMT1BUX1dSSVRFREFUQSwgb3V0KTsKKworICAgICgqdHJhbnNmZXJzKSsrOyAvKiBvbmUgbW9yZSAqLworCisgICAgcmV0dXJuIENVUkxfUFVTSF9PSzsKKyAgfQorICByZXR1cm4gQ1VSTF9QVVNIX0RFTlk7Cit9CisKK2N1cmxfbXVsdGlfc2V0b3B0KG11bHRpLCBDVVJMTU9QVF9QVVNIRlVOQ1RJT04sIHB1c2hfY2FsbGJhY2spOworY3VybF9tdWx0aV9zZXRvcHQobXVsdGksIENVUkxNT1BUX1BVU0hEQVRBLCAmY291bnRlcik7CisuZmkKKy5TSCBBVkFJTEFCSUxJVFkKK0FkZGVkIGluIDcuNDQuMAorLlNIIFJFVFVSTiBWQUxVRQorUmV0dXJucyBDVVJMTV9PSyBpZiB0aGUgb3B0aW9uIGlzIHN1cHBvcnRlZCwgYW5kIENVUkxNX1VOS05PV05fT1BUSU9OIGlmIG5vdC4KKy5TSCAiU0VFIEFMU08iCisuQlIgQ1VSTE1PUFRfUFVTSERBVEEgIigzKSwgIiBDVVJMTU9QVF9QSVBFTElOSU5HICIoMyksICIgQ1VSTE9QVF9QSVBFV0FJVCAiKDMpLCAiCisuQlIgUkZDIDc1NDAKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxNT1BUX1NPQ0tFVERBVEEuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxNT1BUX1NPQ0tFVERBVEEuMwppbmRleCBiZjdlNmE3Li5iOWNkYzgzIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMTU9QVF9TT0NLRVREQVRBLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE1PUFRfU09DS0VUREFUQS4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxNT1BUX1NPQ0tFVEZVTkNUSU9OLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMTU9QVF9TT0NLRVRGVU5DVElPTi4zCmluZGV4IGQ2NGZlMTEuLjExMzAyMWUgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxNT1BUX1NPQ0tFVEZVTkNUSU9OLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE1PUFRfU09DS0VURlVOQ1RJT04uMwpAQCAtNSwxMSArNSwxMSBAQAogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogLlwiICoKLS5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTIwLDcgKzIwLDcgQEAKIC5cIiAqCiAuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIC5cIgotLlRIIENVUkxNT1BUX1NPQ0tFVEZVTkNUSU9OIDMgIjMgTm92IDIwMTQiICJsaWJjdXJsIDcuMzkuMCIgImN1cmxfbXVsdGlfc2V0b3B0IG9wdGlvbnMiCisuVEggQ1VSTE1PUFRfU09DS0VURlVOQ1RJT04gMyAiMyBOb3YgMjAxNiIgImxpYmN1cmwgNy4zOS4wIiAiY3VybF9tdWx0aV9zZXRvcHQgb3B0aW9ucyIKIC5TSCBOQU1FCiBDVVJMTU9QVF9TT0NLRVRGVU5DVElPTiBcLSBjYWxsYmFjayBpbmZvcm1lZCBhYm91dCB3aGF0IHRvIHdhaXQgZm9yCiAuU0ggU1lOT1BTSVMKQEAgLTI5LDcgKzI5LDcgQEAKIAogaW50IHNvY2tldF9jYWxsYmFjayhDVVJMICplYXN5LCAgICAgIC8qIGVhc3kgaGFuZGxlICovCiAgICAgICAgICAgICAgICAgICAgIGN1cmxfc29ja2V0X3QgcywgLyogc29ja2V0ICovCi0gICAgICAgICAgICAgICAgICAgIGludCB3aGF0LCAgICAgICAgLyogc2VlIGFib3ZlICovCisgICAgICAgICAgICAgICAgICAgIGludCB3aGF0LCAgICAgICAgLyogZGVzY3JpYmVzIHRoZSBzb2NrZXQgKi8KICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdXNlcnAsICAgICAvKiBwcml2YXRlIGNhbGxiYWNrIHBvaW50ZXIgKi8KICAgICAgICAgICAgICAgICAgICAgdm9pZCAqc29ja2V0cCk7ICAvKiBwcml2YXRlIHNvY2tldCBwb2ludGVyICovCiAKQEAgLTQ2LDYgKzQ2LDE4IEBACiBjYWxsYmFjaydzIFxmQnVzZXJwXGZQIGFyZ3VtZW50IHdpdGggXGZJQ1VSTE1PUFRfU09DS0VUREFUQSgzKVxmUC4gIFNlZQogXGZJY3VybF9tdWx0aV9zb2NrZXRfYWN0aW9uKDMpXGZQIGZvciBtb3JlIGRldGFpbHMgb24gaG93IHRoZSBjYWxsYmFjayBpcyB1c2VkCiBhbmQgc2hvdWxkIHdvcmsuCisKK1RoZSBcZkJ3aGF0XGZQIHBhcmFtZXRlciBpbmZvcm1zIHRoZSBjYWxsYmFjayBvbiB0aGUgc3RhdHVzIG9mIHRoZSBnaXZlbgorc29ja2V0LiBJdCBjYW4gaG9sZCBvbmUgb2YgdGhlc2UgdmFsdWVzOgorLklQIENVUkxfUE9MTF9JTgorV2FpdCBmb3IgaW5jb21pbmcgZGF0YS4gRm9yIHRoZSBzb2NrZXQgdG8gYmVjb21lIHJlYWRhYmxlLgorLklQIENVUkxfUE9MTF9PVVQKK1dhaXQgZm9yIG91dGdvaW5nIGRhdGEuIEZvciB0aGUgc29ja2V0IHRvIGJlY29tZSB3cml0YWJsZS4KKy5JUCBDVVJMX1BPTExfSU5PVVQKK1dhaXQgZm9yIGluY29taW5nIGFiZCBvdXRnb2luZyBkYXRhLiBGb3IgdGhlIHNvY2tldCB0byBiZWNvbWUgcmVhZGFibGUgb3IKK3dyaXRhYmxlLgorLklQIENVUkxfUE9MTF9SRU1PVkUKK1RoZSBzcGVjaWZpZWQgc29ja2V0L2ZpbGUgZGVzY3JpcHRvciBpcyBubyBsb25nZXIgdXNlZCBieSBsaWJjdXJsLgogLlNIIERFRkFVTFQKIE5VTEwgKG5vIGNhbGxiYWNrKQogLlNIIFBST1RPQ09MUwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE1PUFRfVElNRVJEQVRBLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMTU9QVF9USU1FUkRBVEEuMwppbmRleCA0MTYyN2RhLi45ZDJiNjZmIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMTU9QVF9USU1FUkRBVEEuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMTU9QVF9USU1FUkRBVEEuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMTU9QVF9USU1FUkZVTkNUSU9OLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMTU9QVF9USU1FUkZVTkNUSU9OLjMKaW5kZXggZjUwOWI0NS4uN2ZjYjdhNSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE1PUFRfVElNRVJGVU5DVElPTi4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxNT1BUX1RJTUVSRlVOQ1RJT04uMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0FDQ0VQVFRJTUVPVVRfTVMuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQUNDRVBUVElNRU9VVF9NUy4zCmluZGV4IGE1MWM4NmEuLjcwMzI1ZmQgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQUNDRVBUVElNRU9VVF9NUy4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQUNDRVBUVElNRU9VVF9NUy4zCkBAIC01LDExICs1LDExIEBACiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAuXCIgKgotLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzEsMTEgKzMxLDIxIEBACiBQYXNzIGEgbG9uZyB0ZWxsaW5nIGxpYmN1cmwgdGhlIG1heGltdW0gbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byB3YWl0IGZvciBhCiBzZXJ2ZXIgdG8gY29ubmVjdCBiYWNrIHRvIGxpYmN1cmwgd2hlbiBhbiBhY3RpdmUgRlRQIGNvbm5lY3Rpb24gaXMgdXNlZC4KIC5TSCBERUZBVUxUCi1JZiBubyB0aW1lb3V0IGlzIHNldCwgdGhlIGludGVybmFsIGRlZmF1bHQgb2YgNjAwMDAgKG9uZSBtaW51dGUpIHdpbGwgYmUgdXNlZC4KKzYwMDAwIG1pbGxpc2Vjb25kcwogLlNIIFBST1RPQ09MUwogRlRQCiAuU0ggRVhBTVBMRQotVE9ETworLm5mCitDVVJMICpjdXJsID0gY3VybF9lYXN5X2luaXQoKTsKK2lmKGN1cmwpIHsKKyAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1VSTCwgImZ0cDovL2V4YW1wbGUuY29tL3BhdGgvZmlsZSIpOworCisgIC8qIHdhaXQgbm8gbW9yZSB0aGFuIDUgc2Vjb25kcyBmb3IgRlRQIHNlcnZlciByZXNwb25zZXMgKi8KKyAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX0FDQ0VQVFRJTUVPVVRfTVMsIDUwMDBMKTsKKworICBjdXJsX2Vhc3lfcGVyZm9ybShjdXJsKTsKK30KKy5maQogLlNIIEFWQUlMQUJJTElUWQogQWRkZWQgaW4gNy4yNC4wCiAuU0ggUkVUVVJOIFZBTFVFCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0FDQ0VQVF9FTkNPRElORy4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9BQ0NFUFRfRU5DT0RJTkcuMwppbmRleCAzNzY3OTlhLi5jMzEyNjMxIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0FDQ0VQVF9FTkNPRElORy4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQUNDRVBUX0VOQ09ESU5HLjMKQEAgLTUsMTEgKzUsMTEgQEAKIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKIC5cIiAqCi0uXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zMiwyNyArMzIsNDkgQEAKIAogU2V0cyB0aGUgY29udGVudHMgb2YgdGhlIEFjY2VwdC1FbmNvZGluZzogaGVhZGVyIHNlbnQgaW4gYSBIVFRQIHJlcXVlc3QsIGFuZAogZW5hYmxlcyBkZWNvZGluZyBvZiBhIHJlc3BvbnNlIHdoZW4gYSBDb250ZW50LUVuY29kaW5nOiBoZWFkZXIgaXMgcmVjZWl2ZWQuCi1UaHJlZSBlbmNvZGluZ3MgYXJlIHN1cHBvcnRlZDogXGZJaWRlbnRpdHlcZlAsIHdoaWNoIGRvZXMgbm90aGluZywKK1RocmVlIGVuY29kaW5ncyBhcmUgc3VwcG9ydGVkOiBcZklpZGVudGl0eVxmUCwgbWVhbmluZyBub24tY29tcHJlc3NlZCwKIFxmSWRlZmxhdGVcZlAgd2hpY2ggcmVxdWVzdHMgdGhlIHNlcnZlciB0byBjb21wcmVzcyBpdHMgcmVzcG9uc2UgdXNpbmcgdGhlCiB6bGliIGFsZ29yaXRobSwgYW5kIFxmSWd6aXBcZlAgd2hpY2ggcmVxdWVzdHMgdGhlIGd6aXAgYWxnb3JpdGhtLgogCiBJZiBhIHplcm8tbGVuZ3RoIHN0cmluZyBpcyBzZXQgbGlrZSAiIiwgdGhlbiBhbiBBY2NlcHQtRW5jb2Rpbmc6IGhlYWRlcgogY29udGFpbmluZyBhbGwgYnVpbHQtaW4gc3VwcG9ydGVkIGVuY29kaW5ncyBpcyBzZW50LgogCitTZXQgdGhpcyBvcHRpb24gdG8gTlVMTCB0byBleHBsaWNpdGx5IGRpc2FibGUgaXQsIHdoaWNoIG1ha2VzIGxpYmN1cmwgbm90IHNlbmQKK2FuIEFjY2VwdC1FbmNvZGluZzogaGVhZGVyIGFuZCBub3QgZGVjb21wcmVzcyBjb250ZW50cyBhdXRvbWF0aWNhbGx5LgorCiBZb3UgY2FuIGFsc28gb3B0IHRvIGp1c3QgaW5jbHVkZSB0aGUgQWNjZXB0LUVuY29kaW5nOiBoZWFkZXIgaW4geW91ciByZXF1ZXN0CiB3aXRoIFxmSUNVUkxPUFRfSFRUUEhFQURFUigzKVxmUCBidXQgdGhlbiB0aGVyZSB3aWxsIGJlIG5vIGF1dG9tYXRpYwogZGVjb21wcmVzc2luZyB3aGVuIHJlY2VpdmluZyBkYXRhLgogCiBUaGlzIGlzIGEgcmVxdWVzdCwgbm90IGFuIG9yZGVyOyB0aGUgc2VydmVyIG1heSBvciBtYXkgbm90IGRvIGl0LiAgVGhpcyBvcHRpb24KIG11c3QgYmUgc2V0ICh0byBhbnkgbm9uLU5VTEwgdmFsdWUpIG9yIGVsc2UgYW55IHVuc29saWNpdGVkIGVuY29kaW5nIGRvbmUgYnkKLXRoZSBzZXJ2ZXIgaXMgaWdub3JlZC4gU2VlIHRoZSBzcGVjaWFsIGZpbGUgbGliL1JFQURNRS5lbmNvZGluZyBmb3IgZnVydGhlcgotZGV0YWlscy4KK3RoZSBzZXJ2ZXIgaXMgaWdub3JlZC4KKworU2VydmVycyBtaWdodCByZXNwb25kIHdpdGggQ29udGVudC1FbmNvZGluZyBldmVuIHdpdGhvdXQgZ2V0dGluZyBhCitBY2NlcHQtRW5jb2Rpbmc6IGluIHRoZSByZXF1ZXN0LiBTZXJ2ZXJzIG1pZ2h0IHJlc3BvbmQgd2l0aCBhIGRpZmZlcmVudAorQ29udGVudC1FbmNvZGluZyB0aGFuIHdoYXQgd2FzIGFza2VkIGZvciBpbiB0aGUgcmVxdWVzdC4KKworVGhlIENvbnRlbnQtTGVuZ3RoOiBzZXJ2ZXJzIHNlbmQgZm9yIGEgY29tcHJlc3NlZCByZXNwb25zZSBpcyBzdXBwb3NlZCB0bworaW5kaWNhdGUgdGhlIGxlbmd0aCBvZiB0aGUgY29tcHJlc3NlZCBjb250ZW50IHNvIHdoZW4gYXV0byBkZWNvZGluZyBpcyBlbmFibGVkCitpdCBtYXkgbm90IG1hdGNoIHRoZSBzdW0gb2YgYnl0ZXMgcmVwb3J0ZWQgYnkgdGhlIHdyaXRlIGNhbGxiYWNrcyAoYWx0aG91Z2gsCitzZW5kaW5nIHRoZSBsZW5ndGggb2YgdGhlIG5vbi1jb21wcmVzc2VkIGNvbnRlbnQgaXMgYSBjb21tb24gc2VydmVyIG1pc3Rha2UpLgogLlNIIERFRkFVTFQKIE5VTEwKIC5TSCBQUk9UT0NPTFMKIEhUVFAKIC5TSCBFWEFNUExFCi1UT0RPCisubmYKK0NVUkwgKmN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpOworaWYoY3VybCkgeworICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfVVJMLCAiaHR0cDovL2V4YW1wbGUuY29tIik7CisKKyAgLyogZW5hYmxlIGFsbCBzdXBwb3J0ZWQgYnVpbHQtaW4gY29tcHJlc3Npb25zICovCisgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9BQ0NFUFRfRU5DT0RJTkcsICIiKTsKKworICAvKiBQZXJmb3JtIHRoZSByZXF1ZXN0ICovCisgIGN1cmxfZWFzeV9wZXJmb3JtKGN1cmwpOworfQorLmZpCiAuU0ggQVZBSUxBQklMSVRZCiBUaGlzIG9wdGlvbiB3YXMgY2FsbGVkIENVUkxPUFRfRU5DT0RJTkcgYmVmb3JlIDcuMjEuNgogLlNIIFJFVFVSTiBWQUxVRQpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9BRERSRVNTX1NDT1BFLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0FERFJFU1NfU0NPUEUuMwppbmRleCA1MTBlM2IzLi5mMzIzMjc5IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0FERFJFU1NfU0NPUEUuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0FERFJFU1NfU0NPUEUuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0FQUEVORC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9BUFBFTkQuMwppbmRleCAwMzUyMjk2Li5jMjJhY2Y3IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0FQUEVORC4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQVBQRU5ELjMKQEAgLTUsMTEgKzUsMTEgQEAKIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKIC5cIiAqCi0uXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yOCwxNyArMjgsMjggQEAKIAogQ1VSTGNvZGUgY3VybF9lYXN5X3NldG9wdChDVVJMICpoYW5kbGUsIENVUkxPUFRfQVBQRU5ELCBsb25nIGFwcGVuZCk7CiAuU0ggREVTQ1JJUFRJT04KLUEgcGFyYW1ldGVyIHNldCB0byAxIHRlbGxzIHRoZSBsaWJyYXJ5IHRvIGFwcGVuZCB0byB0aGUgcmVtb3RlIGZpbGUgaW5zdGVhZCBvZgotb3ZlcndyaXRlIGl0LiBUaGlzIGlzIG9ubHkgdXNlZnVsIHdoZW4gdXBsb2FkaW5nIHRvIGFuIEZUUCBzaXRlLgorQSBsb25nIHBhcmFtZXRlciBzZXQgdG8gMSB0ZWxscyB0aGUgbGlicmFyeSB0byBhcHBlbmQgdG8gdGhlIHJlbW90ZSBmaWxlCitpbnN0ZWFkIG9mIG92ZXJ3cml0ZSBpdC4gVGhpcyBpcyBvbmx5IHVzZWZ1bCB3aGVuIHVwbG9hZGluZyB0byBhbiBGVFAgc2l0ZS4KIC5TSCBERUZBVUxUCi0wCiswIChkaXNhYmxlZCkKIC5TSCBQUk9UT0NPTFMKIEZUUAogLlNIIEVYQU1QTEUKLVRPRE8KKy5uZgorQ1VSTCAqY3VybCA9IGN1cmxfZWFzeV9pbml0KCk7CitpZihjdXJsKSB7CisKKyAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1VSTCwgImZ0cDovL2V4YW1wbGUuY29tL2Rpci90by9uZXdmaWxlIik7CisgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9VUExPQUQsIDFMKTsKKyAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX0FQUEVORCwgMUwpOworCisgIGN1cmxfZWFzeV9wZXJmb3JtKGN1cmwpOworfQorLmZpCiAuU0ggQVZBSUxBQklMSVRZCiBUaGlzIG9wdGlvbiB3YXMga25vd24gYXMgQ1VSTE9QVF9GVFBBUFBFTkQgdXAgdG8gNy4xNi40CiAuU0ggUkVUVVJOIFZBTFVFCiBSZXR1cm5zIENVUkxFX09LIGlmIHRoZSBvcHRpb24gaXMgc3VwcG9ydGVkLCBhbmQgQ1VSTEVfVU5LTk9XTl9PUFRJT04gaWYgbm90LgogLlNIICJTRUUgQUxTTyIKIC5CUiBDVVJMT1BUX0RJUkxJU1RPTkxZICIoMyksICIgQ1VSTE9QVF9SRVNVTUVfRlJPTSAiKDMpLCAiCisuQlIgQ1VSTE9QVF9VUExPQUQgIigzKSwgIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9BVVRPUkVGRVJFUi4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9BVVRPUkVGRVJFUi4zCmluZGV4IGY4ZDU2NjguLmU2YTNhMDggMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQVVUT1JFRkVSRVIuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0FVVE9SRUZFUkVSLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9CVUZGRVJTSVpFLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0JVRkZFUlNJWkUuMwppbmRleCA5ZTMxYWU5Li4xMTMxMThlIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0JVRkZFUlNJWkUuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0JVRkZFUlNJWkUuMwpAQCAtNSwxMSArNSwxMSBAQAogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogLlwiICoKLS5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTQ3LDQgKzQ3LDQgQEAKIC5TSCBSRVRVUk4gVkFMVUUKIFJldHVybnMgQ1VSTEVfT0sgaWYgdGhlIG9wdGlvbiBpcyBzdXBwb3J0ZWQsIGFuZCBDVVJMRV9VTktOT1dOX09QVElPTiBpZiBub3QuCiAuU0ggIlNFRSBBTFNPIgotLkJSIENVUkxPUFRfTUFYX1JFQ1ZfU1BFRUQgIigzKSwgIiBDVVJMT1BUX1dSSVRFRlVOQ1RJT04gIigzKSwgIgorLkJSIENVUkxPUFRfTUFYX1JFQ1ZfU1BFRURfTEFSR0UgIigzKSwgIiBDVVJMT1BUX1dSSVRFRlVOQ1RJT04gIigzKSwgIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DQUlORk8uMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ0FJTkZPLjMKaW5kZXggODVjOWJhMy4uYTA1ZjVjMCAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DQUlORk8uMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0NBSU5GTy4zCkBAIC01LDExICs1LDExIEBACiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAuXCIgKgotLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNDMsMTIgKzQzLDEyIEBACiAuU0ggREVGQVVMVAogQnVpbHQtaW4gc3lzdGVtIHNwZWNpZmljCiAuU0ggUFJPVE9DT0xTCi1BbGwgVExTIGJhc2VkIHByb3RvY29sczogSFRUUFMsIEZUUFMsIElNQVBTLCBQT1AzLCBTTVRQUyBldGMuCitBbGwgVExTIGJhc2VkIHByb3RvY29sczogSFRUUFMsIEZUUFMsIElNQVBTLCBQT1AzUywgU01UUFMgZXRjLgogLlNIIEVYQU1QTEUKIFRPRE8KIC5TSCBBVkFJTEFCSUxJVFkKIEZvciBTU0wgZW5naW5lcyB0aGF0IGRvbid0IHN1cHBvcnQgY2VydGlmaWNhdGUgZmlsZXMgdGhlIENVUkxPUFRfQ0FJTkZPIG9wdGlvbgotaXMgaWdub3JlZC4gUmVmZXIgdG8gaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL3NzbC1jb21wYXJlZC5odG1sCitpcyBpZ25vcmVkLiBSZWZlciB0byBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL3NzbC1jb21wYXJlZC5odG1sCiAuU0ggUkVUVVJOIFZBTFVFCiBSZXR1cm5zIENVUkxFX09LIGlmIHRoZSBvcHRpb24gaXMgc3VwcG9ydGVkLCBDVVJMRV9VTktOT1dOX09QVElPTiBpZiBub3QsIG9yCiBDVVJMRV9PVVRfT0ZfTUVNT1JZIGlmIHRoZXJlIHdhcyBpbnN1ZmZpY2llbnQgaGVhcCBzcGFjZS4KZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ0FQQVRILjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0NBUEFUSC4zCmluZGV4IDY2OTVmOWYuLjAzNjlmODkgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ0FQQVRILjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DQVBBVEguMwpAQCAtNSwxMSArNSwxMSBAQAogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogLlwiICoKLS5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTM5LDcgKzM5LDcgQEAKIC5TSCBERUZBVUxUCiBOVUxMCiAuU0ggUFJPVE9DT0xTCi1BbGwgVExTIGJhc2VkIHByb3RvY29sczogSFRUUFMsIEZUUFMsIElNQVBTLCBQT1AzLCBTTVRQUyBldGMuCitBbGwgVExTIGJhc2VkIHByb3RvY29sczogSFRUUFMsIEZUUFMsIElNQVBTLCBQT1AzUywgU01UUFMgZXRjLgogLlNIIEVYQU1QTEUKIFRPRE8KIC5TSCBBVkFJTEFCSUxJVFkKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ0VSVElORk8uMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ0VSVElORk8uMwppbmRleCBhNTA4Yjg2Li5lODM2ZTQwIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0NFUlRJTkZPLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DRVJUSU5GTy4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTMwLDkgKzMwLDkgQEAKIC5TSCBERVNDUklQVElPTgogUGFzcyBhIGxvbmcgc2V0IHRvIDEgdG8gZW5hYmxlIGxpYmN1cmwncyBjZXJ0aWZpY2F0ZSBjaGFpbiBpbmZvIGdhdGhlcmVyLiBXaXRoCiB0aGlzIGVuYWJsZWQsIGxpYmN1cmwgd2lsbCBleHRyYWN0IGxvdHMgb2YgaW5mb3JtYXRpb24gYW5kIGRhdGEgYWJvdXQgdGhlCi1jZXJ0aWZpY2F0ZXMgaW4gdGhlIGNlcnRpZmljYXRlIGNoYWluIHVzZWQgaW4gdGhlIFNTTCBjb25uZWN0aW9uLiBUaGlzIGRhdGEgbWF5Ci10aGVuIGJlIHJldHJpZXZlZCBhZnRlciBhIHRyYW5zZmVyIHVzaW5nIFxmSWN1cmxfZWFzeV9nZXRpbmZvKDMpXGZQIGFuZCBpdHMKLW9wdGlvbiBcZklDVVJMSU5GT19DRVJUSU5GT1xmUC4KK2NlcnRpZmljYXRlcyBpbiB0aGUgY2VydGlmaWNhdGUgY2hhaW4gdXNlZCBpbiB0aGUgU1NMIGNvbm5lY3Rpb24uIFRoaXMgZGF0YQorbWF5IHRoZW4gYmUgcmV0cmlldmVkIGFmdGVyIGEgdHJhbnNmZXIgdXNpbmcgXGZJY3VybF9lYXN5X2dldGluZm8oMylcZlAgYW5kCitpdHMgb3B0aW9uIFxmSUNVUkxJTkZPX0NFUlRJTkZPKDMpXGZQLgogLlNIIERFRkFVTFQKIDAKIC5TSCBQUk9UT0NPTFMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ0hVTktfQkdOX0ZVTkNUSU9OLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0NIVU5LX0JHTl9GVU5DVElPTi4zCmluZGV4IDRkZDc5MDcuLmQzMTQxMmQgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ0hVTktfQkdOX0ZVTkNUSU9OLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DSFVOS19CR05fRlVOQ1RJT04uMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0NIVU5LX0RBVEEuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ0hVTktfREFUQS4zCmluZGV4IDRkMGZmM2QuLjFjZWIyY2UgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ0hVTktfREFUQS4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ0hVTktfREFUQS4zCkBAIC01LDExICs1LDExIEBACiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAuXCIgKgotLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjksOCArMjksOCBAQAogQ1VSTGNvZGUgY3VybF9lYXN5X3NldG9wdChDVVJMICpoYW5kbGUsIENVUkxPUFRfQ0hVTktfREFUQSwgdm9pZCAqcG9pbnRlcik7CiAuU0ggREVTQ1JJUFRJT04KIFBhc3MgYSBcZklwb2ludGVyXGZQIHRoYXQgd2lsbCBiZSB1bnRvdWNoZWQgYnkgbGliY3VybCBhbmQgcGFzc2VkIGFzIHRoZSBwdHIKLWFyZ3VtZW50IHRvIHRoZSBcZklDVVJMX0NIVU5LX0JHTl9GVU5DVElPTigzKVxmUCBhbmQKLVxmSUNVUkxfQ0hVTktfRU5EX0ZVTkNUSU9OKDMpXGZQLgorYXJndW1lbnQgdG8gdGhlIFxmSUNVUkxPUFRfQ0hVTktfQkdOX0ZVTkNUSU9OKDMpXGZQIGFuZAorXGZJQ1VSTE9QVF9DSFVOS19FTkRfRlVOQ1RJT04oMylcZlAuCiAuU0ggREVGQVVMVAogTlVMTAogLlNIIFBST1RPQ09MUwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DSFVOS19FTkRfRlVOQ1RJT04uMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ0hVTktfRU5EX0ZVTkNUSU9OLjMKaW5kZXggNjRmODI5Yy4uZDJiNmM1NSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DSFVOS19FTkRfRlVOQ1RJT04uMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0NIVU5LX0VORF9GVU5DVElPTi4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ0xPU0VTT0NLRVREQVRBLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0NMT1NFU09DS0VUREFUQS4zCmluZGV4IGI4YWYzNTMuLjFkNmNhMDYgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ0xPU0VTT0NLRVREQVRBLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DTE9TRVNPQ0tFVERBVEEuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0NMT1NFU09DS0VURlVOQ1RJT04uMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ0xPU0VTT0NLRVRGVU5DVElPTi4zCmluZGV4IDI1OTRiMTYuLmY0ZThiZDkgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ0xPU0VTT0NLRVRGVU5DVElPTi4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ0xPU0VTT0NLRVRGVU5DVElPTi4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ09OTkVDVFRJTUVPVVQuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ09OTkVDVFRJTUVPVVQuMwppbmRleCA3ZjI4ZTYzLi5mMTg2OTQ4IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0NPTk5FQ1RUSU1FT1VULjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DT05ORUNUVElNRU9VVC4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ09OTkVDVFRJTUVPVVRfTVMuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ09OTkVDVFRJTUVPVVRfTVMuMwppbmRleCBkODExMThlLi43YTI0YThiIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0NPTk5FQ1RUSU1FT1VUX01TLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DT05ORUNUVElNRU9VVF9NUy4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTQ3LDcgKzQ3LDcgQEAKICAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1VSTCwgImh0dHA6Ly9leGFtcGxlLmNvbSIpOwogCiAgIC8qIGNvbXBsZXRlIGNvbm5lY3Rpb24gd2l0aGluIDEwMDAwIG1pbGxpc2Vjb25kcyAqLwotICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfQ09OTkVDVFRJTUVPVVQsIDEwMDAwTCk7CisgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9DT05ORUNUVElNRU9VVF9NUywgMTAwMDBMKTsKIAogICBjdXJsX2Vhc3lfcGVyZm9ybShjdXJsKTsKIH0KZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ09OTkVDVF9PTkxZLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0NPTk5FQ1RfT05MWS4zCmluZGV4IGFmYjNjZmQuLjYxMjg5ZTggMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ09OTkVDVF9PTkxZLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DT05ORUNUX09OTFkuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zMyw3ICszMyw3IEBACiBhbmQgdGhlbiByZXR1cm4uCiAKIFRoZSBvcHRpb24gY2FuIGJlIHVzZWQgdG8gc2ltcGx5IHRlc3QgYSBjb25uZWN0aW9uIHRvIGEgc2VydmVyLCBidXQgaXMgbW9yZQotdXNlZnVsIHdoZW4gdXNlZCB3aXRoIHRoZSBcZklDVVJMSU5GT19MQVNUU09DS0VUXGZQIG9wdGlvbiB0bwordXNlZnVsIHdoZW4gdXNlZCB3aXRoIHRoZSBcZklDVVJMSU5GT19BQ1RJVkVTT0NLRVQoMylcZlAgb3B0aW9uIHRvCiBcZkljdXJsX2Vhc3lfZ2V0aW5mbygzKVxmUCBhcyB0aGUgbGlicmFyeSBjYW4gc2V0IHVwIHRoZSBjb25uZWN0aW9uIGFuZCB0aGVuCiB0aGUgYXBwbGljYXRpb24gY2FuIG9idGFpbiB0aGUgbW9zdCByZWNlbnRseSB1c2VkIHNvY2tldCBmb3Igc3BlY2lhbCBkYXRhCiB0cmFuc2ZlcnMuCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0NPTk5FQ1RfVE8uMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ09OTkVDVF9UTy4zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwMjUwMjEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0NPTk5FQ1RfVE8uMwpAQCAtMCwwICsxLDExMSBAQAorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisuXCIgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKy5cIiAqCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICoKKy5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisuXCIgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKy5cIiAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisuXCIgKgorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIKKy5USCBDVVJMT1BUX0NPTk5FQ1RfVE8gMyAiMTAgQXByaWwgMjAxNiIgImxpYmN1cmwgNy40OS4wIiAiY3VybF9lYXN5X3NldG9wdCBvcHRpb25zIgorLlNIIE5BTUUKK0NVUkxPUFRfQ09OTkVDVF9UTyBcLSBDb25uZWN0IHRvIGEgc3BlY2lmaWMgaG9zdCBhbmQgcG9ydCBpbnN0ZWFkIG9mIHRoZSBVUkwncyBob3N0IGFuZCBwb3J0CisuU0ggU1lOT1BTSVMKKy5uZgorI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCitDVVJMY29kZSBjdXJsX2Vhc3lfc2V0b3B0KENVUkwgKmhhbmRsZSwgQ1VSTE9QVF9DT05ORUNUX1RPLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY3VybF9zbGlzdCAqY29ubmVjdF90byk7CisuZmkKKy5TSCBERVNDUklQVElPTgorUGFzcyBhIHBvaW50ZXIgdG8gYSBsaW5rZWQgbGlzdCBvZiBzdHJpbmdzIHdpdGggImNvbm5lY3QgdG8iIGluZm9ybWF0aW9uIHRvCit1c2UgZm9yIGVzdGFibGlzaGluZyBuZXR3b3JrIGNvbm5lY3Rpb25zIHdpdGggdGhpcyBoYW5kbGUuIFRoZSBsaW5rZWQgbGlzdAorc2hvdWxkIGJlIGEgZnVsbHkgdmFsaWQgbGlzdCBvZiBcZkJzdHJ1Y3QgY3VybF9zbGlzdFxmUCBzdHJ1Y3RzIHByb3Blcmx5CitmaWxsZWQgaW4uIFVzZSBcZkljdXJsX3NsaXN0X2FwcGVuZCgzKVxmUCB0byBjcmVhdGUgdGhlIGxpc3QgYW5kCitcZkljdXJsX3NsaXN0X2ZyZWVfYWxsKDMpXGZQIHRvIGNsZWFuIHVwIGFuIGVudGlyZSBsaXN0LgorCitFYWNoIHNpbmdsZSBzdHJpbmcgc2hvdWxkIGJlIHdyaXR0ZW4gdXNpbmcgdGhlIGZvcm1hdAorSE9TVDpQT1JUOkNPTk5FQ1QtVE8tSE9TVDpDT05ORUNULVRPLVBPUlQgd2hlcmUgSE9TVCBpcyB0aGUgaG9zdCBvZiB0aGUKK3JlcXVlc3QsIFBPUlQgaXMgdGhlIHBvcnQgb2YgdGhlIHJlcXVlc3QsIENPTk5FQ1QtVE8tSE9TVCBpcyB0aGUgaG9zdCBuYW1lIHRvCitjb25uZWN0IHRvLCBhbmQgQ09OTkVDVC1UTy1QT1JUIGlzIHRoZSBwb3J0IHRvIGNvbm5lY3QgdG8uCisKK1RoZSBmaXJzdCBzdHJpbmcgdGhhdCBtYXRjaGVzIHRoZSByZXF1ZXN0J3MgaG9zdCBhbmQgcG9ydCBpcyB1c2VkLgorCitEb3R0ZWQgbnVtZXJpY2FsIElQIGFkZHJlc3NlcyBhcmUgc3VwcG9ydGVkIGZvciBIT1NUIGFuZCBDT05ORUNULVRPLUhPU1QuCitBIG51bWVyaWNhbCBJUHY2IGFkZHJlc3MgbXVzdCBiZSB3cml0dGVuIHdpdGhpbiBbYnJhY2tldHNdLgorCitBbnkgb2YgdGhlIGZvdXIgdmFsdWVzIG1heSBiZSBlbXB0eS4gV2hlbiB0aGUgSE9TVCBvciBQT1JUIGlzIGVtcHR5LCB0aGUgaG9zdAorb3IgcG9ydCB3aWxsIGFsd2F5cyBtYXRjaCAodGhlIHJlcXVlc3QncyBob3N0IG9yIHBvcnQgaXMgaWdub3JlZCkuCitXaGVuIENPTk5FQ1QtVE8tSE9TVCBvciBDT05ORUNULVRPLVBPUlQgaXMgZW1wdHksIHRoZSAiY29ubmVjdCB0byIgZmVhdHVyZQord2lsbCBiZSBkaXNhYmxlZCBmb3IgdGhlIGhvc3Qgb3IgcG9ydCwgYW5kIHRoZSByZXF1ZXN0J3MgaG9zdCBvciBwb3J0IHdpbGwgYmUKK3VzZWQgdG8gZXN0YWJsaXNoIHRoZSBuZXR3b3JrIGNvbm5lY3Rpb24uCisKK1RoaXMgb3B0aW9uIGlzIHN1aXRhYmxlIHRvIGRpcmVjdCB0aGUgcmVxdWVzdCBhdCBhIHNwZWNpZmljIHNlcnZlciwgZS5nLiBhdCBhCitzcGVjaWZpYyBjbHVzdGVyIG5vZGUgaW4gYSBjbHVzdGVyIG9mIHNlcnZlcnMuCisKK1RoZSAiY29ubmVjdCB0byIgaG9zdCBhbmQgcG9ydCBhcmUgb25seSB1c2VkIHRvIGVzdGFibGlzaCB0aGUgbmV0d29yaworY29ubmVjdGlvbi4gVGhleSBkbyBOT1QgYWZmZWN0IHRoZSBob3N0IGFuZCBwb3J0IHRoYXQgYXJlIHVzZWQgZm9yIFRMUy9TU0wKKyhlLmcuIFNOSSwgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uKSBvciBmb3IgdGhlIGFwcGxpY2F0aW9uIHByb3RvY29scy4KKworSW4gY29udHJhc3QgdG8gXGZJQ1VSTE9QVF9SRVNPTFZFKDMpXGZQLCB0aGUgb3B0aW9uCitcZklDVVJMT1BUX0NPTk5FQ1RfVE8oMylcZlAgZG9lcyBub3QgcHJlLXBvcHVsYXRlIHRoZSBETlMgY2FjaGUgYW5kIHRoZXJlZm9yZQoraXQgZG9lcyBub3QgYWZmZWN0IGZ1dHVyZSB0cmFuc2ZlcnMgb2Ygb3RoZXIgZWFzeSBoYW5kbGVzIHRoYXQgaGF2ZSBiZWVuIGFkZGVkCit0byB0aGUgc2FtZSBtdWx0aSBoYW5kbGUuCisKK1RoZSAiY29ubmVjdCB0byIgaG9zdCBhbmQgcG9ydCBhcmUgaWdub3JlZCBpZiB0aGV5IGFyZSBlcXVhbCB0byB0aGUgaG9zdCBhbmQKK3RoZSBwb3J0IGluIHRoZSByZXF1ZXN0IFVSTCwgYmVjYXVzZSBjb25uZWN0aW5nIHRvIHRoZSBob3N0IGFuZCB0aGUgcG9ydCBpbgordGhlIHJlcXVlc3QgVVJMIGlzIHRoZSBkZWZhdWx0IGJlaGF2aW9yLgorCitJZiBhbiBIVFRQIHByb3h5IGlzIHVzZWQgZm9yIGEgcmVxdWVzdCBoYXZpbmcgYSBzcGVjaWFsICJjb25uZWN0IHRvIiBob3N0IG9yCitwb3J0LCBhbmQgdGhlICJjb25uZWN0IHRvIiBob3N0IG9yIHBvcnQgZGlmZmVycyBmcm9tIHRoZSByZXF1ZXN0cydzIGhvc3QgYW5kCitwb3J0LCB0aGUgSFRUUCBwcm94eSBpcyBhdXRvbWF0aWNhbGx5IHN3aXRjaGVkIHRvIHR1bm5lbCBtb2RlIGZvciB0aGlzCitzcGVjaWZpYyByZXF1ZXN0LiBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBjb25uZWN0IHRvIGEKK3NwZWNpZmljIGhvc3Qgb3IgcG9ydCBpbiBub3JtYWwgKG5vbi10dW5uZWwpIG1vZGUuCisKK1doZW4gdGhpcyBvcHRpb24gaXMgcGFzc2VkIHRvIFxmSWN1cmxfZWFzeV9zZXRvcHQoMylcZlAsIGxpYmN1cmwgd2lsbCBub3QgY29weQordGhlIGVudGlyZSBsaXN0IHNvIHlvdSBcZkJtdXN0XGZQIGtlZXAgaXQgYXJvdW5kIHVudGlsIHlvdSBubyBsb25nZXIgdXNlIHRoaXMKK1xmSWhhbmRsZVxmUCBmb3IgYSB0cmFuc2ZlciBiZWZvcmUgeW91IGNhbGwgXGZJY3VybF9zbGlzdF9mcmVlX2FsbCgzKVxmUCBvbgordGhlIGxpc3QuCisKKy5TSCBERUZBVUxUCitOVUxMCisuU0ggUFJPVE9DT0xTCitBbGwKKy5TSCBFWEFNUExFCisubmYKK0NVUkwgKmN1cmw7CitzdHJ1Y3QgY3VybF9zbGlzdCAqY29ubmVjdF90byA9IE5VTEw7Citjb25uZWN0X3RvID0gY3VybF9zbGlzdF9hcHBlbmQoTlVMTCwgImV4YW1wbGUuY29tOjpzZXJ2ZXIxLmV4YW1wbGUuY29tOiIpOworCitjdXJsID0gY3VybF9lYXN5X2luaXQoKTsKK2lmKGN1cmwpIHsKKyAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX0NPTk5FQ1RfVE8sIGNvbm5lY3RfdG8pOworICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfVVJMLCAiaHR0cDovL2V4YW1wbGUuY29tIik7CisKKyAgY3VybF9lYXN5X3BlcmZvcm0oY3VybCk7CisKKyAgLyogYWx3YXlzIGNsZWFudXAgKi8KKyAgY3VybF9lYXN5X2NsZWFudXAoY3VybCk7Cit9CisKK2N1cmxfc2xpc3RfZnJlZV9hbGwoY29ubmVjdF90byk7CisuZmkKKy5TSCBBVkFJTEFCSUxJVFkKK0FkZGVkIGluIDcuNDkuMAorLlNIIFJFVFVSTiBWQUxVRQorUmV0dXJucyBDVVJMRV9PSyBpZiB0aGUgb3B0aW9uIGlzIHN1cHBvcnRlZCwgYW5kIENVUkxFX1VOS05PV05fT1BUSU9OIGlmIG5vdC4KKy5TSCAiU0VFIEFMU08iCisuQlIgQ1VSTE9QVF9VUkwgIigzKSwgIiBDVVJMT1BUX1JFU09MVkUgIigzKSwgIiBDVVJMT1BUX0ZPTExPV0xPQ0FUSU9OICIoMyksICIgQ1VSTE9QVF9IVFRQUFJPWFlUVU5ORUwgICIoMyksICIKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ09OVl9GUk9NX05FVFdPUktfRlVOQ1RJT04uMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ09OVl9GUk9NX05FVFdPUktfRlVOQ1RJT04uMwppbmRleCBlYmM0ZDc3Li4xZmYzMDBlIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0NPTlZfRlJPTV9ORVRXT1JLX0ZVTkNUSU9OLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DT05WX0ZST01fTkVUV09SS19GVU5DVElPTi4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ09OVl9GUk9NX1VURjhfRlVOQ1RJT04uMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ09OVl9GUk9NX1VURjhfRlVOQ1RJT04uMwppbmRleCA2ODJlMWM1Li40ODc0OTJjIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0NPTlZfRlJPTV9VVEY4X0ZVTkNUSU9OLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DT05WX0ZST01fVVRGOF9GVU5DVElPTi4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ09OVl9UT19ORVRXT1JLX0ZVTkNUSU9OLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0NPTlZfVE9fTkVUV09SS19GVU5DVElPTi4zCmluZGV4IGU4ODE3ZjguLmExZDZhMWEgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ09OVl9UT19ORVRXT1JLX0ZVTkNUSU9OLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DT05WX1RPX05FVFdPUktfRlVOQ1RJT04uMwpAQCAtNSwxMSArNSwxMSBAQAogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogLlwiICoKLS5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTc5LDQgKzc5LDQgQEAKIC5TSCBSRVRVUk4gVkFMVUUKIFJldHVybnMgQ1VSTEVfT0sgaWYgdGhlIG9wdGlvbiBpcyBzdXBwb3J0ZWQsIGFuZCBDVVJMRV9VTktOT1dOX09QVElPTiBpZiBub3QuCiAuU0ggIlNFRSBBTFNPIgotLkJSIENVUkxPUFRfQ09OVl9GUk9NX05FVFdPUktfRlVOQ1RJT04gIigzKSwgIiBDVVJMT1BUX0NPTlZfVE9fVVRGOF9GVU5DVElPTiAiKDMpLCAiCisuQlIgQ1VSTE9QVF9DT05WX0ZST01fTkVUV09SS19GVU5DVElPTiAiKDMpLCAiIENVUkxPUFRfQ09OVl9GUk9NX1VURjhfRlVOQ1RJT04gIigzKSwgIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DT09LSUUuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ09PS0lFLjMKaW5kZXggYTM5MDEzNS4uMzJjMmZjMiAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DT09LSUUuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0NPT0tJRS4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ09PS0lFRklMRS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DT09LSUVGSUxFLjMKaW5kZXggYTRjM2IwMi4uMDA4MTZiMSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DT09LSUVGSUxFLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DT09LSUVGSUxFLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzAsOCArMzAsOCBAQAogLlNIIERFU0NSSVBUSU9OCiBQYXNzIGEgcG9pbnRlciB0byBhIHplcm8gdGVybWluYXRlZCBzdHJpbmcgYXMgcGFyYW1ldGVyLiBJdCBzaG91bGQgcG9pbnQgdG8KIHRoZSBmaWxlIG5hbWUgb2YgeW91ciBmaWxlIGhvbGRpbmcgY29va2llIGRhdGEgdG8gcmVhZC4gVGhlIGNvb2tpZSBkYXRhIGNhbiBiZQotaW4gZWl0aGVyIHRoZSBvbGQgTmV0c2NhcGUgLyBNb3ppbGxhIGNvb2tpZSBkYXRhIGZvcm1hdCBvciBqdXN0IHJlZ3VsYXIKLUhUVFAtc3R5bGUgaGVhZGVycyBkdW1wZWQgdG8gYSBmaWxlLgoraW4gZWl0aGVyIHRoZSBvbGQgTmV0c2NhcGUgLyBNb3ppbGxhIGNvb2tpZSBkYXRhIGZvcm1hdCBvciBqdXN0IHJlZ3VsYXIgSFRUUAoraGVhZGVycyAoU2V0LUNvb2tpZSBzdHlsZSkgZHVtcGVkIHRvIGEgZmlsZS4KIAogSXQgYWxzbyBlbmFibGVzIHRoZSBjb29raWUgZW5naW5lLCBtYWtpbmcgbGliY3VybCBwYXJzZSBhbmQgc2VuZCBjb29raWVzIG9uCiBzdWJzZXF1ZW50IHJlcXVlc3RzIHdpdGggdGhpcyBoYW5kbGUuCkBAIC00Myw2ICs0MywxNCBAQAogVGhpcyBvcHRpb24gb25seSBcZkJyZWFkc1xmUCBjb29raWVzLiBUbyBtYWtlIGxpYmN1cmwgd3JpdGUgY29va2llcyB0byBmaWxlLAogc2VlIFxmSUNVUkxPUFRfQ09PS0lFSkFSKDMpXGZQLgogCitFeGVyY2lzZSBjYXV0aW9uIGlmIHlvdSBhcmUgdXNpbmcgdGhpcyBvcHRpb24gYW5kIG11bHRpcGxlIHRyYW5zZmVycyBtYXkgb2NjdXIuCitJZiB5b3UgdXNlIHRoZSBTZXQtQ29va2llIGZvcm1hdCBhbmQgZG9uJ3Qgc3BlY2lmeSBhIGRvbWFpbiB0aGVuIHRoZSBjb29raWUgaXMKK3NlbnQgZm9yIGFueSBkb21haW4gKGV2ZW4gYWZ0ZXIgcmVkaXJlY3RzIGFyZSBmb2xsb3dlZCkgYW5kIGNhbm5vdCBiZSBtb2RpZmllZAorYnkgYSBzZXJ2ZXItc2V0IGNvb2tpZS4gSWYgYSBzZXJ2ZXIgc2V0cyBhIGNvb2tpZSBvZiB0aGUgc2FtZSBuYW1lIHRoZW4gYm90aAord2lsbCBiZSBzZW50IG9uIGEgZnV0dXJlIHRyYW5zZmVyIHRvIHRoYXQgc2VydmVyLCBsaWtlbHkgbm90IHdoYXQgeW91IGludGVuZGVkLgorVG8gYWRkcmVzcyB0aGVzZSBpc3N1ZXMgc2V0IGEgZG9tYWluIGluIFNldC1Db29raWUgKGRvaW5nIHRoYXQgd2lsbCBpbmNsdWRlCitzdWItZG9tYWlucykgb3IgdXNlIHRoZSBOZXRzY2FwZSBmb3JtYXQuCisKIElmIHlvdSB1c2UgdGhpcyBvcHRpb24gbXVsdGlwbGUgdGltZXMsIHlvdSBqdXN0IGFkZCBtb3JlIGZpbGVzIHRvIHJlYWQuCiBTdWJzZXF1ZW50IGZpbGVzIHdpbGwgYWRkIG1vcmUgY29va2llcy4KIC5TSCBERUZBVUxUCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0NPT0tJRUpBUi4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DT09LSUVKQVIuMwppbmRleCA5MzZkNGQ4Li43OWEzNzIzIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0NPT0tJRUpBUi4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ09PS0lFSkFSLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNDMsNiArNDMsOSBAQAogZXJyb3IgZm9yIHRoaXMuIFVzaW5nIFxmSUNVUkxPUFRfVkVSQk9TRSgzKVxmUCBvcgogXGZJQ1VSTE9QVF9ERUJVR0ZVTkNUSU9OKDMpXGZQIHdpbGwgZ2V0IGEgd2FybmluZyB0byBkaXNwbGF5LCBidXQgdGhhdCBpcyB0aGUKIG9ubHkgdmlzaWJsZSBmZWVkYmFjayB5b3UgZ2V0IGFib3V0IHRoaXMgcG9zc2libHkgbGV0aGFsIHNpdHVhdGlvbi4KKworU2luY2UgNy40My4wIGNvb2tpZXMgdGhhdCB3ZXJlIGltcG9ydGVkIGluIHRoZSBTZXQtQ29va2llIGZvcm1hdCB3aXRob3V0IGEKK2RvbWFpbiBuYW1lIGFyZSBub3QgZXhwb3J0ZWQgYnkgdGhpcyBvcHRpb24uCiAuU0ggREVGQVVMVAogTlVMTAogLlNIIFBST1RPQ09MUwpAQCAtNTUsNCArNTgsNSBAQAogUmV0dXJucyBDVVJMRV9PSyBpZiBIVFRQIGlzIHN1cHBvcnRlZCwgQ1VSTEVfVU5LTk9XTl9PUFRJT04gaWYgbm90LCBvcgogQ1VSTEVfT1VUX09GX01FTU9SWSBpZiB0aGVyZSB3YXMgaW5zdWZmaWNpZW50IGhlYXAgc3BhY2UuCiAuU0ggIlNFRSBBTFNPIgotLkJSIENVUkxPUFRfQ09PS0lFRklMRSAiKDMpLCAiIENVUkxPUFRfQ09PS0lFICIoMyksICIgQ1VSTE9QVF9DT09LSUVMSVNUICIoMyksICIKKy5CUiBDVVJMT1BUX0NPT0tJRUZJTEUgIigzKSwgIiBDVVJMT1BUX0NPT0tJRSAiKDMpLCAiCisuQlIgQ1VSTE9QVF9DT09LSUVMSVNUICIoMyksICIKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ09PS0lFTElTVC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DT09LSUVMSVNULjMKaW5kZXggOTM3Yzc5ZC4uN2RlNGRhOCAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DT09LSUVMSVNULjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DT09LSUVMSVNULjMKQEAgLTUsMTEgKzUsMTEgQEAKIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKIC5cIiAqCi0uXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zNiwxNiArMzYsMTUgQEAKIHJlZ3VsYXIgSFRUUC1zdHlsZSBoZWFkZXIgKFNldC1Db29raWU6IC4uLikgZm9ybWF0LiBUaGlzIHdpbGwgYWxzbyBlbmFibGUgdGhlCiBjb29raWUgZW5naW5lLiBUaGlzIGFkZHMgdGhhdCBzaW5nbGUgY29va2llIHRvIHRoZSBpbnRlcm5hbCBjb29raWUgc3RvcmUuCiAKLUlmIHlvdSB1c2UgdGhlIFNldC1Db29raWUgZm9ybWF0IGFuZCBkb24ndCBzcGVjaWZ5IGEgZG9tYWluIHRoZW4gdGhlIGNvb2tpZQotaXMgc2VudCBmb3IgYW55IGRvbWFpbiBhbmQgd2lsbCBub3QgYmUgbW9kaWZpZWQuIElmIGEgc2VydmVyIHNldHMgYSBjb29raWUgb2YKLXRoZSBzYW1lIG5hbWUgKG9yIG1heWJlIHlvdSd2ZSBpbXBvcnRlZCBvbmUpIHRoZW4gYm90aCB3aWxsIGJlIHNlbnQgb24gYSBmdXR1cmUKLXRyYW5zZmVyIHRvIHRoYXQgc2VydmVyLCBsaWtlbHkgbm90IHdoYXQgeW91IGludGVuZGVkLiBFaXRoZXIgc2V0IGEgZG9tYWluIGluCi1TZXQtQ29va2llIChkb2luZyB0aGF0IHdpbGwgaW5jbHVkZSBzdWIgZG9tYWlucykgb3IgdXNlIHRoZSBOZXRzY2FwZSBmb3JtYXQgYXMKK0V4ZXJjaXNlIGNhdXRpb24gaWYgeW91IGFyZSB1c2luZyB0aGlzIG9wdGlvbiBhbmQgbXVsdGlwbGUgdHJhbnNmZXJzIG1heSBvY2N1ci4KK0lmIHlvdSB1c2UgdGhlIFNldC1Db29raWUgZm9ybWF0IGFuZCBkb24ndCBzcGVjaWZ5IGEgZG9tYWluIHRoZW4gdGhlIGNvb2tpZSBpcworc2VudCBmb3IgYW55IGRvbWFpbiAoZXZlbiBhZnRlciByZWRpcmVjdHMgYXJlIGZvbGxvd2VkKSBhbmQgY2Fubm90IGJlIG1vZGlmaWVkCitieSBhIHNlcnZlci1zZXQgY29va2llLiBJZiBhIHNlcnZlciBzZXRzIGEgY29va2llIG9mIHRoZSBzYW1lIG5hbWUgKG9yIG1heWJlCit5b3UndmUgaW1wb3J0ZWQgb25lKSB0aGVuIGJvdGggd2lsbCBiZSBzZW50IG9uIGEgZnV0dXJlIHRyYW5zZmVyIHRvIHRoYXQKK3NlcnZlciwgbGlrZWx5IG5vdCB3aGF0IHlvdSBpbnRlbmRlZC4gVG8gYWRkcmVzcyB0aGVzZSBpc3N1ZXMgc2V0IGEgZG9tYWluIGluCitTZXQtQ29va2llIChkb2luZyB0aGF0IHdpbGwgaW5jbHVkZSBzdWItZG9tYWlucykgb3IgdXNlIHRoZSBOZXRzY2FwZSBmb3JtYXQgYXMKIHNob3duIGluIEVYQU1QTEUuCiAKLVN0YXJ0aW5nIGluIDcuNDMuMCB0aGUgYWZvcmVtZW50aW9uZWQgYW55LWRvbWFpbiBjb29raWVzIHdpbGwgbm90IGFwcGVhciBpbiB0aGUKLWxpc3RzIGV4cG9ydGVkIGJ5IFxmSUNVUkxJTkZPX0NPT0tJRUxJU1QoMylcZlAgYW5kIFxmSUNVUkxPUFRfQ09PS0lFSkFSKDMpXGZQLgotCiBBZGRpdGlvbmFsbHksIHRoZXJlIGFyZSBjb21tYW5kcyBhdmFpbGFibGUgdGhhdCBwZXJmb3JtIGFjdGlvbnMgaWYgeW91IHBhc3MgaW4KIHRoZXNlIGV4YWN0IHN0cmluZ3M6CiAuSVAgQUxMCkBAIC0xMDEsNyArMTAwLDcgQEAKICovCiBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfQ09PS0lFSkFSLCAiY29va2llcy50eHQiKTsgIC8qIGV4cG9ydCAqLwogCi1yZXMgPSBjdXJsX2Vhc3lfcGVyZm9ybShjdXJsKTsgIC8qIGNvb2tpZXMgaW1wb3J0ZWQgZnJvbSBjb29raWVzLnR4dCAqLworY3VybF9lYXN5X3BlcmZvcm0oY3VybCk7ICAvKiBjb29raWVzIGltcG9ydGVkIGZyb20gY29va2llcy50eHQgKi8KIAogY3VybF9lYXN5X2NsZWFudXAoY3VybCk7ICAvKiBjb29raWVzIGV4cG9ydGVkIHRvIGNvb2tpZXMudHh0ICovCiAuZmkKQEAgLTExNyw0ICsxMTYsNSBAQAogUmV0dXJucyBDVVJMRV9PSyBpZiB0aGUgb3B0aW9uIGlzIHN1cHBvcnRlZCwgQ1VSTEVfVU5LTk9XTl9PUFRJT04gaWYgbm90LCBvcgogQ1VSTEVfT1VUX09GX01FTU9SWSBpZiB0aGVyZSB3YXMgaW5zdWZmaWNpZW50IGhlYXAgc3BhY2UuCiAuU0ggIlNFRSBBTFNPIgotLkJSIENVUkxPUFRfQ09PS0lFRklMRSAiKDMpLCAiIENVUkxPUFRfQ09PS0lFSkFSICIoMyksICIgIENVUkxPUFRfQ09PS0lFICIoMyksICIKKy5CUiBDVVJMT1BUX0NPT0tJRUZJTEUgIigzKSwgIiBDVVJMT1BUX0NPT0tJRUpBUiAiKDMpLCAiIENVUkxPUFRfQ09PS0lFICIoMyksICIKKy5CUiBDVVJMSU5GT19DT09LSUVMSVNUICIoMyksICIKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ09PS0lFU0VTU0lPTi4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DT09LSUVTRVNTSU9OLjMKaW5kZXggMGQ1NjA3Ni4uZWNjMzc1NyAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DT09LSUVTRVNTSU9OLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DT09LSUVTRVNTSU9OLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DT1BZUE9TVEZJRUxEUy4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DT1BZUE9TVEZJRUxEUy4zCmluZGV4IGQzNWFlYmQuLjAwMWQ2ZmUgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ09QWVBPU1RGSUVMRFMuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0NPUFlQT1NURklFTERTLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DUkxGLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0NSTEYuMwppbmRleCAzMmQ4Yjc5Li5iMTNhMDZlIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0NSTEYuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0NSTEYuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0NSTEZJTEUuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ1JMRklMRS4zCmluZGV4IGFkYzBlOTkuLjZiYjAzNWUgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ1JMRklMRS4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ1JMRklMRS4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfQ1VTVE9NUkVRVUVTVC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DVVNUT01SRVFVRVNULjMKaW5kZXggZmQzMzExOC4uNTUzZDQwOCAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DVVNUT01SRVFVRVNULjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9DVVNUT01SRVFVRVNULjMKQEAgLTUsMTEgKzUsMTEgQEAKIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKIC5cIiAqCi0uXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zMCw3ICszMCw3IEBACiAuU0ggREVTQ1JJUFRJT04KIFBhc3MgYSBwb2ludGVyIHRvIGEgemVybyB0ZXJtaW5hdGVkIHN0cmluZyBhcyBwYXJhbWV0ZXIuCiAKLVdoZW4geW91IGNoYW5nZSB0aGUgcmVxdWVzdCBtZXRob2QgYnkgc2V0dGluZyBcZkJDVVJMT1BUX0NVU1RPTVJFUVVFU1QoMylcZlAKK1doZW4geW91IGNoYW5nZSB0aGUgcmVxdWVzdCBtZXRob2QgYnkgc2V0dGluZyBcZklDVVJMT1BUX0NVU1RPTVJFUVVFU1QoMylcZlAKIHRvIHNvbWV0aGluZywgeW91IGRvbid0IGFjdHVhbGx5IGNoYW5nZSBob3cgbGliY3VybCBiZWhhdmVzIG9yIGFjdHMgaW4gcmVnYXJkcwogdG8gdGhlIHBhcnRpY3VsYXIgcmVxdWVzdCBtZXRob2QsIGl0IHdpbGwgb25seSBjaGFuZ2UgdGhlIGFjdHVhbCBzdHJpbmcgc2VudAogaW4gdGhlIHJlcXVlc3QuCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0RFQlVHREFUQS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9ERUJVR0RBVEEuMwppbmRleCBlYmRiMGM1Li4yN2I5Y2JiIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0RFQlVHREFUQS4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfREVCVUdEQVRBLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzYsNyArMzYsNyBAQAogLlNIIFBST1RPQ09MUwogQWxsCiAuU0ggRVhBTVBMRQotaHR0cDovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvZGVidWcuaHRtbAoraHR0cHM6Ly9jdXJsLmhheHguc2UvbGliY3VybC9jL2RlYnVnLmh0bWwKIC5TSCBBVkFJTEFCSUxJVFkKIEFsd2F5cwogLlNIIFJFVFVSTiBWQUxVRQpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9ERUJVR0ZVTkNUSU9OLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0RFQlVHRlVOQ1RJT04uMwppbmRleCA2YzQ3MjFiLi5iZjA3NDk5IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0RFQlVHRlVOQ1RJT04uMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0RFQlVHRlVOQ1RJT04uMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC04OCw3ICs4OCw3IEBACiAgIHNpemVfdCBjOwogICB1bnNpZ25lZCBpbnQgd2lkdGg9MHgxMDsKIAotICBmcHJpbnRmKHN0cmVhbSwgIiVzLCAlMTAuMTBsZCBieXRlcyAoMHglOC44bHgpXG4iLAorICBmcHJpbnRmKHN0cmVhbSwgIiVzLCAlMTAuMTBsZCBieXRlcyAoMHglOC44bHgpXFxuIiwKICAgICAgICAgICB0ZXh0LCAobG9uZylzaXplLCAobG9uZylzaXplKTsKIAogICBmb3IoaT0wOyBpPHNpemU7IGkrPSB3aWR0aCkgewpAQCAtMTAzLDEwICsxMDMsMTIgQEAKICAgICB9CiAKICAgICAvKiBzaG93IGRhdGEgb24gdGhlIHJpZ2h0ICovCi0gICAgZm9yKGMgPSAwOyAoYyA8IHdpZHRoKSAmJiAoaStjIDwgc2l6ZSk7IGMrKykKLSAgICAgIGZwdXRjKHB0cltpK2NdPj0weDIwKSAmJiAocHRyW2krY108MHg4MCk/cHRyW2krY106Jy4nLCBzdHJlYW0pOworICAgIGZvcihjID0gMDsgKGMgPCB3aWR0aCkgJiYgKGkrYyA8IHNpemUpOyBjKyspIHsKKyAgICAgIGNoYXIgeCA9IChwdHJbaStjXSA+PSAweDIwICYmIHB0cltpK2NdIDwgMHg4MCkgPyBwdHJbaStjXSA6ICcuJzsKKyAgICAgIGZwdXRjKHgsIHN0cmVhbSk7CisgICAgfQogCi0gICAgZnB1dGMoJ1xuJywgc3RyZWFtKTsgLyogbmV3bGluZSAqLworICAgIGZwdXRjKCdcXG4nLCBzdHJlYW0pOyAvKiBuZXdsaW5lICovCiAgIH0KIH0KIApAQCAtMTY3LDcgKzE2OSw3IEBACiAgICAgcmVzID0gY3VybF9lYXN5X3BlcmZvcm0oY3VybCk7CiAgICAgLyogQ2hlY2sgZm9yIGVycm9ycyAqLwogICAgIGlmKHJlcyAhPSBDVVJMRV9PSykKLSAgICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9lYXN5X3BlcmZvcm0oKSBmYWlsZWQ6ICVzXG4iLAorICAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2Vhc3lfcGVyZm9ybSgpIGZhaWxlZDogJXNcXG4iLAogICAgICAgICAgICAgICBjdXJsX2Vhc3lfc3RyZXJyb3IocmVzKSk7CiAKICAgICAvKiBhbHdheXMgY2xlYW51cCAqLwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9ERUZBVUxUX1BST1RPQ09MLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0RFRkFVTFRfUFJPVE9DT0wuMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mN2Y4OTBjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9ERUZBVUxUX1BST1RPQ09MLjMKQEAgLTAsMCArMSw3OSBAQAorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisuXCIgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKy5cIiAqCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqCisuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKy5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworLlwiICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisuXCIgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLlwiICoKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiCisuVEggQ1VSTE9QVF9ERUZBVUxUX1BST1RPQ09MIDMgIjE4IEF1ZyAyMDE1IiAibGliY3VybCA3LjQ1LjAiICJjdXJsX2Vhc3lfc2V0b3B0IG9wdGlvbnMiCisuU0ggTkFNRQorQ1VSTE9QVF9ERUZBVUxUX1BST1RPQ09MIFwtIGRlZmF1bHQgcHJvdG9jb2wgdG8gdXNlIGlmIHRoZSBVUkwgaXMgbWlzc2luZyBhCitzY2hlbWUgbmFtZQorLlNIIFNZTk9QU0lTCisjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CisKK0NVUkxjb2RlIGN1cmxfZWFzeV9zZXRvcHQoQ1VSTCAqaGFuZGxlLCBDVVJMT1BUX0RFRkFVTFRfUFJPVE9DT0wsIGNoYXIKKypwcm90b2NvbCk7CisuU0ggREVTQ1JJUFRJT04KK1RoaXMgb3B0aW9uIHRlbGxzIGxpYmN1cmwgdG8gdXNlIFxmSXByb3RvY29sXGZQIGlmIHRoZSBVUkwgaXMgbWlzc2luZyBhIHNjaGVtZQorbmFtZS4KKworVXNlIG9uZSBvZiB0aGVzZSBwcm90b2NvbCAoc2NoZW1lKSBuYW1lczoKKworZGljdCwgZmlsZSwgZnRwLCBmdHBzLCBnb3BoZXIsIGh0dHAsIGh0dHBzLCBpbWFwLCBpbWFwcywgbGRhcCwgbGRhcHMsIHBvcDMsCitwb3AzcywgcnRzcCwgc2NwLCBzZnRwLCBzbWIsIHNtYnMsIHNtdHAsIHNtdHBzLCB0ZWxuZXQsIHRmdHAKKworQW4gdW5rbm93biBvciB1bnN1cHBvcnRlZCBwcm90b2NvbCBjYXVzZXMgZXJyb3IKK1xmSUNVUkxFX1VOU1VQUE9SVEVEX1BST1RPQ09MXGZQIHdoZW4gbGliY3VybCBwYXJzZXMgYSBzY2hlbWVsZXNzIFVSTC4gUGFyc2luZworaGFwcGVucyB3aGVuIFxmSWN1cmxfZWFzeV9wZXJmb3JtKDMpXGZQIG9yIFxmSWN1cmxfbXVsdGlfcGVyZm9ybSgzKVxmUCBpcworY2FsbGVkLiBUaGUgcHJvdG9jb2xzIHN1cHBvcnRlZCBieSBsaWJjdXJsIHdpbGwgdmFyeSBkZXBlbmRpbmcgb24gaG93IGl0IHdhcworYnVpbHQuIFVzZSBcZkljdXJsX3ZlcnNpb25faW5mbygzKVxmUCBpZiB5b3UgbmVlZCBhIGxpc3Qgb2YgcHJvdG9jb2wgbmFtZXMKK3N1cHBvcnRlZCBieSB0aGUgYnVpbGQgb2YgbGliY3VybCB0aGF0IHlvdSBhcmUgdXNpbmcuCisKK1RoaXMgb3B0aW9uIGRvZXMgbm90IGNoYW5nZSB0aGUgZGVmYXVsdCBwcm94eSBwcm90b2NvbCAoaHR0cCkuCisKK1dpdGhvdXQgdGhpcyBvcHRpb24gbGliY3VybCB3b3VsZCBtYWtlIGEgZ3Vlc3MgYmFzZWQgb24gdGhlIGhvc3QsIHNlZQorXGZJQ1VSTE9QVF9VUkwoMylcZlAgZm9yIGRldGFpbHMuCisuU0ggREVGQVVMVAorTlVMTCAobWFrZSBhIGd1ZXNzIGJhc2VkIG9uIHRoZSBob3N0KQorLlNIIFBST1RPQ09MUworQWxsCisuU0ggRVhBTVBMRQorLm5mCitjdXJsID0gY3VybF9lYXN5X2luaXQoKTsKK2lmKGN1cmwpIHsKKyAgLyogc2V0IGEgVVJMIHdpdGhvdXQgYSBzY2hlbWUgKi8KKyAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1VSTCwgImV4YW1wbGUuY29tIik7CisKKyAgLyogc2V0IHRoZSBkZWZhdWx0IHByb3RvY29sIChzY2hlbWUpIGZvciBzY2hlbWVsZXNzIFVSTHMgKi8KKyAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX0RFRkFVTFRfUFJPVE9DT0wsICJodHRwcyIpOworCisgIC8qIFBlcmZvcm0gdGhlIHJlcXVlc3QgKi8KKyAgY3VybF9lYXN5X3BlcmZvcm0oY3VybCk7Cit9CisuZmkKKy5TSCBBVkFJTEFCSUxJVFkKK0FkZGVkIGluIDcuNDUuMAorLlNIIFJFVFVSTiBWQUxVRQorQ1VSTEVfT0sgaWYgdGhlIG9wdGlvbiBpcyBzdXBwb3J0ZWQuCisKK0NVUkxFX09VVF9PRl9NRU1PUlkgaWYgdGhlcmUgd2FzIGluc3VmZmljaWVudCBoZWFwIHNwYWNlLgorCitDVVJMRV9VTktOT1dOX09QVElPTiBpZiB0aGUgb3B0aW9uIGlzIG5vdCBzdXBwb3J0ZWQuCisuU0ggIlNFRSBBTFNPIgorLkJSIENVUkxPUFRfVVJMICIoMyksICIKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRElSTElTVE9OTFkuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRElSTElTVE9OTFkuMwppbmRleCBhODFmOTA3Li4wN2I4YWMzIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0RJUkxJU1RPTkxZLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9ESVJMSVNUT05MWS4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRE5TX0NBQ0hFX1RJTUVPVVQuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRE5TX0NBQ0hFX1RJTUVPVVQuMwppbmRleCA5MzMyNzgwLi4wNjA3NDEwIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ROU19DQUNIRV9USU1FT1VULjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9ETlNfQ0FDSEVfVElNRU9VVC4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRE5TX0lOVEVSRkFDRS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9ETlNfSU5URVJGQUNFLjMKaW5kZXggYzMzZDc5MS4uZjc2NDM5OCAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9ETlNfSU5URVJGQUNFLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9ETlNfSU5URVJGQUNFLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9ETlNfTE9DQUxfSVA0LjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ROU19MT0NBTF9JUDQuMwppbmRleCBmNWRiNjQ1Li5lZjlmMWUyIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ROU19MT0NBTF9JUDQuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ROU19MT0NBTF9JUDQuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ROU19MT0NBTF9JUDYuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRE5TX0xPQ0FMX0lQNi4zCmluZGV4IDU2ODY1YmIuLjdkODJiZGYgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRE5TX0xPQ0FMX0lQNi4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRE5TX0xPQ0FMX0lQNi4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRE5TX1NFUlZFUlMuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRE5TX1NFUlZFUlMuMwppbmRleCA5ZjUxNzg4Li4xNGM5ZjliIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ROU19TRVJWRVJTLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9ETlNfU0VSVkVSUy4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRE5TX1VTRV9HTE9CQUxfQ0FDSEUuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRE5TX1VTRV9HTE9CQUxfQ0FDSEUuMwppbmRleCBkYjUzYzBiLi44N2Y2ODZhIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ROU19VU0VfR0xPQkFMX0NBQ0hFLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9ETlNfVVNFX0dMT0JBTF9DQUNIRS4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRUdEU09DS0VULjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0VHRFNPQ0tFVC4zCmluZGV4IDJlNzJlY2MuLmFkOTFjM2YgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRUdEU09DS0VULjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9FR0RTT0NLRVQuMwpAQCAtNSwxMSArNSwxMSBAQAogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogLlwiICoKLS5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTMzLDcgKzMzLDcgQEAKIC5TSCBERUZBVUxUCiBOVUxMCiAuU0ggUFJPVE9DT0xTCi1BbGwgVExTIGJhc2VkIHByb3RvY29sczogSFRUUFMsIEZUUFMsIElNQVBTLCBQT1AzLCBTTVRQUyBldGMuCitBbGwgVExTIGJhc2VkIHByb3RvY29sczogSFRUUFMsIEZUUFMsIElNQVBTLCBQT1AzUywgU01UUFMgZXRjLgogLlNIIEVYQU1QTEUKIFRPRE8KIC5TSCBBVkFJTEFCSUxJVFkKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRVJST1JCVUZGRVIuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRVJST1JCVUZGRVIuMwppbmRleCA1NzcyMDJjLi5iNjRhMmEzIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0VSUk9SQlVGRkVSLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9FUlJPUkJVRkZFUi4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTUxLDE1ICs1MSwzMyBAQAogLm5mCiBjdXJsID0gY3VybF9lYXN5X2luaXQoKTsKIGlmKGN1cmwpIHsKLSAgY2hhciBlcnJvcltDVVJMX0VSUk9SX1NJWkVdCisgIENVUkxjb2RlIHJlczsKKyAgY2hhciBlcnJidWZbQ1VSTF9FUlJPUl9TSVpFXTsKIAogICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfVVJMLCAiaHR0cDovL2V4YW1wbGUuY29tIik7CiAKICAgLyogcHJvdmlkZSBhIGJ1ZmZlciB0byBzdG9yZSBlcnJvcnMgaW4gKi8KLSAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX0VSUk9SQlVGRkVSLCBlcnJvcik7CisgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9FUlJPUkJVRkZFUiwgZXJyYnVmKTsKIAotICAvKiBQZXJmb3JtIHRoZSByZXF1ZXN0ICovCi0gIGN1cmxfZWFzeV9wZXJmb3JtKGN1cmwpOworICAvKiBzZXQgdGhlIGVycm9yIGJ1ZmZlciBhcyBlbXB0eSBiZWZvcmUgcGVyZm9ybWluZyBhIHJlcXVlc3QgKi8KKyAgZXJyYnVmWzBdID0gMDsKKworICAvKiBwZXJmb3JtIHRoZSByZXF1ZXN0ICovCisgIHJlcyA9IGN1cmxfZWFzeV9wZXJmb3JtKGN1cmwpOworCisgIC8qIGlmIHRoZSByZXF1ZXN0IGRpZCBub3QgY29tcGxldGUgY29ycmVjdGx5LCBzaG93IHRoZSBlcnJvcgorICBpbmZvcm1hdGlvbi4gaWYgbm8gZGV0YWlsZWQgZXJyb3IgaW5mb3JtYXRpb24gd2FzIHdyaXR0ZW4gdG8gZXJyYnVmCisgIHNob3cgdGhlIG1vcmUgZ2VuZXJpYyBpbmZvcm1hdGlvbiBmcm9tIGN1cmxfZWFzeV9zdHJlcnJvciBpbnN0ZWFkLgorICAqLworICBpZihyZXMgIT0gQ1VSTEVfT0spIHsKKyAgICBzaXplX3QgbGVuID0gc3RybGVuKGVycmJ1Zik7CisgICAgZnByaW50ZihzdGRlcnIsICJcXG5saWJjdXJsOiAoJWQpICIsIHJlcyk7CisgICAgaWYobGVuKQorICAgICAgZnByaW50ZihzdGRlcnIsICIlcyVzIiwgZXJyYnVmLAorICAgICAgICAgICAgICAoKGVycmJ1ZltsZW4gLSAxXSAhPSAnXFxuJykgPyAiXFxuIiA6ICIiKSk7CisgICAgZWxzZQorICAgICAgZnByaW50ZihzdGRlcnIsICIlc1xcbiIsIGN1cmxfZWFzeV9zdHJlcnJvcihyZXMpKTsKKyAgfQogfQogLmZpCiAuU0ggQVZBSUxBQklMSVRZCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0VYUEVDVF8xMDBfVElNRU9VVF9NUy4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9FWFBFQ1RfMTAwX1RJTUVPVVRfTVMuMwppbmRleCA4MWY0NTcxLi4xMGYzYzA2IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0VYUEVDVF8xMDBfVElNRU9VVF9NUy4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRVhQRUNUXzEwMF9USU1FT1VUX01TLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9GQUlMT05FUlJPUi4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9GQUlMT05FUlJPUi4zCmluZGV4IGE4MjY3ZmQuLjc5NDc0Y2UgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRkFJTE9ORVJST1IuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ZBSUxPTkVSUk9SLjMKQEAgLTUsMTEgKzUsMTEgQEAKIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKIC5cIiAqCi0uXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zOSw2ICszOSw5IEBACiBZb3UgbWlnaHQgZ2V0IHNvbWUgYW1vdW50cyBvZiBoZWFkZXJzIHRyYW5zZmVycmVkIGJlZm9yZSB0aGlzIHNpdHVhdGlvbiBpcwogZGV0ZWN0ZWQsIGxpa2Ugd2hlbiBhICIxMDAtY29udGludWUiIGlzIHJlY2VpdmVkIGFzIGEgcmVzcG9uc2UgdG8gYSBQT1NUL1BVVAogYW5kIGEgNDAxIG9yIDQwNyBpcyByZWNlaXZlZCBpbW1lZGlhdGVseSBhZnRlcndhcmRzLgorCitXaGVuIHRoaXMgb3B0aW9uIGlzIHVzZWQgYW5kIGFuIGVycm9yIGlzIGRldGVjdGVkLCBpdCB3aWxsIGNhdXNlIHRoZQorY29ubmVjdGlvbiB0byBnZXQgY2xvc2VkLgogLlNIIERFRkFVTFQKIDAsIGRvIG5vdCBmYWlsIG9uIGVycm9yCiAuU0ggUFJPVE9DT0xTCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ZJTEVUSU1FLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ZJTEVUSU1FLjMKaW5kZXggN2M1N2FmZi4uOTliYTdmNyAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9GSUxFVElNRS4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRklMRVRJTUUuMwpAQCAtNSwxMSArNSwxMSBAQAogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogLlwiICoKLS5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTMxLDggKzMxLDggQEAKIFBhc3MgYSBsb25nLiBJZiBpdCBpcyAxLCBsaWJjdXJsIHdpbGwgYXR0ZW1wdCB0byBnZXQgdGhlIG1vZGlmaWNhdGlvbiB0aW1lIG9mCiB0aGUgcmVtb3RlIGRvY3VtZW50IGluIHRoaXMgb3BlcmF0aW9uLiBUaGlzIHJlcXVpcmVzIHRoYXQgdGhlIHJlbW90ZSBzZXJ2ZXIKIHNlbmRzIHRoZSB0aW1lIG9yIHJlcGxpZXMgdG8gYSB0aW1lIHF1ZXJ5aW5nIGNvbW1hbmQuIFRoZQotXGZJY3VybF9lYXN5X2dldGluZm8oMylcZlAgZnVuY3Rpb24gd2l0aCB0aGUgXGZJQ1VSTElORk9fRklMRVRJTUVcZlAgYXJndW1lbnQKLWNhbiBiZSB1c2VkIGFmdGVyIGEgdHJhbnNmZXIgdG8gZXh0cmFjdCB0aGUgcmVjZWl2ZWQgdGltZSAoaWYgYW55KS4KK1xmSWN1cmxfZWFzeV9nZXRpbmZvKDMpXGZQIGZ1bmN0aW9uIHdpdGggdGhlIFxmSUNVUkxJTkZPX0ZJTEVUSU1FKDMpXGZQCithcmd1bWVudCBjYW4gYmUgdXNlZCBhZnRlciBhIHRyYW5zZmVyIHRvIGV4dHJhY3QgdGhlIHJlY2VpdmVkIHRpbWUgKGlmIGFueSkuCiAuU0ggREVGQVVMVAogMAogLlNIIFBST1RPQ09MUwpAQCAtNDAsNyArNDAsNyBAQAogLlNIIEVYQU1QTEUKIFRPRE8KIC5TSCBBVkFJTEFCSUxJVFkKLUFsd2F5cworQWx3YXlzLCBmb3IgU0ZUUCBzaW5jZSA3LjQ5LjAKIC5TSCBSRVRVUk4gVkFMVUUKIFJldHVybnMgQ1VSTEVfT0sKIC5TSCAiU0VFIEFMU08iCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ZOTUFUQ0hfREFUQS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9GTk1BVENIX0RBVEEuMwppbmRleCBhMDQ2NmZlLi4yMzZjMTlkIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ZOTUFUQ0hfREFUQS4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRk5NQVRDSF9EQVRBLjMKQEAgLTUsMTEgKzUsMTEgQEAKIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKIC5cIiAqCi0uXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zMSw3ICszMSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnBvaW50ZXIpOwogLlNIIERFU0NSSVBUSU9OCiBQYXNzIGEgcG9pbnRlciB0aGF0IHdpbGwgYmUgdW50b3VjaGVkIGJ5IGxpYmN1cmwgYW5kIHBhc3NlZCBhcyB0aGUgcHRyCi1hcmd1bWVudCB0byB0aGUgXGZJQ1VSTF9GTk1BVENIX0ZVTkNUSU9OKDMpXGZQLgorYXJndW1lbnQgdG8gdGhlIFxmSUNVUkxPUFRfRk5NQVRDSF9GVU5DVElPTigzKVxmUC4KIC5TSCBERUZBVUxUCiBOVUxMCiAuU0ggUFJPVE9DT0xTCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ZOTUFUQ0hfRlVOQ1RJT04uMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRk5NQVRDSF9GVU5DVElPTi4zCmluZGV4IGZjMTE5YTkuLjA0OTY3YjggMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRk5NQVRDSF9GVU5DVElPTi4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRk5NQVRDSF9GVU5DVElPTi4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTM3LDcgKzM3LDcgQEAKIFBhc3MgYSBwb2ludGVyIHRvIHlvdXIgY2FsbGJhY2sgZnVuY3Rpb24sIHdoaWNoIHNob3VsZCBtYXRjaCB0aGUgcHJvdG90eXBlCiBzaG93biBhYm92ZS4KIAotVGhpcyBjYWxsYmFjayBzIHVzZWQgZm9yIHdpbGRjYXJkIG1hdGNoaW5nLgorVGhpcyBjYWxsYmFjayBpcyB1c2VkIGZvciB3aWxkY2FyZCBtYXRjaGluZy4KIAogUmV0dXJuIFxmSUNVUkxfRk5NQVRDSEZVTkNfTUFUQ0hcZlAgaWYgcGF0dGVybiBtYXRjaGVzIHRoZSBzdHJpbmcsCiBcZklDVVJMX0ZOTUFUQ0hGVU5DX05PTUFUQ0hcZlAgaWYgbm90IG9yIFxmSUNVUkxfRk5NQVRDSEZVTkNfRkFJTFxmUCBpZiBhbgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9GT0xMT1dMT0NBVElPTi4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9GT0xMT1dMT0NBVElPTi4zCmluZGV4IDNhMzJjYWUuLjA5NGVlMDUgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRk9MTE9XTE9DQVRJT04uMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ZPTExPV0xPQ0FUSU9OLjMKQEAgLTUsMTEgKzUsMTEgQEAKIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKIC5cIiAqCi0uXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yOCwyMiArMjgsMzEgQEAKIAogQ1VSTGNvZGUgY3VybF9lYXN5X3NldG9wdChDVVJMICpoYW5kbGUsIENVUkxPUFRfRk9MTE9XTE9DQVRJT04sIGxvbmcgZW5hYmxlKTsKIC5TSCBERVNDUklQVElPTgotQSBwYXJhbWV0ZXIgc2V0IHRvIDEgdGVsbHMgdGhlIGxpYnJhcnkgdG8gZm9sbG93IGFueSBMb2NhdGlvbjogaGVhZGVyIHRoYXQgdGhlCi1zZXJ2ZXIgc2VuZHMgYXMgcGFydCBvZiBhIEhUVFAgaGVhZGVyIGluIGEgM3h4IHJlc3BvbnNlLgorQSBsb25nIHBhcmFtZXRlciBzZXQgdG8gMSB0ZWxscyB0aGUgbGlicmFyeSB0byBmb2xsb3cgYW55IExvY2F0aW9uOiBoZWFkZXIKK3RoYXQgdGhlIHNlcnZlciBzZW5kcyBhcyBwYXJ0IG9mIGEgSFRUUCBoZWFkZXIgaW4gYSAzeHggcmVzcG9uc2UuIFRoZQorTG9jYXRpb246IGhlYWRlciBjYW4gc3BlY2lmeSBhIHJlbGF0aXZlIG9yIGFuIGFic29sdXRlIFVSTCB0byBmb2xsb3cuCiAKLVRoaXMgbWVhbnMgdGhhdCBsaWJjdXJsIHdpbGwgcmUtc2VuZCB0aGUgc2FtZSByZXF1ZXN0IG9uIHRoZSBuZXcgbG9jYXRpb24gYW5kCi1mb2xsb3cgbmV3IExvY2F0aW9uOiBoZWFkZXJzIGFsbCB0aGUgd2F5IHVudGlsIG5vIG1vcmUgc3VjaCBoZWFkZXJzIGFyZQotcmV0dXJuZWQuIFxmSUNVUkxPUFRfTUFYUkVESVJTKDMpXGZQIGNhbiBiZSB1c2VkIHRvIGxpbWl0IHRoZSBudW1iZXIgb2YKLXJlZGlyZWN0cyBsaWJjdXJsIHdpbGwgZm9sbG93LgorbGliY3VybCB3aWxsIGlzc3VlIGFub3RoZXIgcmVxdWVzdCBmb3IgdGhlIG5ldyBVUkwgYW5kIGZvbGxvdyBuZXcgTG9jYXRpb246CitoZWFkZXJzIGFsbCB0aGUgd2F5IHVudGlsIG5vIG1vcmUgc3VjaCBoZWFkZXJzIGFyZSByZXR1cm5lZC4KK1xmSUNVUkxPUFRfTUFYUkVESVJTKDMpXGZQIGNhbiBiZSB1c2VkIHRvIGxpbWl0IHRoZSBudW1iZXIgb2YgcmVkaXJlY3RzCitsaWJjdXJsIHdpbGwgZm9sbG93LgogCi1saWJjdXJsIGNhbiBsaW1pdCB0byB3aGF0IHByb3RvY29scyBpdCB3aWxsIGF1dG9tYXRpY2FsbHkgZm9sbG93LiBUaGUgYWNjZXB0ZWQKLXByb3RvY29scyBhcmUgc2V0IHdpdGggXGZJQ1VSTE9QVF9SRURJUl9QUk9UT0NPTFMoMylcZlAgYW5kIGl0IGV4Y2x1ZGVzIHRoZQotRklMRSBwcm90b2NvbCBieSBkZWZhdWx0LgorbGliY3VybCBsaW1pdHMgd2hhdCBwcm90b2NvbHMgaXQgYXV0b21hdGljYWxseSBmb2xsb3dzIHRvLiBUaGUgYWNjZXB0ZWQKK3Byb3RvY29scyBhcmUgc2V0IHdpdGggXGZJQ1VSTE9QVF9SRURJUl9QUk9UT0NPTFMoMylcZlAuIEJ5IGRlZmF1bHQgbGliY3VybAord2lsbCBhbGxvdyBhbGwgcHJvdG9jb2xzIG9uIHJlZGlyZWN0IGV4Y2VwdCB0aG9zZSBkaXNhYmxlZCBmb3Igc2VjdXJpdHkKK3JlYXNvbnM6IFNpbmNlIDcuMTkuNCBGSUxFIGFuZCBTQ1AgYXJlIGRpc2FibGVkLCBhbmQgc2luY2UgNy40MC4wIFNNQiBhbmQgU01CUworYXJlIGFsc28gZGlzYWJsZWQuCisKK1doZW4gZm9sbG93aW5nIGEgTG9jYXRpb246LCB0aGUgM3h4IHJlc3BvbnNlIGNvZGUgdGhhdCByZWRpcmVjdGVkIGl0IGFsc28KK2RpY3RhdGVzIHdoaWNoIHJlcXVlc3QgbWV0aG9kIGl0IHdpbGwgdXNlIGluIHRoZSBzdWJzZXF1ZW50IHJlcXVlc3Q6IEZvciAzMDEsCiszMDIgYW5kIDMwMyByZXNwb25zZXMgbGliY3VybCB3aWxsIHN3aXRjaCBtZXRob2QgdG8gR0VUIHVubGVzcworXGZJQ1VSTE9QVF9QT1NUUkVESVIoMylcZlAgaW5zdHJ1Y3RzIGxpYmN1cmwgb3RoZXJ3aXNlLiBBbGwgb3RoZXIgM3h4IGNvZGVzCit3aWxsIG1ha2UgbGliY3VybCBzZW5kIHRoZSBzYW1lIG1ldGhvZCBhZ2Fpbi4KIAogRm9yIHVzZXJzIHdobyB0aGluayB0aGUgZXhpc3RpbmcgbG9jYXRpb24gZm9sbG93aW5nIGlzIHRvbyBuYWl2ZSwgdG9vIHNpbXBsZQogb3IganVzdCBsYWNrcyBmZWF0dXJlcywgaXQgaXMgdmVyeSBlYXN5IHRvIGluc3RlYWQgaW1wbGVtZW50IHlvdXIgb3duIHJlZGlyZWN0CiBmb2xsb3cgbG9naWMgd2l0aCB0aGUgdXNlIG9mIFxmSWN1cmxfZWFzeV9nZXRpbmZvKDMpXGZQJ3MKLVxmSUNVUkxJTkZPX1JFRElSRUNUX1VSTFxmUCBvcHRpb24gaW5zdGVhZCBvZiB1c2luZworXGZJQ1VSTElORk9fUkVESVJFQ1RfVVJMKDMpXGZQIG9wdGlvbiBpbnN0ZWFkIG9mIHVzaW5nCiBcZklDVVJMT1BUX0ZPTExPV0xPQ0FUSU9OKDMpXGZQLgogLlNIIERFRkFVTFQKIDAsIGRpc2FibGVkCkBAIC02OCwzICs3Nyw0IEBACiAuU0ggIlNFRSBBTFNPIgogLkJSIENVUkxPUFRfUkVESVJfUFJPVE9DT0xTICIoMyksICIgQ1VSTE9QVF9QUk9UT0NPTFMgIigzKSwgIgogLkJSIENVUkxPUFRfUE9TVFJFRElSICIoMyksICIKKy5CUiBDVVJMSU5GT19SRURJUkVDVF9VUkwgIigzKSwgIiwgQ1VSTElORk9fUkVESVJFQ1RfQ09VTlQgIigzKSwgIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9GT1JCSURfUkVVU0UuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRk9SQklEX1JFVVNFLjMKaW5kZXggYzU4OGNhNS4uYjg0NjRkZiAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9GT1JCSURfUkVVU0UuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ZPUkJJRF9SRVVTRS4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRlJFU0hfQ09OTkVDVC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9GUkVTSF9DT05ORUNULjMKaW5kZXggMWNhYWY2MS4uY2U2ZTZmZSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9GUkVTSF9DT05ORUNULjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9GUkVTSF9DT05ORUNULjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9GVFBQT1JULjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ZUUFBPUlQuMwppbmRleCBmZDg3YmIyLi44ZTMwMGJjIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ZUUFBPUlQuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ZUUFBPUlQuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ZUUFNTTEFVVEguMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRlRQU1NMQVVUSC4zCmluZGV4IGJmYmVhOWMuLjU0MzdiMGMgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRlRQU1NMQVVUSC4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRlRQU1NMQVVUSC4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRlRQX0FDQ09VTlQuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRlRQX0FDQ09VTlQuMwppbmRleCAzYzM0MjQ3Li4wZDc2OGQ3IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ZUUF9BQ0NPVU5ULjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9GVFBfQUNDT1VOVC4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRlRQX0FMVEVSTkFUSVZFX1RPX1VTRVIuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRlRQX0FMVEVSTkFUSVZFX1RPX1VTRVIuMwppbmRleCBiNTFlNGRkLi41NzU4MTA5IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ZUUF9BTFRFUk5BVElWRV9UT19VU0VSLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9GVFBfQUxURVJOQVRJVkVfVE9fVVNFUi4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRlRQX0NSRUFURV9NSVNTSU5HX0RJUlMuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRlRQX0NSRUFURV9NSVNTSU5HX0RJUlMuMwppbmRleCBhNTI4NjNlLi5kMjhhNjQ2IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ZUUF9DUkVBVEVfTUlTU0lOR19ESVJTLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9GVFBfQ1JFQVRFX01JU1NJTkdfRElSUy4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRlRQX0ZJTEVNRVRIT0QuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRlRQX0ZJTEVNRVRIT0QuMwppbmRleCA2MjM5NmI5Li4yODBlOGYxIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ZUUF9GSUxFTUVUSE9ELjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9GVFBfRklMRU1FVEhPRC4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTU5LDQgKzU5LDQgQEAKIC5TSCBSRVRVUk4gVkFMVUUKIFJldHVybnMgQ1VSTEVfT0sgaWYgdGhlIG9wdGlvbiBpcyBzdXBwb3J0ZWQsIGFuZCBDVVJMRV9VTktOT1dOX09QVElPTiBpZiBub3QuCiAuU0ggIlNFRSBBTFNPIgotLkJSIENVUkxPUFRfRlRQTElTVE9OTFkgIigzKSwgIiBDVVJMT1BUX0ZUUF9TS0lQX1BBU1ZfSVAgIigzKSwgIgorLkJSIENVUkxPUFRfRElSTElTVE9OTFkgIigzKSwgIiBDVVJMT1BUX0ZUUF9TS0lQX1BBU1ZfSVAgIigzKSwgIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9GVFBfUkVTUE9OU0VfVElNRU9VVC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9GVFBfUkVTUE9OU0VfVElNRU9VVC4zCmluZGV4IDE4ZGJjMmYuLjQ1ZWMzMDQgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRlRQX1JFU1BPTlNFX1RJTUVPVVQuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ZUUF9SRVNQT05TRV9USU1FT1VULjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9GVFBfU0tJUF9QQVNWX0lQLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ZUUF9TS0lQX1BBU1ZfSVAuMwppbmRleCBiMTgwM2ZkLi5iNjBjM2IxIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ZUUF9TS0lQX1BBU1ZfSVAuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ZUUF9TS0lQX1BBU1ZfSVAuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ZUUF9TU0xfQ0NDLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ZUUF9TU0xfQ0NDLjMKaW5kZXggNTM5MTI4NS4uNDczNzExNCAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9GVFBfU1NMX0NDQy4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRlRQX1NTTF9DQ0MuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ZUUF9VU0VfRVBSVC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9GVFBfVVNFX0VQUlQuMwppbmRleCBkMjZhZjBjLi4xODFmNWExIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ZUUF9VU0VfRVBSVC4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRlRQX1VTRV9FUFJULjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9GVFBfVVNFX0VQU1YuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRlRQX1VTRV9FUFNWLjMKaW5kZXggMTcyOTg1YS4uYWY3YTQ1ZSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9GVFBfVVNFX0VQU1YuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ZUUF9VU0VfRVBTVi4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRlRQX1VTRV9QUkVULjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0ZUUF9VU0VfUFJFVC4zCmluZGV4IGIyMGYzZmIuLjEwZjcxM2IgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfRlRQX1VTRV9QUkVULjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9GVFBfVVNFX1BSRVQuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0dTU0FQSV9ERUxFR0FUSU9OLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0dTU0FQSV9ERUxFR0FUSU9OLjMKaW5kZXggMTNmM2NlYy4uNjVlYTZlYyAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9HU1NBUElfREVMRUdBVElPTi4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfR1NTQVBJX0RFTEVHQVRJT04uMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0hFQURFUi4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9IRUFERVIuMwppbmRleCBmNWE0YmU4Li5iNjUwMTYzIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0hFQURFUi4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSEVBREVSLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9IRUFERVJEQVRBLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0hFQURFUkRBVEEuMwppbmRleCBjMGE0NWYyLi5jODY1Yzg2IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0hFQURFUkRBVEEuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0hFQURFUkRBVEEuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0hFQURFUkZVTkNUSU9OLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0hFQURFUkZVTkNUSU9OLjMKaW5kZXggZjhlZDBhYi4uYjg1OTZkOCAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9IRUFERVJGVU5DVElPTi4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSEVBREVSRlVOQ1RJT04uMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC04NSw3ICs4NSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgbml0ZW1zLCB2b2lkICp1c2VyZGF0YSkKIHsKICAgLyogcmVjZWl2ZWQgaGVhZGVyIGlzIG5pdGVtcyAqIHNpemUgbG9uZyBpbiAnYnVmZmVyJyBOT1QgWkVSTyBURVJNSU5BVEVEICovCi0gIC8qICd1c2VyZGF0YScgaXMgc2V0IHdpdGggQ1VSTE9QVF9XUklURURBVEEgKi8KKyAgLyogJ3VzZXJkYXRhJyBpcyBzZXQgd2l0aCBDVVJMT1BUX0hFQURFUkRBVEEgKi8KICAgcmV0dXJuIG5pdGVtcyAqIHNpemU7CiB9CiAKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSEVBREVST1BULjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0hFQURFUk9QVC4zCmluZGV4IDc3NzZiOTIuLjcwNTNhM2EgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSEVBREVST1BULjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9IRUFERVJPUFQuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0hUVFAyMDBBTElBU0VTLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0hUVFAyMDBBTElBU0VTLjMKaW5kZXggYjg3ZGI0Ni4uMTdmMWRkMyAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9IVFRQMjAwQUxJQVNFUy4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSFRUUDIwMEFMSUFTRVMuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0hUVFBBVVRILjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0hUVFBBVVRILjMKaW5kZXggMzVkNzVhYS4uZmM3YTNhNCAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9IVFRQQVVUSC4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSFRUUEFVVEguMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0hUVFBHRVQuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSFRUUEdFVC4zCmluZGV4IGMxNGMzODcuLjAxZGUxZjMgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSFRUUEdFVC4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSFRUUEdFVC4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSFRUUEhFQURFUi4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9IVFRQSEVBREVSLjMKaW5kZXggY2Q1MDQzMS4uYzVjY2IxYSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9IVFRQSEVBREVSLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9IVFRQSEVBREVSLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9IVFRQUE9TVC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9IVFRQUE9TVC4zCmluZGV4IDBmMzViNjMuLjk3NGY5ZjMgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSFRUUFBPU1QuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0hUVFBQT1NULjMKQEAgLTUsMTEgKzUsMTEgQEAKIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKIC5cIiAqCi0uXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zNCw4ICszNCw4IEBACiBpbnN0cnVjdCB3aGF0IGRhdGEgdG8gcGFzcyBvbiB0byB0aGUgc2VydmVyIGluIHRoZSBcZklmb3JtcG9zdFxmUCBhcmd1bWVudC4KIFBhc3MgYSBwb2ludGVyIHRvIGEgbGlua2VkIGxpc3Qgb2YgY3VybF9odHRwcG9zdCBzdHJ1Y3RzIGFzIHBhcmFtZXRlci4gIFRoZQogZWFzaWVzdCB3YXkgdG8gY3JlYXRlIHN1Y2ggYSBsaXN0LCBpcyB0byB1c2UgXGZJY3VybF9mb3JtYWRkKDMpXGZQIGFzCi1kb2N1bWVudGVkLiBUaGUgZGF0YSBpbiB0aGlzIGxpc3QgbXVzdCByZW1haW4gaW50YWN0IHVudGlsIHlvdSBjbG9zZSB0aGlzIGN1cmwKLWhhbmRsZSBhZ2FpbiB3aXRoIFxmSWN1cmxfZWFzeV9jbGVhbnVwKDMpXGZQLgorZG9jdW1lbnRlZC4gVGhlIGRhdGEgaW4gdGhpcyBsaXN0IG11c3QgcmVtYWluIGludGFjdCBhcyBsb25nIGFzIHRoZSBjdXJsCit0cmFuc2ZlciBpcyBhbGl2ZSBhbmQgaXMgdXNpbmcgaXQuCiAKIFVzaW5nIFBPU1Qgd2l0aCBIVFRQIDEuMSBpbXBsaWVzIHRoZSB1c2Ugb2YgYSAiRXhwZWN0OiAxMDAtY29udGludWUiIGhlYWRlci4KIFlvdSBjYW4gZGlzYWJsZSB0aGlzIGhlYWRlciB3aXRoIFxmSUNVUkxPUFRfSFRUUEhFQURFUigzKVxmUC4KQEAgLTc2LDMgKzc2LDQgQEAKIFJldHVybnMgQ1VSTEVfT0sgaWYgSFRUUCBpcyBlbmFibGVkLCBhbmQgQ1VSTEVfVU5LTk9XTl9PUFRJT04gaWYgbm90LgogLlNIICJTRUUgQUxTTyIKIC5CUiBDVVJMT1BUX1BPU1RGSUVMRFMgIigzKSwgIiBDVVJMT1BUX1BPU1QgIigzKSwgIgorLkJSIGN1cmxfZm9ybWFkZCAiKDMpLCAiIGN1cmxfZm9ybWZyZWUgIigzKSwgIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9IVFRQUFJPWFlUVU5ORUwuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSFRUUFBST1hZVFVOTkVMLjMKaW5kZXggZjg2MWFmYi4uNmI0OGEwNSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9IVFRQUFJPWFlUVU5ORUwuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0hUVFBQUk9YWVRVTk5FTC4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSFRUUF9DT05URU5UX0RFQ09ESU5HLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0hUVFBfQ09OVEVOVF9ERUNPRElORy4zCmluZGV4IDY1NDcyZWMuLjkzMzhiMjQgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSFRUUF9DT05URU5UX0RFQ09ESU5HLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9IVFRQX0NPTlRFTlRfREVDT0RJTkcuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0hUVFBfVFJBTlNGRVJfREVDT0RJTkcuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSFRUUF9UUkFOU0ZFUl9ERUNPRElORy4zCmluZGV4IDI2NjYyZGIuLmRkZDU5ZDIgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSFRUUF9UUkFOU0ZFUl9ERUNPRElORy4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSFRUUF9UUkFOU0ZFUl9ERUNPRElORy4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSFRUUF9WRVJTSU9OLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0hUVFBfVkVSU0lPTi4zCmluZGV4IGM4NWQxNDQuLjk2ZGQ0YjYgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSFRUUF9WRVJTSU9OLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9IVFRQX1ZFUlNJT04uMwpAQCAtNSwxMSArNSwxMSBAQAogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogLlwiICoKLS5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTI4LDExICsyOCwxNSBAQAogCiBDVVJMY29kZSBjdXJsX2Vhc3lfc2V0b3B0KENVUkwgKmhhbmRsZSwgQ1VSTE9QVF9IVFRQX1ZFUlNJT04sIGxvbmcgdmVyc2lvbik7CiAuU0ggREVTQ1JJUFRJT04KLVBhc3MgXGZJdmVyc2lvblxmUCBhIGxvbmcsIHNldCB0byBvbmUgb2YgdGhlIHZhbHVlcyBkZXNjcmliZWQgYmVsb3cuIFRoZXkKLWZvcmNlIGxpYmN1cmwgdG8gdXNlIHRoZSBzcGVjaWZpYyBIVFRQIHZlcnNpb25zLiBUaGlzIGlzIG5vdCBzZW5zaWJsZSB0byBkbwotdW5sZXNzIHlvdSBoYXZlIGEgZ29vZCByZWFzb24uIFlvdSBoYXZlIHRvIHNldCB0aGlzIG9wdGlvbiBpZiB5b3Ugd2FudCB0byB1c2UKK1Bhc3MgXGZJdmVyc2lvblxmUCBhIGxvbmcsIHNldCB0byBvbmUgb2YgdGhlIHZhbHVlcyBkZXNjcmliZWQgYmVsb3cuIFRoZXkgYXNrCitsaWJjdXJsIHRvIHVzZSB0aGUgc3BlY2lmaWMgSFRUUCB2ZXJzaW9ucy4gVGhpcyBpcyBub3Qgc2Vuc2libGUgdG8gZG8gdW5sZXNzCit5b3UgaGF2ZSBhIGdvb2QgcmVhc29uLiBZb3UgaGF2ZSB0byBzZXQgdGhpcyBvcHRpb24gaWYgeW91IHdhbnQgdG8gdXNlCiBsaWJjdXJsJ3MgSFRUUC8yIHN1cHBvcnQuCiAKK05vdGUgdGhhdCB0aGUgSFRUUCB2ZXJzaW9uIGlzIGp1c3QgYSByZXF1ZXN0LiBsaWJjdXJsIHdpbGwgc3RpbGwgcHJpb3JpdGl6ZSB0bworcmUtdXNlIGFuIGV4aXN0aW5nIGNvbm5lY3Rpb24gc28gaXQgbWlnaHQgdGhlbiByZS11c2UgYSBjb25uZWN0aW9uIHVzaW5nIGEKK0hUVFAgdmVyc2lvbiB5b3UgaGF2ZW4ndCBhc2tlZCBmb3IuCisKIC5JUCBDVVJMX0hUVFBfVkVSU0lPTl9OT05FCiBXZSBkb24ndCBjYXJlIGFib3V0IHdoYXQgdmVyc2lvbiB0aGUgbGlicmFyeSB1c2VzLiBsaWJjdXJsIHdpbGwgdXNlIHdoYXRldmVyCiBpdCB0aGlua3MgZml0LgpAQCAtNDEsOCArNDUsMjAgQEAKIC5JUCBDVVJMX0hUVFBfVkVSU0lPTl8xXzEKIEVuZm9yY2UgSFRUUCAxLjEgcmVxdWVzdHMuCiAuSVAgQ1VSTF9IVFRQX1ZFUlNJT05fMl8wCi1BdHRlbXB0IEhUVFAgMiByZXF1ZXN0cy4gbGliY3VybCB3aWxsIGZhbGwgYmFjayB0byBIVFRQIDEueCBpZiBIVFRQIDIgY2FuJ3QgYmUKK0F0dGVtcHQgSFRUUCAyIHJlcXVlc3RzLiBsaWJjdXJsIHdpbGwgZmFsbCBiYWNrIHRvIEhUVFAgMS4xIGlmIEhUVFAgMiBjYW4ndCBiZQogbmVnb3RpYXRlZCB3aXRoIHRoZSBzZXJ2ZXIuIChBZGRlZCBpbiA3LjMzLjApCisKK1RoZSBhbGlhcyBcZklDVVJMX0hUVFBfVkVSU0lPTl8yXGZQIHdhcyBhZGRlZCBpbiA3LjQzLjAgdG8gYmV0dGVyIHJlZmxlY3QgdGhlCithY3R1YWwgcHJvdG9jb2wgbmFtZS4KKy5JUCBDVVJMX0hUVFBfVkVSU0lPTl8yVExTCitBdHRlbXB0IEhUVFAgMiBvdmVyIFRMUyAoSFRUUFMpIG9ubHkuIGxpYmN1cmwgd2lsbCBmYWxsIGJhY2sgdG8gSFRUUCAxLjEgaWYKK0hUVFAgMiBjYW4ndCBiZSBuZWdvdGlhdGVkIHdpdGggdGhlIEhUVFBTIHNlcnZlci4gRm9yIGNsZWFyIHRleHQgSFRUUCBzZXJ2ZXJzLAorbGliY3VybCB3aWxsIHVzZSAxLjEuIChBZGRlZCBpbiA3LjQ3LjApCisuSVAgQ1VSTF9IVFRQX1ZFUlNJT05fMl9QUklPUl9LTk9XTEVER0UKK0lzc3VlIG5vbi1UTFMgSFRUUCByZXF1ZXN0cyB1c2luZyBIVFRQLzIgd2l0aG91dCBIVFRQLzEuMSBVcGdyYWRlLiBJdCByZXF1aXJlcworcHJpb3Iga25vd2xlZGdlIHRoYXQgdGhlIHNlcnZlciBzdXBwb3J0cyBIVFRQLzIgc3RyYWlnaHQgYXdheS4gSFRUUFMgcmVxdWVzdHMKK3dpbGwgc3RpbGwgZG8gSFRUUC8yIHRoZSBzdGFuZGFyZCB3YXkgd2l0aCBuZWdvdGlhdGVkIHByb3RvY29sIHZlcnNpb24gaW4gdGhlCitUTFMgaGFuZHNoYWtlLiAoQWRkZWQgaW4gNy40OS4wKQogLlNIIERFRkFVTFQKIENVUkxfSFRUUF9WRVJTSU9OX05PTkUKIC5TSCBQUk9UT0NPTFMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSUdOT1JFX0NPTlRFTlRfTEVOR1RILjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0lHTk9SRV9DT05URU5UX0xFTkdUSC4zCmluZGV4IDUxZmQ2YjAuLjQxM2VlNTcgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSUdOT1JFX0NPTlRFTlRfTEVOR1RILjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9JR05PUkVfQ09OVEVOVF9MRU5HVEguMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yMiw3ICsyMiw3IEBACiAuXCIKIC5USCBDVVJMT1BUX0lHTk9SRV9DT05URU5UX0xFTkdUSCAzICIxOSBKdW4gMjAxNCIgImxpYmN1cmwgNy4zNy4wIiAiY3VybF9lYXN5X3NldG9wdCBvcHRpb25zIgogLlNIIE5BTUUKLUNVUkxPUFRfSUdOT1JFX0NPTlRFTlRfTEVOR1RIIFwtIGlnbm9yZSBDb250ZW50LUxlbmd0aCBpbiBIVFRQIHJlc3BvbnNlCitDVVJMT1BUX0lHTk9SRV9DT05URU5UX0xFTkdUSCBcLSBpZ25vcmUgY29udGVudCBsZW5ndGgKIC5TSCBTWU5PUFNJUwogLm5mCiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CkBAIC0zMCwxMiArMzAsMTggQEAKIENVUkxjb2RlIGN1cmxfZWFzeV9zZXRvcHQoQ1VSTCAqaGFuZGxlLCBDVVJMT1BUX0lHTk9SRV9DT05URU5UX0xFTkdUSCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBpZ25vcmUpOwogLlNIIERFU0NSSVBUSU9OCi1JZiBcZklpZ25vcmVcZlAgaXMgc2V0IHRvIDEsIGlnbm9yZSB0aGUgQ29udGVudC1MZW5ndGggaGVhZGVyIGluIHRoZSBIVFRQCi1yZXNwb25zZS4gVGhpcyBpcyB1c2VmdWwgZm9yIEFwYWNoZSAxLnggKGFuZCBzaW1pbGFyIHNlcnZlcnMpIHdoaWNoIHdpbGwKK0lmIFxmSWlnbm9yZVxmUCBpcyBzZXQgdG8gMUwsIGlnbm9yZSB0aGUgQ29udGVudC1MZW5ndGggaGVhZGVyIGluIHRoZSBIVFRQCityZXNwb25zZSBhbmQgaWdub3JlIGFza2luZyBmb3Igb3IgcmVseWluZyBvbiBpdCBmb3IgRlRQIHRyYW5zZmVycy4KKworVGhpcyBpcyB1c2VmdWwgZm9yIEhUVFAgd2l0aCBBcGFjaGUgMS54IChhbmQgc2ltaWxhciBzZXJ2ZXJzKSB3aGljaCB3aWxsCiByZXBvcnQgaW5jb3JyZWN0IGNvbnRlbnQgbGVuZ3RoIGZvciBmaWxlcyBvdmVyIDIgZ2lnYWJ5dGVzLiBJZiB0aGlzIG9wdGlvbiBpcwogdXNlZCwgY3VybCB3aWxsIG5vdCBiZSBhYmxlIHRvIGFjY3VyYXRlbHkgcmVwb3J0IHByb2dyZXNzLCBhbmQgd2lsbCBzaW1wbHkKIHN0b3AgdGhlIGRvd25sb2FkIHdoZW4gdGhlIHNlcnZlciBlbmRzIHRoZSBjb25uZWN0aW9uLgogCitJdCBpcyBhbHNvIHVzZWZ1bCB3aXRoIEZUUCB3aGVuIGZvciBleGFtcGxlIHRoZSBmaWxlIGlzIGdyb3dpbmcgd2hpbGUgdGhlCit0cmFuc2ZlciBpcyBpbiBwcm9ncmVzcyB3aGljaCBvdGhlcndpc2Ugd2lsbCB1bmNvbmRpdGlvbmFsbHkgY2F1c2UgbGliY3VybCB0bworcmVwb3J0IGVycm9yLgorCiBPbmx5IHVzZSB0aGlzIG9wdGlvbiBpZiBzdHJpY3RseSBuZWNlc3NhcnkuCiAuU0ggREVGQVVMVAogMApAQCAtNTQsNyArNjAsNyBAQAogfQogLmZpCiAuU0ggQVZBSUxBQklMSVRZCi1BZGRlZCBpbiA3LjE0LjEKK0FkZGVkIGluIDcuMTQuMS4gU3VwcG9ydCBmb3IgRlRQIGFkZGVkIGluIDcuNDYuMC4KIC5TSCBSRVRVUk4gVkFMVUUKIFJldHVybnMgQ1VSTEVfT0sgaWYgdGhlIG9wdGlvbiBpcyBzdXBwb3J0ZWQsIGFuZCBDVVJMRV9VTktOT1dOX09QVElPTiBpZiBub3QuCiAuU0ggIlNFRSBBTFNPIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9JTkZJTEVTSVpFLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0lORklMRVNJWkUuMwppbmRleCBmZDQ5ZTIxLi4wODhmNDVkIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0lORklMRVNJWkUuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0lORklMRVNJWkUuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0lORklMRVNJWkVfTEFSR0UuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSU5GSUxFU0laRV9MQVJHRS4zCmluZGV4IDExNDY3NmQuLmY4NjZjZDQgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSU5GSUxFU0laRV9MQVJHRS4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSU5GSUxFU0laRV9MQVJHRS4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSU5URVJGQUNFLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0lOVEVSRkFDRS4zCmluZGV4IDA4OTBlYjYuLjc3ZGIzNzIgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSU5URVJGQUNFLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9JTlRFUkZBQ0UuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0lOVEVSTEVBVkVEQVRBLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0lOVEVSTEVBVkVEQVRBLjMKaW5kZXggODM2ZGZhYy4uYjQ3ZDIxZCAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9JTlRFUkxFQVZFREFUQS4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSU5URVJMRUFWRURBVEEuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0lOVEVSTEVBVkVGVU5DVElPTi4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9JTlRFUkxFQVZFRlVOQ1RJT04uMwppbmRleCBiOTY1NTI5Li45NWU2ZmU1IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0lOVEVSTEVBVkVGVU5DVElPTi4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSU5URVJMRUFWRUZVTkNUSU9OLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9JT0NUTERBVEEuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSU9DVExEQVRBLjMKaW5kZXggNDU2MDgwYy4uMGVmOTZlMiAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9JT0NUTERBVEEuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0lPQ1RMREFUQS4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSU9DVExGVU5DVElPTi4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9JT0NUTEZVTkNUSU9OLjMKaW5kZXggZWJmZThkZi4uZjJkZDQyZSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9JT0NUTEZVTkNUSU9OLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9JT0NUTEZVTkNUSU9OLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9JUFJFU09MVkUuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSVBSRVNPTFZFLjMKaW5kZXggYWQ5ODI3YS4uODE3ZjM0ZCAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9JUFJFU09MVkUuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0lQUkVTT0xWRS4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfSVNTVUVSQ0VSVC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9JU1NVRVJDRVJULjMKaW5kZXggMDhhZmIyOS4uNjExOThlYSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9JU1NVRVJDRVJULjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9JU1NVRVJDRVJULjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9LRVlQQVNTV0QuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfS0VZUEFTU1dELjMKaW5kZXggMGVkMGM4Ny4uOWI4NWI4MiAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9LRVlQQVNTV0QuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0tFWVBBU1NXRC4zCkBAIC01LDExICs1LDExIEBACiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAuXCIgKgotLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzUsNyArMzUsNyBAQAogLlNIIERFRkFVTFQKIE5VTEwKIC5TSCBQUk9UT0NPTFMKLUFsbCBUTFMgYmFzZWQgcHJvdG9jb2xzOiBIVFRQUywgRlRQUywgSU1BUFMsIFBPUDMsIFNNVFBTIGV0Yy4KK0FsbCBUTFMgYmFzZWQgcHJvdG9jb2xzOiBIVFRQUywgRlRQUywgSU1BUFMsIFBPUDNTLCBTTVRQUyBldGMuCiAuU0ggRVhBTVBMRQogVE9ETwogLlNIIEFWQUlMQUJJTElUWQpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9LUkJMRVZFTC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9LUkJMRVZFTC4zCmluZGV4IDU3MWViYTMuLjZlYmQyZjIgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfS1JCTEVWRUwuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0tSQkxFVkVMLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNDUsNCArNDUsNCBAQAogUmV0dXJucyBDVVJMRV9PSyBpZiB0aGUgb3B0aW9uIGlzIHN1cHBvcnRlZCwgQ1VSTEVfVU5LTk9XTl9PUFRJT04gaWYgbm90LCBvcgogQ1VSTEVfT1VUX09GX01FTU9SWSBpZiB0aGVyZSB3YXMgaW5zdWZmaWNpZW50IGhlYXAgc3BhY2UuCiAuU0ggIlNFRSBBTFNPIgotLkJSIENVUkxPUFRfS1JCTEVWRUwgIigzKSwgIiBDVVJMT1BUX0ZUUF9TU0wgIigzKSwgIgorLkJSIENVUkxPUFRfS1JCTEVWRUwgIigzKSwgIiBDVVJMT1BUX1VTRV9TU0wgIigzKSwgIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9MT0NBTFBPUlQuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfTE9DQUxQT1JULjMKaW5kZXggODhjYTFmOC4uZTU2ZjAxMiAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9MT0NBTFBPUlQuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0xPQ0FMUE9SVC4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfTE9DQUxQT1JUUkFOR0UuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfTE9DQUxQT1JUUkFOR0UuMwppbmRleCAzYTdjNzAxLi5lNTRhMWM4IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0xPQ0FMUE9SVFJBTkdFLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9MT0NBTFBPUlRSQU5HRS4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfTE9HSU5fT1BUSU9OUy4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9MT0dJTl9PUFRJT05TLjMKaW5kZXggZGRlM2M2ZS4uYTljYTE5MiAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9MT0dJTl9PUFRJT05TLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9MT0dJTl9PUFRJT05TLjMKQEAgLTUsMTEgKzUsMTEgQEAKIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKIC5cIiAqCi0uXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zNCw3ICszNCw3IEBACiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbG9naW4gb3B0aW9ucyBwbGVhc2Ugc2VlIFJGQzIzODQsIFJGQzUwOTIgYW5kCiBJRVRGIGRyYWZ0IGRyYWZ0LWVhcmhhcnQtdXJsLXNtdHAtMDAudHh0CiAKLVxmQkNVUkxPUFRfTE9HSU5fT1BUSU9OUygzKVxmUCBjYW4gYmUgdXNlZCB0byBzZXQgcHJvdG9jb2wgc3BlY2lmaWMgbG9naW4KK1xmSUNVUkxPUFRfTE9HSU5fT1BUSU9OUygzKVxmUCBjYW4gYmUgdXNlZCB0byBzZXQgcHJvdG9jb2wgc3BlY2lmaWMgbG9naW4KIG9wdGlvbnMsIHN1Y2ggYXMgdGhlIHByZWZlcnJlZCBhdXRoZW50aWNhdGlvbiBtZWNoYW5pc20gdmlhICJBVVRIPU5UTE0iIG9yCiAiQVVUSD0qIiwgYW5kIHNob3VsZCBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIFxmSUNVUkxPUFRfVVNFUk5BTUUoMylcZlAKIG9wdGlvbi4KZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfTE9XX1NQRUVEX0xJTUlULjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0xPV19TUEVFRF9MSU1JVC4zCmluZGV4IDg5M2MxYjEuLjg5MGVhNzIgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfTE9XX1NQRUVEX0xJTUlULjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9MT1dfU1BFRURfTElNSVQuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0xPV19TUEVFRF9USU1FLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX0xPV19TUEVFRF9USU1FLjMKaW5kZXggOTBiMTlmMi4uZWQzYjgyOSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9MT1dfU1BFRURfVElNRS4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfTE9XX1NQRUVEX1RJTUUuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX01BSUxfQVVUSC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9NQUlMX0FVVEguMwppbmRleCA0NTkxYTAxLi5iZDU4MWYwIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX01BSUxfQVVUSC4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfTUFJTF9BVVRILjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9NQUlMX0ZST00uMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfTUFJTF9GUk9NLjMKaW5kZXggYmY3MTYwZS4uMDQyMGQ0OSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9NQUlMX0ZST00uMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX01BSUxfRlJPTS4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfTUFJTF9SQ1BULjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX01BSUxfUkNQVC4zCmluZGV4IDk1NjY1ZTcuLjAxZmE2MmEgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfTUFJTF9SQ1BULjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9NQUlMX1JDUFQuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX01BWENPTk5FQ1RTLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX01BWENPTk5FQ1RTLjMKaW5kZXggMmE0MWIzNy4uOGU5MGE5ZCAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9NQVhDT05ORUNUUy4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfTUFYQ09OTkVDVFMuMwpAQCAtNSwxMSArNSwxMSBAQAogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogLlwiICoKLS5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTQ0LDcgKzQ0LDcgQEAKIAogSWYgeW91IGFkZCB0aGlzIGVhc3kgaGFuZGxlIHRvIGEgbXVsdGkgaGFuZGxlLCB0aGlzIHNldHRpbmcgaXMgbm90CiBhY2tub3dsZWRnZWQsIGFuZCB5b3UgbXVzdCBpbnN0ZWFkIHVzZSBcZkljdXJsX211bHRpX3NldG9wdCgzKVxmUCBhbmQgdGhlCi1cZklDVVJMTU9QVF9NQVhDT05ORUNUU1xmUCBvcHRpb24uCitcZklDVVJMTU9QVF9NQVhDT05ORUNUUygzKVxmUCBvcHRpb24uCiAuU0ggREVGQVVMVAogNQogLlNIIFBST1RPQ09MUwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9NQVhGSUxFU0laRS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9NQVhGSUxFU0laRS4zCmluZGV4IGUwY2UwNjYuLjVmNTk1OWEgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfTUFYRklMRVNJWkUuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX01BWEZJTEVTSVpFLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9NQVhGSUxFU0laRV9MQVJHRS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9NQVhGSUxFU0laRV9MQVJHRS4zCmluZGV4IGIzMTMwMDEuLjYzMGMwYjUgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfTUFYRklMRVNJWkVfTEFSR0UuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX01BWEZJTEVTSVpFX0xBUkdFLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9NQVhSRURJUlMuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfTUFYUkVESVJTLjMKaW5kZXggMzQ2MDhjMy4uY2U2MjU1MyAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9NQVhSRURJUlMuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX01BWFJFRElSUy4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfTUFYX1JFQ1ZfU1BFRURfTEFSR0UuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfTUFYX1JFQ1ZfU1BFRURfTEFSR0UuMwppbmRleCBlNzNhZDIyLi4wMzFmMmNkIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX01BWF9SRUNWX1NQRUVEX0xBUkdFLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9NQVhfUkVDVl9TUEVFRF9MQVJHRS4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfTUFYX1NFTkRfU1BFRURfTEFSR0UuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfTUFYX1NFTkRfU1BFRURfTEFSR0UuMwppbmRleCA0ODkzYjM5Li5jMmM2MzM2IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX01BWF9TRU5EX1NQRUVEX0xBUkdFLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9NQVhfU0VORF9TUEVFRF9MQVJHRS4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfTkVUUkMuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfTkVUUkMuMwppbmRleCA5ZmIxM2IzLi5jNDUzZGQzIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX05FVFJDLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9ORVRSQy4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfTkVUUkNfRklMRS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9ORVRSQ19GSUxFLjMKaW5kZXggNzI5MTk5OS4uZDNlY2M5NSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9ORVRSQ19GSUxFLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9ORVRSQ19GSUxFLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9ORVdfRElSRUNUT1JZX1BFUk1TLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX05FV19ESVJFQ1RPUllfUEVSTVMuMwppbmRleCAyZDIyNTk1Li5mMTk1ZmFiIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX05FV19ESVJFQ1RPUllfUEVSTVMuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX05FV19ESVJFQ1RPUllfUEVSTVMuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX05FV19GSUxFX1BFUk1TLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX05FV19GSUxFX1BFUk1TLjMKaW5kZXggZWI1MWY0Ni4uMmE0MWFiYSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9ORVdfRklMRV9QRVJNUy4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfTkVXX0ZJTEVfUEVSTVMuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX05PQk9EWS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9OT0JPRFkuMwppbmRleCBiMzAzYjk1Li4zNDBiOWY0IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX05PQk9EWS4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfTk9CT0RZLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9OT1BST0dSRVNTLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX05PUFJPR1JFU1MuMwppbmRleCBlYmRlY2IwLi44MTk0YTVlIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX05PUFJPR1JFU1MuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX05PUFJPR1JFU1MuMwpAQCAtNSwxMSArNSwxMSBAQAogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogLlwiICoKLS5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTM2LDYgKzM2LDIzIEBACiBhdCBhbGwuCiAuU0ggREVGQVVMVAogMSwgbWVhbmluZyBpdCBub3JtYWxseSBydW5zIHdpdGhvdXQgYSBwcm9ncmVzcyBtZXRlci4KKy5TSCBQUk9UT0NPTFMKK0FsbAorLlNIIEVYQU1QTEUKKy5uZgorQ1VSTCAqY3VybCA9IGN1cmxfZWFzeV9pbml0KCk7CitpZihjdXJsKSB7CisgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9VUkwsICJodHRwOi8vZXhhbXBsZS5jb20iKTsKKworICAvKiBlbmFibGUgcHJvZ3Jlc3MgbWV0ZXIgKi8KKyAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX05PUFJPR1JFU1MsIDBMKTsKKworICAvKiBQZXJmb3JtIHRoZSByZXF1ZXN0ICovCisgIGN1cmxfZWFzeV9wZXJmb3JtKGN1cmwpOworfQorLmZpCisuU0ggQVZBSUxBQklMSVRZCitBbHdheXMKIC5TSCBSRVRVUk4gVkFMVUUKIFJldHVybnMgQ1VSTEVfT0suCiAuU0ggIlNFRSBBTFNPIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9OT1BST1hZLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX05PUFJPWFkuMwppbmRleCA3ZTJlNzE5Li4yOTk4YTMwIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX05PUFJPWFkuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX05PUFJPWFkuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX05PU0lHTkFMLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX05PU0lHTkFMLjMKaW5kZXggMjdmZTE1OC4uZGFjMDcxMCAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9OT1NJR05BTC4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfTk9TSUdOQUwuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX09QRU5TT0NLRVREQVRBLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX09QRU5TT0NLRVREQVRBLjMKaW5kZXggYTM5N2MzZS4uODY5YjdmNiAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9PUEVOU09DS0VUREFUQS4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfT1BFTlNPQ0tFVERBVEEuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX09QRU5TT0NLRVRGVU5DVElPTi4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9PUEVOU09DS0VURlVOQ1RJT04uMwppbmRleCBkNWY0NjFkLi4zMTRlMGM0IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX09QRU5TT0NLRVRGVU5DVElPTi4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfT1BFTlNPQ0tFVEZVTkNUSU9OLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QQVNTV09SRC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QQVNTV09SRC4zCmluZGV4IGI0NjA2NTguLjA2ZWQ5ZTEgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUEFTU1dPUkQuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BBU1NXT1JELjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QQVRIX0FTX0lTLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BBVEhfQVNfSVMuMwppbmRleCA0OTBhY2EwLi45YjBkM2Q1IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BBVEhfQVNfSVMuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BBVEhfQVNfSVMuMwpAQCAtNSwxMSArNSwxMSBAQAogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogLlwiICoKLS5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTI4LDEyICsyOCwxMiBAQAogCiBDVVJMY29kZSBjdXJsX2Vhc3lfc2V0b3B0KENVUkwgKmhhbmRsZSwgQ1VSTE9QVF9QQVRIX0FTX0lTLCBsb25nIGxlYXZlaXQpOwogLlNIIERFU0NSSVBUSU9OCi1CeSBzZXR0aW5nIHRoZSBsb25nIFxmSWxlYXZpdFxmUCB0byAxLCB0byBleHBsaWNpdGx5IHRlbGwgbGliY3VybCB0byBub3QgYWx0ZXIKLXRoZSBnaXZlbiBwYXRoIGJlZm9yZSBwYXNzaW5nIGl0IG9uIHRvIHRoZSBzZXJ2ZXIuCitTZXQgdGhlIGxvbmcgXGZJbGVhdmVpdFxmUCB0byAxLCB0byBleHBsaWNpdGx5IHRlbGwgbGliY3VybCB0byBub3QgYWx0ZXIgdGhlCitnaXZlbiBwYXRoIGJlZm9yZSBwYXNzaW5nIGl0IG9uIHRvIHRoZSBzZXJ2ZXIuCiAKLVRoaXMgdGVsbHMgbGliY3VybCB0byBOT1Qgc3F1YXNoIHNlcXVlbmNlcyBvZiAiLy4uLyIgb3IgIi8uLyIgdGhhdCBtYXkgZXhpc3QKLWluIHRoZSBVUkwncyBwYXRoIHBhcnQgYW5kIHRoYXQgaXMgc3VwcG9zZWQgdG8gYmUgcmVtb3ZlZCBhY2NvcmRpbmcgdG8gUkZDCi0zOTg2IHNlY3Rpb24gNS4yLjQuCitUaGlzIGluc3RydWN0cyBsaWJjdXJsIHRvIE5PVCBzcXVhc2ggc2VxdWVuY2VzIG9mICIvLi4vIiBvciAiLy4vIiB0aGF0IG1heQorZXhpc3QgaW4gdGhlIFVSTCdzIHBhdGggcGFydCBhbmQgdGhhdCBpcyBzdXBwb3NlZCB0byBiZSByZW1vdmVkIGFjY29yZGluZyB0bworUkZDIDM5ODYgc2VjdGlvbiA1LjIuNC4KIAogU29tZSBzZXJ2ZXIgaW1wbGVtZW50YXRpb25zIGFyZSBrbm93biB0byAoZXJyb25lb3VzbHkpIHJlcXVpcmUgdGhlIGRvdCBkb3QKIHNlcXVlbmNlcyB0byByZW1haW4gaW4gdGhlIHBhdGggYW5kIHNvbWUgY2xpZW50cyB3YW50IHRvIHBhc3MgdGhlc2Ugb24gaW4KQEAgLTQzLDcgKzQzLDcgQEAKIC5TSCBERUZBVUxUCiAwCiAuU0ggUFJPVE9DT0xTCi1BbGwgCitBbGwKIC5TSCBFWEFNUExFCiAubmYKIENVUkwgKmN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpOwpAQCAtNjEsMyArNjEsNSBAQAogUmV0dXJucyBDVVJMRV9PSyBpZiB0aGUgb3B0aW9uIGlzIHN1cHBvcnRlZCwgYW5kIENVUkxFX1VOS05PV05fT1BUSU9OIGlmIG5vdC4KIC5TSCAiU0VFIEFMU08iCiAuQlIgQ1VSTE9QVF9TVERFUlIgIigzKSwgIiBDVVJMT1BUX0RFQlVHRlVOQ1RJT04gIigzKSwgIgorLkJSIENVUkxPUFRfVVJMICIoMyksICIKKwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QSU5ORURQVUJMSUNLRVkuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUElOTkVEUFVCTElDS0VZLjMKaW5kZXggOTRjYWQzMS4uNGU2NzNiZCAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QSU5ORURQVUJMSUNLRVkuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BJTk5FRFBVQkxJQ0tFWS4zCkBAIC01LDExICs1LDExIEBACiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAuXCIgKgotLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjgsMjMgKzI4LDMwIEBACiAKIENVUkxjb2RlIGN1cmxfZWFzeV9zZXRvcHQoQ1VSTCAqaGFuZGxlLCBDVVJMT1BUX1BJTk5FRFBVQkxJQ0tFWSwgY2hhciAqcGlubmVkcHVia2V5KTsKIC5TSCBERVNDUklQVElPTgotUGFzcyBhIHBvaW50ZXIgdG8gYSB6ZXJvIHRlcm1pbmF0ZWQgc3RyaW5nIGFzIHBhcmFtZXRlci4gVGhlIHN0cmluZyBzaG91bGQgYmUKLXRoZSBmaWxlIG5hbWUgb2YgeW91ciBwaW5uZWQgcHVibGljIGtleS4gVGhlIGZvcm1hdCBleHBlY3RlZCBpcyAiUEVNIiBvciAiREVSIi4KK1Bhc3MgYSBwb2ludGVyIHRvIGEgemVybyB0ZXJtaW5hdGVkIHN0cmluZyBhcyBwYXJhbWV0ZXIuIFRoZSBzdHJpbmcgY2FuIGJlIHRoZQorZmlsZSBuYW1lIG9mIHlvdXIgcGlubmVkIHB1YmxpYyBrZXkuIFRoZSBmaWxlIGZvcm1hdCBleHBlY3RlZCBpcyAiUEVNIiBvciAiREVSIi4KK1RoZSBzdHJpbmcgY2FuIGFsc28gYmUgYW55IG51bWJlciBvZiBiYXNlNjQgZW5jb2RlZCBzaGEyNTYgaGFzaGVzIHByZWNlZGVkIGJ5Cisic2hhMjU2Ly8iIGFuZCBzZXBhcmF0ZWQgYnkgIjsiCiAKIFdoZW4gbmVnb3RpYXRpbmcgYSBUTFMgb3IgU1NMIGNvbm5lY3Rpb24sIHRoZSBzZXJ2ZXIgc2VuZHMgYSBjZXJ0aWZpY2F0ZQogaW5kaWNhdGluZyBpdHMgaWRlbnRpdHkuIEEgcHVibGljIGtleSBpcyBleHRyYWN0ZWQgZnJvbSB0aGlzIGNlcnRpZmljYXRlIGFuZAogaWYgaXQgZG9lcyBub3QgZXhhY3RseSBtYXRjaCB0aGUgcHVibGljIGtleSBwcm92aWRlZCB0byB0aGlzIG9wdGlvbiwgY3VybCB3aWxsCiBhYm9ydCB0aGUgY29ubmVjdGlvbiBiZWZvcmUgc2VuZGluZyBvciByZWNlaXZpbmcgYW55IGRhdGEuCisKK09uIG1pc21hdGNoLCBcZklDVVJMRV9TU0xfUElOTkVEUFVCS0VZTk9UTUFUQ0hcZlAgaXMgcmV0dXJuZWQuCiAuU0ggREVGQVVMVAogTlVMTAogLlNIIFBST1RPQ09MUwotQWxsIFRMUyBiYXNlZCBwcm90b2NvbHM6IEhUVFBTLCBGVFBTLCBJTUFQUywgUE9QMywgU01UUFMgZXRjLgorQWxsIFRMUyBiYXNlZCBwcm90b2NvbHM6IEhUVFBTLCBGVFBTLCBJTUFQUywgUE9QM1MsIFNNVFBTIGV0Yy4KIC5TSCBFWEFNUExFCiAubmYKIENVUkwgKmN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpOwogaWYoY3VybCkgewogICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfVVJMLCAiaHR0cHM6Ly9leGFtcGxlLmNvbSIpOwogICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfUElOTkVEUFVCTElDS0VZLCAiL2V0Yy9wdWJsaWNrZXkuZGVyIik7CisgIC8qIE9SCisgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9QSU5ORURQVUJMSUNLRVksICJzaGEyNTYvL1loS0pLU3pvVHQyYjVGUDE4ZnZwSG83ZkpZcVFDakFhM0hXWTN0dlJNd0U9O3NoYTI1Ni8vdDYyQ2VVMnRRaXFrZXhVNzRHeGEyZWc3ZlJiRWdvQ2hUb2NpTWVlOXdubz0iKTsKKyAgKi8KIAogICAvKiBQZXJmb3JtIHRoZSByZXF1ZXN0ICovCiAgIGN1cmxfZWFzeV9wZXJmb3JtKGN1cmwpOwpAQCAtNTQsOSArNjEsMjggQEAKIElmIHlvdSBkbyBub3QgaGF2ZSB0aGUgc2VydmVyJ3MgcHVibGljIGtleSBmaWxlIHlvdSBjYW4gZXh0cmFjdCBpdCBmcm9tIHRoZQogc2VydmVyJ3MgY2VydGlmaWNhdGUuCiAubmYKLW9wZW5zc2wgeDUwOSAtaW4gd3d3LnRlc3QuY29tLnBlbSAtcHVia2V5IC1ub291dCA+IHd3dy50ZXN0LmNvbS5wdWJrZXkucGVtCisjIHJldHJpZXZlIHRoZSBzZXJ2ZXIncyBjZXJ0aWZpY2F0ZSBpZiB5b3UgZG9uJ3QgYWxyZWFkeSBoYXZlIGl0CisjCisjIGJlIHN1cmUgdG8gZXhhbWluZSB0aGUgY2VydGlmaWNhdGUgdG8gc2VlIGlmIGl0IGlzIHdoYXQgeW91IGV4cGVjdGVkCisjCisjIFdpbmRvd3Mtc3BlY2lmaWM6CisjIC0gVXNlIE5VTCBpbnN0ZWFkIG9mIC9kZXYvbnVsbC4KKyMgLSBPcGVuU1NMIG1heSB3YWl0IGZvciBpbnB1dCBpbnN0ZWFkIG9mIGRpc2Nvbm5lY3RpbmcuIEhpdCBlbnRlci4KKyMgLSBJZiB5b3UgZG9uJ3QgaGF2ZSBzZWQsIHRoZW4ganVzdCBjb3B5IHRoZSBjZXJ0aWZpY2F0ZSBpbnRvIGEgZmlsZToKKyMgICBMaW5lcyBmcm9tIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLSB0byAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tLgorIworb3BlbnNzbCBzX2NsaWVudCAtc2VydmVybmFtZSB3d3cuZXhhbXBsZS5jb20gLWNvbm5lY3Qgd3d3LmV4YW1wbGUuY29tOjQ0MyA8IC9kZXYvbnVsbCB8IHNlZCAtbiAiLy0tLS0tQkVHSU4vLC8tLS0tLUVORC9wIiA+IHd3dy5leGFtcGxlLmNvbS5wZW0KKworIyBleHRyYWN0IHB1YmxpYyBrZXkgaW4gcGVtIGZvcm1hdCBmcm9tIGNlcnRpZmljYXRlCitvcGVuc3NsIHg1MDkgLWluIHd3dy5leGFtcGxlLmNvbS5wZW0gLXB1YmtleSAtbm9vdXQgPiB3d3cuZXhhbXBsZS5jb20ucHVia2V5LnBlbQorCisjIGNvbnZlcnQgcHVibGljIGtleSBmcm9tIHBlbSB0byBkZXIKK29wZW5zc2wgYXNuMXBhcnNlIC1ub291dCAtaW5mb3JtIHBlbSAtaW4gd3d3LmV4YW1wbGUuY29tLnB1YmtleS5wZW0gLW91dCB3d3cuZXhhbXBsZS5jb20ucHVia2V5LmRlcgorCisjIHNoYTI1NiBoYXNoIGFuZCBiYXNlNjQgZW5jb2RlIGRlciB0byBzdHJpbmcgZm9yIHVzZQorb3BlbnNzbCBkZ3N0IC1zaGEyNTYgLWJpbmFyeSB3d3cuZXhhbXBsZS5jb20ucHVia2V5LmRlciB8IG9wZW5zc2wgYmFzZTY0CiAuZmkKLVRoZSBwdWJsaWMga2V5IGlzIG91dHB1dCBpbiBQRU0gZm9ybWF0IGFuZCBjb250YWlucyBhIGhlYWRlciwgYmFzZTY0IGRhdGEgYW5kIGEKK1RoZSBwdWJsaWMga2V5IGluIFBFTSBmb3JtYXQgY29udGFpbnMgYSBoZWFkZXIsIGJhc2U2NCBkYXRhIGFuZCBhCiBmb290ZXI6CiAubmYKIC0tLS0tQkVHSU4gUFVCTElDIEtFWS0tLS0tCkBAIC02NCw4ICs5MCwxNiBAQAogLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tCiAuZmkKIC5TSCBBVkFJTEFCSUxJVFkKLUFkZGVkIGluIDcuMzkuMCBmb3IgT3BlblNTTCwgR251VExTIGFuZCBHU0tpdC4gQWRkZWQgaW4gNy40My4wIGZvcgotTlNTIGFuZCB3b2xmU1NML0N5YVNTTC4gT3RoZXIgU1NMIGJhY2tlbmRzIG5vdCBzdXBwb3J0ZWQuCitQRU0vREVSIHN1cHBvcnQ6CisgIDcuMzkuMDogT3BlblNTTCwgR251VExTIGFuZCBHU0tpdAorICA3LjQzLjA6IE5TUyBhbmQgd29sZlNTTC9DeWFTU0wKKyAgNy40Ny4wOiBtYmVkdGxzCisgIDcuNDkuMDogUG9sYXJTU0wKK3NoYTI1NiBzdXBwb3J0OgorICA3LjQ0LjA6IE9wZW5TU0wsIEdudVRMUywgTlNTIGFuZCB3b2xmU1NML0N5YVNTTC4KKyAgNy40Ny4wOiBtYmVkdGxzCisgIDcuNDkuMDogUG9sYXJTU0wKK090aGVyIFNTTCBiYWNrZW5kcyBub3Qgc3VwcG9ydGVkLgogLlNIIFJFVFVSTiBWQUxVRQogUmV0dXJucyBDVVJMRV9PSyBpZiBUTFMgZW5hYmxlZCwgQ1VSTEVfVU5LTk9XTl9PUFRJT04gaWYgbm90LCBvcgogQ1VSTEVfT1VUX09GX01FTU9SWSBpZiB0aGVyZSB3YXMgaW5zdWZmaWNpZW50IGhlYXAgc3BhY2UuCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BJUEVXQUlULjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BJUEVXQUlULjMKaW5kZXggNWY2NDE5NS4uNmQwZjE0ZSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QSVBFV0FJVC4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUElQRVdBSVQuMwpAQCAtNSwxMSArNSwxMSBAQAogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogLlwiICoKLS5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTM2LDEwICszNiwxMCBAQAogc3VjaCBjb25uZWN0aW9uIGV4aXN0cyBpdCB3aWxsIGltbWVkaWF0ZWx5IGNvbnRpbnVlIGFuZCBjcmVhdGUgYSBmcmVzaCBuZXcKIGNvbm5lY3Rpb24gdG8gdXNlLgogCi1CeSBzZXR0aW5nIHRoaXMgb3B0aW9uIHRvIDEgLSBhbmQgaGF2aW5nIFxmSUNVUkxNT1BUX1BJUEVMSU5FXGZQIGVuYWJsZWQgZm9yCi10aGUgbXVsdGkgaGFuZGxlIHRoaXMgdHJhbnNmZXIgaXMgYXNzb2NpYXRlZCB3aXRoIC0gbGliY3VybCB3aWxsIGluc3RlYWQgd2FpdAotZm9yIHRoZSBjb25uZWN0aW9uIHRvIHJldmVhbCBpZiBpdCBpcyBwb3NzaWJsZSB0byBwaXBlbGluZS9tdWx0aXBsZXggb24gYmVmb3JlCi1pdCBjb250aW51ZXMuIFRoaXMgZW5hYmxlcyBsaWJjdXJsIHRvIG11Y2ggYmV0dGVyIGtlZXAgdGhlIG51bWJlciBvZgorQnkgc2V0dGluZyB0aGlzIG9wdGlvbiB0byAxIC0gYW5kIGhhdmluZyBcZklDVVJMTU9QVF9QSVBFTElOSU5HKDMpXGZQIGVuYWJsZWQKK2ZvciB0aGUgbXVsdGkgaGFuZGxlIHRoaXMgdHJhbnNmZXIgaXMgYXNzb2NpYXRlZCB3aXRoIC0gbGliY3VybCB3aWxsIGluc3RlYWQKK3dhaXQgZm9yIHRoZSBjb25uZWN0aW9uIHRvIHJldmVhbCBpZiBpdCBpcyBwb3NzaWJsZSB0byBwaXBlbGluZS9tdWx0aXBsZXggb24KK2JlZm9yZSBpdCBjb250aW51ZXMuIFRoaXMgZW5hYmxlcyBsaWJjdXJsIHRvIG11Y2ggYmV0dGVyIGtlZXAgdGhlIG51bWJlciBvZgogY29ubmVjdGlvbnMgdG8gYSBtaW5pbXVtIHdoZW4gdXNpbmcgcGlwZWxpbmluZyBvciBtdWx0aXBsZXhpbmcgcHJvdG9jb2xzLgogCiBUaGUgZWZmZWN0IHRodXMgYmVjb21lcyB0aGF0IHdpdGggdGhpcyBvcHRpb24gc2V0LCBsaWJjdXJsIHByZWZlcnMgdG8gd2FpdCBhbmQKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUE9SVC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QT1JULjMKaW5kZXggNWZkMTljNy4uZjQ3YjI0MyAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QT1JULjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QT1JULjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QT1NULjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BPU1QuMwppbmRleCBjZDZiNmQ0Li43NzU0YzdkIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BPU1QuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BPU1QuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BPU1RGSUVMRFMuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUE9TVEZJRUxEUy4zCmluZGV4IDI3ZTQ1MTAuLmY5ZjllYWQgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUE9TVEZJRUxEUy4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUE9TVEZJRUxEUy4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUE9TVEZJRUxEU0laRS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QT1NURklFTERTSVpFLjMKaW5kZXggMDE2NjgwNS4uOGRiMDVjNiAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QT1NURklFTERTSVpFLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QT1NURklFTERTSVpFLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QT1NURklFTERTSVpFX0xBUkdFLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BPU1RGSUVMRFNJWkVfTEFSR0UuMwppbmRleCA1MGZjMzUxLi45ZDBjNDAxIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BPU1RGSUVMRFNJWkVfTEFSR0UuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BPU1RGSUVMRFNJWkVfTEFSR0UuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BPU1RRVU9URS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QT1NUUVVPVEUuMwppbmRleCA3MjY5MmZkLi4zMjgzYTFhIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BPU1RRVU9URS4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUE9TVFFVT1RFLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QT1NUUkVESVIuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUE9TVFJFRElSLjMKaW5kZXggYWEzNmJkMC4uMDdhZWE2ZSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QT1NUUkVESVIuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BPU1RSRURJUi4zCkBAIC01LDExICs1LDExIEBACiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAuXCIgKgotLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzIsMTMgKzMyLDEzIEBACiAuU0ggREVTQ1JJUFRJT04KIFBhc3MgYSBiaXRtYXNrIHRvIGNvbnRyb2wgaG93IGxpYmN1cmwgYWN0cyBvbiByZWRpcmVjdHMgYWZ0ZXIgUE9TVHMgdGhhdCBnZXQgYQogMzAxLCAzMDIgb3IgMzAzIHJlc3BvbnNlIGJhY2suICBBIHBhcmFtZXRlciB3aXRoIGJpdCAwIHNldCAodmFsdWUKLVxmQkNVUkxfUkVESVJfUE9TVF8zMDFcZlApIHRlbGxzIHRoZSBsaWJyYXJ5IHRvIHJlc3BlY3QgUkZDMjYxNi8xMC4zLjIgYW5kIG5vdAotY29udmVydCBQT1NUIHJlcXVlc3RzIGludG8gR0VUIHJlcXVlc3RzIHdoZW4gZm9sbG93aW5nIGEgMzAxIHJlZGlyZWN0aW9uLgotU2V0dGluZyBiaXQgMSAodmFsdWUgXGZCQ1VSTF9SRURJUl9QT1NUXzMwMlxmUCkgbWFrZXMgbGliY3VybCBtYWludGFpbiB0aGUKLXJlcXVlc3QgbWV0aG9kIGFmdGVyIGEgMzAyIHJlZGlyZWN0IHdoaWxzdCBzZXR0aW5nIGJpdCAyICh2YWx1ZQotXGZCQ1VSTF9SRURJUl9QT1NUXzMwM1xmUCkgbWFrZXMgbGliY3VybCBtYWludGFpbiB0aGUgcmVxdWVzdCBtZXRob2QgYWZ0ZXIgYQotMzAzIHJlZGlyZWN0LiBUaGUgdmFsdWUgXGZCQ1VSTF9SRURJUl9QT1NUX0FMTFxmUCBpcyBhIGNvbnZlbmllbmNlIGRlZmluZSB0aGF0Ci1zZXRzIGFsbCB0aHJlZSBiaXRzLgorXGZCQ1VSTF9SRURJUl9QT1NUXzMwMVxmUCkgdGVsbHMgdGhlIGxpYnJhcnkgdG8gcmVzcGVjdCBSRkMgNzIzMSAoc2VjdGlvbgorNi40LjIgdG8gNi40LjQpIGFuZCBub3QgY29udmVydCBQT1NUIHJlcXVlc3RzIGludG8gR0VUIHJlcXVlc3RzIHdoZW4gZm9sbG93aW5nCithIDMwMSByZWRpcmVjdGlvbi4gIFNldHRpbmcgYml0IDEgKHZhbHVlIFxmQkNVUkxfUkVESVJfUE9TVF8zMDJcZlApIG1ha2VzCitsaWJjdXJsIG1haW50YWluIHRoZSByZXF1ZXN0IG1ldGhvZCBhZnRlciBhIDMwMiByZWRpcmVjdCB3aGlsc3Qgc2V0dGluZyBiaXQgMgorKHZhbHVlIFxmQkNVUkxfUkVESVJfUE9TVF8zMDNcZlApIG1ha2VzIGxpYmN1cmwgbWFpbnRhaW4gdGhlIHJlcXVlc3QgbWV0aG9kCithZnRlciBhIDMwMyByZWRpcmVjdC4gVGhlIHZhbHVlIFxmQkNVUkxfUkVESVJfUE9TVF9BTExcZlAgaXMgYSBjb252ZW5pZW5jZQorZGVmaW5lIHRoYXQgc2V0cyBhbGwgdGhyZWUgYml0cy4KIAogVGhlIG5vbi1SRkMgYmVoYXZpb3VyIGlzIHViaXF1aXRvdXMgaW4gd2ViIGJyb3dzZXJzLCBzbyB0aGUgbGlicmFyeSBkb2VzIHRoZQogY29udmVyc2lvbiBieSBkZWZhdWx0IHRvIG1haW50YWluIGNvbnNpc3RlbmN5LiBIb3dldmVyLCBhIHNlcnZlciBtYXkgcmVxdWlyZSBhCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BSRVFVT1RFLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BSRVFVT1RFLjMKaW5kZXggZTQxNjNlOC4uNmI5NTI2NSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QUkVRVU9URS4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUFJFUVVPVEUuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BSSVZBVEUuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUFJJVkFURS4zCmluZGV4IDk5MDdmOTcuLjgwZjJjNmIgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUFJJVkFURS4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUFJJVkFURS4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUFJPR1JFU1NEQVRBLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BST0dSRVNTREFUQS4zCmluZGV4IGM0Nzg1ZGMuLjdkYzcwZjEgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUFJPR1JFU1NEQVRBLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QUk9HUkVTU0RBVEEuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zNSw3ICszNSw3IEBACiAuU0ggUFJPVE9DT0xTCiBBbGwKIC5TSCBFWEFNUExFCi1odHRwOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvYy9wcm9ncmVzc2Z1bmMuaHRtbAoraHR0cHM6Ly9jdXJsLmhheHguc2UvbGliY3VybC9jL3Byb2dyZXNzZnVuYy5odG1sCiAuU0ggQVZBSUxBQklMSVRZCiBBbHdheXMKIC5TSCBSRVRVUk4gVkFMVUUKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUFJPR1JFU1NGVU5DVElPTi4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QUk9HUkVTU0ZVTkNUSU9OLjMKaW5kZXggZDhlN2E2Ni4uYjA3N2UzYiAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QUk9HUkVTU0ZVTkNUSU9OLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QUk9HUkVTU0ZVTkNUSU9OLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNzUsNyArNzUsNyBAQAogLlNIIFBST1RPQ09MUwogQWxsCiAuU0ggRVhBTVBMRQotaHR0cDovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvcHJvZ3Jlc3NmdW5jLmh0bWwKK2h0dHBzOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvYy9wcm9ncmVzc2Z1bmMuaHRtbAogLlNIIEFWQUlMQUJJTElUWQogQWx3YXlzCiAuU0ggUkVUVVJOIFZBTFVFCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BST1RPQ09MUy4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QUk9UT0NPTFMuMwppbmRleCA5NThlZWViLi40ZmVjYjgxIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BST1RPQ09MUy4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUFJPVE9DT0xTLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNjAsNiArNjAsNyBAQAogQ1VSTFBST1RPX1NDUAogQ1VSTFBST1RPX1NGVFAKIENVUkxQUk9UT19TTUIKK0NVUkxQUk9UT19TTUJTCiBDVVJMUFJPVE9fU01UUAogQ1VSTFBST1RPX1NNVFBTCiBDVVJMUFJPVE9fVEVMTkVUCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BST1hZLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BST1hZLjMKaW5kZXggYjQxOWU1MS4uZjY5NzViYiAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QUk9YWS4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUFJPWFkuMwpAQCAtNSwxMSArNSwxMSBAQAogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogLlwiICoKLS5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTI5LDggKzI5LDggQEAKIENVUkxjb2RlIGN1cmxfZWFzeV9zZXRvcHQoQ1VSTCAqaGFuZGxlLCBDVVJMT1BUX1BST1hZLCBjaGFyICpwcm94eSk7CiAuU0ggREVTQ1JJUFRJT04KIFNldCB0aGUgXGZJcHJveHlcZlAgdG8gdXNlIGZvciB0aGUgdXBjb21pbmcgcmVxdWVzdC4gVGhlIHBhcmFtZXRlciBzaG91bGQgYmUgYQotY2hhciAqIHRvIGEgemVybyB0ZXJtaW5hdGVkIHN0cmluZyBob2xkaW5nIHRoZSBob3N0IG5hbWUgb3IgZG90dGVkIElQCi1hZGRyZXNzLgorY2hhciAqIHRvIGEgemVybyB0ZXJtaW5hdGVkIHN0cmluZyBob2xkaW5nIHRoZSBob3N0IG5hbWUgb3IgZG90dGVkIG51bWVyaWNhbAorSVAgYWRkcmVzcy4gQSBudW1lcmljYWwgSVB2NiBhZGRyZXNzIG11c3QgYmUgd3JpdHRlbiB3aXRoaW4gW2JyYWNrZXRzXS4KIAogVG8gc3BlY2lmeSBwb3J0IG51bWJlciBpbiB0aGlzIHN0cmluZywgYXBwZW5kIDpbcG9ydF0gdG8gdGhlIGVuZCBvZiB0aGUgaG9zdAogbmFtZS4gVGhlIHByb3h5J3MgcG9ydCBudW1iZXIgbWF5IG9wdGlvbmFsbHkgYmUgc3BlY2lmaWVkIHdpdGggdGhlIHNlcGFyYXRlCkBAIC02MSw4ICs2MSw4IEBACiBTZXR0aW5nIHRoZSBwcm94eSBzdHJpbmcgdG8gIiIgKGFuIGVtcHR5IHN0cmluZykgd2lsbCBleHBsaWNpdGx5IGRpc2FibGUgdGhlCiB1c2Ugb2YgYSBwcm94eSwgZXZlbiBpZiB0aGVyZSBpcyBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBzZXQgZm9yIGl0LgogCi1BIHByb3h5IGhvc3Qgc3RyaW5nIGdpdmVuIGluIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIGNhbiBhbHNvIGluY2x1ZGUgcHJvdG9jb2wKLXNjaGVtZSAoaHR0cDovLykgYW5kIGVtYmVkZGVkIHVzZXIgKyBwYXNzd29yZC4KK0EgcHJveHkgaG9zdCBzdHJpbmcgY2FuIGFsc28gaW5jbHVkZSBwcm90b2NvbCBzY2hlbWUgKGh0dHA6Ly8pIGFuZCBlbWJlZGRlZAordXNlciArIHBhc3N3b3JkLgogLlNIIERFRkFVTFQKIERlZmF1bHQgaXMgTlVMTCwgbWVhbmluZyBubyBwcm94eSBpcyB1c2VkLgogCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BST1hZQVVUSC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QUk9YWUFVVEguMwppbmRleCBmZTc0MmMwLi4yNGRiY2E1IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BST1hZQVVUSC4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUFJPWFlBVVRILjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QUk9YWUhFQURFUi4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QUk9YWUhFQURFUi4zCmluZGV4IGJmYTdhN2EuLmJmZWM2MjkgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUFJPWFlIRUFERVIuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BST1hZSEVBREVSLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QUk9YWVBBU1NXT1JELjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BST1hZUEFTU1dPUkQuMwppbmRleCA0MzUzNmNhLi4xODI3MmMzIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BST1hZUEFTU1dPUkQuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BST1hZUEFTU1dPUkQuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BST1hZUE9SVC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QUk9YWVBPUlQuMwppbmRleCBkOGExYmIxLi4yMzgwZTA5IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BST1hZUE9SVC4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUFJPWFlQT1JULjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QUk9YWVRZUEUuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUFJPWFlUWVBFLjMKaW5kZXggMmNlMGNjMC4uZDJkOTI0MiAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QUk9YWVRZUEUuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BST1hZVFlQRS4zCkBAIC01LDExICs1LDExIEBACiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAuXCIgKgotLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzMsNyArMzMsNyBAQAogXGZJQ1VSTFBST1hZX1NPQ0tTNFxmUCwgXGZJQ1VSTFBST1hZX1NPQ0tTNVxmUCwgXGZJQ1VSTFBST1hZX1NPQ0tTNEFcZlAgYW5kCiBcZklDVVJMUFJPWFlfU09DS1M1X0hPU1ROQU1FXGZQLiBUaGUgSFRUUCB0eXBlIGlzIGRlZmF1bHQuCiAKLUlmIHlvdSBzZXQgXGZCQ1VSTE9QVF9QUk9YWVRZUEUoMylcZlAgdG8gXGZJQ1VSTFBST1hZX0hUVFBfMV8wXGZQLCBpdCB3aWxsCitJZiB5b3Ugc2V0IFxmSUNVUkxPUFRfUFJPWFlUWVBFKDMpXGZQIHRvIFxmSUNVUkxQUk9YWV9IVFRQXzFfMFxmUCwgaXQgd2lsbAogb25seSBhZmZlY3QgaG93IGxpYmN1cmwgc3BlYWtzIHRvIGEgcHJveHkgd2hlbiBDT05ORUNUIGlzIHVzZWQuIFRoZSBIVFRQCiB2ZXJzaW9uIHVzZWQgZm9yICJyZWd1bGFyIiBIVFRQIHJlcXVlc3RzIGlzIGluc3RlYWQgY29udHJvbGxlZCB3aXRoCiBcZklDVVJMT1BUX0hUVFBfVkVSU0lPTigzKVxmUC4KZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUFJPWFlVU0VSTkFNRS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QUk9YWVVTRVJOQU1FLjMKaW5kZXggYzM0MmVjNC4uMGQ3YTI0MSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QUk9YWVVTRVJOQU1FLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QUk9YWVVTRVJOQU1FLjMKQEAgLTUsMTEgKzUsMTEgQEAKIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKIC5cIiAqCi0uXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zMyw3ICszMyw3IEBACiBQYXNzIGEgY2hhciAqIGFzIHBhcmFtZXRlciwgd2hpY2ggc2hvdWxkIGJlIHBvaW50aW5nIHRvIHRoZSB6ZXJvIHRlcm1pbmF0ZWQKIHVzZXIgbmFtZSB0byB1c2UgZm9yIHRoZSB0cmFuc2Zlci4KIAotXGZCQ1VSTE9QVF9QUk9YWVVTRVJOQU1FKDMpXGZQIHNldHMgdGhlIHVzZXIgbmFtZSB0byBiZSB1c2VkIGluIHByb3RvY29sCitcZklDVVJMT1BUX1BST1hZVVNFUk5BTUUoMylcZlAgc2V0cyB0aGUgdXNlciBuYW1lIHRvIGJlIHVzZWQgaW4gcHJvdG9jb2wKIGF1dGhlbnRpY2F0aW9uIHdpdGggdGhlIHByb3h5LgogCiBUbyBzcGVjaWZ5IHRoZSBwcm94eSBwYXNzd29yZCB1c2UgdGhlIFxmSUNVUkxPUFRfUFJPWFlQQVNTV09SRCgzKVxmUC4KZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUFJPWFlVU0VSUFdELjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BST1hZVVNFUlBXRC4zCmluZGV4IGJiZjBkYTUuLjFiNDdiODkgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUFJPWFlVU0VSUFdELjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QUk9YWVVTRVJQV0QuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BST1hZX1NFUlZJQ0VfTkFNRS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QUk9YWV9TRVJWSUNFX05BTUUuMwppbmRleCBhNjIyNGZiLi5hMDEwMzgyIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BST1hZX1NFUlZJQ0VfTkFNRS4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUFJPWFlfU0VSVklDRV9OQU1FLjMKQEAgLTUsMTEgKzUsMTEgQEAKIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKIC5cIiAqCi0uXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yMiwyMiArMjIsMjMgQEAKIC5cIgogLlRIIENVUkxPUFRfUFJPWFlfU0VSVklDRV9OQU1FIDMgIjE3IEp1biAyMDE1IiAibGliY3VybCA3LjQzLjAiICJjdXJsX2Vhc3lfc2V0b3B0IG9wdGlvbnMiCiAuU0ggTkFNRQotQ1VSTE9QVF9QUk9YWV9TRVJWSUNFX05BTUUgXC0gcHJveHkgc2VydmljZSBuYW1lCitDVVJMT1BUX1BST1hZX1NFUlZJQ0VfTkFNRSBcLSBwcm94eSBhdXRoZW50aWNhdGlvbiBzZXJ2aWNlIG5hbWUKIC5TSCBTWU5PUFNJUwogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgogCiBDVVJMY29kZSBjdXJsX2Vhc3lfc2V0b3B0KENVUkwgKmhhbmRsZSwgQ1VSTE9QVF9QUk9YWV9TRVJWSUNFX05BTUUsIGNoYXIgKm5hbWUpOwogLlNIIERFU0NSSVBUSU9OCiBQYXNzIGEgY2hhciAqIGFzIHBhcmFtZXRlciB0byBhIHN0cmluZyBob2xkaW5nIHRoZSBcZkluYW1lXGZQIG9mIHRoZQotc2VydmljZS4gVGhlIGRlZmF1bHQgc2VydmljZSBuYW1lIGlzICJIVFRQIi4gVGhpcyBvcHRpb24gYWxsb3dzIHlvdSB0byBjaGFuZ2UgaXQuCi0uLlNIIERFRkFVTFQKK3NlcnZpY2UuIFRoZSBkZWZhdWx0IHNlcnZpY2UgbmFtZSBpcyAiSFRUUCIgZm9yIEhUVFAgYmFzZWQgcHJveGllcyBhbmQgInJjbWQiCitmb3IgU09DS1M1LiBUaGlzIG9wdGlvbiBhbGxvd3MgeW91IHRvIGNoYW5nZSBpdC4KKy5TSCBERUZBVUxUCiBTZWUgYWJvdmUKIC5TSCBQUk9UT0NPTFMKLU1vc3QKK0FsbCBuZXR3b3JrIHByb3RvY29scwogLlNIIEVYQU1QTEUKIFRPRE8KIC5TSCBBVkFJTEFCSUxJVFkKLUFkZGVkIGluIDcuNDMuMAorQWRkZWQgaW4gNy40My4wIGZvciBIVFRQIHByb3hpZXMsIDcuNDkuMCBmb3IgU09DS1M1IHByb3hpZXMuCiAuU0ggUkVUVVJOIFZBTFVFCiBSZXR1cm5zIENVUkxFX09LIGlmIHRoZSBvcHRpb24gaXMgc3VwcG9ydGVkLCBDVVJMRV9VTktOT1dOX09QVElPTiBpZiBub3QsIG9yCiBDVVJMRV9PVVRfT0ZfTUVNT1JZIGlmIHRoZXJlIHdhcyBpbnN1ZmZpY2llbnQgaGVhcCBzcGFjZS4KZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUFJPWFlfVFJBTlNGRVJfTU9ERS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QUk9YWV9UUkFOU0ZFUl9NT0RFLjMKaW5kZXggYWU1ZWRlNy4uMmU1YzMzYSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QUk9YWV9UUkFOU0ZFUl9NT0RFLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QUk9YWV9UUkFOU0ZFUl9NT0RFLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QVVQuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUFVULjMKaW5kZXggYmQ0MGI3Zi4uODdjNmUwNiAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9QVVQuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1BVVC4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUVVPVEUuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUVVPVEUuMwppbmRleCA4YmYzYzE0Li40ZGNlNzZkIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1FVT1RFLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9RVU9URS4zCkBAIC01LDExICs1LDExIEBACiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAuXCIgKgotLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNjksNiArNjksOSBAQAogLklQICJybWRpciBkaXJlY3RvcnkiCiBUaGUgcm1kaXIgY29tbWFuZCByZW1vdmVzIHRoZSBkaXJlY3RvcnkgZW50cnkgc3BlY2lmaWVkIGJ5IHRoZSBkaXJlY3RvcnkKIG9wZXJhbmQsIHByb3ZpZGVkIGl0IGlzIGVtcHR5LgorLklQICJzdGF0dmZzIGZpbGUiCitUaGUgc3RhdHZmcyBjb21tYW5kIHJldHVybnMgc3RhdGlzdGljcyBvbiB0aGUgZmlsZSBzeXN0ZW0gaW4gd2hpY2ggc3BlY2lmaWVkCitmaWxlIHJlc2lkZXMuIChBZGRlZCBpbiA3LjQ5LjApCiAuSVAgInN5bWxpbmsgc291cmNlX2ZpbGUgdGFyZ2V0X2ZpbGUiCiBTZWUgbG4uCiAuUkUKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUkFORE9NX0ZJTEUuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUkFORE9NX0ZJTEUuMwppbmRleCAwYzJkNjg4Li5jODIyMzI1IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1JBTkRPTV9GSUxFLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9SQU5ET01fRklMRS4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUkFOR0UuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUkFOR0UuMwppbmRleCBmNWRkNTU1Li4zNzVhOTQ0IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1JBTkdFLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9SQU5HRS4zCkBAIC01LDExICs1LDExIEBACiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAuXCIgKgotLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzUsOSArMzUsMTMgQEAKIEhUVFAgdHJhbnNmZXJzIGFsc28gc3VwcG9ydCBzZXZlcmFsIGludGVydmFscywgc2VwYXJhdGVkIHdpdGggY29tbWFzIGFzIGluCiBcZkkiWC1ZLE4tTSJcZlAuIFVzaW5nIHRoaXMga2luZCBvZiBtdWx0aXBsZSBpbnRlcnZhbHMgd2lsbCBjYXVzZSB0aGUgSFRUUAogc2VydmVyIHRvIHNlbmQgdGhlIHJlc3BvbnNlIGRvY3VtZW50IGluIHBpZWNlcyAodXNpbmcgc3RhbmRhcmQgTUlNRSBzZXBhcmF0aW9uCi10ZWNobmlxdWVzKS4gRm9yIFJUU1AsIHRoZSBmb3JtYXR0aW5nIG9mIGEgcmFuZ2Ugc2hvdWxkIGZvbGxvdyBSRkMyMzI2IFNlY3Rpb24KLTEyLjI5LiBGb3IgUlRTUCwgYnl0ZSByYW5nZXMgYXJlIFxmQm5vdFxmUCBwZXJtaXR0ZWQuIEluc3RlYWQsIHJhbmdlcyBzaG91bGQKLWJlIGdpdmVuIGluIG5wdCwgdXRjLCBvciBzbXB0ZSBmb3JtYXRzLgordGVjaG5pcXVlcykuIFVuZm9ydHVuYXRlbHksIHRoZSBIVFRQIHN0YW5kYXJkIChSRkMgNzIzMyBzZWN0aW9uIDMuMSkgYWxsb3dzCitzZXJ2ZXJzIHRvIGlnbm9yZSByYW5nZSByZXF1ZXN0cyBzbyBldmVuIHdoZW4geW91IHNldCBcZklDVVJMT1BUX1JBTkdFKDMpXGZQCitmb3IgYSByZXF1ZXN0LCB5b3UgbWF5IGVuZCB1cCBnZXR0aW5nIHRoZSBmdWxsIHJlc3BvbnNlIHNlbnQgYmFjay4KKworRm9yIFJUU1AsIHRoZSBmb3JtYXR0aW5nIG9mIGEgcmFuZ2Ugc2hvdWxkIGZvbGxvdyBSRkMyMzI2IFNlY3Rpb24gMTIuMjkuIEZvcgorUlRTUCwgYnl0ZSByYW5nZXMgYXJlIFxmQm5vdFxmUCBwZXJtaXR0ZWQuIEluc3RlYWQsIHJhbmdlcyBzaG91bGQgYmUgZ2l2ZW4gaW4KK25wdCwgdXRjLCBvciBzbXB0ZSBmb3JtYXRzLgogCiBQYXNzIGEgTlVMTCB0byB0aGlzIG9wdGlvbiB0byBkaXNhYmxlIHRoZSB1c2Ugb2YgcmFuZ2VzLgogLlNIIERFRkFVTFQKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUkVBRERBVEEuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUkVBRERBVEEuMwppbmRleCBhNjdmNDE1Li5lZjUxMjY0IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1JFQUREQVRBLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9SRUFEREFUQS4zCkBAIC01LDExICs1LDExIEBACiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAuXCIgKgotLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNTYsOCArNTYsOCBAQAogfQogLmZpCiAuU0ggQVZBSUxBQklMSVRZCi1UaGlzIG9wdGlvbiB3YXMgb25jZSBrbm93biBieSB0aGUgb2xkZXIgbmFtZSBcZklDVVJMT1BUX0lORklMRVxmUCwgdGhlIG5hbWUKLVxmSUNVUkxPUFRfUkVBRERBVEFcZlAgd2FzIGludHJvZHVjZWQgaW4gNy45LjcuCitUaGlzIG9wdGlvbiB3YXMgb25jZSBrbm93biBieSB0aGUgb2xkZXIgbmFtZSBDVVJMT1BUX0lORklMRSwgdGhlIG5hbWUKK1xmSUNVUkxPUFRfUkVBRERBVEEoMylcZlAgd2FzIGludHJvZHVjZWQgaW4gNy45LjcuCiAuU0ggUkVUVVJOIFZBTFVFCiBUaGlzIHdpbGwgcmV0dXJuIENVUkxFX09LLgogLlNIICJTRUUgQUxTTyIKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUkVBREZVTkNUSU9OLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1JFQURGVU5DVElPTi4zCmluZGV4IGVkZDliZGIuLmE0M2U2OGIgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUkVBREZVTkNUSU9OLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9SRUFERlVOQ1RJT04uMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC02OCw3ICs2OCw3IEBACiBUaGlzIGlzIHVzZWQgZm9yIGFsbCBwcm90b2NvbHMgd2hlbiBkb2luZyB1cGxvYWRzLgogLlNIIEVYQU1QTEUKIEhlcmUncyBhbiBleGFtcGxlIHNldHRpbmcgYSByZWFkIGNhbGxiYWNrIGZvciByZWFkaW5nIHRoYXQgdG8gdXBsb2FkIHRvIGFuIEZUUAotc2l0ZTogaHR0cDovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvZnRwdXBsb2FkLmh0bWwKK3NpdGU6IGh0dHBzOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvYy9mdHB1cGxvYWQuaHRtbAogLlNIIEFWQUlMQUJJTElUWQogQ1VSTF9SRUFERlVOQ19QQVVTRSByZXR1cm4gY29kZSB3YXMgYWRkZWQgaW4gNy4xOC4wIGFuZCBDVVJMX1JFQURGVU5DX0FCT1JUCiB3YXMgYWRkZWQgaW4gNy4xMi4xLgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9SRURJUl9QUk9UT0NPTFMuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUkVESVJfUFJPVE9DT0xTLjMKaW5kZXggZmJlYzlmNS4uOGJkNzZmNiAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9SRURJUl9QUk9UT0NPTFMuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1JFRElSX1BST1RPQ09MUy4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTMyLDggKzMyLDEyIEBACiBsaW1pdHMgd2hhdCBwcm90b2NvbHMgbGliY3VybCBtYXkgdXNlIGluIGEgdHJhbnNmZXIgdGhhdCBpdCBmb2xsb3dzIHRvIGluIGEKIHJlZGlyZWN0IHdoZW4gXGZJQ1VSTE9QVF9GT0xMT1dMT0NBVElPTigzKVxmUCBpcyBlbmFibGVkLiBUaGlzIGFsbG93cyB5b3UgdG8KIGxpbWl0IHNwZWNpZmljIHRyYW5zZmVycyB0byBvbmx5IGJlIGFsbG93ZWQgdG8gdXNlIGEgc3Vic2V0IG9mIHByb3RvY29scyBpbgotcmVkaXJlY3Rpb25zLiBCeSBkZWZhdWx0IGxpYmN1cmwgd2lsbCBhbGxvdyBhbGwgcHJvdG9jb2xzIGV4Y2VwdCBmb3IgRklMRSBhbmQKLVNDUC4KK3JlZGlyZWN0aW9ucy4KKworQnkgZGVmYXVsdCBsaWJjdXJsIHdpbGwgYWxsb3cgYWxsIHByb3RvY29scyBvbiByZWRpcmVjdCBleGNlcHQgc2V2ZXJhbCBkaXNhYmxlZAorZm9yIHNlY3VyaXR5IHJlYXNvbnM6IFNpbmNlIDcuMTkuNCBGSUxFIGFuZCBTQ1AgYXJlIGRpc2FibGVkLCBhbmQgc2luY2UgNy40MC4wCitTTUIgYW5kIFNNQlMgYXJlIGFsc28gZGlzYWJsZWQuIFxmSUNVUkxQUk9UT19BTExcZlAgZW5hYmxlcyBhbGwgcHJvdG9jb2xzIG9uCityZWRpcmVjdCwgaW5jbHVkaW5nIHRob3NlIGRpc2FibGVkIGZvciBzZWN1cml0eS4KIAogVGhlc2UgYXJlIHRoZSBhdmFpbGFibGUgcHJvdG9jb2wgZGVmaW5lczoKIC5uZgpAQCAtNjAsMTMgKzY0LDE0IEBACiBDVVJMUFJPVE9fU0NQCiBDVVJMUFJPVE9fU0ZUUAogQ1VSTFBST1RPX1NNQgorQ1VSTFBST1RPX1NNQlMKIENVUkxQUk9UT19TTVRQCiBDVVJMUFJPVE9fU01UUFMKIENVUkxQUk9UT19URUxORVQKIENVUkxQUk9UT19URlRQCiAuZmkKIC5TSCBERUZBVUxUCi1BbGwgcHJvdG9jb2xzIGV4Y2VwdCBmb3IgRklMRSwgU0NQIGFuZCBTTUIuCitBbGwgcHJvdG9jb2xzIGV4Y2VwdCBmb3IgRklMRSwgU0NQIGFuZCBzaW5jZSA3LjQwLjAgU01CIGFuZCBTTUJTLgogLlNIIFBST1RPQ09MUwogQWxsCiAuU0ggRVhBTVBMRQpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9SRUZFUkVSLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1JFRkVSRVIuMwppbmRleCBiY2IxNjI1Li43MWFhZTgzIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1JFRkVSRVIuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1JFRkVSRVIuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1JFU09MVkUuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUkVTT0xWRS4zCmluZGV4IDA2YTM5M2EuLjIxMDI3ZDQgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUkVTT0xWRS4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUkVTT0xWRS4zCkBAIC01LDExICs1LDExIEBACiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAuXCIgKgotLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNDQsMTIgKzQ0LDE1IEBACiAKIFRoaXMgb3B0aW9uIGVmZmVjdGl2ZWx5IHByZS1wb3B1bGF0ZXMgdGhlIEROUyBjYWNoZSB3aXRoIGVudHJpZXMgZm9yIHRoZQogaG9zdCtwb3J0IHBhaXIgc28gcmVkaXJlY3RzIGFuZCBldmVyeXRoaW5nIHRoYXQgb3BlcmF0aW9ucyBhZ2FpbnN0IHRoZQotSE9TVCtQT1JUIHdpbGwgaW5zdGVhZCB1c2UgeW91ciBwcm92aWRlZCBBRERSRVNTLiBBZGRyZXNzZXMgdG8gc2V0IHdpdGgKLVxmSUNVUkxfUkVTT0xWRVxmUCB3aWxsIG5vdCB0aW1lLW91dCBmcm9tIHRoZSBETlMgY2FjaGUgbGlrZSBvcmRpbmFyeQorSE9TVCtQT1JUIHdpbGwgaW5zdGVhZCB1c2UgeW91ciBwcm92aWRlZCBBRERSRVNTLiBBZGRyZXNzZXMgc2V0IHdpdGgKK1xmSUNVUkxPUFRfUkVTT0xWRSgzKVxmUCB3aWxsIG5vdCB0aW1lLW91dCBmcm9tIHRoZSBETlMgY2FjaGUgbGlrZSBvcmRpbmFyeQogZW50cmllcy4KIAotWW91IGNhbiByZW1vdmUgbmFtZXMgZnJvbSB0aGUgRE5TIGNhY2hlIGFnYWluLCB0byBzdG9wIHByb3ZpZGluZyB0aGVzZSBmYWtlCi1yZXNvbHZlcywgYnkgaW5jbHVkaW5nIGEgc3RyaW5nIGluIHRoZSBsaW5rZWQgbGlzdCB0aGF0IHVzZXMgdGhlIGZvcm1hdAorVGhlIHByb3ZpZGVkIEFERFJFU1Mgc2V0IGJ5IHRoaXMgb3B0aW9uIHdpbGwgYmUgdXNlZCBldmVuIGlmCitcZklDVVJMT1BUX0lQUkVTT0xWRSgzKVxmUCBpcyBzZXQgdG8gbWFrZSBsaWJjdXJsIHVzZSBhbm90aGVyIElQIHZlcnNpb24uCisKK1JlbW92ZSBuYW1lcyBmcm9tIHRoZSBETlMgY2FjaGUgYWdhaW4sIHRvIHN0b3AgcHJvdmlkaW5nIHRoZXNlIGZha2UgcmVzb2x2ZXMsCitieSBpbmNsdWRpbmcgYSBzdHJpbmcgaW4gdGhlIGxpbmtlZCBsaXN0IHRoYXQgdXNlcyB0aGUgZm9ybWF0CiBcJiItSE9TVDpQT1JUIi4gVGhlIGhvc3QgbmFtZSBtdXN0IGJlIHByZWZpeGVkIHdpdGggYSBkYXNoLCBhbmQgdGhlIGhvc3QgbmFtZQogYW5kIHBvcnQgbnVtYmVyIG11c3QgZXhhY3RseSBtYXRjaCB3aGF0IHdhcyBhbHJlYWR5IGFkZGVkIHByZXZpb3VzbHkuCiAuU0ggREVGQVVMVApAQCAtNjYsNyArNjksOCBAQAogaWYoY3VybCkgewogICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfUkVTT0xWRSwgaG9zdCk7CiAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9VUkwsICJodHRwOi8vZXhhbXBsZS5jb20iKTsKLSAgcmVzID0gY3VybF9lYXN5X3BlcmZvcm0oY3VybCk7CisKKyAgY3VybF9lYXN5X3BlcmZvcm0oY3VybCk7CiAKICAgLyogYWx3YXlzIGNsZWFudXAgKi8KICAgY3VybF9lYXN5X2NsZWFudXAoY3VybCk7CkBAIC03NSw4ICs3OSw4IEBACiBjdXJsX3NsaXN0X2ZyZWVfYWxsKGhvc3QpOwogLmZpCiAuU0ggQVZBSUxBQklMSVRZCi1BZGRlZCBpbiA3LjIxLjMKK0FkZGVkIGluIDcuMjEuMy4gUmVtb3ZhbCBzdXBwb3J0IGFkZGVkIGluIDcuNDIuMC4KIC5TSCBSRVRVUk4gVkFMVUUKIFJldHVybnMgQ1VSTEVfT0sgaWYgdGhlIG9wdGlvbiBpcyBzdXBwb3J0ZWQsIGFuZCBDVVJMRV9VTktOT1dOX09QVElPTiBpZiBub3QuCiAuU0ggIlNFRSBBTFNPIgotLkJSIENVUkxPUFRfSVBSRVNPTFZFICIoMyksICIgQ1VSTE9QVF9ETlNfQ0FDSEVfVElNRU9VVCAiKDMpLCAiCisuQlIgQ1VSTE9QVF9JUFJFU09MVkUgIigzKSwgIiBDVVJMT1BUX0ROU19DQUNIRV9USU1FT1VUICIoMyksICIgQ1VSTE9QVF9DT05ORUNUX1RPICIoMyksICIKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUkVTVU1FX0ZST00uMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUkVTVU1FX0ZST00uMwppbmRleCBjMjVjNjQ2Li5hYzY5ODZmIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1JFU1VNRV9GUk9NLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9SRVNVTUVfRlJPTS4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUkVTVU1FX0ZST01fTEFSR0UuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUkVTVU1FX0ZST01fTEFSR0UuMwppbmRleCBiY2IzMGFmLi40OTA1ZjM5IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1JFU1VNRV9GUk9NX0xBUkdFLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9SRVNVTUVfRlJPTV9MQVJHRS4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUlRTUF9DTElFTlRfQ1NFUS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9SVFNQX0NMSUVOVF9DU0VRLjMKaW5kZXggYzk1MTAxNi4uOTI1MzZiOSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9SVFNQX0NMSUVOVF9DU0VRLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9SVFNQX0NMSUVOVF9DU0VRLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9SVFNQX1JFUVVFU1QuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUlRTUF9SRVFVRVNULjMKaW5kZXggOWFiMTc1ZC4uNjBkMWQ4YiAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9SVFNQX1JFUVVFU1QuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1JUU1BfUkVRVUVTVC4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUlRTUF9TRVJWRVJfQ1NFUS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9SVFNQX1NFUlZFUl9DU0VRLjMKaW5kZXggOWU3Y2YzYS4uNzBjNTA1NSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9SVFNQX1NFUlZFUl9DU0VRLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9SVFNQX1NFUlZFUl9DU0VRLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9SVFNQX1NFU1NJT05fSUQuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUlRTUF9TRVNTSU9OX0lELjMKaW5kZXggZWMzZDM4Ny4uY2QzMTg5OSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9SVFNQX1NFU1NJT05fSUQuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1JUU1BfU0VTU0lPTl9JRC4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUlRTUF9TVFJFQU1fVVJJLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1JUU1BfU1RSRUFNX1VSSS4zCmluZGV4IDZhMTBlYTAuLjFhYmI2MWYgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUlRTUF9TVFJFQU1fVVJJLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9SVFNQX1NUUkVBTV9VUkkuMwpAQCAtNSwxMSArNSwxMSBAQAogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogLlwiICoKLS5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTM0LDEwICszNCwxMCBAQAogYXBwcm9wcmlhdGUgc3RyZWFtIHVzaW5nIHRoaXMgb3B0aW9uLiBJZiB1bnNldCwgbGliY3VybCB3aWxsIGRlZmF1bHQgdG8KIG9wZXJhdGluZyBvbiBnZW5lcmljIHNlcnZlciBvcHRpb25zIGJ5IHBhc3NpbmcgJyonIGluIHRoZSBwbGFjZSBvZiB0aGUgUlRTUAogU3RyZWFtIFVSSS4gVGhpcyBvcHRpb24gaXMgZGlzdGluY3QgZnJvbSBcZklDVVJMT1BUX1VSTCgzKVxmUC4gV2hlbiB3b3JraW5nCi13aXRoIFJUU1AsIHRoZSBcZklDVVJMT1BUX1NUUkVBTV9VUkkoMylcZlAgaW5kaWNhdGVzIHdoYXQgVVJMIHRvIHNlbmQgdG8gdGhlCi1zZXJ2ZXIgaW4gdGhlIHJlcXVlc3QgaGVhZGVyIHdoaWxlIHRoZSBcZklDVVJMT1BUX1VSTCgzKVxmUCBpbmRpY2F0ZXMgd2hlcmUgdG8KLW1ha2UgdGhlIGNvbm5lY3Rpb24gdG8uICAoZS5nLiB0aGUgXGZJQ1VSTE9QVF9VUkwoMylcZlAgZm9yIHRoZSBhYm92ZSBleGFtcGxlcwotbWlnaHQgYmUgc2V0IHRvIFxmSXJ0c3A6Ly9mb28vdHdpc3RlclxmUAord2l0aCBSVFNQLCB0aGUgXGZJQ1VSTE9QVF9SVFNQX1NUUkVBTV9VUkkoMylcZlAgaW5kaWNhdGVzIHdoYXQgVVJMIHRvIHNlbmQgdG8KK3RoZSBzZXJ2ZXIgaW4gdGhlIHJlcXVlc3QgaGVhZGVyIHdoaWxlIHRoZSBcZklDVVJMT1BUX1VSTCgzKVxmUCBpbmRpY2F0ZXMKK3doZXJlIHRvIG1ha2UgdGhlIGNvbm5lY3Rpb24gdG8uICAoZS5nLiB0aGUgXGZJQ1VSTE9QVF9VUkwoMylcZlAgZm9yIHRoZSBhYm92ZQorZXhhbXBsZXMgbWlnaHQgYmUgc2V0IHRvIFxmSXJ0c3A6Ly9mb28vdHdpc3RlclxmUAogLlNIIERFRkFVTFQKICcqJwogLlNIIFBST1RPQ09MUwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9SVFNQX1RSQU5TUE9SVC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9SVFNQX1RSQU5TUE9SVC4zCmluZGV4IDRkMGE0YzAuLjM2NzIzNmIgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfUlRTUF9UUkFOU1BPUlQuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1JUU1BfVFJBTlNQT1JULjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TQVNMX0lSLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NBU0xfSVIuMwppbmRleCA3NzE0MjE3Li44ZmU0ZWU2IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NBU0xfSVIuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NBU0xfSVIuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NFRUtEQVRBLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NFRUtEQVRBLjMKaW5kZXggODMwZjA5OS4uZDQzMzllYyAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TRUVLREFUQS4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU0VFS0RBVEEuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NFRUtGVU5DVElPTi4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TRUVLRlVOQ1RJT04uMwppbmRleCBiZjdlMzA0Li4xNzlmMGQyIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NFRUtGVU5DVElPTi4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU0VFS0ZVTkNUSU9OLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TRVJWSUNFX05BTUUuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU0VSVklDRV9OQU1FLjMKaW5kZXggMTE2ZmRiZS4uYjlmNDkxYiAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TRVJWSUNFX05BTUUuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NFUlZJQ0VfTkFNRS4zCkBAIC01LDExICs1LDExIEBACiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAuXCIgKgotLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjIsMjMgKzIyLDI0IEBACiAuXCIKIC5USCBDVVJMT1BUX1NFUlZJQ0VfTkFNRSAzICIxNyBKdW4gMjAxNSIgImxpYmN1cmwgNy40My4wIiAiY3VybF9lYXN5X3NldG9wdCBvcHRpb25zIgogLlNIIE5BTUUKLUNVUkxPUFRfU0VSVklDRV9OQU1FIFwtIFNQTkVHTyBzZXJ2aWNlIG5hbWUKK0NVUkxPUFRfU0VSVklDRV9OQU1FIFwtIGF1dGhlbnRpY2F0aW9uIHNlcnZpY2UgbmFtZQogLlNIIFNZTk9QU0lTCiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAKIENVUkxjb2RlIGN1cmxfZWFzeV9zZXRvcHQoQ1VSTCAqaGFuZGxlLCBDVVJMT1BUX1NFUlZJQ0VfTkFNRSwgY2hhciAqbmFtZSk7CiAuU0ggREVTQ1JJUFRJT04KLVBhc3MgYSBjaGFyICogYXMgcGFyYW1ldGVyIHRvIGEgc3RyaW5nIGhvbGRpbmcgdGhlIFxmSW5hbWVcZlAgb2YgdGhlCi1zZXJ2aWNlLiBUaGUgZGVmYXVsdCBzZXJ2aWNlIG5hbWUgaXMgIkhUVFAiLiBUaGlzIG9wdGlvbiBhbGxvd3MgeW91IHRvCi1jaGFuZ2UgaXQuCi0uLlNIIERFRkFVTFQKK1Bhc3MgYSBjaGFyICogYXMgcGFyYW1ldGVyIHRvIGEgc3RyaW5nIGhvbGRpbmcgdGhlIFxmSW5hbWVcZlAgb2YgdGhlIHNlcnZpY2UKK2ZvciBESUdFU1QtTUQ1LCBTUE5FR08gYW5kIEtlcmJlcm9zIDUgYXV0aGVudGljYXRpb24gbWVjaGFuaXNtcy4gVGhlIGRlZmF1bHQKK3NlcnZpY2UgbmFtZXMgYXJlICJmdHAiLCAiSFRUUCIsICJpbWFwIiwgInBvcCIgYW5kICJzbXRwIi4gVGhpcyBvcHRpb24gYWxsb3dzCit5b3UgdG8gY2hhbmdlIHRoZW0uCisuU0ggREVGQVVMVAogU2VlIGFib3ZlCiAuU0ggUFJPVE9DT0xTCi1Nb3N0CitIVFRQLCBGVFAsIElNQVAsIFBPUCBhbmQgU01UUAogLlNIIEVYQU1QTEUKIFRPRE8KIC5TSCBBVkFJTEFCSUxJVFkKLUFkZGVkIGluIDcuNDMuMAorQWRkZWQgaW4gNy40My4wIGZvciBIVFRQLCA3LjQ5LjAgZm9yIEZUUCwgSU1BUCwgUE9QMyBhbmQgU01UUC4KIC5TSCBSRVRVUk4gVkFMVUUKIFJldHVybnMgQ1VSTEVfT0sgaWYgdGhlIG9wdGlvbiBpcyBzdXBwb3J0ZWQsIENVUkxFX1VOS05PV05fT1BUSU9OIGlmIG5vdCwgb3IKIENVUkxFX09VVF9PRl9NRU1PUlkgaWYgdGhlcmUgd2FzIGluc3VmZmljaWVudCBoZWFwIHNwYWNlLgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TSEFSRS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TSEFSRS4zCmluZGV4IGE0ODM1NDAuLjZhMGM3YjggMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU0hBUkUuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NIQVJFLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TT0NLT1BUREFUQS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TT0NLT1BUREFUQS4zCmluZGV4IDYxYzJiNWUuLjAwZGQzMTYgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU09DS09QVERBVEEuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NPQ0tPUFREQVRBLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TT0NLT1BURlVOQ1RJT04uMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU09DS09QVEZVTkNUSU9OLjMKaW5kZXggZTk5ZmI3OS4uNjI2MmRjNSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TT0NLT1BURlVOQ1RJT04uMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NPQ0tPUFRGVU5DVElPTi4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU09DS1M1X0dTU0FQSV9ORUMuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU09DS1M1X0dTU0FQSV9ORUMuMwppbmRleCBjYjMxOGZjLi5hZDA4NjNiIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NPQ0tTNV9HU1NBUElfTkVDLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TT0NLUzVfR1NTQVBJX05FQy4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU09DS1M1X0dTU0FQSV9TRVJWSUNFLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NPQ0tTNV9HU1NBUElfU0VSVklDRS4zCmluZGV4IGQxOGVhOWYuLjQ0MGYwODkgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU09DS1M1X0dTU0FQSV9TRVJWSUNFLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TT0NLUzVfR1NTQVBJX1NFUlZJQ0UuMwpAQCAtNSwxMSArNSwxMSBAQAogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogLlwiICoKLS5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTIyLDIzICsyMiwyNSBAQAogLlwiCiAuVEggQ1VSTE9QVF9TT0NLUzVfR1NTQVBJX1NFUlZJQ0UgMyAiMTkgSnVuIDIwMTQiICJsaWJjdXJsIDcuMzcuMCIgImN1cmxfZWFzeV9zZXRvcHQgb3B0aW9ucyIKIC5TSCBOQU1FCi1DVVJMT1BUX1NPQ0tTNV9HU1NBUElfU0VSVklDRSBcLSBwcm94eSBzb2NrcyBnc3NhcGkgc2VydmljZSBuYW1lCitDVVJMT1BUX1NPQ0tTNV9HU1NBUElfU0VSVklDRSBcLSBTT0NLUzUgcHJveHkgYXV0aGVudGljYXRpb24gc2VydmljZSBuYW1lCiAuU0ggU1lOT1BTSVMKICNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KIAogQ1VSTGNvZGUgY3VybF9lYXN5X3NldG9wdChDVVJMICpoYW5kbGUsIENVUkxPUFRfU09DS1M1X0dTU0FQSV9TRVJWSUNFLCBjaGFyICpuYW1lKTsKIC5TSCBERVNDUklQVElPTgotUGFzcyBhIGNoYXIgKiBhcyBwYXJhbWV0ZXIgdG8gYSBzdHJpbmcgaG9sZGluZyB0aGUgXGZJbmFtZVxmUCBvZiB0aGUKLXNlcnZpY2UuIFRoZSBkZWZhdWx0IHNlcnZpY2UgbmFtZSBmb3IgYSBTT0NLUzUgc2VydmVyIGlzCi1yY21kL3NlcnZlci1mcWRuLiBUaGlzIG9wdGlvbiBhbGxvd3MgeW91IHRvIGNoYW5nZSBpdC4KK0RlcHJlY2F0ZWQgc2luY2UgNy40OS4wLiBVc2UgXGZJQ1VSTE9QVF9QUk9YWV9TRVJWSUNFX05BTUUoMylcZlAgaW5zdGVhZC4KKworUGFzcyBhIGNoYXIgKiBhcyBwYXJhbWV0ZXIgdG8gYSBzdHJpbmcgaG9sZGluZyB0aGUgXGZJbmFtZVxmUCBvZiB0aGUgc2VydmljZS4KK1RoZSBkZWZhdWx0IHNlcnZpY2UgbmFtZSBmb3IgYSBTT0NLUzUgc2VydmVyIGlzICJyY21kIi4gVGhpcyBvcHRpb24gYWxsb3dzIHlvdQordG8gY2hhbmdlIGl0LgogLlNIIERFRkFVTFQKIFNlZSBhYm92ZQogLlNIIFBST1RPQ09MUwotTW9zdAorQWxsIG5ldHdvcmsgcHJvdG9jb2xzCiAuU0ggRVhBTVBMRQogVE9ETwogLlNIIEFWQUlMQUJJTElUWQotQWRkZWQgaW4gNy4xOS40CitBZGRlZCBpbiA3LjE5LjQsIGRlcHJlY2F0ZWQgaW4gNy40OS4wCiAuU0ggUkVUVVJOIFZBTFVFCiBSZXR1cm5zIENVUkxFX09LIGlmIHRoZSBvcHRpb24gaXMgc3VwcG9ydGVkLCBDVVJMRV9VTktOT1dOX09QVElPTiBpZiBub3QsIG9yCiBDVVJMRV9PVVRfT0ZfTUVNT1JZIGlmIHRoZXJlIHdhcyBpbnN1ZmZpY2llbnQgaGVhcCBzcGFjZS4KZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NIX0FVVEhfVFlQRVMuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NIX0FVVEhfVFlQRVMuMwppbmRleCA5NjZmNzQ2Li4yZWNjYTEyIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTSF9BVVRIX1RZUEVTLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0hfQVVUSF9UWVBFUy4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NIX0hPU1RfUFVCTElDX0tFWV9NRDUuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NIX0hPU1RfUFVCTElDX0tFWV9NRDUuMwppbmRleCAxMmU3NzIwLi4yZWEyMzYwIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTSF9IT1NUX1BVQkxJQ19LRVlfTUQ1LjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0hfSE9TVF9QVUJMSUNfS0VZX01ENS4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NIX0tFWURBVEEuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NIX0tFWURBVEEuMwppbmRleCA0NWU3ZDdhLi42N2MzNjczIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTSF9LRVlEQVRBLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0hfS0VZREFUQS4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NIX0tFWUZVTkNUSU9OLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTSF9LRVlGVU5DVElPTi4zCmluZGV4IDRhZjlhM2IuLjIxYmMwZTUgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NIX0tFWUZVTkNUSU9OLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0hfS0VZRlVOQ1RJT04uMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTSF9LTk9XTkhPU1RTLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTSF9LTk9XTkhPU1RTLjMKaW5kZXggODU1NzRjZS4uOWVhMGM4NiAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0hfS05PV05IT1NUUy4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NIX0tOT1dOSE9TVFMuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTSF9QUklWQVRFX0tFWUZJTEUuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NIX1BSSVZBVEVfS0VZRklMRS4zCmluZGV4IGYzNTdmMmMuLjBjMzVlZDUgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NIX1BSSVZBVEVfS0VZRklMRS4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NIX1BSSVZBVEVfS0VZRklMRS4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NIX1BVQkxJQ19LRVlGSUxFLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTSF9QVUJMSUNfS0VZRklMRS4zCmluZGV4IDM1ZjJhMTkuLmY5YWFlYWUgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NIX1BVQkxJQ19LRVlGSUxFLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0hfUFVCTElDX0tFWUZJTEUuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zNSwxMSArMzUsMTEgQEAKIHZhcmlhYmxlIGlzIHNldCwgYW5kIGp1c3QgImlkX2RzYS5wdWIiIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBpZiBIT01FIGlzIG5vdAogc2V0LgogCi1JZiBhbiBlbXB0eSBzdHJpbmcgaXMgcGFzc2VkLCBsaWJjdXJsIHdpbGwgcGFzcyBubyBwdWJsaWMga2V5IHRvIGxpYnNzaDIgd2hpY2gKLXRoZW4gdHJpZXMgdG8gY29tcHV0ZSBpdCBmcm9tIHRoZSBwcml2YXRlIGtleSwgdGhpcyBpcyBrbm93biB0byB3b3JrIHdoZW4KLWxpYnNzaDIgMS40LjArIGlzIGxpbmtlZCBhZ2FpbnN0IE9wZW5TU0wuCitJZiBOVUxMIChvciBhbiBlbXB0eSBzdHJpbmcpIGlzIHBhc3NlZCwgbGliY3VybCB3aWxsIHBhc3Mgbm8gcHVibGljIGtleSB0bworbGlic3NoMiwgd2hpY2ggdGhlbiB0cmllcyB0byBjb21wdXRlIGl0IGZyb20gdGhlIHByaXZhdGUga2V5LiAgVGhpcyBpcyBrbm93bgordG8gd29yayB3aXRoIGxpYnNzaDIgMS40LjArIGxpbmtlZCBhZ2FpbnN0IE9wZW5TU0wuCiAuU0ggREVGQVVMVAotQXMgZXhwbGFpbmVkIGFib3ZlCitOVUxMCiAuU0ggUFJPVE9DT0xTCiBTRlRQIGFuZCBTQ1AKIC5TSCBFWEFNUExFCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTTENFUlQuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NMQ0VSVC4zCmluZGV4IDdhZTU0ZjEuLmI1ZDY4Y2YgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NMQ0VSVC4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NMQ0VSVC4zCkBAIC01LDExICs1LDExIEBACiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAuXCIgKgotLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNDMsNyArNDMsNyBAQAogLlNIIERFRkFVTFQKIE5VTEwKIC5TSCBQUk9UT0NPTFMKLUFsbCBUTFMgYmFzZWQgcHJvdG9jb2xzOiBIVFRQUywgRlRQUywgSU1BUFMsIFBPUDMsIFNNVFBTIGV0Yy4KK0FsbCBUTFMgYmFzZWQgcHJvdG9jb2xzOiBIVFRQUywgRlRQUywgSU1BUFMsIFBPUDNTLCBTTVRQUyBldGMuCiAuU0ggRVhBTVBMRQogVE9ETwogLlNIIEFWQUlMQUJJTElUWQpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0xDRVJUVFlQRS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0xDRVJUVFlQRS4zCmluZGV4IGIxOWQ1MTcuLjk4ZGYzOWQgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NMQ0VSVFRZUEUuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTTENFUlRUWVBFLjMKQEAgLTUsMTEgKzUsMTEgQEAKIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKIC5cIiAqCi0uXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zNiw3ICszNiw3IEBACiAuU0ggREVGQVVMVAogIlBFTSIKIC5TSCBQUk9UT0NPTFMKLUFsbCBUTFMgYmFzZWQgcHJvdG9jb2xzOiBIVFRQUywgRlRQUywgSU1BUFMsIFBPUDMsIFNNVFBTIGV0Yy4KK0FsbCBUTFMgYmFzZWQgcHJvdG9jb2xzOiBIVFRQUywgRlRQUywgSU1BUFMsIFBPUDNTLCBTTVRQUyBldGMuCiAuU0ggRVhBTVBMRQogVE9ETwogLlNIIEFWQUlMQUJJTElUWQpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0xFTkdJTkUuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NMRU5HSU5FLjMKaW5kZXggYTg4YTVhNy4uZDBjNDhhNCAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0xFTkdJTkUuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTTEVOR0lORS4zCkBAIC01LDExICs1LDExIEBACiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAuXCIgKgotLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzAsMTkgKzMwLDI2IEBACiAuU0ggREVTQ1JJUFRJT04KIFBhc3MgYSBwb2ludGVyIHRvIGEgemVybyB0ZXJtaW5hdGVkIHN0cmluZyBhcyBwYXJhbWV0ZXIuIEl0IHdpbGwgYmUgdXNlZCBhcwogdGhlIGlkZW50aWZpZXIgZm9yIHRoZSBjcnlwdG8gZW5naW5lIHlvdSB3YW50IHRvIHVzZSBmb3IgeW91ciBwcml2YXRlIGtleS4KLQotSWYgdGhlIGNyeXB0byBkZXZpY2UgY2Fubm90IGJlIGxvYWRlZCwgXGZJQ1VSTEVfU1NMX0VOR0lORV9OT1RGT1VORFxmUCBpcwotcmV0dXJuZWQuCiAuU0ggREVGQVVMVAogTlVMTAogLlNIIFBST1RPQ09MUwotQWxsIFRMUyBiYXNlZCBwcm90b2NvbHM6IEhUVFBTLCBGVFBTLCBJTUFQUywgUE9QMywgU01UUFMgZXRjLgorQWxsIFRMUyBiYXNlZCBwcm90b2NvbHM6IEhUVFBTLCBGVFBTLCBJTUFQUywgUE9QM1MsIFNNVFBTIGV0Yy4KIC5TSCBFWEFNUExFCiBUT0RPCiAuU0ggQVZBSUxBQklMSVRZCi1JZiBidWlsdCBUTFMgZW5hYmxlZC4KK09ubHkgaWYgdGhlIFNTTCBiYWNrZW5kIGlzIE9wZW5TU0wgYnVpbHQgd2l0aCBlbmdpbmUgc3VwcG9ydC4KIC5TSCBSRVRVUk4gVkFMVUUKLVJldHVybnMgQ1VSTEVfT0sgaWYgVExTIGlzIHN1cHBvcnRlZCwgQ1VSTEVfVU5LTk9XTl9PUFRJT04gaWYgbm90LCBvcgotQ1VSTEVfT1VUX09GX01FTU9SWSBpZiB0aGVyZSB3YXMgaW5zdWZmaWNpZW50IGhlYXAgc3BhY2UuCitDVVJMRV9PSyAtIEVuZ2luZSBmb3VuZC4KKworQ1VSTEVfU1NMX0VOR0lORV9OT1RGT1VORCAtIEVuZ2luZSBub3QgZm91bmQsIG9yIE9wZW5TU0wgd2FzIG5vdCBidWlsdCB3aXRoCitlbmdpbmUgc3VwcG9ydC4KKworQ1VSTEVfU1NMX0VOR0lORV9JTklURkFJTEVEIC0gRW5naW5lIGZvdW5kIGJ1dCBpbml0aWFsaXphdGlvbiBmYWlsZWQuCisKK0NVUkxFX05PVF9CVUlMVF9JTiAtIE9wdGlvbiBub3QgYnVpbHQgaW4sIE9wZW5TU0wgaXMgbm90IHRoZSBTU0wgYmFja2VuZC4KKworQ1VSTEVfVU5LTk9XTl9PUFRJT04gLSBPcHRpb24gbm90IHJlY29nbml6ZWQuCisKK0NVUkxFX09VVF9PRl9NRU1PUlkgLSBJbnN1ZmZpY2llbnQgaGVhcCBzcGFjZS4KIC5TSCAiU0VFIEFMU08iCiAuQlIgQ1VSTE9QVF9TU0xFTkdJTkVfREVGQVVMVCAiKDMpLCAiIENVUkxPUFRfU1NMS0VZICIoMyksICIKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NMRU5HSU5FX0RFRkFVTFQuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NMRU5HSU5FX0RFRkFVTFQuMwppbmRleCA2NTcwZGYxLi4wY2Q4ZDIyIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTTEVOR0lORV9ERUZBVUxULjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0xFTkdJTkVfREVGQVVMVC4zCkBAIC01LDExICs1LDExIEBACiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAuXCIgKgotLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjgsMjEgKzI4LDI3IEBACiAKIENVUkxjb2RlIGN1cmxfZWFzeV9zZXRvcHQoQ1VSTCAqaGFuZGxlLCBDVVJMT1BUX1NTTEVOR0lORV9ERUZBVUxULCBsb25nIHZhbCk7CiAuU0ggREVTQ1JJUFRJT04KLVBhc3MgYSBsb25nIHNldCB0byAxIGFzIHBhcmFtZXRlci4gU2V0cyB0aGUgYWN0dWFsIGNyeXB0byBlbmdpbmUgYXMgdGhlCi1kZWZhdWx0IGZvciAoYXN5bW1ldHJpYykgY3J5cHRvIG9wZXJhdGlvbnMuCitQYXNzIGEgbG9uZyBzZXQgdG8gMSB0byBtYWtlIHRoZSBhbHJlYWR5IHNwZWNpZmllZCBjcnlwdG8gZW5naW5lIHRoZSBkZWZhdWx0Citmb3IgKGFzeW1tZXRyaWMpIGNyeXB0byBvcGVyYXRpb25zLgogCi1JZiB0aGUgY3J5cHRvIGRldmljZSBjYW5ub3QgYmUgc2V0LCBcZklDVVJMRV9TU0xfRU5HSU5FX1NFVEZBSUxFRFxmUCBpcwotcmV0dXJuZWQuCitUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IHVubGVzcyBzZXQgYWZ0ZXIgXGZJQ1VSTE9QVF9TU0xFTkdJTkUoMylcZlAuCiAuU0ggREVGQVVMVAogTm9uZQogLlNIIFBST1RPQ09MUwotQWxsIFRMUyBiYXNlZCBwcm90b2NvbHM6IEhUVFBTLCBGVFBTLCBJTUFQUywgUE9QMywgU01UUFMgZXRjLgorQWxsIFRMUyBiYXNlZCBwcm90b2NvbHM6IEhUVFBTLCBGVFBTLCBJTUFQUywgUE9QM1MsIFNNVFBTIGV0Yy4KIC5TSCBFWEFNUExFCiBUT0RPCiAuU0ggQVZBSUxBQklMSVRZCi1JZiBidWlsdCBUTFMgZW5hYmxlZC4KK09ubHkgaWYgdGhlIFNTTCBiYWNrZW5kIGlzIE9wZW5TU0wgYnVpbHQgd2l0aCBlbmdpbmUgc3VwcG9ydC4KIC5TSCBSRVRVUk4gVkFMVUUKLVJldHVybnMgQ1VSTEVfT0sgaWYgVExTIGlzIHN1cHBvcnRlZCwgQ1VSTEVfVU5LTk9XTl9PUFRJT04gaWYgbm90LCBvcgotQ1VSTEVfT1VUX09GX01FTU9SWSBpZiB0aGVyZSB3YXMgaW5zdWZmaWNpZW50IGhlYXAgc3BhY2UuCitDVVJMRV9PSyAtIEVuZ2luZSBzZXQgYXMgZGVmYXVsdC4KKworQ1VSTEVfU1NMX0VOR0lORV9TRVRGQUlMRUQgLSBFbmdpbmUgY291bGQgbm90IGJlIHNldCBhcyBkZWZhdWx0LgorCitDVVJMRV9OT1RfQlVJTFRfSU4gLSBPcHRpb24gbm90IGJ1aWx0IGluLCBPcGVuU1NMIGlzIG5vdCB0aGUgU1NMIGJhY2tlbmQuCisKK0NVUkxFX1VOS05PV05fT1BUSU9OIC0gT3B0aW9uIG5vdCByZWNvZ25pemVkLgorCitDVVJMRV9PVVRfT0ZfTUVNT1JZIC0gSW5zdWZmaWNpZW50IGhlYXAgc3BhY2UuCiAuU0ggIlNFRSBBTFNPIgogLkJSIENVUkxPUFRfU1NMRU5HSU5FICIoMyksICIgQ1VSTE9QVF9TU0xDRVJUICIoMyksICIKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NMS0VZLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTTEtFWS4zCmluZGV4IGFkZDY5ZDguLjhiYzgyMDUgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NMS0VZLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0xLRVkuMwpAQCAtNSwxMSArNSwxMSBAQAogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogLlwiICoKLS5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTM4LDcgKzM4LDcgQEAKIC5TSCBERUZBVUxUCiBOVUxMCiAuU0ggUFJPVE9DT0xTCi1BbGwgVExTIGJhc2VkIHByb3RvY29sczogSFRUUFMsIEZUUFMsIElNQVBTLCBQT1AzLCBTTVRQUyBldGMuCitBbGwgVExTIGJhc2VkIHByb3RvY29sczogSFRUUFMsIEZUUFMsIElNQVBTLCBQT1AzUywgU01UUFMgZXRjLgogLlNIIEVYQU1QTEUKIFRPRE8KIC5TSCBBVkFJTEFCSUxJVFkKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NMS0VZVFlQRS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0xLRVlUWVBFLjMKaW5kZXggZDQ5MTYzNC4uNzYxNmEzZiAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0xLRVlUWVBFLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0xLRVlUWVBFLjMKQEAgLTUsMTEgKzUsMTEgQEAKIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKIC5cIiAqCi0uXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zOCw3ICszOCw3IEBACiAuU0ggREVGQVVMVAogIlBFTSIKIC5TSCBQUk9UT0NPTFMKLUFsbCBUTFMgYmFzZWQgcHJvdG9jb2xzOiBIVFRQUywgRlRQUywgSU1BUFMsIFBPUDMsIFNNVFBTIGV0Yy4KK0FsbCBUTFMgYmFzZWQgcHJvdG9jb2xzOiBIVFRQUywgRlRQUywgSU1BUFMsIFBPUDNTLCBTTVRQUyBldGMuCiAuU0ggRVhBTVBMRQogVE9ETwogLlNIIEFWQUlMQUJJTElUWQpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0xWRVJTSU9OLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTTFZFUlNJT04uMwppbmRleCBhMTBkYWJkLi4yZjQwZTQ2IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTTFZFUlNJT04uMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTTFZFUlNJT04uMwpAQCAtNSwxMSArNSwxMSBAQAogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogLlwiICoKLS5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTUyLDcgKzUyLDcgQEAKIC5TSCBERUZBVUxUCiBDVVJMX1NTTFZFUlNJT05fREVGQVVMVAogLlNIIFBST1RPQ09MUwotQWxsIFRMUyBiYXNlZCBwcm90b2NvbHM6IEhUVFBTLCBGVFBTLCBJTUFQUywgUE9QMywgU01UUFMgZXRjLgorQWxsIFRMUyBiYXNlZCBwcm90b2NvbHM6IEhUVFBTLCBGVFBTLCBJTUFQUywgUE9QM1MsIFNNVFBTIGV0Yy4KIC5TSCBFWEFNUExFCiAubmYKIENVUkwgKmN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpOwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0xfQ0lQSEVSX0xJU1QuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NMX0NJUEhFUl9MSVNULjMKaW5kZXggN2UwNWE1OS4uNzE4MzNiNSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0xfQ0lQSEVSX0xJU1QuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTTF9DSVBIRVJfTElTVC4zCkBAIC01LDExICs1LDExIEBACiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAuXCIgKgotLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNDAsNyArNDAsNyBAQAogCiBZb3UnbGwgZmluZCBtb3JlIGRldGFpbHMgYWJvdXQgY2lwaGVyIGxpc3RzIG9uIHRoaXMgVVJMOgogCi0gaHR0cDovL3d3dy5vcGVuc3NsLm9yZy9kb2NzL2FwcHMvY2lwaGVycy5odG1sCisgaHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvZG9jcy9hcHBzL2NpcGhlcnMuaHRtbAogCiBGb3IgTlNTLCB2YWxpZCBleGFtcGxlcyBvZiBjaXBoZXIgbGlzdHMgaW5jbHVkZSAncnNhX3JjNF8xMjhfbWQ1JywKIFwncnNhX2Flc18xMjhfc2hhXCcsIGV0Yy4gV2l0aCBOU1MgeW91IGRvbid0IGFkZC9yZW1vdmUgY2lwaGVycy4gSWYgb25lIHVzZXMKQEAgLTUzLDcgKzUzLDcgQEAKIC5TSCBERUZBVUxUCiBOVUxMLCB1c2UgaW50ZXJuYWwgZGVmYXVsdAogLlNIIFBST1RPQ09MUwotQWxsIFRMUyBiYXNlZCBwcm90b2NvbHM6IEhUVFBTLCBGVFBTLCBJTUFQUywgUE9QMywgU01UUFMgZXRjLgorQWxsIFRMUyBiYXNlZCBwcm90b2NvbHM6IEhUVFBTLCBGVFBTLCBJTUFQUywgUE9QM1MsIFNNVFBTIGV0Yy4KIC5TSCBFWEFNUExFCiBUT0RPCiAuU0ggQVZBSUxBQklMSVRZCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTTF9DVFhfREFUQS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0xfQ1RYX0RBVEEuMwppbmRleCA5NzdjYzEyLi5iZTJjZjM0IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTTF9DVFhfREFUQS4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NMX0NUWF9EQVRBLjMKQEAgLTUsMTEgKzUsMTEgQEAKIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKIC5cIiAqCi0uXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zNCw3ICszNCw3IEBACiAuU0ggREVGQVVMVAogTlVMTAogLlNIIFBST1RPQ09MUwotQWxsIFRMUyBiYXNlZCBwcm90b2NvbHM6IEhUVFBTLCBGVFBTLCBJTUFQUywgUE9QMywgU01UUFMgZXRjLgorQWxsIFRMUyBiYXNlZCBwcm90b2NvbHM6IEhUVFBTLCBGVFBTLCBJTUFQUywgUE9QM1MsIFNNVFBTIGV0Yy4KIC5TSCBFWEFNUExFCiBUT0RPCiAuU0ggQVZBSUxBQklMSVRZCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTTF9DVFhfRlVOQ1RJT04uMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NMX0NUWF9GVU5DVElPTi4zCmluZGV4IGUzZTAxNzAuLjE3Nzk0N2IgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NMX0NUWF9GVU5DVElPTi4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NMX0NUWF9GVU5DVElPTi4zCkBAIC01LDExICs1LDExIEBACiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAuXCIgKgotLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNTAsMTggKzUwLDg4IEBACiBUaGlzIGZ1bmN0aW9uIHdpbGwgZ2V0IGNhbGxlZCBvbiBhbGwgbmV3IGNvbm5lY3Rpb25zIG1hZGUgdG8gYSBzZXJ2ZXIsIGR1cmluZwogdGhlIFNTTCBuZWdvdGlhdGlvbi4gVGhlIFNTTF9DVFggcG9pbnRlciB3aWxsIGJlIGEgbmV3IG9uZSBldmVyeSB0aW1lLgogCi1UbyB1c2UgdGhpcyBwcm9wZXJseSwgYSBub24tdHJpdmlhbCBhbW91bnQgb2Yga25vd2xlZGdlIG9mIHlvdXIgU1NMIGxpYnJhcnkKLWlzIG5lY2Vzc2FyeS4gRm9yIGV4YW1wbGUsIHlvdSBjYW4gdXNlIHRoaXMgZnVuY3Rpb24gdG8gY2FsbCBsaWJyYXJ5LXNwZWNpZmljCitUbyB1c2UgdGhpcyBwcm9wZXJseSwgYSBub24tdHJpdmlhbCBhbW91bnQgb2Yga25vd2xlZGdlIG9mIHlvdXIgU1NMIGxpYnJhcnkgaXMKK25lY2Vzc2FyeS4gRm9yIGV4YW1wbGUsIHlvdSBjYW4gdXNlIHRoaXMgZnVuY3Rpb24gdG8gY2FsbCBsaWJyYXJ5LXNwZWNpZmljCiBjYWxsYmFja3MgdG8gYWRkIGFkZGl0aW9uYWwgdmFsaWRhdGlvbiBjb2RlIGZvciBjZXJ0aWZpY2F0ZXMsIGFuZCBldmVuIHRvCi1jaGFuZ2UgdGhlIGFjdHVhbCBVUkkgb2YgYSBIVFRQUyByZXF1ZXN0IChleGFtcGxlIHVzZWQgaW4gdGhlIGxpYjUwOSB0ZXN0Ci1jYXNlKS4gIFNlZSBhbHNvIHRoZSBleGFtcGxlIHNlY3Rpb24gZm9yIGEgcmVwbGFjZW1lbnQgb2YgdGhlIGtleSwgY2VydGlmaWNhdGUKLWFuZCB0cnVzdCBmaWxlIHNldHRpbmdzLgorY2hhbmdlIHRoZSBhY3R1YWwgVVJJIG9mIGEgSFRUUFMgcmVxdWVzdC4KIC5TSCBERUZBVUxUCiBOVUxMCiAuU0ggUFJPVE9DT0xTCi1BbGwgVExTIGJhc2VkIHByb3RvY29sczogSFRUUFMsIEZUUFMsIElNQVBTLCBQT1AzLCBTTVRQUyBldGMuCitBbGwgVExTIGJhc2VkIHByb3RvY29sczogSFRUUFMsIEZUUFMsIElNQVBTLCBQT1AzUywgU01UUFMgZXRjLgogLlNIIEVYQU1QTEUKLVRPRE8KKy5uZgorLyogT3BlblNTTCBzcGVjaWZpYyAqLworCisjaW5jbHVkZSA8b3BlbnNzbC9zc2wuaD4KKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorCitzdGF0aWMgQ1VSTGNvZGUgc3NsY3R4X2Z1bmN0aW9uKENVUkwgKmN1cmwsIHZvaWQgKnNzbGN0eCwgdm9pZCAqcGFybSkKK3sKKyAgWDUwOV9TVE9SRSAqc3RvcmU7CisgIFg1MDkgKmNlcnQ9TlVMTDsKKyAgQklPICpiaW87CisgIGNoYXIgKm15cGVtID0gLyogZXhhbXBsZSBDQSBjZXJ0IFBFTSAtIHNob3J0ZW5lZCAqLworICAgICItLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS1cbiIKKyAgICAiTUlJSFBUQ0NCU1dnQXdJQkFnSUJBREFOQmdrcWhraUc5dzBCQVFRRkFEQjVNUkF3RGdZRFZRUUtFd2RTYjI5MFxuIgorICAgICJJRU5CTVI0d0hBWURWUVFMRXhWb2RIUndPaTh2ZDNkM0xtTmhZMlZ5ZEM1dmNtY3hJakFnQmdOVkJBTVRHVU5CXG4iCisgICAgIklFTmxjblFnVTJsbmJtbHVaeUJCZFhSb2IzSnBkSGt4SVRBZkJna3Foa2lHOXcwQkNRRVdFbk4xY0hCdmNuUkFcbiIKKyAgICAiWTJGalpYSjBMbTl5WnpBZUZ3MHdNekF6TXpBeE1qSTVORGxhRncwek16QXpNamt4TWpJNU5EbGFNSGt4RURBT1xuIgorICAgICJHQ1NOZTlGSU5Ta1lRS3lUWU9HV2hsQzBlbG5ZanlFTG44K0NrY1k3djJ2Y0I1RzVsMVlqcXJac2xNWklCanprXG4iCisgICAgInprNnE1UFl2Q2R4VGJ5NzhkT3M2WTVuQ3BxeUp2S2V5UktBTmloRGpiUElreS9xYm4zQkhMdDRVaTlTeUlBbVdcbiIKKyAgICAib21UeEpCemNvVFdjRmJMVXZGVXVmUWIxbkE1VjlGcldrOXAyclNWelRNVkRcbiJcCisgICAgIi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS1cbiI7CisgIC8qIGdldCBhIEJJTyAqLworICBiaW89QklPX25ld19tZW1fYnVmKG15cGVtLCAtMSk7CisgIC8qIHVzZSBpdCB0byByZWFkIHRoZSBQRU0gZm9ybWF0dGVkIGNlcnRpZmljYXRlIGZyb20gbWVtb3J5IGludG8gYW4gWDUwOQorICAgKiBzdHJ1Y3R1cmUgdGhhdCBTU0wgY2FuIHVzZQorICAgKi8KKyAgUEVNX3JlYWRfYmlvX1g1MDkoYmlvLCAmY2VydCwgMCwgTlVMTCk7CisgIGlmKGNlcnQgPT0gTlVMTCkKKyAgICBwcmludGYoIlBFTV9yZWFkX2Jpb19YNTA5IGZhaWxlZC4uLlxuIik7CisKKyAgLyogZ2V0IGEgcG9pbnRlciB0byB0aGUgWDUwOSBjZXJ0aWZpY2F0ZSBzdG9yZSAod2hpY2ggbWF5IGJlIGVtcHR5ISkgKi8KKyAgc3RvcmU9U1NMX0NUWF9nZXRfY2VydF9zdG9yZSgoU1NMX0NUWCAqKXNzbGN0eCk7CisKKyAgLyogYWRkIG91ciBjZXJ0aWZpY2F0ZSB0byB0aGlzIHN0b3JlICovCisgIGlmKFg1MDlfU1RPUkVfYWRkX2NlcnQoc3RvcmUsIGNlcnQpPT0wKQorICAgIHByaW50ZigiZXJyb3IgYWRkaW5nIGNlcnRpZmljYXRlXG4iKTsKKworICAvKiBkZWNyZWFzZSByZWZlcmVuY2UgY291bnRzICovCisgIFg1MDlfZnJlZShjZXJ0KTsKKyAgQklPX2ZyZWUoYmlvKTsKKworICAvKiBhbGwgc2V0IHRvIGdvICovCisgIHJldHVybiBDVVJMRV9PSzsKK30KKworaW50IG1haW4odm9pZCkKK3sKKyAgQ1VSTCAqIGNoOworICBDVVJMY29kZSBydjsKKworICBydj1jdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCk7CisgIGNoPWN1cmxfZWFzeV9pbml0KCk7CisgIHJ2PWN1cmxfZWFzeV9zZXRvcHQoY2gsIENVUkxPUFRfU1NMQ0VSVFRZUEUsICJQRU0iKTsKKyAgcnY9Y3VybF9lYXN5X3NldG9wdChjaCwgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwgMUwpOworICBydj1jdXJsX2Vhc3lfc2V0b3B0KGNoLCBDVVJMT1BUX1VSTCwgImh0dHBzOi8vd3d3LmV4YW1wbGUuY29tLyIpOworCisgIC8qIFJldHJpZXZlIHBhZ2UgdXNpbmcgY2FjZXJ0cycgY2VydGlmaWNhdGUgLT4gd2lsbCBzdWNjZWVkCisgICAqIGxvYWQgdGhlIGNlcnRpZmljYXRlIGJ5IGluc3RhbGxpbmcgYSBmdW5jdGlvbiBkb2luZyB0aGUgbmVzY2Vzc2FyeQorICAgKiAibW9kaWZpY2F0aW9ucyIgdG8gdGhlIFNTTCBDT05URVhUIGp1c3QgYmVmb3JlIGxpbmsgaW5pdAorICAgKi8KKyAgcnY9Y3VybF9lYXN5X3NldG9wdChjaCwgQ1VSTE9QVF9TU0xfQ1RYX0ZVTkNUSU9OLCAqc3NsY3R4X2Z1bmN0aW9uKTsKKyAgcnY9Y3VybF9lYXN5X3BlcmZvcm0oY2gpOworICBpZihydj09Q1VSTEVfT0spCisgICAgcHJpbnRmKCIqKiogdHJhbnNmZXIgc3VjY2VlZGVkICoqKlxuIik7CisgIGVsc2UKKyAgICBwcmludGYoIioqKiB0cmFuc2ZlciBmYWlsZWQgKioqXG4iKTsKKworICBjdXJsX2Vhc3lfY2xlYW51cChjaCk7CisgIGN1cmxfZ2xvYmFsX2NsZWFudXAoKTsKKyAgcmV0dXJuIHJ2OworfQorLmZpCiAuU0ggQVZBSUxBQklMSVRZCiBBZGRlZCBpbiA3LjExLjAgZm9yIE9wZW5TU0wuIEFkZGVkIGluIDcuNDIuMCBmb3Igd29sZlNTTC9DeWFTU0wuIE90aGVyIFNTTAogYmFja2VuZHMgbm90IHN1cHBvcnRlZC4KZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NMX0VOQUJMRV9BTFBOLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTTF9FTkFCTEVfQUxQTi4zCmluZGV4IDY3MTZmNzIuLjYxODYzYzggMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NMX0VOQUJMRV9BTFBOLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0xfRU5BQkxFX0FMUE4uMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTTF9FTkFCTEVfTlBOLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTTF9FTkFCTEVfTlBOLjMKaW5kZXggNWRiOWI1MS4uNjdmMGViZSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0xfRU5BQkxFX05QTi4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NMX0VOQUJMRV9OUE4uMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTTF9GQUxTRVNUQVJULjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTTF9GQUxTRVNUQVJULjMKaW5kZXggMzFhMDVlNi4uMzA3M2RhZCAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0xfRkFMU0VTVEFSVC4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NMX0ZBTFNFU1RBUlQuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zNyw3ICszNyw3IEBACiAuU0ggREVGQVVMVAogMAogLlNIIFBST1RPQ09MUwotQWxsIFRMUyBiYXNlZCBwcm90b2NvbHM6IEhUVFBTLCBGVFBTLCBJTUFQUywgUE9QMywgU01UUFMgZXRjLgorQWxsIFRMUyBiYXNlZCBwcm90b2NvbHM6IEhUVFBTLCBGVFBTLCBJTUFQUywgUE9QM1MsIFNNVFBTIGV0Yy4KIC5TSCBFWEFNUExFCiBUT0RPCiAuU0ggQVZBSUxBQklMSVRZCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTTF9PUFRJT05TLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTTF9PUFRJT05TLjMKaW5kZXggMDliY2I5Ni4uNDk0MzIzMyAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0xfT1BUSU9OUy4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NMX09QVElPTlMuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zMCwxMyArMzAsMjUgQEAKIC5TSCBERVNDUklQVElPTgogUGFzcyBhIGxvbmcgd2l0aCBhIGJpdG1hc2sgdG8gdGVsbCBsaWJjdXJsIGFib3V0IHNwZWNpZmljIFNTTCBiZWhhdmlvcnMuCiAKLVxmSUNVUkxTU0xPUFRfQUxMT1dfQkVBU1RcZlAgaXMgdGhlIG9ubHkgc3VwcG9ydGVkIGJpdCBhbmQgYnkgc2V0dGluZyB0aGlzIHRoZQotdXNlciB3aWxsIHRlbGwgbGliY3VybCB0byBub3QgYXR0ZW1wdCB0byB1c2UgYW55IHdvcmthcm91bmRzIGZvciBhIHNlY3VyaXR5Ci1mbGF3IGluIHRoZSBTU0wzIGFuZCBUTFMxLjAgcHJvdG9jb2xzLiAgSWYgdGhpcyBvcHRpb24gaXNuJ3QgdXNlZCBvciB0aGlzIGJpdAotaXMgc2V0IHRvIDAsIHRoZSBTU0wgbGF5ZXIgbGliY3VybCB1c2VzIG1heSB1c2UgYSB3b3JrLWFyb3VuZCBmb3IgdGhpcyBmbGF3Ci1hbHRob3VnaCBpdCBtaWdodCBjYXVzZSBpbnRlcm9wZXJhYmlsaXR5IHByb2JsZW1zIHdpdGggc29tZSAob2xkZXIpIFNTTAotaW1wbGVtZW50YXRpb25zLiBXQVJOSU5HOiBhdm9pZGluZyB0aGlzIHdvcmstYXJvdW5kIGxlc3NlbnMgdGhlIHNlY3VyaXR5LCBhbmQKLWJ5IHNldHRpbmcgdGhpcyBvcHRpb24gdG8gMSB5b3UgYXNrIGZvciBleGFjdGx5IHRoYXQuCitcZklDVVJMU1NMT1BUX0FMTE9XX0JFQVNUXGZQIHRlbGxzIGxpYmN1cmwgdG8gbm90IGF0dGVtcHQgdG8gdXNlIGFueQord29ya2Fyb3VuZHMgZm9yIGEgc2VjdXJpdHkgZmxhdyBpbiB0aGUgU1NMMyBhbmQgVExTMS4wIHByb3RvY29scy4gIElmIHRoaXMKK29wdGlvbiBpc24ndCB1c2VkIG9yIHRoaXMgYml0IGlzIHNldCB0byAwLCB0aGUgU1NMIGxheWVyIGxpYmN1cmwgdXNlcyBtYXkgdXNlIGEKK3dvcmstYXJvdW5kIGZvciB0aGlzIGZsYXcgYWx0aG91Z2ggaXQgbWlnaHQgY2F1c2UgaW50ZXJvcGVyYWJpbGl0eSBwcm9ibGVtcword2l0aCBzb21lIChvbGRlcikgU1NMIGltcGxlbWVudGF0aW9ucy4gV0FSTklORzogYXZvaWRpbmcgdGhpcyB3b3JrLWFyb3VuZAorbGVzc2VucyB0aGUgc2VjdXJpdHksIGFuZCBieSBzZXR0aW5nIHRoaXMgb3B0aW9uIHRvIDEgeW91IGFzayBmb3IgZXhhY3RseSB0aGF0LgorVGhpcyBvcHRpb24gaXMgb25seSBzdXBwb3J0ZWQgZm9yIERhcndpblNTTCwgTlNTIGFuZCBPcGVuU1NMLgorCitBZGRlZCBpbiA3LjQ0LjA6CisKK1xmSUNVUkxTU0xPUFRfTk9fUkVWT0tFXGZQIHRlbGxzIGxpYmN1cmwgdG8gZGlzYWJsZSBjZXJ0aWZpY2F0ZSByZXZvY2F0aW9uCitjaGVja3MgZm9yIHRob3NlIFNTTCBiYWNrZW5kcyB3aGVyZSBzdWNoIGJlaGF2aW9yIGlzIHByZXNlbnQuIFxmQkN1cnJlbnRseSB0aGlzCitvcHRpb24gaXMgb25seSBzdXBwb3J0ZWQgZm9yIFdpblNTTCAodGhlIG5hdGl2ZSBXaW5kb3dzIFNTTCBsaWJyYXJ5KSwgd2l0aCBhbgorZXhjZXB0aW9uIGluIHRoZSBjYXNlIG9mIFdpbmRvd3MnIFVudHJ1c3RlZCBQdWJsaXNoZXJzIGJsYWNrbGlzdCB3aGljaCBpdCBzZWVtcworY2FuJ3QgYmUgYnlwYXNzZWQuXGZQIFRoaXMgb3B0aW9uIG1heSBoYXZlIGJyb2FkZXIgc3VwcG9ydCB0byBhY2NvbW1vZGF0ZSBvdGhlcgorU1NMIGJhY2tlbmRzIGluIHRoZSBmdXR1cmUuCitodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL3NzbC1jb21wYXJlZC5odG1sCisKKwogLlNIIERFRkFVTFQKIDAKIC5TSCBQUk9UT0NPTFMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NMX1NFU1NJT05JRF9DQUNIRS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0xfU0VTU0lPTklEX0NBQ0hFLjMKaW5kZXggNGJhYTA2MS4uYzkzOTQ2NSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0xfU0VTU0lPTklEX0NBQ0hFLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0xfU0VTU0lPTklEX0NBQ0hFLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0xfVkVSSUZZSE9TVC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0xfVkVSSUZZSE9TVC4zCmluZGV4IGZiZjIwNDIuLjE1OTE0NzMgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NMX1ZFUklGWUhPU1QuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTTF9WRVJJRllIT1NULjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNjQsNyArNjQsNyBAQAogLlNIIERFRkFVTFQKIDIKIC5TSCBQUk9UT0NPTFMKLUFsbCBUTFMgYmFzZWQgcHJvdG9jb2xzOiBIVFRQUywgRlRQUywgSU1BUFMsIFBPUDMsIFNNVFBTIGV0Yy4KK0FsbCBUTFMgYmFzZWQgcHJvdG9jb2xzOiBIVFRQUywgRlRQUywgSU1BUFMsIFBPUDNTLCBTTVRQUyBldGMuCiAuU0ggRVhBTVBMRQogLm5mCiBDVVJMICpjdXJsID0gY3VybF9lYXN5X2luaXQoKTsKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NMX1ZFUklGWVBFRVIuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1NMX1ZFUklGWVBFRVIuMwppbmRleCA4MWJiNTkzLi41YTYzNDgxIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTTF9WRVJJRllQRUVSLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUi4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTYwLDcgKzYwLDcgQEAKIC5TSCBERUZBVUxUCiBCeSBkZWZhdWx0LCBjdXJsIGFzc3VtZXMgYSB2YWx1ZSBvZiAxLgogLlNIIFBST1RPQ09MUwotQWxsIFRMUyBiYXNlZCBwcm90b2NvbHM6IEhUVFBTLCBGVFBTLCBJTUFQUywgUE9QMywgU01UUFMgZXRjLgorQWxsIFRMUyBiYXNlZCBwcm90b2NvbHM6IEhUVFBTLCBGVFBTLCBJTUFQUywgUE9QM1MsIFNNVFBTIGV0Yy4KIC5TSCBFWEFNUExFCiAubmYKIENVUkwgKmN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpOwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TU0xfVkVSSUZZU1RBVFVTLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTTF9WRVJJRllTVEFUVVMuMwppbmRleCBkN2YwMTFhLi4zMDIxMjI1IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTTF9WRVJJRllTVEFUVVMuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NTTF9WRVJJRllTVEFUVVMuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zOCw3ICszOCw3IEBACiAuU0ggREVGQVVMVAogMAogLlNIIFBST1RPQ09MUwotQWxsIFRMUyBiYXNlZCBwcm90b2NvbHM6IEhUVFBTLCBGVFBTLCBJTUFQUywgUE9QMywgU01UUFMgZXRjLgorQWxsIFRMUyBiYXNlZCBwcm90b2NvbHM6IEhUVFBTLCBGVFBTLCBJTUFQUywgUE9QM1MsIFNNVFBTIGV0Yy4KIC5TSCBFWEFNUExFCiBUT0RPCiAuU0ggQVZBSUxBQklMSVRZCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NUREVSUi4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TVERFUlIuMwppbmRleCA4ZWYxYTMyLi43ZGZlMzcxIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NUREVSUi4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1RERVJSLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TVFJFQU1fREVQRU5EUy4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TVFJFQU1fREVQRU5EUy4zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzMWQyMTEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NUUkVBTV9ERVBFTkRTLjMKQEAgLTAsMCArMSw1NiBAQAorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisuXCIgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKy5cIiAqCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqCisuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKy5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworLlwiICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisuXCIgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLlwiICoKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiCisuVEggQ1VSTE9QVF9TVFJFQU1fREVQRU5EUyAzICIxMyBTZXAgMjAxNSIgImxpYmN1cmwgNy40Ni4wIiAiY3VybF9lYXN5X3NldG9wdCBvcHRpb25zIgorLlNIIE5BTUUKK0NVUkxPUFRfU1RSRUFNX0RFUEVORFMgXC0gc2V0IHN0cmVhbSB0aGlzIHRyYW5zZmVyIGRlcGVuZHMgb24KKy5TSCBTWU5PUFNJUworI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCitDVVJMY29kZSBjdXJsX2Vhc3lfc2V0b3B0KENVUkwgKmhhbmRsZSwgQ1VSTE9QVF9TVFJFQU1fREVQRU5EUywgQ1VSTCAqZGVwaGFuZGxlKTsKKy5TSCBERVNDUklQVElPTgorUGFzcyBhIENVUkwgKiBwb2ludGVyIGluIFxmSWRlcGhhbmRsZVxmUCB0byBpZGVudGlmeSB0aGUgc3RyZWFtIHdpdGhpbiB0aGUKK3NhbWUgY29ubmVjdGlvbiB0aGF0IHRoaXMgc3RyZWFtIGlzIGRlcGVuZGluZyB1cG9uLiBUaGlzIG9wdGlvbiBjbGVhcnMgdGhlCitleGNsdXNpdmUgaXQgYW5kIGlzIG11dHVhbGx5IGV4Y2x1c2l2ZSB0byB0aGUKK1xmSUNVUkxPUFRfU1RSRUFNX0RFUEVORFNfRSgzKVxmUCBvcHRpb24uCisKK1RoZSBzcGVjIHNheXMgIkluY2x1ZGluZyBhIGRlcGVuZGVuY3kgZXhwcmVzc2VzIGEgcHJlZmVyZW5jZSB0byBhbGxvY2F0ZQorcmVzb3VyY2VzIHRvIHRoZSBpZGVudGlmaWVkIHN0cmVhbSByYXRoZXIgdGhhbiB0byB0aGUgZGVwZW5kZW50IHN0cmVhbS4iCisKK1RoaXMgb3B0aW9uIGNhbiBiZSBzZXQgZHVyaW5nIHRyYW5zZmVyLgorCitcZklkZXBoYW5kbGVcZlAgbXVzdCBub3QgYmUgdGhlIHNhbWUgYXMgXGZJaGFuZGxlXGZQLCB0aGF0IHdpbGwgY2F1c2UgdGhpcworZnVuY3Rpb24gdG8gcmV0dXJuIGFuIGVycm9yLiBJdCBtdXN0IGJlIGFub3RoZXIgZWFzeSBoYW5kbGUsIGFuZCBpdCBhbHNvIG5lZWRzCit0byBiZSBhIGhhbmRsZSBvZiBhIHRyYW5zZmVyIHRoYXQgd2lsbCBiZSBzZW50IG92ZXIgdGhlIHNhbWUgSFRUUC8yIGNvbm5lY3Rpb24KK2ZvciB0aGlzIG9wdGlvbiB0byBoYXZlIGFuIGFjdHVhbCBlZmZlY3QuCisuU0ggREVGQVVMVAorTlVMTAorLlNIIFBST1RPQ09MUworSFRUUC8yCisuU0ggRVhBTVBMRQorVE9ETworLlNIIEFWQUlMQUJJTElUWQorQWRkZWQgaW4gNy40Ni4wCisuU0ggUkVUVVJOIFZBTFVFCitSZXR1cm5zIENVUkxFX09LIGlmIHRoZSBvcHRpb24gaXMgc3VwcG9ydGVkLCBhbmQgQ1VSTEVfVU5LTk9XTl9PUFRJT04gaWYgbm90LgorLlNIICJTRUUgQUxTTyIKKy5CUiBDVVJMT1BUX1NUUkVBTV9XRUlHSFQgIigzKSwgIiBDVVJMT1BUX1NUUkVBTV9ERVBFTkRTX0UgIigzKSwgIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TVFJFQU1fREVQRU5EU19FLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NUUkVBTV9ERVBFTkRTX0UuMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMWQ5ZmQwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9TVFJFQU1fREVQRU5EU19FLjMKQEAgLTAsMCArMSw1OSBAQAorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisuXCIgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKy5cIiAqCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqCisuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKy5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworLlwiICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisuXCIgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLlwiICoKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiCisuVEggQ1VSTE9QVF9TVFJFQU1fREVQRU5EU19FIDMgIjEzIFNlcCAyMDE1IiAibGliY3VybCA3LjQ2LjAiICJjdXJsX2Vhc3lfc2V0b3B0IG9wdGlvbnMiCisuU0ggTkFNRQorQ1VSTE9QVF9TVFJFQU1fREVQRU5EU19FIFwtIHNldCBzdHJlYW0gdGhpcyB0cmFuc2ZlciBkZXBlbmRzIG9uIGV4ZWNsdXNpdmVseQorLlNIIFNZTk9QU0lTCisjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CisKK0NVUkxjb2RlIGN1cmxfZWFzeV9zZXRvcHQoQ1VSTCAqaGFuZGxlLCBDVVJMT1BUX1NUUkVBTV9ERVBFTkRTX0UsIENVUkwgKmRlcGhhbmRsZSk7CisuU0ggREVTQ1JJUFRJT04KK1Bhc3MgYSBDVVJMICogcG9pbnRlciBpbiBcZklkZXBoYW5kbGVcZlAgdG8gaWRlbnRpZnkgdGhlIHN0cmVhbSB3aXRoaW4gdGhlCitzYW1lIGNvbm5lY3Rpb24gdGhhdCB0aGlzIHN0cmVhbSBpcyBkZXBlbmRpbmcgdXBvbiBleGNsdXNpdmVseS4gVGhhdCBtZWFucyBpdAorZGVwZW5kcyBvbiBpdCBhbmQgc2V0cyB0aGUgRXhjbHVzaXZlIGJpdC4KKworVGhlIHNwZWMgc2F5cyAiSW5jbHVkaW5nIGEgZGVwZW5kZW5jeSBleHByZXNzZXMgYSBwcmVmZXJlbmNlIHRvIGFsbG9jYXRlCityZXNvdXJjZXMgdG8gdGhlIGlkZW50aWZpZWQgc3RyZWFtIHJhdGhlciB0aGFuIHRvIHRoZSBkZXBlbmRlbnQgc3RyZWFtLiIKKworU2V0dGluZyBhIGRlcGVuZGVuY3kgd2l0aCB0aGUgZXhjbHVzaXZlIGZsYWcgZm9yIGEgcmVwcmlvcml0aXplZCBzdHJlYW0gY2F1c2VzCithbGwgdGhlIGRlcGVuZGVuY2llcyBvZiB0aGUgbmV3IHBhcmVudCBzdHJlYW0gdG8gYmVjb21lIGRlcGVuZGVudCBvbiB0aGUKK3JlcHJpb3JpdGl6ZWQgc3RyZWFtLgorCitUaGlzIG9wdGlvbiBjYW4gYmUgc2V0IGR1cmluZyB0cmFuc2Zlci4KKworXGZJZGVwaGFuZGxlXGZQIG11c3Qgbm90IGJlIHRoZSBzYW1lIGFzIFxmSWhhbmRsZVxmUCwgdGhhdCB3aWxsIGNhdXNlIHRoaXMKK2Z1bmN0aW9uIHRvIHJldHVybiBhbiBlcnJvci4gSXQgbXVzdCBiZSBhbm90aGVyIGVhc3kgaGFuZGxlLCBhbmQgaXQgYWxzbyBuZWVkcwordG8gYmUgYSBoYW5kbGUgb2YgYSB0cmFuc2ZlciB0aGF0IHdpbGwgYmUgc2VudCBvdmVyIHRoZSBzYW1lIEhUVFAvMiBjb25uZWN0aW9uCitmb3IgdGhpcyBvcHRpb24gdG8gaGF2ZSBhbiBhY3R1YWwgZWZmZWN0LgorLlNIIERFRkFVTFQKK05VTEwKKy5TSCBQUk9UT0NPTFMKK0hUVFAvMgorLlNIIEVYQU1QTEUKK1RPRE8KKy5TSCBBVkFJTEFCSUxJVFkKK0FkZGVkIGluIDcuNDYuMAorLlNIIFJFVFVSTiBWQUxVRQorUmV0dXJucyBDVVJMRV9PSyBpZiB0aGUgb3B0aW9uIGlzIHN1cHBvcnRlZCwgYW5kIENVUkxFX1VOS05PV05fT1BUSU9OIGlmIG5vdC4KKy5TSCAiU0VFIEFMU08iCisuQlIgQ1VSTE9QVF9TVFJFQU1fV0VJR0hUICIoMyksICIgQ1VSTE9QVF9TVFJFQU1fREVQRU5EUyAiKDMpLCAiCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NUUkVBTV9XRUlHSFQuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfU1RSRUFNX1dFSUdIVC4zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyYjI0NzIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1NUUkVBTV9XRUlHSFQuMwpAQCAtMCwwICsxLDYzIEBACisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKy5cIiAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorLlwiICoKKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKy5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICoKKy5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisuXCIgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKy5cIiAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisuXCIgKgorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIKKy5USCBDVVJMT1BUX1NUUkVBTV9XRUlHSFQgMyAiMTMgU2VwIDIwMTUiICJsaWJjdXJsIDcuNDYuMCIgImN1cmxfZWFzeV9zZXRvcHQgb3B0aW9ucyIKKy5TSCBOQU1FCitDVVJMT1BUX1NUUkVBTV9XRUlHSFQgXC0gc2V0IG51bWVyaWNhbCBzdHJlYW0gd2VpZ2h0CisuU0ggU1lOT1BTSVMKKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKworQ1VSTGNvZGUgY3VybF9lYXN5X3NldG9wdChDVVJMICpoYW5kbGUsIENVUkxPUFRfU1RSRUFNX1dFSUdIVCwgbG9uZyB3ZWlnaHQpOworLlNIIERFU0NSSVBUSU9OCitTZXQgdGhlIGxvbmcgXGZJd2VpZ2h0XGZQIHRvIGEgbnVtYmVyIGJldHdlZW4gMSBhbmQgMjU2LgorCitXaGVuIHVzaW5nIEhUVFAvMiwgdGhpcyBvcHRpb24gc2V0cyB0aGUgaW5kaXZpZHVhbCB3ZWlnaHQgZm9yIHRoaXMgcGFydGljdWxhcgorc3RyZWFtIHVzZWQgYnkgdGhlIGVhc3kgXGZJaGFuZGxlXGZQLiBTZXR0aW5nIGFuZCB1c2luZyB3ZWlnaHRzIG9ubHkgbWFrZXMKK3NlbnNlIGFuZCBpcyBvbmx5IHVzYWJsZSB3aGVuIGRvaW5nIG11bHRpcGxlIHN0cmVhbXMgb3ZlciB0aGUgc2FtZQorY29ubmVjdGlvbnMsIHdoaWNoIHRodXMgaW1wbGllcyB0aGF0IHlvdSB1c2UgXGZJQ1VSTE1PUFRfUElQRUxJTklORygzKVxmUC4KKworVGhpcyBvcHRpb24gY2FuIGJlIHNldCBkdXJpbmcgdHJhbnNmZXIgYW5kIHdpbGwgdGhlbiBjYXVzZSB0aGUgdXBkYXRlZCB3ZWlnaHQKK2luZm8gZ2V0IHNlbnQgdG8gdGhlIHNlcnZlciB0aGUgbmV4dCB0aW1lIGEgSFRUUC8yIGZyYW1lIGlzIHNlbnQgdG8gdGhlCitzZXJ2ZXIuCisKK1NlZSBzZWN0aW9uIDUuMyBvZiBSRkMgNzU0MCBmb3IgcHJvdG9jb2wgZGV0YWlsczoKK2h0dHBzOi8vaHR0cHdnLmdpdGh1Yi5pby9zcGVjcy9yZmM3NTQwLmh0bWwjU3RyZWFtUHJpb3JpdHkKKworU3RyZWFtcyB3aXRoIHRoZSBzYW1lIHBhcmVudCBzaG91bGQgYmUgYWxsb2NhdGVkIHJlc291cmNlcyBwcm9wb3J0aW9uYWxseQorYmFzZWQgb24gdGhlaXIgd2VpZ2h0LiBTbyBpZiB5b3UgaGF2ZSB0d28gc3RyZWFtcyBnb2luZywgc3RyZWFtIEEgd2l0aCB3ZWlnaHQKKzE2IGFuZCBzdHJlYW0gQiB3aXRoIHdlaWdodCAzMiwgc3RyZWFtIEIgd2lsbCBnZXQgdHdvIHRoaXJkcyAoMzIvNDgpIG9mIHRoZQorYXZhaWxhYmxlIGJhbmR3aWR0aCAoYXNzdW1pbmcgdGhlIHNlcnZlciBjYW4gc2VuZCBvZmYgdGhlIGRhdGEgZXF1YWxseSBmb3IKK2JvdGggc3RyZWFtcykuCisuU0ggREVGQVVMVAorSWYgbm90aGluZyBpcyBzZXQsIHRoZSBIVFRQLzIgcHJvdG9jb2wgaXRzZWxmIHdpbGwgdXNlIGl0cyBvd24gZGVmYXVsdCB3aGljaAoraXMgMTYuCisuU0ggUFJPVE9DT0xTCitIVFRQLzIKKy5TSCBFWEFNUExFCitUT0RPCisuU0ggQVZBSUxBQklMSVRZCitBZGRlZCBpbiA3LjQ2LjAKKy5TSCBSRVRVUk4gVkFMVUUKK1JldHVybnMgQ1VSTEVfT0sgaWYgdGhlIG9wdGlvbiBpcyBzdXBwb3J0ZWQsIGFuZCBDVVJMRV9VTktOT1dOX09QVElPTiBpZiBub3QuCisuU0ggIlNFRSBBTFNPIgorLkJSIENVUkxPUFRfU1RSRUFNX0RFUEVORFMgIigzKSwgIiBDVVJMT1BUX1NUUkVBTV9ERVBFTkRTX0UgIigzKSwgIgorLkJSIENVUkxPUFRfUElQRVdBSVQgIigzKSwgIiBDVVJMTU9QVF9QSVBFTElOSU5HICIoMyksICIKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVENQX0ZBU1RPUEVOLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1RDUF9GQVNUT1BFTi4zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4ZjkzNDMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1RDUF9GQVNUT1BFTi4zCkBAIC0wLDAgKzEsNDcgQEAKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworLlwiICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisuXCIgKgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAorLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcworLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKgorLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCisuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKy5cIiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCisuXCIgKgorLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQorLlwiICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy5cIiAqCisuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5cIgorLlRIIENVUkxPUFRfVENQX0ZBU1RPUEVOIDMgIjE2IEZlYiAyMDE2IiAibGliY3VybCA3LjQ5LjAiICJjdXJsX2Vhc3lfc2V0b3B0IG9wdGlvbnMiCisuU0ggTkFNRQorQ1VSTE9QVF9UQ1BfRkFTVE9QRU4gXC0gZW5hYmxlIFRDUCBGYXN0IE9wZW4KKy5TSCBTWU5PUFNJUworI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCitDVVJMY29kZSBjdXJsX2Vhc3lfc2V0b3B0KENVUkwgKmhhbmRsZSwgQ1VSTE9QVF9UQ1BfRkFTVE9QRU4sIGxvbmcgZW5hYmxlKTsKKy5TSCBERVNDUklQVElPTgorUGFzcyBhIGxvbmcgYXMgcGFyYW1ldGVyIHNldCB0byAxIHRvIGVuYWJsZSBvciAwIHRvIGRpc2FibGUuCisKK1RDUCBGYXN0IE9wZW4gKFJGQzc0MTMpIGlzIGEgbWVjaGFuaXNtIHRoYXQgYWxsb3dzIGRhdGEgdG8gYmUgY2FycmllZCBpbiB0aGUKK1NZTiBhbmQgU1lOLUFDSyBwYWNrZXRzIGFuZCBjb25zdW1lZCBieSB0aGUgcmVjZWl2aW5nIGVuZCBkdXJpbmcgdGhlIGluaXRpYWwKK2Nvbm5lY3Rpb24gaGFuZHNoYWtlLCBzYXZpbmcgdXAgdG8gb25lIGZ1bGwgcm91bmQtdHJpcCB0aW1lIChSVFQpLgorLlNIIERFRkFVTFQKKzAKKy5TSCBQUk9UT0NPTFMKK0FsbAorLlNIIEVYQU1QTEUKK1RPRE8KKy5TSCBBVkFJTEFCSUxJVFkKK0FkZGVkIGluIDcuNDkuMC4gVGhpcyBvcHRpb24gaXMgY3VycmVudGx5IG9ubHkgc3VwcG9ydGVkIG9uIExpbnV4IGFuZCAgT1MgWAorRWwgQ2FwaXRhbi4KKy5TSCBSRVRVUk4gVkFMVUUKK1JldHVybnMgQ1VSTEVfT0sgaWYgZmFzdCBvcGVuIGlzIHN1cHBvcnRlZCBieSB0aGUgb3BlcmF0aW5nIHN5c3RlbSwgb3RoZXJ3aXNlCityZXR1cm5zIENVUkxFX05PVF9CVUlMVF9JTi4KZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVENQX0tFRVBBTElWRS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9UQ1BfS0VFUEFMSVZFLjMKaW5kZXggOTQxY2M0OC4uY2MzNjQyZiAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9UQ1BfS0VFUEFMSVZFLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9UQ1BfS0VFUEFMSVZFLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9UQ1BfS0VFUElETEUuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVENQX0tFRVBJRExFLjMKaW5kZXggZDYwYTNkZi4uZjVmNTc2MiAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9UQ1BfS0VFUElETEUuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1RDUF9LRUVQSURMRS4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVENQX0tFRVBJTlRWTC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9UQ1BfS0VFUElOVFZMLjMKaW5kZXggNDJiYzBiNC4uZjMzMmE4ZiAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9UQ1BfS0VFUElOVFZMLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9UQ1BfS0VFUElOVFZMLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9UQ1BfTk9ERUxBWS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9UQ1BfTk9ERUxBWS4zCmluZGV4IGJkMTM1MTYuLmVmYjI1ODYgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVENQX05PREVMQVkuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1RDUF9OT0RFTEFZLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9URUxORVRPUFRJT05TLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1RFTE5FVE9QVElPTlMuMwppbmRleCBmNWE5YmM1Li43YTE4MWVkIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1RFTE5FVE9QVElPTlMuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1RFTE5FVE9QVElPTlMuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1RGVFBfQkxLU0laRS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9URlRQX0JMS1NJWkUuMwppbmRleCAwNWJjNjM5Li42YWFmYmQxIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1RGVFBfQkxLU0laRS4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVEZUUF9CTEtTSVpFLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9URlRQX05PX09QVElPTlMuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVEZUUF9OT19PUFRJT05TLjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTc5NDBmYgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVEZUUF9OT19PUFRJT05TLjMKQEAgLTAsMCArMSw3MSBAQAorLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisuXCIgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKy5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKy5cIiAqCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICoKKy5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqCisuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKy5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworLlwiICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKy5cIiAqCisuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisuXCIgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorLlwiICoKKy5cIiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLlwiCisuVEggQ1VSTE9QVF9URlRQX05PX09QVElPTlMgMyAiMjMgRmViIDIwMTYiICJsaWJjdXJsIDcuNDguMCIgImN1cmxfZWFzeV9zZXRvcHQgb3B0aW9ucyIKKy5TSCBOQU1FCitDVVJMT1BUX1RGVFBfTk9fT1BUSU9OUyBcLSBEbyBub3Qgc2VuZCBURlRQIG9wdGlvbnMgcmVxdWVzdHMuCisuU0ggU1lOT1BTSVMKKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKworQ1VSTGNvZGUgY3VybF9lYXN5X3NldG9wdChDVVJMICpoYW5kbGUsIENVUkxPUFRfVEZUUF9OT19PUFRJT05TLCBsb25nIG9ub2ZmKTsKKy5TSCBERVNDUklQVElPTgorU2V0IFxmSW9ub2ZmXGZQIHRvIDFMIHRvIGV4Y2x1ZGUgYWxsIFRGVFAgb3B0aW9ucyBkZWZpbmVkIGluIFJGQzIzNDcsIFJGQzIzNDgKK2FuZCBSRkMyMzQ5IGZyb20gcmVhZCBhbmQgd3JpdGUgcmVxdWVzdHMgKFJSUXMvV1JRcykuCisKK1RoaXMgb3B0aW9uIGltcHJvdmVzIGludGVyb3Agd2l0aCBzb21lIGxlZ2FjeSBzZXJ2ZXJzIHRoYXQgZG8gbm90IGFja25vd2xlZGdlCitvciBwcm9wZXJseSBpbXBsZW1lbnQgVEZUUCBvcHRpb25zLiBXaGVuIHRoaXMgb3B0aW9uIGlzIHVzZWQKK1xmSUNVUkxPUFRfVEZUUF9CTEtTSVpFKDMpXGZQIGlzIGlnbm9yZWQuCisuU0ggREVGQVVMVAorMAorLlNIIFBST1RPQ09MUworVEZUUAorLlNIIEVYQU1QTEUKKy5uZgorc2l6ZV90IHdyaXRlX2NhbGxiYWNrKGNoYXIgKnB0ciwgc2l6ZV90IHNpemUsIHNpemVfdCBubWVtYiwgdm9pZCAqZnApCit7CisgIHJldHVybiBmd3JpdGUocHRyLCBzaXplLCBubWVtYiwgKEZJTEUgKilmcCk7Cit9CisKK0NVUkwgKmN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpOworaWYoY3VybCkgeworICBGSUxFICpmcCA9IGZvcGVuKCJmb28uYmluIiwgIndiIik7CisgIGlmKGZwKSB7CisgICAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1dSSVRFREFUQSwgKHZvaWQgKilmcCk7CisgICAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1dSSVRFRlVOQ1RJT04sIHdyaXRlX2NhbGxiYWNrKTsKKworICAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9VUkwsICJ0ZnRwOi8vZXhhbXBsZS5jb20vZm9vLmJpbiIpOworCisgICAgLyogZG8gbm90IHNlbmQgVEZUUCBvcHRpb25zIHJlcXVlc3RzICovCisgICAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1RGVFBfTk9fT1BUSU9OUywgMUwpOworCisgICAgLyogUGVyZm9ybSB0aGUgcmVxdWVzdCAqLworICAgIGN1cmxfZWFzeV9wZXJmb3JtKGN1cmwpOworCisgICAgZmNsb3NlKGZwKTsKKyAgfQorICBjdXJsX2Vhc3lfY2xlYW51cChjdXJsKTsKK30KKy5maQorLlNIIEFWQUlMQUJJTElUWQorQWRkZWQgaW4gNy40OC4wCisuU0ggUkVUVVJOIFZBTFVFCitSZXR1cm5zIENVUkxFX09LIGlmIHRoZSBvcHRpb24gaXMgc3VwcG9ydGVkLCBhbmQgQ1VSTEVfVU5LTk9XTl9PUFRJT04gaWYgbm90LgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9USU1FQ09ORElUSU9OLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1RJTUVDT05ESVRJT04uMwppbmRleCA2NmMzNGZmLi5hOGZjZWE3IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1RJTUVDT05ESVRJT04uMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1RJTUVDT05ESVRJT04uMwpAQCAtNSwxMSArNSwxMSBAQAogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogLlwiICoKLS5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTQyLDcgKzQyLDIxIEBACiAuU0ggUFJPVE9DT0xTCiBIVFRQLCBGVFAsIFJUU1AsIGFuZCBGSUxFCiAuU0ggRVhBTVBMRQotVE9ETworLm5mCitDVVJMICpjdXJsID0gY3VybF9lYXN5X2luaXQoKTsKK2lmKGN1cmwpIHsKKyAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1VSTCwgImh0dHA6Ly9leGFtcGxlLmNvbSIpOworCisgIC8qIEphbnVhcnkgMSwgMjAyMCBpcyAxNTc3ODMzMjAwICovCisgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9USU1FVkFMVUUsIDE1Nzc4MzMyMDBMKTsKKworICAvKiBJZi1Nb2RpZmllZC1TaW5jZSB0aGUgYWJvdmUgdGltZSBzdGFtcCAqLworICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfVElNRUNPTkRJVElPTiwgQ1VSTF9USU1FQ09ORF9JRk1PRFNJTkNFKTsKKworICAvKiBQZXJmb3JtIHRoZSByZXF1ZXN0ICovCisgIGN1cmxfZWFzeV9wZXJmb3JtKGN1cmwpOworfQorLmZpCiAuU0ggQVZBSUxBQklMSVRZCiBBbHdheXMKIC5TSCBSRVRVUk4gVkFMVUUKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVElNRU9VVC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9USU1FT1VULjMKaW5kZXggNjQ0MGZmZS4uNDVlNjliNCAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9USU1FT1VULjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9USU1FT1VULjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9USU1FT1VUX01TLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1RJTUVPVVRfTVMuMwppbmRleCAzNzI3MTMzLi4yYTdhZmIxIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1RJTUVPVVRfTVMuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1RJTUVPVVRfTVMuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1RJTUVWQUxVRS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9USU1FVkFMVUUuMwppbmRleCA0M2EzODcxLi5jZDc0NWZmIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1RJTUVWQUxVRS4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVElNRVZBTFVFLjMKQEAgLTUsMTEgKzUsMTEgQEAKIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKIC5cIiAqCi0uXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zNiw3ICszNiwyMSBAQAogLlNIIFBST1RPQ09MUwogSFRUUCwgRlRQLCBSVFNQLCBhbmQgRklMRQogLlNIIEVYQU1QTEUKLVRPRE8KKy5uZgorQ1VSTCAqY3VybCA9IGN1cmxfZWFzeV9pbml0KCk7CitpZihjdXJsKSB7CisgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9VUkwsICJodHRwOi8vZXhhbXBsZS5jb20iKTsKKworICAvKiBKYW51YXJ5IDEsIDIwMjAgaXMgMTU3NzgzMzIwMCAqLworICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfVElNRVZBTFVFLCAxNTc3ODMzMjAwTCk7CisKKyAgLyogSWYtTW9kaWZpZWQtU2luY2UgdGhlIGFib3ZlIHRpbWUgc3RhbXAgKi8KKyAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1RJTUVDT05ESVRJT04sIENVUkxfVElNRUNPTkRfSUZNT0RTSU5DRSk7CisKKyAgLyogUGVyZm9ybSB0aGUgcmVxdWVzdCAqLworICBjdXJsX2Vhc3lfcGVyZm9ybShjdXJsKTsKK30KKy5maQogLlNIIEFWQUlMQUJJTElUWQogQWx3YXlzCiAuU0ggUkVUVVJOIFZBTFVFCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1RMU0FVVEhfUEFTU1dPUkQuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVExTQVVUSF9QQVNTV09SRC4zCmluZGV4IDFjODY5N2YuLjc4ZmFkMGUgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVExTQVVUSF9QQVNTV09SRC4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVExTQVVUSF9QQVNTV09SRC4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVExTQVVUSF9UWVBFLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1RMU0FVVEhfVFlQRS4zCmluZGV4IGI1Y2RkNWIuLjU2NTVlN2QgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVExTQVVUSF9UWVBFLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9UTFNBVVRIX1RZUEUuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yNiwxOSArMjYsMTkgQEAKIC5TSCBTWU5PUFNJUwogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgogCi1DVVJMY29kZSBjdXJsX2Vhc3lfc2V0b3B0KENVUkwgKmhhbmRsZSwgQ1VSTE9QVF9UTFNBVVRIX1RZUEUsIGxvbmcgYml0bWFzayk7CitDVVJMY29kZSBjdXJsX2Vhc3lfc2V0b3B0KENVUkwgKmhhbmRsZSwgQ1VSTE9QVF9UTFNBVVRIX1RZUEUsIGNoYXIgKnR5cGUpOwogLlNIIERFU0NSSVBUSU9OCi1QYXNzIGEgbG9uZyBhcyBwYXJhbWV0ZXIsIHdoaWNoIGlzIHNldCB0byBhIGJpdG1hc2ssIHRvIHRlbGwgbGliY3VybCB3aGljaAotYXV0aGVudGljYXRpb24gbWV0aG9kKHMpIHlvdSB3YW50IGl0IHRvIHVzZSBmb3IgVExTIGF1dGhlbnRpY2F0aW9uLgorUGFzcyBhIHBvaW50ZXIgdG8gYSB6ZXJvIHRlcm1pbmF0ZWQgc3RyaW5nIGFzIHBhcmFtZXRlci4gVGhlIHN0cmluZworc2hvdWxkIGJlIHRoZSBtZXRob2Qgb2YgdGhlIFRMUyBhdXRoZW50aWNhdGlvbi4gU3VwcG9ydGVkIG1ldGhvZCBpcyAiU1JQIi4KIAotLklQIENVUkxfVExTQVVUSF9TUlAKKy5JUCBTUlAKIFRMUy1TUlAgYXV0aGVudGljYXRpb24uIFNlY3VyZSBSZW1vdGUgUGFzc3dvcmQgYXV0aGVudGljYXRpb24gZm9yIFRMUyBpcwogZGVmaW5lZCBpbiBSRkM1MDU0IGFuZCBwcm92aWRlcyBtdXR1YWwgYXV0aGVudGljYXRpb24gaWYgYm90aCBzaWRlcyBoYXZlIGEKIHNoYXJlZCBzZWNyZXQuIFRvIHVzZSBUTFMtU1JQLCB5b3UgbXVzdCBhbHNvIHNldCB0aGUKIFxmSUNVUkxPUFRfVExTQVVUSF9VU0VSTkFNRSgzKVxmUCBhbmQgXGZJQ1VSTE9QVF9UTFNBVVRIX1BBU1NXT1JEKDMpXGZQCiBvcHRpb25zLgogLlNIIERFRkFVTFQKLUNVUkxfVExTQVVUSF9OT05FICgwKQorYmxhbmsKIC5TSCBQUk9UT0NPTFMKIEFsbCBUTFMtYmFzZWQgcHJvdG9jb2xzCiAuU0ggRVhBTVBMRQpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9UTFNBVVRIX1VTRVJOQU1FLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1RMU0FVVEhfVVNFUk5BTUUuMwppbmRleCBjNWJiMmRmLi41MDIyZTRlIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1RMU0FVVEhfVVNFUk5BTUUuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1RMU0FVVEhfVVNFUk5BTUUuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1RSQU5TRkVSVEVYVC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9UUkFOU0ZFUlRFWFQuMwppbmRleCA2ZTYyNDEzLi5hYTE3NTljIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1RSQU5TRkVSVEVYVC4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVFJBTlNGRVJURVhULjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9UUkFOU0ZFUl9FTkNPRElORy4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9UUkFOU0ZFUl9FTkNPRElORy4zCmluZGV4IDdmMmExMWMuLjI0MmRhMTMgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVFJBTlNGRVJfRU5DT0RJTkcuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1RSQU5TRkVSX0VOQ09ESU5HLjMKQEAgLTUsMTEgKzUsMTEgQEAKIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKIC5cIiAqCi0uXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zNiw3ICszNiw3IEBACiBhdXRvbWF0aWNhbGx5IHVuY29tcHJlc3NlZCBieSBsaWJjdXJsIG9uIHJlY2VwdGlvbi4KIAogVHJhbnNmZXItRW5jb2RpbmcgZGlmZmVycyBzbGlnaHRseSBmcm9tIHRoZSBDb250ZW50LUVuY29kaW5nIHlvdSBhc2sgZm9yIHdpdGgKLVxmQkNVUkxPUFRfQUNDRVBUX0VOQ09ESU5HKDMpXGZQIGluIHRoYXQgYSBUcmFuc2Zlci1FbmNvZGluZyBpcyBzdHJpY3RseSBtZWFudAorXGZJQ1VSTE9QVF9BQ0NFUFRfRU5DT0RJTkcoMylcZlAgaW4gdGhhdCBhIFRyYW5zZmVyLUVuY29kaW5nIGlzIHN0cmljdGx5IG1lYW50CiB0byBiZSBmb3IgdGhlIHRyYW5zZmVyIGFuZCB0aHVzIE1VU1QgYmUgZGVjb2RlZCBiZWZvcmUgdGhlIGRhdGEgYXJyaXZlcyBpbiB0aGUKIGNsaWVudC4gVHJhZGl0aW9uYWxseSwgVHJhbnNmZXItRW5jb2RpbmcgaGFzIGJlZW4gbXVjaCBsZXNzIHVzZWQgYW5kIHN1cHBvcnRlZAogYnkgYm90aCBIVFRQIGNsaWVudHMgYW5kIEhUVFAgc2VydmVycy4KZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVU5JWF9TT0NLRVRfUEFUSC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9VTklYX1NPQ0tFVF9QQVRILjMKaW5kZXggYTY1OWNkMi4uMjk5YzNjYyAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9VTklYX1NPQ0tFVF9QQVRILjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9VTklYX1NPQ0tFVF9QQVRILjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9VTlJFU1RSSUNURURfQVVUSC4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9VTlJFU1RSSUNURURfQVVUSC4zCmluZGV4IDY4YzM4NjAuLjllNGNmMjYgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVU5SRVNUUklDVEVEX0FVVEguMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1VOUkVTVFJJQ1RFRF9BVVRILjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9VUExPQUQuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVVBMT0FELjMKaW5kZXggZDI0YmQyOC4uMGFkMjAxYSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9VUExPQUQuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1VQTE9BRC4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVVJMLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1VSTC4zCmluZGV4IDZlNDgyNGEuLmE3ZDgxZGYgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVVJMLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9VUkwuMwpAQCAtNSwxMSArNSwxMSBAQAogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KIC5cIiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogLlwiICoKLS5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisuXCIgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTQwLDkgKzQwLDExIEBACiBpc3N1ZWQuIEV2ZW4gaWYgeW91IHNldCBhIGNyYXp5IHZhbHVlIGhlcmUsIFxmSWN1cmxfZWFzeV9zZXRvcHQoMylcZlAgd2lsbAogc3RpbGwgcmV0dXJuIFxmSUNVUkxFX09LXGZQLgogCi1JZiB0aGUgZ2l2ZW4gVVJMIGxhY2tzIHRoZSBzY2hlbWUgKHN1Y2ggYXMgImh0dHA6Ly8iIG9yICJmdHA6Ly8iIGV0YykgdGhlbgotbGliY3VybCB3aWxsIGF0dGVtcHQgdG8gcmVzb2x2ZSB0aGUgcHJvdG9jb2wgYmFzZWQgb24gb25lIG9mIHRoZSBmb2xsb3dpbmcKLWdpdmVuIGhvc3QgbmFtZXM6IEhUVFAsIEZUUCwgRElDVCwgTERBUCwgSU1BUCwgUE9QMyBvciBTTVRQCitJZiB0aGUgZ2l2ZW4gVVJMIGlzIG1pc3NpbmcgYSBzY2hlbWUgbmFtZSAoc3VjaCBhcyAiaHR0cDovLyIgb3IgImZ0cDovLyIgZXRjKQordGhlbiBsaWJjdXJsIHdpbGwgbWFrZSBhIGd1ZXNzIGJhc2VkIG9uIHRoZSBob3N0LiBJZiB0aGUgb3V0ZXJtb3N0IHN1Yi1kb21haW4KK25hbWUgbWF0Y2hlcyBESUNULCBGVFAsIElNQVAsIExEQVAsIFBPUDMgb3IgU01UUCB0aGVuIHRoYXQgcHJvdG9jb2wgd2lsbCBiZQordXNlZCwgb3RoZXJ3aXNlIEhUVFAgd2lsbCBiZSB1c2VkLiBTaW5jZSA3LjQ1LjAgZ3Vlc3NpbmcgY2FuIGJlIGRpc2FibGVkIGJ5CitzZXR0aW5nIGEgZGVmYXVsdCBwcm90b2NvbCwgc2VlIFxmSUNVUkxPUFRfREVGQVVMVF9QUk9UT0NPTCgzKVxmUCBmb3IgZGV0YWlscy4KIAogU2hvdWxkIHRoZSBwcm90b2NvbCwgZWl0aGVyIHRoYXQgc3BlY2lmaWVkIGJ5IHRoZSBzY2hlbWUgb3IgZGVkdWNlZCBieSBsaWJjdXJsCiBmcm9tIHRoZSBob3N0IG5hbWUsIG5vdCBiZSBzdXBwb3J0ZWQgYnkgbGliY3VybCB0aGVuCkBAIC0zMzAsNCArMzMyLDUgQEAKIC5TSCAiU0VFIEFMU08iCiAuQlIgQ1VSTE9QVF9WRVJCT1NFICIoMyksICIgQ1VSTE9QVF9QUk9UT0NPTFMgIigzKSwgIgogLkJSIENVUkxPUFRfRk9SQklEX1JFVVNFICIoMyksICIgQ1VSTE9QVF9GUkVTSF9DT05ORUNUICIoMyksICIKLS5CUiBjdXJsX2Vhc3lfcGVyZm9ybSAiKDMpIgorLkJSIGN1cmxfZWFzeV9wZXJmb3JtICIoMyksICIKKy5CUiBDVVJMSU5GT19SRURJUkVDVF9VUkwgIigzKSwgIiBDVVJMT1BUX1BBVEhfQVNfSVMgIigzKSwgIgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9VU0VSQUdFTlQuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVVNFUkFHRU5ULjMKaW5kZXggNGQ3MDM2ZC4uYzc2OWU5NSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9VU0VSQUdFTlQuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1VTRVJBR0VOVC4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVVNFUk5BTUUuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVVNFUk5BTUUuMwppbmRleCA3NTQ2Zjc0Li5lYzYwMDEwIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1VTRVJOQU1FLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9VU0VSTkFNRS4zCkBAIC01LDExICs1LDExIEBACiAuXCIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogLlwiICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAuXCIgKgotLlwiICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKy5cIiAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzMsNyArMzMsNyBAQAogUGFzcyBhIGNoYXIgKiBhcyBwYXJhbWV0ZXIsIHdoaWNoIHNob3VsZCBiZSBwb2ludGluZyB0byB0aGUgemVybyB0ZXJtaW5hdGVkCiB1c2VyIG5hbWUgdG8gdXNlIGZvciB0aGUgdHJhbnNmZXIuCiAKLVxmQkNVUkxPUFRfVVNFUk5BTUUoMylcZlAgc2V0cyB0aGUgdXNlciBuYW1lIHRvIGJlIHVzZWQgaW4gcHJvdG9jb2wKK1xmSUNVUkxPUFRfVVNFUk5BTUUoMylcZlAgc2V0cyB0aGUgdXNlciBuYW1lIHRvIGJlIHVzZWQgaW4gcHJvdG9jb2wKIGF1dGhlbnRpY2F0aW9uLiBZb3Ugc2hvdWxkIG5vdCB1c2UgdGhpcyBvcHRpb24gdG9nZXRoZXIgd2l0aCB0aGUgKG9sZGVyKQogXGZJQ1VSTE9QVF9VU0VSUFdEKDMpXGZQIG9wdGlvbi4KIApkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9VU0VSUFdELjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1VTRVJQV0QuMwppbmRleCAyMmU5MjBmLi4xOTQwNGY2IDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1VTRVJQV0QuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1VTRVJQV0QuMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1VTRV9TU0wuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVVNFX1NTTC4zCmluZGV4IDM0OGYxYjAuLjM3YTIyNGQgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVVNFX1NTTC4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVVNFX1NTTC4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfVkVSQk9TRS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9WRVJCT1NFLjMKaW5kZXggNzMyYjhjNC4uZTZhNmZkMSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9WRVJCT1NFLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9WRVJCT1NFLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9XSUxEQ0FSRE1BVENILjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1dJTERDQVJETUFUQ0guMwppbmRleCBiNTY3MDQ1Li4xY2ExYmVkIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1dJTERDQVJETUFUQ0guMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1dJTERDQVJETUFUQ0guMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC03OCw3ICs3OCw3IEBACiAuU0ggUFJPVE9DT0xTCiBUaGlzIGZlYXR1cmUgaXMgb25seSBzdXBwb3J0ZWQgZm9yIEZUUCBkb3dubG9hZC4KIC5TSCBFWEFNUExFCi1TZWUgaHR0cDovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvZnRwLXdpbGRjYXJkLmh0bWwKK1NlZSBodHRwczovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvZnRwLXdpbGRjYXJkLmh0bWwKIC5TSCBBVkFJTEFCSUxJVFkKIEFkZGVkIGluIDcuMjEuMAogLlNIIFJFVFVSTiBWQUxVRQpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9XUklURURBVEEuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfV1JJVEVEQVRBLjMKaW5kZXggMGI3YTUwMi4uZmRiNTg4NiAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9XUklURURBVEEuMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1dSSVRFREFUQS4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTQ5LDcgKzQ5LDcgQEAKIGludG8gYSBkeW5hbWljYWxseSBncm93aW5nIGFsbG9jYXRlZCBidWZmZXIsIGFuZCB0aGVuIHRoaXMKIFxmSUNVUkxPUFRfV1JJVEVEQVRBKDMpXGZQIGlzIHVzZWQgdG8gcG9pbnQgdG8gYSBzdHJ1Y3Qgb3IgdGhlIGJ1ZmZlciB0byBzdG9yZQogZGF0YSBpbi4gTGlrZSBpbiB0aGUgZ2V0aW5tZW1vcnkgZXhhbXBsZToKLWh0dHA6Ly9jdXJsLmhheHguc2UvbGliY3VybC9jL2dldGlubWVtb3J5Lmh0bWwKK2h0dHBzOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvYy9nZXRpbm1lbW9yeS5odG1sCiAuU0ggQVZBSUxBQklMSVRZCiBBdmFpbGFibGUgaW4gYWxsIGxpYmN1cmwgdmVyc2lvbnMuIFRoaXMgb3B0aW9uIHdhcyBmb3JtZXJseSBrbm93biBhcwogXGZJQ1VSTE9QVF9GSUxFXGZQLCB0aGUgbmFtZSBcZklDVVJMT1BUX1dSSVRFREFUQSgzKVxmUCB3YXMgaW50cm9kdWNlZCBpbgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9XUklURUZVTkNUSU9OLjMgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1dSSVRFRlVOQ1RJT04uMwppbmRleCBmNWE0NWEzLi4yYzc3YTRjIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1dSSVRFRlVOQ1RJT04uMworKysgYi9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1dSSVRFRlVOQ1RJT04uMwpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC03Niw2ICs3Niw2IEBACiAuU0ggRVhBTVBMRQogQSBjb21tb24gdGVjaG5pcXVlIGlzIHRvIHVzZSB0aGlzIGNhbGxiYWNrIHRvIHN0b3JlIHRoZSBpbmNvbWluZyBkYXRhIGludG8gYQogZHluYW1pY2FsbHkgZ3Jvd2luZyBhbGxvY2F0ZWQgYnVmZmVyLiBMaWtlIGluIHRoZSBnZXRpbm1lbW9yeSBleGFtcGxlOgotaHR0cDovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvZ2V0aW5tZW1vcnkuaHRtbAoraHR0cHM6Ly9jdXJsLmhheHguc2UvbGliY3VybC9jL2dldGlubWVtb3J5Lmh0bWwKIC5TSCAiU0VFIEFMU08iCiAuQlIgQ1VSTE9QVF9XUklURURBVEEgIigzKSwgIiBDVVJMT1BUX1JFQURGVU5DVElPTiAiKDMpLCAiCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1hGRVJJTkZPREFUQS4zIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9YRkVSSU5GT0RBVEEuMwppbmRleCBiMmMxNzBmLi5mYzFkZThjIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1hGRVJJTkZPREFUQS4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfWEZFUklORk9EQVRBLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzcsNyArMzcsNyBAQAogLlNIIFBST1RPQ09MUwogQWxsCiAuU0ggRVhBTVBMRQotaHR0cDovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvcHJvZ3Jlc3NmdW5jLmh0bWwKK2h0dHBzOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvYy9wcm9ncmVzc2Z1bmMuaHRtbAogLlNIIEFWQUlMQUJJTElUWQogQWRkZWQgaW4gNy4zMi4wCiAuU0ggUkVUVVJOIFZBTFVFCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1hGRVJJTkZPRlVOQ1RJT04uMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfWEZFUklORk9GVU5DVElPTi4zCmluZGV4IGNhZDgxMTguLjliZDg5ZGIgMTAwNjQ0Ci0tLSBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfWEZFUklORk9GVU5DVElPTi4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfWEZFUklORk9GVU5DVElPTi4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTcyLDcgKzcyLDcgQEAKIC5TSCBQUk9UT0NPTFMKIEFsbAogLlNIIEVYQU1QTEUKLWh0dHA6Ly9jdXJsLmhheHguc2UvbGliY3VybC9jL3Byb2dyZXNzZnVuYy5odG1sCitodHRwczovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvcHJvZ3Jlc3NmdW5jLmh0bWwKIC5TSCBBVkFJTEFCSUxJVFkKIEFkZGVkIGluIDcuMzIuMC4gVGhpcyBjYWxsYmFjayByZXBsYWNlcyBcZklDVVJMT1BUX1BST0dSRVNTRlVOQ1RJT04oMylcZlAKIC5TSCBSRVRVUk4gVkFMVUUKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfWE9BVVRIMl9CRUFSRVIuMyBiL2RvY3MvbGliY3VybC9vcHRzL0NVUkxPUFRfWE9BVVRIMl9CRUFSRVIuMwppbmRleCAyNjQ0Yzg4Li5iNmMxZmVlIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy9DVVJMT1BUX1hPQVVUSDJfQkVBUkVSLjMKKysrIGIvZG9jcy9saWJjdXJsL29wdHMvQ1VSTE9QVF9YT0FVVEgyX0JFQVJFUi4zCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbGliY3VybC9vcHRzL01ha2VmaWxlLmFtIGIvZG9jcy9saWJjdXJsL29wdHMvTWFrZWZpbGUuYW0KaW5kZXggNTUxNzgxMS4uNDk2NzRkNSAxMDA2NDQKLS0tIGEvZG9jcy9saWJjdXJsL29wdHMvTWFrZWZpbGUuYW0KKysrIGIvZG9jcy9saWJjdXJsL29wdHMvTWFrZWZpbGUuYW0KQEAgLTUsMTEgKzUsMTEgQEAKICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAjCi0jIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisjIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAjCiAjIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAjCiAjIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTIyLDMxOCArMjIsODcxIEBACiAKIEFVVE9NQUtFX09QVElPTlMgPSBmb3JlaWduIG5vLWRlcGVuZGVuY2llcwogCi1tYW5fTUFOUyA9IENVUkxPUFRfQUNDRVBUX0VOQ09ESU5HLjMgQ1VSTE9QVF9BQ0NFUFRUSU1FT1VUX01TLjMJCVwKLSBDVVJMT1BUX0FERFJFU1NfU0NPUEUuMyBDVVJMT1BUX0FQUEVORC4zIENVUkxPUFRfQVVUT1JFRkVSRVIuMwkJXAotIENVUkxPUFRfQlVGRkVSU0laRS4zIENVUkxPUFRfQ0FJTkZPLjMgQ1VSTE9QVF9DQVBBVEguMwkJCVwKLSBDVVJMT1BUX0NFUlRJTkZPLjMgQ1VSTE9QVF9DSFVOS19CR05fRlVOQ1RJT04uMyBDVVJMT1BUX0NIVU5LX0RBVEEuMwlcCi0gQ1VSTE9QVF9DSFVOS19FTkRfRlVOQ1RJT04uMyBDVVJMT1BUX0NMT1NFU09DS0VUREFUQS4zCQkJXAotIENVUkxPUFRfQ0xPU0VTT0NLRVRGVU5DVElPTi4zIENVUkxPUFRfQ09OTkVDVF9PTkxZLjMJCQlcCi0gQ1VSTE9QVF9DT05ORUNUVElNRU9VVC4zIENVUkxPUFRfQ09OTkVDVFRJTUVPVVRfTVMuMwkJCVwKLSBDVVJMT1BUX0NPTlZfRlJPTV9ORVRXT1JLX0ZVTkNUSU9OLjMgQ1VSTE9QVF9DT05WX0ZST01fVVRGOF9GVU5DVElPTi4zCVwKLSBDVVJMT1BUX0NPTlZfVE9fTkVUV09SS19GVU5DVElPTi4zIENVUkxPUFRfQ09PS0lFLjMJCQlcCi0gQ1VSTE9QVF9DT09LSUVGSUxFLjMgQ1VSTE9QVF9DT09LSUVKQVIuMyBDVVJMT1BUX0NPT0tJRUxJU1QuMwkJXAotIENVUkxPUFRfQ09PS0lFU0VTU0lPTi4zIENVUkxPUFRfQ09QWVBPU1RGSUVMRFMuMyBDVVJMT1BUX0NSTEYuMwlcCi0gQ1VSTE9QVF9DUkxGSUxFLjMgQ1VSTE9QVF9DVVNUT01SRVFVRVNULjMgQ1VSTE9QVF9ERUJVR0RBVEEuMwkJXAotIENVUkxPUFRfREVCVUdGVU5DVElPTi4zIENVUkxPUFRfRElSTElTVE9OTFkuMwkJCQlcCi0gQ1VSTE9QVF9ETlNfQ0FDSEVfVElNRU9VVC4zIENVUkxPUFRfRE5TX0lOVEVSRkFDRS4zCQkJXAotIENVUkxPUFRfRE5TX0xPQ0FMX0lQNC4zIENVUkxPUFRfRE5TX0xPQ0FMX0lQNi4zIENVUkxPUFRfRE5TX1NFUlZFUlMuMwlcCi0gQ1VSTE9QVF9ETlNfVVNFX0dMT0JBTF9DQUNIRS4zIENVUkxPUFRfRUdEU09DS0VULjMJCQlcCi0gQ1VSTE9QVF9FUlJPUkJVRkZFUi4zIENVUkxPUFRfRVhQRUNUXzEwMF9USU1FT1VUX01TLjMJCQlcCi0gQ1VSTE9QVF9GQUlMT05FUlJPUi4zIENVUkxPUFRfRklMRVRJTUUuMyBDVVJMT1BUX0ZOTUFUQ0hfREFUQS4zCVwKLSBDVVJMT1BUX0ZOTUFUQ0hfRlVOQ1RJT04uMyBDVVJMT1BUX0ZPTExPV0xPQ0FUSU9OLjMJCQlcCi0gQ1VSTE9QVF9GT1JCSURfUkVVU0UuMyBDVVJMT1BUX0ZSRVNIX0NPTk5FQ1QuMyBDVVJMT1BUX0ZUUF9BQ0NPVU5ULjMJXAotIENVUkxPUFRfRlRQX0FMVEVSTkFUSVZFX1RPX1VTRVIuMyBDVVJMT1BUX0ZUUF9DUkVBVEVfTUlTU0lOR19ESVJTLjMJXAotIENVUkxPUFRfRlRQX0ZJTEVNRVRIT0QuMyBDVVJMT1BUX0ZUUFBPUlQuMwkJCQlcCi0gQ1VSTE9QVF9GVFBfUkVTUE9OU0VfVElNRU9VVC4zIENVUkxPUFRfRlRQX1NLSVBfUEFTVl9JUC4zCQlcCi0gQ1VSTE9QVF9GVFBTU0xBVVRILjMgQ1VSTE9QVF9GVFBfU1NMX0NDQy4zIENVUkxPUFRfRlRQX1VTRV9FUFJULjMJXAotIENVUkxPUFRfRlRQX1VTRV9FUFNWLjMgQ1VSTE9QVF9GVFBfVVNFX1BSRVQuMwkJCQlcCi0gQ1VSTE9QVF9HU1NBUElfREVMRUdBVElPTi4zIENVUkxPUFRfSEVBREVSLjMgQ1VSTE9QVF9IRUFERVJEQVRBLjMJXAotIENVUkxPUFRfSEVBREVSRlVOQ1RJT04uMyBDVVJMT1BUX0hFQURFUk9QVC4zIENVUkxPUFRfSFRUUDIwMEFMSUFTRVMuMwlcCi0gQ1VSTE9QVF9IVFRQQVVUSC4zIENVUkxPUFRfSFRUUF9DT05URU5UX0RFQ09ESU5HLjMgQ1VSTE9QVF9IVFRQR0VULjMJXAotIENVUkxPUFRfSFRUUEhFQURFUi4zIENVUkxPUFRfSFRUUFBPU1QuMyBDVVJMT1BUX0hUVFBQUk9YWVRVTk5FTC4zCVwKLSBDVVJMT1BUX0hUVFBfVFJBTlNGRVJfREVDT0RJTkcuMyBDVVJMT1BUX0hUVFBfVkVSU0lPTi4zCQlcCi0gQ1VSTE9QVF9JR05PUkVfQ09OVEVOVF9MRU5HVEguMyBDVVJMT1BUX0lORklMRVNJWkUuMwkJCVwKLSBDVVJMT1BUX0lORklMRVNJWkVfTEFSR0UuMyBDVVJMT1BUX0lOVEVSRkFDRS4zCQkJCVwKLSBDVVJMT1BUX0lOVEVSTEVBVkVEQVRBLjMgQ1VSTE9QVF9JTlRFUkxFQVZFRlVOQ1RJT04uMwkJCVwKLSBDVVJMT1BUX0lPQ1RMREFUQS4zIENVUkxPUFRfSU9DVExGVU5DVElPTi4zIENVUkxPUFRfSVBSRVNPTFZFLjMJXAotIENVUkxPUFRfSVNTVUVSQ0VSVC4zIENVUkxPUFRfS0VZUEFTU1dELjMgQ1VSTE9QVF9LUkJMRVZFTC4zCQlcCi0gQ1VSTE9QVF9MT0NBTFBPUlQuMyBDVVJMT1BUX0xPQ0FMUE9SVFJBTkdFLjMgQ1VSTE9QVF9MT0dJTl9PUFRJT05TLjMJXAotIENVUkxPUFRfTE9XX1NQRUVEX0xJTUlULjMgQ1VSTE9QVF9MT1dfU1BFRURfVElNRS4zIENVUkxPUFRfTUFJTF9BVVRILjMJXAotIENVUkxPUFRfTUFJTF9GUk9NLjMgQ1VSTE9QVF9NQUlMX1JDUFQuMyBDVVJMT1BUX01BWENPTk5FQ1RTLjMJCVwKLSBDVVJMT1BUX01BWEZJTEVTSVpFLjMgQ1VSTE9QVF9NQVhGSUxFU0laRV9MQVJHRS4zCQkJXAotIENVUkxPUFRfTUFYX1JFQ1ZfU1BFRURfTEFSR0UuMyBDVVJMT1BUX01BWFJFRElSUy4zCQkJXAotIENVUkxPUFRfTUFYX1NFTkRfU1BFRURfTEFSR0UuMyBDVVJMT1BUX05FVFJDLjMgQ1VSTE9QVF9ORVRSQ19GSUxFLjMJXAotIENVUkxPUFRfTkVXX0RJUkVDVE9SWV9QRVJNUy4zIENVUkxPUFRfTkVXX0ZJTEVfUEVSTVMuMwkJCVwKLSBDVVJMT1BUX05PQk9EWS4zIENVUkxPUFRfTk9QUk9HUkVTUy4zIENVUkxPUFRfTk9QUk9YWS4zCQlcCi0gQ1VSTE9QVF9OT1NJR05BTC4zIENVUkxPUFRfT1BFTlNPQ0tFVERBVEEuMwkJCQlcCi0gQ1VSTE9QVF9PUEVOU09DS0VURlVOQ1RJT04uMyBDVVJMT1BUX1BBU1NXT1JELjMJCQlcCi0gQ1VSTE9QVF9QSU5ORURQVUJMSUNLRVkuMyBDVVJMT1BUX1BPUlQuMyBDVVJMT1BUX1BPU1QuMwkJXAotIENVUkxPUFRfUE9TVEZJRUxEUy4zIENVUkxPUFRfUE9TVEZJRUxEU0laRS4zCQkJCVwKLSBDVVJMT1BUX1BPU1RGSUVMRFNJWkVfTEFSR0UuMyBDVVJMT1BUX1BPU1RRVU9URS4zIENVUkxPUFRfUE9TVFJFRElSLjMJXAotIENVUkxPUFRfUFJFUVVPVEUuMyBDVVJMT1BUX1BSSVZBVEUuMyBDVVJMT1BUX1BST0dSRVNTREFUQS4zCQlcCi0gQ1VSTE9QVF9QUk9HUkVTU0ZVTkNUSU9OLjMgQ1VSTE9QVF9QUk9UT0NPTFMuMyBDVVJMT1BUX1BST1hZLjMJCVwKLSBDVVJMT1BUX1BST1hZQVVUSC4zIENVUkxPUFRfUFJPWFlIRUFERVIuMyBDVVJMT1BUX1BST1hZUEFTU1dPUkQuMwlcCi0gQ1VSTE9QVF9QUk9YWVBPUlQuMyBDVVJMT1BUX1BST1hZX1RSQU5TRkVSX01PREUuMyBDVVJMT1BUX1BST1hZVFlQRS4zCVwKLSBDVVJMT1BUX1BST1hZVVNFUk5BTUUuMyBDVVJMT1BUX1BST1hZVVNFUlBXRC4zIENVUkxPUFRfUFVULjMJCVwKLSBDVVJMT1BUX1FVT1RFLjMgQ1VSTE9QVF9SQU5ET01fRklMRS4zIENVUkxPUFRfUkFOR0UuMwkJCVwKLSBDVVJMT1BUX1JFQUREQVRBLjMgQ1VSTE9QVF9SRUFERlVOQ1RJT04uMyBDVVJMT1BUX1JFRElSX1BST1RPQ09MUy4zCVwKLSBDVVJMT1BUX1JFRkVSRVIuMyBDVVJMT1BUX1JFU09MVkUuMyBDVVJMT1BUX1JFU1VNRV9GUk9NLjMJCVwKLSBDVVJMT1BUX1JFU1VNRV9GUk9NX0xBUkdFLjMgQ1VSTE9QVF9SVFNQX0NMSUVOVF9DU0VRLjMJCQlcCi0gQ1VSTE9QVF9SVFNQX1JFUVVFU1QuMyBDVVJMT1BUX1JUU1BfU0VSVkVSX0NTRVEuMwkJCVwKLSBDVVJMT1BUX1JUU1BfU0VTU0lPTl9JRC4zIENVUkxPUFRfUlRTUF9TVFJFQU1fVVJJLjMJCQlcCi0gQ1VSTE9QVF9SVFNQX1RSQU5TUE9SVC4zIENVUkxPUFRfU0FTTF9JUi4zIENVUkxPUFRfU0VFS0RBVEEuMwkJXAotIENVUkxPUFRfU0VFS0ZVTkNUSU9OLjMgQ1VSTE9QVF9TSEFSRS4zIENVUkxPUFRfU09DS09QVERBVEEuMwkJXAotIENVUkxPUFRfU09DS09QVEZVTkNUSU9OLjMgQ1VSTE9QVF9TT0NLUzVfR1NTQVBJX05FQy4zCQkJXAotIENVUkxPUFRfU09DS1M1X0dTU0FQSV9TRVJWSUNFLjMgQ1VSTE9QVF9TU0hfQVVUSF9UWVBFUy4zCQlcCi0gQ1VSTE9QVF9TU0hfSE9TVF9QVUJMSUNfS0VZX01ENS4zIENVUkxPUFRfU1NIX0tFWURBVEEuMwkJXAotIENVUkxPUFRfU1NIX0tFWUZVTkNUSU9OLjMgQ1VSTE9QVF9TU0hfS05PV05IT1NUUy4zCQkJXAotIENVUkxPUFRfU1NIX1BSSVZBVEVfS0VZRklMRS4zIENVUkxPUFRfU1NIX1BVQkxJQ19LRVlGSUxFLjMJCVwKLSBDVVJMT1BUX1NTTENFUlQuMyBDVVJMT1BUX1NTTENFUlRUWVBFLjMgQ1VSTE9QVF9TU0xfQ0lQSEVSX0xJU1QuMwlcCi0gQ1VSTE9QVF9TU0xfQ1RYX0RBVEEuMyBDVVJMT1BUX1NTTF9DVFhfRlVOQ1RJT04uMwkJCVwKLSBDVVJMT1BUX1NTTF9FTkFCTEVfQUxQTi4zIENVUkxPUFRfU1NMX0VOQUJMRV9OUE4uMyBDVVJMT1BUX1NTTEVOR0lORS4zCVwKLSBDVVJMT1BUX1NTTEVOR0lORV9ERUZBVUxULjMgQ1VSTE9QVF9TU0xfRkFMU0VTVEFSVC4zIENVUkxPUFRfU1NMS0VZLjMJXAotIENVUkxPUFRfU1NMS0VZVFlQRS4zIENVUkxPUFRfU1NMX09QVElPTlMuMwkJCQlcCi0gQ1VSTE9QVF9TU0xfU0VTU0lPTklEX0NBQ0hFLjMgQ1VSTE9QVF9TU0xfVkVSSUZZSE9TVC4zCQkJXAotIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIuMyBDVVJMT1BUX1NTTF9WRVJJRllTVEFUVVMuMwkJCVwKLSBDVVJMT1BUX1NTTFZFUlNJT04uMyBDVVJMT1BUX1NUREVSUi4zIENVUkxPUFRfVENQX0tFRVBBTElWRS4zCQlcCi0gQ1VSTE9QVF9UQ1BfS0VFUElETEUuMyBDVVJMT1BUX1RDUF9LRUVQSU5UVkwuMyBDVVJMT1BUX1RDUF9OT0RFTEFZLjMJXAotIENVUkxPUFRfVEVMTkVUT1BUSU9OUy4zIENVUkxPUFRfVEZUUF9CTEtTSVpFLjMgQ1VSTE9QVF9USU1FQ09ORElUSU9OLjMJXAotIENVUkxPUFRfVElNRU9VVC4zIENVUkxPUFRfVElNRU9VVF9NUy4zIENVUkxPUFRfVElNRVZBTFVFLjMJCVwKLSBDVVJMT1BUX1RMU0FVVEhfUEFTU1dPUkQuMyBDVVJMT1BUX1RMU0FVVEhfVFlQRS4zCQkJXAotIENVUkxPUFRfVExTQVVUSF9VU0VSTkFNRS4zIENVUkxPUFRfVFJBTlNGRVJfRU5DT0RJTkcuMwkJCVwKLSBDVVJMT1BUX1RSQU5TRkVSVEVYVC4zIENVUkxPUFRfVU5SRVNUUklDVEVEX0FVVEguMyBDVVJMT1BUX1VQTE9BRC4zCVwKLSBDVVJMT1BUX1VSTC4zIENVUkxPUFRfVVNFUkFHRU5ULjMgQ1VSTE9QVF9VU0VSTkFNRS4zIENVUkxPUFRfVVNFUlBXRC4zCVwKLSBDVVJMT1BUX1VTRV9TU0wuMyBDVVJMT1BUX1ZFUkJPU0UuMyBDVVJMT1BUX1dJTERDQVJETUFUQ0guMwkJXAotIENVUkxPUFRfV1JJVEVEQVRBLjMgQ1VSTE9QVF9XUklURUZVTkNUSU9OLjMgQ1VSTE9QVF9YRkVSSU5GT0RBVEEuMwlcCi0gQ1VSTE9QVF9YRkVSSU5GT0ZVTkNUSU9OLjMgQ1VSTE9QVF9YT0FVVEgyX0JFQVJFUi4zCQkJXAotIENVUkxNT1BUX0NIVU5LX0xFTkdUSF9QRU5BTFRZX1NJWkUuMwkJCQkJXAotIENVUkxNT1BUX0NPTlRFTlRfTEVOR1RIX1BFTkFMVFlfU0laRS4zIENVUkxNT1BUX01BWENPTk5FQ1RTLjMJCVwKLSBDVVJMTU9QVF9NQVhfSE9TVF9DT05ORUNUSU9OUy4zIENVUkxNT1BUX01BWF9QSVBFTElORV9MRU5HVEguMwkJXAotIENVUkxNT1BUX01BWF9UT1RBTF9DT05ORUNUSU9OUy4zIENVUkxNT1BUX1BJUEVMSU5JTkcuMwkJCVwKLSBDVVJMTU9QVF9QSVBFTElOSU5HX1NFUlZFUl9CTC4zIENVUkxNT1BUX1BJUEVMSU5JTkdfU0lURV9CTC4zCQlcCi0gQ1VSTE1PUFRfU09DS0VUREFUQS4zIENVUkxNT1BUX1NPQ0tFVEZVTkNUSU9OLjMgQ1VSTE1PUFRfVElNRVJEQVRBLjMJXAotIENVUkxNT1BUX1RJTUVSRlVOQ1RJT04uMyBDVVJMT1BUX1VOSVhfU09DS0VUX1BBVEguMwkJCVwKLSBDVVJMT1BUX1BBVEhfQVNfSVMuMyBDVVJMT1BUX1BST1hZX1NFUlZJQ0VfTkFNRS4zCQkJXAotIENVUkxPUFRfU0VSVklDRV9OQU1FLjMgQ1VSTE9QVF9QSVBFV0FJVC4zCittYW5fTUFOUyA9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fQUNUSVZFU09DS0VULjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fQVBQQ09OTkVDVF9USU1FLjMgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fQ0VSVElORk8uMyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fQ09ORElUSU9OX1VOTUVULjMgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fQ09OTkVDVF9USU1FLjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fQ09OVEVOVF9MRU5HVEhfRE9XTkxPQUQuMyAgICAgICAgICAgICBcCisgQ1VSTElORk9fQ09OVEVOVF9MRU5HVEhfVVBMT0FELjMgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fQ09OVEVOVF9UWVBFLjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fQ09PS0lFTElTVC4zICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fRUZGRUNUSVZFX1VSTC4zICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fRklMRVRJTUUuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fRlRQX0VOVFJZX1BBVEguMyAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fSEVBREVSX1NJWkUuMyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fSFRUUEFVVEhfQVZBSUwuMyAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fSFRUUF9DT05ORUNUQ09ERS4zICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fTEFTVFNPQ0tFVC4zICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fTE9DQUxfSVAuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fTE9DQUxfUE9SVC4zICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fTkFNRUxPT0tVUF9USU1FLjMgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fTlVNX0NPTk5FQ1RTLjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fT1NfRVJSTk8uMyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fUFJFVFJBTlNGRVJfVElNRS4zICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fUFJJTUFSWV9JUC4zICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fUFJJTUFSWV9QT1JULjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fUFJJVkFURS4zICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fUFJPWFlBVVRIX0FWQUlMLjMgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fUkVESVJFQ1RfQ09VTlQuMyAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fUkVESVJFQ1RfVElNRS4zICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fUkVESVJFQ1RfVVJMLjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fUkVRVUVTVF9TSVpFLjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fUkVTUE9OU0VfQ09ERS4zICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fUlRTUF9DTElFTlRfQ1NFUS4zICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fUlRTUF9DU0VRX1JFQ1YuMyAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fUlRTUF9TRVJWRVJfQ1NFUS4zICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fUlRTUF9TRVNTSU9OX0lELjMgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fU0laRV9ET1dOTE9BRC4zICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fU0laRV9VUExPQUQuMyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fU1BFRURfRE9XTkxPQUQuMyAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fU1BFRURfVVBMT0FELjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fU1NMX0VOR0lORVMuMyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fU1NMX1ZFUklGWVJFU1VMVC4zICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fU1RBUlRUUkFOU0ZFUl9USU1FLjMgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fVExTX1NFU1NJT04uMyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fVExTX1NTTF9QVFIuMyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fVE9UQUxfVElNRS4zICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE1PUFRfQ0hVTktfTEVOR1RIX1BFTkFMVFlfU0laRS4zICAgICAgICAgICBcCisgQ1VSTE1PUFRfQ09OVEVOVF9MRU5HVEhfUEVOQUxUWV9TSVpFLjMgICAgICAgICBcCisgQ1VSTE1PUFRfTUFYQ09OTkVDVFMuMyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE1PUFRfTUFYX0hPU1RfQ09OTkVDVElPTlMuMyAgICAgICAgICAgICAgICBcCisgQ1VSTE1PUFRfTUFYX1BJUEVMSU5FX0xFTkdUSC4zICAgICAgICAgICAgICAgICBcCisgQ1VSTE1PUFRfTUFYX1RPVEFMX0NPTk5FQ1RJT05TLjMgICAgICAgICAgICAgICBcCisgQ1VSTE1PUFRfUElQRUxJTklORy4zICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE1PUFRfUElQRUxJTklOR19TRVJWRVJfQkwuMyAgICAgICAgICAgICAgICBcCisgQ1VSTE1PUFRfUElQRUxJTklOR19TSVRFX0JMLjMgICAgICAgICAgICAgICAgICBcCisgQ1VSTE1PUFRfUFVTSERBVEEuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE1PUFRfUFVTSEZVTkNUSU9OLjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE1PUFRfU09DS0VUREFUQS4zICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE1PUFRfU09DS0VURlVOQ1RJT04uMyAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE1PUFRfVElNRVJEQVRBLjMgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE1PUFRfVElNRVJGVU5DVElPTi4zICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9BQ0NFUFRUSU1FT1VUX01TLjMgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9BQ0NFUFRfRU5DT0RJTkcuMyAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9BRERSRVNTX1NDT1BFLjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9BUFBFTkQuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9BVVRPUkVGRVJFUi4zICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9CVUZGRVJTSVpFLjMgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DQUlORk8uMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DQVBBVEguMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DRVJUSU5GTy4zICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DSFVOS19CR05fRlVOQ1RJT04uMyAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DSFVOS19EQVRBLjMgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DSFVOS19FTkRfRlVOQ1RJT04uMyAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DTE9TRVNPQ0tFVERBVEEuMyAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DTE9TRVNPQ0tFVEZVTkNUSU9OLjMgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DT05ORUNUVElNRU9VVC4zICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DT05ORUNUVElNRU9VVF9NUy4zICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DT05ORUNUX09OTFkuMyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DT05ORUNUX1RPLjMgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DT05WX0ZST01fTkVUV09SS19GVU5DVElPTi4zICAgICAgICAgICBcCisgQ1VSTE9QVF9DT05WX0ZST01fVVRGOF9GVU5DVElPTi4zICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DT05WX1RPX05FVFdPUktfRlVOQ1RJT04uMyAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DT09LSUUuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DT09LSUVGSUxFLjMgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DT09LSUVKQVIuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DT09LSUVMSVNULjMgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DT09LSUVTRVNTSU9OLjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DT1BZUE9TVEZJRUxEUy4zICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DUkxGLjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DUkxGSUxFLjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DVVNUT01SRVFVRVNULjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9ERUJVR0RBVEEuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9ERUJVR0ZVTkNUSU9OLjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9ERUZBVUxUX1BST1RPQ09MLjMgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9ESVJMSVNUT05MWS4zICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9ETlNfQ0FDSEVfVElNRU9VVC4zICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9ETlNfSU5URVJGQUNFLjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9ETlNfTE9DQUxfSVA0LjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9ETlNfTE9DQUxfSVA2LjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9ETlNfU0VSVkVSUy4zICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9ETlNfVVNFX0dMT0JBTF9DQUNIRS4zICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9FR0RTT0NLRVQuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9FUlJPUkJVRkZFUi4zICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9FWFBFQ1RfMTAwX1RJTUVPVVRfTVMuMyAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GQUlMT05FUlJPUi4zICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GSUxFVElNRS4zICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GTk1BVENIX0RBVEEuMyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GTk1BVENIX0ZVTkNUSU9OLjMgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GT0xMT1dMT0NBVElPTi4zICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GT1JCSURfUkVVU0UuMyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GUkVTSF9DT05ORUNULjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GVFBQT1JULjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GVFBTU0xBVVRILjMgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GVFBfQUNDT1VOVC4zICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GVFBfQUxURVJOQVRJVkVfVE9fVVNFUi4zICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GVFBfQ1JFQVRFX01JU1NJTkdfRElSUy4zICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GVFBfRklMRU1FVEhPRC4zICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GVFBfUkVTUE9OU0VfVElNRU9VVC4zICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GVFBfU0tJUF9QQVNWX0lQLjMgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GVFBfU1NMX0NDQy4zICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GVFBfVVNFX0VQUlQuMyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GVFBfVVNFX0VQU1YuMyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GVFBfVVNFX1BSRVQuMyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9HU1NBUElfREVMRUdBVElPTi4zICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9IRUFERVIuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9IRUFERVJEQVRBLjMgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9IRUFERVJGVU5DVElPTi4zICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9IRUFERVJPUFQuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9IVFRQMjAwQUxJQVNFUy4zICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9IVFRQQVVUSC4zICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9IVFRQR0VULjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9IVFRQSEVBREVSLjMgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9IVFRQUE9TVC4zICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9IVFRQUFJPWFlUVU5ORUwuMyAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9IVFRQX0NPTlRFTlRfREVDT0RJTkcuMyAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9IVFRQX1RSQU5TRkVSX0RFQ09ESU5HLjMgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9IVFRQX1ZFUlNJT04uMyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9JR05PUkVfQ09OVEVOVF9MRU5HVEguMyAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9JTkZJTEVTSVpFLjMgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9JTkZJTEVTSVpFX0xBUkdFLjMgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9JTlRFUkZBQ0UuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9JTlRFUkxFQVZFREFUQS4zICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9JTlRFUkxFQVZFRlVOQ1RJT04uMyAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9JT0NUTERBVEEuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9JT0NUTEZVTkNUSU9OLjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9JUFJFU09MVkUuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9JU1NVRVJDRVJULjMgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9LRVlQQVNTV0QuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9LUkJMRVZFTC4zICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9MT0NBTFBPUlQuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9MT0NBTFBPUlRSQU5HRS4zICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9MT0dJTl9PUFRJT05TLjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9MT1dfU1BFRURfTElNSVQuMyAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9MT1dfU1BFRURfVElNRS4zICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9NQUlMX0FVVEguMyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9NQUlMX0ZST00uMyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9NQUlMX1JDUFQuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9NQVhDT05ORUNUUy4zICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9NQVhGSUxFU0laRS4zICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9NQVhGSUxFU0laRV9MQVJHRS4zICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9NQVhSRURJUlMuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9NQVhfUkVDVl9TUEVFRF9MQVJHRS4zICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9NQVhfU0VORF9TUEVFRF9MQVJHRS4zICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9ORVRSQy4zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9ORVRSQ19GSUxFLjMgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9ORVdfRElSRUNUT1JZX1BFUk1TLjMgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9ORVdfRklMRV9QRVJNUy4zICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9OT0JPRFkuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9OT1BST0dSRVNTLjMgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9OT1BST1hZLjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9OT1NJR05BTC4zICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9PUEVOU09DS0VUREFUQS4zICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9PUEVOU09DS0VURlVOQ1RJT04uMyAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QQVNTV09SRC4zICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QQVRIX0FTX0lTLjMgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QSU5ORURQVUJMSUNLRVkuMyAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QSVBFV0FJVC4zICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QT1JULjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QT1NULjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QT1NURklFTERTLjMgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QT1NURklFTERTSVpFLjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QT1NURklFTERTSVpFX0xBUkdFLjMgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QT1NUUVVPVEUuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QT1NUUkVESVIuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUkVRVU9URS4zICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUklWQVRFLjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUk9HUkVTU0RBVEEuMyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUk9HUkVTU0ZVTkNUSU9OLjMgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUk9UT0NPTFMuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUk9YWS4zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUk9YWUFVVEguMyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUk9YWUhFQURFUi4zICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUk9YWVBBU1NXT1JELjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUk9YWVBPUlQuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUk9YWVRZUEUuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUk9YWVVTRVJOQU1FLjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUk9YWVVTRVJQV0QuMyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUk9YWV9TRVJWSUNFX05BTUUuMyAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUk9YWV9UUkFOU0ZFUl9NT0RFLjMgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QVVQuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9RVU9URS4zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SQU5ET01fRklMRS4zICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SQU5HRS4zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SRUFEREFUQS4zICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SRUFERlVOQ1RJT04uMyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SRURJUl9QUk9UT0NPTFMuMyAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SRUZFUkVSLjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SRVNPTFZFLjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SRVNVTUVfRlJPTS4zICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SRVNVTUVfRlJPTV9MQVJHRS4zICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SVFNQX0NMSUVOVF9DU0VRLjMgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SVFNQX1JFUVVFU1QuMyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SVFNQX1NFUlZFUl9DU0VRLjMgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SVFNQX1NFU1NJT05fSUQuMyAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SVFNQX1NUUkVBTV9VUkkuMyAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SVFNQX1RSQU5TUE9SVC4zICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TQVNMX0lSLjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TRUVLREFUQS4zICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TRUVLRlVOQ1RJT04uMyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TRVJWSUNFX05BTUUuMyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TSEFSRS4zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TT0NLT1BUREFUQS4zICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TT0NLT1BURlVOQ1RJT04uMyAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TT0NLUzVfR1NTQVBJX05FQy4zICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TT0NLUzVfR1NTQVBJX1NFUlZJQ0UuMyAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0hfQVVUSF9UWVBFUy4zICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0hfSE9TVF9QVUJMSUNfS0VZX01ENS4zICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0hfS0VZREFUQS4zICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0hfS0VZRlVOQ1RJT04uMyAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0hfS05PV05IT1NUUy4zICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0hfUFJJVkFURV9LRVlGSUxFLjMgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0hfUFVCTElDX0tFWUZJTEUuMyAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xDRVJULjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xDRVJUVFlQRS4zICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xFTkdJTkUuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xFTkdJTkVfREVGQVVMVC4zICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xLRVkuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xLRVlUWVBFLjMgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xWRVJTSU9OLjMgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xfQ0lQSEVSX0xJU1QuMyAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xfQ1RYX0RBVEEuMyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xfQ1RYX0ZVTkNUSU9OLjMgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xfRU5BQkxFX0FMUE4uMyAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xfRU5BQkxFX05QTi4zICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xfRkFMU0VTVEFSVC4zICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xfT1BUSU9OUy4zICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xfU0VTU0lPTklEX0NBQ0hFLjMgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xfVkVSSUZZSE9TVC4zICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUi4zICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xfVkVSSUZZU1RBVFVTLjMgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TVERFUlIuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TVFJFQU1fREVQRU5EUy4zICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TVFJFQU1fREVQRU5EU19FLjMgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TVFJFQU1fV0VJR0hULjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9UQ1BfRkFTVE9QRU4uMyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9UQ1BfS0VFUEFMSVZFLjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9UQ1BfS0VFUElETEUuMyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9UQ1BfS0VFUElOVFZMLjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9UQ1BfTk9ERUxBWS4zICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9URUxORVRPUFRJT05TLjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9URlRQX0JMS1NJWkUuMyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9URlRQX05PX09QVElPTlMuMyAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9USU1FQ09ORElUSU9OLjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9USU1FT1VULjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9USU1FT1VUX01TLjMgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9USU1FVkFMVUUuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9UTFNBVVRIX1BBU1NXT1JELjMgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9UTFNBVVRIX1RZUEUuMyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9UTFNBVVRIX1VTRVJOQU1FLjMgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9UUkFOU0ZFUlRFWFQuMyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9UUkFOU0ZFUl9FTkNPRElORy4zICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9VTklYX1NPQ0tFVF9QQVRILjMgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9VTlJFU1RSSUNURURfQVVUSC4zICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9VUExPQUQuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9VUkwuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9VU0VSQUdFTlQuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9VU0VSTkFNRS4zICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9VU0VSUFdELjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9VU0VfU1NMLjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9WRVJCT1NFLjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9XSUxEQ0FSRE1BVENILjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9XUklURURBVEEuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9XUklURUZVTkNUSU9OLjMgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9YRkVSSU5GT0RBVEEuMyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9YRkVSSU5GT0ZVTkNUSU9OLjMgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9YT0FVVEgyX0JFQVJFUi4zCiAKLUhUTUxQQUdFUyA9IENVUkxPUFRfQUNDRVBUX0VOQ09ESU5HLmh0bWwgQ1VSTE9QVF9BQ0NFUFRUSU1FT1VUX01TLmh0bWwJXAotIENVUkxPUFRfQUREUkVTU19TQ09QRS5odG1sIENVUkxPUFRfQVBQRU5ELmh0bWwJCQkJXAotIENVUkxPUFRfQVVUT1JFRkVSRVIuaHRtbCBDVVJMT1BUX0JVRkZFUlNJWkUuaHRtbCBDVVJMT1BUX0NBSU5GTy5odG1sCVwKLSBDVVJMT1BUX0NBUEFUSC5odG1sIENVUkxPUFRfQ0VSVElORk8uaHRtbAkJCQlcCi0gQ1VSTE9QVF9DSFVOS19CR05fRlVOQ1RJT04uaHRtbCBDVVJMT1BUX0NIVU5LX0RBVEEuaHRtbAkJXAotIENVUkxPUFRfQ0hVTktfRU5EX0ZVTkNUSU9OLmh0bWwgQ1VSTE9QVF9DTE9TRVNPQ0tFVERBVEEuaHRtbAkJXAotIENVUkxPUFRfQ0xPU0VTT0NLRVRGVU5DVElPTi5odG1sIENVUkxPUFRfQ09OTkVDVF9PTkxZLmh0bWwJCVwKLSBDVVJMT1BUX0NPTk5FQ1RUSU1FT1VULmh0bWwgQ1VSTE9QVF9DT05ORUNUVElNRU9VVF9NUy5odG1sCQlcCi0gQ1VSTE9QVF9DT05WX0ZST01fTkVUV09SS19GVU5DVElPTi5odG1sCQkJCVwKLSBDVVJMT1BUX0NPTlZfRlJPTV9VVEY4X0ZVTkNUSU9OLmh0bWwJCQkJCVwKLSBDVVJMT1BUX0NPTlZfVE9fTkVUV09SS19GVU5DVElPTi5odG1sIENVUkxPUFRfQ09PS0lFLmh0bWwJCVwKLSBDVVJMT1BUX0NPT0tJRUZJTEUuaHRtbCBDVVJMT1BUX0NPT0tJRUpBUi5odG1sIENVUkxPUFRfQ09PS0lFTElTVC5odG1sCVwKLSBDVVJMT1BUX0NPT0tJRVNFU1NJT04uaHRtbCBDVVJMT1BUX0NPUFlQT1NURklFTERTLmh0bWwJCQlcCi0gQ1VSTE9QVF9DUkxGLmh0bWwgQ1VSTE9QVF9DUkxGSUxFLmh0bWwgQ1VSTE9QVF9DVVNUT01SRVFVRVNULmh0bWwJXAotIENVUkxPUFRfREVCVUdEQVRBLmh0bWwgQ1VSTE9QVF9ERUJVR0ZVTkNUSU9OLmh0bWwJCQlcCi0gQ1VSTE9QVF9ESVJMSVNUT05MWS5odG1sIENVUkxPUFRfRE5TX0NBQ0hFX1RJTUVPVVQuaHRtbAkJXAotIENVUkxPUFRfRE5TX0lOVEVSRkFDRS5odG1sIENVUkxPUFRfRE5TX0xPQ0FMX0lQNC5odG1sCQkJXAotIENVUkxPUFRfRE5TX0xPQ0FMX0lQNi5odG1sIENVUkxPUFRfRE5TX1NFUlZFUlMuaHRtbAkJCVwKLSBDVVJMT1BUX0ROU19VU0VfR0xPQkFMX0NBQ0hFLmh0bWwgQ1VSTE9QVF9FR0RTT0NLRVQuaHRtbAkJXAotIENVUkxPUFRfRVJST1JCVUZGRVIuaHRtbCBDVVJMT1BUX0VYUEVDVF8xMDBfVElNRU9VVF9NUy5odG1sCQlcCi0gQ1VSTE9QVF9GQUlMT05FUlJPUi5odG1sIENVUkxPUFRfRklMRVRJTUUuaHRtbAkJCQlcCi0gQ1VSTE9QVF9GTk1BVENIX0RBVEEuaHRtbCBDVVJMT1BUX0ZOTUFUQ0hfRlVOQ1RJT04uaHRtbAkJXAotIENVUkxPUFRfRk9MTE9XTE9DQVRJT04uaHRtbCBDVVJMT1BUX0ZPUkJJRF9SRVVTRS5odG1sCQkJXAotIENVUkxPUFRfRlJFU0hfQ09OTkVDVC5odG1sIENVUkxPUFRfRlRQX0FDQ09VTlQuaHRtbAkJCVwKLSBDVVJMT1BUX0ZUUF9BTFRFUk5BVElWRV9UT19VU0VSLmh0bWwJCQkJCVwKLSBDVVJMT1BUX0ZUUF9DUkVBVEVfTUlTU0lOR19ESVJTLmh0bWwgQ1VSTE9QVF9GVFBfRklMRU1FVEhPRC5odG1sCVwKLSBDVVJMT1BUX0ZUUFBPUlQuaHRtbCBDVVJMT1BUX0ZUUF9SRVNQT05TRV9USU1FT1VULmh0bWwJCQlcCi0gQ1VSTE9QVF9GVFBfU0tJUF9QQVNWX0lQLmh0bWwgQ1VSTE9QVF9GVFBTU0xBVVRILmh0bWwJCQlcCi0gQ1VSTE9QVF9GVFBfU1NMX0NDQy5odG1sIENVUkxPUFRfRlRQX1VTRV9FUFJULmh0bWwJCQlcCi0gQ1VSTE9QVF9GVFBfVVNFX0VQU1YuaHRtbCBDVVJMT1BUX0ZUUF9VU0VfUFJFVC5odG1sCQkJXAotIENVUkxPUFRfR1NTQVBJX0RFTEVHQVRJT04uaHRtbCBDVVJMT1BUX0hFQURFUi5odG1sCQkJXAotIENVUkxPUFRfSEVBREVSREFUQS5odG1sIENVUkxPUFRfSEVBREVSRlVOQ1RJT04uaHRtbAkJCVwKLSBDVVJMT1BUX0hFQURFUk9QVC5odG1sIENVUkxPUFRfSFRUUDIwMEFMSUFTRVMuaHRtbAkJCVwKLSBDVVJMT1BUX0hUVFBBVVRILmh0bWwgQ1VSTE9QVF9IVFRQX0NPTlRFTlRfREVDT0RJTkcuaHRtbAkJXAotIENVUkxPUFRfSFRUUEdFVC5odG1sIENVUkxPUFRfSFRUUEhFQURFUi5odG1sIENVUkxPUFRfSFRUUFBPU1QuaHRtbAlcCi0gQ1VSTE9QVF9IVFRQUFJPWFlUVU5ORUwuaHRtbCBDVVJMT1BUX0hUVFBfVFJBTlNGRVJfREVDT0RJTkcuaHRtbAlcCi0gQ1VSTE9QVF9IVFRQX1ZFUlNJT04uaHRtbCBDVVJMT1BUX0lHTk9SRV9DT05URU5UX0xFTkdUSC5odG1sCQlcCi0gQ1VSTE9QVF9JTkZJTEVTSVpFLmh0bWwgQ1VSTE9QVF9JTkZJTEVTSVpFX0xBUkdFLmh0bWwJCQlcCi0gQ1VSTE9QVF9JTlRFUkZBQ0UuaHRtbCBDVVJMT1BUX0lOVEVSTEVBVkVEQVRBLmh0bWwJCQlcCi0gQ1VSTE9QVF9JTlRFUkxFQVZFRlVOQ1RJT04uaHRtbCBDVVJMT1BUX0lPQ1RMREFUQS5odG1sCQkJXAotIENVUkxPUFRfSU9DVExGVU5DVElPTi5odG1sIENVUkxPUFRfSVBSRVNPTFZFLmh0bWwJCQlcCi0gQ1VSTE9QVF9JU1NVRVJDRVJULmh0bWwgQ1VSTE9QVF9LRVlQQVNTV0QuaHRtbCBDVVJMT1BUX0tSQkxFVkVMLmh0bWwJXAotIENVUkxPUFRfTE9DQUxQT1JULmh0bWwgQ1VSTE9QVF9MT0NBTFBPUlRSQU5HRS5odG1sCQkJXAotIENVUkxPUFRfTE9HSU5fT1BUSU9OUy5odG1sIENVUkxPUFRfTE9XX1NQRUVEX0xJTUlULmh0bWwJCVwKLSBDVVJMT1BUX0xPV19TUEVFRF9USU1FLmh0bWwgQ1VSTE9QVF9NQUlMX0FVVEguaHRtbAkJCVwKLSBDVVJMT1BUX01BSUxfRlJPTS5odG1sIENVUkxPUFRfTUFJTF9SQ1BULmh0bWwgQ1VSTE9QVF9NQVhDT05ORUNUUy5odG1sCVwKLSBDVVJMT1BUX01BWEZJTEVTSVpFLmh0bWwgQ1VSTE9QVF9NQVhGSUxFU0laRV9MQVJHRS5odG1sCQlcCi0gQ1VSTE9QVF9NQVhfUkVDVl9TUEVFRF9MQVJHRS5odG1sIENVUkxPUFRfTUFYUkVESVJTLmh0bWwJCVwKLSBDVVJMT1BUX01BWF9TRU5EX1NQRUVEX0xBUkdFLmh0bWwgQ1VSTE9QVF9ORVRSQy5odG1sCQkJXAotIENVUkxPUFRfTkVUUkNfRklMRS5odG1sIENVUkxPUFRfTkVXX0RJUkVDVE9SWV9QRVJNUy5odG1sCQlcCi0gQ1VSTE9QVF9ORVdfRklMRV9QRVJNUy5odG1sIENVUkxPUFRfTk9CT0RZLmh0bWwJCQlcCi0gQ1VSTE9QVF9OT1BST0dSRVNTLmh0bWwgQ1VSTE9QVF9OT1BST1hZLmh0bWwgQ1VSTE9QVF9OT1NJR05BTC5odG1sCVwKLSBDVVJMT1BUX09QRU5TT0NLRVREQVRBLmh0bWwgQ1VSTE9QVF9PUEVOU09DS0VURlVOQ1RJT04uaHRtbAkJXAotIENVUkxPUFRfUEFTU1dPUkQuaHRtbCBDVVJMT1BUX1BJTk5FRFBVQkxJQ0tFWS5odG1sIENVUkxPUFRfUE9SVC5odG1sCVwKLSBDVVJMT1BUX1BPU1QuaHRtbCBDVVJMT1BUX1BPU1RGSUVMRFMuaHRtbCBDVVJMT1BUX1BPU1RGSUVMRFNJWkUuaHRtbAlcCi0gQ1VSTE9QVF9QT1NURklFTERTSVpFX0xBUkdFLmh0bWwgQ1VSTE9QVF9QT1NUUVVPVEUuaHRtbAkJXAotIENVUkxPUFRfUE9TVFJFRElSLmh0bWwgQ1VSTE9QVF9QUkVRVU9URS5odG1sIENVUkxPUFRfUFJJVkFURS5odG1sCVwKLSBDVVJMT1BUX1BST0dSRVNTREFUQS5odG1sIENVUkxPUFRfUFJPR1JFU1NGVU5DVElPTi5odG1sCQlcCi0gQ1VSTE9QVF9QUk9UT0NPTFMuaHRtbCBDVVJMT1BUX1BST1hZLmh0bWwgQ1VSTE9QVF9QUk9YWUFVVEguaHRtbAlcCi0gQ1VSTE9QVF9QUk9YWUhFQURFUi5odG1sIENVUkxPUFRfUFJPWFlQQVNTV09SRC5odG1sCQkJXAotIENVUkxPUFRfUFJPWFlQT1JULmh0bWwgQ1VSTE9QVF9QUk9YWV9UUkFOU0ZFUl9NT0RFLmh0bWwJCVwKLSBDVVJMT1BUX1BST1hZVFlQRS5odG1sIENVUkxPUFRfUFJPWFlVU0VSTkFNRS5odG1sCQkJXAotIENVUkxPUFRfUFJPWFlVU0VSUFdELmh0bWwgQ1VSTE9QVF9QVVQuaHRtbCBDVVJMT1BUX1FVT1RFLmh0bWwJCVwKLSBDVVJMT1BUX1JBTkRPTV9GSUxFLmh0bWwgQ1VSTE9QVF9SQU5HRS5odG1sIENVUkxPUFRfUkVBRERBVEEuaHRtbAlcCi0gQ1VSTE9QVF9SRUFERlVOQ1RJT04uaHRtbCBDVVJMT1BUX1JFRElSX1BST1RPQ09MUy5odG1sCQkJXAotIENVUkxPUFRfUkVGRVJFUi5odG1sIENVUkxPUFRfUkVTT0xWRS5odG1sIENVUkxPUFRfUkVTVU1FX0ZST00uaHRtbAlcCi0gQ1VSTE9QVF9SRVNVTUVfRlJPTV9MQVJHRS5odG1sIENVUkxPUFRfUlRTUF9DTElFTlRfQ1NFUS5odG1sCQlcCi0gQ1VSTE9QVF9SVFNQX1JFUVVFU1QuaHRtbCBDVVJMT1BUX1JUU1BfU0VSVkVSX0NTRVEuaHRtbAkJXAotIENVUkxPUFRfUlRTUF9TRVNTSU9OX0lELmh0bWwgQ1VSTE9QVF9SVFNQX1NUUkVBTV9VUkkuaHRtbAkJXAotIENVUkxPUFRfUlRTUF9UUkFOU1BPUlQuaHRtbCBDVVJMT1BUX1NBU0xfSVIuaHRtbCBDVVJMT1BUX1NFRUtEQVRBLmh0bWwJXAotIENVUkxPUFRfU0VFS0ZVTkNUSU9OLmh0bWwgQ1VSTE9QVF9TSEFSRS5odG1sIENVUkxPUFRfU09DS09QVERBVEEuaHRtbAlcCi0gQ1VSTE9QVF9TT0NLT1BURlVOQ1RJT04uaHRtbCBDVVJMT1BUX1NPQ0tTNV9HU1NBUElfTkVDLmh0bWwJCVwKLSBDVVJMT1BUX1NPQ0tTNV9HU1NBUElfU0VSVklDRS5odG1sIENVUkxPUFRfU1NIX0FVVEhfVFlQRVMuaHRtbAkJXAotIENVUkxPUFRfU1NIX0hPU1RfUFVCTElDX0tFWV9NRDUuaHRtbCBDVVJMT1BUX1NTSF9LRVlEQVRBLmh0bWwJCVwKLSBDVVJMT1BUX1NTSF9LRVlGVU5DVElPTi5odG1sIENVUkxPUFRfU1NIX0tOT1dOSE9TVFMuaHRtbAkJXAotIENVUkxPUFRfU1NIX1BSSVZBVEVfS0VZRklMRS5odG1sIENVUkxPUFRfU1NIX1BVQkxJQ19LRVlGSUxFLmh0bWwJXAotIENVUkxPUFRfU1NMQ0VSVC5odG1sIENVUkxPUFRfU1NMQ0VSVFRZUEUuaHRtbAkJCQlcCi0gQ1VSTE9QVF9TU0xfQ0lQSEVSX0xJU1QuaHRtbCBDVVJMT1BUX1NTTF9DVFhfREFUQS5odG1sCQkJXAotIENVUkxPUFRfU1NMX0NUWF9GVU5DVElPTi5odG1sIENVUkxPUFRfU1NMX0VOQUJMRV9BTFBOLmh0bWwJCVwKLSBDVVJMT1BUX1NTTF9FTkFCTEVfTlBOLmh0bWwgQ1VSTE9QVF9TU0xFTkdJTkUuaHRtbAkJCVwKLSBDVVJMT1BUX1NTTEVOR0lORV9ERUZBVUxULmh0bWwgQ1VSTE9QVF9TU0xfRkFMU0VTVEFSVC5odG1sCQlcCi0gQ1VSTE9QVF9TU0xLRVkuaHRtbCBDVVJMT1BUX1NTTEtFWVRZUEUuaHRtbCBDVVJMT1BUX1NTTF9PUFRJT05TLmh0bWwJXAotIENVUkxPUFRfU1NMX1NFU1NJT05JRF9DQUNIRS5odG1sIENVUkxPUFRfU1NMX1ZFUklGWUhPU1QuaHRtbAkJXAotIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIuaHRtbCBDVVJMT1BUX1NTTF9WRVJJRllTVEFUVVMuaHRtbAkJXAotIENVUkxPUFRfU1NMVkVSU0lPTi5odG1sIENVUkxPUFRfU1RERVJSLmh0bWwgQ1VSTE9QVF9UQ1BfS0VFUEFMSVZFLmh0bWwJXAotIENVUkxPUFRfVENQX0tFRVBJRExFLmh0bWwgQ1VSTE9QVF9UQ1BfS0VFUElOVFZMLmh0bWwJCQlcCi0gQ1VSTE9QVF9UQ1BfTk9ERUxBWS5odG1sIENVUkxPUFRfVEVMTkVUT1BUSU9OUy5odG1sCQkJXAotIENVUkxPUFRfVEZUUF9CTEtTSVpFLmh0bWwgQ1VSTE9QVF9USU1FQ09ORElUSU9OLmh0bWwJCQlcCi0gQ1VSTE9QVF9USU1FT1VULmh0bWwgQ1VSTE9QVF9USU1FT1VUX01TLmh0bWwgQ1VSTE9QVF9USU1FVkFMVUUuaHRtbAlcCi0gQ1VSTE9QVF9UTFNBVVRIX1BBU1NXT1JELmh0bWwgQ1VSTE9QVF9UTFNBVVRIX1RZUEUuaHRtbAkJXAotIENVUkxPUFRfVExTQVVUSF9VU0VSTkFNRS5odG1sIENVUkxPUFRfVFJBTlNGRVJfRU5DT0RJTkcuaHRtbAkJXAotIENVUkxPUFRfVFJBTlNGRVJURVhULmh0bWwgQ1VSTE9QVF9VTlJFU1RSSUNURURfQVVUSC5odG1sCQlcCi0gQ1VSTE9QVF9VUExPQUQuaHRtbCBDVVJMT1BUX1VSTC5odG1sIENVUkxPUFRfVVNFUkFHRU5ULmh0bWwJCVwKLSBDVVJMT1BUX1VTRVJOQU1FLmh0bWwgQ1VSTE9QVF9VU0VSUFdELmh0bWwgQ1VSTE9QVF9VU0VfU1NMLmh0bWwJXAotIENVUkxPUFRfVkVSQk9TRS5odG1sIENVUkxPUFRfV0lMRENBUkRNQVRDSC5odG1sIENVUkxPUFRfV1JJVEVEQVRBLmh0bWwJXAotIENVUkxPUFRfV1JJVEVGVU5DVElPTi5odG1sIENVUkxPUFRfWEZFUklORk9EQVRBLmh0bWwJCQlcCi0gQ1VSTE9QVF9YRkVSSU5GT0ZVTkNUSU9OLmh0bWwgQ1VSTE9QVF9YT0FVVEgyX0JFQVJFUi5odG1sCQlcCi0gQ1VSTE1PUFRfQ0hVTktfTEVOR1RIX1BFTkFMVFlfU0laRS5odG1sCQkJCVwKLSBDVVJMTU9QVF9DT05URU5UX0xFTkdUSF9QRU5BTFRZX1NJWkUuaHRtbCBDVVJMTU9QVF9NQVhDT05ORUNUUy5odG1sCVwKLSBDVVJMTU9QVF9NQVhfSE9TVF9DT05ORUNUSU9OUy5odG1sIENVUkxNT1BUX01BWF9QSVBFTElORV9MRU5HVEguaHRtbAlcCi0gQ1VSTE1PUFRfTUFYX1RPVEFMX0NPTk5FQ1RJT05TLmh0bWwgQ1VSTE1PUFRfUElQRUxJTklORy5odG1sCQlcCi0gQ1VSTE1PUFRfUElQRUxJTklOR19TRVJWRVJfQkwuaHRtbCBDVVJMTU9QVF9QSVBFTElOSU5HX1NJVEVfQkwuaHRtbAlcCi0gQ1VSTE1PUFRfU09DS0VUREFUQS5odG1sIENVUkxNT1BUX1NPQ0tFVEZVTkNUSU9OLmh0bWwJCQlcCi0gQ1VSTE1PUFRfVElNRVJEQVRBLmh0bWwgQ1VSTE1PUFRfVElNRVJGVU5DVElPTi5odG1sCQkJXAotIENVUkxPUFRfVU5JWF9TT0NLRVRfUEFUSC5odG1sIENVUkxPUFRfUEFUSF9BU19JUy5odG1sCQkJXAotIENVUkxPUFRfUFJPWFlfU0VSVklDRV9OQU1FLmh0bWwgQ1VSTE9QVF9TRVJWSUNFX05BTUUuaHRtbAkJXAotIENVUkxPUFRfUElQRVdBSVQuaHRtbAorSFRNTFBBR0VTID0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX0FDVElWRVNPQ0tFVC5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX0FQUENPTk5FQ1RfVElNRS5odG1sICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX0NFUlRJTkZPLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX0NPTkRJVElPTl9VTk1FVC5odG1sICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX0NPTk5FQ1RfVElNRS5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX0NPTlRFTlRfTEVOR1RIX0RPV05MT0FELmh0bWwgICAgICAgICAgXAorIENVUkxJTkZPX0NPTlRFTlRfTEVOR1RIX1VQTE9BRC5odG1sICAgICAgICAgICAgXAorIENVUkxJTkZPX0NPTlRFTlRfVFlQRS5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX0NPT0tJRUxJU1QuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX0VGRkVDVElWRV9VUkwuaHRtbCAgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX0ZJTEVUSU1FLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX0ZUUF9FTlRSWV9QQVRILmh0bWwgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX0hFQURFUl9TSVpFLmh0bWwgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX0hUVFBBVVRIX0FWQUlMLmh0bWwgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX0hUVFBfQ09OTkVDVENPREUuaHRtbCAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX0xBU1RTT0NLRVQuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX0xPQ0FMX0lQLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX0xPQ0FMX1BPUlQuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX05BTUVMT09LVVBfVElNRS5odG1sICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX05VTV9DT05ORUNUUy5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX09TX0VSUk5PLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX1BSRVRSQU5TRkVSX1RJTUUuaHRtbCAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX1BSSU1BUllfSVAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX1BSSU1BUllfUE9SVC5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX1BSSVZBVEUuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX1BST1hZQVVUSF9BVkFJTC5odG1sICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX1JFRElSRUNUX0NPVU5ULmh0bWwgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX1JFRElSRUNUX1RJTUUuaHRtbCAgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX1JFRElSRUNUX1VSTC5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX1JFUVVFU1RfU0laRS5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX1JFU1BPTlNFX0NPREUuaHRtbCAgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX1JUU1BfQ0xJRU5UX0NTRVEuaHRtbCAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX1JUU1BfQ1NFUV9SRUNWLmh0bWwgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX1JUU1BfU0VSVkVSX0NTRVEuaHRtbCAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX1JUU1BfU0VTU0lPTl9JRC5odG1sICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX1NJWkVfRE9XTkxPQUQuaHRtbCAgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX1NJWkVfVVBMT0FELmh0bWwgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX1NQRUVEX0RPV05MT0FELmh0bWwgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX1NQRUVEX1VQTE9BRC5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX1NTTF9FTkdJTkVTLmh0bWwgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX1NTTF9WRVJJRllSRVNVTFQuaHRtbCAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX1NUQVJUVFJBTlNGRVJfVElNRS5odG1sICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX1RMU19TRVNTSU9OLmh0bWwgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX1RMU19TU0xfUFRSLmh0bWwgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxJTkZPX1RPVEFMX1RJTUUuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxNT1BUX0NIVU5LX0xFTkdUSF9QRU5BTFRZX1NJWkUuaHRtbCAgICAgICAgXAorIENVUkxNT1BUX0NPTlRFTlRfTEVOR1RIX1BFTkFMVFlfU0laRS5odG1sICAgICAgXAorIENVUkxNT1BUX01BWENPTk5FQ1RTLmh0bWwgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxNT1BUX01BWF9IT1NUX0NPTk5FQ1RJT05TLmh0bWwgICAgICAgICAgICAgXAorIENVUkxNT1BUX01BWF9QSVBFTElORV9MRU5HVEguaHRtbCAgICAgICAgICAgICAgXAorIENVUkxNT1BUX01BWF9UT1RBTF9DT05ORUNUSU9OUy5odG1sICAgICAgICAgICAgXAorIENVUkxNT1BUX1BJUEVMSU5JTkcuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxNT1BUX1BJUEVMSU5JTkdfU0VSVkVSX0JMLmh0bWwgICAgICAgICAgICAgXAorIENVUkxNT1BUX1BJUEVMSU5JTkdfU0lURV9CTC5odG1sICAgICAgICAgICAgICAgXAorIENVUkxNT1BUX1BVU0hEQVRBLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxNT1BUX1BVU0hGVU5DVElPTi5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxNT1BUX1NPQ0tFVERBVEEuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxNT1BUX1NPQ0tFVEZVTkNUSU9OLmh0bWwgICAgICAgICAgICAgICAgICAgXAorIENVUkxNT1BUX1RJTUVSREFUQS5odG1sICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxNT1BUX1RJTUVSRlVOQ1RJT04uaHRtbCAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfQUNDRVBUVElNRU9VVF9NUy5odG1sICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfQUNDRVBUX0VOQ09ESU5HLmh0bWwgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfQUREUkVTU19TQ09QRS5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfQVBQRU5ELmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfQVVUT1JFRkVSRVIuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfQlVGRkVSU0laRS5odG1sICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfQ0FJTkZPLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfQ0FQQVRILmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfQ0VSVElORk8uaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfQ0hVTktfQkdOX0ZVTkNUSU9OLmh0bWwgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfQ0hVTktfREFUQS5odG1sICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfQ0hVTktfRU5EX0ZVTkNUSU9OLmh0bWwgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfQ0xPU0VTT0NLRVREQVRBLmh0bWwgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfQ0xPU0VTT0NLRVRGVU5DVElPTi5odG1sICAgICAgICAgICAgICAgXAorIENVUkxPUFRfQ09OTkVDVFRJTUVPVVQuaHRtbCAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfQ09OTkVDVFRJTUVPVVRfTVMuaHRtbCAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfQ09OTkVDVF9PTkxZLmh0bWwgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfQ09OTkVDVF9UTy5odG1sICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfQ09OVl9GUk9NX05FVFdPUktfRlVOQ1RJT04uaHRtbCAgICAgICAgXAorIENVUkxPUFRfQ09OVl9GUk9NX1VURjhfRlVOQ1RJT04uaHRtbCAgICAgICAgICAgXAorIENVUkxPUFRfQ09OVl9UT19ORVRXT1JLX0ZVTkNUSU9OLmh0bWwgICAgICAgICAgXAorIENVUkxPUFRfQ09PS0lFLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfQ09PS0lFRklMRS5odG1sICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfQ09PS0lFSkFSLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfQ09PS0lFTElTVC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfQ09PS0lFU0VTU0lPTi5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfQ09QWVBPU1RGSUVMRFMuaHRtbCAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfQ1JMRi5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfQ1JMRklMRS5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfQ1VTVE9NUkVRVUVTVC5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfREVCVUdEQVRBLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfREVCVUdGVU5DVElPTi5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfREVGQVVMVF9QUk9UT0NPTC5odG1sICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfRElSTElTVE9OTFkuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfRE5TX0NBQ0hFX1RJTUVPVVQuaHRtbCAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfRE5TX0lOVEVSRkFDRS5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfRE5TX0xPQ0FMX0lQNC5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfRE5TX0xPQ0FMX0lQNi5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfRE5TX1NFUlZFUlMuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfRE5TX1VTRV9HTE9CQUxfQ0FDSEUuaHRtbCAgICAgICAgICAgICAgXAorIENVUkxPUFRfRUdEU09DS0VULmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfRVJST1JCVUZGRVIuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfRVhQRUNUXzEwMF9USU1FT1VUX01TLmh0bWwgICAgICAgICAgICAgXAorIENVUkxPUFRfRkFJTE9ORVJST1IuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfRklMRVRJTUUuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfRk5NQVRDSF9EQVRBLmh0bWwgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfRk5NQVRDSF9GVU5DVElPTi5odG1sICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfRk9MTE9XTE9DQVRJT04uaHRtbCAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfRk9SQklEX1JFVVNFLmh0bWwgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfRlJFU0hfQ09OTkVDVC5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfRlRQUE9SVC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfRlRQU1NMQVVUSC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfRlRQX0FDQ09VTlQuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfRlRQX0FMVEVSTkFUSVZFX1RPX1VTRVIuaHRtbCAgICAgICAgICAgXAorIENVUkxPUFRfRlRQX0NSRUFURV9NSVNTSU5HX0RJUlMuaHRtbCAgICAgICAgICAgXAorIENVUkxPUFRfRlRQX0ZJTEVNRVRIT0QuaHRtbCAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfRlRQX1JFU1BPTlNFX1RJTUVPVVQuaHRtbCAgICAgICAgICAgICAgXAorIENVUkxPUFRfRlRQX1NLSVBfUEFTVl9JUC5odG1sICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfRlRQX1NTTF9DQ0MuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfRlRQX1VTRV9FUFJULmh0bWwgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfRlRQX1VTRV9FUFNWLmh0bWwgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfRlRQX1VTRV9QUkVULmh0bWwgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfR1NTQVBJX0RFTEVHQVRJT04uaHRtbCAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfSEVBREVSLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfSEVBREVSREFUQS5odG1sICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfSEVBREVSRlVOQ1RJT04uaHRtbCAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfSEVBREVST1BULmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfSFRUUDIwMEFMSUFTRVMuaHRtbCAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfSFRUUEFVVEguaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfSFRUUEdFVC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfSFRUUEhFQURFUi5odG1sICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfSFRUUFBPU1QuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfSFRUUFBST1hZVFVOTkVMLmh0bWwgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfSFRUUF9DT05URU5UX0RFQ09ESU5HLmh0bWwgICAgICAgICAgICAgXAorIENVUkxPUFRfSFRUUF9UUkFOU0ZFUl9ERUNPRElORy5odG1sICAgICAgICAgICAgXAorIENVUkxPUFRfSFRUUF9WRVJTSU9OLmh0bWwgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfSUdOT1JFX0NPTlRFTlRfTEVOR1RILmh0bWwgICAgICAgICAgICAgXAorIENVUkxPUFRfSU5GSUxFU0laRS5odG1sICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfSU5GSUxFU0laRV9MQVJHRS5odG1sICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfSU5URVJGQUNFLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfSU5URVJMRUFWRURBVEEuaHRtbCAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfSU5URVJMRUFWRUZVTkNUSU9OLmh0bWwgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfSU9DVExEQVRBLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfSU9DVExGVU5DVElPTi5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfSVBSRVNPTFZFLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfSVNTVUVSQ0VSVC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfS0VZUEFTU1dELmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfS1JCTEVWRUwuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfTE9DQUxQT1JULmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfTE9DQUxQT1JUUkFOR0UuaHRtbCAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfTE9HSU5fT1BUSU9OUy5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfTE9XX1NQRUVEX0xJTUlULmh0bWwgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfTE9XX1NQRUVEX1RJTUUuaHRtbCAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfTUFJTF9BVVRILmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfTUFJTF9GUk9NLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfTUFJTF9SQ1BULmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfTUFYQ09OTkVDVFMuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfTUFYRklMRVNJWkUuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfTUFYRklMRVNJWkVfTEFSR0UuaHRtbCAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfTUFYUkVESVJTLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfTUFYX1JFQ1ZfU1BFRURfTEFSR0UuaHRtbCAgICAgICAgICAgICAgXAorIENVUkxPUFRfTUFYX1NFTkRfU1BFRURfTEFSR0UuaHRtbCAgICAgICAgICAgICAgXAorIENVUkxPUFRfTkVUUkMuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfTkVUUkNfRklMRS5odG1sICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfTkVXX0RJUkVDVE9SWV9QRVJNUy5odG1sICAgICAgICAgICAgICAgXAorIENVUkxPUFRfTkVXX0ZJTEVfUEVSTVMuaHRtbCAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfTk9CT0RZLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfTk9QUk9HUkVTUy5odG1sICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfTk9QUk9YWS5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfTk9TSUdOQUwuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfT1BFTlNPQ0tFVERBVEEuaHRtbCAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfT1BFTlNPQ0tFVEZVTkNUSU9OLmh0bWwgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUEFTU1dPUkQuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUEFUSF9BU19JUy5odG1sICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUElOTkVEUFVCTElDS0VZLmh0bWwgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUElQRVdBSVQuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUE9SVC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUE9TVC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUE9TVEZJRUxEUy5odG1sICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUE9TVEZJRUxEU0laRS5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUE9TVEZJRUxEU0laRV9MQVJHRS5odG1sICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUE9TVFFVT1RFLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUE9TVFJFRElSLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUFJFUVVPVEUuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUFJJVkFURS5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUFJPR1JFU1NEQVRBLmh0bWwgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUFJPR1JFU1NGVU5DVElPTi5odG1sICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUFJPVE9DT0xTLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUFJPWFkuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUFJPWFlBVVRILmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUFJPWFlIRUFERVIuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUFJPWFlQQVNTV09SRC5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUFJPWFlQT1JULmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUFJPWFlUWVBFLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUFJPWFlVU0VSTkFNRS5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUFJPWFlVU0VSUFdELmh0bWwgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUFJPWFlfU0VSVklDRV9OQU1FLmh0bWwgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUFJPWFlfVFJBTlNGRVJfTU9ERS5odG1sICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUFVULmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUVVPVEUuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUkFORE9NX0ZJTEUuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUkFOR0UuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUkVBRERBVEEuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUkVBREZVTkNUSU9OLmh0bWwgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUkVESVJfUFJPVE9DT0xTLmh0bWwgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUkVGRVJFUi5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUkVTT0xWRS5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUkVTVU1FX0ZST00uaHRtbCAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUkVTVU1FX0ZST01fTEFSR0UuaHRtbCAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUlRTUF9DTElFTlRfQ1NFUS5odG1sICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUlRTUF9SRVFVRVNULmh0bWwgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUlRTUF9TRVJWRVJfQ1NFUS5odG1sICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUlRTUF9TRVNTSU9OX0lELmh0bWwgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUlRTUF9TVFJFQU1fVVJJLmh0bWwgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfUlRTUF9UUkFOU1BPUlQuaHRtbCAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU0FTTF9JUi5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU0VFS0RBVEEuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU0VFS0ZVTkNUSU9OLmh0bWwgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU0VSVklDRV9OQU1FLmh0bWwgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU0hBUkUuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU09DS09QVERBVEEuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU09DS09QVEZVTkNUSU9OLmh0bWwgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU09DS1M1X0dTU0FQSV9ORUMuaHRtbCAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU09DS1M1X0dTU0FQSV9TRVJWSUNFLmh0bWwgICAgICAgICAgICAgXAorIENVUkxPUFRfU1NIX0FVVEhfVFlQRVMuaHRtbCAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU1NIX0hPU1RfUFVCTElDX0tFWV9NRDUuaHRtbCAgICAgICAgICAgXAorIENVUkxPUFRfU1NIX0tFWURBVEEuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU1NIX0tFWUZVTkNUSU9OLmh0bWwgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU1NIX0tOT1dOSE9TVFMuaHRtbCAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU1NIX1BSSVZBVEVfS0VZRklMRS5odG1sICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU1NIX1BVQkxJQ19LRVlGSUxFLmh0bWwgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU1NMQ0VSVC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU1NMQ0VSVFRZUEUuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU1NMRU5HSU5FLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU1NMRU5HSU5FX0RFRkFVTFQuaHRtbCAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU1NMS0VZLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU1NMS0VZVFlQRS5odG1sICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU1NMVkVSU0lPTi5odG1sICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU1NMX0NJUEhFUl9MSVNULmh0bWwgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU1NMX0NUWF9EQVRBLmh0bWwgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU1NMX0NUWF9GVU5DVElPTi5odG1sICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU1NMX0VOQUJMRV9BTFBOLmh0bWwgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU1NMX0VOQUJMRV9OUE4uaHRtbCAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU1NMX0ZBTFNFU1RBUlQuaHRtbCAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU1NMX09QVElPTlMuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU1NMX1NFU1NJT05JRF9DQUNIRS5odG1sICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU1NMX1ZFUklGWUhPU1QuaHRtbCAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIuaHRtbCAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU1NMX1ZFUklGWVNUQVRVUy5odG1sICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU1RERVJSLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU1RSRUFNX0RFUEVORFMuaHRtbCAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU1RSRUFNX0RFUEVORFNfRS5odG1sICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfU1RSRUFNX1dFSUdIVC5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfVENQX0ZBU1RPUEVOLmh0bWwgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfVENQX0tFRVBBTElWRS5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfVENQX0tFRVBJRExFLmh0bWwgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfVENQX0tFRVBJTlRWTC5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfVENQX05PREVMQVkuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfVEVMTkVUT1BUSU9OUy5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfVEZUUF9CTEtTSVpFLmh0bWwgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfVEZUUF9OT19PUFRJT05TLmh0bWwgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfVElNRUNPTkRJVElPTi5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfVElNRU9VVC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfVElNRU9VVF9NUy5odG1sICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfVElNRVZBTFVFLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfVExTQVVUSF9QQVNTV09SRC5odG1sICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfVExTQVVUSF9UWVBFLmh0bWwgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfVExTQVVUSF9VU0VSTkFNRS5odG1sICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfVFJBTlNGRVJURVhULmh0bWwgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfVFJBTlNGRVJfRU5DT0RJTkcuaHRtbCAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfVU5JWF9TT0NLRVRfUEFUSC5odG1sICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfVU5SRVNUUklDVEVEX0FVVEguaHRtbCAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfVVBMT0FELmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfVVJMLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfVVNFUkFHRU5ULmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfVVNFUk5BTUUuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfVVNFUlBXRC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfVVNFX1NTTC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfVkVSQk9TRS5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfV0lMRENBUkRNQVRDSC5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfV1JJVEVEQVRBLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfV1JJVEVGVU5DVElPTi5odG1sICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfWEZFUklORk9EQVRBLmh0bWwgICAgICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfWEZFUklORk9GVU5DVElPTi5odG1sICAgICAgICAgICAgICAgICAgXAorIENVUkxPUFRfWE9BVVRIMl9CRUFSRVIuaHRtbAogCi1QREZQQUdFUyA9IENVUkxPUFRfQUNDRVBUX0VOQ09ESU5HLnBkZiBDVVJMT1BUX0FDQ0VQVFRJTUVPVVRfTVMucGRmCVwKLSBDVVJMT1BUX0FERFJFU1NfU0NPUEUucGRmIENVUkxPUFRfQVBQRU5ELnBkZiBDVVJMT1BUX0FVVE9SRUZFUkVSLnBkZglcCi0gQ1VSTE9QVF9CVUZGRVJTSVpFLnBkZiBDVVJMT1BUX0NBSU5GTy5wZGYgQ1VSTE9QVF9DQVBBVEgucGRmCQlcCi0gQ1VSTE9QVF9DRVJUSU5GTy5wZGYgQ1VSTE9QVF9DSFVOS19CR05fRlVOQ1RJT04ucGRmCQkJXAotIENVUkxPUFRfQ0hVTktfREFUQS5wZGYgQ1VSTE9QVF9DSFVOS19FTkRfRlVOQ1RJT04ucGRmCQkJXAotIENVUkxPUFRfQ0xPU0VTT0NLRVREQVRBLnBkZiBDVVJMT1BUX0NMT1NFU09DS0VURlVOQ1RJT04ucGRmCQlcCi0gQ1VSTE9QVF9DT05ORUNUX09OTFkucGRmIENVUkxPUFRfQ09OTkVDVFRJTUVPVVQucGRmCQkJXAotIENVUkxPUFRfQ09OTkVDVFRJTUVPVVRfTVMucGRmIENVUkxPUFRfQ09OVl9GUk9NX05FVFdPUktfRlVOQ1RJT04ucGRmCVwKLSBDVVJMT1BUX0NPTlZfRlJPTV9VVEY4X0ZVTkNUSU9OLnBkZgkJCQkJXAotIENVUkxPUFRfQ09OVl9UT19ORVRXT1JLX0ZVTkNUSU9OLnBkZiBDVVJMT1BUX0NPT0tJRS5wZGYJCVwKLSBDVVJMT1BUX0NPT0tJRUZJTEUucGRmIENVUkxPUFRfQ09PS0lFSkFSLnBkZiBDVVJMT1BUX0NPT0tJRUxJU1QucGRmCVwKLSBDVVJMT1BUX0NPT0tJRVNFU1NJT04ucGRmIENVUkxPUFRfQ09QWVBPU1RGSUVMRFMucGRmIENVUkxPUFRfQ1JMRi5wZGYJXAotIENVUkxPUFRfQ1JMRklMRS5wZGYgQ1VSTE9QVF9DVVNUT01SRVFVRVNULnBkZiBDVVJMT1BUX0RFQlVHREFUQS5wZGYJXAotIENVUkxPUFRfREVCVUdGVU5DVElPTi5wZGYgQ1VSTE9QVF9ESVJMSVNUT05MWS5wZGYJCQlcCi0gQ1VSTE9QVF9ETlNfQ0FDSEVfVElNRU9VVC5wZGYgQ1VSTE9QVF9ETlNfSU5URVJGQUNFLnBkZgkJXAotIENVUkxPUFRfRE5TX0xPQ0FMX0lQNC5wZGYgQ1VSTE9QVF9ETlNfTE9DQUxfSVA2LnBkZgkJCVwKLSBDVVJMT1BUX0ROU19TRVJWRVJTLnBkZiBDVVJMT1BUX0ROU19VU0VfR0xPQkFMX0NBQ0hFLnBkZgkJXAotIENVUkxPUFRfRUdEU09DS0VULnBkZiBDVVJMT1BUX0VSUk9SQlVGRkVSLnBkZgkJCQlcCi0gQ1VSTE9QVF9FWFBFQ1RfMTAwX1RJTUVPVVRfTVMucGRmIENVUkxPUFRfRkFJTE9ORVJST1IucGRmCQlcCi0gQ1VSTE9QVF9GSUxFVElNRS5wZGYgQ1VSTE9QVF9GTk1BVENIX0RBVEEucGRmCQkJCVwKLSBDVVJMT1BUX0ZOTUFUQ0hfRlVOQ1RJT04ucGRmIENVUkxPUFRfRk9MTE9XTE9DQVRJT04ucGRmCQlcCi0gQ1VSTE9QVF9GT1JCSURfUkVVU0UucGRmIENVUkxPUFRfRlJFU0hfQ09OTkVDVC5wZGYJCQlcCi0gQ1VSTE9QVF9GVFBfQUNDT1VOVC5wZGYgQ1VSTE9QVF9GVFBfQUxURVJOQVRJVkVfVE9fVVNFUi5wZGYJCVwKLSBDVVJMT1BUX0ZUUF9DUkVBVEVfTUlTU0lOR19ESVJTLnBkZiBDVVJMT1BUX0ZUUF9GSUxFTUVUSE9ELnBkZgkJXAotIENVUkxPUFRfRlRQUE9SVC5wZGYgQ1VSTE9QVF9GVFBfUkVTUE9OU0VfVElNRU9VVC5wZGYJCQlcCi0gQ1VSTE9QVF9GVFBfU0tJUF9QQVNWX0lQLnBkZiBDVVJMT1BUX0ZUUFNTTEFVVEgucGRmCQkJXAotIENVUkxPUFRfRlRQX1NTTF9DQ0MucGRmIENVUkxPUFRfRlRQX1VTRV9FUFJULnBkZgkJCVwKLSBDVVJMT1BUX0ZUUF9VU0VfRVBTVi5wZGYgQ1VSTE9QVF9GVFBfVVNFX1BSRVQucGRmCQkJXAotIENVUkxPUFRfR1NTQVBJX0RFTEVHQVRJT04ucGRmIENVUkxPUFRfSEVBREVSLnBkZgkJCVwKLSBDVVJMT1BUX0hFQURFUkRBVEEucGRmIENVUkxPUFRfSEVBREVSRlVOQ1RJT04ucGRmCQkJXAotIENVUkxPUFRfSEVBREVST1BULnBkZiBDVVJMT1BUX0hUVFAyMDBBTElBU0VTLnBkZiBDVVJMT1BUX0hUVFBBVVRILnBkZglcCi0gQ1VSTE9QVF9IVFRQX0NPTlRFTlRfREVDT0RJTkcucGRmIENVUkxPUFRfSFRUUEdFVC5wZGYJCQlcCi0gQ1VSTE9QVF9IVFRQSEVBREVSLnBkZiBDVVJMT1BUX0hUVFBQT1NULnBkZgkJCQlcCi0gQ1VSTE9QVF9IVFRQUFJPWFlUVU5ORUwucGRmIENVUkxPUFRfSFRUUF9UUkFOU0ZFUl9ERUNPRElORy5wZGYJCVwKLSBDVVJMT1BUX0hUVFBfVkVSU0lPTi5wZGYgQ1VSTE9QVF9JR05PUkVfQ09OVEVOVF9MRU5HVEgucGRmCQlcCi0gQ1VSTE9QVF9JTkZJTEVTSVpFLnBkZiBDVVJMT1BUX0lORklMRVNJWkVfTEFSR0UucGRmCQkJXAotIENVUkxPUFRfSU5URVJGQUNFLnBkZiBDVVJMT1BUX0lOVEVSTEVBVkVEQVRBLnBkZgkJCVwKLSBDVVJMT1BUX0lOVEVSTEVBVkVGVU5DVElPTi5wZGYgQ1VSTE9QVF9JT0NUTERBVEEucGRmCQkJXAotIENVUkxPUFRfSU9DVExGVU5DVElPTi5wZGYgQ1VSTE9QVF9JUFJFU09MVkUucGRmIENVUkxPUFRfSVNTVUVSQ0VSVC5wZGYJXAotIENVUkxPUFRfS0VZUEFTU1dELnBkZiBDVVJMT1BUX0tSQkxFVkVMLnBkZiBDVVJMT1BUX0xPQ0FMUE9SVC5wZGYJXAotIENVUkxPUFRfTE9DQUxQT1JUUkFOR0UucGRmIENVUkxPUFRfTE9HSU5fT1BUSU9OUy5wZGYJCQlcCi0gQ1VSTE9QVF9MT1dfU1BFRURfTElNSVQucGRmIENVUkxPUFRfTE9XX1NQRUVEX1RJTUUucGRmCQkJXAotIENVUkxPUFRfTUFJTF9BVVRILnBkZiBDVVJMT1BUX01BSUxfRlJPTS5wZGYgQ1VSTE9QVF9NQUlMX1JDUFQucGRmCVwKLSBDVVJMT1BUX01BWENPTk5FQ1RTLnBkZiBDVVJMT1BUX01BWEZJTEVTSVpFLnBkZgkJCVwKLSBDVVJMT1BUX01BWEZJTEVTSVpFX0xBUkdFLnBkZiBDVVJMT1BUX01BWF9SRUNWX1NQRUVEX0xBUkdFLnBkZgkJXAotIENVUkxPUFRfTUFYUkVESVJTLnBkZiBDVVJMT1BUX01BWF9TRU5EX1NQRUVEX0xBUkdFLnBkZgkJCVwKLSBDVVJMT1BUX05FVFJDLnBkZiBDVVJMT1BUX05FVFJDX0ZJTEUucGRmCQkJCVwKLSBDVVJMT1BUX05FV19ESVJFQ1RPUllfUEVSTVMucGRmIENVUkxPUFRfTkVXX0ZJTEVfUEVSTVMucGRmCQlcCi0gQ1VSTE9QVF9OT0JPRFkucGRmIENVUkxPUFRfTk9QUk9HUkVTUy5wZGYgQ1VSTE9QVF9OT1BST1hZLnBkZgkJXAotIENVUkxPUFRfTk9TSUdOQUwucGRmIENVUkxPUFRfT1BFTlNPQ0tFVERBVEEucGRmCQkJXAotIENVUkxPUFRfT1BFTlNPQ0tFVEZVTkNUSU9OLnBkZiBDVVJMT1BUX1BBU1NXT1JELnBkZgkJCVwKLSBDVVJMT1BUX1BJTk5FRFBVQkxJQ0tFWS5wZGYgQ1VSTE9QVF9QT1JULnBkZiBDVVJMT1BUX1BPU1QucGRmCQlcCi0gQ1VSTE9QVF9QT1NURklFTERTLnBkZiBDVVJMT1BUX1BPU1RGSUVMRFNJWkUucGRmCQkJXAotIENVUkxPUFRfUE9TVEZJRUxEU0laRV9MQVJHRS5wZGYgQ1VSTE9QVF9QT1NUUVVPVEUucGRmCQkJXAotIENVUkxPUFRfUE9TVFJFRElSLnBkZiBDVVJMT1BUX1BSRVFVT1RFLnBkZiBDVVJMT1BUX1BSSVZBVEUucGRmCQlcCi0gQ1VSTE9QVF9QUk9HUkVTU0RBVEEucGRmIENVUkxPUFRfUFJPR1JFU1NGVU5DVElPTi5wZGYJCQlcCi0gQ1VSTE9QVF9QUk9UT0NPTFMucGRmIENVUkxPUFRfUFJPWFkucGRmIENVUkxPUFRfUFJPWFlBVVRILnBkZgkJXAotIENVUkxPUFRfUFJPWFlIRUFERVIucGRmIENVUkxPUFRfUFJPWFlQQVNTV09SRC5wZGYJCQlcCi0gQ1VSTE9QVF9QUk9YWVBPUlQucGRmIENVUkxPUFRfUFJPWFlfVFJBTlNGRVJfTU9ERS5wZGYJCQlcCi0gQ1VSTE9QVF9QUk9YWVRZUEUucGRmIENVUkxPUFRfUFJPWFlVU0VSTkFNRS5wZGYJCQlcCi0gQ1VSTE9QVF9QUk9YWVVTRVJQV0QucGRmIENVUkxPUFRfUFVULnBkZiBDVVJMT1BUX1FVT1RFLnBkZgkJXAotIENVUkxPUFRfUkFORE9NX0ZJTEUucGRmIENVUkxPUFRfUkFOR0UucGRmIENVUkxPUFRfUkVBRERBVEEucGRmCQlcCi0gQ1VSTE9QVF9SRUFERlVOQ1RJT04ucGRmIENVUkxPUFRfUkVESVJfUFJPVE9DT0xTLnBkZgkJCVwKLSBDVVJMT1BUX1JFRkVSRVIucGRmIENVUkxPUFRfUkVTT0xWRS5wZGYgQ1VSTE9QVF9SRVNVTUVfRlJPTS5wZGYJXAotIENVUkxPUFRfUkVTVU1FX0ZST01fTEFSR0UucGRmIENVUkxPUFRfUlRTUF9DTElFTlRfQ1NFUS5wZGYJCVwKLSBDVVJMT1BUX1JUU1BfUkVRVUVTVC5wZGYgQ1VSTE9QVF9SVFNQX1NFUlZFUl9DU0VRLnBkZgkJCVwKLSBDVVJMT1BUX1JUU1BfU0VTU0lPTl9JRC5wZGYgQ1VSTE9QVF9SVFNQX1NUUkVBTV9VUkkucGRmCQlcCi0gQ1VSTE9QVF9SVFNQX1RSQU5TUE9SVC5wZGYgQ1VSTE9QVF9TQVNMX0lSLnBkZiBDVVJMT1BUX1NFRUtEQVRBLnBkZglcCi0gQ1VSTE9QVF9TRUVLRlVOQ1RJT04ucGRmIENVUkxPUFRfU0hBUkUucGRmIENVUkxPUFRfU09DS09QVERBVEEucGRmCVwKLSBDVVJMT1BUX1NPQ0tPUFRGVU5DVElPTi5wZGYgQ1VSTE9QVF9TT0NLUzVfR1NTQVBJX05FQy5wZGYJCVwKLSBDVVJMT1BUX1NPQ0tTNV9HU1NBUElfU0VSVklDRS5wZGYgQ1VSTE9QVF9TU0hfQVVUSF9UWVBFUy5wZGYJCVwKLSBDVVJMT1BUX1NTSF9IT1NUX1BVQkxJQ19LRVlfTUQ1LnBkZiBDVVJMT1BUX1NTSF9LRVlEQVRBLnBkZgkJXAotIENVUkxPUFRfU1NIX0tFWUZVTkNUSU9OLnBkZiBDVVJMT1BUX1NTSF9LTk9XTkhPU1RTLnBkZgkJCVwKLSBDVVJMT1BUX1NTSF9QUklWQVRFX0tFWUZJTEUucGRmIENVUkxPUFRfU1NIX1BVQkxJQ19LRVlGSUxFLnBkZgkJXAotIENVUkxPUFRfU1NMQ0VSVC5wZGYgQ1VSTE9QVF9TU0xDRVJUVFlQRS5wZGYJCQkJXAotIENVUkxPUFRfU1NMX0NJUEhFUl9MSVNULnBkZiBDVVJMT1BUX1NTTF9DVFhfREFUQS5wZGYJCQlcCi0gQ1VSTE9QVF9TU0xfQ1RYX0ZVTkNUSU9OLnBkZiBDVVJMT1BUX1NTTF9FTkFCTEVfQUxQTi5wZGYJCVwKLSBDVVJMT1BUX1NTTF9FTkFCTEVfTlBOLnBkZiBDVVJMT1BUX1NTTEVOR0lORS5wZGYJCQlcCi0gQ1VSTE9QVF9TU0xFTkdJTkVfREVGQVVMVC5wZGYgQ1VSTE9QVF9TU0xfRkFMU0VTVEFSVC5wZGYJCVwKLSBDVVJMT1BUX1NTTEtFWS5wZGYgQ1VSTE9QVF9TU0xLRVlUWVBFLnBkZiBDVVJMT1BUX1NTTF9PUFRJT05TLnBkZglcCi0gQ1VSTE9QVF9TU0xfU0VTU0lPTklEX0NBQ0hFLnBkZiBDVVJMT1BUX1NTTF9WRVJJRllIT1NULnBkZgkJXAotIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIucGRmIENVUkxPUFRfU1NMX1ZFUklGWVNUQVRVUy5wZGYJCVwKLSBDVVJMT1BUX1NTTFZFUlNJT04ucGRmIENVUkxPUFRfU1RERVJSLnBkZiBDVVJMT1BUX1RDUF9LRUVQQUxJVkUucGRmCVwKLSBDVVJMT1BUX1RDUF9LRUVQSURMRS5wZGYgQ1VSTE9QVF9UQ1BfS0VFUElOVFZMLnBkZgkJCVwKLSBDVVJMT1BUX1RDUF9OT0RFTEFZLnBkZiBDVVJMT1BUX1RFTE5FVE9QVElPTlMucGRmCQkJXAotIENVUkxPUFRfVEZUUF9CTEtTSVpFLnBkZiBDVVJMT1BUX1RJTUVDT05ESVRJT04ucGRmIENVUkxPUFRfVElNRU9VVC5wZGYJXAotIENVUkxPUFRfVElNRU9VVF9NUy5wZGYgQ1VSTE9QVF9USU1FVkFMVUUucGRmCQkJCVwKLSBDVVJMT1BUX1RMU0FVVEhfUEFTU1dPUkQucGRmIENVUkxPUFRfVExTQVVUSF9UWVBFLnBkZgkJCVwKLSBDVVJMT1BUX1RMU0FVVEhfVVNFUk5BTUUucGRmIENVUkxPUFRfVFJBTlNGRVJfRU5DT0RJTkcucGRmCQlcCi0gQ1VSTE9QVF9UUkFOU0ZFUlRFWFQucGRmIENVUkxPUFRfVU5SRVNUUklDVEVEX0FVVEgucGRmCQkJXAotIENVUkxPUFRfVVBMT0FELnBkZiBDVVJMT1BUX1VSTC5wZGYgQ1VSTE9QVF9VU0VSQUdFTlQucGRmCQlcCi0gQ1VSTE9QVF9VU0VSTkFNRS5wZGYgQ1VSTE9QVF9VU0VSUFdELnBkZiBDVVJMT1BUX1VTRV9TU0wucGRmCQlcCi0gQ1VSTE9QVF9WRVJCT1NFLnBkZiBDVVJMT1BUX1dJTERDQVJETUFUQ0gucGRmIENVUkxPUFRfV1JJVEVEQVRBLnBkZglcCi0gQ1VSTE9QVF9XUklURUZVTkNUSU9OLnBkZiBDVVJMT1BUX1hGRVJJTkZPREFUQS5wZGYJCQlcCi0gQ1VSTE9QVF9YRkVSSU5GT0ZVTkNUSU9OLnBkZiBDVVJMT1BUX1hPQVVUSDJfQkVBUkVSLnBkZgkJXAotIENVUkxNT1BUX0NIVU5LX0xFTkdUSF9QRU5BTFRZX1NJWkUucGRmCQkJCQlcCi0gQ1VSTE1PUFRfQ09OVEVOVF9MRU5HVEhfUEVOQUxUWV9TSVpFLnBkZiBDVVJMTU9QVF9NQVhDT05ORUNUUy5wZGYJXAotIENVUkxNT1BUX01BWF9IT1NUX0NPTk5FQ1RJT05TLnBkZiBDVVJMTU9QVF9NQVhfUElQRUxJTkVfTEVOR1RILnBkZglcCi0gQ1VSTE1PUFRfTUFYX1RPVEFMX0NPTk5FQ1RJT05TLnBkZiBDVVJMTU9QVF9QSVBFTElOSU5HLnBkZgkJXAotIENVUkxNT1BUX1BJUEVMSU5JTkdfU0VSVkVSX0JMLnBkZiBDVVJMTU9QVF9QSVBFTElOSU5HX1NJVEVfQkwucGRmCVwKLSBDVVJMTU9QVF9TT0NLRVREQVRBLnBkZiBDVVJMTU9QVF9TT0NLRVRGVU5DVElPTi5wZGYJCQlcCi0gQ1VSTE1PUFRfVElNRVJEQVRBLnBkZiBDVVJMTU9QVF9USU1FUkZVTkNUSU9OLnBkZgkJCVwKLSBDVVJMT1BUX1VOSVhfU09DS0VUX1BBVEgucGRmIENVUkxPUFRfUEFUSF9BU19JUy5wZGYJCQlcCi0gQ1VSTE9QVF9QUk9YWV9TRVJWSUNFX05BTUUucGRmIENVUkxPUFRfU0VSVklDRV9OQU1FLnBkZgkJXAotIENVUkxPUFRfUElQRVdBSVQucGRmCitQREZQQUdFUyA9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fQUNUSVZFU09DS0VULnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fQVBQQ09OTkVDVF9USU1FLnBkZiAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fQ0VSVElORk8ucGRmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fQ09ORElUSU9OX1VOTUVULnBkZiAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fQ09OTkVDVF9USU1FLnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fQ09OVEVOVF9MRU5HVEhfRE9XTkxPQUQucGRmICAgICAgICAgICBcCisgQ1VSTElORk9fQ09OVEVOVF9MRU5HVEhfVVBMT0FELnBkZiAgICAgICAgICAgICBcCisgQ1VSTElORk9fQ09OVEVOVF9UWVBFLnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fQ09PS0lFTElTVC5wZGYgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fRUZGRUNUSVZFX1VSTC5wZGYgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fRklMRVRJTUUucGRmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fRlRQX0VOVFJZX1BBVEgucGRmICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fSEVBREVSX1NJWkUucGRmICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fSFRUUEFVVEhfQVZBSUwucGRmICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fSFRUUF9DT05ORUNUQ09ERS5wZGYgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fTEFTVFNPQ0tFVC5wZGYgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fTE9DQUxfSVAucGRmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fTE9DQUxfUE9SVC5wZGYgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fTkFNRUxPT0tVUF9USU1FLnBkZiAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fTlVNX0NPTk5FQ1RTLnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fT1NfRVJSTk8ucGRmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fUFJFVFJBTlNGRVJfVElNRS5wZGYgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fUFJJTUFSWV9JUC5wZGYgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fUFJJTUFSWV9QT1JULnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fUFJJVkFURS5wZGYgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fUFJPWFlBVVRIX0FWQUlMLnBkZiAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fUkVESVJFQ1RfQ09VTlQucGRmICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fUkVESVJFQ1RfVElNRS5wZGYgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fUkVESVJFQ1RfVVJMLnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fUkVRVUVTVF9TSVpFLnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fUkVTUE9OU0VfQ09ERS5wZGYgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fUlRTUF9DTElFTlRfQ1NFUS5wZGYgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fUlRTUF9DU0VRX1JFQ1YucGRmICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fUlRTUF9TRVJWRVJfQ1NFUS5wZGYgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fUlRTUF9TRVNTSU9OX0lELnBkZiAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fU0laRV9ET1dOTE9BRC5wZGYgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fU0laRV9VUExPQUQucGRmICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fU1BFRURfRE9XTkxPQUQucGRmICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fU1BFRURfVVBMT0FELnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fU1NMX0VOR0lORVMucGRmICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fU1NMX1ZFUklGWVJFU1VMVC5wZGYgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fU1RBUlRUUkFOU0ZFUl9USU1FLnBkZiAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fVExTX1NFU1NJT04ucGRmICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fVExTX1NTTF9QVFIucGRmICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTElORk9fVE9UQUxfVElNRS5wZGYgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE1PUFRfQ0hVTktfTEVOR1RIX1BFTkFMVFlfU0laRS5wZGYgICAgICAgICBcCisgQ1VSTE1PUFRfQ09OVEVOVF9MRU5HVEhfUEVOQUxUWV9TSVpFLnBkZiAgICAgICBcCisgQ1VSTE1PUFRfTUFYQ09OTkVDVFMucGRmICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE1PUFRfTUFYX0hPU1RfQ09OTkVDVElPTlMucGRmICAgICAgICAgICAgICBcCisgQ1VSTE1PUFRfTUFYX1BJUEVMSU5FX0xFTkdUSC5wZGYgICAgICAgICAgICAgICBcCisgQ1VSTE1PUFRfTUFYX1RPVEFMX0NPTk5FQ1RJT05TLnBkZiAgICAgICAgICAgICBcCisgQ1VSTE1PUFRfUElQRUxJTklORy5wZGYgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE1PUFRfUElQRUxJTklOR19TRVJWRVJfQkwucGRmICAgICAgICAgICAgICBcCisgQ1VSTE1PUFRfUElQRUxJTklOR19TSVRFX0JMLnBkZiAgICAgICAgICAgICAgICBcCisgQ1VSTE1PUFRfUFVTSERBVEEucGRmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE1PUFRfUFVTSEZVTkNUSU9OLnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE1PUFRfU09DS0VUREFUQS5wZGYgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE1PUFRfU09DS0VURlVOQ1RJT04ucGRmICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE1PUFRfVElNRVJEQVRBLnBkZiAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE1PUFRfVElNRVJGVU5DVElPTi5wZGYgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9BQ0NFUFRUSU1FT1VUX01TLnBkZiAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9BQ0NFUFRfRU5DT0RJTkcucGRmICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9BRERSRVNTX1NDT1BFLnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9BUFBFTkQucGRmICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9BVVRPUkVGRVJFUi5wZGYgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9CVUZGRVJTSVpFLnBkZiAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DQUlORk8ucGRmICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DQVBBVEgucGRmICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DRVJUSU5GTy5wZGYgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DSFVOS19CR05fRlVOQ1RJT04ucGRmICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DSFVOS19EQVRBLnBkZiAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DSFVOS19FTkRfRlVOQ1RJT04ucGRmICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DTE9TRVNPQ0tFVERBVEEucGRmICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DTE9TRVNPQ0tFVEZVTkNUSU9OLnBkZiAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DT05ORUNUVElNRU9VVC5wZGYgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DT05ORUNUVElNRU9VVF9NUy5wZGYgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DT05ORUNUX09OTFkucGRmICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DT05ORUNUX1RPLnBkZiAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DT05WX0ZST01fTkVUV09SS19GVU5DVElPTi5wZGYgICAgICAgICBcCisgQ1VSTE9QVF9DT05WX0ZST01fVVRGOF9GVU5DVElPTi5wZGYgICAgICAgICAgICBcCisgQ1VSTE9QVF9DT05WX1RPX05FVFdPUktfRlVOQ1RJT04ucGRmICAgICAgICAgICBcCisgQ1VSTE9QVF9DT09LSUUucGRmICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DT09LSUVGSUxFLnBkZiAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DT09LSUVKQVIucGRmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DT09LSUVMSVNULnBkZiAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DT09LSUVTRVNTSU9OLnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DT1BZUE9TVEZJRUxEUy5wZGYgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DUkxGLnBkZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DUkxGSUxFLnBkZiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9DVVNUT01SRVFVRVNULnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9ERUJVR0RBVEEucGRmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9ERUJVR0ZVTkNUSU9OLnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9ERUZBVUxUX1BST1RPQ09MLnBkZiAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9ESVJMSVNUT05MWS5wZGYgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9ETlNfQ0FDSEVfVElNRU9VVC5wZGYgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9ETlNfSU5URVJGQUNFLnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9ETlNfTE9DQUxfSVA0LnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9ETlNfTE9DQUxfSVA2LnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9ETlNfU0VSVkVSUy5wZGYgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9ETlNfVVNFX0dMT0JBTF9DQUNIRS5wZGYgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9FR0RTT0NLRVQucGRmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9FUlJPUkJVRkZFUi5wZGYgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9FWFBFQ1RfMTAwX1RJTUVPVVRfTVMucGRmICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GQUlMT05FUlJPUi5wZGYgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GSUxFVElNRS5wZGYgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GTk1BVENIX0RBVEEucGRmICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GTk1BVENIX0ZVTkNUSU9OLnBkZiAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GT0xMT1dMT0NBVElPTi5wZGYgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GT1JCSURfUkVVU0UucGRmICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GUkVTSF9DT05ORUNULnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GVFBQT1JULnBkZiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GVFBTU0xBVVRILnBkZiAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GVFBfQUNDT1VOVC5wZGYgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GVFBfQUxURVJOQVRJVkVfVE9fVVNFUi5wZGYgICAgICAgICAgICBcCisgQ1VSTE9QVF9GVFBfQ1JFQVRFX01JU1NJTkdfRElSUy5wZGYgICAgICAgICAgICBcCisgQ1VSTE9QVF9GVFBfRklMRU1FVEhPRC5wZGYgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GVFBfUkVTUE9OU0VfVElNRU9VVC5wZGYgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GVFBfU0tJUF9QQVNWX0lQLnBkZiAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GVFBfU1NMX0NDQy5wZGYgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GVFBfVVNFX0VQUlQucGRmICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GVFBfVVNFX0VQU1YucGRmICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9GVFBfVVNFX1BSRVQucGRmICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9HU1NBUElfREVMRUdBVElPTi5wZGYgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9IRUFERVIucGRmICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9IRUFERVJEQVRBLnBkZiAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9IRUFERVJGVU5DVElPTi5wZGYgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9IRUFERVJPUFQucGRmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9IVFRQMjAwQUxJQVNFUy5wZGYgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9IVFRQQVVUSC5wZGYgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9IVFRQR0VULnBkZiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9IVFRQSEVBREVSLnBkZiAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9IVFRQUE9TVC5wZGYgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9IVFRQUFJPWFlUVU5ORUwucGRmICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9IVFRQX0NPTlRFTlRfREVDT0RJTkcucGRmICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9IVFRQX1RSQU5TRkVSX0RFQ09ESU5HLnBkZiAgICAgICAgICAgICBcCisgQ1VSTE9QVF9IVFRQX1ZFUlNJT04ucGRmICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9JR05PUkVfQ09OVEVOVF9MRU5HVEgucGRmICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9JTkZJTEVTSVpFLnBkZiAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9JTkZJTEVTSVpFX0xBUkdFLnBkZiAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9JTlRFUkZBQ0UucGRmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9JTlRFUkxFQVZFREFUQS5wZGYgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9JTlRFUkxFQVZFRlVOQ1RJT04ucGRmICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9JT0NUTERBVEEucGRmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9JT0NUTEZVTkNUSU9OLnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9JUFJFU09MVkUucGRmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9JU1NVRVJDRVJULnBkZiAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9LRVlQQVNTV0QucGRmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9LUkJMRVZFTC5wZGYgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9MT0NBTFBPUlQucGRmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9MT0NBTFBPUlRSQU5HRS5wZGYgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9MT0dJTl9PUFRJT05TLnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9MT1dfU1BFRURfTElNSVQucGRmICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9MT1dfU1BFRURfVElNRS5wZGYgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9NQUlMX0FVVEgucGRmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9NQUlMX0ZST00ucGRmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9NQUlMX1JDUFQucGRmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9NQVhDT05ORUNUUy5wZGYgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9NQVhGSUxFU0laRS5wZGYgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9NQVhGSUxFU0laRV9MQVJHRS5wZGYgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9NQVhSRURJUlMucGRmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9NQVhfUkVDVl9TUEVFRF9MQVJHRS5wZGYgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9NQVhfU0VORF9TUEVFRF9MQVJHRS5wZGYgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9ORVRSQy5wZGYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9ORVRSQ19GSUxFLnBkZiAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9ORVdfRElSRUNUT1JZX1BFUk1TLnBkZiAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9ORVdfRklMRV9QRVJNUy5wZGYgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9OT0JPRFkucGRmICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9OT1BST0dSRVNTLnBkZiAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9OT1BST1hZLnBkZiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9OT1NJR05BTC5wZGYgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9PUEVOU09DS0VUREFUQS5wZGYgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9PUEVOU09DS0VURlVOQ1RJT04ucGRmICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QQVNTV09SRC5wZGYgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QQVRIX0FTX0lTLnBkZiAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QSU5ORURQVUJMSUNLRVkucGRmICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QSVBFV0FJVC5wZGYgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QT1JULnBkZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QT1NULnBkZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QT1NURklFTERTLnBkZiAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QT1NURklFTERTSVpFLnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QT1NURklFTERTSVpFX0xBUkdFLnBkZiAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QT1NUUVVPVEUucGRmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QT1NUUkVESVIucGRmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUkVRVU9URS5wZGYgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUklWQVRFLnBkZiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUk9HUkVTU0RBVEEucGRmICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUk9HUkVTU0ZVTkNUSU9OLnBkZiAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUk9UT0NPTFMucGRmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUk9YWS5wZGYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUk9YWUFVVEgucGRmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUk9YWUhFQURFUi5wZGYgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUk9YWVBBU1NXT1JELnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUk9YWVBPUlQucGRmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUk9YWVRZUEUucGRmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUk9YWVVTRVJOQU1FLnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUk9YWVVTRVJQV0QucGRmICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUk9YWV9TRVJWSUNFX05BTUUucGRmICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QUk9YWV9UUkFOU0ZFUl9NT0RFLnBkZiAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9QVVQucGRmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9RVU9URS5wZGYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SQU5ET01fRklMRS5wZGYgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SQU5HRS5wZGYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SRUFEREFUQS5wZGYgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SRUFERlVOQ1RJT04ucGRmICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SRURJUl9QUk9UT0NPTFMucGRmICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SRUZFUkVSLnBkZiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SRVNPTFZFLnBkZiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SRVNVTUVfRlJPTS5wZGYgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SRVNVTUVfRlJPTV9MQVJHRS5wZGYgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SVFNQX0NMSUVOVF9DU0VRLnBkZiAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SVFNQX1JFUVVFU1QucGRmICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SVFNQX1NFUlZFUl9DU0VRLnBkZiAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SVFNQX1NFU1NJT05fSUQucGRmICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SVFNQX1NUUkVBTV9VUkkucGRmICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9SVFNQX1RSQU5TUE9SVC5wZGYgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TQVNMX0lSLnBkZiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TRUVLREFUQS5wZGYgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TRUVLRlVOQ1RJT04ucGRmICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TRVJWSUNFX05BTUUucGRmICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TSEFSRS5wZGYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TT0NLT1BUREFUQS5wZGYgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TT0NLT1BURlVOQ1RJT04ucGRmICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TT0NLUzVfR1NTQVBJX05FQy5wZGYgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TT0NLUzVfR1NTQVBJX1NFUlZJQ0UucGRmICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0hfQVVUSF9UWVBFUy5wZGYgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0hfSE9TVF9QVUJMSUNfS0VZX01ENS5wZGYgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0hfS0VZREFUQS5wZGYgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0hfS0VZRlVOQ1RJT04ucGRmICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0hfS05PV05IT1NUUy5wZGYgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0hfUFJJVkFURV9LRVlGSUxFLnBkZiAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0hfUFVCTElDX0tFWUZJTEUucGRmICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xDRVJULnBkZiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xDRVJUVFlQRS5wZGYgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xFTkdJTkUucGRmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xFTkdJTkVfREVGQVVMVC5wZGYgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xLRVkucGRmICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xLRVlUWVBFLnBkZiAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xWRVJTSU9OLnBkZiAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xfQ0lQSEVSX0xJU1QucGRmICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xfQ1RYX0RBVEEucGRmICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xfQ1RYX0ZVTkNUSU9OLnBkZiAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xfRU5BQkxFX0FMUE4ucGRmICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xfRU5BQkxFX05QTi5wZGYgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xfRkFMU0VTVEFSVC5wZGYgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xfT1BUSU9OUy5wZGYgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xfU0VTU0lPTklEX0NBQ0hFLnBkZiAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xfVkVSSUZZSE9TVC5wZGYgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUi5wZGYgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TU0xfVkVSSUZZU1RBVFVTLnBkZiAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TVERFUlIucGRmICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TVFJFQU1fREVQRU5EUy5wZGYgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TVFJFQU1fREVQRU5EU19FLnBkZiAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9TVFJFQU1fV0VJR0hULnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9UQ1BfRkFTVE9QRU4ucGRmICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9UQ1BfS0VFUEFMSVZFLnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9UQ1BfS0VFUElETEUucGRmICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9UQ1BfS0VFUElOVFZMLnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9UQ1BfTk9ERUxBWS5wZGYgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9URUxORVRPUFRJT05TLnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9URlRQX0JMS1NJWkUucGRmICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9URlRQX05PX09QVElPTlMucGRmICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9USU1FQ09ORElUSU9OLnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9USU1FT1VULnBkZiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9USU1FT1VUX01TLnBkZiAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9USU1FVkFMVUUucGRmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9UTFNBVVRIX1BBU1NXT1JELnBkZiAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9UTFNBVVRIX1RZUEUucGRmICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9UTFNBVVRIX1VTRVJOQU1FLnBkZiAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9UUkFOU0ZFUlRFWFQucGRmICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9UUkFOU0ZFUl9FTkNPRElORy5wZGYgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9VTklYX1NPQ0tFVF9QQVRILnBkZiAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9VTlJFU1RSSUNURURfQVVUSC5wZGYgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9VUExPQUQucGRmICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9VUkwucGRmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9VU0VSQUdFTlQucGRmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9VU0VSTkFNRS5wZGYgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9VU0VSUFdELnBkZiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9VU0VfU1NMLnBkZiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9WRVJCT1NFLnBkZiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9XSUxEQ0FSRE1BVENILnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9XUklURURBVEEucGRmICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9XUklURUZVTkNUSU9OLnBkZiAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9YRkVSSU5GT0RBVEEucGRmICAgICAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9YRkVSSU5GT0ZVTkNUSU9OLnBkZiAgICAgICAgICAgICAgICAgICBcCisgQ1VSTE9QVF9YT0FVVEgyX0JFQVJFUi5wZGYKIAogQ0xFQU5GSUxFUyA9ICQoSFRNTFBBR0VTKSAkKFBERlBBR0VTKQogCiBFWFRSQV9ESVNUID0gJChtYW5fTUFOUykgJChIVE1MUEFHRVMpICQoUERGUEFHRVMpCi1NQU4ySFRNTD0gcm9mZml0IC0tbWFuZGlyPS4gPCAkPCA+JEAKK01BTjJIVE1MPSByb2ZmaXQgLS1tYW5kaXI9LiAkPCA+JEAKIAogU1VGRklYRVMgPSAuMyAuaHRtbAogCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvb3B0cy90ZW1wbGF0ZS4zIGIvZG9jcy9saWJjdXJsL29wdHMvdGVtcGxhdGUuMwppbmRleCAxODRlNDcxLi43YmEyMjBlIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvb3B0cy90ZW1wbGF0ZS4zCisrKyBiL2RvY3MvbGliY3VybC9vcHRzL3RlbXBsYXRlLjMKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJjdXJsL3N5bWJvbHMtaW4tdmVyc2lvbnMgYi9kb2NzL2xpYmN1cmwvc3ltYm9scy1pbi12ZXJzaW9ucwppbmRleCA4Mjk5YTUxLi5mYTI2ZWZiIDEwMDY0NAotLS0gYS9kb2NzL2xpYmN1cmwvc3ltYm9scy1pbi12ZXJzaW9ucworKysgYi9kb2NzL2xpYmN1cmwvc3ltYm9scy1pbi12ZXJzaW9ucwpAQCAtNzUsNiArNzUsNyBAQAogQ1VSTEVfRlVOQ1RJT05fTk9UX0ZPVU5EICAgICAgICA3LjEKIENVUkxFX0dPVF9OT1RISU5HICAgICAgICAgICAgICAgNy45LjEKIENVUkxFX0hUVFAyICAgICAgICAgICAgICAgICAgICAgNy4zOC4wCitDVVJMRV9IVFRQMl9TVFJFQU0gICAgICAgICAgICAgIDcuNDkuMAogQ1VSTEVfSFRUUF9OT1RfRk9VTkQgICAgICAgICAgICA3LjEKIENVUkxFX0hUVFBfUE9SVF9GQUlMRUQgICAgICAgICAgNy4zICAgICAgICAgICA3LjEyLjAKIENVUkxFX0hUVFBfUE9TVF9FUlJPUiAgICAgICAgICAgNy4xCkBAIC0xNjQsNiArMTY1LDcgQEAKIENVUkxGT1JNX0JVRkZFUkxFTkdUSCAgICAgICAgICAgNy45LjgKIENVUkxGT1JNX0JVRkZFUlBUUiAgICAgICAgICAgICAgNy45LjgKIENVUkxGT1JNX0NPTlRFTlRIRUFERVIgICAgICAgICAgNy45LjMKK0NVUkxGT1JNX0NPTlRFTlRMRU4gICAgICAgICAgICAgNy40Ni4wCiBDVVJMRk9STV9DT05URU5UU0xFTkdUSCAgICAgICAgIDcuOQogQ1VSTEZPUk1fQ09OVEVOVFRZUEUgICAgICAgICAgICA3LjkKIENVUkxGT1JNX0NPUFlDT05URU5UUyAgICAgICAgICAgNy45CkBAIC0xOTksNiArMjAxLDcgQEAKIENVUkxHU1NBUElfREVMRUdBVElPTl9QT0xJQ1lfRkxBRyA3LjIyLjAKIENVUkxIRUFERVJfU0VQQVJBVEUgICAgICAgICAgICAgNy4zNy4wCiBDVVJMSEVBREVSX1VOSUZJRUQgICAgICAgICAgICAgIDcuMzcuMAorQ1VSTElORk9fQUNUSVZFU09DS0VUICAgICAgICAgICA3LjQ1LjAKIENVUkxJTkZPX0FQUENPTk5FQ1RfVElNRSAgICAgICAgNy4xOS4wCiBDVVJMSU5GT19DRVJUSU5GTyAgICAgICAgICAgICAgIDcuMTkuMQogQ1VSTElORk9fQ09ORElUSU9OX1VOTUVUICAgICAgICA3LjE5LjQKQEAgLTI0Nyw2ICsyNTAsNyBAQAogQ1VSTElORk9fU0laRV9ET1dOTE9BRCAgICAgICAgICA3LjQuMQogQ1VSTElORk9fU0laRV9VUExPQUQgICAgICAgICAgICA3LjQuMQogQ1VSTElORk9fU0xJU1QgICAgICAgICAgICAgICAgICA3LjEyLjMKK0NVUkxJTkZPX1NPQ0tFVCAgICAgICAgICAgICAgICAgNy40NS4wCiBDVVJMSU5GT19TUEVFRF9ET1dOTE9BRCAgICAgICAgIDcuNC4xCiBDVVJMSU5GT19TUEVFRF9VUExPQUQgICAgICAgICAgIDcuNC4xCiBDVVJMSU5GT19TU0xfREFUQV9JTiAgICAgICAgICAgIDcuMTIuMQpAQCAtMjU2LDcgKzI2MCw4IEBACiBDVVJMSU5GT19TVEFSVFRSQU5TRkVSX1RJTUUgICAgIDcuOS4yCiBDVVJMSU5GT19TVFJJTkcgICAgICAgICAgICAgICAgIDcuNC4xCiBDVVJMSU5GT19URVhUICAgICAgICAgICAgICAgICAgIDcuOS42Ci1DVVJMSU5GT19UTFNfU0VTU0lPTiAgICAgICAgICAgIDcuMzQuMAorQ1VSTElORk9fVExTX1NFU1NJT04gICAgICAgICAgICA3LjM0LjAgICAgICAgIDcuNDguMAorQ1VSTElORk9fVExTX1NTTF9QVFIgICAgICAgICAgICA3LjQ4LjAKIENVUkxJTkZPX1RPVEFMX1RJTUUgICAgICAgICAgICAgNy40LjEKIENVUkxJTkZPX1RZUEVNQVNLICAgICAgICAgICAgICAgNy40LjEKIENVUkxJT0NNRF9OT1AgICAgICAgICAgICAgICAgICAgNy4xMi4zCkBAIC0yODQsNiArMjg5LDggQEAKIENVUkxNT1BUX1BJUEVMSU5JTkcgICAgICAgICAgICAgNy4xNi4wCiBDVVJMTU9QVF9QSVBFTElOSU5HX1NFUlZFUl9CTCAgIDcuMzAuMAogQ1VSTE1PUFRfUElQRUxJTklOR19TSVRFX0JMICAgICA3LjMwLjAKK0NVUkxNT1BUX1BVU0hEQVRBICAgICAgICAgICAgICAgNy40NC4wCitDVVJMTU9QVF9QVVNIRlVOQ1RJT04gICAgICAgICAgIDcuNDQuMAogQ1VSTE1PUFRfU09DS0VUREFUQSAgICAgICAgICAgICA3LjE1LjQKIENVUkxNT1BUX1NPQ0tFVEZVTkNUSU9OICAgICAgICAgNy4xNS40CiBDVVJMTU9QVF9USU1FUkRBVEEgICAgICAgICAgICAgIDcuMTYuMApAQCAtMzA0LDYgKzMxMSw3IEBACiBDVVJMT1BUVFlQRV9MT05HICAgICAgICAgICAgICAgIDcuMQogQ1VSTE9QVFRZUEVfT0JKRUNUUE9JTlQgICAgICAgICA3LjEKIENVUkxPUFRUWVBFX09GRl9UICAgICAgICAgICAgICAgNy4xMS4wCitDVVJMT1BUVFlQRV9TVFJJTkdQT0lOVCAgICAgICAgIDcuNDYuMAogQ1VSTE9QVF9BQ0NFUFRUSU1FT1VUX01TICAgICAgICA3LjI0LjAKIENVUkxPUFRfQUNDRVBUX0VOQ09ESU5HICAgICAgICAgNy4yMS42CiBDVVJMT1BUX0FERFJFU1NfU0NPUEUgICAgICAgICAgIDcuMTkuMApAQCAtMzIzLDYgKzMzMSw3IEBACiBDVVJMT1BUX0NPTk5FQ1RUSU1FT1VUICAgICAgICAgIDcuNwogQ1VSTE9QVF9DT05ORUNUVElNRU9VVF9NUyAgICAgICA3LjE2LjIKIENVUkxPUFRfQ09OTkVDVF9PTkxZICAgICAgICAgICAgNy4xNS4yCitDVVJMT1BUX0NPTk5FQ1RfVE8gICAgICAgICAgICAgIDcuNDkuMAogQ1VSTE9QVF9DT05WX0ZST01fTkVUV09SS19GVU5DVElPTiA3LjE1LjQKIENVUkxPUFRfQ09OVl9GUk9NX1VURjhfRlVOQ1RJT04gNy4xNS40CiBDVVJMT1BUX0NPTlZfVE9fTkVUV09SS19GVU5DVElPTiA3LjE1LjQKQEAgLTMzNyw2ICszNDYsNyBAQAogQ1VSTE9QVF9DVVNUT01SRVFVRVNUICAgICAgICAgICA3LjEKIENVUkxPUFRfREVCVUdEQVRBICAgICAgICAgICAgICAgNy45LjYKIENVUkxPUFRfREVCVUdGVU5DVElPTiAgICAgICAgICAgNy45LjYKK0NVUkxPUFRfREVGQVVMVF9QUk9UT0NPTCAgICAgICAgNy40NS4wCiBDVVJMT1BUX0RJUkxJU1RPTkxZICAgICAgICAgICAgIDcuMTcuMAogQ1VSTE9QVF9ETlNfQ0FDSEVfVElNRU9VVCAgICAgICA3LjkuMwogQ1VSTE9QVF9ETlNfSU5URVJGQUNFICAgICAgICAgICA3LjMzLjAKQEAgLTQ4NCw3ICs0OTQsNyBAQAogQ1VSTE9QVF9TT0NLT1BUREFUQSAgICAgICAgICAgICA3LjE2LjAKIENVUkxPUFRfU09DS09QVEZVTkNUSU9OICAgICAgICAgNy4xNi4wCiBDVVJMT1BUX1NPQ0tTNV9HU1NBUElfTkVDICAgICAgIDcuMTkuNAotQ1VSTE9QVF9TT0NLUzVfR1NTQVBJX1NFUlZJQ0UgICA3LjE5LjQKK0NVUkxPUFRfU09DS1M1X0dTU0FQSV9TRVJWSUNFICAgNy4xOS40ICAgICAgICA3LjQ5LjAKIENVUkxPUFRfU09VUkNFX0hPU1QgICAgICAgICAgICAgNy4xMi4xICAgICAgICAtICAgICAgICAgICA3LjE1LjUKIENVUkxPUFRfU09VUkNFX1BBVEggICAgICAgICAgICAgNy4xMi4xICAgICAgICAtICAgICAgICAgICA3LjE1LjUKIENVUkxPUFRfU09VUkNFX1BPUlQgICAgICAgICAgICAgNy4xMi4xICAgICAgICAtICAgICAgICAgICA3LjE1LjUKQEAgLTUyMSwxMiArNTMxLDE3IEBACiBDVVJMT1BUX1NTTF9WRVJJRllQRUVSICAgICAgICAgIDcuNC4yCiBDVVJMT1BUX1NTTF9WRVJJRllTVEFUVVMgICAgICAgIDcuNDEuMAogQ1VSTE9QVF9TVERFUlIgICAgICAgICAgICAgICAgICA3LjEKK0NVUkxPUFRfU1RSRUFNX0RFUEVORFMgICAgICAgICAgNy40Ni4wCitDVVJMT1BUX1NUUkVBTV9ERVBFTkRTX0UgICAgICAgIDcuNDYuMAorQ1VSTE9QVF9TVFJFQU1fV0VJR0hUICAgICAgICAgICA3LjQ2LjAKIENVUkxPUFRfVENQX0tFRVBBTElWRSAgICAgICAgICAgNy4yNS4wCiBDVVJMT1BUX1RDUF9LRUVQSURMRSAgICAgICAgICAgIDcuMjUuMAogQ1VSTE9QVF9UQ1BfS0VFUElOVFZMICAgICAgICAgICA3LjI1LjAKIENVUkxPUFRfVENQX05PREVMQVkgICAgICAgICAgICAgNy4xMS4yCitDVVJMT1BUX1RDUF9GQVNUT1BFTiAgICAgICAgICAgIDcuNDkuMAogQ1VSTE9QVF9URUxORVRPUFRJT05TICAgICAgICAgICA3LjcKIENVUkxPUFRfVEZUUF9CTEtTSVpFICAgICAgICAgICAgNy4xOS40CitDVVJMT1BUX1RGVFBfTk9fT1BUSU9OUyAgICAgICAgIDcuNDguMAogQ1VSTE9QVF9USU1FQ09ORElUSU9OICAgICAgICAgICA3LjEKIENVUkxPUFRfVElNRU9VVCAgICAgICAgICAgICAgICAgNy4xCiBDVVJMT1BUX1RJTUVPVVRfTVMgICAgICAgICAgICAgIDcuMTYuMgpAQCAtNjIwLDE3ICs2MzUsMjIgQEAKIENVUkxTU0hfQVVUSF9QQVNTV09SRCAgICAgICAgICAgNy4xNi4xCiBDVVJMU1NIX0FVVEhfUFVCTElDS0VZICAgICAgICAgIDcuMTYuMQogQ1VSTFNTTEJBQ0tFTkRfQVhUTFMgICAgICAgICAgICA3LjM4LjAKK0NVUkxTU0xCQUNLRU5EX0JPUklOR1NTTCAgICAgICAgNy40OS4wCiBDVVJMU1NMQkFDS0VORF9DWUFTU0wgICAgICAgICAgIDcuMzQuMAogQ1VSTFNTTEJBQ0tFTkRfREFSV0lOU1NMICAgICAgICA3LjM0LjAKIENVUkxTU0xCQUNLRU5EX0dOVVRMUyAgICAgICAgICAgNy4zNC4wCiBDVVJMU1NMQkFDS0VORF9HU0tJVCAgICAgICAgICAgIDcuMzQuMAorQ1VSTFNTTEJBQ0tFTkRfTElCUkVTU0wgICAgICAgICA3LjQ5LjAKK0NVUkxTU0xCQUNLRU5EX01CRURUTFMgICAgICAgICAgNy40Ni4wCiBDVVJMU1NMQkFDS0VORF9OT05FICAgICAgICAgICAgIDcuMzQuMAogQ1VSTFNTTEJBQ0tFTkRfTlNTICAgICAgICAgICAgICA3LjM0LjAKIENVUkxTU0xCQUNLRU5EX09QRU5TU0wgICAgICAgICAgNy4zNC4wCiBDVVJMU1NMQkFDS0VORF9QT0xBUlNTTCAgICAgICAgIDcuMzQuMAogQ1VSTFNTTEJBQ0tFTkRfUVNPU1NMICAgICAgICAgICA3LjM0LjAgICAgICAgIC0gICAgICAgICAgIDcuMzguMQogQ1VSTFNTTEJBQ0tFTkRfU0NIQU5ORUwgICAgICAgICA3LjM0LjAKK0NVUkxTU0xCQUNLRU5EX1dPTEZTU0wgICAgICAgICAgNy40OS4wCiBDVVJMU1NMT1BUX0FMTE9XX0JFQVNUICAgICAgICAgIDcuMjUuMAorQ1VSTFNTTE9QVF9OT19SRVZPS0UgICAgICAgICAgICA3LjQ0LjAKIENVUkxVU0VTU0xfQUxMICAgICAgICAgICAgICAgICAgNy4xNy4wCiBDVVJMVVNFU1NMX0NPTlRST0wgICAgICAgICAgICAgIDcuMTcuMAogQ1VSTFVTRVNTTF9OT05FICAgICAgICAgICAgICAgICA3LjE3LjAKQEAgLTY0OCw2ICs2NjgsNyBAQAogQ1VSTF9DU0VMRUNUX0VSUiAgICAgICAgICAgICAgICA3LjE2LjMKIENVUkxfQ1NFTEVDVF9JTiAgICAgICAgICAgICAgICAgNy4xNi4zCiBDVVJMX0NTRUxFQ1RfT1VUICAgICAgICAgICAgICAgIDcuMTYuMworQ1VSTF9ESURfTUVNT1JZX0ZVTkNfVFlQRURFRlMgICA3LjQ5LjAKIENVUkxfRUFTWV9OT05FICAgICAgICAgICAgICAgICAgNy4xNC4wICAgICAgICAtICAgICAgICAgICA3LjE1LjQKIENVUkxfRUFTWV9USU1FT1VUICAgICAgICAgICAgICAgNy4xNC4wICAgICAgICAtICAgICAgICAgICA3LjE1LjQKIENVUkxfRVJST1JfU0laRSAgICAgICAgICAgICAgICAgNy4xCkBAIC02NjgsMTAgKzY4OSwyMCBAQAogQ1VSTF9HTE9CQUxfTk9USElORyAgICAgICAgICAgICA3LjgKIENVUkxfR0xPQkFMX1NTTCAgICAgICAgICAgICAgICAgNy44CiBDVVJMX0dMT0JBTF9XSU4zMiAgICAgICAgICAgICAgIDcuOC4xCitDVVJMX0hUVFBQT1NUX0JVRkZFUiAgICAgICAgICAgIDcuNDYuMAorQ1VSTF9IVFRQUE9TVF9DQUxMQkFDSyAgICAgICAgICA3LjQ2LjAKK0NVUkxfSFRUUFBPU1RfRklMRU5BTUUgICAgICAgICAgNy40Ni4wCitDVVJMX0hUVFBQT1NUX0xBUkdFICAgICAgICAgICAgIDcuNDYuMAorQ1VSTF9IVFRQUE9TVF9QVFJCVUZGRVIgICAgICAgICA3LjQ2LjAKK0NVUkxfSFRUUFBPU1RfUFRSQ09OVEVOVFMgICAgICAgNy40Ni4wCitDVVJMX0hUVFBQT1NUX1BUUk5BTUUgICAgICAgICAgIDcuNDYuMAorQ1VSTF9IVFRQUE9TVF9SRUFERklMRSAgICAgICAgICA3LjQ2LjAKIENVUkxfSFRUUF9WRVJTSU9OXzFfMCAgICAgICAgICAgNy45LjEKIENVUkxfSFRUUF9WRVJTSU9OXzFfMSAgICAgICAgICAgNy45LjEKLUNVUkxfSFRUUF9WRVJTSU9OXzJfMCAgICAgICAgICAgNy4zMy4wCiBDVVJMX0hUVFBfVkVSU0lPTl8yICAgICAgICAgICAgIDcuNDMuMAorQ1VSTF9IVFRQX1ZFUlNJT05fMl8wICAgICAgICAgICA3LjMzLjAKK0NVUkxfSFRUUF9WRVJTSU9OXzJUTFMgICAgICAgICAgNy40Ny4wCitDVVJMX0hUVFBfVkVSU0lPTl8yX1BSSU9SX0tOT1dMRURHRSA3LjQ5LjAKIENVUkxfSFRUUF9WRVJTSU9OX05PTkUgICAgICAgICAgNy45LjEKIENVUkxfSVBSRVNPTFZFX1Y0ICAgICAgICAgICAgICAgNy4xMC44CiBDVVJMX0lQUkVTT0xWRV9WNiAgICAgICAgICAgICAgIDcuMTAuOApAQCAtNzAyLDYgKzczMyw4IEBACiBDVVJMX1BPTExfUkVNT1ZFICAgICAgICAgICAgICAgIDcuMTQuMAogQ1VSTF9QUk9HUkVTU19CQVIgICAgICAgICAgICAgICA3LjEuMSAgICAgICAgIC0gICAgICAgICAgIDcuNC4xCiBDVVJMX1BST0dSRVNTX1NUQVRTICAgICAgICAgICAgIDcuMS4xICAgICAgICAgLSAgICAgICAgICAgNy40LjEKK0NVUkxfUFVTSF9ERU5ZICAgICAgICAgICAgICAgICAgNy40NC4wCitDVVJMX1BVU0hfT0sgICAgICAgICAgICAgICAgICAgIDcuNDQuMAogQ1VSTF9SRUFERlVOQ19BQk9SVCAgICAgICAgICAgICA3LjEyLjEKIENVUkxfUkVBREZVTkNfUEFVU0UgICAgICAgICAgICAgNy4xOC4wCiBDVVJMX1JFRElSX0dFVF9BTEwgICAgICAgICAgICAgIDcuMTkuMQpAQCAtNzU3LDYgKzc5MCw3IEBACiBDVVJMX1ZFUlNJT05fTElCWiAgICAgICAgICAgICAgIDcuMTAKIENVUkxfVkVSU0lPTl9OVExNICAgICAgICAgICAgICAgNy4xMC42CiBDVVJMX1ZFUlNJT05fTlRMTV9XQiAgICAgICAgICAgIDcuMjIuMAorQ1VSTF9WRVJTSU9OX1BTTCAgICAgICAgICAgICAgICA3LjQ3LjAKIENVUkxfVkVSU0lPTl9TUE5FR08gICAgICAgICAgICAgNy4xMC44CiBDVVJMX1ZFUlNJT05fU1NMICAgICAgICAgICAgICAgIDcuMTAKIENVUkxfVkVSU0lPTl9TU1BJICAgICAgICAgICAgICAgNy4xMy4yCmRpZmYgLS1naXQgYS9kb2NzL2xpYmN1cmwvc3ltYm9scy5wbCBiL2RvY3MvbGliY3VybC9zeW1ib2xzLnBsCmluZGV4IGE3Yjc2ZTIuLmNmY2VjZDAgMTAwNzU1Ci0tLSBhL2RvY3MvbGliY3VybC9zeW1ib2xzLnBsCisrKyBiL2RvY3MvbGliY3VybC9zeW1ib2xzLnBsCkBAIC0xMCw3ICsxMCw3IEBACiAjCiAjIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAjCiAjIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2RvY3MvbWstY2EtYnVuZGxlLjEgYi9kb2NzL21rLWNhLWJ1bmRsZS4xCmluZGV4IDE2NGM5YzMuLjAxN2JiODIgMTAwNjQ0Ci0tLSBhL2RvY3MvbWstY2EtYnVuZGxlLjEKKysrIGIvZG9jcy9tay1jYS1idW5kbGUuMQpAQCAtOSw3ICs5LDcgQEAKIC5cIiAqCiAuXCIgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogLlwiICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKy5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogLlwiICoKIC5cIiAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogLlwiICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0xMDQsNyArMTA0LDcgQEAKIC5CUiBjdXJsICgxKQogLlNIIEhJU1RPUlkKIFxmQm1rLWNhLWJ1bmRsZVxmUCBpcyBhIGNvbW1hbmQgbGluZSB0b29sIHRoYXQgaXMgc2hpcHBlZCBhcyBwYXJ0IG9mIGV2ZXJ5Ci1jdXJsIGFuZCBsaWJjdXJsIHJlbGVhc2UgKHNlZSBodHRwOi8vY3VybC5oYXh4LnNlLykuIEl0IHdhcyBvcmlnaW5hbGx5IGJhc2VkCitjdXJsIGFuZCBsaWJjdXJsIHJlbGVhc2UgKHNlZSBodHRwczovL2N1cmwuaGF4eC5zZS8pLiBJdCB3YXMgb3JpZ2luYWxseSBiYXNlZAogb24gdGhlIHBhcnNlLWNlcnRzIHNjcmlwdCB3cml0dGVuIGJ5IFJvbGFuZCBLcmlrYXZhIGFuZCB3YXMgbGF0ZXIgbXVjaAogaW1wcm92ZWQgYnkgR3VlbnRlciBLbmF1Zi4gIFRoaXMgbWFudWFsIHBhZ2Ugd2FzIGluaXRpYWxseSB3cml0dGVuIGJ5IEphbgogU2NoYXVtYW5uIFwmPGpzY2hhdW1hQG5ldG1laXN0ZXIub3JnPi4KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY3VybC8uZ2l0aWdub3JlIGIvaW5jbHVkZS9jdXJsLy5naXRpZ25vcmUKaW5kZXggNWYzYmMzYy4uMjI4YTk2MSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jdXJsLy5naXRpZ25vcmUKKysrIGIvaW5jbHVkZS9jdXJsLy5naXRpZ25vcmUKQEAgLTEsMyArMSw0IEBACitjdXJsYnVpbGQuaAorY3VybHZlci5oLmRpc3QKIHN0YW1wLWgyCiBzdGFtcC1oMwotY3VybHZlci5oLmRpc3QKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY3VybC9NYWtlZmlsZS5hbSBiL2luY2x1ZGUvY3VybC9NYWtlZmlsZS5hbQppbmRleCA4NmU4Yjc4Li43YzkyNGZjIDEwMDY0NAotLS0gYS9pbmNsdWRlL2N1cmwvTWFrZWZpbGUuYW0KKysrIGIvaW5jbHVkZS9jdXJsL01ha2VmaWxlLmFtCkBAIC05LDcgKzksNyBAQAogIwogIyBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogIyB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0jIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisjIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogIwogIyBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICMgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9pbmNsdWRlL2N1cmwvY3VybC5oIGIvaW5jbHVkZS9jdXJsL2N1cmwuaAppbmRleCBlYWIyZjZlLi41N2U3MTZiIDEwMDY0NAotLS0gYS9pbmNsdWRlL2N1cmwvY3VybC5oCisrKyBiL2luY2x1ZGUvY3VybC9jdXJsLmgKQEAgLTcsMTEgKzcsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yNCwxMCArMjQsMTAgQEAKIAogLyoKICAqIElmIHlvdSBoYXZlIGxpYmN1cmwgcHJvYmxlbXMsIGFsbCBkb2NzIGFuZCBkZXRhaWxzIGFyZSBmb3VuZCBoZXJlOgotICogICBodHRwOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvCisgKiAgIGh0dHBzOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvCiAgKgogICogY3VybC1saWJyYXJ5IG1haWxpbmcgbGlzdCBzdWJzY3JpcHRpb24gYW5kIHVuc3Vic2NyaXB0aW9uIHdlYiBpbnRlcmZhY2U6Ci0gKiAgIGh0dHA6Ly9jb29sLmhheHguc2UvbWFpbG1hbi9saXN0aW5mby9jdXJsLWxpYnJhcnkvCisgKiAgIGh0dHBzOi8vY29vbC5oYXh4LnNlL21haWxtYW4vbGlzdGluZm8vY3VybC1saWJyYXJ5LwogICovCiAKICNpbmNsdWRlICJjdXJsdmVyLmgiICAgICAgICAgLyogbGliY3VybCB2ZXJzaW9uIGRlZmluZXMgICAqLwpAQCAtNTYsNyArNTYsOCBAQAogI2luY2x1ZGUgPHRpbWUuaD4KIAogI2lmIGRlZmluZWQoV0lOMzIpICYmICFkZWZpbmVkKF9XSU4zMl9XQ0UpICYmICFkZWZpbmVkKF9fQ1lHV0lOX18pCi0jaWYgIShkZWZpbmVkKF9XSU5TT0NLQVBJXykgfHwgZGVmaW5lZChfV0lOU09DS19IKSB8fCBkZWZpbmVkKF9fTFdJUF9PUFRfSF9fKSkKKyNpZiAhKGRlZmluZWQoX1dJTlNPQ0tBUElfKSB8fCBkZWZpbmVkKF9XSU5TT0NLX0gpIHx8IFwKKyAgICAgIGRlZmluZWQoX19MV0lQX09QVF9IX18pIHx8IGRlZmluZWQoTFdJUF9IRFJfT1BUX0gpKQogLyogVGhlIGNoZWNrIGFib3ZlIHByZXZlbnRzIHRoZSB3aW5zb2NrMiBpbmNsdXNpb24gaWYgd2luc29jay5oIGFscmVhZHkgd2FzCiAgICBpbmNsdWRlZCwgc2luY2UgdGhleSBjYW4ndCBjby1leGlzdCB3aXRob3V0IHByb2JsZW1zICovCiAjaW5jbHVkZSA8d2luc29jazIuaD4KQEAgLTExMiw3ICsxMTMsNyBAQAogCiAjaWZuZGVmIGN1cmxfc29ja2V0X3R5cGVkZWYKIC8qIHNvY2tldCB0eXBlZGVmICovCi0jaWYgZGVmaW5lZChXSU4zMikgJiYgIWRlZmluZWQoX19MV0lQX09QVF9IX18pCisjaWYgZGVmaW5lZChXSU4zMikgJiYgIWRlZmluZWQoX19MV0lQX09QVF9IX18pICYmICFkZWZpbmVkKExXSVBfSERSX09QVF9IKQogdHlwZWRlZiBTT0NLRVQgY3VybF9zb2NrZXRfdDsKICNkZWZpbmUgQ1VSTF9TT0NLRVRfQkFEIElOVkFMSURfU09DS0VUCiAjZWxzZQpAQCAtMTI3LDcgKzEyOCw4IEBACiAgIGNoYXIgKm5hbWU7ICAgICAgICAgICAgICAgICAgICAgICAvKiBwb2ludGVyIHRvIGFsbG9jYXRlZCBuYW1lICovCiAgIGxvbmcgbmFtZWxlbmd0aDsgICAgICAgICAgICAgICAgICAvKiBsZW5ndGggb2YgbmFtZSBsZW5ndGggKi8KICAgY2hhciAqY29udGVudHM7ICAgICAgICAgICAgICAgICAgIC8qIHBvaW50ZXIgdG8gYWxsb2NhdGVkIGRhdGEgY29udGVudHMgKi8KLSAgbG9uZyBjb250ZW50c2xlbmd0aDsgICAgICAgICAgICAgIC8qIGxlbmd0aCBvZiBjb250ZW50cyBmaWVsZCAqLworICBsb25nIGNvbnRlbnRzbGVuZ3RoOyAgICAgICAgICAgICAgLyogbGVuZ3RoIG9mIGNvbnRlbnRzIGZpZWxkLCBzZWUgYWxzbworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSTF9IVFRQUE9TVF9MQVJHRSAqLwogICBjaGFyICpidWZmZXI7ICAgICAgICAgICAgICAgICAgICAgLyogcG9pbnRlciB0byBhbGxvY2F0ZWQgYnVmZmVyIGNvbnRlbnRzICovCiAgIGxvbmcgYnVmZmVybGVuZ3RoOyAgICAgICAgICAgICAgICAvKiBsZW5ndGggb2YgYnVmZmVyIGZpZWxkICovCiAgIGNoYXIgKmNvbnRlbnR0eXBlOyAgICAgICAgICAgICAgICAvKiBDb250ZW50LVR5cGUgKi8KQEAgLTEzNiwyNCArMTM4LDMzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLCB0aGlzIGxpbmsgc2hvdWxkIGxpbmsgdG8gZm9sbG93aW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlcyAqLwogICBsb25nIGZsYWdzOyAgICAgICAgICAgICAgICAgICAgICAgLyogYXMgZGVmaW5lZCBiZWxvdyAqLwotI2RlZmluZSBIVFRQUE9TVF9GSUxFTkFNRSAoMTw8MCkgICAgLyogc3BlY2lmaWVkIGNvbnRlbnQgaXMgYSBmaWxlIG5hbWUgKi8KLSNkZWZpbmUgSFRUUFBPU1RfUkVBREZJTEUgKDE8PDEpICAgIC8qIHNwZWNpZmllZCBjb250ZW50IGlzIGEgZmlsZSBuYW1lICovCi0jZGVmaW5lIEhUVFBQT1NUX1BUUk5BTUUgKDE8PDIpICAgICAvKiBuYW1lIGlzIG9ubHkgc3RvcmVkIHBvaW50ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvIG5vdCBmcmVlIGluIGZvcm1mcmVlICovCi0jZGVmaW5lIEhUVFBQT1NUX1BUUkNPTlRFTlRTICgxPDwzKSAvKiBjb250ZW50cyBpcyBvbmx5IHN0b3JlZCBwb2ludGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyBub3QgZnJlZSBpbiBmb3JtZnJlZSAqLwotI2RlZmluZSBIVFRQUE9TVF9CVUZGRVIgKDE8PDQpICAgICAgLyogdXBsb2FkIGZpbGUgZnJvbSBidWZmZXIgKi8KLSNkZWZpbmUgSFRUUFBPU1RfUFRSQlVGRkVSICgxPDw1KSAgIC8qIHVwbG9hZCBmaWxlIGZyb20gcG9pbnRlciBjb250ZW50cyAqLwotI2RlZmluZSBIVFRQUE9TVF9DQUxMQkFDSyAoMTw8NikgICAgLyogdXBsb2FkIGZpbGUgY29udGVudHMgYnkgdXNpbmcgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWd1bGFyIHJlYWQgY2FsbGJhY2sgdG8gZ2V0IHRoZSBkYXRhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgcGFzcyB0aGUgZ2l2ZW4gcG9pbnRlciBhcyBjdXN0b20KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXIgKi8KKworLyogc3BlY2lmaWVkIGNvbnRlbnQgaXMgYSBmaWxlIG5hbWUgKi8KKyNkZWZpbmUgQ1VSTF9IVFRQUE9TVF9GSUxFTkFNRSAoMTw8MCkKKy8qIHNwZWNpZmllZCBjb250ZW50IGlzIGEgZmlsZSBuYW1lICovCisjZGVmaW5lIENVUkxfSFRUUFBPU1RfUkVBREZJTEUgKDE8PDEpCisvKiBuYW1lIGlzIG9ubHkgc3RvcmVkIHBvaW50ZXIgZG8gbm90IGZyZWUgaW4gZm9ybWZyZWUgKi8KKyNkZWZpbmUgQ1VSTF9IVFRQUE9TVF9QVFJOQU1FICgxPDwyKQorLyogY29udGVudHMgaXMgb25seSBzdG9yZWQgcG9pbnRlciBkbyBub3QgZnJlZSBpbiBmb3JtZnJlZSAqLworI2RlZmluZSBDVVJMX0hUVFBQT1NUX1BUUkNPTlRFTlRTICgxPDwzKQorLyogdXBsb2FkIGZpbGUgZnJvbSBidWZmZXIgKi8KKyNkZWZpbmUgQ1VSTF9IVFRQUE9TVF9CVUZGRVIgKDE8PDQpCisvKiB1cGxvYWQgZmlsZSBmcm9tIHBvaW50ZXIgY29udGVudHMgKi8KKyNkZWZpbmUgQ1VSTF9IVFRQUE9TVF9QVFJCVUZGRVIgKDE8PDUpCisvKiB1cGxvYWQgZmlsZSBjb250ZW50cyBieSB1c2luZyB0aGUgcmVndWxhciByZWFkIGNhbGxiYWNrIHRvIGdldCB0aGUgZGF0YSBhbmQKKyAgIHBhc3MgdGhlIGdpdmVuIHBvaW50ZXIgYXMgY3VzdG9tIHBvaW50ZXIgKi8KKyNkZWZpbmUgQ1VSTF9IVFRQUE9TVF9DQUxMQkFDSyAoMTw8NikKKy8qIHVzZSBzaXplIGluICdjb250ZW50bGVuJywgYWRkZWQgaW4gNy40Ni4wICovCisjZGVmaW5lIENVUkxfSFRUUFBPU1RfTEFSR0UgKDE8PDcpCiAKICAgY2hhciAqc2hvd2ZpbGVuYW1lOyAgICAgICAgICAgICAgIC8qIFRoZSBmaWxlIG5hbWUgdG8gc2hvdy4gSWYgbm90IHNldCwgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3R1YWwgZmlsZSBuYW1lIHdpbGwgYmUgdXNlZCAoaWYgdGhpcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgYSBmaWxlIHBhcnQpICovCiAgIHZvaWQgKnVzZXJwOyAgICAgICAgICAgICAgICAgICAgICAvKiBjdXN0b20gcG9pbnRlciB1c2VkIGZvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSFRUUFBPU1RfQ0FMTEJBQ0sgcG9zdHMgKi8KKyAgY3VybF9vZmZfdCBjb250ZW50bGVuOyAgICAgICAgICAgIC8qIGFsdGVybmF0aXZlIGxlbmd0aCBvZiBjb250ZW50cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQuIFVzZWQgaWYgQ1VSTF9IVFRQUE9TVF9MQVJHRSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0LiBBZGRlZCBpbiA3LjQ2LjAgKi8KIH07CiAKIC8qIFRoaXMgaXMgdGhlIENVUkxPUFRfUFJPR1JFU1NGVU5DVElPTiBjYWxsYmFjayBwcm90by4gSXQgaXMgbm93IGNvbnNpZGVyZWQKQEAgLTM2Miw2ICszNzMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY21kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpjbGllbnRwKTsKIAorI2lmbmRlZiBDVVJMX0RJRF9NRU1PUllfRlVOQ19UWVBFREVGUwogLyoKICAqIFRoZSBmb2xsb3dpbmcgdHlwZWRlZidzIGFyZSBzaWduYXR1cmVzIG9mIG1hbGxvYywgZnJlZSwgcmVhbGxvYywgc3RyZHVwIGFuZAogICogY2FsbG9jIHJlc3BlY3RpdmVseS4gIEZ1bmN0aW9uIHBvaW50ZXJzIG9mIHRoZXNlIHR5cGVzIGNhbiBiZSBwYXNzZWQgdG8gdGhlCkBAIC0zNzQsNiArMzg2LDkgQEAKIHR5cGVkZWYgY2hhciAqKCpjdXJsX3N0cmR1cF9jYWxsYmFjaykoY29uc3QgY2hhciAqc3RyKTsKIHR5cGVkZWYgdm9pZCAqKCpjdXJsX2NhbGxvY19jYWxsYmFjaykoc2l6ZV90IG5tZW1iLCBzaXplX3Qgc2l6ZSk7CiAKKyNkZWZpbmUgQ1VSTF9ESURfTUVNT1JZX0ZVTkNfVFlQRURFRlMKKyNlbmRpZgorCiAvKiB0aGUga2luZCBvZiBkYXRhIHRoYXQgaXMgcGFzc2VkIHRvIGluZm9ybWF0aW9uX2NhbGxiYWNrKi8KIHR5cGVkZWYgZW51bSB7CiAgIENVUkxJTkZPX1RFWFQgPSAwLApAQCAtNDYwLDkgKzQ3NSw5IEBACiAgIENVUkxFX09CU09MRVRFNDQsICAgICAgICAgICAgICAvKiA0NCAtIE5PVCBVU0VEICovCiAgIENVUkxFX0lOVEVSRkFDRV9GQUlMRUQsICAgICAgICAvKiA0NSAtIENVUkxPUFRfSU5URVJGQUNFIGZhaWxlZCAqLwogICBDVVJMRV9PQlNPTEVURTQ2LCAgICAgICAgICAgICAgLyogNDYgLSBOT1QgVVNFRCAqLwotICBDVVJMRV9UT09fTUFOWV9SRURJUkVDVFMgLCAgICAgLyogNDcgLSBjYXRjaCBlbmRsZXNzIHJlLWRpcmVjdCBsb29wcyAqLworICBDVVJMRV9UT09fTUFOWV9SRURJUkVDVFMsICAgICAgLyogNDcgLSBjYXRjaCBlbmRsZXNzIHJlLWRpcmVjdCBsb29wcyAqLwogICBDVVJMRV9VTktOT1dOX09QVElPTiwgICAgICAgICAgLyogNDggLSBVc2VyIHNwZWNpZmllZCBhbiB1bmtub3duIG9wdGlvbiAqLwotICBDVVJMRV9URUxORVRfT1BUSU9OX1NZTlRBWCAsICAgLyogNDkgLSBNYWxmb3JtZWQgdGVsbmV0IG9wdGlvbiAqLworICBDVVJMRV9URUxORVRfT1BUSU9OX1NZTlRBWCwgICAgLyogNDkgLSBNYWxmb3JtZWQgdGVsbmV0IG9wdGlvbiAqLwogICBDVVJMRV9PQlNPTEVURTUwLCAgICAgICAgICAgICAgLyogNTAgLSBOT1QgVVNFRCAqLwogICBDVVJMRV9QRUVSX0ZBSUxFRF9WRVJJRklDQVRJT04sIC8qIDUxIC0gcGVlcidzIGNlcnRpZmljYXRlIG9yIGZpbmdlcnByaW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Fzbid0IHZlcmlmaWVkIGZpbmUgKi8KQEAgLTUyNCw2ICs1MzksOCBAQAogICBDVVJMRV9TU0xfUElOTkVEUFVCS0VZTk9UTUFUQ0gsIC8qIDkwIC0gc3BlY2lmaWVkIHBpbm5lZCBwdWJsaWMga2V5IGRpZCBub3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCAqLwogICBDVVJMRV9TU0xfSU5WQUxJRENFUlRTVEFUVVMsICAgLyogOTEgLSBpbnZhbGlkIGNlcnRpZmljYXRlIHN0YXR1cyAqLworICBDVVJMRV9IVFRQMl9TVFJFQU0sICAgICAgICAgICAgLyogOTIgLSBzdHJlYW0gZXJyb3IgaW4gSFRUUC8yIGZyYW1pbmcgbGF5ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAgIENVUkxfTEFTVCAvKiBuZXZlciB1c2UhICovCiB9IENVUkxjb2RlOwogCkBAIC03MjUsNiArNzQyLDEwIEBACiAgICBzZXJ2ZXJzLCBhIHVzZXIgY2FuIHRoaXMgd2F5IGFsbG93IHRoZSB2dWxuZXJhYmlsaXR5IGJhY2suICovCiAjZGVmaW5lIENVUkxTU0xPUFRfQUxMT1dfQkVBU1QgKDE8PDApCiAKKy8qIC0gTk9fUkVWT0tFIHRlbGxzIGxpYmN1cmwgdG8gZGlzYWJsZSBjZXJ0aWZpY2F0ZSByZXZvY2F0aW9uIGNoZWNrcyBmb3IgdGhvc2UKKyAgIFNTTCBiYWNrZW5kcyB3aGVyZSBzdWNoIGJlaGF2aW9yIGlzIHByZXNlbnQuICovCisjZGVmaW5lIENVUkxTU0xPUFRfTk9fUkVWT0tFICgxPDwxKQorCiAjaWZuZGVmIENVUkxfTk9fT0xESUVTIC8qIGRlZmluZSB0aGlzIHRvIHRlc3QgaWYgeW91ciBhcHAgYnVpbGRzIHdpdGggYWxsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBvYnNvbGV0ZSBzdHVmZiByZW1vdmVkISAqLwogCkBAIC04MTQsOSArODM1LDEzIEBACiAgICBidXQgMzIgKi8KICNkZWZpbmUgQ1VSTE9QVFRZUEVfTE9ORyAgICAgICAgICAwCiAjZGVmaW5lIENVUkxPUFRUWVBFX09CSkVDVFBPSU5UICAgMTAwMDAKKyNkZWZpbmUgQ1VSTE9QVFRZUEVfU1RSSU5HUE9JTlQgICAxMDAwMAogI2RlZmluZSBDVVJMT1BUVFlQRV9GVU5DVElPTlBPSU5UIDIwMDAwCiAjZGVmaW5lIENVUkxPUFRUWVBFX09GRl9UICAgICAgICAgMzAwMDAKIAorLyogKlNUUklOR1BPSU5UIGlzIGFuIGFsaWFzIGZvciBPQkpFQ1RQT0lOVCB0byBhbGxvdyB0b29scyB0byBleHRyYWN0IHRoZQorICAgc3RyaW5nIG9wdGlvbnMgZnJvbSB0aGUgaGVhZGVyIGZpbGUgKi8KKwogLyogbmFtZSBpcyB1cHBlcmNhc2UgQ1VSTE9QVF88bmFtZT4sCiAgICB0eXBlIGlzIG9uZSBvZiB0aGUgZGVmaW5lZCBDVVJMT1BUVFlQRV88dHlwZT4KICAgIG51bWJlciBpcyB1bmlxdWUgaWRlbnRpZmllciAqLwpAQCAtODMwLDYgKzg1NSw3IEBACiAvKiBUaGUgbWFjcm8gIiMjIiBpcyBJU08gQywgd2UgYXNzdW1lIHByZS1JU08gQyBkb2Vzbid0IHN1cHBvcnQgaXQuICovCiAjZGVmaW5lIExPTkcgICAgICAgICAgQ1VSTE9QVFRZUEVfTE9ORwogI2RlZmluZSBPQkpFQ1RQT0lOVCAgIENVUkxPUFRUWVBFX09CSkVDVFBPSU5UCisjZGVmaW5lIFNUUklOR1BPSU5UICAgQ1VSTE9QVFRZUEVfT0JKRUNUUE9JTlQKICNkZWZpbmUgRlVOQ1RJT05QT0lOVCBDVVJMT1BUVFlQRV9GVU5DVElPTlBPSU5UCiAjZGVmaW5lIE9GRl9UICAgICAgICAgQ1VSTE9QVFRZUEVfT0ZGX1QKICNkZWZpbmUgQ0lOSVQobmFtZSx0eXBlLG51bWJlcikgQ1VSTE9QVF8vKiovbmFtZSA9IHR5cGUgKyBudW1iZXIKQEAgLTg0NiwyMiArODcyLDIyIEBACiAgIENJTklUKFdSSVRFREFUQSwgT0JKRUNUUE9JTlQsIDEpLAogCiAgIC8qIFRoZSBmdWxsIFVSTCB0byBnZXQvcHV0ICovCi0gIENJTklUKFVSTCwgT0JKRUNUUE9JTlQsIDIpLAorICBDSU5JVChVUkwsIFNUUklOR1BPSU5ULCAyKSwKIAogICAvKiBQb3J0IG51bWJlciB0byBjb25uZWN0IHRvLCBpZiBvdGhlciB0aGFuIGRlZmF1bHQuICovCiAgIENJTklUKFBPUlQsIExPTkcsIDMpLAogCiAgIC8qIE5hbWUgb2YgcHJveHkgdG8gdXNlLiAqLwotICBDSU5JVChQUk9YWSwgT0JKRUNUUE9JTlQsIDQpLAorICBDSU5JVChQUk9YWSwgU1RSSU5HUE9JTlQsIDQpLAogCiAgIC8qICJ1c2VyOnBhc3N3b3JkO29wdGlvbnMiIHRvIHVzZSB3aGVuIGZldGNoaW5nLiAqLwotICBDSU5JVChVU0VSUFdELCBPQkpFQ1RQT0lOVCwgNSksCisgIENJTklUKFVTRVJQV0QsIFNUUklOR1BPSU5ULCA1KSwKIAogICAvKiAidXNlcjpwYXNzd29yZCIgdG8gdXNlIHdpdGggcHJveHkuICovCi0gIENJTklUKFBST1hZVVNFUlBXRCwgT0JKRUNUUE9JTlQsIDYpLAorICBDSU5JVChQUk9YWVVTRVJQV0QsIFNUUklOR1BPSU5ULCA2KSwKIAogICAvKiBSYW5nZSB0byBnZXQsIHNwZWNpZmllZCBhcyBhbiBBU0NJSSBzdHJpbmcuICovCi0gIENJTklUKFJBTkdFLCBPQkpFQ1RQT0lOVCwgNyksCisgIENJTklUKFJBTkdFLCBTVFJJTkdQT0lOVCwgNyksCiAKICAgLyogbm90IHVzZWQgKi8KIApAQCAtODk4LDE0ICs5MjQsMTQgQEAKICAgQ0lOSVQoUE9TVEZJRUxEUywgT0JKRUNUUE9JTlQsIDE1KSwKIAogICAvKiBTZXQgdGhlIHJlZmVycmVyIHBhZ2UgKG5lZWRlZCBieSBzb21lIENHSXMpICovCi0gIENJTklUKFJFRkVSRVIsIE9CSkVDVFBPSU5ULCAxNiksCisgIENJTklUKFJFRkVSRVIsIFNUUklOR1BPSU5ULCAxNiksCiAKICAgLyogU2V0IHRoZSBGVFAgUE9SVCBzdHJpbmcgKGludGVyZmFjZSBuYW1lLCBuYW1lZCBvciBudW1lcmljYWwgSVAgYWRkcmVzcykKICAgICAgVXNlIGkuZSAnLScgdG8gdXNlIGRlZmF1bHQgYWRkcmVzcy4gKi8KLSAgQ0lOSVQoRlRQUE9SVCwgT0JKRUNUUE9JTlQsIDE3KSwKKyAgQ0lOSVQoRlRQUE9SVCwgU1RSSU5HUE9JTlQsIDE3KSwKIAogICAvKiBTZXQgdGhlIFVzZXItQWdlbnQgc3RyaW5nIChleGFtaW5lZCBieSBzb21lIENHSXMpICovCi0gIENJTklUKFVTRVJBR0VOVCwgT0JKRUNUUE9JTlQsIDE4KSwKKyAgQ0lOSVQoVVNFUkFHRU5ULCBTVFJJTkdQT0lOVCwgMTgpLAogCiAgIC8qIElmIHRoZSBkb3dubG9hZCByZWNlaXZlcyBsZXNzIHRoYW4gImxvdyBzcGVlZCBsaW1pdCIgYnl0ZXMvc2Vjb25kCiAgICAqIGR1cmluZyAibG93IHNwZWVkIHRpbWUiIHNlY29uZHMsIHRoZSBvcGVyYXRpb25zIGlzIGFib3J0ZWQuCkBAIC05MjgsNyArOTU0LDcgQEAKICAgQ0lOSVQoUkVTVU1FX0ZST00sIExPTkcsIDIxKSwKIAogICAvKiBTZXQgY29va2llIGluIHJlcXVlc3Q6ICovCi0gIENJTklUKENPT0tJRSwgT0JKRUNUUE9JTlQsIDIyKSwKKyAgQ0lOSVQoQ09PS0lFLCBTVFJJTkdQT0lOVCwgMjIpLAogCiAgIC8qIFRoaXMgcG9pbnRzIHRvIGEgbGlua2VkIGxpc3Qgb2YgaGVhZGVycywgc3RydWN0IGN1cmxfc2xpc3Qga2luZC4gVGhpcwogICAgICBsaXN0IGlzIGFsc28gdXNlZCBmb3IgUlRTUCAoaW4gc3BpdGUgb2YgaXRzIG5hbWUpICovCkBAIC05MzgsMTAgKzk2NCwxMCBAQAogICBDSU5JVChIVFRQUE9TVCwgT0JKRUNUUE9JTlQsIDI0KSwKIAogICAvKiBuYW1lIG9mIHRoZSBmaWxlIGtlZXBpbmcgeW91ciBwcml2YXRlIFNTTC1jZXJ0aWZpY2F0ZSAqLwotICBDSU5JVChTU0xDRVJULCBPQkpFQ1RQT0lOVCwgMjUpLAorICBDSU5JVChTU0xDRVJULCBTVFJJTkdQT0lOVCwgMjUpLAogCiAgIC8qIHBhc3N3b3JkIGZvciB0aGUgU1NMIG9yIFNTSCBwcml2YXRlIGtleSAqLwotICBDSU5JVChLRVlQQVNTV0QsIE9CSkVDVFBPSU5ULCAyNiksCisgIENJTklUKEtFWVBBU1NXRCwgU1RSSU5HUE9JTlQsIDI2KSwKIAogICAvKiBzZW5kIFRZUEUgcGFyYW1ldGVyPyAqLwogICBDSU5JVChDUkxGLCBMT05HLCAyNyksCkBAIC05NTUsNyArOTgxLDcgQEAKIAogICAvKiBwb2ludCB0byBhIGZpbGUgdG8gcmVhZCB0aGUgaW5pdGlhbCBjb29raWVzIGZyb20sIGFsc28gZW5hYmxlcwogICAgICAiY29va2llIGF3YXJlbmVzcyIgKi8KLSAgQ0lOSVQoQ09PS0lFRklMRSwgT0JKRUNUUE9JTlQsIDMxKSwKKyAgQ0lOSVQoQ09PS0lFRklMRSwgU1RSSU5HUE9JTlQsIDMxKSwKIAogICAvKiBXaGF0IHZlcnNpb24gdG8gc3BlY2lmaWNhbGx5IHRyeSB0byB1c2UuCiAgICAgIFNlZSBDVVJMX1NTTFZFUlNJT04gZGVmaW5lcyBiZWxvdy4gKi8KQEAgLTk3NCw5ICsxMDAwLDkgQEAKICAgICAgSFRUUDogREVMRVRFLCBUUkFDRSBhbmQgb3RoZXJzCiAgICAgIEZUUDogdG8gdXNlIGEgZGlmZmVyZW50IGxpc3QgY29tbWFuZAogICAgICAqLwotICBDSU5JVChDVVNUT01SRVFVRVNULCBPQkpFQ1RQT0lOVCwgMzYpLAorICBDSU5JVChDVVNUT01SRVFVRVNULCBTVFJJTkdQT0lOVCwgMzYpLAogCi0gIC8qIEhUVFAgcmVxdWVzdCwgZm9yIG9kZCBjb21tYW5kcyBsaWtlIERFTEVURSwgVFJBQ0UgYW5kIG90aGVycyAqLworICAvKiBGSUxFIGhhbmRsZSB0byB1c2UgaW5zdGVhZCBvZiBzdGRlcnIgKi8KICAgQ0lOSVQoU1RERVJSLCBPQkpFQ1RQT0lOVCwgMzcpLAogCiAgIC8qIDM4IGlzIG5vdCB1c2VkICovCkBAIC0xMDMzLDE5ICsxMDU5LDE5IEBACiAgIENJTklUKEhUVFBQUk9YWVRVTk5FTCwgTE9ORywgNjEpLAogCiAgIC8qIFNldCB0aGUgaW50ZXJmYWNlIHN0cmluZyB0byB1c2UgYXMgb3V0Z29pbmcgbmV0d29yayBpbnRlcmZhY2UgKi8KLSAgQ0lOSVQoSU5URVJGQUNFLCBPQkpFQ1RQT0lOVCwgNjIpLAorICBDSU5JVChJTlRFUkZBQ0UsIFNUUklOR1BPSU5ULCA2MiksCiAKICAgLyogU2V0IHRoZSBrcmI0LzUgc2VjdXJpdHkgbGV2ZWwsIHRoaXMgYWxzbyBlbmFibGVzIGtyYjQvNSBhd2FyZW5lc3MuICBUaGlzCiAgICAqIGlzIGEgc3RyaW5nLCAnY2xlYXInLCAnc2FmZScsICdjb25maWRlbnRpYWwnIG9yICdwcml2YXRlJy4gIElmIHRoZSBzdHJpbmcKICAgICogaXMgc2V0IGJ1dCBkb2Vzbid0IG1hdGNoIG9uZSBvZiB0aGVzZSwgJ3ByaXZhdGUnIHdpbGwgYmUgdXNlZC4gICovCi0gIENJTklUKEtSQkxFVkVMLCBPQkpFQ1RQT0lOVCwgNjMpLAorICBDSU5JVChLUkJMRVZFTCwgU1RSSU5HUE9JTlQsIDYzKSwKIAogICAvKiBTZXQgaWYgd2Ugc2hvdWxkIHZlcmlmeSB0aGUgcGVlciBpbiBzc2wgaGFuZHNoYWtlLCBzZXQgMSB0byB2ZXJpZnkuICovCiAgIENJTklUKFNTTF9WRVJJRllQRUVSLCBMT05HLCA2NCksCiAKICAgLyogVGhlIENBcGF0aCBvciBDQWZpbGUgdXNlZCB0byB2YWxpZGF0ZSB0aGUgcGVlciBjZXJ0aWZpY2F0ZQogICAgICB0aGlzIG9wdGlvbiBpcyB1c2VkIG9ubHkgaWYgU1NMX1ZFUklGWVBFRVIgaXMgdHJ1ZSAqLwotICBDSU5JVChDQUlORk8sIE9CSkVDVFBPSU5ULCA2NSksCisgIENJTklUKENBSU5GTywgU1RSSU5HUE9JTlQsIDY1KSwKIAogICAvKiA2NiA9IE9CU09MRVRFICovCiAgIC8qIDY3ID0gT0JTT0xFVEUgKi8KQEAgLTEwNzksMTAgKzExMDUsMTAgQEAKIAogICAvKiBTZXQgdG8gYSBmaWxlIG5hbWUgdGhhdCBjb250YWlucyByYW5kb20gZGF0YSBmb3IgbGliY3VybCB0byB1c2UgdG8KICAgICAgc2VlZCB0aGUgcmFuZG9tIGVuZ2luZSB3aGVuIGRvaW5nIFNTTCBjb25uZWN0cy4gKi8KLSAgQ0lOSVQoUkFORE9NX0ZJTEUsIE9CSkVDVFBPSU5ULCA3NiksCisgIENJTklUKFJBTkRPTV9GSUxFLCBTVFJJTkdQT0lOVCwgNzYpLAogCiAgIC8qIFNldCB0byB0aGUgRW50cm9weSBHYXRoZXJpbmcgRGFlbW9uIHNvY2tldCBwYXRobmFtZSAqLwotICBDSU5JVChFR0RTT0NLRVQsIE9CSkVDVFBPSU5ULCA3NyksCisgIENJTklUKEVHRFNPQ0tFVCwgU1RSSU5HUE9JTlQsIDc3KSwKIAogICAvKiBUaW1lLW91dCBjb25uZWN0IG9wZXJhdGlvbnMgYWZ0ZXIgdGhpcyBhbW91bnQgb2Ygc2Vjb25kcywgaWYgY29ubmVjdHMgYXJlCiAgICAgIE9LIHdpdGhpbiB0aGlzIHRpbWUsIHRoZW4gZmluZS4uLiBUaGlzIG9ubHkgYWJvcnRzIHRoZSBjb25uZWN0IHBoYXNlLiAqLwpAQCAtMTEwNCwxMCArMTEzMCwxMCBAQAogCiAgIC8qIFNwZWNpZnkgd2hpY2ggZmlsZSBuYW1lIHRvIHdyaXRlIGFsbCBrbm93biBjb29raWVzIGluIGFmdGVyIGNvbXBsZXRlZAogICAgICBvcGVyYXRpb24uIFNldCBmaWxlIG5hbWUgdG8gIi0iIChkYXNoKSB0byBtYWtlIGl0IGdvIHRvIHN0ZG91dC4gKi8KLSAgQ0lOSVQoQ09PS0lFSkFSLCBPQkpFQ1RQT0lOVCwgODIpLAorICBDSU5JVChDT09LSUVKQVIsIFNUUklOR1BPSU5ULCA4MiksCiAKICAgLyogU3BlY2lmeSB3aGljaCBTU0wgY2lwaGVycyB0byB1c2UgKi8KLSAgQ0lOSVQoU1NMX0NJUEhFUl9MSVNULCBPQkpFQ1RQT0lOVCwgODMpLAorICBDSU5JVChTU0xfQ0lQSEVSX0xJU1QsIFNUUklOR1BPSU5ULCA4MyksCiAKICAgLyogU3BlY2lmeSB3aGljaCBIVFRQIHZlcnNpb24gdG8gdXNlISBUaGlzIG11c3QgYmUgc2V0IHRvIG9uZSBvZiB0aGUKICAgICAgQ1VSTF9IVFRQX1ZFUlNJT04qIGVudW1zIHNldCBiZWxvdy4gKi8KQEAgLTExMTksMTYgKzExNDUsMTYgQEAKICAgQ0lOSVQoRlRQX1VTRV9FUFNWLCBMT05HLCA4NSksCiAKICAgLyogdHlwZSBvZiB0aGUgZmlsZSBrZWVwaW5nIHlvdXIgU1NMLWNlcnRpZmljYXRlICgiREVSIiwgIlBFTSIsICJFTkciKSAqLwotICBDSU5JVChTU0xDRVJUVFlQRSwgT0JKRUNUUE9JTlQsIDg2KSwKKyAgQ0lOSVQoU1NMQ0VSVFRZUEUsIFNUUklOR1BPSU5ULCA4NiksCiAKICAgLyogbmFtZSBvZiB0aGUgZmlsZSBrZWVwaW5nIHlvdXIgcHJpdmF0ZSBTU0wta2V5ICovCi0gIENJTklUKFNTTEtFWSwgT0JKRUNUUE9JTlQsIDg3KSwKKyAgQ0lOSVQoU1NMS0VZLCBTVFJJTkdQT0lOVCwgODcpLAogCiAgIC8qIHR5cGUgb2YgdGhlIGZpbGUga2VlcGluZyB5b3VyIHByaXZhdGUgU1NMLWtleSAoIkRFUiIsICJQRU0iLCAiRU5HIikgKi8KLSAgQ0lOSVQoU1NMS0VZVFlQRSwgT0JKRUNUUE9JTlQsIDg4KSwKKyAgQ0lOSVQoU1NMS0VZVFlQRSwgU1RSSU5HUE9JTlQsIDg4KSwKIAogICAvKiBjcnlwdG8gZW5naW5lIGZvciB0aGUgU1NMLXN1YiBzeXN0ZW0gKi8KLSAgQ0lOSVQoU1NMRU5HSU5FLCBPQkpFQ1RQT0lOVCwgODkpLAorICBDSU5JVChTU0xFTkdJTkUsIFNUUklOR1BPSU5ULCA4OSksCiAKICAgLyogc2V0IHRoZSBjcnlwdG8gZW5naW5lIGZvciB0aGUgU1NMLXN1YiBzeXN0ZW0gYXMgZGVmYXVsdAogICAgICB0aGUgcGFyYW0gaGFzIG5vIG1lYW5pbmcuLi4KQEAgLTExNTUsNyArMTE4MSw3IEBACiAKICAgLyogVGhlIENBcGF0aCBkaXJlY3RvcnkgdXNlZCB0byB2YWxpZGF0ZSB0aGUgcGVlciBjZXJ0aWZpY2F0ZQogICAgICB0aGlzIG9wdGlvbiBpcyB1c2VkIG9ubHkgaWYgU1NMX1ZFUklGWVBFRVIgaXMgdHJ1ZSAqLwotICBDSU5JVChDQVBBVEgsIE9CSkVDVFBPSU5ULCA5NyksCisgIENJTklUKENBUEFUSCwgU1RSSU5HUE9JTlQsIDk3KSwKIAogICAvKiBJbnN0cnVjdCBsaWJjdXJsIHRvIHVzZSBhIHNtYWxsZXIgcmVjZWl2ZSBidWZmZXIgKi8KICAgQ0lOSVQoQlVGRkVSU0laRSwgTE9ORywgOTgpLApAQCAtMTE3NSw3ICsxMjAxLDcgQEAKICAgLyogU2V0IHRoZSBBY2NlcHQtRW5jb2Rpbmcgc3RyaW5nLiBVc2UgdGhpcyB0byB0ZWxsIGEgc2VydmVyIHlvdSB3b3VsZCBsaWtlCiAgICAgIHRoZSByZXNwb25zZSB0byBiZSBjb21wcmVzc2VkLiBCZWZvcmUgNy4yMS42LCB0aGlzIHdhcyBrbm93biBhcwogICAgICBDVVJMT1BUX0VOQ09ESU5HICovCi0gIENJTklUKEFDQ0VQVF9FTkNPRElORywgT0JKRUNUUE9JTlQsIDEwMiksCisgIENJTklUKEFDQ0VQVF9FTkNPRElORywgU1RSSU5HUE9JTlQsIDEwMiksCiAKICAgLyogU2V0IHBvaW50ZXIgdG8gcHJpdmF0ZSBkYXRhICovCiAgIENJTklUKFBSSVZBVEUsIE9CSkVDVFBPSU5ULCAxMDMpLApAQCAtMTI1Niw3ICsxMjgyLDcgQEAKICAgICAgdG8gcGFyc2UgKHVzaW5nIHRoZSBDVVJMT1BUX05FVFJDIG9wdGlvbikuIElmIG5vdCBzZXQsIGxpYmN1cmwgd2lsbCBkbwogICAgICBhIHBvb3IgYXR0ZW1wdCB0byBmaW5kIHRoZSB1c2VyJ3MgaG9tZSBkaXJlY3RvcnkgYW5kIGNoZWNrIGZvciBhIC5uZXRyYwogICAgICBmaWxlIGluIHRoZXJlLiAqLwotICBDSU5JVChORVRSQ19GSUxFLCBPQkpFQ1RQT0lOVCwgMTE4KSwKKyAgQ0lOSVQoTkVUUkNfRklMRSwgU1RSSU5HUE9JTlQsIDExOCksCiAKICAgLyogRW5hYmxlIFNTTC9UTFMgZm9yIEZUUCwgcGljayBvbmUgb2Y6CiAgICAgIENVUkxVU0VTU0xfVFJZICAgICAtIHRyeSB1c2luZyBTU0wsIHByb2NlZWQgYW55d2F5IG90aGVyd2lzZQpAQCAtMTI5OSwxMCArMTMyNSwxMCBAQAogCiAgIC8qIHplcm8gdGVybWluYXRlZCBzdHJpbmcgZm9yIHBhc3Mgb24gdG8gdGhlIEZUUCBzZXJ2ZXIgd2hlbiBhc2tlZCBmb3IKICAgICAgImFjY291bnQiIGluZm8gKi8KLSAgQ0lOSVQoRlRQX0FDQ09VTlQsIE9CSkVDVFBPSU5ULCAxMzQpLAorICBDSU5JVChGVFBfQUNDT1VOVCwgU1RSSU5HUE9JTlQsIDEzNCksCiAKLSAgLyogZmVlZCBjb29raWVzIGludG8gY29va2llIGVuZ2luZSAqLwotICBDSU5JVChDT09LSUVMSVNULCBPQkpFQ1RQT0lOVCwgMTM1KSwKKyAgLyogZmVlZCBjb29raWUgaW50byBjb29raWUgZW5naW5lICovCisgIENJTklUKENPT0tJRUxJU1QsIFNUUklOR1BPSU5ULCAxMzUpLAogCiAgIC8qIGlnbm9yZSBDb250ZW50LUxlbmd0aCAqLwogICBDSU5JVChJR05PUkVfQ09OVEVOVF9MRU5HVEgsIExPTkcsIDEzNiksCkBAIC0xMzQ4LDcgKzEzNzQsNyBAQAogICBDSU5JVChNQVhfUkVDVl9TUEVFRF9MQVJHRSwgT0ZGX1QsIDE0NiksCiAKICAgLyogUG9pbnRlciB0byBjb21tYW5kIHN0cmluZyB0byBzZW5kIGlmIFVTRVIvUEFTUyBmYWlscy4gKi8KLSAgQ0lOSVQoRlRQX0FMVEVSTkFUSVZFX1RPX1VTRVIsIE9CSkVDVFBPSU5ULCAxNDcpLAorICBDSU5JVChGVFBfQUxURVJOQVRJVkVfVE9fVVNFUiwgU1RSSU5HUE9JTlQsIDE0NyksCiAKICAgLyogY2FsbGJhY2sgZnVuY3Rpb24gZm9yIHNldHRpbmcgc29ja2V0IG9wdGlvbnMgKi8KICAgQ0lOSVQoU09DS09QVEZVTkNUSU9OLCBGVU5DVElPTlBPSU5ULCAxNDgpLApAQCAtMTM2Miw4ICsxMzg4LDggQEAKICAgQ0lOSVQoU1NIX0FVVEhfVFlQRVMsIExPTkcsIDE1MSksCiAKICAgLyogVXNlZCBieSBzY3Avc2Z0cCB0byBkbyBwdWJsaWMvcHJpdmF0ZSBrZXkgYXV0aGVudGljYXRpb24gKi8KLSAgQ0lOSVQoU1NIX1BVQkxJQ19LRVlGSUxFLCBPQkpFQ1RQT0lOVCwgMTUyKSwKLSAgQ0lOSVQoU1NIX1BSSVZBVEVfS0VZRklMRSwgT0JKRUNUUE9JTlQsIDE1MyksCisgIENJTklUKFNTSF9QVUJMSUNfS0VZRklMRSwgU1RSSU5HUE9JTlQsIDE1MiksCisgIENJTklUKFNTSF9QUklWQVRFX0tFWUZJTEUsIFNUUklOR1BPSU5ULCAxNTMpLAogCiAgIC8qIFNlbmQgQ0NDIChDbGVhciBDb21tYW5kIENoYW5uZWwpIGFmdGVyIGF1dGhlbnRpY2F0aW9uICovCiAgIENJTklUKEZUUF9TU0xfQ0NDLCBMT05HLCAxNTQpLApAQCAtMTM4Nyw3ICsxNDEzLDcgQEAKICAgQ0lOSVQoUE9TVFJFRElSLCBMT05HLCAxNjEpLAogCiAgIC8qIHVzZWQgYnkgc2NwL3NmdHAgdG8gdmVyaWZ5IHRoZSBob3N0J3MgcHVibGljIGtleSAqLwotICBDSU5JVChTU0hfSE9TVF9QVUJMSUNfS0VZX01ENSwgT0JKRUNUUE9JTlQsIDE2MiksCisgIENJTklUKFNTSF9IT1NUX1BVQkxJQ19LRVlfTUQ1LCBTVFJJTkdQT0lOVCwgMTYyKSwKIAogICAvKiBDYWxsYmFjayBmdW5jdGlvbiBmb3Igb3BlbmluZyBzb2NrZXQgKGluc3RlYWQgb2Ygc29ja2V0KDIpKS4gT3B0aW9uYWxseSwKICAgICAgY2FsbGJhY2sgaXMgYWJsZSBjaGFuZ2UgdGhlIGFkZHJlc3Mgb3IgcmVmdXNlIHRvIGNvbm5lY3QgcmV0dXJuaW5nCkBAIC0xNDA3LDEwICsxNDMzLDEwIEBACiAgIENJTklUKFNFRUtEQVRBLCBPQkpFQ1RQT0lOVCwgMTY4KSwKIAogICAvKiBDUkwgZmlsZSAqLwotICBDSU5JVChDUkxGSUxFLCBPQkpFQ1RQT0lOVCwgMTY5KSwKKyAgQ0lOSVQoQ1JMRklMRSwgU1RSSU5HUE9JTlQsIDE2OSksCiAKICAgLyogSXNzdWVyIGNlcnRpZmljYXRlICovCi0gIENJTklUKElTU1VFUkNFUlQsIE9CSkVDVFBPSU5ULCAxNzApLAorICBDSU5JVChJU1NVRVJDRVJULCBTVFJJTkdQT0lOVCwgMTcwKSwKIAogICAvKiAoSVB2NikgQWRkcmVzcyBzY29wZSAqLwogICBDSU5JVChBRERSRVNTX1NDT1BFLCBMT05HLCAxNzEpLApAQCAtMTQyMCwxMiArMTQ0NiwxMiBAQAogICBDSU5JVChDRVJUSU5GTywgTE9ORywgMTcyKSwKIAogICAvKiAibmFtZSIgYW5kICJwd2QiIHRvIHVzZSB3aGVuIGZldGNoaW5nLiAqLwotICBDSU5JVChVU0VSTkFNRSwgT0JKRUNUUE9JTlQsIDE3MyksCi0gIENJTklUKFBBU1NXT1JELCBPQkpFQ1RQT0lOVCwgMTc0KSwKKyAgQ0lOSVQoVVNFUk5BTUUsIFNUUklOR1BPSU5ULCAxNzMpLAorICBDSU5JVChQQVNTV09SRCwgU1RSSU5HUE9JTlQsIDE3NCksCiAKICAgICAvKiAibmFtZSIgYW5kICJwd2QiIHRvIHVzZSB3aXRoIFByb3h5IHdoZW4gZmV0Y2hpbmcuICovCi0gIENJTklUKFBST1hZVVNFUk5BTUUsIE9CSkVDVFBPSU5ULCAxNzUpLAotICBDSU5JVChQUk9YWVBBU1NXT1JELCBPQkpFQ1RQT0lOVCwgMTc2KSwKKyAgQ0lOSVQoUFJPWFlVU0VSTkFNRSwgU1RSSU5HUE9JTlQsIDE3NSksCisgIENJTklUKFBST1hZUEFTU1dPUkQsIFNUUklOR1BPSU5ULCAxNzYpLAogCiAgIC8qIENvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIGhvc3RuYW1lcyBkZWZpbmluZyBuby1wcm94eSB6b25lcy4gVGhlc2Ugc2hvdWxkCiAgICAgIG1hdGNoIGJvdGggaG9zdG5hbWVzIGRpcmVjdGx5LCBhbmQgaG9zdG5hbWVzIHdpdGhpbiBhIGRvbWFpbi4gRm9yCkBAIC0xNDM0LDEzICsxNDYwLDEzIEBACiAgICAgIGltcGxlbWVudGF0aW9ucyBvZiB0aGlzLCAubG9jYWwuY29tIHdpbGwgYmUgY29uc2lkZXJlZCB0byBiZSB0aGUgc2FtZSBhcwogICAgICBsb2NhbC5jb20uIEEgc2luZ2xlICogaXMgdGhlIG9ubHkgdmFsaWQgd2lsZGNhcmQsIGFuZCBlZmZlY3RpdmVseQogICAgICBkaXNhYmxlcyB0aGUgdXNlIG9mIHByb3h5LiAqLwotICBDSU5JVChOT1BST1hZLCBPQkpFQ1RQT0lOVCwgMTc3KSwKKyAgQ0lOSVQoTk9QUk9YWSwgU1RSSU5HUE9JTlQsIDE3NyksCiAKICAgLyogYmxvY2sgc2l6ZSBmb3IgVEZUUCB0cmFuc2ZlcnMgKi8KICAgQ0lOSVQoVEZUUF9CTEtTSVpFLCBMT05HLCAxNzgpLAogCiAgIC8qIFNvY2tzIFNlcnZpY2UgKi8KLSAgQ0lOSVQoU09DS1M1X0dTU0FQSV9TRVJWSUNFLCBPQkpFQ1RQT0lOVCwgMTc5KSwKKyAgQ0lOSVQoU09DS1M1X0dTU0FQSV9TRVJWSUNFLCBTVFJJTkdQT0lOVCwgMTc5KSwgLyogREVQUkVDQVRFRCwgZG8gbm90IHVzZSEgKi8KIAogICAvKiBTb2NrcyBTZXJ2aWNlICovCiAgIENJTklUKFNPQ0tTNV9HU1NBUElfTkVDLCBMT05HLCAxODApLApAQCAtMTQ1OCw3ICsxNDg0LDcgQEAKICAgQ0lOSVQoUkVESVJfUFJPVE9DT0xTLCBMT05HLCAxODIpLAogCiAgIC8qIHNldCB0aGUgU1NIIGtub3duaG9zdCBmaWxlIG5hbWUgdG8gdXNlICovCi0gIENJTklUKFNTSF9LTk9XTkhPU1RTLCBPQkpFQ1RQT0lOVCwgMTgzKSwKKyAgQ0lOSVQoU1NIX0tOT1dOSE9TVFMsIFNUUklOR1BPSU5ULCAxODMpLAogCiAgIC8qIHNldCB0aGUgU1NIIGhvc3Qga2V5IGNhbGxiYWNrLCBtdXN0IHBvaW50IHRvIGEgY3VybF9zc2hrZXljYWxsYmFjawogICAgICBmdW5jdGlvbiAqLwpAQCAtMTQ2OCw5ICsxNDk0LDkgQEAKICAgQ0lOSVQoU1NIX0tFWURBVEEsIE9CSkVDVFBPSU5ULCAxODUpLAogCiAgIC8qIHNldCB0aGUgU01UUCBtYWlsIG9yaWdpbmF0b3IgKi8KLSAgQ0lOSVQoTUFJTF9GUk9NLCBPQkpFQ1RQT0lOVCwgMTg2KSwKKyAgQ0lOSVQoTUFJTF9GUk9NLCBTVFJJTkdQT0lOVCwgMTg2KSwKIAotICAvKiBzZXQgdGhlIFNNVFAgbWFpbCByZWNlaXZlcihzKSAqLworICAvKiBzZXQgdGhlIGxpc3Qgb2YgU01UUCBtYWlsIHJlY2VpdmVyKHMpICovCiAgIENJTklUKE1BSUxfUkNQVCwgT0JKRUNUUE9JTlQsIDE4NyksCiAKICAgLyogRlRQOiBzZW5kIFBSRVQgYmVmb3JlIFBBU1YgKi8KQEAgLTE0ODAsMTMgKzE1MDYsMTMgQEAKICAgQ0lOSVQoUlRTUF9SRVFVRVNULCBMT05HLCAxODkpLAogCiAgIC8qIFRoZSBSVFNQIHNlc3Npb24gaWRlbnRpZmllciAqLwotICBDSU5JVChSVFNQX1NFU1NJT05fSUQsIE9CSkVDVFBPSU5ULCAxOTApLAorICBDSU5JVChSVFNQX1NFU1NJT05fSUQsIFNUUklOR1BPSU5ULCAxOTApLAogCiAgIC8qIFRoZSBSVFNQIHN0cmVhbSBVUkkgKi8KLSAgQ0lOSVQoUlRTUF9TVFJFQU1fVVJJLCBPQkpFQ1RQT0lOVCwgMTkxKSwKKyAgQ0lOSVQoUlRTUF9TVFJFQU1fVVJJLCBTVFJJTkdQT0lOVCwgMTkxKSwKIAogICAvKiBUaGUgVHJhbnNwb3J0OiBoZWFkZXIgdG8gdXNlIGluIFJUU1AgcmVxdWVzdHMgKi8KLSAgQ0lOSVQoUlRTUF9UUkFOU1BPUlQsIE9CSkVDVFBPSU5ULCAxOTIpLAorICBDSU5JVChSVFNQX1RSQU5TUE9SVCwgU1RSSU5HUE9JTlQsIDE5MiksCiAKICAgLyogTWFudWFsbHkgaW5pdGlhbGl6ZSB0aGUgY2xpZW50IFJUU1AgQ1NlcSBmb3IgdGhpcyBoYW5kbGUgKi8KICAgQ0lOSVQoUlRTUF9DTElFTlRfQ1NFUSwgTE9ORywgMTkzKSwKQEAgLTE1MjQsMTMgKzE1NTAsMTMgQEAKICAgQ0lOSVQoUkVTT0xWRSwgT0JKRUNUUE9JTlQsIDIwMyksCiAKICAgLyogU2V0IGEgdXNlcm5hbWUgZm9yIGF1dGhlbnRpY2F0ZWQgVExTICovCi0gIENJTklUKFRMU0FVVEhfVVNFUk5BTUUsIE9CSkVDVFBPSU5ULCAyMDQpLAorICBDSU5JVChUTFNBVVRIX1VTRVJOQU1FLCBTVFJJTkdQT0lOVCwgMjA0KSwKIAogICAvKiBTZXQgYSBwYXNzd29yZCBmb3IgYXV0aGVudGljYXRlZCBUTFMgKi8KLSAgQ0lOSVQoVExTQVVUSF9QQVNTV09SRCwgT0JKRUNUUE9JTlQsIDIwNSksCisgIENJTklUKFRMU0FVVEhfUEFTU1dPUkQsIFNUUklOR1BPSU5ULCAyMDUpLAogCiAgIC8qIFNldCBhdXRoZW50aWNhdGlvbiB0eXBlIGZvciBhdXRoZW50aWNhdGVkIFRMUyAqLwotICBDSU5JVChUTFNBVVRIX1RZUEUsIE9CSkVDVFBPSU5ULCAyMDYpLAorICBDSU5JVChUTFNBVVRIX1RZUEUsIFNUUklOR1BPSU5ULCAyMDYpLAogCiAgIC8qIFNldCB0byAxIHRvIGVuYWJsZSB0aGUgIlRFOiIgaGVhZGVyIGluIEhUVFAgcmVxdWVzdHMgdG8gYXNrIGZvcgogICAgICBjb21wcmVzc2VkIHRyYW5zZmVyLWVuY29kZWQgcmVzcG9uc2VzLiBTZXQgdG8gMCB0byBkaXNhYmxlIHRoZSB1c2Ugb2YgVEU6CkBAIC0xNTUzLDcgKzE1NzksNyBAQAogICBDSU5JVChHU1NBUElfREVMRUdBVElPTiwgTE9ORywgMjEwKSwKIAogICAvKiBTZXQgdGhlIG5hbWUgc2VydmVycyB0byB1c2UgZm9yIEROUyByZXNvbHV0aW9uICovCi0gIENJTklUKEROU19TRVJWRVJTLCBPQkpFQ1RQT0lOVCwgMjExKSwKKyAgQ0lOSVQoRE5TX1NFUlZFUlMsIFNUUklOR1BPSU5ULCAyMTEpLAogCiAgIC8qIFRpbWUtb3V0IGFjY2VwdCBvcGVyYXRpb25zIChjdXJyZW50bHkgZm9yIEZUUCBvbmx5KSBhZnRlciB0aGlzIGFtb3VudAogICAgICBvZiBtaWxpc2Vjb25kcy4gKi8KQEAgLTE1NzAsNyArMTU5Niw3IEBACiAgIENJTklUKFNTTF9PUFRJT05TLCBMT05HLCAyMTYpLAogCiAgIC8qIFNldCB0aGUgU01UUCBhdXRoIG9yaWdpbmF0b3IgKi8KLSAgQ0lOSVQoTUFJTF9BVVRILCBPQkpFQ1RQT0lOVCwgMjE3KSwKKyAgQ0lOSVQoTUFJTF9BVVRILCBTVFJJTkdQT0lOVCwgMjE3KSwKIAogICAvKiBFbmFibGUvZGlzYWJsZSBTQVNMIGluaXRpYWwgcmVzcG9uc2UgKi8KICAgQ0lOSVQoU0FTTF9JUiwgTE9ORywgMjE4KSwKQEAgLTE1ODEsMjMgKzE2MDcsMjMgQEAKICAgQ0lOSVQoWEZFUklORk9GVU5DVElPTiwgRlVOQ1RJT05QT0lOVCwgMjE5KSwKIAogICAvKiBUaGUgWE9BVVRIMiBiZWFyZXIgdG9rZW4gKi8KLSAgQ0lOSVQoWE9BVVRIMl9CRUFSRVIsIE9CSkVDVFBPSU5ULCAyMjApLAorICBDSU5JVChYT0FVVEgyX0JFQVJFUiwgU1RSSU5HUE9JTlQsIDIyMCksCiAKICAgLyogU2V0IHRoZSBpbnRlcmZhY2Ugc3RyaW5nIHRvIHVzZSBhcyBvdXRnb2luZyBuZXR3b3JrCiAgICAqIGludGVyZmFjZSBmb3IgRE5TIHJlcXVlc3RzLgogICAgKiBPbmx5IHN1cHBvcnRlZCBieSB0aGUgYy1hcmVzIEROUyBiYWNrZW5kICovCi0gIENJTklUKEROU19JTlRFUkZBQ0UsIE9CSkVDVFBPSU5ULCAyMjEpLAorICBDSU5JVChETlNfSU5URVJGQUNFLCBTVFJJTkdQT0lOVCwgMjIxKSwKIAogICAvKiBTZXQgdGhlIGxvY2FsIElQdjQgYWRkcmVzcyB0byB1c2UgZm9yIG91dGdvaW5nIEROUyByZXF1ZXN0cy4KICAgICogT25seSBzdXBwb3J0ZWQgYnkgdGhlIGMtYXJlcyBETlMgYmFja2VuZCAqLwotICBDSU5JVChETlNfTE9DQUxfSVA0LCBPQkpFQ1RQT0lOVCwgMjIyKSwKKyAgQ0lOSVQoRE5TX0xPQ0FMX0lQNCwgU1RSSU5HUE9JTlQsIDIyMiksCiAKICAgLyogU2V0IHRoZSBsb2NhbCBJUHY0IGFkZHJlc3MgdG8gdXNlIGZvciBvdXRnb2luZyBETlMgcmVxdWVzdHMuCiAgICAqIE9ubHkgc3VwcG9ydGVkIGJ5IHRoZSBjLWFyZXMgRE5TIGJhY2tlbmQgKi8KLSAgQ0lOSVQoRE5TX0xPQ0FMX0lQNiwgT0JKRUNUUE9JTlQsIDIyMyksCisgIENJTklUKEROU19MT0NBTF9JUDYsIFNUUklOR1BPSU5ULCAyMjMpLAogCiAgIC8qIFNldCBhdXRoZW50aWNhdGlvbiBvcHRpb25zIGRpcmVjdGx5ICovCi0gIENJTklUKExPR0lOX09QVElPTlMsIE9CSkVDVFBPSU5ULCAyMjQpLAorICBDSU5JVChMT0dJTl9PUFRJT05TLCBTVFJJTkdQT0lOVCwgMjI0KSwKIAogICAvKiBFbmFibGUvZGlzYWJsZSBUTFMgTlBOIGV4dGVuc2lvbiAoaHR0cDIgb3ZlciBzc2wgbWlnaHQgZmFpbCB3aXRob3V0KSAqLwogICBDSU5JVChTU0xfRU5BQkxFX05QTiwgTE9ORywgMjI1KSwKQEAgLTE2MTgsMTAgKzE2NDQsMTAgQEAKIAogICAvKiBUaGUgcHVibGljIGtleSBpbiBERVIgZm9ybSB1c2VkIHRvIHZhbGlkYXRlIHRoZSBwZWVyIHB1YmxpYyBrZXkKICAgICAgdGhpcyBvcHRpb24gaXMgdXNlZCBvbmx5IGlmIFNTTF9WRVJJRllQRUVSIGlzIHRydWUgKi8KLSAgQ0lOSVQoUElOTkVEUFVCTElDS0VZLCBPQkpFQ1RQT0lOVCwgMjMwKSwKKyAgQ0lOSVQoUElOTkVEUFVCTElDS0VZLCBTVFJJTkdQT0lOVCwgMjMwKSwKIAogICAvKiBQYXRoIHRvIFVuaXggZG9tYWluIHNvY2tldCAqLwotICBDSU5JVChVTklYX1NPQ0tFVF9QQVRILCBPQkpFQ1RQT0lOVCwgMjMxKSwKKyAgQ0lOSVQoVU5JWF9TT0NLRVRfUEFUSCwgU1RSSU5HUE9JTlQsIDIzMSksCiAKICAgLyogU2V0IGlmIHdlIHNob3VsZCB2ZXJpZnkgdGhlIGNlcnRpZmljYXRlIHN0YXR1cy4gKi8KICAgQ0lOSVQoU1NMX1ZFUklGWVNUQVRVUywgTE9ORywgMjMyKSwKQEAgLTE2MzMsMTQgKzE2NTksMzYgQEAKICAgQ0lOSVQoUEFUSF9BU19JUywgTE9ORywgMjM0KSwKIAogICAvKiBQcm94eSBTZXJ2aWNlIE5hbWUgKi8KLSAgQ0lOSVQoUFJPWFlfU0VSVklDRV9OQU1FLCBPQkpFQ1RQT0lOVCwgMjM1KSwKKyAgQ0lOSVQoUFJPWFlfU0VSVklDRV9OQU1FLCBTVFJJTkdQT0lOVCwgMjM1KSwKIAogICAvKiBTZXJ2aWNlIE5hbWUgKi8KLSAgQ0lOSVQoU0VSVklDRV9OQU1FLCBPQkpFQ1RQT0lOVCwgMjM2KSwKKyAgQ0lOSVQoU0VSVklDRV9OQU1FLCBTVFJJTkdQT0lOVCwgMjM2KSwKIAogICAvKiBXYWl0L2Rvbid0IHdhaXQgZm9yIHBpcGUvbXV0ZXggdG8gY2xhcmlmeSAqLwogICBDSU5JVChQSVBFV0FJVCwgTE9ORywgMjM3KSwKIAorICAvKiBTZXQgdGhlIHByb3RvY29sIHVzZWQgd2hlbiBjdXJsIGlzIGdpdmVuIGEgVVJMIHdpdGhvdXQgYSBwcm90b2NvbCAqLworICBDSU5JVChERUZBVUxUX1BST1RPQ09MLCBTVFJJTkdQT0lOVCwgMjM4KSwKKworICAvKiBTZXQgc3RyZWFtIHdlaWdodCwgMSAtIDI1NiAoZGVmYXVsdCBpcyAxNikgKi8KKyAgQ0lOSVQoU1RSRUFNX1dFSUdIVCwgTE9ORywgMjM5KSwKKworICAvKiBTZXQgc3RyZWFtIGRlcGVuZGVuY3kgb24gYW5vdGhlciBDVVJMIGhhbmRsZSAqLworICBDSU5JVChTVFJFQU1fREVQRU5EUywgT0JKRUNUUE9JTlQsIDI0MCksCisKKyAgLyogU2V0IEUteGNsdXNpdmUgc3RyZWFtIGRlcGVuZGVuY3kgb24gYW5vdGhlciBDVVJMIGhhbmRsZSAqLworICBDSU5JVChTVFJFQU1fREVQRU5EU19FLCBPQkpFQ1RQT0lOVCwgMjQxKSwKKworICAvKiBEbyBub3Qgc2VuZCBhbnkgdGZ0cCBvcHRpb24gcmVxdWVzdHMgdG8gdGhlIHNlcnZlciAqLworICBDSU5JVChURlRQX05PX09QVElPTlMsIExPTkcsIDI0MiksCisKKyAgLyogTGlua2VkLWxpc3Qgb2YgaG9zdDpwb3J0OmNvbm5lY3QtdG8taG9zdDpjb25uZWN0LXRvLXBvcnQsCisgICAgIG92ZXJyaWRlcyB0aGUgVVJMJ3MgaG9zdDpwb3J0IChvbmx5IGZvciB0aGUgbmV0d29yayBsYXllcikgKi8KKyAgQ0lOSVQoQ09OTkVDVF9UTywgT0JKRUNUUE9JTlQsIDI0MyksCisKKyAgLyogU2V0IFRDUCBGYXN0IE9wZW4gKi8KKyAgQ0lOSVQoVENQX0ZBU1RPUEVOLCBMT05HLCAyNDQpLAorCiAgIENVUkxPUFRfTEFTVEVOVFJZIC8qIHRoZSBsYXN0IHVudXNlZCAqLwogfSBDVVJMb3B0aW9uOwogCkBAIC0xNjkwLDcgKzE3MzgsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHVzISAqLwogICBDVVJMX0hUVFBfVkVSU0lPTl8xXzAsICAvKiBwbGVhc2UgdXNlIEhUVFAgMS4wIGluIHRoZSByZXF1ZXN0ICovCiAgIENVUkxfSFRUUF9WRVJTSU9OXzFfMSwgIC8qIHBsZWFzZSB1c2UgSFRUUCAxLjEgaW4gdGhlIHJlcXVlc3QgKi8KLSAgQ1VSTF9IVFRQX1ZFUlNJT05fMl8wLCAgLyogcGxlYXNlIHVzZSBIVFRQIDIuMCBpbiB0aGUgcmVxdWVzdCAqLworICBDVVJMX0hUVFBfVkVSU0lPTl8yXzAsICAvKiBwbGVhc2UgdXNlIEhUVFAgMiBpbiB0aGUgcmVxdWVzdCAqLworICBDVVJMX0hUVFBfVkVSU0lPTl8yVExTLCAvKiB1c2UgdmVyc2lvbiAyIGZvciBIVFRQUywgdmVyc2lvbiAxLjEgZm9yIEhUVFAgKi8KKyAgQ1VSTF9IVFRQX1ZFUlNJT05fMl9QUklPUl9LTk9XTEVER0UsICAvKiBwbGVhc2UgdXNlIEhUVFAgMiB3aXRob3V0IEhUVFAvMS4xCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXBncmFkZSAqLwogCiAgIENVUkxfSFRUUF9WRVJTSU9OX0xBU1QgLyogKklMTEVHQUwqIGh0dHAgdmVyc2lvbiAqLwogfTsKQEAgLTE4MTUsNiArMTg2Niw3IEBACiAgIENGSU5JVChPQlNPTEVURTIpLAogCiAgIENGSU5JVChTVFJFQU0pLAorICBDRklOSVQoQ09OVEVOVExFTiksIC8qIGFkZGVkIGluIDcuNDYuMCwgcHJvdmlkZSBhIGN1cmxfb2ZmX3QgbGVuZ3RoICovCiAKICAgQ1VSTEZPUk1fTEFTVEVOVFJZIC8qIHRoZSBsYXN0IHVudXNlZCAqLwogfSBDVVJMZm9ybW9wdGlvbjsKQEAgLTIwNjksMTIgKzIxMjEsMTggQEAKICAgQ1VSTFNTTEJBQ0tFTkRfQ1lBU1NMID0gNywKICAgQ1VSTFNTTEJBQ0tFTkRfU0NIQU5ORUwgPSA4LAogICBDVVJMU1NMQkFDS0VORF9EQVJXSU5TU0wgPSA5LAotICBDVVJMU1NMQkFDS0VORF9BWFRMUyA9IDEwCisgIENVUkxTU0xCQUNLRU5EX0FYVExTID0gMTAsCisgIENVUkxTU0xCQUNLRU5EX01CRURUTFMgPSAxMQogfSBjdXJsX3NzbGJhY2tlbmQ7CiAKKy8qIGFsaWFzZXMgZm9yIGxpYnJhcnkgY2xvbmVzIGFuZCByZW5hbWVzICovCisjZGVmaW5lIENVUkxTU0xCQUNLRU5EX0xJQlJFU1NMIDEKKyNkZWZpbmUgQ1VSTFNTTEJBQ0tFTkRfQk9SSU5HU1NMIDEKKyNkZWZpbmUgQ1VSTFNTTEJBQ0tFTkRfV09MRlNTTCA2CisKIC8qIEluZm9ybWF0aW9uIGFib3V0IHRoZSBTU0wgbGlicmFyeSB1c2VkIGFuZCB0aGUgcmVzcGVjdGl2ZSBpbnRlcm5hbCBTU0wKICAgIGhhbmRsZSwgd2hpY2ggY2FuIGJlIHVzZWQgdG8gb2J0YWluIGZ1cnRoZXIgaW5mb3JtYXRpb24gcmVnYXJkaW5nIHRoZQotICAgY29ubmVjdGlvbi4gQXNrZWQgZm9yIHdpdGggQ1VSTElORk9fVExTX1NFU1NJT04uICovCisgICBjb25uZWN0aW9uLiBBc2tlZCBmb3Igd2l0aCBDVVJMSU5GT19UTFNfU1NMX1BUUiBvciBDVVJMSU5GT19UTFNfU0VTU0lPTi4gKi8KIHN0cnVjdCBjdXJsX3Rsc3Nlc3Npb25pbmZvIHsKICAgY3VybF9zc2xiYWNrZW5kIGJhY2tlbmQ7CiAgIHZvaWQgKmludGVybmFsczsKQEAgLTIwODQsNiArMjE0Miw3IEBACiAjZGVmaW5lIENVUkxJTkZPX0xPTkcgICAgIDB4MjAwMDAwCiAjZGVmaW5lIENVUkxJTkZPX0RPVUJMRSAgIDB4MzAwMDAwCiAjZGVmaW5lIENVUkxJTkZPX1NMSVNUICAgIDB4NDAwMDAwCisjZGVmaW5lIENVUkxJTkZPX1NPQ0tFVCAgIDB4NTAwMDAwCiAjZGVmaW5lIENVUkxJTkZPX01BU0sgICAgIDB4MGZmZmZmCiAjZGVmaW5lIENVUkxJTkZPX1RZUEVNQVNLIDB4ZjAwMDAwCiAKQEAgLTIxMzIsOSArMjE5MSwxMSBAQAogICBDVVJMSU5GT19MT0NBTF9JUCAgICAgICAgID0gQ1VSTElORk9fU1RSSU5HICsgNDEsCiAgIENVUkxJTkZPX0xPQ0FMX1BPUlQgICAgICAgPSBDVVJMSU5GT19MT05HICAgKyA0MiwKICAgQ1VSTElORk9fVExTX1NFU1NJT04gICAgICA9IENVUkxJTkZPX1NMSVNUICArIDQzLAorICBDVVJMSU5GT19BQ1RJVkVTT0NLRVQgICAgID0gQ1VSTElORk9fU09DS0VUICsgNDQsCisgIENVUkxJTkZPX1RMU19TU0xfUFRSICAgICAgPSBDVVJMSU5GT19TTElTVCAgKyA0NSwKICAgLyogRmlsbCBpbiBuZXcgZW50cmllcyBiZWxvdyBoZXJlISAqLwogCi0gIENVUkxJTkZPX0xBU1RPTkUgICAgICAgICAgPSA0MworICBDVVJMSU5GT19MQVNUT05FICAgICAgICAgID0gNDUKIH0gQ1VSTElORk87CiAKIC8qIENVUkxJTkZPX1JFU1BPTlNFX0NPREUgaXMgdGhlIG5ldyBuYW1lIGZvciB0aGUgb3B0aW9uIHByZXZpb3VzbHkga25vd24gYXMKQEAgLTIyOTQsNiArMjM1NSw4IEBACiAjZGVmaW5lIENVUkxfVkVSU0lPTl9HU1NBUEkgICAgICAgKDE8PDE3KSAvKiBCdWlsdCBhZ2FpbnN0IGEgR1NTLUFQSSBsaWJyYXJ5ICovCiAjZGVmaW5lIENVUkxfVkVSU0lPTl9LRVJCRVJPUzUgICAgKDE8PDE4KSAvKiBLZXJiZXJvcyBWNSBhdXRoIGlzIHN1cHBvcnRlZCAqLwogI2RlZmluZSBDVVJMX1ZFUlNJT05fVU5JWF9TT0NLRVRTICgxPDwxOSkgLyogVW5peCBkb21haW4gc29ja2V0cyBzdXBwb3J0ICovCisjZGVmaW5lIENVUkxfVkVSU0lPTl9QU0wgICAgICAgICAgKDE8PDIwKSAvKiBNb3ppbGxhJ3MgUHVibGljIFN1ZmZpeCBMaXN0LCB1c2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgY29va2llIGRvbWFpbiB2ZXJpZmljYXRpb24gKi8KIAogIC8qCiAgKiBOQU1FIGN1cmxfdmVyc2lvbl9pbmZvKCkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY3VybC9jdXJsYnVpbGQuaCBiL2luY2x1ZGUvY3VybC9jdXJsYnVpbGQuaAppbmRleCAyYmYwMWNmLi40NzNjZDhlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2N1cmwvY3VybGJ1aWxkLmgKKysrIGIvaW5jbHVkZS9jdXJsL2N1cmxidWlsZC5oCkBAIC0xMiw3ICsxMiw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzYsNyArMzYsNyBAQAogICoKICAqIElmIHlvdSB0aGluayB0aGF0IHNvbWV0aGluZyBhY3R1YWxseSBuZWVkcyB0byBiZSBjaGFuZ2VkLCBhZGp1c3RlZAogICogb3IgZml4ZWQgaW4gdGhpcyBmaWxlLCB0aGVuLCByZXBvcnQgaXQgb24gdGhlIGxpYmN1cmwgZGV2ZWxvcG1lbnQKLSAqIG1haWxpbmcgbGlzdDogaHR0cDovL2Nvb2wuaGF4eC5zZS9tYWlsbWFuL2xpc3RpbmZvL2N1cmwtbGlicmFyeS8KKyAqIG1haWxpbmcgbGlzdDogaHR0cHM6Ly9jb29sLmhheHguc2UvbWFpbG1hbi9saXN0aW5mby9jdXJsLWxpYnJhcnkvCiAgKgogICogVGhpcyBoZWFkZXIgZmlsZSBzaGFsbCBvbmx5IGV4cG9ydCBzeW1ib2xzIHdoaWNoIGFyZSAnY3VybCcgb3IgJ0NVUkwnCiAgKiBwcmVmaXhlZCwgb3RoZXJ3aXNlIHB1YmxpYyBuYW1lIHNwYWNlIHdvdWxkIGJlIHBvbGx1dGVkLgpAQCAtMTMzLDE0ICsxMzMsMTQgQEAKIAogLyogQ29uZmlndXJlIHByb2Nlc3MgZGVmaW5lcyB0aGlzIHRvIDEgd2hlbiBpdCBmaW5kcyBvdXQgdGhhdCBzeXN0ZW0gKi8KIC8qIGhlYWRlciBmaWxlIHN0ZGludC5oIG11c3QgYmUgaW5jbHVkZWQgYnkgdGhlIGV4dGVybmFsIGludGVyZmFjZS4gICovCi0jZGVmaW5lIENVUkxfUFVMTF9TVERJTlRfSCAxCisvKiAjdW5kZWYgQ1VSTF9QVUxMX1NURElOVF9IICovCiAjaWZkZWYgQ1VSTF9QVUxMX1NURElOVF9ICiAjICBpbmNsdWRlIDxzdGRpbnQuaD4KICNlbmRpZgogCiAvKiBDb25maWd1cmUgcHJvY2VzcyBkZWZpbmVzIHRoaXMgdG8gMSB3aGVuIGl0IGZpbmRzIG91dCB0aGF0IHN5c3RlbSAgKi8KIC8qIGhlYWRlciBmaWxlIGludHR5cGVzLmggbXVzdCBiZSBpbmNsdWRlZCBieSB0aGUgZXh0ZXJuYWwgaW50ZXJmYWNlLiAqLwotI2RlZmluZSBDVVJMX1BVTExfSU5UVFlQRVNfSCAxCisvKiAjdW5kZWYgQ1VSTF9QVUxMX0lOVFRZUEVTX0ggKi8KICNpZmRlZiBDVVJMX1BVTExfSU5UVFlQRVNfSAogIyAgaW5jbHVkZSA8aW50dHlwZXMuaD4KICNlbmRpZgpAQCAtMTY5LDcgKzE2OSw3IEBACiB0eXBlZGVmIENVUkxfVFlQRU9GX0NVUkxfU09DS0xFTl9UIGN1cmxfc29ja2xlbl90OwogCiAvKiBTaWduZWQgaW50ZWdyYWwgZGF0YSB0eXBlIHVzZWQgZm9yIGN1cmxfb2ZmX3QuICovCi0jZGVmaW5lIENVUkxfVFlQRU9GX0NVUkxfT0ZGX1QgaW50NjRfdAorI2RlZmluZSBDVVJMX1RZUEVPRl9DVVJMX09GRl9UIGxvbmcgbG9uZwogCiAvKiBEYXRhIHR5cGUgZGVmaW5pdGlvbiBvZiBjdXJsX29mZl90LiAqLwogdHlwZWRlZiBDVVJMX1RZUEVPRl9DVVJMX09GRl9UIGN1cmxfb2ZmX3Q7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2N1cmwvY3VybGJ1aWxkLmguY21ha2UgYi9pbmNsdWRlL2N1cmwvY3VybGJ1aWxkLmguY21ha2UKaW5kZXggNjBiYzdhNy4uYmJiMzFhOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jdXJsL2N1cmxidWlsZC5oLmNtYWtlCisrKyBiL2luY2x1ZGUvY3VybC9jdXJsYnVpbGQuaC5jbWFrZQpAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTM1LDcgKzM1LDcgQEAKICAqCiAgKiBJZiB5b3UgdGhpbmsgdGhhdCBzb21ldGhpbmcgYWN0dWFsbHkgbmVlZHMgdG8gYmUgY2hhbmdlZCwgYWRqdXN0ZWQKICAqIG9yIGZpeGVkIGluIHRoaXMgZmlsZSwgdGhlbiwgcmVwb3J0IGl0IG9uIHRoZSBsaWJjdXJsIGRldmVsb3BtZW50Ci0gKiBtYWlsaW5nIGxpc3Q6IGh0dHA6Ly9jb29sLmhheHguc2UvbWFpbG1hbi9saXN0aW5mby9jdXJsLWxpYnJhcnkvCisgKiBtYWlsaW5nIGxpc3Q6IGh0dHBzOi8vY29vbC5oYXh4LnNlL21haWxtYW4vbGlzdGluZm8vY3VybC1saWJyYXJ5LwogICoKICAqIFRoaXMgaGVhZGVyIGZpbGUgc2hhbGwgb25seSBleHBvcnQgc3ltYm9scyB3aGljaCBhcmUgJ2N1cmwnIG9yICdDVVJMJwogICogcHJlZml4ZWQsIG90aGVyd2lzZSBwdWJsaWMgbmFtZSBzcGFjZSB3b3VsZCBiZSBwb2xsdXRlZC4KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY3VybC9jdXJsYnVpbGQuaC5kaXN0IGIvaW5jbHVkZS9jdXJsL2N1cmxidWlsZC5oLmRpc3QKaW5kZXggZjA5NDE5YS4uYWU5NTA5NSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jdXJsL2N1cmxidWlsZC5oLmRpc3QKKysrIGIvaW5jbHVkZS9jdXJsL2N1cmxidWlsZC5oLmRpc3QKQEAgLTcsMTEgKzcsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDEzLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC00OSw3ICs0OSw3IEBACiAgKgogICogSWYgeW91IHRoaW5rIHRoYXQgc29tZXRoaW5nIGFjdHVhbGx5IG5lZWRzIHRvIGJlIGNoYW5nZWQsIGFkanVzdGVkCiAgKiBvciBmaXhlZCBpbiB0aGlzIGZpbGUsIHRoZW4sIHJlcG9ydCBpdCBvbiB0aGUgbGliY3VybCBkZXZlbG9wbWVudAotICogbWFpbGluZyBsaXN0OiBodHRwOi8vY29vbC5oYXh4LnNlL21haWxtYW4vbGlzdGluZm8vY3VybC1saWJyYXJ5LworICogbWFpbGluZyBsaXN0OiBodHRwczovL2Nvb2wuaGF4eC5zZS9tYWlsbWFuL2xpc3RpbmZvL2N1cmwtbGlicmFyeS8KICAqCiAgKiBUcnkgdG8ga2VlcCBvbmUgc2VjdGlvbiBwZXIgcGxhdGZvcm0sIGNvbXBpbGVyIGFuZCBhcmNoaXRlY3R1cmUsCiAgKiBvdGhlcndpc2UsIGlmIGFuIGV4aXN0aW5nIHNlY3Rpb24gaXMgcmV1c2VkIGZvciBhIGRpZmZlcmVudCBvbmUgYW5kCkBAIC01MjcsOCArNTI3LDkgQEAKIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KIAogI2VsaWYgZGVmaW5lZChfX0dOVUNfXykKLSMgIGlmIGRlZmluZWQoX19JTFAzMl9fKSB8fCBcCi0gICAgICBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fcHBjX18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX3NwYXJjX18pCisjICBpZiAhZGVmaW5lZChfX0xQNjRfXykgJiYgKGRlZmluZWQoX19JTFAzMl9fKSB8fCBcCisgICAgICBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fcHBjX18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgXAorICAgICAgZGVmaW5lZChfX3NwYXJjX18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IGRlZmluZWQoX19zaF9fKSkKICMgICAgZGVmaW5lIENVUkxfU0laRU9GX0xPTkcgICAgICAgICAgIDQKICMgICAgZGVmaW5lIENVUkxfVFlQRU9GX0NVUkxfT0ZGX1QgICAgIGxvbmcgbG9uZwogIyAgICBkZWZpbmUgQ1VSTF9GT1JNQVRfQ1VSTF9PRkZfVCAgICAgImxsZCIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY3VybC9jdXJsYnVpbGQuaC5pbiBiL2luY2x1ZGUvY3VybC9jdXJsYnVpbGQuaC5pbgppbmRleCA3Y2IyYjZlLi43OTI0MTk1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2N1cmwvY3VybGJ1aWxkLmguaW4KKysrIGIvaW5jbHVkZS9jdXJsL2N1cmxidWlsZC5oLmluCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzUsNyArMzUsNyBAQAogICoKICAqIElmIHlvdSB0aGluayB0aGF0IHNvbWV0aGluZyBhY3R1YWxseSBuZWVkcyB0byBiZSBjaGFuZ2VkLCBhZGp1c3RlZAogICogb3IgZml4ZWQgaW4gdGhpcyBmaWxlLCB0aGVuLCByZXBvcnQgaXQgb24gdGhlIGxpYmN1cmwgZGV2ZWxvcG1lbnQKLSAqIG1haWxpbmcgbGlzdDogaHR0cDovL2Nvb2wuaGF4eC5zZS9tYWlsbWFuL2xpc3RpbmZvL2N1cmwtbGlicmFyeS8KKyAqIG1haWxpbmcgbGlzdDogaHR0cHM6Ly9jb29sLmhheHguc2UvbWFpbG1hbi9saXN0aW5mby9jdXJsLWxpYnJhcnkvCiAgKgogICogVGhpcyBoZWFkZXIgZmlsZSBzaGFsbCBvbmx5IGV4cG9ydCBzeW1ib2xzIHdoaWNoIGFyZSAnY3VybCcgb3IgJ0NVUkwnCiAgKiBwcmVmaXhlZCwgb3RoZXJ3aXNlIHB1YmxpYyBuYW1lIHNwYWNlIHdvdWxkIGJlIHBvbGx1dGVkLgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jdXJsL2N1cmxydWxlcy5oIGIvaW5jbHVkZS9jdXJsL2N1cmxydWxlcy5oCmluZGV4IDExNjNlOTUuLjkwYTllZjMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY3VybC9jdXJscnVsZXMuaAorKysgYi9pbmNsdWRlL2N1cmwvY3VybHJ1bGVzLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC00Nyw3ICs0Nyw3IEBACiAgKiBsaWJyYXJ5IGlzIHByb3Blcmx5IGJ1aWx0IGFuZCB1c2VkLgogICoKICAqIFlvdSBjYW4gZmluZCBmdXJ0aGVyIGhlbHAgb24gdGhlIGxpYmN1cmwgZGV2ZWxvcG1lbnQgbWFpbGluZyBsaXN0OgotICogaHR0cDovL2Nvb2wuaGF4eC5zZS9tYWlsbWFuL2xpc3RpbmZvL2N1cmwtbGlicmFyeS8KKyAqIGh0dHBzOi8vY29vbC5oYXh4LnNlL21haWxtYW4vbGlzdGluZm8vY3VybC1saWJyYXJ5LwogICoKICAqIE5PVEUgMgogICogLS0tLS0tCmRpZmYgLS1naXQgYS9pbmNsdWRlL2N1cmwvY3VybHZlci5oIGIvaW5jbHVkZS9jdXJsL2N1cmx2ZXIuaAppbmRleCBiZTQ0MmVmLi43Y2VhOTkzIDEwMDY0NAotLS0gYS9pbmNsdWRlL2N1cmwvY3VybHZlci5oCisrKyBiL2luY2x1ZGUvY3VybC9jdXJsdmVyLmgKQEAgLTcsMTEgKzcsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yNiwxNyArMjYsMTcgQEAKICAgIGEgc2NyaXB0IGF0IHJlbGVhc2UtdGltZS4gVGhpcyB3YXMgbWFkZSBpdHMgb3duIGhlYWRlciBmaWxlIGluIDcuMTEuMiAqLwogCiAvKiBUaGlzIGlzIHRoZSBnbG9iYWwgcGFja2FnZSBjb3B5cmlnaHQgKi8KLSNkZWZpbmUgTElCQ1VSTF9DT1BZUklHSFQgIjE5OTYgLSAyMDE1IERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPi4iCisjZGVmaW5lIExJQkNVUkxfQ09QWVJJR0hUICIxOTk2IC0gMjAxNiBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4uIgogCiAvKiBUaGlzIGlzIHRoZSB2ZXJzaW9uIG51bWJlciBvZiB0aGUgbGliY3VybCBwYWNrYWdlIGZyb20gd2hpY2ggdGhpcyBoZWFkZXIKICAgIGZpbGUgb3JpZ2luczogKi8KLSNkZWZpbmUgTElCQ1VSTF9WRVJTSU9OICI3LjQzLjAtREVWIgorI2RlZmluZSBMSUJDVVJMX1ZFUlNJT04gIjcuNDkuMS1ERVYiCiAKIC8qIFRoZSBudW1lcmljIHZlcnNpb24gbnVtYmVyIGlzIGFsc28gYXZhaWxhYmxlICJpbiBwYXJ0cyIgYnkgdXNpbmcgdGhlc2UKICAgIGRlZmluZXM6ICovCiAjZGVmaW5lIExJQkNVUkxfVkVSU0lPTl9NQUpPUiA3Ci0jZGVmaW5lIExJQkNVUkxfVkVSU0lPTl9NSU5PUiA0MwotI2RlZmluZSBMSUJDVVJMX1ZFUlNJT05fUEFUQ0ggMAorI2RlZmluZSBMSUJDVVJMX1ZFUlNJT05fTUlOT1IgNDkKKyNkZWZpbmUgTElCQ1VSTF9WRVJTSU9OX1BBVENIIDEKIAogLyogVGhpcyBpcyB0aGUgbnVtZXJpYyB2ZXJzaW9uIG9mIHRoZSBsaWJjdXJsIHZlcnNpb24gbnVtYmVyLCBtZWFudCBmb3IgZWFzaWVyCiAgICBwYXJzaW5nIGFuZCBjb21wYXJpb25zIGJ5IHByb2dyYW1zLiBUaGUgTElCQ1VSTF9WRVJTSU9OX05VTSBkZWZpbmUgd2lsbApAQCAtNTcsNyArNTcsNyBAQAogICAgQ1VSTF9WRVJTSU9OX0JJVFMoKSBtYWNybyBzaW5jZSBjdXJsJ3Mgb3duIGNvbmZpZ3VyZSBzY3JpcHQgZ3JlcHMgZm9yIGl0CiAgICBhbmQgbmVlZHMgaXQgdG8gY29udGFpbiB0aGUgZnVsbCBudW1iZXIuCiAqLwotI2RlZmluZSBMSUJDVVJMX1ZFUlNJT05fTlVNIDB4MDcyQjAwCisjZGVmaW5lIExJQkNVUkxfVkVSU0lPTl9OVU0gMHgwNzMxMDEKIAogLyoKICAqIFRoaXMgaXMgdGhlIGRhdGUgYW5kIHRpbWUgd2hlbiB0aGUgZnVsbCBzb3VyY2UgcGFja2FnZSB3YXMgY3JlYXRlZC4gVGhlCmRpZmYgLS1naXQgYS9pbmNsdWRlL2N1cmwvZWFzeS5oIGIvaW5jbHVkZS9jdXJsL2Vhc3kuaAppbmRleCBjMWUzZTc2Li5hZmM3NjZjIDEwMDY0NAotLS0gYS9pbmNsdWRlL2N1cmwvZWFzeS5oCisrKyBiL2luY2x1ZGUvY3VybC9lYXN5LmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9pbmNsdWRlL2N1cmwvbXByaW50Zi5oIGIvaW5jbHVkZS9jdXJsL21wcmludGYuaAppbmRleCBjNmIwZDc2Li5lMjBmNTQ2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2N1cmwvbXByaW50Zi5oCisrKyBiL2luY2x1ZGUvY3VybC9tcHJpbnRmLmgKQEAgLTcsMTEgKzcsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yNCw4ICsyNCw3IEBACiAKICNpbmNsdWRlIDxzdGRhcmcuaD4KICNpbmNsdWRlIDxzdGRpby5oPiAvKiBuZWVkZWQgZm9yIEZJTEUgKi8KLQotI2luY2x1ZGUgImN1cmwuaCIKKyNpbmNsdWRlICJjdXJsLmgiICAvKiBmb3IgQ1VSTF9FWFRFUk4gKi8KIAogI2lmZGVmICBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7CkBAIC00NCwyOSArNDMsNiBAQAogQ1VSTF9FWFRFUk4gY2hhciAqY3VybF9tYXByaW50Zihjb25zdCBjaGFyICpmb3JtYXQsIC4uLik7CiBDVVJMX0VYVEVSTiBjaGFyICpjdXJsX212YXByaW50Zihjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgYXJncyk7CiAKLSNpZmRlZiBfTVBSSU5URl9SRVBMQUNFCi0jIHVuZGVmIHByaW50ZgotIyB1bmRlZiBmcHJpbnRmCi0jIHVuZGVmIHNwcmludGYKLSMgdW5kZWYgdnNwcmludGYKLSMgdW5kZWYgc25wcmludGYKLSMgdW5kZWYgdnByaW50ZgotIyB1bmRlZiB2ZnByaW50ZgotIyB1bmRlZiB2c25wcmludGYKLSMgdW5kZWYgYXByaW50ZgotIyB1bmRlZiB2YXByaW50ZgotIyBkZWZpbmUgcHJpbnRmIGN1cmxfbXByaW50ZgotIyBkZWZpbmUgZnByaW50ZiBjdXJsX21mcHJpbnRmCi0jIGRlZmluZSBzcHJpbnRmIGN1cmxfbXNwcmludGYKLSMgZGVmaW5lIHZzcHJpbnRmIGN1cmxfbXZzcHJpbnRmCi0jIGRlZmluZSBzbnByaW50ZiBjdXJsX21zbnByaW50ZgotIyBkZWZpbmUgdnByaW50ZiBjdXJsX212cHJpbnRmCi0jIGRlZmluZSB2ZnByaW50ZiBjdXJsX212ZnByaW50ZgotIyBkZWZpbmUgdnNucHJpbnRmIGN1cmxfbXZzbnByaW50ZgotIyBkZWZpbmUgYXByaW50ZiBjdXJsX21hcHJpbnRmCi0jIGRlZmluZSB2YXByaW50ZiBjdXJsX212YXByaW50ZgotI2VuZGlmCi0KICNpZmRlZiAgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jdXJsL211bHRpLmggYi9pbmNsdWRlL2N1cmwvbXVsdGkuaAppbmRleCAwZDg1OWY4Li4wZmJiZDk2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2N1cmwvbXVsdGkuaAorKysgYi9pbmNsdWRlL2N1cmwvbXVsdGkuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTM3MCw2ICszNzAsMTIgQEAKICAgLyogbWF4aW11bSBudW1iZXIgb2Ygb3BlbiBjb25uZWN0aW9ucyBpbiB0b3RhbCAqLwogICBDSU5JVChNQVhfVE9UQUxfQ09OTkVDVElPTlMsIExPTkcsIDEzKSwKIAorICAgLyogVGhpcyBpcyB0aGUgc2VydmVyIHB1c2ggY2FsbGJhY2sgZnVuY3Rpb24gcG9pbnRlciAqLworICBDSU5JVChQVVNIRlVOQ1RJT04sIEZVTkNUSU9OUE9JTlQsIDE0KSwKKworICAvKiBUaGlzIGlzIHRoZSBhcmd1bWVudCBwYXNzZWQgdG8gdGhlIHNlcnZlciBwdXNoIGNhbGxiYWNrICovCisgIENJTklUKFBVU0hEQVRBLCBPQkpFQ1RQT0lOVCwgMTUpLAorCiAgIENVUkxNT1BUX0xBU1RFTlRSWSAvKiB0aGUgbGFzdCB1bnVzZWQgKi8KIH0gQ1VSTE1vcHRpb247CiAKQEAgLTM5Nyw2ICs0MDMsMzEgQEAKIENVUkxfRVhURVJOIENVUkxNY29kZSBjdXJsX211bHRpX2Fzc2lnbihDVVJMTSAqbXVsdGlfaGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cmxfc29ja2V0X3Qgc29ja2ZkLCB2b2lkICpzb2NrcCk7CiAKKworLyoKKyAqIE5hbWU6IGN1cmxfcHVzaF9jYWxsYmFjaworICoKKyAqIERlc2M6IFRoaXMgY2FsbGJhY2sgZ2V0cyBjYWxsZWQgd2hlbiBhIG5ldyBzdHJlYW0gaXMgYmVpbmcgcHVzaGVkIGJ5IHRoZQorICogICAgICAgc2VydmVyLiBJdCBhcHByb3ZlcyBvciBkZW5pZXMgdGhlIG5ldyBzdHJlYW0uCisgKgorICogUmV0dXJuczogQ1VSTF9QVVNIX09LIG9yIENVUkxfUFVTSF9ERU5ZLgorICovCisjZGVmaW5lIENVUkxfUFVTSF9PSyAgIDAKKyNkZWZpbmUgQ1VSTF9QVVNIX0RFTlkgMQorCitzdHJ1Y3QgY3VybF9wdXNoaGVhZGVyczsgIC8qIGZvcndhcmQgZGVjbGFyYXRpb24gb25seSAqLworCitDVVJMX0VYVEVSTiBjaGFyICpjdXJsX3B1c2hoZWFkZXJfYnludW0oc3RydWN0IGN1cmxfcHVzaGhlYWRlcnMgKmgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG51bSk7CitDVVJMX0VYVEVSTiBjaGFyICpjdXJsX3B1c2hoZWFkZXJfYnluYW1lKHN0cnVjdCBjdXJsX3B1c2hoZWFkZXJzICpoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lKTsKKwordHlwZWRlZiBpbnQgKCpjdXJsX3B1c2hfY2FsbGJhY2spKENVUkwgKnBhcmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDVVJMICplYXN5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBudW1faGVhZGVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY3VybF9wdXNoaGVhZGVycyAqaGVhZGVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp1c2VycCk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfSAvKiBlbmQgb2YgZXh0ZXJuICJDIiAqLwogI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2N1cmwvc3RkY2hlYWRlcnMuaCBiL2luY2x1ZGUvY3VybC9zdGRjaGVhZGVycy5oCmluZGV4IGFkODJlZjYuLjZmMGY3ZjMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY3VybC9zdGRjaGVhZGVycy5oCisrKyBiL2luY2x1ZGUvY3VybC9zdGRjaGVhZGVycy5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jdXJsL3R5cGVjaGVjay1nY2MuaCBiL2luY2x1ZGUvY3VybC90eXBlY2hlY2stZ2NjLmgKaW5kZXggMTNmYjBmYS4uNmVjOGJjZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jdXJsL3R5cGVjaGVjay1nY2MuaAorKysgYi9pbmNsdWRlL2N1cmwvdHlwZWNoZWNrLWdjYy5oCkBAIC03LDExICs3LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjE4LDYwICsyMTgsNjcgQEAKIAogLyogZXZhbHVhdGVzIHRvIHRydWUgaWYgb3B0aW9uIHRha2VzIGEgY2hhciogYXJndW1lbnQgKi8KICNkZWZpbmUgX2N1cmxfaXNfc3RyaW5nX29wdGlvbihvcHRpb24pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgKChvcHRpb24pID09IENVUkxPUFRfVVJMIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfUFJPWFkgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfSU5URVJGQUNFIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfTkVUUkNfRklMRSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfVVNFUlBXRCB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfVVNFUk5BTUUgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfUEFTU1dPUkQgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfUFJPWFlVU0VSUFdEIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfUFJPWFlVU0VSTkFNRSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfUFJPWFlQQVNTV09SRCB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfTk9QUk9YWSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfQUNDRVBUX0VOQ09ESU5HIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfUkVGRVJFUiB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfVVNFUkFHRU5UIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgKChvcHRpb24pID09IENVUkxPUFRfQUNDRVBUX0VOQ09ESU5HIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfQ0FJTkZPIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfQ0FQQVRIIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIChvcHRpb24pID09IENVUkxPUFRfQ09PS0lFIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIChvcHRpb24pID09IENVUkxPUFRfQ09PS0lFRklMRSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIChvcHRpb24pID09IENVUkxPUFRfQ09PS0lFSkFSIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIChvcHRpb24pID09IENVUkxPUFRfQ09PS0lFTElTVCB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfRlRQUE9SVCB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfRlRQX0FMVEVSTkFUSVZFX1RPX1VTRVIgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfRlRQX0FDQ09VTlQgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfUkFOR0UgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfQ1VTVE9NUkVRVUVTVCB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfU1NMQ0VSVCB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfU1NMQ0VSVFRZUEUgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfU1NMS0VZIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfU1NMS0VZVFlQRSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfS0VZUEFTU1dEIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfU1NMRU5HSU5FIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfQ0FJTkZPIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfQ0FQQVRIIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfUkFORE9NX0ZJTEUgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfRUdEU09DS0VUIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfU1NMX0NJUEhFUl9MSVNUIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfS1JCTEVWRUwgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfU1NIX0hPU1RfUFVCTElDX0tFWV9NRDUgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfU1NIX1BVQkxJQ19LRVlGSUxFIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfU1NIX1BSSVZBVEVfS0VZRklMRSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIChvcHRpb24pID09IENVUkxPUFRfQ1JMRklMRSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfSVNTVUVSQ0VSVCB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfU09DS1M1X0dTU0FQSV9TRVJWSUNFIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfU1NIX0tOT1dOSE9TVFMgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfTUFJTF9GUk9NIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfUlRTUF9TRVNTSU9OX0lEIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfUlRTUF9TVFJFQU1fVVJJIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfUlRTUF9UUkFOU1BPUlQgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfWE9BVVRIMl9CRUFSRVIgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfRE5TX1NFUlZFUlMgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfQ1VTVE9NUkVRVUVTVCB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfREVGQVVMVF9QUk9UT0NPTCB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIChvcHRpb24pID09IENVUkxPUFRfRE5TX0lOVEVSRkFDRSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIChvcHRpb24pID09IENVUkxPUFRfRE5TX0xPQ0FMX0lQNCB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIChvcHRpb24pID09IENVUkxPUFRfRE5TX0xPQ0FMX0lQNiB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfRE5TX1NFUlZFUlMgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfRUdEU09DS0VUIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfRlRQUE9SVCB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfRlRQX0FDQ09VTlQgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfRlRQX0FMVEVSTkFUSVZFX1RPX1VTRVIgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfSU5URVJGQUNFIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfSVNTVUVSQ0VSVCB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfS0VZUEFTU1dEIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfS1JCTEVWRUwgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIChvcHRpb24pID09IENVUkxPUFRfTE9HSU5fT1BUSU9OUyB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfTUFJTF9BVVRIIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfTUFJTF9GUk9NIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfTkVUUkNfRklMRSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfTk9QUk9YWSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfUEFTU1dPUkQgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfUElOTkVEUFVCTElDS0VZIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfUFJPWFkgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfUFJPWFlQQVNTV09SRCB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfUFJPWFlVU0VSTkFNRSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfUFJPWFlVU0VSUFdEIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIChvcHRpb24pID09IENVUkxPUFRfUFJPWFlfU0VSVklDRV9OQU1FIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfUkFORE9NX0ZJTEUgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfUkFOR0UgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfUkVGRVJFUiB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfUlRTUF9TRVNTSU9OX0lEIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfUlRTUF9TVFJFQU1fVVJJIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfUlRTUF9UUkFOU1BPUlQgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIChvcHRpb24pID09IENVUkxPUFRfU0VSVklDRV9OQU1FIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfU09DS1M1X0dTU0FQSV9TRVJWSUNFIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfU1NIX0hPU1RfUFVCTElDX0tFWV9NRDUgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfU1NIX0tOT1dOSE9TVFMgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfU1NIX1BSSVZBVEVfS0VZRklMRSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfU1NIX1BVQkxJQ19LRVlGSUxFIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfU1NMQ0VSVCB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfU1NMQ0VSVFRZUEUgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfU1NMRU5HSU5FIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfU1NMS0VZIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfU1NMS0VZVFlQRSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfU1NMX0NJUEhFUl9MSVNUIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfVExTQVVUSF9QQVNTV09SRCB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfVExTQVVUSF9UWVBFIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfVExTQVVUSF9VU0VSTkFNRSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfVU5JWF9TT0NLRVRfUEFUSCB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfVVJMIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfVVNFUkFHRU5UIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfVVNFUk5BTUUgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfVVNFUlBXRCB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfWE9BVVRIMl9CRUFSRVIgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIDApCiAKIC8qIGV2YWx1YXRlcyB0byB0cnVlIGlmIG9wdGlvbiB0YWtlcyBhIGN1cmxfd3JpdGVfY2FsbGJhY2sgYXJndW1lbnQgKi8KQEAgLTI4NywyMSArMjk0LDIyIEBACiAKIC8qIGV2YWx1YXRlcyB0byB0cnVlIGlmIG9wdGlvbiB0YWtlcyBhIGRhdGEgYXJndW1lbnQgdG8gcGFzcyB0byBhIGNhbGxiYWNrICovCiAjZGVmaW5lIF9jdXJsX2lzX2NiX2RhdGFfb3B0aW9uKG9wdGlvbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICgob3B0aW9uKSA9PSBDVVJMT1BUX1dSSVRFREFUQSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAob3B0aW9uKSA9PSBDVVJMT1BUX1JFQUREQVRBIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAob3B0aW9uKSA9PSBDVVJMT1BUX0lPQ1RMREFUQSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAob3B0aW9uKSA9PSBDVVJMT1BUX1NPQ0tPUFREQVRBIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAob3B0aW9uKSA9PSBDVVJMT1BUX09QRU5TT0NLRVREQVRBIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAob3B0aW9uKSA9PSBDVVJMT1BUX1BST0dSRVNTREFUQSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAob3B0aW9uKSA9PSBDVVJMT1BUX0hFQURFUkRBVEEgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgKChvcHRpb24pID09IENVUkxPUFRfQ0hVTktfREFUQSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfQ0xPU0VTT0NLRVREQVRBIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIChvcHRpb24pID09IENVUkxPUFRfREVCVUdEQVRBIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfU1NMX0NUWF9EQVRBIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfU0VFS0RBVEEgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfUFJJVkFURSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfU1NIX0tFWURBVEEgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfSU5URVJMRUFWRURBVEEgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgIChvcHRpb24pID09IENVUkxPUFRfQ0hVTktfREFUQSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIChvcHRpb24pID09IENVUkxPUFRfRk5NQVRDSF9EQVRBIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfSEVBREVSREFUQSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfSU5URVJMRUFWRURBVEEgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfSU9DVExEQVRBIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfT1BFTlNPQ0tFVERBVEEgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfUFJJVkFURSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfUFJPR1JFU1NEQVRBIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfUkVBRERBVEEgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfU0VFS0RBVEEgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfU09DS09QVERBVEEgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfU1NIX0tFWURBVEEgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfU1NMX0NUWF9EQVRBIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIChvcHRpb24pID09IENVUkxPUFRfV1JJVEVEQVRBIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIDApCiAKIC8qIGV2YWx1YXRlcyB0byB0cnVlIGlmIG9wdGlvbiB0YWtlcyBhIFBPU1QgZGF0YSBhcmd1bWVudCAodm9pZCogb3IgY2hhciopICovCkBAIC0zMTIsMTMgKzMyMCwxNSBAQAogCiAvKiBldmFsdWF0ZXMgdG8gdHJ1ZSBpZiBvcHRpb24gdGFrZXMgYSBzdHJ1Y3QgY3VybF9zbGlzdCAqIGFyZ3VtZW50ICovCiAjZGVmaW5lIF9jdXJsX2lzX3NsaXN0X29wdGlvbihvcHRpb24pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICgob3B0aW9uKSA9PSBDVVJMT1BUX0hUVFBIRUFERVIgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAob3B0aW9uKSA9PSBDVVJMT1BUX0hUVFAyMDBBTElBU0VTIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAob3B0aW9uKSA9PSBDVVJMT1BUX1FVT1RFIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICgob3B0aW9uKSA9PSBDVVJMT1BUX0hUVFAyMDBBTElBU0VTIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAob3B0aW9uKSA9PSBDVVJMT1BUX0hUVFBIRUFERVIgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAob3B0aW9uKSA9PSBDVVJMT1BUX01BSUxfUkNQVCB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAob3B0aW9uKSA9PSBDVVJMT1BUX1BPU1RRVU9URSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAob3B0aW9uKSA9PSBDVVJMT1BUX1BSRVFVT1RFIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAob3B0aW9uKSA9PSBDVVJMT1BUX1BST1hZSEVBREVSIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAob3B0aW9uKSA9PSBDVVJMT1BUX1FVT1RFIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAob3B0aW9uKSA9PSBDVVJMT1BUX1JFU09MVkUgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAob3B0aW9uKSA9PSBDVVJMT1BUX1RFTE5FVE9QVElPTlMgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAob3B0aW9uKSA9PSBDVVJMT1BUX01BSUxfUkNQVCB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAwKQogCiAvKiBncm91cHMgb2YgY3VybF9lYXN5X2dldGluZm8gaW5mb3MgdGhhdCB0YWtlIHRoZSBzYW1lIHR5cGUgb2YgYXJndW1lbnQgKi8KZGlmZiAtLWdpdCBhL2xpYi8uZ2l0aWdub3JlIGIvbGliLy5naXRpZ25vcmUKaW5kZXggZTI4OTY0MC4uYjIzZjI2NSAxMDA2NDQKLS0tIGEvbGliLy5naXRpZ25vcmUKKysrIGIvbGliLy5naXRpZ25vcmUKQEAgLTEsMTUgKzEsMTMgQEAKLWN1cmxfY29uZmlnLmgKLWN1cmxfY29uZmlnLmguaW4KLXN0YW1wLWgxCi0qLm9yaWcKLSoucmVqCi1UQUdTCi1NYWtlZmlsZS52YzguZGlzdAotTWFrZWZpbGUudmM5LmRpc3QKLWxpYmN1cmwucGxpc3QuZGlzdAotTWFrZWZpbGUudmMxMC5kaXN0Ci1saWJjdXJsLnZlcnMKICouYQotKi5yZXMKICouaW1wCiAqLm5sbQorKi5vcmlnCisqLnJlagorKi5yZXMKK01ha2VmaWxlLnZjKi5kaXN0CitUQUdTCitjdXJsX2NvbmZpZy5oCitjdXJsX2NvbmZpZy5oLmluCitsaWJjdXJsLnBsaXN0LmRpc3QKK2xpYmN1cmwudmVycworc3RhbXAtaDEKZGlmZiAtLWdpdCBhL2xpYi9NYWtlZmlsZS5XYXRjb20gYi9saWIvTWFrZWZpbGUuV2F0Y29tCmluZGV4IDBiN2JhNTkuLmNiYzU0Y2YgMTAwNjQ0Ci0tLSBhL2xpYi9NYWtlZmlsZS5XYXRjb20KKysrIGIvbGliL01ha2VmaWxlLldhdGNvbQpAQCAtMSw2ICsxLDI4IEBACisjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKyMgIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisjCisjIENvcHlyaWdodCAoQykgMjAwNSAtIDIwMDksIEdpc2xlIFZhbmVtIDxndmFuZW1AeWFob28ubm8+LgorIyBDb3B5cmlnaHQgKEMpIDIwMDUgLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorIworIyBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAorIyB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisjIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorIworIyBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKyMgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisjIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCisjCisjIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKyMgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyMKKyMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKwogIwogIyAgV2F0Y29tIC8gT3BlbldhdGNvbSAvIFdpbjMyIG1ha2VmaWxlIGZvciBsaWJjdXJsLgotIyAgRy4gVmFuZW0gPGd2YW5lbUBicm9hZHBhcmsubm8+CiAjCiAKIC5FUkFTRQpAQCAtMTY1LDE2ICsxODcsMTcgQEAKIAogT0JKUzEgPSAuLyQoQ1NPVVJDRVM6LmM9Lm9iaikKIE9CSlMyID0gJChPQkpTMTp2dGxzLz0pCi1PQkpTMyA9ICQoT0JKUzI6ID0gLi8pCi1PQkpTX1NUQVQgPSAkKE9CSlMzOi4vPSQoT0JKX1NUQVQpLykKLU9CSlNfRFlOICA9ICQoT0JKUzM6Li89JChPQkpfRFlOKS8pCitPQkpTMyA9ICQoT0JKUzI6dmF1dGgvPSkKK09CSlM0ID0gJChPQkpTMzogPSAuLykKK09CSlNfU1RBVCA9ICQoT0JKUzQ6Li89JChPQkpfU1RBVCkvKQorT0JKU19EWU4gID0gJChPQkpTNDouLz0kKE9CSl9EWU4pLykKIAogQ1VSTEJVSUxESCA9IC4uL2luY2x1ZGUvY3VybC9jdXJsYnVpbGQuaAogUkVTT1VSQ0UgICA9ICQoT0JKX0RZTikvbGliY3VybC5yZXMKIAogRElSUyA9ICQoT0JKX0JBU0UpICQoT0JKX0JBU0UpL3N0YXQgJChPQkpfQkFTRSkvZHluCiAKLS5jIDogdnRscworLmMgOiB2YXV0aCB2dGxzCiAKIGFsbDogJChDVVJMQlVJTERIKSAkKERJUlMpICQoVEFSR0VUUykgLlNZTUJPTElDCiAJQGVjaG8gV2VsY29tZSB0byBsaWJjdXJsCmRpZmYgLS1naXQgYS9saWIvTWFrZWZpbGUuYW0gYi9saWIvTWFrZWZpbGUuYW0KaW5kZXggYTJjM2RjNS4uMTJhYWY2MSAxMDA2NDQKLS0tIGEvbGliL01ha2VmaWxlLmFtCisrKyBiL2xpYi9NYWtlZmlsZS5hbQpAQCAtNSwxMSArNSwxMSBAQAogIyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICMKLSMgQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyMgQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICMKICMgVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICMgeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICMKICMgWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAjIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzAsNyArMzAsNyBAQAogIGNvbmZpZy1vczQwMC5oIHNldHVwLW9zNDAwLmggY29uZmlnLXN5bWJpYW4uaCBNYWtlZmlsZS5XYXRjb20JCVwKICBjb25maWctdHBmLmggbWstY2EtYnVuZGxlLnBsIG1rLWNhLWJ1bmRsZS52YnMgJChDTUFLRV9ESVNUKQlcCiAgZmlyZWZveC1kYjJwZW0uc2ggY29uZmlnLXZ4d29ya3MuaCBNYWtlZmlsZS52eHdvcmtzIGNoZWNrc3JjLnBsCVwKLSBvYmpuYW1lcy10ZXN0MDguc2ggb2JqbmFtZXMtdGVzdDEwLnNoIG9iam5hbWVzLmluYyBjaGVja3NyYy53aGl0ZWxpc3QKKyBvYmpuYW1lcy10ZXN0MDguc2ggb2JqbmFtZXMtdGVzdDEwLnNoIG9iam5hbWVzLmluYwogCiBsaWJfTFRMSUJSQVJJRVMgPSBsaWJjdXJsLmxhCiAKQEAgLTgwLDkgKzgwLDkgQEAKICMKICMgVGhpcyBjb25kaXRpb25hbCBzb25hbWUgYnVtcCBTSE9VTEQgYmUgcmVtb3ZlZCBhdCBuZXh0ICJwcm9wZXIiIGJ1bXAuCiAjCi1WRVJTSU9OSU5GTz0tdmVyc2lvbi1pbmZvIDg6MDozCitWRVJTSU9OSU5GTz0tdmVyc2lvbi1pbmZvIDk6MDo0CiBlbHNlCi1WRVJTSU9OSU5GTz0tdmVyc2lvbi1pbmZvIDc6MDozCitWRVJTSU9OSU5GTz0tdmVyc2lvbi1pbmZvIDg6MDo0CiBlbmRpZgogCiAjIFRoaXMgZmxhZyBhY2NlcHRzIGFuIGFyZ3VtZW50IG9mIHRoZSBmb3JtIGN1cnJlbnRbOnJldmlzaW9uWzphZ2VdXS4gU28sCkBAIC0xNDYsNyArMTQ2LDggQEAKIGxpYmN1cmx1X2xhX1NPVVJDRVMgPSAkKENTT1VSQ0VTKSAkKEhIRUFERVJTKQogCiBjaGVja3NyYzoKLQlAQFBFUkxAICQodG9wX3NyY2RpcikvbGliL2NoZWNrc3JjLnBsIC1EJCh0b3Bfc3JjZGlyKS9saWIgJChDU09VUkNFUykgJChISEVBREVSUykKKwlAUEVSTEAgJChzcmNkaXIpL2NoZWNrc3JjLnBsIC1EJChzcmNkaXIpIC1XJChzcmNkaXIpL2N1cmxfY29uZmlnLmggICAgICBcCisJJChzcmNkaXIpLyouW2NoXSAkKHNyY2RpcikvdmF1dGgvKi5bY2hdICQoc3JjZGlyKS92dGxzLyouW2NoXQogCiBpZiBDVVJMREVCVUcKICMgZm9yIGRlYnVnIGJ1aWxkcywgd2Ugc2NhbiB0aGUgc291cmNlcyBvbiBhbGwgcmVndWxhciBtYWtlIGludm9rZXMKZGlmZiAtLWdpdCBhL2xpYi9NYWtlZmlsZS5iMzIgYi9saWIvTWFrZWZpbGUuYjMyCmluZGV4IDM3YzI2NDguLjQ4MTM4NjEgMTAwNjQ0Ci0tLSBhL2xpYi9NYWtlZmlsZS5iMzIKKysrIGIvbGliL01ha2VmaWxlLmIzMgpAQCAtMSwxMyArMSwzMyBAQAorIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisjICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorIworIyBDb3B5cmlnaHQgKEMpIDIwMDAsIEphZXBpbCBLaW0sIDxwaXRAcGFyYWRpc2UubmV0Lm56Pi4KKyMgQ29weXJpZ2h0IChDKSAyMDAxIC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyMKKyMgVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKyMgeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcworIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyMKKyMgWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCisjIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworIyBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorIworIyBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisjIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisjCisjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIwogIyAgTWFrZWZpbGUuYjMyIC0gQm9ybGFuZCdzIEMrKyBDb21waWxlciA1LlgKICMKLSMgICdsaWInIGRpcmVjdG9yeQotIwogIyAgJ0JDQ0RJUicgaGFzIHRvIGJlIHNldCB1cCB0byBwb2ludCB0byB0aGUgYmFzZSBkaXJlY3RvcnkKICMgIG9mIHRoZSBjb21waWxlciwgaS5lLiBTRVQgQkNDRElSID0gYzpcQm9ybGFuZFxCQ0M1NQogIwotIyAgSW5pdGlhbGx5IHdyaXR0ZW4gYnkgSmFlcGlsIEtpbSwgcGl0QHBhcmFkaXNlLm5ldC5uegogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKICFpZiAiJChfX01BS0VfXykiID09ICIiCkBAIC00OSw3ICs2OSw3IEBACiBMSUJGTEFHUyA9IC9DIC9QMzIKIExERkxBR1MgID0gLXEgLWxxIC1sYWEgLXRXRAogCi1TUkNESVIgICA9IC47Llx2dGxzCitTUkNESVIgICA9IC47Llx2YXV0aDsuXHZ0bHMKIE9CSkRJUiAgID0gLlxCQ0Nfb2JqcwogSU5DRElSUyAgPSAtSS47LlxsaWI7Li5caW5jbHVkZQogTElOS0xJQiAgPSAkKEJDQ0RJUilcbGliXGN3MzJtdC5saWIgJChCQ0NESVIpXGxpYlx3czJfMzIubGliCkBAIC05NSwxMCArMTE1LDExIEBACiAjIHVzaW5nIGV4cGxpY2l0IGNvbXBpbGF0aW9uIGJ1aWxkIHJ1bGVzIGluc3RlYWQgb2YgaW1wbGljaXQgb25lcy4KIAogTk9IWVBIRU4xID0gJChDU09VUkNFUzotPV8pCi1OT0hZUEhFTjIgPSAkKE5PSFlQSEVOMTp2dGxzLz0pCitOT0hZUEhFTjIgPSAkKE5PSFlQSEVOMTp2YXV0aC89KQorTk9IWVBIRU4zID0gJChOT0hZUEhFTjI6dnRscy89KQogCi1PQkpFQ1RTID0gJChOT0hZUEhFTjI6LmM9Lm9iaikKLVBSRVBST0NFU1NFRCA9ICQoTk9IWVBIRU4yOi5jPS5pbnQpCitPQkpFQ1RTID0gJChOT0hZUEhFTjM6LmM9Lm9iaikKK1BSRVBST0NFU1NFRCA9ICQoTk9IWVBIRU4zOi5jPS5pbnQpCiAKICMgQm9ybGFuZCdzIGNvbW1hbmQgbGluZSBjb21waWxlciAoQkNDMzIpIHZlcnNpb24gNS41LjEgaW50ZWdyYXRlZAogIyBwcmVwcm9jZXNzb3IgaGFzIGEgYnVnIHdoaWNoIHJlc3VsdHMgaW4gc2lsZW50bHkgZ2VuZXJhdGluZyB3cm9uZwpkaWZmIC0tZ2l0IGEvbGliL01ha2VmaWxlLmluYyBiL2xpYi9NYWtlZmlsZS5pbmMKaW5kZXggZDQ0NGE2Yi4uMGVkOTk4YyAxMDA2NDQKLS0tIGEvbGliL01ha2VmaWxlLmluYworKysgYi9saWIvTWFrZWZpbGUuaW5jCkBAIC01LDExICs1LDExIEBACiAjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogIwotIyBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorIyBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogIwogIyBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogIyB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0jIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisjIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogIwogIyBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICMgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yMCwxMyArMjAsMjIgQEAKICMKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCitMSUJfVkFVVEhfQ0ZJTEVTID0gdmF1dGgvdmF1dGguYyB2YXV0aC9jbGVhcnRleHQuYyB2YXV0aC9jcmFtLmMgICAgICAgICBcCisgIHZhdXRoL2RpZ2VzdC5jIHZhdXRoL2RpZ2VzdF9zc3BpLmMgdmF1dGgva3JiNV9nc3NhcGkuYyAgICAgICAgICAgICAgICBcCisgIHZhdXRoL2tyYjVfc3NwaS5jIHZhdXRoL250bG0uYyB2YXV0aC9udGxtX3NzcGkuYyB2YXV0aC9vYXV0aDIuYyAgICAgICBcCisgIHZhdXRoL3NwbmVnb19nc3NhcGkuYyB2YXV0aC9zcG5lZ29fc3NwaS5jCisKK0xJQl9WQVVUSF9IRklMRVMgPSB2YXV0aC92YXV0aC5oIHZhdXRoL2RpZ2VzdC5oIHZhdXRoL250bG0uaAorCiBMSUJfVlRMU19DRklMRVMgPSB2dGxzL29wZW5zc2wuYyB2dGxzL2d0bHMuYyB2dGxzL3Z0bHMuYyB2dGxzL25zcy5jICAgICBcCiAgIHZ0bHMvcG9sYXJzc2wuYyB2dGxzL3BvbGFyc3NsX3RocmVhZGxvY2suYyB2dGxzL2F4dGxzLmMgICAgICAgICAgICAgICBcCi0gIHZ0bHMvY3lhc3NsLmMgdnRscy9zY2hhbm5lbC5jIHZ0bHMvZGFyd2luc3NsLmMgdnRscy9nc2tpdC5jCisgIHZ0bHMvY3lhc3NsLmMgdnRscy9zY2hhbm5lbC5jIHZ0bHMvZGFyd2luc3NsLmMgdnRscy9nc2tpdC5jICAgICAgICAgICBcCisgIHZ0bHMvbWJlZHRscy5jCiAKIExJQl9WVExTX0hGSUxFUyA9IHZ0bHMvb3BlbnNzbC5oIHZ0bHMvdnRscy5oIHZ0bHMvZ3Rscy5oICAgICAgICAgICAgICAgIFwKICAgdnRscy9uc3NnLmggdnRscy9wb2xhcnNzbC5oIHZ0bHMvcG9sYXJzc2xfdGhyZWFkbG9jay5oIHZ0bHMvYXh0bHMuaCAgIFwKLSAgdnRscy9jeWFzc2wuaCB2dGxzL3NjaGFubmVsLmggdnRscy9kYXJ3aW5zc2wuaCB2dGxzL2dza2l0LmgKKyAgdnRscy9jeWFzc2wuaCB2dGxzL3NjaGFubmVsLmggdnRscy9kYXJ3aW5zc2wuaCB2dGxzL2dza2l0LmggICAgICAgICAgIFwKKyAgdnRscy9tYmVkdGxzLmgKIAogTElCX0NGSUxFUyA9IGZpbGUuYyB0aW1ldmFsLmMgYmFzZTY0LmMgaG9zdGlwLmMgcHJvZ3Jlc3MuYyBmb3JtZGF0YS5jICAgXAogICBjb29raWUuYyBodHRwLmMgc2VuZGYuYyBmdHAuYyB1cmwuYyBkaWN0LmMgaWYyaXAuYyBzcGVlZGNoZWNrLmMgICAgICAgXApAQCAtNDEsMTIgKzUwLDEwIEBACiAgIGN1cmxfc3NwaS5jIHNsaXN0LmMgbm9uYmxvY2suYyBjdXJsX21lbXJjaHIuYyBpbWFwLmMgcG9wMy5jIHNtdHAuYyAgICBcCiAgIHBpbmdwb25nLmMgcnRzcC5jIGN1cmxfdGhyZWFkcy5jIHdhcm5sZXNzLmMgaG1hYy5jIGN1cmxfcnRtcC5jICAgICAgICBcCiAgIG9wZW5sZGFwLmMgY3VybF9nZXRob3N0bmFtZS5jIGdvcGhlci5jIGlkbl93aW4zMi5jICAgICAgICAgICAgICAgICAgICBcCi0gIGh0dHBfbmVnb3RpYXRlX3NzcGkuYyBodHRwX3Byb3h5LmMgbm9uLWFzY2lpLmMgYXN5bi1hcmVzLmMgICAgICAgICAgICBcCi0gIGFzeW4tdGhyZWFkLmMgY3VybF9nc3NhcGkuYyBjdXJsX250bG0uYyBjdXJsX250bG1fd2IuYyAgICAgICAgICAgICAgICBcCi0gIGN1cmxfbnRsbV9jb3JlLmMgY3VybF9udGxtX21zZ3MuYyBjdXJsX3Nhc2wuYyBjdXJsX211bHRpYnl0ZS5jICAgICAgICBcCi0gIGhvc3RjaGVjay5jIGNvbm5jYWNoZS5jIHBpcGVsaW5lLmMgZG90ZG90LmMgeDUwOWFzbjEuYyAgICAgICAgICAgICAgICBcCi0gIGh0dHAyLmMgY3VybF9zYXNsX3NzcGkuYyBzbWIuYyBjdXJsX3Nhc2xfZ3NzYXBpLmMgY3VybF9lbmRpYW4uYyAgICAgICBcCi0gIGN1cmxfZGVzLmMKKyAgaHR0cF9wcm94eS5jIG5vbi1hc2NpaS5jIGFzeW4tYXJlcy5jIGFzeW4tdGhyZWFkLmMgY3VybF9nc3NhcGkuYyAgICAgIFwKKyAgaHR0cF9udGxtLmMgY3VybF9udGxtX3diLmMgY3VybF9udGxtX2NvcmUuYyBjdXJsX3Nhc2wuYyAgICAgICAgICAgICAgIFwKKyAgY3VybF9tdWx0aWJ5dGUuYyBob3N0Y2hlY2suYyBjb25uY2FjaGUuYyBwaXBlbGluZS5jIGRvdGRvdC5jICAgICAgICAgIFwKKyAgeDUwOWFzbjEuYyBodHRwMi5jIHNtYi5jIGN1cmxfZW5kaWFuLmMgY3VybF9kZXMuYyBzeXN0ZW1fd2luMzIuYwogCiBMSUJfSEZJTEVTID0gYXJwYV90ZWxuZXQuaCBuZXRyYy5oIGZpbGUuaCB0aW1ldmFsLmggaG9zdGlwLmggcHJvZ3Jlc3MuaCBcCiAgIGZvcm1kYXRhLmggY29va2llLmggaHR0cC5oIHNlbmRmLmggZnRwLmggdXJsLmggZGljdC5oIGlmMmlwLmggICAgICAgICBcCkBAIC02MSwxMyArNjgsMTMgQEAKICAgc2xpc3QuaCBub25ibG9jay5oIGN1cmxfbWVtcmNoci5oIGltYXAuaCBwb3AzLmggc210cC5oIHBpbmdwb25nLmggICAgIFwKICAgcnRzcC5oIGN1cmxfdGhyZWFkcy5oIHdhcm5sZXNzLmggY3VybF9obWFjLmggY3VybF9ydG1wLmggICAgICAgICAgICAgIFwKICAgY3VybF9nZXRob3N0bmFtZS5oIGdvcGhlci5oIGh0dHBfcHJveHkuaCBub24tYXNjaWkuaCBhc3luLmggICAgICAgICAgIFwKLSAgY3VybF9udGxtLmggY3VybF9nc3NhcGkuaCBjdXJsX250bG1fd2IuaCBjdXJsX250bG1fY29yZS5oICAgICAgICAgICAgIFwKLSAgY3VybF9udGxtX21zZ3MuaCBjdXJsX3Nhc2wuaCBjdXJsX211bHRpYnl0ZS5oIGhvc3RjaGVjay5oICAgICAgICAgICAgIFwKLSAgY29ubmNhY2hlLmggY3VybF9zZXR1cF9vbmNlLmggbXVsdGloYW5kbGUuaCBzZXR1cC12bXMuaCBwaXBlbGluZS5oICAgIFwKLSAgZG90ZG90LmggeDUwOWFzbjEuaCBodHRwMi5oIHNpZ3BpcGUuaCBzbWIuaCBjdXJsX2VuZGlhbi5oIGN1cmxfZGVzLmggIFwKLSAgY3VybF9wcmludGYuaAorICBodHRwX250bG0uaCBjdXJsX2dzc2FwaS5oIGN1cmxfbnRsbV93Yi5oIGN1cmxfbnRsbV9jb3JlLmggICAgICAgICAgICAgXAorICBjdXJsX3Nhc2wuaCBjdXJsX211bHRpYnl0ZS5oIGhvc3RjaGVjay5oIGNvbm5jYWNoZS5oICAgICAgICAgICAgICAgICAgXAorICBjdXJsX3NldHVwX29uY2UuaCBtdWx0aWhhbmRsZS5oIHNldHVwLXZtcy5oIHBpcGVsaW5lLmggZG90ZG90LmggICAgICAgXAorICB4NTA5YXNuMS5oIGh0dHAyLmggc2lncGlwZS5oIHNtYi5oIGN1cmxfZW5kaWFuLmggY3VybF9kZXMuaCAgICAgICAgICAgXAorICBjdXJsX3ByaW50Zi5oIHN5c3RlbV93aW4zMi5oCiAKIExJQl9SQ0ZJTEVTID0gbGliY3VybC5yYwogCi1DU09VUkNFUyA9ICQoTElCX0NGSUxFUykgJChMSUJfVlRMU19DRklMRVMpCi1ISEVBREVSUyA9ICQoTElCX0hGSUxFUykgJChMSUJfVlRMU19IRklMRVMpCitDU09VUkNFUyA9ICQoTElCX0NGSUxFUykgJChMSUJfVkFVVEhfQ0ZJTEVTKSAkKExJQl9WVExTX0NGSUxFUykKK0hIRUFERVJTID0gJChMSUJfSEZJTEVTKSAkKExJQl9WQVVUSF9IRklMRVMpICQoTElCX1ZUTFNfSEZJTEVTKQpkaWZmIC0tZ2l0IGEvbGliL01ha2VmaWxlLm0zMiBiL2xpYi9NYWtlZmlsZS5tMzIKaW5kZXggZWU0N2Q2Ny4uMjE0MmJmYyAxMDA2NDQKLS0tIGEvbGliL01ha2VmaWxlLm0zMgorKysgYi9saWIvTWFrZWZpbGUubTMyCkBAIC0xLDMgKzEsMjUgQEAKKyMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworIyAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKyMKKyMgQ29weXJpZ2h0IChDKSAxOTk5IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyMKKyMgVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKyMgeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcworIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyMKKyMgWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCisjIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworIyBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorIworIyBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisjIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisjCisjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIwogIyMgTWFrZWZpbGUgZm9yIGJ1aWxkaW5nIGxpYmN1cmwuYSB3aXRoIE1pbmdXIChHQ0MtMy4yIG9yIGxhdGVyKQpAQCAtMzAsNyArNTIsNyBAQAogZW5kaWYKICMgRWRpdCB0aGUgcGF0aCBiZWxvdyB0byBwb2ludCB0byB0aGUgYmFzZSBvZiB5b3VyIGxpYmlkbiBwYWNrYWdlLgogaWZuZGVmIExJQklETl9QQVRICi1MSUJJRE5fUEFUSCA9IC4uLy4uL2xpYmlkbi0xLjMwCitMSUJJRE5fUEFUSCA9IC4uLy4uL2xpYmlkbi0xLjMyCiBlbmRpZgogIyBFZGl0IHRoZSBwYXRoIGJlbG93IHRvIHBvaW50IHRvIHRoZSBiYXNlIG9mIHlvdXIgTVMgSUROIHBhY2thZ2UuCiAjIE1pY3Jvc29mdCBJbnRlcm5hdGlvbmFsaXplZCBEb21haW4gTmFtZXMgKElETikgTWl0aWdhdGlvbiBBUElzIDEuMQpAQCAtNTgsNyArODAsNyBAQAogQ0ZMQUdTCT0gJChDVVJMX0NGTEFHX0VYVFJBUykgLWcgLU8yIC1XYWxsCiBDRkxBR1MJKz0gLWZuby1zdHJpY3QtYWxpYXNpbmcKICMgY29tbWVudCBMREZMQUdTIGJlbG93IHRvIGtlZXAgZGVidWcgaW5mbwotTERGTEFHUwk9IC1zCitMREZMQUdTCT0gJChDVVJMX0xERkxBR19FWFRSQVMpICQoQ1VSTF9MREZMQUdfRVhUUkFTX0RMTCkgLXMKIEFSCT0gJChDUk9TU1BSRUZJWClhcgogUkFOTElCCT0gJChDUk9TU1BSRUZJWClyYW5saWIKIFJDCT0gJChDUk9TU1BSRUZJWCl3aW5kcmVzCkBAIC0xMzEsNyArMTUzLDkgQEAKIGVuZGlmCiBpZmVxICgkKGZpbmRzdHJpbmcgLXNzaDIsJChDRkcpKSwtc3NoMikKIFNTSDIgPSAxCitpZm5lcSAoJChmaW5kc3RyaW5nIC13aW5zc2wsJChDRkcpKSwtd2luc3NsKQogU1NMID0gMQorZW5kaWYKIFpMSUIgPSAxCiBlbmRpZgogaWZlcSAoJChmaW5kc3RyaW5nIC1zc2wsJChDRkcpKSwtc3NsKQpAQCAtMTkzLDYgKzIxNywxMSBAQAogICBJTkNMVURFUyArPSAtSSIkKExJQlNTSDJfUEFUSCkvaW5jbHVkZSIgLUkiJChMSUJTU0gyX1BBVEgpL3dpbjMyIgogICBDRkxBR1MgKz0gLURVU0VfTElCU1NIMiAtREhBVkVfTElCU1NIMl9ICiAgIERMTF9MSUJTICs9IC1MIiQoTElCU1NIMl9QQVRIKS93aW4zMiIgLWxzc2gyCisgIGlmZGVmIFdJTlNTTAorICAgIGlmbmRlZiBEWU4KKyAgICAgIERMTF9MSUJTICs9IC1sYmNyeXB0IC1sY3J5cHQzMgorICAgIGVuZGlmCisgIGVuZGlmCiBlbmRpZgogaWZkZWYgU1NMCiAgIGlmbmRlZiBPUEVOU1NMX0lOQ0xVREUKZGlmZiAtLWdpdCBhL2xpYi9NYWtlZmlsZS5uZXR3YXJlIGIvbGliL01ha2VmaWxlLm5ldHdhcmUKaW5kZXggNWE5NTVmOC4uZWU3ZTg3YyAxMDA2NDQKLS0tIGEvbGliL01ha2VmaWxlLm5ldHdhcmUKKysrIGIvbGliL01ha2VmaWxlLm5ldHdhcmUKQEAgLTEsOSArMSwzMSBAQAorIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisjICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorIworIyBDb3B5cmlnaHQgKEMpIDIwMDQgLSAyMDE1LCBHdWVudGVyIEtuYXVmLCA8aHR0cDovL3d3dy5na253Lm5ldC9waHBiYj4uCisjIENvcHlyaWdodCAoQykgMjAwMSAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisjCisjIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKyMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisjCisjIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyMgZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKyMKKyMgVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQorIyBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorIworIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIwogIyMgTWFrZWZpbGUgZm9yIGJ1aWxkaW5nIGxpYmN1cmwubmxtIChOZXRXYXJlIHZlcnNpb24gLSBnbnUgbWFrZSkKLSMjIFVzZTogbWFrZSAtZiBNYWtlZmlsZS5uZXR3YXJlCiAjIwotIyMgQ29tbWVudHMgdG86IEd1ZW50ZXIgS25hdWYgaHR0cDovL3d3dy5na253Lm5ldC9waHBiYgorIyMgVXNlOiBtYWtlIC1mIE1ha2VmaWxlLm5ldHdhcmUKICMKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKQEAgLTY1LDcgKzg3LDcgQEAKIFRBUkdFVCAgPSBsaWJjdXJsCiBWRVJTSU9OCT0gJChMSUJDVVJMX1ZFUlNJT04pCiBDT1BZUgk9IENvcHlyaWdodCAoQykgJChMSUJDVVJMX0NPUFlSSUdIVF9TVFIpCi1ERVNDUgk9IGNVUkwgbGliY3VybCAkKExJQkNVUkxfVkVSU0lPTl9TVFIpICgkKExJQkFSQ0gpKSAtIGh0dHA6Ly9jdXJsLmhheHguc2UKK0RFU0NSCT0gY1VSTCBsaWJjdXJsICQoTElCQ1VSTF9WRVJTSU9OX1NUUikgKCQoTElCQVJDSCkpIC0gaHR0cHM6Ly9jdXJsLmhheHguc2UKIE1UU0FGRQk9IFlFUwogU1RBQ0sJPSA2NDAwMAogU0NSRUVOCT0gbm9uZQpAQCAtMzI5LDcgKzM1MSw3IEBACiAKIE9CSkwJPSAkKE9CSlMpICQoT0JKRElSKS9ud2xpYi5vICQoTERMSUJTKQogCi12cGF0aCAlLmMgLiB2dGxzCit2cGF0aCAlLmMgLiB2YXV0aCB2dGxzCiAKIGFsbDogbGliIG5sbQogCkBAIC00NzksNyArNTAxLDcgQEAKIAlAZWNobyAkKERMKSNlcnJvciBUaGlzICQobm90ZGlyICRAKSBpcyBjcmVhdGVkIGZvciBOZXRXYXJlIHBsYXRmb3JtISQoREwpID4+ICRACiAJQGVjaG8gJChETCkjZW5kaWYkKERMKSA+PiAkQAogCUBlY2hvICQoREwpI2RlZmluZSBWRVJTSU9OICIkKExJQkNVUkxfVkVSU0lPTl9TVFIpIiQoREwpID4+ICRACi0JQGVjaG8gJChETCkjZGVmaW5lIFBBQ0tBR0VfQlVHUkVQT1JUICJhIHN1aXRhYmxlIGN1cmwgbWFpbGluZyBsaXN0ID0+IGh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC8iJChETCkgPj4gJEAKKwlAZWNobyAkKERMKSNkZWZpbmUgUEFDS0FHRV9CVUdSRVBPUlQgImEgc3VpdGFibGUgY3VybCBtYWlsaW5nIGxpc3QgPT4gaHR0cHM6Ly9jdXJsLmhheHguc2UvbWFpbC8iJChETCkgPj4gJEAKIGlmZXEgKCQoTElCQVJDSCksQ0xJQikKIAlAZWNobyAkKERMKSNkZWZpbmUgT1MgImk1ODYtcGMtY2xpYi1OZXRXYXJlIiQoREwpID4+ICRACiAJQGVjaG8gJChETCkjZGVmaW5lIE5FVERCX1VTRV9JTlRFUk5FVCAxJChETCkgPj4gJEAKZGlmZiAtLWdpdCBhL2xpYi9NYWtlZmlsZS52YzYgYi9saWIvTWFrZWZpbGUudmM2CmluZGV4IGMzNGMzZGIuLmI0Y2IyMjkgMTAwNjQ0Ci0tLSBhL2xpYi9NYWtlZmlsZS52YzYKKysrIGIvbGliL01ha2VmaWxlLnZjNgpAQCAtNSwxMSArNSwxMSBAQAogIyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXw0KICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198DQogIw0KLSMgQ29weXJpZ2h0IChDKSAxOTk5IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4NCisjIENvcHlyaWdodCAoQykgMTk5OSAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuDQogIw0KICMgVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gNCiAjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMNCi0jIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuDQorIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4NCiAjDQogIyBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwNCiAjIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcw0KQEAgLTU0MCwxNCArNTQwLDEwIEBACiAJJChESVJPQkopXGN1cmxfZ3NzYXBpLm9iaiBcDQogCSQoRElST0JKKVxjdXJsX21lbXJjaHIub2JqIFwNCiAJJChESVJPQkopXGN1cmxfbXVsdGlieXRlLm9iaiBcDQotCSQoRElST0JKKVxjdXJsX250bG0ub2JqIFwNCiAJJChESVJPQkopXGN1cmxfbnRsbV9jb3JlLm9iaiBcDQotCSQoRElST0JKKVxjdXJsX250bG1fbXNncy5vYmogXA0KIAkkKERJUk9CSilcY3VybF9udGxtX3diLm9iaiBcDQogCSQoRElST0JKKVxjdXJsX3J0bXAub2JqIFwNCiAJJChESVJPQkopXGN1cmxfc2FzbC5vYmogXA0KLQkkKERJUk9CSilcY3VybF9zYXNsX2dzc2FwaS5vYmogXA0KLQkkKERJUk9CSilcY3VybF9zYXNsX3NzcGkub2JqIFwNCiAJJChESVJPQkopXGN1cmxfc3NwaS5vYmogXA0KIAkkKERJUk9CSilcY3VybF90aHJlYWRzLm9iaiBcDQogCSQoRElST0JKKVxjeWFzc2wub2JqIFwNCkBAIC01NzcsNyArNTczLDcgQEAKIAkkKERJUk9CSilcaHR0cF9jaHVua3Mub2JqIFwNCiAJJChESVJPQkopXGh0dHBfZGlnZXN0Lm9iaiBcDQogCSQoRElST0JKKVxodHRwX25lZ290aWF0ZS5vYmogXA0KLQkkKERJUk9CSilcaHR0cF9uZWdvdGlhdGVfc3NwaS5vYmogXA0KKwkkKERJUk9CSilcaHR0cF9udGxtLm9iaiBcDQogCSQoRElST0JKKVxodHRwX3Byb3h5Lm9iaiBcDQogCSQoRElST0JKKVxpZG5fd2luMzIub2JqIFwNCiAJJChESVJPQkopXGlmMmlwLm9iaiBcDQpAQCAtNjIwLDYgKzYxNiwxOSBAQAogCSQoRElST0JKKVxzcGVlZGNoZWNrLm9iaiBcDQogCSQoRElST0JKKVxzcGxheS5vYmogXA0KIAkkKERJUk9CSilcc3NoLm9iaiBcDQorCSQoRElST0JKKVxzeXN0ZW1fd2luMzIub2JqIFwNCisJJChESVJPQkopXHZhdXRoLm9iaiBcDQorCSQoRElST0JKKVxjbGVhcnRleHQub2JqIFwNCisJJChESVJPQkopXGNyYW0ub2JqIFwNCisJJChESVJPQkopXGRpZ2VzdC5vYmogXA0KKwkkKERJUk9CSilcZGlnZXN0X3NzcGkub2JqIFwNCisJJChESVJPQkopXGtyYjVfZ3NzYXBpLm9iaiBcDQorCSQoRElST0JKKVxrcmI1X3NzcGkub2JqIFwNCisJJChESVJPQkopXG50bG0ub2JqIFwNCisJJChESVJPQkopXG50bG1fc3NwaS5vYmogXA0KKwkkKERJUk9CSilcb2F1dGgyLm9iaiBcDQorCSQoRElST0JKKVxzcG5lZ29fZ3NzYXBpLm9iaiBcDQorCSQoRElST0JKKVxzcG5lZ29fc3NwaS5vYmogXA0KIAkkKERJUk9CSilcdnRscy5vYmogXA0KIAkkKERJUk9CSilcb3BlbnNzbC5vYmogXA0KIAkkKERJUk9CSilcc3RyZHVwLm9iaiBcDQpAQCAtNjYwLDYgKzY2OSw5IEBACiB7Llx9LmN7JChESVJPQkopXH0ub2JqOg0KIAkkKENDKSAkKENGTEFHUykgL0ZvIiRAIiAgJDwNCiANCit7Llx2YXV0aFx9LmN7JChESVJPQkopXH0ub2JqOg0KKwkkKENDKSAkKENGTEFHUykgL0ZvIiRAIiAgJDwNCisNCiB7Llx2dGxzXH0uY3skKERJUk9CSilcfS5vYmo6DQogCSQoQ0MpICQoQ0ZMQUdTKSAvRm8iJEAiICAkPA0KIA0KZGlmZiAtLWdpdCBhL2xpYi9hbWlnYW9zLmMgYi9saWIvYW1pZ2Fvcy5jCmluZGV4IGUzZmY4NWYuLjU1OTFkMjIgMTAwNjQ0Ci0tLSBhL2xpYi9hbWlnYW9zLmMKKysrIGIvbGliL2FtaWdhb3MuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlIDxzdGFicy5oPgogdm9pZCBfX3JlcXVlc3QoY29uc3QgY2hhciAqbXNnKTsKICNlbHNlCi0jIGRlZmluZSBfX3JlcXVlc3QoIG1zZyApICAgICAgIFByaW50ZiggbXNnICJcblxhIikKKyMgZGVmaW5lIF9fcmVxdWVzdChtc2cpICAgICAgIFByaW50Zihtc2cgIlxuXGEiKQogI2VuZGlmCiAKIHZvaWQgQ3VybF9hbWlnYV9jbGVhbnVwKCkKZGlmZiAtLWdpdCBhL2xpYi9hbWlnYW9zLmggYi9saWIvYW1pZ2Fvcy5oCmluZGV4IDc2NTc4YmUuLjAyYmVlMTYgMTAwNjQ0Ci0tLSBhL2xpYi9hbWlnYW9zLmgKKysrIGIvbGliL2FtaWdhb3MuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9hcnBhX3RlbG5ldC5oIGIvbGliL2FycGFfdGVsbmV0LmgKaW5kZXggMDk4ZDlhOS4uZWMyMzg3MiAxMDA2NDQKLS0tIGEvbGliL2FycGFfdGVsbmV0LmgKKysrIGIvbGliL2FycGFfdGVsbmV0LmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvYXN5bi1hcmVzLmMgYi9saWIvYXN5bi1hcmVzLmMKaW5kZXggOThlY2RmZC4uNTFmNjFkZSAxMDA2NDQKLS0tIGEvbGliL2FzeW4tYXJlcy5jCisrKyBiL2xpYi9hc3luLWFyZXMuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTY4LDcgKzY4LDYgQEAKICNpbmNsdWRlICJjb25uZWN0LmgiCiAjaW5jbHVkZSAic2VsZWN0LmgiCiAjaW5jbHVkZSAicHJvZ3Jlc3MuaCIKLSNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgogCiAjICBpZiBkZWZpbmVkKENVUkxfU1RBVElDTElCKSAmJiAhZGVmaW5lZChDQVJFU19TVEFUSUNMSUIpICYmIFwKICAgICAgKGRlZmluZWQoV0lOMzIpIHx8IGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fU1lNQklBTjMyX18pKQpAQCAtODMsOCArODIsOSBAQAogI2RlZmluZSBIQVZFX0NBUkVTX0NBTExCQUNLX1RJTUVPVVRTIDEKICNlbmRpZgogCisvKiBUaGUgbGFzdCAzICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZSBpbiB0aGlzIG9yZGVyICovCisjaW5jbHVkZSAiY3VybF9wcmludGYuaCIKICNpbmNsdWRlICJjdXJsX21lbW9yeS5oIgotLyogVGhlIGxhc3QgI2luY2x1ZGUgZmlsZSBzaG91bGQgYmU6ICovCiAjaW5jbHVkZSAibWVtZGVidWcuaCIKIAogc3RydWN0IFJlc29sdmVyUmVzdWx0cyB7CmRpZmYgLS1naXQgYS9saWIvYXN5bi10aHJlYWQuYyBiL2xpYi9hc3luLXRocmVhZC5jCmluZGV4IGJkNDdkNWEuLjgxY2FlZGIgMTAwNjQ0Ci0tLSBhL2xpYi9hc3luLXRocmVhZC5jCisrKyBiL2xpYi9hc3luLXRocmVhZC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNjksMTAgKzY5LDkgQEAKICNpbmNsdWRlICJpbmV0X250b3AuaCIKICNpbmNsdWRlICJjdXJsX3RocmVhZHMuaCIKICNpbmNsdWRlICJjb25uZWN0LmgiCisvKiBUaGUgbGFzdCAzICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZSBpbiB0aGlzIG9yZGVyICovCiAjaW5jbHVkZSAiY3VybF9wcmludGYuaCIKICNpbmNsdWRlICJjdXJsX21lbW9yeS5oIgotCi0vKiBUaGUgbGFzdCAjaW5jbHVkZSBmaWxlIHNob3VsZCBiZTogKi8KICNpbmNsdWRlICJtZW1kZWJ1Zy5oIgogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKZGlmZiAtLWdpdCBhL2xpYi9hc3luLmggYi9saWIvYXN5bi5oCmluZGV4IDFiNjgxZWEuLjQxNjUxMGYgMTAwNjQ0Ci0tLSBhL2xpYi9hc3luLmgKKysrIGIvbGliL2FzeW4uaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9iYXNlNjQuYyBiL2xpYi9iYXNlNjQuYwppbmRleCA2Yjg3ZWVkLi4wZWYyNGQ1IDEwMDY0NAotLS0gYS9saWIvYmFzZTY0LmMKKysrIGIvbGliL2Jhc2U2NC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjMsMTMgKzIzLDEzIEBACiAvKiBCYXNlNjQgZW5jb2RpbmcvZGVjb2RpbmcgKi8KIAogI2luY2x1ZGUgImN1cmxfc2V0dXAuaCIKLSNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgogI2luY2x1ZGUgInVybGRhdGEuaCIgLyogZm9yIHRoZSBTZXNzaW9uSGFuZGxlIGRlZmluaXRpb24gKi8KICNpbmNsdWRlICJ3YXJubGVzcy5oIgogI2luY2x1ZGUgImN1cmxfYmFzZTY0LmgiCiAjaW5jbHVkZSAibm9uLWFzY2lpLmgiCiAKLS8qIFRoZSBsYXN0ICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZTogKi8KKy8qIFRoZSBsYXN0IDMgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlIGluIHRoaXMgb3JkZXIgKi8KKyNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgogI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCiAjaW5jbHVkZSAibWVtZGVidWcuaCIKIApAQCAtMTczLDcgKzE3Myw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICppbnB1dGJ1ZmYsIHNpemVfdCBpbnNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqb3V0cHRyLCBzaXplX3QgKm91dGxlbikKIHsKLSAgQ1VSTGNvZGUgZXJyb3I7CisgIENVUkxjb2RlIHJlc3VsdDsKICAgdW5zaWduZWQgY2hhciBpYnVmWzNdOwogICB1bnNpZ25lZCBjaGFyIG9idWZbNF07CiAgIGludCBpOwpAQCAtMTg3LDExICsxODcsMTEgQEAKICAgKm91dHB0ciA9IE5VTEw7CiAgICpvdXRsZW4gPSAwOwogCi0gIGlmKDAgPT0gaW5zaXplKQorICBpZighaW5zaXplKQogICAgIGluc2l6ZSA9IHN0cmxlbihpbmRhdGEpOwogCi0gIGJhc2U2NGRhdGEgPSBvdXRwdXQgPSBtYWxsb2MoaW5zaXplKjQvMys0KTsKLSAgaWYoTlVMTCA9PSBvdXRwdXQpCisgIGJhc2U2NGRhdGEgPSBvdXRwdXQgPSBtYWxsb2MoaW5zaXplICogNCAvIDMgKyA0KTsKKyAgaWYoIW91dHB1dCkKICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKIAogICAvKgpAQCAtMTk5LDEwICsxOTksMTAgQEAKICAgICogbm90IHRoZSBob3N0IGVuY29kaW5nLiAgQW5kIHdlIGNhbid0IGNoYW5nZSB0aGUgYWN0dWFsIGlucHV0CiAgICAqIHNvIHdlIGNvcHkgaXQgdG8gYSBidWZmZXIsIHRyYW5zbGF0ZSBpdCwgYW5kIHVzZSB0aGF0IGluc3RlYWQuCiAgICAqLwotICBlcnJvciA9IEN1cmxfY29udmVydF9jbG9uZShkYXRhLCBpbmRhdGEsIGluc2l6ZSwgJmNvbnZidWYpOwotICBpZihlcnJvcikgeworICByZXN1bHQgPSBDdXJsX2NvbnZlcnRfY2xvbmUoZGF0YSwgaW5kYXRhLCBpbnNpemUsICZjb252YnVmKTsKKyAgaWYocmVzdWx0KSB7CiAgICAgZnJlZShvdXRwdXQpOwotICAgIHJldHVybiBlcnJvcjsKKyAgICByZXR1cm4gcmVzdWx0OwogICB9CiAKICAgaWYoY29udmJ1ZikKQEAgLTIzMywyOCArMjMzLDM1IEBACiAgICAgICAgICAgICAgICB0YWJsZTY0W29idWZbMF1dLAogICAgICAgICAgICAgICAgdGFibGU2NFtvYnVmWzFdXSk7CiAgICAgICBicmVhazsKKwogICAgIGNhc2UgMjogLyogdHdvIGJ5dGVzIHJlYWQgKi8KICAgICAgIHNucHJpbnRmKG91dHB1dCwgNSwgIiVjJWMlYz0iLAogICAgICAgICAgICAgICAgdGFibGU2NFtvYnVmWzBdXSwKICAgICAgICAgICAgICAgIHRhYmxlNjRbb2J1ZlsxXV0sCiAgICAgICAgICAgICAgICB0YWJsZTY0W29idWZbMl1dKTsKICAgICAgIGJyZWFrOworCiAgICAgZGVmYXVsdDoKICAgICAgIHNucHJpbnRmKG91dHB1dCwgNSwgIiVjJWMlYyVjIiwKICAgICAgICAgICAgICAgIHRhYmxlNjRbb2J1ZlswXV0sCiAgICAgICAgICAgICAgICB0YWJsZTY0W29idWZbMV1dLAogICAgICAgICAgICAgICAgdGFibGU2NFtvYnVmWzJdXSwKLSAgICAgICAgICAgICAgIHRhYmxlNjRbb2J1ZlszXV0gKTsKKyAgICAgICAgICAgICAgIHRhYmxlNjRbb2J1ZlszXV0pOwogICAgICAgYnJlYWs7CiAgICAgfQogICAgIG91dHB1dCArPSA0OwogICB9CisKKyAgLyogWmVybyB0ZXJtaW5hdGUgKi8KICAgKm91dHB1dCA9ICdcMCc7Ci0gICpvdXRwdHIgPSBiYXNlNjRkYXRhOyAvKiByZXR1cm4gcG9pbnRlciB0byBuZXcgZGF0YSwgYWxsb2NhdGVkIG1lbW9yeSAqLworCisgIC8qIFJldHVybiB0aGUgcG9pbnRlciB0byB0aGUgbmV3IGRhdGEgKGFsbG9jYXRlZCBtZW1vcnkpICovCisgICpvdXRwdHIgPSBiYXNlNjRkYXRhOwogCiAgIGZyZWUoY29udmJ1Zik7CiAKLSAgKm91dGxlbiA9IHN0cmxlbihiYXNlNjRkYXRhKTsgLyogcmV0dXJuIHRoZSBsZW5ndGggb2YgdGhlIG5ldyBkYXRhICovCisgIC8qIFJldHVybiB0aGUgbGVuZ3RoIG9mIHRoZSBuZXcgZGF0YSAqLworICAqb3V0bGVuID0gc3RybGVuKGJhc2U2NGRhdGEpOwogCiAgIHJldHVybiBDVVJMRV9PSzsKIH0KQEAgLTMwNiw0ICszMTMsMyBAQAogewogICByZXR1cm4gYmFzZTY0X2VuY29kZShiYXNlNjR1cmwsIGRhdGEsIGlucHV0YnVmZiwgaW5zaXplLCBvdXRwdHIsIG91dGxlbik7CiB9Ci0vKiAtLS0tIEVuZCBvZiBCYXNlNjQgRW5jb2RpbmcgLS0tLSAqLwpkaWZmIC0tZ2l0IGEvbGliL2NoZWNrc3JjLnBsIGIvbGliL2NoZWNrc3JjLnBsCmluZGV4IDhmYWQyY2YuLmFhY2IyNDIgMTAwNzU1Ci0tLSBhL2xpYi9jaGVja3NyYy5wbAorKysgYi9saWIvY2hlY2tzcmMucGwKQEAgLTYsMTEgKzYsMTEgQEAKICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAjCi0jIENvcHlyaWdodCAoQykgMjAxMSAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisjIENvcHlyaWdodCAoQykgMjAxMSAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAjCiAjIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAjCiAjIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTMxLDkgKzMxLDMzIEBACiBteSAkZGlyPSIuIjsKIG15ICR3bGlzdDsKIG15ICR3aW5kb3dzX29zID0gJF5PIGVxICdNU1dpbjMyJyB8fCAkXk8gZXEgJ21zeXMnIHx8ICReTyBlcSAnY3lnd2luJzsKLQorbXkgJHZlcmJvc2U7CiBteSAld2hpdGVsaXN0OwogCitteSAld2FybmluZ3MgPSAoCisgICAgJ0xPTkdMSU5FJyA9PiAgICAgICAgICJMaW5lIGxvbmdlciB0aGFuICRtYXhfY29sdW1uIiwKKyAgICAnVEFCUycgPT4gICAgICAgICAgICAgJ1RBQiBjaGFyYWN0ZXJzIG5vdCBhbGxvd2VkJywKKyAgICAnVFJBSUxJTkdTUEFDRScgPT4gICAgJ1RyYWlsaW5nIHdoaXRlIHNwYWNlIG9uIHRoZSBsaW5lJywKKyAgICAnQ1BQQ09NTUVOVFMnID0+ICAgICAgJy8vIGNvbW1lbnQgZGV0ZWN0ZWQnLAorICAgICdTUEFDRUJFRk9SRVBBUkVOJyA9PiAnc3BhY2UgYmVmb3JlIGFuIG9wZW4gcGFyZW50aGVzaXMnLAorICAgICdTUEFDRUFGVEVSUEFSRU4nICA9PiAnc3BhY2UgYWZ0ZXIgb3BlbiBwYXJlbnRoZXNpcycsCisgICAgJ1NQQUNFQkVGT1JFQ0xPU0UnID0+ICdzcGFjZSBiZWZvcmUgYSBjbG9zZSBwYXJlbnRoZXNpcycsCisgICAgJ1NQQUNFQkVGT1JFQ09NTUEnID0+ICdzcGFjZSBiZWZvcmUgYSBjb21tYScsCisgICAgJ1JFVFVSTk5PU1BBQ0UnICAgID0+ICdyZXR1cm4gd2l0aG91dCBzcGFjZScsCisgICAgJ0NPTU1BTk9TUEFDRScgICAgID0+ICdjb21tYSB3aXRob3V0IGZvbGxvd2luZyBzcGFjZScsCisgICAgJ0JSQUNFRUxTRScgICAgICAgID0+ICd9IGVsc2Ugb24gdGhlIHNhbWUgbGluZScsCisgICAgJ1BBUkVOQlJBQ0UnICAgICAgID0+ICcpeyB3aXRob3V0IHN1ZmZpY2llbnQgc3BhY2UnLAorICAgICdTUEFDRVNFTUlMQ09MT04nICA9PiAnc3BhY2UgYmVmb3JlIHNlbWljb2xvbicsCisgICAgJ0JBTk5FREZVTkMnICAgICAgID0+ICdhIGJhbm5lZCBmdW5jdGlvbiB3YXMgdXNlZCcsCisgICAgJ0ZPUEVOTU9ERScgICAgICAgID0+ICdmb3BlbiBuZWVkcyBhIG1hY3JvIGZvciB0aGUgbW9kZSBzdHJpbmcnLAorICAgICdCUkFDRVBPUycgICAgICAgICA9PiAnd3JvbmcgcG9zaXRpb24gZm9yIGFuIG9wZW4gYnJhY2UnLAorICAgICdJTkRFTlRBVElPTicgICAgICA9PiAnd3Jvbmcgc3RhcnQgY29sdW1uIGZvciBjb2RlJywKKyAgICAnQ09QWVJJR0hUJyAgICAgICAgPT4gJ2ZpbGUgbWlzc2luZyBhIGNvcHlyaWdodCBzdGF0ZW1lbnQnLAorICAgICdCQURDT01NQU5EJyAgICAgICA9PiAnYmFkICFjaGVja3NyYyEgaW5zdHJ1Y3Rpb24nLAorICAgICdVTlVTRURJR05PUkUnICAgICA9PiAnYSB3YXJuaW5nIGlnbm9yZSB3YXMgbm90IHVzZWQnLAorICAgICdPUEVOQ09NTUVOVCcgICAgICA9PiAnZmlsZSBlbmRlZCB3aXRoIGEgLyogY29tbWVudCBzdGlsbCAib3BlbiInCisgICAgKTsKKwogc3ViIHJlYWR3aGl0ZWxpc3QgewogICAgIG9wZW4oVywgIjwkZGlyL2NoZWNrc3JjLndoaXRlbGlzdCIpOwogICAgIG15IEBhbGw9PFc+OwpAQCAtNDUsMTQgKzY5LDQwIEBACiB9CiAKIHN1YiBjaGVja3dhcm4gewotICAgIG15ICgkbnVtLCAkY29sLCAkZmlsZSwgJGxpbmUsICRtc2csICRlcnJvcikgPSBAXzsKKyAgICBteSAoJG5hbWUsICRudW0sICRjb2wsICRmaWxlLCAkbGluZSwgJG1zZywgJGVycm9yKSA9IEBfOwogCisgICAgbXkgJHc9JGVycm9yPyJlcnJvciI6Indhcm5pbmciOworICAgIG15ICRub3dhcm49MDsKKworICAgICNpZighJHdhcm5pbmdzeyRuYW1lfSkgeworICAgICMgICAgcHJpbnQgU1RERVJSICJEZXYhIHRoZXJlJ3Mgbm8gZGVzY3JpcHRpb24gZm9yICRuYW1lIVxuIjsKKyAgICAjfQorCisgICAgIyBjaGVja3NyYy53aGl0ZWxpc3QKICAgICBpZigkd2hpdGVsaXN0eyRsaW5lfSkgeworICAgICAgICAkbm93YXJuID0gMTsKKyAgICB9CisgICAgIyAhY2hlY2tzcmMhIGNvbnRyb2xsZWQKKyAgICBlbHNpZigkaWdub3JleyRuYW1lfSkgeworICAgICAgICAkaWdub3JleyRuYW1lfS0tOworICAgICAgICAkaWdub3JlX3VzZWR7JG5hbWV9Kys7CisgICAgICAgICRub3dhcm4gPSAxOworICAgICAgICBpZighJGlnbm9yZXskbmFtZX0pIHsKKyAgICAgICAgICAgICMgcmVhY2hlZCB6ZXJvLCBlbmFibGUgYWdhaW4KKyAgICAgICAgICAgIGVuYWJsZV93YXJuKCRuYW1lLCAkbGluZSwgJGZpbGUsICRsKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmKCRub3dhcm4pIHsKICAgICAgICAgJHN1cHJlc3NlZCsrOworICAgICAgICBpZigkdykgeworICAgICAgICAgICAgJHN3YXJuaW5ncysrOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgJHNlcnJvcnMrKzsKKyAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAotICAgIG15ICR3PSRlcnJvcj8iZXJyb3IiOiJ3YXJuaW5nIjsKIAogICAgIGlmKCR3KSB7CiAgICAgICAgICR3YXJuaW5ncysrOwpAQCAtNjIsNyArMTEyLDcgQEAKICAgICB9CiAKICAgICAkY29sKys7Ci0gICAgcHJpbnQgIiRmaWxlOiRudW06JGNvbDogJHc6ICRtc2dcbiI7CisgICAgcHJpbnQgIiRmaWxlOiRudW06JGNvbDogJHc6ICRtc2cgKCRuYW1lKVxuIjsKICAgICBwcmludCAiICRsaW5lXG4iOwogCiAgICAgaWYoJGNvbCA8IDgwKSB7CkBAIC04NSw2ICsxMzUsMTAgQEAKICAgICAgICAgJGZpbGUgPSBzaGlmdCBAQVJHVjsKICAgICAgICAgbmV4dDsKICAgICB9CisgICAgZWxzaWYoJGZpbGUgPX4gL14oLWh8LS1oZWxwKS8pIHsKKyAgICAgICAgdW5kZWYgJGZpbGU7CisgICAgICAgIGxhc3Q7CisgICAgfQogCiAgICAgbGFzdDsKIH0KQEAgLTkzLDcgKzE0NywxMiBAQAogICAgIHByaW50ICJjaGVja3NyYy5wbCBbb3B0aW9uXSA8ZmlsZTE+IFtmaWxlMl0gLi4uXG4iOwogICAgIHByaW50ICIgT3B0aW9uczpcbiI7CiAgICAgcHJpbnQgIiAgLURbRElSXSAgIERpcmVjdG9yeSB0byBwcmVwZW5kIGZpbGUgbmFtZXNcbiI7CisgICAgcHJpbnQgIiAgLWggICAgICAgIFNob3cgaGVscCBvdXRwdXRcbiI7CiAgICAgcHJpbnQgIiAgLVdbZmlsZV0gIFdoaXRlbGlzdCB0aGUgZ2l2ZW4gZmlsZSAtIGlnbm9yZSBhbGwgaXRzIGZsYXdzXG4iOworICAgIHByaW50ICJcbkRldGVjdHMgYW5kIHdhcm5zIGZvciB0aGVzZSBwcm9ibGVtczpcbiI7CisgICAgZm9yKHNvcnQga2V5cyAld2FybmluZ3MpIHsKKyAgICAgICAgcHJpbnRmICgiICUtMThzOiAlc1xuIiwgJF8sICR3YXJuaW5nc3skX30pOworICAgIH0KICAgICBleGl0OwogfQogCkBAIC0xMDksNiArMTY4LDc4IEBACiAKIH0gd2hpbGUoJGZpbGUpOwogCitzdWIgY2hlY2tzcmNfY2xlYXIgeworICAgIHVuZGVmICVpZ25vcmU7CisgICAgdW5kZWYgJWlnbm9yZV9zZXQ7CisgICAgdW5kZWYgQGlnbm9yZV9saW5lOworfQorCitzdWIgY2hlY2tzcmNfZW5kb2ZmaWxlIHsKKyAgICBteSAoJGZpbGUpID0gQF87CisgICAgZm9yKGtleXMgJWlnbm9yZV9zZXQpIHsKKyAgICAgICAgaWYoJGlnbm9yZV9zZXR7JF99ICYmICEkaWdub3JlX3VzZWR7JF99KSB7CisgICAgICAgICAgICBjaGVja3dhcm4oIlVOVVNFRElHTk9SRSIsICRpZ25vcmVfc2V0eyRffSwKKyAgICAgICAgICAgICAgICAgICAgICBsZW5ndGgoJF8pKzExLCAkZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAkaWdub3JlX2xpbmVbJGlnbm9yZV9zZXR7JF99XSwKKyAgICAgICAgICAgICAgICAgICAgICAiVW51c2VkIGlnbm9yZTogJF8iKTsKKyAgICAgICAgfQorICAgIH0KK30KKworc3ViIGVuYWJsZV93YXJuIHsKKyAgICBteSAoJHdoYXQsICRsaW5lLCAkZmlsZSwgJGwpID0gQF87CisKKyAgICAjIHN3aXRjaCBpdCBiYWNrIG9uLCBidXQgd2FybiBpZiBub3QgdHJpZ2dlcmVkIQorICAgIGlmKCEkaWdub3JlX3VzZWR7JHdoYXR9KSB7CisgICAgICAgIGNoZWNrd2FybigiVU5VU0VESUdOT1JFIiwKKyAgICAgICAgICAgICAgICAgICRsaW5lLCBsZW5ndGgoJHdoYXQpICsgMTEsICRmaWxlLCAkbCwKKyAgICAgICAgICAgICAgICAgICJObyB3YXJuaW5nIHdhcyBpbmhpYml0ZWQhIik7CisgICAgfQorICAgICRpZ25vcmVfc2V0eyR3aGF0fT0wOworICAgICRpZ25vcmVfdXNlZHskd2hhdH09MDsKKyAgICAkaWdub3JleyR3aGF0fT0wOworfQorc3ViIGNoZWNrc3JjIHsKKyAgICBteSAoJGNtZCwgJGxpbmUsICRmaWxlLCAkbCkgPSBAXzsKKyAgICBpZigkY21kID1+IC8gKihbXiBdKikgKiguKikvKSB7CisgICAgICAgIG15ICgkZW5hYmxlLCAkd2hhdCkgPSAoJDEsICQyKTsKKyAgICAgICAgJHdoYXQgPX4gczogKlwqLyQ6OjsgIyBjdXQgb2ZmIGVuZCBvZiBDIGNvbW1lbnQKKyAgICAgICAgIyBwcmludCAiRU5BQkxFICRlbmFibGUgV0hBVCAkd2hhdFxuIjsKKyAgICAgICAgaWYoJGVuYWJsZSBlcSAiZGlzYWJsZSIpIHsKKyAgICAgICAgICAgIG15ICgkd2FybiwgJHNjb3BlKT0oJDEsICQyKTsKKyAgICAgICAgICAgIGlmKCR3aGF0ID1+IC8oW14gXSopICsoLiopLykgeworICAgICAgICAgICAgICAgICgkd2FybiwgJHNjb3BlKT0oJDEsICQyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICR3YXJuID0gJHdoYXQ7CisgICAgICAgICAgICAgICAgJHNjb3BlID0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICMgcHJpbnQgIklHTk9SRSAkd2FybiBmb3IgU0NPUEUgJHNjb3BlXG4iOworICAgICAgICAgICAgaWYoJHNjb3BlIGVxICJhbGwiKSB7CisgICAgICAgICAgICAgICAgJHNjb3BlPTk5OTk5OTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYoJGlnbm9yZV9zZXR7JHdhcm59KSB7CisgICAgICAgICAgICAgICAgY2hlY2t3YXJuKCJCQURDT01NQU5EIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJGxpbmUsIDAsICRmaWxlLCAkbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiR3YXJuIGFscmVhZHkgZGlzYWJsZWQgZnJvbSBsaW5lICRpZ25vcmVfc2V0eyR3YXJufSIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgJGlnbm9yZXskd2Fybn09JHNjb3BlOworICAgICAgICAgICAgICAgICRpZ25vcmVfc2V0eyR3YXJufT0kbGluZTsKKyAgICAgICAgICAgICAgICAkaWdub3JlX2xpbmVbJGxpbmVdPSRsOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2lmKCRlbmFibGUgZXEgImVuYWJsZSIpIHsKKyAgICAgICAgICAgIGVuYWJsZV93YXJuKCR3aGF0LCAkbGluZSwgJGZpbGUsICRsKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGNoZWNrd2FybigiQkFEQ09NTUFORCIsCisgICAgICAgICAgICAgICAgICAgICAgJGxpbmUsIDAsICRmaWxlLCAkbCwKKyAgICAgICAgICAgICAgICAgICAgICAiSWxsZWdhbCAhY2hlY2tzcmMhIGNvbW1hbmQiKTsKKyAgICAgICAgfQorICAgIH0KK30KIAogc3ViIHNjYW5maWxlIHsKICAgICBteSAoJGZpbGUpID0gQF87CkBAIC0xMTgsMTMgKzI0OSwyMiBAQAogICAgIG15ICRsOwogICAgIG9wZW4oUiwgIjwkZmlsZSIpIHx8IGRpZSAiZmFpbGVkIHRvIG9wZW4gJGZpbGUiOwogCisgICAgbXkgJGluY29tbWVudD0wOwogICAgIG15ICRjb3B5cmlnaHQ9MDsKKyAgICBjaGVja3NyY19jbGVhcigpOyAjIGZvciBmaWxlIGJhc2VkIGlnbm9yZXMKIAogICAgIHdoaWxlKDxSPikgewogICAgICAgICAkd2luZG93c19vcyA/ICRfID1+IHMvXHI/XG4kLy8gOiBjaG9tcDsKICAgICAgICAgbXkgJGwgPSAkXzsKKyAgICAgICAgbXkgJG9sID0gJGw7ICMga2VlcCB0aGUgdW5tb2RpZmllZCBsaW5lIGZvciBlcnJvciByZXBvcnRpbmcKICAgICAgICAgbXkgJGNvbHVtbiA9IDA7CiAKKyAgICAgICAgIyBjaGVjayBmb3IgIWNoZWNrc3JjISBjb21tYW5kcworICAgICAgICBpZigkbCA9fiAvXCFjaGVja3NyY1whICguKikvKSB7CisgICAgICAgICAgICBteSAkY21kID0gJDE7CisgICAgICAgICAgICBjaGVja3NyYygkY21kLCAkbGluZSwgJGZpbGUsICRsKQorICAgICAgICB9CisKICAgICAgICAgIyBjaGVjayBmb3IgYSBjb3B5cmlnaHQgc3RhdGVtZW50CiAgICAgICAgIGlmKCEkY29weXJpZ2h0ICYmICgkbCA9fiAvY29weXJpZ2h0IC4qIFxkXGRcZFxkL2kpKSB7CiAgICAgICAgICAgICAkY29weXJpZ2h0PTE7CkBAIC0xMzIsMTUgKzI3Miw1OSBAQAogCiAgICAgICAgICMgZGV0ZWN0IGxvbmcgbGluZXMKICAgICAgICAgaWYobGVuZ3RoKCRsKSA+ICRtYXhfY29sdW1uKSB7Ci0gICAgICAgICAgICBjaGVja3dhcm4oJGxpbmUsIGxlbmd0aCgkbCksICRmaWxlLCAkbCwgIkxvbmdlciB0aGFuICRtYXhfY29sdW1uIGNvbHVtbnMiKTsKKyAgICAgICAgICAgIGNoZWNrd2FybigiTE9OR0xJTkUiLCAkbGluZSwgbGVuZ3RoKCRsKSwgJGZpbGUsICRsLAorICAgICAgICAgICAgICAgICAgICAgICJMb25nZXIgdGhhbiAkbWF4X2NvbHVtbiBjb2x1bW5zIik7CiAgICAgICAgIH0KICAgICAgICAgIyBkZXRlY3QgVEFCIGNoYXJhY3RlcnMKICAgICAgICAgaWYoJGwgPX4gL14oLiopXHQvKSB7Ci0gICAgICAgICAgICBjaGVja3dhcm4oJGxpbmUsIGxlbmd0aCgkMSksICRmaWxlLCAkbCwgIkNvbnRhaW5zIFRBQiBjaGFyYWN0ZXIiLCAxKTsKKyAgICAgICAgICAgIGNoZWNrd2FybigiVEFCUyIsCisgICAgICAgICAgICAgICAgICAgICAgJGxpbmUsIGxlbmd0aCgkMSksICRmaWxlLCAkbCwgIkNvbnRhaW5zIFRBQiBjaGFyYWN0ZXIiLCAxKTsKICAgICAgICAgfQogICAgICAgICAjIGRldGVjdCB0cmFpbGluZyB3aGl0ZSBzcGFjZQogICAgICAgICBpZigkbCA9fiAvXiguKilbIFx0XStcei8pIHsKLSAgICAgICAgICAgIGNoZWNrd2FybigkbGluZSwgbGVuZ3RoKCQxKSwgJGZpbGUsICRsLCAiVHJhaWxpbmcgd2hpdGVzcGFjZSIpOworICAgICAgICAgICAgY2hlY2t3YXJuKCJUUkFJTElOR1NQQUNFIiwKKyAgICAgICAgICAgICAgICAgICAgICAkbGluZSwgbGVuZ3RoKCQxKSwgJGZpbGUsICRsLCAiVHJhaWxpbmcgd2hpdGVzcGFjZSIpOworICAgICAgICB9CisKKyAgICAgICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgIyBBYm92ZSB0aGlzIG1hcmtlciwgdGhlIGNoZWNrcyB3ZXJlIGRvbmUgb24gbGluZXMgKmluY2x1ZGluZyoKKyAgICAgICAgIyBjb21tZW50cworICAgICAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgICAgICMgc3RyaXAgb2ZmIEM4OSBjb21tZW50cworCisgICAgICBjb21tZW50OgorICAgICAgICBpZighJGluY29tbWVudCkgeworICAgICAgICAgICAgaWYoJGwgPX4gcy9cL1wqLipcKlwvLyAvZykgeworICAgICAgICAgICAgICAgICMgZnVsbCAvKiBjb21tZW50cyAqLyB3ZXJlIHJlbW92ZWQhCisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZigkbCA9fiBzL1wvXCouKi8vKSB7CisgICAgICAgICAgICAgICAgIyBzdGFydCBvZiAvKiBjb21tZW50IHdhcyByZW1vdmVkCisgICAgICAgICAgICAgICAgJGluY29tbWVudCA9IDE7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZigkbCA9fiBzLy4qXCpcLy8vKSB7CisgICAgICAgICAgICAgICAgIyBlbmQgb2YgY29tbWVudCAqLyB3YXMgcmVtb3ZlZAorICAgICAgICAgICAgICAgICRpbmNvbW1lbnQgPSAwOworICAgICAgICAgICAgICAgIGdvdG8gY29tbWVudDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICMgc3RpbGwgd2l0aGluIGEgY29tbWVudAorICAgICAgICAgICAgICAgICRsPSIiOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgIyBCZWxvdyB0aGlzIG1hcmtlciwgdGhlIGNoZWNrcyB3ZXJlIGRvbmUgb24gbGluZXMgKndpdGhvdXQqCisgICAgICAgICMgY29tbWVudHMKKyAgICAgICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgICAgICAjIGNydWRlIGF0dGVtcHQgdG8gZGV0ZWN0IC8vIGNvbW1lbnRzIHdpdGhvdXQgdG9vIG1hbnkgZmFsc2UKKyAgICAgICAgIyBwb3NpdGl2ZXMKKyAgICAgICAgaWYoJGwgPX4gL14oW14iXCpdKilbXjoiXVwvXC8vKSB7CisgICAgICAgICAgICBjaGVja3dhcm4oIkNQUENPTU1FTlRTIiwKKyAgICAgICAgICAgICAgICAgICAgICAkbGluZSwgbGVuZ3RoKCQxKSwgJGZpbGUsICRsLCAiXC9cLyBjb21tZW50Iik7CiAgICAgICAgIH0KIAogICAgICAgICAjIGNoZWNrIHNwYWNlcyBhZnRlciBmb3IvaWYvd2hpbGUKQEAgLTE0OSwyMCArMzMzLDMxIEBACiAgICAgICAgICAgICAgICAgIyB0aGlzIGlzIGEgI2lmLCB0cmVhdCBpdCBkaWZmZXJlbnRseQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgY2hlY2t3YXJuKCRsaW5lLCBsZW5ndGgoJDEpK2xlbmd0aCgkMiksICRmaWxlLCAkbCwKKyAgICAgICAgICAgICAgICBjaGVja3dhcm4oIlNQQUNFQkVGT1JFUEFSRU4iLCAkbGluZSwgbGVuZ3RoKCQxKStsZW5ndGgoJDIpLCAkZmlsZSwgJGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICIkMiB3aXRoIHNwYWNlIik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICAjIGNoZWNrIHNwYWNlcyBhZnRlciBvcGVuIHBhcmVuIGFmdGVyIGZvci9pZi93aGlsZQotICAgICAgICBpZigkbCA9fiAvXiguKikoZm9yfGlmfHdoaWxlKVwoIC8pIHsKLSAgICAgICAgICAgIGlmKCQxID1+IC8gKlwjLykgewotICAgICAgICAgICAgICAgICMgdGhpcyBpcyBhICNpZiwgdHJlYXQgaXQgZGlmZmVyZW50bHkKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGNoZWNrd2FybigkbGluZSwgbGVuZ3RoKCQxKStsZW5ndGgoJDIpKzEsICRmaWxlLCAkbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIiQyIHdpdGggc3BhY2UgZmlyc3QgaW4gY29uZGl0aW9uIik7Ci0gICAgICAgICAgICB9CisgICAgICAgICMgY2hlY2sgc3BhY2VzIGFmdGVyIG9wZW4gcGFyZW50aGVzZXMKKyAgICAgICAgaWYoJGwgPX4gL14oLipbYS16XSlcKCAvaSkgeworICAgICAgICAgICAgY2hlY2t3YXJuKCJTUEFDRUFGVEVSUEFSRU4iLAorICAgICAgICAgICAgICAgICAgICAgICRsaW5lLCBsZW5ndGgoJDEpKzEsICRmaWxlLCAkbCwKKyAgICAgICAgICAgICAgICAgICAgICAic3BhY2UgYWZ0ZXIgb3BlbiBwYXJlbnRoZXNpcyIpOworICAgICAgICB9CisKKyAgICAgICAgIyBjaGVjayBzcGFjZXMgYmVmb3JlIGNsb3NlIHBhcmVudGhlc2VzLCB1bmxlc3MgaXQgd2FzIGEgc3BhY2Ugb3IgYQorICAgICAgICAjIGNsb3NlIHBhcmVudGhlc2lzIQorICAgICAgICBpZigkbCA9fiAvKC4qW15cKSBdKSBcKS8pIHsKKyAgICAgICAgICAgIGNoZWNrd2FybigiU1BBQ0VCRUZPUkVDTE9TRSIsCisgICAgICAgICAgICAgICAgICAgICAgJGxpbmUsIGxlbmd0aCgkMSkrMSwgJGZpbGUsICRsLAorICAgICAgICAgICAgICAgICAgICAgICJzcGFjZSBiZWZvcmUgY2xvc2UgcGFyZW50aGVzaXMiKTsKKyAgICAgICAgfQorCisgICAgICAgICMgY2hlY2sgc3BhY2VzIGJlZm9yZSBjb21tYSEKKyAgICAgICAgaWYoJGwgPX4gLyguKlteIF0pICwvKSB7CisgICAgICAgICAgICBjaGVja3dhcm4oIlNQQUNFQkVGT1JFQ09NTUEiLAorICAgICAgICAgICAgICAgICAgICAgICRsaW5lLCBsZW5ndGgoJDEpKzEsICRmaWxlLCAkbCwKKyAgICAgICAgICAgICAgICAgICAgICAic3BhY2UgYmVmb3JlIGNvbW1hIik7CiAgICAgICAgIH0KIAogICAgICAgICAjIGNoZWNrIGZvciAicmV0dXJuKCIgd2l0aG91dCBzcGFjZQpAQCAtMTcxLDcgKzM2Niw3IEBACiAgICAgICAgICAgICAgICAgIyB0aGlzIGlzIGEgI2lmLCB0cmVhdCBpdCBkaWZmZXJlbnRseQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgY2hlY2t3YXJuKCRsaW5lLCBsZW5ndGgoJDEpKzYsICRmaWxlLCAkbCwKKyAgICAgICAgICAgICAgICBjaGVja3dhcm4oIlJFVFVSTk5PU1BBQ0UiLCAkbGluZSwgbGVuZ3RoKCQxKSs2LCAkZmlsZSwgJGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZXR1cm4gd2l0aG91dCBzcGFjZSBiZWZvcmUgcGFyZW4iKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMjAzLDM3ICszOTgsNDIgQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZighJGlnbikgewotICAgICAgICAgICAgICAgIGNoZWNrd2FybigkbGluZSwgbGVuZ3RoKCRwcmVmKSsxLCAkZmlsZSwgJGwsCisgICAgICAgICAgICAgICAgY2hlY2t3YXJuKCJDT01NQU5PU1BBQ0UiLCAkbGluZSwgbGVuZ3RoKCRwcmVmKSsxLCAkZmlsZSwgJGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYSB3aXRob3V0IGZvbGxvd2luZyBzcGFjZSIpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgICMgY2hlY2sgZm9yICJ9IGVsc2UiCiAgICAgICAgIGlmKCRsID1+IC9eKC4qKVx9ICplbHNlLykgewotICAgICAgICAgICAgY2hlY2t3YXJuKCRsaW5lLCBsZW5ndGgoJDEpLCAkZmlsZSwgJGwsICJlbHNlIGFmdGVyIGNsb3NpbmcgYnJhY2Ugb24gc2FtZSBsaW5lIik7CisgICAgICAgICAgICBjaGVja3dhcm4oIkJSQUNFRUxTRSIsCisgICAgICAgICAgICAgICAgICAgICAgJGxpbmUsIGxlbmd0aCgkMSksICRmaWxlLCAkbCwgImVsc2UgYWZ0ZXIgY2xvc2luZyBicmFjZSBvbiBzYW1lIGxpbmUiKTsKICAgICAgICAgfQogICAgICAgICAjIGNoZWNrIGZvciAiKXsiCiAgICAgICAgIGlmKCRsID1+IC9eKC4qKVwpXHsvKSB7Ci0gICAgICAgICAgICBjaGVja3dhcm4oJGxpbmUsIGxlbmd0aCgkMSkrMSwgJGZpbGUsICRsLCAibWlzc2luZyBzcGFjZSBhZnRlciBjbG9zZSBwYXJlbiIpOworICAgICAgICAgICAgY2hlY2t3YXJuKCJQQVJFTkJSQUNFIiwKKyAgICAgICAgICAgICAgICAgICAgICAkbGluZSwgbGVuZ3RoKCQxKSsxLCAkZmlsZSwgJGwsICJtaXNzaW5nIHNwYWNlIGFmdGVyIGNsb3NlIHBhcmVuIik7CiAgICAgICAgIH0KIAogICAgICAgICAjIGNoZWNrIGZvciBzcGFjZSBiZWZvcmUgdGhlIHNlbWljb2xvbiBsYXN0IGluIGEgbGluZQogICAgICAgICBpZigkbCA9fiAvXiguKlteIF0uKikgOyQvKSB7Ci0gICAgICAgICAgICBjaGVja3dhcm4oJGxpbmUsIGxlbmd0aCgkMSksICRmaWxlLCAkbCwgInNwYWNlIGJlZm9yZSBsYXN0IHNlbWljb2xvbiIpOworICAgICAgICAgICAgY2hlY2t3YXJuKCJTUEFDRVNFTUlMQ09MT04iLAorICAgICAgICAgICAgICAgICAgICAgICRsaW5lLCBsZW5ndGgoJDEpLCAkZmlsZSwgJG9sLCAic3BhY2UgYmVmb3JlIGxhc3Qgc2VtaWNvbG9uIik7CiAgICAgICAgIH0KIAogICAgICAgICAjIHNjYW4gZm9yIHVzZSBvZiBiYW5uZWQgZnVuY3Rpb25zCi0gICAgICAgIGlmKCRsID1+IC9eKC4qXFcpKHNwcmludGZ8dnNwcmludGZ8c3RyY2F0fHN0cm5jYXR8Z2V0cylccypcKC8pIHsKLSAgICAgICAgICAgIGNoZWNrd2FybigkbGluZSwgbGVuZ3RoKCQxKSwgJGZpbGUsICRsLAorICAgICAgICBpZigkbCA9fiAvXiguKlxXKShzcHJpbnRmfHZzcHJpbnRmfHN0cmNhdHxzdHJuY2F0fF9tYnNjYXR8X21ic25jYXR8X3Rjc2NhdHxfdGNzbmNhdHx3Y3NjYXR8d2NzbmNhdHxnZXRzKVxzKlwoLykgeworICAgICAgICAgICAgY2hlY2t3YXJuKCJCQU5ORURGVU5DIiwKKyAgICAgICAgICAgICAgICAgICAgICAkbGluZSwgbGVuZ3RoKCQxKSwgJGZpbGUsICRvbCwKICAgICAgICAgICAgICAgICAgICAgICAidXNlIG9mICQyIGlzIGJhbm5lZCIpOwogICAgICAgICB9CiAKICAgICAgICAgIyBzY2FuIGZvciB1c2Ugb2Ygbm9uLWJpbmFyeSBmb3BlbiB3aXRob3V0IHRoZSBtYWNybwotICAgICAgICBpZigkbCA9fiAvXiguKlxXKWZvcGVuXHMqXChbXiJdKlwiKFteIl0qKS8pIHsKKyAgICAgICAgaWYoJGwgPX4gL14oLipcVylmb3BlblxzKlwoW14sXSosICpcIihbXiJdKikvKSB7CiAgICAgICAgICAgICBteSAkbW9kZSA9ICQyOwogICAgICAgICAgICAgaWYoJG1vZGUgIX4gL2IvKSB7Ci0gICAgICAgICAgICAgICAgY2hlY2t3YXJuKCRsaW5lLCBsZW5ndGgoJDEpLCAkZmlsZSwgJGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Ugb2Ygbm9uLWJpbmFyeSBmb3BlbiB3aXRob3V0IEZPUEVOXyogbWFjcm8iKTsKKyAgICAgICAgICAgICAgICBjaGVja3dhcm4oIkZPUEVOTU9ERSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICRsaW5lLCBsZW5ndGgoJDEpLCAkZmlsZSwgJG9sLAorICAgICAgICAgICAgICAgICAgICAgICAgICAidXNlIG9mIG5vbi1iaW5hcnkgZm9wZW4gd2l0aG91dCBGT1BFTl8qIG1hY3JvOiAkbW9kZSIpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTI0MSw3ICs0NDEsOCBAQAogICAgICAgICAjIG9ubHkgYWxlcnQgaWYgcHJldmlvdXMgbGluZSBlbmRlZCB3aXRoIGEgY2xvc2UgcGFyZW4gYW5kIHdhc24ndCBhIGNwcAogICAgICAgICAjIGxpbmUKICAgICAgICAgaWYoKCgkcHJldmwgPX4gL1wpXHovKSAmJiAoJHByZXZsICF+IC9eICojLykpICYmICgkbCA9fiAvXiggKylcey8pKSB7Ci0gICAgICAgICAgICBjaGVja3dhcm4oJGxpbmUsIGxlbmd0aCgkMSksICRmaWxlLCAkbCwgImJhZGx5IHBsYWNlZCBvcGVuIGJyYWNlIik7CisgICAgICAgICAgICBjaGVja3dhcm4oIkJSQUNFUE9TIiwKKyAgICAgICAgICAgICAgICAgICAgICAkbGluZSwgbGVuZ3RoKCQxKSwgJGZpbGUsICRvbCwgImJhZGx5IHBsYWNlZCBvcGVuIGJyYWNlIik7CiAgICAgICAgIH0KIAogICAgICAgICAjIGlmIHRoZSBwcmV2aW91cyBsaW5lIHN0YXJ0cyB3aXRoIGlmL3doaWxlL2ZvciBBTkQgZW5kcyB3aXRoIGFuIG9wZW4KQEAgLTI1Niw3ICs0NTcsNyBAQAogICAgICAgICAgICAgICAgIG15ICRleHBlY3QgPSAkZmlyc3QrJGluZGVudDsKICAgICAgICAgICAgICAgICBpZigkZXhwZWN0ICE9ICRzZWNvbmQpIHsKICAgICAgICAgICAgICAgICAgICAgbXkgJGRpZmYgPSAkc2Vjb25kIC0gJGZpcnN0OwotICAgICAgICAgICAgICAgICAgICBjaGVja3dhcm4oJGxpbmUsIGxlbmd0aCgkMSksICRmaWxlLCAkbCwKKyAgICAgICAgICAgICAgICAgICAgY2hlY2t3YXJuKCJJTkRFTlRBVElPTiIsICRsaW5lLCBsZW5ndGgoJDEpLCAkZmlsZSwgJG9sLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCBpbmRlbnRlZCAkaW5kZW50IHN0ZXBzLCB1c2VzICRkaWZmKSIpOwogCiAgICAgICAgICAgICAgICAgfQpAQCAtMjY0LDE5ICs0NjUsMjkgQEAKICAgICAgICAgfQogCiAgICAgICAgICRsaW5lKys7Ci0gICAgICAgICRwcmV2bCA9ICRsOworICAgICAgICAkcHJldmwgPSAkb2w7CiAgICAgfQogCiAgICAgaWYoISRjb3B5cmlnaHQpIHsKLSAgICAgICAgY2hlY2t3YXJuKDEsIDAsICRmaWxlLCAiIiwgIk1pc3NpbmcgY29weXJpZ2h0IHN0YXRlbWVudCIsIDEpOworICAgICAgICBjaGVja3dhcm4oIkNPUFlSSUdIVCIsIDEsIDAsICRmaWxlLCAiIiwgIk1pc3NpbmcgY29weXJpZ2h0IHN0YXRlbWVudCIsIDEpOwogICAgIH0KKyAgICBpZigkaW5jb21tZW50KSB7CisgICAgICAgIGNoZWNrd2FybigiT1BFTkNPTU1FTlQiLCAxLCAwLCAkZmlsZSwgIiIsICJNaXNzaW5nIGNsb3NpbmcgY29tbWVudCIsIDEpOworICAgIH0KKworICAgIGNoZWNrc3JjX2VuZG9mZmlsZSgkZmlsZSk7CiAKICAgICBjbG9zZShSKTsKIAogfQogCiAKLWlmKCRlcnJvcnMgfHwgJHdhcm5pbmdzKSB7CitpZigkZXJyb3JzIHx8ICR3YXJuaW5ncyB8fCAkdmVyYm9zZSkgewogICAgIHByaW50ZiAiY2hlY2tzcmM6ICVkIGVycm9ycyBhbmQgJWQgd2FybmluZ3NcbiIsICRlcnJvcnMsICR3YXJuaW5nczsKKyAgICBpZigkc3VwcmVzc2VkKSB7CisgICAgICAgIHByaW50ZiAiY2hlY2tzcmM6ICVkIGVycm9ycyBhbmQgJWQgd2FybmluZ3Mgc3VwcHJlc3NlZFxuIiwKKyAgICAgICAgJHNlcnJvcnMsCisgICAgICAgICRzd2FybmluZ3M7CisgICAgfQogICAgIGV4aXQgNTsgIyByZXR1cm4gZmFpbHVyZQogfQpkaWZmIC0tZ2l0IGEvbGliL2NoZWNrc3JjLndoaXRlbGlzdCBiL2xpYi9jaGVja3NyYy53aGl0ZWxpc3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyNjFiOWQuLjAwMDAwMDAKLS0tIGEvbGliL2NoZWNrc3JjLndoaXRlbGlzdAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLSAgICAyMjcgRW50ZXJpbmcgUGFzc2l2ZSBNb2RlIChhMSxhMixhMyxhNCxwMSxwMikKLSAgICAyMjggRW50ZXJpbmcgTG9uZyBQYXNzaXZlIE1vZGUgKDQsNCxhMSxhMixhMyxhNCwyLHAxLHAyKQotICAgICAgMTUwIEFTQ0lJIGRhdGEgY29ubmVjdGlvbiBmb3IgL2Jpbi9scyAoMTM3LjE2Ny4xMDQuOTEsMzc0NDUpICgwIGJ5dGVzKS4KLSAgICAgIDE1MCBPcGVuaW5nIEFTQ0lJIG1vZGUgZGF0YSBjb25uZWN0aW9uIGZvciBbZmlsZV0gKDAuMC4wLjAsMCkgKDU0NSBieXRlcykKLSAgICogbm9fcHJveHk9ZG9tYWluMS5kb20saG9zdC5kb21haW4yLmRvbQotICAgICBEZWZhdWx0IHZhbHVlcyBhcmUgKDAsMCkgaW5pdGlhbGl6ZWQgYnkgY2FsbG9jLgotICBmaWxlID0gZm9wZW4obmFtZSwgInIiKTsgLyogVk1TICovCi0gICAgcmV0dXJuIGZvcGVuKGZpbGUsICJyIik7IC8qIFZNUyAqLwotICAgIHJldHVybiBmb3BlbihmaWxlLCAiciIsICJyZm09c3RtbGYiLCAiY3R4PXN0bSIpOwotICAgIGN1cmxfbWVtbG9nKCJGSUxFICVzOiVkIGZvcGVuKFwiJXNcIixcIiVzXCIpID0gJXBcbiIsCmRpZmYgLS1naXQgYS9saWIvY29uZmlnLWFtaWdhb3MuaCBiL2xpYi9jb25maWctYW1pZ2Fvcy5oCmluZGV4IDA0YjE4YjcuLjc0ZjVmNTIgMTAwNjQ0Ci0tLSBhL2xpYi9jb25maWctYW1pZ2Fvcy5oCisrKyBiL2xpYi9jb25maWctYW1pZ2Fvcy5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL2NvbmZpZy1kb3MuaCBiL2xpYi9jb25maWctZG9zLmgKaW5kZXggMjg4YmQxZC4uZjJjOWZmNCAxMDA2NDQKLS0tIGEvbGliL2NvbmZpZy1kb3MuaAorKysgYi9saWIvY29uZmlnLWRvcy5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL2NvbmZpZy1tYWMuaCBiL2xpYi9jb25maWctbWFjLmgKaW5kZXggZWU3YTY1OS4uM2MxMmJkZiAxMDA2NDQKLS0tIGEvbGliL2NvbmZpZy1tYWMuaAorKysgYi9saWIvY29uZmlnLW1hYy5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL2NvbmZpZy1vczQwMC5oIGIvbGliL2NvbmZpZy1vczQwMC5oCmluZGV4IDFlNjIyMjguLmZlNWI4NjQgMTAwNjQ0Ci0tLSBhL2xpYi9jb25maWctb3M0MDAuaAorKysgYi9saWIvY29uZmlnLW9zNDAwLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvY29uZmlnLXJpc2Nvcy5oIGIvbGliL2NvbmZpZy1yaXNjb3MuaAppbmRleCBlNDAwNTc3Li4wMzc5NTI0IDEwMDY0NAotLS0gYS9saWIvY29uZmlnLXJpc2Nvcy5oCisrKyBiL2xpYi9jb25maWctcmlzY29zLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvY29uZmlnLXN5bWJpYW4uaCBiL2xpYi9jb25maWctc3ltYmlhbi5oCmluZGV4IGE0MGUzZDguLjI2MDNhNDYgMTAwNjQ0Ci0tLSBhL2xpYi9jb25maWctc3ltYmlhbi5oCisrKyBiL2xpYi9jb25maWctc3ltYmlhbi5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNjU4LDcgKzY1OCw3IEBACiAKIC8qIERlZmluZSB0byB0aGUgYWRkcmVzcyB3aGVyZSBidWcgcmVwb3J0cyBmb3IgdGhpcyBwYWNrYWdlIHNob3VsZCBiZSBzZW50LiAqLwogLyojZGVmaW5lIFBBQ0tBR0VfQlVHUkVQT1JUIFwKLSAgImEgc3VpdGFibGUgY3VybCBtYWlsaW5nIGxpc3QgPT4gaHR0cDovL2N1cmwuaGF4eC5zZS9tYWlsLyIqLworICAiYSBzdWl0YWJsZSBjdXJsIG1haWxpbmcgbGlzdCA9PiBodHRwczovL2N1cmwuaGF4eC5zZS9tYWlsLyIqLwogCiAvKiBEZWZpbmUgdG8gdGhlIGZ1bGwgbmFtZSBvZiB0aGlzIHBhY2thZ2UuICovCiAvKiNkZWZpbmUgUEFDS0FHRV9OQU1FICJjdXJsIiovCmRpZmYgLS1naXQgYS9saWIvY29uZmlnLXRwZi5oIGIvbGliL2NvbmZpZy10cGYuaAppbmRleCBkNmI4Y2MyLi5kMTcxNGZkIDEwMDY0NAotLS0gYS9saWIvY29uZmlnLXRwZi5oCisrKyBiL2xpYi9jb25maWctdHBmLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC01ODAsNyArNTgwLDcgQEAKIAogLyogRGVmaW5lIHRvIHRoZSBhZGRyZXNzIHdoZXJlIGJ1ZyByZXBvcnRzIGZvciB0aGlzIHBhY2thZ2Ugc2hvdWxkIGJlIHNlbnQuICovCiAjZGVmaW5lIFBBQ0tBR0VfQlVHUkVQT1JUIFwKLSAgImEgc3VpdGFibGUgY3VybCBtYWlsaW5nIGxpc3QgPT4gaHR0cDovL2N1cmwuaGF4eC5zZS9tYWlsLyIKKyAgImEgc3VpdGFibGUgY3VybCBtYWlsaW5nIGxpc3QgPT4gaHR0cHM6Ly9jdXJsLmhheHguc2UvbWFpbC8iCiAKIC8qIERlZmluZSB0byB0aGUgZnVsbCBuYW1lIG9mIHRoaXMgcGFja2FnZS4gKi8KICNkZWZpbmUgUEFDS0FHRV9OQU1FICJjdXJsIgpkaWZmIC0tZ2l0IGEvbGliL2NvbmZpZy12eHdvcmtzLmggYi9saWIvY29uZmlnLXZ4d29ya3MuaAppbmRleCBkODg5ZWZjLi43ODBhNGEyIDEwMDY0NAotLS0gYS9saWIvY29uZmlnLXZ4d29ya3MuaAorKysgYi9saWIvY29uZmlnLXZ4d29ya3MuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9jb25maWctd2luMzIuaCBiL2xpYi9jb25maWctd2luMzIuaAppbmRleCBlOWEzNzEyLi5hZjdiYjFmIDEwMDY0NAotLS0gYS9saWIvY29uZmlnLXdpbjMyLmgKKysrIGIvbGliL2NvbmZpZy13aW4zMi5oCkBAIC03LDExICs3LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNDgxLDggKzQ4MSw5IEBACiAjZW5kaWYKIAogLyogRGVmaW5lIGlmIHRoZSBjb21waWxlciBzdXBwb3J0cyB0aGUgJ2xvbmcgbG9uZycgZGF0YSB0eXBlLiAqLwotI2lmIGRlZmluZWQoX19NSU5HVzMyX18pIHx8IGRlZmluZWQoX19XQVRDT01DX18pIHx8IFwKLSAgICAoZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEzMTApKQorI2lmIGRlZmluZWQoX19NSU5HVzMyX18pIHx8IGRlZmluZWQoX19XQVRDT01DX18pICAgICAgfHwgXAorICAgIChkZWZpbmVkKF9NU0NfVkVSKSAgICAgJiYgKF9NU0NfVkVSICAgICA+PSAxMzEwKSkgfHwgXAorICAgIChkZWZpbmVkKF9fQk9STEFORENfXykgJiYgKF9fQk9STEFORENfXyA+PSAweDU2MSkpCiAjZGVmaW5lIEhBVkVfTE9OR0xPTkcgMQogI2VuZGlmCiAKQEAgLTYyMCw3ICs2MjEsOCBAQAogLyogRGVmaW5lIGlmIHN0cnVjdCBzb2NrYWRkcl9pbjYgaGFzIHRoZSBzaW42X3Njb3BlX2lkIG1lbWJlci4gKi8KICNkZWZpbmUgSEFWRV9TT0NLQUREUl9JTjZfU0lONl9TQ09QRV9JRCAxCiAKLSNpZiBIQVZFX1dJTlNPQ0syX0ggJiYgZGVmaW5lZChfV0lOMzJfV0lOTlQpICYmIChfV0lOMzJfV0lOTlQgPj0gMHgwNjAwKQorI2lmIGRlZmluZWQoSEFWRV9XSU5TT0NLMl9IKSAmJiBkZWZpbmVkKF9XSU4zMl9XSU5OVCkgJiYgXAorICAgIChfV0lOMzJfV0lOTlQgPj0gMHgwNjAwKQogI2RlZmluZSBIQVZFX1NUUlVDVF9QT0xMRkQgMQogI2VuZGlmCiAKQEAgLTcyNyw3ICs3MjksNyBAQAogLyogSWYgeW91IHdhbnQgdG8gYnVpbGQgY3VybCB3aXRoIHRoZSBidWlsdC1pbiBtYW51YWwgKi8KICNkZWZpbmUgVVNFX01BTlVBTCAxCiAKLSNpZiBkZWZpbmVkKF9fUE9DQ19fKSB8fCAoVVNFX0lQVjYpCisjaWYgZGVmaW5lZChfX1BPQ0NfXykgfHwgZGVmaW5lZChVU0VfSVBWNikKICMgIGRlZmluZSBFTkFCTEVfSVBWNiAxCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvbGliL2NvbmZpZy13aW4zMmNlLmggYi9saWIvY29uZmlnLXdpbjMyY2UuaAppbmRleCBhNzIzZmQxLi4zODM5NDg1IDEwMDY0NAotLS0gYS9saWIvY29uZmlnLXdpbjMyY2UuaAorKysgYi9saWIvY29uZmlnLXdpbjMyY2UuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9jb25uY2FjaGUuYyBiL2xpYi9jb25uY2FjaGUuYwppbmRleCBjNzEyZWQ3Li5kMGMwOWM4IDEwMDY0NAotLS0gYS9saWIvY29ubmNhY2hlLmMKKysrIGIvbGliL2Nvbm5jYWNoZS5jCkBAIC01LDEyICs1LDEyIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCBMaW51cyBOaWVsc2VuIEZlbHR6aW5nLCA8bGludXNAaGF4eC5zZT4KKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxNiwgTGludXMgTmllbHNlbiBGZWx0emluZywgPGxpbnVzQGhheHguc2U+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTMyLDEwICszMiw5IEBACiAjaW5jbHVkZSAic2VuZGYuaCIKICNpbmNsdWRlICJyYXdzdHIuaCIKICNpbmNsdWRlICJjb25uY2FjaGUuaCIKKy8qIFRoZSBsYXN0IDMgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlIGluIHRoaXMgb3JkZXIgKi8KICNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgotCiAjaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKLS8qIFRoZSBsYXN0ICNpbmNsdWRlIGZpbGUgc2hvdWxkIGJlOiAqLwogI2luY2x1ZGUgIm1lbWRlYnVnLmgiCiAKIHN0YXRpYyB2b2lkIGNvbm5fbGxpc3RfZHRvcih2b2lkICp1c2VyLCB2b2lkICplbGVtZW50KQpAQCAtMTMyLDkgKzEzMSwxNiBAQAogLyogcmV0dXJucyBhbiBhbGxvY2F0ZWQga2V5IHRvIGZpbmQgYSBidW5kbGUgZm9yIHRoaXMgY29ubmVjdGlvbiAqLwogc3RhdGljIGNoYXIgKmhhc2hrZXkoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKQogewotICByZXR1cm4gYXByaW50ZigiJXM6JWQiLAotICAgICAgICAgICAgICAgICBjb25uLT5iaXRzLnByb3h5P2Nvbm4tPnByb3h5Lm5hbWU6Y29ubi0+aG9zdC5uYW1lLAotICAgICAgICAgICAgICAgICBjb25uLT5sb2NhbHBvcnQpOworICBjb25zdCBjaGFyICpob3N0bmFtZTsKKworICBpZihjb25uLT5iaXRzLnByb3h5KQorICAgIGhvc3RuYW1lID0gY29ubi0+cHJveHkubmFtZTsKKyAgZWxzZSBpZihjb25uLT5iaXRzLmNvbm5fdG9faG9zdCkKKyAgICBob3N0bmFtZSA9IGNvbm4tPmNvbm5fdG9faG9zdC5uYW1lOworICBlbHNlCisgICAgaG9zdG5hbWUgPSBjb25uLT5ob3N0Lm5hbWU7CisKKyAgcmV0dXJuIGFwcmludGYoIiVzOiVkIiwgaG9zdG5hbWUsIGNvbm4tPnBvcnQpOwogfQogCiAvKiBMb29rIHVwIHRoZSBidW5kbGUgd2l0aCBhbGwgdGhlIGNvbm5lY3Rpb25zIHRvIHRoZSBzYW1lIGhvc3QgdGhpcwpkaWZmIC0tZ2l0IGEvbGliL2Nvbm5jYWNoZS5oIGIvbGliL2Nvbm5jYWNoZS5oCmluZGV4IDU5MTgxYmYuLmIxZGFkZjkgMTAwNjQ0Ci0tLSBhL2xpYi9jb25uY2FjaGUuaAorKysgYi9saWIvY29ubmNhY2hlLmgKQEAgLTEyLDcgKzEyLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvY29ubmVjdC5jIGIvbGliL2Nvbm5lY3QuYwppbmRleCA3MjAyZmE2Li5hYzJmMjY4IDEwMDY0NAotLS0gYS9saWIvY29ubmVjdC5jCisrKyBiL2xpYi9jb25uZWN0LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC01Niw3ICs1Niw2IEBACiAjaW5jbHVkZSA8aW5ldC5oPgogI2VuZGlmCiAKLSNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgogI2luY2x1ZGUgInVybGRhdGEuaCIKICNpbmNsdWRlICJzZW5kZi5oIgogI2luY2x1ZGUgImlmMmlwLmgiCkBAIC03NCw3ICs3Myw4IEBACiAjaW5jbHVkZSAiY29ubmNhY2hlLmgiCiAjaW5jbHVkZSAibXVsdGloYW5kbGUuaCIKIAotLyogVGhlIGxhc3QgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlOiAqLworLyogVGhlIGxhc3QgMyAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmUgaW4gdGhpcyBvcmRlciAqLworI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCiAjaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKICNpbmNsdWRlICJtZW1kZWJ1Zy5oIgogCkBAIC02MTksNyArNjE5LDcgQEAKIAogICBzd2l0Y2ggKHNhLT5zYV9mYW1pbHkpIHsKICAgICBjYXNlIEFGX0lORVQ6Ci0gICAgICBzaSA9IChzdHJ1Y3Qgc29ja2FkZHJfaW4qKSBzYTsKKyAgICAgIHNpID0gKHN0cnVjdCBzb2NrYWRkcl9pbiopKHZvaWQqKSBzYTsKICAgICAgIGlmKEN1cmxfaW5ldF9udG9wKHNhLT5zYV9mYW1pbHksICZzaS0+c2luX2FkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyLCBNQVhfSVBBRFJfTEVOKSkgewogICAgICAgICB1c19wb3J0ID0gbnRvaHMoc2ktPnNpbl9wb3J0KTsKQEAgLTYyOSw3ICs2MjksNyBAQAogICAgICAgYnJlYWs7CiAjaWZkZWYgRU5BQkxFX0lQVjYKICAgICBjYXNlIEFGX0lORVQ2OgotICAgICAgc2k2ID0gKHN0cnVjdCBzb2NrYWRkcl9pbjYqKXNhOworICAgICAgc2k2ID0gKHN0cnVjdCBzb2NrYWRkcl9pbjYqKSh2b2lkKikgc2E7CiAgICAgICBpZihDdXJsX2luZXRfbnRvcChzYS0+c2FfZmFtaWx5LCAmc2k2LT5zaW42X2FkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyLCBNQVhfSVBBRFJfTEVOKSkgewogICAgICAgICB1c19wb3J0ID0gbnRvaHMoc2k2LT5zaW42X3BvcnQpOwpAQCAtNjY4LDcgKzY2OCw3IEBACiAgICAgLyogdGhlcmUncyBubyBjb25uZWN0aW9uISAqLwogICAgIHJldHVybjsKIAotICBpZighY29ubi0+Yml0cy5yZXVzZSkgeworICBpZighY29ubi0+Yml0cy5yZXVzZSAmJiAhY29ubi0+Yml0cy50Y3BfZmFzdG9wZW4pIHsKICAgICBpbnQgZXJyb3I7CiAKICAgICBsZW4gPSBzaXplb2Yoc3RydWN0IEN1cmxfc29ja2FkZHJfc3RvcmFnZSk7CkBAIC03NjQsNiArNzY0LDcgQEAKICAgICByYyA9IEN1cmxfc29ja2V0X3JlYWR5KENVUkxfU09DS0VUX0JBRCwgY29ubi0+dGVtcHNvY2tbaV0sIDApOwogCiAgICAgaWYocmMgPT0gMCkgeyAvKiBubyBjb25uZWN0aW9uIHlldCAqLworICAgICAgZXJyb3IgPSAwOwogICAgICAgaWYoY3VybHhfdHZkaWZmKG5vdywgY29ubi0+Y29ubmVjdHRpbWUpID49IGNvbm4tPnRpbWVvdXRtc19wZXJfYWRkcikgewogICAgICAgICBpbmZvZihkYXRhLCAiQWZ0ZXIgJWxkbXMgY29ubmVjdCB0aW1lLCBtb3ZlIG9uIVxuIiwKICAgICAgICAgICAgICAgY29ubi0+dGltZW91dG1zX3Blcl9hZGRyKTsKQEAgLTc3Niw3ICs3NzcsNyBAQAogICAgICAgICB0cnluZXh0aXAoY29ubiwgc29ja2luZGV4LCAxKTsKICAgICAgIH0KICAgICB9Ci0gICAgZWxzZSBpZihyYyA9PSBDVVJMX0NTRUxFQ1RfT1VUKSB7CisgICAgZWxzZSBpZihyYyA9PSBDVVJMX0NTRUxFQ1RfT1VUIHx8IGNvbm4tPmJpdHMudGNwX2Zhc3RvcGVuKSB7CiAgICAgICBpZih2ZXJpZnljb25uZWN0KGNvbm4tPnRlbXBzb2NrW2ldLCAmZXJyb3IpKSB7CiAgICAgICAgIC8qIHdlIGFyZSBjb25uZWN0ZWQgd2l0aCBUQ1AsIGF3ZXNvbWUhICovCiAKQEAgLTg0MSw2ICs4NDIsOCBAQAogICBpZihyZXN1bHQpIHsKICAgICAvKiBubyBtb3JlIGFkZHJlc3NlcyB0byB0cnkgKi8KIAorICAgIGNvbnN0IGNoYXIqIGhvc3RuYW1lOworCiAgICAgLyogaWYgdGhlIGZpcnN0IGFkZHJlc3MgZmFtaWx5IHJ1bnMgb3V0IG9mIGFkZHJlc3NlcyB0byB0cnkgYmVmb3JlCiAgICAgICAgdGhlIGhhcHB5IGV5ZWJhbGwgdGltZW91dCwgZ28gYWhlYWQgYW5kIHRyeSB0aGUgbmV4dCBmYW1pbHkgbm93ICovCiAgICAgaWYoY29ubi0+dGVtcGFkZHJbMV0gPT0gTlVMTCkgewpAQCAtODQ5LDIwICs4NTIsMjcgQEAKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKKyAgICBpZihjb25uLT5iaXRzLnByb3h5KQorICAgICAgaG9zdG5hbWUgPSBjb25uLT5wcm94eS5uYW1lOworICAgIGVsc2UgaWYoY29ubi0+Yml0cy5jb25uX3RvX2hvc3QpCisgICAgICBob3N0bmFtZSA9IGNvbm4tPmNvbm5fdG9faG9zdC5uYW1lOworICAgIGVsc2UKKyAgICAgIGhvc3RuYW1lID0gY29ubi0+aG9zdC5uYW1lOworCiAgICAgZmFpbGYoZGF0YSwgIkZhaWxlZCB0byBjb25uZWN0IHRvICVzIHBvcnQgJWxkOiAlcyIsCi0gICAgICAgICAgY29ubi0+Yml0cy5wcm94eT9jb25uLT5wcm94eS5uYW1lOmNvbm4tPmhvc3QubmFtZSwKLSAgICAgICAgICBjb25uLT5wb3J0LCBDdXJsX3N0cmVycm9yKGNvbm4sIGVycm9yKSk7CisgICAgICAgIGhvc3RuYW1lLCBjb25uLT5wb3J0LCBDdXJsX3N0cmVycm9yKGNvbm4sIGVycm9yKSk7CiAgIH0KIAogICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgdm9pZCB0Y3Bub2RlbGF5KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKLSAgICAgICAgICAgICAgICAgICAgICAgY3VybF9zb2NrZXRfdCBzb2NrZmQpCit2b2lkIEN1cmxfdGNwbm9kZWxheShzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGN1cmxfc29ja2V0X3Qgc29ja2ZkKQogewotI2lmZGVmIFRDUF9OT0RFTEFZCi0gIHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhPSBjb25uLT5kYXRhOwotICBjdXJsX3NvY2tsZW5fdCBvbm9mZiA9IChjdXJsX3NvY2tsZW5fdCkgZGF0YS0+c2V0LnRjcF9ub2RlbGF5OworI2lmIGRlZmluZWQoVENQX05PREVMQVkpCisjaWYgIWRlZmluZWQoQ1VSTF9ESVNBQkxFX1ZFUkJPU0VfU1RSSU5HUykKKyAgc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEgPSBjb25uLT5kYXRhOworI2VuZGlmCisgIGN1cmxfc29ja2xlbl90IG9ub2ZmID0gKGN1cmxfc29ja2xlbl90KSAxOwogICBpbnQgbGV2ZWwgPSBJUFBST1RPX1RDUDsKIAogI2lmIDAKQEAgLTg3OCw2ICs4ODgsMTAgQEAKICAgICBsZXZlbCA9IHBlLT5wX3Byb3RvOwogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKENVUkxfRElTQUJMRV9WRVJCT1NFX1NUUklOR1MpCisgICh2b2lkKSBjb25uOworI2VuZGlmCisKICAgaWYoc2V0c29ja29wdChzb2NrZmQsIGxldmVsLCBUQ1BfTk9ERUxBWSwgKHZvaWQgKikmb25vZmYsCiAgICAgICAgICAgICAgICAgc2l6ZW9mKG9ub2ZmKSkgPCAwKQogICAgIGluZm9mKGRhdGEsICJDb3VsZCBub3Qgc2V0IFRDUF9OT0RFTEFZOiAlc1xuIiwKQEAgLTkxMyw3ICs5MjcsNyBAQAogLyogV2hlbiB5b3UgcnVuIGEgcHJvZ3JhbSB0aGF0IHVzZXMgdGhlIFdpbmRvd3MgU29ja2V0cyBBUEksIHlvdSBtYXkKICAgIGV4cGVyaWVuY2Ugc2xvdyBwZXJmb3JtYW5jZSB3aGVuIHlvdSBjb3B5IGRhdGEgdG8gYSBUQ1Agc2VydmVyLgogCi0gICBodHRwOi8vc3VwcG9ydC5taWNyb3NvZnQuY29tL2tiLzgyMzc2NAorICAgaHR0cHM6Ly9zdXBwb3J0Lm1pY3Jvc29mdC5jb20va2IvODIzNzY0CiAKICAgIFdvcmstYXJvdW5kOiBNYWtlIHRoZSBTb2NrZXQgU2VuZCBCdWZmZXIgU2l6ZSBMYXJnZXIgVGhhbiB0aGUgUHJvZ3JhbSBTZW5kCiAgICBCdWZmZXIgU2l6ZQpAQCAtOTQ5LDE2ICs5NjMsMjEgQEAKICAgICAgICAgZGV0ZWN0T3NTdGF0ZSA9IERFVEVDVF9PU19WSVNUQV9PUl9MQVRFUjsKICAgICB9CiAjZWxzZQotICAgIFVMT05HTE9ORyBtYWpvclZlcnNpb25NYXNrOworICAgIFVMT05HTE9ORyBjbTsKICAgICBPU1ZFUlNJT05JTkZPRVggb3N2ZXI7CiAKICAgICBtZW1zZXQoJm9zdmVyLCAwLCBzaXplb2Yob3N2ZXIpKTsKICAgICBvc3Zlci5kd09TVmVyc2lvbkluZm9TaXplID0gc2l6ZW9mKG9zdmVyKTsKICAgICBvc3Zlci5kd01ham9yVmVyc2lvbiA9IG1ham9yVmVyc2lvbjsKLSAgICBtYWpvclZlcnNpb25NYXNrID0gVmVyU2V0Q29uZGl0aW9uTWFzaygwLCBWRVJfTUFKT1JWRVJTSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZFUl9HUkVBVEVSX0VRVUFMKTsKIAotICAgIGlmKFZlcmlmeVZlcnNpb25JbmZvKCZvc3ZlciwgVkVSX01BSk9SVkVSU0lPTiwgbWFqb3JWZXJzaW9uTWFzaykpCisgICAgY20gPSBWZXJTZXRDb25kaXRpb25NYXNrKDAsIFZFUl9NQUpPUlZFUlNJT04sIFZFUl9HUkVBVEVSX0VRVUFMKTsKKyAgICBjbSA9IFZlclNldENvbmRpdGlvbk1hc2soY20sIFZFUl9NSU5PUlZFUlNJT04sIFZFUl9HUkVBVEVSX0VRVUFMKTsKKyAgICBjbSA9IFZlclNldENvbmRpdGlvbk1hc2soY20sIFZFUl9TRVJWSUNFUEFDS01BSk9SLCBWRVJfR1JFQVRFUl9FUVVBTCk7CisgICAgY20gPSBWZXJTZXRDb25kaXRpb25NYXNrKGNtLCBWRVJfU0VSVklDRVBBQ0tNSU5PUiwgVkVSX0dSRUFURVJfRVFVQUwpOworCisgICAgaWYoVmVyaWZ5VmVyc2lvbkluZm8oJm9zdmVyLCAoVkVSX01BSk9SVkVSU0lPTiB8IFZFUl9NSU5PUlZFUlNJT04gfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZFUl9TRVJWSUNFUEFDS01BSk9SIHwgVkVSX1NFUlZJQ0VQQUNLTUlOT1IpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNtKSkKICAgICAgIGRldGVjdE9zU3RhdGUgPSBERVRFQ1RfT1NfVklTVEFfT1JfTEFURVI7CiAgICAgZWxzZQogICAgICAgZGV0ZWN0T3NTdGF0ZSA9IERFVEVDVF9PU19QUkVWSVNUQTsKQEAgLTk5MCw3ICsxMDA5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VybF9zb2NrZXRfdCAqc29ja3ApCiB7CiAgIHN0cnVjdCBDdXJsX3NvY2thZGRyX2V4IGFkZHI7Ci0gIGludCByYzsKKyAgaW50IHJjID0gLTE7CiAgIGludCBlcnJvciA9IDA7CiAgIGJvb2wgaXNjb25uZWN0ZWQgPSBGQUxTRTsKICAgc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEgPSBjb25uLT5kYXRhOwpAQCAtMTAyOCw3ICsxMDQ3LDcgQEAKICAgaXNfdGNwID0gKGFkZHIuZmFtaWx5ID09IEFGX0lORVQpICYmIGFkZHIuc29ja3R5cGUgPT0gU09DS19TVFJFQU07CiAjZW5kaWYKICAgaWYoaXNfdGNwICYmIGRhdGEtPnNldC50Y3Bfbm9kZWxheSkKLSAgICB0Y3Bub2RlbGF5KGNvbm4sIHNvY2tmZCk7CisgICAgQ3VybF90Y3Bub2RlbGF5KGNvbm4sIHNvY2tmZCk7CiAKICAgbm9zaWdwaXBlKGNvbm4sIHNvY2tmZCk7CiAKQEAgLTEwNzksNyArMTA5OCwyNiBAQAogCiAgIC8qIENvbm5lY3QgVENQIHNvY2tldHMsIGJpbmQgVURQICovCiAgIGlmKCFpc2Nvbm5lY3RlZCAmJiAoY29ubi0+c29ja3R5cGUgPT0gU09DS19TVFJFQU0pKSB7Ci0gICAgcmMgPSBjb25uZWN0KHNvY2tmZCwgJmFkZHIuc2FfYWRkciwgYWRkci5hZGRybGVuKTsKKyAgICBpZihjb25uLT5iaXRzLnRjcF9mYXN0b3BlbikgeworI2lmIGRlZmluZWQoQ09OTkVDVF9EQVRBX0lERU1QT1RFTlQpIC8qIE9TIFggKi8KKyAgICAgIHNhX2VuZHBvaW50c190IGVuZHBvaW50czsKKyAgICAgIGVuZHBvaW50cy5zYWVfc3JjaWYgPSAwOworICAgICAgZW5kcG9pbnRzLnNhZV9zcmNhZGRyID0gTlVMTDsKKyAgICAgIGVuZHBvaW50cy5zYWVfc3JjYWRkcmxlbiA9IDA7CisgICAgICBlbmRwb2ludHMuc2FlX2RzdGFkZHIgPSAmYWRkci5zYV9hZGRyOworICAgICAgZW5kcG9pbnRzLnNhZV9kc3RhZGRybGVuID0gYWRkci5hZGRybGVuOworCisgICAgICByYyA9IGNvbm5lY3R4KHNvY2tmZCwgJmVuZHBvaW50cywgU0FFX0FTU09DSURfQU5ZLAorICAgICAgICAgICAgICAgICAgICBDT05ORUNUX1JFU1VNRV9PTl9SRUFEX1dSSVRFIHwgQ09OTkVDVF9EQVRBX0lERU1QT1RFTlQsCisgICAgICAgICAgICAgICAgICAgIE5VTEwsIDAsIE5VTEwsIE5VTEwpOworI2VsaWYgZGVmaW5lZChNU0dfRkFTVE9QRU4pIC8qIExpbnV4ICovCisgICAgICByYyA9IDA7IC8qIERvIG5vdGhpbmcgKi8KKyNlbmRpZgorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJjID0gY29ubmVjdChzb2NrZmQsICZhZGRyLnNhX2FkZHIsIGFkZHIuYWRkcmxlbik7CisgICAgfQorCiAgICAgaWYoLTEgPT0gcmMpCiAgICAgICBlcnJvciA9IFNPQ0tFUlJOTzsKICAgfQpAQCAtMTIzOCwxMCArMTI3NiwxMCBAQAogICAgIH0KIC8qIE1pbml4IDMuMSBkb2Vzbid0IHN1cHBvcnQgYW55IGZsYWdzIG9uIHJlY3Y7IGp1c3QgYXNzdW1lIHNvY2tldCBpcyBPSyAqLwogI2lmZGVmIE1TR19QRUVLCi0gICAgZWxzZSB7CisgICAgZWxzZSBpZihzb2NrZmQgIT0gQ1VSTF9TT0NLRVRfQkFEKSB7CiAgICAgICAvKiB1c2UgdGhlIHNvY2tldCAqLwogICAgICAgY2hhciBidWY7Ci0gICAgICBpZihyZWN2KChSRUNWX1RZUEVfQVJHMSljLT5zb2NrW0ZJUlNUU09DS0VUXSwgKFJFQ1ZfVFlQRV9BUkcyKSZidWYsCisgICAgICBpZihyZWN2KChSRUNWX1RZUEVfQVJHMSlzb2NrZmQsIChSRUNWX1RZUEVfQVJHMikmYnVmLAogICAgICAgICAgICAgICAoUkVDVl9UWVBFX0FSRzMpMSwgKFJFQ1ZfVFlQRV9BUkc0KU1TR19QRUVLKSA9PSAwKSB7CiAgICAgICAgIHJldHVybiBDVVJMX1NPQ0tFVF9CQUQ7ICAgLyogRklOIHJlY2VpdmVkICovCiAgICAgICB9CmRpZmYgLS1naXQgYS9saWIvY29ubmVjdC5oIGIvbGliL2Nvbm5lY3QuaAppbmRleCA5MTY0NmM3Li5mM2Q0YWM3IDEwMDY0NAotLS0gYS9saWIvY29ubmVjdC5oCisrKyBiL2xpYi9jb25uZWN0LmgKQEAgLTcsMTEgKzcsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC01Niw3ICs1Niw3IEBACiAvKiBXaGVuIHlvdSBydW4gYSBwcm9ncmFtIHRoYXQgdXNlcyB0aGUgV2luZG93cyBTb2NrZXRzIEFQSSwgeW91IG1heQogICAgZXhwZXJpZW5jZSBzbG93IHBlcmZvcm1hbmNlIHdoZW4geW91IGNvcHkgZGF0YSB0byBhIFRDUCBzZXJ2ZXIuCiAKLSAgIGh0dHA6Ly9zdXBwb3J0Lm1pY3Jvc29mdC5jb20va2IvODIzNzY0CisgICBodHRwczovL3N1cHBvcnQubWljcm9zb2Z0LmNvbS9rYi84MjM3NjQKIAogICAgV29yay1hcm91bmQ6IE1ha2UgdGhlIFNvY2tldCBTZW5kIEJ1ZmZlciBTaXplIExhcmdlciBUaGFuIHRoZSBQcm9ncmFtIFNlbmQKICAgIEJ1ZmZlciBTaXplCkBAIC0xMDIsNiArMTAyLDggQEAKICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBDdXJsX3NvY2thZGRyX2V4ICphZGRyLAogICAgICAgICAgICAgICAgICAgICAgY3VybF9zb2NrZXRfdCAqc29ja2ZkKTsKIAordm9pZCBDdXJsX3RjcG5vZGVsYXkoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBjdXJsX3NvY2tldF90IHNvY2tmZCk7CisKICNpZmRlZiBDVVJMREVCVUcKIC8qCiAgKiBDdXJsX2Nvbm5jbG9zZSgpIHNldHMgdGhlIGJpdC5jbG9zZSBiaXQgdG8gVFJVRSB3aXRoIGFuIGV4cGxhbmF0aW9uLgpkaWZmIC0tZ2l0IGEvbGliL2NvbnRlbnRfZW5jb2RpbmcuYyBiL2xpYi9jb250ZW50X2VuY29kaW5nLmMKaW5kZXggYzY4ZTZlNS4uMmQzMDgxNiAxMDA2NDQKLS0tIGEvbGliL2NvbnRlbnRfZW5jb2RpbmcuYworKysgYi9saWIvY29udGVudF9lbmNvZGluZy5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9jb250ZW50X2VuY29kaW5nLmggYi9saWIvY29udGVudF9lbmNvZGluZy5oCmluZGV4IDUwMWY2YzguLjNmYWRkMjggMTAwNjQ0Ci0tLSBhL2xpYi9jb250ZW50X2VuY29kaW5nLmgKKysrIGIvbGliL2NvbnRlbnRfZW5jb2RpbmcuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9jb29raWUuYyBiL2xpYi9jb29raWUuYwppbmRleCBlYTcxN2E2Li40ZTRjMjkwIDEwMDY0NAotLS0gYS9saWIvY29va2llLmMKKysrIGIvbGliL2Nvb2tpZS5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtODMsNyArODMsMTAgQEAKIAogI2lmICFkZWZpbmVkKENVUkxfRElTQUJMRV9IVFRQKSAmJiAhZGVmaW5lZChDVVJMX0RJU0FCTEVfQ09PS0lFUykKIAotI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCisjaWZkZWYgVVNFX0xJQlBTTAorIyBpbmNsdWRlIDxsaWJwc2wuaD4KKyNlbmRpZgorCiAjaW5jbHVkZSAidXJsZGF0YS5oIgogI2luY2x1ZGUgImNvb2tpZS5oIgogI2luY2x1ZGUgInN0cmVxdWFsLmgiCkBAIC05Niw3ICs5OSw4IEBACiAjaW5jbHVkZSAiY3VybF9tZW1yY2hyLmgiCiAjaW5jbHVkZSAiaW5ldF9wdG9uLmgiCiAKLS8qIFRoZSBsYXN0ICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZTogKi8KKy8qIFRoZSBsYXN0IDMgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlIGluIHRoaXMgb3JkZXIgKi8KKyNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgogI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCiAjaW5jbHVkZSAibWVtZGVidWcuaCIKIApAQCAtMzA0LDcgKzMwOCw3IEBACiAgIHB2ID0gTlVMTDsKICAgd2hpbGUoY28pIHsKICAgICBueCA9IGNvLT5uZXh0OwotICAgIGlmKChjby0+ZXhwaXJlc3RyIHx8IGNvLT5tYXhhZ2UpICYmIGNvLT5leHBpcmVzIDwgbm93KSB7CisgICAgaWYoY28tPmV4cGlyZXMgJiYgY28tPmV4cGlyZXMgPCBub3cpIHsKICAgICAgIGlmKGNvID09IGNvb2tpZXMtPmNvb2tpZXMpIHsKICAgICAgICAgY29va2llcy0+Y29va2llcyA9IGNvLT5uZXh0OwogICAgICAgfQpAQCAtMzc4LDYgKzM4MiwxMCBAQAogICBib29sIHJlcGxhY2Vfb2xkID0gRkFMU0U7CiAgIGJvb2wgYmFkY29va2llID0gRkFMU0U7IC8qIGNvb2tpZXMgYXJlIGdvb2QgYnkgZGVmYXVsdC4gbW1tbW0geXVtbXkgKi8KIAorI2lmZGVmIFVTRV9MSUJQU0wKKyAgY29uc3QgcHNsX2N0eF90ICpwc2w7CisjZW5kaWYKKwogI2lmZGVmIENVUkxfRElTQUJMRV9WRVJCT1NFX1NUUklOR1MKICAgKHZvaWQpZGF0YTsKICNlbmRpZgpAQCAtNDA4LDcgKzQxNiw3IEBACiAgICAgZG8gewogICAgICAgLyogd2UgaGF2ZSBhIDx3aGF0Pj08dGhpcz4gcGFpciBvciBhIHN0YW5kLWFsb25lIHdvcmQgaGVyZSAqLwogICAgICAgbmFtZVswXT13aGF0WzBdPTA7IC8qIGluaXQgdGhlIGJ1ZmZlcnMgKi8KLSAgICAgIGlmKDEgPD0gc3NjYW5mKHB0ciwgIiUiIE1BWF9OQU1FX1RYVCAiW147XHJcbiA9XSA9JSIKKyAgICAgIGlmKDEgPD0gc3NjYW5mKHB0ciwgIiUiIE1BWF9OQU1FX1RYVCAiW147XHJcbj1dID0lIgogICAgICAgICAgICAgICAgICAgICAgTUFYX0NPT0tJRV9MSU5FX1RYVCAiW147XHJcbl0iLAogICAgICAgICAgICAgICAgICAgICAgbmFtZSwgd2hhdCkpIHsKICAgICAgICAgLyogVXNlIHN0cnN0b3JlKCkgYmVsb3cgdG8gcHJvcGVybHkgZGVhbCB3aXRoIHJlY2VpdmVkIGNvb2tpZQpAQCAtNDE4LDE1ICs0MjYsMjQgQEAKICAgICAgICAgYm9vbCBkb25lID0gRkFMU0U7CiAgICAgICAgIGJvb2wgc2VwOwogICAgICAgICBzaXplX3QgbGVuPXN0cmxlbih3aGF0KTsKLSAgICAgICAgY29uc3QgY2hhciAqZW5kb2ZuID0gJnB0clsgc3RybGVuKG5hbWUpIF07Ci0KLSAgICAgICAgLyogc2tpcCB0cmFpbGluZyBzcGFjZXMgaW4gbmFtZSAqLwotICAgICAgICB3aGlsZSgqZW5kb2ZuICYmIElTQkxBTksoKmVuZG9mbikpCi0gICAgICAgICAgZW5kb2ZuKys7CisgICAgICAgIHNpemVfdCBubGVuID0gc3RybGVuKG5hbWUpOworICAgICAgICBjb25zdCBjaGFyICplbmRvZm4gPSAmcHRyWyBubGVuIF07CiAKICAgICAgICAgLyogbmFtZSBlbmRzIHdpdGggYSAnPScgPyAqLwogICAgICAgICBzZXAgPSAoKmVuZG9mbiA9PSAnPScpP1RSVUU6RkFMU0U7CiAKKyAgICAgICAgaWYobmxlbikgeworICAgICAgICAgIGVuZG9mbi0tOyAvKiBtb3ZlIHRvIHRoZSBsYXN0IGNoYXJhY3RlciAqLworICAgICAgICAgIGlmKElTQkxBTksoKmVuZG9mbikpIHsKKyAgICAgICAgICAgIC8qIHNraXAgdHJhaWxpbmcgc3BhY2VzIGluIG5hbWUgKi8KKyAgICAgICAgICAgIHdoaWxlKCplbmRvZm4gJiYgSVNCTEFOSygqZW5kb2ZuKSAmJiBubGVuKSB7CisgICAgICAgICAgICAgIGVuZG9mbi0tOworICAgICAgICAgICAgICBubGVuLS07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBuYW1lW25sZW5dPTA7IC8qIG5ldyBlbmQgb2YgbmFtZSAqLworICAgICAgICAgIH0KKyAgICAgICAgfQorCiAgICAgICAgIC8qIFN0cmlwIG9mZiB0cmFpbGluZyB3aGl0ZXNwYWNlIGZyb20gdGhlICd3aGF0JyAqLwogICAgICAgICB3aGlsZShsZW4gJiYgSVNCTEFOSyh3aGF0W2xlbi0xXSkpIHsKICAgICAgICAgICB3aGF0W2xlbi0xXT0wOwpAQCAtNDM4LDcgKzQ1NSwxNiBAQAogICAgICAgICB3aGlsZSgqd2hhdHB0ciAmJiBJU0JMQU5LKCp3aGF0cHRyKSkKICAgICAgICAgICB3aGF0cHRyKys7CiAKLSAgICAgICAgaWYoIWxlbikgeworICAgICAgICBpZighY28tPm5hbWUgJiYgc2VwKSB7CisgICAgICAgICAgLyogVGhlIHZlcnkgZmlyc3QgbmFtZS92YWx1ZSBwYWlyIGlzIHRoZSBhY3R1YWwgY29va2llIG5hbWUgKi8KKyAgICAgICAgICBjby0+bmFtZSA9IHN0cmR1cChuYW1lKTsKKyAgICAgICAgICBjby0+dmFsdWUgPSBzdHJkdXAod2hhdHB0cik7CisgICAgICAgICAgaWYoIWNvLT5uYW1lIHx8ICFjby0+dmFsdWUpIHsKKyAgICAgICAgICAgIGJhZGNvb2tpZSA9IFRSVUU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZighbGVuKSB7CiAgICAgICAgICAgLyogdGhpcyB3YXMgYSAiPG5hbWU+PSIgd2l0aCBubyBjb250ZW50LCBhbmQgd2UgbXVzdCBhbGxvdwogICAgICAgICAgICAgICdzZWN1cmUnIGFuZCAnaHR0cG9ubHknIHNwZWNpZmllZCB0aGlzIHdlaXJkbHkgKi8KICAgICAgICAgICBkb25lID0gVFJVRTsKQEAgLTUzMiwxNCArNTU4LDYgQEAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBlbHNlIGlmKCFjby0+bmFtZSkgewotICAgICAgICAgIGNvLT5uYW1lID0gc3RyZHVwKG5hbWUpOwotICAgICAgICAgIGNvLT52YWx1ZSA9IHN0cmR1cCh3aGF0cHRyKTsKLSAgICAgICAgICBpZighY28tPm5hbWUgfHwgIWNvLT52YWx1ZSkgewotICAgICAgICAgICAgYmFkY29va2llID0gVFJVRTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIH0KLSAgICAgICAgfQogICAgICAgICAvKgogICAgICAgICAgIGVsc2UgdGhpcyBpcyB0aGUgc2Vjb25kIChvciBtb3JlKSBuYW1lIHdlIGRvbid0IGtub3cKICAgICAgICAgICBhYm91dCEgKi8KQEAgLTc3Niw2ICs3OTQsMjEgQEAKICAgLyogYXQgZmlyc3QsIHJlbW92ZSBleHBpcmVkIGNvb2tpZXMgKi8KICAgcmVtb3ZlX2V4cGlyZWQoYyk7CiAKKyNpZmRlZiBVU0VfTElCUFNMCisgIC8qIENoZWNrIGlmIHRoZSBkb21haW4gaXMgYSBQdWJsaWMgU3VmZml4IGFuZCBpZiB5ZXMsIGlnbm9yZSB0aGUgY29va2llLgorICAgICBUaGlzIG5lZWRzIGEgbGlicHNsIGNvbXBpbGVkIHdpdGggYnVpbHRpbiBkYXRhLiAqLworICBpZihkb21haW4gJiYgY28tPmRvbWFpbiAmJiAhaXNpcChjby0+ZG9tYWluKSkgeworICAgIGlmKCgocHNsID0gcHNsX2J1aWx0aW4oKSkgIT0gTlVMTCkKKyAgICAgICAgJiYgIXBzbF9pc19jb29raWVfZG9tYWluX2FjY2VwdGFibGUocHNsLCBkb21haW4sIGNvLT5kb21haW4pKSB7CisgICAgICBpbmZvZihkYXRhLAorICAgICAgICAgICAgImNvb2tpZSAnJXMnIGRyb3BwZWQsIGRvbWFpbiAnJXMnIG11c3Qgbm90IHNldCBjb29raWVzIGZvciAnJXMnXG4iLAorICAgICAgICAgICAgY28tPm5hbWUsIGRvbWFpbiwgY28tPmRvbWFpbik7CisgICAgICBmcmVlY29va2llKGNvKTsKKyAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgfQorI2VuZGlmCisKICAgY2xpc3QgPSBjLT5jb29raWVzOwogICByZXBsYWNlX29sZCA9IEZBTFNFOwogICB3aGlsZShjbGlzdCkgewpAQCAtMTI0Niw2ICsxMjc5LDcgQEAKICAgc3RydWN0IENvb2tpZSAqY287CiAgIEZJTEUgKm91dDsKICAgYm9vbCB1c2Vfc3Rkb3V0PUZBTFNFOworICBjaGFyICpmb3JtYXRfcHRyOwogCiAgIGlmKChOVUxMID09IGMpIHx8ICgwID09IGMtPm51bWNvb2tpZXMpKQogICAgIC8qIElmIHRoZXJlIGFyZSBubyBrbm93biBjb29raWVzLCB3ZSBkb24ndCB3cml0ZSBvciBldmVuIGNyZWF0ZSBhbnkKQEAgLTEyNjYsMjkgKzEzMDAsMjMgQEAKICAgICAgIHJldHVybiAxOyAvKiBmYWlsdXJlICovCiAgIH0KIAotICBpZihjKSB7Ci0gICAgY2hhciAqZm9ybWF0X3B0cjsKKyAgZnB1dHMoIiMgTmV0c2NhcGUgSFRUUCBDb29raWUgRmlsZVxuIgorICAgICAgICAiIyBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2h0dHAtY29va2llcy5odG1sXG4iCisgICAgICAgICIjIFRoaXMgZmlsZSB3YXMgZ2VuZXJhdGVkIGJ5IGxpYmN1cmwhIEVkaXQgYXQgeW91ciBvd24gcmlzay5cblxuIiwKKyAgICAgICAgb3V0KTsKIAotICAgIGZwdXRzKCIjIE5ldHNjYXBlIEhUVFAgQ29va2llIEZpbGVcbiIKLSAgICAgICAgICAiIyBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvaHR0cC1jb29raWVzLmh0bWxcbiIKLSAgICAgICAgICAiIyBUaGlzIGZpbGUgd2FzIGdlbmVyYXRlZCBieSBsaWJjdXJsISBFZGl0IGF0IHlvdXIgb3duIHJpc2suXG5cbiIsCi0gICAgICAgICAgb3V0KTsKLSAgICBjbyA9IGMtPmNvb2tpZXM7Ci0KLSAgICB3aGlsZShjbykgewotICAgICAgaWYoIWNvLT5kb21haW4pCi0gICAgICAgIGNvbnRpbnVlOwotICAgICAgZm9ybWF0X3B0ciA9IGdldF9uZXRzY2FwZV9mb3JtYXQoY28pOwotICAgICAgaWYoZm9ybWF0X3B0ciA9PSBOVUxMKSB7Ci0gICAgICAgIGZwcmludGYob3V0LCAiI1xuIyBGYXRhbCBsaWJjdXJsIGVycm9yXG4iKTsKLSAgICAgICAgaWYoIXVzZV9zdGRvdXQpCi0gICAgICAgICAgZmNsb3NlKG91dCk7CisgIGZvcihjbyA9IGMtPmNvb2tpZXM7IGNvOyBjbyA9IGNvLT5uZXh0KSB7CisgICAgaWYoIWNvLT5kb21haW4pCisgICAgICBjb250aW51ZTsKKyAgICBmb3JtYXRfcHRyID0gZ2V0X25ldHNjYXBlX2Zvcm1hdChjbyk7CisgICAgaWYoZm9ybWF0X3B0ciA9PSBOVUxMKSB7CisgICAgICBmcHJpbnRmKG91dCwgIiNcbiMgRmF0YWwgbGliY3VybCBlcnJvclxuIik7CisgICAgICBpZighdXNlX3N0ZG91dCkKKyAgICAgICAgZmNsb3NlKG91dCk7CiAgICAgICAgIHJldHVybiAxOwotICAgICAgfQotICAgICAgZnByaW50ZihvdXQsICIlc1xuIiwgZm9ybWF0X3B0cik7Ci0gICAgICBmcmVlKGZvcm1hdF9wdHIpOwotICAgICAgY289Y28tPm5leHQ7CiAgICAgfQorICAgIGZwcmludGYob3V0LCAiJXNcbiIsIGZvcm1hdF9wdHIpOworICAgIGZyZWUoZm9ybWF0X3B0cik7CiAgIH0KIAogICBpZighdXNlX3N0ZG91dCkKQEAgLTEzMDgsOSArMTMzNiw3IEBACiAgICAgICAoZGF0YS0+Y29va2llcy0+bnVtY29va2llcyA9PSAwKSkKICAgICByZXR1cm4gTlVMTDsKIAotICBjID0gZGF0YS0+Y29va2llcy0+Y29va2llczsKLQotICB3aGlsZShjKSB7CisgIGZvcihjID0gZGF0YS0+Y29va2llcy0+Y29va2llczsgYzsgYyA9IGMtPm5leHQpIHsKICAgICBpZighYy0+ZG9tYWluKQogICAgICAgY29udGludWU7CiAgICAgbGluZSA9IGdldF9uZXRzY2FwZV9mb3JtYXQoYyk7CkBAIC0xMzI1LDcgKzEzNTEsNiBAQAogICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGxpc3QgPSBiZWc7Ci0gICAgYyA9IGMtPm5leHQ7CiAgIH0KIAogICByZXR1cm4gbGlzdDsKZGlmZiAtLWdpdCBhL2xpYi9jb29raWUuaCBiL2xpYi9jb29raWUuaAppbmRleCBiZDg5MDgyLi43NGE5MjI0IDEwMDY0NAotLS0gYS9saWIvY29va2llLmgKKysrIGIvbGliL2Nvb2tpZS5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL2N1cmxfYWRkcmluZm8uYyBiL2xpYi9jdXJsX2FkZHJpbmZvLmMKaW5kZXggNjYyN2E2Yi4uOGZhMGM4NCAxMDA2NDQKLS0tIGEvbGliL2N1cmxfYWRkcmluZm8uYworKysgYi9saWIvY3VybF9hZGRyaW5mby5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNTAsMTAgKzUwLDkgQEAKICNpbmNsdWRlICJjdXJsX2FkZHJpbmZvLmgiCiAjaW5jbHVkZSAiaW5ldF9wdG9uLmgiCiAjaW5jbHVkZSAid2Fybmxlc3MuaCIKKy8qIFRoZSBsYXN0IDMgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlIGluIHRoaXMgb3JkZXIgKi8KICNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgogI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCi0KLS8qIFRoZSBsYXN0ICNpbmNsdWRlIGZpbGUgc2hvdWxkIGJlOiAqLwogI2luY2x1ZGUgIm1lbWRlYnVnLmgiCiAKIC8qCkBAIC01MjEsNyArNTIwLDExIEBACiBjdXJsX2RvZnJlZWFkZHJpbmZvKHN0cnVjdCBhZGRyaW5mbyAqZnJlZXRoaXMsCiAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lLCBjb25zdCBjaGFyICpzb3VyY2UpCiB7CisjaWZkZWYgVVNFX0xXSVBTT0NLCisgIGx3aXBfZnJlZWFkZHJpbmZvKGZyZWV0aGlzKTsKKyNlbHNlCiAgIChmcmVlYWRkcmluZm8pKGZyZWV0aGlzKTsKKyNlbmRpZgogICBjdXJsX21lbWxvZygiQUREUiAlczolZCBmcmVlYWRkcmluZm8oJXApXG4iLAogICAgICAgICAgICAgICBzb3VyY2UsIGxpbmUsICh2b2lkICopZnJlZXRoaXMpOwogfQpAQCAtNTQ0LDcgKzU0NywxMSBAQAogICAgICAgICAgICAgICAgICAgIHN0cnVjdCBhZGRyaW5mbyAqKnJlc3VsdCwKICAgICAgICAgICAgICAgICAgICBpbnQgbGluZSwgY29uc3QgY2hhciAqc291cmNlKQogeworI2lmZGVmIFVTRV9MV0lQU09DSworICBpbnQgcmVzPWx3aXBfZ2V0YWRkcmluZm8oaG9zdG5hbWUsIHNlcnZpY2UsIGhpbnRzLCByZXN1bHQpOworI2Vsc2UKICAgaW50IHJlcz0oZ2V0YWRkcmluZm8pKGhvc3RuYW1lLCBzZXJ2aWNlLCBoaW50cywgcmVzdWx0KTsKKyNlbmRpZgogICBpZigwID09IHJlcykKICAgICAvKiBzdWNjZXNzICovCiAgICAgY3VybF9tZW1sb2coIkFERFIgJXM6JWQgZ2V0YWRkcmluZm8oKSA9ICVwXG4iLApkaWZmIC0tZ2l0IGEvbGliL2N1cmxfYWRkcmluZm8uaCBiL2xpYi9jdXJsX2FkZHJpbmZvLmgKaW5kZXggNGVmODgyNy4uMDFmMjg2NCAxMDA2NDQKLS0tIGEvbGliL2N1cmxfYWRkcmluZm8uaAorKysgYi9saWIvY3VybF9hZGRyaW5mby5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtODMsNyArODMsOCBAQAogQ3VybF9hZGRyaW5mbyAqQ3VybF91bml4MmFkZHIoY29uc3QgY2hhciAqcGF0aCk7CiAjZW5kaWYKIAotI2lmIGRlZmluZWQoQ1VSTERFQlVHKSAmJiBkZWZpbmVkKEhBVkVfRlJFRUFERFJJTkZPKQorI2lmIGRlZmluZWQoQ1VSTERFQlVHKSAmJiBkZWZpbmVkKEhBVkVfR0VUQUREUklORk8pICYmIFwKKyAgICBkZWZpbmVkKEhBVkVfRlJFRUFERFJJTkZPKQogdm9pZAogY3VybF9kb2ZyZWVhZGRyaW5mbyhzdHJ1Y3QgYWRkcmluZm8gKmZyZWV0aGlzLAogICAgICAgICAgICAgICAgICAgICBpbnQgbGluZSwgY29uc3QgY2hhciAqc291cmNlKTsKZGlmZiAtLWdpdCBhL2xpYi9jdXJsX2Jhc2U2NC5oIGIvbGliL2N1cmxfYmFzZTY0LmgKaW5kZXggOTI4OTZmZS4uYzI2MjQxNyAxMDA2NDQKLS0tIGEvbGliL2N1cmxfYmFzZTY0LmgKKysrIGIvbGliL2N1cmxfYmFzZTY0LmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvY3VybF9jb25maWcuaCBiL2xpYi9jdXJsX2NvbmZpZy5oCmluZGV4IDY4NGE2MGQuLjA2NDlkZTggMTAwNjQ0Ci0tLSBhL2xpYi9jdXJsX2NvbmZpZy5oCisrKyBiL2xpYi9jdXJsX2NvbmZpZy5oCkBAIC00LDYgKzQsOSBAQAogLyogTG9jYXRpb24gb2YgZGVmYXVsdCBjYSBidW5kbGUgKi8KIC8qICN1bmRlZiBDVVJMX0NBX0JVTkRMRSAqLwogCisvKiBkZWZpbmUgIjEiIHRvIHVzZSBidWlsdCBpbiBDQSBzdG9yZSBvZiBTU0wgbGlicmFyeSAqLworLyogI3VuZGVmIENVUkxfQ0FfRkFMTEJBQ0sgKi8KKwogLyogTG9jYXRpb24gb2YgZGVmYXVsdCBjYSBwYXRoICovCiAjZGVmaW5lIENVUkxfQ0FfUEFUSCAiL3N5c3RlbS9ldGMvc2VjdXJpdHkvY2FjZXJ0cyIKIApAQCAtMTQ1LDE1ICsxNDgsMTggQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8Y3J5cHRvLmg+IGhlYWRlciBmaWxlLiAqLwogLyogI3VuZGVmIEhBVkVfQ1JZUFRPX0ggKi8KIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBDeWFTU0xfQ1RYX1VzZVN1cHBvcnRlZEN1cnZlJyBmdW5jdGlvbi4gKi8KKy8qICN1bmRlZiBIQVZFX0NZQVNTTF9DVFhfVVNFU1VQUE9SVEVEQ1VSVkUgKi8KKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxjeWFzc2wvZXJyb3Itc3NsLmg+IGhlYWRlciBmaWxlLiAqLwogLyogI3VuZGVmIEhBVkVfQ1lBU1NMX0VSUk9SX1NTTF9IICovCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgQ3lhU1NMX2dldF9wZWVyX2NlcnRpZmljYXRlJyBmdW5jdGlvbi4gKi8KKy8qICN1bmRlZiBIQVZFX0NZQVNTTF9HRVRfUEVFUl9DRVJUSUZJQ0FURSAqLworCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGN5YXNzbC9vcHRpb25zLmg+IGhlYWRlciBmaWxlLiAqLwogLyogI3VuZGVmIEhBVkVfQ1lBU1NMX09QVElPTlNfSCAqLwogCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYERFU19zZXRfb2RkX3Bhcml0eScgZnVuY3Rpb24uICovCi0jZGVmaW5lIEhBVkVfREVTX1NFVF9PRERfUEFSSVRZIDEKLQogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxkbGZjbi5oPiBoZWFkZXIgZmlsZS4gKi8KICNkZWZpbmUgSEFWRV9ETEZDTl9IIDEKIApAQCAtMTg4LDcgKzE5NCw3IEBACiAjZGVmaW5lIEhBVkVfRlJFRUFERFJJTkZPIDEKIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGZyZWVpZmFkZHJzIGZ1bmN0aW9uLiAqLwotLyogI3VuZGVmIEhBVkVfRlJFRUlGQUREUlMgKi8KKyNkZWZpbmUgSEFWRV9GUkVFSUZBRERSUyAxCiAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBmc2V0eGF0dHIgZnVuY3Rpb24uICovCiAjZGVmaW5lIEhBVkVfRlNFVFhBVFRSIDEKQEAgLTI0OCw3ICsyNTQsNyBAQAogI2RlZmluZSBIQVZFX0dFVEhPU1ROQU1FIDEKIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgYSB3b3JraW5nIGdldGlmYWRkcnMgZnVuY3Rpb24uICovCi0vKiAjdW5kZWYgSEFWRV9HRVRJRkFERFJTICovCisjZGVmaW5lIEhBVkVfR0VUSUZBRERSUyAxCiAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBnZXRuYW1laW5mbyBmdW5jdGlvbi4gKi8KICNkZWZpbmUgSEFWRV9HRVROQU1FSU5GTyAxCkBAIC0yODMsNiArMjg5LDEwIEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSBhIHdvcmtpbmcgZ210aW1lX3IgZnVuY3Rpb24uICovCiAjZGVmaW5lIEhBVkVfR01USU1FX1IgMQogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGdudXRsc19jZXJ0aWZpY2F0ZV9zZXRfeDUwOV9rZXlfZmlsZTInCisgICBmdW5jdGlvbi4gKi8KKy8qICN1bmRlZiBIQVZFX0dOVVRMU19DRVJUSUZJQ0FURV9TRVRfWDUwOV9LRVlfRklMRTIgKi8KKwogLyogaWYgeW91IGhhdmUgdGhlIGZ1bmN0aW9uIGdudXRsc19zcnBfdmVyaWZpZXIgKi8KIC8qICN1bmRlZiBIQVZFX0dOVVRMU19TUlAgKi8KIApAQCAtMzE3LDcgKzMyNyw3IEBACiAvKiAjdW5kZWYgSEFWRV9JRE5fRlJFRV9IICovCiAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8aWZhZGRycy5oPiBoZWFkZXIgZmlsZS4gKi8KLS8qICN1bmRlZiBIQVZFX0lGQUREUlNfSCAqLworI2RlZmluZSBIQVZFX0lGQUREUlNfSCAxCiAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgaWZfbmFtZXRvaW5kZXgnIGZ1bmN0aW9uLiAqLwogI2RlZmluZSBIQVZFX0lGX05BTUVUT0lOREVYIDEKQEAgLTM5NSw5ICs0MDUsNiBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBpZG4nIGxpYnJhcnkgKC1saWRuKS4gKi8KIC8qICN1bmRlZiBIQVZFX0xJQklETiAqLwogCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHJlc29sdmUnIGxpYnJhcnkgKC1scmVzb2x2ZSkuICovCi0vKiAjdW5kZWYgSEFWRV9MSUJSRVNPTFZFICovCi0KIC8qIERlZmluZSB0byAxIGlmIHVzaW5nIGxpYnJlc3NsLiAqLwogLyogI3VuZGVmIEhBVkVfTElCUkVTU0wgKi8KIApAQCAtNTI0LDcgKzUzMSw3IEBACiAjZGVmaW5lIEhBVkVfUFdEX0ggMQogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYFJBTkRfZWdkJyBmdW5jdGlvbi4gKi8KLS8qICN1bmRlZiBIQVZFX1JBTkRfRUdEICovCisjZGVmaW5lIEhBVkVfUkFORF9FR0QgMQogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYFJBTkRfc2NyZWVuJyBmdW5jdGlvbi4gKi8KIC8qICN1bmRlZiBIQVZFX1JBTkRfU0NSRUVOICovCkBAIC01NjMsNyArNTcwLDcgQEAKIC8qICN1bmRlZiBIQVZFX1NFVFNPQ0tPUFRfU09fTk9OQkxPQ0sgKi8KIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzZ3R0eS5oPiBoZWFkZXIgZmlsZS4gKi8KLSNkZWZpbmUgSEFWRV9TR1RUWV9IIDEKKy8qICN1bmRlZiBIQVZFX1NHVFRZX0ggKi8KIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIHNpZ2FjdGlvbiBmdW5jdGlvbi4gKi8KICNkZWZpbmUgSEFWRV9TSUdBQ1RJT04gMQpAQCAtNzYzLDYgKzc3MCwxOCBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIHdpbnNvY2suaCBoZWFkZXIgZmlsZS4gKi8KIC8qICN1bmRlZiBIQVZFX1dJTlNPQ0tfSCAqLwogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHdvbGZTU0x2M19jbGllbnRfbWV0aG9kJyBmdW5jdGlvbi4gKi8KKy8qICN1bmRlZiBIQVZFX1dPTEZTU0xWM19DTElFTlRfTUVUSE9EICovCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgd29sZlNTTF9DVFhfVXNlU3VwcG9ydGVkQ3VydmUnIGZ1bmN0aW9uLiAqLworLyogI3VuZGVmIEhBVkVfV09MRlNTTF9DVFhfVVNFU1VQUE9SVEVEQ1VSVkUgKi8KKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB3b2xmU1NMX2dldF9wZWVyX2NlcnRpZmljYXRlJyBmdW5jdGlvbi4gKi8KKy8qICN1bmRlZiBIQVZFX1dPTEZTU0xfR0VUX1BFRVJfQ0VSVElGSUNBVEUgKi8KKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB3b2xmU1NMX1VzZUFMUE4nIGZ1bmN0aW9uLiAqLworLyogI3VuZGVmIEhBVkVfV09MRlNTTF9VU0VBTFBOICovCisKIC8qIERlZmluZSB0aGlzIHN5bWJvbCBpZiB5b3VyIE9TIHN1cHBvcnRzIGNoYW5naW5nIHRoZSBjb250ZW50cyBvZiBhcmd2ICovCiAvKiAjdW5kZWYgSEFWRV9XUklUQUJMRV9BUkdWICovCiAKQEAgLTgwNyw3ICs4MjYsNyBAQAogI2RlZmluZSBQQUNLQUdFICJjdXJsIgogCiAvKiBEZWZpbmUgdG8gdGhlIGFkZHJlc3Mgd2hlcmUgYnVnIHJlcG9ydHMgZm9yIHRoaXMgcGFja2FnZSBzaG91bGQgYmUgc2VudC4gKi8KLSNkZWZpbmUgUEFDS0FHRV9CVUdSRVBPUlQgImEgc3VpdGFibGUgY3VybCBtYWlsaW5nIGxpc3Q6IGh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC8iCisjZGVmaW5lIFBBQ0tBR0VfQlVHUkVQT1JUICJhIHN1aXRhYmxlIGN1cmwgbWFpbGluZyBsaXN0OiBodHRwczovL2N1cmwuaGF4eC5zZS9tYWlsLyIKIAogLyogRGVmaW5lIHRvIHRoZSBmdWxsIG5hbWUgb2YgdGhpcyBwYWNrYWdlLiAqLwogI2RlZmluZSBQQUNLQUdFX05BTUUgImN1cmwiCkBAIC04ODEsOSArOTAwLDYgQEAKIC8qIFRoZSBzaXplIG9mIGBsb25nIGxvbmcnLCBhcyBjb21wdXRlZCBieSBzaXplb2YuICovCiAvKiAjdW5kZWYgU0laRU9GX0xPTkdfTE9ORyAqLwogCi0vKiBUaGUgc2l6ZSBvZiBgb2ZmX3QnLCBhcyBjb21wdXRlZCBieSBzaXplb2YuICovCi0jZGVmaW5lIFNJWkVPRl9PRkZfVCA4Ci0KIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBBTlNJIEMgaGVhZGVyIGZpbGVzLiAqLwogI2RlZmluZSBTVERDX0hFQURFUlMgMQogCkBAIC04OTksNyArOTE1LDcgQEAKIC8qIGlmIGF4VExTIGlzIGVuYWJsZWQgKi8KIC8qICN1bmRlZiBVU0VfQVhUTFMgKi8KIAotLyogaWYgQ3lhU1NMIGlzIGVuYWJsZWQgKi8KKy8qIGlmIEN5YVNTTC9Xb2xmU1NMIGlzIGVuYWJsZWQgKi8KIC8qICN1bmRlZiBVU0VfQ1lBU1NMICovCiAKIC8qIHRvIGVuYWJsZSBpT1MvTWFjIE9TIFggbmF0aXZlIFNTTC9UTFMgc3VwcG9ydCAqLwpAQCAtOTExLDYgKzkyNyw5IEBACiAvKiBpZiBHbnVUTFMgdXNlcyBuZXR0bGUgYXMgY3J5cHRvIGJhY2tlbmQgKi8KIC8qICN1bmRlZiBVU0VfR05VVExTX05FVFRMRSAqLwogCisvKiBQU0wgc3VwcG9ydCBlbmFibGVkICovCisvKiAjdW5kZWYgVVNFX0xJQlBTTCAqLworCiAvKiBpZiBsaWJydG1wIGlzIGluIHVzZSAqLwogLyogI3VuZGVmIFVTRV9MSUJSVE1QICovCiAKQEAgLTkyMCw2ICs5MzksOSBAQAogLyogSWYgeW91IHdhbnQgdG8gYnVpbGQgY3VybCB3aXRoIHRoZSBidWlsdC1pbiBtYW51YWwgKi8KICNkZWZpbmUgVVNFX01BTlVBTCAxCiAKKy8qIGlmIG1iZWRUTFMgaXMgZW5hYmxlZCAqLworLyogI3VuZGVmIFVTRV9NQkVEVExTICovCisKIC8qIERlZmluZSB0byBlbmFibGUgbWV0YWxpbmsgc3VwcG9ydCAqLwogLyogI3VuZGVmIFVTRV9NRVRBTElOSyAqLwogCmRpZmYgLS1naXQgYS9saWIvY3VybF9jb25maWcuaC5jbWFrZSBiL2xpYi9jdXJsX2NvbmZpZy5oLmNtYWtlCmluZGV4IDUzNzZhYTcuLjZiNTA3MGEgMTAwNjQ0Ci0tLSBhL2xpYi9jdXJsX2NvbmZpZy5oLmNtYWtlCisrKyBiL2xpYi9jdXJsX2NvbmZpZy5oLmNtYWtlCkBAIC0yNCw2ICsyNCwxMiBAQAogLyogdG8gZGlzYWJsZSBGVFAgKi8KICNjbWFrZWRlZmluZSBDVVJMX0RJU0FCTEVfRlRQIDEKIAorLyogdG8gZGlzYWJsZSBHT1BIRVIgKi8KKyNjbWFrZWRlZmluZSBDVVJMX0RJU0FCTEVfR09QSEVSIDEKKworLyogdG8gZGlzYWJsZSBJTUFQICovCisjY21ha2VkZWZpbmUgQ1VSTF9ESVNBQkxFX0lNQVAgMQorCiAvKiB0byBkaXNhYmxlIEhUVFAgKi8KICNjbWFrZWRlZmluZSBDVVJMX0RJU0FCTEVfSFRUUCAxCiAKQEAgLTMzLDkgKzM5LDI0IEBACiAvKiB0byBkaXNhYmxlIExEQVBTICovCiAjY21ha2VkZWZpbmUgQ1VSTF9ESVNBQkxFX0xEQVBTIDEKIAorLyogdG8gZGlzYWJsZSBQT1AzICovCisjY21ha2VkZWZpbmUgQ1VSTF9ESVNBQkxFX1BPUDMgMQorCiAvKiB0byBkaXNhYmxlIHByb3hpZXMgKi8KICNjbWFrZWRlZmluZSBDVVJMX0RJU0FCTEVfUFJPWFkgMQogCisvKiB0byBkaXNhYmxlIFJUU1AgKi8KKyNjbWFrZWRlZmluZSBDVVJMX0RJU0FCTEVfUlRTUCAxCisKKy8qIHRvIGRpc2FibGUgUlRNUCAqLworI2NtYWtlZGVmaW5lIENVUkxfRElTQUJMRV9SVE1QIDEKKworLyogdG8gZGlzYWJsZSBTTUIgKi8KKyNjbWFrZWRlZmluZSBDVVJMX0RJU0FCTEVfU01CIDEKKworLyogdG8gZGlzYWJsZSBTTVRQICovCisjY21ha2VkZWZpbmUgQ1VSTF9ESVNBQkxFX1NNVFAgMQorCiAvKiB0byBkaXNhYmxlIFRFTE5FVCAqLwogI2NtYWtlZGVmaW5lIENVUkxfRElTQUJMRV9URUxORVQgMQogCkBAIC05MTksNiArOTQwLDkgQEAKIC8qIHRvIGVuYWJsZSBTU1BJIHN1cHBvcnQgKi8KICNjbWFrZWRlZmluZSBVU0VfV0lORE9XU19TU1BJIDEKIAorLyogdG8gZW5hYmxlIFdpbmRvd3MgU1NMICAqLworI2NtYWtlZGVmaW5lIFVTRV9TQ0hBTk5FTCAxCisKIC8qIERlZmluZSB0byAxIGlmIHVzaW5nIHlhU1NMIGluIE9wZW5TU0wgY29tcGF0aWJpbGl0eSBtb2RlLiAqLwogI2NtYWtlZGVmaW5lIFVTRV9ZQVNTTEVNVUwgMQogCmRpZmYgLS1naXQgYS9saWIvY3VybF9kZXMuYyBiL2xpYi9jdXJsX2Rlcy5jCmluZGV4IDQyYzFkZjkuLjQyMWM5ZjcgMTAwNjQ0Ci0tLSBhL2xpYi9jdXJsX2Rlcy5jCisrKyBiL2xpYi9jdXJsX2Rlcy5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTIyLDcgKzIyLDcgQEAKIAogI2luY2x1ZGUgImN1cmxfc2V0dXAuaCIKIAotI2lmIGRlZmluZWQoVVNFX05UTE0pICYmICghZGVmaW5lZChVU0VfT1BFTlNTTCkgfHwgZGVmaW5lZChIQVZFX0JPUklOR1NTTCkpCisjaWYgZGVmaW5lZChVU0VfTlRMTSkgJiYgIWRlZmluZWQoVVNFX09QRU5TU0wpCiAKICNpbmNsdWRlICJjdXJsX2Rlcy5oIgogCkBAIC02MCw0ICs2MCw0IEBACiAgIH0KIH0KIAotI2VuZGlmIC8qIFVTRV9OVExNICYmICghVVNFX09QRU5TU0wgfHwgSEFWRV9CT1JJTkdTU0wpICovCisjZW5kaWYgLyogVVNFX05UTE0gJiYgIVVTRV9PUEVOU1NMICovCmRpZmYgLS1naXQgYS9saWIvY3VybF9kZXMuaCBiL2xpYi9jdXJsX2Rlcy5oCmluZGV4IGI4NTVkYjQuLjEyOTA2MGYgMTAwNjQ0Ci0tLSBhL2xpYi9jdXJsX2Rlcy5oCisrKyBiL2xpYi9jdXJsX2Rlcy5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjQsMTEgKzI0LDExIEBACiAKICNpbmNsdWRlICJjdXJsX3NldHVwLmgiCiAKLSNpZiBkZWZpbmVkKFVTRV9OVExNKSAmJiAoIWRlZmluZWQoVVNFX09QRU5TU0wpIHx8IGRlZmluZWQoSEFWRV9CT1JJTkdTU0wpKQorI2lmIGRlZmluZWQoVVNFX05UTE0pICYmICFkZWZpbmVkKFVTRV9PUEVOU1NMKQogCiAvKiBBcHBsaWVzIG9kZCBwYXJpdHkgdG8gdGhlIGdpdmVuIGJ5dGUgYXJyYXkgKi8KIHZvaWQgQ3VybF9kZXNfc2V0X29kZF9wYXJpdHkodW5zaWduZWQgY2hhciAqYnl0ZXMsIHNpemVfdCBsZW5ndGgpOwogCi0jZW5kaWYgLyogVVNFX05UTE0gJiYgKCFVU0VfT1BFTlNTTCB8fCBIQVZFX0JPUklOR1NTTCkgKi8KKyNlbmRpZiAvKiBVU0VfTlRMTSAmJiAhVVNFX09QRU5TU0wgKi8KIAogI2VuZGlmIC8qIEhFQURFUl9DVVJMX0RFU19IICovCmRpZmYgLS1naXQgYS9saWIvY3VybF9lbmRpYW4uYyBiL2xpYi9jdXJsX2VuZGlhbi5jCmluZGV4IGJjZDY2ZWQuLjc2ZGVjYTYgMTAwNjQ0Ci0tLSBhL2xpYi9jdXJsX2VuZGlhbi5jCisrKyBiL2xpYi9jdXJsX2VuZGlhbi5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9jdXJsX2VuZGlhbi5oIGIvbGliL2N1cmxfZW5kaWFuLmgKaW5kZXggZTM4NDI3OS4uZGY4Mzk4YyAxMDA2NDQKLS0tIGEvbGliL2N1cmxfZW5kaWFuLmgKKysrIGIvbGliL2N1cmxfZW5kaWFuLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvY3VybF9mbm1hdGNoLmMgYi9saWIvY3VybF9mbm1hdGNoLmMKaW5kZXggMWU1MzkxOC4uZTgxMDhiYiAxMDA2NDQKLS0tIGEvbGliL2N1cmxfZm5tYXRjaC5jCisrKyBiL2xpYi9jdXJsX2ZubWF0Y2guYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTIyLDYgKzIyLDggQEAKIAogI2luY2x1ZGUgImN1cmxfc2V0dXAuaCIKIAorI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCiAjaW5jbHVkZSAiY3VybF9mbm1hdGNoLmgiCiAjaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKIApkaWZmIC0tZ2l0IGEvbGliL2N1cmxfZm5tYXRjaC5oIGIvbGliL2N1cmxfZm5tYXRjaC5oCmluZGV4IDYzMzVkMDMuLjY5ZmZlMzkgMTAwNjQ0Ci0tLSBhL2xpYi9jdXJsX2ZubWF0Y2guaAorKysgYi9saWIvY3VybF9mbm1hdGNoLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvY3VybF9nZXRob3N0bmFtZS5jIGIvbGliL2N1cmxfZ2V0aG9zdG5hbWUuYwppbmRleCBkZWQxZTZmLi4yNTkxZmQ4IDEwMDY0NAotLS0gYS9saWIvY3VybF9nZXRob3N0bmFtZS5jCisrKyBiL2xpYi9jdXJsX2dldGhvc3RuYW1lLmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL2N1cmxfZ2V0aG9zdG5hbWUuaCBiL2xpYi9jdXJsX2dldGhvc3RuYW1lLmgKaW5kZXggNDg3NDBmNi4uMDc1MTdjNSAxMDA2NDQKLS0tIGEvbGliL2N1cmxfZ2V0aG9zdG5hbWUuaAorKysgYi9saWIvY3VybF9nZXRob3N0bmFtZS5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL2N1cmxfZ3NzYXBpLmMgYi9saWIvY3VybF9nc3NhcGkuYwppbmRleCAyY2QxNGZmLi42ZjkxMjFlIDEwMDY0NAotLS0gYS9saWIvY3VybF9nc3NhcGkuYworKysgYi9saWIvY3VybF9nc3NhcGkuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMjAxMSAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTI3LDkgKzI3LDkgQEAKICNpbmNsdWRlICJjdXJsX2dzc2FwaS5oIgogI2luY2x1ZGUgInNlbmRmLmgiCiAKLXN0YXRpYyBjb25zdCBjaGFyIHNwbmVnb19vaWRfYnl0ZXNbXSA9ICJceDJiXHgwNlx4MDFceDA1XHgwNVx4MDIiOworc3RhdGljIGNoYXIgc3BuZWdvX29pZF9ieXRlc1tdID0gIlx4MmJceDA2XHgwMVx4MDVceDA1XHgwMiI7CiBnc3NfT0lEX2Rlc2MgQ3VybF9zcG5lZ29fbWVjaF9vaWQgPSB7IDYsICZzcG5lZ29fb2lkX2J5dGVzIH07Ci1zdGF0aWMgY29uc3QgY2hhciBrcmI1X29pZF9ieXRlc1tdID0gIlx4MmFceDg2XHg0OFx4ODZceGY3XHgxMlx4MDFceDAyXHgwMiI7CitzdGF0aWMgY2hhciBrcmI1X29pZF9ieXRlc1tdID0gIlx4MmFceDg2XHg0OFx4ODZceGY3XHgxMlx4MDFceDAyXHgwMiI7CiBnc3NfT0lEX2Rlc2MgQ3VybF9rcmI1X21lY2hfb2lkID0geyA5LCAma3JiNV9vaWRfYnl0ZXMgfTsKIAogT01fdWludDMyIEN1cmxfZ3NzX2luaXRfc2VjX2NvbnRleHQoCkBAIC03Niw2ICs3NiwzMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCAvKiB0aW1lX3JlYyAqLyk7CiB9CiAKKyNkZWZpbmUgR1NTX0xPR19CVUZGRVJfTEVOIDEwMjQKK3N0YXRpYyBzaXplX3QgZGlzcGxheV9nc3NfZXJyb3IoT01fdWludDMyIHN0YXR1cywgaW50IHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmJ1Ziwgc2l6ZV90IGxlbikgeworICBPTV91aW50MzIgbWFqX3N0YXQ7CisgIE9NX3VpbnQzMiBtaW5fc3RhdDsKKyAgT01fdWludDMyIG1zZ19jdHggPSAwOworICBnc3NfYnVmZmVyX2Rlc2Mgc3RhdHVzX3N0cmluZzsKKworICBkbyB7CisgICAgbWFqX3N0YXQgPSBnc3NfZGlzcGxheV9zdGF0dXMoJm1pbl9zdGF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdTU19DX05PX09JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbXNnX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhdHVzX3N0cmluZyk7CisgICAgaWYoR1NTX0xPR19CVUZGRVJfTEVOID4gbGVuICsgc3RhdHVzX3N0cmluZy5sZW5ndGggKyAzKSB7CisgICAgICBsZW4gKz0gc25wcmludGYoYnVmICsgbGVuLCBHU1NfTE9HX0JVRkZFUl9MRU4gLSBsZW4sCisgICAgICAgICAgICAgICAgICAgICAgIiUuKnMuICIsIChpbnQpc3RhdHVzX3N0cmluZy5sZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgKGNoYXIqKXN0YXR1c19zdHJpbmcudmFsdWUpOworICAgIH0KKyAgICBnc3NfcmVsZWFzZV9idWZmZXIoJm1pbl9zdGF0LCAmc3RhdHVzX3N0cmluZyk7CisgIH0gd2hpbGUoIUdTU19FUlJPUihtYWpfc3RhdCkgJiYgbXNnX2N0eCAhPSAwKTsKKworICByZXR1cm4gbGVuOworfQorCiAvKgogICogQ3VybF9nc3NfbG9nX2Vycm9yKCkKICAqCkBAIC04NCwzNyArMTEwLDIyIEBACiAgKiBQYXJhbWV0ZXJzOgogICoKICAqIGRhdGEgICAgW2luXSAtIFRoZSBzZXNzaW9uIGhhbmRsZS4KLSAqIHN0YXR1cyAgW2luXSAtIFRoZSBzdGF0dXMgY29kZS4KICAqIHByZWZpeCAgW2luXSAtIFRoZSBwcmVmaXggb2YgdGhlIGxvZyBtZXNzYWdlLgorICogbWFqb3IgICBbaW5dIC0gVGhlIG1ham9yIHN0YXR1cyBjb2RlLgorICogbWlub3IgICBbaW5dIC0gVGhlIG1pbm9yIHN0YXR1cyBjb2RlLgogICovCi12b2lkIEN1cmxfZ3NzX2xvZ19lcnJvcihzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwgT01fdWludDMyIHN0YXR1cywKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnByZWZpeCkKK3ZvaWQgQ3VybF9nc3NfbG9nX2Vycm9yKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLCBjb25zdCBjaGFyICpwcmVmaXgsCisgICAgICAgICAgICAgICAgICAgICAgICBPTV91aW50MzIgbWFqb3IsIE9NX3VpbnQzMiBtaW5vcikKIHsKLSAgT01fdWludDMyIG1hal9zdGF0OwotICBPTV91aW50MzIgbWluX3N0YXQ7Ci0gIE9NX3VpbnQzMiBtc2dfY3R4ID0gMDsKLSAgZ3NzX2J1ZmZlcl9kZXNjIHN0YXR1c19zdHJpbmc7Ci0gIGNoYXIgYnVmWzEwMjRdOwotICBzaXplX3QgbGVuOworICBjaGFyIGJ1ZltHU1NfTE9HX0JVRkZFUl9MRU5dOworICBzaXplX3QgbGVuID0gMDsKIAotICBzbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiJXMiLCBwcmVmaXgpOwotICBsZW4gPSBzdHJsZW4oYnVmKTsKLSAgZG8gewotICAgIG1hal9zdGF0ID0gZ3NzX2Rpc3BsYXlfc3RhdHVzKCZtaW5fc3RhdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1NTX0NfTUVDSF9DT0RFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdTU19DX05PX09JRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbXNnX2N0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhdHVzX3N0cmluZyk7Ci0gICAgaWYoc2l6ZW9mKGJ1ZikgPiBsZW4gKyBzdGF0dXNfc3RyaW5nLmxlbmd0aCArIDEpIHsKLSAgICAgIHNucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZW9mKGJ1ZikgLSBsZW4sCi0gICAgICAgICI6ICVzIiwgKGNoYXIqKXN0YXR1c19zdHJpbmcudmFsdWUpOwotICAgICAgbGVuICs9IHN0YXR1c19zdHJpbmcubGVuZ3RoOwotICAgIH0KLSAgICBnc3NfcmVsZWFzZV9idWZmZXIoJm1pbl9zdGF0LCAmc3RhdHVzX3N0cmluZyk7Ci0gIH0gd2hpbGUoIUdTU19FUlJPUihtYWpfc3RhdCkgJiYgbXNnX2N0eCAhPSAwKTsKKyAgaWYobWFqb3IgIT0gR1NTX1NfRkFJTFVSRSkKKyAgICBsZW4gPSBkaXNwbGF5X2dzc19lcnJvcihtYWpvciwgR1NTX0NfR1NTX0NPREUsIGJ1ZiwgbGVuKTsKIAotICBpbmZvZihkYXRhLCAiJXNcbiIsIGJ1Zik7CisgIGRpc3BsYXlfZ3NzX2Vycm9yKG1pbm9yLCBHU1NfQ19NRUNIX0NPREUsIGJ1ZiwgbGVuKTsKKworICBpbmZvZihkYXRhLCAiJXMlc1xuIiwgcHJlZml4LCBidWYpOwogfQogCiAjZW5kaWYgLyogSEFWRV9HU1NBUEkgKi8KZGlmZiAtLWdpdCBhL2xpYi9jdXJsX2dzc2FwaS5oIGIvbGliL2N1cmxfZ3NzYXBpLmgKaW5kZXggMTlhYWI2NC4uNDJmZDFlNCAxMDA2NDQKLS0tIGEvbGliL2N1cmxfZ3NzYXBpLmgKKysrIGIvbGliL2N1cmxfZ3NzYXBpLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC01Niw4ICs1Niw4IEBACiAgICAgT01fdWludDMyICpyZXRfZmxhZ3MpOwogCiAvKiBIZWxwZXIgdG8gbG9nIGEgR1NTLUFQSSBlcnJvciBzdGF0dXMgKi8KLXZvaWQgQ3VybF9nc3NfbG9nX2Vycm9yKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLCBPTV91aW50MzIgc3RhdHVzLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcHJlZml4KTsKK3ZvaWQgQ3VybF9nc3NfbG9nX2Vycm9yKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLCBjb25zdCBjaGFyICpwcmVmaXgsCisgICAgICAgICAgICAgICAgICAgICAgICBPTV91aW50MzIgbWFqb3IsIE9NX3VpbnQzMiBtaW5vcik7CiAKIC8qIFByb3ZpZGUgc29tZSBkZWZpbml0aW9ucyBtaXNzaW5nIGluIG9sZCBoZWFkZXJzICovCiAjaWZkZWYgSEFWRV9PTERfR1NTTUlUCmRpZmYgLS1naXQgYS9saWIvY3VybF9obWFjLmggYi9saWIvY3VybF9obWFjLmgKaW5kZXggOWI2NWM4Yy4uNDE3MDNiNCAxMDA2NDQKLS0tIGEvbGliL2N1cmxfaG1hYy5oCisrKyBiL2xpYi9jdXJsX2htYWMuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9jdXJsX2xkYXAuaCBiL2xpYi9jdXJsX2xkYXAuaAppbmRleCA5M2ZiNGIwLi4yN2QwMzgxIDEwMDY0NAotLS0gYS9saWIvY3VybF9sZGFwLmgKKysrIGIvbGliL2N1cmxfbGRhcC5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL2N1cmxfbWQ0LmggYi9saWIvY3VybF9tZDQuaAppbmRleCAxM2M3OTAzLi44YzI2ZDEyIDEwMDY0NAotLS0gYS9saWIvY3VybF9tZDQuaAorKysgYi9saWIvY3VybF9tZDQuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9jdXJsX21kNS5oIGIvbGliL2N1cmxfbWQ1LmgKaW5kZXggOWMwZTBiNS4uNWY3MGM5NiAxMDA2NDQKLS0tIGEvbGliL2N1cmxfbWQ1LmgKKysrIGIvbGliL2N1cmxfbWQ1LmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvY3VybF9tZW1vcnkuaCBiL2xpYi9jdXJsX21lbW9yeS5oCmluZGV4IGJjNzQ0Y2MuLjZmNzkyZmYgMTAwNjQ0Ci0tLSBhL2xpYi9jdXJsX21lbW9yeS5oCisrKyBiL2xpYi9jdXJsX21lbW9yeS5oCkBAIC03LDExICs3LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMywgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtODMsNyArODMsMjAgQEAKIAogI2lmbmRlZiBDVVJMWF9OT19NRU1PUllfQ0FMTEJBQ0tTCiAKLSNpbmNsdWRlIDxjdXJsL2N1cmwuaD4gLyogZm9yIHRoZSBjYWxsYmFjayB0eXBlZGVmcyAqLworI2lmbmRlZiBDVVJMX0RJRF9NRU1PUllfRlVOQ19UWVBFREVGUyAvKiBvbmx5IGlmIG5vdCBhbHJlYWR5IGRvbmUgKi8KKy8qCisgKiBUaGUgZm9sbG93aW5nIG1lbW9yeSBmdW5jdGlvbiByZXBsYWNlbWVudCB0eXBlZGVmJ3MgYXJlIENPUElFRCBmcm9tCisgKiBjdXJsL2N1cmwuaCBhbmQgTVVTVCBtYXRjaCB0aGUgb3JpZ2luYWxzLiBXZSBjb3B5IHRoZW0gdG8gYXZvaWQgaGF2aW5nIHRvCisgKiBpbmNsdWRlIGN1cmwvY3VybC5oIGhlcmUuIFdlIGF2b2lkIHRoYXQgaW5jbHVkZSBzaW5jZSBpdCBpbmNsdWRlcyBzdGRpby5oCisgKiBhbmQgb3RoZXIgaGVhZGVycyB0aGF0IG1heSBnZXQgbWVzc2VkIHVwIHdpdGggZGVmaW5lcyBkb25lIGhlcmUuCisgKi8KK3R5cGVkZWYgdm9pZCAqKCpjdXJsX21hbGxvY19jYWxsYmFjaykoc2l6ZV90IHNpemUpOwordHlwZWRlZiB2b2lkICgqY3VybF9mcmVlX2NhbGxiYWNrKSh2b2lkICpwdHIpOwordHlwZWRlZiB2b2lkICooKmN1cmxfcmVhbGxvY19jYWxsYmFjaykodm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSk7Cit0eXBlZGVmIGNoYXIgKigqY3VybF9zdHJkdXBfY2FsbGJhY2spKGNvbnN0IGNoYXIgKnN0cik7Cit0eXBlZGVmIHZvaWQgKigqY3VybF9jYWxsb2NfY2FsbGJhY2spKHNpemVfdCBubWVtYiwgc2l6ZV90IHNpemUpOworI2RlZmluZSBDVVJMX0RJRF9NRU1PUllfRlVOQ19UWVBFREVGUworI2VuZGlmCiAKIGV4dGVybiBjdXJsX21hbGxvY19jYWxsYmFjayBDdXJsX2NtYWxsb2M7CiBleHRlcm4gY3VybF9mcmVlX2NhbGxiYWNrIEN1cmxfY2ZyZWU7CmRpZmYgLS1naXQgYS9saWIvY3VybF9tZW1yY2hyLmMgYi9saWIvY3VybF9tZW1yY2hyLmMKaW5kZXggNjcyMmM2YS4uYzUyMTQ5NyAxMDA2NDQKLS0tIGEvbGliL2N1cmxfbWVtcmNoci5jCisrKyBiL2xpYi9jdXJsX21lbXJjaHIuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTIxLDYgKzIxLDkgQEAKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKICNpbmNsdWRlICJjdXJsX3NldHVwLmgiCisKKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKwogI2luY2x1ZGUgImN1cmxfbWVtcmNoci5oIgogI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCiAKZGlmZiAtLWdpdCBhL2xpYi9jdXJsX21lbXJjaHIuaCBiL2xpYi9jdXJsX21lbXJjaHIuaAppbmRleCAzMjRjNzNhLi43NDc1MDljIDEwMDY0NAotLS0gYS9saWIvY3VybF9tZW1yY2hyLmgKKysrIGIvbGliL2N1cmxfbWVtcmNoci5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL2N1cmxfbXVsdGlieXRlLmMgYi9saWIvY3VybF9tdWx0aWJ5dGUuYwppbmRleCA0MDNkMDA1Li5lNzhiYjUwIDEwMDY0NAotLS0gYS9saWIvY3VybF9tdWx0aWJ5dGUuYworKysgYi9saWIvY3VybF9tdWx0aWJ5dGUuYwpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yMiw2ICsyMiw4IEBACiAKICNpbmNsdWRlICJjdXJsX3NldHVwLmgiCiAKKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKwogI2lmIGRlZmluZWQoVVNFX1dJTjMyX0lETikgfHwgKChkZWZpbmVkKFVTRV9XSU5ET1dTX1NTUEkpIHx8IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lZChVU0VfV0lOMzJfTERBUCkpICYmIGRlZmluZWQoVU5JQ09ERSkpCiAKZGlmZiAtLWdpdCBhL2xpYi9jdXJsX211bHRpYnl0ZS5oIGIvbGliL2N1cmxfbXVsdGlieXRlLmgKaW5kZXggZGM3ZWQ0Yy4uNjE1ZjVjMCAxMDA2NDQKLS0tIGEvbGliL2N1cmxfbXVsdGlieXRlLmgKKysrIGIvbGliL2N1cmxfbXVsdGlieXRlLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvY3VybF9udGxtX2NvcmUuYyBiL2xpYi9jdXJsX250bG1fY29yZS5jCmluZGV4IDJlNWI1NzMuLmVhNzU0OGQgMTAwNjQ0Ci0tLSBhL2xpYi9jdXJsX250bG1fY29yZS5jCisrKyBiL2xpYi9jdXJsX250bG1fY29yZS5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjgsNyArMjgsNyBAQAogICogTlRMTSBkZXRhaWxzOgogICoKICAqIGh0dHA6Ly9kYXZlbnBvcnQuc291cmNlZm9yZ2UubmV0L250bG0uaHRtbAotICogaHR0cDovL3d3dy5pbm5vdmF0aW9uLmNoL2phdmEvbnRsbS5odG1sCisgKiBodHRwczovL3d3dy5pbm5vdmF0aW9uLmNoL2phdmEvbnRsbS5odG1sCiAgKi8KIAogI2lmICFkZWZpbmVkKFVTRV9XSU5ET1dTX1NTUEkpIHx8IGRlZmluZWQoVVNFX1dJTjMyX0NSWVBUTykKQEAgLTEwNyw5ICsxMDcsOCBAQAogI2luY2x1ZGUgIndhcm5sZXNzLmgiCiAjaW5jbHVkZSAiY3VybF9lbmRpYW4uaCIKICNpbmNsdWRlICJjdXJsX2Rlcy5oIgorLyogVGhlIGxhc3QgMyAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmUgaW4gdGhpcyBvcmRlciAqLwogI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCi0KLS8qIFRoZSBsYXN0ICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZTogKi8KICNpbmNsdWRlICJjdXJsX21lbW9yeS5oIgogI2luY2x1ZGUgIm1lbWRlYnVnLmgiCiAKQEAgLTE0MywxNCArMTQyLDEwIEBACiAgIERFU19jYmxvY2sga2V5OwogCiAgIC8qIEV4cGFuZCB0aGUgNTYtYml0IGtleSB0byA2NC1iaXRzICovCi0gIGV4dGVuZF9rZXlfNTZfdG9fNjQoa2V5XzU2LCAoY2hhciAqKSBrZXkpOworICBleHRlbmRfa2V5XzU2X3RvXzY0KGtleV81NiwgKGNoYXIgKikgJmtleSk7CiAKICAgLyogU2V0IHRoZSBrZXkgcGFyaXR5IHRvIG9kZCAqLwotI2lmIGRlZmluZWQoSEFWRV9CT1JJTkdTU0wpCi0gIEN1cmxfZGVzX3NldF9vZGRfcGFyaXR5KCh1bnNpZ25lZCBjaGFyICopICZrZXksIHNpemVvZihrZXkpKTsKLSNlbHNlCiAgIERFU19zZXRfb2RkX3Bhcml0eSgma2V5KTsKLSNlbmRpZgogCiAgIC8qIFNldCB0aGUga2V5ICovCiAgIERFU19zZXRfa2V5KCZrZXksIGtzKTsKQEAgLTY2NCwyMSArNjU5LDIyIEBACiAgIHVuc2lnbmVkIGludCBsZW4gPSAwOwogICB1bnNpZ25lZCBjaGFyICpwdHIgPSBOVUxMOwogICB1bnNpZ25lZCBjaGFyIGhtYWNfb3V0cHV0W05UTE1fSE1BQ19NRDVfTEVOXTsKLSNpZiBkZWZpbmVkKEhBVkVfTE9OR0xPTkcpCi0gIGxvbmcgbG9uZyB0dzsKLSNlbHNlCi0gIF9faW50NjQgdHc7Ci0jZW5kaWYKKyAgY3VybF9vZmZfdCB0dzsKKwogICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKIAorI2lmIENVUkxfU0laRU9GX0NVUkxfT0ZGX1QgPCA4CisjZXJyb3IgInRoaXMgc2VjdGlvbiBuZWVkcyA2NGJpdCBzdXBwb3J0IHRvIHdvcmsiCisjZW5kaWYKKwogICAvKiBDYWxjdWxhdGUgdGhlIHRpbWVzdGFtcCAqLwogI2lmZGVmIERFQlVHQlVJTEQKICAgY2hhciAqZm9yY2VfdGltZXN0YW1wID0gZ2V0ZW52KCJDVVJMX0ZPUkNFVElNRSIpOwogICBpZihmb3JjZV90aW1lc3RhbXApCi0gICAgdHcgPSAxMTY0NDQ3MzYwMFVMTCAqIDEwMDAwMDAwVUxMOworICAgIHR3ID0gQ1VSTF9PRkZfVF9DKDExNjQ0NDczNjAwKSAqIDEwMDAwMDAwOwogICBlbHNlCiAjZW5kaWYKLSAgdHcgPSAoKGxvbmcgbG9uZyl0aW1lKE5VTEwpICsgMTE2NDQ0NzM2MDBVTEwpICogMTAwMDAwMDBVTEw7CisgICAgdHcgPSAoKGN1cmxfb2ZmX3QpdGltZShOVUxMKSArIENVUkxfT0ZGX1RfQygxMTY0NDQ3MzYwMCkpICogMTAwMDAwMDA7CiAKICAgLyogQ2FsY3VsYXRlIHRoZSByZXNwb25zZSBsZW4gKi8KICAgbGVuID0gTlRMTV9ITUFDX01ENV9MRU4gKyBOVExNdjJfQkxPQl9MRU47CmRpZmYgLS1naXQgYS9saWIvY3VybF9udGxtX2NvcmUuaCBiL2xpYi9jdXJsX250bG1fY29yZS5oCmluZGV4IDNhNzYzNTkuLmNmMzdkYzggMTAwNjQ0Ci0tLSBhL2xpYi9jdXJsX250bG1fY29yZS5oCisrKyBiL2xpYi9jdXJsX250bG1fY29yZS5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL2N1cmxfbnRsbV93Yi5jIGIvbGliL2N1cmxfbnRsbV93Yi5jCmluZGV4IGQ2M2ZiMjcuLmFmZGVhMTYgMTAwNjQ0Ci0tLSBhL2xpYi9jdXJsX250bG1fd2IuYworKysgYi9saWIvY3VybF9udGxtX3diLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yOSw3ICsyOSw3IEBACiAgKiBOVExNIGRldGFpbHM6CiAgKgogICogaHR0cDovL2RhdmVucG9ydC5zb3VyY2Vmb3JnZS5uZXQvbnRsbS5odG1sCi0gKiBodHRwOi8vd3d3Lmlubm92YXRpb24uY2gvamF2YS9udGxtLmh0bWwKKyAqIGh0dHBzOi8vd3d3Lmlubm92YXRpb24uY2gvamF2YS9udGxtLmh0bWwKICAqLwogCiAjZGVmaW5lIERFQlVHX01FIDAKQEAgLTQ3LDEzICs0NywxMiBAQAogI2luY2x1ZGUgInVybGRhdGEuaCIKICNpbmNsdWRlICJzZW5kZi5oIgogI2luY2x1ZGUgInNlbGVjdC5oIgotI2luY2x1ZGUgImN1cmxfbnRsbV9tc2dzLmgiCisjaW5jbHVkZSAidmF1dGgvbnRsbS5oIgogI2luY2x1ZGUgImN1cmxfbnRsbV93Yi5oIgogI2luY2x1ZGUgInVybC5oIgogI2luY2x1ZGUgInN0cmVycm9yLmgiCisvKiBUaGUgbGFzdCAzICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZSBpbiB0aGlzIG9yZGVyICovCiAjaW5jbHVkZSAiY3VybF9wcmludGYuaCIKLQotLyogVGhlIGxhc3QgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlOiAqLwogI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCiAjaW5jbHVkZSAibWVtZGVidWcuaCIKIApAQCAtMzA2LDcgKzMwNSw3IEBACiAgIGlmKHN0YXRlID09IE5UTE1TVEFURV9UWVBFMSAmJgogICAgICBsZW5fb3V0ID09IDMgJiYKICAgICAgYnVmWzBdID09ICdQJyAmJiBidWZbMV0gPT0gJ1cnKQotICAgIHJldHVybiBDVVJMRV9SRU1PVEVfQUNDRVNTX0RFTklFRDsKKyAgICBnb3RvIGRvbmU7CiAgIC8qIGludmFsaWQgcmVzcG9uc2UgKi8KICAgaWYobGVuX291dCA8IDQpCiAgICAgZ290byBkb25lOwpAQCAtMzczLDggKzM3Miw4IEBACiAgICAgICogYnkgZGVsZWdhdGluZyB0aGUgTlRMTSBjaGFsbGVuZ2UvcmVzcG9uc2UgcHJvdG9jYWwgdG8gYSBoZWxwZXIKICAgICAgKiBpbiBudGxtX2F1dGguCiAgICAgICogaHR0cDovL2RldmVsLnNxdWlkLWNhY2hlLm9yZy9udGxtL3NxdWlkX2hlbHBlcl9wcm90b2NvbC5odG1sCi0gICAgICogaHR0cDovL3d3dy5zYW1iYS5vcmcvc2FtYmEvZG9jcy9tYW4vbWFucGFnZXMtMy93aW5iaW5kZC44Lmh0bWwKLSAgICAgKiBodHRwOi8vd3d3LnNhbWJhLm9yZy9zYW1iYS9kb2NzL21hbi9tYW5wYWdlcy0zL250bG1fYXV0aC4xLmh0bWwKKyAgICAgKiBodHRwczovL3d3dy5zYW1iYS5vcmcvc2FtYmEvZG9jcy9tYW4vbWFucGFnZXMtMy93aW5iaW5kZC44Lmh0bWwKKyAgICAgKiBodHRwczovL3d3dy5zYW1iYS5vcmcvc2FtYmEvZG9jcy9tYW4vbWFucGFnZXMtMy9udGxtX2F1dGguMS5odG1sCiAgICAgICogUHJlcHJvY2Vzc29yIHN5bWJvbCAnTlRMTV9XQl9FTkFCTEVEJyBpcyBkZWZpbmVkIHdoZW4gdGhpcwogICAgICAqIGZlYXR1cmUgaXMgZW5hYmxlZCBhbmQgJ05UTE1fV0JfRklMRScgc3ltYm9sIGhvbGRzIGFic29sdXRlCiAgICAgICogZmlsZW5hbWUgb2YgbnRsbV9hdXRoIGhlbHBlci4KZGlmZiAtLWdpdCBhL2xpYi9jdXJsX250bG1fd2IuaCBiL2xpYi9jdXJsX250bG1fd2IuaAppbmRleCA4MjhiYjU3Li5hYmEzZDQ2IDEwMDY0NAotLS0gYS9saWIvY3VybF9udGxtX3diLmgKKysrIGIvbGliL2N1cmxfbnRsbV93Yi5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL2N1cmxfcHJpbnRmLmggYi9saWIvY3VybF9wcmludGYuaAppbmRleCAwODY5MjNmLi40OTg1N2NkIDEwMDY0NAotLS0gYS9saWIvY3VybF9wcmludGYuaAorKysgYi9saWIvY3VybF9wcmludGYuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9jdXJsX3J0bXAuYyBiL2xpYi9jdXJsX3J0bXAuYwppbmRleCAyOTM4OTcyLi4wNmRkMDQ3IDEwMDY0NAotLS0gYS9saWIvY3VybF9ydG1wLmMKKysrIGIvbGliL2N1cmxfcnRtcC5jCkBAIC0xMCw3ICsxMCw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNTUsNyArNTUsNyBAQAogc3RhdGljIEN1cmxfc2VuZCBydG1wX3NlbmQ7CiAKIC8qCi0gKiBSVE1QIHByb3RvY29sIGhhbmRsZXIuaCwgYmFzZWQgb24gaHR0cDovL3J0bXBkdW1wLm1wbGF5ZXJocS5odQorICogUlRNUCBwcm90b2NvbCBoYW5kbGVyLmgsIGJhc2VkIG9uIGh0dHBzOi8vcnRtcGR1bXAubXBsYXllcmhxLmh1CiAgKi8KIAogY29uc3Qgc3RydWN0IEN1cmxfaGFuZGxlciBDdXJsX2hhbmRsZXJfcnRtcCA9IHsKZGlmZiAtLWdpdCBhL2xpYi9jdXJsX3J0bXAuaCBiL2xpYi9jdXJsX3J0bXAuaAppbmRleCA0YTllOWU2Li4zMzA2ZTIyIDEwMDY0NAotLS0gYS9saWIvY3VybF9ydG1wLmgKKysrIGIvbGliL2N1cmxfcnRtcC5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL2N1cmxfc2FzbC5jIGIvbGliL2N1cmxfc2FzbC5jCmluZGV4IDY4NjQ2YmMuLjk0YjM5ZTQgMTAwNjQ0Ci0tLSBhL2xpYi9jdXJsX3Nhc2wuYworKysgYi9saWIvY3VybF9zYXNsLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAyMDEyIC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yNCw2ICsyNCw3IEBACiAgKiBSRkM0NDIyIFNpbXBsZSBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJpdHkgTGF5ZXIgKFNBU0wpCiAgKiBSRkM0NjE2IFBMQUlOIGF1dGhlbnRpY2F0aW9uCiAgKiBSRkM2NzQ5IE9BdXRoIDIuMCBBdXRob3JpemF0aW9uIEZyYW1ld29yaworICogUkZDNzYyOCBBIFNldCBvZiBTQVNMIE1lY2hhbmlzbXMgZm9yIE9BdXRoCiAgKiBEcmFmdCAgIExPR0lOIFNBU0wgTWVjaGFuaXNtIDxkcmFmdC1tdXJjaGlzb24tc2FzbC1sb2dpbi0wMC50eHQ+CiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KQEAgLTM1LDYgKzM2LDcgQEAKIAogI2luY2x1ZGUgImN1cmxfYmFzZTY0LmgiCiAjaW5jbHVkZSAiY3VybF9tZDUuaCIKKyNpbmNsdWRlICJ2YXV0aC92YXV0aC5oIgogI2luY2x1ZGUgInZ0bHMvdnRscy5oIgogI2luY2x1ZGUgImN1cmxfaG1hYy5oIgogI2luY2x1ZGUgImN1cmxfc2FzbC5oIgpAQCAtNDQsOSArNDYsOCBAQAogI2luY2x1ZGUgInJhd3N0ci5oIgogI2luY2x1ZGUgInNlbmRmLmgiCiAjaW5jbHVkZSAibm9uLWFzY2lpLmgiIC8qIGluY2x1ZGVkIGZvciBDdXJsX2NvbnZlcnRfLi4uIHByb3RvdHlwZXMgKi8KKy8qIFRoZSBsYXN0IDMgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlIGluIHRoaXMgb3JkZXIgKi8KICNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgotCi0vKiBUaGUgbGFzdCAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmU6ICovCiAjaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKICNpbmNsdWRlICJtZW1kZWJ1Zy5oIgogCkBAIC01NiwxMTQwICs1NywxOCBAQAogICBzaXplX3QgICAgICAgIGxlbjsgICAvKiBOYW1lIGxlbmd0aCAqLwogICB1bnNpZ25lZCBpbnQgIGJpdDsgICAvKiBGbGFnIGJpdCAqLwogfSBtZWNodGFibGVbXSA9IHsKLSAgeyAiTE9HSU4iLCAgICAgIDUsICBTQVNMX01FQ0hfTE9HSU4gfSwKLSAgeyAiUExBSU4iLCAgICAgIDUsICBTQVNMX01FQ0hfUExBSU4gfSwKLSAgeyAiQ1JBTS1NRDUiLCAgIDgsICBTQVNMX01FQ0hfQ1JBTV9NRDUgfSwKLSAgeyAiRElHRVNULU1ENSIsIDEwLCBTQVNMX01FQ0hfRElHRVNUX01ENSB9LAotICB7ICJHU1NBUEkiLCAgICAgNiwgIFNBU0xfTUVDSF9HU1NBUEkgfSwKLSAgeyAiRVhURVJOQUwiLCAgIDgsICBTQVNMX01FQ0hfRVhURVJOQUwgfSwKLSAgeyAiTlRMTSIsICAgICAgIDQsICBTQVNMX01FQ0hfTlRMTSB9LAotICB7ICJYT0FVVEgyIiwgICAgNywgIFNBU0xfTUVDSF9YT0FVVEgyIH0sCi0gIHsgWkVST19OVUxMLCAgICAwLCAgMCB9CisgIHsgIkxPR0lOIiwgICAgICAgIDUsICBTQVNMX01FQ0hfTE9HSU4gfSwKKyAgeyAiUExBSU4iLCAgICAgICAgNSwgIFNBU0xfTUVDSF9QTEFJTiB9LAorICB7ICJDUkFNLU1ENSIsICAgICA4LCAgU0FTTF9NRUNIX0NSQU1fTUQ1IH0sCisgIHsgIkRJR0VTVC1NRDUiLCAgIDEwLCBTQVNMX01FQ0hfRElHRVNUX01ENSB9LAorICB7ICJHU1NBUEkiLCAgICAgICA2LCAgU0FTTF9NRUNIX0dTU0FQSSB9LAorICB7ICJFWFRFUk5BTCIsICAgICA4LCAgU0FTTF9NRUNIX0VYVEVSTkFMIH0sCisgIHsgIk5UTE0iLCAgICAgICAgIDQsICBTQVNMX01FQ0hfTlRMTSB9LAorICB7ICJYT0FVVEgyIiwgICAgICA3LCAgU0FTTF9NRUNIX1hPQVVUSDIgfSwKKyAgeyAiT0FVVEhCRUFSRVIiLCAgMTEsIFNBU0xfTUVDSF9PQVVUSEJFQVJFUiB9LAorICB7IFpFUk9fTlVMTCwgICAgICAwLCAgMCB9CiB9OwogCi0jaWYgIWRlZmluZWQoQ1VSTF9ESVNBQkxFX0NSWVBUT19BVVRIKSAmJiAhZGVmaW5lZChVU0VfV0lORE9XU19TU1BJKQotI2RlZmluZSBESUdFU1RfUU9QX1ZBTFVFX0FVVEggICAgICAgICAgICAgKDEgPDwgMCkKLSNkZWZpbmUgRElHRVNUX1FPUF9WQUxVRV9BVVRIX0lOVCAgICAgICAgICgxIDw8IDEpCi0jZGVmaW5lIERJR0VTVF9RT1BfVkFMVUVfQVVUSF9DT05GICAgICAgICAoMSA8PCAyKQotCi0jZGVmaW5lIERJR0VTVF9RT1BfVkFMVUVfU1RSSU5HX0FVVEggICAgICAiYXV0aCIKLSNkZWZpbmUgRElHRVNUX1FPUF9WQUxVRV9TVFJJTkdfQVVUSF9JTlQgICJhdXRoLWludCIKLSNkZWZpbmUgRElHRVNUX1FPUF9WQUxVRV9TVFJJTkdfQVVUSF9DT05GICJhdXRoLWNvbmYiCi0KLS8qIFRoZSBDVVJMX09VVFBVVF9ESUdFU1RfQ09OViBtYWNybyBiZWxvdyBpcyBmb3Igbm9uLUFTQ0lJIG1hY2hpbmVzLgotICAgSXQgY29udmVydHMgZGlnZXN0IHRleHQgdG8gQVNDSUkgc28gdGhlIE1ENSB3aWxsIGJlIGNvcnJlY3QgZm9yCi0gICB3aGF0IHVsdGltYXRlbHkgZ29lcyBvdmVyIHRoZSBuZXR3b3JrLgotKi8KLSNkZWZpbmUgQ1VSTF9PVVRQVVRfRElHRVNUX0NPTlYoYSwgYikgXAotICByZXN1bHQgPSBDdXJsX2NvbnZlcnRfdG9fbmV0d29yayhhLCAoY2hhciAqKWIsIHN0cmxlbigoY29uc3QgY2hhciopYikpOyBcCi0gIGlmKHJlc3VsdCkgeyBcCi0gICAgZnJlZShiKTsgXAotICAgIHJldHVybiByZXN1bHQ7IFwKLSAgfQotCi0jZW5kaWYKLQotI2lmICFkZWZpbmVkKENVUkxfRElTQUJMRV9DUllQVE9fQVVUSCkKLS8qCi0gKiBSZXR1cm5zIDAgb24gc3VjY2VzcyBhbmQgdGhlbiB0aGUgYnVmZmVycyBhcmUgZmlsbGVkIGluIGZpbmUuCi0gKgotICogTm9uLXplcm8gbWVhbnMgZmFpbHVyZSB0byBwYXJzZS4KLSAqLwotaW50IEN1cmxfc2FzbF9kaWdlc3RfZ2V0X3BhaXIoY29uc3QgY2hhciAqc3RyLCBjaGFyICp2YWx1ZSwgY2hhciAqY29udGVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiplbmRwdHIpCi17Ci0gIGludCBjOwotICBib29sIHN0YXJ0c193aXRoX3F1b3RlID0gRkFMU0U7Ci0gIGJvb2wgZXNjYXBlID0gRkFMU0U7Ci0KLSAgZm9yKGMgPSBESUdFU1RfTUFYX1ZBTFVFX0xFTkdUSCAtIDE7ICgqc3RyICYmICgqc3RyICE9ICc9JykgJiYgYy0tKTsgKQotICAgICp2YWx1ZSsrID0gKnN0cisrOwotICAqdmFsdWUgPSAwOwotCi0gIGlmKCc9JyAhPSAqc3RyKyspCi0gICAgLyogZWVrLCBubyBtYXRjaCAqLwotICAgIHJldHVybiAxOwotCi0gIGlmKCdcIicgPT0gKnN0cikgewotICAgIC8qIHRoaXMgc3RhcnRzIHdpdGggYSBxdW90ZSBzbyBpdCBtdXN0IGVuZCB3aXRoIG9uZSBhcyB3ZWxsISAqLwotICAgIHN0cisrOwotICAgIHN0YXJ0c193aXRoX3F1b3RlID0gVFJVRTsKLSAgfQotCi0gIGZvcihjID0gRElHRVNUX01BWF9DT05URU5UX0xFTkdUSCAtIDE7ICpzdHIgJiYgYy0tOyBzdHIrKykgewotICAgIHN3aXRjaCgqc3RyKSB7Ci0gICAgY2FzZSAnXFwnOgotICAgICAgaWYoIWVzY2FwZSkgewotICAgICAgICAvKiBwb3NzaWJseSB0aGUgc3RhcnQgb2YgYW4gZXNjYXBlZCBxdW90ZSAqLwotICAgICAgICBlc2NhcGUgPSBUUlVFOwotICAgICAgICAqY29udGVudCsrID0gJ1xcJzsgLyogZXZlbiB0aG91Z2ggdGhpcyBpcyBhbiBlc2NhcGUgY2hhcmFjdGVyLCB3ZSBzdGlsbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUgaXQgYXMtaXMgaW4gdGhlIHRhcmdldCBidWZmZXIgKi8KLSAgICAgICAgY29udGludWU7Ci0gICAgICB9Ci0gICAgICBicmVhazsKLSAgICBjYXNlICcsJzoKLSAgICAgIGlmKCFzdGFydHNfd2l0aF9xdW90ZSkgewotICAgICAgICAvKiB0aGlzIHNpZ25hbHMgdGhlIGVuZCBvZiB0aGUgY29udGVudCBpZiB3ZSBkaWRuJ3QgZ2V0IGEgc3RhcnRpbmcKLSAgICAgICAgICAgcXVvdGUgYW5kIHRoZW4gd2UgZG8gInNsb3BweSIgcGFyc2luZyAqLwotICAgICAgICBjID0gMDsgLyogdGhlIGVuZCAqLwotICAgICAgICBjb250aW51ZTsKLSAgICAgIH0KLSAgICAgIGJyZWFrOwotICAgIGNhc2UgJ1xyJzoKLSAgICBjYXNlICdcbic6Ci0gICAgICAvKiBlbmQgb2Ygc3RyaW5nICovCi0gICAgICBjID0gMDsKLSAgICAgIGNvbnRpbnVlOwotICAgIGNhc2UgJ1wiJzoKLSAgICAgIGlmKCFlc2NhcGUgJiYgc3RhcnRzX3dpdGhfcXVvdGUpIHsKLSAgICAgICAgLyogZW5kIG9mIHN0cmluZyAqLwotICAgICAgICBjID0gMDsKLSAgICAgICAgY29udGludWU7Ci0gICAgICB9Ci0gICAgICBicmVhazsKLSAgICB9Ci0gICAgZXNjYXBlID0gRkFMU0U7Ci0gICAgKmNvbnRlbnQrKyA9ICpzdHI7Ci0gIH0KLSAgKmNvbnRlbnQgPSAwOwotCi0gICplbmRwdHIgPSBzdHI7Ci0KLSAgcmV0dXJuIDA7IC8qIGFsbCBpcyBmaW5lISAqLwotfQotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChDVVJMX0RJU0FCTEVfQ1JZUFRPX0FVVEgpICYmICFkZWZpbmVkKFVTRV9XSU5ET1dTX1NTUEkpCi0vKiBDb252ZXJ0IG1kNSBjaHVuayB0byBSRkMyNjE3IChzZWN0aW9uIDMuMS4zKSAtc3VpdGFibGUgYXNjaWkgc3RyaW5nKi8KLXN0YXRpYyB2b2lkIHNhc2xfZGlnZXN0X21kNV90b19hc2NpaSh1bnNpZ25lZCBjaGFyICpzb3VyY2UsIC8qIDE2IGJ5dGVzICovCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqZGVzdCkgLyogMzMgYnl0ZXMgKi8KLXsKLSAgaW50IGk7Ci0gIGZvcihpID0gMDsgaSA8IDE2OyBpKyspCi0gICAgc25wcmludGYoKGNoYXIgKikmZGVzdFtpKjJdLCAzLCAiJTAyeCIsIHNvdXJjZVtpXSk7Ci19Ci0KLS8qIFBlcmZvcm0gcXVvdGVkLXN0cmluZyBlc2NhcGluZyBhcyBkZXNjcmliZWQgaW4gUkZDMjYxNiBhbmQgaXRzIGVycmF0YSAqLwotc3RhdGljIGNoYXIgKnNhc2xfZGlnZXN0X3N0cmluZ19xdW90ZWQoY29uc3QgY2hhciAqc291cmNlKQotewotICBjaGFyICpkZXN0LCAqZDsKLSAgY29uc3QgY2hhciAqcyA9IHNvdXJjZTsKLSAgc2l6ZV90IG4gPSAxOyAvKiBudWxsIHRlcm1pbmF0b3IgKi8KLQotICAvKiBDYWxjdWxhdGUgc2l6ZSBuZWVkZWQgKi8KLSAgd2hpbGUoKnMpIHsKLSAgICArK247Ci0gICAgaWYoKnMgPT0gJyInIHx8ICpzID09ICdcXCcpIHsKLSAgICAgICsrbjsKLSAgICB9Ci0gICAgKytzOwotICB9Ci0KLSAgZGVzdCA9IG1hbGxvYyhuKTsKLSAgaWYoZGVzdCkgewotICAgIHMgPSBzb3VyY2U7Ci0gICAgZCA9IGRlc3Q7Ci0gICAgd2hpbGUoKnMpIHsKLSAgICAgIGlmKCpzID09ICciJyB8fCAqcyA9PSAnXFwnKSB7Ci0gICAgICAgICpkKysgPSAnXFwnOwotICAgICAgfQotICAgICAgKmQrKyA9ICpzKys7Ci0gICAgfQotICAgICpkID0gMDsKLSAgfQotCi0gIHJldHVybiBkZXN0OwotfQotCi0vKiBSZXRyaWV2ZXMgdGhlIHZhbHVlIGZvciBhIGNvcnJlc3BvbmRpbmcga2V5IGZyb20gdGhlIGNoYWxsZW5nZSBzdHJpbmcKLSAqIHJldHVybnMgVFJVRSBpZiB0aGUga2V5IGNvdWxkIGJlIGZvdW5kLCBGQUxTRSBpZiBpdCBkb2VzIG5vdCBleGlzdHMKLSAqLwotc3RhdGljIGJvb2wgc2FzbF9kaWdlc3RfZ2V0X2tleV92YWx1ZShjb25zdCBjaGFyICpjaGxnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICprZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKnZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbWF4X3ZhbF9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgZW5kX2NoYXIpCi17Ci0gIGNoYXIgKmZpbmRfcG9zOwotICBzaXplX3QgaTsKLQotICBmaW5kX3BvcyA9IHN0cnN0cihjaGxnLCBrZXkpOwotICBpZighZmluZF9wb3MpCi0gICAgcmV0dXJuIEZBTFNFOwotCi0gIGZpbmRfcG9zICs9IHN0cmxlbihrZXkpOwotCi0gIGZvcihpID0gMDsgKmZpbmRfcG9zICYmICpmaW5kX3BvcyAhPSBlbmRfY2hhciAmJiBpIDwgbWF4X3ZhbF9sZW4gLSAxOyArK2kpCi0gICAgdmFsdWVbaV0gPSAqZmluZF9wb3MrKzsKLSAgdmFsdWVbaV0gPSAnXDAnOwotCi0gIHJldHVybiBUUlVFOwotfQotCi1zdGF0aWMgQ1VSTGNvZGUgc2FzbF9kaWdlc3RfZ2V0X3FvcF92YWx1ZXMoY29uc3QgY2hhciAqb3B0aW9ucywgaW50ICp2YWx1ZSkKLXsKLSAgY2hhciAqdG1wOwotICBjaGFyICp0b2tlbjsKLSAgY2hhciAqdG9rX2J1ZjsKLQotICAvKiBJbml0aWFsaXNlIHRoZSBvdXRwdXQgKi8KLSAgKnZhbHVlID0gMDsKLQotICAvKiBUb2tlbmlzZSB0aGUgbGlzdCBvZiBxb3AgdmFsdWVzLiBVc2UgYSB0ZW1wb3JhcnkgY2xvbmUgb2YgdGhlIGJ1ZmZlciBzaW5jZQotICAgICBzdHJ0b2tfcigpIHJ1aW5zIGl0LiAqLwotICB0bXAgPSBzdHJkdXAob3B0aW9ucyk7Ci0gIGlmKCF0bXApCi0gICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7Ci0KLSAgdG9rZW4gPSBzdHJ0b2tfcih0bXAsICIsIiwgJnRva19idWYpOwotICB3aGlsZSh0b2tlbiAhPSBOVUxMKSB7Ci0gICAgaWYoQ3VybF9yYXdfZXF1YWwodG9rZW4sIERJR0VTVF9RT1BfVkFMVUVfU1RSSU5HX0FVVEgpKQotICAgICAgKnZhbHVlIHw9IERJR0VTVF9RT1BfVkFMVUVfQVVUSDsKLSAgICBlbHNlIGlmKEN1cmxfcmF3X2VxdWFsKHRva2VuLCBESUdFU1RfUU9QX1ZBTFVFX1NUUklOR19BVVRIX0lOVCkpCi0gICAgICAqdmFsdWUgfD0gRElHRVNUX1FPUF9WQUxVRV9BVVRIX0lOVDsKLSAgICBlbHNlIGlmKEN1cmxfcmF3X2VxdWFsKHRva2VuLCBESUdFU1RfUU9QX1ZBTFVFX1NUUklOR19BVVRIX0NPTkYpKQotICAgICAgKnZhbHVlIHw9IERJR0VTVF9RT1BfVkFMVUVfQVVUSF9DT05GOwotCi0gICAgdG9rZW4gPSBzdHJ0b2tfcihOVUxMLCAiLCIsICZ0b2tfYnVmKTsKLSAgfQotCi0gIGZyZWUodG1wKTsKLQotICByZXR1cm4gQ1VSTEVfT0s7Ci19Ci0jZW5kaWYgLyogIUNVUkxfRElTQUJMRV9DUllQVE9fQVVUSCAmJiAhVVNFX1dJTkRPV1NfU1NQSSAqLwotCi0jaWYgIWRlZmluZWQoVVNFX1dJTkRPV1NfU1NQSSkKLS8qCi0gKiBDdXJsX3Nhc2xfYnVpbGRfc3BuKCkKLSAqCi0gKiBUaGlzIGlzIHVzZWQgdG8gYnVpbGQgYSBTUE4gc3RyaW5nIGluIHRoZSBmb3JtYXQgc2VydmljZS9ob3N0LgotICoKLSAqIFBhcmFtZXRlcnM6Ci0gKgotICogc2VydmljZSAgW2luXSAtIFRoZSBzZXJ2aWNlIHR5cGUgc3VjaCBhcyB3d3csIHNtdHAsIHBvcCBvciBpbWFwLgotICogaG9zdCAgICAgW2luXSAtIFRoZSBob3N0IG5hbWUgb3IgcmVhbG0uCi0gKgotICogUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIG5ld2x5IGFsbG9jYXRlZCBTUE4uCi0gKi8KLWNoYXIgKkN1cmxfc2FzbF9idWlsZF9zcG4oY29uc3QgY2hhciAqc2VydmljZSwgY29uc3QgY2hhciAqaG9zdCkKLXsKLSAgLyogR2VuZXJhdGUgYW5kIHJldHVybiBvdXIgU1BOICovCi0gIHJldHVybiBhcHJpbnRmKCIlcy8lcyIsIHNlcnZpY2UsIGhvc3QpOwotfQotI2VuZGlmCi0KLS8qCi0gKiBzYXNsX2NyZWF0ZV9wbGFpbl9tZXNzYWdlKCkKLSAqCi0gKiBUaGlzIGlzIHVzZWQgdG8gZ2VuZXJhdGUgYW4gYWxyZWFkeSBlbmNvZGVkIFBMQUlOIG1lc3NhZ2UgcmVhZHkKLSAqIGZvciBzZW5kaW5nIHRvIHRoZSByZWNpcGllbnQuCi0gKgotICogUGFyYW1ldGVyczoKLSAqCi0gKiBkYXRhICAgIFtpbl0gICAgIC0gVGhlIHNlc3Npb24gaGFuZGxlLgotICogdXNlcnAgICBbaW5dICAgICAtIFRoZSB1c2VyIG5hbWUuCi0gKiBwYXNzZHdwIFtpbl0gICAgIC0gVGhlIHVzZXIncyBwYXNzd29yZC4KLSAqIG91dHB0ciAgW2luL291dF0gLSBUaGUgYWRkcmVzcyB3aGVyZSBhIHBvaW50ZXIgdG8gbmV3bHkgYWxsb2NhdGVkIG1lbW9yeQotICogICAgICAgICAgICAgICAgICAgIGhvbGRpbmcgdGhlIHJlc3VsdCB3aWxsIGJlIHN0b3JlZCB1cG9uIGNvbXBsZXRpb24uCi0gKiBvdXRsZW4gIFtvdXRdICAgIC0gVGhlIGxlbmd0aCBvZiB0aGUgb3V0cHV0IG1lc3NhZ2UuCi0gKgotICogUmV0dXJucyBDVVJMRV9PSyBvbiBzdWNjZXNzLgotICovCi1zdGF0aWMgQ1VSTGNvZGUgc2FzbF9jcmVhdGVfcGxhaW5fbWVzc2FnZShzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnVzZXJwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGFzc3dkcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipvdXRwdHIsIHNpemVfdCAqb3V0bGVuKQotewotICBDVVJMY29kZSByZXN1bHQ7Ci0gIGNoYXIgKnBsYWluYXV0aDsKLSAgc2l6ZV90IHVsZW47Ci0gIHNpemVfdCBwbGVuOwotCi0gIHVsZW4gPSBzdHJsZW4odXNlcnApOwotICBwbGVuID0gc3RybGVuKHBhc3N3ZHApOwotCi0gIHBsYWluYXV0aCA9IG1hbGxvYygyICogdWxlbiArIHBsZW4gKyAyKTsKLSAgaWYoIXBsYWluYXV0aCkgewotICAgICpvdXRsZW4gPSAwOwotICAgICpvdXRwdHIgPSBOVUxMOwotICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotICB9Ci0KLSAgLyogQ2FsY3VsYXRlIHRoZSByZXBseSAqLwotICBtZW1jcHkocGxhaW5hdXRoLCB1c2VycCwgdWxlbik7Ci0gIHBsYWluYXV0aFt1bGVuXSA9ICdcMCc7Ci0gIG1lbWNweShwbGFpbmF1dGggKyB1bGVuICsgMSwgdXNlcnAsIHVsZW4pOwotICBwbGFpbmF1dGhbMiAqIHVsZW4gKyAxXSA9ICdcMCc7Ci0gIG1lbWNweShwbGFpbmF1dGggKyAyICogdWxlbiArIDIsIHBhc3N3ZHAsIHBsZW4pOwotCi0gIC8qIEJhc2U2NCBlbmNvZGUgdGhlIHJlcGx5ICovCi0gIHJlc3VsdCA9IEN1cmxfYmFzZTY0X2VuY29kZShkYXRhLCBwbGFpbmF1dGgsIDIgKiB1bGVuICsgcGxlbiArIDIsIG91dHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dGxlbik7Ci0gIGZyZWUocGxhaW5hdXRoKTsKLSAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyoKLSAqIHNhc2xfY3JlYXRlX2xvZ2luX21lc3NhZ2UoKQotICoKLSAqIFRoaXMgaXMgdXNlZCB0byBnZW5lcmF0ZSBhbiBhbHJlYWR5IGVuY29kZWQgTE9HSU4gbWVzc2FnZSBjb250YWluaW5nIHRoZQotICogdXNlciBuYW1lIG9yIHBhc3N3b3JkIHJlYWR5IGZvciBzZW5kaW5nIHRvIHRoZSByZWNpcGllbnQuCi0gKgotICogUGFyYW1ldGVyczoKLSAqCi0gKiBkYXRhICAgIFtpbl0gICAgIC0gVGhlIHNlc3Npb24gaGFuZGxlLgotICogdmFsdWVwICBbaW5dICAgICAtIFRoZSB1c2VyIG5hbWUgb3IgdXNlcidzIHBhc3N3b3JkLgotICogb3V0cHRyICBbaW4vb3V0XSAtIFRoZSBhZGRyZXNzIHdoZXJlIGEgcG9pbnRlciB0byBuZXdseSBhbGxvY2F0ZWQgbWVtb3J5Ci0gKiAgICAgICAgICAgICAgICAgICAgaG9sZGluZyB0aGUgcmVzdWx0IHdpbGwgYmUgc3RvcmVkIHVwb24gY29tcGxldGlvbi4KLSAqIG91dGxlbiAgW291dF0gICAgLSBUaGUgbGVuZ3RoIG9mIHRoZSBvdXRwdXQgbWVzc2FnZS4KLSAqCi0gKiBSZXR1cm5zIENVUkxFX09LIG9uIHN1Y2Nlc3MuCi0gKi8KLXN0YXRpYyBDVVJMY29kZSBzYXNsX2NyZWF0ZV9sb2dpbl9tZXNzYWdlKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdmFsdWVwLCBjaGFyICoqb3V0cHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICpvdXRsZW4pCi17Ci0gIHNpemVfdCB2bGVuID0gc3RybGVuKHZhbHVlcCk7Ci0KLSAgaWYoIXZsZW4pIHsKLSAgICAvKiBDYWxjdWxhdGUgYW4gZW1wdHkgcmVwbHkgKi8KLSAgICAqb3V0cHRyID0gc3RyZHVwKCI9Iik7Ci0gICAgaWYoKm91dHB0cikgewotICAgICAgKm91dGxlbiA9IChzaXplX3QpIDE7Ci0gICAgICByZXR1cm4gQ1VSTEVfT0s7Ci0gICAgfQotCi0gICAgKm91dGxlbiA9IDA7Ci0gICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7Ci0gIH0KLQotICAvKiBCYXNlNjQgZW5jb2RlIHRoZSB2YWx1ZSAqLwotICByZXR1cm4gQ3VybF9iYXNlNjRfZW5jb2RlKGRhdGEsIHZhbHVlcCwgdmxlbiwgb3V0cHRyLCBvdXRsZW4pOwotfQotCi0vKgotICogc2FzbF9jcmVhdGVfZXh0ZXJuYWxfbWVzc2FnZSgpCi0gKgotICogVGhpcyBpcyB1c2VkIHRvIGdlbmVyYXRlIGFuIGFscmVhZHkgZW5jb2RlZCBFWFRFUk5BTCBtZXNzYWdlIGNvbnRhaW5pbmcKLSAqIHRoZSB1c2VyIG5hbWUgcmVhZHkgZm9yIHNlbmRpbmcgdG8gdGhlIHJlY2lwaWVudC4KLSAqCi0gKiBQYXJhbWV0ZXJzOgotICoKLSAqIGRhdGEgICAgW2luXSAgICAgLSBUaGUgc2Vzc2lvbiBoYW5kbGUuCi0gKiB1c2VyICAgIFtpbl0gICAgIC0gVGhlIHVzZXIgbmFtZS4KLSAqIG91dHB0ciAgW2luL291dF0gLSBUaGUgYWRkcmVzcyB3aGVyZSBhIHBvaW50ZXIgdG8gbmV3bHkgYWxsb2NhdGVkIG1lbW9yeQotICogICAgICAgICAgICAgICAgICAgIGhvbGRpbmcgdGhlIHJlc3VsdCB3aWxsIGJlIHN0b3JlZCB1cG9uIGNvbXBsZXRpb24uCi0gKiBvdXRsZW4gIFtvdXRdICAgIC0gVGhlIGxlbmd0aCBvZiB0aGUgb3V0cHV0IG1lc3NhZ2UuCi0gKgotICogUmV0dXJucyBDVVJMRV9PSyBvbiBzdWNjZXNzLgotICovCi1zdGF0aWMgQ1VSTGNvZGUgc2FzbF9jcmVhdGVfZXh0ZXJuYWxfbWVzc2FnZShzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnVzZXIsIGNoYXIgKipvdXRwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKm91dGxlbikKLXsKLSAgLyogVGhpcyBpcyB0aGUgc2FtZSBmb3JtYXR0aW5nIGFzIHRoZSBsb2dpbiBtZXNzYWdlLiAqLwotICByZXR1cm4gc2FzbF9jcmVhdGVfbG9naW5fbWVzc2FnZShkYXRhLCB1c2VyLCBvdXRwdHIsIG91dGxlbik7Ci19Ci0KLSNpZm5kZWYgQ1VSTF9ESVNBQkxFX0NSWVBUT19BVVRICi0gLyoKLSAqIHNhc2xfZGVjb2RlX2NyYW1fbWQ1X21lc3NhZ2UoKQotICoKLSAqIFRoaXMgaXMgdXNlZCB0byBkZWNvZGUgYW4gYWxyZWFkeSBlbmNvZGVkIENSQU0tTUQ1IGNoYWxsZW5nZSBtZXNzYWdlLgotICoKLSAqIFBhcmFtZXRlcnM6Ci0gKgotICogY2hsZzY0ICBbaW5dICAgICAtIFRoZSBiYXNlNjQgZW5jb2RlZCBjaGFsbGVuZ2UgbWVzc2FnZS4KLSAqIG91dHB0ciAgW2luL291dF0gLSBUaGUgYWRkcmVzcyB3aGVyZSBhIHBvaW50ZXIgdG8gbmV3bHkgYWxsb2NhdGVkIG1lbW9yeQotICogICAgICAgICAgICAgICAgICAgIGhvbGRpbmcgdGhlIHJlc3VsdCB3aWxsIGJlIHN0b3JlZCB1cG9uIGNvbXBsZXRpb24uCi0gKiBvdXRsZW4gIFtvdXRdICAgIC0gVGhlIGxlbmd0aCBvZiB0aGUgb3V0cHV0IG1lc3NhZ2UuCi0gKgotICogUmV0dXJucyBDVVJMRV9PSyBvbiBzdWNjZXNzLgotICovCi1zdGF0aWMgQ1VSTGNvZGUgc2FzbF9kZWNvZGVfY3JhbV9tZDVfbWVzc2FnZShjb25zdCBjaGFyICpjaGxnNjQsIGNoYXIgKipvdXRwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKm91dGxlbikKLXsKLSAgQ1VSTGNvZGUgcmVzdWx0ID0gQ1VSTEVfT0s7Ci0gIHNpemVfdCBjaGxnNjRsZW4gPSBzdHJsZW4oY2hsZzY0KTsKLQotICAqb3V0cHRyID0gTlVMTDsKLSAgKm91dGxlbiA9IDA7Ci0KLSAgLyogRGVjb2RlIHRoZSBjaGFsbGVuZ2UgaWYgbmVjZXNzYXJ5ICovCi0gIGlmKGNobGc2NGxlbiAmJiAqY2hsZzY0ICE9ICc9JykKLSAgICByZXN1bHQgPSBDdXJsX2Jhc2U2NF9kZWNvZGUoY2hsZzY0LCAodW5zaWduZWQgY2hhciAqKikgb3V0cHRyLCBvdXRsZW4pOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLSB9Ci0KLSAvKgotICogc2FzbF9jcmVhdGVfY3JhbV9tZDVfbWVzc2FnZSgpCi0gKgotICogVGhpcyBpcyB1c2VkIHRvIGdlbmVyYXRlIGFuIGFscmVhZHkgZW5jb2RlZCBDUkFNLU1ENSByZXNwb25zZSBtZXNzYWdlIHJlYWR5Ci0gKiBmb3Igc2VuZGluZyB0byB0aGUgcmVjaXBpZW50LgotICoKLSAqIFBhcmFtZXRlcnM6Ci0gKgotICogZGF0YSAgICBbaW5dICAgICAtIFRoZSBzZXNzaW9uIGhhbmRsZS4KLSAqIGNobGcgICAgW2luXSAgICAgLSBUaGUgY2hhbGxlbmdlLgotICogdXNlcnAgICBbaW5dICAgICAtIFRoZSB1c2VyIG5hbWUuCi0gKiBwYXNzZHdwIFtpbl0gICAgIC0gVGhlIHVzZXIncyBwYXNzd29yZC4KLSAqIG91dHB0ciAgW2luL291dF0gLSBUaGUgYWRkcmVzcyB3aGVyZSBhIHBvaW50ZXIgdG8gbmV3bHkgYWxsb2NhdGVkIG1lbW9yeQotICogICAgICAgICAgICAgICAgICAgIGhvbGRpbmcgdGhlIHJlc3VsdCB3aWxsIGJlIHN0b3JlZCB1cG9uIGNvbXBsZXRpb24uCi0gKiBvdXRsZW4gIFtvdXRdICAgIC0gVGhlIGxlbmd0aCBvZiB0aGUgb3V0cHV0IG1lc3NhZ2UuCi0gKgotICogUmV0dXJucyBDVVJMRV9PSyBvbiBzdWNjZXNzLgotICovCi1zdGF0aWMgQ1VSTGNvZGUgc2FzbF9jcmVhdGVfY3JhbV9tZDVfbWVzc2FnZShzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNobGcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp1c2VycCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhc3N3ZHAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqb3V0cHRyLCBzaXplX3QgKm91dGxlbikKLXsKLSAgQ1VSTGNvZGUgcmVzdWx0ID0gQ1VSTEVfT0s7Ci0gIHNpemVfdCBjaGxnbGVuID0gMDsKLSAgSE1BQ19jb250ZXh0ICpjdHh0OwotICB1bnNpZ25lZCBjaGFyIGRpZ2VzdFtNRDVfRElHRVNUX0xFTl07Ci0gIGNoYXIgKnJlc3BvbnNlOwotCi0gIGlmKGNobGcpCi0gICAgY2hsZ2xlbiA9IHN0cmxlbihjaGxnKTsKLQotICAvKiBDb21wdXRlIHRoZSBkaWdlc3QgdXNpbmcgdGhlIHBhc3N3b3JkIGFzIHRoZSBrZXkgKi8KLSAgY3R4dCA9IEN1cmxfSE1BQ19pbml0KEN1cmxfSE1BQ19NRDUsCi0gICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgdW5zaWduZWQgY2hhciAqKSBwYXNzd2RwLAotICAgICAgICAgICAgICAgICAgICAgICAgY3VybHhfdXp0b3VpKHN0cmxlbihwYXNzd2RwKSkpOwotICBpZighY3R4dCkKLSAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKLQotICAvKiBVcGRhdGUgdGhlIGRpZ2VzdCB3aXRoIHRoZSBnaXZlbiBjaGFsbGVuZ2UgKi8KLSAgaWYoY2hsZ2xlbiA+IDApCi0gICAgQ3VybF9ITUFDX3VwZGF0ZShjdHh0LCAoY29uc3QgdW5zaWduZWQgY2hhciAqKSBjaGxnLAotICAgICAgICAgICAgICAgICAgICAgY3VybHhfdXp0b3VpKGNobGdsZW4pKTsKLQotICAvKiBGaW5hbGlzZSB0aGUgZGlnZXN0ICovCi0gIEN1cmxfSE1BQ19maW5hbChjdHh0LCBkaWdlc3QpOwotCi0gIC8qIEdlbmVyYXRlIHRoZSByZXNwb25zZSAqLwotICByZXNwb25zZSA9IGFwcmludGYoCi0gICAgICAiJXMgJTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCIsCi0gICAgICAgICAgIHVzZXJwLCBkaWdlc3RbMF0sIGRpZ2VzdFsxXSwgZGlnZXN0WzJdLCBkaWdlc3RbM10sIGRpZ2VzdFs0XSwKLSAgICAgICAgICAgZGlnZXN0WzVdLCBkaWdlc3RbNl0sIGRpZ2VzdFs3XSwgZGlnZXN0WzhdLCBkaWdlc3RbOV0sIGRpZ2VzdFsxMF0sCi0gICAgICAgICAgIGRpZ2VzdFsxMV0sIGRpZ2VzdFsxMl0sIGRpZ2VzdFsxM10sIGRpZ2VzdFsxNF0sIGRpZ2VzdFsxNV0pOwotICBpZighcmVzcG9uc2UpCi0gICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7Ci0KLSAgLyogQmFzZTY0IGVuY29kZSB0aGUgcmVzcG9uc2UgKi8KLSAgcmVzdWx0ID0gQ3VybF9iYXNlNjRfZW5jb2RlKGRhdGEsIHJlc3BvbnNlLCAwLCBvdXRwdHIsIG91dGxlbik7Ci0KLSAgZnJlZShyZXNwb25zZSk7Ci0KLSAgcmV0dXJuIHJlc3VsdDsKLX0KLQotI2lmbmRlZiBVU0VfV0lORE9XU19TU1BJCi0vKgotICogc2FzbF9kZWNvZGVfZGlnZXN0X21kNV9tZXNzYWdlKCkKLSAqCi0gKiBUaGlzIGlzIHVzZWQgaW50ZXJuYWxseSB0byBkZWNvZGUgYW4gYWxyZWFkeSBlbmNvZGVkIERJR0VTVC1NRDUgY2hhbGxlbmdlCi0gKiBtZXNzYWdlIGludG8gdGhlIHNlcGVyYXRlIGF0dHJpYnV0ZXMuCi0gKgotICogUGFyYW1ldGVyczoKLSAqCi0gKiBjaGxnNjQgIFtpbl0gICAgIC0gVGhlIGJhc2U2NCBlbmNvZGVkIGNoYWxsZW5nZSBtZXNzYWdlLgotICogbm9uY2UgICBbaW4vb3V0XSAtIFRoZSBidWZmZXIgd2hlcmUgdGhlIG5vbmNlIHdpbGwgYmUgc3RvcmVkLgotICogbmxlbiAgICBbaW5dICAgICAtIFRoZSBsZW5ndGggb2YgdGhlIG5vbmNlIGJ1ZmZlci4KLSAqIHJlYWxtICAgW2luL291dF0gLSBUaGUgYnVmZmVyIHdoZXJlIHRoZSByZWFsbSB3aWxsIGJlIHN0b3JlZC4KLSAqIHJsZW4gICAgW2luXSAgICAgLSBUaGUgbGVuZ3RoIG9mIHRoZSByZWFsbSBidWZmZXIuCi0gKiBhbGcgICAgIFtpbi9vdXRdIC0gVGhlIGJ1ZmZlciB3aGVyZSB0aGUgYWxnb3JpdGhtIHdpbGwgYmUgc3RvcmVkLgotICogYWxlbiAgICBbaW5dICAgICAtIFRoZSBsZW5ndGggb2YgdGhlIGFsZ29yaXRobSBidWZmZXIuCi0gKiBxb3AgICAgIFtpbi9vdXRdIC0gVGhlIGJ1ZmZlciB3aGVyZSB0aGUgcW9wLW9wdGlvbnMgd2lsbCBiZSBzdG9yZWQuCi0gKiBxbGVuICAgIFtpbl0gICAgIC0gVGhlIGxlbmd0aCBvZiB0aGUgcW9wIGJ1ZmZlci4KLSAqCi0gKiBSZXR1cm5zIENVUkxFX09LIG9uIHN1Y2Nlc3MuCi0gKi8KLXN0YXRpYyBDVVJMY29kZSBzYXNsX2RlY29kZV9kaWdlc3RfbWQ1X21lc3NhZ2UoY29uc3QgY2hhciAqY2hsZzY0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpub25jZSwgc2l6ZV90IG5sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKnJlYWxtLCBzaXplX3QgcmxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqYWxnLCBzaXplX3QgYWxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqcW9wLCBzaXplX3QgcWxlbikKLXsKLSAgQ1VSTGNvZGUgcmVzdWx0ID0gQ1VSTEVfT0s7Ci0gIHVuc2lnbmVkIGNoYXIgKmNobGcgPSBOVUxMOwotICBzaXplX3QgY2hsZ2xlbiA9IDA7Ci0gIHNpemVfdCBjaGxnNjRsZW4gPSBzdHJsZW4oY2hsZzY0KTsKLQotICAvKiBEZWNvZGUgdGhlIGJhc2UtNjQgZW5jb2RlZCBjaGFsbGVuZ2UgbWVzc2FnZSAqLwotICBpZihjaGxnNjRsZW4gJiYgKmNobGc2NCAhPSAnPScpIHsKLSAgICByZXN1bHQgPSBDdXJsX2Jhc2U2NF9kZWNvZGUoY2hsZzY0LCAmY2hsZywgJmNobGdsZW4pOwotICAgIGlmKHJlc3VsdCkKLSAgICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KLQotICAvKiBFbnN1cmUgd2UgaGF2ZSBhIHZhbGlkIGNoYWxsZW5nZSBtZXNzYWdlICovCi0gIGlmKCFjaGxnKQotICAgIHJldHVybiBDVVJMRV9CQURfQ09OVEVOVF9FTkNPRElORzsKLQotICAvKiBSZXRyaWV2ZSBub25jZSBzdHJpbmcgZnJvbSB0aGUgY2hhbGxlbmdlICovCi0gIGlmKCFzYXNsX2RpZ2VzdF9nZXRfa2V5X3ZhbHVlKChjaGFyICopY2hsZywgIm5vbmNlPVwiIiwgbm9uY2UsIG5sZW4sICdcIicpKSB7Ci0gICAgZnJlZShjaGxnKTsKLSAgICByZXR1cm4gQ1VSTEVfQkFEX0NPTlRFTlRfRU5DT0RJTkc7Ci0gIH0KLQotICAvKiBSZXRyaWV2ZSByZWFsbSBzdHJpbmcgZnJvbSB0aGUgY2hhbGxlbmdlICovCi0gIGlmKCFzYXNsX2RpZ2VzdF9nZXRfa2V5X3ZhbHVlKChjaGFyICopY2hsZywgInJlYWxtPVwiIiwgcmVhbG0sIHJsZW4sICdcIicpKSB7Ci0gICAgLyogQ2hhbGxlbmdlIGRvZXMgbm90IGhhdmUgYSByZWFsbSwgc2V0IGVtcHR5IHN0cmluZyBbUkZDMjgzMV0gcGFnZSA2ICovCi0gICAgc3RyY3B5KHJlYWxtLCAiIik7Ci0gIH0KLQotICAvKiBSZXRyaWV2ZSBhbGdvcml0aG0gc3RyaW5nIGZyb20gdGhlIGNoYWxsZW5nZSAqLwotICBpZighc2FzbF9kaWdlc3RfZ2V0X2tleV92YWx1ZSgoY2hhciAqKWNobGcsICJhbGdvcml0aG09IiwgYWxnLCBhbGVuLCAnLCcpKSB7Ci0gICAgZnJlZShjaGxnKTsKLSAgICByZXR1cm4gQ1VSTEVfQkFEX0NPTlRFTlRfRU5DT0RJTkc7Ci0gIH0KLQotICAvKiBSZXRyaWV2ZSBxb3Atb3B0aW9ucyBzdHJpbmcgZnJvbSB0aGUgY2hhbGxlbmdlICovCi0gIGlmKCFzYXNsX2RpZ2VzdF9nZXRfa2V5X3ZhbHVlKChjaGFyICopY2hsZywgInFvcD1cIiIsIHFvcCwgcWxlbiwgJ1wiJykpIHsKLSAgICBmcmVlKGNobGcpOwotICAgIHJldHVybiBDVVJMRV9CQURfQ09OVEVOVF9FTkNPRElORzsKLSAgfQotCi0gIGZyZWUoY2hsZyk7Ci0KLSAgcmV0dXJuIENVUkxFX09LOwotfQotCi0vKgotICogQ3VybF9zYXNsX2NyZWF0ZV9kaWdlc3RfbWQ1X21lc3NhZ2UoKQotICoKLSAqIFRoaXMgaXMgdXNlZCB0byBnZW5lcmF0ZSBhbiBhbHJlYWR5IGVuY29kZWQgRElHRVNULU1ENSByZXNwb25zZSBtZXNzYWdlCi0gKiByZWFkeSBmb3Igc2VuZGluZyB0byB0aGUgcmVjaXBpZW50LgotICoKLSAqIFBhcmFtZXRlcnM6Ci0gKgotICogZGF0YSAgICBbaW5dICAgICAtIFRoZSBzZXNzaW9uIGhhbmRsZS4KLSAqIGNobGc2NCAgW2luXSAgICAgLSBUaGUgYmFzZTY0IGVuY29kZWQgY2hhbGxlbmdlIG1lc3NhZ2UuCi0gKiB1c2VycCAgIFtpbl0gICAgIC0gVGhlIHVzZXIgbmFtZS4KLSAqIHBhc3Nkd3AgW2luXSAgICAgLSBUaGUgdXNlcidzIHBhc3N3b3JkLgotICogc2VydmljZSBbaW5dICAgICAtIFRoZSBzZXJ2aWNlIHR5cGUgc3VjaCBhcyB3d3csIHNtdHAsIHBvcCBvciBpbWFwLgotICogb3V0cHRyICBbaW4vb3V0XSAtIFRoZSBhZGRyZXNzIHdoZXJlIGEgcG9pbnRlciB0byBuZXdseSBhbGxvY2F0ZWQgbWVtb3J5Ci0gKiAgICAgICAgICAgICAgICAgICAgaG9sZGluZyB0aGUgcmVzdWx0IHdpbGwgYmUgc3RvcmVkIHVwb24gY29tcGxldGlvbi4KLSAqIG91dGxlbiAgW291dF0gICAgLSBUaGUgbGVuZ3RoIG9mIHRoZSBvdXRwdXQgbWVzc2FnZS4KLSAqCi0gKiBSZXR1cm5zIENVUkxFX09LIG9uIHN1Y2Nlc3MuCi0gKi8KLUNVUkxjb2RlIEN1cmxfc2FzbF9jcmVhdGVfZGlnZXN0X21kNV9tZXNzYWdlKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY2hsZzY0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdXNlcnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwYXNzd2RwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc2VydmljZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipvdXRwdHIsIHNpemVfdCAqb3V0bGVuKQotewotICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKLSAgc2l6ZV90IGk7Ci0gIE1ENV9jb250ZXh0ICpjdHh0OwotICBjaGFyICpyZXNwb25zZSA9IE5VTEw7Ci0gIHVuc2lnbmVkIGNoYXIgZGlnZXN0W01ENV9ESUdFU1RfTEVOXTsKLSAgY2hhciBIQTFfaGV4WzIgKiBNRDVfRElHRVNUX0xFTiArIDFdOwotICBjaGFyIEhBMl9oZXhbMiAqIE1ENV9ESUdFU1RfTEVOICsgMV07Ci0gIGNoYXIgcmVzcF9oYXNoX2hleFsyICogTUQ1X0RJR0VTVF9MRU4gKyAxXTsKLSAgY2hhciBub25jZVs2NF07Ci0gIGNoYXIgcmVhbG1bMTI4XTsKLSAgY2hhciBhbGdvcml0aG1bNjRdOwotICBjaGFyIHFvcF9vcHRpb25zWzY0XTsKLSAgaW50IHFvcF92YWx1ZXM7Ci0gIGNoYXIgY25vbmNlWzMzXTsKLSAgdW5zaWduZWQgaW50IGVudHJvcHlbNF07Ci0gIGNoYXIgbm9uY2VDb3VudFtdID0gIjAwMDAwMDAxIjsKLSAgY2hhciBtZXRob2RbXSAgICAgPSAiQVVUSEVOVElDQVRFIjsKLSAgY2hhciBxb3BbXSAgICAgICAgPSBESUdFU1RfUU9QX1ZBTFVFX1NUUklOR19BVVRIOwotICBjaGFyICpzcG4gICAgICAgICA9IE5VTEw7Ci0KLSAgLyogRGVjb2RlIHRoZSBjaGFsbGFuZ2UgbWVzc2FnZSAqLwotICByZXN1bHQgPSBzYXNsX2RlY29kZV9kaWdlc3RfbWQ1X21lc3NhZ2UoY2hsZzY0LCBub25jZSwgc2l6ZW9mKG5vbmNlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWxtLCBzaXplb2YocmVhbG0pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxnb3JpdGhtLCBzaXplb2YoYWxnb3JpdGhtKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHFvcF9vcHRpb25zLCBzaXplb2YocW9wX29wdGlvbnMpKTsKLSAgaWYocmVzdWx0KQotICAgIHJldHVybiByZXN1bHQ7Ci0KLSAgLyogV2Ugb25seSBzdXBwb3J0IG1kNSBzZXNzaW9ucyAqLwotICBpZihzdHJjbXAoYWxnb3JpdGhtLCAibWQ1LXNlc3MiKSAhPSAwKQotICAgIHJldHVybiBDVVJMRV9CQURfQ09OVEVOVF9FTkNPRElORzsKLQotICAvKiBHZXQgdGhlIHFvcC12YWx1ZXMgZnJvbSB0aGUgcW9wLW9wdGlvbnMgKi8KLSAgcmVzdWx0ID0gc2FzbF9kaWdlc3RfZ2V0X3FvcF92YWx1ZXMocW9wX29wdGlvbnMsICZxb3BfdmFsdWVzKTsKLSAgaWYocmVzdWx0KQotICAgIHJldHVybiByZXN1bHQ7Ci0KLSAgLyogV2Ugb25seSBzdXBwb3J0IGF1dGggcXVhbGl0eS1vZi1wcm90ZWN0aW9uICovCi0gIGlmKCEocW9wX3ZhbHVlcyAmIERJR0VTVF9RT1BfVkFMVUVfQVVUSCkpCi0gICAgcmV0dXJuIENVUkxFX0JBRF9DT05URU5UX0VOQ09ESU5HOwotCi0gIC8qIEdlbmVyYXRlIDE2IGJ5dGVzIG9mIHJhbmRvbSBkYXRhICovCi0gIGVudHJvcHlbMF0gPSBDdXJsX3JhbmQoZGF0YSk7Ci0gIGVudHJvcHlbMV0gPSBDdXJsX3JhbmQoZGF0YSk7Ci0gIGVudHJvcHlbMl0gPSBDdXJsX3JhbmQoZGF0YSk7Ci0gIGVudHJvcHlbM10gPSBDdXJsX3JhbmQoZGF0YSk7Ci0KLSAgLyogQ29udmVydCB0aGUgcmFuZG9tIGRhdGEgaW50byBhIDMyIGJ5dGUgaGV4IHN0cmluZyAqLwotICBzbnByaW50Zihjbm9uY2UsIHNpemVvZihjbm9uY2UpLCAiJTA4eCUwOHglMDh4JTA4eCIsCi0gICAgICAgICAgIGVudHJvcHlbMF0sIGVudHJvcHlbMV0sIGVudHJvcHlbMl0sIGVudHJvcHlbM10pOwotCi0gIC8qIFNvIGZhciBzbyBnb29kLCBub3cgY2FsY3VsYXRlIEExIGFuZCBIKEExKSBhY2NvcmRpbmcgdG8gUkZDIDI4MzEgKi8KLSAgY3R4dCA9IEN1cmxfTUQ1X2luaXQoQ3VybF9ESUdFU1RfTUQ1KTsKLSAgaWYoIWN0eHQpCi0gICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7Ci0KLSAgQ3VybF9NRDVfdXBkYXRlKGN0eHQsIChjb25zdCB1bnNpZ25lZCBjaGFyICopIHVzZXJwLAotICAgICAgICAgICAgICAgICAgY3VybHhfdXp0b3VpKHN0cmxlbih1c2VycCkpKTsKLSAgQ3VybF9NRDVfdXBkYXRlKGN0eHQsIChjb25zdCB1bnNpZ25lZCBjaGFyICopICI6IiwgMSk7Ci0gIEN1cmxfTUQ1X3VwZGF0ZShjdHh0LCAoY29uc3QgdW5zaWduZWQgY2hhciAqKSByZWFsbSwKLSAgICAgICAgICAgICAgICAgIGN1cmx4X3V6dG91aShzdHJsZW4ocmVhbG0pKSk7Ci0gIEN1cmxfTUQ1X3VwZGF0ZShjdHh0LCAoY29uc3QgdW5zaWduZWQgY2hhciAqKSAiOiIsIDEpOwotICBDdXJsX01ENV91cGRhdGUoY3R4dCwgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgcGFzc3dkcCwKLSAgICAgICAgICAgICAgICAgIGN1cmx4X3V6dG91aShzdHJsZW4ocGFzc3dkcCkpKTsKLSAgQ3VybF9NRDVfZmluYWwoY3R4dCwgZGlnZXN0KTsKLQotICBjdHh0ID0gQ3VybF9NRDVfaW5pdChDdXJsX0RJR0VTVF9NRDUpOwotICBpZighY3R4dCkKLSAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKLQotICBDdXJsX01ENV91cGRhdGUoY3R4dCwgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgZGlnZXN0LCBNRDVfRElHRVNUX0xFTik7Ci0gIEN1cmxfTUQ1X3VwZGF0ZShjdHh0LCAoY29uc3QgdW5zaWduZWQgY2hhciAqKSAiOiIsIDEpOwotICBDdXJsX01ENV91cGRhdGUoY3R4dCwgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgbm9uY2UsCi0gICAgICAgICAgICAgICAgICBjdXJseF91enRvdWkoc3RybGVuKG5vbmNlKSkpOwotICBDdXJsX01ENV91cGRhdGUoY3R4dCwgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgIjoiLCAxKTsKLSAgQ3VybF9NRDVfdXBkYXRlKGN0eHQsIChjb25zdCB1bnNpZ25lZCBjaGFyICopIGNub25jZSwKLSAgICAgICAgICAgICAgICAgIGN1cmx4X3V6dG91aShzdHJsZW4oY25vbmNlKSkpOwotICBDdXJsX01ENV9maW5hbChjdHh0LCBkaWdlc3QpOwotCi0gIC8qIENvbnZlcnQgY2FsY3VsYXRlZCAxNiBvY3RldCBoZXggaW50byAzMiBieXRlcyBzdHJpbmcgKi8KLSAgZm9yKGkgPSAwOyBpIDwgTUQ1X0RJR0VTVF9MRU47IGkrKykKLSAgICBzbnByaW50ZigmSEExX2hleFsyICogaV0sIDMsICIlMDJ4IiwgZGlnZXN0W2ldKTsKLQotICAvKiBHZW5lcmF0ZSBvdXIgU1BOICovCi0gIHNwbiA9IEN1cmxfc2FzbF9idWlsZF9zcG4oc2VydmljZSwgcmVhbG0pOwotICBpZighc3BuKQotICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotCi0gIC8qIENhbGN1bGF0ZSBIKEEyKSAqLwotICBjdHh0ID0gQ3VybF9NRDVfaW5pdChDdXJsX0RJR0VTVF9NRDUpOwotICBpZighY3R4dCkgewotICAgIGZyZWUoc3BuKTsKLQotICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotICB9Ci0KLSAgQ3VybF9NRDVfdXBkYXRlKGN0eHQsIChjb25zdCB1bnNpZ25lZCBjaGFyICopIG1ldGhvZCwKLSAgICAgICAgICAgICAgICAgIGN1cmx4X3V6dG91aShzdHJsZW4obWV0aG9kKSkpOwotICBDdXJsX01ENV91cGRhdGUoY3R4dCwgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgIjoiLCAxKTsKLSAgQ3VybF9NRDVfdXBkYXRlKGN0eHQsIChjb25zdCB1bnNpZ25lZCBjaGFyICopIHNwbiwKLSAgICAgICAgICAgICAgICAgIGN1cmx4X3V6dG91aShzdHJsZW4oc3BuKSkpOwotICBDdXJsX01ENV9maW5hbChjdHh0LCBkaWdlc3QpOwotCi0gIGZvcihpID0gMDsgaSA8IE1ENV9ESUdFU1RfTEVOOyBpKyspCi0gICAgc25wcmludGYoJkhBMl9oZXhbMiAqIGldLCAzLCAiJTAyeCIsIGRpZ2VzdFtpXSk7Ci0KLSAgLyogTm93IGNhbGN1bGF0ZSB0aGUgcmVzcG9uc2UgaGFzaCAqLwotICBjdHh0ID0gQ3VybF9NRDVfaW5pdChDdXJsX0RJR0VTVF9NRDUpOwotICBpZighY3R4dCkgewotICAgIGZyZWUoc3BuKTsKLQotICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotICB9Ci0KLSAgQ3VybF9NRDVfdXBkYXRlKGN0eHQsIChjb25zdCB1bnNpZ25lZCBjaGFyICopIEhBMV9oZXgsIDIgKiBNRDVfRElHRVNUX0xFTik7Ci0gIEN1cmxfTUQ1X3VwZGF0ZShjdHh0LCAoY29uc3QgdW5zaWduZWQgY2hhciAqKSAiOiIsIDEpOwotICBDdXJsX01ENV91cGRhdGUoY3R4dCwgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgbm9uY2UsCi0gICAgICAgICAgICAgICAgICBjdXJseF91enRvdWkoc3RybGVuKG5vbmNlKSkpOwotICBDdXJsX01ENV91cGRhdGUoY3R4dCwgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgIjoiLCAxKTsKLQotICBDdXJsX01ENV91cGRhdGUoY3R4dCwgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgbm9uY2VDb3VudCwKLSAgICAgICAgICAgICAgICAgIGN1cmx4X3V6dG91aShzdHJsZW4obm9uY2VDb3VudCkpKTsKLSAgQ3VybF9NRDVfdXBkYXRlKGN0eHQsIChjb25zdCB1bnNpZ25lZCBjaGFyICopICI6IiwgMSk7Ci0gIEN1cmxfTUQ1X3VwZGF0ZShjdHh0LCAoY29uc3QgdW5zaWduZWQgY2hhciAqKSBjbm9uY2UsCi0gICAgICAgICAgICAgICAgICBjdXJseF91enRvdWkoc3RybGVuKGNub25jZSkpKTsKLSAgQ3VybF9NRDVfdXBkYXRlKGN0eHQsIChjb25zdCB1bnNpZ25lZCBjaGFyICopICI6IiwgMSk7Ci0gIEN1cmxfTUQ1X3VwZGF0ZShjdHh0LCAoY29uc3QgdW5zaWduZWQgY2hhciAqKSBxb3AsCi0gICAgICAgICAgICAgICAgICBjdXJseF91enRvdWkoc3RybGVuKHFvcCkpKTsKLSAgQ3VybF9NRDVfdXBkYXRlKGN0eHQsIChjb25zdCB1bnNpZ25lZCBjaGFyICopICI6IiwgMSk7Ci0KLSAgQ3VybF9NRDVfdXBkYXRlKGN0eHQsIChjb25zdCB1bnNpZ25lZCBjaGFyICopIEhBMl9oZXgsIDIgKiBNRDVfRElHRVNUX0xFTik7Ci0gIEN1cmxfTUQ1X2ZpbmFsKGN0eHQsIGRpZ2VzdCk7Ci0KLSAgZm9yKGkgPSAwOyBpIDwgTUQ1X0RJR0VTVF9MRU47IGkrKykKLSAgICBzbnByaW50ZigmcmVzcF9oYXNoX2hleFsyICogaV0sIDMsICIlMDJ4IiwgZGlnZXN0W2ldKTsKLQotICAvKiBHZW5lcmF0ZSB0aGUgcmVzcG9uc2UgKi8KLSAgcmVzcG9uc2UgPSBhcHJpbnRmKCJ1c2VybmFtZT1cIiVzXCIscmVhbG09XCIlc1wiLG5vbmNlPVwiJXNcIiwiCi0gICAgICAgICAgICAgICAgICAgICAiY25vbmNlPVwiJXNcIixuYz1cIiVzXCIsZGlnZXN0LXVyaT1cIiVzXCIscmVzcG9uc2U9JXMsIgotICAgICAgICAgICAgICAgICAgICAgInFvcD0lcyIsCi0gICAgICAgICAgICAgICAgICAgICB1c2VycCwgcmVhbG0sIG5vbmNlLAotICAgICAgICAgICAgICAgICAgICAgY25vbmNlLCBub25jZUNvdW50LCBzcG4sIHJlc3BfaGFzaF9oZXgsIHFvcCk7Ci0gIGZyZWUoc3BuKTsKLSAgaWYoIXJlc3BvbnNlKQotICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotCi0gIC8qIEJhc2U2NCBlbmNvZGUgdGhlIHJlc3BvbnNlICovCi0gIHJlc3VsdCA9IEN1cmxfYmFzZTY0X2VuY29kZShkYXRhLCByZXNwb25zZSwgMCwgb3V0cHRyLCBvdXRsZW4pOwotCi0gIGZyZWUocmVzcG9uc2UpOwotCi0gIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qCi0gKiBDdXJsX3Nhc2xfZGVjb2RlX2RpZ2VzdF9odHRwX21lc3NhZ2UoKQotICoKLSAqIFRoaXMgaXMgdXNlZCB0byBkZWNvZGUgYSBIVFRQIERJR0VTVCBjaGFsbGVuZ2UgbWVzc2FnZSBpbnRvIHRoZSBzZXBlcmF0ZQotICogYXR0cmlidXRlcy4KLSAqCi0gKiBQYXJhbWV0ZXJzOgotICoKLSAqIGNobGcgICAgW2luXSAgICAgLSBUaGUgY2hhbGxlbmdlIG1lc3NhZ2UuCi0gKiBkaWdlc3QgIFtpbi9vdXRdIC0gVGhlIGRpZ2VzdCBkYXRhIHN0cnVjdCBiZWluZyB1c2VkIGFuZCBtb2RpZmllZC4KLSAqCi0gKiBSZXR1cm5zIENVUkxFX09LIG9uIHN1Y2Nlc3MuCi0gKi8KLUNVUkxjb2RlIEN1cmxfc2FzbF9kZWNvZGVfZGlnZXN0X2h0dHBfbWVzc2FnZShjb25zdCBjaGFyICpjaGxnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkaWdlc3RkYXRhICpkaWdlc3QpCi17Ci0gIGJvb2wgYmVmb3JlID0gRkFMU0U7IC8qIGdvdCBhIG5vbmNlIGJlZm9yZSAqLwotICBib29sIGZvdW5kQXV0aCA9IEZBTFNFOwotICBib29sIGZvdW5kQXV0aEludCA9IEZBTFNFOwotICBjaGFyICp0b2tlbiA9IE5VTEw7Ci0gIGNoYXIgKnRtcCA9IE5VTEw7Ci0KLSAgLyogSWYgd2UgYWxyZWFkeSBoYXZlIHJlY2VpdmVkIGEgbm9uY2UsIGtlZXAgdGhhdCBpbiBtaW5kICovCi0gIGlmKGRpZ2VzdC0+bm9uY2UpCi0gICAgYmVmb3JlID0gVFJVRTsKLQotICAvKiBDbGVhbiB1cCBhbnkgZm9ybWVyIGxlZnRvdmVycyBhbmQgaW5pdGlhbGlzZSB0byBkZWZhdWx0cyAqLwotICBDdXJsX3Nhc2xfZGlnZXN0X2NsZWFudXAoZGlnZXN0KTsKLQotICBmb3IoOzspIHsKLSAgICBjaGFyIHZhbHVlW0RJR0VTVF9NQVhfVkFMVUVfTEVOR1RIXTsKLSAgICBjaGFyIGNvbnRlbnRbRElHRVNUX01BWF9DT05URU5UX0xFTkdUSF07Ci0KLSAgICAvKiBQYXNzIGFsbCBhZGRpdGlvbmFsIHNwYWNlcyBoZXJlICovCi0gICAgd2hpbGUoKmNobGcgJiYgSVNTUEFDRSgqY2hsZykpCi0gICAgICBjaGxnKys7Ci0KLSAgICAvKiBFeHRyYWN0IGEgdmFsdWU9Y29udGVudCBwYWlyICovCi0gICAgaWYoIUN1cmxfc2FzbF9kaWdlc3RfZ2V0X3BhaXIoY2hsZywgdmFsdWUsIGNvbnRlbnQsICZjaGxnKSkgewotICAgICAgaWYoQ3VybF9yYXdfZXF1YWwodmFsdWUsICJub25jZSIpKSB7Ci0gICAgICAgIGRpZ2VzdC0+bm9uY2UgPSBzdHJkdXAoY29udGVudCk7Ci0gICAgICAgIGlmKCFkaWdlc3QtPm5vbmNlKQotICAgICAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotICAgICAgfQotICAgICAgZWxzZSBpZihDdXJsX3Jhd19lcXVhbCh2YWx1ZSwgInN0YWxlIikpIHsKLSAgICAgICAgaWYoQ3VybF9yYXdfZXF1YWwoY29udGVudCwgInRydWUiKSkgewotICAgICAgICAgIGRpZ2VzdC0+c3RhbGUgPSBUUlVFOwotICAgICAgICAgIGRpZ2VzdC0+bmMgPSAxOyAvKiB3ZSBtYWtlIGEgbmV3IG5vbmNlIG5vdyAqLwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmKEN1cmxfcmF3X2VxdWFsKHZhbHVlLCAicmVhbG0iKSkgewotICAgICAgICBkaWdlc3QtPnJlYWxtID0gc3RyZHVwKGNvbnRlbnQpOwotICAgICAgICBpZighZGlnZXN0LT5yZWFsbSkKLSAgICAgICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYoQ3VybF9yYXdfZXF1YWwodmFsdWUsICJvcGFxdWUiKSkgewotICAgICAgICBkaWdlc3QtPm9wYXF1ZSA9IHN0cmR1cChjb250ZW50KTsKLSAgICAgICAgaWYoIWRpZ2VzdC0+b3BhcXVlKQotICAgICAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotICAgICAgfQotICAgICAgZWxzZSBpZihDdXJsX3Jhd19lcXVhbCh2YWx1ZSwgInFvcCIpKSB7Ci0gICAgICAgIGNoYXIgKnRva19idWY7Ci0gICAgICAgIC8qIFRva2VuaXplIHRoZSBsaXN0IGFuZCBjaG9vc2UgYXV0aCBpZiBwb3NzaWJsZSwgdXNlIGEgdGVtcG9yYXJ5Ci0gICAgICAgICAgICBjbG9uZSBvZiB0aGUgYnVmZmVyIHNpbmNlIHN0cnRva19yKCkgcnVpbnMgaXQgKi8KLSAgICAgICAgdG1wID0gc3RyZHVwKGNvbnRlbnQpOwotICAgICAgICBpZighdG1wKQotICAgICAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotCi0gICAgICAgIHRva2VuID0gc3RydG9rX3IodG1wLCAiLCIsICZ0b2tfYnVmKTsKLSAgICAgICAgd2hpbGUodG9rZW4gIT0gTlVMTCkgewotICAgICAgICAgIGlmKEN1cmxfcmF3X2VxdWFsKHRva2VuLCBESUdFU1RfUU9QX1ZBTFVFX1NUUklOR19BVVRIKSkgewotICAgICAgICAgICAgZm91bmRBdXRoID0gVFJVRTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZSBpZihDdXJsX3Jhd19lcXVhbCh0b2tlbiwgRElHRVNUX1FPUF9WQUxVRV9TVFJJTkdfQVVUSF9JTlQpKSB7Ci0gICAgICAgICAgICBmb3VuZEF1dGhJbnQgPSBUUlVFOwotICAgICAgICAgIH0KLSAgICAgICAgICB0b2tlbiA9IHN0cnRva19yKE5VTEwsICIsIiwgJnRva19idWYpOwotICAgICAgICB9Ci0KLSAgICAgICAgZnJlZSh0bXApOwotCi0gICAgICAgIC8qIFNlbGVjdCBvbmx5IGF1dGggb3IgYXV0aC1pbnQuIE90aGVyd2lzZSwgaWdub3JlICovCi0gICAgICAgIGlmKGZvdW5kQXV0aCkgewotICAgICAgICAgIGRpZ2VzdC0+cW9wID0gc3RyZHVwKERJR0VTVF9RT1BfVkFMVUVfU1RSSU5HX0FVVEgpOwotICAgICAgICAgIGlmKCFkaWdlc3QtPnFvcCkKLSAgICAgICAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYoZm91bmRBdXRoSW50KSB7Ci0gICAgICAgICAgZGlnZXN0LT5xb3AgPSBzdHJkdXAoRElHRVNUX1FPUF9WQUxVRV9TVFJJTkdfQVVUSF9JTlQpOwotICAgICAgICAgIGlmKCFkaWdlc3QtPnFvcCkKLSAgICAgICAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmKEN1cmxfcmF3X2VxdWFsKHZhbHVlLCAiYWxnb3JpdGhtIikpIHsKLSAgICAgICAgZGlnZXN0LT5hbGdvcml0aG0gPSBzdHJkdXAoY29udGVudCk7Ci0gICAgICAgIGlmKCFkaWdlc3QtPmFsZ29yaXRobSkKLSAgICAgICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKLQotICAgICAgICBpZihDdXJsX3Jhd19lcXVhbChjb250ZW50LCAiTUQ1LXNlc3MiKSkKLSAgICAgICAgICBkaWdlc3QtPmFsZ28gPSBDVVJMRElHRVNUQUxHT19NRDVTRVNTOwotICAgICAgICBlbHNlIGlmKEN1cmxfcmF3X2VxdWFsKGNvbnRlbnQsICJNRDUiKSkKLSAgICAgICAgICBkaWdlc3QtPmFsZ28gPSBDVVJMRElHRVNUQUxHT19NRDU7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICByZXR1cm4gQ1VSTEVfQkFEX0NPTlRFTlRfRU5DT0RJTkc7Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAgICAgLyogdW5rbm93biBzcGVjaWZpZXIsIGlnbm9yZSBpdCEgKi8KLSAgICAgIH0KLSAgICB9Ci0gICAgZWxzZQotICAgICAgYnJlYWs7IC8qIHdlJ3JlIGRvbmUgaGVyZSAqLwotCi0gICAgLyogUGFzcyBhbGwgYWRkaXRpb25hbCBzcGFjZXMgaGVyZSAqLwotICAgIHdoaWxlKCpjaGxnICYmIElTU1BBQ0UoKmNobGcpKQotICAgICAgY2hsZysrOwotCi0gICAgLyogQWxsb3cgdGhlIGxpc3QgdG8gYmUgY29tbWEtc2VwYXJhdGVkICovCi0gICAgaWYoJywnID09ICpjaGxnKQotICAgICAgY2hsZysrOwotICB9Ci0KLSAgLyogV2UgaGFkIGEgbm9uY2Ugc2luY2UgYmVmb3JlLCBhbmQgd2UgZ290IGFub3RoZXIgb25lIG5vdyB3aXRob3V0Ci0gICAgICdzdGFsZT10cnVlJy4gVGhpcyBtZWFucyB3ZSBwcm92aWRlZCBiYWQgY3JlZGVudGlhbHMgaW4gdGhlIHByZXZpb3VzCi0gICAgIHJlcXVlc3QgKi8KLSAgaWYoYmVmb3JlICYmICFkaWdlc3QtPnN0YWxlKQotICAgIHJldHVybiBDVVJMRV9CQURfQ09OVEVOVF9FTkNPRElORzsKLQotICAvKiBXZSBnb3QgdGhpcyBoZWFkZXIgd2l0aG91dCBhIG5vbmNlLCB0aGF0J3MgYSBiYWQgRGlnZXN0IGxpbmUhICovCi0gIGlmKCFkaWdlc3QtPm5vbmNlKQotICAgIHJldHVybiBDVVJMRV9CQURfQ09OVEVOVF9FTkNPRElORzsKLQotICByZXR1cm4gQ1VSTEVfT0s7Ci19Ci0KLS8qCi0gKiBDdXJsX3Nhc2xfY3JlYXRlX2RpZ2VzdF9odHRwX21lc3NhZ2UoKQotICoKLSAqIFRoaXMgaXMgdXNlZCB0byBnZW5lcmF0ZSBhIEhUVFAgRElHRVNUIHJlc3BvbnNlIG1lc3NhZ2UgcmVhZHkgZm9yIHNlbmRpbmcKLSAqIHRvIHRoZSByZWNpcGllbnQuCi0gKgotICogUGFyYW1ldGVyczoKLSAqCi0gKiBkYXRhICAgIFtpbl0gICAgIC0gVGhlIHNlc3Npb24gaGFuZGxlLgotICogdXNlcnAgICBbaW5dICAgICAtIFRoZSB1c2VyIG5hbWUuCi0gKiBwYXNzZHdwIFtpbl0gICAgIC0gVGhlIHVzZXIncyBwYXNzd29yZC4KLSAqIHJlcXVlc3QgW2luXSAgICAgLSBUaGUgSFRUUCByZXF1ZXN0LgotICogdXJpcGF0aCBbaW5dICAgICAtIFRoZSBwYXRoIG9mIHRoZSBIVFRQIHVyaS4KLSAqIGRpZ2VzdCAgW2luL291dF0gLSBUaGUgZGlnZXN0IGRhdGEgc3RydWN0IGJlaW5nIHVzZWQgYW5kIG1vZGlmaWVkLgotICogb3V0cHRyICBbaW4vb3V0XSAtIFRoZSBhZGRyZXNzIHdoZXJlIGEgcG9pbnRlciB0byBuZXdseSBhbGxvY2F0ZWQgbWVtb3J5Ci0gKiAgICAgICAgICAgICAgICAgICAgaG9sZGluZyB0aGUgcmVzdWx0IHdpbGwgYmUgc3RvcmVkIHVwb24gY29tcGxldGlvbi4KLSAqIG91dGxlbiAgW291dF0gICAgLSBUaGUgbGVuZ3RoIG9mIHRoZSBvdXRwdXQgbWVzc2FnZS4KLSAqCi0gKiBSZXR1cm5zIENVUkxFX09LIG9uIHN1Y2Nlc3MuCi0gKi8KLUNVUkxjb2RlIEN1cmxfc2FzbF9jcmVhdGVfZGlnZXN0X2h0dHBfbWVzc2FnZShzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp1c2VycCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwYXNzd2RwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnJlcXVlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqdXJpcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZGlnZXN0ZGF0YSAqZGlnZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipvdXRwdHIsIHNpemVfdCAqb3V0bGVuKQotewotICBDVVJMY29kZSByZXN1bHQ7Ci0gIHVuc2lnbmVkIGNoYXIgbWQ1YnVmWzE2XTsgLyogMTYgYnl0ZXMvMTI4IGJpdHMgKi8KLSAgdW5zaWduZWQgY2hhciByZXF1ZXN0X2RpZ2VzdFszM107Ci0gIHVuc2lnbmVkIGNoYXIgKm1kNXRoaXM7Ci0gIHVuc2lnbmVkIGNoYXIgaGExWzMzXTsvKiAzMiBkaWdpdHMgYW5kIDEgemVybyBieXRlICovCi0gIHVuc2lnbmVkIGNoYXIgaGEyWzMzXTsvKiAzMiBkaWdpdHMgYW5kIDEgemVybyBieXRlICovCi0gIGNoYXIgY25vbmNlYnVmWzMzXTsKLSAgY2hhciAqY25vbmNlID0gTlVMTDsKLSAgc2l6ZV90IGNub25jZV9zeiA9IDA7Ci0gIGNoYXIgKnVzZXJwX3F1b3RlZDsKLSAgY2hhciAqcmVzcG9uc2UgPSBOVUxMOwotICBjaGFyICp0bXAgPSBOVUxMOwotCi0gIGlmKCFkaWdlc3QtPm5jKQotICAgIGRpZ2VzdC0+bmMgPSAxOwotCi0gIGlmKCFkaWdlc3QtPmNub25jZSkgewotICAgIHNucHJpbnRmKGNub25jZWJ1Ziwgc2l6ZW9mKGNub25jZWJ1ZiksICIlMDh4JTA4eCUwOHglMDh4IiwKLSAgICAgICAgICAgICBDdXJsX3JhbmQoZGF0YSksIEN1cmxfcmFuZChkYXRhKSwKLSAgICAgICAgICAgICBDdXJsX3JhbmQoZGF0YSksIEN1cmxfcmFuZChkYXRhKSk7Ci0KLSAgICByZXN1bHQgPSBDdXJsX2Jhc2U2NF9lbmNvZGUoZGF0YSwgY25vbmNlYnVmLCBzdHJsZW4oY25vbmNlYnVmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNub25jZSwgJmNub25jZV9zeik7Ci0gICAgaWYocmVzdWx0KQotICAgICAgcmV0dXJuIHJlc3VsdDsKLQotICAgIGRpZ2VzdC0+Y25vbmNlID0gY25vbmNlOwotICB9Ci0KLSAgLyoKLSAgICBpZiB0aGUgYWxnb3JpdGhtIGlzICJNRDUiIG9yIHVuc3BlY2lmaWVkICh3aGljaCB0aGVuIGRlZmF1bHRzIHRvIE1ENSk6Ci0KLSAgICBBMSA9IHVucSh1c2VybmFtZS12YWx1ZSkgIjoiIHVucShyZWFsbS12YWx1ZSkgIjoiIHBhc3N3ZAotCi0gICAgaWYgdGhlIGFsZ29yaXRobSBpcyAiTUQ1LXNlc3MiIHRoZW46Ci0KLSAgICBBMSA9IEgoIHVucSh1c2VybmFtZS12YWx1ZSkgIjoiIHVucShyZWFsbS12YWx1ZSkgIjoiIHBhc3N3ZCApCi0gICAgICAgICAiOiIgdW5xKG5vbmNlLXZhbHVlKSAiOiIgdW5xKGNub25jZS12YWx1ZSkKLSAgKi8KLQotICBtZDV0aGlzID0gKHVuc2lnbmVkIGNoYXIgKikKLSAgICBhcHJpbnRmKCIlczolczolcyIsIHVzZXJwLCBkaWdlc3QtPnJlYWxtLCBwYXNzd2RwKTsKLSAgaWYoIW1kNXRoaXMpCi0gICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7Ci0KLSAgQ1VSTF9PVVRQVVRfRElHRVNUX0NPTlYoZGF0YSwgbWQ1dGhpcyk7IC8qIGNvbnZlcnQgb24gbm9uLUFTQ0lJIG1hY2hpbmVzICovCi0gIEN1cmxfbWQ1aXQobWQ1YnVmLCBtZDV0aGlzKTsKLSAgZnJlZShtZDV0aGlzKTsKLSAgc2FzbF9kaWdlc3RfbWQ1X3RvX2FzY2lpKG1kNWJ1ZiwgaGExKTsKLQotICBpZihkaWdlc3QtPmFsZ28gPT0gQ1VSTERJR0VTVEFMR09fTUQ1U0VTUykgewotICAgIC8qIG5vbmNlIGFuZCBjbm9uY2UgYXJlIE9VVFNJREUgdGhlIGhhc2ggKi8KLSAgICB0bXAgPSBhcHJpbnRmKCIlczolczolcyIsIGhhMSwgZGlnZXN0LT5ub25jZSwgZGlnZXN0LT5jbm9uY2UpOwotICAgIGlmKCF0bXApCi0gICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKLQotICAgIENVUkxfT1VUUFVUX0RJR0VTVF9DT05WKGRhdGEsIHRtcCk7IC8qIGNvbnZlcnQgb24gbm9uLUFTQ0lJIG1hY2hpbmVzICovCi0gICAgQ3VybF9tZDVpdChtZDVidWYsICh1bnNpZ25lZCBjaGFyICopdG1wKTsKLSAgICBmcmVlKHRtcCk7Ci0gICAgc2FzbF9kaWdlc3RfbWQ1X3RvX2FzY2lpKG1kNWJ1ZiwgaGExKTsKLSAgfQotCi0gIC8qCi0gICAgSWYgdGhlICJxb3AiIGRpcmVjdGl2ZSdzIHZhbHVlIGlzICJhdXRoIiBvciBpcyB1bnNwZWNpZmllZCwgdGhlbiBBMiBpczoKLQotICAgICAgQTIgICAgICAgPSBNZXRob2QgIjoiIGRpZ2VzdC11cmktdmFsdWUKLQotICAgICAgICAgIElmIHRoZSAicW9wIiB2YWx1ZSBpcyAiYXV0aC1pbnQiLCB0aGVuIEEyIGlzOgotCi0gICAgICBBMiAgICAgICA9IE1ldGhvZCAiOiIgZGlnZXN0LXVyaS12YWx1ZSAiOiIgSChlbnRpdHktYm9keSkKLQotICAgIChUaGUgIk1ldGhvZCIgdmFsdWUgaXMgdGhlIEhUVFAgcmVxdWVzdCBtZXRob2QgYXMgc3BlY2lmaWVkIGluIHNlY3Rpb24KLSAgICA1LjEuMSBvZiBSRkMgMjYxNikKLSAgKi8KLQotICBtZDV0aGlzID0gKHVuc2lnbmVkIGNoYXIgKilhcHJpbnRmKCIlczolcyIsIHJlcXVlc3QsIHVyaXBhdGgpOwotCi0gIGlmKGRpZ2VzdC0+cW9wICYmIEN1cmxfcmF3X2VxdWFsKGRpZ2VzdC0+cW9wLCAiYXV0aC1pbnQiKSkgewotICAgIC8qIFdlIGRvbid0IHN1cHBvcnQgYXV0aC1pbnQgZm9yIFBVVCBvciBQT1NUIGF0IHRoZSBtb21lbnQuCi0gICAgICAgVE9ETzogcmVwbGFjZSBtZDUgb2YgZW1wdHkgc3RyaW5nIHdpdGggZW50aXR5LWJvZHkgZm9yIFBVVC9QT1NUICovCi0gICAgdW5zaWduZWQgY2hhciAqbWQ1dGhpczIgPSAodW5zaWduZWQgY2hhciAqKQotICAgICAgYXByaW50ZigiJXM6JXMiLCBtZDV0aGlzLCAiZDQxZDhjZDk4ZjAwYjIwNGU5ODAwOTk4ZWNmODQyN2UiKTsKLSAgICBmcmVlKG1kNXRoaXMpOwotICAgIG1kNXRoaXMgPSBtZDV0aGlzMjsKLSAgfQotCi0gIGlmKCFtZDV0aGlzKQotICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotCi0gIENVUkxfT1VUUFVUX0RJR0VTVF9DT05WKGRhdGEsIG1kNXRoaXMpOyAvKiBjb252ZXJ0IG9uIG5vbi1BU0NJSSBtYWNoaW5lcyAqLwotICBDdXJsX21kNWl0KG1kNWJ1ZiwgbWQ1dGhpcyk7Ci0gIGZyZWUobWQ1dGhpcyk7Ci0gIHNhc2xfZGlnZXN0X21kNV90b19hc2NpaShtZDVidWYsIGhhMik7Ci0KLSAgaWYoZGlnZXN0LT5xb3ApIHsKLSAgICBtZDV0aGlzID0gKHVuc2lnbmVkIGNoYXIgKilhcHJpbnRmKCIlczolczolMDh4OiVzOiVzOiVzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZ2VzdC0+bm9uY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWdlc3QtPm5jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlnZXN0LT5jbm9uY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWdlc3QtPnFvcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhMik7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgbWQ1dGhpcyA9ICh1bnNpZ25lZCBjaGFyICopYXByaW50ZigiJXM6JXM6JXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGExLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlnZXN0LT5ub25jZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhMik7Ci0gIH0KLQotICBpZighbWQ1dGhpcykKLSAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKLQotICBDVVJMX09VVFBVVF9ESUdFU1RfQ09OVihkYXRhLCBtZDV0aGlzKTsgLyogY29udmVydCBvbiBub24tQVNDSUkgbWFjaGluZXMgKi8KLSAgQ3VybF9tZDVpdChtZDVidWYsIG1kNXRoaXMpOwotICBmcmVlKG1kNXRoaXMpOwotICBzYXNsX2RpZ2VzdF9tZDVfdG9fYXNjaWkobWQ1YnVmLCByZXF1ZXN0X2RpZ2VzdCk7Ci0KLSAgLyogZm9yIHRlc3QgY2FzZSA2NCAoc25vb3BlZCBmcm9tIGEgTW96aWxsYSAxLjNhIHJlcXVlc3QpCi0KLSAgICBBdXRob3JpemF0aW9uOiBEaWdlc3QgdXNlcm5hbWU9InRlc3R1c2VyIiwgcmVhbG09InRlc3RyZWFsbSIsIFwKLSAgICBub25jZT0iMTA1MzYwNDE0NSIsIHVyaT0iLzY0IiwgcmVzcG9uc2U9ImM1NWY3ZjMwZDgzZDc3NGEzZDJkY2FjZjcyNWFiYWNhIgotCi0gICAgRGlnZXN0IHBhcmFtZXRlcnMgYXJlIGFsbCBxdW90ZWQgc3RyaW5ncy4gIFVzZXJuYW1lIHdoaWNoIGlzIHByb3ZpZGVkIGJ5Ci0gICAgdGhlIHVzZXIgd2lsbCBuZWVkIGRvdWJsZSBxdW90ZXMgYW5kIGJhY2tzbGFzaGVzIHdpdGhpbiBpdCBlc2NhcGVkLiAgRm9yCi0gICAgdGhlIG90aGVyIGZpZWxkcywgdGhpcyBzaG91bGRuJ3QgYmUgYW4gaXNzdWUuICByZWFsbSwgbm9uY2UsIGFuZCBvcGFxdWUKLSAgICBhcmUgY29waWVkIGFzIGlzIGZyb20gdGhlIHNlcnZlciwgZXNjYXBlcyBhbmQgYWxsLiAgY25vbmNlIGlzIGdlbmVyYXRlZAotICAgIHdpdGggd2ViLXNhZmUgY2hhcmFjdGVycy4gIHVyaSBpcyBhbHJlYWR5IHBlcmNlbnQgZW5jb2RlZC4gIG5jIGlzIDggaGV4Ci0gICAgY2hhcmFjdGVycy4gIGFsZ29yaXRobSBhbmQgcW9wIHdpdGggc3RhbmRhcmQgdmFsdWVzIG9ubHkgY29udGFpbiB3ZWItc2FmZQotICAgIGNocmFjdGVycy4KLSAgKi8KLSAgdXNlcnBfcXVvdGVkID0gc2FzbF9kaWdlc3Rfc3RyaW5nX3F1b3RlZCh1c2VycCk7Ci0gIGlmKCF1c2VycF9xdW90ZWQpCi0gICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7Ci0KLSAgaWYoZGlnZXN0LT5xb3ApIHsKLSAgICByZXNwb25zZSA9IGFwcmludGYoInVzZXJuYW1lPVwiJXNcIiwgIgotICAgICAgICAgICAgICAgICAgICAgICAicmVhbG09XCIlc1wiLCAiCi0gICAgICAgICAgICAgICAgICAgICAgICJub25jZT1cIiVzXCIsICIKLSAgICAgICAgICAgICAgICAgICAgICAgInVyaT1cIiVzXCIsICIKLSAgICAgICAgICAgICAgICAgICAgICAgImNub25jZT1cIiVzXCIsICIKLSAgICAgICAgICAgICAgICAgICAgICAgIm5jPSUwOHgsICIKLSAgICAgICAgICAgICAgICAgICAgICAgInFvcD0lcywgIgotICAgICAgICAgICAgICAgICAgICAgICAicmVzcG9uc2U9XCIlc1wiIiwKLSAgICAgICAgICAgICAgICAgICAgICAgdXNlcnBfcXVvdGVkLAotICAgICAgICAgICAgICAgICAgICAgICBkaWdlc3QtPnJlYWxtLAotICAgICAgICAgICAgICAgICAgICAgICBkaWdlc3QtPm5vbmNlLAotICAgICAgICAgICAgICAgICAgICAgICB1cmlwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICBkaWdlc3QtPmNub25jZSwKLSAgICAgICAgICAgICAgICAgICAgICAgZGlnZXN0LT5uYywKLSAgICAgICAgICAgICAgICAgICAgICAgZGlnZXN0LT5xb3AsCi0gICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RfZGlnZXN0KTsKLQotICAgIGlmKEN1cmxfcmF3X2VxdWFsKGRpZ2VzdC0+cW9wLCAiYXV0aCIpKQotICAgICAgZGlnZXN0LT5uYysrOyAvKiBUaGUgbmMgKGZyb20gUkZDKSBoYXMgdG8gYmUgYSA4IGhleCBkaWdpdCBudW1iZXIgMAotICAgICAgICAgICAgICAgICAgICAgICBwYWRkZWQgd2hpY2ggdGVsbHMgdG8gdGhlIHNlcnZlciBob3cgbWFueSB0aW1lcyB5b3UgYXJlCi0gICAgICAgICAgICAgICAgICAgICAgIHVzaW5nIHRoZSBzYW1lIG5vbmNlIGluIHRoZSBxb3A9YXV0aCBtb2RlICovCi0gIH0KLSAgZWxzZSB7Ci0gICAgcmVzcG9uc2UgPSBhcHJpbnRmKCJ1c2VybmFtZT1cIiVzXCIsICIKLSAgICAgICAgICAgICAgICAgICAgICAgInJlYWxtPVwiJXNcIiwgIgotICAgICAgICAgICAgICAgICAgICAgICAibm9uY2U9XCIlc1wiLCAiCi0gICAgICAgICAgICAgICAgICAgICAgICJ1cmk9XCIlc1wiLCAiCi0gICAgICAgICAgICAgICAgICAgICAgICJyZXNwb25zZT1cIiVzXCIiLAotICAgICAgICAgICAgICAgICAgICAgICB1c2VycF9xdW90ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgIGRpZ2VzdC0+cmVhbG0sCi0gICAgICAgICAgICAgICAgICAgICAgIGRpZ2VzdC0+bm9uY2UsCi0gICAgICAgICAgICAgICAgICAgICAgIHVyaXBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RfZGlnZXN0KTsKLSAgfQotICBmcmVlKHVzZXJwX3F1b3RlZCk7Ci0gIGlmKCFyZXNwb25zZSkKLSAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKLQotICAvKiBBZGQgdGhlIG9wdGlvbmFsIGZpZWxkcyAqLwotICBpZihkaWdlc3QtPm9wYXF1ZSkgewotICAgIC8qIEFwcGVuZCB0aGUgb3BhcXVlICovCi0gICAgdG1wID0gYXByaW50ZigiJXMsIG9wYXF1ZT1cIiVzXCIiLCByZXNwb25zZSwgZGlnZXN0LT5vcGFxdWUpOwotICAgIGZyZWUocmVzcG9uc2UpOwotICAgIGlmKCF0bXApCi0gICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKLQotICAgIHJlc3BvbnNlID0gdG1wOwotICB9Ci0KLSAgaWYoZGlnZXN0LT5hbGdvcml0aG0pIHsKLSAgICAvKiBBcHBlbmQgdGhlIGFsZ29yaXRobSAqLwotICAgIHRtcCA9IGFwcmludGYoIiVzLCBhbGdvcml0aG09XCIlc1wiIiwgcmVzcG9uc2UsIGRpZ2VzdC0+YWxnb3JpdGhtKTsKLSAgICBmcmVlKHJlc3BvbnNlKTsKLSAgICBpZighdG1wKQotICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7Ci0KLSAgICByZXNwb25zZSA9IHRtcDsKLSAgfQotCi0gIC8qIFJldHVybiB0aGUgb3V0cHV0ICovCi0gICpvdXRwdHIgPSByZXNwb25zZTsKLSAgKm91dGxlbiA9IHN0cmxlbihyZXNwb25zZSk7Ci0KLSAgcmV0dXJuIENVUkxFX09LOwotfQotCi0vKgotICogQ3VybF9zYXNsX2RpZ2VzdF9jbGVhbnVwKCkKLSAqCi0gKiBUaGlzIGlzIHVzZWQgdG8gY2xlYW4gdXAgdGhlIGRpZ2VzdCBzcGVjaWZpYyBkYXRhLgotICoKLSAqIFBhcmFtZXRlcnM6Ci0gKgotICogZGlnZXN0ICAgIFtpbi9vdXRdIC0gVGhlIGRpZ2VzdCBkYXRhIHN0cnVjdCBiZWluZyBjbGVhbmVkIHVwLgotICoKLSAqLwotdm9pZCBDdXJsX3Nhc2xfZGlnZXN0X2NsZWFudXAoc3RydWN0IGRpZ2VzdGRhdGEgKmRpZ2VzdCkKLXsKLSAgQ3VybF9zYWZlZnJlZShkaWdlc3QtPm5vbmNlKTsKLSAgQ3VybF9zYWZlZnJlZShkaWdlc3QtPmNub25jZSk7Ci0gIEN1cmxfc2FmZWZyZWUoZGlnZXN0LT5yZWFsbSk7Ci0gIEN1cmxfc2FmZWZyZWUoZGlnZXN0LT5vcGFxdWUpOwotICBDdXJsX3NhZmVmcmVlKGRpZ2VzdC0+cW9wKTsKLSAgQ3VybF9zYWZlZnJlZShkaWdlc3QtPmFsZ29yaXRobSk7Ci0KLSAgZGlnZXN0LT5uYyA9IDA7Ci0gIGRpZ2VzdC0+YWxnbyA9IENVUkxESUdFU1RBTEdPX01ENTsgLyogZGVmYXVsdCBhbGdvcml0aG0gKi8KLSAgZGlnZXN0LT5zdGFsZSA9IEZBTFNFOyAvKiBkZWZhdWx0IG1lYW5zIG5vcm1hbCwgbm90IHN0YWxlICovCi19Ci0jZW5kaWYgIC8qICFVU0VfV0lORE9XU19TU1BJICovCi0KLSNlbmRpZiAgLyogQ1VSTF9ESVNBQkxFX0NSWVBUT19BVVRIICovCi0KLSNpZiBkZWZpbmVkKFVTRV9OVExNKSAmJiAhZGVmaW5lZChVU0VfV0lORE9XU19TU1BJKQotLyoKLSAqIEN1cmxfc2FzbF9udGxtX2NsZWFudXAoKQotICoKLSAqIFRoaXMgaXMgdXNlZCB0byBjbGVhbiB1cCB0aGUgbnRsbSBzcGVjaWZpYyBkYXRhLgotICoKLSAqIFBhcmFtZXRlcnM6Ci0gKgotICogbnRsbSAgICBbaW4vb3V0XSAtIFRoZSBudGxtIGRhdGEgc3RydWN0IGJlaW5nIGNsZWFuZWQgdXAuCi0gKgotICovCi12b2lkIEN1cmxfc2FzbF9udGxtX2NsZWFudXAoc3RydWN0IG50bG1kYXRhICpudGxtKQotewotICAvKiBGcmVlIHRoZSB0YXJnZXQgaW5mbyAqLwotICBDdXJsX3NhZmVmcmVlKG50bG0tPnRhcmdldF9pbmZvKTsKLQotICAvKiBSZXNldCBhbnkgdmFyaWFibGVzICovCi0gIG50bG0tPnRhcmdldF9pbmZvX2xlbiA9IDA7Ci19Ci0jZW5kaWYgLyogVVNFX05UTE0gJiYgIVVTRV9XSU5ET1dTX1NTUEkqLwotCi0vKgotICogc2FzbF9jcmVhdGVfeG9hdXRoMl9tZXNzYWdlKCkKLSAqCi0gKiBUaGlzIGlzIHVzZWQgdG8gZ2VuZXJhdGUgYW4gYWxyZWFkeSBlbmNvZGVkIE9BdXRoIDIuMCBtZXNzYWdlIHJlYWR5IGZvcgotICogc2VuZGluZyB0byB0aGUgcmVjaXBpZW50LgotICoKLSAqIFBhcmFtZXRlcnM6Ci0gKgotICogZGF0YSAgICBbaW5dICAgICAtIFRoZSBzZXNzaW9uIGhhbmRsZS4KLSAqIHVzZXIgICAgW2luXSAgICAgLSBUaGUgdXNlciBuYW1lLgotICogYmVhcmVyICBbaW5dICAgICAtIFRoZSBiZWFyZXIgdG9rZW4uCi0gKiBvdXRwdHIgIFtpbi9vdXRdIC0gVGhlIGFkZHJlc3Mgd2hlcmUgYSBwb2ludGVyIHRvIG5ld2x5IGFsbG9jYXRlZCBtZW1vcnkKLSAqICAgICAgICAgICAgICAgICAgICBob2xkaW5nIHRoZSByZXN1bHQgd2lsbCBiZSBzdG9yZWQgdXBvbiBjb21wbGV0aW9uLgotICogb3V0bGVuICBbb3V0XSAgICAtIFRoZSBsZW5ndGggb2YgdGhlIG91dHB1dCBtZXNzYWdlLgotICoKLSAqIFJldHVybnMgQ1VSTEVfT0sgb24gc3VjY2Vzcy4KLSAqLwotc3RhdGljIENVUkxjb2RlIHNhc2xfY3JlYXRlX3hvYXV0aDJfbWVzc2FnZShzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdXNlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqYmVhcmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqb3V0cHRyLCBzaXplX3QgKm91dGxlbikKLXsKLSAgQ1VSTGNvZGUgcmVzdWx0ID0gQ1VSTEVfT0s7Ci0gIGNoYXIgKnhvYXV0aCA9IE5VTEw7Ci0KLSAgLyogR2VuZXJhdGUgdGhlIG1lc3NhZ2UgKi8KLSAgeG9hdXRoID0gYXByaW50ZigidXNlcj0lc1wxYXV0aD1CZWFyZXIgJXNcMVwxIiwgdXNlciwgYmVhcmVyKTsKLSAgaWYoIXhvYXV0aCkKLSAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKLQotICAvKiBCYXNlNjQgZW5jb2RlIHRoZSByZXBseSAqLwotICByZXN1bHQgPSBDdXJsX2Jhc2U2NF9lbmNvZGUoZGF0YSwgeG9hdXRoLCBzdHJsZW4oeG9hdXRoKSwgb3V0cHRyLCBvdXRsZW4pOwotCi0gIGZyZWUoeG9hdXRoKTsKLQotICByZXR1cm4gcmVzdWx0OwotfQotCiAvKgogICogQ3VybF9zYXNsX2NsZWFudXAoKQogICoKQEAgLTEyMDYsMTQgKzg1LDE0IEBACiAjaWYgZGVmaW5lZChVU0VfS0VSQkVST1M1KQogICAvKiBDbGVhbnVwIHRoZSBnc3NhcGkgc3RydWN0dXJlICovCiAgIGlmKGF1dGh1c2VkID09IFNBU0xfTUVDSF9HU1NBUEkpIHsKLSAgICBDdXJsX3Nhc2xfZ3NzYXBpX2NsZWFudXAoJmNvbm4tPmtyYjUpOworICAgIEN1cmxfYXV0aF9nc3NhcGlfY2xlYW51cCgmY29ubi0+a3JiNSk7CiAgIH0KICNlbmRpZgogCiAjaWYgZGVmaW5lZChVU0VfTlRMTSkKLSAgLyogQ2xlYW51cCB0aGUgbnRsbSBzdHJ1Y3R1cmUgKi8KKyAgLyogQ2xlYW51cCB0aGUgTlRMTSBzdHJ1Y3R1cmUgKi8KICAgaWYoYXV0aHVzZWQgPT0gU0FTTF9NRUNIX05UTE0pIHsKLSAgICBDdXJsX3Nhc2xfbnRsbV9jbGVhbnVwKCZjb25uLT5udGxtKTsKKyAgICBDdXJsX2F1dGhfbnRsbV9jbGVhbnVwKCZjb25uLT5udGxtKTsKICAgfQogI2VuZGlmCiAKQEAgLTEyNzUsMTggKzE1NCwyMCBAQAogICBpZighbGVuKQogICAgIHJldHVybiBDVVJMRV9VUkxfTUFMRk9STUFUOwogCi0gICAgaWYoc2FzbC0+cmVzZXRwcmVmcykgewotICAgICAgc2FzbC0+cmVzZXRwcmVmcyA9IEZBTFNFOwotICAgICAgc2FzbC0+cHJlZm1lY2ggPSBTQVNMX0FVVEhfTk9ORTsKLSAgICB9CisgIGlmKHNhc2wtPnJlc2V0cHJlZnMpIHsKKyAgICBzYXNsLT5yZXNldHByZWZzID0gRkFMU0U7CisgICAgc2FzbC0+cHJlZm1lY2ggPSBTQVNMX0FVVEhfTk9ORTsKKyAgfQogCi0gICAgaWYoc3RybmVxdWFsKHZhbHVlLCAiKiIsIGxlbikpCi0gICAgICBzYXNsLT5wcmVmbWVjaCA9IFNBU0xfQVVUSF9ERUZBVUxUOwotICAgIGVsc2UgaWYoKG1lY2hiaXQgPSBDdXJsX3Nhc2xfZGVjb2RlX21lY2godmFsdWUsIGxlbiwgJm1lY2hsZW4pKSAmJgotICAgICAgICAgICAgbWVjaGxlbiA9PSBsZW4pCisgIGlmKHN0cm5lcXVhbCh2YWx1ZSwgIioiLCBsZW4pKQorICAgIHNhc2wtPnByZWZtZWNoID0gU0FTTF9BVVRIX0RFRkFVTFQ7CisgIGVsc2UgeworICAgIG1lY2hiaXQgPSBDdXJsX3Nhc2xfZGVjb2RlX21lY2godmFsdWUsIGxlbiwgJm1lY2hsZW4pOworICAgIGlmKG1lY2hiaXQgJiYgbWVjaGxlbiA9PSBsZW4pCiAgICAgICBzYXNsLT5wcmVmbWVjaCB8PSBtZWNoYml0OwogICAgIGVsc2UKICAgICAgIHJlc3VsdCA9IENVUkxFX1VSTF9NQUxGT1JNQVQ7CisgIH0KIAogICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMTMzMiw3ICsyMTMsOCBAQAogICAgICJHU1NBUEkiLAogICAgICJHU1NBUElfVE9LRU4iLAogICAgICJHU1NBUElfTk9fREFUQSIsCi0gICAgIlhPQVVUSDIiLAorICAgICJPQVVUSDIiLAorICAgICJPQVVUSDJfUkVTUCIsCiAgICAgIkNBTkNFTCIsCiAgICAgIkZJTkFMIiwKICAgICAvKiBMQVNUICovCkBAIC0xMzgyLDYgKzI2NCwxMSBAQAogICBzaXplX3QgbGVuID0gMDsKICAgc2FzbHN0YXRlIHN0YXRlMSA9IFNBU0xfU1RPUDsKICAgc2FzbHN0YXRlIHN0YXRlMiA9IFNBU0xfRklOQUw7CisjaWYgZGVmaW5lZChVU0VfS0VSQkVST1M1KQorICBjb25zdCBjaGFyKiBzZXJ2aWNlID0gZGF0YS0+c2V0LnN0cltTVFJJTkdfU0VSVklDRV9OQU1FXSA/CisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT5zZXQuc3RyW1NUUklOR19TRVJWSUNFX05BTUVdIDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNhc2wtPnBhcmFtcy0+c2VydmljZTsKKyNlbmRpZgogCiAgIHNhc2wtPmZvcmNlX2lyID0gZm9yY2VfaXI7ICAgIC8qIExhdGNoIGZvciBmdXR1cmUgdXNlICovCiAgIHNhc2wtPmF1dGh1c2VkID0gMDsgICAgICAgICAgIC8qIE5vIG1lY2hhbmlzbSB1c2VkIHlldCAqLwpAQCAtMTM5Niw3ICsyODMsOCBAQAogICAgIHNhc2wtPmF1dGh1c2VkID0gU0FTTF9NRUNIX0VYVEVSTkFMOwogCiAgICAgaWYoZm9yY2VfaXIgfHwgZGF0YS0+c2V0LnNhc2xfaXIpCi0gICAgICByZXN1bHQgPSBzYXNsX2NyZWF0ZV9leHRlcm5hbF9tZXNzYWdlKGRhdGEsIGNvbm4tPnVzZXIsICZyZXNwLCAmbGVuKTsKKyAgICAgIHJlc3VsdCA9IEN1cmxfYXV0aF9jcmVhdGVfZXh0ZXJuYWxfbWVzc2FnZShkYXRhLCBjb25uLT51c2VyLCAmcmVzcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbGVuKTsKICAgfQogICBlbHNlIGlmKGNvbm4tPmJpdHMudXNlcl9wYXNzd2QpIHsKICNpZiBkZWZpbmVkKFVTRV9LRVJCRVJPUzUpCkBAIC0xNDA4LDkgKzI5NiwxMSBAQAogICAgICAgc2FzbC0+YXV0aHVzZWQgPSBTQVNMX01FQ0hfR1NTQVBJOwogCiAgICAgICBpZihmb3JjZV9pciB8fCBkYXRhLT5zZXQuc2FzbF9pcikKLSAgICAgICAgcmVzdWx0ID0gQ3VybF9zYXNsX2NyZWF0ZV9nc3NhcGlfdXNlcl9tZXNzYWdlKGRhdGEsIGNvbm4tPnVzZXIsCisgICAgICAgIHJlc3VsdCA9IEN1cmxfYXV0aF9jcmVhdGVfZ3NzYXBpX3VzZXJfbWVzc2FnZShkYXRhLCBjb25uLT51c2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubi0+cGFzc3dkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FzbC0+cGFyYW1zLT5zZXJ2aWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtPmVhc3lfY29ubi0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3N0Lm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXNsLT5tdXR1YWxfYXV0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsICZjb25uLT5rcmI1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlc3AsICZsZW4pOwpAQCAtMTQzOCwyMCArMzI4LDM0IEBACiAgICAgICBzYXNsLT5hdXRodXNlZCA9IFNBU0xfTUVDSF9OVExNOwogCiAgICAgICBpZihmb3JjZV9pciB8fCBkYXRhLT5zZXQuc2FzbF9pcikKLSAgICAgICAgcmVzdWx0ID0gQ3VybF9zYXNsX2NyZWF0ZV9udGxtX3R5cGUxX21lc3NhZ2UoY29ubi0+dXNlciwgY29ubi0+cGFzc3dkLAorICAgICAgICByZXN1bHQgPSBDdXJsX2F1dGhfY3JlYXRlX250bG1fdHlwZTFfbWVzc2FnZShjb25uLT51c2VyLCBjb25uLT5wYXNzd2QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb25uLT5udGxtLCAmcmVzcCwgJmxlbik7CiAgICAgICB9CiAgICAgZWxzZQogI2VuZGlmCi0gICAgaWYoKGVuYWJsZWRtZWNocyAmIFNBU0xfTUVDSF9YT0FVVEgyKSB8fCBjb25uLT54b2F1dGgyX2JlYXJlcikgeworICAgIGlmKChlbmFibGVkbWVjaHMgJiBTQVNMX01FQ0hfT0FVVEhCRUFSRVIpICYmIGNvbm4tPm9hdXRoX2JlYXJlcikgeworICAgICAgbWVjaCA9IFNBU0xfTUVDSF9TVFJJTkdfT0FVVEhCRUFSRVI7CisgICAgICBzdGF0ZTEgPSBTQVNMX09BVVRIMjsKKyAgICAgIHN0YXRlMiA9IFNBU0xfT0FVVEgyX1JFU1A7CisgICAgICBzYXNsLT5hdXRodXNlZCA9IFNBU0xfTUVDSF9PQVVUSEJFQVJFUjsKKworICAgICAgaWYoZm9yY2VfaXIgfHwgZGF0YS0+c2V0LnNhc2xfaXIpCisgICAgICAgIHJlc3VsdCA9IEN1cmxfYXV0aF9jcmVhdGVfb2F1dGhfYmVhcmVyX21lc3NhZ2UoZGF0YSwgY29ubi0+dXNlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uLT5ob3N0Lm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubi0+cG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uLT5vYXV0aF9iZWFyZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlc3AsICZsZW4pOworICAgIH0KKyAgICBlbHNlIGlmKChlbmFibGVkbWVjaHMgJiBTQVNMX01FQ0hfWE9BVVRIMikgJiYgY29ubi0+b2F1dGhfYmVhcmVyKSB7CiAgICAgICBtZWNoID0gU0FTTF9NRUNIX1NUUklOR19YT0FVVEgyOwotICAgICAgc3RhdGUxID0gU0FTTF9YT0FVVEgyOworICAgICAgc3RhdGUxID0gU0FTTF9PQVVUSDI7CiAgICAgICBzYXNsLT5hdXRodXNlZCA9IFNBU0xfTUVDSF9YT0FVVEgyOwogCiAgICAgICBpZihmb3JjZV9pciB8fCBkYXRhLT5zZXQuc2FzbF9pcikKLSAgICAgICAgcmVzdWx0ID0gc2FzbF9jcmVhdGVfeG9hdXRoMl9tZXNzYWdlKGRhdGEsIGNvbm4tPnVzZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uLT54b2F1dGgyX2JlYXJlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZXNwLCAmbGVuKTsKKyAgICAgICAgcmVzdWx0ID0gQ3VybF9hdXRoX2NyZWF0ZV9vYXV0aF9iZWFyZXJfbWVzc2FnZShkYXRhLCBjb25uLT51c2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubi0+b2F1dGhfYmVhcmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZXNwLCAmbGVuKTsKICAgICB9CiAgICAgZWxzZSBpZihlbmFibGVkbWVjaHMgJiBTQVNMX01FQ0hfTE9HSU4pIHsKICAgICAgIG1lY2ggPSBTQVNMX01FQ0hfU1RSSU5HX0xPR0lOOwpAQCAtMTQ2MCw3ICszNjQsNyBAQAogICAgICAgc2FzbC0+YXV0aHVzZWQgPSBTQVNMX01FQ0hfTE9HSU47CiAKICAgICAgIGlmKGZvcmNlX2lyIHx8IGRhdGEtPnNldC5zYXNsX2lyKQotICAgICAgICByZXN1bHQgPSBzYXNsX2NyZWF0ZV9sb2dpbl9tZXNzYWdlKGRhdGEsIGNvbm4tPnVzZXIsICZyZXNwLCAmbGVuKTsKKyAgICAgICAgcmVzdWx0ID0gQ3VybF9hdXRoX2NyZWF0ZV9sb2dpbl9tZXNzYWdlKGRhdGEsIGNvbm4tPnVzZXIsICZyZXNwLCAmbGVuKTsKICAgICB9CiAgICAgZWxzZSBpZihlbmFibGVkbWVjaHMgJiBTQVNMX01FQ0hfUExBSU4pIHsKICAgICAgIG1lY2ggPSBTQVNMX01FQ0hfU1RSSU5HX1BMQUlOOwpAQCAtMTQ2OCwyNCArMzcyLDIyIEBACiAgICAgICBzYXNsLT5hdXRodXNlZCA9IFNBU0xfTUVDSF9QTEFJTjsKIAogICAgICAgaWYoZm9yY2VfaXIgfHwgZGF0YS0+c2V0LnNhc2xfaXIpCi0gICAgICAgIHJlc3VsdCA9IHNhc2xfY3JlYXRlX3BsYWluX21lc3NhZ2UoZGF0YSwgY29ubi0+dXNlciwgY29ubi0+cGFzc3dkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZXNwLCAmbGVuKTsKKyAgICAgICAgcmVzdWx0ID0gQ3VybF9hdXRoX2NyZWF0ZV9wbGFpbl9tZXNzYWdlKGRhdGEsIGNvbm4tPnVzZXIsIGNvbm4tPnBhc3N3ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZXNwLCAmbGVuKTsKICAgICB9CiAgIH0KIAotICBpZighcmVzdWx0KSB7CisgIGlmKCFyZXN1bHQgJiYgbWVjaCkgewogICAgIGlmKHJlc3AgJiYgc2FzbC0+cGFyYW1zLT5tYXhpcmxlbiAmJgogICAgICAgIHN0cmxlbihtZWNoKSArIGxlbiA+IHNhc2wtPnBhcmFtcy0+bWF4aXJsZW4pIHsKICAgICAgIGZyZWUocmVzcCk7CiAgICAgICByZXNwID0gTlVMTDsKICAgICB9CiAKLSAgICBpZihtZWNoKSB7Ci0gICAgICByZXN1bHQgPSBzYXNsLT5wYXJhbXMtPnNlbmRhdXRoKGNvbm4sIG1lY2gsIHJlc3ApOwotICAgICAgaWYoIXJlc3VsdCkgewotICAgICAgICAqcHJvZ3Jlc3MgPSBTQVNMX0lOUFJPR1JFU1M7Ci0gICAgICAgIHN0YXRlKHNhc2wsIGNvbm4sIHJlc3A/IHN0YXRlMjogc3RhdGUxKTsKLSAgICAgIH0KKyAgICByZXN1bHQgPSBzYXNsLT5wYXJhbXMtPnNlbmRhdXRoKGNvbm4sIG1lY2gsIHJlc3ApOworICAgIGlmKCFyZXN1bHQpIHsKKyAgICAgICpwcm9ncmVzcyA9IFNBU0xfSU5QUk9HUkVTUzsKKyAgICAgIHN0YXRlKHNhc2wsIGNvbm4sIHJlc3AgPyBzdGF0ZTIgOiBzdGF0ZTEpOwogICAgIH0KICAgfQogCkBAIC0xNTExLDYgKzQxMywxMSBAQAogICBjaGFyICpjaGxnID0gTlVMTDsKICAgc2l6ZV90IGNobGdsZW4gPSAwOwogI2VuZGlmCisjaWYgIWRlZmluZWQoQ1VSTF9ESVNBQkxFX0NSWVBUT19BVVRIKSB8fCBkZWZpbmVkKFVTRV9LRVJCRVJPUzUpCisgIGNvbnN0IGNoYXIgKnNlcnZpY2UgPSBkYXRhLT5zZXQuc3RyW1NUUklOR19TRVJWSUNFX05BTUVdID8KKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtPnNldC5zdHJbU1RSSU5HX1NFUlZJQ0VfTkFNRV0gOgorICAgICAgICAgICAgICAgICAgICAgICAgc2FzbC0+cGFyYW1zLT5zZXJ2aWNlOworI2VuZGlmCiAgIHNpemVfdCBsZW4gPSAwOwogCiAgICpwcm9ncmVzcyA9IFNBU0xfSU5QUk9HUkVTUzsKQEAgLTE1MjMsNyArNDMwLDggQEAKICAgICByZXR1cm4gcmVzdWx0OwogICB9CiAKLSAgaWYoc2FzbC0+c3RhdGUgIT0gU0FTTF9DQU5DRUwgJiYgY29kZSAhPSBzYXNsLT5wYXJhbXMtPmNvbnRjb2RlKSB7CisgIGlmKHNhc2wtPnN0YXRlICE9IFNBU0xfQ0FOQ0VMICYmIHNhc2wtPnN0YXRlICE9IFNBU0xfT0FVVEgyX1JFU1AgJiYKKyAgICAgY29kZSAhPSBzYXNsLT5wYXJhbXMtPmNvbnRjb2RlKSB7CiAgICAgKnByb2dyZXNzID0gU0FTTF9ET05FOwogICAgIHN0YXRlKHNhc2wsIGNvbm4sIFNBU0xfU1RPUCk7CiAgICAgcmV0dXJuIENVUkxFX0xPR0lOX0RFTklFRDsKQEAgLTE1MzQsMzkgKzQ0Miw0MSBAQAogICAgICpwcm9ncmVzcyA9IFNBU0xfRE9ORTsKICAgICByZXR1cm4gcmVzdWx0OwogICBjYXNlIFNBU0xfUExBSU46Ci0gICAgcmVzdWx0ID0gc2FzbF9jcmVhdGVfcGxhaW5fbWVzc2FnZShkYXRhLCBjb25uLT51c2VyLCBjb25uLT5wYXNzd2QsICZyZXNwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmxlbik7CisgICAgcmVzdWx0ID0gQ3VybF9hdXRoX2NyZWF0ZV9wbGFpbl9tZXNzYWdlKGRhdGEsIGNvbm4tPnVzZXIsIGNvbm4tPnBhc3N3ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlc3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsZW4pOwogICAgIGJyZWFrOwogICBjYXNlIFNBU0xfTE9HSU46Ci0gICAgcmVzdWx0ID0gc2FzbF9jcmVhdGVfbG9naW5fbWVzc2FnZShkYXRhLCBjb25uLT51c2VyLCAmcmVzcCwgJmxlbik7CisgICAgcmVzdWx0ID0gQ3VybF9hdXRoX2NyZWF0ZV9sb2dpbl9tZXNzYWdlKGRhdGEsIGNvbm4tPnVzZXIsICZyZXNwLCAmbGVuKTsKICAgICBuZXdzdGF0ZSA9IFNBU0xfTE9HSU5fUEFTU1dEOwogICAgIGJyZWFrOwogICBjYXNlIFNBU0xfTE9HSU5fUEFTU1dEOgotICAgIHJlc3VsdCA9IHNhc2xfY3JlYXRlX2xvZ2luX21lc3NhZ2UoZGF0YSwgY29ubi0+cGFzc3dkLCAmcmVzcCwgJmxlbik7CisgICAgcmVzdWx0ID0gQ3VybF9hdXRoX2NyZWF0ZV9sb2dpbl9tZXNzYWdlKGRhdGEsIGNvbm4tPnBhc3N3ZCwgJnJlc3AsICZsZW4pOwogICAgIGJyZWFrOwogICBjYXNlIFNBU0xfRVhURVJOQUw6Ci0gICAgcmVzdWx0ID0gc2FzbF9jcmVhdGVfZXh0ZXJuYWxfbWVzc2FnZShkYXRhLCBjb25uLT51c2VyLCAmcmVzcCwgJmxlbik7CisgICAgcmVzdWx0ID0gQ3VybF9hdXRoX2NyZWF0ZV9leHRlcm5hbF9tZXNzYWdlKGRhdGEsIGNvbm4tPnVzZXIsICZyZXNwLCAmbGVuKTsKICAgICBicmVhazsKIAogI2lmbmRlZiBDVVJMX0RJU0FCTEVfQ1JZUFRPX0FVVEgKICAgY2FzZSBTQVNMX0NSQU1NRDU6CiAgICAgc2FzbC0+cGFyYW1zLT5nZXRtZXNzYWdlKGRhdGEtPnN0YXRlLmJ1ZmZlciwgJnNlcnZlcmRhdGEpOwotICAgIHJlc3VsdCA9IHNhc2xfZGVjb2RlX2NyYW1fbWQ1X21lc3NhZ2Uoc2VydmVyZGF0YSwgJmNobGcsICZjaGxnbGVuKTsKKyAgICByZXN1bHQgPSBDdXJsX2F1dGhfZGVjb2RlX2NyYW1fbWQ1X21lc3NhZ2Uoc2VydmVyZGF0YSwgJmNobGcsICZjaGxnbGVuKTsKICAgICBpZighcmVzdWx0KQotICAgICAgcmVzdWx0ID0gc2FzbF9jcmVhdGVfY3JhbV9tZDVfbWVzc2FnZShkYXRhLCBjaGxnLCBjb25uLT51c2VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uLT5wYXNzd2QsICZyZXNwLCAmbGVuKTsKKyAgICAgIHJlc3VsdCA9IEN1cmxfYXV0aF9jcmVhdGVfY3JhbV9tZDVfbWVzc2FnZShkYXRhLCBjaGxnLCBjb25uLT51c2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm4tPnBhc3N3ZCwgJnJlc3AsICZsZW4pOwogICAgIGZyZWUoY2hsZyk7CiAgICAgYnJlYWs7CiAgIGNhc2UgU0FTTF9ESUdFU1RNRDU6CiAgICAgc2FzbC0+cGFyYW1zLT5nZXRtZXNzYWdlKGRhdGEtPnN0YXRlLmJ1ZmZlciwgJnNlcnZlcmRhdGEpOwotICAgIHJlc3VsdCA9IEN1cmxfc2FzbF9jcmVhdGVfZGlnZXN0X21kNV9tZXNzYWdlKGRhdGEsIHNlcnZlcmRhdGEsCisgICAgcmVzdWx0ID0gQ3VybF9hdXRoX2NyZWF0ZV9kaWdlc3RfbWQ1X21lc3NhZ2UoZGF0YSwgc2VydmVyZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uLT51c2VyLCBjb25uLT5wYXNzd2QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FzbC0+cGFyYW1zLT5zZXJ2aWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlc3AsICZsZW4pOwogICAgIG5ld3N0YXRlID0gU0FTTF9ESUdFU1RNRDVfUkVTUDsKICAgICBicmVhazsKICAgY2FzZSBTQVNMX0RJR0VTVE1ENV9SRVNQOgotICAgIGlmKCEocmVzcCA9IHN0cmR1cCgiIikpKQorICAgIHJlc3AgPSBzdHJkdXAoIiIpOworICAgIGlmKCFyZXNwKQogICAgICAgcmVzdWx0ID0gQ1VSTEVfT1VUX09GX01FTU9SWTsKICAgICBicmVhazsKICNlbmRpZgpAQCAtMTU3NCwxNyArNDg0LDE3IEBACiAjaWZkZWYgVVNFX05UTE0KICAgY2FzZSBTQVNMX05UTE06CiAgICAgLyogQ3JlYXRlIHRoZSB0eXBlLTEgbWVzc2FnZSAqLwotICAgIHJlc3VsdCA9IEN1cmxfc2FzbF9jcmVhdGVfbnRsbV90eXBlMV9tZXNzYWdlKGNvbm4tPnVzZXIsIGNvbm4tPnBhc3N3ZCwKKyAgICByZXN1bHQgPSBDdXJsX2F1dGhfY3JlYXRlX250bG1fdHlwZTFfbWVzc2FnZShjb25uLT51c2VyLCBjb25uLT5wYXNzd2QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvbm4tPm50bG0sICZyZXNwLCAmbGVuKTsKICAgICBuZXdzdGF0ZSA9IFNBU0xfTlRMTV9UWVBFMk1TRzsKICAgICBicmVhazsKICAgY2FzZSBTQVNMX05UTE1fVFlQRTJNU0c6CiAgICAgLyogRGVjb2RlIHRoZSB0eXBlLTIgbWVzc2FnZSAqLwogICAgIHNhc2wtPnBhcmFtcy0+Z2V0bWVzc2FnZShkYXRhLT5zdGF0ZS5idWZmZXIsICZzZXJ2ZXJkYXRhKTsKLSAgICByZXN1bHQgPSBDdXJsX3Nhc2xfZGVjb2RlX250bG1fdHlwZTJfbWVzc2FnZShkYXRhLCBzZXJ2ZXJkYXRhLAorICAgIHJlc3VsdCA9IEN1cmxfYXV0aF9kZWNvZGVfbnRsbV90eXBlMl9tZXNzYWdlKGRhdGEsIHNlcnZlcmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvbm4tPm50bG0pOwogICAgIGlmKCFyZXN1bHQpCi0gICAgICByZXN1bHQgPSBDdXJsX3Nhc2xfY3JlYXRlX250bG1fdHlwZTNfbWVzc2FnZShkYXRhLCBjb25uLT51c2VyLAorICAgICAgcmVzdWx0ID0gQ3VybF9hdXRoX2NyZWF0ZV9udGxtX3R5cGUzX21lc3NhZ2UoZGF0YSwgY29ubi0+dXNlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm4tPnBhc3N3ZCwgJmNvbm4tPm50bG0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVzcCwgJmxlbik7CiAgICAgYnJlYWs7CkBAIC0xNTkyLDkgKzUwMiwxMCBAQAogCiAjaWYgZGVmaW5lZChVU0VfS0VSQkVST1M1KQogICBjYXNlIFNBU0xfR1NTQVBJOgotICAgIHJlc3VsdCA9IEN1cmxfc2FzbF9jcmVhdGVfZ3NzYXBpX3VzZXJfbWVzc2FnZShkYXRhLCBjb25uLT51c2VyLAorICAgIHJlc3VsdCA9IEN1cmxfYXV0aF9jcmVhdGVfZ3NzYXBpX3VzZXJfbWVzc2FnZShkYXRhLCBjb25uLT51c2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uLT5wYXNzd2QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhc2wtPnBhcmFtcy0+c2VydmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+ZWFzeV9jb25uLT5ob3N0Lm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhc2wtPm11dHVhbF9hdXRoLCBOVUxMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29ubi0+a3JiNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlc3AsICZsZW4pOwpAQCAtMTYwNSw3ICs1MTYsOCBAQAogICAgIGlmKHNhc2wtPm11dHVhbF9hdXRoKSB7CiAgICAgICAvKiBEZWNvZGUgdGhlIHVzZXIgdG9rZW4gY2hhbGxlbmdlIGFuZCBjcmVhdGUgdGhlIG9wdGlvbmFsIHJlc3BvbnNlCiAgICAgICAgICBtZXNzYWdlICovCi0gICAgICByZXN1bHQgPSBDdXJsX3Nhc2xfY3JlYXRlX2dzc2FwaV91c2VyX21lc3NhZ2UoZGF0YSwgTlVMTCwgTlVMTCwgTlVMTCwKKyAgICAgIHJlc3VsdCA9IEN1cmxfYXV0aF9jcmVhdGVfZ3NzYXBpX3VzZXJfbWVzc2FnZShkYXRhLCBOVUxMLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FzbC0+bXV0dWFsX2F1dGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyZGF0YSwgJmNvbm4tPmtyYjUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlc3AsICZsZW4pOwpAQCAtMTYxMywyNCArNTI1LDYwIEBACiAgICAgfQogICAgIGVsc2UKICAgICAgIC8qIERlY29kZSB0aGUgc2VjdXJpdHkgY2hhbGxlbmdlIGFuZCBjcmVhdGUgdGhlIHJlc3BvbnNlIG1lc3NhZ2UgKi8KLSAgICAgIHJlc3VsdCA9IEN1cmxfc2FzbF9jcmVhdGVfZ3NzYXBpX3NlY3VyaXR5X21lc3NhZ2UoZGF0YSwgc2VydmVyZGF0YSwKKyAgICAgIHJlc3VsdCA9IEN1cmxfYXV0aF9jcmVhdGVfZ3NzYXBpX3NlY3VyaXR5X21lc3NhZ2UoZGF0YSwgc2VydmVyZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvbm4tPmtyYjUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZXNwLCAmbGVuKTsKICAgICBicmVhazsKICAgY2FzZSBTQVNMX0dTU0FQSV9OT19EQVRBOgogICAgIHNhc2wtPnBhcmFtcy0+Z2V0bWVzc2FnZShkYXRhLT5zdGF0ZS5idWZmZXIsICZzZXJ2ZXJkYXRhKTsKICAgICAvKiBEZWNvZGUgdGhlIHNlY3VyaXR5IGNoYWxsZW5nZSBhbmQgY3JlYXRlIHRoZSByZXNwb25zZSBtZXNzYWdlICovCi0gICAgcmVzdWx0ID0gQ3VybF9zYXNsX2NyZWF0ZV9nc3NhcGlfc2VjdXJpdHlfbWVzc2FnZShkYXRhLCBzZXJ2ZXJkYXRhLAorICAgIHJlc3VsdCA9IEN1cmxfYXV0aF9jcmVhdGVfZ3NzYXBpX3NlY3VyaXR5X21lc3NhZ2UoZGF0YSwgc2VydmVyZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb25uLT5rcmI1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlc3AsICZsZW4pOwogICAgIGJyZWFrOwogI2VuZGlmCiAKLSAgY2FzZSBTQVNMX1hPQVVUSDI6CisgIGNhc2UgU0FTTF9PQVVUSDI6CiAgICAgLyogQ3JlYXRlIHRoZSBhdXRob3Jpc2F0aW9uIG1lc3NhZ2UgKi8KLSAgICByZXN1bHQgPSBzYXNsX2NyZWF0ZV94b2F1dGgyX21lc3NhZ2UoZGF0YSwgY29ubi0+dXNlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubi0+eG9hdXRoMl9iZWFyZXIsICZyZXNwLCAmbGVuKTsKKyAgICBpZihzYXNsLT5hdXRodXNlZCA9PSBTQVNMX01FQ0hfT0FVVEhCRUFSRVIpIHsKKyAgICAgIHJlc3VsdCA9IEN1cmxfYXV0aF9jcmVhdGVfb2F1dGhfYmVhcmVyX21lc3NhZ2UoZGF0YSwgY29ubi0+dXNlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubi0+aG9zdC5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uLT5wb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uLT5vYXV0aF9iZWFyZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZXNwLCAmbGVuKTsKKworICAgICAgLyogRmFpbHVyZXMgbWF5YmUgc2VudCBieSB0aGUgc2VydmVyIGFzIGNvbnRpbnVhdGlvbnMgZm9yIE9BVVRIQkVBUkVSICovCisgICAgICBuZXdzdGF0ZSA9IFNBU0xfT0FVVEgyX1JFU1A7CisgICAgfQorICAgIGVsc2UKKyAgICAgIHJlc3VsdCA9IEN1cmxfYXV0aF9jcmVhdGVfb2F1dGhfYmVhcmVyX21lc3NhZ2UoZGF0YSwgY29ubi0+dXNlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubi0+b2F1dGhfYmVhcmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVzcCwgJmxlbik7CiAgICAgYnJlYWs7CisKKyAgY2FzZSBTQVNMX09BVVRIMl9SRVNQOgorICAgIC8qIFRoZSBjb250aW51YXRpb24gaXMgb3B0aW9uYWwgc28gY2hlY2sgdGhlIHJlc3BvbnNlIGNvZGUgKi8KKyAgICBpZihjb2RlID09IHNhc2wtPnBhcmFtcy0+ZmluYWxjb2RlKSB7CisgICAgICAvKiBGaW5hbCByZXNwb25zZSB3YXMgcmVjZWl2ZWQgc28gd2UgYXJlIGRvbmUgKi8KKyAgICAgICpwcm9ncmVzcyA9IFNBU0xfRE9ORTsKKyAgICAgIHN0YXRlKHNhc2wsIGNvbm4sIFNBU0xfU1RPUCk7CisgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICBlbHNlIGlmKGNvZGUgPT0gc2FzbC0+cGFyYW1zLT5jb250Y29kZSkgeworICAgICAgLyogQWNrbm93bGVkZ2UgdGhlIGNvbnRpbnVhdGlvbiBieSBzZW5kaW5nIGEgMHgwMSByZXNwb25zZSBiYXNlNjQKKyAgICAgICAgIGVuY29kZWQgKi8KKyAgICAgIHJlc3AgPSBzdHJkdXAoIkFRPT0iKTsKKyAgICAgIGlmKCFyZXNwKQorICAgICAgICByZXN1bHQgPSBDVVJMRV9PVVRfT0ZfTUVNT1JZOworICAgICAgYnJlYWs7CisgICAgfQorICAgIGVsc2UgeworICAgICAgKnByb2dyZXNzID0gU0FTTF9ET05FOworICAgICAgc3RhdGUoc2FzbCwgY29ubiwgU0FTTF9TVE9QKTsKKyAgICAgIHJldHVybiBDVVJMRV9MT0dJTl9ERU5JRUQ7CisgICAgfQorCiAgIGNhc2UgU0FTTF9DQU5DRUw6CiAgICAgLyogUmVtb3ZlIHRoZSBvZmZlbmRpbmcgbWVjaGFuaXNtIGZyb20gdGhlIHN1cHBvcnRlZCBsaXN0ICovCiAgICAgc2FzbC0+YXV0aG1lY2hzIF49IHNhc2wtPmF1dGh1c2VkOwpkaWZmIC0tZ2l0IGEvbGliL2N1cmxfc2FzbC5oIGIvbGliL2N1cmxfc2FzbC5oCmluZGV4IDExN2Q2MGUuLjY1MzVmZWQgMTAwNjQ0Ci0tLSBhL2xpYi9jdXJsX3Nhc2wuaAorKysgYi9saWIvY3VybF9zYXNsLmgKQEAgLTcsMTEgKzcsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAyMDEyIC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yNywxOCArMjcsNiBAQAogc3RydWN0IFNlc3Npb25IYW5kbGU7CiBzdHJ1Y3QgY29ubmVjdGRhdGE7CiAKLSNpZiAhZGVmaW5lZChDVVJMX0RJU0FCTEVfQ1JZUFRPX0FVVEgpCi1zdHJ1Y3QgZGlnZXN0ZGF0YTsKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChVU0VfTlRMTSkKLXN0cnVjdCBudGxtZGF0YTsKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChVU0VfS0VSQkVST1M1KQotc3RydWN0IGtlcmJlcm9zNWRhdGE7Ci0jZW5kaWYKLQogLyogQXV0aGVudGljYXRpb24gbWVjaGFuaXNtIGZsYWdzICovCiAjZGVmaW5lIFNBU0xfTUVDSF9MT0dJTiAgICAgICAgICAgICAoMSA8PCAwKQogI2RlZmluZSBTQVNMX01FQ0hfUExBSU4gICAgICAgICAgICAgKDEgPDwgMSkKQEAgLTQ4LDMyICszNiwyMyBAQAogI2RlZmluZSBTQVNMX01FQ0hfRVhURVJOQUwgICAgICAgICAgKDEgPDwgNSkKICNkZWZpbmUgU0FTTF9NRUNIX05UTE0gICAgICAgICAgICAgICgxIDw8IDYpCiAjZGVmaW5lIFNBU0xfTUVDSF9YT0FVVEgyICAgICAgICAgICAoMSA8PCA3KQorI2RlZmluZSBTQVNMX01FQ0hfT0FVVEhCRUFSRVIgICAgICAgKDEgPDwgOCkKIAogLyogQXV0aGVudGljYXRpb24gbWVjaGFuaXNtIHZhbHVlcyAqLwogI2RlZmluZSBTQVNMX0FVVEhfTk9ORSAgICAgICAgICAwCiAjZGVmaW5lIFNBU0xfQVVUSF9BTlkgICAgICAgICAgIH4wVQotI2RlZmluZSBTQVNMX0FVVEhfREVGQVVMVCAgICAgICAoU0FTTF9BVVRIX0FOWSAmIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH4oU0FTTF9NRUNIX0VYVEVSTkFMIHwgU0FTTF9NRUNIX1hPQVVUSDIpKQorI2RlZmluZSBTQVNMX0FVVEhfREVGQVVMVCAgICAgICAoU0FTTF9BVVRIX0FOWSAmIH5TQVNMX01FQ0hfRVhURVJOQUwpCiAKIC8qIEF1dGhlbnRpY2F0aW9uIG1lY2hhbmlzbSBzdHJpbmdzICovCi0jZGVmaW5lIFNBU0xfTUVDSF9TVFJJTkdfTE9HSU4gICAgICAiTE9HSU4iCi0jZGVmaW5lIFNBU0xfTUVDSF9TVFJJTkdfUExBSU4gICAgICAiUExBSU4iCi0jZGVmaW5lIFNBU0xfTUVDSF9TVFJJTkdfQ1JBTV9NRDUgICAiQ1JBTS1NRDUiCi0jZGVmaW5lIFNBU0xfTUVDSF9TVFJJTkdfRElHRVNUX01ENSAiRElHRVNULU1ENSIKLSNkZWZpbmUgU0FTTF9NRUNIX1NUUklOR19HU1NBUEkgICAgICJHU1NBUEkiCi0jZGVmaW5lIFNBU0xfTUVDSF9TVFJJTkdfRVhURVJOQUwgICAiRVhURVJOQUwiCi0jZGVmaW5lIFNBU0xfTUVDSF9TVFJJTkdfTlRMTSAgICAgICAiTlRMTSIKLSNkZWZpbmUgU0FTTF9NRUNIX1NUUklOR19YT0FVVEgyICAgICJYT0FVVEgyIgotCi0jaWYgIWRlZmluZWQoQ1VSTF9ESVNBQkxFX0NSWVBUT19BVVRIKQotI2RlZmluZSBESUdFU1RfTUFYX1ZBTFVFX0xFTkdUSCAgICAgICAgICAgMjU2Ci0jZGVmaW5lIERJR0VTVF9NQVhfQ09OVEVOVF9MRU5HVEggICAgICAgICAxMDI0Ci0jZW5kaWYKLQotZW51bSB7Ci0gIENVUkxESUdFU1RBTEdPX01ENSwKLSAgQ1VSTERJR0VTVEFMR09fTUQ1U0VTUwotfTsKKyNkZWZpbmUgU0FTTF9NRUNIX1NUUklOR19MT0dJTiAgICAgICAgIkxPR0lOIgorI2RlZmluZSBTQVNMX01FQ0hfU1RSSU5HX1BMQUlOICAgICAgICAiUExBSU4iCisjZGVmaW5lIFNBU0xfTUVDSF9TVFJJTkdfQ1JBTV9NRDUgICAgICJDUkFNLU1ENSIKKyNkZWZpbmUgU0FTTF9NRUNIX1NUUklOR19ESUdFU1RfTUQ1ICAgIkRJR0VTVC1NRDUiCisjZGVmaW5lIFNBU0xfTUVDSF9TVFJJTkdfR1NTQVBJICAgICAgICJHU1NBUEkiCisjZGVmaW5lIFNBU0xfTUVDSF9TVFJJTkdfRVhURVJOQUwgICAgICJFWFRFUk5BTCIKKyNkZWZpbmUgU0FTTF9NRUNIX1NUUklOR19OVExNICAgICAgICAgIk5UTE0iCisjZGVmaW5lIFNBU0xfTUVDSF9TVFJJTkdfWE9BVVRIMiAgICAgICJYT0FVVEgyIgorI2RlZmluZSBTQVNMX01FQ0hfU1RSSU5HX09BVVRIQkVBUkVSICAiT0FVVEhCRUFSRVIiCiAKIC8qIFNBU0wgbWFjaGluZSBzdGF0ZXMgKi8KIHR5cGVkZWYgZW51bSB7CkBAIC05MCw3ICs2OSw4IEBACiAgIFNBU0xfR1NTQVBJLAogICBTQVNMX0dTU0FQSV9UT0tFTiwKICAgU0FTTF9HU1NBUElfTk9fREFUQSwKLSAgU0FTTF9YT0FVVEgyLAorICBTQVNMX09BVVRIMiwKKyAgU0FTTF9PQVVUSDJfUkVTUCwKICAgU0FTTF9DQU5DRUwsCiAgIFNBU0xfRklOQUwKIH0gc2FzbHN0YXRlOwpAQCAtMTM0LDk3ICsxMTQsNiBAQAogICAod29yZGxlbiA9PSAoc2l6ZW9mKG1lY2gpIC0gMSkgLyBzaXplb2YoY2hhcikgJiYgXAogICAgIW1lbWNtcChsaW5lLCBtZWNoLCB3b3JkbGVuKSkKIAotLyogVGhpcyBpcyB1c2VkIHRvIGJ1aWxkIGEgU1BOIHN0cmluZyAqLwotI2lmICFkZWZpbmVkKFVTRV9XSU5ET1dTX1NTUEkpCi1jaGFyICpDdXJsX3Nhc2xfYnVpbGRfc3BuKGNvbnN0IGNoYXIgKnNlcnZpY2UsIGNvbnN0IGNoYXIgKmluc3RhbmNlKTsKLSNlbHNlCi1UQ0hBUiAqQ3VybF9zYXNsX2J1aWxkX3Nwbihjb25zdCBjaGFyICpzZXJ2aWNlLCBjb25zdCBjaGFyICppbnN0YW5jZSk7Ci0jZW5kaWYKLQotLyogVGhpcyBpcyB1c2VkIHRvIGV4dHJhY3QgdGhlIHJlYWxtIGZyb20gYSBjaGFsbGVuZ2UgbWVzc2FnZSAqLwotaW50IEN1cmxfc2FzbF9kaWdlc3RfZ2V0X3BhaXIoY29uc3QgY2hhciAqc3RyLCBjaGFyICp2YWx1ZSwgY2hhciAqY29udGVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiplbmRwdHIpOwotCi0jaWYgZGVmaW5lZChIQVZFX0dTU0FQSSkKLWNoYXIgKkN1cmxfc2FzbF9idWlsZF9nc3NhcGlfc3BuKGNvbnN0IGNoYXIgKnNlcnZpY2UsIGNvbnN0IGNoYXIgKmhvc3QpOwotI2VuZGlmCi0KLSNpZm5kZWYgQ1VSTF9ESVNBQkxFX0NSWVBUT19BVVRICi0KLS8qIFRoaXMgaXMgdXNlZCB0byBnZW5lcmF0ZSBhIGJhc2U2NCBlbmNvZGVkIERJR0VTVC1NRDUgcmVzcG9uc2UgbWVzc2FnZSAqLwotQ1VSTGNvZGUgQ3VybF9zYXNsX2NyZWF0ZV9kaWdlc3RfbWQ1X21lc3NhZ2Uoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjaGxnNjQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp1c2VycCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhc3N3ZHAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzZXJ2aWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKm91dHB0ciwgc2l6ZV90ICpvdXRsZW4pOwotCi0vKiBUaGlzIGlzIHVzZWQgdG8gZGVjb2RlIGEgSFRUUCBESUdFU1QgY2hhbGxlbmdlIG1lc3NhZ2UgKi8KLUNVUkxjb2RlIEN1cmxfc2FzbF9kZWNvZGVfZGlnZXN0X2h0dHBfbWVzc2FnZShjb25zdCBjaGFyICpjaGxnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkaWdlc3RkYXRhICpkaWdlc3QpOwotCi0vKiBUaGlzIGlzIHVzZWQgdG8gZ2VuZXJhdGUgYSBIVFRQIERJR0VTVCByZXNwb25zZSBtZXNzYWdlICovCi1DVVJMY29kZSBDdXJsX3Nhc2xfY3JlYXRlX2RpZ2VzdF9odHRwX21lc3NhZ2Uoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdXNlcnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGFzc3dkcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpyZXF1ZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnVyaSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZGlnZXN0ZGF0YSAqZGlnZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipvdXRwdHIsIHNpemVfdCAqb3V0bGVuKTsKLQotLyogVGhpcyBpcyB1c2VkIHRvIGNsZWFuIHVwIHRoZSBkaWdlc3Qgc3BlY2lmaWMgZGF0YSAqLwotdm9pZCBDdXJsX3Nhc2xfZGlnZXN0X2NsZWFudXAoc3RydWN0IGRpZ2VzdGRhdGEgKmRpZ2VzdCk7Ci0jZW5kaWYKLQotI2lmZGVmIFVTRV9OVExNCi0vKiBUaGlzIGlzIHVzZWQgdG8gZ2VuZXJhdGUgYSBiYXNlNjQgZW5jb2RlZCBOVExNIHR5cGUtMSBtZXNzYWdlICovCi1DVVJMY29kZSBDdXJsX3Nhc2xfY3JlYXRlX250bG1fdHlwZTFfbWVzc2FnZShjb25zdCBjaGFyICp1c2VycCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhc3N3ZHAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbnRsbWRhdGEgKm50bG0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqb3V0cHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICpvdXRsZW4pOwotCi0vKiBUaGlzIGlzIHVzZWQgdG8gZGVjb2RlIGEgYmFzZTY0IGVuY29kZWQgTlRMTSB0eXBlLTIgbWVzc2FnZSAqLwotQ1VSTGNvZGUgQ3VybF9zYXNsX2RlY29kZV9udGxtX3R5cGUyX21lc3NhZ2Uoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0eXBlMm1zZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBudGxtZGF0YSAqbnRsbSk7Ci0KLS8qIFRoaXMgaXMgdXNlZCB0byBnZW5lcmF0ZSBhIGJhc2U2NCBlbmNvZGVkIE5UTE0gdHlwZS0zIG1lc3NhZ2UgKi8KLUNVUkxjb2RlIEN1cmxfc2FzbF9jcmVhdGVfbnRsbV90eXBlM19tZXNzYWdlKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdXNlcnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwYXNzd2RwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG50bG1kYXRhICpudGxtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKm91dHB0ciwgc2l6ZV90ICpvdXRsZW4pOwotCi0vKiBUaGlzIGlzIHVzZWQgdG8gY2xlYW4gdXAgdGhlIG50bG0gc3BlY2lmaWMgZGF0YSAqLwotdm9pZCBDdXJsX3Nhc2xfbnRsbV9jbGVhbnVwKHN0cnVjdCBudGxtZGF0YSAqbnRsbSk7Ci0KLSNlbmRpZiAvKiBVU0VfTlRMTSAqLwotCi0jaWYgZGVmaW5lZChVU0VfS0VSQkVST1M1KQotLyogVGhpcyBpcyB1c2VkIHRvIGdlbmVyYXRlIGEgYmFzZTY0IGVuY29kZWQgR1NTQVBJIChLZXJiZXJvcyBWNSkgdXNlciB0b2tlbgotICAgbWVzc2FnZSAqLwotQ1VSTGNvZGUgQ3VybF9zYXNsX2NyZWF0ZV9nc3NhcGlfdXNlcl9tZXNzYWdlKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnVzZXJwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhc3N3ZHAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc2VydmljZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBib29sIG11dHVhbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjaGxnNjQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGtlcmJlcm9zNWRhdGEgKmtyYjUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKm91dHB0ciwgc2l6ZV90ICpvdXRsZW4pOwotCi0vKiBUaGlzIGlzIHVzZWQgdG8gZ2VuZXJhdGUgYSBiYXNlNjQgZW5jb2RlZCBHU1NBUEkgKEtlcmJlcm9zIFY1KSBzZWN1cml0eQotICAgdG9rZW4gbWVzc2FnZSAqLwotQ1VSTGNvZGUgQ3VybF9zYXNsX2NyZWF0ZV9nc3NhcGlfc2VjdXJpdHlfbWVzc2FnZShzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqaW5wdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBrZXJiZXJvczVkYXRhICprcmI1LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqb3V0cHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKm91dGxlbik7Ci0KLS8qIFRoaXMgaXMgdXNlZCB0byBjbGVhbiB1cCB0aGUgZ3NzYXBpIHNwZWNpZmljIGRhdGEgKi8KLXZvaWQgQ3VybF9zYXNsX2dzc2FwaV9jbGVhbnVwKHN0cnVjdCBrZXJiZXJvczVkYXRhICprcmI1KTsKLSNlbmRpZiAvKiBVU0VfS0VSQkVST1M1ICovCi0KIC8qIFRoaXMgaXMgdXNlZCB0byBjbGVhbnVwIGFueSBsaWJyYXJpZXMgb3IgY3VybCBtb2R1bGVzIHVzZWQgYnkgdGhlIHNhc2wKICAgIGZ1bmN0aW9ucyAqLwogdm9pZCBDdXJsX3Nhc2xfY2xlYW51cChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIHVuc2lnbmVkIGludCBhdXRodXNlZCk7CmRpZmYgLS1naXQgYS9saWIvY3VybF9zYXNsX3NzcGkuYyBiL2xpYi9jdXJsX3Nhc2xfc3NwaS5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMTQ5NTMwLi4wMDAwMDAwCi0tLSBhL2xpYi9jdXJsX3Nhc2xfc3NwaS5jCisrKyAvZGV2L251bGwKQEAgLTEsMTI4MSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCi0gKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKLSAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgotICogQ29weXJpZ2h0IChDKSAyMDE0LCBTdGV2ZSBIb2xtZSwgPHN0ZXZlX2hvbG1lQGhvdG1haWwuY29tPi4KLSAqCi0gKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAotICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KLSAqCi0gKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKLSAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwotICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KLSAqCi0gKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCi0gKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICoKLSAqIFJGQzI2MTcgQmFzaWMgYW5kIERpZ2VzdCBBY2Nlc3MgQXV0aGVudGljYXRpb24KLSAqIFJGQzI4MzEgRElHRVNULU1ENSBhdXRoZW50aWNhdGlvbgotICogUkZDNDQyMiBTaW1wbGUgQXV0aGVudGljYXRpb24gYW5kIFNlY3VyaXR5IExheWVyIChTQVNMKQotICogUkZDNDc1MiBUaGUgS2VyYmVyb3MgVjUgKCJHU1NBUEkiKSBTQVNMIE1lY2hhbmlzbQotICoKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLSNpbmNsdWRlICJjdXJsX3NldHVwLmgiCi0KLSNpZiBkZWZpbmVkKFVTRV9XSU5ET1dTX1NTUEkpCi0KLSNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KLQotI2luY2x1ZGUgImN1cmxfc2FzbC5oIgotI2luY2x1ZGUgInVybGRhdGEuaCIKLSNpbmNsdWRlICJjdXJsX2Jhc2U2NC5oIgotI2luY2x1ZGUgIndhcm5sZXNzLmgiCi0jaW5jbHVkZSAiY3VybF9tdWx0aWJ5dGUuaCIKLSNpbmNsdWRlICJzZW5kZi5oIgotI2luY2x1ZGUgInN0cmR1cC5oIgotI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCi0jaW5jbHVkZSAicmF3c3RyLmgiCi0KLS8qIFRoZSBsYXN0ICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZTogKi8KLSNpbmNsdWRlICJjdXJsX21lbW9yeS5oIgotI2luY2x1ZGUgIm1lbWRlYnVnLmgiCi0KLS8qCi0gKiBDdXJsX3Nhc2xfYnVpbGRfc3BuKCkKLSAqCi0gKiBUaGlzIGlzIHVzZWQgdG8gYnVpbGQgYSBTUE4gc3RyaW5nIGluIHRoZSBmb3JtYXQgc2VydmljZS9ob3N0LgotICoKLSAqIFBhcmFtZXRlcnM6Ci0gKgotICogc2VyaXZjZSAgW2luXSAtIFRoZSBzZXJ2aWNlIHR5cGUgc3VjaCBhcyB3d3csIHNtdHAsIHBvcCBvciBpbWFwLgotICogaG9zdCAgICAgW2luXSAtIFRoZSBob3N0IG5hbWUgb3IgcmVhbG0uCi0gKgotICogUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIG5ld2x5IGFsbG9jYXRlZCBTUE4uCi0gKi8KLVRDSEFSICpDdXJsX3Nhc2xfYnVpbGRfc3BuKGNvbnN0IGNoYXIgKnNlcnZpY2UsIGNvbnN0IGNoYXIgKmhvc3QpCi17Ci0gIGNoYXIgKnV0Zjhfc3BuID0gTlVMTDsKLSAgVENIQVIgKnRjaGFyX3NwbiA9IE5VTEw7Ci0KLSAgLyogTm90ZTogV2UgY291bGQgdXNlIERzTWFrZVNQTigpIG9yIERzQ2xpZW50TWFrZVNwbkZvclRhcmdldFNlcnZlcigpIHJhdGhlcgotICAgICB0aGFuIGRvaW5nIHRoaXMgb3Vyc2VsdmVzIGJ1dCB0aGUgZmlyc3QgaXMgb25seSBhdmFpbGFibGUgaW4gV2luZG93cyBYUAotICAgICBhbmQgV2luZG93cyBTZXJ2ZXIgMjAwMyBhbmQgdGhlIGxhdHRlciBpcyBvbmx5IGF2YWlsYWJsZSBpbiBXaW5kb3dzIDIwMDAKLSAgICAgYnV0IG5vdCBXaW5kb3dzOTUvOTgvTUUgb3IgV2luZG93cyBOVDQuMCB1bmxlc3MgdGhlIEFjdGl2ZSBEaXJlY3RvcnkKLSAgICAgQ2xpZW50IEV4dGVuc2lvbnMgYXJlIGluc3RhbGxlZC4gQXMgc3VjaCBpdCBpcyBmYXIgc2ltcGxlciBmb3IgdXMgdG8KLSAgICAgZm9ybXVsYXRlIHRoZSBTUE4gaW5zdGVhZC4gKi8KLQotICAvKiBBbGxvY2F0ZSBvdXIgVVRGOCBiYXNlZCBTUE4gKi8KLSAgdXRmOF9zcG4gPSBhcHJpbnRmKCIlcy8lcyIsIHNlcnZpY2UsIGhvc3QpOwotICBpZighdXRmOF9zcG4pIHsKLSAgICByZXR1cm4gTlVMTDsKLSAgfQotCi0gIC8qIEFsbG9jYXRlIG91ciBUQ0hBUiBiYXNlZCBTUE4gKi8KLSAgdGNoYXJfc3BuID0gQ3VybF9jb252ZXJ0X1VURjhfdG9fdGNoYXIodXRmOF9zcG4pOwotICBpZighdGNoYXJfc3BuKSB7Ci0gICAgZnJlZSh1dGY4X3Nwbik7Ci0KLSAgICByZXR1cm4gTlVMTDsKLSAgfQotCi0gIC8qIFJlbGVhc2UgdGhlIFVURjggdmFyaWFudCB3aGVuIG9wZXJhdGluZyB3aXRoIFVuaWNvZGUgKi8KLSAgQ3VybF91bmljb2RlZnJlZSh1dGY4X3Nwbik7Ci0KLSAgLyogUmV0dXJuIG91ciBuZXdseSBhbGxvY2F0ZWQgU1BOICovCi0gIHJldHVybiB0Y2hhcl9zcG47Ci19Ci0KLSNpZiAhZGVmaW5lZChDVVJMX0RJU0FCTEVfQ1JZUFRPX0FVVEgpCi0vKgotICogQ3VybF9zYXNsX2NyZWF0ZV9kaWdlc3RfbWQ1X21lc3NhZ2UoKQotICoKLSAqIFRoaXMgaXMgdXNlZCB0byBnZW5lcmF0ZSBhbiBhbHJlYWR5IGVuY29kZWQgRElHRVNULU1ENSByZXNwb25zZSBtZXNzYWdlCi0gKiByZWFkeSBmb3Igc2VuZGluZyB0byB0aGUgcmVjaXBpZW50LgotICoKLSAqIFBhcmFtZXRlcnM6Ci0gKgotICogZGF0YSAgICBbaW5dICAgICAtIFRoZSBzZXNzaW9uIGhhbmRsZS4KLSAqIGNobGc2NCAgW2luXSAgICAgLSBUaGUgYmFzZTY0IGVuY29kZWQgY2hhbGxlbmdlIG1lc3NhZ2UuCi0gKiB1c2VycCAgIFtpbl0gICAgIC0gVGhlIHVzZXIgbmFtZSBpbiB0aGUgZm9ybWF0IFVzZXIgb3IgRG9tYWluXFVzZXIuCi0gKiBwYXNzZHdwIFtpbl0gICAgIC0gVGhlIHVzZXIncyBwYXNzd29yZC4KLSAqIHNlcnZpY2UgW2luXSAgICAgLSBUaGUgc2VydmljZSB0eXBlIHN1Y2ggYXMgd3d3LCBzbXRwLCBwb3Agb3IgaW1hcC4KLSAqIG91dHB0ciAgW2luL291dF0gLSBUaGUgYWRkcmVzcyB3aGVyZSBhIHBvaW50ZXIgdG8gbmV3bHkgYWxsb2NhdGVkIG1lbW9yeQotICogICAgICAgICAgICAgICAgICAgIGhvbGRpbmcgdGhlIHJlc3VsdCB3aWxsIGJlIHN0b3JlZCB1cG9uIGNvbXBsZXRpb24uCi0gKiBvdXRsZW4gIFtvdXRdICAgIC0gVGhlIGxlbmd0aCBvZiB0aGUgb3V0cHV0IG1lc3NhZ2UuCi0gKgotICogUmV0dXJucyBDVVJMRV9PSyBvbiBzdWNjZXNzLgotICovCi1DVVJMY29kZSBDdXJsX3Nhc2xfY3JlYXRlX2RpZ2VzdF9tZDVfbWVzc2FnZShzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNobGc2NCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnVzZXJwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGFzc3dkcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNlcnZpY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqb3V0cHRyLCBzaXplX3QgKm91dGxlbikKLXsKLSAgQ1VSTGNvZGUgcmVzdWx0ID0gQ1VSTEVfT0s7Ci0gIFRDSEFSICpzcG4gPSBOVUxMOwotICBzaXplX3QgY2hsZ2xlbiA9IDA7Ci0gIHNpemVfdCB0b2tlbl9tYXggPSAwOwotICB1bnNpZ25lZCBjaGFyICppbnB1dF90b2tlbiA9IE5VTEw7Ci0gIHVuc2lnbmVkIGNoYXIgKm91dHB1dF90b2tlbiA9IE5VTEw7Ci0gIENyZWRIYW5kbGUgY3JlZGVudGlhbHM7Ci0gIEN0eHRIYW5kbGUgY29udGV4dDsKLSAgUFNlY1BrZ0luZm8gU2VjdXJpdHlQYWNrYWdlOwotICBTRUNfV0lOTlRfQVVUSF9JREVOVElUWSBpZGVudGl0eTsKLSAgU0VDX1dJTk5UX0FVVEhfSURFTlRJVFkgKnBfaWRlbnRpdHk7Ci0gIFNlY0J1ZmZlciBjaGxnX2J1ZjsKLSAgU2VjQnVmZmVyIHJlc3BfYnVmOwotICBTZWNCdWZmZXJEZXNjIGNobGdfZGVzYzsKLSAgU2VjQnVmZmVyRGVzYyByZXNwX2Rlc2M7Ci0gIFNFQ1VSSVRZX1NUQVRVUyBzdGF0dXM7Ci0gIHVuc2lnbmVkIGxvbmcgYXR0cnM7Ci0gIFRpbWVTdGFtcCBleHBpcnk7IC8qIEZvciBXaW5kb3dzIDl4IGNvbXBhdGliaWxpdHkgb2YgU1NQSSBjYWxscyAqLwotCi0gIC8qIERlY29kZSB0aGUgYmFzZS02NCBlbmNvZGVkIGNoYWxsZW5nZSBtZXNzYWdlICovCi0gIGlmKHN0cmxlbihjaGxnNjQpICYmICpjaGxnNjQgIT0gJz0nKSB7Ci0gICAgcmVzdWx0ID0gQ3VybF9iYXNlNjRfZGVjb2RlKGNobGc2NCwgJmlucHV0X3Rva2VuLCAmY2hsZ2xlbik7Ci0gICAgaWYocmVzdWx0KQotICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgfQotCi0gIC8qIEVuc3VyZSB3ZSBoYXZlIGEgdmFsaWQgY2hhbGxlbmdlIG1lc3NhZ2UgKi8KLSAgaWYoIWlucHV0X3Rva2VuKSB7Ci0gICAgaW5mb2YoZGF0YSwgIkRJR0VTVC1NRDUgaGFuZHNoYWtlIGZhaWx1cmUgKGVtcHR5IGNoYWxsZW5nZSBtZXNzYWdlKVxuIik7Ci0KLSAgICByZXR1cm4gQ1VSTEVfQkFEX0NPTlRFTlRfRU5DT0RJTkc7Ci0gIH0KLQotICAvKiBRdWVyeSB0aGUgc2VjdXJpdHkgcGFja2FnZSBmb3IgRGlnZXN0U1NQICovCi0gIHN0YXR1cyA9IHNfcFNlY0ZuLT5RdWVyeVNlY3VyaXR5UGFja2FnZUluZm8oKFRDSEFSICopIFRFWFQoU1BfTkFNRV9ESUdFU1QpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZTZWN1cml0eVBhY2thZ2UpOwotICBpZihzdGF0dXMgIT0gU0VDX0VfT0spIHsKLSAgICBmcmVlKGlucHV0X3Rva2VuKTsKLQotICAgIHJldHVybiBDVVJMRV9OT1RfQlVJTFRfSU47Ci0gIH0KLQotICB0b2tlbl9tYXggPSBTZWN1cml0eVBhY2thZ2UtPmNiTWF4VG9rZW47Ci0KLSAgLyogUmVsZWFzZSB0aGUgcGFja2FnZSBidWZmZXIgYXMgaXQgaXMgbm90IHJlcXVpcmVkIGFueW1vcmUgKi8KLSAgc19wU2VjRm4tPkZyZWVDb250ZXh0QnVmZmVyKFNlY3VyaXR5UGFja2FnZSk7Ci0KLSAgLyogQWxsb2NhdGUgb3VyIHJlc3BvbnNlIGJ1ZmZlciAqLwotICBvdXRwdXRfdG9rZW4gPSBtYWxsb2ModG9rZW5fbWF4KTsKLSAgaWYoIW91dHB1dF90b2tlbikgewotICAgIGZyZWUoaW5wdXRfdG9rZW4pOwotCi0gICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7Ci0gIH0KLQotICAvKiBHZW5lcmF0ZSBvdXIgU1BOICovCi0gIHNwbiA9IEN1cmxfc2FzbF9idWlsZF9zcG4oc2VydmljZSwgZGF0YS0+ZWFzeV9jb25uLT5ob3N0Lm5hbWUpOwotICBpZighc3BuKSB7Ci0gICAgZnJlZShvdXRwdXRfdG9rZW4pOwotICAgIGZyZWUoaW5wdXRfdG9rZW4pOwotCi0gICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7Ci0gIH0KLQotICBpZih1c2VycCAmJiAqdXNlcnApIHsKLSAgICAvKiBQb3B1bGF0ZSBvdXIgaWRlbnRpdHkgc3RydWN0dXJlICovCi0gICAgcmVzdWx0ID0gQ3VybF9jcmVhdGVfc3NwaV9pZGVudGl0eSh1c2VycCwgcGFzc3dkcCwgJmlkZW50aXR5KTsKLSAgICBpZihyZXN1bHQpIHsKLSAgICAgIGZyZWUoc3BuKTsKLSAgICAgIGZyZWUob3V0cHV0X3Rva2VuKTsKLSAgICAgIGZyZWUoaW5wdXRfdG9rZW4pOwotCi0gICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIC8qIEFsbG93IHByb3BlciBjbGVhbnVwIG9mIHRoZSBpZGVudGl0eSBzdHJ1Y3R1cmUgKi8KLSAgICBwX2lkZW50aXR5ID0gJmlkZW50aXR5OwotICB9Ci0gIGVsc2UKLSAgICAvKiBVc2UgdGhlIGN1cnJlbnQgV2luZG93cyB1c2VyICovCi0gICAgcF9pZGVudGl0eSA9IE5VTEw7Ci0KLSAgLyogQWNxdWlyZSBvdXIgY3JlZGVudGlhbHMgaGFuZGxlICovCi0gIHN0YXR1cyA9IHNfcFNlY0ZuLT5BY3F1aXJlQ3JlZGVudGlhbHNIYW5kbGUoTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVENIQVIgKikgVEVYVChTUF9OQU1FX0RJR0VTVCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VDUEtHX0NSRURfT1VUQk9VTkQsIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcF9pZGVudGl0eSwgTlVMTCwgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY3JlZGVudGlhbHMsICZleHBpcnkpOwotCi0gIGlmKHN0YXR1cyAhPSBTRUNfRV9PSykgewotICAgIEN1cmxfc3NwaV9mcmVlX2lkZW50aXR5KHBfaWRlbnRpdHkpOwotICAgIGZyZWUoc3BuKTsKLSAgICBmcmVlKG91dHB1dF90b2tlbik7Ci0gICAgZnJlZShpbnB1dF90b2tlbik7Ci0KLSAgICByZXR1cm4gQ1VSTEVfTE9HSU5fREVOSUVEOwotICB9Ci0KLSAgLyogU2V0dXAgdGhlIGNoYWxsZW5nZSAiaW5wdXQiIHNlY3VyaXR5IGJ1ZmZlciAqLwotICBjaGxnX2Rlc2MudWxWZXJzaW9uID0gU0VDQlVGRkVSX1ZFUlNJT047Ci0gIGNobGdfZGVzYy5jQnVmZmVycyAgPSAxOwotICBjaGxnX2Rlc2MucEJ1ZmZlcnMgID0gJmNobGdfYnVmOwotICBjaGxnX2J1Zi5CdWZmZXJUeXBlID0gU0VDQlVGRkVSX1RPS0VOOwotICBjaGxnX2J1Zi5wdkJ1ZmZlciAgID0gaW5wdXRfdG9rZW47Ci0gIGNobGdfYnVmLmNiQnVmZmVyICAgPSBjdXJseF91enRvdWwoY2hsZ2xlbik7Ci0KLSAgLyogU2V0dXAgdGhlIHJlc3BvbnNlICJvdXRwdXQiIHNlY3VyaXR5IGJ1ZmZlciAqLwotICByZXNwX2Rlc2MudWxWZXJzaW9uID0gU0VDQlVGRkVSX1ZFUlNJT047Ci0gIHJlc3BfZGVzYy5jQnVmZmVycyAgPSAxOwotICByZXNwX2Rlc2MucEJ1ZmZlcnMgID0gJnJlc3BfYnVmOwotICByZXNwX2J1Zi5CdWZmZXJUeXBlID0gU0VDQlVGRkVSX1RPS0VOOwotICByZXNwX2J1Zi5wdkJ1ZmZlciAgID0gb3V0cHV0X3Rva2VuOwotICByZXNwX2J1Zi5jYkJ1ZmZlciAgID0gY3VybHhfdXp0b3VsKHRva2VuX21heCk7Ci0KLSAgLyogR2VuZXJhdGUgb3VyIHJlc3BvbnNlIG1lc3NhZ2UgKi8KLSAgc3RhdHVzID0gc19wU2VjRm4tPkluaXRpYWxpemVTZWN1cml0eUNvbnRleHQoJmNyZWRlbnRpYWxzLCBOVUxMLCBzcG4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAsICZjaGxnX2Rlc2MsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb250ZXh0LCAmcmVzcF9kZXNjLCAmYXR0cnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZleHBpcnkpOwotCi0gIGlmKHN0YXR1cyA9PSBTRUNfSV9DT01QTEVURV9ORUVERUQgfHwKLSAgICAgc3RhdHVzID09IFNFQ19JX0NPTVBMRVRFX0FORF9DT05USU5VRSkKLSAgICBzX3BTZWNGbi0+Q29tcGxldGVBdXRoVG9rZW4oJmNyZWRlbnRpYWxzLCAmcmVzcF9kZXNjKTsKLSAgZWxzZSBpZihzdGF0dXMgIT0gU0VDX0VfT0sgJiYgc3RhdHVzICE9IFNFQ19JX0NPTlRJTlVFX05FRURFRCkgewotICAgIHNfcFNlY0ZuLT5GcmVlQ3JlZGVudGlhbHNIYW5kbGUoJmNyZWRlbnRpYWxzKTsKLSAgICBDdXJsX3NzcGlfZnJlZV9pZGVudGl0eShwX2lkZW50aXR5KTsKLSAgICBmcmVlKHNwbik7Ci0gICAgZnJlZShvdXRwdXRfdG9rZW4pOwotICAgIGZyZWUoaW5wdXRfdG9rZW4pOwotCi0gICAgcmV0dXJuIENVUkxFX1JFQ1ZfRVJST1I7Ci0gIH0KLQotICAvKiBCYXNlNjQgZW5jb2RlIHRoZSByZXNwb25zZSAqLwotICByZXN1bHQgPSBDdXJsX2Jhc2U2NF9lbmNvZGUoZGF0YSwgKGNoYXIgKikgb3V0cHV0X3Rva2VuLCByZXNwX2J1Zi5jYkJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB0ciwgb3V0bGVuKTsKLQotICAvKiBGcmVlIG91ciBoYW5kbGVzICovCi0gIHNfcFNlY0ZuLT5EZWxldGVTZWN1cml0eUNvbnRleHQoJmNvbnRleHQpOwotICBzX3BTZWNGbi0+RnJlZUNyZWRlbnRpYWxzSGFuZGxlKCZjcmVkZW50aWFscyk7Ci0KLSAgLyogRnJlZSB0aGUgaWRlbnRpdHkgc3RydWN0dXJlICovCi0gIEN1cmxfc3NwaV9mcmVlX2lkZW50aXR5KHBfaWRlbnRpdHkpOwotCi0gIC8qIEZyZWUgdGhlIFNQTiAqLwotICBmcmVlKHNwbik7Ci0KLSAgLyogRnJlZSB0aGUgcmVzcG9uc2UgYnVmZmVyICovCi0gIGZyZWUob3V0cHV0X3Rva2VuKTsKLQotICAvKiBGcmVlIHRoZSBkZWNvZGVkIGNoYWxsZW5nZSBtZXNzYWdlICovCi0gIGZyZWUoaW5wdXRfdG9rZW4pOwotCi0gIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qCi0qIEN1cmxfb3ZlcnJpZGVfc3NwaV9odHRwX3JlYWxtKCkKLSoKLSogVGhpcyBpcyB1c2VkIHRvIHBvcHVsYXRlIHRoZSBkb21haW4gaW4gYSBTU1BJIGlkZW50aXR5IHN0cnVjdHVyZQotKiBUaGUgcmVhbG0gaXMgZXh0cmFjdGVkIGZyb20gdGhlIGNoYWxsZW5nZSBtZXNzYWdlIGFuZCB1c2VkIGFzIHRoZQotKiBkb21haW4gaWYgaXQgaXMgbm90IGFscmVhZHkgZXhwbGljaXRseSBzZXQuCi0qCi0qIFBhcmFtZXRlcnM6Ci0qCi0qIGNobGcgICAgIFtpbl0gICAgIC0gVGhlIGNoYWxsZW5nZSBtZXNzYWdlLgotKiBpZGVudGl0eSBbaW4vb3V0XSAtIFRoZSBpZGVudGl0eSBzdHJ1Y3R1cmUuCi0qCi0qIFJldHVybnMgQ1VSTEVfT0sgb24gc3VjY2Vzcy4KLSovCi1DVVJMY29kZSBDdXJsX292ZXJyaWRlX3NzcGlfaHR0cF9yZWFsbShjb25zdCBjaGFyICpjaGxnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VDX1dJTk5UX0FVVEhfSURFTlRJVFkgKmlkZW50aXR5KQotewotICB4Y2hhcnBfdSBkb21haW4sIGR1cF9kb21haW47Ci0KLSAgLyogSWYgZG9tYWluIGlzIGJsYW5rIG9yIHVuc2V0LCBjaGVjayBjaGFsbGVuZ2UgbWVzc2FnZSBmb3IgcmVhbG0gKi8KLSAgaWYoIWlkZW50aXR5LT5Eb21haW4gfHwgIWlkZW50aXR5LT5Eb21haW5MZW5ndGgpIHsKLSAgICBmb3IoOzspIHsKLSAgICAgIGNoYXIgdmFsdWVbRElHRVNUX01BWF9WQUxVRV9MRU5HVEhdOwotICAgICAgY2hhciBjb250ZW50W0RJR0VTVF9NQVhfQ09OVEVOVF9MRU5HVEhdOwotCi0gICAgICAvKiBQYXNzIGFsbCBhZGRpdGlvbmFsIHNwYWNlcyBoZXJlICovCi0gICAgICB3aGlsZSgqY2hsZyAmJiBJU1NQQUNFKCpjaGxnKSkKLSAgICAgICAgY2hsZysrOwotCi0gICAgICAvKiBFeHRyYWN0IGEgdmFsdWU9Y29udGVudCBwYWlyICovCi0gICAgICBpZighQ3VybF9zYXNsX2RpZ2VzdF9nZXRfcGFpcihjaGxnLCB2YWx1ZSwgY29udGVudCwgJmNobGcpKSB7Ci0gICAgICAgIGlmKEN1cmxfcmF3X2VxdWFsKHZhbHVlLCAicmVhbG0iKSkgewotCi0gICAgICAgICAgLyogU2V0dXAgaWRlbnRpdHkncyBkb21haW4gYW5kIGxlbmd0aCAqLwotICAgICAgICAgIGRvbWFpbi50Y2hhcl9wdHIgPSBDdXJsX2NvbnZlcnRfVVRGOF90b190Y2hhcigoY2hhciAqKWNvbnRlbnQpOwotICAgICAgICAgIGlmKCFkb21haW4udGNoYXJfcHRyKQotICAgICAgICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7Ci0gICAgICAgICAgZHVwX2RvbWFpbi50Y2hhcl9wdHIgPSBfdGNzZHVwKGRvbWFpbi50Y2hhcl9wdHIpOwotICAgICAgICAgIGlmKCFkdXBfZG9tYWluLnRjaGFyX3B0cikgewotICAgICAgICAgICAgQ3VybF91bmljb2RlZnJlZShkb21haW4udGNoYXJfcHRyKTsKLSAgICAgICAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotICAgICAgICAgIH0KLSAgICAgICAgICBpZGVudGl0eS0+RG9tYWluID0gZHVwX2RvbWFpbi50Ynl0ZV9wdHI7Ci0gICAgICAgICAgaWRlbnRpdHktPkRvbWFpbkxlbmd0aCA9IGN1cmx4X3V6dG91bChfdGNzbGVuKGR1cF9kb21haW4udGNoYXJfcHRyKSk7Ci0gICAgICAgICAgZHVwX2RvbWFpbi50Y2hhcl9wdHIgPSBOVUxMOwotCi0gICAgICAgICAgQ3VybF91bmljb2RlZnJlZShkb21haW4udGNoYXJfcHRyKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAvKiB1bmtub3duIHNwZWNpZmllciwgaWdub3JlIGl0ISAqLwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICAgIGJyZWFrOyAvKiB3ZSdyZSBkb25lIGhlcmUgKi8KLQotICAgICAgLyogUGFzcyBhbGwgYWRkaXRpb25hbCBzcGFjZXMgaGVyZSAqLwotICAgICAgd2hpbGUoKmNobGcgJiYgSVNTUEFDRSgqY2hsZykpCi0gICAgICAgIGNobGcrKzsKLQotICAgICAgLyogQWxsb3cgdGhlIGxpc3QgdG8gYmUgY29tbWEtc2VwYXJhdGVkICovCi0gICAgICBpZignLCcgPT0gKmNobGcpCi0gICAgICAgIGNobGcrKzsKLSAgICB9Ci0gIH0KLQotICByZXR1cm4gQ1VSTEVfT0s7Ci19Ci0KLS8qCi0gKiBDdXJsX3Nhc2xfZGVjb2RlX2RpZ2VzdF9odHRwX21lc3NhZ2UoKQotICoKLSAqIFRoaXMgaXMgdXNlZCB0byBkZWNvZGUgYSBIVFRQIERJR0VTVCBjaGFsbGVuZ2UgbWVzc2FnZSBpbnRvIHRoZSBzZXBlcmF0ZQotICogYXR0cmlidXRlcy4KLSAqCi0gKiBQYXJhbWV0ZXJzOgotICoKLSAqIGNobGcgICAgW2luXSAgICAgLSBUaGUgY2hhbGxlbmdlIG1lc3NhZ2UuCi0gKiBkaWdlc3QgIFtpbi9vdXRdIC0gVGhlIGRpZ2VzdCBkYXRhIHN0cnVjdCBiZWluZyB1c2VkIGFuZCBtb2RpZmllZC4KLSAqCi0gKiBSZXR1cm5zIENVUkxFX09LIG9uIHN1Y2Nlc3MuCi0gKi8KLUNVUkxjb2RlIEN1cmxfc2FzbF9kZWNvZGVfZGlnZXN0X2h0dHBfbWVzc2FnZShjb25zdCBjaGFyICpjaGxnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkaWdlc3RkYXRhICpkaWdlc3QpCi17Ci0gIHNpemVfdCBjaGxnbGVuID0gc3RybGVuKGNobGcpOwotCi0gIC8qIFdlIGhhZCBhbiBpbnB1dCB0b2tlbiBiZWZvcmUgYW5kIHdlIGdvdCBhbm90aGVyIG9uZSBub3cuIFRoaXMgbWVhbnMgd2UKLSAgcHJvdmlkZWQgYmFkIGNyZWRlbnRpYWxzIGluIHRoZSBwcmV2aW91cyByZXF1ZXN0LiAqLwotICBpZihkaWdlc3QtPmlucHV0X3Rva2VuKQotICAgIHJldHVybiBDVVJMRV9CQURfQ09OVEVOVF9FTkNPRElORzsKLQotICAvKiBTaW1wbHkgc3RvcmUgdGhlIGNoYWxsZW5nZSBmb3IgdXNlIGxhdGVyICovCi0gIGRpZ2VzdC0+aW5wdXRfdG9rZW4gPSAoQllURSAqKSBDdXJsX21lbWR1cChjaGxnLCBjaGxnbGVuKTsKLSAgaWYoIWRpZ2VzdC0+aW5wdXRfdG9rZW4pCi0gICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7Ci0KLSAgZGlnZXN0LT5pbnB1dF90b2tlbl9sZW4gPSBjaGxnbGVuOwotCi0gIHJldHVybiBDVVJMRV9PSzsKLX0KLQotLyoKLSAqIEN1cmxfc2FzbF9jcmVhdGVfZGlnZXN0X2h0dHBfbWVzc2FnZSgpCi0gKgotICogVGhpcyBpcyB1c2VkIHRvIGdlbmVyYXRlIGEgSFRUUCBESUdFU1QgcmVzcG9uc2UgbWVzc2FnZSByZWFkeSBmb3Igc2VuZGluZwotICogdG8gdGhlIHJlY2lwaWVudC4KLSAqCi0gKiBQYXJhbWV0ZXJzOgotICoKLSAqIGRhdGEgICAgW2luXSAgICAgLSBUaGUgc2Vzc2lvbiBoYW5kbGUuCi0gKiB1c2VycCAgIFtpbl0gICAgIC0gVGhlIHVzZXIgbmFtZSBpbiB0aGUgZm9ybWF0IFVzZXIgb3IgRG9tYWluXFVzZXIuCi0gKiBwYXNzZHdwIFtpbl0gICAgIC0gVGhlIHVzZXIncyBwYXNzd29yZC4KLSAqIHJlcXVlc3QgW2luXSAgICAgLSBUaGUgSFRUUCByZXF1ZXN0LgotICogdXJpcGF0aCBbaW5dICAgICAtIFRoZSBwYXRoIG9mIHRoZSBIVFRQIHVyaS4KLSAqIGRpZ2VzdCAgW2luL291dF0gLSBUaGUgZGlnZXN0IGRhdGEgc3RydWN0IGJlaW5nIHVzZWQgYW5kIG1vZGlmaWVkLgotICogb3V0cHRyICBbaW4vb3V0XSAtIFRoZSBhZGRyZXNzIHdoZXJlIGEgcG9pbnRlciB0byBuZXdseSBhbGxvY2F0ZWQgbWVtb3J5Ci0gKiAgICAgICAgICAgICAgICAgICAgaG9sZGluZyB0aGUgcmVzdWx0IHdpbGwgYmUgc3RvcmVkIHVwb24gY29tcGxldGlvbi4KLSAqIG91dGxlbiAgW291dF0gICAgLSBUaGUgbGVuZ3RoIG9mIHRoZSBvdXRwdXQgbWVzc2FnZS4KLSAqCi0gKiBSZXR1cm5zIENVUkxFX09LIG9uIHN1Y2Nlc3MuCi0gKi8KLUNVUkxjb2RlIEN1cmxfc2FzbF9jcmVhdGVfZGlnZXN0X2h0dHBfbWVzc2FnZShzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp1c2VycCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwYXNzd2RwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnJlcXVlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqdXJpcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZGlnZXN0ZGF0YSAqZGlnZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipvdXRwdHIsIHNpemVfdCAqb3V0bGVuKQotewotICBzaXplX3QgdG9rZW5fbWF4OwotICBDcmVkSGFuZGxlIGNyZWRlbnRpYWxzOwotICBDdHh0SGFuZGxlIGNvbnRleHQ7Ci0gIGNoYXIgKnJlc3A7Ci0gIEJZVEUgKm91dHB1dF90b2tlbjsKLSAgUFNlY1BrZ0luZm8gU2VjdXJpdHlQYWNrYWdlOwotICBTRUNfV0lOTlRfQVVUSF9JREVOVElUWSBpZGVudGl0eTsKLSAgU0VDX1dJTk5UX0FVVEhfSURFTlRJVFkgKnBfaWRlbnRpdHk7Ci0gIFNlY0J1ZmZlciBjaGxnX2J1ZlszXTsKLSAgU2VjQnVmZmVyIHJlc3BfYnVmOwotICBTZWNCdWZmZXJEZXNjIGNobGdfZGVzYzsKLSAgU2VjQnVmZmVyRGVzYyByZXNwX2Rlc2M7Ci0gIFNFQ1VSSVRZX1NUQVRVUyBzdGF0dXM7Ci0gIHVuc2lnbmVkIGxvbmcgYXR0cnM7Ci0gIFRpbWVTdGFtcCBleHBpcnk7IC8qIEZvciBXaW5kb3dzIDl4IGNvbXBhdGliaWxpdHkgb2YgU1NQSSBjYWxscyAqLwotCi0gICh2b2lkKSBkYXRhOwotCi0gIC8qIFF1ZXJ5IHRoZSBzZWN1cml0eSBwYWNrYWdlIGZvciBEaWdlc3RTU1AgKi8KLSAgc3RhdHVzID0gc19wU2VjRm4tPlF1ZXJ5U2VjdXJpdHlQYWNrYWdlSW5mbygoVENIQVIgKikgVEVYVChTUF9OQU1FX0RJR0VTVCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlNlY3VyaXR5UGFja2FnZSk7Ci0gIGlmKHN0YXR1cyAhPSBTRUNfRV9PSykKLSAgICByZXR1cm4gQ1VSTEVfTk9UX0JVSUxUX0lOOwotCi0gIHRva2VuX21heCA9IFNlY3VyaXR5UGFja2FnZS0+Y2JNYXhUb2tlbjsKLQotICAvKiBSZWxlYXNlIHRoZSBwYWNrYWdlIGJ1ZmZlciBhcyBpdCBpcyBub3QgcmVxdWlyZWQgYW55bW9yZSAqLwotICBzX3BTZWNGbi0+RnJlZUNvbnRleHRCdWZmZXIoU2VjdXJpdHlQYWNrYWdlKTsKLQotICAvKiBBbGxvY2F0ZSB0aGUgb3V0cHV0IGJ1ZmZlciBhY2NvcmRpbmcgdG8gdGhlIG1heCB0b2tlbiBzaXplIGFzIGluZGljYXRlZAotICAgICBieSB0aGUgc2VjdXJpdHkgcGFja2FnZSAqLwotICBvdXRwdXRfdG9rZW4gPSBtYWxsb2ModG9rZW5fbWF4KTsKLSAgaWYoIW91dHB1dF90b2tlbikKLSAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKLQotICBpZih1c2VycCAmJiAqdXNlcnApIHsKLSAgICAvKiBQb3B1bGF0ZSBvdXIgaWRlbnRpdHkgc3RydWN0dXJlICovCi0gICAgaWYoQ3VybF9jcmVhdGVfc3NwaV9pZGVudGl0eSh1c2VycCwgcGFzc3dkcCwgJmlkZW50aXR5KSkKLSAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotCi0gICAgLyogUG9wdWxhdGUgb3VyIGlkZW50aXR5IGRvbWFpbiAqLwotICAgIGlmKEN1cmxfb3ZlcnJpZGVfc3NwaV9odHRwX3JlYWxtKChjb25zdCBjaGFyKilkaWdlc3QtPmlucHV0X3Rva2VuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpZGVudGl0eSkpCi0gICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKLQotICAgIC8qIEFsbG93IHByb3BlciBjbGVhbnVwIG9mIHRoZSBpZGVudGl0eSBzdHJ1Y3R1cmUgKi8KLSAgICBwX2lkZW50aXR5ID0gJmlkZW50aXR5OwotICB9Ci0gIGVsc2UKLSAgICAvKiBVc2UgdGhlIGN1cnJlbnQgV2luZG93cyB1c2VyICovCi0gICAgcF9pZGVudGl0eSA9IE5VTEw7Ci0KLSAgLyogQWNxdWlyZSBvdXIgY3JlZGVudGlhbHMgaGFuZGxlICovCi0gIHN0YXR1cyA9IHNfcFNlY0ZuLT5BY3F1aXJlQ3JlZGVudGlhbHNIYW5kbGUoTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVENIQVIgKikgVEVYVChTUF9OQU1FX0RJR0VTVCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VDUEtHX0NSRURfT1VUQk9VTkQsIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcF9pZGVudGl0eSwgTlVMTCwgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY3JlZGVudGlhbHMsICZleHBpcnkpOwotICBpZihzdGF0dXMgIT0gU0VDX0VfT0spIHsKLSAgICBmcmVlKG91dHB1dF90b2tlbik7Ci0KLSAgICByZXR1cm4gQ1VSTEVfTE9HSU5fREVOSUVEOwotICB9Ci0KLSAgLyogU2V0dXAgdGhlIGNoYWxsZW5nZSAiaW5wdXQiIHNlY3VyaXR5IGJ1ZmZlciBpZiBwcmVzZW50ICovCi0gIGNobGdfZGVzYy51bFZlcnNpb24gICAgPSBTRUNCVUZGRVJfVkVSU0lPTjsKLSAgY2hsZ19kZXNjLmNCdWZmZXJzICAgICA9IDM7Ci0gIGNobGdfZGVzYy5wQnVmZmVycyAgICAgPSBjaGxnX2J1ZjsKLSAgY2hsZ19idWZbMF0uQnVmZmVyVHlwZSA9IFNFQ0JVRkZFUl9UT0tFTjsKLSAgY2hsZ19idWZbMF0ucHZCdWZmZXIgICA9IGRpZ2VzdC0+aW5wdXRfdG9rZW47Ci0gIGNobGdfYnVmWzBdLmNiQnVmZmVyICAgPSBjdXJseF91enRvdWwoZGlnZXN0LT5pbnB1dF90b2tlbl9sZW4pOwotICBjaGxnX2J1ZlsxXS5CdWZmZXJUeXBlID0gU0VDQlVGRkVSX1BLR19QQVJBTVM7Ci0gIGNobGdfYnVmWzFdLnB2QnVmZmVyICAgPSAodm9pZCAqKXJlcXVlc3Q7Ci0gIGNobGdfYnVmWzFdLmNiQnVmZmVyICAgPSBjdXJseF91enRvdWwoc3RybGVuKChjb25zdCBjaGFyICopIHJlcXVlc3QpKTsKLSAgY2hsZ19idWZbMl0uQnVmZmVyVHlwZSA9IFNFQ0JVRkZFUl9QS0dfUEFSQU1TOwotICBjaGxnX2J1ZlsyXS5wdkJ1ZmZlciAgID0gTlVMTDsKLSAgY2hsZ19idWZbMl0uY2JCdWZmZXIgICA9IDA7Ci0KLSAgLyogU2V0dXAgdGhlIHJlc3BvbnNlICJvdXRwdXQiIHNlY3VyaXR5IGJ1ZmZlciAqLwotICByZXNwX2Rlc2MudWxWZXJzaW9uID0gU0VDQlVGRkVSX1ZFUlNJT047Ci0gIHJlc3BfZGVzYy5jQnVmZmVycyAgPSAxOwotICByZXNwX2Rlc2MucEJ1ZmZlcnMgID0gJnJlc3BfYnVmOwotICByZXNwX2J1Zi5CdWZmZXJUeXBlID0gU0VDQlVGRkVSX1RPS0VOOwotICByZXNwX2J1Zi5wdkJ1ZmZlciAgID0gb3V0cHV0X3Rva2VuOwotICByZXNwX2J1Zi5jYkJ1ZmZlciAgID0gY3VybHhfdXp0b3VsKHRva2VuX21heCk7Ci0KLSAgLyogR2VuZXJhdGUgb3VyIHJlcG9uc2UgbWVzc2FnZSAqLwotICBzdGF0dXMgPSBzX3BTZWNGbi0+SW5pdGlhbGl6ZVNlY3VyaXR5Q29udGV4dCgmY3JlZGVudGlhbHMsIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChUQ0hBUiAqKSB1cmlwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJU0NfUkVRX1VTRV9IVFRQX1NUWUxFLCAwLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY2hsZ19kZXNjLCAwLCAmY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlc3BfZGVzYywgJmF0dHJzLCAmZXhwaXJ5KTsKLQotICBpZihzdGF0dXMgPT0gU0VDX0lfQ09NUExFVEVfTkVFREVEIHx8Ci0gICAgIHN0YXR1cyA9PSBTRUNfSV9DT01QTEVURV9BTkRfQ09OVElOVUUpCi0gICAgc19wU2VjRm4tPkNvbXBsZXRlQXV0aFRva2VuKCZjcmVkZW50aWFscywgJnJlc3BfZGVzYyk7Ci0gIGVsc2UgaWYoc3RhdHVzICE9IFNFQ19FX09LICYmIHN0YXR1cyAhPSBTRUNfSV9DT05USU5VRV9ORUVERUQpIHsKLSAgICBzX3BTZWNGbi0+RnJlZUNyZWRlbnRpYWxzSGFuZGxlKCZjcmVkZW50aWFscyk7Ci0KLSAgICBmcmVlKG91dHB1dF90b2tlbik7Ci0KLSAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKLSAgfQotCi0gIHJlc3AgPSBtYWxsb2MocmVzcF9idWYuY2JCdWZmZXIgKyAxKTsKLSAgaWYoIXJlc3ApIHsKLSAgICBzX3BTZWNGbi0+RGVsZXRlU2VjdXJpdHlDb250ZXh0KCZjb250ZXh0KTsKLSAgICBzX3BTZWNGbi0+RnJlZUNyZWRlbnRpYWxzSGFuZGxlKCZjcmVkZW50aWFscyk7Ci0KLSAgICBmcmVlKG91dHB1dF90b2tlbik7Ci0KLSAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKLSAgfQotCi0gIC8qIENvcHkgdGhlIGdlbmVyYXRlZCByZXBvbnNlICovCi0gIG1lbWNweShyZXNwLCByZXNwX2J1Zi5wdkJ1ZmZlciwgcmVzcF9idWYuY2JCdWZmZXIpOwotICByZXNwW3Jlc3BfYnVmLmNiQnVmZmVyXSA9IDB4MDA7Ci0KLSAgLyogUmV0dXJuIHRoZSByZXNwb25zZSAqLwotICAqb3V0cHRyID0gcmVzcDsKLSAgKm91dGxlbiA9IHJlc3BfYnVmLmNiQnVmZmVyOwotCi0gIC8qIEZyZWUgb3VyIGhhbmRsZXMgKi8KLSAgc19wU2VjRm4tPkRlbGV0ZVNlY3VyaXR5Q29udGV4dCgmY29udGV4dCk7Ci0gIHNfcFNlY0ZuLT5GcmVlQ3JlZGVudGlhbHNIYW5kbGUoJmNyZWRlbnRpYWxzKTsKLQotICAvKiBGcmVlIHRoZSBpZGVudGl0eSBzdHJ1Y3R1cmUgKi8KLSAgQ3VybF9zc3BpX2ZyZWVfaWRlbnRpdHkocF9pZGVudGl0eSk7Ci0KLSAgLyogRnJlZSB0aGUgcmVzcG9uc2UgYnVmZmVyICovCi0gIGZyZWUob3V0cHV0X3Rva2VuKTsKLQotICByZXR1cm4gQ1VSTEVfT0s7Ci19Ci0KLS8qCi0gKiBDdXJsX3Nhc2xfZGlnZXN0X2NsZWFudXAoKQotICoKLSAqIFRoaXMgaXMgdXNlZCB0byBjbGVhbiB1cCB0aGUgZGlnZXN0IHNwZWNpZmljIGRhdGEuCi0gKgotICogUGFyYW1ldGVyczoKLSAqCi0gKiBkaWdlc3QgICAgW2luL291dF0gLSBUaGUgZGlnZXN0IGRhdGEgc3RydWN0IGJlaW5nIGNsZWFuZWQgdXAuCi0gKgotICovCi12b2lkIEN1cmxfc2FzbF9kaWdlc3RfY2xlYW51cChzdHJ1Y3QgZGlnZXN0ZGF0YSAqZGlnZXN0KQotewotICAvKiBGcmVlIHRoZSBpbnB1dCB0b2tlbiAqLwotICBDdXJsX3NhZmVmcmVlKGRpZ2VzdC0+aW5wdXRfdG9rZW4pOwotCi0gIC8qIFJlc2V0IGFueSB2YXJpYWJsZXMgKi8KLSAgZGlnZXN0LT5pbnB1dF90b2tlbl9sZW4gPSAwOwotfQotI2VuZGlmIC8qICFDVVJMX0RJU0FCTEVfQ1JZUFRPX0FVVEggKi8KLQotI2lmIGRlZmluZWQgVVNFX05UTE0KLS8qCi0qIEN1cmxfc2FzbF9jcmVhdGVfbnRsbV90eXBlMV9tZXNzYWdlKCkKLSoKLSogVGhpcyBpcyB1c2VkIHRvIGdlbmVyYXRlIGFuIGFscmVhZHkgZW5jb2RlZCBOVExNIHR5cGUtMSBtZXNzYWdlIHJlYWR5IGZvcgotKiBzZW5kaW5nIHRvIHRoZSByZWNpcGllbnQuCi0qCi0qIFBhcmFtZXRlcnM6Ci0qCi0qIHVzZXJwICAgW2luXSAgICAgLSBUaGUgdXNlciBuYW1lIGluIHRoZSBmb3JtYXQgVXNlciBvciBEb21haW5cVXNlci4KLSogcGFzc2R3cCBbaW5dICAgICAtIFRoZSB1c2VyJ3MgcGFzc3dvcmQuCi0qIG50bG0gICAgW2luL291dF0gLSBUaGUgbnRsbSBkYXRhIHN0cnVjdCBiZWluZyB1c2VkIGFuZCBtb2RpZmllZC4KLSogb3V0cHRyICBbaW4vb3V0XSAtIFRoZSBhZGRyZXNzIHdoZXJlIGEgcG9pbnRlciB0byBuZXdseSBhbGxvY2F0ZWQgbWVtb3J5Ci0qICAgICAgICAgICAgICAgICAgICBob2xkaW5nIHRoZSByZXN1bHQgd2lsbCBiZSBzdG9yZWQgdXBvbiBjb21wbGV0aW9uLgotKiBvdXRsZW4gIFtvdXRdICAgIC0gVGhlIGxlbmd0aCBvZiB0aGUgb3V0cHV0IG1lc3NhZ2UuCi0qCi0qIFJldHVybnMgQ1VSTEVfT0sgb24gc3VjY2Vzcy4KLSovCi1DVVJMY29kZSBDdXJsX3Nhc2xfY3JlYXRlX250bG1fdHlwZTFfbWVzc2FnZShjb25zdCBjaGFyICp1c2VycCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhc3N3ZHAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbnRsbWRhdGEgKm50bG0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqb3V0cHRyLCBzaXplX3QgKm91dGxlbikKLXsKLSAgUFNlY1BrZ0luZm8gU2VjdXJpdHlQYWNrYWdlOwotICBTZWNCdWZmZXIgdHlwZV8xX2J1ZjsKLSAgU2VjQnVmZmVyRGVzYyB0eXBlXzFfZGVzYzsKLSAgU0VDVVJJVFlfU1RBVFVTIHN0YXR1czsKLSAgdW5zaWduZWQgbG9uZyBhdHRyczsKLSAgVGltZVN0YW1wIGV4cGlyeTsgLyogRm9yIFdpbmRvd3MgOXggY29tcGF0aWJpbGl0eSBvZiBTU1BJIGNhbGxzICovCi0KLSAgLyogQ2xlYW4gdXAgYW55IGZvcm1lciBsZWZ0b3ZlcnMgYW5kIGluaXRpYWxpc2UgdG8gZGVmYXVsdHMgKi8KLSAgQ3VybF9zYXNsX250bG1fY2xlYW51cChudGxtKTsKLQotICAvKiBRdWVyeSB0aGUgc2VjdXJpdHkgcGFja2FnZSBmb3IgTlRMTSAqLwotICBzdGF0dXMgPSBzX3BTZWNGbi0+UXVlcnlTZWN1cml0eVBhY2thZ2VJbmZvKChUQ0hBUiAqKSBURVhUKFNQX05BTUVfTlRMTSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlNlY3VyaXR5UGFja2FnZSk7Ci0gIGlmKHN0YXR1cyAhPSBTRUNfRV9PSykKLSAgICByZXR1cm4gQ1VSTEVfTk9UX0JVSUxUX0lOOwotCi0gIG50bG0tPnRva2VuX21heCA9IFNlY3VyaXR5UGFja2FnZS0+Y2JNYXhUb2tlbjsKLQotICAvKiBSZWxlYXNlIHRoZSBwYWNrYWdlIGJ1ZmZlciBhcyBpdCBpcyBub3QgcmVxdWlyZWQgYW55bW9yZSAqLwotICBzX3BTZWNGbi0+RnJlZUNvbnRleHRCdWZmZXIoU2VjdXJpdHlQYWNrYWdlKTsKLQotICAvKiBBbGxvY2F0ZSBvdXIgb3V0cHV0IGJ1ZmZlciAqLwotICBudGxtLT5vdXRwdXRfdG9rZW4gPSBtYWxsb2MobnRsbS0+dG9rZW5fbWF4KTsKLSAgaWYoIW50bG0tPm91dHB1dF90b2tlbikKLSAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKLQotICBpZih1c2VycCAmJiAqdXNlcnApIHsKLSAgICBDVVJMY29kZSByZXN1bHQ7Ci0KLSAgICAvKiBQb3B1bGF0ZSBvdXIgaWRlbnRpdHkgc3RydWN0dXJlICovCi0gICAgcmVzdWx0ID0gQ3VybF9jcmVhdGVfc3NwaV9pZGVudGl0eSh1c2VycCwgcGFzc3dkcCwgJm50bG0tPmlkZW50aXR5KTsKLSAgICBpZihyZXN1bHQpCi0gICAgICByZXR1cm4gcmVzdWx0OwotCi0gICAgLyogQWxsb3cgcHJvcGVyIGNsZWFudXAgb2YgdGhlIGlkZW50aXR5IHN0cnVjdHVyZSAqLwotICAgIG50bG0tPnBfaWRlbnRpdHkgPSAmbnRsbS0+aWRlbnRpdHk7Ci0gIH0KLSAgZWxzZQotICAgIC8qIFVzZSB0aGUgY3VycmVudCBXaW5kb3dzIHVzZXIgKi8KLSAgICBudGxtLT5wX2lkZW50aXR5ID0gTlVMTDsKLQotICAvKiBBbGxvY2F0ZSBvdXIgY3JlZGVudGlhbHMgaGFuZGxlICovCi0gIG50bG0tPmNyZWRlbnRpYWxzID0gbWFsbG9jKHNpemVvZihDcmVkSGFuZGxlKSk7Ci0gIGlmKCFudGxtLT5jcmVkZW50aWFscykKLSAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKLQotICBtZW1zZXQobnRsbS0+Y3JlZGVudGlhbHMsIDAsIHNpemVvZihDcmVkSGFuZGxlKSk7Ci0KLSAgLyogQWNxdWlyZSBvdXIgY3JlZGVudGlhbHMgaGFuZGxlICovCi0gIHN0YXR1cyA9IHNfcFNlY0ZuLT5BY3F1aXJlQ3JlZGVudGlhbHNIYW5kbGUoTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVENIQVIgKikgVEVYVChTUF9OQU1FX05UTE0pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNFQ1BLR19DUkVEX09VVEJPVU5ELCBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG50bG0tPnBfaWRlbnRpdHksIE5VTEwsIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnRsbS0+Y3JlZGVudGlhbHMsICZleHBpcnkpOwotICBpZihzdGF0dXMgIT0gU0VDX0VfT0spCi0gICAgcmV0dXJuIENVUkxFX0xPR0lOX0RFTklFRDsKLQotICAvKiBBbGxvY2F0ZSBvdXIgbmV3IGNvbnRleHQgaGFuZGxlICovCi0gIG50bG0tPmNvbnRleHQgPSBtYWxsb2Moc2l6ZW9mKEN0eHRIYW5kbGUpKTsKLSAgaWYoIW50bG0tPmNvbnRleHQpCi0gICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7Ci0KLSAgbWVtc2V0KG50bG0tPmNvbnRleHQsIDAsIHNpemVvZihDdHh0SGFuZGxlKSk7Ci0KLSAgLyogU2V0dXAgdGhlIHR5cGUtMSAib3V0cHV0IiBzZWN1cml0eSBidWZmZXIgKi8KLSAgdHlwZV8xX2Rlc2MudWxWZXJzaW9uID0gU0VDQlVGRkVSX1ZFUlNJT047Ci0gIHR5cGVfMV9kZXNjLmNCdWZmZXJzICA9IDE7Ci0gIHR5cGVfMV9kZXNjLnBCdWZmZXJzICA9ICZ0eXBlXzFfYnVmOwotICB0eXBlXzFfYnVmLkJ1ZmZlclR5cGUgPSBTRUNCVUZGRVJfVE9LRU47Ci0gIHR5cGVfMV9idWYucHZCdWZmZXIgICA9IG50bG0tPm91dHB1dF90b2tlbjsKLSAgdHlwZV8xX2J1Zi5jYkJ1ZmZlciAgID0gY3VybHhfdXp0b3VsKG50bG0tPnRva2VuX21heCk7Ci0KLSAgLyogR2VuZXJhdGUgb3VyIHR5cGUtMSBtZXNzYWdlICovCi0gIHN0YXR1cyA9IHNfcFNlY0ZuLT5Jbml0aWFsaXplU2VjdXJpdHlDb250ZXh0KG50bG0tPmNyZWRlbnRpYWxzLCBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVENIQVIgKikgVEVYVCgiIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIFNFQ1VSSVRZX05FVFdPUktfRFJFUCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnRsbS0+Y29udGV4dCwgJnR5cGVfMV9kZXNjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYXR0cnMsICZleHBpcnkpOwotICBpZihzdGF0dXMgPT0gU0VDX0lfQ09NUExFVEVfTkVFREVEIHx8Ci0gICAgc3RhdHVzID09IFNFQ19JX0NPTVBMRVRFX0FORF9DT05USU5VRSkKLSAgICBzX3BTZWNGbi0+Q29tcGxldGVBdXRoVG9rZW4obnRsbS0+Y29udGV4dCwgJnR5cGVfMV9kZXNjKTsKLSAgZWxzZSBpZihzdGF0dXMgIT0gU0VDX0VfT0sgJiYgc3RhdHVzICE9IFNFQ19JX0NPTlRJTlVFX05FRURFRCkKLSAgICByZXR1cm4gQ1VSTEVfUkVDVl9FUlJPUjsKLQotICAvKiBCYXNlNjQgZW5jb2RlIHRoZSByZXNwb25zZSAqLwotICByZXR1cm4gQ3VybF9iYXNlNjRfZW5jb2RlKE5VTEwsIChjaGFyICopIG50bG0tPm91dHB1dF90b2tlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlXzFfYnVmLmNiQnVmZmVyLCBvdXRwdHIsIG91dGxlbik7Ci19Ci0KLS8qCi0qIEN1cmxfc2FzbF9kZWNvZGVfbnRsbV90eXBlMl9tZXNzYWdlKCkKLSoKLSogVGhpcyBpcyB1c2VkIHRvIGRlY29kZSBhbiBhbHJlYWR5IGVuY29kZWQgTlRMTSB0eXBlLTIgbWVzc2FnZS4KLSoKLSogUGFyYW1ldGVyczoKLSoKLSogZGF0YSAgICAgW2luXSAgICAgLSBUaGUgc2Vzc2lvbiBoYW5kbGUuCi0qIHR5cGUybXNnIFtpbl0gICAgIC0gVGhlIGJhc2U2NCBlbmNvZGVkIHR5cGUtMiBtZXNzYWdlLgotKiBudGxtICAgICBbaW4vb3V0XSAtIFRoZSBudGxtIGRhdGEgc3RydWN0IGJlaW5nIHVzZWQgYW5kIG1vZGlmaWVkLgotKgotKiBSZXR1cm5zIENVUkxFX09LIG9uIHN1Y2Nlc3MuCi0qLwotQ1VSTGNvZGUgQ3VybF9zYXNsX2RlY29kZV9udGxtX3R5cGUyX21lc3NhZ2Uoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0eXBlMm1zZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBudGxtZGF0YSAqbnRsbSkKLXsKLSAgQ1VSTGNvZGUgcmVzdWx0ID0gQ1VSTEVfT0s7Ci0gIHVuc2lnbmVkIGNoYXIgKnR5cGUyID0gTlVMTDsKLSAgc2l6ZV90IHR5cGUyX2xlbiA9IDA7Ci0KLSNpZiBkZWZpbmVkKENVUkxfRElTQUJMRV9WRVJCT1NFX1NUUklOR1MpCi0gICh2b2lkKSBkYXRhOwotI2VuZGlmCi0KLSAgLyogRGVjb2RlIHRoZSBiYXNlLTY0IGVuY29kZWQgdHlwZS0yIG1lc3NhZ2UgKi8KLSAgaWYoc3RybGVuKHR5cGUybXNnKSAmJiAqdHlwZTJtc2cgIT0gJz0nKSB7Ci0gICAgcmVzdWx0ID0gQ3VybF9iYXNlNjRfZGVjb2RlKHR5cGUybXNnLCAmdHlwZTIsICZ0eXBlMl9sZW4pOwotICAgIGlmKHJlc3VsdCkKLSAgICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KLQotICAvKiBFbnN1cmUgd2UgaGF2ZSBhIHZhbGlkIHR5cGUtMiBtZXNzYWdlICovCi0gIGlmKCF0eXBlMikgewotICAgIGluZm9mKGRhdGEsICJOVExNIGhhbmRzaGFrZSBmYWlsdXJlIChlbXB0eSB0eXBlLTIgbWVzc2FnZSlcbiIpOwotCi0gICAgcmV0dXJuIENVUkxFX0JBRF9DT05URU5UX0VOQ09ESU5HOwotICB9Ci0KLSAgLyogU2ltcGx5IHN0b3JlIHRoZSBjaGFsbGVuZ2UgZm9yIHVzZSBsYXRlciAqLwotICBudGxtLT5pbnB1dF90b2tlbiA9IHR5cGUyOwotICBudGxtLT5pbnB1dF90b2tlbl9sZW4gPSB0eXBlMl9sZW47Ci0KLSAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyoKLSogQ3VybF9zYXNsX2NyZWF0ZV9udGxtX3R5cGUzX21lc3NhZ2UoKQotKgotKiBUaGlzIGlzIHVzZWQgdG8gZ2VuZXJhdGUgYW4gYWxyZWFkeSBlbmNvZGVkIE5UTE0gdHlwZS0zIG1lc3NhZ2UgcmVhZHkgZm9yCi0qIHNlbmRpbmcgdG8gdGhlIHJlY2lwaWVudC4KLSoKLSogUGFyYW1ldGVyczoKLSoKLSogZGF0YSAgICBbaW5dICAgICAtIFRoZSBzZXNzaW9uIGhhbmRsZS4KLSogdXNlcnAgICBbaW5dICAgICAtIFRoZSB1c2VyIG5hbWUgaW4gdGhlIGZvcm1hdCBVc2VyIG9yIERvbWFpblxVc2VyLgotKiBwYXNzZHdwIFtpbl0gICAgIC0gVGhlIHVzZXIncyBwYXNzd29yZC4KLSogbnRsbSAgICBbaW4vb3V0XSAtIFRoZSBudGxtIGRhdGEgc3RydWN0IGJlaW5nIHVzZWQgYW5kIG1vZGlmaWVkLgotKiBvdXRwdHIgIFtpbi9vdXRdIC0gVGhlIGFkZHJlc3Mgd2hlcmUgYSBwb2ludGVyIHRvIG5ld2x5IGFsbG9jYXRlZCBtZW1vcnkKLSogICAgICAgICAgICAgICAgICAgIGhvbGRpbmcgdGhlIHJlc3VsdCB3aWxsIGJlIHN0b3JlZCB1cG9uIGNvbXBsZXRpb24uCi0qIG91dGxlbiAgW291dF0gICAgLSBUaGUgbGVuZ3RoIG9mIHRoZSBvdXRwdXQgbWVzc2FnZS4KLSoKLSogUmV0dXJucyBDVVJMRV9PSyBvbiBzdWNjZXNzLgotKi8KLUNVUkxjb2RlIEN1cmxfc2FzbF9jcmVhdGVfbnRsbV90eXBlM19tZXNzYWdlKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdXNlcnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwYXNzd2RwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG50bG1kYXRhICpudGxtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKm91dHB0ciwgc2l6ZV90ICpvdXRsZW4pCi17Ci0gIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOwotICBTZWNCdWZmZXIgdHlwZV8yX2J1ZjsKLSAgU2VjQnVmZmVyIHR5cGVfM19idWY7Ci0gIFNlY0J1ZmZlckRlc2MgdHlwZV8yX2Rlc2M7Ci0gIFNlY0J1ZmZlckRlc2MgdHlwZV8zX2Rlc2M7Ci0gIFNFQ1VSSVRZX1NUQVRVUyBzdGF0dXM7Ci0gIHVuc2lnbmVkIGxvbmcgYXR0cnM7Ci0gIFRpbWVTdGFtcCBleHBpcnk7IC8qIEZvciBXaW5kb3dzIDl4IGNvbXBhdGliaWxpdHkgb2YgU1NQSSBjYWxscyAqLwotCi0gICh2b2lkKSBwYXNzd2RwOwotICAodm9pZCkgdXNlcnA7Ci0KLSAgLyogU2V0dXAgdGhlIHR5cGUtMiAiaW5wdXQiIHNlY3VyaXR5IGJ1ZmZlciAqLwotICB0eXBlXzJfZGVzYy51bFZlcnNpb24gPSBTRUNCVUZGRVJfVkVSU0lPTjsKLSAgdHlwZV8yX2Rlc2MuY0J1ZmZlcnMgID0gMTsKLSAgdHlwZV8yX2Rlc2MucEJ1ZmZlcnMgID0gJnR5cGVfMl9idWY7Ci0gIHR5cGVfMl9idWYuQnVmZmVyVHlwZSA9IFNFQ0JVRkZFUl9UT0tFTjsKLSAgdHlwZV8yX2J1Zi5wdkJ1ZmZlciAgID0gbnRsbS0+aW5wdXRfdG9rZW47Ci0gIHR5cGVfMl9idWYuY2JCdWZmZXIgICA9IGN1cmx4X3V6dG91bChudGxtLT5pbnB1dF90b2tlbl9sZW4pOwotCi0gIC8qIFNldHVwIHRoZSB0eXBlLTMgIm91dHB1dCIgc2VjdXJpdHkgYnVmZmVyICovCi0gIHR5cGVfM19kZXNjLnVsVmVyc2lvbiA9IFNFQ0JVRkZFUl9WRVJTSU9OOwotICB0eXBlXzNfZGVzYy5jQnVmZmVycyAgPSAxOwotICB0eXBlXzNfZGVzYy5wQnVmZmVycyAgPSAmdHlwZV8zX2J1ZjsKLSAgdHlwZV8zX2J1Zi5CdWZmZXJUeXBlID0gU0VDQlVGRkVSX1RPS0VOOwotICB0eXBlXzNfYnVmLnB2QnVmZmVyICAgPSBudGxtLT5vdXRwdXRfdG9rZW47Ci0gIHR5cGVfM19idWYuY2JCdWZmZXIgICA9IGN1cmx4X3V6dG91bChudGxtLT50b2tlbl9tYXgpOwotCi0gIC8qIEdlbmVyYXRlIG91ciB0eXBlLTMgbWVzc2FnZSAqLwotICBzdGF0dXMgPSBzX3BTZWNGbi0+SW5pdGlhbGl6ZVNlY3VyaXR5Q29udGV4dChudGxtLT5jcmVkZW50aWFscywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnRsbS0+Y29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFRDSEFSICopIFRFWFQoIiIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCBTRUNVUklUWV9ORVRXT1JLX0RSRVAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0eXBlXzJfZGVzYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgbnRsbS0+Y29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnR5cGVfM19kZXNjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYXR0cnMsICZleHBpcnkpOwotICBpZihzdGF0dXMgIT0gU0VDX0VfT0spIHsKLSAgICBpbmZvZihkYXRhLCAiTlRMTSBoYW5kc2hha2UgZmFpbHVyZSAodHlwZS0zIG1lc3NhZ2UpOiBTdGF0dXM9JXhcbiIsCi0gICAgICAgICAgc3RhdHVzKTsKLQotICAgIHJldHVybiBDVVJMRV9SRUNWX0VSUk9SOwotICB9Ci0KLSAgLyogQmFzZTY0IGVuY29kZSB0aGUgcmVzcG9uc2UgKi8KLSAgcmVzdWx0ID0gQ3VybF9iYXNlNjRfZW5jb2RlKGRhdGEsIChjaGFyICopIG50bG0tPm91dHB1dF90b2tlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVfM19idWYuY2JCdWZmZXIsIG91dHB0ciwgb3V0bGVuKTsKLQotICBDdXJsX3Nhc2xfbnRsbV9jbGVhbnVwKG50bG0pOwotCi0gIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qCi0gKiBDdXJsX3Nhc2xfbnRsbV9jbGVhbnVwKCkKLSAqCi0gKiBUaGlzIGlzIHVzZWQgdG8gY2xlYW4gdXAgdGhlIG50bG0gc3BlY2lmaWMgZGF0YS4KLSAqCi0gKiBQYXJhbWV0ZXJzOgotICoKLSAqIG50bG0gICAgW2luL291dF0gLSBUaGUgbnRsbSBkYXRhIHN0cnVjdCBiZWluZyBjbGVhbmVkIHVwLgotICoKLSAqLwotdm9pZCBDdXJsX3Nhc2xfbnRsbV9jbGVhbnVwKHN0cnVjdCBudGxtZGF0YSAqbnRsbSkKLXsKLSAgLyogRnJlZSBvdXIgc2VjdXJpdHkgY29udGV4dCAqLwotICBpZihudGxtLT5jb250ZXh0KSB7Ci0gICAgc19wU2VjRm4tPkRlbGV0ZVNlY3VyaXR5Q29udGV4dChudGxtLT5jb250ZXh0KTsKLSAgICBmcmVlKG50bG0tPmNvbnRleHQpOwotICAgIG50bG0tPmNvbnRleHQgPSBOVUxMOwotICB9Ci0KLSAgLyogRnJlZSBvdXIgY3JlZGVudGlhbHMgaGFuZGxlICovCi0gIGlmKG50bG0tPmNyZWRlbnRpYWxzKSB7Ci0gICAgc19wU2VjRm4tPkZyZWVDcmVkZW50aWFsc0hhbmRsZShudGxtLT5jcmVkZW50aWFscyk7Ci0gICAgZnJlZShudGxtLT5jcmVkZW50aWFscyk7Ci0gICAgbnRsbS0+Y3JlZGVudGlhbHMgPSBOVUxMOwotICB9Ci0KLSAgLyogRnJlZSBvdXIgaWRlbnRpdHkgKi8KLSAgQ3VybF9zc3BpX2ZyZWVfaWRlbnRpdHkobnRsbS0+cF9pZGVudGl0eSk7Ci0gIG50bG0tPnBfaWRlbnRpdHkgPSBOVUxMOwotCi0gIC8qIEZyZWUgdGhlIGlucHV0IGFuZCBvdXRwdXQgdG9rZW5zICovCi0gIEN1cmxfc2FmZWZyZWUobnRsbS0+aW5wdXRfdG9rZW4pOwotICBDdXJsX3NhZmVmcmVlKG50bG0tPm91dHB1dF90b2tlbik7Ci0KLSAgLyogUmVzZXQgYW55IHZhcmlhYmxlcyAqLwotICBudGxtLT50b2tlbl9tYXggPSAwOwotfQotI2VuZGlmIC8qIFVTRV9OVExNICovCi0KLSNpZiBkZWZpbmVkKFVTRV9LRVJCRVJPUzUpCi0vKgotICogQ3VybF9zYXNsX2NyZWF0ZV9nc3NhcGlfdXNlcl9tZXNzYWdlKCkKLSAqCi0gKiBUaGlzIGlzIHVzZWQgdG8gZ2VuZXJhdGUgYW4gYWxyZWFkeSBlbmNvZGVkIEdTU0FQSSAoS2VyYmVyb3MgVjUpIHVzZXIgdG9rZW4KLSAqIG1lc3NhZ2UgcmVhZHkgZm9yIHNlbmRpbmcgdG8gdGhlIHJlY2lwaWVudC4KLSAqCi0gKiBQYXJhbWV0ZXJzOgotICoKLSAqIGRhdGEgICAgICAgIFtpbl0gICAgIC0gVGhlIHNlc3Npb24gaGFuZGxlLgotICogdXNlcnAgICAgICAgW2luXSAgICAgLSBUaGUgdXNlciBuYW1lIGluIHRoZSBmb3JtYXQgVXNlciBvciBEb21haW5cVXNlci4KLSAqIHBhc3Nkd3AgICAgIFtpbl0gICAgIC0gVGhlIHVzZXIncyBwYXNzd29yZC4KLSAqIHNlcnZpY2UgICAgIFtpbl0gICAgIC0gVGhlIHNlcnZpY2UgdHlwZSBzdWNoIGFzIHd3dywgc210cCwgcG9wIG9yIGltYXAuCi0gKiBtdXR1YWxfYXV0aCBbaW5dICAgICAtIEZsYWcgc3BlY2lmaW5nIHdoZXRoZXIgb3Igbm90IG11dHVhbCBhdXRoZW50aWNhdGlvbgotICogICAgICAgICAgICAgICAgICAgICAgICBpcyBlbmFibGVkLgotICogY2hsZzY0ICAgICAgW2luXSAgICAgLSBUaGUgb3B0aW9uYWwgYmFzZTY0IGVuY29kZWQgY2hhbGxlbmdlIG1lc3NhZ2UuCi0gKiBrcmI1ICAgICAgICBbaW4vb3V0XSAtIFRoZSBnc3NhcGkgZGF0YSBzdHJ1Y3QgYmVpbmcgdXNlZCBhbmQgbW9kaWZpZWQuCi0gKiBvdXRwdHIgICAgICBbaW4vb3V0XSAtIFRoZSBhZGRyZXNzIHdoZXJlIGEgcG9pbnRlciB0byBuZXdseSBhbGxvY2F0ZWQgbWVtb3J5Ci0gKiAgICAgICAgICAgICAgICAgICAgICAgIGhvbGRpbmcgdGhlIHJlc3VsdCB3aWxsIGJlIHN0b3JlZCB1cG9uIGNvbXBsZXRpb24uCi0gKiBvdXRsZW4gICAgICBbb3V0XSAgICAtIFRoZSBsZW5ndGggb2YgdGhlIG91dHB1dCBtZXNzYWdlLgotICoKLSAqIFJldHVybnMgQ1VSTEVfT0sgb24gc3VjY2Vzcy4KLSAqLwotQ1VSTGNvZGUgQ3VybF9zYXNsX2NyZWF0ZV9nc3NhcGlfdXNlcl9tZXNzYWdlKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnVzZXJwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhc3N3ZHAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc2VydmljZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBib29sIG11dHVhbF9hdXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNobGc2NCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qga2VyYmVyb3M1ZGF0YSAqa3JiNSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqb3V0cHRyLCBzaXplX3QgKm91dGxlbikKLXsKLSAgQ1VSTGNvZGUgcmVzdWx0ID0gQ1VSTEVfT0s7Ci0gIHNpemVfdCBjaGxnbGVuID0gMDsKLSAgdW5zaWduZWQgY2hhciAqY2hsZyA9IE5VTEw7Ci0gIEN0eHRIYW5kbGUgY29udGV4dDsKLSAgUFNlY1BrZ0luZm8gU2VjdXJpdHlQYWNrYWdlOwotICBTZWNCdWZmZXIgY2hsZ19idWY7Ci0gIFNlY0J1ZmZlciByZXNwX2J1ZjsKLSAgU2VjQnVmZmVyRGVzYyBjaGxnX2Rlc2M7Ci0gIFNlY0J1ZmZlckRlc2MgcmVzcF9kZXNjOwotICBTRUNVUklUWV9TVEFUVVMgc3RhdHVzOwotICB1bnNpZ25lZCBsb25nIGF0dHJzOwotICBUaW1lU3RhbXAgZXhwaXJ5OyAvKiBGb3IgV2luZG93cyA5eCBjb21wYXRpYmlsaXR5IG9mIFNTUEkgY2FsbHMgKi8KLQotICBpZigha3JiNS0+Y3JlZGVudGlhbHMpIHsKLSAgICAvKiBRdWVyeSB0aGUgc2VjdXJpdHkgcGFja2FnZSBmb3IgS2VyYmVyb3MgKi8KLSAgICBzdGF0dXMgPSBzX3BTZWNGbi0+UXVlcnlTZWN1cml0eVBhY2thZ2VJbmZvKChUQ0hBUiAqKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEVYVChTUF9OQU1FX0tFUkJFUk9TKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZTZWN1cml0eVBhY2thZ2UpOwotICAgIGlmKHN0YXR1cyAhPSBTRUNfRV9PSykgewotICAgICAgcmV0dXJuIENVUkxFX05PVF9CVUlMVF9JTjsKLSAgICB9Ci0KLSAgICBrcmI1LT50b2tlbl9tYXggPSBTZWN1cml0eVBhY2thZ2UtPmNiTWF4VG9rZW47Ci0KLSAgICAvKiBSZWxlYXNlIHRoZSBwYWNrYWdlIGJ1ZmZlciBhcyBpdCBpcyBub3QgcmVxdWlyZWQgYW55bW9yZSAqLwotICAgIHNfcFNlY0ZuLT5GcmVlQ29udGV4dEJ1ZmZlcihTZWN1cml0eVBhY2thZ2UpOwotCi0gICAgLyogQWxsb2NhdGUgb3VyIHJlc3BvbnNlIGJ1ZmZlciAqLwotICAgIGtyYjUtPm91dHB1dF90b2tlbiA9IG1hbGxvYyhrcmI1LT50b2tlbl9tYXgpOwotICAgIGlmKCFrcmI1LT5vdXRwdXRfdG9rZW4pCi0gICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKLQotICAgIC8qIEdlbmVyYXRlIG91ciBTUE4gKi8KLSAgICBrcmI1LT5zcG4gPSBDdXJsX3Nhc2xfYnVpbGRfc3BuKHNlcnZpY2UsIGRhdGEtPmVhc3lfY29ubi0+aG9zdC5uYW1lKTsKLSAgICBpZigha3JiNS0+c3BuKQotICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7Ci0KLSAgICBpZih1c2VycCAmJiAqdXNlcnApIHsKLSAgICAgIC8qIFBvcHVsYXRlIG91ciBpZGVudGl0eSBzdHJ1Y3R1cmUgKi8KLSAgICAgIHJlc3VsdCA9IEN1cmxfY3JlYXRlX3NzcGlfaWRlbnRpdHkodXNlcnAsIHBhc3N3ZHAsICZrcmI1LT5pZGVudGl0eSk7Ci0gICAgICBpZihyZXN1bHQpCi0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0KLSAgICAgIC8qIEFsbG93IHByb3BlciBjbGVhbnVwIG9mIHRoZSBpZGVudGl0eSBzdHJ1Y3R1cmUgKi8KLSAgICAgIGtyYjUtPnBfaWRlbnRpdHkgPSAma3JiNS0+aWRlbnRpdHk7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgIC8qIFVzZSB0aGUgY3VycmVudCBXaW5kb3dzIHVzZXIgKi8KLSAgICAgIGtyYjUtPnBfaWRlbnRpdHkgPSBOVUxMOwotCi0gICAgLyogQWxsb2NhdGUgb3VyIGNyZWRlbnRpYWxzIGhhbmRsZSAqLwotICAgIGtyYjUtPmNyZWRlbnRpYWxzID0gbWFsbG9jKHNpemVvZihDcmVkSGFuZGxlKSk7Ci0gICAgaWYoIWtyYjUtPmNyZWRlbnRpYWxzKQotICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7Ci0KLSAgICBtZW1zZXQoa3JiNS0+Y3JlZGVudGlhbHMsIDAsIHNpemVvZihDcmVkSGFuZGxlKSk7Ci0KLSAgICAvKiBBY3F1aXJlIG91ciBjcmVkZW50aWFscyBoYW5kbGUgKi8KLSAgICBzdGF0dXMgPSBzX3BTZWNGbi0+QWNxdWlyZUNyZWRlbnRpYWxzSGFuZGxlKE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVENIQVIgKikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRFWFQoU1BfTkFNRV9LRVJCRVJPUyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRUNQS0dfQ1JFRF9PVVRCT1VORCwgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtyYjUtPnBfaWRlbnRpdHksIE5VTEwsIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrcmI1LT5jcmVkZW50aWFscywgJmV4cGlyeSk7Ci0gICAgaWYoc3RhdHVzICE9IFNFQ19FX09LKQotICAgICAgcmV0dXJuIENVUkxFX0xPR0lOX0RFTklFRDsKLQotICAgIC8qIEFsbG9jYXRlIG91ciBuZXcgY29udGV4dCBoYW5kbGUgKi8KLSAgICBrcmI1LT5jb250ZXh0ID0gbWFsbG9jKHNpemVvZihDdHh0SGFuZGxlKSk7Ci0gICAgaWYoIWtyYjUtPmNvbnRleHQpCi0gICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKLQotICAgIG1lbXNldChrcmI1LT5jb250ZXh0LCAwLCBzaXplb2YoQ3R4dEhhbmRsZSkpOwotICB9Ci0gIGVsc2UgewotICAgIC8qIERlY29kZSB0aGUgYmFzZS02NCBlbmNvZGVkIGNoYWxsZW5nZSBtZXNzYWdlICovCi0gICAgaWYoc3RybGVuKGNobGc2NCkgJiYgKmNobGc2NCAhPSAnPScpIHsKLSAgICAgIHJlc3VsdCA9IEN1cmxfYmFzZTY0X2RlY29kZShjaGxnNjQsICZjaGxnLCAmY2hsZ2xlbik7Ci0gICAgICBpZihyZXN1bHQpCi0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgLyogRW5zdXJlIHdlIGhhdmUgYSB2YWxpZCBjaGFsbGVuZ2UgbWVzc2FnZSAqLwotICAgIGlmKCFjaGxnKSB7Ci0gICAgICBpbmZvZihkYXRhLCAiR1NTQVBJIGhhbmRzaGFrZSBmYWlsdXJlIChlbXB0eSBjaGFsbGVuZ2UgbWVzc2FnZSlcbiIpOwotCi0gICAgICByZXR1cm4gQ1VSTEVfQkFEX0NPTlRFTlRfRU5DT0RJTkc7Ci0gICAgfQotCi0gICAgLyogU2V0dXAgdGhlIGNoYWxsZW5nZSAiaW5wdXQiIHNlY3VyaXR5IGJ1ZmZlciAqLwotICAgIGNobGdfZGVzYy51bFZlcnNpb24gPSBTRUNCVUZGRVJfVkVSU0lPTjsKLSAgICBjaGxnX2Rlc2MuY0J1ZmZlcnMgID0gMTsKLSAgICBjaGxnX2Rlc2MucEJ1ZmZlcnMgID0gJmNobGdfYnVmOwotICAgIGNobGdfYnVmLkJ1ZmZlclR5cGUgPSBTRUNCVUZGRVJfVE9LRU47Ci0gICAgY2hsZ19idWYucHZCdWZmZXIgICA9IGNobGc7Ci0gICAgY2hsZ19idWYuY2JCdWZmZXIgICA9IGN1cmx4X3V6dG91bChjaGxnbGVuKTsKLSAgfQotCi0gIC8qIFNldHVwIHRoZSByZXNwb25zZSAib3V0cHV0IiBzZWN1cml0eSBidWZmZXIgKi8KLSAgcmVzcF9kZXNjLnVsVmVyc2lvbiA9IFNFQ0JVRkZFUl9WRVJTSU9OOwotICByZXNwX2Rlc2MuY0J1ZmZlcnMgID0gMTsKLSAgcmVzcF9kZXNjLnBCdWZmZXJzICA9ICZyZXNwX2J1ZjsKLSAgcmVzcF9idWYuQnVmZmVyVHlwZSA9IFNFQ0JVRkZFUl9UT0tFTjsKLSAgcmVzcF9idWYucHZCdWZmZXIgICA9IGtyYjUtPm91dHB1dF90b2tlbjsKLSAgcmVzcF9idWYuY2JCdWZmZXIgICA9IGN1cmx4X3V6dG91bChrcmI1LT50b2tlbl9tYXgpOwotCi0gIC8qIEdlbmVyYXRlIG91ciBjaGFsbGVuZ2UtcmVzcG9uc2UgbWVzc2FnZSAqLwotICBzdGF0dXMgPSBzX3BTZWNGbi0+SW5pdGlhbGl6ZVNlY3VyaXR5Q29udGV4dChrcmI1LT5jcmVkZW50aWFscywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hsZyA/IGtyYjUtPmNvbnRleHQgOiBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrcmI1LT5zcG4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtdXR1YWxfYXV0aCA/Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVNDX1JFUV9NVVRVQUxfQVVUSCA6IDApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBTRUNVUklUWV9OQVRJVkVfRFJFUCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hsZyA/ICZjaGxnX2Rlc2MgOiBOVUxMLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlc3BfZGVzYywgJmF0dHJzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXhwaXJ5KTsKLQotICBpZihzdGF0dXMgIT0gU0VDX0VfT0sgJiYgc3RhdHVzICE9IFNFQ19JX0NPTlRJTlVFX05FRURFRCkgewotICAgIGZyZWUoY2hsZyk7Ci0KLSAgICByZXR1cm4gQ1VSTEVfUkVDVl9FUlJPUjsKLSAgfQotCi0gIGlmKG1lbWNtcCgmY29udGV4dCwga3JiNS0+Y29udGV4dCwgc2l6ZW9mKGNvbnRleHQpKSkgewotICAgIHNfcFNlY0ZuLT5EZWxldGVTZWN1cml0eUNvbnRleHQoa3JiNS0+Y29udGV4dCk7Ci0KLSAgICBtZW1jcHkoa3JiNS0+Y29udGV4dCwgJmNvbnRleHQsIHNpemVvZihjb250ZXh0KSk7Ci0gIH0KLQotICBpZihyZXNwX2J1Zi5jYkJ1ZmZlcikgewotICAgIC8qIEJhc2U2NCBlbmNvZGUgdGhlIHJlc3BvbnNlICovCi0gICAgcmVzdWx0ID0gQ3VybF9iYXNlNjRfZW5jb2RlKGRhdGEsIChjaGFyICopcmVzcF9idWYucHZCdWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BfYnVmLmNiQnVmZmVyLCBvdXRwdHIsIG91dGxlbik7Ci0gIH0KLQotICAvKiBGcmVlIHRoZSBkZWNvZGVkIGNoYWxsZW5nZSAqLwotICBmcmVlKGNobGcpOwotCi0gIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qCi0gKiBDdXJsX3Nhc2xfY3JlYXRlX2dzc2FwaV9zZWN1cml0eV9tZXNzYWdlKCkKLSAqCi0gKiBUaGlzIGlzIHVzZWQgdG8gZ2VuZXJhdGUgYW4gYWxyZWFkeSBlbmNvZGVkIEdTU0FQSSAoS2VyYmVyb3MgVjUpIHNlY3VyaXR5Ci0gKiB0b2tlbiBtZXNzYWdlIHJlYWR5IGZvciBzZW5kaW5nIHRvIHRoZSByZWNpcGllbnQuCi0gKgotICogUGFyYW1ldGVyczoKLSAqCi0gKiBkYXRhICAgIFtpbl0gICAgIC0gVGhlIHNlc3Npb24gaGFuZGxlLgotICogY2hsZzY0ICBbaW5dICAgICAtIFRoZSBvcHRpb25hbCBiYXNlNjQgZW5jb2RlZCBjaGFsbGVuZ2UgbWVzc2FnZS4KLSAqIGtyYjUgICAgW2luL291dF0gLSBUaGUgZ3NzYXBpIGRhdGEgc3RydWN0IGJlaW5nIHVzZWQgYW5kIG1vZGlmaWVkLgotICogb3V0cHRyICBbaW4vb3V0XSAtIFRoZSBhZGRyZXNzIHdoZXJlIGEgcG9pbnRlciB0byBuZXdseSBhbGxvY2F0ZWQgbWVtb3J5Ci0gKiAgICAgICAgICAgICAgICAgICAgaG9sZGluZyB0aGUgcmVzdWx0IHdpbGwgYmUgc3RvcmVkIHVwb24gY29tcGxldGlvbi4KLSAqIG91dGxlbiAgW291dF0gICAgLSBUaGUgbGVuZ3RoIG9mIHRoZSBvdXRwdXQgbWVzc2FnZS4KLSAqCi0gKiBSZXR1cm5zIENVUkxFX09LIG9uIHN1Y2Nlc3MuCi0gKi8KLUNVUkxjb2RlIEN1cmxfc2FzbF9jcmVhdGVfZ3NzYXBpX3NlY3VyaXR5X21lc3NhZ2Uoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNobGc2NCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGtlcmJlcm9zNWRhdGEgKmtyYjUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipvdXRwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqb3V0bGVuKQotewotICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKLSAgc2l6ZV90IG9mZnNldCA9IDA7Ci0gIHNpemVfdCBjaGxnbGVuID0gMDsKLSAgc2l6ZV90IG1lc3NhZ2VsZW4gPSAwOwotICBzaXplX3QgYXBwZGF0YWxlbiA9IDA7Ci0gIHVuc2lnbmVkIGNoYXIgKmNobGcgPSBOVUxMOwotICB1bnNpZ25lZCBjaGFyICp0cmFpbGVyID0gTlVMTDsKLSAgdW5zaWduZWQgY2hhciAqbWVzc2FnZSA9IE5VTEw7Ci0gIHVuc2lnbmVkIGNoYXIgKnBhZGRpbmcgPSBOVUxMOwotICB1bnNpZ25lZCBjaGFyICphcHBkYXRhID0gTlVMTDsKLSAgU2VjQnVmZmVyIGlucHV0X2J1ZlsyXTsKLSAgU2VjQnVmZmVyIHdyYXBfYnVmWzNdOwotICBTZWNCdWZmZXJEZXNjIGlucHV0X2Rlc2M7Ci0gIFNlY0J1ZmZlckRlc2Mgd3JhcF9kZXNjOwotICB1bnNpZ25lZCBsb25nIGluZGF0YSA9IDA7Ci0gIHVuc2lnbmVkIGxvbmcgb3V0ZGF0YSA9IDA7Ci0gIHVuc2lnbmVkIGxvbmcgcW9wID0gMDsKLSAgdW5zaWduZWQgbG9uZyBzZWNfbGF5ZXIgPSAwOwotICB1bnNpZ25lZCBsb25nIG1heF9zaXplID0gMDsKLSAgU2VjUGtnQ29udGV4dF9TaXplcyBzaXplczsKLSAgU2VjUGtnQ3JlZGVudGlhbHNfTmFtZXMgbmFtZXM7Ci0gIFNFQ1VSSVRZX1NUQVRVUyBzdGF0dXM7Ci0gIGNoYXIgKnVzZXJfbmFtZTsKLQotICAvKiBEZWNvZGUgdGhlIGJhc2UtNjQgZW5jb2RlZCBpbnB1dCBtZXNzYWdlICovCi0gIGlmKHN0cmxlbihjaGxnNjQpICYmICpjaGxnNjQgIT0gJz0nKSB7Ci0gICAgcmVzdWx0ID0gQ3VybF9iYXNlNjRfZGVjb2RlKGNobGc2NCwgJmNobGcsICZjaGxnbGVuKTsKLSAgICBpZihyZXN1bHQpCi0gICAgICByZXR1cm4gcmVzdWx0OwotICB9Ci0KLSAgLyogRW5zdXJlIHdlIGhhdmUgYSB2YWxpZCBjaGFsbGVuZ2UgbWVzc2FnZSAqLwotICBpZighY2hsZykgewotICAgIGluZm9mKGRhdGEsICJHU1NBUEkgaGFuZHNoYWtlIGZhaWx1cmUgKGVtcHR5IHNlY3VyaXR5IG1lc3NhZ2UpXG4iKTsKLQotICAgIHJldHVybiBDVVJMRV9CQURfQ09OVEVOVF9FTkNPRElORzsKLSAgfQotCi0gIC8qIEdldCBvdXIgcmVzcG9uc2Ugc2l6ZSBpbmZvcm1hdGlvbiAqLwotICBzdGF0dXMgPSBzX3BTZWNGbi0+UXVlcnlDb250ZXh0QXR0cmlidXRlcyhrcmI1LT5jb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRUNQS0dfQVRUUl9TSVpFUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNpemVzKTsKLSAgaWYoc3RhdHVzICE9IFNFQ19FX09LKSB7Ci0gICAgZnJlZShjaGxnKTsKLQotICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotICB9Ci0KLSAgLyogR2V0IHRoZSBmdWxseSBxdWFsaWZpZWQgdXNlcm5hbWUgYmFjayBmcm9tIHRoZSBjb250ZXh0ICovCi0gIHN0YXR1cyA9IHNfcFNlY0ZuLT5RdWVyeUNyZWRlbnRpYWxzQXR0cmlidXRlcyhrcmI1LT5jcmVkZW50aWFscywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNFQ1BLR19DUkVEX0FUVFJfTkFNRVMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmFtZXMpOwotICBpZihzdGF0dXMgIT0gU0VDX0VfT0spIHsKLSAgICBmcmVlKGNobGcpOwotCi0gICAgcmV0dXJuIENVUkxFX1JFQ1ZfRVJST1I7Ci0gIH0KLQotICAvKiBTZXR1cCB0aGUgImlucHV0IiBzZWN1cml0eSBidWZmZXIgKi8KLSAgaW5wdXRfZGVzYy51bFZlcnNpb24gPSBTRUNCVUZGRVJfVkVSU0lPTjsKLSAgaW5wdXRfZGVzYy5jQnVmZmVycyA9IDI7Ci0gIGlucHV0X2Rlc2MucEJ1ZmZlcnMgPSBpbnB1dF9idWY7Ci0gIGlucHV0X2J1ZlswXS5CdWZmZXJUeXBlID0gU0VDQlVGRkVSX1NUUkVBTTsKLSAgaW5wdXRfYnVmWzBdLnB2QnVmZmVyID0gY2hsZzsKLSAgaW5wdXRfYnVmWzBdLmNiQnVmZmVyID0gY3VybHhfdXp0b3VsKGNobGdsZW4pOwotICBpbnB1dF9idWZbMV0uQnVmZmVyVHlwZSA9IFNFQ0JVRkZFUl9EQVRBOwotICBpbnB1dF9idWZbMV0ucHZCdWZmZXIgPSBOVUxMOwotICBpbnB1dF9idWZbMV0uY2JCdWZmZXIgPSAwOwotCi0gIC8qIERlY3J5cHQgdGhlIGluYm91bmQgY2hhbGxlbmdlIGFuZCBvYnRhaW4gdGhlIHFvcCAqLwotICBzdGF0dXMgPSBzX3BTZWNGbi0+RGVjcnlwdE1lc3NhZ2Uoa3JiNS0+Y29udGV4dCwgJmlucHV0X2Rlc2MsIDAsICZxb3ApOwotICBpZihzdGF0dXMgIT0gU0VDX0VfT0spIHsKLSAgICBpbmZvZihkYXRhLCAiR1NTQVBJIGhhbmRzaGFrZSBmYWlsdXJlIChlbXB0eSBzZWN1cml0eSBtZXNzYWdlKVxuIik7Ci0KLSAgICBmcmVlKGNobGcpOwotCi0gICAgcmV0dXJuIENVUkxFX0JBRF9DT05URU5UX0VOQ09ESU5HOwotICB9Ci0KLSAgLyogTm90IDQgb2N0ZXRzIGxvbmcgc28gZmFpbCBhcyBwZXIgUkZDNDc1MiBTZWN0aW9uIDMuMSAqLwotICBpZihpbnB1dF9idWZbMV0uY2JCdWZmZXIgIT0gNCkgewotICAgIGluZm9mKGRhdGEsICJHU1NBUEkgaGFuZHNoYWtlIGZhaWx1cmUgKGludmFsaWQgc2VjdXJpdHkgZGF0YSlcbiIpOwotCi0gICAgZnJlZShjaGxnKTsKLQotICAgIHJldHVybiBDVVJMRV9CQURfQ09OVEVOVF9FTkNPRElORzsKLSAgfQotCi0gIC8qIENvcHkgdGhlIGRhdGEgb3V0IGFuZCBmcmVlIHRoZSBjaGFsbGVuZ2UgYXMgaXQgaXMgbm90IHJlcXVpcmVkIGFueW1vcmUgKi8KLSAgbWVtY3B5KCZpbmRhdGEsIGlucHV0X2J1ZlsxXS5wdkJ1ZmZlciwgNCk7Ci0gIHNfcFNlY0ZuLT5GcmVlQ29udGV4dEJ1ZmZlcihpbnB1dF9idWZbMV0ucHZCdWZmZXIpOwotICBmcmVlKGNobGcpOwotCi0gIC8qIEV4dHJhY3QgdGhlIHNlY3VyaXR5IGxheWVyICovCi0gIHNlY19sYXllciA9IGluZGF0YSAmIDB4MDAwMDAwRkY7Ci0gIGlmKCEoc2VjX2xheWVyICYgS0VSQl9XUkFQX05PX0VOQ1JZUFQpKSB7Ci0gICAgaW5mb2YoZGF0YSwgIkdTU0FQSSBoYW5kc2hha2UgZmFpbHVyZSAoaW52YWxpZCBzZWN1cml0eSBsYXllcilcbiIpOwotCi0gICAgcmV0dXJuIENVUkxFX0JBRF9DT05URU5UX0VOQ09ESU5HOwotICB9Ci0KLSAgLyogRXh0cmFjdCB0aGUgbWF4aW11bSBtZXNzYWdlIHNpemUgdGhlIHNlcnZlciBjYW4gcmVjZWl2ZSAqLwotICBtYXhfc2l6ZSA9IG50b2hsKGluZGF0YSAmIDB4RkZGRkZGMDApOwotICBpZihtYXhfc2l6ZSA+IDApIHsKLSAgICAvKiBUaGUgc2VydmVyIGhhcyB0b2xkIHVzIGl0IHN1cHBvcnRzIGEgbWF4aW11bSByZWNlaXZlIGJ1ZmZlciwgaG93ZXZlciwgYXMKLSAgICAgICB3ZSBkb24ndCByZXF1aXJlIG9uZSB1bmxlc3Mgd2UgYXJlIGVuY3J5cHRpbmcgZGF0YSwgd2UgdGVsbCB0aGUgc2VydmVyCi0gICAgICAgb3VyIHJlY2VpdmUgYnVmZmVyIGlzIHplcm8uICovCi0gICAgbWF4X3NpemUgPSAwOwotICB9Ci0KLSAgLyogQWxsb2NhdGUgdGhlIHRyYWlsZXIgKi8KLSAgdHJhaWxlciA9IG1hbGxvYyhzaXplcy5jYlNlY3VyaXR5VHJhaWxlcik7Ci0gIGlmKCF0cmFpbGVyKQotICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotCi0gIC8qIENvbnZlcnQgdGhlIHVzZXIgbmFtZSB0byBVVEY4IHdoZW4gb3BlcmF0aW5nIHdpdGggVW5pY29kZSAqLwotICB1c2VyX25hbWUgPSBDdXJsX2NvbnZlcnRfdGNoYXJfdG9fVVRGOChuYW1lcy5zVXNlck5hbWUpOwotICBpZighdXNlcl9uYW1lKSB7Ci0gICAgZnJlZSh0cmFpbGVyKTsKLQotICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotICB9Ci0KLSAgLyogQWxsb2NhdGUgb3VyIG1lc3NhZ2UgKi8KLSAgbWVzc2FnZWxlbiA9IHNpemVvZihvdXRkYXRhKSArIHN0cmxlbih1c2VyX25hbWUpICsgMTsKLSAgbWVzc2FnZSA9IG1hbGxvYyhtZXNzYWdlbGVuKTsKLSAgaWYoIW1lc3NhZ2UpIHsKLSAgICBmcmVlKHRyYWlsZXIpOwotICAgIEN1cmxfdW5pY29kZWZyZWUodXNlcl9uYW1lKTsKLQotICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotICB9Ci0KLSAgLyogUG9wdWxhdGUgdGhlIG1lc3NhZ2Ugd2l0aCB0aGUgc2VjdXJpdHkgbGF5ZXIsIGNsaWVudCBzdXBwb3J0ZWQgcmVjZWl2ZQotICAgICBtZXNzYWdlIHNpemUgYW5kIGF1dGhvcml6YXRpb24gaWRlbnRpdHkgaW5jbHVkaW5nIHRoZSAweDAwIGJhc2VkCi0gICAgIHRlcm1pbmF0b3IuIE5vdGU6IERpc3BpdGUgUkZDNDc1MiBTZWN0aW9uIDMuMSBzdGF0aW5nICJUaGUgYXV0aG9yaXphdGlvbgotICAgICBpZGVudGl0eSBpcyBub3QgdGVybWluYXRlZCB3aXRoIHRoZSB6ZXJvLXZhbHVlZCAoJXgwMCkgb2N0ZXQuIiBpdCBzZWVtcwotICAgICBuZWNlc3NhcnkgdG8gaW5jbHVkZSBpdC4gKi8KLSAgb3V0ZGF0YSA9IGh0b25sKG1heF9zaXplKSB8IHNlY19sYXllcjsKLSAgbWVtY3B5KG1lc3NhZ2UsICZvdXRkYXRhLCBzaXplb2Yob3V0ZGF0YSkpOwotICBzdHJjcHkoKGNoYXIgKikgbWVzc2FnZSArIHNpemVvZihvdXRkYXRhKSwgdXNlcl9uYW1lKTsKLSAgQ3VybF91bmljb2RlZnJlZSh1c2VyX25hbWUpOwotCi0gIC8qIEFsbG9jYXRlIHRoZSBwYWRkaW5nICovCi0gIHBhZGRpbmcgPSBtYWxsb2Moc2l6ZXMuY2JCbG9ja1NpemUpOwotICBpZighcGFkZGluZykgewotICAgIGZyZWUobWVzc2FnZSk7Ci0gICAgZnJlZSh0cmFpbGVyKTsKLQotICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotICB9Ci0KLSAgLyogU2V0dXAgdGhlICJhdXRoZW50aWNhdGlvbiBkYXRhIiBzZWN1cml0eSBidWZmZXIgKi8KLSAgd3JhcF9kZXNjLnVsVmVyc2lvbiAgICA9IFNFQ0JVRkZFUl9WRVJTSU9OOwotICB3cmFwX2Rlc2MuY0J1ZmZlcnMgICAgID0gMzsKLSAgd3JhcF9kZXNjLnBCdWZmZXJzICAgICA9IHdyYXBfYnVmOwotICB3cmFwX2J1ZlswXS5CdWZmZXJUeXBlID0gU0VDQlVGRkVSX1RPS0VOOwotICB3cmFwX2J1ZlswXS5wdkJ1ZmZlciAgID0gdHJhaWxlcjsKLSAgd3JhcF9idWZbMF0uY2JCdWZmZXIgICA9IHNpemVzLmNiU2VjdXJpdHlUcmFpbGVyOwotICB3cmFwX2J1ZlsxXS5CdWZmZXJUeXBlID0gU0VDQlVGRkVSX0RBVEE7Ci0gIHdyYXBfYnVmWzFdLnB2QnVmZmVyICAgPSBtZXNzYWdlOwotICB3cmFwX2J1ZlsxXS5jYkJ1ZmZlciAgID0gY3VybHhfdXp0b3VsKG1lc3NhZ2VsZW4pOwotICB3cmFwX2J1ZlsyXS5CdWZmZXJUeXBlID0gU0VDQlVGRkVSX1BBRERJTkc7Ci0gIHdyYXBfYnVmWzJdLnB2QnVmZmVyICAgPSBwYWRkaW5nOwotICB3cmFwX2J1ZlsyXS5jYkJ1ZmZlciAgID0gc2l6ZXMuY2JCbG9ja1NpemU7Ci0KLSAgLyogRW5jcnlwdCB0aGUgZGF0YSAqLwotICBzdGF0dXMgPSBzX3BTZWNGbi0+RW5jcnlwdE1lc3NhZ2Uoa3JiNS0+Y29udGV4dCwgS0VSQl9XUkFQX05PX0VOQ1JZUFQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmd3JhcF9kZXNjLCAwKTsKLSAgaWYoc3RhdHVzICE9IFNFQ19FX09LKSB7Ci0gICAgZnJlZShwYWRkaW5nKTsKLSAgICBmcmVlKG1lc3NhZ2UpOwotICAgIGZyZWUodHJhaWxlcik7Ci0KLSAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKLSAgfQotCi0gIC8qIEFsbG9jYXRlIHRoZSBlbmNyeXB0aW9uICh3cmFwKSBidWZmZXIgKi8KLSAgYXBwZGF0YWxlbiA9IHdyYXBfYnVmWzBdLmNiQnVmZmVyICsgd3JhcF9idWZbMV0uY2JCdWZmZXIgKwotICAgICAgICAgICAgICAgd3JhcF9idWZbMl0uY2JCdWZmZXI7Ci0gIGFwcGRhdGEgPSBtYWxsb2MoYXBwZGF0YWxlbik7Ci0gIGlmKCFhcHBkYXRhKSB7Ci0gICAgZnJlZShwYWRkaW5nKTsKLSAgICBmcmVlKG1lc3NhZ2UpOwotICAgIGZyZWUodHJhaWxlcik7Ci0KLSAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKLSAgfQotCi0gIC8qIFBvcHVsYXRlIHRoZSBlbmNyeXB0aW9uIGJ1ZmZlciAqLwotICBtZW1jcHkoYXBwZGF0YSwgd3JhcF9idWZbMF0ucHZCdWZmZXIsIHdyYXBfYnVmWzBdLmNiQnVmZmVyKTsKLSAgb2Zmc2V0ICs9IHdyYXBfYnVmWzBdLmNiQnVmZmVyOwotICBtZW1jcHkoYXBwZGF0YSArIG9mZnNldCwgd3JhcF9idWZbMV0ucHZCdWZmZXIsIHdyYXBfYnVmWzFdLmNiQnVmZmVyKTsKLSAgb2Zmc2V0ICs9IHdyYXBfYnVmWzFdLmNiQnVmZmVyOwotICBtZW1jcHkoYXBwZGF0YSArIG9mZnNldCwgd3JhcF9idWZbMl0ucHZCdWZmZXIsIHdyYXBfYnVmWzJdLmNiQnVmZmVyKTsKLQotICAvKiBCYXNlNjQgZW5jb2RlIHRoZSByZXNwb25zZSAqLwotICByZXN1bHQgPSBDdXJsX2Jhc2U2NF9lbmNvZGUoZGF0YSwgKGNoYXIgKilhcHBkYXRhLCBhcHBkYXRhbGVuLCBvdXRwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRsZW4pOwotCi0gIC8qIEZyZWUgYWxsIG9mIG91ciBsb2NhbCBidWZmZXJzICovCi0gIGZyZWUoYXBwZGF0YSk7Ci0gIGZyZWUocGFkZGluZyk7Ci0gIGZyZWUobWVzc2FnZSk7Ci0gIGZyZWUodHJhaWxlcik7Ci0KLSAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyoKLSAqIEN1cmxfc2FzbF9nc3NhcGlfY2xlYW51cCgpCi0gKgotICogVGhpcyBpcyB1c2VkIHRvIGNsZWFuIHVwIHRoZSBnc3NhcGkgc3BlY2lmaWMgZGF0YS4KLSAqCi0gKiBQYXJhbWV0ZXJzOgotICoKLSAqIGtyYjUgICAgIFtpbi9vdXRdIC0gVGhlIGtlcmJlcm9zIDUgZGF0YSBzdHJ1Y3QgYmVpbmcgY2xlYW5lZCB1cC4KLSAqCi0gKi8KLXZvaWQgQ3VybF9zYXNsX2dzc2FwaV9jbGVhbnVwKHN0cnVjdCBrZXJiZXJvczVkYXRhICprcmI1KQotewotICAvKiBGcmVlIG91ciBzZWN1cml0eSBjb250ZXh0ICovCi0gIGlmKGtyYjUtPmNvbnRleHQpIHsKLSAgICBzX3BTZWNGbi0+RGVsZXRlU2VjdXJpdHlDb250ZXh0KGtyYjUtPmNvbnRleHQpOwotICAgIGZyZWUoa3JiNS0+Y29udGV4dCk7Ci0gICAga3JiNS0+Y29udGV4dCA9IE5VTEw7Ci0gIH0KLQotICAvKiBGcmVlIG91ciBjcmVkZW50aWFscyBoYW5kbGUgKi8KLSAgaWYoa3JiNS0+Y3JlZGVudGlhbHMpIHsKLSAgICBzX3BTZWNGbi0+RnJlZUNyZWRlbnRpYWxzSGFuZGxlKGtyYjUtPmNyZWRlbnRpYWxzKTsKLSAgICBmcmVlKGtyYjUtPmNyZWRlbnRpYWxzKTsKLSAgICBrcmI1LT5jcmVkZW50aWFscyA9IE5VTEw7Ci0gIH0KLQotICAvKiBGcmVlIG91ciBpZGVudGl0eSAqLwotICBDdXJsX3NzcGlfZnJlZV9pZGVudGl0eShrcmI1LT5wX2lkZW50aXR5KTsKLSAga3JiNS0+cF9pZGVudGl0eSA9IE5VTEw7Ci0KLSAgLyogRnJlZSB0aGUgU1BOIGFuZCBvdXRwdXQgdG9rZW4gKi8KLSAgQ3VybF9zYWZlZnJlZShrcmI1LT5zcG4pOwotICBDdXJsX3NhZmVmcmVlKGtyYjUtPm91dHB1dF90b2tlbik7Ci0KLSAgLyogUmVzZXQgYW55IHZhcmlhYmxlcyAqLwotICBrcmI1LT50b2tlbl9tYXggPSAwOwotfQotI2VuZGlmIC8qIFVTRV9LRVJCRVJPUzUgKi8KLQotI2VuZGlmIC8qIFVTRV9XSU5ET1dTX1NTUEkgKi8KZGlmZiAtLWdpdCBhL2xpYi9jdXJsX3NlYy5oIGIvbGliL2N1cmxfc2VjLmgKaW5kZXggNmM0OGRhMi4uM2Y5NGUxNCAxMDA2NDQKLS0tIGEvbGliL2N1cmxfc2VjLmgKKysrIGIvbGliL2N1cmxfc2VjLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvY3VybF9zZXR1cC5oIGIvbGliL2N1cmxfc2V0dXAuaAppbmRleCBkZjhiMWU3Li4yNDAwMGE1IDEwMDY0NAotLS0gYS9saWIvY3VybF9zZXR1cC5oCisrKyBiL2xpYi9jdXJsX3NldHVwLmgKQEAgLTcsMTEgKzcsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0xODEsOSArMTgxLDYgQEAKICMgIGlmbmRlZiBDVVJMX0RJU0FCTEVfU01UUAogIyAgICBkZWZpbmUgQ1VSTF9ESVNBQkxFX1NNVFAKICMgIGVuZGlmCi0jICBpZm5kZWYgQ1VSTF9ESVNBQkxFX1JUU1AKLSMgICAgZGVmaW5lIENVUkxfRElTQUJMRV9SVFNQCi0jICBlbmRpZgogIyAgaWZuZGVmIENVUkxfRElTQUJMRV9SVE1QCiAjICAgIGRlZmluZSBDVVJMX0RJU0FCTEVfUlRNUAogIyAgZW5kaWYKQEAgLTI0OSw3ICsyNDYsNyBAQAogIyAgaWZkZWYgSEFWRV9XSU5TT0NLMl9ICiAjICAgIGluY2x1ZGUgPHdpbnNvY2syLmg+CiAjICAgIGlmZGVmIEhBVkVfV1MyVENQSVBfSAotIyAgICAgICBpbmNsdWRlIDx3czJ0Y3BpcC5oPgorIyAgICAgIGluY2x1ZGUgPHdzMnRjcGlwLmg+CiAjICAgIGVuZGlmCiAjICBlbHNlCiAjICAgIGlmZGVmIEhBVkVfV0lOU09DS19ICkBAIC00NDksNyArNDQ2LDcgQEAKICMgIGVuZGlmCiAKICMgIGlmbmRlZiBmaWxlbm8gLyogc3Vub3MgNCBoYXZlIHRoaXMgYXMgYSBtYWNybyEgKi8KLSAgICAgaW50IGZpbGVubyggRklMRSAqc3RyZWFtKTsKKyAgICAgaW50IGZpbGVubyhGSUxFICpzdHJlYW0pOwogIyAgZW5kaWYKIAogI2VuZGlmIC8qIFdJTjMyICovCkBAIC00NTcsOSArNDU0LDEwIEBACiAvKgogICogbXN2YyA2LjAgcmVxdWlyZXMgUFNESyBpbiBvcmRlciB0byBoYXZlIElORVQ2X0FERFJTVFJMRU4KICAqIGRlZmluZWQgaW4gd3MydGNwaXAuaCBhcyB3ZWxsIGFzIHRvIHByb3ZpZGUgSVB2NiBzdXBwb3J0LgorICogRG9lcyBub3QgYXBwbHkgaWYgbHdJUCBpcyB1c2VkLgogICovCiAKLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAhZGVmaW5lZChfX1BPQ0NfXykKKyNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAhZGVmaW5lZChfX1BPQ0NfXykgJiYgIWRlZmluZWQoVVNFX0xXSVBTT0NLKQogIyAgaWYgIWRlZmluZWQoSEFWRV9XUzJUQ1BJUF9IKSB8fCBcCiAgICAgICgoX01TQ19WRVIgPCAxMzAwKSAmJiAhZGVmaW5lZChJTkVUNl9BRERSU1RSTEVOKSkKICMgICAgdW5kZWYgSEFWRV9HRVRBRERSSU5GT19USFJFQURTQUZFCkBAIC01MDMsNiArNTAxLDcgQEAKICMgIGRlZmluZSBDVVJMUkVTX0FSRVMKIC8qIG5vdyB1bmRlZiB0aGUgc3RvY2sgbGliYyBmdW5jdGlvbnMganVzdCB0byBhdm9pZCB0aGVtIGJlaW5nIHVzZWQgKi8KICMgIHVuZGVmIEhBVkVfR0VUQUREUklORk8KKyMgIHVuZGVmIEhBVkVfRlJFRUFERFJJTkZPCiAjICB1bmRlZiBIQVZFX0dFVEhPU1RCWU5BTUUKICNlbGlmIGRlZmluZWQoVVNFX1RIUkVBRFNfUE9TSVgpIHx8IGRlZmluZWQoVVNFX1RIUkVBRFNfV0lOMzIpCiAjICBkZWZpbmUgQ1VSTFJFU19BU1lOQ0gKQEAgLTU3Myw3ICs1NzIsNyBAQAogI2RlZmluZSBMSUJJRE5fUkVRVUlSRURfVkVSU0lPTiAiMC40LjEiCiAKICNpZiBkZWZpbmVkKFVTRV9HTlVUTFMpIHx8IGRlZmluZWQoVVNFX09QRU5TU0wpIHx8IGRlZmluZWQoVVNFX05TUykgfHwgXAotICAgIGRlZmluZWQoVVNFX1BPTEFSU1NMKSB8fCBkZWZpbmVkKFVTRV9BWFRMUykgfHwgXAorICAgIGRlZmluZWQoVVNFX1BPTEFSU1NMKSB8fCBkZWZpbmVkKFVTRV9BWFRMUykgfHwgZGVmaW5lZChVU0VfTUJFRFRMUykgfHwgXAogICAgIGRlZmluZWQoVVNFX0NZQVNTTCkgfHwgZGVmaW5lZChVU0VfU0NIQU5ORUwpIHx8IFwKICAgICBkZWZpbmVkKFVTRV9EQVJXSU5TU0wpIHx8IGRlZmluZWQoVVNFX0dTS0lUKQogI2RlZmluZSBVU0VfU1NMICAgIC8qIFNTTCBzdXBwb3J0IGhhcyBiZWVuIGVuYWJsZWQgKi8KQEAgLTU5NywxMyArNTk2LDkgQEAKICAgICBkZWZpbmVkKFVTRV9HTlVUTFMpIHx8IGRlZmluZWQoVVNFX05TUykgfHwgZGVmaW5lZChVU0VfREFSV0lOU1NMKSB8fCBcCiAgICAgZGVmaW5lZChVU0VfT1M0MDBDUllQVE8pIHx8IGRlZmluZWQoVVNFX1dJTjMyX0NSWVBUTykKIAotI2lmZGVmIEhBVkVfQk9SSU5HU1NMIC8qIEJvcmluZ1NTTCBpcyBub3QgTlRMTSBjYXBhYmxlICovCi0jdW5kZWYgVVNFX05UTE0KLSNlbHNlCiAjZGVmaW5lIFVTRV9OVExNCiAjZW5kaWYKICNlbmRpZgotI2VuZGlmCiAKIC8qIG5vbi1jb25maWd1cmUgYnVpbGRzIG1heSBkZWZpbmUgQ1VSTF9XQU5UU19DQV9CVU5ETEVfRU5WICovCiAjaWYgZGVmaW5lZChDVVJMX1dBTlRTX0NBX0JVTkRMRV9FTlYpICYmICFkZWZpbmVkKENVUkxfQ0FfQlVORExFKQpAQCAtNjQ1LDcgKzY0MCw3IEBACiAgKiBFbnN1cmUgdGhhdCBXaW5zb2NrIGFuZCBsd0lQIFRDUC9JUCBzdGFja3MgYXJlIG5vdCBtaXhlZC4KICAqLwogCi0jaWYgZGVmaW5lZChfX0xXSVBfT1BUX0hfXykKKyNpZiBkZWZpbmVkKF9fTFdJUF9PUFRfSF9fKSB8fCBkZWZpbmVkKExXSVBfSERSX09QVF9IKQogIyAgaWYgZGVmaW5lZChTT0NLRVQpIHx8IFwKICAgICAgZGVmaW5lZChVU0VfV0lOU09DSykgfHwgXAogICAgICBkZWZpbmVkKEhBVkVfV0lOU09DS19IKSB8fCBcCkBAIC02NzYsNyArNjcxLDcgQEAKICNlbmRpZgogCiAvKiBJbiBXaW5kb3dzIHRoZSBkZWZhdWx0IGZpbGUgbW9kZSBpcyB0ZXh0IGJ1dCBhbiBhcHBsaWNhdGlvbiBjYW4gb3ZlcnJpZGUgaXQuCi1UaGVyZWZvcmUgd2Ugc3BlY2lmeSBpdCBleHBsaWNpdGx5LiBodHRwczovL2dpdGh1Yi5jb20vYmFnZGVyL2N1cmwvcHVsbC8yNTgKK1RoZXJlZm9yZSB3ZSBzcGVjaWZ5IGl0IGV4cGxpY2l0bHkuIGh0dHBzOi8vZ2l0aHViLmNvbS9jdXJsL2N1cmwvcHVsbC8yNTgKICovCiAjaWYgZGVmaW5lZChXSU4zMikgfHwgZGVmaW5lZChNU0RPUykKICNkZWZpbmUgRk9QRU5fUkVBRFRFWFQgInJ0IgpAQCAtNjk1LDQgKzY5MCwxOSBAQAogI2RlZmluZSBGT1BFTl9XUklURVRFWFQgInciCiAjZW5kaWYKIAorLyogV2luU29jayBkZXN0cm95cyByZWN2KCkgYnVmZmVyIHdoZW4gc2VuZCgpIGZhaWxlZC4KKyAqIEVuYWJsZWQgYXV0b21hdGljYWxseSBmb3IgV2luZG93cyBhbmQgZm9yIEN5Z3dpbiBhcyBDeWd3aW4gc29ja2V0cyBhcmUKKyAqIHdyYXBwZXJzIGZvciBXaW5Tb2NrIHNvY2tldHMuIGh0dHBzOi8vZ2l0aHViLmNvbS9jdXJsL2N1cmwvaXNzdWVzLzY1NworICogRGVmaW5lIERPTlRfVVNFX1JFQ1ZfQkVGT1JFX1NFTkRfV09SS0FST1VORCB0byBmb3JjZSBkaXNhYmxlIHdvcmthcm91bmQuCisgKi8KKyNpZiAhZGVmaW5lZChET05UX1VTRV9SRUNWX0JFRk9SRV9TRU5EX1dPUktBUk9VTkQpCisjICBpZiBkZWZpbmVkKFdJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pCisjICAgIGRlZmluZSBVU0VfUkVDVl9CRUZPUkVfU0VORF9XT1JLQVJPVU5ECisjICBlbmRpZgorI2Vsc2UgIC8qIERPTlRfVVNFX1JFQ1ZfQkVGT1JFX1NFTkRfV09SS0FST1VORFMgKi8KKyMgIGlmZGVmIFVTRV9SRUNWX0JFRk9SRV9TRU5EX1dPUktBUk9VTkQKKyMgICAgdW5kZWYgVVNFX1JFQ1ZfQkVGT1JFX1NFTkRfV09SS0FST1VORAorIyAgZW5kaWYKKyNlbmRpZiAvKiBET05UX1VTRV9SRUNWX0JFRk9SRV9TRU5EX1dPUktBUk9VTkRTICovCisKICNlbmRpZiAvKiBIRUFERVJfQ1VSTF9TRVRVUF9IICovCmRpZmYgLS1naXQgYS9saWIvY3VybF9zZXR1cF9vbmNlLmggYi9saWIvY3VybF9zZXR1cF9vbmNlLmgKaW5kZXggNjlkNmQ0Ny4uNGRhODM0OSAxMDA2NDQKLS0tIGEvbGliL2N1cmxfc2V0dXBfb25jZS5oCisrKyBiL2xpYi9jdXJsX3NldHVwX29uY2UuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9jdXJsX3NzcGkuYyBiL2xpYi9jdXJsX3NzcGkuYwppbmRleCA0M2ZjYjYzLi41NGJiZWY2IDEwMDY0NAotLS0gYS9saWIvY3VybF9zc3BpLmMKKysrIGIvbGliL2N1cmxfc3NwaS5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgogI2luY2x1ZGUgImN1cmxfc3NwaS5oIgogI2luY2x1ZGUgImN1cmxfbXVsdGlieXRlLmgiCisjaW5jbHVkZSAic3lzdGVtX3dpbjMyLmgiCiAjaW5jbHVkZSAid2Fybmxlc3MuaCIKIAogLyogVGhlIGxhc3QgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlOiAqLwpAQCAtOTMsMjggKzk0LDMzIEBACiAgICAgICAgb3N2ZXIuZHdQbGF0Zm9ybUlkID09IHBsYXRmb3JtSWQpCiAgICAgICBzZWN1cml0eURsbCA9IFRSVUU7CiAjZWxzZQotICAgIFVMT05HTE9ORyBtYWpvclZlcnNpb25NYXNrOwotICAgIFVMT05HTE9ORyBwbGF0Zm9ybUlkTWFzazsKKyAgICBVTE9OR0xPTkcgY207CiAgICAgT1NWRVJTSU9OSU5GT0VYIG9zdmVyOwogCiAgICAgbWVtc2V0KCZvc3ZlciwgMCwgc2l6ZW9mKG9zdmVyKSk7CiAgICAgb3N2ZXIuZHdPU1ZlcnNpb25JbmZvU2l6ZSA9IHNpemVvZihvc3Zlcik7CiAgICAgb3N2ZXIuZHdNYWpvclZlcnNpb24gPSBtYWpvclZlcnNpb247CiAgICAgb3N2ZXIuZHdQbGF0Zm9ybUlkID0gcGxhdGZvcm1JZDsKLSAgICBtYWpvclZlcnNpb25NYXNrID0gVmVyU2V0Q29uZGl0aW9uTWFzaygwLCBWRVJfTUFKT1JWRVJTSU9OLCBWRVJfRVFVQUwpOwotICAgIHBsYXRmb3JtSWRNYXNrID0gVmVyU2V0Q29uZGl0aW9uTWFzaygwLCBWRVJfUExBVEZPUk1JRCwgVkVSX0VRVUFMKTsKKworICAgIGNtID0gVmVyU2V0Q29uZGl0aW9uTWFzaygwLCBWRVJfTUFKT1JWRVJTSU9OLCBWRVJfRVFVQUwpOworICAgIGNtID0gVmVyU2V0Q29uZGl0aW9uTWFzayhjbSwgVkVSX01JTk9SVkVSU0lPTiwgVkVSX0dSRUFURVJfRVFVQUwpOworICAgIGNtID0gVmVyU2V0Q29uZGl0aW9uTWFzayhjbSwgVkVSX1NFUlZJQ0VQQUNLTUFKT1IsIFZFUl9HUkVBVEVSX0VRVUFMKTsKKyAgICBjbSA9IFZlclNldENvbmRpdGlvbk1hc2soY20sIFZFUl9TRVJWSUNFUEFDS01JTk9SLCBWRVJfR1JFQVRFUl9FUVVBTCk7CisgICAgY20gPSBWZXJTZXRDb25kaXRpb25NYXNrKGNtLCBWRVJfUExBVEZPUk1JRCwgVkVSX0VRVUFMKTsKIAogICAgIC8qIFZlcmlmeSB0aGUgbWFqb3IgdmVyc2lvbiBudW1iZXIgPT0gNCBhbmQgcGxhdGZvcm0gaWQgPT0gV0lOX05UICovCi0gICAgaWYoVmVyaWZ5VmVyc2lvbkluZm8oJm9zdmVyLCBWRVJfTUFKT1JWRVJTSU9OLCBtYWpvclZlcnNpb25NYXNrKSAmJgotICAgICAgIFZlcmlmeVZlcnNpb25JbmZvKCZvc3ZlciwgVkVSX1BMQVRGT1JNSUQsIHBsYXRmb3JtSWRNYXNrKSkKKyAgICBpZihWZXJpZnlWZXJzaW9uSW5mbygmb3N2ZXIsIChWRVJfTUFKT1JWRVJTSU9OIHwgVkVSX01JTk9SVkVSU0lPTiB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVkVSX1NFUlZJQ0VQQUNLTUFKT1IgfCBWRVJfU0VSVklDRVBBQ0tNSU5PUiB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVkVSX1BMQVRGT1JNSUQpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNtKSkKICAgICAgIHNlY3VyaXR5RGxsID0gVFJVRTsKICNlbmRpZgogCiAgICAgLyogTG9hZCBTU1BJIGRsbCBpbnRvIHRoZSBhZGRyZXNzIHNwYWNlIG9mIHRoZSBjYWxsaW5nIHByb2Nlc3MgKi8KICAgICBpZihzZWN1cml0eURsbCkKLSAgICAgIHNfaFNlY0RsbCA9IExvYWRMaWJyYXJ5KFRFWFQoInNlY3VyaXR5LmRsbCIpKTsKKyAgICAgIHNfaFNlY0RsbCA9IEN1cmxfbG9hZF9saWJyYXJ5KFRFWFQoInNlY3VyaXR5LmRsbCIpKTsKICAgICBlbHNlCi0gICAgICBzX2hTZWNEbGwgPSBMb2FkTGlicmFyeShURVhUKCJzZWN1cjMyLmRsbCIpKTsKKyAgICAgIHNfaFNlY0RsbCA9IEN1cmxfbG9hZF9saWJyYXJ5KFRFWFQoInNlY3VyMzIuZGxsIikpOwogICAgIGlmKCFzX2hTZWNEbGwpCiAgICAgICByZXR1cm4gQ1VSTEVfRkFJTEVEX0lOSVQ7CiAKQEAgLTIxOSw3ICsyMjUsNyBAQAogCiAgIEN1cmxfdW5pY29kZWZyZWUodXNlcmFuZGRvbWFpbi50Y2hhcl9wdHIpOwogCi0gIC8qIFNldHVwIG50bG0gaWRlbnRpdHkncyBwYXNzd29yZCBhbmQgbGVuZ3RoICovCisgIC8qIFNldHVwIHRoZSBpZGVudGl0eSdzIHBhc3N3b3JkIGFuZCBsZW5ndGggKi8KICAgcGFzc3dkLnRjaGFyX3B0ciA9IEN1cmxfY29udmVydF9VVEY4X3RvX3RjaGFyKChjaGFyICopcGFzc3dkcCk7CiAgIGlmKCFwYXNzd2QudGNoYXJfcHRyKQogICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwpkaWZmIC0tZ2l0IGEvbGliL2N1cmxfc3NwaS5oIGIvbGliL2N1cmxfc3NwaS5oCmluZGV4IDg2NTU3MTUuLjJiYmY5NDcgMTAwNjQ0Ci0tLSBhL2xpYi9jdXJsX3NzcGkuaAorKysgYi9saWIvY3VybF9zc3BpLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zMjcsNiArMzI3LDEwIEBACiAjIGRlZmluZSBTRUNfSV9TSUdOQVRVUkVfTkVFREVEICAgICAgICAgICAgICAgKChIUkVTVUxUKTB4MDAwOTAzNUNMKQogI2VuZGlmCiAKKyNpZm5kZWYgQ1JZUFRfRV9SRVZPS0VECisjIGRlZmluZSBDUllQVF9FX1JFVk9LRUQgICAgICAgICAgICAgICAgICAgICAgKChIUkVTVUxUKTB4ODAwOTIwMTBMKQorI2VuZGlmCisKICNpZmRlZiBVTklDT0RFCiAjICBkZWZpbmUgU0VDRkxBR19XSU5OVF9BVVRIX0lERU5USVRZIFwKICAgICAgKHVuc2lnbmVkIGxvbmcpU0VDX1dJTk5UX0FVVEhfSURFTlRJVFlfVU5JQ09ERQpkaWZmIC0tZ2l0IGEvbGliL2N1cmxfdGhyZWFkcy5jIGIvbGliL2N1cmxfdGhyZWFkcy5jCmluZGV4IGY5YjgxMmUuLmM5OGQ4YmIgMTAwNjQ0Ci0tLSBhL2xpYi9jdXJsX3RocmVhZHMuYworKysgYi9saWIvY3VybF90aHJlYWRzLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yMiw2ICsyMiw4IEBACiAKICNpbmNsdWRlICJjdXJsX3NldHVwLmgiCiAKKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKwogI2lmIGRlZmluZWQoVVNFX1RIUkVBRFNfUE9TSVgpCiAjICBpZmRlZiBIQVZFX1BUSFJFQURfSAogIyAgICBpbmNsdWRlIDxwdGhyZWFkLmg+CmRpZmYgLS1naXQgYS9saWIvY3VybF90aHJlYWRzLmggYi9saWIvY3VybF90aHJlYWRzLmgKaW5kZXggMGYzMTkxYS4uOGNiYWM2MyAxMDA2NDQKLS0tIGEvbGliL2N1cmxfdGhyZWFkcy5oCisrKyBiL2xpYi9jdXJsX3RocmVhZHMuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9jdXJseC5oIGIvbGliL2N1cmx4LmgKaW5kZXggOTc5ZTdkNy4uNDQ4YTM0ZiAxMDA2NDQKLS0tIGEvbGliL2N1cmx4LmgKKysrIGIvbGliL2N1cmx4LmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvZGljdC5jIGIvbGliL2RpY3QuYwppbmRleCAwNmQ3Njk5Li4yZTdjYjQ3IDEwMDY0NAotLS0gYS9saWIvZGljdC5jCisrKyBiL2xpYi9kaWN0LmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL2RpY3QuaCBiL2xpYi9kaWN0LmgKaW5kZXggNDRmZDlkNC4uMTJjMGYzMyAxMDA2NDQKLS0tIGEvbGliL2RpY3QuaAorKysgYi9saWIvZGljdC5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL2RvdGRvdC5jIGIvbGliL2RvdGRvdC5jCmluZGV4IGFlMTY5NDEuLmVhN2M4YTAgMTAwNjQ0Ci0tLSBhL2xpYi9kb3Rkb3QuYworKysgYi9saWIvZG90ZG90LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yMiwxOSArMjIsMjIgQEAKIAogI2luY2x1ZGUgImN1cmxfc2V0dXAuaCIKIAotI2luY2x1ZGUgImRvdGRvdC5oIgorI2luY2x1ZGUgPGN1cmwvY3VybC5oPgogCisjaW5jbHVkZSAiZG90ZG90LmgiCiAjaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKKwogLyogVGhlIGxhc3QgI2luY2x1ZGUgZmlsZSBzaG91bGQgYmU6ICovCiAjaW5jbHVkZSAibWVtZGVidWcuaCIKIAogLyoKICAqICJSZW1vdmUgRG90IFNlZ21lbnRzIgotICogaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTUuMi40CisgKiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTUuMi40CiAgKi8KIAogLyoKICAqIEN1cmxfZGVkb3Rkb3RpZnkoKQorICogQHVuaXR0ZXN0OiAxMzk1CiAgKgogICogVGhpcyBmdW5jdGlvbiBnZXRzIGEgemVyby10ZXJtaW5hdGVkIHBhdGggd2l0aCBkb3QgYW5kIGRvdGRvdCBzZXF1ZW5jZXMKICAqIHBhc3NlZCBpbiBhbmQgc3RyaXBzIHRoZW0gb2ZmIGFjY29yZGluZyB0byB0aGUgcnVsZXMgaW4gUkZDIDM5ODYgc2VjdGlvbgpAQCAtNjgsNiArNzEsMTIgQEAKICAgb3JnY2xvbmUgPSBjbG9uZTsKICAgb3V0cHRyID0gb3V0OwogCisgIGlmKCEqY2xvbmUpIHsKKyAgICAvKiB6ZXJvIGxlbmd0aCBzdHJpbmcsIHJldHVybiB0aGF0ICovCisgICAgZnJlZShvdXQpOworICAgIHJldHVybiBjbG9uZTsKKyAgfQorCiAgIC8qCiAgICAqIFRvIGhhbmRsZSBxdWVyeS1wYXJ0cyBwcm9wZXJseSwgd2UgbXVzdCBmaW5kIGl0IGFuZCByZW1vdmUgaXQgZHVyaW5nIHRoZQogICAgKiBkb3Rkb3Qtb3BlcmF0aW9uIGFuZCB0aGVuIGFwcGVuZCBpdCBhZ2FpbiBhdCB0aGUgZW5kIHRvIHRoZSBvdXRwdXQKZGlmZiAtLWdpdCBhL2xpYi9kb3Rkb3QuaCBiL2xpYi9kb3Rkb3QuaAppbmRleCBjZDU3ODIyLi5mYWM4ZTZmIDEwMDY0NAotLS0gYS9saWIvZG90ZG90LmgKKysrIGIvbGliL2RvdGRvdC5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL2Vhc3kuYyBiL2xpYi9lYXN5LmMKaW5kZXggMzE2YWNiMS4uZWE3YWY1ZSAxMDA2NDQKLS0tIGEvbGliL2Vhc3kuYworKysgYi9saWIvZWFzeS5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNjQsNyArNjQsNiBAQAogI2luY2x1ZGUgImVhc3lpZi5oIgogI2luY2x1ZGUgInNlbGVjdC5oIgogI2luY2x1ZGUgInNlbmRmLmgiIC8qIGZvciBmYWlsZiBmdW5jdGlvbiBwcm90b3R5cGUgKi8KLSNpbmNsdWRlICJjdXJsX250bG0uaCIKICNpbmNsdWRlICJjb25uZWN0LmgiIC8qIGZvciBDdXJsX2dldGNvbm5lY3RpbmZvICovCiAjaW5jbHVkZSAic2xpc3QuaCIKICNpbmNsdWRlICJhbWlnYW9zLmgiCkBAIC03NCwxMiArNzMsMTMgQEAKICNpbmNsdWRlICJtdWx0aWlmLmgiCiAjaW5jbHVkZSAic2lncGlwZS5oIgogI2luY2x1ZGUgInNzaC5oIgorLyogVGhlIGxhc3QgMyAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmUgaW4gdGhpcyBvcmRlciAqLwogI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCi0KLS8qIFRoZSBsYXN0ICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZTogKi8KICNpbmNsdWRlICJjdXJsX21lbW9yeS5oIgogI2luY2x1ZGUgIm1lbWRlYnVnLmgiCiAKK3ZvaWQgQ3VybF92ZXJzaW9uX2luaXQodm9pZCk7CisKIC8qIHdpbjMyX2NsZWFudXAoKSBpcyBmb3Igd2luMzIgc29ja2V0IGNsZWFudXAgZnVuY3Rpb25hbGl0eSwgdGhlIG9wcG9zaXRlCiAgICBvZiB3aW4zMl9pbml0KCkgKi8KIHN0YXRpYyB2b2lkIHdpbjMyX2NsZWFudXAodm9pZCkKQEAgLTEyMCw4ICsxMjAsOCBAQAogICAvKiB3VmVyc2lvblJlcXVlc3RlZCBpbiB3VmVyc2lvbi4gd0hpZ2hWZXJzaW9uIGNvbnRhaW5zIHRoZSAqLwogICAvKiBoaWdoZXN0IHN1cHBvcnRlZCB2ZXJzaW9uLiAqLwogCi0gIGlmKExPQllURSggd3NhRGF0YS53VmVyc2lvbiApICE9IExPQllURSh3VmVyc2lvblJlcXVlc3RlZCkgfHwKLSAgICAgSElCWVRFKCB3c2FEYXRhLndWZXJzaW9uICkgIT0gSElCWVRFKHdWZXJzaW9uUmVxdWVzdGVkKSApIHsKKyAgaWYoTE9CWVRFKHdzYURhdGEud1ZlcnNpb24pICE9IExPQllURSh3VmVyc2lvblJlcXVlc3RlZCkgfHwKKyAgICAgSElCWVRFKHdzYURhdGEud1ZlcnNpb24pICE9IEhJQllURSh3VmVyc2lvblJlcXVlc3RlZCkgKSB7CiAgICAgLyogVGVsbCB0aGUgdXNlciB0aGF0IHdlIGNvdWxkbid0IGZpbmQgYSB1c2VhYmxlICovCiAKICAgICAvKiB3aW5zb2NrLmRsbC4gKi8KQEAgLTIyMCwyMCArMjIwLDIyIEBACiAgKiBjdXJsX2dsb2JhbF9pbml0KCkgZ2xvYmFsbHkgaW5pdGlhbGl6ZXMgY1VSTCBnaXZlbiBhIGJpdHdpc2Ugc2V0IG9mIHRoZQogICogZGlmZmVyZW50IGZlYXR1cmVzIG9mIHdoYXQgdG8gaW5pdGlhbGl6ZS4KICAqLwotQ1VSTGNvZGUgY3VybF9nbG9iYWxfaW5pdChsb25nIGZsYWdzKQorc3RhdGljIENVUkxjb2RlIGdsb2JhbF9pbml0KGxvbmcgZmxhZ3MsIGJvb2wgbWVtb3J5ZnVuY3MpCiB7CiAgIGlmKGluaXRpYWxpemVkKyspCiAgICAgcmV0dXJuIENVUkxFX09LOwogCi0gIC8qIFNldHVwIHRoZSBkZWZhdWx0IG1lbW9yeSBmdW5jdGlvbnMgaGVyZSAoYWdhaW4pICovCi0gIEN1cmxfY21hbGxvYyA9IChjdXJsX21hbGxvY19jYWxsYmFjayltYWxsb2M7Ci0gIEN1cmxfY2ZyZWUgPSAoY3VybF9mcmVlX2NhbGxiYWNrKWZyZWU7Ci0gIEN1cmxfY3JlYWxsb2MgPSAoY3VybF9yZWFsbG9jX2NhbGxiYWNrKXJlYWxsb2M7Ci0gIEN1cmxfY3N0cmR1cCA9IChjdXJsX3N0cmR1cF9jYWxsYmFjaylzeXN0ZW1fc3RyZHVwOwotICBDdXJsX2NjYWxsb2MgPSAoY3VybF9jYWxsb2NfY2FsbGJhY2spY2FsbG9jOworICBpZihtZW1vcnlmdW5jcykgeworICAgIC8qIFNldHVwIHRoZSBkZWZhdWx0IG1lbW9yeSBmdW5jdGlvbnMgaGVyZSAoYWdhaW4pICovCisgICAgQ3VybF9jbWFsbG9jID0gKGN1cmxfbWFsbG9jX2NhbGxiYWNrKW1hbGxvYzsKKyAgICBDdXJsX2NmcmVlID0gKGN1cmxfZnJlZV9jYWxsYmFjaylmcmVlOworICAgIEN1cmxfY3JlYWxsb2MgPSAoY3VybF9yZWFsbG9jX2NhbGxiYWNrKXJlYWxsb2M7CisgICAgQ3VybF9jc3RyZHVwID0gKGN1cmxfc3RyZHVwX2NhbGxiYWNrKXN5c3RlbV9zdHJkdXA7CisgICAgQ3VybF9jY2FsbG9jID0gKGN1cmxfY2FsbG9jX2NhbGxiYWNrKWNhbGxvYzsKICNpZiBkZWZpbmVkKFdJTjMyKSAmJiBkZWZpbmVkKFVOSUNPREUpCi0gIEN1cmxfY3djc2R1cCA9IChjdXJsX3djc2R1cF9jYWxsYmFjaylfd2NzZHVwOworICAgIEN1cmxfY3djc2R1cCA9IChjdXJsX3djc2R1cF9jYWxsYmFjaylfd2NzZHVwOwogI2VuZGlmCisgIH0KIAogICBpZihmbGFncyAmIENVUkxfR0xPQkFMX1NTTCkKICAgICBpZighQ3VybF9zc2xfaW5pdCgpKSB7CkBAIC0yNzksMTEgKzI4MSwyMyBAQAogICBpZihmbGFncyAmIENVUkxfR0xPQkFMX0FDS19FSU5UUikKICAgICBDdXJsX2Fja19laW50ciA9IDE7CiAKLSAgaW5pdF9mbGFncyAgPSBmbGFnczsKKyAgaW5pdF9mbGFncyA9IGZsYWdzOworCisgIEN1cmxfdmVyc2lvbl9pbml0KCk7CiAKICAgcmV0dXJuIENVUkxFX09LOwogfQogCisKKy8qKgorICogY3VybF9nbG9iYWxfaW5pdCgpIGdsb2JhbGx5IGluaXRpYWxpemVzIGNVUkwgZ2l2ZW4gYSBiaXR3aXNlIHNldCBvZiB0aGUKKyAqIGRpZmZlcmVudCBmZWF0dXJlcyBvZiB3aGF0IHRvIGluaXRpYWxpemUuCisgKi8KK0NVUkxjb2RlIGN1cmxfZ2xvYmFsX2luaXQobG9uZyBmbGFncykKK3sKKyAgcmV0dXJuIGdsb2JhbF9pbml0KGZsYWdzLCBUUlVFKTsKK30KKwogLyoKICAqIGN1cmxfZ2xvYmFsX2luaXRfbWVtKCkgZ2xvYmFsbHkgaW5pdGlhbGl6ZXMgY1VSTCBhbmQgYWxzbyByZWdpc3RlcnMgdGhlCiAgKiB1c2VyIHByb3ZpZGVkIGNhbGxiYWNrIHJvdXRpbmVzLgpAQCAtMjkyLDggKzMwNiw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJsX2ZyZWVfY2FsbGJhY2sgZiwgY3VybF9yZWFsbG9jX2NhbGxiYWNrIHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJsX3N0cmR1cF9jYWxsYmFjayBzLCBjdXJsX2NhbGxvY19jYWxsYmFjayBjKQogewotICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKLQogICAvKiBJbnZhbGlkIGlucHV0LCByZXR1cm4gaW1tZWRpYXRlbHkgKi8KICAgaWYoIW0gfHwgIWYgfHwgIXIgfHwgIXMgfHwgIWMpCiAgICAgcmV0dXJuIENVUkxFX0ZBSUxFRF9JTklUOwpAQCAtMzA2LDE3ICszMTgsMTYgQEAKICAgICByZXR1cm4gQ1VSTEVfT0s7CiAgIH0KIAotICAvKiBDYWxsIHRoZSBhY3R1YWwgaW5pdCBmdW5jdGlvbiBmaXJzdCAqLwotICByZXN1bHQgPSBjdXJsX2dsb2JhbF9pbml0KGZsYWdzKTsKLSAgaWYoIXJlc3VsdCkgewotICAgIEN1cmxfY21hbGxvYyA9IG07Ci0gICAgQ3VybF9jZnJlZSA9IGY7Ci0gICAgQ3VybF9jc3RyZHVwID0gczsKLSAgICBDdXJsX2NyZWFsbG9jID0gcjsKLSAgICBDdXJsX2NjYWxsb2MgPSBjOwotICB9CisgIC8qIHNldCBtZW1vcnkgZnVuY3Rpb25zIGJlZm9yZSBnbG9iYWxfaW5pdCgpIGluIGNhc2UgaXQgd2FudHMgbWVtb3J5CisgICAgIGZ1bmN0aW9ucyAqLworICBDdXJsX2NtYWxsb2MgPSBtOworICBDdXJsX2NmcmVlID0gZjsKKyAgQ3VybF9jc3RyZHVwID0gczsKKyAgQ3VybF9jcmVhbGxvYyA9IHI7CisgIEN1cmxfY2NhbGxvYyA9IGM7CiAKLSAgcmV0dXJuIHJlc3VsdDsKKyAgLyogQ2FsbCB0aGUgYWN0dWFsIGluaXQgZnVuY3Rpb24sIGJ1dCB3aXRob3V0IHNldHRpbmcgKi8KKyAgcmV0dXJuIGdsb2JhbF9pbml0KGZsYWdzLCBGQUxTRSk7CiB9CiAKIC8qKgpAQCAtNTMyLDE0ICs1NDMsMTggQEAKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICBtID0gbWFsbG9jKHNpemVvZihzdHJ1Y3Qgc29ja2V0bW9uaXRvcikpOwotICAgICAgbS0+bmV4dCA9IGV2LT5saXN0OwotICAgICAgbS0+c29ja2V0LmZkID0gczsKLSAgICAgIG0tPnNvY2tldC5ldmVudHMgPSBzb2NrZXRjYjJwb2xsKHdoYXQpOwotICAgICAgbS0+c29ja2V0LnJldmVudHMgPSAwOwotICAgICAgZXYtPmxpc3QgPSBtOwotICAgICAgaW5mb2YoZWFzeSwgInNvY2tldCBjYjogc29ja2V0ICVkIEFEREVEIGFzICVzJXNcbiIsIHMsCi0gICAgICAgICAgICB3aGF0JkNVUkxfUE9MTF9JTj8iSU4iOiIiLAotICAgICAgICAgICAgd2hhdCZDVVJMX1BPTExfT1VUPyJPVVQiOiIiKTsKKyAgICAgIGlmKG0pIHsKKyAgICAgICAgbS0+bmV4dCA9IGV2LT5saXN0OworICAgICAgICBtLT5zb2NrZXQuZmQgPSBzOworICAgICAgICBtLT5zb2NrZXQuZXZlbnRzID0gc29ja2V0Y2IycG9sbCh3aGF0KTsKKyAgICAgICAgbS0+c29ja2V0LnJldmVudHMgPSAwOworICAgICAgICBldi0+bGlzdCA9IG07CisgICAgICAgIGluZm9mKGVhc3ksICJzb2NrZXQgY2I6IHNvY2tldCAlZCBBRERFRCBhcyAlcyVzXG4iLCBzLAorICAgICAgICAgICAgICB3aGF0JkNVUkxfUE9MTF9JTj8iSU4iOiIiLAorICAgICAgICAgICAgICB3aGF0JkNVUkxfUE9MTF9PVVQ/Ik9VVCI6IiIpOworICAgICAgfQorICAgICAgZWxzZQorICAgICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKICAgICB9CiAgIH0KIApAQCAtNjA5LDcgKzYyNCw3IEBACiAgICAgaWYoMCA9PSBwb2xscmMpIHsKICAgICAgIC8qIHRpbWVvdXQhICovCiAgICAgICBldi0+bXMgPSAwOwotICAgICAgLyogZnByaW50ZihzdGRlcnIsICJjYWxsIGN1cmxfbXVsdGlfc29ja2V0X2FjdGlvbiggVElNRU9VVCApXG4iKTsgKi8KKyAgICAgIC8qIGZwcmludGYoc3RkZXJyLCAiY2FsbCBjdXJsX211bHRpX3NvY2tldF9hY3Rpb24oVElNRU9VVClcbiIpOyAqLwogICAgICAgbWNvZGUgPSBjdXJsX211bHRpX3NvY2tldF9hY3Rpb24obXVsdGksIENVUkxfU09DS0VUX1RJTUVPVVQsIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXYtPnJ1bm5pbmdfaGFuZGxlcyk7CiAgICAgfQpAQCAtNjE5LDcgKzYzNCw3IEBACiAgICAgICAgIGlmKGZkc1tpXS5yZXZlbnRzKSB7CiAgICAgICAgICAgLyogc29ja2V0IGFjdGl2aXR5LCB0ZWxsIGxpYmN1cmwgKi8KICAgICAgICAgICBpbnQgYWN0ID0gcG9sbDJjc2VsZWN0KGZkc1tpXS5yZXZlbnRzKTsgLyogY29udmVydCAqLwotICAgICAgICAgIGluZm9mKG11bHRpLT5lYXN5cCwgImNhbGwgY3VybF9tdWx0aV9zb2NrZXRfYWN0aW9uKCBzb2NrZXQgJWQgKVxuIiwKKyAgICAgICAgICBpbmZvZihtdWx0aS0+ZWFzeXAsICJjYWxsIGN1cmxfbXVsdGlfc29ja2V0X2FjdGlvbihzb2NrZXQgJWQpXG4iLAogICAgICAgICAgICAgICAgIGZkc1tpXS5mZCk7CiAgICAgICAgICAgbWNvZGUgPSBjdXJsX211bHRpX3NvY2tldF9hY3Rpb24obXVsdGksIGZkc1tpXS5mZCwgYWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZldi0+cnVubmluZ19oYW5kbGVzKTsKQEAgLTY4MSwyNiArNjk2LDIyIEBACiAKICAgd2hpbGUoIWRvbmUgJiYgIW1jb2RlKSB7CiAgICAgaW50IHN0aWxsX3J1bm5pbmcgPSAwOwotICAgIGludCByZXQ7CisgICAgaW50IHJjOwogCiAgICAgYmVmb3JlID0gY3VybHhfdHZub3coKTsKLSAgICBtY29kZSA9IGN1cmxfbXVsdGlfd2FpdChtdWx0aSwgTlVMTCwgMCwgMTAwMCwgJnJldCk7CisgICAgbWNvZGUgPSBjdXJsX211bHRpX3dhaXQobXVsdGksIE5VTEwsIDAsIDEwMDAsICZyYyk7CiAKLSAgICBpZihtY29kZSA9PSBDVVJMTV9PSykgewotICAgICAgaWYocmV0ID09IC0xKSB7Ci0gICAgICAgIC8qIHBvbGwoKSBmYWlsZWQgbm90IG9uIEVJTlRSLCBpbmRpY2F0ZSBhIG5ldHdvcmsgcHJvYmxlbSAqLwotICAgICAgICByZXN1bHQgPSBDVVJMRV9SRUNWX0VSUk9SOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYocmV0ID09IDApIHsKKyAgICBpZighbWNvZGUpIHsKKyAgICAgIGlmKCFyYykgewogICAgICAgICBzdHJ1Y3QgdGltZXZhbCBhZnRlciA9IGN1cmx4X3R2bm93KCk7CisKICAgICAgICAgLyogSWYgaXQgcmV0dXJucyB3aXRob3V0IGFueSBmaWxlZGVzY3JpcHRvciBpbnN0YW50bHksIHdlIG5lZWQgdG8KICAgICAgICAgICAgYXZvaWQgYnVzeS1sb29waW5nIGR1cmluZyBwZXJpb2RzIHdoZXJlIGl0IGhhcyBub3RoaW5nIHBhcnRpY3VsYXIKICAgICAgICAgICAgdG8gd2FpdCBmb3IgKi8KICAgICAgICAgaWYoY3VybHhfdHZkaWZmKGFmdGVyLCBiZWZvcmUpIDw9IDEwKSB7CiAgICAgICAgICAgd2l0aG91dF9mZHMrKzsKICAgICAgICAgICBpZih3aXRob3V0X2ZkcyA+IDIpIHsKLSAgICAgICAgICAgIGludCBzbGVlcF9tcyA9IHdpdGhvdXRfZmRzIDwgMTAgPyAoMSA8PCAod2l0aG91dF9mZHMtMSkpOiAxMDAwOworICAgICAgICAgICAgaW50IHNsZWVwX21zID0gd2l0aG91dF9mZHMgPCAxMCA/ICgxIDw8ICh3aXRob3V0X2ZkcyAtIDEpKSA6IDEwMDA7CiAgICAgICAgICAgICBDdXJsX3dhaXRfbXMoc2xlZXBfbXMpOwogICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNzE2LDggKzcyNyw3IEBACiAgICAgfQogCiAgICAgLyogb25seSByZWFkICdzdGlsbF9ydW5uaW5nJyBpZiBjdXJsX211bHRpX3BlcmZvcm0oKSByZXR1cm4gT0sgKi8KLSAgICBpZigobWNvZGUgPT0gQ1VSTE1fT0spICYmICFzdGlsbF9ydW5uaW5nKSB7Ci0gICAgICBpbnQgcmM7CisgICAgaWYoIW1jb2RlICYmICFzdGlsbF9ydW5uaW5nKSB7CiAgICAgICBDVVJMTXNnICptc2cgPSBjdXJsX211bHRpX2luZm9fcmVhZChtdWx0aSwgJnJjKTsKICAgICAgIGlmKG1zZykgewogICAgICAgICByZXN1bHQgPSBtc2ctPmRhdGEucmVzdWx0OwpAQCAtNzI4LDEwICs3MzgsMTAgQEAKIAogICAvKiBNYWtlIHN1cmUgdG8gcmV0dXJuIHNvbWUga2luZCBvZiBlcnJvciBpZiB0aGVyZSB3YXMgYSBtdWx0aSBwcm9ibGVtICovCiAgIGlmKG1jb2RlKSB7Ci0gICAgcmV0dXJuIChtY29kZSA9PSBDVVJMTV9PVVRfT0ZfTUVNT1JZKSA/IENVUkxFX09VVF9PRl9NRU1PUlkgOgotICAgICAgICAgICAgLyogVGhlIG90aGVyIG11bHRpIGVycm9ycyBzaG91bGQgbmV2ZXIgaGFwcGVuLCBzbyByZXR1cm4KLSAgICAgICAgICAgICAgIHNvbWV0aGluZyBzdWl0YWJseSBnZW5lcmljICovCi0gICAgICAgICAgICBDVVJMRV9CQURfRlVOQ1RJT05fQVJHVU1FTlQ7CisgICAgcmVzdWx0ID0gKG1jb2RlID09IENVUkxNX09VVF9PRl9NRU1PUlkpID8gQ1VSTEVfT1VUX09GX01FTU9SWSA6CisgICAgICAgICAgICAgIC8qIFRoZSBvdGhlciBtdWx0aSBlcnJvcnMgc2hvdWxkIG5ldmVyIGhhcHBlbiwgc28gcmV0dXJuCisgICAgICAgICAgICAgICAgIHNvbWV0aGluZyBzdWl0YWJseSBnZW5lcmljICovCisgICAgICAgICAgICAgIENVUkxFX0JBRF9GVU5DVElPTl9BUkdVTUVOVDsKICAgfQogCiAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9saWIvZWFzeWlmLmggYi9saWIvZWFzeWlmLmgKaW5kZXggMDQzZmY0My4uNjUzMzM0OSAxMDA2NDQKLS0tIGEvbGliL2Vhc3lpZi5oCisrKyBiL2xpYi9lYXN5aWYuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9lc2NhcGUuYyBiL2xpYi9lc2NhcGUuYwppbmRleCAyNGFiYjkzLi4yYzZhN2Y2IDEwMDY0NAotLS0gYS9saWIvZXNjYXBlLmMKKysrIGIvbGliL2VzY2FwZS5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzEsMTUgKzMxLDE0IEBACiAjaW5jbHVkZSAid2Fybmxlc3MuaCIKICNpbmNsdWRlICJub24tYXNjaWkuaCIKICNpbmNsdWRlICJlc2NhcGUuaCIKKy8qIFRoZSBsYXN0IDMgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlIGluIHRoaXMgb3JkZXIgKi8KICNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgotCi0vKiBUaGUgbGFzdCAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmU6ICovCiAjaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKICNpbmNsdWRlICJtZW1kZWJ1Zy5oIgogCiAvKiBQb3J0YWJsZSBjaGFyYWN0ZXIgY2hlY2sgKHJlbWVtYmVyIEVCQ0RJQykuIERvIG5vdCB1c2UgaXNhbG51bSgpIGJlY2F1c2UKICAgIGl0cyBiZWhhdmlvciBpcyBhbHRlcmVkIGJ5IHRoZSBjdXJyZW50IGxvY2FsZS4KLSAgIFNlZSBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tMi4zCisgICBTZWUgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi0yLjMKICovCiBzdGF0aWMgYm9vbCBDdXJsX2lzdW5yZXNlcnZlZCh1bnNpZ25lZCBjaGFyIGluKQogewpAQCAtMTA1LDcgKzEwNCw3IEBACiAgICAgICAgIGFsbG9jICo9IDI7CiAgICAgICAgIHRlc3RpbmdfcHRyID0gcmVhbGxvYyhucywgYWxsb2MpOwogICAgICAgICBpZighdGVzdGluZ19wdHIpIHsKLSAgICAgICAgICBmcmVlKCBucyApOworICAgICAgICAgIGZyZWUobnMpOwogICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewpkaWZmIC0tZ2l0IGEvbGliL2VzY2FwZS5oIGIvbGliL2VzY2FwZS5oCmluZGV4IDczMWIxMzYuLmE2ZTI5NjcgMTAwNjQ0Ci0tLSBhL2xpYi9lc2NhcGUuaAorKysgYi9saWIvZXNjYXBlLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvZmlsZS5jIGIvbGliL2ZpbGUuYwppbmRleCAxNzViMTA3Li4xZWViODRkIDEwMDY0NAotLS0gYS9saWIvZmlsZS5jCisrKyBiL2xpYi9maWxlLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC02MSw5ICs2MSw4IEBACiAjaW5jbHVkZSAidXJsLmgiCiAjaW5jbHVkZSAicGFyc2VkYXRlLmgiIC8qIGZvciB0aGUgd2VlayBkYXkgYW5kIG1vbnRoIG5hbWVzICovCiAjaW5jbHVkZSAid2Fybmxlc3MuaCIKKy8qIFRoZSBsYXN0IDMgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlIGluIHRoaXMgb3JkZXIgKi8KICNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgotCi0vKiBUaGUgbGFzdCAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmU6ICovCiAjaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKICNpbmNsdWRlICJtZW1kZWJ1Zy5oIgogCkBAIC0zNjgsNyArMzY3LDcgQEAKIAogICAgIC8qc2tpcCBieXRlcyBiZWZvcmUgcmVzdW1lIHBvaW50Ki8KICAgICBpZihkYXRhLT5zdGF0ZS5yZXN1bWVfZnJvbSkgewotICAgICAgaWYoKGN1cmxfb2ZmX3QpbnJlYWQgPD0gZGF0YS0+c3RhdGUucmVzdW1lX2Zyb20gKSB7CisgICAgICBpZigoY3VybF9vZmZfdClucmVhZCA8PSBkYXRhLT5zdGF0ZS5yZXN1bWVfZnJvbSkgewogICAgICAgICBkYXRhLT5zdGF0ZS5yZXN1bWVfZnJvbSAtPSBucmVhZDsKICAgICAgICAgbnJlYWQgPSAwOwogICAgICAgICBidWYyID0gYnVmOwpAQCAtNDI2LDYgKzQyNSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpbmRvd3MgdmVyc2lvbiB0byBoYXZlIGEgZGlmZmVyZW50IHN0cnVjdCB3aXRob3V0CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhdmluZyB0byByZWRlZmluZSB0aGUgc2ltcGxlIHdvcmQgJ3N0YXQnICovCiAgIGN1cmxfb2ZmX3QgZXhwZWN0ZWRfc2l6ZT0wOworICBib29sIHNpemVfa25vd247CiAgIGJvb2wgZnN0YXRlZD1GQUxTRTsKICAgc3NpemVfdCBucmVhZDsKICAgc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEgPSBjb25uLT5kYXRhOwpAQCAtNDY4LDYgKzQ2OCw5IEBACiAgICAgIGluZm9ybWF0aW9uLiBXaGljaCBmb3IgRklMRSBjYW4ndCBiZSBtdWNoIG1vcmUgdGhhbiB0aGUgZmlsZSBzaXplIGFuZAogICAgICBkYXRlLiAqLwogICBpZihkYXRhLT5zZXQub3B0X25vX2JvZHkgJiYgZGF0YS0+c2V0LmluY2x1ZGVfaGVhZGVyICYmIGZzdGF0ZWQpIHsKKyAgICB0aW1lX3QgZmlsZXRpbWU7CisgICAgc3RydWN0IHRtIGJ1ZmZlcjsKKyAgICBjb25zdCBzdHJ1Y3QgdG0gKnRtID0gJmJ1ZmZlcjsKICAgICBzbnByaW50ZihidWYsIHNpemVvZihkYXRhLT5zdGF0ZS5idWZmZXIpLAogICAgICAgICAgICAgICJDb250ZW50LUxlbmd0aDogJSIgQ1VSTF9GT1JNQVRfQ1VSTF9PRkZfVCAiXHJcbiIsIGV4cGVjdGVkX3NpemUpOwogICAgIHJlc3VsdCA9IEN1cmxfY2xpZW50X3dyaXRlKGNvbm4sIENMSUVOVFdSSVRFX0JPVEgsIGJ1ZiwgMCk7CkBAIC00NzksMjkgKzQ4MiwyNCBAQAogICAgIGlmKHJlc3VsdCkKICAgICAgIHJldHVybiByZXN1bHQ7CiAKLSAgICBpZihmc3RhdGVkKSB7Ci0gICAgICB0aW1lX3QgZmlsZXRpbWUgPSAodGltZV90KXN0YXRidWYuc3RfbXRpbWU7Ci0gICAgICBzdHJ1Y3QgdG0gYnVmZmVyOwotICAgICAgY29uc3Qgc3RydWN0IHRtICp0bSA9ICZidWZmZXI7Ci0gICAgICByZXN1bHQgPSBDdXJsX2dtdGltZShmaWxldGltZSwgJmJ1ZmZlcik7Ci0gICAgICBpZihyZXN1bHQpCi0gICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgZmlsZXRpbWUgPSAodGltZV90KXN0YXRidWYuc3RfbXRpbWU7CisgICAgcmVzdWx0ID0gQ3VybF9nbXRpbWUoZmlsZXRpbWUsICZidWZmZXIpOworICAgIGlmKHJlc3VsdCkKKyAgICAgIHJldHVybiByZXN1bHQ7CiAKLSAgICAgIC8qIGZvcm1hdDogIlR1ZSwgMTUgTm92IDE5OTQgMTI6NDU6MjYgR01UIiAqLwotICAgICAgc25wcmludGYoYnVmLCBCVUZTSVpFLTEsCi0gICAgICAgICAgICAgICAiTGFzdC1Nb2RpZmllZDogJXMsICUwMmQgJXMgJTRkICUwMmQ6JTAyZDolMDJkIEdNVFxyXG4iLAotICAgICAgICAgICAgICAgQ3VybF93a2RheVt0bS0+dG1fd2RheT90bS0+dG1fd2RheS0xOjZdLAotICAgICAgICAgICAgICAgdG0tPnRtX21kYXksCi0gICAgICAgICAgICAgICBDdXJsX21vbnRoW3RtLT50bV9tb25dLAotICAgICAgICAgICAgICAgdG0tPnRtX3llYXIgKyAxOTAwLAotICAgICAgICAgICAgICAgdG0tPnRtX2hvdXIsCi0gICAgICAgICAgICAgICB0bS0+dG1fbWluLAotICAgICAgICAgICAgICAgdG0tPnRtX3NlYyk7Ci0gICAgICByZXN1bHQgPSBDdXJsX2NsaWVudF93cml0ZShjb25uLCBDTElFTlRXUklURV9CT1RILCBidWYsIDApOwotICAgIH0KLSAgICAvKiBpZiB3ZSBmc3RhdCgpZWQgdGhlIGZpbGUsIHNldCB0aGUgZmlsZSBzaXplIHRvIG1ha2UgaXQgYXZhaWxhYmxlIHBvc3QtCi0gICAgICAgdHJhbnNmZXIgKi8KLSAgICBpZihmc3RhdGVkKQorICAgIC8qIGZvcm1hdDogIlR1ZSwgMTUgTm92IDE5OTQgMTI6NDU6MjYgR01UIiAqLworICAgIHNucHJpbnRmKGJ1ZiwgQlVGU0laRS0xLAorICAgICAgICAgICAgICJMYXN0LU1vZGlmaWVkOiAlcywgJTAyZCAlcyAlNGQgJTAyZDolMDJkOiUwMmQgR01UXHJcbiIsCisgICAgICAgICAgICAgQ3VybF93a2RheVt0bS0+dG1fd2RheT90bS0+dG1fd2RheS0xOjZdLAorICAgICAgICAgICAgIHRtLT50bV9tZGF5LAorICAgICAgICAgICAgIEN1cmxfbW9udGhbdG0tPnRtX21vbl0sCisgICAgICAgICAgICAgdG0tPnRtX3llYXIgKyAxOTAwLAorICAgICAgICAgICAgIHRtLT50bV9ob3VyLAorICAgICAgICAgICAgIHRtLT50bV9taW4sCisgICAgICAgICAgICAgdG0tPnRtX3NlYyk7CisgICAgcmVzdWx0ID0gQ3VybF9jbGllbnRfd3JpdGUoY29ubiwgQ0xJRU5UV1JJVEVfQk9USCwgYnVmLCAwKTsKKyAgICBpZighcmVzdWx0KQorICAgICAgLyogc2V0IHRoZSBmaWxlIHNpemUgdG8gbWFrZSBpdCBhdmFpbGFibGUgcG9zdCB0cmFuc2ZlciAqLwogICAgICAgQ3VybF9wZ3JzU2V0RG93bmxvYWRTaXplKGRhdGEsIGV4cGVjdGVkX3NpemUpOwogICAgIHJldHVybiByZXN1bHQ7CiAgIH0KQEAgLTUzMSw4ICs1MjksMTAgQEAKICAgaWYoZGF0YS0+cmVxLm1heGRvd25sb2FkID4gMCkKICAgICBleHBlY3RlZF9zaXplID0gZGF0YS0+cmVxLm1heGRvd25sb2FkOwogCi0gIGlmKGZzdGF0ZWQgJiYgKGV4cGVjdGVkX3NpemUgPT0gMCkpCi0gICAgcmV0dXJuIENVUkxFX09LOworICBpZighZnN0YXRlZCB8fCAoZXhwZWN0ZWRfc2l6ZSA9PSAwKSkKKyAgICBzaXplX2tub3duID0gRkFMU0U7CisgIGVsc2UKKyAgICBzaXplX2tub3duID0gVFJVRTsKIAogICAvKiBUaGUgZm9sbG93aW5nIGlzIGEgc2hvcnRjdXQgaW1wbGVtZW50YXRpb24gb2YgZmlsZSByZWFkaW5nCiAgICAgIHRoaXMgaXMgYm90aCBtb3JlIGVmZmljaWVudCB0aGFuIHRoZSBmb3JtZXIgY2FsbCB0byBkb3dubG9hZCgpIGFuZApAQCAtNTUxLDIwICs1NTEsMjcgQEAKIAogICB3aGlsZSghcmVzdWx0KSB7CiAgICAgLyogRG9uJ3QgZmlsbCBhIHdob2xlIGJ1ZmZlciBpZiB3ZSB3YW50IGxlc3MgdGhhbiBhbGwgZGF0YSAqLwotICAgIHNpemVfdCBieXRlc3RvcmVhZCA9Ci0gICAgICAoZXhwZWN0ZWRfc2l6ZSA8IENVUkxfT0ZGX1RfQyhCVUZTSVpFKSAtIENVUkxfT0ZGX1RfQygxKSkgPwotICAgICAgY3VybHhfc290b3V6KGV4cGVjdGVkX3NpemUpIDogQlVGU0laRSAtIDE7CisgICAgc2l6ZV90IGJ5dGVzdG9yZWFkOworCisgICAgaWYoc2l6ZV9rbm93bikgeworICAgICAgYnl0ZXN0b3JlYWQgPQorICAgICAgICAoZXhwZWN0ZWRfc2l6ZSA8IENVUkxfT0ZGX1RfQyhCVUZTSVpFKSAtIENVUkxfT0ZGX1RfQygxKSkgPworICAgICAgICBjdXJseF9zb3RvdXooZXhwZWN0ZWRfc2l6ZSkgOiBCVUZTSVpFIC0gMTsKKyAgICB9CisgICAgZWxzZQorICAgICAgYnl0ZXN0b3JlYWQgPSBCVUZTSVpFLTE7CiAKICAgICBucmVhZCA9IHJlYWQoZmQsIGJ1ZiwgYnl0ZXN0b3JlYWQpOwogCiAgICAgaWYobnJlYWQgPiAwKQogICAgICAgYnVmW25yZWFkXSA9IDA7CiAKLSAgICBpZihucmVhZCA8PSAwIHx8IGV4cGVjdGVkX3NpemUgPT0gMCkKKyAgICBpZihucmVhZCA8PSAwIHx8IChzaXplX2tub3duICYmIChleHBlY3RlZF9zaXplID09IDApKSkKICAgICAgIGJyZWFrOwogCiAgICAgYnl0ZWNvdW50ICs9IG5yZWFkOwotICAgIGV4cGVjdGVkX3NpemUgLT0gbnJlYWQ7CisgICAgaWYoc2l6ZV9rbm93bikKKyAgICAgIGV4cGVjdGVkX3NpemUgLT0gbnJlYWQ7CiAKICAgICByZXN1bHQgPSBDdXJsX2NsaWVudF93cml0ZShjb25uLCBDTElFTlRXUklURV9CT0RZLCBidWYsIG5yZWFkKTsKICAgICBpZihyZXN1bHQpCmRpZmYgLS1naXQgYS9saWIvZmlsZS5oIGIvbGliL2ZpbGUuaAppbmRleCA5OTc0NzRiLi5jMTJhZTBlIDEwMDY0NAotLS0gYS9saWIvZmlsZS5oCisrKyBiL2xpYi9maWxlLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvZmlsZWluZm8uYyBiL2xpYi9maWxlaW5mby5jCmluZGV4IDA5MDQ5MzcuLjE0NGM2NWIgMTAwNjQ0Ci0tLSBhL2xpYi9maWxlaW5mby5jCisrKyBiL2xpYi9maWxlaW5mby5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9maWxlaW5mby5oIGIvbGliL2ZpbGVpbmZvLmgKaW5kZXggYjBlNWU1OS4uNTMyNGYxYSAxMDA2NDQKLS0tIGEvbGliL2ZpbGVpbmZvLmgKKysrIGIvbGliL2ZpbGVpbmZvLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvZmlyZWZveC1kYjJwZW0uc2ggYi9saWIvZmlyZWZveC1kYjJwZW0uc2gKaW5kZXggM2Y1ZmU3NS4uN2Q2OTFmZiAxMDA2NDQKLS0tIGEvbGliL2ZpcmVmb3gtZGIycGVtLnNoCisrKyBiL2xpYi9maXJlZm94LWRiMnBlbS5zaApAQCAtMTAsNyArMTAsNyBAQAogIyAqCiAjICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICMgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0jICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyMgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICMgKgogIyAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogIyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL2Zvcm1kYXRhLmMgYi9saWIvZm9ybWRhdGEuYwppbmRleCA5ZThjZTRlLi5hNzFmMDk5IDEwMDY0NAotLS0gYS9saWIvZm9ybWRhdGEuYworKysgYi9saWIvZm9ybWRhdGEuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTM2LDkgKzM2LDggQEAKICNpbmNsdWRlICJzdHJlcXVhbC5oIgogI2luY2x1ZGUgInNlbmRmLmgiCiAjaW5jbHVkZSAic3RyZHVwLmgiCisvKiBUaGUgbGFzdCAzICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZSBpbiB0aGlzIG9yZGVyICovCiAjaW5jbHVkZSAiY3VybF9wcmludGYuaCIKLQotLyogVGhlIGxhc3QgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlOiAqLwogI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCiAjaW5jbHVkZSAibWVtZGVidWcuaCIKIApAQCAtNTcsNiArNTYsMTQgQEAKICNkZWZpbmUgRk9STV9GSUxFX1NFUEFSQVRPUiAnLCcKICNkZWZpbmUgRk9STV9UWVBFX1NFUEFSQVRPUiAnOycKIAorI2RlZmluZSBIVFRQUE9TVF9QVFJOQU1FIENVUkxfSFRUUFBPU1RfUFRSTkFNRQorI2RlZmluZSBIVFRQUE9TVF9GSUxFTkFNRSBDVVJMX0hUVFBQT1NUX0ZJTEVOQU1FCisjZGVmaW5lIEhUVFBQT1NUX1BUUkNPTlRFTlRTIENVUkxfSFRUUFBPU1RfUFRSQ09OVEVOVFMKKyNkZWZpbmUgSFRUUFBPU1RfUkVBREZJTEUgQ1VSTF9IVFRQUE9TVF9SRUFERklMRQorI2RlZmluZSBIVFRQUE9TVF9QVFJCVUZGRVIgQ1VSTF9IVFRQUE9TVF9QVFJCVUZGRVIKKyNkZWZpbmUgSFRUUFBPU1RfQ0FMTEJBQ0sgQ1VSTF9IVFRQUE9TVF9DQUxMQkFDSworI2RlZmluZSBIVFRQUE9TVF9CVUZGRVIgQ1VSTF9IVFRQUE9TVF9CVUZGRVIKKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKICAqIEFkZEh0dHBQb3N0KCkKQEAgLTY5LDcgKzc2LDcgQEAKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiBzdGF0aWMgc3RydWN0IGN1cmxfaHR0cHBvc3QgKgogQWRkSHR0cFBvc3QoY2hhciAqbmFtZSwgc2l6ZV90IG5hbWVsZW5ndGgsCi0gICAgICAgICAgICBjaGFyICp2YWx1ZSwgc2l6ZV90IGNvbnRlbnRzbGVuZ3RoLAorICAgICAgICAgICAgY2hhciAqdmFsdWUsIGN1cmxfb2ZmX3QgY29udGVudHNsZW5ndGgsCiAgICAgICAgICAgICBjaGFyICpidWZmZXIsIHNpemVfdCBidWZmZXJsZW5ndGgsCiAgICAgICAgICAgICBjaGFyICpjb250ZW50dHlwZSwKICAgICAgICAgICAgIGxvbmcgZmxhZ3MsCkBAIC04NSwxNCArOTIsMTQgQEAKICAgICBwb3N0LT5uYW1lID0gbmFtZTsKICAgICBwb3N0LT5uYW1lbGVuZ3RoID0gKGxvbmcpKG5hbWU/KG5hbWVsZW5ndGg/bmFtZWxlbmd0aDpzdHJsZW4obmFtZSkpOjApOwogICAgIHBvc3QtPmNvbnRlbnRzID0gdmFsdWU7Ci0gICAgcG9zdC0+Y29udGVudHNsZW5ndGggPSAobG9uZyljb250ZW50c2xlbmd0aDsKKyAgICBwb3N0LT5jb250ZW50bGVuID0gY29udGVudHNsZW5ndGg7CiAgICAgcG9zdC0+YnVmZmVyID0gYnVmZmVyOwogICAgIHBvc3QtPmJ1ZmZlcmxlbmd0aCA9IChsb25nKWJ1ZmZlcmxlbmd0aDsKICAgICBwb3N0LT5jb250ZW50dHlwZSA9IGNvbnRlbnR0eXBlOwogICAgIHBvc3QtPmNvbnRlbnRoZWFkZXIgPSBjb250ZW50SGVhZGVyOwogICAgIHBvc3QtPnNob3dmaWxlbmFtZSA9IHNob3dmaWxlbmFtZTsKICAgICBwb3N0LT51c2VycCA9IHVzZXJwLAotICAgIHBvc3QtPmZsYWdzID0gZmxhZ3M7CisgICAgcG9zdC0+ZmxhZ3MgPSBmbGFncyB8IENVUkxfSFRUUFBPU1RfTEFSR0U7CiAgIH0KICAgZWxzZQogICAgIHJldHVybiBOVUxMOwpAQCAtMzcyLDExICszNzksMTQgQEAKICAgICAgIH0KICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1VSTEZPUk1fQ09OVEVOVFNMRU5HVEg6Ci0gICAgICBpZihjdXJyZW50X2Zvcm0tPmNvbnRlbnRzbGVuZ3RoKQotICAgICAgICByZXR1cm5fdmFsdWUgPSBDVVJMX0ZPUk1BRERfT1BUSU9OX1RXSUNFOwotICAgICAgZWxzZQotICAgICAgICBjdXJyZW50X2Zvcm0tPmNvbnRlbnRzbGVuZ3RoID0KLSAgICAgICAgICBhcnJheV9zdGF0ZT8oc2l6ZV90KWFycmF5X3ZhbHVlOihzaXplX3QpdmFfYXJnKHBhcmFtcywgbG9uZyk7CisgICAgICBjdXJyZW50X2Zvcm0tPmNvbnRlbnRzbGVuZ3RoID0KKyAgICAgICAgYXJyYXlfc3RhdGU/KHNpemVfdClhcnJheV92YWx1ZTooc2l6ZV90KXZhX2FyZyhwYXJhbXMsIGxvbmcpOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIENVUkxGT1JNX0NPTlRFTlRMRU46CisgICAgICBjdXJyZW50X2Zvcm0tPmZsYWdzIHw9IENVUkxfSFRUUFBPU1RfTEFSR0U7CisgICAgICBjdXJyZW50X2Zvcm0tPmNvbnRlbnRzbGVuZ3RoID0KKyAgICAgICAgYXJyYXlfc3RhdGU/KGN1cmxfb2ZmX3QpKHNpemVfdClhcnJheV92YWx1ZTp2YV9hcmcocGFyYW1zLCBjdXJsX29mZl90KTsKICAgICAgIGJyZWFrOwogCiAgICAgICAvKiBHZXQgY29udGVudHMgZnJvbSBhIGdpdmVuIGZpbGUgbmFtZSAqLwpAQCAtNTM4LDcgKzU0OCw3IEBACiAgICAgICAgIC8qIHRoaXMgImNhc3QgaW5jcmVhc2VzIHJlcXVpcmVkIGFsaWdubWVudCBvZiB0YXJnZXQgdHlwZSIgYnV0CiAgICAgICAgICAgIHdlIGNvbnNpZGVyIGl0IE9LIGFueXdheSAqLwogICAgICAgICBzdHJ1Y3QgY3VybF9zbGlzdCogbGlzdCA9IGFycmF5X3N0YXRlPwotICAgICAgICAgIChzdHJ1Y3QgY3VybF9zbGlzdCopYXJyYXlfdmFsdWU6CisgICAgICAgICAgKHN0cnVjdCBjdXJsX3NsaXN0Kikodm9pZCopYXJyYXlfdmFsdWU6CiAgICAgICAgICAgdmFfYXJnKHBhcmFtcywgc3RydWN0IGN1cmxfc2xpc3QqKTsKIAogICAgICAgICBpZihjdXJyZW50X2Zvcm0tPmNvbnRlbnRoZWFkZXIpCkBAIC02MjEsNyArNjMxLDcgQEAKICAgICAgIGVsc2UgewogICAgICAgICBpZigoKGZvcm0tPmZsYWdzICYgSFRUUFBPU1RfRklMRU5BTUUpIHx8CiAgICAgICAgICAgICAoZm9ybS0+ZmxhZ3MgJiBIVFRQUE9TVF9CVUZGRVIpKSAmJgotICAgICAgICAgICAhZm9ybS0+Y29udGVudHR5cGUgKSB7CisgICAgICAgICAgICFmb3JtLT5jb250ZW50dHlwZSkgewogICAgICAgICAgIGNoYXIgKmYgPSBmb3JtLT5mbGFncyAmIEhUVFBQT1NUX0JVRkZFUj8KICAgICAgICAgICAgIGZvcm0tPnNob3dmaWxlbmFtZSA6IGZvcm0tPnZhbHVlOwogCkBAIC02NTMsOSArNjYzLDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSFRUUFBPU1RfUFRSQ09OVEVOVFMgfCBIVFRQUE9TVF9QVFJCVUZGRVIgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhUVFBQT1NUX0NBTExCQUNLKSkgJiYgZm9ybS0+dmFsdWUpIHsKICAgICAgICAgICAvKiBjb3B5IHZhbHVlICh3aXRob3V0IHN0cmR1cDsgcG9zc2libHkgY29udGFpbnMgbnVsbCBjaGFyYWN0ZXJzKSAqLwotICAgICAgICAgIGZvcm0tPnZhbHVlID0gQ3VybF9tZW1kdXAoZm9ybS0+dmFsdWUsIGZvcm0tPmNvbnRlbnRzbGVuZ3RoPwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybS0+Y29udGVudHNsZW5ndGg6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJsZW4oZm9ybS0+dmFsdWUpKzEpOworICAgICAgICAgIHNpemVfdCBjbGVuICA9IChzaXplX3QpIGZvcm0tPmNvbnRlbnRzbGVuZ3RoOworICAgICAgICAgIGlmKCFjbGVuKQorICAgICAgICAgICAgY2xlbiA9IHN0cmxlbihmb3JtLT52YWx1ZSkrMTsKKworICAgICAgICAgIGZvcm0tPnZhbHVlID0gQ3VybF9tZW1kdXAoZm9ybS0+dmFsdWUsIGNsZW4pOworCiAgICAgICAgICAgaWYoIWZvcm0tPnZhbHVlKSB7CiAgICAgICAgICAgICByZXR1cm5fdmFsdWUgPSBDVVJMX0ZPUk1BRERfTUVNT1JZOwogICAgICAgICAgICAgYnJlYWs7CkBAIC03NTYsNyArNzY5LDcgQEAKICAgaW50IHJldF9zdGF0OwogICBGSUxFICogZmlsZTsKIAotICBmaWxlID0gZm9wZW4obmFtZSwgInIiKTsgLyogVk1TICovCisgIGZpbGUgPSBmb3BlbihuYW1lLCBGT1BFTl9SRUFEVEVYVCk7IC8qIFZNUyAqLwogICBpZihmaWxlID09IE5VTEwpCiAgICAgcmV0dXJuIDA7CiAKQEAgLTgwOCwxMCArODIxLDE2IEBACiBzdGF0aWMgQ1VSTGNvZGUgQWRkRm9ybURhdGEoc3RydWN0IEZvcm1EYXRhICoqZm9ybXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBmb3JtdHlwZSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmxpbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJsX29mZl90IGxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJsX29mZl90ICpzaXplKQogewotICBzdHJ1Y3QgRm9ybURhdGEgKm5ld2Zvcm0gPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBGb3JtRGF0YSkpOworICBzdHJ1Y3QgRm9ybURhdGEgKm5ld2Zvcm07CisgIGNoYXIgKmFsbG9jMiA9IE5VTEw7CisgIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOworICBpZihsZW5ndGggPCAwIHx8IChzaXplICYmICpzaXplIDwgMCkpCisgICAgcmV0dXJuIENVUkxFX0JBRF9GVU5DVElPTl9BUkdVTUVOVDsKKworICBuZXdmb3JtID0gbWFsbG9jKHNpemVvZihzdHJ1Y3QgRm9ybURhdGEpKTsKICAgaWYoIW5ld2Zvcm0pCiAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CiAgIG5ld2Zvcm0tPm5leHQgPSBOVUxMOwpAQCAtODIwLDE1ICs4MzksMjIgQEAKICAgICAvKiB3ZSBtYWtlIGl0IGVhc2llciBmb3IgcGxhaW4gc3RyaW5nczogKi8KICAgICBpZighbGVuZ3RoKQogICAgICAgbGVuZ3RoID0gc3RybGVuKChjaGFyICopbGluZSk7Ci0KLSAgICBuZXdmb3JtLT5saW5lID0gbWFsbG9jKGxlbmd0aCsxKTsKLSAgICBpZighbmV3Zm9ybS0+bGluZSkgewotICAgICAgZnJlZShuZXdmb3JtKTsKLSAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworI2lmIChTSVpFT0ZfU0laRV9UIDwgQ1VSTF9TSVpFT0ZfQ1VSTF9PRkZfVCkKKyAgICBlbHNlIGlmKGxlbmd0aCA+PSAoY3VybF9vZmZfdCkoc2l6ZV90KS0xKSB7CisgICAgICByZXN1bHQgPSBDVVJMRV9CQURfRlVOQ1RJT05fQVJHVU1FTlQ7CisgICAgICBnb3RvIGVycm9yOwogICAgIH0KLSAgICBtZW1jcHkobmV3Zm9ybS0+bGluZSwgbGluZSwgbGVuZ3RoKTsKLSAgICBuZXdmb3JtLT5sZW5ndGggPSBsZW5ndGg7Ci0gICAgbmV3Zm9ybS0+bGluZVtsZW5ndGhdPTA7IC8qIHplcm8gdGVybWluYXRlIGZvciBlYXNpZXIgZGVidWdnaW5nICovCisjZW5kaWYKKworICAgIG5ld2Zvcm0tPmxpbmUgPSBtYWxsb2MoKHNpemVfdClsZW5ndGgrMSk7CisgICAgaWYoIW5ld2Zvcm0tPmxpbmUpIHsKKyAgICAgIHJlc3VsdCA9IENVUkxFX09VVF9PRl9NRU1PUlk7CisgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBhbGxvYzIgPSBuZXdmb3JtLT5saW5lOworICAgIG1lbWNweShuZXdmb3JtLT5saW5lLCBsaW5lLCAoc2l6ZV90KWxlbmd0aCk7CisgICAgbmV3Zm9ybS0+bGVuZ3RoID0gKHNpemVfdClsZW5ndGg7CisgICAgbmV3Zm9ybS0+bGluZVsoc2l6ZV90KWxlbmd0aF09MDsgLyogemVybyB0ZXJtaW5hdGUgZm9yIGVhc2llciBkZWJ1Z2dpbmcgKi8KICAgfQogICBlbHNlCiAgICAgLyogRm9yIGNhbGxiYWNrcyBhbmQgZmlsZXMgd2UgZG9uJ3QgaGF2ZSBhbnkgYWN0dWFsIGRhdGEgc28gd2UganVzdCBrZWVwIGEKQEAgLTg1NiwxMiArODgyLDIwIEBACiAgICAgICAgIHN0cnVjdF9zdGF0IGZpbGU7CiAgICAgICAgIGlmKCFzdGF0KG5ld2Zvcm0tPmxpbmUsICZmaWxlKSAmJiAhU19JU0RJUihmaWxlLnN0X21vZGUpKQogICAgICAgICAgICpzaXplICs9IGZpbGVzaXplKG5ld2Zvcm0tPmxpbmUsIGZpbGUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgcmV0dXJuIENVUkxFX0JBRF9GVU5DVElPTl9BUkdVTUVOVDsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgcmVzdWx0ID0gQ1VSTEVfQkFEX0ZVTkNUSU9OX0FSR1VNRU5UOworICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KICAgICAgIH0KICAgICB9CiAgIH0KICAgcmV0dXJuIENVUkxFX09LOworICBlcnJvcjoKKyAgaWYobmV3Zm9ybSkKKyAgICBmcmVlKG5ld2Zvcm0pOworICBpZihhbGxvYzIpCisgICAgZnJlZShhbGxvYzIpOworICByZXR1cm4gcmVzdWx0OwogfQogCiAvKgpAQCAtMTIzOCw3ICsxMjcyLDcgQEAKICAgICAgIGN1ckxpc3QgPSBmaWxlLT5jb250ZW50aGVhZGVyOwogICAgICAgd2hpbGUoY3VyTGlzdCkgewogICAgICAgICAvKiBQcm9jZXNzIHRoZSBhZGRpdGlvbmFsIGhlYWRlcnMgc3BlY2lmaWVkIGZvciB0aGlzIGZvcm0gKi8KLSAgICAgICAgcmVzdWx0ID0gQWRkRm9ybURhdGFmKCAmZm9ybSwgJnNpemUsICJcclxuJXMiLCBjdXJMaXN0LT5kYXRhICk7CisgICAgICAgIHJlc3VsdCA9IEFkZEZvcm1EYXRhZigmZm9ybSwgJnNpemUsICJcclxuJXMiLCBjdXJMaXN0LT5kYXRhKTsKICAgICAgICAgaWYocmVzdWx0KQogICAgICAgICAgIGJyZWFrOwogICAgICAgICBjdXJMaXN0ID0gY3VyTGlzdC0+bmV4dDsKQEAgLTEyOTgsMTUgKzEzMzIsMTYgQEAKICAgICAgICAgcmVzdWx0ID0gQWRkRm9ybURhdGEoJmZvcm0sIEZPUk1fQ09OVEVOVCwgcG9zdC0+YnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3N0LT5idWZmZXJsZW5ndGgsICZzaXplKTsKICAgICAgIGVsc2UgaWYocG9zdC0+ZmxhZ3MgJiBIVFRQUE9TVF9DQUxMQkFDSykKLSAgICAgICAgLyogdGhlIGNvbnRlbnRzIHNob3VsZCBiZSByZWFkIHdpdGggdGhlIGNhbGxiYWNrIGFuZCB0aGUgc2l6ZQotICAgICAgICAgICBpcyBzZXQgd2l0aCB0aGUgY29udGVudHNsZW5ndGggKi8KKyAgICAgICAgLyogdGhlIGNvbnRlbnRzIHNob3VsZCBiZSByZWFkIHdpdGggdGhlIGNhbGxiYWNrIGFuZCB0aGUgc2l6ZSBpcyBzZXQKKyAgICAgICAgICAgd2l0aCB0aGUgY29udGVudHNsZW5ndGggKi8KICAgICAgICAgcmVzdWx0ID0gQWRkRm9ybURhdGEoJmZvcm0sIEZPUk1fQ0FMTEJBQ0ssIHBvc3QtPnVzZXJwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3N0LT5jb250ZW50c2xlbmd0aCwgJnNpemUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3N0LT5mbGFncyZDVVJMX0hUVFBQT1NUX0xBUkdFPworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3N0LT5jb250ZW50bGVuOnBvc3QtPmNvbnRlbnRzbGVuZ3RoLCAmc2l6ZSk7CiAgICAgICBlbHNlCiAgICAgICAgIC8qIGluY2x1ZGUgdGhlIGNvbnRlbnRzIHdlIGdvdCAqLwogICAgICAgICByZXN1bHQgPSBBZGRGb3JtRGF0YSgmZm9ybSwgRk9STV9DT05URU5ULCBwb3N0LT5jb250ZW50cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zdC0+Y29udGVudHNsZW5ndGgsICZzaXplKTsKLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3N0LT5mbGFncyZDVVJMX0hUVFBQT1NUX0xBUkdFPworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3N0LT5jb250ZW50bGVuOnBvc3QtPmNvbnRlbnRzbGVuZ3RoLCAmc2l6ZSk7CiAgICAgICBmaWxlID0gZmlsZS0+bW9yZTsKICAgICB9IHdoaWxlKGZpbGUgJiYgIXJlc3VsdCk7IC8qIGZvciBlYWNoIHNwZWNpZmllZCBmaWxlIGZvciB0aGlzIGZpZWxkICovCiAKQEAgLTEzNTAsNyArMTM4NSw3IEBACiAgKiBDdXJsX0Zvcm1Jbml0KCkgaW5pdHMgdGhlIHN0cnVjdCAnZm9ybScgcG9pbnRzIHRvIHdpdGggdGhlICdmb3JtZGF0YScKICAqIGFuZCByZXNldHMgdGhlICdzZW50JyBjb3VudGVyLgogICovCi1pbnQgQ3VybF9Gb3JtSW5pdChzdHJ1Y3QgRm9ybSAqZm9ybSwgc3RydWN0IEZvcm1EYXRhICpmb3JtZGF0YSApCitpbnQgQ3VybF9Gb3JtSW5pdChzdHJ1Y3QgRm9ybSAqZm9ybSwgc3RydWN0IEZvcm1EYXRhICpmb3JtZGF0YSkKIHsKICAgaWYoIWZvcm1kYXRhKQogICAgIHJldHVybiAxOyAvKiBlcnJvciAqLwpAQCAtMTM4NSwxMCArMTQyMCwxMCBAQAogICBjYXNlIEZBQiRDX1ZBUjoKICAgY2FzZSBGQUIkQ19WRkM6CiAgIGNhc2UgRkFCJENfU1RNQ1I6Ci0gICAgcmV0dXJuIGZvcGVuKGZpbGUsICJyIik7IC8qIFZNUyAqLworICAgIHJldHVybiBmb3BlbihmaWxlLCBGT1BFTl9SRUFEVEVYVCk7IC8qIFZNUyAqLwogICAgIGJyZWFrOwogICBkZWZhdWx0OgotICAgIHJldHVybiBmb3BlbihmaWxlLCAiciIsICJyZm09c3RtbGYiLCAiY3R4PXN0bSIpOworICAgIHJldHVybiBmb3BlbihmaWxlLCBGT1BFTl9SRUFEVEVYVCwgInJmbT1zdG1sZiIsICJjdHg9c3RtIik7CiAgIH0KIH0KICNlbmRpZgpAQCAtMTQ2Myw5ICsxNDk4LDkgQEAKICAgfQogICBkbyB7CiAKLSAgICBpZigoZm9ybS0+ZGF0YS0+bGVuZ3RoIC0gZm9ybS0+c2VudCApID4gd2FudGVkc2l6ZSAtIGdvdHNpemUpIHsKKyAgICBpZigoZm9ybS0+ZGF0YS0+bGVuZ3RoIC0gZm9ybS0+c2VudCkgPiB3YW50ZWRzaXplIC0gZ290c2l6ZSkgewogCi0gICAgICBtZW1jcHkoYnVmZmVyICsgZ290c2l6ZSAsIGZvcm0tPmRhdGEtPmxpbmUgKyBmb3JtLT5zZW50LAorICAgICAgbWVtY3B5KGJ1ZmZlciArIGdvdHNpemUsIGZvcm0tPmRhdGEtPmxpbmUgKyBmb3JtLT5zZW50LAogICAgICAgICAgICAgIHdhbnRlZHNpemUgLSBnb3RzaXplKTsKIAogICAgICAgZm9ybS0+c2VudCArPSB3YW50ZWRzaXplLWdvdHNpemU7CmRpZmYgLS1naXQgYS9saWIvZm9ybWRhdGEuaCBiL2xpYi9mb3JtZGF0YS5oCmluZGV4IDIyZjUwNGIuLmE1ZWJjMWQgMTAwNjQ0Ci0tLSBhL2xpYi9mb3JtZGF0YS5oCisrKyBiL2xpYi9mb3JtZGF0YS5oCkBAIC03LDExICs3LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNTQsNyArNTQsNyBAQAogICBzaXplX3QgbmFtZWxlbmd0aDsKICAgY2hhciAqdmFsdWU7CiAgIGJvb2wgdmFsdWVfYWxsb2M7Ci0gIHNpemVfdCBjb250ZW50c2xlbmd0aDsKKyAgY3VybF9vZmZfdCBjb250ZW50c2xlbmd0aDsKICAgY2hhciAqY29udGVudHR5cGU7CiAgIGJvb2wgY29udGVudHR5cGVfYWxsb2M7CiAgIGxvbmcgZmxhZ3M7CkBAIC02OCw3ICs2OCw3IEBACiAgIHN0cnVjdCBGb3JtSW5mbyAqbW9yZTsKIH0gRm9ybUluZm87CiAKLWludCBDdXJsX0Zvcm1Jbml0KHN0cnVjdCBGb3JtICpmb3JtLCBzdHJ1Y3QgRm9ybURhdGEgKmZvcm1kYXRhICk7CitpbnQgQ3VybF9Gb3JtSW5pdChzdHJ1Y3QgRm9ybSAqZm9ybSwgc3RydWN0IEZvcm1EYXRhICpmb3JtZGF0YSk7CiAKIENVUkxjb2RlIEN1cmxfZ2V0Zm9ybWRhdGEoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBGb3JtRGF0YSAqKiwKZGlmZiAtLWdpdCBhL2xpYi9mdHAuYyBiL2xpYi9mdHAuYwppbmRleCBkZTYyOGEyLi5jZmExYmJiIDEwMDY0NAotLS0gYS9saWIvZnRwLmMKKysrIGIvbGliL2Z0cC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNzcsMTAgKzc3LDkgQEAKICNpbmNsdWRlICJ3YXJubGVzcy5oIgogI2luY2x1ZGUgImh0dHBfcHJveHkuaCIKICNpbmNsdWRlICJub24tYXNjaWkuaCIKKy8qIFRoZSBsYXN0IDMgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlIGluIHRoaXMgb3JkZXIgKi8KICNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgotCiAjaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKLS8qIFRoZSBsYXN0ICNpbmNsdWRlIGZpbGUgc2hvdWxkIGJlOiAqLwogI2luY2x1ZGUgIm1lbWRlYnVnLmgiCiAKICNpZm5kZWYgTklfTUFYSE9TVApAQCAtMTU1LDggKzE1NCw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGNvbm5lY3RlZCk7CiAKIC8qIGVhc3ktdG8tdXNlIG1hY3JvOiAqLwotI2RlZmluZSBQUFNFTkRGKHgseSx6KSAgaWYoKHJlc3VsdCA9IEN1cmxfcHBfc2VuZGYoeCx5LHopKSkgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQKKyNkZWZpbmUgUFBTRU5ERih4LHkseikgIHJlc3VsdCA9IEN1cmxfcHBfc2VuZGYoeCx5LHopOyBcCisgICAgICAgICAgICAgICAgICAgICAgICBpZihyZXN1bHQpICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0CiAKIAogLyoKQEAgLTI2NSw2ICsyNjUsMTUgQEAKICNlbmRpZgogI2VuZGlmCiAKK3N0YXRpYyB2b2lkIGNsb3NlX3NlY29uZGFyeXNvY2tldChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pCit7CisgIGlmKENVUkxfU09DS0VUX0JBRCAhPSBjb25uLT5zb2NrW1NFQ09OREFSWVNPQ0tFVF0pIHsKKyAgICBDdXJsX2Nsb3Nlc29ja2V0KGNvbm4sIGNvbm4tPnNvY2tbU0VDT05EQVJZU09DS0VUXSk7CisgICAgY29ubi0+c29ja1tTRUNPTkRBUllTT0NLRVRdID0gQ1VSTF9TT0NLRVRfQkFEOworICB9CisgIGNvbm4tPmJpdHMudGNwY29ubmVjdFtTRUNPTkRBUllTT0NLRVRdID0gRkFMU0U7CisgIGNvbm4tPnR1bm5lbF9zdGF0ZVtTRUNPTkRBUllTT0NLRVRdID0gVFVOTkVMX0lOSVQ7Cit9CiAKIC8qCiAgKiBOT1RFOiBiYWNrIGluIHRoZSBvbGQgZGF5cywgd2UgYWRkZWQgY29kZSBpbiB0aGUgRlRQIGNvZGUgdGhhdCBtYWRlIE5PQk9EWQpAQCAtMzQwLDYgKzM0OSw5IEBACiAgICAgcmV0dXJuIENVUkxFX0ZUUF9QT1JUX0ZBSUxFRDsKICAgfQogICBpbmZvZihkYXRhLCAiQ29ubmVjdGlvbiBhY2NlcHRlZCBmcm9tIHNlcnZlclxuIik7CisgIC8qIHdoZW4gdGhpcyBoYXBwZW5zIHdpdGhpbiB0aGUgRE8gc3RhdGUgaXQgaXMgaW1wb3J0YW50IHRoYXQgd2UgbWFyayB1cyBhcworICAgICBub3QgbmVlZGluZyBET19NT1JFIGFueW1vcmUgKi8KKyAgY29ubi0+Yml0cy5kb19tb3JlID0gRkFMU0U7CiAKICAgY29ubi0+c29ja1tTRUNPTkRBUllTT0NLRVRdID0gczsKICAgKHZvaWQpY3VybHhfbm9uYmxvY2socywgVFJVRSk7IC8qIGVuYWJsZSBub24tYmxvY2tpbmcgKi8KQEAgLTM1NCw4ICszNjYsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENVUkxTT0NLVFlQRV9BQ0NFUFQpOwogCiAgICAgaWYoZXJyb3IpIHsKLSAgICAgIEN1cmxfY2xvc2Vzb2NrZXQoY29ubiwgcyk7IC8qIGNsb3NlIHRoZSBzb2NrZXQgYW5kIGJhaWwgb3V0ICovCi0gICAgICBjb25uLT5zb2NrW1NFQ09OREFSWVNPQ0tFVF0gPSBDVVJMX1NPQ0tFVF9CQUQ7CisgICAgICBjbG9zZV9zZWNvbmRhcnlzb2NrZXQoY29ubik7CiAgICAgICByZXR1cm4gQ1VSTEVfQUJPUlRFRF9CWV9DQUxMQkFDSzsKICAgICB9CiAgIH0KQEAgLTY5OCw3ICs3MDksNyBAQAogICAgIC8qIGNoZWNrIGFuZCByZXNldCB0aW1lb3V0IHZhbHVlIGV2ZXJ5IGxhcCAqLwogICAgIHRpbWVvdXQgPSBDdXJsX3BwX3N0YXRlX3RpbWVvdXQocHApOwogCi0gICAgaWYodGltZW91dCA8PTAgKSB7CisgICAgaWYodGltZW91dCA8PTApIHsKICAgICAgIGZhaWxmKGRhdGEsICJGVFAgcmVzcG9uc2UgdGltZW91dCIpOwogICAgICAgcmV0dXJuIENVUkxFX09QRVJBVElPTl9USU1FRE9VVDsgLyogYWxyZWFkeSB0b28gbGl0dGxlIHRpbWUgKi8KICAgICB9CkBAIC0xMDI0LDcgKzEwMzUsNyBAQAogICAgIGlmKCpzdHJpbmdfZnRwcG9ydCA9PSAnWycpIHsKICAgICAgIC8qIFtpcHY2XTpwb3J0KC1yYW5nZSkgKi8KICAgICAgIGlwX3N0YXJ0ID0gc3RyaW5nX2Z0cHBvcnQgKyAxOwotICAgICAgaWYoKGlwX2VuZCA9IHN0cmNocihzdHJpbmdfZnRwcG9ydCwgJ10nKSkgIT0gTlVMTCApCisgICAgICBpZigoaXBfZW5kID0gc3RyY2hyKHN0cmluZ19mdHBwb3J0LCAnXScpKSAhPSBOVUxMKQogICAgICAgICBzdHJuY3B5KGFkZHIsIGlwX3N0YXJ0LCBpcF9lbmQgLSBpcF9zdGFydCk7CiAgICAgfQogICAgIGVsc2UKQEAgLTEwNDUsNyArMTA1Niw3IEBACiAgICAgICBlbHNlCiAjZW5kaWYKICAgICAgICAgLyogKGlwdjR8ZG9tYWlufGludGVyZmFjZSk6cG9ydCgtcmFuZ2UpICovCi0gICAgICAgIHN0cm5jcHkoYWRkciwgc3RyaW5nX2Z0cHBvcnQsIGlwX2VuZCAtIGlwX3N0YXJ0ICk7CisgICAgICAgIHN0cm5jcHkoYWRkciwgc3RyaW5nX2Z0cHBvcnQsIGlwX2VuZCAtIGlwX3N0YXJ0KTsKICAgICB9CiAgICAgZWxzZQogICAgICAgLyogaXB2NHxpbnRlcmZhY2UgKi8KQEAgLTEwNjUsMTEgKzEwNzYsMTEgQEAKIAogICAgIC8qIGNvcnJlY3QgZXJyb3JzIGxpa2U6CiAgICAgICogIDoxMjM0LTEyMzAKLSAgICAgKiAgOi00NzExICwgaW4gdGhpcyBjYXNlIHBvcnRfbWluIGlzICh1bnNpZ25lZCktMSwKKyAgICAgKiAgOi00NzExLCAgaW4gdGhpcyBjYXNlIHBvcnRfbWluIGlzICh1bnNpZ25lZCktMSwKICAgICAgKiAgICAgICAgICAgdGhlcmVmb3JlIHBvcnRfbWluID4gcG9ydF9tYXggZm9yIGFsbCBjYXNlcwogICAgICAqICAgICAgICAgICBidXQgcG9ydF9tYXggPSAodW5zaWduZWQpLTEKICAgICAgKi8KLSAgICBpZihwb3J0X21pbiA+IHBvcnRfbWF4ICkKKyAgICBpZihwb3J0X21pbiA+IHBvcnRfbWF4KQogICAgICAgcG9ydF9taW4gPSBwb3J0X21heCA9IDA7CiAKIApAQCAtMTMyMiwxMSArMTMzMywxMSBAQAogICAvKiBzdG9yZSB3aGljaCBjb21tYW5kIHdhcyBzZW50ICovCiAgIGZ0cGMtPmNvdW50MSA9IGZjbWQ7CiAKKyAgY2xvc2Vfc2Vjb25kYXJ5c29ja2V0KGNvbm4pOworCiAgIC8qIHdlIHNldCB0aGUgc2Vjb25kYXJ5IHNvY2tldCB2YXJpYWJsZSB0byB0aGlzIGZvciBub3csIGl0IGlzIG9ubHkgc28gdGhhdAogICAgICB0aGUgY2xlYW51cCBmdW5jdGlvbiB3aWxsIGNsb3NlIGl0IGluIGNhc2Ugd2UgZmFpbCBiZWZvcmUgdGhlIHRydWUKICAgICAgc2Vjb25kYXJ5IHN0dWZmIGlzIG1hZGUgKi8KLSAgaWYoQ1VSTF9TT0NLRVRfQkFEICE9IGNvbm4tPnNvY2tbU0VDT05EQVJZU09DS0VUXSkKLSAgICBDdXJsX2Nsb3Nlc29ja2V0KGNvbm4sIGNvbm4tPnNvY2tbU0VDT05EQVJZU09DS0VUXSk7CiAgIGNvbm4tPnNvY2tbU0VDT05EQVJZU09DS0VUXSA9IHBvcnRzb2NrOwogCiAgIC8qIHRoaXMgdGNwY29ubmVjdCBhc3NpZ25tZW50IGJlbG93IGlzIGEgaGFja2lzaCB3b3JrLWFyb3VuZCB0byBtYWtlIHRoZQpAQCAtMTUxMywxMiArMTUyNCwxMiBAQAogICAgIH0KICAgfQogCi0gIGNtZCA9IGFwcmludGYoICIlcyVzJXMiLAotICAgICAgICAgICAgICAgICBkYXRhLT5zZXQuc3RyW1NUUklOR19DVVNUT01SRVFVRVNUXT8KLSAgICAgICAgICAgICAgICAgZGF0YS0+c2V0LnN0cltTVFJJTkdfQ1VTVE9NUkVRVUVTVF06Ci0gICAgICAgICAgICAgICAgIChkYXRhLT5zZXQuZnRwX2xpc3Rfb25seT8iTkxTVCI6IkxJU1QiKSwKLSAgICAgICAgICAgICAgICAgbHN0QXJnPyAiICI6ICIiLAotICAgICAgICAgICAgICAgICBsc3RBcmc/IGxzdEFyZzogIiIgKTsKKyAgY21kID0gYXByaW50ZigiJXMlcyVzIiwKKyAgICAgICAgICAgICAgICBkYXRhLT5zZXQuc3RyW1NUUklOR19DVVNUT01SRVFVRVNUXT8KKyAgICAgICAgICAgICAgICBkYXRhLT5zZXQuc3RyW1NUUklOR19DVVNUT01SRVFVRVNUXToKKyAgICAgICAgICAgICAgICAoZGF0YS0+c2V0LmZ0cF9saXN0X29ubHk/Ik5MU1QiOiJMSVNUIiksCisgICAgICAgICAgICAgICAgbHN0QXJnPyAiICI6ICIiLAorICAgICAgICAgICAgICAgIGxzdEFyZz8gbHN0QXJnOiAiIik7CiAKICAgaWYoIWNtZCkgewogICAgIGZyZWUobHN0QXJnKTsKQEAgLTE2NDAsNyArMTY1MSw3IEBACiAgICAgLyogNC4gbG93ZXIgdGhlIGluZmlsZXNpemUgY291bnRlciAqLwogICAgIC8qID0+IHRyYW5zZmVyIGFzIHVzdWFsICovCiAKLSAgICBpZihkYXRhLT5zdGF0ZS5yZXN1bWVfZnJvbSA8IDAgKSB7CisgICAgaWYoZGF0YS0+c3RhdGUucmVzdW1lX2Zyb20gPCAwKSB7CiAgICAgICAvKiBHb3Qgbm8gZ2l2ZW4gc2l6ZSB0byBzdGFydCBmcm9tLCBmaWd1cmUgaXQgb3V0ICovCiAgICAgICBQUFNFTkRGKCZmdHBjLT5wcCwgIlNJWkUgJXMiLCBmdHBjLT5maWxlKTsKICAgICAgIHN0YXRlKGNvbm4sIEZUUF9TVE9SX1NJWkUpOwpAQCAtMTY3MCw4ICsxNjgxLDggQEAKICAgICAgICAgICAgIEJVRlNJWkUgOiBjdXJseF9zb3RvdXooZGF0YS0+c3RhdGUucmVzdW1lX2Zyb20gLSBwYXNzZWQpOwogCiAgICAgICAgICAgc2l6ZV90IGFjdHVhbGx5cmVhZCA9Ci0gICAgICAgICAgICBkYXRhLT5zZXQuZnJlYWRfZnVuYyhkYXRhLT5zdGF0ZS5idWZmZXIsIDEsIHJlYWR0aGlzYW1vdW50bm93LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+c2V0LmluKTsKKyAgICAgICAgICAgIGRhdGEtPnN0YXRlLmZyZWFkX2Z1bmMoZGF0YS0+c3RhdGUuYnVmZmVyLCAxLCByZWFkdGhpc2Ftb3VudG5vdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+c3RhdGUuaW4pOwogCiAgICAgICAgICAgcGFzc2VkICs9IGFjdHVhbGx5cmVhZDsKICAgICAgICAgICBpZigoYWN0dWFsbHlyZWFkID09IDApIHx8IChhY3R1YWxseXJlYWQgPiByZWFkdGhpc2Ftb3VudG5vdykpIHsKQEAgLTE3ODcsOCArMTc5OCwyMCBAQAogICAgICAgICAgIHJlc3VsdCA9IGZ0cF9zdGF0ZV9yZXRyKGNvbm4sIGZ0cGMtPmtub3duX2ZpbGVzaXplKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKLSAgICAgICAgICBQUFNFTkRGKCZmdHBjLT5wcCwgIlNJWkUgJXMiLCBmdHBjLT5maWxlKTsKLSAgICAgICAgICBzdGF0ZShjb25uLCBGVFBfUkVUUl9TSVpFKTsKKyAgICAgICAgICBpZihkYXRhLT5zZXQuaWdub3JlY2wpIHsKKyAgICAgICAgICAgIC8qIFRoaXMgY29kZSBpcyB0byBzdXBwb3J0IGRvd25sb2FkIG9mIGdyb3dpbmcgZmlsZXMuICBJdCBwcmV2ZW50cworICAgICAgICAgICAgICAgdGhlIHN0YXRlIG1hY2hpbmUgZnJvbSByZXF1ZXN0aW5nIHRoZSBmaWxlIHNpemUgZnJvbSB0aGUKKyAgICAgICAgICAgICAgIHNlcnZlci4gIFdpdGggYW4gdW5rbm93biBmaWxlIHNpemUgdGhlIGRvd25sb2FkIGNvbnRpbnVlcyB1bnRpbAorICAgICAgICAgICAgICAgdGhlIHNlcnZlciB0ZXJtaW5hdGVzIGl0LCBvdGhlcndpc2UgdGhlIGNsaWVudCBzdG9wcyBpZiB0aGUKKyAgICAgICAgICAgICAgIHJlY2VpdmVkIGJ5dGUgY291bnQgZXhjZWVkcyB0aGUgcmVwb3J0ZWQgZmlsZSBzaXplLiAgU2V0IG9wdGlvbgorICAgICAgICAgICAgICAgQ1VSTE9QVF9JR05PUkVfQ09OVEVOVF9MRU5HVEggdG8gMSB0byBlbmFibGUgdGhpcyBiZWhhdmlvci4qLworICAgICAgICAgICAgUFBTRU5ERigmZnRwYy0+cHAsICJSRVRSICVzIiwgZnRwYy0+ZmlsZSk7CisgICAgICAgICAgICBzdGF0ZShjb25uLCBGVFBfUkVUUik7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUFBTRU5ERigmZnRwYy0+cHAsICJTSVpFICVzIiwgZnRwYy0+ZmlsZSk7CisgICAgICAgICAgICBzdGF0ZShjb25uLCBGVFBfUkVUUl9TSVpFKTsKKyAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgIH0KICAgICAgIGJyZWFrOwpAQCAtMTg4Nyw3ICsxOTEwLDcgQEAKICAgICBtZW1zZXQoJmh0dHBfcHJveHksIDAsIHNpemVvZihodHRwX3Byb3h5KSk7CiAgICAgZGF0YS0+cmVxLnByb3RvcCA9ICZodHRwX3Byb3h5OwogCi0gICAgcmVzdWx0ID0gQ3VybF9wcm94eUNPTk5FQ1QoY29ubiwgU0VDT05EQVJZU09DS0VULCBuZXdob3N0LCBuZXdwb3J0KTsKKyAgICByZXN1bHQgPSBDdXJsX3Byb3h5Q09OTkVDVChjb25uLCBTRUNPTkRBUllTT0NLRVQsIG5ld2hvc3QsIG5ld3BvcnQsIFRSVUUpOwogCiAgICAgZGF0YS0+cmVxLnByb3RvcCA9IGZ0cF9zYXZlOwogCkBAIC0zMjE4LDcgKzMyNDEsNyBAQAogICogSW5wdXQgYXJndW1lbnQgaXMgYWxyZWFkeSBjaGVja2VkIGZvciB2YWxpZGl0eS4KICAqLwogc3RhdGljIENVUkxjb2RlIGZ0cF9kb25lKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgQ1VSTGNvZGUgc3RhdHVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBwcmVtYXR1cmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBwcmVtYXR1cmUpCiB7CiAgIHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhID0gY29ubi0+ZGF0YTsKICAgc3RydWN0IEZUUCAqZnRwID0gZGF0YS0+cmVxLnByb3RvcDsKQEAgLTMyMzIsMTEgKzMyNTUsNiBAQAogICBjb25zdCBjaGFyICpwYXRoX3RvX3VzZSA9IGRhdGEtPnN0YXRlLnBhdGg7CiAKICAgaWYoIWZ0cCkKLSAgICAvKiBXaGVuIHRoZSBlYXN5IGhhbmRsZSBpcyByZW1vdmVkIGZyb20gdGhlIG11bHRpIHdoaWxlIGxpYmN1cmwgaXMgc3RpbGwKLSAgICAgKiB0cnlpbmcgdG8gcmVzb2x2ZSB0aGUgaG9zdCBuYW1lLCBpdCBzZWVtcyB0aGF0IHRoZSBmdHAgc3RydWN0IGlzIG5vdAotICAgICAqIHlldCBpbml0aWFsaXplZCwgYnV0IHRoZSByZW1vdmFsIGFjdGlvbiBjYWxscyBDdXJsX2RvbmUoKSB3aGljaCBjYWxscwotICAgICAqIHRoaXMgZnVuY3Rpb24uIFNvIHdlIHNpbXBseSByZXR1cm4gc3VjY2VzcyBpZiBubyBmdHAgcG9pbnRlciBpcyBzZXQuCi0gICAgICovCiAgICAgcmV0dXJuIENVUkxFX09LOwogCiAgIHN3aXRjaChzdGF0dXMpIHsKQEAgLTMzNDUsMTEgKzMzNjMsNyBAQAogICAgICAgLyogTm90ZSB0aGF0IHdlIGtlZXAgInVzZSIgc2V0IHRvIFRSVUUgc2luY2UgdGhhdCAobmV4dCkgY29ubmVjdGlvbiBpcwogICAgICAgICAgc3RpbGwgcmVxdWVzdGVkIHRvIHVzZSBTU0wgKi8KICAgICB9Ci0gICAgaWYoQ1VSTF9TT0NLRVRfQkFEICE9IGNvbm4tPnNvY2tbU0VDT05EQVJZU09DS0VUXSkgewotICAgICAgQ3VybF9jbG9zZXNvY2tldChjb25uLCBjb25uLT5zb2NrW1NFQ09OREFSWVNPQ0tFVF0pOwotICAgICAgY29ubi0+c29ja1tTRUNPTkRBUllTT0NLRVRdID0gQ1VSTF9TT0NLRVRfQkFEOwotICAgICAgY29ubi0+Yml0cy50Y3Bjb25uZWN0W1NFQ09OREFSWVNPQ0tFVF0gPSBGQUxTRTsKLSAgICB9CisgICAgY2xvc2Vfc2Vjb25kYXJ5c29ja2V0KGNvbm4pOwogICB9CiAKICAgaWYoIXJlc3VsdCAmJiAoZnRwLT50cmFuc2ZlciA9PSBGVFBUUkFOU0ZFUl9CT0RZKSAmJiBmdHBjLT5jdGxfdmFsaWQgJiYKQEAgLTM2NDUsNyArMzY1OSw3IEBACiAgICAgaWYoY29ubi0+dHVubmVsX3N0YXRlW1NFQ09OREFSWVNPQ0tFVF0gPT0gVFVOTkVMX0NPTk5FQ1QpIHsKICAgICAgIC8qIEFzIHdlJ3JlIGluIFRVTk5FTF9DT05ORUNUIHN0YXRlIG5vdywgd2Uga25vdyB0aGUgcHJveHkgbmFtZSBhbmQgcG9ydAogICAgICAgICAgYXJlbid0IHVzZWQgc28gd2UgYmxhbmsgdGhlaXIgYXJndW1lbnRzLiBUT0RPOiBtYWtlIHRoaXMgbmljZXIgKi8KLSAgICAgIHJlc3VsdCA9IEN1cmxfcHJveHlDT05ORUNUKGNvbm4sIFNFQ09OREFSWVNPQ0tFVCwgTlVMTCwgMCk7CisgICAgICByZXN1bHQgPSBDdXJsX3Byb3h5Q09OTkVDVChjb25uLCBTRUNPTkRBUllTT0NLRVQsIE5VTEwsIDAsIEZBTFNFKTsKIAogICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC0zNzIwLDcgKzM3MzQsMTMgQEAKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAogICAgICAgcmVzdWx0ID0gZnRwX211bHRpX3N0YXRlbWFjaChjb25uLCAmY29tcGxldGUpOwotICAgICAgKmNvbXBsZXRlcCA9IChpbnQpY29tcGxldGU7CisgICAgICBpZihmdHBjLT53YWl0X2RhdGFfY29ubikKKyAgICAgICAgLyogaWYgd2UgcmVhY2ggdGhlIGVuZCBvZiB0aGUgRlRQIHN0YXRlIG1hY2hpbmUgaGVyZSwgKmNvbXBsZXRlIHdpbGwgYmUKKyAgICAgICAgICAgVFJVRSBidXQgc28gaXMgZnRwYy0+d2FpdF9kYXRhX2Nvbm4sIHdoaWNoIHNheXMgd2UgbmVlZCB0byB3YWl0IGZvcgorICAgICAgICAgICB0aGUgZGF0YSBjb25uZWN0aW9uIGFuZCB0aGVyZWZvcmUgd2UncmUgbm90IGFjdHVhbGx5IGNvbXBsZXRlICovCisgICAgICAgICpjb21wbGV0ZXAgPSAwOworICAgICAgZWxzZQorICAgICAgICAqY29tcGxldGVwID0gKGludCljb21wbGV0ZTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAvKiBkb3dubG9hZCAqLwpAQCAtNDI0OCwxNiArNDI2OCwxNyBAQAogICAgICAgdGhlIGZpcnN0IGNvbmRpdGlvbiBpbiB0aGUgaWYoKSByaWdodCBoZXJlLCBpcyB0aGVyZSBqdXN0IGluIGNhc2UKICAgICAgIHNvbWVvbmUgZGVjaWRlcyB0byBzZXQgcGF0aCB0byBOVUxMIG9uZSBkYXkKICAgICovCi0gICAgaWYoZGF0YS0+c3RhdGUucGF0aCAmJgotICAgICAgIGRhdGEtPnN0YXRlLnBhdGhbMF0gJiYKLSAgICAgICAoZGF0YS0+c3RhdGUucGF0aFtzdHJsZW4oZGF0YS0+c3RhdGUucGF0aCkgLSAxXSAhPSAnLycpICkKLSAgICAgIGZpbGVuYW1lID0gZGF0YS0+c3RhdGUucGF0aDsgIC8qIHRoaXMgaXMgYSBmdWxsIGZpbGUgcGF0aCAqLwotICAgICAgLyoKKyAgICBpZihwYXRoX3RvX3VzZVswXSAmJgorICAgICAgIChwYXRoX3RvX3VzZVtzdHJsZW4ocGF0aF90b191c2UpIC0gMV0gIT0gJy8nKSApCisgICAgICBmaWxlbmFtZSA9IHBhdGhfdG9fdXNlOyAgLyogdGhpcyBpcyBhIGZ1bGwgZmlsZSBwYXRoICovCisgICAgLyoKKyAgICAgIGVsc2UgewogICAgICAgICBmdHBjLT5maWxlIGlzIG5vdCB1c2VkIGFueXdoZXJlIG90aGVyIHRoYW4gZm9yIG9wZXJhdGlvbnMgb24gYSBmaWxlLgogICAgICAgICBJbiBvdGhlciB3b3JkcywgbmV2ZXIgZm9yIGRpcmVjdG9yeSBvcGVyYXRpb25zLgogICAgICAgICBTbyB3ZSBjYW4gc2FmZWx5IGxlYXZlIGZpbGVuYW1lIGFzIE5VTEwgaGVyZSBhbmQgdXNlIGl0IGFzIGEKICAgICAgICAgYXJndW1lbnQgaW4gZGlyL2ZpbGUgZGVjaXNpb25zLgotICAgICAgKi8KKyAgICAgIH0KKyAgICAqLwogICAgIGJyZWFrOwogCiAgIGNhc2UgRlRQRklMRV9TSU5HTEVDV0Q6CkBAIC00NDIyLDExICs0NDQzLDcgQEAKICAgICBDVVJMY29kZSByZXN1bHQgPSBmdHBfZG9fbW9yZShjb25uLCAmY29tcGxldGVkKTsKIAogICAgIGlmKHJlc3VsdCkgewotICAgICAgaWYoY29ubi0+c29ja1tTRUNPTkRBUllTT0NLRVRdICE9IENVUkxfU09DS0VUX0JBRCkgewotICAgICAgICAvKiBjbG9zZSB0aGUgc2Vjb25kIHNvY2tldCBpZiBpdCB3YXMgY3JlYXRlZCBhbHJlYWR5ICovCi0gICAgICAgIEN1cmxfY2xvc2Vzb2NrZXQoY29ubiwgY29ubi0+c29ja1tTRUNPTkRBUllTT0NLRVRdKTsKLSAgICAgICAgY29ubi0+c29ja1tTRUNPTkRBUllTT0NLRVRdID0gQ1VSTF9TT0NLRVRfQkFEOwotICAgICAgfQorICAgICAgY2xvc2Vfc2Vjb25kYXJ5c29ja2V0KGNvbm4pOwogICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgIH0KZGlmZiAtLWdpdCBhL2xpYi9mdHAuaCBiL2xpYi9mdHAuaAppbmRleCA4MzM0NDdiLi43NDk1ZTNlIDEwMDY0NAotLS0gYS9saWIvZnRwLmgKKysrIGIvbGliL2Z0cC5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL2Z0cGxpc3RwYXJzZXIuYyBiL2xpYi9mdHBsaXN0cGFyc2VyLmMKaW5kZXggMTdlMGE2Ni4uYWJiZjc2ZSAxMDA2NDQKLS0tIGEvbGliL2Z0cGxpc3RwYXJzZXIuYworKysgYi9saWIvZnRwbGlzdHBhcnNlci5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTI3NSwyNiArMjc1LDYgQEAKICAgcGFyc2VyLT5lcnJvciA9IGVycjsKIH0KIAotc3RhdGljIGJvb2wgZnRwX3BsX2dldHRpbWUoc3RydWN0IGZ0cF9wYXJzZWxpc3RfZGF0YSAqcGFyc2VyLCBjaGFyICpzdHJpbmcpCi17Ci0gICh2b2lkKXBhcnNlcjsKLSAgKHZvaWQpc3RyaW5nOwotICAvKiBUT0RPCi0gICAqIFRoZXJlIGNvdWxkIGJlIHBvc3NpYmxlIHBhcnNlIHRpbWVzdGFtcCBmcm9tIHNlcnZlci4gTGVhdmluZyB1bmltcGxlbWVudGVkCi0gICAqIGZvciBub3cuCi0gICAqIElmIHlvdSB3YW50IGltcGxlbWVudCB0aGlzLCBwbGVhc2UgYWRkIENVUkxGSU5GT0ZMQUdfS05PV05fVElNRSBmbGFnIHRvCi0gICAqIHBhcnNlci0+ZmlsZV9kYXRhLT5mbGFncwotICAgKgotICAgKiBGdHAgc2VydmVycyBhcmUgZ2l2aW5nIHVzdWFsbHkgdGhlc2UgZm9ybWF0czoKLSAgICogIEFwciAxMSAgMTk5OCAodW5rbm93biB0aW1lLi4gc2V0IGl0IHRvIDAwOjAwOjAwPykKLSAgICogIEFwciAxMSAxMjoyMSAodW5rbm93biB5ZWFyIC0+IHNldCBpdCB0byBOT1coKSB0aW1lPykKLSAgICogIDA4LTA1LTA5ICAwMjo0OVBNICAobXMtZG9zIGZvcm1hdCkKLSAgICogIDIwMTAwNDIxMDkyNTM4IC0+IGZvciBNTFNUL01MU0QgcmVzcG9uc2UKLSAgICovCi0KLSAgcmV0dXJuIEZBTFNFOwotfQotCiBzdGF0aWMgQ1VSTGNvZGUgZnRwX3BsX2luc2VydF9maW5mbyhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY3VybF9maWxlaW5mbyAqZmluZm8pCiB7CkBAIC03MTUsOSArNjk1LDExIEBACiAgICAgICAgICAgaWYoYyA9PSAnICcpIHsKICAgICAgICAgICAgIGZpbmZvLT5iX2RhdGFbcGFyc2VyLT5pdGVtX29mZnNldCArIHBhcnNlci0+aXRlbV9sZW5ndGggLTFdID0gMDsKICAgICAgICAgICAgIHBhcnNlci0+b2Zmc2V0cy50aW1lID0gcGFyc2VyLT5pdGVtX29mZnNldDsKLSAgICAgICAgICAgIGlmKGZ0cF9wbF9nZXR0aW1lKHBhcnNlciwgZmluZm8tPmJfZGF0YSArIHBhcnNlci0+aXRlbV9vZmZzZXQpKSB7Ci0gICAgICAgICAgICAgIHBhcnNlci0+ZmlsZV9kYXRhLT5mbGFncyB8PSBDVVJMRklORk9GTEFHX0tOT1dOX1RJTUU7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICBpZihmdHBfcGxfZ2V0dGltZShwYXJzZXIsIGZpbmZvLT5iX2RhdGEgKyBwYXJzZXItPml0ZW1fb2Zmc2V0KSkgeworICAgICAgICAgICAgICAgIHBhcnNlci0+ZmlsZV9kYXRhLT5mbGFncyB8PSBDVVJMRklORk9GTEFHX0tOT1dOX1RJTUU7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICovCiAgICAgICAgICAgICBpZihmaW5mby0+ZmlsZXR5cGUgPT0gQ1VSTEZJTEVUWVBFX1NZTUxJTkspIHsKICAgICAgICAgICAgICAgcGFyc2VyLT5zdGF0ZS5VTklYLm1haW4gPSBQTF9VTklYX1NZTUxJTks7CiAgICAgICAgICAgICAgIHBhcnNlci0+c3RhdGUuVU5JWC5zdWIuc3ltbGluayA9IFBMX1VOSVhfU1lNTElOS19QUkVTUEFDRTsKQEAgLTc0Niw3ICs3MjgsNiBAQAogICAgICAgICBjYXNlIFBMX1VOSVhfRklMRU5BTUVfTkFNRToKICAgICAgICAgICBwYXJzZXItPml0ZW1fbGVuZ3RoKys7CiAgICAgICAgICAgaWYoYyA9PSAnXHInKSB7Ci0gICAgICAgICAgICBwYXJzZXItPml0ZW1fbGVuZ3RoLS07CiAgICAgICAgICAgICBwYXJzZXItPnN0YXRlLlVOSVguc3ViLmZpbGVuYW1lID0gUExfVU5JWF9GSUxFTkFNRV9XSU5ET1dTRU9MOwogICAgICAgICAgIH0KICAgICAgICAgICBlbHNlIGlmKGMgPT0gJ1xuJykgewpAQCAtNzYyLDcgKzc0Myw3IEBACiAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUExfVU5JWF9GSUxFTkFNRV9XSU5ET1dTRU9MOgogICAgICAgICAgIGlmKGMgPT0gJ1xuJykgewotICAgICAgICAgICAgZmluZm8tPmJfZGF0YVtwYXJzZXItPml0ZW1fb2Zmc2V0ICsgcGFyc2VyLT5pdGVtX2xlbmd0aF0gPSAwOworICAgICAgICAgICAgZmluZm8tPmJfZGF0YVtwYXJzZXItPml0ZW1fb2Zmc2V0ICsgcGFyc2VyLT5pdGVtX2xlbmd0aCAtIDFdID0gMDsKICAgICAgICAgICAgIHBhcnNlci0+b2Zmc2V0cy5maWxlbmFtZSA9IHBhcnNlci0+aXRlbV9vZmZzZXQ7CiAgICAgICAgICAgICBwYXJzZXItPnN0YXRlLlVOSVgubWFpbiA9IFBMX1VOSVhfRklMRVRZUEU7CiAgICAgICAgICAgICByZXN1bHQgPSBmdHBfcGxfaW5zZXJ0X2ZpbmZvKGNvbm4sIGZpbmZvKTsKQEAgLTg1Myw5ICs4MzQsOCBAQAogICAgICAgICAgIH0KICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQTF9VTklYX1NZTUxJTktfVEFSR0VUOgotICAgICAgICAgIHBhcnNlci0+aXRlbV9sZW5ndGggKys7CisgICAgICAgICAgcGFyc2VyLT5pdGVtX2xlbmd0aCsrOwogICAgICAgICAgIGlmKGMgPT0gJ1xyJykgewotICAgICAgICAgICAgcGFyc2VyLT5pdGVtX2xlbmd0aCAtLTsKICAgICAgICAgICAgIHBhcnNlci0+c3RhdGUuVU5JWC5zdWIuc3ltbGluayA9IFBMX1VOSVhfU1lNTElOS19XSU5ET1dTRU9MOwogICAgICAgICAgIH0KICAgICAgICAgICBlbHNlIGlmKGMgPT0gJ1xuJykgewpkaWZmIC0tZ2l0IGEvbGliL2Z0cGxpc3RwYXJzZXIuaCBiL2xpYi9mdHBsaXN0cGFyc2VyLmgKaW5kZXggOTY3NjRlMi4uODEyODg4NyAxMDA2NDQKLS0tIGEvbGliL2Z0cGxpc3RwYXJzZXIuaAorKysgYi9saWIvZnRwbGlzdHBhcnNlci5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL2dldGVudi5jIGIvbGliL2dldGVudi5jCmluZGV4IDM2MjE1YWEuLjUwYmI3OWYgMTAwNjQ0Ci0tLSBhL2xpYi9nZXRlbnYuYworKysgYi9saWIvZ2V0ZW52LmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL2dldGluZm8uYyBiL2xpYi9nZXRpbmZvLmMKaW5kZXggOTEwZjUyMC4uZDRiMDFiZiAxMDA2NDQKLS0tIGEvbGliL2dldGluZm8uYworKysgYi9saWIvZ2V0aW5mby5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTExMyw3ICsxMTMsNyBAQAogICAgIGJyZWFrOwogCiAgIGRlZmF1bHQ6Ci0gICAgcmV0dXJuIENVUkxFX0JBRF9GVU5DVElPTl9BUkdVTUVOVDsKKyAgICByZXR1cm4gQ1VSTEVfVU5LTk9XTl9PUFRJT047CiAgIH0KIAogICByZXR1cm4gQ1VSTEVfT0s7CkBAIC0yMDAsNyArMjAwLDcgQEAKICAgICBicmVhazsKIAogICBkZWZhdWx0OgotICAgIHJldHVybiBDVVJMRV9CQURfRlVOQ1RJT05fQVJHVU1FTlQ7CisgICAgcmV0dXJuIENVUkxFX1VOS05PV05fT1BUSU9OOwogICB9CiAKICAgcmV0dXJuIENVUkxFX09LOwpAQCAtMjUzLDcgKzI1Myw3IEBACiAgICAgYnJlYWs7CiAKICAgZGVmYXVsdDoKLSAgICByZXR1cm4gQ1VSTEVfQkFEX0ZVTkNUSU9OX0FSR1VNRU5UOworICAgIHJldHVybiBDVVJMRV9VTktOT1dOX09QVElPTjsKICAgfQogCiAgIHJldHVybiBDVVJMRV9PSzsKQEAgLTI4MSw1NCArMjgxLDY5IEBACiAgICAgKnBhcmFtX3NsaXN0cCA9IHB0ci50b19zbGlzdDsKICAgICBicmVhazsKICAgY2FzZSBDVVJMSU5GT19UTFNfU0VTU0lPTjoKKyAgY2FzZSBDVVJMSU5GT19UTFNfU1NMX1BUUjoKICAgICB7CiAgICAgICBzdHJ1Y3QgY3VybF90bHNzZXNzaW9uaW5mbyAqKnRzaXAgPSAoc3RydWN0IGN1cmxfdGxzc2Vzc2lvbmluZm8gKiopCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbV9zbGlzdHA7CiAgICAgICBzdHJ1Y3QgY3VybF90bHNzZXNzaW9uaW5mbyAqdHNpID0gJmRhdGEtPnRzaTsKICAgICAgIHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiA9IGRhdGEtPmVhc3lfY29ubjsKLSAgICAgIHVuc2lnbmVkIGludCBzb2NraW5kZXggPSAwOwotICAgICAgdm9pZCAqaW50ZXJuYWxzID0gTlVMTDsKIAogICAgICAgKnRzaXAgPSB0c2k7Ci0gICAgICB0c2ktPmJhY2tlbmQgPSBDVVJMU1NMQkFDS0VORF9OT05FOworICAgICAgdHNpLT5iYWNrZW5kID0gQ3VybF9zc2xfYmFja2VuZCgpOwogICAgICAgdHNpLT5pbnRlcm5hbHMgPSBOVUxMOwogCi0gICAgICBpZighY29ubikKLSAgICAgICAgYnJlYWs7Ci0KLSAgICAgIC8qIEZpbmQgdGhlIGFjdGl2ZSAoImluIHVzZSIpIFNTTCBjb25uZWN0aW9uLCBpZiBhbnkgKi8KLSAgICAgIHdoaWxlKChzb2NraW5kZXggPCBzaXplb2YoY29ubi0+c3NsKSAvIHNpemVvZihjb25uLT5zc2xbMF0pKSAmJgotICAgICAgICAgICAgKCFjb25uLT5zc2xbc29ja2luZGV4XS51c2UpKQotICAgICAgICBzb2NraW5kZXgrKzsKLQotICAgICAgaWYoc29ja2luZGV4ID09IHNpemVvZihjb25uLT5zc2wpIC8gc2l6ZW9mKGNvbm4tPnNzbFswXSkpCi0gICAgICAgIGJyZWFrOyAvKiBubyBTU0wgc2Vzc2lvbiBmb3VuZCAqLwotCi0gICAgICAvKiBSZXR1cm4gdGhlIFRMUyBzZXNzaW9uIGluZm9ybWF0aW9uIGZyb20gdGhlIHJlbGV2YW50IGJhY2tlbmQgKi8KLSNpZmRlZiBVU0VfT1BFTlNTTAotICAgICAgaW50ZXJuYWxzID0gY29ubi0+c3NsW3NvY2tpbmRleF0uY3R4OworICAgICAgaWYoY29ubiAmJiB0c2ktPmJhY2tlbmQgIT0gQ1VSTFNTTEJBQ0tFTkRfTk9ORSkgeworICAgICAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICAgICAgZm9yKGkgPSAwOyBpIDwgKHNpemVvZihjb25uLT5zc2wpIC8gc2l6ZW9mKGNvbm4tPnNzbFswXSkpOyArK2kpIHsKKyAgICAgICAgICBpZihjb25uLT5zc2xbaV0udXNlKSB7CisjaWYgZGVmaW5lZChVU0VfQVhUTFMpCisgICAgICAgICAgICB0c2ktPmludGVybmFscyA9ICh2b2lkICopY29ubi0+c3NsW2ldLnNzbDsKKyNlbGlmIGRlZmluZWQoVVNFX0NZQVNTTCkKKyAgICAgICAgICAgIHRzaS0+aW50ZXJuYWxzID0gKHZvaWQgKiljb25uLT5zc2xbaV0uaGFuZGxlOworI2VsaWYgZGVmaW5lZChVU0VfREFSV0lOU1NMKQorICAgICAgICAgICAgdHNpLT5pbnRlcm5hbHMgPSAodm9pZCAqKWNvbm4tPnNzbFtpXS5zc2xfY3R4OworI2VsaWYgZGVmaW5lZChVU0VfR05VVExTKQorICAgICAgICAgICAgdHNpLT5pbnRlcm5hbHMgPSAodm9pZCAqKWNvbm4tPnNzbFtpXS5zZXNzaW9uOworI2VsaWYgZGVmaW5lZChVU0VfR1NLSVQpCisgICAgICAgICAgICB0c2ktPmludGVybmFscyA9ICh2b2lkICopY29ubi0+c3NsW2ldLmhhbmRsZTsKKyNlbGlmIGRlZmluZWQoVVNFX01CRURUTFMpCisgICAgICAgICAgICB0c2ktPmludGVybmFscyA9ICh2b2lkICopJmNvbm4tPnNzbFtpXS5zc2w7CisjZWxpZiBkZWZpbmVkKFVTRV9OU1MpCisgICAgICAgICAgICB0c2ktPmludGVybmFscyA9ICh2b2lkICopY29ubi0+c3NsW2ldLmhhbmRsZTsKKyNlbGlmIGRlZmluZWQoVVNFX09QRU5TU0wpCisgICAgICAgICAgICAvKiBMZWdhY3k6IENVUkxJTkZPX1RMU19TRVNTSU9OIG11c3QgcmV0dXJuIGFuIFNTTF9DVFggcG9pbnRlci4gKi8KKyAgICAgICAgICAgIHRzaS0+aW50ZXJuYWxzID0gKChpbmZvID09IENVUkxJTkZPX1RMU19TRVNTSU9OKSA/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCAqKWNvbm4tPnNzbFtpXS5jdHggOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKiljb25uLT5zc2xbaV0uaGFuZGxlKTsKKyNlbGlmIGRlZmluZWQoVVNFX1BPTEFSU1NMKQorICAgICAgICAgICAgdHNpLT5pbnRlcm5hbHMgPSAodm9pZCAqKSZjb25uLT5zc2xbaV0uc3NsOworI2VsaWYgZGVmaW5lZChVU0VfU0NIQU5ORUwpCisgICAgICAgICAgICB0c2ktPmludGVybmFscyA9ICh2b2lkICopJmNvbm4tPnNzbFtpXS5jdHh0LT5jdHh0X2hhbmRsZTsKKyNlbGlmIGRlZmluZWQoVVNFX1NTTCkKKyNlcnJvciAiU1NMIGJhY2tlbmQgc3BlY2lmaWMgaW5mb3JtYXRpb24gbWlzc2luZyBmb3IgQ1VSTElORk9fVExTX1NTTF9QVFIiCiAjZW5kaWYKLSNpZmRlZiBVU0VfR05VVExTCi0gICAgICBpbnRlcm5hbHMgPSBjb25uLT5zc2xbc29ja2luZGV4XS5zZXNzaW9uOwotI2VuZGlmCi0jaWZkZWYgVVNFX05TUwotICAgICAgaW50ZXJuYWxzID0gY29ubi0+c3NsW3NvY2tpbmRleF0uaGFuZGxlOwotI2VuZGlmCi0jaWZkZWYgVVNFX0dTS0lUCi0gICAgICBpbnRlcm5hbHMgPSBjb25uLT5zc2xbc29ja2luZGV4XS5oYW5kbGU7Ci0jZW5kaWYKLSAgICAgIGlmKGludGVybmFscykgewotICAgICAgICB0c2ktPmJhY2tlbmQgPSBDdXJsX3NzbF9iYWNrZW5kKCk7Ci0gICAgICAgIHRzaS0+aW50ZXJuYWxzID0gaW50ZXJuYWxzOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgfQorICAgICAgICB9CiAgICAgICB9Ci0gICAgICAvKiBOT1RFOiBGb3Igb3RoZXIgU1NMIGJhY2tlbmRzLCBpdCBpcyBub3QgaW1tZWRpYXRlbHkgY2xlYXIgd2hhdCBkYXRhCi0gICAgICAgICB0byByZXR1cm4gZnJvbSAnc3RydWN0IHNzbF9jb25uZWN0X2RhdGEnOyB0aHVzLCBmb3Igbm93IHdlIGtlZXAgdGhlCi0gICAgICAgICBiYWNrZW5kIGFzIENVUkxTU0xCQUNLRU5EX05PTkUgaW4gdGhvc2UgY2FzZXMsIHdoaWNoIHNob3VsZCBiZQotICAgICAgICAgaW50ZXJwcmV0ZWQgYXMgIm5vdCBzdXBwb3J0ZWQiICovCiAgICAgfQogICAgIGJyZWFrOwogICBkZWZhdWx0OgotICAgIHJldHVybiBDVVJMRV9CQURfRlVOQ1RJT05fQVJHVU1FTlQ7CisgICAgcmV0dXJuIENVUkxFX1VOS05PV05fT1BUSU9OOworICB9CisKKyAgcmV0dXJuIENVUkxFX09LOworfQorCitzdGF0aWMgQ1VSTGNvZGUgZ2V0aW5mb19zb2NrZXQoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsIENVUkxJTkZPIGluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VybF9zb2NrZXRfdCAqcGFyYW1fc29ja2V0cCkKK3sKKyAgc3dpdGNoKGluZm8pIHsKKyAgY2FzZSBDVVJMSU5GT19BQ1RJVkVTT0NLRVQ6CisgICAgKnBhcmFtX3NvY2tldHAgPSBDdXJsX2dldGNvbm5lY3RpbmZvKGRhdGEsIE5VTEwpOworICAgIGJyZWFrOworICBkZWZhdWx0OgorICAgIHJldHVybiBDVVJMRV9VTktOT1dOX09QVElPTjsKICAgfQogCiAgIHJldHVybiBDVVJMRV9PSzsKQEAgLTM0MSw5ICszNTYsOSBAQAogICBkb3VibGUgKnBhcmFtX2RvdWJsZXAgPSBOVUxMOwogICBjaGFyICoqcGFyYW1fY2hhcnAgPSBOVUxMOwogICBzdHJ1Y3QgY3VybF9zbGlzdCAqKnBhcmFtX3NsaXN0cCA9IE5VTEw7CisgIGN1cmxfc29ja2V0X3QgKnBhcmFtX3NvY2tldHAgPSBOVUxMOwogICBpbnQgdHlwZTsKLSAgLyogZGVmYXVsdCByZXR1cm4gY29kZSBpcyB0byBlcnJvciBvdXQhICovCi0gIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX0JBRF9GVU5DVElPTl9BUkdVTUVOVDsKKyAgQ1VSTGNvZGUgcmVzdWx0ID0gQ1VSTEVfVU5LTk9XTl9PUFRJT047CiAKICAgaWYoIWRhdGEpCiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTM3Miw2ICszODcsMTEgQEAKICAgICBpZihwYXJhbV9zbGlzdHApCiAgICAgICByZXN1bHQgPSBnZXRpbmZvX3NsaXN0KGRhdGEsIGluZm8sIHBhcmFtX3NsaXN0cCk7CiAgICAgYnJlYWs7CisgIGNhc2UgQ1VSTElORk9fU09DS0VUOgorICAgIHBhcmFtX3NvY2tldHAgPSB2YV9hcmcoYXJnLCBjdXJsX3NvY2tldF90ICopOworICAgIGlmKHBhcmFtX3NvY2tldHApCisgICAgICByZXN1bHQgPSBnZXRpbmZvX3NvY2tldChkYXRhLCBpbmZvLCBwYXJhbV9zb2NrZXRwKTsKKyAgICBicmVhazsKICAgZGVmYXVsdDoKICAgICBicmVhazsKICAgfQpkaWZmIC0tZ2l0IGEvbGliL2dldGluZm8uaCBiL2xpYi9nZXRpbmZvLmgKaW5kZXggMzg3OWZmNy4uNGMyYzE2OCAxMDA2NDQKLS0tIGEvbGliL2dldGluZm8uaAorKysgYi9saWIvZ2V0aW5mby5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL2dvcGhlci5jIGIvbGliL2dvcGhlci5jCmluZGV4IDk1NGNhZDguLjE5ZjJmNWEgMTAwNjQ0Ci0tLSBhL2xpYi9nb3BoZXIuYworKysgYi9saWIvZ29waGVyLmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtODMsMTYgKzgzLDE4IEBACiAgIGNoYXIgKnNlbDsKICAgY2hhciAqc2VsX29yZyA9IE5VTEw7CiAgIHNzaXplX3QgYW1vdW50LCBrOworICBpbnQgbGVuOwogCiAgICpkb25lID0gVFJVRTsgLyogdW5jb25kaXRpb25hbGx5ICovCiAKICAgLyogQ3JlYXRlIHNlbGVjdG9yLiBEZWdlbmVyYXRlIGNhc2VzOiAvIGFuZCAvMSA9PiBjb252ZXJ0IHRvICIiICovCi0gIGlmKHN0cmxlbihwYXRoKSA8PSAyKQorICBpZihzdHJsZW4ocGF0aCkgPD0gMikgewogICAgIHNlbCA9IChjaGFyICopIiI7CisgICAgbGVuID0gKGludClzdHJsZW4oc2VsKTsKKyAgfQogICBlbHNlIHsKICAgICBjaGFyICpuZXdwOwogICAgIHNpemVfdCBqLCBpOwotICAgIGludCBsZW47CiAKICAgICAvKiBPdGhlcndpc2UsIGRyb3AgLyBhbmQgdGhlIGZpcnN0IGNoYXJhY3RlciAoaS5lLiwgaXRlbSB0eXBlKSAuLi4gKi8KICAgICBuZXdwID0gcGF0aDsKQEAgLTExMyw3ICsxMTUsNyBAQAogCiAgIC8qIFdlIHVzZSBDdXJsX3dyaXRlIGluc3RlYWQgb2YgQ3VybF9zZW5kZiB0byBtYWtlIHN1cmUgdGhlIGVudGlyZSBidWZmZXIgaXMKICAgICAgc2VudCwgd2hpY2ggY291bGQgYmUgc2l6ZWFibGUgd2l0aCBsb25nIHNlbGVjdG9ycy4gKi8KLSAgayA9IGN1cmx4X3V6dG9zeihzdHJsZW4oc2VsKSk7CisgIGsgPSBjdXJseF91enRvc3oobGVuKTsKIAogICBmb3IoOzspIHsKICAgICByZXN1bHQgPSBDdXJsX3dyaXRlKGNvbm4sIHNvY2tmZCwgc2VsLCBrLCAmYW1vdW50KTsKZGlmZiAtLWdpdCBhL2xpYi9nb3BoZXIuaCBiL2xpYi9nb3BoZXIuaAppbmRleCAzOGJiYzRiLi41MDFjOTkwIDEwMDY0NAotLS0gYS9saWIvZ29waGVyLmgKKysrIGIvbGliL2dvcGhlci5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL2hhc2guYyBiL2xpYi9oYXNoLmMKaW5kZXggYzQ2NzYwYS4uOTM3MzgxYiAxMDA2NDQKLS0tIGEvbGliL2hhc2guYworKysgYi9saWIvaGFzaC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjIsOSArMjIsMTIgQEAKIAogI2luY2x1ZGUgImN1cmxfc2V0dXAuaCIKIAorI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCiAjaW5jbHVkZSAiaGFzaC5oIgogI2luY2x1ZGUgImxsaXN0LmgiCiAjaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKKwogLyogVGhlIGxhc3QgI2luY2x1ZGUgZmlsZSBzaG91bGQgYmU6ICovCiAjaW5jbHVkZSAibWVtZGVidWcuaCIKIApAQCAtNDYsNyArNDksMTIgQEAKICAgZnJlZShlKTsKIH0KIAotLyogcmV0dXJuIDEgb24gZXJyb3IsIDAgaXMgZmluZSAqLworLyogSW5pdGlhbGl6ZXMgYSBoYXNoIHN0cnVjdHVyZS4KKyAqIFJldHVybiAxIG9uIGVycm9yLCAwIGlzIGZpbmUuCisgKgorICogQHVuaXR0ZXN0OiAxNjAyCisgKiBAdW5pdHRlc3Q6IDE2MDMKKyAqLwogaW50CiBDdXJsX2hhc2hfaW5pdChzdHJ1Y3QgY3VybF9oYXNoICpoLAogICAgICAgICAgICAgICAgaW50IHNsb3RzLApAQCAtMTE5LDYgKzEyNyw4IEBACiAgKiB0aGF0IGRhdGEgaXMgcmVwbGFjZWQuCiAgKgogICogQHVuaXR0ZXN0OiAxMzA1CisgKiBAdW5pdHRlc3Q6IDE2MDIKKyAqIEB1bml0dGVzdDogMTYwMwogICovCiB2b2lkICoKIEN1cmxfaGFzaF9hZGQoc3RydWN0IGN1cmxfaGFzaCAqaCwgdm9pZCAqa2V5LCBzaXplX3Qga2V5X2xlbiwgdm9pZCAqcCkKQEAgLTE1NSw3ICsxNjUsMTEgQEAKICAgcmV0dXJuIE5VTEw7IC8qIGZhaWx1cmUgKi8KIH0KIAotLyogcmVtb3ZlIHRoZSBpZGVudGlmaWVkIGhhc2ggZW50cnksIHJldHVybnMgbm9uLXplcm8gb24gZmFpbHVyZSAqLworLyogUmVtb3ZlIHRoZSBpZGVudGlmaWVkIGhhc2ggZW50cnkuCisgKiBSZXR1cm5zIG5vbi16ZXJvIG9uIGZhaWx1cmUuCisgKgorICogQHVuaXR0ZXN0OiAxNjAzCisgKi8KIGludCBDdXJsX2hhc2hfZGVsZXRlKHN0cnVjdCBjdXJsX2hhc2ggKmgsIHZvaWQgKmtleSwgc2l6ZV90IGtleV9sZW4pCiB7CiAgIHN0cnVjdCBjdXJsX2xsaXN0X2VsZW1lbnQgKmxlOwpAQCAtMTczLDYgKzE4NywxMCBAQAogICByZXR1cm4gMTsKIH0KIAorLyogUmV0cmlldmVzIGEgaGFzaCBlbGVtZW50LgorICoKKyAqIEB1bml0dGVzdDogMTYwMworICovCiB2b2lkICoKIEN1cmxfaGFzaF9waWNrKHN0cnVjdCBjdXJsX2hhc2ggKmgsIHZvaWQgKmtleSwgc2l6ZV90IGtleV9sZW4pCiB7CkBAIC0yMTQsNiArMjMyLDEwIEBACiAKIC8qIERlc3Ryb3lzIGFsbCB0aGUgZW50cmllcyBpbiB0aGUgZ2l2ZW4gaGFzaCBhbmQgcmVzZXRzIGl0cyBhdHRyaWJ1dGVzLAogICogcHJlcHBpbmcgdGhlIGdpdmVuIGhhc2ggZm9yIFtzdGF0aWN8ZHluYW1pY10gZGVhbGxvY2F0aW9uLgorICoKKyAqIEB1bml0dGVzdDogMTMwNQorICogQHVuaXR0ZXN0OiAxNjAyCisgKiBAdW5pdHRlc3Q6IDE2MDMKICAqLwogdm9pZAogQ3VybF9oYXNoX2Rlc3Ryb3koc3RydWN0IGN1cmxfaGFzaCAqaCkKZGlmZiAtLWdpdCBhL2xpYi9oYXNoLmggYi9saWIvaGFzaC5oCmluZGV4IGIxM2EyMzYuLjU3YTE3ZjAgMTAwNjQ0Ci0tLSBhL2xpYi9oYXNoLmgKKysrIGIvbGliL2hhc2guaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9obWFjLmMgYi9saWIvaG1hYy5jCmluZGV4IDBkMmQ1ZjQuLjNkZjQ3MTUgMTAwNjQ0Ci0tLSBhL2xpYi9obWFjLmMKKysrIGIvbGliL2htYWMuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTI2LDggKzI2LDExIEBACiAKICNpZm5kZWYgQ1VSTF9ESVNBQkxFX0NSWVBUT19BVVRICiAKKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKwogI2luY2x1ZGUgImN1cmxfaG1hYy5oIgogI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCisKIC8qIFRoZSBsYXN0ICNpbmNsdWRlIGZpbGUgc2hvdWxkIGJlOiAqLwogI2luY2x1ZGUgIm1lbWRlYnVnLmgiCiAKZGlmZiAtLWdpdCBhL2xpYi9ob3N0YXN5bi5jIGIvbGliL2hvc3Rhc3luLmMKaW5kZXggMTdiOGJlMC4uYzk2NzM0YSAxMDA2NDQKLS0tIGEvbGliL2hvc3Rhc3luLmMKKysrIGIvbGliL2hvc3Rhc3luLmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL2hvc3RjaGVjay5jIGIvbGliL2hvc3RjaGVjay5jCmluZGV4IDYyYTI2ZTQuLjRkYjllNmIgMTAwNjQ0Ci0tLSBhL2xpYi9ob3N0Y2hlY2suYworKysgYi9saWIvaG9zdGNoZWNrLmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNDMsNyArNDMsNyBAQAogICogICJmb28uaG9zdC5jb20iIG1hdGNoZXMgIiouaG9zdC5jb20iLgogICoKICAqIFdlIHVzZSB0aGUgbWF0Y2hpbmcgcnVsZSBkZXNjcmliZWQgaW4gUkZDNjEyNSwgc2VjdGlvbiA2LjQuMy4KLSAqIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzYxMjUjc2VjdGlvbi02LjQuMworICogaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzYxMjUjc2VjdGlvbi02LjQuMwogICoKICAqIEluIGFkZGl0aW9uOiBpZ25vcmUgdHJhaWxpbmcgZG90cyBpbiB0aGUgaG9zdCBuYW1lcyBhbmQgd2lsZGNhcmRzLCBzbyB0aGF0CiAgKiB0aGUgbmFtZXMgYXJlIHVzZWQgbm9ybWFsaXplZC4gVGhpcyBpcyB3aGF0IHRoZSBicm93c2VycyBkby4KZGlmZiAtLWdpdCBhL2xpYi9ob3N0Y2hlY2suaCBiL2xpYi9ob3N0Y2hlY2suaAppbmRleCBmNGE1MTdhLi44NmUzYjk2IDEwMDY0NAotLS0gYS9saWIvaG9zdGNoZWNrLmgKKysrIGIvbGliL2hvc3RjaGVjay5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL2hvc3RpcC5jIGIvbGliL2hvc3RpcC5jCmluZGV4IDgyZjM4OTcuLmVhZDc4ZGUgMTAwNjQ0Ci0tLSBhL2xpYi9ob3N0aXAuYworKysgYi9saWIvaG9zdGlwLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC01Niw5ICs1Niw5IEBACiAjaW5jbHVkZSAidXJsLmgiCiAjaW5jbHVkZSAiaW5ldF9udG9wLmgiCiAjaW5jbHVkZSAid2Fybmxlc3MuaCIKKy8qIFRoZSBsYXN0IDMgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlIGluIHRoaXMgb3JkZXIgKi8KICNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgogI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCi0vKiBUaGUgbGFzdCAjaW5jbHVkZSBmaWxlIHNob3VsZCBiZTogKi8KICNpbmNsdWRlICJtZW1kZWJ1Zy5oIgogCiAjaWYgZGVmaW5lZChDVVJMUkVTX1NZTkNIKSAmJiBcCkBAIC0zNTMsNyArMzUzLDggQEAKIAogICBkbnMgPSBmZXRjaF9hZGRyKGNvbm4sIGhvc3RuYW1lLCBwb3J0KTsKIAotICBpZihkbnMpIGRucy0+aW51c2UrKzsgLyogd2UgdXNlIGl0ISAqLworICBpZihkbnMpCisgICAgZG5zLT5pbnVzZSsrOyAvKiB3ZSB1c2UgaXQhICovCiAKICAgaWYoZGF0YS0+c2hhcmUpCiAgICAgQ3VybF9zaGFyZV91bmxvY2soZGF0YSwgQ1VSTF9MT0NLX0RBVEFfRE5TKTsKQEAgLTc3Nyw3ICs3NzgsNyBAQAogICBjaGFyIGFkZHJlc3NbMjU2XTsKICAgaW50IHBvcnQ7CiAKLSAgZm9yKGhvc3RwID0gZGF0YS0+Y2hhbmdlLnJlc29sdmU7IGhvc3RwOyBob3N0cCA9IGhvc3RwLT5uZXh0ICkgeworICBmb3IoaG9zdHAgPSBkYXRhLT5jaGFuZ2UucmVzb2x2ZTsgaG9zdHA7IGhvc3RwID0gaG9zdHAtPm5leHQpIHsKICAgICBpZighaG9zdHAtPmRhdGEpCiAgICAgICBjb250aW51ZTsKICAgICBpZihob3N0cC0+ZGF0YVswXSA9PSAnLScpIHsKZGlmZiAtLWdpdCBhL2xpYi9ob3N0aXAuaCBiL2xpYi9ob3N0aXAuaAppbmRleCBkNWI0NGJjLi4zN2NjZDk2IDEwMDY0NAotLS0gYS9saWIvaG9zdGlwLmgKKysrIGIvbGliL2hvc3RpcC5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL2hvc3RpcDQuYyBiL2xpYi9ob3N0aXA0LmMKaW5kZXggMzdiMDM2OS4uMTU4OTVkNyAxMDA2NDQKLS0tIGEvbGliL2hvc3RpcDQuYworKysgYi9saWIvaG9zdGlwNC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNDgsOSArNDgsOSBAQAogI2luY2x1ZGUgInN0cmVycm9yLmgiCiAjaW5jbHVkZSAidXJsLmgiCiAjaW5jbHVkZSAiaW5ldF9wdG9uLmgiCisvKiBUaGUgbGFzdCAzICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZSBpbiB0aGlzIG9yZGVyICovCiAjaW5jbHVkZSAiY3VybF9wcmludGYuaCIKICNpbmNsdWRlICJjdXJsX21lbW9yeS5oIgotLyogVGhlIGxhc3QgI2luY2x1ZGUgZmlsZSBzaG91bGQgYmU6ICovCiAjaW5jbHVkZSAibWVtZGVidWcuaCIKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCmRpZmYgLS1naXQgYS9saWIvaG9zdGlwNi5jIGIvbGliL2hvc3RpcDYuYwppbmRleCA2YWIxMzFhLi41OWJjNGU0IDEwMDY0NAotLS0gYS9saWIvaG9zdGlwNi5jCisrKyBiL2xpYi9ob3N0aXA2LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC00OSw5ICs0OSw5IEBACiAjaW5jbHVkZSAidXJsLmgiCiAjaW5jbHVkZSAiaW5ldF9wdG9uLmgiCiAjaW5jbHVkZSAiY29ubmVjdC5oIgorLyogVGhlIGxhc3QgMyAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmUgaW4gdGhpcyBvcmRlciAqLwogI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCiAjaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKLS8qIFRoZSBsYXN0ICNpbmNsdWRlIGZpbGUgc2hvdWxkIGJlOiAqLwogI2luY2x1ZGUgIm1lbWRlYnVnLmgiCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpAQCAtNTksNyArNTksNiBAQAogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAjaWZkZWYgQ1VSTFJFU19JUFY2CiAKLQogI2lmIGRlZmluZWQoQ1VSTERFQlVHKSAmJiBkZWZpbmVkKEhBVkVfR0VUTkFNRUlORk8pCiAvKiBUaGVzZSBhcmUgc3RyaWN0bHkgZm9yIG1lbW9yeSB0cmFjaW5nIGFuZCBhcmUgdXNpbmcgdGhlIHNhbWUgc3R5bGUgYXMgdGhlCiAgKiBmYW1pbHkgb3RoZXJ3aXNlIHByZXNlbnQgaW4gbWVtZGVidWcuYy4gSSBwdXQgdGhlc2Ugb25lcyBoZXJlIHNpbmNlIHRoZXkKQEAgLTEyNCw2ICsxMjMsNyBAQAogewogICBpZihjb25uLT5pcF92ZXJzaW9uID09IENVUkxfSVBSRVNPTFZFX1Y2KQogICAgIHJldHVybiBDdXJsX2lwdjZ3b3JrcygpOworCiAgIHJldHVybiBUUlVFOwogfQogCkBAIC0xNjksMTMgKzE2OSwxMyBAQAogICBjaGFyICpzYnVmcHRyID0gTlVMTDsKICAgY2hhciBhZGRyYnVmWzEyOF07CiAgIGludCBwZjsKKyNpZiAhZGVmaW5lZChDVVJMX0RJU0FCTEVfVkVSQk9TRV9TVFJJTkdTKQogICBzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSA9IGNvbm4tPmRhdGE7CisjZW5kaWYKIAogICAqd2FpdHAgPSAwOyAvKiBzeW5jaHJvbm91cyByZXNwb25zZSBvbmx5ICovCiAKLSAgLyoKLSAgICogQ2hlY2sgaWYgYSBsaW1pdGVkIG5hbWUgcmVzb2x2ZSBoYXMgYmVlbiByZXF1ZXN0ZWQuCi0gICAqLworICAvKiBDaGVjayBpZiBhIGxpbWl0ZWQgbmFtZSByZXNvbHZlIGhhcyBiZWVuIHJlcXVlc3RlZCAqLwogICBzd2l0Y2goY29ubi0+aXBfdmVyc2lvbikgewogICBjYXNlIENVUkxfSVBSRVNPTFZFX1Y0OgogICAgIHBmID0gUEZfSU5FVDsKQEAgLTIwNiw2ICsyMDYsNyBAQAogICAgIHNucHJpbnRmKHNidWYsIHNpemVvZihzYnVmKSwgIiVkIiwgcG9ydCk7CiAgICAgc2J1ZnB0cj1zYnVmOwogICB9CisKICAgZXJyb3IgPSBDdXJsX2dldGFkZHJpbmZvX2V4KGhvc3RuYW1lLCBzYnVmcHRyLCAmaGludHMsICZyZXMpOwogICBpZihlcnJvcikgewogICAgIGluZm9mKGRhdGEsICJnZXRhZGRyaW5mbygzKSBmYWlsZWQgZm9yICVzOiVkXG4iLCBob3N0bmFtZSwgcG9ydCk7CkBAIC0yMTcsNSArMjE4LDUgQEAKICAgcmV0dXJuIHJlczsKIH0KICNlbmRpZiAvKiBDVVJMUkVTX1NZTkNIICovCi0jZW5kaWYgLyogQ1VSTFJFU19JUFY2ICovCiAKKyNlbmRpZiAvKiBDVVJMUkVTX0lQVjYgKi8KZGlmZiAtLWdpdCBhL2xpYi9ob3N0c3luLmMgYi9saWIvaG9zdHN5bi5jCmluZGV4IGZiMWRlMzUuLmRiNGM4MmYgMTAwNjQ0Ci0tLSBhL2xpYi9ob3N0c3luLmMKKysrIGIvbGliL2hvc3RzeW4uYwpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvaHR0cC5jIGIvbGliL2h0dHAuYwppbmRleCBlMDZjNzk4Li42YTc2Yjg4IDEwMDY0NAotLS0gYS9saWIvaHR0cC5jCisrKyBiL2xpYi9odHRwLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC01NCw5ICs1NCwxMCBAQAogI2luY2x1ZGUgImN1cmxfYmFzZTY0LmgiCiAjaW5jbHVkZSAiY29va2llLmgiCiAjaW5jbHVkZSAic3RyZXF1YWwuaCIKKyNpbmNsdWRlICJ2YXV0aC92YXV0aC5oIgogI2luY2x1ZGUgInZ0bHMvdnRscy5oIgogI2luY2x1ZGUgImh0dHBfZGlnZXN0LmgiCi0jaW5jbHVkZSAiY3VybF9udGxtLmgiCisjaW5jbHVkZSAiaHR0cF9udGxtLmgiCiAjaW5jbHVkZSAiY3VybF9udGxtX3diLmgiCiAjaW5jbHVkZSAiaHR0cF9uZWdvdGlhdGUuaCIKICNpbmNsdWRlICJ1cmwuaCIKQEAgLTc2LDkgKzc3LDkgQEAKICNpbmNsdWRlICJwaXBlbGluZS5oIgogI2luY2x1ZGUgImh0dHAyLmgiCiAjaW5jbHVkZSAiY29ubmVjdC5oIgotI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCiAKLS8qIFRoZSBsYXN0ICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZTogKi8KKy8qIFRoZSBsYXN0IDMgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlIGluIHRoaXMgb3JkZXIgKi8KKyNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgogI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCiAjaW5jbHVkZSAibWVtZGVidWcuaCIKIApAQCAtODYsNyArODcsNiBAQAogICogRm9yd2FyZCBkZWNsYXJhdGlvbnMuCiAgKi8KIAotc3RhdGljIENVUkxjb2RlIGh0dHBfZGlzY29ubmVjdChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGJvb2wgZGVhZCk7CiBzdGF0aWMgaW50IGh0dHBfZ2V0c29ja19kbyhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJsX3NvY2tldF90ICpzb2NrcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBudW1zb2Nrcyk7CkBAIC0xMTcsNyArMTE3LDcgQEAKICAgaHR0cF9nZXRzb2NrX2RvLCAgICAgICAgICAgICAgICAgICAgICAvKiBkb2luZ19nZXRzb2NrICovCiAgIFpFUk9fTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZG9tb3JlX2dldHNvY2sgKi8KICAgWkVST19OVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBwZXJmb3JtX2dldHNvY2sgKi8KLSAgaHR0cF9kaXNjb25uZWN0LCAgICAgICAgICAgICAgICAgICAgICAvKiBkaXNjb25uZWN0ICovCisgIFpFUk9fTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZGlzY29ubmVjdCAqLwogICBaRVJPX05VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHJlYWR3cml0ZSAqLwogICBQT1JUX0hUVFAsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRlZnBvcnQgKi8KICAgQ1VSTFBST1RPX0hUVFAsICAgICAgICAgICAgICAgICAgICAgICAvKiBwcm90b2NvbCAqLwpAQCAtMTQxLDE1ICsxNDEsMTQgQEAKICAgaHR0cF9nZXRzb2NrX2RvLCAgICAgICAgICAgICAgICAgICAgICAvKiBkb2luZ19nZXRzb2NrICovCiAgIFpFUk9fTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZG9tb3JlX2dldHNvY2sgKi8KICAgWkVST19OVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBwZXJmb3JtX2dldHNvY2sgKi8KLSAgaHR0cF9kaXNjb25uZWN0LCAgICAgICAgICAgICAgICAgICAgICAvKiBkaXNjb25uZWN0ICovCisgIFpFUk9fTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZGlzY29ubmVjdCAqLwogICBaRVJPX05VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHJlYWR3cml0ZSAqLwogICBQT1JUX0hUVFBTLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRlZnBvcnQgKi8KICAgQ1VSTFBST1RPX0hUVFBTLCAgICAgICAgICAgICAgICAgICAgICAvKiBwcm90b2NvbCAqLwotICBQUk9UT1BUX1NTTCB8IFBST1RPUFRfQ1JFRFNQRVJSRVFVRVNUIC8qIGZsYWdzICovCisgIFBST1RPUFRfU1NMIHwgUFJPVE9QVF9DUkVEU1BFUlJFUVVFU1QgfCBQUk9UT1BUX0FMUE5fTlBOIC8qIGZsYWdzICovCiB9OwogI2VuZGlmCiAKLQogQ1VSTGNvZGUgQ3VybF9odHRwX3NldHVwX2Nvbm4oc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKQogewogICAvKiBhbGxvY2F0ZSB0aGUgSFRUUC1zcGVjaWZpYyBzdHJ1Y3QgZm9yIHRoZSBTZXNzaW9uSGFuZGxlLCBvbmx5IHRvIHN1cnZpdmUKQEAgLTE2NCwyNSArMTYzLDExIEBACiAgIGNvbm4tPmRhdGEtPnJlcS5wcm90b3AgPSBodHRwOwogCiAgIEN1cmxfaHR0cDJfc2V0dXBfY29ubihjb25uKTsKKyAgQ3VybF9odHRwMl9zZXR1cF9yZXEoY29ubi0+ZGF0YSk7CiAKICAgcmV0dXJuIENVUkxFX09LOwogfQogCi1zdGF0aWMgQ1VSTGNvZGUgaHR0cF9kaXNjb25uZWN0KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgYm9vbCBkZWFkX2Nvbm5lY3Rpb24pCi17Ci0jaWZkZWYgVVNFX05HSFRUUDIKLSAgc3RydWN0IEhUVFAgKmh0dHAgPSBjb25uLT5kYXRhLT5yZXEucHJvdG9wOwotICBpZihodHRwKSB7Ci0gICAgQ3VybF9hZGRfYnVmZmVyX2ZyZWUoaHR0cC0+aGVhZGVyX3JlY3ZidWYpOwotICAgIGh0dHAtPmhlYWRlcl9yZWN2YnVmID0gTlVMTDsgLyogY2xlYXIgdGhlIHBvaW50ZXIgKi8KLSAgfQotI2Vsc2UKLSAgKHZvaWQpY29ubjsKLSNlbmRpZgotICAodm9pZClkZWFkX2Nvbm5lY3Rpb247Ci0gIHJldHVybiBDVVJMRV9PSzsKLX0KLQogLyoKICAqIGNoZWNraGVhZGVycygpIGNoZWNrcyB0aGUgbGlua2VkIGxpc3Qgb2YgY3VzdG9tIEhUVFAgaGVhZGVycyBmb3IgYQogICogcGFydGljdWxhciBoZWFkZXIgKHByZWZpeCkuCkBAIC0yMDAsNiArMTg1LDcgQEAKICAgICBpZihDdXJsX3Jhd19uZXF1YWwoaGVhZC0+ZGF0YSwgdGhpc2hlYWRlciwgdGhpc2xlbikpCiAgICAgICByZXR1cm4gaGVhZC0+ZGF0YTsKICAgfQorCiAgIHJldHVybiBOVUxMOwogfQogCkBAIC0yMTEsNyArMTk3LDYgQEAKICAqIEl0IHRha2VzIGEgY29ubmVjdGRhdGEgc3RydWN0IGFzIGlucHV0IGluc3RlYWQgb2YgdGhlIFNlc3Npb25IYW5kbGUgc2ltcGx5CiAgKiB0byBrbm93IGlmIHRoaXMgaXMgYSBwcm94eSByZXF1ZXN0IG9yIG5vdCwgYXMgaXQgdGhlbiBtaWdodCBjaGVjayBhCiAgKiBkaWZmZXJlbnQgaGVhZGVyIGxpc3QuCi0gKgogICovCiBjaGFyICpDdXJsX2NoZWNrUHJveHloZWFkZXJzKGNvbnN0IHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdGhpc2hlYWRlcikKQEAgLTIyMCwxMiArMjA1LDEzIEBACiAgIHNpemVfdCB0aGlzbGVuID0gc3RybGVuKHRoaXNoZWFkZXIpOwogICBzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSA9IGNvbm4tPmRhdGE7CiAKLSAgZm9yKGhlYWQgPSAoY29ubi0+Yml0cy5wcm94eSAmJiBkYXRhLT5zZXQuc2VwX2hlYWRlcnMpPwotICAgICAgICBkYXRhLT5zZXQucHJveHloZWFkZXJzOmRhdGEtPnNldC5oZWFkZXJzOworICBmb3IoaGVhZCA9IChjb25uLT5iaXRzLnByb3h5ICYmIGRhdGEtPnNldC5zZXBfaGVhZGVycykgPworICAgICAgICBkYXRhLT5zZXQucHJveHloZWFkZXJzIDogZGF0YS0+c2V0LmhlYWRlcnM7CiAgICAgICBoZWFkOyBoZWFkPWhlYWQtPm5leHQpIHsKICAgICBpZihDdXJsX3Jhd19uZXF1YWwoaGVhZC0+ZGF0YSwgdGhpc2hlYWRlciwgdGhpc2xlbikpCiAgICAgICByZXR1cm4gaGVhZC0+ZGF0YTsKICAgfQorCiAgIHJldHVybiBOVUxMOwogfQogCkBAIC0zMjQsNyArMzEwLDcgQEAKIAogICBmcmVlKCp1c2VycCk7CiAgICp1c2VycCA9IGFwcmludGYoIiVzQXV0aG9yaXphdGlvbjogQmFzaWMgJXNcclxuIiwKLSAgICAgICAgICAgICAgICAgICBwcm94eT8iUHJveHktIjoiIiwKKyAgICAgICAgICAgICAgICAgICBwcm94eSA/ICJQcm94eS0iIDogIiIsCiAgICAgICAgICAgICAgICAgICAgYXV0aG9yaXphdGlvbik7CiAgIGZyZWUoYXV0aG9yaXphdGlvbik7CiAgIGlmKCEqdXNlcnApCkBAIC01NDMsNyArNTI5LDYgQEAKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgIH0KLQogICBlbHNlIGlmKChkYXRhLT5yZXEuaHR0cGNvZGUgPCAzMDApICYmCiAgICAgICAgICAgKCFkYXRhLT5zdGF0ZS5hdXRoaG9zdC5kb25lKSAmJgogICAgICAgICAgIGNvbm4tPmJpdHMuYXV0aG5lZykgewpAQCAtNTY4LDcgKzU1Myw2IEBACiAgIHJldHVybiByZXN1bHQ7CiB9CiAKLQogLyoKICAqIE91dHB1dCB0aGUgY29ycmVjdCBhdXRoZW50aWNhdGlvbiBoZWFkZXIgZGVwZW5kaW5nIG9uIHRoZSBhdXRoIHR5cGUKICAqIGFuZCB3aGV0aGVyIG9yIG5vdCBpdCBpcyB0byBhIHByb3h5LgpAQCAtNTgyLDEyICs1NjYsMTIgQEAKIHsKICAgY29uc3QgY2hhciAqYXV0aCA9IE5VTEw7CiAgIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOwotI2lmIGRlZmluZWQoVVNFX1NQTkVHTykgfHwgIWRlZmluZWQoQ1VSTF9ESVNBQkxFX1ZFUkJPU0VfU1RSSU5HUykKKyNpZiAhZGVmaW5lZChDVVJMX0RJU0FCTEVfVkVSQk9TRV9TVFJJTkdTKSB8fCBkZWZpbmVkKFVTRV9TUE5FR08pCiAgIHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhID0gY29ubi0+ZGF0YTsKICNlbmRpZgogI2lmZGVmIFVTRV9TUE5FR08KLSAgc3RydWN0IG5lZ290aWF0ZWRhdGEgKm5lZ2RhdGEgPSBwcm94eT8KLSAgICAmZGF0YS0+c3RhdGUucHJveHluZWc6JmRhdGEtPnN0YXRlLm5lZ290aWF0ZTsKKyAgc3RydWN0IG5lZ290aWF0ZWRhdGEgKm5lZ2RhdGEgPSBwcm94eSA/CisgICAgJmRhdGEtPnN0YXRlLnByb3h5bmVnIDogJmRhdGEtPnN0YXRlLm5lZ290aWF0ZTsKICNlbmRpZgogCiAjaWZkZWYgQ1VSTF9ESVNBQkxFX0NSWVBUT19BVVRICkBAIC01OTksNyArNTgzLDcgQEAKICAgbmVnZGF0YS0+c3RhdGUgPSBHU1NfQVVUSE5PTkU7CiAgIGlmKChhdXRoc3RhdHVzLT5waWNrZWQgPT0gQ1VSTEFVVEhfTkVHT1RJQVRFKSAmJgogICAgICBuZWdkYXRhLT5jb250ZXh0ICYmICFHU1NfRVJST1IobmVnZGF0YS0+c3RhdHVzKSkgewotICAgIGF1dGg9Ik5lZ290aWF0ZSI7CisgICAgYXV0aCA9ICJOZWdvdGlhdGUiOwogICAgIHJlc3VsdCA9IEN1cmxfb3V0cHV0X25lZ290aWF0ZShjb25uLCBwcm94eSk7CiAgICAgaWYocmVzdWx0KQogICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTYxMCw3ICs1OTQsNyBAQAogI2VuZGlmCiAjaWZkZWYgVVNFX05UTE0KICAgaWYoYXV0aHN0YXR1cy0+cGlja2VkID09IENVUkxBVVRIX05UTE0pIHsKLSAgICBhdXRoPSJOVExNIjsKKyAgICBhdXRoID0gIk5UTE0iOwogICAgIHJlc3VsdCA9IEN1cmxfb3V0cHV0X250bG0oY29ubiwgcHJveHkpOwogICAgIGlmKHJlc3VsdCkKICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC02MjgsNyArNjEyLDcgQEAKICNlbmRpZgogI2lmbmRlZiBDVVJMX0RJU0FCTEVfQ1JZUFRPX0FVVEgKICAgaWYoYXV0aHN0YXR1cy0+cGlja2VkID09IENVUkxBVVRIX0RJR0VTVCkgewotICAgIGF1dGg9IkRpZ2VzdCI7CisgICAgYXV0aCA9ICJEaWdlc3QiOwogICAgIHJlc3VsdCA9IEN1cmxfb3V0cHV0X2RpZ2VzdChjb25uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm94eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilyZXF1ZXN0LApAQCAtNjQ0LDExICs2MjgsMTIgQEAKICAgICAgICAgIUN1cmxfY2hlY2tQcm94eWhlYWRlcnMoY29ubiwgIlByb3h5LWF1dGhvcml6YXRpb246IikpIHx8CiAgICAgICAgKCFwcm94eSAmJiBjb25uLT5iaXRzLnVzZXJfcGFzc3dkICYmCiAgICAgICAgICFDdXJsX2NoZWNraGVhZGVycyhjb25uLCAiQXV0aG9yaXphdGlvbjoiKSkpIHsKLSAgICAgIGF1dGg9IkJhc2ljIjsKKyAgICAgIGF1dGggPSAiQmFzaWMiOwogICAgICAgcmVzdWx0ID0gaHR0cF9vdXRwdXRfYmFzaWMoY29ubiwgcHJveHkpOwogICAgICAgaWYocmVzdWx0KQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KKwogICAgIC8qIE5PVEU6IHRoaXMgZnVuY3Rpb24gc2hvdWxkIHNldCAnZG9uZScgVFJVRSwgYXMgdGhlIG90aGVyIGF1dGgKICAgICAgICBmdW5jdGlvbnMgd29yayB0aGF0IHdheSAqLwogICAgIGF1dGhzdGF0dXMtPmRvbmUgPSBUUlVFOwpAQCAtNjU2LDkgKzY0MSw5IEBACiAKICAgaWYoYXV0aCkgewogICAgIGluZm9mKGRhdGEsICIlcyBhdXRoIHVzaW5nICVzIHdpdGggdXNlciAnJXMnXG4iLAotICAgICAgICAgIHByb3h5PyJQcm94eSI6IlNlcnZlciIsIGF1dGgsCi0gICAgICAgICAgcHJveHk/KGNvbm4tPnByb3h5dXNlcj9jb25uLT5wcm94eXVzZXI6IiIpOgotICAgICAgICAgICAgICAgIChjb25uLT51c2VyP2Nvbm4tPnVzZXI6IiIpKTsKKyAgICAgICAgICBwcm94eSA/ICJQcm94eSIgOiAiU2VydmVyIiwgYXV0aCwKKyAgICAgICAgICBwcm94eSA/IChjb25uLT5wcm94eXVzZXIgPyBjb25uLT5wcm94eXVzZXIgOiAiIikgOgorICAgICAgICAgICAgICAgICAgKGNvbm4tPnVzZXIgPyBjb25uLT51c2VyIDogIiIpKTsKICAgICBhdXRoc3RhdHVzLT5tdWx0aSA9ICghYXV0aHN0YXR1cy0+ZG9uZSkgPyBUUlVFIDogRkFMU0U7CiAgIH0KICAgZWxzZQpAQCAtNzUwLDcgKzczNSw2IEBACiAgIHJldHVybiByZXN1bHQ7CiB9CiAKLQogLyoKICAqIEN1cmxfaHR0cF9pbnB1dF9hdXRoKCkgZGVhbHMgd2l0aCBQcm94eS1BdXRoZW50aWNhdGU6IGFuZCBXV1ctQXV0aGVudGljYXRlOgogICogaGVhZGVycy4gVGhleSBhcmUgZGVhbHQgd2l0aCBib3RoIGluIHRoZSB0cmFuc2Zlci5jIG1haW4gbG9vcCBhbmQgaW4gdGhlCkBAIC03OTUsNyArNzc5LDYgQEAKICAgICogcmVxdWVzdCBpcyBzZW50LCBhbmQgdGhlbiBpdCBpcyBhZ2FpbiBzZXQgX2FmdGVyXyBhbGwgcmVzcG9uc2UgNDAxLzQwNwogICAgKiBoZWFkZXJzIGhhdmUgYmVlbiByZWNlaXZlZCBidXQgdGhlbiBvbmx5IHRvIGEgc2luZ2xlIHByZWZlcnJlZCBtZXRob2QKICAgICogKGJpdCkuCi0gICAqCiAgICAqLwogCiAgIHdoaWxlKCphdXRoKSB7CkBAIC05MDgsNiArODkxLDcgQEAKICAgICB3aGlsZSgqYXV0aCAmJiBJU1NQQUNFKCphdXRoKSkKICAgICAgIGF1dGgrKzsKICAgfQorCiAgIHJldHVybiBDVVJMRV9PSzsKIH0KIApAQCAtOTQ5LDggKzkzMyw3IEBACiAgICoqIEFueSBjb2RlID49IDQwMCB0aGF0J3Mgbm90IDQwMSBvciA0MDcgaXMgYWx3YXlzCiAgICoqIGEgdGVybWluYWwgZXJyb3IKICAgKi8KLSAgaWYoKGh0dHBjb2RlICE9IDQwMSkgJiYKLSAgICAgIChodHRwY29kZSAhPSA0MDcpKQorICBpZigoaHR0cGNvZGUgIT0gNDAxKSAmJiAoaHR0cGNvZGUgIT0gNDA3KSkKICAgICByZXR1cm4gMTsKIAogICAvKgpAQCAtMTAwMSw3ICs5ODQsNyBAQAogICBzdHJ1Y3QgSFRUUCAqaHR0cCA9IGNvbm4tPmRhdGEtPnJlcS5wcm90b3A7CiAgIHNpemVfdCBmdWxsc2l6ZSA9IHNpemUgKiBuaXRlbXM7CiAKLSAgaWYoMCA9PSBodHRwLT5wb3N0c2l6ZSkKKyAgaWYoIWh0dHAtPnBvc3RzaXplKQogICAgIC8qIG5vdGhpbmcgdG8gcmV0dXJuICovCiAgICAgcmV0dXJuIDA7CiAKQEAgLTEwMTYsOCArOTk5LDggQEAKICAgICAgIC8qIG1vdmUgYmFja3VwIGRhdGEgaW50byBmb2N1cyBhbmQgY29udGludWUgb24gdGhhdCAqLwogICAgICAgaHR0cC0+cG9zdGRhdGEgPSBodHRwLT5iYWNrdXAucG9zdGRhdGE7CiAgICAgICBodHRwLT5wb3N0c2l6ZSA9IGh0dHAtPmJhY2t1cC5wb3N0c2l6ZTsKLSAgICAgIGNvbm4tPmRhdGEtPnNldC5mcmVhZF9mdW5jID0gaHR0cC0+YmFja3VwLmZyZWFkX2Z1bmM7Ci0gICAgICBjb25uLT5kYXRhLT5zZXQuaW4gPSBodHRwLT5iYWNrdXAuZnJlYWRfaW47CisgICAgICBjb25uLT5kYXRhLT5zdGF0ZS5mcmVhZF9mdW5jID0gaHR0cC0+YmFja3VwLmZyZWFkX2Z1bmM7CisgICAgICBjb25uLT5kYXRhLT5zdGF0ZS5pbiA9IGh0dHAtPmJhY2t1cC5mcmVhZF9pbjsKIAogICAgICAgaHR0cC0+c2VuZGluZysrOyAvKiBtb3ZlIG9uZSBzdGVwIHVwICovCiAKQEAgLTExMDcsMTUgKzEwOTAsMTQgQEAKICAgICByZXR1cm4gcmVzdWx0OwogICB9CiAKLQotICBpZihjb25uLT5oYW5kbGVyLT5mbGFncyAmIFBST1RPUFRfU1NMKSB7CisgIGlmKChjb25uLT5oYW5kbGVyLT5mbGFncyAmIFBST1RPUFRfU1NMKSAmJiBjb25uLT5odHRwdmVyc2lvbiAhPSAyMCkgewogICAgIC8qIFdlIG5ldmVyIHNlbmQgbW9yZSB0aGFuIENVUkxfTUFYX1dSSVRFX1NJWkUgYnl0ZXMgaW4gb25lIHNpbmdsZSBjaHVuawogICAgICAgIHdoZW4gd2Ugc3BlYWsgSFRUUFMsIGFzIGlmIG9ubHkgYSBmcmFjdGlvbiBvZiBpdCBpcyBzZW50IG5vdywgdGhpcyBkYXRhCiAgICAgICAgbmVlZHMgdG8gZml0IGludG8gdGhlIG5vcm1hbCByZWFkLWNhbGxiYWNrIGJ1ZmZlciBsYXRlciBvbiBhbmQgdGhhdAogICAgICAgIGJ1ZmZlciBpcyB1c2luZyB0aGlzIHNpemUuCiAgICAgKi8KIAotICAgIHNlbmRzaXplPSAoc2l6ZSA+IENVUkxfTUFYX1dSSVRFX1NJWkUpP0NVUkxfTUFYX1dSSVRFX1NJWkU6c2l6ZTsKKyAgICBzZW5kc2l6ZSA9IChzaXplID4gQ1VSTF9NQVhfV1JJVEVfU0laRSkgPyBDVVJMX01BWF9XUklURV9TSVpFIDogc2l6ZTsKIAogICAgIC8qIE9wZW5TU0wgaXMgdmVyeSBwaWNreSBhbmQgd2UgbXVzdCBzZW5kIHRoZSBTQU1FIGJ1ZmZlciBwb2ludGVyIHRvIHRoZQogICAgICAgIGxpYnJhcnkgd2hlbiB3ZSBhdHRlbXB0IHRvIHJlLXNlbmQgdGhpcyBidWZmZXIuIFNlbmRpbmcgdGhlIHNhbWUgZGF0YQpAQCAtMTEzOCw3ICsxMTIwLDcgQEAKICAgICAgKiBvbmx5IHNlbmQgYXdheSBhIHBhcnQpLgogICAgICAqLwogICAgIC8qIGhvdyBtdWNoIG9mIHRoZSBoZWFkZXIgdGhhdCB3YXMgc2VudCAqLwotICAgIHNpemVfdCBoZWFkbGVuID0gKHNpemVfdClhbW91bnQ+aGVhZGVyc2l6ZT9oZWFkZXJzaXplOihzaXplX3QpYW1vdW50OworICAgIHNpemVfdCBoZWFkbGVuID0gKHNpemVfdClhbW91bnQ+aGVhZGVyc2l6ZSA/IGhlYWRlcnNpemUgOiAoc2l6ZV90KWFtb3VudDsKICAgICBzaXplX3QgYm9keWxlbiA9IGFtb3VudCAtIGhlYWRsZW47CiAKICAgICBpZihjb25uLT5kYXRhLT5zZXQudmVyYm9zZSkgewpAQCAtMTE1MSwxMCArMTEzMyw2IEBACiAgICAgICAgICAgICAgICAgICAgcHRyK2hlYWRsZW4sIGJvZHlsZW4sIGNvbm4pOwogICAgICAgfQogICAgIH0KLSAgICBpZihib2R5bGVuKQotICAgICAgLyogc2luY2Ugd2Ugc2VudCBhIHBpZWNlIG9mIHRoZSBib2R5IGhlcmUsIHVwIHRoZSBieXRlIGNvdW50ZXIgZm9yIGl0Ci0gICAgICAgICBhY2NvcmRpbmdseSAqLwotICAgICAgaHR0cC0+d3JpdGVieXRlY291bnQgKz0gYm9keWxlbjsKIAogICAgIC8qICdhbW91bnQnIGNhbiBuZXZlciBiZSBhIHZlcnkgbGFyZ2UgdmFsdWUgaGVyZSBzbyB0eXBlY2FzdGluZyBpdCBzbyBhCiAgICAgICAgc2lnbmVkIDMxIGJpdCB2YWx1ZSBzaG91bGQgbm90IGNhdXNlIHByb2JsZW1zIGV2ZW4gaWYgc3NpemVfdCBpcwpAQCAtMTE2Miw2ICsxMTQwLDEwIEBACiAgICAgKmJ5dGVzX3dyaXR0ZW4gKz0gKGxvbmcpYW1vdW50OwogCiAgICAgaWYoaHR0cCkgeworICAgICAgLyogaWYgd2Ugc2VudCBhIHBpZWNlIG9mIHRoZSBib2R5IGhlcmUsIHVwIHRoZSBieXRlIGNvdW50ZXIgZm9yIGl0CisgICAgICAgICBhY2NvcmRpbmdseSAqLworICAgICAgaHR0cC0+d3JpdGVieXRlY291bnQgKz0gYm9keWxlbjsKKwogICAgICAgaWYoKHNpemVfdClhbW91bnQgIT0gc2l6ZSkgewogICAgICAgICAvKiBUaGUgd2hvbGUgcmVxdWVzdCBjb3VsZCBub3QgYmUgc2VudCBpbiBvbmUgc3lzdGVtIGNhbGwuIFdlIG11c3QKICAgICAgICAgICAgcXVldWUgaXQgdXAgYW5kIHNlbmQgaXQgbGF0ZXIgd2hlbiB3ZSBnZXQgdGhlIGNoYW5jZS4gV2UgbXVzdCBub3QKQEAgLTExNzIsMTQgKzExNTQsMTQgQEAKICAgICAgICAgcHRyID0gaW4tPmJ1ZmZlciArIGFtb3VudDsKIAogICAgICAgICAvKiBiYWNrdXAgdGhlIGN1cnJlbnRseSBzZXQgcG9pbnRlcnMgKi8KLSAgICAgICAgaHR0cC0+YmFja3VwLmZyZWFkX2Z1bmMgPSBjb25uLT5kYXRhLT5zZXQuZnJlYWRfZnVuYzsKLSAgICAgICAgaHR0cC0+YmFja3VwLmZyZWFkX2luID0gY29ubi0+ZGF0YS0+c2V0LmluOworICAgICAgICBodHRwLT5iYWNrdXAuZnJlYWRfZnVuYyA9IGNvbm4tPmRhdGEtPnN0YXRlLmZyZWFkX2Z1bmM7CisgICAgICAgIGh0dHAtPmJhY2t1cC5mcmVhZF9pbiA9IGNvbm4tPmRhdGEtPnN0YXRlLmluOwogICAgICAgICBodHRwLT5iYWNrdXAucG9zdGRhdGEgPSBodHRwLT5wb3N0ZGF0YTsKICAgICAgICAgaHR0cC0+YmFja3VwLnBvc3RzaXplID0gaHR0cC0+cG9zdHNpemU7CiAKICAgICAgICAgLyogc2V0IHRoZSBuZXcgcG9pbnRlcnMgZm9yIHRoZSByZXF1ZXN0LXNlbmRpbmcgKi8KLSAgICAgICAgY29ubi0+ZGF0YS0+c2V0LmZyZWFkX2Z1bmMgPSAoY3VybF9yZWFkX2NhbGxiYWNrKXJlYWRtb3JlZGF0YTsKLSAgICAgICAgY29ubi0+ZGF0YS0+c2V0LmluID0gKHZvaWQgKiljb25uOworICAgICAgICBjb25uLT5kYXRhLT5zdGF0ZS5mcmVhZF9mdW5jID0gKGN1cmxfcmVhZF9jYWxsYmFjaylyZWFkbW9yZWRhdGE7CisgICAgICAgIGNvbm4tPmRhdGEtPnN0YXRlLmluID0gKHZvaWQgKiljb25uOwogICAgICAgICBodHRwLT5wb3N0ZGF0YSA9IHB0cjsKICAgICAgICAgaHR0cC0+cG9zdHNpemUgPSAoY3VybF9vZmZfdClzaXplOwogCkBAIC0xMjU3LDExICsxMjM5LDExIEBACiAgICAgICAgYnVmZmVyIHNpemUgdGhhdCBkb3VibGVzIHRoZSByZXF1aXJlZCBzaXplLiBJZiB0aGlzIG5ldyBzaXplCiAgICAgICAgd291bGQgd3JhcCBzaXplX3QsIHRoZW4ganVzdCB1c2UgdGhlIGxhcmdlc3QgcG9zc2libGUgb25lICovCiAKLSAgICBpZigoc2l6ZSA+IChzaXplX3QpLTEvMikgfHwgKGluLT5zaXplX3VzZWQgPiAoc2l6ZV90KS0xLzIpIHx8Ci0gICAgICAgKH4oc2l6ZSoyKSA8IChpbi0+c2l6ZV91c2VkKjIpKSkKKyAgICBpZigoc2l6ZSA+IChzaXplX3QpLTEgLyAyKSB8fCAoaW4tPnNpemVfdXNlZCA+IChzaXplX3QpLTEgLyAyKSB8fAorICAgICAgICh+KHNpemUgKiAyKSA8IChpbi0+c2l6ZV91c2VkICogMikpKQogICAgICAgbmV3X3NpemUgPSAoc2l6ZV90KS0xOwogICAgIGVsc2UKLSAgICAgIG5ld19zaXplID0gKGluLT5zaXplX3VzZWQrc2l6ZSkqMjsKKyAgICAgIG5ld19zaXplID0gKGluLT5zaXplX3VzZWQrc2l6ZSkgKiAyOwogCiAgICAgaWYoaW4tPmJ1ZmZlcikKICAgICAgIC8qIHdlIGhhdmUgYSBidWZmZXIsIGVubGFyZ2UgdGhlIGV4aXN0aW5nIG9uZSAqLwpAQCAtMTQwOSw3ICsxMzkxLDggQEAKICNlbmRpZgogCiAjaWYgZGVmaW5lZChVU0VfT1BFTlNTTCkgfHwgZGVmaW5lZChVU0VfR05VVExTKSB8fCBkZWZpbmVkKFVTRV9TQ0hBTk5FTCkgfHwgXAotICAgIGRlZmluZWQoVVNFX0RBUldJTlNTTCkgfHwgZGVmaW5lZChVU0VfUE9MQVJTU0wpIHx8IGRlZmluZWQoVVNFX05TUykKKyAgICBkZWZpbmVkKFVTRV9EQVJXSU5TU0wpIHx8IGRlZmluZWQoVVNFX1BPTEFSU1NMKSB8fCBkZWZpbmVkKFVTRV9OU1MpIHx8IFwKKyAgICBkZWZpbmVkKFVTRV9NQkVEVExTKQogLyogVGhpcyBmdW5jdGlvbiBpcyBmb3IgT3BlblNTTCwgR251VExTLCBkYXJ3aW5zc2wsIHNjaGFubmVsIGFuZCBwb2xhcnNzbCBvbmx5LgogICAgSXQgc2hvdWxkIGJlIG1hZGUgdG8gcXVlcnkgdGhlIGdlbmVyaWMgU1NMIGxheWVyIGluc3RlYWQuICovCiBzdGF0aWMgaW50IGh0dHBzX2dldHNvY2soc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLApAQCAtMTQzMyw2ICsxNDE2LDcgQEAKICAgICAgIHJldHVybiBHRVRTT0NLX1JFQURTT0NLKDApOwogICAgIH0KICAgfQorCiAgIHJldHVybiBDVVJMRV9PSzsKIH0KICNlbHNlCkBAIC0xNDUwLDE1ICsxNDM0LDE4IEBACiAjZW5kaWYgLyogVVNFX09QRU5TU0wgfHwgVVNFX0dOVVRMUyB8fCBVU0VfU0NIQU5ORUwgKi8KIAogLyoKLSAqIEN1cmxfaHR0cF9kb25lKCkgZ2V0cyBjYWxsZWQgZnJvbSBDdXJsX2RvbmUoKSBhZnRlciBhIHNpbmdsZSBIVFRQIHJlcXVlc3QKLSAqIGhhcyBiZWVuIHBlcmZvcm1lZC4KKyAqIEN1cmxfaHR0cF9kb25lKCkgZ2V0cyBjYWxsZWQgYWZ0ZXIgYSBzaW5nbGUgSFRUUCByZXF1ZXN0IGhhcyBiZWVuCisgKiBwZXJmb3JtZWQuCiAgKi8KIAogQ1VSTGNvZGUgQ3VybF9odHRwX2RvbmUoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAogICAgICAgICAgICAgICAgICAgICAgICAgQ1VSTGNvZGUgc3RhdHVzLCBib29sIHByZW1hdHVyZSkKIHsKICAgc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEgPSBjb25uLT5kYXRhOwotICBzdHJ1Y3QgSFRUUCAqaHR0cCA9ZGF0YS0+cmVxLnByb3RvcDsKKyAgc3RydWN0IEhUVFAgKmh0dHAgPSBkYXRhLT5yZXEucHJvdG9wOworI2lmZGVmIFVTRV9OR0hUVFAyCisgIHN0cnVjdCBodHRwX2Nvbm4gKmh0dHBjID0gJmNvbm4tPnByb3RvLmh0dHBjOworI2VuZGlmCiAKICAgQ3VybF91bmVuY29kZV9jbGVhbnVwKGNvbm4pOwogCkBAIC0xNDY3LDggKzE0NTQsMTAgQEAKICAgICAgZGF0YS0+c3RhdGUubmVnb3RpYXRlLnN0YXRlID09IEdTU19BVVRIU0VOVCkgewogICAgIC8qIGFkZCBmb3JiaWQgcmUtdXNlIGlmIGh0dHAtY29kZSAhPSA0MDEvNDA3IGFzIGEgV0Egb25seSBuZWVkZWQgZm9yCiAgICAgICogNDAxLzQwNyB0aGF0IHNpZ25hbCBhdXRoIGZhaWx1cmUgKGVtcHR5KSBvdGhlcndpc2Ugc3RhdGUgd2lsbCBiZSBSRUNWCi0gICAgICogd2l0aCBjdXJyZW50IGNvZGUgKi8KLSAgICBpZigoZGF0YS0+cmVxLmh0dHBjb2RlICE9IDQwMSkgJiYgKGRhdGEtPnJlcS5odHRwY29kZSAhPSA0MDcpKQorICAgICAqIHdpdGggY3VycmVudCBjb2RlLgorICAgICAqIERvIG5vdCBjbG9zZSBDT05ORUNUX09OTFkgY29ubmVjdGlvbnMuICovCisgICAgaWYoKGRhdGEtPnJlcS5odHRwY29kZSAhPSA0MDEpICYmIChkYXRhLT5yZXEuaHR0cGNvZGUgIT0gNDA3KSAmJgorICAgICAgICFkYXRhLT5zZXQuY29ubmVjdF9vbmx5KQogICAgICAgY29ubmNsb3NlKGNvbm4sICJOZWdvdGlhdGUgdHJhbnNmZXIgY29tcGxldGVkIik7CiAgICAgQ3VybF9jbGVhbnVwX25lZ290aWF0ZShkYXRhKTsKICAgfQpAQCAtMTQ3OCw3ICsxNDY3LDcgQEAKICAgY29ubi0+c2Vla19mdW5jID0gZGF0YS0+c2V0LnNlZWtfZnVuYzsgLyogcmVzdG9yZSAqLwogICBjb25uLT5zZWVrX2NsaWVudCA9IGRhdGEtPnNldC5zZWVrX2NsaWVudDsgLyogcmVzdG9yZSAqLwogCi0gIGlmKGh0dHAgPT0gTlVMTCkKKyAgaWYoIWh0dHApCiAgICAgcmV0dXJuIENVUkxFX09LOwogCiAgIGlmKGh0dHAtPnNlbmRfYnVmZmVyKSB7CkBAIC0xNDkxLDYgKzE0ODAsMjAgQEAKICAgICBERUJVR0YoaW5mb2YoZGF0YSwgImZyZWUgaGVhZGVyX3JlY3ZidWYhIVxuIikpOwogICAgIEN1cmxfYWRkX2J1ZmZlcl9mcmVlKGh0dHAtPmhlYWRlcl9yZWN2YnVmKTsKICAgICBodHRwLT5oZWFkZXJfcmVjdmJ1ZiA9IE5VTEw7IC8qIGNsZWFyIHRoZSBwb2ludGVyICovCisgICAgQ3VybF9hZGRfYnVmZmVyX2ZyZWUoaHR0cC0+dHJhaWxlcl9yZWN2YnVmKTsKKyAgICBodHRwLT50cmFpbGVyX3JlY3ZidWYgPSBOVUxMOyAvKiBjbGVhciB0aGUgcG9pbnRlciAqLworICAgIGlmKGh0dHAtPnB1c2hfaGVhZGVycykgeworICAgICAgLyogaWYgdGhleSB3ZXJlbid0IHVzZWQgYW5kIHRoZW4gZnJlZWQgYmVmb3JlICovCisgICAgICBmb3IoOyBodHRwLT5wdXNoX2hlYWRlcnNfdXNlZCA+IDA7IC0taHR0cC0+cHVzaF9oZWFkZXJzX3VzZWQpIHsKKyAgICAgICAgZnJlZShodHRwLT5wdXNoX2hlYWRlcnNbaHR0cC0+cHVzaF9oZWFkZXJzX3VzZWQgLSAxXSk7CisgICAgICB9CisgICAgICBmcmVlKGh0dHAtPnB1c2hfaGVhZGVycyk7CisgICAgICBodHRwLT5wdXNoX2hlYWRlcnMgPSBOVUxMOworICAgIH0KKyAgfQorICBpZihodHRwLT5zdHJlYW1faWQpIHsKKyAgICBuZ2h0dHAyX3Nlc3Npb25fc2V0X3N0cmVhbV91c2VyX2RhdGEoaHR0cGMtPmgyLCBodHRwLT5zdHJlYW1faWQsIDApOworICAgIGh0dHAtPnN0cmVhbV9pZCA9IDA7CiAgIH0KICNlbmRpZgogCkBAIC0xNTE0LDkgKzE1MTcsOSBAQAogICAgICAgICAgICAgICAgICAgICAgIGVudGlyZSBvcGVyYXRpb24gaXMgY29tcGxldGUgKi8KICAgICAgIWNvbm4tPmJpdHMucmV0cnkgJiYKICAgICAgIWRhdGEtPnNldC5jb25uZWN0X29ubHkgJiYKLSAgICAgKChodHRwLT5yZWFkYnl0ZWNvdW50ICsKLSAgICAgICBkYXRhLT5yZXEuaGVhZGVyYnl0ZWNvdW50IC0KLSAgICAgICBkYXRhLT5yZXEuZGVkdWN0aGVhZGVyY291bnQpKSA8PSAwKSB7CisgICAgIChodHRwLT5yZWFkYnl0ZWNvdW50ICsKKyAgICAgIGRhdGEtPnJlcS5oZWFkZXJieXRlY291bnQgLQorICAgICAgZGF0YS0+cmVxLmRlZHVjdGhlYWRlcmNvdW50KSA8PSAwKSB7CiAgICAgLyogSWYgdGhpcyBjb25uZWN0aW9uIGlzbid0IHNpbXBseSBjbG9zZWQgdG8gYmUgcmV0cmllZCwgQU5EIG5vdGhpbmcgd2FzCiAgICAgICAgcmVhZCBmcm9tIHRoZSBIVFRQIHNlcnZlciAodGhhdCBjb3VudHMpLCB0aGlzIGNhbid0IGJlIHJpZ2h0IHNvIHdlCiAgICAgICAgcmV0dXJuIGFuIGVycm9yIGhlcmUgKi8KQEAgLTE1MjcsNyArMTUzMCw2IEBACiAgIHJldHVybiBDVVJMRV9PSzsKIH0KIAotCiAvKgogICogRGV0ZXJtaW5lIGlmIHdlIHNob3VsZCB1c2UgSFRUUCAxLjEgKE9SIEJFVFRFUikgZm9yIHRoaXMgcmVxdWVzdC4gUmVhc29ucwogICogdG8gYXZvaWQgaXQgaW5jbHVkZToKQEAgLTE1NDAsMTEgKzE1NDIsMTMgQEAKIHN0YXRpYyBib29sIHVzZV9odHRwXzFfMXBsdXMoY29uc3Qgc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubikKIHsKLSAgcmV0dXJuICgoZGF0YS0+c2V0Lmh0dHB2ZXJzaW9uID49IENVUkxfSFRUUF9WRVJTSU9OXzFfMSkgfHwKLSAgICAgICAgICgoZGF0YS0+c2V0Lmh0dHB2ZXJzaW9uICE9IENVUkxfSFRUUF9WRVJTSU9OXzFfMCkgJiYKLSAgICAgICAgICAoKGNvbm4tPmh0dHB2ZXJzaW9uID09IDExKSB8fAotICAgICAgICAgICAoKGNvbm4tPmh0dHB2ZXJzaW9uICE9IDEwKSAmJgotICAgICAgICAgICAgKGRhdGEtPnN0YXRlLmh0dHB2ZXJzaW9uICE9IDEwKSkpKSkgPyBUUlVFIDogRkFMU0U7CisgIGlmKChkYXRhLT5zdGF0ZS5odHRwdmVyc2lvbiA9PSAxMCkgfHwgKGNvbm4tPmh0dHB2ZXJzaW9uID09IDEwKSkKKyAgICByZXR1cm4gRkFMU0U7CisgIGlmKChkYXRhLT5zZXQuaHR0cHZlcnNpb24gPT0gQ1VSTF9IVFRQX1ZFUlNJT05fMV8wKSAmJgorICAgICAoY29ubi0+aHR0cHZlcnNpb24gPD0gMTApKQorICAgIHJldHVybiBGQUxTRTsKKyAgcmV0dXJuICgoZGF0YS0+c2V0Lmh0dHB2ZXJzaW9uID09IENVUkxfSFRUUF9WRVJTSU9OX05PTkUpIHx8CisgICAgICAgICAgKGRhdGEtPnNldC5odHRwdmVyc2lvbiA+PSBDVVJMX0hUVFBfVkVSU0lPTl8xXzEpKTsKIH0KIAogLyogY2hlY2sgYW5kIHBvc3NpYmx5IGFkZCBhbiBFeHBlY3Q6IGhlYWRlciAqLwpAQCAtMTU3Myw2ICsxNTc3LDcgQEAKICAgICAgICAgZGF0YS0+c3RhdGUuZXhwZWN0MTAwaGVhZGVyID0gVFJVRTsKICAgICB9CiAgIH0KKwogICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xNjkxLDYgKzE2OTYsNyBAQAogICAgICAgaGVhZGVycyA9IGhlYWRlcnMtPm5leHQ7CiAgICAgfQogICB9CisKICAgcmV0dXJuIENVUkxFX09LOwogfQogCkBAIC0xNzAwLDcgKzE3MDYsMTMgQEAKICAgY29uc3Qgc3RydWN0IHRtICp0bTsKICAgY2hhciAqYnVmID0gZGF0YS0+c3RhdGUuYnVmZmVyOwogICBzdHJ1Y3QgdG0ga2VlcHRpbWU7Ci0gIENVUkxjb2RlIHJlc3VsdCA9IEN1cmxfZ210aW1lKGRhdGEtPnNldC50aW1ldmFsdWUsICZrZWVwdGltZSk7CisgIENVUkxjb2RlIHJlc3VsdDsKKworICBpZihkYXRhLT5zZXQudGltZWNvbmRpdGlvbiA9PSBDVVJMX1RJTUVDT05EX05PTkUpCisgICAgLyogbm8gY29uZGl0aW9uIHdhcyBhc2tlZCBmb3IgKi8KKyAgICByZXR1cm4gQ1VSTEVfT0s7CisKKyAgcmVzdWx0ID0gQ3VybF9nbXRpbWUoZGF0YS0+c2V0LnRpbWV2YWx1ZSwgJmtlZXB0aW1lKTsKICAgaWYocmVzdWx0KSB7CiAgICAgZmFpbGYoZGF0YSwgIkludmFsaWQgVElNRVZBTFVFIik7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTE3MjYsOCArMTczOCw5IEBACiAgICAgICAgICAgIHRtLT50bV9zZWMpOwogCiAgIHN3aXRjaChkYXRhLT5zZXQudGltZWNvbmRpdGlvbikgewotICBjYXNlIENVUkxfVElNRUNPTkRfSUZNT0RTSU5DRToKICAgZGVmYXVsdDoKKyAgICBicmVhazsKKyAgY2FzZSBDVVJMX1RJTUVDT05EX0lGTU9EU0lOQ0U6CiAgICAgcmVzdWx0ID0gQ3VybF9hZGRfYnVmZmVyZihyZXFfYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIklmLU1vZGlmaWVkLVNpbmNlOiAlc1xyXG4iLCBidWYpOwogICAgIGJyZWFrOwpAQCAtMTc3OSwxNSArMTc5Miw4IEBACiAgIGlmKGNvbm4tPmh0dHB2ZXJzaW9uIDwgMjApIHsgLyogdW5sZXNzIHRoZSBjb25uZWN0aW9uIGlzIHJlLXVzZWQgYW5kIGFscmVhZHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodHRwMiAqLwogICAgIHN3aXRjaChjb25uLT5uZWducG4pIHsKLSAgICBjYXNlIENVUkxfSFRUUF9WRVJTSU9OXzJfMDoKKyAgICBjYXNlIENVUkxfSFRUUF9WRVJTSU9OXzI6CiAgICAgICBjb25uLT5odHRwdmVyc2lvbiA9IDIwOyAvKiB3ZSBrbm93IHdlJ3JlIG9uIEhUVFAvMiBub3cgKi8KLSAgICAgIHJlc3VsdCA9IEN1cmxfaHR0cDJfaW5pdChjb25uKTsKLSAgICAgIGlmKHJlc3VsdCkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLQotICAgICAgcmVzdWx0ID0gQ3VybF9odHRwMl9zZXR1cChjb25uKTsKLSAgICAgIGlmKHJlc3VsdCkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAogICAgICAgcmVzdWx0ID0gQ3VybF9odHRwMl9zd2l0Y2hlZChjb25uLCBOVUxMLCAwKTsKICAgICAgIGlmKHJlc3VsdCkKQEAgLTE3OTcsNyArMTgwMywxOCBAQAogICAgICAgLyogY29udGludWUgd2l0aCBIVFRQLzEuMSB3aGVuIGV4cGxpY2l0bHkgcmVxdWVzdGVkICovCiAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgotICAgICAgLyogYW5kIGFzIGZhbGxiYWNrICovCisgICAgICAvKiBDaGVjayBpZiB1c2VyIHdhbnRzIHRvIHVzZSBIVFRQLzIgd2l0aCBjbGVhciBUQ1AqLworI2lmZGVmIFVTRV9OR0hUVFAyCisgICAgICBpZihjb25uLT5kYXRhLT5zZXQuaHR0cHZlcnNpb24gPT0KKyAgICAgICAgIENVUkxfSFRUUF9WRVJTSU9OXzJfUFJJT1JfS05PV0xFREdFKSB7CisgICAgICAgIERFQlVHRihpbmZvZihkYXRhLCAiSFRUUC8yIG92ZXIgY2xlYW4gVENQXG4iKSk7CisgICAgICAgIGNvbm4tPmh0dHB2ZXJzaW9uID0gMjA7CisKKyAgICAgICAgcmVzdWx0ID0gQ3VybF9odHRwMl9zd2l0Y2hlZChjb25uLCBOVUxMLCAwKTsKKyAgICAgICAgaWYocmVzdWx0KQorICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICB9CisjZW5kaWYKICAgICAgIGJyZWFrOwogICAgIH0KICAgfQpAQCAtMTgxNyw2ICsxODM0LDggQEAKICAgICBkYXRhLT5zdGF0ZS5maXJzdF9ob3N0ID0gc3RyZHVwKGNvbm4tPmhvc3QubmFtZSk7CiAgICAgaWYoIWRhdGEtPnN0YXRlLmZpcnN0X2hvc3QpCiAgICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKworICAgIGRhdGEtPnN0YXRlLmZpcnN0X3JlbW90ZV9wb3J0ID0gY29ubi0+cmVtb3RlX3BvcnQ7CiAgIH0KICAgaHR0cC0+d3JpdGVieXRlY291bnQgPSBodHRwLT5yZWFkYnl0ZWNvdW50ID0gMDsKIApAQCAtMTg5OCw2ICsxOTE3LDEwIEBACiAgICAgaWYoIWNvbm4tPmFsbG9jcHRyLmFjY2VwdF9lbmNvZGluZykKICAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwogICB9CisgIGVsc2UgeworICAgIEN1cmxfc2FmZWZyZWUoY29ubi0+YWxsb2NwdHIuYWNjZXB0X2VuY29kaW5nKTsKKyAgICBjb25uLT5hbGxvY3B0ci5hY2NlcHRfZW5jb2RpbmcgPSBOVUxMOworICB9CiAKICNpZmRlZiBIQVZFX0xJQloKICAgLyogd2Ugb25seSBjb25zaWRlciB0cmFuc2Zlci1lbmNvZGluZyBtYWdpYyBpZiBsaWJ6IHN1cHBvcnQgaXMgYnVpbHQtaW4gKi8KQEAgLTIxMzMsNyArMjE1Niw3IEBACiAgICAgICogZmlsZSBzaXplIGJlZm9yZSB3ZSBjb250aW51ZSB0aGlzIHZlbnR1cmUgaW4gdGhlIGRhcmsgbGFuZHMgb2YgSFRUUC4KICAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCi0gICAgaWYoZGF0YS0+c3RhdGUucmVzdW1lX2Zyb20gPCAwICkgeworICAgIGlmKGRhdGEtPnN0YXRlLnJlc3VtZV9mcm9tIDwgMCkgewogICAgICAgLyoKICAgICAgICAqIFRoaXMgaXMgbWVhbnQgdG8gZ2V0IHRoZSBzaXplIG9mIHRoZSBwcmVzZW50IHJlbW90ZS1maWxlIGJ5IGl0c2VsZi4KICAgICAgICAqIFdlIGRvbid0IHN1cHBvcnQgdGhpcyBub3cuIEJhaWwgb3V0IQpAQCAtMjE2NSw4ICsyMTg4LDggQEAKICAgICAgICAgICAgICAgQlVGU0laRSA6IGN1cmx4X3NvdG91eihkYXRhLT5zdGF0ZS5yZXN1bWVfZnJvbSAtIHBhc3NlZCk7CiAKICAgICAgICAgICAgIHNpemVfdCBhY3R1YWxseXJlYWQgPQotICAgICAgICAgICAgICBkYXRhLT5zZXQuZnJlYWRfZnVuYyhkYXRhLT5zdGF0ZS5idWZmZXIsIDEsIHJlYWR0aGlzYW1vdW50bm93LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT5zZXQuaW4pOworICAgICAgICAgICAgICBkYXRhLT5zdGF0ZS5mcmVhZF9mdW5jKGRhdGEtPnN0YXRlLmJ1ZmZlciwgMSwgcmVhZHRoaXNhbW91bnRub3csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+c3RhdGUuaW4pOwogCiAgICAgICAgICAgICBwYXNzZWQgKz0gYWN0dWFsbHlyZWFkOwogICAgICAgICAgICAgaWYoKGFjdHVhbGx5cmVhZCA9PSAwKSB8fCAoYWN0dWFsbHlyZWFkID4gcmVhZHRoaXNhbW91bnRub3cpKSB7CkBAIC0yMjgyLDcgKzIzMDUsNiBAQAogICAgICAgICAgICAgICAgICAgICAgIiVzIiAvKiBURTogKi8KICAgICAgICAgICAgICAgICAgICAgICIlcyIgLyogYWNjZXB0LWVuY29kaW5nICovCiAgICAgICAgICAgICAgICAgICAgICAiJXMiIC8qIHJlZmVyZXIgKi8KLSAgICAgICAgICAgICAgICAgICAgICIlcyIgLyogUHJveHktQ29ubmVjdGlvbiAqLwogICAgICAgICAgICAgICAgICAgICAgIiVzIiwvKiB0cmFuc2Zlci1lbmNvZGluZyAqLwogCiAgICAgICAgICAgICAgICAgICAgICBmdHBfdHlwZWNvZGUsCkBAIC0yMzA1LDEwICsyMzI3LDYgQEAKICAgICAgICAgICAgICAgICAgICAgIGNvbm4tPmFsbG9jcHRyLmFjY2VwdF9lbmNvZGluZzoiIiwKICAgICAgICAgICAgICAgICAgICAgIChkYXRhLT5jaGFuZ2UucmVmZXJlciAmJiBjb25uLT5hbGxvY3B0ci5yZWYpPwogICAgICAgICAgICAgICAgICAgICAgY29ubi0+YWxsb2NwdHIucmVmOiIiIC8qIFJlZmVyZXI6IDxkYXRhPiAqLywKLSAgICAgICAgICAgICAgICAgICAgIChjb25uLT5iaXRzLmh0dHBwcm94eSAmJgotICAgICAgICAgICAgICAgICAgICAgICFjb25uLT5iaXRzLnR1bm5lbF9wcm94eSAmJgotICAgICAgICAgICAgICAgICAgICAgICFDdXJsX2NoZWNrUHJveHloZWFkZXJzKGNvbm4sICJQcm94eS1Db25uZWN0aW9uOiIpKT8KLSAgICAgICAgICAgICAgICAgICAgICJQcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlXHJcbiI6IiIsCiAgICAgICAgICAgICAgICAgICAgICB0ZQogICAgICAgKTsKIApAQCAtMjMzMiw3ICsyMzUwLDcgQEAKIAogICBpZighKGNvbm4tPmhhbmRsZXItPmZsYWdzJlBST1RPUFRfU1NMKSAmJgogICAgICBjb25uLT5odHRwdmVyc2lvbiAhPSAyMCAmJgotICAgICAoZGF0YS0+c2V0Lmh0dHB2ZXJzaW9uID09IENVUkxfSFRUUF9WRVJTSU9OXzJfMCkpIHsKKyAgICAgKGRhdGEtPnNldC5odHRwdmVyc2lvbiA9PSBDVVJMX0hUVFBfVkVSU0lPTl8yKSkgewogICAgIC8qIGFwcGVuZCBIVFRQMiB1cGdyYWRlIG1hZ2ljIHN0dWZmIHRvIHRoZSBIVFRQIHJlcXVlc3QgaWYgaXQgaXNuJ3QgZG9uZQogICAgICAgIG92ZXIgU1NMICovCiAgICAgcmVzdWx0ID0gQ3VybF9odHRwMl9yZXF1ZXN0X3VwZ3JhZGUocmVxX2J1ZmZlciwgY29ubik7CkBAIC0yMzkzLDExICsyNDExLDkgQEAKICAgfQogI2VuZGlmCiAKLSAgaWYoZGF0YS0+c2V0LnRpbWVjb25kaXRpb24pIHsKLSAgICByZXN1bHQgPSBDdXJsX2FkZF90aW1lY29uZGl0aW9uKGRhdGEsIHJlcV9idWZmZXIpOwotICAgIGlmKHJlc3VsdCkKLSAgICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KKyAgcmVzdWx0ID0gQ3VybF9hZGRfdGltZWNvbmRpdGlvbihkYXRhLCByZXFfYnVmZmVyKTsKKyAgaWYocmVzdWx0KQorICAgIHJldHVybiByZXN1bHQ7CiAKICAgcmVzdWx0ID0gQ3VybF9hZGRfY3VzdG9tX2hlYWRlcnMoY29ubiwgRkFMU0UsIHJlcV9idWZmZXIpOwogICBpZihyZXN1bHQpCkBAIC0yNDQwLDExICsyNDU2LDExIEBACiAgICAgICAgb24uIFRoZSBkYXRhLT5zZXQuZnJlYWRfZnVuYyBwb2ludGVyIGl0c2VsZiB3aWxsIGJlIGNoYW5nZWQgZm9yIHRoZQogICAgICAgIG11bHRpcGFydCBjYXNlIHRvIHRoZSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSBtdWx0aXBhcnQgZm9ybWF0dGVkCiAgICAgICAgc3RyZWFtLiAqLwotICAgIGh0dHAtPmZvcm0uZnJlYWRfZnVuYyA9IGRhdGEtPnNldC5mcmVhZF9mdW5jOworICAgIGh0dHAtPmZvcm0uZnJlYWRfZnVuYyA9IGRhdGEtPnN0YXRlLmZyZWFkX2Z1bmM7CiAKICAgICAvKiBTZXQgdGhlIHJlYWQgZnVuY3Rpb24gdG8gcmVhZCBmcm9tIHRoZSBnZW5lcmF0ZWQgZm9ybSBkYXRhICovCi0gICAgZGF0YS0+c2V0LmZyZWFkX2Z1bmMgPSAoY3VybF9yZWFkX2NhbGxiYWNrKUN1cmxfRm9ybVJlYWRlcjsKLSAgICBkYXRhLT5zZXQuaW4gPSAmaHR0cC0+Zm9ybTsKKyAgICBkYXRhLT5zdGF0ZS5mcmVhZF9mdW5jID0gKGN1cmxfcmVhZF9jYWxsYmFjaylDdXJsX0Zvcm1SZWFkZXI7CisgICAgZGF0YS0+c3RhdGUuaW4gPSAmaHR0cC0+Zm9ybTsKIAogICAgIGh0dHAtPnNlbmRpbmcgPSBIVFRQU0VORF9CT0RZOwogCkBAIC0yNjYyLDggKzI2NzgsOCBAQAogCiAgICAgICAgIGh0dHAtPnNlbmRpbmcgPSBIVFRQU0VORF9CT0RZOwogCi0gICAgICAgIGRhdGEtPnNldC5mcmVhZF9mdW5jID0gKGN1cmxfcmVhZF9jYWxsYmFjaylyZWFkbW9yZWRhdGE7Ci0gICAgICAgIGRhdGEtPnNldC5pbiA9ICh2b2lkICopY29ubjsKKyAgICAgICAgZGF0YS0+c3RhdGUuZnJlYWRfZnVuYyA9IChjdXJsX3JlYWRfY2FsbGJhY2spcmVhZG1vcmVkYXRhOworICAgICAgICBkYXRhLT5zdGF0ZS5pbiA9ICh2b2lkICopY29ubjsKIAogICAgICAgICAvKiBzZXQgdGhlIHVwbG9hZCBzaXplIHRvIHRoZSBwcm9ncmVzcyBtZXRlciAqLwogICAgICAgICBDdXJsX3BncnNTZXRVcGxvYWRTaXplKGRhdGEsIGh0dHAtPnBvc3RzaXplKTsKQEAgLTMxODgsNiArMzIwNCwxNiBAQAogICAgICAgICAgKi8KICAgICAgICAgaWYoZGF0YS0+c2V0Lm9wdF9ub19ib2R5KQogICAgICAgICAgICpzdG9wX3JlYWRpbmcgPSBUUlVFOworI2lmbmRlZiBDVVJMX0RJU0FCTEVfUlRTUAorICAgICAgICBlbHNlIGlmKChjb25uLT5oYW5kbGVyLT5wcm90b2NvbCAmIENVUkxQUk9UT19SVFNQKSAmJgorICAgICAgICAgICAgICAgIChkYXRhLT5zZXQucnRzcHJlcSA9PSBSVFNQUkVRX0RFU0NSSUJFKSAmJgorICAgICAgICAgICAgICAgIChrLT5zaXplIDw9IC0xKSkKKyAgICAgICAgICAvKiBSZXNwZWN0IHNlY3Rpb24gNC40IG9mIHJmYzIzMjY6IElmIHRoZSBDb250ZW50LUxlbmd0aCBoZWFkZXIgaXMKKyAgICAgICAgICAgICBhYnNlbnQsIGEgbGVuZ3RoIDAgbXVzdCBiZSBhc3N1bWVkLiAgSXQgd2lsbCBwcmV2ZW50IGxpYmN1cmwgZnJvbQorICAgICAgICAgICAgIGhhbmdpbmcgb24gREVDUklCRSByZXF1ZXN0IHRoYXQgZ290IHJlZnVzZWQgZm9yIHdoYXRldmVyCisgICAgICAgICAgICAgcmVhc29uICovCisgICAgICAgICAgKnN0b3BfcmVhZGluZyA9IFRSVUU7CisjZW5kaWYKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgLyogSWYgd2Uga25vdyB0aGUgZXhwZWN0ZWQgc2l6ZSBvZiB0aGlzIGRvY3VtZW50LCB3ZSBzZXQgdGhlCiAgICAgICAgICAgICAgbWF4aW11bSBkb3dubG9hZCBzaXplIHRvIHRoZSBzaXplIG9mIHRoZSBleHBlY3RlZApAQCAtMzU3MSwxNCArMzU5Nyw2IEBACiAgICAgICAgICAgay0+YXV0b19kZWNvZGluZyA9IEdaSVA7CiAgICAgICAgICAgc3RhcnQgKz0gNjsKICAgICAgICAgfQotICAgICAgICBlbHNlIGlmKGNoZWNrcHJlZml4KCJjb21wcmVzcyIsIHN0YXJ0KSkgewotICAgICAgICAgIGstPmF1dG9fZGVjb2RpbmcgPSBDT01QUkVTUzsKLSAgICAgICAgICBzdGFydCArPSA4OwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYoY2hlY2twcmVmaXgoIngtY29tcHJlc3MiLCBzdGFydCkpIHsKLSAgICAgICAgICBrLT5hdXRvX2RlY29kaW5nID0gQ09NUFJFU1M7Ci0gICAgICAgICAgc3RhcnQgKz0gMTA7Ci0gICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICAgIC8qIHVua25vd24hICovCiAgICAgICAgICAgYnJlYWs7CkBAIC0zNTg3LDggKzM2MDUsNyBAQAogCiAgICAgfQogICAgIGVsc2UgaWYoY2hlY2twcmVmaXgoIkNvbnRlbnQtRW5jb2Rpbmc6Iiwgay0+cCkgJiYKLSAgICAgICAgICAgIChkYXRhLT5zZXQuc3RyW1NUUklOR19FTkNPRElOR10gfHwKLSAgICAgICAgICAgICBjb25uLT5odHRwdmVyc2lvbiA9PSAyMCkpIHsKKyAgICAgICAgICAgIGRhdGEtPnNldC5zdHJbU1RSSU5HX0VOQ09ESU5HXSkgewogICAgICAgLyoKICAgICAgICAqIFByb2Nlc3MgQ29udGVudC1FbmNvZGluZy4gTG9vayBmb3IgdGhlIHZhbHVlczogaWRlbnRpdHksCiAgICAgICAgKiBnemlwLCBkZWZsYXRlLCBjb21wcmVzcywgeC1nemlwIGFuZCB4LWNvbXByZXNzLiB4LWd6aXAgYW5kCkBAIC0zNjExLDkgKzM2MjgsNiBAQAogICAgICAgZWxzZSBpZihjaGVja3ByZWZpeCgiZ3ppcCIsIHN0YXJ0KQogICAgICAgICAgICAgICB8fCBjaGVja3ByZWZpeCgieC1nemlwIiwgc3RhcnQpKQogICAgICAgICBrLT5hdXRvX2RlY29kaW5nID0gR1pJUDsKLSAgICAgIGVsc2UgaWYoY2hlY2twcmVmaXgoImNvbXByZXNzIiwgc3RhcnQpCi0gICAgICAgICAgICAgIHx8IGNoZWNrcHJlZml4KCJ4LWNvbXByZXNzIiwgc3RhcnQpKQotICAgICAgICBrLT5hdXRvX2RlY29kaW5nID0gQ09NUFJFU1M7CiAgICAgfQogICAgIGVsc2UgaWYoY2hlY2twcmVmaXgoIkNvbnRlbnQtUmFuZ2U6Iiwgay0+cCkpIHsKICAgICAgIC8qIENvbnRlbnQtUmFuZ2U6IGJ5dGVzIFtudW1dLQpkaWZmIC0tZ2l0IGEvbGliL2h0dHAuaCBiL2xpYi9odHRwLmgKaW5kZXggNDE1YmUzOS4uOTgxNDcyZSAxMDA2NDQKLS0tIGEvbGliL2h0dHAuaAorKysgYi9saWIvaHR0cC5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTYzLDYgKzE2Myw3IEBACiAgIEN1cmxfc2VuZF9idWZmZXIgKmhlYWRlcl9yZWN2YnVmOwogICBzaXplX3QgbnJlYWRfaGVhZGVyX3JlY3ZidWY7IC8qIG51bWJlciBvZiBieXRlcyBpbiBoZWFkZXJfcmVjdmJ1ZiBmZWQgaW50bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwcGVyIGxheWVyICovCisgIEN1cmxfc2VuZF9idWZmZXIgKnRyYWlsZXJfcmVjdmJ1ZjsKICAgaW50IHN0YXR1c19jb2RlOyAvKiBIVFRQIHN0YXR1cyBjb2RlICovCiAgIGNvbnN0IHVpbnQ4X3QgKnBhdXNlZGF0YTsgLyogcG9pbnRlciB0byBkYXRhIHJlY2VpdmVkIGluIG9uX2RhdGFfY2h1bmsgKi8KICAgc2l6ZV90IHBhdXNlbGVuOyAvKiB0aGUgbnVtYmVyIG9mIGJ5dGVzIGxlZnQgaW4gZGF0YSAqLwpAQCAtMTc2LDYgKzE3NywxMCBAQAogICBjb25zdCB1aW50OF90ICp1cGxvYWRfbWVtOyAvKiBwb2ludHMgdG8gYSBidWZmZXIgdG8gcmVhZCBmcm9tICovCiAgIHNpemVfdCB1cGxvYWRfbGVuOyAvKiBzaXplIG9mIHRoZSBidWZmZXIgJ3VwbG9hZF9tZW0nIHBvaW50cyB0byAqLwogICBjdXJsX29mZl90IHVwbG9hZF9sZWZ0OyAvKiBudW1iZXIgb2YgYnl0ZXMgbGVmdCB0byB1cGxvYWQgKi8KKworICBjaGFyICoqcHVzaF9oZWFkZXJzOyAgICAgICAvKiBhbGxvY2F0ZWQgYXJyYXkgKi8KKyAgc2l6ZV90IHB1c2hfaGVhZGVyc191c2VkOyAgLyogbnVtYmVyIG9mIGVudHJpZXMgZmlsbGVkIGluICovCisgIHNpemVfdCBwdXNoX2hlYWRlcnNfYWxsb2M7IC8qIG51bWJlciBvZiBlbnRyaWVzIGFsbG9jYXRlZCAqLwogI2VuZGlmCiB9OwogCkBAIC0yMDksOSArMjE0LDkgQEAKICAgICAgdGhlbSBmb3IgYm90aCBjYXNlcy4gKi8KICAgaW50MzJfdCBwYXVzZV9zdHJlYW1faWQ7IC8qIHN0cmVhbSBJRCB3aGljaCBwYXVzZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5naHR0cDJfc2Vzc2lvbl9tZW1fcmVjdiAqLworICBzaXplX3QgZHJhaW5fdG90YWw7IC8qIHN1bSBvZiBhbGwgc3RyZWFtJ3MgVXJsU3RhdGUuZHJhaW4gKi8KIAogICAvKiB0aGlzIGlzIGEgaGFzaCBvZiBhbGwgaW5kaXZpZHVhbCBzdHJlYW1zIChTZXNzaW9uSGFuZGxlIHN0cnVjdHMpICovCi0gIHN0cnVjdCBjdXJsX2hhc2ggc3RyZWFtc2g7CiAgIHN0cnVjdCBoMnNldHRpbmdzIHNldHRpbmdzOwogI2Vsc2UKICAgaW50IHVudXNlZDsgLyogcHJldmVudCBhIGNvbXBpbGVyIHdhcm5pbmcgKi8KZGlmZiAtLWdpdCBhL2xpYi9odHRwMi5jIGIvbGliL2h0dHAyLmMKaW5kZXggZmE0N2QwZS4uM2ZlMDJhNSAxMDA2NDQKLS0tIGEvbGliL2h0dHAyLmMKKysrIGIvbGliL2h0dHAyLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yMyw3ICsyMyw2IEBACiAjaW5jbHVkZSAiY3VybF9zZXR1cC5oIgogCiAjaWZkZWYgVVNFX05HSFRUUDIKLSNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgogI2luY2x1ZGUgPG5naHR0cDIvbmdodHRwMi5oPgogI2luY2x1ZGUgInVybGRhdGEuaCIKICNpbmNsdWRlICJodHRwMi5oIgpAQCAtMzMsMTcgKzMyLDUxIEBACiAjaW5jbHVkZSAicmF3c3RyLmgiCiAjaW5jbHVkZSAibXVsdGlpZi5oIgogI2luY2x1ZGUgImNvbm5jYWNoZS5oIgorI2luY2x1ZGUgInVybC5oIgorI2luY2x1ZGUgImNvbm5lY3QuaCIKKyNpbmNsdWRlICJzdHJ0b29mZnQuaCIKIAotLyogVGhlIGxhc3QgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlOiAqLworLyogVGhlIGxhc3QgMyAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmUgaW4gdGhpcyBvcmRlciAqLworI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCiAjaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKICNpbmNsdWRlICJtZW1kZWJ1Zy5oIgogCiAjZGVmaW5lIE1JTih4LHkpICgoeCk8KHkpPyh4KTooeSkpCiAKLSNpZiAoTkdIVFRQMl9WRVJTSU9OX05VTSA8IDB4MDAwNjAwKQorI2lmIChOR0hUVFAyX1ZFUlNJT05fTlVNIDwgMHgwMTAwMDApCiAjZXJyb3IgdG9vIG9sZCBuZ2h0dHAyIHZlcnNpb24sIHVwZ3JhZGUhCiAjZW5kaWYKIAorI2lmIChOR0hUVFAyX1ZFUlNJT05fTlVNID4gMHgwMTA4MDApCisjZGVmaW5lIE5HSFRUUDJfSEFTX0hUVFAyX1NUUkVSUk9SIDEKKyNlbmRpZgorCisjaWYgKE5HSFRUUDJfVkVSU0lPTl9OVU0gPj0gMHgwMTA5MDApCisvKiBuZ2h0dHAyX3Nlc3Npb25fY2FsbGJhY2tzX3NldF9lcnJvcl9jYWxsYmFjayBpcyBwcmVzZW50IGluIG5naHR0cDIgMS45LjAgb3IKKyAgIGxhdGVyICovCisjZGVmaW5lIE5HSFRUUDJfSEFTX0VSUk9SX0NBTExCQUNLIDEKKyNlbHNlCisjZGVmaW5lIG5naHR0cDJfc2Vzc2lvbl9jYWxsYmFja3Nfc2V0X2Vycm9yX2NhbGxiYWNrKHgseSkKKyNlbmRpZgorCisvKgorICogQ3VybF9odHRwMl9pbml0X3N0YXRlKCkgaXMgY2FsbGVkIHdoZW4gdGhlIGVhc3kgaGFuZGxlIGlzIGNyZWF0ZWQgYW5kCisgKiBhbGxvd3MgZm9yIEhUVFAvMiBzcGVjaWZpYyBpbml0IG9mIHN0YXRlLgorICovCit2b2lkIEN1cmxfaHR0cDJfaW5pdF9zdGF0ZShzdHJ1Y3QgVXJsU3RhdGUgKnN0YXRlKQoreworICBzdGF0ZS0+c3RyZWFtX3dlaWdodCA9IE5HSFRUUDJfREVGQVVMVF9XRUlHSFQ7Cit9CisKKy8qCisgKiBDdXJsX2h0dHAyX2luaXRfdXNlcnNldCgpIGlzIGNhbGxlZCB3aGVuIHRoZSBlYXN5IGhhbmRsZSBpcyBjcmVhdGVkIGFuZAorICogYWxsb3dzIGZvciBIVFRQLzIgc3BlY2lmaWMgdXNlci1zZXQgZmllbGRzLgorICovCit2b2lkIEN1cmxfaHR0cDJfaW5pdF91c2Vyc2V0KHN0cnVjdCBVc2VyRGVmaW5lZCAqc2V0KQoreworICBzZXQtPnN0cmVhbV93ZWlnaHQgPSBOR0hUVFAyX0RFRkFVTFRfV0VJR0hUOworfQorCiBzdGF0aWMgaW50IGh0dHAyX3BlcmZvcm1fZ2V0c29jayhjb25zdCBzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJsX3NvY2tldF90ICpzb2NrLCAvKiBwb2ludHMgdG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bXNvY2tzCkBAIC03OSw2ICsxMTIsNyBAQAogc3RhdGljIENVUkxjb2RlIGh0dHAyX2Rpc2Nvbm5lY3Qoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkZWFkX2Nvbm5lY3Rpb24pCiB7CisgIHN0cnVjdCBIVFRQICpodHRwID0gY29ubi0+ZGF0YS0+cmVxLnByb3RvcDsKICAgc3RydWN0IGh0dHBfY29ubiAqYyA9ICZjb25uLT5wcm90by5odHRwYzsKICAgKHZvaWQpZGVhZF9jb25uZWN0aW9uOwogCkBAIC04Niw3ICsxMjAsMTggQEAKIAogICBuZ2h0dHAyX3Nlc3Npb25fZGVsKGMtPmgyKTsKICAgQ3VybF9zYWZlZnJlZShjLT5pbmJ1Zik7Ci0gIEN1cmxfaGFzaF9kZXN0cm95KCZjLT5zdHJlYW1zaCk7CisKKyAgaWYoaHR0cCkgeworICAgIEN1cmxfYWRkX2J1ZmZlcl9mcmVlKGh0dHAtPmhlYWRlcl9yZWN2YnVmKTsKKyAgICBodHRwLT5oZWFkZXJfcmVjdmJ1ZiA9IE5VTEw7IC8qIGNsZWFyIHRoZSBwb2ludGVyICovCisgICAgQ3VybF9hZGRfYnVmZmVyX2ZyZWUoaHR0cC0+dHJhaWxlcl9yZWN2YnVmKTsKKyAgICBodHRwLT50cmFpbGVyX3JlY3ZidWYgPSBOVUxMOyAvKiBjbGVhciB0aGUgcG9pbnRlciAqLworICAgIGZvcig7IGh0dHAtPnB1c2hfaGVhZGVyc191c2VkID4gMDsgLS1odHRwLT5wdXNoX2hlYWRlcnNfdXNlZCkgeworICAgICAgZnJlZShodHRwLT5wdXNoX2hlYWRlcnNbaHR0cC0+cHVzaF9oZWFkZXJzX3VzZWQgLSAxXSk7CisgICAgfQorICAgIGZyZWUoaHR0cC0+cHVzaF9oZWFkZXJzKTsKKyAgICBodHRwLT5wdXNoX2hlYWRlcnMgPSBOVUxMOworICB9CiAKICAgREVCVUdGKGluZm9mKGNvbm4tPmRhdGEsICJIVFRQLzIgRElTQ09OTkVDVCBkb25lXG4iKSk7CiAKQEAgLTk0LDEyICsxMzksOSBAQAogfQogCiAvKiBjYWxsZWQgZnJvbSBDdXJsX2h0dHBfc2V0dXBfY29ubiAqLwotdm9pZCBDdXJsX2h0dHAyX3NldHVwX2Nvbm4oc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKQordm9pZCBDdXJsX2h0dHAyX3NldHVwX3JlcShzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSkKIHsKLSAgc3RydWN0IEhUVFAgKmh0dHAgPSBjb25uLT5kYXRhLT5yZXEucHJvdG9wOwotCi0gIGNvbm4tPnByb3RvLmh0dHBjLnNldHRpbmdzLm1heF9jb25jdXJyZW50X3N0cmVhbXMgPQotICAgIERFRkFVTFRfTUFYX0NPTkNVUlJFTlRfU1RSRUFNUzsKKyAgc3RydWN0IEhUVFAgKmh0dHAgPSBkYXRhLT5yZXEucHJvdG9wOwogCiAgIGh0dHAtPm5yZWFkX2hlYWRlcl9yZWN2YnVmID0gMDsKICAgaHR0cC0+Ym9keXN0YXJ0ZWQgPSBGQUxTRTsKQEAgLTEwOCwyMCArMTUwLDI1IEBACiAgIGh0dHAtPnBhdXNlbGVuID0gMDsKICAgaHR0cC0+ZXJyb3JfY29kZSA9IE5HSFRUUDJfTk9fRVJST1I7CiAgIGh0dHAtPmNsb3NlZCA9IEZBTFNFOwotCi0gIC8qIHdoZXJlIHRvIHN0b3JlIGluY29taW5nIGRhdGEgZm9yIHRoaXMgc3RyZWFtIGFuZCBob3cgYmlnIHRoZSBidWZmZXIgaXMgKi8KLSAgaHR0cC0+bWVtID0gY29ubi0+ZGF0YS0+c3RhdGUuYnVmZmVyOworICBodHRwLT5tZW0gPSBkYXRhLT5zdGF0ZS5idWZmZXI7CiAgIGh0dHAtPmxlbiA9IEJVRlNJWkU7CiAgIGh0dHAtPm1lbWxlbiA9IDA7CiB9CiAKKy8qIGNhbGxlZCBmcm9tIEN1cmxfaHR0cF9zZXR1cF9jb25uICovCit2b2lkIEN1cmxfaHR0cDJfc2V0dXBfY29ubihzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pCit7CisgIGNvbm4tPnByb3RvLmh0dHBjLnNldHRpbmdzLm1heF9jb25jdXJyZW50X3N0cmVhbXMgPQorICAgIERFRkFVTFRfTUFYX0NPTkNVUlJFTlRfU1RSRUFNUzsKK30KKwogLyoKICAqIEhUVFAyIGhhbmRsZXIgaW50ZXJmYWNlLiBUaGlzIGlzbid0IGFkZGVkIHRvIHRoZSBnZW5lcmFsIGxpc3Qgb2YgcHJvdG9jb2xzCiAgKiBidXQgd2lsbCBiZSB1c2VkIGF0IHJ1bi10aW1lIHdoZW4gdGhlIHByb3RvY29sIGlzIGR5bmFtaWNhbGx5IHN3aXRjaGVkIGZyb20KICAqIEhUVFAgdG8gSFRUUDIuCiAgKi8KIGNvbnN0IHN0cnVjdCBDdXJsX2hhbmRsZXIgQ3VybF9oYW5kbGVyX2h0dHAyID0gewotICAiSFRUUDIiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNjaGVtZSAqLworICAiSFRUUCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNjaGVtZSAqLwogICBaRVJPX05VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNldHVwX2Nvbm5lY3Rpb24gKi8KICAgQ3VybF9odHRwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkb19pdCAqLwogICBDdXJsX2h0dHBfZG9uZSwgICAgICAgICAgICAgICAgICAgICAgIC8qIGRvbmUgKi8KQEAgLTE0MSw3ICsxODgsNyBAQAogfTsKIAogY29uc3Qgc3RydWN0IEN1cmxfaGFuZGxlciBDdXJsX2hhbmRsZXJfaHR0cDJfc3NsID0gewotICAiSFRUUDIiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNjaGVtZSAqLworICAiSFRUUFMiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNjaGVtZSAqLwogICBaRVJPX05VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNldHVwX2Nvbm5lY3Rpb24gKi8KICAgQ3VybF9odHRwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkb19pdCAqLwogICBDdXJsX2h0dHBfZG9uZSwgICAgICAgICAgICAgICAgICAgICAgIC8qIGRvbmUgKi8KQEAgLTE3MCw2ICsyMTcsMzQgQEAKICAgcmV0dXJuIHNucHJpbnRmKHAsIGxlbiwgIiBuZ2h0dHAyLyVzIiwgaDItPnZlcnNpb25fc3RyKTsKIH0KIAorLyogSFRUUC8yIGVycm9yIGNvZGUgdG8gbmFtZSBiYXNlZCBvbiB0aGUgRXJyb3IgQ29kZSBSZWdpc3RyeS4KK2h0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3NTQwI3BhZ2UtNzcKK25naHR0cDJfZXJyb3JfY29kZSBlbnVtcyBhcmUgaWRlbnRpY2FsLgorKi8KK2NvbnN0IGNoYXIgKkN1cmxfaHR0cDJfc3RyZXJyb3IodWludDMyX3QgZXJyKSB7CisjaWZuZGVmIE5HSFRUUDJfSEFTX0hUVFAyX1NUUkVSUk9SCisgIGNvbnN0IGNoYXIgKnN0cltdID0geworICAgICJOT19FUlJPUiIsICAgICAgICAgICAgIC8qIDB4MCAqLworICAgICJQUk9UT0NPTF9FUlJPUiIsICAgICAgIC8qIDB4MSAqLworICAgICJJTlRFUk5BTF9FUlJPUiIsICAgICAgIC8qIDB4MiAqLworICAgICJGTE9XX0NPTlRST0xfRVJST1IiLCAgIC8qIDB4MyAqLworICAgICJTRVRUSU5HU19USU1FT1VUIiwgICAgIC8qIDB4NCAqLworICAgICJTVFJFQU1fQ0xPU0VEIiwgICAgICAgIC8qIDB4NSAqLworICAgICJGUkFNRV9TSVpFX0VSUk9SIiwgICAgIC8qIDB4NiAqLworICAgICJSRUZVU0VEX1NUUkVBTSIsICAgICAgIC8qIDB4NyAqLworICAgICJDQU5DRUwiLCAgICAgICAgICAgICAgIC8qIDB4OCAqLworICAgICJDT01QUkVTU0lPTl9FUlJPUiIsICAgIC8qIDB4OSAqLworICAgICJDT05ORUNUX0VSUk9SIiwgICAgICAgIC8qIDB4QSAqLworICAgICJFTkhBTkNFX1lPVVJfQ0FMTSIsICAgIC8qIDB4QiAqLworICAgICJJTkFERVFVQVRFX1NFQ1VSSVRZIiwgIC8qIDB4QyAqLworICAgICJIVFRQXzFfMV9SRVFVSVJFRCIgICAgIC8qIDB4RCAqLworICB9OworICByZXR1cm4gKGVyciA8IHNpemVvZiBzdHIgLyBzaXplb2Ygc3RyWzBdKSA/IHN0cltlcnJdIDogInVua25vd24iOworI2Vsc2UKKyAgcmV0dXJuIG5naHR0cDJfaHR0cDJfc3RyZXJyb3IoZXJyKTsKKyNlbmRpZgorfQorCiAvKgogICogVGhlIGltcGxlbWVudGF0aW9uIG9mIG5naHR0cDJfc2VuZF9jYWxsYmFjayB0eXBlLiBIZXJlIHdlIHdyaXRlIHxkYXRhfCB3aXRoCiAgKiBzaXplIHxsZW5ndGh8IHRvIHRoZSBuZXR3b3JrIGFuZCByZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyBhY3R1YWxseQpAQCAtMjA1LDYgKzI4MCwxNjYgQEAKICAgcmV0dXJuIHdyaXR0ZW47CiB9CiAKKworLyogV2UgcGFzcyBhIHBvaW50ZXIgdG8gdGhpcyBzdHJ1Y3QgaW4gdGhlIHB1c2ggY2FsbGJhY2ssIGJ1dCB0aGUgY29udGVudHMgb2YKKyAgIHRoZSBzdHJ1Y3QgYXJlIGhpZGRlbiBmcm9tIHRoZSB1c2VyLiAqLworc3RydWN0IGN1cmxfcHVzaGhlYWRlcnMgeworICBzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YTsKKyAgY29uc3QgbmdodHRwMl9wdXNoX3Byb21pc2UgKmZyYW1lOworfTsKKworLyoKKyAqIHB1c2ggaGVhZGVyIGFjY2VzcyBmdW5jdGlvbi4gT25seSB0byBiZSB1c2VkIGZyb20gd2l0aGluIHRoZSBwdXNoIGNhbGxiYWNrCisgKi8KK2NoYXIgKmN1cmxfcHVzaGhlYWRlcl9ieW51bShzdHJ1Y3QgY3VybF9wdXNoaGVhZGVycyAqaCwgc2l6ZV90IG51bSkKK3sKKyAgLyogVmVyaWZ5IHRoYXQgd2UgZ290IGEgZ29vZCBlYXN5IGhhbmRsZSBpbiB0aGUgcHVzaCBoZWFkZXIgc3RydWN0LCBtb3N0bHkgdG8KKyAgICAgZGV0ZWN0IHJ1YmJpc2ggaW5wdXQgZmFzdChlcikuICovCisgIGlmKCFoIHx8ICFHT09EX0VBU1lfSEFORExFKGgtPmRhdGEpKQorICAgIHJldHVybiBOVUxMOworICBlbHNlIHsKKyAgICBzdHJ1Y3QgSFRUUCAqc3RyZWFtID0gaC0+ZGF0YS0+cmVxLnByb3RvcDsKKyAgICBpZihudW0gPCBzdHJlYW0tPnB1c2hfaGVhZGVyc191c2VkKQorICAgICAgcmV0dXJuIHN0cmVhbS0+cHVzaF9oZWFkZXJzW251bV07CisgIH0KKyAgcmV0dXJuIE5VTEw7Cit9CisKKy8qCisgKiBwdXNoIGhlYWRlciBhY2Nlc3MgZnVuY3Rpb24uIE9ubHkgdG8gYmUgdXNlZCBmcm9tIHdpdGhpbiB0aGUgcHVzaCBjYWxsYmFjaworICovCitjaGFyICpjdXJsX3B1c2hoZWFkZXJfYnluYW1lKHN0cnVjdCBjdXJsX3B1c2hoZWFkZXJzICpoLCBjb25zdCBjaGFyICpoZWFkZXIpCit7CisgIC8qIFZlcmlmeSB0aGF0IHdlIGdvdCBhIGdvb2QgZWFzeSBoYW5kbGUgaW4gdGhlIHB1c2ggaGVhZGVyIHN0cnVjdCwKKyAgICAgbW9zdGx5IHRvIGRldGVjdCBydWJiaXNoIGlucHV0IGZhc3QoZXIpLiBBbHNvIGVtcHR5IGhlYWRlciBuYW1lCisgICAgIGlzIGp1c3QgYSBydWJiaXNoIHRvby4gV2UgaGF2ZSB0byBhbGxvdyAiOiIgYXQgdGhlIGJlZ2lubmluZyBvZgorICAgICB0aGUgaGVhZGVyLCBidXQgaGVhZGVyID09ICI6IiBtdXN0IGJlIHJlamVjdGVkLiBJZiB3ZSBoYXZlICc6JyBpbgorICAgICB0aGUgbWlkZGxlIG9mIGhlYWRlciwgaXQgY291bGQgYmUgbWF0Y2hlZCBpbiBtaWRkbGUgb2YgdGhlIHZhbHVlLAorICAgICB0aGlzIGlzIGJlY2F1c2Ugd2UgZG8gcHJlZml4IG1hdGNoLiovCisgIGlmKCFoIHx8ICFHT09EX0VBU1lfSEFORExFKGgtPmRhdGEpIHx8ICFoZWFkZXIgfHwgIWhlYWRlclswXSB8fAorICAgICBDdXJsX3Jhd19lcXVhbChoZWFkZXIsICI6IikgfHwgc3RyY2hyKGhlYWRlciArIDEsICc6JykpCisgICAgcmV0dXJuIE5VTEw7CisgIGVsc2UgeworICAgIHN0cnVjdCBIVFRQICpzdHJlYW0gPSBoLT5kYXRhLT5yZXEucHJvdG9wOworICAgIHNpemVfdCBsZW4gPSBzdHJsZW4oaGVhZGVyKTsKKyAgICBzaXplX3QgaTsKKyAgICBmb3IoaT0wOyBpPHN0cmVhbS0+cHVzaF9oZWFkZXJzX3VzZWQ7IGkrKykgeworICAgICAgaWYoIXN0cm5jbXAoaGVhZGVyLCBzdHJlYW0tPnB1c2hfaGVhZGVyc1tpXSwgbGVuKSkgeworICAgICAgICAvKiBzdWItbWF0Y2gsIG1ha2Ugc3VyZSB0aGF0IGl0IGlzIGZvbGxvd2VkIGJ5IGEgY29sb24gKi8KKyAgICAgICAgaWYoc3RyZWFtLT5wdXNoX2hlYWRlcnNbaV1bbGVuXSAhPSAnOicpCisgICAgICAgICAgY29udGludWU7CisgICAgICAgIHJldHVybiAmc3RyZWFtLT5wdXNoX2hlYWRlcnNbaV1bbGVuKzFdOworICAgICAgfQorICAgIH0KKyAgfQorICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIENVUkwgKmR1cGhhbmRsZShzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSkKK3sKKyAgc3RydWN0IFNlc3Npb25IYW5kbGUgKnNlY29uZCA9IGN1cmxfZWFzeV9kdXBoYW5kbGUoZGF0YSk7CisgIGlmKHNlY29uZCkgeworICAgIC8qIHNldHVwIHRoZSByZXF1ZXN0IHN0cnVjdCAqLworICAgIHN0cnVjdCBIVFRQICpodHRwID0gY2FsbG9jKDEsIHNpemVvZihzdHJ1Y3QgSFRUUCkpOworICAgIGlmKCFodHRwKSB7CisgICAgICAodm9pZClDdXJsX2Nsb3NlKHNlY29uZCk7CisgICAgICBzZWNvbmQgPSBOVUxMOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHNlY29uZC0+cmVxLnByb3RvcCA9IGh0dHA7CisgICAgICBodHRwLT5oZWFkZXJfcmVjdmJ1ZiA9IEN1cmxfYWRkX2J1ZmZlcl9pbml0KCk7CisgICAgICBpZighaHR0cC0+aGVhZGVyX3JlY3ZidWYpIHsKKyAgICAgICAgZnJlZShodHRwKTsKKyAgICAgICAgKHZvaWQpQ3VybF9jbG9zZShzZWNvbmQpOworICAgICAgICBzZWNvbmQgPSBOVUxMOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIEN1cmxfaHR0cDJfc2V0dXBfcmVxKHNlY29uZCk7CisgICAgICAgIHNlY29uZC0+c3RhdGUuc3RyZWFtX3dlaWdodCA9IGRhdGEtPnN0YXRlLnN0cmVhbV93ZWlnaHQ7CisgICAgICB9CisgICAgfQorICB9CisgIHJldHVybiBzZWNvbmQ7Cit9CisKKworc3RhdGljIGludCBwdXNoX3Byb21pc2Uoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZ2h0dHAyX3B1c2hfcHJvbWlzZSAqZnJhbWUpCit7CisgIGludCBydjsKKyAgREVCVUdGKGluZm9mKGRhdGEsICJQVVNIX1BST01JU0UgcmVjZWl2ZWQsIHN0cmVhbSAldSFcbiIsCisgICAgICAgICAgICAgICBmcmFtZS0+cHJvbWlzZWRfc3RyZWFtX2lkKSk7CisgIGlmKGRhdGEtPm11bHRpLT5wdXNoX2NiKSB7CisgICAgc3RydWN0IEhUVFAgKnN0cmVhbTsKKyAgICBzdHJ1Y3QgSFRUUCAqbmV3c3RyZWFtOworICAgIHN0cnVjdCBjdXJsX3B1c2hoZWFkZXJzIGhlYWRzOworICAgIENVUkxNY29kZSByYzsKKyAgICBzdHJ1Y3QgaHR0cF9jb25uICpodHRwYzsKKyAgICBzaXplX3QgaTsKKyAgICAvKiBjbG9uZSB0aGUgcGFyZW50ICovCisgICAgc3RydWN0IFNlc3Npb25IYW5kbGUgKm5ld2hhbmRsZSA9IGR1cGhhbmRsZShkYXRhKTsKKyAgICBpZighbmV3aGFuZGxlKSB7CisgICAgICBpbmZvZihkYXRhLCAiZmFpbGVkIHRvIGR1cGxpY2F0ZSBoYW5kbGVcbiIpOworICAgICAgcnYgPSAxOyAvKiBGQUlMIEhBUkQgKi8KKyAgICAgIGdvdG8gZmFpbDsKKyAgICB9CisKKyAgICBoZWFkcy5kYXRhID0gZGF0YTsKKyAgICBoZWFkcy5mcmFtZSA9IGZyYW1lOworICAgIC8qIGFzayB0aGUgYXBwbGljYXRpb24gKi8KKyAgICBERUJVR0YoaW5mb2YoZGF0YSwgIkdvdCBQVVNIX1BST01JU0UsIGFzayBhcHBsaWNhdGlvbiFcbiIpKTsKKworICAgIHN0cmVhbSA9IGRhdGEtPnJlcS5wcm90b3A7CisgICAgaWYoIXN0cmVhbSkgeworICAgICAgZmFpbGYoZGF0YSwgIkludGVybmFsIE5VTEwgc3RyZWFtIVxuIik7CisgICAgICBydiA9IDE7CisgICAgICBnb3RvIGZhaWw7CisgICAgfQorCisgICAgcnYgPSBkYXRhLT5tdWx0aS0+cHVzaF9jYihkYXRhLCBuZXdoYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW0tPnB1c2hfaGVhZGVyc191c2VkLCAmaGVhZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT5tdWx0aS0+cHVzaF91c2VycCk7CisKKyAgICAvKiBmcmVlIHRoZSBoZWFkZXJzIGFnYWluICovCisgICAgZm9yKGk9MDsgaTxzdHJlYW0tPnB1c2hfaGVhZGVyc191c2VkOyBpKyspCisgICAgICBmcmVlKHN0cmVhbS0+cHVzaF9oZWFkZXJzW2ldKTsKKyAgICBmcmVlKHN0cmVhbS0+cHVzaF9oZWFkZXJzKTsKKyAgICBzdHJlYW0tPnB1c2hfaGVhZGVycyA9IE5VTEw7CisKKyAgICBpZihydikgeworICAgICAgLyogZGVuaWVkLCBraWxsIG9mZiB0aGUgbmV3IGhhbmRsZSBhZ2FpbiAqLworICAgICAgKHZvaWQpQ3VybF9jbG9zZShuZXdoYW5kbGUpOworICAgICAgZ290byBmYWlsOworICAgIH0KKworICAgIG5ld3N0cmVhbSA9IG5ld2hhbmRsZS0+cmVxLnByb3RvcDsKKyAgICBuZXdzdHJlYW0tPnN0cmVhbV9pZCA9IGZyYW1lLT5wcm9taXNlZF9zdHJlYW1faWQ7CisgICAgbmV3aGFuZGxlLT5yZXEubWF4ZG93bmxvYWQgPSAtMTsKKyAgICBuZXdoYW5kbGUtPnJlcS5zaXplID0gLTE7CisKKyAgICAvKiBhcHByb3ZlZCwgYWRkIHRvIHRoZSBtdWx0aSBoYW5kbGUgYW5kIGltbWVkaWF0ZWx5IHN3aXRjaCB0byBQRVJGT1JNCisgICAgICAgc3RhdGUgd2l0aCB0aGUgZ2l2ZW4gY29ubmVjdGlvbiAhKi8KKyAgICByYyA9IEN1cmxfbXVsdGlfYWRkX3BlcmZvcm0oZGF0YS0+bXVsdGksIG5ld2hhbmRsZSwgY29ubik7CisgICAgaWYocmMpIHsKKyAgICAgIGluZm9mKGRhdGEsICJmYWlsZWQgdG8gYWRkIGhhbmRsZSB0byBtdWx0aVxuIik7CisgICAgICBDdXJsX2Nsb3NlKG5ld2hhbmRsZSk7CisgICAgICBydiA9IDE7CisgICAgICBnb3RvIGZhaWw7CisgICAgfQorCisgICAgaHR0cGMgPSAmY29ubi0+cHJvdG8uaHR0cGM7CisgICAgbmdodHRwMl9zZXNzaW9uX3NldF9zdHJlYW1fdXNlcl9kYXRhKGh0dHBjLT5oMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWUtPnByb21pc2VkX3N0cmVhbV9pZCwgbmV3aGFuZGxlKTsKKyAgfQorICBlbHNlIHsKKyAgICBERUJVR0YoaW5mb2YoZGF0YSwgIkdvdCBQVVNIX1BST01JU0UsIGlnbm9yZSBpdCFcbiIpKTsKKyAgICBydiA9IDE7CisgIH0KKyAgZmFpbDoKKyAgcmV0dXJuIHJ2OworfQorCiBzdGF0aWMgaW50IG9uX2ZyYW1lX3JlY3YobmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLCBjb25zdCBuZ2h0dHAyX2ZyYW1lICpmcmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp1c2VycCkKIHsKQEAgLTIxMiwzMiArNDQ3LDUyIEBACiAgIHN0cnVjdCBodHRwX2Nvbm4gKmh0dHBjID0gJmNvbm4tPnByb3RvLmh0dHBjOwogICBzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YV9zID0gTlVMTDsKICAgc3RydWN0IEhUVFAgKnN0cmVhbSA9IE5VTEw7CisgIHN0YXRpYyBpbnQgbGFzdFN0cmVhbSA9IC0xOwogICBpbnQgcnY7CiAgIHNpemVfdCBsZWZ0LCBuY29weTsKICAgaW50MzJfdCBzdHJlYW1faWQgPSBmcmFtZS0+aGQuc3RyZWFtX2lkOwogCi0gICh2b2lkKXNlc3Npb247Ci0gICh2b2lkKWZyYW1lOwotICBERUJVR0YoaW5mb2YoY29ubi0+ZGF0YSwgIm9uX2ZyYW1lX3JlY3YoKSBoZWFkZXIgJXggc3RyZWFtICV4XG4iLAotICAgICAgICAgICAgICAgZnJhbWUtPmhkLnR5cGUsIHN0cmVhbV9pZCkpOwotCi0gIGlmKHN0cmVhbV9pZCkgewotICAgIC8qIGdldCB0aGUgc3RyZWFtIGZyb20gdGhlIGhhc2ggYmFzZWQgb24gU3RyZWFtIElELCBzdHJlYW0gSUQgemVybyBpcyBmb3IKLSAgICAgICBjb25uZWN0aW9uLW9yaWVudGVkIHN0dWZmICovCi0gICAgZGF0YV9zID0gQ3VybF9oYXNoX3BpY2soJmh0dHBjLT5zdHJlYW1zaCwgJnN0cmVhbV9pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yoc3RyZWFtX2lkKSk7Ci0gICAgaWYoIWRhdGFfcykgewotICAgICAgLyogUmVjZWl2aW5nIGEgU3RyZWFtIElEIG5vdCBpbiB0aGUgaGFzaCBzaG91bGQgbm90IGhhcHBlbiwgdGhpcyBpcyBhbgotICAgICAgICAgaW50ZXJuYWwgZXJyb3IgbW9yZSB0aGFuIGFueXRoaW5nIGVsc2UhICovCi0gICAgICBmYWlsZihjb25uLT5kYXRhLCAiUmVjZWl2ZWQgZnJhbWUgb24gU3RyZWFtIElEOiAleCBub3QgaW4gc3RyZWFtIGhhc2ghIiwKLSAgICAgICAgICAgIHN0cmVhbV9pZCk7Ci0gICAgICByZXR1cm4gTkdIVFRQMl9FUlJfQ0FMTEJBQ0tfRkFJTFVSRTsKKyAgaWYoIXN0cmVhbV9pZCkgeworICAgIC8qIHN0cmVhbSBJRCB6ZXJvIGlzIGZvciBjb25uZWN0aW9uLW9yaWVudGVkIHN0dWZmICovCisgICAgaWYoZnJhbWUtPmhkLnR5cGUgPT0gTkdIVFRQMl9TRVRUSU5HUykgeworICAgICAgdWludDMyX3QgbWF4X2Nvbm4gPSBodHRwYy0+c2V0dGluZ3MubWF4X2NvbmN1cnJlbnRfc3RyZWFtczsKKyAgICAgIERFQlVHRihpbmZvZihjb25uLT5kYXRhLCAiR290IFNFVFRJTkdTXG4iKSk7CisgICAgICBodHRwYy0+c2V0dGluZ3MubWF4X2NvbmN1cnJlbnRfc3RyZWFtcyA9CisgICAgICAgIG5naHR0cDJfc2Vzc2lvbl9nZXRfcmVtb3RlX3NldHRpbmdzKAorICAgICAgICAgIHNlc3Npb24sIE5HSFRUUDJfU0VUVElOR1NfTUFYX0NPTkNVUlJFTlRfU1RSRUFNUyk7CisgICAgICBodHRwYy0+c2V0dGluZ3MuZW5hYmxlX3B1c2ggPQorICAgICAgICBuZ2h0dHAyX3Nlc3Npb25fZ2V0X3JlbW90ZV9zZXR0aW5ncygKKyAgICAgICAgICBzZXNzaW9uLCBOR0hUVFAyX1NFVFRJTkdTX0VOQUJMRV9QVVNIKTsKKyAgICAgIERFQlVHRihpbmZvZihjb25uLT5kYXRhLCAiTUFYX0NPTkNVUlJFTlRfU1RSRUFNUyA9PSAlZFxuIiwKKyAgICAgICAgICAgICAgICAgICBodHRwYy0+c2V0dGluZ3MubWF4X2NvbmN1cnJlbnRfc3RyZWFtcykpOworICAgICAgREVCVUdGKGluZm9mKGNvbm4tPmRhdGEsICJFTkFCTEVfUFVTSCA9PSAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICBodHRwYy0+c2V0dGluZ3MuZW5hYmxlX3B1c2g/IlRSVUUiOiJmYWxzZSIpKTsKKyAgICAgIGlmKG1heF9jb25uICE9IGh0dHBjLT5zZXR0aW5ncy5tYXhfY29uY3VycmVudF9zdHJlYW1zKSB7CisgICAgICAgIC8qIG9ubHkgc2lnbmFsIGNoYW5nZSBpZiB0aGUgdmFsdWUgYWN0dWFsbHkgY2hhbmdlZCAqLworICAgICAgICBpbmZvZihjb25uLT5kYXRhLAorICAgICAgICAgICAgICAiQ29ubmVjdGlvbiBzdGF0ZSBjaGFuZ2VkIChNQVhfQ09OQ1VSUkVOVF9TVFJFQU1TIHVwZGF0ZWQpIVxuIik7CisgICAgICAgIEN1cmxfbXVsdGlfY29ubmNoYW5nZWQoY29ubi0+ZGF0YS0+bXVsdGkpOworICAgICAgfQogICAgIH0KLSAgICBzdHJlYW0gPSBkYXRhX3MtPnJlcS5wcm90b3A7Ci0gIH0KLSAgZWxzZQotICAgIC8qIHdlIGRvIG5vdGhpbmcgb24gc3RyZWFtIHplcm8gKi8KICAgICByZXR1cm4gMDsKKyAgfQorICBkYXRhX3MgPSBuZ2h0dHAyX3Nlc3Npb25fZ2V0X3N0cmVhbV91c2VyX2RhdGEoc2Vzc2lvbiwgc3RyZWFtX2lkKTsKKyAgaWYobGFzdFN0cmVhbSAhPSBzdHJlYW1faWQpIHsKKyAgICBsYXN0U3RyZWFtID0gc3RyZWFtX2lkOworICB9CisgIGlmKCFkYXRhX3MpIHsKKyAgICBERUJVR0YoaW5mb2YoY29ubi0+ZGF0YSwKKyAgICAgICAgICAgICAgICAgIk5vIFNlc3Npb25IYW5kbGUgYXNzb2NpYXRlZCB3aXRoIHN0cmVhbTogJXhcbiIsCisgICAgICAgICAgICAgICAgIHN0cmVhbV9pZCkpOworICAgIHJldHVybiAwOworICB9CisKKyAgc3RyZWFtID0gZGF0YV9zLT5yZXEucHJvdG9wOworICBpZighc3RyZWFtKQorICAgIHJldHVybiBOR0hUVFAyX0VSUl9DQUxMQkFDS19GQUlMVVJFOworCisgIERFQlVHRihpbmZvZihkYXRhX3MsICJvbl9mcmFtZV9yZWN2KCkgaGVhZGVyICV4IHN0cmVhbSAleFxuIiwKKyAgICAgICAgICAgICAgIGZyYW1lLT5oZC50eXBlLCBzdHJlYW1faWQpKTsKIAogICBzd2l0Y2goZnJhbWUtPmhkLnR5cGUpIHsKICAgY2FzZSBOR0hUVFAyX0RBVEE6CkBAIC0yNTIsMTMgKzUwNyw5IEBACiAgICAgfQogICAgIGJyZWFrOwogICBjYXNlIE5HSFRUUDJfSEVBREVSUzoKLSAgICBpZihmcmFtZS0+aGVhZGVycy5jYXQgPT0gTkdIVFRQMl9IQ0FUX1JFUVVFU1QpCi0gICAgICBicmVhazsKLQogICAgIGlmKHN0cmVhbS0+Ym9keXN0YXJ0ZWQpIHsKICAgICAgIC8qIE9ubHkgdmFsaWQgSEVBREVSUyBhZnRlciBib2R5IHN0YXJ0ZWQgaXMgdHJhaWxlciBIRUFERVJTLiAgV2UKLSAgICAgICAgIGlnbm9yZXMgdHJhaWxlciBIRUFERVJTIGZvciBub3cuICBuZ2h0dHAyIGd1YXJhbnRlZXMgdGhhdCBpdAotICAgICAgICAgaGFzIEVORF9TVFJFQU0gZmxhZyBzZXQuICovCisgICAgICAgICBidWZmZXIgdGhlbSBpbiBvbl9oZWFkZXIgY2FsbGJhY2suICovCiAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTI4OSwzOSArNTQwLDI3IEBACiAgICAgc3RyZWFtLT5tZW1sZW4gKz0gbmNvcHk7CiAKICAgICBkYXRhX3MtPnN0YXRlLmRyYWluKys7Ci0gICAgQ3VybF9leHBpcmUoZGF0YV9zLCAxKTsKKyAgICBodHRwYy0+ZHJhaW5fdG90YWwrKzsKKyAgICB7CisgICAgICAvKiBnZXQgdGhlIHBvaW50ZXIgZnJvbSB1c2VycCBhZ2FpbiBzaW5jZSBpdCB3YXMgcmUtYXNzaWduZWQgYWJvdmUgKi8KKyAgICAgIHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubl9zID0gKHN0cnVjdCBjb25uZWN0ZGF0YSAqKXVzZXJwOworCisgICAgICAvKiBpZiB3ZSByZWNlaXZlIGRhdGEgZm9yIGFub3RoZXIgaGFuZGxlLCB3YWtlIHRoYXQgdXAgKi8KKyAgICAgIGlmKGNvbm5fcy0+ZGF0YSAhPSBkYXRhX3MpCisgICAgICAgIEN1cmxfZXhwaXJlKGRhdGFfcywgMSk7CisgICAgfQogICAgIGJyZWFrOwogICBjYXNlIE5HSFRUUDJfUFVTSF9QUk9NSVNFOgotICAgIERFQlVHRihpbmZvZihkYXRhX3MsICJHb3QgUFVTSF9QUk9NSVNFLCBSU1RfU1RSRUFNIGl0IVxuIikpOwotICAgIHJ2ID0gbmdodHRwMl9zdWJtaXRfcnN0X3N0cmVhbShzZXNzaW9uLCBOR0hUVFAyX0ZMQUdfTk9ORSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWUtPnB1c2hfcHJvbWlzZS5wcm9taXNlZF9zdHJlYW1faWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5HSFRUUDJfQ0FOQ0VMKTsKLSAgICBpZihuZ2h0dHAyX2lzX2ZhdGFsKHJ2KSkgewotICAgICAgcmV0dXJuIHJ2OworICAgIHJ2ID0gcHVzaF9wcm9taXNlKGRhdGFfcywgY29ubiwgJmZyYW1lLT5wdXNoX3Byb21pc2UpOworICAgIGlmKHJ2KSB7IC8qIGRlbnkhICovCisgICAgICBydiA9IG5naHR0cDJfc3VibWl0X3JzdF9zdHJlYW0oc2Vzc2lvbiwgTkdIVFRQMl9GTEFHX05PTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWUtPnB1c2hfcHJvbWlzZS5wcm9taXNlZF9zdHJlYW1faWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkdIVFRQMl9DQU5DRUwpOworICAgICAgaWYobmdodHRwMl9pc19mYXRhbChydikpIHsKKyAgICAgICAgcmV0dXJuIHJ2OworICAgICAgfQogICAgIH0KICAgICBicmVhazsKLSAgY2FzZSBOR0hUVFAyX1NFVFRJTkdTOgotICB7Ci0gICAgdWludDMyX3QgbWF4X2Nvbm4gPSBodHRwYy0+c2V0dGluZ3MubWF4X2NvbmN1cnJlbnRfc3RyZWFtczsKLSAgICBERUJVR0YoaW5mb2YoY29ubi0+ZGF0YSwgIkdvdCBTRVRUSU5HUyBmb3Igc3RyZWFtICV1IVxuIiwgc3RyZWFtX2lkKSk7Ci0gICAgaHR0cGMtPnNldHRpbmdzLm1heF9jb25jdXJyZW50X3N0cmVhbXMgPQotICAgICAgbmdodHRwMl9zZXNzaW9uX2dldF9yZW1vdGVfc2V0dGluZ3MoCi0gICAgICAgIHNlc3Npb24sIE5HSFRUUDJfU0VUVElOR1NfTUFYX0NPTkNVUlJFTlRfU1RSRUFNUyk7Ci0gICAgaHR0cGMtPnNldHRpbmdzLmVuYWJsZV9wdXNoID0KLSAgICAgIG5naHR0cDJfc2Vzc2lvbl9nZXRfcmVtb3RlX3NldHRpbmdzKAotICAgICAgICBzZXNzaW9uLCBOR0hUVFAyX1NFVFRJTkdTX0VOQUJMRV9QVVNIKTsKLSAgICBERUJVR0YoaW5mb2YoY29ubi0+ZGF0YSwgIk1BWF9DT05DVVJSRU5UX1NUUkVBTVMgPT0gJWRcbiIsCi0gICAgICAgICAgICAgICAgIGh0dHBjLT5zZXR0aW5ncy5tYXhfY29uY3VycmVudF9zdHJlYW1zKSk7Ci0gICAgREVCVUdGKGluZm9mKGNvbm4tPmRhdGEsICJFTkFCTEVfUFVTSCA9PSAlc1xuIiwKLSAgICAgICAgICAgICAgICAgaHR0cGMtPnNldHRpbmdzLmVuYWJsZV9wdXNoPyJUUlVFIjoiZmFsc2UiKSk7Ci0gICAgaWYobWF4X2Nvbm4gIT0gaHR0cGMtPnNldHRpbmdzLm1heF9jb25jdXJyZW50X3N0cmVhbXMpIHsKLSAgICAgIC8qIG9ubHkgc2lnbmFsIGNoYW5nZSBpZiB0aGUgdmFsdWUgYWN0dWFsbHkgY2hhbmdlZCAqLwotICAgICAgaW5mb2YoY29ubi0+ZGF0YSwKLSAgICAgICAgICAgICJDb25uZWN0aW9uIHN0YXRlIGNoYW5nZWQgKE1BWF9DT05DVVJSRU5UX1NUUkVBTVMgdXBkYXRlZCkhXG4iKTsKLSAgICAgIEN1cmxfbXVsdGlfY29ubmNoYW5nZWQoY29ubi0+ZGF0YS0+bXVsdGkpOwotICAgIH0KLSAgfQotICBicmVhazsKICAgZGVmYXVsdDoKICAgICBERUJVR0YoaW5mb2YoY29ubi0+ZGF0YSwgIkdvdCBmcmFtZSB0eXBlICV4IGZvciBzdHJlYW0gJXUhXG4iLAogICAgICAgICAgICAgICAgICBmcmFtZS0+aGQudHlwZSwgc3RyZWFtX2lkKSk7CkBAIC0zMzQsMTIgKzU3MywxNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmdodHRwMl9mcmFtZSAqZnJhbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGliX2Vycm9yX2NvZGUsIHZvaWQgKnVzZXJwKQogewotICBzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4gPSAoc3RydWN0IGNvbm5lY3RkYXRhICopdXNlcnA7Ci0gICh2b2lkKXNlc3Npb247Ci0gICh2b2lkKWZyYW1lOwotICBERUJVR0YoaW5mb2YoY29ubi0+ZGF0YSwKLSAgICAgICAgICAgICAgICJvbl9pbnZhbGlkX2ZyYW1lX3JlY3YoKSB3YXMgY2FsbGVkLCBlcnJvcj0lZDolc1xuIiwKLSAgICAgICAgICAgICAgIGxpYl9lcnJvcl9jb2RlLCBuZ2h0dHAyX3N0cmVycm9yKGxpYl9lcnJvcl9jb2RlKSkpOworICBzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YV9zID0gTlVMTDsKKyAgKHZvaWQpdXNlcnA7CisKKyAgZGF0YV9zID0gbmdodHRwMl9zZXNzaW9uX2dldF9zdHJlYW1fdXNlcl9kYXRhKHNlc3Npb24sIGZyYW1lLT5oZC5zdHJlYW1faWQpOworICBpZihkYXRhX3MpIHsKKyAgICBERUJVR0YoaW5mb2YoZGF0YV9zLAorICAgICAgICAgICAgICAgICAib25faW52YWxpZF9mcmFtZV9yZWN2KCkgd2FzIGNhbGxlZCwgZXJyb3I9JWQ6JXNcbiIsCisgICAgICAgICAgICAgICAgIGxpYl9lcnJvcl9jb2RlLCBuZ2h0dHAyX3N0cmVycm9yKGxpYl9lcnJvcl9jb2RlKSkpOworICB9CiAgIHJldHVybiAwOwogfQogCkBAIC0zNDcsMjkgKzU4OSwyNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBzdHJlYW1faWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpkYXRhLCBzaXplX3QgbGVuLCB2b2lkICp1c2VycCkKIHsKLSAgc3RydWN0IGNvbm5lY3RkYXRhICpjb25uID0gKHN0cnVjdCBjb25uZWN0ZGF0YSAqKXVzZXJwOwogICBzdHJ1Y3QgSFRUUCAqc3RyZWFtOwogICBzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YV9zOwogICBzaXplX3QgbnJlYWQ7CisgIHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiA9IChzdHJ1Y3QgY29ubmVjdGRhdGEgKil1c2VycDsKICAgKHZvaWQpc2Vzc2lvbjsKICAgKHZvaWQpZmxhZ3M7CiAgICh2b2lkKWRhdGE7Ci0gIERFQlVHRihpbmZvZihjb25uLT5kYXRhLCAib25fZGF0YV9jaHVua19yZWN2KCkgIgotICAgICAgICAgICAgICAgImxlbiA9ICV1LCBzdHJlYW0gJXVcbiIsIGxlbiwgc3RyZWFtX2lkKSk7CiAKICAgREVCVUdBU1NFUlQoc3RyZWFtX2lkKTsgLyogc2hvdWxkIG5ldmVyIGJlIGEgemVybyBzdHJlYW0gSUQgaGVyZSAqLwogCiAgIC8qIGdldCB0aGUgc3RyZWFtIGZyb20gdGhlIGhhc2ggYmFzZWQgb24gU3RyZWFtIElEICovCi0gIGRhdGFfcyA9IEN1cmxfaGFzaF9waWNrKCZjb25uLT5wcm90by5odHRwYy5zdHJlYW1zaCwgJnN0cmVhbV9pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0cmVhbV9pZCkpOwotICBpZighZGF0YV9zKSB7CisgIGRhdGFfcyA9IG5naHR0cDJfc2Vzc2lvbl9nZXRfc3RyZWFtX3VzZXJfZGF0YShzZXNzaW9uLCBzdHJlYW1faWQpOworICBpZighZGF0YV9zKQogICAgIC8qIFJlY2VpdmluZyBhIFN0cmVhbSBJRCBub3QgaW4gdGhlIGhhc2ggc2hvdWxkIG5vdCBoYXBwZW4sIHRoaXMgaXMgYW4KICAgICAgICBpbnRlcm5hbCBlcnJvciBtb3JlIHRoYW4gYW55dGhpbmcgZWxzZSEgKi8KLSAgICBmYWlsZihjb25uLT5kYXRhLCAiUmVjZWl2ZWQgZnJhbWUgb24gU3RyZWFtIElEOiAleCBub3QgaW4gc3RyZWFtIGhhc2ghIiwKLSAgICAgICAgICBzdHJlYW1faWQpOwogICAgIHJldHVybiBOR0hUVFAyX0VSUl9DQUxMQkFDS19GQUlMVVJFOwotICB9CisKICAgc3RyZWFtID0gZGF0YV9zLT5yZXEucHJvdG9wOworICBpZighc3RyZWFtKQorICAgIHJldHVybiBOR0hUVFAyX0VSUl9DQUxMQkFDS19GQUlMVVJFOwogCiAgIG5yZWFkID0gTUlOKHN0cmVhbS0+bGVuLCBsZW4pOwogICBtZW1jcHkoJnN0cmVhbS0+bWVtW3N0cmVhbS0+bWVtbGVuXSwgZGF0YSwgbnJlYWQpOwpAQCAtMzc4LDggKzYxNywxMiBAQAogICBzdHJlYW0tPm1lbWxlbiArPSBucmVhZDsKIAogICBkYXRhX3MtPnN0YXRlLmRyYWluKys7Ci0gIEN1cmxfZXhwaXJlKGRhdGFfcywgMSk7IC8qIFRPRE86IGZpeCBzbyB0aGF0IHRoaXMgY2FuIGJlIHNldCB0byAwIGZvcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbW1lZGlhdGVseT8gKi8KKyAgY29ubi0+cHJvdG8uaHR0cGMuZHJhaW5fdG90YWwrKzsKKworICAvKiBpZiB3ZSByZWNlaXZlIGRhdGEgZm9yIGFub3RoZXIgaGFuZGxlLCB3YWtlIHRoYXQgdXAgKi8KKyAgaWYoY29ubi0+ZGF0YSAhPSBkYXRhX3MpCisgICAgQ3VybF9leHBpcmUoZGF0YV9zLCAxKTsgLyogVE9ETzogZml4IHNvIHRoYXQgdGhpcyBjYW4gYmUgc2V0IHRvIDAgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1tZWRpYXRlbHk/ICovCiAKICAgREVCVUdGKGluZm9mKGRhdGFfcywgIiV6dSBkYXRhIHJlY2VpdmVkIGZvciBzdHJlYW0gJXUgIgogICAgICAgICAgICAgICAgIiglenUgbGVmdCBpbiBidWZmZXIgJXAsIHRvdGFsICV6dSlcbiIsCkBAIC0zOTMsOSArNjM2LDE5IEBACiAgICAgREVCVUdGKGluZm9mKGRhdGFfcywgIk5HSFRUUDJfRVJSX1BBVVNFIC0gJXp1IGJ5dGVzIG91dCBvZiBidWZmZXIiCiAgICAgICAgICAgICAgICAgICIsIHN0cmVhbSAldVxuIiwKICAgICAgICAgICAgICAgICAgbGVuIC0gbnJlYWQsIHN0cmVhbV9pZCkpOwotICAgIGNvbm4tPnByb3RvLmh0dHBjLnBhdXNlX3N0cmVhbV9pZCA9IHN0cmVhbV9pZDsKKyAgICBkYXRhX3MtPmVhc3lfY29ubi0+cHJvdG8uaHR0cGMucGF1c2Vfc3RyZWFtX2lkID0gc3RyZWFtX2lkOworCiAgICAgcmV0dXJuIE5HSFRUUDJfRVJSX1BBVVNFOwogICB9CisKKyAgLyogcGF1c2UgZXhlY3V0aW9uIG9mIG5naHR0cDIgaWYgd2UgcmVjZWl2ZWQgZGF0YSBmb3IgYW5vdGhlciBoYW5kbGUKKyAgICAgaW4gb3JkZXIgdG8gcHJvY2VzcyB0aGVtIGZpcnN0LiAqLworICBpZihjb25uLT5kYXRhICE9IGRhdGFfcykgeworICAgIGRhdGFfcy0+ZWFzeV9jb25uLT5wcm90by5odHRwYy5wYXVzZV9zdHJlYW1faWQgPSBzdHJlYW1faWQ7CisKKyAgICByZXR1cm4gTkdIVFRQMl9FUlJfUEFVU0U7CisgIH0KKwogICByZXR1cm4gMDsKIH0KIApAQCAtNDAzLDY5ICs2NTYsNzcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmdodHRwMl9mcmFtZSAqZnJhbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnVzZXJwKQogewotICBzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4gPSAoc3RydWN0IGNvbm5lY3RkYXRhICopdXNlcnA7Ci0gICh2b2lkKXNlc3Npb247Ci0gICh2b2lkKWZyYW1lOwotICBERUJVR0YoaW5mb2YoY29ubi0+ZGF0YSwgImJlZm9yZV9mcmFtZV9zZW5kKCkgd2FzIGNhbGxlZFxuIikpOworICBzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YV9zOworICAodm9pZCl1c2VycDsKKworICBkYXRhX3MgPSBuZ2h0dHAyX3Nlc3Npb25fZ2V0X3N0cmVhbV91c2VyX2RhdGEoc2Vzc2lvbiwgZnJhbWUtPmhkLnN0cmVhbV9pZCk7CisgIGlmKGRhdGFfcykgeworICAgIERFQlVHRihpbmZvZihkYXRhX3MsICJiZWZvcmVfZnJhbWVfc2VuZCgpIHdhcyBjYWxsZWRcbiIpKTsKKyAgfQorCiAgIHJldHVybiAwOwogfQogc3RhdGljIGludCBvbl9mcmFtZV9zZW5kKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZ2h0dHAyX2ZyYW1lICpmcmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp1c2VycCkKIHsKLSAgc3RydWN0IGNvbm5lY3RkYXRhICpjb25uID0gKHN0cnVjdCBjb25uZWN0ZGF0YSAqKXVzZXJwOwotICAodm9pZClzZXNzaW9uOwotICAodm9pZClmcmFtZTsKLSAgREVCVUdGKGluZm9mKGNvbm4tPmRhdGEsICJvbl9mcmFtZV9zZW5kKCkgd2FzIGNhbGxlZCwgbGVuZ3RoID0gJXpkXG4iLAotICAgICAgICAgICAgICAgZnJhbWUtPmhkLmxlbmd0aCkpOworICBzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YV9zOworICAodm9pZCl1c2VycDsKKworICBkYXRhX3MgPSBuZ2h0dHAyX3Nlc3Npb25fZ2V0X3N0cmVhbV91c2VyX2RhdGEoc2Vzc2lvbiwgZnJhbWUtPmhkLnN0cmVhbV9pZCk7CisgIGlmKGRhdGFfcykgeworICAgIERFQlVHRihpbmZvZihkYXRhX3MsICJvbl9mcmFtZV9zZW5kKCkgd2FzIGNhbGxlZCwgbGVuZ3RoID0gJXpkXG4iLAorICAgICAgICAgICAgICAgICBmcmFtZS0+aGQubGVuZ3RoKSk7CisgIH0KICAgcmV0dXJuIDA7CiB9CiBzdGF0aWMgaW50IG9uX2ZyYW1lX25vdF9zZW5kKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmdodHRwMl9mcmFtZSAqZnJhbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaWJfZXJyb3JfY29kZSwgdm9pZCAqdXNlcnApCiB7Ci0gIHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiA9IChzdHJ1Y3QgY29ubmVjdGRhdGEgKil1c2VycDsKLSAgKHZvaWQpc2Vzc2lvbjsKLSAgKHZvaWQpZnJhbWU7Ci0gIERFQlVHRihpbmZvZihjb25uLT5kYXRhLAotICAgICAgICAgICAgICAgIm9uX2ZyYW1lX25vdF9zZW5kKCkgd2FzIGNhbGxlZCwgbGliX2Vycm9yX2NvZGUgPSAlZFxuIiwKLSAgICAgICAgICAgICAgIGxpYl9lcnJvcl9jb2RlKSk7CisgIHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhX3M7CisgICh2b2lkKXVzZXJwOworCisgIGRhdGFfcyA9IG5naHR0cDJfc2Vzc2lvbl9nZXRfc3RyZWFtX3VzZXJfZGF0YShzZXNzaW9uLCBmcmFtZS0+aGQuc3RyZWFtX2lkKTsKKyAgaWYoZGF0YV9zKSB7CisgICAgREVCVUdGKGluZm9mKGRhdGFfcywKKyAgICAgICAgICAgICAgICAgIm9uX2ZyYW1lX25vdF9zZW5kKCkgd2FzIGNhbGxlZCwgbGliX2Vycm9yX2NvZGUgPSAlZFxuIiwKKyAgICAgICAgICAgICAgICAgbGliX2Vycm9yX2NvZGUpKTsKKyAgfQogICByZXR1cm4gMDsKIH0KIHN0YXRpYyBpbnQgb25fc3RyZWFtX2Nsb3NlKG5naHR0cDJfc2Vzc2lvbiAqc2Vzc2lvbiwgaW50MzJfdCBzdHJlYW1faWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBlcnJvcl9jb2RlLCB2b2lkICp1c2VycCkKIHsKLSAgc3RydWN0IGNvbm5lY3RkYXRhICpjb25uID0gKHN0cnVjdCBjb25uZWN0ZGF0YSAqKXVzZXJwOwogICBzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YV9zOwogICBzdHJ1Y3QgSFRUUCAqc3RyZWFtOworICBzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4gPSAoc3RydWN0IGNvbm5lY3RkYXRhICopdXNlcnA7CiAgICh2b2lkKXNlc3Npb247CiAgICh2b2lkKXN0cmVhbV9pZDsKLSAgREVCVUdGKGluZm9mKGNvbm4tPmRhdGEsICJvbl9zdHJlYW1fY2xvc2UoKSwgZXJyb3JfY29kZSA9ICVkLCBzdHJlYW0gJXVcbiIsCi0gICAgICAgICAgICAgICBlcnJvcl9jb2RlLCBzdHJlYW1faWQpKTsKIAogICBpZihzdHJlYW1faWQpIHsKICAgICAvKiBnZXQgdGhlIHN0cmVhbSBmcm9tIHRoZSBoYXNoIGJhc2VkIG9uIFN0cmVhbSBJRCwgc3RyZWFtIElEIHplcm8gaXMgZm9yCiAgICAgICAgY29ubmVjdGlvbi1vcmllbnRlZCBzdHVmZiAqLwotICAgIGRhdGFfcyA9IEN1cmxfaGFzaF9waWNrKCZjb25uLT5wcm90by5odHRwYy5zdHJlYW1zaCwgJnN0cmVhbV9pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yoc3RyZWFtX2lkKSk7CisgICAgZGF0YV9zID0gbmdodHRwMl9zZXNzaW9uX2dldF9zdHJlYW1fdXNlcl9kYXRhKHNlc3Npb24sIHN0cmVhbV9pZCk7CiAgICAgaWYoIWRhdGFfcykgewogICAgICAgLyogV2UgY291bGQgZ2V0IHN0cmVhbSBJRCBub3QgaW4gdGhlIGhhc2guICBGb3IgZXhhbXBsZSwgaWYgd2UKLSAgICAgICAgIGRlY2lkZWQgdG8gcmVqZWN0IHN0cmVhbSAoZS5nLiwgUFVTSF9QUk9NSVNFKS4gIFdlIGNhbGwgaW5mb2YKLSAgICAgICAgIGFzIGEgZGVidWdnaW5nIHB1cnBvc2UgZm9yIG5vdy4gKi8KLSAgICAgIGluZm9mKGNvbm4tPmRhdGEsCi0gICAgICAgICAgICAiUmVjZWl2ZWQgZnJhbWUgb24gU3RyZWFtIElEOiAleCBub3QgaW4gc3RyZWFtIGhhc2ghXG4iLAotICAgICAgICAgICAgc3RyZWFtX2lkKTsKKyAgICAgICAgIGRlY2lkZWQgdG8gcmVqZWN0IHN0cmVhbSAoZS5nLiwgUFVTSF9QUk9NSVNFKS4gKi8KICAgICAgIHJldHVybiAwOwogICAgIH0KKyAgICBERUJVR0YoaW5mb2YoZGF0YV9zLCAib25fc3RyZWFtX2Nsb3NlKCksICVzIChlcnIgJWQpLCBzdHJlYW0gJXVcbiIsCisgICAgICAgICAgICAgICAgIEN1cmxfaHR0cDJfc3RyZXJyb3IoZXJyb3JfY29kZSksIGVycm9yX2NvZGUsIHN0cmVhbV9pZCkpOwogICAgIHN0cmVhbSA9IGRhdGFfcy0+cmVxLnByb3RvcDsKKyAgICBpZighc3RyZWFtKQorICAgICAgcmV0dXJuIE5HSFRUUDJfRVJSX0NBTExCQUNLX0ZBSUxVUkU7CiAKICAgICBzdHJlYW0tPmVycm9yX2NvZGUgPSBlcnJvcl9jb2RlOwogICAgIHN0cmVhbS0+Y2xvc2VkID0gVFJVRTsKKyAgICBkYXRhX3MtPnN0YXRlLmRyYWluKys7CisgICAgY29ubi0+cHJvdG8uaHR0cGMuZHJhaW5fdG90YWwrKzsKIAogICAgIC8qIHJlbW92ZSB0aGUgZW50cnkgZnJvbSB0aGUgaGFzaCBhcyB0aGUgc3RyZWFtIGlzIG5vdyBnb25lICovCi0gICAgQ3VybF9oYXNoX2RlbGV0ZSgmY29ubi0+cHJvdG8uaHR0cGMuc3RyZWFtc2gsCi0gICAgICAgICAgICAgICAgICAgICAmc3RyZWFtX2lkLCBzaXplb2Yoc3RyZWFtX2lkKSk7Ci0gICAgREVCVUdGKGluZm9mKGNvbm4tPmRhdGEsICJSZW1vdmVkIHN0cmVhbSAldSBoYXNoIVxuIiwgc3RyZWFtX2lkKSk7CisgICAgbmdodHRwMl9zZXNzaW9uX3NldF9zdHJlYW1fdXNlcl9kYXRhKHNlc3Npb24sIHN0cmVhbV9pZCwgMCk7CisgICAgREVCVUdGKGluZm9mKGRhdGFfcywgIlJlbW92ZWQgc3RyZWFtICV1IGhhc2ghXG4iLCBzdHJlYW1faWQpKTsKICAgfQogICByZXR1cm4gMDsKIH0KQEAgLTQ3MywxMCArNzM0LDM2IEBACiBzdGF0aWMgaW50IG9uX2JlZ2luX2hlYWRlcnMobmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5naHR0cDJfZnJhbWUgKmZyYW1lLCB2b2lkICp1c2VycCkKIHsKLSAgc3RydWN0IGNvbm5lY3RkYXRhICpjb25uID0gKHN0cnVjdCBjb25uZWN0ZGF0YSAqKXVzZXJwOwotICAodm9pZClzZXNzaW9uOwotICAodm9pZClmcmFtZTsKLSAgREVCVUdGKGluZm9mKGNvbm4tPmRhdGEsICJvbl9iZWdpbl9oZWFkZXJzKCkgd2FzIGNhbGxlZFxuIikpOworICBzdHJ1Y3QgSFRUUCAqc3RyZWFtOworICBzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YV9zID0gTlVMTDsKKyAgKHZvaWQpdXNlcnA7CisKKyAgZGF0YV9zID0gbmdodHRwMl9zZXNzaW9uX2dldF9zdHJlYW1fdXNlcl9kYXRhKHNlc3Npb24sIGZyYW1lLT5oZC5zdHJlYW1faWQpOworICBpZighZGF0YV9zKSB7CisgICAgcmV0dXJuIDA7CisgIH0KKworICBERUJVR0YoaW5mb2YoZGF0YV9zLCAib25fYmVnaW5faGVhZGVycygpIHdhcyBjYWxsZWRcbiIpKTsKKworICBpZihmcmFtZS0+aGQudHlwZSAhPSBOR0hUVFAyX0hFQURFUlMpIHsKKyAgICByZXR1cm4gMDsKKyAgfQorCisgIHN0cmVhbSA9IGRhdGFfcy0+cmVxLnByb3RvcDsKKyAgaWYoIXN0cmVhbSB8fCAhc3RyZWFtLT5ib2R5c3RhcnRlZCkgeworICAgIHJldHVybiAwOworICB9CisKKyAgLyogVGhpcyBpcyB0cmFpbGVyIEhFQURFUlMgc3RhcnRlZC4gIEFsbG9jYXRlIGJ1ZmZlciBmb3IgdGhlbS4gKi8KKyAgREVCVUdGKGluZm9mKGRhdGFfcywgInRyYWlsZXIgZmllbGQgc3RhcnRlZFxuIikpOworCisgIGFzc2VydChzdHJlYW0tPnRyYWlsZXJfcmVjdmJ1ZiA9PSBOVUxMKTsKKworICBzdHJlYW0tPnRyYWlsZXJfcmVjdmJ1ZiA9IEN1cmxfYWRkX2J1ZmZlcl9pbml0KCk7CisgIGlmKCFzdHJlYW0tPnRyYWlsZXJfcmVjdmJ1ZikgeworICAgIHJldHVybiBOR0hUVFAyX0VSUl9URU1QT1JBTF9DQUxMQkFDS19GQUlMVVJFOworICB9CisKICAgcmV0dXJuIDA7CiB9CiAKQEAgLTUxNCwzOCArODAxLDczIEBACiAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IGZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdXNlcnApCiB7Ci0gIHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiA9IChzdHJ1Y3QgY29ubmVjdGRhdGEgKil1c2VycDsKICAgc3RydWN0IEhUVFAgKnN0cmVhbTsKICAgc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGFfczsKICAgaW50MzJfdCBzdHJlYW1faWQgPSBmcmFtZS0+aGQuc3RyZWFtX2lkOwotCi0gICh2b2lkKXNlc3Npb247Ci0gICh2b2lkKWZyYW1lOworICBzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4gPSAoc3RydWN0IGNvbm5lY3RkYXRhICopdXNlcnA7CiAgICh2b2lkKWZsYWdzOwogCi0gIC8qIElnbm9yZSBQVVNIX1BST01JU0UgZm9yIG5vdyAqLwotICBpZihmcmFtZS0+aGQudHlwZSAhPSBOR0hUVFAyX0hFQURFUlMpIHsKLSAgICByZXR1cm4gMDsKLSAgfQotCiAgIERFQlVHQVNTRVJUKHN0cmVhbV9pZCk7IC8qIHNob3VsZCBuZXZlciBiZSBhIHplcm8gc3RyZWFtIElEIGhlcmUgKi8KIAogICAvKiBnZXQgdGhlIHN0cmVhbSBmcm9tIHRoZSBoYXNoIGJhc2VkIG9uIFN0cmVhbSBJRCAqLwotICBkYXRhX3MgPSBDdXJsX2hhc2hfcGljaygmY29ubi0+cHJvdG8uaHR0cGMuc3RyZWFtc2gsICZzdHJlYW1faWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzdHJlYW1faWQpKTsKLSAgaWYoIWRhdGFfcykgeworICBkYXRhX3MgPSBuZ2h0dHAyX3Nlc3Npb25fZ2V0X3N0cmVhbV91c2VyX2RhdGEoc2Vzc2lvbiwgc3RyZWFtX2lkKTsKKyAgaWYoIWRhdGFfcykKICAgICAvKiBSZWNlaXZpbmcgYSBTdHJlYW0gSUQgbm90IGluIHRoZSBoYXNoIHNob3VsZCBub3QgaGFwcGVuLCB0aGlzIGlzIGFuCiAgICAgICAgaW50ZXJuYWwgZXJyb3IgbW9yZSB0aGFuIGFueXRoaW5nIGVsc2UhICovCi0gICAgZmFpbGYoY29ubi0+ZGF0YSwgIlJlY2VpdmVkIGZyYW1lIG9uIFN0cmVhbSBJRDogJXggbm90IGluIHN0cmVhbSBoYXNoISIsCi0gICAgICAgICAgc3RyZWFtX2lkKTsKKyAgICByZXR1cm4gTkdIVFRQMl9FUlJfQ0FMTEJBQ0tfRkFJTFVSRTsKKworICBzdHJlYW0gPSBkYXRhX3MtPnJlcS5wcm90b3A7CisgIGlmKCFzdHJlYW0pIHsKKyAgICBmYWlsZihkYXRhX3MsICJJbnRlcm5hbCBOVUxMIHN0cmVhbSEgNVxuIik7CiAgICAgcmV0dXJuIE5HSFRUUDJfRVJSX0NBTExCQUNLX0ZBSUxVUkU7CiAgIH0KLSAgc3RyZWFtID0gZGF0YV9zLT5yZXEucHJvdG9wOwogCi0gIGlmKHN0cmVhbS0+Ym9keXN0YXJ0ZWQpCi0gICAgLyogSWdub3JlIHRyYWlsZXIgb3IgSEVBREVSUyBub3QgbWFwcGVkIHRvIEhUVFAgc2VtYW50aWNzLiAgVGhlCi0gICAgICAgY29uc2VxdWVuY2UgaXMgaGFuZGxlZCBpbiBvbl9mcmFtZV9yZWN2KCkuICovCisgIC8qIFN0b3JlIHJlY2VpdmVkIFBVU0hfUFJPTUlTRSBoZWFkZXJzIHRvIGJlIHVzZWQgd2hlbiB0aGUgc3Vic2VxdWVudAorICAgICBQVVNIX1BST01JU0UgY2FsbGJhY2sgY29tZXMgKi8KKyAgaWYoZnJhbWUtPmhkLnR5cGUgPT0gTkdIVFRQMl9QVVNIX1BST01JU0UpIHsKKyAgICBjaGFyICpoOworCisgICAgaWYoIXN0cmVhbS0+cHVzaF9oZWFkZXJzKSB7CisgICAgICBzdHJlYW0tPnB1c2hfaGVhZGVyc19hbGxvYyA9IDEwOworICAgICAgc3RyZWFtLT5wdXNoX2hlYWRlcnMgPSBtYWxsb2Moc3RyZWFtLT5wdXNoX2hlYWRlcnNfYWxsb2MgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGNoYXIgKikpOworICAgICAgc3RyZWFtLT5wdXNoX2hlYWRlcnNfdXNlZCA9IDA7CisgICAgfQorICAgIGVsc2UgaWYoc3RyZWFtLT5wdXNoX2hlYWRlcnNfdXNlZCA9PQorICAgICAgICAgICAgc3RyZWFtLT5wdXNoX2hlYWRlcnNfYWxsb2MpIHsKKyAgICAgIGNoYXIgKipoZWFkcDsKKyAgICAgIHN0cmVhbS0+cHVzaF9oZWFkZXJzX2FsbG9jICo9IDI7CisgICAgICBoZWFkcCA9IHJlYWxsb2Moc3RyZWFtLT5wdXNoX2hlYWRlcnMsCisgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtLT5wdXNoX2hlYWRlcnNfYWxsb2MgKiBzaXplb2YoY2hhciAqKSk7CisgICAgICBpZighaGVhZHApIHsKKyAgICAgICAgZnJlZShzdHJlYW0tPnB1c2hfaGVhZGVycyk7CisgICAgICAgIHN0cmVhbS0+cHVzaF9oZWFkZXJzID0gTlVMTDsKKyAgICAgICAgcmV0dXJuIE5HSFRUUDJfRVJSX1RFTVBPUkFMX0NBTExCQUNLX0ZBSUxVUkU7CisgICAgICB9CisgICAgICBzdHJlYW0tPnB1c2hfaGVhZGVycyA9IGhlYWRwOworICAgIH0KKyAgICBoID0gYXByaW50ZigiJXM6JXMiLCBuYW1lLCB2YWx1ZSk7CisgICAgaWYoaCkKKyAgICAgIHN0cmVhbS0+cHVzaF9oZWFkZXJzW3N0cmVhbS0+cHVzaF9oZWFkZXJzX3VzZWQrK10gPSBoOwogICAgIHJldHVybiAwOworICB9CisKKyAgaWYoc3RyZWFtLT5ib2R5c3RhcnRlZCkgeworICAgIC8qIFRoaXMgaXMgdHJhaWxlciBmaWVsZHMuICovCisgICAgLyogMyBpcyBmb3IgIjoiIGFuZCAiXHJcbiIuICovCisgICAgdWludDMyX3QgbiA9ICh1aW50MzJfdCkobmFtZWxlbiArIHZhbHVlbGVuICsgMyk7CisKKyAgICBERUJVR0YoaW5mb2YoZGF0YV9zLCAiaDIgdHJhaWxlcjogJS4qczogJS4qc1xuIiwgbmFtZWxlbiwgbmFtZSwgdmFsdWVsZW4sCisgICAgICAgICAgICAgICAgIHZhbHVlKSk7CisKKyAgICBDdXJsX2FkZF9idWZmZXIoc3RyZWFtLT50cmFpbGVyX3JlY3ZidWYsICZuLCBzaXplb2YobikpOworICAgIEN1cmxfYWRkX2J1ZmZlcihzdHJlYW0tPnRyYWlsZXJfcmVjdmJ1ZiwgbmFtZSwgbmFtZWxlbik7CisgICAgQ3VybF9hZGRfYnVmZmVyKHN0cmVhbS0+dHJhaWxlcl9yZWN2YnVmLCAiOiAiLCAyKTsKKyAgICBDdXJsX2FkZF9idWZmZXIoc3RyZWFtLT50cmFpbGVyX3JlY3ZidWYsIHZhbHVlLCB2YWx1ZWxlbik7CisgICAgQ3VybF9hZGRfYnVmZmVyKHN0cmVhbS0+dHJhaWxlcl9yZWN2YnVmLCAiXHJcblwwIiwgMyk7CisKKyAgICByZXR1cm4gMDsKKyAgfQogCiAgIGlmKG5hbWVsZW4gPT0gc2l6ZW9mKCI6c3RhdHVzIikgLSAxICYmCiAgICAgIG1lbWNtcCgiOnN0YXR1cyIsIG5hbWUsIG5hbWVsZW4pID09IDApIHsKQEAgLTU1NSwxNCArODc3LDE2IEBACiAgICAgc3RyZWFtLT5zdGF0dXNfY29kZSA9IGRlY29kZV9zdGF0dXNfY29kZSh2YWx1ZSwgdmFsdWVsZW4pOwogICAgIERFQlVHQVNTRVJUKHN0cmVhbS0+c3RhdHVzX2NvZGUgIT0gLTEpOwogCi0gICAgQ3VybF9hZGRfYnVmZmVyKHN0cmVhbS0+aGVhZGVyX3JlY3ZidWYsICJIVFRQLzIuMCAiLCA5KTsKKyAgICBDdXJsX2FkZF9idWZmZXIoc3RyZWFtLT5oZWFkZXJfcmVjdmJ1ZiwgIkhUVFAvMiAiLCA3KTsKICAgICBDdXJsX2FkZF9idWZmZXIoc3RyZWFtLT5oZWFkZXJfcmVjdmJ1ZiwgdmFsdWUsIHZhbHVlbGVuKTsKLSAgICBDdXJsX2FkZF9idWZmZXIoc3RyZWFtLT5oZWFkZXJfcmVjdmJ1ZiwgIlxyXG4iLCAyKTsKLSAgICBkYXRhX3MtPnN0YXRlLmRyYWluKys7Ci0gICAgQ3VybF9leHBpcmUoZGF0YV9zLCAxKTsKKyAgICAvKiB0aGUgc3BhY2UgY2hhcmFjdGVyIGFmdGVyIHRoZSBzdGF0dXMgY29kZSBpcyBtYW5kYXRvcnkgKi8KKyAgICBDdXJsX2FkZF9idWZmZXIoc3RyZWFtLT5oZWFkZXJfcmVjdmJ1ZiwgIiBcclxuIiwgMyk7CisgICAgLyogaWYgd2UgcmVjZWl2ZSBkYXRhIGZvciBhbm90aGVyIGhhbmRsZSwgd2FrZSB0aGF0IHVwICovCisgICAgaWYoY29ubi0+ZGF0YSAhPSBkYXRhX3MpCisgICAgICBDdXJsX2V4cGlyZShkYXRhX3MsIDEpOwogCi0gICAgREVCVUdGKGluZm9mKGRhdGFfcywgImgyIHN0YXR1czogSFRUUC8yICUwM2RcbiIsCi0gICAgICAgICAgICAgICAgIHN0cmVhbS0+c3RhdHVzX2NvZGUpKTsKKyAgICBERUJVR0YoaW5mb2YoZGF0YV9zLCAiaDIgc3RhdHVzOiBIVFRQLzIgJTAzZCAoZWFzeSAlcClcbiIsCisgICAgICAgICAgICAgICAgIHN0cmVhbS0+c3RhdHVzX2NvZGUsIGRhdGFfcykpOwogICAgIHJldHVybiAwOwogICB9CiAKQEAgLTU3MCwxMSArODk0LDEyIEBACiAgICAgIHJlY2VpdmVkLCBhbmQgdGhpcyBpcyBub3QgcHNldWRvLWhlYWRlciBmaWVsZCAuICovCiAgIC8qIGNvbnZlcnQgdG8gYSBIVFRQMS1zdHlsZSBoZWFkZXIgKi8KICAgQ3VybF9hZGRfYnVmZmVyKHN0cmVhbS0+aGVhZGVyX3JlY3ZidWYsIG5hbWUsIG5hbWVsZW4pOwotICBDdXJsX2FkZF9idWZmZXIoc3RyZWFtLT5oZWFkZXJfcmVjdmJ1ZiwgIjoiLCAxKTsKKyAgQ3VybF9hZGRfYnVmZmVyKHN0cmVhbS0+aGVhZGVyX3JlY3ZidWYsICI6ICIsIDIpOwogICBDdXJsX2FkZF9idWZmZXIoc3RyZWFtLT5oZWFkZXJfcmVjdmJ1ZiwgdmFsdWUsIHZhbHVlbGVuKTsKICAgQ3VybF9hZGRfYnVmZmVyKHN0cmVhbS0+aGVhZGVyX3JlY3ZidWYsICJcclxuIiwgMik7Ci0gIGRhdGFfcy0+c3RhdGUuZHJhaW4rKzsKLSAgQ3VybF9leHBpcmUoZGF0YV9zLCAxKTsKKyAgLyogaWYgd2UgcmVjZWl2ZSBkYXRhIGZvciBhbm90aGVyIGhhbmRsZSwgd2FrZSB0aGF0IHVwICovCisgIGlmKGNvbm4tPmRhdGEgIT0gZGF0YV9zKQorICAgIEN1cmxfZXhwaXJlKGRhdGFfcywgMSk7CiAKICAgREVCVUdGKGluZm9mKGRhdGFfcywgImgyIGhlYWRlcjogJS4qczogJS4qc1xuIiwgbmFtZWxlbiwgbmFtZSwgdmFsdWVsZW4sCiAgICAgICAgICAgICAgICB2YWx1ZSkpOwpAQCAtNTg5LDMxICs5MTQsMjcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdodHRwMl9kYXRhX3NvdXJjZSAqc291cmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp1c2VycCkKIHsKLSAgc3RydWN0IGNvbm5lY3RkYXRhICpjb25uID0gKHN0cnVjdCBjb25uZWN0ZGF0YSAqKXVzZXJwOwotICBzdHJ1Y3QgaHR0cF9jb25uICpjID0gJmNvbm4tPnByb3RvLmh0dHBjOwogICBzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YV9zOwogICBzdHJ1Y3QgSFRUUCAqc3RyZWFtID0gTlVMTDsKICAgc2l6ZV90IG5yZWFkOwotICAodm9pZClzZXNzaW9uOwotICAodm9pZClzdHJlYW1faWQ7CiAgICh2b2lkKXNvdXJjZTsKKyAgKHZvaWQpdXNlcnA7CiAKICAgaWYoc3RyZWFtX2lkKSB7CiAgICAgLyogZ2V0IHRoZSBzdHJlYW0gZnJvbSB0aGUgaGFzaCBiYXNlZCBvbiBTdHJlYW0gSUQsIHN0cmVhbSBJRCB6ZXJvIGlzIGZvcgogICAgICAgIGNvbm5lY3Rpb24tb3JpZW50ZWQgc3R1ZmYgKi8KLSAgICBkYXRhX3MgPSBDdXJsX2hhc2hfcGljaygmYy0+c3RyZWFtc2gsICZzdHJlYW1faWQsIHNpemVvZihzdHJlYW1faWQpKTsKLSAgICBpZighZGF0YV9zKSB7CisgICAgZGF0YV9zID0gbmdodHRwMl9zZXNzaW9uX2dldF9zdHJlYW1fdXNlcl9kYXRhKHNlc3Npb24sIHN0cmVhbV9pZCk7CisgICAgaWYoIWRhdGFfcykKICAgICAgIC8qIFJlY2VpdmluZyBhIFN0cmVhbSBJRCBub3QgaW4gdGhlIGhhc2ggc2hvdWxkIG5vdCBoYXBwZW4sIHRoaXMgaXMgYW4KICAgICAgICAgIGludGVybmFsIGVycm9yIG1vcmUgdGhhbiBhbnl0aGluZyBlbHNlISAqLwotICAgICAgZmFpbGYoY29ubi0+ZGF0YSwgIkFza2VkIGZvciBkYXRhIHRvIHN0cmVhbSAldSBub3QgaW4gaGFzaCEiLCBzdHJlYW1faWQpOwogICAgICAgcmV0dXJuIE5HSFRUUDJfRVJSX0NBTExCQUNLX0ZBSUxVUkU7Ci0gICAgfQorCiAgICAgc3RyZWFtID0gZGF0YV9zLT5yZXEucHJvdG9wOworICAgIGlmKCFzdHJlYW0pCisgICAgICByZXR1cm4gTkdIVFRQMl9FUlJfQ0FMTEJBQ0tfRkFJTFVSRTsKICAgfQotICBlbHNlIHsKLSAgICBmYWlsZihjb25uLT5kYXRhLCAibmdodHRwMiBjb25mdXNpb24iKTsKKyAgZWxzZQogICAgIHJldHVybiBOR0hUVFAyX0VSUl9JTlZBTElEX0FSR1VNRU5UOwotICB9CiAKICAgbnJlYWQgPSBNSU4oc3RyZWFtLT51cGxvYWRfbGVuLCBsZW5ndGgpOwogICBpZihucmVhZCA+IDApIHsKQEAgLTY0NSwxMCArOTY2LDE4IEBACiAKICNkZWZpbmUgSDJfQlVGU0laRSAzMjc2OAogCi1zdGF0aWMgdm9pZCBmcmVlc3RyZWFtZW50cnkodm9pZCAqZnJlZXRoaXMpCisjaWZkZWYgTkdIVFRQMl9IQVNfRVJST1JfQ0FMTEJBQ0sKK3N0YXRpYyBpbnQgZXJyb3JfY2FsbGJhY2sobmdodHRwMl9zZXNzaW9uICpzZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICptc2csCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnVzZXJwKQogewotICAodm9pZClmcmVldGhpczsKKyAgc3RydWN0IGNvbm5lY3RkYXRhICpjb25uID0gKHN0cnVjdCBjb25uZWN0ZGF0YSAqKXVzZXJwOworICAodm9pZClzZXNzaW9uOworICBpbmZvZihjb25uLT5kYXRhLCAiaHR0cDIgZXJyb3I6ICUuKnNcbiIsIGxlbiwgbXNnKTsKKyAgcmV0dXJuIDA7CiB9CisjZW5kaWYKIAogLyoKICAqIEluaXRpYWxpemUgbmdodHRwMiBmb3IgYSBDdXJsIGNvbm5lY3Rpb24KQEAgLTY5OSw2ICsxMDI4LDggQEAKICAgICAvKiBuZ2h0dHAyX29uX2hlYWRlcl9jYWxsYmFjayAqLwogICAgIG5naHR0cDJfc2Vzc2lvbl9jYWxsYmFja3Nfc2V0X29uX2hlYWRlcl9jYWxsYmFjayhjYWxsYmFja3MsIG9uX2hlYWRlcik7CiAKKyAgICBuZ2h0dHAyX3Nlc3Npb25fY2FsbGJhY2tzX3NldF9lcnJvcl9jYWxsYmFjayhjYWxsYmFja3MsIGVycm9yX2NhbGxiYWNrKTsKKwogICAgIC8qIFRoZSBuZ2h0dHAyIHNlc3Npb24gaXMgbm90IHlldCBzZXR1cCwgZG8gaXQgKi8KICAgICByYyA9IG5naHR0cDJfc2Vzc2lvbl9jbGllbnRfbmV3KCZjb25uLT5wcm90by5odHRwYy5oMiwgY2FsbGJhY2tzLCBjb25uKTsKIApAQCAtNzA4LDI3ICsxMDM5LDExIEBACiAgICAgICBmYWlsZihjb25uLT5kYXRhLCAiQ291bGRuJ3QgaW5pdGlhbGl6ZSBuZ2h0dHAyISIpOwogICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7IC8qIG1vc3QgbGlrZWx5IGF0IGxlYXN0ICovCiAgICAgfQotCi0gICAgcmMgPSBDdXJsX2hhc2hfaW5pdCgmY29ubi0+cHJvdG8uaHR0cGMuc3RyZWFtc2gsIDcsIEN1cmxfaGFzaF9zdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICBDdXJsX3N0cl9rZXlfY29tcGFyZSwgZnJlZXN0cmVhbWVudHJ5KTsKLSAgICBpZihyYykgewotICAgICAgZmFpbGYoY29ubi0+ZGF0YSwgIkNvdWxkbid0IGluaXQgc3RyZWFtIGhhc2ghIik7Ci0gICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsgLyogbW9zdCBsaWtlbHkgYXQgbGVhc3QgKi8KLSAgICB9CiAgIH0KICAgcmV0dXJuIENVUkxFX09LOwogfQogCiAvKgotICogU2VuZCBhIHJlcXVlc3QgdXNpbmcgaHR0cDIKLSAqLwotQ1VSTGNvZGUgQ3VybF9odHRwMl9zZW5kX3JlcXVlc3Qoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKQotewotICAodm9pZCljb25uOwotICByZXR1cm4gQ1VSTEVfT0s7Ci19Ci0KLS8qCiAgKiBBcHBlbmQgaGVhZGVycyB0byBhc2sgZm9yIGEgSFRUUDEuMSB0byBIVFRQMiB1cGdyYWRlLgogICovCiBDVVJMY29kZSBDdXJsX2h0dHAyX3JlcXVlc3RfdXBncmFkZShDdXJsX3NlbmRfYnVmZmVyICpyZXEsCkBAIC03NzMsMjYgKzEwODgsMTg3IEBACiAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBzc2l6ZV90IGh0dHAyX2hhbmRsZV9zdHJlYW1fY2xvc2Uoc3RydWN0IGh0dHBfY29ubiAqaHR0cGMsCisvKgorICogUmV0dXJucyBub256ZXJvIGlmIGN1cnJlbnQgSFRUUC8yIHNlc3Npb24gc2hvdWxkIGJlIGNsb3NlZC4KKyAqLworc3RhdGljIGludCBzaG91bGRfY2xvc2Vfc2Vzc2lvbihzdHJ1Y3QgaHR0cF9jb25uICpodHRwYykgeworICByZXR1cm4gaHR0cGMtPmRyYWluX3RvdGFsID09IDAgJiYgIW5naHR0cDJfc2Vzc2lvbl93YW50X3JlYWQoaHR0cGMtPmgyKSAmJgorICAgICAgICAgIW5naHR0cDJfc2Vzc2lvbl93YW50X3dyaXRlKGh0dHBjLT5oMik7Cit9CisKK3N0YXRpYyBpbnQgaDJfc2Vzc2lvbl9zZW5kKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdodHRwMl9zZXNzaW9uICpoMik7CisKKy8qCisgKiBoMl9wcm9jZXNzX3BlbmRpbmdfaW5wdXQoKSBwcm9jZXNzZXMgcGVuZGluZyBpbnB1dCBsZWZ0IGluCisgKiBodHRwYy0+aW5idWYuICBUaGVuLCBjYWxsIGgyX3Nlc3Npb25fc2VuZCgpIHRvIHNlbmQgcGVuZGluZyBkYXRhLgorICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIDAgaWYgaXQgc3VjY2VlZHMsIG9yIC0xIGFuZCBlcnJvciBjb2RlIHdpbGwKKyAqIGJlIGFzc2lnbmVkIHRvICplcnIuCisgKi8KK3N0YXRpYyBpbnQgaDJfcHJvY2Vzc19wZW5kaW5nX2lucHV0KHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGh0dHBfY29ubiAqaHR0cGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDVVJMY29kZSAqZXJyKSB7CisgIHNzaXplX3QgbnJlYWQ7CisgIGNoYXIgKmluYnVmOworICBzc2l6ZV90IHJ2OworCisgIG5yZWFkID0gaHR0cGMtPmluYnVmbGVuIC0gaHR0cGMtPm5yZWFkX2luYnVmOworICBpbmJ1ZiA9IGh0dHBjLT5pbmJ1ZiArIGh0dHBjLT5ucmVhZF9pbmJ1ZjsKKworICBydiA9IG5naHR0cDJfc2Vzc2lvbl9tZW1fcmVjdihodHRwYy0+aDIsIChjb25zdCB1aW50OF90ICopaW5idWYsIG5yZWFkKTsKKyAgaWYocnYgPCAwKSB7CisgICAgZmFpbGYoZGF0YSwKKyAgICAgICAgICAiaDJfcHJvY2Vzc19wZW5kaW5nX2lucHV0OiBuZ2h0dHAyX3Nlc3Npb25fbWVtX3JlY3YoKSByZXR1cm5lZCAiCisgICAgICAgICAgIiVkOiVzXG4iLCBydiwgbmdodHRwMl9zdHJlcnJvcigoaW50KXJ2KSk7CisgICAgKmVyciA9IENVUkxFX1JFQ1ZfRVJST1I7CisgICAgcmV0dXJuIC0xOworICB9CisKKyAgaWYobnJlYWQgPT0gcnYpIHsKKyAgICBERUJVR0YoaW5mb2YoZGF0YSwKKyAgICAgICAgICAgICAgICAgImgyX3Byb2Nlc3NfcGVuZGluZ19pbnB1dDogQWxsIGRhdGEgaW4gY29ubmVjdGlvbiBidWZmZXIgIgorICAgICAgICAgICAgICAgICAicHJvY2Vzc2VkXG4iKSk7CisgICAgaHR0cGMtPmluYnVmbGVuID0gMDsKKyAgICBodHRwYy0+bnJlYWRfaW5idWYgPSAwOworICB9CisgIGVsc2UgeworICAgIGh0dHBjLT5ucmVhZF9pbmJ1ZiArPSBydjsKKyAgICBERUJVR0YoaW5mb2YoZGF0YSwKKyAgICAgICAgICAgICAgICAgImgyX3Byb2Nlc3NfcGVuZGluZ19pbnB1dDogJXp1IGJ5dGVzIGxlZnQgaW4gY29ubmVjdGlvbiAiCisgICAgICAgICAgICAgICAgICJidWZmZXJcbiIsCisgICAgICAgICAgICAgICAgIGh0dHBjLT5pbmJ1ZmxlbiAtIGh0dHBjLT5ucmVhZF9pbmJ1ZikpOworICB9CisKKyAgcnYgPSBoMl9zZXNzaW9uX3NlbmQoZGF0YSwgaHR0cGMtPmgyKTsKKyAgaWYocnYgIT0gMCkgeworICAgICplcnIgPSBDVVJMRV9TRU5EX0VSUk9SOworICAgIHJldHVybiAtMTsKKyAgfQorCisgIGlmKHNob3VsZF9jbG9zZV9zZXNzaW9uKGh0dHBjKSkgeworICAgIERFQlVHRihpbmZvZihkYXRhLAorICAgICAgICAgICAgICAgICAiaDJfcHJvY2Vzc19wZW5kaW5nX2lucHV0OiBub3RoaW5nIHRvIGRvIGluIHRoaXMgc2Vzc2lvblxuIikpOworICAgICplcnIgPSBDVVJMRV9IVFRQMjsKKyAgICByZXR1cm4gLTE7CisgIH0KKworICByZXR1cm4gMDsKK30KKworc3RhdGljIHNzaXplX3QgaHR0cDJfaGFuZGxlX3N0cmVhbV9jbG9zZShzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgSFRUUCAqc3RyZWFtLCBDVVJMY29kZSAqZXJyKSB7CisgIGNoYXIgKnRyYWlsZXJfcG9zLCAqdHJhaWxlcl9lbmQ7CisgIENVUkxjb2RlIHJlc3VsdDsKKyAgc3RydWN0IGh0dHBfY29ubiAqaHR0cGMgPSAmY29ubi0+cHJvdG8uaHR0cGM7CisKICAgaWYoaHR0cGMtPnBhdXNlX3N0cmVhbV9pZCA9PSBzdHJlYW0tPnN0cmVhbV9pZCkgewogICAgIGh0dHBjLT5wYXVzZV9zdHJlYW1faWQgPSAwOwogICB9CisKKyAgREVCVUdBU1NFUlQoaHR0cGMtPmRyYWluX3RvdGFsID49IGRhdGEtPnN0YXRlLmRyYWluKTsKKyAgaHR0cGMtPmRyYWluX3RvdGFsIC09IGRhdGEtPnN0YXRlLmRyYWluOworICBkYXRhLT5zdGF0ZS5kcmFpbiA9IDA7CisKKyAgaWYoaHR0cGMtPnBhdXNlX3N0cmVhbV9pZCA9PSAwKSB7CisgICAgaWYoaDJfcHJvY2Vzc19wZW5kaW5nX2lucHV0KGRhdGEsIGh0dHBjLCBlcnIpICE9IDApIHsKKyAgICAgIHJldHVybiAtMTsKKyAgICB9CisgIH0KKworICBERUJVR0FTU0VSVChkYXRhLT5zdGF0ZS5kcmFpbiA9PSAwKTsKKwogICAvKiBSZXNldCB0byBGQUxTRSB0byBwcmV2ZW50IGluZmluaXRlIGxvb3AgaW4gcmVhZHdyaXRlX2RhdGEKICAgIGZ1bmN0aW9uLiAqLwogICBzdHJlYW0tPmNsb3NlZCA9IEZBTFNFOwogICBpZihzdHJlYW0tPmVycm9yX2NvZGUgIT0gTkdIVFRQMl9OT19FUlJPUikgewotICAgIGZhaWxmKGRhdGEsICJIVFRQLzIgc3RyZWFtICV1IHdhcyBub3QgY2xvc2VkIGNsZWFubHk6IGVycm9yX2NvZGUgPSAlZCIsCi0gICAgICAgICAgc3RyZWFtLT5zdHJlYW1faWQsIHN0cmVhbS0+ZXJyb3JfY29kZSk7Ci0gICAgKmVyciA9IENVUkxFX0hUVFAyOworICAgIGZhaWxmKGRhdGEsICJIVFRQLzIgc3RyZWFtICV1IHdhcyBub3QgY2xvc2VkIGNsZWFubHk6ICVzIChlcnIgJWQpIiwKKyAgICAgICAgICBzdHJlYW0tPnN0cmVhbV9pZCwgQ3VybF9odHRwMl9zdHJlcnJvcihzdHJlYW0tPmVycm9yX2NvZGUpLAorICAgICAgICAgIHN0cmVhbS0+ZXJyb3JfY29kZSk7CisgICAgKmVyciA9IENVUkxFX0hUVFAyX1NUUkVBTTsKICAgICByZXR1cm4gLTE7CiAgIH0KKworICBpZighc3RyZWFtLT5ib2R5c3RhcnRlZCkgeworICAgIGZhaWxmKGRhdGEsICJIVFRQLzIgc3RyZWFtICV1IHdhcyBjbG9zZWQgY2xlYW5seSwgYnV0IGJlZm9yZSBnZXR0aW5nICIKKyAgICAgICAgICAiIGFsbCByZXNwb25zZSBoZWFkZXIgZmllbGRzLCB0ZWF0ZWQgYXMgZXJyb3IiLAorICAgICAgICAgIHN0cmVhbS0+c3RyZWFtX2lkKTsKKyAgICAqZXJyID0gQ1VSTEVfSFRUUDJfU1RSRUFNOworICAgIHJldHVybiAtMTsKKyAgfQorCisgIGlmKHN0cmVhbS0+dHJhaWxlcl9yZWN2YnVmICYmIHN0cmVhbS0+dHJhaWxlcl9yZWN2YnVmLT5idWZmZXIpIHsKKyAgICB0cmFpbGVyX3BvcyA9IHN0cmVhbS0+dHJhaWxlcl9yZWN2YnVmLT5idWZmZXI7CisgICAgdHJhaWxlcl9lbmQgPSB0cmFpbGVyX3BvcyArIHN0cmVhbS0+dHJhaWxlcl9yZWN2YnVmLT5zaXplX3VzZWQ7CisKKyAgICBmb3IoOyB0cmFpbGVyX3BvcyA8IHRyYWlsZXJfZW5kOykgeworICAgICAgdWludDMyX3QgbjsKKyAgICAgIG1lbWNweSgmbiwgdHJhaWxlcl9wb3MsIHNpemVvZihuKSk7CisgICAgICB0cmFpbGVyX3BvcyArPSBzaXplb2Yobik7CisKKyAgICAgIHJlc3VsdCA9IEN1cmxfY2xpZW50X3dyaXRlKGNvbm4sIENMSUVOVFdSSVRFX0hFQURFUiwgdHJhaWxlcl9wb3MsIG4pOworICAgICAgaWYocmVzdWx0KSB7CisgICAgICAgICplcnIgPSByZXN1bHQ7CisgICAgICAgIHJldHVybiAtMTsKKyAgICAgIH0KKworICAgICAgdHJhaWxlcl9wb3MgKz0gbiArIDE7CisgICAgfQorICB9CisKICAgREVCVUdGKGluZm9mKGRhdGEsICJodHRwMl9yZWN2IHJldHVybnMgMCwgaHR0cDJfaGFuZGxlX3N0cmVhbV9jbG9zZVxuIikpOwogICByZXR1cm4gMDsKIH0KIAogLyoKKyAqIGgyX3ByaV9zcGVjKCkgZmlsbHMgaW4gdGhlIHByaV9zcGVjIHN0cnVjdCwgdXNlZCBieSBuZ2h0dHAyIHRvIHNlbmQgd2VpZ2h0CisgKiBhbmQgZGVwZW5kZW5jeSB0byB0aGUgcGVlci4gSXQgYWxzbyBzdG9yZXMgdGhlIHVwZGF0ZWQgdmFsdWVzIGluIHRoZSBzdGF0ZQorICogc3RydWN0LgorICovCisKK3N0YXRpYyB2b2lkIGgyX3ByaV9zcGVjKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgbmdodHRwMl9wcmlvcml0eV9zcGVjICpwcmlfc3BlYykKK3sKKyAgc3RydWN0IEhUVFAgKmRlcHN0cmVhbSA9IChkYXRhLT5zZXQuc3RyZWFtX2RlcGVuZHNfb24/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+c2V0LnN0cmVhbV9kZXBlbmRzX29uLT5yZXEucHJvdG9wOk5VTEwpOworICBpbnQzMl90IGRlcHN0cmVhbV9pZCA9IGRlcHN0cmVhbT8gZGVwc3RyZWFtLT5zdHJlYW1faWQ6MDsKKyAgbmdodHRwMl9wcmlvcml0eV9zcGVjX2luaXQocHJpX3NwZWMsIGRlcHN0cmVhbV9pZCwgZGF0YS0+c2V0LnN0cmVhbV93ZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtPnNldC5zdHJlYW1fZGVwZW5kc19lKTsKKyAgZGF0YS0+c3RhdGUuc3RyZWFtX3dlaWdodCA9IGRhdGEtPnNldC5zdHJlYW1fd2VpZ2h0OworICBkYXRhLT5zdGF0ZS5zdHJlYW1fZGVwZW5kc19lID0gZGF0YS0+c2V0LnN0cmVhbV9kZXBlbmRzX2U7CisgIGRhdGEtPnN0YXRlLnN0cmVhbV9kZXBlbmRzX29uID0gZGF0YS0+c2V0LnN0cmVhbV9kZXBlbmRzX29uOworfQorCisvKgorICogaDJfc2Vzc2lvbl9zZW5kKCkgY2hlY2tzIGlmIHRoZXJlJ3MgYmVlbiBhbiB1cGRhdGUgaW4gdGhlIHByaW9yaXR5IC8KKyAqIGRlcGVuZGVuY3kgc2V0dGluZ3MgYW5kIGlmIHNvIGl0IHN1Ym1pdHMgYSBQUklPUklUWSBmcmFtZSB3aXRoIHRoZSB1cGRhdGVkCisgKiBpbmZvLgorICovCitzdGF0aWMgaW50IGgyX3Nlc3Npb25fc2VuZChzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG5naHR0cDJfc2Vzc2lvbiAqaDIpCit7CisgIHN0cnVjdCBIVFRQICpzdHJlYW0gPSBkYXRhLT5yZXEucHJvdG9wOworICBpZigoZGF0YS0+c2V0LnN0cmVhbV93ZWlnaHQgIT0gZGF0YS0+c3RhdGUuc3RyZWFtX3dlaWdodCkgfHwKKyAgICAgKGRhdGEtPnNldC5zdHJlYW1fZGVwZW5kc19lICE9IGRhdGEtPnN0YXRlLnN0cmVhbV9kZXBlbmRzX2UpIHx8CisgICAgIChkYXRhLT5zZXQuc3RyZWFtX2RlcGVuZHNfb24gIT0gZGF0YS0+c3RhdGUuc3RyZWFtX2RlcGVuZHNfb24pICkgeworICAgIC8qIHNlbmQgbmV3IHdlaWdodCBhbmQvb3IgZGVwZW5kZW5jeSAqLworICAgIG5naHR0cDJfcHJpb3JpdHlfc3BlYyBwcmlfc3BlYzsKKyAgICBpbnQgcnY7CisKKyAgICBoMl9wcmlfc3BlYyhkYXRhLCAmcHJpX3NwZWMpOworCisgICAgREVCVUdGKGluZm9mKGRhdGEsICJRdWV1aW5nIFBSSU9SSVRZIG9uIHN0cmVhbSAldSAoZWFzeSAlcClcbiIsCisgICAgICAgICAgICAgICAgIHN0cmVhbS0+c3RyZWFtX2lkLCBkYXRhKSk7CisgICAgcnYgPSBuZ2h0dHAyX3N1Ym1pdF9wcmlvcml0eShoMiwgTkdIVFRQMl9GTEFHX05PTkUsIHN0cmVhbS0+c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnByaV9zcGVjKTsKKyAgICBpZihydikKKyAgICAgIHJldHVybiBydjsKKyAgfQorCisgIHJldHVybiBuZ2h0dHAyX3Nlc3Npb25fc2VuZChoMik7Cit9CisKKy8qCiAgKiBJZiB0aGUgcmVhZCB3b3VsZCBibG9jayAoRVdPVUxEQkxPQ0spIHdlIHJldHVybiAtMS4gT3RoZXJ3aXNlIHdlIHJldHVybgogICogYSByZWd1bGFyIENVUkxjb2RlIHZhbHVlLgogICovCkBAIC04MDgsMTIgKzEyODQsMTEgQEAKIAogICAodm9pZClzb2NraW5kZXg7IC8qIHdlIGFsd2F5cyBkbyBIVFRQMiBvbiBzb2NraW5kZXggMCAqLwogCi0gIC8qIElmIHN0cmVhbSBpcyBjbG9zZWQsIHJldHVybiAwIHRvIHNpZ25hbCB0aGUgaHR0cCByb3V0aW5lIHRvIGNsb3NlCi0gICAgIHRoZSBjb25uZWN0aW9uLiAgV2UgbmVlZCB0byBoYW5kbGUgc3RyZWFtIGNsb3N1cmUgaGVyZSwKLSAgICAgb3RoZXJ3aXNlLCB3ZSBtYXkgYmUgZ29pbmcgdG8gcmVhZCBmcm9tIHVuZGVybHlpbmcgY29ubmVjdGlvbiwKLSAgICAgYW5kIGdldHMgRUFHQUlOLCBhbmQgd2Ugd2lsbCBnZXQgc3R1Y2sgdGhlcmUuICovCi0gIGlmKHN0cmVhbS0+bWVtbGVuID09IDAgJiYgc3RyZWFtLT5jbG9zZWQpIHsKLSAgICByZXR1cm4gaHR0cDJfaGFuZGxlX3N0cmVhbV9jbG9zZShodHRwYywgZGF0YSwgc3RyZWFtLCBlcnIpOworICBpZihzaG91bGRfY2xvc2Vfc2Vzc2lvbihodHRwYykpIHsKKyAgICBERUJVR0YoaW5mb2YoZGF0YSwKKyAgICAgICAgICAgICAgICAgImh0dHAyX3JlY3Y6IG5vdGhpbmcgdG8gZG8gaW4gdGhpcyBzZXNzaW9uXG4iKSk7CisgICAgKmVyciA9IENVUkxFX0hUVFAyOworICAgIHJldHVybiAtMTsKICAgfQogCiAgIC8qIE51bGxpZnkgaGVyZSBiZWNhdXNlIHdlIGNhbGwgbmdodHRwMl9zZXNzaW9uX3NlbmQoKSBhbmQgdGhleQpAQCAtODM2LDEzICsxMzExLDEzIEBACiAgICAgICAgICAgIG5jb3B5KTsKICAgICBzdHJlYW0tPm5yZWFkX2hlYWRlcl9yZWN2YnVmICs9IG5jb3B5OwogCi0gICAgaW5mb2YoZGF0YSwgImh0dHAyX3JlY3Y6IEdvdCAlZCBieXRlcyBmcm9tIGhlYWRlcl9yZWN2YnVmXG4iLAotICAgICAgICAgIChpbnQpbmNvcHkpOworICAgIERFQlVHRihpbmZvZihkYXRhLCAiaHR0cDJfcmVjdjogR290ICVkIGJ5dGVzIGZyb20gaGVhZGVyX3JlY3ZidWZcbiIsCisgICAgICAgICAgICAgICAgIChpbnQpbmNvcHkpKTsKICAgICByZXR1cm4gbmNvcHk7CiAgIH0KIAotICBpbmZvZihkYXRhLCAiaHR0cDJfcmVjdjogJWQgYnl0ZXMgYnVmZmVyIGF0ICVwIChzdHJlYW0gJXUpXG4iLAotICAgICAgICBsZW4sIG1lbSwgc3RyZWFtLT5zdHJlYW1faWQpOworICBERUJVR0YoaW5mb2YoZGF0YSwgImh0dHAyX3JlY3Y6IGVhc3kgJXAgKHN0cmVhbSAldSlcbiIsCisgICAgICAgICAgICAgICBkYXRhLCBzdHJlYW0tPnN0cmVhbV9pZCkpOwogCiAgIGlmKChkYXRhLT5zdGF0ZS5kcmFpbikgJiYgc3RyZWFtLT5tZW1sZW4pIHsKICAgICBERUJVR0YoaW5mb2YoZGF0YSwgImh0dHAyX3JlY3Y6IERSQUlOICV6dSBieXRlcyBzdHJlYW0gJXUhISAoJXAgPT4gJXApXG4iLApAQCAtODU1LDggKzEzMzAsMTggQEAKICAgICAgIHN0cmVhbS0+bGVuID0gbGVuIC0gc3RyZWFtLT5tZW1sZW47CiAgICAgICBzdHJlYW0tPm1lbSA9IG1lbTsKICAgICB9CisgICAgaWYoaHR0cGMtPnBhdXNlX3N0cmVhbV9pZCA9PSBzdHJlYW0tPnN0cmVhbV9pZCAmJiAhc3RyZWFtLT5wYXVzZWRhdGEpIHsKKyAgICAgIC8qIFdlIGhhdmUgcGF1c2VkIG5naHR0cDIsIGJ1dCB3ZSBoYXZlIG5vIHBhdXNlIGRhdGEgKHNlZQorICAgICAgICAgb25fZGF0YV9jaHVua19yZWN2KS4gKi8KKyAgICAgIGh0dHBjLT5wYXVzZV9zdHJlYW1faWQgPSAwOworICAgICAgaWYoaDJfcHJvY2Vzc19wZW5kaW5nX2lucHV0KGRhdGEsIGh0dHBjLCAmcmVzdWx0KSAhPSAwKSB7CisgICAgICAgICplcnIgPSByZXN1bHQ7CisgICAgICAgIHJldHVybiAtMTsKKyAgICAgIH0KKyAgICB9CiAgIH0KICAgZWxzZSBpZihzdHJlYW0tPnBhdXNlZGF0YSkgeworICAgIERFQlVHQVNTRVJUKGh0dHBjLT5wYXVzZV9zdHJlYW1faWQgPT0gc3RyZWFtLT5zdHJlYW1faWQpOwogICAgIG5yZWFkID0gTUlOKGxlbiwgc3RyZWFtLT5wYXVzZWxlbik7CiAgICAgbWVtY3B5KG1lbSwgc3RyZWFtLT5wYXVzZWRhdGEsIG5yZWFkKTsKIApAQCAtODcxLDkgKzEzNTYsMjEgQEAKIAogICAgICAgc3RyZWFtLT5wYXVzZWRhdGEgPSBOVUxMOwogICAgICAgc3RyZWFtLT5wYXVzZWxlbiA9IDA7CisKKyAgICAgIC8qIFdoZW4gTkdIVFRQMl9FUlJfUEFVU0UgaXMgcmV0dXJuZWQgZnJvbQorICAgICAgICAgZGF0YV9zb3VyY2VfcmVhZF9jYWxsYmFjaywgd2UgbWlnaHQgbm90IHByb2Nlc3MgREFUQSBmcmFtZQorICAgICAgICAgZnVsbHkuICBDYWxsaW5nIG5naHR0cDJfc2Vzc2lvbl9tZW1fcmVjdigpIGFnYWluIHdpbGwKKyAgICAgICAgIGNvbnRpbnVlIHRvIHByb2Nlc3MgREFUQSBmcmFtZSwgYnV0IGlmIHRoZXJlIGlzIG5vIGluY29taW5nCisgICAgICAgICBmcmFtZXMsIHRoZW4gd2UgaGF2ZSB0byBjYWxsIGl0IGFnYWluIHdpdGggMC1sZW5ndGggZGF0YS4KKyAgICAgICAgIFdpdGhvdXQgdGhpcywgb25fc3RyZWFtX2Nsb3NlIGNhbGxiYWNrIHdpbGwgbm90IGJlIGNhbGxlZCwKKyAgICAgICAgIGFuZCBzdHJlYW0gY291bGQgYmUgaGFuZ2VkLiAqLworICAgICAgaWYoaDJfcHJvY2Vzc19wZW5kaW5nX2lucHV0KGRhdGEsIGh0dHBjLCAmcmVzdWx0KSAhPSAwKSB7CisgICAgICAgICplcnIgPSByZXN1bHQ7CisgICAgICAgIHJldHVybiAtMTsKKyAgICAgIH0KICAgICB9Ci0gICAgaW5mb2YoZGF0YSwgImh0dHAyX3JlY3Y6IHJldHVybnMgdW5wYXVzZWQgJXpkIGJ5dGVzIG9uIHN0cmVhbSAldVxuIiwKLSAgICAgICAgICBucmVhZCwgc3RyZWFtLT5zdHJlYW1faWQpOworICAgIERFQlVHRihpbmZvZihkYXRhLCAiaHR0cDJfcmVjdjogcmV0dXJucyB1bnBhdXNlZCAlemQgYnl0ZXMgb24gc3RyZWFtICV1XG4iLAorICAgICAgICAgICAgICAgICBucmVhZCwgc3RyZWFtLT5zdHJlYW1faWQpKTsKICAgICByZXR1cm4gbnJlYWQ7CiAgIH0KICAgZWxzZSBpZihodHRwYy0+cGF1c2Vfc3RyZWFtX2lkKSB7CkBAIC05MDAsMTcgKzEzOTcsMTcgQEAKICAgICAgIG5yZWFkID0gKChDdXJsX3JlY3YgKilodHRwYy0+cmVjdl91bmRlcmx5aW5nKSgKICAgICAgICAgICBjb25uLCBGSVJTVFNPQ0tFVCwgaHR0cGMtPmluYnVmLCBIMl9CVUZTSVpFLCAmcmVzdWx0KTsKIAotICAgICAgaWYocmVzdWx0ID09IENVUkxFX0FHQUlOKSB7CisgICAgICBpZihucmVhZCA9PSAtMSkgeworICAgICAgICBpZihyZXN1bHQgIT0gQ1VSTEVfQUdBSU4pCisgICAgICAgICAgZmFpbGYoZGF0YSwgIkZhaWxlZCByZWNlaXZpbmcgSFRUUDIgZGF0YSIpOworICAgICAgICBlbHNlIGlmKHN0cmVhbS0+Y2xvc2VkKQorICAgICAgICAgIC8qIHJlY2VpdmVkIHdoZW4gdGhlIHN0cmVhbSB3YXMgYWxyZWFkeSBjbG9zZWQhICovCisgICAgICAgICAgcmV0dXJuIGh0dHAyX2hhbmRsZV9zdHJlYW1fY2xvc2UoY29ubiwgZGF0YSwgc3RyZWFtLCBlcnIpOworCiAgICAgICAgICplcnIgPSByZXN1bHQ7CiAgICAgICAgIHJldHVybiAtMTsKICAgICAgIH0KIAotICAgICAgaWYobnJlYWQgPT0gLTEpIHsKLSAgICAgICAgZmFpbGYoZGF0YSwgIkZhaWxlZCByZWNlaXZpbmcgSFRUUDIgZGF0YSIpOwotICAgICAgICAqZXJyID0gcmVzdWx0OwotICAgICAgICByZXR1cm4gMDsKLSAgICAgIH0KLQogICAgICAgaWYobnJlYWQgPT0gMCkgewogICAgICAgICBmYWlsZihkYXRhLCAiVW5leHBlY3RlZCBFT0YiKTsKICAgICAgICAgKmVyciA9IENVUkxFX1JFQ1ZfRVJST1I7CkBAIC05NTAsMTYgKzE0NDcsMjIgQEAKICAgICB9CiAgICAgLyogQWx3YXlzIHNlbmQgcGVuZGluZyBmcmFtZXMgaW4gbmdodHRwMiBzZXNzaW9uLCBiZWNhdXNlCiAgICAgICAgbmdodHRwMl9zZXNzaW9uX21lbV9yZWN2KCkgbWF5IHF1ZXVlIG5ldyBmcmFtZSAqLwotICAgIHJ2ID0gbmdodHRwMl9zZXNzaW9uX3NlbmQoaHR0cGMtPmgyKTsKKyAgICBydiA9IGgyX3Nlc3Npb25fc2VuZChkYXRhLCBodHRwYy0+aDIpOwogICAgIGlmKHJ2ICE9IDApIHsKICAgICAgICplcnIgPSBDVVJMRV9TRU5EX0VSUk9SOwogICAgICAgcmV0dXJuIDA7CiAgICAgfQorCisgICAgaWYoc2hvdWxkX2Nsb3NlX3Nlc3Npb24oaHR0cGMpKSB7CisgICAgICBERUJVR0YoaW5mb2YoZGF0YSwgImh0dHAyX3JlY3Y6IG5vdGhpbmcgdG8gZG8gaW4gdGhpcyBzZXNzaW9uXG4iKSk7CisgICAgICAqZXJyID0gQ1VSTEVfSFRUUDI7CisgICAgICByZXR1cm4gLTE7CisgICAgfQogICB9CiAgIGlmKHN0cmVhbS0+bWVtbGVuKSB7CiAgICAgc3NpemVfdCByZXRsZW4gPSBzdHJlYW0tPm1lbWxlbjsKLSAgICBpbmZvZihkYXRhLCAiaHR0cDJfcmVjdjogcmV0dXJucyAlemQgZm9yIHN0cmVhbSAldVxuIiwKLSAgICAgICAgICByZXRsZW4sIHN0cmVhbS0+c3RyZWFtX2lkKTsKKyAgICBERUJVR0YoaW5mb2YoZGF0YSwgImh0dHAyX3JlY3Y6IHJldHVybnMgJXpkIGZvciBzdHJlYW0gJXVcbiIsCisgICAgICAgICAgICAgICAgIHJldGxlbiwgc3RyZWFtLT5zdHJlYW1faWQpKTsKICAgICBzdHJlYW0tPm1lbWxlbiA9IDA7CiAKICAgICBpZihodHRwYy0+cGF1c2Vfc3RyZWFtX2lkID09IHN0cmVhbS0+c3RyZWFtX2lkKSB7CkBAIC05NjgsMTUgKzE0NzEsMTggQEAKICAgICAgIERFQlVHRihpbmZvZihkYXRhLCAiRGF0YSByZXR1cm5lZCBmb3IgUEFVU0VEIHN0cmVhbSAldVxuIiwKICAgICAgICAgICAgICAgICAgICBzdHJlYW0tPnN0cmVhbV9pZCkpOwogICAgIH0KLSAgICBlbHNlCisgICAgZWxzZSBpZighc3RyZWFtLT5jbG9zZWQpIHsKKyAgICAgIERFQlVHQVNTRVJUKGh0dHBjLT5kcmFpbl90b3RhbCA+PSBkYXRhLT5zdGF0ZS5kcmFpbik7CisgICAgICBodHRwYy0+ZHJhaW5fdG90YWwgLT0gZGF0YS0+c3RhdGUuZHJhaW47CiAgICAgICBkYXRhLT5zdGF0ZS5kcmFpbiA9IDA7IC8qIHRoaXMgc3RyZWFtIGlzIGhlcmVieSBkcmFpbmVkICovCisgICAgfQogCiAgICAgcmV0dXJuIHJldGxlbjsKICAgfQogICAvKiBJZiBzdHJlYW0gaXMgY2xvc2VkLCByZXR1cm4gMCB0byBzaWduYWwgdGhlIGh0dHAgcm91dGluZSB0byBjbG9zZQogICAgICB0aGUgY29ubmVjdGlvbiAqLwogICBpZihzdHJlYW0tPmNsb3NlZCkgewotICAgIHJldHVybiBodHRwMl9oYW5kbGVfc3RyZWFtX2Nsb3NlKGh0dHBjLCBkYXRhLCBzdHJlYW0sIGVycik7CisgICAgcmV0dXJuIGh0dHAyX2hhbmRsZV9zdHJlYW1fY2xvc2UoY29ubiwgZGF0YSwgc3RyZWFtLCBlcnIpOwogICB9CiAgICplcnIgPSBDVVJMRV9BR0FJTjsKICAgREVCVUdGKGluZm9mKGRhdGEsICJodHRwMl9yZWN2IHJldHVybnMgQUdBSU4gZm9yIHN0cmVhbSAldVxuIiwKQEAgLTk4OCw2ICsxNDk0LDkgQEAKICAgIGZpZWxkIGxpc3QuICovCiAjZGVmaW5lIEFVVEhPUklUWV9EU1RfSURYIDMKIAorI2RlZmluZSBIRUFERVJfT1ZFUkZMT1coeCkgXAorICAoeC5uYW1lbGVuID4gKHVpbnQxNl90KS0xIHx8IHgudmFsdWVsZW4gPiAodWludDE2X3QpLTEgLSB4Lm5hbWVsZW4pCisKIC8qIHJldHVybiBudW1iZXIgb2YgcmVjZWl2ZWQgKGRlY3J5cHRlZCkgYnl0ZXMgKi8KIHN0YXRpYyBzc2l6ZV90IGh0dHAyX3NlbmQoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBpbnQgc29ja2luZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICptZW0sIHNpemVfdCBsZW4sIENVUkxjb2RlICplcnIpCkBAIC0xMDAwLDE1ICsxNTA5LDE2IEBACiAgIGludCBydjsKICAgc3RydWN0IGh0dHBfY29ubiAqaHR0cGMgPSAmY29ubi0+cHJvdG8uaHR0cGM7CiAgIHN0cnVjdCBIVFRQICpzdHJlYW0gPSBjb25uLT5kYXRhLT5yZXEucHJvdG9wOwotICBuZ2h0dHAyX252ICpudmE7CisgIG5naHR0cDJfbnYgKm52YSA9IE5VTEw7CiAgIHNpemVfdCBuaGVhZGVyOwogICBzaXplX3QgaTsKICAgc2l6ZV90IGF1dGhvcml0eV9pZHg7CiAgIGNoYXIgKmhkYnVmID0gKGNoYXIqKW1lbTsKLSAgY2hhciAqZW5kOworICBjaGFyICplbmQsICpsaW5lX2VuZDsKICAgbmdodHRwMl9kYXRhX3Byb3ZpZGVyIGRhdGFfcHJkOwogICBpbnQzMl90IHN0cmVhbV9pZDsKICAgbmdodHRwMl9zZXNzaW9uICpoMiA9IGh0dHBjLT5oMjsKKyAgbmdodHRwMl9wcmlvcml0eV9zcGVjIHByaV9zcGVjOwogCiAgICh2b2lkKXNvY2tpbmRleDsKIApAQCAtMTAyMCw3ICsxNTMwLDcgQEAKICAgICBzdHJlYW0tPnVwbG9hZF9tZW0gPSBtZW07CiAgICAgc3RyZWFtLT51cGxvYWRfbGVuID0gbGVuOwogICAgIG5naHR0cDJfc2Vzc2lvbl9yZXN1bWVfZGF0YShoMiwgc3RyZWFtLT5zdHJlYW1faWQpOwotICAgIHJ2ID0gbmdodHRwMl9zZXNzaW9uX3NlbmQoaDIpOworICAgIHJ2ID0gaDJfc2Vzc2lvbl9zZW5kKGNvbm4tPmRhdGEsIGgyKTsKICAgICBpZihuZ2h0dHAyX2lzX2ZhdGFsKHJ2KSkgewogICAgICAgKmVyciA9IENVUkxFX1NFTkRfRVJST1I7CiAgICAgICByZXR1cm4gLTE7CkBAIC0xMDMyLDYgKzE1NDIsMTIgQEAKICAgICBzdHJlYW0tPnVwbG9hZF9tZW0gPSBOVUxMOwogICAgIHN0cmVhbS0+dXBsb2FkX2xlbiA9IDA7CiAKKyAgICBpZihzaG91bGRfY2xvc2Vfc2Vzc2lvbihodHRwYykpIHsKKyAgICAgIERFQlVHRihpbmZvZihjb25uLT5kYXRhLCAiaHR0cDJfc2VuZDogbm90aGluZyB0byBkbyBpbiB0aGlzIHNlc3Npb25cbiIpKTsKKyAgICAgICplcnIgPSBDVVJMRV9IVFRQMjsKKyAgICAgIHJldHVybiAtMTsKKyAgICB9CisKICAgICBpZihzdHJlYW0tPnVwbG9hZF9sZWZ0KSB7CiAgICAgICAvKiB3ZSBhcmUgc3VyZSB0aGF0IHdlIGhhdmUgbW9yZSBkYXRhIHRvIHNlbmQgaGVyZS4gIENhbGxpbmcgdGhlCiAgICAgICAgICBmb2xsb3dpbmcgQVBJIHdpbGwgbWFrZSBuZ2h0dHAyX3Nlc3Npb25fd2FudF93cml0ZSgpIHJldHVybgpAQCAtMTA0OSwxMiArMTU2NSwxNiBAQAogICAvKiBIZXJlLCB3ZSBhc3N1bWUgdGhlIGN1cmwgaHR0cCBjb2RlIGdlbmVyYXRlICpjb3JyZWN0KiBIVFRQIGhlYWRlcgogICAgICBmaWVsZCBibG9jayAqLwogICBuaGVhZGVyID0gMDsKLSAgZm9yKGkgPSAwOyBpIDwgbGVuOyArK2kpIHsKLSAgICBpZihoZGJ1ZltpXSA9PSAweDBhKSB7CisgIGZvcihpID0gMTsgaSA8IGxlbjsgKytpKSB7CisgICAgaWYoaGRidWZbaV0gPT0gJ1xuJyAmJiBoZGJ1ZltpIC0gMV0gPT0gJ1xyJykgewogICAgICAgKytuaGVhZGVyOworICAgICAgKytpOwogICAgIH0KICAgfQotICAvKiBXZSBjb3VudGVkIGFkZGl0aW9uYWwgMiBcbiBpbiB0aGUgZmlyc3QgYW5kIGxhc3QgbGluZS4gV2UgbmVlZCAzCisgIGlmKG5oZWFkZXIgPCAyKQorICAgIGdvdG8gZmFpbDsKKworICAvKiBXZSBjb3VudGVkIGFkZGl0aW9uYWwgMiBcclxuIGluIHRoZSBmaXJzdCBhbmQgbGFzdCBsaW5lLiBXZSBuZWVkIDMKICAgICAgbmV3IGhlYWRlcnM6IDptZXRob2QsIDpwYXRoIGFuZCA6c2NoZW1lLiBUaGVyZWZvcmUgd2UgbmVlZCBvbmUKICAgICAgbW9yZSBzcGFjZS4gKi8KICAgbmhlYWRlciArPSAxOwpAQCAtMTA2Myw3MyArMTU4MywxMzMgQEAKICAgICAqZXJyID0gQ1VSTEVfT1VUX09GX01FTU9SWTsKICAgICByZXR1cm4gLTE7CiAgIH0KKwogICAvKiBFeHRyYWN0IDptZXRob2QsIDpwYXRoIGZyb20gcmVxdWVzdCBsaW5lICovCi0gIGVuZCA9IHN0cmNocihoZGJ1ZiwgJyAnKTsKKyAgbGluZV9lbmQgPSBzdHJzdHIoaGRidWYsICJcclxuIik7CisKKyAgLyogTWV0aG9kIGRvZXMgbm90IGNvbnRhaW4gc3BhY2VzICovCisgIGVuZCA9IG1lbWNocihoZGJ1ZiwgJyAnLCBsaW5lX2VuZCAtIGhkYnVmKTsKKyAgaWYoIWVuZCB8fCBlbmQgPT0gaGRidWYpCisgICAgZ290byBmYWlsOwogICBudmFbMF0ubmFtZSA9ICh1bnNpZ25lZCBjaGFyICopIjptZXRob2QiOwotICBudmFbMF0ubmFtZWxlbiA9ICh1aW50MTZfdClzdHJsZW4oKGNoYXIgKiludmFbMF0ubmFtZSk7CisgIG52YVswXS5uYW1lbGVuID0gc3RybGVuKChjaGFyICopbnZhWzBdLm5hbWUpOwogICBudmFbMF0udmFsdWUgPSAodW5zaWduZWQgY2hhciAqKWhkYnVmOwotICBudmFbMF0udmFsdWVsZW4gPSAodWludDE2X3QpKGVuZCAtIGhkYnVmKTsKKyAgbnZhWzBdLnZhbHVlbGVuID0gKHNpemVfdCkoZW5kIC0gaGRidWYpOwogICBudmFbMF0uZmxhZ3MgPSBOR0hUVFAyX05WX0ZMQUdfTk9ORTsKKyAgaWYoSEVBREVSX09WRVJGTE9XKG52YVswXSkpIHsKKyAgICBmYWlsZihjb25uLT5kYXRhLCAiRmFpbGVkIHNlbmRpbmcgSFRUUCByZXF1ZXN0OiBIZWFkZXIgb3ZlcmZsb3ciKTsKKyAgICBnb3RvIGZhaWw7CisgIH0KIAogICBoZGJ1ZiA9IGVuZCArIDE7CiAKLSAgZW5kID0gc3RyY2hyKGhkYnVmLCAnICcpOworICAvKiBQYXRoIG1heSBjb250YWluIHNwYWNlcyBzbyBzY2FuIGJhY2t3YXJkcyAqLworICBlbmQgPSBOVUxMOworICBmb3IoaSA9IChzaXplX3QpKGxpbmVfZW5kIC0gaGRidWYpOyBpOyAtLWkpIHsKKyAgICBpZihoZGJ1ZltpIC0gMV0gPT0gJyAnKSB7CisgICAgICBlbmQgPSAmaGRidWZbaSAtIDFdOworICAgICAgYnJlYWs7CisgICAgfQorICB9CisgIGlmKCFlbmQgfHwgZW5kID09IGhkYnVmKQorICAgIGdvdG8gZmFpbDsKICAgbnZhWzFdLm5hbWUgPSAodW5zaWduZWQgY2hhciAqKSI6cGF0aCI7Ci0gIG52YVsxXS5uYW1lbGVuID0gKHVpbnQxNl90KXN0cmxlbigoY2hhciAqKW52YVsxXS5uYW1lKTsKKyAgbnZhWzFdLm5hbWVsZW4gPSBzdHJsZW4oKGNoYXIgKiludmFbMV0ubmFtZSk7CiAgIG52YVsxXS52YWx1ZSA9ICh1bnNpZ25lZCBjaGFyICopaGRidWY7Ci0gIG52YVsxXS52YWx1ZWxlbiA9ICh1aW50MTZfdCkoZW5kIC0gaGRidWYpOworICBudmFbMV0udmFsdWVsZW4gPSAoc2l6ZV90KShlbmQgLSBoZGJ1Zik7CiAgIG52YVsxXS5mbGFncyA9IE5HSFRUUDJfTlZfRkxBR19OT05FOworICBpZihIRUFERVJfT1ZFUkZMT1cobnZhWzFdKSkgeworICAgIGZhaWxmKGNvbm4tPmRhdGEsICJGYWlsZWQgc2VuZGluZyBIVFRQIHJlcXVlc3Q6IEhlYWRlciBvdmVyZmxvdyIpOworICAgIGdvdG8gZmFpbDsKKyAgfQogCisgIGhkYnVmID0gZW5kICsgMTsKKworICBlbmQgPSBsaW5lX2VuZDsKICAgbnZhWzJdLm5hbWUgPSAodW5zaWduZWQgY2hhciAqKSI6c2NoZW1lIjsKLSAgbnZhWzJdLm5hbWVsZW4gPSAodWludDE2X3Qpc3RybGVuKChjaGFyICopbnZhWzJdLm5hbWUpOworICBudmFbMl0ubmFtZWxlbiA9IHN0cmxlbigoY2hhciAqKW52YVsyXS5uYW1lKTsKICAgaWYoY29ubi0+aGFuZGxlci0+ZmxhZ3MgJiBQUk9UT1BUX1NTTCkKICAgICBudmFbMl0udmFsdWUgPSAodW5zaWduZWQgY2hhciAqKSJodHRwcyI7CiAgIGVsc2UKICAgICBudmFbMl0udmFsdWUgPSAodW5zaWduZWQgY2hhciAqKSJodHRwIjsKLSAgbnZhWzJdLnZhbHVlbGVuID0gKHVpbnQxNl90KXN0cmxlbigoY2hhciAqKW52YVsyXS52YWx1ZSk7CisgIG52YVsyXS52YWx1ZWxlbiA9IHN0cmxlbigoY2hhciAqKW52YVsyXS52YWx1ZSk7CiAgIG52YVsyXS5mbGFncyA9IE5HSFRUUDJfTlZfRkxBR19OT05FOwotCi0gIGhkYnVmID0gc3RyY2hyKGhkYnVmLCAweDBhKTsKLSAgKytoZGJ1ZjsKKyAgaWYoSEVBREVSX09WRVJGTE9XKG52YVsyXSkpIHsKKyAgICBmYWlsZihjb25uLT5kYXRhLCAiRmFpbGVkIHNlbmRpbmcgSFRUUCByZXF1ZXN0OiBIZWFkZXIgb3ZlcmZsb3ciKTsKKyAgICBnb3RvIGZhaWw7CisgIH0KIAogICBhdXRob3JpdHlfaWR4ID0gMDsKKyAgaSA9IDM7CisgIHdoaWxlKGkgPCBuaGVhZGVyKSB7CisgICAgc2l6ZV90IGhsZW47CisgICAgaW50IHNraXAgPSAwOwogCi0gIGZvcihpID0gMzsgaSA8IG5oZWFkZXI7ICsraSkgewotICAgIGVuZCA9IHN0cmNocihoZGJ1ZiwgJzonKTsKLSAgICBhc3NlcnQoZW5kKTsKLSAgICBpZihlbmQgLSBoZGJ1ZiA9PSA0ICYmIEN1cmxfcmF3X25lcXVhbCgiaG9zdCIsIGhkYnVmLCA0KSkgeworICAgIGhkYnVmID0gbGluZV9lbmQgKyAyOworCisgICAgbGluZV9lbmQgPSBzdHJzdHIoaGRidWYsICJcclxuIik7CisgICAgaWYobGluZV9lbmQgPT0gaGRidWYpCisgICAgICBnb3RvIGZhaWw7CisKKyAgICAvKiBoZWFkZXIgY29udGludWF0aW9uIGxpbmVzIGFyZSBub3Qgc3VwcG9ydGVkICovCisgICAgaWYoKmhkYnVmID09ICcgJyB8fCAqaGRidWYgPT0gJ1x0JykKKyAgICAgIGdvdG8gZmFpbDsKKworICAgIGZvcihlbmQgPSBoZGJ1ZjsgZW5kIDwgbGluZV9lbmQgJiYgKmVuZCAhPSAnOic7ICsrZW5kKQorICAgICAgOworICAgIGlmKGVuZCA9PSBoZGJ1ZiB8fCBlbmQgPT0gbGluZV9lbmQpCisgICAgICBnb3RvIGZhaWw7CisgICAgaGxlbiA9IGVuZCAtIGhkYnVmOworCisgICAgaWYoaGxlbiA9PSAxMCAmJiBDdXJsX3Jhd19uZXF1YWwoImNvbm5lY3Rpb24iLCBoZGJ1ZiwgMTApKSB7CisgICAgICAvKiBza2lwIENvbm5lY3Rpb246IGhlYWRlcnMhICovCisgICAgICBza2lwID0gMTsKKyAgICAgIC0tbmhlYWRlcjsKKyAgICB9CisgICAgZWxzZSBpZihobGVuID09IDQgJiYgQ3VybF9yYXdfbmVxdWFsKCJob3N0IiwgaGRidWYsIDQpKSB7CiAgICAgICBhdXRob3JpdHlfaWR4ID0gaTsKICAgICAgIG52YVtpXS5uYW1lID0gKHVuc2lnbmVkIGNoYXIgKikiOmF1dGhvcml0eSI7Ci0gICAgICBudmFbaV0ubmFtZWxlbiA9ICh1aW50MTZfdClzdHJsZW4oKGNoYXIgKiludmFbaV0ubmFtZSk7CisgICAgICBudmFbaV0ubmFtZWxlbiA9IHN0cmxlbigoY2hhciAqKW52YVtpXS5uYW1lKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICBudmFbaV0ubmFtZSA9ICh1bnNpZ25lZCBjaGFyICopaGRidWY7Ci0gICAgICBudmFbaV0ubmFtZWxlbiA9ICh1aW50MTZfdCkoZW5kIC0gaGRidWYpOworICAgICAgbnZhW2ldLm5hbWVsZW4gPSAoc2l6ZV90KShlbmQgLSBoZGJ1Zik7CiAgICAgfQogICAgIGhkYnVmID0gZW5kICsgMTsKLSAgICBmb3IoOyAqaGRidWYgPT0gJyAnOyArK2hkYnVmKTsKLSAgICBlbmQgPSBzdHJjaHIoaGRidWYsIDB4MGQpOwotICAgIGFzc2VydChlbmQpOwotICAgIG52YVtpXS52YWx1ZSA9ICh1bnNpZ25lZCBjaGFyICopaGRidWY7Ci0gICAgbnZhW2ldLnZhbHVlbGVuID0gKHVpbnQxNl90KShlbmQgLSBoZGJ1Zik7Ci0gICAgbnZhW2ldLmZsYWdzID0gTkdIVFRQMl9OVl9GTEFHX05PTkU7Ci0KLSAgICBoZGJ1ZiA9IGVuZCArIDI7Ci0gICAgLyogSW5zcGVjdCBDb250ZW50LUxlbmd0aCBoZWFkZXIgZmllbGQgYW5kIHJldHJpZXZlIHRoZSByZXF1ZXN0Ci0gICAgICAgZW50aXR5IGxlbmd0aCBzbyB0aGF0IHdlIGNhbiBzZXQgRU5EX1NUUkVBTSB0byB0aGUgbGFzdCBEQVRBCi0gICAgICAgZnJhbWUuICovCi0gICAgaWYobnZhW2ldLm5hbWVsZW4gPT0gMTQgJiYKLSAgICAgICBDdXJsX3Jhd19uZXF1YWwoImNvbnRlbnQtbGVuZ3RoIiwgKGNoYXIqKW52YVtpXS5uYW1lLCAxNCkpIHsKLSAgICAgIHNpemVfdCBqOwotICAgICAgc3RyZWFtLT51cGxvYWRfbGVmdCA9IDA7Ci0gICAgICBmb3IoaiA9IDA7IGogPCBudmFbaV0udmFsdWVsZW47ICsraikgewotICAgICAgICBzdHJlYW0tPnVwbG9hZF9sZWZ0ICo9IDEwOwotICAgICAgICBzdHJlYW0tPnVwbG9hZF9sZWZ0ICs9IG52YVtpXS52YWx1ZVtqXSAtICcwJzsKKyAgICB3aGlsZSgqaGRidWYgPT0gJyAnIHx8ICpoZGJ1ZiA9PSAnXHQnKQorICAgICAgKytoZGJ1ZjsKKyAgICBlbmQgPSBsaW5lX2VuZDsKKyAgICBpZighc2tpcCkgeworICAgICAgbnZhW2ldLnZhbHVlID0gKHVuc2lnbmVkIGNoYXIgKiloZGJ1ZjsKKyAgICAgIG52YVtpXS52YWx1ZWxlbiA9IChzaXplX3QpKGVuZCAtIGhkYnVmKTsKKyAgICAgIG52YVtpXS5mbGFncyA9IE5HSFRUUDJfTlZfRkxBR19OT05FOworICAgICAgaWYoSEVBREVSX09WRVJGTE9XKG52YVtpXSkpIHsKKyAgICAgICAgZmFpbGYoY29ubi0+ZGF0YSwgIkZhaWxlZCBzZW5kaW5nIEhUVFAgcmVxdWVzdDogSGVhZGVyIG92ZXJmbG93Iik7CisgICAgICAgIGdvdG8gZmFpbDsKICAgICAgIH0KLSAgICAgIERFQlVHRihpbmZvZihjb25uLT5kYXRhLAotICAgICAgICAgICAgICAgICAgICJyZXF1ZXN0IGNvbnRlbnQtbGVuZ3RoPSUiCi0gICAgICAgICAgICAgICAgICAgQ1VSTF9GT1JNQVRfQ1VSTF9PRkZfVAotICAgICAgICAgICAgICAgICAgICJcbiIsIHN0cmVhbS0+dXBsb2FkX2xlZnQpKTsKKyAgICAgIC8qIEluc3BlY3QgQ29udGVudC1MZW5ndGggaGVhZGVyIGZpZWxkIGFuZCByZXRyaWV2ZSB0aGUgcmVxdWVzdAorICAgICAgICAgZW50aXR5IGxlbmd0aCBzbyB0aGF0IHdlIGNhbiBzZXQgRU5EX1NUUkVBTSB0byB0aGUgbGFzdCBEQVRBCisgICAgICAgICBmcmFtZS4gKi8KKyAgICAgIGlmKG52YVtpXS5uYW1lbGVuID09IDE0ICYmCisgICAgICAgICBDdXJsX3Jhd19uZXF1YWwoImNvbnRlbnQtbGVuZ3RoIiwgKGNoYXIqKW52YVtpXS5uYW1lLCAxNCkpIHsKKyAgICAgICAgc2l6ZV90IGo7CisgICAgICAgIHN0cmVhbS0+dXBsb2FkX2xlZnQgPSAwOworICAgICAgICBpZighbnZhW2ldLnZhbHVlbGVuKQorICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgZm9yKGogPSAwOyBqIDwgbnZhW2ldLnZhbHVlbGVuOyArK2opIHsKKyAgICAgICAgICBpZihudmFbaV0udmFsdWVbal0gPCAnMCcgfHwgbnZhW2ldLnZhbHVlW2pdID4gJzknKQorICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICAgIGlmKHN0cmVhbS0+dXBsb2FkX2xlZnQgPj0gQ1VSTF9PRkZfVF9NQVggLyAxMCkKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgICBzdHJlYW0tPnVwbG9hZF9sZWZ0ICo9IDEwOworICAgICAgICAgIHN0cmVhbS0+dXBsb2FkX2xlZnQgKz0gbnZhW2ldLnZhbHVlW2pdIC0gJzAnOworICAgICAgICB9CisgICAgICAgIERFQlVHRihpbmZvZihjb25uLT5kYXRhLAorICAgICAgICAgICAgICAgICAgICAgInJlcXVlc3QgY29udGVudC1sZW5ndGg9JSIKKyAgICAgICAgICAgICAgICAgICAgIENVUkxfRk9STUFUX0NVUkxfT0ZGX1QKKyAgICAgICAgICAgICAgICAgICAgICJcbiIsIHN0cmVhbS0+dXBsb2FkX2xlZnQpKTsKKyAgICAgIH0KKyAgICAgICsraTsKICAgICB9CiAgIH0KIApAQCAtMTE0MiwyMSArMTcyMiw0NiBAQAogICAgIG52YVtpXSA9IGF1dGhvcml0eTsKICAgfQogCisgIC8qIFdhcm4gc3RyZWFtIG1heSBiZSByZWplY3RlZCBpZiBjdW11bGF0aXZlIGxlbmd0aCBvZiBoZWFkZXJzIGlzIHRvbyBsYXJnZS4KKyAgICAgSXQgYXBwZWFycyBuZ2h0dHAyIHdpbGwgbm90IHNlbmQgYSBoZWFkZXIgZnJhbWUgbGFyZ2VyIHRoYW4gNjRLQi4gKi8KKyAgeworICAgIHNpemVfdCBhY2MgPSAwOworICAgIGNvbnN0IHNpemVfdCBtYXhfYWNjID0gNjAwMDA7ICAvKiA8NjRLQiB0byBhY2NvdW50IGZvciBzb21lIG92ZXJoZWFkICovCisKKyAgICBmb3IoaSA9IDA7IGkgPCBuaGVhZGVyOyArK2kpIHsKKyAgICAgIGlmKG52YVtpXS5uYW1lbGVuID4gbWF4X2FjYyAtIGFjYykKKyAgICAgICAgYnJlYWs7CisgICAgICBhY2MgKz0gbnZhW2ldLm5hbWVsZW47CisKKyAgICAgIGlmKG52YVtpXS52YWx1ZWxlbiA+IG1heF9hY2MgLSBhY2MpCisgICAgICAgIGJyZWFrOworICAgICAgYWNjICs9IG52YVtpXS52YWx1ZWxlbjsKKyAgICB9CisKKyAgICBpZihpICE9IG5oZWFkZXIpIHsKKyAgICAgIGluZm9mKGNvbm4tPmRhdGEsICJodHRwMl9zZW5kOiBXYXJuaW5nOiBUaGUgY3VtdWxhdGl2ZSBsZW5ndGggb2YgYWxsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJoZWFkZXJzIGV4Y2VlZHMgJXp1IGJ5dGVzIGFuZCB0aGF0IGNvdWxkIGNhdXNlIHRoZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAic3RyZWFtIHRvIGJlIHJlamVjdGVkLlxuIiwgbWF4X2FjYyk7CisgICAgfQorICB9CisKKyAgaDJfcHJpX3NwZWMoY29ubi0+ZGF0YSwgJnByaV9zcGVjKTsKKwogICBzd2l0Y2goY29ubi0+ZGF0YS0+c2V0Lmh0dHByZXEpIHsKICAgY2FzZSBIVFRQUkVRX1BPU1Q6CiAgIGNhc2UgSFRUUFJFUV9QT1NUX0ZPUk06CiAgIGNhc2UgSFRUUFJFUV9QVVQ6CiAgICAgZGF0YV9wcmQucmVhZF9jYWxsYmFjayA9IGRhdGFfc291cmNlX3JlYWRfY2FsbGJhY2s7CiAgICAgZGF0YV9wcmQuc291cmNlLnB0ciA9IE5VTEw7Ci0gICAgc3RyZWFtX2lkID0gbmdodHRwMl9zdWJtaXRfcmVxdWVzdChoMiwgTlVMTCwgbnZhLCBuaGVhZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRhdGFfcHJkLCBOVUxMKTsKKyAgICBzdHJlYW1faWQgPSBuZ2h0dHAyX3N1Ym1pdF9yZXF1ZXN0KGgyLCAmcHJpX3NwZWMsIG52YSwgbmhlYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkYXRhX3ByZCwgY29ubi0+ZGF0YSk7CiAgICAgYnJlYWs7CiAgIGRlZmF1bHQ6Ci0gICAgc3RyZWFtX2lkID0gbmdodHRwMl9zdWJtaXRfcmVxdWVzdChoMiwgTlVMTCwgbnZhLCBuaGVhZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCk7CisgICAgc3RyZWFtX2lkID0gbmdodHRwMl9zdWJtaXRfcmVxdWVzdChoMiwgJnByaV9zcGVjLCBudmEsIG5oZWFkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBjb25uLT5kYXRhKTsKICAgfQogCi0gIGZyZWUobnZhKTsKKyAgQ3VybF9zYWZlZnJlZShudmEpOwogCiAgIGlmKHN0cmVhbV9pZCA8IDApIHsKICAgICBERUJVR0YoaW5mb2YoY29ubi0+ZGF0YSwgImh0dHAyX3NlbmQoKSBzZW5kIGVycm9yXG4iKSk7CkBAIC0xMTY4LDE0ICsxNzczLDggQEAKICAgICAgICAgc3RyZWFtX2lkLCBjb25uLT5kYXRhKTsKICAgc3RyZWFtLT5zdHJlYW1faWQgPSBzdHJlYW1faWQ7CiAKLSAgLyogcHV0IHRoZSBTZXNzaW9uSGFuZGxlIGluIHRoZSBoYXNoIHdpdGggdGhlIHN0cmVhbV9pZCBhcyBrZXkgKi8KLSAgaWYoIUN1cmxfaGFzaF9hZGQoJmh0dHBjLT5zdHJlYW1zaCwgJnN0cmVhbS0+c3RyZWFtX2lkLCBzaXplb2Yoc3RyZWFtX2lkKSwKLSAgICAgICAgICAgICAgICAgICAgY29ubi0+ZGF0YSkpIHsKLSAgICBmYWlsZihjb25uLT5kYXRhLCAiQ291bGRuJ3QgYWRkIHN0cmVhbSB0byBoYXNoISIpOwotICAgICplcnIgPSBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotICAgIHJldHVybiAtMTsKLSAgfQotCisgIC8qIHRoaXMgZG9lcyBub3QgY2FsbCBoMl9zZXNzaW9uX3NlbmQoKSBzaW5jZSB0aGVyZSBjYW4gbm90IGhhdmUgYmVlbiBhbnkKKyAgICogcHJpb3JpdHkgdXBvZGF0ZSBzaW5jZSB0aGUgbmdodHRwMl9zdWJtaXRfcmVxdWVzdCgpIGNhbGwgYWJvdmUgKi8KICAgcnYgPSBuZ2h0dHAyX3Nlc3Npb25fc2VuZChoMik7CiAKICAgaWYocnYgIT0gMCkgewpAQCAtMTE4Myw2ICsxNzgyLDEyIEBACiAgICAgcmV0dXJuIC0xOwogICB9CiAKKyAgaWYoc2hvdWxkX2Nsb3NlX3Nlc3Npb24oaHR0cGMpKSB7CisgICAgREVCVUdGKGluZm9mKGNvbm4tPmRhdGEsICJodHRwMl9zZW5kOiBub3RoaW5nIHRvIGRvIGluIHRoaXMgc2Vzc2lvblxuIikpOworICAgICplcnIgPSBDVVJMRV9IVFRQMjsKKyAgICByZXR1cm4gLTE7CisgIH0KKwogICBpZihzdHJlYW0tPnN0cmVhbV9pZCAhPSAtMSkgewogICAgIC8qIElmIHdob2xlIEhFQURFUlMgZnJhbWUgd2FzIHNlbnQgb2ZmIHRvIHRoZSB1bmRlcmx5aW5nIHNvY2tldCwKICAgICAgICB0aGUgbmdodHRwMiBsaWJyYXJ5IGNhbGxzIGRhdGFfc291cmNlX3JlYWRfY2FsbGJhY2suIEJ1dCBvbmx5CkBAIC0xMTk2LDYgKzE4MDEsMTEgQEAKICAgfQogCiAgIHJldHVybiBsZW47CisKK2ZhaWw6CisgIGZyZWUobnZhKTsKKyAgKmVyciA9IENVUkxFX1NFTkRfRVJST1I7CisgIHJldHVybiAtMTsKIH0KIAogQ1VSTGNvZGUgQ3VybF9odHRwMl9zZXR1cChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pCkBAIC0xMjMxLDYgKzE4NDEsNyBAQAogICBodHRwYy0+bnJlYWRfaW5idWYgPSAwOwogCiAgIGh0dHBjLT5wYXVzZV9zdHJlYW1faWQgPSAwOworICBodHRwYy0+ZHJhaW5fdG90YWwgPSAwOwogCiAgIGNvbm4tPmJpdHMubXVsdGlwbGV4ID0gVFJVRTsgLyogYXQgbGVhc3QgcG90ZW50aWFsbHkgbXVsdGlwbGV4ZWQgKi8KICAgY29ubi0+aHR0cHZlcnNpb24gPSAyMDsKQEAgLTEyMzksNiArMTg1MCwxMCBAQAogICBpbmZvZihjb25uLT5kYXRhLCAiQ29ubmVjdGlvbiBzdGF0ZSBjaGFuZ2VkIChIVFRQLzIgY29uZmlybWVkKVxuIik7CiAgIEN1cmxfbXVsdGlfY29ubmNoYW5nZWQoY29ubi0+ZGF0YS0+bXVsdGkpOwogCisgIC8qIHN3aXRjaCBvbiBUQ1BfTk9ERUxBWSBhcyB3ZSBuZWVkIHRvIHNlbmQgb2ZmIHBhY2tldHMgd2l0aG91dCBkZWxheSBmb3IKKyAgICAgbWF4aW11bSB0aHJvdWdocHV0ICovCisgIEN1cmxfdGNwbm9kZWxheShjb25uLCBjb25uLT5zb2NrW0ZJUlNUU09DS0VUXSk7CisKICAgcmV0dXJuIENVUkxFX09LOwogfQogCkBAIC0xMjczLDEyICsxODg4LDkgQEAKICAgICAgIHJldHVybiBDVVJMRV9IVFRQMjsKICAgICB9CiAKLSAgICAvKiBwdXQgdGhlIFNlc3Npb25IYW5kbGUgaW4gdGhlIGhhc2ggd2l0aCB0aGUgc3RyZWFtLT5zdHJlYW1faWQgYXMga2V5ICovCi0gICAgaWYoIUN1cmxfaGFzaF9hZGQoJmh0dHBjLT5zdHJlYW1zaCwgJnN0cmVhbS0+c3RyZWFtX2lkLAotICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzdHJlYW0tPnN0cmVhbV9pZCksIGNvbm4tPmRhdGEpKSB7Ci0gICAgICBmYWlsZihjb25uLT5kYXRhLCAiQ291bGRuJ3QgYWRkIHN0cmVhbSB0byBoYXNoISIpOwotICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7Ci0gICAgfQorICAgIG5naHR0cDJfc2Vzc2lvbl9zZXRfc3RyZWFtX3VzZXJfZGF0YShodHRwYy0+aDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbS0+c3RyZWFtX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uLT5kYXRhKTsKICAgfQogICBlbHNlIHsKICAgICAvKiBzdHJlYW0gSUQgaXMgdW5rbm93biBhdCB0aGlzIHBvaW50ICovCkBAIC0xMzI5LDcgKzE5NDEsNyBAQAogICB9CiAKICAgLyogVHJ5IHRvIHNlbmQgc29tZSBmcmFtZXMgc2luY2Ugd2UgbWF5IHJlYWQgU0VUVElOR1MgYWxyZWFkeS4gKi8KLSAgcnYgPSBuZ2h0dHAyX3Nlc3Npb25fc2VuZChodHRwYy0+aDIpOworICBydiA9IGgyX3Nlc3Npb25fc2VuZChkYXRhLCBodHRwYy0+aDIpOwogCiAgIGlmKHJ2ICE9IDApIHsKICAgICBmYWlsZihkYXRhLCAibmdodHRwMl9zZXNzaW9uX3NlbmQoKSBmYWlsZWQ6ICVzKCVkKSIsCkBAIC0xMzM3LDcgKzE5NDksMzQgQEAKICAgICByZXR1cm4gQ1VSTEVfSFRUUDI7CiAgIH0KIAorICBpZihzaG91bGRfY2xvc2Vfc2Vzc2lvbihodHRwYykpIHsKKyAgICBERUJVR0YoaW5mb2YoZGF0YSwKKyAgICAgICAgICAgICAgICAgIm5naHR0cDJfc2Vzc2lvbl9zZW5kKCk6IG5vdGhpbmcgdG8gZG8gaW4gdGhpcyBzZXNzaW9uXG4iKSk7CisgICAgcmV0dXJuIENVUkxFX0hUVFAyOworICB9CisKICAgcmV0dXJuIENVUkxFX09LOwogfQogCi0jZW5kaWYKKyNlbHNlIC8qICFVU0VfTkdIVFRQMiAqLworCisvKiBTYXRpc2Z5IGV4dGVybmFsIHJlZmVyZW5jZXMgZXZlbiBpZiBodHRwMiBpcyBub3QgY29tcGlsZWQgaW4uICovCisKKyNkZWZpbmUgQ1VSTF9ESVNBQkxFX1RZUEVDSEVDSworI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCitjaGFyICpjdXJsX3B1c2hoZWFkZXJfYnludW0oc3RydWN0IGN1cmxfcHVzaGhlYWRlcnMgKmgsIHNpemVfdCBudW0pCit7CisgICh2b2lkKSBoOworICAodm9pZCkgbnVtOworICByZXR1cm4gTlVMTDsKK30KKworY2hhciAqY3VybF9wdXNoaGVhZGVyX2J5bmFtZShzdHJ1Y3QgY3VybF9wdXNoaGVhZGVycyAqaCwgY29uc3QgY2hhciAqaGVhZGVyKQoreworICAodm9pZCkgaDsKKyAgKHZvaWQpIGhlYWRlcjsKKyAgcmV0dXJuIE5VTEw7Cit9CisKKyNlbmRpZiAvKiBVU0VfTkdIVFRQMiAqLwpkaWZmIC0tZ2l0IGEvbGliL2h0dHAyLmggYi9saWIvaHR0cDIuaAppbmRleCAxNjE0NzM2Li4xYWVjMzA0IDEwMDY0NAotLS0gYS9saWIvaHR0cDIuaAorKysgYi9saWIvaHR0cDIuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTM3LDcgKzM3LDExIEBACiAgKi8KIGludCBDdXJsX2h0dHAyX3ZlcihjaGFyICpwLCBzaXplX3QgbGVuKTsKIAorY29uc3QgY2hhciAqQ3VybF9odHRwMl9zdHJlcnJvcih1aW50MzJfdCBlcnIpOworCiBDVVJMY29kZSBDdXJsX2h0dHAyX2luaXQoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKTsKK3ZvaWQgQ3VybF9odHRwMl9pbml0X3N0YXRlKHN0cnVjdCBVcmxTdGF0ZSAqc3RhdGUpOwordm9pZCBDdXJsX2h0dHAyX2luaXRfdXNlcnNldChzdHJ1Y3QgVXNlckRlZmluZWQgKnNldCk7CiBDVVJMY29kZSBDdXJsX2h0dHAyX3NlbmRfcmVxdWVzdChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pOwogQ1VSTGNvZGUgQ3VybF9odHRwMl9yZXF1ZXN0X3VwZ3JhZGUoQ3VybF9zZW5kX2J1ZmZlciAqcmVxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKTsKQEAgLTQ2LDYgKzUwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZGF0YSwgc2l6ZV90IG5yZWFkKTsKIC8qIGNhbGxlZCBmcm9tIEN1cmxfaHR0cF9zZXR1cF9jb25uICovCiB2b2lkIEN1cmxfaHR0cDJfc2V0dXBfY29ubihzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pOwordm9pZCBDdXJsX2h0dHAyX3NldHVwX3JlcShzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSk7CiAjZWxzZSAvKiBVU0VfTkdIVFRQMiAqLwogI2RlZmluZSBDdXJsX2h0dHAyX2luaXQoeCkgQ1VSTEVfVU5TVVBQT1JURURfUFJPVE9DT0wKICNkZWZpbmUgQ3VybF9odHRwMl9zZW5kX3JlcXVlc3QoeCkgQ1VSTEVfVU5TVVBQT1JURURfUFJPVE9DT0wKQEAgLTUzLDYgKzU4LDkgQEAKICNkZWZpbmUgQ3VybF9odHRwMl9zZXR1cCh4KSBDVVJMRV9VTlNVUFBPUlRFRF9QUk9UT0NPTAogI2RlZmluZSBDdXJsX2h0dHAyX3N3aXRjaGVkKHgseSx6KSBDVVJMRV9VTlNVUFBPUlRFRF9QUk9UT0NPTAogI2RlZmluZSBDdXJsX2h0dHAyX3NldHVwX2Nvbm4oeCkKKyNkZWZpbmUgQ3VybF9odHRwMl9zZXR1cF9yZXEoeCkKKyNkZWZpbmUgQ3VybF9odHRwMl9pbml0X3N0YXRlKHgpCisjZGVmaW5lIEN1cmxfaHR0cDJfaW5pdF91c2Vyc2V0KHgpCiAjZW5kaWYKIAogI2VuZGlmIC8qIEhFQURFUl9DVVJMX0hUVFAyX0ggKi8KZGlmZiAtLWdpdCBhL2xpYi9odHRwX2NodW5rcy5jIGIvbGliL2h0dHBfY2h1bmtzLmMKaW5kZXggODBjMGY5NS4uNDMzZjc2ZSAxMDA2NDQKLS0tIGEvbGliL2h0dHBfY2h1bmtzLmMKKysrIGIvbGliL2h0dHBfY2h1bmtzLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC04MCw3ICs4MCw3IEBACiB7CiAgIHJldHVybiAoIChkaWdpdCA+PSAweDMwICYmIGRpZ2l0IDw9IDB4MzkpIC8qIDAtOSAqLwogICAgICAgICB8fCAoZGlnaXQgPj0gMHg0MSAmJiBkaWdpdCA8PSAweDQ2KSAvKiBBLUYgKi8KLSAgICAgICAgfHwgKGRpZ2l0ID49IDB4NjEgJiYgZGlnaXQgPD0gMHg2NikgLyogYS1mICovICkgPyBUUlVFIDogRkFMU0U7CisgICAgICAgIHx8IChkaWdpdCA+PSAweDYxICYmIGRpZ2l0IDw9IDB4NjYpIC8qIGEtZiAqLykgPyBUUlVFIDogRkFMU0U7CiB9CiAKIHZvaWQgQ3VybF9odHRwY2h1bmtfaW5pdChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pCkBAIC0yMTgsNyArMjE4LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzc2l6ZV90KXBpZWNlKTsKICAgICAgICAgYnJlYWs7CiAKLSAgICAgIGNhc2UgQ09NUFJFU1M6CiAgICAgICBkZWZhdWx0OgogICAgICAgICBmYWlsZiAoY29ubi0+ZGF0YSwKICAgICAgICAgICAgICAgICJVbnJlY29nbml6ZWQgY29udGVudCBlbmNvZGluZyB0eXBlLiAiCmRpZmYgLS1naXQgYS9saWIvaHR0cF9jaHVua3MuaCBiL2xpYi9odHRwX2NodW5rcy5oCmluZGV4IDA0ODllYjguLjNhOGI0ZGQgMTAwNjQ0Ci0tLSBhL2xpYi9odHRwX2NodW5rcy5oCisrKyBiL2xpYi9odHRwX2NodW5rcy5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL2h0dHBfZGlnZXN0LmMgYi9saWIvaHR0cF9kaWdlc3QuYwppbmRleCA5MjllMmM2Li5hMTc2OGI4IDEwMDY0NAotLS0gYS9saWIvaHR0cF9kaWdlc3QuYworKysgYi9saWIvaHR0cF9kaWdlc3QuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTI2LDExICsyNiwxMCBAQAogCiAjaW5jbHVkZSAidXJsZGF0YS5oIgogI2luY2x1ZGUgInJhd3N0ci5oIgotI2luY2x1ZGUgImN1cmxfc2FzbC5oIgorI2luY2x1ZGUgInZhdXRoL3ZhdXRoLmgiCiAjaW5jbHVkZSAiaHR0cF9kaWdlc3QuaCIKKy8qIFRoZSBsYXN0IDMgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlIGluIHRoaXMgb3JkZXIgKi8KICNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgotCi0vKiBUaGUgbGFzdCAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmU6ICovCiAjaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKICNpbmNsdWRlICJtZW1kZWJ1Zy5oIgogCkBAIC02NSw3ICs2NCw3IEBACiAgIHdoaWxlKCpoZWFkZXIgJiYgSVNTUEFDRSgqaGVhZGVyKSkKICAgICBoZWFkZXIrKzsKIAotICByZXR1cm4gQ3VybF9zYXNsX2RlY29kZV9kaWdlc3RfaHR0cF9tZXNzYWdlKGhlYWRlciwgZGlnZXN0KTsKKyAgcmV0dXJuIEN1cmxfYXV0aF9kZWNvZGVfZGlnZXN0X2h0dHBfbWVzc2FnZShoZWFkZXIsIGRpZ2VzdCk7CiB9CiAKIENVUkxjb2RlIEN1cmxfb3V0cHV0X2RpZ2VzdChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCkBAIC0xMzUsNyArMTM0LDcgQEAKIAogICAgICBBcGFjaGUgc2VydmVycyBjYW4gYmUgc2V0IHRvIGRvIHRoZSBEaWdlc3QgSUUtc3R5bGUgYXV0b21hdGljYWxseSB1c2luZwogICAgICB0aGUgQnJvd3Nlck1hdGNoIGZlYXR1cmU6Ci0gICAgIGh0dHA6Ly9odHRwZC5hcGFjaGUub3JnL2RvY3MvMi4yL21vZC9tb2RfYXV0aF9kaWdlc3QuaHRtbCNtc2llCisgICAgIGh0dHBzOi8vaHR0cGQuYXBhY2hlLm9yZy9kb2NzLzIuMi9tb2QvbW9kX2F1dGhfZGlnZXN0Lmh0bWwjbXNpZQogCiAgICAgIEZ1cnRoZXIgZGV0YWlscyBvbiBEaWdlc3QgaW1wbGVtZW50YXRpb24gZGlmZmVyZW5jZXM6CiAgICAgIGh0dHA6Ly93d3cuZm5ndHBzLmNvbS8yMDA2LzA5L2h0dHAtYXV0aGVudGljYXRpb24KQEAgLTE1Miw3ICsxNTEsNyBAQAogICBpZighcGF0aCkKICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKIAotICByZXN1bHQgPSBDdXJsX3Nhc2xfY3JlYXRlX2RpZ2VzdF9odHRwX21lc3NhZ2UoZGF0YSwgdXNlcnAsIHBhc3N3ZHAsIHJlcXVlc3QsCisgIHJlc3VsdCA9IEN1cmxfYXV0aF9jcmVhdGVfZGlnZXN0X2h0dHBfbWVzc2FnZShkYXRhLCB1c2VycCwgcGFzc3dkcCwgcmVxdWVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGgsIGRpZ2VzdCwgJnJlc3BvbnNlLCAmbGVuKTsKICAgZnJlZShwYXRoKTsKICAgaWYocmVzdWx0KQpAQCAtMTcyLDggKzE3MSw4IEBACiAKIHZvaWQgQ3VybF9kaWdlc3RfY2xlYW51cChzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSkKIHsKLSAgQ3VybF9zYXNsX2RpZ2VzdF9jbGVhbnVwKCZkYXRhLT5zdGF0ZS5kaWdlc3QpOwotICBDdXJsX3Nhc2xfZGlnZXN0X2NsZWFudXAoJmRhdGEtPnN0YXRlLnByb3h5ZGlnZXN0KTsKKyAgQ3VybF9hdXRoX2RpZ2VzdF9jbGVhbnVwKCZkYXRhLT5zdGF0ZS5kaWdlc3QpOworICBDdXJsX2F1dGhfZGlnZXN0X2NsZWFudXAoJmRhdGEtPnN0YXRlLnByb3h5ZGlnZXN0KTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9saWIvaHR0cF9kaWdlc3QuaCBiL2xpYi9odHRwX2RpZ2VzdC5oCmluZGV4IGQxM2Q1NjMuLjQ5YWFkODkgMTAwNjQ0Ci0tLSBhL2xpYi9odHRwX2RpZ2VzdC5oCisrKyBiL2xpYi9odHRwX2RpZ2VzdC5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL2h0dHBfbmVnb3RpYXRlLmMgYi9saWIvaHR0cF9uZWdvdGlhdGUuYwppbmRleCBhMWJhZjI5Li45OTliYzBjIDEwMDY0NAotLS0gYS9saWIvaHR0cF9uZWdvdGlhdGUuYworKysgYi9saWIvaHR0cF9uZWdvdGlhdGUuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTIyLDE5ICsyMiwxNiBAQAogCiAjaW5jbHVkZSAiY3VybF9zZXR1cC5oIgogCi0jaWYgZGVmaW5lZChIQVZFX0dTU0FQSSkgJiYgIWRlZmluZWQoQ1VSTF9ESVNBQkxFX0hUVFApICYmIGRlZmluZWQoVVNFX1NQTkVHTykKKyNpZiAhZGVmaW5lZChDVVJMX0RJU0FCTEVfSFRUUCkgJiYgZGVmaW5lZChVU0VfU1BORUdPKQogCiAjaW5jbHVkZSAidXJsZGF0YS5oIgogI2luY2x1ZGUgInNlbmRmLmgiCi0jaW5jbHVkZSAiY3VybF9nc3NhcGkuaCIKICNpbmNsdWRlICJyYXdzdHIuaCIKLSNpbmNsdWRlICJjdXJsX2Jhc2U2NC5oIgogI2luY2x1ZGUgImh0dHBfbmVnb3RpYXRlLmgiCi0jaW5jbHVkZSAiY3VybF9zYXNsLmgiCi0jaW5jbHVkZSAidXJsLmgiCi0jaW5jbHVkZSAiY3VybF9wcmludGYuaCIKKyNpbmNsdWRlICJ2YXV0aC92YXV0aC5oIgogCi0vKiBUaGUgbGFzdCAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmU6ICovCisvKiBUaGUgbGFzdCAzICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZSBpbiB0aGlzIG9yZGVyICovCisjaW5jbHVkZSAiY3VybF9wcmludGYuaCIKICNpbmNsdWRlICJjdXJsX21lbW9yeS5oIgogI2luY2x1ZGUgIm1lbWRlYnVnLmgiCiAKQEAgLTQyLDEzNiArMzksNzcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmhlYWRlcikKIHsKICAgc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEgPSBjb25uLT5kYXRhOwotICBzdHJ1Y3QgbmVnb3RpYXRlZGF0YSAqbmVnX2N0eCA9IHByb3h5PyZkYXRhLT5zdGF0ZS5wcm94eW5lZzoKLSAgICAmZGF0YS0+c3RhdGUubmVnb3RpYXRlOwotICBPTV91aW50MzIgbWFqb3Jfc3RhdHVzLCBtaW5vcl9zdGF0dXMsIGRpc2NhcmRfc3Q7Ci0gIGdzc19idWZmZXJfZGVzYyBzcG5fdG9rZW4gPSBHU1NfQ19FTVBUWV9CVUZGRVI7Ci0gIGdzc19idWZmZXJfZGVzYyBpbnB1dF90b2tlbiA9IEdTU19DX0VNUFRZX0JVRkZFUjsKLSAgZ3NzX2J1ZmZlcl9kZXNjIG91dHB1dF90b2tlbiA9IEdTU19DX0VNUFRZX0JVRkZFUjsKICAgc2l6ZV90IGxlbjsKLSAgc2l6ZV90IHJhd2xlbiA9IDA7Ci0gIENVUkxjb2RlIHJlc3VsdDsKIAotICBpZihuZWdfY3R4LT5jb250ZXh0ICYmIG5lZ19jdHgtPnN0YXR1cyA9PSBHU1NfU19DT01QTEVURSkgewotICAgIC8qIFdlIGZpbmlzaGVkIHN1Y2Nlc3NmdWxseSBvdXIgcGFydCBvZiBhdXRoZW50aWNhdGlvbiwgYnV0IHNlcnZlcgotICAgICAqIHJlamVjdGVkIGl0IChzaW5jZSB3ZSdyZSBhZ2FpbiBoZXJlKS4gRXhpdCB3aXRoIGFuIGVycm9yIHNpbmNlIHdlCi0gICAgICogY2FuJ3QgaW52ZW50IGFueXRoaW5nIGJldHRlciAqLwotICAgIEN1cmxfY2xlYW51cF9uZWdvdGlhdGUoZGF0YSk7Ci0gICAgcmV0dXJuIENVUkxFX0xPR0lOX0RFTklFRDsKKyAgLyogUG9pbnQgdG8gdGhlIHVzZXJuYW1lLCBwYXNzd29yZCwgc2VydmljZSBhbmQgaG9zdCAqLworICBjb25zdCBjaGFyICp1c2VycDsKKyAgY29uc3QgY2hhciAqcGFzc3dkcDsKKyAgY29uc3QgY2hhciAqc2VydmljZTsKKyAgY29uc3QgY2hhciAqaG9zdDsKKworICAvKiBQb2ludCB0byB0aGUgY29ycmVjdCBzdHJ1Y3Qgd2l0aCB0aGlzICovCisgIHN0cnVjdCBuZWdvdGlhdGVkYXRhICpuZWdfY3R4OworCisgIGlmKHByb3h5KSB7CisgICAgdXNlcnAgPSBjb25uLT5wcm94eXVzZXI7CisgICAgcGFzc3dkcCA9IGNvbm4tPnByb3h5cGFzc3dkOworICAgIHNlcnZpY2UgPSBkYXRhLT5zZXQuc3RyW1NUUklOR19QUk9YWV9TRVJWSUNFX05BTUVdID8KKyAgICAgICAgICAgICAgZGF0YS0+c2V0LnN0cltTVFJJTkdfUFJPWFlfU0VSVklDRV9OQU1FXSA6ICJIVFRQIjsKKyAgICBob3N0ID0gY29ubi0+cHJveHkubmFtZTsKKyAgICBuZWdfY3R4ID0gJmRhdGEtPnN0YXRlLnByb3h5bmVnOworICB9CisgIGVsc2UgeworICAgIHVzZXJwID0gY29ubi0+dXNlcjsKKyAgICBwYXNzd2RwID0gY29ubi0+cGFzc3dkOworICAgIHNlcnZpY2UgPSBkYXRhLT5zZXQuc3RyW1NUUklOR19TRVJWSUNFX05BTUVdID8KKyAgICAgICAgICAgICAgZGF0YS0+c2V0LnN0cltTVFJJTkdfU0VSVklDRV9OQU1FXSA6ICJIVFRQIjsKKyAgICBob3N0ID0gY29ubi0+aG9zdC5uYW1lOworICAgIG5lZ19jdHggPSAmZGF0YS0+c3RhdGUubmVnb3RpYXRlOwogICB9CiAKLSAgaWYoIW5lZ19jdHgtPnNlcnZlcl9uYW1lKSB7Ci0gICAgLyogR2VuZXJhdGUgb3VyIFNQTiAqLwotICAgIGNoYXIgKnNwbiA9IEN1cmxfc2FzbF9idWlsZF9nc3NhcGlfc3BuKAotICAgICAgcHJveHkgPyBkYXRhLT5zZXQuc3RyW1NUUklOR19QUk9YWV9TRVJWSUNFX05BTUVdIDoKLSAgICAgIGRhdGEtPnNldC5zdHJbU1RSSU5HX1NFUlZJQ0VfTkFNRV0sCi0gICAgICBwcm94eSA/IGNvbm4tPnByb3h5Lm5hbWUgOiBjb25uLT5ob3N0Lm5hbWUpOwotICAgIGlmKCFzcG4pCi0gICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKyAgLyogTm90IHNldCBtZWFucyBlbXB0eSAqLworICBpZighdXNlcnApCisgICAgdXNlcnAgPSAiIjsKIAotICAgIC8qIFBvcHVsYXRlIHRoZSBTUE4gc3RydWN0dXJlICovCi0gICAgc3BuX3Rva2VuLnZhbHVlID0gc3BuOwotICAgIHNwbl90b2tlbi5sZW5ndGggPSBzdHJsZW4oc3BuKTsKKyAgaWYoIXBhc3N3ZHApCisgICAgcGFzc3dkcCA9ICIiOwogCi0gICAgLyogSW1wb3J0IHRoZSBTUE4gKi8KLSAgICBtYWpvcl9zdGF0dXMgPSBnc3NfaW1wb3J0X25hbWUoJm1pbm9yX3N0YXR1cywgJnNwbl90b2tlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1NTX0NfTlRfSE9TVEJBU0VEX1NFUlZJQ0UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuZWdfY3R4LT5zZXJ2ZXJfbmFtZSk7Ci0gICAgaWYoR1NTX0VSUk9SKG1ham9yX3N0YXR1cykpIHsKLSAgICAgIEN1cmxfZ3NzX2xvZ19lcnJvcihkYXRhLCBtaW5vcl9zdGF0dXMsICJnc3NfaW1wb3J0X25hbWUoKSBmYWlsZWQ6ICIpOwotCi0gICAgICBmcmVlKHNwbik7Ci0KLSAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotICAgIH0KLQotICAgIGZyZWUoc3BuKTsKLSAgfQotCisgIC8qIE9idGFpbiB0aGUgaW5wdXQgdG9rZW4sIGlmIGFueSAqLwogICBoZWFkZXIgKz0gc3RybGVuKCJOZWdvdGlhdGUiKTsKICAgd2hpbGUoKmhlYWRlciAmJiBJU1NQQUNFKCpoZWFkZXIpKQogICAgIGhlYWRlcisrOwogCiAgIGxlbiA9IHN0cmxlbihoZWFkZXIpOwotICBpZihsZW4gPiAwKSB7Ci0gICAgcmVzdWx0ID0gQ3VybF9iYXNlNjRfZGVjb2RlKGhlYWRlciwgKHVuc2lnbmVkIGNoYXIgKiopJmlucHV0X3Rva2VuLnZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmF3bGVuKTsKLSAgICBpZihyZXN1bHQpCi0gICAgICByZXR1cm4gcmVzdWx0OwotCi0gICAgaWYoIXJhd2xlbikgewotICAgICAgaW5mb2YoZGF0YSwgIk5lZ290aWF0ZSBoYW5kc2hha2UgZmFpbHVyZSAoZW1wdHkgY2hhbGxlbmdlIG1lc3NhZ2UpXG4iKTsKLQotICAgICAgcmV0dXJuIENVUkxFX0JBRF9DT05URU5UX0VOQ09ESU5HOworICBpZighbGVuKSB7CisgICAgLyogSXMgdGhpcyB0aGUgZmlyc3QgY2FsbCBpbiBhIG5ldyBuZWdvdGlhdGlvbj8gKi8KKyAgICBpZihuZWdfY3R4LT5jb250ZXh0KSB7CisgICAgICAvKiBUaGUgc2VydmVyIHJlamVjdGVkIG91ciBhdXRoZW50aWNhdGlvbiBhbmQgaGFzbid0IHN1cHBsZWQgYW55IG1vcmUKKyAgICAgIG5lZ290aWF0aW9uIG1lY2hhbmlzbXMgKi8KKyAgICAgIHJldHVybiBDVVJMRV9MT0dJTl9ERU5JRUQ7CiAgICAgfQotCi0gICAgaW5wdXRfdG9rZW4ubGVuZ3RoID0gcmF3bGVuOwotCi0gICAgREVCVUdBU1NFUlQoaW5wdXRfdG9rZW4udmFsdWUgIT0gTlVMTCk7CiAgIH0KIAotICBtYWpvcl9zdGF0dXMgPSBDdXJsX2dzc19pbml0X3NlY19jb250ZXh0KGRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1pbm9yX3N0YXR1cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmVnX2N0eC0+Y29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZWdfY3R4LT5zZXJ2ZXJfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmQ3VybF9zcG5lZ29fbWVjaF9vaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1NTX0NfTk9fQ0hBTk5FTF9CSU5ESU5HUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaW5wdXRfdG9rZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm91dHB1dF90b2tlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwotICBDdXJsX3NhZmVmcmVlKGlucHV0X3Rva2VuLnZhbHVlKTsKLQotICBuZWdfY3R4LT5zdGF0dXMgPSBtYWpvcl9zdGF0dXM7Ci0gIGlmKEdTU19FUlJPUihtYWpvcl9zdGF0dXMpKSB7Ci0gICAgaWYob3V0cHV0X3Rva2VuLnZhbHVlKQotICAgICAgZ3NzX3JlbGVhc2VfYnVmZmVyKCZkaXNjYXJkX3N0LCAmb3V0cHV0X3Rva2VuKTsKLSAgICBDdXJsX2dzc19sb2dfZXJyb3IoY29ubi0+ZGF0YSwgbWlub3Jfc3RhdHVzLAotICAgICAgICAgICAgICAgICAgICAgICAiZ3NzX2luaXRfc2VjX2NvbnRleHQoKSBmYWlsZWQ6ICIpOwotICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotICB9Ci0KLSAgaWYoIW91dHB1dF90b2tlbi52YWx1ZSB8fCAhb3V0cHV0X3Rva2VuLmxlbmd0aCkgewotICAgIGlmKG91dHB1dF90b2tlbi52YWx1ZSkKLSAgICAgIGdzc19yZWxlYXNlX2J1ZmZlcigmZGlzY2FyZF9zdCwgJm91dHB1dF90b2tlbik7Ci0gICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7Ci0gIH0KLQotICBuZWdfY3R4LT5vdXRwdXRfdG9rZW4gPSBvdXRwdXRfdG9rZW47Ci0KLSAgcmV0dXJuIENVUkxFX09LOworICAvKiBJbml0aWxpc2UgdGhlIHNlY3VyaXR5IGNvbnRleHQgYW5kIGRlY29kZSBvdXIgY2hhbGxlbmdlICovCisgIHJldHVybiBDdXJsX2F1dGhfZGVjb2RlX3NwbmVnb19tZXNzYWdlKGRhdGEsIHVzZXJwLCBwYXNzd2RwLCBzZXJ2aWNlLCBob3N0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXIsIG5lZ19jdHgpOwogfQogCiBDVVJMY29kZSBDdXJsX291dHB1dF9uZWdvdGlhdGUoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBib29sIHByb3h5KQogewotICBzdHJ1Y3QgbmVnb3RpYXRlZGF0YSAqbmVnX2N0eCA9IHByb3h5PyZjb25uLT5kYXRhLT5zdGF0ZS5wcm94eW5lZzoKKyAgc3RydWN0IG5lZ290aWF0ZWRhdGEgKm5lZ19jdHggPSBwcm94eSA/ICZjb25uLT5kYXRhLT5zdGF0ZS5wcm94eW5lZyA6CiAgICAgJmNvbm4tPmRhdGEtPnN0YXRlLm5lZ290aWF0ZTsKLSAgY2hhciAqZW5jb2RlZCA9IE5VTEw7CisgIGNoYXIgKmJhc2U2NCA9IE5VTEw7CiAgIHNpemVfdCBsZW4gPSAwOwogICBjaGFyICp1c2VycDsKICAgQ1VSTGNvZGUgcmVzdWx0OwotICBPTV91aW50MzIgZGlzY2FyZF9zdDsKIAotICByZXN1bHQgPSBDdXJsX2Jhc2U2NF9lbmNvZGUoY29ubi0+ZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5lZ19jdHgtPm91dHB1dF90b2tlbi52YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5lZ19jdHgtPm91dHB1dF90b2tlbi5sZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZW5jb2RlZCwgJmxlbik7Ci0gIGlmKHJlc3VsdCkgewotICAgIGdzc19yZWxlYXNlX2J1ZmZlcigmZGlzY2FyZF9zdCwgJm5lZ19jdHgtPm91dHB1dF90b2tlbik7Ci0gICAgbmVnX2N0eC0+b3V0cHV0X3Rva2VuLnZhbHVlID0gTlVMTDsKLSAgICBuZWdfY3R4LT5vdXRwdXRfdG9rZW4ubGVuZ3RoID0gMDsKKyAgcmVzdWx0ID0gQ3VybF9hdXRoX2NyZWF0ZV9zcG5lZ29fbWVzc2FnZShjb25uLT5kYXRhLCBuZWdfY3R4LCAmYmFzZTY0LCAmbGVuKTsKKyAgaWYocmVzdWx0KQogICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KLQotICBpZighZW5jb2RlZCB8fCAhbGVuKSB7Ci0gICAgZ3NzX3JlbGVhc2VfYnVmZmVyKCZkaXNjYXJkX3N0LCAmbmVnX2N0eC0+b3V0cHV0X3Rva2VuKTsKLSAgICBuZWdfY3R4LT5vdXRwdXRfdG9rZW4udmFsdWUgPSBOVUxMOwotICAgIG5lZ19jdHgtPm91dHB1dF90b2tlbi5sZW5ndGggPSAwOwotICAgIHJldHVybiBDVVJMRV9SRU1PVEVfQUNDRVNTX0RFTklFRDsKLSAgfQogCiAgIHVzZXJwID0gYXByaW50ZigiJXNBdXRob3JpemF0aW9uOiBOZWdvdGlhdGUgJXNcclxuIiwgcHJveHkgPyAiUHJveHktIiA6ICIiLAotICAgICAgICAgICAgICAgICAgZW5jb2RlZCk7CisgICAgICAgICAgICAgICAgICBiYXNlNjQpOworCiAgIGlmKHByb3h5KSB7CiAgICAgQ3VybF9zYWZlZnJlZShjb25uLT5hbGxvY3B0ci5wcm94eXVzZXJwd2QpOwogICAgIGNvbm4tPmFsbG9jcHRyLnByb3h5dXNlcnB3ZCA9IHVzZXJwOwpAQCAtMTgxLDMwICsxMTksMTUgQEAKICAgICBjb25uLT5hbGxvY3B0ci51c2VycHdkID0gdXNlcnA7CiAgIH0KIAotICBmcmVlKGVuY29kZWQpOworICBmcmVlKGJhc2U2NCk7CiAKICAgcmV0dXJuICh1c2VycCA9PSBOVUxMKSA/IENVUkxFX09VVF9PRl9NRU1PUlkgOiBDVVJMRV9PSzsKIH0KIAotc3RhdGljIHZvaWQgY2xlYW51cChzdHJ1Y3QgbmVnb3RpYXRlZGF0YSAqbmVnX2N0eCkKLXsKLSAgT01fdWludDMyIG1pbm9yX3N0YXR1czsKLSAgaWYobmVnX2N0eC0+Y29udGV4dCAhPSBHU1NfQ19OT19DT05URVhUKQotICAgIGdzc19kZWxldGVfc2VjX2NvbnRleHQoJm1pbm9yX3N0YXR1cywgJm5lZ19jdHgtPmNvbnRleHQsIEdTU19DX05PX0JVRkZFUik7Ci0KLSAgaWYobmVnX2N0eC0+b3V0cHV0X3Rva2VuLnZhbHVlKQotICAgIGdzc19yZWxlYXNlX2J1ZmZlcigmbWlub3Jfc3RhdHVzLCAmbmVnX2N0eC0+b3V0cHV0X3Rva2VuKTsKLQotICBpZihuZWdfY3R4LT5zZXJ2ZXJfbmFtZSAhPSBHU1NfQ19OT19OQU1FKQotICAgIGdzc19yZWxlYXNlX25hbWUoJm1pbm9yX3N0YXR1cywgJm5lZ19jdHgtPnNlcnZlcl9uYW1lKTsKLQotICBtZW1zZXQobmVnX2N0eCwgMCwgc2l6ZW9mKCpuZWdfY3R4KSk7Ci19Ci0KIHZvaWQgQ3VybF9jbGVhbnVwX25lZ290aWF0ZShzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSkKIHsKLSAgY2xlYW51cCgmZGF0YS0+c3RhdGUubmVnb3RpYXRlKTsKLSAgY2xlYW51cCgmZGF0YS0+c3RhdGUucHJveHluZWcpOworICBDdXJsX2F1dGhfc3BuZWdvX2NsZWFudXAoJmRhdGEtPnN0YXRlLm5lZ290aWF0ZSk7CisgIEN1cmxfYXV0aF9zcG5lZ29fY2xlYW51cCgmZGF0YS0+c3RhdGUucHJveHluZWcpOwogfQogCi0jZW5kaWYgLyogSEFWRV9HU1NBUEkgJiYgIUNVUkxfRElTQUJMRV9IVFRQICYmIFVTRV9TUE5FR08gKi8KKyNlbmRpZiAvKiAhQ1VSTF9ESVNBQkxFX0hUVFAgJiYgVVNFX1NQTkVHTyAqLwpkaWZmIC0tZ2l0IGEvbGliL2h0dHBfbmVnb3RpYXRlLmggYi9saWIvaHR0cF9uZWdvdGlhdGUuaAppbmRleCBhOGViOTgwLi4yMWI3Zjg4IDEwMDY0NAotLS0gYS9saWIvaHR0cF9uZWdvdGlhdGUuaAorKysgYi9saWIvaHR0cF9uZWdvdGlhdGUuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTMzLDEwICszMyw2IEBACiAKIHZvaWQgQ3VybF9jbGVhbnVwX25lZ290aWF0ZShzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSk7CiAKLSNpZmRlZiBVU0VfV0lORE9XU19TU1BJCi0jZGVmaW5lIEdTU19FUlJPUihzdGF0dXMpIChzdGF0dXMgJiAweDgwMDAwMDAwKQotI2VuZGlmCi0KICNlbmRpZiAvKiBVU0VfU1BORUdPICovCiAKICNlbmRpZiAvKiBIRUFERVJfQ1VSTF9IVFRQX05FR09USUFURV9IICovCmRpZmYgLS1naXQgYS9saWIvaHR0cF9uZWdvdGlhdGVfc3NwaS5jIGIvbGliL2h0dHBfbmVnb3RpYXRlX3NzcGkuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTUwZWE5Ni4uMDAwMDAwMAotLS0gYS9saWIvaHR0cF9uZWdvdGlhdGVfc3NwaS5jCisrKyAvZGV2L251bGwKQEAgLTEsMzAwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KLSAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8Ci0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAotICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCi0gKgotICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKLSAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCi0gKgotICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCi0gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKLSAqIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCi0gKgotICogVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQotICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0jaW5jbHVkZSAiY3VybF9zZXR1cC5oIgotCi0jaWZkZWYgVVNFX1dJTkRPV1NfU1NQSQotCi0jaWYgIWRlZmluZWQoQ1VSTF9ESVNBQkxFX0hUVFApICYmIGRlZmluZWQoVVNFX1NQTkVHTykKLQotI2luY2x1ZGUgInVybGRhdGEuaCIKLSNpbmNsdWRlICJzZW5kZi5oIgotI2luY2x1ZGUgInJhd3N0ci5oIgotI2luY2x1ZGUgIndhcm5sZXNzLmgiCi0jaW5jbHVkZSAiY3VybF9iYXNlNjQuaCIKLSNpbmNsdWRlICJjdXJsX3Nhc2wuaCIKLSNpbmNsdWRlICJodHRwX25lZ290aWF0ZS5oIgotI2luY2x1ZGUgImN1cmxfbXVsdGlieXRlLmgiCi0jaW5jbHVkZSAiY3VybF9wcmludGYuaCIKLQotLyogVGhlIGxhc3QgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlOiAqLwotI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCi0jaW5jbHVkZSAibWVtZGVidWcuaCIKLQotQ1VSTGNvZGUgQ3VybF9pbnB1dF9uZWdvdGlhdGUoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBib29sIHByb3h5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqaGVhZGVyKQotewotICBzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSA9IGNvbm4tPmRhdGE7Ci0gIEJZVEUgICAgICAgICAgICAgICppbnB1dF90b2tlbiA9IE5VTEw7Ci0gIFNlY0J1ZmZlckRlc2MgICAgIG91dF9idWZmX2Rlc2M7Ci0gIFNlY0J1ZmZlciAgICAgICAgIG91dF9zZWNfYnVmZjsKLSAgU2VjQnVmZmVyRGVzYyAgICAgaW5fYnVmZl9kZXNjOwotICBTZWNCdWZmZXIgICAgICAgICBpbl9zZWNfYnVmZjsKLSAgU0VDVVJJVFlfU1RBVFVTICAgc3RhdHVzOwotICB1bnNpZ25lZCBsb25nICAgICBhdHRyczsKLSAgVGltZVN0YW1wICAgICAgICAgZXhwaXJ5OyAvKiBGb3IgV2luZG93cyA5eCBjb21wYXRpYmlsaXR5IG9mIFNTUEkgY2FsbHMgKi8KLSAgc2l6ZV90IGxlbiA9IDAsIGlucHV0X3Rva2VuX2xlbiA9IDA7Ci0gIENVUkxjb2RlIHJlc3VsdDsKLQotICAvKiBQb2ludCB0byB0aGUgdXNlcm5hbWUgYW5kIHBhc3N3b3JkICovCi0gIGNvbnN0IGNoYXIgKnVzZXJwOwotICBjb25zdCBjaGFyICpwYXNzd2RwOwotCi0gIC8qIFBvaW50IHRvIHRoZSBjb3JyZWN0IHN0cnVjdCB3aXRoIHRoaXMgKi8KLSAgc3RydWN0IG5lZ290aWF0ZWRhdGEgKm5lZ19jdHg7Ci0KLSAgaWYocHJveHkpIHsKLSAgICB1c2VycCA9IGNvbm4tPnByb3h5dXNlcjsKLSAgICBwYXNzd2RwID0gY29ubi0+cHJveHlwYXNzd2Q7Ci0gICAgbmVnX2N0eCA9ICZkYXRhLT5zdGF0ZS5wcm94eW5lZzsKLSAgfQotICBlbHNlIHsKLSAgICB1c2VycCA9IGNvbm4tPnVzZXI7Ci0gICAgcGFzc3dkcCA9IGNvbm4tPnBhc3N3ZDsKLSAgICBuZWdfY3R4ID0gJmRhdGEtPnN0YXRlLm5lZ290aWF0ZTsKLSAgfQotCi0gIC8qIE5vdCBzZXQgbWVhbnMgZW1wdHkgKi8KLSAgaWYoIXVzZXJwKQotICAgIHVzZXJwID0gIiI7Ci0KLSAgaWYoIXBhc3N3ZHApCi0gICAgcGFzc3dkcCA9ICIiOwotCi0gIGlmKG5lZ19jdHgtPmNvbnRleHQgJiYgbmVnX2N0eC0+c3RhdHVzID09IFNFQ19FX09LKSB7Ci0gICAgLyogV2UgZmluaXNoZWQgc3VjY2Vzc2Z1bGx5IG91ciBwYXJ0IG9mIGF1dGhlbnRpY2F0aW9uLCBidXQgc2VydmVyCi0gICAgICogcmVqZWN0ZWQgaXQgKHNpbmNlIHdlJ3JlIGFnYWluIGhlcmUpLiBFeGl0IHdpdGggYW4gZXJyb3Igc2luY2Ugd2UKLSAgICAgKiBjYW4ndCBpbnZlbnQgYW55dGhpbmcgYmV0dGVyICovCi0gICAgQ3VybF9jbGVhbnVwX25lZ290aWF0ZShkYXRhKTsKLSAgICByZXR1cm4gQ1VSTEVfTE9HSU5fREVOSUVEOwotICB9Ci0KLSAgaWYoIW5lZ19jdHgtPnNlcnZlcl9uYW1lKSB7Ci0gICAgLyogQ2hlY2sgcHJveHkgYXV0aCByZXF1ZXN0ZWQgYnV0IG5vIGdpdmVuIHByb3h5IG5hbWUgKi8KLSAgICBpZihwcm94eSAmJiAhY29ubi0+cHJveHkubmFtZSkKLSAgICAgIHJldHVybiBDVVJMRV9CQURfRlVOQ1RJT05fQVJHVU1FTlQ7Ci0KLSAgICAvKiBHZW5lcmF0ZSBvdXIgU1BOICovCi0gICAgbmVnX2N0eC0+c2VydmVyX25hbWUgPSBDdXJsX3Nhc2xfYnVpbGRfc3BuKAotICAgICAgcHJveHkgPyBkYXRhLT5zZXQuc3RyW1NUUklOR19QUk9YWV9TRVJWSUNFX05BTUVdIDoKLSAgICAgIGRhdGEtPnNldC5zdHJbU1RSSU5HX1NFUlZJQ0VfTkFNRV0sCi0gICAgICBwcm94eSA/IGNvbm4tPnByb3h5Lm5hbWUgOiBjb25uLT5ob3N0Lm5hbWUpOwotICAgIGlmKCFuZWdfY3R4LT5zZXJ2ZXJfbmFtZSkKLSAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwotICB9Ci0KLSAgaWYoIW5lZ19jdHgtPm91dHB1dF90b2tlbikgewotICAgIFBTZWNQa2dJbmZvIFNlY3VyaXR5UGFja2FnZTsKLSAgICBzdGF0dXMgPSBzX3BTZWNGbi0+UXVlcnlTZWN1cml0eVBhY2thZ2VJbmZvKChUQ0hBUiAqKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEVYVChTUF9OQU1FX05FR09USUFURSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmU2VjdXJpdHlQYWNrYWdlKTsKLSAgICBpZihzdGF0dXMgIT0gU0VDX0VfT0spCi0gICAgICByZXR1cm4gQ1VSTEVfTk9UX0JVSUxUX0lOOwotCi0gICAgLyogQWxsb2NhdGUgaW5wdXQgYW5kIG91dHB1dCBidWZmZXJzIGFjY29yZGluZyB0byB0aGUgbWF4IHRva2VuIHNpemUKLSAgICAgICBhcyBpbmRpY2F0ZWQgYnkgdGhlIHNlY3VyaXR5IHBhY2thZ2UgKi8KLSAgICBuZWdfY3R4LT50b2tlbl9tYXggPSBTZWN1cml0eVBhY2thZ2UtPmNiTWF4VG9rZW47Ci0gICAgbmVnX2N0eC0+b3V0cHV0X3Rva2VuID0gbWFsbG9jKG5lZ19jdHgtPnRva2VuX21heCk7Ci0gICAgc19wU2VjRm4tPkZyZWVDb250ZXh0QnVmZmVyKFNlY3VyaXR5UGFja2FnZSk7Ci0gIH0KLQotICAvKiBPYnRhaW4gdGhlIGlucHV0IHRva2VuLCBpZiBhbnkgKi8KLSAgaGVhZGVyICs9IHN0cmxlbigiTmVnb3RpYXRlIik7Ci0gIHdoaWxlKCpoZWFkZXIgJiYgSVNTUEFDRSgqaGVhZGVyKSkKLSAgICBoZWFkZXIrKzsKLQotICBsZW4gPSBzdHJsZW4oaGVhZGVyKTsKLSAgaWYoIWxlbikgewotICAgIC8qIElzIHRoaXMgdGhlIGZpcnN0IGNhbGwgaW4gYSBuZXcgbmVnb3RpYXRpb24/ICovCi0gICAgaWYobmVnX2N0eC0+Y29udGV4dCkgewotICAgICAgLyogVGhlIHNlcnZlciByZWplY3RlZCBvdXIgYXV0aGVudGljYXRpb24gYW5kIGhhc24ndCBzdXBwbGVkIGFueSBtb3JlCi0gICAgICAgICBuZWdvdGlhdGlvbiBtZWNoYW5pc21zICovCi0gICAgICByZXR1cm4gQ1VSTEVfTE9HSU5fREVOSUVEOwotICAgIH0KLQotICAgIC8qIFdlIGhhdmUgdG8gYWNxdWlyZSBjcmVkZW50aWFscyBhbmQgYWxsb2NhdGUgbWVtb3J5IGZvciB0aGUgY29udGV4dCAqLwotICAgIG5lZ19jdHgtPmNyZWRlbnRpYWxzID0gbWFsbG9jKHNpemVvZihDcmVkSGFuZGxlKSk7Ci0gICAgbmVnX2N0eC0+Y29udGV4dCA9IG1hbGxvYyhzaXplb2YoQ3R4dEhhbmRsZSkpOwotCi0gICAgaWYoIW5lZ19jdHgtPmNyZWRlbnRpYWxzIHx8ICFuZWdfY3R4LT5jb250ZXh0KQotICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7Ci0KLSAgICBpZih1c2VycCAmJiAqdXNlcnApIHsKLSAgICAgIC8qIFBvcHVsYXRlIG91ciBpZGVudGl0eSBzdHJ1Y3R1cmUgKi8KLSAgICAgIHJlc3VsdCA9IEN1cmxfY3JlYXRlX3NzcGlfaWRlbnRpdHkodXNlcnAsIHBhc3N3ZHAsICZuZWdfY3R4LT5pZGVudGl0eSk7Ci0gICAgICBpZihyZXN1bHQpCi0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0KLSAgICAgIC8qIEFsbG93IHByb3BlciBjbGVhbnVwIG9mIHRoZSBpZGVudGl0eSBzdHJ1Y3R1cmUgKi8KLSAgICAgIG5lZ19jdHgtPnBfaWRlbnRpdHkgPSAmbmVnX2N0eC0+aWRlbnRpdHk7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgIC8qIFVzZSB0aGUgY3VycmVudCBXaW5kb3dzIHVzZXIgKi8KLSAgICAgIG5lZ19jdHgtPnBfaWRlbnRpdHkgPSBOVUxMOwotCi0gICAgLyogQWNxdWlyZSBvdXIgY3JlZGllbnRpYWxzIGhhbmRsZSAqLwotICAgIG5lZ19jdHgtPnN0YXR1cyA9Ci0gICAgICBzX3BTZWNGbi0+QWNxdWlyZUNyZWRlbnRpYWxzSGFuZGxlKE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChUQ0hBUiAqKSBURVhUKFNQX05BTUVfTkVHT1RJQVRFKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VDUEtHX0NSRURfT1VUQk9VTkQsIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5lZ19jdHgtPnBfaWRlbnRpdHksIE5VTEwsIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5lZ19jdHgtPmNyZWRlbnRpYWxzLCAmZXhwaXJ5KTsKLSAgICBpZihuZWdfY3R4LT5zdGF0dXMgIT0gU0VDX0VfT0spCi0gICAgICByZXR1cm4gQ1VSTEVfTE9HSU5fREVOSUVEOwotICB9Ci0gIGVsc2UgewotICAgIHJlc3VsdCA9IEN1cmxfYmFzZTY0X2RlY29kZShoZWFkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyICoqKSZpbnB1dF90b2tlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmlucHV0X3Rva2VuX2xlbik7Ci0gICAgaWYocmVzdWx0KQotICAgICAgcmV0dXJuIHJlc3VsdDsKLQotICAgIGlmKCFpbnB1dF90b2tlbl9sZW4pIHsKLSAgICAgIGluZm9mKGRhdGEsCi0gICAgICAgICAgICAiTmVnb3RpYXRlIGhhbmRzaGFrZSBmYWlsdXJlIChlbXB0eSBjaGFsbGVuZ2UgbWVzc2FnZSlcbiIpOwotCi0gICAgICByZXR1cm4gQ1VSTEVfQkFEX0NPTlRFTlRfRU5DT0RJTkc7Ci0gICAgfQotICB9Ci0KLSAgLyogU2V0dXAgdGhlICJvdXRwdXQiIHNlY3VyaXR5IGJ1ZmZlciAqLwotICBvdXRfYnVmZl9kZXNjLnVsVmVyc2lvbiA9IFNFQ0JVRkZFUl9WRVJTSU9OOwotICBvdXRfYnVmZl9kZXNjLmNCdWZmZXJzICA9IDE7Ci0gIG91dF9idWZmX2Rlc2MucEJ1ZmZlcnMgID0gJm91dF9zZWNfYnVmZjsKLSAgb3V0X3NlY19idWZmLkJ1ZmZlclR5cGUgPSBTRUNCVUZGRVJfVE9LRU47Ci0gIG91dF9zZWNfYnVmZi5wdkJ1ZmZlciAgID0gbmVnX2N0eC0+b3V0cHV0X3Rva2VuOwotICBvdXRfc2VjX2J1ZmYuY2JCdWZmZXIgICA9IGN1cmx4X3V6dG91bChuZWdfY3R4LT50b2tlbl9tYXgpOwotCi0gIC8qIFNldHVwIHRoZSAiaW5wdXQiIHNlY3VyaXR5IGJ1ZmZlciBpZiBwcmVzZW50ICovCi0gIGlmKGlucHV0X3Rva2VuKSB7Ci0gICAgaW5fYnVmZl9kZXNjLnVsVmVyc2lvbiA9IFNFQ0JVRkZFUl9WRVJTSU9OOwotICAgIGluX2J1ZmZfZGVzYy5jQnVmZmVycyAgPSAxOwotICAgIGluX2J1ZmZfZGVzYy5wQnVmZmVycyAgPSAmaW5fc2VjX2J1ZmY7Ci0gICAgaW5fc2VjX2J1ZmYuQnVmZmVyVHlwZSA9IFNFQ0JVRkZFUl9UT0tFTjsKLSAgICBpbl9zZWNfYnVmZi5wdkJ1ZmZlciAgID0gaW5wdXRfdG9rZW47Ci0gICAgaW5fc2VjX2J1ZmYuY2JCdWZmZXIgICA9IGN1cmx4X3V6dG91bChpbnB1dF90b2tlbl9sZW4pOwotICB9Ci0KLSAgLyogR2VuZXJhdGUgb3VyIG1lc3NhZ2UgKi8KLSAgbmVnX2N0eC0+c3RhdHVzID0gc19wU2VjRm4tPkluaXRpYWxpemVTZWN1cml0eUNvbnRleHQoCi0gICAgbmVnX2N0eC0+Y3JlZGVudGlhbHMsCi0gICAgaW5wdXRfdG9rZW4gPyBuZWdfY3R4LT5jb250ZXh0IDogTlVMTCwKLSAgICBuZWdfY3R4LT5zZXJ2ZXJfbmFtZSwKLSAgICBJU0NfUkVRX0NPTkZJREVOVElBTElUWSwKLSAgICAwLAotICAgIFNFQ1VSSVRZX05BVElWRV9EUkVQLAotICAgIGlucHV0X3Rva2VuID8gJmluX2J1ZmZfZGVzYyA6IE5VTEwsCi0gICAgMCwKLSAgICBuZWdfY3R4LT5jb250ZXh0LAotICAgICZvdXRfYnVmZl9kZXNjLAotICAgICZhdHRycywKLSAgICAmZXhwaXJ5KTsKLQotICBmcmVlKGlucHV0X3Rva2VuKTsKLQotICBpZihHU1NfRVJST1IobmVnX2N0eC0+c3RhdHVzKSkKLSAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKLQotICBpZihuZWdfY3R4LT5zdGF0dXMgPT0gU0VDX0lfQ09NUExFVEVfTkVFREVEIHx8Ci0gICAgIG5lZ19jdHgtPnN0YXR1cyA9PSBTRUNfSV9DT01QTEVURV9BTkRfQ09OVElOVUUpIHsKLSAgICBuZWdfY3R4LT5zdGF0dXMgPSBzX3BTZWNGbi0+Q29tcGxldGVBdXRoVG9rZW4obmVnX2N0eC0+Y29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm91dF9idWZmX2Rlc2MpOwotICAgIGlmKEdTU19FUlJPUihuZWdfY3R4LT5zdGF0dXMpKQotICAgICAgcmV0dXJuIENVUkxFX1JFQ1ZfRVJST1I7Ci0gIH0KLQotICBuZWdfY3R4LT5vdXRwdXRfdG9rZW5fbGVuZ3RoID0gb3V0X3NlY19idWZmLmNiQnVmZmVyOwotCi0gIHJldHVybiBDVVJMRV9PSzsKLX0KLQotQ1VSTGNvZGUgQ3VybF9vdXRwdXRfbmVnb3RpYXRlKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgYm9vbCBwcm94eSkKLXsKLSAgc3RydWN0IG5lZ290aWF0ZWRhdGEgKm5lZ19jdHggPSBwcm94eT8mY29ubi0+ZGF0YS0+c3RhdGUucHJveHluZWc6Ci0gICAgJmNvbm4tPmRhdGEtPnN0YXRlLm5lZ290aWF0ZTsKLSAgY2hhciAqZW5jb2RlZCA9IE5VTEw7Ci0gIHNpemVfdCBsZW4gPSAwOwotICBjaGFyICp1c2VycDsKLSAgQ1VSTGNvZGUgZXJyb3I7Ci0KLSAgZXJyb3IgPSBDdXJsX2Jhc2U2NF9lbmNvZGUoY29ubi0+ZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IGNoYXIqKW5lZ19jdHgtPm91dHB1dF90b2tlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVnX2N0eC0+b3V0cHV0X3Rva2VuX2xlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmVuY29kZWQsICZsZW4pOwotICBpZihlcnJvcikKLSAgICByZXR1cm4gZXJyb3I7Ci0KLSAgaWYoIWxlbikKLSAgICByZXR1cm4gQ1VSTEVfUkVNT1RFX0FDQ0VTU19ERU5JRUQ7Ci0KLSAgdXNlcnAgPSBhcHJpbnRmKCIlc0F1dGhvcml6YXRpb246IE5lZ290aWF0ZSAlc1xyXG4iLCBwcm94eSA/ICJQcm94eS0iIDogIiIsCi0gICAgICAgICAgICAgICAgICBlbmNvZGVkKTsKLQotICBpZihwcm94eSkgewotICAgIEN1cmxfc2FmZWZyZWUoY29ubi0+YWxsb2NwdHIucHJveHl1c2VycHdkKTsKLSAgICBjb25uLT5hbGxvY3B0ci5wcm94eXVzZXJwd2QgPSB1c2VycDsKLSAgfQotICBlbHNlIHsKLSAgICBDdXJsX3NhZmVmcmVlKGNvbm4tPmFsbG9jcHRyLnVzZXJwd2QpOwotICAgIGNvbm4tPmFsbG9jcHRyLnVzZXJwd2QgPSB1c2VycDsKLSAgfQotICBmcmVlKGVuY29kZWQpOwotICByZXR1cm4gKHVzZXJwID09IE5VTEwpID8gQ1VSTEVfT1VUX09GX01FTU9SWSA6IENVUkxFX09LOwotfQotCi1zdGF0aWMgdm9pZCBjbGVhbnVwKHN0cnVjdCBuZWdvdGlhdGVkYXRhICpuZWdfY3R4KQotewotICAvKiBGcmVlIG91ciBzZWN1cml0eSBjb250ZXh0ICovCi0gIGlmKG5lZ19jdHgtPmNvbnRleHQpIHsKLSAgICBzX3BTZWNGbi0+RGVsZXRlU2VjdXJpdHlDb250ZXh0KG5lZ19jdHgtPmNvbnRleHQpOwotICAgIGZyZWUobmVnX2N0eC0+Y29udGV4dCk7Ci0gICAgbmVnX2N0eC0+Y29udGV4dCA9IE5VTEw7Ci0gIH0KLQotICAvKiBGcmVlIG91ciBjcmVkZW50aWFscyBoYW5kbGUgKi8KLSAgaWYobmVnX2N0eC0+Y3JlZGVudGlhbHMpIHsKLSAgICBzX3BTZWNGbi0+RnJlZUNyZWRlbnRpYWxzSGFuZGxlKG5lZ19jdHgtPmNyZWRlbnRpYWxzKTsKLSAgICBmcmVlKG5lZ19jdHgtPmNyZWRlbnRpYWxzKTsKLSAgICBuZWdfY3R4LT5jcmVkZW50aWFscyA9IE5VTEw7Ci0gIH0KLQotICAvKiBGcmVlIG91ciBpZGVudGl0eSAqLwotICBDdXJsX3NzcGlfZnJlZV9pZGVudGl0eShuZWdfY3R4LT5wX2lkZW50aXR5KTsKLSAgbmVnX2N0eC0+cF9pZGVudGl0eSA9IE5VTEw7Ci0KLSAgLyogRnJlZSB0aGUgU1BOIGFuZCBvdXRwdXQgdG9rZW4gKi8KLSAgQ3VybF9zYWZlZnJlZShuZWdfY3R4LT5zZXJ2ZXJfbmFtZSk7Ci0gIEN1cmxfc2FmZWZyZWUobmVnX2N0eC0+b3V0cHV0X3Rva2VuKTsKLQotICAvKiBSZXNldCBhbnkgdmFyaWFibGVzICovCi0gIG5lZ19jdHgtPnRva2VuX21heCA9IDA7Ci19Ci0KLXZvaWQgQ3VybF9jbGVhbnVwX25lZ290aWF0ZShzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSkKLXsKLSAgY2xlYW51cCgmZGF0YS0+c3RhdGUubmVnb3RpYXRlKTsKLSAgY2xlYW51cCgmZGF0YS0+c3RhdGUucHJveHluZWcpOwotfQotCi0jZW5kaWYgLyogIUNVUkxfRElTQUJMRV9IVFRQICYmIFVTRV9TUE5FR08gKi8KLQotI2VuZGlmIC8qIFVTRV9XSU5ET1dTX1NTUEkgKi8KZGlmZiAtLWdpdCBhL2xpYi9jdXJsX250bG0uYyBiL2xpYi9odHRwX250bG0uYwpzaW1pbGFyaXR5IGluZGV4IDg3JQpyZW5hbWUgZnJvbSBsaWIvY3VybF9udGxtLmMKcmVuYW1lIHRvIGxpYi9odHRwX250bG0uYwppbmRleCAxZjNiZGNjLi45MzVkZjI1IDEwMDY0NAotLS0gYS9saWIvY3VybF9udGxtLmMKKysrIGIvbGliL2h0dHBfbnRsbS5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjgsNyArMjgsNyBAQAogICogTlRMTSBkZXRhaWxzOgogICoKICAqIGh0dHA6Ly9kYXZlbnBvcnQuc291cmNlZm9yZ2UubmV0L250bG0uaHRtbAotICogaHR0cDovL3d3dy5pbm5vdmF0aW9uLmNoL2phdmEvbnRsbS5odG1sCisgKiBodHRwczovL3d3dy5pbm5vdmF0aW9uLmNoL2phdmEvbnRsbS5odG1sCiAgKi8KIAogI2RlZmluZSBERUJVR19NRSAwCkBAIC0zNiwxMiArMzYsMTAgQEAKICNpbmNsdWRlICJ1cmxkYXRhLmgiCiAjaW5jbHVkZSAic2VuZGYuaCIKICNpbmNsdWRlICJyYXdzdHIuaCIKLSNpbmNsdWRlICJjdXJsX250bG0uaCIKLSNpbmNsdWRlICJjdXJsX250bG1fbXNncy5oIgorI2luY2x1ZGUgImh0dHBfbnRsbS5oIgogI2luY2x1ZGUgImN1cmxfbnRsbV93Yi5oIgotI2luY2x1ZGUgImN1cmxfc2FzbC5oIgorI2luY2x1ZGUgInZhdXRoL3ZhdXRoLmgiCiAjaW5jbHVkZSAidXJsLmgiCi0jaW5jbHVkZSAiY3VybF9wcmludGYuaCIKIAogI2lmIGRlZmluZWQoVVNFX05TUykKICNpbmNsdWRlICJ2dGxzL25zc2cuaCIKQEAgLTQ5LDcgKzQ3LDggQEAKICNpbmNsdWRlICJjdXJsX3NzcGkuaCIKICNlbmRpZgogCi0vKiBUaGUgbGFzdCAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmU6ICovCisvKiBUaGUgbGFzdCAzICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZSBpbiB0aGlzIG9yZGVyICovCisjaW5jbHVkZSAiY3VybF9wcmludGYuaCIKICNpbmNsdWRlICJjdXJsX21lbW9yeS5oIgogI2luY2x1ZGUgIm1lbWRlYnVnLmgiCiAKQEAgLTc3LDE0ICs3NiwxOCBAQAogICAgICAgaGVhZGVyKys7CiAKICAgICBpZigqaGVhZGVyKSB7Ci0gICAgICByZXN1bHQgPSBDdXJsX3Nhc2xfZGVjb2RlX250bG1fdHlwZTJfbWVzc2FnZShjb25uLT5kYXRhLCBoZWFkZXIsIG50bG0pOworICAgICAgcmVzdWx0ID0gQ3VybF9hdXRoX2RlY29kZV9udGxtX3R5cGUyX21lc3NhZ2UoY29ubi0+ZGF0YSwgaGVhZGVyLCBudGxtKTsKICAgICAgIGlmKHJlc3VsdCkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAogICAgICAgbnRsbS0+c3RhdGUgPSBOVExNU1RBVEVfVFlQRTI7IC8qIFdlIGdvdCBhIHR5cGUtMiBtZXNzYWdlICovCiAgICAgfQogICAgIGVsc2UgewotICAgICAgaWYobnRsbS0+c3RhdGUgPT0gTlRMTVNUQVRFX1RZUEUzKSB7CisgICAgICBpZihudGxtLT5zdGF0ZSA9PSBOVExNU1RBVEVfTEFTVCkgeworICAgICAgICBpbmZvZihjb25uLT5kYXRhLCAiTlRMTSBhdXRoIHJlc3RhcnRlZFxuIik7CisgICAgICAgIEN1cmxfaHR0cF9udGxtX2NsZWFudXAoY29ubik7CisgICAgICB9CisgICAgICBlbHNlIGlmKG50bG0tPnN0YXRlID09IE5UTE1TVEFURV9UWVBFMykgewogICAgICAgICBpbmZvZihjb25uLT5kYXRhLCAiTlRMTSBoYW5kc2hha2UgcmVqZWN0ZWRcbiIpOwogICAgICAgICBDdXJsX2h0dHBfbnRsbV9jbGVhbnVwKGNvbm4pOwogICAgICAgICBudGxtLT5zdGF0ZSA9IE5UTE1TVEFURV9OT05FOwpAQCAtMTY3LDcgKzE3MCw3IEBACiAgIGNhc2UgTlRMTVNUQVRFX1RZUEUxOgogICBkZWZhdWx0OiAvKiBmb3IgdGhlIHdlaXJkIGNhc2VzIHdlIChyZSlzdGFydCBoZXJlICovCiAgICAgLyogQ3JlYXRlIGEgdHlwZS0xIG1lc3NhZ2UgKi8KLSAgICByZXN1bHQgPSBDdXJsX3Nhc2xfY3JlYXRlX250bG1fdHlwZTFfbWVzc2FnZSh1c2VycCwgcGFzc3dkcCwgbnRsbSwgJmJhc2U2NCwKKyAgICByZXN1bHQgPSBDdXJsX2F1dGhfY3JlYXRlX250bG1fdHlwZTFfbWVzc2FnZSh1c2VycCwgcGFzc3dkcCwgbnRsbSwgJmJhc2U2NCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbGVuKTsKICAgICBpZihyZXN1bHQpCiAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTg3LDcgKzE5MCw3IEBACiAKICAgY2FzZSBOVExNU1RBVEVfVFlQRTI6CiAgICAgLyogV2UgYWxyZWFkeSByZWNlaXZlZCB0aGUgdHlwZS0yIG1lc3NhZ2UsIGNyZWF0ZSBhIHR5cGUtMyBtZXNzYWdlICovCi0gICAgcmVzdWx0ID0gQ3VybF9zYXNsX2NyZWF0ZV9udGxtX3R5cGUzX21lc3NhZ2UoY29ubi0+ZGF0YSwgdXNlcnAsIHBhc3N3ZHAsCisgICAgcmVzdWx0ID0gQ3VybF9hdXRoX2NyZWF0ZV9udGxtX3R5cGUzX21lc3NhZ2UoY29ubi0+ZGF0YSwgdXNlcnAsIHBhc3N3ZHAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnRsbSwgJmJhc2U2NCwgJmxlbik7CiAgICAgaWYocmVzdWx0KQogICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTIxMSw2ICsyMTQsOSBAQAogICBjYXNlIE5UTE1TVEFURV9UWVBFMzoKICAgICAvKiBjb25uZWN0aW9uIGlzIGFscmVhZHkgYXV0aGVudGljYXRlZCwKICAgICAgKiBkb24ndCBzZW5kIGEgaGVhZGVyIGluIGZ1dHVyZSByZXF1ZXN0cyAqLworICAgIG50bG0tPnN0YXRlID0gTlRMTVNUQVRFX0xBU1Q7CisgICAgLyogZmFsbC10aHJvdWdoICovCisgIGNhc2UgTlRMTVNUQVRFX0xBU1Q6CiAgICAgQ3VybF9zYWZlZnJlZSgqYWxsb2N1c2VycHdkKTsKICAgICBhdXRocC0+ZG9uZSA9IFRSVUU7CiAgICAgYnJlYWs7CkBAIC0yMjEsOCArMjI3LDggQEAKIAogdm9pZCBDdXJsX2h0dHBfbnRsbV9jbGVhbnVwKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubikKIHsKLSAgQ3VybF9zYXNsX250bG1fY2xlYW51cCgmY29ubi0+bnRsbSk7Ci0gIEN1cmxfc2FzbF9udGxtX2NsZWFudXAoJmNvbm4tPnByb3h5bnRsbSk7CisgIEN1cmxfYXV0aF9udGxtX2NsZWFudXAoJmNvbm4tPm50bG0pOworICBDdXJsX2F1dGhfbnRsbV9jbGVhbnVwKCZjb25uLT5wcm94eW50bG0pOwogCiAjaWYgZGVmaW5lZChOVExNX1dCX0VOQUJMRUQpCiAgIEN1cmxfbnRsbV93Yl9jbGVhbnVwKGNvbm4pOwpkaWZmIC0tZ2l0IGEvbGliL2N1cmxfbnRsbS5oIGIvbGliL2h0dHBfbnRsbS5oCnNpbWlsYXJpdHkgaW5kZXggOTUlCnJlbmFtZSBmcm9tIGxpYi9jdXJsX250bG0uaApyZW5hbWUgdG8gbGliL2h0dHBfbnRsbS5oCmluZGV4IDk0N2VhYzIuLmQxODZiYmUgMTAwNjQ0Ci0tLSBhL2xpYi9jdXJsX250bG0uaAorKysgYi9saWIvaHR0cF9udGxtLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvaHR0cF9wcm94eS5jIGIvbGliL2h0dHBfcHJveHkuYwppbmRleCA1YWI5OTE1Li44MTRjNTcyIDEwMDY0NAotLS0gYS9saWIvaHR0cF9wcm94eS5jCisrKyBiL2xpYi9odHRwX3Byb3h5LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zNSwxMSArMzUsMTEgQEAKICNpbmNsdWRlICJwcm9ncmVzcy5oIgogI2luY2x1ZGUgIm5vbi1hc2NpaS5oIgogI2luY2x1ZGUgImNvbm5lY3QuaCIKLSNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgogI2luY2x1ZGUgImN1cmx4LmgiCiAKKy8qIFRoZSBsYXN0IDMgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlIGluIHRoaXMgb3JkZXIgKi8KKyNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgogI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCi0vKiBUaGUgbGFzdCAjaW5jbHVkZSBmaWxlIHNob3VsZCBiZTogKi8KICNpbmNsdWRlICJtZW1kZWJ1Zy5oIgogCiBDVVJMY29kZSBDdXJsX3Byb3h5X2Nvbm5lY3Qoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKQpAQCAtNDksNiArNDksOCBAQAogICAgIC8qIGZvciBbcHJvdG9jb2xdIHR1bm5lbGVkIHRocm91Z2ggSFRUUCBwcm94eSAqLwogICAgIHN0cnVjdCBIVFRQIGh0dHBfcHJveHk7CiAgICAgdm9pZCAqcHJvdF9zYXZlOworICAgIGNvbnN0IGNoYXIgKmhvc3RuYW1lOworICAgIGludCByZW1vdGVfcG9ydDsKICAgICBDVVJMY29kZSByZXN1bHQ7CiAKICAgICAvKiBCTE9DS0lORyAqLwpAQCAtNjcsOCArNjksMTYgQEAKICAgICBtZW1zZXQoJmh0dHBfcHJveHksIDAsIHNpemVvZihodHRwX3Byb3h5KSk7CiAgICAgY29ubi0+ZGF0YS0+cmVxLnByb3RvcCA9ICZodHRwX3Byb3h5OwogICAgIGNvbm5rZWVwKGNvbm4sICJIVFRQIHByb3h5IENPTk5FQ1QiKTsKLSAgICByZXN1bHQgPSBDdXJsX3Byb3h5Q09OTkVDVChjb25uLCBGSVJTVFNPQ0tFVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uLT5ob3N0Lm5hbWUsIGNvbm4tPnJlbW90ZV9wb3J0KTsKKyAgICBpZihjb25uLT5iaXRzLmNvbm5fdG9faG9zdCkKKyAgICAgIGhvc3RuYW1lID0gY29ubi0+Y29ubl90b19ob3N0Lm5hbWU7CisgICAgZWxzZQorICAgICAgaG9zdG5hbWUgPSBjb25uLT5ob3N0Lm5hbWU7CisgICAgaWYoY29ubi0+Yml0cy5jb25uX3RvX3BvcnQpCisgICAgICByZW1vdGVfcG9ydCA9IGNvbm4tPmNvbm5fdG9fcG9ydDsKKyAgICBlbHNlCisgICAgICByZW1vdGVfcG9ydCA9IGNvbm4tPnJlbW90ZV9wb3J0OworICAgIHJlc3VsdCA9IEN1cmxfcHJveHlDT05ORUNUKGNvbm4sIEZJUlNUU09DS0VULCBob3N0bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdGVfcG9ydCwgRkFMU0UpOwogICAgIGNvbm4tPmRhdGEtPnJlcS5wcm90b3AgPSBwcm90X3NhdmU7CiAgICAgaWYoQ1VSTEVfT0sgIT0gcmVzdWx0KQogICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTg1LDEyICs5NSwxNiBAQAogICogQ3VybF9wcm94eUNPTk5FQ1QoKSByZXF1aXJlcyB0aGF0IHdlJ3JlIGNvbm5lY3RlZCB0byBhIEhUVFAgcHJveHkuIFRoaXMKICAqIGZ1bmN0aW9uIHdpbGwgaXNzdWUgdGhlIG5lY2Vzc2FyeSBjb21tYW5kcyB0byBnZXQgYSBzZWFtbGVzcyB0dW5uZWwgdGhyb3VnaAogICogdGhpcyBwcm94eS4gQWZ0ZXIgdGhhdCwgdGhlIHNvY2tldCBjYW4gYmUgdXNlZCBqdXN0IGFzIGEgbm9ybWFsIHNvY2tldC4KKyAqCisgKiAnYmxvY2tpbmcnIHNldCB0byBUUlVFIG1lYW5zIHRoYXQgdGhpcyBmdW5jdGlvbiB3aWxsIGRvIHRoZSBlbnRpcmUgQ09OTkVDVAorICogKyByZXNwb25zZSBpbiBhIGJsb2NraW5nIGZhc2hpb24uIFNob3VsZCBiZSBhdm9pZGVkIQogICovCiAKIENVUkxjb2RlIEN1cmxfcHJveHlDT05ORUNUKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzb2NraW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpob3N0bmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZW1vdGVfcG9ydCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZW1vdGVfcG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYmxvY2tpbmcpCiB7CiAgIGludCBzdWJ2ZXJzaW9uPTA7CiAgIHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhPWNvbm4tPmRhdGE7CkBAIC0xNDYsMTMgKzE2MCwxNyBAQAogCiAgICAgICBpZighcmVzdWx0KSB7CiAgICAgICAgIGNoYXIgKmhvc3Q9KGNoYXIgKikiIjsKLSAgICAgICAgY29uc3QgY2hhciAqcHJveHljb25uPSIiOwogICAgICAgICBjb25zdCBjaGFyICp1c2VyYWdlbnQ9IiI7CiAgICAgICAgIGNvbnN0IGNoYXIgKmh0dHAgPSAoY29ubi0+cHJveHl0eXBlID09IENVUkxQUk9YWV9IVFRQXzFfMCkgPwogICAgICAgICAgICIxLjAiIDogIjEuMSI7Ci0gICAgICAgIGNoYXIgKmhvc3RoZWFkZXI9IC8qIGhvc3Q6cG9ydCB3aXRoIElQdjYgc3VwcG9ydCAqLwotICAgICAgICAgIGFwcmludGYoIiVzJXMlczolaHUiLCBjb25uLT5iaXRzLmlwdjZfaXA/IlsiOiIiLAotICAgICAgICAgICAgICAgICAgaG9zdG5hbWUsIGNvbm4tPmJpdHMuaXB2Nl9pcD8iXSI6IiIsCisgICAgICAgIGJvb2wgaXB2Nl9pcCA9IGNvbm4tPmJpdHMuaXB2Nl9pcDsKKyAgICAgICAgY2hhciAqaG9zdGhlYWRlcjsKKworICAgICAgICAvKiB0aGUgaG9zdG5hbWUgbWF5IGJlIGRpZmZlcmVudCAqLworICAgICAgICBpZihob3N0bmFtZSAhPSBjb25uLT5ob3N0Lm5hbWUpCisgICAgICAgICAgaXB2Nl9pcCA9IChzdHJjaHIoaG9zdG5hbWUsICc6JykgIT0gTlVMTCk7CisgICAgICAgIGhvc3RoZWFkZXI9IC8qIGhvc3Q6cG9ydCB3aXRoIElQdjYgc3VwcG9ydCAqLworICAgICAgICAgIGFwcmludGYoIiVzJXMlczolaHUiLCBpcHY2X2lwPyJbIjoiIiwgaG9zdG5hbWUsIGlwdjZfaXA/Il0iOiIiLAogICAgICAgICAgICAgICAgICAgcmVtb3RlX3BvcnQpOwogICAgICAgICBpZighaG9zdGhlYWRlcikgewogICAgICAgICAgIEN1cmxfYWRkX2J1ZmZlcl9mcmVlKHJlcV9idWZmZXIpOwpAQCAtMTY3LDkgKzE4NSw2IEBACiAgICAgICAgICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgaWYoIUN1cmxfY2hlY2tQcm94eWhlYWRlcnMoY29ubiwgIlByb3h5LUNvbm5lY3Rpb246IikpCi0gICAgICAgICAgcHJveHljb25uID0gIlByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmVcclxuIjsKLQogICAgICAgICBpZighQ3VybF9jaGVja1Byb3h5aGVhZGVycyhjb25uLCAiVXNlci1BZ2VudDoiKSAmJgogICAgICAgICAgICBkYXRhLT5zZXQuc3RyW1NUUklOR19VU0VSQUdFTlRdKQogICAgICAgICAgIHVzZXJhZ2VudCA9IGNvbm4tPmFsbG9jcHRyLnVhZ2VudDsKQEAgLTE3OSwxNSArMTk0LDEzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ09OTkVDVCAlcyBIVFRQLyVzXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlcyIgIC8qIEhvc3Q6ICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMiICAvKiBQcm94eS1BdXRob3JpemF0aW9uICovCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMiICAvKiBVc2VyLUFnZW50ICovCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMiLCAvKiBQcm94eS1Db25uZWN0aW9uICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMiLCAvKiBVc2VyLUFnZW50ICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3N0aGVhZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaHR0cCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uLT5hbGxvY3B0ci5wcm94eXVzZXJwd2Q/CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uLT5hbGxvY3B0ci5wcm94eXVzZXJwd2Q6IiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyYWdlbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBwcm94eWNvbm4pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcmFnZW50KTsKIAogICAgICAgICBpZihob3N0ICYmICpob3N0KQogICAgICAgICAgIGZyZWUoaG9zdCk7CkBAIC0yMjUsMTIgKzIzOCwxNCBAQAogICAgICAgcmV0dXJuIENVUkxFX1JFQ1ZfRVJST1I7CiAgICAgfQogCi0gICAgaWYoMCA9PSBDdXJsX3NvY2tldF9yZWFkeSh0dW5uZWxzb2NrZXQsIENVUkxfU09DS0VUX0JBRCwgMCkpCi0gICAgICAvKiByZXR1cm4gc28gd2UnbGwgYmUgY2FsbGVkIGFnYWluIHBvbGxpbmctc3R5bGUgKi8KLSAgICAgIHJldHVybiBDVVJMRV9PSzsKLSAgICBlbHNlIHsKLSAgICAgIERFQlVHRihpbmZvZihkYXRhLAotICAgICAgICAgICAgICAgICAgICJSZWFkIHJlc3BvbnNlIGltbWVkaWF0ZWx5IGZyb20gcHJveHkgQ09OTkVDVFxuIikpOworICAgIGlmKCFibG9ja2luZykgeworICAgICAgaWYoMCA9PSBDdXJsX3NvY2tldF9yZWFkeSh0dW5uZWxzb2NrZXQsIENVUkxfU09DS0VUX0JBRCwgMCkpCisgICAgICAgIC8qIHJldHVybiBzbyB3ZSdsbCBiZSBjYWxsZWQgYWdhaW4gcG9sbGluZy1zdHlsZSAqLworICAgICAgICByZXR1cm4gQ1VSTEVfT0s7CisgICAgICBlbHNlIHsKKyAgICAgICAgREVCVUdGKGluZm9mKGRhdGEsCisgICAgICAgICAgICAgICAiUmVhZCByZXNwb25zZSBpbW1lZGlhdGVseSBmcm9tIHByb3h5IENPTk5FQ1RcbiIpKTsKKyAgICAgIH0KICAgICB9CiAKICAgICAvKiBhdCB0aGlzIHBvaW50LCB0aGUgdHVubmVsX2Nvbm5lY3RpbmcgcGhhc2UgaXMgb3Zlci4gKi8KZGlmZiAtLWdpdCBhL2xpYi9odHRwX3Byb3h5LmggYi9saWIvaHR0cF9wcm94eS5oCmluZGV4IDJiNWU5YzkuLmZkMDQzMzAgMTAwNjQ0Ci0tLSBhL2xpYi9odHRwX3Byb3h5LmgKKysrIGIvbGliL2h0dHBfcHJveHkuaApAQCAtNywxMSArNywxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTI2LDcgKzI2LDggQEAKIC8qIGZ0cCBjYW4gdXNlIHRoaXMgYXMgd2VsbCAqLwogQ1VSTGNvZGUgQ3VybF9wcm94eUNPTk5FQ1Qoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHR1bm5lbHNvY2tldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmhvc3RuYW1lLCBpbnQgcmVtb3RlX3BvcnQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqaG9zdG5hbWUsIGludCByZW1vdGVfcG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYmxvY2tpbmcpOwogCiAvKiBEZWZhdWx0IHByb3h5IHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzICovCiAjZGVmaW5lIFBST1hZX1RJTUVPVVQgKDM2MDAqMTAwMCkKQEAgLTM0LDcgKzM1LDcgQEAKIENVUkxjb2RlIEN1cmxfcHJveHlfY29ubmVjdChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pOwogCiAjZWxzZQotI2RlZmluZSBDdXJsX3Byb3h5Q09OTkVDVCh4LHkseix3KSBDVVJMRV9OT1RfQlVJTFRfSU4KKyNkZWZpbmUgQ3VybF9wcm94eUNPTk5FQ1QoeCx5LHosdyx2KSBDVVJMRV9OT1RfQlVJTFRfSU4KICNkZWZpbmUgQ3VybF9wcm94eV9jb25uZWN0KHgpIENVUkxFX09LCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvbGliL2lkbl93aW4zMi5jIGIvbGliL2lkbl93aW4zMi5jCmluZGV4IGIzNjk3MjMuLjhkYzMwMGIgMTAwNjQ0Ci0tLSBhL2xpYi9pZG5fd2luMzIuYworKysgYi9saWIvaWRuX3dpbjMyLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yOSw5ICsyOSwxMCBAQAogI2lmZGVmIFVTRV9XSU4zMl9JRE4KIAogI2luY2x1ZGUgImN1cmxfbXVsdGlieXRlLmgiCi0KICNpbmNsdWRlICJjdXJsX21lbW9yeS5oIgotLyogVGhlIGxhc3QgI2luY2x1ZGUgZmlsZSBzaG91bGQgYmU6ICovCisjaW5jbHVkZSAid2Fybmxlc3MuaCIKKworICAvKiBUaGUgbGFzdCAjaW5jbHVkZSBmaWxlIHNob3VsZCBiZTogKi8KICNpbmNsdWRlICJtZW1kZWJ1Zy5oIgogCiAjaWZkZWYgV0FOVF9JRE5fUFJPVE9UWVBFUwpAQCAtNjQsNDUgKzY1LDQ3IEBACiAKICNkZWZpbmUgSUROX01BWF9MRU5HVEggMjU1CiAKLWludCBjdXJsX3dpbjMyX2lkbl90b19hc2NpaShjb25zdCBjaGFyICppbiwgY2hhciAqKm91dCk7Ci1pbnQgY3VybF93aW4zMl9hc2NpaV90b19pZG4oY29uc3QgY2hhciAqaW4sIHNpemVfdCBpbl9sZW4sIGNoYXIgKipvdXRfdXRmOCk7Citib29sIGN1cmxfd2luMzJfaWRuX3RvX2FzY2lpKGNvbnN0IGNoYXIgKmluLCBjaGFyICoqb3V0KTsKK2Jvb2wgY3VybF93aW4zMl9hc2NpaV90b19pZG4oY29uc3QgY2hhciAqaW4sIGNoYXIgKipvdXQpOwogCi1pbnQgY3VybF93aW4zMl9pZG5fdG9fYXNjaWkoY29uc3QgY2hhciAqaW4sIGNoYXIgKipvdXQpCitib29sIGN1cmxfd2luMzJfaWRuX3RvX2FzY2lpKGNvbnN0IGNoYXIgKmluLCBjaGFyICoqb3V0KQogeworICBib29sIHN1Y2Nlc3MgPSBGQUxTRTsKKwogICB3Y2hhcl90ICppbl93ID0gQ3VybF9jb252ZXJ0X1VURjhfdG9fd2NoYXIoaW4pOwogICBpZihpbl93KSB7CiAgICAgd2NoYXJfdCBwdW55Y29kZVtJRE5fTUFYX0xFTkdUSF07Ci0gICAgaWYoSWRuVG9Bc2NpaSgwLCBpbl93LCAtMSwgcHVueWNvZGUsIElETl9NQVhfTEVOR1RIKSA9PSAwKSB7Ci0gICAgICB3cHJpbnRmKEwiRVJST1IgJWQgY29udmVydGluZyB0byBQdW55Y29kZVxuIiwgR2V0TGFzdEVycm9yKCkpOwotICAgICAgZnJlZShpbl93KTsKLSAgICAgIHJldHVybiAwOwotICAgIH0KKyAgICBpbnQgY2hhcnMgPSBJZG5Ub0FzY2lpKDAsIGluX3csIC0xLCBwdW55Y29kZSwgSUROX01BWF9MRU5HVEgpOwogICAgIGZyZWUoaW5fdyk7Ci0KLSAgICAqb3V0ID0gQ3VybF9jb252ZXJ0X3djaGFyX3RvX1VURjgocHVueWNvZGUpOwotICAgIGlmKCEqb3V0KQotICAgICAgcmV0dXJuIDA7CisgICAgaWYoY2hhcnMpIHsKKyAgICAgICpvdXQgPSBDdXJsX2NvbnZlcnRfd2NoYXJfdG9fVVRGOChwdW55Y29kZSk7CisgICAgICBpZigqb3V0KQorICAgICAgICBzdWNjZXNzID0gVFJVRTsKKyAgICB9CiAgIH0KLSAgcmV0dXJuIDE7CisKKyAgcmV0dXJuIHN1Y2Nlc3M7CiB9CiAKLWludCBjdXJsX3dpbjMyX2FzY2lpX3RvX2lkbihjb25zdCBjaGFyICppbiwgc2l6ZV90IGluX2xlbiwgY2hhciAqKm91dF91dGY4KQorYm9vbCBjdXJsX3dpbjMyX2FzY2lpX3RvX2lkbihjb25zdCBjaGFyICppbiwgY2hhciAqKm91dCkKIHsKLSAgKHZvaWQpaW5fbGVuOyAvKiB1bnVzZWQgKi8KLSAgaWYoaW4pIHsKLSAgICBXQ0hBUiB1bmljb2RlW0lETl9NQVhfTEVOR1RIXTsKKyAgYm9vbCBzdWNjZXNzID0gRkFMU0U7CiAKLSAgICBpZihJZG5Ub1VuaWNvZGUoMCwgKHdjaGFyX3QgKilpbiwgLTEsIHVuaWNvZGUsIElETl9NQVhfTEVOR1RIKSA9PSAwKSB7Ci0gICAgICB3cHJpbnRmKEwiRVJST1IgJWQgY29udmVydGluZyB0byBQdW55Y29kZVxuIiwgR2V0TGFzdEVycm9yKCkpOwotICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgKm91dF91dGY4ID0gQ3VybF9jb252ZXJ0X3djaGFyX3RvX1VURjgodW5pY29kZSk7Ci0gICAgICBpZighKm91dF91dGY4KQotICAgICAgICByZXR1cm4gMDsKKyAgd2NoYXJfdCAqaW5fdyA9IEN1cmxfY29udmVydF9VVEY4X3RvX3djaGFyKGluKTsKKyAgaWYoaW5fdykgeworICAgIHNpemVfdCBpbl9sZW4gPSB3Y3NsZW4oaW5fdykgKyAxOworICAgIHdjaGFyX3QgdW5pY29kZVtJRE5fTUFYX0xFTkdUSF07CisgICAgaW50IGNoYXJzID0gSWRuVG9Vbmljb2RlKDAsIGluX3csIGN1cmx4X3V6dG9zaShpbl9sZW4pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmljb2RlLCBJRE5fTUFYX0xFTkdUSCk7CisgICAgZnJlZShpbl93KTsKKyAgICBpZihjaGFycykgeworICAgICAgKm91dCA9IEN1cmxfY29udmVydF93Y2hhcl90b19VVEY4KHVuaWNvZGUpOworICAgICAgaWYoKm91dCkKKyAgICAgICAgc3VjY2VzcyA9IFRSVUU7CiAgICAgfQogICB9Ci0gIHJldHVybiAxOworCisgIHJldHVybiBzdWNjZXNzOwogfQogCiAjZW5kaWYgLyogVVNFX1dJTjMyX0lETiAqLwpkaWZmIC0tZ2l0IGEvbGliL2lmMmlwLmMgYi9saWIvaWYyaXAuYwppbmRleCA2ZTZmOTY5Li4yZjkyYjJkIDEwMDY0NAotLS0gYS9saWIvaWYyaXAuYworKysgYi9saWIvaWYyaXAuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTUzLDEwICs1Myw5IEBACiAjaW5jbHVkZSAiaW5ldF9udG9wLmgiCiAjaW5jbHVkZSAic3RyZXF1YWwuaCIKICNpbmNsdWRlICJpZjJpcC5oIgorLyogVGhlIGxhc3QgMyAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmUgaW4gdGhpcyBvcmRlciAqLwogI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCi0KICNpbmNsdWRlICJjdXJsX21lbW9yeS5oIgotLyogVGhlIGxhc3QgI2luY2x1ZGUgZmlsZSBzaG91bGQgYmU6ICovCiAjaW5jbHVkZSAibWVtZGVidWcuaCIKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCkBAIC02OCw3ICs2Nyw3IEBACiAgICh2b2lkKSBzYTsKICNlbHNlCiAgIGlmKHNhLT5zYV9mYW1pbHkgPT0gQUZfSU5FVDYpIHsKLSAgICBjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW42ICogc2E2ID0gKGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbjYgKikgc2E7CisgICAgY29uc3Qgc3RydWN0IHNvY2thZGRyX2luNiAqIHNhNiA9IChjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW42ICopKHZvaWQgKikgc2E7CiAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqIGIgPSBzYTYtPnNpbjZfYWRkci5zNl9hZGRyOwogICAgIHVuc2lnbmVkIHNob3J0IHcgPSAodW5zaWduZWQgc2hvcnQpICgoYlswXSA8PCA4KSB8IGJbMV0pOwogCkBAIC0xNTIsMTEgKzE1MSwxMiBAQAogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgYWRkciA9ICYoKHN0cnVjdCBzb2NrYWRkcl9pbjYgKilpZmFjZS0+aWZhX2FkZHIpLT5zaW42X2FkZHI7CisgICAgICAgICAgICAgIGFkZHIgPQorICAgICAgICAgICAgICAgICYoKHN0cnVjdCBzb2NrYWRkcl9pbjYgKikodm9pZCAqKWlmYWNlLT5pZmFfYWRkciktPnNpbjZfYWRkcjsKICNpZmRlZiBIQVZFX1NPQ0tBRERSX0lONl9TSU42X1NDT1BFX0lECiAgICAgICAgICAgICAgIC8qIEluY2x1ZGUgdGhlIHNjb3BlIG9mIHRoaXMgaW50ZXJmYWNlIGFzIHBhcnQgb2YgdGhlIGFkZHJlc3MgKi8KLSAgICAgICAgICAgICAgc2NvcGVpZCA9Ci0gICAgICAgICAgICAgICAgKChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopaWZhY2UtPmlmYV9hZGRyKS0+c2luNl9zY29wZV9pZDsKKyAgICAgICAgICAgICAgc2NvcGVpZCA9ICgoc3RydWN0IHNvY2thZGRyX2luNiAqKSh2b2lkICopaWZhY2UtPmlmYV9hZGRyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+c2luNl9zY29wZV9pZDsKIAogICAgICAgICAgICAgICAvKiBJZiBnaXZlbiwgc2NvcGUgaWQgc2hvdWxkIG1hdGNoLiAqLwogICAgICAgICAgICAgICBpZihyZW1vdGVfc2NvcGVfaWQgJiYgc2NvcGVpZCAhPSByZW1vdGVfc2NvcGVfaWQpIHsKQEAgLTE3MSw3ICsxNzEsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQogI2VuZGlmCi0gICAgICAgICAgICAgIGFkZHIgPSAmKChzdHJ1Y3Qgc29ja2FkZHJfaW4gKilpZmFjZS0+aWZhX2FkZHIpLT5zaW5fYWRkcjsKKyAgICAgICAgICAgICAgYWRkciA9CisgICAgICAgICAgICAgICAgICAmKChzdHJ1Y3Qgc29ja2FkZHJfaW4gKikodm9pZCAqKWlmYWNlLT5pZmFfYWRkciktPnNpbl9hZGRyOwogICAgICAgICAgICAgcmVzID0gSUYySVBfRk9VTkQ7CiAgICAgICAgICAgICBpcCA9IChjaGFyICopIEN1cmxfaW5ldF9udG9wKGFmLCBhZGRyLCBpcHN0ciwgc2l6ZW9mKGlwc3RyKSk7CiAgICAgICAgICAgICBzbnByaW50ZihidWYsIGJ1Zl9zaXplLCAiJXMlcyIsIGlwLCBzY29wZSk7CmRpZmYgLS1naXQgYS9saWIvaWYyaXAuaCBiL2xpYi9pZjJpcC5oCmluZGV4IDc4YmIwYmQuLmYzYTdmZjAgMTAwNjQ0Ci0tLSBhL2xpYi9pZjJpcC5oCisrKyBiL2xpYi9pZjJpcC5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL2ltYXAuYyBiL2xpYi9pbWFwLmMKaW5kZXggZTZkODNmMi4uMTZiYTQwMiAxMDA2NDQKLS0tIGEvbGliL2ltYXAuYworKysgYi9saWIvaW1hcC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtODAsMTAgKzgwLDEwIEBACiAjaW5jbHVkZSAicmF3c3RyLmgiCiAjaW5jbHVkZSAiY3VybF9zYXNsLmgiCiAjaW5jbHVkZSAid2Fybmxlc3MuaCIKLSNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgogCisvKiBUaGUgbGFzdCAzICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZSBpbiB0aGlzIG9yZGVyICovCisjaW5jbHVkZSAiY3VybF9wcmludGYuaCIKICNpbmNsdWRlICJjdXJsX21lbW9yeS5oIgotLyogVGhlIGxhc3QgI2luY2x1ZGUgZmlsZSBzaG91bGQgYmU6ICovCiAjaW5jbHVkZSAibWVtZGVidWcuaCIKIAogLyogTG9jYWwgQVBJIGZ1bmN0aW9ucyAqLwpAQCAtOTgsNyArOTgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgaW50IG51bXNvY2tzKTsKIHN0YXRpYyBDVVJMY29kZSBpbWFwX2RvaW5nKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgYm9vbCAqZG9waGFzZV9kb25lKTsKIHN0YXRpYyBDVVJMY29kZSBpbWFwX3NldHVwX2Nvbm5lY3Rpb24oc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKTsKLXN0YXRpYyBjaGFyICppbWFwX2F0b20oY29uc3QgY2hhciAqc3RyKTsKK3N0YXRpYyBjaGFyICppbWFwX2F0b20oY29uc3QgY2hhciAqc3RyLCBib29sIGVzY2FwZV9vbmx5KTsKIHN0YXRpYyBDVVJMY29kZSBpbWFwX3NlbmRmKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgY29uc3QgY2hhciAqZm10LCAuLi4pOwogc3RhdGljIENVUkxjb2RlIGltYXBfcGFyc2VfdXJsX29wdGlvbnMoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKTsKIHN0YXRpYyBDVVJMY29kZSBpbWFwX3BhcnNlX3VybF9wYXRoKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubik7CkBAIC0yMjcsNyArMjI3LDExIEBACiAjaWZkZWYgVVNFX1NTTAogc3RhdGljIHZvaWQgaW1hcF90b19pbWFwcyhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pCiB7CisgIC8qIENoYW5nZSB0aGUgY29ubmVjdGlvbiBoYW5kbGVyICovCiAgIGNvbm4tPmhhbmRsZXIgPSAmQ3VybF9oYW5kbGVyX2ltYXBzOworCisgIC8qIFNldCB0aGUgY29ubmVjdGlvbidzIHVwZ3JhZGVkIHRvIFRMUyBmbGFnICovCisgIGNvbm4tPnRsc191cGdyYWRlZCA9IFRSVUU7CiB9CiAjZWxzZQogI2RlZmluZSBpbWFwX3RvX2ltYXBzKHgpIEN1cmxfbm9wX3N0bXQKQEAgLTM2MCw4ICszNjQsOCBAQAogICAgICBhIHNwYWNlIGFuZCBvcHRpb25hbGx5IHNvbWUgdGV4dCBhcyBwZXIgUkZDLTM1MDEgZm9yIHRoZSBBVVRIRU5USUNBVEUgYW5kCiAgICAgIEFQUEVORCBjb21tYW5kcyBhbmQgYXMgb3V0bGluZWQgaW4gU2VjdGlvbiA0LiBFeGFtcGxlcyBvZiBSRkMtNDk1OSBidXQKICAgICAgc29tZSBlLW1haWwgc2VydmVycyBpZ25vcmUgdGhpcyBhbmQgb25seSBzZW5kIGEgc2luZ2xlICsgaW5zdGVhZC4gKi8KLSAgaWYoKGxlbiA9PSAzICYmICFtZW1jbXAoIisiLCBsaW5lLCAxKSkgfHwKLSAgICAgKGxlbiA+PSAyICYmICFtZW1jbXAoIisgIiwgbGluZSwgMikpKSB7CisgIGlmKGltYXAgJiYgIWltYXAtPmN1c3RvbSAmJiAoKGxlbiA9PSAzICYmICFtZW1jbXAoIisiLCBsaW5lLCAxKSkgfHwKKyAgICAgKGxlbiA+PSAyICYmICFtZW1jbXAoIisgIiwgbGluZSwgMikpKSkgewogICAgIHN3aXRjaChpbWFwYy0+c3RhdGUpIHsKICAgICAgIC8qIFN0YXRlcyB3aGljaCBhcmUgaW50ZXJlc3RlZCBpbiBjb250aW51YXRpb24gcmVzcG9uc2VzICovCiAgICAgICBjYXNlIElNQVBfQVVUSEVOVElDQVRFOgpAQCAtNTQwLDggKzU0NCw4IEBACiAgIH0KIAogICAvKiBNYWtlIHN1cmUgdGhlIHVzZXJuYW1lIGFuZCBwYXNzd29yZCBhcmUgaW4gdGhlIGNvcnJlY3QgYXRvbSBmb3JtYXQgKi8KLSAgdXNlciA9IGltYXBfYXRvbShjb25uLT51c2VyKTsKLSAgcGFzc3dkID0gaW1hcF9hdG9tKGNvbm4tPnBhc3N3ZCk7CisgIHVzZXIgPSBpbWFwX2F0b20oY29ubi0+dXNlciwgZmFsc2UpOworICBwYXNzd2QgPSBpbWFwX2F0b20oY29ubi0+cGFzc3dkLCBmYWxzZSk7CiAKICAgLyogU2VuZCB0aGUgTE9HSU4gY29tbWFuZCAqLwogICByZXN1bHQgPSBpbWFwX3NlbmRmKGNvbm4sICJMT0dJTiAlcyAlcyIsIHVzZXIgPyB1c2VyIDogIiIsCkBAIC02NTMsOCArNjU3LDggQEAKICAgICByZXN1bHQgPSBpbWFwX3NlbmRmKGNvbm4sICIlcyVzIiwgaW1hcC0+Y3VzdG9tLAogICAgICAgICAgICAgICAgICAgICAgICAgaW1hcC0+Y3VzdG9tX3BhcmFtcyA/IGltYXAtPmN1c3RvbV9wYXJhbXMgOiAiIik7CiAgIGVsc2UgewotICAgIC8qIE1ha2Ugc3VyZSB0aGUgbWFpbGJveCBpcyBpbiB0aGUgY29ycmVjdCBhdG9tIGZvcm1hdCAqLwotICAgIG1haWxib3ggPSBpbWFwX2F0b20oaW1hcC0+bWFpbGJveCA/IGltYXAtPm1haWxib3ggOiAiIik7CisgICAgLyogTWFrZSBzdXJlIHRoZSBtYWlsYm94IGlzIGluIHRoZSBjb3JyZWN0IGF0b20gZm9ybWF0IGlmIG5lY2Vzc2FyeSAqLworICAgIG1haWxib3ggPSBpbWFwLT5tYWlsYm94ID8gaW1hcF9hdG9tKGltYXAtPm1haWxib3gsIHRydWUpIDogc3RyZHVwKCIiKTsKICAgICBpZighbWFpbGJveCkKICAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwogCkBAIC02OTUsNyArNjk5LDcgQEAKICAgfQogCiAgIC8qIE1ha2Ugc3VyZSB0aGUgbWFpbGJveCBpcyBpbiB0aGUgY29ycmVjdCBhdG9tIGZvcm1hdCAqLwotICBtYWlsYm94ID0gaW1hcF9hdG9tKGltYXAtPm1haWxib3gpOworICBtYWlsYm94ID0gaW1hcF9hdG9tKGltYXAtPm1haWxib3gsIGZhbHNlKTsKICAgaWYoIW1haWxib3gpCiAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CiAKQEAgLTc2OSw3ICs3NzMsNyBAQAogICB9CiAKICAgLyogTWFrZSBzdXJlIHRoZSBtYWlsYm94IGlzIGluIHRoZSBjb3JyZWN0IGF0b20gZm9ybWF0ICovCi0gIG1haWxib3ggPSBpbWFwX2F0b20oaW1hcC0+bWFpbGJveCk7CisgIG1haWxib3ggPSBpbWFwX2F0b20oaW1hcC0+bWFpbGJveCwgZmFsc2UpOwogICBpZighbWFpbGJveCkKICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKIApAQCAtOTA2LDggKzkxMCw4IEBACiAgICAgICAgIHdvcmRsZW4gLT0gNTsKIAogICAgICAgICAvKiBUZXN0IHRoZSB3b3JkIGZvciBhIG1hdGNoaW5nIGF1dGhlbnRpY2F0aW9uIG1lY2hhbmlzbSAqLwotICAgICAgICBpZigobWVjaGJpdCA9IEN1cmxfc2FzbF9kZWNvZGVfbWVjaChsaW5lLCB3b3JkbGVuLCAmbGxlbikpICYmCi0gICAgICAgICAgIGxsZW4gPT0gd29yZGxlbikKKyAgICAgICAgbWVjaGJpdCA9IEN1cmxfc2FzbF9kZWNvZGVfbWVjaChsaW5lLCB3b3JkbGVuLCAmbGxlbik7CisgICAgICAgIGlmKG1lY2hiaXQgJiYgbGxlbiA9PSB3b3JkbGVuKQogICAgICAgICAgIGltYXBjLT5zYXNsLmF1dGhtZWNocyB8PSBtZWNoYml0OwogICAgICAgfQogCkBAIC0xMDE2LDkgKzEwMjAsMTAgQEAKICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotLyogRm9yIExJU1QgcmVzcG9uc2VzICovCi1zdGF0aWMgQ1VSTGNvZGUgaW1hcF9zdGF0ZV9saXN0X3Jlc3Aoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBpbnQgaW1hcGNvZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hcHN0YXRlIGluc3RhdGUpCisvKiBGb3IgTElTVCBhbmQgU0VBUkNIIHJlc3BvbnNlcyAqLworc3RhdGljIENVUkxjb2RlIGltYXBfc3RhdGVfbGlzdHNlYXJjaF9yZXNwKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW1hcGNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hcHN0YXRlIGluc3RhdGUpCiB7CiAgIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOwogICBjaGFyICpsaW5lID0gY29ubi0+ZGF0YS0+c3RhdGUuYnVmZmVyOwpAQCAtMTA5OCw3ICsxMTAzLDcgQEAKICAgc3RydWN0IHBpbmdwb25nICpwcCA9ICZpbWFwYy0+cHA7CiAgIGNvbnN0IGNoYXIgKnB0ciA9IGRhdGEtPnN0YXRlLmJ1ZmZlcjsKICAgYm9vbCBwYXJzZWQgPSBGQUxTRTsKLSAgY3VybF9vZmZfdCBzaXplOworICBjdXJsX29mZl90IHNpemUgPSAwOwogCiAgICh2b2lkKWluc3RhdGU7IC8qIG5vIHVzZSBmb3IgdGhpcyB5ZXQgKi8KIApAQCAtMTI0NSwzMSArMTI1MCw2IEBACiAgIHJldHVybiByZXN1bHQ7CiB9CiAKLS8qIEZvciBTRUFSQ0ggcmVzcG9uc2VzICovCi1zdGF0aWMgQ1VSTGNvZGUgaW1hcF9zdGF0ZV9zZWFyY2hfcmVzcChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGludCBpbWFwY29kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYXBzdGF0ZSBpbnN0YXRlKQotewotICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKLSAgY2hhciAqbGluZSA9IGNvbm4tPmRhdGEtPnN0YXRlLmJ1ZmZlcjsKLSAgc2l6ZV90IGxlbiA9IHN0cmxlbihsaW5lKTsKLQotICAodm9pZClpbnN0YXRlOyAvKiBObyB1c2UgZm9yIHRoaXMgeWV0ICovCi0KLSAgaWYoaW1hcGNvZGUgPT0gJyonKSB7Ci0gICAgLyogVGVtcG9yYXJpbHkgYWRkIHRoZSBMRiBjaGFyYWN0ZXIgYmFjayBhbmQgc2VuZCBhcyBib2R5IHRvIHRoZSBjbGllbnQgKi8KLSAgICBsaW5lW2xlbl0gPSAnXG4nOwotICAgIHJlc3VsdCA9IEN1cmxfY2xpZW50X3dyaXRlKGNvbm4sIENMSUVOVFdSSVRFX0JPRFksIGxpbmUsIGxlbiArIDEpOwotICAgIGxpbmVbbGVuXSA9ICdcMCc7Ci0gIH0KLSAgZWxzZSBpZihpbWFwY29kZSAhPSAnTycpCi0gICAgcmVzdWx0ID0gQ1VSTEVfUVVPVEVfRVJST1I7IC8qIFRPRE86IEZpeCBlcnJvciBjb2RlICovCi0gIGVsc2UKLSAgICAvKiBFbmQgb2YgRE8gcGhhc2UgKi8KLSAgICBzdGF0ZShjb25uLCBJTUFQX1NUT1ApOwotCi0gIHJldHVybiByZXN1bHQ7Ci19Ci0KIHN0YXRpYyBDVVJMY29kZSBpbWFwX3N0YXRlbWFjaF9hY3Qoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKQogewogICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKQEAgLTEzMjMsNyArMTMwMyw3IEBACiAgICAgICBicmVhazsKIAogICAgIGNhc2UgSU1BUF9MSVNUOgotICAgICAgcmVzdWx0ID0gaW1hcF9zdGF0ZV9saXN0X3Jlc3AoY29ubiwgaW1hcGNvZGUsIGltYXBjLT5zdGF0ZSk7CisgICAgICByZXN1bHQgPSBpbWFwX3N0YXRlX2xpc3RzZWFyY2hfcmVzcChjb25uLCBpbWFwY29kZSwgaW1hcGMtPnN0YXRlKTsKICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBJTUFQX1NFTEVDVDoKQEAgLTEzNDcsNyArMTMyNyw3IEBACiAgICAgICBicmVhazsKIAogICAgIGNhc2UgSU1BUF9TRUFSQ0g6Ci0gICAgICByZXN1bHQgPSBpbWFwX3N0YXRlX3NlYXJjaF9yZXNwKGNvbm4sIGltYXBjb2RlLCBpbWFwYy0+c3RhdGUpOworICAgICAgcmVzdWx0ID0gaW1hcF9zdGF0ZV9saXN0c2VhcmNoX3Jlc3AoY29ubiwgaW1hcGNvZGUsIGltYXBjLT5zdGF0ZSk7CiAgICAgICBicmVhazsKIAogICAgIGNhc2UgSU1BUF9MT0dPVVQ6CkBAIC0xNDgyLDEwICsxNDYyLDYgQEAKICAgKHZvaWQpcHJlbWF0dXJlOwogCiAgIGlmKCFpbWFwKQotICAgIC8qIFdoZW4gdGhlIGVhc3kgaGFuZGxlIGlzIHJlbW92ZWQgZnJvbSB0aGUgbXVsdGkgaW50ZXJmYWNlIHdoaWxlIGxpYmN1cmwKLSAgICAgICBpcyBzdGlsbCB0cnlpbmcgdG8gcmVzb2x2ZSB0aGUgaG9zdCBuYW1lLCB0aGUgSU1BUCBzdHJ1Y3QgaXMgbm90IHlldAotICAgICAgIGluaXRpYWxpemVkLiBIb3dldmVyLCB0aGUgcmVtb3ZhbCBhY3Rpb24gY2FsbHMgQ3VybF9kb25lKCkgd2hpY2ggaW4KLSAgICAgICB0dXJuIGNhbGxzIHRoaXMgZnVuY3Rpb24sIHNvIHdlIHNpbXBseSByZXR1cm4gc3VjY2Vzcy4gKi8KICAgICByZXR1cm4gQ1VSTEVfT0s7CiAKICAgaWYoc3RhdHVzKSB7CkBAIC0xNTA4LDggKzE0ODQsNyBAQAogCiAgICAgICAgVE9ETzogd2hlbiB0aGUgbXVsdGkgaW50ZXJmYWNlIGlzIHVzZWQsIHRoaXMgX3JlYWxseV8gc2hvdWxkIGJlIHVzaW5nCiAgICAgICAgdGhlIGltYXBfbXVsdGlfc3RhdGVtYWNoIGZ1bmN0aW9uIGJ1dCB3ZSBoYXZlIG5vIGdlbmVyYWwgc3VwcG9ydCBmb3IKLSAgICAgICBub24tYmxvY2tpbmcgRE9ORSBvcGVyYXRpb25zLCBub3QgaW4gdGhlIG11bHRpIHN0YXRlIG1hY2hpbmUgYW5kIHdpdGgKLSAgICAgICBDdXJsX2RvbmUoKSBpbnZva2VzIG9uIHNldmVyYWwgcGxhY2VzIGluIHRoZSBjb2RlIQorICAgICAgIG5vbi1ibG9ja2luZyBET05FIG9wZXJhdGlvbnMhCiAgICAgKi8KICAgICBpZighcmVzdWx0KQogICAgICAgcmVzdWx0ID0gaW1hcF9ibG9ja19zdGF0ZW1hY2goY29ubik7CkBAIC0xNzM4LDYgKzE3MTMsMTAgQEAKICAgaWYocmVzdWx0KQogICAgIHJldHVybiByZXN1bHQ7CiAKKyAgLyogQ2xlYXIgdGhlIFRMUyB1cGdyYWRlZCBmbGFnICovCisgIGNvbm4tPnRsc191cGdyYWRlZCA9IEZBTFNFOworCisgIC8qIFNldCB1cCB0aGUgcHJveHkgaWYgbmVjZXNzYXJ5ICovCiAgIGlmKGNvbm4tPmJpdHMuaHR0cHByb3h5ICYmICFkYXRhLT5zZXQudHVubmVsX3RocnVfaHR0cHByb3h5KSB7CiAgICAgLyogVW5sZXNzIHdlIGhhdmUgYXNrZWQgdG8gdHVubmVsIElNQVAgb3BlcmF0aW9ucyB0aHJvdWdoIHRoZSBwcm94eSwgd2UKICAgICAgICBzd2l0Y2ggYW5kIHVzZSBIVFRQIG9wZXJhdGlvbnMgb25seSAqLwpAQCAtMTgxNSwzOCArMTc5NCw0OSBAQAogICogVGhlIHJldHVybmVkIHN0cmluZyBuZWVkcyB0byBiZSBmcmVlZC4KICAqCiAgKi8KLXN0YXRpYyBjaGFyICppbWFwX2F0b20oY29uc3QgY2hhciAqc3RyKQorc3RhdGljIGNoYXIgKmltYXBfYXRvbShjb25zdCBjaGFyICpzdHIsIGJvb2wgZXNjYXBlX29ubHkpCiB7CisgIC8qICFjaGVja3NyYyEgZGlzYWJsZSBQQVJFTkJSQUNFIDEgKi8KKyAgY29uc3QgY2hhciBhdG9tX3NwZWNpYWxzW10gPSAiKCl7ICUqXSI7CiAgIGNvbnN0IGNoYXIgKnAxOwogICBjaGFyICpwMjsKICAgc2l6ZV90IGJhY2tzcF9jb3VudCA9IDA7CiAgIHNpemVfdCBxdW90ZV9jb3VudCA9IDA7Ci0gIGJvb2wgc3BhY2VfZXhpc3RzID0gRkFMU0U7CisgIGJvb2wgb3RoZXJzX2V4aXN0cyA9IEZBTFNFOwogICBzaXplX3QgbmV3bGVuID0gMDsKICAgY2hhciAqbmV3c3RyID0gTlVMTDsKIAogICBpZighc3RyKQogICAgIHJldHVybiBOVUxMOwogCi0gIC8qIENvdW50IGFueSB1bmVzY2FwZWQgY2hhcmFjdGVycyAqLworICAvKiBMb29rIGZvciAiYXRvbS1zcGVjaWFscyIsIGNvdW50aW5nIHRoZSBiYWNrc2xhc2ggYW5kIHF1b3RlIGNoYXJhY3RlcnMgYXMKKyAgICAgdGhlc2Ugd2lsbCBuZWVkIGVzY2FwcGluZyAqLwogICBwMSA9IHN0cjsKICAgd2hpbGUoKnAxKSB7CiAgICAgaWYoKnAxID09ICdcXCcpCiAgICAgICBiYWNrc3BfY291bnQrKzsKICAgICBlbHNlIGlmKCpwMSA9PSAnIicpCiAgICAgICBxdW90ZV9jb3VudCsrOwotICAgIGVsc2UgaWYoKnAxID09ICcgJykKLSAgICAgIHNwYWNlX2V4aXN0cyA9IFRSVUU7CisgICAgZWxzZSBpZighZXNjYXBlX29ubHkpIHsKKyAgICAgIGNvbnN0IGNoYXIgKnAzID0gYXRvbV9zcGVjaWFsczsKKworICAgICAgd2hpbGUoKnAzICYmICFvdGhlcnNfZXhpc3RzKSB7CisgICAgICAgIGlmKCpwMSA9PSAqcDMpCisgICAgICAgICAgb3RoZXJzX2V4aXN0cyA9IFRSVUU7CisKKyAgICAgICAgcDMrKzsKKyAgICAgIH0KKyAgICB9CiAKICAgICBwMSsrOwogICB9CiAKLSAgLyogRG9lcyB0aGUgaW5wdXQgY29udGFpbiBhbnkgdW5lc2NhcGVkIGNoYXJhY3RlcnM/ICovCi0gIGlmKCFiYWNrc3BfY291bnQgJiYgIXF1b3RlX2NvdW50ICYmICFzcGFjZV9leGlzdHMpCisgIC8qIERvZXMgdGhlIGlucHV0IGNvbnRhaW4gYW55ICJhdG9tLXNwZWNpYWwiIGNoYXJhY3RlcnM/ICovCisgIGlmKCFiYWNrc3BfY291bnQgJiYgIXF1b3RlX2NvdW50ICYmICFvdGhlcnNfZXhpc3RzKQogICAgIHJldHVybiBzdHJkdXAoc3RyKTsKIAogICAvKiBDYWxjdWxhdGUgdGhlIG5ldyBzdHJpbmcgbGVuZ3RoICovCi0gIG5ld2xlbiA9IHN0cmxlbihzdHIpICsgYmFja3NwX2NvdW50ICsgcXVvdGVfY291bnQgKyAoc3BhY2VfZXhpc3RzID8gMiA6IDApOworICBuZXdsZW4gPSBzdHJsZW4oc3RyKSArIGJhY2tzcF9jb3VudCArIHF1b3RlX2NvdW50ICsgKG90aGVyc19leGlzdHMgPyAyIDogMCk7CiAKICAgLyogQWxsb2NhdGUgdGhlIG5ldyBzdHJpbmcgKi8KICAgbmV3c3RyID0gKGNoYXIgKikgbWFsbG9jKChuZXdsZW4gKyAxKSAqIHNpemVvZihjaGFyKSk7CkBAIC0xODU1LDcgKzE4NDUsNyBAQAogCiAgIC8qIFN1cnJvdW5kIHRoZSBzdHJpbmcgaW4gcXVvdGVzIGlmIG5lY2Vzc2FyeSAqLwogICBwMiA9IG5ld3N0cjsKLSAgaWYoc3BhY2VfZXhpc3RzKSB7CisgIGlmKG90aGVyc19leGlzdHMpIHsKICAgICBuZXdzdHJbMF0gPSAnIic7CiAgICAgbmV3c3RyW25ld2xlbiAtIDFdID0gJyInOwogICAgIHAyKys7CmRpZmYgLS1naXQgYS9saWIvaW1hcC5oIGIvbGliL2ltYXAuaAppbmRleCAzMTg5ZGFhLi5lNmI5Yjg5IDEwMDY0NAotLS0gYS9saWIvaW1hcC5oCisrKyBiL2xpYi9pbWFwLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvaW5ldF9udG9wLmMgYi9saWIvaW5ldF9udG9wLmMKaW5kZXggZGE5YTNhYi4uNDE2MDA1YyAxMDA2NDQKLS0tIGEvbGliL2luZXRfbnRvcC5jCisrKyBiL2xpYi9pbmV0X250b3AuYwpAQCAtMzIsOSArMzIsOCBAQAogI2luY2x1ZGUgPGFycGEvaW5ldC5oPgogI2VuZGlmCiAKLSNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgotCiAjaW5jbHVkZSAiaW5ldF9udG9wLmgiCisjaW5jbHVkZSAiY3VybF9wcmludGYuaCIKIAogI2RlZmluZSBJTjZBRERSU1ogICAgICAgMTYKICNkZWZpbmUgSU5BRERSU1ogICAgICAgICA0CkBAIC01NywxMCArNTYsMTAgQEAKIAogICB0bXBbMF0gPSAnXDAnOwogICAodm9pZClzbnByaW50Zih0bXAsIHNpemVvZih0bXApLCAiJWQuJWQuJWQuJWQiLAotICAgICAgICAgICgoaW50KSgodW5zaWduZWQgY2hhcilzcmNbMF0pKSAmIDB4ZmYsCi0gICAgICAgICAgKChpbnQpKCh1bnNpZ25lZCBjaGFyKXNyY1sxXSkpICYgMHhmZiwKLSAgICAgICAgICAoKGludCkoKHVuc2lnbmVkIGNoYXIpc3JjWzJdKSkgJiAweGZmLAotICAgICAgICAgICgoaW50KSgodW5zaWduZWQgY2hhcilzcmNbM10pKSAmIDB4ZmYpOworICAgICAgICAgICAgICAgICAoKGludCkoKHVuc2lnbmVkIGNoYXIpc3JjWzBdKSkgJiAweGZmLAorICAgICAgICAgICAgICAgICAoKGludCkoKHVuc2lnbmVkIGNoYXIpc3JjWzFdKSkgJiAweGZmLAorICAgICAgICAgICAgICAgICAoKGludCkoKHVuc2lnbmVkIGNoYXIpc3JjWzJdKSkgJiAweGZmLAorICAgICAgICAgICAgICAgICAoKGludCkoKHVuc2lnbmVkIGNoYXIpc3JjWzNdKSkgJiAweGZmKTsKIAogICBsZW4gPSBzdHJsZW4odG1wKTsKICAgaWYobGVuID09IDAgfHwgbGVuID49IHNpemUpIHsKZGlmZiAtLWdpdCBhL2xpYi9pbmV0X250b3AuaCBiL2xpYi9pbmV0X250b3AuaAppbmRleCBjYzRiZGJiLi45ZjQ0NjEyIDEwMDY0NAotLS0gYS9saWIvaW5ldF9udG9wLmgKKysrIGIvbGliL2luZXRfbnRvcC5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL2luZXRfcHRvbi5jIGIvbGliL2luZXRfcHRvbi5jCmluZGV4IGY1MGIzNjUuLmNmOGI4OGEgMTAwNjQ0Ci0tLSBhL2xpYi9pbmV0X3B0b24uYworKysgYi9saWIvaW5ldF9wdG9uLmMKQEAgLTE4OCw4ICsxODgsOCBAQAogICAgICAgfQogICAgICAgaWYodHAgKyBJTlQxNlNaID4gZW5kcCkKICAgICAgICAgcmV0dXJuICgwKTsKLSAgICAgICp0cCsrID0gKHVuc2lnbmVkIGNoYXIpICh2YWwgPj4gOCkgJiAweGZmOwotICAgICAgKnRwKysgPSAodW5zaWduZWQgY2hhcikgdmFsICYgMHhmZjsKKyAgICAgICp0cCsrID0gKHVuc2lnbmVkIGNoYXIpICgodmFsID4+IDgpICYgMHhmZik7CisgICAgICAqdHArKyA9ICh1bnNpZ25lZCBjaGFyKSAodmFsICYgMHhmZik7CiAgICAgICBzYXdfeGRpZ2l0ID0gMDsKICAgICAgIHZhbCA9IDA7CiAgICAgICBjb250aW51ZTsKQEAgLTIwNSw4ICsyMDUsOCBAQAogICBpZihzYXdfeGRpZ2l0KSB7CiAgICAgaWYodHAgKyBJTlQxNlNaID4gZW5kcCkKICAgICAgIHJldHVybiAoMCk7Ci0gICAgKnRwKysgPSAodW5zaWduZWQgY2hhcikgKHZhbCA+PiA4KSAmIDB4ZmY7Ci0gICAgKnRwKysgPSAodW5zaWduZWQgY2hhcikgdmFsICYgMHhmZjsKKyAgICAqdHArKyA9ICh1bnNpZ25lZCBjaGFyKSAoKHZhbCA+PiA4KSAmIDB4ZmYpOworICAgICp0cCsrID0gKHVuc2lnbmVkIGNoYXIpICh2YWwgJiAweGZmKTsKICAgfQogICBpZihjb2xvbnAgIT0gTlVMTCkgewogICAgIC8qCmRpZmYgLS1naXQgYS9saWIvaW5ldF9wdG9uLmggYi9saWIvaW5ldF9wdG9uLmgKaW5kZXggNDNjNTQ5MS4uOTE4OGQ5NSAxMDA2NDQKLS0tIGEvbGliL2luZXRfcHRvbi5oCisrKyBiL2xpYi9pbmV0X3B0b24uaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9rcmI1LmMgYi9saWIva3JiNS5jCmluZGV4IGFkN2RkNjcuLjBiMTQ2ZTAgMTAwNjQ0Ci0tLSBhL2xpYi9rcmI1LmMKKysrIGIvbGliL2tyYjUuYwpAQCAtMiw3ICsyLDcgQEAKICAqCiAgKiBDb3B5cmlnaHQgKGMpIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTkgS3VuZ2xpZ2EgVGVrbmlza2EgSPZnc2tvbGFuCiAgKiAoUm95YWwgSW5zdGl0dXRlIG9mIFRlY2hub2xvZ3ksIFN0b2NraG9sbSwgU3dlZGVuKS4KLSAqIENvcHlyaWdodCAoYykgMjAwNCAtIDIwMTUgRGFuaWVsIFN0ZW5iZXJnCisgKiBDb3B5cmlnaHQgKGMpIDIwMDQgLSAyMDE2IERhbmllbCBTdGVuYmVyZwogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTQ3LDE1ICs0NywxMiBAQAogI2luY2x1ZGUgInNlbmRmLmgiCiAjaW5jbHVkZSAiY3VybF9zZWMuaCIKICNpbmNsdWRlICJ3YXJubGVzcy5oIgotI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCiAKLS8qIFRoZSBsYXN0ICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZTogKi8KKy8qIFRoZSBsYXN0IDMgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlIGluIHRoaXMgb3JkZXIgKi8KKyNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgogI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCiAjaW5jbHVkZSAibWVtZGVidWcuaCIKIAotI2RlZmluZSBMT0NBTF9BRERSICgmY29ubi0+bG9jYWxfYWRkcikKLSNkZWZpbmUgUkVNT1RFX0FERFIgY29ubi0+aXBfYWRkci0+YWlfYWRkcgotCiBzdGF0aWMgaW50CiBrcmI1X2luaXQodm9pZCAqYXBwX2RhdGEpCiB7CkBAIC0xNTUsMjYgKzE1MiwyOSBAQAogICBjdXJsX3NvY2tsZW5fdCBsID0gc2l6ZW9mKGNvbm4tPmxvY2FsX2FkZHIpOwogICBzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSA9IGNvbm4tPmRhdGE7CiAgIENVUkxjb2RlIHJlc3VsdDsKLSAgY29uc3QgY2hhciAqc2VydmljZSA9ICJmdHAiLCAqc3J2X2hvc3QgPSAiaG9zdCI7CisgIGNvbnN0IGNoYXIgKnNlcnZpY2UgPSBkYXRhLT5zZXQuc3RyW1NUUklOR19TRVJWSUNFX05BTUVdID8KKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtPnNldC5zdHJbU1RSSU5HX1NFUlZJQ0VfTkFNRV0gOgorICAgICAgICAgICAgICAgICAgICAgICAgImZ0cCI7CisgIGNvbnN0IGNoYXIgKnNydl9ob3N0ID0gImhvc3QiOwogICBnc3NfYnVmZmVyX2Rlc2MgaW5wdXRfYnVmZmVyLCBvdXRwdXRfYnVmZmVyLCBfZ3NzcmVzcCwgKmdzc3Jlc3A7CiAgIE9NX3VpbnQzMiBtYWosIG1pbjsKICAgZ3NzX25hbWVfdCBnc3NuYW1lOwogICBnc3NfY3R4X2lkX3QgKmNvbnRleHQgPSBhcHBfZGF0YTsKICAgc3RydWN0IGdzc19jaGFubmVsX2JpbmRpbmdzX3N0cnVjdCBjaGFuOwogICBzaXplX3QgYmFzZTY0X3N6ID0gMDsKKyAgc3RydWN0IHNvY2thZGRyX2luICoqcmVtb3RlX2FkZHIgPQorICAgIChzdHJ1Y3Qgc29ja2FkZHJfaW4gKiopJmNvbm4tPmlwX2FkZHItPmFpX2FkZHI7CiAKICAgaWYoZ2V0c29ja25hbWUoY29ubi0+c29ja1tGSVJTVFNPQ0tFVF0sCi0gICAgICAgICAgICAgICAgIChzdHJ1Y3Qgc29ja2FkZHIgKilMT0NBTF9BRERSLCAmbCkgPCAwKQorICAgICAgICAgICAgICAgICAoc3RydWN0IHNvY2thZGRyICopJmNvbm4tPmxvY2FsX2FkZHIsICZsKSA8IDApCiAgICAgcGVycm9yKCJnZXRzb2NrbmFtZSgpIik7CiAKICAgY2hhbi5pbml0aWF0b3JfYWRkcnR5cGUgPSBHU1NfQ19BRl9JTkVUOwogICBjaGFuLmluaXRpYXRvcl9hZGRyZXNzLmxlbmd0aCA9IGwgLSA0OwotICBjaGFuLmluaXRpYXRvcl9hZGRyZXNzLnZhbHVlID0KLSAgICAmKChzdHJ1Y3Qgc29ja2FkZHJfaW4gKilMT0NBTF9BRERSKS0+c2luX2FkZHIuc19hZGRyOworICBjaGFuLmluaXRpYXRvcl9hZGRyZXNzLnZhbHVlID0gJmNvbm4tPmxvY2FsX2FkZHIuc2luX2FkZHIuc19hZGRyOwogICBjaGFuLmFjY2VwdG9yX2FkZHJ0eXBlID0gR1NTX0NfQUZfSU5FVDsKICAgY2hhbi5hY2NlcHRvcl9hZGRyZXNzLmxlbmd0aCA9IGwgLSA0OwotICBjaGFuLmFjY2VwdG9yX2FkZHJlc3MudmFsdWUgPQotICAgICYoKHN0cnVjdCBzb2NrYWRkcl9pbiAqKVJFTU9URV9BRERSKS0+c2luX2FkZHIuc19hZGRyOworICBjaGFuLmFjY2VwdG9yX2FkZHJlc3MudmFsdWUgPSAmKCpyZW1vdGVfYWRkciktPnNpbl9hZGRyLnNfYWRkcjsKICAgY2hhbi5hcHBsaWNhdGlvbl9kYXRhLmxlbmd0aCA9IDA7CiAgIGNoYW4uYXBwbGljYXRpb25fZGF0YS52YWx1ZSA9IE5VTEw7CiAKQEAgLTE4Myw5ICsxODMsOSBAQAogICAgIC8qIHRoaXMgcmVhbGx5IHNob3VsZG4ndCBiZSByZXBlYXRlZCBoZXJlLCBidXQgY2FuJ3QgaGVscCBpdCAqLwogICAgIGlmKHNlcnZpY2UgPT0gc3J2X2hvc3QpIHsKICAgICAgIHJlc3VsdCA9IEN1cmxfZnRwc2VuZGYoY29ubiwgIkFVVEggR1NTQVBJIik7Ci0KICAgICAgIGlmKHJlc3VsdCkKICAgICAgICAgcmV0dXJuIC0yOworCiAgICAgICBpZihDdXJsX0dldEZUUFJlc3BvbnNlKCZucmVhZCwgY29ubiwgTlVMTCkpCiAgICAgICAgIHJldHVybiAtMTsKIApkaWZmIC0tZ2l0IGEvbGliL2xkYXAuYyBiL2xpYi9sZGFwLmMKaW5kZXggNGQ5MTI4Mi4uMWYxZjcyZiAxMDA2NDQKLS0tIGEvbGliL2xkYXAuYworKysgYi9saWIvbGRhcC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNzYsOSArNzYsOCBAQAogI2luY2x1ZGUgImN1cmxfYmFzZTY0LmgiCiAjaW5jbHVkZSAicmF3c3RyLmgiCiAjaW5jbHVkZSAiY29ubmVjdC5oIgorLyogVGhlIGxhc3QgMyAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmUgaW4gdGhpcyBvcmRlciAqLwogI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCi0KLS8qIFRoZSBsYXN0ICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZTogKi8KICNpbmNsdWRlICJjdXJsX21lbW9yeS5oIgogI2luY2x1ZGUgIm1lbWRlYnVnLmgiCiAKQEAgLTIyOCw3ICsyMjcsNyBAQAogICAgIGdvdG8gcXVpdDsKICAgfQogCi0gIC8qIEdldCB0aGUgVVJMIHNjaGVtZSAoIGVpdGhlciBsZGFwIG9yIGxkYXBzICkgKi8KKyAgLyogR2V0IHRoZSBVUkwgc2NoZW1lIChlaXRoZXIgbGRhcCBvciBsZGFwcykgKi8KICAgaWYoY29ubi0+Z2l2ZW4tPmZsYWdzICYgUFJPVE9QVF9TU0wpCiAgICAgbGRhcF9zc2wgPSAxOwogICBpbmZvZihkYXRhLCAiTERBUCBsb2NhbDogdHJ5aW5nIHRvIGVzdGFibGlzaCAlcyBjb25uZWN0aW9uXG4iLApAQCAtNzE3LDcgKzcxNiw3IEBACiAgICAgIHJldHVybiBMREFQX1NDT1BFX0JBU0U7CiAgIGlmKHN0cmVxdWFsKHAsICJzdWIiKSkKICAgICAgcmV0dXJuIExEQVBfU0NPUEVfU1VCVFJFRTsKLSAgaWYoc3RyZXF1YWwoIHAsICJzdWJ0cmVlIikpCisgIGlmKHN0cmVxdWFsKHAsICJzdWJ0cmVlIikpCiAgICAgIHJldHVybiBMREFQX1NDT1BFX1NVQlRSRUU7CiAgIHJldHVybiAoLTEpOwogfQpkaWZmIC0tZ2l0IGEvbGliL2xpYmN1cmwuZGVmIGIvbGliL2xpYmN1cmwuZGVmCmluZGV4IGUwNTE5NzAuLmUwMTI1NTcgMTAwNjQ0Ci0tLSBhL2xpYi9saWJjdXJsLmRlZgorKysgYi9saWIvbGliY3VybC5kZWYKQEAgLTQsNyArNCw3IEBACiAKIExJQlJBUlkJCUxJQkNVUkwKIAotO0RFU0NSSVBUSU9OCSdjdXJsIGxpYmN1cmwgLSBodHRwOi8vY3VybC5oYXh4LnNlJworO0RFU0NSSVBUSU9OCSdjdXJsIGxpYmN1cmwgLSBodHRwczovL2N1cmwuaGF4eC5zZScKIAogRVhQT1JUUwogCWN1cmxfZWFzeV9jbGVhbnVwIEAgMSA7CmRpZmYgLS1naXQgYS9saWIvbGliY3VybC5yYyBiL2xpYi9saWJjdXJsLnJjCmluZGV4IDQ3Yjk0NGEuLjUwYjM2NWQgMTAwNjQ0Ci0tLSBhL2xpYi9saWJjdXJsLnJjCisrKyBiL2xpYi9saWJjdXJsLnJjCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTQ0LDcgKzQ0LDcgQEAKICAgQkVHSU4KICAgICBCTE9DSyAiMDQwOTA0YjAiCiAgICAgQkVHSU4KLSAgICAgIFZBTFVFICJDb21wYW55TmFtZSIsICAgICAgIlRoZSBjVVJMIGxpYnJhcnksIGh0dHA6Ly9jdXJsLmhheHguc2UvXDAiCisgICAgICBWQUxVRSAiQ29tcGFueU5hbWUiLCAgICAgICJUaGUgY1VSTCBsaWJyYXJ5LCBodHRwczovL2N1cmwuaGF4eC5zZS9cMCIKICAgICAgIFZBTFVFICJGaWxlRGVzY3JpcHRpb24iLCAgImxpYmN1cmwgU2hhcmVkIExpYnJhcnlcMCIKICAgICAgIFZBTFVFICJGaWxlVmVyc2lvbiIsICAgICAgTElCQ1VSTF9WRVJTSU9OICJcMCIKICAgICAgIFZBTFVFICJJbnRlcm5hbE5hbWUiLCAgICAgImxpYmN1cmxcMCIKQEAgLTUyLDcgKzUyLDcgQEAKICAgICAgIFZBTFVFICJQcm9kdWN0TmFtZSIsICAgICAgIlRoZSBjVVJMIGxpYnJhcnlcMCIKICAgICAgIFZBTFVFICJQcm9kdWN0VmVyc2lvbiIsICAgTElCQ1VSTF9WRVJTSU9OICJcMCIKICAgICAgIFZBTFVFICJMZWdhbENvcHlyaWdodCIsICAgIqkgIiBMSUJDVVJMX0NPUFlSSUdIVCAiXDAiCi0gICAgICBWQUxVRSAiTGljZW5zZSIsICAgICAgICAgICJodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWxcMCIKKyAgICAgIFZBTFVFICJMaWNlbnNlIiwgICAgICAgICAgImh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWxcMCIKICAgICBFTkQKICAgRU5ECiAKZGlmZiAtLWdpdCBhL2xpYi9sbGlzdC5jIGIvbGliL2xsaXN0LmMKaW5kZXggNDBiYjYyOC4uNDgyYWFhMCAxMDA2NDQKLS0tIGEvbGliL2xsaXN0LmMKKysrIGIvbGliL2xsaXN0LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDExLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yMiw2ICsyMiw4IEBACiAKICNpbmNsdWRlICJjdXJsX3NldHVwLmgiCiAKKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKwogI2luY2x1ZGUgImxsaXN0LmgiCiAjaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKIApkaWZmIC0tZ2l0IGEvbGliL2xsaXN0LmggYi9saWIvbGxpc3QuaAppbmRleCAyN2RkYjcxLi4zOWZmNDA4IDEwMDY0NAotLS0gYS9saWIvbGxpc3QuaAorKysgYi9saWIvbGxpc3QuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9tYWtlZmlsZS5kaiBiL2xpYi9tYWtlZmlsZS5kagppbmRleCA3YjJjYTg2Li4yMzMxYWZlIDEwMDY0NAotLS0gYS9saWIvbWFrZWZpbGUuZGoKKysrIGIvbGliL21ha2VmaWxlLmRqCkBAIC0xLDE1ICsxLDM5IEBACisjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKyMgIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAjCi0jICBBZGFwdGVkIGZvciBkamdwcDIgLyBXYXR0LTMyIC8gRE9TIGJ5Ci0jICBHaXNsZSBWYW5lbSA8Z3ZhbmVtQGJyb2FkcGFyay5ubz4KKyMgQ29weXJpZ2h0IChDKSAyMDAzIC0gMjAwOCwgR2lzbGUgVmFuZW0gPGd2YW5lbUB5YWhvby5ubz4uCisjIENvcHlyaWdodCAoQykgMjAwMyAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisjCisjIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKyMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisjCisjIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyMgZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKyMKKyMgVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQorIyBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorIworIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCisjCisjICBBZGFwdGVkIGZvciBkamdwcDIgLyBXYXR0LTMyIC8gRE9TCiAjCiAKIERFUEVORF9QUkVSRVEgPSBjdXJsX2NvbmZpZy5oCitWUEFUSCAgPSB2dGxzCiBUT1BESVIgPSAuLgogCiBpbmNsdWRlIC4uL3BhY2thZ2VzL0RPUy9jb21tb24uZGoKIGluY2x1ZGUgTWFrZWZpbGUuaW5jCiAKLU9CSkVDVFMgOj0gJChwYXRzdWJzdCAlLmMsJChPQkpfRElSKS8lLm8sJChzdHJpcCAkKENTT1VSQ0VTKSkpCitTT1VSQ0VTID0gJChzb3J0ICQoQ1NPVVJDRVMpKQorT0JKRUNUUyA9ICQoYWRkcHJlZml4ICQoT0JKX0RJUikvLCAkKG5vdGRpciAkKFNPVVJDRVM6LmM9Lm8pKSkKIAogQ1VSTF9MSUIgPSBsaWJjdXJsLmEKIApkaWZmIC0tZ2l0IGEvbGliL21kNS5jIGIvbGliL21kNS5jCmluZGV4IGI2MDRjMTAuLjg0YWRiOTkgMTAwNjQ0Ci0tLSBhL2xpYi9tZDUuYworKysgYi9saWIvbWQ1LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yNCw2ICsyNCw4IEBACiAKICNpZm5kZWYgQ1VSTF9ESVNBQkxFX0NSWVBUT19BVVRICiAKKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKwogI2luY2x1ZGUgImN1cmxfbWQ1LmgiCiAjaW5jbHVkZSAiY3VybF9obWFjLmgiCiAjaW5jbHVkZSAid2Fybmxlc3MuaCIKZGlmZiAtLWdpdCBhL2xpYi9tZW1kZWJ1Zy5jIGIvbGliL21lbWRlYnVnLmMKaW5kZXggZGQ4ODg5Yi4uMTYxOGJiYSAxMDA2NDQKLS0tIGEvbGliL21lbWRlYnVnLmMKKysrIGIvbGliL21lbWRlYnVnLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yNiwxMCArMjYsMTIgQEAKIAogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgogCi0jaW5jbHVkZSAiY3VybF9wcmludGYuaCIKICNpbmNsdWRlICJ1cmxkYXRhLmgiCiAKICNkZWZpbmUgTUVNREVCVUdfTk9ERUZJTkVTIC8qIGRvbid0IHJlZGVmaW5lIHRoZSBzdGFuZGFyZCBmdW5jdGlvbnMgKi8KKworLyogVGhlIGxhc3QgMyAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmUgaW4gdGhpcyBvcmRlciAqLworI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCiAjaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKICNpbmNsdWRlICJtZW1kZWJ1Zy5oIgogCkBAIC0xNDYsNiArMTQ4LDcgQEAKICAgICAgICAgLyogbG9nIHRvIHN0ZGVyciBhbHNvICovCiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiTElNSVQgJXM6JWQgJXMgcmVhY2hlZCBtZW1saW1pdFxuIiwKICAgICAgICAgICAgICAgICBzb3VyY2UsIGxpbmUsIGZ1bmMpOworICAgICAgICBmZmx1c2gobG9nZmlsZSk7IC8qIGJlY2F1c2UgaXQgbWlnaHQgY3Jhc2ggbm93ICovCiAgICAgICB9CiAgICAgICBTRVRfRVJSTk8oRU5PTUVNKTsKICAgICAgIHJldHVybiBUUlVFOyAvKiBSRVRVUk4gRVJST1IhICovCkBAIC0xNTMsMTAgKzE1Niw2IEBACiAgICAgZWxzZQogICAgICAgbWVtc2l6ZS0tOyAvKiBjb3VudGRvd24gKi8KIAotICAgIC8qIGxvZyB0aGUgY291bnRkb3duICovCi0gICAgaWYoc291cmNlKQotICAgICAgY3VybF9tZW1sb2coIkxJTUlUICVzOiVkICVsZCBBTExPQ1MgbGVmdFxuIiwKLSAgICAgICAgICAgICAgICAgIHNvdXJjZSwgbGluZSwgbWVtc2l6ZSk7CiAKICAgfQogCmRpZmYgLS1naXQgYS9saWIvbWVtZGVidWcuaCBiL2xpYi9tZW1kZWJ1Zy5oCmluZGV4IGNmYWMxZTAuLjgzNWRhYjMgMTAwNjQ0Ci0tLSBhL2xpYi9tZW1kZWJ1Zy5oCisrKyBiL2xpYi9tZW1kZWJ1Zy5oCkBAIC04LDExICs4LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjgsMTAgKzI4LDYgQEAKICAqIGFzIHdlbGwgYXMgdGhlIGxpYnJhcnkuIERvIG5vdCBtaXggd2l0aCBsaWJyYXJ5IGludGVybmFscyEKICAqLwogCi0jaW5jbHVkZSAiY3VybF9zZXR1cC5oIgotCi0jaW5jbHVkZSA8Y3VybC9jdXJsLmg+Ci0KICNkZWZpbmUgQ1VSTF9NVF9MT0dGTkFNRV9CVUZTSVpFIDUxMgogCiAjZGVmaW5lIGxvZ2ZpbGUgY3VybF9kZWJ1Z2xvZ2ZpbGUKQEAgLTU3LDE3ICs1MywxNyBAQAogCiAvKiBmaWxlIGRlc2NyaXB0b3IgbWFuaXB1bGF0b3JzICovCiBDVVJMX0VYVEVSTiBjdXJsX3NvY2tldF90IGN1cmxfc29ja2V0KGludCBkb21haW4sIGludCB0eXBlLCBpbnQgcHJvdG9jb2wsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lICwgY29uc3QgY2hhciAqc291cmNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmUsIGNvbnN0IGNoYXIgKnNvdXJjZSk7CiBDVVJMX0VYVEVSTiB2b2lkIGN1cmxfbWFya19zY2xvc2UoY3VybF9zb2NrZXRfdCBzb2NrZmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmUgLCBjb25zdCBjaGFyICpzb3VyY2UpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lLCBjb25zdCBjaGFyICpzb3VyY2UpOwogQ1VSTF9FWFRFUk4gaW50IGN1cmxfc2Nsb3NlKGN1cmxfc29ja2V0X3Qgc29ja2ZkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lICwgY29uc3QgY2hhciAqc291cmNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGluZSwgY29uc3QgY2hhciAqc291cmNlKTsKIENVUkxfRVhURVJOIGN1cmxfc29ja2V0X3QgY3VybF9hY2NlcHQoY3VybF9zb2NrZXRfdCBzLCB2b2lkICphLCB2b2lkICphbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGluZSwgY29uc3QgY2hhciAqc291cmNlKTsKICNpZmRlZiBIQVZFX1NPQ0tFVFBBSVIKIENVUkxfRVhURVJOIGludCBjdXJsX3NvY2tldHBhaXIoaW50IGRvbWFpbiwgaW50IHR5cGUsIGludCBwcm90b2NvbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VybF9zb2NrZXRfdCBzb2NrZXRfdmVjdG9yWzJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGluZSAsIGNvbnN0IGNoYXIgKnNvdXJjZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lLCBjb25zdCBjaGFyICpzb3VyY2UpOwogI2VuZGlmCiAKIC8qIEZJTEUgZnVuY3Rpb25zICovCkBAIC0xMDMsNiArOTksNyBAQAogIyAgZW5kaWYKICNlbmRpZgogCisjdW5kZWYgc29ja2V0CiAjZGVmaW5lIHNvY2tldChkb21haW4sdHlwZSxwcm90b2NvbClcCiAgY3VybF9zb2NrZXQoZG9tYWluLCB0eXBlLCBwcm90b2NvbCwgX19MSU5FX18sIF9fRklMRV9fKQogI3VuZGVmIGFjY2VwdCAvKiBmb3IgdGhvc2Ugd2l0aCBhY2NlcHQgYXMgYSBtYWNybyAqLwpkaWZmIC0tZ2l0IGEvbGliL21rLWNhLWJ1bmRsZS5wbCBiL2xpYi9tay1jYS1idW5kbGUucGwKaW5kZXggYzIwODBlOS4uNWExNDM1YyAxMDA3NTUKLS0tIGEvbGliL21rLWNhLWJ1bmRsZS5wbAorKysgYi9saWIvbWstY2EtYnVuZGxlLnBsCkBAIC0xMCw3ICsxMCw3IEBACiAjICoKICMgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogIyAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSMgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorIyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogIyAqCiAjICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAjICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvbWstY2EtYnVuZGxlLnZicyBiL2xpYi9tay1jYS1idW5kbGUudmJzCmluZGV4IDJkODJlN2QuLmIwZDk0MjcgMTAwNzU1Ci0tLSBhL2xpYi9tay1jYS1idW5kbGUudmJzCisrKyBiL2xpYi9tay1jYS1idW5kbGUudmJzCkBAIC05LDcgKzksNyBAQAogJyoNCiAnKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaA0KICcqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMNCi0nKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLg0KKycqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLg0KICcqDQogJyogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsDQogJyogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzDQpkaWZmIC0tZ2l0IGEvbGliL21wcmludGYuYyBiL2xpYi9tcHJpbnRmLmMKaW5kZXggMjMwNzBhNy4uNzNmODU0YiAxMDA2NDQKLS0tIGEvbGliL21wcmludGYuYworKysgYi9saWIvbXByaW50Zi5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk5IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OSAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzIsMTUgKzMyLDEwIEBACiAgKgogICogSWYgeW91IGV2ZXIgd2FudCB0cnVseSBwb3J0YWJsZSBhbmQgZ29vZCAqcHJpbnRmKCkgY2xvbmVzLCB0aGUgcHJvamVjdCB0aGF0CiAgKiB0b29rIG9uIGZyb20gaGVyZSBpcyBuYW1lZCAnVHJpbycgYW5kIHlvdSBmaW5kIG1vcmUgZGV0YWlscyBvbiB0aGUgdHJpbyB3ZWIKLSAqIHBhZ2UgYXQgaHR0cDovL2RhbmllbC5oYXh4LnNlL3RyaW8vCisgKiBwYWdlIGF0IGh0dHBzOi8vZGFuaWVsLmhheHguc2UvcHJvamVjdHMvdHJpby8KICAqLwogCiAjaW5jbHVkZSAiY3VybF9zZXR1cC5oIgotCi0jaWYgZGVmaW5lZChESkdQUCkgJiYgKERKR1BQX01JTk9SIDwgNCkKLSN1bmRlZiBfTVBSSU5URl9SRVBMQUNFIC8qIGRvbid0IHVzZSB4X3dhc191c2VkKCkgaGVyZSAqLwotI2VuZGlmCi0KICNpbmNsdWRlIDxjdXJsL21wcmludGYuaD4KIAogI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCkBAIC00NjUsMjIgKzQ2MCwyNCBAQAogICAgICAgaWYoZmxhZ3MgJiBGTEFHU19XSURUSFBBUkFNKSB7CiAgICAgICAgIC8qIHdlIGhhdmUgdGhlIHdpZHRoIHNwZWNpZmllZCBmcm9tIGEgcGFyYW1ldGVyLCBzbyB3ZSBtYWtlIHRoYXQKICAgICAgICAgICAgcGFyYW1ldGVyJ3MgaW5mbyBzZXR1cCBwcm9wZXJseSAqLwotICAgICAgICB2dG9baV0ud2lkdGggPSB3aWR0aCAtIDE7Ci0gICAgICAgIGkgPSB3aWR0aCAtIDE7Ci0gICAgICAgIHZ0b1tpXS50eXBlID0gRk9STUFUX1dJRFRIOwotICAgICAgICB2dG9baV0uZmxhZ3MgPSBGTEFHU19ORVc7Ci0gICAgICAgIHZ0b1tpXS5wcmVjaXNpb24gPSB2dG9baV0ud2lkdGggPSAwOyAvKiBjYW4ndCB1c2Ugd2lkdGggb3IgcHJlY2lzaW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiB3aWR0aCEgKi8KKyAgICAgICAgbG9uZyBrID0gd2lkdGggLSAxOworICAgICAgICB2dG9baV0ud2lkdGggPSBrOworICAgICAgICB2dG9ba10udHlwZSA9IEZPUk1BVF9XSURUSDsKKyAgICAgICAgdnRvW2tdLmZsYWdzID0gRkxBR1NfTkVXOworICAgICAgICAvKiBjYW4ndCB1c2Ugd2lkdGggb3IgcHJlY2lzaW9uIG9mIHdpZHRoISAqLworICAgICAgICB2dG9ba10ud2lkdGggPSAwOworICAgICAgICB2dG9ba10ucHJlY2lzaW9uID0gMDsKICAgICAgIH0KICAgICAgIGlmKGZsYWdzICYgRkxBR1NfUFJFQ1BBUkFNKSB7CiAgICAgICAgIC8qIHdlIGhhdmUgdGhlIHByZWNpc2lvbiBzcGVjaWZpZWQgZnJvbSBhIHBhcmFtZXRlciwgc28gd2UgbWFrZSB0aGF0CiAgICAgICAgICAgIHBhcmFtZXRlcidzIGluZm8gc2V0dXAgcHJvcGVybHkgKi8KLSAgICAgICAgdnRvW2ldLnByZWNpc2lvbiA9IHByZWNpc2lvbiAtIDE7Ci0gICAgICAgIGkgPSBwcmVjaXNpb24gLSAxOwotICAgICAgICB2dG9baV0udHlwZSA9IEZPUk1BVF9XSURUSDsKLSAgICAgICAgdnRvW2ldLmZsYWdzID0gRkxBR1NfTkVXOwotICAgICAgICB2dG9baV0ucHJlY2lzaW9uID0gdnRvW2ldLndpZHRoID0gMDsgLyogY2FuJ3QgdXNlIHdpZHRoIG9yIHByZWNpc2lvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Ygd2lkdGghICovCisgICAgICAgIGxvbmcgayA9IHByZWNpc2lvbiAtIDE7CisgICAgICAgIHZ0b1tpXS5wcmVjaXNpb24gPSBrOworICAgICAgICB2dG9ba10udHlwZSA9IEZPUk1BVF9XSURUSDsKKyAgICAgICAgdnRvW2tdLmZsYWdzID0gRkxBR1NfTkVXOworICAgICAgICAvKiBjYW4ndCB1c2Ugd2lkdGggb3IgcHJlY2lzaW9uIG9mIHdpZHRoISAqLworICAgICAgICB2dG9ba10ud2lkdGggPSAwOworICAgICAgICB2dG9ba10ucHJlY2lzaW9uID0gMDsKICAgICAgIH0KICAgICAgICplbmRwb3MrKyA9IGZtdCArIDE7IC8qIGVuZCBvZiB0aGlzIHNlcXVlbmNlICovCiAgICAgfQpAQCAtNDg4LDExICs0ODUsMTUgQEAKIAogICAvKiBSZWFkIHRoZSBhcmcgbGlzdCBwYXJhbWV0ZXJzIGludG8gb3VyIGRhdGEgbGlzdCAqLwogICBmb3IoaT0wOyBpPG1heF9wYXJhbTsgaSsrKSB7Ci0gICAgaWYoKGkgKyAxIDwgbWF4X3BhcmFtKSAmJiAodnRvW2kgKyAxXS50eXBlID09IEZPUk1BVF9XSURUSCkpIHsKLSAgICAgIC8qIFdpZHRoL3ByZWNpc2lvbiBhcmd1bWVudHMgbXVzdCBiZSByZWFkIGJlZm9yZSB0aGUgbWFpbiBhcmd1bWVudAotICAgICAgICogdGhleSBhcmUgYXR0YWNoZWQgdG8KLSAgICAgICAqLwotICAgICAgdnRvW2kgKyAxXS5kYXRhLm51bS5hc19zaWduZWQgPSAobXBfaW50bWF4X3QpdmFfYXJnKGFyZ2xpc3QsIGludCk7CisgICAgLyogV2lkdGgvcHJlY2lzaW9uIGFyZ3VtZW50cyBtdXN0IGJlIHJlYWQgYmVmb3JlIHRoZSBtYWluIGFyZ3VtZW50CisgICAgICAgdGhleSBhcmUgYXR0YWNoZWQgdG8gKi8KKyAgICBpZih2dG9baV0uZmxhZ3MgJiBGTEFHU19XSURUSFBBUkFNKSB7CisgICAgICB2dG9bdnRvW2ldLndpZHRoXS5kYXRhLm51bS5hc19zaWduZWQgPQorICAgICAgICAobXBfaW50bWF4X3QpdmFfYXJnKGFyZ2xpc3QsIGludCk7CisgICAgfQorICAgIGlmKHZ0b1tpXS5mbGFncyAmIEZMQUdTX1BSRUNQQVJBTSkgeworICAgICAgdnRvW3Z0b1tpXS5wcmVjaXNpb25dLmRhdGEubnVtLmFzX3NpZ25lZCA9CisgICAgICAgIChtcF9pbnRtYXhfdCl2YV9hcmcoYXJnbGlzdCwgaW50KTsKICAgICB9CiAKICAgICBzd2l0Y2ggKHZ0b1tpXS50eXBlKSB7CkBAIC01ODAsNiArNTgxLDExIEBACiAKICAgdmFfc3RhY2tfdCAqcDsKIAorICAvKiAnd29ya2VuZCcgcG9pbnRzIHRvIHRoZSBmaW5hbCBidWZmZXIgYnl0ZSBwb3NpdGlvbiwgYnV0IHdpdGggYW4gZXh0cmEKKyAgICAgYnl0ZSBhcyBtYXJnaW4gdG8gYXZvaWQgdGhlIChmYWxzZT8pIHdhcm5pbmcgQ292ZXJpdHkgZ2l2ZXMgdXMKKyAgICAgb3RoZXJ3aXNlICovCisgIGNoYXIgKndvcmtlbmQgPSAmd29ya1tzaXplb2Yod29yaykgLSAyXTsKKwogICAvKiBEbyB0aGUgYWN0dWFsICUtY29kZSBwYXJzaW5nICovCiAgIGRwcmludGZfUGFzczEoZm9ybWF0LCB2dG8sIGVuZHBvcywgYXBfc2F2ZSk7CiAKQEAgLTYwOSw2ICs2MTUsOCBAQAogICAgIC8qIFVzZWQgdG8gY29udmVydCBuZWdhdGl2ZSBpbiBwb3NpdGl2ZS4gICovCiAgICAgbXBfaW50bWF4X3Qgc2lnbmVkX251bTsKIAorICAgIGNoYXIgKnc7CisKICAgICBpZigqZiAhPSAnJScpIHsKICAgICAgIC8qIFRoaXMgaXNuJ3QgYSBmb3JtYXQgc3BlYywgc28gd3JpdGUgZXZlcnl0aGluZyBvdXQgdW50aWwgdGhlIG5leHQgb25lCiAgICAgICAgICBPUiBlbmQgb2Ygc3RyaW5nIGlzIHJlYWNoZWQuICAqLwpAQCAtNjQ1LDE2ICs2NTMsMzAgQEAKICAgICBwID0gJnZ0b1twYXJhbV07CiAKICAgICAvKiBwaWNrIHVwIHRoZSBzcGVjaWZpZWQgd2lkdGggKi8KLSAgICBpZihwLT5mbGFncyAmIEZMQUdTX1dJRFRIUEFSQU0pCisgICAgaWYocC0+ZmxhZ3MgJiBGTEFHU19XSURUSFBBUkFNKSB7CiAgICAgICB3aWR0aCA9IChsb25nKXZ0b1twLT53aWR0aF0uZGF0YS5udW0uYXNfc2lnbmVkOworICAgICAgcGFyYW1fbnVtKys7IC8qIHNpbmNlIHRoZSB3aWR0aCBpcyBleHRyYWN0ZWQgZnJvbSBhIHBhcmFtZXRlciwgd2UKKyAgICAgICAgICAgICAgICAgICAgICBtdXN0IHNraXAgdGhhdCB0byBnZXQgdG8gdGhlIG5leHQgb25lIHByb3Blcmx5ICovCisgICAgICBpZih3aWR0aCA8IDApIHsKKyAgICAgICAgLyogIkEgbmVnYXRpdmUgZmllbGQgd2lkdGggaXMgdGFrZW4gYXMgYSAnLScgZmxhZyBmb2xsb3dlZCBieSBhCisgICAgICAgICAgIHBvc2l0aXZlIGZpZWxkIHdpZHRoLiIgKi8KKyAgICAgICAgd2lkdGggPSAtd2lkdGg7CisgICAgICAgIHAtPmZsYWdzIHw9IEZMQUdTX0xFRlQ7CisgICAgICAgIHAtPmZsYWdzICY9IH5GTEFHU19QQURfTklMOworICAgICAgfQorICAgIH0KICAgICBlbHNlCiAgICAgICB3aWR0aCA9IHAtPndpZHRoOwogCiAgICAgLyogcGljayB1cCB0aGUgc3BlY2lmaWVkIHByZWNpc2lvbiAqLwogICAgIGlmKHAtPmZsYWdzICYgRkxBR1NfUFJFQ1BBUkFNKSB7CiAgICAgICBwcmVjID0gKGxvbmcpdnRvW3AtPnByZWNpc2lvbl0uZGF0YS5udW0uYXNfc2lnbmVkOwotICAgICAgcGFyYW1fbnVtKys7IC8qIHNpbmNlIHRoZSBwcmVjaXNpb24gaXMgZXh0cmFjZWQgZnJvbSBhIHBhcmFtZXRlciwgd2UKKyAgICAgIHBhcmFtX251bSsrOyAvKiBzaW5jZSB0aGUgcHJlY2lzaW9uIGlzIGV4dHJhY3RlZCBmcm9tIGEgcGFyYW1ldGVyLCB3ZQogICAgICAgICAgICAgICAgICAgICAgIG11c3Qgc2tpcCB0aGF0IHRvIGdldCB0byB0aGUgbmV4dCBvbmUgcHJvcGVybHkgKi8KKyAgICAgIGlmKHByZWMgPCAwKQorICAgICAgICAvKiAiQSBuZWdhdGl2ZSBwcmVjaXNpb24gaXMgdGFrZW4gYXMgaWYgdGhlIHByZWNpc2lvbiB3ZXJlCisgICAgICAgICAgIG9taXR0ZWQuIiAqLworICAgICAgICBwcmVjID0gLTE7CiAgICAgfQogICAgIGVsc2UgaWYocC0+ZmxhZ3MgJiBGTEFHU19QUkVDKQogICAgICAgcHJlYyA9IHAtPnByZWNpc2lvbjsKQEAgLTcxNSw3MiArNzM3LDY4IEBACiAKICAgICAgIG51bWJlcjoKICAgICAgIC8qIE51bWJlciBvZiBiYXNlIEJBU0UuICAqLwotICAgICAgewotICAgICAgICBjaGFyICp3b3JrZW5kID0gJndvcmtbc2l6ZW9mKHdvcmspIC0gMV07Ci0gICAgICAgIGNoYXIgKnc7CiAKLSAgICAgICAgLyogU3VwcGx5IGEgZGVmYXVsdCBwcmVjaXNpb24gaWYgbm9uZSB3YXMgZ2l2ZW4uICAqLwotICAgICAgICBpZihwcmVjID09IC0xKQotICAgICAgICAgIHByZWMgPSAxOworICAgICAgLyogU3VwcGx5IGEgZGVmYXVsdCBwcmVjaXNpb24gaWYgbm9uZSB3YXMgZ2l2ZW4uICAqLworICAgICAgaWYocHJlYyA9PSAtMSkKKyAgICAgICAgcHJlYyA9IDE7CiAKLSAgICAgICAgLyogUHV0IHRoZSBudW1iZXIgaW4gV09SSy4gICovCi0gICAgICAgIHcgPSB3b3JrZW5kOwotICAgICAgICB3aGlsZShudW0gPiAwKSB7Ci0gICAgICAgICAgKnctLSA9IGRpZ2l0c1tudW0gJSBiYXNlXTsKLSAgICAgICAgICBudW0gLz0gYmFzZTsKLSAgICAgICAgfQotICAgICAgICB3aWR0aCAtPSAobG9uZykod29ya2VuZCAtIHcpOwotICAgICAgICBwcmVjIC09IChsb25nKSh3b3JrZW5kIC0gdyk7CisgICAgICAvKiBQdXQgdGhlIG51bWJlciBpbiBXT1JLLiAgKi8KKyAgICAgIHcgPSB3b3JrZW5kOworICAgICAgd2hpbGUobnVtID4gMCkgeworICAgICAgICAqdy0tID0gZGlnaXRzW251bSAlIGJhc2VdOworICAgICAgICBudW0gLz0gYmFzZTsKKyAgICAgIH0KKyAgICAgIHdpZHRoIC09IChsb25nKSh3b3JrZW5kIC0gdyk7CisgICAgICBwcmVjIC09IChsb25nKSh3b3JrZW5kIC0gdyk7CiAKLSAgICAgICAgaWYoaXNfYWx0ICYmIGJhc2UgPT0gOCAmJiBwcmVjIDw9IDApIHsKKyAgICAgIGlmKGlzX2FsdCAmJiBiYXNlID09IDggJiYgcHJlYyA8PSAwKSB7CisgICAgICAgICp3LS0gPSAnMCc7CisgICAgICAgIC0td2lkdGg7CisgICAgICB9CisKKyAgICAgIGlmKHByZWMgPiAwKSB7CisgICAgICAgIHdpZHRoIC09IHByZWM7CisgICAgICAgIHdoaWxlKHByZWMtLSA+IDApCiAgICAgICAgICAgKnctLSA9ICcwJzsKLSAgICAgICAgICAtLXdpZHRoOwotICAgICAgICB9CisgICAgICB9CiAKLSAgICAgICAgaWYocHJlYyA+IDApIHsKLSAgICAgICAgICB3aWR0aCAtPSBwcmVjOwotICAgICAgICAgIHdoaWxlKHByZWMtLSA+IDApCi0gICAgICAgICAgICAqdy0tID0gJzAnOwotICAgICAgICB9CisgICAgICBpZihpc19hbHQgJiYgYmFzZSA9PSAxNikKKyAgICAgICAgd2lkdGggLT0gMjsKIAotICAgICAgICBpZihpc19hbHQgJiYgYmFzZSA9PSAxNikKLSAgICAgICAgICB3aWR0aCAtPSAyOworICAgICAgaWYoaXNfbmVnIHx8IChwLT5mbGFncyAmIEZMQUdTX1NIT1dTSUdOKSB8fCAocC0+ZmxhZ3MgJiBGTEFHU19TUEFDRSkpCisgICAgICAgIC0td2lkdGg7CiAKLSAgICAgICAgaWYoaXNfbmVnIHx8IChwLT5mbGFncyAmIEZMQUdTX1NIT1dTSUdOKSB8fCAocC0+ZmxhZ3MgJiBGTEFHU19TUEFDRSkpCi0gICAgICAgICAgLS13aWR0aDsKLQotICAgICAgICBpZighKHAtPmZsYWdzICYgRkxBR1NfTEVGVCkgJiYgIShwLT5mbGFncyAmIEZMQUdTX1BBRF9OSUwpKQotICAgICAgICAgIHdoaWxlKHdpZHRoLS0gPiAwKQotICAgICAgICAgICAgT1VUQ0hBUignICcpOwotCi0gICAgICAgIGlmKGlzX25lZykKLSAgICAgICAgICBPVVRDSEFSKCctJyk7Ci0gICAgICAgIGVsc2UgaWYocC0+ZmxhZ3MgJiBGTEFHU19TSE9XU0lHTikKLSAgICAgICAgICBPVVRDSEFSKCcrJyk7Ci0gICAgICAgIGVsc2UgaWYocC0+ZmxhZ3MgJiBGTEFHU19TUEFDRSkKKyAgICAgIGlmKCEocC0+ZmxhZ3MgJiBGTEFHU19MRUZUKSAmJiAhKHAtPmZsYWdzICYgRkxBR1NfUEFEX05JTCkpCisgICAgICAgIHdoaWxlKHdpZHRoLS0gPiAwKQogICAgICAgICAgIE9VVENIQVIoJyAnKTsKIAotICAgICAgICBpZihpc19hbHQgJiYgYmFzZSA9PSAxNikgewotICAgICAgICAgIE9VVENIQVIoJzAnKTsKLSAgICAgICAgICBpZihwLT5mbGFncyAmIEZMQUdTX1VQUEVSKQotICAgICAgICAgICAgT1VUQ0hBUignWCcpOwotICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIE9VVENIQVIoJ3gnKTsKLSAgICAgICAgfQorICAgICAgaWYoaXNfbmVnKQorICAgICAgICBPVVRDSEFSKCctJyk7CisgICAgICBlbHNlIGlmKHAtPmZsYWdzICYgRkxBR1NfU0hPV1NJR04pCisgICAgICAgIE9VVENIQVIoJysnKTsKKyAgICAgIGVsc2UgaWYocC0+ZmxhZ3MgJiBGTEFHU19TUEFDRSkKKyAgICAgICAgT1VUQ0hBUignICcpOwogCi0gICAgICAgIGlmKCEocC0+ZmxhZ3MgJiBGTEFHU19MRUZUKSAmJiAocC0+ZmxhZ3MgJiBGTEFHU19QQURfTklMKSkKLSAgICAgICAgICB3aGlsZSh3aWR0aC0tID4gMCkKLSAgICAgICAgICAgIE9VVENIQVIoJzAnKTsKLQotICAgICAgICAvKiBXcml0ZSB0aGUgbnVtYmVyLiAgKi8KLSAgICAgICAgd2hpbGUoKyt3IDw9IHdvcmtlbmQpIHsKLSAgICAgICAgICBPVVRDSEFSKCp3KTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmKHAtPmZsYWdzICYgRkxBR1NfTEVGVCkKLSAgICAgICAgICB3aGlsZSh3aWR0aC0tID4gMCkKLSAgICAgICAgICAgIE9VVENIQVIoJyAnKTsKKyAgICAgIGlmKGlzX2FsdCAmJiBiYXNlID09IDE2KSB7CisgICAgICAgIE9VVENIQVIoJzAnKTsKKyAgICAgICAgaWYocC0+ZmxhZ3MgJiBGTEFHU19VUFBFUikKKyAgICAgICAgICBPVVRDSEFSKCdYJyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICBPVVRDSEFSKCd4Jyk7CiAgICAgICB9CisKKyAgICAgIGlmKCEocC0+ZmxhZ3MgJiBGTEFHU19MRUZUKSAmJiAocC0+ZmxhZ3MgJiBGTEFHU19QQURfTklMKSkKKyAgICAgICAgd2hpbGUod2lkdGgtLSA+IDApCisgICAgICAgICAgT1VUQ0hBUignMCcpOworCisgICAgICAvKiBXcml0ZSB0aGUgbnVtYmVyLiAgKi8KKyAgICAgIHdoaWxlKCsrdyA8PSB3b3JrZW5kKSB7CisgICAgICAgIE9VVENIQVIoKncpOworICAgICAgfQorCisgICAgICBpZihwLT5mbGFncyAmIEZMQUdTX0xFRlQpCisgICAgICAgIHdoaWxlKHdpZHRoLS0gPiAwKQorICAgICAgICAgIE9VVENIQVIoJyAnKTsKICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBGT1JNQVRfU1RSSU5HOgpAQCAtODA5LDcgKzgyNyw3IEBACiAgICAgICAgIGVsc2UKICAgICAgICAgICBsZW4gPSBzdHJsZW4oc3RyKTsKIAotICAgICAgICB3aWR0aCAtPSAobG9uZylsZW47CisgICAgICAgIHdpZHRoIC09IChsZW4gPiBMT05HX01BWCkgPyBMT05HX01BWCA6IChsb25nKWxlbjsKIAogICAgICAgICBpZihwLT5mbGFncyAmIEZMQUdTX0FMVCkKICAgICAgICAgICBPVVRDSEFSKCciJyk7CmRpZmYgLS1naXQgYS9saWIvbXVsdGkuYyBiL2xpYi9tdWx0aS5jCmluZGV4IGI2M2Y4YmYuLjdlMjcyNWIgMTAwNjQ0Ci0tLSBhL2xpYi9tdWx0aS5jCisrKyBiL2xpYi9tdWx0aS5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNDIsOSArNDIsOSBAQAogI2luY2x1ZGUgIm11bHRpaGFuZGxlLmgiCiAjaW5jbHVkZSAicGlwZWxpbmUuaCIKICNpbmNsdWRlICJzaWdwaXBlLmgiCisvKiBUaGUgbGFzdCAzICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZSBpbiB0aGlzIG9yZGVyICovCiAjaW5jbHVkZSAiY3VybF9wcmludGYuaCIKICNpbmNsdWRlICJjdXJsX21lbW9yeS5oIgotLyogVGhlIGxhc3QgI2luY2x1ZGUgZmlsZSBzaG91bGQgYmU6ICovCiAjaW5jbHVkZSAibWVtZGVidWcuaCIKIAogLyoKQEAgLTYyLDggKzYyLDYgQEAKIAogI2RlZmluZSBHT09EX01VTFRJX0hBTkRMRSh4KSBcCiAgICgoeCkgJiYgKCgoc3RydWN0IEN1cmxfbXVsdGkgKikoeCkpLT50eXBlID09IENVUkxfTVVMVElfSEFORExFKSkKLSNkZWZpbmUgR09PRF9FQVNZX0hBTkRMRSh4KSBcCi0gICgoeCkgJiYgKCgoc3RydWN0IFNlc3Npb25IYW5kbGUgKikoeCkpLT5tYWdpYyA9PSBDVVJMRUFTWV9NQUdJQ19OVU1CRVIpKQogCiBzdGF0aWMgdm9pZCBzaW5nbGVzb2NrZXQoc3RydWN0IEN1cmxfbXVsdGkgKm11bHRpLAogICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhKTsKQEAgLTEwMSw2ICs5OSw5IEBACiAKIHN0YXRpYyB2b2lkIG11bHRpX2ZyZWV0aW1lb3V0KHZvaWQgKmEsIHZvaWQgKmIpOwogCisvKiBmdW5jdGlvbiBwb2ludGVyIGNhbGxlZCBvbmNlIHdoZW4gc3dpdGNoaW5nIFRPIGEgc3RhdGUgKi8KK3R5cGVkZWYgdm9pZCAoKmluaXRfbXVsdGlzdGF0ZV9mdW5jKShzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSk7CisKIC8qIGFsd2F5cyB1c2UgdGhpcyBmdW5jdGlvbiB0byBjaGFuZ2Ugc3RhdGUsIHRvIG1ha2UgZGVidWdnaW5nIGVhc2llciAqLwogc3RhdGljIHZvaWQgbXN0YXRlKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLCBDVVJMTXN0YXRlIHN0YXRlCiAjaWZkZWYgREVCVUdCVUlMRApAQCAtMTA5LDYgKzExMCwxMiBAQAogKQogewogICBDVVJMTXN0YXRlIG9sZHN0YXRlID0gZGF0YS0+bXN0YXRlOworICBzdGF0aWMgY29uc3QgaW5pdF9tdWx0aXN0YXRlX2Z1bmMgZmluaXRbQ1VSTE1fU1RBVEVfTEFTVF0gPSB7CisgICAgTlVMTCwKKyAgICBOVUxMLAorICAgIEN1cmxfaW5pdF9DT05ORUNULCAvKiBDT05ORUNUICovCisgICAgLyogdGhlIHJlc3QgaXMgTlVMTCB0b28gKi8KKyAgfTsKIAogI2lmIGRlZmluZWQoREVCVUdCVUlMRCkgJiYgZGVmaW5lZChDVVJMX0RJU0FCTEVfVkVSQk9TRV9TVFJJTkdTKQogICAodm9pZCkgbGluZW5vOwpAQCAtMTI5LDcgKzEzNiw3IEBACiAgICAgICBjb25uZWN0aW9uX2lkID0gZGF0YS0+ZWFzeV9jb25uLT5jb25uZWN0aW9uX2lkOwogCiAgICAgaW5mb2YoZGF0YSwKLSAgICAgICAgICAiU1RBVEU6ICVzID0+ICVzIGhhbmRsZSAlcDsgbGluZSAlZCAoY29ubmVjdGlvbiAjJWxkKSBcbiIsCisgICAgICAgICAgIlNUQVRFOiAlcyA9PiAlcyBoYW5kbGUgJXA7IGxpbmUgJWQgKGNvbm5lY3Rpb24gIyVsZClcbiIsCiAgICAgICAgICAgc3RhdGVuYW1lW29sZHN0YXRlXSwgc3RhdGVuYW1lW2RhdGEtPm1zdGF0ZV0sCiAgICAgICAgICAgKHZvaWQgKilkYXRhLCBsaW5lbm8sIGNvbm5lY3Rpb25faWQpOwogICB9CkBAIC0xMzgsNiArMTQ1LDEwIEBACiAgIGlmKHN0YXRlID09IENVUkxNX1NUQVRFX0NPTVBMRVRFRCkKICAgICAvKiBjaGFuZ2luZyB0byBDT01QTEVURUQgbWVhbnMgdGhlcmUncyBvbmUgbGVzcyBlYXN5IGhhbmRsZSAnYWxpdmUnICovCiAgICAgZGF0YS0+bXVsdGktPm51bV9hbGl2ZS0tOworCisgIC8qIGlmIHRoaXMgc3RhdGUgaGFzIGFuIGluaXQtZnVuY3Rpb24sIHJ1biBpdCAqLworICBpZihmaW5pdFtzdGF0ZV0pCisgICAgZmluaXRbc3RhdGVdKGRhdGEpOwogfQogCiAjaWZuZGVmIERFQlVHQlVJTEQKQEAgLTE2MSwxMyArMTcyLDIyIEBACiAjZGVmaW5lIFNIX1JFQUQgIDEKICNkZWZpbmUgU0hfV1JJVEUgMgogCisvKiBsb29rIHVwIGEgZ2l2ZW4gc29ja2V0IGluIHRoZSBzb2NrZXQgaGFzaCwgc2tpcCBpbnZhbGlkIHNvY2tldHMgKi8KK3N0YXRpYyBzdHJ1Y3QgQ3VybF9zaF9lbnRyeSAqc2hfZ2V0ZW50cnkoc3RydWN0IGN1cmxfaGFzaCAqc2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cmxfc29ja2V0X3QgcykKK3sKKyAgaWYocyAhPSBDVVJMX1NPQ0tFVF9CQUQpCisgICAgLyogb25seSBsb29rIGZvciBwcm9wZXIgc29ja2V0cyAqLworICAgIHJldHVybiBDdXJsX2hhc2hfcGljayhzaCwgKGNoYXIgKikmcywgc2l6ZW9mKGN1cmxfc29ja2V0X3QpKTsKKyAgcmV0dXJuIE5VTEw7Cit9CisKIC8qIG1ha2Ugc3VyZSB0aGlzIHNvY2tldCBpcyBwcmVzZW50IGluIHRoZSBoYXNoIGZvciB0aGlzIGhhbmRsZSAqLwogc3RhdGljIHN0cnVjdCBDdXJsX3NoX2VudHJ5ICpzaF9hZGRlbnRyeShzdHJ1Y3QgY3VybF9oYXNoICpzaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VybF9zb2NrZXRfdCBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSkKIHsKLSAgc3RydWN0IEN1cmxfc2hfZW50cnkgKnRoZXJlID0KLSAgICBDdXJsX2hhc2hfcGljayhzaCwgKGNoYXIgKikmcywgc2l6ZW9mKGN1cmxfc29ja2V0X3QpKTsKKyAgc3RydWN0IEN1cmxfc2hfZW50cnkgKnRoZXJlID0gc2hfZ2V0ZW50cnkoc2gsIHMpOwogICBzdHJ1Y3QgQ3VybF9zaF9lbnRyeSAqY2hlY2s7CiAKICAgaWYodGhlcmUpCkBAIC0xOTUsMTUgKzIxNSw5IEBACiAvKiBkZWxldGUgdGhlIGdpdmVuIHNvY2tldCArIGhhbmRsZSBmcm9tIHRoZSBoYXNoICovCiBzdGF0aWMgdm9pZCBzaF9kZWxlbnRyeShzdHJ1Y3QgY3VybF9oYXNoICpzaCwgY3VybF9zb2NrZXRfdCBzKQogewotICBzdHJ1Y3QgQ3VybF9zaF9lbnRyeSAqdGhlcmUgPQotICAgIEN1cmxfaGFzaF9waWNrKHNoLCAoY2hhciAqKSZzLCBzaXplb2YoY3VybF9zb2NrZXRfdCkpOwotCi0gIGlmKHRoZXJlKSB7Ci0gICAgLyogdGhpcyBzb2NrZXQgaXMgaW4gdGhlIGhhc2ggKi8KLSAgICAvKiBXZSByZW1vdmUgdGhlIGhhc2ggZW50cnkuIChUaGlzJ2xsIGVuZCB1cCBpbiBhIGNhbGwgdG8KLSAgICAgICBzaF9mcmVlZW50cnkoKS4pICovCi0gICAgQ3VybF9oYXNoX2RlbGV0ZShzaCwgKGNoYXIgKikmcywgc2l6ZW9mKGN1cmxfc29ja2V0X3QpKTsKLSAgfQorICAvKiBXZSByZW1vdmUgdGhlIGhhc2ggZW50cnkuIFRoaXMgd2lsbCBlbmQgdXAgaW4gYSBjYWxsIHRvCisgICAgIHNoX2ZyZWVlbnRyeSgpLiAqLworICBDdXJsX2hhc2hfZGVsZXRlKHNoLCAoY2hhciAqKSZzLCBzaXplb2YoY3VybF9zb2NrZXRfdCkpOwogfQogCiAvKgpAQCAtMjIwLDE1ICsyMzQsMTUgQEAKIHsKICAgKHZvaWQpIGsxX2xlbjsgKHZvaWQpIGsyX2xlbjsKIAotICByZXR1cm4gKCooKGludCAqKSBrMSkpID09ICgqKChpbnQgKikgazIpKTsKKyAgcmV0dXJuICgqKChjdXJsX3NvY2tldF90ICopIGsxKSkgPT0gKCooKGN1cmxfc29ja2V0X3QgKikgazIpKTsKIH0KIAogc3RhdGljIHNpemVfdCBoYXNoX2ZkKHZvaWQgKmtleSwgc2l6ZV90IGtleV9sZW5ndGgsIHNpemVfdCBzbG90c19udW0pCiB7Ci0gIGludCBmZCA9ICooKGludCAqKSBrZXkpOworICBjdXJsX3NvY2tldF90IGZkID0gKigoY3VybF9zb2NrZXRfdCAqKSBrZXkpOwogICAodm9pZCkga2V5X2xlbmd0aDsKIAotICByZXR1cm4gKGZkICUgKGludClzbG90c19udW0pOworICByZXR1cm4gKGZkICUgc2xvdHNfbnVtKTsKIH0KIAogLyoKQEAgLTQwMiwxMSArNDE2LDYgQEAKICAgLyogUG9pbnQgdG8gdGhlIG11bHRpJ3MgY29ubmVjdGlvbiBjYWNoZSAqLwogICBkYXRhLT5zdGF0ZS5jb25uX2NhY2hlID0gJm11bHRpLT5jb25uX2NhY2hlOwogCi0gIGlmKGRhdGEtPnNldC5odHRwcmVxID09IEhUVFBSRVFfUFVUKQotICAgIGRhdGEtPnN0YXRlLmluZmlsZXNpemUgPSBkYXRhLT5zZXQuZmlsZXNpemU7Ci0gIGVsc2UKLSAgICBkYXRhLT5zdGF0ZS5pbmZpbGVzaXplID0gZGF0YS0+c2V0LnBvc3RmaWVsZHNpemU7Ci0KICAgLyogVGhpcyBhZGRzIHRoZSBuZXcgZW50cnkgYXQgdGhlICdlbmQnIG9mIHRoZSBkb3VibHktbGlua2VkIGNpcmN1bGFyCiAgICAgIGxpc3Qgb2YgU2Vzc2lvbkhhbmRsZSBzdHJ1Y3RzIHRvIHRyeSBhbmQgbWFpbnRhaW4gYSBGSUZPIHF1ZXVlIHNvCiAgICAgIHRoZSBwaXBlbGluZWQgcmVxdWVzdHMgYXJlIGluIG9yZGVyLiAqLwpAQCAtNDc1LDYgKzQ4NCwxNjcgQEAKIH0KICNlbmRpZgogCisvKiBNYXJrIHRoZSBjb25uZWN0aW9uIGFzICdpZGxlJywgb3IgY2xvc2UgaXQgaWYgdGhlIGNhY2hlIGlzIGZ1bGwuCisgICBSZXR1cm5zIFRSVUUgaWYgdGhlIGNvbm5lY3Rpb24gaXMga2VwdCwgb3IgRkFMU0UgaWYgaXQgd2FzIGNsb3NlZC4gKi8KK3N0YXRpYyBib29sCitDb25uZWN0aW9uRG9uZShzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwgc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKQoreworICAvKiBkYXRhLT5tdWx0aS0+bWF4Y29ubmVjdHMgY2FuIGJlIG5lZ2F0aXZlLCBkZWFsIHdpdGggaXQuICovCisgIHNpemVfdCBtYXhjb25uZWN0cyA9CisgICAgKGRhdGEtPm11bHRpLT5tYXhjb25uZWN0cyA8IDApID8gZGF0YS0+bXVsdGktPm51bV9lYXN5ICogNDoKKyAgICBkYXRhLT5tdWx0aS0+bWF4Y29ubmVjdHM7CisgIHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubl9jYW5kaWRhdGUgPSBOVUxMOworCisgIC8qIE1hcmsgdGhlIGN1cnJlbnQgY29ubmVjdGlvbiBhcyAndW51c2VkJyAqLworICBjb25uLT5pbnVzZSA9IEZBTFNFOworCisgIGlmKG1heGNvbm5lY3RzID4gMCAmJgorICAgICBkYXRhLT5zdGF0ZS5jb25uX2NhY2hlLT5udW1fY29ubmVjdGlvbnMgPiBtYXhjb25uZWN0cykgeworICAgIGluZm9mKGRhdGEsICJDb25uZWN0aW9uIGNhY2hlIGlzIGZ1bGwsIGNsb3NpbmcgdGhlIG9sZGVzdCBvbmUuXG4iKTsKKworICAgIGNvbm5fY2FuZGlkYXRlID0gQ3VybF9vbGRlc3RfaWRsZV9jb25uZWN0aW9uKGRhdGEpOworCisgICAgaWYoY29ubl9jYW5kaWRhdGUpIHsKKyAgICAgIC8qIFNldCB0aGUgY29ubmVjdGlvbidzIG93bmVyIGNvcnJlY3RseSAqLworICAgICAgY29ubl9jYW5kaWRhdGUtPmRhdGEgPSBkYXRhOworCisgICAgICAvKiB0aGUgd2lubmVyIGdldHMgdGhlIGhvbm91ciBvZiBiZWluZyBkaXNjb25uZWN0ZWQgKi8KKyAgICAgICh2b2lkKUN1cmxfZGlzY29ubmVjdChjb25uX2NhbmRpZGF0ZSwgLyogZGVhZF9jb25uZWN0aW9uICovIEZBTFNFKTsKKyAgICB9CisgIH0KKworICByZXR1cm4gKGNvbm5fY2FuZGlkYXRlID09IGNvbm4pID8gRkFMU0UgOiBUUlVFOworfQorCitzdGF0aWMgQ1VSTGNvZGUgbXVsdGlfZG9uZShzdHJ1Y3QgY29ubmVjdGRhdGEgKipjb25ucCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSTGNvZGUgc3RhdHVzLCAgLyogYW4gZXJyb3IgaWYgdGhpcyBpcyBjYWxsZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXIgYW4gZXJyb3Igd2FzIGRldGVjdGVkICovCisgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcHJlbWF0dXJlKQoreworICBDVVJMY29kZSByZXN1bHQ7CisgIHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubjsKKyAgc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGE7CisKKyAgREVCVUdBU1NFUlQoKmNvbm5wKTsKKworICBjb25uID0gKmNvbm5wOworICBkYXRhID0gY29ubi0+ZGF0YTsKKworICBERUJVR0YoaW5mb2YoZGF0YSwgIm11bHRpX2RvbmVcbiIpKTsKKworICBpZihkYXRhLT5zdGF0ZS5kb25lKQorICAgIC8qIFN0b3AgaWYgbXVsdGlfZG9uZSgpIGhhcyBhbHJlYWR5IGJlZW4gY2FsbGVkICovCisgICAgcmV0dXJuIENVUkxFX09LOworCisgIEN1cmxfZ2V0b2ZmX2FsbF9waXBlbGluZXMoZGF0YSwgY29ubik7CisKKyAgLyogQ2xlYW51cCBwb3NzaWJsZSByZWRpcmVjdCBqdW5rICovCisgIGZyZWUoZGF0YS0+cmVxLm5ld3VybCk7CisgIGRhdGEtPnJlcS5uZXd1cmwgPSBOVUxMOworICBmcmVlKGRhdGEtPnJlcS5sb2NhdGlvbik7CisgIGRhdGEtPnJlcS5sb2NhdGlvbiA9IE5VTEw7CisKKyAgc3dpdGNoKHN0YXR1cykgeworICBjYXNlIENVUkxFX0FCT1JURURfQllfQ0FMTEJBQ0s6CisgIGNhc2UgQ1VSTEVfUkVBRF9FUlJPUjoKKyAgY2FzZSBDVVJMRV9XUklURV9FUlJPUjoKKyAgICAvKiBXaGVuIHdlJ3JlIGFib3J0ZWQgZHVlIHRvIGEgY2FsbGJhY2sgcmV0dXJuIGNvZGUgaXQgYmFzaWNhbGx5IGhhdmUgdG8KKyAgICAgICBiZSBjb3VudGVkIGFzIHByZW1hdHVyZSBhcyB0aGVyZSBpcyB0cm91YmxlIGFoZWFkIGlmIHdlIGRvbid0LiBXZSBoYXZlCisgICAgICAgbWFueSBjYWxsYmFja3MgYW5kIHByb3RvY29scyB3b3JrIGRpZmZlcmVudGx5LCB3ZSBjb3VsZCBwb3RlbnRpYWxseSBkbworICAgICAgIHRoaXMgbW9yZSBmaW5lLWdyYWluZWQgaW4gdGhlIGZ1dHVyZS4gKi8KKyAgICBwcmVtYXR1cmUgPSBUUlVFOworICBkZWZhdWx0OgorICAgIGJyZWFrOworICB9CisKKyAgLyogdGhpcyBjYWxscyB0aGUgcHJvdG9jb2wtc3BlY2lmaWMgZnVuY3Rpb24gcG9pbnRlciBwcmV2aW91c2x5IHNldCAqLworICBpZihjb25uLT5oYW5kbGVyLT5kb25lKQorICAgIHJlc3VsdCA9IGNvbm4tPmhhbmRsZXItPmRvbmUoY29ubiwgc3RhdHVzLCBwcmVtYXR1cmUpOworICBlbHNlCisgICAgcmVzdWx0ID0gc3RhdHVzOworCisgIGlmKENVUkxFX0FCT1JURURfQllfQ0FMTEJBQ0sgIT0gcmVzdWx0KSB7CisgICAgLyogYXZvaWQgdGhpcyBpZiB3ZSBhbHJlYWR5IGFib3J0ZWQgYnkgY2FsbGJhY2sgdG8gYXZvaWQgdGhpcyBjYWxsaW5nCisgICAgICAgYW5vdGhlciBjYWxsYmFjayAqLworICAgIENVUkxjb2RlIHJjID0gQ3VybF9wZ3JzRG9uZShjb25uKTsKKyAgICBpZighcmVzdWx0ICYmIHJjKQorICAgICAgcmVzdWx0ID0gQ1VSTEVfQUJPUlRFRF9CWV9DQUxMQkFDSzsKKyAgfQorCisgIGlmKCghcHJlbWF0dXJlICYmCisgICAgICBjb25uLT5zZW5kX3BpcGUtPnNpemUgKyBjb25uLT5yZWN2X3BpcGUtPnNpemUgIT0gMCAmJgorICAgICAgIWRhdGEtPnNldC5yZXVzZV9mb3JiaWQgJiYKKyAgICAgICFjb25uLT5iaXRzLmNsb3NlKSkgeworICAgIC8qIFN0b3AgaWYgcGlwZWxpbmUgaXMgbm90IGVtcHR5IGFuZCB3ZSBkbyBub3QgaGF2ZSB0byBjbG9zZQorICAgICAgIGNvbm5lY3Rpb24uICovCisgICAgREVCVUdGKGluZm9mKGRhdGEsICJDb25uZWN0aW9uIHN0aWxsIGluIHVzZSwgbm8gbW9yZSBtdWx0aV9kb25lIG5vdyFcbiIpKTsKKyAgICByZXR1cm4gQ1VSTEVfT0s7CisgIH0KKworICBkYXRhLT5zdGF0ZS5kb25lID0gVFJVRTsgLyogY2FsbGVkIGp1c3Qgbm93ISAqLworICBDdXJsX3Jlc29sdmVyX2NhbmNlbChjb25uKTsKKworICBpZihjb25uLT5kbnNfZW50cnkpIHsKKyAgICBDdXJsX3Jlc29sdl91bmxvY2soZGF0YSwgY29ubi0+ZG5zX2VudHJ5KTsgLyogZG9uZSB3aXRoIHRoaXMgKi8KKyAgICBjb25uLT5kbnNfZW50cnkgPSBOVUxMOworICB9CisKKyAgLyogaWYgdGhlIHRyYW5zZmVyIHdhcyBjb21wbGV0ZWQgaW4gYSBwYXVzZWQgc3RhdGUgdGhlcmUgY2FuIGJlIGJ1ZmZlcmVkCisgICAgIGRhdGEgbGVmdCB0byB3cml0ZSBhbmQgdGhlbiBraWxsICovCisgIGZyZWUoZGF0YS0+c3RhdGUudGVtcHdyaXRlKTsKKyAgZGF0YS0+c3RhdGUudGVtcHdyaXRlID0gTlVMTDsKKworICAvKiBpZiBkYXRhLT5zZXQucmV1c2VfZm9yYmlkIGlzIFRSVUUsIGl0IG1lYW5zIHRoZSBsaWJjdXJsIGNsaWVudCBoYXMKKyAgICAgZm9yY2VkIHVzIHRvIGNsb3NlIHRoaXMgY29ubmVjdGlvbi4gVGhpcyBpcyBpZ25vcmVkIGZvciByZXF1ZXN0cyB0YWtpbmcKKyAgICAgcGxhY2UgaW4gYSBOVExNIGF1dGhlbnRpY2F0aW9uIGhhbmRzaGFrZQorCisgICAgIGlmIGNvbm4tPmJpdHMuY2xvc2UgaXMgVFJVRSwgaXQgbWVhbnMgdGhhdCB0aGUgY29ubmVjdGlvbiBzaG91bGQgYmUKKyAgICAgY2xvc2VkIGluIHNwaXRlIG9mIGFsbCBvdXIgZWZmb3J0cyB0byBiZSBuaWNlLCBkdWUgdG8gcHJvdG9jb2wKKyAgICAgcmVzdHJpY3Rpb25zIGluIG91ciBvciB0aGUgc2VydmVyJ3MgZW5kCisKKyAgICAgaWYgcHJlbWF0dXJlIGlzIFRSVUUsIGl0IG1lYW5zIHRoaXMgY29ubmVjdGlvbiB3YXMgc2FpZCB0byBiZSBET05FIGJlZm9yZQorICAgICB0aGUgZW50aXJlIHJlcXVlc3Qgb3BlcmF0aW9uIGlzIGNvbXBsZXRlIGFuZCB0aHVzIHdlIGNhbid0IGtub3cgaW4gd2hhdAorICAgICBzdGF0ZSBpdCBpcyBmb3IgcmUtdXNpbmcsIHNvIHdlJ3JlIGZvcmNlZCB0byBjbG9zZSBpdC4gSW4gYSBwZXJmZWN0IHdvcmxkCisgICAgIHdlIGNhbiBhZGQgY29kZSB0aGF0IGtlZXAgdHJhY2sgb2YgaWYgd2UgcmVhbGx5IG11c3QgY2xvc2UgaXQgaGVyZSBvciBub3QsCisgICAgIGJ1dCBjdXJyZW50bHkgd2UgaGF2ZSBubyBzdWNoIGRldGFpbCBrbm93bGVkZ2UuCisgICovCisKKyAgaWYoKGRhdGEtPnNldC5yZXVzZV9mb3JiaWQKKyNpZiBkZWZpbmVkKFVTRV9OVExNKQorICAgICAgJiYgIShjb25uLT5udGxtLnN0YXRlID09IE5UTE1TVEFURV9UWVBFMiB8fAorICAgICAgICAgICBjb25uLT5wcm94eW50bG0uc3RhdGUgPT0gTlRMTVNUQVRFX1RZUEUyKQorI2VuZGlmCisgICAgICkgfHwgY29ubi0+Yml0cy5jbG9zZSB8fCBwcmVtYXR1cmUpIHsKKyAgICBDVVJMY29kZSByZXMyID0gQ3VybF9kaXNjb25uZWN0KGNvbm4sIHByZW1hdHVyZSk7IC8qIGNsb3NlIGNvbm5lY3Rpb24gKi8KKworICAgIC8qIElmIHdlIGhhZCBhbiBlcnJvciBhbHJlYWR5LCBtYWtlIHN1cmUgd2UgcmV0dXJuIHRoYXQgb25lLiBCdXQKKyAgICAgICBpZiB3ZSBnb3QgYSBuZXcgZXJyb3IsIHJldHVybiB0aGF0LiAqLworICAgIGlmKCFyZXN1bHQgJiYgcmVzMikKKyAgICAgIHJlc3VsdCA9IHJlczI7CisgIH0KKyAgZWxzZSB7CisgICAgLyogdGhlIGNvbm5lY3Rpb24gaXMgbm8gbG9uZ2VyIGluIHVzZSAqLworICAgIGlmKENvbm5lY3Rpb25Eb25lKGRhdGEsIGNvbm4pKSB7CisgICAgICAvKiByZW1lbWJlciB0aGUgbW9zdCByZWNlbnRseSB1c2VkIGNvbm5lY3Rpb24gKi8KKyAgICAgIGRhdGEtPnN0YXRlLmxhc3Rjb25uZWN0ID0gY29ubjsKKworICAgICAgaW5mb2YoZGF0YSwgIkNvbm5lY3Rpb24gIyVsZCB0byBob3N0ICVzIGxlZnQgaW50YWN0XG4iLAorICAgICAgICAgICAgY29ubi0+Y29ubmVjdGlvbl9pZCwKKyAgICAgICAgICAgIGNvbm4tPmJpdHMuaHR0cHByb3h5P2Nvbm4tPnByb3h5LmRpc3BuYW1lOmNvbm4tPmhvc3QuZGlzcG5hbWUpOworICAgIH0KKyAgICBlbHNlCisgICAgICBkYXRhLT5zdGF0ZS5sYXN0Y29ubmVjdCA9IE5VTEw7CisgIH0KKworICAqY29ubnAgPSBOVUxMOyAvKiB0byBtYWtlIHRoZSBjYWxsZXIgb2YgdGhpcyBmdW5jdGlvbiBiZXR0ZXIgZGV0ZWN0IHRoYXQKKyAgICAgICAgICAgICAgICAgICAgdGhpcyB3YXMgZWl0aGVyIGNsb3NlZCBvciBoYW5kZWQgb3ZlciB0byB0aGUgY29ubmVjdGlvbgorICAgICAgICAgICAgICAgICAgICBjYWNoZSBoZXJlLCBhbmQgdGhlcmVmb3JlIGNhbm5vdCBiZSB1c2VkIGZyb20gdGhpcyBwb2ludCBvbgorICAgICAgICAgICAgICAgICAqLworICBDdXJsX2ZyZWVfcmVxdWVzdF9zdGF0ZShkYXRhKTsKKworICByZXR1cm4gcmVzdWx0OworfQorCiBDVVJMTWNvZGUgY3VybF9tdWx0aV9yZW1vdmVfaGFuZGxlKENVUkxNICptdWx0aV9oYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENVUkwgKmN1cmxfaGFuZGxlKQogewpAQCAtNTIwLDggKzY5MCw4IEBACiAgICAgICAgcmVxdWVzdCBidXQgbm90IHJlY2VpdmVkIGl0cyByZXNwb25zZSB5ZXQsIHdlIG5lZWQgdG8gY2xvc2UKICAgICAgICBjb25uZWN0aW9uLiAqLwogICAgIGNvbm5jbG9zZShkYXRhLT5lYXN5X2Nvbm4sICJSZW1vdmVkIHdpdGggcGFydGlhbCByZXNwb25zZSIpOwotICAgIC8qIFNldCBjb25uZWN0aW9uIG93bmVyIHNvIHRoYXQgQ3VybF9kb25lKCkgY2xvc2VzIGl0LgotICAgICAgIFdlIGNhbiBzYWZlbHkgZG8gdGhpcyBoZXJlIHNpbmNlIGNvbm5lY3Rpb24gaXMga2lsbGVkLiAqLworICAgIC8qIFNldCBjb25uZWN0aW9uIG93bmVyIHNvIHRoYXQgdGhlIERPTkUgZnVuY3Rpb24gY2xvc2VzIGl0LiAgV2UgY2FuCisgICAgICAgc2FmZWx5IGRvIHRoaXMgaGVyZSBzaW5jZSBjb25uZWN0aW9uIGlzIGtpbGxlZC4gKi8KICAgICBkYXRhLT5lYXN5X2Nvbm4tPmRhdGEgPSBlYXN5OwogICAgIGVhc3lfb3duc19jb25uID0gVFJVRTsKICAgfQpAQCAtNTMxLDEyICs3MDEsNiBAQAogICAgICBjdXJsX2Vhc3lfY2xlYW51cCBpcyBjYWxsZWQuICovCiAgIEN1cmxfZXhwaXJlKGRhdGEsIDApOwogCi0gIC8qIGRlc3Ryb3kgdGhlIHRpbWVvdXQgbGlzdCB0aGF0IGlzIGhlbGQgaW4gdGhlIGVhc3kgaGFuZGxlICovCi0gIGlmKGRhdGEtPnN0YXRlLnRpbWVvdXRsaXN0KSB7Ci0gICAgQ3VybF9sbGlzdF9kZXN0cm95KGRhdGEtPnN0YXRlLnRpbWVvdXRsaXN0LCBOVUxMKTsKLSAgICBkYXRhLT5zdGF0ZS50aW1lb3V0bGlzdCA9IE5VTEw7Ci0gIH0KLQogICBpZihkYXRhLT5kbnMuaG9zdGNhY2hldHlwZSA9PSBIQ0FDSEVfTVVMVEkpIHsKICAgICAvKiBzdG9wIHVzaW5nIHRoZSBtdWx0aSBoYW5kbGUncyBETlMgY2FjaGUgKi8KICAgICBkYXRhLT5kbnMuaG9zdGNhY2hlID0gTlVMTDsKQEAgLTU0NSwyNCArNzA5LDMxIEBACiAKICAgaWYoZGF0YS0+ZWFzeV9jb25uKSB7CiAKLSAgICAvKiB3ZSBtdXN0IGNhbGwgQ3VybF9kb25lKCkgaGVyZSAoaWYgd2Ugc3RpbGwgIm93biBpdCIpIHNvIHRoYXQgd2UgZG9uJ3QKLSAgICAgICBsZWF2ZSBhIGhhbGYtYmFrZWQgb25lIGFyb3VuZCAqLworICAgIC8qIHdlIG11c3QgY2FsbCBtdWx0aV9kb25lKCkgaGVyZSAoaWYgd2Ugc3RpbGwgb3duIHRoZSBjb25uZWN0aW9uKSBzbyB0aGF0CisgICAgICAgd2UgZG9uJ3QgbGVhdmUgYSBoYWxmLWJha2VkIG9uZSBhcm91bmQgKi8KICAgICBpZihlYXN5X293bnNfY29ubikgewogCi0gICAgICAvKiBDdXJsX2RvbmUoKSBjbGVhcnMgdGhlIGNvbm4tPmRhdGEgZmllbGQgdG8gbG9zZSB0aGUgYXNzb2NpYXRpb24KKyAgICAgIC8qIG11bHRpX2RvbmUoKSBjbGVhcnMgdGhlIGNvbm4tPmRhdGEgZmllbGQgdG8gbG9zZSB0aGUgYXNzb2NpYXRpb24KICAgICAgICAgIGJldHdlZW4gdGhlIGVhc3kgaGFuZGxlIGFuZCB0aGUgY29ubmVjdGlvbgogCiAgICAgICAgICBOb3RlIHRoYXQgdGhpcyBpZ25vcmVzIHRoZSByZXR1cm4gY29kZSBzaW1wbHkgYmVjYXVzZSB0aGVyZSdzCiAgICAgICAgICBub3RoaW5nIHJlYWxseSB1c2VmdWwgdG8gZG8gd2l0aCBpdCBhbnl3YXkhICovCi0gICAgICAodm9pZClDdXJsX2RvbmUoJmRhdGEtPmVhc3lfY29ubiwgZGF0YS0+cmVzdWx0LCBwcmVtYXR1cmUpOworICAgICAgKHZvaWQpbXVsdGlfZG9uZSgmZGF0YS0+ZWFzeV9jb25uLCBkYXRhLT5yZXN1bHQsIHByZW1hdHVyZSk7CiAgICAgfQogICAgIGVsc2UKLSAgICAgIC8qIENsZWFyIGNvbm5lY3Rpb24gcGlwZWxpbmVzLCBpZiBDdXJsX2RvbmUgYWJvdmUgd2FzIG5vdCBjYWxsZWQgKi8KKyAgICAgIC8qIENsZWFyIGNvbm5lY3Rpb24gcGlwZWxpbmVzLCBpZiBtdWx0aV9kb25lIGFib3ZlIHdhcyBub3QgY2FsbGVkICovCiAgICAgICBDdXJsX2dldG9mZl9hbGxfcGlwZWxpbmVzKGRhdGEsIGRhdGEtPmVhc3lfY29ubik7CiAgIH0KIAogICBDdXJsX3dpbGRjYXJkX2R0b3IoJmRhdGEtPndpbGRjYXJkKTsKIAorICAvKiBkZXN0cm95IHRoZSB0aW1lb3V0IGxpc3QgdGhhdCBpcyBoZWxkIGluIHRoZSBlYXN5IGhhbmRsZSwgZG8gdGhpcyAqYWZ0ZXIqCisgICAgIG11bHRpX2RvbmUoKSBhcyB0aGF0IG1heSBhY3R1YWxseSBjYWxsIEN1cmxfZXhwaXJlIHRoYXQgdXNlcyB0aGlzICovCisgIGlmKGRhdGEtPnN0YXRlLnRpbWVvdXRsaXN0KSB7CisgICAgQ3VybF9sbGlzdF9kZXN0cm95KGRhdGEtPnN0YXRlLnRpbWVvdXRsaXN0LCBOVUxMKTsKKyAgICBkYXRhLT5zdGF0ZS50aW1lb3V0bGlzdCA9IE5VTEw7CisgIH0KKwogICAvKiBhcyB0aGlzIHdhcyB1c2luZyBhIHNoYXJlZCBjb25uZWN0aW9uIGNhY2hlIHdlIGNsZWFyIHRoZSBwb2ludGVyIHRvIHRoYXQKICAgICAgc2luY2Ugd2UncmUgbm90IHBhcnQgb2YgdGhhdCBtdWx0aSBoYW5kbGUgYW55bW9yZSAqLwogICBkYXRhLT5zdGF0ZS5jb25uX2NhY2hlID0gTlVMTDsKQEAgLTgwNCw2ICs5NzUsNyBAQAogICB1bnNpZ25lZCBpbnQgY3VybGZkczsKICAgc3RydWN0IHBvbGxmZCAqdWZkcyA9IE5VTEw7CiAgIGxvbmcgdGltZW91dF9pbnRlcm5hbDsKKyAgaW50IHJldGNvZGUgPSAwOwogCiAgIGlmKCFHT09EX01VTFRJX0hBTkRMRShtdWx0aSkpCiAgICAgcmV0dXJuIENVUkxNX0JBRF9IQU5ETEU7CkBAIC04OTYsMTggKzEwNjgsMjAgQEAKICAgfQogCiAgIGlmKG5mZHMpIHsKKyAgICBpbnQgcG9sbHJjOwogICAgIC8qIHdhaXQuLi4gKi8KLSAgICBpbmZvZihkYXRhLCAiQ3VybF9wb2xsKCVkIGRzLCAlZCBtcylcbiIsIG5mZHMsIHRpbWVvdXRfbXMpOwotICAgIGkgPSBDdXJsX3BvbGwodWZkcywgbmZkcywgdGltZW91dF9tcyk7CisgICAgcG9sbHJjID0gQ3VybF9wb2xsKHVmZHMsIG5mZHMsIHRpbWVvdXRfbXMpOworICAgIERFQlVHRihpbmZvZihkYXRhLCAiQ3VybF9wb2xsKCVkIGRzLCAlZCBtcykgPT0gJWRcbiIsCisgICAgICAgICAgICAgICAgIG5mZHMsIHRpbWVvdXRfbXMsIHBvbGxyYykpOwogCi0gICAgaWYoaSkgewotICAgICAgdW5zaWduZWQgaW50IGo7CisgICAgaWYocG9sbHJjID4gMCkgeworICAgICAgcmV0Y29kZSA9IHBvbGxyYzsKICAgICAgIC8qIGNvcHkgcmV2ZW50cyByZXN1bHRzIGZyb20gdGhlIHBvbGwgdG8gdGhlIGN1cmxfbXVsdGlfd2FpdCBwb2xsCiAgICAgICAgICBzdHJ1Y3QsIHRoZSBiaXQgdmFsdWVzIG9mIHRoZSBhY3R1YWwgdW5kZXJseWluZyBwb2xsKCkgaW1wbGVtZW50YXRpb24KICAgICAgICAgIG1heSBub3QgYmUgdGhlIHNhbWUgYXMgdGhlIG9uZXMgaW4gdGhlIHB1YmxpYyBsaWJjdXJsIEFQSSEgKi8KLSAgICAgIGZvcihqID0gMDsgaiA8IGV4dHJhX25mZHM7IGorKykgeworICAgICAgZm9yKGkgPSAwOyBpIDwgZXh0cmFfbmZkczsgaSsrKSB7CiAgICAgICAgIHVuc2lnbmVkIHNob3J0IG1hc2sgPSAwOwotICAgICAgICB1bnNpZ25lZCByID0gdWZkc1tjdXJsZmRzICsgal0ucmV2ZW50czsKKyAgICAgICAgdW5zaWduZWQgciA9IHVmZHNbY3VybGZkcyArIGldLnJldmVudHM7CiAKICAgICAgICAgaWYociAmIFBPTExJTikKICAgICAgICAgICBtYXNrIHw9IENVUkxfV0FJVF9QT0xMSU47CkBAIC05MTYsMTYgKzEwOTAsMTQgQEAKICAgICAgICAgaWYociAmIFBPTExQUkkpCiAgICAgICAgICAgbWFzayB8PSBDVVJMX1dBSVRfUE9MTFBSSTsKIAotICAgICAgICBleHRyYV9mZHNbal0ucmV2ZW50cyA9IG1hc2s7CisgICAgICAgIGV4dHJhX2Zkc1tpXS5yZXZlbnRzID0gbWFzazsKICAgICAgIH0KICAgICB9CiAgIH0KLSAgZWxzZQotICAgIGkgPSAwOwogCiAgIGZyZWUodWZkcyk7CiAgIGlmKHJldCkKLSAgICAqcmV0ID0gaTsKKyAgICAqcmV0ID0gcmV0Y29kZTsKICAgcmV0dXJuIENVUkxNX09LOwogfQogCkBAIC05NTcsNiArMTEyOSwxNjEgQEAKICAgcmV0dXJuIHJldHZhbDsKIH0KIAorQ1VSTE1jb2RlIEN1cmxfbXVsdGlfYWRkX3BlcmZvcm0oc3RydWN0IEN1cmxfbXVsdGkgKm11bHRpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pCit7CisgIENVUkxNY29kZSByYzsKKworICByYyA9IGN1cmxfbXVsdGlfYWRkX2hhbmRsZShtdWx0aSwgZGF0YSk7CisgIGlmKCFyYykgeworICAgIHN0cnVjdCBTaW5nbGVSZXF1ZXN0ICprID0gJmRhdGEtPnJlcTsKKworICAgIC8qIHBhc3MgaW4gTlVMTCBmb3IgJ2Nvbm4nIGhlcmUgc2luY2Ugd2UgZG9uJ3Qgd2FudCB0byBpbml0IHRoZQorICAgICAgIGNvbm5lY3Rpb24sIG9ubHkgdGhpcyB0cmFuc2ZlciAqLworICAgIEN1cmxfaW5pdF9kbyhkYXRhLCBOVUxMKTsKKworICAgIC8qIHRha2UgdGhpcyBoYW5kbGUgdG8gdGhlIHBlcmZvcm0gc3RhdGUgcmlnaHQgYXdheSAqLworICAgIG11bHRpc3RhdGUoZGF0YSwgQ1VSTE1fU1RBVEVfUEVSRk9STSk7CisgICAgZGF0YS0+ZWFzeV9jb25uID0gY29ubjsKKyAgICBrLT5rZWVwb24gfD0gS0VFUF9SRUNWOyAvKiBzZXR1cCB0byByZWNlaXZlISAqLworICB9CisgIHJldHVybiByYzsKK30KKworc3RhdGljIENVUkxjb2RlIG11bHRpX3JlY29ubmVjdF9yZXF1ZXN0KHN0cnVjdCBjb25uZWN0ZGF0YSAqKmNvbm5wKQoreworICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKKyAgc3RydWN0IGNvbm5lY3RkYXRhICpjb25uID0gKmNvbm5wOworICBzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSA9IGNvbm4tPmRhdGE7CisKKyAgLyogVGhpcyB3YXMgYSByZS11c2Ugb2YgYSBjb25uZWN0aW9uIGFuZCB3ZSBnb3QgYSB3cml0ZSBlcnJvciBpbiB0aGUKKyAgICogRE8tcGhhc2UuIFRoZW4gd2UgRElTQ09OTkVDVCB0aGlzIGNvbm5lY3Rpb24gYW5kIGhhdmUgYW5vdGhlciBhdHRlbXB0IHRvCisgICAqIENPTk5FQ1QgYW5kIHRoZW4gRE8gYWdhaW4hIFRoZSByZXRyeSBjYW5ub3QgcG9zc2libHkgZmluZCBhbm90aGVyCisgICAqIGNvbm5lY3Rpb24gdG8gcmUtdXNlLCBzaW5jZSB3ZSBvbmx5IGtlZXAgb25lIHBvc3NpYmxlIGNvbm5lY3Rpb24gZm9yCisgICAqIGVhY2guICAqLworCisgIGluZm9mKGRhdGEsICJSZS11c2VkIGNvbm5lY3Rpb24gc2VlbXMgZGVhZCwgZ2V0IGEgbmV3IG9uZVxuIik7CisKKyAgY29ubmNsb3NlKGNvbm4sICJSZWNvbm5lY3QgZGVhZCBjb25uZWN0aW9uIik7IC8qIGVuZm9yY2UgY2xvc2UgKi8KKyAgcmVzdWx0ID0gbXVsdGlfZG9uZSgmY29ubiwgcmVzdWx0LCBGQUxTRSk7IC8qIHdlIGFyZSBzbyBkb25lIHdpdGggdGhpcyAqLworCisgIC8qIGNvbm4gbWF5IG5vIGxvbmdlciBiZSBhIGdvb2QgcG9pbnRlciwgY2xlYXIgaXQgdG8gYXZvaWQgbWlzdGFrZXMgYnkKKyAgICAgcGFyZW50IGZ1bmN0aW9ucyAqLworICAqY29ubnAgPSBOVUxMOworCisgIC8qCisgICAqIFdlIG5lZWQgdG8gY2hlY2sgZm9yIENVUkxFX1NFTkRfRVJST1IgaGVyZSBhcyB3ZWxsLiBUaGlzIGNvdWxkIGhhcHBlbgorICAgKiB3aGVuIHRoZSByZXF1ZXN0IGZhaWxlZCBvbiBhIEZUUCBjb25uZWN0aW9uIGFuZCB0aHVzIG11bHRpX2RvbmUoKSBpdHNlbGYKKyAgICogdHJpZWQgdG8gdXNlIHRoZSBjb25uZWN0aW9uIChhZ2FpbikuCisgICAqLworICBpZighcmVzdWx0IHx8IChDVVJMRV9TRU5EX0VSUk9SID09IHJlc3VsdCkpIHsKKyAgICBib29sIGFzeW5jOworICAgIGJvb2wgcHJvdG9jb2xfZG9uZSA9IFRSVUU7CisKKyAgICAvKiBOb3csIHJlZG8gdGhlIGNvbm5lY3QgYW5kIGdldCBhIG5ldyBjb25uZWN0aW9uICovCisgICAgcmVzdWx0ID0gQ3VybF9jb25uZWN0KGRhdGEsIGNvbm5wLCAmYXN5bmMsICZwcm90b2NvbF9kb25lKTsKKyAgICBpZighcmVzdWx0KSB7CisgICAgICAvKiBXZSBoYXZlIGNvbm5lY3RlZCBvciBzZW50IGF3YXkgYSBuYW1lIHJlc29sdmUgcXVlcnkgZmluZSAqLworCisgICAgICBjb25uID0gKmNvbm5wOyAvKiBzZXR1cCBjb25uIHRvIGFnYWluIHBvaW50IHRvIHNvbWV0aGluZyBuaWNlICovCisgICAgICBpZihhc3luYykgeworICAgICAgICAvKiBOb3csIGlmIGFzeW5jIGlzIFRSVUUgaGVyZSwgd2UgbmVlZCB0byB3YWl0IGZvciB0aGUgbmFtZQorICAgICAgICAgICB0byByZXNvbHZlICovCisgICAgICAgIHJlc3VsdCA9IEN1cmxfcmVzb2x2ZXJfd2FpdF9yZXNvbHYoY29ubiwgTlVMTCk7CisgICAgICAgIGlmKHJlc3VsdCkKKyAgICAgICAgICByZXR1cm4gcmVzdWx0OworCisgICAgICAgIC8qIFJlc29sdmVkLCBjb250aW51ZSB3aXRoIHRoZSBjb25uZWN0aW9uICovCisgICAgICAgIHJlc3VsdCA9IEN1cmxfYXN5bmNfcmVzb2x2ZWQoY29ubiwgJnByb3RvY29sX2RvbmUpOworICAgICAgICBpZihyZXN1bHQpCisgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgIH0KKyAgICB9CisgIH0KKworICByZXR1cm4gcmVzdWx0OworfQorCisvKgorICogZG9fY29tcGxldGUgaXMgY2FsbGVkIHdoZW4gdGhlIERPIGFjdGlvbnMgYXJlIGNvbXBsZXRlLgorICoKKyAqIFdlIGluaXQgY2h1bmtpbmcgYW5kIHRyYWlsZXIgYml0cyB0byB0aGVpciBkZWZhdWx0IHZhbHVlcyBoZXJlIGltbWVkaWF0ZWx5CisgKiBiZWZvcmUgcmVjZWl2aW5nIGFueSBoZWFkZXIgZGF0YSBmb3IgdGhlIGN1cnJlbnQgcmVxdWVzdCBpbiB0aGUgcGlwZWxpbmUuCisgKi8KK3N0YXRpYyB2b2lkIGRvX2NvbXBsZXRlKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubikKK3sKKyAgY29ubi0+ZGF0YS0+cmVxLmNodW5rPUZBTFNFOworICBjb25uLT5kYXRhLT5yZXEubWF4ZmQgPSAoY29ubi0+c29ja2ZkPmNvbm4tPndyaXRlc29ja2ZkPworICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubi0+c29ja2ZkOmNvbm4tPndyaXRlc29ja2ZkKSsxOworICBDdXJsX3BncnNUaW1lKGNvbm4tPmRhdGEsIFRJTUVSX1BSRVRSQU5TRkVSKTsKK30KKworc3RhdGljIENVUkxjb2RlIG11bHRpX2RvKHN0cnVjdCBjb25uZWN0ZGF0YSAqKmNvbm5wLCBib29sICpkb25lKQoreworICBDVVJMY29kZSByZXN1bHQ9Q1VSTEVfT0s7CisgIHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiA9ICpjb25ucDsKKyAgc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEgPSBjb25uLT5kYXRhOworCisgIGlmKGNvbm4tPmhhbmRsZXItPmRvX2l0KSB7CisgICAgLyogZ2VuZXJpYyBwcm90b2NvbC1zcGVjaWZpYyBmdW5jdGlvbiBwb2ludGVyIHNldCBpbiBjdXJsX2Nvbm5lY3QoKSAqLworICAgIHJlc3VsdCA9IGNvbm4tPmhhbmRsZXItPmRvX2l0KGNvbm4sIGRvbmUpOworCisgICAgLyogVGhpcyB3YXMgZm9ybWVybHkgZG9uZSBpbiB0cmFuc2Zlci5jLCBidXQgd2UgYmV0dGVyIGRvIGl0IGhlcmUgKi8KKyAgICBpZigoQ1VSTEVfU0VORF9FUlJPUiA9PSByZXN1bHQpICYmIGNvbm4tPmJpdHMucmV1c2UpIHsKKyAgICAgIC8qCisgICAgICAgKiBJZiB0aGUgY29ubmVjdGlvbiBpcyB1c2luZyBhbiBlYXN5IGhhbmRsZSwgY2FsbCByZWNvbm5lY3QKKyAgICAgICAqIHRvIHJlLWVzdGFibGlzaCB0aGUgY29ubmVjdGlvbi4gIE90aGVyd2lzZSwgbGV0IHRoZSBtdWx0aSBsb2dpYworICAgICAgICogZmlndXJlIG91dCBob3cgdG8gcmUtZXN0YWJsaXNoIHRoZSBjb25uZWN0aW9uLgorICAgICAgICovCisgICAgICBpZighZGF0YS0+bXVsdGkpIHsKKyAgICAgICAgcmVzdWx0ID0gbXVsdGlfcmVjb25uZWN0X3JlcXVlc3QoY29ubnApOworCisgICAgICAgIGlmKCFyZXN1bHQpIHsKKyAgICAgICAgICAvKiAuLi4gZmluYWxseSBiYWNrIHRvIGFjdHVhbGx5IHJldHJ5IHRoZSBETyBwaGFzZSAqLworICAgICAgICAgIGNvbm4gPSAqY29ubnA7IC8qIHJlLWFzc2lnbiBjb25uIHNpbmNlIG11bHRpX3JlY29ubmVjdF9yZXF1ZXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlcyBhIG5ldyBjb25uZWN0aW9uICovCisgICAgICAgICAgcmVzdWx0ID0gY29ubi0+aGFuZGxlci0+ZG9faXQoY29ubiwgZG9uZSk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBpZighcmVzdWx0ICYmICpkb25lKQorICAgICAgLyogZG9fY29tcGxldGUgbXVzdCBiZSBjYWxsZWQgYWZ0ZXIgdGhlIHByb3RvY29sLXNwZWNpZmljIERPIGZ1bmN0aW9uICovCisgICAgICBkb19jb21wbGV0ZShjb25uKTsKKyAgfQorICByZXR1cm4gcmVzdWx0OworfQorCisvKgorICogbXVsdGlfZG9fbW9yZSgpIGlzIGNhbGxlZCBkdXJpbmcgdGhlIERPX01PUkUgbXVsdGkgc3RhdGUuIEl0IGlzIGJhc2ljYWxseSBhCisgKiBzZWNvbmQgc3RhZ2UgRE8gc3RhdGUgd2hpY2ggKHdyb25nbHkpIHdhcyBpbnRyb2R1Y2VkIHRvIHN1cHBvcnQgRlRQJ3MKKyAqIHNlY29uZCBjb25uZWN0aW9uLgorICoKKyAqIFRPRE86IEEgZnV0dXJlIGxpYmN1cmwgc2hvdWxkIGJlIGFibGUgdG8gd29yayBhd2F5IHRoaXMgc3RhdGUuCisgKgorICogJ2NvbXBsZXRlJyBjYW4gcmV0dXJuIDAgZm9yIGluY29tcGxldGUsIDEgZm9yIGRvbmUgYW5kIC0xIGZvciBnbyBiYWNrIHRvCisgKiBET0lORyBzdGF0ZSB0aGVyZSdzIG1vcmUgd29yayB0byBkbyEKKyAqLworCitzdGF0aWMgQ1VSTGNvZGUgbXVsdGlfZG9fbW9yZShzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGludCAqY29tcGxldGUpCit7CisgIENVUkxjb2RlIHJlc3VsdD1DVVJMRV9PSzsKKworICAqY29tcGxldGUgPSAwOworCisgIGlmKGNvbm4tPmhhbmRsZXItPmRvX21vcmUpCisgICAgcmVzdWx0ID0gY29ubi0+aGFuZGxlci0+ZG9fbW9yZShjb25uLCBjb21wbGV0ZSk7CisKKyAgaWYoIXJlc3VsdCAmJiAoKmNvbXBsZXRlID09IDEpKQorICAgIC8qIGRvX2NvbXBsZXRlIG11c3QgYmUgY2FsbGVkIGFmdGVyIHRoZSBwcm90b2NvbC1zcGVjaWZpYyBETyBmdW5jdGlvbiAqLworICAgIGRvX2NvbXBsZXRlKGNvbm4pOworCisgIHJldHVybiByZXN1bHQ7Cit9CisKIHN0YXRpYyBDVVJMTWNvZGUgbXVsdGlfcnVuc2luZ2xlKHN0cnVjdCBDdXJsX211bHRpICptdWx0aSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0aW1ldmFsIG5vdywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhKQpAQCAtMTA0Miw3ICsxMzY5LDcgQEAKICAgICAgICAgICAgIGZhaWxmKGRhdGEsICJPcGVyYXRpb24gdGltZWQgb3V0IGFmdGVyICVsZCBtaWxsaXNlY29uZHMgd2l0aCAlIgogICAgICAgICAgICAgICAgICAgQ1VSTF9GT1JNQVRfQ1VSTF9PRkZfVCAiIG91dCBvZiAlIgogICAgICAgICAgICAgICAgICAgQ1VSTF9GT1JNQVRfQ1VSTF9PRkZfVCAiIGJ5dGVzIHJlY2VpdmVkIiwKLSAgICAgICAgICAgICAgICAgIEN1cmxfdHZkaWZmKGstPm5vdywgZGF0YS0+cHJvZ3Jlc3MudF9zdGFydHNpbmdsZSksCisgICAgICAgICAgICAgICAgICBDdXJsX3R2ZGlmZihub3csIGRhdGEtPnByb2dyZXNzLnRfc3RhcnRzaW5nbGUpLAogICAgICAgICAgICAgICAgICAgay0+Ynl0ZWNvdW50LCBrLT5zaXplKTsKICAgICAgICAgICB9CiAgICAgICAgICAgZWxzZSB7CkBAIC0xMDU5LDcgKzEzODYsNyBAQAogICAgICAgICAgIGRpc2Nvbm5lY3RfY29ubiA9IFRSVUU7CiAgICAgICAgIH0KICAgICAgICAgcmVzdWx0ID0gQ1VSTEVfT1BFUkFUSU9OX1RJTUVET1VUOwotICAgICAgICAodm9pZClDdXJsX2RvbmUoJmRhdGEtPmVhc3lfY29ubiwgcmVzdWx0LCBUUlVFKTsKKyAgICAgICAgKHZvaWQpbXVsdGlfZG9uZSgmZGF0YS0+ZWFzeV9jb25uLCByZXN1bHQsIFRSVUUpOwogICAgICAgICAvKiBTa2lwIHRoZSBzdGF0ZW1hY2hpbmUgYW5kIGdvIGRpcmVjdGx5IHRvIGVycm9yIGhhbmRsaW5nIHNlY3Rpb24uICovCiAgICAgICAgIGdvdG8gc3RhdGVtYWNoaW5lX2VuZDsKICAgICAgIH0KQEAgLTExMzcsOSArMTQ2NCwxNyBAQAogICAgIHsKICAgICAgIHN0cnVjdCBDdXJsX2Ruc19lbnRyeSAqZG5zID0gTlVMTDsKICAgICAgIHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiA9IGRhdGEtPmVhc3lfY29ubjsKKyAgICAgIGNvbnN0IGNoYXIgKmhvc3RuYW1lOworCisgICAgICBpZihjb25uLT5iaXRzLnByb3h5KQorICAgICAgICBob3N0bmFtZSA9IGNvbm4tPnByb3h5Lm5hbWU7CisgICAgICBlbHNlIGlmKGNvbm4tPmJpdHMuY29ubl90b19ob3N0KQorICAgICAgICBob3N0bmFtZSA9IGNvbm4tPmNvbm5fdG9faG9zdC5uYW1lOworICAgICAgZWxzZQorICAgICAgICBob3N0bmFtZSA9IGNvbm4tPmhvc3QubmFtZTsKIAogICAgICAgLyogY2hlY2sgaWYgd2UgaGF2ZSB0aGUgbmFtZSByZXNvbHZlZCBieSBub3cgKi8KLSAgICAgIGRucyA9IEN1cmxfZmV0Y2hfYWRkcihjb25uLCBjb25uLT5ob3N0Lm5hbWUsIChpbnQpY29ubi0+cG9ydCk7CisgICAgICBkbnMgPSBDdXJsX2ZldGNoX2FkZHIoY29ubiwgaG9zdG5hbWUsIChpbnQpY29ubi0+cG9ydCk7CiAKICAgICAgIGlmKGRucykgewogI2lmZGVmIENVUkxSRVNfQVNZTkNICkBAIC0xMTQ3LDcgKzE0ODIsNyBAQAogICAgICAgICBjb25uLT5hc3luYy5kb25lID0gVFJVRTsKICNlbmRpZgogICAgICAgICByZXN1bHQgPSBDVVJMRV9PSzsKLSAgICAgICAgaW5mb2YoZGF0YSwgIkhvc3RuYW1lIHdhcyBmb3VuZCBpbiBETlMgY2FjaGVcbiIpOworICAgICAgICBpbmZvZihkYXRhLCAiSG9zdG5hbWUgJyVzJyB3YXMgZm91bmQgaW4gRE5TIGNhY2hlXG4iLCBob3N0bmFtZSk7CiAgICAgICB9CiAKICAgICAgIGlmKCFkbnMpCkBAIC0xMjAwLDE3ICsxNTM1LDE5IEBACiAgICAgICAvKiB0aGlzIGlzIEhUVFAtc3BlY2lmaWMsIGJ1dCBzZW5kaW5nIENPTk5FQ1QgdG8gYSBwcm94eSBpcyBIVFRQLi4uICovCiAgICAgICByZXN1bHQgPSBDdXJsX2h0dHBfY29ubmVjdChkYXRhLT5lYXN5X2Nvbm4sICZwcm90b2NvbF9jb25uZWN0KTsKIAotICAgICAgcmMgPSBDVVJMTV9DQUxMX01VTFRJX1BFUkZPUk07CiAgICAgICBpZihkYXRhLT5lYXN5X2Nvbm4tPmJpdHMucHJveHlfY29ubmVjdF9jbG9zZWQpIHsKKyAgICAgICAgcmMgPSBDVVJMTV9DQUxMX01VTFRJX1BFUkZPUk07CiAgICAgICAgIC8qIGNvbm5lY3QgYmFjayB0byBwcm94eSBhZ2FpbiAqLwogICAgICAgICByZXN1bHQgPSBDVVJMRV9PSzsKLSAgICAgICAgQ3VybF9kb25lKCZkYXRhLT5lYXN5X2Nvbm4sIENVUkxFX09LLCBGQUxTRSk7CisgICAgICAgIG11bHRpX2RvbmUoJmRhdGEtPmVhc3lfY29ubiwgQ1VSTEVfT0ssIEZBTFNFKTsKICAgICAgICAgbXVsdGlzdGF0ZShkYXRhLCBDVVJMTV9TVEFURV9DT05ORUNUKTsKICAgICAgIH0KICAgICAgIGVsc2UgaWYoIXJlc3VsdCkgewotICAgICAgICBpZihkYXRhLT5lYXN5X2Nvbm4tPnR1bm5lbF9zdGF0ZVtGSVJTVFNPQ0tFVF0gPT0gVFVOTkVMX0NPTVBMRVRFKQorICAgICAgICBpZihkYXRhLT5lYXN5X2Nvbm4tPnR1bm5lbF9zdGF0ZVtGSVJTVFNPQ0tFVF0gPT0gVFVOTkVMX0NPTVBMRVRFKSB7CisgICAgICAgICAgcmMgPSBDVVJMTV9DQUxMX01VTFRJX1BFUkZPUk07CiAgICAgICAgICAgLyogaW5pdGlhdGUgcHJvdG9jb2wgY29ubmVjdCBwaGFzZSAqLwogICAgICAgICAgIG11bHRpc3RhdGUoZGF0YSwgQ1VSTE1fU1RBVEVfU0VORFBST1RPQ09OTkVDVCk7CisgICAgICAgIH0KICAgICAgIH0KICAgICAgIGJyZWFrOwogI2VuZGlmCkBAIC0xMjQ2LDcgKzE1ODMsNyBAQAogICAgICAgZWxzZSBpZihyZXN1bHQpIHsKICAgICAgICAgLyogZmFpbHVyZSBkZXRlY3RlZCAqLwogICAgICAgICBDdXJsX3Bvc3R0cmFuc2ZlcihkYXRhKTsKLSAgICAgICAgQ3VybF9kb25lKCZkYXRhLT5lYXN5X2Nvbm4sIHJlc3VsdCwgVFJVRSk7CisgICAgICAgIG11bHRpX2RvbmUoJmRhdGEtPmVhc3lfY29ubiwgcmVzdWx0LCBUUlVFKTsKICAgICAgICAgZGlzY29ubmVjdF9jb25uID0gVFJVRTsKICAgICAgIH0KICAgICAgIGJyZWFrOwpAQCAtMTI2Myw3ICsxNjAwLDcgQEAKICAgICAgIGVsc2UgaWYocmVzdWx0KSB7CiAgICAgICAgIC8qIGZhaWx1cmUgZGV0ZWN0ZWQgKi8KICAgICAgICAgQ3VybF9wb3N0dHJhbnNmZXIoZGF0YSk7Ci0gICAgICAgIEN1cmxfZG9uZSgmZGF0YS0+ZWFzeV9jb25uLCByZXN1bHQsIFRSVUUpOworICAgICAgICBtdWx0aV9kb25lKCZkYXRhLT5lYXN5X2Nvbm4sIHJlc3VsdCwgVFJVRSk7CiAgICAgICAgIGRpc2Nvbm5lY3RfY29ubiA9IFRSVUU7CiAgICAgICB9CiAgICAgICBicmVhazsKQEAgLTEyODcsOSArMTYyNCw5IEBACiAgICAgICB9CiAgICAgICBlbHNlIHsKICAgICAgICAgLyogUGVyZm9ybSB0aGUgcHJvdG9jb2wncyBETyBhY3Rpb24gKi8KLSAgICAgICAgcmVzdWx0ID0gQ3VybF9kbygmZGF0YS0+ZWFzeV9jb25uLCAmZG9waGFzZV9kb25lKTsKKyAgICAgICAgcmVzdWx0ID0gbXVsdGlfZG8oJmRhdGEtPmVhc3lfY29ubiwgJmRvcGhhc2VfZG9uZSk7CiAKLSAgICAgICAgLyogV2hlbiBDdXJsX2RvKCkgcmV0dXJucyBmYWlsdXJlLCBkYXRhLT5lYXN5X2Nvbm4gbWlnaHQgYmUgTlVMTCEgKi8KKyAgICAgICAgLyogV2hlbiBtdWx0aV9kbygpIHJldHVybnMgZmFpbHVyZSwgZGF0YS0+ZWFzeV9jb25uIG1pZ2h0IGJlIE5VTEwhICovCiAKICAgICAgICAgaWYoIXJlc3VsdCkgewogICAgICAgICAgIGlmKCFkb3BoYXNlX2RvbmUpIHsKQEAgLTEyOTgsNyArMTYzNSw3IEBACiAgICAgICAgICAgICAgIHN0cnVjdCBXaWxkY2FyZERhdGEgKndjID0gJmRhdGEtPndpbGRjYXJkOwogICAgICAgICAgICAgICBpZih3Yy0+c3RhdGUgPT0gQ1VSTFdDX0RPTkUgfHwgd2MtPnN0YXRlID09IENVUkxXQ19TS0lQKSB7CiAgICAgICAgICAgICAgICAgLyogc2tpcCBzb21lIHN0YXRlcyBpZiBpdCBpcyBpbXBvcnRhbnQgKi8KLSAgICAgICAgICAgICAgICBDdXJsX2RvbmUoJmRhdGEtPmVhc3lfY29ubiwgQ1VSTEVfT0ssIEZBTFNFKTsKKyAgICAgICAgICAgICAgICBtdWx0aV9kb25lKCZkYXRhLT5lYXN5X2Nvbm4sIENVUkxFX09LLCBGQUxTRSk7CiAgICAgICAgICAgICAgICAgbXVsdGlzdGF0ZShkYXRhLCBDVVJMTV9TVEFURV9ET05FKTsKICAgICAgICAgICAgICAgICByYyA9IENVUkxNX0NBTExfTVVMVElfUEVSRk9STTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTEzNDUsNyArMTY4Miw3IEBACiAgICAgICAgICAgICByZXRyeSA9IChuZXd1cmwpP1RSVUU6RkFMU0U7CiAKICAgICAgICAgICBDdXJsX3Bvc3R0cmFuc2ZlcihkYXRhKTsKLSAgICAgICAgICBkcmMgPSBDdXJsX2RvbmUoJmRhdGEtPmVhc3lfY29ubiwgcmVzdWx0LCBGQUxTRSk7CisgICAgICAgICAgZHJjID0gbXVsdGlfZG9uZSgmZGF0YS0+ZWFzeV9jb25uLCByZXN1bHQsIEZBTFNFKTsKIAogICAgICAgICAgIC8qIFdoZW4gc2V0IHRvIHJldHJ5IHRoZSBjb25uZWN0aW9uLCB3ZSBtdXN0IHRvIGdvIGJhY2sgdG8KICAgICAgICAgICAgKiB0aGUgQ09OTkVDVCBzdGF0ZSAqLwpAQCAtMTM4MCw3ICsxNzE3LDcgQEAKICAgICAgICAgICAvKiBmYWlsdXJlIGRldGVjdGVkICovCiAgICAgICAgICAgQ3VybF9wb3N0dHJhbnNmZXIoZGF0YSk7CiAgICAgICAgICAgaWYoZGF0YS0+ZWFzeV9jb25uKQotICAgICAgICAgICAgQ3VybF9kb25lKCZkYXRhLT5lYXN5X2Nvbm4sIHJlc3VsdCwgRkFMU0UpOworICAgICAgICAgICAgbXVsdGlfZG9uZSgmZGF0YS0+ZWFzeV9jb25uLCByZXN1bHQsIEZBTFNFKTsKICAgICAgICAgICBkaXNjb25uZWN0X2Nvbm4gPSBUUlVFOwogICAgICAgICB9CiAgICAgICB9CkBAIC0xNDAyLDcgKzE3MzksNyBAQAogICAgICAgZWxzZSB7CiAgICAgICAgIC8qIGZhaWx1cmUgZGV0ZWN0ZWQgKi8KICAgICAgICAgQ3VybF9wb3N0dHJhbnNmZXIoZGF0YSk7Ci0gICAgICAgIEN1cmxfZG9uZSgmZGF0YS0+ZWFzeV9jb25uLCByZXN1bHQsIEZBTFNFKTsKKyAgICAgICAgbXVsdGlfZG9uZSgmZGF0YS0+ZWFzeV9jb25uLCByZXN1bHQsIEZBTFNFKTsKICAgICAgICAgZGlzY29ubmVjdF9jb25uID0gVFJVRTsKICAgICAgIH0KICAgICAgIGJyZWFrOwpAQCAtMTQxMSwxMCArMTc0OCwxMCBAQAogICAgICAgLyoKICAgICAgICAqIFdoZW4gd2UgYXJlIGNvbm5lY3RlZCwgRE8gTU9SRSBhbmQgdGhlbiBnbyBET19ET05FCiAgICAgICAgKi8KLSAgICAgIHJlc3VsdCA9IEN1cmxfZG9fbW9yZShkYXRhLT5lYXN5X2Nvbm4sICZjb250cm9sKTsKKyAgICAgIHJlc3VsdCA9IG11bHRpX2RvX21vcmUoZGF0YS0+ZWFzeV9jb25uLCAmY29udHJvbCk7CiAKICAgICAgIC8qIE5vIG5lZWQgdG8gcmVtb3ZlIHRoaXMgaGFuZGxlIGZyb20gdGhlIHNlbmQgcGlwZWxpbmUgaGVyZSBzaW5jZSB0aGF0Ci0gICAgICAgICBpcyBkb25lIGluIEN1cmxfZG9uZSgpICovCisgICAgICAgICBpcyBkb25lIGluIG11bHRpX2RvbmUoKSAqLwogICAgICAgaWYoIXJlc3VsdCkgewogICAgICAgICBpZihjb250cm9sKSB7CiAgICAgICAgICAgLyogaWYgcG9zaXRpdmUsIGFkdmFuY2UgdG8gRE9fRE9ORQpAQCAtMTQzMSw3ICsxNzY4LDcgQEAKICAgICAgIGVsc2UgewogICAgICAgICAvKiBmYWlsdXJlIGRldGVjdGVkICovCiAgICAgICAgIEN1cmxfcG9zdHRyYW5zZmVyKGRhdGEpOwotICAgICAgICBDdXJsX2RvbmUoJmRhdGEtPmVhc3lfY29ubiwgcmVzdWx0LCBGQUxTRSk7CisgICAgICAgIG11bHRpX2RvbmUoJmRhdGEtPmVhc3lfY29ubiwgcmVzdWx0LCBGQUxTRSk7CiAgICAgICAgIGRpc2Nvbm5lY3RfY29ubiA9IFRSVUU7CiAgICAgICB9CiAgICAgICBicmVhazsKQEAgLTE0NjksNyArMTgwNiw3IEBACiAgICAgICAgIHJlc3VsdCA9IEN1cmxfc3BlZWRjaGVjayhkYXRhLCBub3cpOwogCiAgICAgICBpZigoIChkYXRhLT5zZXQubWF4X3NlbmRfc3BlZWQgPT0gMCkgfHwKLSAgICAgICAgICAgKGRhdGEtPnByb2dyZXNzLnVsc3BlZWQgPCBkYXRhLT5zZXQubWF4X3NlbmRfc3BlZWQgKSkgICYmCisgICAgICAgICAgIChkYXRhLT5wcm9ncmVzcy51bHNwZWVkIDwgZGF0YS0+c2V0Lm1heF9zZW5kX3NwZWVkKSkgICYmCiAgICAgICAgICAoIChkYXRhLT5zZXQubWF4X3JlY3Zfc3BlZWQgPT0gMCkgfHwKICAgICAgICAgICAgKGRhdGEtPnByb2dyZXNzLmRsc3BlZWQgPCBkYXRhLT5zZXQubWF4X3JlY3Zfc3BlZWQpKSkKICAgICAgICAgbXVsdGlzdGF0ZShkYXRhLCBDVVJMTV9TVEFURV9QRVJGT1JNKTsKQEAgLTE1NTEsMTEgKzE4ODgsMTIgQEAKICAgICAgICAgICogaGFwcGVuZWQgaW4gdGhlIGRhdGEgY29ubmVjdGlvbi4KICAgICAgICAgICovCiAKLSAgICAgICAgaWYoIShkYXRhLT5lYXN5X2Nvbm4tPmhhbmRsZXItPmZsYWdzICYgUFJPVE9QVF9EVUFMKSkKKyAgICAgICAgaWYoIShkYXRhLT5lYXN5X2Nvbm4tPmhhbmRsZXItPmZsYWdzICYgUFJPVE9QVF9EVUFMKSAmJgorICAgICAgICAgICByZXN1bHQgIT0gQ1VSTEVfSFRUUDJfU1RSRUFNKQogICAgICAgICAgIGNvbm5jbG9zZShkYXRhLT5lYXN5X2Nvbm4sICJUcmFuc2ZlciByZXR1cm5lZCBlcnJvciIpOwogCiAgICAgICAgIEN1cmxfcG9zdHRyYW5zZmVyKGRhdGEpOwotICAgICAgICBDdXJsX2RvbmUoJmRhdGEtPmVhc3lfY29ubiwgcmVzdWx0LCBGQUxTRSk7CisgICAgICAgIG11bHRpX2RvbmUoJmRhdGEtPmVhc3lfY29ubiwgcmVzdWx0LCBGQUxTRSk7CiAgICAgICB9CiAgICAgICBlbHNlIGlmKGRvbmUpIHsKICAgICAgICAgZm9sbG93dHlwZSBmb2xsb3c9Rk9MTE9XX05PTkU7CkBAIC0xNTg2LDcgKzE5MjQsNyBAQAogICAgICAgICAgIH0KICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICBmb2xsb3cgPSBGT0xMT1dfUkVUUlk7Ci0gICAgICAgICAgcmVzdWx0ID0gQ3VybF9kb25lKCZkYXRhLT5lYXN5X2Nvbm4sIENVUkxFX09LLCBGQUxTRSk7CisgICAgICAgICAgcmVzdWx0ID0gbXVsdGlfZG9uZSgmZGF0YS0+ZWFzeV9jb25uLCBDVVJMRV9PSywgRkFMU0UpOwogICAgICAgICAgIGlmKCFyZXN1bHQpIHsKICAgICAgICAgICAgIHJlc3VsdCA9IEN1cmxfZm9sbG93KGRhdGEsIG5ld3VybCwgZm9sbG93KTsKICAgICAgICAgICAgIGlmKCFyZXN1bHQpIHsKQEAgLTE2MzYsMTQgKzE5NzQsMTQgQEAKICAgICAgICAgQ3VybF9tdWx0aV9wcm9jZXNzX3BlbmRpbmdfaGFuZGxlcyhtdWx0aSk7CiAKICAgICAgICAgLyogcG9zdC10cmFuc2ZlciBjb21tYW5kICovCi0gICAgICAgIHJlcyA9IEN1cmxfZG9uZSgmZGF0YS0+ZWFzeV9jb25uLCByZXN1bHQsIEZBTFNFKTsKKyAgICAgICAgcmVzID0gbXVsdGlfZG9uZSgmZGF0YS0+ZWFzeV9jb25uLCByZXN1bHQsIEZBTFNFKTsKIAogICAgICAgICAvKiBhbGxvdyBhIHByZXZpb3VzbHkgc2V0IGVycm9yIGNvZGUgdGFrZSBwcmVjZWRlbmNlICovCiAgICAgICAgIGlmKCFyZXN1bHQpCiAgICAgICAgICAgcmVzdWx0ID0gcmVzOwogCiAgICAgICAgIC8qCi0gICAgICAgICAqIElmIHRoZXJlIGFyZSBvdGhlciBoYW5kbGVzIG9uIHRoZSBwaXBlbGluZSwgQ3VybF9kb25lIHdvbid0IHNldAorICAgICAgICAgKiBJZiB0aGVyZSBhcmUgb3RoZXIgaGFuZGxlcyBvbiB0aGUgcGlwZWxpbmUsIG11bHRpX2RvbmUgd29uJ3Qgc2V0CiAgICAgICAgICAqIGVhc3lfY29ubiB0byBOVUxMLiAgSW4gc3VjaCBhIGNhc2UsIGN1cmxfbXVsdGlfcmVtb3ZlX2hhbmRsZSgpIGNhbgogICAgICAgICAgKiBhY2Nlc3MgZnJlZSdkIGRhdGEsIGlmIHRoZSBjb25uZWN0aW9uIGlzIGZyZWUnZCBhbmQgdGhlIGhhbmRsZQogICAgICAgICAgKiByZW1vdmVkIGJlZm9yZSB3ZSBwZXJmb3JtIHRoZSBwcm9jZXNzaW5nIGluIENVUkxNX1NUQVRFX0NPTVBMRVRFRApAQCAtMTY2Miw3ICsyMDAwLDcgQEAKICAgICAgIH0KIAogICAgICAgLyogYWZ0ZXIgd2UgaGF2ZSBET05FIHdoYXQgd2UncmUgc3VwcG9zZWQgdG8gZG8sIGdvIENPTVBMRVRFRCwgYW5kCi0gICAgICAgICBpdCBkb2Vzbid0IG1hdHRlciB3aGF0IHRoZSBDdXJsX2RvbmUoKSByZXR1cm5lZCEgKi8KKyAgICAgICAgIGl0IGRvZXNuJ3QgbWF0dGVyIHdoYXQgdGhlIG11bHRpX2RvbmUoKSByZXR1cm5lZCEgKi8KICAgICAgIG11bHRpc3RhdGUoZGF0YSwgQ1VSTE1fU1RBVEVfQ09NUExFVEVEKTsKICAgICAgIGJyZWFrOwogCkBAIC0xNzc4LDI3ICsyMTE2LDEyIEBACiAgIGRhdGE9bXVsdGktPmVhc3lwOwogICB3aGlsZShkYXRhKSB7CiAgICAgQ1VSTE1jb2RlIHJlc3VsdDsKLSAgICBzdHJ1Y3QgV2lsZGNhcmREYXRhICp3YyA9ICZkYXRhLT53aWxkY2FyZDsKICAgICBTSUdQSVBFX1ZBUklBQkxFKHBpcGVfc3QpOwogCi0gICAgaWYoZGF0YS0+c2V0LndpbGRjYXJkbWF0Y2gpIHsKLSAgICAgIGlmKCF3Yy0+ZmlsZWxpc3QpIHsKLSAgICAgICAgQ1VSTGNvZGUgcmV0ID0gQ3VybF93aWxkY2FyZF9pbml0KHdjKTsgLyogaW5pdCB3aWxkY2FyZCBzdHJ1Y3R1cmVzICovCi0gICAgICAgIGlmKHJldCkKLSAgICAgICAgICByZXR1cm4gQ1VSTE1fT1VUX09GX01FTU9SWTsKLSAgICAgIH0KLSAgICB9Ci0KICAgICBzaWdwaXBlX2lnbm9yZShkYXRhLCAmcGlwZV9zdCk7CiAgICAgcmVzdWx0ID0gbXVsdGlfcnVuc2luZ2xlKG11bHRpLCBub3csIGRhdGEpOwogICAgIHNpZ3BpcGVfcmVzdG9yZSgmcGlwZV9zdCk7CiAKLSAgICBpZihkYXRhLT5zZXQud2lsZGNhcmRtYXRjaCkgewotICAgICAgLyogZGVzdHJ1Y3Qgd2lsZGNhcmQgc3RydWN0dXJlcyBpZiBpdCBpcyBuZWVkZWQgKi8KLSAgICAgIGlmKHdjLT5zdGF0ZSA9PSBDVVJMV0NfRE9ORSB8fCByZXN1bHQpCi0gICAgICAgIEN1cmxfd2lsZGNhcmRfZHRvcih3Yyk7Ci0gICAgfQotCiAgICAgaWYocmVzdWx0KQogICAgICAgcmV0dXJuY29kZSA9IHJlc3VsdDsKIApAQCAtMTk2NSw3ICsyMjg4LDYgQEAKICAgY3VybF9zb2NrZXRfdCBzOwogICBpbnQgbnVtOwogICB1bnNpZ25lZCBpbnQgY3VycmFjdGlvbjsKLSAgYm9vbCByZW1vdmVfc29ja19mcm9tX2hhc2g7CiAKICAgZm9yKGk9MDsgaTwgTUFYX1NPQ0tTUEVSRUFTWUhBTkRMRTsgaSsrKQogICAgIHNvY2tzW2ldID0gQ1VSTF9TT0NLRVRfQkFEOwpAQCAtMTk4Nyw3ICsyMzA5LDcgQEAKICAgICBzID0gc29ja3NbaV07CiAKICAgICAvKiBnZXQgaXQgZnJvbSB0aGUgaGFzaCAqLwotICAgIGVudHJ5ID0gQ3VybF9oYXNoX3BpY2soJm11bHRpLT5zb2NraGFzaCwgKGNoYXIgKikmcywgc2l6ZW9mKHMpKTsKKyAgICBlbnRyeSA9IHNoX2dldGVudHJ5KCZtdWx0aS0+c29ja2hhc2gsIHMpOwogCiAgICAgaWYoY3VycmFjdGlvbiAmIEdFVFNPQ0tfUkVBRFNPQ0soaSkpCiAgICAgICBhY3Rpb24gfD0gQ1VSTF9QT0xMX0lOOwpAQCAtMjAzMyw1NyArMjM1NSw1MCBAQAogICAgICAgICBicmVhazsKICAgICAgIH0KICAgICB9Ci0gICAgaWYocyAhPSBDVVJMX1NPQ0tFVF9CQUQpIHsKIAorICAgIGVudHJ5ID0gc2hfZ2V0ZW50cnkoJm11bHRpLT5zb2NraGFzaCwgcyk7CisgICAgaWYoZW50cnkpIHsKICAgICAgIC8qIHRoaXMgc29ja2V0IGhhcyBiZWVuIHJlbW92ZWQuIFRlbGwgdGhlIGFwcCB0byByZW1vdmUgaXQgKi8KLSAgICAgIHJlbW92ZV9zb2NrX2Zyb21faGFzaCA9IFRSVUU7CisgICAgICBib29sIHJlbW92ZV9zb2NrX2Zyb21faGFzaCA9IFRSVUU7CiAKLSAgICAgIGVudHJ5ID0gQ3VybF9oYXNoX3BpY2soJm11bHRpLT5zb2NraGFzaCwgKGNoYXIgKikmcywgc2l6ZW9mKHMpKTsKLSAgICAgIGlmKGVudHJ5KSB7Ci0gICAgICAgIC8qIGNoZWNrIGlmIHRoZSBzb2NrZXQgdG8gYmUgcmVtb3ZlZCBzZXJ2ZXMgYSBjb25uZWN0aW9uIHdoaWNoIGhhcwotICAgICAgICAgICBvdGhlciBlYXN5LXMgaW4gYSBwaXBlbGluZS4gSW4gdGhpcyBjYXNlIHRoZSBzb2NrZXQgc2hvdWxkIG5vdCBiZQotICAgICAgICAgICByZW1vdmVkLiAqLwotICAgICAgICBzdHJ1Y3QgY29ubmVjdGRhdGEgKmVhc3lfY29ubiA9IGRhdGEtPmVhc3lfY29ubjsKLSAgICAgICAgaWYoZWFzeV9jb25uKSB7Ci0gICAgICAgICAgaWYoZWFzeV9jb25uLT5yZWN2X3BpcGUgJiYgZWFzeV9jb25uLT5yZWN2X3BpcGUtPnNpemUgPiAxKSB7Ci0gICAgICAgICAgICAvKiB0aGUgaGFuZGxlIHNob3VsZCBub3QgYmUgcmVtb3ZlZCBmcm9tIHRoZSBwaXBlIHlldCAqLwotICAgICAgICAgICAgcmVtb3ZlX3NvY2tfZnJvbV9oYXNoID0gRkFMU0U7CisgICAgICAvKiBjaGVjayBpZiB0aGUgc29ja2V0IHRvIGJlIHJlbW92ZWQgc2VydmVzIGEgY29ubmVjdGlvbiB3aGljaCBoYXMKKyAgICAgICAgIG90aGVyIGVhc3ktcyBpbiBhIHBpcGVsaW5lLiBJbiB0aGlzIGNhc2UgdGhlIHNvY2tldCBzaG91bGQgbm90IGJlCisgICAgICAgICByZW1vdmVkLiAqLworICAgICAgc3RydWN0IGNvbm5lY3RkYXRhICplYXN5X2Nvbm4gPSBkYXRhLT5lYXN5X2Nvbm47CisgICAgICBpZihlYXN5X2Nvbm4pIHsKKyAgICAgICAgaWYoZWFzeV9jb25uLT5yZWN2X3BpcGUgJiYgZWFzeV9jb25uLT5yZWN2X3BpcGUtPnNpemUgPiAxKSB7CisgICAgICAgICAgLyogdGhlIGhhbmRsZSBzaG91bGQgbm90IGJlIHJlbW92ZWQgZnJvbSB0aGUgcGlwZSB5ZXQgKi8KKyAgICAgICAgICByZW1vdmVfc29ja19mcm9tX2hhc2ggPSBGQUxTRTsKIAotICAgICAgICAgICAgLyogVXBkYXRlIHRoZSBzb2NraGFzaCBlbnRyeSB0byBpbnN0ZWFkIHBvaW50IHRvIHRoZSBuZXh0IGluIGxpbmUKLSAgICAgICAgICAgICAgIGZvciB0aGUgcmVjdl9waXBlLCBvciB0aGUgZmlyc3QgKGluIGNhc2UgdGhpcyBwYXJ0aWN1bGFyIGVhc3kKLSAgICAgICAgICAgICAgIGlzbid0IGFscmVhZHkpICovCi0gICAgICAgICAgICBpZihlbnRyeS0+ZWFzeSA9PSBkYXRhKSB7Ci0gICAgICAgICAgICAgIGlmKEN1cmxfcmVjdnBpcGVfaGVhZChkYXRhLCBlYXN5X2Nvbm4pKQotICAgICAgICAgICAgICAgIGVudHJ5LT5lYXN5ID0gZWFzeV9jb25uLT5yZWN2X3BpcGUtPmhlYWQtPm5leHQtPnB0cjsKLSAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGVudHJ5LT5lYXN5ID0gZWFzeV9jb25uLT5yZWN2X3BpcGUtPmhlYWQtPnB0cjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAvKiBVcGRhdGUgdGhlIHNvY2toYXNoIGVudHJ5IHRvIGluc3RlYWQgcG9pbnQgdG8gdGhlIG5leHQgaW4gbGluZQorICAgICAgICAgICAgIGZvciB0aGUgcmVjdl9waXBlLCBvciB0aGUgZmlyc3QgKGluIGNhc2UgdGhpcyBwYXJ0aWN1bGFyIGVhc3kKKyAgICAgICAgICAgICBpc24ndCBhbHJlYWR5KSAqLworICAgICAgICAgIGlmKGVudHJ5LT5lYXN5ID09IGRhdGEpIHsKKyAgICAgICAgICAgIGlmKEN1cmxfcmVjdnBpcGVfaGVhZChkYXRhLCBlYXN5X2Nvbm4pKQorICAgICAgICAgICAgICBlbnRyeS0+ZWFzeSA9IGVhc3lfY29ubi0+cmVjdl9waXBlLT5oZWFkLT5uZXh0LT5wdHI7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgIGVudHJ5LT5lYXN5ID0gZWFzeV9jb25uLT5yZWN2X3BpcGUtPmhlYWQtPnB0cjsKICAgICAgICAgICB9Ci0gICAgICAgICAgaWYoZWFzeV9jb25uLT5zZW5kX3BpcGUgICYmIGVhc3lfY29ubi0+c2VuZF9waXBlLT5zaXplID4gMSkgewotICAgICAgICAgICAgLyogdGhlIGhhbmRsZSBzaG91bGQgbm90IGJlIHJlbW92ZWQgZnJvbSB0aGUgcGlwZSB5ZXQgKi8KLSAgICAgICAgICAgIHJlbW92ZV9zb2NrX2Zyb21faGFzaCA9IEZBTFNFOwotCi0gICAgICAgICAgICAvKiBVcGRhdGUgdGhlIHNvY2toYXNoIGVudHJ5IHRvIGluc3RlYWQgcG9pbnQgdG8gdGhlIG5leHQgaW4gbGluZQotICAgICAgICAgICAgICAgZm9yIHRoZSBzZW5kX3BpcGUsIG9yIHRoZSBmaXJzdCAoaW4gY2FzZSB0aGlzIHBhcnRpY3VsYXIgZWFzeQotICAgICAgICAgICAgICAgaXNuJ3QgYWxyZWFkeSkgKi8KLSAgICAgICAgICAgIGlmKGVudHJ5LT5lYXN5ID09IGRhdGEpIHsKLSAgICAgICAgICAgICAgaWYoQ3VybF9zZW5kcGlwZV9oZWFkKGRhdGEsIGVhc3lfY29ubikpCi0gICAgICAgICAgICAgICAgZW50cnktPmVhc3kgPSBlYXN5X2Nvbm4tPnNlbmRfcGlwZS0+aGVhZC0+bmV4dC0+cHRyOwotICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZW50cnktPmVhc3kgPSBlYXN5X2Nvbm4tPnNlbmRfcGlwZS0+aGVhZC0+cHRyOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgICAvKiBEb24ndCB3b3JyeSBhYm91dCBvdmVyd3JpdGluZyByZWN2X3BpcGUgaGVhZCB3aXRoIHNlbmRfcGlwZV9oZWFkLAotICAgICAgICAgICAgIHdoZW4gYWN0aW9uIHdpbGwgYmUgYXNrZWQgb24gdGhlIHNvY2tldCAoc2VlIG11bHRpX3NvY2tldCgpKSwgdGhlCi0gICAgICAgICAgICAgaGVhZCBvZiB0aGUgY29ycmVjdCBwaXBlIHdpbGwgYmUgdGFrZW4gYWNjb3JkaW5nIHRvIHRoZQotICAgICAgICAgICAgIGFjdGlvbi4gKi8KICAgICAgICAgfQorICAgICAgICBpZihlYXN5X2Nvbm4tPnNlbmRfcGlwZSAgJiYgZWFzeV9jb25uLT5zZW5kX3BpcGUtPnNpemUgPiAxKSB7CisgICAgICAgICAgLyogdGhlIGhhbmRsZSBzaG91bGQgbm90IGJlIHJlbW92ZWQgZnJvbSB0aGUgcGlwZSB5ZXQgKi8KKyAgICAgICAgICByZW1vdmVfc29ja19mcm9tX2hhc2ggPSBGQUxTRTsKKworICAgICAgICAgIC8qIFVwZGF0ZSB0aGUgc29ja2hhc2ggZW50cnkgdG8gaW5zdGVhZCBwb2ludCB0byB0aGUgbmV4dCBpbiBsaW5lCisgICAgICAgICAgICAgZm9yIHRoZSBzZW5kX3BpcGUsIG9yIHRoZSBmaXJzdCAoaW4gY2FzZSB0aGlzIHBhcnRpY3VsYXIgZWFzeQorICAgICAgICAgICAgIGlzbid0IGFscmVhZHkpICovCisgICAgICAgICAgaWYoZW50cnktPmVhc3kgPT0gZGF0YSkgeworICAgICAgICAgICAgaWYoQ3VybF9zZW5kcGlwZV9oZWFkKGRhdGEsIGVhc3lfY29ubikpCisgICAgICAgICAgICAgIGVudHJ5LT5lYXN5ID0gZWFzeV9jb25uLT5zZW5kX3BpcGUtPmhlYWQtPm5leHQtPnB0cjsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgZW50cnktPmVhc3kgPSBlYXN5X2Nvbm4tPnNlbmRfcGlwZS0+aGVhZC0+cHRyOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAvKiBEb24ndCB3b3JyeSBhYm91dCBvdmVyd3JpdGluZyByZWN2X3BpcGUgaGVhZCB3aXRoIHNlbmRfcGlwZV9oZWFkLAorICAgICAgICAgICB3aGVuIGFjdGlvbiB3aWxsIGJlIGFza2VkIG9uIHRoZSBzb2NrZXQgKHNlZSBtdWx0aV9zb2NrZXQoKSksIHRoZQorICAgICAgICAgICBoZWFkIG9mIHRoZSBjb3JyZWN0IHBpcGUgd2lsbCBiZSB0YWtlbiBhY2NvcmRpbmcgdG8gdGhlCisgICAgICAgICAgIGFjdGlvbi4gKi8KICAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgICAgLyoganVzdCBhIHByZWNhdXRpb24sIHRoaXMgc29ja2V0IHJlYWxseSBTSE9VTEQgYmUgaW4gdGhlIGhhc2ggYWxyZWFkeQotICAgICAgICAgICBidXQgaW4gY2FzZSBpdCBpc24ndCwgd2UgZG9uJ3QgaGF2ZSB0byB0ZWxsIHRoZSBhcHAgdG8gcmVtb3ZlIGl0Ci0gICAgICAgICAgIGVpdGhlciBzaW5jZSBpdCBuZXZlciBnb3QgdG8ga25vdyBhYm91dCBpdCAqLwotICAgICAgICByZW1vdmVfc29ja19mcm9tX2hhc2ggPSBGQUxTRTsKIAogICAgICAgaWYocmVtb3ZlX3NvY2tfZnJvbV9oYXNoKSB7CiAgICAgICAgIC8qIGluIHRoaXMgY2FzZSAnZW50cnknIGlzIGFsd2F5cyBub24tTlVMTCAqLwpAQCAtMjA5NSw5ICsyNDEwLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5zb2NrZXRwKTsKICAgICAgICAgc2hfZGVsZW50cnkoJm11bHRpLT5zb2NraGFzaCwgcyk7CiAgICAgICB9Ci0KLSAgICB9Ci0gIH0KKyAgICB9IC8qIGlmIHNvY2toYXNoIGVudHJ5IGV4aXN0ZWQgKi8KKyAgfSAvKiBmb3IgbG9vcCBvdmVyIG51bXNvY2tzICovCiAKICAgbWVtY3B5KGRhdGEtPnNvY2tldHMsIHNvY2tzLCBudW0qc2l6ZW9mKGN1cmxfc29ja2V0X3QpKTsKICAgZGF0YS0+bnVtc29ja3MgPSBudW07CkBAIC0yMTE5LDggKzI0MzMsNyBAQAogICBpZihtdWx0aSkgewogICAgIC8qIHRoaXMgaXMgc2V0IGlmIHRoaXMgY29ubmVjdGlvbiBpcyBwYXJ0IG9mIGEgaGFuZGxlIHRoYXQgaXMgYWRkZWQgdG8KICAgICAgICBhIG11bHRpIGhhbmRsZSwgYW5kIG9ubHkgdGhlbiB0aGlzIGlzIG5lY2Vzc2FyeSAqLwotICAgIHN0cnVjdCBDdXJsX3NoX2VudHJ5ICplbnRyeSA9Ci0gICAgICBDdXJsX2hhc2hfcGljaygmbXVsdGktPnNvY2toYXNoLCAoY2hhciAqKSZzLCBzaXplb2YocykpOworICAgIHN0cnVjdCBDdXJsX3NoX2VudHJ5ICplbnRyeSA9IHNoX2dldGVudHJ5KCZtdWx0aS0+c29ja2hhc2gsIHMpOwogCiAgICAgaWYoZW50cnkpIHsKICAgICAgIGlmKG11bHRpLT5zb2NrZXRfY2IpCkBAIC0yMTU5LDcgKzI0NzIsNyBAQAogICAvKiBtb3ZlIG92ZXIgdGhlIHRpbWVvdXQgbGlzdCBmb3IgdGhpcyBzcGVjaWZpYyBoYW5kbGUgYW5kIHJlbW92ZSBhbGwKICAgICAgdGltZW91dHMgdGhhdCBhcmUgbm93IHBhc3NlZCB0ZW5zZSBhbmQgc3RvcmUgdGhlIG5leHQgcGVuZGluZwogICAgICB0aW1lb3V0IGluICp0diAqLwotICBmb3IoZSA9IGxpc3QtPmhlYWQ7IGU7ICkgeworICBmb3IoZSA9IGxpc3QtPmhlYWQ7IGU7KSB7CiAgICAgc3RydWN0IGN1cmxfbGxpc3RfZWxlbWVudCAqbiA9IGUtPm5leHQ7CiAgICAgbG9uZyBkaWZmID0gY3VybHhfdHZkaWZmKCooc3RydWN0IHRpbWV2YWwgKillLT5wdHIsIG5vdyk7CiAgICAgaWYoZGlmZiA8PSAwKQpAQCAtMjIyMSw4ICsyNTM0LDcgQEAKICAgfQogICBlbHNlIGlmKHMgIT0gQ1VSTF9TT0NLRVRfVElNRU9VVCkgewogCi0gICAgc3RydWN0IEN1cmxfc2hfZW50cnkgKmVudHJ5ID0KLSAgICAgIEN1cmxfaGFzaF9waWNrKCZtdWx0aS0+c29ja2hhc2gsIChjaGFyICopJnMsIHNpemVvZihzKSk7CisgICAgc3RydWN0IEN1cmxfc2hfZW50cnkgKmVudHJ5ID0gc2hfZ2V0ZW50cnkoJm11bHRpLT5zb2NraGFzaCwgcyk7CiAKICAgICBpZighZW50cnkpCiAgICAgICAvKiBVbm1hdGNoZWQgc29ja2V0LCB3ZSBjYW4ndCBhY3Qgb24gaXQgYnV0IHdlIGlnbm9yZSB0aGlzIGZhY3QuICBJbgpAQCAtMjM0Niw2ICsyNjU4LDEyIEBACiAgIGNhc2UgQ1VSTE1PUFRfU09DS0VUREFUQToKICAgICBtdWx0aS0+c29ja2V0X3VzZXJwID0gdmFfYXJnKHBhcmFtLCB2b2lkICopOwogICAgIGJyZWFrOworICBjYXNlIENVUkxNT1BUX1BVU0hGVU5DVElPTjoKKyAgICBtdWx0aS0+cHVzaF9jYiA9IHZhX2FyZyhwYXJhbSwgY3VybF9wdXNoX2NhbGxiYWNrKTsKKyAgICBicmVhazsKKyAgY2FzZSBDVVJMTU9QVF9QVVNIREFUQToKKyAgICBtdWx0aS0+cHVzaF91c2VycCA9IHZhX2FyZyhwYXJhbSwgdm9pZCAqKTsKKyAgICBicmVhazsKICAgY2FzZSBDVVJMTU9QVF9QSVBFTElOSU5HOgogICAgIG11bHRpLT5waXBlbGluaW5nID0gdmFfYXJnKHBhcmFtLCBsb25nKTsKICAgICBicmVhazsKQEAgLTI3MDMsOSArMzAyMSw3IEBACiAgIHN0cnVjdCBDdXJsX3NoX2VudHJ5ICp0aGVyZSA9IE5VTEw7CiAgIHN0cnVjdCBDdXJsX211bHRpICptdWx0aSA9IChzdHJ1Y3QgQ3VybF9tdWx0aSAqKW11bHRpX2hhbmRsZTsKIAotICBpZihzICE9IENVUkxfU09DS0VUX0JBRCkKLSAgICB0aGVyZSA9IEN1cmxfaGFzaF9waWNrKCZtdWx0aS0+c29ja2hhc2gsIChjaGFyICopJnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoY3VybF9zb2NrZXRfdCkpOworICB0aGVyZSA9IHNoX2dldGVudHJ5KCZtdWx0aS0+c29ja2hhc2gsIHMpOwogCiAgIGlmKCF0aGVyZSkKICAgICByZXR1cm4gQ1VSTE1fQkFEX1NPQ0tFVDsKQEAgLTI3ODMsOCArMzA5OSw3IEBACiAgICAgICAgICAgICAgIHN0YXRlbmFtZVtkYXRhLT5tc3RhdGVdLCBkYXRhLT5udW1zb2Nrcyk7CiAgICAgICBmb3IoaT0wOyBpIDwgZGF0YS0+bnVtc29ja3M7IGkrKykgewogICAgICAgICBjdXJsX3NvY2tldF90IHMgPSBkYXRhLT5zb2NrZXRzW2ldOwotICAgICAgICBzdHJ1Y3QgQ3VybF9zaF9lbnRyeSAqZW50cnkgPQotICAgICAgICAgIEN1cmxfaGFzaF9waWNrKCZtdWx0aS0+c29ja2hhc2gsIChjaGFyICopJnMsIHNpemVvZihzKSk7CisgICAgICAgIHN0cnVjdCBDdXJsX3NoX2VudHJ5ICplbnRyeSA9IHNoX2dldGVudHJ5KCZtdWx0aS0+c29ja2hhc2gsIHMpOwogCiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJWQgIiwgKGludClzKTsKICAgICAgICAgaWYoIWVudHJ5KSB7CmRpZmYgLS1naXQgYS9saWIvbXVsdGloYW5kbGUuaCBiL2xpYi9tdWx0aWhhbmRsZS5oCmluZGV4IGNhZDQ0ZDEuLmZjODFhNTUgMTAwNjQ0Ci0tLSBhL2xpYi9tdWx0aWhhbmRsZS5oCisrKyBiL2xpYi9tdWx0aWhhbmRsZS5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtODcsNiArODcsMTAgQEAKICAgY3VybF9zb2NrZXRfY2FsbGJhY2sgc29ja2V0X2NiOwogICB2b2lkICpzb2NrZXRfdXNlcnA7CiAKKyAgLyogY2FsbGJhY2sgZnVuY3Rpb24gYW5kIHVzZXIgZGF0YSBwb2ludGVyIGZvciBzZXJ2ZXIgcHVzaCAqLworICBjdXJsX3B1c2hfY2FsbGJhY2sgcHVzaF9jYjsKKyAgdm9pZCAqcHVzaF91c2VycDsKKwogICAvKiBIb3N0bmFtZSBjYWNoZSAqLwogICBzdHJ1Y3QgY3VybF9oYXNoIGhvc3RjYWNoZTsKIApkaWZmIC0tZ2l0IGEvbGliL211bHRpaWYuaCBiL2xpYi9tdWx0aWlmLmgKaW5kZXggNTA1MmY2NS4uYjIyOWY1MyAxMDA2NDQKLS0tIGEvbGliL211bHRpaWYuaAorKysgYi9saWIvbXVsdGlpZi5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtODgsNCArODgsMTAgQEAKIAogdm9pZCBDdXJsX211bHRpX2Nsb3NlZChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGN1cmxfc29ja2V0X3Qgcyk7CiAKKy8qCisgKiBBZGQgYSBoYW5kbGUgYW5kIG1vdmUgaXQgaW50byBQRVJGT1JNIHN0YXRlIGF0IG9uY2UuIEZvciBwdXNoZWQgc3RyZWFtcy4KKyAqLworQ1VSTE1jb2RlIEN1cmxfbXVsdGlfYWRkX3BlcmZvcm0oc3RydWN0IEN1cmxfbXVsdGkgKm11bHRpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pOwogI2VuZGlmIC8qIEhFQURFUl9DVVJMX01VTFRJSUZfSCAqLwpkaWZmIC0tZ2l0IGEvbGliL25ldHJjLmMgYi9saWIvbmV0cmMuYwppbmRleCAwNmY4ZWExLi40NmY0MjdhIDEwMDY0NAotLS0gYS9saWIvbmV0cmMuYworKysgYi9saWIvbmV0cmMuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTMyLDkgKzMyLDkgQEAKICNpbmNsdWRlICJzdHJlcXVhbC5oIgogI2luY2x1ZGUgInN0cnRvay5oIgogI2luY2x1ZGUgInJhd3N0ci5oIgotI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCiAKLS8qIFRoZSBsYXN0ICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZTogKi8KKy8qIFRoZSBsYXN0IDMgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlIGluIHRoaXMgb3JkZXIgKi8KKyNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgogI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCiAjaW5jbHVkZSAibWVtZGVidWcuaCIKIApkaWZmIC0tZ2l0IGEvbGliL25ldHJjLmggYi9saWIvbmV0cmMuaAppbmRleCBhMTQ1NjAxLi5kOTgwMTY2IDEwMDY0NAotLS0gYS9saWIvbmV0cmMuaAorKysgYi9saWIvbmV0cmMuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9ub24tYXNjaWkuYyBiL2xpYi9ub24tYXNjaWkuYwppbmRleCA2Y2NiNDQ5Li4yMDVmZjA0IDEwMDY0NAotLS0gYS9saWIvbm9uLWFzY2lpLmMKKysrIGIvbGliL25vbi1hc2NpaS5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9ub24tYXNjaWkuaCBiL2xpYi9ub24tYXNjaWkuaAppbmRleCA4YjRiN2MyLi5mM2UyMDQ5IDEwMDY0NAotLS0gYS9saWIvbm9uLWFzY2lpLmgKKysrIGIvbGliL25vbi1hc2NpaS5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL25vbmJsb2NrLmMgYi9saWIvbm9uYmxvY2suYwppbmRleCAxNDQ3Yzg3Li5iNzY0Mjc4IDEwMDY0NAotLS0gYS9saWIvbm9uYmxvY2suYworKysgYi9saWIvbm9uYmxvY2suYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTIsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTc3LDcgKzc3LDcgQEAKIAogICAvKiBBbWlnYSAqLwogICBsb25nIGZsYWdzID0gbm9uYmxvY2sgPyAxTCA6IDBMOwotICByZXR1cm4gSW9jdGxTb2NrZXQoc29ja2ZkLCBGSU9OQklPLCBmbGFncyk7CisgIHJldHVybiBJb2N0bFNvY2tldChzb2NrZmQsIEZJT05CSU8sIChjaGFyICopJmZsYWdzKTsKIAogI2VsaWYgZGVmaW5lZChIQVZFX1NFVFNPQ0tPUFRfU09fTk9OQkxPQ0spCiAKZGlmZiAtLWdpdCBhL2xpYi9ub25ibG9jay5oIGIvbGliL25vbmJsb2NrLmgKaW5kZXggYjU0MGFlNC4uOThjZGMyNSAxMDA2NDQKLS0tIGEvbGliL25vbmJsb2NrLmgKKysrIGIvbGliL25vbmJsb2NrLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvbndsaWIuYyBiL2xpYi9ud2xpYi5jCmluZGV4IGJkM2YyN2UuLjQyYjZhYTAgMTAwNjQ0Ci0tLSBhL2xpYi9ud2xpYi5jCisrKyBiL2xpYi9ud2xpYi5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNTgsMjYgKzU4LDI2IEBACiBOWE11dGV4X3QgICAqZ0xpYkxvY2sgICA9IChOWE11dGV4X3QgKikgTlVMTDsKIAogLyogaW50ZXJuYWwgbGlicmFyeSBmdW5jdGlvbiBwcm90b3R5cGVzLi4uICovCi1pbnQgIERpc3Bvc2VMaWJyYXJ5RGF0YSggdm9pZCAqICk7Ci12b2lkIERpc3Bvc2VUaHJlYWREYXRhKCB2b2lkICogKTsKLWludCAgR2V0T3JTZXRVcERhdGEoIGludCBpZCwgbGliZGF0YV90ICoqZGF0YSwgbGlidGhyZWFkZGF0YV90ICoqdGhyZWFkZGF0YSApOworaW50ICBEaXNwb3NlTGlicmFyeURhdGEodm9pZCAqKTsKK3ZvaWQgRGlzcG9zZVRocmVhZERhdGEodm9pZCAqKTsKK2ludCAgR2V0T3JTZXRVcERhdGEoaW50IGlkLCBsaWJkYXRhX3QgKipkYXRhLCBsaWJ0aHJlYWRkYXRhX3QgKip0aHJlYWRkYXRhKTsKIAogCi1pbnQgX05vbkFwcFN0YXJ0KCB2b2lkICAgICAgICAqTkxNSGFuZGxlLAotICAgICAgICAgICAgICAgICAgdm9pZCAgICAgICAgKmVycm9yU2NyZWVuLAotICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAgKmNtZExpbmUsCi0gICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICAqbG9hZERpclBhdGgsCi0gICAgICAgICAgICAgICAgICBzaXplX3QgICAgICB1bmluaXRpYWxpemVkRGF0YUxlbmd0aCwKLSAgICAgICAgICAgICAgICAgIHZvaWQgICAgICAgICpOTE1GaWxlSGFuZGxlLAotICAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgKCpyZWFkUm91dGluZVApKCBpbnQgY29ubiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqZmlsZUhhbmRsZSwgc2l6ZV90IG9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG5ieXRlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICpieXRlc1JlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmJ1ZmZlciApLAoraW50IF9Ob25BcHBTdGFydCh2b2lkICAgICAgICAqTkxNSGFuZGxlLAorICAgICAgICAgICAgICAgICB2b2lkICAgICAgICAqZXJyb3JTY3JlZW4sCisgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgICpjbWRMaW5lLAorICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICAqbG9hZERpclBhdGgsCisgICAgICAgICAgICAgICAgIHNpemVfdCAgICAgIHVuaW5pdGlhbGl6ZWREYXRhTGVuZ3RoLAorICAgICAgICAgICAgICAgICB2b2lkICAgICAgICAqTkxNRmlsZUhhbmRsZSwKKyAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgKCpyZWFkUm91dGluZVApKGludCBjb25uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqZmlsZUhhbmRsZSwgc2l6ZV90IG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBuYnl0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKmJ5dGVzUmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmJ1ZmZlciksCiAgICAgICAgICAgICAgICAgICBzaXplX3QgICAgICBjdXN0b21EYXRhT2Zmc2V0LAogICAgICAgICAgICAgICAgICAgc2l6ZV90ICAgICAgY3VzdG9tRGF0YVNpemUsCiAgICAgICAgICAgICAgICAgICBpbnQgICAgICAgICBtZXNzYWdlQ291bnQsCi0gICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICAqKm1lc3NhZ2VzICkKKyAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgICoqbWVzc2FnZXMpCiB7CiAgIE5YX0xPQ0tfSU5GT19BTExPQyhsaWJsb2NrLCAiUGVyLUFwcGxpY2F0aW9uIERhdGEgTG9jayIsIDApOwogCkBAIC0xMzIsNyArMTMyLDcgQEAKICAqIEhlcmUgd2UgY2xlYW4gdXAgYW55IHJlc291cmNlcyB3ZSBhbGxvY2F0ZWQuIFJlc291cmNlIHRhZ3MgaXMgYSBiaWcgcGFydAogICogb2Ygd2hhdCB3ZSBjcmVhdGVkLCBidXQgTmV0V2FyZSBkb2Vzbid0IGFzayB1cyB0byBmcmVlIHRob3NlLgogICovCi12b2lkIF9Ob25BcHBTdG9wKCB2b2lkICkKK3ZvaWQgX05vbkFwcFN0b3Aodm9pZCkKIHsKICAgKHZvaWQpIHVucmVnaXN0ZXJfbGlicmFyeShnTGliSWQpOwogICBOWE11dGV4RnJlZShnTGliTG9jayk7CkBAIC0xNDksMTMgKzE0OSwxMyBAQAogICogd2UgcmV0dXJuIGEgbm9uLXplcm8gdmFsdWUuIFJpZ2h0IG5vdywgdGhlcmUgaXNuJ3QgYW55IHJlYXNvbiBub3QgdG8gYWxsb3cKICAqIGl0LgogICovCi1pbnQgX05vbkFwcENoZWNrVW5sb2FkKCB2b2lkICkKK2ludCBfTm9uQXBwQ2hlY2tVbmxvYWQodm9pZCkKIHsKICAgICByZXR1cm4gMDsKIH0KIAogaW50IEdldE9yU2V0VXBEYXRhKGludCBpZCwgbGliZGF0YV90ICoqYXBwRGF0YSwKLSAgICAgICAgICAgICAgICAgICBsaWJ0aHJlYWRkYXRhX3QgKip0aHJlYWREYXRhICkKKyAgICAgICAgICAgICAgICAgICBsaWJ0aHJlYWRkYXRhX3QgKip0aHJlYWREYXRhKQogewogICBpbnQgICAgICAgICAgICAgICAgIGVycjsKICAgbGliZGF0YV90ICAgICAgICAgICAqYXBwX2RhdGE7CkBAIC0yNzcsNyArMjc3LDcgQEAKICAgcmV0dXJuIGVycjsKIH0KIAotaW50IERpc3Bvc2VMaWJyYXJ5RGF0YSggdm9pZCAqZGF0YSApCitpbnQgRGlzcG9zZUxpYnJhcnlEYXRhKHZvaWQgKmRhdGEpCiB7CiAgIGlmKGRhdGEpIHsKICAgICB2b2lkICp0ZW5ieXRlcyA9ICgobGliZGF0YV90ICopIGRhdGEpLT50ZW5ieXRlczsKQEAgLTI4OSw3ICsyODksNyBAQAogICByZXR1cm4gMDsKIH0KIAotdm9pZCBEaXNwb3NlVGhyZWFkRGF0YSggdm9pZCAqZGF0YSApCit2b2lkIERpc3Bvc2VUaHJlYWREYXRhKHZvaWQgKmRhdGEpCiB7CiAgIGlmKGRhdGEpIHsKICAgICB2b2lkICp0d2VudHlieXRlcyA9ICgobGlidGhyZWFkZGF0YV90ICopIGRhdGEpLT50d2VudHlieXRlczsKQEAgLTMwMyw3ICszMDMsNyBAQAogLyogRm9yIG5hdGl2ZSBDTGliLWJhc2VkIE5MTSBzZWVtcyB3ZSBjYW4gZG8gYSBiaXQgbW9yZSBzaW1wbGUuICovCiAjaW5jbHVkZSA8bnd0aHJlYWQuaD4KIAotaW50IG1haW4gKCB2b2lkICkKK2ludCBtYWluICh2b2lkKQogewogICAvKiBpbml0aWFsaXplIGFueSBnbG9iYWxzIGhlcmUuLi4gKi8KIApkaWZmIC0tZ2l0IGEvbGliL253b3MuYyBiL2xpYi9ud29zLmMKaW5kZXggMjNmZjJhNy4uMzg1ZjljOCAxMDA2NDQKLS0tIGEvbGliL253b3MuYworKysgYi9saWIvbndvcy5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjYsNyArMjYsNyBAQAogCiAjaWZkZWYgX19OT1ZFTExfTElCQ19fCiAvKiBGb3IgbmF0aXZlIExpYkMtYmFzZWQgTkxNIHdlIG5lZWQgdG8gZG8gbm90aGluZy4gKi8KLWludCBuZXR3YXJlX2luaXQgKCB2b2lkICkKK2ludCBuZXR3YXJlX2luaXQgKHZvaWQpCiB7CiAgIHJldHVybiAwOwogfQpAQCAtNDUsNyArNDUsNyBAQAogI2luY2x1ZGUgPGFycGEvaW5ldC5oPgogTkVUSU5FVF9ERUZJTkVfQ09OVEVYVAogCi1pbnQgbmV0d2FyZV9pbml0ICggdm9pZCApCitpbnQgbmV0d2FyZV9pbml0ICh2b2lkKQogewogICBpbnQgcmMgPSAwOwogICB1bnNpZ25lZCBpbnQgbXlIYW5kbGUgPSBHZXROTE1IYW5kbGUoKTsKQEAgLTcyLDEzICs3MiwxMyBAQAogfQogCiAvKiBkdW1teSBmdW5jdGlvbiB0byBzYXRpc2Z5IG5ld2VyIHByZWx1ZGUgKi8KLWludCBfX2luaXRfZW52aXJvbm1lbnQgKCB2b2lkICkKK2ludCBfX2luaXRfZW52aXJvbm1lbnQgKHZvaWQpCiB7CiAgIHJldHVybiAwOwogfQogCiAvKiBkdW1teSBmdW5jdGlvbiB0byBzYXRpc2Z5IG5ld2VyIHByZWx1ZGUgKi8KLWludCBfX2RlaW5pdF9lbnZpcm9ubWVudCAoIHZvaWQgKQoraW50IF9fZGVpbml0X2Vudmlyb25tZW50ICh2b2lkKQogewogICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2xpYi9vYmpuYW1lcy10ZXN0MDguc2ggYi9saWIvb2JqbmFtZXMtdGVzdDA4LnNoCmluZGV4IDgyYmY0ZjkuLjQ4NTk3NTcgMTAwNzU1Ci0tLSBhL2xpYi9vYmpuYW1lcy10ZXN0MDguc2gKKysrIGIvbGliL29iam5hbWVzLXRlc3QwOC5zaApAQCAtMTAsNyArMTAsNyBAQAogIyAqCiAjICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICMgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0jICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyMgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICMgKgogIyAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogIyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL29iam5hbWVzLXRlc3QxMC5zaCBiL2xpYi9vYmpuYW1lcy10ZXN0MTAuc2gKaW5kZXggMmQ4NWI4Zi4uNjIxODRiOCAxMDA3NTUKLS0tIGEvbGliL29iam5hbWVzLXRlc3QxMC5zaAorKysgYi9saWIvb2JqbmFtZXMtdGVzdDEwLnNoCkBAIC0xMCw3ICsxMCw3IEBACiAjICoKICMgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogIyAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSMgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorIyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogIyAqCiAjICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAjICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvb2JqbmFtZXMuaW5jIGIvbGliL29iam5hbWVzLmluYwppbmRleCA4Nzc4NDkyLi5iODk1NTI4IDEwMDY0NAotLS0gYS9saWIvb2JqbmFtZXMuaW5jCisrKyBiL2xpYi9vYmpuYW1lcy5pbmMKQEAgLTksNyArOSw3IEBACiAjICoKICMgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogIyAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSMgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorIyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogIyAqCiAjICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAjICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvb3BlbmxkYXAuYyBiL2xpYi9vcGVubGRhcC5jCmluZGV4IGJlZTU1MmYuLjAxNTY3YWMgMTAwNjQ0Ci0tLSBhL2xpYi9vcGVubGRhcC5jCisrKyBiL2xpYi9vcGVubGRhcC5jCkBAIC02LDExICs2LDExIEBACiAgKiAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIEhvd2FyZCBDaHUsIDxoeWNAb3BlbmxkYXAub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDExIC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNDYsOSArNDYsOCBAQAogI2luY2x1ZGUgImN1cmxfbGRhcC5oIgogI2luY2x1ZGUgImN1cmxfYmFzZTY0LmgiCiAjaW5jbHVkZSAiY29ubmVjdC5oIgorLyogVGhlIGxhc3QgMyAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmUgaW4gdGhpcyBvcmRlciAqLwogI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCi0KLS8qIFRoZSBsYXN0ICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZTogKi8KICNpbmNsdWRlICJjdXJsX21lbW9yeS5oIgogI2luY2x1ZGUgIm1lbWRlYnVnLmgiCiAKQEAgLTQ0Niw2ICs0NDUsNyBAQAogICAgIGVudCA9IGxkYXBfbmV4dF9tZXNzYWdlKGxpLT5sZCwgZW50KSkgewogICAgIHN0cnVjdCBiZXJ2YWwgYnYsICpidmFscywgKipidnAgPSAmYnZhbHM7CiAgICAgaW50IGJpbmFyeSA9IDAsIG1zZ3R5cGU7CisgICAgQ1VSTGNvZGUgd3JpdGVlcnI7CiAKICAgICBtc2d0eXBlID0gbGRhcF9tc2d0eXBlKGVudCk7CiAgICAgaWYobXNndHlwZSA9PSBMREFQX1JFU19TRUFSQ0hfUkVTVUxUKSB7CkBAIC00ODUsMTggKzQ4NSwyNCBAQAogICAgICAgKmVyciA9IENVUkxFX1JFQ1ZfRVJST1I7CiAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgICplcnIgPSBDdXJsX2NsaWVudF93cml0ZShjb25uLCBDTElFTlRXUklURV9CT0RZLCAoY2hhciAqKSJETjogIiwgNCk7Ci0gICAgaWYoKmVycikKKyAgICB3cml0ZWVyciA9IEN1cmxfY2xpZW50X3dyaXRlKGNvbm4sIENMSUVOVFdSSVRFX0JPRFksIChjaGFyICopIkROOiAiLCA0KTsKKyAgICBpZih3cml0ZWVycikgeworICAgICAgKmVyciA9IHdyaXRlZXJyOwogICAgICAgcmV0dXJuIC0xOworICAgIH0KIAotICAgICplcnIgPSBDdXJsX2NsaWVudF93cml0ZShjb25uLCBDTElFTlRXUklURV9CT0RZLCAoY2hhciAqKWJ2LmJ2X3ZhbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnYuYnZfbGVuKTsKLSAgICBpZigqZXJyKQorICAgIHdyaXRlZXJyID0gQ3VybF9jbGllbnRfd3JpdGUoY29ubiwgQ0xJRU5UV1JJVEVfQk9EWSwgKGNoYXIgKilidi5idl92YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidi5idl9sZW4pOworICAgIGlmKHdyaXRlZXJyKSB7CisgICAgICAqZXJyID0gd3JpdGVlcnI7CiAgICAgICByZXR1cm4gLTE7CisgICAgfQogCi0gICAgKmVyciA9IEN1cmxfY2xpZW50X3dyaXRlKGNvbm4sIENMSUVOVFdSSVRFX0JPRFksIChjaGFyICopIlxuIiwgMSk7Ci0gICAgaWYoKmVycikKKyAgICB3cml0ZWVyciA9IEN1cmxfY2xpZW50X3dyaXRlKGNvbm4sIENMSUVOVFdSSVRFX0JPRFksIChjaGFyICopIlxuIiwgMSk7CisgICAgaWYod3JpdGVlcnIpIHsKKyAgICAgICplcnIgPSB3cml0ZWVycjsKICAgICAgIHJldHVybiAtMTsKKyAgICB9CiAgICAgZGF0YS0+cmVxLmJ5dGVjb3VudCArPSBidi5idl9sZW4gKyA1OwogCiAgICAgZm9yKHJjID0gbGRhcF9nZXRfYXR0cmlidXRlX2JlcihsaS0+bGQsIGVudCwgYmVyLCAmYnYsIGJ2cCk7CkBAIC01MTMsMTggKzUxOSwyNCBAQAogCiAgICAgICBmb3IoaT0wOyBidmFsc1tpXS5idl92YWwgIT0gTlVMTDsgaSsrKSB7CiAgICAgICAgIGludCBiaW52YWwgPSAwOwotICAgICAgICAqZXJyID0gQ3VybF9jbGllbnRfd3JpdGUoY29ubiwgQ0xJRU5UV1JJVEVfQk9EWSwgKGNoYXIgKikiXHQiLCAxKTsKLSAgICAgICAgaWYoKmVycikKKyAgICAgICAgd3JpdGVlcnIgPSBDdXJsX2NsaWVudF93cml0ZShjb25uLCBDTElFTlRXUklURV9CT0RZLCAoY2hhciAqKSJcdCIsIDEpOworICAgICAgICBpZih3cml0ZWVycikgeworICAgICAgICAgICplcnIgPSB3cml0ZWVycjsKICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KIAotICAgICAgICAqZXJyID0gQ3VybF9jbGllbnRfd3JpdGUoY29ubiwgQ0xJRU5UV1JJVEVfQk9EWSwgKGNoYXIgKilidi5idl92YWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidi5idl9sZW4pOwotICAgICAgICBpZigqZXJyKQotICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICB3cml0ZWVyciA9IEN1cmxfY2xpZW50X3dyaXRlKGNvbm4sIENMSUVOVFdSSVRFX0JPRFksIChjaGFyICopYnYuYnZfdmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnYuYnZfbGVuKTsKKyAgICAgICBpZih3cml0ZWVycikgeworICAgICAgICAgKmVyciA9IHdyaXRlZXJyOworICAgICAgICAgcmV0dXJuIC0xOworICAgICAgIH0KIAotICAgICAgICAqZXJyID0gQ3VybF9jbGllbnRfd3JpdGUoY29ubiwgQ0xJRU5UV1JJVEVfQk9EWSwgKGNoYXIgKikiOiIsIDEpOwotICAgICAgICBpZigqZXJyKQotICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgd3JpdGVlcnIgPSBDdXJsX2NsaWVudF93cml0ZShjb25uLCBDTElFTlRXUklURV9CT0RZLCAoY2hhciAqKSI6IiwgMSk7CisgICAgICAgaWYod3JpdGVlcnIpIHsKKyAgICAgICAgICplcnIgPSB3cml0ZWVycjsKKyAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICB9CiAgICAgICAgIGRhdGEtPnJlcS5ieXRlY291bnQgKz0gYnYuYnZfbGVuICsgMjsKIAogICAgICAgICBpZighYmluYXJ5KSB7CkBAIC01NTgsNDcgKzU3MCw2MiBAQAogICAgICAgICAgICAgKmVyciA9IGVycm9yOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgIH0KLSAgICAgICAgICAqZXJyID0gQ3VybF9jbGllbnRfd3JpdGUoY29ubiwgQ0xJRU5UV1JJVEVfQk9EWSwgKGNoYXIgKikiOiAiLCAyKTsKLSAgICAgICAgICBpZigqZXJyKQorICAgICAgICAgIHdyaXRlZXJyID0gQ3VybF9jbGllbnRfd3JpdGUoY29ubiwgQ0xJRU5UV1JJVEVfQk9EWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyICopIjogIiwgMik7CisgICAgICAgICAgaWYod3JpdGVlcnIpIHsKKyAgICAgICAgICAgICplcnIgPSB3cml0ZWVycjsKICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICB9CiAKICAgICAgICAgICBkYXRhLT5yZXEuYnl0ZWNvdW50ICs9IDI7CiAgICAgICAgICAgaWYodmFsX2I2NF9zeiA+IDApIHsKLSAgICAgICAgICAgICplcnIgPSBDdXJsX2NsaWVudF93cml0ZShjb25uLCBDTElFTlRXUklURV9CT0RZLCB2YWxfYjY0LAorICAgICAgICAgICAgd3JpdGVlcnIgPSBDdXJsX2NsaWVudF93cml0ZShjb25uLCBDTElFTlRXUklURV9CT0RZLCB2YWxfYjY0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbF9iNjRfc3opOwotICAgICAgICAgICAgaWYoKmVycikKKyAgICAgICAgICAgIGlmKHdyaXRlZXJyKSB7CisgICAgICAgICAgICAgICplcnIgPSB3cml0ZWVycjsKICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQogICAgICAgICAgICAgZnJlZSh2YWxfYjY0KTsKICAgICAgICAgICAgIGRhdGEtPnJlcS5ieXRlY291bnQgKz0gdmFsX2I2NF9zejsKICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgKmVyciA9IEN1cmxfY2xpZW50X3dyaXRlKGNvbm4sIENMSUVOVFdSSVRFX0JPRFksIChjaGFyICopIiAiLCAxKTsKLSAgICAgICAgICBpZigqZXJyKQorICAgICAgICAgIHdyaXRlZXJyID0gQ3VybF9jbGllbnRfd3JpdGUoY29ubiwgQ0xJRU5UV1JJVEVfQk9EWSwgKGNoYXIgKikiICIsIDEpOworICAgICAgICAgIGlmKHdyaXRlZXJyKSB7CisgICAgICAgICAgICAqZXJyID0gd3JpdGVlcnI7CiAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgfQogCi0gICAgICAgICAgKmVyciA9IEN1cmxfY2xpZW50X3dyaXRlKGNvbm4sIENMSUVOVFdSSVRFX0JPRFksIGJ2YWxzW2ldLmJ2X3ZhbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnZhbHNbaV0uYnZfbGVuKTsKLSAgICAgICAgICBpZigqZXJyKQorICAgICAgICAgIHdyaXRlZXJyID0gQ3VybF9jbGllbnRfd3JpdGUoY29ubiwgQ0xJRU5UV1JJVEVfQk9EWSwgYnZhbHNbaV0uYnZfdmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnZhbHNbaV0uYnZfbGVuKTsKKyAgICAgICAgICBpZih3cml0ZWVycikgeworICAgICAgICAgICAgKmVyciA9IHdyaXRlZXJyOwogICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgIH0KIAogICAgICAgICAgIGRhdGEtPnJlcS5ieXRlY291bnQgKz0gYnZhbHNbaV0uYnZfbGVuICsgMTsKICAgICAgICAgfQotICAgICAgICAqZXJyID0gQ3VybF9jbGllbnRfd3JpdGUoY29ubiwgQ0xJRU5UV1JJVEVfQk9EWSwgKGNoYXIgKikiXG4iLCAwKTsKLSAgICAgICAgaWYoKmVycikKKyAgICAgICAgd3JpdGVlcnIgPSBDdXJsX2NsaWVudF93cml0ZShjb25uLCBDTElFTlRXUklURV9CT0RZLCAoY2hhciAqKSJcbiIsIDApOworICAgICAgICBpZih3cml0ZWVycikgeworICAgICAgICAgICplcnIgPSB3cml0ZWVycjsKICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KIAogICAgICAgICBkYXRhLT5yZXEuYnl0ZWNvdW50Kys7CiAgICAgICB9CiAgICAgICBiZXJfbWVtZnJlZShidmFscyk7Ci0gICAgICAqZXJyID0gQ3VybF9jbGllbnRfd3JpdGUoY29ubiwgQ0xJRU5UV1JJVEVfQk9EWSwgKGNoYXIgKikiXG4iLCAwKTsKLSAgICAgIGlmKCplcnIpCisgICAgICB3cml0ZWVyciA9IEN1cmxfY2xpZW50X3dyaXRlKGNvbm4sIENMSUVOVFdSSVRFX0JPRFksIChjaGFyICopIlxuIiwgMCk7CisgICAgICBpZih3cml0ZWVycikgeworICAgICAgICAqZXJyID0gd3JpdGVlcnI7CiAgICAgICAgIHJldHVybiAtMTsKKyAgICAgIH0KICAgICAgIGRhdGEtPnJlcS5ieXRlY291bnQrKzsKICAgICB9Ci0gICAgKmVyciA9IEN1cmxfY2xpZW50X3dyaXRlKGNvbm4sIENMSUVOVFdSSVRFX0JPRFksIChjaGFyICopIlxuIiwgMCk7Ci0gICAgaWYoKmVycikKKyAgICB3cml0ZWVyciA9IEN1cmxfY2xpZW50X3dyaXRlKGNvbm4sIENMSUVOVFdSSVRFX0JPRFksIChjaGFyICopIlxuIiwgMCk7CisgICAgaWYod3JpdGVlcnIpIHsKKyAgICAgICplcnIgPSB3cml0ZWVycjsKICAgICAgIHJldHVybiAtMTsKKyAgICB9CiAgICAgZGF0YS0+cmVxLmJ5dGVjb3VudCsrOwogICAgIGJlcl9mcmVlKGJlciwgMCk7CiAgIH0KZGlmZiAtLWdpdCBhL2xpYi9wYXJzZWRhdGUuYyBiL2xpYi9wYXJzZWRhdGUuYwppbmRleCA2MjE2Nzg4Li43YWFkNWMyIDEwMDY0NAotLS0gYS9saWIvcGFyc2VkYXRlLmMKKysrIGIvbGliL3BhcnNlZGF0ZS5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9wYXJzZWRhdGUuaCBiL2xpYi9wYXJzZWRhdGUuaAppbmRleCBhZGUwZjRmLi4yZTU5ZWIxIDEwMDY0NAotLS0gYS9saWIvcGFyc2VkYXRlLmgKKysrIGIvbGliL3BhcnNlZGF0ZS5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL3Bpbmdwb25nLmMgYi9saWIvcGluZ3BvbmcuYwppbmRleCAxNjcwNzkyLi5jZTJiNTg2IDEwMDY0NAotLS0gYS9saWIvcGluZ3BvbmcuYworKysgYi9saWIvcGluZ3BvbmcuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTM0LDEwICszNCwxMCBAQAogI2luY2x1ZGUgIm11bHRpaWYuaCIKICNpbmNsdWRlICJub24tYXNjaWkuaCIKICNpbmNsdWRlICJ2dGxzL3Z0bHMuaCIKLSNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgogCisvKiBUaGUgbGFzdCAzICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZSBpbiB0aGlzIG9yZGVyICovCisjaW5jbHVkZSAiY3VybF9wcmludGYuaCIKICNpbmNsdWRlICJjdXJsX21lbW9yeS5oIgotLyogVGhlIGxhc3QgI2luY2x1ZGUgZmlsZSBzaG91bGQgYmU6ICovCiAjaW5jbHVkZSAibWVtZGVidWcuaCIKIAogI2lmZGVmIFVTRV9QSU5HUE9ORwpAQCAtODgsNyArODgsNyBAQAogICBzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YT1jb25uLT5kYXRhOwogICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKIAotICBpZih0aW1lb3V0X21zIDw9MCApIHsKKyAgaWYodGltZW91dF9tcyA8PTApIHsKICAgICBmYWlsZihkYXRhLCAic2VydmVyIHJlc3BvbnNlIHRpbWVvdXQiKTsKICAgICByZXR1cm4gQ1VSTEVfT1BFUkFUSU9OX1RJTUVET1VUOyAvKiBhbHJlYWR5IHRvbyBsaXR0bGUgdGltZSAqLwogICB9CmRpZmYgLS1naXQgYS9saWIvcGluZ3BvbmcuaCBiL2xpYi9waW5ncG9uZy5oCmluZGV4IGI5MjVhYjkuLjJmNjQ5ZDUgMTAwNjQ0Ci0tLSBhL2xpYi9waW5ncG9uZy5oCisrKyBiL2xpYi9waW5ncG9uZy5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL3BpcGVsaW5lLmMgYi9saWIvcGlwZWxpbmUuYwppbmRleCAxYjM4ODM2Li45NWI4OWI1IDEwMDY0NAotLS0gYS9saWIvcGlwZWxpbmUuYworKysgYi9saWIvcGlwZWxpbmUuYwpAQCAtMTAsNyArMTAsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTMyMywxMCArMzIzLDExIEBACiBzdGF0aWMgYm9vbCBwaXBlX2hlYWQoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGN1cmxfbGxpc3QgKnBpcGVsaW5lKQogewotICBzdHJ1Y3QgY3VybF9sbGlzdF9lbGVtZW50ICpjdXJyID0gcGlwZWxpbmUtPmhlYWQ7Ci0gIGlmKGN1cnIpCi0gICAgcmV0dXJuIChjdXJyLT5wdHIgPT0gZGF0YSkgPyBUUlVFIDogRkFMU0U7Ci0KKyAgaWYocGlwZWxpbmUpIHsKKyAgICBzdHJ1Y3QgY3VybF9sbGlzdF9lbGVtZW50ICpjdXJyID0gcGlwZWxpbmUtPmhlYWQ7CisgICAgaWYoY3VycikKKyAgICAgIHJldHVybiAoY3Vyci0+cHRyID09IGRhdGEpID8gVFJVRSA6IEZBTFNFOworICB9CiAgIHJldHVybiBGQUxTRTsKIH0KIApkaWZmIC0tZ2l0IGEvbGliL3BpcGVsaW5lLmggYi9saWIvcGlwZWxpbmUuaAppbmRleCBiZjIyOWYxLi5hMzlkZmE4IDEwMDY0NAotLS0gYS9saWIvcGlwZWxpbmUuaAorKysgYi9saWIvcGlwZWxpbmUuaApAQCAtMTIsNyArMTIsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9wb3AzLmMgYi9saWIvcG9wMy5jCmluZGV4IDUzNTEwYTIuLmE2YjJjM2YgMTAwNjQ0Ci0tLSBhL2xpYi9wb3AzLmMKKysrIGIvbGliL3BvcDMuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTgzLDkgKzgzLDkgQEAKICNpbmNsdWRlICJjdXJsX3Nhc2wuaCIKICNpbmNsdWRlICJjdXJsX21kNS5oIgogI2luY2x1ZGUgIndhcm5sZXNzLmgiCisvKiBUaGUgbGFzdCAzICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZSBpbiB0aGlzIG9yZGVyICovCiAjaW5jbHVkZSAiY3VybF9wcmludGYuaCIKICNpbmNsdWRlICJjdXJsX21lbW9yeS5oIgotLyogVGhlIGxhc3QgI2luY2x1ZGUgZmlsZSBzaG91bGQgYmU6ICovCiAjaW5jbHVkZSAibWVtZGVidWcuaCIKIAogLyogTG9jYWwgQVBJIGZ1bmN0aW9ucyAqLwpAQCAtMjE0LDcgKzIxNCw3IEBACiAvKiBTQVNMIHBhcmFtZXRlcnMgZm9yIHRoZSBwb3AzIHByb3RvY29sICovCiBzdGF0aWMgY29uc3Qgc3RydWN0IFNBU0xwcm90byBzYXNscG9wMyA9IHsKICAgInBvcCIsICAgICAgICAgICAgICAgICAgICAgIC8qIFRoZSBzZXJ2aWNlIG5hbWUgKi8KLSAgJysnLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIENvZGUgcmVjZWl2ZWQgd2hlbiBjb250aW51YXRpb24gaXMgZXhwZWN0ZWQgKi8KKyAgJyonLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIENvZGUgcmVjZWl2ZWQgd2hlbiBjb250aW51YXRpb24gaXMgZXhwZWN0ZWQgKi8KICAgJysnLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIENvZGUgdG8gcmVjZWl2ZSB1cG9uIGF1dGhlbnRpY2F0aW9uIHN1Y2Nlc3MgKi8KICAgMjU1IC0gOCwgICAgICAgICAgICAgICAgICAgIC8qIE1heGltdW0gaW5pdGlhbCByZXNwb25zZSBsZW5ndGggKG5vIG1heCkgKi8KICAgcG9wM19wZXJmb3JtX2F1dGgsICAgICAgICAgIC8qIFNlbmQgYXV0aGVudGljYXRpb24gY29tbWFuZCAqLwpAQCAtMjI1LDcgKzIyNSwxMSBAQAogI2lmZGVmIFVTRV9TU0wKIHN0YXRpYyB2b2lkIHBvcDNfdG9fcG9wM3Moc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKQogeworICAvKiBDaGFuZ2UgdGhlIGNvbm5lY3Rpb24gaGFuZGxlciAqLwogICBjb25uLT5oYW5kbGVyID0gJkN1cmxfaGFuZGxlcl9wb3AzczsKKworICAvKiBTZXQgdGhlIGNvbm5lY3Rpb24ncyB1cGdyYWRlZCB0byBUTFMgZmxhZyAqLworICBjb25uLT50bHNfdXBncmFkZWQgPSBUUlVFOwogfQogI2Vsc2UKICNkZWZpbmUgcG9wM190b19wb3Azcyh4KSBDdXJsX25vcF9zdG10CkBAIC0yNTYsMjEgKzI2MCwyOSBAQAogICBpZihwb3AzYy0+c3RhdGUgPT0gUE9QM19DQVBBKSB7CiAgICAgLyogRG8gd2UgaGF2ZSB0aGUgdGVybWluYXRpbmcgbGluZT8gKi8KICAgICBpZihsZW4gPj0gMSAmJiAhbWVtY21wKGxpbmUsICIuIiwgMSkpCisgICAgICAvKiBUcmVhdCB0aGUgcmVzcG9uc2UgYXMgYSBzdWNjZXNzICovCiAgICAgICAqcmVzcCA9ICcrJzsKICAgICBlbHNlCisgICAgICAvKiBUcmVhdCB0aGUgcmVzcG9uc2UgYXMgYW4gdW50YWdnZWQgY29udGludWF0aW9uICovCiAgICAgICAqcmVzcCA9ICcqJzsKIAogICAgIHJldHVybiBUUlVFOwogICB9CiAKLSAgLyogRG8gd2UgaGF2ZSBhIGNvbW1hbmQgb3IgY29udGludWF0aW9uIHJlc3BvbnNlPyAqLwotICBpZigobGVuID49IDMgJiYgIW1lbWNtcCgiK09LIiwgbGluZSwgMykpIHx8Ci0gICAgIChsZW4gPj0gMSAmJiAhbWVtY21wKCIrIiwgbGluZSwgMSkpKSB7CisgIC8qIERvIHdlIGhhdmUgYSBzdWNjZXNzIHJlc3BvbnNlPyAqLworICBpZihsZW4gPj0gMyAmJiAhbWVtY21wKCIrT0siLCBsaW5lLCAzKSkgewogICAgICpyZXNwID0gJysnOwogCiAgICAgcmV0dXJuIFRSVUU7CiAgIH0KIAorICAvKiBEbyB3ZSBoYXZlIGEgY29udGludWF0aW9uIHJlc3BvbnNlPyAqLworICBpZihsZW4gPj0gMSAmJiAhbWVtY21wKCIrIiwgbGluZSwgMSkpIHsKKyAgICAqcmVzcCA9ICcqJzsKKworICAgIHJldHVybiBUUlVFOworICB9CisKICAgcmV0dXJuIEZBTFNFOyAvKiBOb3RoaW5nIGZvciB1cyAqLwogfQogCkBAIC03MDAsNyArNzEyLDcgQEAKIAogICAodm9pZClpbnN0YXRlOyAvKiBubyB1c2UgZm9yIHRoaXMgeWV0ICovCiAKLSAgLyogRG8gd2UgaGF2ZSBhIHVudGFnZ2VkIHJlc3BvbnNlPyAqLworICAvKiBEbyB3ZSBoYXZlIGEgdW50YWdnZWQgY29udGludWF0aW9uIHJlc3BvbnNlPyAqLwogICBpZihwb3AzY29kZSA9PSAnKicpIHsKICAgICAvKiBEb2VzIHRoZSBzZXJ2ZXIgc3VwcG9ydCB0aGUgU1RMUyBjYXBhYmlsaXR5PyAqLwogICAgIGlmKGxlbiA+PSA0ICYmICFtZW1jbXAobGluZSwgIlNUTFMiLCA0KSkKQEAgLTc0MSw4ICs3NTMsOCBAQAogICAgICAgICAgIHdvcmRsZW4rKzsKIAogICAgICAgICAvKiBUZXN0IHRoZSB3b3JkIGZvciBhIG1hdGNoaW5nIGF1dGhlbnRpY2F0aW9uIG1lY2hhbmlzbSAqLwotICAgICAgICBpZigobWVjaGJpdCA9IEN1cmxfc2FzbF9kZWNvZGVfbWVjaChsaW5lLCB3b3JkbGVuLCAmbGxlbikpICYmCi0gICAgICAgICAgIGxsZW4gPT0gd29yZGxlbikKKyAgICAgICAgbWVjaGJpdCA9IEN1cmxfc2FzbF9kZWNvZGVfbWVjaChsaW5lLCB3b3JkbGVuLCAmbGxlbik7CisgICAgICAgIGlmKG1lY2hiaXQgJiYgbGxlbiA9PSB3b3JkbGVuKQogICAgICAgICAgIHBvcDNjLT5zYXNsLmF1dGhtZWNocyB8PSBtZWNoYml0OwogCiAgICAgICAgIGxpbmUgKz0gd29yZGxlbjsKQEAgLTExNTQsMTAgKzExNjYsNiBAQAogICAodm9pZClwcmVtYXR1cmU7CiAKICAgaWYoIXBvcDMpCi0gICAgLyogV2hlbiB0aGUgZWFzeSBoYW5kbGUgaXMgcmVtb3ZlZCBmcm9tIHRoZSBtdWx0aSBpbnRlcmZhY2Ugd2hpbGUgbGliY3VybAotICAgICAgIGlzIHN0aWxsIHRyeWluZyB0byByZXNvbHZlIHRoZSBob3N0IG5hbWUsIHRoZSBQT1AzIHN0cnVjdCBpcyBub3QgeWV0Ci0gICAgICAgaW5pdGlhbGl6ZWQuIEhvd2V2ZXIsIHRoZSByZW1vdmFsIGFjdGlvbiBjYWxscyBDdXJsX2RvbmUoKSB3aGljaCBpbgotICAgICAgIHR1cm4gY2FsbHMgdGhpcyBmdW5jdGlvbiwgc28gd2Ugc2ltcGx5IHJldHVybiBzdWNjZXNzLiAqLwogICAgIHJldHVybiBDVVJMRV9PSzsKIAogICBpZihzdGF0dXMpIHsKQEAgLTEzNDYsNiArMTM1NCwxMCBAQAogICBpZihyZXN1bHQpCiAgICAgcmV0dXJuIHJlc3VsdDsKIAorICAvKiBDbGVhciB0aGUgVExTIHVwZ3JhZGVkIGZsYWcgKi8KKyAgY29ubi0+dGxzX3VwZ3JhZGVkID0gRkFMU0U7CisKKyAgLyogU2V0IHVwIHRoZSBwcm94eSBpZiBuZWNlc3NhcnkgKi8KICAgaWYoY29ubi0+Yml0cy5odHRwcHJveHkgJiYgIWRhdGEtPnNldC50dW5uZWxfdGhydV9odHRwcHJveHkpIHsKICAgICAvKiBVbmxlc3Mgd2UgaGF2ZSBhc2tlZCB0byB0dW5uZWwgUE9QMyBvcGVyYXRpb25zIHRocm91Z2ggdGhlIHByb3h5LCB3ZQogICAgICAgIHN3aXRjaCBhbmQgdXNlIEhUVFAgb3BlcmF0aW9ucyBvbmx5ICovCmRpZmYgLS1naXQgYS9saWIvcG9wMy5oIGIvbGliL3BvcDMuaAppbmRleCA3YmM1M2FhLi4yZDk2MTAxIDEwMDY0NAotLS0gYS9saWIvcG9wMy5oCisrKyBiL2xpYi9wb3AzLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvcHJvZ3Jlc3MuYyBiL2xpYi9wcm9ncmVzcy5jCmluZGV4IGI0NmUyNzQuLjcxM2FiMDggMTAwNjQ0Ci0tLSBhL2xpYi9wcm9ncmVzcy5jCisrKyBiL2xpYi9wcm9ncmVzcy5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9wcm9ncmVzcy5oIGIvbGliL3Byb2dyZXNzLmgKaW5kZXggYTFlNmYxYS4uZWEwMGFmYSAxMDA2NDQKLS0tIGEvbGliL3Byb2dyZXNzLmgKKysrIGIvbGliL3Byb2dyZXNzLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvcmF3c3RyLmMgYi9saWIvcmF3c3RyLmMKaW5kZXggZTI3ZGFjNC4uNTY2NWViZCAxMDA2NDQKLS0tIGEvbGliL3Jhd3N0ci5jCisrKyBiL2xpYi9yYXdzdHIuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTEsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTI4LDYgKzI4LDEwIEBACiAgICBpdHMgYmVoYXZpb3IgaXMgYWx0ZXJlZCBieSB0aGUgY3VycmVudCBsb2NhbGUuICovCiBjaGFyIEN1cmxfcmF3X3RvdXBwZXIoY2hhciBpbikKIHsKKyNpZiAhZGVmaW5lZChDVVJMX0RPRVNfQ09OVkVSU0lPTlMpCisgIGlmKGluID49ICdhJyAmJiBpbiA8PSAneicpCisgICAgcmV0dXJuIChjaGFyKSgnQScgKyBpbiAtICdhJyk7CisjZWxzZQogICBzd2l0Y2ggKGluKSB7CiAgIGNhc2UgJ2EnOgogICAgIHJldHVybiAnQSc7CkBAIC04MiwxMyArODYsMTUgQEAKICAgY2FzZSAneic6CiAgICAgcmV0dXJuICdaJzsKICAgfQorI2VuZGlmCisKICAgcmV0dXJuIGluOwogfQogCiAvKgogICogQ3VybF9yYXdfZXF1YWwoKSBpcyBmb3IgZG9pbmcgInJhdyIgY2FzZSBpbnNlbnNpdGl2ZSBzdHJpbmdzLiBUaGlzIGlzIG1lYW50CiAgKiB0byBiZSBsb2NhbGUgaW5kZXBlbmRlbnQgYW5kIG9ubHkgY29tcGFyZSBzdHJpbmdzIHdlIGtub3cgYXJlIHNhZmUgZm9yCi0gKiB0aGlzLiAgU2VlIGh0dHA6Ly9kYW5pZWwuaGF4eC5zZS9ibG9nLzIwMDgvMTAvMTUvc3RyY2FzZWNtcC1pbi10dXJraXNoLyBmb3IKKyAqIHRoaXMuICBTZWUgaHR0cHM6Ly9kYW5pZWwuaGF4eC5zZS9ibG9nLzIwMDgvMTAvMTUvc3RyY2FzZWNtcC1pbi10dXJraXNoLyBmb3IKICAqIHNvbWUgZnVydGhlciBleHBsYW5hdGlvbiB0byB3aHkgdGhpcyBmdW5jdGlvbiBpcyBuZWNlc3NhcnkuCiAgKgogICogVGhlIGZ1bmN0aW9uIGlzIGNhcGFibGUgb2YgY29tcGFyaW5nIGEteiBjYXNlIGluc2Vuc2l0aXZlbHkgZXZlbiBmb3IKZGlmZiAtLWdpdCBhL2xpYi9yYXdzdHIuaCBiL2xpYi9yYXdzdHIuaAppbmRleCBiNDkxNDYwLi40YWYwMGYxIDEwMDY0NAotLS0gYS9saWIvcmF3c3RyLmgKKysrIGIvbGliL3Jhd3N0ci5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL3J0c3AuYyBiL2xpYi9ydHNwLmMKaW5kZXggZTMzMDY5YS4uNWNiMTA0NCAxMDA2NDQKLS0tIGEvbGliL3J0c3AuYworKysgYi9saWIvcnRzcC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzYsOSArMzYsOCBAQAogI2luY2x1ZGUgInJhd3N0ci5oIgogI2luY2x1ZGUgInNlbGVjdC5oIgogI2luY2x1ZGUgImNvbm5lY3QuaCIKKy8qIFRoZSBsYXN0IDMgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlIGluIHRoaXMgb3JkZXIgKi8KICNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgotCi0vKiBUaGUgbGFzdCAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmU6ICovCiAjaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKICNpbmNsdWRlICJtZW1kZWJ1Zy5oIgogCkBAIC0yNDksNiArMjQ4LDggQEAKICAgY29uc3QgY2hhciAqcF9zdHJlYW1fdXJpID0gTlVMTDsKICAgY29uc3QgY2hhciAqcF90cmFuc3BvcnQgPSBOVUxMOwogICBjb25zdCBjaGFyICpwX3VhZ2VudCA9IE5VTEw7CisgIGNvbnN0IGNoYXIgKnBfcHJveHl1c2VycHdkID0gTlVMTDsKKyAgY29uc3QgY2hhciAqcF91c2VycHdkID0gTlVMTDsKIAogICAqZG9uZSA9IFRSVUU7CiAKQEAgLTMyNiw3ICszMjcsNiBAQAogICAgIHJldHVybiBDVVJMRV9CQURfRlVOQ1RJT05fQVJHVU1FTlQ7CiAgIH0KIAotICAvKiBUT0RPOiBhdXRoPyAqLwogICAvKiBUT0RPOiBwcm94eT8gKi8KIAogICAvKiBTdHJlYW0gVVJJLiBEZWZhdWx0IHRvIHNlcnZlciAnKicgaWYgbm90IHNwZWNpZmllZCAqLwpAQCAtMzkyLDYgKzM5MiwxNCBAQAogICAgIHBfdWFnZW50ID0gY29ubi0+YWxsb2NwdHIudWFnZW50OwogICB9CiAKKyAgLyogc2V0dXAgdGhlIGF1dGhlbnRpY2F0aW9uIGhlYWRlcnMgKi8KKyAgcmVzdWx0ID0gQ3VybF9odHRwX291dHB1dF9hdXRoKGNvbm4sIHBfcmVxdWVzdCwgcF9zdHJlYW1fdXJpLCBGQUxTRSk7CisgIGlmKHJlc3VsdCkKKyAgICByZXR1cm4gcmVzdWx0OworCisgIHBfcHJveHl1c2VycHdkID0gY29ubi0+YWxsb2NwdHIucHJveHl1c2VycHdkOworICBwX3VzZXJwd2QgPSBjb25uLT5hbGxvY3B0ci51c2VycHdkOworCiAgIC8qIFJlZmVycmVyICovCiAgIEN1cmxfc2FmZWZyZWUoY29ubi0+YWxsb2NwdHIucmVmKTsKICAgaWYoZGF0YS0+Y2hhbmdlLnJlZmVyZXIgJiYgIUN1cmxfY2hlY2toZWFkZXJzKGNvbm4sICJSZWZlcmVyOiIpKQpAQCAtNDQwLDggKzQ0OCw3IEBACiAgICAgQ3VybF9hZGRfYnVmZmVyZihyZXFfYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgIiVzICVzIFJUU1AvMS4wXHJcbiIgLyogUmVxdWVzdCBTdHJlYW0tVVJJIFJUU1AvMS4wICovCiAgICAgICAgICAgICAgICAgICAgICAiQ1NlcTogJWxkXHJcbiIsIC8qIENTZXEgKi8KLSAgICAgICAgICAgICAgICAgICAgIChwX3JlcXVlc3QgPyBwX3JlcXVlc3QgOiAiIiksIHBfc3RyZWFtX3VyaSwKLSAgICAgICAgICAgICAgICAgICAgIHJ0c3AtPkNTZXFfc2VudCk7CisgICAgICAgICAgICAgICAgICAgICBwX3JlcXVlc3QsIHBfc3RyZWFtX3VyaSwgcnRzcC0+Q1NlcV9zZW50KTsKICAgaWYocmVzdWx0KQogICAgIHJldHVybiByZXN1bHQ7CiAKQEAgLTQ2NSwxMyArNDcyLDI1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzIiAvKiByYW5nZSAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlcyIgLyogcmVmZXJyZXIgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMiIC8qIHVzZXItYWdlbnQgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMiIC8qIHByb3h5dXNlcnB3ZCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlcyIgLyogdXNlcnB3ZCAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwX3RyYW5zcG9ydCA/IHBfdHJhbnNwb3J0IDogIiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcF9hY2NlcHQgPyBwX2FjY2VwdCA6ICIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBfYWNjZXB0X2VuY29kaW5nID8gcF9hY2NlcHRfZW5jb2RpbmcgOiAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwX3JhbmdlID8gcF9yYW5nZSA6ICIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBfcmVmZXJyZXIgPyBwX3JlZmVycmVyIDogIiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcF91YWdlbnQgPyBwX3VhZ2VudCA6ICIiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwX3VhZ2VudCA/IHBfdWFnZW50IDogIiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcF9wcm94eXVzZXJwd2QgPyBwX3Byb3h5dXNlcnB3ZCA6ICIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBfdXNlcnB3ZCA/IHBfdXNlcnB3ZCA6ICIiKTsKKworICAvKgorICAgKiBGcmVlIHVzZXJwd2Qgbm93IC0tLSBjYW5ub3QgcmV1c2UgdGhpcyBmb3IgTmVnb3RpYXRlIGFuZCBwb3NzaWJseSBOVExNCisgICAqIHdpdGggYmFzaWMgYW5kIGRpZ2VzdCwgaXQgd2lsbCBiZSBmcmVlZCBhbnl3YXkgYnkgdGhlIG5leHQgcmVxdWVzdAorICAgKi8KKyAgQ3VybF9zYWZlZnJlZSAoY29ubi0+YWxsb2NwdHIudXNlcnB3ZCk7CisgIGNvbm4tPmFsbG9jcHRyLnVzZXJwd2QgPSBOVUxMOworCiAgIGlmKHJlc3VsdCkKICAgICByZXR1cm4gcmVzdWx0OwogCmRpZmYgLS1naXQgYS9saWIvcnRzcC5oIGIvbGliL3J0c3AuaAppbmRleCAzZmZhNzBjLi41YThkNTU1IDEwMDY0NAotLS0gYS9saWIvcnRzcC5oCisrKyBiL2xpYi9ydHNwLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvc2VsZWN0LmMgYi9saWIvc2VsZWN0LmMKaW5kZXggMjRkYzVmZC4uYWJmNTVkOCAxMDA2NDQKLS0tIGEvbGliL3NlbGVjdC5jCisrKyBiL2xpYi9zZWxlY3QuYwpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zMTYsMTUgKzMxNiwxNSBAQAogICAgICAgIGN1cmxfc29ja2V0X3QgaXMgdW5zaWduZWQgaW4gc3VjaCBjYXNlcyBhbmQgdGh1cyAtMSBpcyB0aGUgbGFyZ2VzdAogICAgICAgIHZhbHVlKS4KICAgICAqLworI2lmZGVmIFVTRV9XSU5TT0NLCiAgICAgciA9IHNlbGVjdCgoaW50KW1heGZkICsgMSwKLSNpZm5kZWYgVVNFX1dJTlNPQ0sKLSAgICAgICAgICAgICAgICZmZHNfcmVhZCwKLSAgICAgICAgICAgICAgICZmZHNfd3JpdGUsCi0jZWxzZQogICAgICAgICAgICAgICAgZmRzX3JlYWQuZmRfY291bnQgPyAmZmRzX3JlYWQgOiBOVUxMLAogICAgICAgICAgICAgICAgZmRzX3dyaXRlLmZkX2NvdW50ID8gJmZkc193cml0ZSA6IE5VTEwsCi0jZW5kaWYKICAgICAgICAgICAgICAgICZmZHNfZXJyLCBwdGltZW91dCk7CisjZWxzZQorICAgIHIgPSBzZWxlY3QoKGludCltYXhmZCArIDEsICZmZHNfcmVhZCwgJmZkc193cml0ZSwgJmZkc19lcnIsIHB0aW1lb3V0KTsKKyNlbmRpZgorCiAgICAgaWYociAhPSAtMSkKICAgICAgIGJyZWFrOwogICAgIGVycm9yID0gU09DS0VSUk5POwpAQCAtNTA1LDE5ICs1MDUsMTkgQEAKICAgICAgIHBlbmRpbmdfdHYudHZfc2VjID0gMDsKICAgICAgIHBlbmRpbmdfdHYudHZfdXNlYyA9IDA7CiAgICAgfQorCisjaWZkZWYgVVNFX1dJTlNPQ0sKICAgICByID0gc2VsZWN0KChpbnQpbWF4ZmQgKyAxLAotI2lmbmRlZiBVU0VfV0lOU09DSwotICAgICAgICAgICAgICAgJmZkc19yZWFkLCAmZmRzX3dyaXRlLCAmZmRzX2VyciwKLSNlbHNlCiAgICAgICAgICAgICAgICAvKiBXaW5Tb2NrIHNlbGVjdCgpIGNhbid0IGhhbmRsZSBmZF9zZXRzIHdpdGggemVybyBiaXRzIHNldCwgc28KICAgICAgICAgICAgICAgICAgIGRvbid0IGdpdmUgaXQgc3VjaCBhcmd1bWVudHMuICBTZWUgdGhlIGNvbW1lbnQgYWJvdXQgdGhpcyBpbgogICAgICAgICAgICAgICAgICAgQ3VybF9jaGVja19zb2NrZXQoKS4KICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICAgICBmZHNfcmVhZC5mZF9jb3VudCA/ICZmZHNfcmVhZCA6IE5VTEwsCiAgICAgICAgICAgICAgICBmZHNfd3JpdGUuZmRfY291bnQgPyAmZmRzX3dyaXRlIDogTlVMTCwKLSAgICAgICAgICAgICAgIGZkc19lcnIuZmRfY291bnQgPyAmZmRzX2VyciA6IE5VTEwsCisgICAgICAgICAgICAgICBmZHNfZXJyLmZkX2NvdW50ID8gJmZkc19lcnIgOiBOVUxMLCBwdGltZW91dCk7CisjZWxzZQorICAgIHIgPSBzZWxlY3QoKGludCltYXhmZCArIDEsICZmZHNfcmVhZCwgJmZkc193cml0ZSwgJmZkc19lcnIsIHB0aW1lb3V0KTsKICNlbmRpZgotICAgICAgICAgICAgICAgcHRpbWVvdXQpOwogICAgIGlmKHIgIT0gLTEpCiAgICAgICBicmVhazsKICAgICBlcnJvciA9IFNPQ0tFUlJOTzsKZGlmZiAtLWdpdCBhL2xpYi9zZWxlY3QuaCBiL2xpYi9zZWxlY3QuaAppbmRleCBjMDBhZmUxLi42OTViYjY5IDEwMDY0NAotLS0gYS9saWIvc2VsZWN0LmgKKysrIGIvbGliL3NlbGVjdC5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL3NlbmRmLmMgYi9saWIvc2VuZGYuYwppbmRleCA1ZjM5ZDFmLi4yMmYzYmYyIDEwMDY0NAotLS0gYS9saWIvc2VuZGYuYworKysgYi9saWIvc2VuZGYuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTMxLDEwICszMSwxMSBAQAogI2luY2x1ZGUgInNzaC5oIgogI2luY2x1ZGUgIm11bHRpaWYuaCIKICNpbmNsdWRlICJub24tYXNjaWkuaCIKLSNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgogI2luY2x1ZGUgInN0cmVycm9yLmgiCisjaW5jbHVkZSAic2VsZWN0LmgiCiAKLS8qIFRoZSBsYXN0ICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZTogKi8KKy8qIFRoZSBsYXN0IDMgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlIGluIHRoaXMgb3JkZXIgKi8KKyNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgogI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCiAjaW5jbHVkZSAibWVtZGVidWcuaCIKIApAQCAtMTIwLDYgKzEyMSw5MCBAQAogfQogI2VuZGlmIC8qIENVUkxfRE9fTElORUVORF9DT05WICovCiAKKyNpZmRlZiBVU0VfUkVDVl9CRUZPUkVfU0VORF9XT1JLQVJPVU5ECitzdGF0aWMgdm9pZCBwcmVfcmVjZWl2ZV9wbGFpbihzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGludCBudW0pCit7CisgIGNvbnN0IGN1cmxfc29ja2V0X3Qgc29ja2ZkID0gY29ubi0+c29ja1tudW1dOworICBzdHJ1Y3QgcG9zdHBvbmVkX2RhdGEgKiBjb25zdCBwc25kID0gJihjb25uLT5wb3N0cG9uZWRbbnVtXSk7CisgIHNpemVfdCBieXRlc3RvcmVjdiA9IHBzbmQtPmFsbG9jYXRlZF9zaXplIC0gcHNuZC0+cmVjdl9zaXplOworICAvKiBXaW5Tb2NrIHdpbGwgZGVzdHJveSB1bnJlYWQgcmVjZWl2ZWQgZGF0YSBpZiBzZW5kKCkgaXMKKyAgICAgZmFpbGVkLgorICAgICBUbyBhdm9pZCBsb3NzYWdlIG9mIHJlY2VpdmVkIGRhdGEsIHJlY3YoKSBtdXN0IGJlCisgICAgIHBlcmZvcm1lZCBiZWZvcmUgZXZlcnkgc2VuZCgpIGlmIGFueSBpbmNvbWluZyBkYXRhIGlzCisgICAgIGF2YWlsYWJsZS4gSG93ZXZlciwgc2tpcCB0aGlzLCBpZiBidWZmZXIgaXMgYWxyZWFkeSBmdWxsLiAqLworICBpZigoY29ubi0+aGFuZGxlci0+cHJvdG9jb2wmUFJPVE9fRkFNSUxZX0hUVFApICE9IDAgJiYKKyAgICAgY29ubi0+cmVjdltudW1dID09IEN1cmxfcmVjdl9wbGFpbiAmJgorICAgICAoIXBzbmQtPmJ1ZmZlciB8fCBieXRlc3RvcmVjdikpIHsKKyAgICBjb25zdCBpbnQgcmVhZHltYXNrID0gQ3VybF9zb2NrZXRfY2hlY2soc29ja2ZkLCBDVVJMX1NPQ0tFVF9CQUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENVUkxfU09DS0VUX0JBRCwgMCk7CisgICAgaWYocmVhZHltYXNrICE9IC0xICYmIChyZWFkeW1hc2sgJiBDVVJMX0NTRUxFQ1RfSU4pICE9IDApIHsKKyAgICAgIC8qIEhhdmUgc29tZSBpbmNvbWluZyBkYXRhICovCisgICAgICBpZighcHNuZC0+YnVmZmVyKSB7CisgICAgICAgIC8qIFVzZSBidWZmZXIgZG91YmxlIGRlZmF1bHQgc2l6ZSBmb3IgaW50ZXJtZWRpYXRlIGJ1ZmZlciAqLworICAgICAgICBwc25kLT5hbGxvY2F0ZWRfc2l6ZSA9IDIgKiBCVUZTSVpFOworICAgICAgICBwc25kLT5idWZmZXIgPSBtYWxsb2MocHNuZC0+YWxsb2NhdGVkX3NpemUpOworICAgICAgICBwc25kLT5yZWN2X3NpemUgPSAwOworICAgICAgICBwc25kLT5yZWN2X3Byb2Nlc3NlZCA9IDA7CisjaWZkZWYgREVCVUdCVUlMRAorICAgICAgICBwc25kLT5iaW5kc29jayA9IHNvY2tmZDsgLyogVXNlZCBvbmx5IGZvciBERUJVR0FTU0VSVCAqLworI2VuZGlmIC8qIERFQlVHQlVJTEQgKi8KKyAgICAgICAgYnl0ZXN0b3JlY3YgPSBwc25kLT5hbGxvY2F0ZWRfc2l6ZTsKKyAgICAgIH0KKyAgICAgIGlmKHBzbmQtPmJ1ZmZlcikgeworICAgICAgICBzc2l6ZV90IHJlY3ZlZGJ5dGVzOworICAgICAgICBERUJVR0FTU0VSVChwc25kLT5iaW5kc29jayA9PSBzb2NrZmQpOworICAgICAgICByZWN2ZWRieXRlcyA9IHNyZWFkKHNvY2tmZCwgcHNuZC0+YnVmZmVyICsgcHNuZC0+cmVjdl9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzdG9yZWN2KTsKKyAgICAgICAgaWYocmVjdmVkYnl0ZXMgPiAwKQorICAgICAgICAgIHBzbmQtPnJlY3Zfc2l6ZSArPSByZWN2ZWRieXRlczsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgICAgcHNuZC0+YWxsb2NhdGVkX3NpemUgPSAwOworICAgIH0KKyAgfQorfQorCitzdGF0aWMgc3NpemVfdCBnZXRfcHJlX3JlY3ZlZChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGludCBudW0sIGNoYXIgKmJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW4pCit7CisgIHN0cnVjdCBwb3N0cG9uZWRfZGF0YSAqIGNvbnN0IHBzbmQgPSAmKGNvbm4tPnBvc3Rwb25lZFtudW1dKTsKKyAgc2l6ZV90IGNvcHlzaXplOworICBpZighcHNuZC0+YnVmZmVyKQorICAgIHJldHVybiAwOworCisgIERFQlVHQVNTRVJUKHBzbmQtPmFsbG9jYXRlZF9zaXplID4gMCk7CisgIERFQlVHQVNTRVJUKHBzbmQtPnJlY3Zfc2l6ZSA8PSBwc25kLT5hbGxvY2F0ZWRfc2l6ZSk7CisgIERFQlVHQVNTRVJUKHBzbmQtPnJlY3ZfcHJvY2Vzc2VkIDw9IHBzbmQtPnJlY3Zfc2l6ZSk7CisgIC8qIENoZWNrIGFuZCBwcm9jZXNzIGRhdGEgdGhhdCBhbHJlYWR5IHJlY2VpdmVkIGFuZCBzdG9yaWVkIGluIGludGVybmFsCisgICAgIGludGVybWVkaWF0ZSBidWZmZXIgKi8KKyAgaWYocHNuZC0+cmVjdl9zaXplID4gcHNuZC0+cmVjdl9wcm9jZXNzZWQpIHsKKyAgICBERUJVR0FTU0VSVChwc25kLT5iaW5kc29jayA9PSBjb25uLT5zb2NrW251bV0pOworICAgIGNvcHlzaXplID0gQ1VSTE1JTihsZW4sIHBzbmQtPnJlY3Zfc2l6ZSAtIHBzbmQtPnJlY3ZfcHJvY2Vzc2VkKTsKKyAgICBtZW1jcHkoYnVmLCBwc25kLT5idWZmZXIgKyBwc25kLT5yZWN2X3Byb2Nlc3NlZCwgY29weXNpemUpOworICAgIHBzbmQtPnJlY3ZfcHJvY2Vzc2VkICs9IGNvcHlzaXplOworICB9CisgIGVsc2UKKyAgICBjb3B5c2l6ZSA9IDA7IC8qIGJ1ZmZlciB3YXMgYWxsb2NhdGVkLCBidXQgbm90aGluZyB3YXMgcmVjZWl2ZWQgKi8KKworICAvKiBGcmVlIGludGVybWVkaWF0ZSBidWZmZXIgaWYgaXQgaGFzIG5vIHVucHJvY2Vzc2VkIGRhdGEgKi8KKyAgaWYocHNuZC0+cmVjdl9wcm9jZXNzZWQgPT0gcHNuZC0+cmVjdl9zaXplKSB7CisgICAgZnJlZShwc25kLT5idWZmZXIpOworICAgIHBzbmQtPmJ1ZmZlciA9IE5VTEw7CisgICAgcHNuZC0+YWxsb2NhdGVkX3NpemUgPSAwOworICAgIHBzbmQtPnJlY3Zfc2l6ZSA9IDA7CisgICAgcHNuZC0+cmVjdl9wcm9jZXNzZWQgPSAwOworI2lmZGVmIERFQlVHQlVJTEQKKyAgICBwc25kLT5iaW5kc29jayA9IENVUkxfU09DS0VUX0JBRDsKKyNlbmRpZiAvKiBERUJVR0JVSUxEICovCisgIH0KKyAgcmV0dXJuIChzc2l6ZV90KWNvcHlzaXplOworfQorI2Vsc2UgIC8qICEgVVNFX1JFQ1ZfQkVGT1JFX1NFTkRfV09SS0FST1VORCAqLworLyogVXNlICJkby1ub3RoaW5nIiBtYWNyb3MgaW5zdGVhZCBvZiBmdW5jdGlvbnMgd2hlbiB3b3JrYXJvdW5kIG5vdCB1c2VkICovCisjZGVmaW5lIHByZV9yZWNlaXZlX3BsYWluKGMsbikgZG8ge30gV0hJTEVfRkFMU0UKKyNkZWZpbmUgZ2V0X3ByZV9yZWN2ZWQoYyxuLGIsbCkgMAorI2VuZGlmIC8qICEgVVNFX1JFQ1ZfQkVGT1JFX1NFTkRfV09SS0FST1VORCAqLworCiAvKiBDdXJsX2luZm9mKCkgaXMgZm9yIGluZm8gbWVzc2FnZSBhbG9uZyB0aGUgd2F5ICovCiAKIHZvaWQgQ3VybF9pbmZvZihzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwgY29uc3QgY2hhciAqZm10LCAuLi4pCkBAIC0yNTQsNyArMzM5LDIzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICptZW0sIHNpemVfdCBsZW4sIENVUkxjb2RlICpjb2RlKQogewogICBjdXJsX3NvY2tldF90IHNvY2tmZCA9IGNvbm4tPnNvY2tbbnVtXTsKLSAgc3NpemVfdCBieXRlc193cml0dGVuID0gc3dyaXRlKHNvY2tmZCwgbWVtLCBsZW4pOworICBzc2l6ZV90IGJ5dGVzX3dyaXR0ZW47CisgIC8qIFdpblNvY2sgd2lsbCBkZXN0cm95IHVucmVhZCByZWNlaXZlZCBkYXRhIGlmIHNlbmQoKSBpcworICAgICBmYWlsZWQuCisgICAgIFRvIGF2b2lkIGxvc3NhZ2Ugb2YgcmVjZWl2ZWQgZGF0YSwgcmVjdigpIG11c3QgYmUKKyAgICAgcGVyZm9ybWVkIGJlZm9yZSBldmVyeSBzZW5kKCkgaWYgYW55IGluY29taW5nIGRhdGEgaXMKKyAgICAgYXZhaWxhYmxlLiAqLworICBwcmVfcmVjZWl2ZV9wbGFpbihjb25uLCBudW0pOworCisjaWZkZWYgTVNHX0ZBU1RPUEVOIC8qIExpbnV4ICovCisgIGlmKGNvbm4tPmJpdHMudGNwX2Zhc3RvcGVuKSB7CisgICAgYnl0ZXNfd3JpdHRlbiA9IHNlbmR0byhzb2NrZmQsIG1lbSwgbGVuLCBNU0dfRkFTVE9QRU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uLT5pcF9hZGRyLT5haV9hZGRyLCBjb25uLT5pcF9hZGRyLT5haV9hZGRybGVuKTsKKyAgICBjb25uLT5iaXRzLnRjcF9mYXN0b3BlbiA9IEZBTFNFOworICB9CisgIGVsc2UKKyNlbmRpZgorICAgIGJ5dGVzX3dyaXR0ZW4gPSBzd3JpdGUoc29ja2ZkLCBtZW0sIGxlbik7CiAKICAgKmNvZGUgPSBDVVJMRV9PSzsKICAgaWYoLTEgPT0gYnl0ZXNfd3JpdHRlbikgewpAQCAtMjY4LDcgKzM2OSw4IEBACiAgICAgICAvKiBlcnJubyBtYXkgYmUgRVdPVUxEQkxPQ0sgb3Igb24gc29tZSBzeXN0ZW1zIEVBR0FJTiB3aGVuIGl0IHJldHVybmVkCiAgICAgICAgICBkdWUgdG8gaXRzIGluYWJpbGl0eSB0byBzZW5kIG9mZiBkYXRhIHdpdGhvdXQgYmxvY2tpbmcuIFdlIHRoZXJlZm9yCiAgICAgICAgICB0cmVhdCBib3RoIGVycm9yIGNvZGVzIHRoZSBzYW1lIGhlcmUgKi8KLSAgICAgIChFV09VTERCTE9DSyA9PSBlcnIpIHx8IChFQUdBSU4gPT0gZXJyKSB8fCAoRUlOVFIgPT0gZXJyKQorICAgICAgKEVXT1VMREJMT0NLID09IGVycikgfHwgKEVBR0FJTiA9PSBlcnIpIHx8IChFSU5UUiA9PSBlcnIpIHx8CisgICAgICAoRUlOUFJPR1JFU1MgPT0gZXJyKQogI2VuZGlmCiAgICAgICApIHsKICAgICAgIC8qIHRoaXMgaXMganVzdCBhIGNhc2Ugb2YgRVdPVUxEQkxPQ0sgKi8KQEAgLTMxMSw3ICs0MTMsMTYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW4sIENVUkxjb2RlICpjb2RlKQogewogICBjdXJsX3NvY2tldF90IHNvY2tmZCA9IGNvbm4tPnNvY2tbbnVtXTsKLSAgc3NpemVfdCBucmVhZCA9IHNyZWFkKHNvY2tmZCwgYnVmLCBsZW4pOworICBzc2l6ZV90IG5yZWFkOworICAvKiBDaGVjayBhbmQgcmV0dXJuIGRhdGEgdGhhdCBhbHJlYWR5IHJlY2VpdmVkIGFuZCBzdG9yaWVkIGluIGludGVybmFsCisgICAgIGludGVybWVkaWF0ZSBidWZmZXIgKi8KKyAgbnJlYWQgPSBnZXRfcHJlX3JlY3ZlZChjb25uLCBudW0sIGJ1ZiwgbGVuKTsKKyAgaWYobnJlYWQgPiAwKSB7CisgICAgKmNvZGUgPSBDVVJMRV9PSzsKKyAgICByZXR1cm4gbnJlYWQ7CisgIH0KKworICBucmVhZCA9IHNyZWFkKHNvY2tmZCwgYnVmLCBsZW4pOwogCiAgICpjb2RlID0gQ1VSTEVfT0s7CiAgIGlmKC0xID09IG5yZWFkKSB7CkBAIC01MjAsMTEgKzYzMSwxMyBAQAogCiAgIGlmKC0xID09IG5yZWFkKSB7CiAgICAgaW50IGVyciA9IFNPQ0tFUlJOTzsKKyAgICBpbnQgcmV0dXJuX2Vycm9yOwogI2lmZGVmIFVTRV9XSU5TT0NLCi0gICAgaWYoV1NBRVdPVUxEQkxPQ0sgPT0gZXJyKQorICAgIHJldHVybl9lcnJvciA9IFdTQUVXT1VMREJMT0NLID09IGVycjsKICNlbHNlCi0gICAgaWYoKEVXT1VMREJMT0NLID09IGVycikgfHwgKEVBR0FJTiA9PSBlcnIpIHx8IChFSU5UUiA9PSBlcnIpKQorICAgIHJldHVybl9lcnJvciA9IEVXT1VMREJMT0NLID09IGVyciB8fCBFQUdBSU4gPT0gZXJyIHx8IEVJTlRSID09IGVycjsKICNlbmRpZgorICAgIGlmKHJldHVybl9lcnJvcikKICAgICAgIHJldHVybiBDVVJMRV9BR0FJTjsKICAgICBlbHNlCiAgICAgICByZXR1cm4gQ1VSTEVfUkVDVl9FUlJPUjsKQEAgLTU1MSw3ICs2NjQsMTAgQEAKICAgc3NpemVfdCBucmVhZCA9IDA7CiAgIHNpemVfdCBieXRlc2Zyb21zb2NrZXQgPSAwOwogICBjaGFyICpidWZmZXJ0b2ZpbGwgPSBOVUxMOwotICBib29sIHBpcGVsaW5pbmcgPSBDdXJsX3BpcGVsaW5lX3dhbnRlZChjb25uLT5kYXRhLT5tdWx0aSwgQ1VSTFBJUEVfSFRUUDEpOworCisgIC8qIGlmIEhUVFAvMSBwaXBlbGluaW5nIGlzIGJvdGggd2FudGVkIGFuZCBwb3NzaWJsZSAqLworICBib29sIHBpcGVsaW5pbmcgPSBDdXJsX3BpcGVsaW5lX3dhbnRlZChjb25uLT5kYXRhLT5tdWx0aSwgQ1VSTFBJUEVfSFRUUDEpICYmCisgICAgKGNvbm4tPmJ1bmRsZS0+bXVsdGl1c2UgPT0gQlVORExFX1BJUEVMSU5JTkcpOwogCiAgIC8qIFNldCAnbnVtJyB0byAwIG9yIDEsIGRlcGVuZGluZyBvbiB3aGljaCBzb2NrZXQgdGhhdCBoYXMgYmVlbiBzZW50IGhlcmUuCiAgICAgIElmIGl0IGlzIHRoZSBzZWNvbmQgc29ja2V0LCB3ZSBzZXQgbnVtIHRvIDEuIE90aGVyd2lzZSB0byAwLiBUaGlzIGxldHMKZGlmZiAtLWdpdCBhL2xpYi9zZW5kZi5oIGIvbGliL3NlbmRmLmgKaW5kZXggODZmMDZjZi4uNDhlOTQ0NCAxMDA2NDQKLS0tIGEvbGliL3NlbmRmLmgKKysrIGIvbGliL3NlbmRmLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvc2V0dXAtb3M0MDAuaCBiL2xpYi9zZXR1cC1vczQwMC5oCmluZGV4IGZhZTg1NjcuLmUzMmI3MmYgMTAwNjQ0Ci0tLSBhL2xpYi9zZXR1cC1vczQwMC5oCisrKyBiL2xpYi9zZXR1cC1vczQwMC5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL3NldHVwLXZtcy5oIGIvbGliL3NldHVwLXZtcy5oCmluZGV4IGY2MTc5YTQuLjRiNzhlMGIgMTAwNjQ0Ci0tLSBhL2xpYi9zZXR1cC12bXMuaAorKysgYi9saWIvc2V0dXAtdm1zLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yNDksNiArMjQ5LDkgQEAKICNkZWZpbmUgTUQ1X0luaXQgTUQ1X0lOSVQKICNkZWZpbmUgTUQ1X1VwZGF0ZSBNRDVfVVBEQVRFCiAjZGVmaW5lIE9QRU5TU0xfYWRkX2FsbF9hbGdvX25vY29uZiBPUEVOU1NMX0FERF9BTExfQUxHT19OT0NPTkYKKyNpZm5kZWYgX19WQVgKKyNkZWZpbmUgT1BFTlNTTF9sb2FkX2J1aWx0aW5fbW9kdWxlcyBPUEVOU1NMX0xPQURfQlVJTFRJTl9NT0RVTEVTCisjZW5kaWYKICNkZWZpbmUgUEVNX3JlYWRfWDUwOSBQRU1fUkVBRF9YNTA5CiAjZGVmaW5lIFBFTV93cml0ZV9iaW9fWDUwOSBQRU1fV1JJVEVfQklPX1g1MDkKICNkZWZpbmUgUEtDUzEyX1BCRV9hZGQgUEtDUzEyX1BCRV9BREQKQEAgLTI3Miw2ICsyNzUsNyBAQAogI2RlZmluZSBTU0xfQ1RYX3NldF9jaXBoZXJfbGlzdCBTU0xfQ1RYX1NFVF9DSVBIRVJfTElTVAogI2RlZmluZSBTU0xfQ1RYX3NldF9kZWZfcGFzc3dkX2NiX3VkIFNTTF9DVFhfU0VUX0RFRl9QQVNTV0RfQ0JfVUQKICNkZWZpbmUgU1NMX0NUWF9zZXRfZGVmYXVsdF9wYXNzd2RfY2IgU1NMX0NUWF9TRVRfREVGQVVMVF9QQVNTV0RfQ0IKKyNkZWZpbmUgU1NMX0NUWF9zZXRfbXNnX2NhbGxiYWNrIFNTTF9DVFhfU0VUX01TR19DQUxMQkFDSwogI2RlZmluZSBTU0xfQ1RYX3NldF92ZXJpZnkgU1NMX0NUWF9TRVRfVkVSSUZZCiAjZGVmaW5lIFNTTF9DVFhfdXNlX1ByaXZhdGVLZXkgU1NMX0NUWF9VU0VfUFJJVkFURUtFWQogI2RlZmluZSBTU0xfQ1RYX3VzZV9Qcml2YXRlS2V5X2ZpbGUgU1NMX0NUWF9VU0VfUFJJVkFURUtFWV9GSUxFCkBAIC0zMDEsNiArMzA1LDcgQEAKICNkZWZpbmUgU1NMX3NldF9mZCBTU0xfU0VUX0ZECiAjZGVmaW5lIFNTTF9zZXRfc2Vzc2lvbiBTU0xfU0VUX1NFU1NJT04KICNkZWZpbmUgU1NMX3NodXRkb3duIFNTTF9TSFVURE9XTgorI2RlZmluZSBTU0xfdmVyc2lvbiBTU0xfVkVSU0lPTgogI2RlZmluZSBTU0xfd3JpdGUgU1NMX1dSSVRFCiAjZGVmaW5lIFNTTGVheSBTU0xFQVkKICNkZWZpbmUgU1NMdjIzX2NsaWVudF9tZXRob2QgU1NMVjIzX0NMSUVOVF9NRVRIT0QKQEAgLTMyNSw2ICszMzAsNyBAQAogI2RlZmluZSBVSV9zZXRfcmVzdWx0IFVJX1NFVF9SRVNVTFQKICNkZWZpbmUgWDUwOVYzX0VYVF9wcmludCBYNTA5VjNfRVhUX1BSSU5UCiAjZGVmaW5lIFg1MDlfRVhURU5TSU9OX2dldF9jcml0aWNhbCBYNTA5X0VYVEVOU0lPTl9HRVRfQ1JJVElDQUwKKyNkZWZpbmUgWDUwOV9FWFRFTlNJT05fZ2V0X2RhdGEgWDUwOV9FWFRFTlNJT05fR0VUX0RBVEEKICNkZWZpbmUgWDUwOV9FWFRFTlNJT05fZ2V0X29iamVjdCBYNTA5X0VYVEVOU0lPTl9HRVRfT0JKRUNUCiAjZGVmaW5lIFg1MDlfTE9PS1VQX2ZpbGUgWDUwOV9MT09LVVBfRklMRQogI2RlZmluZSBYNTA5X05BTUVfRU5UUllfZ2V0X2RhdGEgWDUwOV9OQU1FX0VOVFJZX0dFVF9EQVRBCkBAIC0zNDksNiArMzU1LDEyIEBACiAjZGVmaW5lIHNrX3BvcCBTS19QT1AKICNkZWZpbmUgc2tfcG9wX2ZyZWUgU0tfUE9QX0ZSRUUKICNkZWZpbmUgc2tfdmFsdWUgU0tfVkFMVUUKKyNpZmRlZiBfX1ZBWAorI2RlZmluZSBPUEVOU1NMX05PX1NIQTI1NgorI2VuZGlmCisjZGVmaW5lIFNIQTI1Nl9GaW5hbCBTSEEyNTZfRklOQUwKKyNkZWZpbmUgU0hBMjU2X0luaXQgU0hBMjU2X0lOSVQKKyNkZWZpbmUgU0hBMjU2X1VwZGF0ZSBTSEEyNTZfVVBEQVRFCiAKICNkZWZpbmUgVVNFX1VQUEVSQ0FTRV9HU1NBUEkgMQogI2RlZmluZSBnc3Nfc2VhbCBHU1NfU0VBTApkaWZmIC0tZ2l0IGEvbGliL3NoYXJlLmMgYi9saWIvc2hhcmUuYwppbmRleCAxNzIwMjQ4Li41OGM1OTEyIDEwMDY0NAotLS0gYS9saWIvc2hhcmUuYworKysgYi9saWIvc2hhcmUuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTcxLDE0ICs3MSwxNCBAQAogICAgIC8qIHRoaXMgaXMgYSB0eXBlIHRoaXMgc2hhcmUgd2lsbCBzaGFyZSAqLwogICAgIHR5cGUgPSB2YV9hcmcocGFyYW0sIGludCk7CiAgICAgc2hhcmUtPnNwZWNpZmllciB8PSAoMTw8dHlwZSk7Ci0gICAgc3dpdGNoKCB0eXBlICkgeworICAgIHN3aXRjaCh0eXBlKSB7CiAgICAgY2FzZSBDVVJMX0xPQ0tfREFUQV9ETlM6CiAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ1VSTF9MT0NLX0RBVEFfQ09PS0lFOgogI2lmICFkZWZpbmVkKENVUkxfRElTQUJMRV9IVFRQKSAmJiAhZGVmaW5lZChDVVJMX0RJU0FCTEVfQ09PS0lFUykKICAgICAgIGlmKCFzaGFyZS0+Y29va2llcykgewotICAgICAgICBzaGFyZS0+Y29va2llcyA9IEN1cmxfY29va2llX2luaXQoTlVMTCwgTlVMTCwgTlVMTCwgVFJVRSApOworICAgICAgICBzaGFyZS0+Y29va2llcyA9IEN1cmxfY29va2llX2luaXQoTlVMTCwgTlVMTCwgTlVMTCwgVFJVRSk7CiAgICAgICAgIGlmKCFzaGFyZS0+Y29va2llcykKICAgICAgICAgICByZXMgPSBDVVJMU0hFX05PTUVNOwogICAgICAgfQpAQCAtMTE0LDcgKzExNCw3IEBACiAgICAgLyogdGhpcyBpcyBhIHR5cGUgdGhpcyBzaGFyZSB3aWxsIG5vIGxvbmdlciBzaGFyZSAqLwogICAgIHR5cGUgPSB2YV9hcmcocGFyYW0sIGludCk7CiAgICAgc2hhcmUtPnNwZWNpZmllciAmPSB+KDE8PHR5cGUpOwotICAgIHN3aXRjaCggdHlwZSApIHsKKyAgICBzd2l0Y2godHlwZSkgewogICAgIGNhc2UgQ1VSTF9MT0NLX0RBVEFfRE5TOgogICAgICAgYnJlYWs7CiAKZGlmZiAtLWdpdCBhL2xpYi9zaGFyZS5oIGIvbGliL3NoYXJlLmgKaW5kZXggOGU2NjI5Yi4uZDIzZDNhMCAxMDA2NDQKLS0tIGEvbGliL3NoYXJlLmgKKysrIGIvbGliL3NoYXJlLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvc2lncGlwZS5oIGIvbGliL3NpZ3BpcGUuaAppbmRleCBlOGQyYWNkLi42NTU5Yzc0IDEwMDY0NAotLS0gYS9saWIvc2lncGlwZS5oCisrKyBiL2xpYi9zaWdwaXBlLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvc2xpc3QuYyBiL2xpYi9zbGlzdC5jCmluZGV4IDljMGIyYTUuLmU1YWRjMGUgMTAwNjQ0Ci0tLSBhL2xpYi9zbGlzdC5jCisrKyBiL2xpYi9zbGlzdC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMywgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjIsNiArMjIsOCBAQAogCiAjaW5jbHVkZSAiY3VybF9zZXR1cC5oIgogCisjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CisKICNpbmNsdWRlICJzbGlzdC5oIgogCiAvKiBUaGUgbGFzdCAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmU6ICovCmRpZmYgLS1naXQgYS9saWIvc2xpc3QuaCBiL2xpYi9zbGlzdC5oCmluZGV4IGVhN2RjYzQuLmIzZjQ5OGMgMTAwNjQ0Ci0tLSBhL2xpYi9zbGlzdC5oCisrKyBiL2xpYi9zbGlzdC5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL3NtYi5jIGIvbGliL3NtYi5jCmluZGV4IGQ0NjFhNzEuLjJjMzNjMTEgMTAwNjQ0Ci0tLSBhL2xpYi9zbWIuYworKysgYi9saWIvc21iLmMKQEAgLTEwLDcgKzEwLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0xMzEsNyArMTMxLDcgQEAKICAgIGRlZmluZWQoX19PUzQwMF9fKQogc3RhdGljIHVuc2lnbmVkIHNob3J0IHNtYl9zd2FwMTYodW5zaWduZWQgc2hvcnQgeCkKIHsKLSAgcmV0dXJuICh4IDw8IDgpIHwgKCh4ID4+IDgpICYgMHhmZik7CisgIHJldHVybiAodW5zaWduZWQgc2hvcnQpICgoeCA8PCA4KSB8ICgoeCA+PiA4KSAmIDB4ZmYpKTsKIH0KIAogc3RhdGljIHVuc2lnbmVkIGludCBzbWJfc3dhcDMyKHVuc2lnbmVkIGludCB4KQpAQCAtMTQzLDEyICsxNDMsMTQgQEAKICNpZmRlZiBIQVZFX0xPTkdMT05HCiBzdGF0aWMgdW5zaWduZWQgbG9uZyBsb25nIHNtYl9zd2FwNjQodW5zaWduZWQgbG9uZyBsb25nIHgpCiB7Ci0gIHJldHVybiAoKHVuc2lnbmVkIGxvbmcgbG9uZylzbWJfc3dhcDMyKHgpIDw8IDMyKSB8IHNtYl9zd2FwMzIoeCA+PiAzMik7CisgIHJldHVybiAoKHVuc2lnbmVkIGxvbmcgbG9uZykgc21iX3N3YXAzMigodW5zaWduZWQgaW50KSB4KSA8PCAzMikgfAorICAgICAgICAgIHNtYl9zd2FwMzIoKHVuc2lnbmVkIGludCkgKHggPj4gMzIpKTsKIH0KICNlbHNlCiBzdGF0aWMgdW5zaWduZWQgX19pbnQ2NCBzbWJfc3dhcDY0KHVuc2lnbmVkIF9faW50NjQgeCkKIHsKLSAgcmV0dXJuICgodW5zaWduZWQgX19pbnQ2NClzbWJfc3dhcDMyKHgpIDw8IDMyKSB8IHNtYl9zd2FwMzIoeCA+PiAzMik7CisgIHJldHVybiAoKHVuc2lnbmVkIF9faW50NjQpIHNtYl9zd2FwMzIoKHVuc2lnbmVkIGludCkgeCkgPDwgMzIpIHwKKyAgICAgICAgICBzbWJfc3dhcDMyKCh1bnNpZ25lZCBpbnQpICh4ID4+IDMyKSk7CiB9CiAjZW5kaWYKICNlbHNlCmRpZmYgLS1naXQgYS9saWIvc21iLmggYi9saWIvc21iLmgKaW5kZXggNzg1MmZhMS4uMWE0ZjY2ZSAxMDA2NDQKLS0tIGEvbGliL3NtYi5oCisrKyBiL2xpYi9zbWIuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9zbXRwLmMgYi9saWIvc210cC5jCmluZGV4IGRhZGEwODcuLjJhNWIyYmYgMTAwNjQ0Ci0tLSBhL2xpYi9zbXRwLmMKKysrIGIvbGliL3NtdHAuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTgyLDkgKzgyLDkgQEAKICNpbmNsdWRlICJjdXJsX2dldGhvc3RuYW1lLmgiCiAjaW5jbHVkZSAiY3VybF9zYXNsLmgiCiAjaW5jbHVkZSAid2Fybmxlc3MuaCIKKy8qIFRoZSBsYXN0IDMgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlIGluIHRoaXMgb3JkZXIgKi8KICNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgogI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCi0vKiBUaGUgbGFzdCAjaW5jbHVkZSBmaWxlIHNob3VsZCBiZTogKi8KICNpbmNsdWRlICJtZW1kZWJ1Zy5oIgogCiAvKiBMb2NhbCBBUEkgZnVuY3Rpb25zICovCkBAIC0yMjQsNyArMjI0LDExIEBACiAjaWZkZWYgVVNFX1NTTAogc3RhdGljIHZvaWQgc210cF90b19zbXRwcyhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pCiB7CisgIC8qIENoYW5nZSB0aGUgY29ubmVjdGlvbiBoYW5kbGVyICovCiAgIGNvbm4tPmhhbmRsZXIgPSAmQ3VybF9oYW5kbGVyX3NtdHBzOworCisgIC8qIFNldCB0aGUgY29ubmVjdGlvbidzIHVwZ3JhZGVkIHRvIFRMUyBmbGFnICovCisgIGNvbm4tPnRsc191cGdyYWRlZCA9IFRSVUU7CiB9CiAjZWxzZQogI2RlZmluZSBzbXRwX3RvX3NtdHBzKHgpIEN1cmxfbm9wX3N0bXQKQEAgLTI4OCw3ICsyOTIsNyBAQAogICAvKiBGaW5kIHRoZSBlbmQgb2YgdGhlIG1lc3NhZ2UgKi8KICAgZm9yKGxlbiA9IHN0cmxlbihtZXNzYWdlKTsgbGVuLS07KQogICAgIGlmKG1lc3NhZ2VbbGVuXSAhPSAnXHInICYmIG1lc3NhZ2VbbGVuXSAhPSAnXG4nICYmIG1lc3NhZ2VbbGVuXSAhPSAnICcgJiYKLSAgICAgICAgbWVzc2FnZVtsZW5dICE9ICdcdCcpCisgICAgICAgbWVzc2FnZVtsZW5dICE9ICdcdCcpCiAgICAgICBicmVhazsKIAogICAvKiBUZXJtaW5hdGUgdGhlIG1lc3NhZ2UgKi8KQEAgLTQ4Niw3ICs0OTAsNyBAQAogICAvKiBDaGVjayB3ZSBoYXZlIGVub3VnaCBkYXRhIHRvIGF1dGhlbnRpY2F0ZSB3aXRoLCBhbmQgdGhlCiAgICAgIHNlcnZlciBzdXBwb3J0cyBhdXRoZW50aWF0aW9uLCBhbmQgZW5kIHRoZSBjb25uZWN0IHBoYXNlIGlmIG5vdCAqLwogICBpZighc210cGMtPmF1dGhfc3VwcG9ydGVkIHx8Ci0gICAgICAhQ3VybF9zYXNsX2Nhbl9hdXRoZW50aWNhdGUoJnNtdHBjLT5zYXNsLCBjb25uKSkgeworICAgICAhQ3VybF9zYXNsX2Nhbl9hdXRoZW50aWNhdGUoJnNtdHBjLT5zYXNsLCBjb25uKSkgewogICAgIHN0YXRlKGNvbm4sIFNNVFBfU1RPUCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKICAgfQpAQCAtNTIyLDkgKzUyNiw5IEBACiAgIC8qIFNlbmQgdGhlIGNvbW1hbmQgKi8KICAgaWYoc210cC0+cmNwdCkKICAgICByZXN1bHQgPSBDdXJsX3BwX3NlbmRmKCZjb25uLT5wcm90by5zbXRwYy5wcCwgIiVzICVzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbXRwLT5jdXN0b20gJiYgc210cC0+Y3VzdG9tWzBdICE9ICdcMCcgPwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNtdHAtPmN1c3RvbSA6ICJWUkZZIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbXRwLT5yY3B0LT5kYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNtdHAtPmN1c3RvbSAmJiBzbXRwLT5jdXN0b21bMF0gIT0gJ1wwJyA/CisgICAgICAgICAgICAgICAgICAgICAgICAgICBzbXRwLT5jdXN0b20gOiAiVlJGWSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzbXRwLT5yY3B0LT5kYXRhKTsKICAgZWxzZQogICAgIHJlc3VsdCA9IEN1cmxfcHBfc2VuZGYoJmNvbm4tPnByb3RvLnNtdHBjLnBwLCAiJXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc210cC0+Y3VzdG9tICYmIHNtdHAtPmN1c3RvbVswXSAhPSAnXDAnID8KQEAgLTYyOSwxMCArNjMzLDEwIEBACiAgIC8qIFNlbmQgdGhlIFJDUFQgVE8gY29tbWFuZCAqLwogICBpZihzbXRwLT5yY3B0LT5kYXRhWzBdID09ICc8JykKICAgICByZXN1bHQgPSBDdXJsX3BwX3NlbmRmKCZjb25uLT5wcm90by5zbXRwYy5wcCwgIlJDUFQgVE86JXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNtdHAtPnJjcHQtPmRhdGEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgc210cC0+cmNwdC0+ZGF0YSk7CiAgIGVsc2UKICAgICByZXN1bHQgPSBDdXJsX3BwX3NlbmRmKCZjb25uLT5wcm90by5zbXRwYy5wcCwgIlJDUFQgVE86PCVzPiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc210cC0+cmNwdC0+ZGF0YSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBzbXRwLT5yY3B0LT5kYXRhKTsKICAgaWYoIXJlc3VsdCkKICAgICBzdGF0ZShjb25uLCBTTVRQX1JDUFQpOwogCkBAIC03NjYsOCArNzcwLDggQEAKICAgICAgICAgICB3b3JkbGVuKys7CiAKICAgICAgICAgLyogVGVzdCB0aGUgd29yZCBmb3IgYSBtYXRjaGluZyBhdXRoZW50aWNhdGlvbiBtZWNoYW5pc20gKi8KLSAgICAgICAgaWYoKG1lY2hiaXQgPSBDdXJsX3Nhc2xfZGVjb2RlX21lY2gobGluZSwgd29yZGxlbiwgJmxsZW4pKSAmJgotICAgICAgICAgICBsbGVuID09IHdvcmRsZW4pCisgICAgICAgIG1lY2hiaXQgPSBDdXJsX3Nhc2xfZGVjb2RlX21lY2gobGluZSwgd29yZGxlbiwgJmxsZW4pOworICAgICAgICBpZihtZWNoYml0ICYmIGxsZW4gPT0gd29yZGxlbikKICAgICAgICAgICBzbXRwYy0+c2FzbC5hdXRobWVjaHMgfD0gbWVjaGJpdDsKIAogICAgICAgICBsaW5lICs9IHdvcmRsZW47CkBAIC0xMjAwLDEwICsxMjA0LDYgQEAKICAgKHZvaWQpcHJlbWF0dXJlOwogCiAgIGlmKCFzbXRwIHx8ICFwcC0+Y29ubikKLSAgICAvKiBXaGVuIHRoZSBlYXN5IGhhbmRsZSBpcyByZW1vdmVkIGZyb20gdGhlIG11bHRpIGludGVyZmFjZSB3aGlsZSBsaWJjdXJsCi0gICAgICAgaXMgc3RpbGwgdHJ5aW5nIHRvIHJlc29sdmUgdGhlIGhvc3QgbmFtZSwgdGhlIFNNVFAgc3RydWN0IGlzIG5vdCB5ZXQKLSAgICAgICBpbml0aWFsaXplZC4gSG93ZXZlciwgdGhlIHJlbW92YWwgYWN0aW9uIGNhbGxzIEN1cmxfZG9uZSgpIHdoaWNoIGluCi0gICAgICAgdHVybiBjYWxscyB0aGlzIGZ1bmN0aW9uLCBzbyB3ZSBzaW1wbHkgcmV0dXJuIHN1Y2Nlc3MuICovCiAgICAgcmV0dXJuIENVUkxFX09LOwogCiAgIGlmKHN0YXR1cykgewpAQCAtMTI1OCw4ICsxMjU4LDcgQEAKIAogICAgICAgIFRPRE86IHdoZW4gdGhlIG11bHRpIGludGVyZmFjZSBpcyB1c2VkLCB0aGlzIF9yZWFsbHlfIHNob3VsZCBiZSB1c2luZwogICAgICAgIHRoZSBzbXRwX211bHRpX3N0YXRlbWFjaCBmdW5jdGlvbiBidXQgd2UgaGF2ZSBubyBnZW5lcmFsIHN1cHBvcnQgZm9yCi0gICAgICAgbm9uLWJsb2NraW5nIERPTkUgb3BlcmF0aW9ucywgbm90IGluIHRoZSBtdWx0aSBzdGF0ZSBtYWNoaW5lIGFuZCB3aXRoCi0gICAgICAgQ3VybF9kb25lKCkgaW52b2tlcyBvbiBzZXZlcmFsIHBsYWNlcyBpbiB0aGUgY29kZSEKKyAgICAgICBub24tYmxvY2tpbmcgRE9ORSBvcGVyYXRpb25zIQogICAgICovCiAgICAgcmVzdWx0ID0gc210cF9ibG9ja19zdGF0ZW1hY2goY29ubik7CiAgIH0KQEAgLTE0NTAsNiArMTQ0OSwxMCBAQAogICBzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSA9IGNvbm4tPmRhdGE7CiAgIENVUkxjb2RlIHJlc3VsdDsKIAorICAvKiBDbGVhciB0aGUgVExTIHVwZ3JhZGVkIGZsYWcgKi8KKyAgY29ubi0+dGxzX3VwZ3JhZGVkID0gRkFMU0U7CisKKyAgLyogU2V0IHVwIHRoZSBwcm94eSBpZiBuZWNlc3NhcnkgKi8KICAgaWYoY29ubi0+Yml0cy5odHRwcHJveHkgJiYgIWRhdGEtPnNldC50dW5uZWxfdGhydV9odHRwcHJveHkpIHsKICAgICAvKiBVbmxlc3Mgd2UgaGF2ZSBhc2tlZCB0byB0dW5uZWwgU01UUCBvcGVyYXRpb25zIHRocm91Z2ggdGhlIHByb3h5LCB3ZQogICAgICAgIHN3aXRjaCBhbmQgdXNlIEhUVFAgb3BlcmF0aW9ucyBvbmx5ICovCkBAIC0xNTAyLDcgKzE1MDUsNyBAQAogICAgIGNvbnN0IGNoYXIgKnZhbHVlOwogCiAgICAgd2hpbGUoKnB0ciAmJiAqcHRyICE9ICc9JykKLSAgICAgICAgcHRyKys7CisgICAgICBwdHIrKzsKIAogICAgIHZhbHVlID0gcHRyICsgMTsKIApkaWZmIC0tZ2l0IGEvbGliL3NtdHAuaCBiL2xpYi9zbXRwLmgKaW5kZXggOWZiZTBjNS4uNmViZWMxOCAxMDA2NDQKLS0tIGEvbGliL3NtdHAuaAorKysgYi9saWIvc210cC5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL3NvY2thZGRyLmggYi9saWIvc29ja2FkZHIuaAppbmRleCA2YTIxNTFjLi45NWJhNGMzIDEwMDY0NAotLS0gYS9saWIvc29ja2FkZHIuaAorKysgYi9saWIvc29ja2FkZHIuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9zb2Nrcy5jIGIvbGliL3NvY2tzLmMKaW5kZXggN2QzZjc4Mi4uOGM0MTI5NiAxMDA2NDQKLS0tIGEvbGliL3NvY2tzLmMKKysrIGIvbGliL3NvY2tzLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0xNzMsOCArMTczLDggQEAKICAgICAgIHVuc2lnbmVkIHNob3J0IGlwWzRdOwogICAgICAgQ3VybF9wcmludGFibGVfYWRkcmVzcyhocCwgYnVmLCBzaXplb2YoYnVmKSk7CiAKLSAgICAgIGlmKDQgPT0gc3NjYW5mKCBidWYsICIlaHUuJWh1LiVodS4laHUiLAotICAgICAgICAgICAgICAgICAgICAgICZpcFswXSwgJmlwWzFdLCAmaXBbMl0sICZpcFszXSkpIHsKKyAgICAgIGlmKDQgPT0gc3NjYW5mKGJ1ZiwgIiVodS4laHUuJWh1LiVodSIsCisgICAgICAgICAgICAgICAgICAgICAmaXBbMF0sICZpcFsxXSwgJmlwWzJdLCAmaXBbM10pKSB7CiAgICAgICAgIC8qIFNldCBEU1RJUCAqLwogICAgICAgICBzb2Nrc3JlcVs0XSA9ICh1bnNpZ25lZCBjaGFyKWlwWzBdOwogICAgICAgICBzb2Nrc3JlcVs1XSA9ICh1bnNpZ25lZCBjaGFyKWlwWzFdOwpAQCAtMzAwLDggKzMwMCw4IEBACiAgICAgICAgICAgICAiLCByZXF1ZXN0IHJlamVjdGVkIG9yIGZhaWxlZC4iLAogICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbNF0sICh1bnNpZ25lZCBjaGFyKXNvY2tzcmVxWzVdLAogICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbNl0sICh1bnNpZ25lZCBjaGFyKXNvY2tzcmVxWzddLAotICAgICAgICAgICAgKChzb2Nrc3JlcVs4XSA8PCA4KSB8IHNvY2tzcmVxWzldKSwKLSAgICAgICAgICAgIHNvY2tzcmVxWzFdKTsKKyAgICAgICAgICAgICgoKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbOF0gPDwgOCkgfCAodW5zaWduZWQgY2hhcilzb2Nrc3JlcVs5XSksCisgICAgICAgICAgICAodW5zaWduZWQgY2hhcilzb2Nrc3JlcVsxXSk7CiAgICAgICByZXR1cm4gQ1VSTEVfQ09VTEROVF9DT05ORUNUOwogICAgIGNhc2UgOTI6CiAgICAgICBmYWlsZihkYXRhLApAQCAtMzEwLDggKzMxMCw4IEBACiAgICAgICAgICAgICAiaWRlbnRkIG9uIHRoZSBjbGllbnQuIiwKICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyKXNvY2tzcmVxWzRdLCAodW5zaWduZWQgY2hhcilzb2Nrc3JlcVs1XSwKICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyKXNvY2tzcmVxWzZdLCAodW5zaWduZWQgY2hhcilzb2Nrc3JlcVs3XSwKLSAgICAgICAgICAgICgoc29ja3NyZXFbOF0gPDwgOCkgfCBzb2Nrc3JlcVs5XSksCi0gICAgICAgICAgICBzb2Nrc3JlcVsxXSk7CisgICAgICAgICAgICAoKCh1bnNpZ25lZCBjaGFyKXNvY2tzcmVxWzhdIDw8IDgpIHwgKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbOV0pLAorICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbMV0pOwogICAgICAgcmV0dXJuIENVUkxFX0NPVUxETlRfQ09OTkVDVDsKICAgICBjYXNlIDkzOgogICAgICAgZmFpbGYoZGF0YSwKQEAgLTMyMCw4ICszMjAsOCBAQAogICAgICAgICAgICAgInJlcG9ydCBkaWZmZXJlbnQgdXNlci1pZHMuIiwKICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyKXNvY2tzcmVxWzRdLCAodW5zaWduZWQgY2hhcilzb2Nrc3JlcVs1XSwKICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyKXNvY2tzcmVxWzZdLCAodW5zaWduZWQgY2hhcilzb2Nrc3JlcVs3XSwKLSAgICAgICAgICAgICgoc29ja3NyZXFbOF0gPDwgOCkgfCBzb2Nrc3JlcVs5XSksCi0gICAgICAgICAgICBzb2Nrc3JlcVsxXSk7CisgICAgICAgICAgICAoKCh1bnNpZ25lZCBjaGFyKXNvY2tzcmVxWzhdIDw8IDgpIHwgKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbOV0pLAorICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbMV0pOwogICAgICAgcmV0dXJuIENVUkxFX0NPVUxETlRfQ09OTkVDVDsKICAgICBkZWZhdWx0OgogICAgICAgZmFpbGYoZGF0YSwKQEAgLTMyOSw4ICszMjksOCBAQAogICAgICAgICAgICAgIiwgVW5rbm93bi4iLAogICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbNF0sICh1bnNpZ25lZCBjaGFyKXNvY2tzcmVxWzVdLAogICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbNl0sICh1bnNpZ25lZCBjaGFyKXNvY2tzcmVxWzddLAotICAgICAgICAgICAgKChzb2Nrc3JlcVs4XSA8PCA4KSB8IHNvY2tzcmVxWzldKSwKLSAgICAgICAgICAgIHNvY2tzcmVxWzFdKTsKKyAgICAgICAgICAgICgoKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbOF0gPDwgOCkgfCAodW5zaWduZWQgY2hhcilzb2Nrc3JlcVs5XSksCisgICAgICAgICAgICAodW5zaWduZWQgY2hhcilzb2Nrc3JlcVsxXSk7CiAgICAgICByZXR1cm4gQ1VSTEVfQ09VTEROVF9DT05ORUNUOwogICAgIH0KICAgfQpAQCAtNjAzLDcgKzYwMyw3IEBACiAgICAgICBpZihocC0+YWlfZmFtaWx5ID09IEFGX0lORVQpIHsKICAgICAgICAgc29ja3NyZXFbbGVuKytdID0gMTsgLyogQVRZUDogSVB2NCA9IDEgKi8KIAotICAgICAgICBzYWRkcl9pbiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW4qKWhwLT5haV9hZGRyOworICAgICAgICBzYWRkcl9pbiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW4qKSh2b2lkKilocC0+YWlfYWRkcjsKICAgICAgICAgZm9yKGkgPSAwOyBpIDwgNDsgaSsrKSB7CiAgICAgICAgICAgc29ja3NyZXFbbGVuKytdID0gKCh1bnNpZ25lZCBjaGFyKikmc2FkZHJfaW4tPnNpbl9hZGRyLnNfYWRkcilbaV07CiAgICAgICAgICAgaW5mb2YoZGF0YSwgIiVkXG4iLCBzb2Nrc3JlcVtsZW4tMV0pOwpAQCAtNjEzLDcgKzYxMyw3IEBACiAgICAgICBlbHNlIGlmKGhwLT5haV9mYW1pbHkgPT0gQUZfSU5FVDYpIHsKICAgICAgICAgc29ja3NyZXFbbGVuKytdID0gNDsgLyogQVRZUDogSVB2NiA9IDQgKi8KIAotICAgICAgICBzYWRkcl9pbjYgPSAoc3RydWN0IHNvY2thZGRyX2luNiopaHAtPmFpX2FkZHI7CisgICAgICAgIHNhZGRyX2luNiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW42Kikodm9pZCopaHAtPmFpX2FkZHI7CiAgICAgICAgIGZvcihpID0gMDsgaSA8IDE2OyBpKyspIHsKICAgICAgICAgICBzb2Nrc3JlcVtsZW4rK10gPSAoKHVuc2lnbmVkIGNoYXIqKSZzYWRkcl9pbjYtPnNpbjZfYWRkci5zNl9hZGRyKVtpXTsKICAgICAgICAgfQpAQCAtNjc0LDE1ICs2NzQsMTUgQEAKICAgICAgICAgICAgICJDYW4ndCBjb21wbGV0ZSBTT0NLUzUgY29ubmVjdGlvbiB0byAlZC4lZC4lZC4lZDolZC4gKCVkKSIsCiAgICAgICAgICAgICAodW5zaWduZWQgY2hhcilzb2Nrc3JlcVs0XSwgKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbNV0sCiAgICAgICAgICAgICAodW5zaWduZWQgY2hhcilzb2Nrc3JlcVs2XSwgKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbN10sCi0gICAgICAgICAgICAoKHNvY2tzcmVxWzhdIDw8IDgpIHwgc29ja3NyZXFbOV0pLAotICAgICAgICAgICAgc29ja3NyZXFbMV0pOworICAgICAgICAgICAgKCgodW5zaWduZWQgY2hhcilzb2Nrc3JlcVs4XSA8PCA4KSB8ICh1bnNpZ25lZCBjaGFyKXNvY2tzcmVxWzldKSwKKyAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyKXNvY2tzcmVxWzFdKTsKICAgICB9CiAgICAgZWxzZSBpZihzb2Nrc3JlcVszXSA9PSAzKSB7CiAgICAgICBmYWlsZihkYXRhLAogICAgICAgICAgICAgIkNhbid0IGNvbXBsZXRlIFNPQ0tTNSBjb25uZWN0aW9uIHRvICVzOiVkLiAoJWQpIiwKICAgICAgICAgICAgIGhvc3RuYW1lLAotICAgICAgICAgICAgKChzb2Nrc3JlcVs4XSA8PCA4KSB8IHNvY2tzcmVxWzldKSwKLSAgICAgICAgICAgIHNvY2tzcmVxWzFdKTsKKyAgICAgICAgICAgICgoKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbOF0gPDwgOCkgfCAodW5zaWduZWQgY2hhcilzb2Nrc3JlcVs5XSksCisgICAgICAgICAgICAodW5zaWduZWQgY2hhcilzb2Nrc3JlcVsxXSk7CiAgICAgfQogICAgIGVsc2UgaWYoc29ja3NyZXFbM10gPT0gNCkgewogICAgICAgZmFpbGYoZGF0YSwKQEAgLTY5Niw4ICs2OTYsOCBAQAogICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbMTRdLCAodW5zaWduZWQgY2hhcilzb2Nrc3JlcVsxNV0sCiAgICAgICAgICAgICAodW5zaWduZWQgY2hhcilzb2Nrc3JlcVsxNl0sICh1bnNpZ25lZCBjaGFyKXNvY2tzcmVxWzE3XSwKICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyKXNvY2tzcmVxWzE4XSwgKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbMTldLAotICAgICAgICAgICAgKChzb2Nrc3JlcVs4XSA8PCA4KSB8IHNvY2tzcmVxWzldKSwKLSAgICAgICAgICAgIHNvY2tzcmVxWzFdKTsKKyAgICAgICAgICAgICgoKHVuc2lnbmVkIGNoYXIpc29ja3NyZXFbOF0gPDwgOCkgfCAodW5zaWduZWQgY2hhcilzb2Nrc3JlcVs5XSksCisgICAgICAgICAgICAodW5zaWduZWQgY2hhcilzb2Nrc3JlcVsxXSk7CiAgICAgfQogICAgIHJldHVybiBDVVJMRV9DT1VMRE5UX0NPTk5FQ1Q7CiAgIH0KZGlmZiAtLWdpdCBhL2xpYi9zb2Nrcy5oIGIvbGliL3NvY2tzLmgKaW5kZXggMjllM2JmMC4uYTQ0YWRhNiAxMDA2NDQKLS0tIGEvbGliL3NvY2tzLmgKKysrIGIvbGliL3NvY2tzLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvc29ja3NfZ3NzYXBpLmMgYi9saWIvc29ja3NfZ3NzYXBpLmMKaW5kZXggOGU1NzVjMi4uMTIxNDA0OCAxMDA2NDQKLS0tIGEvbGliL3NvY2tzX2dzc2FwaS5jCisrKyBiL2xpYi9zb2Nrc19nc3NhcGkuYwpAQCAtNiwxMSArNiwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgogICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDExLCBNYXJrdXMgTW9lbGxlciwgPG1hcmt1c19tb2VsbGVyQGNvbXB1c2VydmUuY29tPgotICogQ29weXJpZ2h0IChDKSAyMDEyIC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzIsOSArMzIsMTAgQEAKICNpbmNsdWRlICJ0aW1ldmFsLmgiCiAjaW5jbHVkZSAic29ja3MuaCIKICNpbmNsdWRlICJ3YXJubGVzcy5oIgorCisvKiBUaGUgbGFzdCAzICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZSBpbiB0aGlzIG9yZGVyICovCiAjaW5jbHVkZSAiY3VybF9wcmludGYuaCIKICNpbmNsdWRlICJjdXJsX21lbW9yeS5oIgotLyogVGhlIGxhc3QgI2luY2x1ZGUgZmlsZSBzaG91bGQgYmU6ICovCiAjaW5jbHVkZSAibWVtZGVidWcuaCIKIAogc3RhdGljIGdzc19jdHhfaWRfdCBnc3NfY29udGV4dCA9IEdTU19DX05PX0NPTlRFWFQ7CkBAIC0xMjAsNyArMTIxLDggQEAKICAgdW5zaWduZWQgc2hvcnQgICB1c19sZW5ndGg7CiAgIGNoYXIgICAgICAgICAgICAgKnVzZXI9TlVMTDsKICAgdW5zaWduZWQgY2hhciBzb2Nrc3JlcVs0XTsgLyogcm9vbSBmb3IgR1NTLUFQSSBleGNoYW5nZSBoZWFkZXIgb25seSAqLwotICBjaGFyICpzZXJ2aWNlcHRyID0gZGF0YS0+c2V0LnN0cltTVFJJTkdfU09DS1M1X0dTU0FQSV9TRVJWSUNFXTsKKyAgY29uc3QgY2hhciAqc2VydmljZXB0ciA9IGRhdGEtPnNldC5zdHJbU1RSSU5HX1BST1hZX1NFUlZJQ0VfTkFNRV0gPworICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+c2V0LnN0cltTVFJJTkdfUFJPWFlfU0VSVklDRV9OQU1FXSA6ICJyY21kIjsKIAogICAvKiAgIEdTUy1BUEkgcmVxdWVzdCBsb29rcyBsaWtlCiAgICAqICstLS0tKy0tLS0tLSstLS0tLSstLS0tLS0tLS0tLS0tLS0tKwpkaWZmIC0tZ2l0IGEvbGliL3NvY2tzX3NzcGkuYyBiL2xpYi9zb2Nrc19zc3BpLmMKaW5kZXggYTc3MDhiMi4uZWM1NjRiNCAxMDA2NDQKLS0tIGEvbGliL3NvY2tzX3NzcGkuYworKysgYi9saWIvc29ja3Nfc3NwaS5jCkBAIC01LDEyICs1LDEyIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAyMDEyIC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTEsIE1hcmt1cyBNb2VsbGVyLCA8bWFya3VzX21vZWxsZXJAY29tcHVzZXJ2ZS5jb20+CiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzQsOSArMzQsOSBAQAogI2luY2x1ZGUgImN1cmxfc3NwaS5oIgogI2luY2x1ZGUgImN1cmxfbXVsdGlieXRlLmgiCiAjaW5jbHVkZSAid2Fybmxlc3MuaCIKKy8qIFRoZSBsYXN0IDMgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlIGluIHRoaXMgb3JkZXIgKi8KICNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgogI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCi0vKiBUaGUgbGFzdCAjaW5jbHVkZSBmaWxlIHNob3VsZCBiZTogKi8KICNpbmNsdWRlICJtZW1kZWJ1Zy5oIgogCiAvKgpAQCAtNzAsNyArNzAsNyBAQAogICAvKiBOZWVkcyBHU1MtQVBJIGF1dGhlbnRpY2F0aW9uICovCiAgIFNFQ1VSSVRZX1NUQVRVUyBzdGF0dXM7CiAgIHVuc2lnbmVkIGxvbmcgc3NwaV9yZXRfZmxhZ3MgPSAwOwotICBpbnQgZ3NzX2VuYzsKKyAgdW5zaWduZWQgY2hhciBnc3NfZW5jOwogICBTZWNCdWZmZXIgc3NwaV9zZW5kX3Rva2VuLCBzc3BpX3JlY3ZfdG9rZW4sIHNzcGlfd190b2tlblszXTsKICAgU2VjQnVmZmVyRGVzYyBpbnB1dF9kZXNjLCBvdXRwdXRfZGVzYywgd3JhcF9kZXNjOwogICBTZWNQa2dDb250ZXh0X1NpemVzIHNzcGlfc2l6ZXM7CkBAIC04Myw3ICs4Myw4IEBACiAgIHVuc2lnbmVkIHNob3J0IHVzX2xlbmd0aDsKICAgdW5zaWduZWQgbG9uZyBxb3A7CiAgIHVuc2lnbmVkIGNoYXIgc29ja3NyZXFbNF07IC8qIHJvb20gZm9yIEdTUy1BUEkgZXhjaGFuZ2UgaGVhZGVyIG9ubHkgKi8KLSAgY2hhciAqc2VydmljZSA9IGRhdGEtPnNldC5zdHJbU1RSSU5HX1NPQ0tTNV9HU1NBUElfU0VSVklDRV07CisgIGNvbnN0IGNoYXIgKnNlcnZpY2UgPSBkYXRhLT5zZXQuc3RyW1NUUklOR19QUk9YWV9TRVJWSUNFX05BTUVdID8KKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtPnNldC5zdHJbU1RSSU5HX1BST1hZX1NFUlZJQ0VfTkFNRV0gIDogInJjbWQiOwogCiAgIC8qICAgR1NTLUFQSSByZXF1ZXN0IGxvb2tzIGxpa2UKICAgICogKy0tLS0rLS0tLS0tKy0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCmRpZmYgLS1naXQgYS9saWIvc3BlZWRjaGVjay5jIGIvbGliL3NwZWVkY2hlY2suYwppbmRleCBhYzc0NDdjLi40NzA2ZDJkIDEwMDY0NAotLS0gYS9saWIvc3BlZWRjaGVjay5jCisrKyBiL2xpYi9zcGVlZGNoZWNrLmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL3NwZWVkY2hlY2suaCBiL2xpYi9zcGVlZGNoZWNrLmgKaW5kZXggNzg2Y2QxMi4uZTE5MjFkNiAxMDA2NDQKLS0tIGEvbGliL3NwZWVkY2hlY2suaAorKysgYi9saWIvc3BlZWRjaGVjay5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL3NwbGF5LmMgYi9saWIvc3BsYXkuYwppbmRleCBiODdiNmNmLi43YWEyZTRiIDEwMDY0NAotLS0gYS9saWIvc3BsYXkuYworKysgYi9saWIvc3BsYXkuYwpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvc3BsYXkuaCBiL2xpYi9zcGxheS5oCmluZGV4IDVmOWVmMjQuLjQyN2JmYzggMTAwNjQ0Ci0tLSBhL2xpYi9zcGxheS5oCisrKyBiL2xpYi9zcGxheS5oCkBAIC03LDExICs3LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk3IC0gMjAxMSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5NyAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNTUsNyArNTUsNyBAQAogI2RlZmluZSBDdXJsX3NwbGF5Y29tcGFyZWtleXMoaSxqKSAoICgoaS50dl9zZWMpICA8IChqLnR2X3NlYykpICA/IC0xIDogXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICgoaS50dl9zZWMpICA+IChqLnR2X3NlYykpICA/ICAxIDogXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICgoaS50dl91c2VjKSA8IChqLnR2X3VzZWMpKSA/IC0xIDogXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICgoaS50dl91c2VjKSA+IChqLnR2X3VzZWMpKSA/ICAxIDogMCApKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKChpLnR2X3VzZWMpID4gKGoudHZfdXNlYykpID8gIDEgOiAwKSkpKQogCiAjaWZkZWYgREVCVUdCVUlMRAogdm9pZCBDdXJsX3NwbGF5cHJpbnQoc3RydWN0IEN1cmxfdHJlZSAqIHQsIGludCBkLCBjaGFyIG91dHB1dCk7CmRpZmYgLS1naXQgYS9saWIvc3NoLmMgYi9saWIvc3NoLmMKaW5kZXggZjIwNjQ1My4uZDVhMWEyYSAxMDA2NDQKLS0tIGEvbGliL3NzaC5jCisrKyBiL2xpYi9zc2guYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTgzLDkgKzgzLDEwIEBACiAjaW5jbHVkZSAibXVsdGlpZi5oIgogI2luY2x1ZGUgInNlbGVjdC5oIgogI2luY2x1ZGUgIndhcm5sZXNzLmgiCisKKy8qIFRoZSBsYXN0IDMgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlIGluIHRoaXMgb3JkZXIgKi8KICNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgogI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCi0vKiBUaGUgbGFzdCAjaW5jbHVkZSBmaWxlIHNob3VsZCBiZTogKi8KICNpbmNsdWRlICJtZW1kZWJ1Zy5oIgogCiAjaWZkZWYgV0lOMzIKQEAgLTEwMSw2ICsxMDIsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZlIHRoZWlyIGRlZmluaXRpb24gaGlkZGVuIHdlbGwgKi8KICNlbmRpZgogCisjaWYgTElCU1NIMl9WRVJTSU9OX05VTSA+PSAweDAxMDIwNgorLyogbGlic3NoMl9zZnRwX3N0YXR2ZnMgYW5kIGZyaWVuZHMgd2VyZSBhZGRlZCBpbiAxLjIuNiAqLworI2RlZmluZSBIQVNfU1RBVFZGU19TVVBQT1JUIDEKKyNlbmRpZgorCiAjZGVmaW5lIHNmdHBfbGlic3NoMl9sYXN0X2Vycm9yKHMpIGN1cmx4X3VsdG9zaShsaWJzc2gyX3NmdHBfbGFzdF9lcnJvcihzKSkKIAogI2RlZmluZSBzZnRwX2xpYnNzaDJfcmVhbHBhdGgocyxwLHQsbSkgXApAQCAtMzYyLDYgKzM2OCw5IEBACiAgICAgIlNTSF9TRlRQX1FVT1RFX1JFTkFNRSIsCiAgICAgIlNTSF9TRlRQX1FVT1RFX1JNRElSIiwKICAgICAiU1NIX1NGVFBfUVVPVEVfVU5MSU5LIiwKKyAgICAiU1NIX1NGVFBfUVVPVEVfU1RBVFZGUyIsCisgICAgIlNTSF9TRlRQX0dFVElORk8iLAorICAgICJTU0hfU0ZUUF9GSUxFVElNRSIsCiAgICAgIlNTSF9TRlRQX1RSQU5TX0lOSVQiLAogICAgICJTU0hfU0ZUUF9VUExPQURfSU5JVCIsCiAgICAgIlNTSF9TRlRQX0NSRUFURV9ESVJTX0lOSVQiLApAQCAtNDE0LDcgKzQyMyw3IEBACiAgIGlmKCF3b3JraW5nX3BhdGgpCiAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CiAKLSAgLyogQ2hlY2sgZm9yIC9+LyAsIGluZGljYXRpbmcgcmVsYXRpdmUgdG8gdGhlIHVzZXIncyBob21lIGRpcmVjdG9yeSAqLworICAvKiBDaGVjayBmb3IgL34vLCBpbmRpY2F0aW5nIHJlbGF0aXZlIHRvIHRoZSB1c2VyJ3MgaG9tZSBkaXJlY3RvcnkgKi8KICAgaWYoY29ubi0+aGFuZGxlci0+cHJvdG9jb2wgJiBDVVJMUFJPVE9fU0NQKSB7CiAgICAgcmVhbF9wYXRoID0gbWFsbG9jKHdvcmtpbmdfcGF0aF9sZW4rMSk7CiAgICAgaWYocmVhbF9wYXRoID09IE5VTEwpIHsKQEAgLTg0OCw3ICs4NTcsOSBAQAogICAgICAgICAgKiBsaWJzc2gyIGV4dHJhY3QgdGhlIHB1YmxpYyBrZXkgZnJvbSB0aGUgcHJpdmF0ZSBrZXkgZmlsZS4KICAgICAgICAgICogVGhpcyBpcyBkb25lIGJ5IHNpbXBseSBwYXNzaW5nIHNzaGMtPnJzYV9wdWIgPSBOVUxMLgogICAgICAgICAgKi8KLSAgICAgICAgaWYoZGF0YS0+c2V0LnN0cltTVFJJTkdfU1NIX1BVQkxJQ19LRVldKSB7CisgICAgICAgIGlmKGRhdGEtPnNldC5zdHJbU1RSSU5HX1NTSF9QVUJMSUNfS0VZXQorICAgICAgICAgICAgLyogdHJlYXQgZW1wdHkgc3RyaW5nIHRoZSBzYW1lIHdheSBhcyBOVUxMICovCisgICAgICAgICAgICAmJiBkYXRhLT5zZXQuc3RyW1NUUklOR19TU0hfUFVCTElDX0tFWV1bMF0pIHsKICAgICAgICAgICBzc2hjLT5yc2FfcHViID0gc3RyZHVwKGRhdGEtPnNldC5zdHJbU1RSSU5HX1NTSF9QVUJMSUNfS0VZXSk7CiAgICAgICAgICAgaWYoIXNzaGMtPnJzYV9wdWIpCiAgICAgICAgICAgICBvdXRfb2ZfbWVtb3J5ID0gVFJVRTsKQEAgLTg2OSw3ICs4ODAsOCBAQAogCiAgICAgICAgIGZyZWUoaG9tZSk7CiAKLSAgICAgICAgaW5mb2YoZGF0YSwgIlVzaW5nIFNTSCBwdWJsaWMga2V5IGZpbGUgJyVzJ1xuIiwgc3NoYy0+cnNhX3B1Yik7CisgICAgICAgIGlmKHNzaGMtPnJzYV9wdWIpCisgICAgICAgICAgaW5mb2YoZGF0YSwgIlVzaW5nIFNTSCBwdWJsaWMga2V5IGZpbGUgJyVzJ1xuIiwgc3NoYy0+cnNhX3B1Yik7CiAgICAgICAgIGluZm9mKGRhdGEsICJVc2luZyBTU0ggcHJpdmF0ZSBrZXkgZmlsZSAnJXMnXG4iLCBzc2hjLT5yc2EpOwogCiAgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9BVVRIX1BLRVkpOwpAQCAtOTM1LDYgKzk0Nyw3IEBACiAgICAgICB9CiAgICAgICBlbHNlIHsKICAgICAgICAgc3RhdGUoY29ubiwgU1NIX0FVVEhfSE9TVF9JTklUKTsKKyAgICAgICAgcmMgPSAwOyAvKiBjbGVhciByYyBhbmQgY29udGludWUgKi8KICAgICAgIH0KICAgICAgIGJyZWFrOwogCkBAIC0xMDE5LDExICsxMDMyLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2hjLT5zc2hhZ2VudF9pZGVudGl0eSk7CiAKICAgICAgICAgaWYocmMgPCAwKSB7Ci0gICAgICAgICAgaWYocmMgIT0gTElCU1NIMl9FUlJPUl9FQUdBSU4pIHsKKyAgICAgICAgICBpZihyYyAhPSBMSUJTU0gyX0VSUk9SX0VBR0FJTikKICAgICAgICAgICAgIC8qIHRyaWVkIGFuZCBmYWlsZWQ/IGdvIHRvIG5leHQgaWRlbnRpdHkgKi8KICAgICAgICAgICAgIHNzaGMtPnNzaGFnZW50X3ByZXZfaWRlbnRpdHkgPSBzc2hjLT5zc2hhZ2VudF9pZGVudGl0eTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgYnJlYWs7CisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgIH0KIApAQCAtMTAzNyw4ICsxMDUwLDEwIEBACiAgICAgICAgIGluZm9mKGRhdGEsICJBZ2VudCBiYXNlZCBhdXRoZW50aWNhdGlvbiBzdWNjZXNzZnVsXG4iKTsKICAgICAgICAgc3RhdGUoY29ubiwgU1NIX0FVVEhfRE9ORSk7CiAgICAgICB9Ci0gICAgICBlbHNlCisgICAgICBlbHNlIHsKICAgICAgICAgc3RhdGUoY29ubiwgU1NIX0FVVEhfS0VZX0lOSVQpOworICAgICAgICByYyA9IDA7IC8qIGNsZWFyIHJjIGFuZCBjb250aW51ZSAqLworICAgICAgfQogI2VuZGlmCiAgICAgICBicmVhazsKIApAQCAtMTE3Nyw3ICsxMTkyLDcgQEAKICAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfUVVPVEUpOwogICAgICAgfQogICAgICAgZWxzZSB7Ci0gICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX1RSQU5TX0lOSVQpOworICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9HRVRJTkZPKTsKICAgICAgIH0KICAgICAgIGJyZWFrOwogCkBAIC0xMzU1LDYgKzEzNzAsMTIgQEAKICAgICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9RVU9URV9VTkxJTkspOwogICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisjaWZkZWYgSEFTX1NUQVRWRlNfU1VQUE9SVAorICAgICAgICBlbHNlIGlmKGN1cmxfc3RybmVxdWFsKGNtZCwgInN0YXR2ZnMgIiwgOCkpIHsKKyAgICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9RVU9URV9TVEFUVkZTKTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorI2VuZGlmCiAKICAgICAgICAgZmFpbGYoZGF0YSwgIlVua25vd24gU0ZUUCBjb21tYW5kIik7CiAgICAgICAgIEN1cmxfc2FmZWZyZWUoc3NoYy0+cXVvdGVfcGF0aDEpOwpAQCAtMTM2Niw3ICsxMzg3LDcgQEAKICAgICAgIH0KICAgICB9CiAgICAgaWYoIXNzaGMtPnF1b3RlX2l0ZW0pIHsKLSAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX1RSQU5TX0lOSVQpOworICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfR0VUSU5GTyk7CiAgICAgfQogICAgIGJyZWFrOwogCkBAIC0xMzg1LDcgKzE0MDYsNyBAQAogICAgICAgICAgIHNzaGMtPm5leHRzdGF0ZSA9IFNTSF9OT19TVEFURTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKLSAgICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9UUkFOU19JTklUKTsKKyAgICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9HRVRJTkZPKTsKICAgICAgICAgfQogICAgICAgfQogICAgICAgYnJlYWs7CkBAIC0xNjA1LDYgKzE2MjYsODggQEAKICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX05FWFRfUVVPVEUpOwogICAgICAgYnJlYWs7CiAKKyNpZmRlZiBIQVNfU1RBVFZGU19TVVBQT1JUCisgICAgY2FzZSBTU0hfU0ZUUF9RVU9URV9TVEFUVkZTOgorICAgIHsKKyAgICAgIExJQlNTSDJfU0ZUUF9TVEFUVkZTIHN0YXR2ZnM7CisgICAgICByYyA9IGxpYnNzaDJfc2Z0cF9zdGF0dmZzKHNzaGMtPnNmdHBfc2Vzc2lvbiwgc3NoYy0+cXVvdGVfcGF0aDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cmx4X3V6dG91aShzdHJsZW4oc3NoYy0+cXVvdGVfcGF0aDEpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXR2ZnMpOworCisgICAgICBpZihyYyA9PSBMSUJTU0gyX0VSUk9SX0VBR0FJTikgeworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYocmMgIT0gMCAmJiAhc3NoYy0+YWNjZXB0ZmFpbCkgeworICAgICAgICBlcnIgPSBzZnRwX2xpYnNzaDJfbGFzdF9lcnJvcihzc2hjLT5zZnRwX3Nlc3Npb24pOworICAgICAgICBDdXJsX3NhZmVmcmVlKHNzaGMtPnF1b3RlX3BhdGgxKTsKKyAgICAgICAgZmFpbGYoZGF0YSwgInN0YXR2ZnMgY29tbWFuZCBmYWlsZWQ6ICVzIiwgc2Z0cF9saWJzc2gyX3N0cmVycm9yKGVycikpOworICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9DTE9TRSk7CisgICAgICAgIHNzaGMtPm5leHRzdGF0ZSA9IFNTSF9OT19TVEFURTsKKyAgICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IENVUkxFX1FVT1RFX0VSUk9SOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYocmMgPT0gMCkgeworICAgICAgICBjaGFyICp0bXAgPSBhcHJpbnRmKCJzdGF0dmZzOlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmX2JzaXplOiAlbGx1XG4iICJmX2Zyc2l6ZTogJWxsdVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmX2Jsb2NrczogJWxsdVxuIiAiZl9iZnJlZTogJWxsdVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmX2JhdmFpbDogJWxsdVxuIiAiZl9maWxlczogJWxsdVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmX2ZmcmVlOiAlbGx1XG4iICJmX2ZhdmFpbDogJWxsdVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmX2ZzaWQ6ICVsbHVcbiIgImZfZmxhZzogJWxsdVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmX25hbWVtYXg6ICVsbHVcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHZmcy5mX2JzaXplLCBzdGF0dmZzLmZfZnJzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR2ZnMuZl9ibG9ja3MsIHN0YXR2ZnMuZl9iZnJlZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dmZzLmZfYmF2YWlsLCBzdGF0dmZzLmZfZmlsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHZmcy5mX2ZmcmVlLCBzdGF0dmZzLmZfZmF2YWlsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR2ZnMuZl9mc2lkLCBzdGF0dmZzLmZfZmxhZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dmZzLmZfbmFtZW1heCk7CisgICAgICAgIGlmKCF0bXApIHsKKyAgICAgICAgICByZXN1bHQgPSBDVVJMRV9PVVRfT0ZfTUVNT1JZOworICAgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX0NMT1NFKTsKKyAgICAgICAgICBzc2hjLT5uZXh0c3RhdGUgPSBTU0hfTk9fU1RBVEU7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICByZXN1bHQgPSBDdXJsX2NsaWVudF93cml0ZShjb25uLCBDTElFTlRXUklURV9IRUFERVIsIHRtcCwgc3RybGVuKHRtcCkpOworICAgICAgICBmcmVlKHRtcCk7CisgICAgICAgIGlmKHJlc3VsdCkgeworICAgICAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX0NMT1NFKTsKKyAgICAgICAgICBzc2hjLT5uZXh0c3RhdGUgPSBTU0hfTk9fU1RBVEU7CisgICAgICAgICAgc3NoYy0+YWN0dWFsY29kZSA9IHJlc3VsdDsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfTkVYVF9RVU9URSk7CisgICAgICBicmVhazsKKyAgICB9CisjZW5kaWYKKyAgICBjYXNlIFNTSF9TRlRQX0dFVElORk86CisgICAgeworICAgICAgaWYoZGF0YS0+c2V0LmdldF9maWxldGltZSkgeworICAgICAgICBzdGF0ZShjb25uLCBTU0hfU0ZUUF9GSUxFVElNRSk7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfVFJBTlNfSU5JVCk7CisgICAgICB9CisgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIFNTSF9TRlRQX0ZJTEVUSU1FOgorICAgIHsKKyAgICAgIExJQlNTSDJfU0ZUUF9BVFRSSUJVVEVTIGF0dHJzOworCisgICAgICByYyA9IGxpYnNzaDJfc2Z0cF9zdGF0X2V4KHNzaGMtPnNmdHBfc2Vzc2lvbiwgc2Z0cF9zY3AtPnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cmx4X3V6dG91aShzdHJsZW4oc2Z0cF9zY3AtPnBhdGgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCU1NIMl9TRlRQX1NUQVQsICZhdHRycyk7CisgICAgICBpZihyYyA9PSBMSUJTU0gyX0VSUk9SX0VBR0FJTikgeworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYocmMgPT0gMCkgeworICAgICAgICBkYXRhLT5pbmZvLmZpbGV0aW1lID0gKGxvbmcpYXR0cnMubXRpbWU7CisgICAgICB9CisKKyAgICAgIHN0YXRlKGNvbm4sIFNTSF9TRlRQX1RSQU5TX0lOSVQpOworICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBTU0hfU0ZUUF9UUkFOU19JTklUOgogICAgICAgaWYoZGF0YS0+c2V0LnVwbG9hZCkKICAgICAgICAgc3RhdGUoY29ubiwgU1NIX1NGVFBfVVBMT0FEX0lOSVQpOwpAQCAtMTczNyw4ICsxODQwLDggQEAKICAgICAgICAgICAgICAgICBCVUZTSVpFIDogY3VybHhfc290b3V6KGRhdGEtPnN0YXRlLnJlc3VtZV9mcm9tIC0gcGFzc2VkKTsKIAogICAgICAgICAgICAgICBzaXplX3QgYWN0dWFsbHlyZWFkID0KLSAgICAgICAgICAgICAgICBkYXRhLT5zZXQuZnJlYWRfZnVuYyhkYXRhLT5zdGF0ZS5idWZmZXIsIDEsIHJlYWR0aGlzYW1vdW50bm93LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtPnNldC5pbik7CisgICAgICAgICAgICAgICAgZGF0YS0+c3RhdGUuZnJlYWRfZnVuYyhkYXRhLT5zdGF0ZS5idWZmZXIsIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkdGhpc2Ftb3VudG5vdywgZGF0YS0+c3RhdGUuaW4pOwogCiAgICAgICAgICAgICAgIHBhc3NlZCArPSBhY3R1YWxseXJlYWQ7CiAgICAgICAgICAgICAgIGlmKChhY3R1YWxseXJlYWQgPT0gMCkgfHwgKGFjdHVhbGx5cmVhZCA+IHJlYWR0aGlzYW1vdW50bm93KSkgewpAQCAtMjE0MSw3ICsyMjQ0LDcgQEAKICAgICAgICAgICAgIC8qIGZyb20gaXMgcmVsYXRpdmUgdG8gZW5kIG9mIGZpbGUgKi8KICAgICAgICAgICAgIGZyb20gKz0gc2l6ZTsKICAgICAgICAgICB9Ci0gICAgICAgICAgaWYoZnJvbSA+PSBzaXplKSB7CisgICAgICAgICAgaWYoZnJvbSA+IHNpemUpIHsKICAgICAgICAgICAgIGZhaWxmKGRhdGEsICJPZmZzZXQgKCUiCiAgICAgICAgICAgICAgICAgICBDVVJMX0ZPUk1BVF9DVVJMX09GRl9UICIpIHdhcyBiZXlvbmQgZmlsZSBzaXplICglIgogICAgICAgICAgICAgICAgICAgQ1VSTF9GT1JNQVRfQ1VSTF9PRkZfVCAiKSIsIGZyb20sIGF0dHJzLmZpbGVzaXplKTsKQEAgLTIzNjUsMTkgKzI0NjgsMzAgQEAKIAogICAgIGNhc2UgU1NIX1NDUF9ET1dOTE9BRF9JTklUOgogICAgIHsKKyAgICAgIGN1cmxfb2ZmX3QgYnl0ZWNvdW50OworCiAgICAgICAvKgogICAgICAgICogV2UgbXVzdCBjaGVjayB0aGUgcmVtb3RlIGZpbGU7IGlmIGl0IGlzIGEgZGlyZWN0b3J5IG5vIHZhbHVlcyB3aWxsCiAgICAgICAgKiBiZSBzZXQgaW4gc2IKICAgICAgICAqLwotICAgICAgc3RydWN0IHN0YXQgc2I7Ci0gICAgICBjdXJsX29mZl90IGJ5dGVjb3VudDsKIAotICAgICAgLyogY2xlYXIgdGhlIHN0cnVjdCBzY3AgcmVjdiB3aWxsIGZpbGwgaW4gKi8KLSAgICAgIG1lbXNldCgmc2IsIDAsIHNpemVvZihzdHJ1Y3Qgc3RhdCkpOworICAgICAgIC8qCisgICAgICAgICogSWYgc3VwcG9ydCBmb3IgPjJHQiBmaWxlcyBleGlzdHMsIHVzZSBpdC4KKyAgICAgICAgKi8KIAogICAgICAgLyogZ2V0IGEgZnJlc2ggbmV3IGNoYW5uZWwgZnJvbSB0aGUgc3NoIGxheWVyICovCisjaWYgTElCU1NIMl9WRVJTSU9OX05VTSA8IDB4MDEwNzAwCisgICAgICBzdHJ1Y3Qgc3RhdCBzYjsKKyAgICAgIG1lbXNldCgmc2IsIDAsIHNpemVvZihzdHJ1Y3Qgc3RhdCkpOwogICAgICAgc3NoYy0+c3NoX2NoYW5uZWwgPSBsaWJzc2gyX3NjcF9yZWN2KHNzaGMtPnNzaF9zZXNzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNmdHBfc2NwLT5wYXRoLCAmc2IpOworI2Vsc2UKKyAgICAgIGxpYnNzaDJfc3RydWN0X3N0YXQgc2I7CisgICAgICBtZW1zZXQoJnNiLCAwLCBzaXplb2YobGlic3NoMl9zdHJ1Y3Rfc3RhdCkpOworICAgICAgc3NoYy0+c3NoX2NoYW5uZWwgPSBsaWJzc2gyX3NjcF9yZWN2Mihzc2hjLT5zc2hfc2Vzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Z0cF9zY3AtPnBhdGgsICZzYik7CisjZW5kaWYKKwogICAgICAgaWYoIXNzaGMtPnNzaF9jaGFubmVsKSB7CiAgICAgICAgIGlmKGxpYnNzaDJfc2Vzc2lvbl9sYXN0X2Vycm5vKHNzaGMtPnNzaF9zZXNzaW9uKSA9PQogICAgICAgICAgICBMSUJTU0gyX0VSUk9SX0VBR0FJTikgewpAQCAtMjk2Myw4ICszMDc3LDcgQEAKIAogICAgICAgIFRPRE86IHdoZW4gdGhlIG11bHRpIGludGVyZmFjZSBpcyB1c2VkLCB0aGlzIF9yZWFsbHlfIHNob3VsZCBiZSB1c2luZwogICAgICAgIHRoZSBzc2hfbXVsdGlfc3RhdGVtYWNoIGZ1bmN0aW9uIGJ1dCB3ZSBoYXZlIG5vIGdlbmVyYWwgc3VwcG9ydCBmb3IKLSAgICAgICBub24tYmxvY2tpbmcgRE9ORSBvcGVyYXRpb25zLCBub3QgaW4gdGhlIG11bHRpIHN0YXRlIG1hY2hpbmUgYW5kIHdpdGgKLSAgICAgICBDdXJsX2RvbmUoKSBpbnZva2VzIG9uIHNldmVyYWwgcGxhY2VzIGluIHRoZSBjb2RlIQorICAgICAgIG5vbi1ibG9ja2luZyBET05FIG9wZXJhdGlvbnMhCiAgICAgKi8KICAgICByZXN1bHQgPSBzc2hfYmxvY2tfc3RhdGVtYWNoKGNvbm4sIEZBTFNFKTsKICAgfQpkaWZmIC0tZ2l0IGEvbGliL3NzaC5oIGIvbGliL3NzaC5oCmluZGV4IGIzY2M1NGMuLjViNGI3OGYgMTAwNjQ0Ci0tLSBhL2xpYi9zc2guaAorKysgYi9saWIvc3NoLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC02Niw2ICs2Niw5IEBACiAgIFNTSF9TRlRQX1FVT1RFX1JFTkFNRSwKICAgU1NIX1NGVFBfUVVPVEVfUk1ESVIsCiAgIFNTSF9TRlRQX1FVT1RFX1VOTElOSywKKyAgU1NIX1NGVFBfUVVPVEVfU1RBVFZGUywKKyAgU1NIX1NGVFBfR0VUSU5GTywKKyAgU1NIX1NGVFBfRklMRVRJTUUsCiAgIFNTSF9TRlRQX1RSQU5TX0lOSVQsCiAgIFNTSF9TRlRQX1VQTE9BRF9JTklULAogICBTU0hfU0ZUUF9DUkVBVEVfRElSU19JTklULApkaWZmIC0tZ2l0IGEvbGliL3N0cmR1cC5jIGIvbGliL3N0cmR1cC5jCmluZGV4IDU2ODViODEuLjIzZjU1NGUgMTAwNjQ0Ci0tLSBhL2xpYi9zdHJkdXAuYworKysgYi9saWIvc3RyZHVwLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0xOSw3ICsxOSwxMSBAQAogICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCiAjaW5jbHVkZSAiY3VybF9zZXR1cC5oIgorCisjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CisKICNpbmNsdWRlICJzdHJkdXAuaCIKICNpbmNsdWRlICJjdXJsX21lbW9yeS5oIgogCmRpZmYgLS1naXQgYS9saWIvc3RyZHVwLmggYi9saWIvc3RyZHVwLmgKaW5kZXggMjNhNzFmOC4uNGM0OGNhNCAxMDA2NDQKLS0tIGEvbGliL3N0cmR1cC5oCisrKyBiL2xpYi9zdHJkdXAuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9zdHJlcXVhbC5jIGIvbGliL3N0cmVxdWFsLmMKaW5kZXggNWYyZjUwOC4uMDFjMzc4NCAxMDA2NDQKLS0tIGEvbGliL3N0cmVxdWFsLmMKKysrIGIvbGliL3N0cmVxdWFsLmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL3N0cmVxdWFsLmggYi9saWIvc3RyZXF1YWwuaAppbmRleCAxMTdhMzA1Li5mZjU2ZGY1IDEwMDY0NAotLS0gYS9saWIvc3RyZXF1YWwuaAorKysgYi9saWIvc3RyZXF1YWwuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9zdHJlcnJvci5jIGIvbGliL3N0cmVycm9yLmMKaW5kZXggY2JjNWM0Ny4uMGUyNjhkNSAxMDA2NDQKLS0tIGEvbGliL3N0cmVycm9yLmMKKysrIGIvbGliL3N0cmVycm9yLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQgLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAyMDA0IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zOSwxMCArMzksMTQgQEAKICNpbmNsdWRlIDxpZG5hLmg+CiAjZW5kaWYKIAorI2lmZGVmIFVTRV9XSU5ET1dTX1NTUEkKKyNpbmNsdWRlICJjdXJsX3NzcGkuaCIKKyNlbmRpZgorCiAjaW5jbHVkZSAic3RyZXJyb3IuaCIKKy8qIFRoZSBsYXN0IDMgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlIGluIHRoaXMgb3JkZXIgKi8KICNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgogI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCi0vKiBUaGUgbGFzdCAjaW5jbHVkZSBmaWxlIHNob3VsZCBiZTogKi8KICNpbmNsdWRlICJtZW1kZWJ1Zy5oIgogCiBjb25zdCBjaGFyICoKQEAgLTMwMSw2ICszMDUsOSBAQAogICBjYXNlIENVUkxFX1NTTF9JTlZBTElEQ0VSVFNUQVRVUzoKICAgICByZXR1cm4gIlNTTCBzZXJ2ZXIgY2VydGlmaWNhdGUgc3RhdHVzIHZlcmlmaWNhdGlvbiBGQUlMRUQiOwogCisgIGNhc2UgQ1VSTEVfSFRUUDJfU1RSRUFNOgorICAgIHJldHVybiAiU3RyZWFtIGVycm9yIGluIHRoZSBIVFRQLzIgZnJhbWluZyBsYXllciI7CisKICAgICAvKiBlcnJvciBjb2RlcyBub3QgdXNlZCBieSBjdXJyZW50IGxpYmN1cmwgKi8KICAgY2FzZSBDVVJMRV9PQlNPTEVURTIwOgogICBjYXNlIENVUkxFX09CU09MRVRFMjQ6CkBAIC04MjQsNiArODMxLDkgQEAKICAgICBjYXNlIFNFQ19FX09LOgogICAgICAgdHh0ID0gIk5vIGVycm9yIjsKICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1JZUFRfRV9SRVZPS0VEOgorICAgICAgdHh0ID0gIkNSWVBUX0VfUkVWT0tFRCI7CisgICAgICBicmVhazsKICAgICBjYXNlIFNFQ19FX0FMR09SSVRITV9NSVNNQVRDSDoKICAgICAgIHR4dCA9ICJTRUNfRV9BTEdPUklUSE1fTUlTTUFUQ0giOwogICAgICAgYnJlYWs7CkBAIC0xMDY5LDE0ICsxMDc5LDEzIEBACiAgICAgc3RybmNweShvdXRidWYsIHR4dCwgb3V0bWF4KTsKICAgZWxzZSBpZihlcnIgPT0gU0VDX0VfSUxMRUdBTF9NRVNTQUdFKQogICAgIHNucHJpbnRmKG91dGJ1Ziwgb3V0bWF4LAotICAgICAgICAgICAgICJTRUNfRV9JTExFR0FMX01FU1NBR0UgKDB4JTA0WCUwNFgpIC0gVGhpcyBlcnJvciB1c3VhbGx5IG9jY3VycyAiCisgICAgICAgICAgICAgIlNFQ19FX0lMTEVHQUxfTUVTU0FHRSAoMHglMDhYKSAtIFRoaXMgZXJyb3IgdXN1YWxseSBvY2N1cnMgIgogICAgICAgICAgICAgICJ3aGVuIGEgZmF0YWwgU1NML1RMUyBhbGVydCBpcyByZWNlaXZlZCAoZS5nLiBoYW5kc2hha2UgZmFpbGVkKS4gIgogICAgICAgICAgICAgICJNb3JlIGRldGFpbCBtYXkgYmUgYXZhaWxhYmxlIGluIHRoZSBXaW5kb3dzIFN5c3RlbSBldmVudCBsb2cuIiwKLSAgICAgICAgICAgICAoZXJyID4+IDE2KSAmIDB4ZmZmZiwgZXJyICYgMHhmZmZmKTsKKyAgICAgICAgICAgICBlcnIpOwogICBlbHNlIHsKICAgICBzdHIgPSB0eHRidWY7Ci0gICAgc25wcmludGYodHh0YnVmLCBzaXplb2YodHh0YnVmKSwgIiVzICgweCUwNFglMDRYKSIsCi0gICAgICAgICAgICAgdHh0LCAoZXJyID4+IDE2KSAmIDB4ZmZmZiwgZXJyICYgMHhmZmZmKTsKKyAgICBzbnByaW50Zih0eHRidWYsIHNpemVvZih0eHRidWYpLCAiJXMgKDB4JTA4WCkiLCB0eHQsIGVycik7CiAgICAgdHh0YnVmW3NpemVvZih0eHRidWYpLTFdID0gJ1wwJzsKIAogI2lmZGVmIF9XSU4zMl9XQ0UKZGlmZiAtLWdpdCBhL2xpYi9zdHJlcnJvci5oIGIvbGliL3N0cmVycm9yLmgKaW5kZXggZjFiMjIyMS4uYWU4Yzk2YiAxMDA2NDQKLS0tIGEvbGliL3N0cmVycm9yLmgKKysrIGIvbGliL3N0cmVycm9yLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvc3RydG9rLmMgYi9saWIvc3RydG9rLmMKaW5kZXggMGQzMTM1MS4uNDYwZWI4NyAxMDA2NDQKLS0tIGEvbGliL3N0cnRvay5jCisrKyBiL2xpYi9zdHJ0b2suYwpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvc3RydG9rLmggYi9saWIvc3RydG9rLmgKaW5kZXggMTE0N2Q3MC4uOTBiODMxZSAxMDA2NDQKLS0tIGEvbGliL3N0cnRvay5oCisrKyBiL2xpYi9zdHJ0b2suaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9zdHJ0b29mZnQuYyBiL2xpYi9zdHJ0b29mZnQuYwppbmRleCAwM2E5N2U4Li42ZDVkMmQ1IDEwMDY0NAotLS0gYS9saWIvc3RydG9vZmZ0LmMKKysrIGIvbGliL3N0cnRvb2ZmdC5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi9zdHJ0b29mZnQuaCBiL2xpYi9zdHJ0b29mZnQuaAppbmRleCA3NWM3M2Q0Li5mNDAzOWYzIDEwMDY0NAotLS0gYS9saWIvc3RydG9vZmZ0LmgKKysrIGIvbGliL3N0cnRvb2ZmdC5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL3N5c3RlbV93aW4zMi5jIGIvbGliL3N5c3RlbV93aW4zMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczZDMwYjQKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvc3lzdGVtX3dpbjMyLmMKQEAgLTAsMCArMSwxMzAgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKyAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorICoKKyAqIENvcHlyaWdodCAoQykgMjAxNiwgU3RldmUgSG9sbWUsIDxzdGV2ZV9ob2xtZUBob3RtYWlsLmNvbT4uCisgKgorICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKyAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICoKKyAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2luY2x1ZGUgImN1cmxfc2V0dXAuaCIKKworI2lmIGRlZmluZWQoV0lOMzIpCisKKyNpZiBkZWZpbmVkKFVTRV9XSU5ET1dTX1NTUEkpIHx8ICghZGVmaW5lZChDVVJMX0RJU0FCTEVfVEVMTkVUKSAmJiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lZChVU0VfV0lOU09DSykpCisKKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKyNpbmNsdWRlICJzeXN0ZW1fd2luMzIuaCIKKworLyogVGhlIGxhc3QgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlOiAqLworI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCisjaW5jbHVkZSAibWVtZGVidWcuaCIKKworI2lmICFkZWZpbmVkKExPQURfV0lUSF9BTFRFUkVEX1NFQVJDSF9QQVRIKQorI2RlZmluZSBMT0FEX1dJVEhfQUxURVJFRF9TRUFSQ0hfUEFUSCAgMHgwMDAwMDAwOAorI2VuZGlmCisKKyNpZiAhZGVmaW5lZChMT0FEX0xJQlJBUllfU0VBUkNIX1NZU1RFTTMyKQorI2RlZmluZSBMT0FEX0xJQlJBUllfU0VBUkNIX1NZU1RFTTMyICAgMHgwMDAwMDgwMAorI2VuZGlmCisKKy8qIFdlIHVzZSBvdXIgb3duIHR5cGVkZWYgaGVyZSBzaW5jZSBzb21lIGhlYWRlcnMgbWlnaHQgbGFjayB0aGVzZSAqLwordHlwZWRlZiBITU9EVUxFIChBUElFTlRSWSAqTE9BRExJQlJBUllFWF9GTikoTFBDVFNUUiwgSEFORExFLCBEV09SRCk7CisKKy8qIFNlZSBmdW5jdGlvbiBkZWZpbml0aW9ucyBpbiB3aW5iYXNlLmggKi8KKyNpZmRlZiBVTklDT0RFCisjICBpZmRlZiBfV0lOMzJfV0NFCisjICAgIGRlZmluZSBMT0FETElCQVJZRVggIEwiTG9hZExpYnJhcnlFeFciCisjICBlbHNlCisjICAgIGRlZmluZSBMT0FETElCQVJZRVggICJMb2FkTGlicmFyeUV4VyIKKyMgIGVuZGlmCisjZWxzZQorIyAgZGVmaW5lIExPQURMSUJBUllFWCAgICAiTG9hZExpYnJhcnlFeEEiCisjZW5kaWYKKworLyoKKyAqIEN1cmxfbG9hZF9saWJyYXJ5KCkKKyAqCisgKiBUaGlzIGlzIHVzZWQgdG8gZHluYW1pY2FsbHkgbG9hZCBETExzIHVzaW5nIHRoZSBtb3N0IHNlY3VyZSBtZXRob2QgYXZhaWxhYmxlCisgKiBmb3IgdGhlIHZlcnNpb24gb2YgV2luZG93cyB0aGF0IHdlIGFyZSBydW5uaW5nIG9uLgorICoKKyAqIFBhcmFtZXRlcnM6CisgKgorICogZmlsZW5hbWUgIFtpbl0gLSBUaGUgZmlsZW5hbWUgb3IgZnVsbCBwYXRoIG9mIHRoZSBETEwgdG8gbG9hZC4gSWYgb25seSB0aGUKKyAqICAgICAgICAgICAgICAgICAgZmlsZW5hbWUgaXMgcGFzc2VkIHRoZW4gdGhlIERMTCB3aWxsIGJlIGxvYWRlZCBmcm9tIHRoZQorICogICAgICAgICAgICAgICAgICBXaW5kb3dzIHN5c3RlbSBkaXJlY3RvcnkuCisgKgorICogUmV0dXJucyB0aGUgaGFuZGxlIG9mIHRoZSBtb2R1bGUgb24gc3VjY2Vzczsgb3RoZXJ3aXNlIE5VTEwuCisgKi8KK0hNT0RVTEUgQ3VybF9sb2FkX2xpYnJhcnkoTFBDVFNUUiBmaWxlbmFtZSkKK3sKKyAgSE1PRFVMRSBoTW9kdWxlID0gTlVMTDsKKyAgTE9BRExJQlJBUllFWF9GTiBwTG9hZExpYnJhcnlFeCA9IE5VTEw7CisKKyAgLyogR2V0IGEgaGFuZGxlIHRvIGtlcm5lbDMyIHNvIHdlIGNhbiBhY2Nlc3MgaXQncyBmdW5jdGlvbnMgYXQgcnVudGltZSAqLworICBITU9EVUxFIGhLZXJuZWwzMiA9IEdldE1vZHVsZUhhbmRsZShURVhUKCJrZXJuZWwzMiIpKTsKKyAgaWYoIWhLZXJuZWwzMikKKyAgICByZXR1cm4gTlVMTDsKKworICAvKiBBdHRlbXB0IHRvIGZpbmQgTG9hZExpYnJhcnlFeCgpIHdoaWNoIGlzIG9ubHkgYXZhaWxhYmxlIG9uIFdpbmRvd3MgMjAwMAorICAgICBhbmQgYWJvdmUgKi8KKyAgcExvYWRMaWJyYXJ5RXggPSAoTE9BRExJQlJBUllFWF9GTikgR2V0UHJvY0FkZHJlc3MoaEtlcm5lbDMyLCBMT0FETElCQVJZRVgpOworCisgIC8qIERldGVjdCBpZiB0aGVyZSdzIGFscmVhZHkgYSBwYXRoIGluIHRoZSBmaWxlbmFtZSBhbmQgbG9hZCB0aGUgbGlicmFyeSBpZgorICAgICB0aGVyZSBpcy4gTm90ZTogQm90aCBiYWNrIHNsYXNoZXMgYW5kIGZvcndhcmQgc2xhc2hlcyBoYXZlIGJlZW4gc3VwcG9ydGVkCisgICAgIHNpbmNlIHRoZSBlYXJsaWVyIGRheXMgb2YgRE9TIGF0IGFuIEFQSSBsZXZlbCBhbHRob3VnaCB0aGV5IGFyZSBub3QKKyAgICAgc3VwcG9ydGVkIGJ5IGNvbW1hbmQgcHJvbXB0ICovCisgIGlmKF90Y3NwYnJrKGZpbGVuYW1lLCBURVhUKCJcXC8iKSkpCisgICAgaE1vZHVsZSA9IHBMb2FkTGlicmFyeUV4ID8KKyAgICAgIHBMb2FkTGlicmFyeUV4KGZpbGVuYW1lLCBOVUxMLCBMT0FEX1dJVEhfQUxURVJFRF9TRUFSQ0hfUEFUSCkgOgorICAgICAgTG9hZExpYnJhcnkoZmlsZW5hbWUpOworICAvKiBEZXRlY3QgaWYgS0IyNTMzNjIzIGlzIGluc3RhbGxlZCwgYXMgTE9BRF9MSUJBUllfU0VBUkNIX1NZU1RFTTMyIGlzIG9ubHkKKyAgICAgc3VwcG9ydGVkIG9uIFdpbmRvd3MgVmlzdGEsIFdpbmRvd3MgU2VydmVyIDIwMDgsIFdpbmRvd3MgNyBhbmQgV2luZG93cworICAgICBTZXJ2ZXIgMjAwOCBSMiB3aXRoIHRoaXMgcGF0Y2ggb3IgbmF0aXZlbHkgb24gV2luZG93cyA4IGFuZCBhYm92ZSAqLworICBlbHNlIGlmKHBMb2FkTGlicmFyeUV4ICYmIEdldFByb2NBZGRyZXNzKGhLZXJuZWwzMiwgIkFkZERsbERpcmVjdG9yeSIpKSB7CisgICAgLyogTG9hZCB0aGUgRExMIGZyb20gdGhlIFdpbmRvd3Mgc3lzdGVtIGRpcmVjdG9yeSAqLworICAgIGhNb2R1bGUgPSBwTG9hZExpYnJhcnlFeChmaWxlbmFtZSwgTlVMTCwgTE9BRF9MSUJSQVJZX1NFQVJDSF9TWVNURU0zMik7CisgIH0KKyAgZWxzZSB7CisgICAgLyogQXR0ZW1wdCB0byBnZXQgdGhlIFdpbmRvd3Mgc3lzdGVtIHBhdGggKi8KKyAgICBVSU5UIHN5c3RlbWRpcmxlbiA9IEdldFN5c3RlbURpcmVjdG9yeShOVUxMLCAwKTsKKyAgICBpZihzeXN0ZW1kaXJsZW4pIHsKKyAgICAgIC8qIEFsbG9jYXRlIHNwYWNlIGZvciB0aGUgZnVsbCBETEwgcGF0aCAoUm9vbSBmb3IgdGhlIG51bGwgdGVybWluYXRvcgorICAgICAgICAgaXMgaW5jbHVkZWQgaW4gc3lzdGVtZGlybGVuKSAqLworICAgICAgc2l6ZV90IGZpbGVuYW1lbGVuID0gX3Rjc2xlbihmaWxlbmFtZSk7CisgICAgICBUQ0hBUiAqcGF0aCA9IG1hbGxvYyhzaXplb2YoVENIQVIpICogKHN5c3RlbWRpcmxlbiArIDEgKyBmaWxlbmFtZWxlbikpOworICAgICAgaWYocGF0aCAmJiBHZXRTeXN0ZW1EaXJlY3RvcnkocGF0aCwgc3lzdGVtZGlybGVuKSkgeworICAgICAgICAvKiBDYWxjdWxhdGUgdGhlIGZ1bGwgRExMIHBhdGggKi8KKyAgICAgICAgX3Rjc2NweShwYXRoICsgX3Rjc2xlbihwYXRoKSwgVEVYVCgiXFwiKSk7CisgICAgICAgIF90Y3NjcHkocGF0aCArIF90Y3NsZW4ocGF0aCksIGZpbGVuYW1lKTsKKworICAgICAgICAvKiBMb2FkIHRoZSBETEwgZnJvbSB0aGUgV2luZG93cyBzeXN0ZW0gZGlyZWN0b3J5ICovCisgICAgICAgIGhNb2R1bGUgPSBwTG9hZExpYnJhcnlFeCA/CisgICAgICAgICAgcExvYWRMaWJyYXJ5RXgocGF0aCwgTlVMTCwgTE9BRF9XSVRIX0FMVEVSRURfU0VBUkNIX1BBVEgpIDoKKyAgICAgICAgICBMb2FkTGlicmFyeShwYXRoKTsKKworICAgICAgICBmcmVlKHBhdGgpOworICAgICAgfQorICAgIH0KKyAgfQorCisgIHJldHVybiBoTW9kdWxlOworfQorCisjZW5kaWYgLyogVVNFX1dJTkRPV1NfU1NQSSB8fCAoIUNVUkxfRElTQUJMRV9URUxORVQgJiYgVVNFX1dJTlNPQ0spICovCisKKyNlbmRpZiAvKiBXSU4zMiAqLwpkaWZmIC0tZ2l0IGEvbGliL3N5c3RlbV93aW4zMi5oIGIvbGliL3N5c3RlbV93aW4zMi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlYzE4ODkKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvc3lzdGVtX3dpbjMyLmgKQEAgLTAsMCArMSwzOSBAQAorI2lmbmRlZiBIRUFERVJfQ1VSTF9TWVNURU1fV0lOMzJfSAorI2RlZmluZSBIRUFERVJfQ1VSTF9TWVNURU1fV0lOMzJfSAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisgKgorICogQ29weXJpZ2h0IChDKSAyMDE2LCBTdGV2ZSBIb2xtZSwgPHN0ZXZlX2hvbG1lQGhvdG1haWwuY29tPi4KKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAorICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcworICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKgorICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCisgKgorICogVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaW5jbHVkZSAiY3VybF9zZXR1cC5oIgorCisjaWYgZGVmaW5lZChXSU4zMikKKworI2lmIGRlZmluZWQoVVNFX1dJTkRPV1NfU1NQSSkgfHwgKCFkZWZpbmVkKENVUkxfRElTQUJMRV9URUxORVQpICYmIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVkKFVTRV9XSU5TT0NLKSkKKworLyogVGhpcyBpcyB1c2VkIHRvIGR5bmFtaWNhbGx5IGxvYWQgRExMcyAqLworSE1PRFVMRSBDdXJsX2xvYWRfbGlicmFyeShMUENUU1RSIGZpbGVuYW1lKTsKKworI2VuZGlmIC8qIFVTRV9XSU5ET1dTX1NTUEkgfHwgKCFDVVJMX0RJU0FCTEVfVEVMTkVUICYmIFVTRV9XSU5TT0NLKSAqLworCisjZW5kaWYgLyogV0lOMzIgKi8KKworI2VuZGlmIC8qIEhFQURFUl9DVVJMX1NZU1RFTV9XSU4zMl9IICovCmRpZmYgLS1naXQgYS9saWIvdGVsbmV0LmMgYi9saWIvdGVsbmV0LmMKaW5kZXggYWFiZjk5ZC4uODcwYTFiOCAxMDA2NDQKLS0tIGEvbGliL3RlbG5ldC5jCisrKyBiL2xpYi90ZWxuZXQuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTUxLDcgKzUxLDcgQEAKICNpbmNsdWRlICJ0ZWxuZXQuaCIKICNpbmNsdWRlICJjb25uZWN0LmgiCiAjaW5jbHVkZSAicHJvZ3Jlc3MuaCIKLSNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgorI2luY2x1ZGUgInN5c3RlbV93aW4zMi5oIgogCiAjZGVmaW5lICBURUxPUFRTCiAjZGVmaW5lICBURUxDTURTCkBAIC02Miw3ICs2Miw4IEBACiAjaW5jbHVkZSAicmF3c3RyLmgiCiAjaW5jbHVkZSAid2Fybmxlc3MuaCIKIAotLyogVGhlIGxhc3QgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlOiAqLworLyogVGhlIGxhc3QgMyAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmUgaW4gdGhpcyBvcmRlciAqLworI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCiAjaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKICNpbmNsdWRlICJtZW1kZWJ1Zy5oIgogCkBAIC05MSw3ICs5Miw3IEBACiAKICNpZmRlZiBVU0VfV0lOU09DSwogdHlwZWRlZiBGQVJQUk9DIFdTT0NLMl9GVU5DOwotc3RhdGljIENVUkxjb2RlIGNoZWNrX3dzb2NrMiAoIHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhICk7CitzdGF0aWMgQ1VSTGNvZGUgY2hlY2tfd3NvY2syIChzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSk7CiAjZW5kaWYKIAogc3RhdGljCkBAIC0xOTgsNyArMTk5LDcgQEAKIAogI2lmZGVmIFVTRV9XSU5TT0NLCiBzdGF0aWMgQ1VSTGNvZGUKLWNoZWNrX3dzb2NrMiAoIHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhICkKK2NoZWNrX3dzb2NrMihzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSkKIHsKICAgaW50IGVycjsKICAgV09SRCB3VmVyc2lvblJlcXVlc3RlZDsKQEAgLTEzMzQsNyArMTMzNSw3IEBACiAKICAgLyogT0ssIHNvIHdlIGhhdmUgV2luU29jayAyLjAuICBXZSBuZWVkIHRvIGR5bmFtaWNhbGx5ICovCiAgIC8qIGxvYWQgd3MyXzMyLmRsbCBhbmQgZ2V0IHRoZSBmdW5jdGlvbiBwb2ludGVycyB3ZSBuZWVkLiAqLwotICB3c29jazIgPSBMb2FkTGlicmFyeShURVhUKCJXUzJfMzIuRExMIikpOworICB3c29jazIgPSBDdXJsX2xvYWRfbGlicmFyeShURVhUKCJXUzJfMzIuRExMIikpOwogICBpZih3c29jazIgPT0gTlVMTCkgewogICAgIGZhaWxmKGRhdGEsICJmYWlsZWQgdG8gbG9hZCBXUzJfMzIuRExMICglZCkiLCBFUlJOTyk7CiAgICAgcmV0dXJuIENVUkxFX0ZBSUxFRF9JTklUOwpAQCAtMTQyMyw4ICsxNDI0LDggQEAKICAgICAgIGZvcig7OykgewogICAgICAgICBpZihkYXRhLT5zZXQuaXNfZnJlYWRfc2V0KSB7CiAgICAgICAgICAgLyogcmVhZCBmcm9tIHVzZXItc3VwcGxpZWQgbWV0aG9kICovCi0gICAgICAgICAgcmVzdWx0ID0gKGludClkYXRhLT5zZXQuZnJlYWRfZnVuYyhidWYsIDEsIEJVRlNJWkUgLSAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+c2V0LmluKTsKKyAgICAgICAgICByZXN1bHQgPSAoaW50KWRhdGEtPnN0YXRlLmZyZWFkX2Z1bmMoYnVmLCAxLCBCVUZTSVpFIC0gMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+c3RhdGUuaW4pOwogICAgICAgICAgIGlmKHJlc3VsdCA9PSBDVVJMX1JFQURGVU5DX0FCT1JUKSB7CiAgICAgICAgICAgICBrZWVwb24gPSBGQUxTRTsKICAgICAgICAgICAgIHJlc3VsdCA9IENVUkxFX1JFQURfRVJST1I7CkBAIC0xNTYzLDEzICsxNTY0LDEzIEBACiAgIHBmZFswXS5mZCA9IHNvY2tmZDsKICAgcGZkWzBdLmV2ZW50cyA9IFBPTExJTjsKIAotICBpZihkYXRhLT5zZXQuZnJlYWRfZnVuYyAhPSAoY3VybF9yZWFkX2NhbGxiYWNrKWZyZWFkKSB7CisgIGlmKGRhdGEtPnNldC5pc19mcmVhZF9zZXQpIHsKICAgICBwb2xsX2NudCA9IDE7CiAgICAgaW50ZXJ2YWxfbXMgPSAxMDA7IC8qIHBvbGwgdXNlci1zdXBwbGllZCByZWFkIGZ1bmN0aW9uICovCiAgIH0KICAgZWxzZSB7CiAgICAgLyogcmVhbGx5IHVzaW5nIGZyZWFkLCBzbyBpbmZpbGUgaXMgYSBGSUxFKiAqLwotICAgIHBmZFsxXS5mZCA9IGZpbGVubygoRklMRSAqKWRhdGEtPnNldC5pbik7CisgICAgcGZkWzFdLmZkID0gZmlsZW5vKChGSUxFICopZGF0YS0+c3RhdGUuaW4pOwogICAgIHBmZFsxXS5ldmVudHMgPSBQT0xMSU47CiAgICAgcG9sbF9jbnQgPSAyOwogICAgIGludGVydmFsX21zID0gMSAqIDEwMDA7CkBAIC0xNjI4LDcgKzE2MjksOCBAQAogICAgICAgfQogICAgICAgZWxzZSB7CiAgICAgICAgIC8qIHJlYWQgZnJvbSB1c2VyLXN1cHBsaWVkIG1ldGhvZCAqLwotICAgICAgICBucmVhZCA9IChpbnQpZGF0YS0+c2V0LmZyZWFkX2Z1bmMoYnVmLCAxLCBCVUZTSVpFIC0gMSwgZGF0YS0+c2V0LmluKTsKKyAgICAgICAgbnJlYWQgPSAoaW50KWRhdGEtPnN0YXRlLmZyZWFkX2Z1bmMoYnVmLCAxLCBCVUZTSVpFIC0gMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+c3RhdGUuaW4pOwogICAgICAgICBpZihucmVhZCA9PSBDVVJMX1JFQURGVU5DX0FCT1JUKSB7CiAgICAgICAgICAga2VlcG9uID0gRkFMU0U7CiAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9saWIvdGVsbmV0LmggYi9saWIvdGVsbmV0LmgKaW5kZXggZGRiOWU1NC4uNDE5YTM5OSAxMDA2NDQKLS0tIGEvbGliL3RlbG5ldC5oCisrKyBiL2xpYi90ZWxuZXQuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi90ZnRwLmMgYi9saWIvdGZ0cC5jCmluZGV4IDRjNTc5NmYuLjNjM2ViNWUgMTAwNjQ0Ci0tLSBhL2xpYi90ZnRwLmMKKysrIGIvbGliL3RmdHAuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTU3LDEwICs1NywxMCBAQAogI2luY2x1ZGUgInVybC5oIgogI2luY2x1ZGUgInJhd3N0ci5oIgogI2luY2x1ZGUgInNwZWVkY2hlY2suaCIKLSNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgogI2luY2x1ZGUgInNlbGVjdC5oIgogCi0vKiBUaGUgbGFzdCAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmU6ICovCisvKiBUaGUgbGFzdCAzICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZSBpbiB0aGlzIG9yZGVyICovCisjaW5jbHVkZSAiY3VybF9wcmludGYuaCIKICNpbmNsdWRlICJjdXJsX21lbW9yeS5oIgogI2luY2x1ZGUgIm1lbWRlYnVnLmgiCiAKQEAgLTMxMiwxNCArMzEyLDE0IEBACiB7CiAgIHNpemVfdCBsb2M7CiAKLSAgbG9jID0gQ3VybF9zdHJubGVuKCBidWYsIGxlbiApOworICBsb2MgPSBDdXJsX3N0cm5sZW4oYnVmLCBsZW4pOwogICBsb2MrKzsgLyogTlVMTCB0ZXJtICovCiAKICAgaWYobG9jID49IGxlbikKICAgICByZXR1cm4gTlVMTDsKICAgKm9wdGlvbiA9IGJ1ZjsKIAotICBsb2MgKz0gQ3VybF9zdHJubGVuKCBidWYrbG9jLCBsZW4tbG9jICk7CisgIGxvYyArPSBDdXJsX3N0cm5sZW4oYnVmK2xvYywgbGVuLWxvYyk7CiAgIGxvYysrOyAvKiBOVUxMIHRlcm0gKi8KIAogICBpZihsb2MgPiBsZW4pCkBAIC0zNTIsNyArMzUyLDcgQEAKICAgICBpZihjaGVja3ByZWZpeChvcHRpb24sIFRGVFBfT1BUSU9OX0JMS1NJWkUpKSB7CiAgICAgICBsb25nIGJsa3NpemU7CiAKLSAgICAgIGJsa3NpemUgPSBzdHJ0b2woIHZhbHVlLCBOVUxMLCAxMCApOworICAgICAgYmxrc2l6ZSA9IHN0cnRvbCh2YWx1ZSwgTlVMTCwgMTApOwogCiAgICAgICBpZighYmxrc2l6ZSkgewogICAgICAgICBmYWlsZihkYXRhLCAiaW52YWxpZCBibG9ja3NpemUgdmFsdWUgaW4gT0FDSyBwYWNrZXQiKTsKQEAgLTM4NCw3ICszODQsNyBAQAogICAgIGVsc2UgaWYoY2hlY2twcmVmaXgob3B0aW9uLCBURlRQX09QVElPTl9UU0laRSkpIHsKICAgICAgIGxvbmcgdHNpemUgPSAwOwogCi0gICAgICB0c2l6ZSA9IHN0cnRvbCggdmFsdWUsIE5VTEwsIDEwICk7CisgICAgICB0c2l6ZSA9IHN0cnRvbCh2YWx1ZSwgTlVMTCwgMTApOwogICAgICAgaW5mb2YoZGF0YSwgIiVzICglbGQpXG4iLCAidHNpemUgcGFyc2VkIGZyb20gT0FDSyIsIHRzaXplKTsKIAogICAgICAgLyogdHNpemUgc2hvdWxkIGJlIGlnbm9yZWQgb24gdXBsb2FkOiBXaG8gY2FyZXMgYWJvdXQgdGhlIHNpemUgb2YgdGhlCkBAIC00MDUsNyArNDA1LDcgQEAKIHN0YXRpYyBzaXplX3QgdGZ0cF9vcHRpb25fYWRkKHRmdHBfc3RhdGVfZGF0YV90ICpzdGF0ZSwgc2l6ZV90IGNzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqYnVmLCBjb25zdCBjaGFyICpvcHRpb24pCiB7Ci0gIGlmKCggc3RybGVuKG9wdGlvbikgKyBjc2l6ZSArIDEgKSA+IChzaXplX3Qpc3RhdGUtPmJsa3NpemUpCisgIGlmKCggc3RybGVuKG9wdGlvbikgKyBjc2l6ZSArIDEpID4gKHNpemVfdClzdGF0ZS0+Ymxrc2l6ZSkKICAgICByZXR1cm4gMDsKICAgc3RyY3B5KGJ1Ziwgb3B0aW9uKTsKICAgcmV0dXJuIHN0cmxlbihvcHRpb24pICsgMTsKQEAgLTQ5NCwzMyArNDk0LDM2IEBACiAgICAgICAgICAgICAgIiVzJWMlcyVjIiwgZmlsZW5hbWUsICdcMCcsICBtb2RlLCAnXDAnKTsKICAgICBzYnl0ZXMgPSA0ICsgc3RybGVuKGZpbGVuYW1lKSArIHN0cmxlbihtb2RlKTsKIAotICAgIC8qIGFkZCB0c2l6ZSBvcHRpb24gKi8KLSAgICBpZihkYXRhLT5zZXQudXBsb2FkICYmIChkYXRhLT5zdGF0ZS5pbmZpbGVzaXplICE9IC0xKSkKLSAgICAgIHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICIlIiBDVVJMX0ZPUk1BVF9DVVJMX09GRl9ULAotICAgICAgICAgICAgICAgZGF0YS0+c3RhdGUuaW5maWxlc2l6ZSk7Ci0gICAgZWxzZQotICAgICAgc3RyY3B5KGJ1ZiwgIjAiKTsgLyogdGhlIGRlc3RpbmF0aW9uIGlzIGxhcmdlIGVub3VnaCAqLworICAgIC8qIG9wdGlvbmFsIGFkZGl0aW9uIG9mIFRGVFAgb3B0aW9ucyAqLworICAgIGlmKCFkYXRhLT5zZXQudGZ0cF9ub19vcHRpb25zKSB7CisgICAgICAvKiBhZGQgdHNpemUgb3B0aW9uICovCisgICAgICBpZihkYXRhLT5zZXQudXBsb2FkICYmIChkYXRhLT5zdGF0ZS5pbmZpbGVzaXplICE9IC0xKSkKKyAgICAgICAgc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgIiUiIENVUkxfRk9STUFUX0NVUkxfT0ZGX1QsCisgICAgICAgICAgICAgICAgIGRhdGEtPnN0YXRlLmluZmlsZXNpemUpOworICAgICAgZWxzZQorICAgICAgICBzdHJjcHkoYnVmLCAiMCIpOyAvKiB0aGUgZGVzdGluYXRpb24gaXMgbGFyZ2UgZW5vdWdoICovCiAKLSAgICBzYnl0ZXMgKz0gdGZ0cF9vcHRpb25fYWRkKHN0YXRlLCBzYnl0ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciAqKXN0YXRlLT5zcGFja2V0LmRhdGErc2J5dGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEZUUF9PUFRJT05fVFNJWkUpOwotICAgIHNieXRlcyArPSB0ZnRwX29wdGlvbl9hZGQoc3RhdGUsIHNieXRlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyICopc3RhdGUtPnNwYWNrZXQuZGF0YStzYnl0ZXMsIGJ1Zik7Ci0gICAgLyogYWRkIGJsa3NpemUgb3B0aW9uICovCi0gICAgc25wcmludGYoIGJ1Ziwgc2l6ZW9mKGJ1ZiksICIlZCIsIHN0YXRlLT5yZXF1ZXN0ZWRfYmxrc2l6ZSApOwotICAgIHNieXRlcyArPSB0ZnRwX29wdGlvbl9hZGQoc3RhdGUsIHNieXRlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyICopc3RhdGUtPnNwYWNrZXQuZGF0YStzYnl0ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBURlRQX09QVElPTl9CTEtTSVpFKTsKLSAgICBzYnl0ZXMgKz0gdGZ0cF9vcHRpb25fYWRkKHN0YXRlLCBzYnl0ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciAqKXN0YXRlLT5zcGFja2V0LmRhdGErc2J5dGVzLCBidWYgKTsKKyAgICAgIHNieXRlcyArPSB0ZnRwX29wdGlvbl9hZGQoc3RhdGUsIHNieXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIgKilzdGF0ZS0+c3BhY2tldC5kYXRhK3NieXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEZUUF9PUFRJT05fVFNJWkUpOworICAgICAgc2J5dGVzICs9IHRmdHBfb3B0aW9uX2FkZChzdGF0ZSwgc2J5dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciAqKXN0YXRlLT5zcGFja2V0LmRhdGErc2J5dGVzLCBidWYpOworICAgICAgLyogYWRkIGJsa3NpemUgb3B0aW9uICovCisgICAgICBzbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiJWQiLCBzdGF0ZS0+cmVxdWVzdGVkX2Jsa3NpemUpOworICAgICAgc2J5dGVzICs9IHRmdHBfb3B0aW9uX2FkZChzdGF0ZSwgc2J5dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciAqKXN0YXRlLT5zcGFja2V0LmRhdGErc2J5dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBURlRQX09QVElPTl9CTEtTSVpFKTsKKyAgICAgIHNieXRlcyArPSB0ZnRwX29wdGlvbl9hZGQoc3RhdGUsIHNieXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIgKilzdGF0ZS0+c3BhY2tldC5kYXRhK3NieXRlcywgYnVmKTsKIAotICAgIC8qIGFkZCB0aW1lb3V0IG9wdGlvbiAqLwotICAgIHNucHJpbnRmKCBidWYsIHNpemVvZihidWYpLCAiJWQiLCBzdGF0ZS0+cmV0cnlfdGltZSk7Ci0gICAgc2J5dGVzICs9IHRmdHBfb3B0aW9uX2FkZChzdGF0ZSwgc2J5dGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIgKilzdGF0ZS0+c3BhY2tldC5kYXRhK3NieXRlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRGVFBfT1BUSU9OX0lOVEVSVkFMKTsKLSAgICBzYnl0ZXMgKz0gdGZ0cF9vcHRpb25fYWRkKHN0YXRlLCBzYnl0ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciAqKXN0YXRlLT5zcGFja2V0LmRhdGErc2J5dGVzLCBidWYgKTsKKyAgICAgIC8qIGFkZCB0aW1lb3V0IG9wdGlvbiAqLworICAgICAgc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgIiVkIiwgc3RhdGUtPnJldHJ5X3RpbWUpOworICAgICAgc2J5dGVzICs9IHRmdHBfb3B0aW9uX2FkZChzdGF0ZSwgc2J5dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciAqKXN0YXRlLT5zcGFja2V0LmRhdGErc2J5dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBURlRQX09QVElPTl9JTlRFUlZBTCk7CisgICAgICBzYnl0ZXMgKz0gdGZ0cF9vcHRpb25fYWRkKHN0YXRlLCBzYnl0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyICopc3RhdGUtPnNwYWNrZXQuZGF0YStzYnl0ZXMsIGJ1Zik7CisgICAgfQogCiAgICAgLyogdGhlIHR5cGVjYXNlIGZvciB0aGUgM3JkIGFyZ3VtZW50IGlzIG1vc3RseSBmb3Igc3lzdGVtcyB0aGF0IGRvCiAgICAgICAgbm90IGhhdmUgYSBzaXplX3QgYXJndW1lbnQsIGxpa2Ugb2xkZXIgdW5peGVzIHRoYXQgd2FudCBhbiAnaW50JyAqLwpAQCAtOTU3LDcgKzk2MCw3IEBACiAgIC8qIGFsbG9jIHBrdCBidWZmZXJzIGJhc2VkIG9uIHNwZWNpZmllZCBibGtzaXplICovCiAgIGlmKGNvbm4tPmRhdGEtPnNldC50ZnRwX2Jsa3NpemUpIHsKICAgICBibGtzaXplID0gKGludCljb25uLT5kYXRhLT5zZXQudGZ0cF9ibGtzaXplOwotICAgIGlmKGJsa3NpemUgPiBURlRQX0JMS1NJWkVfTUFYIHx8IGJsa3NpemUgPCBURlRQX0JMS1NJWkVfTUlOICkKKyAgICBpZihibGtzaXplID4gVEZUUF9CTEtTSVpFX01BWCB8fCBibGtzaXplIDwgVEZUUF9CTEtTSVpFX01JTikKICAgICAgIHJldHVybiBDVVJMRV9URlRQX0lMTEVHQUw7CiAgIH0KIApAQCAtOTc1LDcgKzk3OCw3IEBACiAgICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKICAgfQogCi0gIC8qIHdlIGRvbid0IGtlZXAgVEZUUCBjb25uZWN0aW9ucyB1cCBiYXNjaWFsbHkgYmVjYXVzZSB0aGVyZSdzIG5vbmUgb3IgdmVyeQorICAvKiB3ZSBkb24ndCBrZWVwIFRGVFAgY29ubmVjdGlvbnMgdXAgYmFzaWNhbGx5IGJlY2F1c2UgdGhlcmUncyBub25lIG9yIHZlcnkKICAgICogbGl0dGxlIGdhaW4gZm9yIFVEUCAqLwogICBjb25uY2xvc2UoY29ubiwgIlRGVFAiKTsKIApkaWZmIC0tZ2l0IGEvbGliL3RmdHAuaCBiL2xpYi90ZnRwLmgKaW5kZXggMTE3YjQwZi4uYzIzMjViMiAxMDA2NDQKLS0tIGEvbGliL3RmdHAuaAorKysgYi9saWIvdGZ0cC5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL3RpbWV2YWwuYyBiL2xpYi90aW1ldmFsLmMKaW5kZXggNDU3MzFhYy4uNjI5ZjFjOCAxMDA2NDQKLS0tIGEvbGliL3RpbWV2YWwuYworKysgYi9saWIvdGltZXZhbC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTEzLDEwICsxMTMsMTggQEAKICAqIE1ha2Ugc3VyZSB0aGF0IHRoZSBmaXJzdCBhcmd1bWVudCBpcyB0aGUgbW9yZSByZWNlbnQgdGltZSwgYXMgb3RoZXJ3aXNlCiAgKiB3ZSdsbCBnZXQgYSB3ZWlyZCBuZWdhdGl2ZSB0aW1lLWRpZmYgYmFjay4uLgogICoKLSAqIFJldHVybnM6IHRoZSB0aW1lIGRpZmZlcmVuY2UgaW4gbnVtYmVyIG9mIG1pbGxpc2Vjb25kcy4KKyAqIFJldHVybnM6IHRoZSB0aW1lIGRpZmZlcmVuY2UgaW4gbnVtYmVyIG9mIG1pbGxpc2Vjb25kcy4gRm9yIGxhcmdlIGRpZmZzIGl0CisgKiByZXR1cm5zIDB4N2ZmZmZmZmYgb24gMzJiaXQgdGltZV90IHN5c3RlbXMuCiAgKi8KIGxvbmcgY3VybHhfdHZkaWZmKHN0cnVjdCB0aW1ldmFsIG5ld2VyLCBzdHJ1Y3QgdGltZXZhbCBvbGRlcikKIHsKKyNpZiBTSVpFT0ZfVElNRV9UIDwgOAorICAvKiBmb3IgMzJiaXQgdGltZV90IHN5c3RlbXMsIGFkZCBhIHByZWNhdXRpb24gdG8gYXZvaWQgb3ZlcmZsb3cgZm9yIHJlYWxseQorICAgICBiaWcgdGltZSBkaWZmZXJlbmNlcyAqLworICB0aW1lX3QgZGlmZiA9IG5ld2VyLnR2X3NlYy1vbGRlci50dl9zZWM7CisgIGlmKGRpZmYgPj0gKDB4N2ZmZmZmZmYvMTAwMCkpCisgICAgcmV0dXJuIDB4N2ZmZmZmZmY7CisjZW5kaWYKICAgcmV0dXJuIChuZXdlci50dl9zZWMtb2xkZXIudHZfc2VjKSoxMDAwKwogICAgIChsb25nKShuZXdlci50dl91c2VjLW9sZGVyLnR2X3VzZWMpLzEwMDA7CiB9CmRpZmYgLS1naXQgYS9saWIvdGltZXZhbC5oIGIvbGliL3RpbWV2YWwuaAppbmRleCAzZjFiOWVhLi41MGMzMWEyIDEwMDY0NAotLS0gYS9saWIvdGltZXZhbC5oCisrKyBiL2xpYi90aW1ldmFsLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvdHJhbnNmZXIuYyBiL2xpYi90cmFuc2Zlci5jCmluZGV4IDI4Y2M2MWUuLjRhMTJlZTkgMTAwNjQ0Ci0tLSBhL2xpYi90cmFuc2Zlci5jCisrKyBiL2xpYi90cmFuc2Zlci5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNzEsMTcgKzcxLDEzIEBACiAjaW5jbHVkZSAidXJsLmgiCiAjaW5jbHVkZSAiZ2V0aW5mby5oIgogI2luY2x1ZGUgInZ0bHMvdnRscy5oIgotI2luY2x1ZGUgImh0dHBfZGlnZXN0LmgiCi0jaW5jbHVkZSAiY3VybF9udGxtLmgiCi0jaW5jbHVkZSAiaHR0cF9uZWdvdGlhdGUuaCIKLSNpbmNsdWRlICJzaGFyZS5oIgogI2luY2x1ZGUgInNlbGVjdC5oIgogI2luY2x1ZGUgIm11bHRpaWYuaCIKICNpbmNsdWRlICJjb25uZWN0LmgiCiAjaW5jbHVkZSAibm9uLWFzY2lpLmgiCi0jaW5jbHVkZSAiY3VybF9wcmludGYuaCIKIAotLyogVGhlIGxhc3QgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlOiAqLworLyogVGhlIGxhc3QgMyAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmUgaW4gdGhpcyBvcmRlciAqLworI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCiAjaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKICNpbmNsdWRlICJtZW1kZWJ1Zy5oIgogCkBAIC0xMTUsOCArMTExLDggQEAKIAogICAvKiB0aGlzIGZ1bmN0aW9uIHJldHVybnMgYSBzaXplX3QsIHNvIHdlIHR5cGVjYXN0IHRvIGludCB0byBwcmV2ZW50IHdhcm5pbmdzCiAgICAgIHdpdGggcGlja3kgY29tcGlsZXJzICovCi0gIG5yZWFkID0gKGludClkYXRhLT5zZXQuZnJlYWRfZnVuYyhkYXRhLT5yZXEudXBsb2FkX2Zyb21oZXJlLCAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyc2l6ZSwgZGF0YS0+c2V0LmluKTsKKyAgbnJlYWQgPSAoaW50KWRhdGEtPnN0YXRlLmZyZWFkX2Z1bmMoZGF0YS0+cmVxLnVwbG9hZF9mcm9taGVyZSwgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyc2l6ZSwgZGF0YS0+c3RhdGUuaW4pOwogCiAgIGlmKG5yZWFkID09IENVUkxfUkVBREZVTkNfQUJPUlQpIHsKICAgICBmYWlsZihkYXRhLCAib3BlcmF0aW9uIGFib3J0ZWQgYnkgY2FsbGJhY2siKTsKQEAgLTI4OSw4ICsyODUsOCBAQAogICAgICAgLyogSWYgbm8gQ1VSTE9QVF9SRUFERlVOQ1RJT04gaXMgdXNlZCwgd2Uga25vdyB0aGF0IHdlIG9wZXJhdGUgb24gYQogICAgICAgICAgZ2l2ZW4gRklMRSAqIHN0cmVhbSBhbmQgd2UgY2FuIGFjdHVhbGx5IGF0dGVtcHQgdG8gcmV3aW5kIHRoYXQKICAgICAgICAgIG91cnNlbHZlcyB3aXRoIGZzZWVrKCkgKi8KLSAgICAgIGlmKGRhdGEtPnNldC5mcmVhZF9mdW5jID09IChjdXJsX3JlYWRfY2FsbGJhY2spZnJlYWQpIHsKLSAgICAgICAgaWYoLTEgIT0gZnNlZWsoZGF0YS0+c2V0LmluLCAwLCBTRUVLX1NFVCkpCisgICAgICBpZihkYXRhLT5zdGF0ZS5mcmVhZF9mdW5jID09IChjdXJsX3JlYWRfY2FsbGJhY2spZnJlYWQpIHsKKyAgICAgICAgaWYoLTEgIT0gZnNlZWsoZGF0YS0+c3RhdGUuaW4sIDAsIFNFRUtfU0VUKSkKICAgICAgICAgICAvKiBzdWNjZXNzZnVsIHJld2luZCAqLwogICAgICAgICAgIHJldHVybiBDVVJMRV9PSzsKICAgICAgIH0KQEAgLTM5OSw2ICszOTUsNyBAQAogICBzaXplX3QgZXhjZXNzID0gMDsgLyogZXhjZXNzIGJ5dGVzIHJlYWQgKi8KICAgYm9vbCBpc19lbXB0eV9kYXRhID0gRkFMU0U7CiAgIGJvb2wgcmVhZG1vcmUgPSBGQUxTRTsgLyogdXNlZCBieSBSVFAgdG8gc2lnbmFsIGZvciBtb3JlIGRhdGEgKi8KKyAgaW50IG1heGxvb3BzID0gMTAwOwogCiAgICpkb25lID0gRkFMU0U7CiAKQEAgLTQwOSw3ICs0MDYsMTggQEAKICAgICAgIGRhdGEtPnNldC5idWZmZXJfc2l6ZSA6IEJVRlNJWkU7CiAgICAgc2l6ZV90IGJ5dGVzdG9yZWFkID0gYnVmZmVyc2l6ZTsKIAotICAgIGlmKGstPnNpemUgIT0gLTEgJiYgIWstPmhlYWRlcikgeworICAgIGlmKAorI2lmIGRlZmluZWQoVVNFX05HSFRUUDIpCisgICAgICAgLyogRm9yIEhUVFAvMiwgcmVhZCBkYXRhIHdpdGhvdXQgY2FyaW5nIGFib3V0IHRoZSBjb250ZW50CisgICAgICAgICAgbGVuZ3RoLiBUaGlzIGlzIHNhZmUgYmVjYXVzZSBib2R5IGluIEhUVFAvMiBpcyBhbHdheXMKKyAgICAgICAgICBzZWdtZW50ZWQgdGhhbmtzIHRvIGl0cyBmcmFtaW5nIGxheWVyLiBNZWFud2hpbGUsIHdlIGhhdmUgdG8KKyAgICAgICAgICBjYWxsIEN1cmxfcmVhZCB0byBlbnN1cmUgdGhhdCBodHRwMl9oYW5kbGVfc3RyZWFtX2Nsb3NlIGlzCisgICAgICAgICAgY2FsbGVkIHdoZW4gd2UgcmVhZCBhbGwgaW5jb21pbmcgYnl0ZXMgZm9yIGEgcGFydGljdWxhcgorICAgICAgICAgIHN0cmVhbS4gKi8KKyAgICAgICAhKChjb25uLT5oYW5kbGVyLT5wcm90b2NvbCAmIFBST1RPX0ZBTUlMWV9IVFRQKSAmJgorICAgICAgICAgY29ubi0+aHR0cHZlcnNpb24gPT0gMjApICYmCisjZW5kaWYKKyAgICAgICBrLT5zaXplICE9IC0xICYmICFrLT5oZWFkZXIpIHsKICAgICAgIC8qIG1ha2Ugc3VyZSB3ZSBkb24ndCByZWFkICJ0b28gbXVjaCIgaWYgd2UgY2FuIGhlbHAgaXQgc2luY2Ugd2UKICAgICAgICAgIG1pZ2h0IGJlIHBpcGVsaW5pbmcgYW5kIHRoZW4gc29tZW9uZSBlbHNlIG1pZ2h0IHdhbnQgdG8gcmVhZCB3aGF0CiAgICAgICAgICBmb2xsb3dzISAqLwpAQCAtNjg2LDcgKzY5NCw3IEBACiAgICAgICAgIH0KIAogICAgICAgICBucmVhZCA9IChzc2l6ZV90KSAoay0+bWF4ZG93bmxvYWQgLSBrLT5ieXRlY291bnQpOwotICAgICAgICBpZihucmVhZCA8IDAgKSAvKiB0aGlzIHNob3VsZCBiZSB1bnVzdWFsICovCisgICAgICAgIGlmKG5yZWFkIDwgMCkgLyogdGhpcyBzaG91bGQgYmUgdW51c3VhbCAqLwogICAgICAgICAgIG5yZWFkID0gMDsKIAogICAgICAgICBrLT5rZWVwb24gJj0gfktFRVBfUkVDVjsgLyogd2UncmUgZG9uZSByZWFkaW5nICovCkBAIC03NTYsNyArNzY0LDYgQEAKICAgICAgICAgICAgICAgcmVzdWx0ID0gQ3VybF91bmVuY29kZV9nemlwX3dyaXRlKGNvbm4sIGssIG5yZWFkKTsKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgY2FzZSBDT01QUkVTUzoKICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgZmFpbGYgKGRhdGEsICJVbnJlY29nbml6ZWQgY29udGVudCBlbmNvZGluZyB0eXBlLiAiCiAgICAgICAgICAgICAgICAgICAgImxpYmN1cmwgdW5kZXJzdGFuZHMgYGlkZW50aXR5JywgYGRlZmxhdGUnIGFuZCBgZ3ppcCcgIgpAQCAtNzcyLDcgKzc3OSw3IEBACiAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgIH0KIAotICAgIH0gLyogaWYoISBoZWFkZXIgYW5kIGRhdGEgdG8gcmVhZCApICovCisgICAgfSAvKiBpZighaGVhZGVyIGFuZCBkYXRhIHRvIHJlYWQpICovCiAKICAgICBpZihjb25uLT5oYW5kbGVyLT5yZWFkd3JpdGUgJiYKICAgICAgICAoZXhjZXNzID4gMCAmJiAhY29ubi0+Yml0cy5zdHJlYW1fd2FzX3Jld291bmQpKSB7CkBAIC03OTUsMTAgKzgwMiwxMCBAQAogICAgICAgay0+a2VlcG9uICY9IH5LRUVQX1JFQ1Y7CiAgICAgfQogCi0gIH0gd2hpbGUoZGF0YV9wZW5kaW5nKGNvbm4pKTsKKyAgfSB3aGlsZShkYXRhX3BlbmRpbmcoY29ubikgJiYgbWF4bG9vcHMtLSk7CiAKICAgaWYoKChrLT5rZWVwb24gJiAoS0VFUF9SRUNWfEtFRVBfU0VORCkpID09IEtFRVBfU0VORCkgJiYKLSAgICAgY29ubi0+Yml0cy5jbG9zZSApIHsKKyAgICAgY29ubi0+Yml0cy5jbG9zZSkgewogICAgIC8qIFdoZW4gd2UndmUgcmVhZCB0aGUgZW50aXJlIHRoaW5nIGFuZCB0aGUgY2xvc2UgYml0IGlzIHNldCwgdGhlIHNlcnZlcgogICAgICAgIG1heSBub3cgY2xvc2UgdGhlIGNvbm5lY3Rpb24uIElmIHRoZXJlJ3Mgbm93IGFueSBraW5kIG9mIHNlbmRpbmcgZ29pbmcKICAgICAgICBvbiBmcm9tIG91ciBzaWRlLCB3ZSBuZWVkIHRvIHN0b3AgdGhhdCBpbW1lZGlhdGVseS4gKi8KQEAgLTgwOSw2ICs4MTYsMjAgQEAKICAgcmV0dXJuIENVUkxFX09LOwogfQogCitzdGF0aWMgQ1VSTGNvZGUgZG9uZV9zZW5kaW5nKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IFNpbmdsZVJlcXVlc3QgKmspCit7CisgIGstPmtlZXBvbiAmPSB+S0VFUF9TRU5EOyAvKiB3ZSdyZSBkb25lIHdyaXRpbmcgKi8KKworICBpZihjb25uLT5iaXRzLnJld2luZGFmdGVyc2VuZCkgeworICAgIENVUkxjb2RlIHJlc3VsdCA9IEN1cmxfcmVhZHJld2luZChjb25uKTsKKyAgICBpZihyZXN1bHQpCisgICAgICByZXR1cm4gcmVzdWx0OworICB9CisgIHJldHVybiBDVVJMRV9PSzsKK30KKworCiAvKgogICogU2VuZCBkYXRhIHRvIHVwbG9hZCB0byB0aGUgc2VydmVyLCB3aGVuIHRoZSBzb2NrZXQgaXMgd3JpdGFibGUuCiAgKi8KQEAgLTg4MCwxNCArOTAxLDkgQEAKICAgICAgICAgYnJlYWs7CiAgICAgICB9CiAgICAgICBlbHNlIGlmKG5yZWFkPD0wKSB7Ci0gICAgICAgIC8qIGRvbmUgKi8KLSAgICAgICAgay0+a2VlcG9uICY9IH5LRUVQX1NFTkQ7IC8qIHdlJ3JlIGRvbmUgd3JpdGluZyAqLwotCi0gICAgICAgIGlmKGNvbm4tPmJpdHMucmV3aW5kYWZ0ZXJzZW5kKSB7Ci0gICAgICAgICAgcmVzdWx0ID0gQ3VybF9yZWFkcmV3aW5kKGNvbm4pOwotICAgICAgICAgIGlmKHJlc3VsdCkKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgIH0KKyAgICAgICAgcmVzdWx0ID0gZG9uZV9zZW5kaW5nKGNvbm4sIGspOworICAgICAgICBpZihyZXN1bHQpCisgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgYnJlYWs7CiAgICAgICB9CiAKQEAgLTkyNCw3ICs5NDAsOCBAQAogICAgICAgICAgICAgaWYoIWRhdGEtPnNldC5jcmxmKSB7CiAgICAgICAgICAgICAgIC8qIHdlJ3JlIGhlcmUgb25seSBiZWNhdXNlIEZUUCBpcyBpbiBBU0NJSSBtb2RlLi4uCiAgICAgICAgICAgICAgICAgIGJ1bXAgaW5maWxlc2l6ZSBmb3IgdGhlIExGIHdlIGp1c3QgYWRkZWQgKi8KLSAgICAgICAgICAgICAgZGF0YS0+c3RhdGUuaW5maWxlc2l6ZSsrOworICAgICAgICAgICAgICBpZihkYXRhLT5zdGF0ZS5pbmZpbGVzaXplICE9IC0xKQorICAgICAgICAgICAgICAgIGRhdGEtPnN0YXRlLmluZmlsZXNpemUrKzsKICAgICAgICAgICAgIH0KICAgICAgICAgICB9CiAgICAgICAgICAgZWxzZQpAQCAtOTk2LDggKzEwMTMsOSBAQAogICAgICAgZGF0YS0+cmVxLnVwbG9hZF9wcmVzZW50ID0gMDsgLyogbm8gbW9yZSBieXRlcyBsZWZ0ICovCiAKICAgICAgIGlmKGstPnVwbG9hZF9kb25lKSB7Ci0gICAgICAgIC8qIHN3aXRjaCBvZmYgd3JpdGluZywgd2UncmUgZG9uZSEgKi8KLSAgICAgICAgay0+a2VlcG9uICY9IH5LRUVQX1NFTkQ7IC8qIHdlJ3JlIGRvbmUgd3JpdGluZyAqLworICAgICAgICByZXN1bHQgPSBkb25lX3NlbmRpbmcoY29ubiwgayk7CisgICAgICAgIGlmKHJlc3VsdCkKKyAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgfQogICAgIH0KIApAQCAtMTI4NSw4ICsxMzAzLDE4IEBACiAgIHJldHVybiAobG9uZylydjsKIH0KIAorLyogQ3VybF9pbml0X0NPTk5FQ1QoKSBnZXRzIGNhbGxlZCBlYWNoIHRpbWUgdGhlIGhhbmRsZSBzd2l0Y2hlcyB0byBDT05ORUNUCisgICB3aGljaCBtZWFucyB0aGlzIGdldHMgY2FsbGVkIG9uY2UgZm9yIGVhY2ggc3Vic2VxdWVudCByZWRpcmVjdCBldGMgKi8KK3ZvaWQgQ3VybF9pbml0X0NPTk5FQ1Qoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEpCit7CisgIGRhdGEtPnN0YXRlLmZyZWFkX2Z1bmMgPSBkYXRhLT5zZXQuZnJlYWRfZnVuY19zZXQ7CisgIGRhdGEtPnN0YXRlLmluID0gZGF0YS0+c2V0LmluX3NldDsKK30KKwogLyoKLSAqIEN1cmxfcHJldHJhbnNmZXIoKSBpcyBjYWxsZWQgaW1tZWRpYXRlbHkgYmVmb3JlIGEgdHJhbnNmZXIgc3RhcnRzLgorICogQ3VybF9wcmV0cmFuc2ZlcigpIGlzIGNhbGxlZCBpbW1lZGlhdGVseSBiZWZvcmUgYSB0cmFuc2ZlciBzdGFydHMsIGFuZCBvbmx5CisgKiBvbmNlIGZvciBvbmUgdHJhbnNmZXIgbm8gbWF0dGVyIGlmIGl0IGhhcyByZWRpcmVjdHMgb3IgZG8gbXVsdGktcGFzcworICogYXV0aGVudGljYXRpb24gZXRjLgogICovCiBDVVJMY29kZSBDdXJsX3ByZXRyYW5zZmVyKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhKQogewpAQCAtMTMxNSw2ICsxMzQzLDExIEBACiAgIEN1cmxfc2FmZWZyZWUoZGF0YS0+aW5mby53b3VsZHJlZGlyZWN0KTsKICAgZGF0YS0+aW5mby53b3VsZHJlZGlyZWN0ID0gTlVMTDsKIAorICBpZihkYXRhLT5zZXQuaHR0cHJlcSA9PSBIVFRQUkVRX1BVVCkKKyAgICBkYXRhLT5zdGF0ZS5pbmZpbGVzaXplID0gZGF0YS0+c2V0LmZpbGVzaXplOworICBlbHNlCisgICAgZGF0YS0+c3RhdGUuaW5maWxlc2l6ZSA9IGRhdGEtPnNldC5wb3N0ZmllbGRzaXplOworCiAgIC8qIElmIHRoZXJlIGlzIGEgbGlzdCBvZiBjb29raWUgZmlsZXMgdG8gcmVhZCwgZG8gaXQgbm93ISAqLwogICBpZihkYXRhLT5jaGFuZ2UuY29va2llbGlzdCkKICAgICBDdXJsX2Nvb2tpZV9sb2FkZmlsZXMoZGF0YSk7CkBAIC0xMzUyLDYgKzEzODUsMTYgQEAKICAgICAgICBjb25zaWRlciB0byBiZSBmaW5lICovCiAgICAgZGF0YS0+c3RhdGUuYXV0aGhvc3QucGlja2VkICY9IGRhdGEtPnN0YXRlLmF1dGhob3N0LndhbnQ7CiAgICAgZGF0YS0+c3RhdGUuYXV0aHByb3h5LnBpY2tlZCAmPSBkYXRhLT5zdGF0ZS5hdXRocHJveHkud2FudDsKKworICAgIGlmKGRhdGEtPnNldC53aWxkY2FyZG1hdGNoKSB7CisgICAgICBzdHJ1Y3QgV2lsZGNhcmREYXRhICp3YyA9ICZkYXRhLT53aWxkY2FyZDsKKyAgICAgIGlmKCF3Yy0+ZmlsZWxpc3QpIHsKKyAgICAgICAgcmVzdWx0ID0gQ3VybF93aWxkY2FyZF9pbml0KHdjKTsgLyogaW5pdCB3aWxkY2FyZCBzdHJ1Y3R1cmVzICovCisgICAgICAgIGlmKHJlc3VsdCkKKyAgICAgICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKyAgICAgIH0KKyAgICB9CisKICAgfQogCiAgIHJldHVybiByZXN1bHQ7CkBAIC0xMzgwLDE2ICsxNDIzLDE4IEBACiAgKi8KIHN0YXRpYyBzaXplX3Qgc3RybGVuX3VybChjb25zdCBjaGFyICp1cmwpCiB7Ci0gIGNvbnN0IGNoYXIgKnB0cjsKKyAgY29uc3QgdW5zaWduZWQgY2hhciAqcHRyOwogICBzaXplX3QgbmV3bGVuPTA7CiAgIGJvb2wgbGVmdD1UUlVFOyAvKiBsZWZ0IHNpZGUgb2YgdGhlID8gKi8KIAotICBmb3IocHRyPXVybDsgKnB0cjsgcHRyKyspIHsKKyAgZm9yKHB0cj0odW5zaWduZWQgY2hhciAqKXVybDsgKnB0cjsgcHRyKyspIHsKICAgICBzd2l0Y2goKnB0cikgewogICAgIGNhc2UgJz8nOgogICAgICAgbGVmdD1GQUxTRTsKICAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLwogICAgIGRlZmF1bHQ6CisgICAgICBpZigqcHRyID49IDB4ODApCisgICAgICAgIG5ld2xlbiArPSAyOwogICAgICAgbmV3bGVuKys7CiAgICAgICBicmVhazsKICAgICBjYXNlICcgJzoKQEAgLTE0MTAsOSArMTQ1NSw5IEBACiB7CiAgIC8qIHdlIG11c3QgYWRkIHRoaXMgd2l0aCB3aGl0ZXNwYWNlLXJlcGxhY2luZyAqLwogICBib29sIGxlZnQ9VFJVRTsKLSAgY29uc3QgY2hhciAqaXB0cjsKKyAgY29uc3QgdW5zaWduZWQgY2hhciAqaXB0cjsKICAgY2hhciAqb3B0ciA9IG91dHB1dDsKLSAgZm9yKGlwdHIgPSB1cmw7ICAgIC8qIHJlYWQgZnJvbSBoZXJlICovCisgIGZvcihpcHRyID0gKHVuc2lnbmVkIGNoYXIgKil1cmw7ICAgIC8qIHJlYWQgZnJvbSBoZXJlICovCiAgICAgICAqaXB0cjsgICAgICAgICAvKiB1bnRpbCB6ZXJvIGJ5dGUgKi8KICAgICAgIGlwdHIrKykgewogICAgIHN3aXRjaCgqaXB0cikgewpAQCAtMTQyMCw3ICsxNDY1LDEyIEBACiAgICAgICBsZWZ0PUZBTFNFOwogICAgICAgLyogZmFsbCB0aHJvdWdoICovCiAgICAgZGVmYXVsdDoKLSAgICAgICpvcHRyKys9KmlwdHI7CisgICAgICBpZigqaXB0ciA+PSAweDgwKSB7CisgICAgICAgIHNucHJpbnRmKG9wdHIsIDQsICIlJSUwMngiLCAqaXB0cik7CisgICAgICAgIG9wdHIgKz0gMzsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgICAgKm9wdHIrKz0qaXB0cjsKICAgICAgIGJyZWFrOwogICAgIGNhc2UgJyAnOgogICAgICAgaWYobGVmdCkgewpAQCAtMTY2OCwyMyArMTcxOCwyMSBAQAogICAgIG5ld3VybCA9IGFic29sdXRlOwogICB9CiAgIGVsc2UgeworICAgIC8qIFRoZSBuZXcgVVJMIE1BWSBjb250YWluIHNwYWNlIG9yIGhpZ2ggYnl0ZSB2YWx1ZXMsIHRoYXQgbWVhbnMgYSBtaWdodHkKKyAgICAgICBzdHVwaWQgcmVkaXJlY3QgVVJMIGJ1dCB3ZSBzdGlsbCBtYWtlIGFuIGVmZm9ydCB0byBkbyAicmlnaHQiLiAqLworICAgIGNoYXIgKm5ld2VzdDsKKyAgICBzaXplX3QgbmV3bGVuID0gc3RybGVuX3VybChuZXd1cmwpOworCiAgICAgLyogVGhpcyBpcyBhbiBhYnNvbHV0ZSBVUkwsIGRvbid0IGFsbG93IHRoZSBjdXN0b20gcG9ydCBudW1iZXIgKi8KICAgICBkaXNhbGxvd3BvcnQgPSBUUlVFOwogCi0gICAgaWYoc3RyY2hyKG5ld3VybCwgJyAnKSkgewotICAgICAgLyogVGhpcyBuZXcgVVJMIGNvbnRhaW5zIGF0IGxlYXN0IG9uZSBzcGFjZSwgdGhpcyBpcyBhIG1pZ2h0eSBzdHVwaWQKLSAgICAgICAgIHJlZGlyZWN0IGJ1dCB3ZSBzdGlsbCBtYWtlIGFuIGVmZm9ydCB0byBkbyAicmlnaHQiLiAqLwotICAgICAgY2hhciAqbmV3ZXN0OwotICAgICAgc2l6ZV90IG5ld2xlbiA9IHN0cmxlbl91cmwobmV3dXJsKTsKKyAgICBuZXdlc3QgPSBtYWxsb2MobmV3bGVuKzEpOyAvKiBnZXQgbWVtb3J5IGZvciB0aGlzICovCisgICAgaWYoIW5ld2VzdCkKKyAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworICAgIHN0cmNweV91cmwobmV3ZXN0LCBuZXd1cmwpOyAvKiBjcmVhdGUgYSBzcGFjZS1mcmVlIFVSTCAqLwogCi0gICAgICBuZXdlc3QgPSBtYWxsb2MobmV3bGVuKzEpOyAvKiBnZXQgbWVtb3J5IGZvciB0aGlzICovCi0gICAgICBpZighbmV3ZXN0KQotICAgICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKLSAgICAgIHN0cmNweV91cmwobmV3ZXN0LCBuZXd1cmwpOyAvKiBjcmVhdGUgYSBzcGFjZS1mcmVlIFVSTCAqLwotCi0gICAgICBmcmVlKG5ld3VybCk7IC8qIHRoYXQgd2FzIG5vIGdvb2QgKi8KLSAgICAgIG5ld3VybCA9IG5ld2VzdDsgLyogdXNlIHRoaXMgaW5zdGVhZCBub3cgKi8KLSAgICB9CisgICAgZnJlZShuZXd1cmwpOyAvKiB0aGF0IHdhcyBubyBnb29kICovCisgICAgbmV3dXJsID0gbmV3ZXN0OyAvKiB1c2UgdGhpcyBpbnN0ZWFkIG5vdyAqLwogCiAgIH0KIApAQCAtMTgxMCw2MyArMTg1OCw2IEBACiAjZW5kaWYgLyogQ1VSTF9ESVNBQkxFX0hUVFAgKi8KIH0KIAotQ1VSTGNvZGUKLUN1cmxfcmVjb25uZWN0X3JlcXVlc3Qoc3RydWN0IGNvbm5lY3RkYXRhICoqY29ubnApCi17Ci0gIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOwotICBzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4gPSAqY29ubnA7Ci0gIHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhID0gY29ubi0+ZGF0YTsKLQotICAvKiBUaGlzIHdhcyBhIHJlLXVzZSBvZiBhIGNvbm5lY3Rpb24gYW5kIHdlIGdvdCBhIHdyaXRlIGVycm9yIGluIHRoZQotICAgKiBETy1waGFzZS4gVGhlbiB3ZSBESVNDT05ORUNUIHRoaXMgY29ubmVjdGlvbiBhbmQgaGF2ZSBhbm90aGVyIGF0dGVtcHQgdG8KLSAgICogQ09OTkVDVCBhbmQgdGhlbiBETyBhZ2FpbiEgVGhlIHJldHJ5IGNhbm5vdCBwb3NzaWJseSBmaW5kIGFub3RoZXIKLSAgICogY29ubmVjdGlvbiB0byByZS11c2UsIHNpbmNlIHdlIG9ubHkga2VlcCBvbmUgcG9zc2libGUgY29ubmVjdGlvbiBmb3IKLSAgICogZWFjaC4gICovCi0KLSAgaW5mb2YoZGF0YSwgIlJlLXVzZWQgY29ubmVjdGlvbiBzZWVtcyBkZWFkLCBnZXQgYSBuZXcgb25lXG4iKTsKLQotICBjb25uY2xvc2UoY29ubiwgIlJlY29ubmVjdCBkZWFkIGNvbm5lY3Rpb24iKTsgLyogZW5mb3JjZSBjbG9zZSAqLwotICByZXN1bHQgPSBDdXJsX2RvbmUoJmNvbm4sIHJlc3VsdCwgRkFMU0UpOyAvKiB3ZSBhcmUgc28gZG9uZSB3aXRoIHRoaXMgKi8KLQotICAvKiBjb25uIG1heSBubyBsb25nZXIgYmUgYSBnb29kIHBvaW50ZXIsIGNsZWFyIGl0IHRvIGF2b2lkIG1pc3Rha2VzIGJ5Ci0gICAgIHBhcmVudCBmdW5jdGlvbnMgKi8KLSAgKmNvbm5wID0gTlVMTDsKLQotICAvKgotICAgKiBBY2NvcmRpbmcgdG8gYnVnIHJlcG9ydCAjMTMzMDMxMC4gV2UgbmVlZCB0byBjaGVjayBmb3IgQ1VSTEVfU0VORF9FUlJPUgotICAgKiBoZXJlIGFzIHdlbGwuIEkgZmlndXJlIHRoaXMgY291bGQgaGFwcGVuIHdoZW4gdGhlIHJlcXVlc3QgZmFpbGVkIG9uIGEgRlRQCi0gICAqIGNvbm5lY3Rpb24gYW5kIHRodXMgQ3VybF9kb25lKCkgaXRzZWxmIHRyaWVkIHRvIHVzZSB0aGUgY29ubmVjdGlvbgotICAgKiAoYWdhaW4pLiBTbGlnaHQgTGFjayBvZiBmZWVkYmFjayBpbiB0aGUgcmVwb3J0LCBidXQgSSBkb24ndCB0aGluayB0aGlzCi0gICAqIGV4dHJhIGNoZWNrIGNhbiBkbyBtdWNoIGhhcm0uCi0gICAqLwotICBpZighcmVzdWx0IHx8IChDVVJMRV9TRU5EX0VSUk9SID09IHJlc3VsdCkpIHsKLSAgICBib29sIGFzeW5jOwotICAgIGJvb2wgcHJvdG9jb2xfZG9uZSA9IFRSVUU7Ci0KLSAgICAvKiBOb3csIHJlZG8gdGhlIGNvbm5lY3QgYW5kIGdldCBhIG5ldyBjb25uZWN0aW9uICovCi0gICAgcmVzdWx0ID0gQ3VybF9jb25uZWN0KGRhdGEsIGNvbm5wLCAmYXN5bmMsICZwcm90b2NvbF9kb25lKTsKLSAgICBpZighcmVzdWx0KSB7Ci0gICAgICAvKiBXZSBoYXZlIGNvbm5lY3RlZCBvciBzZW50IGF3YXkgYSBuYW1lIHJlc29sdmUgcXVlcnkgZmluZSAqLwotCi0gICAgICBjb25uID0gKmNvbm5wOyAvKiBzZXR1cCBjb25uIHRvIGFnYWluIHBvaW50IHRvIHNvbWV0aGluZyBuaWNlICovCi0gICAgICBpZihhc3luYykgewotICAgICAgICAvKiBOb3csIGlmIGFzeW5jIGlzIFRSVUUgaGVyZSwgd2UgbmVlZCB0byB3YWl0IGZvciB0aGUgbmFtZQotICAgICAgICAgICB0byByZXNvbHZlICovCi0gICAgICAgIHJlc3VsdCA9IEN1cmxfcmVzb2x2ZXJfd2FpdF9yZXNvbHYoY29ubiwgTlVMTCk7Ci0gICAgICAgIGlmKHJlc3VsdCkKLSAgICAgICAgICByZXR1cm4gcmVzdWx0OwotCi0gICAgICAgIC8qIFJlc29sdmVkLCBjb250aW51ZSB3aXRoIHRoZSBjb25uZWN0aW9uICovCi0gICAgICAgIHJlc3VsdCA9IEN1cmxfYXN5bmNfcmVzb2x2ZWQoY29ubiwgJnByb3RvY29sX2RvbmUpOwotICAgICAgICBpZihyZXN1bHQpCi0gICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICByZXR1cm4gcmVzdWx0OwotfQotCiAvKiBSZXR1cm5zIENVUkxFX09LICphbmQqIHNldHMgJyp1cmwnIGlmIGEgcmVxdWVzdCByZXRyeSBpcyB3YW50ZWQuCiAKICAgIE5PVEU6IHRoYXQgdGhlICp1cmwgaXMgbWFsbG9jKCllZC4gKi8KZGlmZiAtLWdpdCBhL2xpYi90cmFuc2Zlci5oIGIvbGliL3RyYW5zZmVyLmgKaW5kZXggMzE2YWVhZS4uODAyMzQ0ZiAxMDA2NDQKLS0tIGEvbGliL3RyYW5zZmVyLmgKKysrIGIvbGliL3RyYW5zZmVyLmgKQEAgLTcsMTEgKzcsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yMiw2ICsyMiw4IEBACiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAordm9pZCBDdXJsX2luaXRfQ09OTkVDVChzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSk7CisKIENVUkxjb2RlIEN1cmxfcHJldHJhbnNmZXIoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEpOwogQ1VSTGNvZGUgQ3VybF9zZWNvbmRfY29ubmVjdChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pOwogQ1VSTGNvZGUgQ3VybF9wb3N0dHJhbnNmZXIoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEpOwpAQCAtNDcsNyArNDksNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgaW50IG51bXNvY2tzKTsKIENVUkxjb2RlIEN1cmxfcmVhZHJld2luZChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pOwogQ1VSTGNvZGUgQ3VybF9maWxscmVhZGJ1ZmZlcihzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGludCBieXRlcywgaW50ICpucmVhZHApOwotQ1VSTGNvZGUgQ3VybF9yZWNvbm5lY3RfcmVxdWVzdChzdHJ1Y3QgY29ubmVjdGRhdGEgKipjb25ucCk7CiBDVVJMY29kZSBDdXJsX3JldHJ5X3JlcXVlc3Qoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBjaGFyICoqdXJsKTsKIGJvb2wgQ3VybF9tZWV0c190aW1lY29uZGl0aW9uKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLCB0aW1lX3QgdGltZW9mZG9jKTsKIApkaWZmIC0tZ2l0IGEvbGliL3VybC5jIGIvbGliL3VybC5jCmluZGV4IDE3Mjc5YmIuLjJhMzAyNjYgMTAwNjQ0Ci0tLSBhL2xpYi91cmwuYworKysgYi9saWIvdXJsLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC03NSw3ICs3NSw3IEBACiAjZW5kaWYKICNlbGlmIGRlZmluZWQoVVNFX1dJTjMyX0lETikKIC8qIHByb3RvdHlwZSBmb3IgY3VybF93aW4zMl9pZG5fdG9fYXNjaWkoKSAqLwotaW50IGN1cmxfd2luMzJfaWRuX3RvX2FzY2lpKGNvbnN0IGNoYXIgKmluLCBjaGFyICoqb3V0KTsKK2Jvb2wgY3VybF93aW4zMl9pZG5fdG9fYXNjaWkoY29uc3QgY2hhciAqaW4sIGNoYXIgKipvdXQpOwogI2VuZGlmICAvKiBVU0VfTElCSUROICovCiAKICNpbmNsdWRlICJ1cmxkYXRhLmgiCkBAIC0xMTEsNiArMTExLDcgQEAKICNpbmNsdWRlICJ0ZWxuZXQuaCIKICNpbmNsdWRlICJ0ZnRwLmgiCiAjaW5jbHVkZSAiaHR0cC5oIgorI2luY2x1ZGUgImh0dHAyLmgiCiAjaW5jbHVkZSAiZmlsZS5oIgogI2luY2x1ZGUgImN1cmxfbGRhcC5oIgogI2luY2x1ZGUgInNzaC5oIgpAQCAtMTE4LDcgKzExOSw3IEBACiAjaW5jbHVkZSAidXJsLmgiCiAjaW5jbHVkZSAiY29ubmVjdC5oIgogI2luY2x1ZGUgImluZXRfbnRvcC5oIgotI2luY2x1ZGUgImN1cmxfbnRsbS5oIgorI2luY2x1ZGUgImh0dHBfbnRsbS5oIgogI2luY2x1ZGUgImN1cmxfbnRsbV93Yi5oIgogI2luY2x1ZGUgInNvY2tzLmgiCiAjaW5jbHVkZSAiY3VybF9ydG1wLmgiCkBAIC0xMjksMjAgKzEzMCwxOCBAQAogI2luY2x1ZGUgInBpcGVsaW5lLmgiCiAjaW5jbHVkZSAiZG90ZG90LmgiCiAjaW5jbHVkZSAic3RyZHVwLmgiCisvKiBUaGUgbGFzdCAzICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZSBpbiB0aGlzIG9yZGVyICovCiAjaW5jbHVkZSAiY3VybF9wcmludGYuaCIKICNpbmNsdWRlICJjdXJsX21lbW9yeS5oIgotLyogVGhlIGxhc3QgI2luY2x1ZGUgZmlsZSBzaG91bGQgYmU6ICovCiAjaW5jbHVkZSAibWVtZGVidWcuaCIKIAogLyogTG9jYWwgc3RhdGljIHByb3RvdHlwZXMgKi8KIHN0YXRpYyBzdHJ1Y3QgY29ubmVjdGRhdGEgKgotZmluZF9vbGRlc3RfaWRsZV9jb25uZWN0aW9uKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhKTsKLXN0YXRpYyBzdHJ1Y3QgY29ubmVjdGRhdGEgKgogZmluZF9vbGRlc3RfaWRsZV9jb25uZWN0aW9uX2luX2J1bmRsZShzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvbm5lY3RidW5kbGUgKmJ1bmRsZSk7CiBzdGF0aWMgdm9pZCBjb25uX2ZyZWUoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKTsKK3N0YXRpYyB2b2lkIGZyZWVfZml4ZWRfaG9zdG5hbWUoc3RydWN0IGhvc3RuYW1lICpob3N0KTsKIHN0YXRpYyB2b2lkIHNpZ25hbFBpcGVDbG9zZShzdHJ1Y3QgY3VybF9sbGlzdCAqcGlwZWxpbmUsIGJvb2wgcGlwZV9icm9rZSk7Ci1zdGF0aWMgQ1VSTGNvZGUgZG9faW5pdChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pOwogc3RhdGljIENVUkxjb2RlIHBhcnNlX3VybF9sb2dpbihzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqdXNlcnB0ciwgY2hhciAqKnBhc3N3ZHB0ciwKQEAgLTE1MCw2ICsxNDksOCBAQAogc3RhdGljIENVUkxjb2RlIHBhcnNlX2xvZ2luX2RldGFpbHMoY29uc3QgY2hhciAqbG9naW4sIGNvbnN0IHNpemVfdCBsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqdXNlcnB0ciwgY2hhciAqKnBhc3N3ZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipvcHRpb25zcHRyKTsKK3N0YXRpYyB1bnNpZ25lZCBpbnQgZ2V0X3Byb3RvY29sX2ZhbWlseSh1bnNpZ25lZCBpbnQgcHJvdG9jb2wpOworCiAvKgogICogUHJvdG9jb2wgdGFibGUuCiAgKi8KQEAgLTI5Niw3ICsyOTcsNyBAQAogICBkYXRhLT5jaGFuZ2UudXJsID0gTlVMTDsKIH0KIAotc3RhdGljIENVUkxjb2RlIHNldHN0cm9wdChjaGFyICoqY2hhcnAsIGNoYXIgKnMpCitzdGF0aWMgQ1VSTGNvZGUgc2V0c3Ryb3B0KGNoYXIgKipjaGFycCwgY29uc3QgY2hhciAqcykKIHsKICAgLyogUmVsZWFzZSB0aGUgcHJldmlvdXMgc3RvcmFnZSBhdCBgY2hhcnAnIGFuZCByZXBsYWNlIGJ5IGEgZHluYW1pYyBzdG9yYWdlCiAgICAgIGNvcHkgb2YgYHMnLiBSZXR1cm4gQ1VSTEVfT0sgb3IgQ1VSTEVfT1VUX09GX01FTU9SWS4gKi8KQEAgLTMwNCwxMiArMzA1LDEyIEBACiAgIEN1cmxfc2FmZWZyZWUoKmNoYXJwKTsKIAogICBpZihzKSB7Ci0gICAgcyA9IHN0cmR1cChzKTsKKyAgICBjaGFyICpzdHIgPSBzdHJkdXAocyk7CiAKLSAgICBpZighcykKKyAgICBpZighc3RyKQogICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CiAKLSAgICAqY2hhcnAgPSBzOworICAgICpjaGFycCA9IHN0cjsKICAgfQogCiAgIHJldHVybiBDVVJMRV9PSzsKQEAgLTQ4Myw2ICs0ODQsMTIgQEAKICAgICBDdXJsX3NoYXJlX3VubG9jayhkYXRhLCBDVVJMX0xPQ0tfREFUQV9TSEFSRSk7CiAgIH0KIAorICBpZihkYXRhLT5zZXQud2lsZGNhcmRtYXRjaCkgeworICAgIC8qIGRlc3RydWN0IHdpbGRjYXJkIHN0cnVjdHVyZXMgaWYgaXQgaXMgbmVlZGVkICovCisgICAgc3RydWN0IFdpbGRjYXJkRGF0YSAqd2MgPSAmZGF0YS0+d2lsZGNhcmQ7CisgICAgQ3VybF93aWxkY2FyZF9kdG9yKHdjKTsKKyAgfQorCiAgIEN1cmxfZnJlZXNldChkYXRhKTsKICAgZnJlZShkYXRhKTsKICAgcmV0dXJuIENVUkxFX09LOwpAQCAtNDk3LDE0ICs1MDQsMTQgQEAKICAgQ1VSTGNvZGUgcmVzdWx0ID0gQ1VSTEVfT0s7CiAKICAgc2V0LT5vdXQgPSBzdGRvdXQ7IC8qIGRlZmF1bHQgb3V0cHV0IHRvIHN0ZG91dCAqLwotICBzZXQtPmluICA9IHN0ZGluOyAgLyogZGVmYXVsdCBpbnB1dCBmcm9tIHN0ZGluICovCisgIHNldC0+aW5fc2V0ID0gc3RkaW47ICAvKiBkZWZhdWx0IGlucHV0IGZyb20gc3RkaW4gKi8KICAgc2V0LT5lcnIgID0gc3RkZXJyOyAgLyogZGVmYXVsdCBzdGRlcnIgdG8gc3RkZXJyICovCiAKICAgLyogdXNlIGZ3cml0ZSBhcyBkZWZhdWx0IGZ1bmN0aW9uIHRvIHN0b3JlIG91dHB1dCAqLwogICBzZXQtPmZ3cml0ZV9mdW5jID0gKGN1cmxfd3JpdGVfY2FsbGJhY2spZndyaXRlOwogCiAgIC8qIHVzZSBmcmVhZCBhcyBkZWZhdWx0IGZ1bmN0aW9uIHRvIHJlYWQgaW5wdXQgKi8KLSAgc2V0LT5mcmVhZF9mdW5jID0gKGN1cmxfcmVhZF9jYWxsYmFjaylmcmVhZDsKKyAgc2V0LT5mcmVhZF9mdW5jX3NldCA9IChjdXJsX3JlYWRfY2FsbGJhY2spZnJlYWQ7CiAgIHNldC0+aXNfZnJlYWRfc2V0ID0gMDsKICAgc2V0LT5pc19md3JpdGVfc2V0ID0gMDsKIApAQCAtNTcwLDMzICs1NzcsMTYgQEAKICAgICogc2VlbSBub3QgdG8gZm9sbG93IHJmYzE5NjEgc2VjdGlvbiA0LjMvNC40CiAgICAqLwogICBzZXQtPnNvY2tzNV9nc3NhcGlfbmVjID0gRkFMU0U7Ci0gIC8qIHNldCBkZWZhdWx0IEdTUy1BUEkgc2VydmljZSBuYW1lICovCi0gIHJlc3VsdCA9IHNldHN0cm9wdCgmc2V0LT5zdHJbU1RSSU5HX1NPQ0tTNV9HU1NBUElfU0VSVklDRV0sCi0gICAgICAgICAgICAgICAgICAgICAoY2hhciAqKSBDVVJMX0RFRkFVTFRfU09DS1M1X0dTU0FQSV9TRVJWSUNFKTsKLSAgaWYocmVzdWx0KQotICAgIHJldHVybiByZXN1bHQ7Ci0KLSAgLyogc2V0IGRlZmF1bHQgbmVnb3RpYXRlIHByb3h5IHNlcnZpY2UgbmFtZSAqLwotICByZXN1bHQgPSBzZXRzdHJvcHQoJnNldC0+c3RyW1NUUklOR19QUk9YWV9TRVJWSUNFX05BTUVdLAotICAgICAgICAgICAgICAgICAgICAgKGNoYXIgKikgQ1VSTF9ERUZBVUxUX1BST1hZX1NFUlZJQ0VfTkFNRSk7Ci0gIGlmKHJlc3VsdCkKLSAgICByZXR1cm4gcmVzdWx0OwotCi0gIC8qIHNldCBkZWZhdWx0IG5lZ290aWF0ZSBzZXJ2aWNlIG5hbWUgKi8KLSAgcmVzdWx0ID0gc2V0c3Ryb3B0KCZzZXQtPnN0cltTVFJJTkdfU0VSVklDRV9OQU1FXSwKLSAgICAgICAgICAgICAgICAgICAgIChjaGFyICopIENVUkxfREVGQVVMVF9TRVJWSUNFX05BTUUpOwotICBpZihyZXN1bHQpCi0gICAgcmV0dXJuIHJlc3VsdDsKICNlbmRpZgogCiAgIC8qIFRoaXMgaXMgb3VyIHByZWZlcnJlZCBDQSBjZXJ0IGJ1bmRsZS9wYXRoIHNpbmNlIGluc3RhbGwgdGltZSAqLwogI2lmIGRlZmluZWQoQ1VSTF9DQV9CVU5ETEUpCi0gIHJlc3VsdCA9IHNldHN0cm9wdCgmc2V0LT5zdHJbU1RSSU5HX1NTTF9DQUZJTEVdLCAoY2hhciAqKSBDVVJMX0NBX0JVTkRMRSk7CisgIHJlc3VsdCA9IHNldHN0cm9wdCgmc2V0LT5zdHJbU1RSSU5HX1NTTF9DQUZJTEVdLCBDVVJMX0NBX0JVTkRMRSk7CiAgIGlmKHJlc3VsdCkKICAgICByZXR1cm4gcmVzdWx0OwogI2VuZGlmCiAjaWYgZGVmaW5lZChDVVJMX0NBX1BBVEgpCi0gIHJlc3VsdCA9IHNldHN0cm9wdCgmc2V0LT5zdHJbU1RSSU5HX1NTTF9DQVBBVEhdLCAoY2hhciAqKSBDVVJMX0NBX1BBVEgpOworICByZXN1bHQgPSBzZXRzdHJvcHQoJnNldC0+c3RyW1NUUklOR19TU0xfQ0FQQVRIXSwgQ1VSTF9DQV9QQVRIKTsKICAgaWYocmVzdWx0KQogICAgIHJldHVybiByZXN1bHQ7CiAjZW5kaWYKQEAgLTYxMSwxMiArNjAxLDE1IEBACiAgIHNldC0+dGNwX2tlZXBhbGl2ZSA9IEZBTFNFOwogICBzZXQtPnRjcF9rZWVwaW50dmwgPSA2MDsKICAgc2V0LT50Y3Bfa2VlcGlkbGUgPSA2MDsKKyAgc2V0LT50Y3BfZmFzdG9wZW4gPSBGQUxTRTsKIAogICBzZXQtPnNzbF9lbmFibGVfbnBuID0gVFJVRTsKICAgc2V0LT5zc2xfZW5hYmxlX2FscG4gPSBUUlVFOwogCiAgIHNldC0+ZXhwZWN0XzEwMF90aW1lb3V0ID0gMTAwMEw7IC8qIFdhaXQgZm9yIGEgc2Vjb25kIGJ5IGRlZmF1bHQuICovCiAgIHNldC0+c2VwX2hlYWRlcnMgPSBUUlVFOyAvKiBzZXBhcmF0ZWQgaGVhZGVyIGxpc3RzIGJ5IGRlZmF1bHQgKi8KKworICBDdXJsX2h0dHAyX2luaXRfdXNlcnNldChzZXQpOwogICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC02NzQsNiArNjY3LDggQEAKICAgICBkYXRhLT53aWxkY2FyZC5maWxlbGlzdCA9IE5VTEw7CiAgICAgZGF0YS0+c2V0LmZubWF0Y2ggPSBaRVJPX05VTEw7CiAgICAgZGF0YS0+c2V0Lm1heGNvbm5lY3RzID0gREVGQVVMVF9DT05OQ0FDSEVfU0laRTsgLyogZm9yIGVhc3kgaGFuZGxlcyAqLworCisgICAgQ3VybF9odHRwMl9pbml0X3N0YXRlKCZkYXRhLT5zdGF0ZSk7CiAgIH0KIAogICBpZihyZXN1bHQpIHsKQEAgLTcwNiw3ICs3MDEsNyBAQAogICBjYXNlIENVUkxPUFRfRE5TX1VTRV9HTE9CQUxfQ0FDSEU6CiAgICAgLyogcmVtZW1iZXIgd2Ugd2FudCB0aGlzIGVuYWJsZWQgKi8KICAgICBhcmcgPSB2YV9hcmcocGFyYW0sIGxvbmcpOwotICAgIGRhdGEtPnNldC5nbG9iYWxfZG5zX2NhY2hlID0gKDAgIT0gYXJnKT9UUlVFOkZBTFNFOworICAgIGRhdGEtPnNldC5nbG9iYWxfZG5zX2NhY2hlID0gKDAgIT0gYXJnKSA/IFRSVUUgOiBGQUxTRTsKICAgICBicmVhazsKICAgY2FzZSBDVVJMT1BUX1NTTF9DSVBIRVJfTElTVDoKICAgICAvKiBzZXQgYSBsaXN0IG9mIGNpcGhlciB3ZSB3YW50IHRvIHVzZSBpbiB0aGUgU1NMIGNvbm5lY3Rpb24gKi8KQEAgLTc0MSwzMyArNzM2LDMzIEBACiAgICAgICogV2hlbiB0aGlzIHRyYW5zZmVyIGlzIGRvbmUsIGl0IG11c3Qgbm90IGJlIGxlZnQgdG8gYmUgcmV1c2VkIGJ5IGEKICAgICAgKiBzdWJzZXF1ZW50IHRyYW5zZmVyIGJ1dCBzaGFsbCBiZSBjbG9zZWQgaW1tZWRpYXRlbHkuCiAgICAgICovCi0gICAgZGF0YS0+c2V0LnJldXNlX2ZvcmJpZCA9ICgwICE9IHZhX2FyZyhwYXJhbSwgbG9uZykpP1RSVUU6RkFMU0U7CisgICAgZGF0YS0+c2V0LnJldXNlX2ZvcmJpZCA9ICgwICE9IHZhX2FyZyhwYXJhbSwgbG9uZykpID8gVFJVRSA6IEZBTFNFOwogICAgIGJyZWFrOwogICBjYXNlIENVUkxPUFRfRlJFU0hfQ09OTkVDVDoKICAgICAvKgogICAgICAqIFRoaXMgdHJhbnNmZXIgc2hhbGwgbm90IHVzZSBhIHByZXZpb3VzbHkgY2FjaGVkIGNvbm5lY3Rpb24gYnV0CiAgICAgICogc2hvdWxkIGJlIG1hZGUgd2l0aCBhIGZyZXNoIG5ldyBjb25uZWN0IQogICAgICAqLwotICAgIGRhdGEtPnNldC5yZXVzZV9mcmVzaCA9ICgwICE9IHZhX2FyZyhwYXJhbSwgbG9uZykpP1RSVUU6RkFMU0U7CisgICAgZGF0YS0+c2V0LnJldXNlX2ZyZXNoID0gKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSkgPyBUUlVFIDogRkFMU0U7CiAgICAgYnJlYWs7CiAgIGNhc2UgQ1VSTE9QVF9WRVJCT1NFOgogICAgIC8qCiAgICAgICogVmVyYm9zZSBtZWFucyBpbmZvZigpIGNhbGxzIHRoYXQgZ2l2ZSBhIGxvdCBvZiBpbmZvcm1hdGlvbiBhYm91dAogICAgICAqIHRoZSBjb25uZWN0aW9uIGFuZCB0cmFuc2ZlciBwcm9jZWR1cmVzIGFzIHdlbGwgYXMgaW50ZXJuYWwgY2hvaWNlcy4KICAgICAgKi8KLSAgICBkYXRhLT5zZXQudmVyYm9zZSA9ICgwICE9IHZhX2FyZyhwYXJhbSwgbG9uZykpP1RSVUU6RkFMU0U7CisgICAgZGF0YS0+c2V0LnZlcmJvc2UgPSAoMCAhPSB2YV9hcmcocGFyYW0sIGxvbmcpKSA/IFRSVUUgOiBGQUxTRTsKICAgICBicmVhazsKICAgY2FzZSBDVVJMT1BUX0hFQURFUjoKICAgICAvKgogICAgICAqIFNldCB0byBpbmNsdWRlIHRoZSBoZWFkZXIgaW4gdGhlIGdlbmVyYWwgZGF0YSBvdXRwdXQgc3RyZWFtLgogICAgICAqLwotICAgIGRhdGEtPnNldC5pbmNsdWRlX2hlYWRlciA9ICgwICE9IHZhX2FyZyhwYXJhbSwgbG9uZykpP1RSVUU6RkFMU0U7CisgICAgZGF0YS0+c2V0LmluY2x1ZGVfaGVhZGVyID0gKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSkgPyBUUlVFIDogRkFMU0U7CiAgICAgYnJlYWs7CiAgIGNhc2UgQ1VSTE9QVF9OT1BST0dSRVNTOgogICAgIC8qCiAgICAgICogU2h1dCBvZmYgdGhlIGludGVybmFsIHN1cHBvcnRlZCBwcm9ncmVzcyBtZXRlcgogICAgICAqLwotICAgIGRhdGEtPnNldC5oaWRlX3Byb2dyZXNzID0gKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSk/VFJVRTpGQUxTRTsKKyAgICBkYXRhLT5zZXQuaGlkZV9wcm9ncmVzcyA9ICgwICE9IHZhX2FyZyhwYXJhbSwgbG9uZykpID8gVFJVRSA6IEZBTFNFOwogICAgIGlmKGRhdGEtPnNldC5oaWRlX3Byb2dyZXNzKQogICAgICAgZGF0YS0+cHJvZ3Jlc3MuZmxhZ3MgfD0gUEdSU19ISURFOwogICAgIGVsc2UKQEAgLTc3NywxNCArNzcyLDE0IEBACiAgICAgLyoKICAgICAgKiBEbyBub3QgaW5jbHVkZSB0aGUgYm9keSBwYXJ0IGluIHRoZSBvdXRwdXQgZGF0YSBzdHJlYW0uCiAgICAgICovCi0gICAgZGF0YS0+c2V0Lm9wdF9ub19ib2R5ID0gKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSk/VFJVRTpGQUxTRTsKKyAgICBkYXRhLT5zZXQub3B0X25vX2JvZHkgPSAoMCAhPSB2YV9hcmcocGFyYW0sIGxvbmcpKSA/IFRSVUUgOiBGQUxTRTsKICAgICBicmVhazsKICAgY2FzZSBDVVJMT1BUX0ZBSUxPTkVSUk9SOgogICAgIC8qCiAgICAgICogRG9uJ3Qgb3V0cHV0IHRoZSA+PTQwMCBlcnJvciBjb2RlIEhUTUwtcGFnZSwgYnV0IGluc3RlYWQgb25seQogICAgICAqIHJldHVybiBlcnJvci4KICAgICAgKi8KLSAgICBkYXRhLT5zZXQuaHR0cF9mYWlsX29uX2Vycm9yID0gKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSk/VFJVRTpGQUxTRTsKKyAgICBkYXRhLT5zZXQuaHR0cF9mYWlsX29uX2Vycm9yID0gKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSkgPyBUUlVFIDogRkFMU0U7CiAgICAgYnJlYWs7CiAgIGNhc2UgQ1VSTE9QVF9VUExPQUQ6CiAgIGNhc2UgQ1VSTE9QVF9QVVQ6CkBAIC03OTIsNyArNzg3LDcgQEAKICAgICAgKiBXZSB3YW50IHRvIHNlbnQgZGF0YSB0byB0aGUgcmVtb3RlIGhvc3QuIElmIHRoaXMgaXMgSFRUUCwgdGhhdCBlcXVhbHMKICAgICAgKiB1c2luZyB0aGUgUFVUIHJlcXVlc3QuCiAgICAgICovCi0gICAgZGF0YS0+c2V0LnVwbG9hZCA9ICgwICE9IHZhX2FyZyhwYXJhbSwgbG9uZykpP1RSVUU6RkFMU0U7CisgICAgZGF0YS0+c2V0LnVwbG9hZCA9ICgwICE9IHZhX2FyZyhwYXJhbSwgbG9uZykpID8gVFJVRSA6IEZBTFNFOwogICAgIGlmKGRhdGEtPnNldC51cGxvYWQpIHsKICAgICAgIC8qIElmIHRoaXMgaXMgSFRUUCwgUFVUIGlzIHdoYXQncyBuZWVkZWQgdG8gInVwbG9hZCIgKi8KICAgICAgIGRhdGEtPnNldC5odHRwcmVxID0gSFRUUFJFUV9QVVQ7CkBAIC04MDgsNyArODAzLDcgQEAKICAgICAgKiBUcnkgdG8gZ2V0IHRoZSBmaWxlIHRpbWUgb2YgdGhlIHJlbW90ZSBkb2N1bWVudC4gVGhlIHRpbWUgd2lsbAogICAgICAqIGxhdGVyIChwb3NzaWJseSkgYmVjb21lIGF2YWlsYWJsZSB1c2luZyBjdXJsX2Vhc3lfZ2V0aW5mbygpLgogICAgICAqLwotICAgIGRhdGEtPnNldC5nZXRfZmlsZXRpbWUgPSAoMCAhPSB2YV9hcmcocGFyYW0sIGxvbmcpKT9UUlVFOkZBTFNFOworICAgIGRhdGEtPnNldC5nZXRfZmlsZXRpbWUgPSAoMCAhPSB2YV9hcmcocGFyYW0sIGxvbmcpKSA/IFRSVUUgOiBGQUxTRTsKICAgICBicmVhazsKICAgY2FzZSBDVVJMT1BUX0ZUUF9DUkVBVEVfTUlTU0lOR19ESVJTOgogICAgIC8qCkBAIC04MzYsMTEgKzgzMSwxOCBAQAogICAgICAqIE9wdGlvbiB0aGF0IHNwZWNpZmllcyBob3cgcXVpY2tseSBhbiBzZXJ2ZXIgcmVzcG9uc2UgbXVzdCBiZSBvYnRhaW5lZAogICAgICAqIGJlZm9yZSBpdCBpcyBjb25zaWRlcmVkIGZhaWx1cmUuIEZvciBwaW5ncG9uZyBwcm90b2NvbHMuCiAgICAgICovCi0gICAgZGF0YS0+c2V0LnNlcnZlcl9yZXNwb25zZV90aW1lb3V0ID0gdmFfYXJnKCBwYXJhbSAsIGxvbmcgKSAqIDEwMDA7CisgICAgZGF0YS0+c2V0LnNlcnZlcl9yZXNwb25zZV90aW1lb3V0ID0gdmFfYXJnKHBhcmFtLCBsb25nKSAqIDEwMDA7CisgICAgYnJlYWs7CisgIGNhc2UgQ1VSTE9QVF9URlRQX05PX09QVElPTlM6CisgICAgLyoKKyAgICAgKiBPcHRpb24gdGhhdCBwcmV2ZW50cyBsaWJjdXJsIGZyb20gc2VuZGluZyBURlRQIG9wdGlvbiByZXF1ZXN0cyB0byB0aGUKKyAgICAgKiBzZXJ2ZXIuCisgICAgICovCisgICAgZGF0YS0+c2V0LnRmdHBfbm9fb3B0aW9ucyA9IHZhX2FyZyhwYXJhbSwgbG9uZykgIT0gMDsKICAgICBicmVhazsKICAgY2FzZSBDVVJMT1BUX1RGVFBfQkxLU0laRToKICAgICAvKgotICAgICAqIFRGVFAgb3B0aW9uIHRoYXQgc3BlY2lmaWVzIHRoZSBibG9jayBzaXplIHRvIHVzZSBmb3IgZGF0YSB0cmFuc21pc3Npb24KKyAgICAgKiBURlRQIG9wdGlvbiB0aGF0IHNwZWNpZmllcyB0aGUgYmxvY2sgc2l6ZSB0byB1c2UgZm9yIGRhdGEgdHJhbnNtaXNzaW9uLgogICAgICAqLwogICAgIGRhdGEtPnNldC50ZnRwX2Jsa3NpemUgPSB2YV9hcmcocGFyYW0sIGxvbmcpOwogICAgIGJyZWFrOwpAQCAtODQ5LDEzICs4NTEsMTMgQEAKICAgICAgKiBBbiBvcHRpb24gdGhhdCBjaGFuZ2VzIHRoZSBjb21tYW5kIHRvIG9uZSB0aGF0IGFza3MgZm9yIGEgbGlzdAogICAgICAqIG9ubHksIG5vIGZpbGUgaW5mbyBkZXRhaWxzLgogICAgICAqLwotICAgIGRhdGEtPnNldC5mdHBfbGlzdF9vbmx5ID0gKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSk/VFJVRTpGQUxTRTsKKyAgICBkYXRhLT5zZXQuZnRwX2xpc3Rfb25seSA9ICgwICE9IHZhX2FyZyhwYXJhbSwgbG9uZykpID8gVFJVRSA6IEZBTFNFOwogICAgIGJyZWFrOwogICBjYXNlIENVUkxPUFRfQVBQRU5EOgogICAgIC8qCiAgICAgICogV2Ugd2FudCB0byB1cGxvYWQgYW5kIGFwcGVuZCB0byBhbiBleGlzdGluZyBmaWxlLgogICAgICAqLwotICAgIGRhdGEtPnNldC5mdHBfYXBwZW5kID0gKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSk/VFJVRTpGQUxTRTsKKyAgICBkYXRhLT5zZXQuZnRwX2FwcGVuZCA9ICgwICE9IHZhX2FyZyhwYXJhbSwgbG9uZykpID8gVFJVRSA6IEZBTFNFOwogICAgIGJyZWFrOwogICBjYXNlIENVUkxPUFRfRlRQX0ZJTEVNRVRIT0Q6CiAgICAgLyoKQEAgLTg4Myw3ICs4ODUsNyBAQAogICAgICAqCiAgICAgICogVHJhbnNmZXIgdXNpbmcgQVNDSUkgKGluc3RlYWQgb2YgQklOQVJZKS4KICAgICAgKi8KLSAgICBkYXRhLT5zZXQucHJlZmVyX2FzY2lpID0gKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSk/VFJVRTpGQUxTRTsKKyAgICBkYXRhLT5zZXQucHJlZmVyX2FzY2lpID0gKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSkgPyBUUlVFIDogRkFMU0U7CiAgICAgYnJlYWs7CiAgIGNhc2UgQ1VSTE9QVF9USU1FQ09ORElUSU9OOgogICAgIC8qCkBAIC05MTYsNyArOTE4LDcgQEAKICAgICAvKgogICAgICAqIFN3aXRjaCBvbiBhdXRvbWF0aWMgcmVmZXJlciB0aGF0IGdldHMgc2V0IGlmIGN1cmwgZm9sbG93cyBsb2NhdGlvbnMuCiAgICAgICovCi0gICAgZGF0YS0+c2V0Lmh0dHBfYXV0b19yZWZlcmVyID0gKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSk/VFJVRTpGQUxTRTsKKyAgICBkYXRhLT5zZXQuaHR0cF9hdXRvX3JlZmVyZXIgPSAoMCAhPSB2YV9hcmcocGFyYW0sIGxvbmcpKSA/IFRSVUUgOiBGQUxTRTsKICAgICBicmVhazsKIAogICBjYXNlIENVUkxPUFRfQUNDRVBUX0VOQ09ESU5HOgpAQCAtOTMyLDE4ICs5MzQsMTkgQEAKICAgICBhcmdwdHIgPSB2YV9hcmcocGFyYW0sIGNoYXIgKik7CiAgICAgcmVzdWx0ID0gc2V0c3Ryb3B0KCZkYXRhLT5zZXQuc3RyW1NUUklOR19FTkNPRElOR10sCiAgICAgICAgICAgICAgICAgICAgICAgIChhcmdwdHIgJiYgISphcmdwdHIpPwotICAgICAgICAgICAgICAgICAgICAgICAoY2hhciAqKSBBTExfQ09OVEVOVF9FTkNPRElOR1M6IGFyZ3B0cik7CisgICAgICAgICAgICAgICAgICAgICAgIEFMTF9DT05URU5UX0VOQ09ESU5HUzogYXJncHRyKTsKICAgICBicmVhazsKIAogICBjYXNlIENVUkxPUFRfVFJBTlNGRVJfRU5DT0RJTkc6Ci0gICAgZGF0YS0+c2V0Lmh0dHBfdHJhbnNmZXJfZW5jb2RpbmcgPSAoMCAhPSB2YV9hcmcocGFyYW0sIGxvbmcpKT9UUlVFOkZBTFNFOworICAgIGRhdGEtPnNldC5odHRwX3RyYW5zZmVyX2VuY29kaW5nID0gKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSkgPworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSA6IEZBTFNFOwogICAgIGJyZWFrOwogCiAgIGNhc2UgQ1VSTE9QVF9GT0xMT1dMT0NBVElPTjoKICAgICAvKgogICAgICAqIEZvbGxvdyBMb2NhdGlvbjogaGVhZGVyIGhpbnRzIG9uIGEgSFRUUC1zZXJ2ZXIuCiAgICAgICovCi0gICAgZGF0YS0+c2V0Lmh0dHBfZm9sbG93X2xvY2F0aW9uID0gKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSk/VFJVRTpGQUxTRTsKKyAgICBkYXRhLT5zZXQuaHR0cF9mb2xsb3dfbG9jYXRpb24gPSAoMCAhPSB2YV9hcmcocGFyYW0sIGxvbmcpKSA/IFRSVUUgOiBGQUxTRTsKICAgICBicmVhazsKIAogICBjYXNlIENVUkxPUFRfVU5SRVNUUklDVEVEX0FVVEg6CkBAIC05NTIsNyArOTU1LDcgQEAKICAgICAgKiBob3N0bmFtZSBjaGFuZ2VkLgogICAgICAqLwogICAgIGRhdGEtPnNldC5odHRwX2Rpc2FibGVfaG9zdG5hbWVfY2hlY2tfYmVmb3JlX2F1dGhlbnRpY2F0aW9uID0KLSAgICAgICgwICE9IHZhX2FyZyhwYXJhbSwgbG9uZykpP1RSVUU6RkFMU0U7CisgICAgICAoMCAhPSB2YV9hcmcocGFyYW0sIGxvbmcpKSA/IFRSVUUgOiBGQUxTRTsKICAgICBicmVhazsKIAogICBjYXNlIENVUkxPUFRfTUFYUkVESVJTOgpAQCAtMTIxMyw3ICsxMjE2LDcgQEAKICAgICAgKiBXZSBydW4gbW9zdGx5IHdpdGggdGhlIG9yaWdpbmFsIGNvb2tpZSBzcGVjLCBhcyBoYXJkbHkgYW55b25lIGltcGxlbWVudHMKICAgICAgKiBhbnl0aGluZyBlbHNlLgogICAgICAqLwotICAgIGRhdGEtPnNldC5jb29raWVzZXNzaW9uID0gKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSk/VFJVRTpGQUxTRTsKKyAgICBkYXRhLT5zZXQuY29va2llc2Vzc2lvbiA9ICgwICE9IHZhX2FyZyhwYXJhbSwgbG9uZykpID8gVFJVRSA6IEZBTFNFOwogICAgIGJyZWFrOwogCiAgIGNhc2UgQ1VSTE9QVF9DT09LSUVMSVNUOgpAQCAtMTI5MCw3ICsxMjkzLDcgQEAKICAgICAgKi8KICAgICBhcmcgPSB2YV9hcmcocGFyYW0sIGxvbmcpOwogI2lmbmRlZiBVU0VfTkdIVFRQMgotICAgIGlmKGFyZyA9PSBDVVJMX0hUVFBfVkVSU0lPTl8yXzApCisgICAgaWYoYXJnID49IENVUkxfSFRUUF9WRVJTSU9OXzIpCiAgICAgICByZXR1cm4gQ1VSTEVfVU5TVVBQT1JURURfUFJPVE9DT0w7CiAjZW5kaWYKICAgICBkYXRhLT5zZXQuaHR0cHZlcnNpb24gPSBhcmc7CkBAIC0xMzEyLDcgKzEzMTUsNyBAQAogCiAgICAgLyogdGhlIERJR0VTVF9JRSBiaXQgaXMgb25seSB1c2VkIHRvIHNldCBhIHNwZWNpYWwgbWFya2VyLCBmb3IgYWxsIHRoZQogICAgICAgIHJlc3Qgd2UgbmVlZCB0byBoYW5kbGUgaXQgYXMgbm9ybWFsIERJR0VTVCAqLwotICAgIGRhdGEtPnN0YXRlLmF1dGhob3N0Lmllc3R5bGUgPSAoYXV0aCAmIENVUkxBVVRIX0RJR0VTVF9JRSk/VFJVRTpGQUxTRTsKKyAgICBkYXRhLT5zdGF0ZS5hdXRoaG9zdC5pZXN0eWxlID0gKGF1dGggJiBDVVJMQVVUSF9ESUdFU1RfSUUpID8gVFJVRSA6IEZBTFNFOwogCiAgICAgaWYoYXV0aCAmIENVUkxBVVRIX0RJR0VTVF9JRSkgewogICAgICAgYXV0aCB8PSBDVVJMQVVUSF9ESUdFU1Q7IC8qIHNldCBzdGFuZGFyZCBkaWdlc3QgYml0ICovCkBAIC0xMzc1LDcgKzEzNzgsOCBAQAogICAgIC8qCiAgICAgICogVHVubmVsIG9wZXJhdGlvbnMgdGhyb3VnaCB0aGUgcHJveHkgaW5zdGVhZCBvZiBub3JtYWwgcHJveHkgdXNlCiAgICAgICovCi0gICAgZGF0YS0+c2V0LnR1bm5lbF90aHJ1X2h0dHBwcm94eSA9ICgwICE9IHZhX2FyZyhwYXJhbSwgbG9uZykpP1RSVUU6RkFMU0U7CisgICAgZGF0YS0+c2V0LnR1bm5lbF90aHJ1X2h0dHBwcm94eSA9ICgwICE9IHZhX2FyZyhwYXJhbSwgbG9uZykpID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSA6IEZBTFNFOwogICAgIGJyZWFrOwogCiAgIGNhc2UgQ1VSTE9QVF9QUk9YWVBPUlQ6CkBAIC0xNDAxLDcgKzE0MDUsNyBAQAogCiAgICAgLyogdGhlIERJR0VTVF9JRSBiaXQgaXMgb25seSB1c2VkIHRvIHNldCBhIHNwZWNpYWwgbWFya2VyLCBmb3IgYWxsIHRoZQogICAgICAgIHJlc3Qgd2UgbmVlZCB0byBoYW5kbGUgaXQgYXMgbm9ybWFsIERJR0VTVCAqLwotICAgIGRhdGEtPnN0YXRlLmF1dGhwcm94eS5pZXN0eWxlID0gKGF1dGggJiBDVVJMQVVUSF9ESUdFU1RfSUUpP1RSVUU6RkFMU0U7CisgICAgZGF0YS0+c3RhdGUuYXV0aHByb3h5Lmllc3R5bGUgPSAoYXV0aCAmIENVUkxBVVRIX0RJR0VTVF9JRSkgPyBUUlVFIDogRkFMU0U7CiAKICAgICBpZihhdXRoICYgQ1VSTEFVVEhfRElHRVNUX0lFKSB7CiAgICAgICBhdXRoIHw9IENVUkxBVVRIX0RJR0VTVDsgLyogc2V0IHN0YW5kYXJkIGRpZ2VzdCBiaXQgKi8KQEAgLTE0NzYsMzIgKzE0ODAsMjggQEAKICNlbmRpZiAgIC8qIENVUkxfRElTQUJMRV9QUk9YWSAqLwogCiAjaWYgZGVmaW5lZChIQVZFX0dTU0FQSSkgfHwgZGVmaW5lZChVU0VfV0lORE9XU19TU1BJKQotICBjYXNlIENVUkxPUFRfU09DS1M1X0dTU0FQSV9TRVJWSUNFOgorICBjYXNlIENVUkxPUFRfU09DS1M1X0dTU0FQSV9ORUM6CiAgICAgLyoKLSAgICAgKiBTZXQgR1NTLUFQSSBzZXJ2aWNlIG5hbWUKKyAgICAgKiBTZXQgZmxhZyBmb3IgTkVDIFNPQ0s1IHN1cHBvcnQKICAgICAgKi8KLSAgICByZXN1bHQgPSBzZXRzdHJvcHQoJmRhdGEtPnNldC5zdHJbU1RSSU5HX1NPQ0tTNV9HU1NBUElfU0VSVklDRV0sCi0gICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZyhwYXJhbSwgY2hhciAqKSk7CisgICAgZGF0YS0+c2V0LnNvY2tzNV9nc3NhcGlfbmVjID0gKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSkgPyBUUlVFIDogRkFMU0U7CiAgICAgYnJlYWs7CiAKKyAgY2FzZSBDVVJMT1BUX1NPQ0tTNV9HU1NBUElfU0VSVklDRToKICAgY2FzZSBDVVJMT1BUX1BST1hZX1NFUlZJQ0VfTkFNRToKICAgICAvKgotICAgICAqIFNldCBuZWdvdGlhdGUgcHJveHkgc2VydmljZSBuYW1lCisgICAgICogU2V0IHByb3h5IGF1dGhlbnRpY2F0aW9uIHNlcnZpY2UgbmFtZSBmb3IgS2VyYmVyb3MgNSBhbmQgU1BORUdPCiAgICAgICovCiAgICAgcmVzdWx0ID0gc2V0c3Ryb3B0KCZkYXRhLT5zZXQuc3RyW1NUUklOR19QUk9YWV9TRVJWSUNFX05BTUVdLAogICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcocGFyYW0sIGNoYXIgKikpOwogICAgIGJyZWFrOworI2VuZGlmCiAKLSAgY2FzZSBDVVJMT1BUX1NPQ0tTNV9HU1NBUElfTkVDOgotICAgIC8qCi0gICAgICogc2V0IGZsYWcgZm9yIG5lYyBzb2NrczUgc3VwcG9ydAotICAgICAqLwotICAgIGRhdGEtPnNldC5zb2NrczVfZ3NzYXBpX25lYyA9ICgwICE9IHZhX2FyZyhwYXJhbSwgbG9uZykpP1RSVUU6RkFMU0U7Ci0gICAgYnJlYWs7Ci0KKyNpZiAhZGVmaW5lZChDVVJMX0RJU0FCTEVfQ1JZUFRPX0FVVEgpIHx8IGRlZmluZWQoVVNFX0tFUkJFUk9TNSkgfHwgXAorICAgIGRlZmluZWQoVVNFX1NQTkVHTykKICAgY2FzZSBDVVJMT1BUX1NFUlZJQ0VfTkFNRToKICAgICAvKgotICAgICAqIFNldCBuZWdvdGlhdGUgc2VydmljZSBpZGVudGl0eQorICAgICAqIFNldCBhdXRoZW50aWNhdGlvbiBzZXJ2aWNlIG5hbWUgZm9yIERJR0VTVC1NRDUsIEtlcmJlcm9zIDUgYW5kIFNQTkVHTwogICAgICAqLwogICAgIHJlc3VsdCA9IHNldHN0cm9wdCgmZGF0YS0+c2V0LnN0cltTVFJJTkdfU0VSVklDRV9OQU1FXSwKICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKHBhcmFtLCBjaGFyICopKTsKQEAgLTE1MzUsMjAgKzE1MzUsMTkgQEAKICAgICAgKi8KICAgICByZXN1bHQgPSBzZXRzdHJvcHQoJmRhdGEtPnNldC5zdHJbU1RSSU5HX0ZUUFBPUlRdLAogICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcocGFyYW0sIGNoYXIgKikpOwotICAgIGRhdGEtPnNldC5mdHBfdXNlX3BvcnQgPSAoTlVMTCAhPSBkYXRhLT5zZXQuc3RyW1NUUklOR19GVFBQT1JUXSkgPwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFOkZBTFNFOworICAgIGRhdGEtPnNldC5mdHBfdXNlX3BvcnQgPSAoZGF0YS0+c2V0LnN0cltTVFJJTkdfRlRQUE9SVF0pID8gVFJVRSA6IEZBTFNFOwogICAgIGJyZWFrOwogCiAgIGNhc2UgQ1VSTE9QVF9GVFBfVVNFX0VQUlQ6Ci0gICAgZGF0YS0+c2V0LmZ0cF91c2VfZXBydCA9ICgwICE9IHZhX2FyZyhwYXJhbSwgbG9uZykpP1RSVUU6RkFMU0U7CisgICAgZGF0YS0+c2V0LmZ0cF91c2VfZXBydCA9ICgwICE9IHZhX2FyZyhwYXJhbSwgbG9uZykpID8gVFJVRSA6IEZBTFNFOwogICAgIGJyZWFrOwogCiAgIGNhc2UgQ1VSTE9QVF9GVFBfVVNFX0VQU1Y6Ci0gICAgZGF0YS0+c2V0LmZ0cF91c2VfZXBzdiA9ICgwICE9IHZhX2FyZyhwYXJhbSwgbG9uZykpP1RSVUU6RkFMU0U7CisgICAgZGF0YS0+c2V0LmZ0cF91c2VfZXBzdiA9ICgwICE9IHZhX2FyZyhwYXJhbSwgbG9uZykpID8gVFJVRSA6IEZBTFNFOwogICAgIGJyZWFrOwogCiAgIGNhc2UgQ1VSTE9QVF9GVFBfVVNFX1BSRVQ6Ci0gICAgZGF0YS0+c2V0LmZ0cF91c2VfcHJldCA9ICgwICE9IHZhX2FyZyhwYXJhbSwgbG9uZykpP1RSVUU6RkFMU0U7CisgICAgZGF0YS0+c2V0LmZ0cF91c2VfcHJldCA9ICgwICE9IHZhX2FyZyhwYXJhbSwgbG9uZykpID8gVFJVRSA6IEZBTFNFOwogICAgIGJyZWFrOwogCiAgIGNhc2UgQ1VSTE9QVF9GVFBfU1NMX0NDQzoKQEAgLTE1NjAsNyArMTU1OSw3IEBACiAgICAgICogRW5hYmxlIG9yIGRpc2FibGUgRlRQX1NLSVBfUEFTVl9JUCwgd2hpY2ggd2lsbCBkaXNhYmxlL2VuYWJsZSB0aGUKICAgICAgKiBieXBhc3Mgb2YgdGhlIElQIGFkZHJlc3MgaW4gUEFTViByZXNwb25zZXMuCiAgICAgICovCi0gICAgZGF0YS0+c2V0LmZ0cF9za2lwX2lwID0gKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSk/VFJVRTpGQUxTRTsKKyAgICBkYXRhLT5zZXQuZnRwX3NraXBfaXAgPSAoMCAhPSB2YV9hcmcocGFyYW0sIGxvbmcpKSA/IFRSVUUgOiBGQUxTRTsKICAgICBicmVhazsKIAogICBjYXNlIENVUkxPUFRfUkVBRERBVEE6CkBAIC0xNTY4LDcgKzE1NjcsNyBAQAogICAgICAqIEZJTEUgcG9pbnRlciB0byByZWFkIHRoZSBmaWxlIHRvIGJlIHVwbG9hZGVkIGZyb20uIE9yIHBvc3NpYmx5CiAgICAgICogdXNlZCBhcyBhcmd1bWVudCB0byB0aGUgcmVhZCBjYWxsYmFjay4KICAgICAgKi8KLSAgICBkYXRhLT5zZXQuaW4gPSB2YV9hcmcocGFyYW0sIHZvaWQgKik7CisgICAgZGF0YS0+c2V0LmluX3NldCA9IHZhX2FyZyhwYXJhbSwgdm9pZCAqKTsKICAgICBicmVhazsKICAgY2FzZSBDVVJMT1BUX0lORklMRVNJWkU6CiAgICAgLyoKQEAgLTE2OTYsNyArMTY5NSw3IEBACiAKICAgY2FzZSBDVVJMT1BUX1hPQVVUSDJfQkVBUkVSOgogICAgIC8qCi0gICAgICogWE9BVVRIMiBiZWFyZXIgdG9rZW4gdG8gdXNlIGluIHRoZSBvcGVyYXRpb24KKyAgICAgKiBPQXV0aCAyLjAgYmVhcmVyIHRva2VuIHRvIHVzZSBpbiB0aGUgb3BlcmF0aW9uCiAgICAgICovCiAgICAgcmVzdWx0ID0gc2V0c3Ryb3B0KCZkYXRhLT5zZXQuc3RyW1NUUklOR19CRUFSRVJdLAogICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcocGFyYW0sIGNoYXIgKikpOwpAQCAtMTg2MywxMSArMTg2MiwxMSBAQAogICAgIC8qCiAgICAgICogUmVhZCBkYXRhIGNhbGxiYWNrCiAgICAgICovCi0gICAgZGF0YS0+c2V0LmZyZWFkX2Z1bmMgPSB2YV9hcmcocGFyYW0sIGN1cmxfcmVhZF9jYWxsYmFjayk7Ci0gICAgaWYoIWRhdGEtPnNldC5mcmVhZF9mdW5jKSB7CisgICAgZGF0YS0+c2V0LmZyZWFkX2Z1bmNfc2V0ID0gdmFfYXJnKHBhcmFtLCBjdXJsX3JlYWRfY2FsbGJhY2spOworICAgIGlmKCFkYXRhLT5zZXQuZnJlYWRfZnVuY19zZXQpIHsKICAgICAgIGRhdGEtPnNldC5pc19mcmVhZF9zZXQgPSAwOwogICAgICAgLyogV2hlbiBzZXQgdG8gTlVMTCwgcmVzZXQgdG8gb3VyIGludGVybmFsIGRlZmF1bHQgZnVuY3Rpb24gKi8KLSAgICAgIGRhdGEtPnNldC5mcmVhZF9mdW5jID0gKGN1cmxfcmVhZF9jYWxsYmFjaylmcmVhZDsKKyAgICAgIGRhdGEtPnNldC5mcmVhZF9mdW5jX3NldCA9IChjdXJsX3JlYWRfY2FsbGJhY2spZnJlYWQ7CiAgICAgfQogICAgIGVsc2UKICAgICAgIGRhdGEtPnNldC5pc19mcmVhZF9zZXQgPSAxOwpAQCAtMTk2OCw3ICsxOTY3LDcgQEAKICAgICAvKgogICAgICAqIEtsdWRneSBvcHRpb24gdG8gZW5hYmxlIENSTEYgY29udmVyc2lvbnMuIFN1YmplY3QgZm9yIHJlbW92YWwuCiAgICAgICovCi0gICAgZGF0YS0+c2V0LmNybGYgPSAoMCAhPSB2YV9hcmcocGFyYW0sIGxvbmcpKT9UUlVFOkZBTFNFOworICAgIGRhdGEtPnNldC5jcmxmID0gKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSkgPyBUUlVFIDogRkFMU0U7CiAgICAgYnJlYWs7CiAKICAgY2FzZSBDVVJMT1BUX0lOVEVSRkFDRToKQEAgLTE5OTcsNyArMTk5Niw3IEBACiAgICAgICovCiAgICAgcmVzdWx0ID0gc2V0c3Ryb3B0KCZkYXRhLT5zZXQuc3RyW1NUUklOR19LUkJfTEVWRUxdLAogICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcocGFyYW0sIGNoYXIgKikpOwotICAgIGRhdGEtPnNldC5rcmIgPSAoTlVMTCAhPSBkYXRhLT5zZXQuc3RyW1NUUklOR19LUkJfTEVWRUxdKT9UUlVFOkZBTFNFOworICAgIGRhdGEtPnNldC5rcmIgPSAoZGF0YS0+c2V0LnN0cltTVFJJTkdfS1JCX0xFVkVMXSkgPyBUUlVFIDogRkFMU0U7CiAgICAgYnJlYWs7CiAgIGNhc2UgQ1VSTE9QVF9HU1NBUElfREVMRUdBVElPTjoKICAgICAvKgpAQCAtMjAwOSw3ICsyMDA4LDcgQEAKICAgICAvKgogICAgICAqIEVuYWJsZSBwZWVyIFNTTCB2ZXJpZnlpbmcuCiAgICAgICovCi0gICAgZGF0YS0+c2V0LnNzbC52ZXJpZnlwZWVyID0gKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSk/VFJVRTpGQUxTRTsKKyAgICBkYXRhLT5zZXQuc3NsLnZlcmlmeXBlZXIgPSAoMCAhPSB2YV9hcmcocGFyYW0sIGxvbmcpKSA/IFRSVUUgOiBGQUxTRTsKICAgICBicmVhazsKICAgY2FzZSBDVVJMT1BUX1NTTF9WRVJJRllIT1NUOgogICAgIC8qCkBAIC0yMDI3LDcgKzIwMjYsNyBAQAogICAgICAgcmV0dXJuIENVUkxFX0JBRF9GVU5DVElPTl9BUkdVTUVOVDsKICAgICB9CiAKLSAgICBkYXRhLT5zZXQuc3NsLnZlcmlmeWhvc3QgPSAoMCAhPSBhcmcpP1RSVUU6RkFMU0U7CisgICAgZGF0YS0+c2V0LnNzbC52ZXJpZnlob3N0ID0gKDAgIT0gYXJnKSA/IFRSVUUgOiBGQUxTRTsKICAgICBicmVhazsKICAgY2FzZSBDVVJMT1BUX1NTTF9WRVJJRllTVEFUVVM6CiAgICAgLyoKQEAgLTIwMzgsNyArMjAzNyw3IEBACiAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBkYXRhLT5zZXQuc3NsLnZlcmlmeXN0YXR1cyA9ICgwICE9IHZhX2FyZyhwYXJhbSwgbG9uZykpP1RSVUU6RkFMU0U7CisgICAgZGF0YS0+c2V0LnNzbC52ZXJpZnlzdGF0dXMgPSAoMCAhPSB2YV9hcmcocGFyYW0sIGxvbmcpKSA/IFRSVUUgOiBGQUxTRTsKICAgICBicmVhazsKICAgY2FzZSBDVVJMT1BUX1NTTF9DVFhfRlVOQ1RJT046CiAjaWZkZWYgaGF2ZV9jdXJsc3NsX3NzbF9jdHgKQEAgLTIwNjksMjIgKzIwNjgsMjYgQEAKICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGRhdGEtPnNldC5zc2wuZmFsc2VzdGFydCA9ICgwICE9IHZhX2FyZyhwYXJhbSwgbG9uZykpP1RSVUU6RkFMU0U7CisgICAgZGF0YS0+c2V0LnNzbC5mYWxzZXN0YXJ0ID0gKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSkgPyBUUlVFIDogRkFMU0U7CiAgICAgYnJlYWs7CiAgIGNhc2UgQ1VSTE9QVF9DRVJUSU5GTzoKICNpZmRlZiBoYXZlX2N1cmxzc2xfY2VydGluZm8KLSAgICBkYXRhLT5zZXQuc3NsLmNlcnRpbmZvID0gKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSk/VFJVRTpGQUxTRTsKKyAgICBkYXRhLT5zZXQuc3NsLmNlcnRpbmZvID0gKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSkgPyBUUlVFIDogRkFMU0U7CiAjZWxzZQogICAgIHJlc3VsdCA9IENVUkxFX05PVF9CVUlMVF9JTjsKICNlbmRpZgogICAgIGJyZWFrOwogICBjYXNlIENVUkxPUFRfUElOTkVEUFVCTElDS0VZOgorI2lmZGVmIGhhdmVfY3VybHNzbF9waW5uZWRwdWJrZXkgLyogb25seSBieSBzdXBwb3J0ZWQgYmFja2VuZHMgKi8KICAgICAvKgogICAgICAqIFNldCBwaW5uZWQgcHVibGljIGtleSBmb3IgU1NMIGNvbm5lY3Rpb24uCiAgICAgICogU3BlY2lmeSBmaWxlIG5hbWUgb2YgdGhlIHB1YmxpYyBrZXkgaW4gREVSIGZvcm1hdC4KICAgICAgKi8KICAgICByZXN1bHQgPSBzZXRzdHJvcHQoJmRhdGEtPnNldC5zdHJbU1RSSU5HX1NTTF9QSU5ORURQVUJMSUNLRVldLAogICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcocGFyYW0sIGNoYXIgKikpOworI2Vsc2UKKyAgICByZXN1bHQgPSBDVVJMRV9OT1RfQlVJTFRfSU47CisjZW5kaWYKICAgICBicmVhazsKICAgY2FzZSBDVVJMT1BUX0NBSU5GTzoKICAgICAvKgpAQCAtMjEzNiw3ICsyMTM5LDcgQEAKICAgICAgKi8KICAgICBkYXRhLT5zZXQuYnVmZmVyX3NpemUgPSB2YV9hcmcocGFyYW0sIGxvbmcpOwogCi0gICAgaWYoKGRhdGEtPnNldC5idWZmZXJfc2l6ZT4gKEJVRlNJWkUgLTEgKSkgfHwKKyAgICBpZigoZGF0YS0+c2V0LmJ1ZmZlcl9zaXplPiAoQlVGU0laRSAtMSkpIHx8CiAgICAgICAgKGRhdGEtPnNldC5idWZmZXJfc2l6ZSA8IDEpKQogICAgICAgZGF0YS0+c2V0LmJ1ZmZlcl9zaXplID0gMDsgLyogaHVnZSBpbnRlcm5hbCBkZWZhdWx0ICovCiAKQEAgLTIxNDcsNyArMjE1MCw3IEBACiAgICAgICogVGhlIGFwcGxpY2F0aW9uIGFza3Mgbm90IHRvIHNldCBhbnkgc2lnbmFsKCkgb3IgYWxhcm0oKSBoYW5kbGVycywKICAgICAgKiBldmVuIHdoZW4gdXNpbmcgYSB0aW1lb3V0LgogICAgICAqLwotICAgIGRhdGEtPnNldC5ub19zaWduYWwgPSAoMCAhPSB2YV9hcmcocGFyYW0sIGxvbmcpKT9UUlVFOkZBTFNFOworICAgIGRhdGEtPnNldC5ub19zaWduYWwgPSAoMCAhPSB2YV9hcmcocGFyYW0sIGxvbmcpKSA/IFRSVUUgOiBGQUxTRTsKICAgICBicmVhazsKIAogICBjYXNlIENVUkxPUFRfU0hBUkU6CkBAIC0yMjM1LDcgKzIyMzgsOCBAQAogCiAgIGNhc2UgQ1VSTE9QVF9TU0xfT1BUSU9OUzoKICAgICBhcmcgPSB2YV9hcmcocGFyYW0sIGxvbmcpOwotICAgIGRhdGEtPnNldC5zc2xfZW5hYmxlX2JlYXN0ID0gYXJnJkNVUkxTU0xPUFRfQUxMT1dfQkVBU1Q/VFJVRTpGQUxTRTsKKyAgICBkYXRhLT5zZXQuc3NsX2VuYWJsZV9iZWFzdCA9ICEhKGFyZyAmIENVUkxTU0xPUFRfQUxMT1dfQkVBU1QpOworICAgIGRhdGEtPnNldC5zc2xfbm9fcmV2b2tlID0gISEoYXJnICYgQ1VSTFNTTE9QVF9OT19SRVZPS0UpOwogICAgIGJyZWFrOwogCiAjZW5kaWYKQEAgLTIyNjIsNyArMjI2Niw3IEBACiAgICAgICogRW5hYmxlIG9yIGRpc2FibGUgVENQX05PREVMQVksIHdoaWNoIHdpbGwgZGlzYWJsZS9lbmFibGUgdGhlIE5hZ2xlCiAgICAgICogYWxnb3JpdGhtCiAgICAgICovCi0gICAgZGF0YS0+c2V0LnRjcF9ub2RlbGF5ID0gKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSk/VFJVRTpGQUxTRTsKKyAgICBkYXRhLT5zZXQudGNwX25vZGVsYXkgPSAoMCAhPSB2YV9hcmcocGFyYW0sIGxvbmcpKSA/IFRSVUUgOiBGQUxTRTsKICAgICBicmVhazsKIAogICBjYXNlIENVUkxPUFRfRlRQX0FDQ09VTlQ6CkBAIC0yMjcxLDE0ICsyMjc1LDE0IEBACiAgICAgYnJlYWs7CiAKICAgY2FzZSBDVVJMT1BUX0lHTk9SRV9DT05URU5UX0xFTkdUSDoKLSAgICBkYXRhLT5zZXQuaWdub3JlY2wgPSAoMCAhPSB2YV9hcmcocGFyYW0sIGxvbmcpKT9UUlVFOkZBTFNFOworICAgIGRhdGEtPnNldC5pZ25vcmVjbCA9ICgwICE9IHZhX2FyZyhwYXJhbSwgbG9uZykpID8gVFJVRSA6IEZBTFNFOwogICAgIGJyZWFrOwogCiAgIGNhc2UgQ1VSTE9QVF9DT05ORUNUX09OTFk6CiAgICAgLyoKICAgICAgKiBObyBkYXRhIHRyYW5zZmVyLCBzZXQgdXAgY29ubmVjdGlvbiBhbmQgbGV0IGFwcGxpY2F0aW9uIHVzZSB0aGUgc29ja2V0CiAgICAgICovCi0gICAgZGF0YS0+c2V0LmNvbm5lY3Rfb25seSA9ICgwICE9IHZhX2FyZyhwYXJhbSwgbG9uZykpP1RSVUU6RkFMU0U7CisgICAgZGF0YS0+c2V0LmNvbm5lY3Rfb25seSA9ICgwICE9IHZhX2FyZyhwYXJhbSwgbG9uZykpID8gVFJVRSA6IEZBTFNFOwogICAgIGJyZWFrOwogCiAgIGNhc2UgQ1VSTE9QVF9GVFBfQUxURVJOQVRJVkVfVE9fVVNFUjoKQEAgLTIzMzEsNyArMjMzNSw3IEBACiAgICAgYnJlYWs7CiAKICAgY2FzZSBDVVJMT1BUX1NTTF9TRVNTSU9OSURfQ0FDSEU6Ci0gICAgZGF0YS0+c2V0LnNzbC5zZXNzaW9uaWQgPSAoMCAhPSB2YV9hcmcocGFyYW0sIGxvbmcpKT9UUlVFOkZBTFNFOworICAgIGRhdGEtPnNldC5zc2wuc2Vzc2lvbmlkID0gKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSkgPyBUUlVFIDogRkFMU0U7CiAgICAgYnJlYWs7CiAKICNpZmRlZiBVU0VfTElCU1NIMgpAQCAtMjM5MiwxNCArMjM5NiwxNCBAQAogICAgIC8qCiAgICAgICogZGlzYWJsZSBsaWJjdXJsIHRyYW5zZmVyIGVuY29kaW5nIGlzIHVzZWQKICAgICAgKi8KLSAgICBkYXRhLT5zZXQuaHR0cF90ZV9za2lwID0gKDAgPT0gdmFfYXJnKHBhcmFtLCBsb25nKSk/VFJVRTpGQUxTRTsKKyAgICBkYXRhLT5zZXQuaHR0cF90ZV9za2lwID0gKDAgPT0gdmFfYXJnKHBhcmFtLCBsb25nKSkgPyBUUlVFIDogRkFMU0U7CiAgICAgYnJlYWs7CiAKICAgY2FzZSBDVVJMT1BUX0hUVFBfQ09OVEVOVF9ERUNPRElORzoKICAgICAvKgogICAgICAqIHJhdyBkYXRhIHBhc3NlZCB0byB0aGUgYXBwbGljYXRpb24gd2hlbiBjb250ZW50IGVuY29kaW5nIGlzIHVzZWQKICAgICAgKi8KLSAgICBkYXRhLT5zZXQuaHR0cF9jZV9za2lwID0gKDAgPT0gdmFfYXJnKHBhcmFtLCBsb25nKSk/VFJVRTpGQUxTRTsKKyAgICBkYXRhLT5zZXQuaHR0cF9jZV9za2lwID0gKDAgPT0gdmFfYXJnKHBhcmFtLCBsb25nKSkgPyBUUlVFIDogRkFMU0U7CiAgICAgYnJlYWs7CiAKICAgY2FzZSBDVVJMT1BUX05FV19GSUxFX1BFUk1TOgpAQCAtMjQ0MSw2ICsyNDQ1LDEyIEBACiAgICAgZGF0YS0+c2V0LnJlZGlyX3Byb3RvY29scyA9IHZhX2FyZyhwYXJhbSwgbG9uZyk7CiAgICAgYnJlYWs7CiAKKyAgY2FzZSBDVVJMT1BUX0RFRkFVTFRfUFJPVE9DT0w6CisgICAgLyogU2V0IHRoZSBwcm90b2NvbCB0byB1c2Ugd2hlbiB0aGUgVVJMIGRvZXNuJ3QgaW5jbHVkZSBhbnkgcHJvdG9jb2wgKi8KKyAgICByZXN1bHQgPSBzZXRzdHJvcHQoJmRhdGEtPnNldC5zdHJbU1RSSU5HX0RFRkFVTFRfUFJPVE9DT0xdLAorICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcocGFyYW0sIGNoYXIgKikpOworICAgIGJyZWFrOworCiAgIGNhc2UgQ1VSTE9QVF9NQUlMX0ZST006CiAgICAgLyogU2V0IHRoZSBTTVRQIG1haWwgb3JpZ2luYXRvciAqLwogICAgIHJlc3VsdCA9IHNldHN0cm9wdCgmZGF0YS0+c2V0LnN0cltTVFJJTkdfTUFJTF9GUk9NXSwKQEAgLTI1NzMsNyArMjU4Myw3IEBACiAgICAgYnJlYWs7CiAKICAgY2FzZSBDVVJMT1BUX1dJTERDQVJETUFUQ0g6Ci0gICAgZGF0YS0+c2V0LndpbGRjYXJkbWF0Y2ggPSAoMCAhPSB2YV9hcmcocGFyYW0sIGxvbmcpKT9UUlVFOkZBTFNFOworICAgIGRhdGEtPnNldC53aWxkY2FyZG1hdGNoID0gKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSkgPyBUUlVFIDogRkFMU0U7CiAgICAgYnJlYWs7CiAgIGNhc2UgQ1VSTE9QVF9DSFVOS19CR05fRlVOQ1RJT046CiAgICAgZGF0YS0+c2V0LmNodW5rX2JnbiA9IHZhX2FyZyhwYXJhbSwgY3VybF9jaHVua19iZ25fY2FsbGJhY2spOwpAQCAtMjYyNCw3ICsyNjM0LDcgQEAKICAgICBicmVhazsKIAogICBjYXNlIENVUkxPUFRfVENQX0tFRVBBTElWRToKLSAgICBkYXRhLT5zZXQudGNwX2tlZXBhbGl2ZSA9ICgwICE9IHZhX2FyZyhwYXJhbSwgbG9uZykpP1RSVUU6RkFMU0U7CisgICAgZGF0YS0+c2V0LnRjcF9rZWVwYWxpdmUgPSAoMCAhPSB2YV9hcmcocGFyYW0sIGxvbmcpKSA/IFRSVUUgOiBGQUxTRTsKICAgICBicmVhazsKICAgY2FzZSBDVVJMT1BUX1RDUF9LRUVQSURMRToKICAgICBkYXRhLT5zZXQudGNwX2tlZXBpZGxlID0gdmFfYXJnKHBhcmFtLCBsb25nKTsKQEAgLTI2MzIsMTEgKzI2NDIsMTggQEAKICAgY2FzZSBDVVJMT1BUX1RDUF9LRUVQSU5UVkw6CiAgICAgZGF0YS0+c2V0LnRjcF9rZWVwaW50dmwgPSB2YV9hcmcocGFyYW0sIGxvbmcpOwogICAgIGJyZWFrOworICBjYXNlIENVUkxPUFRfVENQX0ZBU1RPUEVOOgorI2lmIGRlZmluZWQoQ09OTkVDVF9EQVRBX0lERU1QT1RFTlQpIHx8IGRlZmluZWQoTVNHX0ZBU1RPUEVOKQorICAgIGRhdGEtPnNldC50Y3BfZmFzdG9wZW4gPSAoMCAhPSB2YV9hcmcocGFyYW0sIGxvbmcpKT9UUlVFOkZBTFNFOworI2Vsc2UKKyAgICByZXN1bHQgPSBDVVJMRV9OT1RfQlVJTFRfSU47CisjZW5kaWYKKyAgICBicmVhazsKICAgY2FzZSBDVVJMT1BUX1NTTF9FTkFCTEVfTlBOOgotICAgIGRhdGEtPnNldC5zc2xfZW5hYmxlX25wbiA9ICgwICE9IHZhX2FyZyhwYXJhbSwgbG9uZykpP1RSVUU6RkFMU0U7CisgICAgZGF0YS0+c2V0LnNzbF9lbmFibGVfbnBuID0gKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSkgPyBUUlVFIDogRkFMU0U7CiAgICAgYnJlYWs7CiAgIGNhc2UgQ1VSTE9QVF9TU0xfRU5BQkxFX0FMUE46Ci0gICAgZGF0YS0+c2V0LnNzbF9lbmFibGVfYWxwbiA9ICgwICE9IHZhX2FyZyhwYXJhbSwgbG9uZykpP1RSVUU6RkFMU0U7CisgICAgZGF0YS0+c2V0LnNzbF9lbmFibGVfYWxwbiA9ICgwICE9IHZhX2FyZyhwYXJhbSwgbG9uZykpID8gVFJVRSA6IEZBTFNFOwogICAgIGJyZWFrOwogCiAjaWZkZWYgVVNFX1VOSVhfU09DS0VUUwpAQCAtMjY0NywxMCArMjY2NCwzNiBAQAogI2VuZGlmCiAKICAgY2FzZSBDVVJMT1BUX1BBVEhfQVNfSVM6Ci0gICAgZGF0YS0+c2V0LnBhdGhfYXNfaXMgPSAoMCAhPSB2YV9hcmcocGFyYW0sIGxvbmcpKT9UUlVFOkZBTFNFOworICAgIGRhdGEtPnNldC5wYXRoX2FzX2lzID0gKDAgIT0gdmFfYXJnKHBhcmFtLCBsb25nKSkgPyBUUlVFIDogRkFMU0U7CiAgICAgYnJlYWs7CiAgIGNhc2UgQ1VSTE9QVF9QSVBFV0FJVDoKLSAgICBkYXRhLT5zZXQucGlwZXdhaXQgPSAoMCAhPSB2YV9hcmcocGFyYW0sIGxvbmcpKT9UUlVFOkZBTFNFOworICAgIGRhdGEtPnNldC5waXBld2FpdCA9ICgwICE9IHZhX2FyZyhwYXJhbSwgbG9uZykpID8gVFJVRSA6IEZBTFNFOworICAgIGJyZWFrOworICBjYXNlIENVUkxPUFRfU1RSRUFNX1dFSUdIVDoKKyNpZm5kZWYgVVNFX05HSFRUUDIKKyAgICByZXR1cm4gQ1VSTEVfTk9UX0JVSUxUX0lOOworI2Vsc2UKKyAgICBhcmcgPSB2YV9hcmcocGFyYW0sIGxvbmcpOworICAgIGlmKChhcmc+PTEpICYmIChhcmcgPD0gMjU2KSkKKyAgICAgIGRhdGEtPnNldC5zdHJlYW1fd2VpZ2h0ID0gKGludClhcmc7CisgICAgYnJlYWs7CisjZW5kaWYKKyAgY2FzZSBDVVJMT1BUX1NUUkVBTV9ERVBFTkRTOgorICBjYXNlIENVUkxPUFRfU1RSRUFNX0RFUEVORFNfRToKKyAgeworI2lmbmRlZiBVU0VfTkdIVFRQMgorICAgIHJldHVybiBDVVJMRV9OT1RfQlVJTFRfSU47CisjZWxzZQorICAgIHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkZXAgPSB2YV9hcmcocGFyYW0sIHN0cnVjdCBTZXNzaW9uSGFuZGxlICopOworICAgIGlmKGRlcCAmJiBHT09EX0VBU1lfSEFORExFKGRlcCkpIHsKKyAgICAgIGRhdGEtPnNldC5zdHJlYW1fZGVwZW5kc19vbiA9IGRlcDsKKyAgICAgIGRhdGEtPnNldC5zdHJlYW1fZGVwZW5kc19lID0gKG9wdGlvbiA9PSBDVVJMT1BUX1NUUkVBTV9ERVBFTkRTX0UpOworICAgIH0KKyAgICBicmVhazsKKyNlbmRpZgorICB9CisgIGNhc2UgQ1VSTE9QVF9DT05ORUNUX1RPOgorICAgIGRhdGEtPnNldC5jb25uZWN0X3RvID0gdmFfYXJnKHBhcmFtLCBzdHJ1Y3QgY3VybF9zbGlzdCAqKTsKICAgICBicmVhazsKICAgZGVmYXVsdDoKICAgICAvKiB1bmtub3duIHRhZyBhbmQgaXRzIGNvbXBhbmlvbiwganVzdCBpZ25vcmU6ICovCkBAIC0yNjYxLDYgKzI3MDQsNDUgQEAKICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorI2lmZGVmIFVTRV9SRUNWX0JFRk9SRV9TRU5EX1dPUktBUk9VTkQKK3N0YXRpYyB2b2lkIGNvbm5fcmVzZXRfcG9zdHBvbmVkX2RhdGEoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBpbnQgbnVtKQoreworICBzdHJ1Y3QgcG9zdHBvbmVkX2RhdGEgKiBjb25zdCBwc25kID0gJihjb25uLT5wb3N0cG9uZWRbbnVtXSk7CisgIGlmKHBzbmQtPmJ1ZmZlcikgeworICAgIERFQlVHQVNTRVJUKHBzbmQtPmFsbG9jYXRlZF9zaXplID4gMCk7CisgICAgREVCVUdBU1NFUlQocHNuZC0+cmVjdl9zaXplIDw9IHBzbmQtPmFsbG9jYXRlZF9zaXplKTsKKyAgICBERUJVR0FTU0VSVChwc25kLT5yZWN2X3NpemUgPworICAgICAgICAgICAgICAgIChwc25kLT5yZWN2X3Byb2Nlc3NlZCA8IHBzbmQtPnJlY3Zfc2l6ZSkgOgorICAgICAgICAgICAgICAgIChwc25kLT5yZWN2X3Byb2Nlc3NlZCA9PSAwKSk7CisgICAgREVCVUdBU1NFUlQocHNuZC0+YmluZHNvY2sgIT0gQ1VSTF9TT0NLRVRfQkFEKTsKKyAgICBmcmVlKHBzbmQtPmJ1ZmZlcik7CisgICAgcHNuZC0+YnVmZmVyID0gTlVMTDsKKyAgICBwc25kLT5hbGxvY2F0ZWRfc2l6ZSA9IDA7CisgICAgcHNuZC0+cmVjdl9zaXplID0gMDsKKyAgICBwc25kLT5yZWN2X3Byb2Nlc3NlZCA9IDA7CisjaWZkZWYgREVCVUdCVUlMRAorICAgIHBzbmQtPmJpbmRzb2NrID0gQ1VSTF9TT0NLRVRfQkFEOyAvKiB1c2VkIG9ubHkgZm9yIERFQlVHQVNTRVJUICovCisjZW5kaWYgLyogREVCVUdCVUlMRCAqLworICB9CisgIGVsc2UgeworICAgIERFQlVHQVNTRVJUIChwc25kLT5hbGxvY2F0ZWRfc2l6ZSA9PSAwKTsKKyAgICBERUJVR0FTU0VSVCAocHNuZC0+cmVjdl9zaXplID09IDApOworICAgIERFQlVHQVNTRVJUIChwc25kLT5yZWN2X3Byb2Nlc3NlZCA9PSAwKTsKKyAgICBERUJVR0FTU0VSVCAocHNuZC0+YmluZHNvY2sgPT0gQ1VSTF9TT0NLRVRfQkFEKTsKKyAgfQorfQorCitzdGF0aWMgdm9pZCBjb25uX3Jlc2V0X2FsbF9wb3N0cG9uZWRfZGF0YShzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pCit7CisgIGNvbm5fcmVzZXRfcG9zdHBvbmVkX2RhdGEoY29ubiwgMCk7CisgIGNvbm5fcmVzZXRfcG9zdHBvbmVkX2RhdGEoY29ubiwgMSk7Cit9CisjZWxzZSAgLyogISBVU0VfUkVDVl9CRUZPUkVfU0VORF9XT1JLQVJPVU5EICovCisvKiBVc2UgImRvLW5vdGhpbmciIG1hY3JvcyBpbnN0ZWFkIG9mIGZ1bmN0aW9ucyB3aGVuIHdvcmthcm91bmQgbm90IHVzZWQgKi8KKyNkZWZpbmUgY29ubl9yZXNldF9wb3N0cG9uZWRfZGF0YShjLG4pIGRvIHt9IFdISUxFX0ZBTFNFCisjZGVmaW5lIGNvbm5fcmVzZXRfYWxsX3Bvc3Rwb25lZF9kYXRhKGMpIGRvIHt9IFdISUxFX0ZBTFNFCisjZW5kaWYgLyogISBVU0VfUkVDVl9CRUZPUkVfU0VORF9XT1JLQVJPVU5EICovCisKIHN0YXRpYyB2b2lkIGNvbm5fZnJlZShzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pCiB7CiAgIGlmKCFjb25uKQpAQCAtMjY5MSw3ICsyNzczLDcgQEAKIAogICBDdXJsX3NhZmVmcmVlKGNvbm4tPnVzZXIpOwogICBDdXJsX3NhZmVmcmVlKGNvbm4tPnBhc3N3ZCk7Ci0gIEN1cmxfc2FmZWZyZWUoY29ubi0+eG9hdXRoMl9iZWFyZXIpOworICBDdXJsX3NhZmVmcmVlKGNvbm4tPm9hdXRoX2JlYXJlcik7CiAgIEN1cmxfc2FmZWZyZWUoY29ubi0+b3B0aW9ucyk7CiAgIEN1cmxfc2FmZWZyZWUoY29ubi0+cHJveHl1c2VyKTsKICAgQ3VybF9zYWZlZnJlZShjb25uLT5wcm94eXBhc3N3ZCk7CkBAIC0yNzA3LDkgKzI3ODksMTIgQEAKICAgQ3VybF9zYWZlZnJlZShjb25uLT5hbGxvY3B0ci5ydHNwX3RyYW5zcG9ydCk7CiAgIEN1cmxfc2FmZWZyZWUoY29ubi0+dHJhaWxlcik7CiAgIEN1cmxfc2FmZWZyZWUoY29ubi0+aG9zdC5yYXdhbGxvYyk7IC8qIGhvc3QgbmFtZSBidWZmZXIgKi8KKyAgQ3VybF9zYWZlZnJlZShjb25uLT5jb25uX3RvX2hvc3QucmF3YWxsb2MpOyAvKiBob3N0IG5hbWUgYnVmZmVyICovCiAgIEN1cmxfc2FmZWZyZWUoY29ubi0+cHJveHkucmF3YWxsb2MpOyAvKiBwcm94eSBuYW1lIGJ1ZmZlciAqLwogICBDdXJsX3NhZmVmcmVlKGNvbm4tPm1hc3Rlcl9idWZmZXIpOwogCisgIGNvbm5fcmVzZXRfYWxsX3Bvc3Rwb25lZF9kYXRhKGNvbm4pOworCiAgIEN1cmxfbGxpc3RfZGVzdHJveShjb25uLT5zZW5kX3BpcGUsIE5VTEwpOwogICBDdXJsX2xsaXN0X2Rlc3Ryb3koY29ubi0+cmVjdl9waXBlLCBOVUxMKTsKIApAQCAtMjc2NCwyMyArMjg0OSw5IEBACiAgIGluZm9mKGRhdGEsICJDbG9zaW5nIGNvbm5lY3Rpb24gJWxkXG4iLCBjb25uLT5jb25uZWN0aW9uX2lkKTsKICAgQ3VybF9jb25uY2FjaGVfcmVtb3ZlX2Nvbm4oZGF0YS0+c3RhdGUuY29ubl9jYWNoZSwgY29ubik7CiAKLSNpZiBkZWZpbmVkKFVTRV9MSUJJRE4pCi0gIGlmKGNvbm4tPmhvc3QuZW5jYWxsb2MpCi0gICAgaWRuX2ZyZWUoY29ubi0+aG9zdC5lbmNhbGxvYyk7IC8qIGVuY29kZWQgaG9zdCBuYW1lIGJ1ZmZlciwgbXVzdCBiZSBmcmVlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIGlkbl9mcmVlKCkgc2luY2UgdGhpcyB3YXMgYWxsb2NhdGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5IGxpYmlkbiAqLwotICBpZihjb25uLT5wcm94eS5lbmNhbGxvYykKLSAgICBpZG5fZnJlZShjb25uLT5wcm94eS5lbmNhbGxvYyk7IC8qIGVuY29kZWQgcHJveHkgbmFtZSBidWZmZXIsIG11c3QgYmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyZWVkIHdpdGggaWRuX2ZyZWUoKSBzaW5jZSB0aGlzIHdhcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb2NhdGVkIGJ5IGxpYmlkbiAqLwotI2VsaWYgZGVmaW5lZChVU0VfV0lOMzJfSUROKQotICBmcmVlKGNvbm4tPmhvc3QuZW5jYWxsb2MpOyAvKiBlbmNvZGVkIGhvc3QgbmFtZSBidWZmZXIsIG11c3QgYmUgZnJlZWQgd2l0aAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZG5fZnJlZSgpIHNpbmNlIHRoaXMgd2FzIGFsbG9jYXRlZCBieQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJsX3dpbjMyX2lkbl90b19hc2NpaSAqLwotICBmcmVlKGNvbm4tPnByb3h5LmVuY2FsbG9jKTsgLyogZW5jb2RlZCBwcm94eSBuYW1lIGJ1ZmZlciwgbXVzdCBiZSBmcmVlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBpZG5fZnJlZSgpIHNpbmNlIHRoaXMgd2FzIGFsbG9jYXRlZCBieQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VybF93aW4zMl9pZG5fdG9fYXNjaWkgKi8KLSNlbmRpZgorICBmcmVlX2ZpeGVkX2hvc3RuYW1lKCZjb25uLT5ob3N0KTsKKyAgZnJlZV9maXhlZF9ob3N0bmFtZSgmY29ubi0+Y29ubl90b19ob3N0KTsKKyAgZnJlZV9maXhlZF9ob3N0bmFtZSgmY29ubi0+cHJveHkpOwogCiAgIEN1cmxfc3NsX2Nsb3NlKGNvbm4sIEZJUlNUU09DS0VUKTsKIApAQCAtMjgzMSw3ICsyOTAyLDcgQEAKICAgICAgIHJldHVybiBUUlVFOwogCiAgICAgaWYoQ3VybF9waXBlbGluZV93YW50ZWQoaGFuZGxlLT5tdWx0aSwgQ1VSTFBJUEVfTVVMVElQTEVYKSAmJgotICAgICAgIChoYW5kbGUtPnNldC5odHRwdmVyc2lvbiA9PSBDVVJMX0hUVFBfVkVSU0lPTl8yXzApKQorICAgICAgIChoYW5kbGUtPnNldC5odHRwdmVyc2lvbiA+PSBDVVJMX0hUVFBfVkVSU0lPTl8yKSkKICAgICAgIC8qIGFsbG93cyBIVFRQLzIgKi8KICAgICAgIHJldHVybiBUUlVFOwogICB9CkBAIC0yODQxLDE1ICsyOTEyLDE3IEBACiBpbnQgQ3VybF9yZW1vdmVIYW5kbGVGcm9tUGlwZWxpbmUoc3RydWN0IFNlc3Npb25IYW5kbGUgKmhhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY3VybF9sbGlzdCAqcGlwZWxpbmUpCiB7Ci0gIHN0cnVjdCBjdXJsX2xsaXN0X2VsZW1lbnQgKmN1cnI7CisgIGlmKHBpcGVsaW5lKSB7CisgICAgc3RydWN0IGN1cmxfbGxpc3RfZWxlbWVudCAqY3VycjsKIAotICBjdXJyID0gcGlwZWxpbmUtPmhlYWQ7Ci0gIHdoaWxlKGN1cnIpIHsKLSAgICBpZihjdXJyLT5wdHIgPT0gaGFuZGxlKSB7Ci0gICAgICBDdXJsX2xsaXN0X3JlbW92ZShwaXBlbGluZSwgY3VyciwgTlVMTCk7Ci0gICAgICByZXR1cm4gMTsgLyogd2UgcmVtb3ZlZCBhIGhhbmRsZSAqLworICAgIGN1cnIgPSBwaXBlbGluZS0+aGVhZDsKKyAgICB3aGlsZShjdXJyKSB7CisgICAgICBpZihjdXJyLT5wdHIgPT0gaGFuZGxlKSB7CisgICAgICAgIEN1cmxfbGxpc3RfcmVtb3ZlKHBpcGVsaW5lLCBjdXJyLCBOVUxMKTsKKyAgICAgICAgcmV0dXJuIDE7IC8qIHdlIHJlbW92ZWQgYSBoYW5kbGUgKi8KKyAgICAgIH0KKyAgICAgIGN1cnIgPSBjdXJyLT5uZXh0OwogICAgIH0KLSAgICBjdXJyID0gY3Vyci0+bmV4dDsKICAgfQogCiAgIHJldHVybiAwOwpAQCAtMjkyOSw4ICszMDAyLDggQEAKICAqIFJldHVybnMgdGhlIHBvaW50ZXIgdG8gdGhlIG9sZGVzdCBpZGxlIGNvbm5lY3Rpb24sIG9yIE5VTEwgaWYgbm9uZSB3YXMKICAqIGZvdW5kLgogICovCi1zdGF0aWMgc3RydWN0IGNvbm5lY3RkYXRhICoKLWZpbmRfb2xkZXN0X2lkbGVfY29ubmVjdGlvbihzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSkKK3N0cnVjdCBjb25uZWN0ZGF0YSAqCitDdXJsX29sZGVzdF9pZGxlX2Nvbm5lY3Rpb24oc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEpCiB7CiAgIHN0cnVjdCBjb25uY2FjaGUgKmJjID0gZGF0YS0+c3RhdGUuY29ubl9jYWNoZTsKICAgc3RydWN0IGN1cmxfaGFzaF9pdGVyYXRvciBpdGVyOwpAQCAtMzEwNiwxNCArMzE3OSwyMCBAQAogewogICBzdHJ1Y3QgY29ubmVjdGRhdGEgKmNoZWNrOwogICBzdHJ1Y3QgY29ubmVjdGRhdGEgKmNob3NlbiA9IDA7CisgIGJvb2wgZm91bmRQZW5kaW5nQ2FuZGlkYXRlID0gRkFMU0U7CiAgIGJvb2wgY2FuUGlwZWxpbmUgPSBJc1BpcGVsaW5pbmdQb3NzaWJsZShkYXRhLCBuZWVkbGUpOwotI2lmZGVmIFVTRV9OVExNCi0gIGJvb2wgd2FudE5UTE1odHRwID0gKChkYXRhLT5zdGF0ZS5hdXRoaG9zdC53YW50ICYgQ1VSTEFVVEhfTlRMTSkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgKGRhdGEtPnN0YXRlLmF1dGhob3N0LndhbnQgJiBDVVJMQVVUSF9OVExNX1dCKSkgJiYKLSAgICAobmVlZGxlLT5oYW5kbGVyLT5wcm90b2NvbCAmIFBST1RPX0ZBTUlMWV9IVFRQKSA/IFRSVUUgOiBGQUxTRTsKLSNlbmRpZgogICBzdHJ1Y3QgY29ubmVjdGJ1bmRsZSAqYnVuZGxlOwogCisjaWZkZWYgVVNFX05UTE0KKyAgYm9vbCB3YW50TlRMTWh0dHAgPSAoKGRhdGEtPnN0YXRlLmF1dGhob3N0LndhbnQgJgorICAgICAgICAgICAgICAgICAgICAgIChDVVJMQVVUSF9OVExNIHwgQ1VSTEFVVEhfTlRMTV9XQikpICYmCisgICAgICAgICAgICAgICAgICAgICAgKG5lZWRsZS0+aGFuZGxlci0+cHJvdG9jb2wgJiBQUk9UT19GQU1JTFlfSFRUUCkpOworICBib29sIHdhbnRQcm94eU5UTE1odHRwID0gKG5lZWRsZS0+Yml0cy5wcm94eV91c2VyX3Bhc3N3ZCAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRhLT5zdGF0ZS5hdXRocHJveHkud2FudCAmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ1VSTEFVVEhfTlRMTSB8IENVUkxBVVRIX05UTE1fV0IpKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5lZWRsZS0+aGFuZGxlci0+cHJvdG9jb2wgJiBQUk9UT19GQU1JTFlfSFRUUCkpKTsKKyNlbmRpZgorCiAgICpmb3JjZV9yZXVzZSA9IEZBTFNFOwogICAqd2FpdHBpcGUgPSBGQUxTRTsKIApAQCAtMzEzMSw5ICszMjEwLDE5IEBACiAgICAgICBtYXhfcGlwZWxpbmVfbGVuZ3RoKGRhdGEtPm11bHRpKTowOwogICAgIHNpemVfdCBiZXN0X3BpcGVfbGVuID0gbWF4X3BpcGVfbGVuOwogICAgIHN0cnVjdCBjdXJsX2xsaXN0X2VsZW1lbnQgKmN1cnI7CisgICAgY29uc3QgY2hhciAqaG9zdG5hbWU7CiAKLSAgICBpbmZvZihkYXRhLCAiRm91bmQgYnVuZGxlIGZvciBob3N0ICVzOiAlcFxuIiwKLSAgICAgICAgICBuZWVkbGUtPmhvc3QubmFtZSwgKHZvaWQgKilidW5kbGUpOworICAgIGlmKG5lZWRsZS0+Yml0cy5jb25uX3RvX2hvc3QpCisgICAgICBob3N0bmFtZSA9IG5lZWRsZS0+Y29ubl90b19ob3N0Lm5hbWU7CisgICAgZWxzZQorICAgICAgaG9zdG5hbWUgPSBuZWVkbGUtPmhvc3QubmFtZTsKKworICAgIGluZm9mKGRhdGEsICJGb3VuZCBidW5kbGUgZm9yIGhvc3QgJXM6ICVwIFslc11cbiIsCisgICAgICAgICAgaG9zdG5hbWUsICh2b2lkICopYnVuZGxlLAorICAgICAgICAgIChidW5kbGUtPm11bHRpdXNlPT0gQlVORExFX1BJUEVMSU5JTkc/CisgICAgICAgICAgICJjYW4gcGlwZWxpbmUiOgorICAgICAgICAgICAoYnVuZGxlLT5tdWx0aXVzZT09IEJVTkRMRV9NVUxUSVBMRVg/CisgICAgICAgICAgICAiY2FuIG11bHRpcGxleCI6InNlcmlhbGx5IikpKTsKIAogICAgIC8qIFdlIGNhbid0IHBpcGUgaWYgd2UgZG9uJ3Qga25vdyBhbnl0aGluZyBhYm91dCB0aGUgc2VydmVyICovCiAgICAgaWYoY2FuUGlwZWxpbmUpIHsKQEAgLTMxNDcsMTkgKzMyMzYsMjcgQEAKICAgICAgICAgaW5mb2YoZGF0YSwgIlNlcnZlciBkb2Vzbid0IHN1cHBvcnQgbXVsdGktdXNlICh5ZXQpXG4iKTsKICAgICAgICAgY2FuUGlwZWxpbmUgPSBGQUxTRTsKICAgICAgIH0KKyAgICAgIGlmKChidW5kbGUtPm11bHRpdXNlID09IEJVTkRMRV9QSVBFTElOSU5HKSAmJgorICAgICAgICAgIUN1cmxfcGlwZWxpbmVfd2FudGVkKGRhdGEtPm11bHRpLCBDVVJMUElQRV9IVFRQMSkpIHsKKyAgICAgICAgLyogbm90IGFza2VkIGZvciwgc3dpdGNoIG9mZiAqLworICAgICAgICBpbmZvZihkYXRhLCAiQ291bGQgcGlwZWxpbmUsIGJ1dCBub3QgYXNrZWQgdG8hXG4iKTsKKyAgICAgICAgY2FuUGlwZWxpbmUgPSBGQUxTRTsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYoKGJ1bmRsZS0+bXVsdGl1c2UgPT0gQlVORExFX01VTFRJUExFWCkgJiYKKyAgICAgICAgICAgICAgIUN1cmxfcGlwZWxpbmVfd2FudGVkKGRhdGEtPm11bHRpLCBDVVJMUElQRV9NVUxUSVBMRVgpKSB7CisgICAgICAgIGluZm9mKGRhdGEsICJDb3VsZCBtdWx0aXBsZXgsIGJ1dCBub3QgYXNrZWQgdG8hXG4iKTsKKyAgICAgICAgY2FuUGlwZWxpbmUgPSBGQUxTRTsKKyAgICAgIH0KICAgICB9CiAKICAgICBjdXJyID0gYnVuZGxlLT5jb25uX2xpc3QtPmhlYWQ7CiAgICAgd2hpbGUoY3VycikgewogICAgICAgYm9vbCBtYXRjaCA9IEZBTFNFOwotI2lmIGRlZmluZWQoVVNFX05UTE0pCi0gICAgICBib29sIGNyZWRlbnRpYWxzTWF0Y2ggPSBGQUxTRTsKLSNlbmRpZgogICAgICAgc2l6ZV90IHBpcGVMZW47CiAKICAgICAgIC8qCi0gICAgICAgKiBOb3RlIHRoYXQgaWYgd2UgdXNlIGEgSFRUUCBwcm94eSwgd2UgY2hlY2sgY29ubmVjdGlvbnMgdG8gdGhhdAotICAgICAgICogcHJveHkgYW5kIG5vdCB0byB0aGUgYWN0dWFsIHJlbW90ZSBzZXJ2ZXIuCisgICAgICAgKiBOb3RlIHRoYXQgaWYgd2UgdXNlIGEgSFRUUCBwcm94eSBpbiBub3JtYWwgbW9kZSAobm8gdHVubmVsaW5nKSwgd2UKKyAgICAgICAqIGNoZWNrIGNvbm5lY3Rpb25zIHRvIHRoYXQgcHJveHkgYW5kIG5vdCB0byB0aGUgYWN0dWFsIHJlbW90ZSBzZXJ2ZXIuCiAgICAgICAgKi8KICAgICAgIGNoZWNrID0gY3Vyci0+cHRyOwogICAgICAgY3VyciA9IGN1cnItPm5leHQ7CkBAIC0zMjA1LDYgKzMzMDIsOCBAQAogCiAgICAgICAgIGlmKChjaGVjay0+c29ja1tGSVJTVFNPQ0tFVF0gPT0gQ1VSTF9TT0NLRVRfQkFEKSB8fAogICAgICAgICAgICBjaGVjay0+Yml0cy5jbG9zZSkgeworICAgICAgICAgIGlmKCFjaGVjay0+Yml0cy5jbG9zZSkKKyAgICAgICAgICAgIGZvdW5kUGVuZGluZ0NhbmRpZGF0ZSA9IFRSVUU7CiAgICAgICAgICAgLyogRG9uJ3QgcGljayBhIGNvbm5lY3Rpb24gdGhhdCBoYXNuJ3QgY29ubmVjdGVkIHlldCBvciB0aGF0IGlzIGdvaW5nCiAgICAgICAgICAgICAgdG8gZ2V0IGNsb3NlZC4gKi8KICAgICAgICAgICBpbmZvZihkYXRhLCAiQ29ubmVjdGlvbiAjJWxkIGlzbid0IG9wZW4gZW5vdWdoLCBjYW4ndCByZXVzZVxuIiwKQEAgLTMyMjMsNyArMzMyMiw4IEBACiAgICAgICBpZigobmVlZGxlLT5oYW5kbGVyLT5mbGFncyZQUk9UT1BUX1NTTCkgIT0KICAgICAgICAgIChjaGVjay0+aGFuZGxlci0+ZmxhZ3MmUFJPVE9QVF9TU0wpKQogICAgICAgICAvKiBkb24ndCBkbyBtaXhlZCBTU0wgYW5kIG5vbi1TU0wgY29ubmVjdGlvbnMgKi8KLSAgICAgICAgaWYoIShuZWVkbGUtPmhhbmRsZXItPnByb3RvY29sICYgY2hlY2stPmhhbmRsZXItPnByb3RvY29sKSkKKyAgICAgICAgaWYoZ2V0X3Byb3RvY29sX2ZhbWlseShjaGVjay0+aGFuZGxlci0+cHJvdG9jb2wpICE9CisgICAgICAgICAgIG5lZWRsZS0+aGFuZGxlci0+cHJvdG9jb2wgfHwgIWNoZWNrLT50bHNfdXBncmFkZWQpCiAgICAgICAgICAgLyogZXhjZXB0IHByb3RvY29scyB0aGF0IGhhdmUgYmVlbiB1cGdyYWRlZCB2aWEgVExTICovCiAgICAgICAgICAgY29udGludWU7CiAKQEAgLTMyMzcsNiArMzMzNywyNSBAQAogICAgICAgICAvKiBkb24ndCBkbyBtaXhlZCBwcm94eSBhbmQgbm9uLXByb3h5IGNvbm5lY3Rpb25zICovCiAgICAgICAgIGNvbnRpbnVlOwogCisgICAgICBpZihuZWVkbGUtPmJpdHMucHJveHkgJiYKKyAgICAgICAgIChuZWVkbGUtPnByb3h5dHlwZSAhPSBjaGVjay0+cHJveHl0eXBlIHx8CisgICAgICAgICAgbmVlZGxlLT5iaXRzLmh0dHBwcm94eSAhPSBjaGVjay0+Yml0cy5odHRwcHJveHkgfHwKKyAgICAgICAgICBuZWVkbGUtPmJpdHMudHVubmVsX3Byb3h5ICE9IGNoZWNrLT5iaXRzLnR1bm5lbF9wcm94eSB8fAorICAgICAgICAgICFDdXJsX3Jhd19lcXVhbChuZWVkbGUtPnByb3h5Lm5hbWUsIGNoZWNrLT5wcm94eS5uYW1lKSB8fAorICAgICAgICAgIG5lZWRsZS0+cG9ydCAhPSBjaGVjay0+cG9ydCkpCisgICAgICAgIC8qIGRvbid0IG1peCBjb25uZWN0aW9ucyB0aGF0IHVzZSBkaWZmZXJlbnQgcHJveGllcyAqLworICAgICAgICBjb250aW51ZTsKKworICAgICAgaWYobmVlZGxlLT5iaXRzLmNvbm5fdG9faG9zdCAhPSBjaGVjay0+Yml0cy5jb25uX3RvX2hvc3QpCisgICAgICAgIC8qIGRvbid0IG1peCBjb25uZWN0aW9ucyB0aGF0IHVzZSB0aGUgImNvbm5lY3QgdG8gaG9zdCIgZmVhdHVyZSBhbmQKKyAgICAgICAgICogY29ubmVjdGlvbnMgdGhhdCBkb24ndCB1c2UgdGhpcyBmZWF0dXJlICovCisgICAgICAgIGNvbnRpbnVlOworCisgICAgICBpZihuZWVkbGUtPmJpdHMuY29ubl90b19wb3J0ICE9IGNoZWNrLT5iaXRzLmNvbm5fdG9fcG9ydCkKKyAgICAgICAgLyogZG9uJ3QgbWl4IGNvbm5lY3Rpb25zIHRoYXQgdXNlIHRoZSAiY29ubmVjdCB0byBwb3J0IiBmZWF0dXJlIGFuZAorICAgICAgICAgKiBjb25uZWN0aW9ucyB0aGF0IGRvbid0IHVzZSB0aGlzIGZlYXR1cmUgKi8KKyAgICAgICAgY29udGludWU7CisKICAgICAgIGlmKCFjYW5QaXBlbGluZSAmJiBjaGVjay0+aW51c2UpCiAgICAgICAgIC8qIHRoaXMgcmVxdWVzdCBjYW4ndCBiZSBwaXBlbGluZWQgYnV0IHRoZSBjaGVja2VkIGNvbm5lY3Rpb24gaXMKICAgICAgICAgICAgYWxyZWFkeSBpbiB1c2Ugc28gd2Ugc2tpcCBpdCAqLwpAQCAtMzI2MiwzNyArMzM4MSwzMyBAQAogICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgfQogCi0gICAgICBpZigoIShuZWVkbGUtPmhhbmRsZXItPmZsYWdzICYgUFJPVE9QVF9DUkVEU1BFUlJFUVVFU1QpKQotI2lmZGVmIFVTRV9OVExNCi0gICAgICAgICB8fCAod2FudE5UTE1odHRwIHx8IGNoZWNrLT5udGxtLnN0YXRlICE9IE5UTE1TVEFURV9OT05FKQotI2VuZGlmCi0gICAgICAgICkgewotICAgICAgICAvKiBUaGlzIHByb3RvY29sIHJlcXVpcmVzIGNyZWRlbnRpYWxzIHBlciBjb25uZWN0aW9uIG9yIGlzIEhUVFArTlRMTSwKKyAgICAgIGlmKCEobmVlZGxlLT5oYW5kbGVyLT5mbGFncyAmIFBST1RPUFRfQ1JFRFNQRVJSRVFVRVNUKSkgeworICAgICAgICAvKiBUaGlzIHByb3RvY29sIHJlcXVpcmVzIGNyZWRlbnRpYWxzIHBlciBjb25uZWN0aW9uLAogICAgICAgICAgICBzbyB2ZXJpZnkgdGhhdCB3ZSdyZSB1c2luZyB0aGUgc2FtZSBuYW1lIGFuZCBwYXNzd29yZCBhcyB3ZWxsICovCiAgICAgICAgIGlmKCFzdHJlcXVhbChuZWVkbGUtPnVzZXIsIGNoZWNrLT51c2VyKSB8fAogICAgICAgICAgICAhc3RyZXF1YWwobmVlZGxlLT5wYXNzd2QsIGNoZWNrLT5wYXNzd2QpKSB7CiAgICAgICAgICAgLyogb25lIG9mIHRoZW0gd2FzIGRpZmZlcmVudCAqLwogICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0jaWYgZGVmaW5lZChVU0VfTlRMTSkKLSAgICAgICAgY3JlZGVudGlhbHNNYXRjaCA9IFRSVUU7Ci0jZW5kaWYKICAgICAgIH0KIAotICAgICAgaWYoIW5lZWRsZS0+Yml0cy5odHRwcHJveHkgfHwgbmVlZGxlLT5oYW5kbGVyLT5mbGFncyZQUk9UT1BUX1NTTCB8fAotICAgICAgICAgKG5lZWRsZS0+Yml0cy5odHRwcHJveHkgJiYgY2hlY2stPmJpdHMuaHR0cHByb3h5ICYmCi0gICAgICAgICAgbmVlZGxlLT5iaXRzLnR1bm5lbF9wcm94eSAmJiBjaGVjay0+Yml0cy50dW5uZWxfcHJveHkgJiYKLSAgICAgICAgICBDdXJsX3Jhd19lcXVhbChuZWVkbGUtPnByb3h5Lm5hbWUsIGNoZWNrLT5wcm94eS5uYW1lKSAmJgotICAgICAgICAgIChuZWVkbGUtPnBvcnQgPT0gY2hlY2stPnBvcnQpKSkgeworICAgICAgaWYoIW5lZWRsZS0+Yml0cy5odHRwcHJveHkgfHwgKG5lZWRsZS0+aGFuZGxlci0+ZmxhZ3MmUFJPVE9QVF9TU0wpIHx8CisgICAgICAgICAobmVlZGxlLT5iaXRzLmh0dHBwcm94eSAmJiBuZWVkbGUtPmJpdHMudHVubmVsX3Byb3h5KSkgewogICAgICAgICAvKiBUaGUgcmVxdWVzdGVkIGNvbm5lY3Rpb24gZG9lcyBub3QgdXNlIGEgSFRUUCBwcm94eSBvciBpdCB1c2VzIFNTTCBvcgotICAgICAgICAgICBpdCBpcyBhIG5vbi1TU0wgcHJvdG9jb2wgdHVubmVsZWQgb3ZlciB0aGUgc2FtZSBodHRwIHByb3h5IG5hbWUgYW5kCi0gICAgICAgICAgIHBvcnQgbnVtYmVyIG9yIGl0IGlzIGEgbm9uLVNTTCBwcm90b2NvbCB3aGljaCBpcyBhbGxvd2VkIHRvIGJlCi0gICAgICAgICAgIHVwZ3JhZGVkIHZpYSBUTFMgKi8KLQorICAgICAgICAgICBpdCBpcyBhIG5vbi1TU0wgcHJvdG9jb2wgdHVubmVsZWQgb3ZlciB0aGUgc2FtZSBIVFRQIHByb3h5IG5hbWUgYW5kCisgICAgICAgICAgIHBvcnQgbnVtYmVyICovCiAgICAgICAgIGlmKChDdXJsX3Jhd19lcXVhbChuZWVkbGUtPmhhbmRsZXItPnNjaGVtZSwgY2hlY2stPmhhbmRsZXItPnNjaGVtZSkgfHwKLSAgICAgICAgICAgIG5lZWRsZS0+aGFuZGxlci0+cHJvdG9jb2wgJiBjaGVjay0+aGFuZGxlci0+cHJvdG9jb2wpICYmCisgICAgICAgICAgICAoZ2V0X3Byb3RvY29sX2ZhbWlseShjaGVjay0+aGFuZGxlci0+cHJvdG9jb2wpID09CisgICAgICAgICAgICAgbmVlZGxlLT5oYW5kbGVyLT5wcm90b2NvbCAmJiBjaGVjay0+dGxzX3VwZ3JhZGVkKSkgJiYKKyAgICAgICAgICAgKCFuZWVkbGUtPmJpdHMuY29ubl90b19ob3N0IHx8IEN1cmxfcmF3X2VxdWFsKAorICAgICAgICAgICAgbmVlZGxlLT5jb25uX3RvX2hvc3QubmFtZSwgY2hlY2stPmNvbm5fdG9faG9zdC5uYW1lKSkgJiYKKyAgICAgICAgICAgKCFuZWVkbGUtPmJpdHMuY29ubl90b19wb3J0IHx8CisgICAgICAgICAgICAgbmVlZGxlLT5jb25uX3RvX3BvcnQgPT0gY2hlY2stPmNvbm5fdG9fcG9ydCkgJiYKICAgICAgICAgICAgQ3VybF9yYXdfZXF1YWwobmVlZGxlLT5ob3N0Lm5hbWUsIGNoZWNrLT5ob3N0Lm5hbWUpICYmCiAgICAgICAgICAgIG5lZWRsZS0+cmVtb3RlX3BvcnQgPT0gY2hlY2stPnJlbW90ZV9wb3J0KSB7CisgICAgICAgICAgLyogVGhlIHNjaGVtZXMgbWF0Y2ggb3IgdGhlIHRoZSBwcm90b2NvbCBmYW1pbHkgaXMgdGhlIHNhbWUgYW5kIHRoZQorICAgICAgICAgICAgIHByZXZpb3VzIGNvbm5lY3Rpb24gd2FzIFRMUyB1cGdyYWRlZCwgYW5kIHRoZSBob3N0bmFtZSBhbmQgaG9zdAorICAgICAgICAgICAgIHBvcnQgbWF0Y2ggKi8KICAgICAgICAgICBpZihuZWVkbGUtPmhhbmRsZXItPmZsYWdzICYgUFJPVE9QVF9TU0wpIHsKICAgICAgICAgICAgIC8qIFRoaXMgaXMgYSBTU0wgY29ubmVjdGlvbiBzbyB2ZXJpZnkgdGhhdCB3ZSdyZSB1c2luZyB0aGUgc2FtZQogICAgICAgICAgICAgICAgU1NMIG9wdGlvbnMgYXMgd2VsbCAqLwpAQCAtMzMwNSw2ICszNDIwLDcgQEAKICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmKGNoZWNrLT5zc2xbRklSU1RTT0NLRVRdLnN0YXRlICE9IHNzbF9jb25uZWN0aW9uX2NvbXBsZXRlKSB7CisgICAgICAgICAgICAgIGZvdW5kUGVuZGluZ0NhbmRpZGF0ZSA9IFRSVUU7CiAgICAgICAgICAgICAgIERFQlVHRihpbmZvZihkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbm5lY3Rpb24gIyVsZCBoYXMgbm90IHN0YXJ0ZWQgU1NMIGNvbm5lY3QsICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYW4ndCByZXVzZVxuIiwKQEAgLTMzMTUsMTYgKzM0MzEsMTAgQEAKICAgICAgICAgICBtYXRjaCA9IFRSVUU7CiAgICAgICAgIH0KICAgICAgIH0KLSAgICAgIGVsc2UgeyAvKiBUaGUgcmVxdWVzdGVkIG5lZWRsZSBjb25uZWN0aW9uIGlzIHVzaW5nIGEgcHJveHksCi0gICAgICAgICAgICAgICAgaXMgdGhlIGNoZWNrZWQgb25lIHVzaW5nIHRoZSBzYW1lIGhvc3QsIHBvcnQgYW5kIHR5cGU/ICovCi0gICAgICAgIGlmKGNoZWNrLT5iaXRzLnByb3h5ICYmCi0gICAgICAgICAgIChuZWVkbGUtPnByb3h5dHlwZSA9PSBjaGVjay0+cHJveHl0eXBlKSAmJgotICAgICAgICAgICAobmVlZGxlLT5iaXRzLnR1bm5lbF9wcm94eSA9PSBjaGVjay0+Yml0cy50dW5uZWxfcHJveHkpICYmCi0gICAgICAgICAgIEN1cmxfcmF3X2VxdWFsKG5lZWRsZS0+cHJveHkubmFtZSwgY2hlY2stPnByb3h5Lm5hbWUpICYmCi0gICAgICAgICAgIG5lZWRsZS0+cG9ydCA9PSBjaGVjay0+cG9ydCkgewotICAgICAgICAgIC8qIFRoaXMgaXMgdGhlIHNhbWUgcHJveHkgY29ubmVjdGlvbiwgdXNlIGl0ISAqLwotICAgICAgICAgIG1hdGNoID0gVFJVRTsKLSAgICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIC8qIFRoZSByZXF1ZXN0ZWQgY29ubmVjdGlvbiBpcyB1c2luZyB0aGUgc2FtZSBIVFRQIHByb3h5IGluIG5vcm1hbAorICAgICAgICAgICBtb2RlIChubyB0dW5uZWxpbmcpICovCisgICAgICAgIG1hdGNoID0gVFJVRTsKICAgICAgIH0KIAogICAgICAgaWYobWF0Y2gpIHsKQEAgLTMzMzUsMjAgKzM0NDUsNDcgQEAKICAgICAgICAgICAgcG9zc2libGUuIChFc3BlY2lhbGx5IHdlIG11c3Qgbm90IHJldXNlIHRoZSBzYW1lIGNvbm5lY3Rpb24gaWYKICAgICAgICAgICAgcGFydHdheSB0aHJvdWdoIGEgaGFuZHNoYWtlISkgKi8KICAgICAgICAgaWYod2FudE5UTE1odHRwKSB7Ci0gICAgICAgICAgaWYoY3JlZGVudGlhbHNNYXRjaCAmJiBjaGVjay0+bnRsbS5zdGF0ZSAhPSBOVExNU1RBVEVfTk9ORSkgewotICAgICAgICAgICAgY2hvc2VuID0gY2hlY2s7CisgICAgICAgICAgaWYoIXN0cmVxdWFsKG5lZWRsZS0+dXNlciwgY2hlY2stPnVzZXIpIHx8CisgICAgICAgICAgICAgIXN0cmVxdWFsKG5lZWRsZS0+cGFzc3dkLCBjaGVjay0+cGFzc3dkKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYoY2hlY2stPm50bG0uc3RhdGUgIT0gTlRMTVNUQVRFX05PTkUpIHsKKyAgICAgICAgICAvKiBDb25uZWN0aW9uIGlzIHVzaW5nIE5UTE0gYXV0aCBidXQgd2UgZG9uJ3Qgd2FudCBOVExNICovCisgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KIAorICAgICAgICAvKiBTYW1lIGZvciBQcm94eSBOVExNIGF1dGhlbnRpY2F0aW9uICovCisgICAgICAgIGlmKHdhbnRQcm94eU5UTE1odHRwKSB7CisgICAgICAgICAgLyogQm90aCBjaGVjay0+cHJveHl1c2VyIGFuZCBjaGVjay0+cHJveHlwYXNzd2QgY2FuIGJlIE5VTEwgKi8KKyAgICAgICAgICBpZighY2hlY2stPnByb3h5dXNlciB8fCAhY2hlY2stPnByb3h5cGFzc3dkKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICBpZighc3RyZXF1YWwobmVlZGxlLT5wcm94eXVzZXIsIGNoZWNrLT5wcm94eXVzZXIpIHx8CisgICAgICAgICAgICAgIXN0cmVxdWFsKG5lZWRsZS0+cHJveHlwYXNzd2QsIGNoZWNrLT5wcm94eXBhc3N3ZCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmKGNoZWNrLT5wcm94eW50bG0uc3RhdGUgIT0gTlRMTVNUQVRFX05PTkUpIHsKKyAgICAgICAgICAvKiBQcm94eSBjb25uZWN0aW9uIGlzIHVzaW5nIE5UTE0gYXV0aCBidXQgd2UgZG9uJ3Qgd2FudCBOVExNICovCisgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBpZih3YW50TlRMTWh0dHAgfHwgd2FudFByb3h5TlRMTWh0dHApIHsKKyAgICAgICAgICAvKiBDcmVkZW50aWFscyBhcmUgYWxyZWFkeSBjaGVja2VkLCB3ZSBjYW4gdXNlIHRoaXMgY29ubmVjdGlvbiAqLworICAgICAgICAgIGNob3NlbiA9IGNoZWNrOworCisgICAgICAgICAgaWYoKHdhbnROVExNaHR0cCAmJgorICAgICAgICAgICAgIChjaGVjay0+bnRsbS5zdGF0ZSAhPSBOVExNU1RBVEVfTk9ORSkpIHx8CisgICAgICAgICAgICAgICh3YW50UHJveHlOVExNaHR0cCAmJgorICAgICAgICAgICAgICAgKGNoZWNrLT5wcm94eW50bG0uc3RhdGUgIT0gTlRMTVNUQVRFX05PTkUpKSkgewogICAgICAgICAgICAgLyogV2UgbXVzdCB1c2UgdGhpcyBjb25uZWN0aW9uLCBubyBvdGhlciAqLwogICAgICAgICAgICAgKmZvcmNlX3JldXNlID0gVFJVRTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlIGlmKGNyZWRlbnRpYWxzTWF0Y2gpCi0gICAgICAgICAgICAvKiB0aGlzIGlzIGEgYmFja3VwIGNob2ljZSAqLwotICAgICAgICAgICAgY2hvc2VuID0gY2hlY2s7CisKKyAgICAgICAgICAvKiBDb250aW51ZSBsb29rIHVwIGZvciBhIGJldHRlciBjb25uZWN0aW9uICovCiAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICNlbmRpZgotCiAgICAgICAgIGlmKGNhblBpcGVsaW5lKSB7CiAgICAgICAgICAgLyogV2UgY2FuIHBpcGVsaW5lIGlmIHdlIHdhbnQgdG8uIExldCdzIGNvbnRpbnVlIGxvb2tpbmcgZm9yCiAgICAgICAgICAgICAgdGhlIG9wdGltYWwgY29ubmVjdGlvbiB0byB1c2UsIGkuZSB0aGUgc2hvcnRlc3QgcGlwZSB0aGF0IGlzIG5vdApAQCAtMzQxMywzOSArMzU1MCwxMyBAQAogICAgIHJldHVybiBUUlVFOyAvKiB5ZXMsIHdlIGZvdW5kIG9uZSB0byB1c2UhICovCiAgIH0KIAotICByZXR1cm4gRkFMU0U7IC8qIG5vIG1hdGNoaW5nIGNvbm5lY3RpbmcgZXhpc3RzICovCi19Ci0KLS8qIE1hcmsgdGhlIGNvbm5lY3Rpb24gYXMgJ2lkbGUnLCBvciBjbG9zZSBpdCBpZiB0aGUgY2FjaGUgaXMgZnVsbC4KLSAgIFJldHVybnMgVFJVRSBpZiB0aGUgY29ubmVjdGlvbiBpcyBrZXB0LCBvciBGQUxTRSBpZiBpdCB3YXMgY2xvc2VkLiAqLwotc3RhdGljIGJvb2wKLUNvbm5lY3Rpb25Eb25lKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLCBzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pCi17Ci0gIC8qIGRhdGEtPm11bHRpLT5tYXhjb25uZWN0cyBjYW4gYmUgbmVnYXRpdmUsIGRlYWwgd2l0aCBpdC4gKi8KLSAgc2l6ZV90IG1heGNvbm5lY3RzID0KLSAgICAoZGF0YS0+bXVsdGktPm1heGNvbm5lY3RzIDwgMCkgPyBkYXRhLT5tdWx0aS0+bnVtX2Vhc3kgKiA0OgotICAgIGRhdGEtPm11bHRpLT5tYXhjb25uZWN0czsKLSAgc3RydWN0IGNvbm5lY3RkYXRhICpjb25uX2NhbmRpZGF0ZSA9IE5VTEw7Ci0KLSAgLyogTWFyayB0aGUgY3VycmVudCBjb25uZWN0aW9uIGFzICd1bnVzZWQnICovCi0gIGNvbm4tPmludXNlID0gRkFMU0U7Ci0KLSAgaWYobWF4Y29ubmVjdHMgPiAwICYmCi0gICAgIGRhdGEtPnN0YXRlLmNvbm5fY2FjaGUtPm51bV9jb25uZWN0aW9ucyA+IG1heGNvbm5lY3RzKSB7Ci0gICAgaW5mb2YoZGF0YSwgIkNvbm5lY3Rpb24gY2FjaGUgaXMgZnVsbCwgY2xvc2luZyB0aGUgb2xkZXN0IG9uZS5cbiIpOwotCi0gICAgY29ubl9jYW5kaWRhdGUgPSBmaW5kX29sZGVzdF9pZGxlX2Nvbm5lY3Rpb24oZGF0YSk7Ci0KLSAgICBpZihjb25uX2NhbmRpZGF0ZSkgewotICAgICAgLyogU2V0IHRoZSBjb25uZWN0aW9uJ3Mgb3duZXIgY29ycmVjdGx5ICovCi0gICAgICBjb25uX2NhbmRpZGF0ZS0+ZGF0YSA9IGRhdGE7Ci0KLSAgICAgIC8qIHRoZSB3aW5uZXIgZ2V0cyB0aGUgaG9ub3VyIG9mIGJlaW5nIGRpc2Nvbm5lY3RlZCAqLwotICAgICAgKHZvaWQpQ3VybF9kaXNjb25uZWN0KGNvbm5fY2FuZGlkYXRlLCAvKiBkZWFkX2Nvbm5lY3Rpb24gKi8gRkFMU0UpOwotICAgIH0KKyAgaWYoZm91bmRQZW5kaW5nQ2FuZGlkYXRlICYmIGRhdGEtPnNldC5waXBld2FpdCkgeworICAgIGluZm9mKGRhdGEsCisgICAgICAgICAgIkZvdW5kIHBlbmRpbmcgY2FuZGlkYXRlIGZvciByZXVzZSBhbmQgQ1VSTE9QVF9QSVBFV0FJVCBpcyBzZXRcbiIpOworICAgICp3YWl0cGlwZSA9IFRSVUU7CiAgIH0KIAotICByZXR1cm4gKGNvbm5fY2FuZGlkYXRlID09IGNvbm4pID8gRkFMU0UgOiBUUlVFOworICByZXR1cm4gRkFMU0U7IC8qIG5vIG1hdGNoaW5nIGNvbm5lY3RpbmcgZXhpc3RzICovCiB9CiAKIC8qIGFmdGVyIGEgVENQIGNvbm5lY3Rpb24gdG8gdGhlIHByb3h5IGhhcyBiZWVuIHZlcmlmaWVkLCB0aGlzIGZ1bmN0aW9uIGRvZXMKQEAgLTM0NjcsMTYgKzM1NzgsMjcgQEAKICAgY2FzZSBDVVJMUFJPWFlfU09DS1M1OgogICBjYXNlIENVUkxQUk9YWV9TT0NLUzVfSE9TVE5BTUU6CiAgICAgcmV0dXJuIEN1cmxfU09DS1M1KGNvbm4tPnByb3h5dXNlciwgY29ubi0+cHJveHlwYXNzd2QsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbm4tPmhvc3QubmFtZSwgY29ubi0+cmVtb3RlX3BvcnQsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbm4tPmJpdHMuY29ubl90b19ob3N0ID8gY29ubi0+Y29ubl90b19ob3N0Lm5hbWUgOgorICAgICAgICAgICAgICAgICAgICAgICBjb25uLT5ob3N0Lm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbm4tPmJpdHMuY29ubl90b19wb3J0ID8gY29ubi0+Y29ubl90b19wb3J0IDoKKyAgICAgICAgICAgICAgICAgICAgICAgY29ubi0+cmVtb3RlX3BvcnQsCiAgICAgICAgICAgICAgICAgICAgICAgIEZJUlNUU09DS0VULCBjb25uKTsKIAogICBjYXNlIENVUkxQUk9YWV9TT0NLUzQ6Ci0gICAgcmV0dXJuIEN1cmxfU09DS1M0KGNvbm4tPnByb3h5dXNlciwgY29ubi0+aG9zdC5uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICBjb25uLT5yZW1vdGVfcG9ydCwgRklSU1RTT0NLRVQsIGNvbm4sIEZBTFNFKTsKKyAgICByZXR1cm4gQ3VybF9TT0NLUzQoY29ubi0+cHJveHl1c2VyLAorICAgICAgICAgICAgICAgICAgICAgICBjb25uLT5iaXRzLmNvbm5fdG9faG9zdCA/IGNvbm4tPmNvbm5fdG9faG9zdC5uYW1lIDoKKyAgICAgICAgICAgICAgICAgICAgICAgY29ubi0+aG9zdC5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICBjb25uLT5iaXRzLmNvbm5fdG9fcG9ydCA/IGNvbm4tPmNvbm5fdG9fcG9ydCA6CisgICAgICAgICAgICAgICAgICAgICAgIGNvbm4tPnJlbW90ZV9wb3J0LAorICAgICAgICAgICAgICAgICAgICAgICBGSVJTVFNPQ0tFVCwgY29ubiwgRkFMU0UpOwogCiAgIGNhc2UgQ1VSTFBST1hZX1NPQ0tTNEE6Ci0gICAgcmV0dXJuIEN1cmxfU09DS1M0KGNvbm4tPnByb3h5dXNlciwgY29ubi0+aG9zdC5uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICBjb25uLT5yZW1vdGVfcG9ydCwgRklSU1RTT0NLRVQsIGNvbm4sIFRSVUUpOworICAgIHJldHVybiBDdXJsX1NPQ0tTNChjb25uLT5wcm94eXVzZXIsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbm4tPmJpdHMuY29ubl90b19ob3N0ID8gY29ubi0+Y29ubl90b19ob3N0Lm5hbWUgOgorICAgICAgICAgICAgICAgICAgICAgICBjb25uLT5ob3N0Lm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbm4tPmJpdHMuY29ubl90b19wb3J0ID8gY29ubi0+Y29ubl90b19wb3J0IDoKKyAgICAgICAgICAgICAgICAgICAgICAgY29ubi0+cmVtb3RlX3BvcnQsCisgICAgICAgICAgICAgICAgICAgICAgIEZJUlNUU09DS0VULCBjb25uLCBUUlVFKTsKIAogI2VuZGlmIC8qIENVUkxfRElTQUJMRV9QUk9YWSAqLwogICBjYXNlIENVUkxQUk9YWV9IVFRQOgpAQCAtMzY1MSwxNyArMzc3MywxNiBAQAogICBpZihyYyAhPSBJRE5BX1NVQ0NFU1MpCiAgICAgcmV0dXJuIEZBTFNFOwogCisgIC8qIFdhcm5pbmc6IGVycl9wb3MgcmVjZWl2ZXMgInRoZSBkZWNvZGVkIGNoYXJhY3RlciBvZmZzZXQgcmF0aGVyIHRoYW4gdGhlCisgICAgIGJ5dGUgcG9zaXRpb24gaW4gdGhlIHN0cmluZy4iIEFuZCBhcyBvZiBsaWJpZG4gMS4zMiB0aGF0IGNoYXJhY3RlciBvZmZzZXQKKyAgICAgaXMgZm9yIFVURi04LCBldmVuIGlmIHRoZSBwYXNzZWQgaW4gc3RyaW5nIGlzIGFub3RoZXIgbG9jYWxlLiAqLwogICByYyA9IHRsZF9jaGVja19seih1Y19uYW1lLCAmZXJyX3BvcywgTlVMTCk7CiAjaWZuZGVmIENVUkxfRElTQUJMRV9WRVJCT1NFX1NUUklOR1MKICNpZmRlZiBIQVZFX1RMRF9TVFJFUlJPUgogICBpZihyYyAhPSBUTERfU1VDQ0VTUykKICAgICB0bGRfZXJybXNnID0gdGxkX3N0cmVycm9yKChUbGRfcmMpcmMpOwogI2VuZGlmCi0gIGlmKHJjID09IFRMRF9JTlZBTElEKQotICAgIGluZm9mKGRhdGEsICJXQVJOSU5HOiAlczsgcG9zICV1ID0gYCVjJy8weCUwMlhcbiIsCi0gICAgICAgICAgdGxkX2Vycm1zZywgZXJyX3BvcywgdWNfbmFtZVtlcnJfcG9zXSwKLSAgICAgICAgICB1Y19uYW1lW2Vycl9wb3NdICYgMjU1KTsKLSAgZWxzZSBpZihyYyAhPSBUTERfU1VDQ0VTUykKKyAgaWYocmMgIT0gVExEX1NVQ0NFU1MpCiAgICAgaW5mb2YoZGF0YSwgIldBUk5JTkc6IFRMRCBjaGVjayBmb3IgJXMgZmFpbGVkOyAlc1xuIiwKICAgICAgICAgICB1Y19uYW1lLCB0bGRfZXJybXNnKTsKICNlbmRpZiAvKiBDVVJMX0RJU0FCTEVfVkVSQk9TRV9TVFJJTkdTICovCkBAIC0zNjk4LDQ5ICszODE5LDY0IEBACiAgICAgICAgdGhlcmUncyBubyB1c2UgZm9yIGl0ICovCiAgICAgaG9zdC0+bmFtZVtsZW4tMV09MDsKIAorICAvKiBDaGVjayBuYW1lIGZvciBub24tQVNDSUkgYW5kIGNvbnZlcnQgaG9zdG5hbWUgdG8gQUNFIGZvcm0gaWYgd2UgY2FuICovCiAgIGlmKCFpc19BU0NJSV9uYW1lKGhvc3QtPm5hbWUpKSB7CiAjaWZkZWYgVVNFX0xJQklETgotICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAgKiBDaGVjayBuYW1lIGZvciBub24tQVNDSUkgYW5kIGNvbnZlcnQgaG9zdG5hbWUgdG8gQUNFIGZvcm0uCi0gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotICBpZihzdHJpbmdwcmVwX2NoZWNrX3ZlcnNpb24oTElCSUROX1JFUVVJUkVEX1ZFUlNJT04pKSB7Ci0gICAgY2hhciAqYWNlX2hvc3RuYW1lID0gTlVMTDsKLSAgICBpbnQgcmMgPSBpZG5hX3RvX2FzY2lpX2x6KGhvc3QtPm5hbWUsICZhY2VfaG9zdG5hbWUsIDApOwotICAgIGluZm9mIChkYXRhLCAiSW5wdXQgZG9tYWluIGVuY29kZWQgYXMgYCVzJ1xuIiwKLSAgICAgICAgICAgc3RyaW5ncHJlcF9sb2NhbGVfY2hhcnNldCAoKSk7Ci0gICAgaWYocmMgIT0gSUROQV9TVUNDRVNTKQotICAgICAgaW5mb2YoZGF0YSwgIkZhaWxlZCB0byBjb252ZXJ0ICVzIHRvIEFDRTsgJXNcbiIsCi0gICAgICAgICAgICBob3N0LT5uYW1lLCBDdXJsX2lkbl9zdHJlcnJvcihjb25uLCByYykpOwotICAgIGVsc2UgewotICAgICAgLyogdGxkX2NoZWNrX25hbWUoKSBkaXNwbGF5cyBhIHdhcm5pbmcgaWYgdGhlIGhvc3QgbmFtZSBjb250YWlucwotICAgICAgICAgImlsbGVnYWwiIGNoYXJhY3RlcnMgZm9yIHRoaXMgVExEICovCi0gICAgICAodm9pZCl0bGRfY2hlY2tfbmFtZShkYXRhLCBhY2VfaG9zdG5hbWUpOworICAgIGlmKHN0cmluZ3ByZXBfY2hlY2tfdmVyc2lvbihMSUJJRE5fUkVRVUlSRURfVkVSU0lPTikpIHsKKyAgICAgIGNoYXIgKmFjZV9ob3N0bmFtZSA9IE5VTEw7CiAKLSAgICAgIGhvc3QtPmVuY2FsbG9jID0gYWNlX2hvc3RuYW1lOwotICAgICAgLyogY2hhbmdlIHRoZSBuYW1lIHBvaW50ZXIgdG8gcG9pbnQgdG8gdGhlIGVuY29kZWQgaG9zdG5hbWUgKi8KLSAgICAgIGhvc3QtPm5hbWUgPSBob3N0LT5lbmNhbGxvYzsKKyAgICAgIGludCByYyA9IGlkbmFfdG9fYXNjaWlfbHooaG9zdC0+bmFtZSwgJmFjZV9ob3N0bmFtZSwgMCk7CisgICAgICBpbmZvZihkYXRhLCAiSW5wdXQgZG9tYWluIGVuY29kZWQgYXMgYCVzJ1xuIiwKKyAgICAgICAgICAgIHN0cmluZ3ByZXBfbG9jYWxlX2NoYXJzZXQoKSk7CisgICAgICBpZihyYyA9PSBJRE5BX1NVQ0NFU1MpIHsKKyAgICAgICAgLyogdGxkX2NoZWNrX25hbWUoKSBkaXNwbGF5cyBhIHdhcm5pbmcgaWYgdGhlIGhvc3QgbmFtZSBjb250YWlucworICAgICAgICAgICAiaWxsZWdhbCIgY2hhcmFjdGVycyBmb3IgdGhpcyBUTEQgKi8KKyAgICAgICAgKHZvaWQpdGxkX2NoZWNrX25hbWUoZGF0YSwgYWNlX2hvc3RuYW1lKTsKKworICAgICAgICBob3N0LT5lbmNhbGxvYyA9IGFjZV9ob3N0bmFtZTsKKyAgICAgICAgLyogY2hhbmdlIHRoZSBuYW1lIHBvaW50ZXIgdG8gcG9pbnQgdG8gdGhlIGVuY29kZWQgaG9zdG5hbWUgKi8KKyAgICAgICAgaG9zdC0+bmFtZSA9IGhvc3QtPmVuY2FsbG9jOworICAgICAgfQorICAgICAgZWxzZQorICAgICAgICBpbmZvZihkYXRhLCAiRmFpbGVkIHRvIGNvbnZlcnQgJXMgdG8gQUNFOyAlc1xuIiwgaG9zdC0+bmFtZSwKKyAgICAgICAgICAgICAgQ3VybF9pZG5fc3RyZXJyb3IoY29ubiwgcmMpKTsKICAgICB9Ci0gIH0KICNlbGlmIGRlZmluZWQoVVNFX1dJTjMyX0lETikKLSAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgICogQ2hlY2sgbmFtZSBmb3Igbm9uLUFTQ0lJIGFuZCBjb252ZXJ0IGhvc3RuYW1lIHRvIEFDRSBmb3JtLgotICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KICAgICBjaGFyICphY2VfaG9zdG5hbWUgPSBOVUxMOwotICAgIGludCByYyA9IGN1cmxfd2luMzJfaWRuX3RvX2FzY2lpKGhvc3QtPm5hbWUsICZhY2VfaG9zdG5hbWUpOwotICAgIGlmKHJjID09IDApCi0gICAgICBpbmZvZihkYXRhLCAiRmFpbGVkIHRvIGNvbnZlcnQgJXMgdG8gQUNFO1xuIiwKLSAgICAgICAgICAgIGhvc3QtPm5hbWUpOwotICAgIGVsc2UgeworCisgICAgaWYoY3VybF93aW4zMl9pZG5fdG9fYXNjaWkoaG9zdC0+bmFtZSwgJmFjZV9ob3N0bmFtZSkpIHsKICAgICAgIGhvc3QtPmVuY2FsbG9jID0gYWNlX2hvc3RuYW1lOwogICAgICAgLyogY2hhbmdlIHRoZSBuYW1lIHBvaW50ZXIgdG8gcG9pbnQgdG8gdGhlIGVuY29kZWQgaG9zdG5hbWUgKi8KICAgICAgIGhvc3QtPm5hbWUgPSBob3N0LT5lbmNhbGxvYzsKICAgICB9CisgICAgZWxzZQorICAgICAgaW5mb2YoZGF0YSwgIkZhaWxlZCB0byBjb252ZXJ0ICVzIHRvIEFDRTtcbiIsIGhvc3QtPm5hbWUpOwogI2Vsc2UKICAgICBpbmZvZihkYXRhLCAiSUROIHN1cHBvcnQgbm90IHByZXNlbnQsIGNhbid0IHBhcnNlIFVuaWNvZGUgZG9tYWluc1xuIik7CiAjZW5kaWYKICAgfQogfQogCisvKgorICogRnJlZXMgZGF0YSBhbGxvY2F0ZWQgYnkgZml4X2hvc3RuYW1lKCkKKyAqLworc3RhdGljIHZvaWQgZnJlZV9maXhlZF9ob3N0bmFtZShzdHJ1Y3QgaG9zdG5hbWUgKmhvc3QpCit7CisjaWYgZGVmaW5lZChVU0VfTElCSUROKQorICBpZihob3N0LT5lbmNhbGxvYykgeworICAgIGlkbl9mcmVlKGhvc3QtPmVuY2FsbG9jKTsgLyogbXVzdCBiZSBmcmVlZCB3aXRoIGlkbl9mcmVlKCkgc2luY2UgdGhpcyB3YXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG9jYXRlZCBieSBsaWJpZG4gKi8KKyAgICBob3N0LT5lbmNhbGxvYyA9IE5VTEw7CisgIH0KKyNlbGlmIGRlZmluZWQoVVNFX1dJTjMyX0lETikKKyAgZnJlZShob3N0LT5lbmNhbGxvYyk7IC8qIG11c3QgYmUgZnJlZWQgd2l0aGlkbl9mcmVlKCkgc2luY2UgdGhpcyB3YXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG9jYXRlZCBieSBjdXJsX3dpbjMyX2lkbl90b19hc2NpaSAqLworICBob3N0LT5lbmNhbGxvYyA9IE5VTEw7CisjZWxzZQorICAodm9pZClob3N0OworI2VuZGlmCit9CisKIHN0YXRpYyB2b2lkIGxsaXN0X2R0b3Iodm9pZCAqdXNlciwgdm9pZCAqZWxlbWVudCkKIHsKICAgKHZvaWQpdXNlcjsKQEAgLTM3NzAsNiArMzkwNiwxMCBAQAogICBjb25uLT5jb25uZWN0aW9uX2lkID0gLTE7ICAgIC8qIG5vIElEICovCiAgIGNvbm4tPnBvcnQgPSAtMTsgLyogdW5rbm93biBhdCB0aGlzIHBvaW50ICovCiAgIGNvbm4tPnJlbW90ZV9wb3J0ID0gLTE7IC8qIHVua25vd24gKi8KKyNpZiBkZWZpbmVkKFVTRV9SRUNWX0JFRk9SRV9TRU5EX1dPUktBUk9VTkQpICYmIGRlZmluZWQoREVCVUdCVUlMRCkKKyAgY29ubi0+cG9zdHBvbmVkWzBdLmJpbmRzb2NrID0gQ1VSTF9TT0NLRVRfQkFEOyAvKiBubyBmaWxlIGRlc2NyaXB0b3IgKi8KKyAgY29ubi0+cG9zdHBvbmVkWzFdLmJpbmRzb2NrID0gQ1VSTF9TT0NLRVRfQkFEOyAvKiBubyBmaWxlIGRlc2NyaXB0b3IgKi8KKyNlbmRpZiAvKiBVU0VfUkVDVl9CRUZPUkVfU0VORF9XT1JLQVJPVU5EICYmIERFQlVHQlVJTEQgKi8KIAogICAvKiBEZWZhdWx0IHByb3RvY29sLWluZGVwZW5kZW50IGJlaGF2aW9yIGRvZXNuJ3Qgc3VwcG9ydCBwZXJzaXN0ZW50CiAgICAgIGNvbm5lY3Rpb25zLCBzbyB3ZSBzZXQgdGhpcyB0byBmb3JjZS1jbG9zZS4gUHJvdG9jb2xzIHRoYXQgc3VwcG9ydApAQCAtMzc5NiwxNyArMzkzNiwxOCBAQAogICAvKiBub3RlIHRoYXQgdGhlc2UgdHdvIHByb3h5IGJpdHMgYXJlIG5vdyBqdXN0IG9uIHdoYXQgbG9va3MgdG8gYmUKICAgICAgcmVxdWVzdGVkLCB0aGV5IG1heSBiZSBhbHRlcmVkIGRvd24gdGhlIHJvYWQgKi8KICAgY29ubi0+Yml0cy5wcm94eSA9IChkYXRhLT5zZXQuc3RyW1NUUklOR19QUk9YWV0gJiYKLSAgICAgICAgICAgICAgICAgICAgICAqZGF0YS0+c2V0LnN0cltTVFJJTkdfUFJPWFldKT9UUlVFOkZBTFNFOworICAgICAgICAgICAgICAgICAgICAgICpkYXRhLT5zZXQuc3RyW1NUUklOR19QUk9YWV0pID8gVFJVRSA6IEZBTFNFOwogICBjb25uLT5iaXRzLmh0dHBwcm94eSA9IChjb25uLT5iaXRzLnByb3h5ICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25uLT5wcm94eXR5cGUgPT0gQ1VSTFBST1hZX0hUVFAgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm4tPnByb3h5dHlwZSA9PSBDVVJMUFJPWFlfSFRUUF8xXzApKT9UUlVFOkZBTFNFOwotICBjb25uLT5iaXRzLnByb3h5X3VzZXJfcGFzc3dkID0KLSAgICAoTlVMTCAhPSBkYXRhLT5zZXQuc3RyW1NUUklOR19QUk9YWVVTRVJOQU1FXSk/VFJVRTpGQUxTRTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm4tPnByb3h5dHlwZSA9PSBDVVJMUFJPWFlfSFRUUF8xXzApKSA/CisgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUgOiBGQUxTRTsKKyAgY29ubi0+Yml0cy5wcm94eV91c2VyX3Bhc3N3ZCA9IChkYXRhLT5zZXQuc3RyW1NUUklOR19QUk9YWVVTRVJOQU1FXSkgPworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSA6IEZBTFNFOwogICBjb25uLT5iaXRzLnR1bm5lbF9wcm94eSA9IGRhdGEtPnNldC50dW5uZWxfdGhydV9odHRwcHJveHk7CiAKICNlbmRpZiAvKiBDVVJMX0RJU0FCTEVfUFJPWFkgKi8KIAotICBjb25uLT5iaXRzLnVzZXJfcGFzc3dkID0gKE5VTEwgIT0gZGF0YS0+c2V0LnN0cltTVFJJTkdfVVNFUk5BTUVdKT9UUlVFOkZBTFNFOworICBjb25uLT5iaXRzLnVzZXJfcGFzc3dkID0gKGRhdGEtPnNldC5zdHJbU1RSSU5HX1VTRVJOQU1FXSkgPyBUUlVFIDogRkFMU0U7CiAgIGNvbm4tPmJpdHMuZnRwX3VzZV9lcHN2ID0gZGF0YS0+c2V0LmZ0cF91c2VfZXBzdjsKICAgY29ubi0+Yml0cy5mdHBfdXNlX2VwcnQgPSBkYXRhLT5zZXQuZnRwX3VzZV9lcHJ0OwogCkBAIC00MDI4LDI3ICs0MTY5LDMwIEBACiAgICAgICB9CiAKICAgICAgIC8qCi0gICAgICAgKiBTaW5jZSB0aGVyZSB3YXMgbm8gcHJvdG9jb2wgcGFydCBzcGVjaWZpZWQsIHdlIGd1ZXNzIHdoYXQgcHJvdG9jb2wgaXQKLSAgICAgICAqIGlzIGJhc2VkIG9uIHRoZSBmaXJzdCBsZXR0ZXJzIG9mIHRoZSBzZXJ2ZXIgbmFtZS4KKyAgICAgICAqIFNpbmNlIHRoZXJlIHdhcyBubyBwcm90b2NvbCBwYXJ0IHNwZWNpZmllZCBpbiB0aGUgVVJMIHVzZSB0aGUKKyAgICAgICAqIHVzZXItc3BlY2lmaWVkIGRlZmF1bHQgcHJvdG9jb2wuIElmIHdlIHdlcmVuJ3QgZ2l2ZW4gYSBkZWZhdWx0IG1ha2UgYQorICAgICAgICogZ3Vlc3MgYnkgbWF0Y2hpbmcgc29tZSBwcm90b2NvbHMgYWdhaW5zdCB0aGUgaG9zdCdzIG91dGVybW9zdAorICAgICAgICogc3ViLWRvbWFpbiBuYW1lLiBGaW5hbGx5IGlmIHRoZXJlIHdhcyBubyBtYXRjaCB1c2UgSFRUUC4KICAgICAgICAqLwogCi0gICAgICAvKiBOb3RlOiBpZiB5b3UgYWRkIGEgbmV3IHByb3RvY29sLCBwbGVhc2UgdXBkYXRlIHRoZSBsaXN0IGluCi0gICAgICAgKiBsaWIvdmVyc2lvbi5jIHRvbyEgKi8KLQotICAgICAgaWYoY2hlY2twcmVmaXgoIkZUUC4iLCBjb25uLT5ob3N0Lm5hbWUpKQotICAgICAgICBwcm90b3AgPSAiZnRwIjsKLSAgICAgIGVsc2UgaWYoY2hlY2twcmVmaXgoIkRJQ1QuIiwgY29ubi0+aG9zdC5uYW1lKSkKLSAgICAgICAgcHJvdG9wID0gIkRJQ1QiOwotICAgICAgZWxzZSBpZihjaGVja3ByZWZpeCgiTERBUC4iLCBjb25uLT5ob3N0Lm5hbWUpKQotICAgICAgICBwcm90b3AgPSAiTERBUCI7Ci0gICAgICBlbHNlIGlmKGNoZWNrcHJlZml4KCJJTUFQLiIsIGNvbm4tPmhvc3QubmFtZSkpCi0gICAgICAgIHByb3RvcCA9ICJJTUFQIjsKLSAgICAgIGVsc2UgaWYoY2hlY2twcmVmaXgoIlNNVFAuIiwgY29ubi0+aG9zdC5uYW1lKSkKLSAgICAgICAgcHJvdG9wID0gInNtdHAiOwotICAgICAgZWxzZSBpZihjaGVja3ByZWZpeCgiUE9QMy4iLCBjb25uLT5ob3N0Lm5hbWUpKQotICAgICAgICBwcm90b3AgPSAicG9wMyI7Ci0gICAgICBlbHNlIHsKLSAgICAgICAgcHJvdG9wID0gImh0dHAiOworICAgICAgcHJvdG9wID0gZGF0YS0+c2V0LnN0cltTVFJJTkdfREVGQVVMVF9QUk9UT0NPTF07CisgICAgICBpZighcHJvdG9wKSB7CisgICAgICAgIC8qIE5vdGU6IGlmIHlvdSBhZGQgYSBuZXcgcHJvdG9jb2wsIHBsZWFzZSB1cGRhdGUgdGhlIGxpc3QgaW4KKyAgICAgICAgICogbGliL3ZlcnNpb24uYyB0b28hICovCisgICAgICAgIGlmKGNoZWNrcHJlZml4KCJGVFAuIiwgY29ubi0+aG9zdC5uYW1lKSkKKyAgICAgICAgICBwcm90b3AgPSAiZnRwIjsKKyAgICAgICAgZWxzZSBpZihjaGVja3ByZWZpeCgiRElDVC4iLCBjb25uLT5ob3N0Lm5hbWUpKQorICAgICAgICAgIHByb3RvcCA9ICJESUNUIjsKKyAgICAgICAgZWxzZSBpZihjaGVja3ByZWZpeCgiTERBUC4iLCBjb25uLT5ob3N0Lm5hbWUpKQorICAgICAgICAgIHByb3RvcCA9ICJMREFQIjsKKyAgICAgICAgZWxzZSBpZihjaGVja3ByZWZpeCgiSU1BUC4iLCBjb25uLT5ob3N0Lm5hbWUpKQorICAgICAgICAgIHByb3RvcCA9ICJJTUFQIjsKKyAgICAgICAgZWxzZSBpZihjaGVja3ByZWZpeCgiU01UUC4iLCBjb25uLT5ob3N0Lm5hbWUpKQorICAgICAgICAgIHByb3RvcCA9ICJzbXRwIjsKKyAgICAgICAgZWxzZSBpZihjaGVja3ByZWZpeCgiUE9QMy4iLCBjb25uLT5ob3N0Lm5hbWUpKQorICAgICAgICAgIHByb3RvcCA9ICJwb3AzIjsKKyAgICAgICAgZWxzZQorICAgICAgICAgIHByb3RvcCA9ICJodHRwIjsKICAgICAgIH0KIAogICAgICAgKnByb3RfbWlzc2luZyA9IFRSVUU7IC8qIG5vdCBnaXZlbiBpbiBVUkwgKi8KQEAgLTQyNzMsNyArNDQxNyw3IEBACiAgICAgZWxzZQogICAgICAgcy0+cmFuZ2UgPSBzdHJkdXAoZGF0YS0+c2V0LnN0cltTVFJJTkdfU0VUX1JBTkdFXSk7CiAKLSAgICBzLT5yYW5nZXN0cmluZ2FsbG9jID0gKHMtPnJhbmdlKT9UUlVFOkZBTFNFOworICAgIHMtPnJhbmdlc3RyaW5nYWxsb2MgPSAocy0+cmFuZ2UpID8gVFJVRSA6IEZBTFNFOwogCiAgICAgaWYoIXMtPnJhbmdlKQogICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CkBAIC00MzMyLDExICs0NDc2LDYgQEAKICAgICAgICB3YXMgdmVyeSBsaWtlbHkgYWxyZWFkeSBzZXQgdG8gdGhlIHByb3h5IHBvcnQgKi8KICAgICBjb25uLT5wb3J0ID0gcC0+ZGVmcG9ydDsKIAotICAvKiBvbmx5IGlmIHJlbW90ZV9wb3J0IHdhcyBub3QgYWxyZWFkeSBwYXJzZWQgb2ZmIHRoZSBVUkwgd2UgdXNlIHRoZQotICAgICBkZWZhdWx0IHBvcnQgbnVtYmVyICovCi0gIGlmKGNvbm4tPnJlbW90ZV9wb3J0IDwgMCkKLSAgICBjb25uLT5yZW1vdGVfcG9ydCA9ICh1bnNpZ25lZCBzaG9ydCljb25uLT5naXZlbi0+ZGVmcG9ydDsKLQogICByZXR1cm4gQ1VSTEVfT0s7CiB9CiAKQEAgLTQ2MTEsNyArNDc1MCw3IEBACiAgICAgICBpZihzdHJuY21wKCIlMjUiLCBwdHIsIDMpKQogICAgICAgICBpbmZvZihkYXRhLCAiUGxlYXNlIFVSTCBlbmNvZGUgJSUgYXMgJSUyNSwgc2VlIFJGQyA2ODc0LlxuIik7CiAgICAgICBwdHIrKzsKLSAgICAgIC8qIEFsbG93IHVucmVzZXJlZCBjaGFyYWN0ZXJzIGFzIGRlZmluZWQgaW4gUkZDIDM5ODYgKi8KKyAgICAgIC8qIEFsbG93IHVucmVzZXJ2ZWQgY2hhcmFjdGVycyBhcyBkZWZpbmVkIGluIFJGQyAzOTg2ICovCiAgICAgICB3aGlsZSgqcHRyICYmIChJU0FMUEhBKCpwdHIpIHx8IElTWERJR0lUKCpwdHIpIHx8ICgqcHRyID09ICctJykgfHwKICAgICAgICAgICAgICAgICAgICAgICgqcHRyID09ICcuJykgfHwgKCpwdHIgPT0gJ18nKSB8fCAoKnB0ciA9PSAnficpKSkKICAgICAgICAgcHRyKys7CkBAIC00NjMxLDEwICs0NzcwLDI0IEBACiAgIC8qIEdldCBwb3J0IG51bWJlciBvZmYgcHJveHkuc2VydmVyLmNvbToxMDgwICovCiAgIHByb3hfcG9ydG5vID0gc3RyY2hyKHBvcnRwdHIsICc6Jyk7CiAgIGlmKHByb3hfcG9ydG5vKSB7CisgICAgY2hhciAqZW5kcCA9IE5VTEw7CisgICAgbG9uZyBwb3J0ID0gMDsKICAgICAqcHJveF9wb3J0bm8gPSAweDA7IC8qIGN1dCBvZmYgbnVtYmVyIGZyb20gaG9zdCBuYW1lICovCiAgICAgcHJveF9wb3J0bm8gKys7CiAgICAgLyogbm93IHNldCB0aGUgbG9jYWwgcG9ydCBudW1iZXIgKi8KLSAgICBjb25uLT5wb3J0ID0gc3RydG9sKHByb3hfcG9ydG5vLCBOVUxMLCAxMCk7CisgICAgcG9ydCA9IHN0cnRvbChwcm94X3BvcnRubywgJmVuZHAsIDEwKTsKKyAgICBpZigoZW5kcCAmJiAqZW5kcCAmJiAoKmVuZHAgIT0gJy8nKSAmJiAoKmVuZHAgIT0gJyAnKSkgfHwKKyAgICAgICAocG9ydCA8IDApIHx8IChwb3J0ID4gNjU1MzUpKSB7CisgICAgICAvKiBtZWFudCB0byBkZXRlY3QgZm9yIGV4YW1wbGUgaW52YWxpZCBJUHY2IG51bWVyaWNhbCBhZGRyZXNzZXMgd2l0aG91dAorICAgICAgICAgYnJhY2tldHM6ICIyYTAwOmZhYzA6YTAwMDo6NzoxMyIuIEFjY2VwdCBhIHRyYWlsaW5nIHNsYXNoIG9ubHkKKyAgICAgICAgIGJlY2F1c2Ugd2UgdGhlbiBhbGxvdyAiVVJMIHN0eWxlIiB3aXRoIHRoZSBudW1iZXIgZm9sbG93ZWQgYnkgYQorICAgICAgICAgc2xhc2gsIHVzZWQgaW4gY3VybCB0ZXN0IGNhc2VzIGFscmVhZHkuIFNwYWNlIGlzIGFsc28gYW4gYWNjZXB0YWJsZQorICAgICAgICAgdGVybWluYXRpbmcgc3ltYm9sLiAqLworICAgICAgaW5mb2YoZGF0YSwgIk5vIHZhbGlkIHBvcnQgbnVtYmVyIGluIHByb3h5IHN0cmluZyAoJXMpXG4iLAorICAgICAgICAgICAgcHJveF9wb3J0bm8pOworICAgIH0KKyAgICBlbHNlCisgICAgICBjb25uLT5wb3J0ID0gcG9ydDsKICAgfQogICBlbHNlIHsKICAgICBpZihwcm94eXB0clswXT09Jy8nKQpAQCAtNDY0Nyw3ICs0ODAwLDcgQEAKICAgICAgICBhIHNsYXNoIHNvIHdlIHN0cmlwIGV2ZXJ5dGhpbmcgZnJvbSB0aGUgZmlyc3Qgc2xhc2ggKi8KICAgICBhdHNpZ24gPSBzdHJjaHIocHJveHlwdHIsICcvJyk7CiAgICAgaWYoYXRzaWduKQotICAgICAgKmF0c2lnbiA9IDB4MDsgLyogY3V0IG9mZiBwYXRoIHBhcnQgZnJvbSBob3N0IG5hbWUgKi8KKyAgICAgICphdHNpZ24gPSAnXDAnOyAvKiBjdXQgb2ZmIHBhdGggcGFydCBmcm9tIGhvc3QgbmFtZSAqLwogCiAgICAgaWYoZGF0YS0+c2V0LnByb3h5cG9ydCkKICAgICAgIC8qIE5vbmUgZ2l2ZW4gaW4gdGhlIHByb3h5IHN0cmluZywgdGhlbiBnZXQgdGhlIGRlZmF1bHQgb25lIGlmIGl0IGlzCkBAIC01MDUxLDYgKzUyMDQsMTIgQEAKICAgICAgICAgIHVzZSB0aGUgZGVmYXVsdCBwb3J0LiBGaXJlZm94IGFuZCBDaHJvbWUgYm90aCBkbyB0aGF0LiAqLwogICAgICAgKnBvcnRwdHIgPSAnXDAnOwogICB9CisKKyAgLyogb25seSBpZiByZW1vdGVfcG9ydCB3YXMgbm90IGFscmVhZHkgcGFyc2VkIG9mZiB0aGUgVVJMIHdlIHVzZSB0aGUKKyAgICAgZGVmYXVsdCBwb3J0IG51bWJlciAqLworICBpZihjb25uLT5yZW1vdGVfcG9ydCA8IDApCisgICAgY29ubi0+cmVtb3RlX3BvcnQgPSAodW5zaWduZWQgc2hvcnQpY29ubi0+Z2l2ZW4tPmRlZnBvcnQ7CisKICAgcmV0dXJuIENVUkxFX09LOwogfQogCkBAIC01MDkzLDcgKzUyNTIsNyBAQAogICAgICAgICAgICAgRE9UX0NIQVIgIm5ldHJjIGZpbGU7IHVzaW5nIGRlZmF1bHRzXG4iLAogICAgICAgICAgICAgY29ubi0+aG9zdC5uYW1lKTsKICAgICB9Ci0gICAgZWxzZSBpZihyZXQgPCAwICkgeworICAgIGVsc2UgaWYocmV0IDwgMCkgewogICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CiAgICAgfQogICAgIGVsc2UgewpAQCAtNTE1Niw2ICs1MzE1LDIxNCBAQAogICByZXR1cm4gcmVzdWx0OwogfQogCisvKgorICogUGFyc2VzIGEgImhvc3Q6cG9ydCIgc3RyaW5nIHRvIGNvbm5lY3QgdG8uCisgKiBUaGUgaG9zdG5hbWUgYW5kIHRoZSBwb3J0IG1heSBiZSBlbXB0eTsgaW4gdGhpcyBjYXNlLCBOVUxMIGlzIHJldHVybmVkIGZvcgorICogdGhlIGhvc3RuYW1lIGFuZCAtMSBmb3IgdGhlIHBvcnQuCisgKi8KK3N0YXRpYyBDVVJMY29kZSBwYXJzZV9jb25uZWN0X3RvX2hvc3RfcG9ydChzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpob3N0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipob3N0bmFtZV9yZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpwb3J0X3Jlc3VsdCkKK3sKKyAgY2hhciAqaG9zdF9kdXA7CisgIGNoYXIgKmhvc3RwdHI7CisgIGNoYXIgKmhvc3RfcG9ydG5vOworICBjaGFyICpwb3J0cHRyOworICBpbnQgcG9ydCA9IC0xOworCisgICpob3N0bmFtZV9yZXN1bHQgPSBOVUxMOworICAqcG9ydF9yZXN1bHQgPSAtMTsKKworICBpZighaG9zdCB8fCAhKmhvc3QpCisgICAgcmV0dXJuIENVUkxFX09LOworCisgIGhvc3RfZHVwID0gc3RyZHVwKGhvc3QpOworICBpZighaG9zdF9kdXApCisgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisKKyAgaG9zdHB0ciA9IGhvc3RfZHVwOworCisgIC8qIHN0YXJ0IHNjYW5uaW5nIGZvciBwb3J0IG51bWJlciBhdCB0aGlzIHBvaW50ICovCisgIHBvcnRwdHIgPSBob3N0cHRyOworCisgIC8qIGRldGVjdCBhbmQgZXh0cmFjdCBSRkM2ODc0LXN0eWxlIElQdjYtYWRkcmVzc2VzICovCisgIGlmKCpob3N0cHRyID09ICdbJykgeworICAgIGNoYXIgKnB0ciA9ICsraG9zdHB0cjsgLyogYWR2YW5jZSBiZXlvbmQgdGhlIGluaXRpYWwgYnJhY2tldCAqLworICAgIHdoaWxlKCpwdHIgJiYgKElTWERJR0lUKCpwdHIpIHx8ICgqcHRyID09ICc6JykgfHwgKCpwdHIgPT0gJy4nKSkpCisgICAgICBwdHIrKzsKKyAgICBpZigqcHRyID09ICclJykgeworICAgICAgLyogVGhlcmUgbWlnaHQgYmUgYSB6b25lIGlkZW50aWZpZXIgKi8KKyAgICAgIGlmKHN0cm5jbXAoIiUyNSIsIHB0ciwgMykpCisgICAgICAgIGluZm9mKGRhdGEsICJQbGVhc2UgVVJMIGVuY29kZSAlJSBhcyAlJTI1LCBzZWUgUkZDIDY4NzQuXG4iKTsKKyAgICAgIHB0cisrOworICAgICAgLyogQWxsb3cgdW5yZXNlcnZlZCBjaGFyYWN0ZXJzIGFzIGRlZmluZWQgaW4gUkZDIDM5ODYgKi8KKyAgICAgIHdoaWxlKCpwdHIgJiYgKElTQUxQSEEoKnB0cikgfHwgSVNYRElHSVQoKnB0cikgfHwgKCpwdHIgPT0gJy0nKSB8fAorICAgICAgICAgICAgICAgICAgICAgKCpwdHIgPT0gJy4nKSB8fCAoKnB0ciA9PSAnXycpIHx8ICgqcHRyID09ICd+JykpKQorICAgICAgICBwdHIrKzsKKyAgICB9CisgICAgaWYoKnB0ciA9PSAnXScpCisgICAgICAvKiB5ZXBzLCBpdCBlbmRlZCBuaWNlbHkgd2l0aCBhIGJyYWNrZXQgYXMgd2VsbCAqLworICAgICAgKnB0cisrID0gJ1wwJzsKKyAgICBlbHNlCisgICAgICBpbmZvZihkYXRhLCAiSW52YWxpZCBJUHY2IGFkZHJlc3MgZm9ybWF0XG4iKTsKKyAgICBwb3J0cHRyID0gcHRyOworICAgIC8qIE5vdGUgdGhhdCBpZiB0aGlzIGRpZG4ndCBlbmQgd2l0aCBhIGJyYWNrZXQsIHdlIHN0aWxsIGFkdmFuY2VkIHRoZQorICAgICAqIGhvc3RwdHIgZmlyc3QsIGJ1dCBJIGNhbid0IHNlZSBhbnl0aGluZyB3cm9uZyB3aXRoIHRoYXQgYXMgbm8gaG9zdAorICAgICAqIG5hbWUgbm9yIGEgbnVtZXJpYyBjYW4gbGVnYWxseSBzdGFydCB3aXRoIGEgYnJhY2tldC4KKyAgICAgKi8KKyAgfQorCisgIC8qIEdldCBwb3J0IG51bWJlciBvZmYgc2VydmVyLmNvbToxMDgwICovCisgIGhvc3RfcG9ydG5vID0gc3RyY2hyKHBvcnRwdHIsICc6Jyk7CisgIGlmKGhvc3RfcG9ydG5vKSB7CisgICAgY2hhciAqZW5kcCA9IE5VTEw7CisgICAgKmhvc3RfcG9ydG5vID0gJ1wwJzsgLyogY3V0IG9mZiBudW1iZXIgZnJvbSBob3N0IG5hbWUgKi8KKyAgICBob3N0X3BvcnRubysrOworICAgIGlmKCpob3N0X3BvcnRubykgeworICAgICAgbG9uZyBwb3J0cGFyc2UgPSBzdHJ0b2woaG9zdF9wb3J0bm8sICZlbmRwLCAxMCk7CisgICAgICBpZigoZW5kcCAmJiAqZW5kcCkgfHwgKHBvcnRwYXJzZSA8IDApIHx8IChwb3J0cGFyc2UgPiA2NTUzNSkpIHsKKyAgICAgICAgaW5mb2YoZGF0YSwgIk5vIHZhbGlkIHBvcnQgbnVtYmVyIGluIGNvbm5lY3QgdG8gaG9zdCBzdHJpbmcgKCVzKVxuIiwKKyAgICAgICAgICAgICAgaG9zdF9wb3J0bm8pOworICAgICAgICBob3N0cHRyID0gTlVMTDsKKyAgICAgICAgcG9ydCA9IC0xOworICAgICAgfQorICAgICAgZWxzZQorICAgICAgICBwb3J0ID0gKGludClwb3J0cGFyc2U7IC8qIHdlIGtub3cgaXQgd2lsbCBmaXQgKi8KKyAgICB9CisgIH0KKworICAvKiBub3csIGNsb25lIHRoZSBjbGVhbmVkIGhvc3QgbmFtZSAqLworICBpZihob3N0cHRyKSB7CisgICAgKmhvc3RuYW1lX3Jlc3VsdCA9IHN0cmR1cChob3N0cHRyKTsKKyAgICBpZighKmhvc3RuYW1lX3Jlc3VsdCkgeworICAgICAgZnJlZShob3N0X2R1cCk7CisgICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKyAgICB9CisgIH0KKworICAqcG9ydF9yZXN1bHQgPSBwb3J0OworCisgIGZyZWUoaG9zdF9kdXApOworICByZXR1cm4gQ1VSTEVfT0s7Cit9CisKKy8qCisgKiBQYXJzZXMgb25lICJjb25uZWN0IHRvIiBzdHJpbmcgaW4gdGhlIGZvcm06CisgKiAiSE9TVDpQT1JUOkNPTk5FQ1QtVE8tSE9TVDpDT05ORUNULVRPLVBPUlQiLgorICovCitzdGF0aWMgQ1VSTGNvZGUgcGFyc2VfY29ubmVjdF90b19zdHJpbmcoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNvbm5fdG9faG9zdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqaG9zdF9yZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpwb3J0X3Jlc3VsdCkKK3sKKyAgQ1VSTGNvZGUgcmVzdWx0ID0gQ1VSTEVfT0s7CisgIGNvbnN0IGNoYXIgKnB0ciA9IGNvbm5fdG9faG9zdDsKKyAgaW50IGhvc3RfbWF0Y2ggPSBGQUxTRTsKKyAgaW50IHBvcnRfbWF0Y2ggPSBGQUxTRTsKKworICBpZigqcHRyID09ICc6JykgeworICAgIC8qIGFuIGVtcHR5IGhvc3RuYW1lIGFsd2F5cyBtYXRjaGVzICovCisgICAgaG9zdF9tYXRjaCA9IFRSVUU7CisgICAgcHRyKys7CisgIH0KKyAgZWxzZSB7CisgICAgLyogY2hlY2sgd2hldGhlciB0aGUgVVJMJ3MgaG9zdG5hbWUgbWF0Y2hlcyAqLworICAgIHNpemVfdCBob3N0bmFtZV90b19tYXRjaF9sZW47CisgICAgY2hhciAqaG9zdG5hbWVfdG9fbWF0Y2ggPSBhcHJpbnRmKCIlcyVzJXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uLT5iaXRzLmlwdjZfaXAgPyAiWyIgOiAiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubi0+aG9zdC5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uLT5iaXRzLmlwdjZfaXAgPyAiXSIgOiAiIik7CisgICAgaWYoIWhvc3RuYW1lX3RvX21hdGNoKQorICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisgICAgaG9zdG5hbWVfdG9fbWF0Y2hfbGVuID0gc3RybGVuKGhvc3RuYW1lX3RvX21hdGNoKTsKKyAgICBob3N0X21hdGNoID0gY3VybF9zdHJuZXF1YWwocHRyLCBob3N0bmFtZV90b19tYXRjaCwgaG9zdG5hbWVfdG9fbWF0Y2hfbGVuKTsKKyAgICBmcmVlKGhvc3RuYW1lX3RvX21hdGNoKTsKKyAgICBwdHIgKz0gaG9zdG5hbWVfdG9fbWF0Y2hfbGVuOworCisgICAgaG9zdF9tYXRjaCA9IGhvc3RfbWF0Y2ggJiYgKnB0ciA9PSAnOic7CisgICAgcHRyKys7CisgIH0KKworICBpZihob3N0X21hdGNoKSB7CisgICAgaWYoKnB0ciA9PSAnOicpIHsKKyAgICAgIC8qIGFuIGVtcHR5IHBvcnQgYWx3YXlzIG1hdGNoZXMgKi8KKyAgICAgIHBvcnRfbWF0Y2ggPSBUUlVFOworICAgICAgcHRyKys7CisgICAgfQorICAgIGVsc2UgeworICAgICAgLyogY2hlY2sgd2hldGhlciB0aGUgVVJMJ3MgcG9ydCBtYXRjaGVzICovCisgICAgICBjaGFyICpwdHJfbmV4dCA9IHN0cmNocihwdHIsICc6Jyk7CisgICAgICBpZihwdHJfbmV4dCkgeworICAgICAgICBjaGFyICplbmRwID0gTlVMTDsKKyAgICAgICAgbG9uZyBwb3J0X3RvX21hdGNoID0gc3RydG9sKHB0ciwgJmVuZHAsIDEwKTsKKyAgICAgICAgaWYoKGVuZHAgPT0gcHRyX25leHQpICYmIChwb3J0X3RvX21hdGNoID09IGNvbm4tPnJlbW90ZV9wb3J0KSkgeworICAgICAgICAgIHBvcnRfbWF0Y2ggPSBUUlVFOworICAgICAgICAgIHB0ciA9IHB0cl9uZXh0ICsgMTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorCisgIGlmKGhvc3RfbWF0Y2ggJiYgcG9ydF9tYXRjaCkgeworICAgIC8qIHBhcnNlIHRoZSBob3N0bmFtZSBhbmQgcG9ydCB0byBjb25uZWN0IHRvICovCisgICAgcmVzdWx0ID0gcGFyc2VfY29ubmVjdF90b19ob3N0X3BvcnQoZGF0YSwgcHRyLCBob3N0X3Jlc3VsdCwgcG9ydF9yZXN1bHQpOworICB9CisKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworLyoKKyAqIFByb2Nlc3NlcyBhbGwgc3RyaW5ncyBpbiB0aGUgImNvbm5lY3QgdG8iIHNsaXN0LCBhbmQgdXNlcyB0aGUgImNvbm5lY3QKKyAqIHRvIGhvc3QiIGFuZCAiY29ubmVjdCB0byBwb3J0IiBvZiB0aGUgZmlyc3Qgc3RyaW5nIHRoYXQgbWF0Y2hlcy4KKyAqLworc3RhdGljIENVUkxjb2RlIHBhcnNlX2Nvbm5lY3RfdG9fc2xpc3Qoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY3VybF9zbGlzdCAqY29ubl90b19ob3N0KQoreworICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKKyAgY2hhciAqaG9zdCA9IE5VTEw7CisgIGludCBwb3J0ID0gMDsKKworICB3aGlsZShjb25uX3RvX2hvc3QgJiYgIWhvc3QpIHsKKyAgICByZXN1bHQgPSBwYXJzZV9jb25uZWN0X3RvX3N0cmluZyhkYXRhLCBjb25uLCBjb25uX3RvX2hvc3QtPmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmhvc3QsICZwb3J0KTsKKyAgICBpZihyZXN1bHQpCisgICAgICByZXR1cm4gcmVzdWx0OworCisgICAgaWYoaG9zdCAmJiAqaG9zdCkgeworICAgICAgYm9vbCBpcHY2aG9zdDsKKyAgICAgIGNvbm4tPmNvbm5fdG9faG9zdC5yYXdhbGxvYyA9IGhvc3Q7CisgICAgICBjb25uLT5jb25uX3RvX2hvc3QubmFtZSA9IGhvc3Q7CisgICAgICBjb25uLT5iaXRzLmNvbm5fdG9faG9zdCA9IFRSVUU7CisKKyAgICAgIGlwdjZob3N0ID0gc3RyY2hyKGhvc3QsICc6JykgIT0gTlVMTDsKKyAgICAgIGluZm9mKGRhdGEsICJDb25uZWN0aW5nIHRvIGhvc3RuYW1lOiAlcyVzJXNcbiIsCisgICAgICAgICAgICBpcHY2aG9zdCA/ICJbIiA6ICIiLCBob3N0LCBpcHY2aG9zdCA/ICJdIiA6ICIiKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAvKiBubyAiY29ubmVjdCB0byBob3N0IiAqLworICAgICAgY29ubi0+Yml0cy5jb25uX3RvX2hvc3QgPSBGQUxTRTsKKyAgICAgIGZyZWUoaG9zdCk7CisgICAgfQorCisgICAgaWYocG9ydCA+PSAwKSB7CisgICAgICBjb25uLT5jb25uX3RvX3BvcnQgPSBwb3J0OworICAgICAgY29ubi0+Yml0cy5jb25uX3RvX3BvcnQgPSBUUlVFOworICAgICAgaW5mb2YoZGF0YSwgIkNvbm5lY3RpbmcgdG8gcG9ydDogJWRcbiIsIHBvcnQpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIC8qIG5vICJjb25uZWN0IHRvIHBvcnQiICovCisgICAgICBjb25uLT5iaXRzLmNvbm5fdG9fcG9ydCA9IEZBTFNFOworICAgIH0KKworICAgIGNvbm5fdG9faG9zdCA9IGNvbm5fdG9faG9zdC0+bmV4dDsKKyAgfQorCisgIHJldHVybiByZXN1bHQ7Cit9CisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiBSZXNvbHZlIHRoZSBhZGRyZXNzIG9mIHRoZSBzZXJ2ZXIgb3IgcHJveHkKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpAQCAtNTE4MCw5ICs1NTQ3LDYgQEAKICAgICBpbnQgcmM7CiAgICAgc3RydWN0IEN1cmxfZG5zX2VudHJ5ICpob3N0YWRkcjsKIAotICAgIC8qIHNldCBhIHBvaW50ZXIgdG8gdGhlIGhvc3RuYW1lIHdlIGRpc3BsYXkgKi8KLSAgICBmaXhfaG9zdG5hbWUoZGF0YSwgY29ubiwgJmNvbm4tPmhvc3QpOwotCiAjaWZkZWYgVVNFX1VOSVhfU09DS0VUUwogICAgIGlmKGRhdGEtPnNldC5zdHJbU1RSSU5HX1VOSVhfU09DS0VUX1BBVEhdKSB7CiAgICAgICAvKiBVbml4IGRvbWFpbiBzb2NrZXRzIGFyZSBsb2NhbC4gVGhlIGhvc3QgZ2V0cyBpZ25vcmVkLCBqdXN0IHVzZSB0aGUKQEAgLTUyMTAsMTIgKzU1NzQsMjEgQEAKICAgICBlbHNlCiAjZW5kaWYKICAgICBpZighY29ubi0+cHJveHkubmFtZSB8fCAhKmNvbm4tPnByb3h5Lm5hbWUpIHsKKyAgICAgIHN0cnVjdCBob3N0bmFtZSAqY29ubmhvc3Q7CisgICAgICBpZihjb25uLT5iaXRzLmNvbm5fdG9faG9zdCkKKyAgICAgICAgY29ubmhvc3QgPSAmY29ubi0+Y29ubl90b19ob3N0OworICAgICAgZWxzZQorICAgICAgICBjb25uaG9zdCA9ICZjb25uLT5ob3N0OworCiAgICAgICAvKiBJZiBub3QgY29ubmVjdGluZyB2aWEgYSBwcm94eSwgZXh0cmFjdCB0aGUgcG9ydCBmcm9tIHRoZSBVUkwsIGlmIGl0IGlzCiAgICAgICAgKiB0aGVyZSwgdGh1cyBvdmVycmlkaW5nIGFueSBkZWZhdWx0cyB0aGF0IG1pZ2h0IGhhdmUgYmVlbiBzZXQgYWJvdmUuICovCi0gICAgICBjb25uLT5wb3J0ID0gIGNvbm4tPnJlbW90ZV9wb3J0OyAvKiBpdCBpcyB0aGUgc2FtZSBwb3J0ICovCisgICAgICBpZihjb25uLT5iaXRzLmNvbm5fdG9fcG9ydCkKKyAgICAgICAgY29ubi0+cG9ydCA9IGNvbm4tPmNvbm5fdG9fcG9ydDsKKyAgICAgIGVsc2UKKyAgICAgICAgY29ubi0+cG9ydCA9IGNvbm4tPnJlbW90ZV9wb3J0OyAvKiBpdCBpcyB0aGUgc2FtZSBwb3J0ICovCiAKICAgICAgIC8qIFJlc29sdmUgdGFyZ2V0IGhvc3QgcmlnaHQgb24gKi8KLSAgICAgIHJjID0gQ3VybF9yZXNvbHZfdGltZW91dChjb25uLCBjb25uLT5ob3N0Lm5hbWUsIChpbnQpY29ubi0+cG9ydCwKKyAgICAgIHJjID0gQ3VybF9yZXNvbHZfdGltZW91dChjb25uLCBjb25uaG9zdC0+bmFtZSwgKGludCljb25uLT5wb3J0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZob3N0YWRkciwgdGltZW91dF9tcyk7CiAgICAgICBpZihyYyA9PSBDVVJMUkVTT0xWX1BFTkRJTkcpCiAgICAgICAgICphc3luYyA9IFRSVUU7CkBAIC01MjI0LDcgKzU1OTcsNyBAQAogICAgICAgICByZXN1bHQgPSBDVVJMRV9PUEVSQVRJT05fVElNRURPVVQ7CiAKICAgICAgIGVsc2UgaWYoIWhvc3RhZGRyKSB7Ci0gICAgICAgIGZhaWxmKGRhdGEsICJDb3VsZG4ndCByZXNvbHZlIGhvc3QgJyVzJyIsIGNvbm4tPmhvc3QuZGlzcG5hbWUpOworICAgICAgICBmYWlsZihkYXRhLCAiQ291bGRuJ3QgcmVzb2x2ZSBob3N0ICclcyciLCBjb25uaG9zdC0+ZGlzcG5hbWUpOwogICAgICAgICByZXN1bHQgPSAgQ1VSTEVfQ09VTEROVF9SRVNPTFZFX0hPU1Q7CiAgICAgICAgIC8qIGRvbid0IHJldHVybiB5ZXQsIHdlIG5lZWQgdG8gY2xlYW4gdXAgdGhlIHRpbWVvdXQgZmlyc3QgKi8KICAgICAgIH0KQEAgLTUyMzIsOSArNTYwNSw2IEBACiAgICAgZWxzZSB7CiAgICAgICAvKiBUaGlzIGlzIGEgcHJveHkgdGhhdCBoYXNuJ3QgYmVlbiByZXNvbHZlZCB5ZXQuICovCiAKLSAgICAgIC8qIElETi1maXggdGhlIHByb3h5IG5hbWUgKi8KLSAgICAgIGZpeF9ob3N0bmFtZShkYXRhLCBjb25uLCAmY29ubi0+cHJveHkpOwotCiAgICAgICAvKiByZXNvbHZlIHByb3h5ICovCiAgICAgICByYyA9IEN1cmxfcmVzb2x2X3RpbWVvdXQoY29ubiwgY29ubi0+cHJveHkubmFtZSwgKGludCljb25uLT5wb3J0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZob3N0YWRkciwgdGltZW91dF9tcyk7CkBAIC01MjY2LDYgKzU2MzYsNyBAQAogc3RhdGljIHZvaWQgcmV1c2VfY29ubihzdHJ1Y3QgY29ubmVjdGRhdGEgKm9sZF9jb25uLAogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pCiB7CisgIGZyZWVfZml4ZWRfaG9zdG5hbWUoJm9sZF9jb25uLT5wcm94eSk7CiAgIGZyZWUob2xkX2Nvbm4tPnByb3h5LnJhd2FsbG9jKTsKIAogICAvKiBmcmVlIHRoZSBTU0wgY29uZmlnIHN0cnVjdCBmcm9tIHRoaXMgY29ubmVjdGlvbiBzdHJ1Y3QgYXMgdGhpcyB3YXMKQEAgLTUzMDAsMTIgKzU2NzEsMjIgQEAKIAogICAvKiBob3N0IGNhbiBjaGFuZ2UsIHdoZW4gZG9pbmcga2VlcGFsaXZlIHdpdGggYSBwcm94eSBvciBpZiB0aGUgY2FzZSBpcwogICAgICBkaWZmZXJlbnQgdGhpcyB0aW1lIGV0YyAqLworICBmcmVlX2ZpeGVkX2hvc3RuYW1lKCZjb25uLT5ob3N0KTsKKyAgZnJlZV9maXhlZF9ob3N0bmFtZSgmY29ubi0+Y29ubl90b19ob3N0KTsKICAgQ3VybF9zYWZlZnJlZShjb25uLT5ob3N0LnJhd2FsbG9jKTsKKyAgQ3VybF9zYWZlZnJlZShjb25uLT5jb25uX3RvX2hvc3QucmF3YWxsb2MpOwogICBjb25uLT5ob3N0PW9sZF9jb25uLT5ob3N0OworICBjb25uLT5iaXRzLmNvbm5fdG9faG9zdCA9IG9sZF9jb25uLT5iaXRzLmNvbm5fdG9faG9zdDsKKyAgY29ubi0+Y29ubl90b19ob3N0ID0gb2xkX2Nvbm4tPmNvbm5fdG9faG9zdDsKKyAgY29ubi0+Yml0cy5jb25uX3RvX3BvcnQgPSBvbGRfY29ubi0+Yml0cy5jb25uX3RvX3BvcnQ7CisgIGNvbm4tPmNvbm5fdG9fcG9ydCA9IG9sZF9jb25uLT5jb25uX3RvX3BvcnQ7CiAKICAgLyogcGVyc2lzdCBjb25uZWN0aW9uIGluZm8gaW4gc2Vzc2lvbiBoYW5kbGUgKi8KICAgQ3VybF9wZXJzaXN0Y29ubmluZm8oY29ubik7CiAKKyAgY29ubl9yZXNldF9hbGxfcG9zdHBvbmVkX2RhdGEob2xkX2Nvbm4pOyAvKiBmcmVlIGJ1ZmZlcnMgKi8KKyAgY29ubl9yZXNldF9hbGxfcG9zdHBvbmVkX2RhdGEoY29ubik7ICAgICAvKiByZXNldCB1bnByb2Nlc3NlZCBkYXRhICovCisKICAgLyogcmUtdXNlIGluaXQgKi8KICAgY29ubi0+Yml0cy5yZXVzZSA9IFRSVUU7IC8qIHllcywgd2UncmUgcmUtdXNpbmcgaGVyZSAqLwogCkBAIC01NDQ4LDYgKzU4MjksNyBAQAogICAgICAgIHdlJ3JlIGdvbm5hIGZvbGxvdyBhIExvY2F0aW9uOiBsYXRlciBvci4uLiB0aGVuIHdlIG5lZWQgdGhlIHByb3RvY29sCiAgICAgICAgcGFydCBhZGRlZCBzbyB0aGF0IHdlIGhhdmUgYSB2YWxpZCBVUkwuICovCiAgICAgY2hhciAqcmV1cmw7CisgICAgY2hhciAqY2hfbG93ZXI7CiAKICAgICByZXVybCA9IGFwcmludGYoIiVzOi8vJXMiLCBjb25uLT5oYW5kbGVyLT5zY2hlbWUsIGRhdGEtPmNoYW5nZS51cmwpOwogCkBAIC01NDU2LDYgKzU4MzgsMTAgQEAKICAgICAgIGdvdG8gb3V0OwogICAgIH0KIAorICAgIC8qIENoYW5nZSBwcm90b2NvbCBwcmVmaXggdG8gbG93ZXItY2FzZSAqLworICAgIGZvcihjaF9sb3dlciA9IHJldXJsOyAqY2hfbG93ZXIgIT0gJzonOyBjaF9sb3dlcisrKQorICAgICAgKmNoX2xvd2VyID0gKGNoYXIpVE9MT1dFUigqY2hfbG93ZXIpOworCiAgICAgaWYoZGF0YS0+Y2hhbmdlLnVybF9hbGxvYykgewogICAgICAgQ3VybF9zYWZlZnJlZShkYXRhLT5jaGFuZ2UudXJsKTsKICAgICAgIGRhdGEtPmNoYW5nZS51cmxfYWxsb2MgPSBGQUxTRTsKQEAgLTU0ODQsOCArNTg3MCw4IEBACiAgIH0KIAogICBpZihkYXRhLT5zZXQuc3RyW1NUUklOR19CRUFSRVJdKSB7Ci0gICAgY29ubi0+eG9hdXRoMl9iZWFyZXIgPSBzdHJkdXAoZGF0YS0+c2V0LnN0cltTVFJJTkdfQkVBUkVSXSk7Ci0gICAgaWYoIWNvbm4tPnhvYXV0aDJfYmVhcmVyKSB7CisgICAgY29ubi0+b2F1dGhfYmVhcmVyID0gc3RyZHVwKGRhdGEtPnNldC5zdHJbU1RSSU5HX0JFQVJFUl0pOworICAgIGlmKCFjb25uLT5vYXV0aF9iZWFyZXIpIHsKICAgICAgIHJlc3VsdCA9IENVUkxFX09VVF9PRl9NRU1PUlk7CiAgICAgICBnb3RvIG91dDsKICAgICB9CkBAIC01NjA1LDYgKzU5OTEsNDggQEAKICAgICBnb3RvIG91dDsKIAogICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKiBQcm9jZXNzIHRoZSAiY29ubmVjdCB0byIgbGlua2VkIGxpc3Qgb2YgaG9zdG5hbWUvcG9ydCBtYXBwaW5ncy4KKyAgICogRG8gdGhpcyBhZnRlciB0aGUgcmVtb3RlIHBvcnQgbnVtYmVyIGhhcyBiZWVuIGZpeGVkIGluIHRoZSBVUkwuCisgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICByZXN1bHQgPSBwYXJzZV9jb25uZWN0X3RvX3NsaXN0KGRhdGEsIGNvbm4sIGRhdGEtPnNldC5jb25uZWN0X3RvKTsKKyAgaWYocmVzdWx0KQorICAgIGdvdG8gb3V0OworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqIElETi1maXggdGhlIGhvc3RuYW1lcworICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgZml4X2hvc3RuYW1lKGRhdGEsIGNvbm4sICZjb25uLT5ob3N0KTsKKyAgaWYoY29ubi0+Yml0cy5jb25uX3RvX2hvc3QpCisgICAgZml4X2hvc3RuYW1lKGRhdGEsIGNvbm4sICZjb25uLT5jb25uX3RvX2hvc3QpOworICBpZihjb25uLT5wcm94eS5uYW1lICYmICpjb25uLT5wcm94eS5uYW1lKQorICAgIGZpeF9ob3N0bmFtZShkYXRhLCBjb25uLCAmY29ubi0+cHJveHkpOworCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAqIENoZWNrIHdoZXRoZXIgdGhlIGhvc3QgYW5kIHRoZSAiY29ubmVjdCB0byBob3N0IiBhcmUgZXF1YWwuCisgICAqIERvIHRoaXMgYWZ0ZXIgdGhlIGhvc3RuYW1lcyBoYXZlIGJlZW4gSUROLWZpeGVkIC4KKyAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIGlmKGNvbm4tPmJpdHMuY29ubl90b19ob3N0ICYmCisgICAgICBDdXJsX3Jhd19lcXVhbChjb25uLT5jb25uX3RvX2hvc3QubmFtZSwgY29ubi0+aG9zdC5uYW1lKSkgeworICAgIGNvbm4tPmJpdHMuY29ubl90b19ob3N0ID0gRkFMU0U7CisgIH0KKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKiBDaGVjayB3aGV0aGVyIHRoZSBwb3J0IGFuZCB0aGUgImNvbm5lY3QgdG8gcG9ydCIgYXJlIGVxdWFsLgorICAgKiBEbyB0aGlzIGFmdGVyIHRoZSByZW1vdGUgcG9ydCBudW1iZXIgaGFzIGJlZW4gZml4ZWQgaW4gdGhlIFVSTC4KKyAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIGlmKGNvbm4tPmJpdHMuY29ubl90b19wb3J0ICYmIGNvbm4tPmNvbm5fdG9fcG9ydCA9PSBjb25uLT5yZW1vdGVfcG9ydCkgeworICAgIGNvbm4tPmJpdHMuY29ubl90b19wb3J0ID0gRkFMU0U7CisgIH0KKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKiBJZiB0aGUgImNvbm5lY3QgdG8iIGZlYXR1cmUgaXMgdXNlZCB3aXRoIGFuIEhUVFAgcHJveHksCisgICAqIHdlIHNldCB0aGUgdHVubmVsX3Byb3h5IGJpdC4KKyAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIGlmKChjb25uLT5iaXRzLmNvbm5fdG9faG9zdCB8fCBjb25uLT5iaXRzLmNvbm5fdG9fcG9ydCkgJiYKKyAgICAgIGNvbm4tPmJpdHMuaHR0cHByb3h5KQorICAgIGNvbm4tPmJpdHMudHVubmVsX3Byb3h5ID0gVFJVRTsKKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgKiBTZXR1cCBpbnRlcm5hbHMgZGVwZW5kaW5nIG9uIHByb3RvY29sLiBOZWVkcyB0byBiZSBkb25lIGFmdGVyCiAgICAqIHdlIGZpZ3VyZWQgb3V0IHdoYXQvaWYgcHJveHkgdG8gdXNlLgogICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KQEAgLTU2MTcsNiArNjA0NSw4IEBACiAgIGNvbm4tPnJlY3ZbU0VDT05EQVJZU09DS0VUXSA9IEN1cmxfcmVjdl9wbGFpbjsKICAgY29ubi0+c2VuZFtTRUNPTkRBUllTT0NLRVRdID0gQ3VybF9zZW5kX3BsYWluOwogCisgIGNvbm4tPmJpdHMudGNwX2Zhc3RvcGVuID0gZGF0YS0+c2V0LnRjcF9mYXN0b3BlbjsKKwogICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgICogZmlsZTogaXMgYSBzcGVjaWFsIGNhc2UgaW4gdGhhdCBpdCBkb2Vzbid0IG5lZWQgYSBuZXR3b3JrIGNvbm5lY3Rpb24KICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpAQCAtNTY1MSw3ICs2MDgxLDcgQEAKICAgICB9CiAKICAgICAvKiBzaW5jZSB3ZSBza2lwIGRvX2luaXQoKSAqLwotICAgIGRvX2luaXQoY29ubik7CisgICAgQ3VybF9pbml0X2RvKGRhdGEsIGNvbm4pOwogCiAgICAgZ290byBvdXQ7CiAgIH0KQEAgLTU3MzIsOSArNjE2Miw2IEBACiAgICAgY29ubiA9IGNvbm5fdGVtcDsKICAgICAqaW5fY29ubmVjdCA9IGNvbm47CiAKLSAgICAvKiBzZXQgYSBwb2ludGVyIHRvIHRoZSBob3N0bmFtZSB3ZSBkaXNwbGF5ICovCi0gICAgZml4X2hvc3RuYW1lKGRhdGEsIGNvbm4sICZjb25uLT5ob3N0KTsKLQogICAgIGluZm9mKGRhdGEsICJSZS11c2luZyBleGlzdGluZyBjb25uZWN0aW9uISAoIyVsZCkgd2l0aCAlcyAlc1xuIiwKICAgICAgICAgICBjb25uLT5jb25uZWN0aW9uX2lkLAogICAgICAgICAgIGNvbm4tPmJpdHMucHJveHk/InByb3h5IjoiaG9zdCIsCkBAIC01NzQ2LDYgKzYxNzMsMTUgQEAKICAgICAgICBjb25uZWN0aW9ucyB3ZSBhcmUgYWxsb3dlZCB0byBvcGVuLiAqLwogICAgIHN0cnVjdCBjb25uZWN0YnVuZGxlICpidW5kbGUgPSBOVUxMOwogCisgICAgaWYoY29ubi0+aGFuZGxlci0+ZmxhZ3MgJiBQUk9UT1BUX0FMUE5fTlBOKSB7CisgICAgICAvKiBUaGUgcHJvdG9jb2wgd2FudHMgaXQsIHNvIHNldCB0aGUgYml0cyBpZiBlbmFibGVkIGluIHRoZSBlYXN5IGhhbmRsZQorICAgICAgICAgKGRlZmF1bHQpICovCisgICAgICBpZihkYXRhLT5zZXQuc3NsX2VuYWJsZV9hbHBuKQorICAgICAgICBjb25uLT5iaXRzLnRsc19lbmFibGVfYWxwbiA9IFRSVUU7CisgICAgICBpZihkYXRhLT5zZXQuc3NsX2VuYWJsZV9ucG4pCisgICAgICAgIGNvbm4tPmJpdHMudGxzX2VuYWJsZV9ucG4gPSBUUlVFOworICAgIH0KKwogICAgIGlmKHdhaXRwaXBlKQogICAgICAgLyogVGhlcmUgaXMgYSBjb25uZWN0aW9uIHRoYXQgKm1pZ2h0KiBiZWNvbWUgdXNhYmxlIGZvciBwaXBlbGluaW5nCiAgICAgICAgICAic29vbiIsIGFuZCB3ZSB3YWl0IGZvciB0aGF0ICovCkBAIC01Nzc4LDcgKzYyMTQsNyBAQAogICAgICAgc3RydWN0IGNvbm5lY3RkYXRhICpjb25uX2NhbmRpZGF0ZTsKIAogICAgICAgLyogVGhlIGNhY2hlIGlzIGZ1bGwuIExldCdzIHNlZSBpZiB3ZSBjYW4ga2lsbCBhIGNvbm5lY3Rpb24uICovCi0gICAgICBjb25uX2NhbmRpZGF0ZSA9IGZpbmRfb2xkZXN0X2lkbGVfY29ubmVjdGlvbihkYXRhKTsKKyAgICAgIGNvbm5fY2FuZGlkYXRlID0gQ3VybF9vbGRlc3RfaWRsZV9jb25uZWN0aW9uKGRhdGEpOwogCiAgICAgICBpZihjb25uX2NhbmRpZGF0ZSkgewogICAgICAgICAvKiBTZXQgdGhlIGNvbm5lY3Rpb24ncyBvd25lciBjb3JyZWN0bHksIHRoZW4ga2lsbCBpdCAqLwpAQCAtNTgxNiwxMiArNjI1MiwxNCBAQAogICAgICAgIGRhdGEtPnN0YXRlLmF1dGhob3N0LmRvbmUpIHsKICAgICAgIGluZm9mKGRhdGEsICJOVExNIHBpY2tlZCBBTkQgYXV0aCBkb25lIHNldCwgY2xlYXIgcGlja2VkIVxuIik7CiAgICAgICBkYXRhLT5zdGF0ZS5hdXRoaG9zdC5waWNrZWQgPSBDVVJMQVVUSF9OT05FOworICAgICAgZGF0YS0+c3RhdGUuYXV0aGhvc3QuZG9uZSA9IEZBTFNFOwogICAgIH0KIAogICAgIGlmKChkYXRhLT5zdGF0ZS5hdXRocHJveHkucGlja2VkICYgKENVUkxBVVRIX05UTE0gfCBDVVJMQVVUSF9OVExNX1dCKSkgJiYKICAgICAgICBkYXRhLT5zdGF0ZS5hdXRocHJveHkuZG9uZSkgewogICAgICAgaW5mb2YoZGF0YSwgIk5UTE0tcHJveHkgcGlja2VkIEFORCBhdXRoIGRvbmUgc2V0LCBjbGVhciBwaWNrZWQhXG4iKTsKICAgICAgIGRhdGEtPnN0YXRlLmF1dGhwcm94eS5waWNrZWQgPSBDVVJMQVVUSF9OT05FOworICAgICAgZGF0YS0+c3RhdGUuYXV0aHByb3h5LmRvbmUgPSBGQUxTRTsKICAgICB9CiAjZW5kaWYKICAgfQpAQCAtNTgzMCw3ICs2MjY4LDcgQEAKICAgY29ubi0+aW51c2UgPSBUUlVFOwogCiAgIC8qIFNldHVwIGFuZCBpbml0IHN0dWZmIGJlZm9yZSBETyBzdGFydHMsIGluIHByZXBhcmluZyBmb3IgdGhlIHRyYW5zZmVyLiAqLwotICBkb19pbml0KGNvbm4pOworICBDdXJsX2luaXRfZG8oZGF0YSwgY29ubik7CiAKICAgLyoKICAgICogU2V0dXAgd2hhdGV2ZXIgbmVjZXNzYXJ5IGZvciBhIHJlc3VtZWQgdHJhbnNmZXIKQEAgLTU5ODgsMTQ0ICs2NDI2LDI1IEBACiAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUNVUkxjb2RlIEN1cmxfZG9uZShzdHJ1Y3QgY29ubmVjdGRhdGEgKipjb25ucCwKLSAgICAgICAgICAgICAgICAgICBDVVJMY29kZSBzdGF0dXMsICAvKiBhbiBlcnJvciBpZiB0aGlzIGlzIGNhbGxlZCBhZnRlciBhbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yIHdhcyBkZXRlY3RlZCAqLwotICAgICAgICAgICAgICAgICAgIGJvb2wgcHJlbWF0dXJlKQotewotICBDVVJMY29kZSByZXN1bHQ7Ci0gIHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubjsKLSAgc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGE7Ci0KLSAgREVCVUdBU1NFUlQoKmNvbm5wKTsKLQotICBjb25uID0gKmNvbm5wOwotICBkYXRhID0gY29ubi0+ZGF0YTsKLQotICBERUJVR0YoaW5mb2YoZGF0YSwgIkN1cmxfZG9uZVxuIikpOwotCi0gIGlmKGRhdGEtPnN0YXRlLmRvbmUpCi0gICAgLyogU3RvcCBpZiBDdXJsX2RvbmUoKSBoYXMgYWxyZWFkeSBiZWVuIGNhbGxlZCAqLwotICAgIHJldHVybiBDVVJMRV9PSzsKLQotICBDdXJsX2dldG9mZl9hbGxfcGlwZWxpbmVzKGRhdGEsIGNvbm4pOwotCi0gIC8qIENsZWFudXAgcG9zc2libGUgcmVkaXJlY3QganVuayAqLwotICBmcmVlKGRhdGEtPnJlcS5uZXd1cmwpOwotICBkYXRhLT5yZXEubmV3dXJsID0gTlVMTDsKLSAgZnJlZShkYXRhLT5yZXEubG9jYXRpb24pOwotICBkYXRhLT5yZXEubG9jYXRpb24gPSBOVUxMOwotCi0gIHN3aXRjaChzdGF0dXMpIHsKLSAgY2FzZSBDVVJMRV9BQk9SVEVEX0JZX0NBTExCQUNLOgotICBjYXNlIENVUkxFX1JFQURfRVJST1I6Ci0gIGNhc2UgQ1VSTEVfV1JJVEVfRVJST1I6Ci0gICAgLyogV2hlbiB3ZSdyZSBhYm9ydGVkIGR1ZSB0byBhIGNhbGxiYWNrIHJldHVybiBjb2RlIGl0IGJhc2ljYWxseSBoYXZlIHRvCi0gICAgICAgYmUgY291bnRlZCBhcyBwcmVtYXR1cmUgYXMgdGhlcmUgaXMgdHJvdWJsZSBhaGVhZCBpZiB3ZSBkb24ndC4gV2UgaGF2ZQotICAgICAgIG1hbnkgY2FsbGJhY2tzIGFuZCBwcm90b2NvbHMgd29yayBkaWZmZXJlbnRseSwgd2UgY291bGQgcG90ZW50aWFsbHkgZG8KLSAgICAgICB0aGlzIG1vcmUgZmluZS1ncmFpbmVkIGluIHRoZSBmdXR1cmUuICovCi0gICAgcHJlbWF0dXJlID0gVFJVRTsKLSAgZGVmYXVsdDoKLSAgICBicmVhazsKLSAgfQotCi0gIC8qIHRoaXMgY2FsbHMgdGhlIHByb3RvY29sLXNwZWNpZmljIGZ1bmN0aW9uIHBvaW50ZXIgcHJldmlvdXNseSBzZXQgKi8KLSAgaWYoY29ubi0+aGFuZGxlci0+ZG9uZSkKLSAgICByZXN1bHQgPSBjb25uLT5oYW5kbGVyLT5kb25lKGNvbm4sIHN0YXR1cywgcHJlbWF0dXJlKTsKLSAgZWxzZQotICAgIHJlc3VsdCA9IHN0YXR1czsKLQotICBpZighcmVzdWx0ICYmIEN1cmxfcGdyc0RvbmUoY29ubikpCi0gICAgcmVzdWx0ID0gQ1VSTEVfQUJPUlRFRF9CWV9DQUxMQkFDSzsKLQotICBpZigoY29ubi0+c2VuZF9waXBlLT5zaXplICsgY29ubi0+cmVjdl9waXBlLT5zaXplICE9IDAgJiYKLSAgICAgICFkYXRhLT5zZXQucmV1c2VfZm9yYmlkICYmCi0gICAgICAhY29ubi0+Yml0cy5jbG9zZSkpIHsKLSAgICAvKiBTdG9wIGlmIHBpcGVsaW5lIGlzIG5vdCBlbXB0eSBhbmQgd2UgZG8gbm90IGhhdmUgdG8gY2xvc2UKLSAgICAgICBjb25uZWN0aW9uLiAqLwotICAgIERFQlVHRihpbmZvZihkYXRhLCAiQ29ubmVjdGlvbiBzdGlsbCBpbiB1c2UsIG5vIG1vcmUgQ3VybF9kb25lIG5vdyFcbiIpKTsKLSAgICByZXR1cm4gQ1VSTEVfT0s7Ci0gIH0KLQotICBkYXRhLT5zdGF0ZS5kb25lID0gVFJVRTsgLyogY2FsbGVkIGp1c3Qgbm93ISAqLwotICBDdXJsX3Jlc29sdmVyX2NhbmNlbChjb25uKTsKLQotICBpZihjb25uLT5kbnNfZW50cnkpIHsKLSAgICBDdXJsX3Jlc29sdl91bmxvY2soZGF0YSwgY29ubi0+ZG5zX2VudHJ5KTsgLyogZG9uZSB3aXRoIHRoaXMgKi8KLSAgICBjb25uLT5kbnNfZW50cnkgPSBOVUxMOwotICB9Ci0KLSAgLyogaWYgdGhlIHRyYW5zZmVyIHdhcyBjb21wbGV0ZWQgaW4gYSBwYXVzZWQgc3RhdGUgdGhlcmUgY2FuIGJlIGJ1ZmZlcmVkCi0gICAgIGRhdGEgbGVmdCB0byB3cml0ZSBhbmQgdGhlbiBraWxsICovCi0gIGZyZWUoZGF0YS0+c3RhdGUudGVtcHdyaXRlKTsKLSAgZGF0YS0+c3RhdGUudGVtcHdyaXRlID0gTlVMTDsKLQotICAvKiBpZiBkYXRhLT5zZXQucmV1c2VfZm9yYmlkIGlzIFRSVUUsIGl0IG1lYW5zIHRoZSBsaWJjdXJsIGNsaWVudCBoYXMKLSAgICAgZm9yY2VkIHVzIHRvIGNsb3NlIHRoaXMgY29ubmVjdGlvbi4gVGhpcyBpcyBpZ25vcmVkIGZvciByZXF1ZXN0cyB0YWtpbmcKLSAgICAgcGxhY2UgaW4gYSBOVExNIGF1dGhlbnRpY2F0aW9uIGhhbmRzaGFrZQotCi0gICAgIGlmIGNvbm4tPmJpdHMuY2xvc2UgaXMgVFJVRSwgaXQgbWVhbnMgdGhhdCB0aGUgY29ubmVjdGlvbiBzaG91bGQgYmUKLSAgICAgY2xvc2VkIGluIHNwaXRlIG9mIGFsbCBvdXIgZWZmb3J0cyB0byBiZSBuaWNlLCBkdWUgdG8gcHJvdG9jb2wKLSAgICAgcmVzdHJpY3Rpb25zIGluIG91ciBvciB0aGUgc2VydmVyJ3MgZW5kCi0KLSAgICAgaWYgcHJlbWF0dXJlIGlzIFRSVUUsIGl0IG1lYW5zIHRoaXMgY29ubmVjdGlvbiB3YXMgc2FpZCB0byBiZSBET05FIGJlZm9yZQotICAgICB0aGUgZW50aXJlIHJlcXVlc3Qgb3BlcmF0aW9uIGlzIGNvbXBsZXRlIGFuZCB0aHVzIHdlIGNhbid0IGtub3cgaW4gd2hhdAotICAgICBzdGF0ZSBpdCBpcyBmb3IgcmUtdXNpbmcsIHNvIHdlJ3JlIGZvcmNlZCB0byBjbG9zZSBpdC4gSW4gYSBwZXJmZWN0IHdvcmxkCi0gICAgIHdlIGNhbiBhZGQgY29kZSB0aGF0IGtlZXAgdHJhY2sgb2YgaWYgd2UgcmVhbGx5IG11c3QgY2xvc2UgaXQgaGVyZSBvciBub3QsCi0gICAgIGJ1dCBjdXJyZW50bHkgd2UgaGF2ZSBubyBzdWNoIGRldGFpbCBrbm93bGVkZ2UuCi0gICovCi0KLSAgaWYoKGRhdGEtPnNldC5yZXVzZV9mb3JiaWQKLSNpZiBkZWZpbmVkKFVTRV9OVExNKQotICAgICAgJiYgIShjb25uLT5udGxtLnN0YXRlID09IE5UTE1TVEFURV9UWVBFMiB8fAotICAgICAgICAgICBjb25uLT5wcm94eW50bG0uc3RhdGUgPT0gTlRMTVNUQVRFX1RZUEUyKQotI2VuZGlmCi0gICAgICkgfHwgY29ubi0+Yml0cy5jbG9zZSB8fCBwcmVtYXR1cmUpIHsKLSAgICBDVVJMY29kZSByZXMyID0gQ3VybF9kaXNjb25uZWN0KGNvbm4sIHByZW1hdHVyZSk7IC8qIGNsb3NlIGNvbm5lY3Rpb24gKi8KLQotICAgIC8qIElmIHdlIGhhZCBhbiBlcnJvciBhbHJlYWR5LCBtYWtlIHN1cmUgd2UgcmV0dXJuIHRoYXQgb25lLiBCdXQKLSAgICAgICBpZiB3ZSBnb3QgYSBuZXcgZXJyb3IsIHJldHVybiB0aGF0LiAqLwotICAgIGlmKCFyZXN1bHQgJiYgcmVzMikKLSAgICAgIHJlc3VsdCA9IHJlczI7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgLyogdGhlIGNvbm5lY3Rpb24gaXMgbm8gbG9uZ2VyIGluIHVzZSAqLwotICAgIGlmKENvbm5lY3Rpb25Eb25lKGRhdGEsIGNvbm4pKSB7Ci0gICAgICAvKiByZW1lbWJlciB0aGUgbW9zdCByZWNlbnRseSB1c2VkIGNvbm5lY3Rpb24gKi8KLSAgICAgIGRhdGEtPnN0YXRlLmxhc3Rjb25uZWN0ID0gY29ubjsKLQotICAgICAgaW5mb2YoZGF0YSwgIkNvbm5lY3Rpb24gIyVsZCB0byBob3N0ICVzIGxlZnQgaW50YWN0XG4iLAotICAgICAgICAgICAgY29ubi0+Y29ubmVjdGlvbl9pZCwKLSAgICAgICAgICAgIGNvbm4tPmJpdHMuaHR0cHByb3h5P2Nvbm4tPnByb3h5LmRpc3BuYW1lOmNvbm4tPmhvc3QuZGlzcG5hbWUpOwotICAgIH0KLSAgICBlbHNlCi0gICAgICBkYXRhLT5zdGF0ZS5sYXN0Y29ubmVjdCA9IE5VTEw7Ci0gIH0KLQotICAqY29ubnAgPSBOVUxMOyAvKiB0byBtYWtlIHRoZSBjYWxsZXIgb2YgdGhpcyBmdW5jdGlvbiBiZXR0ZXIgZGV0ZWN0IHRoYXQKLSAgICAgICAgICAgICAgICAgICAgdGhpcyB3YXMgZWl0aGVyIGNsb3NlZCBvciBoYW5kZWQgb3ZlciB0byB0aGUgY29ubmVjdGlvbgotICAgICAgICAgICAgICAgICAgICBjYWNoZSBoZXJlLCBhbmQgdGhlcmVmb3JlIGNhbm5vdCBiZSB1c2VkIGZyb20gdGhpcyBwb2ludCBvbgotICAgICAgICAgICAgICAgICAqLwotICBDdXJsX2ZyZWVfcmVxdWVzdF9zdGF0ZShkYXRhKTsKLQotICByZXR1cm4gcmVzdWx0OwotfQotCiAvKgotICogZG9faW5pdCgpIGluaXRzIHRoZSByZWFkd3JpdGUgc2Vzc2lvbi4gVGhpcyBpcyBpbml0ZWQgZWFjaCB0aW1lIChpbiB0aGUgRE8KLSAqIGZ1bmN0aW9uIGJlZm9yZSB0aGUgcHJvdG9jb2wtc3BlY2lmaWMgRE8gZnVuY3Rpb25zIGFyZSBpbnZva2VkKSBmb3IgYQotICogdHJhbnNmZXIsIHNvbWV0aW1lcyBtdWx0aXBsZSB0aW1lcyBvbiB0aGUgc2FtZSBTZXNzaW9uSGFuZGxlLiBNYWtlIHN1cmUKKyAqIEN1cmxfaW5pdF9kbygpIGluaXRzIHRoZSByZWFkd3JpdGUgc2Vzc2lvbi4gVGhpcyBpcyBpbml0ZWQgZWFjaCB0aW1lIChpbgorICogdGhlIERPIGZ1bmN0aW9uIGJlZm9yZSB0aGUgcHJvdG9jb2wtc3BlY2lmaWMgRE8gZnVuY3Rpb25zIGFyZSBpbnZva2VkKSBmb3IKKyAqIGEgdHJhbnNmZXIsIHNvbWV0aW1lcyBtdWx0aXBsZSB0aW1lcyBvbiB0aGUgc2FtZSBTZXNzaW9uSGFuZGxlLiBNYWtlIHN1cmUKICAqIG5vdGhpbmcgaW4gaGVyZSBkZXBlbmRzIG9uIHN0dWZmIHRoYXQgYXJlIHNldHVwIGR5bmFtaWNhbGx5IGZvciB0aGUKICAqIHRyYW5zZmVyLgorICoKKyAqIEFsbG93IHRoaXMgZnVuY3Rpb24gdG8gZ2V0IGNhbGxlZCB3aXRoICdjb25uJyBzZXQgdG8gTlVMTC4KICAqLwogCi1zdGF0aWMgQ1VSTGNvZGUgZG9faW5pdChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4pCitDVVJMY29kZSBDdXJsX2luaXRfZG8oc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsIHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubikKIHsKLSAgc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEgPSBjb25uLT5kYXRhOwogICBzdHJ1Y3QgU2luZ2xlUmVxdWVzdCAqayA9ICZkYXRhLT5yZXE7CiAKLSAgZGF0YS0+c3RhdGUuZG9uZSA9IEZBTFNFOyAvKiBDdXJsX2RvbmUoKSBpcyBub3QgY2FsbGVkIHlldCAqLwotICBjb25uLT5iaXRzLmRvX21vcmUgPSBGQUxTRTsgLyogYnkgZGVmYXVsdCB0aGVyZSdzIG5vIGN1cmxfZG9fbW9yZSgpIHRvIHVzZSAqLworICBpZihjb25uKQorICAgIGNvbm4tPmJpdHMuZG9fbW9yZSA9IEZBTFNFOyAvKiBieSBkZWZhdWx0IHRoZXJlJ3Mgbm8gY3VybF9kb19tb3JlKCkgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogdXNlICovCisKKyAgZGF0YS0+c3RhdGUuZG9uZSA9IEZBTFNFOyAvKiAqX2RvbmUoKSBpcyBub3QgY2FsbGVkIHlldCAqLwogICBkYXRhLT5zdGF0ZS5leHBlY3QxMDBoZWFkZXIgPSBGQUxTRTsKIAogICBpZihkYXRhLT5zZXQub3B0X25vX2JvZHkpCkBAIC02MTU5LDgwICs2NDc4LDExMSBAQAogfQogCiAvKgotICogZG9fY29tcGxldGUgaXMgY2FsbGVkIHdoZW4gdGhlIERPIGFjdGlvbnMgYXJlIGNvbXBsZXRlLgotICoKLSAqIFdlIGluaXQgY2h1bmtpbmcgYW5kIHRyYWlsZXIgYml0cyB0byB0aGVpciBkZWZhdWx0IHZhbHVlcyBoZXJlIGltbWVkaWF0ZWx5Ci0gKiBiZWZvcmUgcmVjZWl2aW5nIGFueSBoZWFkZXIgZGF0YSBmb3IgdGhlIGN1cnJlbnQgcmVxdWVzdCBpbiB0aGUgcGlwZWxpbmUuCi0gKi8KLXN0YXRpYyB2b2lkIGRvX2NvbXBsZXRlKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubikKKyogZ2V0X3Byb3RvY29sX2ZhbWlseSgpCisqCisqIFRoaXMgaXMgdXNlZCB0byByZXR1cm4gdGhlIHByb3RvY29sIGZhbWlseSBmb3IgYSBnaXZlbiBwcm90b2NvbC4KKyoKKyogUGFyYW1ldGVyczoKKyoKKyogcHJvdG9jb2wgIFtpbl0gIC0gQSBzaW5nbGUgYml0IHByb3RvY29sIGlkZW50aWZpZXIgc3VjaCBhcyBIVFRQIG9yIEhUVFBTLgorKgorKiBSZXR1cm5zIHRoZSBmYW1pbHkgYXMgYSBzaW5nbGUgYml0IHByb3RvY29sIGlkZW50aWZpZXIuCisqLworCit1bnNpZ25lZCBpbnQgZ2V0X3Byb3RvY29sX2ZhbWlseSh1bnNpZ25lZCBpbnQgcHJvdG9jb2wpCiB7Ci0gIGNvbm4tPmRhdGEtPnJlcS5jaHVuaz1GQUxTRTsKLSAgY29ubi0+ZGF0YS0+cmVxLm1heGZkID0gKGNvbm4tPnNvY2tmZD5jb25uLT53cml0ZXNvY2tmZD8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm4tPnNvY2tmZDpjb25uLT53cml0ZXNvY2tmZCkrMTsKLSAgQ3VybF9wZ3JzVGltZShjb25uLT5kYXRhLCBUSU1FUl9QUkVUUkFOU0ZFUik7Ci19CisgIHVuc2lnbmVkIGludCBmYW1pbHk7CiAKLUNVUkxjb2RlIEN1cmxfZG8oc3RydWN0IGNvbm5lY3RkYXRhICoqY29ubnAsIGJvb2wgKmRvbmUpCi17Ci0gIENVUkxjb2RlIHJlc3VsdD1DVVJMRV9PSzsKLSAgc3RydWN0IGNvbm5lY3RkYXRhICpjb25uID0gKmNvbm5wOwotICBzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSA9IGNvbm4tPmRhdGE7CisgIHN3aXRjaChwcm90b2NvbCkgeworICBjYXNlIENVUkxQUk9UT19IVFRQOgorICBjYXNlIENVUkxQUk9UT19IVFRQUzoKKyAgICBmYW1pbHkgPSBDVVJMUFJPVE9fSFRUUDsKKyAgICBicmVhazsKIAotICBpZihjb25uLT5oYW5kbGVyLT5kb19pdCkgewotICAgIC8qIGdlbmVyaWMgcHJvdG9jb2wtc3BlY2lmaWMgZnVuY3Rpb24gcG9pbnRlciBzZXQgaW4gY3VybF9jb25uZWN0KCkgKi8KLSAgICByZXN1bHQgPSBjb25uLT5oYW5kbGVyLT5kb19pdChjb25uLCBkb25lKTsKKyAgY2FzZSBDVVJMUFJPVE9fRlRQOgorICBjYXNlIENVUkxQUk9UT19GVFBTOgorICAgIGZhbWlseSA9IENVUkxQUk9UT19GVFA7CisgICAgYnJlYWs7CiAKLSAgICAvKiBUaGlzIHdhcyBmb3JtZXJseSBkb25lIGluIHRyYW5zZmVyLmMsIGJ1dCB3ZSBiZXR0ZXIgZG8gaXQgaGVyZSAqLwotICAgIGlmKChDVVJMRV9TRU5EX0VSUk9SID09IHJlc3VsdCkgJiYgY29ubi0+Yml0cy5yZXVzZSkgewotICAgICAgLyoKLSAgICAgICAqIElmIHRoZSBjb25uZWN0aW9uIGlzIHVzaW5nIGFuIGVhc3kgaGFuZGxlLCBjYWxsIHJlY29ubmVjdAotICAgICAgICogdG8gcmUtZXN0YWJsaXNoIHRoZSBjb25uZWN0aW9uLiAgT3RoZXJ3aXNlLCBsZXQgdGhlIG11bHRpIGxvZ2ljCi0gICAgICAgKiBmaWd1cmUgb3V0IGhvdyB0byByZS1lc3RhYmxpc2ggdGhlIGNvbm5lY3Rpb24uCi0gICAgICAgKi8KLSAgICAgIGlmKCFkYXRhLT5tdWx0aSkgewotICAgICAgICByZXN1bHQgPSBDdXJsX3JlY29ubmVjdF9yZXF1ZXN0KGNvbm5wKTsKKyAgY2FzZSBDVVJMUFJPVE9fU0NQOgorICAgIGZhbWlseSA9IENVUkxQUk9UT19TQ1A7CisgICAgYnJlYWs7CiAKLSAgICAgICAgaWYoIXJlc3VsdCkgewotICAgICAgICAgIC8qIC4uLiBmaW5hbGx5IGJhY2sgdG8gYWN0dWFsbHkgcmV0cnkgdGhlIERPIHBoYXNlICovCi0gICAgICAgICAgY29ubiA9ICpjb25ucDsgLyogcmUtYXNzaWduIGNvbm4gc2luY2UgQ3VybF9yZWNvbm5lY3RfcmVxdWVzdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZXMgYSBuZXcgY29ubmVjdGlvbiAqLwotICAgICAgICAgIHJlc3VsdCA9IGNvbm4tPmhhbmRsZXItPmRvX2l0KGNvbm4sIGRvbmUpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQorICBjYXNlIENVUkxQUk9UT19TRlRQOgorICAgIGZhbWlseSA9IENVUkxQUk9UT19TRlRQOworICAgIGJyZWFrOwogCi0gICAgaWYoIXJlc3VsdCAmJiAqZG9uZSkKLSAgICAgIC8qIGRvX2NvbXBsZXRlIG11c3QgYmUgY2FsbGVkIGFmdGVyIHRoZSBwcm90b2NvbC1zcGVjaWZpYyBETyBmdW5jdGlvbiAqLwotICAgICAgZG9fY29tcGxldGUoY29ubik7CisgIGNhc2UgQ1VSTFBST1RPX1RFTE5FVDoKKyAgICBmYW1pbHkgPSBDVVJMUFJPVE9fVEVMTkVUOworICAgIGJyZWFrOworCisgIGNhc2UgQ1VSTFBST1RPX0xEQVA6CisgIGNhc2UgQ1VSTFBST1RPX0xEQVBTOgorICAgIGZhbWlseSA9IENVUkxQUk9UT19MREFQOworICAgIGJyZWFrOworCisgIGNhc2UgQ1VSTFBST1RPX0RJQ1Q6CisgICAgZmFtaWx5ID0gQ1VSTFBST1RPX0RJQ1Q7CisgICAgYnJlYWs7CisKKyAgY2FzZSBDVVJMUFJPVE9fRklMRToKKyAgICBmYW1pbHkgPSBDVVJMUFJPVE9fRklMRTsKKyAgICBicmVhazsKKworICBjYXNlIENVUkxQUk9UT19URlRQOgorICAgIGZhbWlseSA9IENVUkxQUk9UT19URlRQOworICAgIGJyZWFrOworCisgIGNhc2UgQ1VSTFBST1RPX0lNQVA6CisgIGNhc2UgQ1VSTFBST1RPX0lNQVBTOgorICAgIGZhbWlseSA9IENVUkxQUk9UT19JTUFQOworICAgIGJyZWFrOworCisgIGNhc2UgQ1VSTFBST1RPX1BPUDM6CisgIGNhc2UgQ1VSTFBST1RPX1BPUDNTOgorICAgIGZhbWlseSA9IENVUkxQUk9UT19QT1AzOworICAgIGJyZWFrOworCisgIGNhc2UgQ1VSTFBST1RPX1NNVFA6CisgIGNhc2UgQ1VSTFBST1RPX1NNVFBTOgorICAgICAgZmFtaWx5ID0gQ1VSTFBST1RPX1NNVFA7CisgICAgICBicmVhazsKKworICBjYXNlIENVUkxQUk9UT19SVFNQOgorICAgIGZhbWlseSA9IENVUkxQUk9UT19SVFNQOworICAgIGJyZWFrOworCisgIGNhc2UgQ1VSTFBST1RPX1JUTVA6CisgIGNhc2UgQ1VSTFBST1RPX1JUTVBTOgorICAgIGZhbWlseSA9IENVUkxQUk9UT19SVE1QOworICAgIGJyZWFrOworCisgIGNhc2UgQ1VSTFBST1RPX1JUTVBUOgorICBjYXNlIENVUkxQUk9UT19SVE1QVFM6CisgICAgZmFtaWx5ID0gQ1VSTFBST1RPX1JUTVBUOworICAgIGJyZWFrOworCisgIGNhc2UgQ1VSTFBST1RPX1JUTVBFOgorICAgIGZhbWlseSA9IENVUkxQUk9UT19SVE1QRTsKKyAgICBicmVhazsKKworICBjYXNlIENVUkxQUk9UT19SVE1QVEU6CisgICAgZmFtaWx5ID0gQ1VSTFBST1RPX1JUTVBURTsKKyAgICBicmVhazsKKworICBjYXNlIENVUkxQUk9UT19HT1BIRVI6CisgICAgZmFtaWx5ID0gQ1VSTFBST1RPX0dPUEhFUjsKKyAgICBicmVhazsKKworICBjYXNlIENVUkxQUk9UT19TTUI6CisgIGNhc2UgQ1VSTFBST1RPX1NNQlM6CisgICAgZmFtaWx5ID0gQ1VSTFBST1RPX1NNQjsKKyAgICBicmVhazsKKworICBkZWZhdWx0OgorICAgICAgZmFtaWx5ID0gMDsKKyAgICAgIGJyZWFrOwogICB9Ci0gIHJldHVybiByZXN1bHQ7Ci19CiAKLS8qCi0gKiBDdXJsX2RvX21vcmUoKSBpcyBjYWxsZWQgZHVyaW5nIHRoZSBET19NT1JFIG11bHRpIHN0YXRlLiBJdCBpcyBiYXNpY2FsbHkgYQotICogc2Vjb25kIHN0YWdlIERPIHN0YXRlIHdoaWNoICh3cm9uZ2x5KSB3YXMgaW50cm9kdWNlZCB0byBzdXBwb3J0IEZUUCdzCi0gKiBzZWNvbmQgY29ubmVjdGlvbi4KLSAqCi0gKiBUT0RPOiBBIGZ1dHVyZSBsaWJjdXJsIHNob3VsZCBiZSBhYmxlIHRvIHdvcmsgYXdheSB0aGlzIHN0YXRlLgotICoKLSAqICdjb21wbGV0ZScgY2FuIHJldHVybiAwIGZvciBpbmNvbXBsZXRlLCAxIGZvciBkb25lIGFuZCAtMSBmb3IgZ28gYmFjayB0bwotICogRE9JTkcgc3RhdGUgdGhlcmUncyBtb3JlIHdvcmsgdG8gZG8hCi0gKi8KLQotQ1VSTGNvZGUgQ3VybF9kb19tb3JlKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgaW50ICpjb21wbGV0ZSkKLXsKLSAgQ1VSTGNvZGUgcmVzdWx0PUNVUkxFX09LOwotCi0gICpjb21wbGV0ZSA9IDA7Ci0KLSAgaWYoY29ubi0+aGFuZGxlci0+ZG9fbW9yZSkKLSAgICByZXN1bHQgPSBjb25uLT5oYW5kbGVyLT5kb19tb3JlKGNvbm4sIGNvbXBsZXRlKTsKLQotICBpZighcmVzdWx0ICYmICgqY29tcGxldGUgPT0gMSkpCi0gICAgLyogZG9fY29tcGxldGUgbXVzdCBiZSBjYWxsZWQgYWZ0ZXIgdGhlIHByb3RvY29sLXNwZWNpZmljIERPIGZ1bmN0aW9uICovCi0gICAgZG9fY29tcGxldGUoY29ubik7Ci0KLSAgcmV0dXJuIHJlc3VsdDsKKyAgcmV0dXJuIGZhbWlseTsKIH0KZGlmZiAtLWdpdCBhL2xpYi91cmwuaCBiL2xpYi91cmwuaAppbmRleCBlNDliNzcyLi4yYjI1NzMxIDEwMDY0NAotLS0gYS9saWIvdXJsLmgKKysrIGIvbGliL3VybC5oCkBAIC03LDExICs3LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMywgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjcsNiArMjcsNyBAQAogICogUHJvdG90eXBlcyBmb3IgbGlicmFyeS13aWRlIGZ1bmN0aW9ucyBwcm92aWRlZCBieSB1cmwuYwogICovCiAKK0NVUkxjb2RlIEN1cmxfaW5pdF9kbyhzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwgc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKTsKIENVUkxjb2RlIEN1cmxfb3BlbihzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqKmN1cmwpOwogQ1VSTGNvZGUgQ3VybF9pbml0X3VzZXJkZWZpbmVkKHN0cnVjdCBVc2VyRGVmaW5lZCAqc2V0KTsKIENVUkxjb2RlIEN1cmxfc2V0b3B0KHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLCBDVVJMb3B0aW9uIG9wdGlvbiwKQEAgLTM2LDkgKzM3LDYgQEAKIENVUkxjb2RlIEN1cmxfY2xvc2Uoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEpOyAvKiBvcHBvc2l0ZSBvZiBjdXJsX29wZW4oKSAqLwogQ1VSTGNvZGUgQ3VybF9jb25uZWN0KHN0cnVjdCBTZXNzaW9uSGFuZGxlICosIHN0cnVjdCBjb25uZWN0ZGF0YSAqKiwKICAgICAgICAgICAgICAgICAgICAgICBib29sICphc3luYywgYm9vbCAqcHJvdG9jb2xfY29ubmVjdCk7Ci1DVVJMY29kZSBDdXJsX2RvKHN0cnVjdCBjb25uZWN0ZGF0YSAqKiwgYm9vbCAqZG9uZSk7Ci1DVVJMY29kZSBDdXJsX2RvX21vcmUoc3RydWN0IGNvbm5lY3RkYXRhICosIGludCAqY29tcGxldGVkKTsKLUNVUkxjb2RlIEN1cmxfZG9uZShzdHJ1Y3QgY29ubmVjdGRhdGEgKiosIENVUkxjb2RlLCBib29sIHByZW1hdHVyZSk7CiBDVVJMY29kZSBDdXJsX2Rpc2Nvbm5lY3Qoc3RydWN0IGNvbm5lY3RkYXRhICosIGJvb2wgZGVhZF9jb25uZWN0aW9uKTsKIENVUkxjb2RlIEN1cmxfcHJvdG9jb2xfY29ubmVjdChzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGJvb2wgKmRvbmUpOwogQ1VSTGNvZGUgQ3VybF9wcm90b2NvbF9jb25uZWN0aW5nKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgYm9vbCAqZG9uZSk7CkBAIC01OSw2ICs1Nyw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGN1cmxfbGxpc3QgKnBpcGVsaW5lKTsKIGludCBDdXJsX3JlbW92ZUhhbmRsZUZyb21QaXBlbGluZShzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqaGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjdXJsX2xsaXN0ICpwaXBlbGluZSk7CitzdHJ1Y3QgY29ubmVjdGRhdGEgKgorQ3VybF9vbGRlc3RfaWRsZV9jb25uZWN0aW9uKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhKTsKIC8qIHJlbW92ZSB0aGUgc3BlY2lmaWVkIGNvbm5lY3Rpb24gZnJvbSBhbGwgKHBvc3NpYmxlKSBwaXBlbGluZXMgYW5kIHJlbGF0ZWQKICAgIHF1ZXVlcyAqLwogdm9pZCBDdXJsX2dldG9mZl9hbGxfcGlwZWxpbmVzKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLApAQCAtNjcsMTEgKzY3LDYgQEAKIHZvaWQgQ3VybF9jbG9zZV9jb25uZWN0aW9ucyhzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSk7CiAKICNkZWZpbmUgQ1VSTF9ERUZBVUxUX1BST1hZX1BPUlQgMTA4MCAvKiBkZWZhdWx0IHByb3h5IHBvcnQgdW5sZXNzIHNwZWNpZmllZCAqLwotI2RlZmluZSBDVVJMX0RFRkFVTFRfU09DS1M1X0dTU0FQSV9TRVJWSUNFICJyY21kIiAvKiBkZWZhdWx0IHNvY2tzNSBnc3NhcGkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZSAqLwotI2RlZmluZSBDVVJMX0RFRkFVTFRfUFJPWFlfU0VSVklDRV9OQU1FICJIVFRQIiAvKiBkZWZhdWx0IG5lZ290aWF0ZSBwcm94eQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlICovCi0jZGVmaW5lIENVUkxfREVGQVVMVF9TRVJWSUNFX05BTUUgIkhUVFAiICAvKiBkZWZhdWx0IG5lZ290aWF0ZSBzZXJ2aWNlICovCiAKIENVUkxjb2RlIEN1cmxfY29ubmVjdGVkX3Byb3h5KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgaW50IHNvY2tpbmRleCk7CiAKZGlmZiAtLWdpdCBhL2xpYi91cmxkYXRhLmggYi9saWIvdXJsZGF0YS5oCmluZGV4IDA1YmRhNzkuLjI1NTk0ZDMgMTAwNjQ0Ci0tLSBhL2xpYi91cmxkYXRhLmgKKysrIGIvbGliL3VybGRhdGEuaApAQCAtNywxMSArNywxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTkzLDcgKzkzLDE1IEBACiAjaW5jbHVkZSA8Z251dGxzL2dudXRscy5oPgogI2VuZGlmCiAKLSNpZmRlZiBVU0VfUE9MQVJTU0wKKyNpZmRlZiBVU0VfTUJFRFRMUworCisjaW5jbHVkZSA8bWJlZHRscy9zc2wuaD4KKyNpbmNsdWRlIDxtYmVkdGxzL3ZlcnNpb24uaD4KKyNpbmNsdWRlIDxtYmVkdGxzL2VudHJvcHkuaD4KKyNpbmNsdWRlIDxtYmVkdGxzL2N0cl9kcmJnLmg+CisKKyNlbGlmIGRlZmluZWQgVVNFX1BPTEFSU1NMCisKICNpbmNsdWRlIDxwb2xhcnNzbC9zc2wuaD4KICNpbmNsdWRlIDxwb2xhcnNzbC92ZXJzaW9uLmg+CiAjaWYgUE9MQVJTU0xfVkVSU0lPTl9OVU1CRVI8MHgwMTAxMDAwMApAQCAtMTAyLDYgKzExMCw3IEBACiAjaW5jbHVkZSA8cG9sYXJzc2wvZW50cm9weS5oPgogI2luY2x1ZGUgPHBvbGFyc3NsL2N0cl9kcmJnLmg+CiAjZW5kaWYgLyogUE9MQVJTU0xfVkVSU0lPTl9OVU1CRVI8MHgwMTAxMDAwMCAqLworCiAjZW5kaWYgLyogVVNFX1BPTEFSU1NMICovCiAKICNpZmRlZiBVU0VfQ1lBU1NMCkBAIC0xOTgsNiArMjA3LDggQEAKICNkZWZpbmUgSEVBREVSU0laRSAyNTYKIAogI2RlZmluZSBDVVJMRUFTWV9NQUdJQ19OVU1CRVIgMHhjMGRlZGJhZFUKKyNkZWZpbmUgR09PRF9FQVNZX0hBTkRMRSh4KSBcCisgICgoeCkgJiYgKCgoc3RydWN0IFNlc3Npb25IYW5kbGUgKikoeCkpLT5tYWdpYyA9PSBDVVJMRUFTWV9NQUdJQ19OVU1CRVIpKQogCiAvKiBTb21lIGNvbnZlbmllbmNlIG1hY3JvcyB0byBnZXQgdGhlIGxhcmdlci9zbWFsbGVyIHZhbHVlIG91dCBvZiB0d28gZ2l2ZW4uCiAgICBXZSBwcmVmaXggd2l0aCBDVVJMIHRvIHByZXZlbnQgbmFtZSBjb2xsaXNpb25zLiAqLwpAQCAtMjYzLDYxICsyNzQsNTcgQEAKICAgICAgY3VycmVudCBzdGF0ZSBvZiB0aGUgY29ubmVjdGlvbi4gKi8KICAgYm9vbCB1c2U7CiAgIHNzbF9jb25uZWN0aW9uX3N0YXRlIHN0YXRlOwotI2lmZGVmIFVTRV9PUEVOU1NMCisgIHNzbF9jb25uZWN0X3N0YXRlIGNvbm5lY3Rpbmdfc3RhdGU7CisjaWYgZGVmaW5lZChVU0VfT1BFTlNTTCkKICAgLyogdGhlc2Ugb25lcyByZXF1aXJlcyBzcGVjaWZpYyBTU0wtdHlwZXMgKi8KICAgU1NMX0NUWCogY3R4OwogICBTU0wqICAgICBoYW5kbGU7CiAgIFg1MDkqICAgIHNlcnZlcl9jZXJ0OwotICBzc2xfY29ubmVjdF9zdGF0ZSBjb25uZWN0aW5nX3N0YXRlOwotI2VuZGlmIC8qIFVTRV9PUEVOU1NMICovCi0jaWZkZWYgVVNFX0dOVVRMUworI2VsaWYgZGVmaW5lZChVU0VfR05VVExTKQogICBnbnV0bHNfc2Vzc2lvbl90IHNlc3Npb247CiAgIGdudXRsc19jZXJ0aWZpY2F0ZV9jcmVkZW50aWFsc190IGNyZWQ7CiAjaWZkZWYgVVNFX1RMU19TUlAKICAgZ251dGxzX3NycF9jbGllbnRfY3JlZGVudGlhbHNfdCBzcnBfY2xpZW50X2NyZWQ7CiAjZW5kaWYKLSAgc3NsX2Nvbm5lY3Rfc3RhdGUgY29ubmVjdGluZ19zdGF0ZTsKLSNlbmRpZiAvKiBVU0VfR05VVExTICovCi0jaWZkZWYgVVNFX1BPTEFSU1NMCisjZWxpZiBkZWZpbmVkKFVTRV9NQkVEVExTKQorICBtYmVkdGxzX2N0cl9kcmJnX2NvbnRleHQgY3RyX2RyYmc7CisgIG1iZWR0bHNfZW50cm9weV9jb250ZXh0IGVudHJvcHk7CisgIG1iZWR0bHNfc3NsX2NvbnRleHQgc3NsOworICBpbnQgc2VydmVyX2ZkOworICBtYmVkdGxzX3g1MDlfY3J0IGNhY2VydDsKKyAgbWJlZHRsc194NTA5X2NydCBjbGljZXJ0OworICBtYmVkdGxzX3g1MDlfY3JsIGNybDsKKyAgbWJlZHRsc19wa19jb250ZXh0IHBrOworICBtYmVkdGxzX3NzbF9jb25maWcgY29uZmlnOworICBjb25zdCBjaGFyICpwcm90b2NvbHNbM107CisjZWxpZiBkZWZpbmVkKFVTRV9QT0xBUlNTTCkKICAgY3RyX2RyYmdfY29udGV4dCBjdHJfZHJiZzsKICAgZW50cm9weV9jb250ZXh0IGVudHJvcHk7CiAgIHNzbF9jb250ZXh0IHNzbDsKLSAgc3NsX3Nlc3Npb24gc3NuOwogICBpbnQgc2VydmVyX2ZkOwogICB4NTA5X2NydCBjYWNlcnQ7CiAgIHg1MDlfY3J0IGNsaWNlcnQ7CiAgIHg1MDlfY3JsIGNybDsKICAgcnNhX2NvbnRleHQgcnNhOwotICBzc2xfY29ubmVjdF9zdGF0ZSBjb25uZWN0aW5nX3N0YXRlOwotI2VuZGlmIC8qIFVTRV9QT0xBUlNTTCAqLwotI2lmZGVmIFVTRV9DWUFTU0wKKyNlbGlmIGRlZmluZWQoVVNFX0NZQVNTTCkKICAgU1NMX0NUWCogY3R4OwogICBTU0wqICAgICBoYW5kbGU7Ci0gIHNzbF9jb25uZWN0X3N0YXRlIGNvbm5lY3Rpbmdfc3RhdGU7Ci0jZW5kaWYgLyogVVNFX0NZQVNTTCAqLwotI2lmZGVmIFVTRV9OU1MKKyNlbGlmIGRlZmluZWQoVVNFX05TUykKICAgUFJGaWxlRGVzYyAqaGFuZGxlOwogICBjaGFyICpjbGllbnRfbmlja25hbWU7CiAgIHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhOwogICBzdHJ1Y3QgY3VybF9sbGlzdCAqb2JqX2xpc3Q7CiAgIFBLMTFHZW5lcmljT2JqZWN0ICpvYmpfY2xpY2VydDsKLSAgc3NsX2Nvbm5lY3Rfc3RhdGUgY29ubmVjdGluZ19zdGF0ZTsKLSNlbmRpZiAvKiBVU0VfTlNTICovCi0jaWZkZWYgVVNFX0dTS0lUCisjZWxpZiBkZWZpbmVkKFVTRV9HU0tJVCkKICAgZ3NrX2hhbmRsZSBoYW5kbGU7CiAgIGludCBpb2Nwb3J0OwotICBzc2xfY29ubmVjdF9zdGF0ZSBjb25uZWN0aW5nX3N0YXRlOwotI2VuZGlmCi0jaWZkZWYgVVNFX0FYVExTCisjZWxpZiBkZWZpbmVkKFVTRV9BWFRMUykKICAgU1NMX0NUWCogc3NsX2N0eDsKICAgU1NMKiAgICAgc3NsOwotICBzc2xfY29ubmVjdF9zdGF0ZSBjb25uZWN0aW5nX3N0YXRlOwotI2VuZGlmIC8qIFVTRV9BWFRMUyAqLwotI2lmZGVmIFVTRV9TQ0hBTk5FTAorI2VsaWYgZGVmaW5lZChVU0VfU0NIQU5ORUwpCiAgIHN0cnVjdCBjdXJsX3NjaGFubmVsX2NyZWQgKmNyZWQ7CiAgIHN0cnVjdCBjdXJsX3NjaGFubmVsX2N0eHQgKmN0eHQ7CiAgIFNlY1BrZ0NvbnRleHRfU3RyZWFtU2l6ZXMgc3RyZWFtX3NpemVzOwotICBzc2xfY29ubmVjdF9zdGF0ZSBjb25uZWN0aW5nX3N0YXRlOwogICBzaXplX3QgZW5jZGF0YV9sZW5ndGgsIGRlY2RhdGFfbGVuZ3RoOwogICBzaXplX3QgZW5jZGF0YV9vZmZzZXQsIGRlY2RhdGFfb2Zmc2V0OwogICB1bnNpZ25lZCBjaGFyICplbmNkYXRhX2J1ZmZlciwgKmRlY2RhdGFfYnVmZmVyOwpAQCAtMzI1LDE0ICszMzIsMTQgQEAKICAgQ1VSTGNvZGUgcmVjdl91bnJlY292ZXJhYmxlX2VycjsgLyogc2NoYW5uZWxfcmVjdiBoYWQgYW4gdW5yZWNvdmVyYWJsZSBlcnIgKi8KICAgYm9vbCByZWN2X3NzcGlfY2xvc2Vfbm90aWZ5OyAvKiB0cnVlIGlmIGNvbm5lY3Rpb24gY2xvc2VkIGJ5IGNsb3NlX25vdGlmeSAqLwogICBib29sIHJlY3ZfY29ubmVjdGlvbl9jbG9zZWQ7IC8qIHRydWUgaWYgY29ubmVjdGlvbiBjbG9zZWQsIHJlZ2FyZGxlc3MgaG93ICovCi0jZW5kaWYgLyogVVNFX1NDSEFOTkVMICovCi0jaWZkZWYgVVNFX0RBUldJTlNTTAorI2VsaWYgZGVmaW5lZChVU0VfREFSV0lOU1NMKQogICBTU0xDb250ZXh0UmVmIHNzbF9jdHg7CiAgIGN1cmxfc29ja2V0X3Qgc3NsX3NvY2tmZDsKLSAgc3NsX2Nvbm5lY3Rfc3RhdGUgY29ubmVjdGluZ19zdGF0ZTsKICAgYm9vbCBzc2xfZGlyZWN0aW9uOyAvKiB0cnVlIGlmIHdyaXRpbmcsIGZhbHNlIGlmIHJlYWRpbmcgKi8KICAgc2l6ZV90IHNzbF93cml0ZV9idWZmZXJlZF9sZW5ndGg7Ci0jZW5kaWYgLyogVVNFX0RBUldJTlNTTCAqLworI2VsaWYgZGVmaW5lZChVU0VfU1NMKQorI2Vycm9yICJTU0wgYmFja2VuZCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBtaXNzaW5nIGZyb20gc3NsX2Nvbm5lY3RfZGF0YSIKKyNlbmRpZgogfTsKIAogc3RydWN0IHNzbF9jb25maWdfZGF0YSB7CkBAIC0zNjYsMTAgKzM3MywxMiBAQAogLyogaW5mb3JtYXRpb24gc3RvcmVkIGFib3V0IG9uZSBzaW5nbGUgU1NMIHNlc3Npb24gKi8KIHN0cnVjdCBjdXJsX3NzbF9zZXNzaW9uIHsKICAgY2hhciAqbmFtZTsgICAgICAgLyogaG9zdCBuYW1lIGZvciB3aGljaCB0aGlzIElEIHdhcyB1c2VkICovCisgIGNoYXIgKmNvbm5fdG9faG9zdDsgLyogaG9zdCBuYW1lIGZvciB0aGUgY29ubmVjdGlvbiAobWF5IGJlIE5VTEwpICovCiAgIHZvaWQgKnNlc3Npb25pZDsgIC8qIGFzIHJldHVybmVkIGZyb20gdGhlIFNTTCBsYXllciAqLwogICBzaXplX3QgaWRzaXplOyAgICAvKiBpZiBrbm93biwgb3RoZXJ3aXNlIDAgKi8KICAgbG9uZyBhZ2U7ICAgICAgICAgLyoganVzdCBhIG51bWJlciwgdGhlIGhpZ2hlciB0aGUgbW9yZSByZWNlbnQgKi8KLSAgaW50IHJlbW90ZV9wb3J0OyAgLyogcmVtb3RlIHBvcnQgdG8gY29ubmVjdCB0byAqLworICBpbnQgcmVtb3RlX3BvcnQ7ICAvKiByZW1vdGUgcG9ydCAqLworICBpbnQgY29ubl90b19wb3J0OyAvKiByZW1vdGUgcG9ydCBmb3IgdGhlIGNvbm5lY3Rpb24gKG1heSBiZSAtMSkgKi8KICAgc3RydWN0IHNzbF9jb25maWdfZGF0YSBzc2xfY29uZmlnOyAvKiBzZXR1cCBmb3IgdGhpcyBzZXNzaW9uICovCiB9OwogCkBAIC00NTUsNyArNDY0LDcgQEAKICNpZmRlZiBIQVZFX0dTU0FQSQogICBPTV91aW50MzIgc3RhdHVzOwogICBnc3NfY3R4X2lkX3QgY29udGV4dDsKLSAgZ3NzX25hbWVfdCBzZXJ2ZXJfbmFtZTsKKyAgZ3NzX25hbWVfdCBzcG47CiAgIGdzc19idWZmZXJfZGVzYyBvdXRwdXRfdG9rZW47CiAjZWxzZQogI2lmZGVmIFVTRV9XSU5ET1dTX1NTUEkKQEAgLTQ2NCw3ICs0NzMsNyBAQAogICBDdHh0SGFuZGxlICpjb250ZXh0OwogICBTRUNfV0lOTlRfQVVUSF9JREVOVElUWSBpZGVudGl0eTsKICAgU0VDX1dJTk5UX0FVVEhfSURFTlRJVFkgKnBfaWRlbnRpdHk7Ci0gIFRDSEFSICpzZXJ2ZXJfbmFtZTsKKyAgVENIQVIgKnNwbjsKICAgc2l6ZV90IHRva2VuX21heDsKICAgQllURSAqb3V0cHV0X3Rva2VuOwogICBzaXplX3Qgb3V0cHV0X3Rva2VuX2xlbmd0aDsKQEAgLTQ4MSw2ICs0OTAsMTAgQEAKICAgLyogYWx3YXlzIG1vZGlmeSBiaXRzLmNsb3NlIHdpdGggdGhlIGNvbm5jbG9zZSgpIGFuZCBjb25ua2VlcCgpIG1hY3JvcyEgKi8KICAgYm9vbCBjbG9zZTsgLyogaWYgc2V0LCB3ZSBjbG9zZSB0aGUgY29ubmVjdGlvbiBhZnRlciB0aGlzIHJlcXVlc3QgKi8KICAgYm9vbCByZXVzZTsgLyogaWYgc2V0LCB0aGlzIGlzIGEgcmUtdXNlZCBjb25uZWN0aW9uICovCisgIGJvb2wgY29ubl90b19ob3N0OyAvKiBpZiBzZXQsIHRoaXMgY29ubmVjdGlvbiBoYXMgYSAiY29ubmVjdCB0byBob3N0IgorICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBvdmVycmlkZXMgdGhlIGhvc3QgaW4gdGhlIFVSTCAqLworICBib29sIGNvbm5fdG9fcG9ydDsgLyogaWYgc2V0LCB0aGlzIGNvbm5lY3Rpb24gaGFzIGEgImNvbm5lY3QgdG8gcG9ydCIKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgb3ZlcnJpZGVzIHRoZSBwb3J0IGluIHRoZSBVUkwgKHJlbW90ZSBwb3J0KSAqLwogICBib29sIHByb3h5OyAvKiBpZiBzZXQsIHRoaXMgdHJhbnNmZXIgaXMgZG9uZSB0aHJvdWdoIGEgcHJveHkgLSBhbnkgdHlwZSAqLwogICBib29sIGh0dHBwcm94eTsgICAgLyogaWYgc2V0LCB0aGlzIHRyYW5zZmVyIGlzIGRvbmUgdGhyb3VnaCBhIGh0dHAgcHJveHkgKi8KICAgYm9vbCB1c2VyX3Bhc3N3ZDsgICAgLyogZG8gd2UgdXNlIHVzZXIrcGFzc3dvcmQgZm9yIHRoaXMgY29ubmVjdGlvbj8gKi8KQEAgLTUyOSw2ICs1NDIsMTAgQEAKICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbiAqLwogICBib29sIHR5cGVfc2V0OyAgLyogdHlwZT0gd2FzIHVzZWQgaW4gdGhlIFVSTCAqLwogICBib29sIG11bHRpcGxleDsgLyogY29ubmVjdGlvbiBpcyBtdWx0aXBsZXhlZCAqLworCisgIGJvb2wgdGNwX2Zhc3RvcGVuOyAvKiB1c2UgVENQIEZhc3QgT3BlbiAqLworICBib29sIHRsc19lbmFibGVfbnBuOyAgLyogVExTIE5QTiBleHRlbnNpb24/ICovCisgIGJvb2wgdGxzX2VuYWJsZV9hbHBuOyAvKiBUTFMgQUxQTiBleHRlbnNpb24/ICovCiB9OwogCiBzdHJ1Y3QgaG9zdG5hbWUgewpAQCAtNjU4LDcgKzY3NSw2IEBACiAjZGVmaW5lIElERU5USVRZIDAgICAgICAgICAgICAgIC8qIE5vIGVuY29kaW5nICovCiAjZGVmaW5lIERFRkxBVEUgMSAgICAgICAgICAgICAgIC8qIHpsaWIgZGVmbGF0ZSBbUkZDIDE5NTAgJiAxOTUxXSAqLwogI2RlZmluZSBHWklQIDIgICAgICAgICAgICAgICAgICAvKiBnemlwIGFsZ29yaXRobSBbUkZDIDE5NTJdICovCi0jZGVmaW5lIENPTVBSRVNTIDMgICAgICAgICAgICAgIC8qIE5vdCBoYW5kbGVkLCBhZGRlZCBmb3IgY29tcGxldGVuZXNzICovCiAKICNpZmRlZiBIQVZFX0xJQloKICAgemxpYkluaXRTdGF0ZSB6bGliX2luaXQ7ICAgICAgLyogcG9zc2libGUgemxpYiBpbml0IHN0YXRlOwpAQCAtODAxLDcgKzgxNyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsIHF1ZXJ5IHN0cmluZ3MgKD9mb289YmFyKSAhICovCiAjZGVmaW5lIFBST1RPUFRfQ1JFRFNQRVJSRVFVRVNUICgxPDw3KSAvKiByZXF1aXJlcyBsb2dpbiBjcmVkZW50aWFscyBwZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QgaW5zdGVhZCBvZiBwZXIgY29ubmVjdGlvbiAqLwotCisjZGVmaW5lIFBST1RPUFRfQUxQTl9OUE4gKDE8PDgpIC8qIHNldCBBTFBOIGFuZC9vciBOUE4gZm9yIHRoaXMgKi8KIAogLyogcmV0dXJuIHRoZSBjb3VudCBvZiBieXRlcyBzZW50LCBvciAtMSBvbiBlcnJvciAqLwogdHlwZWRlZiBzc2l6ZV90IChDdXJsX3NlbmQpKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgLyogY29ubmVjdGlvbiBkYXRhICovCkBAIC04MTcsNiArODMzLDIwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbiwgICAgICAgICAgICAgICAvKiBtYXggYW1vdW50IHRvIHJlYWQgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDVVJMY29kZSAqZXJyKTsgICAgICAgICAgIC8qIGVycm9yIHRvIHJldHVybiAqLwogCisjaWZkZWYgVVNFX1JFQ1ZfQkVGT1JFX1NFTkRfV09SS0FST1VORAorc3RydWN0IHBvc3Rwb25lZF9kYXRhIHsKKyAgY2hhciAqYnVmZmVyOyAgICAgICAgICAvKiBUZW1wb3JhbCBzdG9yZSBmb3IgcmVjZWl2ZWQgZGF0YSBkdXJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5kaW5nLCBtdXN0IGJlIGZyZWVkICovCisgIHNpemVfdCBhbGxvY2F0ZWRfc2l6ZTsgLyogU2l6ZSBvZiB0ZW1wb3JhbCBzdG9yZSAqLworICBzaXplX3QgcmVjdl9zaXplOyAgICAgIC8qIFNpemUgb2YgcmVjZWl2ZWQgZGF0YSBkdXJpbmcgc2VuZGluZyAqLworICBzaXplX3QgcmVjdl9wcm9jZXNzZWQ7IC8qIFNpemUgb2YgcHJvY2Vzc2VkIHBhcnQgb2YgcG9zdHBvbmVkIGRhdGEgKi8KKyNpZmRlZiBERUJVR0JVSUxECisgIGN1cmxfc29ja2V0X3QgYmluZHNvY2s7LyogU3RydWN0dXJlIG11c3QgYmUgYm91bmQgdG8gc3BlY2lmaWMgc29ja2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZWQgb25seSBmb3IgREVCVUdBU1NFUlQgKi8KKyNlbmRpZiAvKiBERUJVR0JVSUxEICovCit9OworI2VuZGlmIC8qIFVTRV9SRUNWX0JFRk9SRV9TRU5EX1dPUktBUk9VTkQgKi8KKwogLyoKICAqIFRoZSBjb25uZWN0ZGF0YSBzdHJ1Y3QgY29udGFpbnMgYWxsIGZpZWxkcyBhbmQgdmFyaWFibGVzIHRoYXQgc2hvdWxkIGJlCiAgKiB1bmlxdWUgZm9yIGFuIGVudGlyZSBjb25uZWN0aW9uLgpAQCAtODY2LDEwICs4OTYsMTQgQEAKICAgaW50IHNvY2t0eXBlOyAgLyogU09DS19TVFJFQU0gb3IgU09DS19ER1JBTSAqLwogCiAgIHN0cnVjdCBob3N0bmFtZSBob3N0OworICBzdHJ1Y3QgaG9zdG5hbWUgY29ubl90b19ob3N0OyAvKiB0aGUgaG9zdCB0byBjb25uZWN0IHRvLiB2YWxpZCBvbmx5IGlmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpdHMuY29ubl90b19ob3N0IGlzIHNldCAqLwogICBzdHJ1Y3QgaG9zdG5hbWUgcHJveHk7CiAKICAgbG9uZyBwb3J0OyAgICAgICAvKiB3aGljaCBwb3J0IHRvIHVzZSBsb2NhbGx5ICovCi0gIGludCByZW1vdGVfcG9ydDsgLyogd2hhdCByZW1vdGUgcG9ydCB0byBjb25uZWN0IHRvLCBub3QgdGhlIHByb3h5IHBvcnQhICovCisgIGludCByZW1vdGVfcG9ydDsgLyogdGhlIHJlbW90ZSBwb3J0LCBub3QgdGhlIHByb3h5IHBvcnQhICovCisgIGludCBjb25uX3RvX3BvcnQ7IC8qIHRoZSByZW1vdGUgcG9ydCB0byBjb25uZWN0IHRvLiB2YWxpZCBvbmx5IGlmCisgICAgICAgICAgICAgICAgICAgICAgIGJpdHMuY29ubl90b19wb3J0IGlzIHNldCAqLwogCiAgIC8qICdwcmltYXJ5X2lwJyBhbmQgJ3ByaW1hcnlfcG9ydCcgZ2V0IGZpbGxlZCB3aXRoIHBlZXIncyBudW1lcmljYWwKICAgICAgaXAgYWRkcmVzcyBhbmQgcG9ydCBudW1iZXIgd2hlbmV2ZXIgYW4gb3V0Z29pbmcgY29ubmVjdGlvbiBpcwpAQCAtODkyLDcgKzkyNiw3IEBACiAgIGNoYXIgKnBhc3N3ZDsgIC8qIHBhc3N3b3JkIHN0cmluZywgYWxsb2NhdGVkICovCiAgIGNoYXIgKm9wdGlvbnM7IC8qIG9wdGlvbnMgc3RyaW5nLCBhbGxvY2F0ZWQgKi8KIAotICBjaGFyICp4b2F1dGgyX2JlYXJlcjsgLyogYmVhcmVyIHRva2VuIGZvciB4b2F1dGgyLCBhbGxvY2F0ZWQgKi8KKyAgY2hhciAqb2F1dGhfYmVhcmVyOyAvKiBiZWFyZXIgdG9rZW4gZm9yIE9BdXRoIDIuMCwgYWxsb2NhdGVkICovCiAKICAgY2hhciAqcHJveHl1c2VyOyAgICAvKiBwcm94eSB1c2VyIG5hbWUgc3RyaW5nLCBhbGxvY2F0ZWQgKi8KICAgY2hhciAqcHJveHlwYXNzd2Q7ICAvKiBwcm94eSBwYXNzd29yZCBzdHJpbmcsIGFsbG9jYXRlZCAqLwpAQCAtOTExLDggKzk0NSwxMiBAQAogICBDdXJsX3JlY3YgKnJlY3ZbMl07CiAgIEN1cmxfc2VuZCAqc2VuZFsyXTsKIAorI2lmZGVmIFVTRV9SRUNWX0JFRk9SRV9TRU5EX1dPUktBUk9VTkQKKyAgc3RydWN0IHBvc3Rwb25lZF9kYXRhIHBvc3Rwb25lZFsyXTsgLyogdHdvIGJ1ZmZlcnMgZm9yIHR3byBzb2NrZXRzICovCisjZW5kaWYgLyogVVNFX1JFQ1ZfQkVGT1JFX1NFTkRfV09SS0FST1VORCAqLwogICBzdHJ1Y3Qgc3NsX2Nvbm5lY3RfZGF0YSBzc2xbMl07IC8qIHRoaXMgaXMgZm9yIHNzbC1zdHVmZiAqLwogICBzdHJ1Y3Qgc3NsX2NvbmZpZ19kYXRhIHNzbF9jb25maWc7CisgIGJvb2wgdGxzX3VwZ3JhZGVkOwogCiAgIHN0cnVjdCBDb25uZWN0Qml0cyBiaXRzOyAgICAvKiB2YXJpb3VzIHN0YXRlLWZsYWdzIGZvciB0aGlzIGNvbm5lY3Rpb24gKi8KIApAQCAtMTIxNywxMSArMTI1NSwxMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlcyAvIHNlY29uZCAqLwogICBib29sIHRoaXNfaXNfYV9mb2xsb3c7IC8qIHRoaXMgaXMgYSBmb2xsb3dlZCBMb2NhdGlvbjogcmVxdWVzdCAqLwogCi0gIGNoYXIgKmZpcnN0X2hvc3Q7IC8qIGlmIHNldCwgdGhpcyBzaG91bGQgYmUgdGhlIGhvc3QgbmFtZSB0aGF0IHdlIHdpbGwKKyAgY2hhciAqZmlyc3RfaG9zdDsgLyogaG9zdCBuYW1lIG9mIHRoZSBmaXJzdCAobm90IGZvbGxvd2VkKSByZXF1ZXN0LgorICAgICAgICAgICAgICAgICAgICAgICBpZiBzZXQsIHRoaXMgc2hvdWxkIGJlIHRoZSBob3N0IG5hbWUgdGhhdCB3ZSB3aWxsCiAgICAgICAgICAgICAgICAgICAgICAgIHNlbnQgYXV0aG9yaXphdGlvbiB0bywgbm8gZWxzZS4gVXNlZCB0byBtYWtlIExvY2F0aW9uOgogICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmcgbm90IGtlZXAgc2VuZGluZyB1c2VyK3Bhc3N3b3JkLi4uIFRoaXMgaXMKICAgICAgICAgICAgICAgICAgICAgICAgc3RyZHVwKCkgZGF0YS4KICAgICAgICAgICAgICAgICAgICAgKi8KKyAgaW50IGZpcnN0X3JlbW90ZV9wb3J0OyAvKiByZW1vdGUgcG9ydCBvZiB0aGUgZmlyc3QgKG5vdCBmb2xsb3dlZCkgcmVxdWVzdCAqLwogICBzdHJ1Y3QgY3VybF9zc2xfc2Vzc2lvbiAqc2Vzc2lvbjsgLyogYXJyYXkgb2YgJ21heF9zc2xfc2Vzc2lvbnMnIHNpemUgKi8KICAgbG9uZyBzZXNzaW9uYWdlOyAgICAgICAgICAgICAgICAgIC8qIG51bWJlciBvZiB0aGUgbW9zdCByZWNlbnQgc2Vzc2lvbiAqLwogICBjaGFyICp0ZW1wd3JpdGU7ICAgICAgLyogYWxsb2NhdGVkIGJ1ZmZlciB0byBrZWVwIGRhdGEgaW4gd2hlbiBhIHdyaXRlCkBAIC0xMzA1LDEyICsxMzQ1LDE5IEBACiAgIGN1cmxfb2ZmX3QgaW5maWxlc2l6ZTsgLyogc2l6ZSBvZiBmaWxlIHRvIHVwbG9hZCwgLTEgbWVhbnMgdW5rbm93bi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3BpZWQgZnJvbSBzZXQuZmlsZXNpemUgYXQgc3RhcnQgb2Ygb3BlcmF0aW9uICovCiAKLSAgaW50IGRyYWluOyAvKiBJbmNyZWFzZWQgd2hlbiB0aGlzIHN0cmVhbSBoYXMgZGF0YSB0byByZWFkLCBldmVuIGlmIGl0cwotICAgICAgICAgICAgICAgIHNvY2tldCBub3QgbmVjZXNzYXJpbHkgaXMgcmVhZGFibGUuIERlY3JlYXNlZCB3aGVuCi0gICAgICAgICAgICAgICAgY2hlY2tlZC4gKi8KKyAgc2l6ZV90IGRyYWluOyAvKiBJbmNyZWFzZWQgd2hlbiB0aGlzIHN0cmVhbSBoYXMgZGF0YSB0byByZWFkLCBldmVuIGlmIGl0cworICAgICAgICAgICAgICAgICAgIHNvY2tldCBpcyBub3QgbmVjZXNzYXJpbHkgaXMgcmVhZGFibGUuIERlY3JlYXNlZCB3aGVuCisgICAgICAgICAgICAgICAgICAgY2hlY2tlZC4gKi8KICAgYm9vbCBkb25lOyAvKiBzZXQgdG8gRkFMU0Ugd2hlbiBDdXJsX2RvKCkgaXMgY2FsbGVkIGFuZCBzZXQgdG8gVFJVRSB3aGVuCiAgICAgICAgICAgICAgICAgQ3VybF9kb25lKCkgaXMgY2FsbGVkLCB0byBwcmV2ZW50IEN1cmxfZG9uZSgpIHRvIGdldCBpbnZva2VkCiAgICAgICAgICAgICAgICAgdHdpY2Ugd2hlbiB0aGUgbXVsdGkgaW50ZXJmYWNlIGlzIHVzZWQuICovCisKKyAgY3VybF9yZWFkX2NhbGxiYWNrIGZyZWFkX2Z1bmM7IC8qIHJlYWQgY2FsbGJhY2svZnVuY3Rpb24gKi8KKyAgdm9pZCAqaW47ICAgICAgICAgICAgICAgICAgICAgIC8qIENVUkxPUFRfUkVBRERBVEEgKi8KKworICBzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqc3RyZWFtX2RlcGVuZHNfb247CisgIGJvb2wgc3RyZWFtX2RlcGVuZHNfZTsgLyogc2V0IG9yIGRvbid0IHNldCB0aGUgRXhjbHVzaXZlIGJpdCAqLworICBpbnQgc3RyZWFtX3dlaWdodDsKIH07CiAKIApAQCAtMTM0OSw2ICsxMzk2LDcgQEAKICAgU1RSSU5HX0NPT0tJRSwgICAgICAgICAgLyogSFRUUCBjb29raWUgc3RyaW5nIHRvIHNlbmQgKi8KICAgU1RSSU5HX0NPT0tJRUpBUiwgICAgICAgLyogZHVtcCBhbGwgY29va2llcyB0byB0aGlzIGZpbGUgKi8KICAgU1RSSU5HX0NVU1RPTVJFUVVFU1QsICAgLyogSFRUUC9GVFAvUlRTUCByZXF1ZXN0L21ldGhvZCB0byB1c2UgKi8KKyAgU1RSSU5HX0RFRkFVTFRfUFJPVE9DT0wsIC8qIFByb3RvY29sIHRvIHVzZSB3aGVuIHRoZSBVUkwgZG9lc24ndCBzcGVjaWZ5ICovCiAgIFNUUklOR19ERVZJQ0UsICAgICAgICAgIC8qIGxvY2FsIG5ldHdvcmsgaW50ZXJmYWNlL2FkZHJlc3MgdG8gdXNlICovCiAgIFNUUklOR19FTkNPRElORywgICAgICAgIC8qIEFjY2VwdC1FbmNvZGluZyBzdHJpbmcgKi8KICAgU1RSSU5HX0ZUUF9BQ0NPVU5ULCAgICAgLyogZnRwIGFjY291bnQgZGF0YSAqLwpAQCAtMTM5MCw4ICsxNDM4LDEwIEBACiAgIFNUUklOR19TU0hfS05PV05IT1NUUywgIC8qIGZpbGUgbmFtZSBvZiBrbm93bmhvc3RzIGZpbGUgKi8KICNlbmRpZgogI2lmIGRlZmluZWQoSEFWRV9HU1NBUEkpIHx8IGRlZmluZWQoVVNFX1dJTkRPV1NfU1NQSSkKLSAgU1RSSU5HX1NPQ0tTNV9HU1NBUElfU0VSVklDRSwgLyogR1NTQVBJIHNlcnZpY2UgbmFtZSAqLwogICBTVFJJTkdfUFJPWFlfU0VSVklDRV9OQU1FLCAvKiBQcm94eSBzZXJ2aWNlIG5hbWUgKi8KKyNlbmRpZgorI2lmICFkZWZpbmVkKENVUkxfRElTQUJMRV9DUllQVE9fQVVUSCkgfHwgZGVmaW5lZChVU0VfS0VSQkVST1M1KSB8fCBcCisgICAgZGVmaW5lZChVU0VfU1BORUdPKQogICBTVFJJTkdfU0VSVklDRV9OQU1FLCAgICAvKiBTZXJ2aWNlIG5hbWUgKi8KICNlbmRpZgogICBTVFJJTkdfTUFJTF9GUk9NLApAQCAtMTQyNiw3ICsxNDc2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgIHByb3h5IHN0cmluZyBmZWF0dXJlcyBhICI6W3BvcnRdIiB0aGF0IG9uZSB3aWxsIG92ZXJyaWRlCiAgICAgICAgICAgICAgICAgICAgICB0aGlzLiAqLwogICB2b2lkICpvdXQ7ICAgICAgICAgLyogQ1VSTE9QVF9XUklURURBVEEgKi8KLSAgdm9pZCAqaW47ICAgICAgICAgIC8qIENVUkxPUFRfUkVBRERBVEEgKi8KKyAgdm9pZCAqaW5fc2V0OyAgICAgIC8qIENVUkxPUFRfUkVBRERBVEEgKi8KICAgdm9pZCAqd3JpdGVoZWFkZXI7IC8qIHdyaXRlIHRoZSBoZWFkZXIgdG8gdGhpcyBpZiBub24tTlVMTCAqLwogICB2b2lkICpydHBfb3V0OyAgICAgLyogd3JpdGUgUlRQIHRvIHRoaXMgaWYgbm9uLU5VTEwgKi8KICAgbG9uZyB1c2VfcG9ydDsgICAgIC8qIHdoaWNoIHBvcnQgdG8gdXNlICh3aGVuIG5vdCB1c2luZyBkZWZhdWx0KSAqLwpAQCAtMTQ1MSw3ICsxNTAxLDcgQEAKICAgY3VybF93cml0ZV9jYWxsYmFjayBmd3JpdGVfZnVuYzsgICAvKiBmdW5jdGlvbiB0aGF0IHN0b3JlcyB0aGUgb3V0cHV0ICovCiAgIGN1cmxfd3JpdGVfY2FsbGJhY2sgZndyaXRlX2hlYWRlcjsgLyogZnVuY3Rpb24gdGhhdCBzdG9yZXMgaGVhZGVycyAqLwogICBjdXJsX3dyaXRlX2NhbGxiYWNrIGZ3cml0ZV9ydHA7ICAgIC8qIGZ1bmN0aW9uIHRoYXQgc3RvcmVzIGludGVybGVhdmVkIFJUUCAqLwotICBjdXJsX3JlYWRfY2FsbGJhY2sgZnJlYWRfZnVuYzsgICAgIC8qIGZ1bmN0aW9uIHRoYXQgcmVhZHMgdGhlIGlucHV0ICovCisgIGN1cmxfcmVhZF9jYWxsYmFjayBmcmVhZF9mdW5jX3NldDsgLyogZnVuY3Rpb24gdGhhdCByZWFkcyB0aGUgaW5wdXQgKi8KICAgaW50IGlzX2ZyZWFkX3NldDsgLyogYm9vbGVhbiwgaGFzIHJlYWQgY2FsbGJhY2sgYmVlbiBzZXQgdG8gbm9uLU5VTEw/ICovCiAgIGludCBpc19md3JpdGVfc2V0OyAvKiBib29sZWFuLCBoYXMgd3JpdGUgY2FsbGJhY2sgYmVlbiBzZXQgdG8gbm9uLU5VTEw/ICovCiAgIGN1cmxfcHJvZ3Jlc3NfY2FsbGJhY2sgZnByb2dyZXNzOyAvKiBPTEQgYW5kIGRlcHJlY2F0ZWQgcHJvZ3Jlc3MgY2FsbGJhY2sgICovCkBAIC0xNDgzLDcgKzE1MzMsOCBAQAogICBsb25nIGNvbm5lY3R0aW1lb3V0OyAgLyogaW4gbWlsbGlzZWNvbmRzLCAwIG1lYW5zIG5vIHRpbWVvdXQgKi8KICAgbG9uZyBhY2NlcHR0aW1lb3V0OyAgIC8qIGluIG1pbGxpc2Vjb25kcywgMCBtZWFucyBubyB0aW1lb3V0ICovCiAgIGxvbmcgc2VydmVyX3Jlc3BvbnNlX3RpbWVvdXQ7IC8qIGluIG1pbGxpc2Vjb25kcywgMCBtZWFucyBubyB0aW1lb3V0ICovCi0gIGxvbmcgdGZ0cF9ibGtzaXplIDsgLyogaW4gYnl0ZXMsIDAgbWVhbnMgdXNlIGRlZmF1bHQgKi8KKyAgbG9uZyB0ZnRwX2Jsa3NpemU7ICAgIC8qIGluIGJ5dGVzLCAwIG1lYW5zIHVzZSBkZWZhdWx0ICovCisgIGJvb2wgdGZ0cF9ub19vcHRpb25zOyAvKiBkbyBub3Qgc2VuZCBURlRQIG9wdGlvbnMgcmVxdWVzdHMgKi8KICAgY3VybF9vZmZfdCBmaWxlc2l6ZTsgIC8qIHNpemUgb2YgZmlsZSB0byB1cGxvYWQsIC0xIG1lYW5zIHVua25vd24gKi8KICAgbG9uZyBsb3dfc3BlZWRfbGltaXQ7IC8qIGJ5dGVzL3NlY29uZCAqLwogICBsb25nIGxvd19zcGVlZF90aW1lOyAgLyogbnVtYmVyIG9mIHNlY29uZHMgKi8KQEAgLTE1MDgsNiArMTU1OSw4IEBACiAgIHN0cnVjdCBjdXJsX3NsaXN0ICp0ZWxuZXRfb3B0aW9uczsgLyogbGlua2VkIGxpc3Qgb2YgdGVsbmV0IG9wdGlvbnMgKi8KICAgc3RydWN0IGN1cmxfc2xpc3QgKnJlc29sdmU7ICAgICAvKiBsaXN0IG9mIG5hbWVzIHRvIGFkZC9yZW1vdmUgZnJvbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEROUyBjYWNoZSAqLworICBzdHJ1Y3QgY3VybF9zbGlzdCAqY29ubmVjdF90bzsgLyogbGlzdCBvZiBob3N0OnBvcnQgbWFwcGluZ3MgdG8gb3ZlcnJpZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBob3N0bmFtZSBhbmQgcG9ydCB0byBjb25uZWN0IHRvICovCiAgIGN1cmxfVGltZUNvbmQgdGltZWNvbmRpdGlvbjsgLyoga2luZCBvZiB0aW1lL2RhdGUgY29tcGFyaXNvbiAqLwogICB0aW1lX3QgdGltZXZhbHVlOyAgICAgICAvKiB3aGF0IHRpbWUgdG8gY29tcGFyZSB3aXRoICovCiAgIEN1cmxfSHR0cFJlcSBodHRwcmVxOyAgIC8qIHdoYXQga2luZCBvZiBIVFRQIHJlcXVlc3QgKGlmIGFueSkgaXMgdGhpcyAqLwpAQCAtMTU1NSw3ICsxNjA4LDYgQEAKICAgYm9vbCBodHRwX3NldF9yZWZlcmVyOyAvKiBpcyBhIGN1c3RvbSByZWZlcmVyIHVzZWQgKi8KICAgYm9vbCBodHRwX2F1dG9fcmVmZXJlcjsgLyogc2V0ICJjb3JyZWN0IiByZWZlcmVyIHdoZW4gZm9sbG93aW5nIGxvY2F0aW9uOiAqLwogICBib29sIG9wdF9ub19ib2R5OyAgICAgIC8qIGFzIHNldCB3aXRoIENVUkxPUFRfTk9CT0RZICovCi0gIGJvb2wgc2V0X3BvcnQ7ICAgICAgICAgLyogY3VzdG9tIHBvcnQgbnVtYmVyIHVzZWQgKi8KICAgYm9vbCB1cGxvYWQ7ICAgICAgICAgICAvKiB1cGxvYWQgcmVxdWVzdCAqLwogICBlbnVtIENVUkxfTkVUUkNfT1BUSU9OCiAgICAgICAgdXNlX25ldHJjOyAgICAgICAgLyogZGVmaW5lZCBpbiBpbmNsdWRlL2N1cmwuaCAqLwpAQCAtMTU4MCw2ICsxNjMyLDcgQEAKICAgYm9vbCBjb25uZWN0X29ubHk7ICAgICAvKiBtYWtlIGNvbm5lY3Rpb24sIGxldCBhcHBsaWNhdGlvbiB1c2UgdGhlIHNvY2tldCAqLwogICBib29sIHNzbF9lbmFibGVfYmVhc3Q7IC8qIGVzcGVjaWFsbHkgYWxsb3cgdGhpcyBmbGF3IGZvciBpbnRlcm9wZXJhYmlsaXR5J3MKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYWtlKi8KKyAgYm9vbCBzc2xfbm9fcmV2b2tlOyAgICAvKiBkaXNhYmxlIFNTTCBjZXJ0aWZpY2F0ZSByZXZvY2F0aW9uIGNoZWNrcyAqLwogICBsb25nIHNzaF9hdXRoX3R5cGVzOyAgIC8qIGFsbG93ZWQgU1NIIGF1dGggdHlwZXMgKi8KICAgYm9vbCBodHRwX3RlX3NraXA7ICAgICAvKiBwYXNzIHRoZSByYXcgYm9keSBkYXRhIHRvIHRoZSB1c2VyLCBldmVuIHdoZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zlci1lbmNvZGVkIChjaHVua2VkLCBjb21wcmVzc2VkKSAqLwpAQCAtMTU5NCw3ICsxNjQ3LDcgQEAKICAgbG9uZyBhbGxvd2VkX3Byb3RvY29sczsKICAgbG9uZyByZWRpcl9wcm90b2NvbHM7CiAjaWYgZGVmaW5lZChIQVZFX0dTU0FQSSkgfHwgZGVmaW5lZChVU0VfV0lORE9XU19TU1BJKQotICBsb25nIHNvY2tzNV9nc3NhcGlfbmVjOyAvKiBmbGFnIHRvIHN1cHBvcnQgbmVjIHNvY2tzNSBzZXJ2ZXIgKi8KKyAgYm9vbCBzb2NrczVfZ3NzYXBpX25lYzsgLyogRmxhZyB0byBzdXBwb3J0IE5FQyBTT0NLUzUgc2VydmVyICovCiAjZW5kaWYKICAgc3RydWN0IGN1cmxfc2xpc3QgKm1haWxfcmNwdDsgLyogbGlua2VkIGxpc3Qgb2YgbWFpbCByZWNpcGllbnRzICovCiAgIGJvb2wgc2FzbF9pcjsgICAgICAgICAvKiBFbmFibGUvZGlzYWJsZSBTQVNMIGluaXRpYWwgcmVzcG9uc2UgKi8KQEAgLTE2MTYsMTUgKzE2NjksMjAgQEAKICAgYm9vbCB0Y3Bfa2VlcGFsaXZlOyAgICAvKiB1c2UgVENQIGtlZXBhbGl2ZXMgKi8KICAgbG9uZyB0Y3Bfa2VlcGlkbGU7ICAgICAvKiBzZWNvbmRzIGluIGlkbGUgYmVmb3JlIHNlbmRpbmcga2VlcGFsaXZlIHByb2JlICovCiAgIGxvbmcgdGNwX2tlZXBpbnR2bDsgICAgLyogc2Vjb25kcyBiZXR3ZWVuIFRDUCBrZWVwYWxpdmUgcHJvYmVzICovCisgIGJvb2wgdGNwX2Zhc3RvcGVuOyAgICAgLyogdXNlIFRDUCBGYXN0IE9wZW4gKi8KIAogICBzaXplX3QgbWF4Y29ubmVjdHM7ICAvKiBNYXggaWRsZSBjb25uZWN0aW9ucyBpbiB0aGUgY29ubmVjdGlvbiBjYWNoZSAqLwogCi0gIGJvb2wgc3NsX2VuYWJsZV9ucG47ICAvKiBUTFMgTlBOIGV4dGVuc2lvbj8gKi8KLSAgYm9vbCBzc2xfZW5hYmxlX2FscG47IC8qIFRMUyBBTFBOIGV4dGVuc2lvbj8gKi8KKyAgYm9vbCBzc2xfZW5hYmxlX25wbjsgICAgICAvKiBUTFMgTlBOIGV4dGVuc2lvbj8gKi8KKyAgYm9vbCBzc2xfZW5hYmxlX2FscG47ICAgICAvKiBUTFMgQUxQTiBleHRlbnNpb24/ICovCiAgIGJvb2wgcGF0aF9hc19pczsgICAgICAvKiBhbGxvdyBkb3Rkb3RzPyAqLwogICBib29sIHBpcGV3YWl0OyAgICAgICAgLyogd2FpdCBmb3IgcGlwZS9tdWx0aXBsZXggc3RhdHVzIGJlZm9yZSBzdGFydGluZyBhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgY29ubmVjdGlvbiAqLwogICBsb25nIGV4cGVjdF8xMDBfdGltZW91dDsgLyogaW4gbWlsbGlzZWNvbmRzICovCisKKyAgc3RydWN0IFNlc3Npb25IYW5kbGUgKnN0cmVhbV9kZXBlbmRzX29uOworICBib29sIHN0cmVhbV9kZXBlbmRzX2U7IC8qIHNldCBvciBkb24ndCBzZXQgdGhlIEV4Y2x1c2l2ZSBiaXQgKi8KKyAgaW50IHN0cmVhbV93ZWlnaHQ7CiB9OwogCiBzdHJ1Y3QgTmFtZXMgewpkaWZmIC0tZ2l0IGEvbGliL3ZhdXRoL2NsZWFydGV4dC5jIGIvbGliL3ZhdXRoL2NsZWFydGV4dC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwMDNmNTEKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvdmF1dGgvY2xlYXJ0ZXh0LmMKQEAgLTAsMCArMSwxNTcgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKyAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorICoKKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKgorICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKyAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICoKKyAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKgorICogUkZDNDYxNiBQTEFJTiBhdXRoZW50aWNhdGlvbgorICogRHJhZnQgICBMT0dJTiBTQVNMIE1lY2hhbmlzbSA8ZHJhZnQtbXVyY2hpc29uLXNhc2wtbG9naW4tMDAudHh0PgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpbmNsdWRlICJjdXJsX3NldHVwLmgiCisKKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKyNpbmNsdWRlICJ1cmxkYXRhLmgiCisKKyNpbmNsdWRlICJ2YXV0aC92YXV0aC5oIgorI2luY2x1ZGUgImN1cmxfYmFzZTY0LmgiCisjaW5jbHVkZSAiY3VybF9tZDUuaCIKKyNpbmNsdWRlICJ3YXJubGVzcy5oIgorI2luY2x1ZGUgInN0cnRvay5oIgorI2luY2x1ZGUgInN0cmVxdWFsLmgiCisjaW5jbHVkZSAicmF3c3RyLmgiCisjaW5jbHVkZSAic2VuZGYuaCIKKyNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgorCisvKiBUaGUgbGFzdCAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmU6ICovCisjaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKKyNpbmNsdWRlICJtZW1kZWJ1Zy5oIgorCisvKgorICogQ3VybF9hdXRoX2NyZWF0ZV9wbGFpbl9tZXNzYWdlKCkKKyAqCisgKiBUaGlzIGlzIHVzZWQgdG8gZ2VuZXJhdGUgYW4gYWxyZWFkeSBlbmNvZGVkIFBMQUlOIG1lc3NhZ2UgcmVhZHkKKyAqIGZvciBzZW5kaW5nIHRvIHRoZSByZWNpcGllbnQuCisgKgorICogUGFyYW1ldGVyczoKKyAqCisgKiBkYXRhICAgIFtpbl0gICAgIC0gVGhlIHNlc3Npb24gaGFuZGxlLgorICogdXNlcnAgICBbaW5dICAgICAtIFRoZSB1c2VyIG5hbWUuCisgKiBwYXNzZHdwIFtpbl0gICAgIC0gVGhlIHVzZXIncyBwYXNzd29yZC4KKyAqIG91dHB0ciAgW2luL291dF0gLSBUaGUgYWRkcmVzcyB3aGVyZSBhIHBvaW50ZXIgdG8gbmV3bHkgYWxsb2NhdGVkIG1lbW9yeQorICogICAgICAgICAgICAgICAgICAgIGhvbGRpbmcgdGhlIHJlc3VsdCB3aWxsIGJlIHN0b3JlZCB1cG9uIGNvbXBsZXRpb24uCisgKiBvdXRsZW4gIFtvdXRdICAgIC0gVGhlIGxlbmd0aCBvZiB0aGUgb3V0cHV0IG1lc3NhZ2UuCisgKgorICogUmV0dXJucyBDVVJMRV9PSyBvbiBzdWNjZXNzLgorICovCitDVVJMY29kZSBDdXJsX2F1dGhfY3JlYXRlX3BsYWluX21lc3NhZ2Uoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdXNlcnAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGFzc3dkcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqb3V0cHRyLCBzaXplX3QgKm91dGxlbikKK3sKKyAgQ1VSTGNvZGUgcmVzdWx0OworICBjaGFyICpwbGFpbmF1dGg7CisgIHNpemVfdCB1bGVuOworICBzaXplX3QgcGxlbjsKKworICB1bGVuID0gc3RybGVuKHVzZXJwKTsKKyAgcGxlbiA9IHN0cmxlbihwYXNzd2RwKTsKKworICBwbGFpbmF1dGggPSBtYWxsb2MoMiAqIHVsZW4gKyBwbGVuICsgMik7CisgIGlmKCFwbGFpbmF1dGgpIHsKKyAgICAqb3V0bGVuID0gMDsKKyAgICAqb3V0cHRyID0gTlVMTDsKKyAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKyAgfQorCisgIC8qIENhbGN1bGF0ZSB0aGUgcmVwbHkgKi8KKyAgbWVtY3B5KHBsYWluYXV0aCwgdXNlcnAsIHVsZW4pOworICBwbGFpbmF1dGhbdWxlbl0gPSAnXDAnOworICBtZW1jcHkocGxhaW5hdXRoICsgdWxlbiArIDEsIHVzZXJwLCB1bGVuKTsKKyAgcGxhaW5hdXRoWzIgKiB1bGVuICsgMV0gPSAnXDAnOworICBtZW1jcHkocGxhaW5hdXRoICsgMiAqIHVsZW4gKyAyLCBwYXNzd2RwLCBwbGVuKTsKKworICAvKiBCYXNlNjQgZW5jb2RlIHRoZSByZXBseSAqLworICByZXN1bHQgPSBDdXJsX2Jhc2U2NF9lbmNvZGUoZGF0YSwgcGxhaW5hdXRoLCAyICogdWxlbiArIHBsZW4gKyAyLCBvdXRwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRsZW4pOworICBmcmVlKHBsYWluYXV0aCk7CisKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworLyoKKyAqIEN1cmxfYXV0aF9jcmVhdGVfbG9naW5fbWVzc2FnZSgpCisgKgorICogVGhpcyBpcyB1c2VkIHRvIGdlbmVyYXRlIGFuIGFscmVhZHkgZW5jb2RlZCBMT0dJTiBtZXNzYWdlIGNvbnRhaW5pbmcgdGhlCisgKiB1c2VyIG5hbWUgb3IgcGFzc3dvcmQgcmVhZHkgZm9yIHNlbmRpbmcgdG8gdGhlIHJlY2lwaWVudC4KKyAqCisgKiBQYXJhbWV0ZXJzOgorICoKKyAqIGRhdGEgICAgW2luXSAgICAgLSBUaGUgc2Vzc2lvbiBoYW5kbGUuCisgKiB2YWx1ZXAgIFtpbl0gICAgIC0gVGhlIHVzZXIgbmFtZSBvciB1c2VyJ3MgcGFzc3dvcmQuCisgKiBvdXRwdHIgIFtpbi9vdXRdIC0gVGhlIGFkZHJlc3Mgd2hlcmUgYSBwb2ludGVyIHRvIG5ld2x5IGFsbG9jYXRlZCBtZW1vcnkKKyAqICAgICAgICAgICAgICAgICAgICBob2xkaW5nIHRoZSByZXN1bHQgd2lsbCBiZSBzdG9yZWQgdXBvbiBjb21wbGV0aW9uLgorICogb3V0bGVuICBbb3V0XSAgICAtIFRoZSBsZW5ndGggb2YgdGhlIG91dHB1dCBtZXNzYWdlLgorICoKKyAqIFJldHVybnMgQ1VSTEVfT0sgb24gc3VjY2Vzcy4KKyAqLworQ1VSTGNvZGUgQ3VybF9hdXRoX2NyZWF0ZV9sb2dpbl9tZXNzYWdlKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnZhbHVlcCwgY2hhciAqKm91dHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKm91dGxlbikKK3sKKyAgc2l6ZV90IHZsZW4gPSBzdHJsZW4odmFsdWVwKTsKKworICBpZighdmxlbikgeworICAgIC8qIENhbGN1bGF0ZSBhbiBlbXB0eSByZXBseSAqLworICAgICpvdXRwdHIgPSBzdHJkdXAoIj0iKTsKKyAgICBpZigqb3V0cHRyKSB7CisgICAgICAqb3V0bGVuID0gKHNpemVfdCkgMTsKKyAgICAgIHJldHVybiBDVVJMRV9PSzsKKyAgICB9CisKKyAgICAqb3V0bGVuID0gMDsKKyAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKyAgfQorCisgIC8qIEJhc2U2NCBlbmNvZGUgdGhlIHZhbHVlICovCisgIHJldHVybiBDdXJsX2Jhc2U2NF9lbmNvZGUoZGF0YSwgdmFsdWVwLCB2bGVuLCBvdXRwdHIsIG91dGxlbik7Cit9CisKKy8qCisgKiBDdXJsX2F1dGhfY3JlYXRlX2V4dGVybmFsX21lc3NhZ2UoKQorICoKKyAqIFRoaXMgaXMgdXNlZCB0byBnZW5lcmF0ZSBhbiBhbHJlYWR5IGVuY29kZWQgRVhURVJOQUwgbWVzc2FnZSBjb250YWluaW5nCisgKiB0aGUgdXNlciBuYW1lIHJlYWR5IGZvciBzZW5kaW5nIHRvIHRoZSByZWNpcGllbnQuCisgKgorICogUGFyYW1ldGVyczoKKyAqCisgKiBkYXRhICAgIFtpbl0gICAgIC0gVGhlIHNlc3Npb24gaGFuZGxlLgorICogdXNlciAgICBbaW5dICAgICAtIFRoZSB1c2VyIG5hbWUuCisgKiBvdXRwdHIgIFtpbi9vdXRdIC0gVGhlIGFkZHJlc3Mgd2hlcmUgYSBwb2ludGVyIHRvIG5ld2x5IGFsbG9jYXRlZCBtZW1vcnkKKyAqICAgICAgICAgICAgICAgICAgICBob2xkaW5nIHRoZSByZXN1bHQgd2lsbCBiZSBzdG9yZWQgdXBvbiBjb21wbGV0aW9uLgorICogb3V0bGVuICBbb3V0XSAgICAtIFRoZSBsZW5ndGggb2YgdGhlIG91dHB1dCBtZXNzYWdlLgorICoKKyAqIFJldHVybnMgQ1VSTEVfT0sgb24gc3VjY2Vzcy4KKyAqLworQ1VSTGNvZGUgQ3VybF9hdXRoX2NyZWF0ZV9leHRlcm5hbF9tZXNzYWdlKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnVzZXIsIGNoYXIgKipvdXRwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICpvdXRsZW4pCit7CisgIC8qIFRoaXMgaXMgdGhlIHNhbWUgZm9ybWF0dGluZyBhcyB0aGUgbG9naW4gbWVzc2FnZSAqLworICByZXR1cm4gQ3VybF9hdXRoX2NyZWF0ZV9sb2dpbl9tZXNzYWdlKGRhdGEsIHVzZXIsIG91dHB0ciwgb3V0bGVuKTsKK30KZGlmZiAtLWdpdCBhL2xpYi92YXV0aC9jcmFtLmMgYi9saWIvdmF1dGgvY3JhbS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkMDJlMDQKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvdmF1dGgvY3JhbS5jCkBAIC0wLDAgKzEsMTM4IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqCisgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICoKKyAqIFJGQzIxOTUgQ1JBTS1NRDUgYXV0aGVudGljYXRpb24KKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaW5jbHVkZSAiY3VybF9zZXR1cC5oIgorCisjaWYgIWRlZmluZWQoQ1VSTF9ESVNBQkxFX0NSWVBUT19BVVRIKQorCisjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CisjaW5jbHVkZSAidXJsZGF0YS5oIgorCisjaW5jbHVkZSAidmF1dGgvdmF1dGguaCIKKyNpbmNsdWRlICJjdXJsX2Jhc2U2NC5oIgorI2luY2x1ZGUgImN1cmxfaG1hYy5oIgorI2luY2x1ZGUgImN1cmxfbWQ1LmgiCisjaW5jbHVkZSAid2Fybmxlc3MuaCIKKyNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgorCisvKiBUaGUgbGFzdCAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmU6ICovCisjaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKKyNpbmNsdWRlICJtZW1kZWJ1Zy5oIgorCisvKgorICogQ3VybF9hdXRoX2RlY29kZV9jcmFtX21kNV9tZXNzYWdlKCkKKyAqCisgKiBUaGlzIGlzIHVzZWQgdG8gZGVjb2RlIGFuIGFscmVhZHkgZW5jb2RlZCBDUkFNLU1ENSBjaGFsbGVuZ2UgbWVzc2FnZS4KKyAqCisgKiBQYXJhbWV0ZXJzOgorICoKKyAqIGNobGc2NCAgW2luXSAgICAgLSBUaGUgYmFzZTY0IGVuY29kZWQgY2hhbGxlbmdlIG1lc3NhZ2UuCisgKiBvdXRwdHIgIFtpbi9vdXRdIC0gVGhlIGFkZHJlc3Mgd2hlcmUgYSBwb2ludGVyIHRvIG5ld2x5IGFsbG9jYXRlZCBtZW1vcnkKKyAqICAgICAgICAgICAgICAgICAgICBob2xkaW5nIHRoZSByZXN1bHQgd2lsbCBiZSBzdG9yZWQgdXBvbiBjb21wbGV0aW9uLgorICogb3V0bGVuICBbb3V0XSAgICAtIFRoZSBsZW5ndGggb2YgdGhlIG91dHB1dCBtZXNzYWdlLgorICoKKyAqIFJldHVybnMgQ1VSTEVfT0sgb24gc3VjY2Vzcy4KKyAqLworQ1VSTGNvZGUgQ3VybF9hdXRoX2RlY29kZV9jcmFtX21kNV9tZXNzYWdlKGNvbnN0IGNoYXIgKmNobGc2NCwgY2hhciAqKm91dHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKm91dGxlbikKK3sKKyAgQ1VSTGNvZGUgcmVzdWx0ID0gQ1VSTEVfT0s7CisgIHNpemVfdCBjaGxnNjRsZW4gPSBzdHJsZW4oY2hsZzY0KTsKKworICAqb3V0cHRyID0gTlVMTDsKKyAgKm91dGxlbiA9IDA7CisKKyAgLyogRGVjb2RlIHRoZSBjaGFsbGVuZ2UgaWYgbmVjZXNzYXJ5ICovCisgIGlmKGNobGc2NGxlbiAmJiAqY2hsZzY0ICE9ICc9JykKKyAgICByZXN1bHQgPSBDdXJsX2Jhc2U2NF9kZWNvZGUoY2hsZzY0LCAodW5zaWduZWQgY2hhciAqKikgb3V0cHRyLCBvdXRsZW4pOworCisgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qCisgKiBDdXJsX2F1dGhfY3JlYXRlX2NyYW1fbWQ1X21lc3NhZ2UoKQorICoKKyAqIFRoaXMgaXMgdXNlZCB0byBnZW5lcmF0ZSBhbiBhbHJlYWR5IGVuY29kZWQgQ1JBTS1NRDUgcmVzcG9uc2UgbWVzc2FnZSByZWFkeQorICogZm9yIHNlbmRpbmcgdG8gdGhlIHJlY2lwaWVudC4KKyAqCisgKiBQYXJhbWV0ZXJzOgorICoKKyAqIGRhdGEgICAgW2luXSAgICAgLSBUaGUgc2Vzc2lvbiBoYW5kbGUuCisgKiBjaGxnICAgIFtpbl0gICAgIC0gVGhlIGNoYWxsZW5nZS4KKyAqIHVzZXJwICAgW2luXSAgICAgLSBUaGUgdXNlciBuYW1lLgorICogcGFzc2R3cCBbaW5dICAgICAtIFRoZSB1c2VyJ3MgcGFzc3dvcmQuCisgKiBvdXRwdHIgIFtpbi9vdXRdIC0gVGhlIGFkZHJlc3Mgd2hlcmUgYSBwb2ludGVyIHRvIG5ld2x5IGFsbG9jYXRlZCBtZW1vcnkKKyAqICAgICAgICAgICAgICAgICAgICBob2xkaW5nIHRoZSByZXN1bHQgd2lsbCBiZSBzdG9yZWQgdXBvbiBjb21wbGV0aW9uLgorICogb3V0bGVuICBbb3V0XSAgICAtIFRoZSBsZW5ndGggb2YgdGhlIG91dHB1dCBtZXNzYWdlLgorICoKKyAqIFJldHVybnMgQ1VSTEVfT0sgb24gc3VjY2Vzcy4KKyAqLworQ1VSTGNvZGUgQ3VybF9hdXRoX2NyZWF0ZV9jcmFtX21kNV9tZXNzYWdlKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNobGcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdXNlcnAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGFzc3dkcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqb3V0cHRyLCBzaXplX3QgKm91dGxlbikKK3sKKyAgQ1VSTGNvZGUgcmVzdWx0ID0gQ1VSTEVfT0s7CisgIHNpemVfdCBjaGxnbGVuID0gMDsKKyAgSE1BQ19jb250ZXh0ICpjdHh0OworICB1bnNpZ25lZCBjaGFyIGRpZ2VzdFtNRDVfRElHRVNUX0xFTl07CisgIGNoYXIgKnJlc3BvbnNlOworCisgIGlmKGNobGcpCisgICAgY2hsZ2xlbiA9IHN0cmxlbihjaGxnKTsKKworICAvKiBDb21wdXRlIHRoZSBkaWdlc3QgdXNpbmcgdGhlIHBhc3N3b3JkIGFzIHRoZSBrZXkgKi8KKyAgY3R4dCA9IEN1cmxfSE1BQ19pbml0KEN1cmxfSE1BQ19NRDUsCisgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgdW5zaWduZWQgY2hhciAqKSBwYXNzd2RwLAorICAgICAgICAgICAgICAgICAgICAgICAgY3VybHhfdXp0b3VpKHN0cmxlbihwYXNzd2RwKSkpOworICBpZighY3R4dCkKKyAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKworICAvKiBVcGRhdGUgdGhlIGRpZ2VzdCB3aXRoIHRoZSBnaXZlbiBjaGFsbGVuZ2UgKi8KKyAgaWYoY2hsZ2xlbiA+IDApCisgICAgQ3VybF9ITUFDX3VwZGF0ZShjdHh0LCAoY29uc3QgdW5zaWduZWQgY2hhciAqKSBjaGxnLAorICAgICAgICAgICAgICAgICAgICAgY3VybHhfdXp0b3VpKGNobGdsZW4pKTsKKworICAvKiBGaW5hbGlzZSB0aGUgZGlnZXN0ICovCisgIEN1cmxfSE1BQ19maW5hbChjdHh0LCBkaWdlc3QpOworCisgIC8qIEdlbmVyYXRlIHRoZSByZXNwb25zZSAqLworICByZXNwb25zZSA9IGFwcmludGYoCisgICAgIiVzICUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMngiLAorICAgIHVzZXJwLCBkaWdlc3RbMF0sIGRpZ2VzdFsxXSwgZGlnZXN0WzJdLCBkaWdlc3RbM10sIGRpZ2VzdFs0XSwKKyAgICBkaWdlc3RbNV0sIGRpZ2VzdFs2XSwgZGlnZXN0WzddLCBkaWdlc3RbOF0sIGRpZ2VzdFs5XSwgZGlnZXN0WzEwXSwKKyAgICBkaWdlc3RbMTFdLCBkaWdlc3RbMTJdLCBkaWdlc3RbMTNdLCBkaWdlc3RbMTRdLCBkaWdlc3RbMTVdKTsKKyAgaWYoIXJlc3BvbnNlKQorICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworCisgIC8qIEJhc2U2NCBlbmNvZGUgdGhlIHJlc3BvbnNlICovCisgIHJlc3VsdCA9IEN1cmxfYmFzZTY0X2VuY29kZShkYXRhLCByZXNwb25zZSwgMCwgb3V0cHRyLCBvdXRsZW4pOworCisgIGZyZWUocmVzcG9uc2UpOworCisgIHJldHVybiByZXN1bHQ7Cit9CisKKyNlbmRpZiAvKiAhQ1VSTF9ESVNBQkxFX0NSWVBUT19BVVRIICovCmRpZmYgLS1naXQgYS9saWIvdmF1dGgvZGlnZXN0LmMgYi9saWIvdmF1dGgvZGlnZXN0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzJjZjA0OAotLS0gL2Rldi9udWxsCisrKyBiL2xpYi92YXV0aC9kaWdlc3QuYwpAQCAtMCwwICsxLDg4MyBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisgKgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAorICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcworICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKgorICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCisgKgorICogVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqCisgKiBSRkMyODMxIERJR0VTVC1NRDUgYXV0aGVudGljYXRpb24KKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaW5jbHVkZSAiY3VybF9zZXR1cC5oIgorCisjaWYgIWRlZmluZWQoQ1VSTF9ESVNBQkxFX0NSWVBUT19BVVRIKQorCisjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CisKKyNpbmNsdWRlICJ2YXV0aC92YXV0aC5oIgorI2luY2x1ZGUgInZhdXRoL2RpZ2VzdC5oIgorI2luY2x1ZGUgInVybGRhdGEuaCIKKyNpbmNsdWRlICJjdXJsX2Jhc2U2NC5oIgorI2luY2x1ZGUgImN1cmxfaG1hYy5oIgorI2luY2x1ZGUgImN1cmxfbWQ1LmgiCisjaW5jbHVkZSAidnRscy92dGxzLmgiCisjaW5jbHVkZSAid2Fybmxlc3MuaCIKKyNpbmNsdWRlICJzdHJ0b2suaCIKKyNpbmNsdWRlICJyYXdzdHIuaCIKKyNpbmNsdWRlICJub24tYXNjaWkuaCIgLyogaW5jbHVkZWQgZm9yIEN1cmxfY29udmVydF8uLi4gcHJvdG90eXBlcyAqLworI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCisKKy8qIFRoZSBsYXN0ICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZTogKi8KKyNpbmNsdWRlICJjdXJsX21lbW9yeS5oIgorI2luY2x1ZGUgIm1lbWRlYnVnLmgiCisKKyNpZiAhZGVmaW5lZChVU0VfV0lORE9XU19TU1BJKQorI2RlZmluZSBESUdFU1RfUU9QX1ZBTFVFX0FVVEggICAgICAgICAgICAgKDEgPDwgMCkKKyNkZWZpbmUgRElHRVNUX1FPUF9WQUxVRV9BVVRIX0lOVCAgICAgICAgICgxIDw8IDEpCisjZGVmaW5lIERJR0VTVF9RT1BfVkFMVUVfQVVUSF9DT05GICAgICAgICAoMSA8PCAyKQorCisjZGVmaW5lIERJR0VTVF9RT1BfVkFMVUVfU1RSSU5HX0FVVEggICAgICAiYXV0aCIKKyNkZWZpbmUgRElHRVNUX1FPUF9WQUxVRV9TVFJJTkdfQVVUSF9JTlQgICJhdXRoLWludCIKKyNkZWZpbmUgRElHRVNUX1FPUF9WQUxVRV9TVFJJTkdfQVVUSF9DT05GICJhdXRoLWNvbmYiCisKKy8qIFRoZSBDVVJMX09VVFBVVF9ESUdFU1RfQ09OViBtYWNybyBiZWxvdyBpcyBmb3Igbm9uLUFTQ0lJIG1hY2hpbmVzLgorICAgSXQgY29udmVydHMgZGlnZXN0IHRleHQgdG8gQVNDSUkgc28gdGhlIE1ENSB3aWxsIGJlIGNvcnJlY3QgZm9yCisgICB3aGF0IHVsdGltYXRlbHkgZ29lcyBvdmVyIHRoZSBuZXR3b3JrLgorKi8KKyNkZWZpbmUgQ1VSTF9PVVRQVVRfRElHRVNUX0NPTlYoYSwgYikgXAorICByZXN1bHQgPSBDdXJsX2NvbnZlcnRfdG9fbmV0d29yayhhLCAoY2hhciAqKWIsIHN0cmxlbigoY29uc3QgY2hhciopYikpOyBcCisgIGlmKHJlc3VsdCkgeyBcCisgICAgZnJlZShiKTsgXAorICAgIHJldHVybiByZXN1bHQ7IFwKKyAgfQorI2VuZGlmIC8qICFVU0VfV0lORE9XU19TU1BJICovCisKK2Jvb2wgQ3VybF9hdXRoX2RpZ2VzdF9nZXRfcGFpcihjb25zdCBjaGFyICpzdHIsIGNoYXIgKnZhbHVlLCBjaGFyICpjb250ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiplbmRwdHIpCit7CisgIGludCBjOworICBib29sIHN0YXJ0c193aXRoX3F1b3RlID0gRkFMU0U7CisgIGJvb2wgZXNjYXBlID0gRkFMU0U7CisKKyAgZm9yKGMgPSBESUdFU1RfTUFYX1ZBTFVFX0xFTkdUSCAtIDE7ICgqc3RyICYmICgqc3RyICE9ICc9JykgJiYgYy0tKTspCisgICAgKnZhbHVlKysgPSAqc3RyKys7CisgICp2YWx1ZSA9IDA7CisKKyAgaWYoJz0nICE9ICpzdHIrKykKKyAgICAvKiBlZWssIG5vIG1hdGNoICovCisgICAgcmV0dXJuIEZBTFNFOworCisgIGlmKCdcIicgPT0gKnN0cikgeworICAgIC8qIFRoaXMgc3RhcnRzIHdpdGggYSBxdW90ZSBzbyBpdCBtdXN0IGVuZCB3aXRoIG9uZSBhcyB3ZWxsISAqLworICAgIHN0cisrOworICAgIHN0YXJ0c193aXRoX3F1b3RlID0gVFJVRTsKKyAgfQorCisgIGZvcihjID0gRElHRVNUX01BWF9DT05URU5UX0xFTkdUSCAtIDE7ICpzdHIgJiYgYy0tOyBzdHIrKykgeworICAgIHN3aXRjaCgqc3RyKSB7CisgICAgY2FzZSAnXFwnOgorICAgICAgaWYoIWVzY2FwZSkgeworICAgICAgICAvKiBwb3NzaWJseSB0aGUgc3RhcnQgb2YgYW4gZXNjYXBlZCBxdW90ZSAqLworICAgICAgICBlc2NhcGUgPSBUUlVFOworICAgICAgICAqY29udGVudCsrID0gJ1xcJzsgLyogRXZlbiB0aG91Z2ggdGhpcyBpcyBhbiBlc2NhcGUgY2hhcmFjdGVyLCB3ZSBzdGlsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUgaXQgYXMtaXMgaW4gdGhlIHRhcmdldCBidWZmZXIgKi8KKyAgICAgICAgY29udGludWU7CisgICAgICB9CisgICAgICBicmVhazsKKworICAgIGNhc2UgJywnOgorICAgICAgaWYoIXN0YXJ0c193aXRoX3F1b3RlKSB7CisgICAgICAgIC8qIFRoaXMgc2lnbmFscyB0aGUgZW5kIG9mIHRoZSBjb250ZW50IGlmIHdlIGRpZG4ndCBnZXQgYSBzdGFydGluZworICAgICAgICAgICBxdW90ZSBhbmQgdGhlbiB3ZSBkbyAic2xvcHB5IiBwYXJzaW5nICovCisgICAgICAgIGMgPSAwOyAvKiB0aGUgZW5kICovCisgICAgICAgIGNvbnRpbnVlOworICAgICAgfQorICAgICAgYnJlYWs7CisKKyAgICBjYXNlICdccic6CisgICAgY2FzZSAnXG4nOgorICAgICAgLyogZW5kIG9mIHN0cmluZyAqLworICAgICAgYyA9IDA7CisgICAgICBjb250aW51ZTsKKworICAgIGNhc2UgJ1wiJzoKKyAgICAgIGlmKCFlc2NhcGUgJiYgc3RhcnRzX3dpdGhfcXVvdGUpIHsKKyAgICAgICAgLyogZW5kIG9mIHN0cmluZyAqLworICAgICAgICBjID0gMDsKKyAgICAgICAgY29udGludWU7CisgICAgICB9CisgICAgICBicmVhazsKKyAgICB9CisKKyAgICBlc2NhcGUgPSBGQUxTRTsKKyAgICAqY29udGVudCsrID0gKnN0cjsKKyAgfQorCisgICpjb250ZW50ID0gMDsKKyAgKmVuZHB0ciA9IHN0cjsKKworICByZXR1cm4gVFJVRTsKK30KKworI2lmICFkZWZpbmVkKFVTRV9XSU5ET1dTX1NTUEkpCisvKiBDb252ZXJ0IG1kNSBjaHVuayB0byBSRkMyNjE3IChzZWN0aW9uIDMuMS4zKSAtc3VpdGFibGUgYXNjaWkgc3RyaW5nKi8KK3N0YXRpYyB2b2lkIGF1dGhfZGlnZXN0X21kNV90b19hc2NpaSh1bnNpZ25lZCBjaGFyICpzb3VyY2UsIC8qIDE2IGJ5dGVzICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqZGVzdCkgLyogMzMgYnl0ZXMgKi8KK3sKKyAgaW50IGk7CisgIGZvcihpID0gMDsgaSA8IDE2OyBpKyspCisgICAgc25wcmludGYoKGNoYXIgKikgJmRlc3RbaSAqIDJdLCAzLCAiJTAyeCIsIHNvdXJjZVtpXSk7Cit9CisKKy8qIFBlcmZvcm0gcXVvdGVkLXN0cmluZyBlc2NhcGluZyBhcyBkZXNjcmliZWQgaW4gUkZDMjYxNiBhbmQgaXRzIGVycmF0YSAqLworc3RhdGljIGNoYXIgKmF1dGhfZGlnZXN0X3N0cmluZ19xdW90ZWQoY29uc3QgY2hhciAqc291cmNlKQoreworICBjaGFyICpkZXN0LCAqZDsKKyAgY29uc3QgY2hhciAqcyA9IHNvdXJjZTsKKyAgc2l6ZV90IG4gPSAxOyAvKiBudWxsIHRlcm1pbmF0b3IgKi8KKworICAvKiBDYWxjdWxhdGUgc2l6ZSBuZWVkZWQgKi8KKyAgd2hpbGUoKnMpIHsKKyAgICArK247CisgICAgaWYoKnMgPT0gJyInIHx8ICpzID09ICdcXCcpIHsKKyAgICAgICsrbjsKKyAgICB9CisgICAgKytzOworICB9CisKKyAgZGVzdCA9IG1hbGxvYyhuKTsKKyAgaWYoZGVzdCkgeworICAgIHMgPSBzb3VyY2U7CisgICAgZCA9IGRlc3Q7CisgICAgd2hpbGUoKnMpIHsKKyAgICAgIGlmKCpzID09ICciJyB8fCAqcyA9PSAnXFwnKSB7CisgICAgICAgICpkKysgPSAnXFwnOworICAgICAgfQorICAgICAgKmQrKyA9ICpzKys7CisgICAgfQorICAgICpkID0gMDsKKyAgfQorCisgIHJldHVybiBkZXN0OworfQorCisvKiBSZXRyaWV2ZXMgdGhlIHZhbHVlIGZvciBhIGNvcnJlc3BvbmRpbmcga2V5IGZyb20gdGhlIGNoYWxsZW5nZSBzdHJpbmcKKyAqIHJldHVybnMgVFJVRSBpZiB0aGUga2V5IGNvdWxkIGJlIGZvdW5kLCBGQUxTRSBpZiBpdCBkb2VzIG5vdCBleGlzdHMKKyAqLworc3RhdGljIGJvb2wgYXV0aF9kaWdlc3RfZ2V0X2tleV92YWx1ZShjb25zdCBjaGFyICpjaGxnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICprZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbWF4X3ZhbF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgZW5kX2NoYXIpCit7CisgIGNoYXIgKmZpbmRfcG9zOworICBzaXplX3QgaTsKKworICBmaW5kX3BvcyA9IHN0cnN0cihjaGxnLCBrZXkpOworICBpZighZmluZF9wb3MpCisgICAgcmV0dXJuIEZBTFNFOworCisgIGZpbmRfcG9zICs9IHN0cmxlbihrZXkpOworCisgIGZvcihpID0gMDsgKmZpbmRfcG9zICYmICpmaW5kX3BvcyAhPSBlbmRfY2hhciAmJiBpIDwgbWF4X3ZhbF9sZW4gLSAxOyArK2kpCisgICAgdmFsdWVbaV0gPSAqZmluZF9wb3MrKzsKKyAgdmFsdWVbaV0gPSAnXDAnOworCisgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgQ1VSTGNvZGUgYXV0aF9kaWdlc3RfZ2V0X3FvcF92YWx1ZXMoY29uc3QgY2hhciAqb3B0aW9ucywgaW50ICp2YWx1ZSkKK3sKKyAgY2hhciAqdG1wOworICBjaGFyICp0b2tlbjsKKyAgY2hhciAqdG9rX2J1ZjsKKworICAvKiBJbml0aWFsaXNlIHRoZSBvdXRwdXQgKi8KKyAgKnZhbHVlID0gMDsKKworICAvKiBUb2tlbmlzZSB0aGUgbGlzdCBvZiBxb3AgdmFsdWVzLiBVc2UgYSB0ZW1wb3JhcnkgY2xvbmUgb2YgdGhlIGJ1ZmZlciBzaW5jZQorICAgICBzdHJ0b2tfcigpIHJ1aW5zIGl0LiAqLworICB0bXAgPSBzdHJkdXAob3B0aW9ucyk7CisgIGlmKCF0bXApCisgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisKKyAgdG9rZW4gPSBzdHJ0b2tfcih0bXAsICIsIiwgJnRva19idWYpOworICB3aGlsZSh0b2tlbiAhPSBOVUxMKSB7CisgICAgaWYoQ3VybF9yYXdfZXF1YWwodG9rZW4sIERJR0VTVF9RT1BfVkFMVUVfU1RSSU5HX0FVVEgpKQorICAgICAgKnZhbHVlIHw9IERJR0VTVF9RT1BfVkFMVUVfQVVUSDsKKyAgICBlbHNlIGlmKEN1cmxfcmF3X2VxdWFsKHRva2VuLCBESUdFU1RfUU9QX1ZBTFVFX1NUUklOR19BVVRIX0lOVCkpCisgICAgICAqdmFsdWUgfD0gRElHRVNUX1FPUF9WQUxVRV9BVVRIX0lOVDsKKyAgICBlbHNlIGlmKEN1cmxfcmF3X2VxdWFsKHRva2VuLCBESUdFU1RfUU9QX1ZBTFVFX1NUUklOR19BVVRIX0NPTkYpKQorICAgICAgKnZhbHVlIHw9IERJR0VTVF9RT1BfVkFMVUVfQVVUSF9DT05GOworCisgICAgdG9rZW4gPSBzdHJ0b2tfcihOVUxMLCAiLCIsICZ0b2tfYnVmKTsKKyAgfQorCisgIGZyZWUodG1wKTsKKworICByZXR1cm4gQ1VSTEVfT0s7Cit9CisKKy8qCisgKiBhdXRoX2RlY29kZV9kaWdlc3RfbWQ1X21lc3NhZ2UoKQorICoKKyAqIFRoaXMgaXMgdXNlZCBpbnRlcm5hbGx5IHRvIGRlY29kZSBhbiBhbHJlYWR5IGVuY29kZWQgRElHRVNULU1ENSBjaGFsbGVuZ2UKKyAqIG1lc3NhZ2UgaW50byB0aGUgc2VwZXJhdGUgYXR0cmlidXRlcy4KKyAqCisgKiBQYXJhbWV0ZXJzOgorICoKKyAqIGNobGc2NCAgW2luXSAgICAgLSBUaGUgYmFzZTY0IGVuY29kZWQgY2hhbGxlbmdlIG1lc3NhZ2UuCisgKiBub25jZSAgIFtpbi9vdXRdIC0gVGhlIGJ1ZmZlciB3aGVyZSB0aGUgbm9uY2Ugd2lsbCBiZSBzdG9yZWQuCisgKiBubGVuICAgIFtpbl0gICAgIC0gVGhlIGxlbmd0aCBvZiB0aGUgbm9uY2UgYnVmZmVyLgorICogcmVhbG0gICBbaW4vb3V0XSAtIFRoZSBidWZmZXIgd2hlcmUgdGhlIHJlYWxtIHdpbGwgYmUgc3RvcmVkLgorICogcmxlbiAgICBbaW5dICAgICAtIFRoZSBsZW5ndGggb2YgdGhlIHJlYWxtIGJ1ZmZlci4KKyAqIGFsZyAgICAgW2luL291dF0gLSBUaGUgYnVmZmVyIHdoZXJlIHRoZSBhbGdvcml0aG0gd2lsbCBiZSBzdG9yZWQuCisgKiBhbGVuICAgIFtpbl0gICAgIC0gVGhlIGxlbmd0aCBvZiB0aGUgYWxnb3JpdGhtIGJ1ZmZlci4KKyAqIHFvcCAgICAgW2luL291dF0gLSBUaGUgYnVmZmVyIHdoZXJlIHRoZSBxb3Atb3B0aW9ucyB3aWxsIGJlIHN0b3JlZC4KKyAqIHFsZW4gICAgW2luXSAgICAgLSBUaGUgbGVuZ3RoIG9mIHRoZSBxb3AgYnVmZmVyLgorICoKKyAqIFJldHVybnMgQ1VSTEVfT0sgb24gc3VjY2Vzcy4KKyAqLworc3RhdGljIENVUkxjb2RlIGF1dGhfZGVjb2RlX2RpZ2VzdF9tZDVfbWVzc2FnZShjb25zdCBjaGFyICpjaGxnNjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKm5vbmNlLCBzaXplX3QgbmxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqcmVhbG0sIHNpemVfdCBybGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICphbGcsIHNpemVfdCBhbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpxb3AsIHNpemVfdCBxbGVuKQoreworICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKKyAgdW5zaWduZWQgY2hhciAqY2hsZyA9IE5VTEw7CisgIHNpemVfdCBjaGxnbGVuID0gMDsKKyAgc2l6ZV90IGNobGc2NGxlbiA9IHN0cmxlbihjaGxnNjQpOworCisgIC8qIERlY29kZSB0aGUgYmFzZS02NCBlbmNvZGVkIGNoYWxsZW5nZSBtZXNzYWdlICovCisgIGlmKGNobGc2NGxlbiAmJiAqY2hsZzY0ICE9ICc9JykgeworICAgIHJlc3VsdCA9IEN1cmxfYmFzZTY0X2RlY29kZShjaGxnNjQsICZjaGxnLCAmY2hsZ2xlbik7CisgICAgaWYocmVzdWx0KQorICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorCisgIC8qIEVuc3VyZSB3ZSBoYXZlIGEgdmFsaWQgY2hhbGxlbmdlIG1lc3NhZ2UgKi8KKyAgaWYoIWNobGcpCisgICAgcmV0dXJuIENVUkxFX0JBRF9DT05URU5UX0VOQ09ESU5HOworCisgIC8qIFJldHJpZXZlIG5vbmNlIHN0cmluZyBmcm9tIHRoZSBjaGFsbGVuZ2UgKi8KKyAgaWYoIWF1dGhfZGlnZXN0X2dldF9rZXlfdmFsdWUoKGNoYXIgKikgY2hsZywgIm5vbmNlPVwiIiwgbm9uY2UsIG5sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcIicpKSB7CisgICAgZnJlZShjaGxnKTsKKyAgICByZXR1cm4gQ1VSTEVfQkFEX0NPTlRFTlRfRU5DT0RJTkc7CisgIH0KKworICAvKiBSZXRyaWV2ZSByZWFsbSBzdHJpbmcgZnJvbSB0aGUgY2hhbGxlbmdlICovCisgIGlmKCFhdXRoX2RpZ2VzdF9nZXRfa2V5X3ZhbHVlKChjaGFyICopIGNobGcsICJyZWFsbT1cIiIsIHJlYWxtLCBybGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXCInKSkgeworICAgIC8qIENoYWxsZW5nZSBkb2VzIG5vdCBoYXZlIGEgcmVhbG0sIHNldCBlbXB0eSBzdHJpbmcgW1JGQzI4MzFdIHBhZ2UgNiAqLworICAgIHN0cmNweShyZWFsbSwgIiIpOworICB9CisKKyAgLyogUmV0cmlldmUgYWxnb3JpdGhtIHN0cmluZyBmcm9tIHRoZSBjaGFsbGVuZ2UgKi8KKyAgaWYoIWF1dGhfZGlnZXN0X2dldF9rZXlfdmFsdWUoKGNoYXIgKikgY2hsZywgImFsZ29yaXRobT0iLCBhbGcsIGFsZW4sICcsJykpIHsKKyAgICBmcmVlKGNobGcpOworICAgIHJldHVybiBDVVJMRV9CQURfQ09OVEVOVF9FTkNPRElORzsKKyAgfQorCisgIC8qIFJldHJpZXZlIHFvcC1vcHRpb25zIHN0cmluZyBmcm9tIHRoZSBjaGFsbGVuZ2UgKi8KKyAgaWYoIWF1dGhfZGlnZXN0X2dldF9rZXlfdmFsdWUoKGNoYXIgKikgY2hsZywgInFvcD1cIiIsIHFvcCwgcWxlbiwgJ1wiJykpIHsKKyAgICBmcmVlKGNobGcpOworICAgIHJldHVybiBDVVJMRV9CQURfQ09OVEVOVF9FTkNPRElORzsKKyAgfQorCisgIGZyZWUoY2hsZyk7CisKKyAgcmV0dXJuIENVUkxFX09LOworfQorCisvKgorICogQ3VybF9hdXRoX2NyZWF0ZV9kaWdlc3RfbWQ1X21lc3NhZ2UoKQorICoKKyAqIFRoaXMgaXMgdXNlZCB0byBnZW5lcmF0ZSBhbiBhbHJlYWR5IGVuY29kZWQgRElHRVNULU1ENSByZXNwb25zZSBtZXNzYWdlCisgKiByZWFkeSBmb3Igc2VuZGluZyB0byB0aGUgcmVjaXBpZW50LgorICoKKyAqIFBhcmFtZXRlcnM6CisgKgorICogZGF0YSAgICBbaW5dICAgICAtIFRoZSBzZXNzaW9uIGhhbmRsZS4KKyAqIGNobGc2NCAgW2luXSAgICAgLSBUaGUgYmFzZTY0IGVuY29kZWQgY2hhbGxlbmdlIG1lc3NhZ2UuCisgKiB1c2VycCAgIFtpbl0gICAgIC0gVGhlIHVzZXIgbmFtZS4KKyAqIHBhc3Nkd3AgW2luXSAgICAgLSBUaGUgdXNlcidzIHBhc3N3b3JkLgorICogc2VydmljZSBbaW5dICAgICAtIFRoZSBzZXJ2aWNlIHR5cGUgc3VjaCBhcyBodHRwLCBzbXRwLCBwb3Agb3IgaW1hcC4KKyAqIG91dHB0ciAgW2luL291dF0gLSBUaGUgYWRkcmVzcyB3aGVyZSBhIHBvaW50ZXIgdG8gbmV3bHkgYWxsb2NhdGVkIG1lbW9yeQorICogICAgICAgICAgICAgICAgICAgIGhvbGRpbmcgdGhlIHJlc3VsdCB3aWxsIGJlIHN0b3JlZCB1cG9uIGNvbXBsZXRpb24uCisgKiBvdXRsZW4gIFtvdXRdICAgIC0gVGhlIGxlbmd0aCBvZiB0aGUgb3V0cHV0IG1lc3NhZ2UuCisgKgorICogUmV0dXJucyBDVVJMRV9PSyBvbiBzdWNjZXNzLgorICovCitDVVJMY29kZSBDdXJsX2F1dGhfY3JlYXRlX2RpZ2VzdF9tZDVfbWVzc2FnZShzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNobGc2NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnVzZXJwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGFzc3dkcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNlcnZpY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqb3V0cHRyLCBzaXplX3QgKm91dGxlbikKK3sKKyAgQ1VSTGNvZGUgcmVzdWx0ID0gQ1VSTEVfT0s7CisgIHNpemVfdCBpOworICBNRDVfY29udGV4dCAqY3R4dDsKKyAgY2hhciAqcmVzcG9uc2UgPSBOVUxMOworICB1bnNpZ25lZCBjaGFyIGRpZ2VzdFtNRDVfRElHRVNUX0xFTl07CisgIGNoYXIgSEExX2hleFsyICogTUQ1X0RJR0VTVF9MRU4gKyAxXTsKKyAgY2hhciBIQTJfaGV4WzIgKiBNRDVfRElHRVNUX0xFTiArIDFdOworICBjaGFyIHJlc3BfaGFzaF9oZXhbMiAqIE1ENV9ESUdFU1RfTEVOICsgMV07CisgIGNoYXIgbm9uY2VbNjRdOworICBjaGFyIHJlYWxtWzEyOF07CisgIGNoYXIgYWxnb3JpdGhtWzY0XTsKKyAgY2hhciBxb3Bfb3B0aW9uc1s2NF07CisgIGludCBxb3BfdmFsdWVzOworICBjaGFyIGNub25jZVszM107CisgIHVuc2lnbmVkIGludCBlbnRyb3B5WzRdOworICBjaGFyIG5vbmNlQ291bnRbXSA9ICIwMDAwMDAwMSI7CisgIGNoYXIgbWV0aG9kW10gICAgID0gIkFVVEhFTlRJQ0FURSI7CisgIGNoYXIgcW9wW10gICAgICAgID0gRElHRVNUX1FPUF9WQUxVRV9TVFJJTkdfQVVUSDsKKyAgY2hhciAqc3BuICAgICAgICAgPSBOVUxMOworCisgIC8qIERlY29kZSB0aGUgY2hhbGxhbmdlIG1lc3NhZ2UgKi8KKyAgcmVzdWx0ID0gYXV0aF9kZWNvZGVfZGlnZXN0X21kNV9tZXNzYWdlKGNobGc2NCwgbm9uY2UsIHNpemVvZihub25jZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFsbSwgc2l6ZW9mKHJlYWxtKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsZ29yaXRobSwgc2l6ZW9mKGFsZ29yaXRobSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxb3Bfb3B0aW9ucywgc2l6ZW9mKHFvcF9vcHRpb25zKSk7CisgIGlmKHJlc3VsdCkKKyAgICByZXR1cm4gcmVzdWx0OworCisgIC8qIFdlIG9ubHkgc3VwcG9ydCBtZDUgc2Vzc2lvbnMgKi8KKyAgaWYoc3RyY21wKGFsZ29yaXRobSwgIm1kNS1zZXNzIikgIT0gMCkKKyAgICByZXR1cm4gQ1VSTEVfQkFEX0NPTlRFTlRfRU5DT0RJTkc7CisKKyAgLyogR2V0IHRoZSBxb3AtdmFsdWVzIGZyb20gdGhlIHFvcC1vcHRpb25zICovCisgIHJlc3VsdCA9IGF1dGhfZGlnZXN0X2dldF9xb3BfdmFsdWVzKHFvcF9vcHRpb25zLCAmcW9wX3ZhbHVlcyk7CisgIGlmKHJlc3VsdCkKKyAgICByZXR1cm4gcmVzdWx0OworCisgIC8qIFdlIG9ubHkgc3VwcG9ydCBhdXRoIHF1YWxpdHktb2YtcHJvdGVjdGlvbiAqLworICBpZighKHFvcF92YWx1ZXMgJiBESUdFU1RfUU9QX1ZBTFVFX0FVVEgpKQorICAgIHJldHVybiBDVVJMRV9CQURfQ09OVEVOVF9FTkNPRElORzsKKworICAvKiBHZW5lcmF0ZSAxNiBieXRlcyBvZiByYW5kb20gZGF0YSAqLworICBlbnRyb3B5WzBdID0gQ3VybF9yYW5kKGRhdGEpOworICBlbnRyb3B5WzFdID0gQ3VybF9yYW5kKGRhdGEpOworICBlbnRyb3B5WzJdID0gQ3VybF9yYW5kKGRhdGEpOworICBlbnRyb3B5WzNdID0gQ3VybF9yYW5kKGRhdGEpOworCisgIC8qIENvbnZlcnQgdGhlIHJhbmRvbSBkYXRhIGludG8gYSAzMiBieXRlIGhleCBzdHJpbmcgKi8KKyAgc25wcmludGYoY25vbmNlLCBzaXplb2YoY25vbmNlKSwgIiUwOHglMDh4JTA4eCUwOHgiLAorICAgICAgICAgICBlbnRyb3B5WzBdLCBlbnRyb3B5WzFdLCBlbnRyb3B5WzJdLCBlbnRyb3B5WzNdKTsKKworICAvKiBTbyBmYXIgc28gZ29vZCwgbm93IGNhbGN1bGF0ZSBBMSBhbmQgSChBMSkgYWNjb3JkaW5nIHRvIFJGQyAyODMxICovCisgIGN0eHQgPSBDdXJsX01ENV9pbml0KEN1cmxfRElHRVNUX01ENSk7CisgIGlmKCFjdHh0KQorICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworCisgIEN1cmxfTUQ1X3VwZGF0ZShjdHh0LCAoY29uc3QgdW5zaWduZWQgY2hhciAqKSB1c2VycCwKKyAgICAgICAgICAgICAgICAgIGN1cmx4X3V6dG91aShzdHJsZW4odXNlcnApKSk7CisgIEN1cmxfTUQ1X3VwZGF0ZShjdHh0LCAoY29uc3QgdW5zaWduZWQgY2hhciAqKSAiOiIsIDEpOworICBDdXJsX01ENV91cGRhdGUoY3R4dCwgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgcmVhbG0sCisgICAgICAgICAgICAgICAgICBjdXJseF91enRvdWkoc3RybGVuKHJlYWxtKSkpOworICBDdXJsX01ENV91cGRhdGUoY3R4dCwgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgIjoiLCAxKTsKKyAgQ3VybF9NRDVfdXBkYXRlKGN0eHQsIChjb25zdCB1bnNpZ25lZCBjaGFyICopIHBhc3N3ZHAsCisgICAgICAgICAgICAgICAgICBjdXJseF91enRvdWkoc3RybGVuKHBhc3N3ZHApKSk7CisgIEN1cmxfTUQ1X2ZpbmFsKGN0eHQsIGRpZ2VzdCk7CisKKyAgY3R4dCA9IEN1cmxfTUQ1X2luaXQoQ3VybF9ESUdFU1RfTUQ1KTsKKyAgaWYoIWN0eHQpCisgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisKKyAgQ3VybF9NRDVfdXBkYXRlKGN0eHQsIChjb25zdCB1bnNpZ25lZCBjaGFyICopIGRpZ2VzdCwgTUQ1X0RJR0VTVF9MRU4pOworICBDdXJsX01ENV91cGRhdGUoY3R4dCwgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgIjoiLCAxKTsKKyAgQ3VybF9NRDVfdXBkYXRlKGN0eHQsIChjb25zdCB1bnNpZ25lZCBjaGFyICopIG5vbmNlLAorICAgICAgICAgICAgICAgICAgY3VybHhfdXp0b3VpKHN0cmxlbihub25jZSkpKTsKKyAgQ3VybF9NRDVfdXBkYXRlKGN0eHQsIChjb25zdCB1bnNpZ25lZCBjaGFyICopICI6IiwgMSk7CisgIEN1cmxfTUQ1X3VwZGF0ZShjdHh0LCAoY29uc3QgdW5zaWduZWQgY2hhciAqKSBjbm9uY2UsCisgICAgICAgICAgICAgICAgICBjdXJseF91enRvdWkoc3RybGVuKGNub25jZSkpKTsKKyAgQ3VybF9NRDVfZmluYWwoY3R4dCwgZGlnZXN0KTsKKworICAvKiBDb252ZXJ0IGNhbGN1bGF0ZWQgMTYgb2N0ZXQgaGV4IGludG8gMzIgYnl0ZXMgc3RyaW5nICovCisgIGZvcihpID0gMDsgaSA8IE1ENV9ESUdFU1RfTEVOOyBpKyspCisgICAgc25wcmludGYoJkhBMV9oZXhbMiAqIGldLCAzLCAiJTAyeCIsIGRpZ2VzdFtpXSk7CisKKyAgLyogR2VuZXJhdGUgb3VyIFNQTiAqLworICBzcG4gPSBDdXJsX2F1dGhfYnVpbGRfc3BuKHNlcnZpY2UsIHJlYWxtLCBOVUxMKTsKKyAgaWYoIXNwbikKKyAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKworICAvKiBDYWxjdWxhdGUgSChBMikgKi8KKyAgY3R4dCA9IEN1cmxfTUQ1X2luaXQoQ3VybF9ESUdFU1RfTUQ1KTsKKyAgaWYoIWN0eHQpIHsKKyAgICBmcmVlKHNwbik7CisKKyAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKyAgfQorCisgIEN1cmxfTUQ1X3VwZGF0ZShjdHh0LCAoY29uc3QgdW5zaWduZWQgY2hhciAqKSBtZXRob2QsCisgICAgICAgICAgICAgICAgICBjdXJseF91enRvdWkoc3RybGVuKG1ldGhvZCkpKTsKKyAgQ3VybF9NRDVfdXBkYXRlKGN0eHQsIChjb25zdCB1bnNpZ25lZCBjaGFyICopICI6IiwgMSk7CisgIEN1cmxfTUQ1X3VwZGF0ZShjdHh0LCAoY29uc3QgdW5zaWduZWQgY2hhciAqKSBzcG4sCisgICAgICAgICAgICAgICAgICBjdXJseF91enRvdWkoc3RybGVuKHNwbikpKTsKKyAgQ3VybF9NRDVfZmluYWwoY3R4dCwgZGlnZXN0KTsKKworICBmb3IoaSA9IDA7IGkgPCBNRDVfRElHRVNUX0xFTjsgaSsrKQorICAgIHNucHJpbnRmKCZIQTJfaGV4WzIgKiBpXSwgMywgIiUwMngiLCBkaWdlc3RbaV0pOworCisgIC8qIE5vdyBjYWxjdWxhdGUgdGhlIHJlc3BvbnNlIGhhc2ggKi8KKyAgY3R4dCA9IEN1cmxfTUQ1X2luaXQoQ3VybF9ESUdFU1RfTUQ1KTsKKyAgaWYoIWN0eHQpIHsKKyAgICBmcmVlKHNwbik7CisKKyAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKyAgfQorCisgIEN1cmxfTUQ1X3VwZGF0ZShjdHh0LCAoY29uc3QgdW5zaWduZWQgY2hhciAqKSBIQTFfaGV4LCAyICogTUQ1X0RJR0VTVF9MRU4pOworICBDdXJsX01ENV91cGRhdGUoY3R4dCwgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgIjoiLCAxKTsKKyAgQ3VybF9NRDVfdXBkYXRlKGN0eHQsIChjb25zdCB1bnNpZ25lZCBjaGFyICopIG5vbmNlLAorICAgICAgICAgICAgICAgICAgY3VybHhfdXp0b3VpKHN0cmxlbihub25jZSkpKTsKKyAgQ3VybF9NRDVfdXBkYXRlKGN0eHQsIChjb25zdCB1bnNpZ25lZCBjaGFyICopICI6IiwgMSk7CisKKyAgQ3VybF9NRDVfdXBkYXRlKGN0eHQsIChjb25zdCB1bnNpZ25lZCBjaGFyICopIG5vbmNlQ291bnQsCisgICAgICAgICAgICAgICAgICBjdXJseF91enRvdWkoc3RybGVuKG5vbmNlQ291bnQpKSk7CisgIEN1cmxfTUQ1X3VwZGF0ZShjdHh0LCAoY29uc3QgdW5zaWduZWQgY2hhciAqKSAiOiIsIDEpOworICBDdXJsX01ENV91cGRhdGUoY3R4dCwgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgY25vbmNlLAorICAgICAgICAgICAgICAgICAgY3VybHhfdXp0b3VpKHN0cmxlbihjbm9uY2UpKSk7CisgIEN1cmxfTUQ1X3VwZGF0ZShjdHh0LCAoY29uc3QgdW5zaWduZWQgY2hhciAqKSAiOiIsIDEpOworICBDdXJsX01ENV91cGRhdGUoY3R4dCwgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgcW9wLAorICAgICAgICAgICAgICAgICAgY3VybHhfdXp0b3VpKHN0cmxlbihxb3ApKSk7CisgIEN1cmxfTUQ1X3VwZGF0ZShjdHh0LCAoY29uc3QgdW5zaWduZWQgY2hhciAqKSAiOiIsIDEpOworCisgIEN1cmxfTUQ1X3VwZGF0ZShjdHh0LCAoY29uc3QgdW5zaWduZWQgY2hhciAqKSBIQTJfaGV4LCAyICogTUQ1X0RJR0VTVF9MRU4pOworICBDdXJsX01ENV9maW5hbChjdHh0LCBkaWdlc3QpOworCisgIGZvcihpID0gMDsgaSA8IE1ENV9ESUdFU1RfTEVOOyBpKyspCisgICAgc25wcmludGYoJnJlc3BfaGFzaF9oZXhbMiAqIGldLCAzLCAiJTAyeCIsIGRpZ2VzdFtpXSk7CisKKyAgLyogR2VuZXJhdGUgdGhlIHJlc3BvbnNlICovCisgIHJlc3BvbnNlID0gYXByaW50ZigidXNlcm5hbWU9XCIlc1wiLHJlYWxtPVwiJXNcIixub25jZT1cIiVzXCIsIgorICAgICAgICAgICAgICAgICAgICAgImNub25jZT1cIiVzXCIsbmM9XCIlc1wiLGRpZ2VzdC11cmk9XCIlc1wiLHJlc3BvbnNlPSVzLCIKKyAgICAgICAgICAgICAgICAgICAgICJxb3A9JXMiLAorICAgICAgICAgICAgICAgICAgICAgdXNlcnAsIHJlYWxtLCBub25jZSwKKyAgICAgICAgICAgICAgICAgICAgIGNub25jZSwgbm9uY2VDb3VudCwgc3BuLCByZXNwX2hhc2hfaGV4LCBxb3ApOworICBmcmVlKHNwbik7CisgIGlmKCFyZXNwb25zZSkKKyAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKworICAvKiBCYXNlNjQgZW5jb2RlIHRoZSByZXNwb25zZSAqLworICByZXN1bHQgPSBDdXJsX2Jhc2U2NF9lbmNvZGUoZGF0YSwgcmVzcG9uc2UsIDAsIG91dHB0ciwgb3V0bGVuKTsKKworICBmcmVlKHJlc3BvbnNlKTsKKworICByZXR1cm4gcmVzdWx0OworfQorCisvKgorICogQ3VybF9hdXRoX2RlY29kZV9kaWdlc3RfaHR0cF9tZXNzYWdlKCkKKyAqCisgKiBUaGlzIGlzIHVzZWQgdG8gZGVjb2RlIGEgSFRUUCBESUdFU1QgY2hhbGxlbmdlIG1lc3NhZ2UgaW50byB0aGUgc2VwZXJhdGUKKyAqIGF0dHJpYnV0ZXMuCisgKgorICogUGFyYW1ldGVyczoKKyAqCisgKiBjaGxnICAgIFtpbl0gICAgIC0gVGhlIGNoYWxsZW5nZSBtZXNzYWdlLgorICogZGlnZXN0ICBbaW4vb3V0XSAtIFRoZSBkaWdlc3QgZGF0YSBzdHJ1Y3QgYmVpbmcgdXNlZCBhbmQgbW9kaWZpZWQuCisgKgorICogUmV0dXJucyBDVVJMRV9PSyBvbiBzdWNjZXNzLgorICovCitDVVJMY29kZSBDdXJsX2F1dGhfZGVjb2RlX2RpZ2VzdF9odHRwX21lc3NhZ2UoY29uc3QgY2hhciAqY2hsZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZGlnZXN0ZGF0YSAqZGlnZXN0KQoreworICBib29sIGJlZm9yZSA9IEZBTFNFOyAvKiBnb3QgYSBub25jZSBiZWZvcmUgKi8KKyAgYm9vbCBmb3VuZEF1dGggPSBGQUxTRTsKKyAgYm9vbCBmb3VuZEF1dGhJbnQgPSBGQUxTRTsKKyAgY2hhciAqdG9rZW4gPSBOVUxMOworICBjaGFyICp0bXAgPSBOVUxMOworCisgIC8qIElmIHdlIGFscmVhZHkgaGF2ZSByZWNlaXZlZCBhIG5vbmNlLCBrZWVwIHRoYXQgaW4gbWluZCAqLworICBpZihkaWdlc3QtPm5vbmNlKQorICAgIGJlZm9yZSA9IFRSVUU7CisKKyAgLyogQ2xlYW4gdXAgYW55IGZvcm1lciBsZWZ0b3ZlcnMgYW5kIGluaXRpYWxpc2UgdG8gZGVmYXVsdHMgKi8KKyAgQ3VybF9hdXRoX2RpZ2VzdF9jbGVhbnVwKGRpZ2VzdCk7CisKKyAgZm9yKDs7KSB7CisgICAgY2hhciB2YWx1ZVtESUdFU1RfTUFYX1ZBTFVFX0xFTkdUSF07CisgICAgY2hhciBjb250ZW50W0RJR0VTVF9NQVhfQ09OVEVOVF9MRU5HVEhdOworCisgICAgLyogUGFzcyBhbGwgYWRkaXRpb25hbCBzcGFjZXMgaGVyZSAqLworICAgIHdoaWxlKCpjaGxnICYmIElTU1BBQ0UoKmNobGcpKQorICAgICAgY2hsZysrOworCisgICAgLyogRXh0cmFjdCBhIHZhbHVlPWNvbnRlbnQgcGFpciAqLworICAgIGlmKEN1cmxfYXV0aF9kaWdlc3RfZ2V0X3BhaXIoY2hsZywgdmFsdWUsIGNvbnRlbnQsICZjaGxnKSkgeworICAgICAgaWYoQ3VybF9yYXdfZXF1YWwodmFsdWUsICJub25jZSIpKSB7CisgICAgICAgIGZyZWUoZGlnZXN0LT5ub25jZSk7CisgICAgICAgIGRpZ2VzdC0+bm9uY2UgPSBzdHJkdXAoY29udGVudCk7CisgICAgICAgIGlmKCFkaWdlc3QtPm5vbmNlKQorICAgICAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworICAgICAgfQorICAgICAgZWxzZSBpZihDdXJsX3Jhd19lcXVhbCh2YWx1ZSwgInN0YWxlIikpIHsKKyAgICAgICAgaWYoQ3VybF9yYXdfZXF1YWwoY29udGVudCwgInRydWUiKSkgeworICAgICAgICAgIGRpZ2VzdC0+c3RhbGUgPSBUUlVFOworICAgICAgICAgIGRpZ2VzdC0+bmMgPSAxOyAvKiB3ZSBtYWtlIGEgbmV3IG5vbmNlIG5vdyAqLworICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIGlmKEN1cmxfcmF3X2VxdWFsKHZhbHVlLCAicmVhbG0iKSkgeworICAgICAgICBmcmVlKGRpZ2VzdC0+cmVhbG0pOworICAgICAgICBkaWdlc3QtPnJlYWxtID0gc3RyZHVwKGNvbnRlbnQpOworICAgICAgICBpZighZGlnZXN0LT5yZWFsbSkKKyAgICAgICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYoQ3VybF9yYXdfZXF1YWwodmFsdWUsICJvcGFxdWUiKSkgeworICAgICAgICBmcmVlKGRpZ2VzdC0+b3BhcXVlKTsKKyAgICAgICAgZGlnZXN0LT5vcGFxdWUgPSBzdHJkdXAoY29udGVudCk7CisgICAgICAgIGlmKCFkaWdlc3QtPm9wYXF1ZSkKKyAgICAgICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYoQ3VybF9yYXdfZXF1YWwodmFsdWUsICJxb3AiKSkgeworICAgICAgICBjaGFyICp0b2tfYnVmOworICAgICAgICAvKiBUb2tlbml6ZSB0aGUgbGlzdCBhbmQgY2hvb3NlIGF1dGggaWYgcG9zc2libGUsIHVzZSBhIHRlbXBvcmFyeQorICAgICAgICAgICBjbG9uZSBvZiB0aGUgYnVmZmVyIHNpbmNlIHN0cnRva19yKCkgcnVpbnMgaXQgKi8KKyAgICAgICAgdG1wID0gc3RyZHVwKGNvbnRlbnQpOworICAgICAgICBpZighdG1wKQorICAgICAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworCisgICAgICAgIHRva2VuID0gc3RydG9rX3IodG1wLCAiLCIsICZ0b2tfYnVmKTsKKyAgICAgICAgd2hpbGUodG9rZW4gIT0gTlVMTCkgeworICAgICAgICAgIGlmKEN1cmxfcmF3X2VxdWFsKHRva2VuLCBESUdFU1RfUU9QX1ZBTFVFX1NUUklOR19BVVRIKSkgeworICAgICAgICAgICAgZm91bmRBdXRoID0gVFJVRTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSBpZihDdXJsX3Jhd19lcXVhbCh0b2tlbiwgRElHRVNUX1FPUF9WQUxVRV9TVFJJTkdfQVVUSF9JTlQpKSB7CisgICAgICAgICAgICBmb3VuZEF1dGhJbnQgPSBUUlVFOworICAgICAgICAgIH0KKyAgICAgICAgICB0b2tlbiA9IHN0cnRva19yKE5VTEwsICIsIiwgJnRva19idWYpOworICAgICAgICB9CisKKyAgICAgICAgZnJlZSh0bXApOworCisgICAgICAgIC8qIFNlbGVjdCBvbmx5IGF1dGggb3IgYXV0aC1pbnQuIE90aGVyd2lzZSwgaWdub3JlICovCisgICAgICAgIGlmKGZvdW5kQXV0aCkgeworICAgICAgICAgIGZyZWUoZGlnZXN0LT5xb3ApOworICAgICAgICAgIGRpZ2VzdC0+cW9wID0gc3RyZHVwKERJR0VTVF9RT1BfVkFMVUVfU1RSSU5HX0FVVEgpOworICAgICAgICAgIGlmKCFkaWdlc3QtPnFvcCkKKyAgICAgICAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYoZm91bmRBdXRoSW50KSB7CisgICAgICAgICAgZnJlZShkaWdlc3QtPnFvcCk7CisgICAgICAgICAgZGlnZXN0LT5xb3AgPSBzdHJkdXAoRElHRVNUX1FPUF9WQUxVRV9TVFJJTkdfQVVUSF9JTlQpOworICAgICAgICAgIGlmKCFkaWdlc3QtPnFvcCkKKyAgICAgICAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIGlmKEN1cmxfcmF3X2VxdWFsKHZhbHVlLCAiYWxnb3JpdGhtIikpIHsKKyAgICAgICAgZnJlZShkaWdlc3QtPmFsZ29yaXRobSk7CisgICAgICAgIGRpZ2VzdC0+YWxnb3JpdGhtID0gc3RyZHVwKGNvbnRlbnQpOworICAgICAgICBpZighZGlnZXN0LT5hbGdvcml0aG0pCisgICAgICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisKKyAgICAgICAgaWYoQ3VybF9yYXdfZXF1YWwoY29udGVudCwgIk1ENS1zZXNzIikpCisgICAgICAgICAgZGlnZXN0LT5hbGdvID0gQ1VSTERJR0VTVEFMR09fTUQ1U0VTUzsKKyAgICAgICAgZWxzZSBpZihDdXJsX3Jhd19lcXVhbChjb250ZW50LCAiTUQ1IikpCisgICAgICAgICAgZGlnZXN0LT5hbGdvID0gQ1VSTERJR0VTVEFMR09fTUQ1OworICAgICAgICBlbHNlCisgICAgICAgICAgcmV0dXJuIENVUkxFX0JBRF9DT05URU5UX0VOQ09ESU5HOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIC8qIFVua25vd24gc3BlY2lmaWVyLCBpZ25vcmUgaXQhICovCisgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICAgIGJyZWFrOyAvKiBXZSdyZSBkb25lIGhlcmUgKi8KKworICAgIC8qIFBhc3MgYWxsIGFkZGl0aW9uYWwgc3BhY2VzIGhlcmUgKi8KKyAgICB3aGlsZSgqY2hsZyAmJiBJU1NQQUNFKCpjaGxnKSkKKyAgICAgIGNobGcrKzsKKworICAgIC8qIEFsbG93IHRoZSBsaXN0IHRvIGJlIGNvbW1hLXNlcGFyYXRlZCAqLworICAgIGlmKCcsJyA9PSAqY2hsZykKKyAgICAgIGNobGcrKzsKKyAgfQorCisgIC8qIFdlIGhhZCBhIG5vbmNlIHNpbmNlIGJlZm9yZSwgYW5kIHdlIGdvdCBhbm90aGVyIG9uZSBub3cgd2l0aG91dAorICAgICAnc3RhbGU9dHJ1ZScuIFRoaXMgbWVhbnMgd2UgcHJvdmlkZWQgYmFkIGNyZWRlbnRpYWxzIGluIHRoZSBwcmV2aW91cworICAgICByZXF1ZXN0ICovCisgIGlmKGJlZm9yZSAmJiAhZGlnZXN0LT5zdGFsZSkKKyAgICByZXR1cm4gQ1VSTEVfQkFEX0NPTlRFTlRfRU5DT0RJTkc7CisKKyAgLyogV2UgZ290IHRoaXMgaGVhZGVyIHdpdGhvdXQgYSBub25jZSwgdGhhdCdzIGEgYmFkIERpZ2VzdCBsaW5lISAqLworICBpZighZGlnZXN0LT5ub25jZSkKKyAgICByZXR1cm4gQ1VSTEVfQkFEX0NPTlRFTlRfRU5DT0RJTkc7CisKKyAgcmV0dXJuIENVUkxFX09LOworfQorCisvKgorICogQ3VybF9hdXRoX2NyZWF0ZV9kaWdlc3RfaHR0cF9tZXNzYWdlKCkKKyAqCisgKiBUaGlzIGlzIHVzZWQgdG8gZ2VuZXJhdGUgYSBIVFRQIERJR0VTVCByZXNwb25zZSBtZXNzYWdlIHJlYWR5IGZvciBzZW5kaW5nCisgKiB0byB0aGUgcmVjaXBpZW50LgorICoKKyAqIFBhcmFtZXRlcnM6CisgKgorICogZGF0YSAgICBbaW5dICAgICAtIFRoZSBzZXNzaW9uIGhhbmRsZS4KKyAqIHVzZXJwICAgW2luXSAgICAgLSBUaGUgdXNlciBuYW1lLgorICogcGFzc2R3cCBbaW5dICAgICAtIFRoZSB1c2VyJ3MgcGFzc3dvcmQuCisgKiByZXF1ZXN0IFtpbl0gICAgIC0gVGhlIEhUVFAgcmVxdWVzdC4KKyAqIHVyaXBhdGggW2luXSAgICAgLSBUaGUgcGF0aCBvZiB0aGUgSFRUUCB1cmkuCisgKiBkaWdlc3QgIFtpbi9vdXRdIC0gVGhlIGRpZ2VzdCBkYXRhIHN0cnVjdCBiZWluZyB1c2VkIGFuZCBtb2RpZmllZC4KKyAqIG91dHB0ciAgW2luL291dF0gLSBUaGUgYWRkcmVzcyB3aGVyZSBhIHBvaW50ZXIgdG8gbmV3bHkgYWxsb2NhdGVkIG1lbW9yeQorICogICAgICAgICAgICAgICAgICAgIGhvbGRpbmcgdGhlIHJlc3VsdCB3aWxsIGJlIHN0b3JlZCB1cG9uIGNvbXBsZXRpb24uCisgKiBvdXRsZW4gIFtvdXRdICAgIC0gVGhlIGxlbmd0aCBvZiB0aGUgb3V0cHV0IG1lc3NhZ2UuCisgKgorICogUmV0dXJucyBDVVJMRV9PSyBvbiBzdWNjZXNzLgorICovCitDVVJMY29kZSBDdXJsX2F1dGhfY3JlYXRlX2RpZ2VzdF9odHRwX21lc3NhZ2Uoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdXNlcnAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGFzc3dkcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpyZXF1ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnVyaXBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRpZ2VzdGRhdGEgKmRpZ2VzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqb3V0cHRyLCBzaXplX3QgKm91dGxlbikKK3sKKyAgQ1VSTGNvZGUgcmVzdWx0OworICB1bnNpZ25lZCBjaGFyIG1kNWJ1ZlsxNl07IC8qIDE2IGJ5dGVzLzEyOCBiaXRzICovCisgIHVuc2lnbmVkIGNoYXIgcmVxdWVzdF9kaWdlc3RbMzNdOworICB1bnNpZ25lZCBjaGFyICptZDV0aGlzOworICB1bnNpZ25lZCBjaGFyIGhhMVszM107ICAgIC8qIDMyIGRpZ2l0cyBhbmQgMSB6ZXJvIGJ5dGUgKi8KKyAgdW5zaWduZWQgY2hhciBoYTJbMzNdOyAgICAvKiAzMiBkaWdpdHMgYW5kIDEgemVybyBieXRlICovCisgIGNoYXIgY25vbmNlYnVmWzMzXTsKKyAgY2hhciAqY25vbmNlID0gTlVMTDsKKyAgc2l6ZV90IGNub25jZV9zeiA9IDA7CisgIGNoYXIgKnVzZXJwX3F1b3RlZDsKKyAgY2hhciAqcmVzcG9uc2UgPSBOVUxMOworICBjaGFyICp0bXAgPSBOVUxMOworCisgIGlmKCFkaWdlc3QtPm5jKQorICAgIGRpZ2VzdC0+bmMgPSAxOworCisgIGlmKCFkaWdlc3QtPmNub25jZSkgeworICAgIHNucHJpbnRmKGNub25jZWJ1Ziwgc2l6ZW9mKGNub25jZWJ1ZiksICIlMDh4JTA4eCUwOHglMDh4IiwKKyAgICAgICAgICAgICBDdXJsX3JhbmQoZGF0YSksIEN1cmxfcmFuZChkYXRhKSwKKyAgICAgICAgICAgICBDdXJsX3JhbmQoZGF0YSksIEN1cmxfcmFuZChkYXRhKSk7CisKKyAgICByZXN1bHQgPSBDdXJsX2Jhc2U2NF9lbmNvZGUoZGF0YSwgY25vbmNlYnVmLCBzdHJsZW4oY25vbmNlYnVmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNub25jZSwgJmNub25jZV9zeik7CisgICAgaWYocmVzdWx0KQorICAgICAgcmV0dXJuIHJlc3VsdDsKKworICAgIGRpZ2VzdC0+Y25vbmNlID0gY25vbmNlOworICB9CisKKyAgLyoKKyAgICBJZiB0aGUgYWxnb3JpdGhtIGlzICJNRDUiIG9yIHVuc3BlY2lmaWVkICh3aGljaCB0aGVuIGRlZmF1bHRzIHRvIE1ENSk6CisKKyAgICAgIEExID0gdW5xKHVzZXJuYW1lLXZhbHVlKSAiOiIgdW5xKHJlYWxtLXZhbHVlKSAiOiIgcGFzc3dkCisKKyAgICBJZiB0aGUgYWxnb3JpdGhtIGlzICJNRDUtc2VzcyIgdGhlbjoKKworICAgICAgQTEgPSBIKHVucSh1c2VybmFtZS12YWx1ZSkgIjoiIHVucShyZWFsbS12YWx1ZSkgIjoiIHBhc3N3ZCkgIjoiCisgICAgICAgICAgIHVucShub25jZS12YWx1ZSkgIjoiIHVucShjbm9uY2UtdmFsdWUpCisgICovCisKKyAgbWQ1dGhpcyA9ICh1bnNpZ25lZCBjaGFyICopCisgICAgYXByaW50ZigiJXM6JXM6JXMiLCB1c2VycCwgZGlnZXN0LT5yZWFsbSwgcGFzc3dkcCk7CisgIGlmKCFtZDV0aGlzKQorICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworCisgIENVUkxfT1VUUFVUX0RJR0VTVF9DT05WKGRhdGEsIG1kNXRoaXMpOyAvKiBjb252ZXJ0IG9uIG5vbi1BU0NJSSBtYWNoaW5lcyAqLworICBDdXJsX21kNWl0KG1kNWJ1ZiwgbWQ1dGhpcyk7CisgIGZyZWUobWQ1dGhpcyk7CisgIGF1dGhfZGlnZXN0X21kNV90b19hc2NpaShtZDVidWYsIGhhMSk7CisKKyAgaWYoZGlnZXN0LT5hbGdvID09IENVUkxESUdFU1RBTEdPX01ENVNFU1MpIHsKKyAgICAvKiBub25jZSBhbmQgY25vbmNlIGFyZSBPVVRTSURFIHRoZSBoYXNoICovCisgICAgdG1wID0gYXByaW50ZigiJXM6JXM6JXMiLCBoYTEsIGRpZ2VzdC0+bm9uY2UsIGRpZ2VzdC0+Y25vbmNlKTsKKyAgICBpZighdG1wKQorICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisKKyAgICBDVVJMX09VVFBVVF9ESUdFU1RfQ09OVihkYXRhLCB0bXApOyAvKiBDb252ZXJ0IG9uIG5vbi1BU0NJSSBtYWNoaW5lcyAqLworICAgIEN1cmxfbWQ1aXQobWQ1YnVmLCAodW5zaWduZWQgY2hhciAqKSB0bXApOworICAgIGZyZWUodG1wKTsKKyAgICBhdXRoX2RpZ2VzdF9tZDVfdG9fYXNjaWkobWQ1YnVmLCBoYTEpOworICB9CisKKyAgLyoKKyAgICBJZiB0aGUgInFvcCIgZGlyZWN0aXZlJ3MgdmFsdWUgaXMgImF1dGgiIG9yIGlzIHVuc3BlY2lmaWVkLCB0aGVuIEEyIGlzOgorCisgICAgICBBMiA9IE1ldGhvZCAiOiIgZGlnZXN0LXVyaS12YWx1ZQorCisgICAgSWYgdGhlICJxb3AiIHZhbHVlIGlzICJhdXRoLWludCIsIHRoZW4gQTIgaXM6CisKKyAgICAgIEEyID0gTWV0aG9kICI6IiBkaWdlc3QtdXJpLXZhbHVlICI6IiBIKGVudGl0eS1ib2R5KQorCisgICAgKFRoZSAiTWV0aG9kIiB2YWx1ZSBpcyB0aGUgSFRUUCByZXF1ZXN0IG1ldGhvZCBhcyBzcGVjaWZpZWQgaW4gc2VjdGlvbgorICAgIDUuMS4xIG9mIFJGQyAyNjE2KQorICAqLworCisgIG1kNXRoaXMgPSAodW5zaWduZWQgY2hhciAqKSBhcHJpbnRmKCIlczolcyIsIHJlcXVlc3QsIHVyaXBhdGgpOworCisgIGlmKGRpZ2VzdC0+cW9wICYmIEN1cmxfcmF3X2VxdWFsKGRpZ2VzdC0+cW9wLCAiYXV0aC1pbnQiKSkgeworICAgIC8qIFdlIGRvbid0IHN1cHBvcnQgYXV0aC1pbnQgZm9yIFBVVCBvciBQT1NUIGF0IHRoZSBtb21lbnQuCisgICAgICAgVE9ETzogcmVwbGFjZSBtZDUgb2YgZW1wdHkgc3RyaW5nIHdpdGggZW50aXR5LWJvZHkgZm9yIFBVVC9QT1NUICovCisgICAgdW5zaWduZWQgY2hhciAqbWQ1dGhpczIgPSAodW5zaWduZWQgY2hhciAqKQorICAgICAgYXByaW50ZigiJXM6JXMiLCBtZDV0aGlzLCAiZDQxZDhjZDk4ZjAwYjIwNGU5ODAwOTk4ZWNmODQyN2UiKTsKKyAgICBmcmVlKG1kNXRoaXMpOworICAgIG1kNXRoaXMgPSBtZDV0aGlzMjsKKyAgfQorCisgIGlmKCFtZDV0aGlzKQorICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworCisgIENVUkxfT1VUUFVUX0RJR0VTVF9DT05WKGRhdGEsIG1kNXRoaXMpOyAvKiBjb252ZXJ0IG9uIG5vbi1BU0NJSSBtYWNoaW5lcyAqLworICBDdXJsX21kNWl0KG1kNWJ1ZiwgbWQ1dGhpcyk7CisgIGZyZWUobWQ1dGhpcyk7CisgIGF1dGhfZGlnZXN0X21kNV90b19hc2NpaShtZDVidWYsIGhhMik7CisKKyAgaWYoZGlnZXN0LT5xb3ApIHsKKyAgICBtZDV0aGlzID0gKHVuc2lnbmVkIGNoYXIgKikgYXByaW50ZigiJXM6JXM6JTA4eDolczolczolcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZ2VzdC0+bm9uY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlnZXN0LT5uYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWdlc3QtPmNub25jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWdlc3QtPnFvcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYTIpOworICB9CisgIGVsc2UgeworICAgIG1kNXRoaXMgPSAodW5zaWduZWQgY2hhciAqKSBhcHJpbnRmKCIlczolczolcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZ2VzdC0+bm9uY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGEyKTsKKyAgfQorCisgIGlmKCFtZDV0aGlzKQorICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworCisgIENVUkxfT1VUUFVUX0RJR0VTVF9DT05WKGRhdGEsIG1kNXRoaXMpOyAvKiBjb252ZXJ0IG9uIG5vbi1BU0NJSSBtYWNoaW5lcyAqLworICBDdXJsX21kNWl0KG1kNWJ1ZiwgbWQ1dGhpcyk7CisgIGZyZWUobWQ1dGhpcyk7CisgIGF1dGhfZGlnZXN0X21kNV90b19hc2NpaShtZDVidWYsIHJlcXVlc3RfZGlnZXN0KTsKKworICAvKiBGb3IgdGVzdCBjYXNlIDY0IChzbm9vcGVkIGZyb20gYSBNb3ppbGxhIDEuM2EgcmVxdWVzdCkKKworICAgICBBdXRob3JpemF0aW9uOiBEaWdlc3QgdXNlcm5hbWU9InRlc3R1c2VyIiwgcmVhbG09InRlc3RyZWFsbSIsIFwKKyAgICAgbm9uY2U9IjEwNTM2MDQxNDUiLCB1cmk9Ii82NCIsIHJlc3BvbnNlPSJjNTVmN2YzMGQ4M2Q3NzRhM2QyZGNhY2Y3MjVhYmFjYSIKKworICAgICBEaWdlc3QgcGFyYW1ldGVycyBhcmUgYWxsIHF1b3RlZCBzdHJpbmdzLiAgVXNlcm5hbWUgd2hpY2ggaXMgcHJvdmlkZWQgYnkKKyAgICAgdGhlIHVzZXIgd2lsbCBuZWVkIGRvdWJsZSBxdW90ZXMgYW5kIGJhY2tzbGFzaGVzIHdpdGhpbiBpdCBlc2NhcGVkLiAgRm9yCisgICAgIHRoZSBvdGhlciBmaWVsZHMsIHRoaXMgc2hvdWxkbid0IGJlIGFuIGlzc3VlLiAgcmVhbG0sIG5vbmNlLCBhbmQgb3BhcXVlCisgICAgIGFyZSBjb3BpZWQgYXMgaXMgZnJvbSB0aGUgc2VydmVyLCBlc2NhcGVzIGFuZCBhbGwuICBjbm9uY2UgaXMgZ2VuZXJhdGVkCisgICAgIHdpdGggd2ViLXNhZmUgY2hhcmFjdGVycy4gIHVyaSBpcyBhbHJlYWR5IHBlcmNlbnQgZW5jb2RlZC4gIG5jIGlzIDggaGV4CisgICAgIGNoYXJhY3RlcnMuICBhbGdvcml0aG0gYW5kIHFvcCB3aXRoIHN0YW5kYXJkIHZhbHVlcyBvbmx5IGNvbnRhaW4gd2ViLXNhZmUKKyAgICAgY2hhcmFjdGVycy4KKyAgKi8KKyAgdXNlcnBfcXVvdGVkID0gYXV0aF9kaWdlc3Rfc3RyaW5nX3F1b3RlZCh1c2VycCk7CisgIGlmKCF1c2VycF9xdW90ZWQpCisgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisKKyAgaWYoZGlnZXN0LT5xb3ApIHsKKyAgICByZXNwb25zZSA9IGFwcmludGYoInVzZXJuYW1lPVwiJXNcIiwgIgorICAgICAgICAgICAgICAgICAgICAgICAicmVhbG09XCIlc1wiLCAiCisgICAgICAgICAgICAgICAgICAgICAgICJub25jZT1cIiVzXCIsICIKKyAgICAgICAgICAgICAgICAgICAgICAgInVyaT1cIiVzXCIsICIKKyAgICAgICAgICAgICAgICAgICAgICAgImNub25jZT1cIiVzXCIsICIKKyAgICAgICAgICAgICAgICAgICAgICAgIm5jPSUwOHgsICIKKyAgICAgICAgICAgICAgICAgICAgICAgInFvcD0lcywgIgorICAgICAgICAgICAgICAgICAgICAgICAicmVzcG9uc2U9XCIlc1wiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgdXNlcnBfcXVvdGVkLAorICAgICAgICAgICAgICAgICAgICAgICBkaWdlc3QtPnJlYWxtLAorICAgICAgICAgICAgICAgICAgICAgICBkaWdlc3QtPm5vbmNlLAorICAgICAgICAgICAgICAgICAgICAgICB1cmlwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICBkaWdlc3QtPmNub25jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgZGlnZXN0LT5uYywKKyAgICAgICAgICAgICAgICAgICAgICAgZGlnZXN0LT5xb3AsCisgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RfZGlnZXN0KTsKKworICAgIGlmKEN1cmxfcmF3X2VxdWFsKGRpZ2VzdC0+cW9wLCAiYXV0aCIpKQorICAgICAgZGlnZXN0LT5uYysrOyAvKiBUaGUgbmMgKGZyb20gUkZDKSBoYXMgdG8gYmUgYSA4IGhleCBkaWdpdCBudW1iZXIgMAorICAgICAgICAgICAgICAgICAgICAgICBwYWRkZWQgd2hpY2ggdGVsbHMgdG8gdGhlIHNlcnZlciBob3cgbWFueSB0aW1lcyB5b3UgYXJlCisgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nIHRoZSBzYW1lIG5vbmNlIGluIHRoZSBxb3A9YXV0aCBtb2RlICovCisgIH0KKyAgZWxzZSB7CisgICAgcmVzcG9uc2UgPSBhcHJpbnRmKCJ1c2VybmFtZT1cIiVzXCIsICIKKyAgICAgICAgICAgICAgICAgICAgICAgInJlYWxtPVwiJXNcIiwgIgorICAgICAgICAgICAgICAgICAgICAgICAibm9uY2U9XCIlc1wiLCAiCisgICAgICAgICAgICAgICAgICAgICAgICJ1cmk9XCIlc1wiLCAiCisgICAgICAgICAgICAgICAgICAgICAgICJyZXNwb25zZT1cIiVzXCIiLAorICAgICAgICAgICAgICAgICAgICAgICB1c2VycF9xdW90ZWQsCisgICAgICAgICAgICAgICAgICAgICAgIGRpZ2VzdC0+cmVhbG0sCisgICAgICAgICAgICAgICAgICAgICAgIGRpZ2VzdC0+bm9uY2UsCisgICAgICAgICAgICAgICAgICAgICAgIHVyaXBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RfZGlnZXN0KTsKKyAgfQorICBmcmVlKHVzZXJwX3F1b3RlZCk7CisgIGlmKCFyZXNwb25zZSkKKyAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKworICAvKiBBZGQgdGhlIG9wdGlvbmFsIGZpZWxkcyAqLworICBpZihkaWdlc3QtPm9wYXF1ZSkgeworICAgIC8qIEFwcGVuZCB0aGUgb3BhcXVlICovCisgICAgdG1wID0gYXByaW50ZigiJXMsIG9wYXF1ZT1cIiVzXCIiLCByZXNwb25zZSwgZGlnZXN0LT5vcGFxdWUpOworICAgIGZyZWUocmVzcG9uc2UpOworICAgIGlmKCF0bXApCisgICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKworICAgIHJlc3BvbnNlID0gdG1wOworICB9CisKKyAgaWYoZGlnZXN0LT5hbGdvcml0aG0pIHsKKyAgICAvKiBBcHBlbmQgdGhlIGFsZ29yaXRobSAqLworICAgIHRtcCA9IGFwcmludGYoIiVzLCBhbGdvcml0aG09XCIlc1wiIiwgcmVzcG9uc2UsIGRpZ2VzdC0+YWxnb3JpdGhtKTsKKyAgICBmcmVlKHJlc3BvbnNlKTsKKyAgICBpZighdG1wKQorICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisKKyAgICByZXNwb25zZSA9IHRtcDsKKyAgfQorCisgIC8qIFJldHVybiB0aGUgb3V0cHV0ICovCisgICpvdXRwdHIgPSByZXNwb25zZTsKKyAgKm91dGxlbiA9IHN0cmxlbihyZXNwb25zZSk7CisKKyAgcmV0dXJuIENVUkxFX09LOworfQorCisvKgorICogQ3VybF9hdXRoX2RpZ2VzdF9jbGVhbnVwKCkKKyAqCisgKiBUaGlzIGlzIHVzZWQgdG8gY2xlYW4gdXAgdGhlIGRpZ2VzdCBzcGVjaWZpYyBkYXRhLgorICoKKyAqIFBhcmFtZXRlcnM6CisgKgorICogZGlnZXN0ICAgIFtpbi9vdXRdIC0gVGhlIGRpZ2VzdCBkYXRhIHN0cnVjdCBiZWluZyBjbGVhbmVkIHVwLgorICoKKyAqLwordm9pZCBDdXJsX2F1dGhfZGlnZXN0X2NsZWFudXAoc3RydWN0IGRpZ2VzdGRhdGEgKmRpZ2VzdCkKK3sKKyAgQ3VybF9zYWZlZnJlZShkaWdlc3QtPm5vbmNlKTsKKyAgQ3VybF9zYWZlZnJlZShkaWdlc3QtPmNub25jZSk7CisgIEN1cmxfc2FmZWZyZWUoZGlnZXN0LT5yZWFsbSk7CisgIEN1cmxfc2FmZWZyZWUoZGlnZXN0LT5vcGFxdWUpOworICBDdXJsX3NhZmVmcmVlKGRpZ2VzdC0+cW9wKTsKKyAgQ3VybF9zYWZlZnJlZShkaWdlc3QtPmFsZ29yaXRobSk7CisKKyAgZGlnZXN0LT5uYyA9IDA7CisgIGRpZ2VzdC0+YWxnbyA9IENVUkxESUdFU1RBTEdPX01ENTsgLyogZGVmYXVsdCBhbGdvcml0aG0gKi8KKyAgZGlnZXN0LT5zdGFsZSA9IEZBTFNFOyAvKiBkZWZhdWx0IG1lYW5zIG5vcm1hbCwgbm90IHN0YWxlICovCit9CisjZW5kaWYgIC8qICFVU0VfV0lORE9XU19TU1BJICovCisKKyNlbmRpZiAgLyogQ1VSTF9ESVNBQkxFX0NSWVBUT19BVVRIICovCmRpZmYgLS1naXQgYS9saWIvdmF1dGgvZGlnZXN0LmggYi9saWIvdmF1dGgvZGlnZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTcyMmRjZQotLS0gL2Rldi9udWxsCisrKyBiL2xpYi92YXV0aC9kaWdlc3QuaApAQCAtMCwwICsxLDQzIEBACisjaWZuZGVmIEhFQURFUl9DVVJMX0RJR0VTVF9ICisjZGVmaW5lIEhFQURFUl9DVVJMX0RJR0VTVF9ICisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqCisgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKworI2lmICFkZWZpbmVkKENVUkxfRElTQUJMRV9DUllQVE9fQVVUSCkKKworI2RlZmluZSBESUdFU1RfTUFYX1ZBTFVFX0xFTkdUSCAgICAgICAgICAgMjU2CisjZGVmaW5lIERJR0VTVF9NQVhfQ09OVEVOVF9MRU5HVEggICAgICAgICAxMDI0CisKK2VudW0geworICBDVVJMRElHRVNUQUxHT19NRDUsCisgIENVUkxESUdFU1RBTEdPX01ENVNFU1MKK307CisKKy8qIFRoaXMgaXMgdXNlZCB0byBleHRyYWN0IHRoZSByZWFsbSBmcm9tIGEgY2hhbGxlbmdlIG1lc3NhZ2UgKi8KK2Jvb2wgQ3VybF9hdXRoX2RpZ2VzdF9nZXRfcGFpcihjb25zdCBjaGFyICpzdHIsIGNoYXIgKnZhbHVlLCBjaGFyICpjb250ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiplbmRwdHIpOworCisjZW5kaWYKKworI2VuZGlmIC8qIEhFQURFUl9DVVJMX0RJR0VTVF9IICovCmRpZmYgLS1naXQgYS9saWIvdmF1dGgvZGlnZXN0X3NzcGkuYyBiL2xpYi92YXV0aC9kaWdlc3Rfc3NwaS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxM2QwOGUKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvdmF1dGgvZGlnZXN0X3NzcGkuYwpAQCAtMCwwICsxLDUyNyBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisgKgorICogQ29weXJpZ2h0IChDKSAyMDE0IC0gMjAxNiwgU3RldmUgSG9sbWUsIDxzdGV2ZV9ob2xtZUBob3RtYWlsLmNvbT4uCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKgorICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKyAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICoKKyAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKgorICogUkZDMjgzMSBESUdFU1QtTUQ1IGF1dGhlbnRpY2F0aW9uCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2luY2x1ZGUgImN1cmxfc2V0dXAuaCIKKworI2lmIGRlZmluZWQoVVNFX1dJTkRPV1NfU1NQSSkgJiYgIWRlZmluZWQoQ1VSTF9ESVNBQkxFX0NSWVBUT19BVVRIKQorCisjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CisKKyNpbmNsdWRlICJ2YXV0aC92YXV0aC5oIgorI2luY2x1ZGUgInZhdXRoL2RpZ2VzdC5oIgorI2luY2x1ZGUgInVybGRhdGEuaCIKKyNpbmNsdWRlICJjdXJsX2Jhc2U2NC5oIgorI2luY2x1ZGUgIndhcm5sZXNzLmgiCisjaW5jbHVkZSAiY3VybF9tdWx0aWJ5dGUuaCIKKyNpbmNsdWRlICJzZW5kZi5oIgorI2luY2x1ZGUgInN0cmR1cC5oIgorI2luY2x1ZGUgInJhd3N0ci5oIgorCisvKiBUaGUgbGFzdCAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmU6ICovCisjaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKKyNpbmNsdWRlICJtZW1kZWJ1Zy5oIgorCisvKgorICogQ3VybF9hdXRoX2NyZWF0ZV9kaWdlc3RfbWQ1X21lc3NhZ2UoKQorICoKKyAqIFRoaXMgaXMgdXNlZCB0byBnZW5lcmF0ZSBhbiBhbHJlYWR5IGVuY29kZWQgRElHRVNULU1ENSByZXNwb25zZSBtZXNzYWdlCisgKiByZWFkeSBmb3Igc2VuZGluZyB0byB0aGUgcmVjaXBpZW50LgorICoKKyAqIFBhcmFtZXRlcnM6CisgKgorICogZGF0YSAgICBbaW5dICAgICAtIFRoZSBzZXNzaW9uIGhhbmRsZS4KKyAqIGNobGc2NCAgW2luXSAgICAgLSBUaGUgYmFzZTY0IGVuY29kZWQgY2hhbGxlbmdlIG1lc3NhZ2UuCisgKiB1c2VycCAgIFtpbl0gICAgIC0gVGhlIHVzZXIgbmFtZSBpbiB0aGUgZm9ybWF0IFVzZXIgb3IgRG9tYWluXFVzZXIuCisgKiBwYXNzZHdwIFtpbl0gICAgIC0gVGhlIHVzZXIncyBwYXNzd29yZC4KKyAqIHNlcnZpY2UgW2luXSAgICAgLSBUaGUgc2VydmljZSB0eXBlIHN1Y2ggYXMgaHR0cCwgc210cCwgcG9wIG9yIGltYXAuCisgKiBvdXRwdHIgIFtpbi9vdXRdIC0gVGhlIGFkZHJlc3Mgd2hlcmUgYSBwb2ludGVyIHRvIG5ld2x5IGFsbG9jYXRlZCBtZW1vcnkKKyAqICAgICAgICAgICAgICAgICAgICBob2xkaW5nIHRoZSByZXN1bHQgd2lsbCBiZSBzdG9yZWQgdXBvbiBjb21wbGV0aW9uLgorICogb3V0bGVuICBbb3V0XSAgICAtIFRoZSBsZW5ndGggb2YgdGhlIG91dHB1dCBtZXNzYWdlLgorICoKKyAqIFJldHVybnMgQ1VSTEVfT0sgb24gc3VjY2Vzcy4KKyAqLworQ1VSTGNvZGUgQ3VybF9hdXRoX2NyZWF0ZV9kaWdlc3RfbWQ1X21lc3NhZ2Uoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjaGxnNjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp1c2VycCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhc3N3ZHAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzZXJ2aWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKm91dHB0ciwgc2l6ZV90ICpvdXRsZW4pCit7CisgIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOworICBUQ0hBUiAqc3BuID0gTlVMTDsKKyAgc2l6ZV90IGNobGdsZW4gPSAwOworICBzaXplX3QgdG9rZW5fbWF4ID0gMDsKKyAgdW5zaWduZWQgY2hhciAqaW5wdXRfdG9rZW4gPSBOVUxMOworICB1bnNpZ25lZCBjaGFyICpvdXRwdXRfdG9rZW4gPSBOVUxMOworICBDcmVkSGFuZGxlIGNyZWRlbnRpYWxzOworICBDdHh0SGFuZGxlIGNvbnRleHQ7CisgIFBTZWNQa2dJbmZvIFNlY3VyaXR5UGFja2FnZTsKKyAgU0VDX1dJTk5UX0FVVEhfSURFTlRJVFkgaWRlbnRpdHk7CisgIFNFQ19XSU5OVF9BVVRIX0lERU5USVRZICpwX2lkZW50aXR5OworICBTZWNCdWZmZXIgY2hsZ19idWY7CisgIFNlY0J1ZmZlciByZXNwX2J1ZjsKKyAgU2VjQnVmZmVyRGVzYyBjaGxnX2Rlc2M7CisgIFNlY0J1ZmZlckRlc2MgcmVzcF9kZXNjOworICBTRUNVUklUWV9TVEFUVVMgc3RhdHVzOworICB1bnNpZ25lZCBsb25nIGF0dHJzOworICBUaW1lU3RhbXAgZXhwaXJ5OyAvKiBGb3IgV2luZG93cyA5eCBjb21wYXRpYmlsaXR5IG9mIFNTUEkgY2FsbHMgKi8KKworICAvKiBEZWNvZGUgdGhlIGJhc2UtNjQgZW5jb2RlZCBjaGFsbGVuZ2UgbWVzc2FnZSAqLworICBpZihzdHJsZW4oY2hsZzY0KSAmJiAqY2hsZzY0ICE9ICc9JykgeworICAgIHJlc3VsdCA9IEN1cmxfYmFzZTY0X2RlY29kZShjaGxnNjQsICZpbnB1dF90b2tlbiwgJmNobGdsZW4pOworICAgIGlmKHJlc3VsdCkKKyAgICAgIHJldHVybiByZXN1bHQ7CisgIH0KKworICAvKiBFbnN1cmUgd2UgaGF2ZSBhIHZhbGlkIGNoYWxsZW5nZSBtZXNzYWdlICovCisgIGlmKCFpbnB1dF90b2tlbikgeworICAgIGluZm9mKGRhdGEsICJESUdFU1QtTUQ1IGhhbmRzaGFrZSBmYWlsdXJlIChlbXB0eSBjaGFsbGVuZ2UgbWVzc2FnZSlcbiIpOworCisgICAgcmV0dXJuIENVUkxFX0JBRF9DT05URU5UX0VOQ09ESU5HOworICB9CisKKyAgLyogUXVlcnkgdGhlIHNlY3VyaXR5IHBhY2thZ2UgZm9yIERpZ2VzdFNTUCAqLworICBzdGF0dXMgPSBzX3BTZWNGbi0+UXVlcnlTZWN1cml0eVBhY2thZ2VJbmZvKChUQ0hBUiAqKSBURVhUKFNQX05BTUVfRElHRVNUKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmU2VjdXJpdHlQYWNrYWdlKTsKKyAgaWYoc3RhdHVzICE9IFNFQ19FX09LKSB7CisgICAgZnJlZShpbnB1dF90b2tlbik7CisKKyAgICByZXR1cm4gQ1VSTEVfTk9UX0JVSUxUX0lOOworICB9CisKKyAgdG9rZW5fbWF4ID0gU2VjdXJpdHlQYWNrYWdlLT5jYk1heFRva2VuOworCisgIC8qIFJlbGVhc2UgdGhlIHBhY2thZ2UgYnVmZmVyIGFzIGl0IGlzIG5vdCByZXF1aXJlZCBhbnltb3JlICovCisgIHNfcFNlY0ZuLT5GcmVlQ29udGV4dEJ1ZmZlcihTZWN1cml0eVBhY2thZ2UpOworCisgIC8qIEFsbG9jYXRlIG91ciByZXNwb25zZSBidWZmZXIgKi8KKyAgb3V0cHV0X3Rva2VuID0gbWFsbG9jKHRva2VuX21heCk7CisgIGlmKCFvdXRwdXRfdG9rZW4pIHsKKyAgICBmcmVlKGlucHV0X3Rva2VuKTsKKworICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworICB9CisKKyAgLyogR2VuZXJhdGUgb3VyIFNQTiAqLworICBzcG4gPSBDdXJsX2F1dGhfYnVpbGRfc3BuKHNlcnZpY2UsIGRhdGEtPmVhc3lfY29ubi0+aG9zdC5uYW1lLCBOVUxMKTsKKyAgaWYoIXNwbikgeworICAgIGZyZWUob3V0cHV0X3Rva2VuKTsKKyAgICBmcmVlKGlucHV0X3Rva2VuKTsKKworICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworICB9CisKKyAgaWYodXNlcnAgJiYgKnVzZXJwKSB7CisgICAgLyogUG9wdWxhdGUgb3VyIGlkZW50aXR5IHN0cnVjdHVyZSAqLworICAgIHJlc3VsdCA9IEN1cmxfY3JlYXRlX3NzcGlfaWRlbnRpdHkodXNlcnAsIHBhc3N3ZHAsICZpZGVudGl0eSk7CisgICAgaWYocmVzdWx0KSB7CisgICAgICBmcmVlKHNwbik7CisgICAgICBmcmVlKG91dHB1dF90b2tlbik7CisgICAgICBmcmVlKGlucHV0X3Rva2VuKTsKKworICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICAvKiBBbGxvdyBwcm9wZXIgY2xlYW51cCBvZiB0aGUgaWRlbnRpdHkgc3RydWN0dXJlICovCisgICAgcF9pZGVudGl0eSA9ICZpZGVudGl0eTsKKyAgfQorICBlbHNlCisgICAgLyogVXNlIHRoZSBjdXJyZW50IFdpbmRvd3MgdXNlciAqLworICAgIHBfaWRlbnRpdHkgPSBOVUxMOworCisgIC8qIEFjcXVpcmUgb3VyIGNyZWRlbnRpYWxzIGhhbmRsZSAqLworICBzdGF0dXMgPSBzX3BTZWNGbi0+QWNxdWlyZUNyZWRlbnRpYWxzSGFuZGxlKE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFRDSEFSICopIFRFWFQoU1BfTkFNRV9ESUdFU1QpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNFQ1BLR19DUkVEX09VVEJPVU5ELCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBfaWRlbnRpdHksIE5VTEwsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNyZWRlbnRpYWxzLCAmZXhwaXJ5KTsKKworICBpZihzdGF0dXMgIT0gU0VDX0VfT0spIHsKKyAgICBDdXJsX3NzcGlfZnJlZV9pZGVudGl0eShwX2lkZW50aXR5KTsKKyAgICBmcmVlKHNwbik7CisgICAgZnJlZShvdXRwdXRfdG9rZW4pOworICAgIGZyZWUoaW5wdXRfdG9rZW4pOworCisgICAgcmV0dXJuIENVUkxFX0xPR0lOX0RFTklFRDsKKyAgfQorCisgIC8qIFNldHVwIHRoZSBjaGFsbGVuZ2UgImlucHV0IiBzZWN1cml0eSBidWZmZXIgKi8KKyAgY2hsZ19kZXNjLnVsVmVyc2lvbiA9IFNFQ0JVRkZFUl9WRVJTSU9OOworICBjaGxnX2Rlc2MuY0J1ZmZlcnMgID0gMTsKKyAgY2hsZ19kZXNjLnBCdWZmZXJzICA9ICZjaGxnX2J1ZjsKKyAgY2hsZ19idWYuQnVmZmVyVHlwZSA9IFNFQ0JVRkZFUl9UT0tFTjsKKyAgY2hsZ19idWYucHZCdWZmZXIgICA9IGlucHV0X3Rva2VuOworICBjaGxnX2J1Zi5jYkJ1ZmZlciAgID0gY3VybHhfdXp0b3VsKGNobGdsZW4pOworCisgIC8qIFNldHVwIHRoZSByZXNwb25zZSAib3V0cHV0IiBzZWN1cml0eSBidWZmZXIgKi8KKyAgcmVzcF9kZXNjLnVsVmVyc2lvbiA9IFNFQ0JVRkZFUl9WRVJTSU9OOworICByZXNwX2Rlc2MuY0J1ZmZlcnMgID0gMTsKKyAgcmVzcF9kZXNjLnBCdWZmZXJzICA9ICZyZXNwX2J1ZjsKKyAgcmVzcF9idWYuQnVmZmVyVHlwZSA9IFNFQ0JVRkZFUl9UT0tFTjsKKyAgcmVzcF9idWYucHZCdWZmZXIgICA9IG91dHB1dF90b2tlbjsKKyAgcmVzcF9idWYuY2JCdWZmZXIgICA9IGN1cmx4X3V6dG91bCh0b2tlbl9tYXgpOworCisgIC8qIEdlbmVyYXRlIG91ciByZXNwb25zZSBtZXNzYWdlICovCisgIHN0YXR1cyA9IHNfcFNlY0ZuLT5Jbml0aWFsaXplU2VjdXJpdHlDb250ZXh0KCZjcmVkZW50aWFscywgTlVMTCwgc3BuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAwLCAmY2hsZ19kZXNjLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29udGV4dCwgJnJlc3BfZGVzYywgJmF0dHJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXhwaXJ5KTsKKworICBpZihzdGF0dXMgPT0gU0VDX0lfQ09NUExFVEVfTkVFREVEIHx8CisgICAgIHN0YXR1cyA9PSBTRUNfSV9DT01QTEVURV9BTkRfQ09OVElOVUUpCisgICAgc19wU2VjRm4tPkNvbXBsZXRlQXV0aFRva2VuKCZjcmVkZW50aWFscywgJnJlc3BfZGVzYyk7CisgIGVsc2UgaWYoc3RhdHVzICE9IFNFQ19FX09LICYmIHN0YXR1cyAhPSBTRUNfSV9DT05USU5VRV9ORUVERUQpIHsKKyAgICBzX3BTZWNGbi0+RnJlZUNyZWRlbnRpYWxzSGFuZGxlKCZjcmVkZW50aWFscyk7CisgICAgQ3VybF9zc3BpX2ZyZWVfaWRlbnRpdHkocF9pZGVudGl0eSk7CisgICAgZnJlZShzcG4pOworICAgIGZyZWUob3V0cHV0X3Rva2VuKTsKKyAgICBmcmVlKGlucHV0X3Rva2VuKTsKKworICAgIHJldHVybiBDVVJMRV9SRUNWX0VSUk9SOworICB9CisKKyAgLyogQmFzZTY0IGVuY29kZSB0aGUgcmVzcG9uc2UgKi8KKyAgcmVzdWx0ID0gQ3VybF9iYXNlNjRfZW5jb2RlKGRhdGEsIChjaGFyICopIG91dHB1dF90b2tlbiwgcmVzcF9idWYuY2JCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdHIsIG91dGxlbik7CisKKyAgLyogRnJlZSBvdXIgaGFuZGxlcyAqLworICBzX3BTZWNGbi0+RGVsZXRlU2VjdXJpdHlDb250ZXh0KCZjb250ZXh0KTsKKyAgc19wU2VjRm4tPkZyZWVDcmVkZW50aWFsc0hhbmRsZSgmY3JlZGVudGlhbHMpOworCisgIC8qIEZyZWUgdGhlIGlkZW50aXR5IHN0cnVjdHVyZSAqLworICBDdXJsX3NzcGlfZnJlZV9pZGVudGl0eShwX2lkZW50aXR5KTsKKworICAvKiBGcmVlIHRoZSBTUE4gKi8KKyAgZnJlZShzcG4pOworCisgIC8qIEZyZWUgdGhlIHJlc3BvbnNlIGJ1ZmZlciAqLworICBmcmVlKG91dHB1dF90b2tlbik7CisKKyAgLyogRnJlZSB0aGUgZGVjb2RlZCBjaGFsbGVuZ2UgbWVzc2FnZSAqLworICBmcmVlKGlucHV0X3Rva2VuKTsKKworICByZXR1cm4gcmVzdWx0OworfQorCisvKgorICogQ3VybF9vdmVycmlkZV9zc3BpX2h0dHBfcmVhbG0oKQorICoKKyAqIFRoaXMgaXMgdXNlZCB0byBwb3B1bGF0ZSB0aGUgZG9tYWluIGluIGEgU1NQSSBpZGVudGl0eSBzdHJ1Y3R1cmUKKyAqIFRoZSByZWFsbSBpcyBleHRyYWN0ZWQgZnJvbSB0aGUgY2hhbGxlbmdlIG1lc3NhZ2UgYW5kIHVzZWQgYXMgdGhlCisgKiBkb21haW4gaWYgaXQgaXMgbm90IGFscmVhZHkgZXhwbGljaXRseSBzZXQuCisgKgorICogUGFyYW1ldGVyczoKKyAqCisgKiBjaGxnICAgICBbaW5dICAgICAtIFRoZSBjaGFsbGVuZ2UgbWVzc2FnZS4KKyAqIGlkZW50aXR5IFtpbi9vdXRdIC0gVGhlIGlkZW50aXR5IHN0cnVjdHVyZS4KKyAqCisgKiBSZXR1cm5zIENVUkxFX09LIG9uIHN1Y2Nlc3MuCisgKi8KK0NVUkxjb2RlIEN1cmxfb3ZlcnJpZGVfc3NwaV9odHRwX3JlYWxtKGNvbnN0IGNoYXIgKmNobGcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRUNfV0lOTlRfQVVUSF9JREVOVElUWSAqaWRlbnRpdHkpCit7CisgIHhjaGFycF91IGRvbWFpbiwgZHVwX2RvbWFpbjsKKworICAvKiBJZiBkb21haW4gaXMgYmxhbmsgb3IgdW5zZXQsIGNoZWNrIGNoYWxsZW5nZSBtZXNzYWdlIGZvciByZWFsbSAqLworICBpZighaWRlbnRpdHktPkRvbWFpbiB8fCAhaWRlbnRpdHktPkRvbWFpbkxlbmd0aCkgeworICAgIGZvcig7OykgeworICAgICAgY2hhciB2YWx1ZVtESUdFU1RfTUFYX1ZBTFVFX0xFTkdUSF07CisgICAgICBjaGFyIGNvbnRlbnRbRElHRVNUX01BWF9DT05URU5UX0xFTkdUSF07CisKKyAgICAgIC8qIFBhc3MgYWxsIGFkZGl0aW9uYWwgc3BhY2VzIGhlcmUgKi8KKyAgICAgIHdoaWxlKCpjaGxnICYmIElTU1BBQ0UoKmNobGcpKQorICAgICAgICBjaGxnKys7CisKKyAgICAgIC8qIEV4dHJhY3QgYSB2YWx1ZT1jb250ZW50IHBhaXIgKi8KKyAgICAgIGlmKEN1cmxfYXV0aF9kaWdlc3RfZ2V0X3BhaXIoY2hsZywgdmFsdWUsIGNvbnRlbnQsICZjaGxnKSkgeworICAgICAgICBpZihDdXJsX3Jhd19lcXVhbCh2YWx1ZSwgInJlYWxtIikpIHsKKworICAgICAgICAgIC8qIFNldHVwIGlkZW50aXR5J3MgZG9tYWluIGFuZCBsZW5ndGggKi8KKyAgICAgICAgICBkb21haW4udGNoYXJfcHRyID0gQ3VybF9jb252ZXJ0X1VURjhfdG9fdGNoYXIoKGNoYXIgKikgY29udGVudCk7CisgICAgICAgICAgaWYoIWRvbWFpbi50Y2hhcl9wdHIpCisgICAgICAgICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKworICAgICAgICAgIGR1cF9kb21haW4udGNoYXJfcHRyID0gX3Rjc2R1cChkb21haW4udGNoYXJfcHRyKTsKKyAgICAgICAgICBpZighZHVwX2RvbWFpbi50Y2hhcl9wdHIpIHsKKyAgICAgICAgICAgIEN1cmxfdW5pY29kZWZyZWUoZG9tYWluLnRjaGFyX3B0cik7CisgICAgICAgICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICBmcmVlKGlkZW50aXR5LT5Eb21haW4pOworICAgICAgICAgIGlkZW50aXR5LT5Eb21haW4gPSBkdXBfZG9tYWluLnRieXRlX3B0cjsKKyAgICAgICAgICBpZGVudGl0eS0+RG9tYWluTGVuZ3RoID0gY3VybHhfdXp0b3VsKF90Y3NsZW4oZHVwX2RvbWFpbi50Y2hhcl9wdHIpKTsKKyAgICAgICAgICBkdXBfZG9tYWluLnRjaGFyX3B0ciA9IE5VTEw7CisKKyAgICAgICAgICBDdXJsX3VuaWNvZGVmcmVlKGRvbWFpbi50Y2hhcl9wdHIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIC8qIFVua25vd24gc3BlY2lmaWVyLCBpZ25vcmUgaXQhICovCisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgICAgYnJlYWs7IC8qIFdlJ3JlIGRvbmUgaGVyZSAqLworCisgICAgICAvKiBQYXNzIGFsbCBhZGRpdGlvbmFsIHNwYWNlcyBoZXJlICovCisgICAgICB3aGlsZSgqY2hsZyAmJiBJU1NQQUNFKCpjaGxnKSkKKyAgICAgICAgY2hsZysrOworCisgICAgICAvKiBBbGxvdyB0aGUgbGlzdCB0byBiZSBjb21tYS1zZXBhcmF0ZWQgKi8KKyAgICAgIGlmKCcsJyA9PSAqY2hsZykKKyAgICAgICAgY2hsZysrOworICAgIH0KKyAgfQorCisgIHJldHVybiBDVVJMRV9PSzsKK30KKworLyoKKyAqIEN1cmxfYXV0aF9kZWNvZGVfZGlnZXN0X2h0dHBfbWVzc2FnZSgpCisgKgorICogVGhpcyBpcyB1c2VkIHRvIGRlY29kZSBhIEhUVFAgRElHRVNUIGNoYWxsZW5nZSBtZXNzYWdlIGludG8gdGhlIHNlcGVyYXRlCisgKiBhdHRyaWJ1dGVzLgorICoKKyAqIFBhcmFtZXRlcnM6CisgKgorICogY2hsZyAgICBbaW5dICAgICAtIFRoZSBjaGFsbGVuZ2UgbWVzc2FnZS4KKyAqIGRpZ2VzdCAgW2luL291dF0gLSBUaGUgZGlnZXN0IGRhdGEgc3RydWN0IGJlaW5nIHVzZWQgYW5kIG1vZGlmaWVkLgorICoKKyAqIFJldHVybnMgQ1VSTEVfT0sgb24gc3VjY2Vzcy4KKyAqLworQ1VSTGNvZGUgQ3VybF9hdXRoX2RlY29kZV9kaWdlc3RfaHR0cF9tZXNzYWdlKGNvbnN0IGNoYXIgKmNobGcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRpZ2VzdGRhdGEgKmRpZ2VzdCkKK3sKKyAgc2l6ZV90IGNobGdsZW4gPSBzdHJsZW4oY2hsZyk7CisKKyAgLyogV2UgaGFkIGFuIGlucHV0IHRva2VuIGJlZm9yZSBhbmQgd2UgZ290IGFub3RoZXIgb25lIG5vdy4gVGhpcyBtZWFucyB3ZQorICAgICBwcm92aWRlZCBiYWQgY3JlZGVudGlhbHMgaW4gdGhlIHByZXZpb3VzIHJlcXVlc3QuICovCisgIGlmKGRpZ2VzdC0+aW5wdXRfdG9rZW4pCisgICAgcmV0dXJuIENVUkxFX0JBRF9DT05URU5UX0VOQ09ESU5HOworCisgIC8qIFNpbXBseSBzdG9yZSB0aGUgY2hhbGxlbmdlIGZvciB1c2UgbGF0ZXIgKi8KKyAgZGlnZXN0LT5pbnB1dF90b2tlbiA9IChCWVRFICopIEN1cmxfbWVtZHVwKGNobGcsIGNobGdsZW4pOworICBpZighZGlnZXN0LT5pbnB1dF90b2tlbikKKyAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKworICBkaWdlc3QtPmlucHV0X3Rva2VuX2xlbiA9IGNobGdsZW47CisKKyAgcmV0dXJuIENVUkxFX09LOworfQorCisvKgorICogQ3VybF9hdXRoX2NyZWF0ZV9kaWdlc3RfaHR0cF9tZXNzYWdlKCkKKyAqCisgKiBUaGlzIGlzIHVzZWQgdG8gZ2VuZXJhdGUgYSBIVFRQIERJR0VTVCByZXNwb25zZSBtZXNzYWdlIHJlYWR5IGZvciBzZW5kaW5nCisgKiB0byB0aGUgcmVjaXBpZW50LgorICoKKyAqIFBhcmFtZXRlcnM6CisgKgorICogZGF0YSAgICBbaW5dICAgICAtIFRoZSBzZXNzaW9uIGhhbmRsZS4KKyAqIHVzZXJwICAgW2luXSAgICAgLSBUaGUgdXNlciBuYW1lIGluIHRoZSBmb3JtYXQgVXNlciBvciBEb21haW5cVXNlci4KKyAqIHBhc3Nkd3AgW2luXSAgICAgLSBUaGUgdXNlcidzIHBhc3N3b3JkLgorICogcmVxdWVzdCBbaW5dICAgICAtIFRoZSBIVFRQIHJlcXVlc3QuCisgKiB1cmlwYXRoIFtpbl0gICAgIC0gVGhlIHBhdGggb2YgdGhlIEhUVFAgdXJpLgorICogZGlnZXN0ICBbaW4vb3V0XSAtIFRoZSBkaWdlc3QgZGF0YSBzdHJ1Y3QgYmVpbmcgdXNlZCBhbmQgbW9kaWZpZWQuCisgKiBvdXRwdHIgIFtpbi9vdXRdIC0gVGhlIGFkZHJlc3Mgd2hlcmUgYSBwb2ludGVyIHRvIG5ld2x5IGFsbG9jYXRlZCBtZW1vcnkKKyAqICAgICAgICAgICAgICAgICAgICBob2xkaW5nIHRoZSByZXN1bHQgd2lsbCBiZSBzdG9yZWQgdXBvbiBjb21wbGV0aW9uLgorICogb3V0bGVuICBbb3V0XSAgICAtIFRoZSBsZW5ndGggb2YgdGhlIG91dHB1dCBtZXNzYWdlLgorICoKKyAqIFJldHVybnMgQ1VSTEVfT0sgb24gc3VjY2Vzcy4KKyAqLworQ1VSTGNvZGUgQ3VybF9hdXRoX2NyZWF0ZV9kaWdlc3RfaHR0cF9tZXNzYWdlKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnVzZXJwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhc3N3ZHAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqcmVxdWVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICp1cmlwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkaWdlc3RkYXRhICpkaWdlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKm91dHB0ciwgc2l6ZV90ICpvdXRsZW4pCit7CisgIHNpemVfdCB0b2tlbl9tYXg7CisgIENyZWRIYW5kbGUgY3JlZGVudGlhbHM7CisgIEN0eHRIYW5kbGUgY29udGV4dDsKKyAgY2hhciAqcmVzcDsKKyAgQllURSAqb3V0cHV0X3Rva2VuOworICBQU2VjUGtnSW5mbyBTZWN1cml0eVBhY2thZ2U7CisgIFNFQ19XSU5OVF9BVVRIX0lERU5USVRZIGlkZW50aXR5OworICBTRUNfV0lOTlRfQVVUSF9JREVOVElUWSAqcF9pZGVudGl0eTsKKyAgU2VjQnVmZmVyIGNobGdfYnVmWzNdOworICBTZWNCdWZmZXIgcmVzcF9idWY7CisgIFNlY0J1ZmZlckRlc2MgY2hsZ19kZXNjOworICBTZWNCdWZmZXJEZXNjIHJlc3BfZGVzYzsKKyAgU0VDVVJJVFlfU1RBVFVTIHN0YXR1czsKKyAgdW5zaWduZWQgbG9uZyBhdHRyczsKKyAgVGltZVN0YW1wIGV4cGlyeTsgLyogRm9yIFdpbmRvd3MgOXggY29tcGF0aWJpbGl0eSBvZiBTU1BJIGNhbGxzICovCisgIFRDSEFSICpzcG47CisKKyAgKHZvaWQpIGRhdGE7CisKKyAgLyogUXVlcnkgdGhlIHNlY3VyaXR5IHBhY2thZ2UgZm9yIERpZ2VzdFNTUCAqLworICBzdGF0dXMgPSBzX3BTZWNGbi0+UXVlcnlTZWN1cml0eVBhY2thZ2VJbmZvKChUQ0hBUiAqKSBURVhUKFNQX05BTUVfRElHRVNUKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmU2VjdXJpdHlQYWNrYWdlKTsKKyAgaWYoc3RhdHVzICE9IFNFQ19FX09LKQorICAgIHJldHVybiBDVVJMRV9OT1RfQlVJTFRfSU47CisKKyAgdG9rZW5fbWF4ID0gU2VjdXJpdHlQYWNrYWdlLT5jYk1heFRva2VuOworCisgIC8qIFJlbGVhc2UgdGhlIHBhY2thZ2UgYnVmZmVyIGFzIGl0IGlzIG5vdCByZXF1aXJlZCBhbnltb3JlICovCisgIHNfcFNlY0ZuLT5GcmVlQ29udGV4dEJ1ZmZlcihTZWN1cml0eVBhY2thZ2UpOworCisgIC8qIEFsbG9jYXRlIHRoZSBvdXRwdXQgYnVmZmVyIGFjY29yZGluZyB0byB0aGUgbWF4IHRva2VuIHNpemUgYXMgaW5kaWNhdGVkCisgICAgIGJ5IHRoZSBzZWN1cml0eSBwYWNrYWdlICovCisgIG91dHB1dF90b2tlbiA9IG1hbGxvYyh0b2tlbl9tYXgpOworICBpZighb3V0cHV0X3Rva2VuKQorICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworCisgIGlmKHVzZXJwICYmICp1c2VycCkgeworICAgIC8qIFBvcHVsYXRlIG91ciBpZGVudGl0eSBzdHJ1Y3R1cmUgKi8KKyAgICBpZihDdXJsX2NyZWF0ZV9zc3BpX2lkZW50aXR5KHVzZXJwLCBwYXNzd2RwLCAmaWRlbnRpdHkpKQorICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisKKyAgICAvKiBQb3B1bGF0ZSBvdXIgaWRlbnRpdHkgZG9tYWluICovCisgICAgaWYoQ3VybF9vdmVycmlkZV9zc3BpX2h0dHBfcmVhbG0oKGNvbnN0IGNoYXIqKSBkaWdlc3QtPmlucHV0X3Rva2VuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpZGVudGl0eSkpCisgICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKworICAgIC8qIEFsbG93IHByb3BlciBjbGVhbnVwIG9mIHRoZSBpZGVudGl0eSBzdHJ1Y3R1cmUgKi8KKyAgICBwX2lkZW50aXR5ID0gJmlkZW50aXR5OworICB9CisgIGVsc2UKKyAgICAvKiBVc2UgdGhlIGN1cnJlbnQgV2luZG93cyB1c2VyICovCisgICAgcF9pZGVudGl0eSA9IE5VTEw7CisKKyAgLyogQWNxdWlyZSBvdXIgY3JlZGVudGlhbHMgaGFuZGxlICovCisgIHN0YXR1cyA9IHNfcFNlY0ZuLT5BY3F1aXJlQ3JlZGVudGlhbHNIYW5kbGUoTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVENIQVIgKikgVEVYVChTUF9OQU1FX0RJR0VTVCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VDUEtHX0NSRURfT1VUQk9VTkQsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcF9pZGVudGl0eSwgTlVMTCwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY3JlZGVudGlhbHMsICZleHBpcnkpOworICBpZihzdGF0dXMgIT0gU0VDX0VfT0spIHsKKyAgICBDdXJsX3NzcGlfZnJlZV9pZGVudGl0eShwX2lkZW50aXR5KTsKKyAgICBmcmVlKG91dHB1dF90b2tlbik7CisKKyAgICByZXR1cm4gQ1VSTEVfTE9HSU5fREVOSUVEOworICB9CisKKyAgLyogU2V0dXAgdGhlIGNoYWxsZW5nZSAiaW5wdXQiIHNlY3VyaXR5IGJ1ZmZlciBpZiBwcmVzZW50ICovCisgIGNobGdfZGVzYy51bFZlcnNpb24gICAgPSBTRUNCVUZGRVJfVkVSU0lPTjsKKyAgY2hsZ19kZXNjLmNCdWZmZXJzICAgICA9IDM7CisgIGNobGdfZGVzYy5wQnVmZmVycyAgICAgPSBjaGxnX2J1ZjsKKyAgY2hsZ19idWZbMF0uQnVmZmVyVHlwZSA9IFNFQ0JVRkZFUl9UT0tFTjsKKyAgY2hsZ19idWZbMF0ucHZCdWZmZXIgICA9IGRpZ2VzdC0+aW5wdXRfdG9rZW47CisgIGNobGdfYnVmWzBdLmNiQnVmZmVyICAgPSBjdXJseF91enRvdWwoZGlnZXN0LT5pbnB1dF90b2tlbl9sZW4pOworICBjaGxnX2J1ZlsxXS5CdWZmZXJUeXBlID0gU0VDQlVGRkVSX1BLR19QQVJBTVM7CisgIGNobGdfYnVmWzFdLnB2QnVmZmVyICAgPSAodm9pZCAqKSByZXF1ZXN0OworICBjaGxnX2J1ZlsxXS5jYkJ1ZmZlciAgID0gY3VybHhfdXp0b3VsKHN0cmxlbigoY29uc3QgY2hhciAqKSByZXF1ZXN0KSk7CisgIGNobGdfYnVmWzJdLkJ1ZmZlclR5cGUgPSBTRUNCVUZGRVJfUEtHX1BBUkFNUzsKKyAgY2hsZ19idWZbMl0ucHZCdWZmZXIgICA9IE5VTEw7CisgIGNobGdfYnVmWzJdLmNiQnVmZmVyICAgPSAwOworCisgIC8qIFNldHVwIHRoZSByZXNwb25zZSAib3V0cHV0IiBzZWN1cml0eSBidWZmZXIgKi8KKyAgcmVzcF9kZXNjLnVsVmVyc2lvbiA9IFNFQ0JVRkZFUl9WRVJTSU9OOworICByZXNwX2Rlc2MuY0J1ZmZlcnMgID0gMTsKKyAgcmVzcF9kZXNjLnBCdWZmZXJzICA9ICZyZXNwX2J1ZjsKKyAgcmVzcF9idWYuQnVmZmVyVHlwZSA9IFNFQ0JVRkZFUl9UT0tFTjsKKyAgcmVzcF9idWYucHZCdWZmZXIgICA9IG91dHB1dF90b2tlbjsKKyAgcmVzcF9idWYuY2JCdWZmZXIgICA9IGN1cmx4X3V6dG91bCh0b2tlbl9tYXgpOworCisgIHNwbiA9IEN1cmxfY29udmVydF9VVEY4X3RvX3RjaGFyKChjaGFyICopIHVyaXBhdGgpOworICBpZighc3BuKSB7CisgICAgQ3VybF9zc3BpX2ZyZWVfaWRlbnRpdHkocF9pZGVudGl0eSk7CisgICAgZnJlZShvdXRwdXRfdG9rZW4pOworCisgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisgIH0KKworICAvKiBHZW5lcmF0ZSBvdXIgcmVwb25zZSBtZXNzYWdlICovCisgIHN0YXR1cyA9IHNfcFNlY0ZuLT5Jbml0aWFsaXplU2VjdXJpdHlDb250ZXh0KCZjcmVkZW50aWFscywgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJU0NfUkVRX1VTRV9IVFRQX1NUWUxFLCAwLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY2hsZ19kZXNjLCAwLCAmY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlc3BfZGVzYywgJmF0dHJzLCAmZXhwaXJ5KTsKKyAgQ3VybF91bmljb2RlZnJlZShzcG4pOworCisgIGlmKHN0YXR1cyA9PSBTRUNfSV9DT01QTEVURV9ORUVERUQgfHwKKyAgICAgc3RhdHVzID09IFNFQ19JX0NPTVBMRVRFX0FORF9DT05USU5VRSkKKyAgICBzX3BTZWNGbi0+Q29tcGxldGVBdXRoVG9rZW4oJmNyZWRlbnRpYWxzLCAmcmVzcF9kZXNjKTsKKyAgZWxzZSBpZihzdGF0dXMgIT0gU0VDX0VfT0sgJiYgc3RhdHVzICE9IFNFQ19JX0NPTlRJTlVFX05FRURFRCkgeworICAgIHNfcFNlY0ZuLT5GcmVlQ3JlZGVudGlhbHNIYW5kbGUoJmNyZWRlbnRpYWxzKTsKKworICAgIEN1cmxfc3NwaV9mcmVlX2lkZW50aXR5KHBfaWRlbnRpdHkpOworICAgIGZyZWUob3V0cHV0X3Rva2VuKTsKKworICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworICB9CisKKyAgcmVzcCA9IG1hbGxvYyhyZXNwX2J1Zi5jYkJ1ZmZlciArIDEpOworICBpZighcmVzcCkgeworICAgIHNfcFNlY0ZuLT5EZWxldGVTZWN1cml0eUNvbnRleHQoJmNvbnRleHQpOworICAgIHNfcFNlY0ZuLT5GcmVlQ3JlZGVudGlhbHNIYW5kbGUoJmNyZWRlbnRpYWxzKTsKKworICAgIEN1cmxfc3NwaV9mcmVlX2lkZW50aXR5KHBfaWRlbnRpdHkpOworICAgIGZyZWUob3V0cHV0X3Rva2VuKTsKKworICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworICB9CisKKyAgLyogQ29weSB0aGUgZ2VuZXJhdGVkIHJlcG9uc2UgKi8KKyAgbWVtY3B5KHJlc3AsIHJlc3BfYnVmLnB2QnVmZmVyLCByZXNwX2J1Zi5jYkJ1ZmZlcik7CisgIHJlc3BbcmVzcF9idWYuY2JCdWZmZXJdID0gMHgwMDsKKworICAvKiBSZXR1cm4gdGhlIHJlc3BvbnNlICovCisgICpvdXRwdHIgPSByZXNwOworICAqb3V0bGVuID0gcmVzcF9idWYuY2JCdWZmZXI7CisKKyAgLyogRnJlZSBvdXIgaGFuZGxlcyAqLworICBzX3BTZWNGbi0+RGVsZXRlU2VjdXJpdHlDb250ZXh0KCZjb250ZXh0KTsKKyAgc19wU2VjRm4tPkZyZWVDcmVkZW50aWFsc0hhbmRsZSgmY3JlZGVudGlhbHMpOworCisgIC8qIEZyZWUgdGhlIGlkZW50aXR5IHN0cnVjdHVyZSAqLworICBDdXJsX3NzcGlfZnJlZV9pZGVudGl0eShwX2lkZW50aXR5KTsKKworICAvKiBGcmVlIHRoZSByZXNwb25zZSBidWZmZXIgKi8KKyAgZnJlZShvdXRwdXRfdG9rZW4pOworCisgIHJldHVybiBDVVJMRV9PSzsKK30KKworLyoKKyAqIEN1cmxfYXV0aF9kaWdlc3RfY2xlYW51cCgpCisgKgorICogVGhpcyBpcyB1c2VkIHRvIGNsZWFuIHVwIHRoZSBkaWdlc3Qgc3BlY2lmaWMgZGF0YS4KKyAqCisgKiBQYXJhbWV0ZXJzOgorICoKKyAqIGRpZ2VzdCAgICBbaW4vb3V0XSAtIFRoZSBkaWdlc3QgZGF0YSBzdHJ1Y3QgYmVpbmcgY2xlYW5lZCB1cC4KKyAqCisgKi8KK3ZvaWQgQ3VybF9hdXRoX2RpZ2VzdF9jbGVhbnVwKHN0cnVjdCBkaWdlc3RkYXRhICpkaWdlc3QpCit7CisgIC8qIEZyZWUgdGhlIGlucHV0IHRva2VuICovCisgIEN1cmxfc2FmZWZyZWUoZGlnZXN0LT5pbnB1dF90b2tlbik7CisKKyAgLyogUmVzZXQgYW55IHZhcmlhYmxlcyAqLworICBkaWdlc3QtPmlucHV0X3Rva2VuX2xlbiA9IDA7Cit9CisKKyNlbmRpZiAvKiBVU0VfV0lORE9XU19TU1BJICYmICFDVVJMX0RJU0FCTEVfQ1JZUFRPX0FVVEggKi8KZGlmZiAtLWdpdCBhL2xpYi9jdXJsX3Nhc2xfZ3NzYXBpLmMgYi9saWIvdmF1dGgva3JiNV9nc3NhcGkuYwpzaW1pbGFyaXR5IGluZGV4IDY2JQpyZW5hbWUgZnJvbSBsaWIvY3VybF9zYXNsX2dzc2FwaS5jCnJlbmFtZSB0byBsaWIvdmF1dGgva3JiNV9nc3NhcGkuYwppbmRleCAzYzZmM2NlLi45NzU2NzViIDEwMDY0NAotLS0gYS9saWIvY3VybF9zYXNsX2dzc2FwaS5jCisrKyBiL2xpYi92YXV0aC9rcmI1X2dzc2FwaS5jCkBAIC01LDEyICs1LDEyIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAyMDE0IC0gMjAxNSwgU3RldmUgSG9sbWUsIDxzdGV2ZV9ob2xtZUBob3RtYWlsLmNvbT4uCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgLSAyMDE2LCBTdGV2ZSBIb2xtZSwgPHN0ZXZlX2hvbG1lQGhvdG1haWwuY29tPi4KICAqIENvcHlyaWdodCAoQykgMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KIAorI2luY2x1ZGUgInZhdXRoL3ZhdXRoLmgiCiAjaW5jbHVkZSAiY3VybF9zYXNsLmgiCiAjaW5jbHVkZSAidXJsZGF0YS5oIgogI2luY2x1ZGUgImN1cmxfYmFzZTY0LmgiCkBAIC00MSwyNSArNDIsNyBAQAogI2luY2x1ZGUgIm1lbWRlYnVnLmgiCiAKIC8qCi0qIEN1cmxfc2FzbF9idWlsZF9nc3NhcGlfc3BuKCkKLSoKLSogVGhpcyBpcyB1c2VkIHRvIGJ1aWxkIGEgU1BOIHN0cmluZyBpbiB0aGUgZm9ybWF0IHNlcnZpY2VAaG9zdC4KLSoKLSogUGFyYW1ldGVyczoKLSoKLSogc2VyaXZjZSAgW2luXSAtIFRoZSBzZXJ2aWNlIHR5cGUgc3VjaCBhcyB3d3csIHNtdHAsIHBvcCBvciBpbWFwLgotKiBob3N0ICAgICBbaW5dIC0gVGhlIGhvc3QgbmFtZSBvciByZWFsbS4KLSoKLSogUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIG5ld2x5IGFsbG9jYXRlZCBTUE4uCi0qLwotY2hhciAqQ3VybF9zYXNsX2J1aWxkX2dzc2FwaV9zcG4oY29uc3QgY2hhciAqc2VydmljZSwgY29uc3QgY2hhciAqaG9zdCkKLXsKLSAgLyogR2VuZXJhdGUgYW5kIHJldHVybiBvdXIgU1BOICovCi0gIHJldHVybiBhcHJpbnRmKCIlc0AlcyIsIHNlcnZpY2UsIGhvc3QpOwotfQotCi0vKgotICogQ3VybF9zYXNsX2NyZWF0ZV9nc3NhcGlfdXNlcl9tZXNzYWdlKCkKKyAqIEN1cmxfYXV0aF9jcmVhdGVfZ3NzYXBpX3VzZXJfbWVzc2FnZSgpCiAgKgogICogVGhpcyBpcyB1c2VkIHRvIGdlbmVyYXRlIGFuIGFscmVhZHkgZW5jb2RlZCBHU1NBUEkgKEtlcmJlcm9zIFY1KSB1c2VyIHRva2VuCiAgKiBtZXNzYWdlIHJlYWR5IGZvciBzZW5kaW5nIHRvIHRoZSByZWNpcGllbnQuCkBAIC02OSwyMiArNTIsMjQgQEAKICAqIGRhdGEgICAgICAgIFtpbl0gICAgIC0gVGhlIHNlc3Npb24gaGFuZGxlLgogICogdXNlcnAgICAgICAgW2luXSAgICAgLSBUaGUgdXNlciBuYW1lLgogICogcGFzc2R3cCAgICAgW2luXSAgICAgLSBUaGUgdXNlcidzIHBhc3N3b3JkLgotICogc2VydmljZSAgICAgW2luXSAgICAgLSBUaGUgc2VydmljZSB0eXBlIHN1Y2ggYXMgd3d3LCBzbXRwLCBwb3Agb3IgaW1hcC4KKyAqIHNlcnZpY2UgICAgIFtpbl0gICAgIC0gVGhlIHNlcnZpY2UgdHlwZSBzdWNoIGFzIGh0dHAsIHNtdHAsIHBvcCBvciBpbWFwLgorICogaG9zdCAgICAgICAgW2luWyAgICAgLSBUaGUgaG9zdCBuYW1lLgogICogbXV0dWFsX2F1dGggW2luXSAgICAgLSBGbGFnIHNwZWNpZmluZyB3aGV0aGVyIG9yIG5vdCBtdXR1YWwgYXV0aGVudGljYXRpb24KICAqICAgICAgICAgICAgICAgICAgICAgICAgaXMgZW5hYmxlZC4KICAqIGNobGc2NCAgICAgIFtpbl0gICAgIC0gUG9pbnRlciB0byB0aGUgb3B0aW9uYWwgYmFzZTY0IGVuY29kZWQgY2hhbGxlbmdlCiAgKiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UuCi0gKiBrcmI1ICAgICAgICBbaW4vb3V0XSAtIFRoZSBnc3NhcGkgZGF0YSBzdHJ1Y3QgYmVpbmcgdXNlZCBhbmQgbW9kaWZpZWQuCisgKiBrcmI1ICAgICAgICBbaW4vb3V0XSAtIFRoZSBLZXJiZXJvcyA1IGRhdGEgc3RydWN0IGJlaW5nIHVzZWQgYW5kIG1vZGlmaWVkLgogICogb3V0cHRyICAgICAgW2luL291dF0gLSBUaGUgYWRkcmVzcyB3aGVyZSBhIHBvaW50ZXIgdG8gbmV3bHkgYWxsb2NhdGVkIG1lbW9yeQogICogICAgICAgICAgICAgICAgICAgICAgICBob2xkaW5nIHRoZSByZXN1bHQgd2lsbCBiZSBzdG9yZWQgdXBvbiBjb21wbGV0aW9uLgogICogb3V0bGVuICAgICAgW291dF0gICAgLSBUaGUgbGVuZ3RoIG9mIHRoZSBvdXRwdXQgbWVzc2FnZS4KICAqCiAgKiBSZXR1cm5zIENVUkxFX09LIG9uIHN1Y2Nlc3MuCiAgKi8KLUNVUkxjb2RlIEN1cmxfc2FzbF9jcmVhdGVfZ3NzYXBpX3VzZXJfbWVzc2FnZShzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwKK0NVUkxjb2RlIEN1cmxfYXV0aF9jcmVhdGVfZ3NzYXBpX3VzZXJfbWVzc2FnZShzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp1c2VycCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwYXNzd2RwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNlcnZpY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqaG9zdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBib29sIG11dHVhbF9hdXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNobGc2NCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qga2VyYmVyb3M1ZGF0YSAqa3JiNSwKQEAgLTkzLDkgKzc4LDkgQEAKICAgQ1VSTGNvZGUgcmVzdWx0ID0gQ1VSTEVfT0s7CiAgIHNpemVfdCBjaGxnbGVuID0gMDsKICAgdW5zaWduZWQgY2hhciAqY2hsZyA9IE5VTEw7Ci0gIE9NX3VpbnQzMiBnc3Nfc3RhdHVzOwotICBPTV91aW50MzIgZ3NzX21ham9yX3N0YXR1czsKLSAgT01fdWludDMyIGdzc19taW5vcl9zdGF0dXM7CisgIE9NX3VpbnQzMiBtYWpvcl9zdGF0dXM7CisgIE9NX3VpbnQzMiBtaW5vcl9zdGF0dXM7CisgIE9NX3VpbnQzMiB1bnVzZWRfc3RhdHVzOwogICBnc3NfYnVmZmVyX2Rlc2Mgc3BuX3Rva2VuID0gR1NTX0NfRU1QVFlfQlVGRkVSOwogICBnc3NfYnVmZmVyX2Rlc2MgaW5wdXRfdG9rZW4gPSBHU1NfQ19FTVBUWV9CVUZGRVI7CiAgIGdzc19idWZmZXJfZGVzYyBvdXRwdXRfdG9rZW4gPSBHU1NfQ19FTVBUWV9CVUZGRVI7CkBAIC0xMDMsMTAgKzg4LDkgQEAKICAgKHZvaWQpIHVzZXJwOwogICAodm9pZCkgcGFzc3dkcDsKIAotICBpZihrcmI1LT5jb250ZXh0ID09IEdTU19DX05PX0NPTlRFWFQpIHsKKyAgaWYoIWtyYjUtPnNwbikgewogICAgIC8qIEdlbmVyYXRlIG91ciBTUE4gKi8KLSAgICBjaGFyICpzcG4gPSBDdXJsX3Nhc2xfYnVpbGRfZ3NzYXBpX3NwbihzZXJ2aWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtPmVhc3lfY29ubi0+aG9zdC5uYW1lKTsKKyAgICBjaGFyICpzcG4gPSBDdXJsX2F1dGhfYnVpbGRfc3BuKHNlcnZpY2UsIE5VTEwsIGhvc3QpOwogICAgIGlmKCFzcG4pCiAgICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKIApAQCAtMTE1LDEwICs5OSwxMSBAQAogICAgIHNwbl90b2tlbi5sZW5ndGggPSBzdHJsZW4oc3BuKTsKIAogICAgIC8qIEltcG9ydCB0aGUgU1BOICovCi0gICAgZ3NzX21ham9yX3N0YXR1cyA9IGdzc19pbXBvcnRfbmFtZSgmZ3NzX21pbm9yX3N0YXR1cywgJnNwbl90b2tlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdTU19DX05UX0hPU1RCQVNFRF9TRVJWSUNFLCAma3JiNS0+c3BuKTsKLSAgICBpZihHU1NfRVJST1IoZ3NzX21ham9yX3N0YXR1cykpIHsKLSAgICAgIEN1cmxfZ3NzX2xvZ19lcnJvcihkYXRhLCBnc3NfbWlub3Jfc3RhdHVzLCAiZ3NzX2ltcG9ydF9uYW1lKCkgZmFpbGVkOiAiKTsKKyAgICBtYWpvcl9zdGF0dXMgPSBnc3NfaW1wb3J0X25hbWUoJm1pbm9yX3N0YXR1cywgJnNwbl90b2tlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1NTX0NfTlRfSE9TVEJBU0VEX1NFUlZJQ0UsICZrcmI1LT5zcG4pOworICAgIGlmKEdTU19FUlJPUihtYWpvcl9zdGF0dXMpKSB7CisgICAgICBDdXJsX2dzc19sb2dfZXJyb3IoZGF0YSwgImdzc19pbXBvcnRfbmFtZSgpIGZhaWxlZDogIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBtYWpvcl9zdGF0dXMsIG1pbm9yX3N0YXR1cyk7CiAKICAgICAgIGZyZWUoc3BuKTsKIApAQCAtMTI3LDkgKzExMiwxMCBAQAogCiAgICAgZnJlZShzcG4pOwogICB9Ci0gIGVsc2UgeworCisgIGlmKGNobGc2NCAmJiAqY2hsZzY0KSB7CiAgICAgLyogRGVjb2RlIHRoZSBiYXNlLTY0IGVuY29kZWQgY2hhbGxlbmdlIG1lc3NhZ2UgKi8KLSAgICBpZihzdHJsZW4oY2hsZzY0KSAmJiAqY2hsZzY0ICE9ICc9JykgeworICAgIGlmKCpjaGxnNjQgIT0gJz0nKSB7CiAgICAgICByZXN1bHQgPSBDdXJsX2Jhc2U2NF9kZWNvZGUoY2hsZzY0LCAmY2hsZywgJmNobGdsZW4pOwogICAgICAgaWYocmVzdWx0KQogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTQ3LDI1ICsxMzMsMjYgQEAKICAgICBpbnB1dF90b2tlbi5sZW5ndGggPSBjaGxnbGVuOwogICB9CiAKLSAgZ3NzX21ham9yX3N0YXR1cyA9IEN1cmxfZ3NzX2luaXRfc2VjX2NvbnRleHQoZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmdzc19taW5vcl9zdGF0dXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZrcmI1LT5jb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrcmI1LT5zcG4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDdXJsX2tyYjVfbWVjaF9vaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdTU19DX05PX0NIQU5ORUxfQklORElOR1MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpbnB1dF90b2tlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm91dHB1dF90b2tlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXV0dWFsX2F1dGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICBtYWpvcl9zdGF0dXMgPSBDdXJsX2dzc19pbml0X3NlY19jb250ZXh0KGRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1pbm9yX3N0YXR1cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAma3JiNS0+Y29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrcmI1LT5zcG4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkN1cmxfa3JiNV9tZWNoX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHU1NfQ19OT19DSEFOTkVMX0JJTkRJTkdTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpbnB1dF90b2tlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3V0cHV0X3Rva2VuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11dHVhbF9hdXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwogCisgIC8qIEZyZWUgdGhlIGRlY29kZWQgY2hhbGxlbmdlIGFzIGl0IGlzIG5vdCByZXF1aXJlZCBhbnltb3JlICovCiAgIGZyZWUoaW5wdXRfdG9rZW4udmFsdWUpOwogCi0gIGlmKEdTU19FUlJPUihnc3NfbWFqb3Jfc3RhdHVzKSkgeworICBpZihHU1NfRVJST1IobWFqb3Jfc3RhdHVzKSkgewogICAgIGlmKG91dHB1dF90b2tlbi52YWx1ZSkKLSAgICAgIGdzc19yZWxlYXNlX2J1ZmZlcigmZ3NzX3N0YXR1cywgJm91dHB1dF90b2tlbik7CisgICAgICBnc3NfcmVsZWFzZV9idWZmZXIoJnVudXNlZF9zdGF0dXMsICZvdXRwdXRfdG9rZW4pOwogCi0gICAgQ3VybF9nc3NfbG9nX2Vycm9yKGRhdGEsIGdzc19taW5vcl9zdGF0dXMsCi0gICAgICAgICAgICAgICAgICAgICAgICJnc3NfaW5pdF9zZWNfY29udGV4dCgpIGZhaWxlZDogIik7CisgICAgQ3VybF9nc3NfbG9nX2Vycm9yKGRhdGEsICJnc3NfaW5pdF9zZWNfY29udGV4dCgpIGZhaWxlZDogIiwKKyAgICAgICAgICAgICAgICAgICAgICAgbWFqb3Jfc3RhdHVzLCBtaW5vcl9zdGF0dXMpOwogCiAgICAgcmV0dXJuIENVUkxFX1JFQ1ZfRVJST1I7CiAgIH0KQEAgLTE3NSwxNCArMTYyLDE5IEBACiAgICAgcmVzdWx0ID0gQ3VybF9iYXNlNjRfZW5jb2RlKGRhdGEsIChjaGFyICopIG91dHB1dF90b2tlbi52YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X3Rva2VuLmxlbmd0aCwgb3V0cHRyLCBvdXRsZW4pOwogCi0gICAgZ3NzX3JlbGVhc2VfYnVmZmVyKCZnc3Nfc3RhdHVzLCAmb3V0cHV0X3Rva2VuKTsKKyAgICBnc3NfcmVsZWFzZV9idWZmZXIoJnVudXNlZF9zdGF0dXMsICZvdXRwdXRfdG9rZW4pOworICB9CisgIGVsc2UgaWYobXV0dWFsX2F1dGgpIHsKKyAgICAqb3V0cHRyID0gc3RyZHVwKCIiKTsKKyAgICBpZighKm91dHB0cikKKyAgICAgIHJlc3VsdCA9IENVUkxFX09VVF9PRl9NRU1PUlk7CiAgIH0KIAogICByZXR1cm4gcmVzdWx0OwogfQogCiAvKgotICogQ3VybF9zYXNsX2NyZWF0ZV9nc3NhcGlfc2VjdXJpdHlfbWVzc2FnZSgpCisgKiBDdXJsX2F1dGhfY3JlYXRlX2dzc2FwaV9zZWN1cml0eV9tZXNzYWdlKCkKICAqCiAgKiBUaGlzIGlzIHVzZWQgdG8gZ2VuZXJhdGUgYW4gYWxyZWFkeSBlbmNvZGVkIEdTU0FQSSAoS2VyYmVyb3MgVjUpIHNlY3VyaXR5CiAgKiB0b2tlbiBtZXNzYWdlIHJlYWR5IGZvciBzZW5kaW5nIHRvIHRoZSByZWNpcGllbnQuCkBAIC0xOTEsMTQgKzE4MywxNCBAQAogICoKICAqIGRhdGEgICAgW2luXSAgICAgLSBUaGUgc2Vzc2lvbiBoYW5kbGUuCiAgKiBjaGxnNjQgIFtpbl0gICAgIC0gUG9pbnRlciB0byB0aGUgb3B0aW9uYWwgYmFzZTY0IGVuY29kZWQgY2hhbGxlbmdlIG1lc3NhZ2UuCi0gKiBrcmI1ICAgIFtpbi9vdXRdIC0gVGhlIGdzc2FwaSBkYXRhIHN0cnVjdCBiZWluZyB1c2VkIGFuZCBtb2RpZmllZC4KKyAqIGtyYjUgICAgW2luL291dF0gLSBUaGUgS2VyYmVyb3MgNSBkYXRhIHN0cnVjdCBiZWluZyB1c2VkIGFuZCBtb2RpZmllZC4KICAqIG91dHB0ciAgW2luL291dF0gLSBUaGUgYWRkcmVzcyB3aGVyZSBhIHBvaW50ZXIgdG8gbmV3bHkgYWxsb2NhdGVkIG1lbW9yeQogICogICAgICAgICAgICAgICAgICAgIGhvbGRpbmcgdGhlIHJlc3VsdCB3aWxsIGJlIHN0b3JlZCB1cG9uIGNvbXBsZXRpb24uCiAgKiBvdXRsZW4gIFtvdXRdICAgIC0gVGhlIGxlbmd0aCBvZiB0aGUgb3V0cHV0IG1lc3NhZ2UuCiAgKgogICogUmV0dXJucyBDVVJMRV9PSyBvbiBzdWNjZXNzLgogICovCi1DVVJMY29kZSBDdXJsX3Nhc2xfY3JlYXRlX2dzc2FwaV9zZWN1cml0eV9tZXNzYWdlKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLAorQ1VSTGNvZGUgQ3VybF9hdXRoX2NyZWF0ZV9nc3NhcGlfc2VjdXJpdHlfbWVzc2FnZShzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY2hsZzY0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qga2VyYmVyb3M1ZGF0YSAqa3JiNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKm91dHB0ciwKQEAgLTIwOSw5ICsyMDEsOSBAQAogICBzaXplX3QgbWVzc2FnZWxlbiA9IDA7CiAgIHVuc2lnbmVkIGNoYXIgKmNobGcgPSBOVUxMOwogICB1bnNpZ25lZCBjaGFyICptZXNzYWdlID0gTlVMTDsKLSAgT01fdWludDMyIGdzc19zdGF0dXM7Ci0gIE9NX3VpbnQzMiBnc3NfbWFqb3Jfc3RhdHVzOwotICBPTV91aW50MzIgZ3NzX21pbm9yX3N0YXR1czsKKyAgT01fdWludDMyIG1ham9yX3N0YXR1czsKKyAgT01fdWludDMyIG1pbm9yX3N0YXR1czsKKyAgT01fdWludDMyIHVudXNlZF9zdGF0dXM7CiAgIGdzc19idWZmZXJfZGVzYyBpbnB1dF90b2tlbiA9IEdTU19DX0VNUFRZX0JVRkZFUjsKICAgZ3NzX2J1ZmZlcl9kZXNjIG91dHB1dF90b2tlbiA9IEdTU19DX0VNUFRZX0JVRkZFUjsKICAgdW5zaWduZWQgaW50IGluZGF0YSA9IDA7CkBAIC0yMzcsMTIgKzIyOSwxMiBAQAogICB9CiAKICAgLyogR2V0IHRoZSBmdWxseSBxdWFsaWZpZWQgdXNlcm5hbWUgYmFjayBmcm9tIHRoZSBjb250ZXh0ICovCi0gIGdzc19tYWpvcl9zdGF0dXMgPSBnc3NfaW5xdWlyZV9jb250ZXh0KCZnc3NfbWlub3Jfc3RhdHVzLCBrcmI1LT5jb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdXNlcm5hbWUsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwpOwotICBpZihHU1NfRVJST1IoZ3NzX21ham9yX3N0YXR1cykpIHsKLSAgICBDdXJsX2dzc19sb2dfZXJyb3IoZGF0YSwgZ3NzX21pbm9yX3N0YXR1cywKLSAgICAgICAgICAgICAgICAgICAgICAgImdzc19pbnF1aXJlX2NvbnRleHQoKSBmYWlsZWQ6ICIpOworICBtYWpvcl9zdGF0dXMgPSBnc3NfaW5xdWlyZV9jb250ZXh0KCZtaW5vcl9zdGF0dXMsIGtyYjUtPmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnVzZXJuYW1lLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwpOworICBpZihHU1NfRVJST1IobWFqb3Jfc3RhdHVzKSkgeworICAgIEN1cmxfZ3NzX2xvZ19lcnJvcihkYXRhLCAiZ3NzX2lucXVpcmVfY29udGV4dCgpIGZhaWxlZDogIiwKKyAgICAgICAgICAgICAgICAgICAgICAgbWFqb3Jfc3RhdHVzLCBtaW5vcl9zdGF0dXMpOwogCiAgICAgZnJlZShjaGxnKTsKIApAQCAtMjUwLDEwICsyNDIsMTEgQEAKICAgfQogCiAgIC8qIENvbnZlcnQgdGhlIHVzZXJuYW1lIGZyb20gaW50ZXJuYWwgZm9ybWF0IHRvIGEgZGlzcGxheWFibGUgdG9rZW4gKi8KLSAgZ3NzX21ham9yX3N0YXR1cyA9IGdzc19kaXNwbGF5X25hbWUoJmdzc19taW5vcl9zdGF0dXMsIHVzZXJuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdXNlcm5hbWVfdG9rZW4sIE5VTEwpOwotICBpZihHU1NfRVJST1IoZ3NzX21ham9yX3N0YXR1cykpIHsKLSAgICBDdXJsX2dzc19sb2dfZXJyb3IoZGF0YSwgZ3NzX21pbm9yX3N0YXR1cywgImdzc19kaXNwbGF5X25hbWUoKSBmYWlsZWQ6ICIpOworICBtYWpvcl9zdGF0dXMgPSBnc3NfZGlzcGxheV9uYW1lKCZtaW5vcl9zdGF0dXMsIHVzZXJuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1c2VybmFtZV90b2tlbiwgTlVMTCk7CisgIGlmKEdTU19FUlJPUihtYWpvcl9zdGF0dXMpKSB7CisgICAgQ3VybF9nc3NfbG9nX2Vycm9yKGRhdGEsICJnc3NfZGlzcGxheV9uYW1lKCkgZmFpbGVkOiAiLAorICAgICAgICAgICAgICAgICAgICAgICBtYWpvcl9zdGF0dXMsIG1pbm9yX3N0YXR1cyk7CiAKICAgICBmcmVlKGNobGcpOwogCkBAIC0yNjUsMTIgKzI1OCwxMyBAQAogICBpbnB1dF90b2tlbi5sZW5ndGggPSBjaGxnbGVuOwogCiAgIC8qIERlY3J5cHQgdGhlIGluYm91bmQgY2hhbGxlbmdlIGFuZCBvYnRhaW4gdGhlIHFvcCAqLwotICBnc3NfbWFqb3Jfc3RhdHVzID0gZ3NzX3Vud3JhcCgmZ3NzX21pbm9yX3N0YXR1cywga3JiNS0+Y29udGV4dCwgJmlucHV0X3Rva2VuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3V0cHV0X3Rva2VuLCBOVUxMLCAmcW9wKTsKLSAgaWYoR1NTX0VSUk9SKGdzc19tYWpvcl9zdGF0dXMpKSB7Ci0gICAgQ3VybF9nc3NfbG9nX2Vycm9yKGRhdGEsIGdzc19taW5vcl9zdGF0dXMsICJnc3NfdW53cmFwKCkgZmFpbGVkOiAiKTsKKyAgbWFqb3Jfc3RhdHVzID0gZ3NzX3Vud3JhcCgmbWlub3Jfc3RhdHVzLCBrcmI1LT5jb250ZXh0LCAmaW5wdXRfdG9rZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm91dHB1dF90b2tlbiwgTlVMTCwgJnFvcCk7CisgIGlmKEdTU19FUlJPUihtYWpvcl9zdGF0dXMpKSB7CisgICAgQ3VybF9nc3NfbG9nX2Vycm9yKGRhdGEsICJnc3NfdW53cmFwKCkgZmFpbGVkOiAiLAorICAgICAgICAgICAgICAgICAgICAgICBtYWpvcl9zdGF0dXMsIG1pbm9yX3N0YXR1cyk7CiAKLSAgICBnc3NfcmVsZWFzZV9idWZmZXIoJmdzc19zdGF0dXMsICZ1c2VybmFtZV90b2tlbik7CisgICAgZ3NzX3JlbGVhc2VfYnVmZmVyKCZ1bnVzZWRfc3RhdHVzLCAmdXNlcm5hbWVfdG9rZW4pOwogICAgIGZyZWUoY2hsZyk7CiAKICAgICByZXR1cm4gQ1VSTEVfQkFEX0NPTlRFTlRfRU5DT0RJTkc7CkBAIC0yODAsNyArMjc0LDcgQEAKICAgaWYob3V0cHV0X3Rva2VuLmxlbmd0aCAhPSA0KSB7CiAgICAgaW5mb2YoZGF0YSwgIkdTU0FQSSBoYW5kc2hha2UgZmFpbHVyZSAoaW52YWxpZCBzZWN1cml0eSBkYXRhKVxuIik7CiAKLSAgICBnc3NfcmVsZWFzZV9idWZmZXIoJmdzc19zdGF0dXMsICZ1c2VybmFtZV90b2tlbik7CisgICAgZ3NzX3JlbGVhc2VfYnVmZmVyKCZ1bnVzZWRfc3RhdHVzLCAmdXNlcm5hbWVfdG9rZW4pOwogICAgIGZyZWUoY2hsZyk7CiAKICAgICByZXR1cm4gQ1VSTEVfQkFEX0NPTlRFTlRfRU5DT0RJTkc7CkBAIC0yODgsNyArMjgyLDcgQEAKIAogICAvKiBDb3B5IHRoZSBkYXRhIG91dCBhbmQgZnJlZSB0aGUgY2hhbGxlbmdlIGFzIGl0IGlzIG5vdCByZXF1aXJlZCBhbnltb3JlICovCiAgIG1lbWNweSgmaW5kYXRhLCBvdXRwdXRfdG9rZW4udmFsdWUsIDQpOwotICBnc3NfcmVsZWFzZV9idWZmZXIoJmdzc19zdGF0dXMsICZvdXRwdXRfdG9rZW4pOworICBnc3NfcmVsZWFzZV9idWZmZXIoJnVudXNlZF9zdGF0dXMsICZvdXRwdXRfdG9rZW4pOwogICBmcmVlKGNobGcpOwogCiAgIC8qIEV4dHJhY3QgdGhlIHNlY3VyaXR5IGxheWVyICovCkBAIC0yOTYsNyArMjkwLDcgQEAKICAgaWYoIShzZWNfbGF5ZXIgJiBHU1NBVVRIX1BfTk9ORSkpIHsKICAgICBpbmZvZihkYXRhLCAiR1NTQVBJIGhhbmRzaGFrZSBmYWlsdXJlIChpbnZhbGlkIHNlY3VyaXR5IGxheWVyKVxuIik7CiAKLSAgICBnc3NfcmVsZWFzZV9idWZmZXIoJmdzc19zdGF0dXMsICZ1c2VybmFtZV90b2tlbik7CisgICAgZ3NzX3JlbGVhc2VfYnVmZmVyKCZ1bnVzZWRfc3RhdHVzLCAmdXNlcm5hbWVfdG9rZW4pOwogCiAgICAgcmV0dXJuIENVUkxFX0JBRF9DT05URU5UX0VOQ09ESU5HOwogICB9CkBAIC0zMTQsMTQgKzMwOCwxNCBAQAogICBtZXNzYWdlbGVuID0gc2l6ZW9mKG91dGRhdGEpICsgdXNlcm5hbWVfdG9rZW4ubGVuZ3RoICsgMTsKICAgbWVzc2FnZSA9IG1hbGxvYyhtZXNzYWdlbGVuKTsKICAgaWYoIW1lc3NhZ2UpIHsKLSAgICBnc3NfcmVsZWFzZV9idWZmZXIoJmdzc19zdGF0dXMsICZ1c2VybmFtZV90b2tlbik7CisgICAgZ3NzX3JlbGVhc2VfYnVmZmVyKCZ1bnVzZWRfc3RhdHVzLCAmdXNlcm5hbWVfdG9rZW4pOwogCiAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CiAgIH0KIAogICAvKiBQb3B1bGF0ZSB0aGUgbWVzc2FnZSB3aXRoIHRoZSBzZWN1cml0eSBsYXllciwgY2xpZW50IHN1cHBvcnRlZCByZWNlaXZlCiAgICAgIG1lc3NhZ2Ugc2l6ZSBhbmQgYXV0aG9yaXphdGlvbiBpZGVudGl0eSBpbmNsdWRpbmcgdGhlIDB4MDAgYmFzZWQKLSAgICAgdGVybWluYXRvci4gTm90ZTogRGlzcGl0ZSBSRkM0NzUyIFNlY3Rpb24gMy4xIHN0YXRpbmcgIlRoZSBhdXRob3JpemF0aW9uCisgICAgIHRlcm1pbmF0b3IuIE5vdGU6IERlc3BpdGUgUkZDNDc1MiBTZWN0aW9uIDMuMSBzdGF0aW5nICJUaGUgYXV0aG9yaXphdGlvbgogICAgICBpZGVudGl0eSBpcyBub3QgdGVybWluYXRlZCB3aXRoIHRoZSB6ZXJvLXZhbHVlZCAoJXgwMCkgb2N0ZXQuIiBpdCBzZWVtcwogICAgICBuZWNlc3NhcnkgdG8gaW5jbHVkZSBpdC4gKi8KICAgb3V0ZGF0YSA9IGh0b25sKG1heF9zaXplKSB8IHNlY19sYXllcjsKQEAgLTMzMSwxOCArMzI1LDE5IEBACiAgIG1lc3NhZ2VbbWVzc2FnZWxlbiAtIDFdID0gJ1wwJzsKIAogICAvKiBGcmVlIHRoZSB1c2VybmFtZSB0b2tlbiBhcyBpdCBpcyBub3QgcmVxdWlyZWQgYW55bW9yZSAqLwotICBnc3NfcmVsZWFzZV9idWZmZXIoJmdzc19zdGF0dXMsICZ1c2VybmFtZV90b2tlbik7CisgIGdzc19yZWxlYXNlX2J1ZmZlcigmdW51c2VkX3N0YXR1cywgJnVzZXJuYW1lX3Rva2VuKTsKIAogICAvKiBTZXR1cCB0aGUgImF1dGhlbnRpY2F0aW9uIGRhdGEiIHNlY3VyaXR5IGJ1ZmZlciAqLwogICBpbnB1dF90b2tlbi52YWx1ZSA9IG1lc3NhZ2U7CiAgIGlucHV0X3Rva2VuLmxlbmd0aCA9IG1lc3NhZ2VsZW47CiAKICAgLyogRW5jcnlwdCB0aGUgZGF0YSAqLwotICBnc3NfbWFqb3Jfc3RhdHVzID0gZ3NzX3dyYXAoJmdzc19taW5vcl9zdGF0dXMsIGtyYjUtPmNvbnRleHQsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHU1NfQ19RT1BfREVGQVVMVCwgJmlucHV0X3Rva2VuLCBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm91dHB1dF90b2tlbik7Ci0gIGlmKEdTU19FUlJPUihnc3NfbWFqb3Jfc3RhdHVzKSkgewotICAgIEN1cmxfZ3NzX2xvZ19lcnJvcihkYXRhLCBnc3NfbWlub3Jfc3RhdHVzLCAiZ3NzX3dyYXAoKSBmYWlsZWQ6ICIpOworICBtYWpvcl9zdGF0dXMgPSBnc3Nfd3JhcCgmbWlub3Jfc3RhdHVzLCBrcmI1LT5jb250ZXh0LCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICBHU1NfQ19RT1BfREVGQVVMVCwgJmlucHV0X3Rva2VuLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmb3V0cHV0X3Rva2VuKTsKKyAgaWYoR1NTX0VSUk9SKG1ham9yX3N0YXR1cykpIHsKKyAgICBDdXJsX2dzc19sb2dfZXJyb3IoZGF0YSwgImdzc193cmFwKCkgZmFpbGVkOiAiLAorICAgICAgICAgICAgICAgICAgICAgICBtYWpvcl9zdGF0dXMsIG1pbm9yX3N0YXR1cyk7CiAKICAgICBmcmVlKG1lc3NhZ2UpOwogCkBAIC0zNTQsNyArMzQ5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dF90b2tlbi5sZW5ndGgsIG91dHB0ciwgb3V0bGVuKTsKIAogICAvKiBGcmVlIHRoZSBvdXRwdXQgYnVmZmVyICovCi0gIGdzc19yZWxlYXNlX2J1ZmZlcigmZ3NzX3N0YXR1cywgJm91dHB1dF90b2tlbik7CisgIGdzc19yZWxlYXNlX2J1ZmZlcigmdW51c2VkX3N0YXR1cywgJm91dHB1dF90b2tlbik7CiAKICAgLyogRnJlZSB0aGUgbWVzc2FnZSBidWZmZXIgKi8KICAgZnJlZShtZXNzYWdlKTsKQEAgLTM2MywxNiArMzU4LDE2IEBACiB9CiAKIC8qCi0gKiBDdXJsX3Nhc2xfZ3NzYXBpX2NsZWFudXAoKQorICogQ3VybF9hdXRoX2dzc2FwaV9jbGVhbnVwKCkKICAqCi0gKiBUaGlzIGlzIHVzZWQgdG8gY2xlYW4gdXAgdGhlIGdzc2FwaSBzcGVjaWZpYyBkYXRhLgorICogVGhpcyBpcyB1c2VkIHRvIGNsZWFuIHVwIHRoZSBHU1NBUEkgKEtlcmJlcm9zIFY1KSBzcGVjaWZpYyBkYXRhLgogICoKICAqIFBhcmFtZXRlcnM6CiAgKgotICoga3JiNSAgICAgW2luL291dF0gLSBUaGUga2VyYmVyb3MgNSBkYXRhIHN0cnVjdCBiZWluZyBjbGVhbmVkIHVwLgorICoga3JiNSAgICAgW2luL291dF0gLSBUaGUgS2VyYmVyb3MgNSBkYXRhIHN0cnVjdCBiZWluZyBjbGVhbmVkIHVwLgogICoKICAqLwotdm9pZCBDdXJsX3Nhc2xfZ3NzYXBpX2NsZWFudXAoc3RydWN0IGtlcmJlcm9zNWRhdGEgKmtyYjUpCit2b2lkIEN1cmxfYXV0aF9nc3NhcGlfY2xlYW51cChzdHJ1Y3Qga2VyYmVyb3M1ZGF0YSAqa3JiNSkKIHsKICAgT01fdWludDMyIG1pbm9yX3N0YXR1czsKIApkaWZmIC0tZ2l0IGEvbGliL3ZhdXRoL2tyYjVfc3NwaS5jIGIvbGliL3ZhdXRoL2tyYjVfc3NwaS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmNTZhNjQKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvdmF1dGgva3JiNV9zc3BpLmMKQEAgLTAsMCArMSw0OTYgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKyAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorICoKKyAqIENvcHlyaWdodCAoQykgMjAxNCAtIDIwMTYsIFN0ZXZlIEhvbG1lLCA8c3RldmVfaG9sbWVAaG90bWFpbC5jb20+LgorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqCisgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICoKKyAqIFJGQzQ3NTIgVGhlIEtlcmJlcm9zIFY1ICgiR1NTQVBJIikgU0FTTCBNZWNoYW5pc20KKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaW5jbHVkZSAiY3VybF9zZXR1cC5oIgorCisjaWYgZGVmaW5lZChVU0VfV0lORE9XU19TU1BJKSAmJiBkZWZpbmVkKFVTRV9LRVJCRVJPUzUpCisKKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKworI2luY2x1ZGUgInZhdXRoL3ZhdXRoLmgiCisjaW5jbHVkZSAidXJsZGF0YS5oIgorI2luY2x1ZGUgImN1cmxfYmFzZTY0LmgiCisjaW5jbHVkZSAid2Fybmxlc3MuaCIKKyNpbmNsdWRlICJjdXJsX211bHRpYnl0ZS5oIgorI2luY2x1ZGUgInNlbmRmLmgiCisKKy8qIFRoZSBsYXN0ICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZTogKi8KKyNpbmNsdWRlICJjdXJsX21lbW9yeS5oIgorI2luY2x1ZGUgIm1lbWRlYnVnLmgiCisKKy8qCisgKiBDdXJsX2F1dGhfY3JlYXRlX2dzc2FwaV91c2VyX21lc3NhZ2UoKQorICoKKyAqIFRoaXMgaXMgdXNlZCB0byBnZW5lcmF0ZSBhbiBhbHJlYWR5IGVuY29kZWQgR1NTQVBJIChLZXJiZXJvcyBWNSkgdXNlciB0b2tlbgorICogbWVzc2FnZSByZWFkeSBmb3Igc2VuZGluZyB0byB0aGUgcmVjaXBpZW50LgorICoKKyAqIFBhcmFtZXRlcnM6CisgKgorICogZGF0YSAgICAgICAgW2luXSAgICAgLSBUaGUgc2Vzc2lvbiBoYW5kbGUuCisgKiB1c2VycCAgICAgICBbaW5dICAgICAtIFRoZSB1c2VyIG5hbWUgaW4gdGhlIGZvcm1hdCBVc2VyIG9yIERvbWFpblxVc2VyLgorICogcGFzc2R3cCAgICAgW2luXSAgICAgLSBUaGUgdXNlcidzIHBhc3N3b3JkLgorICogc2VydmljZSAgICAgW2luXSAgICAgLSBUaGUgc2VydmljZSB0eXBlIHN1Y2ggYXMgaHR0cCwgc210cCwgcG9wIG9yIGltYXAuCisgKiBob3N0ICAgICAgICBbaW5dICAgICAtIFRoZSBob3N0IG5hbWUuCisgKiBtdXR1YWxfYXV0aCBbaW5dICAgICAtIEZsYWcgc3BlY2lmaW5nIHdoZXRoZXIgb3Igbm90IG11dHVhbCBhdXRoZW50aWNhdGlvbgorICogICAgICAgICAgICAgICAgICAgICAgICBpcyBlbmFibGVkLgorICogY2hsZzY0ICAgICAgW2luXSAgICAgLSBUaGUgb3B0aW9uYWwgYmFzZTY0IGVuY29kZWQgY2hhbGxlbmdlIG1lc3NhZ2UuCisgKiBrcmI1ICAgICAgICBbaW4vb3V0XSAtIFRoZSBLZXJiZXJvcyA1IGRhdGEgc3RydWN0IGJlaW5nIHVzZWQgYW5kIG1vZGlmaWVkLgorICogb3V0cHRyICAgICAgW2luL291dF0gLSBUaGUgYWRkcmVzcyB3aGVyZSBhIHBvaW50ZXIgdG8gbmV3bHkgYWxsb2NhdGVkIG1lbW9yeQorICogICAgICAgICAgICAgICAgICAgICAgICBob2xkaW5nIHRoZSByZXN1bHQgd2lsbCBiZSBzdG9yZWQgdXBvbiBjb21wbGV0aW9uLgorICogb3V0bGVuICAgICAgW291dF0gICAgLSBUaGUgbGVuZ3RoIG9mIHRoZSBvdXRwdXQgbWVzc2FnZS4KKyAqCisgKiBSZXR1cm5zIENVUkxFX09LIG9uIHN1Y2Nlc3MuCisgKi8KK0NVUkxjb2RlIEN1cmxfYXV0aF9jcmVhdGVfZ3NzYXBpX3VzZXJfbWVzc2FnZShzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp1c2VycCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwYXNzd2RwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNlcnZpY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqaG9zdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBib29sIG11dHVhbF9hdXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNobGc2NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qga2VyYmVyb3M1ZGF0YSAqa3JiNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqb3V0cHRyLCBzaXplX3QgKm91dGxlbikKK3sKKyAgQ1VSTGNvZGUgcmVzdWx0ID0gQ1VSTEVfT0s7CisgIHNpemVfdCBjaGxnbGVuID0gMDsKKyAgdW5zaWduZWQgY2hhciAqY2hsZyA9IE5VTEw7CisgIEN0eHRIYW5kbGUgY29udGV4dDsKKyAgUFNlY1BrZ0luZm8gU2VjdXJpdHlQYWNrYWdlOworICBTZWNCdWZmZXIgY2hsZ19idWY7CisgIFNlY0J1ZmZlciByZXNwX2J1ZjsKKyAgU2VjQnVmZmVyRGVzYyBjaGxnX2Rlc2M7CisgIFNlY0J1ZmZlckRlc2MgcmVzcF9kZXNjOworICBTRUNVUklUWV9TVEFUVVMgc3RhdHVzOworICB1bnNpZ25lZCBsb25nIGF0dHJzOworICBUaW1lU3RhbXAgZXhwaXJ5OyAvKiBGb3IgV2luZG93cyA5eCBjb21wYXRpYmlsaXR5IG9mIFNTUEkgY2FsbHMgKi8KKworICBpZigha3JiNS0+c3BuKSB7CisgICAgLyogR2VuZXJhdGUgb3VyIFNQTiAqLworICAgIGtyYjUtPnNwbiA9IEN1cmxfYXV0aF9idWlsZF9zcG4oc2VydmljZSwgaG9zdCwgTlVMTCk7CisgICAgaWYoIWtyYjUtPnNwbikKKyAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworICB9CisKKyAgaWYoIWtyYjUtPm91dHB1dF90b2tlbikgeworICAgIC8qIFF1ZXJ5IHRoZSBzZWN1cml0eSBwYWNrYWdlIGZvciBLZXJiZXJvcyAqLworICAgIHN0YXR1cyA9IHNfcFNlY0ZuLT5RdWVyeVNlY3VyaXR5UGFja2FnZUluZm8oKFRDSEFSICopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBURVhUKFNQX05BTUVfS0VSQkVST1MpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlNlY3VyaXR5UGFja2FnZSk7CisgICAgaWYoc3RhdHVzICE9IFNFQ19FX09LKSB7CisgICAgICByZXR1cm4gQ1VSTEVfTk9UX0JVSUxUX0lOOworICAgIH0KKworICAgIGtyYjUtPnRva2VuX21heCA9IFNlY3VyaXR5UGFja2FnZS0+Y2JNYXhUb2tlbjsKKworICAgIC8qIFJlbGVhc2UgdGhlIHBhY2thZ2UgYnVmZmVyIGFzIGl0IGlzIG5vdCByZXF1aXJlZCBhbnltb3JlICovCisgICAgc19wU2VjRm4tPkZyZWVDb250ZXh0QnVmZmVyKFNlY3VyaXR5UGFja2FnZSk7CisKKyAgICAvKiBBbGxvY2F0ZSBvdXIgcmVzcG9uc2UgYnVmZmVyICovCisgICAga3JiNS0+b3V0cHV0X3Rva2VuID0gbWFsbG9jKGtyYjUtPnRva2VuX21heCk7CisgICAgaWYoIWtyYjUtPm91dHB1dF90b2tlbikKKyAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworICB9CisKKyAgaWYoIWtyYjUtPmNyZWRlbnRpYWxzKSB7CisgICAgLyogRG8gd2UgaGF2ZSBjcmVkaWVudGlhbHMgdG8gdXNlIG9yIGFyZSB3ZSB1c2luZyBzaW5nbGUgc2lnbi1vbj8gKi8KKyAgICBpZih1c2VycCAmJiAqdXNlcnApIHsKKyAgICAgIC8qIFBvcHVsYXRlIG91ciBpZGVudGl0eSBzdHJ1Y3R1cmUgKi8KKyAgICAgIHJlc3VsdCA9IEN1cmxfY3JlYXRlX3NzcGlfaWRlbnRpdHkodXNlcnAsIHBhc3N3ZHAsICZrcmI1LT5pZGVudGl0eSk7CisgICAgICBpZihyZXN1bHQpCisgICAgICAgIHJldHVybiByZXN1bHQ7CisKKyAgICAgIC8qIEFsbG93IHByb3BlciBjbGVhbnVwIG9mIHRoZSBpZGVudGl0eSBzdHJ1Y3R1cmUgKi8KKyAgICAgIGtyYjUtPnBfaWRlbnRpdHkgPSAma3JiNS0+aWRlbnRpdHk7CisgICAgfQorICAgIGVsc2UKKyAgICAgIC8qIFVzZSB0aGUgY3VycmVudCBXaW5kb3dzIHVzZXIgKi8KKyAgICAgIGtyYjUtPnBfaWRlbnRpdHkgPSBOVUxMOworCisgICAgLyogQWxsb2NhdGUgb3VyIGNyZWRlbnRpYWxzIGhhbmRsZSAqLworICAgIGtyYjUtPmNyZWRlbnRpYWxzID0gbWFsbG9jKHNpemVvZihDcmVkSGFuZGxlKSk7CisgICAgaWYoIWtyYjUtPmNyZWRlbnRpYWxzKQorICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisKKyAgICBtZW1zZXQoa3JiNS0+Y3JlZGVudGlhbHMsIDAsIHNpemVvZihDcmVkSGFuZGxlKSk7CisKKyAgICAvKiBBY3F1aXJlIG91ciBjcmVkZW50aWFscyBoYW5kbGUgKi8KKyAgICBzdGF0dXMgPSBzX3BTZWNGbi0+QWNxdWlyZUNyZWRlbnRpYWxzSGFuZGxlKE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVENIQVIgKikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRFWFQoU1BfTkFNRV9LRVJCRVJPUyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRUNQS0dfQ1JFRF9PVVRCT1VORCwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtyYjUtPnBfaWRlbnRpdHksIE5VTEwsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrcmI1LT5jcmVkZW50aWFscywgJmV4cGlyeSk7CisgICAgaWYoc3RhdHVzICE9IFNFQ19FX09LKQorICAgICAgcmV0dXJuIENVUkxFX0xPR0lOX0RFTklFRDsKKworICAgIC8qIEFsbG9jYXRlIG91ciBuZXcgY29udGV4dCBoYW5kbGUgKi8KKyAgICBrcmI1LT5jb250ZXh0ID0gbWFsbG9jKHNpemVvZihDdHh0SGFuZGxlKSk7CisgICAgaWYoIWtyYjUtPmNvbnRleHQpCisgICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKworICAgIG1lbXNldChrcmI1LT5jb250ZXh0LCAwLCBzaXplb2YoQ3R4dEhhbmRsZSkpOworICB9CisKKyAgaWYoY2hsZzY0ICYmICpjaGxnNjQpIHsKKyAgICAvKiBEZWNvZGUgdGhlIGJhc2UtNjQgZW5jb2RlZCBjaGFsbGVuZ2UgbWVzc2FnZSAqLworICAgIGlmKCpjaGxnNjQgIT0gJz0nKSB7CisgICAgICByZXN1bHQgPSBDdXJsX2Jhc2U2NF9kZWNvZGUoY2hsZzY0LCAmY2hsZywgJmNobGdsZW4pOworICAgICAgaWYocmVzdWx0KQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIC8qIEVuc3VyZSB3ZSBoYXZlIGEgdmFsaWQgY2hhbGxlbmdlIG1lc3NhZ2UgKi8KKyAgICBpZighY2hsZykgeworICAgICAgaW5mb2YoZGF0YSwgIkdTU0FQSSBoYW5kc2hha2UgZmFpbHVyZSAoZW1wdHkgY2hhbGxlbmdlIG1lc3NhZ2UpXG4iKTsKKworICAgICAgcmV0dXJuIENVUkxFX0JBRF9DT05URU5UX0VOQ09ESU5HOworICAgIH0KKworICAgIC8qIFNldHVwIHRoZSBjaGFsbGVuZ2UgImlucHV0IiBzZWN1cml0eSBidWZmZXIgKi8KKyAgICBjaGxnX2Rlc2MudWxWZXJzaW9uID0gU0VDQlVGRkVSX1ZFUlNJT047CisgICAgY2hsZ19kZXNjLmNCdWZmZXJzICA9IDE7CisgICAgY2hsZ19kZXNjLnBCdWZmZXJzICA9ICZjaGxnX2J1ZjsKKyAgICBjaGxnX2J1Zi5CdWZmZXJUeXBlID0gU0VDQlVGRkVSX1RPS0VOOworICAgIGNobGdfYnVmLnB2QnVmZmVyICAgPSBjaGxnOworICAgIGNobGdfYnVmLmNiQnVmZmVyICAgPSBjdXJseF91enRvdWwoY2hsZ2xlbik7CisgIH0KKworICAvKiBTZXR1cCB0aGUgcmVzcG9uc2UgIm91dHB1dCIgc2VjdXJpdHkgYnVmZmVyICovCisgIHJlc3BfZGVzYy51bFZlcnNpb24gPSBTRUNCVUZGRVJfVkVSU0lPTjsKKyAgcmVzcF9kZXNjLmNCdWZmZXJzICA9IDE7CisgIHJlc3BfZGVzYy5wQnVmZmVycyAgPSAmcmVzcF9idWY7CisgIHJlc3BfYnVmLkJ1ZmZlclR5cGUgPSBTRUNCVUZGRVJfVE9LRU47CisgIHJlc3BfYnVmLnB2QnVmZmVyICAgPSBrcmI1LT5vdXRwdXRfdG9rZW47CisgIHJlc3BfYnVmLmNiQnVmZmVyICAgPSBjdXJseF91enRvdWwoa3JiNS0+dG9rZW5fbWF4KTsKKworICAvKiBHZW5lcmF0ZSBvdXIgY2hhbGxlbmdlLXJlc3BvbnNlIG1lc3NhZ2UgKi8KKyAgc3RhdHVzID0gc19wU2VjRm4tPkluaXRpYWxpemVTZWN1cml0eUNvbnRleHQoa3JiNS0+Y3JlZGVudGlhbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNobGcgPyBrcmI1LT5jb250ZXh0IDogTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3JiNS0+c3BuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobXV0dWFsX2F1dGggPworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVNDX1JFUV9NVVRVQUxfQVVUSCA6IDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBTRUNVUklUWV9OQVRJVkVfRFJFUCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hsZyA/ICZjaGxnX2Rlc2MgOiBOVUxMLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlc3BfZGVzYywgJmF0dHJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXhwaXJ5KTsKKworICAvKiBGcmVlIHRoZSBkZWNvZGVkIGNoYWxsZW5nZSBhcyBpdCBpcyBub3QgcmVxdWlyZWQgYW55bW9yZSAqLworICBmcmVlKGNobGcpOworCisgIGlmKHN0YXR1cyAhPSBTRUNfRV9PSyAmJiBzdGF0dXMgIT0gU0VDX0lfQ09OVElOVUVfTkVFREVEKSB7CisgICAgcmV0dXJuIENVUkxFX1JFQ1ZfRVJST1I7CisgIH0KKworICBpZihtZW1jbXAoJmNvbnRleHQsIGtyYjUtPmNvbnRleHQsIHNpemVvZihjb250ZXh0KSkpIHsKKyAgICBzX3BTZWNGbi0+RGVsZXRlU2VjdXJpdHlDb250ZXh0KGtyYjUtPmNvbnRleHQpOworCisgICAgbWVtY3B5KGtyYjUtPmNvbnRleHQsICZjb250ZXh0LCBzaXplb2YoY29udGV4dCkpOworICB9CisKKyAgaWYocmVzcF9idWYuY2JCdWZmZXIpIHsKKyAgICAvKiBCYXNlNjQgZW5jb2RlIHRoZSByZXNwb25zZSAqLworICAgIHJlc3VsdCA9IEN1cmxfYmFzZTY0X2VuY29kZShkYXRhLCAoY2hhciAqKSByZXNwX2J1Zi5wdkJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcF9idWYuY2JCdWZmZXIsIG91dHB0ciwgb3V0bGVuKTsKKyAgfQorICBlbHNlIGlmKG11dHVhbF9hdXRoKSB7CisgICAgKm91dHB0ciA9IHN0cmR1cCgiIik7CisgICAgaWYoISpvdXRwdHIpCisgICAgICByZXN1bHQgPSBDVVJMRV9PVVRfT0ZfTUVNT1JZOworICB9CisKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworLyoKKyAqIEN1cmxfYXV0aF9jcmVhdGVfZ3NzYXBpX3NlY3VyaXR5X21lc3NhZ2UoKQorICoKKyAqIFRoaXMgaXMgdXNlZCB0byBnZW5lcmF0ZSBhbiBhbHJlYWR5IGVuY29kZWQgR1NTQVBJIChLZXJiZXJvcyBWNSkgc2VjdXJpdHkKKyAqIHRva2VuIG1lc3NhZ2UgcmVhZHkgZm9yIHNlbmRpbmcgdG8gdGhlIHJlY2lwaWVudC4KKyAqCisgKiBQYXJhbWV0ZXJzOgorICoKKyAqIGRhdGEgICAgW2luXSAgICAgLSBUaGUgc2Vzc2lvbiBoYW5kbGUuCisgKiBjaGxnNjQgIFtpbl0gICAgIC0gVGhlIG9wdGlvbmFsIGJhc2U2NCBlbmNvZGVkIGNoYWxsZW5nZSBtZXNzYWdlLgorICoga3JiNSAgICBbaW4vb3V0XSAtIFRoZSBLZXJiZXJvcyA1IGRhdGEgc3RydWN0IGJlaW5nIHVzZWQgYW5kIG1vZGlmaWVkLgorICogb3V0cHRyICBbaW4vb3V0XSAtIFRoZSBhZGRyZXNzIHdoZXJlIGEgcG9pbnRlciB0byBuZXdseSBhbGxvY2F0ZWQgbWVtb3J5CisgKiAgICAgICAgICAgICAgICAgICAgaG9sZGluZyB0aGUgcmVzdWx0IHdpbGwgYmUgc3RvcmVkIHVwb24gY29tcGxldGlvbi4KKyAqIG91dGxlbiAgW291dF0gICAgLSBUaGUgbGVuZ3RoIG9mIHRoZSBvdXRwdXQgbWVzc2FnZS4KKyAqCisgKiBSZXR1cm5zIENVUkxFX09LIG9uIHN1Y2Nlc3MuCisgKi8KK0NVUkxjb2RlIEN1cmxfYXV0aF9jcmVhdGVfZ3NzYXBpX3NlY3VyaXR5X21lc3NhZ2Uoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNobGc2NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGtlcmJlcm9zNWRhdGEgKmtyYjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipvdXRwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqb3V0bGVuKQoreworICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKKyAgc2l6ZV90IG9mZnNldCA9IDA7CisgIHNpemVfdCBjaGxnbGVuID0gMDsKKyAgc2l6ZV90IG1lc3NhZ2VsZW4gPSAwOworICBzaXplX3QgYXBwZGF0YWxlbiA9IDA7CisgIHVuc2lnbmVkIGNoYXIgKmNobGcgPSBOVUxMOworICB1bnNpZ25lZCBjaGFyICp0cmFpbGVyID0gTlVMTDsKKyAgdW5zaWduZWQgY2hhciAqbWVzc2FnZSA9IE5VTEw7CisgIHVuc2lnbmVkIGNoYXIgKnBhZGRpbmcgPSBOVUxMOworICB1bnNpZ25lZCBjaGFyICphcHBkYXRhID0gTlVMTDsKKyAgU2VjQnVmZmVyIGlucHV0X2J1ZlsyXTsKKyAgU2VjQnVmZmVyIHdyYXBfYnVmWzNdOworICBTZWNCdWZmZXJEZXNjIGlucHV0X2Rlc2M7CisgIFNlY0J1ZmZlckRlc2Mgd3JhcF9kZXNjOworICB1bnNpZ25lZCBsb25nIGluZGF0YSA9IDA7CisgIHVuc2lnbmVkIGxvbmcgb3V0ZGF0YSA9IDA7CisgIHVuc2lnbmVkIGxvbmcgcW9wID0gMDsKKyAgdW5zaWduZWQgbG9uZyBzZWNfbGF5ZXIgPSAwOworICB1bnNpZ25lZCBsb25nIG1heF9zaXplID0gMDsKKyAgU2VjUGtnQ29udGV4dF9TaXplcyBzaXplczsKKyAgU2VjUGtnQ3JlZGVudGlhbHNfTmFtZXMgbmFtZXM7CisgIFNFQ1VSSVRZX1NUQVRVUyBzdGF0dXM7CisgIGNoYXIgKnVzZXJfbmFtZTsKKworICAvKiBEZWNvZGUgdGhlIGJhc2UtNjQgZW5jb2RlZCBpbnB1dCBtZXNzYWdlICovCisgIGlmKHN0cmxlbihjaGxnNjQpICYmICpjaGxnNjQgIT0gJz0nKSB7CisgICAgcmVzdWx0ID0gQ3VybF9iYXNlNjRfZGVjb2RlKGNobGc2NCwgJmNobGcsICZjaGxnbGVuKTsKKyAgICBpZihyZXN1bHQpCisgICAgICByZXR1cm4gcmVzdWx0OworICB9CisKKyAgLyogRW5zdXJlIHdlIGhhdmUgYSB2YWxpZCBjaGFsbGVuZ2UgbWVzc2FnZSAqLworICBpZighY2hsZykgeworICAgIGluZm9mKGRhdGEsICJHU1NBUEkgaGFuZHNoYWtlIGZhaWx1cmUgKGVtcHR5IHNlY3VyaXR5IG1lc3NhZ2UpXG4iKTsKKworICAgIHJldHVybiBDVVJMRV9CQURfQ09OVEVOVF9FTkNPRElORzsKKyAgfQorCisgIC8qIEdldCBvdXIgcmVzcG9uc2Ugc2l6ZSBpbmZvcm1hdGlvbiAqLworICBzdGF0dXMgPSBzX3BTZWNGbi0+UXVlcnlDb250ZXh0QXR0cmlidXRlcyhrcmI1LT5jb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRUNQS0dfQVRUUl9TSVpFUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNpemVzKTsKKyAgaWYoc3RhdHVzICE9IFNFQ19FX09LKSB7CisgICAgZnJlZShjaGxnKTsKKworICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworICB9CisKKyAgLyogR2V0IHRoZSBmdWxseSBxdWFsaWZpZWQgdXNlcm5hbWUgYmFjayBmcm9tIHRoZSBjb250ZXh0ICovCisgIHN0YXR1cyA9IHNfcFNlY0ZuLT5RdWVyeUNyZWRlbnRpYWxzQXR0cmlidXRlcyhrcmI1LT5jcmVkZW50aWFscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNFQ1BLR19DUkVEX0FUVFJfTkFNRVMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmFtZXMpOworICBpZihzdGF0dXMgIT0gU0VDX0VfT0spIHsKKyAgICBmcmVlKGNobGcpOworCisgICAgcmV0dXJuIENVUkxFX1JFQ1ZfRVJST1I7CisgIH0KKworICAvKiBTZXR1cCB0aGUgImlucHV0IiBzZWN1cml0eSBidWZmZXIgKi8KKyAgaW5wdXRfZGVzYy51bFZlcnNpb24gPSBTRUNCVUZGRVJfVkVSU0lPTjsKKyAgaW5wdXRfZGVzYy5jQnVmZmVycyA9IDI7CisgIGlucHV0X2Rlc2MucEJ1ZmZlcnMgPSBpbnB1dF9idWY7CisgIGlucHV0X2J1ZlswXS5CdWZmZXJUeXBlID0gU0VDQlVGRkVSX1NUUkVBTTsKKyAgaW5wdXRfYnVmWzBdLnB2QnVmZmVyID0gY2hsZzsKKyAgaW5wdXRfYnVmWzBdLmNiQnVmZmVyID0gY3VybHhfdXp0b3VsKGNobGdsZW4pOworICBpbnB1dF9idWZbMV0uQnVmZmVyVHlwZSA9IFNFQ0JVRkZFUl9EQVRBOworICBpbnB1dF9idWZbMV0ucHZCdWZmZXIgPSBOVUxMOworICBpbnB1dF9idWZbMV0uY2JCdWZmZXIgPSAwOworCisgIC8qIERlY3J5cHQgdGhlIGluYm91bmQgY2hhbGxlbmdlIGFuZCBvYnRhaW4gdGhlIHFvcCAqLworICBzdGF0dXMgPSBzX3BTZWNGbi0+RGVjcnlwdE1lc3NhZ2Uoa3JiNS0+Y29udGV4dCwgJmlucHV0X2Rlc2MsIDAsICZxb3ApOworICBpZihzdGF0dXMgIT0gU0VDX0VfT0spIHsKKyAgICBpbmZvZihkYXRhLCAiR1NTQVBJIGhhbmRzaGFrZSBmYWlsdXJlIChlbXB0eSBzZWN1cml0eSBtZXNzYWdlKVxuIik7CisKKyAgICBmcmVlKGNobGcpOworCisgICAgcmV0dXJuIENVUkxFX0JBRF9DT05URU5UX0VOQ09ESU5HOworICB9CisKKyAgLyogTm90IDQgb2N0ZXRzIGxvbmcgc28gZmFpbCBhcyBwZXIgUkZDNDc1MiBTZWN0aW9uIDMuMSAqLworICBpZihpbnB1dF9idWZbMV0uY2JCdWZmZXIgIT0gNCkgeworICAgIGluZm9mKGRhdGEsICJHU1NBUEkgaGFuZHNoYWtlIGZhaWx1cmUgKGludmFsaWQgc2VjdXJpdHkgZGF0YSlcbiIpOworCisgICAgZnJlZShjaGxnKTsKKworICAgIHJldHVybiBDVVJMRV9CQURfQ09OVEVOVF9FTkNPRElORzsKKyAgfQorCisgIC8qIENvcHkgdGhlIGRhdGEgb3V0IGFuZCBmcmVlIHRoZSBjaGFsbGVuZ2UgYXMgaXQgaXMgbm90IHJlcXVpcmVkIGFueW1vcmUgKi8KKyAgbWVtY3B5KCZpbmRhdGEsIGlucHV0X2J1ZlsxXS5wdkJ1ZmZlciwgNCk7CisgIHNfcFNlY0ZuLT5GcmVlQ29udGV4dEJ1ZmZlcihpbnB1dF9idWZbMV0ucHZCdWZmZXIpOworICBmcmVlKGNobGcpOworCisgIC8qIEV4dHJhY3QgdGhlIHNlY3VyaXR5IGxheWVyICovCisgIHNlY19sYXllciA9IGluZGF0YSAmIDB4MDAwMDAwRkY7CisgIGlmKCEoc2VjX2xheWVyICYgS0VSQl9XUkFQX05PX0VOQ1JZUFQpKSB7CisgICAgaW5mb2YoZGF0YSwgIkdTU0FQSSBoYW5kc2hha2UgZmFpbHVyZSAoaW52YWxpZCBzZWN1cml0eSBsYXllcilcbiIpOworCisgICAgcmV0dXJuIENVUkxFX0JBRF9DT05URU5UX0VOQ09ESU5HOworICB9CisKKyAgLyogRXh0cmFjdCB0aGUgbWF4aW11bSBtZXNzYWdlIHNpemUgdGhlIHNlcnZlciBjYW4gcmVjZWl2ZSAqLworICBtYXhfc2l6ZSA9IG50b2hsKGluZGF0YSAmIDB4RkZGRkZGMDApOworICBpZihtYXhfc2l6ZSA+IDApIHsKKyAgICAvKiBUaGUgc2VydmVyIGhhcyB0b2xkIHVzIGl0IHN1cHBvcnRzIGEgbWF4aW11bSByZWNlaXZlIGJ1ZmZlciwgaG93ZXZlciwgYXMKKyAgICAgICB3ZSBkb24ndCByZXF1aXJlIG9uZSB1bmxlc3Mgd2UgYXJlIGVuY3J5cHRpbmcgZGF0YSwgd2UgdGVsbCB0aGUgc2VydmVyCisgICAgICAgb3VyIHJlY2VpdmUgYnVmZmVyIGlzIHplcm8uICovCisgICAgbWF4X3NpemUgPSAwOworICB9CisKKyAgLyogQWxsb2NhdGUgdGhlIHRyYWlsZXIgKi8KKyAgdHJhaWxlciA9IG1hbGxvYyhzaXplcy5jYlNlY3VyaXR5VHJhaWxlcik7CisgIGlmKCF0cmFpbGVyKQorICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworCisgIC8qIENvbnZlcnQgdGhlIHVzZXIgbmFtZSB0byBVVEY4IHdoZW4gb3BlcmF0aW5nIHdpdGggVW5pY29kZSAqLworICB1c2VyX25hbWUgPSBDdXJsX2NvbnZlcnRfdGNoYXJfdG9fVVRGOChuYW1lcy5zVXNlck5hbWUpOworICBpZighdXNlcl9uYW1lKSB7CisgICAgZnJlZSh0cmFpbGVyKTsKKworICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworICB9CisKKyAgLyogQWxsb2NhdGUgb3VyIG1lc3NhZ2UgKi8KKyAgbWVzc2FnZWxlbiA9IHNpemVvZihvdXRkYXRhKSArIHN0cmxlbih1c2VyX25hbWUpICsgMTsKKyAgbWVzc2FnZSA9IG1hbGxvYyhtZXNzYWdlbGVuKTsKKyAgaWYoIW1lc3NhZ2UpIHsKKyAgICBmcmVlKHRyYWlsZXIpOworICAgIEN1cmxfdW5pY29kZWZyZWUodXNlcl9uYW1lKTsKKworICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworICB9CisKKyAgLyogUG9wdWxhdGUgdGhlIG1lc3NhZ2Ugd2l0aCB0aGUgc2VjdXJpdHkgbGF5ZXIsIGNsaWVudCBzdXBwb3J0ZWQgcmVjZWl2ZQorICAgICBtZXNzYWdlIHNpemUgYW5kIGF1dGhvcml6YXRpb24gaWRlbnRpdHkgaW5jbHVkaW5nIHRoZSAweDAwIGJhc2VkCisgICAgIHRlcm1pbmF0b3IuIE5vdGU6IERlc3BpdGUgUkZDNDc1MiBTZWN0aW9uIDMuMSBzdGF0aW5nICJUaGUgYXV0aG9yaXphdGlvbgorICAgICBpZGVudGl0eSBpcyBub3QgdGVybWluYXRlZCB3aXRoIHRoZSB6ZXJvLXZhbHVlZCAoJXgwMCkgb2N0ZXQuIiBpdCBzZWVtcworICAgICBuZWNlc3NhcnkgdG8gaW5jbHVkZSBpdC4gKi8KKyAgb3V0ZGF0YSA9IGh0b25sKG1heF9zaXplKSB8IHNlY19sYXllcjsKKyAgbWVtY3B5KG1lc3NhZ2UsICZvdXRkYXRhLCBzaXplb2Yob3V0ZGF0YSkpOworICBzdHJjcHkoKGNoYXIgKikgbWVzc2FnZSArIHNpemVvZihvdXRkYXRhKSwgdXNlcl9uYW1lKTsKKyAgQ3VybF91bmljb2RlZnJlZSh1c2VyX25hbWUpOworCisgIC8qIEFsbG9jYXRlIHRoZSBwYWRkaW5nICovCisgIHBhZGRpbmcgPSBtYWxsb2Moc2l6ZXMuY2JCbG9ja1NpemUpOworICBpZighcGFkZGluZykgeworICAgIGZyZWUobWVzc2FnZSk7CisgICAgZnJlZSh0cmFpbGVyKTsKKworICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworICB9CisKKyAgLyogU2V0dXAgdGhlICJhdXRoZW50aWNhdGlvbiBkYXRhIiBzZWN1cml0eSBidWZmZXIgKi8KKyAgd3JhcF9kZXNjLnVsVmVyc2lvbiAgICA9IFNFQ0JVRkZFUl9WRVJTSU9OOworICB3cmFwX2Rlc2MuY0J1ZmZlcnMgICAgID0gMzsKKyAgd3JhcF9kZXNjLnBCdWZmZXJzICAgICA9IHdyYXBfYnVmOworICB3cmFwX2J1ZlswXS5CdWZmZXJUeXBlID0gU0VDQlVGRkVSX1RPS0VOOworICB3cmFwX2J1ZlswXS5wdkJ1ZmZlciAgID0gdHJhaWxlcjsKKyAgd3JhcF9idWZbMF0uY2JCdWZmZXIgICA9IHNpemVzLmNiU2VjdXJpdHlUcmFpbGVyOworICB3cmFwX2J1ZlsxXS5CdWZmZXJUeXBlID0gU0VDQlVGRkVSX0RBVEE7CisgIHdyYXBfYnVmWzFdLnB2QnVmZmVyICAgPSBtZXNzYWdlOworICB3cmFwX2J1ZlsxXS5jYkJ1ZmZlciAgID0gY3VybHhfdXp0b3VsKG1lc3NhZ2VsZW4pOworICB3cmFwX2J1ZlsyXS5CdWZmZXJUeXBlID0gU0VDQlVGRkVSX1BBRERJTkc7CisgIHdyYXBfYnVmWzJdLnB2QnVmZmVyICAgPSBwYWRkaW5nOworICB3cmFwX2J1ZlsyXS5jYkJ1ZmZlciAgID0gc2l6ZXMuY2JCbG9ja1NpemU7CisKKyAgLyogRW5jcnlwdCB0aGUgZGF0YSAqLworICBzdGF0dXMgPSBzX3BTZWNGbi0+RW5jcnlwdE1lc3NhZ2Uoa3JiNS0+Y29udGV4dCwgS0VSQl9XUkFQX05PX0VOQ1JZUFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmd3JhcF9kZXNjLCAwKTsKKyAgaWYoc3RhdHVzICE9IFNFQ19FX09LKSB7CisgICAgZnJlZShwYWRkaW5nKTsKKyAgICBmcmVlKG1lc3NhZ2UpOworICAgIGZyZWUodHJhaWxlcik7CisKKyAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKyAgfQorCisgIC8qIEFsbG9jYXRlIHRoZSBlbmNyeXB0aW9uICh3cmFwKSBidWZmZXIgKi8KKyAgYXBwZGF0YWxlbiA9IHdyYXBfYnVmWzBdLmNiQnVmZmVyICsgd3JhcF9idWZbMV0uY2JCdWZmZXIgKworICAgICAgICAgICAgICAgd3JhcF9idWZbMl0uY2JCdWZmZXI7CisgIGFwcGRhdGEgPSBtYWxsb2MoYXBwZGF0YWxlbik7CisgIGlmKCFhcHBkYXRhKSB7CisgICAgZnJlZShwYWRkaW5nKTsKKyAgICBmcmVlKG1lc3NhZ2UpOworICAgIGZyZWUodHJhaWxlcik7CisKKyAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKyAgfQorCisgIC8qIFBvcHVsYXRlIHRoZSBlbmNyeXB0aW9uIGJ1ZmZlciAqLworICBtZW1jcHkoYXBwZGF0YSwgd3JhcF9idWZbMF0ucHZCdWZmZXIsIHdyYXBfYnVmWzBdLmNiQnVmZmVyKTsKKyAgb2Zmc2V0ICs9IHdyYXBfYnVmWzBdLmNiQnVmZmVyOworICBtZW1jcHkoYXBwZGF0YSArIG9mZnNldCwgd3JhcF9idWZbMV0ucHZCdWZmZXIsIHdyYXBfYnVmWzFdLmNiQnVmZmVyKTsKKyAgb2Zmc2V0ICs9IHdyYXBfYnVmWzFdLmNiQnVmZmVyOworICBtZW1jcHkoYXBwZGF0YSArIG9mZnNldCwgd3JhcF9idWZbMl0ucHZCdWZmZXIsIHdyYXBfYnVmWzJdLmNiQnVmZmVyKTsKKworICAvKiBCYXNlNjQgZW5jb2RlIHRoZSByZXNwb25zZSAqLworICByZXN1bHQgPSBDdXJsX2Jhc2U2NF9lbmNvZGUoZGF0YSwgKGNoYXIgKikgYXBwZGF0YSwgYXBwZGF0YWxlbiwgb3V0cHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0bGVuKTsKKworICAvKiBGcmVlIGFsbCBvZiBvdXIgbG9jYWwgYnVmZmVycyAqLworICBmcmVlKGFwcGRhdGEpOworICBmcmVlKHBhZGRpbmcpOworICBmcmVlKG1lc3NhZ2UpOworICBmcmVlKHRyYWlsZXIpOworCisgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qCisgKiBDdXJsX2F1dGhfZ3NzYXBpX2NsZWFudXAoKQorICoKKyAqIFRoaXMgaXMgdXNlZCB0byBjbGVhbiB1cCB0aGUgR1NTQVBJIChLZXJiZXJvcyBWNSkgc3BlY2lmaWMgZGF0YS4KKyAqCisgKiBQYXJhbWV0ZXJzOgorICoKKyAqIGtyYjUgICAgIFtpbi9vdXRdIC0gVGhlIEtlcmJlcm9zIDUgZGF0YSBzdHJ1Y3QgYmVpbmcgY2xlYW5lZCB1cC4KKyAqCisgKi8KK3ZvaWQgQ3VybF9hdXRoX2dzc2FwaV9jbGVhbnVwKHN0cnVjdCBrZXJiZXJvczVkYXRhICprcmI1KQoreworICAvKiBGcmVlIG91ciBzZWN1cml0eSBjb250ZXh0ICovCisgIGlmKGtyYjUtPmNvbnRleHQpIHsKKyAgICBzX3BTZWNGbi0+RGVsZXRlU2VjdXJpdHlDb250ZXh0KGtyYjUtPmNvbnRleHQpOworICAgIGZyZWUoa3JiNS0+Y29udGV4dCk7CisgICAga3JiNS0+Y29udGV4dCA9IE5VTEw7CisgIH0KKworICAvKiBGcmVlIG91ciBjcmVkZW50aWFscyBoYW5kbGUgKi8KKyAgaWYoa3JiNS0+Y3JlZGVudGlhbHMpIHsKKyAgICBzX3BTZWNGbi0+RnJlZUNyZWRlbnRpYWxzSGFuZGxlKGtyYjUtPmNyZWRlbnRpYWxzKTsKKyAgICBmcmVlKGtyYjUtPmNyZWRlbnRpYWxzKTsKKyAgICBrcmI1LT5jcmVkZW50aWFscyA9IE5VTEw7CisgIH0KKworICAvKiBGcmVlIG91ciBpZGVudGl0eSAqLworICBDdXJsX3NzcGlfZnJlZV9pZGVudGl0eShrcmI1LT5wX2lkZW50aXR5KTsKKyAga3JiNS0+cF9pZGVudGl0eSA9IE5VTEw7CisKKyAgLyogRnJlZSB0aGUgU1BOIGFuZCBvdXRwdXQgdG9rZW4gKi8KKyAgQ3VybF9zYWZlZnJlZShrcmI1LT5zcG4pOworICBDdXJsX3NhZmVmcmVlKGtyYjUtPm91dHB1dF90b2tlbik7CisKKyAgLyogUmVzZXQgYW55IHZhcmlhYmxlcyAqLworICBrcmI1LT50b2tlbl9tYXggPSAwOworfQorCisjZW5kaWYgLyogVVNFX1dJTkRPV1NfU1NQSSAmJiBVU0VfS0VSQkVST1M1Ki8KZGlmZiAtLWdpdCBhL2xpYi9jdXJsX250bG1fbXNncy5jIGIvbGliL3ZhdXRoL250bG0uYwpzaW1pbGFyaXR5IGluZGV4IDk0JQpyZW5hbWUgZnJvbSBsaWIvY3VybF9udGxtX21zZ3MuYwpyZW5hbWUgdG8gbGliL3ZhdXRoL250bG0uYwppbmRleCA3ZjA3ZGVjLi5lMjdmNDIzIDEwMDY0NAotLS0gYS9saWIvY3VybF9udGxtX21zZ3MuYworKysgYi9saWIvdmF1dGgvbnRsbS5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjgsNyArMjgsNyBAQAogICogTlRMTSBkZXRhaWxzOgogICoKICAqIGh0dHA6Ly9kYXZlbnBvcnQuc291cmNlZm9yZ2UubmV0L250bG0uaHRtbAotICogaHR0cDovL3d3dy5pbm5vdmF0aW9uLmNoL2phdmEvbnRsbS5odG1sCisgKiBodHRwczovL3d3dy5pbm5vdmF0aW9uLmNoL2phdmEvbnRsbS5odG1sCiAgKi8KIAogI2RlZmluZSBERUJVR19NRSAwCkBAIC00OSw4ICs0OSw4IEBACiAjZW5kaWYKIAogI2RlZmluZSBCVUlMRElOR19DVVJMX05UTE1fTVNHU19DCi0jaW5jbHVkZSAiY3VybF9udGxtX21zZ3MuaCIKLSNpbmNsdWRlICJjdXJsX3Nhc2wuaCIKKyNpbmNsdWRlICJ2YXV0aC92YXV0aC5oIgorI2luY2x1ZGUgInZhdXRoL250bG0uaCIKICNpbmNsdWRlICJjdXJsX2VuZGlhbi5oIgogI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCiAKQEAgLTEzOCw3ICsxMzgsOSBAQAogc3RhdGljIHZvaWQgbnRsbV9wcmludF9oZXgoRklMRSAqaGFuZGxlLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBsZW4pCiB7CiAgIGNvbnN0IGNoYXIgKnAgPSBidWY7Ci0gICh2b2lkKWhhbmRsZTsKKworICAodm9pZCkgaGFuZGxlOworCiAgIGZwcmludGYoc3RkZXJyLCAiMHgiKTsKICAgd2hpbGUobGVuLS0gPiAwKQogICAgIGZwcmludGYoc3RkZXJyLCAiJTAyLjJ4IiwgKHVuc2lnbmVkIGludCkqcCsrKTsKQEAgLTE1MCw3ICsxNTIsNyBAQAogLyoKICAqIG50bG1fZGVjb2RlX3R5cGUyX3RhcmdldCgpCiAgKgotICogVGhpcyBpcyB1c2VkIHRvIGRlY29kZSB0aGUgInRhcmdldCBpbmZvIiBpbiB0aGUgbnRsbSB0eXBlLTIgbWVzc2FnZQorICogVGhpcyBpcyB1c2VkIHRvIGRlY29kZSB0aGUgInRhcmdldCBpbmZvIiBpbiB0aGUgTlRMTSB0eXBlLTIgbWVzc2FnZQogICogcmVjZWl2ZWQuCiAgKgogICogUGFyYW1ldGVyczoKQEAgLTE1OCw3ICsxNjAsNyBAQAogICogZGF0YSAgICAgIFtpbl0gICAgIC0gVGhlIHNlc3Npb24gaGFuZGxlLgogICogYnVmZmVyICAgIFtpbl0gICAgIC0gVGhlIGRlY29kZWQgdHlwZS0yIG1lc3NhZ2UuCiAgKiBzaXplICAgICAgW2luXSAgICAgLSBUaGUgaW5wdXQgYnVmZmVyIHNpemUsIGF0IGxlYXN0IDMyIGJ5dGVzLgotICogbnRsbSAgICAgIFtpbi9vdXRdIC0gVGhlIG50bG0gZGF0YSBzdHJ1Y3QgYmVpbmcgdXNlZCBhbmQgbW9kaWZpZWQuCisgKiBudGxtICAgICAgW2luL291dF0gLSBUaGUgTlRMTSBkYXRhIHN0cnVjdCBiZWluZyB1c2VkIGFuZCBtb2RpZmllZC4KICAqCiAgKiBSZXR1cm5zIENVUkxFX09LIG9uIHN1Y2Nlc3MuCiAgKi8KQEAgLTE3MCw2ICsxNzIsMTAgQEAKICAgdW5zaWduZWQgc2hvcnQgdGFyZ2V0X2luZm9fbGVuID0gMDsKICAgdW5zaWduZWQgaW50IHRhcmdldF9pbmZvX29mZnNldCA9IDA7CiAKKyNpZiBkZWZpbmVkKENVUkxfRElTQUJMRV9WRVJCT1NFX1NUUklOR1MpCisgICh2b2lkKSBkYXRhOworI2VuZGlmCisKICAgaWYoc2l6ZSA+PSA0OCkgewogICAgIHRhcmdldF9pbmZvX2xlbiA9IEN1cmxfcmVhZDE2X2xlKCZidWZmZXJbNDBdKTsKICAgICB0YXJnZXRfaW5mb19vZmZzZXQgPSBDdXJsX3JlYWQzMl9sZSgmYnVmZmVyWzQ0XSk7CkBAIC0yMTEsNyArMjE3LDcgQEAKICovCiAKIC8qCi0gKiBDdXJsX3Nhc2xfZGVjb2RlX250bG1fdHlwZTJfbWVzc2FnZSgpCisgKiBDdXJsX2F1dGhfZGVjb2RlX250bG1fdHlwZTJfbWVzc2FnZSgpCiAgKgogICogVGhpcyBpcyB1c2VkIHRvIGRlY29kZSBhbiBhbHJlYWR5IGVuY29kZWQgTlRMTSB0eXBlLTIgbWVzc2FnZS4gVGhlIG1lc3NhZ2UKICAqIGlzIGZpcnN0IGRlY29kZWQgZnJvbSBhIGJhc2U2NCBzdHJpbmcgaW50byBhIHJhdyBOVExNIG1lc3NhZ2UgYW5kIGNoZWNrZWQKQEAgLTIyMiwxMSArMjI4LDExIEBACiAgKgogICogZGF0YSAgICAgW2luXSAgICAgLSBUaGUgc2Vzc2lvbiBoYW5kbGUuCiAgKiB0eXBlMm1zZyBbaW5dICAgICAtIFRoZSBiYXNlNjQgZW5jb2RlZCB0eXBlLTIgbWVzc2FnZS4KLSAqIG50bG0gICAgIFtpbi9vdXRdIC0gVGhlIG50bG0gZGF0YSBzdHJ1Y3QgYmVpbmcgdXNlZCBhbmQgbW9kaWZpZWQuCisgKiBudGxtICAgICBbaW4vb3V0XSAtIFRoZSBOVExNIGRhdGEgc3RydWN0IGJlaW5nIHVzZWQgYW5kIG1vZGlmaWVkLgogICoKICAqIFJldHVybnMgQ1VSTEVfT0sgb24gc3VjY2Vzcy4KICAqLwotQ1VSTGNvZGUgQ3VybF9zYXNsX2RlY29kZV9udGxtX3R5cGUyX21lc3NhZ2Uoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsCitDVVJMY29kZSBDdXJsX2F1dGhfZGVjb2RlX250bG1fdHlwZTJfbWVzc2FnZShzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnR5cGUybXNnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG50bG1kYXRhICpudGxtKQogewpAQCAtMzIzLDcgKzMyOSw3IEBACiB9CiAKIC8qCi0gKiBDdXJsX3Nhc2xfY3JlYXRlX250bG1fdHlwZTFfbWVzc2FnZSgpCisgKiBDdXJsX2F1dGhfY3JlYXRlX250bG1fdHlwZTFfbWVzc2FnZSgpCiAgKgogICogVGhpcyBpcyB1c2VkIHRvIGdlbmVyYXRlIGFuIGFscmVhZHkgZW5jb2RlZCBOVExNIHR5cGUtMSBtZXNzYWdlIHJlYWR5IGZvcgogICogc2VuZGluZyB0byB0aGUgcmVjaXBpZW50IHVzaW5nIHRoZSBhcHByb3ByaWF0ZSBjb21waWxlIHRpbWUgY3J5cHRvIEFQSS4KQEAgLTMzMiwxNCArMzM4LDE0IEBACiAgKgogICogdXNlcnAgICBbaW5dICAgICAtIFRoZSB1c2VyIG5hbWUgaW4gdGhlIGZvcm1hdCBVc2VyIG9yIERvbWFpblxVc2VyLgogICogcGFzc2R3cCBbaW5dICAgICAtIFRoZSB1c2VyJ3MgcGFzc3dvcmQuCi0gKiBudGxtICAgIFtpbi9vdXRdIC0gVGhlIG50bG0gZGF0YSBzdHJ1Y3QgYmVpbmcgdXNlZCBhbmQgbW9kaWZpZWQuCisgKiBudGxtICAgIFtpbi9vdXRdIC0gVGhlIE5UTE0gZGF0YSBzdHJ1Y3QgYmVpbmcgdXNlZCBhbmQgbW9kaWZpZWQuCiAgKiBvdXRwdHIgIFtpbi9vdXRdIC0gVGhlIGFkZHJlc3Mgd2hlcmUgYSBwb2ludGVyIHRvIG5ld2x5IGFsbG9jYXRlZCBtZW1vcnkKICAqICAgICAgICAgICAgICAgICAgICBob2xkaW5nIHRoZSByZXN1bHQgd2lsbCBiZSBzdG9yZWQgdXBvbiBjb21wbGV0aW9uLgogICogb3V0bGVuICBbb3V0XSAgICAtIFRoZSBsZW5ndGggb2YgdGhlIG91dHB1dCBtZXNzYWdlLgogICoKICAqIFJldHVybnMgQ1VSTEVfT0sgb24gc3VjY2Vzcy4KICAqLwotQ1VSTGNvZGUgQ3VybF9zYXNsX2NyZWF0ZV9udGxtX3R5cGUxX21lc3NhZ2UoY29uc3QgY2hhciAqdXNlcnAsCitDVVJMY29kZSBDdXJsX2F1dGhfY3JlYXRlX250bG1fdHlwZTFfbWVzc2FnZShjb25zdCBjaGFyICp1c2VycCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhc3N3ZHAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbnRsbWRhdGEgKm50bG0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqb3V0cHRyLCBzaXplX3QgKm91dGxlbikKQEAgLTM3Miw3ICszNzgsNyBAQAogICAodm9pZClwYXNzd2RwOwogCiAgIC8qIENsZWFuIHVwIGFueSBmb3JtZXIgbGVmdG92ZXJzIGFuZCBpbml0aWFsaXNlIHRvIGRlZmF1bHRzICovCi0gIEN1cmxfc2FzbF9udGxtX2NsZWFudXAobnRsbSk7CisgIEN1cmxfYXV0aF9udGxtX2NsZWFudXAobnRsbSk7CiAKICNpZiBVU0VfTlRSRVNQT05TRVMgJiYgVVNFX05UTE0yU0VTU0lPTgogI2RlZmluZSBOVExNMkZMQUcgTlRMTUZMQUdfTkVHT1RJQVRFX05UTE0yX0tFWQpAQCAtNDQyLDcgKzQ0OCw3IEBACiB9CiAKIC8qCi0gKiBDdXJsX3Nhc2xfY3JlYXRlX250bG1fdHlwZTNfbWVzc2FnZSgpCisgKiBDdXJsX2F1dGhfY3JlYXRlX250bG1fdHlwZTNfbWVzc2FnZSgpCiAgKgogICogVGhpcyBpcyB1c2VkIHRvIGdlbmVyYXRlIGFuIGFscmVhZHkgZW5jb2RlZCBOVExNIHR5cGUtMyBtZXNzYWdlIHJlYWR5IGZvcgogICogc2VuZGluZyB0byB0aGUgcmVjaXBpZW50IHVzaW5nIHRoZSBhcHByb3ByaWF0ZSBjb21waWxlIHRpbWUgY3J5cHRvIEFQSS4KQEAgLTQ1MiwxNCArNDU4LDE0IEBACiAgKiBkYXRhICAgIFtpbl0gICAgIC0gVGhlIHNlc3Npb24gaGFuZGxlLgogICogdXNlcnAgICBbaW5dICAgICAtIFRoZSB1c2VyIG5hbWUgaW4gdGhlIGZvcm1hdCBVc2VyIG9yIERvbWFpblxVc2VyLgogICogcGFzc2R3cCBbaW5dICAgICAtIFRoZSB1c2VyJ3MgcGFzc3dvcmQuCi0gKiBudGxtICAgIFtpbi9vdXRdIC0gVGhlIG50bG0gZGF0YSBzdHJ1Y3QgYmVpbmcgdXNlZCBhbmQgbW9kaWZpZWQuCisgKiBudGxtICAgIFtpbi9vdXRdIC0gVGhlIE5UTE0gZGF0YSBzdHJ1Y3QgYmVpbmcgdXNlZCBhbmQgbW9kaWZpZWQuCiAgKiBvdXRwdHIgIFtpbi9vdXRdIC0gVGhlIGFkZHJlc3Mgd2hlcmUgYSBwb2ludGVyIHRvIG5ld2x5IGFsbG9jYXRlZCBtZW1vcnkKICAqICAgICAgICAgICAgICAgICAgICBob2xkaW5nIHRoZSByZXN1bHQgd2lsbCBiZSBzdG9yZWQgdXBvbiBjb21wbGV0aW9uLgogICogb3V0bGVuICBbb3V0XSAgICAtIFRoZSBsZW5ndGggb2YgdGhlIG91dHB1dCBtZXNzYWdlLgogICoKICAqIFJldHVybnMgQ1VSTEVfT0sgb24gc3VjY2Vzcy4KICAqLwotQ1VSTGNvZGUgQ3VybF9zYXNsX2NyZWF0ZV9udGxtX3R5cGUzX21lc3NhZ2Uoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsCitDVVJMY29kZSBDdXJsX2F1dGhfY3JlYXRlX250bG1fdHlwZTNfbWVzc2FnZShzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnVzZXJwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGFzc3dkcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBudGxtZGF0YSAqbnRsbSwKQEAgLTgwOSw5ICs4MTUsMjggQEAKICAgLyogUmV0dXJuIHdpdGggYmluYXJ5IGJsb2IgZW5jb2RlZCBpbnRvIGJhc2U2NCAqLwogICByZXN1bHQgPSBDdXJsX2Jhc2U2NF9lbmNvZGUoTlVMTCwgKGNoYXIgKiludGxtYnVmLCBzaXplLCBvdXRwdHIsIG91dGxlbik7CiAKLSAgQ3VybF9zYXNsX250bG1fY2xlYW51cChudGxtKTsKKyAgQ3VybF9hdXRoX250bG1fY2xlYW51cChudGxtKTsKIAogICByZXR1cm4gcmVzdWx0OwogfQogCisvKgorKiBDdXJsX2F1dGhfbnRsbV9jbGVhbnVwKCkKKyoKKyogVGhpcyBpcyB1c2VkIHRvIGNsZWFuIHVwIHRoZSBOVExNIHNwZWNpZmljIGRhdGEuCisqCisqIFBhcmFtZXRlcnM6CisqCisqIG50bG0gICAgW2luL291dF0gLSBUaGUgTlRMTSBkYXRhIHN0cnVjdCBiZWluZyBjbGVhbmVkIHVwLgorKgorKi8KK3ZvaWQgQ3VybF9hdXRoX250bG1fY2xlYW51cChzdHJ1Y3QgbnRsbWRhdGEgKm50bG0pCit7CisgIC8qIEZyZWUgdGhlIHRhcmdldCBpbmZvICovCisgIEN1cmxfc2FmZWZyZWUobnRsbS0+dGFyZ2V0X2luZm8pOworCisgIC8qIFJlc2V0IGFueSB2YXJpYWJsZXMgKi8KKyAgbnRsbS0+dGFyZ2V0X2luZm9fbGVuID0gMDsKK30KKwogI2VuZGlmIC8qIFVTRV9OVExNICYmICFVU0VfV0lORE9XU19TU1BJICovCmRpZmYgLS1naXQgYS9saWIvY3VybF9udGxtX21zZ3MuaCBiL2xpYi92YXV0aC9udGxtLmgKc2ltaWxhcml0eSBpbmRleCA5NSUKcmVuYW1lIGZyb20gbGliL2N1cmxfbnRsbV9tc2dzLmgKcmVuYW1lIHRvIGxpYi92YXV0aC9udGxtLmgKaW5kZXggMmE3MTQzMS4uYjE0ZTdhNSAxMDA2NDQKLS0tIGEvbGliL2N1cmxfbnRsbV9tc2dzLmgKKysrIGIvbGliL3ZhdXRoL250bG0uaApAQCAtMSw1ICsxLDUgQEAKLSNpZm5kZWYgSEVBREVSX0NVUkxfTlRMTV9NU0dTX0gKLSNkZWZpbmUgSEVBREVSX0NVUkxfTlRMTV9NU0dTX0gKKyNpZm5kZWYgSEVBREVSX0NVUkxfTlRMTV9ICisjZGVmaW5lIEhFQURFUl9DVVJMX05UTE1fSAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXwogICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKQEAgLTcsMTEgKzcsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0xNDAsNCArMTQwLDQgQEAKIAogI2VuZGlmIC8qIFVTRV9OVExNICovCiAKLSNlbmRpZiAvKiBIRUFERVJfQ1VSTF9OVExNX01TR1NfSCAqLworI2VuZGlmIC8qIEhFQURFUl9DVVJMX05UTE1fSCAqLwpkaWZmIC0tZ2l0IGEvbGliL3ZhdXRoL250bG1fc3NwaS5jIGIvbGliL3ZhdXRoL250bG1fc3NwaS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzMmUyNzAKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvdmF1dGgvbnRsbV9zc3BpLmMKQEAgLTAsMCArMSwzMTQgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKyAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorICoKKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKgorICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKyAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICoKKyAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2luY2x1ZGUgImN1cmxfc2V0dXAuaCIKKworI2lmIGRlZmluZWQoVVNFX1dJTkRPV1NfU1NQSSkgJiYgZGVmaW5lZChVU0VfTlRMTSkKKworI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCisjaW5jbHVkZSAidmF1dGgvdmF1dGguaCIKKyNpbmNsdWRlICJ1cmxkYXRhLmgiCisjaW5jbHVkZSAiY3VybF9iYXNlNjQuaCIKKyNpbmNsdWRlICJ3YXJubGVzcy5oIgorI2luY2x1ZGUgImN1cmxfbXVsdGlieXRlLmgiCisjaW5jbHVkZSAic2VuZGYuaCIKKworLyogVGhlIGxhc3QgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlOiAqLworI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCisjaW5jbHVkZSAibWVtZGVidWcuaCIKKworLyoKKyAqIEN1cmxfYXV0aF9jcmVhdGVfbnRsbV90eXBlMV9tZXNzYWdlKCkKKyAqCisgKiBUaGlzIGlzIHVzZWQgdG8gZ2VuZXJhdGUgYW4gYWxyZWFkeSBlbmNvZGVkIE5UTE0gdHlwZS0xIG1lc3NhZ2UgcmVhZHkgZm9yCisgKiBzZW5kaW5nIHRvIHRoZSByZWNpcGllbnQuCisgKgorICogUGFyYW1ldGVyczoKKyAqCisgKiB1c2VycCAgIFtpbl0gICAgIC0gVGhlIHVzZXIgbmFtZSBpbiB0aGUgZm9ybWF0IFVzZXIgb3IgRG9tYWluXFVzZXIuCisgKiBwYXNzZHdwIFtpbl0gICAgIC0gVGhlIHVzZXIncyBwYXNzd29yZC4KKyAqIG50bG0gICAgW2luL291dF0gLSBUaGUgTlRMTSBkYXRhIHN0cnVjdCBiZWluZyB1c2VkIGFuZCBtb2RpZmllZC4KKyAqIG91dHB0ciAgW2luL291dF0gLSBUaGUgYWRkcmVzcyB3aGVyZSBhIHBvaW50ZXIgdG8gbmV3bHkgYWxsb2NhdGVkIG1lbW9yeQorICogICAgICAgICAgICAgICAgICAgIGhvbGRpbmcgdGhlIHJlc3VsdCB3aWxsIGJlIHN0b3JlZCB1cG9uIGNvbXBsZXRpb24uCisgKiBvdXRsZW4gIFtvdXRdICAgIC0gVGhlIGxlbmd0aCBvZiB0aGUgb3V0cHV0IG1lc3NhZ2UuCisgKgorICogUmV0dXJucyBDVVJMRV9PSyBvbiBzdWNjZXNzLgorICovCitDVVJMY29kZSBDdXJsX2F1dGhfY3JlYXRlX250bG1fdHlwZTFfbWVzc2FnZShjb25zdCBjaGFyICp1c2VycCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhc3N3ZHAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbnRsbWRhdGEgKm50bG0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqb3V0cHRyLCBzaXplX3QgKm91dGxlbikKK3sKKyAgUFNlY1BrZ0luZm8gU2VjdXJpdHlQYWNrYWdlOworICBTZWNCdWZmZXIgdHlwZV8xX2J1ZjsKKyAgU2VjQnVmZmVyRGVzYyB0eXBlXzFfZGVzYzsKKyAgU0VDVVJJVFlfU1RBVFVTIHN0YXR1czsKKyAgdW5zaWduZWQgbG9uZyBhdHRyczsKKyAgVGltZVN0YW1wIGV4cGlyeTsgLyogRm9yIFdpbmRvd3MgOXggY29tcGF0aWJpbGl0eSBvZiBTU1BJIGNhbGxzICovCisKKyAgLyogQ2xlYW4gdXAgYW55IGZvcm1lciBsZWZ0b3ZlcnMgYW5kIGluaXRpYWxpc2UgdG8gZGVmYXVsdHMgKi8KKyAgQ3VybF9hdXRoX250bG1fY2xlYW51cChudGxtKTsKKworICAvKiBRdWVyeSB0aGUgc2VjdXJpdHkgcGFja2FnZSBmb3IgTlRMTSAqLworICBzdGF0dXMgPSBzX3BTZWNGbi0+UXVlcnlTZWN1cml0eVBhY2thZ2VJbmZvKChUQ0hBUiAqKSBURVhUKFNQX05BTUVfTlRMTSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlNlY3VyaXR5UGFja2FnZSk7CisgIGlmKHN0YXR1cyAhPSBTRUNfRV9PSykKKyAgICByZXR1cm4gQ1VSTEVfTk9UX0JVSUxUX0lOOworCisgIG50bG0tPnRva2VuX21heCA9IFNlY3VyaXR5UGFja2FnZS0+Y2JNYXhUb2tlbjsKKworICAvKiBSZWxlYXNlIHRoZSBwYWNrYWdlIGJ1ZmZlciBhcyBpdCBpcyBub3QgcmVxdWlyZWQgYW55bW9yZSAqLworICBzX3BTZWNGbi0+RnJlZUNvbnRleHRCdWZmZXIoU2VjdXJpdHlQYWNrYWdlKTsKKworICAvKiBBbGxvY2F0ZSBvdXIgb3V0cHV0IGJ1ZmZlciAqLworICBudGxtLT5vdXRwdXRfdG9rZW4gPSBtYWxsb2MobnRsbS0+dG9rZW5fbWF4KTsKKyAgaWYoIW50bG0tPm91dHB1dF90b2tlbikKKyAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKworICBpZih1c2VycCAmJiAqdXNlcnApIHsKKyAgICBDVVJMY29kZSByZXN1bHQ7CisKKyAgICAvKiBQb3B1bGF0ZSBvdXIgaWRlbnRpdHkgc3RydWN0dXJlICovCisgICAgcmVzdWx0ID0gQ3VybF9jcmVhdGVfc3NwaV9pZGVudGl0eSh1c2VycCwgcGFzc3dkcCwgJm50bG0tPmlkZW50aXR5KTsKKyAgICBpZihyZXN1bHQpCisgICAgICByZXR1cm4gcmVzdWx0OworCisgICAgLyogQWxsb3cgcHJvcGVyIGNsZWFudXAgb2YgdGhlIGlkZW50aXR5IHN0cnVjdHVyZSAqLworICAgIG50bG0tPnBfaWRlbnRpdHkgPSAmbnRsbS0+aWRlbnRpdHk7CisgIH0KKyAgZWxzZQorICAgIC8qIFVzZSB0aGUgY3VycmVudCBXaW5kb3dzIHVzZXIgKi8KKyAgICBudGxtLT5wX2lkZW50aXR5ID0gTlVMTDsKKworICAvKiBBbGxvY2F0ZSBvdXIgY3JlZGVudGlhbHMgaGFuZGxlICovCisgIG50bG0tPmNyZWRlbnRpYWxzID0gbWFsbG9jKHNpemVvZihDcmVkSGFuZGxlKSk7CisgIGlmKCFudGxtLT5jcmVkZW50aWFscykKKyAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKworICBtZW1zZXQobnRsbS0+Y3JlZGVudGlhbHMsIDAsIHNpemVvZihDcmVkSGFuZGxlKSk7CisKKyAgLyogQWNxdWlyZSBvdXIgY3JlZGVudGlhbHMgaGFuZGxlICovCisgIHN0YXR1cyA9IHNfcFNlY0ZuLT5BY3F1aXJlQ3JlZGVudGlhbHNIYW5kbGUoTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVENIQVIgKikgVEVYVChTUF9OQU1FX05UTE0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNFQ1BLR19DUkVEX09VVEJPVU5ELCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG50bG0tPnBfaWRlbnRpdHksIE5VTEwsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnRsbS0+Y3JlZGVudGlhbHMsICZleHBpcnkpOworICBpZihzdGF0dXMgIT0gU0VDX0VfT0spCisgICAgcmV0dXJuIENVUkxFX0xPR0lOX0RFTklFRDsKKworICAvKiBBbGxvY2F0ZSBvdXIgbmV3IGNvbnRleHQgaGFuZGxlICovCisgIG50bG0tPmNvbnRleHQgPSBtYWxsb2Moc2l6ZW9mKEN0eHRIYW5kbGUpKTsKKyAgaWYoIW50bG0tPmNvbnRleHQpCisgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisKKyAgbWVtc2V0KG50bG0tPmNvbnRleHQsIDAsIHNpemVvZihDdHh0SGFuZGxlKSk7CisKKyAgLyogU2V0dXAgdGhlIHR5cGUtMSAib3V0cHV0IiBzZWN1cml0eSBidWZmZXIgKi8KKyAgdHlwZV8xX2Rlc2MudWxWZXJzaW9uID0gU0VDQlVGRkVSX1ZFUlNJT047CisgIHR5cGVfMV9kZXNjLmNCdWZmZXJzICA9IDE7CisgIHR5cGVfMV9kZXNjLnBCdWZmZXJzICA9ICZ0eXBlXzFfYnVmOworICB0eXBlXzFfYnVmLkJ1ZmZlclR5cGUgPSBTRUNCVUZGRVJfVE9LRU47CisgIHR5cGVfMV9idWYucHZCdWZmZXIgICA9IG50bG0tPm91dHB1dF90b2tlbjsKKyAgdHlwZV8xX2J1Zi5jYkJ1ZmZlciAgID0gY3VybHhfdXp0b3VsKG50bG0tPnRva2VuX21heCk7CisKKyAgLyogR2VuZXJhdGUgb3VyIHR5cGUtMSBtZXNzYWdlICovCisgIHN0YXR1cyA9IHNfcFNlY0ZuLT5Jbml0aWFsaXplU2VjdXJpdHlDb250ZXh0KG50bG0tPmNyZWRlbnRpYWxzLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVENIQVIgKikgVEVYVCgiIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIFNFQ1VSSVRZX05FVFdPUktfRFJFUCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnRsbS0+Y29udGV4dCwgJnR5cGVfMV9kZXNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYXR0cnMsICZleHBpcnkpOworICBpZihzdGF0dXMgPT0gU0VDX0lfQ09NUExFVEVfTkVFREVEIHx8CisgICAgc3RhdHVzID09IFNFQ19JX0NPTVBMRVRFX0FORF9DT05USU5VRSkKKyAgICBzX3BTZWNGbi0+Q29tcGxldGVBdXRoVG9rZW4obnRsbS0+Y29udGV4dCwgJnR5cGVfMV9kZXNjKTsKKyAgZWxzZSBpZihzdGF0dXMgIT0gU0VDX0VfT0sgJiYgc3RhdHVzICE9IFNFQ19JX0NPTlRJTlVFX05FRURFRCkKKyAgICByZXR1cm4gQ1VSTEVfUkVDVl9FUlJPUjsKKworICAvKiBCYXNlNjQgZW5jb2RlIHRoZSByZXNwb25zZSAqLworICByZXR1cm4gQ3VybF9iYXNlNjRfZW5jb2RlKE5VTEwsIChjaGFyICopIG50bG0tPm91dHB1dF90b2tlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlXzFfYnVmLmNiQnVmZmVyLCBvdXRwdHIsIG91dGxlbik7Cit9CisKKy8qCisgKiBDdXJsX2F1dGhfZGVjb2RlX250bG1fdHlwZTJfbWVzc2FnZSgpCisgKgorICogVGhpcyBpcyB1c2VkIHRvIGRlY29kZSBhbiBhbHJlYWR5IGVuY29kZWQgTlRMTSB0eXBlLTIgbWVzc2FnZS4KKyAqCisgKiBQYXJhbWV0ZXJzOgorICoKKyAqIGRhdGEgICAgIFtpbl0gICAgIC0gVGhlIHNlc3Npb24gaGFuZGxlLgorICogdHlwZTJtc2cgW2luXSAgICAgLSBUaGUgYmFzZTY0IGVuY29kZWQgdHlwZS0yIG1lc3NhZ2UuCisgKiBudGxtICAgICBbaW4vb3V0XSAtIFRoZSBOVExNIGRhdGEgc3RydWN0IGJlaW5nIHVzZWQgYW5kIG1vZGlmaWVkLgorICoKKyAqIFJldHVybnMgQ1VSTEVfT0sgb24gc3VjY2Vzcy4KKyAqLworQ1VSTGNvZGUgQ3VybF9hdXRoX2RlY29kZV9udGxtX3R5cGUyX21lc3NhZ2Uoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0eXBlMm1zZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBudGxtZGF0YSAqbnRsbSkKK3sKKyAgQ1VSTGNvZGUgcmVzdWx0ID0gQ1VSTEVfT0s7CisgIHVuc2lnbmVkIGNoYXIgKnR5cGUyID0gTlVMTDsKKyAgc2l6ZV90IHR5cGUyX2xlbiA9IDA7CisKKyNpZiBkZWZpbmVkKENVUkxfRElTQUJMRV9WRVJCT1NFX1NUUklOR1MpCisgICh2b2lkKSBkYXRhOworI2VuZGlmCisKKyAgLyogRGVjb2RlIHRoZSBiYXNlLTY0IGVuY29kZWQgdHlwZS0yIG1lc3NhZ2UgKi8KKyAgaWYoc3RybGVuKHR5cGUybXNnKSAmJiAqdHlwZTJtc2cgIT0gJz0nKSB7CisgICAgcmVzdWx0ID0gQ3VybF9iYXNlNjRfZGVjb2RlKHR5cGUybXNnLCAmdHlwZTIsICZ0eXBlMl9sZW4pOworICAgIGlmKHJlc3VsdCkKKyAgICAgIHJldHVybiByZXN1bHQ7CisgIH0KKworICAvKiBFbnN1cmUgd2UgaGF2ZSBhIHZhbGlkIHR5cGUtMiBtZXNzYWdlICovCisgIGlmKCF0eXBlMikgeworICAgIGluZm9mKGRhdGEsICJOVExNIGhhbmRzaGFrZSBmYWlsdXJlIChlbXB0eSB0eXBlLTIgbWVzc2FnZSlcbiIpOworCisgICAgcmV0dXJuIENVUkxFX0JBRF9DT05URU5UX0VOQ09ESU5HOworICB9CisKKyAgLyogU2ltcGx5IHN0b3JlIHRoZSBjaGFsbGVuZ2UgZm9yIHVzZSBsYXRlciAqLworICBudGxtLT5pbnB1dF90b2tlbiA9IHR5cGUyOworICBudGxtLT5pbnB1dF90b2tlbl9sZW4gPSB0eXBlMl9sZW47CisKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworLyoKKyogQ3VybF9hdXRoX2NyZWF0ZV9udGxtX3R5cGUzX21lc3NhZ2UoKQorICogQ3VybF9hdXRoX2NyZWF0ZV9udGxtX3R5cGUzX21lc3NhZ2UoKQorICoKKyAqIFRoaXMgaXMgdXNlZCB0byBnZW5lcmF0ZSBhbiBhbHJlYWR5IGVuY29kZWQgTlRMTSB0eXBlLTMgbWVzc2FnZSByZWFkeSBmb3IKKyAqIHNlbmRpbmcgdG8gdGhlIHJlY2lwaWVudC4KKyAqCisgKiBQYXJhbWV0ZXJzOgorICoKKyAqIGRhdGEgICAgW2luXSAgICAgLSBUaGUgc2Vzc2lvbiBoYW5kbGUuCisgKiB1c2VycCAgIFtpbl0gICAgIC0gVGhlIHVzZXIgbmFtZSBpbiB0aGUgZm9ybWF0IFVzZXIgb3IgRG9tYWluXFVzZXIuCisgKiBwYXNzZHdwIFtpbl0gICAgIC0gVGhlIHVzZXIncyBwYXNzd29yZC4KKyAqIG50bG0gICAgW2luL291dF0gLSBUaGUgTlRMTSBkYXRhIHN0cnVjdCBiZWluZyB1c2VkIGFuZCBtb2RpZmllZC4KKyAqIG91dHB0ciAgW2luL291dF0gLSBUaGUgYWRkcmVzcyB3aGVyZSBhIHBvaW50ZXIgdG8gbmV3bHkgYWxsb2NhdGVkIG1lbW9yeQorICogICAgICAgICAgICAgICAgICAgIGhvbGRpbmcgdGhlIHJlc3VsdCB3aWxsIGJlIHN0b3JlZCB1cG9uIGNvbXBsZXRpb24uCisgKiBvdXRsZW4gIFtvdXRdICAgIC0gVGhlIGxlbmd0aCBvZiB0aGUgb3V0cHV0IG1lc3NhZ2UuCisgKgorICogUmV0dXJucyBDVVJMRV9PSyBvbiBzdWNjZXNzLgorICovCitDVVJMY29kZSBDdXJsX2F1dGhfY3JlYXRlX250bG1fdHlwZTNfbWVzc2FnZShzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnVzZXJwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGFzc3dkcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBudGxtZGF0YSAqbnRsbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipvdXRwdHIsIHNpemVfdCAqb3V0bGVuKQoreworICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKKyAgU2VjQnVmZmVyIHR5cGVfMl9idWY7CisgIFNlY0J1ZmZlciB0eXBlXzNfYnVmOworICBTZWNCdWZmZXJEZXNjIHR5cGVfMl9kZXNjOworICBTZWNCdWZmZXJEZXNjIHR5cGVfM19kZXNjOworICBTRUNVUklUWV9TVEFUVVMgc3RhdHVzOworICB1bnNpZ25lZCBsb25nIGF0dHJzOworICBUaW1lU3RhbXAgZXhwaXJ5OyAvKiBGb3IgV2luZG93cyA5eCBjb21wYXRpYmlsaXR5IG9mIFNTUEkgY2FsbHMgKi8KKworICAodm9pZCkgcGFzc3dkcDsKKyAgKHZvaWQpIHVzZXJwOworCisgIC8qIFNldHVwIHRoZSB0eXBlLTIgImlucHV0IiBzZWN1cml0eSBidWZmZXIgKi8KKyAgdHlwZV8yX2Rlc2MudWxWZXJzaW9uID0gU0VDQlVGRkVSX1ZFUlNJT047CisgIHR5cGVfMl9kZXNjLmNCdWZmZXJzICA9IDE7CisgIHR5cGVfMl9kZXNjLnBCdWZmZXJzICA9ICZ0eXBlXzJfYnVmOworICB0eXBlXzJfYnVmLkJ1ZmZlclR5cGUgPSBTRUNCVUZGRVJfVE9LRU47CisgIHR5cGVfMl9idWYucHZCdWZmZXIgICA9IG50bG0tPmlucHV0X3Rva2VuOworICB0eXBlXzJfYnVmLmNiQnVmZmVyICAgPSBjdXJseF91enRvdWwobnRsbS0+aW5wdXRfdG9rZW5fbGVuKTsKKworICAvKiBTZXR1cCB0aGUgdHlwZS0zICJvdXRwdXQiIHNlY3VyaXR5IGJ1ZmZlciAqLworICB0eXBlXzNfZGVzYy51bFZlcnNpb24gPSBTRUNCVUZGRVJfVkVSU0lPTjsKKyAgdHlwZV8zX2Rlc2MuY0J1ZmZlcnMgID0gMTsKKyAgdHlwZV8zX2Rlc2MucEJ1ZmZlcnMgID0gJnR5cGVfM19idWY7CisgIHR5cGVfM19idWYuQnVmZmVyVHlwZSA9IFNFQ0JVRkZFUl9UT0tFTjsKKyAgdHlwZV8zX2J1Zi5wdkJ1ZmZlciAgID0gbnRsbS0+b3V0cHV0X3Rva2VuOworICB0eXBlXzNfYnVmLmNiQnVmZmVyICAgPSBjdXJseF91enRvdWwobnRsbS0+dG9rZW5fbWF4KTsKKworICAvKiBHZW5lcmF0ZSBvdXIgdHlwZS0zIG1lc3NhZ2UgKi8KKyAgc3RhdHVzID0gc19wU2VjRm4tPkluaXRpYWxpemVTZWN1cml0eUNvbnRleHQobnRsbS0+Y3JlZGVudGlhbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG50bG0tPmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChUQ0hBUiAqKSBURVhUKCIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgU0VDVVJJVFlfTkVUV09SS19EUkVQLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHlwZV8yX2Rlc2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIG50bG0tPmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0eXBlXzNfZGVzYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmF0dHJzLCAmZXhwaXJ5KTsKKyAgaWYoc3RhdHVzICE9IFNFQ19FX09LKSB7CisgICAgaW5mb2YoZGF0YSwgIk5UTE0gaGFuZHNoYWtlIGZhaWx1cmUgKHR5cGUtMyBtZXNzYWdlKTogU3RhdHVzPSV4XG4iLAorICAgICAgICAgIHN0YXR1cyk7CisKKyAgICByZXR1cm4gQ1VSTEVfUkVDVl9FUlJPUjsKKyAgfQorCisgIC8qIEJhc2U2NCBlbmNvZGUgdGhlIHJlc3BvbnNlICovCisgIHJlc3VsdCA9IEN1cmxfYmFzZTY0X2VuY29kZShkYXRhLCAoY2hhciAqKSBudGxtLT5vdXRwdXRfdG9rZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlXzNfYnVmLmNiQnVmZmVyLCBvdXRwdHIsIG91dGxlbik7CisKKyAgQ3VybF9hdXRoX250bG1fY2xlYW51cChudGxtKTsKKworICByZXR1cm4gcmVzdWx0OworfQorCisvKgorICogQ3VybF9hdXRoX250bG1fY2xlYW51cCgpCisgKgorICogVGhpcyBpcyB1c2VkIHRvIGNsZWFuIHVwIHRoZSBOVExNIHNwZWNpZmljIGRhdGEuCisgKgorICogUGFyYW1ldGVyczoKKyAqCisgKiBudGxtICAgIFtpbi9vdXRdIC0gVGhlIE5UTE0gZGF0YSBzdHJ1Y3QgYmVpbmcgY2xlYW5lZCB1cC4KKyAqCisgKi8KK3ZvaWQgQ3VybF9hdXRoX250bG1fY2xlYW51cChzdHJ1Y3QgbnRsbWRhdGEgKm50bG0pCit7CisgIC8qIEZyZWUgb3VyIHNlY3VyaXR5IGNvbnRleHQgKi8KKyAgaWYobnRsbS0+Y29udGV4dCkgeworICAgIHNfcFNlY0ZuLT5EZWxldGVTZWN1cml0eUNvbnRleHQobnRsbS0+Y29udGV4dCk7CisgICAgZnJlZShudGxtLT5jb250ZXh0KTsKKyAgICBudGxtLT5jb250ZXh0ID0gTlVMTDsKKyAgfQorCisgIC8qIEZyZWUgb3VyIGNyZWRlbnRpYWxzIGhhbmRsZSAqLworICBpZihudGxtLT5jcmVkZW50aWFscykgeworICAgIHNfcFNlY0ZuLT5GcmVlQ3JlZGVudGlhbHNIYW5kbGUobnRsbS0+Y3JlZGVudGlhbHMpOworICAgIGZyZWUobnRsbS0+Y3JlZGVudGlhbHMpOworICAgIG50bG0tPmNyZWRlbnRpYWxzID0gTlVMTDsKKyAgfQorCisgIC8qIEZyZWUgb3VyIGlkZW50aXR5ICovCisgIEN1cmxfc3NwaV9mcmVlX2lkZW50aXR5KG50bG0tPnBfaWRlbnRpdHkpOworICBudGxtLT5wX2lkZW50aXR5ID0gTlVMTDsKKworICAvKiBGcmVlIHRoZSBpbnB1dCBhbmQgb3V0cHV0IHRva2VucyAqLworICBDdXJsX3NhZmVmcmVlKG50bG0tPmlucHV0X3Rva2VuKTsKKyAgQ3VybF9zYWZlZnJlZShudGxtLT5vdXRwdXRfdG9rZW4pOworCisgIC8qIFJlc2V0IGFueSB2YXJpYWJsZXMgKi8KKyAgbnRsbS0+dG9rZW5fbWF4ID0gMDsKK30KKworI2VuZGlmIC8qIFVTRV9XSU5ET1dTX1NTUEkgJiYgVVNFX05UTE0gKi8KZGlmZiAtLWdpdCBhL2xpYi92YXV0aC9vYXV0aDIuYyBiL2xpYi92YXV0aC9vYXV0aDIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mY2NkZmI4Ci0tLSAvZGV2L251bGwKKysrIGIvbGliL3ZhdXRoL29hdXRoMi5jCkBAIC0wLDAgKzEsODYgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKyAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorICoKKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKgorICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKyAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICoKKyAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKgorICogUkZDNjc0OSBPQXV0aCAyLjAgQXV0aG9yaXphdGlvbiBGcmFtZXdvcmsKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaW5jbHVkZSAiY3VybF9zZXR1cC5oIgorCisjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CisjaW5jbHVkZSAidXJsZGF0YS5oIgorCisjaW5jbHVkZSAidmF1dGgvdmF1dGguaCIKKyNpbmNsdWRlICJjdXJsX2Jhc2U2NC5oIgorI2luY2x1ZGUgIndhcm5sZXNzLmgiCisjaW5jbHVkZSAiY3VybF9wcmludGYuaCIKKworLyogVGhlIGxhc3QgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlOiAqLworI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCisjaW5jbHVkZSAibWVtZGVidWcuaCIKKworLyoKKyAqIEN1cmxfYXV0aF9jcmVhdGVfb2F1dGhfYmVhcmVyX21lc3NhZ2UoKQorICoKKyAqIFRoaXMgaXMgdXNlZCB0byBnZW5lcmF0ZSBhbiBhbHJlYWR5IGVuY29kZWQgT0F1dGggMi4wIG1lc3NhZ2UgcmVhZHkgZm9yCisgKiBzZW5kaW5nIHRvIHRoZSByZWNpcGllbnQuCisgKgorICogUGFyYW1ldGVyczoKKyAqCisgKiBkYXRhW2luXSAgICAgICAgIC0gVGhlIHNlc3Npb24gaGFuZGxlLgorICogdXNlcltpbl0gICAgICAgICAtIFRoZSB1c2VyIG5hbWUuCisgKiBob3N0W2luXSAgICAgICAgIC0gVGhlIGhvc3QgbmFtZShmb3IgT0FVVEhCRUFSRVIpLgorICogcG9ydFtpbl0gICAgICAgICAtIFRoZSBwb3J0KGZvciBPQVVUSEJFQVJFUiB3aGVuIG5vdCBQb3J0IDgwKS4KKyAqIGJlYXJlcltpbl0gICAgICAgLSBUaGUgYmVhcmVyIHRva2VuLgorICogb3V0cHRyW2luIC8gb3V0XSAtIFRoZSBhZGRyZXNzIHdoZXJlIGEgcG9pbnRlciB0byBuZXdseSBhbGxvY2F0ZWQgbWVtb3J5CisgKiAgICAgICAgICAgICAgICAgICAgaG9sZGluZyB0aGUgcmVzdWx0IHdpbGwgYmUgc3RvcmVkIHVwb24gY29tcGxldGlvbi4KKyAqIG91dGxlbltvdXRdICAgICAgLSBUaGUgbGVuZ3RoIG9mIHRoZSBvdXRwdXQgbWVzc2FnZS4KKyAqCisgKiBSZXR1cm5zIENVUkxFX09LIG9uIHN1Y2Nlc3MuCisgKi8KK0NVUkxjb2RlIEN1cmxfYXV0aF9jcmVhdGVfb2F1dGhfYmVhcmVyX21lc3NhZ2Uoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnVzZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmhvc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxvbmcgcG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqYmVhcmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqb3V0cHRyLCBzaXplX3QgKm91dGxlbikKK3sKKyAgQ1VSTGNvZGUgcmVzdWx0ID0gQ1VSTEVfT0s7CisgIGNoYXIgKm9hdXRoID0gTlVMTDsKKworICAvKiBHZW5lcmF0ZSB0aGUgbWVzc2FnZSAqLworICBpZihob3N0ID09IE5VTEwgJiYgKHBvcnQgPT0gMCB8fCBwb3J0ID09IDgwKSkKKyAgICBvYXV0aCA9IGFwcmludGYoInVzZXI9JXNcMWF1dGg9QmVhcmVyICVzXDFcMSIsIHVzZXIsIGJlYXJlcik7CisgIGVsc2UgaWYocG9ydCA9PSAwIHx8IHBvcnQgPT0gODApCisgICAgb2F1dGggPSBhcHJpbnRmKCJ1c2VyPSVzXDFob3N0PSVzXDFhdXRoPUJlYXJlciAlc1wxXDEiLCB1c2VyLCBob3N0LAorICAgICAgICAgICAgICAgICAgICBiZWFyZXIpOworICBlbHNlCisgICAgb2F1dGggPSBhcHJpbnRmKCJ1c2VyPSVzXDFob3N0PSVzXDFwb3J0PSVsZFwxYXV0aD1CZWFyZXIgJXNcMVwxIiwgdXNlciwKKyAgICAgICAgICAgICAgICAgICAgaG9zdCwgcG9ydCwgYmVhcmVyKTsKKyAgaWYoIW9hdXRoKQorICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworCisgIC8qIEJhc2U2NCBlbmNvZGUgdGhlIHJlcGx5ICovCisgIHJlc3VsdCA9IEN1cmxfYmFzZTY0X2VuY29kZShkYXRhLCBvYXV0aCwgc3RybGVuKG9hdXRoKSwgb3V0cHRyLCBvdXRsZW4pOworCisgIGZyZWUob2F1dGgpOworCisgIHJldHVybiByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9saWIvdmF1dGgvc3BuZWdvX2dzc2FwaS5jIGIvbGliL3ZhdXRoL3NwbmVnb19nc3NhcGkuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MzllMzViCi0tLSAvZGV2L251bGwKKysrIGIvbGliL3ZhdXRoL3NwbmVnb19nc3NhcGkuYwpAQCAtMCwwICsxLDI2MCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisgKgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAorICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcworICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKgorICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCisgKgorICogVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqCisgKiBSRkM0MTc4IFNpbXBsZSBhbmQgUHJvdGVjdGVkIEdTUy1BUEkgTmVnb3RpYXRpb24gTWVjaGFuaXNtCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2luY2x1ZGUgImN1cmxfc2V0dXAuaCIKKworI2lmIGRlZmluZWQoSEFWRV9HU1NBUEkpICYmIGRlZmluZWQoVVNFX1NQTkVHTykKKworI2luY2x1ZGUgPGN1cmwvY3VybC5oPgorCisjaW5jbHVkZSAidmF1dGgvdmF1dGguaCIKKyNpbmNsdWRlICJ1cmxkYXRhLmgiCisjaW5jbHVkZSAiY3VybF9iYXNlNjQuaCIKKyNpbmNsdWRlICJjdXJsX2dzc2FwaS5oIgorI2luY2x1ZGUgIndhcm5sZXNzLmgiCisjaW5jbHVkZSAiY3VybF9tdWx0aWJ5dGUuaCIKKyNpbmNsdWRlICJzZW5kZi5oIgorCisvKiBUaGUgbGFzdCAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmU6ICovCisjaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKKyNpbmNsdWRlICJtZW1kZWJ1Zy5oIgorCisvKgorICogQ3VybF9hdXRoX2RlY29kZV9zcG5lZ29fbWVzc2FnZSgpCisgKgorICogVGhpcyBpcyB1c2VkIHRvIGRlY29kZSBhbiBhbHJlYWR5IGVuY29kZWQgU1BORUdPIChOZWdvdGlhdGUpIGNoYWxsZW5nZQorICogbWVzc2FnZS4KKyAqCisgKiBQYXJhbWV0ZXJzOgorICoKKyAqIGRhdGEgICAgICAgIFtpbl0gICAgIC0gVGhlIHNlc3Npb24gaGFuZGxlLgorICogdXNlcnAgICAgICAgW2luXSAgICAgLSBUaGUgdXNlciBuYW1lIGluIHRoZSBmb3JtYXQgVXNlciBvciBEb21haW5cVXNlci4KKyAqIHBhc3Nkd3AgICAgIFtpbl0gICAgIC0gVGhlIHVzZXIncyBwYXNzd29yZC4KKyAqIHNlcnZpY2UgICAgIFtpbl0gICAgIC0gVGhlIHNlcnZpY2UgdHlwZSBzdWNoIGFzIGh0dHAsIHNtdHAsIHBvcCBvciBpbWFwLgorICogaG9zdCAgICAgICAgW2luXSAgICAgLSBUaGUgaG9zdCBuYW1lLgorICogY2hsZzY0ICAgICAgW2luXSAgICAgLSBUaGUgb3B0aW9uYWwgYmFzZTY0IGVuY29kZWQgY2hhbGxlbmdlIG1lc3NhZ2UuCisgKiBuZWdvICAgICAgICBbaW4vb3V0XSAtIFRoZSBOZWdvdGlhdGUgZGF0YSBzdHJ1Y3QgYmVpbmcgdXNlZCBhbmQgbW9kaWZpZWQuCisgKgorICogUmV0dXJucyBDVVJMRV9PSyBvbiBzdWNjZXNzLgorICovCitDVVJMY29kZSBDdXJsX2F1dGhfZGVjb2RlX3NwbmVnb19tZXNzYWdlKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp1c2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwYXNzd29yZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc2VydmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqaG9zdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY2hsZzY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbmVnb3RpYXRlZGF0YSAqbmVnbykKK3sKKyAgQ1VSTGNvZGUgcmVzdWx0ID0gQ1VSTEVfT0s7CisgIHNpemVfdCBjaGxnbGVuID0gMDsKKyAgdW5zaWduZWQgY2hhciAqY2hsZyA9IE5VTEw7CisgIE9NX3VpbnQzMiBtYWpvcl9zdGF0dXM7CisgIE9NX3VpbnQzMiBtaW5vcl9zdGF0dXM7CisgIE9NX3VpbnQzMiB1bnVzZWRfc3RhdHVzOworICBnc3NfYnVmZmVyX2Rlc2Mgc3BuX3Rva2VuID0gR1NTX0NfRU1QVFlfQlVGRkVSOworICBnc3NfYnVmZmVyX2Rlc2MgaW5wdXRfdG9rZW4gPSBHU1NfQ19FTVBUWV9CVUZGRVI7CisgIGdzc19idWZmZXJfZGVzYyBvdXRwdXRfdG9rZW4gPSBHU1NfQ19FTVBUWV9CVUZGRVI7CisKKyAgKHZvaWQpIHVzZXI7CisgICh2b2lkKSBwYXNzd29yZDsKKworICBpZihuZWdvLT5jb250ZXh0ICYmIG5lZ28tPnN0YXR1cyA9PSBHU1NfU19DT01QTEVURSkgeworICAgIC8qIFdlIGZpbmlzaGVkIHN1Y2Nlc3NmdWxseSBvdXIgcGFydCBvZiBhdXRoZW50aWNhdGlvbiwgYnV0IHNlcnZlcgorICAgICAqIHJlamVjdGVkIGl0IChzaW5jZSB3ZSdyZSBhZ2FpbiBoZXJlKS4gRXhpdCB3aXRoIGFuIGVycm9yIHNpbmNlIHdlCisgICAgICogY2FuJ3QgaW52ZW50IGFueXRoaW5nIGJldHRlciAqLworICAgIEN1cmxfYXV0aF9zcG5lZ29fY2xlYW51cChuZWdvKTsKKyAgICByZXR1cm4gQ1VSTEVfTE9HSU5fREVOSUVEOworICB9CisKKyAgaWYoIW5lZ28tPnNwbikgeworICAgIC8qIEdlbmVyYXRlIG91ciBTUE4gKi8KKyAgICBjaGFyICpzcG4gPSBDdXJsX2F1dGhfYnVpbGRfc3BuKHNlcnZpY2UsIE5VTEwsIGhvc3QpOworICAgIGlmKCFzcG4pCisgICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKworICAgIC8qIFBvcHVsYXRlIHRoZSBTUE4gc3RydWN0dXJlICovCisgICAgc3BuX3Rva2VuLnZhbHVlID0gc3BuOworICAgIHNwbl90b2tlbi5sZW5ndGggPSBzdHJsZW4oc3BuKTsKKworICAgIC8qIEltcG9ydCB0aGUgU1BOICovCisgICAgbWFqb3Jfc3RhdHVzID0gZ3NzX2ltcG9ydF9uYW1lKCZtaW5vcl9zdGF0dXMsICZzcG5fdG9rZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdTU19DX05UX0hPU1RCQVNFRF9TRVJWSUNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmVnby0+c3BuKTsKKyAgICBpZihHU1NfRVJST1IobWFqb3Jfc3RhdHVzKSkgeworICAgICAgQ3VybF9nc3NfbG9nX2Vycm9yKGRhdGEsICJnc3NfaW1wb3J0X25hbWUoKSBmYWlsZWQ6ICIsCisgICAgICAgICAgICAgICAgICAgICAgICAgbWFqb3Jfc3RhdHVzLCBtaW5vcl9zdGF0dXMpOworCisgICAgICBmcmVlKHNwbik7CisKKyAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworICAgIH0KKworICAgIGZyZWUoc3BuKTsKKyAgfQorCisgIGlmKGNobGc2NCAmJiAqY2hsZzY0KSB7CisgICAgLyogRGVjb2RlIHRoZSBiYXNlLTY0IGVuY29kZWQgY2hhbGxlbmdlIG1lc3NhZ2UgKi8KKyAgICBpZigqY2hsZzY0ICE9ICc9JykgeworICAgICAgcmVzdWx0ID0gQ3VybF9iYXNlNjRfZGVjb2RlKGNobGc2NCwgJmNobGcsICZjaGxnbGVuKTsKKyAgICAgIGlmKHJlc3VsdCkKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICAvKiBFbnN1cmUgd2UgaGF2ZSBhIHZhbGlkIGNoYWxsZW5nZSBtZXNzYWdlICovCisgICAgaWYoIWNobGcpIHsKKyAgICAgIGluZm9mKGRhdGEsICJTUE5FR08gaGFuZHNoYWtlIGZhaWx1cmUgKGVtcHR5IGNoYWxsZW5nZSBtZXNzYWdlKVxuIik7CisKKyAgICAgIHJldHVybiBDVVJMRV9CQURfQ09OVEVOVF9FTkNPRElORzsKKyAgICB9CisKKyAgICAvKiBTZXR1cCB0aGUgY2hhbGxlbmdlICJpbnB1dCIgc2VjdXJpdHkgYnVmZmVyICovCisgICAgaW5wdXRfdG9rZW4udmFsdWUgPSBjaGxnOworICAgIGlucHV0X3Rva2VuLmxlbmd0aCA9IGNobGdsZW47CisgIH0KKworICAvKiBHZW5lcmF0ZSBvdXIgY2hhbGxlbmdlLXJlc3BvbnNlIG1lc3NhZ2UgKi8KKyAgbWFqb3Jfc3RhdHVzID0gQ3VybF9nc3NfaW5pdF9zZWNfY29udGV4dChkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtaW5vcl9zdGF0dXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5lZ28tPmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVnby0+c3BuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDdXJsX3NwbmVnb19tZWNoX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHU1NfQ19OT19DSEFOTkVMX0JJTkRJTkdTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpbnB1dF90b2tlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3V0cHV0X3Rva2VuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisKKyAgLyogRnJlZSB0aGUgZGVjb2RlZCBjaGFsbGVuZ2UgYXMgaXQgaXMgbm90IHJlcXVpcmVkIGFueW1vcmUgKi8KKyAgQ3VybF9zYWZlZnJlZShpbnB1dF90b2tlbi52YWx1ZSk7CisKKyAgbmVnby0+c3RhdHVzID0gbWFqb3Jfc3RhdHVzOworICBpZihHU1NfRVJST1IobWFqb3Jfc3RhdHVzKSkgeworICAgIGlmKG91dHB1dF90b2tlbi52YWx1ZSkKKyAgICAgIGdzc19yZWxlYXNlX2J1ZmZlcigmdW51c2VkX3N0YXR1cywgJm91dHB1dF90b2tlbik7CisKKyAgICBDdXJsX2dzc19sb2dfZXJyb3IoZGF0YSwgImdzc19pbml0X3NlY19jb250ZXh0KCkgZmFpbGVkOiAiLAorICAgICAgICAgICAgICAgICAgICAgICBtYWpvcl9zdGF0dXMsIG1pbm9yX3N0YXR1cyk7CisKKyAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKyAgfQorCisgIGlmKCFvdXRwdXRfdG9rZW4udmFsdWUgfHwgIW91dHB1dF90b2tlbi5sZW5ndGgpIHsKKyAgICBpZihvdXRwdXRfdG9rZW4udmFsdWUpCisgICAgICBnc3NfcmVsZWFzZV9idWZmZXIoJnVudXNlZF9zdGF0dXMsICZvdXRwdXRfdG9rZW4pOworCisgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisgIH0KKworICBuZWdvLT5vdXRwdXRfdG9rZW4gPSBvdXRwdXRfdG9rZW47CisKKyAgcmV0dXJuIENVUkxFX09LOworfQorCisvKgorICogQ3VybF9hdXRoX2NyZWF0ZV9zcG5lZ29fbWVzc2FnZSgpCisgKgorICogVGhpcyBpcyB1c2VkIHRvIGdlbmVyYXRlIGFuIGFscmVhZHkgZW5jb2RlZCBTUE5FR08gKE5lZ290aWF0ZSkgcmVzcG9uc2UKKyAqIG1lc3NhZ2UgcmVhZHkgZm9yIHNlbmRpbmcgdG8gdGhlIHJlY2lwaWVudC4KKyAqCisgKiBQYXJhbWV0ZXJzOgorICoKKyAqIGRhdGEgICAgICAgIFtpbl0gICAgIC0gVGhlIHNlc3Npb24gaGFuZGxlLgorICogbmVnbyAgICAgICAgW2luL291dF0gLSBUaGUgTmVnb3RpYXRlIGRhdGEgc3RydWN0IGJlaW5nIHVzZWQgYW5kIG1vZGlmaWVkLgorICogb3V0cHRyICAgICAgW2luL291dF0gLSBUaGUgYWRkcmVzcyB3aGVyZSBhIHBvaW50ZXIgdG8gbmV3bHkgYWxsb2NhdGVkIG1lbW9yeQorICogICAgICAgICAgICAgICAgICAgICAgICBob2xkaW5nIHRoZSByZXN1bHQgd2lsbCBiZSBzdG9yZWQgdXBvbiBjb21wbGV0aW9uLgorICogb3V0bGVuICAgICAgW291dF0gICAgLSBUaGUgbGVuZ3RoIG9mIHRoZSBvdXRwdXQgbWVzc2FnZS4KKyAqCisgKiBSZXR1cm5zIENVUkxFX09LIG9uIHN1Y2Nlc3MuCisgKi8KK0NVUkxjb2RlIEN1cmxfYXV0aF9jcmVhdGVfc3BuZWdvX21lc3NhZ2Uoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBuZWdvdGlhdGVkYXRhICpuZWdvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqb3V0cHRyLCBzaXplX3QgKm91dGxlbikKK3sKKyAgQ1VSTGNvZGUgcmVzdWx0OworICBPTV91aW50MzIgbWlub3Jfc3RhdHVzOworCisgIC8qIEJhc2U2NCBlbmNvZGUgdGhlIGFscmVhZHkgZ2VuZXJhdGVkIHJlc3BvbnNlICovCisgIHJlc3VsdCA9IEN1cmxfYmFzZTY0X2VuY29kZShkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVnby0+b3V0cHV0X3Rva2VuLnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVnby0+b3V0cHV0X3Rva2VuLmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB0ciwgb3V0bGVuKTsKKworICBpZihyZXN1bHQpIHsKKyAgICBnc3NfcmVsZWFzZV9idWZmZXIoJm1pbm9yX3N0YXR1cywgJm5lZ28tPm91dHB1dF90b2tlbik7CisgICAgbmVnby0+b3V0cHV0X3Rva2VuLnZhbHVlID0gTlVMTDsKKyAgICBuZWdvLT5vdXRwdXRfdG9rZW4ubGVuZ3RoID0gMDsKKworICAgIHJldHVybiByZXN1bHQ7CisgIH0KKworICBpZighKm91dHB0ciB8fCAhKm91dGxlbikgeworICAgIGdzc19yZWxlYXNlX2J1ZmZlcigmbWlub3Jfc3RhdHVzLCAmbmVnby0+b3V0cHV0X3Rva2VuKTsKKyAgICBuZWdvLT5vdXRwdXRfdG9rZW4udmFsdWUgPSBOVUxMOworICAgIG5lZ28tPm91dHB1dF90b2tlbi5sZW5ndGggPSAwOworCisgICAgcmV0dXJuIENVUkxFX1JFTU9URV9BQ0NFU1NfREVOSUVEOworICB9CisKKyAgcmV0dXJuIENVUkxFX09LOworfQorCisvKgorICogQ3VybF9hdXRoX3NwbmVnb19jbGVhbnVwKCkKKyAqCisgKiBUaGlzIGlzIHVzZWQgdG8gY2xlYW4gdXAgdGhlIFNQTkVHTyAoTmVnb3RpYXRlKSBzcGVjaWZpYyBkYXRhLgorICoKKyAqIFBhcmFtZXRlcnM6CisgKgorICogbmVnbyAgICAgW2luL291dF0gLSBUaGUgTmVnb3RpYXRlIGRhdGEgc3RydWN0IGJlaW5nIGNsZWFuZWQgdXAuCisgKgorICovCit2b2lkIEN1cmxfYXV0aF9zcG5lZ29fY2xlYW51cChzdHJ1Y3QgbmVnb3RpYXRlZGF0YSogbmVnbykKK3sKKyAgT01fdWludDMyIG1pbm9yX3N0YXR1czsKKworICAvKiBGcmVlIG91ciBzZWN1cml0eSBjb250ZXh0ICovCisgIGlmKG5lZ28tPmNvbnRleHQgIT0gR1NTX0NfTk9fQ09OVEVYVCkgeworICAgIGdzc19kZWxldGVfc2VjX2NvbnRleHQoJm1pbm9yX3N0YXR1cywgJm5lZ28tPmNvbnRleHQsIEdTU19DX05PX0JVRkZFUik7CisgICAgbmVnby0+Y29udGV4dCA9IEdTU19DX05PX0NPTlRFWFQ7CisgIH0KKworICAvKiBGcmVlIHRoZSBvdXRwdXQgdG9rZW4gKi8KKyAgaWYobmVnby0+b3V0cHV0X3Rva2VuLnZhbHVlKSB7CisgICAgZ3NzX3JlbGVhc2VfYnVmZmVyKCZtaW5vcl9zdGF0dXMsICZuZWdvLT5vdXRwdXRfdG9rZW4pOworICAgIG5lZ28tPm91dHB1dF90b2tlbi52YWx1ZSA9IE5VTEw7CisgICAgbmVnby0+b3V0cHV0X3Rva2VuLmxlbmd0aCA9IDA7CisKKyAgfQorCisgIC8qIEZyZWUgdGhlIFNQTiAqLworICBpZihuZWdvLT5zcG4gIT0gR1NTX0NfTk9fTkFNRSkgeworICAgIGdzc19yZWxlYXNlX25hbWUoJm1pbm9yX3N0YXR1cywgJm5lZ28tPnNwbik7CisgICAgbmVnby0+c3BuID0gR1NTX0NfTk9fTkFNRTsKKyAgfQorCisgIC8qIFJlc2V0IGFueSB2YXJpYWJsZXMgKi8KKyAgbmVnby0+c3RhdHVzID0gMDsKK30KKworI2VuZGlmIC8qIEhBVkVfR1NTQVBJICYmIFVTRV9TUE5FR08gKi8KZGlmZiAtLWdpdCBhL2xpYi92YXV0aC9zcG5lZ29fc3NwaS5jIGIvbGliL3ZhdXRoL3NwbmVnb19zc3BpLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzk3NDY2NAotLS0gL2Rldi9udWxsCisrKyBiL2xpYi92YXV0aC9zcG5lZ29fc3NwaS5jCkBAIC0wLDAgKzEsMjk3IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqCisgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICoKKyAqIFJGQzQxNzggU2ltcGxlIGFuZCBQcm90ZWN0ZWQgR1NTLUFQSSBOZWdvdGlhdGlvbiBNZWNoYW5pc20KKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaW5jbHVkZSAiY3VybF9zZXR1cC5oIgorCisjaWYgZGVmaW5lZChVU0VfV0lORE9XU19TU1BJKSAmJiBkZWZpbmVkKFVTRV9TUE5FR08pCisKKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKworI2luY2x1ZGUgInZhdXRoL3ZhdXRoLmgiCisjaW5jbHVkZSAidXJsZGF0YS5oIgorI2luY2x1ZGUgImN1cmxfYmFzZTY0LmgiCisjaW5jbHVkZSAid2Fybmxlc3MuaCIKKyNpbmNsdWRlICJjdXJsX211bHRpYnl0ZS5oIgorI2luY2x1ZGUgInNlbmRmLmgiCisKKy8qIFRoZSBsYXN0ICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZTogKi8KKyNpbmNsdWRlICJjdXJsX21lbW9yeS5oIgorI2luY2x1ZGUgIm1lbWRlYnVnLmgiCisKKy8qCisgKiBDdXJsX2F1dGhfZGVjb2RlX3NwbmVnb19tZXNzYWdlKCkKKyAqCisgKiBUaGlzIGlzIHVzZWQgdG8gZGVjb2RlIGFuIGFscmVhZHkgZW5jb2RlZCBTUE5FR08gKE5lZ290aWF0ZSkgY2hhbGxlbmdlCisgKiBtZXNzYWdlLgorICoKKyAqIFBhcmFtZXRlcnM6CisgKgorICogZGF0YSAgICAgICAgW2luXSAgICAgLSBUaGUgc2Vzc2lvbiBoYW5kbGUuCisgKiB1c2VycCAgICAgICBbaW5dICAgICAtIFRoZSB1c2VyIG5hbWUgaW4gdGhlIGZvcm1hdCBVc2VyIG9yIERvbWFpblxVc2VyLgorICogcGFzc2R3cCAgICAgW2luXSAgICAgLSBUaGUgdXNlcidzIHBhc3N3b3JkLgorICogc2VydmljZSAgICAgW2luXSAgICAgLSBUaGUgc2VydmljZSB0eXBlIHN1Y2ggYXMgaHR0cCwgc210cCwgcG9wIG9yIGltYXAuCisgKiBob3N0ICAgICAgICBbaW5dICAgICAtIFRoZSBob3N0IG5hbWUuCisgKiBjaGxnNjQgICAgICBbaW5dICAgICAtIFRoZSBvcHRpb25hbCBiYXNlNjQgZW5jb2RlZCBjaGFsbGVuZ2UgbWVzc2FnZS4KKyAqIG5lZ28gICAgICAgIFtpbi9vdXRdIC0gVGhlIE5lZ290aWF0ZSBkYXRhIHN0cnVjdCBiZWluZyB1c2VkIGFuZCBtb2RpZmllZC4KKyAqCisgKiBSZXR1cm5zIENVUkxFX09LIG9uIHN1Y2Nlc3MuCisgKi8KK0NVUkxjb2RlIEN1cmxfYXV0aF9kZWNvZGVfc3BuZWdvX21lc3NhZ2Uoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnVzZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhc3N3b3JkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzZXJ2aWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpob3N0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjaGxnNjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBuZWdvdGlhdGVkYXRhICpuZWdvKQoreworICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKKyAgc2l6ZV90IGNobGdsZW4gPSAwOworICB1bnNpZ25lZCBjaGFyICpjaGxnID0gTlVMTDsKKyAgUFNlY1BrZ0luZm8gU2VjdXJpdHlQYWNrYWdlOworICBTZWNCdWZmZXIgY2hsZ19idWY7CisgIFNlY0J1ZmZlciByZXNwX2J1ZjsKKyAgU2VjQnVmZmVyRGVzYyBjaGxnX2Rlc2M7CisgIFNlY0J1ZmZlckRlc2MgcmVzcF9kZXNjOworICB1bnNpZ25lZCBsb25nIGF0dHJzOworICBUaW1lU3RhbXAgZXhwaXJ5OyAvKiBGb3IgV2luZG93cyA5eCBjb21wYXRpYmlsaXR5IG9mIFNTUEkgY2FsbHMgKi8KKworI2lmIGRlZmluZWQoQ1VSTF9ESVNBQkxFX1ZFUkJPU0VfU1RSSU5HUykKKyAgKHZvaWQpIGRhdGE7CisjZW5kaWYKKworICBpZihuZWdvLT5jb250ZXh0ICYmIG5lZ28tPnN0YXR1cyA9PSBTRUNfRV9PSykgeworICAgIC8qIFdlIGZpbmlzaGVkIHN1Y2Nlc3NmdWxseSBvdXIgcGFydCBvZiBhdXRoZW50aWNhdGlvbiwgYnV0IHNlcnZlcgorICAgICAqIHJlamVjdGVkIGl0IChzaW5jZSB3ZSdyZSBhZ2FpbiBoZXJlKS4gRXhpdCB3aXRoIGFuIGVycm9yIHNpbmNlIHdlCisgICAgICogY2FuJ3QgaW52ZW50IGFueXRoaW5nIGJldHRlciAqLworICAgIEN1cmxfYXV0aF9zcG5lZ29fY2xlYW51cChuZWdvKTsKKyAgICByZXR1cm4gQ1VSTEVfTE9HSU5fREVOSUVEOworICB9CisKKyAgaWYoIW5lZ28tPnNwbikgeworICAgIC8qIEdlbmVyYXRlIG91ciBTUE4gKi8KKyAgICBuZWdvLT5zcG4gPSBDdXJsX2F1dGhfYnVpbGRfc3BuKHNlcnZpY2UsIGhvc3QsIE5VTEwpOworICAgIGlmKCFuZWdvLT5zcG4pCisgICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKyAgfQorCisgIGlmKCFuZWdvLT5vdXRwdXRfdG9rZW4pIHsKKyAgICAvKiBRdWVyeSB0aGUgc2VjdXJpdHkgcGFja2FnZSBmb3IgTmVnb3RpYXRlICovCisgICAgbmVnby0+c3RhdHVzID0gc19wU2VjRm4tPlF1ZXJ5U2VjdXJpdHlQYWNrYWdlSW5mbygoVENIQVIgKikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRFWFQoU1BfTkFNRV9ORUdPVElBVEUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlNlY3VyaXR5UGFja2FnZSk7CisgICAgaWYobmVnby0+c3RhdHVzICE9IFNFQ19FX09LKQorICAgICAgcmV0dXJuIENVUkxFX05PVF9CVUlMVF9JTjsKKworICAgIG5lZ28tPnRva2VuX21heCA9IFNlY3VyaXR5UGFja2FnZS0+Y2JNYXhUb2tlbjsKKworICAgIC8qIFJlbGVhc2UgdGhlIHBhY2thZ2UgYnVmZmVyIGFzIGl0IGlzIG5vdCByZXF1aXJlZCBhbnltb3JlICovCisgICAgc19wU2VjRm4tPkZyZWVDb250ZXh0QnVmZmVyKFNlY3VyaXR5UGFja2FnZSk7CisKKyAgICAvKiBBbGxvY2F0ZSBvdXIgb3V0cHV0IGJ1ZmZlciAqLworICAgIG5lZ28tPm91dHB1dF90b2tlbiA9IG1hbGxvYyhuZWdvLT50b2tlbl9tYXgpOworICAgIGlmKCFuZWdvLT5vdXRwdXRfdG9rZW4pCisgICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKyB9CisKKyAgaWYoIW5lZ28tPmNyZWRlbnRpYWxzKSB7CisgICAgLyogRG8gd2UgaGF2ZSBjcmVkaWVudGlhbHMgdG8gdXNlIG9yIGFyZSB3ZSB1c2luZyBzaW5nbGUgc2lnbi1vbj8gKi8KKyAgICBpZih1c2VyICYmICp1c2VyKSB7CisgICAgICAvKiBQb3B1bGF0ZSBvdXIgaWRlbnRpdHkgc3RydWN0dXJlICovCisgICAgICByZXN1bHQgPSBDdXJsX2NyZWF0ZV9zc3BpX2lkZW50aXR5KHVzZXIsIHBhc3N3b3JkLCAmbmVnby0+aWRlbnRpdHkpOworICAgICAgaWYocmVzdWx0KQorICAgICAgICByZXR1cm4gcmVzdWx0OworCisgICAgICAvKiBBbGxvdyBwcm9wZXIgY2xlYW51cCBvZiB0aGUgaWRlbnRpdHkgc3RydWN0dXJlICovCisgICAgICBuZWdvLT5wX2lkZW50aXR5ID0gJm5lZ28tPmlkZW50aXR5OworICAgIH0KKyAgICBlbHNlCisgICAgICAvKiBVc2UgdGhlIGN1cnJlbnQgV2luZG93cyB1c2VyICovCisgICAgICBuZWdvLT5wX2lkZW50aXR5ID0gTlVMTDsKKworICAgIC8qIEFsbG9jYXRlIG91ciBjcmVkZW50aWFscyBoYW5kbGUgKi8KKyAgICBuZWdvLT5jcmVkZW50aWFscyA9IG1hbGxvYyhzaXplb2YoQ3JlZEhhbmRsZSkpOworICAgIGlmKCFuZWdvLT5jcmVkZW50aWFscykKKyAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworCisgICAgbWVtc2V0KG5lZ28tPmNyZWRlbnRpYWxzLCAwLCBzaXplb2YoQ3JlZEhhbmRsZSkpOworCisgICAgLyogQWNxdWlyZSBvdXIgY3JlZGVudGlhbHMgaGFuZGxlICovCisgICAgbmVnby0+c3RhdHVzID0KKyAgICAgIHNfcFNlY0ZuLT5BY3F1aXJlQ3JlZGVudGlhbHNIYW5kbGUoTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFRDSEFSICopVEVYVChTUF9OQU1FX05FR09USUFURSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNFQ1BLR19DUkVEX09VVEJPVU5ELCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZWdvLT5wX2lkZW50aXR5LCBOVUxMLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZWdvLT5jcmVkZW50aWFscywgJmV4cGlyeSk7CisgICAgaWYobmVnby0+c3RhdHVzICE9IFNFQ19FX09LKQorICAgICAgcmV0dXJuIENVUkxFX0xPR0lOX0RFTklFRDsKKworICAgIC8qIEFsbG9jYXRlIG91ciBuZXcgY29udGV4dCBoYW5kbGUgKi8KKyAgICBuZWdvLT5jb250ZXh0ID0gbWFsbG9jKHNpemVvZihDdHh0SGFuZGxlKSk7CisgICAgaWYoIW5lZ28tPmNvbnRleHQpCisgICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKworICAgIG1lbXNldChuZWdvLT5jb250ZXh0LCAwLCBzaXplb2YoQ3R4dEhhbmRsZSkpOworICB9CisKKyAgaWYoY2hsZzY0ICYmICpjaGxnNjQpIHsKKyAgICAvKiBEZWNvZGUgdGhlIGJhc2UtNjQgZW5jb2RlZCBjaGFsbGVuZ2UgbWVzc2FnZSAqLworICAgIGlmKCpjaGxnNjQgIT0gJz0nKSB7CisgICAgICByZXN1bHQgPSBDdXJsX2Jhc2U2NF9kZWNvZGUoY2hsZzY0LCAmY2hsZywgJmNobGdsZW4pOworICAgICAgaWYocmVzdWx0KQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIC8qIEVuc3VyZSB3ZSBoYXZlIGEgdmFsaWQgY2hhbGxlbmdlIG1lc3NhZ2UgKi8KKyAgICBpZighY2hsZykgeworICAgICAgaW5mb2YoZGF0YSwgIlNQTkVHTyBoYW5kc2hha2UgZmFpbHVyZSAoZW1wdHkgY2hhbGxlbmdlIG1lc3NhZ2UpXG4iKTsKKworICAgICAgcmV0dXJuIENVUkxFX0JBRF9DT05URU5UX0VOQ09ESU5HOworICAgIH0KKworICAgIC8qIFNldHVwIHRoZSBjaGFsbGVuZ2UgImlucHV0IiBzZWN1cml0eSBidWZmZXIgKi8KKyAgICBjaGxnX2Rlc2MudWxWZXJzaW9uID0gU0VDQlVGRkVSX1ZFUlNJT047CisgICAgY2hsZ19kZXNjLmNCdWZmZXJzICA9IDE7CisgICAgY2hsZ19kZXNjLnBCdWZmZXJzICA9ICZjaGxnX2J1ZjsKKyAgICBjaGxnX2J1Zi5CdWZmZXJUeXBlID0gU0VDQlVGRkVSX1RPS0VOOworICAgIGNobGdfYnVmLnB2QnVmZmVyICAgPSBjaGxnOworICAgIGNobGdfYnVmLmNiQnVmZmVyICAgPSBjdXJseF91enRvdWwoY2hsZ2xlbik7CisgIH0KKworICAvKiBTZXR1cCB0aGUgcmVzcG9uc2UgIm91dHB1dCIgc2VjdXJpdHkgYnVmZmVyICovCisgIHJlc3BfZGVzYy51bFZlcnNpb24gPSBTRUNCVUZGRVJfVkVSU0lPTjsKKyAgcmVzcF9kZXNjLmNCdWZmZXJzICA9IDE7CisgIHJlc3BfZGVzYy5wQnVmZmVycyAgPSAmcmVzcF9idWY7CisgIHJlc3BfYnVmLkJ1ZmZlclR5cGUgPSBTRUNCVUZGRVJfVE9LRU47CisgIHJlc3BfYnVmLnB2QnVmZmVyICAgPSBuZWdvLT5vdXRwdXRfdG9rZW47CisgIHJlc3BfYnVmLmNiQnVmZmVyICAgPSBjdXJseF91enRvdWwobmVnby0+dG9rZW5fbWF4KTsKKworICAvKiBHZW5lcmF0ZSBvdXIgY2hhbGxlbmdlLXJlc3BvbnNlIG1lc3NhZ2UgKi8KKyAgbmVnby0+c3RhdHVzID0gc19wU2VjRm4tPkluaXRpYWxpemVTZWN1cml0eUNvbnRleHQobmVnby0+Y3JlZGVudGlhbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNobGcgPyBuZWdvLT5jb250ZXh0IDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5lZ28tPnNwbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVNDX1JFUV9DT05GSURFTlRJQUxJVFksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIFNFQ1VSSVRZX05BVElWRV9EUkVQLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGxnID8gJmNobGdfZGVzYyA6IE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIG5lZ28tPmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZXNwX2Rlc2MsICZhdHRycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmV4cGlyeSk7CisKKyAgLyogRnJlZSB0aGUgZGVjb2RlZCBjaGFsbGVuZ2UgYXMgaXQgaXMgbm90IHJlcXVpcmVkIGFueW1vcmUgKi8KKyAgZnJlZShjaGxnKTsKKworICBpZihHU1NfRVJST1IobmVnby0+c3RhdHVzKSkgeworICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworICB9CisKKyAgaWYobmVnby0+c3RhdHVzID09IFNFQ19JX0NPTVBMRVRFX05FRURFRCB8fAorICAgICBuZWdvLT5zdGF0dXMgPT0gU0VDX0lfQ09NUExFVEVfQU5EX0NPTlRJTlVFKSB7CisgICAgbmVnby0+c3RhdHVzID0gc19wU2VjRm4tPkNvbXBsZXRlQXV0aFRva2VuKG5lZ28tPmNvbnRleHQsICZyZXNwX2Rlc2MpOworICAgIGlmKEdTU19FUlJPUihuZWdvLT5zdGF0dXMpKSB7CisgICAgICByZXR1cm4gQ1VSTEVfUkVDVl9FUlJPUjsKKyAgICB9CisgIH0KKworICBuZWdvLT5vdXRwdXRfdG9rZW5fbGVuZ3RoID0gcmVzcF9idWYuY2JCdWZmZXI7CisKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworLyoKKyAqIEN1cmxfYXV0aF9jcmVhdGVfc3BuZWdvX21lc3NhZ2UoKQorICoKKyAqIFRoaXMgaXMgdXNlZCB0byBnZW5lcmF0ZSBhbiBhbHJlYWR5IGVuY29kZWQgU1BORUdPIChOZWdvdGlhdGUpIHJlc3BvbnNlCisgKiBtZXNzYWdlIHJlYWR5IGZvciBzZW5kaW5nIHRvIHRoZSByZWNpcGllbnQuCisgKgorICogUGFyYW1ldGVyczoKKyAqCisgKiBkYXRhICAgICAgICBbaW5dICAgICAtIFRoZSBzZXNzaW9uIGhhbmRsZS4KKyAqIG5lZ28gICAgICAgIFtpbi9vdXRdIC0gVGhlIE5lZ290aWF0ZSBkYXRhIHN0cnVjdCBiZWluZyB1c2VkIGFuZCBtb2RpZmllZC4KKyAqIG91dHB0ciAgICAgIFtpbi9vdXRdIC0gVGhlIGFkZHJlc3Mgd2hlcmUgYSBwb2ludGVyIHRvIG5ld2x5IGFsbG9jYXRlZCBtZW1vcnkKKyAqICAgICAgICAgICAgICAgICAgICAgICAgaG9sZGluZyB0aGUgcmVzdWx0IHdpbGwgYmUgc3RvcmVkIHVwb24gY29tcGxldGlvbi4KKyAqIG91dGxlbiAgICAgIFtvdXRdICAgIC0gVGhlIGxlbmd0aCBvZiB0aGUgb3V0cHV0IG1lc3NhZ2UuCisgKgorICogUmV0dXJucyBDVVJMRV9PSyBvbiBzdWNjZXNzLgorICovCitDVVJMY29kZSBDdXJsX2F1dGhfY3JlYXRlX3NwbmVnb19tZXNzYWdlKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbmVnb3RpYXRlZGF0YSAqbmVnbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKm91dHB0ciwgc2l6ZV90ICpvdXRsZW4pCit7CisgIENVUkxjb2RlIHJlc3VsdDsKKworICAvKiBCYXNlNjQgZW5jb2RlIHRoZSBhbHJlYWR5IGdlbmVyYXRlZCByZXNwb25zZSAqLworICByZXN1bHQgPSBDdXJsX2Jhc2U2NF9lbmNvZGUoZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCBjaGFyKikgbmVnby0+b3V0cHV0X3Rva2VuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVnby0+b3V0cHV0X3Rva2VuX2xlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB0ciwgb3V0bGVuKTsKKworICBpZihyZXN1bHQpCisgICAgcmV0dXJuIHJlc3VsdDsKKworICBpZighKm91dHB0ciB8fCAhKm91dGxlbikKKyAgICByZXR1cm4gQ1VSTEVfUkVNT1RFX0FDQ0VTU19ERU5JRUQ7CisKKyAgcmV0dXJuIENVUkxFX09LOworfQorCisvKgorICogQ3VybF9hdXRoX3NwbmVnb19jbGVhbnVwKCkKKyAqCisgKiBUaGlzIGlzIHVzZWQgdG8gY2xlYW4gdXAgdGhlIFNQTkVHTyAoTmVnb3RpYXRlKSBzcGVjaWZpYyBkYXRhLgorICoKKyAqIFBhcmFtZXRlcnM6CisgKgorICogbmVnbyAgICAgW2luL291dF0gLSBUaGUgTmVnb3RpYXRlIGRhdGEgc3RydWN0IGJlaW5nIGNsZWFuZWQgdXAuCisgKgorICovCit2b2lkIEN1cmxfYXV0aF9zcG5lZ29fY2xlYW51cChzdHJ1Y3QgbmVnb3RpYXRlZGF0YSogbmVnbykKK3sKKyAgLyogRnJlZSBvdXIgc2VjdXJpdHkgY29udGV4dCAqLworICBpZihuZWdvLT5jb250ZXh0KSB7CisgICAgc19wU2VjRm4tPkRlbGV0ZVNlY3VyaXR5Q29udGV4dChuZWdvLT5jb250ZXh0KTsKKyAgICBmcmVlKG5lZ28tPmNvbnRleHQpOworICAgIG5lZ28tPmNvbnRleHQgPSBOVUxMOworICB9CisKKyAgLyogRnJlZSBvdXIgY3JlZGVudGlhbHMgaGFuZGxlICovCisgIGlmKG5lZ28tPmNyZWRlbnRpYWxzKSB7CisgICAgc19wU2VjRm4tPkZyZWVDcmVkZW50aWFsc0hhbmRsZShuZWdvLT5jcmVkZW50aWFscyk7CisgICAgZnJlZShuZWdvLT5jcmVkZW50aWFscyk7CisgICAgbmVnby0+Y3JlZGVudGlhbHMgPSBOVUxMOworICB9CisKKyAgLyogRnJlZSBvdXIgaWRlbnRpdHkgKi8KKyAgQ3VybF9zc3BpX2ZyZWVfaWRlbnRpdHkobmVnby0+cF9pZGVudGl0eSk7CisgIG5lZ28tPnBfaWRlbnRpdHkgPSBOVUxMOworCisgIC8qIEZyZWUgdGhlIFNQTiBhbmQgb3V0cHV0IHRva2VuICovCisgIEN1cmxfc2FmZWZyZWUobmVnby0+c3BuKTsKKyAgQ3VybF9zYWZlZnJlZShuZWdvLT5vdXRwdXRfdG9rZW4pOworCisgIC8qIFJlc2V0IGFueSB2YXJpYWJsZXMgKi8KKyAgbmVnby0+c3RhdHVzID0gMDsKKyAgbmVnby0+dG9rZW5fbWF4ID0gMDsKK30KKworI2VuZGlmIC8qIFVTRV9XSU5ET1dTX1NTUEkgJiYgVVNFX1NQTkVHTyAqLwpkaWZmIC0tZ2l0IGEvbGliL3ZhdXRoL3ZhdXRoLmMgYi9saWIvdmF1dGgvdmF1dGguYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MDJlMmQ0Ci0tLSAvZGV2L251bGwKKysrIGIvbGliL3ZhdXRoL3ZhdXRoLmMKQEAgLTAsMCArMSwxMDYgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKyAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorICoKKyAqIENvcHlyaWdodCAoQykgMjAxNCAtIDIwMTYsIFN0ZXZlIEhvbG1lLCA8c3RldmVfaG9sbWVAaG90bWFpbC5jb20+LgorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqCisgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpbmNsdWRlICJjdXJsX3NldHVwLmgiCisKKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKworI2luY2x1ZGUgInZhdXRoLmgiCisjaW5jbHVkZSAiY3VybF9tdWx0aWJ5dGUuaCIKKyNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgorCisvKiBUaGUgbGFzdCAjaW5jbHVkZSBmaWxlcyBzaG91bGQgYmU6ICovCisjaW5jbHVkZSAiY3VybF9tZW1vcnkuaCIKKyNpbmNsdWRlICJtZW1kZWJ1Zy5oIgorCisvKgorICogQ3VybF9hdXRoX2J1aWxkX3NwbigpCisgKgorICogVGhpcyBpcyB1c2VkIHRvIGJ1aWxkIGEgU1BOIHN0cmluZyBpbiB0aGUgZm9sbG93aW5nIGZvcm1hdHM6CisgKgorICogc2VydmljZS9ob3N0QHJlYWxtIChOb3QgY3VycmVudGx5IHVzZWQpCisgKiBzZXJ2aWNlL2hvc3QgICAgICAgKE5vdCB1c2VkIGJ5IEdTUy1BUEkpCisgKiBzZXJ2aWNlQHJlYWxtICAgICAgKE5vdCB1c2VkIGJ5IFdpbmRvd3MgU1NQSSkKKyAqCisgKiBQYXJhbWV0ZXJzOgorICoKKyAqIHNlcnZpY2UgIFtpbl0gLSBUaGUgc2VydmljZSB0eXBlIHN1Y2ggYXMgaHR0cCwgc210cCwgcG9wIG9yIGltYXAuCisgKiBob3N0ICAgICBbaW5dIC0gVGhlIGhvc3QgbmFtZS4KKyAqIHJlYWxtICAgIFtpbl0gLSBUaGUgcmVhbG0uCisgKgorICogUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIG5ld2x5IGFsbG9jYXRlZCBTUE4uCisgKi8KKyNpZiAhZGVmaW5lZChVU0VfV0lORE9XU19TU1BJKQorY2hhciAqQ3VybF9hdXRoX2J1aWxkX3Nwbihjb25zdCBjaGFyICpzZXJ2aWNlLCBjb25zdCBjaGFyICpob3N0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpyZWFsbSkKK3sKKyAgY2hhciAqc3BuID0gTlVMTDsKKworICAvKiBHZW5lcmF0ZSBvdXIgU1BOICovCisgIGlmKGhvc3QgJiYgcmVhbG0pCisgICAgc3BuID0gYXByaW50ZigiJXMvJXNAJXMiLCBzZXJ2aWNlLCBob3N0LCByZWFsbSk7CisgIGVsc2UgaWYoaG9zdCkKKyAgICBzcG4gPSBhcHJpbnRmKCIlcy8lcyIsIHNlcnZpY2UsIGhvc3QpOworICBlbHNlIGlmKHJlYWxtKQorICAgIHNwbiA9IGFwcmludGYoIiVzQCVzIiwgc2VydmljZSwgcmVhbG0pOworCisgIC8qIFJldHVybiBvdXIgbmV3bHkgYWxsb2NhdGVkIFNQTiAqLworICByZXR1cm4gc3BuOworfQorI2Vsc2UKK1RDSEFSICpDdXJsX2F1dGhfYnVpbGRfc3BuKGNvbnN0IGNoYXIgKnNlcnZpY2UsIGNvbnN0IGNoYXIgKmhvc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpyZWFsbSkKK3sKKyAgY2hhciAqdXRmOF9zcG4gPSBOVUxMOworICBUQ0hBUiAqdGNoYXJfc3BuID0gTlVMTDsKKworICAodm9pZCkgcmVhbG07CisKKyAgLyogTm90ZTogV2UgY291bGQgdXNlIERzTWFrZVNQTigpIG9yIERzQ2xpZW50TWFrZVNwbkZvclRhcmdldFNlcnZlcigpIHJhdGhlcgorICAgICB0aGFuIGRvaW5nIHRoaXMgb3Vyc2VsdmVzIGJ1dCB0aGUgZmlyc3QgaXMgb25seSBhdmFpbGFibGUgaW4gV2luZG93cyBYUAorICAgICBhbmQgV2luZG93cyBTZXJ2ZXIgMjAwMyBhbmQgdGhlIGxhdHRlciBpcyBvbmx5IGF2YWlsYWJsZSBpbiBXaW5kb3dzIDIwMDAKKyAgICAgYnV0IG5vdCBXaW5kb3dzOTUvOTgvTUUgb3IgV2luZG93cyBOVDQuMCB1bmxlc3MgdGhlIEFjdGl2ZSBEaXJlY3RvcnkKKyAgICAgQ2xpZW50IEV4dGVuc2lvbnMgYXJlIGluc3RhbGxlZC4gQXMgc3VjaCBpdCBpcyBmYXIgc2ltcGxlciBmb3IgdXMgdG8KKyAgICAgZm9ybXVsYXRlIHRoZSBTUE4gaW5zdGVhZC4gKi8KKworICAvKiBHZW5lcmF0ZSBvdXIgVVRGOCBiYXNlZCBTUE4gKi8KKyAgdXRmOF9zcG4gPSBhcHJpbnRmKCIlcy8lcyIsIHNlcnZpY2UsIGhvc3QpOworICBpZighdXRmOF9zcG4pIHsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQorCisgIC8qIEFsbG9jYXRlIG91ciBUQ0hBUiBiYXNlZCBTUE4gKi8KKyAgdGNoYXJfc3BuID0gQ3VybF9jb252ZXJ0X1VURjhfdG9fdGNoYXIodXRmOF9zcG4pOworICBpZighdGNoYXJfc3BuKSB7CisgICAgZnJlZSh1dGY4X3Nwbik7CisKKyAgICByZXR1cm4gTlVMTDsKKyAgfQorCisgIC8qIFJlbGVhc2UgdGhlIFVURjggdmFyaWFudCB3aGVuIG9wZXJhdGluZyB3aXRoIFVuaWNvZGUgKi8KKyAgQ3VybF91bmljb2RlZnJlZSh1dGY4X3Nwbik7CisKKyAgLyogUmV0dXJuIG91ciBuZXdseSBhbGxvY2F0ZWQgU1BOICovCisgIHJldHVybiB0Y2hhcl9zcG47Cit9CisjZW5kaWYgLyogVVNFX1dJTkRPV1NfU1NQSSAqLworCmRpZmYgLS1naXQgYS9saWIvdmF1dGgvdmF1dGguaCBiL2xpYi92YXV0aC92YXV0aC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjNTEzMWMKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvdmF1dGgvdmF1dGguaApAQCAtMCwwICsxLDE4OSBAQAorI2lmbmRlZiBIRUFERVJfQ1VSTF9WQVVUSF9ICisjZGVmaW5lIEhFQURFUl9DVVJMX1ZBVVRIX0gKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKyAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorICoKKyAqIENvcHlyaWdodCAoQykgMjAxNCAtIDIwMTYsIFN0ZXZlIEhvbG1lLCA8c3RldmVfaG9sbWVAaG90bWFpbC5jb20+LgorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqCisgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KKworc3RydWN0IFNlc3Npb25IYW5kbGU7CisKKyNpZiAhZGVmaW5lZChDVVJMX0RJU0FCTEVfQ1JZUFRPX0FVVEgpCitzdHJ1Y3QgZGlnZXN0ZGF0YTsKKyNlbmRpZgorCisjaWYgZGVmaW5lZChVU0VfTlRMTSkKK3N0cnVjdCBudGxtZGF0YTsKKyNlbmRpZgorCisjaWYgZGVmaW5lZChVU0VfS0VSQkVST1M1KQorc3RydWN0IGtlcmJlcm9zNWRhdGE7CisjZW5kaWYKKworI2lmIChkZWZpbmVkKEhBVkVfR1NTQVBJKSB8fCBkZWZpbmVkKFVTRV9XSU5ET1dTX1NTUEkpKSAmJiBkZWZpbmVkKFVTRV9TUE5FR08pCitzdHJ1Y3QgbmVnb3RpYXRlZGF0YTsKKyNlbmRpZgorCisjaWYgZGVmaW5lZChVU0VfV0lORE9XU19TU1BJKQorI2RlZmluZSBHU1NfRVJST1Ioc3RhdHVzKSAoc3RhdHVzICYgMHg4MDAwMDAwMCkKKyNlbmRpZgorCisvKiBUaGlzIGlzIHVzZWQgdG8gYnVpbGQgYSBTUE4gc3RyaW5nICovCisjaWYgIWRlZmluZWQoVVNFX1dJTkRPV1NfU1NQSSkKK2NoYXIgKkN1cmxfYXV0aF9idWlsZF9zcG4oY29uc3QgY2hhciAqc2VydmljZSwgY29uc3QgY2hhciAqaG9zdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcmVhbG0pOworI2Vsc2UKK1RDSEFSICpDdXJsX2F1dGhfYnVpbGRfc3BuKGNvbnN0IGNoYXIgKnNlcnZpY2UsIGNvbnN0IGNoYXIgKmhvc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpyZWFsbSk7CisjZW5kaWYKKworLyogVGhpcyBpcyB1c2VkIHRvIGdlbmVyYXRlIGEgYmFzZTY0IGVuY29kZWQgUExBSU4gY2xlYXJ0ZXh0IG1lc3NhZ2UgKi8KK0NVUkxjb2RlIEN1cmxfYXV0aF9jcmVhdGVfcGxhaW5fbWVzc2FnZShzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp1c2VycCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwYXNzd2RwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipvdXRwdHIsIHNpemVfdCAqb3V0bGVuKTsKKworLyogVGhpcyBpcyB1c2VkIHRvIGdlbmVyYXRlIGEgYmFzZTY0IGVuY29kZWQgTE9HSU4gY2xlYXJ0ZXh0IG1lc3NhZ2UgKi8KK0NVUkxjb2RlIEN1cmxfYXV0aF9jcmVhdGVfbG9naW5fbWVzc2FnZShzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp2YWx1ZXAsIGNoYXIgKipvdXRwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICpvdXRsZW4pOworCisvKiBUaGlzIGlzIHVzZWQgdG8gZ2VuZXJhdGUgYSBiYXNlNjQgZW5jb2RlZCBFWFRFUk5BTCBjbGVhcnRleHQgbWVzc2FnZSAqLworQ1VSTGNvZGUgQ3VybF9hdXRoX2NyZWF0ZV9leHRlcm5hbF9tZXNzYWdlKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnVzZXIsIGNoYXIgKipvdXRwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICpvdXRsZW4pOworCisjaWYgIWRlZmluZWQoQ1VSTF9ESVNBQkxFX0NSWVBUT19BVVRIKQorLyogVGhpcyBpcyB1c2VkIHRvIGRlY29kZSBhIENSQU0tTUQ1IGNoYWxsZW5nZSBtZXNzYWdlICovCitDVVJMY29kZSBDdXJsX2F1dGhfZGVjb2RlX2NyYW1fbWQ1X21lc3NhZ2UoY29uc3QgY2hhciAqY2hsZzY0LCBjaGFyICoqb3V0cHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqb3V0bGVuKTsKKworLyogVGhpcyBpcyB1c2VkIHRvIGdlbmVyYXRlIGEgQ1JBTS1NRDUgcmVzcG9uc2UgbWVzc2FnZSAqLworQ1VSTGNvZGUgQ3VybF9hdXRoX2NyZWF0ZV9jcmFtX21kNV9tZXNzYWdlKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNobGcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdXNlcnAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGFzc3dkcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqb3V0cHRyLCBzaXplX3QgKm91dGxlbik7CisKKy8qIFRoaXMgaXMgdXNlZCB0byBnZW5lcmF0ZSBhIGJhc2U2NCBlbmNvZGVkIERJR0VTVC1NRDUgcmVzcG9uc2UgbWVzc2FnZSAqLworQ1VSTGNvZGUgQ3VybF9hdXRoX2NyZWF0ZV9kaWdlc3RfbWQ1X21lc3NhZ2Uoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjaGxnNjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp1c2VycCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhc3N3ZHAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzZXJ2aWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKm91dHB0ciwgc2l6ZV90ICpvdXRsZW4pOworCisvKiBUaGlzIGlzIHVzZWQgdG8gZGVjb2RlIGEgSFRUUCBESUdFU1QgY2hhbGxlbmdlIG1lc3NhZ2UgKi8KK0NVUkxjb2RlIEN1cmxfYXV0aF9kZWNvZGVfZGlnZXN0X2h0dHBfbWVzc2FnZShjb25zdCBjaGFyICpjaGxnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkaWdlc3RkYXRhICpkaWdlc3QpOworCisvKiBUaGlzIGlzIHVzZWQgdG8gZ2VuZXJhdGUgYSBIVFRQIERJR0VTVCByZXNwb25zZSBtZXNzYWdlICovCitDVVJMY29kZSBDdXJsX2F1dGhfY3JlYXRlX2RpZ2VzdF9odHRwX21lc3NhZ2Uoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdXNlcnAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGFzc3dkcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpyZXF1ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnVyaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZGlnZXN0ZGF0YSAqZGlnZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipvdXRwdHIsIHNpemVfdCAqb3V0bGVuKTsKKworLyogVGhpcyBpcyB1c2VkIHRvIGNsZWFuIHVwIHRoZSBkaWdlc3Qgc3BlY2lmaWMgZGF0YSAqLwordm9pZCBDdXJsX2F1dGhfZGlnZXN0X2NsZWFudXAoc3RydWN0IGRpZ2VzdGRhdGEgKmRpZ2VzdCk7CisjZW5kaWYgLyogIUNVUkxfRElTQUJMRV9DUllQVE9fQVVUSCAqLworCisjaWYgZGVmaW5lZChVU0VfTlRMTSkKKy8qIFRoaXMgaXMgdXNlZCB0byBnZW5lcmF0ZSBhIGJhc2U2NCBlbmNvZGVkIE5UTE0gdHlwZS0xIG1lc3NhZ2UgKi8KK0NVUkxjb2RlIEN1cmxfYXV0aF9jcmVhdGVfbnRsbV90eXBlMV9tZXNzYWdlKGNvbnN0IGNoYXIgKnVzZXJwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGFzc3dkcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBudGxtZGF0YSAqbnRsbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipvdXRwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKm91dGxlbik7CisKKy8qIFRoaXMgaXMgdXNlZCB0byBkZWNvZGUgYSBiYXNlNjQgZW5jb2RlZCBOVExNIHR5cGUtMiBtZXNzYWdlICovCitDVVJMY29kZSBDdXJsX2F1dGhfZGVjb2RlX250bG1fdHlwZTJfbWVzc2FnZShzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnR5cGUybXNnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG50bG1kYXRhICpudGxtKTsKKworLyogVGhpcyBpcyB1c2VkIHRvIGdlbmVyYXRlIGEgYmFzZTY0IGVuY29kZWQgTlRMTSB0eXBlLTMgbWVzc2FnZSAqLworQ1VSTGNvZGUgQ3VybF9hdXRoX2NyZWF0ZV9udGxtX3R5cGUzX21lc3NhZ2Uoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp1c2VycCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhc3N3ZHAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbnRsbWRhdGEgKm50bG0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqb3V0cHRyLCBzaXplX3QgKm91dGxlbik7CisKKy8qIFRoaXMgaXMgdXNlZCB0byBjbGVhbiB1cCB0aGUgTlRMTSBzcGVjaWZpYyBkYXRhICovCit2b2lkIEN1cmxfYXV0aF9udGxtX2NsZWFudXAoc3RydWN0IG50bG1kYXRhICpudGxtKTsKKyNlbmRpZiAvKiBVU0VfTlRMTSAqLworCisvKiBUaGlzIGlzIHVzZWQgdG8gZ2VuZXJhdGUgYSBiYXNlNjQgZW5jb2RlZCBPQXV0aCAyLjAgbWVzc2FnZSAqLworQ1VSTGNvZGUgQ3VybF9hdXRoX2NyZWF0ZV9vYXV0aF9iZWFyZXJfbWVzc2FnZShzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdXNlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqaG9zdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbG9uZyBwb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpiZWFyZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipvdXRwdHIsIHNpemVfdCAqb3V0bGVuKTsKKyNpZiBkZWZpbmVkKFVTRV9LRVJCRVJPUzUpCisvKiBUaGlzIGlzIHVzZWQgdG8gZ2VuZXJhdGUgYSBiYXNlNjQgZW5jb2RlZCBHU1NBUEkgKEtlcmJlcm9zIFY1KSB1c2VyIHRva2VuCisgICBtZXNzYWdlICovCitDVVJMY29kZSBDdXJsX2F1dGhfY3JlYXRlX2dzc2FwaV91c2VyX21lc3NhZ2Uoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdXNlcnAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGFzc3dkcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzZXJ2aWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmhvc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9vbCBtdXR1YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY2hsZzY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBrZXJiZXJvczVkYXRhICprcmI1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipvdXRwdHIsIHNpemVfdCAqb3V0bGVuKTsKKworLyogVGhpcyBpcyB1c2VkIHRvIGdlbmVyYXRlIGEgYmFzZTY0IGVuY29kZWQgR1NTQVBJIChLZXJiZXJvcyBWNSkgc2VjdXJpdHkKKyAgIHRva2VuIG1lc3NhZ2UgKi8KK0NVUkxjb2RlIEN1cmxfYXV0aF9jcmVhdGVfZ3NzYXBpX3NlY3VyaXR5X21lc3NhZ2Uoc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmlucHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qga2VyYmVyb3M1ZGF0YSAqa3JiNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKm91dHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICpvdXRsZW4pOworCisvKiBUaGlzIGlzIHVzZWQgdG8gY2xlYW4gdXAgdGhlIEdTU0FQSSBzcGVjaWZpYyBkYXRhICovCit2b2lkIEN1cmxfYXV0aF9nc3NhcGlfY2xlYW51cChzdHJ1Y3Qga2VyYmVyb3M1ZGF0YSAqa3JiNSk7CisjZW5kaWYgLyogVVNFX0tFUkJFUk9TNSAqLworCisjaWYgKGRlZmluZWQoSEFWRV9HU1NBUEkpIHx8IGRlZmluZWQoVVNFX1dJTkRPV1NfU1NQSSkpICYmIGRlZmluZWQoVVNFX1NQTkVHTykKKy8qIFRoaXMgaXMgdXNlZCB0byBkZWNvZGUgYSBiYXNlNjQgZW5jb2RlZCBTUE5FR08gKE5lZ290aWF0ZSkgY2hhbGxlbmdlCisgICBtZXNzYWdlICovCitDVVJMY29kZSBDdXJsX2F1dGhfZGVjb2RlX3NwbmVnb19tZXNzYWdlKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp1c2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwYXNzd29vZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc2VydmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqaG9zdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY2hsZzY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbmVnb3RpYXRlZGF0YSAqbmVnbyk7CisKKy8qIFRoaXMgaXMgdXNlZCB0byBnZW5lcmF0ZSBhIGJhc2U2NCBlbmNvZGVkIFNQTkVHTyAoTmVnb3RpYXRlKSByZXNwb25zZQorICAgbWVzc2FnZSAqLworQ1VSTGNvZGUgQ3VybF9hdXRoX2NyZWF0ZV9zcG5lZ29fbWVzc2FnZShzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG5lZ290aWF0ZWRhdGEgKm5lZ28sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipvdXRwdHIsIHNpemVfdCAqb3V0bGVuKTsKKworLyogVGhpcyBpcyB1c2VkIHRvIGNsZWFuIHVwIHRoZSBTUE5FR08gc3BlY2lmaWVjIGRhdGEgKi8KK3ZvaWQgQ3VybF9hdXRoX3NwbmVnb19jbGVhbnVwKHN0cnVjdCBuZWdvdGlhdGVkYXRhKiBuZWdvKTsKKworI2VuZGlmIC8qIChIQVZFX0dTU0FQSSB8fCBVU0VfV0lORE9XU19TU1BJKSAmJiBVU0VfU1BORUdPICovCisKKyNlbmRpZiAvKiBIRUFERVJfQ1VSTF9WQVVUSF9IICovCmRpZmYgLS1naXQgYS9saWIvdmVyc2lvbi5jIGIvbGliL3ZlcnNpb24uYwppbmRleCAxNzI3YzVhLi4xMjkyNDQ1IDEwMDY0NAotLS0gYS9saWIvdmVyc2lvbi5jCisrKyBiL2xpYi92ZXJzaW9uLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC00MCw2ICs0MCwxMCBAQAogI2luY2x1ZGUgPHN0cmluZ3ByZXAuaD4KICNlbmRpZgogCisjaWZkZWYgVVNFX0xJQlBTTAorI2luY2x1ZGUgPGxpYnBzbC5oPgorI2VuZGlmCisKICNpZiBkZWZpbmVkKEhBVkVfSUNPTlYpICYmIGRlZmluZWQoQ1VSTF9ET0VTX0NPTlZFUlNJT05TKQogI2luY2x1ZGUgPGljb252Lmg+CiAjZW5kaWYKQEAgLTYwLDEzICs2NCwyNyBAQAogI2RlZmluZSBDVVJMX0xJQlNTSDJfVkVSU0lPTiBMSUJTU0gyX1ZFUlNJT04KICNlbmRpZgogCit2b2lkIEN1cmxfdmVyc2lvbl9pbml0KHZvaWQpOworCisvKiBGb3IgdGhyZWFkIHNhZmV0eSBwdXJwb3NlcyB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSBnbG9iYWxfaW5pdCBzbyB0aGF0CisgICB0aGUgc3RhdGljIGRhdGEgaW4gYm90aCB2ZXJzaW9uIGZ1bmN0aW9ucyBpcyBpbml0aWFsaXplZC4gKi8KK3ZvaWQgQ3VybF92ZXJzaW9uX2luaXQodm9pZCkKK3sKKyAgY3VybF92ZXJzaW9uKCk7CisgIGN1cmxfdmVyc2lvbl9pbmZvKENVUkxWRVJTSU9OX05PVyk7Cit9CisKIGNoYXIgKmN1cmxfdmVyc2lvbih2b2lkKQogeworICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZDsKICAgc3RhdGljIGNoYXIgdmVyc2lvblsyMDBdOwogICBjaGFyICpwdHIgPSB2ZXJzaW9uOwogICBzaXplX3QgbGVuOwogICBzaXplX3QgbGVmdCA9IHNpemVvZih2ZXJzaW9uKTsKIAorICBpZihpbml0aWFsaXplZCkKKyAgICByZXR1cm4gdmVyc2lvbjsKKwogICBzdHJjcHkocHRyLCBMSUJDVVJMX05BTUUgIi8iIExJQkNVUkxfVkVSU0lPTik7CiAgIGxlbiA9IHN0cmxlbihwdHIpOwogICBsZWZ0IC09IGxlbjsKQEAgLTEwMCw2ICsxMTgsMTEgQEAKICAgICBwdHIgKz0gbGVuOwogICB9CiAjZW5kaWYKKyNpZmRlZiBVU0VfTElCUFNMCisgIGxlbiA9IHNucHJpbnRmKHB0ciwgbGVmdCwgIiBsaWJwc2wvJXMiLCBwc2xfZ2V0X3ZlcnNpb24oKSk7CisgIGxlZnQgLT0gbGVuOworICBwdHIgKz0gbGVuOworI2VuZGlmCiAjaWZkZWYgVVNFX1dJTjMyX0lETgogICBsZW4gPSBzbnByaW50ZihwdHIsIGxlZnQsICIgV2luSUROIik7CiAgIGxlZnQgLT0gbGVuOwpAQCAtMTUxLDYgKzE3NCw3IEBACiAgIH0KICNlbmRpZgogCisgIGluaXRpYWxpemVkID0gdHJ1ZTsKICAgcmV0dXJuIHZlcnNpb247CiB9CiAKQEAgLTI5Nyw2ICszMjEsOSBAQAogI2lmIGRlZmluZWQoVVNFX1VOSVhfU09DS0VUUykKICAgfCBDVVJMX1ZFUlNJT05fVU5JWF9TT0NLRVRTCiAjZW5kaWYKKyNpZiBkZWZpbmVkKFVTRV9MSUJQU0wpCisgIHwgQ1VSTF9WRVJTSU9OX1BTTAorI2VuZGlmCiAgICwKICAgTlVMTCwgLyogc3NsX3ZlcnNpb24gKi8KICAgMCwgICAgLyogc3NsX3ZlcnNpb25fbnVtLCB0aGlzIGlzIGtlcHQgYXQgemVybyAqLwpAQCAtMzExLDEyICszMzgsMTggQEAKIAogY3VybF92ZXJzaW9uX2luZm9fZGF0YSAqY3VybF92ZXJzaW9uX2luZm8oQ1VSTHZlcnNpb24gc3RhbXApCiB7CisgIHN0YXRpYyBib29sIGluaXRpYWxpemVkOwogI2lmZGVmIFVTRV9MSUJTU0gyCiAgIHN0YXRpYyBjaGFyIHNzaF9idWZmZXJbODBdOwogI2VuZGlmCi0KICNpZmRlZiBVU0VfU1NMCiAgIHN0YXRpYyBjaGFyIHNzbF9idWZmZXJbODBdOworI2VuZGlmCisKKyAgaWYoaW5pdGlhbGl6ZWQpCisgICAgcmV0dXJuICZ2ZXJzaW9uX2luZm87CisKKyNpZmRlZiBVU0VfU1NMCiAgIEN1cmxfc3NsX3ZlcnNpb24oc3NsX2J1ZmZlciwgc2l6ZW9mKHNzbF9idWZmZXIpKTsKICAgdmVyc2lvbl9pbmZvLnNzbF92ZXJzaW9uID0gc3NsX2J1ZmZlcjsKICNlbmRpZgpAQCAtMzU4LDUgKzM5MSw2IEBACiAKICAgKHZvaWQpc3RhbXA7IC8qIGF2b2lkIGNvbXBpbGVyIHdhcm5pbmdzLCB3ZSBkb24ndCB1c2UgdGhpcyAqLwogCisgIGluaXRpYWxpemVkID0gdHJ1ZTsKICAgcmV0dXJuICZ2ZXJzaW9uX2luZm87CiB9CmRpZmYgLS1naXQgYS9saWIvdnRscy9heHRscy5jIGIvbGliL3Z0bHMvYXh0bHMuYwppbmRleCAxMDM4NDMyLi4wYWZjZmFhIDEwMDY0NAotLS0gYS9saWIvdnRscy9heHRscy5jCisrKyBiL2xpYi92dGxzL2F4dGxzLmMKQEAgLTYsMTEgKzYsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKICAqIENvcHlyaWdodCAoQykgMjAxMCwgRGlyZWNUViwgQ29udGFjdDogRXJpYyBIdSwgPGVodUBkaXJlY3R2LmNvbT4uCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAyMDEwIC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC01MTgsNyArNTE4LDcgQEAKIAogICBpbmZvZihjb25uLT5kYXRhLCAiICBheHRsc19zZW5kXG4iKTsKIAotICBpZihyYyA8IDAgKSB7CisgIGlmKHJjIDwgMCkgewogICAgICplcnIgPSBtYXBfZXJyb3JfdG9fY3VybChyYyk7CiAgICAgcmMgPSAtMTsgLyogZ2VuZXJpYyBlcnJvciBjb2RlIGZvciBzZW5kIGZhaWx1cmUgKi8KICAgfQpkaWZmIC0tZ2l0IGEvbGliL3Z0bHMvYXh0bHMuaCBiL2xpYi92dGxzL2F4dGxzLmgKaW5kZXggMjIzZWNiOC4uYjlkNDQxZiAxMDA2NDQKLS0tIGEvbGliL3Z0bHMvYXh0bHMuaAorKysgYi9saWIvdnRscy9heHRscy5oCkBAIC0xMiw3ICsxMiw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL3Z0bHMvY3lhc3NsLmMgYi9saWIvdnRscy9jeWFzc2wuYwppbmRleCA0MGRiYmUxLi5kYTczN2M3IDEwMDY0NAotLS0gYS9saWIvdnRscy9jeWFzc2wuYworKysgYi9saWIvdnRscy9jeWFzc2wuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTMzLDcgKzMzLDcgQEAKICNkZWZpbmUgV09MRlNTTF9PUFRJT05TX0lHTk9SRV9TWVMKIC8qIEN5YVNTTCdzIHZlcnNpb24uaCwgd2hpY2ggc2hvdWxkIGNvbnRhaW4gb25seSB0aGUgdmVyc2lvbiwgc2hvdWxkIGNvbWUKIGJlZm9yZSBhbGwgb3RoZXIgQ3lhU1NMIGluY2x1ZGVzIGFuZCBiZSBpbW1lZGlhdGVseSBmb2xsb3dlZCBieSBidWlsZCBjb25maWcKLWFrYSBvcHRpb25zLmguIGh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC9saWItMjAxNS0wNC8wMDY5Lmh0bWwgKi8KK2FrYSBvcHRpb25zLmguIGh0dHBzOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMTUtMDQvMDA2OS5odG1sICovCiAjaW5jbHVkZSA8Y3lhc3NsL3ZlcnNpb24uaD4KICNpZiBkZWZpbmVkKEhBVkVfQ1lBU1NMX09QVElPTlNfSCkgJiYgKExJQkNZQVNTTF9WRVJTSU9OX0hFWCA+IDB4MDMwMDQwMDgpCiAjaWYgZGVmaW5lZChDWUFTU0xfQVBJKSB8fCBkZWZpbmVkKFdPTEZTU0xfQVBJKQpAQCAtNTEsNyArNTEsNiBAQAogI2luY2x1ZGUgInVybGRhdGEuaCIKICNpbmNsdWRlICJzZW5kZi5oIgogI2luY2x1ZGUgImluZXRfcHRvbi5oIgotI2luY2x1ZGUgImN5YXNzbC5oIgogI2luY2x1ZGUgInZ0bHMuaCIKICNpbmNsdWRlICJwYXJzZWRhdGUuaCIKICNpbmNsdWRlICJjb25uZWN0LmgiIC8qIGZvciB0aGUgY29ubmVjdCB0aW1lb3V0ICovCkBAIC02Nyw2ICs2Niw5IEBACiAjaW5jbHVkZSA8Y3lhc3NsL2Vycm9yLmg+CiAjZW5kaWYKICNpbmNsdWRlIDxjeWFzc2wvY3Rhb2NyeXB0L3JhbmRvbS5oPgorI2luY2x1ZGUgPGN5YXNzbC9jdGFvY3J5cHQvc2hhMjU2Lmg+CisKKyNpbmNsdWRlICJjeWFzc2wuaCIKIAogLyogVGhlIGxhc3QgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlOiAqLwogI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCkBAIC03Niw2ICs3OCwzOCBAQAogI2RlZmluZSBDWUFTU0xfTUFYX0VSUk9SX1NaIDgwCiAjZW5kaWYKIAorLyogVG8gZGV0ZXJtaW5lIHdoYXQgZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2UgcmVseSBvbiBvbmUgb3IgYm90aCBvZjoKKyAgIC0gdGhlIHVzZXIncyBvcHRpb25zLmggZ2VuZXJhdGVkIGJ5IEN5YVNTTC93b2xmU1NMCisgICAtIHRoZSBzeW1ib2xzIGRldGVjdGVkIGJ5IGN1cmwncyBjb25maWd1cmUKKyAgIFNpbmNlIHRoZXkgYXJlIG1hcmtlZGx5IGRpZmZlcmVudCBmcm9tIG9uZSBhbm90aGVyLCBhbmQgb25lIG9yIHRoZSBvdGhlciBtYXkKKyAgIG5vdCBiZSBhdmFpbGFibGUsIHdlIGRvIHNvbWUgY2hlY2tpbmcgYmVsb3cgdG8gYnJpbmcgdGhpbmdzIGluIHN5bmMuICovCisKKy8qIEhBVkVfQUxQTiBpcyB3b2xmU1NMJ3MgYnVpbGQgdGltZSBzeW1ib2wgZm9yIGVuYWJsaW5nIEFMUE4gaW4gb3B0aW9ucy5oLiAqLworI2lmbmRlZiBIQVZFX0FMUE4KKyNpZmRlZiBIQVZFX1dPTEZTU0xfVVNFQUxQTgorI2RlZmluZSBIQVZFX0FMUE4KKyNlbmRpZgorI2VuZGlmCisKKy8qIFdPTEZTU0xfQUxMT1dfU1NMVjMgaXMgd29sZlNTTCdzIGJ1aWxkIHRpbWUgc3ltYm9sIGZvciBlbmFibGluZyBTU0x2MyBpbgorICAgb3B0aW9ucy5oLCBidXQgaXMgb25seSBzZWVuIGluID49IDMuNi42IHNpbmNlIHRoYXQncyB3aGVuIHRoZXkgc3RhcnRlZAorICAgZGlzYWJsaW5nIFNTTHYzIGJ5IGRlZmF1bHQuICovCisjaWZuZGVmIFdPTEZTU0xfQUxMT1dfU1NMVjMKKyNpZiAoTElCQ1lBU1NMX1ZFUlNJT05fSEVYIDwgMHgwMzAwNjAwNikgfHwgXAorICAgIGRlZmluZWQoSEFWRV9XT0xGU1NMVjNfQ0xJRU5UX01FVEhPRCkKKyNkZWZpbmUgV09MRlNTTF9BTExPV19TU0xWMworI2VuZGlmCisjZW5kaWYKKworLyogSEFWRV9TVVBQT1JURURfQ1VSVkVTIGlzIHdvbGZTU0wncyBidWlsZCB0aW1lIHN5bWJvbCBmb3IgZW5hYmxpbmcgdGhlIEVDQworICAgc3VwcG9ydGVkIGN1cnZlIGV4dGVuc2lvbiBpbiBvcHRpb25zLmguIE5vdGUgRUNDIGlzIGVuYWJsZWQgc2VwYXJhdGVseS4gKi8KKyNpZm5kZWYgSEFWRV9TVVBQT1JURURfQ1VSVkVTCisjaWYgZGVmaW5lZChIQVZFX0NZQVNTTF9DVFhfVVNFU1VQUE9SVEVEQ1VSVkUpIHx8IFwKKyAgICBkZWZpbmVkKEhBVkVfV09MRlNTTF9DVFhfVVNFU1VQUE9SVEVEQ1VSVkUpCisjZGVmaW5lIEhBVkVfU1VQUE9SVEVEX0NVUlZFUworI2VuZGlmCisjZW5kaWYKKwogc3RhdGljIEN1cmxfcmVjdiBjeWFzc2xfcmVjdjsKIHN0YXRpYyBDdXJsX3NlbmQgY3lhc3NsX3NlbmQ7CiAKQEAgLTE0Miw4ICsxNzYsMTMgQEAKICAgICB1c2Vfc25pKFRSVUUpOwogICAgIGJyZWFrOwogICBjYXNlIENVUkxfU1NMVkVSU0lPTl9TU0x2MzoKKyNpZmRlZiBXT0xGU1NMX0FMTE9XX1NTTFYzCiAgICAgcmVxX21ldGhvZCA9IFNTTHYzX2NsaWVudF9tZXRob2QoKTsKICAgICB1c2Vfc25pKEZBTFNFKTsKKyNlbHNlCisgICAgZmFpbGYoZGF0YSwgIk5vIHN1cHBvcnQgZm9yIFNTTHYzIik7CisgICAgcmV0dXJuIENVUkxFX05PVF9CVUlMVF9JTjsKKyNlbmRpZgogICAgIGJyZWFrOwogICBjYXNlIENVUkxfU1NMVkVSU0lPTl9TU0x2MjoKICAgICBmYWlsZihkYXRhLCAiQ3lhU1NMIGRvZXMgbm90IHN1cHBvcnQgU1NMdjIiKTsKQEAgLTI3Miw2ICszMTEsMTYgQEAKICAgfQogI2VuZGlmCiAKKyNpZmRlZiBIQVZFX1NVUFBPUlRFRF9DVVJWRVMKKyAgLyogQ3lhU1NML3dvbGZTU0wgZG9lcyBub3Qgc2VuZCB0aGUgc3VwcG9ydGVkIEVDQyBjdXJ2ZXMgZXh0IGF1dG9tYXRpY2FsbHk6CisgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS93b2xmU1NML3dvbGZzc2wvaXNzdWVzLzM2NgorICAgICBUaGUgc3VwcG9ydGVkIGN1cnZlcyBiZWxvdyBhcmUgdGhvc2UgYWxzbyBzdXBwb3J0ZWQgYnkgT3BlblNTTCAxLjAuMiBhbmQKKyAgICAgaW4gdGhlIHNhbWUgb3JkZXIuICovCisgIEN5YVNTTF9DVFhfVXNlU3VwcG9ydGVkQ3VydmUoY29uc3NsLT5jdHgsIDB4MTcpOyAvKiBzZWNwMjU2cjEgKi8KKyAgQ3lhU1NMX0NUWF9Vc2VTdXBwb3J0ZWRDdXJ2ZShjb25zc2wtPmN0eCwgMHgxOSk7IC8qIHNlY3A1MjFyMSAqLworICBDeWFTU0xfQ1RYX1VzZVN1cHBvcnRlZEN1cnZlKGNvbnNzbC0+Y3R4LCAweDE4KTsgLyogc2VjcDM4NHIxICovCisjZW5kaWYKKwogICAvKiBnaXZlIGFwcGxpY2F0aW9uIGEgY2hhbmNlIHRvIGludGVyZmVyZSB3aXRoIFNTTCBzZXQgdXAuICovCiAgIGlmKGRhdGEtPnNldC5zc2wuZnNzbGN0eCkgewogICAgIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOwpAQCAtMzAxLDYgKzM1MCwzMyBAQAogICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwogICB9CiAKKyNpZmRlZiBIQVZFX0FMUE4KKyAgaWYoY29ubi0+Yml0cy50bHNfZW5hYmxlX2FscG4pIHsKKyAgICBjaGFyIHByb3RvY29sc1sxMjhdOworICAgICpwcm90b2NvbHMgPSAnXDAnOworCisgICAgLyogd29sZlNTTCdzIEFMUE4gcHJvdG9jb2wgbmFtZSBsaXN0IGZvcm1hdCBpcyBhIGNvbW1hIHNlcGFyYXRlZCBzdHJpbmcgb2YKKyAgICAgICBwcm90b2NvbHMgaW4gZGVzY2VuZGluZyBvcmRlciBvZiBwcmVmZXJlbmNlLCBlZzogImgyLGh0dHAvMS4xIiAqLworCisjaWZkZWYgVVNFX05HSFRUUDIKKyAgICBpZihkYXRhLT5zZXQuaHR0cHZlcnNpb24gPj0gQ1VSTF9IVFRQX1ZFUlNJT05fMikgeworICAgICAgc3RyY3B5KHByb3RvY29scyArIHN0cmxlbihwcm90b2NvbHMpLCBOR0hUVFAyX1BST1RPX1ZFUlNJT05fSUQgIiwiKTsKKyAgICAgIGluZm9mKGRhdGEsICJBTFBOLCBvZmZlcmluZyAlc1xuIiwgTkdIVFRQMl9QUk9UT19WRVJTSU9OX0lEKTsKKyAgICB9CisjZW5kaWYKKworICAgIHN0cmNweShwcm90b2NvbHMgKyBzdHJsZW4ocHJvdG9jb2xzKSwgQUxQTl9IVFRQXzFfMSk7CisgICAgaW5mb2YoZGF0YSwgIkFMUE4sIG9mZmVyaW5nICVzXG4iLCBBTFBOX0hUVFBfMV8xKTsKKworICAgIGlmKHdvbGZTU0xfVXNlQUxQTihjb25zc2wtPmhhbmRsZSwgcHJvdG9jb2xzLAorICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQpc3RybGVuKHByb3RvY29scyksCisgICAgICAgICAgICAgICAgICAgICAgIFdPTEZTU0xfQUxQTl9DT05USU5VRV9PTl9NSVNNQVRDSCkgIT0gU1NMX1NVQ0NFU1MpIHsKKyAgICAgIGZhaWxmKGRhdGEsICJTU0w6IGZhaWxlZCBzZXR0aW5nIEFMUE4gcHJvdG9jb2xzIik7CisgICAgICByZXR1cm4gQ1VSTEVfU1NMX0NPTk5FQ1RfRVJST1I7CisgICAgfQorICB9CisjZW5kaWYgLyogSEFWRV9BTFBOICovCisKICAgLyogQ2hlY2sgaWYgdGhlcmUncyBhIGNhY2hlZCBJRCB3ZSBjYW4vc2hvdWxkIHVzZSBoZXJlISAqLwogICBpZighQ3VybF9zc2xfZ2V0c2Vzc2lvbmlkKGNvbm4sICZzc2xfc2Vzc2lvbmlkLCBOVUxMKSkgewogICAgIC8qIHdlIGdvdCBhIHNlc3Npb24gaWQsIHVzZSBpdCEgKi8KQEAgLTQwNSw2ICs0ODEsNyBAQAogICB9CiAKICAgaWYoZGF0YS0+c2V0LnN0cltTVFJJTkdfU1NMX1BJTk5FRFBVQkxJQ0tFWV0pIHsKKyNpZmRlZiBLRUVQX1BFRVJfQ0VSVAogICAgIFg1MDkgKng1MDk7CiAgICAgY29uc3QgY2hhciAqeDUwOV9kZXI7CiAgICAgaW50IHg1MDlfZGVyX2xlbjsKQEAgLTQzMywxNSArNTEwLDU1IEBACiAgICAgICByZXR1cm4gQ1VSTEVfU1NMX1BJTk5FRFBVQktFWU5PVE1BVENIOwogICAgIH0KIAotICAgIHJlc3VsdCA9IEN1cmxfcGluX3BlZXJfcHVia2V5KGRhdGEtPnNldC5zdHJbU1RSSU5HX1NTTF9QSU5ORURQVUJMSUNLRVldLAorICAgIHJlc3VsdCA9IEN1cmxfcGluX3BlZXJfcHVia2V5KGRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+c2V0LnN0cltTVFJJTkdfU1NMX1BJTk5FRFBVQkxJQ0tFWV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilwdWJrZXktPmhlYWRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2l6ZV90KShwdWJrZXktPmVuZCAtIHB1YmtleS0+aGVhZGVyKSk7CiAgICAgaWYocmVzdWx0KSB7CiAgICAgICBmYWlsZihkYXRhLCAiU1NMOiBwdWJsaWMga2V5IGRvZXMgbm90IG1hdGNoIHBpbm5lZCBwdWJsaWMga2V5ISIpOwogICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CisjZWxzZQorICAgIGZhaWxmKGRhdGEsICJMaWJyYXJ5IGxhY2tzIHBpbm5pbmcgc3VwcG9ydCBidWlsdC1pbiIpOworICAgIHJldHVybiBDVVJMRV9OT1RfQlVJTFRfSU47CisjZW5kaWYKICAgfQogCisjaWZkZWYgSEFWRV9BTFBOCisgIGlmKGNvbm4tPmJpdHMudGxzX2VuYWJsZV9hbHBuKSB7CisgICAgaW50IHJjOworICAgIGNoYXIgKnByb3RvY29sID0gTlVMTDsKKyAgICB1bnNpZ25lZCBzaG9ydCBwcm90b2NvbF9sZW4gPSAwOworCisgICAgcmMgPSB3b2xmU1NMX0FMUE5fR2V0UHJvdG9jb2woY29uc3NsLT5oYW5kbGUsICZwcm90b2NvbCwgJnByb3RvY29sX2xlbik7CisKKyAgICBpZihyYyA9PSBTU0xfU1VDQ0VTUykgeworICAgICAgaW5mb2YoZGF0YSwgIkFMUE4sIHNlcnZlciBhY2NlcHRlZCB0byB1c2UgJS4qc1xuIiwgcHJvdG9jb2xfbGVuLAorICAgICAgICAgICAgcHJvdG9jb2wpOworCisgICAgICBpZihwcm90b2NvbF9sZW4gPT0gQUxQTl9IVFRQXzFfMV9MRU5HVEggJiYKKyAgICAgICAgICFtZW1jbXAocHJvdG9jb2wsIEFMUE5fSFRUUF8xXzEsIEFMUE5fSFRUUF8xXzFfTEVOR1RIKSkKKyAgICAgICAgY29ubi0+bmVnbnBuID0gQ1VSTF9IVFRQX1ZFUlNJT05fMV8xOworI2lmZGVmIFVTRV9OR0hUVFAyCisgICAgICBlbHNlIGlmKGRhdGEtPnNldC5odHRwdmVyc2lvbiA+PSBDVVJMX0hUVFBfVkVSU0lPTl8yICYmCisgICAgICAgICAgICAgIHByb3RvY29sX2xlbiA9PSBOR0hUVFAyX1BST1RPX1ZFUlNJT05fSURfTEVOICYmCisgICAgICAgICAgICAgICFtZW1jbXAocHJvdG9jb2wsIE5HSFRUUDJfUFJPVE9fVkVSU0lPTl9JRCwKKyAgICAgICAgICAgICAgICAgICAgICBOR0hUVFAyX1BST1RPX1ZFUlNJT05fSURfTEVOKSkKKyAgICAgICAgY29ubi0+bmVnbnBuID0gQ1VSTF9IVFRQX1ZFUlNJT05fMjsKKyNlbmRpZgorICAgICAgZWxzZQorICAgICAgICBpbmZvZihkYXRhLCAiQUxQTiwgdW5yZWNvZ25pemVkIHByb3RvY29sICUuKnNcbiIsIHByb3RvY29sX2xlbiwKKyAgICAgICAgICAgICAgcHJvdG9jb2wpOworICAgIH0KKyAgICBlbHNlIGlmKHJjID09IFNTTF9BTFBOX05PVF9GT1VORCkKKyAgICAgIGluZm9mKGRhdGEsICJBTFBOLCBzZXJ2ZXIgZGlkIG5vdCBhZ3JlZSB0byBhIHByb3RvY29sXG4iKTsKKyAgICBlbHNlIHsKKyAgICAgIGZhaWxmKGRhdGEsICJBTFBOLCBmYWlsdXJlIGdldHRpbmcgcHJvdG9jb2wsIGVycm9yICVkIiwgcmMpOworICAgICAgcmV0dXJuIENVUkxFX1NTTF9DT05ORUNUX0VSUk9SOworICAgIH0KKyAgfQorI2VuZGlmIC8qIEhBVkVfQUxQTiAqLworCiAgIGNvbnNzbC0+Y29ubmVjdGluZ19zdGF0ZSA9IHNzbF9jb25uZWN0XzM7CiAgIGluZm9mKGRhdGEsICJTU0wgY29ubmVjdGVkXG4iKTsKIApAQCAtNzcwLDQgKzg4NywxNiBAQAogICByZXR1cm4gMDsKIH0KIAordm9pZCBDdXJsX2N5YXNzbF9zaGEyNTZzdW0oY29uc3QgdW5zaWduZWQgY2hhciAqdG1wLCAvKiBpbnB1dCAqLworICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB0bXBsZW4sCisgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqc2hhMjU2c3VtIC8qIG91dHB1dCAqLywKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgdW51c2VkKQoreworICBTaGEyNTYgU0hBMjU2cHc7CisgICh2b2lkKXVudXNlZDsKKyAgSW5pdFNoYTI1NigmU0hBMjU2cHcpOworICBTaGEyNTZVcGRhdGUoJlNIQTI1NnB3LCB0bXAsICh3b3JkMzIpdG1wbGVuKTsKKyAgU2hhMjU2RmluYWwoJlNIQTI1NnB3LCBzaGEyNTZzdW0pOworfQorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2xpYi92dGxzL2N5YXNzbC5oIGIvbGliL3Z0bHMvY3lhc3NsLmgKaW5kZXggMTI2MzhhNy4uMTEwNjEyNSAxMDA2NDQKLS0tIGEvbGliL3Z0bHMvY3lhc3NsLmgKKysrIGIvbGliL3Z0bHMvY3lhc3NsLmgKQEAgLTcsMTEgKzcsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yNSw2ICsyNSwxOCBAQAogCiAjaWZkZWYgVVNFX0NZQVNTTAogCisvKiBLRUVQX1BFRVJfQ0VSVCBpcyBhIHByb2R1Y3Qgb2YgdGhlIHByZXNlbmNlIG9mIGJ1aWxkIHRpbWUgc3ltYm9sCisgICBPUEVOU1NMX0VYVFJBIHdpdGhvdXQgTk9fQ0VSVFMsIGRlcGVuZGluZyBvbiB0aGUgdmVyc2lvbi4gS0VFUF9QRUVSX0NFUlQgaXMKKyAgIGluIHdvbGZTU0wncyBzZXR0aW5ncy5oLCBhbmQgdGhlIGxhdHRlciB0d28gYXJlIGJ1aWxkIHRpbWUgc3ltYm9scyBpbgorICAgb3B0aW9ucy5oLiAqLworI2lmbmRlZiBLRUVQX1BFRVJfQ0VSVAorI2lmIGRlZmluZWQoSEFWRV9DWUFTU0xfR0VUX1BFRVJfQ0VSVElGSUNBVEUpIHx8IFwKKyAgICBkZWZpbmVkKEhBVkVfV09MRlNTTF9HRVRfUEVFUl9DRVJUSUZJQ0FURSkgfHwgXAorICAgIChkZWZpbmVkKE9QRU5TU0xfRVhUUkEpICYmICFkZWZpbmVkKE5PX0NFUlRTKSkKKyNkZWZpbmUgS0VFUF9QRUVSX0NFUlQKKyNlbmRpZgorI2VuZGlmCisKIENVUkxjb2RlIEN1cmxfY3lhc3NsX2Nvbm5lY3Qoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBpbnQgc29ja2luZGV4KTsKIGJvb2wgQ3VybF9jeWFzc2xfZGF0YV9wZW5kaW5nKGNvbnN0IHN0cnVjdCBjb25uZWN0ZGF0YSogY29ubiwgaW50IGNvbm5pbmRleCk7CiBpbnQgQ3VybF9jeWFzc2xfc2h1dGRvd24oc3RydWN0IGNvbm5lY3RkYXRhKiBjb25uLCBpbnQgc29ja2luZGV4KTsKQEAgLTQyLDYgKzU0LDEwIEBACiBpbnQgQ3VybF9jeWFzc2xfcmFuZG9tKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICplbnRyb3B5LAogICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuZ3RoKTsKK3ZvaWQgQ3VybF9jeWFzc2xfc2hhMjU2c3VtKGNvbnN0IHVuc2lnbmVkIGNoYXIgKnRtcCwgLyogaW5wdXQgKi8KKyAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB0bXBsZW4sCisgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpzaGEyNTZzdW0sIC8qIG91dHB1dCAqLworICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHVudXNlZCk7CiAKIC8qIFNldCB0aGUgQVBJIGJhY2tlbmQgZGVmaW5pdGlvbiB0byBTY2hhbm5lbCAqLwogI2RlZmluZSBDVVJMX1NTTF9CQUNLRU5EIENVUkxTU0xCQUNLRU5EX0NZQVNTTApAQCAtNDksNiArNjUsMTEgQEAKIC8qIHRoaXMgYmFja2VuZCBzdXBwb3J0cyBDVVJMT1BUX1NTTF9DVFhfKiAqLwogI2RlZmluZSBoYXZlX2N1cmxzc2xfc3NsX2N0eCAxCiAKKyNpZmRlZiBLRUVQX1BFRVJfQ0VSVAorLyogdGhpcyBiYWNrZW5kIHN1cHBvcnRzIENVUkxPUFRfUElOTkVEUFVCTElDS0VZICovCisjZGVmaW5lIGhhdmVfY3VybHNzbF9waW5uZWRwdWJrZXkgMQorI2VuZGlmCisKIC8qIEFQSSBzZXR1cCBmb3IgQ3lhU1NMICovCiAjZGVmaW5lIGN1cmxzc2xfaW5pdCBDdXJsX2N5YXNzbF9pbml0CiAjZGVmaW5lIGN1cmxzc2xfY2xlYW51cCgpIEN1cmxfbm9wX3N0bXQKQEAgLTY1LDYgKzg2LDcgQEAKICNkZWZpbmUgY3VybHNzbF9jaGVja19jeG4oeCkgKCh2b2lkKXgsIC0xKQogI2RlZmluZSBjdXJsc3NsX2RhdGFfcGVuZGluZyh4LHkpIEN1cmxfY3lhc3NsX2RhdGFfcGVuZGluZyh4LHkpCiAjZGVmaW5lIGN1cmxzc2xfcmFuZG9tKHgseSx6KSBDdXJsX2N5YXNzbF9yYW5kb20oeCx5LHopCisjZGVmaW5lIGN1cmxzc2xfc2hhMjU2c3VtKGEsYixjLGQpIEN1cmxfY3lhc3NsX3NoYTI1NnN1bShhLGIsYyxkKQogCiAjZW5kaWYgLyogVVNFX0NZQVNTTCAqLwogI2VuZGlmIC8qIEhFQURFUl9DVVJMX0NZQVNTTF9IICovCmRpZmYgLS1naXQgYS9saWIvdnRscy9kYXJ3aW5zc2wuYyBiL2xpYi92dGxzL2RhcndpbnNzbC5jCmluZGV4IDAzYWRjZWYuLjcxZDM3OWIgMTAwNjQ0Ci0tLSBhL2xpYi92dGxzL2RhcndpbnNzbC5jCisrKyBiL2xpYi92dGxzL2RhcndpbnNzbC5jCkBAIC0xMCw3ICsxMCw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNzgxLDcgKzc4MSw3IEBACiAgIGludCBtaWJbMl07CiAgIGNoYXIgKm9zX3ZlcnNpb247CiAgIHNpemVfdCBvc192ZXJzaW9uX2xlbjsKLSAgY2hhciAqb3NfdmVyc2lvbl9tYWpvciwgKm9zX3ZlcnNpb25fbWlub3IvKiwgKm9zX3ZlcnNpb25fcG9pbnQqLzsKKyAgY2hhciAqb3NfdmVyc2lvbl9tYWpvciwgKm9zX3ZlcnNpb25fbWlub3I7CiAgIGNoYXIgKnRva19idWY7CiAKICAgLyogR2V0IHRoZSBEYXJ3aW4ga2VybmVsIHZlcnNpb24gZnJvbSB0aGUga2VybmVsIHVzaW5nIHN5c2N0bCgpOiAqLwpAQCAtODAwLDcgKzgwMCw2IEBACiAgIC8qIFBhcnNlIHRoZSB2ZXJzaW9uOiAqLwogICBvc192ZXJzaW9uX21ham9yID0gc3RydG9rX3Iob3NfdmVyc2lvbiwgIi4iLCAmdG9rX2J1Zik7CiAgIG9zX3ZlcnNpb25fbWlub3IgPSBzdHJ0b2tfcihOVUxMLCAiLiIsICZ0b2tfYnVmKTsKLSAgLypvc192ZXJzaW9uX3BvaW50ID0gc3RydG9rX3IoTlVMTCwgIi4iLCAmdG9rX2J1Zik7Ki8KICAgKm1ham9yID0gYXRvaShvc192ZXJzaW9uX21ham9yKTsKICAgKm1pbm9yID0gYXRvaShvc192ZXJzaW9uX21pbm9yKTsKICAgZnJlZShvc192ZXJzaW9uKTsKQEAgLTEyODIsMTQgKzEyODEsMjEgQEAKICNpZiBDVVJMX0JVSUxEX01BQ18xMF82IHx8IENVUkxfQlVJTERfSU9TCiAgIC8qIFNub3cgTGVvcGFyZCBpbnRyb2R1Y2VkIHRoZSBTU0xTZXRTZXNzaW9uT3B0aW9uKCkgZnVuY3Rpb24sIGJ1dCBkdWUgdG8KICAgICAgYSBsaWJyYXJ5IGJ1ZyB3aXRoIHRoZSB3YXkgdGhlIGtTU0xTZXNzaW9uT3B0aW9uQnJlYWtPblNlcnZlckF1dGggZmxhZwotICAgICB3b3JrcywgaXQgZG9lc24ndCB3b3JrIGFzIGV4cGVjdGVkIHVuZGVyIFNub3cgTGVvcGFyZCBvciBMaW9uLgorICAgICB3b3JrcywgaXQgZG9lc24ndCB3b3JrIGFzIGV4cGVjdGVkIHVuZGVyIFNub3cgTGVvcGFyZCwgTGlvbiBvcgorICAgICBNb3VudGFpbiBMaW9uLgogICAgICBTbyB3ZSBuZWVkIHRvIGNhbGwgU1NMU2V0RW5hYmxlQ2VydFZlcmlmeSgpIG9uIHRob3NlIG9sZGVyIGNhdHMgaW4gb3JkZXIKICAgICAgdG8gZGlzYWJsZSBjZXJ0aWZpY2F0ZSB2YWxpZGF0aW9uIGlmIHRoZSB1c2VyIHR1cm5lZCB0aGF0IG9mZi4KICAgICAgKFNlY3VyZVRyYW5zcG9ydCB3aWxsIGFsd2F5cyB2YWxpZGF0ZSB0aGUgY2VydGlmaWNhdGUgY2hhaW4gYnkKLSAgICAgZGVmYXVsdC4pICovCi0gIC8qIChOb3RlOiBEYXJ3aW4gMTIueC54IGlzIE1vdW50YWluIExpb24uKSAqLworICAgICBkZWZhdWx0LikKKyAgTm90ZToKKyAgRGFyd2luIDExLngueCBpcyBMaW9uICgxMC43KQorICBEYXJ3aW4gMTIueC54IGlzIE1vdW50YWluIExpb24gKDEwLjgpCisgIERhcndpbiAxMy54LnggaXMgTWF2ZXJpY2tzICgxMC45KQorICBEYXJ3aW4gMTQueC54IGlzIFlvc2VtaXRlICgxMC4xMCkKKyAgRGFyd2luIDE1LngueCBpcyBFbCBDYXBpdGFuICgxMC4xMSkKKyAgKi8KICNpZiBDVVJMX0JVSUxEX01BQwotICBpZihTU0xTZXRTZXNzaW9uT3B0aW9uICE9IE5VTEwgJiYgZGFyd2ludmVyX21haiA+PSAxMikgeworICBpZihTU0xTZXRTZXNzaW9uT3B0aW9uICE9IE5VTEwgJiYgZGFyd2ludmVyX21haiA+PSAxMykgewogI2Vsc2UKICAgaWYoU1NMU2V0U2Vzc2lvbk9wdGlvbiAhPSBOVUxMKSB7CiAjZW5kaWYgLyogQ1VSTF9CVUlMRF9NQUMgKi8KZGlmZiAtLWdpdCBhL2xpYi92dGxzL2RhcndpbnNzbC5oIGIvbGliL3Z0bHMvZGFyd2luc3NsLmgKaW5kZXggM2JiNjljMC4uOGIxODViNiAxMDA2NDQKLS0tIGEvbGliL3Z0bHMvZGFyd2luc3NsLmgKKysrIGIvbGliL3Z0bHMvZGFyd2luc3NsLmgKQEAgLTEyLDcgKzEyLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWIvdnRscy9nc2tpdC5jIGIvbGliL3Z0bHMvZ3NraXQuYwppbmRleCBkODg0YmQ0Li5hOWE4YTkxIDEwMDY0NAotLS0gYS9saWIvdnRscy9nc2tpdC5jCisrKyBiL2xpYi92dGxzL2dza2l0LmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtODc0LDcgKzg3NCw3IEBACiAgICAgICByZXR1cm4gQ1VSTEVfU1NMX1BJTk5FRFBVQktFWU5PVE1BVENIOwogICAgIEN1cmxfcGFyc2VYNTA5KCZ4NTA5LCBjZXJ0LCBjZXJ0ZW5kKTsKICAgICBwID0gJng1MDkuc3ViamVjdFB1YmxpY0tleUluZm87Ci0gICAgcmVzdWx0ID0gQ3VybF9waW5fcGVlcl9wdWJrZXkocHRyLCBwLT5oZWFkZXIsIHAtPmVuZCAtIHAtPmhlYWRlcik7CisgICAgcmVzdWx0ID0gQ3VybF9waW5fcGVlcl9wdWJrZXkoZGF0YSwgcHRyLCBwLT5oZWFkZXIsIHAtPmVuZCAtIHAtPmhlYWRlcik7CiAgICAgaWYocmVzdWx0KSB7CiAgICAgICBmYWlsZihkYXRhLCAiU1NMOiBwdWJsaWMga2V5IGRvZXMgbm90IG1hdGNoIHBpbm5lZCBwdWJsaWMga2V5ISIpOwogICAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL2xpYi92dGxzL2dza2l0LmggYi9saWIvdnRscy9nc2tpdC5oCmluZGV4IGFmMzFmYWYuLjQxNDgzY2IgMTAwNjQ0Ci0tLSBhL2xpYi92dGxzL2dza2l0LmgKKysrIGIvbGliL3Z0bHMvZ3NraXQuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL2xpYi92dGxzL2d0bHMuYyBiL2xpYi92dGxzL2d0bHMuYwppbmRleCAxZGIzMWU0Li4xYjVhNmE0IDEwMDY0NAotLS0gYS9saWIvdnRscy9ndGxzLmMKKysrIGIvbGliL3Z0bHMvZ3Rscy5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzksNiArMzksNyBAQAogI2lmZGVmIFVTRV9HTlVUTFNfTkVUVExFCiAjaW5jbHVkZSA8Z251dGxzL2NyeXB0by5oPgogI2luY2x1ZGUgPG5ldHRsZS9tZDUuaD4KKyNpbmNsdWRlIDxuZXR0bGUvc2hhMi5oPgogI2Vsc2UKICNpbmNsdWRlIDxnY3J5cHQuaD4KICNlbmRpZgpAQCAtNjEsNyArNjIsNyBAQAogCiAvKgogIFNvbWUgaGFja2lzaCBjYXN0IG1hY3JvcyBiYXNlZCBvbjoKLSBodHRwOi8vbGlicmFyeS5nbm9tZS5vcmcvZGV2ZWwvZ2xpYi91bnN0YWJsZS9nbGliLVR5cGUtQ29udmVyc2lvbi1NYWNyb3MuaHRtbAorIGh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItVHlwZS1Db252ZXJzaW9uLU1hY3Jvcy5odG1sCiAqLwogI2lmbmRlZiBHTlVUTFNfUE9JTlRFUl9UT19JTlRfQ0FTVAogI2RlZmluZSBHTlVUTFNfUE9JTlRFUl9UT19JTlRfQ0FTVChwKSAoKGludCkgKGxvbmcpIChwKSkKQEAgLTQ4Niw2ICs0ODcsMTQgQEAKICAgfQogI2VuZGlmCiAKKyNpZmRlZiBDVVJMX0NBX0ZBTExCQUNLCisgIC8qIHVzZSBzeXN0ZW0gY2EgY2VydGlmaWNhdGUgc3RvcmUgYXMgZmFsbGJhY2sgKi8KKyAgaWYoZGF0YS0+c2V0LnNzbC52ZXJpZnlwZWVyICYmCisgICAgICEoZGF0YS0+c2V0LnNzbC5DQWZpbGUgfHwgZGF0YS0+c2V0LnNzbC5DQXBhdGgpKSB7CisgICAgZ251dGxzX2NlcnRpZmljYXRlX3NldF94NTA5X3N5c3RlbV90cnVzdChjb25uLT5zc2xbc29ja2luZGV4XS5jcmVkKTsKKyAgfQorI2VuZGlmCisKICAgaWYoZGF0YS0+c2V0LnNzbC5DUkxmaWxlKSB7CiAgICAgLyogc2V0IHRoZSBDUkwgbGlzdCBmaWxlICovCiAgICAgcmMgPSBnbnV0bHNfY2VydGlmaWNhdGVfc2V0X3g1MDlfY3JsX2ZpbGUoY29ubi0+c3NsW3NvY2tpbmRleF0uY3JlZCwKQEAgLTYzMiwxMiArNjQxLDEyIEBACiAjZW5kaWYKIAogI2lmZGVmIEhBU19BTFBOCi0gIGlmKGRhdGEtPnNldC5zc2xfZW5hYmxlX2FscG4pIHsKKyAgaWYoY29ubi0+Yml0cy50bHNfZW5hYmxlX2FscG4pIHsKICAgICBpbnQgY3VyID0gMDsKICAgICBnbnV0bHNfZGF0dW1fdCBwcm90b2NvbHNbMl07CiAKICNpZmRlZiBVU0VfTkdIVFRQMgotICAgIGlmKGRhdGEtPnNldC5odHRwdmVyc2lvbiA9PSBDVVJMX0hUVFBfVkVSU0lPTl8yXzApIHsKKyAgICBpZihkYXRhLT5zZXQuaHR0cHZlcnNpb24gPj0gQ1VSTF9IVFRQX1ZFUlNJT05fMikgewogICAgICAgcHJvdG9jb2xzW2N1cl0uZGF0YSA9ICh1bnNpZ25lZCBjaGFyICopTkdIVFRQMl9QUk9UT19WRVJTSU9OX0lEOwogICAgICAgcHJvdG9jb2xzW2N1cl0uc2l6ZSA9IE5HSFRUUDJfUFJPVE9fVkVSU0lPTl9JRF9MRU47CiAgICAgICBjdXIrKzsKQEAgLTY1NSwxNSArNjY0LDQ0IEBACiAjZW5kaWYKIAogICBpZihkYXRhLT5zZXQuc3RyW1NUUklOR19DRVJUXSkgewotICAgIGlmKGdudXRsc19jZXJ0aWZpY2F0ZV9zZXRfeDUwOV9rZXlfZmlsZSgKLSAgICAgICAgIGNvbm4tPnNzbFtzb2NraW5kZXhdLmNyZWQsCi0gICAgICAgICBkYXRhLT5zZXQuc3RyW1NUUklOR19DRVJUXSwKLSAgICAgICAgIGRhdGEtPnNldC5zdHJbU1RSSU5HX0tFWV0gPwotICAgICAgICAgZGF0YS0+c2V0LnN0cltTVFJJTkdfS0VZXSA6IGRhdGEtPnNldC5zdHJbU1RSSU5HX0NFUlRdLAotICAgICAgICAgZG9fZmlsZV90eXBlKGRhdGEtPnNldC5zdHJbU1RSSU5HX0NFUlRfVFlQRV0pICkgIT0KLSAgICAgICBHTlVUTFNfRV9TVUNDRVNTKSB7Ci0gICAgICBmYWlsZihkYXRhLCAiZXJyb3IgcmVhZGluZyBYLjUwOSBrZXkgb3IgY2VydGlmaWNhdGUgZmlsZSIpOworICAgIGlmKGRhdGEtPnNldC5zdHJbU1RSSU5HX0tFWV9QQVNTV0RdKSB7CisjaWYgSEFWRV9HTlVUTFNfQ0VSVElGSUNBVEVfU0VUX1g1MDlfS0VZX0ZJTEUyCisgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgc3VwcG9ydGVkX2tleV9lbmNyeXB0aW9uX2FsZ29yaXRobXMgPQorICAgICAgICBHTlVUTFNfUEtDU19VU0VfUEtDUzEyXzNERVMgfCBHTlVUTFNfUEtDU19VU0VfUEtDUzEyX0FSQ0ZPVVIgfAorICAgICAgICBHTlVUTFNfUEtDU19VU0VfUEtDUzEyX1JDMl80MCB8IEdOVVRMU19QS0NTX1VTRV9QQkVTMl8zREVTIHwKKyAgICAgICAgR05VVExTX1BLQ1NfVVNFX1BCRVMyX0FFU18xMjggfCBHTlVUTFNfUEtDU19VU0VfUEJFUzJfQUVTXzE5MiB8CisgICAgICAgIEdOVVRMU19QS0NTX1VTRV9QQkVTMl9BRVNfMjU2OworICAgICAgcmMgPSBnbnV0bHNfY2VydGlmaWNhdGVfc2V0X3g1MDlfa2V5X2ZpbGUyKAorICAgICAgICAgICBjb25uLT5zc2xbc29ja2luZGV4XS5jcmVkLAorICAgICAgICAgICBkYXRhLT5zZXQuc3RyW1NUUklOR19DRVJUXSwKKyAgICAgICAgICAgZGF0YS0+c2V0LnN0cltTVFJJTkdfS0VZXSA/CisgICAgICAgICAgIGRhdGEtPnNldC5zdHJbU1RSSU5HX0tFWV0gOiBkYXRhLT5zZXQuc3RyW1NUUklOR19DRVJUXSwKKyAgICAgICAgICAgZG9fZmlsZV90eXBlKGRhdGEtPnNldC5zdHJbU1RSSU5HX0NFUlRfVFlQRV0pLAorICAgICAgICAgICBkYXRhLT5zZXQuc3RyW1NUUklOR19LRVlfUEFTU1dEXSwKKyAgICAgICAgICAgc3VwcG9ydGVkX2tleV9lbmNyeXB0aW9uX2FsZ29yaXRobXMpOworICAgICAgaWYocmMgIT0gR05VVExTX0VfU1VDQ0VTUykgeworICAgICAgICBmYWlsZihkYXRhLAorICAgICAgICAgICAgICAiZXJyb3IgcmVhZGluZyBYLjUwOSBwb3RlbnRpYWxseS1lbmNyeXB0ZWQga2V5IGZpbGU6ICVzIiwKKyAgICAgICAgICAgICAgZ251dGxzX3N0cmVycm9yKHJjKSk7CisgICAgICAgIHJldHVybiBDVVJMRV9TU0xfQ09OTkVDVF9FUlJPUjsKKyAgICAgIH0KKyNlbHNlCisgICAgICBmYWlsZihkYXRhLCAiZ251dGxzIGxhY2tzIHN1cHBvcnQgZm9yIGVuY3J5cHRlZCBrZXkgZmlsZXMiKTsKICAgICAgIHJldHVybiBDVVJMRV9TU0xfQ09OTkVDVF9FUlJPUjsKKyNlbmRpZgorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJjID0gZ251dGxzX2NlcnRpZmljYXRlX3NldF94NTA5X2tleV9maWxlKAorICAgICAgICAgICBjb25uLT5zc2xbc29ja2luZGV4XS5jcmVkLAorICAgICAgICAgICBkYXRhLT5zZXQuc3RyW1NUUklOR19DRVJUXSwKKyAgICAgICAgICAgZGF0YS0+c2V0LnN0cltTVFJJTkdfS0VZXSA/CisgICAgICAgICAgIGRhdGEtPnNldC5zdHJbU1RSSU5HX0tFWV0gOiBkYXRhLT5zZXQuc3RyW1NUUklOR19DRVJUXSwKKyAgICAgICAgICAgZG9fZmlsZV90eXBlKGRhdGEtPnNldC5zdHJbU1RSSU5HX0NFUlRfVFlQRV0pICk7CisgICAgICBpZihyYyAhPSBHTlVUTFNfRV9TVUNDRVNTKSB7CisgICAgICAgIGZhaWxmKGRhdGEsICJlcnJvciByZWFkaW5nIFguNTA5IGtleSBvciBjZXJ0aWZpY2F0ZSBmaWxlOiAlcyIsCisgICAgICAgICAgICAgIGdudXRsc19zdHJlcnJvcihyYykpOworICAgICAgICByZXR1cm4gQ1VSTEVfU1NMX0NPTk5FQ1RfRVJST1I7CisgICAgICB9CiAgICAgfQogICB9CiAKQEAgLTcyMyw3ICs3NjEsOCBAQAogICByZXR1cm4gQ1VSTEVfT0s7CiB9CiAKLXN0YXRpYyBDVVJMY29kZSBwa3BfcGluX3BlZXJfcHVia2V5KGdudXRsc194NTA5X2NydF90IGNlcnQsCitzdGF0aWMgQ1VSTGNvZGUgcGtwX3Bpbl9wZWVyX3B1YmtleShzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdudXRsc194NTA5X2NydF90IGNlcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwaW5uZWRwdWJrZXkpCiB7CiAgIC8qIFNjcmF0Y2ggKi8KQEAgLTc2OCw3ICs4MDcsNyBAQAogICAgIC8qIEVuZCBHeXJhdGlvbnMgKi8KIAogICAgIC8qIFRoZSBvbmUgZ29vZCBleGl0IHBvaW50ICovCi0gICAgcmVzdWx0ID0gQ3VybF9waW5fcGVlcl9wdWJrZXkocGlubmVkcHVia2V5LCBidWZmMSwgbGVuMSk7CisgICAgcmVzdWx0ID0gQ3VybF9waW5fcGVlcl9wdWJrZXkoZGF0YSwgcGlubmVkcHVia2V5LCBidWZmMSwgbGVuMSk7CiAgIH0gd2hpbGUoMCk7CiAKICAgaWYoTlVMTCAhPSBrZXkpCkBAIC0xMTUxLDcgKzExOTAsNyBAQAogCiAgIHB0ciA9IGRhdGEtPnNldC5zdHJbU1RSSU5HX1NTTF9QSU5ORURQVUJMSUNLRVldOwogICBpZihwdHIpIHsKLSAgICByZXN1bHQgPSBwa3BfcGluX3BlZXJfcHVia2V5KHg1MDlfY2VydCwgcHRyKTsKKyAgICByZXN1bHQgPSBwa3BfcGluX3BlZXJfcHVia2V5KGRhdGEsIHg1MDlfY2VydCwgcHRyKTsKICAgICBpZihyZXN1bHQgIT0gQ1VSTEVfT0spIHsKICAgICAgIGZhaWxmKGRhdGEsICJTU0w6IHB1YmxpYyBrZXkgZG9lcyBub3QgbWF0Y2ggcGlubmVkIHB1YmxpYyBrZXkhIik7CiAgICAgICBnbnV0bHNfeDUwOV9jcnRfZGVpbml0KHg1MDlfY2VydCk7CkBAIC0xMjAxLDcgKzEyNDAsNyBAQAogICBpbmZvZihkYXRhLCAiXHQgY29tcHJlc3Npb246ICVzXG4iLCBwdHIpOwogCiAjaWZkZWYgSEFTX0FMUE4KLSAgaWYoZGF0YS0+c2V0LnNzbF9lbmFibGVfYWxwbikgeworICBpZihjb25uLT5iaXRzLnRsc19lbmFibGVfYWxwbikgewogICAgIHJjID0gZ251dGxzX2FscG5fZ2V0X3NlbGVjdGVkX3Byb3RvY29sKHNlc3Npb24sICZwcm90byk7CiAgICAgaWYocmMgPT0gMCkgewogICAgICAgaW5mb2YoZGF0YSwgIkFMUE4sIHNlcnZlciBhY2NlcHRlZCB0byB1c2UgJS4qc1xuIiwgcHJvdG8uc2l6ZSwKQEAgLTEyMTEsNyArMTI1MCw3IEBACiAgICAgICBpZihwcm90by5zaXplID09IE5HSFRUUDJfUFJPVE9fVkVSU0lPTl9JRF9MRU4gJiYKICAgICAgICAgICFtZW1jbXAoTkdIVFRQMl9QUk9UT19WRVJTSU9OX0lELCBwcm90by5kYXRhLAogICAgICAgICAgICAgICAgICBOR0hUVFAyX1BST1RPX1ZFUlNJT05fSURfTEVOKSkgewotICAgICAgICBjb25uLT5uZWducG4gPSBDVVJMX0hUVFBfVkVSU0lPTl8yXzA7CisgICAgICAgIGNvbm4tPm5lZ25wbiA9IENVUkxfSFRUUF9WRVJTSU9OXzI7CiAgICAgICB9CiAgICAgICBlbHNlCiAjZW5kaWYKQEAgLTEzNDIsNyArMTM4MSw3IEBACiB7CiAgIHNzaXplX3QgcmMgPSBnbnV0bHNfcmVjb3JkX3NlbmQoY29ubi0+c3NsW3NvY2tpbmRleF0uc2Vzc2lvbiwgbWVtLCBsZW4pOwogCi0gIGlmKHJjIDwgMCApIHsKKyAgaWYocmMgPCAwKSB7CiAgICAgKmN1cmxjb2RlID0gKHJjID09IEdOVVRMU19FX0FHQUlOKQogICAgICAgPyBDVVJMRV9BR0FJTgogICAgICAgOiBDVVJMRV9TRU5EX0VSUk9SOwpAQCAtMTU1Nyw2ICsxNTk2LDI1IEBACiAjZW5kaWYKIH0KIAordm9pZCBDdXJsX2d0bHNfc2hhMjU2c3VtKGNvbnN0IHVuc2lnbmVkIGNoYXIgKnRtcCwgLyogaW5wdXQgKi8KKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgdG1wbGVuLAorICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKnNoYTI1NnN1bSwgLyogb3V0cHV0ICovCisgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNoYTI1NmxlbikKK3sKKyNpZiBkZWZpbmVkKFVTRV9HTlVUTFNfTkVUVExFKQorICBzdHJ1Y3Qgc2hhMjU2X2N0eCBTSEEyNTZwdzsKKyAgc2hhMjU2X2luaXQoJlNIQTI1NnB3KTsKKyAgc2hhMjU2X3VwZGF0ZSgmU0hBMjU2cHcsICh1bnNpZ25lZCBpbnQpdG1wbGVuLCB0bXApOworICBzaGEyNTZfZGlnZXN0KCZTSEEyNTZwdywgKHVuc2lnbmVkIGludClzaGEyNTZsZW4sIHNoYTI1NnN1bSk7CisjZWxpZiBkZWZpbmVkKFVTRV9HTlVUTFMpCisgIGdjcnlfbWRfaGRfdCBTSEEyNTZwdzsKKyAgZ2NyeV9tZF9vcGVuKCZTSEEyNTZwdywgR0NSWV9NRF9TSEEyNTYsIDApOworICBnY3J5X21kX3dyaXRlKFNIQTI1NnB3LCB0bXAsIHRtcGxlbik7CisgIG1lbWNweShzaGEyNTZzdW0sIGdjcnlfbWRfcmVhZCAoU0hBMjU2cHcsIDApLCBzaGEyNTZsZW4pOworICBnY3J5X21kX2Nsb3NlKFNIQTI1NnB3KTsKKyNlbmRpZgorfQorCiBib29sIEN1cmxfZ3Rsc19jZXJ0X3N0YXR1c19yZXF1ZXN0KHZvaWQpCiB7CiAjaWZkZWYgSEFTX09DU1AKZGlmZiAtLWdpdCBhL2xpYi92dGxzL2d0bHMuaCBiL2xpYi92dGxzL2d0bHMuaAppbmRleCBkY2FlNDQyLi42MTFhMmY0IDEwMDY0NAotLS0gYS9saWIvdnRscy9ndGxzLmgKKysrIGIvbGliL3Z0bHMvZ3Rscy5oCkBAIC03LDExICs3LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNDgsNiArNDgsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgdG1wbGVuLAogICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKm1kNXN1bSwgLyogb3V0cHV0ICovCiAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG1kNWxlbik7Cit2b2lkIEN1cmxfZ3Rsc19zaGEyNTZzdW0oY29uc3QgdW5zaWduZWQgY2hhciAqdG1wLCAvKiBpbnB1dCAqLworICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB0bXBsZW4sCisgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqc2hhMjU2c3VtLCAvKiBvdXRwdXQgKi8KKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2hhMjU2bGVuKTsKIAogYm9vbCBDdXJsX2d0bHNfY2VydF9zdGF0dXNfcmVxdWVzdCh2b2lkKTsKIApAQCAtNjAsNiArNjQsOSBAQAogLyogdGhpcyBiYWNrZW5kIHN1cHBvcnRzIENVUkxPUFRfQ0VSVElORk8gKi8KICNkZWZpbmUgaGF2ZV9jdXJsc3NsX2NlcnRpbmZvIDEKIAorLyogdGhpcyBiYWNrZW5kIHN1cHBvcnRzIENVUkxPUFRfUElOTkVEUFVCTElDS0VZICovCisjZGVmaW5lIGhhdmVfY3VybHNzbF9waW5uZWRwdWJrZXkgMQorCiAvKiBBUEkgc2V0dXAgZm9yIEdudVRMUyAqLwogI2RlZmluZSBjdXJsc3NsX2luaXQgQ3VybF9ndGxzX2luaXQKICNkZWZpbmUgY3VybHNzbF9jbGVhbnVwIEN1cmxfZ3Rsc19jbGVhbnVwCkBAIC03Nyw2ICs4NCw3IEBACiAjZGVmaW5lIGN1cmxzc2xfZGF0YV9wZW5kaW5nKHgseSkgKCh2b2lkKXgsICh2b2lkKXksIDApCiAjZGVmaW5lIGN1cmxzc2xfcmFuZG9tKHgseSx6KSBDdXJsX2d0bHNfcmFuZG9tKHgseSx6KQogI2RlZmluZSBjdXJsc3NsX21kNXN1bShhLGIsYyxkKSBDdXJsX2d0bHNfbWQ1c3VtKGEsYixjLGQpCisjZGVmaW5lIGN1cmxzc2xfc2hhMjU2c3VtKGEsYixjLGQpIEN1cmxfZ3Rsc19zaGEyNTZzdW0oYSxiLGMsZCkKICNkZWZpbmUgY3VybHNzbF9jZXJ0X3N0YXR1c19yZXF1ZXN0KCkgQ3VybF9ndGxzX2NlcnRfc3RhdHVzX3JlcXVlc3QoKQogCiAjZW5kaWYgLyogVVNFX0dOVVRMUyAqLwpkaWZmIC0tZ2l0IGEvbGliL3Z0bHMvbWJlZHRscy5jIGIvbGliL3Z0bHMvbWJlZHRscy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmMGI5NDkKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvdnRscy9tYmVkdGxzLmMKQEAgLTAsMCArMSw4NjYgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKyAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorICoKKyAqIENvcHlyaWdodCAoQykgMjAxMCAtIDIwMTEsIEhvaS1IbyBDaGFuLCA8aG9paG8uY2hhbkBnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqCisgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qCisgKiBTb3VyY2UgZmlsZSBmb3IgYWxsIG1iZWRUTFMtc3BlY2lmaWMgY29kZSBmb3IgdGhlIFRMUy9TU0wgbGF5ZXIuIE5vIGNvZGUKKyAqIGJ1dCB2dGxzLmMgc2hvdWxkIGV2ZXIgY2FsbCBvciB1c2UgdGhlc2UgZnVuY3Rpb25zLgorICoKKyAqLworCisjaW5jbHVkZSAiY3VybF9zZXR1cC5oIgorCisjaWZkZWYgVVNFX01CRURUTFMKKworI2luY2x1ZGUgPG1iZWR0bHMvbmV0Lmg+CisjaW5jbHVkZSA8bWJlZHRscy9zc2wuaD4KKyNpbmNsdWRlIDxtYmVkdGxzL2NlcnRzLmg+CisjaW5jbHVkZSA8bWJlZHRscy94NTA5Lmg+CisjaW5jbHVkZSA8bWJlZHRscy92ZXJzaW9uLmg+CisKKyNpbmNsdWRlIDxtYmVkdGxzL2Vycm9yLmg+CisjaW5jbHVkZSA8bWJlZHRscy9lbnRyb3B5Lmg+CisjaW5jbHVkZSA8bWJlZHRscy9jdHJfZHJiZy5oPgorI2luY2x1ZGUgPG1iZWR0bHMvc2hhMjU2Lmg+CisKKyNpbmNsdWRlICJ1cmxkYXRhLmgiCisjaW5jbHVkZSAic2VuZGYuaCIKKyNpbmNsdWRlICJpbmV0X3B0b24uaCIKKyNpbmNsdWRlICJtYmVkdGxzLmgiCisjaW5jbHVkZSAidnRscy5oIgorI2luY2x1ZGUgInBhcnNlZGF0ZS5oIgorI2luY2x1ZGUgImNvbm5lY3QuaCIgLyogZm9yIHRoZSBjb25uZWN0IHRpbWVvdXQgKi8KKyNpbmNsdWRlICJzZWxlY3QuaCIKKyNpbmNsdWRlICJyYXdzdHIuaCIKKyNpbmNsdWRlICJwb2xhcnNzbF90aHJlYWRsb2NrLmgiCisKKy8qIFRoZSBsYXN0IDMgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlIGluIHRoaXMgb3JkZXIgKi8KKyNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgorI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCisjaW5jbHVkZSAibWVtZGVidWcuaCIKKworLyogYXBwbHkgdGhyZWFkaW5nPyAqLworI2lmIGRlZmluZWQoVVNFX1RIUkVBRFNfUE9TSVgpIHx8IGRlZmluZWQoVVNFX1RIUkVBRFNfV0lOMzIpCisjZGVmaW5lIFRIUkVBRElOR19TVVBQT1JUCisjZW5kaWYKKworI2lmIGRlZmluZWQoVEhSRUFESU5HX1NVUFBPUlQpCitzdGF0aWMgbWJlZHRsc19lbnRyb3B5X2NvbnRleHQgZW50cm9weTsKKworc3RhdGljIGludCBlbnRyb3B5X2luaXRfaW5pdGlhbGl6ZWQgPSAwOworCisvKiBzdGFydCBvZiBlbnRyb3B5X2luaXRfbXV0ZXgoKSAqLworc3RhdGljIHZvaWQgZW50cm9weV9pbml0X211dGV4KG1iZWR0bHNfZW50cm9weV9jb250ZXh0ICpjdHgpCit7CisgIC8qIGxvY2sgMCA9IGVudHJvcHlfaW5pdF9tdXRleCgpICovCisgIEN1cmxfcG9sYXJzc2x0aHJlYWRsb2NrX2xvY2tfZnVuY3Rpb24oMCk7CisgIGlmKGVudHJvcHlfaW5pdF9pbml0aWFsaXplZCA9PSAwKSB7CisgICAgbWJlZHRsc19lbnRyb3B5X2luaXQoY3R4KTsKKyAgICBlbnRyb3B5X2luaXRfaW5pdGlhbGl6ZWQgPSAxOworICB9CisgIEN1cmxfcG9sYXJzc2x0aHJlYWRsb2NrX3VubG9ja19mdW5jdGlvbigwKTsKK30KKy8qIGVuZCBvZiBlbnRyb3B5X2luaXRfbXV0ZXgoKSAqLworCisvKiBzdGFydCBvZiBlbnRyb3B5X2Z1bmNfbXV0ZXgoKSAqLworc3RhdGljIGludCBlbnRyb3B5X2Z1bmNfbXV0ZXgodm9pZCAqZGF0YSwgdW5zaWduZWQgY2hhciAqb3V0cHV0LCBzaXplX3QgbGVuKQoreworICBpbnQgcmV0OworICAvKiBsb2NrIDEgPSBlbnRyb3B5X2Z1bmNfbXV0ZXgoKSAqLworICBDdXJsX3BvbGFyc3NsdGhyZWFkbG9ja19sb2NrX2Z1bmN0aW9uKDEpOworICByZXQgPSBtYmVkdGxzX2VudHJvcHlfZnVuYyhkYXRhLCBvdXRwdXQsIGxlbik7CisgIEN1cmxfcG9sYXJzc2x0aHJlYWRsb2NrX3VubG9ja19mdW5jdGlvbigxKTsKKworICByZXR1cm4gcmV0OworfQorLyogZW5kIG9mIGVudHJvcHlfZnVuY19tdXRleCgpICovCisKKyNlbmRpZiAvKiBUSFJFQURJTkdfU1VQUE9SVCAqLworCisvKiBEZWZpbmUgdGhpcyB0byBlbmFibGUgbG90cyBvZiBkZWJ1Z2dpbmcgZm9yIG1iZWRUTFMgKi8KKyN1bmRlZiBNQkVEVExTX0RFQlVHCisKKyNpZmRlZiBNQkVEVExTX0RFQlVHCitzdGF0aWMgdm9pZCBtYmVkX2RlYnVnKHZvaWQgKmNvbnRleHQsIGludCBsZXZlbCwgY29uc3QgY2hhciAqZl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGluZV9uYiwgY29uc3QgY2hhciAqbGluZSkKK3sKKyAgc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEgPSBOVUxMOworCisgIGlmKCFjb250ZXh0KQorICAgIHJldHVybjsKKworICBkYXRhID0gKHN0cnVjdCBTZXNzaW9uSGFuZGxlICopY29udGV4dDsKKworICBpbmZvZihkYXRhLCAiJXMiLCBsaW5lKTsKKyAgKHZvaWQpIGxldmVsOworfQorI2Vsc2UKKyNlbmRpZgorCisvKiBBTFBOIGZvciBodHRwMj8gKi8KKyNpZmRlZiBVU0VfTkdIVFRQMgorIyAgdW5kZWYgSEFTX0FMUE4KKyMgIGlmZGVmIE1CRURUTFNfU1NMX0FMUE4KKyMgICAgZGVmaW5lIEhBU19BTFBOCisjICBlbmRpZgorI2VuZGlmCisKKworLyoKKyAqICBwcm9maWxlCisgKi8KK2NvbnN0IG1iZWR0bHNfeDUwOV9jcnRfcHJvZmlsZSBtYmVkdGxzX3g1MDlfY3J0X3Byb2ZpbGVfZnIgPQoreworICAvKiBIYXNoZXMgZnJvbSBTSEEtMSBhbmQgYWJvdmUgKi8KKyAgTUJFRFRMU19YNTA5X0lEX0ZMQUcoTUJFRFRMU19NRF9TSEExKSB8CisgIE1CRURUTFNfWDUwOV9JRF9GTEFHKE1CRURUTFNfTURfUklQRU1EMTYwKSB8CisgIE1CRURUTFNfWDUwOV9JRF9GTEFHKE1CRURUTFNfTURfU0hBMjI0KSB8CisgIE1CRURUTFNfWDUwOV9JRF9GTEFHKE1CRURUTFNfTURfU0hBMjU2KSB8CisgIE1CRURUTFNfWDUwOV9JRF9GTEFHKE1CRURUTFNfTURfU0hBMzg0KSB8CisgIE1CRURUTFNfWDUwOV9JRF9GTEFHKE1CRURUTFNfTURfU0hBNTEyKSwKKyAgMHhGRkZGRkZGLCAvKiBBbnkgUEsgYWxnICAgICovCisgIDB4RkZGRkZGRiwgLyogQW55IGN1cnZlICAgICAqLworICAxMDI0LCAgICAgIC8qIFJTQSBtaW4ga2V5IGxlbiAqLworfTsKKworLyogU2VlIGh0dHBzOi8vdGxzLm1iZWQub3JnL2Rpc2N1c3Npb25zL2dlbmVyaWMvCisgICBob3d0by1kZXRlcm1pbmUtZXhhY3QtYnVmZmVyLWxlbi1mb3ItbWJlZHRsc19wa193cml0ZV9wdWJrZXlfZGVyCisqLworI2RlZmluZSBSU0FfUFVCX0RFUl9NQVhfQllURVMgICAoMzggKyAyICogTUJFRFRMU19NUElfTUFYX1NJWkUpCisjZGVmaW5lIEVDUF9QVUJfREVSX01BWF9CWVRFUyAgICgzMCArIDIgKiBNQkVEVExTX0VDUF9NQVhfQllURVMpCisKKyNkZWZpbmUgUFVCX0RFUl9NQVhfQllURVMgICAoUlNBX1BVQl9ERVJfTUFYX0JZVEVTID4gRUNQX1BVQl9ERVJfTUFYX0JZVEVTID8gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSU0FfUFVCX0RFUl9NQVhfQllURVMgOiBFQ1BfUFVCX0RFUl9NQVhfQllURVMpCisKK3N0YXRpYyBDdXJsX3JlY3YgbWJlZF9yZWN2Oworc3RhdGljIEN1cmxfc2VuZCBtYmVkX3NlbmQ7CisKK3N0YXRpYyBDVVJMY29kZQorbWJlZF9jb25uZWN0X3N0ZXAxKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKKyAgICAgICAgICAgICAgICAgICBpbnQgc29ja2luZGV4KQoreworICBzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSA9IGNvbm4tPmRhdGE7CisgIHN0cnVjdCBzc2xfY29ubmVjdF9kYXRhKiBjb25uc3NsID0gJmNvbm4tPnNzbFtzb2NraW5kZXhdOworCisgIGJvb2wgc25pID0gVFJVRTsgLyogZGVmYXVsdCBpcyBTTkkgZW5hYmxlZCAqLworICBpbnQgcmV0ID0gLTE7CisjaWZkZWYgRU5BQkxFX0lQVjYKKyAgc3RydWN0IGluNl9hZGRyIGFkZHI7CisjZWxzZQorICBzdHJ1Y3QgaW5fYWRkciBhZGRyOworI2VuZGlmCisgIHZvaWQgKm9sZF9zZXNzaW9uID0gTlVMTDsKKyAgY2hhciBlcnJvcmJ1ZlsxMjhdOworICBlcnJvcmJ1ZlswXT0wOworCisgIC8qIG1iZWRUTFMgb25seSBzdXBwb3J0cyBTU0x2MyBhbmQgVExTdjEgKi8KKyAgaWYoZGF0YS0+c2V0LnNzbC52ZXJzaW9uID09IENVUkxfU1NMVkVSU0lPTl9TU0x2MikgeworICAgIGZhaWxmKGRhdGEsICJtYmVkVExTIGRvZXMgbm90IHN1cHBvcnQgU1NMdjIiKTsKKyAgICByZXR1cm4gQ1VSTEVfU1NMX0NPTk5FQ1RfRVJST1I7CisgIH0KKyAgZWxzZSBpZihkYXRhLT5zZXQuc3NsLnZlcnNpb24gPT0gQ1VSTF9TU0xWRVJTSU9OX1NTTHYzKQorICAgIHNuaSA9IEZBTFNFOyAvKiBTU0x2MyBoYXMgbm8gU05JICovCisKKyNpZmRlZiBUSFJFQURJTkdfU1VQUE9SVAorICBlbnRyb3B5X2luaXRfbXV0ZXgoJmVudHJvcHkpOworICBtYmVkdGxzX2N0cl9kcmJnX2luaXQoJmNvbm5zc2wtPmN0cl9kcmJnKTsKKworICByZXQgPSBtYmVkdGxzX2N0cl9kcmJnX3NlZWQoJmNvbm5zc2wtPmN0cl9kcmJnLCBlbnRyb3B5X2Z1bmNfbXV0ZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZW50cm9weSwgTlVMTCwgMCk7CisgIGlmKHJldCkgeworI2lmZGVmIE1CRURUTFNfRVJST1JfQworICAgIG1iZWR0bHNfc3RyZXJyb3IocmV0LCBlcnJvcmJ1Ziwgc2l6ZW9mKGVycm9yYnVmKSk7CisjZW5kaWYgLyogTUJFRFRMU19FUlJPUl9DICovCisgICAgZmFpbGYoZGF0YSwgIkZhaWxlZCAtIG1iZWRUTFM6IGN0cl9kcmJnX2luaXQgcmV0dXJuZWQgKC0weCUwNFgpICVzXG4iLAorICAgICAgICAgIC1yZXQsIGVycm9yYnVmKTsKKyAgfQorI2Vsc2UKKyAgbWJlZHRsc19lbnRyb3B5X2luaXQoJmNvbm5zc2wtPmVudHJvcHkpOworICBtYmVkdGxzX2N0cl9kcmJnX2luaXQoJmNvbm5zc2wtPmN0cl9kcmJnKTsKKworICByZXQgPSBtYmVkdGxzX2N0cl9kcmJnX3NlZWQoJmNvbm5zc2wtPmN0cl9kcmJnLCBtYmVkdGxzX2VudHJvcHlfZnVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb25uc3NsLT5lbnRyb3B5LCBOVUxMLCAwKTsKKyAgaWYocmV0KSB7CisjaWZkZWYgTUJFRFRMU19FUlJPUl9DCisgICAgbWJlZHRsc19zdHJlcnJvcihyZXQsIGVycm9yYnVmLCBzaXplb2YoZXJyb3JidWYpKTsKKyNlbmRpZiAvKiBNQkVEVExTX0VSUk9SX0MgKi8KKyAgICBmYWlsZihkYXRhLCAiRmFpbGVkIC0gbWJlZFRMUzogY3RyX2RyYmdfaW5pdCByZXR1cm5lZCAoLTB4JTA0WCkgJXNcbiIsCisgICAgICAgICAgLXJldCwgZXJyb3JidWYpOworICB9CisjZW5kaWYgLyogVEhSRUFESU5HX1NVUFBPUlQgKi8KKworICAvKiBMb2FkIHRoZSB0cnVzdGVkIENBICovCisgIG1iZWR0bHNfeDUwOV9jcnRfaW5pdCgmY29ubnNzbC0+Y2FjZXJ0KTsKKworICBpZihkYXRhLT5zZXQuc3RyW1NUUklOR19TU0xfQ0FGSUxFXSkgeworICAgIHJldCA9IG1iZWR0bHNfeDUwOV9jcnRfcGFyc2VfZmlsZSgmY29ubnNzbC0+Y2FjZXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT5zZXQuc3RyW1NUUklOR19TU0xfQ0FGSUxFXSk7CisKKyAgICBpZihyZXQ8MCkgeworI2lmZGVmIE1CRURUTFNfRVJST1JfQworICAgICAgbWJlZHRsc19zdHJlcnJvcihyZXQsIGVycm9yYnVmLCBzaXplb2YoZXJyb3JidWYpKTsKKyNlbmRpZiAvKiBNQkVEVExTX0VSUk9SX0MgKi8KKyAgICAgIGZhaWxmKGRhdGEsICJFcnJvciByZWFkaW5nIGNhIGNlcnQgZmlsZSAlcyAtIG1iZWRUTFM6ICgtMHglMDRYKSAlcyIsCisgICAgICAgICAgICBkYXRhLT5zZXQuc3RyW1NUUklOR19TU0xfQ0FGSUxFXSwgLXJldCwgZXJyb3JidWYpOworCisgICAgICBpZihkYXRhLT5zZXQuc3NsLnZlcmlmeXBlZXIpCisgICAgICAgIHJldHVybiBDVVJMRV9TU0xfQ0FDRVJUX0JBREZJTEU7CisgICAgfQorICB9CisKKyAgaWYoZGF0YS0+c2V0LnN0cltTVFJJTkdfU1NMX0NBUEFUSF0pIHsKKyAgICByZXQgPSBtYmVkdGxzX3g1MDlfY3J0X3BhcnNlX3BhdGgoJmNvbm5zc2wtPmNhY2VydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+c2V0LnN0cltTVFJJTkdfU1NMX0NBUEFUSF0pOworCisgICAgaWYocmV0PDApIHsKKyNpZmRlZiBNQkVEVExTX0VSUk9SX0MKKyAgICAgIG1iZWR0bHNfc3RyZXJyb3IocmV0LCBlcnJvcmJ1Ziwgc2l6ZW9mKGVycm9yYnVmKSk7CisjZW5kaWYgLyogTUJFRFRMU19FUlJPUl9DICovCisgICAgICBmYWlsZihkYXRhLCAiRXJyb3IgcmVhZGluZyBjYSBjZXJ0IHBhdGggJXMgLSBtYmVkVExTOiAoLTB4JTA0WCkgJXMiLAorICAgICAgICAgICAgZGF0YS0+c2V0LnN0cltTVFJJTkdfU1NMX0NBUEFUSF0sIC1yZXQsIGVycm9yYnVmKTsKKworICAgICAgaWYoZGF0YS0+c2V0LnNzbC52ZXJpZnlwZWVyKQorICAgICAgICByZXR1cm4gQ1VSTEVfU1NMX0NBQ0VSVF9CQURGSUxFOworICAgIH0KKyAgfQorCisgIC8qIExvYWQgdGhlIGNsaWVudCBjZXJ0aWZpY2F0ZSAqLworICBtYmVkdGxzX3g1MDlfY3J0X2luaXQoJmNvbm5zc2wtPmNsaWNlcnQpOworCisgIGlmKGRhdGEtPnNldC5zdHJbU1RSSU5HX0NFUlRdKSB7CisgICAgcmV0ID0gbWJlZHRsc194NTA5X2NydF9wYXJzZV9maWxlKCZjb25uc3NsLT5jbGljZXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT5zZXQuc3RyW1NUUklOR19DRVJUXSk7CisKKyAgICBpZihyZXQpIHsKKyNpZmRlZiBNQkVEVExTX0VSUk9SX0MKKyAgICAgIG1iZWR0bHNfc3RyZXJyb3IocmV0LCBlcnJvcmJ1Ziwgc2l6ZW9mKGVycm9yYnVmKSk7CisjZW5kaWYgLyogTUJFRFRMU19FUlJPUl9DICovCisgICAgICBmYWlsZihkYXRhLCAiRXJyb3IgcmVhZGluZyBjbGllbnQgY2VydCBmaWxlICVzIC0gbWJlZFRMUzogKC0weCUwNFgpICVzIiwKKyAgICAgICAgICAgIGRhdGEtPnNldC5zdHJbU1RSSU5HX0NFUlRdLCAtcmV0LCBlcnJvcmJ1Zik7CisKKyAgICAgIHJldHVybiBDVVJMRV9TU0xfQ0VSVFBST0JMRU07CisgICAgfQorICB9CisKKyAgLyogTG9hZCB0aGUgY2xpZW50IHByaXZhdGUga2V5ICovCisgIG1iZWR0bHNfcGtfaW5pdCgmY29ubnNzbC0+cGspOworCisgIGlmKGRhdGEtPnNldC5zdHJbU1RSSU5HX0tFWV0pIHsKKyAgICByZXQgPSBtYmVkdGxzX3BrX3BhcnNlX2tleWZpbGUoJmNvbm5zc2wtPnBrLCBkYXRhLT5zZXQuc3RyW1NUUklOR19LRVldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT5zZXQuc3RyW1NUUklOR19LRVlfUEFTU1dEXSk7CisgICAgaWYocmV0ID09IDAgJiYgIW1iZWR0bHNfcGtfY2FuX2RvKCZjb25uc3NsLT5waywgTUJFRFRMU19QS19SU0EpKQorICAgICAgcmV0ID0gTUJFRFRMU19FUlJfUEtfVFlQRV9NSVNNQVRDSDsKKworICAgIGlmKHJldCkgeworI2lmZGVmIE1CRURUTFNfRVJST1JfQworICAgICAgbWJlZHRsc19zdHJlcnJvcihyZXQsIGVycm9yYnVmLCBzaXplb2YoZXJyb3JidWYpKTsKKyNlbmRpZiAvKiBNQkVEVExTX0VSUk9SX0MgKi8KKyAgICAgIGZhaWxmKGRhdGEsICJFcnJvciByZWFkaW5nIHByaXZhdGUga2V5ICVzIC0gbWJlZFRMUzogKC0weCUwNFgpICVzIiwKKyAgICAgICAgICAgIGRhdGEtPnNldC5zdHJbU1RSSU5HX0tFWV0sIC1yZXQsIGVycm9yYnVmKTsKKworICAgICAgcmV0dXJuIENVUkxFX1NTTF9DRVJUUFJPQkxFTTsKKyAgICB9CisgIH0KKworICAvKiBMb2FkIHRoZSBDUkwgKi8KKyAgbWJlZHRsc194NTA5X2NybF9pbml0KCZjb25uc3NsLT5jcmwpOworCisgIGlmKGRhdGEtPnNldC5zdHJbU1RSSU5HX1NTTF9DUkxGSUxFXSkgeworICAgIHJldCA9IG1iZWR0bHNfeDUwOV9jcmxfcGFyc2VfZmlsZSgmY29ubnNzbC0+Y3JsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT5zZXQuc3RyW1NUUklOR19TU0xfQ1JMRklMRV0pOworCisgICAgaWYocmV0KSB7CisjaWZkZWYgTUJFRFRMU19FUlJPUl9DCisgICAgICBtYmVkdGxzX3N0cmVycm9yKHJldCwgZXJyb3JidWYsIHNpemVvZihlcnJvcmJ1ZikpOworI2VuZGlmIC8qIE1CRURUTFNfRVJST1JfQyAqLworICAgICAgZmFpbGYoZGF0YSwgIkVycm9yIHJlYWRpbmcgQ1JMIGZpbGUgJXMgLSBtYmVkVExTOiAoLTB4JTA0WCkgJXMiLAorICAgICAgICAgICAgZGF0YS0+c2V0LnN0cltTVFJJTkdfU1NMX0NSTEZJTEVdLCAtcmV0LCBlcnJvcmJ1Zik7CisKKyAgICAgIHJldHVybiBDVVJMRV9TU0xfQ1JMX0JBREZJTEU7CisgICAgfQorICB9CisKKyAgaW5mb2YoZGF0YSwgIm1iZWRUTFM6IENvbm5lY3RpbmcgdG8gJXM6JWRcbiIsCisgICAgICAgIGNvbm4tPmhvc3QubmFtZSwgY29ubi0+cmVtb3RlX3BvcnQpOworCisgIG1iZWR0bHNfc3NsX2NvbmZpZ19pbml0KCZjb25uc3NsLT5jb25maWcpOworCisgIG1iZWR0bHNfc3NsX2luaXQoJmNvbm5zc2wtPnNzbCk7CisgIGlmKG1iZWR0bHNfc3NsX3NldHVwKCZjb25uc3NsLT5zc2wsICZjb25uc3NsLT5jb25maWcpKSB7CisgICAgZmFpbGYoZGF0YSwgIm1iZWRUTFM6IHNzbF9pbml0IGZhaWxlZCIpOworICAgIHJldHVybiBDVVJMRV9TU0xfQ09OTkVDVF9FUlJPUjsKKyAgfQorICByZXQgPSBtYmVkdGxzX3NzbF9jb25maWdfZGVmYXVsdHMoJmNvbm5zc2wtPmNvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1CRURUTFNfU1NMX0lTX0NMSUVOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1CRURUTFNfU1NMX1RSQU5TUE9SVF9TVFJFQU0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQkVEVExTX1NTTF9QUkVTRVRfREVGQVVMVCk7CisgIGlmKHJldCkgeworICAgIGZhaWxmKGRhdGEsICJtYmVkVExTOiBzc2xfY29uZmlnIGZhaWxlZCIpOworICAgIHJldHVybiBDVVJMRV9TU0xfQ09OTkVDVF9FUlJPUjsKKyAgfQorCisgIC8qIG5ldyBwcm9maWxlIHdpdGggUlNBIG1pbiBrZXkgbGVuID0gMTAyNCAuLi4gKi8KKyAgbWJlZHRsc19zc2xfY29uZl9jZXJ0X3Byb2ZpbGUoJmNvbm5zc2wtPmNvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1iZWR0bHNfeDUwOV9jcnRfcHJvZmlsZV9mcik7CisKKyAgc3dpdGNoKGRhdGEtPnNldC5zc2wudmVyc2lvbikgeworICBjYXNlIENVUkxfU1NMVkVSU0lPTl9ERUZBVUxUOgorICBjYXNlIENVUkxfU1NMVkVSU0lPTl9UTFN2MToKKyAgICBtYmVkdGxzX3NzbF9jb25mX21pbl92ZXJzaW9uKCZjb25uc3NsLT5jb25maWcsIE1CRURUTFNfU1NMX01BSk9SX1ZFUlNJT05fMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1CRURUTFNfU1NMX01JTk9SX1ZFUlNJT05fMSk7CisgICAgaW5mb2YoZGF0YSwgIm1iZWRUTFM6IFNldCBtaW4gU1NMIHZlcnNpb24gdG8gVExTIDEuMFxuIik7CisgICAgYnJlYWs7CisgIGNhc2UgQ1VSTF9TU0xWRVJTSU9OX1NTTHYzOgorICAgIG1iZWR0bHNfc3NsX2NvbmZfbWluX3ZlcnNpb24oJmNvbm5zc2wtPmNvbmZpZywgTUJFRFRMU19TU0xfTUFKT1JfVkVSU0lPTl8zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUJFRFRMU19TU0xfTUlOT1JfVkVSU0lPTl8wKTsKKyAgICBtYmVkdGxzX3NzbF9jb25mX21heF92ZXJzaW9uKCZjb25uc3NsLT5jb25maWcsIE1CRURUTFNfU1NMX01BSk9SX1ZFUlNJT05fMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1CRURUTFNfU1NMX01JTk9SX1ZFUlNJT05fMCk7CisgICAgaW5mb2YoZGF0YSwgIm1iZWRUTFM6IFNldCBTU0wgdmVyc2lvbiB0byBTU0x2M1xuIik7CisgICAgYnJlYWs7CisgIGNhc2UgQ1VSTF9TU0xWRVJTSU9OX1RMU3YxXzA6CisgICAgbWJlZHRsc19zc2xfY29uZl9taW5fdmVyc2lvbigmY29ubnNzbC0+Y29uZmlnLCBNQkVEVExTX1NTTF9NQUpPUl9WRVJTSU9OXzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQkVEVExTX1NTTF9NSU5PUl9WRVJTSU9OXzEpOworICAgIG1iZWR0bHNfc3NsX2NvbmZfbWF4X3ZlcnNpb24oJmNvbm5zc2wtPmNvbmZpZywgTUJFRFRMU19TU0xfTUFKT1JfVkVSU0lPTl8zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUJFRFRMU19TU0xfTUlOT1JfVkVSU0lPTl8xKTsKKyAgICBpbmZvZihkYXRhLCAibWJlZFRMUzogU2V0IFNTTCB2ZXJzaW9uIHRvIFRMUyAxLjBcbiIpOworICAgIGJyZWFrOworICBjYXNlIENVUkxfU1NMVkVSU0lPTl9UTFN2MV8xOgorICAgIG1iZWR0bHNfc3NsX2NvbmZfbWluX3ZlcnNpb24oJmNvbm5zc2wtPmNvbmZpZywgTUJFRFRMU19TU0xfTUFKT1JfVkVSU0lPTl8zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUJFRFRMU19TU0xfTUlOT1JfVkVSU0lPTl8yKTsKKyAgICBtYmVkdGxzX3NzbF9jb25mX21heF92ZXJzaW9uKCZjb25uc3NsLT5jb25maWcsIE1CRURUTFNfU1NMX01BSk9SX1ZFUlNJT05fMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1CRURUTFNfU1NMX01JTk9SX1ZFUlNJT05fMik7CisgICAgaW5mb2YoZGF0YSwgIm1iZWRUTFM6IFNldCBTU0wgdmVyc2lvbiB0byBUTFMgMS4xXG4iKTsKKyAgICBicmVhazsKKyAgY2FzZSBDVVJMX1NTTFZFUlNJT05fVExTdjFfMjoKKyAgICBtYmVkdGxzX3NzbF9jb25mX21pbl92ZXJzaW9uKCZjb25uc3NsLT5jb25maWcsIE1CRURUTFNfU1NMX01BSk9SX1ZFUlNJT05fMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1CRURUTFNfU1NMX01JTk9SX1ZFUlNJT05fMyk7CisgICAgbWJlZHRsc19zc2xfY29uZl9tYXhfdmVyc2lvbigmY29ubnNzbC0+Y29uZmlnLCBNQkVEVExTX1NTTF9NQUpPUl9WRVJTSU9OXzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQkVEVExTX1NTTF9NSU5PUl9WRVJTSU9OXzMpOworICAgIGluZm9mKGRhdGEsICJtYmVkVExTOiBTZXQgU1NMIHZlcnNpb24gdG8gVExTIDEuMlxuIik7CisgICAgYnJlYWs7CisgIGRlZmF1bHQ6CisgICAgZmFpbGYoZGF0YSwgIm1iZWRUTFM6IFVuc3VwcG9ydGVkIFNTTCBwcm90b2NvbCB2ZXJzaW9uIik7CisgICAgcmV0dXJuIENVUkxFX1NTTF9DT05ORUNUX0VSUk9SOworICB9CisKKyAgbWJlZHRsc19zc2xfY29uZl9hdXRobW9kZSgmY29ubnNzbC0+Y29uZmlnLCBNQkVEVExTX1NTTF9WRVJJRllfT1BUSU9OQUwpOworCisgIG1iZWR0bHNfc3NsX2NvbmZfcm5nKCZjb25uc3NsLT5jb25maWcsIG1iZWR0bHNfY3RyX2RyYmdfcmFuZG9tLAorICAgICAgICAgICAgICAgICAgICAgICAmY29ubnNzbC0+Y3RyX2RyYmcpOworICBtYmVkdGxzX3NzbF9zZXRfYmlvKCZjb25uc3NsLT5zc2wsICZjb25uLT5zb2NrW3NvY2tpbmRleF0sCisgICAgICAgICAgICAgICAgICAgICAgbWJlZHRsc19uZXRfc2VuZCwKKyAgICAgICAgICAgICAgICAgICAgICBtYmVkdGxzX25ldF9yZWN2LAorICAgICAgICAgICAgICAgICAgICAgIE5VTEwgLyogIHJldl90aW1lb3V0KCkgKi8pOworCisgIG1iZWR0bHNfc3NsX2NvbmZfY2lwaGVyc3VpdGVzKCZjb25uc3NsLT5jb25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1iZWR0bHNfc3NsX2xpc3RfY2lwaGVyc3VpdGVzKCkpOworICBpZighQ3VybF9zc2xfZ2V0c2Vzc2lvbmlkKGNvbm4sICZvbGRfc2Vzc2lvbiwgTlVMTCkpIHsKKyAgICByZXQgPSBtYmVkdGxzX3NzbF9zZXRfc2Vzc2lvbigmY29ubnNzbC0+c3NsLCBvbGRfc2Vzc2lvbik7CisgICAgaWYocmV0KSB7CisgICAgICBmYWlsZihkYXRhLCAibWJlZHRsc19zc2xfc2V0X3Nlc3Npb24gcmV0dXJuZWQgLTB4JXgiLCAtcmV0KTsKKyAgICAgIHJldHVybiBDVVJMRV9TU0xfQ09OTkVDVF9FUlJPUjsKKyAgICB9CisgICAgaW5mb2YoZGF0YSwgIm1iZWRUTFMgcmUtdXNpbmcgc2Vzc2lvblxuIik7CisgIH0KKworICBtYmVkdGxzX3NzbF9jb25mX2NhX2NoYWluKCZjb25uc3NsLT5jb25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvbm5zc2wtPmNhY2VydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29ubnNzbC0+Y3JsKTsKKworICBpZihkYXRhLT5zZXQuc3RyW1NUUklOR19LRVldKSB7CisgICAgbWJlZHRsc19zc2xfY29uZl9vd25fY2VydCgmY29ubnNzbC0+Y29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvbm5zc2wtPmNsaWNlcnQsICZjb25uc3NsLT5wayk7CisgIH0KKyAgaWYobWJlZHRsc19zc2xfc2V0X2hvc3RuYW1lKCZjb25uc3NsLT5zc2wsIGNvbm4tPmhvc3QubmFtZSkpIHsKKyAgICAvKiBtYmVkdGxzX3NzbF9zZXRfaG9zdG5hbWUoKSBzZXRzIHRoZSBuYW1lIHRvIHVzZSBpbiBDTi9TQU4gY2hlY2tzICphbmQqCisgICAgICAgdGhlIG5hbWUgdG8gc2V0IGluIHRoZSBTTkkgZXh0ZW5zaW9uLiBTbyBldmVuIGlmIGN1cmwgY29ubmVjdHMgdG8gYQorICAgICAgIGhvc3Qgc3BlY2lmaWVkIGFzIGFuIElQIGFkZHJlc3MsIHRoaXMgZnVuY3Rpb24gbXVzdCBiZSB1c2VkLiAqLworICAgIGZhaWxmKGRhdGEsICJjb3VsZG4ndCBzZXQgaG9zdG5hbWUgaW4gbWJlZFRMUyIpOworICAgIHJldHVybiBDVVJMRV9TU0xfQ09OTkVDVF9FUlJPUjsKKyAgfQorCisjaWZkZWYgSEFTX0FMUE4KKyAgaWYoY29ubi0+Yml0cy50bHNfZW5hYmxlX2FscG4pIHsKKyAgICBjb25zdCBjaGFyICoqcCA9ICZjb25uc3NsLT5wcm90b2NvbHNbMF07CisjaWZkZWYgVVNFX05HSFRUUDIKKyAgICBpZihkYXRhLT5zZXQuaHR0cHZlcnNpb24gPj0gQ1VSTF9IVFRQX1ZFUlNJT05fMikKKyAgICAgICpwKysgPSBOR0hUVFAyX1BST1RPX1ZFUlNJT05fSUQ7CisjZW5kaWYKKyAgICAqcCsrID0gQUxQTl9IVFRQXzFfMTsKKyAgICAqcCA9IE5VTEw7CisgICAgLyogdGhpcyBmdW5jdGlvbiBkb2Vzbid0IGNsb25lIHRoZSBwcm90b2NvbHMgYXJyYXksIHdoaWNoIGlzIHdoeSB3ZSBuZWVkCisgICAgICAgdG8ga2VlcCBpdCBhcm91bmQgKi8KKyAgICBpZihtYmVkdGxzX3NzbF9jb25mX2FscG5fcHJvdG9jb2xzKCZjb25uc3NsLT5jb25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29ubnNzbC0+cHJvdG9jb2xzWzBdKSkgeworICAgICAgZmFpbGYoZGF0YSwgIkZhaWxlZCBzZXR0aW5nIEFMUE4gcHJvdG9jb2xzIik7CisgICAgICByZXR1cm4gQ1VSTEVfU1NMX0NPTk5FQ1RfRVJST1I7CisgICAgfQorICAgIGZvcihwID0gJmNvbm5zc2wtPnByb3RvY29sc1swXTsgKnA7ICsrcCkKKyAgICAgIGluZm9mKGRhdGEsICJBTFBOLCBvZmZlcmluZyAlc1xuIiwgKnApOworICB9CisjZW5kaWYKKworI2lmZGVmIE1CRURUTFNfREVCVUcKKyAgbWJlZHRsc19zc2xfY29uZl9kYmcoJmNvbm5zc2wtPmNvbmZpZywgbWJlZHRsc19kZWJ1ZywgZGF0YSk7CisjZW5kaWYKKworICBjb25uc3NsLT5jb25uZWN0aW5nX3N0YXRlID0gc3NsX2Nvbm5lY3RfMjsKKworICByZXR1cm4gQ1VSTEVfT0s7Cit9CisKK3N0YXRpYyBDVVJMY29kZQorbWJlZF9jb25uZWN0X3N0ZXAyKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKKyAgICAgICAgICAgICAgICAgICBpbnQgc29ja2luZGV4KQoreworICBpbnQgcmV0OworICBzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSA9IGNvbm4tPmRhdGE7CisgIHN0cnVjdCBzc2xfY29ubmVjdF9kYXRhKiBjb25uc3NsID0gJmNvbm4tPnNzbFtzb2NraW5kZXhdOworICBjb25zdCBtYmVkdGxzX3g1MDlfY3J0ICpwZWVyY2VydDsKKworI2lmZGVmIEhBU19BTFBOCisgIGNvbnN0IGNoYXIqIG5leHRfcHJvdG9jb2w7CisjZW5kaWYKKworICBjaGFyIGVycm9yYnVmWzEyOF07CisgIGVycm9yYnVmWzBdID0gMDsKKworICBjb25uLT5yZWN2W3NvY2tpbmRleF0gPSBtYmVkX3JlY3Y7CisgIGNvbm4tPnNlbmRbc29ja2luZGV4XSA9IG1iZWRfc2VuZDsKKworICByZXQgPSBtYmVkdGxzX3NzbF9oYW5kc2hha2UoJmNvbm5zc2wtPnNzbCk7CisKKyAgaWYocmV0ID09IE1CRURUTFNfRVJSX1NTTF9XQU5UX1JFQUQpIHsKKyAgICBjb25uc3NsLT5jb25uZWN0aW5nX3N0YXRlID0gc3NsX2Nvbm5lY3RfMl9yZWFkaW5nOworICAgIHJldHVybiBDVVJMRV9PSzsKKyAgfQorICBlbHNlIGlmKHJldCA9PSBNQkVEVExTX0VSUl9TU0xfV0FOVF9XUklURSkgeworICAgIGNvbm5zc2wtPmNvbm5lY3Rpbmdfc3RhdGUgPSBzc2xfY29ubmVjdF8yX3dyaXRpbmc7CisgICAgcmV0dXJuIENVUkxFX09LOworICB9CisgIGVsc2UgaWYocmV0KSB7CisjaWZkZWYgTUJFRFRMU19FUlJPUl9DCisgICAgbWJlZHRsc19zdHJlcnJvcihyZXQsIGVycm9yYnVmLCBzaXplb2YoZXJyb3JidWYpKTsKKyNlbmRpZiAvKiBNQkVEVExTX0VSUk9SX0MgKi8KKyAgICBmYWlsZihkYXRhLCAic3NsX2hhbmRzaGFrZSByZXR1cm5lZCAtIG1iZWRUTFM6ICgtMHglMDRYKSAlcyIsCisgICAgICAgICAgLXJldCwgZXJyb3JidWYpOworICAgIHJldHVybiBDVVJMRV9TU0xfQ09OTkVDVF9FUlJPUjsKKyAgfQorCisgIGluZm9mKGRhdGEsICJtYmVkVExTOiBIYW5kc2hha2UgY29tcGxldGUsIGNpcGhlciBpcyAlc1xuIiwKKyAgICAgICAgbWJlZHRsc19zc2xfZ2V0X2NpcGhlcnN1aXRlKCZjb25uLT5zc2xbc29ja2luZGV4XS5zc2wpCisgICAgKTsKKworICByZXQgPSBtYmVkdGxzX3NzbF9nZXRfdmVyaWZ5X3Jlc3VsdCgmY29ubi0+c3NsW3NvY2tpbmRleF0uc3NsKTsKKworICBpZihyZXQgJiYgZGF0YS0+c2V0LnNzbC52ZXJpZnlwZWVyKSB7CisgICAgaWYocmV0ICYgTUJFRFRMU19YNTA5X0JBRENFUlRfRVhQSVJFRCkKKyAgICAgIGZhaWxmKGRhdGEsICJDZXJ0IHZlcmlmeSBmYWlsZWQ6IEJBRENFUlRfRVhQSVJFRCIpOworCisgICAgaWYocmV0ICYgTUJFRFRMU19YNTA5X0JBRENFUlRfUkVWT0tFRCkgeworICAgICAgZmFpbGYoZGF0YSwgIkNlcnQgdmVyaWZ5IGZhaWxlZDogQkFEQ0VSVF9SRVZPS0VEIik7CisgICAgICByZXR1cm4gQ1VSTEVfU1NMX0NBQ0VSVDsKKyAgICB9CisKKyAgICBpZihyZXQgJiBNQkVEVExTX1g1MDlfQkFEQ0VSVF9DTl9NSVNNQVRDSCkKKyAgICAgIGZhaWxmKGRhdGEsICJDZXJ0IHZlcmlmeSBmYWlsZWQ6IEJBRENFUlRfQ05fTUlTTUFUQ0giKTsKKworICAgIGlmKHJldCAmIE1CRURUTFNfWDUwOV9CQURDRVJUX05PVF9UUlVTVEVEKQorICAgICAgZmFpbGYoZGF0YSwgIkNlcnQgdmVyaWZ5IGZhaWxlZDogQkFEQ0VSVF9OT1RfVFJVU1RFRCIpOworCisgICAgcmV0dXJuIENVUkxFX1BFRVJfRkFJTEVEX1ZFUklGSUNBVElPTjsKKyAgfQorCisgIHBlZXJjZXJ0ID0gbWJlZHRsc19zc2xfZ2V0X3BlZXJfY2VydCgmY29ubnNzbC0+c3NsKTsKKworICBpZihwZWVyY2VydCAmJiBkYXRhLT5zZXQudmVyYm9zZSkgeworICAgIGNvbnN0IHNpemVfdCBidWZzaXplID0gMTYzODQ7CisgICAgY2hhciAqYnVmZmVyID0gbWFsbG9jKGJ1ZnNpemUpOworCisgICAgaWYoIWJ1ZmZlcikKKyAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworCisgICAgaWYobWJlZHRsc194NTA5X2NydF9pbmZvKGJ1ZmZlciwgYnVmc2l6ZSwgIiogIiwgcGVlcmNlcnQpID4gMCkKKyAgICAgIGluZm9mKGRhdGEsICJEdW1waW5nIGNlcnQgaW5mbzpcbiVzXG4iLCBidWZmZXIpOworICAgIGVsc2UKKyAgICAgIGluZm9mKGRhdGEsICJVbmFibGUgdG8gZHVtcCBjZXJ0aWZpY2F0ZSBpbmZvcm1hdGlvbi5cbiIpOworCisgICAgZnJlZShidWZmZXIpOworICB9CisKKyAgaWYoZGF0YS0+c2V0LnN0cltTVFJJTkdfU1NMX1BJTk5FRFBVQkxJQ0tFWV0pIHsKKyAgICBpbnQgc2l6ZTsKKyAgICBDVVJMY29kZSByZXN1bHQ7CisgICAgbWJlZHRsc194NTA5X2NydCAqcDsKKyAgICB1bnNpZ25lZCBjaGFyIHB1YmtleVtQVUJfREVSX01BWF9CWVRFU107CisKKyAgICBpZighcGVlcmNlcnQgfHwgIXBlZXJjZXJ0LT5yYXcucCB8fCAhcGVlcmNlcnQtPnJhdy5sZW4pIHsKKyAgICAgIGZhaWxmKGRhdGEsICJGYWlsZWQgZHVlIHRvIG1pc3NpbmcgcGVlciBjZXJ0aWZpY2F0ZSIpOworICAgICAgcmV0dXJuIENVUkxFX1NTTF9QSU5ORURQVUJLRVlOT1RNQVRDSDsKKyAgICB9CisKKyAgICBwID0gY2FsbG9jKDEsIHNpemVvZigqcCkpOworCisgICAgaWYoIXApCisgICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKworICAgIG1iZWR0bHNfeDUwOV9jcnRfaW5pdChwKTsKKworICAgIC8qIE1ha2UgYSBjb3B5IG9mIG91ciBjb25zdCBwZWVyY2VydCBiZWNhdXNlIG1iZWR0bHNfcGtfd3JpdGVfcHVia2V5X2RlcgorICAgICAgIG5lZWRzIGEgbm9uLWNvbnN0IGtleSwgZm9yIG5vdy4KKyAgICAgICBodHRwczovL2dpdGh1Yi5jb20vQVJNbWJlZC9tYmVkdGxzL2lzc3Vlcy8zOTYgKi8KKyAgICBpZihtYmVkdGxzX3g1MDlfY3J0X3BhcnNlX2RlcihwLCBwZWVyY2VydC0+cmF3LnAsIHBlZXJjZXJ0LT5yYXcubGVuKSkgeworICAgICAgZmFpbGYoZGF0YSwgIkZhaWxlZCBjb3B5aW5nIHBlZXIgY2VydGlmaWNhdGUiKTsKKyAgICAgIG1iZWR0bHNfeDUwOV9jcnRfZnJlZShwKTsKKyAgICAgIGZyZWUocCk7CisgICAgICByZXR1cm4gQ1VSTEVfU1NMX1BJTk5FRFBVQktFWU5PVE1BVENIOworICAgIH0KKworICAgIHNpemUgPSBtYmVkdGxzX3BrX3dyaXRlX3B1YmtleV9kZXIoJnAtPnBrLCBwdWJrZXksIFBVQl9ERVJfTUFYX0JZVEVTKTsKKworICAgIGlmKHNpemUgPD0gMCkgeworICAgICAgZmFpbGYoZGF0YSwgIkZhaWxlZCBjb3B5aW5nIHB1YmxpYyBrZXkgZnJvbSBwZWVyIGNlcnRpZmljYXRlIik7CisgICAgICBtYmVkdGxzX3g1MDlfY3J0X2ZyZWUocCk7CisgICAgICBmcmVlKHApOworICAgICAgcmV0dXJuIENVUkxFX1NTTF9QSU5ORURQVUJLRVlOT1RNQVRDSDsKKyAgICB9CisKKyAgICAvKiBtYmVkdGxzX3BrX3dyaXRlX3B1YmtleV9kZXIgd3JpdGVzIGRhdGEgYXQgdGhlIGVuZCBvZiB0aGUgYnVmZmVyLiAqLworICAgIHJlc3VsdCA9IEN1cmxfcGluX3BlZXJfcHVia2V5KGRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+c2V0LnN0cltTVFJJTkdfU1NMX1BJTk5FRFBVQkxJQ0tFWV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnB1YmtleVtQVUJfREVSX01BWF9CWVRFUyAtIHNpemVdLCBzaXplKTsKKyAgICBpZihyZXN1bHQpIHsKKyAgICAgIG1iZWR0bHNfeDUwOV9jcnRfZnJlZShwKTsKKyAgICAgIGZyZWUocCk7CisgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIG1iZWR0bHNfeDUwOV9jcnRfZnJlZShwKTsKKyAgICBmcmVlKHApOworICB9CisKKyNpZmRlZiBIQVNfQUxQTgorICBpZihjb25uLT5iaXRzLnRsc19lbmFibGVfYWxwbikgeworICAgIG5leHRfcHJvdG9jb2wgPSBtYmVkdGxzX3NzbF9nZXRfYWxwbl9wcm90b2NvbCgmY29ubnNzbC0+c3NsKTsKKworICAgIGlmKG5leHRfcHJvdG9jb2wpIHsKKyAgICAgIGluZm9mKGRhdGEsICJBTFBOLCBzZXJ2ZXIgYWNjZXB0ZWQgdG8gdXNlICVzXG4iLCBuZXh0X3Byb3RvY29sKTsKKyNpZmRlZiBVU0VfTkdIVFRQMgorICAgICAgaWYoIXN0cm5jbXAobmV4dF9wcm90b2NvbCwgTkdIVFRQMl9QUk9UT19WRVJTSU9OX0lELAorICAgICAgICAgICAgICAgICAgTkdIVFRQMl9QUk9UT19WRVJTSU9OX0lEX0xFTikgJiYKKyAgICAgICAgICFuZXh0X3Byb3RvY29sW05HSFRUUDJfUFJPVE9fVkVSU0lPTl9JRF9MRU5dKSB7CisgICAgICAgIGNvbm4tPm5lZ25wbiA9IENVUkxfSFRUUF9WRVJTSU9OXzI7CisgICAgICB9CisgICAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgaWYoIXN0cm5jbXAobmV4dF9wcm90b2NvbCwgQUxQTl9IVFRQXzFfMSwgQUxQTl9IVFRQXzFfMV9MRU5HVEgpICYmCisgICAgICAgICAgICFuZXh0X3Byb3RvY29sW0FMUE5fSFRUUF8xXzFfTEVOR1RIXSkgeworICAgICAgICAgIGNvbm4tPm5lZ25wbiA9IENVUkxfSFRUUF9WRVJTSU9OXzFfMTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIGluZm9mKGRhdGEsICJBTFBOLCBzZXJ2ZXIgZGlkIG5vdCBhZ3JlZSB0byBhIHByb3RvY29sXG4iKTsKKyAgICB9CisgIH0KKyNlbmRpZgorCisgIGNvbm5zc2wtPmNvbm5lY3Rpbmdfc3RhdGUgPSBzc2xfY29ubmVjdF8zOworICBpbmZvZihkYXRhLCAiU1NMIGNvbm5lY3RlZFxuIik7CisKKyAgcmV0dXJuIENVUkxFX09LOworfQorCitzdGF0aWMgQ1VSTGNvZGUKK21iZWRfY29ubmVjdF9zdGVwMyhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCisgICAgICAgICAgICAgICAgICAgaW50IHNvY2tpbmRleCkKK3sKKyAgQ1VSTGNvZGUgcmV0Y29kZSA9IENVUkxFX09LOworICBzdHJ1Y3Qgc3NsX2Nvbm5lY3RfZGF0YSAqY29ubnNzbCA9ICZjb25uLT5zc2xbc29ja2luZGV4XTsKKyAgc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEgPSBjb25uLT5kYXRhOworICB2b2lkICpvbGRfc3NsX3Nlc3Npb25pZCA9IE5VTEw7CisgIG1iZWR0bHNfc3NsX3Nlc3Npb24gKm91cl9zc2xfc2Vzc2lvbmlkOworICBpbnQgcmV0OworCisgIERFQlVHQVNTRVJUKHNzbF9jb25uZWN0XzMgPT0gY29ubnNzbC0+Y29ubmVjdGluZ19zdGF0ZSk7CisKKyAgb3VyX3NzbF9zZXNzaW9uaWQgPSBtYWxsb2Moc2l6ZW9mKG1iZWR0bHNfc3NsX3Nlc3Npb24pKTsKKyAgaWYoIW91cl9zc2xfc2Vzc2lvbmlkKQorICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworCisgIG1iZWR0bHNfc3NsX3Nlc3Npb25faW5pdChvdXJfc3NsX3Nlc3Npb25pZCk7CisKKyAgcmV0ID0gbWJlZHRsc19zc2xfZ2V0X3Nlc3Npb24oJmNvbm5zc2wtPnNzbCwgb3VyX3NzbF9zZXNzaW9uaWQpOworICBpZihyZXQpIHsKKyAgICBmYWlsZihkYXRhLCAibWJlZHRsc19zc2xfZ2V0X3Nlc3Npb24gcmV0dXJuZWQgLTB4JXgiLCAtcmV0KTsKKyAgICByZXR1cm4gQ1VSTEVfU1NMX0NPTk5FQ1RfRVJST1I7CisgIH0KKworICAvKiBJZiB0aGVyZSdzIGFscmVhZHkgYSBtYXRjaGluZyBzZXNzaW9uIGluIHRoZSBjYWNoZSwgZGVsZXRlIGl0ICovCisgIGlmKCFDdXJsX3NzbF9nZXRzZXNzaW9uaWQoY29ubiwgJm9sZF9zc2xfc2Vzc2lvbmlkLCBOVUxMKSkKKyAgICBDdXJsX3NzbF9kZWxzZXNzaW9uaWQoY29ubiwgb2xkX3NzbF9zZXNzaW9uaWQpOworCisgIHJldGNvZGUgPSBDdXJsX3NzbF9hZGRzZXNzaW9uaWQoY29ubiwgb3VyX3NzbF9zZXNzaW9uaWQsIDApOworICBpZihyZXRjb2RlKSB7CisgICAgZnJlZShvdXJfc3NsX3Nlc3Npb25pZCk7CisgICAgZmFpbGYoZGF0YSwgImZhaWxlZCB0byBzdG9yZSBzc2wgc2Vzc2lvbiIpOworICAgIHJldHVybiByZXRjb2RlOworICB9CisKKyAgY29ubnNzbC0+Y29ubmVjdGluZ19zdGF0ZSA9IHNzbF9jb25uZWN0X2RvbmU7CisKKyAgcmV0dXJuIENVUkxFX09LOworfQorCitzdGF0aWMgc3NpemVfdCBtYmVkX3NlbmQoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBpbnQgc29ja2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKm1lbSwgc2l6ZV90IGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBDVVJMY29kZSAqY3VybGNvZGUpCit7CisgIGludCByZXQgPSAtMTsKKworICByZXQgPSBtYmVkdGxzX3NzbF93cml0ZSgmY29ubi0+c3NsW3NvY2tpbmRleF0uc3NsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgY2hhciAqKW1lbSwgbGVuKTsKKworICBpZihyZXQgPCAwKSB7CisgICAgKmN1cmxjb2RlID0gKHJldCA9PSBNQkVEVExTX0VSUl9TU0xfV0FOVF9XUklURSkgPworICAgICAgQ1VSTEVfQUdBSU4gOiBDVVJMRV9TRU5EX0VSUk9SOworICAgIHJldCA9IC0xOworICB9CisKKyAgcmV0dXJuIHJldDsKK30KKwordm9pZCBDdXJsX21iZWR0bHNfY2xvc2VfYWxsKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhKQoreworICAodm9pZClkYXRhOworfQorCit2b2lkIEN1cmxfbWJlZHRsc19jbG9zZShzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGludCBzb2NraW5kZXgpCit7CisgIG1iZWR0bHNfcGtfZnJlZSgmY29ubi0+c3NsW3NvY2tpbmRleF0ucGspOworICBtYmVkdGxzX3g1MDlfY3J0X2ZyZWUoJmNvbm4tPnNzbFtzb2NraW5kZXhdLmNsaWNlcnQpOworICBtYmVkdGxzX3g1MDlfY3J0X2ZyZWUoJmNvbm4tPnNzbFtzb2NraW5kZXhdLmNhY2VydCk7CisgIG1iZWR0bHNfeDUwOV9jcmxfZnJlZSgmY29ubi0+c3NsW3NvY2tpbmRleF0uY3JsKTsKKyAgbWJlZHRsc19zc2xfY29uZmlnX2ZyZWUoJmNvbm4tPnNzbFtzb2NraW5kZXhdLmNvbmZpZyk7CisgIG1iZWR0bHNfc3NsX2ZyZWUoJmNvbm4tPnNzbFtzb2NraW5kZXhdLnNzbCk7CisgIG1iZWR0bHNfY3RyX2RyYmdfZnJlZSgmY29ubi0+c3NsW3NvY2tpbmRleF0uY3RyX2RyYmcpOworI2lmbmRlZiBUSFJFQURJTkdfU1VQUE9SVAorICBtYmVkdGxzX2VudHJvcHlfZnJlZSgmY29ubi0+c3NsW3NvY2tpbmRleF0uZW50cm9weSk7CisjZW5kaWYgLyogVEhSRUFESU5HX1NVUFBPUlQgKi8KK30KKworc3RhdGljIHNzaXplX3QgbWJlZF9yZWN2KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgaW50IG51bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpidWYsIHNpemVfdCBidWZmZXJzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgIENVUkxjb2RlICpjdXJsY29kZSkKK3sKKyAgaW50IHJldCA9IC0xOworICBzc2l6ZV90IGxlbiA9IC0xOworCisgIG1lbXNldChidWYsIDAsIGJ1ZmZlcnNpemUpOworICByZXQgPSBtYmVkdGxzX3NzbF9yZWFkKCZjb25uLT5zc2xbbnVtXS5zc2wsICh1bnNpZ25lZCBjaGFyICopYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcnNpemUpOworCisgIGlmKHJldCA8PSAwKSB7CisgICAgaWYocmV0ID09IE1CRURUTFNfRVJSX1NTTF9QRUVSX0NMT1NFX05PVElGWSkKKyAgICAgIHJldHVybiAwOworCisgICAgKmN1cmxjb2RlID0gKHJldCA9PSBNQkVEVExTX0VSUl9TU0xfV0FOVF9SRUFEKSA/CisgICAgICBDVVJMRV9BR0FJTiA6IENVUkxFX1JFQ1ZfRVJST1I7CisgICAgcmV0dXJuIC0xOworICB9CisKKyAgbGVuID0gcmV0OworCisgIHJldHVybiBsZW47Cit9CisKK3ZvaWQgQ3VybF9tYmVkdGxzX3Nlc3Npb25fZnJlZSh2b2lkICpwdHIpCit7CisgIG1iZWR0bHNfc3NsX3Nlc3Npb25fZnJlZShwdHIpOworICBmcmVlKHB0cik7Cit9CisKK3NpemVfdCBDdXJsX21iZWR0bHNfdmVyc2lvbihjaGFyICpidWZmZXIsIHNpemVfdCBzaXplKQoreworICB1bnNpZ25lZCBpbnQgdmVyc2lvbiA9IG1iZWR0bHNfdmVyc2lvbl9nZXRfbnVtYmVyKCk7CisgIHJldHVybiBzbnByaW50ZihidWZmZXIsIHNpemUsICJtYmVkVExTLyVkLiVkLiVkIiwgdmVyc2lvbj4+MjQsCisgICAgICAgICAgICAgICAgICAodmVyc2lvbj4+MTYpJjB4ZmYsICh2ZXJzaW9uPj44KSYweGZmKTsKK30KKworc3RhdGljIENVUkxjb2RlCittYmVkX2Nvbm5lY3RfY29tbW9uKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKKyAgICAgICAgICAgICAgICAgICAgaW50IHNvY2tpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgYm9vbCBub25ibG9ja2luZywKKyAgICAgICAgICAgICAgICAgICAgYm9vbCAqZG9uZSkKK3sKKyAgQ1VSTGNvZGUgcmV0Y29kZTsKKyAgc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEgPSBjb25uLT5kYXRhOworICBzdHJ1Y3Qgc3NsX2Nvbm5lY3RfZGF0YSAqY29ubnNzbCA9ICZjb25uLT5zc2xbc29ja2luZGV4XTsKKyAgY3VybF9zb2NrZXRfdCBzb2NrZmQgPSBjb25uLT5zb2NrW3NvY2tpbmRleF07CisgIGxvbmcgdGltZW91dF9tczsKKyAgaW50IHdoYXQ7CisKKyAgLyogY2hlY2sgaWYgdGhlIGNvbm5lY3Rpb24gaGFzIGFscmVhZHkgYmVlbiBlc3RhYmxpc2hlZCAqLworICBpZihzc2xfY29ubmVjdGlvbl9jb21wbGV0ZSA9PSBjb25uc3NsLT5zdGF0ZSkgeworICAgICpkb25lID0gVFJVRTsKKyAgICByZXR1cm4gQ1VSTEVfT0s7CisgIH0KKworICBpZihzc2xfY29ubmVjdF8xPT1jb25uc3NsLT5jb25uZWN0aW5nX3N0YXRlKSB7CisgICAgLyogRmluZCBvdXQgaG93IG11Y2ggbW9yZSB0aW1lIHdlJ3JlIGFsbG93ZWQgKi8KKyAgICB0aW1lb3V0X21zID0gQ3VybF90aW1lbGVmdChkYXRhLCBOVUxMLCBUUlVFKTsKKworICAgIGlmKHRpbWVvdXRfbXMgPCAwKSB7CisgICAgICAvKiBubyBuZWVkIHRvIGNvbnRpbnVlIGlmIHRpbWUgYWxyZWFkeSBpcyB1cCAqLworICAgICAgZmFpbGYoZGF0YSwgIlNTTCBjb25uZWN0aW9uIHRpbWVvdXQiKTsKKyAgICAgIHJldHVybiBDVVJMRV9PUEVSQVRJT05fVElNRURPVVQ7CisgICAgfQorICAgIHJldGNvZGUgPSBtYmVkX2Nvbm5lY3Rfc3RlcDEoY29ubiwgc29ja2luZGV4KTsKKyAgICBpZihyZXRjb2RlKQorICAgICAgcmV0dXJuIHJldGNvZGU7CisgIH0KKworICB3aGlsZShzc2xfY29ubmVjdF8yID09IGNvbm5zc2wtPmNvbm5lY3Rpbmdfc3RhdGUgfHwKKyAgICAgICAgc3NsX2Nvbm5lY3RfMl9yZWFkaW5nID09IGNvbm5zc2wtPmNvbm5lY3Rpbmdfc3RhdGUgfHwKKyAgICAgICAgc3NsX2Nvbm5lY3RfMl93cml0aW5nID09IGNvbm5zc2wtPmNvbm5lY3Rpbmdfc3RhdGUpIHsKKworICAgIC8qIGNoZWNrIGFsbG93ZWQgdGltZSBsZWZ0ICovCisgICAgdGltZW91dF9tcyA9IEN1cmxfdGltZWxlZnQoZGF0YSwgTlVMTCwgVFJVRSk7CisKKyAgICBpZih0aW1lb3V0X21zIDwgMCkgeworICAgICAgLyogbm8gbmVlZCB0byBjb250aW51ZSBpZiB0aW1lIGFscmVhZHkgaXMgdXAgKi8KKyAgICAgIGZhaWxmKGRhdGEsICJTU0wgY29ubmVjdGlvbiB0aW1lb3V0Iik7CisgICAgICByZXR1cm4gQ1VSTEVfT1BFUkFUSU9OX1RJTUVET1VUOworICAgIH0KKworICAgIC8qIGlmIHNzbCBpcyBleHBlY3Rpbmcgc29tZXRoaW5nLCBjaGVjayBpZiBpdCdzIGF2YWlsYWJsZS4gKi8KKyAgICBpZihjb25uc3NsLT5jb25uZWN0aW5nX3N0YXRlID09IHNzbF9jb25uZWN0XzJfcmVhZGluZworICAgICAgIHx8IGNvbm5zc2wtPmNvbm5lY3Rpbmdfc3RhdGUgPT0gc3NsX2Nvbm5lY3RfMl93cml0aW5nKSB7CisKKyAgICAgIGN1cmxfc29ja2V0X3Qgd3JpdGVmZCA9IHNzbF9jb25uZWN0XzJfd3JpdGluZz09CisgICAgICAgIGNvbm5zc2wtPmNvbm5lY3Rpbmdfc3RhdGU/c29ja2ZkOkNVUkxfU09DS0VUX0JBRDsKKyAgICAgIGN1cmxfc29ja2V0X3QgcmVhZGZkID0gc3NsX2Nvbm5lY3RfMl9yZWFkaW5nPT0KKyAgICAgICAgY29ubnNzbC0+Y29ubmVjdGluZ19zdGF0ZT9zb2NrZmQ6Q1VSTF9TT0NLRVRfQkFEOworCisgICAgICB3aGF0ID0gQ3VybF9zb2NrZXRfcmVhZHkocmVhZGZkLCB3cml0ZWZkLCBub25ibG9ja2luZyA/IDAgOiB0aW1lb3V0X21zKTsKKyAgICAgIGlmKHdoYXQgPCAwKSB7CisgICAgICAgIC8qIGZhdGFsIGVycm9yICovCisgICAgICAgIGZhaWxmKGRhdGEsICJzZWxlY3QvcG9sbCBvbiBTU0wgc29ja2V0LCBlcnJubzogJWQiLCBTT0NLRVJSTk8pOworICAgICAgICByZXR1cm4gQ1VSTEVfU1NMX0NPTk5FQ1RfRVJST1I7CisgICAgICB9CisgICAgICBlbHNlIGlmKDAgPT0gd2hhdCkgeworICAgICAgICBpZihub25ibG9ja2luZykgeworICAgICAgICAgICpkb25lID0gRkFMU0U7CisgICAgICAgICAgcmV0dXJuIENVUkxFX09LOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIC8qIHRpbWVvdXQgKi8KKyAgICAgICAgICBmYWlsZihkYXRhLCAiU1NMIGNvbm5lY3Rpb24gdGltZW91dCIpOworICAgICAgICAgIHJldHVybiBDVVJMRV9PUEVSQVRJT05fVElNRURPVVQ7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIC8qIHNvY2tldCBpcyByZWFkYWJsZSBvciB3cml0YWJsZSAqLworICAgIH0KKworICAgIC8qIFJ1biB0cmFuc2FjdGlvbiwgYW5kIHJldHVybiB0byB0aGUgY2FsbGVyIGlmIGl0IGZhaWxlZCBvciBpZgorICAgICAqIHRoaXMgY29ubmVjdGlvbiBpcyBwYXJ0IG9mIGEgbXVsdGkgaGFuZGxlIGFuZCB0aGlzIGxvb3Agd291bGQKKyAgICAgKiBleGVjdXRlIGFnYWluLiBUaGlzIHBlcm1pdHMgdGhlIG93bmVyIG9mIGEgbXVsdGkgaGFuZGxlIHRvCisgICAgICogYWJvcnQgYSBjb25uZWN0aW9uIGF0dGVtcHQgYmVmb3JlIHN0ZXAyIGhhcyBjb21wbGV0ZWQgd2hpbGUKKyAgICAgKiBlbnN1cmluZyB0aGF0IGEgY2xpZW50IHVzaW5nIHNlbGVjdCgpIG9yIGVwb2xsKCkgd2lsbCBhbHdheXMKKyAgICAgKiBoYXZlIGEgdmFsaWQgZmRzZXQgdG8gd2FpdCBvbi4KKyAgICAgKi8KKyAgICByZXRjb2RlID0gbWJlZF9jb25uZWN0X3N0ZXAyKGNvbm4sIHNvY2tpbmRleCk7CisgICAgaWYocmV0Y29kZSB8fCAobm9uYmxvY2tpbmcgJiYKKyAgICAgICAgICAgICAgICAgICAoc3NsX2Nvbm5lY3RfMiA9PSBjb25uc3NsLT5jb25uZWN0aW5nX3N0YXRlIHx8CisgICAgICAgICAgICAgICAgICAgIHNzbF9jb25uZWN0XzJfcmVhZGluZyA9PSBjb25uc3NsLT5jb25uZWN0aW5nX3N0YXRlIHx8CisgICAgICAgICAgICAgICAgICAgIHNzbF9jb25uZWN0XzJfd3JpdGluZyA9PSBjb25uc3NsLT5jb25uZWN0aW5nX3N0YXRlKSkpCisgICAgICByZXR1cm4gcmV0Y29kZTsKKworICB9IC8qIHJlcGVhdCBzdGVwMiB1bnRpbCBhbGwgdHJhbnNhY3Rpb25zIGFyZSBkb25lLiAqLworCisgIGlmKHNzbF9jb25uZWN0XzM9PWNvbm5zc2wtPmNvbm5lY3Rpbmdfc3RhdGUpIHsKKyAgICByZXRjb2RlID0gbWJlZF9jb25uZWN0X3N0ZXAzKGNvbm4sIHNvY2tpbmRleCk7CisgICAgaWYocmV0Y29kZSkKKyAgICAgIHJldHVybiByZXRjb2RlOworICB9CisKKyAgaWYoc3NsX2Nvbm5lY3RfZG9uZT09Y29ubnNzbC0+Y29ubmVjdGluZ19zdGF0ZSkgeworICAgIGNvbm5zc2wtPnN0YXRlID0gc3NsX2Nvbm5lY3Rpb25fY29tcGxldGU7CisgICAgY29ubi0+cmVjdltzb2NraW5kZXhdID0gbWJlZF9yZWN2OworICAgIGNvbm4tPnNlbmRbc29ja2luZGV4XSA9IG1iZWRfc2VuZDsKKyAgICAqZG9uZSA9IFRSVUU7CisgIH0KKyAgZWxzZQorICAgICpkb25lID0gRkFMU0U7CisKKyAgLyogUmVzZXQgb3VyIGNvbm5lY3Qgc3RhdGUgbWFjaGluZSAqLworICBjb25uc3NsLT5jb25uZWN0aW5nX3N0YXRlID0gc3NsX2Nvbm5lY3RfMTsKKworICByZXR1cm4gQ1VSTEVfT0s7Cit9CisKK0NVUkxjb2RlCitDdXJsX21iZWR0bHNfY29ubmVjdF9ub25ibG9ja2luZyhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc29ja2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCAqZG9uZSkKK3sKKyAgcmV0dXJuIG1iZWRfY29ubmVjdF9jb21tb24oY29ubiwgc29ja2luZGV4LCBUUlVFLCBkb25lKTsKK30KKworCitDVVJMY29kZQorQ3VybF9tYmVkdGxzX2Nvbm5lY3Qoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAorICAgICAgICAgICAgICAgICAgICAgaW50IHNvY2tpbmRleCkKK3sKKyAgQ1VSTGNvZGUgcmV0Y29kZTsKKyAgYm9vbCBkb25lID0gRkFMU0U7CisKKyAgcmV0Y29kZSA9IG1iZWRfY29ubmVjdF9jb21tb24oY29ubiwgc29ja2luZGV4LCBGQUxTRSwgJmRvbmUpOworICBpZihyZXRjb2RlKQorICAgIHJldHVybiByZXRjb2RlOworCisgIERFQlVHQVNTRVJUKGRvbmUpOworCisgIHJldHVybiBDVVJMRV9PSzsKK30KKworLyoKKyAqIHJldHVybiAwIGVycm9yIGluaXRpYWxpemluZyBTU0wKKyAqIHJldHVybiAxIFNTTCBpbml0aWFsaXplZCBzdWNjZXNzZnVsbHkKKyAqLworaW50IEN1cmxfbWJlZHRsc19pbml0KHZvaWQpCit7CisgIHJldHVybiBDdXJsX3BvbGFyc3NsdGhyZWFkbG9ja190aHJlYWRfc2V0dXAoKTsKK30KKwordm9pZCBDdXJsX21iZWR0bHNfY2xlYW51cCh2b2lkKQoreworICAodm9pZClDdXJsX3BvbGFyc3NsdGhyZWFkbG9ja190aHJlYWRfY2xlYW51cCgpOworfQorCitpbnQgQ3VybF9tYmVkdGxzX2RhdGFfcGVuZGluZyhjb25zdCBzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGludCBzb2NraW5kZXgpCit7CisgIG1iZWR0bHNfc3NsX2NvbnRleHQgKnNzbCA9CisgICAgKG1iZWR0bHNfc3NsX2NvbnRleHQgKikmY29ubi0+c3NsW3NvY2tpbmRleF0uc3NsOworICByZXR1cm4gc3NsLT5pbl9tc2dsZW4gIT0gMDsKK30KKworI2VuZGlmIC8qIFVTRV9NQkVEVExTICovCmRpZmYgLS1naXQgYS9saWIvdnRscy9tYmVkdGxzLmggYi9saWIvdnRscy9tYmVkdGxzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTExN2ZmZgotLS0gL2Rldi9udWxsCisrKyBiL2xpYi92dGxzL21iZWR0bHMuaApAQCAtMCwwICsxLDgwIEBACisjaWZuZGVmIEhFQURFUl9DVVJMX01CRURUTFNfSAorI2RlZmluZSBIRUFERVJfQ1VSTF9NQkVEVExTX0gKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKyAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorICoKKyAqIENvcHlyaWdodCAoQykgMjAxMiAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIEhvaS1IbyBDaGFuLCA8aG9paG8uY2hhbkBnbWFpbC5jb20+CisgKgorICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKyAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICoKKyAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyNpbmNsdWRlICJjdXJsX3NldHVwLmgiCisKKyNpZmRlZiBVU0VfTUJFRFRMUworCisjaW5jbHVkZSA8bWJlZHRscy9zaGEyNTYuaD4KKworLyogQ2FsbGVkIG9uIGZpcnN0IHVzZSBtYmVkVExTLCBzZXR1cCB0aHJlYWRpbmcgaWYgc3VwcG9ydGVkICovCitpbnQgIEN1cmxfbWJlZHRsc19pbml0KHZvaWQpOwordm9pZCBDdXJsX21iZWR0bHNfY2xlYW51cCh2b2lkKTsKK2ludCBDdXJsX21iZWR0bHNfZGF0YV9wZW5kaW5nKGNvbnN0IHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgaW50IHNvY2tpbmRleCk7CisKK0NVUkxjb2RlIEN1cmxfbWJlZHRsc19jb25uZWN0KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgaW50IHNvY2tpbmRleCk7CisKK0NVUkxjb2RlIEN1cmxfbWJlZHRsc19jb25uZWN0X25vbmJsb2NraW5nKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc29ja2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgKmRvbmUpOworCisvKiB0ZWxsIG1iZWRUTFMgdG8gY2xvc2UgZG93biBhbGwgb3BlbiBpbmZvcm1hdGlvbiByZWdhcmRpbmcgY29ubmVjdGlvbnMgKGFuZAorICAgdGh1cyBzZXNzaW9uIElEIGNhY2hpbmcgZXRjKSAqLwordm9pZCBDdXJsX21iZWR0bHNfY2xvc2VfYWxsKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhKTsKKworIC8qIGNsb3NlIGEgU1NMIGNvbm5lY3Rpb24gKi8KK3ZvaWQgQ3VybF9tYmVkdGxzX2Nsb3NlKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgaW50IHNvY2tpbmRleCk7CisKK3ZvaWQgQ3VybF9tYmVkdGxzX3Nlc3Npb25fZnJlZSh2b2lkICpwdHIpOworc2l6ZV90IEN1cmxfbWJlZHRsc192ZXJzaW9uKGNoYXIgKmJ1ZmZlciwgc2l6ZV90IHNpemUpOworaW50IEN1cmxfbWJlZHRsc19zaHV0ZG93bihzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGludCBzb2NraW5kZXgpOworCisvKiB0aGlzIGJhY2tlbmRzIHN1cHBvcnRzIENVUkxPUFRfUElOTkVEUFVCTElDS0VZICovCisjZGVmaW5lIGhhdmVfY3VybHNzbF9waW5uZWRwdWJrZXkgMQorCisvKiBBUEkgc2V0dXAgZm9yIG1iZWRUTFMgKi8KKyNkZWZpbmUgY3VybHNzbF9pbml0KCkgQ3VybF9tYmVkdGxzX2luaXQoKQorI2RlZmluZSBjdXJsc3NsX2NsZWFudXAoKSBDdXJsX21iZWR0bHNfY2xlYW51cCgpCisjZGVmaW5lIGN1cmxzc2xfY29ubmVjdCBDdXJsX21iZWR0bHNfY29ubmVjdAorI2RlZmluZSBjdXJsc3NsX2Nvbm5lY3Rfbm9uYmxvY2tpbmcgQ3VybF9tYmVkdGxzX2Nvbm5lY3Rfbm9uYmxvY2tpbmcKKyNkZWZpbmUgY3VybHNzbF9zZXNzaW9uX2ZyZWUoeCkgIEN1cmxfbWJlZHRsc19zZXNzaW9uX2ZyZWUoeCkKKyNkZWZpbmUgY3VybHNzbF9jbG9zZV9hbGwgQ3VybF9tYmVkdGxzX2Nsb3NlX2FsbAorI2RlZmluZSBjdXJsc3NsX2Nsb3NlIEN1cmxfbWJlZHRsc19jbG9zZQorI2RlZmluZSBjdXJsc3NsX3NodXRkb3duKHgseSkgMAorI2RlZmluZSBjdXJsc3NsX3NldF9lbmdpbmUoeCx5KSAoeD14LCB5PXksIENVUkxFX05PVF9CVUlMVF9JTikKKyNkZWZpbmUgY3VybHNzbF9zZXRfZW5naW5lX2RlZmF1bHQoeCkgKHg9eCwgQ1VSTEVfTk9UX0JVSUxUX0lOKQorI2RlZmluZSBjdXJsc3NsX2VuZ2luZXNfbGlzdCh4KSAoeD14LCAoc3RydWN0IGN1cmxfc2xpc3QgKilOVUxMKQorI2RlZmluZSBjdXJsc3NsX3ZlcnNpb24gQ3VybF9tYmVkdGxzX3ZlcnNpb24KKyNkZWZpbmUgY3VybHNzbF9jaGVja19jeG4oeCkgKHg9eCwgLTEpCisjZGVmaW5lIGN1cmxzc2xfZGF0YV9wZW5kaW5nKHgseSkgQ3VybF9tYmVkdGxzX2RhdGFfcGVuZGluZyh4LCB5KQorI2RlZmluZSBDVVJMX1NTTF9CQUNLRU5EIENVUkxTU0xCQUNLRU5EX01CRURUTFMKKyNkZWZpbmUgY3VybHNzbF9zaGEyNTZzdW0oYSxiLGMsZCkgbWJlZHRsc19zaGEyNTYoYSxiLGMsMCkKKworLyogVGhpcyBtaWdodCBjYXVzZSBsaWJjdXJsIHRvIHVzZSBhIHdlZWtlciByYW5kb20hCisgICBUT0RPOiBpbXBsZW1lbnQgcHJvcGVyIHVzZSBvZiBQb2xhcnNzbCdzIENUUi1EUkJHIG9yIEhNQUMtRFJCRyBhbmQgdXNlIHRoYXQKKyovCisjZGVmaW5lIGN1cmxzc2xfcmFuZG9tKHgseSx6KSAoeD14LCB5PXksIHo9eiwgQ1VSTEVfTk9UX0JVSUxUX0lOKQorCisjZW5kaWYgLyogVVNFX01CRURUTFMgKi8KKyNlbmRpZiAvKiBIRUFERVJfQ1VSTF9NQkVEVExTX0ggKi8KZGlmZiAtLWdpdCBhL2xpYi92dGxzL25zcy5jIGIvbGliL3Z0bHMvbnNzLmMKaW5kZXggNTQzNGNlMy4uMDJjODcyNyAxMDA2NDQKLS0tIGEvbGliL3Z0bHMvbnNzLmMKKysrIGIvbGliL3Z0bHMvbnNzLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yMTEsMTYgKzIxMSwyMiBAQAogICBQUkJvb2wgZm91bmQ7CiAgIGNoYXIgKmNpcGhlcjsKIAorICAvKiB1c2UgYWNjZXNzb3JzIHRvIGF2b2lkIGR5bmFtaWMgbGlua2luZyBpc3N1ZXMgYWZ0ZXIgYW4gdXBkYXRlIG9mIE5TUyAqLworICBjb25zdCBQUlVpbnQxNiBudW1faW1wbGVtZW50ZWRfY2lwaGVycyA9IFNTTF9HZXROdW1JbXBsZW1lbnRlZENpcGhlcnMoKTsKKyAgY29uc3QgUFJVaW50MTYgKmltcGxlbWVudGVkX2NpcGhlcnMgPSBTU0xfR2V0SW1wbGVtZW50ZWRDaXBoZXJzKCk7CisgIGlmKCFpbXBsZW1lbnRlZF9jaXBoZXJzKQorICAgIHJldHVybiBTRUNGYWlsdXJlOworCiAgIC8qIEZpcnN0IGRpc2FibGUgYWxsIGNpcGhlcnMuIFRoaXMgdXNlcyBhIGRpZmZlcmVudCBtYXggdmFsdWUgaW4gY2FzZQogICAgKiBOU1MgYWRkcyBtb3JlIGNpcGhlcnMgbGF0ZXIgd2UgZG9uJ3Qgd2FudCB0aGVtIGF2YWlsYWJsZSBieQogICAgKiBhY2NpZGVudAogICAgKi8KLSAgZm9yKGk9MDsgaTxTU0xfTnVtSW1wbGVtZW50ZWRDaXBoZXJzOyBpKyspIHsKLSAgICBTU0xfQ2lwaGVyUHJlZlNldChtb2RlbCwgU1NMX0ltcGxlbWVudGVkQ2lwaGVyc1tpXSwgUFJfRkFMU0UpOworICBmb3IoaSA9IDA7IGkgPCBudW1faW1wbGVtZW50ZWRfY2lwaGVyczsgaSsrKSB7CisgICAgU1NMX0NpcGhlclByZWZTZXQobW9kZWwsIGltcGxlbWVudGVkX2NpcGhlcnNbaV0sIFBSX0ZBTFNFKTsKICAgfQogCiAgIC8qIFNldCBldmVyeSBlbnRyeSBpbiBvdXIgbGlzdCB0byBmYWxzZSAqLwotICBmb3IoaT0wOyBpPE5VTV9PRl9DSVBIRVJTOyBpKyspIHsKKyAgZm9yKGkgPSAwOyBpIDwgTlVNX09GX0NJUEhFUlM7IGkrKykgewogICAgIGNpcGhlcl9zdGF0ZVtpXSA9IFBSX0ZBTFNFOwogICB9CiAKQEAgLTI2OSwyMSArMjc1LDIxIEBACiB9CiAKIC8qCi0gKiBHZXQgdGhlIG51bWJlciBvZiBjaXBoZXJzIHRoYXQgYXJlIGVuYWJsZWQuIFdlIHVzZSB0aGlzIHRvIGRldGVybWluZQorICogUmV0dXJuIHRydWUgaWYgYXQgbGVhc3Qgb25lIGNpcGhlci1zdWl0ZSBpcyBlbmFibGVkLiBVc2VkIHRvIGRldGVybWluZQogICogaWYgd2UgbmVlZCB0byBjYWxsIE5TU19TZXREb21lc3RpY1BvbGljeSgpIHRvIGVuYWJsZSB0aGUgZGVmYXVsdCBjaXBoZXJzLgogICovCi1zdGF0aWMgaW50IG51bV9lbmFibGVkX2NpcGhlcnModm9pZCkKK3N0YXRpYyBib29sIGFueV9jaXBoZXJfZW5hYmxlZCh2b2lkKQogewotICBQUkludDMyIHBvbGljeSA9IDA7Ci0gIGludCBjb3VudCA9IDA7CiAgIHVuc2lnbmVkIGludCBpOwogCiAgIGZvcihpPTA7IGk8TlVNX09GX0NJUEhFUlM7IGkrKykgeworICAgIFBSSW50MzIgcG9saWN5ID0gMDsKICAgICBTU0xfQ2lwaGVyUG9saWN5R2V0KGNpcGhlcmxpc3RbaV0ubnVtLCAmcG9saWN5KTsKICAgICBpZihwb2xpY3kpCi0gICAgICBjb3VudCsrOworICAgICAgcmV0dXJuIFRSVUU7CiAgIH0KLSAgcmV0dXJuIGNvdW50OworCisgIHJldHVybiBGQUxTRTsKIH0KIAogLyoKQEAgLTMyMiw4ICszMjgsOCBAQAogICAgIC8qIG5vIHN1Y2ggZmlsZSBleGlzdHMsIHVzZSB0aGUgc3RyaW5nIGFzIG5pY2tuYW1lICovCiAgICAgcmV0dXJuIHN0cmR1cChzdHIpOwogCi0gIC8qIHNlYXJjaCB0aGUgbGFzdCBzbGFzaDsgd2UgcmVxdWlyZSBhdCBsZWFzdCBvbmUgc2xhc2ggaW4gYSBmaWxlIG5hbWUgKi8KLSAgbiA9IHN0cnJjaHIoc3RyLCAnLycpOworICAvKiBzZWFyY2ggdGhlIGZpcnN0IHNsYXNoOyB3ZSByZXF1aXJlIGF0IGxlYXN0IG9uZSBzbGFzaCBpbiBhIGZpbGUgbmFtZSAqLworICBuID0gc3RyY2hyKHN0ciwgJy8nKTsKICAgaWYoIW4pIHsKICAgICBpbmZvZihkYXRhLCAid2FybmluZzogY2VydGlmaWNhdGUgZmlsZSBuYW1lIFwiJXNcIiBoYW5kbGVkIGFzIG5pY2tuYW1lOyAiCiAgICAgICAgICAgInBsZWFzZSB1c2UgXCIuLyVzXCIgdG8gZm9yY2UgZmlsZSBuYW1lXG4iLCBzdHIsIHN0cik7CkBAIC02OTAsNyArNjk2LDcgQEAKICAgdW5zaWduZWQgaW50IGJ1ZmxlbjsKICAgU1NMTmV4dFByb3RvU3RhdGUgc3RhdGU7CiAKLSAgaWYoIWNvbm4tPmRhdGEtPnNldC5zc2xfZW5hYmxlX25wbiAmJiAhY29ubi0+ZGF0YS0+c2V0LnNzbF9lbmFibGVfYWxwbikgeworICBpZighY29ubi0+Yml0cy50bHNfZW5hYmxlX25wbiAmJiAhY29ubi0+Yml0cy50bHNfZW5hYmxlX2FscG4pIHsKICAgICByZXR1cm47CiAgIH0KIApAQCAtNzE0LDcgKzcyMCw3IEBACiAjaWZkZWYgVVNFX05HSFRUUDIKICAgICBpZihidWZsZW4gPT0gTkdIVFRQMl9QUk9UT19WRVJTSU9OX0lEX0xFTiAmJgogICAgICAgICFtZW1jbXAoTkdIVFRQMl9QUk9UT19WRVJTSU9OX0lELCBidWYsIE5HSFRUUDJfUFJPVE9fVkVSU0lPTl9JRF9MRU4pKSB7Ci0gICAgICBjb25uLT5uZWducG4gPSBDVVJMX0hUVFBfVkVSU0lPTl8yXzA7CisgICAgICBjb25uLT5uZWducG4gPSBDVVJMX0hUVFBfVkVSU0lPTl8yOwogICAgIH0KICAgICBlbHNlCiAjZW5kaWYKQEAgLTkyMiwxMiArOTI4LDYgQEAKICAgU0VDU3RhdHVzIHJlcz1TRUNTdWNjZXNzOwogICB2b2lkICpwcm90b193aW4gPSBOVUxMOwogCi0gIC8qCi0gICAgUFJBcmVuYVBvb2wgICAqdG1wQXJlbmEgPSBOVUxMOwotICAgIENFUlRBdXRoS2V5SUQgKmF1dGhvcml0eUtleUlEID0gTlVMTDsKLSAgICBTRUNJVEVNICAgICAgICpjYW5hbWUgPSBOVUxMOwotICAqLwotCiAgIGNlcnQgPSBTU0xfUGVlckNlcnRpZmljYXRlKHNvY2spOwogICBjZXJ0X2lzc3VlciA9IENFUlRfRmluZENlcnRJc3N1ZXIoY2VydCwgUFJfTm93KCksIGNlcnRVc2FnZU9iamVjdFNpZ25lcik7CiAKQEAgLTk2Nyw4ICs5NjcsNyBAQAogICAgICAgU0VDSXRlbSAqY2VydF9kZXIgPSBQSzExX0RFUkVuY29kZVB1YmxpY0tleShwdWJrZXkpOwogICAgICAgaWYoY2VydF9kZXIpIHsKICAgICAgICAgLyogY29tcGFyZSB0aGUgcHVibGljIGtleSB3aXRoIHRoZSBwaW5uZWQgcHVibGljIGtleSAqLwotICAgICAgICByZXN1bHQgPSBDdXJsX3Bpbl9wZWVyX3B1YmtleShwaW5uZWRwdWJrZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfZGVyLT5kYXRhLAorICAgICAgICByZXN1bHQgPSBDdXJsX3Bpbl9wZWVyX3B1YmtleShkYXRhLCBwaW5uZWRwdWJrZXksIGNlcnRfZGVyLT5kYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X2Rlci0+bGVuKTsKICAgICAgICAgU0VDSVRFTV9GcmVlSXRlbShjZXJ0X2RlciwgUFJfVFJVRSk7CiAgICAgICB9CkBAIC0xMjIzLDcgKzEyMjIsNyBAQAogICBpZihyZXN1bHQpCiAgICAgcmV0dXJuIHJlc3VsdDsKIAotICBpZihudW1fZW5hYmxlZF9jaXBoZXJzKCkgPT0gMCkKKyAgaWYoIWFueV9jaXBoZXJfZW5hYmxlZCgpKQogICAgIE5TU19TZXREb21lc3RpY1BvbGljeSgpOwogCiAgIGluaXRpYWxpemVkID0gMTsKQEAgLTE3NDUsMTQgKzE3NDQsMTQgQEAKICNlbmRpZgogCiAjaWZkZWYgU1NMX0VOQUJMRV9OUE4KLSAgaWYoU1NMX09wdGlvblNldChjb25uc3NsLT5oYW5kbGUsIFNTTF9FTkFCTEVfTlBOLCBkYXRhLT5zZXQuc3NsX2VuYWJsZV9ucG4KLSAgICAgICAgPyBQUl9UUlVFIDogUFJfRkFMU0UpICE9IFNFQ1N1Y2Nlc3MpCisgIGlmKFNTTF9PcHRpb25TZXQoY29ubnNzbC0+aGFuZGxlLCBTU0xfRU5BQkxFX05QTiwgY29ubi0+Yml0cy50bHNfZW5hYmxlX25wbgorICAgICAgICAgICAgICAgICAgID8gUFJfVFJVRSA6IFBSX0ZBTFNFKSAhPSBTRUNTdWNjZXNzKQogICAgIGdvdG8gZXJyb3I7CiAjZW5kaWYKIAogI2lmZGVmIFNTTF9FTkFCTEVfQUxQTgotICBpZihTU0xfT3B0aW9uU2V0KGNvbm5zc2wtPmhhbmRsZSwgU1NMX0VOQUJMRV9BTFBOLCBkYXRhLT5zZXQuc3NsX2VuYWJsZV9hbHBuCi0gICAgICAgID8gUFJfVFJVRSA6IFBSX0ZBTFNFKSAhPSBTRUNTdWNjZXNzKQorICBpZihTU0xfT3B0aW9uU2V0KGNvbm5zc2wtPmhhbmRsZSwgU1NMX0VOQUJMRV9BTFBOLCBjb25uLT5iaXRzLnRsc19lbmFibGVfYWxwbgorICAgICAgICAgICAgICAgICAgID8gUFJfVFJVRSA6IFBSX0ZBTFNFKSAhPSBTRUNTdWNjZXNzKQogICAgIGdvdG8gZXJyb3I7CiAjZW5kaWYKIApAQCAtMTc2OSwxMiArMTc2OCwxMiBAQAogI2VuZGlmCiAKICNpZiBkZWZpbmVkKFNTTF9FTkFCTEVfTlBOKSB8fCBkZWZpbmVkKFNTTF9FTkFCTEVfQUxQTikKLSAgaWYoZGF0YS0+c2V0LnNzbF9lbmFibGVfbnBuIHx8IGRhdGEtPnNldC5zc2xfZW5hYmxlX2FscG4pIHsKKyAgaWYoY29ubi0+Yml0cy50bHNfZW5hYmxlX25wbiB8fCBjb25uLT5iaXRzLnRsc19lbmFibGVfYWxwbikgewogICAgIGludCBjdXIgPSAwOwogICAgIHVuc2lnbmVkIGNoYXIgcHJvdG9jb2xzWzEyOF07CiAKICNpZmRlZiBVU0VfTkdIVFRQMgotICAgIGlmKGRhdGEtPnNldC5odHRwdmVyc2lvbiA9PSBDVVJMX0hUVFBfVkVSU0lPTl8yXzApIHsKKyAgICBpZihkYXRhLT5zZXQuaHR0cHZlcnNpb24gPj0gQ1VSTF9IVFRQX1ZFUlNJT05fMikgewogICAgICAgcHJvdG9jb2xzW2N1cisrXSA9IE5HSFRUUDJfUFJPVE9fVkVSU0lPTl9JRF9MRU47CiAgICAgICBtZW1jcHkoJnByb3RvY29sc1tjdXJdLCBOR0hUVFAyX1BST1RPX1ZFUlNJT05fSUQsCiAgICAgICAgICAgTkdIVFRQMl9QUk9UT19WRVJTSU9OX0lEX0xFTik7CkBAIC0xNzkyLDkgKzE3OTEsMTcgQEAKIAogCiAgIC8qIEZvcmNlIGhhbmRzaGFrZSBvbiBuZXh0IEkvTyAqLwotICBTU0xfUmVzZXRIYW5kc2hha2UoY29ubnNzbC0+aGFuZGxlLCAvKiBhc1NlcnZlciAqLyBQUl9GQUxTRSk7CisgIGlmKFNTTF9SZXNldEhhbmRzaGFrZShjb25uc3NsLT5oYW5kbGUsIC8qIGFzU2VydmVyICovIFBSX0ZBTFNFKQorICAgICAgIT0gU0VDU3VjY2VzcykKKyAgICBnb3RvIGVycm9yOwogCi0gIFNTTF9TZXRVUkwoY29ubnNzbC0+aGFuZGxlLCBjb25uLT5ob3N0Lm5hbWUpOworICAvKiBwcm9wYWdhdGUgaG9zdG5hbWUgdG8gdGhlIFRMUyBsYXllciAqLworICBpZihTU0xfU2V0VVJMKGNvbm5zc2wtPmhhbmRsZSwgY29ubi0+aG9zdC5uYW1lKSAhPSBTRUNTdWNjZXNzKQorICAgIGdvdG8gZXJyb3I7CisKKyAgLyogcHJldmVudCBOU1MgZnJvbSByZS11c2luZyB0aGUgc2Vzc2lvbiBmb3IgYSBkaWZmZXJlbnQgaG9zdG5hbWUgKi8KKyAgaWYoU1NMX1NldFNvY2tQZWVySUQoY29ubnNzbC0+aGFuZGxlLCBjb25uLT5ob3N0Lm5hbWUpICE9IFNFQ1N1Y2Nlc3MpCisgICAgZ290byBlcnJvcjsKIAogICByZXR1cm4gQ1VSTEVfT0s7CiAKQEAgLTIwNDEsNiArMjA0OCwxOSBAQAogICBQSzExX0Rlc3Ryb3lDb250ZXh0KE1ENXB3LCBQUl9UUlVFKTsKIH0KIAordm9pZCBDdXJsX25zc19zaGEyNTZzdW0oY29uc3QgdW5zaWduZWQgY2hhciAqdG1wLCAvKiBpbnB1dCAqLworICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHRtcGxlbiwKKyAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKnNoYTI1NnN1bSwgLyogb3V0cHV0ICovCisgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2hhMjU2bGVuKQoreworICBQSzExQ29udGV4dCAqU0hBMjU2cHcgPSBQSzExX0NyZWF0ZURpZ2VzdENvbnRleHQoU0VDX09JRF9TSEEyNTYpOworICB1bnNpZ25lZCBpbnQgU0hBMjU2b3V0OworCisgIFBLMTFfRGlnZXN0T3AoU0hBMjU2cHcsIHRtcCwgY3VybHhfdXp0b3VpKHRtcGxlbikpOworICBQSzExX0RpZ2VzdEZpbmFsKFNIQTI1NnB3LCBzaGEyNTZzdW0sICZTSEEyNTZvdXQsIGN1cmx4X3V6dG91aShzaGEyNTZsZW4pKTsKKyAgUEsxMV9EZXN0cm95Q29udGV4dChTSEEyNTZwdywgUFJfVFJVRSk7Cit9CisKIGJvb2wgQ3VybF9uc3NfY2VydF9zdGF0dXNfcmVxdWVzdCh2b2lkKQogewogI2lmZGVmIFNTTF9FTkFCTEVfT0NTUF9TVEFQTElORwpkaWZmIC0tZ2l0IGEvbGliL3Z0bHMvbnNzZy5oIGIvbGliL3Z0bHMvbnNzZy5oCmluZGV4IGQwZTc0MTIuLmUzODhlYzAgMTAwNjQ0Ci0tLSBhL2xpYi92dGxzL25zc2cuaAorKysgYi9saWIvdnRscy9uc3NnLmgKQEAgLTcsMTEgKzcsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC01Niw2ICs1NiwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqbWQ1c3VtLCAvKiBvdXRwdXQgKi8KICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBtZDVsZW4pOwogCit2b2lkIEN1cmxfbnNzX3NoYTI1NnN1bShjb25zdCB1bnNpZ25lZCBjaGFyICp0bXAsIC8qIGlucHV0ICovCisgICAgICAgICAgICAgICAgICAgICBzaXplX3QgdG1wbGVuLAorICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqc2hhMjU2c3VtLCAvKiBvdXRwdXQgKi8KKyAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaGEyNTZsZW4pOworCiBib29sIEN1cmxfbnNzX2NlcnRfc3RhdHVzX3JlcXVlc3Qodm9pZCk7CiAKIGJvb2wgQ3VybF9uc3NfZmFsc2Vfc3RhcnQodm9pZCk7CkBAIC02OSw2ICs3NCw5IEBACiAvKiB0aGlzIGJhY2tlbmQgc3VwcG9ydHMgQ1VSTE9QVF9DRVJUSU5GTyAqLwogI2RlZmluZSBoYXZlX2N1cmxzc2xfY2VydGluZm8gMQogCisvKiB0aGlzIGJhY2tlbmRzIHN1cHBvcnRzIENVUkxPUFRfUElOTkVEUFVCTElDS0VZICovCisjZGVmaW5lIGhhdmVfY3VybHNzbF9waW5uZWRwdWJrZXkgMQorCiAvKiBBUEkgc2V0dXAgZm9yIE5TUyAqLwogI2RlZmluZSBjdXJsc3NsX2luaXQgQ3VybF9uc3NfaW5pdAogI2RlZmluZSBjdXJsc3NsX2NsZWFudXAgQ3VybF9uc3NfY2xlYW51cApAQCAtODksNiArOTcsNyBAQAogI2RlZmluZSBjdXJsc3NsX2RhdGFfcGVuZGluZyh4LHkpICgodm9pZCl4LCAodm9pZCl5LCAwKQogI2RlZmluZSBjdXJsc3NsX3JhbmRvbSh4LHkseikgQ3VybF9uc3NfcmFuZG9tKHgseSx6KQogI2RlZmluZSBjdXJsc3NsX21kNXN1bShhLGIsYyxkKSBDdXJsX25zc19tZDVzdW0oYSxiLGMsZCkKKyNkZWZpbmUgY3VybHNzbF9zaGEyNTZzdW0oYSxiLGMsZCkgQ3VybF9uc3Nfc2hhMjU2c3VtKGEsYixjLGQpCiAjZGVmaW5lIGN1cmxzc2xfY2VydF9zdGF0dXNfcmVxdWVzdCgpIEN1cmxfbnNzX2NlcnRfc3RhdHVzX3JlcXVlc3QoKQogI2RlZmluZSBjdXJsc3NsX2ZhbHNlX3N0YXJ0KCkgQ3VybF9uc3NfZmFsc2Vfc3RhcnQoKQogCmRpZmYgLS1naXQgYS9saWIvdnRscy9vcGVuc3NsLmMgYi9saWIvdnRscy9vcGVuc3NsLmMKaW5kZXggMDJkZTQ2Zi4uM2E0YmRlNSAxMDA2NDQKLS0tIGEvbGliL3Z0bHMvb3BlbnNzbC5jCisrKyBiL2xpYi92dGxzL29wZW5zc2wuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTY4LDcgKzY4LDcgQEAKICNpbmNsdWRlIDxvcGVuc3NsL3BrY3MxMi5oPgogI2VuZGlmCiAKLSNpZm5kZWYgSEFWRV9CT1JJTkdTU0wKKyNpZiAoT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA+PSAweDAwOTA4MDhmTCkgJiYgIWRlZmluZWQoT1BFTlNTTF9OT19PQ1NQKQogI2luY2x1ZGUgPG9wZW5zc2wvb2NzcC5oPgogI2VuZGlmCiAKQEAgLTgzLDIzICs4Myw4IEBACiAjZXJyb3IgIk9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgbm90IGRlZmluZWQiCiAjZW5kaWYKIAotI2lmIE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPj0gMHgwMDkwNzAwMUwgJiYgIWRlZmluZWQoT1BFTlNTTF9JU19CT1JJTkdTU0wpCi0vKiBFTkdJTkVfbG9hZF9wcml2YXRlX2tleSgpIHRha2VzIGZvdXIgYXJndW1lbnRzICovCi0jZGVmaW5lIEhBVkVfRU5HSU5FX0xPQURfRk9VUl9BUkdTCisjaWYgZGVmaW5lZChIQVZFX09QRU5TU0xfRU5HSU5FX0gpCiAjaW5jbHVkZSA8b3BlbnNzbC91aS5oPgotI2Vsc2UKLS8qIEVOR0lORV9sb2FkX3ByaXZhdGVfa2V5KCkgdGFrZXMgdGhyZWUgYXJndW1lbnRzICovCi0jdW5kZWYgSEFWRV9FTkdJTkVfTE9BRF9GT1VSX0FSR1MKLSNlbmRpZgotCi0jaWYgKE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPj0gMHgwMDkwMzAwMUwpICYmIFwKLSAgICBkZWZpbmVkKEhBVkVfT1BFTlNTTF9QS0NTMTJfSCkgJiYgXAotICAgICFkZWZpbmVkKE9QRU5TU0xfSVNfQk9SSU5HU1NMKQotLyogT3BlblNTTCBoYXMgUEtDUyAxMiBzdXBwb3J0LCBCb3JpbmdTU0wgZG9lcyBub3QgKi8KLSNkZWZpbmUgSEFWRV9QS0NTMTJfU1VQUE9SVAotI2Vsc2UKLS8qIE9wZW5TU0wgZG9lcyBub3QgaGF2ZSBQS0NTMTIgc3VwcG9ydCAqLwotI3VuZGVmIEhBVkVfUEtDUzEyX1NVUFBPUlQKICNlbmRpZgogCiAjaWYgT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA+PSAweDAwOTA5MDAwTApAQCAtMTA4LDE4ICs5MywxMyBAQAogI2RlZmluZSBTU0xfTUVUSE9EX1FVQUwKICNlbmRpZgogCi0jaWYgT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA+PSAweDAwOTA3MDAwTAotLyogMC45LjYgZGlkbid0IGhhdmUgWDUwOV9TVE9SRV9zZXRfZmxhZ3MoKSAqLwotI2RlZmluZSBIQVZFX1g1MDlfU1RPUkVfU0VUX0ZMQUdTIDEKLSNlbHNlCi0jZGVmaW5lIFg1MDlfU1RPUkVfc2V0X2ZsYWdzKHgseSkgQ3VybF9ub3Bfc3RtdAotI2VuZGlmCi0KLSNpZmRlZiBPUEVOU1NMX0lTX0JPUklOR1NTTAotLyogQm9yaW5nU1NMIGhhcyBubyBFUlJfcmVtb3ZlX3N0YXRlKCkgKi8KLSNkZWZpbmUgRVJSX3JlbW92ZV9zdGF0ZSh4KQotI2VsaWYgKE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPj0gMHgxMDAwMDAwMEwpCisjaWYgKE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPj0gMHgxMDAwMDAwMEwpCiAjZGVmaW5lIEhBVkVfRVJSX1JFTU9WRV9USFJFQURfU1RBVEUgMQorI2lmIChPUEVOU1NMX1ZFUlNJT05fTlVNQkVSID49IDB4MTAxMDAwMDRMKSAmJiBcCisgICFkZWZpbmVkKExJQlJFU1NMX1ZFUlNJT05fTlVNQkVSKQorLyogT3BlblNTTCAxLjEuMCBkZXByZWNhdGVzIHRoZSBmdW5jdGlvbiAqLworI2RlZmluZSBIQVZFX0VSUl9SRU1PVkVfVEhSRUFEX1NUQVRFX0RFUFJFQ0FURUQgMQorI2VuZGlmCiAjZW5kaWYKIAogI2lmICFkZWZpbmVkKEhBVkVfU1NMVjJfQ0xJRU5UX01FVEhPRCkgfHwgXApAQCAtMTI4LDE5ICsxMDgsMzMgQEAKICNkZWZpbmUgT1BFTlNTTF9OT19TU0wyCiAjZW5kaWYKIAotI2lmIGRlZmluZWQoT1BFTlNTTF9JU19CT1JJTkdTU0wpCi0jZGVmaW5lIE5PX1JBTkRfU0VFRCAxCi0vKiBJbiBCb3JpbmdTU0wgT3BlblNTTF9hZGRfYWxsX2FsZ29yaXRobXMgZG9lcyBub3RoaW5nICovCi0jZGVmaW5lIE9wZW5TU0xfYWRkX2FsbF9hbGdvcml0aG1zKCkKLS8qIEJvcmluZ1NTTCBkb2VzIG5vdCBoYXZlIENPTkZfbW9kdWxlc19sb2FkX2ZpbGUgKi8KLSNkZWZpbmUgQ09ORl9tb2R1bGVzX2xvYWRfZmlsZShhLGIsYykKKyNpZiAoT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA+PSAweDEwMTAwMDAwTCkgJiYgLyogT3BlblNTTCAxLjEuMCsgKi8gXAorICAhZGVmaW5lZChMSUJSRVNTTF9WRVJTSU9OX05VTUJFUikKKyNkZWZpbmUgU1NMZWF5X2FkZF9zc2xfYWxnb3JpdGhtcygpIFNTTF9saWJyYXJ5X2luaXQoKQorI2RlZmluZSBTU0xFQVlfVkVSU0lPTl9OVU1CRVIgT1BFTlNTTF9WRVJTSU9OX05VTUJFUgorI2RlZmluZSBIQVZFX1g1MDlfR0VUMF9FWFRFTlNJT05TIDEgLyogYWRkZWQgaW4gMS4xLjAgLXByZTEgKi8KKyNkZWZpbmUgSEFWRV9PUEFRVUVfRVZQX1BLRVkgMSAvKiBzaW5jZSAxLjEuMCAtcHJlMyAqLworI2RlZmluZSBIQVZFX09QQVFVRV9SU0FfRFNBX0RIIDEgLyogc2luY2UgMS4xLjAgLXByZTUgKi8KICNlbmRpZgogCi0jaWZkZWYgT1BFTlNTTF9JU19CT1JJTkdTU0wKLS8qIG5vdCBwcmVzZW50IGluIEJvcmluZ1NTTCAqLworI2lmIChPUEVOU1NMX1ZFUlNJT05fTlVNQkVSID49IDB4MTAwMDIwMGZMKSAmJiAvKiAxLjAuMiBvciBsYXRlciAqLyBcCisgICFkZWZpbmVkKExJQlJFU1NMX1ZFUlNJT05fTlVNQkVSKQorI2RlZmluZSBIQVZFX1g1MDlfR0VUMF9TSUdOQVRVUkUgMQorI2VuZGlmCisKKyNpZiAoT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA8IDB4MDA5MDgwOGZMKQorLyogbm90IHByZXNlbnQgaW4gb2xkZXIgT3BlblNTTCAqLwogI2RlZmluZSBPUEVOU1NMX2xvYWRfYnVpbHRpbl9tb2R1bGVzKHgpCiAjZW5kaWYKIAorI2lmIGRlZmluZWQoTElCUkVTU0xfVkVSU0lPTl9OVU1CRVIpCisjZGVmaW5lIE9TU0xfUEFDS0FHRSAiTGlicmVTU0wiCisjZWxpZiBkZWZpbmVkKE9QRU5TU0xfSVNfQk9SSU5HU1NMKQorI2RlZmluZSBPU1NMX1BBQ0tBR0UgIkJvcmluZ1NTTCIKKyNlbHNlCisjZGVmaW5lIE9TU0xfUEFDS0FHRSAiT3BlblNTTCIKKyNlbmRpZgorCiAvKgogICogTnVtYmVyIG9mIGJ5dGVzIHRvIHJlYWQgZnJvbSB0aGUgcmFuZG9tIG51bWJlciBzZWVkIGZpbGUuIFRoaXMgbXVzdCBiZQogICogYSBmaW5pdGUgdmFsdWUgKGJlY2F1c2Ugc29tZSBlbnRyb3B5ICJmaWxlcyIgbGlrZSAvZGV2L3VyYW5kb20gaGF2ZQpAQCAtMTcxLDcgKzE2NSw2IEBACiAgKiBwYXNzIGluIGFuIGFyZ3VtZW50IHRoYXQgaXMgbmV2ZXIgdXNlZC4KICAqLwogCi0jaWZuZGVmIE5PX1JBTkRfU0VFRAogI2lmZGVmIEhBVkVfUkFORF9TVEFUVVMKICNkZWZpbmUgc2VlZF9lbm91Z2goeCkgcmFuZF9lbm91Z2goKQogc3RhdGljIGJvb2wgcmFuZF9lbm91Z2godm9pZCkKQEAgLTI2OCwxMSArMjYxLDYgQEAKICAgICBzc2xfc2VlZGVkID0gVFJVRTsKICAgfQogfQotI2Vsc2UKLS8qIEJvcmluZ1NTTCBuZWVkcyBubyBzZWVkaW5nICovCi0jZGVmaW5lIEN1cmxfb3NzbF9zZWVkKHgpCi0jZW5kaWYKLQogCiAjaWZuZGVmIFNTTF9GSUxFVFlQRV9FTkdJTkUKICNkZWZpbmUgU1NMX0ZJTEVUWVBFX0VOR0lORSA0MgpAQCAtMjk1LDcgKzI4Myw3IEBACiAgIHJldHVybiAtMTsKIH0KIAotI2lmIGRlZmluZWQoSEFWRV9PUEVOU1NMX0VOR0lORV9IKSAmJiBkZWZpbmVkKEhBVkVfRU5HSU5FX0xPQURfRk9VUl9BUkdTKQorI2lmIGRlZmluZWQoSEFWRV9PUEVOU1NMX0VOR0lORV9IKQogLyoKICAqIFN1cHBseSBkZWZhdWx0IHBhc3N3b3JkIHRvIHRoZSBlbmdpbmUgdXNlciBpbnRlcmZhY2UgY29udmVyc2F0aW9uLgogICogVGhlIHBhc3N3b3JkIGlzIHBhc3NlZCBieSBPcGVuU1NMIGVuZ2luZSBmcm9tIEVOR0lORV9sb2FkX3ByaXZhdGVfa2V5KCkKQEAgLTM2OSw3ICszNTcsOCBAQAogICAgICAgaWYoU1NMX0NUWF91c2VfY2VydGlmaWNhdGVfY2hhaW5fZmlsZShjdHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfZmlsZSkgIT0gMSkgewogICAgICAgICBmYWlsZihkYXRhLAotICAgICAgICAgICAgICAiY291bGQgbm90IGxvYWQgUEVNIGNsaWVudCBjZXJ0aWZpY2F0ZSwgT3BlblNTTCBlcnJvciAlcywgIgorICAgICAgICAgICAgICAiY291bGQgbm90IGxvYWQgUEVNIGNsaWVudCBjZXJ0aWZpY2F0ZSwgIiBPU1NMX1BBQ0tBR0UKKyAgICAgICAgICAgICAgIiBlcnJvciAlcywgIgogICAgICAgICAgICAgICAiKG5vIGtleSBmb3VuZCwgd3JvbmcgcGFzcyBwaHJhc2UsIG9yIHdyb25nIGZpbGUgZm9ybWF0PykiLAogICAgICAgICAgICAgICBFUlJfZXJyb3Jfc3RyaW5nKEVSUl9nZXRfZXJyb3IoKSwgTlVMTCkgKTsKICAgICAgICAgcmV0dXJuIDA7CkBAIC0zODQsNyArMzczLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9maWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlX3R5cGUpICE9IDEpIHsKICAgICAgICAgZmFpbGYoZGF0YSwKLSAgICAgICAgICAgICAgImNvdWxkIG5vdCBsb2FkIEFTTjEgY2xpZW50IGNlcnRpZmljYXRlLCBPcGVuU1NMIGVycm9yICVzLCAiCisgICAgICAgICAgICAgICJjb3VsZCBub3QgbG9hZCBBU04xIGNsaWVudCBjZXJ0aWZpY2F0ZSwgIiBPU1NMX1BBQ0tBR0UKKyAgICAgICAgICAgICAgIiBlcnJvciAlcywgIgogICAgICAgICAgICAgICAiKG5vIGtleSBmb3VuZCwgd3JvbmcgcGFzcyBwaHJhc2UsIG9yIHdyb25nIGZpbGUgZm9ybWF0PykiLAogICAgICAgICAgICAgICBFUlJfZXJyb3Jfc3RyaW5nKEVSUl9nZXRfZXJyb3IoKSwgTlVMTCkgKTsKICAgICAgICAgcmV0dXJuIDA7CkBAIC00NDUsMTIgKzQzNSwxMSBAQAogCiAgICAgY2FzZSBTU0xfRklMRVRZUEVfUEtDUzEyOgogICAgIHsKLSNpZmRlZiBIQVZFX1BLQ1MxMl9TVVBQT1JUCisjaWZkZWYgSEFWRV9PUEVOU1NMX1BLQ1MxMl9ICiAgICAgICBGSUxFICpmOwogICAgICAgUEtDUzEyICpwMTI7CiAgICAgICBFVlBfUEtFWSAqcHJpOwogICAgICAgU1RBQ0tfT0YoWDUwOSkgKmNhID0gTlVMTDsKLSAgICAgIGludCBpOwogCiAgICAgICBmID0gZm9wZW4oY2VydF9maWxlLCAicmIiKTsKICAgICAgIGlmKCFmKSB7CkBAIC00NzAsNyArNDU5LDggQEAKICAgICAgIGlmKCFQS0NTMTJfcGFyc2UocDEyLCBkYXRhLT5zZXQuc3RyW1NUUklOR19LRVlfUEFTU1dEXSwgJnByaSwgJng1MDksCiAgICAgICAgICAgICAgICAgICAgICAgICZjYSkpIHsKICAgICAgICAgZmFpbGYoZGF0YSwKLSAgICAgICAgICAgICAgImNvdWxkIG5vdCBwYXJzZSBQS0NTMTIgZmlsZSwgY2hlY2sgcGFzc3dvcmQsIE9wZW5TU0wgZXJyb3IgJXMiLAorICAgICAgICAgICAgICAiY291bGQgbm90IHBhcnNlIFBLQ1MxMiBmaWxlLCBjaGVjayBwYXNzd29yZCwgIiBPU1NMX1BBQ0tBR0UKKyAgICAgICAgICAgICAgIiBlcnJvciAlcyIsCiAgICAgICAgICAgICAgIEVSUl9lcnJvcl9zdHJpbmcoRVJSX2dldF9lcnJvcigpLCBOVUxMKSApOwogICAgICAgICBQS0NTMTJfZnJlZShwMTIpOwogICAgICAgICByZXR1cm4gMDsKQEAgLTQ4MCw3ICs0NzAsOCBAQAogCiAgICAgICBpZihTU0xfQ1RYX3VzZV9jZXJ0aWZpY2F0ZShjdHgsIHg1MDkpICE9IDEpIHsKICAgICAgICAgZmFpbGYoZGF0YSwKLSAgICAgICAgICAgICAgImNvdWxkIG5vdCBsb2FkIFBLQ1MxMiBjbGllbnQgY2VydGlmaWNhdGUsIE9wZW5TU0wgZXJyb3IgJXMiLAorICAgICAgICAgICAgICAiY291bGQgbm90IGxvYWQgUEtDUzEyIGNsaWVudCBjZXJ0aWZpY2F0ZSwgIiBPU1NMX1BBQ0tBR0UKKyAgICAgICAgICAgICAgIiBlcnJvciAlcyIsCiAgICAgICAgICAgICAgIEVSUl9lcnJvcl9zdHJpbmcoRVJSX2dldF9lcnJvcigpLCBOVUxMKSApOwogICAgICAgICBnb3RvIGZhaWw7CiAgICAgICB9CkBAIC00OTcsOCArNDg4LDggQEAKICAgICAgICAgZ290byBmYWlsOwogICAgICAgfQogICAgICAgLyogU2V0IENlcnRpZmljYXRlIFZlcmlmaWNhdGlvbiBjaGFpbiAqLwotICAgICAgaWYoY2EgJiYgc2tfWDUwOV9udW0oY2EpKSB7Ci0gICAgICAgIGZvcihpID0gMDsgaSA8IHNrX1g1MDlfbnVtKGNhKTsgaSsrKSB7CisgICAgICBpZihjYSkgeworICAgICAgICB3aGlsZShza19YNTA5X251bShjYSkpIHsKICAgICAgICAgICAvKgogICAgICAgICAgICAqIE5vdGUgdGhhdCBza19YNTA5X3BvcCgpIGlzIHVzZWQgYmVsb3cgdG8gbWFrZSBzdXJlIHRoZSBjZXJ0IGlzCiAgICAgICAgICAgICogcmVtb3ZlZCBmcm9tIHRoZSBzdGFjayBwcm9wZXJseSBiZWZvcmUgZ2V0dGluZyBwYXNzZWQgdG8KQEAgLTUwOCw2ICs0OTksNyBAQAogICAgICAgICAgICAqLwogICAgICAgICAgIFg1MDkgKnggPSBza19YNTA5X3BvcChjYSk7CiAgICAgICAgICAgaWYoIVNTTF9DVFhfYWRkX2V4dHJhX2NoYWluX2NlcnQoY3R4LCB4KSkgeworICAgICAgICAgICAgWDUwOV9mcmVlKHgpOwogICAgICAgICAgICAgZmFpbGYoZGF0YSwgImNhbm5vdCBhZGQgY2VydGlmaWNhdGUgdG8gY2VydGlmaWNhdGUgY2hhaW4iKTsKICAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgICB9CkBAIC01NjEsMjggKzU1MywyMyBAQAogICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBYWFhYIHN0aWxsIG5lZWRzIHNvbWUgd29yayAqLwogICAgICAgICBFVlBfUEtFWSAqcHJpdl9rZXkgPSBOVUxMOwogICAgICAgICBpZihkYXRhLT5zdGF0ZS5lbmdpbmUpIHsKLSNpZmRlZiBIQVZFX0VOR0lORV9MT0FEX0ZPVVJfQVJHUwogICAgICAgICAgIFVJX01FVEhPRCAqdWlfbWV0aG9kID0KICAgICAgICAgICAgIFVJX2NyZWF0ZV9tZXRob2QoKGNoYXIgKikiY1VSTCB1c2VyIGludGVyZmFjZSIpOwogICAgICAgICAgIGlmKCF1aV9tZXRob2QpIHsKLSAgICAgICAgICAgIGZhaWxmKGRhdGEsICJ1bmFibGUgZG8gY3JlYXRlIE9wZW5TU0wgdXNlci1pbnRlcmZhY2UgbWV0aG9kIik7CisgICAgICAgICAgICBmYWlsZihkYXRhLCAidW5hYmxlIGRvIGNyZWF0ZSAiIE9TU0xfUEFDS0FHRQorICAgICAgICAgICAgICAgICAgIiB1c2VyLWludGVyZmFjZSBtZXRob2QiKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgIH0KICAgICAgICAgICBVSV9tZXRob2Rfc2V0X29wZW5lcih1aV9tZXRob2QsIFVJX21ldGhvZF9nZXRfb3BlbmVyKFVJX09wZW5TU0woKSkpOwogICAgICAgICAgIFVJX21ldGhvZF9zZXRfY2xvc2VyKHVpX21ldGhvZCwgVUlfbWV0aG9kX2dldF9jbG9zZXIoVUlfT3BlblNTTCgpKSk7CiAgICAgICAgICAgVUlfbWV0aG9kX3NldF9yZWFkZXIodWlfbWV0aG9kLCBzc2xfdWlfcmVhZGVyKTsKICAgICAgICAgICBVSV9tZXRob2Rfc2V0X3dyaXRlcih1aV9tZXRob2QsIHNzbF91aV93cml0ZXIpOwotI2VuZGlmCiAgICAgICAgICAgLyogdGhlIHR5cGVjYXN0IGJlbG93IHdhcyBhZGRlZCB0byBwbGVhc2UgbWluZ3czMiAqLwogICAgICAgICAgIHByaXZfa2V5ID0gKEVWUF9QS0VZICopCiAgICAgICAgICAgICBFTkdJTkVfbG9hZF9wcml2YXRlX2tleShkYXRhLT5zdGF0ZS5lbmdpbmUsIGtleV9maWxlLAotI2lmZGVmIEhBVkVfRU5HSU5FX0xPQURfRk9VUl9BUkdTCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aV9tZXRob2QsCi0jZW5kaWYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtPnNldC5zdHJbU1RSSU5HX0tFWV9QQVNTV0RdKTsKLSNpZmRlZiBIQVZFX0VOR0lORV9MT0FEX0ZPVVJfQVJHUwogICAgICAgICAgIFVJX2Rlc3Ryb3lfbWV0aG9kKHVpX21ldGhvZCk7Ci0jZW5kaWYKICAgICAgICAgICBpZighcHJpdl9rZXkpIHsKICAgICAgICAgICAgIGZhaWxmKGRhdGEsICJmYWlsZWQgdG8gbG9hZCBwcml2YXRlIGtleSBmcm9tIGNyeXB0byBlbmdpbmUiKTsKICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtNzAyLDE2ICs2ODksNiBAQAogICBFTkdJTkVfbG9hZF9idWlsdGluX2VuZ2luZXMoKTsKICNlbmRpZgogCi0gIC8qIExldHMgZ2V0IG5pY2UgZXJyb3IgbWVzc2FnZXMgKi8KLSAgU1NMX2xvYWRfZXJyb3Jfc3RyaW5ncygpOwotCi0gIC8qIEluaXQgdGhlIGdsb2JhbCBjaXBoZXJzIGFuZCBkaWdlc3RzICovCi0gIGlmKCFTU0xlYXlfYWRkX3NzbF9hbGdvcml0aG1zKCkpCi0gICAgcmV0dXJuIDA7Ci0KLSAgT3BlblNTTF9hZGRfYWxsX2FsZ29yaXRobXMoKTsKLQotCiAgIC8qIE9QRU5TU0xfY29uZmlnKE5VTEwpOyBpcyAic3Ryb25nbHkgcmVjb21tZW5kZWQiIHRvIHVzZSBidXQgdW5mb3J0dW5hdGVseQogICAgICB0aGF0IGZ1bmN0aW9uIG1ha2VzIGFuIGV4aXQoKSBjYWxsIG9uIHdyb25nbHkgZm9ybWF0dGVkIGNvbmZpZyBmaWxlcwogICAgICB3aGljaCBtYWtlcyBpdCBoYXJkIHRvIHVzZSBpbiBzb21lIHNpdHVhdGlvbnMuIE9QRU5TU0xfY29uZmlnKCkgaXRzZWxmCkBAIC03MjgsNiArNzA1LDE1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgQ09ORl9NRkxBR1NfREVGQVVMVF9TRUNUSU9OfAogICAgICAgICAgICAgICAgICAgICAgICAgIENPTkZfTUZMQUdTX0lHTk9SRV9NSVNTSU5HX0ZJTEUpOwogCisgIC8qIExldHMgZ2V0IG5pY2UgZXJyb3IgbWVzc2FnZXMgKi8KKyAgU1NMX2xvYWRfZXJyb3Jfc3RyaW5ncygpOworCisgIC8qIEluaXQgdGhlIGdsb2JhbCBjaXBoZXJzIGFuZCBkaWdlc3RzICovCisgIGlmKCFTU0xlYXlfYWRkX3NzbF9hbGdvcml0aG1zKCkpCisgICAgcmV0dXJuIDA7CisKKyAgT3BlblNTTF9hZGRfYWxsX2FsZ29yaXRobXMoKTsKKwogICByZXR1cm4gMTsKIH0KIApAQCAtNzUxLDE1ICs3MzcsMjUgQEAKICAgRVJSX2ZyZWVfc3RyaW5ncygpOwogCiAgIC8qIEZyZWUgdGhyZWFkIGxvY2FsIGVycm9yIHN0YXRlLCBkZXN0cm95aW5nIGhhc2ggdXBvbiB6ZXJvIHJlZmNvdW50ICovCi0jaWZkZWYgSEFWRV9FUlJfUkVNT1ZFX1RIUkVBRF9TVEFURQorI2lmZGVmIEhBVkVfRVJSX1JFTU9WRV9USFJFQURfU1RBVEVfREVQUkVDQVRFRAorCisjZWxpZiBkZWZpbmVkKEhBVkVfRVJSX1JFTU9WRV9USFJFQURfU1RBVEUpCiAgIEVSUl9yZW1vdmVfdGhyZWFkX3N0YXRlKE5VTEwpOwogI2Vsc2UKICAgRVJSX3JlbW92ZV9zdGF0ZSgwKTsKICNlbmRpZgorCisgIC8qIEZyZWUgYWxsIG1lbW9yeSBhbGxvY2F0ZWQgYnkgYWxsIGNvbmZpZ3VyYXRpb24gbW9kdWxlcyAqLworICBDT05GX21vZHVsZXNfZnJlZSgpOworCisjaWYgT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA+PSAweDEwMDAyMDAzTCAmJiBcCisgICAgT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA8PSAweDEwMDAyRkZGTAorICBTU0xfQ09NUF9mcmVlX2NvbXByZXNzaW9uX21ldGhvZHMoKTsKKyNlbmRpZgogfQogCiAvKgotICogVGhpcyBmdW5jdGlvbiB1c2VzIFNTTF9wZWVrIHRvIGRldGVybWluZSBjb25uZWN0aW9uIHN0YXR1cy4KKyAqIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBkZXRlcm1pbmUgY29ubmVjdGlvbiBzdGF0dXMuCiAgKgogICogUmV0dXJuIGNvZGVzOgogICogICAgIDEgbWVhbnMgdGhlIGNvbm5lY3Rpb24gaXMgc3RpbGwgaW4gcGxhY2UKQEAgLTc2OCwxNiArNzY0LDQ1IEBACiAgKi8KIGludCBDdXJsX29zc2xfY2hlY2tfY3huKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubikKIHsKLSAgaW50IHJjOworICAvKiBTU0xfcGVlayB0YWtlcyBkYXRhIG91dCBvZiB0aGUgcmF3IHJlY3YgYnVmZmVyIHdpdGhvdXQgcGVla2luZyBzbyB3ZSB1c2UKKyAgICAgcmVjdiBNU0dfUEVFSyBpbnN0ZWFkLiBCdWcgIzc5NSAqLworI2lmZGVmIE1TR19QRUVLCiAgIGNoYXIgYnVmOwotCi0gIHJjID0gU1NMX3BlZWsoY29ubi0+c3NsW0ZJUlNUU09DS0VUXS5oYW5kbGUsICh2b2lkKikmYnVmLCAxKTsKLSAgaWYocmMgPiAwKQotICAgIHJldHVybiAxOyAvKiBjb25uZWN0aW9uIHN0aWxsIGluIHBsYWNlICovCi0KLSAgaWYocmMgPT0gMCkKKyAgc3NpemVfdCBucmVhZDsKKyAgbnJlYWQgPSByZWN2KChSRUNWX1RZUEVfQVJHMSljb25uLT5zb2NrW0ZJUlNUU09DS0VUXSwgKFJFQ1ZfVFlQRV9BUkcyKSZidWYsCisgICAgICAgICAgICAgICAoUkVDVl9UWVBFX0FSRzMpMSwgKFJFQ1ZfVFlQRV9BUkc0KU1TR19QRUVLKTsKKyAgaWYobnJlYWQgPT0gMCkKICAgICByZXR1cm4gMDsgLyogY29ubmVjdGlvbiBoYXMgYmVlbiBjbG9zZWQgKi8KLQorICBlbHNlIGlmKG5yZWFkID09IDEpCisgICAgcmV0dXJuIDE7IC8qIGNvbm5lY3Rpb24gc3RpbGwgaW4gcGxhY2UgKi8KKyAgZWxzZSBpZihucmVhZCA9PSAtMSkgeworICAgICAgaW50IGVyciA9IFNPQ0tFUlJOTzsKKyAgICAgIGlmKGVyciA9PSBFSU5QUk9HUkVTUyB8fAorI2lmIGRlZmluZWQoRUFHQUlOKSAmJiAoRUFHQUlOICE9IEVXT1VMREJMT0NLKQorICAgICAgICAgZXJyID09IEVBR0FJTiB8fAorI2VuZGlmCisgICAgICAgICBlcnIgPT0gRVdPVUxEQkxPQ0spCisgICAgICAgIHJldHVybiAxOyAvKiBjb25uZWN0aW9uIHN0aWxsIGluIHBsYWNlICovCisgICAgICBpZihlcnIgPT0gRUNPTk5SRVNFVCB8fAorI2lmZGVmIEVDT05OQUJPUlRFRAorICAgICAgICAgZXJyID09IEVDT05OQUJPUlRFRCB8fAorI2VuZGlmCisjaWZkZWYgRU5FVERPV04KKyAgICAgICAgIGVyciA9PSBFTkVURE9XTiB8fAorI2VuZGlmCisjaWZkZWYgRU5FVFJFU0VUCisgICAgICAgICBlcnIgPT0gRU5FVFJFU0VUIHx8CisjZW5kaWYKKyNpZmRlZiBFU0hVVERPV04KKyAgICAgICAgIGVyciA9PSBFU0hVVERPV04gfHwKKyNlbmRpZgorI2lmZGVmIEVUSU1FRE9VVAorICAgICAgICAgZXJyID09IEVUSU1FRE9VVCB8fAorI2VuZGlmCisgICAgICAgICBlcnIgPT0gRU5PVENPTk4pCisgICAgICAgIHJldHVybiAwOyAvKiBjb25uZWN0aW9uIGhhcyBiZWVuIGNsb3NlZCAqLworICB9CisjZW5kaWYKICAgcmV0dXJuIC0xOyAvKiBjb25uZWN0aW9uIHN0YXR1cyB1bmtub3duICovCiB9CiAKQEAgLTk0OSw3ICs5NzQsNyBAQAogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgIC8qIG9wZW5zc2wvc3NsLmggc2F5cyAibG9vayBhdCBlcnJvciBzdGFjay9yZXR1cm4gdmFsdWUvZXJybm8iICovCiAgICAgICAgICAgc3NsZXJyb3IgPSBFUlJfZ2V0X2Vycm9yKCk7Ci0gICAgICAgICAgZmFpbGYoY29ubi0+ZGF0YSwgIlNTTCByZWFkOiAlcywgZXJybm8gJWQiLAorICAgICAgICAgIGZhaWxmKGNvbm4tPmRhdGEsIE9TU0xfUEFDS0FHRSAiIFNTTCByZWFkOiAlcywgZXJybm8gJWQiLAogICAgICAgICAgICAgICAgIEVSUl9lcnJvcl9zdHJpbmcoc3NsZXJyb3IsIGJ1ZiksCiAgICAgICAgICAgICAgICAgU09DS0VSUk5PKTsKICAgICAgICAgICBkb25lID0gMTsKQEAgLTEwMTUsNDkgKzEwNDAsNiBAQAogI2VuZGlmCiB9CiAKLXN0YXRpYyBpbnQgYXNuMV9vdXRwdXQoY29uc3QgQVNOMV9VVENUSU1FICp0bSwKLSAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqYnVmLAotICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZW9mYnVmKQotewotICBjb25zdCBjaGFyICphc24xX3N0cmluZzsKLSAgaW50IGdtdD1GQUxTRTsKLSAgaW50IGk7Ci0gIGludCB5ZWFyPTAsIG1vbnRoPTAsIGRheT0wLCBob3VyPTAsIG1pbnV0ZT0wLCBzZWNvbmQ9MDsKLQotICBpPXRtLT5sZW5ndGg7Ci0gIGFzbjFfc3RyaW5nPShjb25zdCBjaGFyICopdG0tPmRhdGE7Ci0KLSAgaWYoaSA8IDEwKQotICAgIHJldHVybiAxOwotICBpZihhc24xX3N0cmluZ1tpLTFdID09ICdaJykKLSAgICBnbXQ9VFJVRTsKLSAgZm9yKGk9MDsgaTwxMDsgaSsrKQotICAgIGlmKChhc24xX3N0cmluZ1tpXSA+ICc5JykgfHwgKGFzbjFfc3RyaW5nW2ldIDwgJzAnKSkKLSAgICAgIHJldHVybiAyOwotCi0gIHllYXI9IChhc24xX3N0cmluZ1swXS0nMCcpKjEwKyhhc24xX3N0cmluZ1sxXS0nMCcpOwotICBpZih5ZWFyIDwgNTApCi0gICAgeWVhcis9MTAwOwotCi0gIG1vbnRoPSAoYXNuMV9zdHJpbmdbMl0tJzAnKSoxMCsoYXNuMV9zdHJpbmdbM10tJzAnKTsKLSAgaWYoKG1vbnRoID4gMTIpIHx8IChtb250aCA8IDEpKQotICAgIHJldHVybiAzOwotCi0gIGRheT0gKGFzbjFfc3RyaW5nWzRdLScwJykqMTArKGFzbjFfc3RyaW5nWzVdLScwJyk7Ci0gIGhvdXI9IChhc24xX3N0cmluZ1s2XS0nMCcpKjEwKyhhc24xX3N0cmluZ1s3XS0nMCcpOwotICBtaW51dGU9ICAoYXNuMV9zdHJpbmdbOF0tJzAnKSoxMCsoYXNuMV9zdHJpbmdbOV0tJzAnKTsKLQotICBpZigoYXNuMV9zdHJpbmdbMTBdID49ICcwJykgJiYgKGFzbjFfc3RyaW5nWzEwXSA8PSAnOScpICYmCi0gICAgIChhc24xX3N0cmluZ1sxMV0gPj0gJzAnKSAmJiAoYXNuMV9zdHJpbmdbMTFdIDw9ICc5JykpCi0gICAgc2Vjb25kPSAoYXNuMV9zdHJpbmdbMTBdLScwJykqMTArKGFzbjFfc3RyaW5nWzExXS0nMCcpOwotCi0gIHNucHJpbnRmKGJ1Ziwgc2l6ZW9mYnVmLAotICAgICAgICAgICAiJTA0ZC0lMDJkLSUwMmQgJTAyZDolMDJkOiUwMmQgJXMiLAotICAgICAgICAgICB5ZWFyKzE5MDAsIG1vbnRoLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCAoZ210PyJHTVQiOiIiKSk7Ci0KLSAgcmV0dXJuIDA7Ci19Ci0KIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwogCiAKQEAgLTEwODQsOCArMTA2Niw3IEBACiAqLwogc3RhdGljIENVUkxjb2RlIHZlcmlmeWhvc3Qoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBYNTA5ICpzZXJ2ZXJfY2VydCkKIHsKLSAgaW50IG1hdGNoZWQgPSAtMTsgLyogLTEgaXMgbm8gYWx0ZXJuYXRpdmUgbWF0Y2ggeWV0LCAxIG1lYW5zIG1hdGNoIGFuZCAwCi0gICAgICAgICAgICAgICAgICAgICAgIG1lYW5zIG1pc21hdGNoICovCisgIGJvb2wgbWF0Y2hlZCA9IEZBTFNFOwogICBpbnQgdGFyZ2V0ID0gR0VOX0ROUzsgLyogdGFyZ2V0IHR5cGUsIEdFTl9ETlMgb3IgR0VOX0lQQUREICovCiAgIHNpemVfdCBhZGRybGVuID0gMDsKICAgc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEgPSBjb25uLT5kYXRhOwpAQCAtMTEyMiw3ICsxMTAzLDcgQEAKICAgICBudW1hbHRzID0gc2tfR0VORVJBTF9OQU1FX251bShhbHRuYW1lcyk7CiAKICAgICAvKiBsb29wIHRocm91Z2ggYWxsIGFsdGVybmF0aXZlcyB3aGlsZSBub25lIGhhcyBtYXRjaGVkICovCi0gICAgZm9yKGk9MDsgKGk8bnVtYWx0cykgJiYgKG1hdGNoZWQgIT0gMSk7IGkrKykgeworICAgIGZvcihpPTA7IChpPG51bWFsdHMpICYmICFtYXRjaGVkOyBpKyspIHsKICAgICAgIC8qIGdldCBhIGhhbmRsZSB0byBhbHRlcm5hdGl2ZSBuYW1lIG51bWJlciBpICovCiAgICAgICBjb25zdCBHRU5FUkFMX05BTUUgKmNoZWNrID0gc2tfR0VORVJBTF9OQU1FX3ZhbHVlKGFsdG5hbWVzLCBpKTsKIApAQCAtMTE0NywxOSArMTEyOCwyMyBAQAogICAgICAgICAgIGlmKChhbHRsZW4gPT0gc3RybGVuKGFsdHB0cikpICYmCiAgICAgICAgICAgICAgLyogaWYgdGhpcyBpc24ndCB0cnVlLCB0aGVyZSB3YXMgYW4gZW1iZWRkZWQgemVybyBpbiB0aGUgbmFtZQogICAgICAgICAgICAgICAgIHN0cmluZyBhbmQgd2UgY2Fubm90IG1hdGNoIGl0LiAqLwotICAgICAgICAgICAgIEN1cmxfY2VydF9ob3N0Y2hlY2soYWx0cHRyLCBjb25uLT5ob3N0Lm5hbWUpKQotICAgICAgICAgICAgbWF0Y2hlZCA9IDE7Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgbWF0Y2hlZCA9IDA7CisgICAgICAgICAgICAgQ3VybF9jZXJ0X2hvc3RjaGVjayhhbHRwdHIsIGNvbm4tPmhvc3QubmFtZSkpIHsKKyAgICAgICAgICAgIG1hdGNoZWQgPSBUUlVFOworICAgICAgICAgICAgaW5mb2YoZGF0YSwKKyAgICAgICAgICAgICAgICAgICIgc3ViamVjdEFsdE5hbWU6IGhvc3QgXCIlc1wiIG1hdGNoZWQgY2VydCdzIFwiJXNcIlxuIiwKKyAgICAgICAgICAgICAgICAgIGNvbm4tPmhvc3QuZGlzcG5hbWUsIGFsdHB0cik7CisgICAgICAgICAgfQogICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgR0VOX0lQQUREOiAvKiBJUCBhZGRyZXNzIGNvbXBhcmlzb24gKi8KICAgICAgICAgICAvKiBjb21wYXJlIGFsdGVybmF0aXZlIElQIGFkZHJlc3MgaWYgdGhlIGRhdGEgY2h1bmsgaXMgdGhlIHNhbWUgc2l6ZQogICAgICAgICAgICAgIG91ciBzZXJ2ZXIgSVAgYWRkcmVzcyBpcyAqLwotICAgICAgICAgIGlmKChhbHRsZW4gPT0gYWRkcmxlbikgJiYgIW1lbWNtcChhbHRwdHIsICZhZGRyLCBhbHRsZW4pKQotICAgICAgICAgICAgbWF0Y2hlZCA9IDE7Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgbWF0Y2hlZCA9IDA7CisgICAgICAgICAgaWYoKGFsdGxlbiA9PSBhZGRybGVuKSAmJiAhbWVtY21wKGFsdHB0ciwgJmFkZHIsIGFsdGxlbikpIHsKKyAgICAgICAgICAgIG1hdGNoZWQgPSBUUlVFOworICAgICAgICAgICAgaW5mb2YoZGF0YSwKKyAgICAgICAgICAgICAgICAgICIgc3ViamVjdEFsdE5hbWU6IGhvc3QgXCIlc1wiIG1hdGNoZWQgY2VydCdzIElQIGFkZHJlc3MhXG4iLAorICAgICAgICAgICAgICAgICAgY29ubi0+aG9zdC5kaXNwbmFtZSk7CisgICAgICAgICAgfQogICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICB9CkBAIC0xMTY3LDEzICsxMTUyLDEzIEBACiAgICAgR0VORVJBTF9OQU1FU19mcmVlKGFsdG5hbWVzKTsKICAgfQogCi0gIGlmKG1hdGNoZWQgPT0gMSkKLSAgICAvKiBhbiBhbHRlcm5hdGl2ZSBuYW1lIG1hdGNoZWQgdGhlIHNlcnZlciBob3N0bmFtZSAqLwotICAgIGluZm9mKGRhdGEsICJcdCBzdWJqZWN0QWx0TmFtZTogJXMgbWF0Y2hlZFxuIiwgY29ubi0+aG9zdC5kaXNwbmFtZSk7Ci0gIGVsc2UgaWYobWF0Y2hlZCA9PSAwKSB7Ci0gICAgLyogYW4gYWx0ZXJuYXRpdmUgbmFtZSBmaWVsZCBleGlzdGVkLCBidXQgZGlkbid0IG1hdGNoIGFuZCB0aGVuCi0gICAgICAgd2UgTVVTVCBmYWlsICovCi0gICAgaW5mb2YoZGF0YSwgIlx0IHN1YmplY3RBbHROYW1lIGRvZXMgbm90IG1hdGNoICVzXG4iLCBjb25uLT5ob3N0LmRpc3BuYW1lKTsKKyAgaWYobWF0Y2hlZCkKKyAgICAvKiBhbiBhbHRlcm5hdGl2ZSBuYW1lIG1hdGNoZWQgKi8KKyAgICA7CisgIGVsc2UgaWYoYWx0bmFtZXMpIHsKKyAgICAvKiBhbiBhbHRlcm5hdGl2ZSBuYW1lIGZpZWxkIGV4aXN0ZWQsIGJ1dCBkaWRuJ3QgbWF0Y2ggYW5kIHRoZW4gd2UgTVVTVAorICAgICAgIGZhaWwgKi8KKyAgICBpbmZvZihkYXRhLCAiIHN1YmplY3RBbHROYW1lIGRvZXMgbm90IG1hdGNoICVzXG4iLCBjb25uLT5ob3N0LmRpc3BuYW1lKTsKICAgICBmYWlsZihkYXRhLCAiU1NMOiBubyBhbHRlcm5hdGl2ZSBjZXJ0aWZpY2F0ZSBzdWJqZWN0IG5hbWUgbWF0Y2hlcyAiCiAgICAgICAgICAgInRhcmdldCBob3N0IG5hbWUgJyVzJyIsIGNvbm4tPmhvc3QuZGlzcG5hbWUpOwogICAgIHJlc3VsdCA9IENVUkxFX1BFRVJfRkFJTEVEX1ZFUklGSUNBVElPTjsKQEAgLTExODMsNyArMTE2OCw3IEBACiAgICAgICAgZGlzdGluZ3Vpc2hlZCBvbmUgdG8gZ2V0IHRoZSBtb3N0IHNpZ25pZmljYW50IG9uZS4gKi8KICAgICBpbnQgaiwgaT0tMTsKIAotLyogVGhlIGZvbGxvd2luZyBpcyBkb25lIGJlY2F1c2Ugb2YgYSBidWcgaW4gMC45LjZiICovCisgICAgLyogVGhlIGZvbGxvd2luZyBpcyBkb25lIGJlY2F1c2Ugb2YgYSBidWcgaW4gMC45LjZiICovCiAKICAgICB1bnNpZ25lZCBjaGFyICpudWxzdHIgPSAodW5zaWduZWQgY2hhciAqKSIiOwogICAgIHVuc2lnbmVkIGNoYXIgKnBlZXJfQ04gPSBudWxzdHI7CkBAIC0xMjU1LDcgKzEyNDAsNyBAQAogICAgICAgcmVzdWx0ID0gQ1VSTEVfUEVFUl9GQUlMRURfVkVSSUZJQ0FUSU9OOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgIGluZm9mKGRhdGEsICJcdCBjb21tb24gbmFtZTogJXMgKG1hdGNoZWQpXG4iLCBwZWVyX0NOKTsKKyAgICAgIGluZm9mKGRhdGEsICIgY29tbW9uIG5hbWU6ICVzIChtYXRjaGVkKVxuIiwgcGVlcl9DTik7CiAgICAgfQogICAgIGlmKHBlZXJfQ04pCiAgICAgICBPUEVOU1NMX2ZyZWUocGVlcl9DTik7CkBAIC0xMjY1LDcgKzEyNTAsNyBAQAogfQogCiAjaWYgKE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPj0gMHgwMDkwODA4ZkwpICYmICFkZWZpbmVkKE9QRU5TU0xfTk9fVExTRVhUKSAmJiBcCi0gICAgIWRlZmluZWQoT1BFTlNTTF9JU19CT1JJTkdTU0wpCisgICAgIWRlZmluZWQoT1BFTlNTTF9OT19PQ1NQKQogc3RhdGljIENVUkxjb2RlIHZlcmlmeXN0YXR1cyhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzc2xfY29ubmVjdF9kYXRhICpjb25uc3NsKQogewpAQCAtMTM1MSw3ICsxMzM2LDggQEAKIAogICAgIEFTTjFfR0VORVJBTElaRURUSU1FICpyZXYsICp0aGlzdXBkLCAqbmV4dHVwZDsKIAotICAgIGlmKCEoc2luZ2xlID0gT0NTUF9yZXNwX2dldDAoYnIsIGkpKSkKKyAgICBzaW5nbGUgPSBPQ1NQX3Jlc3BfZ2V0MChiciwgaSk7CisgICAgaWYoIXNpbmdsZSkKICAgICAgIGNvbnRpbnVlOwogCiAgICAgY2VydF9zdGF0dXMgPSBPQ1NQX3NpbmdsZV9nZXQwX3N0YXR1cyhzaW5nbGUsICZjcmxfcmVhc29uLCAmcmV2LApAQCAtMTQzMiw4ICsxNDE4LDEwIEBACiAgICAgICAgIHJldHVybiAiQ2xpZW50IGhlbGxvIjsKICAgICAgIGNhc2UgU1NMM19NVF9TRVJWRVJfSEVMTE86CiAgICAgICAgIHJldHVybiAiU2VydmVyIGhlbGxvIjsKKyNpZmRlZiBTU0wzX01UX05FV1NFU1NJT05fVElDS0VUCiAgICAgICBjYXNlIFNTTDNfTVRfTkVXU0VTU0lPTl9USUNLRVQ6CiAgICAgICAgIHJldHVybiAiTmV3c2Vzc2lvbiBUaWNrZXQiOworI2VuZGlmCiAgICAgICBjYXNlIFNTTDNfTVRfQ0VSVElGSUNBVEU6CiAgICAgICAgIHJldHVybiAiQ2VydGlmaWNhdGUiOwogICAgICAgY2FzZSBTU0wzX01UX1NFUlZFUl9LRVlfRVhDSEFOR0U6CkBAIC0xNDkwLDcgKzE0NzgsNyBAQAogICBjaGFyIHNzbF9idWZbMTAyNF07CiAgIGNoYXIgdW5rbm93blszMl07CiAgIGludCBtc2dfdHlwZSwgdHh0X2xlbjsKLSAgY29uc3QgY2hhciAqdmVyc3RyOworICBjb25zdCBjaGFyICp2ZXJzdHIgPSBOVUxMOwogICBzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4gPSB1c2VycDsKIAogICBpZighY29ubiB8fCAhY29ubi0+ZGF0YSB8fCAhY29ubi0+ZGF0YS0+c2V0LmZkZWJ1ZyB8fApAQCAtMTYxOCwxMiArMTYwNiwxMiBAQAogICAodm9pZClzc2w7CiAKICNpZmRlZiBVU0VfTkdIVFRQMgotICBpZihjb25uLT5kYXRhLT5zZXQuaHR0cHZlcnNpb24gPT0gQ1VSTF9IVFRQX1ZFUlNJT05fMl8wICYmCisgIGlmKGNvbm4tPmRhdGEtPnNldC5odHRwdmVyc2lvbiA+PSBDVVJMX0hUVFBfVkVSU0lPTl8yICYmCiAgICAgICFzZWxlY3RfbmV4dF9wcm90b2NvbChvdXQsIG91dGxlbiwgaW4sIGlubGVuLCBOR0hUVFAyX1BST1RPX1ZFUlNJT05fSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOR0hUVFAyX1BST1RPX1ZFUlNJT05fSURfTEVOKSkgewogICAgIGluZm9mKGNvbm4tPmRhdGEsICJOUE4sIG5lZ290aWF0ZWQgSFRUUDIgKCVzKVxuIiwKICAgICAgICAgICBOR0hUVFAyX1BST1RPX1ZFUlNJT05fSUQpOwotICAgIGNvbm4tPm5lZ25wbiA9IENVUkxfSFRUUF9WRVJTSU9OXzJfMDsKKyAgICBjb25uLT5uZWducG4gPSBDVVJMX0hUVFBfVkVSU0lPTl8yOwogICAgIHJldHVybiBTU0xfVExTRVhUX0VSUl9PSzsKICAgfQogI2VuZGlmCkBAIC0xNzA1LDcgKzE2OTMsNyBAQAogICBjYXNlIENVUkxfU1NMVkVSU0lPTl9UTFN2MV8yOgogICAgIC8qIGl0IHdpbGwgYmUgaGFuZGxlZCBsYXRlciB3aXRoIHRoZSBjb250ZXh0IG9wdGlvbnMgKi8KICNpZiAoT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA+PSAweDEwMTAwMDAwTCkgJiYgXAotICAgICFkZWZpbmVkKExJQlJFU1NMX1ZFUlNJT05fTlVNQkVSKSAmJiAhZGVmaW5lZChPUEVOU1NMX0lTX0JPUklOR1NTTCkKKyAgICAhZGVmaW5lZChMSUJSRVNTTF9WRVJTSU9OX05VTUJFUikKICAgICByZXFfbWV0aG9kID0gVExTX2NsaWVudF9tZXRob2QoKTsKICNlbHNlCiAgICAgcmVxX21ldGhvZCA9IFNTTHYyM19jbGllbnRfbWV0aG9kKCk7CkBAIC0xNzE0LDcgKzE3MDIsNyBAQAogICAgIGJyZWFrOwogICBjYXNlIENVUkxfU1NMVkVSU0lPTl9TU0x2MjoKICNpZmRlZiBPUEVOU1NMX05PX1NTTDIKLSAgICBmYWlsZihkYXRhLCAiT3BlblNTTCB3YXMgYnVpbHQgd2l0aG91dCBTU0x2MiBzdXBwb3J0Iik7CisgICAgZmFpbGYoZGF0YSwgT1NTTF9QQUNLQUdFICIgd2FzIGJ1aWx0IHdpdGhvdXQgU1NMdjIgc3VwcG9ydCIpOwogICAgIHJldHVybiBDVVJMRV9OT1RfQlVJTFRfSU47CiAjZWxzZQogI2lmZGVmIFVTRV9UTFNfU1JQCkBAIC0xNzI3LDcgKzE3MTUsNyBAQAogI2VuZGlmCiAgIGNhc2UgQ1VSTF9TU0xWRVJTSU9OX1NTTHYzOgogI2lmZGVmIE9QRU5TU0xfTk9fU1NMM19NRVRIT0QKLSAgICBmYWlsZihkYXRhLCAiT3BlblNTTCB3YXMgYnVpbHQgd2l0aG91dCBTU0x2MyBzdXBwb3J0Iik7CisgICAgZmFpbGYoZGF0YSwgT1NTTF9QQUNLQUdFICIgd2FzIGJ1aWx0IHdpdGhvdXQgU1NMdjMgc3VwcG9ydCIpOwogICAgIHJldHVybiBDVVJMRV9OT1RfQlVJTFRfSU47CiAjZWxzZQogI2lmZGVmIFVTRV9UTFNfU1JQCkBAIC0xODg1LDE3ICsxODczLDE3IEBACiAgIFNTTF9DVFhfc2V0X29wdGlvbnMoY29ubnNzbC0+Y3R4LCBjdHhfb3B0aW9ucyk7CiAKICNpZmRlZiBIQVNfTlBOCi0gIGlmKGRhdGEtPnNldC5zc2xfZW5hYmxlX25wbikKKyAgaWYoY29ubi0+Yml0cy50bHNfZW5hYmxlX25wbikKICAgICBTU0xfQ1RYX3NldF9uZXh0X3Byb3RvX3NlbGVjdF9jYihjb25uc3NsLT5jdHgsIHNlbGVjdF9uZXh0X3Byb3RvX2NiLCBjb25uKTsKICNlbmRpZgogCiAjaWZkZWYgSEFTX0FMUE4KLSAgaWYoZGF0YS0+c2V0LnNzbF9lbmFibGVfYWxwbikgeworICBpZihjb25uLT5iaXRzLnRsc19lbmFibGVfYWxwbikgewogICAgIGludCBjdXIgPSAwOwogICAgIHVuc2lnbmVkIGNoYXIgcHJvdG9jb2xzWzEyOF07CiAKICNpZmRlZiBVU0VfTkdIVFRQMgotICAgIGlmKGRhdGEtPnNldC5odHRwdmVyc2lvbiA9PSBDVVJMX0hUVFBfVkVSU0lPTl8yXzApIHsKKyAgICBpZihkYXRhLT5zZXQuaHR0cHZlcnNpb24gPj0gQ1VSTF9IVFRQX1ZFUlNJT05fMikgewogICAgICAgcHJvdG9jb2xzW2N1cisrXSA9IE5HSFRUUDJfUFJPVE9fVkVSU0lPTl9JRF9MRU47CiAKICAgICAgIG1lbWNweSgmcHJvdG9jb2xzW2N1cl0sIE5HSFRUUDJfUFJPVE9fVkVSU0lPTl9JRCwKQEAgLTE5OTUsNiArMTk4MywxMyBAQAogICAgICAgICAgIGRhdGEtPnNldC5zdHJbU1RSSU5HX1NTTF9DQVBBVEhdID8gZGF0YS0+c2V0LnN0cltTVFJJTkdfU1NMX0NBUEFUSF06CiAgICAgICAgICAgIm5vbmUiKTsKICAgfQorI2lmZGVmIENVUkxfQ0FfRkFMTEJBQ0sKKyAgZWxzZSBpZihkYXRhLT5zZXQuc3NsLnZlcmlmeXBlZXIpIHsKKyAgICAvKiB2ZXJmeWluZyB0aGUgcGVlciB3aXRob3V0IGFueSBDQSBjZXJ0aWZpY2F0ZXMgd29uJ3QKKyAgICAgICB3b3JrIHNvIHVzZSBvcGVuc3NsJ3MgYnVpbHQgaW4gZGVmYXVsdCBhcyBmYWxsYmFjayAqLworICAgIFNTTF9DVFhfc2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzKGNvbm5zc2wtPmN0eCk7CisgIH0KKyNlbmRpZgogCiAgIGlmKGRhdGEtPnNldC5zdHJbU1RSSU5HX1NTTF9DUkxGSUxFXSkgewogICAgIC8qIHRlbGwgU1NMIHdoZXJlIHRvIGZpbmQgQ1JMIGZpbGUgdGhhdCBpcyB1c2VkIHRvIGNoZWNrIGNlcnRpZmljYXRlCkBAIC0yMDYxLDcgKzIwNTYsNyBAQAogICB9CiAKICNpZiAoT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA+PSAweDAwOTA4MDhmTCkgJiYgIWRlZmluZWQoT1BFTlNTTF9OT19UTFNFWFQpICYmIFwKLSAgICAhZGVmaW5lZChPUEVOU1NMX0lTX0JPUklOR1NTTCkKKyAgICAhZGVmaW5lZChPUEVOU1NMX05PX09DU1ApCiAgIGlmKGRhdGEtPnNldC5zc2wudmVyaWZ5c3RhdHVzKQogICAgIFNTTF9zZXRfdGxzZXh0X3N0YXR1c190eXBlKGNvbm5zc2wtPmhhbmRsZSwgVExTRVhUX1NUQVRVU1RZUEVfb2NzcCk7CiAjZW5kaWYKQEAgLTIxMzUsMzIgKzIxMzAsMjYgQEAKICAgICBlbHNlIHsKICAgICAgIC8qIHVudHJlYXRlZCBlcnJvciAqLwogICAgICAgdW5zaWduZWQgbG9uZyBlcnJkZXRhaWw7Ci0gICAgICBjaGFyIGVycm9yX2J1ZmZlclsyNTZdOyAvKiBPcGVuU1NMIGRvY3VtZW50cyB0aGF0IHRoaXMgbXVzdCBiZSBhdCBsZWFzdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjU2IGJ5dGVzIGxvbmcuICovCisgICAgICBjaGFyIGVycm9yX2J1ZmZlclsyNTZdPSIiOyAvKiBPcGVuU1NMIGRvY3VtZW50cyB0aGF0IHRoaXMgbXVzdCBiZSBhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVhc3QgMjU2IGJ5dGVzIGxvbmcuICovCiAgICAgICBDVVJMY29kZSByZXN1bHQ7Ci0gICAgICBjb25zdCBjaGFyICpjZXJ0X3Byb2JsZW0gPSBOVUxMOwogICAgICAgbG9uZyBsZXJyOworICAgICAgaW50IGxpYjsKKyAgICAgIGludCByZWFzb247CiAKLSAgICAgIGNvbm5zc2wtPmNvbm5lY3Rpbmdfc3RhdGUgPSBzc2xfY29ubmVjdF8yOyAvKiB0aGUgY29ubmVjdGlvbiBmYWlsZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2UncmUgbm90IHdhaXRpbmcgZm9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW55dGhpbmcgZWxzZS4gKi8KKyAgICAgIC8qIHRoZSBjb25uZWN0aW9uIGZhaWxlZCwgd2UncmUgbm90IHdhaXRpbmcgZm9yIGFueXRoaW5nIGVsc2UuICovCisgICAgICBjb25uc3NsLT5jb25uZWN0aW5nX3N0YXRlID0gc3NsX2Nvbm5lY3RfMjsKIAotICAgICAgZXJyZGV0YWlsID0gRVJSX2dldF9lcnJvcigpOyAvKiBHZXRzIHRoZSBlYXJsaWVzdCBlcnJvciBjb2RlIGZyb20gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZCdzIGVycm9yIHF1ZXVlIGFuZCByZW1vdmVzIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS4gKi8KKyAgICAgIC8qIEdldCB0aGUgZWFybGllc3QgZXJyb3IgY29kZSBmcm9tIHRoZSB0aHJlYWQncyBlcnJvciBxdWV1ZSBhbmQgcmVtb3ZlcworICAgICAgICAgdGhlIGVudHJ5LiAqLworICAgICAgZXJyZGV0YWlsID0gRVJSX2dldF9lcnJvcigpOwogCi0gICAgICBzd2l0Y2goZXJyZGV0YWlsKSB7Ci0gICAgICBjYXNlIDB4MTQwN0UwODY6Ci0gICAgICAgIC8qIDE0MDdFMDg2OgotICAgICAgICAgICBTU0wgcm91dGluZXM6Ci0gICAgICAgICAgIFNTTDJfU0VUX0NFUlRJRklDQVRFOgotICAgICAgICAgICBjZXJ0aWZpY2F0ZSB2ZXJpZnkgZmFpbGVkICovCi0gICAgICAgIC8qIGZhbGwtdGhyb3VnaCAqLwotICAgICAgY2FzZSAweDE0MDkwMDg2OgotICAgICAgICAvKiAxNDA5MDA4NjoKLSAgICAgICAgICAgU1NMIHJvdXRpbmVzOgotICAgICAgICAgICBTU0wzX0dFVF9TRVJWRVJfQ0VSVElGSUNBVEU6Ci0gICAgICAgICAgIGNlcnRpZmljYXRlIHZlcmlmeSBmYWlsZWQgKi8KKyAgICAgIC8qIEV4dHJhY3Qgd2hpY2ggbGliIGFuZCByZWFzb24gKi8KKyAgICAgIGxpYiA9IEVSUl9HRVRfTElCKGVycmRldGFpbCk7CisgICAgICByZWFzb24gPSBFUlJfR0VUX1JFQVNPTihlcnJkZXRhaWwpOworCisgICAgICBpZigobGliID09IEVSUl9MSUJfU1NMKSAmJgorICAgICAgICAgKHJlYXNvbiA9PSBTU0xfUl9DRVJUSUZJQ0FURV9WRVJJRllfRkFJTEVEKSkgewogICAgICAgICByZXN1bHQgPSBDVVJMRV9TU0xfQ0FDRVJUOwogCiAgICAgICAgIGxlcnIgPSBTU0xfZ2V0X3ZlcmlmeV9yZXN1bHQoY29ubnNzbC0+aGFuZGxlKTsKQEAgLTIxNzAsMTQgKzIxNTksMTMgQEAKICAgICAgICAgICAgICAgICAgICBYNTA5X3ZlcmlmeV9jZXJ0X2Vycm9yX3N0cmluZyhsZXJyKSk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQotICAgICAgICAgIGNlcnRfcHJvYmxlbSA9ICJTU0wgY2VydGlmaWNhdGUgcHJvYmxlbSwgdmVyaWZ5IHRoYXQgdGhlIENBIGNlcnQgaXMiCi0gICAgICAgICAgICAiIE9LLiI7Ci0KLSAgICAgICAgYnJlYWs7Ci0gICAgICBkZWZhdWx0OgorICAgICAgICAgIC8qIHN0cmNweSgpIGlzIGZpbmUgaGVyZSBhcyBsb25nIGFzIHRoZSBzdHJpbmcgZml0cyB3aXRoaW4KKyAgICAgICAgICAgICBlcnJvcl9idWZmZXIgKi8KKyAgICAgICAgICBzdHJjcHkoZXJyb3JfYnVmZmVyLCAiU1NMIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbiBmYWlsZWQiKTsKKyAgICAgIH0KKyAgICAgIGVsc2UgewogICAgICAgICByZXN1bHQgPSBDVVJMRV9TU0xfQ09OTkVDVF9FUlJPUjsKICAgICAgICAgU1NMX3N0cmVycm9yKGVycmRldGFpbCwgZXJyb3JfYnVmZmVyLCBzaXplb2YoZXJyb3JfYnVmZmVyKSk7Ci0gICAgICAgIGJyZWFrOwogICAgICAgfQogCiAgICAgICAvKiBkZXRhaWwgaXMgYWxyZWFkeSBzZXQgdG8gdGhlIFNTTCBlcnJvciBhYm92ZSAqLwpAQCAtMjE5Myw3ICsyMTgxLDcgQEAKICAgICAgIH0KIAogICAgICAgLyogQ291bGQgYmUgYSBDRVJUIHByb2JsZW0gKi8KLSAgICAgIGZhaWxmKGRhdGEsICIlcyVzIiwgY2VydF9wcm9ibGVtID8gY2VydF9wcm9ibGVtIDogIiIsIGVycm9yX2J1ZmZlcik7CisgICAgICBmYWlsZihkYXRhLCAiJXMiLCBlcnJvcl9idWZmZXIpOwogCiAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTIyMTEsNyArMjE5OSw3IEBACiAgICAgLyogU2V0cyBkYXRhIGFuZCBsZW4gdG8gbmVnb3RpYXRlZCBwcm90b2NvbCwgbGVuIGlzIDAgaWYgbm8gcHJvdG9jb2wgd2FzCiAgICAgICogbmVnb3RpYXRlZAogICAgICAqLwotICAgIGlmKGRhdGEtPnNldC5zc2xfZW5hYmxlX2FscG4pIHsKKyAgICBpZihjb25uLT5iaXRzLnRsc19lbmFibGVfYWxwbikgewogICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogbmVnX3Byb3RvY29sOwogICAgICAgdW5zaWduZWQgaW50IGxlbjsKICAgICAgIFNTTF9nZXQwX2FscG5fc2VsZWN0ZWQoY29ubnNzbC0+aGFuZGxlLCAmbmVnX3Byb3RvY29sLCAmbGVuKTsKQEAgLTIyMjEsNyArMjIwOSw3IEBACiAjaWZkZWYgVVNFX05HSFRUUDIKICAgICAgICAgaWYobGVuID09IE5HSFRUUDJfUFJPVE9fVkVSU0lPTl9JRF9MRU4gJiYKICAgICAgICAgICAgIW1lbWNtcChOR0hUVFAyX1BST1RPX1ZFUlNJT05fSUQsIG5lZ19wcm90b2NvbCwgbGVuKSkgewotICAgICAgICAgIGNvbm4tPm5lZ25wbiA9IENVUkxfSFRUUF9WRVJTSU9OXzJfMDsKKyAgICAgICAgICBjb25uLT5uZWducG4gPSBDVVJMX0hUVFBfVkVSU0lPTl8yOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKICNlbmRpZgpAQCAtMjI1NCw0NSArMjI0Miw0MyBAQAogICByZXR1cm4gMDsKIH0KIAorI2RlZmluZSBwdXNoX2NlcnRpbmZvKF9sYWJlbCwgX251bSkgXAorZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgbG9uZyBpbmZvX2xlbiA9IEJJT19nZXRfbWVtX2RhdGEobWVtLCAmcHRyKTsgXAorICBDdXJsX3NzbF9wdXNoX2NlcnRpbmZvX2xlbihkYXRhLCBfbnVtLCBfbGFiZWwsIHB0ciwgaW5mb19sZW4pOyBcCisgIGlmKDEhPUJJT19yZXNldChtZW0pKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBicmVhazsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorfSBXSElMRV9GQUxTRQorCiBzdGF0aWMgdm9pZCBwdWJrZXlfc2hvdyhzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEJJTyAqbWVtLAogICAgICAgICAgICAgICAgICAgICAgICAgaW50IG51bSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqcmF3LAotICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxlbikKKyAgICAgICAgICAgICAgICAgICAgICAgIEJJR05VTSAqYm4pCiB7Ci0gIHNpemVfdCBsZWZ0OwotICBpbnQgaTsKKyAgY2hhciAqcHRyOwogICBjaGFyIG5hbWVidWZbMzJdOwotICBjaGFyICpidWZmZXI7CiAKLSAgbGVmdCA9IGxlbiozICsgMTsKLSAgYnVmZmVyID0gbWFsbG9jKGxlZnQpOwotICBpZihidWZmZXIpIHsKLSAgICBjaGFyICpwdHI9YnVmZmVyOwotICAgIHNucHJpbnRmKG5hbWVidWYsIHNpemVvZihuYW1lYnVmKSwgIiVzKCVzKSIsIHR5cGUsIG5hbWUpOwotICAgIGZvcihpPTA7IGk8IGxlbjsgaSsrKSB7Ci0gICAgICBzbnByaW50ZihwdHIsIGxlZnQsICIlMDJ4OiIsIHJhd1tpXSk7Ci0gICAgICBwdHIgKz0gMzsKLSAgICAgIGxlZnQgLT0gMzsKLSAgICB9Ci0gICAgaW5mb2YoZGF0YSwgIiAgICVzOiAlc1xuIiwgbmFtZWJ1ZiwgYnVmZmVyKTsKLSAgICBDdXJsX3NzbF9wdXNoX2NlcnRpbmZvKGRhdGEsIG51bSwgbmFtZWJ1ZiwgYnVmZmVyKTsKLSAgICBmcmVlKGJ1ZmZlcik7Ci0gIH0KKyAgc25wcmludGYobmFtZWJ1Ziwgc2l6ZW9mKG5hbWVidWYpLCAiJXMoJXMpIiwgdHlwZSwgbmFtZSk7CisKKyAgaWYoYm4pCisgICAgQk5fcHJpbnQobWVtLCBibik7CisgIHB1c2hfY2VydGluZm8obmFtZWJ1ZiwgbnVtKTsKIH0KIAorI2lmZGVmIEhBVkVfT1BBUVVFX1JTQV9EU0FfREgKKyNkZWZpbmUgcHJpbnRfcHVia2V5X0JOKF90eXBlLCBfbmFtZSwgX251bSkgICAgICAgICAgICAgIFwKKyAgcHVia2V5X3Nob3coZGF0YSwgbWVtLCBfbnVtLCAjX3R5cGUsICNfbmFtZSwgX25hbWUpCisKKyNlbHNlCiAjZGVmaW5lIHByaW50X3B1YmtleV9CTihfdHlwZSwgX25hbWUsIF9udW0pICAgIFwKIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIGlmKHB1YmtleS0+cGtleS5fdHlwZS0+X25hbWUpIHsgXAotICAgIGludCBsZW4gPSBCTl9udW1fYnl0ZXMocHVia2V5LT5wa2V5Ll90eXBlLT5fbmFtZSk7ICBcCi0gICAgaWYobGVuIDwgQ0VSVEJVRkZFUlNJWkUpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICBCTl9ibjJiaW4ocHVia2V5LT5wa2V5Ll90eXBlLT5fbmFtZSwgKHVuc2lnbmVkIGNoYXIqKWJ1ZnApOyBcCi0gICAgICBidWZwW2xlbl0gPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICBwdWJrZXlfc2hvdyhkYXRhLCBfbnVtLCAjX3R5cGUsICNfbmFtZSwgKHVuc2lnbmVkIGNoYXIqKWJ1ZnAsIGxlbik7IFwKLSAgICB9IFwKKyAgaWYoX3R5cGUtPl9uYW1lKSB7IFwKKyAgICBwdWJrZXlfc2hvdyhkYXRhLCBtZW0sIF9udW0sICNfdHlwZSwgI19uYW1lLCBfdHlwZS0+X25hbWUpOyBcCiAgIH0gXAogfSBXSElMRV9GQUxTRQorI2VuZGlmCiAKIHN0YXRpYyBpbnQgWDUwOVYzX2V4dChzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2VydG51bSwKQEAgLTIzMDEsMTEgKzIyODcsMTEgQEAKICAgaW50IGk7CiAgIHNpemVfdCBqOwogCi0gIGlmKHNrX1g1MDlfRVhURU5TSU9OX251bShleHRzKSA8PSAwKQorICBpZigoaW50KXNrX1g1MDlfRVhURU5TSU9OX251bShleHRzKSA8PSAwKQogICAgIC8qIG5vIGV4dGVuc2lvbnMsIGJhaWwgb3V0ICovCiAgICAgcmV0dXJuIDE7CiAKLSAgZm9yKGk9MDsgaTxza19YNTA5X0VYVEVOU0lPTl9udW0oZXh0cyk7IGkrKykgeworICBmb3IoaT0wOyBpIDwgKGludClza19YNTA5X0VYVEVOU0lPTl9udW0oZXh0cyk7IGkrKykgewogICAgIEFTTjFfT0JKRUNUICpvYmo7CiAgICAgWDUwOV9FWFRFTlNJT04gKmV4dCA9IHNrX1g1MDlfRVhURU5TSU9OX3ZhbHVlKGV4dHMsIGkpOwogICAgIEJVRl9NRU0gKmJpb21lbTsKQEAgLTIzMjEsMTggKzIzMDcsMTIgQEAKIAogICAgIGFzbjFfb2JqZWN0X2R1bXAob2JqLCBuYW1lYnVmLCBzaXplb2YobmFtZWJ1ZikpOwogCi0gICAgaW5mb2YoZGF0YSwgIiVzOiAlc1xuIiwgbmFtZWJ1ZiwKLSAgICAgICAgICBYNTA5X0VYVEVOU0lPTl9nZXRfY3JpdGljYWwoZXh0KT8iKGNyaXRpY2FsKSI6IiIpOwotCiAgICAgaWYoIVg1MDlWM19FWFRfcHJpbnQoYmlvX291dCwgZXh0LCAwLCAwKSkKICAgICAgIEFTTjFfU1RSSU5HX3ByaW50KGJpb19vdXQsIChBU04xX1NUUklORyAqKVg1MDlfRVhURU5TSU9OX2dldF9kYXRhKGV4dCkpOwogCiAgICAgQklPX2dldF9tZW1fcHRyKGJpb19vdXQsICZiaW9tZW0pOwogCi0gICAgLyogYmlvbWVtLT5sZW5ndGggYnl0ZXMgYXQgYmlvbWVtLT5kYXRhLCB0aGlzIGxpdHRsZSBsb29wIGhlcmUgaXMgb25seQotICAgICAgIGRvbmUgZm9yIHRoZSBpbmZvZigpIGNhbGwsIHdlIHNlbmQgdGhlICJyYXciIGRhdGEgdG8gdGhlIGNlcnRpbmZvCi0gICAgICAgZnVuY3Rpb24gKi8KLSAgICBmb3Ioaj0wOyBqPChzaXplX3QpYmlvbWVtLT5sZW5ndGg7IGorKykgeworICAgIGZvcihqID0gMDsgaiA8IChzaXplX3QpYmlvbWVtLT5sZW5ndGg7IGorKykgewogICAgICAgY29uc3QgY2hhciAqc2VwPSIiOwogICAgICAgaWYoYmlvbWVtLT5kYXRhW2pdID09ICdcbicpIHsKICAgICAgICAgc2VwPSIsICI7CkBAIC0yMzQ0LDcgKzIzMjQsNiBAQAogICAgICAgICBwdHIrPXNucHJpbnRmKHB0ciwgc2l6ZW9mKGJ1ZiktKHB0ci1idWYpLCAiJXMlYyIsIHNlcCwKICAgICAgICAgICAgICAgICAgICAgICBiaW9tZW0tPmRhdGFbal0pOwogICAgIH0KLSAgICBpbmZvZihkYXRhLCAiICAlc1xuIiwgYnVmKTsKIAogICAgIEN1cmxfc3NsX3B1c2hfY2VydGluZm8oZGF0YSwgY2VydG51bSwgbmFtZWJ1ZiwgYnVmKTsKIApAQCAtMjM1NCw0NiArMjMzMyw2IEBACiAgIHJldHVybiAwOyAvKiBhbGwgaXMgZmluZSAqLwogfQogCi0KLXN0YXRpYyB2b2lkIFg1MDlfc2lnbmF0dXJlKHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG51bWNlcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBBU04xX1NUUklORyAqc2lnKQotewotICBjaGFyIGJ1ZlsxMDI0XTsKLSAgY2hhciAqcHRyID0gYnVmOwotICBpbnQgaTsKLQotICBmb3IoaT0wOyBpPHNpZy0+bGVuZ3RoOyBpKyspCi0gICAgcHRyKz1zbnByaW50ZihwdHIsIHNpemVvZihidWYpLShwdHItYnVmKSwgIiUwMng6Iiwgc2lnLT5kYXRhW2ldKTsKLQotICBpbmZvZihkYXRhLCAiIFNpZ25hdHVyZTogJXNcbiIsIGJ1Zik7Ci0gIEN1cmxfc3NsX3B1c2hfY2VydGluZm8oZGF0YSwgbnVtY2VydCwgIlNpZ25hdHVyZSIsIGJ1Zik7Ci19Ci0KLXN0YXRpYyB2b2lkIGR1bXBjZXJ0KHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLCBYNTA5ICp4LCBpbnQgbnVtY2VydCkKLXsKLSAgQklPICpiaW9fb3V0ID0gQklPX25ldyhCSU9fc19tZW0oKSk7Ci0gIEJVRl9NRU0gKmJpb21lbTsKLQotICAvKiB0aGlzIG91dHB1dHMgdGhlIGNlcnQgaW4gdGhpcyA2NCBjb2x1bW4gd2lkZSBzdHlsZSB3aXRoIG5ld2xpbmVzIGFuZAotICAgICAtLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0gdGV4dHMgYW5kIG1vcmUgKi8KLSAgUEVNX3dyaXRlX2Jpb19YNTA5KGJpb19vdXQsIHgpOwotCi0gIEJJT19nZXRfbWVtX3B0cihiaW9fb3V0LCAmYmlvbWVtKTsKLQotICBDdXJsX3NzbF9wdXNoX2NlcnRpbmZvX2xlbihkYXRhLCBudW1jZXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2VydCIsIGJpb21lbS0+ZGF0YSwgYmlvbWVtLT5sZW5ndGgpOwotCi0gIEJJT19mcmVlKGJpb19vdXQpOwotfQotCi0vKgotICogVGhpcyBzaXplIHdhcyBwcmV2aW91c2x5IDUxMiB3aGljaCBoYXMgYmVlbiByZXBvcnRlZCAidG9vIHNtYWxsIiB3aXRob3V0Ci0gKiBhbnkgc3BlY2lmaWNzLCBzbyBpdCB3YXMgZW5sYXJnZWQgdG8gYWxsb3cgbW9yZSBkYXRhIHRvIGdldCBzaG93biB1bmN1dC4KLSAqIFRoZSAicGVyZmVjdCIgc2l6ZSBpcyB5ZXQgdG8gZmlndXJlIG91dC4KLSAqLwotI2RlZmluZSBDRVJUQlVGRkVSU0laRSA4MTkyCi0KIHN0YXRpYyBDVVJMY29kZSBnZXRfY2VydF9jaGFpbihzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNzbF9jb25uZWN0X2RhdGEgKmNvbm5zc2wpCiAKQEAgLTI0MDEsMTcgKzIzNDAsMTIgQEAKICAgQ1VSTGNvZGUgcmVzdWx0OwogICBTVEFDS19PRihYNTA5KSAqc2s7CiAgIGludCBpOwotICBjaGFyICpidWZwOwogICBzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSA9IGNvbm4tPmRhdGE7CiAgIGludCBudW1jZXJ0czsKLQotICBidWZwID0gbWFsbG9jKENFUlRCVUZGRVJTSVpFKTsKLSAgaWYoIWJ1ZnApCi0gICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisgIEJJTyAqbWVtOwogCiAgIHNrID0gU1NMX2dldF9wZWVyX2NlcnRfY2hhaW4oY29ubnNzbC0+aGFuZGxlKTsKICAgaWYoIXNrKSB7Ci0gICAgZnJlZShidWZwKTsKICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKICAgfQogCkBAIC0yNDE5LDk5ICsyMzUzLDEyMiBAQAogCiAgIHJlc3VsdCA9IEN1cmxfc3NsX2luaXRfY2VydGluZm8oZGF0YSwgbnVtY2VydHMpOwogICBpZihyZXN1bHQpIHsKLSAgICBmcmVlKGJ1ZnApOwogICAgIHJldHVybiByZXN1bHQ7CiAgIH0KIAotICBpbmZvZihkYXRhLCAiLS0tIENlcnRpZmljYXRlIGNoYWluXG4iKTsKLSAgZm9yKGk9MDsgaTxudW1jZXJ0czsgaSsrKSB7Ci0gICAgbG9uZyB2YWx1ZTsKKyAgbWVtID0gQklPX25ldyhCSU9fc19tZW0oKSk7CisKKyAgZm9yKGkgPSAwOyBpIDwgbnVtY2VydHM7IGkrKykgewogICAgIEFTTjFfSU5URUdFUiAqbnVtOwotICAgIEFTTjFfVElNRSAqY2VydGRhdGU7Ci0KLSAgICAvKiBnZXQgdGhlIGNlcnRzIGluICJpbXBvcnRhbmNlIG9yZGVyIiAqLwotI2lmIDAKLSAgICBYNTA5ICp4ID0gc2tfWDUwOV92YWx1ZShzaywgbnVtY2VydHMgLSBpIC0gMSk7Ci0jZWxzZQogICAgIFg1MDkgKnggPSBza19YNTA5X3ZhbHVlKHNrLCBpKTsKLSNlbmRpZgotCi0gICAgWDUwOV9DSU5GICpjaW5mOwogICAgIEVWUF9QS0VZICpwdWJrZXk9TlVMTDsKICAgICBpbnQgajsKICAgICBjaGFyICpwdHI7CisgICAgQVNOMV9CSVRfU1RSSU5HICpwc2lnID0gTlVMTDsKIAotICAgICh2b2lkKXg1MDlfbmFtZV9vbmVsaW5lKFg1MDlfZ2V0X3N1YmplY3RfbmFtZSh4KSwgYnVmcCwgQ0VSVEJVRkZFUlNJWkUpOwotICAgIGluZm9mKGRhdGEsICIlMmQgU3ViamVjdDogJXNcbiIsIGksIGJ1ZnApOwotICAgIEN1cmxfc3NsX3B1c2hfY2VydGluZm8oZGF0YSwgaSwgIlN1YmplY3QiLCBidWZwKTsKKyAgICBYNTA5X05BTUVfcHJpbnRfZXgobWVtLCBYNTA5X2dldF9zdWJqZWN0X25hbWUoeCksIDAsIFhOX0ZMQUdfT05FTElORSk7CisgICAgcHVzaF9jZXJ0aW5mbygiU3ViamVjdCIsIGkpOwogCi0gICAgKHZvaWQpeDUwOV9uYW1lX29uZWxpbmUoWDUwOV9nZXRfaXNzdWVyX25hbWUoeCksIGJ1ZnAsIENFUlRCVUZGRVJTSVpFKTsKLSAgICBpbmZvZihkYXRhLCAiICAgSXNzdWVyOiAlc1xuIiwgYnVmcCk7Ci0gICAgQ3VybF9zc2xfcHVzaF9jZXJ0aW5mbyhkYXRhLCBpLCAiSXNzdWVyIiwgYnVmcCk7CisgICAgWDUwOV9OQU1FX3ByaW50X2V4KG1lbSwgWDUwOV9nZXRfaXNzdWVyX25hbWUoeCksIDAsIFhOX0ZMQUdfT05FTElORSk7CisgICAgcHVzaF9jZXJ0aW5mbygiSXNzdWVyIiwgaSk7CiAKLSAgICB2YWx1ZSA9IFg1MDlfZ2V0X3ZlcnNpb24oeCk7Ci0gICAgaW5mb2YoZGF0YSwgIiAgIFZlcnNpb246ICVsdSAoMHglbHgpXG4iLCB2YWx1ZSsxLCB2YWx1ZSk7Ci0gICAgc25wcmludGYoYnVmcCwgQ0VSVEJVRkZFUlNJWkUsICIlbHgiLCB2YWx1ZSk7Ci0gICAgQ3VybF9zc2xfcHVzaF9jZXJ0aW5mbyhkYXRhLCBpLCAiVmVyc2lvbiIsIGJ1ZnApOyAvKiBoZXggKi8KKyAgICBCSU9fcHJpbnRmKG1lbSwgIiVseCIsIFg1MDlfZ2V0X3ZlcnNpb24oeCkpOworICAgIHB1c2hfY2VydGluZm8oIlZlcnNpb24iLCBpKTsKIAotICAgIG51bT1YNTA5X2dldF9zZXJpYWxOdW1iZXIoeCk7CisgICAgbnVtID0gWDUwOV9nZXRfc2VyaWFsTnVtYmVyKHgpOworICAgIGlmKG51bS0+dHlwZSA9PSBWX0FTTjFfTkVHX0lOVEVHRVIpCisgICAgICBCSU9fcHV0cyhtZW0sICItIik7CisgICAgZm9yKGogPSAwOyBqIDwgbnVtLT5sZW5ndGg7IGorKykKKyAgICAgIEJJT19wcmludGYobWVtLCAiJTAyeCIsIG51bS0+ZGF0YVtqXSk7CisgICAgcHVzaF9jZXJ0aW5mbygiU2VyaWFsIE51bWJlciIsIGkpOworCisjaWYgZGVmaW5lZChIQVZFX1g1MDlfR0VUMF9TSUdOQVRVUkUpICYmIGRlZmluZWQoSEFWRV9YNTA5X0dFVDBfRVhURU5TSU9OUykKICAgICB7Ci0gICAgICBpbnQgbGVmdCA9IENFUlRCVUZGRVJTSVpFOworICAgICAgWDUwOV9BTEdPUiAqcGFsZyA9IE5VTEw7CisgICAgICBBU04xX1NUUklORyAqYSA9IEFTTjFfU1RSSU5HX25ldygpOworICAgICAgaWYoYSkgeworICAgICAgICBYNTA5X2dldDBfc2lnbmF0dXJlKCZwc2lnLCAmcGFsZywgeCk7CisgICAgICAgIFg1MDlfc2lnbmF0dXJlX3ByaW50KG1lbSwgcGFsZywgYSk7CisgICAgICAgIEFTTjFfU1RSSU5HX2ZyZWUoYSk7CiAKLSAgICAgIHB0ciA9IGJ1ZnA7Ci0gICAgICBpZihudW0tPnR5cGUgPT0gVl9BU04xX05FR19JTlRFR0VSKSB7Ci0gICAgICAgICpwdHIrKz0nLSc7Ci0gICAgICAgIGxlZnQtLTsKKyAgICAgICAgaWYocGFsZykgeworICAgICAgICAgIGkyYV9BU04xX09CSkVDVChtZW0sIHBhbGctPmFsZ29yaXRobSk7CisgICAgICAgICAgcHVzaF9jZXJ0aW5mbygiUHVibGljIEtleSBBbGdvcml0aG0iLCBpKTsKKyAgICAgICAgfQogICAgICAgfQotCi0gICAgICBmb3Ioaj0wOyAoajxudW0tPmxlbmd0aCkgJiYgKGxlZnQ+PTMpOyBqKyspIHsKLSAgICAgICAgc25wcmludGYocHRyLCBsZWZ0LCAiJTAyeCIsIG51bS0+ZGF0YVtqXSk7Ci0gICAgICAgIHB0ciArPSAyOwotICAgICAgICBsZWZ0IC09IDI7Ci0gICAgICB9Ci0gICAgICBpZihudW0tPmxlbmd0aCkKLSAgICAgICAgaW5mb2YoZGF0YSwgIiAgIFNlcmlhbCBOdW1iZXI6ICVzXG4iLCBidWZwKTsKLSAgICAgIGVsc2UKLSAgICAgICAgYnVmcFswXT0wOworICAgICAgWDUwOVYzX2V4dChkYXRhLCBpLCBYNTA5X2dldDBfZXh0ZW5zaW9ucyh4KSk7CiAgICAgfQotICAgIGlmKGJ1ZnBbMF0pCi0gICAgICBDdXJsX3NzbF9wdXNoX2NlcnRpbmZvKGRhdGEsIGksICJTZXJpYWwgTnVtYmVyIiwgYnVmcCk7IC8qIGhleCAqLworI2Vsc2UKKyAgICB7CisgICAgICAvKiBiZWZvcmUgT3BlblNTTCAxLjAuMiAqLworICAgICAgWDUwOV9DSU5GICpjaW5mID0geC0+Y2VydF9pbmZvOwogCi0gICAgY2luZiA9IHgtPmNlcnRfaW5mbzsKKyAgICAgIGkyYV9BU04xX09CSkVDVChtZW0sIGNpbmYtPnNpZ25hdHVyZS0+YWxnb3JpdGhtKTsKKyAgICAgIHB1c2hfY2VydGluZm8oIlNpZ25hdHVyZSBBbGdvcml0aG0iLCBpKTsKIAotICAgIGogPSBhc24xX29iamVjdF9kdW1wKGNpbmYtPnNpZ25hdHVyZS0+YWxnb3JpdGhtLCBidWZwLCBDRVJUQlVGRkVSU0laRSk7Ci0gICAgaWYoIWopIHsKLSAgICAgIGluZm9mKGRhdGEsICIgICBTaWduYXR1cmUgQWxnb3JpdGhtOiAlc1xuIiwgYnVmcCk7Ci0gICAgICBDdXJsX3NzbF9wdXNoX2NlcnRpbmZvKGRhdGEsIGksICJTaWduYXR1cmUgQWxnb3JpdGhtIiwgYnVmcCk7CisgICAgICBpMmFfQVNOMV9PQkpFQ1QobWVtLCBjaW5mLT5rZXktPmFsZ29yLT5hbGdvcml0aG0pOworICAgICAgcHVzaF9jZXJ0aW5mbygiUHVibGljIEtleSBBbGdvcml0aG0iLCBpKTsKKworICAgICAgWDUwOVYzX2V4dChkYXRhLCBpLCBjaW5mLT5leHRlbnNpb25zKTsKKworICAgICAgcHNpZyA9IHgtPnNpZ25hdHVyZTsKICAgICB9CisjZW5kaWYKIAotICAgIGNlcnRkYXRlID0gWDUwOV9nZXRfbm90QmVmb3JlKHgpOwotICAgIGFzbjFfb3V0cHV0KGNlcnRkYXRlLCBidWZwLCBDRVJUQlVGRkVSU0laRSk7Ci0gICAgaW5mb2YoZGF0YSwgIiAgIFN0YXJ0IGRhdGU6ICVzXG4iLCBidWZwKTsKLSAgICBDdXJsX3NzbF9wdXNoX2NlcnRpbmZvKGRhdGEsIGksICJTdGFydCBkYXRlIiwgYnVmcCk7CisgICAgQVNOMV9USU1FX3ByaW50KG1lbSwgWDUwOV9nZXRfbm90QmVmb3JlKHgpKTsKKyAgICBwdXNoX2NlcnRpbmZvKCJTdGFydCBkYXRlIiwgaSk7CiAKLSAgICBjZXJ0ZGF0ZSA9IFg1MDlfZ2V0X25vdEFmdGVyKHgpOwotICAgIGFzbjFfb3V0cHV0KGNlcnRkYXRlLCBidWZwLCBDRVJUQlVGRkVSU0laRSk7Ci0gICAgaW5mb2YoZGF0YSwgIiAgIEV4cGlyZSBkYXRlOiAlc1xuIiwgYnVmcCk7Ci0gICAgQ3VybF9zc2xfcHVzaF9jZXJ0aW5mbyhkYXRhLCBpLCAiRXhwaXJlIGRhdGUiLCBidWZwKTsKLQotICAgIGogPSBhc24xX29iamVjdF9kdW1wKGNpbmYtPmtleS0+YWxnb3ItPmFsZ29yaXRobSwgYnVmcCwgQ0VSVEJVRkZFUlNJWkUpOwotICAgIGlmKCFqKSB7Ci0gICAgICBpbmZvZihkYXRhLCAiICAgUHVibGljIEtleSBBbGdvcml0aG06ICVzXG4iLCBidWZwKTsKLSAgICAgIEN1cmxfc3NsX3B1c2hfY2VydGluZm8oZGF0YSwgaSwgIlB1YmxpYyBLZXkgQWxnb3JpdGhtIiwgYnVmcCk7Ci0gICAgfQorICAgIEFTTjFfVElNRV9wcmludChtZW0sIFg1MDlfZ2V0X25vdEFmdGVyKHgpKTsKKyAgICBwdXNoX2NlcnRpbmZvKCJFeHBpcmUgZGF0ZSIsIGkpOwogCiAgICAgcHVia2V5ID0gWDUwOV9nZXRfcHVia2V5KHgpOwogICAgIGlmKCFwdWJrZXkpCiAgICAgICBpbmZvZihkYXRhLCAiICAgVW5hYmxlIHRvIGxvYWQgcHVibGljIGtleVxuIik7CiAgICAgZWxzZSB7Ci0gICAgICBzd2l0Y2gocHVia2V5LT50eXBlKSB7CisgICAgICBpbnQgcGt0eXBlOworI2lmZGVmIEhBVkVfT1BBUVVFX0VWUF9QS0VZCisgICAgICBwa3R5cGUgPSBFVlBfUEtFWV9pZChwdWJrZXkpOworI2Vsc2UKKyAgICAgIHBrdHlwZSA9IHB1YmtleS0+dHlwZTsKKyNlbmRpZgorICAgICAgc3dpdGNoKHBrdHlwZSkgewogICAgICAgY2FzZSBFVlBfUEtFWV9SU0E6Ci0gICAgICAgIGluZm9mKGRhdGEsICAiICAgUlNBIFB1YmxpYyBLZXkgKCVkIGJpdHMpXG4iLAotICAgICAgICAgICAgICBCTl9udW1fYml0cyhwdWJrZXktPnBrZXkucnNhLT5uKSk7Ci0gICAgICAgIHNucHJpbnRmKGJ1ZnAsIENFUlRCVUZGRVJTSVpFLCAiJWQiLCBCTl9udW1fYml0cyhwdWJrZXktPnBrZXkucnNhLT5uKSk7Ci0gICAgICAgIEN1cmxfc3NsX3B1c2hfY2VydGluZm8oZGF0YSwgaSwgIlJTQSBQdWJsaWMgS2V5IiwgYnVmcCk7CisgICAgICB7CisgICAgICAgIFJTQSAqcnNhOworI2lmZGVmIEhBVkVfT1BBUVVFX0VWUF9QS0VZCisgICAgICAgIHJzYSA9IEVWUF9QS0VZX2dldDBfUlNBKHB1YmtleSk7CisjZWxzZQorICAgICAgICByc2EgPSBwdWJrZXktPnBrZXkucnNhOworI2VuZGlmCiAKKyNpZmRlZiBIQVZFX09QQVFVRV9SU0FfRFNBX0RICisgICAgICAgIHsKKyAgICAgICAgICBCSUdOVU0gKm47CisgICAgICAgICAgQklHTlVNICplOworICAgICAgICAgIEJJR05VTSAqZDsKKyAgICAgICAgICBCSUdOVU0gKnA7CisgICAgICAgICAgQklHTlVNICpxOworICAgICAgICAgIEJJR05VTSAqZG1wMTsKKyAgICAgICAgICBCSUdOVU0gKmRtcTE7CisgICAgICAgICAgQklHTlVNICppcW1wOworCisgICAgICAgICAgUlNBX2dldDBfa2V5KHJzYSwgJm4sICZlLCAmZCk7CisgICAgICAgICAgUlNBX2dldDBfZmFjdG9ycyhyc2EsICZwLCAmcSk7CisgICAgICAgICAgUlNBX2dldDBfY3J0X3BhcmFtcyhyc2EsICZkbXAxLCAmZG1xMSwgJmlxbXApOworICAgICAgICAgIEJOX3ByaW50KG1lbSwgbik7CisgICAgICAgICAgcHVzaF9jZXJ0aW5mbygiUlNBIFB1YmxpYyBLZXkiLCBpKTsKKyAgICAgICAgICBwcmludF9wdWJrZXlfQk4ocnNhLCBuLCBpKTsKKyAgICAgICAgICBwcmludF9wdWJrZXlfQk4ocnNhLCBlLCBpKTsKKyAgICAgICAgICBwcmludF9wdWJrZXlfQk4ocnNhLCBkLCBpKTsKKyAgICAgICAgICBwcmludF9wdWJrZXlfQk4ocnNhLCBwLCBpKTsKKyAgICAgICAgICBwcmludF9wdWJrZXlfQk4ocnNhLCBxLCBpKTsKKyAgICAgICAgICBwcmludF9wdWJrZXlfQk4ocnNhLCBkbXAxLCBpKTsKKyAgICAgICAgICBwcmludF9wdWJrZXlfQk4ocnNhLCBkbXExLCBpKTsKKyAgICAgICAgICBwcmludF9wdWJrZXlfQk4ocnNhLCBpcW1wLCBpKTsKKyAgICAgICAgfQorI2Vsc2UKKyAgICAgICAgQklPX3ByaW50ZihtZW0sICIlZCIsIEJOX251bV9iaXRzKHJzYS0+bikpOworICAgICAgICBwdXNoX2NlcnRpbmZvKCJSU0EgUHVibGljIEtleSIsIGkpOwogICAgICAgICBwcmludF9wdWJrZXlfQk4ocnNhLCBuLCBpKTsKICAgICAgICAgcHJpbnRfcHVia2V5X0JOKHJzYSwgZSwgaSk7CiAgICAgICAgIHByaW50X3B1YmtleV9CTihyc2EsIGQsIGkpOwpAQCAtMjUyMCwyMCArMjQ3Nyw3NSBAQAogICAgICAgICBwcmludF9wdWJrZXlfQk4ocnNhLCBkbXAxLCBpKTsKICAgICAgICAgcHJpbnRfcHVia2V5X0JOKHJzYSwgZG1xMSwgaSk7CiAgICAgICAgIHByaW50X3B1YmtleV9CTihyc2EsIGlxbXAsIGkpOworI2VuZGlmCisKICAgICAgICAgYnJlYWs7CisgICAgICB9CiAgICAgICBjYXNlIEVWUF9QS0VZX0RTQToKKyAgICAgIHsKKyAgICAgICAgRFNBICpkc2E7CisjaWZkZWYgSEFWRV9PUEFRVUVfRVZQX1BLRVkKKyAgICAgICAgZHNhID0gRVZQX1BLRVlfZ2V0MF9EU0EocHVia2V5KTsKKyNlbHNlCisgICAgICAgIGRzYSA9IHB1YmtleS0+cGtleS5kc2E7CisjZW5kaWYKKyNpZmRlZiBIQVZFX09QQVFVRV9SU0FfRFNBX0RICisgICAgICAgIHsKKyAgICAgICAgICBCSUdOVU0gKnA7CisgICAgICAgICAgQklHTlVNICpxOworICAgICAgICAgIEJJR05VTSAqZzsKKyAgICAgICAgICBCSUdOVU0gKnByaXZfa2V5OworICAgICAgICAgIEJJR05VTSAqcHViX2tleTsKKworICAgICAgICAgIERTQV9nZXQwX3BxZyhkc2EsICZwLCAmcSwgJmcpOworICAgICAgICAgIERTQV9nZXQwX2tleShkc2EsICZwdWJfa2V5LCAmcHJpdl9rZXkpOworCisgICAgICAgICAgcHJpbnRfcHVia2V5X0JOKGRzYSwgcCwgaSk7CisgICAgICAgICAgcHJpbnRfcHVia2V5X0JOKGRzYSwgcSwgaSk7CisgICAgICAgICAgcHJpbnRfcHVia2V5X0JOKGRzYSwgZywgaSk7CisgICAgICAgICAgcHJpbnRfcHVia2V5X0JOKGRzYSwgcHJpdl9rZXksIGkpOworICAgICAgICAgIHByaW50X3B1YmtleV9CTihkc2EsIHB1Yl9rZXksIGkpOworICAgICAgICB9CisjZWxzZQogICAgICAgICBwcmludF9wdWJrZXlfQk4oZHNhLCBwLCBpKTsKICAgICAgICAgcHJpbnRfcHVia2V5X0JOKGRzYSwgcSwgaSk7CiAgICAgICAgIHByaW50X3B1YmtleV9CTihkc2EsIGcsIGkpOwogICAgICAgICBwcmludF9wdWJrZXlfQk4oZHNhLCBwcml2X2tleSwgaSk7CiAgICAgICAgIHByaW50X3B1YmtleV9CTihkc2EsIHB1Yl9rZXksIGkpOworI2VuZGlmCiAgICAgICAgIGJyZWFrOworICAgICAgfQogICAgICAgY2FzZSBFVlBfUEtFWV9ESDoKKyAgICAgIHsKKyAgICAgICAgREggKmRoOworI2lmZGVmIEhBVkVfT1BBUVVFX0VWUF9QS0VZCisgICAgICAgIGRoID0gRVZQX1BLRVlfZ2V0MF9ESChwdWJrZXkpOworI2Vsc2UKKyAgICAgICAgZGggPSBwdWJrZXktPnBrZXkuZGg7CisjZW5kaWYKKyNpZmRlZiBIQVZFX09QQVFVRV9SU0FfRFNBX0RICisgICAgICAgIHsKKyAgICAgICAgICBCSUdOVU0gKnA7CisgICAgICAgICAgQklHTlVNICpxOworICAgICAgICAgIEJJR05VTSAqZzsKKyAgICAgICAgICBCSUdOVU0gKnByaXZfa2V5OworICAgICAgICAgIEJJR05VTSAqcHViX2tleTsKKyAgICAgICAgICBESF9nZXQwX3BxZyhkaCwgJnAsICZxLCAmZyk7CisgICAgICAgICAgREhfZ2V0MF9rZXkoZGgsICZwdWJfa2V5LCAmcHJpdl9rZXkpOworICAgICAgICAgIHByaW50X3B1YmtleV9CTihkaCwgcCwgaSk7CisgICAgICAgICAgcHJpbnRfcHVia2V5X0JOKGRoLCBxLCBpKTsKKyAgICAgICAgICBwcmludF9wdWJrZXlfQk4oZGgsIGcsIGkpOworICAgICAgICAgIHByaW50X3B1YmtleV9CTihkaCwgcHJpdl9rZXksIGkpOworICAgICAgICAgIHByaW50X3B1YmtleV9CTihkaCwgcHViX2tleSwgaSk7CisgICAgICAgfQorI2Vsc2UKICAgICAgICAgcHJpbnRfcHVia2V5X0JOKGRoLCBwLCBpKTsKICAgICAgICAgcHJpbnRfcHVia2V5X0JOKGRoLCBnLCBpKTsKICAgICAgICAgcHJpbnRfcHVia2V5X0JOKGRoLCBwcml2X2tleSwgaSk7CiAgICAgICAgIHByaW50X3B1YmtleV9CTihkaCwgcHViX2tleSwgaSk7CisjZW5kaWYKICAgICAgICAgYnJlYWs7CisgICAgICB9CiAjaWYgMAogICAgICAgY2FzZSBFVlBfUEtFWV9FQzogLyogc3ltYm9sIG5vdCBwcmVzZW50IGluIE9wZW5TU0wgMC45LjYgKi8KICAgICAgICAgLyogbGVmdCBUT0RPICovCkBAIC0yNTQzLDE0ICsyNTU1LDE3IEBACiAgICAgICBFVlBfUEtFWV9mcmVlKHB1YmtleSk7CiAgICAgfQogCi0gICAgWDUwOVYzX2V4dChkYXRhLCBpLCBjaW5mLT5leHRlbnNpb25zKTsKKyAgICBpZihwc2lnKSB7CisgICAgICBmb3IoaiA9IDA7IGogPCBwc2lnLT5sZW5ndGg7IGorKykKKyAgICAgICAgQklPX3ByaW50ZihtZW0sICIlMDJ4OiIsIHBzaWctPmRhdGFbal0pOworICAgICAgcHVzaF9jZXJ0aW5mbygiU2lnbmF0dXJlIiwgaSk7CisgICAgfQogCi0gICAgWDUwOV9zaWduYXR1cmUoZGF0YSwgaSwgeC0+c2lnbmF0dXJlKTsKLQotICAgIGR1bXBjZXJ0KGRhdGEsIHgsIGkpOworICAgIFBFTV93cml0ZV9iaW9fWDUwOShtZW0sIHgpOworICAgIHB1c2hfY2VydGluZm8oIkNlcnQiLCBpKTsKICAgfQogCi0gIGZyZWUoYnVmcCk7CisgIEJJT19mcmVlKG1lbSk7CiAKICAgcmV0dXJuIENVUkxFX09LOwogfQpAQCAtMjU1OSw3ICsyNTc0LDggQEAKICAqIEhlYXZpbHkgbW9kaWZpZWQgZnJvbToKICAqIGh0dHBzOi8vd3d3Lm93YXNwLm9yZy9pbmRleC5waHAvQ2VydGlmaWNhdGVfYW5kX1B1YmxpY19LZXlfUGlubmluZyNPcGVuU1NMCiAgKi8KLXN0YXRpYyBDVVJMY29kZSBwa3BfcGluX3BlZXJfcHVia2V5KFg1MDkqIGNlcnQsIGNvbnN0IGNoYXIgKnBpbm5lZHB1YmtleSkKK3N0YXRpYyBDVVJMY29kZSBwa3BfcGluX3BlZXJfcHVia2V5KHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLCBYNTA5KiBjZXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGlubmVkcHVia2V5KQogewogICAvKiBTY3JhdGNoICovCiAgIGludCBsZW4xID0gMCwgbGVuMiA9IDA7CkBAIC0yNjA0LDcgKzI2MjAsNyBAQAogICAgIC8qIEVuZCBHeXJhdGlvbnMgKi8KIAogICAgIC8qIFRoZSBvbmUgZ29vZCBleGl0IHBvaW50ICovCi0gICAgcmVzdWx0ID0gQ3VybF9waW5fcGVlcl9wdWJrZXkocGlubmVkcHVia2V5LCBidWZmMSwgbGVuMSk7CisgICAgcmVzdWx0ID0gQ3VybF9waW5fcGVlcl9wdWJrZXkoZGF0YSwgcGlubmVkcHVia2V5LCBidWZmMSwgbGVuMSk7CiAgIH0gd2hpbGUoMCk7CiAKICAgLyogaHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvZG9jcy9jcnlwdG8vYnVmZmVyLmh0bWwgKi8KQEAgLTI2MjgsMTMgKzI2NDQsMTMgQEAKIHsKICAgQ1VSTGNvZGUgcmVzdWx0ID0gQ1VSTEVfT0s7CiAgIGludCByYzsKLSAgbG9uZyBsZXJyOwotICBBU04xX1RJTUUgKmNlcnRkYXRlOworICBsb25nIGxlcnIsIGxlbjsKICAgc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEgPSBjb25uLT5kYXRhOwogICBYNTA5ICppc3N1ZXI7CiAgIEZJTEUgKmZwOwogICBjaGFyICpidWZmZXIgPSBkYXRhLT5zdGF0ZS5idWZmZXI7CiAgIGNvbnN0IGNoYXIgKnB0cjsKKyAgQklPICptZW0gPSBCSU9fbmV3KEJJT19zX21lbSgpKTsKIAogICBpZihkYXRhLT5zZXQuc3NsLmNlcnRpbmZvKQogICAgIC8qIHdlJ3ZlIGJlZW4gYXNrZWQgdG8gZ2F0aGVyIGNlcnRpZmljYXRlIGluZm8hICovCkBAIC0yNjQyLDggKzI2NTgsMTAgQEAKIAogICBjb25uc3NsLT5zZXJ2ZXJfY2VydCA9IFNTTF9nZXRfcGVlcl9jZXJ0aWZpY2F0ZShjb25uc3NsLT5oYW5kbGUpOwogICBpZighY29ubnNzbC0+c2VydmVyX2NlcnQpIHsKLSAgICBpZihzdHJpY3QpCi0gICAgICBmYWlsZihkYXRhLCAiU1NMOiBjb3VsZG4ndCBnZXQgcGVlciBjZXJ0aWZpY2F0ZSEiKTsKKyAgICBpZighc3RyaWN0KQorICAgICAgcmV0dXJuIENVUkxFX09LOworCisgICAgZmFpbGYoZGF0YSwgIlNTTDogY291bGRuJ3QgZ2V0IHBlZXIgY2VydGlmaWNhdGUhIik7CiAgICAgcmV0dXJuIENVUkxFX1BFRVJfRkFJTEVEX1ZFUklGSUNBVElPTjsKICAgfQogCkBAIC0yNjUxLDE1ICsyNjY5LDE5IEBACiAKICAgcmMgPSB4NTA5X25hbWVfb25lbGluZShYNTA5X2dldF9zdWJqZWN0X25hbWUoY29ubnNzbC0+c2VydmVyX2NlcnQpLAogICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlciwgQlVGU0laRSk7Ci0gIGluZm9mKGRhdGEsICJcdCBzdWJqZWN0OiAlc1xuIiwgcmM/IltOT05FXSI6YnVmZmVyKTsKKyAgaW5mb2YoZGF0YSwgIiBzdWJqZWN0OiAlc1xuIiwgcmM/IltOT05FXSI6YnVmZmVyKTsKIAotICBjZXJ0ZGF0ZSA9IFg1MDlfZ2V0X25vdEJlZm9yZShjb25uc3NsLT5zZXJ2ZXJfY2VydCk7Ci0gIGFzbjFfb3V0cHV0KGNlcnRkYXRlLCBidWZmZXIsIEJVRlNJWkUpOwotICBpbmZvZihkYXRhLCAiXHQgc3RhcnQgZGF0ZTogJXNcbiIsIGJ1ZmZlcik7CisgIEFTTjFfVElNRV9wcmludChtZW0sIFg1MDlfZ2V0X25vdEJlZm9yZShjb25uc3NsLT5zZXJ2ZXJfY2VydCkpOworICBsZW4gPSBCSU9fZ2V0X21lbV9kYXRhKG1lbSwgKGNoYXIgKiopICZwdHIpOworICBpbmZvZihkYXRhLCAiIHN0YXJ0IGRhdGU6ICUuKnNcbiIsIGxlbiwgcHRyKTsKKyAgcmMgPSBCSU9fcmVzZXQobWVtKTsKIAotICBjZXJ0ZGF0ZSA9IFg1MDlfZ2V0X25vdEFmdGVyKGNvbm5zc2wtPnNlcnZlcl9jZXJ0KTsKLSAgYXNuMV9vdXRwdXQoY2VydGRhdGUsIGJ1ZmZlciwgQlVGU0laRSk7Ci0gIGluZm9mKGRhdGEsICJcdCBleHBpcmUgZGF0ZTogJXNcbiIsIGJ1ZmZlcik7CisgIEFTTjFfVElNRV9wcmludChtZW0sIFg1MDlfZ2V0X25vdEFmdGVyKGNvbm5zc2wtPnNlcnZlcl9jZXJ0KSk7CisgIGxlbiA9IEJJT19nZXRfbWVtX2RhdGEobWVtLCAoY2hhciAqKikgJnB0cik7CisgIGluZm9mKGRhdGEsICIgZXhwaXJlIGRhdGU6ICUuKnNcbiIsIGxlbiwgcHRyKTsKKyAgcmMgPSBCSU9fcmVzZXQobWVtKTsKKworICBCSU9fZnJlZShtZW0pOwogCiAgIGlmKGRhdGEtPnNldC5zc2wudmVyaWZ5aG9zdCkgewogICAgIHJlc3VsdCA9IHZlcmlmeWhvc3QoY29ubiwgY29ubnNzbC0+c2VydmVyX2NlcnQpOwpAQCAtMjY3OCw3ICsyNzAwLDcgQEAKICAgICByZXN1bHQgPSBDVVJMRV9TU0xfQ09OTkVDVF9FUlJPUjsKICAgfQogICBlbHNlIHsKLSAgICBpbmZvZihkYXRhLCAiXHQgaXNzdWVyOiAlc1xuIiwgYnVmZmVyKTsKKyAgICBpbmZvZihkYXRhLCAiIGlzc3VlcjogJXNcbiIsIGJ1ZmZlcik7CiAKICAgICAvKiBXZSBjb3VsZCBkbyBhbGwgc29ydHMgb2YgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uIHN0dWZmIGhlcmUgYmVmb3JlCiAgICAgICAgZGVhbGxvY2F0aW5nIHRoZSBjZXJ0aWZpY2F0ZS4gKi8KQEAgLTI3MTgsNyArMjc0MCw3IEBACiAgICAgICAgIHJldHVybiBDVVJMRV9TU0xfSVNTVUVSX0VSUk9SOwogICAgICAgfQogCi0gICAgICBpbmZvZihkYXRhLCAiXHQgU1NMIGNlcnRpZmljYXRlIGlzc3VlciBjaGVjayBvayAoJXMpXG4iLAorICAgICAgaW5mb2YoZGF0YSwgIiBTU0wgY2VydGlmaWNhdGUgaXNzdWVyIGNoZWNrIG9rICglcylcbiIsCiAgICAgICAgICAgICBkYXRhLT5zZXQuc3RyW1NUUklOR19TU0xfSVNTVUVSQ0VSVF0pOwogICAgICAgWDUwOV9mcmVlKGlzc3Vlcik7CiAgICAgfQpAQCAtMjczNiwxNiArMjc1OCwxNiBAQAogICAgICAgICByZXN1bHQgPSBDVVJMRV9QRUVSX0ZBSUxFRF9WRVJJRklDQVRJT047CiAgICAgICB9CiAgICAgICBlbHNlCi0gICAgICAgIGluZm9mKGRhdGEsICJcdCBTU0wgY2VydGlmaWNhdGUgdmVyaWZ5IHJlc3VsdDogJXMgKCVsZCksIgorICAgICAgICBpbmZvZihkYXRhLCAiIFNTTCBjZXJ0aWZpY2F0ZSB2ZXJpZnkgcmVzdWx0OiAlcyAoJWxkKSwiCiAgICAgICAgICAgICAgICIgY29udGludWluZyBhbnl3YXkuXG4iLAogICAgICAgICAgICAgICBYNTA5X3ZlcmlmeV9jZXJ0X2Vycm9yX3N0cmluZyhsZXJyKSwgbGVycik7CiAgICAgfQogICAgIGVsc2UKLSAgICAgIGluZm9mKGRhdGEsICJcdCBTU0wgY2VydGlmaWNhdGUgdmVyaWZ5IG9rLlxuIik7CisgICAgICBpbmZvZihkYXRhLCAiIFNTTCBjZXJ0aWZpY2F0ZSB2ZXJpZnkgb2suXG4iKTsKICAgfQogCiAjaWYgKE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPj0gMHgwMDkwODA4ZkwpICYmICFkZWZpbmVkKE9QRU5TU0xfTk9fVExTRVhUKSAmJiBcCi0gICAgIWRlZmluZWQoT1BFTlNTTF9JU19CT1JJTkdTU0wpCisgICAgIWRlZmluZWQoT1BFTlNTTF9OT19PQ1NQKQogICBpZihkYXRhLT5zZXQuc3NsLnZlcmlmeXN0YXR1cykgewogICAgIHJlc3VsdCA9IHZlcmlmeXN0YXR1cyhjb25uLCBjb25uc3NsKTsKICAgICBpZihyZXN1bHQpIHsKQEAgLTI3NjIsNyArMjc4NCw3IEBACiAKICAgcHRyID0gZGF0YS0+c2V0LnN0cltTVFJJTkdfU1NMX1BJTk5FRFBVQkxJQ0tFWV07CiAgIGlmKCFyZXN1bHQgJiYgcHRyKSB7Ci0gICAgcmVzdWx0ID0gcGtwX3Bpbl9wZWVyX3B1YmtleShjb25uc3NsLT5zZXJ2ZXJfY2VydCwgcHRyKTsKKyAgICByZXN1bHQgPSBwa3BfcGluX3BlZXJfcHVia2V5KGRhdGEsIGNvbm5zc2wtPnNlcnZlcl9jZXJ0LCBwdHIpOwogICAgIGlmKHJlc3VsdCkKICAgICAgIGZhaWxmKGRhdGEsICJTU0w6IHB1YmxpYyBrZXkgZG9lcyBub3QgbWF0Y2ggcGlubmVkIHB1YmxpYyBrZXkhIik7CiAgIH0KQEAgLTMwODAsODIgKzMxMDIsNDEgQEAKIAogc2l6ZV90IEN1cmxfb3NzbF92ZXJzaW9uKGNoYXIgKmJ1ZmZlciwgc2l6ZV90IHNpemUpCiB7Ci0jaWZkZWYgWUFTU0xfVkVSU0lPTgotICAvKiB5YXNzbCBwcm92aWRlcyBhbiBPcGVuU1NMIEFQSSBjb21wYXRpYmlsaXR5IGxheWVyIHNvIGl0IGxvb2tzIGlkZW50aWNhbAotICAgICB0byBPcGVuU1NMIGluIGFsbCBvdGhlciBhc3BlY3RzICovCi0gIHJldHVybiBzbnByaW50ZihidWZmZXIsIHNpemUsICJ5YXNzbC8lcyIsIFlBU1NMX1ZFUlNJT04pOwotI2Vsc2UgLyogWUFTU0xfVkVSU0lPTiAqLwogI2lmZGVmIE9QRU5TU0xfSVNfQk9SSU5HU1NMCi0gIHJldHVybiBzbnByaW50ZihidWZmZXIsIHNpemUsICJCb3JpbmdTU0wiKTsKKyAgcmV0dXJuIHNucHJpbnRmKGJ1ZmZlciwgc2l6ZSwgT1NTTF9QQUNLQUdFKTsKICNlbHNlIC8qIE9QRU5TU0xfSVNfQk9SSU5HU1NMICovCi0KLSNpZihPUEVOU1NMX1ZFUlNJT05fTlVNQkVSID49IDB4OTA1MDAwKQotICB7Ci0gICAgY2hhciBzdWJbM107Ci0gICAgdW5zaWduZWQgbG9uZyBzc2xlYXlfdmFsdWU7Ci0gICAgc3ViWzJdPSdcMCc7Ci0gICAgc3ViWzFdPSdcMCc7Ci0gICAgc3NsZWF5X3ZhbHVlPVNTTGVheSgpOwotICAgIGlmKHNzbGVheV92YWx1ZSA8IDB4OTA2MDAwKSB7Ci0gICAgICBzc2xlYXlfdmFsdWU9U1NMRUFZX1ZFUlNJT05fTlVNQkVSOwotICAgICAgc3ViWzBdPSdcMCc7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgaWYoc3NsZWF5X3ZhbHVlJjB4ZmYwKSB7Ci0gICAgICAgIGludCBtaW5vcl92ZXIgPSAoc3NsZWF5X3ZhbHVlID4+IDQpICYgMHhmZjsKLSAgICAgICAgaWYobWlub3JfdmVyID4gMjYpIHsKLSAgICAgICAgICAvKiBoYW5kbGUgZXh0ZW5kZWQgdmVyc2lvbiBpbnRyb2R1Y2VkIGZvciAwLjkuOHphICovCi0gICAgICAgICAgc3ViWzFdID0gKGNoYXIpICgobWlub3JfdmVyIC0gMSkgJSAyNiArICdhJyArIDEpOwotICAgICAgICAgIHN1YlswXSA9ICd6JzsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICBzdWJbMF09KGNoYXIpKCgoc3NsZWF5X3ZhbHVlPj40KSYweGZmKSArICdhJyAtMSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgICAgc3ViWzBdPSdcMCc7Ci0gICAgfQotCi0gICAgcmV0dXJuIHNucHJpbnRmKGJ1ZmZlciwgc2l6ZSwgIiVzLyVseC4lbHguJWx4JXMiLAotI2lmZGVmIExJQlJFU1NMX1ZFUlNJT05fTlVNQkVSCi0gICAgICAgICAgICAgICAgICAgICJMaWJyZVNTTCIKLSNlbHNlCi0gICAgICAgICAgICAgICAgICAgICJPcGVuU1NMIgotI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgICwgKHNzbGVheV92YWx1ZT4+MjgpJjB4ZiwKLSAgICAgICAgICAgICAgICAgICAgKHNzbGVheV92YWx1ZT4+MjApJjB4ZmYsCi0gICAgICAgICAgICAgICAgICAgIChzc2xlYXlfdmFsdWU+PjEyKSYweGZmLAotICAgICAgICAgICAgICAgICAgICBzdWIpOworICBjaGFyIHN1YlszXTsKKyAgdW5zaWduZWQgbG9uZyBzc2xlYXlfdmFsdWU7CisgIHN1YlsyXT0nXDAnOworICBzdWJbMV09J1wwJzsKKyAgc3NsZWF5X3ZhbHVlPVNTTGVheSgpOworICBpZihzc2xlYXlfdmFsdWUgPCAweDkwNjAwMCkgeworICAgIHNzbGVheV92YWx1ZT1TU0xFQVlfVkVSU0lPTl9OVU1CRVI7CisgICAgc3ViWzBdPSdcMCc7CiAgIH0KLQotI2Vsc2UgLyogT1BFTlNTTF9WRVJTSU9OX05VTUJFUiBpcyBsZXNzIHRoYW4gMC45LjUgKi8KLQotI2lmKE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPj0gMHg5MDAwMDApCi0gIHJldHVybiBzbnByaW50ZihidWZmZXIsIHNpemUsICJPcGVuU1NMLyVseC4lbHguJWx4IiwKLSAgICAgICAgICAgICAgICAgIChPUEVOU1NMX1ZFUlNJT05fTlVNQkVSPj4yOCkmMHhmZiwKLSAgICAgICAgICAgICAgICAgIChPUEVOU1NMX1ZFUlNJT05fTlVNQkVSPj4yMCkmMHhmZiwKLSAgICAgICAgICAgICAgICAgIChPUEVOU1NMX1ZFUlNJT05fTlVNQkVSPj4xMikmMHhmKTsKLQotI2Vsc2UgLyogKE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPj0gMHg5MDAwMDApICovCi0gIHsKLSAgICBjaGFyIHN1YlsyXTsKLSAgICBzdWJbMV09J1wwJzsKLSAgICBpZihPUEVOU1NMX1ZFUlNJT05fTlVNQkVSJjB4MGYpIHsKLSAgICAgIHN1YlswXT0oT1BFTlNTTF9WRVJTSU9OX05VTUJFUiYweDBmKSArICdhJyAtMTsKKyAgZWxzZSB7CisgICAgaWYoc3NsZWF5X3ZhbHVlJjB4ZmYwKSB7CisgICAgICBpbnQgbWlub3JfdmVyID0gKHNzbGVheV92YWx1ZSA+PiA0KSAmIDB4ZmY7CisgICAgICBpZihtaW5vcl92ZXIgPiAyNikgeworICAgICAgICAvKiBoYW5kbGUgZXh0ZW5kZWQgdmVyc2lvbiBpbnRyb2R1Y2VkIGZvciAwLjkuOHphICovCisgICAgICAgIHN1YlsxXSA9IChjaGFyKSAoKG1pbm9yX3ZlciAtIDEpICUgMjYgKyAnYScgKyAxKTsKKyAgICAgICAgc3ViWzBdID0gJ3onOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHN1YlswXT0oY2hhcikoKChzc2xlYXlfdmFsdWU+PjQpJjB4ZmYpICsgJ2EnIC0xKTsKKyAgICAgIH0KICAgICB9CiAgICAgZWxzZQogICAgICAgc3ViWzBdPSdcMCc7Ci0KLSAgICByZXR1cm4gc25wcmludGYoYnVmZmVyLCBzaXplLCAiU1NMLyV4LiV4LiV4JXMiLAotICAgICAgICAgICAgICAgICAgICAoT1BFTlNTTF9WRVJTSU9OX05VTUJFUj4+MTIpJjB4ZmYsCi0gICAgICAgICAgICAgICAgICAgIChPUEVOU1NMX1ZFUlNJT05fTlVNQkVSPj44KSYweGYsCi0gICAgICAgICAgICAgICAgICAgIChPUEVOU1NMX1ZFUlNJT05fTlVNQkVSPj40KSYweGYsIHN1Yik7CiAgIH0KLSNlbmRpZiAvKiAoT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA+PSAweDkwMDAwMCkgKi8KLSNlbmRpZiAvKiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSIGlzIGxlc3MgdGhhbiAwLjkuNSAqLwogCisgIHJldHVybiBzbnByaW50ZihidWZmZXIsIHNpemUsICIlcy8lbHguJWx4LiVseCVzIiwKKyAgICAgICAgICAgICAgICAgIE9TU0xfUEFDS0FHRSwKKyAgICAgICAgICAgICAgICAgIChzc2xlYXlfdmFsdWU+PjI4KSYweGYsCisgICAgICAgICAgICAgICAgICAoc3NsZWF5X3ZhbHVlPj4yMCkmMHhmZiwKKyAgICAgICAgICAgICAgICAgIChzc2xlYXlfdmFsdWU+PjEyKSYweGZmLAorICAgICAgICAgICAgICAgICAgc3ViKTsKICNlbmRpZiAvKiBPUEVOU1NMX0lTX0JPUklOR1NTTCAqLwotI2VuZGlmIC8qIFlBU1NMX1ZFUlNJT04gKi8KIH0KIAogLyogY2FuIGJlIGNhbGxlZCB3aXRoIGRhdGEgPT0gTlVMTCAqLwpAQCAtMzE4MSwxMCArMzE2MiwyNCBAQAogICBNRDVfRmluYWwobWQ1c3VtLCAmTUQ1cHcpOwogfQogCisjaWYgKE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPj0gMHgwMDkwODAwZkwpICYmICFkZWZpbmVkKE9QRU5TU0xfTk9fU0hBMjU2KQordm9pZCBDdXJsX29zc2xfc2hhMjU2c3VtKGNvbnN0IHVuc2lnbmVkIGNoYXIgKnRtcCwgLyogaW5wdXQgKi8KKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgdG1wbGVuLAorICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKnNoYTI1NnN1bSAvKiBvdXRwdXQgKi8sCisgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHVudXNlZCkKK3sKKyAgU0hBMjU2X0NUWCBTSEEyNTZwdzsKKyAgKHZvaWQpdW51c2VkOworICBTSEEyNTZfSW5pdCgmU0hBMjU2cHcpOworICBTSEEyNTZfVXBkYXRlKCZTSEEyNTZwdywgdG1wLCB0bXBsZW4pOworICBTSEEyNTZfRmluYWwoc2hhMjU2c3VtLCAmU0hBMjU2cHcpOworfQorI2VuZGlmCisKIGJvb2wgQ3VybF9vc3NsX2NlcnRfc3RhdHVzX3JlcXVlc3Qodm9pZCkKIHsKICNpZiAoT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA+PSAweDAwOTA4MDhmTCkgJiYgIWRlZmluZWQoT1BFTlNTTF9OT19UTFNFWFQpICYmIFwKLSAgICAhZGVmaW5lZChPUEVOU1NMX0lTX0JPUklOR1NTTCkKKyAgICAhZGVmaW5lZChPUEVOU1NMX05PX09DU1ApCiAgIHJldHVybiBUUlVFOwogI2Vsc2UKICAgcmV0dXJuIEZBTFNFOwpkaWZmIC0tZ2l0IGEvbGliL3Z0bHMvb3BlbnNzbC5oIGIvbGliL3Z0bHMvb3BlbnNzbC5oCmluZGV4IDQ5OWI0ZmUuLjc0ZjEyOGUgMTAwNjQ0Ci0tLSBhL2xpYi92dGxzL29wZW5zc2wuaAorKysgYi9saWIvdnRscy9vcGVuc3NsLmgKQEAgLTcsMTEgKzcsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC03Miw2ICs3MiwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB0bXBsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqbWQ1c3VtIC8qIG91dHB1dCAqLywKICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgdW51c2VkKTsKK3ZvaWQgQ3VybF9vc3NsX3NoYTI1NnN1bShjb25zdCB1bnNpZ25lZCBjaGFyICp0bXAsIC8qIGlucHV0ICovCisgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHRtcGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpzaGEyNTZzdW0gLyogb3V0cHV0ICovLAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB1bnVzZWQpOwogCiBib29sIEN1cmxfb3NzbF9jZXJ0X3N0YXR1c19yZXF1ZXN0KHZvaWQpOwogCkBAIC04NCw5ICs4OCwxMiBAQAogLyogdGhpcyBiYWNrZW5kIHN1cHBvcnRzIENVUkxPUFRfQ0VSVElORk8gKi8KICNkZWZpbmUgaGF2ZV9jdXJsc3NsX2NlcnRpbmZvIDEKIAotLyogdGhpcyBiYWNrZW5kIHN1cHBvdHMgQ1VSTE9QVF9TU0xfQ1RYXyogKi8KKy8qIHRoaXMgYmFja2VuZCBzdXBwb3J0cyBDVVJMT1BUX1NTTF9DVFhfKiAqLwogI2RlZmluZSBoYXZlX2N1cmxzc2xfc3NsX2N0eCAxCiAKKy8qIHRoaXMgYmFja2VuZCBzdXBwb3J0cyBDVVJMT1BUX1BJTk5FRFBVQkxJQ0tFWSAqLworI2RlZmluZSBoYXZlX2N1cmxzc2xfcGlubmVkcHVia2V5IDEKKwogLyogQVBJIHNldHVwIGZvciBPcGVuU1NMICovCiAjZGVmaW5lIGN1cmxzc2xfaW5pdCBDdXJsX29zc2xfaW5pdAogI2RlZmluZSBjdXJsc3NsX2NsZWFudXAgQ3VybF9vc3NsX2NsZWFudXAKQEAgLTEwNCw2ICsxMTEsOSBAQAogI2RlZmluZSBjdXJsc3NsX2RhdGFfcGVuZGluZyh4LHkpIEN1cmxfb3NzbF9kYXRhX3BlbmRpbmcoeCx5KQogI2RlZmluZSBjdXJsc3NsX3JhbmRvbSh4LHkseikgQ3VybF9vc3NsX3JhbmRvbSh4LHkseikKICNkZWZpbmUgY3VybHNzbF9tZDVzdW0oYSxiLGMsZCkgQ3VybF9vc3NsX21kNXN1bShhLGIsYyxkKQorI2lmIChPUEVOU1NMX1ZFUlNJT05fTlVNQkVSID49IDB4MDA5MDgwMGZMKSAmJiAhZGVmaW5lZChPUEVOU1NMX05PX1NIQTI1NikKKyNkZWZpbmUgY3VybHNzbF9zaGEyNTZzdW0oYSxiLGMsZCkgQ3VybF9vc3NsX3NoYTI1NnN1bShhLGIsYyxkKQorI2VuZGlmCiAjZGVmaW5lIGN1cmxzc2xfY2VydF9zdGF0dXNfcmVxdWVzdCgpIEN1cmxfb3NzbF9jZXJ0X3N0YXR1c19yZXF1ZXN0KCkKIAogI2RlZmluZSBERUZBVUxUX0NJUEhFUl9TRUxFQ1RJT04gXApkaWZmIC0tZ2l0IGEvbGliL3Z0bHMvcG9sYXJzc2wuYyBiL2xpYi92dGxzL3BvbGFyc3NsLmMKaW5kZXggMDY2YzA1NS4uMGU4YjBmNSAxMDA2NDQKLS0tIGEvbGliL3Z0bHMvcG9sYXJzc2wuYworKysgYi9saWIvdnRscy9wb2xhcnNzbC5jCkBAIC01LDEyICs1LDEyIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgorICogQ29weXJpZ2h0IChDKSAyMDEyIC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqIENvcHlyaWdodCAoQykgMjAxMCAtIDIwMTEsIEhvaS1IbyBDaGFuLCA8aG9paG8uY2hhbkBnbWFpbC5jb20+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlIDxwb2xhcnNzbC9jZXJ0cy5oPgogI2luY2x1ZGUgPHBvbGFyc3NsL3g1MDkuaD4KICNpbmNsdWRlIDxwb2xhcnNzbC92ZXJzaW9uLmg+CisjaW5jbHVkZSA8cG9sYXJzc2wvc2hhMjU2Lmg+CiAKICNpZiBQT0xBUlNTTF9WRVJTSU9OX05VTUJFUiA8IDB4MDEwMzAwMDAKICNlcnJvciB0b28gb2xkIFBvbGFyU1NMCkBAIC02MCw2ICs2MSwxNSBAQAogLyogVGhlIGxhc3QgI2luY2x1ZGUgZmlsZSBzaG91bGQgYmU6ICovCiAjaW5jbHVkZSAibWVtZGVidWcuaCIKIAorLyogU2VlIGh0dHBzOi8vdGxzLm1iZWQub3JnL2Rpc2N1c3Npb25zL2dlbmVyaWMvCisgICBob3d0by1kZXRlcm1pbmUtZXhhY3QtYnVmZmVyLWxlbi1mb3ItbWJlZHRsc19wa193cml0ZV9wdWJrZXlfZGVyCisqLworI2RlZmluZSBSU0FfUFVCX0RFUl9NQVhfQllURVMgICAoMzggKyAyICogUE9MQVJTU0xfTVBJX01BWF9TSVpFKQorI2RlZmluZSBFQ1BfUFVCX0RFUl9NQVhfQllURVMgICAoMzAgKyAyICogUE9MQVJTU0xfRUNQX01BWF9CWVRFUykKKworI2RlZmluZSBQVUJfREVSX01BWF9CWVRFUyAgIChSU0FfUFVCX0RFUl9NQVhfQllURVMgPiBFQ1BfUFVCX0RFUl9NQVhfQllURVMgPyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJTQV9QVUJfREVSX01BWF9CWVRFUyA6IEVDUF9QVUJfREVSX01BWF9CWVRFUykKKwogLyogYXBwbHkgdGhyZWFkaW5nPyAqLwogI2lmIGRlZmluZWQoVVNFX1RIUkVBRFNfUE9TSVgpIHx8IGRlZmluZWQoVVNFX1RIUkVBRFNfV0lOMzIpCiAjZGVmaW5lIFRIUkVBRElOR19TVVBQT1JUCkBAIC03NCwxMiArODQsMTIgQEAKIHN0YXRpYyB2b2lkIGVudHJvcHlfaW5pdF9tdXRleChlbnRyb3B5X2NvbnRleHQgKmN0eCkKIHsKICAgLyogbG9jayAwID0gZW50cm9weV9pbml0X211dGV4KCkgKi8KLSAgcG9sYXJzc2x0aHJlYWRsb2NrX2xvY2tfZnVuY3Rpb24oMCk7CisgIEN1cmxfcG9sYXJzc2x0aHJlYWRsb2NrX2xvY2tfZnVuY3Rpb24oMCk7CiAgIGlmKGVudHJvcHlfaW5pdF9pbml0aWFsaXplZCA9PSAwKSB7CiAgICAgZW50cm9weV9pbml0KGN0eCk7CiAgICAgZW50cm9weV9pbml0X2luaXRpYWxpemVkID0gMTsKICAgfQotICBwb2xhcnNzbHRocmVhZGxvY2tfdW5sb2NrX2Z1bmN0aW9uKDApOworICBDdXJsX3BvbGFyc3NsdGhyZWFkbG9ja191bmxvY2tfZnVuY3Rpb24oMCk7CiB9CiAvKiBlbmQgb2YgZW50cm9weV9pbml0X211dGV4KCkgKi8KIApAQCAtODgsOSArOTgsOSBAQAogewogICAgIGludCByZXQ7CiAgICAgLyogbG9jayAxID0gZW50cm9weV9mdW5jX211dGV4KCkgKi8KLSAgICBwb2xhcnNzbHRocmVhZGxvY2tfbG9ja19mdW5jdGlvbigxKTsKKyAgICBDdXJsX3BvbGFyc3NsdGhyZWFkbG9ja19sb2NrX2Z1bmN0aW9uKDEpOwogICAgIHJldCA9IGVudHJvcHlfZnVuYyhkYXRhLCBvdXRwdXQsIGxlbik7Ci0gICAgcG9sYXJzc2x0aHJlYWRsb2NrX3VubG9ja19mdW5jdGlvbigxKTsKKyAgICBDdXJsX3BvbGFyc3NsdGhyZWFkbG9ja191bmxvY2tfZnVuY3Rpb24oMSk7CiAKICAgICByZXR1cm4gcmV0OwogfQpAQCAtMTQxLDcgKzE1MSw2IEBACiAgIHN0cnVjdCBpbl9hZGRyIGFkZHI7CiAjZW5kaWYKICAgdm9pZCAqb2xkX3Nlc3Npb24gPSBOVUxMOwotICBzaXplX3Qgb2xkX3Nlc3Npb25fc2l6ZSA9IDA7CiAgIGNoYXIgZXJyb3JidWZbMTI4XTsKICAgZXJyb3JidWZbMF09MDsKIApAQCAtMTU3LDcgKzE2Niw3IEBACiAgIGVudHJvcHlfaW5pdF9tdXRleCgmZW50cm9weSk7CiAKICAgaWYoKHJldCA9IGN0cl9kcmJnX2luaXQoJmNvbm5zc2wtPmN0cl9kcmJnLCBlbnRyb3B5X2Z1bmNfbXV0ZXgsICZlbnRyb3B5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5zc2wtPnNzbi5pZCwgY29ubnNzbC0+c3NuLmxlbmd0aCkpICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgMCkpICE9IDApIHsKICNpZmRlZiBQT0xBUlNTTF9FUlJPUl9DCiAgICAgIGVycm9yX3N0cmVycm9yKHJldCwgZXJyb3JidWYsIHNpemVvZihlcnJvcmJ1ZikpOwogI2VuZGlmIC8qIFBPTEFSU1NMX0VSUk9SX0MgKi8KQEAgLTE2OCw3ICsxNzcsNyBAQAogICBlbnRyb3B5X2luaXQoJmNvbm5zc2wtPmVudHJvcHkpOwogCiAgIGlmKChyZXQgPSBjdHJfZHJiZ19pbml0KCZjb25uc3NsLT5jdHJfZHJiZywgZW50cm9weV9mdW5jLCAmY29ubnNzbC0+ZW50cm9weSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubnNzbC0+c3NuLmlkLCBjb25uc3NsLT5zc24ubGVuZ3RoKSkgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAwKSkgIT0gMCkgewogI2lmZGVmIFBPTEFSU1NMX0VSUk9SX0MKICAgICAgZXJyb3Jfc3RyZXJyb3IocmV0LCBlcnJvcmJ1Ziwgc2l6ZW9mKGVycm9yYnVmKSk7CiAjZW5kaWYgLyogUE9MQVJTU0xfRVJST1JfQyAqLwpAQCAtMzI4LDE0ICszMzcsMTUgQEAKICAgICAgICAgICAgICAgbmV0X3NlbmQsICZjb25uLT5zb2NrW3NvY2tpbmRleF0pOwogCiAgIHNzbF9zZXRfY2lwaGVyc3VpdGVzKCZjb25uc3NsLT5zc2wsIHNzbF9saXN0X2NpcGhlcnN1aXRlcygpKTsKLSAgaWYoIUN1cmxfc3NsX2dldHNlc3Npb25pZChjb25uLCAmb2xkX3Nlc3Npb24sICZvbGRfc2Vzc2lvbl9zaXplKSkgewotICAgIG1lbWNweSgmY29ubnNzbC0+c3NuLCBvbGRfc2Vzc2lvbiwgb2xkX3Nlc3Npb25fc2l6ZSk7CisgIGlmKCFDdXJsX3NzbF9nZXRzZXNzaW9uaWQoY29ubiwgJm9sZF9zZXNzaW9uLCBOVUxMKSkgeworICAgIHJldCA9IHNzbF9zZXRfc2Vzc2lvbigmY29ubnNzbC0+c3NsLCBvbGRfc2Vzc2lvbik7CisgICAgaWYocmV0KSB7CisgICAgICBmYWlsZihkYXRhLCAic3NsX3NldF9zZXNzaW9uIHJldHVybmVkIC0weCV4IiwgLXJldCk7CisgICAgICByZXR1cm4gQ1VSTEVfU1NMX0NPTk5FQ1RfRVJST1I7CisgICAgfQogICAgIGluZm9mKGRhdGEsICJQb2xhclNTTCByZS11c2luZyBzZXNzaW9uXG4iKTsKICAgfQogCi0gIHNzbF9zZXRfc2Vzc2lvbigmY29ubnNzbC0+c3NsLAotICAgICAgICAgICAgICAgICAgJmNvbm5zc2wtPnNzbik7Ci0KICAgc3NsX3NldF9jYV9jaGFpbigmY29ubnNzbC0+c3NsLAogICAgICAgICAgICAgICAgICAgICZjb25uc3NsLT5jYWNlcnQsCiAgICAgICAgICAgICAgICAgICAgJmNvbm5zc2wtPmNybCwKQEAgLTM0NCwyMiArMzU0LDIxIEBACiAgIHNzbF9zZXRfb3duX2NlcnRfcnNhKCZjb25uc3NsLT5zc2wsCiAgICAgICAgICAgICAgICAgICAgICAgICZjb25uc3NsLT5jbGljZXJ0LCAmY29ubnNzbC0+cnNhKTsKIAotICBpZighQ3VybF9pbmV0X3B0b24oQUZfSU5FVCwgY29ubi0+aG9zdC5uYW1lLCAmYWRkcikgJiYKLSNpZmRlZiBFTkFCTEVfSVBWNgotICAgICAhQ3VybF9pbmV0X3B0b24oQUZfSU5FVDYsIGNvbm4tPmhvc3QubmFtZSwgJmFkZHIpICYmCi0jZW5kaWYKLSAgICAgc25pICYmIHNzbF9zZXRfaG9zdG5hbWUoJmNvbm5zc2wtPnNzbCwgY29ubi0+aG9zdC5uYW1lKSkgewotICAgICBpbmZvZihkYXRhLCAiV0FSTklORzogZmFpbGVkIHRvIGNvbmZpZ3VyZSAiCi0gICAgICAgICAgICAgICAgICJzZXJ2ZXIgbmFtZSBpbmRpY2F0aW9uIChTTkkpIFRMUyBleHRlbnNpb25cbiIpOworICBpZihzc2xfc2V0X2hvc3RuYW1lKCZjb25uc3NsLT5zc2wsIGNvbm4tPmhvc3QubmFtZSkpIHsKKyAgICAvKiBzc2xfc2V0X2hvc3RuYW1lKCkgc2V0cyB0aGUgbmFtZSB0byB1c2UgaW4gQ04vU0FOIGNoZWNrcyAqYW5kKiB0aGUgbmFtZQorICAgICAgIHRvIHNldCBpbiB0aGUgU05JIGV4dGVuc2lvbi4gU28gZXZlbiBpZiBjdXJsIGNvbm5lY3RzIHRvIGEgaG9zdAorICAgICAgIHNwZWNpZmllZCBhcyBhbiBJUCBhZGRyZXNzLCB0aGlzIGZ1bmN0aW9uIG11c3QgYmUgdXNlZC4gKi8KKyAgICBmYWlsZihkYXRhLCAiY291bGRuJ3Qgc2V0IGhvc3RuYW1lIGluIFBvbGFyU1NMIik7CisgICAgcmV0dXJuIENVUkxFX1NTTF9DT05ORUNUX0VSUk9SOwogICB9CiAKICNpZmRlZiBIQVNfQUxQTgotICBpZihkYXRhLT5zZXQuc3NsX2VuYWJsZV9hbHBuKSB7CisgIGlmKGNvbm4tPmJpdHMudGxzX2VuYWJsZV9hbHBuKSB7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHByb3RvY29sc1szXTsKICAgICBpbnQgY3VyID0gMDsKIAogI2lmZGVmIFVTRV9OR0hUVFAyCi0gICAgaWYoZGF0YS0+c2V0Lmh0dHB2ZXJzaW9uID09IENVUkxfSFRUUF9WRVJTSU9OXzJfMCkgeworICAgIGlmKGRhdGEtPnNldC5odHRwdmVyc2lvbiA+PSBDVVJMX0hUVFBfVkVSU0lPTl8yKSB7CiAgICAgICBwcm90b2NvbHNbY3VyKytdID0gTkdIVFRQMl9QUk9UT19WRVJTSU9OX0lEOwogICAgICAgaW5mb2YoZGF0YSwgIkFMUE4sIG9mZmVyaW5nICVzXG4iLCBOR0hUVFAyX1BST1RPX1ZFUlNJT05fSUQpOwogICAgIH0KQEAgLTQ1Myw4ICs0NjIsNjMgQEAKICAgICAgIGluZm9mKGRhdGEsICJEdW1waW5nIGNlcnQgaW5mbzpcbiVzXG4iLCBidWZmZXIpOwogICB9CiAKKyAgLyogYWRhcHRlZCBmcm9tIG1iZWR0bHMuYyAqLworICBpZihkYXRhLT5zZXQuc3RyW1NUUklOR19TU0xfUElOTkVEUFVCTElDS0VZXSkgeworICAgIGludCBzaXplOworICAgIENVUkxjb2RlIHJlc3VsdDsKKyAgICB4NTA5X2NydCAqcDsKKyAgICB1bnNpZ25lZCBjaGFyIHB1YmtleVtQVUJfREVSX01BWF9CWVRFU107CisgICAgY29uc3QgeDUwOV9jcnQgKnBlZXJjZXJ0OworCisgICAgcGVlcmNlcnQgPSBzc2xfZ2V0X3BlZXJfY2VydCgmY29ubnNzbC0+c3NsKTsKKworICAgIGlmKCFwZWVyY2VydCB8fCAhcGVlcmNlcnQtPnJhdy5wIHx8ICFwZWVyY2VydC0+cmF3LmxlbikgeworICAgICAgZmFpbGYoZGF0YSwgIkZhaWxlZCBkdWUgdG8gbWlzc2luZyBwZWVyIGNlcnRpZmljYXRlIik7CisgICAgICByZXR1cm4gQ1VSTEVfU1NMX1BJTk5FRFBVQktFWU5PVE1BVENIOworICAgIH0KKworICAgIHAgPSBjYWxsb2MoMSwgc2l6ZW9mKCpwKSk7CisKKyAgICBpZighcCkKKyAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworCisgICAgeDUwOV9jcnRfaW5pdChwKTsKKworICAgIC8qIE1ha2UgYSBjb3B5IG9mIG91ciBjb25zdCBwZWVyY2VydCBiZWNhdXNlIHBrX3dyaXRlX3B1YmtleV9kZXIKKyAgICAgICBuZWVkcyBhIG5vbi1jb25zdCBrZXksIGZvciBub3cuCisgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL0FSTW1iZWQvbWJlZHRscy9pc3N1ZXMvMzk2ICovCisgICAgaWYoeDUwOV9jcnRfcGFyc2VfZGVyKHAsIHBlZXJjZXJ0LT5yYXcucCwgcGVlcmNlcnQtPnJhdy5sZW4pKSB7CisgICAgICBmYWlsZihkYXRhLCAiRmFpbGVkIGNvcHlpbmcgcGVlciBjZXJ0aWZpY2F0ZSIpOworICAgICAgeDUwOV9jcnRfZnJlZShwKTsKKyAgICAgIGZyZWUocCk7CisgICAgICByZXR1cm4gQ1VSTEVfU1NMX1BJTk5FRFBVQktFWU5PVE1BVENIOworICAgIH0KKworICAgIHNpemUgPSBwa193cml0ZV9wdWJrZXlfZGVyKCZwLT5waywgcHVia2V5LCBQVUJfREVSX01BWF9CWVRFUyk7CisKKyAgICBpZihzaXplIDw9IDApIHsKKyAgICAgIGZhaWxmKGRhdGEsICJGYWlsZWQgY29weWluZyBwdWJsaWMga2V5IGZyb20gcGVlciBjZXJ0aWZpY2F0ZSIpOworICAgICAgeDUwOV9jcnRfZnJlZShwKTsKKyAgICAgIGZyZWUocCk7CisgICAgICByZXR1cm4gQ1VSTEVfU1NMX1BJTk5FRFBVQktFWU5PVE1BVENIOworICAgIH0KKworICAgIC8qIHBrX3dyaXRlX3B1YmtleV9kZXIgd3JpdGVzIGRhdGEgYXQgdGhlIGVuZCBvZiB0aGUgYnVmZmVyLiAqLworICAgIHJlc3VsdCA9IEN1cmxfcGluX3BlZXJfcHVia2V5KGRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+c2V0LnN0cltTVFJJTkdfU1NMX1BJTk5FRFBVQkxJQ0tFWV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnB1YmtleVtQVUJfREVSX01BWF9CWVRFUyAtIHNpemVdLCBzaXplKTsKKyAgICBpZihyZXN1bHQpIHsKKyAgICAgIHg1MDlfY3J0X2ZyZWUocCk7CisgICAgICBmcmVlKHApOworICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICB4NTA5X2NydF9mcmVlKHApOworICAgIGZyZWUocCk7CisgIH0KKwogI2lmZGVmIEhBU19BTFBOCi0gIGlmKGRhdGEtPnNldC5zc2xfZW5hYmxlX2FscG4pIHsKKyAgaWYoY29ubi0+Yml0cy50bHNfZW5hYmxlX2FscG4pIHsKICAgICBjb25zdCBjaGFyICpuZXh0X3Byb3RvY29sID0gc3NsX2dldF9hbHBuX3Byb3RvY29sKCZjb25uc3NsLT5zc2wpOwogCiAgICAgaWYobmV4dF9wcm90b2NvbCAhPSBOVUxMKSB7CkBAIC00NjMsNyArNTI3LDcgQEAKICNpZmRlZiBVU0VfTkdIVFRQMgogICAgICAgaWYoIXN0cm5jbXAobmV4dF9wcm90b2NvbCwgTkdIVFRQMl9QUk9UT19WRVJTSU9OX0lELAogICAgICAgICAgICAgICAgICAgTkdIVFRQMl9QUk9UT19WRVJTSU9OX0lEX0xFTikpIHsKLSAgICAgICAgY29ubi0+bmVnbnBuID0gQ1VSTF9IVFRQX1ZFUlNJT05fMl8wOworICAgICAgICBjb25uLT5uZWducG4gPSBDVVJMX0hUVFBfVkVSU0lPTl8yOwogICAgICAgfQogICAgICAgZWxzZQogI2VuZGlmCkBAIC00ODYsNDAgKzU1MCwzNiBAQAogcG9sYXJzc2xfY29ubmVjdF9zdGVwMyhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sCiAgICAgICAgICAgICAgICAgICAgICBpbnQgc29ja2luZGV4KQogewotICBDVVJMY29kZSByZXN1bHQgPSBDVVJMRV9PSzsKKyAgQ1VSTGNvZGUgcmV0Y29kZSA9IENVUkxFX09LOwogICBzdHJ1Y3Qgc3NsX2Nvbm5lY3RfZGF0YSAqY29ubnNzbCA9ICZjb25uLT5zc2xbc29ja2luZGV4XTsKICAgc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEgPSBjb25uLT5kYXRhOwogICB2b2lkICpvbGRfc3NsX3Nlc3Npb25pZCA9IE5VTEw7Ci0gIHNzbF9zZXNzaW9uICpvdXJfc3NsX3Nlc3Npb25pZCA9ICZjb25uLT5zc2xbc29ja2luZGV4XS5zc247Ci0gIGJvb2wgaW5jYWNoZTsKKyAgc3NsX3Nlc3Npb24gKm91cl9zc2xfc2Vzc2lvbmlkOworICBpbnQgcmV0OwogCiAgIERFQlVHQVNTRVJUKHNzbF9jb25uZWN0XzMgPT0gY29ubnNzbC0+Y29ubmVjdGluZ19zdGF0ZSk7CiAKLSAgLyogU2F2ZSB0aGUgY3VycmVudCBzZXNzaW9uIGRhdGEgZm9yIHBvc3NpYmxlIHJlLXVzZSAqLwotICBpbmNhY2hlID0gIShDdXJsX3NzbF9nZXRzZXNzaW9uaWQoY29ubiwgJm9sZF9zc2xfc2Vzc2lvbmlkLCBOVUxMKSk7Ci0gIGlmKGluY2FjaGUpIHsKLSAgICBpZihvbGRfc3NsX3Nlc3Npb25pZCAhPSBvdXJfc3NsX3Nlc3Npb25pZCkgewotICAgICAgaW5mb2YoZGF0YSwgIm9sZCBTU0wgc2Vzc2lvbiBJRCBpcyBzdGFsZSwgcmVtb3ZpbmdcbiIpOwotICAgICAgQ3VybF9zc2xfZGVsc2Vzc2lvbmlkKGNvbm4sIG9sZF9zc2xfc2Vzc2lvbmlkKTsKLSAgICAgIGluY2FjaGUgPSBGQUxTRTsKLSAgICB9CisgIG91cl9zc2xfc2Vzc2lvbmlkID0gbWFsbG9jKHNpemVvZihzc2xfc2Vzc2lvbikpOworICBpZighb3VyX3NzbF9zZXNzaW9uaWQpCisgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisKKyAgc3NsX3Nlc3Npb25faW5pdChvdXJfc3NsX3Nlc3Npb25pZCk7CisKKyAgcmV0ID0gc3NsX2dldF9zZXNzaW9uKCZjb25uc3NsLT5zc2wsIG91cl9zc2xfc2Vzc2lvbmlkKTsKKyAgaWYocmV0KSB7CisgICAgZmFpbGYoZGF0YSwgInNzbF9nZXRfc2Vzc2lvbiByZXR1cm5lZCAtMHgleCIsIC1yZXQpOworICAgIHJldHVybiBDVVJMRV9TU0xfQ09OTkVDVF9FUlJPUjsKICAgfQogCi0gIGlmKCFpbmNhY2hlKSB7Ci0gICAgdm9pZCAqbmV3X3Nlc3Npb24gPSBtYWxsb2Moc2l6ZW9mKHNzbF9zZXNzaW9uKSk7CisgIC8qIElmIHRoZXJlJ3MgYWxyZWFkeSBhIG1hdGNoaW5nIHNlc3Npb24gaW4gdGhlIGNhY2hlLCBkZWxldGUgaXQgKi8KKyAgaWYoIUN1cmxfc3NsX2dldHNlc3Npb25pZChjb25uLCAmb2xkX3NzbF9zZXNzaW9uaWQsIE5VTEwpKQorICAgIEN1cmxfc3NsX2RlbHNlc3Npb25pZChjb25uLCBvbGRfc3NsX3Nlc3Npb25pZCk7CiAKLSAgICBpZihuZXdfc2Vzc2lvbikgewotICAgICAgbWVtY3B5KG5ld19zZXNzaW9uLCBvdXJfc3NsX3Nlc3Npb25pZCwgc2l6ZW9mKHNzbF9zZXNzaW9uKSk7Ci0KLSAgICAgIHJlc3VsdCA9IEN1cmxfc3NsX2FkZHNlc3Npb25pZChjb25uLCBuZXdfc2Vzc2lvbiwgc2l6ZW9mKHNzbF9zZXNzaW9uKSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgIHJlc3VsdCA9IENVUkxFX09VVF9PRl9NRU1PUlk7Ci0KLSAgICBpZihyZXN1bHQpIHsKLSAgICAgIGZhaWxmKGRhdGEsICJmYWlsZWQgdG8gc3RvcmUgc3NsIHNlc3Npb24iKTsKLSAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQorICByZXRjb2RlID0gQ3VybF9zc2xfYWRkc2Vzc2lvbmlkKGNvbm4sIG91cl9zc2xfc2Vzc2lvbmlkLCAwKTsKKyAgaWYocmV0Y29kZSkgeworICAgIGZyZWUob3VyX3NzbF9zZXNzaW9uaWQpOworICAgIGZhaWxmKGRhdGEsICJmYWlsZWQgdG8gc3RvcmUgc3NsIHNlc3Npb24iKTsKKyAgICByZXR1cm4gcmV0Y29kZTsKICAgfQogCiAgIGNvbm5zc2wtPmNvbm5lY3Rpbmdfc3RhdGUgPSBzc2xfY29ubmVjdF9kb25lOwpAQCAtNTg0LDYgKzY0NCw3IEBACiAKIHZvaWQgQ3VybF9wb2xhcnNzbF9zZXNzaW9uX2ZyZWUodm9pZCAqcHRyKQogeworICBzc2xfc2Vzc2lvbl9mcmVlKHB0cik7CiAgIGZyZWUocHRyKTsKIH0KIApAQCAtNzQwLDE0ICs4MDEsMTQgQEAKICAqIHJldHVybiAwIGVycm9yIGluaXRpYWxpemluZyBTU0wKICAqIHJldHVybiAxIFNTTCBpbml0aWFsaXplZCBzdWNjZXNzZnVsbHkKICAqLwotaW50IHBvbGFyc3NsX2luaXQodm9pZCkKK2ludCBDdXJsX3BvbGFyc3NsX2luaXQodm9pZCkKIHsKLSAgcmV0dXJuIHBvbGFyc3NsdGhyZWFkbG9ja190aHJlYWRfc2V0dXAoKTsKKyAgcmV0dXJuIEN1cmxfcG9sYXJzc2x0aHJlYWRsb2NrX3RocmVhZF9zZXR1cCgpOwogfQogCi12b2lkIHBvbGFyc3NsX2NsZWFudXAodm9pZCkKK3ZvaWQgQ3VybF9wb2xhcnNzbF9jbGVhbnVwKHZvaWQpCiB7Ci0gICh2b2lkKXBvbGFyc3NsdGhyZWFkbG9ja190aHJlYWRfY2xlYW51cCgpOworICAodm9pZClDdXJsX3BvbGFyc3NsdGhyZWFkbG9ja190aHJlYWRfY2xlYW51cCgpOwogfQogCiAjZW5kaWYgLyogVVNFX1BPTEFSU1NMICovCmRpZmYgLS1naXQgYS9saWIvdnRscy9wb2xhcnNzbC5oIGIvbGliL3Z0bHMvcG9sYXJzc2wuaAppbmRleCBmOTgwZGJiLi43MDk4YjI0IDEwMDY0NAotLS0gYS9saWIvdnRscy9wb2xhcnNzbC5oCisrKyBiL2xpYi92dGxzL3BvbGFyc3NsLmgKQEAgLTcsMTIgKzcsMTIgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICogQ29weXJpZ2h0IChDKSAyMDEwLCBIb2ktSG8gQ2hhbiwgPGhvaWhvLmNoYW5AZ21haWwuY29tPgotICogQ29weXJpZ2h0IChDKSAyMDEyIC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yNiw5ICsyNiwxMSBAQAogCiAjaWZkZWYgVVNFX1BPTEFSU1NMCiAKKyNpbmNsdWRlIDxwb2xhcnNzbC9zaGEyNTYuaD4KKwogLyogQ2FsbGVkIG9uIGZpcnN0IHVzZSBQb2xhclNTTCwgc2V0dXAgdGhyZWFkaW5nIGlmIHN1cHBvcnRlZCAqLwotaW50ICBwb2xhcnNzbF9pbml0KHZvaWQpOwotdm9pZCBwb2xhcnNzbF9jbGVhbnVwKHZvaWQpOworaW50ICBDdXJsX3BvbGFyc3NsX2luaXQodm9pZCk7Cit2b2lkIEN1cmxfcG9sYXJzc2xfY2xlYW51cCh2b2lkKTsKIAogCiBDVVJMY29kZSBDdXJsX3BvbGFyc3NsX2Nvbm5lY3Qoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBpbnQgc29ja2luZGV4KTsKQEAgLTUwLDkgKzUyLDEyIEBACiAvKiB0aGlzIGJhY2tlbmQgc3VwcG9ydHMgdGhlIENBUEFUSCBvcHRpb24gKi8KICNkZWZpbmUgaGF2ZV9jdXJsc3NsX2NhX3BhdGggMQogCisvKiB0aGlzIGJhY2tlbmRzIHN1cHBvcnRzIENVUkxPUFRfUElOTkVEUFVCTElDS0VZICovCisjZGVmaW5lIGhhdmVfY3VybHNzbF9waW5uZWRwdWJrZXkgMQorCiAvKiBBUEkgc2V0dXAgZm9yIFBvbGFyU1NMICovCi0jZGVmaW5lIGN1cmxzc2xfaW5pdCgpIHBvbGFyc3NsX2luaXQoKQotI2RlZmluZSBjdXJsc3NsX2NsZWFudXAoKSBwb2xhcnNzbF9jbGVhbnVwKCkKKyNkZWZpbmUgY3VybHNzbF9pbml0KCkgQ3VybF9wb2xhcnNzbF9pbml0KCkKKyNkZWZpbmUgY3VybHNzbF9jbGVhbnVwKCkgQ3VybF9wb2xhcnNzbF9jbGVhbnVwKCkKICNkZWZpbmUgY3VybHNzbF9jb25uZWN0IEN1cmxfcG9sYXJzc2xfY29ubmVjdAogI2RlZmluZSBjdXJsc3NsX2Nvbm5lY3Rfbm9uYmxvY2tpbmcgQ3VybF9wb2xhcnNzbF9jb25uZWN0X25vbmJsb2NraW5nCiAjZGVmaW5lIGN1cmxzc2xfc2Vzc2lvbl9mcmVlKHgpICBDdXJsX3BvbGFyc3NsX3Nlc3Npb25fZnJlZSh4KQpAQCAtNjUsNiArNzAsNyBAQAogI2RlZmluZSBjdXJsc3NsX3ZlcnNpb24gQ3VybF9wb2xhcnNzbF92ZXJzaW9uCiAjZGVmaW5lIGN1cmxzc2xfY2hlY2tfY3huKHgpICgodm9pZCl4LCAtMSkKICNkZWZpbmUgY3VybHNzbF9kYXRhX3BlbmRpbmcoeCx5KSAoKHZvaWQpeCwgKHZvaWQpeSwgMCkKKyNkZWZpbmUgY3VybHNzbF9zaGEyNTZzdW0oYSxiLGMsZCkgc2hhMjU2KGEsYixjLDApCiAKIC8qIFRoaXMgbWlnaHQgY2F1c2UgbGliY3VybCB0byB1c2UgYSB3ZWVrZXIgcmFuZG9tIQogICAgVE9ETzogaW1wbGVtZW50IHByb3BlciB1c2Ugb2YgUG9sYXJzc2wncyBDVFItRFJCRyBvciBITUFDLURSQkcgYW5kIHVzZSB0aGF0CmRpZmYgLS1naXQgYS9saWIvdnRscy9wb2xhcnNzbF90aHJlYWRsb2NrLmMgYi9saWIvdnRscy9wb2xhcnNzbF90aHJlYWRsb2NrLmMKaW5kZXggNjJhYmY0My4uM2IwZWJmOCAxMDA2NDQKLS0tIGEvbGliL3Z0bHMvcG9sYXJzc2xfdGhyZWFkbG9jay5jCisrKyBiL2xpYi92dGxzL3BvbGFyc3NsX3RocmVhZGxvY2suYwpAQCAtNSwxMiArNSwxMiBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExLCBIb2ktSG8gQ2hhbiwgPGhvaWhvLmNoYW5AZ21haWwuY29tPgotICogQ29weXJpZ2h0IChDKSAyMDEzLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTIyLDcgKzIyLDcgQEAKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAjaW5jbHVkZSAiY3VybF9zZXR1cC5oIgogCi0jaWYgZGVmaW5lZChVU0VfUE9MQVJTU0wpICYmIFwKKyNpZiAoZGVmaW5lZChVU0VfUE9MQVJTU0wpIHx8IGRlZmluZWQoVVNFX01CRURUTFMpKSAmJiBcCiAgICAgKGRlZmluZWQoVVNFX1RIUkVBRFNfUE9TSVgpIHx8IGRlZmluZWQoVVNFX1RIUkVBRFNfV0lOMzIpKQogCiAjaWYgZGVmaW5lZChVU0VfVEhSRUFEU19QT1NJWCkKQEAgLTQ3LDcgKzQ3LDcgQEAKIC8qIFRoaXMgYXJyYXkgd2lsbCBzdG9yZSBhbGwgb2YgdGhlIG11dGV4ZXMgYXZhaWxhYmxlIHRvIFBvbGFyU1NMLiAqLwogc3RhdGljIFBPTEFSU1NMX01VVEVYX1QgKm11dGV4X2J1ZiA9IE5VTEw7CiAKLWludCBwb2xhcnNzbHRocmVhZGxvY2tfdGhyZWFkX3NldHVwKHZvaWQpCitpbnQgQ3VybF9wb2xhcnNzbHRocmVhZGxvY2tfdGhyZWFkX3NldHVwKHZvaWQpCiB7CiAgIGludCBpOwogICBpbnQgcmV0OwpAQCAtNzMsNyArNzMsNyBAQAogICByZXR1cm4gMTsgLyogT0sgKi8KIH0KIAotaW50IHBvbGFyc3NsdGhyZWFkbG9ja190aHJlYWRfY2xlYW51cCh2b2lkKQoraW50IEN1cmxfcG9sYXJzc2x0aHJlYWRsb2NrX3RocmVhZF9jbGVhbnVwKHZvaWQpCiB7CiAgIGludCBpOwogICBpbnQgcmV0OwpAQCAtMTAwLDcgKzEwMCw3IEBACiAgIHJldHVybiAxOyAvKiBPSyAqLwogfQogCi1pbnQgcG9sYXJzc2x0aHJlYWRsb2NrX2xvY2tfZnVuY3Rpb24oaW50IG4pCitpbnQgQ3VybF9wb2xhcnNzbHRocmVhZGxvY2tfbG9ja19mdW5jdGlvbihpbnQgbikKIHsKICAgaW50IHJldDsKICNpZmRlZiBIQVZFX1BUSFJFQURfSApAQCAtMTI1LDcgKzEyNSw3IEBACiAgIHJldHVybiAxOyAvKiBPSyAqLwogfQogCi1pbnQgcG9sYXJzc2x0aHJlYWRsb2NrX3VubG9ja19mdW5jdGlvbihpbnQgbikKK2ludCBDdXJsX3BvbGFyc3NsdGhyZWFkbG9ja191bmxvY2tfZnVuY3Rpb24oaW50IG4pCiB7CiAgIGludCByZXQ7CiAjaWZkZWYgSEFWRV9QVEhSRUFEX0gKQEAgLTE1MCw0ICsxNTAsNCBAQAogICByZXR1cm4gMTsgLyogT0sgKi8KIH0KIAotI2VuZGlmIC8qIFVTRV9QT0xBUlNTTCAqLworI2VuZGlmIC8qIFVTRV9QT0xBUlNTTCB8fCBVU0VfTUJFRFRMUyAqLwpkaWZmIC0tZ2l0IGEvbGliL3Z0bHMvcG9sYXJzc2xfdGhyZWFkbG9jay5oIGIvbGliL3Z0bHMvcG9sYXJzc2xfdGhyZWFkbG9jay5oCmluZGV4IGI2N2IzZjkuLmRkYTUzNTkgMTAwNjQ0Ci0tLSBhL2xpYi92dGxzL3BvbGFyc3NsX3RocmVhZGxvY2suaAorKysgYi9saWIvdnRscy9wb2xhcnNzbF90aHJlYWRsb2NrLmgKQEAgLTcsMTIgKzcsMTIgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqIENvcHlyaWdodCAoQykgMjAxMCwgSG9pLUhvIENoYW4sIDxob2loby5jaGFuQGdtYWlsLmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAxMywgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yNCw3ICsyNCw3IEBACiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogI2luY2x1ZGUgImN1cmxfc2V0dXAuaCIKIAotI2lmZGVmIFVTRV9QT0xBUlNTTAorI2lmIChkZWZpbmVkIFVTRV9QT0xBUlNTTCkgfHwgKGRlZmluZWQgVVNFX01CRURUTFMpCiAKICNpZiBkZWZpbmVkKFVTRV9USFJFQURTX1BPU0lYKQogIyAgZGVmaW5lIFBPTEFSU1NMX01VVEVYX1QgICAgICAgcHRocmVhZF9tdXRleF90CkBAIC0zNCwxNyArMzQsMTcgQEAKIAogI2lmIGRlZmluZWQoVVNFX1RIUkVBRFNfUE9TSVgpIHx8IGRlZmluZWQoVVNFX1RIUkVBRFNfV0lOMzIpCiAKLWludCBwb2xhcnNzbHRocmVhZGxvY2tfdGhyZWFkX3NldHVwKHZvaWQpOwotaW50IHBvbGFyc3NsdGhyZWFkbG9ja190aHJlYWRfY2xlYW51cCh2b2lkKTsKLWludCBwb2xhcnNzbHRocmVhZGxvY2tfbG9ja19mdW5jdGlvbihpbnQgbik7Ci1pbnQgcG9sYXJzc2x0aHJlYWRsb2NrX3VubG9ja19mdW5jdGlvbihpbnQgbik7CitpbnQgQ3VybF9wb2xhcnNzbHRocmVhZGxvY2tfdGhyZWFkX3NldHVwKHZvaWQpOworaW50IEN1cmxfcG9sYXJzc2x0aHJlYWRsb2NrX3RocmVhZF9jbGVhbnVwKHZvaWQpOworaW50IEN1cmxfcG9sYXJzc2x0aHJlYWRsb2NrX2xvY2tfZnVuY3Rpb24oaW50IG4pOworaW50IEN1cmxfcG9sYXJzc2x0aHJlYWRsb2NrX3VubG9ja19mdW5jdGlvbihpbnQgbik7CiAKICNlbHNlCiAKLSNkZWZpbmUgcG9sYXJzc2x0aHJlYWRsb2NrX3RocmVhZF9zZXR1cCgpIDEKLSNkZWZpbmUgcG9sYXJzc2x0aHJlYWRsb2NrX3RocmVhZF9jbGVhbnVwKCkgMQotI2RlZmluZSBwb2xhcnNzbHRocmVhZGxvY2tfbG9ja19mdW5jdGlvbih4KSAxCi0jZGVmaW5lIHBvbGFyc3NsdGhyZWFkbG9ja191bmxvY2tfZnVuY3Rpb24oeCkgMQorI2RlZmluZSBDdXJsX3BvbGFyc3NsdGhyZWFkbG9ja190aHJlYWRfc2V0dXAoKSAxCisjZGVmaW5lIEN1cmxfcG9sYXJzc2x0aHJlYWRsb2NrX3RocmVhZF9jbGVhbnVwKCkgMQorI2RlZmluZSBDdXJsX3BvbGFyc3NsdGhyZWFkbG9ja19sb2NrX2Z1bmN0aW9uKHgpIDEKKyNkZWZpbmUgQ3VybF9wb2xhcnNzbHRocmVhZGxvY2tfdW5sb2NrX2Z1bmN0aW9uKHgpIDEKIAogI2VuZGlmIC8qIFVTRV9USFJFQURTX1BPU0lYIHx8IFVTRV9USFJFQURTX1dJTjMyICovCiAKZGlmZiAtLWdpdCBhL2xpYi92dGxzL3NjaGFubmVsLmMgYi9saWIvdnRscy9zY2hhbm5lbC5jCmluZGV4IDE5YWZmOGYuLmIyZTkyNjUgMTAwNjQ0Ci0tLSBhL2xpYi92dGxzL3NjaGFubmVsLmMKKysrIGIvbGliL3Z0bHMvc2NoYW5uZWwuYwpAQCAtNSwxMyArNSwxMyBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMjAxMiAtIDIwMTUsIE1hcmMgSG9lcnNrZW4sIDxpbmZvQG1hcmMtaG9lcnNrZW4uZGU+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgLSAyMDE2LCBNYXJjIEhvZXJza2VuLCA8aW5mb0BtYXJjLWhvZXJza2VuLmRlPgogICogQ29weXJpZ2h0IChDKSAyMDEyLCBNYXJrIFNhbGlzYnVyeSwgPG1hcmsuc2FsaXNidXJ5QGhwLmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAxMiAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTYxLDYgKzYxLDEyIEBACiAvKiBUaGUgbGFzdCAjaW5jbHVkZSBmaWxlIHNob3VsZCBiZTogKi8KICNpbmNsdWRlICJtZW1kZWJ1Zy5oIgogCisvKiBBTFBOIHJlcXVpcmVzIHZlcnNpb24gOC4xIG9mIHRoZSAgV2luZG93cyBTREssIHdoaWNoIHdhcworICAgc2hpcHBlZCB3aXRoIFZpc3VhbCBTdHVkaW8gMjAxMywgYWthIF9NU0NfVkVSIDE4MDAqLworI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxODAwKSAmJiAhZGVmaW5lZChfVVNJTkdfVjExMF9TREs3MV8pCisjICBkZWZpbmUgSEFTX0FMUE4gMQorI2VuZGlmCisKIC8qIFVuY29tbWVudCB0byBmb3JjZSB2ZXJib3NlIG91dHB1dAogICogI2RlZmluZSBpbmZvZih4LCB5LCAuLi4pIHByaW50Zih5LCBfX1ZBX0FSR1NfXykKICAqICNkZWZpbmUgZmFpbGYoeCwgeSwgLi4uKSBwcmludGYoeSwgX19WQV9BUkdTX18pCkBAIC05Nyw2ICsxMDMsMTEgQEAKICAgc3RydWN0IHNzbF9jb25uZWN0X2RhdGEgKmNvbm5zc2wgPSAmY29ubi0+c3NsW3NvY2tpbmRleF07CiAgIFNlY0J1ZmZlciBvdXRidWY7CiAgIFNlY0J1ZmZlckRlc2Mgb3V0YnVmX2Rlc2M7CisgIFNlY0J1ZmZlciBpbmJ1ZjsKKyAgU2VjQnVmZmVyRGVzYyBpbmJ1Zl9kZXNjOworI2lmZGVmIEhBU19BTFBOCisgIHVuc2lnbmVkIGNoYXIgYWxwbl9idWZmZXJbMTI4XTsKKyNlbmRpZgogICBTQ0hBTk5FTF9DUkVEIHNjaGFubmVsX2NyZWQ7CiAgIFNFQ1VSSVRZX1NUQVRVUyBzc3BpX3N0YXR1cyA9IFNFQ19FX09LOwogICBzdHJ1Y3QgY3VybF9zY2hhbm5lbF9jcmVkICpvbGRfY3JlZCA9IE5VTEw7CkBAIC0xMjgsMTYgKzEzOSwyNCBAQAogICAgICAgICBTQ0hfQ1JFRF9JR05PUkVfTk9fUkVWT0NBVElPTl9DSEVDSyB8CiAgICAgICAgIFNDSF9DUkVEX0lHTk9SRV9SRVZPQ0FUSU9OX09GRkxJTkU7CiAjZWxzZQotICAgICAgc2NoYW5uZWxfY3JlZC5kd0ZsYWdzID0gU0NIX0NSRURfQVVUT19DUkVEX1ZBTElEQVRJT04gfAotICAgICAgICBTQ0hfQ1JFRF9SRVZPQ0FUSU9OX0NIRUNLX0NIQUlOOworICAgICAgc2NoYW5uZWxfY3JlZC5kd0ZsYWdzID0gU0NIX0NSRURfQVVUT19DUkVEX1ZBTElEQVRJT047CisgICAgICBpZihkYXRhLT5zZXQuc3NsX25vX3Jldm9rZSkKKyAgICAgICAgc2NoYW5uZWxfY3JlZC5kd0ZsYWdzIHw9IFNDSF9DUkVEX0lHTk9SRV9OT19SRVZPQ0FUSU9OX0NIRUNLIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNDSF9DUkVEX0lHTk9SRV9SRVZPQ0FUSU9OX09GRkxJTkU7CisgICAgICBlbHNlCisgICAgICAgIHNjaGFubmVsX2NyZWQuZHdGbGFncyB8PSBTQ0hfQ1JFRF9SRVZPQ0FUSU9OX0NIRUNLX0NIQUlOOwogI2VuZGlmCi0gICAgICBpbmZvZihkYXRhLCAic2NoYW5uZWw6IGNoZWNraW5nIHNlcnZlciBjZXJ0aWZpY2F0ZSByZXZvY2F0aW9uXG4iKTsKKyAgICAgIGlmKGRhdGEtPnNldC5zc2xfbm9fcmV2b2tlKQorICAgICAgICBpbmZvZihkYXRhLCAic2NoYW5uZWw6IGRpc2FibGVkIHNlcnZlciBjZXJ0aWZpY2F0ZSByZXZvY2F0aW9uICIKKyAgICAgICAgICAgICAgICAgICAgImNoZWNrc1xuIik7CisgICAgICBlbHNlCisgICAgICAgIGluZm9mKGRhdGEsICJzY2hhbm5lbDogY2hlY2tpbmcgc2VydmVyIGNlcnRpZmljYXRlIHJldm9jYXRpb25cbiIpOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgIHNjaGFubmVsX2NyZWQuZHdGbGFncyA9IFNDSF9DUkVEX01BTlVBTF9DUkVEX1ZBTElEQVRJT04gfAogICAgICAgICBTQ0hfQ1JFRF9JR05PUkVfTk9fUkVWT0NBVElPTl9DSEVDSyB8CiAgICAgICAgIFNDSF9DUkVEX0lHTk9SRV9SRVZPQ0FUSU9OX09GRkxJTkU7Ci0gICAgICBpbmZvZihkYXRhLCAic2NoYW5uZWw6IGRpc2FibGUgc2VydmVyIGNlcnRpZmljYXRlIHJldm9jYXRpb24gY2hlY2tzXG4iKTsKKyAgICAgIGluZm9mKGRhdGEsICJzY2hhbm5lbDogZGlzYWJsZWQgc2VydmVyIGNlcnRpZmljYXRlIHJldm9jYXRpb24gY2hlY2tzXG4iKTsKICAgICB9CiAKICAgICBpZighZGF0YS0+c2V0LnNzbC52ZXJpZnlob3N0KSB7CkBAIC0xODEsNyArMjAwLDggQEAKICAgICB9CiAgICAgbWVtc2V0KGNvbm5zc2wtPmNyZWQsIDAsIHNpemVvZihzdHJ1Y3QgY3VybF9zY2hhbm5lbF9jcmVkKSk7CiAKLSAgICAvKiBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL2FhMzc0NzE2LmFzcHggKi8KKyAgICAvKiBodHRwczovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L3dpbmRvd3MvZGVza3RvcC9hYTM3NDcxNi5hc3B4CisgICAgICAgKi8KICAgICBzc3BpX3N0YXR1cyA9CiAgICAgICBzX3BTZWNGbi0+QWNxdWlyZUNyZWRlbnRpYWxzSGFuZGxlKE5VTEwsIChUQ0hBUiAqKVVOSVNQX05BTUUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNFQ1BLR19DUkVEX09VVEJPVU5ELCBOVUxMLApAQCAtMjEwLDYgKzIzMCw2MCBAQAogICAgIGluZm9mKGRhdGEsICJzY2hhbm5lbDogdXNpbmcgSVAgYWRkcmVzcywgU05JIGlzIG5vdCBzdXBwb3J0ZWQgYnkgT1MuXG4iKTsKICAgfQogCisjaWZkZWYgSEFTX0FMUE4KKyAgaWYoY29ubi0+Yml0cy50bHNfZW5hYmxlX2FscG4pIHsKKyAgICBpbnQgY3VyID0gMDsKKyAgICBpbnQgbGlzdF9zdGFydF9pbmRleCA9IDA7CisgICAgdW5zaWduZWQgaW50KiBleHRlbnNpb25fbGVuID0gTlVMTDsKKyAgICB1bnNpZ25lZCBzaG9ydCogbGlzdF9sZW4gPSBOVUxMOworCisgICAgLyogVGhlIGZpcnN0IGZvdXIgYnl0ZXMgd2lsbCBiZSBhbiB1bnNpZ25lZCBpbnQgaW5kaWNhdGluZyBudW1iZXIKKyAgICAgICBvZiBieXRlcyBvZiBkYXRhIGluIHRoZSByZXN0IG9mIHRoZSB0aGUgYnVmZmVyLiAqLworICAgIGV4dGVuc2lvbl9sZW4gPSAodW5zaWduZWQgaW50KikoJmFscG5fYnVmZmVyW2N1cl0pOworICAgIGN1ciArPSBzaXplb2YodW5zaWduZWQgaW50KTsKKworICAgIC8qIFRoZSBuZXh0IGZvdXIgYnl0ZXMgYXJlIGFuIGluZGljYXRvciB0aGF0IHRoaXMgYnVmZmVyIHdpbGwgY29udGFpbgorICAgICAgIEFMUE4gZGF0YSwgYXMgb3Bwb3NlZCB0byBOUE4sIGZvciBleGFtcGxlLiAqLworICAgICoodW5zaWduZWQgaW50KikmYWxwbl9idWZmZXJbY3VyXSA9CisgICAgICBTZWNBcHBsaWNhdGlvblByb3RvY29sTmVnb3RpYXRpb25FeHRfQUxQTjsKKyAgICBjdXIgKz0gc2l6ZW9mKHVuc2lnbmVkIGludCk7CisKKyAgICAvKiBUaGUgbmV4dCB0d28gYnl0ZXMgd2lsbCBiZSBhbiB1bnNpZ25lZCBzaG9ydCBpbmRpY2F0aW5nIHRoZSBudW1iZXIKKyAgICAgICBvZiBieXRlcyB1c2VkIHRvIGxpc3QgdGhlIHByZWZlcnJlZCBwcm90b2NvbHMuICovCisgICAgbGlzdF9sZW4gPSAodW5zaWduZWQgc2hvcnQqKSgmYWxwbl9idWZmZXJbY3VyXSk7CisgICAgY3VyICs9IHNpemVvZih1bnNpZ25lZCBzaG9ydCk7CisKKyAgICBsaXN0X3N0YXJ0X2luZGV4ID0gY3VyOworCisjaWZkZWYgVVNFX05HSFRUUDIKKyAgICBpZihkYXRhLT5zZXQuaHR0cHZlcnNpb24gPj0gQ1VSTF9IVFRQX1ZFUlNJT05fMikgeworICAgICAgbWVtY3B5KCZhbHBuX2J1ZmZlcltjdXJdLCBOR0hUVFAyX1BST1RPX0FMUE4sIE5HSFRUUDJfUFJPVE9fQUxQTl9MRU4pOworICAgICAgY3VyICs9IE5HSFRUUDJfUFJPVE9fQUxQTl9MRU47CisgICAgICBpbmZvZihkYXRhLCAic2NoYW5uZWw6IEFMUE4sIG9mZmVyaW5nICVzXG4iLCBOR0hUVFAyX1BST1RPX1ZFUlNJT05fSUQpOworICAgIH0KKyNlbmRpZgorCisgICAgYWxwbl9idWZmZXJbY3VyKytdID0gQUxQTl9IVFRQXzFfMV9MRU5HVEg7CisgICAgbWVtY3B5KCZhbHBuX2J1ZmZlcltjdXJdLCBBTFBOX0hUVFBfMV8xLCBBTFBOX0hUVFBfMV8xX0xFTkdUSCk7CisgICAgY3VyICs9IEFMUE5fSFRUUF8xXzFfTEVOR1RIOworICAgIGluZm9mKGRhdGEsICJzY2hhbm5lbDogQUxQTiwgb2ZmZXJpbmcgJXNcbiIsIEFMUE5fSFRUUF8xXzEpOworCisgICAgKmxpc3RfbGVuID0gY3VybHhfdWl0b3VzKGN1ciAtIGxpc3Rfc3RhcnRfaW5kZXgpOworICAgICpleHRlbnNpb25fbGVuID0gKmxpc3RfbGVuICsgc2l6ZW9mKHVuc2lnbmVkIGludCkgKyBzaXplb2YodW5zaWduZWQgc2hvcnQpOworCisgICAgSW5pdFNlY0J1ZmZlcigmaW5idWYsIFNFQ0JVRkZFUl9BUFBMSUNBVElPTl9QUk9UT0NPTFMsIGFscG5fYnVmZmVyLCBjdXIpOworICAgIEluaXRTZWNCdWZmZXJEZXNjKCZpbmJ1Zl9kZXNjLCAmaW5idWYsIDEpOworICB9CisgIGVsc2UKKyAgeworICAgIEluaXRTZWNCdWZmZXIoJmluYnVmLCBTRUNCVUZGRVJfRU1QVFksIE5VTEwsIDApOworICAgIEluaXRTZWNCdWZmZXJEZXNjKCZpbmJ1Zl9kZXNjLCAmaW5idWYsIDEpOworICB9CisjZWxzZSAvKiBIQVNfQUxQTiAqLworICBJbml0U2VjQnVmZmVyKCZpbmJ1ZiwgU0VDQlVGRkVSX0VNUFRZLCBOVUxMLCAwKTsKKyAgSW5pdFNlY0J1ZmZlckRlc2MoJmluYnVmX2Rlc2MsICZpbmJ1ZiwgMSk7CisjZW5kaWYKKwogICAvKiBzZXR1cCBvdXRwdXQgYnVmZmVyICovCiAgIEluaXRTZWNCdWZmZXIoJm91dGJ1ZiwgU0VDQlVGRkVSX0VNUFRZLCBOVUxMLCAwKTsKICAgSW5pdFNlY0J1ZmZlckRlc2MoJm91dGJ1Zl9kZXNjLCAmb3V0YnVmLCAxKTsKQEAgLTIzMiwxMSArMzA2LDExIEBACiAgIGlmKCFob3N0X25hbWUpCiAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CiAKLSAgLyogaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L3dpbmRvd3MvZGVza3RvcC9hYTM3NTkyNC5hc3B4ICovCisgIC8qIGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL2FhMzc1OTI0LmFzcHggKi8KIAogICBzc3BpX3N0YXR1cyA9IHNfcFNlY0ZuLT5Jbml0aWFsaXplU2VjdXJpdHlDb250ZXh0KAogICAgICZjb25uc3NsLT5jcmVkLT5jcmVkX2hhbmRsZSwgTlVMTCwgaG9zdF9uYW1lLAotICAgIGNvbm5zc2wtPnJlcV9mbGFncywgMCwgMCwgTlVMTCwgMCwgJmNvbm5zc2wtPmN0eHQtPmN0eHRfaGFuZGxlLAorICAgIGNvbm5zc2wtPnJlcV9mbGFncywgMCwgMCwgJmluYnVmX2Rlc2MsIDAsICZjb25uc3NsLT5jdHh0LT5jdHh0X2hhbmRsZSwKICAgICAmb3V0YnVmX2Rlc2MsICZjb25uc3NsLT5yZXRfZmxhZ3MsICZjb25uc3NsLT5jdHh0LT50aW1lX3N0YW1wKTsKIAogICBDdXJsX3VuaWNvZGVmcmVlKGhvc3RfbmFtZSk7CkBAIC0zOTksOCArNDczLDggQEAKICAgICBpZighaG9zdF9uYW1lKQogICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CiAKLSAgICAvKiBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL2FhMzc1OTI0LmFzcHggKi8KLQorICAgIC8qIGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL2FhMzc1OTI0LmFzcHgKKyAgICAgICAqLwogICAgIHNzcGlfc3RhdHVzID0gc19wU2VjRm4tPkluaXRpYWxpemVTZWN1cml0eUNvbnRleHQoCiAgICAgICAmY29ubnNzbC0+Y3JlZC0+Y3JlZF9oYW5kbGUsICZjb25uc3NsLT5jdHh0LT5jdHh0X2hhbmRsZSwKICAgICAgIGhvc3RfbmFtZSwgY29ubnNzbC0+cmVxX2ZsYWdzLCAwLCAwLCAmaW5idWZfZGVzYywgMCwgTlVMTCwKQEAgLTUyNiw2ICs2MDAsMTAgQEAKICAgc3RydWN0IFNlc3Npb25IYW5kbGUgKmRhdGEgPSBjb25uLT5kYXRhOwogICBzdHJ1Y3Qgc3NsX2Nvbm5lY3RfZGF0YSAqY29ubnNzbCA9ICZjb25uLT5zc2xbc29ja2luZGV4XTsKICAgc3RydWN0IGN1cmxfc2NoYW5uZWxfY3JlZCAqb2xkX2NyZWQgPSBOVUxMOworI2lmZGVmIEhBU19BTFBOCisgIFNFQ1VSSVRZX1NUQVRVUyBzc3BpX3N0YXR1cyA9IFNFQ19FX09LOworICBTZWNQa2dDb250ZXh0X0FwcGxpY2F0aW9uUHJvdG9jb2wgYWxwbl9yZXN1bHQ7CisjZW5kaWYKICAgYm9vbCBpbmNhY2hlOwogCiAgIERFQlVHQVNTRVJUKHNzbF9jb25uZWN0XzMgPT0gY29ubnNzbC0+Y29ubmVjdGluZ19zdGF0ZSk7CkBAIC01NTEsNiArNjI5LDQxIEBACiAgICAgcmV0dXJuIENVUkxFX1NTTF9DT05ORUNUX0VSUk9SOwogICB9CiAKKyNpZmRlZiBIQVNfQUxQTgorICBpZihjb25uLT5iaXRzLnRsc19lbmFibGVfYWxwbikgeworICAgIHNzcGlfc3RhdHVzID0gc19wU2VjRm4tPlF1ZXJ5Q29udGV4dEF0dHJpYnV0ZXMoJmNvbm5zc2wtPmN0eHQtPmN0eHRfaGFuZGxlLAorICAgICAgU0VDUEtHX0FUVFJfQVBQTElDQVRJT05fUFJPVE9DT0wsICZhbHBuX3Jlc3VsdCk7CisKKyAgICBpZihzc3BpX3N0YXR1cyAhPSBTRUNfRV9PSykgeworICAgICAgZmFpbGYoZGF0YSwgInNjaGFubmVsOiBmYWlsZWQgdG8gcmV0cmlldmUgQUxQTiByZXN1bHQiKTsKKyAgICAgIHJldHVybiBDVVJMRV9TU0xfQ09OTkVDVF9FUlJPUjsKKyAgICB9CisKKyAgICBpZihhbHBuX3Jlc3VsdC5Qcm90b05lZ29TdGF0dXMgPT0KKyAgICAgICBTZWNBcHBsaWNhdGlvblByb3RvY29sTmVnb3RpYXRpb25TdGF0dXNfU3VjY2VzcykgeworCisgICAgICBpbmZvZihkYXRhLCAic2NoYW5uZWw6IEFMUE4sIHNlcnZlciBhY2NlcHRlZCB0byB1c2UgJS4qc1xuIiwKKyAgICAgICAgYWxwbl9yZXN1bHQuUHJvdG9jb2xJZFNpemUsIGFscG5fcmVzdWx0LlByb3RvY29sSWQpOworCisjaWZkZWYgVVNFX05HSFRUUDIKKyAgICAgIGlmKGFscG5fcmVzdWx0LlByb3RvY29sSWRTaXplID09IE5HSFRUUDJfUFJPVE9fVkVSU0lPTl9JRF9MRU4gJiYKKyAgICAgICAgICFtZW1jbXAoTkdIVFRQMl9QUk9UT19WRVJTSU9OX0lELCBhbHBuX3Jlc3VsdC5Qcm90b2NvbElkLAorICAgICAgICAgIE5HSFRUUDJfUFJPVE9fVkVSU0lPTl9JRF9MRU4pKSB7CisgICAgICAgIGNvbm4tPm5lZ25wbiA9IENVUkxfSFRUUF9WRVJTSU9OXzI7CisgICAgICB9CisgICAgICBlbHNlCisjZW5kaWYKKyAgICAgIGlmKGFscG5fcmVzdWx0LlByb3RvY29sSWRTaXplID09IEFMUE5fSFRUUF8xXzFfTEVOR1RIICYmCisgICAgICAgICAhbWVtY21wKEFMUE5fSFRUUF8xXzEsIGFscG5fcmVzdWx0LlByb3RvY29sSWQsCisgICAgICAgICAgIEFMUE5fSFRUUF8xXzFfTEVOR1RIKSkgeworICAgICAgICBjb25uLT5uZWducG4gPSBDVVJMX0hUVFBfVkVSU0lPTl8xXzE7CisgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICAgIGluZm9mKGRhdGEsICJBTFBOLCBzZXJ2ZXIgZGlkIG5vdCBhZ3JlZSB0byBhIHByb3RvY29sXG4iKTsKKyAgfQorI2VuZGlmCisKICAgLyogaW5jcmVtZW50IHRoZSByZWZlcmVuY2UgY291bnRlciBvZiB0aGUgY3JlZGVudGlhbC9zZXNzaW9uIGhhbmRsZSAqLwogICBpZihjb25uc3NsLT5jcmVkICYmIGNvbm5zc2wtPmN0eHQpIHsKICAgICBjb25uc3NsLT5jcmVkLT5yZWZjb3VudCsrOwpAQCAtNzUxLDcgKzg2NCw3IEBACiAgIC8qIGNvcHkgZGF0YSBpbnRvIG91dHB1dCBidWZmZXIgKi8KICAgbWVtY3B5KG91dGJ1ZlsxXS5wdkJ1ZmZlciwgYnVmLCBsZW4pOwogCi0gIC8qIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS93aW5kb3dzL2Rlc2t0b3AvYWEzNzUzOTAuYXNweCAqLworICAvKiBodHRwczovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L3dpbmRvd3MvZGVza3RvcC9hYTM3NTM5MC5hc3B4ICovCiAgIHNzcGlfc3RhdHVzID0gc19wU2VjRm4tPkVuY3J5cHRNZXNzYWdlKCZjb25uc3NsLT5jdHh0LT5jdHh0X2hhbmRsZSwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm91dGJ1Zl9kZXNjLCAwKTsKIApAQCAtOTY1LDcgKzEwNzgsOCBAQAogICAgIEluaXRTZWNCdWZmZXIoJmluYnVmWzNdLCBTRUNCVUZGRVJfRU1QVFksIE5VTEwsIDApOwogICAgIEluaXRTZWNCdWZmZXJEZXNjKCZpbmJ1Zl9kZXNjLCBpbmJ1ZiwgNCk7CiAKLSAgICAvKiBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL2FhMzc1MzQ4LmFzcHggKi8KKyAgICAvKiBodHRwczovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L3dpbmRvd3MvZGVza3RvcC9hYTM3NTM0OC5hc3B4CisgICAgICAgKi8KICAgICBzc3BpX3N0YXR1cyA9IHNfcFNlY0ZuLT5EZWNyeXB0TWVzc2FnZSgmY29ubnNzbC0+Y3R4dC0+Y3R4dF9oYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmluYnVmX2Rlc2MsIDAsIE5VTEwpOwogCkBAIC0xMTEyLDEyICsxMjI2LDQxIEBACiAgICovCiAgIGlmKGxlbiAmJiAhY29ubnNzbC0+ZGVjZGF0YV9vZmZzZXQgJiYgY29ubnNzbC0+cmVjdl9jb25uZWN0aW9uX2Nsb3NlZCAmJgogICAgICAhY29ubnNzbC0+cmVjdl9zc3BpX2Nsb3NlX25vdGlmeSkgewotICAgIERXT1JEIHdpbnZlcl9mdWxsLCB3aW52ZXJfbWFqb3IsIHdpbnZlcl9taW5vcjsKLSAgICB3aW52ZXJfZnVsbCA9IEdldFZlcnNpb24oKTsKLSAgICB3aW52ZXJfbWFqb3IgPSAoRFdPUkQpKExPQllURShMT1dPUkQod2ludmVyX2Z1bGwpKSk7Ci0gICAgd2ludmVyX21pbm9yID0gKERXT1JEKShISUJZVEUoTE9XT1JEKHdpbnZlcl9mdWxsKSkpOworICAgIGJvb2wgaXNXaW4yayA9IEZBTFNFOwogCi0gICAgaWYod2ludmVyX21ham9yID09IDUgJiYgd2ludmVyX21pbm9yID09IDAgJiYgc3NwaV9zdGF0dXMgPT0gU0VDX0VfT0spCisjaWYgIWRlZmluZWQoX1dJTjMyX1dJTk5UKSB8fCAhZGVmaW5lZChfV0lOMzJfV0lOTlRfV0lOMkspIHx8IFwKKyAgICAoX1dJTjMyX1dJTk5UIDwgX1dJTjMyX1dJTk5UX1dJTjJLKQorICAgIE9TVkVSU0lPTklORk8gb3N2ZXI7CisKKyAgICBtZW1zZXQoJm9zdmVyLCAwLCBzaXplb2Yob3N2ZXIpKTsKKyAgICBvc3Zlci5kd09TVmVyc2lvbkluZm9TaXplID0gc2l6ZW9mKG9zdmVyKTsKKworICAgIC8qIEZpbmQgb3V0IHRoZSBXaW5kb3dzIHZlcnNpb24gKi8KKyAgICBpZihHZXRWZXJzaW9uRXgoJm9zdmVyKSkgeworICAgICAgLyogVmVyaWZ5IHRoZSB2ZXJzaW9uIG51bWJlciBpcyA1LjAgKi8KKyAgICAgIGlmKG9zdmVyLmR3TWFqb3JWZXJzaW9uID09IDUgJiYgb3N2ZXIuZHdNaW5vclZlcnNpb24gPT0gMCkKKyAgICAgICAgaXNXaW4yayA9IFRSVUU7CisgICAgfQorI2Vsc2UKKyAgICBVTE9OR0xPTkcgY207CisgICAgT1NWRVJTSU9OSU5GT0VYIG9zdmVyOworCisgICAgbWVtc2V0KCZvc3ZlciwgMCwgc2l6ZW9mKG9zdmVyKSk7CisgICAgb3N2ZXIuZHdPU1ZlcnNpb25JbmZvU2l6ZSA9IHNpemVvZihvc3Zlcik7CisgICAgb3N2ZXIuZHdNYWpvclZlcnNpb24gPSA1OworCisgICAgY20gPSBWZXJTZXRDb25kaXRpb25NYXNrKDAsIFZFUl9NQUpPUlZFUlNJT04sIFZFUl9FUVVBTCk7CisgICAgY20gPSBWZXJTZXRDb25kaXRpb25NYXNrKGNtLCBWRVJfTUlOT1JWRVJTSU9OLCBWRVJfRVFVQUwpOworICAgIGNtID0gVmVyU2V0Q29uZGl0aW9uTWFzayhjbSwgVkVSX1NFUlZJQ0VQQUNLTUFKT1IsIFZFUl9HUkVBVEVSX0VRVUFMKTsKKyAgICBjbSA9IFZlclNldENvbmRpdGlvbk1hc2soY20sIFZFUl9TRVJWSUNFUEFDS01JTk9SLCBWRVJfR1JFQVRFUl9FUVVBTCk7CisKKyAgICBpZihWZXJpZnlWZXJzaW9uSW5mbygmb3N2ZXIsIChWRVJfTUFKT1JWRVJTSU9OIHwgVkVSX01JTk9SVkVSU0lPTiB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVkVSX1NFUlZJQ0VQQUNLTUFKT1IgfCBWRVJfU0VSVklDRVBBQ0tNSU5PUiksCisgICAgICAgICAgICAgICAgICAgICAgICAgY20pKQorICAgICAgaXNXaW4yayA9IFRSVUU7CisjZW5kaWYKKworICAgIGlmKGlzV2luMmsgJiYgc3NwaV9zdGF0dXMgPT0gU0VDX0VfT0spCiAgICAgICBjb25uc3NsLT5yZWN2X3NzcGlfY2xvc2Vfbm90aWZ5ID0gdHJ1ZTsKICAgICBlbHNlIHsKICAgICAgICplcnIgPSBDVVJMRV9SRUNWX0VSUk9SOwpAQCAtMTE4Myw3ICsxMzI2LDcgQEAKIAogICBpZihjb25uc3NsLT51c2UpIC8qIFNTTC9UTFMgaXMgaW4gdXNlICovCiAgICAgcmV0dXJuIChjb25uc3NsLT5lbmNkYXRhX29mZnNldCA+IDAgfHwKLSAgICAgICAgICAgIGNvbm5zc2wtPmRlY2RhdGFfb2Zmc2V0ID4gMCApID8gVFJVRSA6IEZBTFNFOworICAgICAgICAgICAgY29ubnNzbC0+ZGVjZGF0YV9vZmZzZXQgPiAwKSA/IFRSVUUgOiBGQUxTRTsKICAgZWxzZQogICAgIHJldHVybiBGQUxTRTsKIH0KQEAgLTExOTcsNyArMTM0MCw3IEBACiAKIGludCBDdXJsX3NjaGFubmVsX3NodXRkb3duKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwgaW50IHNvY2tpbmRleCkKIHsKLSAgLyogU2VlIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS93aW5kb3dzL2Rlc2t0b3AvYWEzODAxMzguYXNweAorICAvKiBTZWUgaHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS93aW5kb3dzL2Rlc2t0b3AvYWEzODAxMzguYXNweAogICAgKiBTaHV0dGluZyBEb3duIGFuIFNjaGFubmVsIENvbm5lY3Rpb24KICAgICovCiAgIHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhID0gY29ubi0+ZGF0YTsKQEAgLTEzODQsNyArMTUyNyw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBDZXJ0Q29udGV4dFNlcnZlci0+aENlcnRTdG9yZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkNoYWluUGFyYSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGEtPnNldC5zc2xfbm9fcmV2b2tlID8gMCA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRVJUX0NIQUlOX1JFVk9DQVRJT05fQ0hFQ0tfQ0hBSU4pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcENoYWluQ29udGV4dCkpIHsKICAgICAgIGZhaWxmKGRhdGEsICJzY2hhbm5lbDogQ2VydEdldENlcnRpZmljYXRlQ2hhaW4gZmFpbGVkOiAlcyIsCkBAIC0xMzk1LDIxICsxNTM5LDI0IEBACiAKICAgICBpZihyZXN1bHQgPT0gQ1VSTEVfT0spIHsKICAgICAgIENFUlRfU0lNUExFX0NIQUlOICpwU2ltcGxlQ2hhaW4gPSBwQ2hhaW5Db250ZXh0LT5yZ3BDaGFpblswXTsKLSAgICAgIERXT1JEIGR3VHJ1c3RFcnJvck1hc2sgPSB+KERXT1JEKShDRVJUX1RSVVNUX0lTX05PVF9USU1FX05FU1RFRHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRVJUX1RSVVNUX1JFVk9DQVRJT05fU1RBVFVTX1VOS05PV04pOworICAgICAgRFdPUkQgZHdUcnVzdEVycm9yTWFzayA9IH4oRFdPUkQpKENFUlRfVFJVU1RfSVNfTk9UX1RJTUVfTkVTVEVEKTsKICAgICAgIGR3VHJ1c3RFcnJvck1hc2sgJj0gcFNpbXBsZUNoYWluLT5UcnVzdFN0YXR1cy5kd0Vycm9yU3RhdHVzOwogICAgICAgaWYoZHdUcnVzdEVycm9yTWFzaykgewotICAgICAgICBpZihkd1RydXN0RXJyb3JNYXNrICYgQ0VSVF9UUlVTVF9JU19QQVJUSUFMX0NIQUlOKQorICAgICAgICBpZihkd1RydXN0RXJyb3JNYXNrICYgQ0VSVF9UUlVTVF9JU19SRVZPS0VEKQorICAgICAgICAgIGZhaWxmKGRhdGEsICJzY2hhbm5lbDogQ2VydEdldENlcnRpZmljYXRlQ2hhaW4gdHJ1c3QgZXJyb3IiCisgICAgICAgICAgICAgICAgIiBDRVJUX1RSVVNUX0lTX1JFVk9LRUQiKTsKKyAgICAgICAgZWxzZSBpZihkd1RydXN0RXJyb3JNYXNrICYgQ0VSVF9UUlVTVF9JU19QQVJUSUFMX0NIQUlOKQogICAgICAgICAgIGZhaWxmKGRhdGEsICJzY2hhbm5lbDogQ2VydEdldENlcnRpZmljYXRlQ2hhaW4gdHJ1c3QgZXJyb3IiCiAgICAgICAgICAgICAgICAgIiBDRVJUX1RSVVNUX0lTX1BBUlRJQUxfQ0hBSU4iKTsKLSAgICAgICAgaWYoZHdUcnVzdEVycm9yTWFzayAmIENFUlRfVFJVU1RfSVNfVU5UUlVTVEVEX1JPT1QpCisgICAgICAgIGVsc2UgaWYoZHdUcnVzdEVycm9yTWFzayAmIENFUlRfVFJVU1RfSVNfVU5UUlVTVEVEX1JPT1QpCiAgICAgICAgICAgZmFpbGYoZGF0YSwgInNjaGFubmVsOiBDZXJ0R2V0Q2VydGlmaWNhdGVDaGFpbiB0cnVzdCBlcnJvciIKICAgICAgICAgICAgICAgICAiIENFUlRfVFJVU1RfSVNfVU5UUlVTVEVEX1JPT1QiKTsKLSAgICAgICAgaWYoZHdUcnVzdEVycm9yTWFzayAmIENFUlRfVFJVU1RfSVNfTk9UX1RJTUVfVkFMSUQpCisgICAgICAgIGVsc2UgaWYoZHdUcnVzdEVycm9yTWFzayAmIENFUlRfVFJVU1RfSVNfTk9UX1RJTUVfVkFMSUQpCiAgICAgICAgICAgZmFpbGYoZGF0YSwgInNjaGFubmVsOiBDZXJ0R2V0Q2VydGlmaWNhdGVDaGFpbiB0cnVzdCBlcnJvciIKICAgICAgICAgICAgICAgICAiIENFUlRfVFJVU1RfSVNfTk9UX1RJTUVfVkFMSUQiKTsKLSAgICAgICAgZmFpbGYoZGF0YSwgInNjaGFubmVsOiBDZXJ0R2V0Q2VydGlmaWNhdGVDaGFpbiBlcnJvciBtYXNrOiAweCUwOHgiLAotICAgICAgICAgICAgICBkd1RydXN0RXJyb3JNYXNrKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgIGZhaWxmKGRhdGEsICJzY2hhbm5lbDogQ2VydEdldENlcnRpZmljYXRlQ2hhaW4gZXJyb3IgbWFzazogMHglMDh4IiwKKyAgICAgICAgICAgICAgICBkd1RydXN0RXJyb3JNYXNrKTsKICAgICAgICAgcmVzdWx0ID0gQ1VSTEVfUEVFUl9GQUlMRURfVkVSSUZJQ0FUSU9OOwogICAgICAgfQogICAgIH0KQEAgLTE0MjUsNiArMTU3MiwxNCBAQAogICAgICAgY2VydF9ob3N0bmFtZS5jb25zdF90Y2hhcl9wdHIgPSBjZXJ0X2hvc3RuYW1lX2J1ZmY7CiAgICAgICBob3N0bmFtZS50Y2hhcl9wdHIgPSBDdXJsX2NvbnZlcnRfVVRGOF90b190Y2hhcihjb25uLT5ob3N0Lm5hbWUpOwogCisgICAgICAvKiBUT0RPOiBGaXggdGhpcyBmb3IgY2VydGlmaWNhdGVzIHdpdGggbXVsdGlwbGUgYWx0ZXJuYXRpdmUgbmFtZXMuCisgICAgICBSaWdodCBub3cgd2UncmUgb25seSBhc2tpbmcgZm9yIHRoZSBmaXJzdCBwcmVmZXJyZWQgYWx0ZXJuYXRpdmUgbmFtZS4KKyAgICAgIEluc3RlYWQgd2UnZCBuZWVkIHRvIGRvIGFsbCB2aWEgQ0VSVF9OQU1FX1NFQVJDSF9BTExfTkFNRVNfRkxBRworICAgICAgKGlmIFdpbkNFIHN1cHBvcnRzIHRoYXQ/KSBhbmQgcnVuIHRoaXMgc2VjdGlvbiBpbiBhIGxvb3AgZm9yIGVhY2guCisgICAgICBodHRwczovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L3dpbmRvd3MvZGVza3RvcC9hYTM3NjA4Ni5hc3B4CisgICAgICBjdXJsOiAoNTEpIHNjaGFubmVsOiBDZXJ0R2V0TmFtZVN0cmluZygpIGNlcnRpZmljYXRlIGhvc3RuYW1lCisgICAgICAoLmdvb2dsZS5jb20pIGRpZCBub3QgbWF0Y2ggY29ubmVjdGlvbiAoZ29vZ2xlLmNvbSkKKyAgICAgICovCiAgICAgICBsZW4gPSBDZXJ0R2V0TmFtZVN0cmluZyhwQ2VydENvbnRleHRTZXJ2ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRVJUX05BTUVfRE5TX1RZUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLApkaWZmIC0tZ2l0IGEvbGliL3Z0bHMvc2NoYW5uZWwuaCBiL2xpYi92dGxzL3NjaGFubmVsLmgKaW5kZXggNTMyOTU4NC4uYTMxNGIzNCAxMDA2NDQKLS0tIGEvbGliL3Z0bHMvc2NoYW5uZWwuaAorKysgYi9saWIvdnRscy9zY2hhbm5lbC5oCkBAIC0xMiw3ICsxMiw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL3Z0bHMvdnRscy5jIGIvbGliL3Z0bHMvdnRscy5jCmluZGV4IDQyYTJiNTguLmNhNTA1YTcgMTAwNjQ0Ci0tLSBhL2xpYi92dGxzL3Z0bHMuYworKysgYi9saWIvdnRscy92dGxzLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC00MSw3ICs0MSw3IEBACiAgICBkZWZpbmVzL21hY3JvcyAjZGVmaW5lZCBieSB0aGUgbGliLXNwZWNpZmljIGhlYWRlciBmaWxlcy4KIAogICAgIlNTTC9UTFMgU3Ryb25nIEVuY3J5cHRpb246IEFuIEludHJvZHVjdGlvbiIKLSAgIGh0dHA6Ly9odHRwZC5hcGFjaGUub3JnL2RvY3MtMi4wL3NzbC9zc2xfaW50cm8uaHRtbAorICAgaHR0cHM6Ly9odHRwZC5hcGFjaGUub3JnL2RvY3MvMi4wL3NzbC9zc2xfaW50cm8uaHRtbAogKi8KIAogI2luY2x1ZGUgImN1cmxfc2V0dXAuaCIKQEAgLTM2Myw2ICszNjMsMTIgQEAKICAgICAgIC8qIG5vdCBzZXNzaW9uIElEIG1lYW5zIGJsYW5rIGVudHJ5ICovCiAgICAgICBjb250aW51ZTsKICAgICBpZihDdXJsX3Jhd19lcXVhbChjb25uLT5ob3N0Lm5hbWUsIGNoZWNrLT5uYW1lKSAmJgorICAgICAgICgoIWNvbm4tPmJpdHMuY29ubl90b19ob3N0ICYmICFjaGVjay0+Y29ubl90b19ob3N0KSB8fAorICAgICAgICAgKGNvbm4tPmJpdHMuY29ubl90b19ob3N0ICYmIGNoZWNrLT5jb25uX3RvX2hvc3QgJiYKKyAgICAgICAgICAgQ3VybF9yYXdfZXF1YWwoY29ubi0+Y29ubl90b19ob3N0Lm5hbWUsIGNoZWNrLT5jb25uX3RvX2hvc3QpKSkgJiYKKyAgICAgICAoKCFjb25uLT5iaXRzLmNvbm5fdG9fcG9ydCAmJiBjaGVjay0+Y29ubl90b19wb3J0ID09IC0xKSB8fAorICAgICAgICAgKGNvbm4tPmJpdHMuY29ubl90b19wb3J0ICYmIGNoZWNrLT5jb25uX3RvX3BvcnQgIT0gLTEgJiYKKyAgICAgICAgICAgY29ubi0+Y29ubl90b19wb3J0ID09IGNoZWNrLT5jb25uX3RvX3BvcnQpKSAmJgogICAgICAgIChjb25uLT5yZW1vdGVfcG9ydCA9PSBjaGVjay0+cmVtb3RlX3BvcnQpICYmCiAgICAgICAgQ3VybF9zc2xfY29uZmlnX21hdGNoZXMoJmNvbm4tPnNzbF9jb25maWcsICZjaGVjay0+c3NsX2NvbmZpZykpIHsKICAgICAgIC8qIHllcywgd2UgaGF2ZSBhIHNlc3Npb24gSUQhICovCkBAIC00MDAsNiArNDA2LDcgQEAKICAgICBDdXJsX2ZyZWVfc3NsX2NvbmZpZygmc2Vzc2lvbi0+c3NsX2NvbmZpZyk7CiAKICAgICBDdXJsX3NhZmVmcmVlKHNlc3Npb24tPm5hbWUpOworICAgIEN1cmxfc2FmZWZyZWUoc2Vzc2lvbi0+Y29ubl90b19ob3N0KTsKICAgfQogfQogCkBAIC00NDIsNiArNDQ5LDggQEAKICAgc3RydWN0IGN1cmxfc3NsX3Nlc3Npb24gKnN0b3JlID0gJmRhdGEtPnN0YXRlLnNlc3Npb25bMF07CiAgIGxvbmcgb2xkZXN0X2FnZT1kYXRhLT5zdGF0ZS5zZXNzaW9uWzBdLmFnZTsgLyogemVybyBpZiB1bnVzZWQgKi8KICAgY2hhciAqY2xvbmVfaG9zdDsKKyAgY2hhciAqY2xvbmVfY29ubl90b19ob3N0OworICBpbnQgY29ubl90b19wb3J0OwogICBsb25nICpnZW5lcmFsX2FnZTsKIAogICAvKiBFdmVuIHRob3VnaCBzZXNzaW9uIElEIHJlLXVzZSBtaWdodCBiZSBkaXNhYmxlZCwgdGhhdCBvbmx5IGRpc2FibGVzIFVTSU5HCkBAIC00NTIsNiArNDYxLDIxIEBACiAgIGlmKCFjbG9uZV9ob3N0KQogICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOyAvKiBiYWlsIG91dCAqLwogCisgIGlmKGNvbm4tPmJpdHMuY29ubl90b19ob3N0KSB7CisgICAgY2xvbmVfY29ubl90b19ob3N0ID0gc3RyZHVwKGNvbm4tPmNvbm5fdG9faG9zdC5uYW1lKTsKKyAgICBpZighY2xvbmVfY29ubl90b19ob3N0KSB7CisgICAgICBmcmVlKGNsb25lX2hvc3QpOworICAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7IC8qIGJhaWwgb3V0ICovCisgICAgfQorICB9CisgIGVsc2UKKyAgICBjbG9uZV9jb25uX3RvX2hvc3QgPSBOVUxMOworCisgIGlmKGNvbm4tPmJpdHMuY29ubl90b19wb3J0KQorICAgIGNvbm5fdG9fcG9ydCA9IGNvbm4tPmNvbm5fdG9fcG9ydDsKKyAgZWxzZQorICAgIGNvbm5fdG9fcG9ydCA9IC0xOworCiAgIC8qIE5vdyB3ZSBzaG91bGQgYWRkIHRoZSBzZXNzaW9uIElEIGFuZCB0aGUgaG9zdCBuYW1lIHRvIHRoZSBjYWNoZSwgKHJlbW92ZQogICAgICB0aGUgb2xkZXN0IGlmIG5lY2Vzc2FyeSkgKi8KIApAQCAtNDg0LDEwICs1MDgsMTIgQEAKICAgc3RvcmUtPmFnZSA9ICpnZW5lcmFsX2FnZTsgICAgLyogc2V0IGN1cnJlbnQgYWdlICovCiAgICAgLyogZnJlZSBpdCBpZiB0aGVyZSdzIG9uZSBhbHJlYWR5IHByZXNlbnQgKi8KICAgZnJlZShzdG9yZS0+bmFtZSk7CisgIGZyZWUoc3RvcmUtPmNvbm5fdG9faG9zdCk7CiAgIHN0b3JlLT5uYW1lID0gY2xvbmVfaG9zdDsgICAgICAgICAgICAgICAvKiBjbG9uZSBob3N0IG5hbWUgKi8KKyAgc3RvcmUtPmNvbm5fdG9faG9zdCA9IGNsb25lX2Nvbm5fdG9faG9zdDsgLyogY2xvbmUgY29ubmVjdCB0byBob3N0IG5hbWUgKi8KKyAgc3RvcmUtPmNvbm5fdG9fcG9ydCA9IGNvbm5fdG9fcG9ydDsgLyogY29ubmVjdCB0byBwb3J0IG51bWJlciAqLwogICBzdG9yZS0+cmVtb3RlX3BvcnQgPSBjb25uLT5yZW1vdGVfcG9ydDsgLyogcG9ydCBudW1iZXIgKi8KIAotCiAgIC8qIFVubG9jayAqLwogICBpZihTU0xTRVNTSU9OX1NIQVJFRChkYXRhKSkKICAgICBDdXJsX3NoYXJlX3VubG9jayhkYXRhLCBDVVJMX0xPQ0tfREFUQV9TU0xfU0VTU0lPTik7CkBAIC00OTUsNiArNTIxLDcgQEAKICAgaWYoIUN1cmxfY2xvbmVfc3NsX2NvbmZpZygmY29ubi0+c3NsX2NvbmZpZywgJnN0b3JlLT5zc2xfY29uZmlnKSkgewogICAgIHN0b3JlLT5zZXNzaW9uaWQgPSBOVUxMOyAvKiBsZXQgY2FsbGVyIGZyZWUgc2Vzc2lvbmlkICovCiAgICAgZnJlZShjbG9uZV9ob3N0KTsKKyAgICBmcmVlKGNsb25lX2Nvbm5fdG9faG9zdCk7CiAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CiAgIH0KIApAQCAtNzY1LDcgKzc5Miw4IEBACiAgKiBHZW5lcmljIHBpbm5lZCBwdWJsaWMga2V5IGNoZWNrLgogICovCiAKLUNVUkxjb2RlIEN1cmxfcGluX3BlZXJfcHVia2V5KGNvbnN0IGNoYXIgKnBpbm5lZHB1YmtleSwKK0NVUkxjb2RlIEN1cmxfcGluX3BlZXJfcHVia2V5KHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGlubmVkcHVia2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqcHVia2V5LCBzaXplX3QgcHVia2V5bGVuKQogewogICBGSUxFICpmcDsKQEAgLTc3NCwxMiArODAyLDgxIEBACiAgIHNpemVfdCBzaXplLCBwZW1fbGVuOwogICBDVVJMY29kZSBwZW1fcmVhZDsKICAgQ1VSTGNvZGUgcmVzdWx0ID0gQ1VSTEVfU1NMX1BJTk5FRFBVQktFWU5PVE1BVENIOworI2lmZGVmIGN1cmxzc2xfc2hhMjU2c3VtCisgIENVUkxjb2RlIGVuY29kZTsKKyAgc2l6ZV90IGVuY29kZWRsZW4sIHBpbmtleWxlbjsKKyAgY2hhciAqZW5jb2RlZCwgKnBpbmtleWNvcHksICpiZWdpbl9wb3MsICplbmRfcG9zOworICB1bnNpZ25lZCBjaGFyICpzaGEyNTZzdW1kaWdlc3QgPSBOVUxMOworI2VuZGlmCiAKICAgLyogaWYgYSBwYXRoIHdhc24ndCBzcGVjaWZpZWQsIGRvbid0IHBpbiAqLwogICBpZighcGlubmVkcHVia2V5KQogICAgIHJldHVybiBDVVJMRV9PSzsKICAgaWYoIXB1YmtleSB8fCAhcHVia2V5bGVuKQogICAgIHJldHVybiByZXN1bHQ7CisKKyAgLyogb25seSBkbyB0aGlzIGlmIHBpbm5lZHB1YmtleSBzdGFydHMgd2l0aCAic2hhMjU2Ly8iLCBsZW5ndGggOCAqLworICBpZihzdHJuY21wKHBpbm5lZHB1YmtleSwgInNoYTI1Ni8vIiwgOCkgPT0gMCkgeworI2lmZGVmIGN1cmxzc2xfc2hhMjU2c3VtCisgICAgLyogY29tcHV0ZSBzaGEyNTZzdW0gb2YgcHVibGljIGtleSAqLworICAgIHNoYTI1NnN1bWRpZ2VzdCA9IG1hbGxvYyhTSEEyNTZfRElHRVNUX0xFTkdUSCk7CisgICAgaWYoIXNoYTI1NnN1bWRpZ2VzdCkKKyAgICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOworICAgIGN1cmxzc2xfc2hhMjU2c3VtKHB1YmtleSwgcHVia2V5bGVuLAorICAgICAgICAgICAgICAgICAgICAgIHNoYTI1NnN1bWRpZ2VzdCwgU0hBMjU2X0RJR0VTVF9MRU5HVEgpOworICAgIGVuY29kZSA9IEN1cmxfYmFzZTY0X2VuY29kZShkYXRhLCAoY2hhciAqKXNoYTI1NnN1bWRpZ2VzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0hBMjU2X0RJR0VTVF9MRU5HVEgsICZlbmNvZGVkLCAmZW5jb2RlZGxlbik7CisgICAgQ3VybF9zYWZlZnJlZShzaGEyNTZzdW1kaWdlc3QpOworCisgICAgaWYoZW5jb2RlKQorICAgICAgcmV0dXJuIGVuY29kZTsKKworICAgIGluZm9mKGRhdGEsICJcdCBwdWJsaWMga2V5IGhhc2g6IHNoYTI1Ni8vJXNcbiIsIGVuY29kZWQpOworCisgICAgLyogaXQgc3RhcnRzIHdpdGggc2hhMjU2Ly8sIGNvcHkgc28gd2UgY2FuIG1vZGlmeSBpdCAqLworICAgIHBpbmtleWxlbiA9IHN0cmxlbihwaW5uZWRwdWJrZXkpICsgMTsKKyAgICBwaW5rZXljb3B5ID0gbWFsbG9jKHBpbmtleWxlbik7CisgICAgaWYoIXBpbmtleWNvcHkpIHsKKyAgICAgIEN1cmxfc2FmZWZyZWUoZW5jb2RlZCk7CisgICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKyAgICB9CisgICAgbWVtY3B5KHBpbmtleWNvcHksIHBpbm5lZHB1YmtleSwgcGlua2V5bGVuKTsKKyAgICAvKiBwb2ludCBiZWdpbl9wb3MgdG8gdGhlIGNvcHksIGFuZCBzdGFydCBleHRyYWN0aW5nIGtleXMgKi8KKyAgICBiZWdpbl9wb3MgPSBwaW5rZXljb3B5OworICAgIGRvIHsKKyAgICAgIGVuZF9wb3MgPSBzdHJzdHIoYmVnaW5fcG9zLCAiO3NoYTI1Ni8vIik7CisgICAgICAvKgorICAgICAgICogaWYgdGhlcmUgaXMgYW4gZW5kX3BvcywgbnVsbCB0ZXJtaW5hdGUsCisgICAgICAgKiBvdGhlcndpc2UgaXQnbGwgZ28gdG8gdGhlIGVuZCBvZiB0aGUgb3JpZ2luYWwgc3RyaW5nCisgICAgICAgKi8KKyAgICAgIGlmKGVuZF9wb3MpCisgICAgICAgIGVuZF9wb3NbMF0gPSAnXDAnOworCisgICAgICAvKiBjb21wYXJlIGJhc2U2NCBzaGEyNTYgZGlnZXN0cywgOCBpcyB0aGUgbGVuZ3RoIG9mICJzaGEyNTYvLyIgKi8KKyAgICAgIGlmKGVuY29kZWRsZW4gPT0gc3RybGVuKGJlZ2luX3BvcyArIDgpICYmCisgICAgICAgICAhbWVtY21wKGVuY29kZWQsIGJlZ2luX3BvcyArIDgsIGVuY29kZWRsZW4pKSB7CisgICAgICAgIHJlc3VsdCA9IENVUkxFX09LOworICAgICAgICBicmVhazsKKyAgICAgIH0KKworICAgICAgLyoKKyAgICAgICAqIGNoYW5nZSBiYWNrIHRoZSBudWxsLXRlcm1pbmF0b3Igd2UgY2hhbmdlZCBlYXJsaWVyLAorICAgICAgICogYW5kIGxvb2sgZm9yIG5leHQgYmVnaW4KKyAgICAgICAqLworICAgICAgaWYoZW5kX3BvcykgeworICAgICAgICBlbmRfcG9zWzBdID0gJzsnOworICAgICAgICBiZWdpbl9wb3MgPSBzdHJzdHIoZW5kX3BvcywgInNoYTI1Ni8vIik7CisgICAgICB9CisgICAgfSB3aGlsZShlbmRfcG9zICYmIGJlZ2luX3Bvcyk7CisgICAgQ3VybF9zYWZlZnJlZShlbmNvZGVkKTsKKyAgICBDdXJsX3NhZmVmcmVlKHBpbmtleWNvcHkpOworI2Vsc2UKKyAgICAvKiB3aXRob3V0IHNoYTI1NiBzdXBwb3J0LCB0aGlzIGNhbm5vdCBtYXRjaCAqLworICAgICh2b2lkKWRhdGE7CisjZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0OworICB9CisKICAgZnAgPSBmb3BlbihwaW5uZWRwdWJrZXksICJyYiIpOwogICBpZighZnApCiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL2xpYi92dGxzL3Z0bHMuaCBiL2xpYi92dGxzL3Z0bHMuaAppbmRleCBiOTc0MWQ3Li4zMWJhOWZjIDEwMDY0NAotLS0gYS9saWIvdnRscy92dGxzLmgKKysrIGIvbGliL3Z0bHMvdnRscy5oCkBAIC03LDExICs3LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgImN5YXNzbC5oIiAgICAgICAgIC8qIEN5YVNTTCB2ZXJzaW9ucyAqLwogI2luY2x1ZGUgInNjaGFubmVsLmgiICAgICAgIC8qIFNjaGFubmVsIFNTUEkgdmVyc2lvbiAqLwogI2luY2x1ZGUgImRhcndpbnNzbC5oIiAgICAgIC8qIFNlY3VyZVRyYW5zcG9ydCAoRGFyd2luKSB2ZXJzaW9uICovCisjaW5jbHVkZSAibWJlZHRscy5oIiAgICAgICAgLyogbWJlZFRMUyB2ZXJzaW9ucyAqLwogCiAjaWZuZGVmIE1BWF9QSU5ORURfUFVCS0VZX1NJWkUKICNkZWZpbmUgTUFYX1BJTk5FRF9QVUJLRVlfU0laRSAxMDQ4NTc2IC8qIDFNQiAqLwpAQCAtNDEsNyArNDIsMTEgQEAKICNkZWZpbmUgTUQ1X0RJR0VTVF9MRU5HVEggMTYgLyogZml4ZWQgc2l6ZSAqLwogI2VuZGlmCiAKLS8qIHNlZSBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1pZXRmLXRscy1hcHBsYXllcnByb3RvbmVnLTA0ICovCisjaWZuZGVmIFNIQTI1Nl9ESUdFU1RfTEVOR1RICisjZGVmaW5lIFNIQTI1Nl9ESUdFU1RfTEVOR1RIIDMyIC8qIGZpeGVkIHNpemUgKi8KKyNlbmRpZgorCisvKiBzZWUgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LWlldGYtdGxzLWFwcGxheWVycHJvdG9uZWctMDQgKi8KICNkZWZpbmUgQUxQTl9IVFRQXzFfMV9MRU5HVEggOAogI2RlZmluZSBBTFBOX0hUVFBfMV8xICJodHRwLzEuMSIKIApAQCAtOTQsNyArOTksNyBAQAogLyogZXh0cmFjdCBhIHNlc3Npb24gSUQgKi8KIGJvb2wgQ3VybF9zc2xfZ2V0c2Vzc2lvbmlkKHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKipzc2xfc2Vzc2lvbmlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICppZHNpemUpIC8qIHNldCAwIGlmIHVua25vd24gKi87CisgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKmlkc2l6ZSk7IC8qIHNldCAwIGlmIHVua25vd24gKi8KIC8qIGFkZCBhIG5ldyBzZXNzaW9uIElEICovCiBDVVJMY29kZSBDdXJsX3NzbF9hZGRzZXNzaW9uaWQoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnNzbF9zZXNzaW9uaWQsCkBAIC0xMTMsNyArMTE4LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICptZDVzdW0sIC8qIG91dHB1dCAqLwogICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBtZDVsZW4pOwogLyogQ2hlY2sgcGlubmVkIHB1YmxpYyBrZXkuICovCi1DVVJMY29kZSBDdXJsX3Bpbl9wZWVyX3B1YmtleShjb25zdCBjaGFyICpwaW5uZWRwdWJrZXksCitDVVJMY29kZSBDdXJsX3Bpbl9wZWVyX3B1YmtleShzdHJ1Y3QgU2Vzc2lvbkhhbmRsZSAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBpbm5lZHB1YmtleSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnB1YmtleSwgc2l6ZV90IHB1YmtleWxlbik7CiAKIGJvb2wgQ3VybF9zc2xfY2VydF9zdGF0dXNfcmVxdWVzdCh2b2lkKTsKZGlmZiAtLWdpdCBhL2xpYi93YXJubGVzcy5jIGIvbGliL3dhcm5sZXNzLmMKaW5kZXggOTQ4MmI0NC4uN2Y4Nzc4ZiAxMDA2NDQKLS0tIGEvbGliL3dhcm5sZXNzLmMKKysrIGIvbGliL3dhcm5sZXNzLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zMTYsNiArMzE2LDYzIEBACiB9CiAKIC8qCisqKiB1bnNpZ25lZCBpbnQgdG8gdW5zaWduZWQgc2hvcnQKKyovCisKK3Vuc2lnbmVkIHNob3J0IGN1cmx4X3VpdG91cyh1bnNpZ25lZCBpbnQgdWludW0pCit7CisjaWZkZWYgX19JTlRFTF9DT01QSUxFUgorIyAgcHJhZ21hIHdhcm5pbmcocHVzaCkKKyMgIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6ODEwKSAvKiBjb252ZXJzaW9uIG1heSBsb3NlIHNpZ25pZmljYW50IGJpdHMgKi8KKyNlbmRpZgorCisgIERFQlVHQVNTRVJUKHVpbnVtIDw9ICh1bnNpZ25lZCBpbnQpIENVUkxfTUFTS19VU0hPUlQpOworICByZXR1cm4gKHVuc2lnbmVkIHNob3J0KSAodWludW0gJiAodW5zaWduZWQgaW50KSBDVVJMX01BU0tfVVNIT1JUKTsKKworI2lmZGVmIF9fSU5URUxfQ09NUElMRVIKKyMgIHByYWdtYSB3YXJuaW5nKHBvcCkKKyNlbmRpZgorfQorCisvKgorKiogdW5zaWduZWQgaW50IHRvIHVuc2lnbmVkIGNoYXIKKyovCisKK3Vuc2lnbmVkIGNoYXIgY3VybHhfdWl0b3VjKHVuc2lnbmVkIGludCB1aW51bSkKK3sKKyNpZmRlZiBfX0lOVEVMX0NPTVBJTEVSCisjICBwcmFnbWEgd2FybmluZyhwdXNoKQorIyAgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo4MTApIC8qIGNvbnZlcnNpb24gbWF5IGxvc2Ugc2lnbmlmaWNhbnQgYml0cyAqLworI2VuZGlmCisKKyAgREVCVUdBU1NFUlQodWludW0gPD0gKHVuc2lnbmVkIGludCkgQ1VSTF9NQVNLX1VDSEFSKTsKKyAgcmV0dXJuICh1bnNpZ25lZCBjaGFyKSAodWludW0gJiAodW5zaWduZWQgaW50KSBDVVJMX01BU0tfVUNIQVIpOworCisjaWZkZWYgX19JTlRFTF9DT01QSUxFUgorIyAgcHJhZ21hIHdhcm5pbmcocG9wKQorI2VuZGlmCit9CisKKy8qCisqKiB1bnNpZ25lZCBpbnQgdG8gc2lnbmVkIGludAorKi8KKworaW50IGN1cmx4X3VpdG9zaSh1bnNpZ25lZCBpbnQgdWludW0pCit7CisjaWZkZWYgX19JTlRFTF9DT01QSUxFUgorIyAgcHJhZ21hIHdhcm5pbmcocHVzaCkKKyMgIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6ODEwKSAvKiBjb252ZXJzaW9uIG1heSBsb3NlIHNpZ25pZmljYW50IGJpdHMgKi8KKyNlbmRpZgorCisgIERFQlVHQVNTRVJUKHVpbnVtIDw9ICh1bnNpZ25lZCBpbnQpIENVUkxfTUFTS19TSU5UKTsKKyAgcmV0dXJuIChpbnQpICh1aW51bSAmICh1bnNpZ25lZCBpbnQpIENVUkxfTUFTS19TSU5UKTsKKworI2lmZGVmIF9fSU5URUxfQ09NUElMRVIKKyMgIHByYWdtYSB3YXJuaW5nKHBvcCkKKyNlbmRpZgorfQorCisvKgogKiogc2lnbmVkIGludCB0byB1bnNpZ25lZCBzaXplX3QKICovCiAKZGlmZiAtLWdpdCBhL2xpYi93YXJubGVzcy5oIGIvbGliL3dhcm5sZXNzLmgKaW5kZXggYWQ3N2QzYy4uYWI2ZDI5OSAxMDA2NDQKLS0tIGEvbGliL3dhcm5sZXNzLmgKKysrIGIvbGliL3dhcm5sZXNzLmgKQEAgLTcsMTEgKzcsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC01Miw2ICs1MiwxMiBAQAogCiBpbnQgY3VybHhfc3p0b3NpKHNzaXplX3Qgc3pudW0pOwogCit1bnNpZ25lZCBzaG9ydCBjdXJseF91aXRvdXModW5zaWduZWQgaW50IHVpbnVtKTsKKwordW5zaWduZWQgY2hhciBjdXJseF91aXRvdWModW5zaWduZWQgaW50IHVpbnVtKTsKKworaW50IGN1cmx4X3VpdG9zaSh1bnNpZ25lZCBpbnQgdWludW0pOworCiBzaXplX3QgY3VybHhfc2l0b3V6KGludCBzaW51bSk7CiAKICNpZmRlZiBVU0VfV0lOU09DSwpkaWZmIC0tZ2l0IGEvbGliL3dpbGRjYXJkLmMgYi9saWIvd2lsZGNhcmQuYwppbmRleCA2ZjU1ODM5Li5kYmJlNDVmIDEwMDY0NAotLS0gYS9saWIvd2lsZGNhcmQuYworKysgYi9saWIvd2lsZGNhcmQuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTI1LDkgKzI1LDkgQEAKICNpbmNsdWRlICJ3aWxkY2FyZC5oIgogI2luY2x1ZGUgImxsaXN0LmgiCiAjaW5jbHVkZSAiZmlsZWluZm8uaCIKKy8qIFRoZSBsYXN0IDMgI2luY2x1ZGUgZmlsZXMgc2hvdWxkIGJlIGluIHRoaXMgb3JkZXIgKi8KICNpbmNsdWRlICJjdXJsX3ByaW50Zi5oIgogI2luY2x1ZGUgImN1cmxfbWVtb3J5LmgiCi0vKiBUaGUgbGFzdCAjaW5jbHVkZSBmaWxlIHNob3VsZCBiZTogKi8KICNpbmNsdWRlICJtZW1kZWJ1Zy5oIgogCiBDVVJMY29kZSBDdXJsX3dpbGRjYXJkX2luaXQoc3RydWN0IFdpbGRjYXJkRGF0YSAqd2MpCmRpZmYgLS1naXQgYS9saWIvd2lsZGNhcmQuaCBiL2xpYi93aWxkY2FyZC5oCmluZGV4IDE2YzgwZWMuLjdkNjY5OTIgMTAwNjQ0Ci0tLSBhL2xpYi93aWxkY2FyZC5oCisrKyBiL2xpYi93aWxkY2FyZC5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvbGliL3g1MDlhc24xLmMgYi9saWIveDUwOWFzbjEuYwppbmRleCBhM2RmZDY0Li5jMjIxYmEwIDEwMDY0NAotLS0gYS9saWIveDUwOWFzbjEuYworKysgYi9saWIveDUwOWFzbjEuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTM0LDkgKzM0LDEwIEBACiAjaW5jbHVkZSAiaW5ldF9wdG9uLmgiCiAjaW5jbHVkZSAiY3VybF9iYXNlNjQuaCIKICNpbmNsdWRlICJ4NTA5YXNuMS5oIgorCisvKiBUaGUgbGFzdCAzICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZSBpbiB0aGlzIG9yZGVyICovCiAjaW5jbHVkZSAiY3VybF9wcmludGYuaCIKICNpbmNsdWRlICJjdXJsX21lbW9yeS5oIgotLyogVGhlIGxhc3QgI2luY2x1ZGUgZmlsZSBzaG91bGQgYmU6ICovCiAjaW5jbHVkZSAibWVtZGVidWcuaCIKIAogCkBAIC0xMDYxLDcgKzEwNjIsNiBAQAogICBjdXJsX2FzbjFFbGVtZW50IGVsZW07CiAgIGN1cmxfYXNuMUVsZW1lbnQgZXh0OwogICBjdXJsX2FzbjFFbGVtZW50IG5hbWU7Ci0gIGludCBpOwogICBjb25zdCBjaGFyICogcDsKICAgY29uc3QgY2hhciAqIHE7CiAgIGNoYXIgKiBkbnNuYW1lOwpAQCAtMTExMCwxNiArMTExMCwxMyBAQAogICAgICAgICBxID0gQ3VybF9nZXRBU04xRWxlbWVudCgmbmFtZSwgcSwgZWxlbS5lbmQpOwogICAgICAgICBzd2l0Y2ggKG5hbWUudGFnKSB7CiAgICAgICAgIGNhc2UgMjogLyogRE5TIG5hbWUuICovCi0gICAgICAgICAgaSA9IDA7CiAgICAgICAgICAgbGVuID0gdXRmOGFzbjFzdHIoJmRuc25hbWUsIENVUkxfQVNOMV9JQTVfU1RSSU5HLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUuYmVnLCBuYW1lLmVuZCk7Ci0gICAgICAgICAgaWYobGVuID4gMCkKLSAgICAgICAgICAgIGlmKHN0cmxlbihkbnNuYW1lKSA9PSAoc2l6ZV90KSBsZW4pCi0gICAgICAgICAgICAgIGkgPSBDdXJsX2NlcnRfaG9zdGNoZWNrKChjb25zdCBjaGFyICopIGRuc25hbWUsIGNvbm4tPmhvc3QubmFtZSk7CisgICAgICAgICAgaWYobGVuID4gMCAmJiAoc2l6ZV90KWxlbiA9PSBzdHJsZW4oZG5zbmFtZSkpCisgICAgICAgICAgICBtYXRjaGVkID0gQ3VybF9jZXJ0X2hvc3RjaGVjayhkbnNuYW1lLCBjb25uLT5ob3N0Lm5hbWUpOworICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1hdGNoZWQgPSAwOwogICAgICAgICAgIGZyZWUoZG5zbmFtZSk7Ci0gICAgICAgICAgaWYoIWkpCi0gICAgICAgICAgICByZXR1cm4gQ1VSTEVfUEVFUl9GQUlMRURfVkVSSUZJQ0FUSU9OOwotICAgICAgICAgIG1hdGNoZWQgPSBpOwogICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgNzogLyogSVAgYWRkcmVzcy4gKi8KZGlmZiAtLWdpdCBhL2xpYi94NTA5YXNuMS5oIGIvbGliL3g1MDlhc24xLmgKaW5kZXggZWIyM2U1MC4uZTZhMWUyNCAxMDA2NDQKLS0tIGEvbGliL3g1MDlhc24xLmgKKysrIGIvbGliL3g1MDlhc24xLmgKQEAgLTEyLDcgKzEyLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9saWJjdXJsLnBjLmluIGIvbGliY3VybC5wYy5pbgppbmRleCBmZGZhZWM5Li5mZWVhMWNkIDEwMDY0NAotLS0gYS9saWJjdXJsLnBjLmluCisrKyBiL2xpYmN1cmwucGMuaW4KQEAgLTksNyArOSw3IEBACiAjCiAjIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAjCiAjIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTMxLDcgKzMxLDcgQEAKIHN1cHBvcnRlZF9mZWF0dXJlcz0iQFNVUFBPUlRfRkVBVFVSRVNAIgogCiBOYW1lOiBsaWJjdXJsCi1VUkw6IGh0dHA6Ly9jdXJsLmhheHguc2UvCitVUkw6IGh0dHBzOi8vY3VybC5oYXh4LnNlLwogRGVzY3JpcHRpb246IExpYnJhcnkgdG8gdHJhbnNmZXIgZmlsZXMgd2l0aCBmdHAsIGh0dHAsIGV0Yy4KIFZlcnNpb246IEBDVVJMVkVSU0lPTkAKIExpYnM6IC1MJHtsaWJkaXJ9IC1sY3VybApkaWZmIC0tZ2l0IGEvbG9jYWwtY29uZmlndXJlLnBhdGNoIGIvbG9jYWwtY29uZmlndXJlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzNDQ0ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9sb2NhbC1jb25maWd1cmUucGF0Y2gKQEAgLTAsMCArMSw1NyBAQAorZGlmZiAtLWdpdCBhL2xpYi9jdXJsX2NvbmZpZy5oIGIvbGliL2N1cmxfY29uZmlnLmgKK2luZGV4IGQzZDc0ZGMuLjUyNmJjZjcgMTAwNjQ0CistLS0gYS9saWIvY3VybF9jb25maWcuaAorKysrIGIvbGliL2N1cmxfY29uZmlnLmgKK0BAIC0xMjgsNyArMTI4LDEwIEBACisgI2RlZmluZSBIQVZFX0JPUklOR1NTTCAxCisgCisgLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGNsb2NrX2dldHRpbWUgZnVuY3Rpb24gYW5kIG1vbm90b25pYyB0aW1lci4gKi8KKysjaWZuZGVmIF9fQVBQTEVfXworKy8qIENMT0NLX01PTk9UT05JQyBpcyBub3QgZGVmaW5lZCBpbiBtYWMgd2hlbiBidWlsZGluZyBmb3IgdGhlIGhvc3QuICovCisgI2RlZmluZSBIQVZFX0NMT0NLX0dFVFRJTUVfTU9OT1RPTklDIDEKKysjZW5kaWYKKyAKKyAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgY2xvc2Vzb2NrZXQgZnVuY3Rpb24uICovCisgLyogI3VuZGVmIEhBVkVfQ0xPU0VTT0NLRVQgKi8KK0BAIC00NDIsMTAgKzQ0NSwxNCBAQAorICNkZWZpbmUgSEFWRV9NRU1PUllfSCAxCisgCisgLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIG1lbXJjaHIgZnVuY3Rpb24gb3IgbWFjcm8uICovCisrI2lmbmRlZiBfX0FQUExFX18KKyAjZGVmaW5lIEhBVkVfTUVNUkNIUiAxCisrI2VuZGlmCisgCisgLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIE1TR19OT1NJR05BTCBmbGFnLiAqLworKyNpZm5kZWYgX19BUFBMRV9fCisgI2RlZmluZSBIQVZFX01TR19OT1NJR05BTCAxCisrI2VuZGlmCisgCisgLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxuZXRkYi5oPiBoZWFkZXIgZmlsZS4gKi8KKyAjZGVmaW5lIEhBVkVfTkVUREJfSCAxCitAQCAtODU4LDcgKzg2NSw3IEBACisgI2RlZmluZSBSRVRTSUdUWVBFIHZvaWQKKyAKKyAvKiBEZWZpbmUgdG8gdGhlIHR5cGUgcXVhbGlmaWVyIG9mIGFyZyA1IGZvciBzZWxlY3QuICovCistI2RlZmluZSBTRUxFQ1RfUVVBTF9BUkc1IAorKyNkZWZpbmUgU0VMRUNUX1FVQUxfQVJHNQorIAorIC8qIERlZmluZSB0byB0aGUgdHlwZSBvZiBhcmcgMSBmb3Igc2VsZWN0LiAqLworICNkZWZpbmUgU0VMRUNUX1RZUEVfQVJHMSBpbnQKK0BAIC04OTAsMTggKzg5Nyw5IEBACisgLyogRGVmaW5lIHRvIHRoZSBmdW5jdGlvbiByZXR1cm4gdHlwZSBmb3Igc2VuZC4gKi8KKyAjZGVmaW5lIFNFTkRfVFlQRV9SRVRWIGludAorIAorLS8qIFRoZSBzaXplIG9mIGBsb25nJywgYXMgY29tcHV0ZWQgYnkgc2l6ZW9mLiAqLworLSNkZWZpbmUgU0laRU9GX0xPTkcgNAorLQorIC8qIFRoZSBzaXplIG9mIGBsb25nIGxvbmcnLCBhcyBjb21wdXRlZCBieSBzaXplb2YuICovCisgLyogI3VuZGVmIFNJWkVPRl9MT05HX0xPTkcgKi8KKyAKKy0vKiBUaGUgc2l6ZSBvZiBgb2ZmX3QnLCBhcyBjb21wdXRlZCBieSBzaXplb2YuICovCistI2RlZmluZSBTSVpFT0ZfT0ZGX1QgOAorLQorLS8qIFRoZSBzaXplIG9mIGB2b2lkKicsIGFzIGNvbXB1dGVkIGJ5IHNpemVvZi4gKi8KKy0jZGVmaW5lIFNJWkVPRl9WT0lEUCA0CistCisgLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIEFOU0kgQyBoZWFkZXIgZmlsZXMuICovCisgI2RlZmluZSBTVERDX0hFQURFUlMgMQpkaWZmIC0tZ2l0IGEvbTQvY3VybC1jb21waWxlcnMubTQgYi9tNC9jdXJsLWNvbXBpbGVycy5tNAppbmRleCBmMWE2MzRiLi4wODVjNmZmIDEwMDY0NAotLS0gYS9tNC9jdXJsLWNvbXBpbGVycy5tNAorKysgYi9tNC9jdXJsLWNvbXBpbGVycy5tNApAQCAtOSw3ICs5LDcgQEAKICMKICMgVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICMgeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICMKICMgWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAjIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNjYsNyArNjYsNyBAQAogKioqCiAqKiogSWYgeW91IHdpc2ggdG8gaGVscCB0aGUgY1VSTCBwcm9qZWN0IHRvIGJldHRlciBzdXBwb3J0IHlvdXIgY29tcGlsZXIKICoqKiB5b3UgY2FuIHJlcG9ydCB0aGlzIGFuZCB0aGUgcmVxdWlyZWQgaW5mbyBvbiB0aGUgbGliY3VybCBkZXZlbG9wbWVudAotKioqIG1haWxpbmcgbGlzdDogaHR0cDovL2Nvb2wuaGF4eC5zZS9tYWlsbWFuL2xpc3RpbmZvL2N1cmwtbGlicmFyeS8KKyoqKiBtYWlsaW5nIGxpc3Q6IGh0dHBzOi8vY29vbC5oYXh4LnNlL21haWxtYW4vbGlzdGluZm8vY3VybC1saWJyYXJ5LwogKioqCiBfRU9GCiAgIGZpCmRpZmYgLS1naXQgYS9tNC9jdXJsLWNvbmZvcHRzLm00IGIvbTQvY3VybC1jb25mb3B0cy5tNAppbmRleCA0NGIwMThlLi42OWI5YTE0IDEwMDY0NAotLS0gYS9tNC9jdXJsLWNvbmZvcHRzLm00CisrKyBiL200L2N1cmwtY29uZm9wdHMubTQKQEAgLTksNyArOSw3IEBACiAjCiAjIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAjCiAjIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTMxNiw2ICszMTYsNDIgQEAKIGRubCAgIGZpCiBkbmwgXSkKIAorZG5sIENVUkxfQ0hFQ0tfT1BUSU9OX1JUCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIFZlcmlmeSBpZiBjb25maWd1cmUgaGFzIGJlZW4gaW52b2xlZCB3aXRoIG9wdGlvbgorZG5sIC0tZGlzYWJsZS1ydCBhbmQgc2V0IHNoZWxsIHZhcmlhYmxlIGRvbnR3YW50X3J0CitkbmwgYXMgYXBwcm9wcmlhdGUuCisKK0FDX0RFRlVOKFtDVVJMX0NIRUNLX09QVElPTl9SVF0sIFsKKyAgQUNfQkVGT1JFKFskMF0sIFtDVVJMX0NIRUNLX0xJQl9USFJFQURTXSlkbmwKKyAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRvIGRpc2FibGUgZGVwZW5kZW5jeSBvbiAtbHJ0XSkKKyAgT1BUX1JUPSJkZWZhdWx0IgorICBBQ19BUkdfRU5BQkxFKHJ0LAorIEFDX0hFTFBfU1RSSU5HKFstLWRpc2FibGUtcnRdLFtkaXNhYmxlIGRlcGVuZGVuY3kgb24gLWxydF0pLAorICBPUFRfUlQ9JGVuYWJsZXZhbCkKKyAgY2FzZSAiJE9QVF9SVCIgaW4KKyAgICBubykKKyAgICAgIGRubCAtLWRpc2FibGUtcnQgdXNlZCAocmV2ZXJzZSBsb2dpYykKKyAgICAgIGRvbnR3YW50X3J0PSJ5ZXMiCisgICAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQorICAgICAgOzsKKyAgICBkZWZhdWx0KQorICAgICAgZG5sIGNvbmZpZ3VyZSBvcHRpb24gbm90IHNwZWNpZmllZCAoc28gbm90IGRpc2FibGVkKQorICAgICAgZG9udHdhbnRfcnQ9Im5vIgorICAgICAgQUNfTVNHX1JFU1VMVChbKGFzc3VtZWQgbm8pXSkKKyAgICAgIDs7CisgICAgKikKKyAgICAgIGRubCAtLWVuYWJsZS1ydCBvcHRpb24gdXNlZCAocmV2ZXJzZSBsb2dpYykKKyAgICAgIGRvbnR3YW50X3J0PSJubyIKKyAgICAgIEFDX01TR19SRVNVTFQoW25vXSkKKyAgICAgIDs7CisgIGVzYWMKKyAgZG5sIFRPRE86IG1heSByZXF1aXJlIG11dHVhbCBleGNsdXNpb24KKyAgaWYgdGVzdCAiJGRvbnR3YW50X3J0IiA9ICJ5ZXMiICYmIHRlc3QgIiR3YW50X3RocmVzIiA9ICJ5ZXMiIDsgdGhlbgorICAgIEFDX01TR19FUlJPUihbb3B0aW9ucyAtLWRpc2FibGUtcnQgYW5kIC0tZW5hYmxlLXRocmVhZC1yZXNvbHZlciBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLCBhdCBtb3N0IG9uZSBjYW4gYmUgc2VsZWN0ZWQuXSkKKyAgZmkKK10pCisgCiAKIGRubCBDVVJMX0NIRUNLX09QVElPTl9XQVJOSU5HUwogZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTM5NywxNSArNDMzLDE1IEBACiAgIHRzdF9tZXRob2Q9InVua25vd24iCiAKICAgQUNfTVNHX0NIRUNLSU5HKFtob3cgdG8gc2V0IGEgc29ja2V0IGludG8gbm9uLWJsb2NraW5nIG1vZGVdKQotICBpZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfZmNudGxfb19ub25ibG9jayIgPSAieHllcyI7IHRoZW4KKyAgaWYgdGVzdCAieCRjdXJsX2N2X2Z1bmNfZmNudGxfb19ub25ibG9jayIgPSAieHllcyI7IHRoZW4KICAgICB0c3RfbWV0aG9kPSJmY250bCBPX05PTkJMT0NLIgotICBlbGlmIHRlc3QgIngkYWNfY3ZfZnVuY19pb2N0bF9maW9uYmlvIiA9ICJ4eWVzIjsgdGhlbgorICBlbGlmIHRlc3QgIngkY3VybF9jdl9mdW5jX2lvY3RsX2Zpb25iaW8iID0gInh5ZXMiOyB0aGVuCiAgICAgdHN0X21ldGhvZD0iaW9jdGwgRklPTkJJTyIKLSAgZWxpZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfaW9jdGxzb2NrZXRfZmlvbmJpbyIgPSAieHllcyI7IHRoZW4KKyAgZWxpZiB0ZXN0ICJ4JGN1cmxfY3ZfZnVuY19pb2N0bHNvY2tldF9maW9uYmlvIiA9ICJ4eWVzIjsgdGhlbgogICAgIHRzdF9tZXRob2Q9ImlvY3Rsc29ja2V0IEZJT05CSU8iCi0gIGVsaWYgdGVzdCAieCRhY19jdl9mdW5jX2lvY3Rsc29ja2V0X2NhbWVsX2Zpb25iaW8iID0gInh5ZXMiOyB0aGVuCisgIGVsaWYgdGVzdCAieCRjdXJsX2N2X2Z1bmNfaW9jdGxzb2NrZXRfY2FtZWxfZmlvbmJpbyIgPSAieHllcyI7IHRoZW4KICAgICB0c3RfbWV0aG9kPSJJb2N0bFNvY2tldCBGSU9OQklPIgotICBlbGlmIHRlc3QgIngkYWNfY3ZfZnVuY19zZXRzb2Nrb3B0X3NvX25vbmJsb2NrIiA9ICJ4eWVzIjsgdGhlbgorICBlbGlmIHRlc3QgIngkY3VybF9jdl9mdW5jX3NldHNvY2tvcHRfc29fbm9uYmxvY2siID0gInh5ZXMiOyB0aGVuCiAgICAgdHN0X21ldGhvZD0ic2V0c29ja29wdCBTT19OT05CTE9DSyIKICAgZmkKICAgQUNfTVNHX1JFU1VMVChbJHRzdF9tZXRob2RdKQpAQCAtNDI4LDcgKzQ2NCw3IEBACiAgIEFDX01TR19DSEVDS0lORyhbd2hldGhlciBoaWRpbmcgb2YgbGlicmFyeSBpbnRlcm5hbCBzeW1ib2xzIHdpbGwgYWN0dWFsbHkgaGFwcGVuXSkKICAgQ0ZMQUdfQ1VSTF9TWU1CT0xfSElESU5HPSIiCiAgIGRvaW5nX3N5bWJvbF9oaWRpbmc9Im5vIgotICBpZiB0ZXN0IHgiJGFjX2N2X25hdGl2ZV93aW5kb3dzIiAhPSAieHllcyIgJiYKKyAgaWYgdGVzdCB4IiRjdXJsX2N2X25hdGl2ZV93aW5kb3dzIiAhPSAieHllcyIgJiYKICAgICB0ZXN0ICIkd2FudF9zeW1ib2xfaGlkaW5nIiA9ICJ5ZXMiICYmCiAgICAgdGVzdCAiJHN1cHBvcnRzX3N5bWJvbF9oaWRpbmciID0gInllcyI7IHRoZW4KICAgICBkb2luZ19zeW1ib2xfaGlkaW5nPSJ5ZXMiCkBAIC01NzUsNyArNjExLDcgQEAKICAgQUNfUkVRVUlSRShbQ1VSTF9DSEVDS19PUFRJT05fTlRMTV9XQl0pZG5sCiAgIEFDX1JFUVVJUkUoW0NVUkxfQ0hFQ0tfTkFUSVZFX1dJTkRPV1NdKWRubAogICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gZW5hYmxlIE5UTE0gZGVsZWdhdGlvbiB0byB3aW5iaW5kJ3MgaGVscGVyXSkKLSAgaWYgdGVzdCAiJGFjX2N2X25hdGl2ZV93aW5kb3dzIiA9ICJ5ZXMiIHx8CisgIGlmIHRlc3QgIiRjdXJsX2N2X25hdGl2ZV93aW5kb3dzIiA9ICJ5ZXMiIHx8CiAgICAgdGVzdCAieCRTU0xfRU5BQkxFRCIgPSAieCI7IHRoZW4KICAgICB3YW50X250bG1fd2JfZmlsZT0iIgogICAgIHdhbnRfbnRsbV93Yj0ibm8iCmRpZmYgLS1naXQgYS9tNC9jdXJsLWZ1bmN0aW9ucy5tNCBiL200L2N1cmwtZnVuY3Rpb25zLm00CmluZGV4IDBkNjU0MjEuLmVlN2EyNTIgMTAwNjQ0Ci0tLSBhL200L2N1cmwtZnVuY3Rpb25zLm00CisrKyBiL200L2N1cmwtZnVuY3Rpb25zLm00CkBAIC05LDcgKzksNyBAQAogIwogIyBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogIyB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0jIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisjIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogIwogIyBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICMgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC00NCw2ICs0NCwxMCBAQAogI2lmZGVmIEhBVkVfQVJQQV9JTkVUX0gKICMgIGluY2x1ZGUgPGFycGEvaW5ldC5oPgogI2VuZGlmCisjaWZkZWYgSEFWRV9XSU5TT0NLMl9ICisjaW5jbHVkZSA8d2luc29jazIuaD4KKyNpbmNsdWRlIDx3czJ0Y3BpcC5oPgorI2VuZGlmCiAvKiBpbmNsdWRlcyBlbmQgKi8iCiAgIEFDX0NIRUNLX0hFQURFUlMoCiAgICAgc3lzL3R5cGVzLmggc3lzL3NvY2tldC5oIG5ldGluZXQvaW4uaCBhcnBhL2luZXQuaCwKQEAgLTYzNSwxMCArNjM5LDEwIEBACiAgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKICAgICBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9BTEFSTSwgMSwKICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYWxhcm0gZnVuY3Rpb24uXSkKLSAgICBhY19jdl9mdW5jX2FsYXJtPSJ5ZXMiCisgICAgY3VybF9jdl9mdW5jX2FsYXJtPSJ5ZXMiCiAgIGVsc2UKICAgICBBQ19NU0dfUkVTVUxUKFtub10pCi0gICAgYWNfY3ZfZnVuY19hbGFybT0ibm8iCisgICAgY3VybF9jdl9mdW5jX2FsYXJtPSJubyIKICAgZmkKIF0pCiAKQEAgLTcyNiwxMCArNzMwLDEwIEBACiAgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKICAgICBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9CQVNFTkFNRSwgMSwKICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYmFzZW5hbWUgZnVuY3Rpb24uXSkKLSAgICBhY19jdl9mdW5jX2Jhc2VuYW1lPSJ5ZXMiCisgICAgY3VybF9jdl9mdW5jX2Jhc2VuYW1lPSJ5ZXMiCiAgIGVsc2UKICAgICBBQ19NU0dfUkVTVUxUKFtub10pCi0gICAgYWNfY3ZfZnVuY19iYXNlbmFtZT0ibm8iCisgICAgY3VybF9jdl9mdW5jX2Jhc2VuYW1lPSJubyIKICAgZmkKIF0pCiAKQEAgLTgyMCwxMCArODI0LDEwIEBACiAgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKICAgICBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9DTE9TRVNPQ0tFVCwgMSwKICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgY2xvc2Vzb2NrZXQgZnVuY3Rpb24uXSkKLSAgICBhY19jdl9mdW5jX2Nsb3Nlc29ja2V0PSJ5ZXMiCisgICAgY3VybF9jdl9mdW5jX2Nsb3Nlc29ja2V0PSJ5ZXMiCiAgIGVsc2UKICAgICBBQ19NU0dfUkVTVUxUKFtub10pCi0gICAgYWNfY3ZfZnVuY19jbG9zZXNvY2tldD0ibm8iCisgICAgY3VybF9jdl9mdW5jX2Nsb3Nlc29ja2V0PSJubyIKICAgZmkKIF0pCiAKQEAgLTkxMCwxMCArOTE0LDEwIEBACiAgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKICAgICBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9DTE9TRVNPQ0tFVF9DQU1FTCwgMSwKICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgQ2xvc2VTb2NrZXQgY2FtZWwgY2FzZSBmdW5jdGlvbi5dKQotICAgIGFjX2N2X2Z1bmNfY2xvc2Vzb2NrZXRfY2FtZWw9InllcyIKKyAgICBjdXJsX2N2X2Z1bmNfY2xvc2Vzb2NrZXRfY2FtZWw9InllcyIKICAgZWxzZQogICAgIEFDX01TR19SRVNVTFQoW25vXSkKLSAgICBhY19jdl9mdW5jX2Nsb3Nlc29ja2V0X2NhbWVsPSJubyIKKyAgICBjdXJsX2N2X2Z1bmNfY2xvc2Vzb2NrZXRfY2FtZWw9Im5vIgogICBmaQogXSkKIApAQCAtMTAwOCwxMCArMTAxMiwxMCBAQAogICAgIEFDX01TR19SRVNVTFQoW3llc10pCiAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfQ09OTkVDVCwgMSwKICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgY29ubmVjdCBmdW5jdGlvbi5dKQotICAgIGFjX2N2X2Z1bmNfY29ubmVjdD0ieWVzIgorICAgIGN1cmxfY3ZfZnVuY19jb25uZWN0PSJ5ZXMiCiAgIGVsc2UKICAgICBBQ19NU0dfUkVTVUxUKFtub10pCi0gICAgYWNfY3ZfZnVuY19jb25uZWN0PSJubyIKKyAgICBjdXJsX2N2X2Z1bmNfY29ubmVjdD0ibm8iCiAgIGZpCiBdKQogCkBAIC0xMDkzLDExICsxMDk3LDExIEBACiAgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKICAgICBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9GQ05UTCwgMSwKICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgZmNudGwgZnVuY3Rpb24uXSkKLSAgICBhY19jdl9mdW5jX2ZjbnRsPSJ5ZXMiCisgICAgY3VybF9jdl9mdW5jX2ZjbnRsPSJ5ZXMiCiAgICAgQ1VSTF9DSEVDS19GVU5DX0ZDTlRMX09fTk9OQkxPQ0sKICAgZWxzZQogICAgIEFDX01TR19SRVNVTFQoW25vXSkKLSAgICBhY19jdl9mdW5jX2ZjbnRsPSJubyIKKyAgICBjdXJsX2N2X2Z1bmNfZmNudGw9Im5vIgogICBmaQogXSkKIApAQCAtMTEyMSw3ICsxMTI1LDcgQEAKICAgICAgIDs7CiAgIGVzYWMKICAgIwotICBpZiB0ZXN0ICIkYWNfY3ZfZnVuY19mY250bCIgPSAieWVzIjsgdGhlbgorICBpZiB0ZXN0ICIkY3VybF9jdl9mdW5jX2ZjbnRsIiA9ICJ5ZXMiOyB0aGVuCiAgICAgQUNfTVNHX0NIRUNLSU5HKFtpZiBmY250bCBPX05PTkJMT0NLIGlzIGNvbXBpbGFibGVdKQogICAgIEFDX0NPTVBJTEVfSUZFTFNFKFsKICAgICAgIEFDX0xBTkdfUFJPR1JBTShbWwpAQCAtMTE1NywxMCArMTE2MSwxMCBAQAogICAgIEFDX01TR19SRVNVTFQoW3llc10pCiAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfRkNOVExfT19OT05CTE9DSywgMSwKICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSBhIHdvcmtpbmcgZmNudGwgT19OT05CTE9DSyBmdW5jdGlvbi5dKQotICAgIGFjX2N2X2Z1bmNfZmNudGxfb19ub25ibG9jaz0ieWVzIgorICAgIGN1cmxfY3ZfZnVuY19mY250bF9vX25vbmJsb2NrPSJ5ZXMiCiAgIGVsc2UKICAgICBBQ19NU0dfUkVTVUxUKFtub10pCi0gICAgYWNfY3ZfZnVuY19mY250bF9vX25vbmJsb2NrPSJubyIKKyAgICBjdXJsX2N2X2Z1bmNfZmNudGxfb19ub25ibG9jaz0ibm8iCiAgIGZpCiBdKQogCkBAIC0xMjQyLDEwICsxMjQ2LDEwIEBACiAgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKICAgICBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9GRE9QRU4sIDEsCiAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGZkb3BlbiBmdW5jdGlvbi5dKQotICAgIGFjX2N2X2Z1bmNfZmRvcGVuPSJ5ZXMiCisgICAgY3VybF9jdl9mdW5jX2Zkb3Blbj0ieWVzIgogICBlbHNlCiAgICAgQUNfTVNHX1JFU1VMVChbbm9dKQotICAgIGFjX2N2X2Z1bmNfZmRvcGVuPSJubyIKKyAgICBjdXJsX2N2X2Z1bmNfZmRvcGVuPSJubyIKICAgZmkKIF0pCiAKQEAgLTEzNjQsMTAgKzEzNjgsMTAgQEAKICAgICAgIEFDX0RFRklORShIQVZFX0ZHRVRYQVRUUl82LCAxLCBbZmdldHhhdHRyKCkgdGFrZXMgNiBhcmdzXSkKICAgICBmaQogICAgICMKLSAgICBhY19jdl9mdW5jX2ZnZXR4YXR0cj0ieWVzIgorICAgIGN1cmxfY3ZfZnVuY19mZ2V0eGF0dHI9InllcyIKICAgZWxzZQogICAgIEFDX01TR19SRVNVTFQoW25vXSkKLSAgICBhY19jdl9mdW5jX2ZnZXR4YXR0cj0ibm8iCisgICAgY3VybF9jdl9mdW5jX2ZnZXR4YXR0cj0ibm8iCiAgIGZpCiBdKQogCkBAIC0xNDg2LDEwICsxNDkwLDEwIEBACiAgICAgICBBQ19ERUZJTkUoSEFWRV9GTElTVFhBVFRSXzQsIDEsIFtmbGlzdHhhdHRyKCkgdGFrZXMgNCBhcmdzXSkKICAgICBmaQogICAgICMKLSAgICBhY19jdl9mdW5jX2ZsaXN0eGF0dHI9InllcyIKKyAgICBjdXJsX2N2X2Z1bmNfZmxpc3R4YXR0cj0ieWVzIgogICBlbHNlCiAgICAgQUNfTVNHX1JFU1VMVChbbm9dKQotICAgIGFjX2N2X2Z1bmNfZmxpc3R4YXR0cj0ibm8iCisgICAgY3VybF9jdl9mdW5jX2ZsaXN0eGF0dHI9Im5vIgogICBmaQogXSkKIApAQCAtMTU4MiwxMCArMTU4NiwxMCBAQAogICAgIEFDX01TR19SRVNVTFQoW3llc10pCiAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfRlJFRUFERFJJTkZPLCAxLAogICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBmcmVlYWRkcmluZm8gZnVuY3Rpb24uXSkKLSAgICBhY19jdl9mdW5jX2ZyZWVhZGRyaW5mbz0ieWVzIgorICAgIGN1cmxfY3ZfZnVuY19mcmVlYWRkcmluZm89InllcyIKICAgZWxzZQogICAgIEFDX01TR19SRVNVTFQoW25vXSkKLSAgICBhY19jdl9mdW5jX2ZyZWVhZGRyaW5mbz0ibm8iCisgICAgY3VybF9jdl9mdW5jX2ZyZWVhZGRyaW5mbz0ibm8iCiAgIGZpCiBdKQogCkBAIC0xNjY2LDEwICsxNjcwLDEwIEBACiAgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKICAgICBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9GUkVFSUZBRERSUywgMSwKICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgZnJlZWlmYWRkcnMgZnVuY3Rpb24uXSkKLSAgICBhY19jdl9mdW5jX2ZyZWVpZmFkZHJzPSJ5ZXMiCisgICAgY3VybF9jdl9mdW5jX2ZyZWVpZmFkZHJzPSJ5ZXMiCiAgIGVsc2UKICAgICBBQ19NU0dfUkVTVUxUKFtub10pCi0gICAgYWNfY3ZfZnVuY19mcmVlaWZhZGRycz0ibm8iCisgICAgY3VybF9jdl9mdW5jX2ZyZWVpZmFkZHJzPSJubyIKICAgZmkKIF0pCiAKQEAgLTE3ODgsMTAgKzE3OTIsMTAgQEAKICAgICAgIEFDX0RFRklORShIQVZFX0ZSRU1PVkVYQVRUUl8zLCAxLCBbZnJlbW92ZXhhdHRyKCkgdGFrZXMgMyBhcmdzXSkKICAgICBmaQogICAgICMKLSAgICBhY19jdl9mdW5jX2ZyZW1vdmV4YXR0cj0ieWVzIgorICAgIGN1cmxfY3ZfZnVuY19mcmVtb3ZleGF0dHI9InllcyIKICAgZWxzZQogICAgIEFDX01TR19SRVNVTFQoW25vXSkKLSAgICBhY19jdl9mdW5jX2ZyZW1vdmV4YXR0cj0ibm8iCisgICAgY3VybF9jdl9mdW5jX2ZyZW1vdmV4YXR0cj0ibm8iCiAgIGZpCiBdKQogCkBAIC0xOTEwLDEwICsxOTE0LDEwIEBACiAgICAgICBBQ19ERUZJTkUoSEFWRV9GU0VUWEFUVFJfNiwgMSwgW2ZzZXR4YXR0cigpIHRha2VzIDYgYXJnc10pCiAgICAgZmkKICAgICAjCi0gICAgYWNfY3ZfZnVuY19mc2V0eGF0dHI9InllcyIKKyAgICBjdXJsX2N2X2Z1bmNfZnNldHhhdHRyPSJ5ZXMiCiAgIGVsc2UKICAgICBBQ19NU0dfUkVTVUxUKFtub10pCi0gICAgYWNfY3ZfZnVuY19mc2V0eGF0dHI9Im5vIgorICAgIGN1cmxfY3ZfZnVuY19mc2V0eGF0dHI9Im5vIgogICBmaQogXSkKIApAQCAtMTk5NSwxMCArMTk5OSwxMCBAQAogICAgIEFDX01TR19SRVNVTFQoW3llc10pCiAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfRlRSVU5DQVRFLCAxLAogICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBmdHJ1bmNhdGUgZnVuY3Rpb24uXSkKLSAgICBhY19jdl9mdW5jX2Z0cnVuY2F0ZT0ieWVzIgorICAgIGN1cmxfY3ZfZnVuY19mdHJ1bmNhdGU9InllcyIKICAgZWxzZQogICAgIEFDX01TR19SRVNVTFQoW25vXSkKLSAgICBhY19jdl9mdW5jX2Z0cnVuY2F0ZT0ibm8iCisgICAgY3VybF9jdl9mdW5jX2Z0cnVuY2F0ZT0ibm8iCiAgIGZpCiBdKQogCkBAIC0yMDk4LDYgKzIxMDIsMTIgQEAKICAgICAgICAgc3RydWN0IGFkZHJpbmZvICphaSA9IDA7CiAgICAgICAgIGludCBlcnJvcjsKIAorICAgICAgICAjaWZkZWYgSEFWRV9XSU5TT0NLMl9ICisgICAgICAgIFdTQURBVEEgd3NhOworICAgICAgICBpZiAoV1NBU3RhcnR1cChNQUtFV09SRCgyLDIpLCAmd3NhKSkKKyAgICAgICAgICAgICAgICBleGl0KDIpOworICAgICAgICAjZW5kaWYKKwogICAgICAgICBtZW1zZXQoJmhpbnRzLCAwLCBzaXplb2YoaGludHMpKTsKICAgICAgICAgaGludHMuYWlfZmxhZ3MgPSBBSV9OVU1FUklDSE9TVDsKICAgICAgICAgaGludHMuYWlfZmFtaWx5ID0gQUZfVU5TUEVDOwpAQCAtMjEzOCwxNCArMjE0OCwxNCBAQAogICAgIEFDX01TR19SRVNVTFQoW3llc10pCiAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfR0VUQUREUklORk8sIDEsCiAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgYSB3b3JraW5nIGdldGFkZHJpbmZvIGZ1bmN0aW9uLl0pCi0gICAgYWNfY3ZfZnVuY19nZXRhZGRyaW5mbz0ieWVzIgorICAgIGN1cmxfY3ZfZnVuY19nZXRhZGRyaW5mbz0ieWVzIgogICBlbHNlCiAgICAgQUNfTVNHX1JFU1VMVChbbm9dKQotICAgIGFjX2N2X2Z1bmNfZ2V0YWRkcmluZm89Im5vIgotICAgIGFjX2N2X2Z1bmNfZ2V0YWRkcmluZm9fdGhyZWFkc2FmZT0ibm8iCisgICAgY3VybF9jdl9mdW5jX2dldGFkZHJpbmZvPSJubyIKKyAgICBjdXJsX2N2X2Z1bmNfZ2V0YWRkcmluZm9fdGhyZWFkc2FmZT0ibm8iCiAgIGZpCiAgICMKLSAgaWYgdGVzdCAiJGFjX2N2X2Z1bmNfZ2V0YWRkcmluZm8iID0gInllcyI7IHRoZW4KKyAgaWYgdGVzdCAiJGN1cmxfY3ZfZnVuY19nZXRhZGRyaW5mbyIgPSAieWVzIjsgdGhlbgogICAgIEFDX01TR19DSEVDS0lORyhbaWYgZ2V0YWRkcmluZm8gaXMgdGhyZWFkc2FmZV0pCiAgICAgY2FzZSAkaG9zdF9vcyBpbgogICAgICAgYWl4W1sxMjM0XV0uKiB8IGFpeDUuW1swMV1dLiopCkBAIC0yMTk4LDcgKzIyMDgsNyBAQAogICAgICAgICA7OwogICAgIGVzYWMKICAgICBpZiB0ZXN0ICIkdHN0X3RzYWZlX2dldGFkZHJpbmZvIiA9ICJ1bmtub3duIiAmJgotICAgICAgIHRlc3QgIiRhY19jdl9uYXRpdmVfd2luZG93cyIgPSAieWVzIjsgdGhlbgorICAgICAgIHRlc3QgIiRjdXJsX2N2X25hdGl2ZV93aW5kb3dzIiA9ICJ5ZXMiOyB0aGVuCiAgICAgICB0c3RfdHNhZmVfZ2V0YWRkcmluZm89InllcyIKICAgICBmaQogICAgIGlmIHRlc3QgIiR0c3RfdHNhZmVfZ2V0YWRkcmluZm8iID0gInVua25vd24iOyB0aGVuCkBAIC0yMjUzLDkgKzIyNjMsOSBAQAogICAgIGlmIHRlc3QgIiR0c3RfdHNhZmVfZ2V0YWRkcmluZm8iID0gInllcyI7IHRoZW4KICAgICAgIEFDX0RFRklORV9VTlFVT1RFRChIQVZFX0dFVEFERFJJTkZPX1RIUkVBRFNBRkUsIDEsCiAgICAgICAgIFtEZWZpbmUgdG8gMSBpZiB0aGUgZ2V0YWRkcmluZm8gZnVuY3Rpb24gaXMgdGhyZWFkc2FmZS5dKQotICAgICAgYWNfY3ZfZnVuY19nZXRhZGRyaW5mb190aHJlYWRzYWZlPSJ5ZXMiCisgICAgICBjdXJsX2N2X2Z1bmNfZ2V0YWRkcmluZm9fdGhyZWFkc2FmZT0ieWVzIgogICAgIGVsc2UKLSAgICAgIGFjX2N2X2Z1bmNfZ2V0YWRkcmluZm9fdGhyZWFkc2FmZT0ibm8iCisgICAgICBjdXJsX2N2X2Z1bmNfZ2V0YWRkcmluZm9fdGhyZWFkc2FmZT0ibm8iCiAgICAgZmkKICAgZmkKIF0pCkBAIC0yMzQ3LDEwICsyMzU3LDEwIEBACiAgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKICAgICBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9HRVRIT1NUQllBRERSLCAxLAogICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBnZXRob3N0YnlhZGRyIGZ1bmN0aW9uLl0pCi0gICAgYWNfY3ZfZnVuY19nZXRob3N0YnlhZGRyPSJ5ZXMiCisgICAgY3VybF9jdl9mdW5jX2dldGhvc3RieWFkZHI9InllcyIKICAgZWxzZQogICAgIEFDX01TR19SRVNVTFQoW25vXSkKLSAgICBhY19jdl9mdW5jX2dldGhvc3RieWFkZHI9Im5vIgorICAgIGN1cmxfY3ZfZnVuY19nZXRob3N0YnlhZGRyPSJubyIKICAgZmkKIF0pCiAKQEAgLTI0NDAsMTAgKzI0NTAsMTAgQEAKICAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQogICAgIEFDX0RFRklORV9VTlFVT1RFRChIQVZFX0dBSV9TVFJFUlJPUiwgMSwKICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgZ2FpX3N0cmVycm9yIGZ1bmN0aW9uLl0pCi0gICAgYWNfY3ZfZnVuY19nYWlfc3RyZXJyb3I9InllcyIKKyAgICBjdXJsX2N2X2Z1bmNfZ2FpX3N0cmVycm9yPSJ5ZXMiCiAgIGVsc2UKICAgICBBQ19NU0dfUkVTVUxUKFtub10pCi0gICAgYWNfY3ZfZnVuY19nYWlfc3RyZXJyb3I9Im5vIgorICAgIGN1cmxfY3ZfZnVuY19nYWlfc3RyZXJyb3I9Im5vIgogICBmaQogXSkKIApAQCAtMjU4MiwxMCArMjU5MiwxMCBAQAogICAgICAgQUNfREVGSU5FKEhBVkVfR0VUSE9TVEJZQUREUl9SXzgsIDEsIFtnZXRob3N0YnlhZGRyX3IoKSB0YWtlcyA4IGFyZ3NdKQogICAgIGZpCiAgICAgIwotICAgIGFjX2N2X2Z1bmNfZ2V0aG9zdGJ5YWRkcl9yPSJ5ZXMiCisgICAgY3VybF9jdl9mdW5jX2dldGhvc3RieWFkZHJfcj0ieWVzIgogICBlbHNlCiAgICAgQUNfTVNHX1JFU1VMVChbbm9dKQotICAgIGFjX2N2X2Z1bmNfZ2V0aG9zdGJ5YWRkcl9yPSJubyIKKyAgICBjdXJsX2N2X2Z1bmNfZ2V0aG9zdGJ5YWRkcl9yPSJubyIKICAgZmkKIF0pCiAKQEAgLTI2NzYsMTAgKzI2ODYsMTAgQEAKICAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQogICAgIEFDX0RFRklORV9VTlFVT1RFRChIQVZFX0dFVEhPU1RCWU5BTUUsIDEsCiAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGdldGhvc3RieW5hbWUgZnVuY3Rpb24uXSkKLSAgICBhY19jdl9mdW5jX2dldGhvc3RieW5hbWU9InllcyIKKyAgICBjdXJsX2N2X2Z1bmNfZ2V0aG9zdGJ5bmFtZT0ieWVzIgogICBlbHNlCiAgICAgQUNfTVNHX1JFU1VMVChbbm9dKQotICAgIGFjX2N2X2Z1bmNfZ2V0aG9zdGJ5bmFtZT0ibm8iCisgICAgY3VybF9jdl9mdW5jX2dldGhvc3RieW5hbWU9Im5vIgogICBmaQogXSkKIApAQCAtMjgxOCwxMCArMjgyOCwxMCBAQAogICAgICAgQUNfREVGSU5FKEhBVkVfR0VUSE9TVEJZTkFNRV9SXzYsIDEsIFtnZXRob3N0YnluYW1lX3IoKSB0YWtlcyA2IGFyZ3NdKQogICAgIGZpCiAgICAgIwotICAgIGFjX2N2X2Z1bmNfZ2V0aG9zdGJ5bmFtZV9yPSJ5ZXMiCisgICAgY3VybF9jdl9mdW5jX2dldGhvc3RieW5hbWVfcj0ieWVzIgogICBlbHNlCiAgICAgQUNfTVNHX1JFU1VMVChbbm9dKQotICAgIGFjX2N2X2Z1bmNfZ2V0aG9zdGJ5bmFtZV9yPSJubyIKKyAgICBjdXJsX2N2X2Z1bmNfZ2V0aG9zdGJ5bmFtZV9yPSJubyIKICAgZmkKIF0pCiAKQEAgLTI5NDIsMTAgKzI5NTIsMTAgQEAKICAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQogICAgIEFDX0RFRklORV9VTlFVT1RFRChIQVZFX0dFVEhPU1ROQU1FLCAxLAogICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBnZXRob3N0bmFtZSBmdW5jdGlvbi5dKQotICAgIGFjX2N2X2Z1bmNfZ2V0aG9zdG5hbWU9InllcyIKKyAgICBjdXJsX2N2X2Z1bmNfZ2V0aG9zdG5hbWU9InllcyIKICAgZWxzZQogICAgIEFDX01TR19SRVNVTFQoW25vXSkKLSAgICBhY19jdl9mdW5jX2dldGhvc3RuYW1lPSJubyIKKyAgICBjdXJsX2N2X2Z1bmNfZ2V0aG9zdG5hbWU9Im5vIgogICBmaQogXSkKIApAQCAtMzA1OCwxMCArMzA2OCwxMCBAQAogICAgIEFDX01TR19SRVNVTFQoW3llc10pCiAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfR0VUSUZBRERSUywgMSwKICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSBhIHdvcmtpbmcgZ2V0aWZhZGRycyBmdW5jdGlvbi5dKQotICAgIGFjX2N2X2Z1bmNfZ2V0aWZhZGRycz0ieWVzIgorICAgIGN1cmxfY3ZfZnVuY19nZXRpZmFkZHJzPSJ5ZXMiCiAgIGVsc2UKICAgICBBQ19NU0dfUkVTVUxUKFtub10pCi0gICAgYWNfY3ZfZnVuY19nZXRpZmFkZHJzPSJubyIKKyAgICBjdXJsX2N2X2Z1bmNfZ2V0aWZhZGRycz0ibm8iCiAgIGZpCiBdKQogCkBAIC0zMTk4LDEwICszMjA4LDEwIEBACiAgICAgICBBQ19ERUZJTkUoR0VUU0VSVkJZUE9SVF9SX0JVRlNJWkUsIDQwOTYsCiAgICAgICAgIFtTcGVjaWZpZXMgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlciB0byBwYXNzIHRvIGdldHNlcnZieXBvcnRfcl0pCiAgICAgZmkKLSAgICBhY19jdl9mdW5jX2dldHNlcnZieXBvcnRfcj0ieWVzIgorICAgIGN1cmxfY3ZfZnVuY19nZXRzZXJ2Ynlwb3J0X3I9InllcyIKICAgZWxzZQogICAgIEFDX01TR19SRVNVTFQoW25vXSkKLSAgICBhY19jdl9mdW5jX2dldHNlcnZieXBvcnRfcj0ibm8iCisgICAgY3VybF9jdl9mdW5jX2dldHNlcnZieXBvcnRfcj0ibm8iCiAgIGZpCiBdKQogCkBAIC0zMzIwLDEwICszMzMwLDEwIEBACiAgICAgICBBQ19ERUZJTkUoSEFWRV9HRVRYQVRUUl82LCAxLCBbZ2V0eGF0dHIoKSB0YWtlcyA2IGFyZ3NdKQogICAgIGZpCiAgICAgIwotICAgIGFjX2N2X2Z1bmNfZ2V0eGF0dHI9InllcyIKKyAgICBjdXJsX2N2X2Z1bmNfZ2V0eGF0dHI9InllcyIKICAgZWxzZQogICAgIEFDX01TR19SRVNVTFQoW25vXSkKLSAgICBhY19jdl9mdW5jX2dldHhhdHRyPSJubyIKKyAgICBjdXJsX2N2X2Z1bmNfZ2V0eGF0dHI9Im5vIgogICBmaQogXSkKIApAQCAtMzQzNiwxMCArMzQ0NiwxMCBAQAogICAgIEFDX01TR19SRVNVTFQoW3llc10pCiAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfR01USU1FX1IsIDEsCiAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgYSB3b3JraW5nIGdtdGltZV9yIGZ1bmN0aW9uLl0pCi0gICAgYWNfY3ZfZnVuY19nbXRpbWVfcj0ieWVzIgorICAgIGN1cmxfY3ZfZnVuY19nbXRpbWVfcj0ieWVzIgogICBlbHNlCiAgICAgQUNfTVNHX1JFU1VMVChbbm9dKQotICAgIGFjX2N2X2Z1bmNfZ210aW1lX3I9Im5vIgorICAgIGN1cmxfY3ZfZnVuY19nbXRpbWVfcj0ibm8iCiAgIGZpCiBdKQogCkBAIC0zNTYwLDEwICszNTcwLDEwIEBACiAgICAgICBBQ19ERUZJTkUoSEFWRV9JTkVUX05UT0FfUl8zLCAxLCBbaW5ldF9udG9hX3IoKSB0YWtlcyAzIGFyZ3NdKQogICAgIGZpCiAgICAgIwotICAgIGFjX2N2X2Z1bmNfaW5ldF9udG9hX3I9InllcyIKKyAgICBjdXJsX2N2X2Z1bmNfaW5ldF9udG9hX3I9InllcyIKICAgZWxzZQogICAgIEFDX01TR19SRVNVTFQoW25vXSkKLSAgICBhY19jdl9mdW5jX2luZXRfbnRvYV9yPSJubyIKKyAgICBjdXJsX2N2X2Z1bmNfaW5ldF9udG9hX3I9Im5vIgogICBmaQogXSkKIApAQCAtMzcxOSwxMCArMzcyOSwxMCBAQAogICAgIEFDX01TR19SRVNVTFQoW3llc10pCiAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfSU5FVF9OVE9QLCAxLAogICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIGEgSVB2NiBjYXBhYmxlIHdvcmtpbmcgaW5ldF9udG9wIGZ1bmN0aW9uLl0pCi0gICAgYWNfY3ZfZnVuY19pbmV0X250b3A9InllcyIKKyAgICBjdXJsX2N2X2Z1bmNfaW5ldF9udG9wPSJ5ZXMiCiAgIGVsc2UKICAgICBBQ19NU0dfUkVTVUxUKFtub10pCi0gICAgYWNfY3ZfZnVuY19pbmV0X250b3A9Im5vIgorICAgIGN1cmxfY3ZfZnVuY19pbmV0X250b3A9Im5vIgogICBmaQogXSkKIApAQCAtMzg3MSwxMCArMzg4MSwxMCBAQAogICAgIEFDX01TR19SRVNVTFQoW3llc10pCiAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfSU5FVF9QVE9OLCAxLAogICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIGEgSVB2NiBjYXBhYmxlIHdvcmtpbmcgaW5ldF9wdG9uIGZ1bmN0aW9uLl0pCi0gICAgYWNfY3ZfZnVuY19pbmV0X3B0b249InllcyIKKyAgICBjdXJsX2N2X2Z1bmNfaW5ldF9wdG9uPSJ5ZXMiCiAgIGVsc2UKICAgICBBQ19NU0dfUkVTVUxUKFtub10pCi0gICAgYWNfY3ZfZnVuY19pbmV0X3B0b249Im5vIgorICAgIGN1cmxfY3ZfZnVuY19pbmV0X3B0b249Im5vIgogICBmaQogXSkKIApAQCAtMzk1NiwxMiArMzk2NiwxMiBAQAogICAgIEFDX01TR19SRVNVTFQoW3llc10pCiAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfSU9DVEwsIDEsCiAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGlvY3RsIGZ1bmN0aW9uLl0pCi0gICAgYWNfY3ZfZnVuY19pb2N0bD0ieWVzIgorICAgIGN1cmxfY3ZfZnVuY19pb2N0bD0ieWVzIgogICAgIENVUkxfQ0hFQ0tfRlVOQ19JT0NUTF9GSU9OQklPCiAgICAgQ1VSTF9DSEVDS19GVU5DX0lPQ1RMX1NJT0NHSUZBRERSCiAgIGVsc2UKICAgICBBQ19NU0dfUkVTVUxUKFtub10pCi0gICAgYWNfY3ZfZnVuY19pb2N0bD0ibm8iCisgICAgY3VybF9jdl9mdW5jX2lvY3RsPSJubyIKICAgZmkKIF0pCiAKQEAgLTM5NzgsNyArMzk4OCw3IEBACiAgIHRzdF9jb21waV9pb2N0bF9maW9uYmlvPSJ1bmtub3duIgogICB0c3RfYWxsb3dfaW9jdGxfZmlvbmJpbz0idW5rbm93biIKICAgIwotICBpZiB0ZXN0ICIkYWNfY3ZfZnVuY19pb2N0bCIgPSAieWVzIjsgdGhlbgorICBpZiB0ZXN0ICIkY3VybF9jdl9mdW5jX2lvY3RsIiA9ICJ5ZXMiOyB0aGVuCiAgICAgQUNfTVNHX0NIRUNLSU5HKFtpZiBpb2N0bCBGSU9OQklPIGlzIGNvbXBpbGFibGVdKQogICAgIEFDX0NPTVBJTEVfSUZFTFNFKFsKICAgICAgIEFDX0xBTkdfUFJPR1JBTShbWwpAQCAtNDAxNCwxMCArNDAyNCwxMCBAQAogICAgIEFDX01TR19SRVNVTFQoW3llc10pCiAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfSU9DVExfRklPTkJJTywgMSwKICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSBhIHdvcmtpbmcgaW9jdGwgRklPTkJJTyBmdW5jdGlvbi5dKQotICAgIGFjX2N2X2Z1bmNfaW9jdGxfZmlvbmJpbz0ieWVzIgorICAgIGN1cmxfY3ZfZnVuY19pb2N0bF9maW9uYmlvPSJ5ZXMiCiAgIGVsc2UKICAgICBBQ19NU0dfUkVTVUxUKFtub10pCi0gICAgYWNfY3ZfZnVuY19pb2N0bF9maW9uYmlvPSJubyIKKyAgICBjdXJsX2N2X2Z1bmNfaW9jdGxfZmlvbmJpbz0ibm8iCiAgIGZpCiBdKQogCkBAIC00MDM0LDcgKzQwNDQsNyBAQAogICB0c3RfY29tcGlfaW9jdGxfc2lvY2dpZmFkZHI9InVua25vd24iCiAgIHRzdF9hbGxvd19pb2N0bF9zaW9jZ2lmYWRkcj0idW5rbm93biIKICAgIwotICBpZiB0ZXN0ICIkYWNfY3ZfZnVuY19pb2N0bCIgPSAieWVzIjsgdGhlbgorICBpZiB0ZXN0ICIkY3VybF9jdl9mdW5jX2lvY3RsIiA9ICJ5ZXMiOyB0aGVuCiAgICAgQUNfTVNHX0NIRUNLSU5HKFtpZiBpb2N0bCBTSU9DR0lGQUREUiBpcyBjb21waWxhYmxlXSkKICAgICBBQ19DT01QSUxFX0lGRUxTRShbCiAgICAgICBBQ19MQU5HX1BST0dSQU0oW1sKQEAgLTQwNzEsMTAgKzQwODEsMTAgQEAKICAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQogICAgIEFDX0RFRklORV9VTlFVT1RFRChIQVZFX0lPQ1RMX1NJT0NHSUZBRERSLCAxLAogICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIGEgd29ya2luZyBpb2N0bCBTSU9DR0lGQUREUiBmdW5jdGlvbi5dKQotICAgIGFjX2N2X2Z1bmNfaW9jdGxfc2lvY2dpZmFkZHI9InllcyIKKyAgICBjdXJsX2N2X2Z1bmNfaW9jdGxfc2lvY2dpZmFkZHI9InllcyIKICAgZWxzZQogICAgIEFDX01TR19SRVNVTFQoW25vXSkKLSAgICBhY19jdl9mdW5jX2lvY3RsX3Npb2NnaWZhZGRyPSJubyIKKyAgICBjdXJsX2N2X2Z1bmNfaW9jdGxfc2lvY2dpZmFkZHI9Im5vIgogICBmaQogXSkKIApAQCAtNDE2MSwxMSArNDE3MSwxMSBAQAogICAgIEFDX01TR19SRVNVTFQoW3llc10pCiAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfSU9DVExTT0NLRVQsIDEsCiAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGlvY3Rsc29ja2V0IGZ1bmN0aW9uLl0pCi0gICAgYWNfY3ZfZnVuY19pb2N0bHNvY2tldD0ieWVzIgorICAgIGN1cmxfY3ZfZnVuY19pb2N0bHNvY2tldD0ieWVzIgogICAgIENVUkxfQ0hFQ0tfRlVOQ19JT0NUTFNPQ0tFVF9GSU9OQklPCiAgIGVsc2UKICAgICBBQ19NU0dfUkVTVUxUKFtub10pCi0gICAgYWNfY3ZfZnVuY19pb2N0bHNvY2tldD0ibm8iCisgICAgY3VybF9jdl9mdW5jX2lvY3Rsc29ja2V0PSJubyIKICAgZmkKIF0pCiAKQEAgLTQxODIsNyArNDE5Miw3IEBACiAgIHRzdF9jb21waV9pb2N0bHNvY2tldF9maW9uYmlvPSJ1bmtub3duIgogICB0c3RfYWxsb3dfaW9jdGxzb2NrZXRfZmlvbmJpbz0idW5rbm93biIKICAgIwotICBpZiB0ZXN0ICIkYWNfY3ZfZnVuY19pb2N0bHNvY2tldCIgPSAieWVzIjsgdGhlbgorICBpZiB0ZXN0ICIkY3VybF9jdl9mdW5jX2lvY3Rsc29ja2V0IiA9ICJ5ZXMiOyB0aGVuCiAgICAgQUNfTVNHX0NIRUNLSU5HKFtpZiBpb2N0bHNvY2tldCBGSU9OQklPIGlzIGNvbXBpbGFibGVdKQogICAgIEFDX0NPTVBJTEVfSUZFTFNFKFsKICAgICAgIEFDX0xBTkdfUFJPR1JBTShbWwpAQCAtNDIxOCwxMCArNDIyOCwxMCBAQAogICAgIEFDX01TR19SRVNVTFQoW3llc10pCiAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfSU9DVExTT0NLRVRfRklPTkJJTywgMSwKICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSBhIHdvcmtpbmcgaW9jdGxzb2NrZXQgRklPTkJJTyBmdW5jdGlvbi5dKQotICAgIGFjX2N2X2Z1bmNfaW9jdGxzb2NrZXRfZmlvbmJpbz0ieWVzIgorICAgIGN1cmxfY3ZfZnVuY19pb2N0bHNvY2tldF9maW9uYmlvPSJ5ZXMiCiAgIGVsc2UKICAgICBBQ19NU0dfUkVTVUxUKFtub10pCi0gICAgYWNfY3ZfZnVuY19pb2N0bHNvY2tldF9maW9uYmlvPSJubyIKKyAgICBjdXJsX2N2X2Z1bmNfaW9jdGxzb2NrZXRfZmlvbmJpbz0ibm8iCiAgIGZpCiBdKQogCkBAIC00MzAzLDExICs0MzEzLDExIEBACiAgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKICAgICBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9JT0NUTFNPQ0tFVF9DQU1FTCwgMSwKICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgSW9jdGxTb2NrZXQgY2FtZWwgY2FzZSBmdW5jdGlvbi5dKQotICAgIGFjX2N2X2Z1bmNfaW9jdGxzb2NrZXRfY2FtZWw9InllcyIKKyAgICBjdXJsX2N2X2Z1bmNfaW9jdGxzb2NrZXRfY2FtZWw9InllcyIKICAgICBDVVJMX0NIRUNLX0ZVTkNfSU9DVExTT0NLRVRfQ0FNRUxfRklPTkJJTwogICBlbHNlCiAgICAgQUNfTVNHX1JFU1VMVChbbm9dKQotICAgIGFjX2N2X2Z1bmNfaW9jdGxzb2NrZXRfY2FtZWw9Im5vIgorICAgIGN1cmxfY3ZfZnVuY19pb2N0bHNvY2tldF9jYW1lbD0ibm8iCiAgIGZpCiBdKQogCkBAIC00MzIzLDcgKzQzMzMsNyBAQAogICB0c3RfY29tcGlfaW9jdGxzb2NrZXRfY2FtZWxfZmlvbmJpbz0idW5rbm93biIKICAgdHN0X2FsbG93X2lvY3Rsc29ja2V0X2NhbWVsX2Zpb25iaW89InVua25vd24iCiAgICMKLSAgaWYgdGVzdCAiJGFjX2N2X2Z1bmNfaW9jdGxzb2NrZXRfY2FtZWwiID0gInllcyI7IHRoZW4KKyAgaWYgdGVzdCAiJGN1cmxfY3ZfZnVuY19pb2N0bHNvY2tldF9jYW1lbCIgPSAieWVzIjsgdGhlbgogICAgIEFDX01TR19DSEVDS0lORyhbaWYgSW9jdGxTb2NrZXQgRklPTkJJTyBpcyBjb21waWxhYmxlXSkKICAgICBBQ19DT01QSUxFX0lGRUxTRShbCiAgICAgICBBQ19MQU5HX1BST0dSQU0oW1sKQEAgLTQzNTksMTAgKzQzNjksMTAgQEAKICAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQogICAgIEFDX0RFRklORV9VTlFVT1RFRChIQVZFX0lPQ1RMU09DS0VUX0NBTUVMX0ZJT05CSU8sIDEsCiAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgYSB3b3JraW5nIElvY3RsU29ja2V0IGNhbWVsIGNhc2UgRklPTkJJTyBmdW5jdGlvbi5dKQotICAgIGFjX2N2X2Z1bmNfaW9jdGxzb2NrZXRfY2FtZWxfZmlvbmJpbz0ieWVzIgorICAgIGN1cmxfY3ZfZnVuY19pb2N0bHNvY2tldF9jYW1lbF9maW9uYmlvPSJ5ZXMiCiAgIGVsc2UKICAgICBBQ19NU0dfUkVTVUxUKFtub10pCi0gICAgYWNfY3ZfZnVuY19pb2N0bHNvY2tldF9jYW1lbF9maW9uYmlvPSJubyIKKyAgICBjdXJsX2N2X2Z1bmNfaW9jdGxzb2NrZXRfY2FtZWxfZmlvbmJpbz0ibm8iCiAgIGZpCiBdKQogCkBAIC00NDgxLDEwICs0NDkxLDEwIEBACiAgICAgICBBQ19ERUZJTkUoSEFWRV9MSVNUWEFUVFJfNCwgMSwgW2xpc3R4YXR0cigpIHRha2VzIDQgYXJnc10pCiAgICAgZmkKICAgICAjCi0gICAgYWNfY3ZfZnVuY19saXN0eGF0dHI9InllcyIKKyAgICBjdXJsX2N2X2Z1bmNfbGlzdHhhdHRyPSJ5ZXMiCiAgIGVsc2UKICAgICBBQ19NU0dfUkVTVUxUKFtub10pCi0gICAgYWNfY3ZfZnVuY19saXN0eGF0dHI9Im5vIgorICAgIGN1cmxfY3ZfZnVuY19saXN0eGF0dHI9Im5vIgogICBmaQogXSkKIApAQCAtNDU5NywxMCArNDYwNywxMCBAQAogICAgIEFDX01TR19SRVNVTFQoW3llc10pCiAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfTE9DQUxUSU1FX1IsIDEsCiAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgYSB3b3JraW5nIGxvY2FsdGltZV9yIGZ1bmN0aW9uLl0pCi0gICAgYWNfY3ZfZnVuY19sb2NhbHRpbWVfcj0ieWVzIgorICAgIGN1cmxfY3ZfZnVuY19sb2NhbHRpbWVfcj0ieWVzIgogICBlbHNlCiAgICAgQUNfTVNHX1JFU1VMVChbbm9dKQotICAgIGFjX2N2X2Z1bmNfbG9jYWx0aW1lX3I9Im5vIgorICAgIGN1cmxfY3ZfZnVuY19sb2NhbHRpbWVfcj0ibm8iCiAgIGZpCiBdKQogCkBAIC00NzAyLDEwICs0NzEyLDEwIEBACiAgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKICAgICBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9NRU1SQ0hSLCAxLAogICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBtZW1yY2hyIGZ1bmN0aW9uIG9yIG1hY3JvLl0pCi0gICAgYWNfY3ZfZnVuY19tZW1yY2hyPSJ5ZXMiCisgICAgY3VybF9jdl9mdW5jX21lbXJjaHI9InllcyIKICAgZWxzZQogICAgIEFDX01TR19SRVNVTFQoW25vXSkKLSAgICBhY19jdl9mdW5jX21lbXJjaHI9Im5vIgorICAgIGN1cmxfY3ZfZnVuY19tZW1yY2hyPSJubyIKICAgZmkKIF0pCiAKQEAgLTQ4MzEsMTAgKzQ4NDEsMTAgQEAKICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSBhIHdvcmtpbmcgcG9sbCBmdW5jdGlvbi5dKQogICAgIEFDX0RFRklORV9VTlFVT1RFRChIQVZFX1BPTExfRklORSwgMSwKICAgICAgIFtJZiB5b3UgaGF2ZSBhIGZpbmUgcG9sbF0pCi0gICAgYWNfY3ZfZnVuY19wb2xsPSJ5ZXMiCisgICAgY3VybF9jdl9mdW5jX3BvbGw9InllcyIKICAgZWxzZQogICAgIEFDX01TR19SRVNVTFQoW25vXSkKLSAgICBhY19jdl9mdW5jX3BvbGw9Im5vIgorICAgIGN1cmxfY3ZfZnVuY19wb2xsPSJubyIKICAgZmkKIF0pCiAKQEAgLTQ5NTMsMTAgKzQ5NjMsMTAgQEAKICAgICAgIEFDX0RFRklORShIQVZFX1JFTU9WRVhBVFRSXzMsIDEsIFtyZW1vdmV4YXR0cigpIHRha2VzIDMgYXJnc10pCiAgICAgZmkKICAgICAjCi0gICAgYWNfY3ZfZnVuY19yZW1vdmV4YXR0cj0ieWVzIgorICAgIGN1cmxfY3ZfZnVuY19yZW1vdmV4YXR0cj0ieWVzIgogICBlbHNlCiAgICAgQUNfTVNHX1JFU1VMVChbbm9dKQotICAgIGFjX2N2X2Z1bmNfcmVtb3ZleGF0dHI9Im5vIgorICAgIGN1cmxfY3ZfZnVuY19yZW1vdmV4YXR0cj0ibm8iCiAgIGZpCiBdKQogCkBAIC01MDQ3LDExICs1MDU3LDExIEBACiAgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKICAgICBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9TRVRTT0NLT1BULCAxLAogICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBzZXRzb2Nrb3B0IGZ1bmN0aW9uLl0pCi0gICAgYWNfY3ZfZnVuY19zZXRzb2Nrb3B0PSJ5ZXMiCisgICAgY3VybF9jdl9mdW5jX3NldHNvY2tvcHQ9InllcyIKICAgICBDVVJMX0NIRUNLX0ZVTkNfU0VUU09DS09QVF9TT19OT05CTE9DSwogICBlbHNlCiAgICAgQUNfTVNHX1JFU1VMVChbbm9dKQotICAgIGFjX2N2X2Z1bmNfc2V0c29ja29wdD0ibm8iCisgICAgY3VybF9jdl9mdW5jX3NldHNvY2tvcHQ9Im5vIgogICBmaQogXSkKIApAQCAtNTA2OCw3ICs1MDc4LDcgQEAKICAgdHN0X2NvbXBpX3NldHNvY2tvcHRfc29fbm9uYmxvY2s9InVua25vd24iCiAgIHRzdF9hbGxvd19zZXRzb2Nrb3B0X3NvX25vbmJsb2NrPSJ1bmtub3duIgogICAjCi0gIGlmIHRlc3QgIiRhY19jdl9mdW5jX3NldHNvY2tvcHQiID0gInllcyI7IHRoZW4KKyAgaWYgdGVzdCAiJGN1cmxfY3ZfZnVuY19zZXRzb2Nrb3B0IiA9ICJ5ZXMiOyB0aGVuCiAgICAgQUNfTVNHX0NIRUNLSU5HKFtpZiBzZXRzb2Nrb3B0IFNPX05PTkJMT0NLIGlzIGNvbXBpbGFibGVdKQogICAgIEFDX0NPTVBJTEVfSUZFTFNFKFsKICAgICAgIEFDX0xBTkdfUFJPR1JBTShbWwpAQCAtNTEwNCwxMCArNTExNCwxMCBAQAogICAgIEFDX01TR19SRVNVTFQoW3llc10pCiAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfU0VUU09DS09QVF9TT19OT05CTE9DSywgMSwKICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSBhIHdvcmtpbmcgc2V0c29ja29wdCBTT19OT05CTE9DSyBmdW5jdGlvbi5dKQotICAgIGFjX2N2X2Z1bmNfc2V0c29ja29wdF9zb19ub25ibG9jaz0ieWVzIgorICAgIGN1cmxfY3ZfZnVuY19zZXRzb2Nrb3B0X3NvX25vbmJsb2NrPSJ5ZXMiCiAgIGVsc2UKICAgICBBQ19NU0dfUkVTVUxUKFtub10pCi0gICAgYWNfY3ZfZnVuY19zZXRzb2Nrb3B0X3NvX25vbmJsb2NrPSJubyIKKyAgICBjdXJsX2N2X2Z1bmNfc2V0c29ja29wdF9zb19ub25ibG9jaz0ibm8iCiAgIGZpCiBdKQogCkBAIC01MjI2LDEwICs1MjM2LDEwIEBACiAgICAgICBBQ19ERUZJTkUoSEFWRV9TRVRYQVRUUl82LCAxLCBbc2V0eGF0dHIoKSB0YWtlcyA2IGFyZ3NdKQogICAgIGZpCiAgICAgIwotICAgIGFjX2N2X2Z1bmNfc2V0eGF0dHI9InllcyIKKyAgICBjdXJsX2N2X2Z1bmNfc2V0eGF0dHI9InllcyIKICAgZWxzZQogICAgIEFDX01TR19SRVNVTFQoW25vXSkKLSAgICBhY19jdl9mdW5jX3NldHhhdHRyPSJubyIKKyAgICBjdXJsX2N2X2Z1bmNfc2V0eGF0dHI9Im5vIgogICBmaQogXSkKIApAQCAtNTMxMSwxMCArNTMyMSwxMCBAQAogICAgIEFDX01TR19SRVNVTFQoW3llc10pCiAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfU0lHQUNUSU9OLCAxLAogICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBzaWdhY3Rpb24gZnVuY3Rpb24uXSkKLSAgICBhY19jdl9mdW5jX3NpZ2FjdGlvbj0ieWVzIgorICAgIGN1cmxfY3ZfZnVuY19zaWdhY3Rpb249InllcyIKICAgZWxzZQogICAgIEFDX01TR19SRVNVTFQoW25vXSkKLSAgICBhY19jdl9mdW5jX3NpZ2FjdGlvbj0ibm8iCisgICAgY3VybF9jdl9mdW5jX3NpZ2FjdGlvbj0ibm8iCiAgIGZpCiBdKQogCkBAIC01Mzk2LDEwICs1NDA2LDEwIEBACiAgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKICAgICBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9TSUdJTlRFUlJVUFQsIDEsCiAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIHNpZ2ludGVycnVwdCBmdW5jdGlvbi5dKQotICAgIGFjX2N2X2Z1bmNfc2lnaW50ZXJydXB0PSJ5ZXMiCisgICAgY3VybF9jdl9mdW5jX3NpZ2ludGVycnVwdD0ieWVzIgogICBlbHNlCiAgICAgQUNfTVNHX1JFU1VMVChbbm9dKQotICAgIGFjX2N2X2Z1bmNfc2lnaW50ZXJydXB0PSJubyIKKyAgICBjdXJsX2N2X2Z1bmNfc2lnaW50ZXJydXB0PSJubyIKICAgZmkKIF0pCiAKQEAgLTU0ODEsMTAgKzU0OTEsMTAgQEAKICAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQogICAgIEFDX0RFRklORV9VTlFVT1RFRChIQVZFX1NJR05BTCwgMSwKICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgc2lnbmFsIGZ1bmN0aW9uLl0pCi0gICAgYWNfY3ZfZnVuY19zaWduYWw9InllcyIKKyAgICBjdXJsX2N2X2Z1bmNfc2lnbmFsPSJ5ZXMiCiAgIGVsc2UKICAgICBBQ19NU0dfUkVTVUxUKFtub10pCi0gICAgYWNfY3ZfZnVuY19zaWduYWw9Im5vIgorICAgIGN1cmxfY3ZfZnVuY19zaWduYWw9Im5vIgogICBmaQogXSkKIApAQCAtNTU4OCwxMCArNTU5OCwxMCBAQAogICAgIEFDX01TR19SRVNVTFQoW3llc10pCiAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfU0lHU0VUSk1QLCAxLAogICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBzaWdzZXRqbXAgZnVuY3Rpb24gb3IgbWFjcm8uXSkKLSAgICBhY19jdl9mdW5jX3NpZ3NldGptcD0ieWVzIgorICAgIGN1cmxfY3ZfZnVuY19zaWdzZXRqbXA9InllcyIKICAgZWxzZQogICAgIEFDX01TR19SRVNVTFQoW25vXSkKLSAgICBhY19jdl9mdW5jX3NpZ3NldGptcD0ibm8iCisgICAgY3VybF9jdl9mdW5jX3NpZ3NldGptcD0ibm8iCiAgIGZpCiBdKQogCkBAIC01Njg2LDEwICs1Njk2LDEwIEBACiAgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKICAgICBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9TT0NLRVQsIDEsCiAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIHNvY2tldCBmdW5jdGlvbi5dKQotICAgIGFjX2N2X2Z1bmNfc29ja2V0PSJ5ZXMiCisgICAgY3VybF9jdl9mdW5jX3NvY2tldD0ieWVzIgogICBlbHNlCiAgICAgQUNfTVNHX1JFU1VMVChbbm9dKQotICAgIGFjX2N2X2Z1bmNfc29ja2V0PSJubyIKKyAgICBjdXJsX2N2X2Z1bmNfc29ja2V0PSJubyIKICAgZmkKIF0pCiAKQEAgLTU3NzUsMTAgKzU3ODUsMTAgQEAKICAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQogICAgIEFDX0RFRklORV9VTlFVT1RFRChIQVZFX1NPQ0tFVFBBSVIsIDEsCiAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIHNvY2tldHBhaXIgZnVuY3Rpb24uXSkKLSAgICBhY19jdl9mdW5jX3NvY2tldHBhaXI9InllcyIKKyAgICBjdXJsX2N2X2Z1bmNfc29ja2V0cGFpcj0ieWVzIgogICBlbHNlCiAgICAgQUNfTVNHX1JFU1VMVChbbm9dKQotICAgIGFjX2N2X2Z1bmNfc29ja2V0cGFpcj0ibm8iCisgICAgY3VybF9jdl9mdW5jX3NvY2tldHBhaXI9Im5vIgogICBmaQogXSkKIApAQCAtNTg2MCwxMCArNTg3MCwxMCBAQAogICAgIEFDX01TR19SRVNVTFQoW3llc10pCiAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfU1RSQ0FTRUNNUCwgMSwKICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgc3RyY2FzZWNtcCBmdW5jdGlvbi5dKQotICAgIGFjX2N2X2Z1bmNfc3RyY2FzZWNtcD0ieWVzIgorICAgIGN1cmxfY3ZfZnVuY19zdHJjYXNlY21wPSJ5ZXMiCiAgIGVsc2UKICAgICBBQ19NU0dfUkVTVUxUKFtub10pCi0gICAgYWNfY3ZfZnVuY19zdHJjYXNlY21wPSJubyIKKyAgICBjdXJsX2N2X2Z1bmNfc3RyY2FzZWNtcD0ibm8iCiAgIGZpCiBdKQogCkBAIC01OTQ0LDEwICs1OTU0LDEwIEBACiAgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKICAgICBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9TVFJDTVBJLCAxLAogICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBzdHJjbXBpIGZ1bmN0aW9uLl0pCi0gICAgYWNfY3ZfZnVuY19zdHJjbXBpPSJ5ZXMiCisgICAgY3VybF9jdl9mdW5jX3N0cmNtcGk9InllcyIKICAgZWxzZQogICAgIEFDX01TR19SRVNVTFQoW25vXSkKLSAgICBhY19jdl9mdW5jX3N0cmNtcGk9Im5vIgorICAgIGN1cmxfY3ZfZnVuY19zdHJjbXBpPSJubyIKICAgZmkKIF0pCiAKQEAgLTYwMjksMTAgKzYwMzksMTAgQEAKICAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQogICAgIEFDX0RFRklORV9VTlFVT1RFRChIQVZFX1NUUkRVUCwgMSwKICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgc3RyZHVwIGZ1bmN0aW9uLl0pCi0gICAgYWNfY3ZfZnVuY19zdHJkdXA9InllcyIKKyAgICBjdXJsX2N2X2Z1bmNfc3RyZHVwPSJ5ZXMiCiAgIGVsc2UKICAgICBBQ19NU0dfUkVTVUxUKFtub10pCi0gICAgYWNfY3ZfZnVuY19zdHJkdXA9Im5vIgorICAgIGN1cmxfY3ZfZnVuY19zdHJkdXA9Im5vIgogICBmaQogXSkKIApAQCAtNjI4OCwxMCArNjI5OCwxMCBAQAogICAgICAgQUNfREVGSU5FX1VOUVVPVEVEKFNUUkVSUk9SX1JfVFlQRV9BUkczLCAkdHN0X3Bvc2l4X3N0cmVycm9yX3JfdHlwZV9hcmczLAogICAgICAgICBbRGVmaW5lIHRvIHRoZSB0eXBlIG9mIGFyZyAzIGZvciBzdHJlcnJvcl9yLl0pCiAgICAgZmkKLSAgICBhY19jdl9mdW5jX3N0cmVycm9yX3I9InllcyIKKyAgICBjdXJsX2N2X2Z1bmNfc3RyZXJyb3Jfcj0ieWVzIgogICBlbHNlCiAgICAgQUNfTVNHX1JFU1VMVChbbm9dKQotICAgIGFjX2N2X2Z1bmNfc3RyZXJyb3Jfcj0ibm8iCisgICAgY3VybF9jdl9mdW5jX3N0cmVycm9yX3I9Im5vIgogICBmaQogICAjCiAgIGlmIHRlc3QgIiR0c3RfY29tcGlfc3RyZXJyb3JfciIgPSAieWVzIiAmJgpAQCAtNjM3OSwxMCArNjM4OSwxMCBAQAogICAgIEFDX01TR19SRVNVTFQoW3llc10pCiAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfU1RSSUNNUCwgMSwKICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgc3RyaWNtcCBmdW5jdGlvbi5dKQotICAgIGFjX2N2X2Z1bmNfc3RyaWNtcD0ieWVzIgorICAgIGN1cmxfY3ZfZnVuY19zdHJpY21wPSJ5ZXMiCiAgIGVsc2UKICAgICBBQ19NU0dfUkVTVUxUKFtub10pCi0gICAgYWNfY3ZfZnVuY19zdHJpY21wPSJubyIKKyAgICBjdXJsX2N2X2Z1bmNfc3RyaWNtcD0ibm8iCiAgIGZpCiBdKQogCkBAIC02NDYzLDEwICs2NDczLDEwIEBACiAgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKICAgICBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9TVFJOQ0FTRUNNUCwgMSwKICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgc3RybmNhc2VjbXAgZnVuY3Rpb24uXSkKLSAgICBhY19jdl9mdW5jX3N0cm5jYXNlY21wPSJ5ZXMiCisgICAgY3VybF9jdl9mdW5jX3N0cm5jYXNlY21wPSJ5ZXMiCiAgIGVsc2UKICAgICBBQ19NU0dfUkVTVUxUKFtub10pCi0gICAgYWNfY3ZfZnVuY19zdHJuY2FzZWNtcD0ibm8iCisgICAgY3VybF9jdl9mdW5jX3N0cm5jYXNlY21wPSJubyIKICAgZmkKIF0pCiAKQEAgLTY1NDgsMTAgKzY1NTgsMTAgQEAKICAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQogICAgIEFDX0RFRklORV9VTlFVT1RFRChIQVZFX1NUUk5DTVBJLCAxLAogICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBzdHJuY21waSBmdW5jdGlvbi5dKQotICAgIGFjX2N2X2Z1bmNfc3RybmNtcGk9InllcyIKKyAgICBjdXJsX2N2X2Z1bmNfc3RybmNtcGk9InllcyIKICAgZWxzZQogICAgIEFDX01TR19SRVNVTFQoW25vXSkKLSAgICBhY19jdl9mdW5jX3N0cm5jbXBpPSJubyIKKyAgICBjdXJsX2N2X2Z1bmNfc3RybmNtcGk9Im5vIgogICBmaQogXSkKIApAQCAtNjYzMywxMCArNjY0MywxMCBAQAogICAgIEFDX01TR19SRVNVTFQoW3llc10pCiAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfU1RSTklDTVAsIDEsCiAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIHN0cm5pY21wIGZ1bmN0aW9uLl0pCi0gICAgYWNfY3ZfZnVuY19zdHJuaWNtcD0ieWVzIgorICAgIGN1cmxfY3ZfZnVuY19zdHJuaWNtcD0ieWVzIgogICBlbHNlCiAgICAgQUNfTVNHX1JFU1VMVChbbm9dKQotICAgIGFjX2N2X2Z1bmNfc3RybmljbXA9Im5vIgorICAgIGN1cmxfY3ZfZnVuY19zdHJuaWNtcD0ibm8iCiAgIGZpCiBdKQogCkBAIC02NzE4LDEwICs2NzI4LDEwIEBACiAgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKICAgICBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9TVFJTVFIsIDEsCiAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIHN0cnN0ciBmdW5jdGlvbi5dKQotICAgIGFjX2N2X2Z1bmNfc3Ryc3RyPSJ5ZXMiCisgICAgY3VybF9jdl9mdW5jX3N0cnN0cj0ieWVzIgogICBlbHNlCiAgICAgQUNfTVNHX1JFU1VMVChbbm9dKQotICAgIGFjX2N2X2Z1bmNfc3Ryc3RyPSJubyIKKyAgICBjdXJsX2N2X2Z1bmNfc3Ryc3RyPSJubyIKICAgZmkKIF0pCiAKQEAgLTY4MDMsMTAgKzY4MTMsMTAgQEAKICAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQogICAgIEFDX0RFRklORV9VTlFVT1RFRChIQVZFX1NUUlRPS19SLCAxLAogICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBzdHJ0b2tfciBmdW5jdGlvbi5dKQotICAgIGFjX2N2X2Z1bmNfc3RydG9rX3I9InllcyIKKyAgICBjdXJsX2N2X2Z1bmNfc3RydG9rX3I9InllcyIKICAgZWxzZQogICAgIEFDX01TR19SRVNVTFQoW25vXSkKLSAgICBhY19jdl9mdW5jX3N0cnRva19yPSJubyIKKyAgICBjdXJsX2N2X2Z1bmNfc3RydG9rX3I9Im5vIgogICBmaQogXSkKIApAQCAtNjg4OCwxMCArNjg5OCwxMCBAQAogICAgIEFDX01TR19SRVNVTFQoW3llc10pCiAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfU1RSVE9MTCwgMSwKICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgc3RydG9sbCBmdW5jdGlvbi5dKQotICAgIGFjX2N2X2Z1bmNfc3RydG9sbD0ieWVzIgorICAgIGN1cmxfY3ZfZnVuY19zdHJ0b2xsPSJ5ZXMiCiAgIGVsc2UKICAgICBBQ19NU0dfUkVTVUxUKFtub10pCi0gICAgYWNfY3ZfZnVuY19zdHJ0b2xsPSJubyIKKyAgICBjdXJsX2N2X2Z1bmNfc3RydG9sbD0ibm8iCiAgIGZpCiBdKQogCkBAIC02OTczLDkgKzY5ODMsOSBAQAogICAgIEFDX01TR19SRVNVTFQoW3llc10pCiAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfV1JJVEVWLCAxLAogICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSB3cml0ZXYgZnVuY3Rpb24uXSkKLSAgICBhY19jdl9mdW5jX3dyaXRldj0ieWVzIgorICAgIGN1cmxfY3ZfZnVuY193cml0ZXY9InllcyIKICAgZWxzZQogICAgIEFDX01TR19SRVNVTFQoW25vXSkKLSAgICBhY19jdl9mdW5jX3dyaXRldj0ibm8iCisgICAgY3VybF9jdl9mdW5jX3dyaXRldj0ibm8iCiAgIGZpCiBdKQpkaWZmIC0tZ2l0IGEvbTQvY3VybC1vcGVuc3NsLm00IGIvbTQvY3VybC1vcGVuc3NsLm00CmluZGV4IDVmNWY4N2EuLjIwYzMxMjYgMTAwNjQ0Ci0tLSBhL200L2N1cmwtb3BlbnNzbC5tNAorKysgYi9tNC9jdXJsLW9wZW5zc2wubTQKQEAgLTksNyArOSw3IEBACiAjCiAjIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAjCiAjIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL200L2N1cmwtcmVlbnRyYW50Lm00IGIvbTQvY3VybC1yZWVudHJhbnQubTQKaW5kZXggODQyY2M0MC4uZTMyZDNmOCAxMDA2NDQKLS0tIGEvbTQvY3VybC1yZWVudHJhbnQubTQKKysrIGIvbTQvY3VybC1yZWVudHJhbnQubTQKQEAgLTksNyArOSw3IEBACiAjCiAjIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAjCiAjIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL200L3hjLWx0LWlmYWNlLm00IGIvbTQveGMtbHQtaWZhY2UubTQKaW5kZXggMGI5MGQ1Zi4uODJhYWFmYSAxMDA2NDQKLS0tIGEvbTQveGMtbHQtaWZhY2UubTQKKysrIGIvbTQveGMtbHQtaWZhY2UubTQKQEAgLTcyLDcgKzcyLDcgQEAKIGlmIHRlc3QgIngkeGNfbHRfd2FudF9lbmFibGVfc2hhcmVkIiA9ICd4eWVzJyAmJgogICB0ZXN0ICJ4JHhjX2x0X3dhbnRfZW5hYmxlX3N0YXRpYyIgPSAneHllcyc7IHRoZW4KICAgY2FzZSAkaG9zdF9vcyBpbiBAJTpAICgKLSAgICBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKiB8IG9zMiogfCBhaXgqKQorICAgIHB3MzIqIHwgY2VnY2MqIHwgb3MyKiB8IGFpeCopCiAgICAgICB4Y19sdF93YW50X2VuYWJsZV9zdGF0aWM9J25vJwogICAgICAgOzsKICAgZXNhYwpkaWZmIC0tZ2l0IGEvbWFrZXRneiBiL21ha2V0Z3oKaW5kZXggMjUwYjExZi4uYWVkZTZkMCAxMDA3NTUKLS0tIGEvbWFrZXRnegorKysgYi9tYWtldGd6CkBAIC05LDExICs5LDExIEBACiAjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogIwotIyBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorIyBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogIwogIyBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogIyB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0jIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisjIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogIwogIyBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICMgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC00Niw3ICs0Niw3IEBACiBDSEVBREVSPXNyYy90b29sX3ZlcnNpb24uaAogCiAjIHJlcXVpcmVzIGEgZGF0ZSBjb21tYW5kIHRoYXQga25vd3MgLXUgZm9yIFVUQyB0aW1lIHpvbmUKLWRhdGVzdGFtcD1gZGF0ZSAtdWAKK2RhdGVzdGFtcD1gTENfVElNRT1DIGRhdGUgLXVgCiAKICMgUmVwbGFjZSB2ZXJzaW9uIG51bWJlciBpbiBoZWFkZXIgZmlsZToKIHNlZCAtZSAncy9eI2RlZmluZSBMSUJDVVJMX1ZFUlNJT04gLiovI2RlZmluZSBMSUJDVVJMX1ZFUlNJT04gIickbGlidmVyc2lvbiciL2cnIFwKQEAgLTYwLDggKzYwLDkgQEAKICMgUmVwbGFjZSB2ZXJzaW9uIG51bWJlciBpbiBoZWFkZXIgZmlsZToKIHNlZCAncy8jZGVmaW5lIENVUkxfVkVSU0lPTiAuKi8jZGVmaW5lIENVUkxfVkVSU0lPTiAiJyRjdXJsdmVyc2lvbiciL2cnICRDSEVBREVSID4kQ0hFQURFUi5kaXN0CiAKLSMgR2VuZXJhdGUgVkM4LCBWQzksIGFuZCBWQzEwIHZlcnNpb25zIGZyb20gdGhlIFZDNiBNYWtlZmlsZSB2ZXJzaW9ucwotZm9yIHZlciBpbiB2YzggdmM5IHZjMTA7IGRvCisjIEdlbmVyYXRlIFZDNywgVkM4LCBWQzksIFZDMTAsIFZDMTEsIFZDMTIgYW5kIFZDMTQgdmVyc2lvbnMgZnJvbSB0aGUgVkM2CisjIE1ha2VmaWxlIHZlcnNpb25zCitmb3IgdmVyIGluIHZjNyB2YzggdmM5IHZjMTAgdmMxMSB2YzEyIHZjMTQ7IGRvCiAgIG1ha2UgLWYgTWFrZWZpbGUuZGlzdCAkdmVyCiAgIG12IHNyYy9NYWtlZmlsZS4kdmVyIHNyYy9NYWtlZmlsZS4kdmVyLmRpc3QKICAgbXYgbGliL01ha2VmaWxlLiR2ZXIgbGliL01ha2VmaWxlLiR2ZXIuZGlzdApAQCAtMTM3LDcgKzEzOCw3IEBACiAKIGVjaG8gIm1ha2UgZGlzdCIKIHRhcmd6PSJjdXJsLSR2ZXJzaW9uLnRhci5neiIKLW1ha2UgLXMgZGlzdCBWRVJTSU9OPSR2ZXJzaW9uCittYWtlIC1zaiBkaXN0IFZFUlNJT049JHZlcnNpb24KIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIwpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvQUlYL1JQTS9jdXJsLnNwZWMuaW4gYi9wYWNrYWdlcy9BSVgvUlBNL2N1cmwuc3BlYy5pbgppbmRleCAzNjZjZmEwLi5jNjRhMGI3IDEwMDY0NAotLS0gYS9wYWNrYWdlcy9BSVgvUlBNL2N1cmwuc3BlYy5pbgorKysgYi9wYWNrYWdlcy9BSVgvUlBNL2N1cmwuc3BlYy5pbgpAQCAtMTYsNyArMTYsNyBAQAogVmVuZG9yOiBEYW5pZWwgU3RlbmJlcmcgPERhbmllbC5TdGVuYmVyZ0BoYXh4LnNlPgogR3JvdXA6IEFwcGxpY2F0aW9ucy9JbnRlcm5ldAogU291cmNlOiAle25hbWV9LSV7dmVyc2lvbn0udGFyLmJ6MgotVVJMOiBodHRwOi8vY3VybC5oYXh4LnNlLworVVJMOiBodHRwczovL2N1cmwuaGF4eC5zZS8KIFByb3ZpZGVzOiBjdXJsCiBCdWlsZFJvb3Q6ICV7X3RtcHBhdGh9LyV7bmFtZX0tJXt2ZXJzaW9ufS1yb290CiBQcmVmaXg6ICV7X3ByZWZpeH0KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL0xpbnV4L1JQTS9jdXJsLXNzbC5zcGVjLmluIGIvcGFja2FnZXMvTGludXgvUlBNL2N1cmwtc3NsLnNwZWMuaW4KaW5kZXggMjg3YTNhNS4uNWI0NWJiMSAxMDA2NDQKLS0tIGEvcGFja2FnZXMvTGludXgvUlBNL2N1cmwtc3NsLnNwZWMuaW4KKysrIGIvcGFja2FnZXMvTGludXgvUlBNL2N1cmwtc3NsLnNwZWMuaW4KQEAgLTE0LDcgKzE0LDcgQEAKIFBhY2thZ2VyOiBUcm95IEVuZ2VsIDx0ZW5nZWxAc29uaWMubmV0PgogR3JvdXA6IFV0aWxpdGllcy9Db25zb2xlCiBTb3VyY2U6ICV7dGFyYmFsbH0tJXt2ZXJzaW9ufS50YXIuZ3oKLVVSTDogaHR0cDovL2N1cmwuaGF4eC5zZS8KK1VSTDogaHR0cHM6Ly9jdXJsLmhheHguc2UvCiBQcm92aWRlczogY3VybAogT2Jzb2xldGVzOiBjdXJsCiBCdWlsZFJvb3Q6ICV7X3RtcHBhdGh9LyV7dGFyYmFsbH0tJXt2ZXJzaW9ufS1yb290CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9MaW51eC9SUE0vY3VybC5zcGVjLmluIGIvcGFja2FnZXMvTGludXgvUlBNL2N1cmwuc3BlYy5pbgppbmRleCAyMzgyZjU3Li41OTU3N2IwIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9MaW51eC9SUE0vY3VybC5zcGVjLmluCisrKyBiL3BhY2thZ2VzL0xpbnV4L1JQTS9jdXJsLnNwZWMuaW4KQEAgLTE0LDcgKzE0LDcgQEAKIFBhY2thZ2VyOiBMb2ljIERhY2hhcnkgPGxvaWNAc2VuZ2Eub3JnPgogR3JvdXA6IFV0aWxpdGllcy9Db25zb2xlCiBTb3VyY2U6ICV7bmFtZX0tJXt2ZXJzaW9ufS50YXIuZ3oKLVVSTDogaHR0cDovL2N1cmwuaGF4eC5zZS8KK1VSTDogaHR0cHM6Ly9jdXJsLmhheHguc2UvCiBCdWlsZFJvb3Q6IC90bXAvJXtuYW1lfS0le3ZlcnNpb259LXJvb3QKIAogJWRlc2NyaXB0aW9uCmRpZmYgLS1naXQgYS9wYWNrYWdlcy9OZXRXYXJlL2dldF9leHAuYXdrIGIvcGFja2FnZXMvTmV0V2FyZS9nZXRfZXhwLmF3awppbmRleCA1YmQ4YTBjLi41NjZlODkxIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9OZXRXYXJlL2dldF9leHAuYXdrCisrKyBiL3BhY2thZ2VzL05ldFdhcmUvZ2V0X2V4cC5hd2sKQEAgLTksNyArOSw3IEBACiAjICoKICMgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogIyAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSMgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorIyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogIyAqCiAjICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAjICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9wYWNrYWdlcy9OZXRXYXJlL2dldF92ZXIuYXdrIGIvcGFja2FnZXMvTmV0V2FyZS9nZXRfdmVyLmF3awppbmRleCA5MWFmZmJiLi4wM2VlNWVjIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9OZXRXYXJlL2dldF92ZXIuYXdrCisrKyBiL3BhY2thZ2VzL05ldFdhcmUvZ2V0X3Zlci5hd2sKQEAgLTksNyArOSw3IEBACiAjICoKICMgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogIyAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSMgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorIyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogIyAqCiAjICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAjICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9wYWNrYWdlcy9PUzQwMC9SRUFETUUuT1M0MDAgYi9wYWNrYWdlcy9PUzQwMC9SRUFETUUuT1M0MDAKaW5kZXggMGNiMWNmMi4uMjRjZjM5ZSAxMDA2NDQKLS0tIGEvcGFja2FnZXMvT1M0MDAvUkVBRE1FLk9TNDAwCisrKyBiL3BhY2thZ2VzL09TNDAwL1JFQURNRS5PUzQwMApAQCAtNzIsNiArNzIsNyBAQAogICAgICAgICBDVVJMT1BUX0NPUFlQT1NURklFTERTCiAgICAgICAgIENVUkxPUFRfQ1JMRklMRQogICAgICAgICBDVVJMT1BUX0NVU1RPTVJFUVVFU1QKKyAgICAgICAgQ1VSTE9QVF9ERUZBVUxUX1BST1RPQ09MCiAgICAgICAgIENVUkxPUFRfRE5TX1NFUlZFUlMKICAgICAgICAgQ1VSTE9QVF9FR0RTT0NLRVQKICAgICAgICAgQ1VSTE9QVF9FTkNPRElORwpAQCAtMTAyLDEwICsxMDMsMTAgQEAKICAgICAgICAgQ1VSTE9QVF9SVFNQX1RSQU5TUE9SVAogICAgICAgICBDVVJMT1BUX1NFUlZJQ0VfTkFNRQogICAgICAgICBDVVJMT1BUX1NPQ0tTNV9HU1NBUElfU0VSVklDRQotICAgICAgICBDVVJMT1BUX1NTSF9IT1NUX1BVQkxJQ19LRVlfTUQ1IE5vdGU6IFNTSCBub3QgYXZhaWxhYmxlIG9uIE9TNDAwLgotICAgICAgICBDVVJMT1BUX1NTSF9LTk9XTkhPU1RTICAgICAgICAgIE5vdGU6IFNTSCBub3QgYXZhaWxhYmxlIG9uIE9TNDAwLgotICAgICAgICBDVVJMT1BUX1NTSF9QUklWQVRFX0tFWUZJTEUgICAgIE5vdGU6IFNTSCBub3QgYXZhaWxhYmxlIG9uIE9TNDAwLgotICAgICAgICBDVVJMT1BUX1NTSF9QVUJMSUNfS0VZRklMRSAgICAgIE5vdGU6IFNTSCBub3QgYXZhaWxhYmxlIG9uIE9TNDAwLgorICAgICAgICBDVVJMT1BUX1NTSF9IT1NUX1BVQkxJQ19LRVlfTUQ1CisgICAgICAgIENVUkxPUFRfU1NIX0tOT1dOSE9TVFMKKyAgICAgICAgQ1VSTE9QVF9TU0hfUFJJVkFURV9LRVlGSUxFCisgICAgICAgIENVUkxPUFRfU1NIX1BVQkxJQ19LRVlGSUxFCiAgICAgICAgIENVUkxPUFRfU1NMQ0VSVAogICAgICAgICBDVVJMT1BUX1NTTENFUlRUWVBFCiAgICAgICAgIENVUkxPUFRfU1NMX0NJUEhFUl9MSVNUCkBAIC0xNDgsNyArMTQ5LDcgQEAKICAgUGxlYXNlIG5vdGUgdGhhdCBDVVJMRk9STV9QVFJDT05URU5UUyBhbmQgQ1VSTEZPUk1fQlVGRkVSUFRSIGFyZSBjb25zaWRlcmVkCiB1bmNvbnZlcnRpYmxlIHN0cmluZ3MgYW5kIHRodXMgYXJlIE5PVCBmb2xsb3dlZCBieSBhIENDU0lELgogCi1fIGN1cmxfZWFzeV9nZXRpbmZvX2Njc2lkCitfIGN1cmxfZWFzeV9nZXRpbmZvX2Njc2lkKCkKICAgVGhlIGZvbGxvd2luZyBvcHRpb25zIGFyZSBmb2xsb3dlZCBieSBhICdjaGFyICogKicgYW5kIGEgQ0NTSUQuIFVubGlrZQogY3VybF9lYXN5X2dldGluZm8oKSwgdGhlIHZhbHVlIHJldHVybmVkIGluIHRoZSBwb2ludGVyIHNob3VsZCBiZSBmcmVlZCBhZnRlcgogdXNlOgpAQCAtMTY5LDYgKzE3MCwxNCBAQAogdXNlLgogICBPdGhlciBvcHRpb25zIGFyZSBwcm9jZXNzZWQgbGlrZSBpbiBjdXJsX2Vhc3lfZ2V0aW5mbygpLgogCitfIGN1cmxfcHVzaGhlYWRlcl9ieW51bV9jc3NpZCgpIGFuZCBjdXJsX3B1c2hoZWFkZXJfYnluYW1lX2Njc2lkKCkKKyAgQWx0aG91Z2ggdGhlIHByb3RvdHlwZXMgYXJlIHNlbGYtZXhwbGFuYXRvcnksIHRoZSByZXR1cm5lZCBzdHJpbmcgcG9pbnRlcgorc2hvdWxkIGJlIGZyZWVkIGFmdGVyIHVzZSwgYXMgb3Bwb3NpdGUgdG8gdGhlIG5vbi1jY3NpZCB2ZXJzaW9ucyBvZiB0aGVzZQorcHJvY2VkdXJlcy4KKyAgUGxlYXNlIG5vdGUgdGhhdCBIVFRQMiBpcyBub3QgKHlldCkgaW1wbGVtZW50ZWQgb24gT1MvNDAwLCB0aHVzIHRoZXNlCitmdW5jdGlvbnMgd2lsbCBhbHdheXMgcmV0dXJuIE5VTEwuCisKKwogICBTdGFuZGFyZCBjb21waWxhdGlvbiBlbnZpcm9ubWVudCBkb2VzIHN1cHBvcnQgbmVpdGhlciBhdXRvdG9vbHMgbm9yIG1ha2U7CiBpbiBmYWN0LCB2ZXJ5IGZldyBjb21tb24gdXRpbGl0aWVzIGFyZSBhdmFpbGFibGUuIEFzIGEgY29uc2VxdWVuY2UsIHRoZQogY29uZmlnLW9zNDAwLmggaGFzIGJlZW4gY29kZWQgbWFudWFsbHkgYW5kIHRoZSBjb21waWxhdGlvbiBzY3JpcHRzIGFyZQpAQCAtMTk1LDYgKzIwNCw4IEBACiBfIFBPUDNTCiBfIFBPUDMgd2l0aCBzZWN1cmUgdHJhbnNtaXNzaW9uCiBfIFJUU1AKK18gU0NQIGlmIGxpYnNzaDIgaXMgZW5hYmxlZAorXyBTRlRQIGlmIGxpYnNzaDIgaXMgZW5hYmxlZAogXyBTTVRQCiBfIFNNVFBTCiBfIFNNVFAgd2l0aCBzZWN1cmUgdHJhbnNtaXNzaW9uCkBAIC0yMTAsMTMgKzIyMSwxNyBAQAogZmFtaWxpYXIgd2l0aC4KIAogXyBBcyBhIHByZXJlcXVpc2l0ZSwgUUFEUlQgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgbXVzdCBiZSBpbnN0YWxsZWQuCitfIElmIGRhdGEgY29tcHJlc3Npb24gaGFzIHRvIGJlIHN1cHBvcnRlZCwgWkxJQiBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCBtdXN0CisgIGJlIGluc3RhbGxlZC4KK18gTGlrZXdpc2UsIGlmIFNDUCBhbmQgU0ZUUCBwcm90b2NvbHMgaGF2ZSB0byBiZSBjb21waWxlZCBpbiwgTElCU1NIMgorICBkZXZlbG9wZW50IGVudmlyb25tZW50IG11c3QgYmUgaW5zdGFsbGVkLgogXyBJbnN0YWxsIHRoZSBjdXJsIHNvdXJjZSBkaXJlY3RvcnkgaW4gSUZTLgogXyBFbnRlciBzaGVsbCAoUVNIKQogXyBDaGFuZ2UgY3VycmVudCBkaXJlY3RvcnkgdG8gdGhlIGN1cmwgaW5zdGFsbGF0aW9uIGRpcmVjdG9yeQogXyBDaGFuZ2UgY3VycmVudCBkaXJlY3RvcnkgdG8gLi9wYWNrYWdlcy9PUzQwMAogXyBFZGl0IGZpbGUgaW5pc2NyaXB0LnNoLiBZb3UgbWF5IHdhbnQgdG8gY2hhbmdlIHR1bmFibGUgY29uZmlndXJhdGlvbgogICBwYXJhbWV0ZXJzLCBsaWtlIGRlYnVnIGluZm8gZ2VuZXJhdGlvbiwgb3B0aW1pc2F0aW9uIGxldmVsLCBsaXN0aW5nIG9wdGlvbiwKLSAgdGFyZ2V0IGxpYnJhcnksIGV0Yy4KKyAgdGFyZ2V0IGxpYnJhcnksIFpMSUIvTElCU1NIMiBhdmFpbGFiaWxpdHkgYW5kIGxvY2F0aW9uLCBldGMuCiBfIENvcHkgYW55IGZpbGUgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5IHRvIG1ha2Vsb2cgKGkuZS46CiAgIGNwIGluaXRzY3JpcHQuc2ggbWFrZWxvZyk6IHRoaXMgaXMgaW50ZW5kZWQgdG8gY3JlYXRlIHRoZSBtYWtlbG9nIGZpbGUgd2l0aAogICBhbiBBU0NJSSBDQ1NJRCEKQEAgLTI0NSw2ICsyNjAsOCBAQAogICBwcm9ncmFtIHVzaW5nIGxpYmN1cmwuCiBfIExJQnh4eCBtb2R1bGVzIGFuZCBwcm9ncmFtcy4gQWx0aG91Z2ggdGhlIHRlc3QgZW52aXJvbm1lbnQgaXMgbm90IHN1cHBvcnRlZAogICBvbiBPUy80MDAsIHRoZSBsaWJjdXJsIHRlc3QgcHJvZ3JhbXMgYXJlIGNvbXBpbGVkIGZvciBtYW51YWwgdGVzdHMuCitfIElGUyBkaXJlY3RvcnkgL2N1cmwvaW5jbHVkZS9jdXJsIGNvbnRhaW5nIHRoZSBDIGhlYWRlciBmaWxlcyBmb3IgSUZTIHNvdXJjZQorICBDL0MrKyBjb21waWxhdGlvbiBhbmQgY3VybC5pbmMucnBnbGUgZm9yIElGUyBzb3VyY2UgSUxFL1JQRyBjb21waWxhdGlvbi4KIAogCiAKQEAgLTI1OCwyMSArMjc1LDIyIEBACiAgIExDX0NUWVBFLCBvciBieSBzZXR0aW5nIGVudmlyb25tZW50IHZhcmlhYmxlIFFBRFJUX0VOVl9MT0NBTEUgdG8gdGhlIGxvY2FsZQogICBvYmplY3QgcGF0aCBiZWZvcmUgZXhlY3V0aW5nIHRoZSBwcm9ncmFtLgogXyBEbyBub3QgdXNlIG9yaWdpbmFsIHNvdXJjZSBpbmNsdWRlIGZpbGVzIHVubGVzcyB5b3Uga25vdyB3aGF0IHlvdSBhcmUgZG9pbmcuCi0gIFVzZSB0aGUgaW5zdGFsbGVkIG1lbWJlcnMgaW5zdGVhZCAoaW4gL1FTWVMuTElCL0NVUkwuTElCL0guRklMRSkuCisgIFVzZSB0aGUgaW5zdGFsbGVkIG1lbWJlcnMgaW5zdGVhZCAoaW4gL1FTWVMuTElCL0NVUkwuTElCL0guRklMRSBhbmQKKyAgL2N1cmwvaW5jbHVkZS9jdXJsKS4KIAogCiAKIElMRS9SUEcgc3VwcG9ydDoKIAogICBTaW5jZSA5NSUgb2YgdGhlIE9TLzQwMCBwcm9ncmFtbWVycyB1c2UgSUxFL1JQRyBleGNsdXNpdmVseSwgYSBkZWZpbml0aW9uCi0gIC9DT1BZIG1lbWJlciBpcyBwcm92aWRlZCBmb3IgdGhpcyBsYW5ndWFnZS4gVG8gaW5jbHVkZSBhbGwgbGliY3VybAorICAvSU5DTFVERSBtZW1iZXIgaXMgcHJvdmlkZWQgZm9yIHRoaXMgbGFuZ3VhZ2UuIFRvIGluY2x1ZGUgYWxsIGxpYmN1cmwKICAgZGVmaW5pdGlvbnMgaW4gYW4gSUxFL1JQRyBtb2R1bGUsIGxpbmUKIAogICAgICBoIGJuZGRpcignQ1VSTC9DVVJMJykKIAogbXVzdCBmaWd1cmUgaW4gdGhlIHByb2dyYW0gaGVhZGVyLCBhbmQgbGluZQogCi0gICAgIGQvY29weSBjdXJsL2gsY3VybC5pbmMKKyAgICAgZC9pbmNsdWRlIGN1cmwvaCxjdXJsLmluYwogCiBpbiB0aGUgZ2xvYmFsIGRhdGEgc2VjdGlvbiBvZiB0aGUgbW9kdWxlJ3Mgc291cmNlIGNvZGUuCiAKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL09TNDAwL2Njc2lkY3VybC5jIGIvcGFja2FnZXMvT1M0MDAvY2NzaWRjdXJsLmMKaW5kZXggYTkwM2ZlMy4uNzViNzU3MCAxMDA2NDQKLS0tIGEvcGFja2FnZXMvT1M0MDAvY2NzaWRjdXJsLmMKKysrIGIvcGFja2FnZXMvT1M0MDAvY2NzaWRjdXJsLmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNjc5LDYgKzY3OSw4IEBACiAgICAgICAgIGJyZWFrOwogCiAgICAgICBjYXNlIENVUkxJTkZPX1RMU19TRVNTSU9OOgorICAgICAgY2FzZSBDVVJMSU5GT19UTFNfU1NMX1BUUjoKKyAgICAgIGNhc2UgQ1VSTElORk9fU09DS0VUOgogICAgICAgICBicmVhazsKIAogICAgICAgZGVmYXVsdDoKQEAgLTkzMiw2ICs5MzQsMTQgQEAKIAogICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIENVUkxGT1JNX0NPTlRFTlRMRU46CisgICAgICBsZW5ndGh4ID0gbmFyZ3M7CisKKyAgICAgIGlmKCFmb3JtcykKKyAgICAgICAgdmFsdWUgPSAoY2hhciAqKSB2YV9hcmcoYXJnLCBjdXJsX29mZl90KTsKKworICAgICAgYnJlYWs7CisKICAgICBjYXNlIENVUkxGT1JNX05BTUVMRU5HVEg6CiAgICAgICBuYW1lbGVuZ3RoeCA9IG5hcmdzOwogCkBAIC0xMTMzLDYgKzExNDMsNyBAQAogICBjYXNlIENVUkxPUFRfQ09PS0lFTElTVDoKICAgY2FzZSBDVVJMT1BUX0NSTEZJTEU6CiAgIGNhc2UgQ1VSTE9QVF9DVVNUT01SRVFVRVNUOgorICBjYXNlIENVUkxPUFRfREVGQVVMVF9QUk9UT0NPTDoKICAgY2FzZSBDVVJMT1BUX0ROU19TRVJWRVJTOgogICBjYXNlIENVUkxPUFRfRUdEU09DS0VUOgogICBjYXNlIENVUkxPUFRfRU5DT0RJTkc6CkBAIC0xMjc4LDMgKzEyODksNDIgQEAKIAogICByZXR1cm4gKGNoYXIgKikgdmFsdWU7CiB9CisKKworY2hhciAqCitjdXJsX3B1c2hoZWFkZXJfYnludW1fY3NzaWQoc3RydWN0IGN1cmxfcHVzaGhlYWRlcnMgKmgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG51bSwgdW5zaWduZWQgaW50IGNjc2lkKQorCit7CisgIGNoYXIgKmQgPSAoY2hhciAqKSBOVUxMOworICBjaGFyICpzID0gY3VybF9wdXNoaGVhZGVyX2J5bnVtKGgsIG51bSk7CisKKyAgaWYocykKKyAgICBkID0gZHluY29udmVydChjY3NpZCwgcywgLTEsIEFTQ0lJX0NDU0lEKTsKKworICByZXR1cm4gZDsKK30KKworCitjaGFyICoKK2N1cmxfcHVzaGhlYWRlcl9ieW5hbWVfY2NzaWQoc3RydWN0IGN1cmxfcHVzaGhlYWRlcnMgKmgsIGNvbnN0IGNoYXIgKmhlYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGNjc2lkaW4sIHVuc2lnbmVkIGludCBjY3NpZG91dCkKKworeworICBjaGFyICpkID0gKGNoYXIgKikgTlVMTDsKKyAgY2hhciAqczsKKworICBpZihoZWFkZXIpIHsKKyAgICBoZWFkZXIgPSBkeW5jb252ZXJ0KEFTQ0lJX0NDU0lELCBoZWFkZXIsIC0xLCBjY3NpZGluKTsKKworICAgIGlmKGhlYWRlcikgeworICAgICAgcyA9IGN1cmxfcHVzaGhlYWRlcl9ieW5hbWUoaCwgaGVhZGVyKTsKKyAgICAgIGZyZWUoKGNoYXIgKikgaGVhZGVyKTsKKworICAgICAgaWYocykKKyAgICAgICAgZCA9IGR5bmNvbnZlcnQoY2NzaWRvdXQsIHMsIC0xLCBBU0NJSV9DQ1NJRCk7CisgICAgfQorICB9CisKKyAgcmV0dXJuIGQ7Cit9CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9PUzQwMC9jY3NpZGN1cmwuaCBiL3BhY2thZ2VzL09TNDAwL2Njc2lkY3VybC5oCmluZGV4IDNkMWZlNzkuLjViZDI0Y2YgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL09TNDAwL2Njc2lkY3VybC5oCisrKyBiL3BhY2thZ2VzL09TNDAwL2Njc2lkY3VybC5oCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTYxLDUgKzYxLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBjY3NpZCk7CiBDVVJMX0VYVEVSTiBDVVJMY29kZSBjdXJsX2Vhc3lfc2V0b3B0X2Njc2lkKENVUkwgKiBjdXJsLCBDVVJMb3B0aW9uIHRhZywgLi4uKTsKIENVUkxfRVhURVJOIHZvaWQgY3VybF9jZXJ0aW5mb19mcmVlX2FsbChzdHJ1Y3QgY3VybF9jZXJ0aW5mbyAqaW5mbyk7CitDVVJMX0VYVEVSTiBjaGFyICpjdXJsX3B1c2hoZWFkZXJfYnludW1fY3NzaWQoc3RydWN0IGN1cmxfcHVzaGhlYWRlcnMgKmgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG51bSwgdW5zaWduZWQgaW50IGNjc2lkKTsKK0NVUkxfRVhURVJOIGNoYXIgKmN1cmxfcHVzaGhlYWRlcl9ieW5hbWVfY2NzaWQoc3RydWN0IGN1cmxfcHVzaGhlYWRlcnMgKmgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmhlYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGNjc2lkaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBjY3NpZG91dCk7CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvT1M0MDAvY3VybC5pbmMuaW4gYi9wYWNrYWdlcy9PUzQwMC9jdXJsLmluYy5pbgppbmRleCAyYmJmNmIwLi4yYWU3NmQ0IDEwMDY0NAotLS0gYS9wYWNrYWdlcy9PUzQwMC9jdXJsLmluYy5pbgorKysgYi9wYWNrYWdlcy9PUzQwMC9jdXJsLmluYy5pbgpAQCAtOSw3ICs5LDcgQEAKICAgICAgICoKICAgICAgICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAgICAgICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICAgICAgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICAgICAgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAgICAgICoKICAgICAgICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgICAgICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNjYsNiArNjYsOCBAQAogICAgICBkIENVUkxJTkZPX0RPVUJMRS4uLgogICAgICBkICAgICAgICAgICAgICAgICBjICAgICAgICAgICAgICAgICAgIFgnMDAzMDAwMDAnCiAgICAgIGQgQ1VSTElORk9fU0xJU1QgIGMgICAgICAgICAgICAgICAgICAgWCcwMDQwMDAwMCcKKyAgICAgZCBDVVJMSU5GT19TT0NLRVQuLi4KKyAgICAgZCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgICAgICAgICBYJzAwNTAwMDAwJwogICAgICBkIENVUkxJTkZPX01BU0sgICBjICAgICAgICAgICAgICAgICAgIFgnMDAwRkZGRkYnCiAgICAgIGQgQ1VSTElORk9fVFlQRU1BU0suLi4KICAgICAgZCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgICAgICAgICBYJzAwRjAwMDAwJwpAQCAtMTIzLDIxICsxMjUsMjUgQEAKICAgICAgZCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgICAgICAgICBYJzAwMDQwMDAwJwogICAgICBkIENVUkxfVkVSU0lPTl9VTklYX1NPQ0tFVFMuLi4KICAgICAgZCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgICAgICAgICBYJzAwMDgwMDAwJworICAgICBkIENVUkxfVkVSU0lPTl9QU0wuLi4KKyAgICAgZCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgICAgICAgICBYJzAwMTAwMDAwJwogICAgICAgKgotICAgICBkIEhUVFBQT1NUX0ZJTEVOQU1FLi4uCisgICAgIGQgQ1VSTF9IVFRQUE9TVF9GSUxFTkFNRS4uLgogICAgICBkICAgICAgICAgICAgICAgICBjICAgICAgICAgICAgICAgICAgIFgnMDAwMDAwMDEnCi0gICAgIGQgSFRUUFBPU1RfUkVBREZJTEUuLi4KKyAgICAgZCBDVVJMX0hUVFBQT1NUX1JFQURGSUxFLi4uCiAgICAgIGQgICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAgICAgICAgWCcwMDAwMDAwMicKLSAgICAgZCBIVFRQUE9TVF9QVFJOQU1FLi4uCisgICAgIGQgQ1VSTF9IVFRQUE9TVF9QVFJOQU1FLi4uCiAgICAgIGQgICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAgICAgICAgWCcwMDAwMDAwNCcKLSAgICAgZCBIVFRQUE9TVF9QVFJDT05URU5UUy4uLgorICAgICBkIENVUkxfSFRUUFBPU1RfUFRSQ09OVEVOVFMuLi4KICAgICAgZCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgICAgICAgICBYJzAwMDAwMDA4JwotICAgICBkIEhUVFBQT1NUX0JVRkZFUi4uLgorICAgICBkIENVUkxfSFRUUFBPU1RfQlVGRkVSLi4uCiAgICAgIGQgICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAgICAgICAgWCcwMDAwMDAxMCcKLSAgICAgZCBIVFRQUE9TVF9QVFJCVUZGRVIuLi4KKyAgICAgZCBDVVJMX0hUVFBQT1NUX1BUUkJVRkZFUi4uLgogICAgICBkICAgICAgICAgICAgICAgICBjICAgICAgICAgICAgICAgICAgIFgnMDAwMDAwMjAnCi0gICAgIGQgSFRUUFBPU1RfQ0FMTEJBQ0suLi4KKyAgICAgZCBDVVJMX0hUVFBQT1NUX0NBTExCQUNLLi4uCiAgICAgIGQgICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAgICAgICAgWCcwMDAwMDA0MCcKKyAgICAgZCBDVVJMX0hUVFBQT1NUX0xBUkdFLi4uCisgICAgIGQgICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAgICAgICAgWCcwMDAwMDA4MCcKICAgICAgICoKICAgICAgZCBDVVJMX1NFRUtGVU5DX09LLi4uCiAgICAgIGQgICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAgICAgICAgMApAQCAtMjAyLDYgKzIwOCw4IEBACiAgICAgIGQgICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAgICAgICAgMAogICAgICBkIENVUkxPUFRUWVBFX09CSkVDVFBPSU5ULi4uCiAgICAgIGQgICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAgICAgICAgMTAwMDAKKyAgICAgZCBDVVJMT1BUVFlQRV9TVFJJTkdQT0lOVC4uLgorICAgICBkICAgICAgICAgICAgICAgICBjICAgICAgICAgICAgICAgICAgIDEwMDAwCiAgICAgIGQgQ1VSTE9QVFRZUEVfRlVOQ1RJT05QT0lOVC4uLgogICAgICBkICAgICAgICAgICAgICAgICBjICAgICAgICAgICAgICAgICAgIDIwMDAwCiAgICAgIGQgQ1VSTE9QVFRZUEVfT0ZGX1QuLi4KQEAgLTIyMiw2ICsyMzAsMTIgQEAKICAgICAgZCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgICAgICAgICAyCiAgICAgIGQgQ1VSTF9IVFRQX1ZFUlNJT05fMl8wLi4uCiAgICAgIGQgICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAgICAgICAgMworICAgICBkIENVUkxfSFRUUF9WRVJTSU9OXzIuLi4KKyAgICAgZCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgICAgICAgICAzCisgICAgIGQgQ1VSTF9IVFRQX1ZFUlNJT05fMlRMUy4uLgorICAgICBkICAgICAgICAgICAgICAgICBjICAgICAgICAgICAgICAgICAgIDQKKyAgICAgZCBDVVJMX0hUVFBfVkVSU0lPTl8yX1BSSU9SX0tOT1dMRURHRS4uLgorICAgICBkICAgICAgICAgICAgICAgICBjICAgICAgICAgICAgICAgICAgIDUKICAgICAgICoKICAgICAgZCBDVVJMX05FVFJDX0lHTk9SRUQuLi4KICAgICAgZCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgICAgICAgICAwCkBAIC0yNzYsNiArMjkwLDkgQEAKICAgICAgZCBDVVJMX0NTRUxFQ1RfRVJSLi4uCiAgICAgIGQgICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAgICAgICAgWCcwMDAwMDAwNCcKICAgICAgICoKKyAgICAgZCBDVVJMX1BVU0hfT0sgICAgYyAgICAgICAgICAgICAgICAgICAwCisgICAgIGQgQ1VSTF9QVVNIX0RFTlkgIGMgICAgICAgICAgICAgICAgICAgMQorICAgICAgKgogICAgICBkIENVUkxQQVVTRV9SRUNWICBjICAgICAgICAgICAgICAgICAgIFgnMDAwMDAwMDEnCiAgICAgIGQgQ1VSTFBBVVNFX1JFQ1ZfQ09OVC4uLgogICAgICBkICAgICAgICAgICAgICAgICBjICAgICAgICAgICAgICAgICAgIFgnMDAwMDAwMDAnCkBAIC01MTksNiArNTM2LDggQEAKICAgICAgZCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgICAgICAgICA5MAogICAgICBkICBDVVJMRV9TU0xfSU5WQUxJRENFUlRTVEFUVVMuLi4KICAgICAgZCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgICAgICAgICA5MQorICAgICBkICBDVVJMRV9IVFRQMl9TVFJFQU0uLi4KKyAgICAgZCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgICAgICAgICA5MgogICAgICAgKgogICAgICAgL2lmIG5vdCBkZWZpbmVkKENVUkxfTk9fT0xESUVTKQogICAgICBkICBDVVJMRV9VUkxfTUFMRk9STUFUX1VTRVIuLi4KQEAgLTY3Niw3ICs2OTUsOSBAQAogICAgICBkICAgICAgICAgICAgICAgICBjICAgICAgICAgICAgICAgICAgIDMKICAgICAgICoKICAgICAgZCBDVVJMU1NMT1BUX0FMTE9XX0JFQVNULi4uCi0gICAgIGQgICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAgICAgICAgMQorICAgICBkICAgICAgICAgICAgICAgICBjICAgICAgICAgICAgICAgICAgIFgnMDAwMScKKyAgICAgZCBDVVJMU1NMT1BUX05PX1JFVk9LRS4uLgorICAgICBkICAgICAgICAgICAgICAgICBjICAgICAgICAgICAgICAgICAgIFgnMDAwMicKICAgICAgICoKICAgICAgIC9pZiBub3QgZGVmaW5lZChDVVJMX05PX09MRElFUykKICAgICAgZCBjdXJsX2Z0cHNzbCAgICAgcyAgICAgICAgICAgICAgICAgICBsaWtlKGN1cmxfdXNlc3NsKQpAQCAtMTIxNSw2ICsxMjM2LDIyIEBACiAgICAgIGQgICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAgICAgICAgMTAyMzUKICAgICAgZCAgQ1VSTE9QVF9TRVJWSUNFX05BTUUuLi4KICAgICAgZCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgICAgICAgICAxMDIzNgorICAgICBkICBDVVJMT1BUX1BJUEVXQUlULi4uCisgICAgIGQgICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAgICAgICAgMDAyMzcKKyAgICAgZCAgQ1VSTE9QVF9ERUZBVUxUX1BST1RPQ09MLi4uCisgICAgIGQgICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAgICAgICAgMTAyMzgKKyAgICAgZCAgQ1VSTE9QVF9TVFJFQU1fV0VJR0hULi4uCisgICAgIGQgICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAgICAgICAgMDAyMzkKKyAgICAgZCAgQ1VSTE9QVF9TVFJFQU1fREVQRU5EUy4uLgorICAgICBkICAgICAgICAgICAgICAgICBjICAgICAgICAgICAgICAgICAgIDEwMjQwCisgICAgIGQgIENVUkxPUFRfU1RSRUFNX0RFUEVORFNfRS4uLgorICAgICBkICAgICAgICAgICAgICAgICBjICAgICAgICAgICAgICAgICAgIDEwMjQxCisgICAgIGQgIENVUkxPUFRfVEZUUF9OT19PUFRJT05TLi4uCisgICAgIGQgICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAgICAgICAgMDAyNDIKKyAgICAgZCAgQ1VSTE9QVF9DT05ORUNUX1RPLi4uCisgICAgIGQgICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAgICAgICAgMTAyNDMKKyAgICAgZCAgQ1VSTE9QVF9UQ1BfRkFTVE9QRU4uLi4KKyAgICAgZCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgICAgICAgICAwMDI0NAogICAgICAgKgogICAgICAgL2lmIG5vdCBkZWZpbmVkKENVUkxfTk9fT0xESUVTKQogICAgICBkICBDVVJMT1BUX0ZJTEUgICBjICAgICAgICAgICAgICAgICAgIDEwMDAxCkBAIC0xMzA1LDYgKzEzNDIsOCBAQAogICAgICBkICAgICAgICAgICAgICAgICBjICAgICAgICAgICAgICAgICAgIDE4CiAgICAgIGQgIENVUkxGT1JNX1NUUkVBTS4uLgogICAgICBkICAgICAgICAgICAgICAgICBjICAgICAgICAgICAgICAgICAgIDE5CisgICAgIGQgIENVUkxGT1JNX0NPTlRFTlRMRU4uLi4KKyAgICAgZCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgICAgICAgICAyMAogICAgICAgKgogICAgICBkIENVUkxJTkZPICAgICAgICBzICAgICAgICAgICAgIDEwaSAwIGJhc2VkKCMjIyMjI3B0ciMjIyMjIykgICAgICAgICAgICAgICBFbnVtCiAgICAgIGQgIENVUkxJTkZPX0VGRkVDVElWRV9VUkwuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENVUkxJTkZPX1NUUklORyArIDEKQEAgLTEzOTMsNiArMTQzMiwxMCBAQAogICAgICBkICAgICAgICAgICAgICAgICBjICAgICAgICAgICAgICAgICAgIFgnMDAyMDAwMkEnCiAgICAgIGQgIENVUkxJTkZPX1RMU19TRVNTSU9OLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENVUkxJTkZPX1NMSVNUICsgNDMKICAgICAgZCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgICAgICAgICBYJzAwNDAwMDJCJworICAgICBkICBDVVJMSU5GT19BQ1RJVkVTT0NLRVQuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDVVJMSU5GT19TT0NLRVQgKyA0NAorICAgICBkICAgICAgICAgICAgICAgICBjICAgICAgICAgICAgICAgICAgIFgnMDA1MDAwMkMnCisgICAgIGQgIENVUkxJTkZPX1RMU19TU0xfUFRSLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENVUkxJTkZPX1NMSVNUICsgNDUKKyAgICAgZCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgICAgICAgICBYJzAwNDAwMDJEJwogICAgICAgKgogICAgICBkICBDVVJMSU5GT19IVFRQX0NPREUuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbGQgLi4uUkVTUE9OU0VfQ09ERQogICAgICBkICAgICAgICAgICAgICAgICBjICAgICAgICAgICAgICAgICAgIFgnMDAyMDAwMDInCkBAIC0xNDE5LDYgKzE0NjIsMTAgQEAKICAgICAgZCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgICAgICAgICA4CiAgICAgIGQgIENVUkxTU0xCQUNLRU5EX0RBUldJTlNTTC4uLgogICAgICBkICAgICAgICAgICAgICAgICBjICAgICAgICAgICAgICAgICAgIDkKKyAgICAgZCAgQ1VSTFNTTEJBQ0tFTkRfQVhUTFMuLi4KKyAgICAgZCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgICAgICAgICAxMAorICAgICBkICBDVVJMU1NMQkFDS0VORF9NQkVEVExTLi4uCisgICAgIGQgICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAgICAgICAgMTEKICAgICAgICoKICAgICAgZCBjdXJsX2Nsb3NlcG9saWN5Li4uCiAgICAgIGQgICAgICAgICAgICAgICAgIHMgICAgICAgICAgICAgMTBpIDAgYmFzZWQoIyMjIyMjcHRyIyMjIyMjKSAgICAgICAgICAgICAgIEVudW0KQEAgLTE1NzMsNiArMTYyMCwxOCBAQAogICAgICBkICAgICAgICAgICAgICAgICBjICAgICAgICAgICAgICAgICAgIDEwMDEyCiAgICAgIGQgIENVUkxNT1BUX01BWF9UT1RBTF9DT05ORUNUSU9OUy4uLgogICAgICBkICAgICAgICAgICAgICAgICBjICAgICAgICAgICAgICAgICAgIDAwMDEzCisgICAgIGQgIENVUkxNT1BUX1BVU0hGVU5DVElPTi4uLgorICAgICBkICAgICAgICAgICAgICAgICBjICAgICAgICAgICAgICAgICAgIDIwMDE0CisgICAgIGQgIENVUkxNT1BUX1BVU0hEQVRBLi4uCisgICAgIGQgICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAgICAgICAgMTAwMTUKKyAgICAgICoKKyAgICAgICogQml0bWFzayBiaXRzIGZvciBDVVJMTU9QVF9QSVBFTElORy4KKyAgICAgICoKKyAgICAgZCBDVVJMUElQRV9OT1RISU5HLi4uCisgICAgIGQgICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAgICAgICAgeCcwMDAwMDAwMCcKKyAgICAgZCBDVVJMUElQRV9IVFRQMSAgYyAgICAgICAgICAgICAgICAgICB4JzAwMDAwMDAxJworICAgICBkIENVUkxQSVBFX01VTFRJUExFWC4uLgorICAgICBkICAgICAgICAgICAgICAgICBjICAgICAgICAgICAgICAgICAgIHgnMDAwMDAwMDInCiAgICAgICAqCiAgICAgICAqICBQdWJsaWMgQVBJIGVudW1zIGZvciBSVFNQIHJlcXVlc3RzLgogICAgICAgKgpAQCAtMTY3Miw2ICsxNzMxLDcgQEAKICAgICAgZCAgIHZhbHVlX3B0ciAgICAgICAgICAgICAgICAgICAgICogICBvdmVybGF5KHZhbHVlKQogICAgICBkICAgdmFsdWVfcHJvY3B0ci4uLgogICAgICBkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIG92ZXJsYXkodmFsdWUpIHByb2NwdHIKKyAgICAgZCAgIHZhbHVlX251bSAgICAgICAgICAgICAgICAgICAgICAgICBvdmVybGF5KHZhbHVlOiA4KSBsaWtlKGN1cmxfb2ZmX3QpCiAgICAgICAqCiAgICAgIGQgY3VybF9zbGlzdCAgICAgIGRzICAgICAgICAgICAgICAgICAgYmFzZWQoIyMjIyMjcHRyIyMjIyMjKQogICAgICBkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1YWxpZmllZApAQCAtMTc5MSw2ICsxODUxLDEyIEBACiAgICAgIGQgY3VybF9zb2NrZXRfY2FsbGJhY2suLi4KICAgICAgZCAgICAgICAgICAgICAgICAgcyAgICAgICAgICAgICAgICogICBiYXNlZCgjIyMjIyNwdHIjIyMjIyMpIHByb2NwdHIKICAgICAgICoKKyAgICAgZCBjdXJsX211bHRpX3RpbWVyX2NhbGxiYWNrLi4uCisgICAgIGQgICAgICAgICAgICAgICAgIHMgICAgICAgICAgICAgICAqICAgYmFzZWQoIyMjIyMjcHRyIyMjIyMjKSBwcm9jcHRyCisgICAgICAqCisgICAgIGQgY3VybF9wdXNoX2NhbGxiYWNrLi4uCisgICAgIGQgICAgICAgICAgICAgICAgIHMgICAgICAgICAgICAgICAqICAgYmFzZWQoIyMjIyMjcHRyIyMjIyMjKSBwcm9jcHRyCisgICAgICAqCiAgICAgIGQgY3VybF9vcGVuc29ja2V0X2NhbGxiYWNrLi4uCiAgICAgIGQgICAgICAgICAgICAgICAgIHMgICAgICAgICAgICAgICAqICAgYmFzZWQoIyMjIyMjcHRyIyMjIyMjKSBwcm9jcHRyCiAgICAgICAqCkBAIC0yMTA2LDYgKzIxNzIsMTYgQEAKICAgICAgZCAgICAgICAgICAgICAgICAgcHIgICAgICAgICAgICAgICogICBleHRwcm9jKCdjdXJsX211bHRpX3N0cmVycm9yJykgICAgICAgY2hhciAqCiAgICAgIGQgIGNvZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgbGlrZShDVVJMTWNvZGUpCiAgICAgICAqCisgICAgIGQgY3VybF9wdXNoaGVhZGVyX2J5bnVtLi4uCisgICAgIGQgICAgICAgICAgICAgICAgIHByICAgICAgICAgICAgICAqICAgZXh0cHJvYygnY3VybF9wdXNoaGVhZGVyX2J5bnVtJykgICAgIGNoYXIgKgorICAgICBkICBoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIHZhbHVlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJsX3B1c2hoZWFkZXJzICoKKyAgICAgZCAgbnVtICAgICAgICAgICAgICAgICAgICAgICAgICAxMHUgMCB2YWx1ZQorICAgICAgKgorICAgICBkIGN1cmxfcHVzaGhlYWRlcl9ieW5hbWUuLi4KKyAgICAgZCAgICAgICAgICAgICAgICAgcHIgICAgICAgICAgICAgICogICBleHRwcm9jKCdjdXJsX3B1c2hoZWFkZXJfYnluYW1lJykgICAgY2hhciAqCisgICAgIGQgIGggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgdmFsdWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cmxfcHVzaGhlYWRlcnMgKgorICAgICBkICBoZWFkZXIgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIHZhbHVlIG9wdGlvbnMoKnN0cmluZykgICAgICAgICAgICAgICBjb25zdCBjaGFyICoKKyAgICAgICoKICAgICAgZCBjdXJsX211bHRpX3NvY2tldC4uLgogICAgICBkICAgICAgICAgICAgICAgICBwciAgICAgICAgICAgICAgICAgIGV4dHByb2MoJ2N1cmxfbXVsdGlfc29ja2V0JykKICAgICAgZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWtlKENVUkxNY29kZSkKQEAgLTIyNzMsNCArMjM0OSwxOSBAQAogICAgICBkICBvYmplY3RhcmcgICAgICAgICAgICAgICAgICAgICAgKiAgIHZhbHVlIG9wdGlvbnMoKnN0cmluZzogKm5vcGFzcykKICAgICAgZCAgY2NzaWQgICAgICAgICAgICAgICAgICAgICAgICAxMHUgMCB2YWx1ZSBvcHRpb25zKCpub3Bhc3MpCiAgICAgICAqCisgICAgIGQgY3VybF9wdXNoaGVhZGVyX2J5bnVtX2Njc2lkLi4uCisgICAgIGQgICAgICAgICAgICAgICAgIHByICAgICAgICAgICAgICAqICAgZXh0cHJvYyggICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKgorICAgICBkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2N1cmxfcHVzaGhlYWRlcl9ieW51bV9jY3NpZCcpCisgICAgIGQgIGggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgdmFsdWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cmxfcHVzaGhlYWRlcnMgKgorICAgICBkICBudW0gICAgICAgICAgICAgICAgICAgICAgICAgIDEwdSAwIHZhbHVlCisgICAgIGQgIGNjc2lkICAgICAgICAgICAgICAgICAgICAgICAgMTB1IDAgdmFsdWUKKyAgICAgICoKKyAgICAgZCBjdXJsX3B1c2hoZWFkZXJfYnluYW1lX2Njc2lkLi4uCisgICAgIGQgICAgICAgICAgICAgICAgIHByICAgICAgICAgICAgICAqICAgZXh0cHJvYyggICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKgorICAgICBkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2N1cmxfcHVzaGhlYWRlcl9ieW5hbWVfY2NzaWQnKQorICAgICBkICBoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIHZhbHVlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJsX3B1c2hoZWFkZXJzICoKKyAgICAgZCAgaGVhZGVyICAgICAgICAgICAgICAgICAgICAgICAgICogICB2YWx1ZSBvcHRpb25zKCpzdHJpbmcpICAgICAgICAgICAgICAgY29uc3QgY2hhciAqCisgICAgIGQgIGNjc2lkaW4gICAgICAgICAgICAgICAgICAgICAgMTB1IDAgdmFsdWUKKyAgICAgZCAgY2NzaWRvdXQgICAgICAgICAgICAgICAgICAgICAxMHUgMCB2YWx1ZQorICAgICAgKgogICAgICAgL2VuZGlmCmRpZmYgLS1naXQgYS9wYWNrYWdlcy9PUzQwMC9pbml0c2NyaXB0LnNoIGIvcGFja2FnZXMvT1M0MDAvaW5pdHNjcmlwdC5zaAppbmRleCAwMTA1ZjVhLi44ZDY2YjYwIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9PUzQwMC9pbml0c2NyaXB0LnNoCisrKyBiL3BhY2thZ2VzL09TNDAwL2luaXRzY3JpcHQuc2gKQEAgLTYwLDYgKzYwLDEzIEBACiBzZXRlbnYgWkxJQl9MSUIgICAgICAgICAnWkxJQicgICAgICAgICAgICAgICAgICAjIFpMSUIgbGlicmFyeS4KIHNldGVudiBaTElCX0JORERJUiAgICAgICdaTElCX0EnICAgICAgICAgICAgICAgICMgWkxJQiBiaW5kaW5nIGRpcmVjdG9yeS4KIAorIyAgICAgICBEZWZpbmUgTElCU1NIMiBhdmFpbGFiaWxpdHkgYW5kIGxvY2F0aW9ucy4KKworc2V0ZW52IFdJVEhfTElCU1NIMiAgICAgMCAgICAgICAgICAgICAgICAgICAgICAgIyBEZWZpbmUgdG8gMSB0byBlbmFibGUuCitzZXRlbnYgTElCU1NIMl9JTkNMVURFICAnL2xpYnNzaDIvaW5jbHVkZScgICAgICAjIExJQlNTSDIgaW5jbHVkZSBJRlMgZGlyZWN0b3J5Lgorc2V0ZW52IExJQlNTSDJfTElCICAgICAgJ0xJQlNTSDInICAgICAgICAgICAgICAgIyBMSUJTU0gyIGxpYnJhcnkuCitzZXRlbnYgTElCU1NIMl9CTkRESVIgICAnTElCU1NIMl9BJyAgICAgICAgICAgICAjIExJQlNTSDIgYmluZGluZyBkaXJlY3RvcnkuCisKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIApAQCAtMTkwLDYgKzE5NywxMCBAQAogICAgICAgICB0aGVuICAgIENNRD0iJHtDTUR9ICcke1pMSUJfSU5DTFVERX0nIgogICAgICAgICBmaQogCisgICAgICAgIGlmIFsgIiR7V0lUSF9MSUJTU0gyfSIgIT0gIjAiIF0KKyAgICAgICAgdGhlbiAgICBDTUQ9IiR7Q01EfSAnJHtMSUJTU0gyX0lOQ0xVREV9JyIKKyAgICAgICAgZmkKKwogICAgICAgICBDTUQ9IiR7Q01EfSAke0lOQ0xVREVTfSkiCiAgICAgICAgIENNRD0iJHtDTUR9IFRHVENDU0lEKCR7VEdUQ0NTSUR9KSBUR1RSTFMoJHtUR1RSTFN9KSIKICAgICAgICAgQ01EPSIke0NNRH0gT1VUUFVUKCR7T1VUUFVUfSkiCkBAIC0yMDIsNiArMjEzLDEwIEBACiAgICAgICAgIHRoZW4gICAgREVGSU5FUz0iJHtERUZJTkVTfSBIQVZFX0xJQlogSEFWRV9aTElCX0giCiAgICAgICAgIGZpCiAKKyAgICAgICAgaWYgWyAiJHtXSVRIX0xJQlNTSDJ9IiAhPSAiMCIgXQorICAgICAgICB0aGVuICAgIERFRklORVM9IiR7REVGSU5FU30gVVNFX0xJQlNTSDIgSEFWRV9MSUJTU0gyX0giCisgICAgICAgIGZpCisKICAgICAgICAgaWYgWyAiJHtERUZJTkVTfSIgXQogICAgICAgICB0aGVuICAgIENNRD0iJHtDTUR9IERFRklORSgke0RFRklORVN9KSIKICAgICAgICAgZmkKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL09TNDAwL21ha2UtbGliLnNoIGIvcGFja2FnZXMvT1M0MDAvbWFrZS1saWIuc2gKaW5kZXggYTRlNTA1OS4uNTI2ZWMwMyAxMDA2NDQKLS0tIGEvcGFja2FnZXMvT1M0MDAvbWFrZS1saWIuc2gKKysrIGIvcGFja2FnZXMvT1M0MDAvbWFrZS1saWIuc2gKQEAgLTEyOCw2ICsxMjgsMTEgQEAKICAgICAgICAgQ01EPSIke0NNRH0gQk5ERElSKCR7VEFSR0VUTElCfS8ke1NUQVRCTkRESVJ9IgogICAgICAgICBpZiBbICIke1dJVEhfWkxJQn0iICE9IDAgXQogICAgICAgICB0aGVuICAgIENNRD0iJHtDTUR9ICR7WkxJQl9MSUJ9LyR7WkxJQl9CTkRESVJ9IgorICAgICAgICAgICAgICAgIGxpYmxpc3QgLWEgIiR7WkxJQl9MSUJ9IgorICAgICAgICBmaQorICAgICAgICBpZiBbICIke1dJVEhfTElCU1NIMn0iICE9IDAgXQorICAgICAgICB0aGVuICAgIENNRD0iJHtDTUR9ICR7TElCU1NIMl9MSUJ9LyR7TElCU1NIMl9CTkRESVJ9IgorICAgICAgICAgICAgICAgIGxpYmxpc3QgLWEgIiR7TElCU1NIMl9MSUJ9IgogICAgICAgICBmaQogICAgICAgICBDTUQ9IiR7Q01EfSkiCiAgICAgICAgIENNRD0iJHtDTUR9IEJORFNSVlBHTShRQURSVFRTIFFHTERDTE5UIFFHTERCUkRSKSIKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL09TNDAwL21ha2VmaWxlLnNoIGIvcGFja2FnZXMvT1M0MDAvbWFrZWZpbGUuc2gKaW5kZXggZDJiNmJjOS4uMTQxZDg3NyAxMDA2NDQKLS0tIGEvcGFja2FnZXMvT1M0MDAvbWFrZWZpbGUuc2gKKysrIGIvcGFja2FnZXMvT1M0MDAvbWFrZWZpbGUuc2gKQEAgLTIxLDcgKzIxLDcgQEAKICMgICAgICAgQ3JlYXRlIHRoZSBET0NTIHNvdXJjZSBmaWxlIGlmIGl0IGRvZXMgbm90IGV4aXN0LgogCiBpZiBhY3Rpb25fbmVlZGVkICIke0xJQklGU05BTUV9L0RPQ1MuRklMRSIKLXRoZW4gICAgQ01EPSJDUlRTUkNQRiBGSUxFKCR7VEFSR0VUTElCfS9ET0NTKSBSQ0RMRU4oMTEyKSIKK3RoZW4gICAgQ01EPSJDUlRTUkNQRiBGSUxFKCR7VEFSR0VUTElCfS9ET0NTKSBSQ0RMRU4oMjQwKSIKICAgICAgICAgQ01EPSIke0NNRH0gQ0NTSUQoJHtUR1RDQ1NJRH0pIFRFWFQoJ0RvY3VtZW50YXRpb24gdGV4dHMnKSIKICAgICAgICAgc3lzdGVtICIke0NNRH0iCiBmaQpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvT1M0MDAvb3M0MDBzeXMuYyBiL3BhY2thZ2VzL09TNDAwL29zNDAwc3lzLmMKaW5kZXggNGJlMWRlYS4uODk4MzdiZCAxMDA2NDQKLS0tIGEvcGFja2FnZXMvT1M0MDAvb3M0MDBzeXMuYworKysgYi9wYWNrYWdlcy9PUzQwMC9vczQwMHN5cy5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL09TNDAwL29zNDAwc3lzLmggYi9wYWNrYWdlcy9PUzQwMC9vczQwMHN5cy5oCmluZGV4IDExNDQ2OTIuLmM5OGUxOTggMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL09TNDAwL29zNDAwc3lzLmgKKysrIGIvcGFja2FnZXMvT1M0MDAvb3M0MDBzeXMuaApAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeW1iaWFuL2dyb3VwL2xpYmN1cmwubW1wIGIvcGFja2FnZXMvU3ltYmlhbi9ncm91cC9saWJjdXJsLm1tcAppbmRleCA1NDVjZGVlLi5mNzRiMTliIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TeW1iaWFuL2dyb3VwL2xpYmN1cmwubW1wCisrKyBiL3BhY2thZ2VzL1N5bWJpYW4vZ3JvdXAvbGliY3VybC5tbXAKQEAgLTM1LDEyICszNSwxNSBAQAogICBzb2Nrc19zc3BpLmMgY3VybF9zc3BpLmMgc2xpc3QuYyBub25ibG9jay5jIGN1cmxfbWVtcmNoci5jIGltYXAuYyAgICBcCiAgIHBvcDMuYyBzbXRwLmMgcGluZ3BvbmcuYyBydHNwLmMgY3VybF90aHJlYWRzLmMgd2Fybmxlc3MuYyBobWFjLmMgICAgIFwKICAgdnRscy9wb2xhcnNzbC5jIGN1cmxfcnRtcC5jIG9wZW5sZGFwLmMgY3VybF9nZXRob3N0bmFtZS5jIGdvcGhlci5jICAgXAotICB2dGxzL2F4dGxzLmMgaWRuX3dpbjMyLmMgaHR0cF9uZWdvdGlhdGVfc3NwaS5jIHZ0bHMvY3lhc3NsLmMgICAgICAgICBcCi0gIGh0dHBfcHJveHkuYyBub24tYXNjaWkuYyBhc3luLWFyZXMuYyBhc3luLXRocmVhZC5jIGN1cmxfZ3NzYXBpLmMgICAgIFwKLSAgY3VybF9udGxtLmMgY3VybF9udGxtX3diLmMgY3VybF9udGxtX2NvcmUuYyBjdXJsX250bG1fbXNncy5jICAgICAgICAgXAotICBjdXJsX3Nhc2wuYyB2dGxzL3NjaGFubmVsLmMgY3VybF9tdWx0aWJ5dGUuYyB2dGxzL2RhcndpbnNzbC5jICAgICAgICBcCi0gIGNvbm5jYWNoZS5jIGN1cmxfc2FzbF9zc3BpLmMgc21iLmMgY3VybF9zYXNsX2dzc2FwaS5jICAgICAgXAotICBjdXJsX2VuZGlhbi5jIGN1cmxfZGVzLmMKKyAgdnRscy9heHRscy5jIGlkbl93aW4zMi5jIHZ0bHMvY3lhc3NsLmMgaHR0cF9wcm94eS5jIG5vbi1hc2NpaS5jICAgICAgXAorICBhc3luLWFyZXMuYyBhc3luLXRocmVhZC5jIGN1cmxfZ3NzYXBpLmMgaHR0cF9udGxtLmMgY3VybF9udGxtX3diLmMgICBcCisgIGN1cmxfbnRsbV9jb3JlLmMgY3VybF9zYXNsLmMgdnRscy9zY2hhbm5lbC5jIGN1cmxfbXVsdGlieXRlLmMgICAgICAgIFwKKyAgdnRscy9kYXJ3aW5zc2wuYyBjb25uY2FjaGUuYyBjdXJsX3Nhc2xfc3NwaS5jIHNtYi5jIGN1cmxfZW5kaWFuLmMgICAgXAorICBjdXJsX2Rlcy5jIHN5c3RlbV93aW4zMi5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIHZhdXRoL3ZhdXRoLmMgdmF1dGgvY2xlYXJ0ZXh0LmMgdmF1dGgvY3JhbS5jIHZhdXRoL2RpZ2VzdC5jICAgICAgICAgIFwKKyAgdmF1dGgvZGlnZXN0X3NzcGkuYyB2YXV0aC9rcmI1X2dzc2FwaS5jIHZhdXRoL2tyYjVfc3NwaS5jICAgICAgICAgICAgXAorICB2YXV0aC9udGxtLmMgdmF1dGgvbnRsbV9zc3BpLmMgdmF1dGgvb2F1dGgyLmMgdmF1dGgvc3BuZWdvX2dzc2FwaS5jICBcCisgIHZhdXRoL3NwbmVnb19zc3BpLmMKIAogVVNFUklOQ0xVREUgICAuLi8uLi8uLi9saWIgLi4vLi4vLi4vaW5jbHVkZS9jdXJsCiAjaWZkZWYgRU5BQkxFX1NTTApkaWZmIC0tZ2l0IGEvcGFja2FnZXMvV2luMzIvUkVBRE1FIGIvcGFja2FnZXMvV2luMzIvUkVBRE1FCmluZGV4IDI2NmU0ZWEuLmViNWQwYTYgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1dpbjMyL1JFQURNRQorKysgYi9wYWNrYWdlcy9XaW4zMi9SRUFETUUKQEAgLTMsNyArMyw3IEBACiBERVNDUklQVElPTgogCiAoSWYgeW91J3JlIG9ubHkgbG9va2luZyBmb3IgcHJlY29tcGlsZWQgd2luMzIgYmluYXJpZXMsIGdvIHZpc2l0Ci1odHRwOi8vY3VybC5oYXh4LnNlL2Rvd25sb2FkLmh0bWwpCitodHRwczovL2N1cmwuaGF4eC5zZS9kb3dubG9hZC5odG1sKQogCiBQYWNrYWdpbmcgb2YgdGhlIGN1cmwgYmluYXJpZXMgZm9yIFdpbjMyIHNob3VsZCBhdCB0aGlzIHBvaW50IGluIHRpbWUgYmUgYmFzZWQKIG9uIHRoZSBJbmZvWmlwICh6aXAvdW56aXApIGFyY2hpdmVyIGZhbWlseSBhcyB0aGUgZGUtZmFjdG8gc3RhbmRhcmQgZm9yCmRpZmYgLS1naXQgYS9wYWNrYWdlcy9XaW4zMi9jeWd3aW4vUkVBRE1FIGIvcGFja2FnZXMvV2luMzIvY3lnd2luL1JFQURNRQppbmRleCA3NDU3ZjczLi5hMDgxMWRlIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9XaW4zMi9jeWd3aW4vUkVBRE1FCisrKyBiL3BhY2thZ2VzL1dpbjMyL2N5Z3dpbi9SRUFETUUKQEAgLTE2LDggKzE2LDggQEAKIAogCiBDYW5vbmljYWwgSG9tZXBhZ2UgYW5kIERvd25sb2FkczoKLSAgaHR0cDovL2N1cmwuaGF4eC5zZS8KLSAgaHR0cDovL2N1cmwuaGF4eC5zZS9kb3dubG9hZC5odG1sCisgIGh0dHBzOi8vY3VybC5oYXh4LnNlLworICBodHRwczovL2N1cmwuaGF4eC5zZS9kb3dubG9hZC5odG1sCiAKIAogQ3lnd2luIHNwZWNpZmljIHNvdXJjZSBmaWxlcyAoYSAuUkVBRE1FIHRlbXBsYXRlIGFuZCBhIE1ha2VmaWxlCmRpZmYgLS1naXQgYS9wYWNrYWdlcy92bXMvYnVpbGRfZ252X2N1cmxfcGNzaV9kZXNjLmNvbSBiL3BhY2thZ2VzL3Ztcy9idWlsZF9nbnZfY3VybF9wY3NpX2Rlc2MuY29tCmluZGV4IDU3MmI5YjguLjNiNGNkODAgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL3Ztcy9idWlsZF9nbnZfY3VybF9wY3NpX2Rlc2MuY29tCisrKyBiL3BhY2thZ2VzL3Ztcy9idWlsZF9nbnZfY3VybF9wY3NpX2Rlc2MuY29tCkBAIC0xMTMsNiArMTEzLDcgQEAKICQhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogJCB2bXNwcmQgPSAiREVDIgogJCBpZiBiYXNlIC5lcXMuICJJNjRWTVMiIHRoZW4gdm1zcHJkID0gIkhQIgorJCB2c2lwcmQgPSAiVlNJIgogJCEKICQgd3JpdGUgcGRzYyAiICAgc29mdHdhcmUgJyd2bXNwcmQnICcnYmFzZScgVk1TIDsiCiAkIGFyY2hfdHlwZSA9IGYkZ2V0c3lpKCJBUkNIX05BTUUiKQpAQCAtMTI2LDggKzEyNywxMSBAQAogJCB2bXN0YWcgPSBtYWp2ZXIgKyBtaW52ZXIgKyBkYXNodmVyCiAkIGNvZGUgPSBmJGV4dHJhY3QoMCwgMSwgYXJjaF90eXBlKQogJCBhcmNoX2NvZGUgPSBmJGV4dHJhY3QoMCwgMSwgYXJjaF90eXBlKQotJCB3cml0ZSBwZHNjIC0KLSAiICAgaWYgKG5vdCA8c29mdHdhcmUgJyd2bXNwcmQnICcnYmFzZScgVk1TIHZlcnNpb24gbWluaW11bSAnJ25vZGVfc3d2ZXJzJz4pIDsiCiskIGxpbmVfb3V0ID0gLQorICIgICBpZiAoKG5vdCA8c29mdHdhcmUgJyd2c2lwcmQnICcnYmFzZScgVk1TIHZlcnNpb24gbWluaW11bSIgKyAtCisgIiAnJ25vZGVfc3d2ZXJzJz4pIGFuZCIgKyAtCisgIiAobm90IDxzb2Z0d2FyZSAnJ3Ztc3ByZCcgJydiYXNlJyBWTVMgdmVyc2lvbiBtaW5pbXVtICcnbm9kZV9zd3ZlcnMnPikpOyIKKyQgd3JpdGUgcGRzYyBsaW5lX291dAogJCB3cml0ZSBwZHNjICIgICAgICBlcnJvciBORUVEX1ZNUycndm1zdGFnJzsiCiAkIHdyaXRlIHBkc2MgIiAgIGVuZCBpZjsiCiAkIQpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvdm1zL2N1cmxfZ252X2J1aWxkX3N0ZXBzLnR4dCBiL3BhY2thZ2VzL3Ztcy9jdXJsX2dudl9idWlsZF9zdGVwcy50eHQKaW5kZXggNmE4N2ZlZi4uODM1MzRjMCAxMDA2NDQKLS0tIGEvcGFja2FnZXMvdm1zL2N1cmxfZ252X2J1aWxkX3N0ZXBzLnR4dAorKysgYi9wYWNrYWdlcy92bXMvY3VybF9nbnZfYnVpbGRfc3RlcHMudHh0CkBAIC0zNiw3ICszNiw3IEBACiBbZ252LmNvbW1vbl9zcmNdY3VybF8qX29yaWdpbmFsX3NyYy5iY2sgaXMgdGhlIG9yaWdpbmFsIHNvdXJjZSBvZiB0aGUgY3VybCBraXQKIGFzIHByb3ZpZGVkIGJ5IHRoZSBjdXJsIHByb2plY3QuICBbZ252LnZtc19zcmNdY3VybC0qX3Ztc19zcmMuYmNrLCBpZiBwcmVzZW50LAogaGFzIHRoZSBPcGVuVk1TIHNwZWNpZmljIGZpbGVzIHRoYXQgYXJlIHVzZWQgZm9yIGJ1aWxkaW5nIHRoYXQgYXJlIG5vdCB5ZXQgaW4KLXRoZSBjdXJsIHNvdXJjZSBraXRzIGZvciB0aGF0IHJlbGVhc2UgZGlzdHJpYnV0ZWQgaHR0cDovL2N1cmwuaGF4eC5zZQordGhlIGN1cmwgc291cmNlIGtpdHMgZm9yIHRoYXQgcmVsZWFzZSBkaXN0cmlidXRlZCBodHRwczovL2N1cmwuaGF4eC5zZQogCiBUaGVzZSBiYWNrdXAgc2F2ZXNldHMgc2hvdWxkIGJlIHJlc3RvcmVkIHRvIGRpZmZlcmVudCBkaXJlY3RvcnkgdHJlZXMgb24KIGFuIE9EUy01IHZvbHVtZShzKSB3aGljaCBhcmUgcmVmZXJlbmNlZCBieSBjb25jZWFsZWQgcm9vdGVkIGxvZ2ljYWwgbmFtZXMuCmRpZmYgLS1naXQgYS9wYWNrYWdlcy92bXMvY3VybG1zZy5oIGIvcGFja2FnZXMvdm1zL2N1cmxtc2cuaAppbmRleCAwNDczYmU2Li4yY2IzMmVjIDEwMDY0NAotLS0gYS9wYWNrYWdlcy92bXMvY3VybG1zZy5oCisrKyBiL3BhY2thZ2VzL3Ztcy9jdXJsbXNnLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9wYWNrYWdlcy92bXMvY3VybG1zZ192bXMuaCBiL3BhY2thZ2VzL3Ztcy9jdXJsbXNnX3Ztcy5oCmluZGV4IDM5NzY5NzMuLjNhZWY5Y2YgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL3Ztcy9jdXJsbXNnX3Ztcy5oCisrKyBiL3BhY2thZ2VzL3Ztcy9jdXJsbXNnX3Ztcy5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvcHJvamVjdHMvUkVBRE1FIGIvcHJvamVjdHMvUkVBRE1FCmluZGV4IGI0NWQ3ODMuLmU1ZmQwMTkgMTAwNjQ0Ci0tLSBhL3Byb2plY3RzL1JFQURNRQorKysgYi9wcm9qZWN0cy9SRUFETUUKQEAgLTY4LDE2ICs2OCwxNiBAQAogICAgSWYgeW91IGFyZSBidWlsZGluZyB3aXRoIFZDNiB0aGVuIHlvdSB3aWxsIGFsc28gbmVlZCB0aGUgRmVicnVhcnkgMjAwMwogICAgRWRpdGlvbiBvZiB0aGUgV2luZG93cyBQbGF0Zm9ybSBTREsgd2hpY2ggY2FuIGJlIGRvd25sb2FkZWQgZnJvbToKIAotICAgIGh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9lbi11cy9kb3dubG9hZC9kZXRhaWxzLmFzcHg/aWQ9MTIyNjEKKyAgICBodHRwczovL3d3dy5taWNyb3NvZnQuY29tL2VuLXVzL2Rvd25sb2FkL2RldGFpbHMuYXNweD9pZD0xMjI2MQogCiAgICBJZiB5b3UgcmVxdWlyZSBzdXBwb3J0IGZvciBJbnRlcm5hdGlvbmFsaXplZCBEb21haW4gTmFtZXMgdmlhIFdpbmRvd3MgSUROCiAgICB0aGVuIHlvdSB3aWxsIG5lZWQgZWl0aGVyOgogCiAgICAgKiBNaWNyb3NvZnQgSW50ZXJuYXRpb25hbGl6ZWQgRG9tYWluIE5hbWUgKElETikgTWl0aWdhdGlvbiBBUElzOgotICAgICAgaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL2VuLXVzL2Rvd25sb2FkL2RldGFpbHMuYXNweD9pZD03MzQKKyAgICAgIGh0dHBzOi8vd3d3Lm1pY3Jvc29mdC5jb20vZW4tdXMvZG93bmxvYWQvZGV0YWlscy5hc3B4P2lkPTczNAogCiAgICAgKiBNaWNyb3NvZnQgV2luZG93cyBTREsgVXBkYXRlIGZvciBXaW5kb3dzIFZpc3RhOgotICAgICAgaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL2VuLXVzL2Rvd25sb2FkL2RldGFpbHMuYXNweD9pZD0yMzcxOQorICAgICAgaHR0cHM6Ly93d3cubWljcm9zb2Z0LmNvbS9lbi11cy9kb3dubG9hZC9kZXRhaWxzLmFzcHg/aWQ9MjM3MTkKIAogICAgICogTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gMjAxMCBvciBhYm92ZQogCkBAIC04OCw2ICs4OCw0NiBAQAogICAgd2VsbCBhcyBhIGNvbmZpZ3VyYXRpb24gdGhhdCBpbmNsdWRlcyBib3RoLCBpdCBpcyByZWNvbW1lbmQgdGhhdCB5b3UgdXNlIHRoZQogICAgYWxsLWluLW9uZSBjb25maWd1cmF0aW9uLgogCitSdW5uaW5nIERMTCBiYXNlZCBjb25maWd1cmF0aW9ucworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgSWYgeW91IGFyZSBhIGRldmVsb3BlciBhbmQgcGxhbiB0byBydW4gdGhlIGN1cmwgdG9vbCBmcm9tIFZpc3VhbCBTdHVkaW8gKGVnCisgICB5b3UgYXJlIGRlYnVnZ2luZykgd2l0aCBhbnkgdGhpcmQtcGFydHkgbGlicmFyaWVzIChzdWNoIGFzIE9wZW5TU0wsIHdvbGZTU0wKKyAgIG9yIExpYlNTSDIpIHRoZW4geW91IHdpbGwgbmVlZCB0byBhZGQgdGhlIHNlYXJjaCBwYXRoIG9mIHRoZXNlIERMTHMgdG8gdGhlCisgICBjb25maWd1cmF0aW9uJ3MgUEFUSCBlbnZpcm9ubWVudC4gVG8gZG8gdGhhdDoKKworICAgICogT3BlbiB0aGUgJ2N1cmwtYWxsLnNsbicgb3IgJ2N1cmwuc2xuJyBzb2x1dGlvbnMKKworICAgICogUmlnaHQtY2xpY2sgb24gdGhlICdjdXJsJyBwcm9qZWN0IGFuZCBzZWxlY3QgUHJvcGVydGllcworCisgICAgKiBOYXZpZ2F0ZSB0byAnQ29uZmlndXJhdGlvbiBQcm9wZXJ0aWVzID4gRGVidWdnaW5nID4gRW52aXJvbm1lbnQnCisKKyAgICAqIEFkZCBQQVRIPSdQYXRoIHRvIERMTCc7QzpcV2luZG93c1xzeXN0ZW0zMjtDOlxXaW5kb3dzOworICAgICAgICAgICAgICAgQzpcV2luZG93c1xTeXN0ZW0zMlxXYmVtCisKKyAgIC4uLiB3aGVyZSAnUGF0aCB0byBETExgIGlzIHRoZSBjb25maWd1cmF0aW9uIHNwZWNpZmljIHBhdGguIEZvciBleGFtcGxlIHRoZQorICAgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zIGluIFZpc3VhbCBTdHVkaW8gMjAxMCBtaWdodCBiZToKKyAgIAorICAgRExMIERlYnVnIC0gRExMIE9wZW5TU0wgKFdpbjMyKToKKyAgIFBBVEg9Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW4zMlxWQzEwXERMTCBEZWJ1ZztDOlxXaW5kb3dzXHN5c3RlbTMyOworICAgICAgICBDOlxXaW5kb3dzO0M6XFdpbmRvd3NcU3lzdGVtMzJcV2JlbQorCisgICBETEwgRGVidWcgLSBETEwgT3BlblNTTCAoeDY0KToKKyAgIFBBVEg9Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW42NFxWQzEwXERMTCBEZWJ1ZztDOlxXaW5kb3dzXHN5c3RlbTMyOworICAgICAgICBDOlxXaW5kb3dzO0M6XFdpbmRvd3NcU3lzdGVtMzJcV2JlbQorCisgICBETEwgRGVidWcgLSBETEwgd29sZlNTTCAoV2luMzIpOgorICAgUEFUSD0uLlwuLlwuLlwuLlwuLlx3b2xmc3NsXGJ1aWxkXFdpbjMyXFZDMTBcRExMIERlYnVnO0M6XFdpbmRvd3Ncc3lzdGVtMzI7CisgICAgICAgIEM6XFdpbmRvd3M7QzpcV2luZG93c1xTeXN0ZW0zMlxXYmVtCisKKyAgIERMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMICh4NjQpOgorICAgUEFUSD0uLlwuLlwuLlwuLlwuLlx3b2xmc3NsXGJ1aWxkXFdpbjY0XFZDMTBcRExMIERlYnVnO0M6XFdpbmRvd3Ncc3lzdGVtMzI7CisgICAgICAgIEM6XFdpbmRvd3M7QzpcV2luZG93c1xTeXN0ZW0zMlxXYmVtCisKKyAgIElmIHlvdSBhcmUgdXNpbmcgYSBjb25maWd1cmF0aW9uIHRoYXQgdXNlcyBtdWx0aXBsZSB0aGlyZC1wYXJ0eSBsaWJyYXJ5IERMTHMKKyAgIChzdWNoIGFzIERMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDIpIHRoZW4gJ1BhdGggdG8gRExMJyB3aWxsIG5lZWQKKyAgIHRvIGNvbnRhaW4gdGhlIHBhdGggdG8gYm90aCBvZiB0aGVzZS4KKwogTm90ZXMKID09PT09CiAKQEAgLTExMCw2ICsxNTAsMTYgQEAKICAgIHN0b3JlZCBpbiB0aGUgZ2l0IHJlcG9zaXRvdHkpIHdpbGwgbmVlZCB0byBiZSBtb2RpZmllZCByYXRoZXIgdGhhbiB0aGUKICAgIGdlbmVyYXRlZCBwcm9qZWN0IGZpbGVzIHRoYXQgVmlzdWFsIFN0dWRpbyB1c2VzLgogCitMZWdhY3kgV2luZG93cyBhbmQgU1NMCis9PT09PT09PT09PT09PT09PT09PT09CisKKyAgIFNvbWUgb2YgdGhlIHByb2plY3QgY29uZmlndXJhdGlvbnMgYWxsb3cgdGhlIHVzZSBvZiBXaW5TU0wgKHNwZWNpZmljYWxseQorICAgU0NoYW5uZWwgZnJvbSBXaW5kb3dzIFNTUEkpLCB0aGUgbmF0aXZlIFNTTCBsaWJyYXJ5IGluIFdpbmRvd3MuIEhvd2V2ZXIsCisgICBXaW5TU0wgaW4gV2luZG93cyA8PSBYUCBpcyB1bmFibGUgdG8gY29ubmVjdCB0byBzZXJ2ZXJzIHRoYXQgbm8gbG9uZ2VyCisgICBzdXBwb3J0IHRoZSBsZWdhY3kgaGFuZHNoYWtlcyBhbmQgYWxnb3JpdGhtcyB1c2VkIGJ5IHRob3NlIHZlcnNpb25zLiBJZgorICAgeW91IHdpbGwgYmUgdXNpbmcgY3VybCBpbiBvbmUgb2YgdGhvc2UgZWFybGllciB2ZXJzaW9ucyBvZiBXaW5kb3dzIHlvdQorICAgc2hvdWxkIGNob29zZSBhbm90aGVyIFNTTCBiYWNrZW5kIHN1Y2ggYXMgT3BlblNTTC4KKwogVE9ETwogPT09PQogCkBAIC0xMTgsOCArMTY4LDggQEAKIAogICAgKiBTdXBwb3J0IHpsaWIKICAgICogVXNlIG9mIHN0YXRpYyBydW50aW1lIGxpYnJhcmllcwotICAgKiBHZW5lcmF0ZSAqLnZjeHByb2ouZmlsdGVycyBmaWxlcyBmb3IgVkMxMCwgVkMxMSBhbmQgVkMxMgogICAgKiBBZGQgdGhlIFRlc3QgU3VpdGUgY29tcG9uZW50cwogICAgKiBTdXBwb3J0IGZvciBvdGhlciBkZXZlbG9wbWVudCBJREVzCisgICAqIEFkZCBQQVRIIGVudmlyb25tZW50IHZhcmlhYmxlcyBmb3IgdGhpcmQtcGFydHkgRExMcwogCiAgICBBbnkgYWRkaXRpb25hbCBoZWxwIHdvdWxkIGJlIGFwcHJlY2lhdGVkIDstKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Byb2plY3RzL1dpbmRvd3MvLmdpdGlnbm9yZSBiL3Byb2plY3RzL1dpbmRvd3MvLmdpdGlnbm9yZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NjJmOGE4Ci0tLSAvZGV2L251bGwKKysrIGIvcHJvamVjdHMvV2luZG93cy8uZ2l0aWdub3JlCkBAIC0wLDAgKzEsNiBAQAorVkMqL3NyYy8qY3VybC52Y3Byb2ouZGlzdAorVkMqL2xpYi8qY3VybC52Y3Byb2ouZGlzdAorVkMqL3NyYy8qY3VybC52Y3hwcm9qLmRpc3QKK1ZDKi9saWIvKmN1cmwudmN4cHJvai5kaXN0CitWQzYvbGliL2xpYmN1cmwuZHNwLmRpc3QKK1ZDNi9zcmMvY3VybC5kc3AuZGlzdApkaWZmIC0tZ2l0IGEvcHJvamVjdHMvV2luZG93cy9WQzEwL2N1cmwtYWxsLnNsbiBiL3Byb2plY3RzL1dpbmRvd3MvVkMxMC9jdXJsLWFsbC5zbG4KaW5kZXggNDUwMTI3Mi4uN2JkMTMxYyAxMDA2NDQKLS0tIGEvcHJvamVjdHMvV2luZG93cy9WQzEwL2N1cmwtYWxsLnNsbgorKysgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDMTAvY3VybC1hbGwuc2xuCkBAIC0xLDYgKzEsNiBAQAogTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gU29sdXRpb24gRmlsZSwgRm9ybWF0IFZlcnNpb24gMTEuMDAKICMgVmlzdWFsIFN0dWRpbyAyMDEwCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImN1cmxzcmMiLCAic3JjXGN1cmxzcmMudmN4cHJvaiIsICJ7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfSIKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiY3VybCIsICJzcmNcY3VybC52Y3hwcm9qIiwgIns1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9IgogCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0gPSB7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfQogCUVuZFByb2plY3RTZWN0aW9uCkBAIC0xNyw2ICsxNyw4IEBACiAJCURMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAogCQlETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgogCQlETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NCA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CisJCURMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0ID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0CiAJCURMTCBEZWJ1Z3xXaW4zMiA9IERMTCBEZWJ1Z3xXaW4zMgogCQlETEwgRGVidWd8eDY0ID0gRExMIERlYnVnfHg2NAogCQlETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIgPSBETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKQEAgLTI3LDYgKzI5LDggQEAKIAkJRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAogCQlETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKIAkJRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NCA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKKwkJRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMiA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NAogCQlETEwgUmVsZWFzZXxXaW4zMiA9IERMTCBSZWxlYXNlfFdpbjMyCiAJCURMTCBSZWxlYXNlfHg2NCA9IERMTCBSZWxlYXNlfHg2NAogCQlMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyID0gTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgpAQCAtNDEsNiArNDUsOCBAQAogCQlMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0CiAJCUxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzIKIAkJTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0ID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0CisJCUxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0ID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0CiAJCUxJQiBEZWJ1Z3xXaW4zMiA9IExJQiBEZWJ1Z3xXaW4zMgogCQlMSUIgRGVidWd8eDY0ID0gTElCIERlYnVnfHg2NAogCQlMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIgPSBMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKQEAgLTU1LDYgKzYxLDggQEAKIAkJTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQKIAkJTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMiA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzIKIAkJTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NAorCQlMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMgorCQlMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NCA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0CiAJCUxJQiBSZWxlYXNlfFdpbjMyID0gTElCIFJlbGVhc2V8V2luMzIKIAkJTElCIFJlbGVhc2V8eDY0ID0gTElCIFJlbGVhc2V8eDY0CiAJRW5kR2xvYmFsU2VjdGlvbgpAQCAtNzUsNiArODMsMTAgQEAKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMi5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NC5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NAogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NC5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NC5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0LkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBEZWJ1Z3xXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWd8V2luMzIuQnVpbGQuMCA9IERMTCBEZWJ1Z3xXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERMTCBEZWJ1Z3x4NjQKQEAgLTk1LDYgKzEwNywxMCBAQAogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NC5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMi5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NC5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NC5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2V8V2luMzIKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IERMTCBSZWxlYXNlfFdpbjMyCiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZXx4NjQKQEAgLTEyMyw2ICsxMzksMTAgQEAKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyCiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0LkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0LkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBEZWJ1Z3xXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWd8V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1Z3xXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWd8eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1Z3x4NjQKQEAgLTE1MSw2ICsxNzEsMTAgQEAKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMi5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NAogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NC5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0CiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlfFdpbjMyCiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZXxXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2V8eDY0CkBAIC0xNzEsNiArMTk1LDEwIEBACiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyLkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NC5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0CiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBETEwgRGVidWd8V2luMzIKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnfFdpbjMyLkJ1aWxkLjAgPSBETEwgRGVidWd8V2luMzIKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnfHg2NC5BY3RpdmVDZmcgPSBETEwgRGVidWd8eDY0CkBAIC0xOTEsNiArMjE5LDEwIEBACiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMi5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NAogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyLkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0LkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0LkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NAogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZXxXaW4zMgogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gRExMIFJlbGVhc2V8V2luMzIKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlfHg2NApAQCAtMjE5LDYgKzI1MSwxMCBAQAogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzIKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NAogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NAogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gTElCIERlYnVnfFdpbjMyCiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1Z3xXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnfFdpbjMyCiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gTElCIERlYnVnfHg2NApAQCAtMjQ3LDYgKzI4MywxMCBAQAogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyCiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0LkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0CiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0LkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMi5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NC5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2V8V2luMzIKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IExJQiBSZWxlYXNlfFdpbjMyCiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZXx4NjQKZGlmZiAtLWdpdCBhL3Byb2plY3RzL1dpbmRvd3MvVkMxMC9saWIvLmdpdGlnbm9yZSBiL3Byb2plY3RzL1dpbmRvd3MvVkMxMC9saWIvLmdpdGlnbm9yZQppbmRleCBkMmQ3YjdmLi42MDIwOGQ3IDEwMDY0NAotLS0gYS9wcm9qZWN0cy9XaW5kb3dzL1ZDMTAvbGliLy5naXRpZ25vcmUKKysrIGIvcHJvamVjdHMvV2luZG93cy9WQzEwL2xpYi8uZ2l0aWdub3JlCkBAIC0xLDYgKzEsNiBAQAotLyoudmN4cHJvagotLyouZmlsdGVycwotLyoudXNlcgogLyoubmNiCisvKi5vcGVuc2RmCiAvKi5zZGYKIC8qLnN1bworLyoudXNlcgorLyoudmN4cHJvagpkaWZmIC0tZ2l0IGEvcHJvamVjdHMvV2luZG93cy9WQzEwL2xpYi9saWJjdXJsLnNsbiBiL3Byb2plY3RzL1dpbmRvd3MvVkMxMC9saWIvbGliY3VybC5zbG4KaW5kZXggYWZhNTQ3ZS4uMTU0NjFlZiAxMDA2NDQKLS0tIGEvcHJvamVjdHMvV2luZG93cy9WQzEwL2xpYi9saWJjdXJsLnNsbgorKysgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDMTAvbGliL2xpYmN1cmwuc2xuCkBAIC0xMiw2ICsxMiw4IEBACiAJCURMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAogCQlETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgogCQlETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NCA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CisJCURMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0ID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0CiAJCURMTCBEZWJ1Z3xXaW4zMiA9IERMTCBEZWJ1Z3xXaW4zMgogCQlETEwgRGVidWd8eDY0ID0gRExMIERlYnVnfHg2NAogCQlETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIgPSBETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKQEAgLTIyLDYgKzI0LDggQEAKIAkJRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAogCQlETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKIAkJRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NCA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKKwkJRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMiA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NAogCQlETEwgUmVsZWFzZXxXaW4zMiA9IERMTCBSZWxlYXNlfFdpbjMyCiAJCURMTCBSZWxlYXNlfHg2NCA9IERMTCBSZWxlYXNlfHg2NAogCQlMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyID0gTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgpAQCAtMzYsNiArNDAsOCBAQAogCQlMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0CiAJCUxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzIKIAkJTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0ID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0CisJCUxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0ID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0CiAJCUxJQiBEZWJ1Z3xXaW4zMiA9IExJQiBEZWJ1Z3xXaW4zMgogCQlMSUIgRGVidWd8eDY0ID0gTElCIERlYnVnfHg2NAogCQlMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIgPSBMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKQEAgLTUwLDYgKzU2LDggQEAKIAkJTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQKIAkJTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMiA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzIKIAkJTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NAorCQlMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMgorCQlMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NCA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0CiAJCUxJQiBSZWxlYXNlfFdpbjMyID0gTElCIFJlbGVhc2V8V2luMzIKIAkJTElCIFJlbGVhc2V8eDY0ID0gTElCIFJlbGVhc2V8eDY0CiAJRW5kR2xvYmFsU2VjdGlvbgpAQCAtNzAsNiArNzgsMTAgQEAKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMi5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NC5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NAogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NC5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NC5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0LkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBEZWJ1Z3xXaW4zMgogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWd8V2luMzIuQnVpbGQuMCA9IERMTCBEZWJ1Z3xXaW4zMgogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERMTCBEZWJ1Z3x4NjQKQEAgLTkwLDYgKzEwMiwxMCBAQAogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NC5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMi5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NC5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NC5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2V8V2luMzIKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IERMTCBSZWxlYXNlfFdpbjMyCiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZXx4NjQKQEAgLTExOCw2ICsxMzQsMTAgQEAKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyCiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0LkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0LkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBEZWJ1Z3xXaW4zMgogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWd8V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1Z3xXaW4zMgogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWd8eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1Z3x4NjQKQEAgLTE0Niw2ICsxNjYsMTAgQEAKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMi5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMgogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NAogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NC5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0CiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlfFdpbjMyCiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZXxXaW4zMgogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2V8eDY0CmRpZmYgLS1naXQgYS9wcm9qZWN0cy9XaW5kb3dzL1ZDMTAvbGliL2xpYmN1cmwudG1wbCBiL3Byb2plY3RzL1dpbmRvd3MvVkMxMC9saWIvbGliY3VybC50bXBsCmluZGV4IDdmYmRhODMuLmM4M2FhNjYgMTAwNjQ0Ci0tLSBhL3Byb2plY3RzL1dpbmRvd3MvVkMxMC9saWIvbGliY3VybC50bXBsCisrKyBiL3Byb2plY3RzL1dpbmRvd3MvVkMxMC9saWIvbGliY3VybC50bXBsCkBAIC0xLDYgKzEsMTQgQEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+CiA8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KICAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RExMIERlYnVnIC0gRExMIHdvbGZTU0w8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5ETEwgRGVidWcgLSBETEwgd29sZlNTTDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CiAgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIiPgogICAgICAgPENvbmZpZ3VyYXRpb24+RExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMjwvQ29uZmlndXJhdGlvbj4KICAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CkBAIC00MSw2ICs0OSwxNCBAQAogICAgICAgPENvbmZpZ3VyYXRpb24+RExMIERlYnVnPC9Db25maWd1cmF0aW9uPgogICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CiAgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5ETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5ETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KICAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyIj4KICAgICAgIDxDb25maWd1cmF0aW9uPkRMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMjwvQ29uZmlndXJhdGlvbj4KICAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CkBAIC0xMTMsNiArMTI5LDE0IEBACiAgICAgICA8Q29uZmlndXJhdGlvbj5MSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJPC9Db25maWd1cmF0aW9uPgogICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CiAgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+TElCIERlYnVnIC0gTElCIHdvbGZTU0w8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5MSUIgRGVidWcgLSBMSUIgd29sZlNTTDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CiAgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzIiPgogICAgICAgPENvbmZpZ3VyYXRpb24+TElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMjwvQ29uZmlndXJhdGlvbj4KICAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CkBAIC0xNjksNiArMTkzLDE0IEBACiAgICAgICA8Q29uZmlndXJhdGlvbj5MSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEk8L0NvbmZpZ3VyYXRpb24+CiAgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KICAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0w8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0w8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgogICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzIiPgogICAgICAgPENvbmZpZ3VyYXRpb24+TElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyPC9Db25maWd1cmF0aW9uPgogICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KQEAgLTMwNCwyMSArMzM2LDQxIEBACiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgpAQCAtNDI0LDIxICs0NzYsNDEgQEAKICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgogICA8L0ltcG9ydEdyb3VwPgpAQCAtNTA1LDE1ICs1NzcsMjcgQEAKICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgpAQCAtNTc3LDM4ICs2NjEsNzAgQEAKICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KICAgPFByb3BlcnR5R3JvdXA+CiAgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgogICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8V2luMzInIj4kKE91dERpcilsaWJcPC9JbnREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyJyI+JChPdXREaXIpbGliXDwvSW50RGlyPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CiAgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3x4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfHg2NCciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0JyI+JChPdXREaXIpbGliXDwvSW50RGlyPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KICAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfFdpbjMyJyI+JChPdXREaXIpbGliXDwvSW50RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyJyI+JChPdXREaXIpbGliXDwvSW50RGlyPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgogICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXx4NjQnIj4kKE91dERpcilsaWJcPC9JbnREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0JyI+JChPdXREaXIpbGliXDwvSW50RGlyPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CiAgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3xXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3xXaW4zMiciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzInIj4kKE91dERpcilsaWJcPC9JbnREaXI+CiAgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3x4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfHg2NCciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0JyI+JChPdXREaXIpbGliXDwvSW50RGlyPgogICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8V2luMzInIj4kKE91dERpcilsaWJcPC9JbnREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzInIj4kKE91dERpcilsaWJcPC9JbnREaXI+CiAgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfHg2NCciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQnIj4kKE91dERpcilsaWJcPC9JbnREaXI+CiAgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgpAQCAtNzA2LDcgKzgyMiw5IEBACiAgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQnIj4kKE91dERpcilsaWJcPC9JbnREaXI+CiAgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KICAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3x4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CiAgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KICAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KICAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CkBAIC03MTYsNyArODM0LDkgQEAKICAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgogICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgogICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CiAgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgogICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CiAgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTHx4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CiAgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgpAQCAtNzQ2LDcgKzg2Niw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTc2NCw2ICs4ODQsNDAgQEAKICAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzInIj4KKyAgICA8TWlkbD4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1rVHlwTGliQ29tcGF0aWJsZT50cnVlPC9Na1R5cExpYkNvbXBhdGlibGU+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+V2luMzI8L1RhcmdldEVudmlyb25tZW50PgorICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKE91dERpcikkKFByb2plY3ROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICAgIDxIZWFkZXJGaWxlTmFtZT4KKyAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjsuLlwuLlwuLlwuLlwuLlx3b2xmc3NsOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHO0JVSUxESU5HX0xJQkNVUkw7REVCVUdCVUlMRDtVU0VfQ1lBU1NMO0hBVkVfQ1lBU1NMX09QVElPTlNfSDtIQVZFX0NZQVNTTF9FUlJPUl9TU0xfSDtXT0xGU1NMX0RMTDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO3dvbGZzc2wubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cLi5cd29sZnNzbFxidWlsZFxXaW4zMlxWQzEwXERMTCBEZWJ1ZzslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPE1hbmlmZXN0RmlsZT4kKEludERpcikkKFRhcmdldEZpbGVOYW1lKS5pbnRlcm1lZGlhdGUubWFuaWZlc3Q8L01hbmlmZXN0RmlsZT4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgICA8SW1wb3J0TGlicmFyeT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLmxpYjwvSW1wb3J0TGlicmFyeT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfHg2NCciPgogICAgIDxNaWRsPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC03ODAsNyArOTM0LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtNzk3LDYgKzk1MSwzOSBAQAogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1rVHlwTGliQ29tcGF0aWJsZT50cnVlPC9Na1R5cExpYkNvbXBhdGlibGU+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChPdXREaXIpJChQcm9qZWN0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CisgICAgICA8SGVhZGVyRmlsZU5hbWU+CisgICAgICA8L0hlYWRlckZpbGVOYW1lPgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7Li5cLi5cLi5cLi5cLi5cd29sZnNzbDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRztCVUlMRElOR19MSUJDVVJMO0RFQlVHQlVJTEQ7VVNFX0NZQVNTTDtIQVZFX0NZQVNTTF9PUFRJT05TX0g7SEFWRV9DWUFTU0xfRVJST1JfU1NMX0g7V09MRlNTTF9ETEw7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjt3b2xmc3NsLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXC4uXHdvbGZzc2xcYnVpbGRcV2luNjRcVkMxMFxETEwgRGVidWc7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgICA8SW1wb3J0TGlicmFyeT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLmxpYjwvSW1wb3J0TGlicmFyeT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8V2luMzInIj4KICAgICA8TWlkbD4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtODE0LDcgKzEwMDEsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTgyOSw2ICsxMDE2LDQwIEBACiAgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzInIj4KKyAgICA8TWlkbD4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1rVHlwTGliQ29tcGF0aWJsZT50cnVlPC9Na1R5cExpYkNvbXBhdGlibGU+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+V2luMzI8L1RhcmdldEVudmlyb25tZW50PgorICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKE91dERpcikkKFByb2plY3ROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICAgIDxIZWFkZXJGaWxlTmFtZT4KKyAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOy4uXC4uXC4uXC4uXC4uXHdvbGZzc2w7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7QlVJTERJTkdfTElCQ1VSTDtVU0VfQ1lBU1NMO0hBVkVfQ1lBU1NMX09QVElPTlNfSDtIQVZFX0NZQVNTTF9FUlJPUl9TU0xfSDtXT0xGU1NMX0RMTDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO3dvbGZzc2wubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cLi5cd29sZnNzbFxidWlsZFxXaW4zMlxWQzEwXERMTCBSZWxlYXNlOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8TWFuaWZlc3RGaWxlPiQoSW50RGlyKSQoVGFyZ2V0RmlsZU5hbWUpLmludGVybWVkaWF0ZS5tYW5pZmVzdDwvTWFuaWZlc3RGaWxlPgorICAgICAgPEltcG9ydExpYnJhcnk+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5saWI8L0ltcG9ydExpYnJhcnk+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXx4NjQnIj4KICAgICA8TWlkbD4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtODQ2LDcgKzEwNjcsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTg2MCw2ICsxMDgxLDM5IEBACiAgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNa1R5cExpYkNvbXBhdGlibGU+dHJ1ZTwvTWtUeXBMaWJDb21wYXRpYmxlPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgorICAgICAgPEhlYWRlckZpbGVOYW1lPgorICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7Li5cLi5cLi5cLi5cLi5cd29sZnNzbDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRztCVUlMRElOR19MSUJDVVJMO1VTRV9DWUFTU0w7SEFWRV9DWUFTU0xfT1BUSU9OU19IO0hBVkVfQ1lBU1NMX0VSUk9SX1NTTF9IO1dPTEZTU0xfRExMOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7d29sZnNzbC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlwuLlx3b2xmc3NsXGJ1aWxkXFdpbjY0XFZDMTBcRExMIFJlbGVhc2U7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxJbXBvcnRMaWJyYXJ5PiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkubGliPC9JbXBvcnRMaWJyYXJ5PgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfFdpbjMyJyI+CiAgICAgPENsQ29tcGlsZT4KICAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KQEAgLTg2OCw3ICsxMTIyLDI3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaWI+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpYj4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOy4uXC4uXC4uXC4uXC4uXHdvbGZzc2w7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7QlVJTERJTkdfTElCQ1VSTDtERUJVR0JVSUxEO0NVUkxfU1RBVElDTElCO1VTRV9DWUFTU0w7SEFWRV9DWUFTU0xfT1BUSU9OU19IO0hBVkVfQ1lBU1NMX0VSUk9SX1NTTF9IOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC04OTEsNyArMTE2NSwzMCBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGliPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaWI+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7Li5cLi5cLi5cLi5cLi5cd29sZnNzbDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRztCVUlMRElOR19MSUJDVVJMO0RFQlVHQlVJTEQ7Q1VSTF9TVEFUSUNMSUI7VVNFX0NZQVNTTDtIQVZFX0NZQVNTTF9PUFRJT05TX0g7SEFWRV9DWUFTU0xfRVJST1JfU1NMX0g7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTkxMiw3ICsxMjA5LDI3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaWI+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpYj4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjsuLlwuLlwuLlwuLlwuLlx3b2xmc3NsOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHO0JVSUxESU5HX0xJQkNVUkw7Q1VSTF9TVEFUSUNMSUI7VVNFX0NZQVNTTDtIQVZFX0NZQVNTTF9PUFRJT05TX0g7SEFWRV9DWUFTU0xfRVJST1JfU1NMX0g7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtOTM1LDcgKzEyNTIsMzAgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpYj4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGliPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjsuLlwuLlwuLlwuLlwuLlx3b2xmc3NsOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHO0JVSUxESU5HX0xJQkNVUkw7Q1VSTF9TVEFUSUNMSUI7VVNFX0NZQVNTTDtIQVZFX0NZQVNTTF9PUFRJT05TX0g7SEFWRV9DWUFTU0xfRVJST1JfU1NMX0g7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtOTYyLDcgKzEzMDIsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC05OTYsNyArMTMzNiw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTEwMzAsNyArMTM3MCw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTA2Miw3ICsxNDAyLDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xMDkyLDcgKzE0MzIsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xMTI2LDcgKzE0NjYsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xMTYwLDcgKzE1MDAsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xMTkzLDcgKzE1MzMsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xMjI3LDcgKzE1NjcsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTEyNTksNyArMTU5OSw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTI5MSw3ICsxNjMxLDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xMzIyLDcgKzE2NjIsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTEzNTIsNyArMTY5Miw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTEzODYsNyArMTcyNiw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTE0MjAsNyArMTc2MCw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTQ1Miw3ICsxNzkyLDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xNDc0LDcgKzE4MTQsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xNDk3LDcgKzE4MzcsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xNTE3LDcgKzE4NTcsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xNTQwLDcgKzE4ODAsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xNTYwLDcgKzE5MDAsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xNTgwLDcgKzE5MjAsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xNjAzLDcgKzE5NDMsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xNjI2LDcgKzE5NjYsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xNjQ2LDcgKzE5ODYsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xNjY5LDcgKzIwMDksNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xNjg5LDcgKzIwMjksNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xNzEyLDcgKzIwNTIsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xNzMzLDcgKzIwNzMsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTE3NTYsNyArMjA5Niw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTc3Niw3ICsyMTE2LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xNzk5LDcgKzIxMzksNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTE4MTksNyArMjE1OSw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTgzOSw3ICsyMTc5LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xODYyLDcgKzIyMDIsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTE4ODUsNyArMjIyNSw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTkwNSw3ICsyMjQ1LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xOTI4LDcgKzIyNjgsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTE5NDgsNyArMjI4OCw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTk3MSw3ICsyMzExLDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xOTg0LDEwICsyMzI0LDEyIEBACiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1Hcm91cD4KIENVUkxfTElCX0NfRklMRVMKK0NVUkxfTElCX1ZBVVRIX0NfRklMRVMKIENVUkxfTElCX1ZUTFNfQ19GSUxFUwogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KIENVUkxfTElCX0hfRklMRVMKK0NVUkxfTElCX1ZBVVRIX0hfRklMRVMKIENVUkxfTElCX1ZUTFNfSF9GSUxFUwogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KZGlmZiAtLWdpdCBhL3Byb2plY3RzL1dpbmRvd3MvVkMxMC9saWIvbGliY3VybC52Y3hwcm9qLmZpbHRlcnMgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDMTAvbGliL2xpYmN1cmwudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkNjM0MWQKLS0tIC9kZXYvbnVsbAorKysgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDMTAvbGliL2xpYmN1cmwudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMTcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezRGQzczN0YxLUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5jcHA7YztjYztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1RkJFNTJFQkZCfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmg7aGg7aHBwO2h4eDtobTtpbmw7aW5jO3hzZDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlJlc291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns2N0RBNkFCNi1GODAwLTRjMDgtOEI3QS04M0JCMTIxQUFEMDF9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+cmM7aWNvO2N1cjtibXA7ZGxnO3JjMjtyY3Q7YmluO3JncztnaWY7anBnO2pwZWc7anBlO3Jlc3g7dGlmZjt0aWY7cG5nO3dhdjttZmNyaWJib24tbXM8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Byb2plY3RzL1dpbmRvd3MvVkMxMC9zcmMvLmdpdGlnbm9yZSBiL3Byb2plY3RzL1dpbmRvd3MvVkMxMC9zcmMvLmdpdGlnbm9yZQppbmRleCBkMmQ3YjdmLi42MDIwOGQ3IDEwMDY0NAotLS0gYS9wcm9qZWN0cy9XaW5kb3dzL1ZDMTAvc3JjLy5naXRpZ25vcmUKKysrIGIvcHJvamVjdHMvV2luZG93cy9WQzEwL3NyYy8uZ2l0aWdub3JlCkBAIC0xLDYgKzEsNiBAQAotLyoudmN4cHJvagotLyouZmlsdGVycwotLyoudXNlcgogLyoubmNiCisvKi5vcGVuc2RmCiAvKi5zZGYKIC8qLnN1bworLyoudXNlcgorLyoudmN4cHJvagpkaWZmIC0tZ2l0IGEvcHJvamVjdHMvV2luZG93cy9WQzEwL3NyYy9jdXJsc3JjLnNsbiBiL3Byb2plY3RzL1dpbmRvd3MvVkMxMC9zcmMvY3VybC5zbG4Kc2ltaWxhcml0eSBpbmRleCA4NiUKY29weSBmcm9tIHByb2plY3RzL1dpbmRvd3MvVkMxMC9zcmMvY3VybHNyYy5zbG4KY29weSB0byBwcm9qZWN0cy9XaW5kb3dzL1ZDMTAvc3JjL2N1cmwuc2xuCmluZGV4IDEzZmMxZDMuLjEzMWYyN2IgMTAwNjQ0Ci0tLSBhL3Byb2plY3RzL1dpbmRvd3MvVkMxMC9zcmMvY3VybHNyYy5zbG4KKysrIGIvcHJvamVjdHMvV2luZG93cy9WQzEwL3NyYy9jdXJsLnNsbgpAQCAtMSw2ICsxLDYgQEAKIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIFNvbHV0aW9uIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDExLjAwCiAjIFZpc3VhbCBTdHVkaW8gMjAxMAotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJjdXJsc3JjIiwgImN1cmxzcmMudmN4cHJvaiIsICJ7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfSIKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiY3VybCIsICJjdXJsLnZjeHByb2oiLCAiezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0iCiBFbmRQcm9qZWN0CiBHbG9iYWwKIAlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uQ29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwcmVTb2x1dGlvbgpAQCAtMTIsNiArMTIsOCBAQAogCQlETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQKIAkJRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKIAkJRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NAorCQlETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMiA9IERMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyCisJCURMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NCA9IERMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NAogCQlETEwgRGVidWd8V2luMzIgPSBETEwgRGVidWd8V2luMzIKIAkJRExMIERlYnVnfHg2NCA9IERMTCBEZWJ1Z3x4NjQKIAkJRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyID0gRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCkBAIC0yMiw2ICsyNCw4IEBACiAJCURMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0ID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQKIAkJRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCiAJCURMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CisJCURMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyCisJCURMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0ID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQKIAkJRExMIFJlbGVhc2V8V2luMzIgPSBETEwgUmVsZWFzZXxXaW4zMgogCQlETEwgUmVsZWFzZXx4NjQgPSBETEwgUmVsZWFzZXx4NjQKIAkJTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiA9IExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKQEAgLTM2LDYgKzQwLDggQEAKIAkJTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NAogCQlMSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMiA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyCiAJCUxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NCA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NAorCQlMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMiA9IExJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyCisJCUxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NCA9IExJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NAogCQlMSUIgRGVidWd8V2luMzIgPSBMSUIgRGVidWd8V2luMzIKIAkJTElCIERlYnVnfHg2NCA9IExJQiBEZWJ1Z3x4NjQKIAkJTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyID0gTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCkBAIC01MCw2ICs1Niw4IEBACiAJCUxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0CiAJCUxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzIgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyCiAJCUxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0ID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQKKwkJTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMiA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQgPSBMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NAogCQlMSUIgUmVsZWFzZXxXaW4zMiA9IExJQiBSZWxlYXNlfFdpbjMyCiAJCUxJQiBSZWxlYXNlfHg2NCA9IExJQiBSZWxlYXNlfHg2NAogCUVuZEdsb2JhbFNlY3Rpb24KQEAgLTcwLDYgKzc4LDEwIEBACiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyLkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NC5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0CiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBETEwgRGVidWd8V2luMzIKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnfFdpbjMyLkJ1aWxkLjAgPSBETEwgRGVidWd8V2luMzIKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnfHg2NC5BY3RpdmVDZmcgPSBETEwgRGVidWd8eDY0CkBAIC05MCw2ICsxMDIsMTAgQEAKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyLkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NC5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMi5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0CiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlfFdpbjMyCiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBETEwgUmVsZWFzZXxXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2V8eDY0CkBAIC0xMTgsNiArMTM0LDEwIEBACiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyLkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0CiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NC5CdWlsZC4wID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyLkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NC5CdWlsZC4wID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0CiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBMSUIgRGVidWd8V2luMzIKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnfFdpbjMyLkJ1aWxkLjAgPSBMSUIgRGVidWd8V2luMzIKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWd8eDY0CkBAIC0xNDYsNiArMTY2LDEwIEBACiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzIuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzIKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0LkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0LkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NAogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZXxXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gTElCIFJlbGVhc2V8V2luMzIKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlfHg2NApkaWZmIC0tZ2l0IGEvcHJvamVjdHMvV2luZG93cy9WQzEwL3NyYy9jdXJsc3JjLnRtcGwgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDMTAvc3JjL2N1cmwudG1wbApzaW1pbGFyaXR5IGluZGV4IDgyJQpyZW5hbWUgZnJvbSBwcm9qZWN0cy9XaW5kb3dzL1ZDMTAvc3JjL2N1cmxzcmMudG1wbApyZW5hbWUgdG8gcHJvamVjdHMvV2luZG93cy9WQzEwL3NyYy9jdXJsLnRtcGwKaW5kZXggZmUzYTkzNC4uNjJlNzEwMCAxMDA2NDQKLS0tIGEvcHJvamVjdHMvV2luZG93cy9WQzEwL3NyYy9jdXJsc3JjLnRtcGwKKysrIGIvcHJvamVjdHMvV2luZG93cy9WQzEwL3NyYy9jdXJsLnRtcGwKQEAgLTEsNiArMSwxNCBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KIDxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgogICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5ETEwgRGVidWcgLSBETEwgd29sZlNTTDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KICAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiI+CiAgICAgICA8Q29uZmlndXJhdGlvbj5ETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyPC9Db25maWd1cmF0aW9uPgogICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KQEAgLTQxLDYgKzQ5LDE0IEBACiAgICAgICA8Q29uZmlndXJhdGlvbj5ETEwgRGVidWc8L0NvbmZpZ3VyYXRpb24+CiAgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KICAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0w8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0w8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgogICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIiPgogICAgICAgPENvbmZpZ3VyYXRpb24+RExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyPC9Db25maWd1cmF0aW9uPgogICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KQEAgLTExMyw2ICsxMjksMTQgQEAKICAgICAgIDxDb25maWd1cmF0aW9uPkxJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEk8L0NvbmZpZ3VyYXRpb24+CiAgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KICAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5MSUIgRGVidWcgLSBMSUIgd29sZlNTTDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KICAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMiI+CiAgICAgICA8Q29uZmlndXJhdGlvbj5MSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyPC9Db25maWd1cmF0aW9uPgogICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KQEAgLTE2OSw2ICsxOTMsMTQgQEAKICAgICAgIDxDb25maWd1cmF0aW9uPkxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSTwvQ29uZmlndXJhdGlvbj4KICAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgogICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+TElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+TElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CiAgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMiI+CiAgICAgICA8Q29uZmlndXJhdGlvbj5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDI8L0NvbmZpZ3VyYXRpb24+CiAgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgpAQCAtMTk2LDcgKzIyOCw3IEBACiAgIDwvSXRlbUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CiAgICAgPFByb2plY3RHdWlkPns1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9PC9Qcm9qZWN0R3VpZD4KLSAgICA8Um9vdE5hbWVzcGFjZT5jdXJsc3JjPC9Sb290TmFtZXNwYWNlPgorICAgIDxSb290TmFtZXNwYWNlPmN1cmw8L1Jvb3ROYW1lc3BhY2U+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CkBAIC0zMDQsMjEgKzMzNiw0MSBAQAogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KQEAgLTQyNCwyMSArNDc2LDQxIEBACiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgogICA8L0ltcG9ydEdyb3VwPgpAQCAtNTA1LDE1ICs1NzcsMjcgQEAKICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgpAQCAtNTc3LDQyICs2NjEsNzggQEAKICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KICAgPFByb3BlcnR5R3JvdXA+CiAgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgogICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8V2luMzInIj4kKE91dERpcilzcmNcPC9JbnREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzInIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CiAgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfHg2NCciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQnIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KICAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfFdpbjMyJyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyJyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgogICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXx4NjQnIj4kKE91dERpcilzcmNcPC9JbnREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0JyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CiAgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3xXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3xXaW4zMiciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzInIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3xXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KICAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8eDY0JyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQnIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3x4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgogICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8V2luMzInIj4kKE91dERpcilzcmNcPC9JbnREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyJyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CiAgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3x4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfHg2NCciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0JyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KICAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyJyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CkBAIC03MzMsNTQgKzg1Myw2MiBAQAogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3xXaW4zMiciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfHg2NCciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzInIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NCciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NCciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8V2luMzInIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3x4NjQnIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyJyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTHx4NjQnIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0JyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzInIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NCciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMiciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQnIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyJyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfFdpbjMyJyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyJyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMiciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyJyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfFdpbjMyJyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQnIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NCciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXx4NjQnIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NCciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQnIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQnIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8eDY0JyI+Y3VybDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3xXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3x4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzInIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8V2luMzInIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzInIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMiciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzInIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzInIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfFdpbjMyJyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyJyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0JyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NCciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NCciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfHg2NCciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQnIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0JyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQnIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfHg2NCciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQnIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfFdpbjMyJyI+CiAgICAgPE1pZGw+CkBAIC03OTYsNyArOTI0LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC04MTEsNiArOTM5LDM3IEBACiAgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzInIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICAgIDxIZWFkZXJGaWxlTmFtZT4KKyAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8eDY0JyI+CiAgICAgPE1pZGw+CiAgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KQEAgLTgyNiw3ICs5ODUsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTg0MSw2ICsxMDAwLDM4IEBACiAgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICAgIDxIZWFkZXJGaWxlTmFtZT4KKyAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8V2luMzInIj4KICAgICA8TWlkbD4KICAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KQEAgLTg1NSw3ICsxMDQ2LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC04NzAsNiArMTA2MSwzNyBAQAogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyJyI+CisgICAgPE1pZGw+CisgICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CisgICAgICA8SGVhZGVyRmlsZU5hbWU+CisgICAgICA8L0hlYWRlckZpbGVOYW1lPgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRztfQ09OU09MRTtDVVJMX1NUQVRJQ0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmwubGliO3dvbGZzc2wubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pOy4uXC4uXC4uXC4uXC4uXHdvbGZzc2xcYnVpbGRcV2luMzJcVkMxMFxMSUIgUmVsZWFzZTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXx4NjQnIj4KICAgICA8TWlkbD4KICAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgpAQCAtODg1LDcgKzExMDcsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTkwMCw2ICsxMTIyLDM4IEBACiAgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICAgIDxIZWFkZXJGaWxlTmFtZT4KKyAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHO19DT05TT0xFO0NVUkxfU1RBVElDTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybC5saWI7d29sZnNzbC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbik7Li5cLi5cLi5cLi5cLi5cd29sZnNzbFxidWlsZFxXaW42NFxWQzEwXExJQiBSZWxlYXNlOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3xXaW4zMiciPgogICAgIDxNaWRsPgogICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgpAQCAtOTEzLDcgKzExNjcsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC05MzEsNiArMTE4NSwzNyBAQAogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMiciPgorICAgIDxNaWRsPgorICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgorICAgICAgPEhlYWRlckZpbGVOYW1lPgorICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHO19DT05TT0xFO0RFQlVHQlVJTEQ7Q1VSTF9TVEFUSUNMSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsZC5saWI7d29sZnNzbC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbik7Li5cLi5cLi5cLi5cLi5cd29sZnNzbFxidWlsZFxXaW4zMlxWQzEwXExJQiBEZWJ1ZzslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8eDY0JyI+CiAgICAgPE1pZGw+CiAgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KQEAgLTk0NSw3ICsxMjMwLDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtOTYzLDYgKzEyNDgsMzggQEAKICAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICAgIDxIZWFkZXJGaWxlTmFtZT4KKyAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRztfQ09OU09MRTtERUJVR0JVSUxEO0NVUkxfU1RBVElDTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybGQubGliO3dvbGZzc2wubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pOy4uXC4uXC4uXC4uXC4uXHdvbGZzc2xcYnVpbGRcV2luNjRcVkMxMFxMSUIgRGVidWc7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfFdpbjMyJyI+CiAgICAgPE1pZGw+CiAgICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CkBAIC05NzYsNyArMTI5MywzOCBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybGQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyJyI+CisgICAgPE1pZGw+CisgICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CisgICAgICA8SGVhZGVyRmlsZU5hbWU+CisgICAgICA8L0hlYWRlckZpbGVOYW1lPgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7X0NPTlNPTEU7REVCVUdCVUlMRDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTAwOCw3ICsxMzU2LDM5IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsZC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICAgIDxIZWFkZXJGaWxlTmFtZT4KKyAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRztfQ09OU09MRTtERUJVR0JVSUxEOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xMDM5LDcgKzE0MTksNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xMDcxLDcgKzE0NTEsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xMTAyLDcgKzE0ODIsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xMTMzLDcgKzE1MTMsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xMTY1LDcgKzE1NDUsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xMTk3LDcgKzE1NzcsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xMjI5LDcgKzE2MDksNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTEyNTksNyArMTYzOSw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTI4OCw3ICsxNjY4LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xMzE3LDcgKzE2OTcsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTEzNDcsNyArMTcyNyw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTM3Nyw3ICsxNzU3LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xNDA1LDcgKzE3ODUsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xNDM3LDcgKzE4MTcsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xNDY5LDcgKzE4NDksNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTE0OTksNyArMTg3OSw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTUyNyw3ICsxOTA3LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTU1OSw3ICsxOTM5LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTU5MSw3ICsxOTcxLDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xNjIxLDcgKzIwMDEsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTE2NDksNyArMjAyOSw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTE2ODEsNyArMjA2MSw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTE3MTMsNyArMjA5Myw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTc0Myw3ICsyMTIzLDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xNzcxLDcgKzIxNTEsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xODAzLDcgKzIxODMsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xODM1LDcgKzIyMTUsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTE4NjUsNyArMjI0NSw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTg5Myw3ICsyMjczLDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTkyNSw3ICsyMzA1LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTk1Nyw3ICsyMzM3LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xOTg3LDcgKzIzNjcsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTIwMTUsNyArMjM5NSw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTIwNDYsNyArMjQyNiw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTIwNzgsNyArMjQ1OCw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTIxMTAsNyArMjQ5MCw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTIxNDIsNyArMjUyMiw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMjE3MSw3ICsyNTUxLDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0yMjAxLDcgKzI1ODEsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTIyMzEsNyArMjYxMSw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpkaWZmIC0tZ2l0IGEvcHJvamVjdHMvV2luZG93cy9WQzEwL3NyYy9jdXJsLnZjeHByb2ouZmlsdGVycyBiL3Byb2plY3RzL1dpbmRvd3MvVkMxMC9zcmMvY3VybC52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQ2MzQxZAotLS0gL2Rldi9udWxsCisrKyBiL3Byb2plY3RzL1dpbmRvd3MvVkMxMC9zcmMvY3VybC52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwxNyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmNwcDtjO2NjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214PC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns5Mzk5NTM4MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+aDtoaDtocHA7aHh4O2htO2lubDtpbmM7eHNkPC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iUmVzb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezY3REE2QUI2LUY4MDAtNGMwOC04QjdBLTgzQkIxMjFBQUQwMX08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5yYztpY287Y3VyO2JtcDtkbGc7cmMyO3JjdDtiaW47cmdzO2dpZjtqcGc7anBlZztqcGU7cmVzeDt0aWZmO3RpZjtwbmc7d2F2O21mY3JpYmJvbi1tczwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvcHJvamVjdHMvV2luZG93cy9WQzExL2N1cmwtYWxsLnNsbiBiL3Byb2plY3RzL1dpbmRvd3MvVkMxMS9jdXJsLWFsbC5zbG4KaW5kZXggYzkwODVhOS4uYmVjMGFkOCAxMDA2NDQKLS0tIGEvcHJvamVjdHMvV2luZG93cy9WQzExL2N1cmwtYWxsLnNsbgorKysgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDMTEvY3VybC1hbGwuc2xuCkBAIC0xLDYgKzEsNiBAQAogTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gU29sdXRpb24gRmlsZSwgRm9ybWF0IFZlcnNpb24gMTIuMDAKICMgVmlzdWFsIFN0dWRpbyAyMDEyCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImN1cmxzcmMiLCAic3JjXGN1cmxzcmMudmN4cHJvaiIsICJ7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfSIKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiY3VybCIsICJzcmNcY3VybC52Y3hwcm9qIiwgIns1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9IgogCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0gPSB7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfQogCUVuZFByb2plY3RTZWN0aW9uCkBAIC0xNyw2ICsxNyw4IEBACiAJCURMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAogCQlETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgogCQlETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NCA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CisJCURMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0ID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0CiAJCURMTCBEZWJ1Z3xXaW4zMiA9IERMTCBEZWJ1Z3xXaW4zMgogCQlETEwgRGVidWd8eDY0ID0gRExMIERlYnVnfHg2NAogCQlETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIgPSBETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKQEAgLTI3LDYgKzI5LDggQEAKIAkJRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAogCQlETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKIAkJRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NCA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKKwkJRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMiA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NAogCQlETEwgUmVsZWFzZXxXaW4zMiA9IERMTCBSZWxlYXNlfFdpbjMyCiAJCURMTCBSZWxlYXNlfHg2NCA9IERMTCBSZWxlYXNlfHg2NAogCQlMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyID0gTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgpAQCAtNDEsNiArNDUsOCBAQAogCQlMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0CiAJCUxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzIKIAkJTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0ID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0CisJCUxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0ID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0CiAJCUxJQiBEZWJ1Z3xXaW4zMiA9IExJQiBEZWJ1Z3xXaW4zMgogCQlMSUIgRGVidWd8eDY0ID0gTElCIERlYnVnfHg2NAogCQlMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIgPSBMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKQEAgLTU1LDYgKzYxLDggQEAKIAkJTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQKIAkJTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMiA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzIKIAkJTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NAorCQlMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMgorCQlMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NCA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0CiAJCUxJQiBSZWxlYXNlfFdpbjMyID0gTElCIFJlbGVhc2V8V2luMzIKIAkJTElCIFJlbGVhc2V8eDY0ID0gTElCIFJlbGVhc2V8eDY0CiAJRW5kR2xvYmFsU2VjdGlvbgpAQCAtNzUsNiArODMsMTAgQEAKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMi5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NC5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NAogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NC5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NC5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0LkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBEZWJ1Z3xXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWd8V2luMzIuQnVpbGQuMCA9IERMTCBEZWJ1Z3xXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERMTCBEZWJ1Z3x4NjQKQEAgLTk1LDYgKzEwNywxMCBAQAogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NC5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMi5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NC5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NC5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2V8V2luMzIKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IERMTCBSZWxlYXNlfFdpbjMyCiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZXx4NjQKQEAgLTEyMyw2ICsxMzksMTAgQEAKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyCiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0LkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0LkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBEZWJ1Z3xXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWd8V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1Z3xXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWd8eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1Z3x4NjQKQEAgLTE1MSw2ICsxNzEsMTAgQEAKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMi5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NAogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NC5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0CiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlfFdpbjMyCiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZXxXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2V8eDY0CkBAIC0xNzEsNiArMTk1LDEwIEBACiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyLkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NC5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0CiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBETEwgRGVidWd8V2luMzIKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnfFdpbjMyLkJ1aWxkLjAgPSBETEwgRGVidWd8V2luMzIKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnfHg2NC5BY3RpdmVDZmcgPSBETEwgRGVidWd8eDY0CkBAIC0xOTEsNiArMjE5LDEwIEBACiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMi5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NAogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyLkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0LkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0LkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NAogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZXxXaW4zMgogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gRExMIFJlbGVhc2V8V2luMzIKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlfHg2NApAQCAtMjE5LDYgKzI1MSwxMCBAQAogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzIKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NAogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NAogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gTElCIERlYnVnfFdpbjMyCiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1Z3xXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnfFdpbjMyCiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gTElCIERlYnVnfHg2NApAQCAtMjQ3LDYgKzI4MywxMCBAQAogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyCiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0LkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0CiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0LkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMi5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NC5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2V8V2luMzIKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IExJQiBSZWxlYXNlfFdpbjMyCiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZXx4NjQKZGlmZiAtLWdpdCBhL3Byb2plY3RzL1dpbmRvd3MvVkMxMS9saWIvLmdpdGlnbm9yZSBiL3Byb2plY3RzL1dpbmRvd3MvVkMxMS9saWIvLmdpdGlnbm9yZQppbmRleCBkMmQ3YjdmLi42MDIwOGQ3IDEwMDY0NAotLS0gYS9wcm9qZWN0cy9XaW5kb3dzL1ZDMTEvbGliLy5naXRpZ25vcmUKKysrIGIvcHJvamVjdHMvV2luZG93cy9WQzExL2xpYi8uZ2l0aWdub3JlCkBAIC0xLDYgKzEsNiBAQAotLyoudmN4cHJvagotLyouZmlsdGVycwotLyoudXNlcgogLyoubmNiCisvKi5vcGVuc2RmCiAvKi5zZGYKIC8qLnN1bworLyoudXNlcgorLyoudmN4cHJvagpkaWZmIC0tZ2l0IGEvcHJvamVjdHMvV2luZG93cy9WQzExL2xpYi9saWJjdXJsLnNsbiBiL3Byb2plY3RzL1dpbmRvd3MvVkMxMS9saWIvbGliY3VybC5zbG4KaW5kZXggNjk0NGJiOS4uNzgwZGM5MSAxMDA2NDQKLS0tIGEvcHJvamVjdHMvV2luZG93cy9WQzExL2xpYi9saWJjdXJsLnNsbgorKysgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDMTEvbGliL2xpYmN1cmwuc2xuCkBAIC0xMiw2ICsxMiw4IEBACiAJCURMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAogCQlETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgogCQlETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NCA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CisJCURMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0ID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0CiAJCURMTCBEZWJ1Z3xXaW4zMiA9IERMTCBEZWJ1Z3xXaW4zMgogCQlETEwgRGVidWd8eDY0ID0gRExMIERlYnVnfHg2NAogCQlETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIgPSBETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKQEAgLTIyLDYgKzI0LDggQEAKIAkJRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAogCQlETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKIAkJRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NCA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKKwkJRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMiA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NAogCQlETEwgUmVsZWFzZXxXaW4zMiA9IERMTCBSZWxlYXNlfFdpbjMyCiAJCURMTCBSZWxlYXNlfHg2NCA9IERMTCBSZWxlYXNlfHg2NAogCQlMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyID0gTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgpAQCAtMzYsNiArNDAsOCBAQAogCQlMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0CiAJCUxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzIKIAkJTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0ID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0CisJCUxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0ID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0CiAJCUxJQiBEZWJ1Z3xXaW4zMiA9IExJQiBEZWJ1Z3xXaW4zMgogCQlMSUIgRGVidWd8eDY0ID0gTElCIERlYnVnfHg2NAogCQlMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIgPSBMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKQEAgLTUwLDYgKzU2LDggQEAKIAkJTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQKIAkJTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMiA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzIKIAkJTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NAorCQlMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMgorCQlMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NCA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0CiAJCUxJQiBSZWxlYXNlfFdpbjMyID0gTElCIFJlbGVhc2V8V2luMzIKIAkJTElCIFJlbGVhc2V8eDY0ID0gTElCIFJlbGVhc2V8eDY0CiAJRW5kR2xvYmFsU2VjdGlvbgpAQCAtNzAsNiArNzgsMTAgQEAKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMi5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NC5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NAogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NC5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NC5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0LkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBEZWJ1Z3xXaW4zMgogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWd8V2luMzIuQnVpbGQuMCA9IERMTCBEZWJ1Z3xXaW4zMgogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERMTCBEZWJ1Z3x4NjQKQEAgLTkwLDYgKzEwMiwxMCBAQAogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NC5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMi5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NC5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NC5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2V8V2luMzIKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IERMTCBSZWxlYXNlfFdpbjMyCiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZXx4NjQKQEAgLTExOCw2ICsxMzQsMTAgQEAKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyCiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0LkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0LkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBEZWJ1Z3xXaW4zMgogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWd8V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1Z3xXaW4zMgogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWd8eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1Z3x4NjQKQEAgLTE0Niw2ICsxNjYsMTAgQEAKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMi5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMgogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NAogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NC5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0CiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlfFdpbjMyCiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZXxXaW4zMgogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2V8eDY0CmRpZmYgLS1naXQgYS9wcm9qZWN0cy9XaW5kb3dzL1ZDMTEvbGliL2xpYmN1cmwudG1wbCBiL3Byb2plY3RzL1dpbmRvd3MvVkMxMS9saWIvbGliY3VybC50bXBsCmluZGV4IDgzM2MzOWYuLjk5ZWE5ODEgMTAwNjQ0Ci0tLSBhL3Byb2plY3RzL1dpbmRvd3MvVkMxMS9saWIvbGliY3VybC50bXBsCisrKyBiL3Byb2plY3RzL1dpbmRvd3MvVkMxMS9saWIvbGliY3VybC50bXBsCkBAIC0xLDYgKzEsMTQgQEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+CiA8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KICAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RExMIERlYnVnIC0gRExMIHdvbGZTU0w8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5ETEwgRGVidWcgLSBETEwgd29sZlNTTDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CiAgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIiPgogICAgICAgPENvbmZpZ3VyYXRpb24+RExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMjwvQ29uZmlndXJhdGlvbj4KICAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CkBAIC00MSw2ICs0OSwxNCBAQAogICAgICAgPENvbmZpZ3VyYXRpb24+RExMIERlYnVnPC9Db25maWd1cmF0aW9uPgogICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CiAgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5ETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5ETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KICAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyIj4KICAgICAgIDxDb25maWd1cmF0aW9uPkRMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMjwvQ29uZmlndXJhdGlvbj4KICAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CkBAIC0xMTMsNiArMTI5LDE0IEBACiAgICAgICA8Q29uZmlndXJhdGlvbj5MSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJPC9Db25maWd1cmF0aW9uPgogICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CiAgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+TElCIERlYnVnIC0gTElCIHdvbGZTU0w8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5MSUIgRGVidWcgLSBMSUIgd29sZlNTTDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CiAgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzIiPgogICAgICAgPENvbmZpZ3VyYXRpb24+TElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMjwvQ29uZmlndXJhdGlvbj4KICAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CkBAIC0xNjksNiArMTkzLDE0IEBACiAgICAgICA8Q29uZmlndXJhdGlvbj5MSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEk8L0NvbmZpZ3VyYXRpb24+CiAgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KICAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0w8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0w8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgogICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzIiPgogICAgICAgPENvbmZpZ3VyYXRpb24+TElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyPC9Db25maWd1cmF0aW9uPgogICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KQEAgLTMyNSwyNCArMzU3LDQ4IEBACiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KICAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMTA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMTA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgogICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djExMDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMTA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgogICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djExMDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMTA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KICAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMTA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djExMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KQEAgLTQ2OSwyNCArNTI1LDQ4IEBACiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KICAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMTA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTEwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CiAgICAgPFBsYXRmb3JtVG9vbHNldD52MTEwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMTA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KICAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMTA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djExMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KICAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMTA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMTA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CiAgIDwvSW1wb3J0R3JvdXA+CkBAIC01NTMsMTUgKzYzMywyNyBAQAogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgIDwvSW1wb3J0R3JvdXA+CkBAIC02MjUsMzggKzcxNyw3MCBAQAogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgogICA8UHJvcGVydHlHcm91cD4KICAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CiAgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3xXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTFcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzExXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3xXaW4zMiciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzInIj4kKE91dERpcilsaWJcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3xXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KICAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTFcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMVwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8eDY0JyI+JChPdXREaXIpbGliXDwvSW50RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQnIj4kKE91dERpcilsaWJcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3x4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgogICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTFcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTFcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8V2luMzInIj4kKE91dERpcilsaWJcPC9JbnREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzInIj4kKE91dERpcilsaWJcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CiAgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTFcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzExXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfHg2NCciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQnIj4kKE91dERpcilsaWJcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KICAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMVwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTFcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfFdpbjMyJyI+JChPdXREaXIpbGliXDwvSW50RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMiciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KICAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTFcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMVwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8eDY0JyI+JChPdXREaXIpbGliXDwvSW50RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQnIj4kKE91dERpcilsaWJcPC9JbnREaXI+CiAgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMVwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMVwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXxXaW4zMiciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMiciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KICAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMVwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTFcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8eDY0JyI+JChPdXREaXIpbGliXDwvSW50RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NCciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KICAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzExXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyJyI+JChPdXREaXIpbGliXDwvSW50RGlyPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CkBAIC03NTQsNyArODc4LDkgQEAKICAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTFcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KICAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3xXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgogICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KICAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgogICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgogICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KQEAgLTc2NCw3ICs4OTAsOSBAQAogICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CiAgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CiAgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KICAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3x4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CiAgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KICAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KICAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CkBAIC03OTQsNyArOTIyLDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtODEyLDYgKzk0MCw0MCBAQAogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMiciPgorICAgIDxNaWRsPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWtUeXBMaWJDb21wYXRpYmxlPnRydWU8L01rVHlwTGliQ29tcGF0aWJsZT4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5XaW4zMjwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgorICAgICAgPEhlYWRlckZpbGVOYW1lPgorICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOy4uXC4uXC4uXC4uXC4uXHdvbGZzc2w7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7QlVJTERJTkdfTElCQ1VSTDtERUJVR0JVSUxEO1VTRV9DWUFTU0w7SEFWRV9DWUFTU0xfT1BUSU9OU19IO0hBVkVfQ1lBU1NMX0VSUk9SX1NTTF9IO1dPTEZTU0xfRExMOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7d29sZnNzbC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlwuLlx3b2xmc3NsXGJ1aWxkXFdpbjMyXFZDMTFcRExMIERlYnVnOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8TWFuaWZlc3RGaWxlPiQoSW50RGlyKSQoVGFyZ2V0RmlsZU5hbWUpLmludGVybWVkaWF0ZS5tYW5pZmVzdDwvTWFuaWZlc3RGaWxlPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KKyAgICAgIDxJbXBvcnRMaWJyYXJ5PiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkubGliPC9JbXBvcnRMaWJyYXJ5PgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8eDY0JyI+CiAgICAgPE1pZGw+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTgyOCw3ICs5OTAsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC04NDUsNiArMTAwNywzOSBAQAogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1rVHlwTGliQ29tcGF0aWJsZT50cnVlPC9Na1R5cExpYkNvbXBhdGlibGU+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChPdXREaXIpJChQcm9qZWN0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CisgICAgICA8SGVhZGVyRmlsZU5hbWU+CisgICAgICA8L0hlYWRlckZpbGVOYW1lPgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7Li5cLi5cLi5cLi5cLi5cd29sZnNzbDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRztCVUlMRElOR19MSUJDVVJMO0RFQlVHQlVJTEQ7VVNFX0NZQVNTTDtIQVZFX0NZQVNTTF9PUFRJT05TX0g7SEFWRV9DWUFTU0xfRVJST1JfU1NMX0g7V09MRlNTTF9ETEw7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjt3b2xmc3NsLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXC4uXHdvbGZzc2xcYnVpbGRcV2luNjRcVkMxMVxETEwgRGVidWc7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgICA8SW1wb3J0TGlicmFyeT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLmxpYjwvSW1wb3J0TGlicmFyeT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8V2luMzInIj4KICAgICA8TWlkbD4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtODYyLDcgKzEwNTcsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTg3Nyw2ICsxMDcyLDQwIEBACiAgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzInIj4KKyAgICA8TWlkbD4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1rVHlwTGliQ29tcGF0aWJsZT50cnVlPC9Na1R5cExpYkNvbXBhdGlibGU+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+V2luMzI8L1RhcmdldEVudmlyb25tZW50PgorICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKE91dERpcikkKFByb2plY3ROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICAgIDxIZWFkZXJGaWxlTmFtZT4KKyAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOy4uXC4uXC4uXC4uXC4uXHdvbGZzc2w7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7QlVJTERJTkdfTElCQ1VSTDtVU0VfQ1lBU1NMO0hBVkVfQ1lBU1NMX09QVElPTlNfSDtIQVZFX0NZQVNTTF9FUlJPUl9TU0xfSDtXT0xGU1NMX0RMTDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO3dvbGZzc2wubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cLi5cd29sZnNzbFxidWlsZFxXaW4zMlxWQzExXERMTCBSZWxlYXNlOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8TWFuaWZlc3RGaWxlPiQoSW50RGlyKSQoVGFyZ2V0RmlsZU5hbWUpLmludGVybWVkaWF0ZS5tYW5pZmVzdDwvTWFuaWZlc3RGaWxlPgorICAgICAgPEltcG9ydExpYnJhcnk+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5saWI8L0ltcG9ydExpYnJhcnk+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXx4NjQnIj4KICAgICA8TWlkbD4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtODk0LDcgKzExMjMsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTkwOCw2ICsxMTM3LDM5IEBACiAgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNa1R5cExpYkNvbXBhdGlibGU+dHJ1ZTwvTWtUeXBMaWJDb21wYXRpYmxlPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgorICAgICAgPEhlYWRlckZpbGVOYW1lPgorICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7Li5cLi5cLi5cLi5cLi5cd29sZnNzbDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRztCVUlMRElOR19MSUJDVVJMO1VTRV9DWUFTU0w7SEFWRV9DWUFTU0xfT1BUSU9OU19IO0hBVkVfQ1lBU1NMX0VSUk9SX1NTTF9IO1dPTEZTU0xfRExMOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7d29sZnNzbC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlwuLlx3b2xmc3NsXGJ1aWxkXFdpbjY0XFZDMTFcRExMIFJlbGVhc2U7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxJbXBvcnRMaWJyYXJ5PiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkubGliPC9JbXBvcnRMaWJyYXJ5PgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfFdpbjMyJyI+CiAgICAgPENsQ29tcGlsZT4KICAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KQEAgLTkxNiw3ICsxMTc4LDI3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaWI+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpYj4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOy4uXC4uXC4uXC4uXC4uXHdvbGZzc2w7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7QlVJTERJTkdfTElCQ1VSTDtERUJVR0JVSUxEO0NVUkxfU1RBVElDTElCO1VTRV9DWUFTU0w7SEFWRV9DWUFTU0xfT1BUSU9OU19IO0hBVkVfQ1lBU1NMX0VSUk9SX1NTTF9IOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC05MzksNyArMTIyMSwzMCBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGliPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaWI+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7Li5cLi5cLi5cLi5cLi5cd29sZnNzbDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRztCVUlMRElOR19MSUJDVVJMO0RFQlVHQlVJTEQ7Q1VSTF9TVEFUSUNMSUI7VVNFX0NZQVNTTDtIQVZFX0NZQVNTTF9PUFRJT05TX0g7SEFWRV9DWUFTU0xfRVJST1JfU1NMX0g7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTk2MCw3ICsxMjY1LDI3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaWI+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpYj4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjsuLlwuLlwuLlwuLlwuLlx3b2xmc3NsOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHO0JVSUxESU5HX0xJQkNVUkw7Q1VSTF9TVEFUSUNMSUI7VVNFX0NZQVNTTDtIQVZFX0NZQVNTTF9PUFRJT05TX0g7SEFWRV9DWUFTU0xfRVJST1JfU1NMX0g7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtOTgzLDcgKzEzMDgsMzAgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpYj4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGliPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjsuLlwuLlwuLlwuLlwuLlx3b2xmc3NsOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHO0JVSUxESU5HX0xJQkNVUkw7Q1VSTF9TVEFUSUNMSUI7VVNFX0NZQVNTTDtIQVZFX0NZQVNTTF9PUFRJT05TX0g7SEFWRV9DWUFTU0xfRVJST1JfU1NMX0g7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTAxMCw3ICsxMzU4LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTA0NCw3ICsxMzkyLDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTA3OCw3ICsxNDI2LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xMTEwLDcgKzE0NTgsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTExNDAsNyArMTQ4OCw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTExNzQsNyArMTUyMiw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTEyMDgsNyArMTU1Niw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTEyNDEsNyArMTU4OSw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTEyNzUsNyArMTYyMyw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTMwNyw3ICsxNjU1LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xMzM5LDcgKzE2ODcsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTEzNzAsNyArMTcxOCw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTQwMCw3ICsxNzQ4LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTQzNCw3ICsxNzgyLDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTQ2OCw3ICsxODE2LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xNTAwLDcgKzE4NDgsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTE1MjIsNyArMTg3MCw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTE1NDUsNyArMTg5Myw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTE1NjUsNyArMTkxMyw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTE1ODgsNyArMTkzNiw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTE2MDgsNyArMTk1Niw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTE2MjgsNyArMTk3Niw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTE2NTEsNyArMTk5OSw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTE2NzQsNyArMjAyMiw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTE2OTQsNyArMjA0Miw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTE3MTcsNyArMjA2NSw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTE3MzcsNyArMjA4NSw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTE3NjAsNyArMjEwOCw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTE3ODEsNyArMjEyOSw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTgwNCw3ICsyMTUyLDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xODI0LDcgKzIxNzIsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTE4NDcsNyArMjE5NSw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTg2Nyw3ICsyMjE1LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xODg3LDcgKzIyMzUsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTE5MTAsNyArMjI1OCw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTkzMyw3ICsyMjgxLDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xOTUzLDcgKzIzMDEsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTE5NzYsNyArMjMyNCw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTk5Niw3ICsyMzQ0LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0yMDE5LDcgKzIzNjcsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTIwMzIsMTAgKzIzODAsMTIgQEAKICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbUdyb3VwPgogQ1VSTF9MSUJfQ19GSUxFUworQ1VSTF9MSUJfVkFVVEhfQ19GSUxFUwogQ1VSTF9MSUJfVlRMU19DX0ZJTEVTCiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogQ1VSTF9MSUJfSF9GSUxFUworQ1VSTF9MSUJfVkFVVEhfSF9GSUxFUwogQ1VSTF9MSUJfVlRMU19IX0ZJTEVTCiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgpkaWZmIC0tZ2l0IGEvcHJvamVjdHMvV2luZG93cy9WQzExL2xpYi9saWJjdXJsLnZjeHByb2ouZmlsdGVycyBiL3Byb2plY3RzL1dpbmRvd3MvVkMxMS9saWIvbGliY3VybC52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQ2MzQxZAotLS0gL2Rldi9udWxsCisrKyBiL3Byb2plY3RzL1dpbmRvd3MvVkMxMS9saWIvbGliY3VybC52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwxNyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmNwcDtjO2NjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214PC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns5Mzk5NTM4MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+aDtoaDtocHA7aHh4O2htO2lubDtpbmM7eHNkPC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iUmVzb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezY3REE2QUI2LUY4MDAtNGMwOC04QjdBLTgzQkIxMjFBQUQwMX08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5yYztpY287Y3VyO2JtcDtkbGc7cmMyO3JjdDtiaW47cmdzO2dpZjtqcGc7anBlZztqcGU7cmVzeDt0aWZmO3RpZjtwbmc7d2F2O21mY3JpYmJvbi1tczwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvcHJvamVjdHMvV2luZG93cy9WQzExL3NyYy8uZ2l0aWdub3JlIGIvcHJvamVjdHMvV2luZG93cy9WQzExL3NyYy8uZ2l0aWdub3JlCmluZGV4IGQyZDdiN2YuLjYwMjA4ZDcgMTAwNjQ0Ci0tLSBhL3Byb2plY3RzL1dpbmRvd3MvVkMxMS9zcmMvLmdpdGlnbm9yZQorKysgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDMTEvc3JjLy5naXRpZ25vcmUKQEAgLTEsNiArMSw2IEBACi0vKi52Y3hwcm9qCi0vKi5maWx0ZXJzCi0vKi51c2VyCiAvKi5uY2IKKy8qLm9wZW5zZGYKIC8qLnNkZgogLyouc3VvCisvKi51c2VyCisvKi52Y3hwcm9qCmRpZmYgLS1naXQgYS9wcm9qZWN0cy9XaW5kb3dzL1ZDMTEvc3JjL2N1cmxzcmMuc2xuIGIvcHJvamVjdHMvV2luZG93cy9WQzExL3NyYy9jdXJsLnNsbgpzaW1pbGFyaXR5IGluZGV4IDg2JQpjb3B5IGZyb20gcHJvamVjdHMvV2luZG93cy9WQzExL3NyYy9jdXJsc3JjLnNsbgpjb3B5IHRvIHByb2plY3RzL1dpbmRvd3MvVkMxMS9zcmMvY3VybC5zbG4KaW5kZXggODhiNGY3ZS4uZTEyMjUzZSAxMDA2NDQKLS0tIGEvcHJvamVjdHMvV2luZG93cy9WQzExL3NyYy9jdXJsc3JjLnNsbgorKysgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDMTEvc3JjL2N1cmwuc2xuCkBAIC0xLDYgKzEsNiBAQAogTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gU29sdXRpb24gRmlsZSwgRm9ybWF0IFZlcnNpb24gMTIuMDAKICMgVmlzdWFsIFN0dWRpbyAyMDEyCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImN1cmxzcmMiLCAiY3VybHNyYy52Y3hwcm9qIiwgIns1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9IgorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJjdXJsIiwgImN1cmwudmN4cHJvaiIsICJ7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfSIKIEVuZFByb2plY3QKIEdsb2JhbAogCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Db25maWd1cmF0aW9uUGxhdGZvcm1zKSA9IHByZVNvbHV0aW9uCkBAIC0xMiw2ICsxMiw4IEBACiAJCURMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAogCQlETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgogCQlETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NCA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CisJCURMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0ID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0CiAJCURMTCBEZWJ1Z3xXaW4zMiA9IERMTCBEZWJ1Z3xXaW4zMgogCQlETEwgRGVidWd8eDY0ID0gRExMIERlYnVnfHg2NAogCQlETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIgPSBETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKQEAgLTIyLDYgKzI0LDggQEAKIAkJRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAogCQlETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKIAkJRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NCA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKKwkJRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMiA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NAogCQlETEwgUmVsZWFzZXxXaW4zMiA9IERMTCBSZWxlYXNlfFdpbjMyCiAJCURMTCBSZWxlYXNlfHg2NCA9IERMTCBSZWxlYXNlfHg2NAogCQlMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyID0gTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgpAQCAtMzYsNiArNDAsOCBAQAogCQlMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0CiAJCUxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzIKIAkJTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0ID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0CisJCUxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0ID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0CiAJCUxJQiBEZWJ1Z3xXaW4zMiA9IExJQiBEZWJ1Z3xXaW4zMgogCQlMSUIgRGVidWd8eDY0ID0gTElCIERlYnVnfHg2NAogCQlMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIgPSBMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKQEAgLTUwLDYgKzU2LDggQEAKIAkJTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQKIAkJTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMiA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzIKIAkJTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NAorCQlMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMgorCQlMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NCA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0CiAJCUxJQiBSZWxlYXNlfFdpbjMyID0gTElCIFJlbGVhc2V8V2luMzIKIAkJTElCIFJlbGVhc2V8eDY0ID0gTElCIFJlbGVhc2V8eDY0CiAJRW5kR2xvYmFsU2VjdGlvbgpAQCAtNzAsNiArNzgsMTAgQEAKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMi5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NC5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NAogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NC5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NC5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0LkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBEZWJ1Z3xXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWd8V2luMzIuQnVpbGQuMCA9IERMTCBEZWJ1Z3xXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERMTCBEZWJ1Z3x4NjQKQEAgLTkwLDYgKzEwMiwxMCBAQAogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NC5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMi5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NC5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NC5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2V8V2luMzIKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IERMTCBSZWxlYXNlfFdpbjMyCiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZXx4NjQKQEAgLTExOCw2ICsxMzQsMTAgQEAKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyCiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0LkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0LkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBEZWJ1Z3xXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWd8V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1Z3xXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWd8eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1Z3x4NjQKQEAgLTE0Niw2ICsxNjYsMTAgQEAKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMi5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NAogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NC5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0CiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlfFdpbjMyCiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZXxXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2V8eDY0CmRpZmYgLS1naXQgYS9wcm9qZWN0cy9XaW5kb3dzL1ZDMTEvc3JjL2N1cmxzcmMudG1wbCBiL3Byb2plY3RzL1dpbmRvd3MvVkMxMS9zcmMvY3VybC50bXBsCnNpbWlsYXJpdHkgaW5kZXggODIlCnJlbmFtZSBmcm9tIHByb2plY3RzL1dpbmRvd3MvVkMxMS9zcmMvY3VybHNyYy50bXBsCnJlbmFtZSB0byBwcm9qZWN0cy9XaW5kb3dzL1ZDMTEvc3JjL2N1cmwudG1wbAppbmRleCAwMTc1NzhjLi5lZDAzMThkIDEwMDY0NAotLS0gYS9wcm9qZWN0cy9XaW5kb3dzL1ZDMTEvc3JjL2N1cmxzcmMudG1wbAorKysgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDMTEvc3JjL2N1cmwudG1wbApAQCAtMSw2ICsxLDE0IEBACiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgogPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CiAgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RExMIERlYnVnIC0gRExMIHdvbGZTU0w8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgogICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyIj4KICAgICAgIDxDb25maWd1cmF0aW9uPkRMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDI8L0NvbmZpZ3VyYXRpb24+CiAgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgpAQCAtNDEsNiArNDksMTQgQEAKICAgICAgIDxDb25maWd1cmF0aW9uPkRMTCBEZWJ1ZzwvQ29uZmlndXJhdGlvbj4KICAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgogICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RExMIFJlbGVhc2UgLSBETEwgd29sZlNTTDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RExMIFJlbGVhc2UgLSBETEwgd29sZlNTTDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CiAgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiI+CiAgICAgICA8Q29uZmlndXJhdGlvbj5ETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDI8L0NvbmZpZ3VyYXRpb24+CiAgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgpAQCAtMTEzLDYgKzEyOSwxNCBAQAogICAgICAgPENvbmZpZ3VyYXRpb24+TElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSTwvQ29uZmlndXJhdGlvbj4KICAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgogICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+TElCIERlYnVnIC0gTElCIHdvbGZTU0w8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgogICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyIj4KICAgICAgIDxDb25maWd1cmF0aW9uPkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDI8L0NvbmZpZ3VyYXRpb24+CiAgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgpAQCAtMTY5LDYgKzE5MywxNCBAQAogICAgICAgPENvbmZpZ3VyYXRpb24+TElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJPC9Db25maWd1cmF0aW9uPgogICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CiAgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5MSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5MSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KICAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyIj4KICAgICAgIDxDb25maWd1cmF0aW9uPkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMjwvQ29uZmlndXJhdGlvbj4KICAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CkBAIC0xOTYsNyArMjI4LDcgQEAKICAgPC9JdGVtR3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KICAgICA8UHJvamVjdEd1aWQ+ezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH08L1Byb2plY3RHdWlkPgotICAgIDxSb290TmFtZXNwYWNlPmN1cmxzcmM8L1Jvb3ROYW1lc3BhY2U+CisgICAgPFJvb3ROYW1lc3BhY2U+Y3VybDwvUm9vdE5hbWVzcGFjZT4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KQEAgLTMyNSwyNCArMzU3LDQ4IEBACiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KICAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMTA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djExMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgogICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djExMDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTEwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KICAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMTA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTEwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KICAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMTA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTEwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KQEAgLTQ2OSwyNCArNTI1LDQ4IEBACiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KICAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMTA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMTA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CiAgICAgPFBsYXRmb3JtVG9vbHNldD52MTEwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTEwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CiAgICAgPFBsYXRmb3JtVG9vbHNldD52MTEwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMTA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KICAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMTA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djExMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KICAgPC9JbXBvcnRHcm91cD4KQEAgLTU1MywxNSArNjMzLDI3IEBACiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KQEAgLTYyNSw0MiArNzE3LDc4IEBACiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CiAgIDxQcm9wZXJ0eUdyb3VwPgogICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KICAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzExXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzExXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfFdpbjMyJyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyJyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgogICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzExXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMVwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXx4NjQnIj4kKE91dERpcilzcmNcPC9JbnREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0JyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CiAgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMVwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMVwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXxXaW4zMiciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMiciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KICAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMVwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTFcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8eDY0JyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NCciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgogICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzExXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMVwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8V2luMzInIj4kKE91dERpcilzcmNcPC9JbnREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyJyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CiAgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3x4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzExXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTFcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfHg2NCciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0JyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KICAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMVwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTFcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfFdpbjMyJyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMiciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgogICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMVwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzExXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3x4NjQnIj4kKE91dERpcilzcmNcPC9JbnREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NCciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CiAgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMVwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgpAQCAtNzgxLDU0ICs5MDksNjIgQEAKICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8V2luMzInIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3x4NjQnIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyJyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTHx4NjQnIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0JyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfFdpbjMyJyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8eDY0JyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0JyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyJyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQnIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzInIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0JyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMiciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXxXaW4zMiciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMiciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzInIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMiciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXxXaW4zMiciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0JyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0JyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8eDY0JyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQnIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NCciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0JyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0JyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfHg2NCciPmN1cmw8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3x4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTHx4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyJyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfFdpbjMyJyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyJyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzInIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyJyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyJyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXxXaW4zMiciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMiciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQnIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXx4NjQnIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0JyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0JyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NCciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NCciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQnIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0JyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXx4NjQnIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0JyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXxXaW4zMiciPgogICAgIDxNaWRsPgpAQCAtODQ0LDcgKzk4MCw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtODU5LDYgKzk5NSwzNyBAQAogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyJyI+CisgICAgPE1pZGw+CisgICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CisgICAgICA8SGVhZGVyRmlsZU5hbWU+CisgICAgICA8L0hlYWRlckZpbGVOYW1lPgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmwubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMVwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfHg2NCciPgogICAgIDxNaWRsPgogICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CkBAIC04NzQsNyArMTA0MSw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtODg5LDYgKzEwNTYsMzggQEAKICAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgorICAgICAgPEhlYWRlckZpbGVOYW1lPgorICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTFcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXxXaW4zMiciPgogICAgIDxNaWRsPgogICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgpAQCAtOTAzLDcgKzExMDIsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTkxOCw2ICsxMTE3LDM3IEBACiAgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzInIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICAgIDxIZWFkZXJGaWxlTmFtZT4KKyAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHO19DT05TT0xFO0NVUkxfU1RBVElDTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybC5saWI7d29sZnNzbC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzExXCQoQ29uZmlndXJhdGlvbik7Li5cLi5cLi5cLi5cLi5cd29sZnNzbFxidWlsZFxXaW4zMlxWQzExXExJQiBSZWxlYXNlOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfHg2NCciPgogICAgIDxNaWRsPgogICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CkBAIC05MzMsNyArMTE2Myw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtOTQ4LDYgKzExNzgsMzggQEAKICAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgorICAgICAgPEhlYWRlckZpbGVOYW1lPgorICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7X0NPTlNPTEU7Q1VSTF9TVEFUSUNMSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsLmxpYjt3b2xmc3NsLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTFcJChDb25maWd1cmF0aW9uKTsuLlwuLlwuLlwuLlwuLlx3b2xmc3NsXGJ1aWxkXFdpbjY0XFZDMTFcTElCIFJlbGVhc2U7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfFdpbjMyJyI+CiAgICAgPE1pZGw+CiAgICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CkBAIC05NjEsNyArMTIyMyw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTk3OSw2ICsxMjQxLDM3IEBACiAgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyJyI+CisgICAgPE1pZGw+CisgICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CisgICAgICA8SGVhZGVyRmlsZU5hbWU+CisgICAgICA8L0hlYWRlckZpbGVOYW1lPgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7X0NPTlNPTEU7REVCVUdCVUlMRDtDVVJMX1NUQVRJQ0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmxkLmxpYjt3b2xmc3NsLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTFcJChDb25maWd1cmF0aW9uKTsuLlwuLlwuLlwuLlwuLlx3b2xmc3NsXGJ1aWxkXFdpbjMyXFZDMTFcTElCIERlYnVnOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3x4NjQnIj4KICAgICA8TWlkbD4KICAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgpAQCAtOTkzLDcgKzEyODYsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xMDExLDYgKzEzMDQsMzggQEAKICAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICAgIDxIZWFkZXJGaWxlTmFtZT4KKyAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRztfQ09OU09MRTtERUJVR0JVSUxEO0NVUkxfU1RBVElDTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybGQubGliO3dvbGZzc2wubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMVwkKENvbmZpZ3VyYXRpb24pOy4uXC4uXC4uXC4uXC4uXHdvbGZzc2xcYnVpbGRcV2luNjRcVkMxMVxMSUIgRGVidWc7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfFdpbjMyJyI+CiAgICAgPE1pZGw+CiAgICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CkBAIC0xMDI0LDcgKzEzNDksMzggQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmxkLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTFcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMiciPgorICAgIDxNaWRsPgorICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgorICAgICAgPEhlYWRlckZpbGVOYW1lPgorICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHO19DT05TT0xFO0RFQlVHQlVJTEQ7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTEwNTYsNyArMTQxMiwzOSBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybGQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMVwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CisgICAgICA8SGVhZGVyRmlsZU5hbWU+CisgICAgICA8L0hlYWRlckZpbGVOYW1lPgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7X0NPTlNPTEU7REVCVUdCVUlMRDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTA4Nyw3ICsxNDc1LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTExOSw3ICsxNTA3LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTE1MCw3ICsxNTM4LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTE4MSw3ICsxNTY5LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTIxMyw3ICsxNjAxLDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTI0NSw3ICsxNjMzLDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTI3Nyw3ICsxNjY1LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xMzA3LDcgKzE2OTUsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTEzMzYsNyArMTcyNCw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTM2NSw3ICsxNzUzLDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xMzk1LDcgKzE3ODMsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTE0MjUsNyArMTgxMyw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTQ1Myw3ICsxODQxLDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTQ4NSw3ICsxODczLDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTUxNyw3ICsxOTA1LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xNTQ3LDcgKzE5MzUsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTE1NzUsNyArMTk2Myw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTE2MDcsNyArMTk5NSw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTE2MzksNyArMjAyNyw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTY2OSw3ICsyMDU3LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xNjk3LDcgKzIwODUsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xNzI5LDcgKzIxMTcsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xNzYxLDcgKzIxNDksNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTE3OTEsNyArMjE3OSw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTgxOSw3ICsyMjA3LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTg1MSw3ICsyMjM5LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTg4Myw3ICsyMjcxLDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xOTEzLDcgKzIzMDEsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTE5NDEsNyArMjMyOSw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTE5NzMsNyArMjM2MSw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTIwMDUsNyArMjM5Myw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMjAzNSw3ICsyNDIzLDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0yMDYzLDcgKzI0NTEsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0yMDk0LDcgKzI0ODIsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0yMTI2LDcgKzI1MTQsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0yMTU4LDcgKzI1NDYsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0yMTkwLDcgKzI1NzgsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTIyMTksNyArMjYwNyw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMjI0OSw3ICsyNjM3LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0yMjc5LDcgKzI2NjcsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KZGlmZiAtLWdpdCBhL3Byb2plY3RzL1dpbmRvd3MvVkMxMS9zcmMvY3VybC52Y3hwcm9qLmZpbHRlcnMgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDMTEvc3JjL2N1cmwudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkNjM0MWQKLS0tIC9kZXYvbnVsbAorKysgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDMTEvc3JjL2N1cmwudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMTcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezRGQzczN0YxLUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5jcHA7YztjYztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1RkJFNTJFQkZCfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmg7aGg7aHBwO2h4eDtobTtpbmw7aW5jO3hzZDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlJlc291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns2N0RBNkFCNi1GODAwLTRjMDgtOEI3QS04M0JCMTIxQUFEMDF9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+cmM7aWNvO2N1cjtibXA7ZGxnO3JjMjtyY3Q7YmluO3JncztnaWY7anBnO2pwZWc7anBlO3Jlc3g7dGlmZjt0aWY7cG5nO3dhdjttZmNyaWJib24tbXM8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Byb2plY3RzL1dpbmRvd3MvVkMxMi9jdXJsLWFsbC5zbG4gYi9wcm9qZWN0cy9XaW5kb3dzL1ZDMTIvY3VybC1hbGwuc2xuCmluZGV4IDU3MDY0YzQuLjM4YjMzZTYgMTAwNjQ0Ci0tLSBhL3Byb2plY3RzL1dpbmRvd3MvVkMxMi9jdXJsLWFsbC5zbG4KKysrIGIvcHJvamVjdHMvV2luZG93cy9WQzEyL2N1cmwtYWxsLnNsbgpAQCAtMSw2ICsxLDYgQEAKIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIFNvbHV0aW9uIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDEyLjAwCiAjIFZpc3VhbCBTdHVkaW8gMjAxMwotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJjdXJsc3JjIiwgInNyY1xjdXJsc3JjLnZjeHByb2oiLCAiezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0iCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImN1cmwiLCAic3JjXGN1cmwudmN4cHJvaiIsICJ7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfSIKIAlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0CiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9ID0ge0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0KIAlFbmRQcm9qZWN0U2VjdGlvbgpAQCAtMTcsNiArMTcsOCBAQAogCQlETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQKIAkJRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKIAkJRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NAorCQlETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMiA9IERMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyCisJCURMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NCA9IERMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NAogCQlETEwgRGVidWd8V2luMzIgPSBETEwgRGVidWd8V2luMzIKIAkJRExMIERlYnVnfHg2NCA9IERMTCBEZWJ1Z3x4NjQKIAkJRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyID0gRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCkBAIC0yNyw2ICsyOSw4IEBACiAJCURMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0ID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQKIAkJRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCiAJCURMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CisJCURMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyCisJCURMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0ID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQKIAkJRExMIFJlbGVhc2V8V2luMzIgPSBETEwgUmVsZWFzZXxXaW4zMgogCQlETEwgUmVsZWFzZXx4NjQgPSBETEwgUmVsZWFzZXx4NjQKIAkJTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiA9IExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKQEAgLTQxLDYgKzQ1LDggQEAKIAkJTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NAogCQlMSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMiA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyCiAJCUxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NCA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NAorCQlMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMiA9IExJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyCisJCUxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NCA9IExJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NAogCQlMSUIgRGVidWd8V2luMzIgPSBMSUIgRGVidWd8V2luMzIKIAkJTElCIERlYnVnfHg2NCA9IExJQiBEZWJ1Z3x4NjQKIAkJTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyID0gTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCkBAIC01NSw2ICs2MSw4IEBACiAJCUxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0CiAJCUxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzIgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyCiAJCUxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0ID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQKKwkJTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMiA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQgPSBMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NAogCQlMSUIgUmVsZWFzZXxXaW4zMiA9IExJQiBSZWxlYXNlfFdpbjMyCiAJCUxJQiBSZWxlYXNlfHg2NCA9IExJQiBSZWxlYXNlfHg2NAogCUVuZEdsb2JhbFNlY3Rpb24KQEAgLTc1LDYgKzgzLDEwIEBACiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyLkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NC5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0CiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBETEwgRGVidWd8V2luMzIKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnfFdpbjMyLkJ1aWxkLjAgPSBETEwgRGVidWd8V2luMzIKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnfHg2NC5BY3RpdmVDZmcgPSBETEwgRGVidWd8eDY0CkBAIC05NSw2ICsxMDcsMTAgQEAKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyLkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NC5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMi5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0CiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlfFdpbjMyCiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBETEwgUmVsZWFzZXxXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2V8eDY0CkBAIC0xMjMsNiArMTM5LDEwIEBACiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyLkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0CiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NC5CdWlsZC4wID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyLkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NC5CdWlsZC4wID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0CiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBMSUIgRGVidWd8V2luMzIKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnfFdpbjMyLkJ1aWxkLjAgPSBMSUIgRGVidWd8V2luMzIKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWd8eDY0CkBAIC0xNTEsNiArMTcxLDEwIEBACiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzIuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzIKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0LkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0LkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NAogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZXxXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gTElCIFJlbGVhc2V8V2luMzIKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlfHg2NApAQCAtMTcxLDYgKzE5NSwxMCBAQAogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyLkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMi5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMi5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0LkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NAogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRExMIERlYnVnfFdpbjMyCiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRExMIERlYnVnfFdpbjMyCiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRExMIERlYnVnfHg2NApAQCAtMTkxLDYgKzIxOSwxMCBAQAogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NC5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMi5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NC5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NC5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2V8V2luMzIKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IERMTCBSZWxlYXNlfFdpbjMyCiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZXx4NjQKQEAgLTIxOSw2ICsyNTEsMTAgQEAKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyCiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0LkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0LkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBEZWJ1Z3xXaW4zMgogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWd8V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1Z3xXaW4zMgogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWd8eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1Z3x4NjQKQEAgLTI0Nyw2ICsyODMsMTAgQEAKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMi5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMgogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NAogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NC5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0CiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlfFdpbjMyCiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZXxXaW4zMgogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2V8eDY0CmRpZmYgLS1naXQgYS9wcm9qZWN0cy9XaW5kb3dzL1ZDMTIvbGliLy5naXRpZ25vcmUgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDMTIvbGliLy5naXRpZ25vcmUKaW5kZXggZDJkN2I3Zi4uNjAyMDhkNyAxMDA2NDQKLS0tIGEvcHJvamVjdHMvV2luZG93cy9WQzEyL2xpYi8uZ2l0aWdub3JlCisrKyBiL3Byb2plY3RzL1dpbmRvd3MvVkMxMi9saWIvLmdpdGlnbm9yZQpAQCAtMSw2ICsxLDYgQEAKLS8qLnZjeHByb2oKLS8qLmZpbHRlcnMKLS8qLnVzZXIKIC8qLm5jYgorLyoub3BlbnNkZgogLyouc2RmCiAvKi5zdW8KKy8qLnVzZXIKKy8qLnZjeHByb2oKZGlmZiAtLWdpdCBhL3Byb2plY3RzL1dpbmRvd3MvVkMxMi9saWIvbGliY3VybC5zbG4gYi9wcm9qZWN0cy9XaW5kb3dzL1ZDMTIvbGliL2xpYmN1cmwuc2xuCmluZGV4IDRjM2U2MzQuLjg2MGEwNjAgMTAwNjQ0Ci0tLSBhL3Byb2plY3RzL1dpbmRvd3MvVkMxMi9saWIvbGliY3VybC5zbG4KKysrIGIvcHJvamVjdHMvV2luZG93cy9WQzEyL2xpYi9saWJjdXJsLnNsbgpAQCAtMTIsNiArMTIsOCBAQAogCQlETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQKIAkJRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKIAkJRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NAorCQlETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMiA9IERMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyCisJCURMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NCA9IERMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NAogCQlETEwgRGVidWd8V2luMzIgPSBETEwgRGVidWd8V2luMzIKIAkJRExMIERlYnVnfHg2NCA9IERMTCBEZWJ1Z3x4NjQKIAkJRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyID0gRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCkBAIC0yMiw2ICsyNCw4IEBACiAJCURMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0ID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQKIAkJRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCiAJCURMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CisJCURMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyCisJCURMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0ID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQKIAkJRExMIFJlbGVhc2V8V2luMzIgPSBETEwgUmVsZWFzZXxXaW4zMgogCQlETEwgUmVsZWFzZXx4NjQgPSBETEwgUmVsZWFzZXx4NjQKIAkJTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiA9IExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKQEAgLTM2LDYgKzQwLDggQEAKIAkJTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NAogCQlMSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMiA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyCiAJCUxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NCA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NAorCQlMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMiA9IExJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyCisJCUxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NCA9IExJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NAogCQlMSUIgRGVidWd8V2luMzIgPSBMSUIgRGVidWd8V2luMzIKIAkJTElCIERlYnVnfHg2NCA9IExJQiBEZWJ1Z3x4NjQKIAkJTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyID0gTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCkBAIC01MCw2ICs1Niw4IEBACiAJCUxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0CiAJCUxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzIgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyCiAJCUxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0ID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQKKwkJTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMiA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQgPSBMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NAogCQlMSUIgUmVsZWFzZXxXaW4zMiA9IExJQiBSZWxlYXNlfFdpbjMyCiAJCUxJQiBSZWxlYXNlfHg2NCA9IExJQiBSZWxlYXNlfHg2NAogCUVuZEdsb2JhbFNlY3Rpb24KQEAgLTcwLDYgKzc4LDEwIEBACiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyLkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NC5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0CiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBETEwgRGVidWd8V2luMzIKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnfFdpbjMyLkJ1aWxkLjAgPSBETEwgRGVidWd8V2luMzIKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnfHg2NC5BY3RpdmVDZmcgPSBETEwgRGVidWd8eDY0CkBAIC05MCw2ICsxMDIsMTAgQEAKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyLkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NC5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMi5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0CiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlfFdpbjMyCiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBETEwgUmVsZWFzZXxXaW4zMgogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2V8eDY0CkBAIC0xMTgsNiArMTM0LDEwIEBACiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyLkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMgogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0CiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NC5CdWlsZC4wID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyLkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NC5CdWlsZC4wID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0CiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBMSUIgRGVidWd8V2luMzIKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnfFdpbjMyLkJ1aWxkLjAgPSBMSUIgRGVidWd8V2luMzIKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWd8eDY0CkBAIC0xNDYsNiArMTY2LDEwIEBACiAJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzIuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzIKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0LkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0LkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NAogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZXxXaW4zMgogCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gTElCIFJlbGVhc2V8V2luMzIKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlfHg2NApkaWZmIC0tZ2l0IGEvcHJvamVjdHMvV2luZG93cy9WQzEyL2xpYi9saWJjdXJsLnRtcGwgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDMTIvbGliL2xpYmN1cmwudG1wbAppbmRleCA2NTA5OGVmLi5kM2FhZjQ1IDEwMDY0NAotLS0gYS9wcm9qZWN0cy9XaW5kb3dzL1ZDMTIvbGliL2xpYmN1cmwudG1wbAorKysgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDMTIvbGliL2xpYmN1cmwudG1wbApAQCAtMSw2ICsxLDE0IEBACiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgogPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjEyLjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgogICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5ETEwgRGVidWcgLSBETEwgd29sZlNTTDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KICAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiI+CiAgICAgICA8Q29uZmlndXJhdGlvbj5ETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyPC9Db25maWd1cmF0aW9uPgogICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KQEAgLTQxLDYgKzQ5LDE0IEBACiAgICAgICA8Q29uZmlndXJhdGlvbj5ETEwgRGVidWc8L0NvbmZpZ3VyYXRpb24+CiAgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KICAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0w8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0w8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgogICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIiPgogICAgICAgPENvbmZpZ3VyYXRpb24+RExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyPC9Db25maWd1cmF0aW9uPgogICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KQEAgLTExMyw2ICsxMjksMTQgQEAKICAgICAgIDxDb25maWd1cmF0aW9uPkxJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEk8L0NvbmZpZ3VyYXRpb24+CiAgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KICAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5MSUIgRGVidWcgLSBMSUIgd29sZlNTTDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KICAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMiI+CiAgICAgICA8Q29uZmlndXJhdGlvbj5MSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyPC9Db25maWd1cmF0aW9uPgogICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KQEAgLTE2OSw2ICsxOTMsMTQgQEAKICAgICAgIDxDb25maWd1cmF0aW9uPkxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSTwvQ29uZmlndXJhdGlvbj4KICAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgogICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+TElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+TElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CiAgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMiI+CiAgICAgICA8Q29uZmlndXJhdGlvbj5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDI8L0NvbmZpZ3VyYXRpb24+CiAgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgpAQCAtMzI1LDI0ICszNTcsNDggQEAKICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgogICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEyMDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEyMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CiAgICAgPFBsYXRmb3JtVG9vbHNldD52MTIwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEyMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CiAgICAgPFBsYXRmb3JtVG9vbHNldD52MTIwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEyMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgogICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEyMDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTIwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgpAQCAtNDY5LDI0ICs1MjUsNDggQEAKICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgogICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEyMDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMjA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KICAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMjA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEyMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgogICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEyMDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTIwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgogICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEyMDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEyMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KICAgPC9JbXBvcnRHcm91cD4KQEAgLTU1MywxNSArNjMzLDI3IEBACiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KQEAgLTYyNSwzOCArNzE3LDcwIEBACiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CiAgIDxQcm9wZXJ0eUdyb3VwPgogICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KICAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMlwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTJcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfFdpbjMyJyI+JChPdXREaXIpbGliXDwvSW50RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMiciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgogICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMlwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEyXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3x4NjQnIj4kKE91dERpcilsaWJcPC9JbnREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NCciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CiAgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMlwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMlwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXxXaW4zMiciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMiciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KICAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMlwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTJcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8eDY0JyI+JChPdXREaXIpbGliXDwvSW50RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NCciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgogICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEyXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMlwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8V2luMzInIj4kKE91dERpcilsaWJcPC9JbnREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyJyI+JChPdXREaXIpbGliXDwvSW50RGlyPgogICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMlwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEyXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3x4NjQnIj4kKE91dERpcilsaWJcPC9JbnREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NCciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KICAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEyXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEyXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfFdpbjMyJyI+JChPdXREaXIpbGliXDwvSW50RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyJyI+JChPdXREaXIpbGliXDwvSW50RGlyPgogICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEyXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMlwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXx4NjQnIj4kKE91dERpcilsaWJcPC9JbnREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0JyI+JChPdXREaXIpbGliXDwvSW50RGlyPgogICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTJcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzInIj4kKE91dERpcilsaWJcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KQEAgLTc1NCw3ICs4NzgsOSBAQAogICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMlwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0JyI+JChPdXREaXIpbGliXDwvSW50RGlyPgogICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CiAgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgogICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CiAgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTHx4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CiAgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgpAQCAtNzY0LDcgKzg5MCw5IEBACiAgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KICAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KICAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3xXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgogICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KICAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgogICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgogICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KQEAgLTc5NCw3ICs5MjIsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC04MTIsNiArOTQwLDQwIEBACiAgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyJyI+CisgICAgPE1pZGw+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNa1R5cExpYkNvbXBhdGlibGU+dHJ1ZTwvTWtUeXBMaWJDb21wYXRpYmxlPgorICAgICAgPFRhcmdldEVudmlyb25tZW50PldpbjMyPC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChPdXREaXIpJChQcm9qZWN0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CisgICAgICA8SGVhZGVyRmlsZU5hbWU+CisgICAgICA8L0hlYWRlckZpbGVOYW1lPgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7Li5cLi5cLi5cLi5cLi5cd29sZnNzbDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRztCVUlMRElOR19MSUJDVVJMO0RFQlVHQlVJTEQ7VVNFX0NZQVNTTDtIQVZFX0NZQVNTTF9PUFRJT05TX0g7SEFWRV9DWUFTU0xfRVJST1JfU1NMX0g7V09MRlNTTF9ETEw7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjt3b2xmc3NsLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXC4uXHdvbGZzc2xcYnVpbGRcV2luMzJcVkMxMlxETEwgRGVidWc7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxNYW5pZmVzdEZpbGU+JChJbnREaXIpJChUYXJnZXRGaWxlTmFtZSkuaW50ZXJtZWRpYXRlLm1hbmlmZXN0PC9NYW5pZmVzdEZpbGU+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgorICAgICAgPEltcG9ydExpYnJhcnk+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5saWI8L0ltcG9ydExpYnJhcnk+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3x4NjQnIj4KICAgICA8TWlkbD4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtODI4LDcgKzk5MCw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTg0NSw2ICsxMDA3LDM5IEBACiAgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWtUeXBMaWJDb21wYXRpYmxlPnRydWU8L01rVHlwTGliQ29tcGF0aWJsZT4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKE91dERpcikkKFByb2plY3ROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICAgIDxIZWFkZXJGaWxlTmFtZT4KKyAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjsuLlwuLlwuLlwuLlwuLlx3b2xmc3NsOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHO0JVSUxESU5HX0xJQkNVUkw7REVCVUdCVUlMRDtVU0VfQ1lBU1NMO0hBVkVfQ1lBU1NMX09QVElPTlNfSDtIQVZFX0NZQVNTTF9FUlJPUl9TU0xfSDtXT0xGU1NMX0RMTDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO3dvbGZzc2wubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cLi5cd29sZnNzbFxidWlsZFxXaW42NFxWQzEyXERMTCBEZWJ1ZzslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KKyAgICAgIDxJbXBvcnRMaWJyYXJ5PiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkubGliPC9JbXBvcnRMaWJyYXJ5PgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXxXaW4zMiciPgogICAgIDxNaWRsPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC04NjIsNyArMTA1Nyw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtODc3LDYgKzEwNzIsNDAgQEAKICAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMiciPgorICAgIDxNaWRsPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWtUeXBMaWJDb21wYXRpYmxlPnRydWU8L01rVHlwTGliQ29tcGF0aWJsZT4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5XaW4zMjwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgorICAgICAgPEhlYWRlckZpbGVOYW1lPgorICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7Li5cLi5cLi5cLi5cLi5cd29sZnNzbDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRztCVUlMRElOR19MSUJDVVJMO1VTRV9DWUFTU0w7SEFWRV9DWUFTU0xfT1BUSU9OU19IO0hBVkVfQ1lBU1NMX0VSUk9SX1NTTF9IO1dPTEZTU0xfRExMOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7d29sZnNzbC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlwuLlx3b2xmc3NsXGJ1aWxkXFdpbjMyXFZDMTJcRExMIFJlbGVhc2U7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxNYW5pZmVzdEZpbGU+JChJbnREaXIpJChUYXJnZXRGaWxlTmFtZSkuaW50ZXJtZWRpYXRlLm1hbmlmZXN0PC9NYW5pZmVzdEZpbGU+CisgICAgICA8SW1wb3J0TGlicmFyeT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLmxpYjwvSW1wb3J0TGlicmFyeT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfHg2NCciPgogICAgIDxNaWRsPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC04OTQsNyArMTEyMyw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtOTA4LDYgKzExMzcsMzkgQEAKICAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1rVHlwTGliQ29tcGF0aWJsZT50cnVlPC9Na1R5cExpYkNvbXBhdGlibGU+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChPdXREaXIpJChQcm9qZWN0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CisgICAgICA8SGVhZGVyRmlsZU5hbWU+CisgICAgICA8L0hlYWRlckZpbGVOYW1lPgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjsuLlwuLlwuLlwuLlwuLlx3b2xmc3NsOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHO0JVSUxESU5HX0xJQkNVUkw7VVNFX0NZQVNTTDtIQVZFX0NZQVNTTF9PUFRJT05TX0g7SEFWRV9DWUFTU0xfRVJST1JfU1NMX0g7V09MRlNTTF9ETEw7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjt3b2xmc3NsLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXC4uXHdvbGZzc2xcYnVpbGRcV2luNjRcVkMxMlxETEwgUmVsZWFzZTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPEltcG9ydExpYnJhcnk+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5saWI8L0ltcG9ydExpYnJhcnk+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8V2luMzInIj4KICAgICA8Q2xDb21waWxlPgogICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgpAQCAtOTE2LDcgKzExNzgsMjcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpYj4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGliPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7Li5cLi5cLi5cLi5cLi5cd29sZnNzbDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRztCVUlMRElOR19MSUJDVVJMO0RFQlVHQlVJTEQ7Q1VSTF9TVEFUSUNMSUI7VVNFX0NZQVNTTDtIQVZFX0NZQVNTTF9PUFRJT05TX0g7SEFWRV9DWUFTU0xfRVJST1JfU1NMX0g7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTkzOSw3ICsxMjIxLDMwIEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaWI+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpYj4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjsuLlwuLlwuLlwuLlwuLlx3b2xmc3NsOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHO0JVSUxESU5HX0xJQkNVUkw7REVCVUdCVUlMRDtDVVJMX1NUQVRJQ0xJQjtVU0VfQ1lBU1NMO0hBVkVfQ1lBU1NMX09QVElPTlNfSDtIQVZFX0NZQVNTTF9FUlJPUl9TU0xfSDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtOTYwLDcgKzEyNjUsMjcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpYj4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGliPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOy4uXC4uXC4uXC4uXC4uXHdvbGZzc2w7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7QlVJTERJTkdfTElCQ1VSTDtDVVJMX1NUQVRJQ0xJQjtVU0VfQ1lBU1NMO0hBVkVfQ1lBU1NMX09QVElPTlNfSDtIQVZFX0NZQVNTTF9FUlJPUl9TU0xfSDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC05ODMsNyArMTMwOCwzMCBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGliPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaWI+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOy4uXC4uXC4uXC4uXC4uXHdvbGZzc2w7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7QlVJTERJTkdfTElCQ1VSTDtDVVJMX1NUQVRJQ0xJQjtVU0VfQ1lBU1NMO0hBVkVfQ1lBU1NMX09QVElPTlNfSDtIQVZFX0NZQVNTTF9FUlJPUl9TU0xfSDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xMDEwLDcgKzEzNTgsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xMDQ0LDcgKzEzOTIsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xMDc4LDcgKzE0MjYsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTExMTAsNyArMTQ1OCw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTE0MCw3ICsxNDg4LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTE3NCw3ICsxNTIyLDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTIwOCw3ICsxNTU2LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTI0MSw3ICsxNTg5LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTI3NSw3ICsxNjIzLDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xMzA3LDcgKzE2NTUsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTEzMzksNyArMTY4Nyw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTM3MCw3ICsxNzE4LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xNDAwLDcgKzE3NDgsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xNDM0LDcgKzE3ODIsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xNDY4LDcgKzE4MTYsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTE1MDAsNyArMTg0OCw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTUyMiw3ICsxODcwLDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTU0NSw3ICsxODkzLDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTU2NSw3ICsxOTEzLDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTU4OCw3ICsxOTM2LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTYwOCw3ICsxOTU2LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTYyOCw3ICsxOTc2LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTY1MSw3ICsxOTk5LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTY3NCw3ICsyMDIyLDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTY5NCw3ICsyMDQyLDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTcxNyw3ICsyMDY1LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTczNyw3ICsyMDg1LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTc2MCw3ICsyMTA4LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTc4MSw3ICsyMTI5LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xODA0LDcgKzIxNTIsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTE4MjQsNyArMjE3Miw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTg0Nyw3ICsyMTk1LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xODY3LDcgKzIyMTUsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTE4ODcsNyArMjIzNSw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTkxMCw3ICsyMjU4LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xOTMzLDcgKzIyODEsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTE5NTMsNyArMjMwMSw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTk3Niw3ICsyMzI0LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xOTk2LDcgKzIzNDQsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTIwMTksNyArMjM2Nyw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMjAzMiwxMCArMjM4MCwxMiBAQAogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiBDVVJMX0xJQl9DX0ZJTEVTCitDVVJMX0xJQl9WQVVUSF9DX0ZJTEVTCiBDVVJMX0xJQl9WVExTX0NfRklMRVMKICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiBDVVJMX0xJQl9IX0ZJTEVTCitDVVJMX0xJQl9WQVVUSF9IX0ZJTEVTCiBDVVJMX0xJQl9WVExTX0hfRklMRVMKICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CmRpZmYgLS1naXQgYS9wcm9qZWN0cy9XaW5kb3dzL1ZDMTIvbGliL2xpYmN1cmwudmN4cHJvai5maWx0ZXJzIGIvcHJvamVjdHMvV2luZG93cy9WQzEyL2xpYi9saWJjdXJsLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDYzNDFkCi0tLSAvZGV2L251bGwKKysrIGIvcHJvamVjdHMvV2luZG93cy9WQzEyL2xpYi9saWJjdXJsLnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDE3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+Y3BwO2M7Y2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXg8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezkzOTk1MzgwLTg5QkQtNGIwNC04OEVCLTYyNUZCRTUyRUJGQn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5oO2hoO2hwcDtoeHg7aG07aW5sO2luYzt4c2Q8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJSZXNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NjdEQTZBQjYtRjgwMC00YzA4LThCN0EtODNCQjEyMUFBRDAxfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPnJjO2ljbztjdXI7Ym1wO2RsZztyYzI7cmN0O2JpbjtyZ3M7Z2lmO2pwZztqcGVnO2pwZTtyZXN4O3RpZmY7dGlmO3BuZzt3YXY7bWZjcmliYm9uLW1zPC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9wcm9qZWN0cy9XaW5kb3dzL1ZDMTIvc3JjLy5naXRpZ25vcmUgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDMTIvc3JjLy5naXRpZ25vcmUKaW5kZXggZDJkN2I3Zi4uNjAyMDhkNyAxMDA2NDQKLS0tIGEvcHJvamVjdHMvV2luZG93cy9WQzEyL3NyYy8uZ2l0aWdub3JlCisrKyBiL3Byb2plY3RzL1dpbmRvd3MvVkMxMi9zcmMvLmdpdGlnbm9yZQpAQCAtMSw2ICsxLDYgQEAKLS8qLnZjeHByb2oKLS8qLmZpbHRlcnMKLS8qLnVzZXIKIC8qLm5jYgorLyoub3BlbnNkZgogLyouc2RmCiAvKi5zdW8KKy8qLnVzZXIKKy8qLnZjeHByb2oKZGlmZiAtLWdpdCBhL3Byb2plY3RzL1dpbmRvd3MvVkMxMS9zcmMvY3VybHNyYy5zbG4gYi9wcm9qZWN0cy9XaW5kb3dzL1ZDMTIvc3JjL2N1cmwuc2xuCnNpbWlsYXJpdHkgaW5kZXggODYlCnJlbmFtZSBmcm9tIHByb2plY3RzL1dpbmRvd3MvVkMxMS9zcmMvY3VybHNyYy5zbG4KcmVuYW1lIHRvIHByb2plY3RzL1dpbmRvd3MvVkMxMi9zcmMvY3VybC5zbG4KaW5kZXggODhiNGY3ZS4uN2I1MjQ0YyAxMDA2NDQKLS0tIGEvcHJvamVjdHMvV2luZG93cy9WQzExL3NyYy9jdXJsc3JjLnNsbgorKysgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDMTIvc3JjL2N1cmwuc2xuCkBAIC0xLDYgKzEsNiBAQAogTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gU29sdXRpb24gRmlsZSwgRm9ybWF0IFZlcnNpb24gMTIuMDAKLSMgVmlzdWFsIFN0dWRpbyAyMDEyCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImN1cmxzcmMiLCAiY3VybHNyYy52Y3hwcm9qIiwgIns1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9IgorIyBWaXN1YWwgU3R1ZGlvIDIwMTMKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiY3VybCIsICJjdXJsLnZjeHByb2oiLCAiezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0iCiBFbmRQcm9qZWN0CiBHbG9iYWwKIAlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uQ29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwcmVTb2x1dGlvbgpAQCAtMTIsNiArMTIsOCBAQAogCQlETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQKIAkJRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKIAkJRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NAorCQlETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMiA9IERMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyCisJCURMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NCA9IERMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NAogCQlETEwgRGVidWd8V2luMzIgPSBETEwgRGVidWd8V2luMzIKIAkJRExMIERlYnVnfHg2NCA9IERMTCBEZWJ1Z3x4NjQKIAkJRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyID0gRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCkBAIC0yMiw2ICsyNCw4IEBACiAJCURMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0ID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQKIAkJRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCiAJCURMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CisJCURMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyCisJCURMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0ID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQKIAkJRExMIFJlbGVhc2V8V2luMzIgPSBETEwgUmVsZWFzZXxXaW4zMgogCQlETEwgUmVsZWFzZXx4NjQgPSBETEwgUmVsZWFzZXx4NjQKIAkJTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiA9IExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKQEAgLTM2LDYgKzQwLDggQEAKIAkJTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NAogCQlMSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMiA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyCiAJCUxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NCA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NAorCQlMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMiA9IExJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyCisJCUxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NCA9IExJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NAogCQlMSUIgRGVidWd8V2luMzIgPSBMSUIgRGVidWd8V2luMzIKIAkJTElCIERlYnVnfHg2NCA9IExJQiBEZWJ1Z3x4NjQKIAkJTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyID0gTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCkBAIC01MCw2ICs1Niw4IEBACiAJCUxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0CiAJCUxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzIgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyCiAJCUxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0ID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQKKwkJTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMiA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQgPSBMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NAogCQlMSUIgUmVsZWFzZXxXaW4zMiA9IExJQiBSZWxlYXNlfFdpbjMyCiAJCUxJQiBSZWxlYXNlfHg2NCA9IExJQiBSZWxlYXNlfHg2NAogCUVuZEdsb2JhbFNlY3Rpb24KQEAgLTcwLDYgKzc4LDEwIEBACiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyLkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NC5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0CiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBETEwgRGVidWd8V2luMzIKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnfFdpbjMyLkJ1aWxkLjAgPSBETEwgRGVidWd8V2luMzIKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnfHg2NC5BY3RpdmVDZmcgPSBETEwgRGVidWd8eDY0CkBAIC05MCw2ICsxMDIsMTAgQEAKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyLkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NC5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMi5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0CiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlfFdpbjMyCiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBETEwgUmVsZWFzZXxXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2V8eDY0CkBAIC0xMTgsNiArMTM0LDEwIEBACiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyLkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0CiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NC5CdWlsZC4wID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyLkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NC5CdWlsZC4wID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0CiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBMSUIgRGVidWd8V2luMzIKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnfFdpbjMyLkJ1aWxkLjAgPSBMSUIgRGVidWd8V2luMzIKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWd8eDY0CkBAIC0xNDYsNiArMTY2LDEwIEBACiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzIuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzIKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0LkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0LkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NAogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZXxXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gTElCIFJlbGVhc2V8V2luMzIKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlfHg2NApkaWZmIC0tZ2l0IGEvcHJvamVjdHMvV2luZG93cy9WQzEyL3NyYy9jdXJsc3JjLnRtcGwgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDMTIvc3JjL2N1cmwudG1wbApzaW1pbGFyaXR5IGluZGV4IDgyJQpyZW5hbWUgZnJvbSBwcm9qZWN0cy9XaW5kb3dzL1ZDMTIvc3JjL2N1cmxzcmMudG1wbApyZW5hbWUgdG8gcHJvamVjdHMvV2luZG93cy9WQzEyL3NyYy9jdXJsLnRtcGwKaW5kZXggODhhY2U0OS4uNzg5NGJlYyAxMDA2NDQKLS0tIGEvcHJvamVjdHMvV2luZG93cy9WQzEyL3NyYy9jdXJsc3JjLnRtcGwKKysrIGIvcHJvamVjdHMvV2luZG93cy9WQzEyL3NyYy9jdXJsLnRtcGwKQEAgLTEsNiArMSwxNCBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KIDxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSIxMi4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KICAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RExMIERlYnVnIC0gRExMIHdvbGZTU0w8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5ETEwgRGVidWcgLSBETEwgd29sZlNTTDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CiAgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIiPgogICAgICAgPENvbmZpZ3VyYXRpb24+RExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMjwvQ29uZmlndXJhdGlvbj4KICAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CkBAIC00MSw2ICs0OSwxNCBAQAogICAgICAgPENvbmZpZ3VyYXRpb24+RExMIERlYnVnPC9Db25maWd1cmF0aW9uPgogICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CiAgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5ETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5ETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KICAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyIj4KICAgICAgIDxDb25maWd1cmF0aW9uPkRMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMjwvQ29uZmlndXJhdGlvbj4KICAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CkBAIC0xMTMsNiArMTI5LDE0IEBACiAgICAgICA8Q29uZmlndXJhdGlvbj5MSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJPC9Db25maWd1cmF0aW9uPgogICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CiAgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+TElCIERlYnVnIC0gTElCIHdvbGZTU0w8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5MSUIgRGVidWcgLSBMSUIgd29sZlNTTDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CiAgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzIiPgogICAgICAgPENvbmZpZ3VyYXRpb24+TElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMjwvQ29uZmlndXJhdGlvbj4KICAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CkBAIC0xNjksNiArMTkzLDE0IEBACiAgICAgICA8Q29uZmlndXJhdGlvbj5MSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEk8L0NvbmZpZ3VyYXRpb24+CiAgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KICAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0w8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0w8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgogICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzIiPgogICAgICAgPENvbmZpZ3VyYXRpb24+TElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyPC9Db25maWd1cmF0aW9uPgogICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KQEAgLTE5Niw3ICsyMjgsNyBAQAogICA8L0l0ZW1Hcm91cD4KICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgogICAgIDxQcm9qZWN0R3VpZD57NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfTwvUHJvamVjdEd1aWQ+Ci0gICAgPFJvb3ROYW1lc3BhY2U+Y3VybHNyYzwvUm9vdE5hbWVzcGFjZT4KKyAgICA8Um9vdE5hbWVzcGFjZT5jdXJsPC9Sb290TmFtZXNwYWNlPgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgpAQCAtMzI1LDI0ICszNTcsNDggQEAKICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgogICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEyMDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTIwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CiAgICAgPFBsYXRmb3JtVG9vbHNldD52MTIwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMjA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgogICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEyMDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMjA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgogICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEyMDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMjA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgpAQCAtNDY5LDI0ICs1MjUsNDggQEAKICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgogICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEyMDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEyMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KICAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMjA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMjA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KICAgICA8UGxhdGZvcm1Ub29sc2V0PnYxMjA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEyMDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgogICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djEyMDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTIwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgogICA8L0ltcG9ydEdyb3VwPgpAQCAtNTUzLDE1ICs2MzMsMjcgQEAKICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgpAQCAtNjI1LDQyICs3MTcsNzggQEAKICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KICAgPFByb3BlcnR5R3JvdXA+CiAgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgogICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTJcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTJcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8V2luMzInIj4kKE91dERpcilzcmNcPC9JbnREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzInIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CiAgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTJcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEyXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfHg2NCciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQnIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KICAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEyXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEyXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfFdpbjMyJyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyJyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgogICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEyXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMlwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXx4NjQnIj4kKE91dERpcilzcmNcPC9JbnREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0JyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CiAgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3xXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTJcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEyXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3xXaW4zMiciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzInIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3xXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KICAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTJcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMlwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8eDY0JyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQnIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3x4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgogICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEyXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMlwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8V2luMzInIj4kKE91dERpcilzcmNcPC9JbnREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyJyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CiAgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3x4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEyXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTJcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfHg2NCciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0JyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KICAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEyXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyJyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CkBAIC03ODEsNTQgKzkwOSw2MiBAQAogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3xXaW4zMiciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfHg2NCciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzInIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NCciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NCciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8V2luMzInIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3x4NjQnIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyJyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTHx4NjQnIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0JyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzInIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NCciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMiciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQnIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyJyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfFdpbjMyJyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyJyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMiciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyJyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfFdpbjMyJyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQnIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NCciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXx4NjQnIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NCciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQnIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQnIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8eDY0JyI+Y3VybDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3xXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3x4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzInIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8V2luMzInIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzInIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMiciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzInIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzInIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfFdpbjMyJyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyJyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0JyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NCciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NCciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfHg2NCciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQnIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0JyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQnIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfHg2NCciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQnIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfFdpbjMyJyI+CiAgICAgPE1pZGw+CkBAIC04NDQsNyArOTgwLDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC04NTksNiArOTk1LDM3IEBACiAgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzInIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICAgIDxIZWFkZXJGaWxlTmFtZT4KKyAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEyXCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8eDY0JyI+CiAgICAgPE1pZGw+CiAgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KQEAgLTg3NCw3ICsxMDQxLDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC04ODksNiArMTA1NiwzOCBAQAogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CisgICAgICA8SGVhZGVyRmlsZU5hbWU+CisgICAgICA8L0hlYWRlckZpbGVOYW1lPgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmwubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMlwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfFdpbjMyJyI+CiAgICAgPE1pZGw+CiAgICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CkBAIC05MDMsNyArMTEwMiw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtOTE4LDYgKzExMTcsMzcgQEAKICAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMiciPgorICAgIDxNaWRsPgorICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgorICAgICAgPEhlYWRlckZpbGVOYW1lPgorICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7X0NPTlNPTEU7Q1VSTF9TVEFUSUNMSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsLmxpYjt3b2xmc3NsLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTJcJChDb25maWd1cmF0aW9uKTsuLlwuLlwuLlwuLlwuLlx3b2xmc3NsXGJ1aWxkXFdpbjMyXFZDMTJcTElCIFJlbGVhc2U7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8eDY0JyI+CiAgICAgPE1pZGw+CiAgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KQEAgLTkzMyw3ICsxMTYzLDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC05NDgsNiArMTE3OCwzOCBAQAogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CisgICAgICA8SGVhZGVyRmlsZU5hbWU+CisgICAgICA8L0hlYWRlckZpbGVOYW1lPgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRztfQ09OU09MRTtDVVJMX1NUQVRJQ0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmwubGliO3dvbGZzc2wubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMlwkKENvbmZpZ3VyYXRpb24pOy4uXC4uXC4uXC4uXC4uXHdvbGZzc2xcYnVpbGRcV2luNjRcVkMxMlxMSUIgUmVsZWFzZTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8V2luMzInIj4KICAgICA8TWlkbD4KICAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KQEAgLTk2MSw3ICsxMjIzLDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtOTc5LDYgKzEyNDEsMzcgQEAKICAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzInIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICAgIDxIZWFkZXJGaWxlTmFtZT4KKyAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRztfQ09OU09MRTtERUJVR0JVSUxEO0NVUkxfU1RBVElDTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybGQubGliO3dvbGZzc2wubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMlwkKENvbmZpZ3VyYXRpb24pOy4uXC4uXC4uXC4uXC4uXHdvbGZzc2xcYnVpbGRcV2luMzJcVkMxMlxMSUIgRGVidWc7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfHg2NCciPgogICAgIDxNaWRsPgogICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CkBAIC05OTMsNyArMTI4Niw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTEwMTEsNiArMTMwNCwzOCBAQAogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgorICAgICAgPEhlYWRlckZpbGVOYW1lPgorICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHO19DT05TT0xFO0RFQlVHQlVJTEQ7Q1VSTF9TVEFUSUNMSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsZC5saWI7d29sZnNzbC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEyXCQoQ29uZmlndXJhdGlvbik7Li5cLi5cLi5cLi5cLi5cd29sZnNzbFxidWlsZFxXaW42NFxWQzEyXExJQiBEZWJ1ZzslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8V2luMzInIj4KICAgICA8TWlkbD4KICAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KQEAgLTEwMjQsNyArMTM0OSwzOCBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybGQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMlwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyJyI+CisgICAgPE1pZGw+CisgICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CisgICAgICA8SGVhZGVyRmlsZU5hbWU+CisgICAgICA8L0hlYWRlckZpbGVOYW1lPgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7X0NPTlNPTEU7REVCVUdCVUlMRDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTA1Niw3ICsxNDEyLDM5IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsZC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEyXCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICAgIDxIZWFkZXJGaWxlTmFtZT4KKyAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRztfQ09OU09MRTtERUJVR0JVSUxEOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xMDg3LDcgKzE0NzUsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xMTE5LDcgKzE1MDcsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xMTUwLDcgKzE1MzgsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xMTgxLDcgKzE1NjksNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xMjEzLDcgKzE2MDEsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xMjQ1LDcgKzE2MzMsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xMjc3LDcgKzE2NjUsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTEzMDcsNyArMTY5NSw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTMzNiw3ICsxNzI0LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xMzY1LDcgKzE3NTMsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTEzOTUsNyArMTc4Myw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTQyNSw3ICsxODEzLDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xNDUzLDcgKzE4NDEsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xNDg1LDcgKzE4NzMsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xNTE3LDcgKzE5MDUsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTE1NDcsNyArMTkzNSw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTU3NSw3ICsxOTYzLDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTYwNyw3ICsxOTk1LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTYzOSw3ICsyMDI3LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xNjY5LDcgKzIwNTcsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTE2OTcsNyArMjA4NSw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTE3MjksNyArMjExNyw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTE3NjEsNyArMjE0OSw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTc5MSw3ICsyMTc5LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xODE5LDcgKzIyMDcsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xODUxLDcgKzIyMzksNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xODgzLDcgKzIyNzEsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTE5MTMsNyArMjMwMSw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTk0MSw3ICsyMzI5LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTk3Myw3ICsyMzYxLDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMjAwNSw3ICsyMzkzLDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0yMDM1LDcgKzI0MjMsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTIwNjMsNyArMjQ1MSw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTIwOTQsNyArMjQ4Miw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTIxMjYsNyArMjUxNCw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTIxNTgsNyArMjU0Niw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTIxOTAsNyArMjU3OCw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMjIxOSw3ICsyNjA3LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0yMjQ5LDcgKzI2MzcsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTIyNzksNyArMjY2Nyw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpkaWZmIC0tZ2l0IGEvcHJvamVjdHMvV2luZG93cy9WQzEyL3NyYy9jdXJsLnZjeHByb2ouZmlsdGVycyBiL3Byb2plY3RzL1dpbmRvd3MvVkMxMi9zcmMvY3VybC52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQ2MzQxZAotLS0gL2Rldi9udWxsCisrKyBiL3Byb2plY3RzL1dpbmRvd3MvVkMxMi9zcmMvY3VybC52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwxNyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmNwcDtjO2NjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214PC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns5Mzk5NTM4MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+aDtoaDtocHA7aHh4O2htO2lubDtpbmM7eHNkPC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iUmVzb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezY3REE2QUI2LUY4MDAtNGMwOC04QjdBLTgzQkIxMjFBQUQwMX08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5yYztpY287Y3VyO2JtcDtkbGc7cmMyO3JjdDtiaW47cmdzO2dpZjtqcGc7anBlZztqcGU7cmVzeDt0aWZmO3RpZjtwbmc7d2F2O21mY3JpYmJvbi1tczwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvcHJvamVjdHMvV2luZG93cy9WQzEyL3NyYy9jdXJsc3JjLnNsbiBiL3Byb2plY3RzL1dpbmRvd3MvVkMxMi9zcmMvY3VybHNyYy5zbG4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5MjY5OWMuLjAwMDAwMDAKLS0tIGEvcHJvamVjdHMvV2luZG93cy9WQzEyL3NyYy9jdXJsc3JjLnNsbgorKysgL2Rldi9udWxsCkBAIC0xLDE1NyArMCwwIEBACi1NaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyBTb2x1dGlvbiBGaWxlLCBGb3JtYXQgVmVyc2lvbiAxMi4wMAotIyBWaXN1YWwgU3R1ZGlvIDIwMTMKLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiY3VybHNyYyIsICJjdXJsc3JjLnZjeHByb2oiLCAiezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0iCi1FbmRQcm9qZWN0Ci1HbG9iYWwKLQlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uQ29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwcmVTb2x1dGlvbgotCQlETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyID0gRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgotCQlETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCA9IERMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0Ci0JCURMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyID0gRExMIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzIKLQkJRExMIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0ID0gRExMIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0Ci0JCURMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIKLQkJRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0ID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0Ci0JCURMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCi0JCURMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0ID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKLQkJRExMIERlYnVnfFdpbjMyID0gRExMIERlYnVnfFdpbjMyCi0JCURMTCBEZWJ1Z3x4NjQgPSBETEwgRGVidWd8eDY0Ci0JCURMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiA9IERMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgotCQlETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0ID0gRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NAotCQlETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyID0gRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMgotCQlETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NCA9IERMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0Ci0JCURMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyCi0JCURMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0ID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQKLQkJRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCi0JCURMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0Ci0JCURMTCBSZWxlYXNlfFdpbjMyID0gRExMIFJlbGVhc2V8V2luMzIKLQkJRExMIFJlbGVhc2V8eDY0ID0gRExMIFJlbGVhc2V8eDY0Ci0JCUxJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIgPSBMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCi0JCUxJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0ID0gTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQKLQkJTElCIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzIgPSBMSUIgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMgotCQlMSUIgRGVidWcgLSBETEwgT3BlblNTTHx4NjQgPSBMSUIgRGVidWcgLSBETEwgT3BlblNTTHx4NjQKLQkJTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIgPSBMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMgotCQlMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQgPSBMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQKLQkJTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiA9IExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKLQkJTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQgPSBMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NAotCQlMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMgotCQlMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0Ci0JCUxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzIKLQkJTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0ID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0Ci0JCUxJQiBEZWJ1Z3xXaW4zMiA9IExJQiBEZWJ1Z3xXaW4zMgotCQlMSUIgRGVidWd8eDY0ID0gTElCIERlYnVnfHg2NAotCQlMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIgPSBMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKLQkJTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCA9IExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQKLQkJTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMiA9IExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzIKLQkJTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQgPSBMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NAotCQlMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyID0gTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMgotCQlMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCA9IExJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0Ci0JCUxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiA9IExJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgotCQlMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0ID0gTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NAotCQlMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzIgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzIKLQkJTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQKLQkJTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMiA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzIKLQkJTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NAotCQlMSUIgUmVsZWFzZXxXaW4zMiA9IExJQiBSZWxlYXNlfFdpbjMyCi0JCUxJQiBSZWxlYXNlfHg2NCA9IExJQiBSZWxlYXNlfHg2NAotCUVuZEdsb2JhbFNlY3Rpb24KLQlHbG9iYWxTZWN0aW9uKFByb2plY3RDb25maWd1cmF0aW9uUGxhdGZvcm1zKSA9IHBvc3RTb2x1dGlvbgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMi5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NC5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NC5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzIuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzIuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NC5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgT3BlblNTTHx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0LkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgT3BlblNTTHx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NC5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0LkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMi5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBETEwgRGVidWd8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnfFdpbjMyLkJ1aWxkLjAgPSBETEwgRGVidWd8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnfHg2NC5BY3RpdmVDZmcgPSBETEwgRGVidWd8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1Z3x4NjQuQnVpbGQuMCA9IERMTCBEZWJ1Z3x4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0LkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NC5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMi5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NC5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NC5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMi5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMi5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyLkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NC5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2V8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IERMTCBSZWxlYXNlfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZXx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBETEwgUmVsZWFzZXx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyLkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBETEwgT3BlblNTTHx4NjQuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NC5CdWlsZC4wID0gTElCIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyLkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NC5CdWlsZC4wID0gTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyLkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NC5CdWlsZC4wID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzIuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0LkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBEZWJ1Z3xXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWd8V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1Z3xXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWd8eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1Z3x4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnfHg2NC5CdWlsZC4wID0gTElCIERlYnVnfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMi5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0LkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzIuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0LkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0LkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMi5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NC5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NC5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzIuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMi5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0LkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzIuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0LkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0LkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZXxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gTElCIFJlbGVhc2V8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZXx4NjQuQnVpbGQuMCA9IExJQiBSZWxlYXNlfHg2NAotCUVuZEdsb2JhbFNlY3Rpb24KLQlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uUHJvcGVydGllcykgPSBwcmVTb2x1dGlvbgotCQlIaWRlU29sdXRpb25Ob2RlID0gRkFMU0UKLQlFbmRHbG9iYWxTZWN0aW9uCi1FbmRHbG9iYWwKZGlmZiAtLWdpdCBhL3Byb2plY3RzL1dpbmRvd3MvVkMxNC8uZ2l0aWdub3JlIGIvcHJvamVjdHMvV2luZG93cy9WQzE0Ly5naXRpZ25vcmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTEyZDRlYQotLS0gL2Rldi9udWxsCisrKyBiL3Byb2plY3RzL1dpbmRvd3MvVkMxNC8uZ2l0aWdub3JlCkBAIC0wLDAgKzEsNSBAQAorLyoub3BlbmRiCisvKi5vcGVuc2RmCisvKi5zZGYKKy8qLnZjLmRiCisvLnZzCmRpZmYgLS1naXQgYS9wcm9qZWN0cy9XaW5kb3dzL1ZDMTQvY3VybC1hbGwuc2xuIGIvcHJvamVjdHMvV2luZG93cy9WQzE0L2N1cmwtYWxsLnNsbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNTgyMGUxCi0tLSAvZGV2L251bGwKKysrIGIvcHJvamVjdHMvV2luZG93cy9WQzE0L2N1cmwtYWxsLnNsbgpAQCAtMCwwICsxLDI5OCBAQAorTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gU29sdXRpb24gRmlsZSwgRm9ybWF0IFZlcnNpb24gMTIuMDAKKyMgVmlzdWFsIFN0dWRpbyAyMDE1CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImN1cmwiLCAic3JjXGN1cmwudmN4cHJvaiIsICJ7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfSIKKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9ID0ge0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0KKwlFbmRQcm9qZWN0U2VjdGlvbgorRW5kUHJvamVjdAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJsaWJjdXJsIiwgImxpYlxsaWJjdXJsLnZjeHByb2oiLCAie0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0iCitFbmRQcm9qZWN0CitHbG9iYWwKKwlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uQ29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwcmVTb2x1dGlvbgorCQlETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyID0gRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgorCQlETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCA9IERMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0CisJCURMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyID0gRExMIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzIKKwkJRExMIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0ID0gRExMIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0CisJCURMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIKKwkJRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0ID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0CisJCURMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCisJCURMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0ID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKKwkJRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMgorCQlETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQKKwkJRExMIERlYnVnfFdpbjMyID0gRExMIERlYnVnfFdpbjMyCisJCURMTCBEZWJ1Z3x4NjQgPSBETEwgRGVidWd8eDY0CisJCURMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiA9IERMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgorCQlETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0ID0gRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NAorCQlETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyID0gRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMgorCQlETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NCA9IERMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0CisJCURMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyCisJCURMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0ID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQKKwkJRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCisJCURMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CisJCURMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyCisJCURMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0ID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQKKwkJRExMIFJlbGVhc2V8V2luMzIgPSBETEwgUmVsZWFzZXxXaW4zMgorCQlETEwgUmVsZWFzZXx4NjQgPSBETEwgUmVsZWFzZXx4NjQKKwkJTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiA9IExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKKwkJTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQgPSBMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NAorCQlMSUIgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiA9IExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyCisJCUxJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NCA9IExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NAorCQlMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiA9IExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyCisJCUxJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCA9IExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAorCQlMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyID0gTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgorCQlMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NCA9IExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CisJCUxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzIgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyCisJCUxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0ID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQKKwkJTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzIgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMgorCQlMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQKKwkJTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMgorCQlMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQKKwkJTElCIERlYnVnfFdpbjMyID0gTElCIERlYnVnfFdpbjMyCisJCUxJQiBEZWJ1Z3x4NjQgPSBMSUIgRGVidWd8eDY0CisJCUxJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiA9IExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgorCQlMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0ID0gTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NAorCQlMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyID0gTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMgorCQlMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NCA9IExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0CisJCUxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIgPSBMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyCisJCUxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0ID0gTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQKKwkJTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyID0gTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCisJCUxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQgPSBMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CisJCUxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMiA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMgorCQlMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0ID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NAorCQlMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMgorCQlMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NCA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0CisJCUxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIgPSBMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyCisJCUxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0ID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQKKwkJTElCIFJlbGVhc2V8V2luMzIgPSBMSUIgUmVsZWFzZXxXaW4zMgorCQlMSUIgUmVsZWFzZXx4NjQgPSBMSUIgUmVsZWFzZXx4NjQKKwlFbmRHbG9iYWxTZWN0aW9uCisJR2xvYmFsU2VjdGlvbihQcm9qZWN0Q29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwb3N0U29sdXRpb24KKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMi5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyLkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgT3BlblNTTHx4NjQuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NC5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyLkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NC5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyLkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMi5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMi5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0LkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRExMIERlYnVnfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRExMIERlYnVnfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRExMIERlYnVnfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWd8eDY0LkJ1aWxkLjAgPSBETEwgRGVidWd8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMi5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyLkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NC5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMi5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzIuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyLkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0LkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0LkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMi5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyLkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0LkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0LkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZXxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gRExMIFJlbGVhc2V8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZXx4NjQuQnVpbGQuMCA9IERMTCBSZWxlYXNlfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NC5CdWlsZC4wID0gTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzIuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBETEwgT3BlblNTTHx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0LkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBETEwgT3BlblNTTHx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0LkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzIuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyLkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0LkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gTElCIERlYnVnfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1Z3xXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gTElCIERlYnVnfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWd8eDY0LkJ1aWxkLjAgPSBMSUIgRGVidWd8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzIuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0LkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0LkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMi5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzIuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0LkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0LkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZXxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gTElCIFJlbGVhc2V8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZXx4NjQuQnVpbGQuMCA9IExJQiBSZWxlYXNlfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMi5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NC5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NC5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzIuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzIuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NC5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgT3BlblNTTHx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0LkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgT3BlblNTTHx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NC5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0LkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMi5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyLkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NC5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBETEwgRGVidWd8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnfFdpbjMyLkJ1aWxkLjAgPSBETEwgRGVidWd8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnfHg2NC5BY3RpdmVDZmcgPSBETEwgRGVidWd8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1Z3x4NjQuQnVpbGQuMCA9IERMTCBEZWJ1Z3x4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0LkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NC5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMi5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NC5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NC5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMi5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMi5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyLkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NC5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMi5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBETEwgUmVsZWFzZXxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2V8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlfHg2NC5CdWlsZC4wID0gRExMIFJlbGVhc2V8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyLkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0LkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBETEwgT3BlblNTTHx4NjQuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NC5CdWlsZC4wID0gTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyLkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NC5CdWlsZC4wID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyLkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NC5CdWlsZC4wID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBMSUIgRGVidWd8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnfFdpbjMyLkJ1aWxkLjAgPSBMSUIgRGVidWd8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWd8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1Z3x4NjQuQnVpbGQuMCA9IExJQiBEZWJ1Z3x4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0LkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NC5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMi5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NC5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzIuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0LkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NC5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMi5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NC5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZXxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2V8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlfHg2NC5CdWlsZC4wID0gTElCIFJlbGVhc2V8eDY0CisJRW5kR2xvYmFsU2VjdGlvbgorCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Qcm9wZXJ0aWVzKSA9IHByZVNvbHV0aW9uCisJCUhpZGVTb2x1dGlvbk5vZGUgPSBGQUxTRQorCUVuZEdsb2JhbFNlY3Rpb24KK0VuZEdsb2JhbApkaWZmIC0tZ2l0IGEvcHJvamVjdHMvV2luZG93cy9WQzE0L2xpYi8uZ2l0aWdub3JlIGIvcHJvamVjdHMvV2luZG93cy9WQzE0L2xpYi8uZ2l0aWdub3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhYzE3MTAKLS0tIC9kZXYvbnVsbAorKysgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDMTQvbGliLy5naXRpZ25vcmUKQEAgLTAsMCArMSw2IEBACisvKi5vcGVuc2RmCisvKi5zZGYKKy8qLnVzZXIKKy8qLnZjLmRiCisvKi52Y3hwcm9qCisvLnZzCmRpZmYgLS1naXQgYS9wcm9qZWN0cy9XaW5kb3dzL1ZDMTQvbGliL2xpYmN1cmwuc2xuIGIvcHJvamVjdHMvV2luZG93cy9WQzE0L2xpYi9saWJjdXJsLnNsbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZDhhZmUyCi0tLSAvZGV2L251bGwKKysrIGIvcHJvamVjdHMvV2luZG93cy9WQzE0L2xpYi9saWJjdXJsLnNsbgpAQCAtMCwwICsxLDE4MSBAQAorTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gU29sdXRpb24gRmlsZSwgRm9ybWF0IFZlcnNpb24gMTIuMDAKKyMgVmlzdWFsIFN0dWRpbyAyMDE1CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImxpYmN1cmwiLCAibGliY3VybC52Y3hwcm9qIiwgIntEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9IgorRW5kUHJvamVjdAorR2xvYmFsCisJR2xvYmFsU2VjdGlvbihTb2x1dGlvbkNvbmZpZ3VyYXRpb25QbGF0Zm9ybXMpID0gcHJlU29sdXRpb24KKwkJRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiA9IERMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKKwkJRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQgPSBETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NAorCQlETEwgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiA9IERMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyCisJCURMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NCA9IERMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NAorCQlETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyCisJCURMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAorCQlETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgorCQlETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NCA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CisJCURMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0ID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0CisJCURMTCBEZWJ1Z3xXaW4zMiA9IERMTCBEZWJ1Z3xXaW4zMgorCQlETEwgRGVidWd8eDY0ID0gRExMIERlYnVnfHg2NAorCQlETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIgPSBETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKKwkJRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCA9IERMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQKKwkJRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMiA9IERMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzIKKwkJRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQgPSBETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NAorCQlETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMgorCQlETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0CisJCURMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgorCQlETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0ID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NAorCQlETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMgorCQlETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NCA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0CisJCURMTCBSZWxlYXNlfFdpbjMyID0gRExMIFJlbGVhc2V8V2luMzIKKwkJRExMIFJlbGVhc2V8eDY0ID0gRExMIFJlbGVhc2V8eDY0CisJCUxJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIgPSBMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCisJCUxJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0ID0gTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQKKwkJTElCIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzIgPSBMSUIgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMgorCQlMSUIgRGVidWcgLSBETEwgT3BlblNTTHx4NjQgPSBMSUIgRGVidWcgLSBETEwgT3BlblNTTHx4NjQKKwkJTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIgPSBMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMgorCQlMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQgPSBMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQKKwkJTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiA9IExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKKwkJTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQgPSBMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NAorCQlMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMgorCQlMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0CisJCUxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzIKKwkJTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0ID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0CisJCUxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0ID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0CisJCUxJQiBEZWJ1Z3xXaW4zMiA9IExJQiBEZWJ1Z3xXaW4zMgorCQlMSUIgRGVidWd8eDY0ID0gTElCIERlYnVnfHg2NAorCQlMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIgPSBMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKKwkJTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCA9IExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQKKwkJTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMiA9IExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzIKKwkJTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQgPSBMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NAorCQlMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyID0gTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMgorCQlMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCA9IExJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0CisJCUxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiA9IExJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgorCQlMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0ID0gTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NAorCQlMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzIgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzIKKwkJTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQKKwkJTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMiA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzIKKwkJTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NAorCQlMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMgorCQlMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NCA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0CisJCUxJQiBSZWxlYXNlfFdpbjMyID0gTElCIFJlbGVhc2V8V2luMzIKKwkJTElCIFJlbGVhc2V8eDY0ID0gTElCIFJlbGVhc2V8eDY0CisJRW5kR2xvYmFsU2VjdGlvbgorCUdsb2JhbFNlY3Rpb24oUHJvamVjdENvbmZpZ3VyYXRpb25QbGF0Zm9ybXMpID0gcG9zdFNvbHV0aW9uCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyLkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0LkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0LkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMi5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMi5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0LkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWcgLSBETEwgT3BlblNTTHx4NjQuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMi5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMi5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0LkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMi5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NC5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NC5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NC5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0LkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBEZWJ1Z3xXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWd8V2luMzIuQnVpbGQuMCA9IERMTCBEZWJ1Z3xXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERMTCBEZWJ1Z3x4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIERlYnVnfHg2NC5CdWlsZC4wID0gRExMIERlYnVnfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMi5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0LkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzIuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyLkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0LkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0LkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMi5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NC5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NC5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NC5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMi5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NC5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5ETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NC5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2V8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IERMTCBSZWxlYXNlfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkRMTCBSZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZXx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uRExMIFJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBETEwgUmVsZWFzZXx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyLkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBETEwgT3BlblNTTHx4NjQuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NC5CdWlsZC4wID0gTElCIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyLkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NC5CdWlsZC4wID0gTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyLkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NC5CdWlsZC4wID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzIuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0LkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0LkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBEZWJ1Z3xXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWd8V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1Z3xXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgRGVidWd8eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1Z3x4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIERlYnVnfHg2NC5CdWlsZC4wID0gTElCIERlYnVnfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMi5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0LkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzIuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0LkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0LkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMi5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NC5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NC5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzIuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMi5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0LkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzIuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0LkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0CisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0LkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMi5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMgorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NAorCQl7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfS5MSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NC5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2V8V2luMzIKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IExJQiBSZWxlYXNlfFdpbjMyCisJCXtEQTZGNTZCNC0wNkE0LTQ0MUQtQUQ3MC1BQzVBN0Q1MUZBREJ9LkxJQiBSZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZXx4NjQKKwkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0uTElCIFJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBMSUIgUmVsZWFzZXx4NjQKKwlFbmRHbG9iYWxTZWN0aW9uCisJR2xvYmFsU2VjdGlvbihTb2x1dGlvblByb3BlcnRpZXMpID0gcHJlU29sdXRpb24KKwkJSGlkZVNvbHV0aW9uTm9kZSA9IEZBTFNFCisJRW5kR2xvYmFsU2VjdGlvbgorRW5kR2xvYmFsCmRpZmYgLS1naXQgYS9wcm9qZWN0cy9XaW5kb3dzL1ZDMTAvc3JjL2N1cmxzcmMudG1wbCBiL3Byb2plY3RzL1dpbmRvd3MvVkMxNC9saWIvbGliY3VybC50bXBsCnNpbWlsYXJpdHkgaW5kZXggNjIlCmNvcHkgZnJvbSBwcm9qZWN0cy9XaW5kb3dzL1ZDMTAvc3JjL2N1cmxzcmMudG1wbApjb3B5IHRvIHByb2plY3RzL1dpbmRvd3MvVkMxNC9saWIvbGliY3VybC50bXBsCmluZGV4IGZlM2E5MzQuLmFkYTQ4ZTkgMTAwNjQ0Ci0tLSBhL3Byb2plY3RzL1dpbmRvd3MvVkMxMC9zcmMvY3VybHNyYy50bXBsCisrKyBiL3Byb2plY3RzL1dpbmRvd3MvVkMxNC9saWIvbGliY3VybC50bXBsCkBAIC0xLDYgKzEsMTQgQEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSIxNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KICAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RExMIERlYnVnIC0gRExMIHdvbGZTU0w8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5ETEwgRGVidWcgLSBETEwgd29sZlNTTDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CiAgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIiPgogICAgICAgPENvbmZpZ3VyYXRpb24+RExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMjwvQ29uZmlndXJhdGlvbj4KICAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CkBAIC00MSw2ICs0OSwxNCBAQAogICAgICAgPENvbmZpZ3VyYXRpb24+RExMIERlYnVnPC9Db25maWd1cmF0aW9uPgogICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CiAgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5ETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5ETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KICAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyIj4KICAgICAgIDxDb25maWd1cmF0aW9uPkRMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMjwvQ29uZmlndXJhdGlvbj4KICAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CkBAIC0xMTMsNiArMTI5LDE0IEBACiAgICAgICA8Q29uZmlndXJhdGlvbj5MSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJPC9Db25maWd1cmF0aW9uPgogICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CiAgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+TElCIERlYnVnIC0gTElCIHdvbGZTU0w8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5MSUIgRGVidWcgLSBMSUIgd29sZlNTTDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CiAgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzIiPgogICAgICAgPENvbmZpZ3VyYXRpb24+TElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMjwvQ29uZmlndXJhdGlvbj4KICAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CkBAIC0xNjksNiArMTkzLDE0IEBACiAgICAgICA8Q29uZmlndXJhdGlvbj5MSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEk8L0NvbmZpZ3VyYXRpb24+CiAgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KICAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0w8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0w8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgogICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzIiPgogICAgICAgPENvbmZpZ3VyYXRpb24+TElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyPC9Db25maWd1cmF0aW9uPgogICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KQEAgLTE5NSwyODkgKzIyNywzODUgQEAKICAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgogICA8L0l0ZW1Hcm91cD4KICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgotICAgIDxQcm9qZWN0R3VpZD57NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfTwvUHJvamVjdEd1aWQ+Ci0gICAgPFJvb3ROYW1lc3BhY2U+Y3VybHNyYzwvUm9vdE5hbWVzcGFjZT4KKyAgICA8UHJvamVjdEd1aWQ+e0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn08L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPmxpYmN1cmw8L1Jvb3ROYW1lc3BhY2U+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KICAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgIDwvSW1wb3J0R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgIDwvSW1wb3J0R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICA8L0ltcG9ydEdyb3VwPgogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICA8L0ltcG9ydEdyb3VwPgogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KQEAgLTQ5MCw2NiArNjE4LDc4IEBACiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICA8L0ltcG9ydEdyb3VwPgogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgIDwvSW1wb3J0R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICA8L0ltcG9ydEdyb3VwPgogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gIDwvSW1wb3J0R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KQEAgLTU2Miw3MjEgKzcwMiw5MTYgQEAKICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KICAgPFByb3BlcnR5R3JvdXA+CiAgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KLSAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8V2luMzInIj4kKE91dERpcilzcmNcPC9JbnREaXI+Ci0gICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgotICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXx4NjQnIj4kKE91dERpcilzcmNcPC9JbnREaXI+Ci0gICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgotICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXxXaW4zMiciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KLSAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+Ci0gICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfHg2NCciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KLSAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgotICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8V2luMzInIj4kKE91dERpcilzcmNcPC9JbnREaXI+Ci0gICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3xXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3x4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+Ci0gICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3x4NjQnIj4kKE91dERpcilzcmNcPC9JbnREaXI+Ci0gICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3x4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+Ci0gICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3xXaW4zMiciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfFdpbjMyJyI+JChPdXREaXIpbGliXDwvSW50RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMiciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KLSAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfHg2NCciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3x4NjQnIj4kKE91dERpcilsaWJcPC9JbnREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NCciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgotICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfFdpbjMyJyI+JChPdXREaXIpbGliXDwvSW50RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyJyI+JChPdXREaXIpbGliXDwvSW50RGlyPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXx4NjQnIj4kKE91dERpcilsaWJcPC9JbnREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0JyI+JChPdXREaXIpbGliXDwvSW50RGlyPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3xXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3xXaW4zMiciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzInIj4kKE91dERpcilsaWJcPC9JbnREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3x4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfHg2NCciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0JyI+JChPdXREaXIpbGliXDwvSW50RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8V2luMzInIj4kKE91dERpcilsaWJcPC9JbnREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzInIj4kKE91dERpcilsaWJcPC9JbnREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfHg2NCciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQnIj4kKE91dERpcilsaWJcPC9JbnREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTHx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+Ci0gICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NCciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTHx4NjQnIj4kKE91dERpcilsaWJcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgotICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgotICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMiciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NCciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIj4kKE91dERpcilsaWJcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+Ci0gICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgotICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj4kKE91dERpcilzcmNcPC9JbnREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+JChPdXREaXIpbGliXDwvSW50RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj4kKE91dERpcilsaWJcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KLSAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMiciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KLSAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgotICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NCciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KLSAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+Ci0gICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KLSAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIj4kKE91dERpcilsaWJcPC9JbnREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIj4kKE91dERpcilsaWJcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KLSAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NCciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KLSAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj4kKE91dERpcilzcmNcPC9JbnREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+JChPdXREaXIpbGliXDwvSW50RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KLSAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgotICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0JyI+JChPdXREaXIpbGliXDwvSW50RGlyPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KLSAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KLSAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgotICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMiciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KLSAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+Ci0gICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NCciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KLSAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KLSAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMiciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KLSAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgotICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NCciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KLSAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgotICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyJyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgotICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+Ci0gICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0JyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgotICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KLSAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyJyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgotICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgotICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0JyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgotICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+Ci0gICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyJyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgotICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KLSAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0JyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgotICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTHx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgotICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyJyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgotICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+Ci0gICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0JyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgotICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+Ci0gICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj4kKE91dERpcilzcmNcPC9JbnREaXI+Ci0gICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KLSAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIj4kKE91dERpcilzcmNcPC9JbnREaXI+Ci0gICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgotICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj4kKE91dERpcilzcmNcPC9JbnREaXI+Ci0gICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+Ci0gICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIj4kKE91dERpcilzcmNcPC9JbnREaXI+Ci0gICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KLSAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KLSAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIj4kKE91dERpcilzcmNcPC9JbnREaXI+Ci0gICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgotICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+Ci0gICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgotICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj4kKE91dERpcilzcmNcPC9JbnREaXI+Ci0gICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgotICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIj4kKE91dERpcilzcmNcPC9JbnREaXI+Ci0gICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIj4kKE91dERpcilzcmNcPC9JbnREaXI+Ci0gICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KLSAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NCciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KLSAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj4kKE91dERpcilzcmNcPC9JbnREaXI+Ci0gICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgotICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8V2luMzInIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3x4NjQnIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyJyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTHx4NjQnIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0JyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfFdpbjMyJyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8eDY0JyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0JyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyJyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQnIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzInIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0JyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMiciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXxXaW4zMiciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMiciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzInIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMiciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXxXaW4zMiciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0JyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0JyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8eDY0JyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQnIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NCciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0JyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0JyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfHg2NCciPmN1cmw8L1RhcmdldE5hbWU+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTHx4NjQnIj4kKE91dERpcilsaWJcPC9JbnREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj4kKE91dERpcilsaWJcPC9JbnREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIj4kKE91dERpcilsaWJcPC9JbnREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyI+JChPdXREaXIpbGliXDwvSW50RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NCciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+JChPdXREaXIpbGliXDwvSW50RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzInIj4kKE91dERpcilsaWJcPC9JbnREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0JyI+JChPdXREaXIpbGliXDwvSW50RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyJyI+JChPdXREaXIpbGliXDwvSW50RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQnIj4kKE91dERpcilsaWJcPC9JbnREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzInIj4kKE91dERpcilsaWJcPC9JbnREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NCciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj4kKE91dERpcilsaWJcPC9JbnREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIj4kKE91dERpcilsaWJcPC9JbnREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyI+JChPdXREaXIpbGliXDwvSW50RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyI+JChPdXREaXIpbGliXDwvSW50RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NCciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj4kKE91dERpcilsaWJcPC9JbnREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzInIj4kKE91dERpcilsaWJcPC9JbnREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NCciPiQoT3V0RGlyKWxpYlw8L0ludERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzInIj4kKE91dERpcilsaWJcPC9JbnREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQnIj4kKE91dERpcilsaWJcPC9JbnREaXI+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3x4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTHx4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgogICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8V2luMzInIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KLSAgICAgIDxIZWFkZXJGaWxlTmFtZT4KLSAgICAgIDwvSGVhZGVyRmlsZU5hbWU+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxSZXNvdXJjZUNvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICA8L1Jlc291cmNlQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+Ci0gICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgotICAgICAgPEhlYWRlckZpbGVOYW1lPgotICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFJlc291cmNlQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvUmVzb3VyY2VDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfFdpbjMyJyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+Ci0gICAgICA8SGVhZGVyRmlsZU5hbWU+Ci0gICAgICA8L0hlYWRlckZpbGVOYW1lPgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRztfQ09OU09MRTtDVVJMX1NUQVRJQ0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8UmVzb3VyY2VDb21waWxlPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9SZXNvdXJjZUNvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmwubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KLSAgICAgIDxIZWFkZXJGaWxlTmFtZT4KLSAgICAgIDwvSGVhZGVyRmlsZU5hbWU+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHO19DT05TT0xFO0NVUkxfU1RBVElDTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxSZXNvdXJjZUNvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICA8L1Jlc291cmNlQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+Ci0gICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8V2luMzInIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KLSAgICAgIDxIZWFkZXJGaWxlTmFtZT4KLSAgICAgIDwvSGVhZGVyRmlsZU5hbWU+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRztfQ09OU09MRTtERUJVR0JVSUxEO0NVUkxfU1RBVElDTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KLSAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgotICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgotICAgIDwvQ2xDb21waWxlPgotICAgIDxSZXNvdXJjZUNvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICA8L1Jlc291cmNlQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybGQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Ci0gICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KLSAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3x4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgotICAgICAgPEhlYWRlckZpbGVOYW1lPgotICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHO19DT05TT0xFO0RFQlVHQlVJTEQ7Q1VSTF9TVEFUSUNMSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgotICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+Ci0gICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFJlc291cmNlQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvUmVzb3VyY2VDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsZC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+Ci0gICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KLSAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgotICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfFdpbjMyJyI+CiAgICAgPE1pZGw+Ci0gICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNa1R5cExpYkNvbXBhdGlibGU+dHJ1ZTwvTWtUeXBMaWJDb21wYXRpYmxlPgorICAgICAgPFRhcmdldEVudmlyb25tZW50PldpbjMyPC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChPdXREaXIpJChQcm9qZWN0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CiAgICAgICA8SGVhZGVyRmlsZU5hbWU+CiAgICAgICA8L0hlYWRlckZpbGVOYW1lPgogICAgIDwvTWlkbD4KICAgICA8Q2xDb21waWxlPgogICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgogICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7X0NPTlNPTEU7REVCVUdCVUlMRDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHO0JVSUxESU5HX0xJQkNVUkw7REVCVUdCVUlMRDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgogICAgIDwvUmVzb3VyY2VDb21waWxlPgogICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsZC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KICAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+Ci0gICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8TWFuaWZlc3RGaWxlPiQoSW50RGlyKSQoVGFyZ2V0RmlsZU5hbWUpLmludGVybWVkaWF0ZS5tYW5pZmVzdDwvTWFuaWZlc3RGaWxlPgogICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CiAgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPEltcG9ydExpYnJhcnk+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5saWI8L0ltcG9ydExpYnJhcnk+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyJyI+CisgICAgPE1pZGw+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNa1R5cExpYkNvbXBhdGlibGU+dHJ1ZTwvTWtUeXBMaWJDb21wYXRpYmxlPgorICAgICAgPFRhcmdldEVudmlyb25tZW50PldpbjMyPC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChPdXREaXIpJChQcm9qZWN0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CisgICAgICA8SGVhZGVyRmlsZU5hbWU+CisgICAgICA8L0hlYWRlckZpbGVOYW1lPgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7Li5cLi5cLi5cLi5cLi5cd29sZnNzbDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRztCVUlMRElOR19MSUJDVVJMO0RFQlVHQlVJTEQ7VVNFX0NZQVNTTDtIQVZFX0NZQVNTTF9PUFRJT05TX0g7SEFWRV9DWUFTU0xfRVJST1JfU1NMX0g7V09MRlNTTF9ETEw7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjt3b2xmc3NsLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXC4uXHdvbGZzc2xcYnVpbGRcV2luMzJcVkMxNFxETEwgRGVidWc7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxNYW5pZmVzdEZpbGU+JChJbnREaXIpJChUYXJnZXRGaWxlTmFtZSkuaW50ZXJtZWRpYXRlLm1hbmlmZXN0PC9NYW5pZmVzdEZpbGU+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgorICAgICAgPEltcG9ydExpYnJhcnk+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5saWI8L0ltcG9ydExpYnJhcnk+CiAgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3x4NjQnIj4KICAgICA8TWlkbD4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1rVHlwTGliQ29tcGF0aWJsZT50cnVlPC9Na1R5cExpYkNvbXBhdGlibGU+CiAgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChPdXREaXIpJChQcm9qZWN0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CiAgICAgICA8SGVhZGVyRmlsZU5hbWU+CiAgICAgICA8L0hlYWRlckZpbGVOYW1lPgogICAgIDwvTWlkbD4KICAgICA8Q2xDb21waWxlPgogICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgogICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7X0NPTlNPTEU7REVCVUdCVUlMRDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHO0JVSUxESU5HX0xJQkNVUkw7REVCVUdCVUlMRDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgogICAgIDwvUmVzb3VyY2VDb21waWxlPgogICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsZC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KICAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+Ci0gICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CiAgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KICAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8SW1wb3J0TGlicmFyeT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLmxpYjwvSW1wb3J0TGlicmFyeT4KICAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzInIj4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQnIj4KICAgICA8TWlkbD4KLSAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1rVHlwTGliQ29tcGF0aWJsZT50cnVlPC9Na1R5cExpYkNvbXBhdGlibGU+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChPdXREaXIpJChQcm9qZWN0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CiAgICAgICA8SGVhZGVyRmlsZU5hbWU+CiAgICAgICA8L0hlYWRlckZpbGVOYW1lPgogICAgIDwvTWlkbD4KICAgICA8Q2xDb21waWxlPgogICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7X0NPTlNPTEU7REVCVUdCVUlMRDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjsuLlwuLlwuLlwuLlwuLlx3b2xmc3NsOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHO0JVSUxESU5HX0xJQkNVUkw7REVCVUdCVUlMRDtVU0VfQ1lBU1NMO0hBVkVfQ1lBU1NMX09QVElPTlNfSDtIQVZFX0NZQVNTTF9FUlJPUl9TU0xfSDtXT0xGU1NMX0RMTDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgogICAgIDwvUmVzb3VyY2VDb21waWxlPgogICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsZC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7d29sZnNzbC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KICAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+Ci0gICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXC4uXHdvbGZzc2xcYnVpbGRcV2luNjRcVkMxNFxETEwgRGVidWc7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KICAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgogICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxJbXBvcnRMaWJyYXJ5PiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkubGliPC9JbXBvcnRMaWJyYXJ5PgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXxXaW4zMiciPgorICAgIDxNaWRsPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWtUeXBMaWJDb21wYXRpYmxlPnRydWU8L01rVHlwTGliQ29tcGF0aWJsZT4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5XaW4zMjwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgorICAgICAgPEhlYWRlckZpbGVOYW1lPgorICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7QlVJTERJTkdfTElCQ1VSTDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxNYW5pZmVzdEZpbGU+JChJbnREaXIpJChUYXJnZXRGaWxlTmFtZSkuaW50ZXJtZWRpYXRlLm1hbmlmZXN0PC9NYW5pZmVzdEZpbGU+CisgICAgICA8SW1wb3J0TGlicmFyeT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLmxpYjwvSW1wb3J0TGlicmFyeT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMiciPgorICAgIDxNaWRsPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWtUeXBMaWJDb21wYXRpYmxlPnRydWU8L01rVHlwTGliQ29tcGF0aWJsZT4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5XaW4zMjwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgorICAgICAgPEhlYWRlckZpbGVOYW1lPgorICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7Li5cLi5cLi5cLi5cLi5cd29sZnNzbDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRztCVUlMRElOR19MSUJDVVJMO1VTRV9DWUFTU0w7SEFWRV9DWUFTU0xfT1BUSU9OU19IO0hBVkVfQ1lBU1NMX0VSUk9SX1NTTF9IO1dPTEZTU0xfRExMOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7d29sZnNzbC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlwuLlx3b2xmc3NsXGJ1aWxkXFdpbjMyXFZDMTRcRExMIFJlbGVhc2U7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxNYW5pZmVzdEZpbGU+JChJbnREaXIpJChUYXJnZXRGaWxlTmFtZSkuaW50ZXJtZWRpYXRlLm1hbmlmZXN0PC9NYW5pZmVzdEZpbGU+CisgICAgICA8SW1wb3J0TGlicmFyeT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLmxpYjwvSW1wb3J0TGlicmFyeT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWtUeXBMaWJDb21wYXRpYmxlPnRydWU8L01rVHlwTGliQ29tcGF0aWJsZT4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKE91dERpcikkKFByb2plY3ROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICAgIDxIZWFkZXJGaWxlTmFtZT4KKyAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHO0JVSUxESU5HX0xJQkNVUkw7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8SW1wb3J0TGlicmFyeT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLmxpYjwvSW1wb3J0TGlicmFyeT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1rVHlwTGliQ29tcGF0aWJsZT50cnVlPC9Na1R5cExpYkNvbXBhdGlibGU+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChPdXREaXIpJChQcm9qZWN0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CisgICAgICA8SGVhZGVyRmlsZU5hbWU+CisgICAgICA8L0hlYWRlckZpbGVOYW1lPgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjsuLlwuLlwuLlwuLlwuLlx3b2xmc3NsOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHO0JVSUxESU5HX0xJQkNVUkw7VVNFX0NZQVNTTDtIQVZFX0NZQVNTTF9PUFRJT05TX0g7SEFWRV9DWUFTU0xfRVJST1JfU1NMX0g7V09MRlNTTF9ETEw7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjt3b2xmc3NsLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXC4uXHdvbGZzc2xcYnVpbGRcV2luNjRcVkMxNFxETEwgUmVsZWFzZTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPEltcG9ydExpYnJhcnk+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5saWI8L0ltcG9ydExpYnJhcnk+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7QlVJTERJTkdfTElCQ1VSTDtERUJVR0JVSUxEO0NVUkxfU1RBVElDTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGliPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaWI+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjsuLlwuLlwuLlwuLlwuLlx3b2xmc3NsOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHO0JVSUxESU5HX0xJQkNVUkw7REVCVUdCVUlMRDtDVVJMX1NUQVRJQ0xJQjtVU0VfQ1lBU1NMO0hBVkVfQ1lBU1NMX09QVElPTlNfSDtIQVZFX0NZQVNTTF9FUlJPUl9TU0xfSDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpYj4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGliPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRztCVUlMRElOR19MSUJDVVJMO0RFQlVHQlVJTEQ7Q1VSTF9TVEFUSUNMSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaWI+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpYj4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjsuLlwuLlwuLlwuLlwuLlx3b2xmc3NsOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHO0JVSUxESU5HX0xJQkNVUkw7REVCVUdCVUlMRDtDVVJMX1NUQVRJQ0xJQjtVU0VfQ1lBU1NMO0hBVkVfQ1lBU1NMX09QVElPTlNfSDtIQVZFX0NZQVNTTF9FUlJPUl9TU0xfSDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpYj4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGliPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRztCVUlMRElOR19MSUJDVVJMO0NVUkxfU1RBVElDTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGliPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaWI+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7Li5cLi5cLi5cLi5cLi5cd29sZnNzbDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRztCVUlMRElOR19MSUJDVVJMO0NVUkxfU1RBVElDTElCO1VTRV9DWUFTU0w7SEFWRV9DWUFTU0xfT1BUSU9OU19IO0hBVkVfQ1lBU1NMX0VSUk9SX1NTTF9IOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGliPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaWI+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRztCVUlMRElOR19MSUJDVVJMO0NVUkxfU1RBVElDTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGliPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaWI+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOy4uXC4uXC4uXC4uXC4uXHdvbGZzc2w7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7QlVJTERJTkdfTElCQ1VSTDtDVVJMX1NUQVRJQ0xJQjtVU0VfQ1lBU1NMO0hBVkVfQ1lBU1NMX09QVElPTlNfSDtIQVZFX0NZQVNTTF9FUlJPUl9TU0xfSDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpYj4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGliPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzInIj4KKyAgICA8TWlkbD4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1rVHlwTGliQ29tcGF0aWJsZT50cnVlPC9Na1R5cExpYkNvbXBhdGlibGU+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+V2luMzI8L1RhcmdldEVudmlyb25tZW50PgorICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKE91dERpcikkKFByb2plY3ROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICAgIDxIZWFkZXJGaWxlTmFtZT4KKyAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGluYzMyOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHO0JVSUxESU5HX0xJQkNVUkw7REVCVUdCVUlMRDtVU0VfT1BFTlNTTDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmVheTMyLmxpYjtzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjMyXFZDMTRcRExMIERlYnVnOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8TWFuaWZlc3RGaWxlPiQoSW50RGlyKSQoVGFyZ2V0RmlsZU5hbWUpLmludGVybWVkaWF0ZS5tYW5pZmVzdDwvTWFuaWZlc3RGaWxlPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KKyAgICAgIDxJbXBvcnRMaWJyYXJ5PiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkubGliPC9JbXBvcnRMaWJyYXJ5PgogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTHx4NjQnIj4KICAgICA8TWlkbD4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1rVHlwTGliQ29tcGF0aWJsZT50cnVlPC9Na1R5cExpYkNvbXBhdGlibGU+CiAgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChPdXREaXIpJChQcm9qZWN0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CiAgICAgICA8SGVhZGVyRmlsZU5hbWU+CiAgICAgICA8L0hlYWRlckZpbGVOYW1lPgogICAgIDwvTWlkbD4KICAgICA8Q2xDb21waWxlPgogICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7X0NPTlNPTEU7REVCVUdCVUlMRDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGluYzMyOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHO0JVSUxESU5HX0xJQkNVUkw7REVCVUdCVUlMRDtVU0VfT1BFTlNTTDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgogICAgIDwvUmVzb3VyY2VDb21waWxlPgogICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsZC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliZWF5MzIubGliO3NzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW42NFxWQzE0XERMTCBEZWJ1ZzslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgogICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CiAgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+Ci0gICAgICA8SGVhZGVyRmlsZU5hbWU+Ci0gICAgICA8L0hlYWRlckZpbGVOYW1lPgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7X0NPTlNPTEU7REVCVUdCVUlMRDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+Ci0gICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KLSAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8UmVzb3VyY2VDb21waWxlPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9SZXNvdXJjZUNvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmxkLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgotICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+Ci0gICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciPgotICAgIDxNaWRsPgotICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgotICAgICAgPEhlYWRlckZpbGVOYW1lPgotICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHO19DT05TT0xFO0RFQlVHQlVJTEQ7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgotICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+Ci0gICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFJlc291cmNlQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvUmVzb3VyY2VDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsZC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+Ci0gICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KLSAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgotICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgotICAgICAgPEhlYWRlckZpbGVOYW1lPgotICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHO19DT05TT0xFO0RFQlVHQlVJTEQ7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgotICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+Ci0gICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFJlc291cmNlQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvUmVzb3VyY2VDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsZC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+Ci0gICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KLSAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgotICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KLSAgICAgIDxIZWFkZXJGaWxlTmFtZT4KLSAgICAgIDwvSGVhZGVyRmlsZU5hbWU+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRztfQ09OU09MRTtERUJVR0JVSUxEOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KLSAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgotICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgotICAgIDwvQ2xDb21waWxlPgotICAgIDxSZXNvdXJjZUNvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICA8L1Jlc291cmNlQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybGQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Ci0gICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KLSAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8SW1wb3J0TGlicmFyeT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLmxpYjwvSW1wb3J0TGlicmFyeT4KICAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMiciPgogICAgIDxNaWRsPgotICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWtUeXBMaWJDb21wYXRpYmxlPnRydWU8L01rVHlwTGliQ29tcGF0aWJsZT4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5XaW4zMjwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgogICAgICAgPEhlYWRlckZpbGVOYW1lPgogICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KICAgICA8L01pZGw+CiAgICAgPENsQ29tcGlsZT4KICAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KICAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxpbmMzMjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRztCVUlMRElOR19MSUJDVVJMO1VTRV9PUEVOU1NMOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CiAgICAgPC9SZXNvdXJjZUNvbXBpbGU+CiAgICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmwubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmVheTMyLmxpYjtzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KICAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+Ci0gICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW4zMlxWQzE0XERMTCBSZWxlYXNlOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8TWFuaWZlc3RGaWxlPiQoSW50RGlyKSQoVGFyZ2V0RmlsZU5hbWUpLmludGVybWVkaWF0ZS5tYW5pZmVzdDwvTWFuaWZlc3RGaWxlPgorICAgICAgPEltcG9ydExpYnJhcnk+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5saWI8L0ltcG9ydExpYnJhcnk+CiAgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0JyI+CiAgICAgPE1pZGw+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNa1R5cExpYkNvbXBhdGlibGU+dHJ1ZTwvTWtUeXBMaWJDb21wYXRpYmxlPgogICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CisgICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgogICAgICAgPEhlYWRlckZpbGVOYW1lPgogICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KICAgICA8L01pZGw+CiAgICAgPENsQ29tcGlsZT4KICAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KICAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxpbmMzMjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRztCVUlMRElOR19MSUJDVVJMO1VTRV9PUEVOU1NMOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CiAgICAgPC9SZXNvdXJjZUNvbXBpbGU+CiAgICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmwubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmVheTMyLmxpYjtzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KICAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+Ci0gICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW42NFxWQzE0XERMTCBSZWxlYXNlOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8SW1wb3J0TGlicmFyeT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLmxpYjwvSW1wb3J0TGlicmFyeT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciPgorICAgIDxNaWRsPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWtUeXBMaWJDb21wYXRpYmxlPnRydWU8L01rVHlwTGliQ29tcGF0aWJsZT4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5XaW4zMjwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgorICAgICAgPEhlYWRlckZpbGVOYW1lPgorICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHO0JVSUxESU5HX0xJQkNVUkw7REVCVUdCVUlMRDtVU0VfV0lORE9XU19TU1BJO1VTRV9TQ0hBTk5FTDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxNYW5pZmVzdEZpbGU+JChJbnREaXIpJChUYXJnZXRGaWxlTmFtZSkuaW50ZXJtZWRpYXRlLm1hbmlmZXN0PC9NYW5pZmVzdEZpbGU+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgorICAgICAgPEltcG9ydExpYnJhcnk+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5saWI8L0ltcG9ydExpYnJhcnk+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyI+CisgICAgPE1pZGw+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNa1R5cExpYkNvbXBhdGlibGU+dHJ1ZTwvTWtUeXBMaWJDb21wYXRpYmxlPgorICAgICAgPFRhcmdldEVudmlyb25tZW50PldpbjMyPC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChPdXREaXIpJChQcm9qZWN0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CisgICAgICA8SGVhZGVyRmlsZU5hbWU+CisgICAgICA8L0hlYWRlckZpbGVOYW1lPgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7QlVJTERJTkdfTElCQ1VSTDtERUJVR0JVSUxEO1VTRV9XSU5ET1dTX1NTUEk7VVNFX1NDSEFOTkVMO1VTRV9XSU4zMl9JRE47V0FOVF9JRE5fUFJPVE9UWVBFUzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO25vcm1hbGl6LmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8TWFuaWZlc3RGaWxlPiQoSW50RGlyKSQoVGFyZ2V0RmlsZU5hbWUpLmludGVybWVkaWF0ZS5tYW5pZmVzdDwvTWFuaWZlc3RGaWxlPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KKyAgICAgIDxJbXBvcnRMaWJyYXJ5PiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkubGliPC9JbXBvcnRMaWJyYXJ5PgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWtUeXBMaWJDb21wYXRpYmxlPnRydWU8L01rVHlwTGliQ29tcGF0aWJsZT4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKE91dERpcikkKFByb2plY3ROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICAgIDxIZWFkZXJGaWxlTmFtZT4KKyAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRztCVUlMRElOR19MSUJDVVJMO0RFQlVHQlVJTEQ7VVNFX1dJTkRPV1NfU1NQSTtVU0VfU0NIQU5ORUw7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgorICAgICAgPEltcG9ydExpYnJhcnk+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5saWI8L0ltcG9ydExpYnJhcnk+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWtUeXBMaWJDb21wYXRpYmxlPnRydWU8L01rVHlwTGliQ29tcGF0aWJsZT4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKE91dERpcikkKFByb2plY3ROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICAgIDxIZWFkZXJGaWxlTmFtZT4KKyAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRztCVUlMRElOR19MSUJDVVJMO0RFQlVHQlVJTEQ7VVNFX1dJTkRPV1NfU1NQSTtVU0VfU0NIQU5ORUw7VVNFX1dJTjMyX0lETjtXQU5UX0lETl9QUk9UT1RZUEVTOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bm9ybWFsaXoubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgICA8SW1wb3J0TGlicmFyeT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLmxpYjwvSW1wb3J0TGlicmFyeT4KICAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyI+CiAgICAgPE1pZGw+Ci0gICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNa1R5cExpYkNvbXBhdGlibGU+dHJ1ZTwvTWtUeXBMaWJDb21wYXRpYmxlPgorICAgICAgPFRhcmdldEVudmlyb25tZW50PldpbjMyPC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChPdXREaXIpJChQcm9qZWN0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CiAgICAgICA8SGVhZGVyRmlsZU5hbWU+CiAgICAgICA8L0hlYWRlckZpbGVOYW1lPgogICAgIDwvTWlkbD4KQEAgLTEyODQsMjggKzE2MTksMzEgQEAKICAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KICAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgogICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRztCVUlMRElOR19MSUJDVVJMO1VTRV9XSU5ET1dTX1NTUEk7VVNFX1NDSEFOTkVMOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CiAgICAgPC9SZXNvdXJjZUNvbXBpbGU+CiAgICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmwubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8TWFuaWZlc3RGaWxlPiQoSW50RGlyKSQoVGFyZ2V0RmlsZU5hbWUpLmludGVybWVkaWF0ZS5tYW5pZmVzdDwvTWFuaWZlc3RGaWxlPgorICAgICAgPEltcG9ydExpYnJhcnk+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5saWI8L0ltcG9ydExpYnJhcnk+CiAgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIj4KICAgICA8TWlkbD4KLSAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1rVHlwTGliQ29tcGF0aWJsZT50cnVlPC9Na1R5cExpYkNvbXBhdGlibGU+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+V2luMzI8L1RhcmdldEVudmlyb25tZW50PgorICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKE91dERpcikkKFByb2plY3ROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KICAgICAgIDxIZWFkZXJGaWxlTmFtZT4KICAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CiAgICAgPC9NaWRsPgpAQCAtMTMxMywyOSArMTY1MSwzMSBAQAogICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgogICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CiAgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHO0JVSUxESU5HX0xJQkNVUkw7VVNFX1dJTkRPV1NfU1NQSTtVU0VfU0NIQU5ORUw7VVNFX1dJTjMyX0lETjtXQU5UX0lETl9QUk9UT1RZUEVTOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CiAgICAgPC9SZXNvdXJjZUNvbXBpbGU+CiAgICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmwubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO25vcm1hbGl6LmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPE1hbmlmZXN0RmlsZT4kKEludERpcikkKFRhcmdldEZpbGVOYW1lKS5pbnRlcm1lZGlhdGUubWFuaWZlc3Q8L01hbmlmZXN0RmlsZT4KKyAgICAgIDxJbXBvcnRMaWJyYXJ5PiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkubGliPC9JbXBvcnRMaWJyYXJ5PgogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+CiAgICAgPE1pZGw+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNa1R5cExpYkNvbXBhdGlibGU+dHJ1ZTwvTWtUeXBMaWJDb21wYXRpYmxlPgogICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CisgICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgogICAgICAgPEhlYWRlckZpbGVOYW1lPgogICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KICAgICA8L01pZGw+CkBAIC0xMzQzLDI5ICsxNjgzLDMwIEBACiAgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CiAgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KICAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7QlVJTERJTkdfTElCQ1VSTDtVU0VfV0lORE9XU19TU1BJO1VTRV9TQ0hBTk5FTDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgogICAgIDwvUmVzb3VyY2VDb21waWxlPgogICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPEltcG9ydExpYnJhcnk+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5saWI8L0ltcG9ydExpYnJhcnk+CiAgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+CiAgICAgPE1pZGw+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNa1R5cExpYkNvbXBhdGlibGU+dHJ1ZTwvTWtUeXBMaWJDb21wYXRpYmxlPgogICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CisgICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgogICAgICAgPEhlYWRlckZpbGVOYW1lPgogICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KICAgICA8L01pZGw+CkBAIC0xMzczLDg4OSArMTcxNCw2ODIgQEAKICAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KICAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgogICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRztCVUlMRElOR19MSUJDVVJMO1VTRV9XSU5ET1dTX1NTUEk7VVNFX1NDSEFOTkVMO1VTRV9XSU4zMl9JRE47V0FOVF9JRE5fUFJPVE9UWVBFUzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgogICAgIDwvUmVzb3VyY2VDb21waWxlPgogICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtub3JtYWxpei5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KICAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+Ci0gICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxJbXBvcnRMaWJyYXJ5PiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkubGliPC9JbXBvcnRMaWJyYXJ5PgogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyI+CiAgICAgPE1pZGw+Ci0gICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNa1R5cExpYkNvbXBhdGlibGU+dHJ1ZTwvTWtUeXBMaWJDb21wYXRpYmxlPgorICAgICAgPFRhcmdldEVudmlyb25tZW50PldpbjMyPC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChPdXREaXIpJChQcm9qZWN0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CiAgICAgICA8SGVhZGVyRmlsZU5hbWU+CiAgICAgICA8L0hlYWRlckZpbGVOYW1lPgogICAgIDwvTWlkbD4KICAgICA8Q2xDb21waWxlPgogICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7X0NPTlNPTEU7REVCVUdCVUlMRDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGluYzMyOy4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRztCVUlMRElOR19MSUJDVVJMO0RFQlVHQlVJTEQ7VVNFX09QRU5TU0w7VVNFX0xJQlNTSDI7SEFWRV9MSUJTU0gyX0g7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KICAgICA8L1Jlc291cmNlQ29tcGlsZT4KICAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybGQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmVheTMyLmxpYjtzc2xlYXkzMi5saWI7bGlic3NoMmQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjMyXFZDMTRcRExMIERlYnVnOy4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcYnVpbGRcV2luMzJcVkMxNFxETEwgRGVidWc7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxNYW5pZmVzdEZpbGU+JChJbnREaXIpJChUYXJnZXRGaWxlTmFtZSkuaW50ZXJtZWRpYXRlLm1hbmlmZXN0PC9NYW5pZmVzdEZpbGU+CiAgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KICAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8SW1wb3J0TGlicmFyeT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLmxpYjwvSW1wb3J0TGlicmFyeT4KICAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIj4KICAgICA8TWlkbD4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1rVHlwTGliQ29tcGF0aWJsZT50cnVlPC9Na1R5cExpYkNvbXBhdGlibGU+CiAgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChPdXREaXIpJChQcm9qZWN0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CiAgICAgICA8SGVhZGVyRmlsZU5hbWU+CiAgICAgICA8L0hlYWRlckZpbGVOYW1lPgogICAgIDwvTWlkbD4KICAgICA8Q2xDb21waWxlPgogICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7X0NPTlNPTEU7REVCVUdCVUlMRDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGluYzMyOy4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRztCVUlMRElOR19MSUJDVVJMO0RFQlVHQlVJTEQ7VVNFX09QRU5TU0w7VVNFX0xJQlNTSDI7SEFWRV9MSUJTU0gyX0g7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KICAgICA8L1Jlc291cmNlQ29tcGlsZT4KICAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybGQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmVheTMyLmxpYjtzc2xlYXkzMi5saWI7bGlic3NoMmQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjY0XFZDMTRcRExMIERlYnVnOy4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcYnVpbGRcV2luNjRcVkMxNFxETEwgRGVidWc7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KICAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgogICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxJbXBvcnRMaWJyYXJ5PiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkubGliPC9JbXBvcnRMaWJyYXJ5PgogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj4KICAgICA8TWlkbD4KLSAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1rVHlwTGliQ29tcGF0aWJsZT50cnVlPC9Na1R5cExpYkNvbXBhdGlibGU+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+V2luMzI8L1RhcmdldEVudmlyb25tZW50PgorICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKE91dERpcikkKFByb2plY3ROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KICAgICAgIDxIZWFkZXJGaWxlTmFtZT4KICAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CiAgICAgPC9NaWRsPgogICAgIDxDbENvbXBpbGU+CiAgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CiAgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcaW5jMzI7Li5cLi5cLi5cLi5cLi5cbGlic3NoMlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHO0JVSUxESU5HX0xJQkNVUkw7VVNFX09QRU5TU0w7VVNFX0xJQlNTSDI7SEFWRV9MSUJTU0gyX0g7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KICAgICA8L1Jlc291cmNlQ29tcGlsZT4KICAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliZWF5MzIubGliO3NzbGVheTMyLmxpYjtsaWJzc2gyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjMyXFZDMTRcRExMIFJlbGVhc2U7Li5cLi5cLi5cLi5cLi5cbGlic3NoMlxidWlsZFxXaW4zMlxWQzE0XERMTCBSZWxlYXNlOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8TWFuaWZlc3RGaWxlPiQoSW50RGlyKSQoVGFyZ2V0RmlsZU5hbWUpLmludGVybWVkaWF0ZS5tYW5pZmVzdDwvTWFuaWZlc3RGaWxlPgorICAgICAgPEltcG9ydExpYnJhcnk+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5saWI8L0ltcG9ydExpYnJhcnk+CiAgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIj4KICAgICA8TWlkbD4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1rVHlwTGliQ29tcGF0aWJsZT50cnVlPC9Na1R5cExpYkNvbXBhdGlibGU+CiAgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChPdXREaXIpJChQcm9qZWN0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CiAgICAgICA8SGVhZGVyRmlsZU5hbWU+CiAgICAgICA8L0hlYWRlckZpbGVOYW1lPgogICAgIDwvTWlkbD4KICAgICA8Q2xDb21waWxlPgogICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgogICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGluYzMyOy4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRztCVUlMRElOR19MSUJDVVJMO1VTRV9PUEVOU1NMO1VTRV9MSUJTU0gyO0hBVkVfTElCU1NIMl9IOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CiAgICAgPC9SZXNvdXJjZUNvbXBpbGU+CiAgICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmwubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmVheTMyLmxpYjtzc2xlYXkzMi5saWI7bGlic3NoMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KICAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+Ci0gICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMiciPgotICAgIDxNaWRsPgotICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgotICAgICAgPEhlYWRlckZpbGVOYW1lPgotICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHO19DT05TT0xFO0RFQlVHQlVJTEQ7Q1VSTF9TVEFUSUNMSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgotICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+Ci0gICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFJlc291cmNlQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvUmVzb3VyY2VDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Y3J5cHQzMi5saWI7d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsZC5saWI7bGliZWF5MzIubGliO3NzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKTsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjMyXFZDMTBcTElCIERlYnVnOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Ci0gICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KLSAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+Ci0gICAgICA8SGVhZGVyRmlsZU5hbWU+Ci0gICAgICA8L0hlYWRlckZpbGVOYW1lPgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7X0NPTlNPTEU7REVCVUdCVUlMRDtDVVJMX1NUQVRJQ0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+Ci0gICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KLSAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8UmVzb3VyY2VDb21waWxlPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9SZXNvdXJjZUNvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5jcnlwdDMyLmxpYjt3czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmxkLmxpYjtsaWJlYXkzMi5saWI7c3NsZWF5MzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luNjRcVkMxMFxMSUIgRGVidWc7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KLSAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgotICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMiciPgotICAgIDxNaWRsPgotICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgotICAgICAgPEhlYWRlckZpbGVOYW1lPgotICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7X0NPTlNPTEU7Q1VSTF9TVEFUSUNMSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFJlc291cmNlQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvUmVzb3VyY2VDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Y3J5cHQzMi5saWI7d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsLmxpYjtsaWJlYXkzMi5saWI7c3NsZWF5MzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luMzJcVkMxMFxMSUIgUmVsZWFzZTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KLSAgICAgIDxIZWFkZXJGaWxlTmFtZT4KLSAgICAgIDwvSGVhZGVyRmlsZU5hbWU+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHO19DT05TT0xFO0NVUkxfU1RBVElDTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxSZXNvdXJjZUNvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICA8L1Jlc291cmNlQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmNyeXB0MzIubGliO3dzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybC5saWI7bGliZWF5MzIubGliO3NzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKTsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjY0XFZDMTBcTElCIFJlbGVhc2U7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyJyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+Ci0gICAgICA8SGVhZGVyRmlsZU5hbWU+Ci0gICAgICA8L0hlYWRlckZpbGVOYW1lPgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7X0NPTlNPTEU7REVCVUdCVUlMRDtDVVJMX1NUQVRJQ0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+Ci0gICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KLSAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8UmVzb3VyY2VDb21waWxlPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9SZXNvdXJjZUNvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5jcnlwdDMyLmxpYjt3czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmxkLmxpYjtsaWJlYXkzMi5saWI7c3NsZWF5MzIubGliO2xpYnNzaDJkLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKTsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjMyXFZDMTBcTElCIERlYnVnOy4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcYnVpbGRcV2luMzJcVkMxMFxMSUIgRGVidWc7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KLSAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgotICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgotICAgICAgPEhlYWRlckZpbGVOYW1lPgotICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHO19DT05TT0xFO0RFQlVHQlVJTEQ7Q1VSTF9TVEFUSUNMSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgotICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+Ci0gICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFJlc291cmNlQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvUmVzb3VyY2VDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Y3J5cHQzMi5saWI7d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsZC5saWI7bGliZWF5MzIubGliO3NzbGVheTMyLmxpYjtsaWJzc2gyZC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+Ci0gICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbik7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW42NFxWQzEwXExJQiBEZWJ1ZzsuLlwuLlwuLlwuLlwuLlxsaWJzc2gyXGJ1aWxkXFdpbjY0XFZDMTBcTElCIERlYnVnOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Ci0gICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KLSAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMiciPgotICAgIDxNaWRsPgotICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgotICAgICAgPEhlYWRlckZpbGVOYW1lPgotICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7X0NPTlNPTEU7Q1VSTF9TVEFUSUNMSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFJlc291cmNlQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvUmVzb3VyY2VDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Y3J5cHQzMi5saWI7d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsLmxpYjtsaWJlYXkzMi5saWI7c3NsZWF5MzIubGliO2xpYnNzaDIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luMzJcVkMxMFxMSUIgUmVsZWFzZTsuLlwuLlwuLlwuLlwuLlxsaWJzc2gyXGJ1aWxkXFdpbjMyXFZDMTBcTElCIFJlbGVhc2U7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KLSAgICAgIDxIZWFkZXJGaWxlTmFtZT4KLSAgICAgIDwvSGVhZGVyRmlsZU5hbWU+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHO19DT05TT0xFO0NVUkxfU1RBVElDTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxSZXNvdXJjZUNvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICA8L1Jlc291cmNlQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmNyeXB0MzIubGliO3dzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybC5saWI7bGliZWF5MzIubGliO3NzbGVheTMyLmxpYjtsaWJzc2gyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKTsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjY0XFZDMTBcTElCIFJlbGVhc2U7Li5cLi5cLi5cLi5cLi5cbGlic3NoMlxidWlsZFxXaW42NFxWQzEwXExJQiBSZWxlYXNlOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luNjRcVkMxNFxETEwgUmVsZWFzZTsuLlwuLlwuLlwuLlwuLlxsaWJzc2gyXGJ1aWxkXFdpbjY0XFZDMTRcRExMIFJlbGVhc2U7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxJbXBvcnRMaWJyYXJ5PiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkubGliPC9JbXBvcnRMaWJyYXJ5PgogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiciPgotICAgIDxNaWRsPgotICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgotICAgICAgPEhlYWRlckZpbGVOYW1lPgotICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KLSAgICA8L01pZGw+CiAgICAgPENsQ29tcGlsZT4KICAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHO19DT05TT0xFO0RFQlVHQlVJTEQ7Q1VSTF9TVEFUSUNMSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxpbmMzMjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRztCVUlMRElOR19MSUJDVVJMO0RFQlVHQlVJTEQ7Q1VSTF9TVEFUSUNMSUI7VVNFX09QRU5TU0w7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KICAgICA8L1Jlc291cmNlQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybGQubGliO2xpYmVheTMyLmxpYjtzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8TGliPgogICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKTsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjMyXFZDMTBcRExMIERlYnVnOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Ci0gICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KLSAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CiAgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KKyAgICA8L0xpYj4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NCciPgogICAgIDxNaWRsPgogICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+Ci0gICAgICA8SGVhZGVyRmlsZU5hbWU+Ci0gICAgICA8L0hlYWRlckZpbGVOYW1lPgogICAgIDwvTWlkbD4KICAgICA8Q2xDb21waWxlPgogICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7X0NPTlNPTEU7REVCVUdCVUlMRDtDVVJMX1NUQVRJQ0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGluYzMyOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHO0JVSUxESU5HX0xJQkNVUkw7REVCVUdCVUlMRDtDVVJMX1NUQVRJQ0xJQjtVU0VfT1BFTlNTTDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgogICAgIDwvUmVzb3VyY2VDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsZC5saWI7bGliZWF5MzIubGliO3NzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDxMaWI+CiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luNjRcVkMxMFxETEwgRGVidWc7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KLSAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgotICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KICAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMiciPgotICAgIDxNaWRsPgotICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgotICAgICAgPEhlYWRlckZpbGVOYW1lPgotICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7X0NPTlNPTEU7Q1VSTF9TVEFUSUNMSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFJlc291cmNlQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvUmVzb3VyY2VDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsLmxpYjtsaWJlYXkzMi5saWI7c3NsZWF5MzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luMzJcVkMxMFxETEwgUmVsZWFzZTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KLSAgICAgIDxIZWFkZXJGaWxlTmFtZT4KLSAgICAgIDwvSGVhZGVyRmlsZU5hbWU+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHO19DT05TT0xFO0NVUkxfU1RBVElDTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxSZXNvdXJjZUNvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICA8L1Jlc291cmNlQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybC5saWI7bGliZWF5MzIubGliO3NzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKTsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjY0XFZDMTBcRExMIFJlbGVhc2U7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+CisgICAgPC9MaWI+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+Ci0gICAgICA8SGVhZGVyRmlsZU5hbWU+Ci0gICAgICA8L0hlYWRlckZpbGVOYW1lPgotICAgIDwvTWlkbD4KICAgICA8Q2xDb21waWxlPgogICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7X0NPTlNPTEU7REVCVUdCVUlMRDtDVVJMX1NUQVRJQ0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGluYzMyOy4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRztCVUlMRElOR19MSUJDVVJMO0RFQlVHQlVJTEQ7Q1VSTF9TVEFUSUNMSUI7VVNFX09QRU5TU0w7VVNFX0xJQlNTSDI7SEFWRV9MSUJTU0gyX0g7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KICAgICA8L1Jlc291cmNlQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybGQubGliO2xpYmVheTMyLmxpYjtzc2xlYXkzMi5saWI7bGlic3NoMmQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPExpYj4KICAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+Ci0gICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbik7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW4zMlxWQzEwXERMTCBEZWJ1ZzsuLlwuLlwuLlwuLlwuLlxsaWJzc2gyXGJ1aWxkXFdpbjMyXFZDMTBcRExMIERlYnVnOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Ci0gICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KLSAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CiAgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KKyAgICA8L0xpYj4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0JyI+CiAgICAgPE1pZGw+CiAgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KLSAgICAgIDxIZWFkZXJGaWxlTmFtZT4KLSAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CiAgICAgPC9NaWRsPgogICAgIDxDbENvbXBpbGU+CiAgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRztfQ09OU09MRTtERUJVR0JVSUxEO0NVUkxfU1RBVElDTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcaW5jMzI7Li5cLi5cLi5cLi5cLi5cbGlic3NoMlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHO0JVSUxESU5HX0xJQkNVUkw7REVCVUdCVUlMRDtDVVJMX1NUQVRJQ0xJQjtVU0VfT1BFTlNTTDtVU0VfTElCU1NIMjtIQVZFX0xJQlNTSDJfSDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgogICAgIDwvUmVzb3VyY2VDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsZC5saWI7bGliZWF5MzIubGliO3NzbGVheTMyLmxpYjtsaWJzc2gyZC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8TGliPgogICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKTsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjY0XFZDMTBcRExMIERlYnVnOy4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcYnVpbGRcV2luNjRcVkMxMFxETEwgRGVidWc7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KLSAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgotICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KICAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+Ci0gICAgICA8SGVhZGVyRmlsZU5hbWU+Ci0gICAgICA8L0hlYWRlckZpbGVOYW1lPgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRztfQ09OU09MRTtDVVJMX1NUQVRJQ0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8UmVzb3VyY2VDb21waWxlPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9SZXNvdXJjZUNvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmwubGliO2xpYmVheTMyLmxpYjtzc2xlYXkzMi5saWI7bGlic3NoMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+Ci0gICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbik7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW4zMlxWQzEwXERMTCBSZWxlYXNlOy4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcYnVpbGRcV2luMzJcVkMxMFxETEwgUmVsZWFzZTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgotICAgICAgPEhlYWRlckZpbGVOYW1lPgotICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7X0NPTlNPTEU7Q1VSTF9TVEFUSUNMSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFJlc291cmNlQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvUmVzb3VyY2VDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsLmxpYjtsaWJzc2gyLmxpYjtsaWJlYXkzMi5saWI7c3NsZWF5MzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luNjRcVkMxMFxETEwgUmVsZWFzZTsuLlwuLlwuLlwuLlwuLlxsaWJzc2gyXGJ1aWxkXFdpbjY0XFZDMTBcRExMIFJlbGVhc2U7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+CisgICAgPC9MaWI+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+Ci0gICAgICA8SGVhZGVyRmlsZU5hbWU+Ci0gICAgICA8L0hlYWRlckZpbGVOYW1lPgotICAgIDwvTWlkbD4KICAgICA8Q2xDb21waWxlPgogICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgogICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7X0NPTlNPTEU7REVCVUdCVUlMRDtDVVJMX1NUQVRJQ0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHO0JVSUxESU5HX0xJQkNVUkw7REVCVUdCVUlMRDtDVVJMX1NUQVRJQ0xJQjtVU0VfV0lORE9XU19TU1BJO1VTRV9TQ0hBTk5FTDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgogICAgIDwvUmVzb3VyY2VDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsZC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8TGliPgogICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgotICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+Ci0gICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+CisgICAgPC9MaWI+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciPgotICAgIDxNaWRsPgotICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgotICAgICAgPEhlYWRlckZpbGVOYW1lPgotICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KLSAgICA8L01pZGw+CiAgICAgPENsQ29tcGlsZT4KICAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KICAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHO19DT05TT0xFO0RFQlVHQlVJTEQ7Q1VSTF9TVEFUSUNMSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRztCVUlMRElOR19MSUJDVVJMO0RFQlVHQlVJTEQ7Q1VSTF9TVEFUSUNMSUI7VVNFX1dJTkRPV1NfU1NQSTtVU0VfU0NIQU5ORUw7VVNFX1dJTjMyX0lETjtXQU5UX0lETl9QUk9UT1RZUEVTOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CiAgICAgPC9SZXNvdXJjZUNvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO25vcm1hbGl6LmxpYjtsaWJjdXJsZC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8TGliPgogICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgotICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+Ci0gICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+CisgICAgPC9MaWI+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NCciPgogICAgIDxNaWRsPgogICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+Ci0gICAgICA8SGVhZGVyRmlsZU5hbWU+Ci0gICAgICA8L0hlYWRlckZpbGVOYW1lPgogICAgIDwvTWlkbD4KICAgICA8Q2xDb21waWxlPgogICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgogICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7X0NPTlNPTEU7REVCVUdCVUlMRDtDVVJMX1NUQVRJQ0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHO0JVSUxESU5HX0xJQkNVUkw7REVCVUdCVUlMRDtDVVJMX1NUQVRJQ0xJQjtVU0VfV0lORE9XU19TU1BJO1VTRV9TQ0hBTk5FTDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgogICAgIDwvUmVzb3VyY2VDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsZC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8TGliPgogICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgotICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+Ci0gICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+CisgICAgPC9MaWI+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj4KICAgICA8TWlkbD4KICAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgotICAgICAgPEhlYWRlckZpbGVOYW1lPgotICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KICAgICA8L01pZGw+CiAgICAgPENsQ29tcGlsZT4KICAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KICAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHO19DT05TT0xFO0RFQlVHQlVJTEQ7Q1VSTF9TVEFUSUNMSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRztCVUlMRElOR19MSUJDVVJMO0RFQlVHQlVJTEQ7Q1VSTF9TVEFUSUNMSUI7VVNFX1dJTkRPV1NfU1NQSTtVU0VfU0NIQU5ORUw7VVNFX1dJTjMyX0lETjtXQU5UX0lETl9QUk9UT1RZUEVTOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CiAgICAgPC9SZXNvdXJjZUNvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO25vcm1hbGl6LmxpYjtsaWJjdXJsZC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8TGliPgogICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgotICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+Ci0gICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+CisgICAgPC9MaWI+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGluYzMyOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHO0JVSUxESU5HX0xJQkNVUkw7REVCVUdCVUlMRDtDVVJMX1NUQVRJQ0xJQjtVU0VfT1BFTlNTTDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpYj4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGliPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcaW5jMzI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7QlVJTERJTkdfTElCQ1VSTDtERUJVR0JVSUxEO0NVUkxfU1RBVElDTElCO1VTRV9PUEVOU1NMOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGliPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaWI+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcaW5jMzI7Li5cLi5cLi5cLi5cLi5cbGlic3NoMlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHO0JVSUxESU5HX0xJQkNVUkw7REVCVUdCVUlMRDtDVVJMX1NUQVRJQ0xJQjtVU0VfT1BFTlNTTDtVU0VfTElCU1NIMjtIQVZFX0xJQlNTSDJfSDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpYj4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGliPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxpbmMzMjsuLlwuLlwuLlwuLlwuLlxsaWJzc2gyXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7QlVJTERJTkdfTElCQ1VSTDtERUJVR0JVSUxEO0NVUkxfU1RBVElDTElCO1VTRV9PUEVOU1NMO1VTRV9MSUJTU0gyO0hBVkVfTElCU1NIMl9IOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGliPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaWI+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxpbmMzMjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRztCVUlMRElOR19MSUJDVVJMO0NVUkxfU1RBVElDTElCO1VTRV9PUEVOU1NMOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGliPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaWI+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcaW5jMzI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7QlVJTERJTkdfTElCQ1VSTDtDVVJMX1NUQVRJQ0xJQjtVU0VfT1BFTlNTTDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpYj4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGliPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxpbmMzMjsuLlwuLlwuLlwuLlwuLlxsaWJzc2gyXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7QlVJTERJTkdfTElCQ1VSTDtDVVJMX1NUQVRJQ0xJQjtVU0VfT1BFTlNTTDtVU0VfTElCU1NIMjtIQVZFX0xJQlNTSDJfSDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpYj4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGliPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcaW5jMzI7Li5cLi5cLi5cLi5cLi5cbGlic3NoMlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHO0JVSUxESU5HX0xJQkNVUkw7Q1VSTF9TVEFUSUNMSUI7VVNFX09QRU5TU0w7VVNFX0xJQlNTSDI7SEFWRV9MSUJTU0gyX0g7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaWI+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpYj4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciPgotICAgIDxNaWRsPgotICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgotICAgICAgPEhlYWRlckZpbGVOYW1lPgotICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KLSAgICA8L01pZGw+CiAgICAgPENsQ29tcGlsZT4KICAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KICAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgogICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7X0NPTlNPTEU7Q1VSTF9TVEFUSUNMSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRztCVUlMRElOR19MSUJDVVJMO0NVUkxfU1RBVElDTElCO1VTRV9XSU5ET1dTX1NTUEk7VVNFX1NDSEFOTkVMOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CiAgICAgPC9SZXNvdXJjZUNvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmwubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPExpYj4KICAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+Ci0gICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+CisgICAgPC9MaWI+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+Ci0gICAgICA8SGVhZGVyRmlsZU5hbWU+Ci0gICAgICA8L0hlYWRlckZpbGVOYW1lPgotICAgIDwvTWlkbD4KICAgICA8Q2xDb21waWxlPgogICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgogICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CiAgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRztfQ09OU09MRTtDVVJMX1NUQVRJQ0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHO0JVSUxESU5HX0xJQkNVUkw7Q1VSTF9TVEFUSUNMSUI7VVNFX1dJTkRPV1NfU1NQSTtVU0VfU0NIQU5ORUw7VVNFX1dJTjMyX0lETjtXQU5UX0lETl9QUk9UT1RZUEVTOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CiAgICAgPC9SZXNvdXJjZUNvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO25vcm1hbGl6LmxpYjtsaWJjdXJsLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDxMaWI+CiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KICAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgorICAgIDwvTGliPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NCciPgogICAgIDxNaWRsPgogICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+Ci0gICAgICA8SGVhZGVyRmlsZU5hbWU+Ci0gICAgICA8L0hlYWRlckZpbGVOYW1lPgogICAgIDwvTWlkbD4KICAgICA8Q2xDb21waWxlPgogICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgogICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CiAgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRztfQ09OU09MRTtDVVJMX1NUQVRJQ0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHO0JVSUxESU5HX0xJQkNVUkw7Q1VSTF9TVEFUSUNMSUI7VVNFX1dJTkRPV1NfU1NQSTtVU0VfU0NIQU5ORUw7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KICAgICA8L1Jlc291cmNlQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8TGliPgogICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CiAgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KKyAgICA8L0xpYj4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+CiAgICAgPE1pZGw+CiAgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KLSAgICAgIDxIZWFkZXJGaWxlTmFtZT4KLSAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CiAgICAgPC9NaWRsPgogICAgIDxDbENvbXBpbGU+CiAgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CiAgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KICAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHO19DT05TT0xFO0NVUkxfU1RBVElDTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7QlVJTERJTkdfTElCQ1VSTDtDVVJMX1NUQVRJQ0xJQjtVU0VfV0lORE9XU19TU1BJO1VTRV9TQ0hBTk5FTDtVU0VfV0lOMzJfSUROO1dBTlRfSUROX1BST1RPVFlQRVM7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KICAgICA8L1Jlc291cmNlQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bm9ybWFsaXoubGliO2xpYmN1cmwubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPExpYj4KICAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+Ci0gICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+CisgICAgPC9MaWI+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxpbmMzMjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRztCVUlMRElOR19MSUJDVVJMO0NVUkxfU1RBVElDTElCO1VTRV9PUEVOU1NMOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGliPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaWI+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcaW5jMzI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7QlVJTERJTkdfTElCQ1VSTDtDVVJMX1NUQVRJQ0xJQjtVU0VfT1BFTlNTTDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpYj4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGliPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxpbmMzMjsuLlwuLlwuLlwuLlwuLlxsaWJzc2gyXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7QlVJTERJTkdfTElCQ1VSTDtDVVJMX1NUQVRJQ0xJQjtVU0VfT1BFTlNTTDtVU0VfTElCU1NIMjtIQVZFX0xJQlNTSDJfSDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpYj4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGliPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGluY2x1ZGU7Li5cLi5cLi5cLi5cbGliOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcaW5jMzI7Li5cLi5cLi5cLi5cLi5cbGlic3NoMlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHO0JVSUxESU5HX0xJQkNVUkw7Q1VSTF9TVEFUSUNMSUI7VVNFX09QRU5TU0w7VVNFX0xJQlNTSDI7SEFWRV9MSUJTU0gyX0g7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaWI+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpYj4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbUdyb3VwPgotQ1VSTF9TUkNfWF9DX0ZJTEVTCi1DVVJMX1NSQ19DX0ZJTEVTCitDVVJMX0xJQl9DX0ZJTEVTCitDVVJMX0xJQl9WQVVUSF9DX0ZJTEVTCitDVVJMX0xJQl9WVExTX0NfRklMRVMKICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+Ci1DVVJMX1NSQ19YX0hfRklMRVMKLUNVUkxfU1JDX0hfRklMRVMKK0NVUkxfTElCX0hfRklMRVMKK0NVUkxfTElCX1ZBVVRIX0hfRklMRVMKK0NVUkxfTElCX1ZUTFNfSF9GSUxFUwogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KLUNVUkxfU1JDX1JDX0ZJTEVTCitDVVJMX0xJQl9SQ19GSUxFUwogICA8L0l0ZW1Hcm91cD4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KZGlmZiAtLWdpdCBhL3Byb2plY3RzL1dpbmRvd3MvVkMxNC9saWIvbGliY3VybC52Y3hwcm9qLmZpbHRlcnMgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDMTQvbGliL2xpYmN1cmwudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkNjM0MWQKLS0tIC9kZXYvbnVsbAorKysgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDMTQvbGliL2xpYmN1cmwudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMTcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezRGQzczN0YxLUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5jcHA7YztjYztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1RkJFNTJFQkZCfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmg7aGg7aHBwO2h4eDtobTtpbmw7aW5jO3hzZDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlJlc291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns2N0RBNkFCNi1GODAwLTRjMDgtOEI3QS04M0JCMTIxQUFEMDF9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+cmM7aWNvO2N1cjtibXA7ZGxnO3JjMjtyY3Q7YmluO3JncztnaWY7anBnO2pwZWc7anBlO3Jlc3g7dGlmZjt0aWY7cG5nO3dhdjttZmNyaWJib24tbXM8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Byb2plY3RzL1dpbmRvd3MvVkMxNC9zcmMvLmdpdGlnbm9yZSBiL3Byb2plY3RzL1dpbmRvd3MvVkMxNC9zcmMvLmdpdGlnbm9yZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYWMxNzEwCi0tLSAvZGV2L251bGwKKysrIGIvcHJvamVjdHMvV2luZG93cy9WQzE0L3NyYy8uZ2l0aWdub3JlCkBAIC0wLDAgKzEsNiBAQAorLyoub3BlbnNkZgorLyouc2RmCisvKi51c2VyCisvKi52Yy5kYgorLyoudmN4cHJvagorLy52cwpkaWZmIC0tZ2l0IGEvcHJvamVjdHMvV2luZG93cy9WQzExL3NyYy9jdXJsc3JjLnNsbiBiL3Byb2plY3RzL1dpbmRvd3MvVkMxNC9zcmMvY3VybC5zbG4Kc2ltaWxhcml0eSBpbmRleCA4NiUKY29weSBmcm9tIHByb2plY3RzL1dpbmRvd3MvVkMxMS9zcmMvY3VybHNyYy5zbG4KY29weSB0byBwcm9qZWN0cy9XaW5kb3dzL1ZDMTQvc3JjL2N1cmwuc2xuCmluZGV4IDg4YjRmN2UuLmI0MGMxOGIgMTAwNjQ0Ci0tLSBhL3Byb2plY3RzL1dpbmRvd3MvVkMxMS9zcmMvY3VybHNyYy5zbG4KKysrIGIvcHJvamVjdHMvV2luZG93cy9WQzE0L3NyYy9jdXJsLnNsbgpAQCAtMSw2ICsxLDYgQEAKIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIFNvbHV0aW9uIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDEyLjAwCi0jIFZpc3VhbCBTdHVkaW8gMjAxMgotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJjdXJsc3JjIiwgImN1cmxzcmMudmN4cHJvaiIsICJ7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfSIKKyMgVmlzdWFsIFN0dWRpbyAyMDE1CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImN1cmwiLCAiY3VybC52Y3hwcm9qIiwgIns1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9IgogRW5kUHJvamVjdAogR2xvYmFsCiAJR2xvYmFsU2VjdGlvbihTb2x1dGlvbkNvbmZpZ3VyYXRpb25QbGF0Zm9ybXMpID0gcHJlU29sdXRpb24KQEAgLTEyLDYgKzEyLDggQEAKIAkJRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0ID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0CiAJCURMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCiAJCURMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0ID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKKwkJRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMgorCQlETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQKIAkJRExMIERlYnVnfFdpbjMyID0gRExMIERlYnVnfFdpbjMyCiAJCURMTCBEZWJ1Z3x4NjQgPSBETEwgRGVidWd8eDY0CiAJCURMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiA9IERMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgpAQCAtMjIsNiArMjQsOCBAQAogCQlETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0CiAJCURMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgogCQlETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0ID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NAorCQlETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMgorCQlETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NCA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0CiAJCURMTCBSZWxlYXNlfFdpbjMyID0gRExMIFJlbGVhc2V8V2luMzIKIAkJRExMIFJlbGVhc2V8eDY0ID0gRExMIFJlbGVhc2V8eDY0CiAJCUxJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIgPSBMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCkBAIC0zNiw2ICs0MCw4IEBACiAJCUxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0ID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQKIAkJTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzIgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMgogCQlMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQKKwkJTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMgorCQlMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQKIAkJTElCIERlYnVnfFdpbjMyID0gTElCIERlYnVnfFdpbjMyCiAJCUxJQiBEZWJ1Z3x4NjQgPSBMSUIgRGVidWd8eDY0CiAJCUxJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiA9IExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgpAQCAtNTAsNiArNTYsOCBAQAogCQlMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0ID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NAogCQlMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMgogCQlMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NCA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0CisJCUxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIgPSBMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyCisJCUxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8eDY0ID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQKIAkJTElCIFJlbGVhc2V8V2luMzIgPSBMSUIgUmVsZWFzZXxXaW4zMgogCQlMSUIgUmVsZWFzZXx4NjQgPSBMSUIgUmVsZWFzZXx4NjQKIAlFbmRHbG9iYWxTZWN0aW9uCkBAIC03MCw2ICs3OCwxMCBAQAogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyLkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMi5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMi5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0LkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NAogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRExMIERlYnVnfFdpbjMyCiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRExMIERlYnVnfFdpbjMyCiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRExMIERlYnVnfHg2NApAQCAtOTAsNiArMTAyLDEwIEBACiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMi5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NAogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzIuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyLkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyCisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0LkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0CisJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0LkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NAogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZXxXaW4zMgogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gRExMIFJlbGVhc2V8V2luMzIKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlfHg2NApAQCAtMTE4LDYgKzEzNCwxMCBAQAogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzIKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NAogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NAogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gTElCIERlYnVnfFdpbjMyCiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1Z3xXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnfFdpbjMyCiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gTElCIERlYnVnfHg2NApAQCAtMTQ2LDYgKzE2NiwxMCBAQAogCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyCiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0LkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0CiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0LkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIKKwkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMi5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMgorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NAorCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NC5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2V8V2luMzIKIAkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IExJQiBSZWxlYXNlfFdpbjMyCiAJCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZXx4NjQKZGlmZiAtLWdpdCBhL3Byb2plY3RzL1dpbmRvd3MvVkMxMC9zcmMvY3VybHNyYy50bXBsIGIvcHJvamVjdHMvV2luZG93cy9WQzE0L3NyYy9jdXJsLnRtcGwKc2ltaWxhcml0eSBpbmRleCA3NyUKY29weSBmcm9tIHByb2plY3RzL1dpbmRvd3MvVkMxMC9zcmMvY3VybHNyYy50bXBsCmNvcHkgdG8gcHJvamVjdHMvV2luZG93cy9WQzE0L3NyYy9jdXJsLnRtcGwKaW5kZXggZmUzYTkzNC4uNGRhMWI3ZiAxMDA2NDQKLS0tIGEvcHJvamVjdHMvV2luZG93cy9WQzEwL3NyYy9jdXJsc3JjLnRtcGwKKysrIGIvcHJvamVjdHMvV2luZG93cy9WQzE0L3NyYy9jdXJsLnRtcGwKQEAgLTEsNiArMSwxNCBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjE0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgogICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5ETEwgRGVidWcgLSBETEwgd29sZlNTTDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KICAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiI+CiAgICAgICA8Q29uZmlndXJhdGlvbj5ETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyPC9Db25maWd1cmF0aW9uPgogICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KQEAgLTQxLDYgKzQ5LDE0IEBACiAgICAgICA8Q29uZmlndXJhdGlvbj5ETEwgRGVidWc8L0NvbmZpZ3VyYXRpb24+CiAgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KICAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0w8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0w8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgogICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIiPgogICAgICAgPENvbmZpZ3VyYXRpb24+RExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyPC9Db25maWd1cmF0aW9uPgogICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KQEAgLTExMyw2ICsxMjksMTQgQEAKICAgICAgIDxDb25maWd1cmF0aW9uPkxJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEk8L0NvbmZpZ3VyYXRpb24+CiAgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KICAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJMSUIgRGVidWcgLSBMSUIgd29sZlNTTHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5MSUIgRGVidWcgLSBMSUIgd29sZlNTTDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkxJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KICAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMiI+CiAgICAgICA8Q29uZmlndXJhdGlvbj5MSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyPC9Db25maWd1cmF0aW9uPgogICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KQEAgLTE2OSw2ICsxOTMsMTQgQEAKICAgICAgIDxDb25maWd1cmF0aW9uPkxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSTwvQ29uZmlndXJhdGlvbj4KICAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgogICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkxJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+TElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+TElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CiAgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMiI+CiAgICAgICA8Q29uZmlndXJhdGlvbj5MSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDI8L0NvbmZpZ3VyYXRpb24+CiAgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgpAQCAtMTk2LDI0OCArMjI4LDM0NCBAQAogICA8L0l0ZW1Hcm91cD4KICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgogICAgIDxQcm9qZWN0R3VpZD57NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfTwvUHJvamVjdEd1aWQ+Ci0gICAgPFJvb3ROYW1lc3BhY2U+Y3VybHNyYzwvUm9vdE5hbWVzcGFjZT4KKyAgICA8Um9vdE5hbWVzcGFjZT5jdXJsPC9Sb290TmFtZXNwYWNlPgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CkBAIC01MDUsMTUgKzYzMywyNyBAQAogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgIDwvSW1wb3J0R3JvdXA+CkBAIC01NzcsMjEwICs3MTcsMjU0IEBACiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgIDwvSW1wb3J0R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICA8L0ltcG9ydEdyb3VwPgogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgPC9JbXBvcnRHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CiAgIDxQcm9wZXJ0eUdyb3VwPgogICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXxXaW4zMiciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMiciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXx4NjQnIj4kKE91dERpcilzcmNcPC9JbnREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIHdvbGZTU0x8eDY0JyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8V2luMzInIj4kKE91dERpcilzcmNcPC9JbnREaXI+CisgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzInIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8eDY0JyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NCciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3xXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3xXaW4zMiciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8V2luMzInIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3xXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3x4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIHdvbGZTU0x8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWd8eDY0JyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgd29sZlNTTHx4NjQnIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3x4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3xXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3xXaW4zMiciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzInIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3xXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3x4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8eDY0JyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgd29sZlNTTHx4NjQnIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1Z3x4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyJyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTHx4NjQnIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMiciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQnIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NCciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0JyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfFdpbjMyJyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQnIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzInIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0JyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzInIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0JyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzInIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQnIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyJyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTHx4NjQnIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzInIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0JyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0JyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzInIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIj4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NCciPiQoT3V0RGlyKXNyY1w8L0ludERpcj4KICAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxNFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgogICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CiAgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NCciPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTRcJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIj4kKE91dERpcilzcmNcPC9JbnREaXI+CiAgICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+JChPdXREaXIpc3JjXDwvSW50RGlyPgogICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KICAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfFdpbjMyJyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8eDY0JyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0JyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3xXaW4zMiciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfHg2NCciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzInIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NCciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIj5jdXJsZDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NCciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMiciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0JyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyJyI+Y3VybGQ8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCciPmN1cmxkPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzInIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8V2luMzInIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzInIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyJyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzInIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8V2luMzInIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NCciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfHg2NCciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0JyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0JyI+Y3VybDwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj5jdXJsPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NCciPmN1cmw8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXx4NjQnIj5jdXJsPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWd8eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIHdvbGZTU0x8eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTHx4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1Z3xXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0JyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyI+JChQcm9qZWN0TmFtZSlkPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQnIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMiciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzInIj4kKFByb2plY3ROYW1lKWQ8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NCciPiQoUHJvamVjdE5hbWUpZDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMiciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyJyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyJyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZXxXaW4zMiciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2UgLSBETEwgd29sZlNTTHxXaW4zMiciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyJyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyJyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzInIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzInIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMiciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMiciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8V2luMzInIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gTElCIHdvbGZTU0x8V2luMzInIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQnIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0JyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0JyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8eDY0JyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NCciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NCciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQnIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQnIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0JyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0JyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NCciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2V8eDY0JyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfHg2NCciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRExMIFJlbGVhc2V8V2luMzInIj4KICAgICA8TWlkbD4KQEAgLTc5Niw3ICs5ODAsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTgwNiwxMSArOTkwLDQyIEBACiAgICAgPExpbms+CiAgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmwubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KICAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfFdpbjMyJyI+CisgICAgPE1pZGw+CisgICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CisgICAgICA8SGVhZGVyRmlsZU5hbWU+CisgICAgICA8L0hlYWRlckZpbGVOYW1lPgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmwubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxNFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBSZWxlYXNlfHg2NCciPgogICAgIDxNaWRsPgogICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CkBAIC04MjYsNyArMTA0MSw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtODM2LDExICsxMDUxLDQzIEBACiAgICAgPExpbms+CiAgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmwubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KICAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdETEwgUmVsZWFzZSAtIERMTCB3b2xmU1NMfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CisgICAgICA8SGVhZGVyRmlsZU5hbWU+CisgICAgICA8L0hlYWRlckZpbGVOYW1lPgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmwubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBSZWxlYXNlfFdpbjMyJyI+CiAgICAgPE1pZGw+CiAgICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CkBAIC04NTUsNyArMTEwMiw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtODY1LDExICsxMTEyLDQyIEBACiAgICAgPExpbms+CiAgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmwubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KICAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZSAtIExJQiB3b2xmU1NMfFdpbjMyJyI+CisgICAgPE1pZGw+CisgICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CisgICAgICA8SGVhZGVyRmlsZU5hbWU+CisgICAgICA8L0hlYWRlckZpbGVOYW1lPgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOy4uXC4uXC4uXC4uXGxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRztfQ09OU09MRTtDVVJMX1NUQVRJQ0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmwubGliO3dvbGZzc2wubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxNFwkKENvbmZpZ3VyYXRpb24pOy4uXC4uXC4uXC4uXC4uXHdvbGZzc2xcYnVpbGRcV2luMzJcVkMxNFxMSUIgUmVsZWFzZTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdMSUIgUmVsZWFzZXx4NjQnIj4KICAgICA8TWlkbD4KICAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgpAQCAtODg1LDcgKzExNjMsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTg5NSwxMSArMTE3Myw0MyBAQAogICAgIDxMaW5rPgogICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CiAgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KICAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIFJlbGVhc2UgLSBMSUIgd29sZlNTTHx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnRsYjwvVHlwZUxpYnJhcnlOYW1lPgorICAgICAgPEhlYWRlckZpbGVOYW1lPgorICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7X0NPTlNPTEU7Q1VSTF9TVEFUSUNMSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsLmxpYjt3b2xmc3NsLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTRcJChDb25maWd1cmF0aW9uKTsuLlwuLlwuLlwuLlwuLlx3b2xmc3NsXGJ1aWxkXFdpbjY0XFZDMTRcTElCIFJlbGVhc2U7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nTElCIERlYnVnfFdpbjMyJyI+CiAgICAgPE1pZGw+CiAgICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CkBAIC05MTMsNyArMTIyMyw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTkyNCw3ICsxMjM0LDM4IEBACiAgICAgPExpbms+CiAgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmxkLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxNFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfFdpbjMyJyI+CisgICAgPE1pZGw+CisgICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CisgICAgICA8SGVhZGVyRmlsZU5hbWU+CisgICAgICA8L0hlYWRlckZpbGVOYW1lPgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7X0NPTlNPTEU7REVCVUdCVUlMRDtDVVJMX1NUQVRJQ0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmxkLmxpYjt3b2xmc3NsLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTRcJChDb25maWd1cmF0aW9uKTsuLlwuLlwuLlwuLlwuLlx3b2xmc3NsXGJ1aWxkXFdpbjMyXFZDMTRcTElCIERlYnVnOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CiAgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KICAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgogICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CkBAIC05NDUsNyArMTI4Niw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTk1Niw3ICsxMjk3LDM5IEBACiAgICAgPExpbms+CiAgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmxkLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0xJQiBEZWJ1ZyAtIExJQiB3b2xmU1NMfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CisgICAgICA8SGVhZGVyRmlsZU5hbWU+CisgICAgICA8L0hlYWRlckZpbGVOYW1lPgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7X0NPTlNPTEU7REVCVUdCVUlMRDtDVVJMX1NUQVRJQ0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmxkLmxpYjt3b2xmc3NsLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTRcJChDb25maWd1cmF0aW9uKTsuLlwuLlwuLlwuLlwuLlx3b2xmc3NsXGJ1aWxkXFdpbjY0XFZDMTRcTElCIERlYnVnOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CiAgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KICAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgogICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CkBAIC05NzYsNyArMTM0OSw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTk4Nyw3ICsxMzYwLDM4IEBACiAgICAgPExpbms+CiAgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmxkLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxNFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfFdpbjMyJyI+CisgICAgPE1pZGw+CisgICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CisgICAgICA8SGVhZGVyRmlsZU5hbWU+CisgICAgICA8L0hlYWRlckZpbGVOYW1lPgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7X0NPTlNPTEU7REVCVUdCVUlMRDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmxkLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTRcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgogICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CiAgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KICAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgpAQCAtMTAwOCw3ICsxNDEyLDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTAxOSw3ICsxNDIzLDM5IEBACiAgICAgPExpbms+CiAgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmxkLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RMTCBEZWJ1ZyAtIERMTCB3b2xmU1NMfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgICA8VHlwZUxpYnJhcnlOYW1lPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkudGxiPC9UeXBlTGlicmFyeU5hbWU+CisgICAgICA8SGVhZGVyRmlsZU5hbWU+CisgICAgICA8L0hlYWRlckZpbGVOYW1lPgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5caW5jbHVkZTsuLlwuLlwuLlwuLlxsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7X0NPTlNPTEU7REVCVUdCVUlMRDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmxkLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTRcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgogICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CiAgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KICAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgpAQCAtMTAzOSw3ICsxNDc1LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTA1MCw3ICsxNDg2LDcgQEAKICAgICA8TGluaz4KICAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybGQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KICAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgogICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CiAgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KQEAgLTEwNzEsNyArMTUwNyw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTEwODIsNyArMTUxOCw3IEBACiAgICAgPExpbms+CiAgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmxkLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CiAgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KICAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgogICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CkBAIC0xMTAyLDcgKzE1MzgsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xMTEzLDcgKzE1NDksNyBAQAogICAgIDxMaW5rPgogICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsZC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KICAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+Ci0gICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTRcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgogICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CiAgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KICAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgpAQCAtMTEzMyw3ICsxNTY5LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTE0NCw3ICsxNTgwLDcgQEAKICAgICA8TGluaz4KICAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybGQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KICAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgogICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CiAgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KQEAgLTExNjUsNyArMTYwMSw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTExNzYsNyArMTYxMiw3IEBACiAgICAgPExpbms+CiAgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmxkLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CiAgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KICAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgogICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CkBAIC0xMTk3LDcgKzE2MzMsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xMjA4LDcgKzE2NDQsNyBAQAogICAgIDxMaW5rPgogICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsZC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KICAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+Ci0gICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTRcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgogICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CiAgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KICAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgpAQCAtMTIyOSw3ICsxNjY1LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xMjM5LDcgKzE2NzUsNyBAQAogICAgIDxMaW5rPgogICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxNFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CiAgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KICAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CiAgICAgPC9MaW5rPgpAQCAtMTI1OSw3ICsxNjk1LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xMjY5LDcgKzE3MDUsNyBAQAogICAgIDxMaW5rPgogICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CiAgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KICAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CiAgICAgPC9MaW5rPgpAQCAtMTI4OCw3ICsxNzI0LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xMjk4LDcgKzE3MzQsNyBAQAogICAgIDxMaW5rPgogICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxNFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CiAgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KICAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CiAgICAgPC9MaW5rPgpAQCAtMTMxNyw3ICsxNzUzLDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xMzI3LDcgKzE3NjMsNyBAQAogICAgIDxMaW5rPgogICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxNFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CiAgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KICAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CiAgICAgPC9MaW5rPgpAQCAtMTM0Nyw3ICsxNzgzLDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xMzU3LDcgKzE3OTMsNyBAQAogICAgIDxMaW5rPgogICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CiAgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KICAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CiAgICAgPC9MaW5rPgpAQCAtMTM3Nyw3ICsxODEzLDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xMzg3LDcgKzE4MjMsNyBAQAogICAgIDxMaW5rPgogICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CiAgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KICAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CiAgICAgPC9MaW5rPgpAQCAtMTQwNSw3ICsxODQxLDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTQxNiw3ICsxODUyLDcgQEAKICAgICA8TGluaz4KICAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybGQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KICAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgogICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CiAgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KQEAgLTE0MzcsNyArMTg3Myw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTE0NDgsNyArMTg4NCw3IEBACiAgICAgPExpbms+CiAgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmxkLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CiAgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KICAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgogICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CkBAIC0xNDY5LDcgKzE5MDUsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTE0NzksNyArMTkxNSw3IEBACiAgICAgPExpbms+CiAgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmwubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KICAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KICAgICA8L0xpbms+CkBAIC0xNDk5LDcgKzE5MzUsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTE1MDksNyArMTk0NSw3IEBACiAgICAgPExpbms+CiAgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmwubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KICAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KICAgICA8L0xpbms+CkBAIC0xNTI3LDcgKzE5NjMsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0xNTM4LDcgKzE5NzQsNyBAQAogICAgIDxMaW5rPgogICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Y3J5cHQzMi5saWI7d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsZC5saWI7bGliZWF5MzIubGliO3NzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKTsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjMyXFZDMTBcTElCIERlYnVnOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbik7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW4zMlxWQzE0XExJQiBEZWJ1ZzslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgogICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CiAgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KICAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgpAQCAtMTU1OSw3ICsxOTk1LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTU3MCw3ICsyMDA2LDcgQEAKICAgICA8TGluaz4KICAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmNyeXB0MzIubGliO3dzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybGQubGliO2xpYmVheTMyLmxpYjtzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KICAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+Ci0gICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbik7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW42NFxWQzEwXExJQiBEZWJ1ZzslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luNjRcVkMxNFxMSUIgRGVidWc7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KICAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgogICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CiAgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KQEAgLTE1OTEsNyArMjAyNyw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTYwMSw3ICsyMDM3LDcgQEAKICAgICA8TGluaz4KICAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmNyeXB0MzIubGliO3dzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybC5saWI7bGliZWF5MzIubGliO3NzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKTsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjMyXFZDMTBcTElCIFJlbGVhc2U7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTRcJChDb25maWd1cmF0aW9uKTsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjMyXFZDMTRcTElCIFJlbGVhc2U7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KICAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KICAgICA8L0xpbms+CkBAIC0xNjIxLDcgKzIwNTcsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTE2MzEsNyArMjA2Nyw3IEBACiAgICAgPExpbms+CiAgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5jcnlwdDMyLmxpYjt3czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmwubGliO2xpYmVheTMyLmxpYjtzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KICAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+Ci0gICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzEwXCQoQ29uZmlndXJhdGlvbik7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW42NFxWQzEwXExJQiBSZWxlYXNlOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbik7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW42NFxWQzE0XExJQiBSZWxlYXNlOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CiAgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KICAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CiAgICAgPC9MaW5rPgpAQCAtMTY0OSw3ICsyMDg1LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTY2MCw3ICsyMDk2LDcgQEAKICAgICA8TGluaz4KICAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmNyeXB0MzIubGliO3dzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybGQubGliO2xpYmVheTMyLmxpYjtzc2xlYXkzMi5saWI7bGlic3NoMmQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luMzJcVkMxMFxMSUIgRGVidWc7Li5cLi5cLi5cLi5cLi5cbGlic3NoMlxidWlsZFxXaW4zMlxWQzEwXExJQiBEZWJ1ZzslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxNFwkKENvbmZpZ3VyYXRpb24pOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luMzJcVkMxNFxMSUIgRGVidWc7Li5cLi5cLi5cLi5cLi5cbGlic3NoMlxidWlsZFxXaW4zMlxWQzE0XExJQiBEZWJ1ZzslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgogICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CiAgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KICAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgpAQCAtMTY4MSw3ICsyMTE3LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTY5Miw3ICsyMTI4LDcgQEAKICAgICA8TGluaz4KICAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmNyeXB0MzIubGliO3dzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybGQubGliO2xpYmVheTMyLmxpYjtzc2xlYXkzMi5saWI7bGlic3NoMmQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luNjRcVkMxMFxMSUIgRGVidWc7Li5cLi5cLi5cLi5cLi5cbGlic3NoMlxidWlsZFxXaW42NFxWQzEwXExJQiBEZWJ1ZzslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luNjRcVkMxNFxMSUIgRGVidWc7Li5cLi5cLi5cLi5cLi5cbGlic3NoMlxidWlsZFxXaW42NFxWQzE0XExJQiBEZWJ1ZzslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgogICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CiAgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KICAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgpAQCAtMTcxMyw3ICsyMTQ5LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xNzIzLDcgKzIxNTksNyBAQAogICAgIDxMaW5rPgogICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Y3J5cHQzMi5saWI7d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsLmxpYjtsaWJlYXkzMi5saWI7c3NsZWF5MzIubGliO2xpYnNzaDIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luMzJcVkMxMFxMSUIgUmVsZWFzZTsuLlwuLlwuLlwuLlwuLlxsaWJzc2gyXGJ1aWxkXFdpbjMyXFZDMTBcTElCIFJlbGVhc2U7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTRcJChDb25maWd1cmF0aW9uKTsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjMyXFZDMTRcTElCIFJlbGVhc2U7Li5cLi5cLi5cLi5cLi5cbGlic3NoMlxidWlsZFxXaW4zMlxWQzE0XExJQiBSZWxlYXNlOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CiAgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KICAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CiAgICAgPC9MaW5rPgpAQCAtMTc0Myw3ICsyMTc5LDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xNzUzLDcgKzIxODksNyBAQAogICAgIDxMaW5rPgogICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Y3J5cHQzMi5saWI7d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsLmxpYjtsaWJlYXkzMi5saWI7c3NsZWF5MzIubGliO2xpYnNzaDIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luNjRcVkMxMFxMSUIgUmVsZWFzZTsuLlwuLlwuLlwuLlwuLlxsaWJzc2gyXGJ1aWxkXFdpbjY0XFZDMTBcTElCIFJlbGVhc2U7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTRcJChDb25maWd1cmF0aW9uKTsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjY0XFZDMTRcTElCIFJlbGVhc2U7Li5cLi5cLi5cLi5cLi5cbGlic3NoMlxidWlsZFxXaW42NFxWQzE0XExJQiBSZWxlYXNlOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CiAgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KICAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CiAgICAgPC9MaW5rPgpAQCAtMTc3MSw3ICsyMjA3LDcgQEAKICAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtMTc4Miw3ICsyMjE4LDcgQEAKICAgICA8TGluaz4KICAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybGQubGliO2xpYmVheTMyLmxpYjtzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KICAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+Ci0gICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbik7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW4zMlxWQzEwXERMTCBEZWJ1ZzslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxNFwkKENvbmZpZ3VyYXRpb24pOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luMzJcVkMxNFxETEwgRGVidWc7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KICAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgogICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CiAgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KQEAgLTE4MDMsNyArMjIzOSw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTE4MTQsNyArMjI1MCw3IEBACiAgICAgPExpbms+CiAgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmxkLmxpYjtsaWJlYXkzMi5saWI7c3NsZWF5MzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luNjRcVkMxMFxETEwgRGVidWc7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTRcJChDb25maWd1cmF0aW9uKTsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjY0XFZDMTRcRExMIERlYnVnOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CiAgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KICAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgogICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CkBAIC0xODM1LDcgKzIyNzEsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTE4NDUsNyArMjI4MSw3IEBACiAgICAgPExpbms+CiAgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmwubGliO2xpYmVheTMyLmxpYjtzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KICAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+Ci0gICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbik7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW4zMlxWQzEwXERMTCBSZWxlYXNlOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbik7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW4zMlxWQzE0XERMTCBSZWxlYXNlOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CiAgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KICAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CiAgICAgPC9MaW5rPgpAQCAtMTg2NSw3ICsyMzAxLDcgQEAKICAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CiAgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xODc1LDcgKzIzMTEsNyBAQAogICAgIDxMaW5rPgogICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtsaWJjdXJsLmxpYjtsaWJlYXkzMi5saWI7c3NsZWF5MzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luNjRcVkMxMFxETEwgUmVsZWFzZTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luNjRcVkMxNFxETEwgUmVsZWFzZTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgogICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CiAgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgogICAgIDwvTGluaz4KQEAgLTE4OTMsNyArMjMyOSw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTE5MDQsNyArMjM0MCw3IEBACiAgICAgPExpbms+CiAgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmxkLmxpYjtsaWJlYXkzMi5saWI7c3NsZWF5MzIubGliO2xpYnNzaDJkLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKTsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjMyXFZDMTBcRExMIERlYnVnOy4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcYnVpbGRcV2luMzJcVkMxMFxETEwgRGVidWc7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTRcJChDb25maWd1cmF0aW9uKTsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjMyXFZDMTRcRExMIERlYnVnOy4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcYnVpbGRcV2luMzJcVkMxNFxETEwgRGVidWc7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KICAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgogICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CiAgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KQEAgLTE5MjUsNyArMjM2MSw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTE5MzYsNyArMjM3Miw3IEBACiAgICAgPExpbms+CiAgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmxkLmxpYjtsaWJlYXkzMi5saWI7c3NsZWF5MzIubGliO2xpYnNzaDJkLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKTsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjY0XFZDMTBcRExMIERlYnVnOy4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcYnVpbGRcV2luNjRcVkMxMFxETEwgRGVidWc7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTRcJChDb25maWd1cmF0aW9uKTsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjY0XFZDMTRcRExMIERlYnVnOy4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcYnVpbGRcV2luNjRcVkMxNFxETEwgRGVidWc7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KICAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgogICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CiAgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KQEAgLTE5NTcsNyArMjM5Myw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTk2Nyw3ICsyNDAzLDcgQEAKICAgICA8TGluaz4KICAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybC5saWI7bGliZWF5MzIubGliO3NzbGVheTMyLmxpYjtsaWJzc2gyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKTsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjMyXFZDMTBcRExMIFJlbGVhc2U7Li5cLi5cLi5cLi5cLi5cbGlic3NoMlxidWlsZFxXaW4zMlxWQzEwXERMTCBSZWxlYXNlOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbik7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW4zMlxWQzE0XERMTCBSZWxlYXNlOy4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcYnVpbGRcV2luMzJcVkMxNFxETEwgUmVsZWFzZTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgogICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CiAgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgogICAgIDwvTGluaz4KQEAgLTE5ODcsNyArMjQyMyw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTk5Nyw3ICsyNDMzLDcgQEAKICAgICA8TGluaz4KICAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybC5saWI7bGlic3NoMi5saWI7bGliZWF5MzIubGliO3NzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKTsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjY0XFZDMTBcRExMIFJlbGVhc2U7Li5cLi5cLi5cLi5cLi5cbGlic3NoMlxidWlsZFxXaW42NFxWQzEwXERMTCBSZWxlYXNlOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbik7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW42NFxWQzE0XERMTCBSZWxlYXNlOy4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcYnVpbGRcV2luNjRcVkMxNFxETEwgUmVsZWFzZTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgogICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CiAgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgogICAgIDwvTGluaz4KQEAgLTIwMTUsNyArMjQ1MSw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTIwMjYsNyArMjQ2Miw3IEBACiAgICAgPExpbms+CiAgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmxkLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTBcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxNFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CiAgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KICAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgogICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CkBAIC0yMDQ2LDcgKzI0ODIsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0yMDU3LDcgKzI0OTMsNyBAQAogICAgIDxMaW5rPgogICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtub3JtYWxpei5saWI7bGliY3VybGQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KICAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgogICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CiAgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KQEAgLTIwNzgsNyArMjUxNCw3IEBACiAgICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+CiAgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTIwODksNyArMjUyNSw3IEBACiAgICAgPExpbms+CiAgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmxkLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CiAgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KICAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgogICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CkBAIC0yMTEwLDcgKzI1NDYsNyBAQAogICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgogICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CiAgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC0yMTIxLDcgKzI1NTcsNyBAQAogICAgIDxMaW5rPgogICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjt3bGRhcDMyLmxpYjtub3JtYWxpei5saWI7bGliY3VybGQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KICAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgogICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+JChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CiAgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KQEAgLTIxNDIsNyArMjU3OCw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMjE1Miw3ICsyNTg4LDcgQEAKICAgICA8TGluaz4KICAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bGliY3VybC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KICAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+Ci0gICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzEwXCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDMTRcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgogICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CiAgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgogICAgIDwvTGluaz4KQEAgLTIxNzEsNyArMjYwNyw3IEBACiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgogICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWw0PC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMjE4MSw3ICsyNjE3LDcgQEAKICAgICA8TGluaz4KICAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7d2xkYXAzMi5saWI7bm9ybWFsaXoubGliO2xpYmN1cmwubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkMxMFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzE0XCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KICAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KICAgICA8L0xpbms+CkBAIC0yMjAxLDcgKzI2MzcsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTIyMTEsNyArMjY0Nyw3IEBACiAgICAgPExpbms+CiAgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO2xpYmN1cmwubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxMFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4uLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzE0XCQoQ29uZmlndXJhdGlvbik7JShBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KICAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KICAgICA8L0xpbms+CkBAIC0yMjMxLDcgKzI2NjcsNyBAQAogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsNDwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KQEAgLTIyNDEsNyArMjY3Nyw3IEBACiAgICAgPExpbms+CiAgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO3dsZGFwMzIubGliO25vcm1hbGl6LmxpYjtsaWJjdXJsLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDMTBcJChDb25maWd1cmF0aW9uKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+Li5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkMxNFwkKENvbmZpZ3VyYXRpb24pOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CiAgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KICAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CiAgICAgPC9MaW5rPgpkaWZmIC0tZ2l0IGEvcHJvamVjdHMvV2luZG93cy9WQzE0L3NyYy9jdXJsLnZjeHByb2ouZmlsdGVycyBiL3Byb2plY3RzL1dpbmRvd3MvVkMxNC9zcmMvY3VybC52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQ2MzQxZAotLS0gL2Rldi9udWxsCisrKyBiL3Byb2plY3RzL1dpbmRvd3MvVkMxNC9zcmMvY3VybC52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwxNyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmNwcDtjO2NjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214PC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns5Mzk5NTM4MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+aDtoaDtocHA7aHh4O2htO2lubDtpbmM7eHNkPC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iUmVzb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezY3REE2QUI2LUY4MDAtNGMwOC04QjdBLTgzQkIxMjFBQUQwMX08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5yYztpY287Y3VyO2JtcDtkbGc7cmMyO3JjdDtiaW47cmdzO2dpZjtqcGc7anBlZztqcGU7cmVzeDt0aWZmO3RpZjtwbmc7d2F2O21mY3JpYmJvbi1tczwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvcHJvamVjdHMvV2luZG93cy9WQzYvY3VybC1hbGwuZHN3IGIvcHJvamVjdHMvV2luZG93cy9WQzYvY3VybC1hbGwuZHN3CmluZGV4IDBkMzY4ZDYuLmE3MThlNTkgMTAwNjQ0Ci0tLSBhL3Byb2plY3RzL1dpbmRvd3MvVkM2L2N1cmwtYWxsLmRzdworKysgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDNi9jdXJsLWFsbC5kc3cKQEAgLTE1LDcgKzE1LDcgQEAKIA0KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiANCi1Qcm9qZWN0OiAiY3VybHNyYyI9Ii5cc3JjXGN1cmxzcmMuZHNwIiAtIFBhY2thZ2UgT3duZXI9PDQ+DQorUHJvamVjdDogImN1cmwiPSIuXHNyY1xjdXJsLmRzcCIgLSBQYWNrYWdlIE93bmVyPTw0Pg0KIA0KIFBhY2thZ2U9PDU+DQoge3t7DQpkaWZmIC0tZ2l0IGEvcHJvamVjdHMvV2luZG93cy9WQzYvbGliL2xpYmN1cmwudG1wbCBiL3Byb2plY3RzL1dpbmRvd3MvVkM2L2xpYi9saWJjdXJsLnRtcGwKaW5kZXggNzRjOGM5Yy4uYzc2ZWM3OCAxMDA2NDQKLS0tIGEvcHJvamVjdHMvV2luZG93cy9WQzYvbGliL2xpYmN1cmwudG1wbAorKysgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDNi9saWIvbGliY3VybC50bXBsCkBAIC02Myw4ICs2Myw4IEBACiAjIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMAogIyBQUk9QIFRhcmdldF9EaXIgIiIKIENQUD1jbC5leGUKLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9EICJfREVCVUciIC9EICJCVUlMRElOR19MSUJDVVJMIiAvRCAiREVCVUdCVUlMRCIgL0ZEIC9FSHNjIC9HWiAvYwotIyBBREQgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9EICJfREVCVUciIC9EICJCVUlMRElOR19MSUJDVVJMIiAvRCAiREVCVUdCVUlMRCIgL0ZEIC9FSHNjIC9HWiAvYworIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTURkIC9XNCAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0QgIl9ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJERUJVR0JVSUxEIiAvRkQgL0VIc2MgL0daIC9jCisjIEFERCBDUFAgL25vbG9nbyAvTURkIC9XNCAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0QgIl9ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJERUJVR0JVSUxEIiAvRkQgL0VIc2MgL0daIC9jCiBNVEw9bWlkbC5leGUKICMgQUREIEJBU0UgTVRMIC9ub2xvZ28gL0QgIl9ERUJVRyIgL3dpbjMyCiAjIEFERCBNVEwgL25vbG9nbyAvRCAiX0RFQlVHIiAvd2luMzIKQEAgLTkzLDggKzkzLDggQEAKICMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwCiAjIFBST1AgVGFyZ2V0X0RpciAiIgogQ1BQPWNsLmV4ZQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTURkIC9XMyAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcaW5jMzIiIC9EICJfREVCVUciIC9EICJCVUlMRElOR19MSUJDVVJMIiAvRCAiREVCVUdCVUlMRCIgL0QgIlVTRV9PUEVOU1NMIiAvRkQgL0VIc2MgL0daIC9jCi0jIEFERCBDUFAgL25vbG9nbyAvTURkIC9XMyAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcaW5jMzIiIC9EICJfREVCVUciIC9EICJCVUlMRElOR19MSUJDVVJMIiAvRCAiREVCVUdCVUlMRCIgL0QgIlVTRV9PUEVOU1NMIiAvRkQgL0VIc2MgL0daIC9jCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRGQgL1c0IC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cLi5cb3BlbnNzbFxpbmMzMiIgL0QgIl9ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJERUJVR0JVSUxEIiAvRCAiVVNFX09QRU5TU0wiIC9GRCAvRUhzYyAvR1ogL2MKKyMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1c0IC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cLi5cb3BlbnNzbFxpbmMzMiIgL0QgIl9ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJERUJVR0JVSUxEIiAvRCAiVVNFX09QRU5TU0wiIC9GRCAvRUhzYyAvR1ogL2MKIE1UTD1taWRsLmV4ZQogIyBBREQgQkFTRSBNVEwgL25vbG9nbyAvRCAiX0RFQlVHIiAvd2luMzIKICMgQUREIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC93aW4zMgpAQCAtMTIzLDggKzEyMyw4IEBACiAjIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMAogIyBQUk9QIFRhcmdldF9EaXIgIiIKIENQUD1jbC5leGUKLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGluYzMyIiAvSSAiLi5cLi5cLi5cLi5cLi5cbGlic3NoMlxpbmNsdWRlIiAvRCAiX0RFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIkRFQlVHQlVJTEQiIC9EICJVU0VfT1BFTlNTTCIgL0QgIlVTRV9MSUJTU0gyIiAvRCAiSEFWRV9MSUJTU0gyX0giIC9GRCAvRUhzYyAvR1ogL2MKLSMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1czIC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cLi5cb3BlbnNzbFxpbmMzMiIgL0kgIi4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcaW5jbHVkZSIgL0QgIl9ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJERUJVR0JVSUxEIiAvRCAiVVNFX09QRU5TU0wiIC9EICJVU0VfTElCU1NIMiIgL0QgIkhBVkVfTElCU1NIMl9IIiAvRkQgL0VIc2MgL0daIC9jCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRGQgL1c0IC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cLi5cb3BlbnNzbFxpbmMzMiIgL0kgIi4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcaW5jbHVkZSIgL0QgIl9ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJERUJVR0JVSUxEIiAvRCAiVVNFX09QRU5TU0wiIC9EICJVU0VfTElCU1NIMiIgL0QgIkhBVkVfTElCU1NIMl9IIiAvRkQgL0VIc2MgL0daIC9jCisjIEFERCBDUFAgL25vbG9nbyAvTURkIC9XNCAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcaW5jMzIiIC9JICIuLlwuLlwuLlwuLlwuLlxsaWJzc2gyXGluY2x1ZGUiIC9EICJfREVCVUciIC9EICJCVUlMRElOR19MSUJDVVJMIiAvRCAiREVCVUdCVUlMRCIgL0QgIlVTRV9PUEVOU1NMIiAvRCAiVVNFX0xJQlNTSDIiIC9EICJIQVZFX0xJQlNTSDJfSCIgL0ZEIC9FSHNjIC9HWiAvYwogTVRMPW1pZGwuZXhlCiAjIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC93aW4zMgogIyBBREQgTVRMIC9ub2xvZ28gL0QgIl9ERUJVRyIgL3dpbjMyCkBAIC0xNTMsOCArMTUzLDggQEAKICMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwCiAjIFBST1AgVGFyZ2V0X0RpciAiIgogQ1BQPWNsLmV4ZQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTURkIC9XMyAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0QgIl9ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJERUJVR0JVSUxEIiAvRkQgL0VIc2MgL0daIC9jCi0jIEFERCBDUFAgL25vbG9nbyAvTURkIC9XMyAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0QgIl9ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJERUJVR0JVSUxEIiAvRCAiVVNFX1dJTkRPV1NfU1NQSSIgL0QgIlVTRV9TQ0hBTk5FTCIgL0ZEIC9FSHNjIC9HWiAvYworIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTURkIC9XNCAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0QgIl9ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJERUJVR0JVSUxEIiAvRkQgL0VIc2MgL0daIC9jCisjIEFERCBDUFAgL25vbG9nbyAvTURkIC9XNCAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0QgIl9ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJERUJVR0JVSUxEIiAvRCAiVVNFX1dJTkRPV1NfU1NQSSIgL0QgIlVTRV9TQ0hBTk5FTCIgL0ZEIC9FSHNjIC9HWiAvYwogTVRMPW1pZGwuZXhlCiAjIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC93aW4zMgogIyBBREQgTVRMIC9ub2xvZ28gL0QgIl9ERUJVRyIgL3dpbjMyCkBAIC0xODMsOCArMTgzLDggQEAKICMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwCiAjIFBST1AgVGFyZ2V0X0RpciAiIgogQ1BQPWNsLmV4ZQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTURkIC9XMyAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0QgIl9ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJERUJVR0JVSUxEIiAvRCAiVVNFX1dJTkRPV1NfU1NQSSIgL0QgIlVTRV9TQ0hBTk5FTCIgL0QgIlVTRV9XSU4zMl9JRE4iIC9EICJXQU5UX0lETl9QUk9UT1RZUEVTIiAvRkQgL0VIc2MgL0daIC9jCi0jIEFERCBDUFAgL25vbG9nbyAvTURkIC9XMyAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0QgIl9ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJERUJVR0JVSUxEIiAvRCAiVVNFX1dJTkRPV1NfU1NQSSIgL0QgIlVTRV9TQ0hBTk5FTCIgL0QgIlVTRV9XSU4zMl9JRE4iIC9EICJXQU5UX0lETl9QUk9UT1RZUEVTIiAvRkQgL0VIc2MgL0daIC9jCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRGQgL1c0IC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvRCAiX0RFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIkRFQlVHQlVJTEQiIC9EICJVU0VfV0lORE9XU19TU1BJIiAvRCAiVVNFX1NDSEFOTkVMIiAvRCAiVVNFX1dJTjMyX0lETiIgL0QgIldBTlRfSUROX1BST1RPVFlQRVMiIC9GRCAvRUhzYyAvR1ogL2MKKyMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1c0IC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvRCAiX0RFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIkRFQlVHQlVJTEQiIC9EICJVU0VfV0lORE9XU19TU1BJIiAvRCAiVVNFX1NDSEFOTkVMIiAvRCAiVVNFX1dJTjMyX0lETiIgL0QgIldBTlRfSUROX1BST1RPVFlQRVMiIC9GRCAvRUhzYyAvR1ogL2MKIE1UTD1taWRsLmV4ZQogIyBBREQgQkFTRSBNVEwgL25vbG9nbyAvRCAiX0RFQlVHIiAvd2luMzIKICMgQUREIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC93aW4zMgpAQCAtMjEyLDggKzIxMiw4IEBACiAjIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMAogIyBQUk9QIFRhcmdldF9EaXIgIiIKIENQUD1jbC5leGUKLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EIC9XMyAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvRCAiTkRFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0ZEIC9FSHNjIC9jCi0jIEFERCBDUFAgL25vbG9nbyAvTUQgL1czIC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9EICJOREVCVUciIC9EICJCVUlMRElOR19MSUJDVVJMIiAvRkQgL0VIc2MgL2MKKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EIC9XNCAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvRCAiTkRFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0ZEIC9FSHNjIC9jCisjIEFERCBDUFAgL25vbG9nbyAvTUQgL1c0IC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9EICJOREVCVUciIC9EICJCVUlMRElOR19MSUJDVVJMIiAvRkQgL0VIc2MgL2MKIE1UTD1taWRsLmV4ZQogIyBBREQgQkFTRSBNVEwgL25vbG9nbyAvRCAiTkRFQlVHIiAvd2luMzIKICMgQUREIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC93aW4zMgpAQCAtMjQyLDggKzI0Miw4IEBACiAjIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMAogIyBQUk9QIFRhcmdldF9EaXIgIiIKIENQUD1jbC5leGUKLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EIC9XMyAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cLi5cb3BlbnNzbFxpbmMzMiIgL0QgIk5ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJVU0VfT1BFTlNTTCIgL0ZEIC9FSHNjIC9jCi0jIEFERCBDUFAgL25vbG9nbyAvTUQgL1czIC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGluYzMyIiAvRCAiTkRFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIlVTRV9PUEVOU1NMIiAvRkQgL0VIc2MgL2MKKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EIC9XNCAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cLi5cb3BlbnNzbFxpbmMzMiIgL0QgIk5ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJVU0VfT1BFTlNTTCIgL0ZEIC9FSHNjIC9jCisjIEFERCBDUFAgL25vbG9nbyAvTUQgL1c0IC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGluYzMyIiAvRCAiTkRFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIlVTRV9PUEVOU1NMIiAvRkQgL0VIc2MgL2MKIE1UTD1taWRsLmV4ZQogIyBBREQgQkFTRSBNVEwgL25vbG9nbyAvRCAiTkRFQlVHIiAvd2luMzIKICMgQUREIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC93aW4zMgpAQCAtMjcyLDggKzI3Miw4IEBACiAjIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMAogIyBQUk9QIFRhcmdldF9EaXIgIiIKIENQUD1jbC5leGUKLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EIC9XMyAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cLi5cb3BlbnNzbFxpbmMzMiIgL0kgIi4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcaW5jbHVkZSIgL0QgIk5ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJVU0VfT1BFTlNTTCIgL0QgIlVTRV9MSUJTU0gyIiAvRCAiSEFWRV9MSUJTU0gyX0giIC9GRCAvRUhzYyAvYwotIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XMyAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cLi5cb3BlbnNzbFxpbmMzMiIgL0kgIi4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcaW5jbHVkZSIgL0QgIk5ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJVU0VfT1BFTlNTTCIgL0QgIlVTRV9MSUJTU0gyIiAvRCAiSEFWRV9MSUJTU0gyX0giIC9GRCAvRUhzYyAvYworIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTUQgL1c0IC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGluYzMyIiAvSSAiLi5cLi5cLi5cLi5cLi5cbGlic3NoMlxpbmNsdWRlIiAvRCAiTkRFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIlVTRV9PUEVOU1NMIiAvRCAiVVNFX0xJQlNTSDIiIC9EICJIQVZFX0xJQlNTSDJfSCIgL0ZEIC9FSHNjIC9jCisjIEFERCBDUFAgL25vbG9nbyAvTUQgL1c0IC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGluYzMyIiAvSSAiLi5cLi5cLi5cLi5cLi5cbGlic3NoMlxpbmNsdWRlIiAvRCAiTkRFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIlVTRV9PUEVOU1NMIiAvRCAiVVNFX0xJQlNTSDIiIC9EICJIQVZFX0xJQlNTSDJfSCIgL0ZEIC9FSHNjIC9jCiBNVEw9bWlkbC5leGUKICMgQUREIEJBU0UgTVRMIC9ub2xvZ28gL0QgIk5ERUJVRyIgL3dpbjMyCiAjIEFERCBNVEwgL25vbG9nbyAvRCAiTkRFQlVHIiAvd2luMzIKQEAgLTMwMiw4ICszMDIsOCBAQAogIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDAKICMgUFJPUCBUYXJnZXRfRGlyICIiCiBDUFA9Y2wuZXhlCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRCAvVzMgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0QgIk5ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9GRCAvRUhzYyAvYwotIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XMyAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvRCAiTkRFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIlVTRV9XSU5ET1dTX1NTUEkiIC9EICJVU0VfU0NIQU5ORUwiIC9GRCAvRUhzYyAvYworIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTUQgL1c0IC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9EICJOREVCVUciIC9EICJCVUlMRElOR19MSUJDVVJMIiAvRkQgL0VIc2MgL2MKKyMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzQgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0QgIk5ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJVU0VfV0lORE9XU19TU1BJIiAvRCAiVVNFX1NDSEFOTkVMIiAvRkQgL0VIc2MgL2MKIE1UTD1taWRsLmV4ZQogIyBBREQgQkFTRSBNVEwgL25vbG9nbyAvRCAiTkRFQlVHIiAvd2luMzIKICMgQUREIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC93aW4zMgpAQCAtMzMyLDggKzMzMiw4IEBACiAjIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMAogIyBQUk9QIFRhcmdldF9EaXIgIiIKIENQUD1jbC5leGUKLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EIC9XMyAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvRCAiTkRFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIlVTRV9XSU5ET1dTX1NTUEkiIC9EICJVU0VfU0NIQU5ORUwiIC9EICJVU0VfV0lOMzJfSUROIiAvRCAiV0FOVF9JRE5fUFJPVE9UWVBFUyIgL0ZEIC9FSHNjIC9jCi0jIEFERCBDUFAgL25vbG9nbyAvTUQgL1czIC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9EICJOREVCVUciIC9EICJCVUlMRElOR19MSUJDVVJMIiAvRCAiVVNFX1dJTkRPV1NfU1NQSSIgL0QgIlVTRV9TQ0hBTk5FTCIgL0QgIlVTRV9XSU4zMl9JRE4iIC9EICJXQU5UX0lETl9QUk9UT1RZUEVTIiAvRkQgL0VIc2MgL2MKKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EIC9XNCAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvRCAiTkRFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIlVTRV9XSU5ET1dTX1NTUEkiIC9EICJVU0VfU0NIQU5ORUwiIC9EICJVU0VfV0lOMzJfSUROIiAvRCAiV0FOVF9JRE5fUFJPVE9UWVBFUyIgL0ZEIC9FSHNjIC9jCisjIEFERCBDUFAgL25vbG9nbyAvTUQgL1c0IC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9EICJOREVCVUciIC9EICJCVUlMRElOR19MSUJDVVJMIiAvRCAiVVNFX1dJTkRPV1NfU1NQSSIgL0QgIlVTRV9TQ0hBTk5FTCIgL0QgIlVTRV9XSU4zMl9JRE4iIC9EICJXQU5UX0lETl9QUk9UT1RZUEVTIiAvRkQgL0VIc2MgL2MKIE1UTD1taWRsLmV4ZQogIyBBREQgQkFTRSBNVEwgL25vbG9nbyAvRCAiTkRFQlVHIiAvd2luMzIKICMgQUREIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC93aW4zMgpAQCAtMzYwLDggKzM2MCw4IEBACiAjIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XExJQiBEZWJ1Z1xsaWIiCiAjIFBST1AgVGFyZ2V0X0RpciAiIgogQ1BQPWNsLmV4ZQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTURkIC9XMyAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0QgIl9ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJERUJVR0JVSUxEIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9GRCAvRUhzYyAvR1ogL2MKLSMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1czIC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvRCAiX0RFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIkRFQlVHQlVJTEQiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0ZEIC9FSHNjIC9HWiAvYworIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTURkIC9XNCAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0QgIl9ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJERUJVR0JVSUxEIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9GRCAvRUhzYyAvR1ogL2MKKyMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1c0IC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvRCAiX0RFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIkRFQlVHQlVJTEQiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0ZEIC9FSHNjIC9HWiAvYwogUlNDPXJjLmV4ZQogIyBBREQgQkFTRSBSU0MgL2wgMHg0MDkgL2QgIl9ERUJVRyIKICMgQUREIFJTQyAvbCAweDQwOSAvZCAiX0RFQlVHIgpAQCAtMzg1LDggKzM4NSw4IEBACiAjIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMXGxpYiIKICMgUFJPUCBUYXJnZXRfRGlyICIiCiBDUFA9Y2wuZXhlCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRGQgL1czIC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cLi5cb3BlbnNzbFxpbmMzMiIgL0QgIl9ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJERUJVR0JVSUxEIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9EICJVU0VfT1BFTlNTTCIgL0ZEIC9FSHNjIC9HWiAvYwotIyBBREQgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGluYzMyIiAvRCAiX0RFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIkRFQlVHQlVJTEQiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0QgIlVTRV9PUEVOU1NMIiAvRkQgL0VIc2MgL0daIC9jCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRGQgL1c0IC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cLi5cb3BlbnNzbFxpbmMzMiIgL0QgIl9ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJERUJVR0JVSUxEIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9EICJVU0VfT1BFTlNTTCIgL0ZEIC9FSHNjIC9HWiAvYworIyBBREQgQ1BQIC9ub2xvZ28gL01EZCAvVzQgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGluYzMyIiAvRCAiX0RFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIkRFQlVHQlVJTEQiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0QgIlVTRV9PUEVOU1NMIiAvRkQgL0VIc2MgL0daIC9jCiBSU0M9cmMuZXhlCiAjIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvZCAiX0RFQlVHIgogIyBBREQgUlNDIC9sIDB4NDA5IC9kICJfREVCVUciCkBAIC00MTAsOCArNDEwLDggQEAKICMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMlxsaWIiCiAjIFBST1AgVGFyZ2V0X0RpciAiIgogQ1BQPWNsLmV4ZQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTURkIC9XMyAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcaW5jMzIiIC9JICIuLlwuLlwuLlwuLlwuLlxsaWJzc2gyXGluY2x1ZGUiIC9EICJfREVCVUciIC9EICJCVUlMRElOR19MSUJDVVJMIiAvRCAiREVCVUdCVUlMRCIgL0QgIkNVUkxfU1RBVElDTElCIiAvRCAiVVNFX09QRU5TU0wiIC9EICJVU0VfTElCU1NIMiIgL0QgIkhBVkVfTElCU1NIMl9IIiAvRkQgL0VIc2MgL0daIC9jCi0jIEFERCBDUFAgL25vbG9nbyAvTURkIC9XMyAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcaW5jMzIiIC9JICIuLlwuLlwuLlwuLlwuLlxsaWJzc2gyXGluY2x1ZGUiIC9EICJfREVCVUciIC9EICJCVUlMRElOR19MSUJDVVJMIiAvRCAiREVCVUdCVUlMRCIgL0QgIkNVUkxfU1RBVElDTElCIiAvRCAiVVNFX09QRU5TU0wiIC9EICJVU0VfTElCU1NIMiIgL0QgIkhBVkVfTElCU1NIMl9IIiAvRkQgL0VIc2MgL0daIC9jCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRGQgL1c0IC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cLi5cb3BlbnNzbFxpbmMzMiIgL0kgIi4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcaW5jbHVkZSIgL0QgIl9ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJERUJVR0JVSUxEIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9EICJVU0VfT1BFTlNTTCIgL0QgIlVTRV9MSUJTU0gyIiAvRCAiSEFWRV9MSUJTU0gyX0giIC9GRCAvRUhzYyAvR1ogL2MKKyMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1c0IC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cLi5cb3BlbnNzbFxpbmMzMiIgL0kgIi4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcaW5jbHVkZSIgL0QgIl9ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJERUJVR0JVSUxEIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9EICJVU0VfT1BFTlNTTCIgL0QgIlVTRV9MSUJTU0gyIiAvRCAiSEFWRV9MSUJTU0gyX0giIC9GRCAvRUhzYyAvR1ogL2MKIFJTQz1yYy5leGUKICMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9kICJfREVCVUciCiAjIEFERCBSU0MgL2wgMHg0MDkgL2QgIl9ERUJVRyIKQEAgLTQzNSw4ICs0MzUsOCBAQAogIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJXGxpYiIKICMgUFJPUCBUYXJnZXRfRGlyICIiCiBDUFA9Y2wuZXhlCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRGQgL1czIC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvRCAiX0RFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIkRFQlVHQlVJTEQiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0ZEIC9FSHNjIC9HWiAvYwotIyBBREQgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9EICJfREVCVUciIC9EICJCVUlMRElOR19MSUJDVVJMIiAvRCAiREVCVUdCVUlMRCIgL0QgIkNVUkxfU1RBVElDTElCIiAvRCAiVVNFX1dJTkRPV1NfU1NQSSIgL0QgIlVTRV9TQ0hBTk5FTCIgL0ZEIC9FSHNjIC9HWiAvYworIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTURkIC9XNCAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0QgIl9ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJERUJVR0JVSUxEIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9GRCAvRUhzYyAvR1ogL2MKKyMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1c0IC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvRCAiX0RFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIkRFQlVHQlVJTEQiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0QgIlVTRV9XSU5ET1dTX1NTUEkiIC9EICJVU0VfU0NIQU5ORUwiIC9GRCAvRUhzYyAvR1ogL2MKIFJTQz1yYy5leGUKICMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9kICJfREVCVUciCiAjIEFERCBSU0MgL2wgMHg0MDkgL2QgIl9ERUJVRyIKQEAgLTQ2MCw4ICs0NjAsOCBAQAogIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETlxsaWIiCiAjIFBST1AgVGFyZ2V0X0RpciAiIgogQ1BQPWNsLmV4ZQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTURkIC9XMyAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0QgIl9ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJERUJVR0JVSUxEIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9EICJVU0VfV0lORE9XU19TU1BJIiAvRCAiVVNFX1NDSEFOTkVMIiAvRCAiVVNFX1dJTjMyX0lETiIgL0QgIldBTlRfSUROX1BST1RPVFlQRVMiIC9GRCAvRUhzYyAvR1ogL2MKLSMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1czIC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvRCAiX0RFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIkRFQlVHQlVJTEQiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0QgIlVTRV9XSU5ET1dTX1NTUEkiIC9EICJVU0VfU0NIQU5ORUwiIC9EICJVU0VfV0lOMzJfSUROIiAvRCAiV0FOVF9JRE5fUFJPVE9UWVBFUyIgL0ZEIC9FSHNjIC9HWiAvYworIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTURkIC9XNCAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0QgIl9ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJERUJVR0JVSUxEIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9EICJVU0VfV0lORE9XU19TU1BJIiAvRCAiVVNFX1NDSEFOTkVMIiAvRCAiVVNFX1dJTjMyX0lETiIgL0QgIldBTlRfSUROX1BST1RPVFlQRVMiIC9GRCAvRUhzYyAvR1ogL2MKKyMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1c0IC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvRCAiX0RFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIkRFQlVHQlVJTEQiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0QgIlVTRV9XSU5ET1dTX1NTUEkiIC9EICJVU0VfU0NIQU5ORUwiIC9EICJVU0VfV0lOMzJfSUROIiAvRCAiV0FOVF9JRE5fUFJPVE9UWVBFUyIgL0ZEIC9FSHNjIC9HWiAvYwogUlNDPXJjLmV4ZQogIyBBREQgQkFTRSBSU0MgL2wgMHg0MDkgL2QgIl9ERUJVRyIKICMgQUREIFJTQyAvbCAweDQwOSAvZCAiX0RFQlVHIgpAQCAtNDg1LDggKzQ4NSw4IEBACiAjIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMXGxpYiIKICMgUFJPUCBUYXJnZXRfRGlyICIiCiBDUFA9Y2wuZXhlCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRGQgL1czIC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cLi5cb3BlbnNzbFxpbmMzMiIgL0QgIl9ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJERUJVR0JVSUxEIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9EICJVU0VfT1BFTlNTTCIgL0ZEIC9FSHNjIC9HWiAvYwotIyBBREQgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGluYzMyIiAvRCAiX0RFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIkRFQlVHQlVJTEQiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0QgIlVTRV9PUEVOU1NMIiAvRkQgL0VIc2MgL0daIC9jCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRGQgL1c0IC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cLi5cb3BlbnNzbFxpbmMzMiIgL0QgIl9ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJERUJVR0JVSUxEIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9EICJVU0VfT1BFTlNTTCIgL0ZEIC9FSHNjIC9HWiAvYworIyBBREQgQ1BQIC9ub2xvZ28gL01EZCAvVzQgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGluYzMyIiAvRCAiX0RFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIkRFQlVHQlVJTEQiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0QgIlVTRV9PUEVOU1NMIiAvRkQgL0VIc2MgL0daIC9jCiBSU0M9cmMuZXhlCiAjIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvZCAiX0RFQlVHIgogIyBBREQgUlNDIC9sIDB4NDA5IC9kICJfREVCVUciCkBAIC01MTAsOCArNTEwLDggQEAKICMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMlxsaWIiCiAjIFBST1AgVGFyZ2V0X0RpciAiIgogQ1BQPWNsLmV4ZQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTURkIC9XMyAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcaW5jMzIiIC9JICIuLlwuLlwuLlwuLlwuLlxsaWJzc2gyXGluY2x1ZGUiIC9EICJfREVCVUciIC9EICJCVUlMRElOR19MSUJDVVJMIiAvRCAiREVCVUdCVUlMRCIgL0QgIkNVUkxfU1RBVElDTElCIiAvRCAiVVNFX09QRU5TU0wiIC9EICJVU0VfTElCU1NIMiIgL0QgIkhBVkVfTElCU1NIMl9IIiAvRkQgL0VIc2MgL0daIC9jCi0jIEFERCBDUFAgL25vbG9nbyAvTURkIC9XMyAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcaW5jMzIiIC9JICIuLlwuLlwuLlwuLlwuLlxsaWJzc2gyXGluY2x1ZGUiIC9EICJfREVCVUciIC9EICJCVUlMRElOR19MSUJDVVJMIiAvRCAiREVCVUdCVUlMRCIgL0QgIkNVUkxfU1RBVElDTElCIiAvRCAiVVNFX09QRU5TU0wiIC9EICJVU0VfTElCU1NIMiIgL0QgIkhBVkVfTElCU1NIMl9IIiAvRkQgL0VIc2MgL0daIC9jCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRGQgL1c0IC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cLi5cb3BlbnNzbFxpbmMzMiIgL0kgIi4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcaW5jbHVkZSIgL0QgIl9ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJERUJVR0JVSUxEIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9EICJVU0VfT1BFTlNTTCIgL0QgIlVTRV9MSUJTU0gyIiAvRCAiSEFWRV9MSUJTU0gyX0giIC9GRCAvRUhzYyAvR1ogL2MKKyMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1c0IC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cLi5cb3BlbnNzbFxpbmMzMiIgL0kgIi4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcaW5jbHVkZSIgL0QgIl9ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJERUJVR0JVSUxEIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9EICJVU0VfT1BFTlNTTCIgL0QgIlVTRV9MSUJTU0gyIiAvRCAiSEFWRV9MSUJTU0gyX0giIC9GRCAvRUhzYyAvR1ogL2MKIFJTQz1yYy5leGUKICMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9kICJfREVCVUciCiAjIEFERCBSU0MgL2wgMHg0MDkgL2QgIl9ERUJVRyIKQEAgLTUzNSw4ICs1MzUsOCBAQAogIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxMSUIgUmVsZWFzZVxsaWIiCiAjIFBST1AgVGFyZ2V0X0RpciAiIgogQ1BQPWNsLmV4ZQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTUQgL1czIC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9EICJOREVCVUciIC9EICJCVUlMRElOR19MSUJDVVJMIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9GRCAvRUhzYyAvYwotIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XMyAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvRCAiTkRFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIkNVUkxfU1RBVElDTElCIiAvRkQgL0VIc2MgL2MKKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EIC9XNCAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvRCAiTkRFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIkNVUkxfU1RBVElDTElCIiAvRkQgL0VIc2MgL2MKKyMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzQgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0QgIk5ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0ZEIC9FSHNjIC9jCiBSU0M9cmMuZXhlCiAjIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvZCAiTkRFQlVHIgogIyBBREQgUlNDIC9sIDB4NDA5IC9kICJOREVCVUciCkBAIC01NjAsOCArNTYwLDggQEAKICMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTFxsaWIiCiAjIFBST1AgVGFyZ2V0X0RpciAiIgogQ1BQPWNsLmV4ZQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTUQgL1czIC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGluYzMyIiAvRCAiTkRFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIkNVUkxfU1RBVElDTElCIiAvRCAiVVNFX09QRU5TU0wiIC9GRCAvRUhzYyAvYwotIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XMyAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cLi5cb3BlbnNzbFxpbmMzMiIgL0QgIk5ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0QgIlVTRV9PUEVOU1NMIiAvRkQgL0VIc2MgL2MKKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EIC9XNCAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cLi5cb3BlbnNzbFxpbmMzMiIgL0QgIk5ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0QgIlVTRV9PUEVOU1NMIiAvRkQgL0VIc2MgL2MKKyMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzQgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcaW5jMzIiIC9EICJOREVCVUciIC9EICJCVUlMRElOR19MSUJDVVJMIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9EICJVU0VfT1BFTlNTTCIgL0ZEIC9FSHNjIC9jCiBSU0M9cmMuZXhlCiAjIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvZCAiTkRFQlVHIgogIyBBREQgUlNDIC9sIDB4NDA5IC9kICJOREVCVUciCkBAIC01ODUsOCArNTg1LDggQEAKICMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyXGxpYiIKICMgUFJPUCBUYXJnZXRfRGlyICIiCiBDUFA9Y2wuZXhlCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRCAvVzMgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcaW5jMzIiIC9JICIuLlwuLlwuLlwuLlwuLlxsaWJzc2gyXGluY2x1ZGUiIC9EICJOREVCVUciIC9EICJCVUlMRElOR19MSUJDVVJMIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9EICJVU0VfT1BFTlNTTCIgL0QgIlVTRV9MSUJTU0gyIiAvRCAiSEFWRV9MSUJTU0gyX0giIC9GRCAvRUhzYyAvYwotIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XMyAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cLi5cb3BlbnNzbFxpbmMzMiIgL0kgIi4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcaW5jbHVkZSIgL0QgIk5ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0QgIlVTRV9PUEVOU1NMIiAvRCAiVVNFX0xJQlNTSDIiIC9EICJIQVZFX0xJQlNTSDJfSCIgL0ZEIC9FSHNjIC9jCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRCAvVzQgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcaW5jMzIiIC9JICIuLlwuLlwuLlwuLlwuLlxsaWJzc2gyXGluY2x1ZGUiIC9EICJOREVCVUciIC9EICJCVUlMRElOR19MSUJDVVJMIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9EICJVU0VfT1BFTlNTTCIgL0QgIlVTRV9MSUJTU0gyIiAvRCAiSEFWRV9MSUJTU0gyX0giIC9GRCAvRUhzYyAvYworIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XNCAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cLi5cb3BlbnNzbFxpbmMzMiIgL0kgIi4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcaW5jbHVkZSIgL0QgIk5ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0QgIlVTRV9PUEVOU1NMIiAvRCAiVVNFX0xJQlNTSDIiIC9EICJIQVZFX0xJQlNTSDJfSCIgL0ZEIC9FSHNjIC9jCiBSU0M9cmMuZXhlCiAjIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvZCAiTkRFQlVHIgogIyBBREQgUlNDIC9sIDB4NDA5IC9kICJOREVCVUciCkBAIC02MTAsOCArNjEwLDggQEAKICMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJXGxpYiIKICMgUFJPUCBUYXJnZXRfRGlyICIiCiBDUFA9Y2wuZXhlCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRCAvVzMgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0QgIk5ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0ZEIC9FSHNjIC9jCi0jIEFERCBDUFAgL25vbG9nbyAvTUQgL1czIC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9EICJOREVCVUciIC9EICJCVUlMRElOR19MSUJDVVJMIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9EICJVU0VfV0lORE9XU19TU1BJIiAvRCAiVVNFX1NDSEFOTkVMIiAvRkQgL0VIc2MgL2MKKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EIC9XNCAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvRCAiTkRFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIkNVUkxfU1RBVElDTElCIiAvRkQgL0VIc2MgL2MKKyMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzQgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0QgIk5ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0QgIlVTRV9XSU5ET1dTX1NTUEkiIC9EICJVU0VfU0NIQU5ORUwiIC9GRCAvRUhzYyAvYwogUlNDPXJjLmV4ZQogIyBBREQgQkFTRSBSU0MgL2wgMHg0MDkgL2QgIk5ERUJVRyIKICMgQUREIFJTQyAvbCAweDQwOSAvZCAiTkRFQlVHIgpAQCAtNjM1LDggKzYzNSw4IEBACiAjIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XExJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE5cbGliIgogIyBQUk9QIFRhcmdldF9EaXIgIiIKIENQUD1jbC5leGUKLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EIC9XMyAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvRCAiTkRFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIkNVUkxfU1RBVElDTElCIiAvRCAiVVNFX1dJTkRPV1NfU1NQSSIgL0QgIlVTRV9TQ0hBTk5FTCIgL0QgIlVTRV9XSU4zMl9JRE4iIC9EICJXQU5UX0lETl9QUk9UT1RZUEVTIiAvRkQgL0VIc2MgL2MKLSMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzMgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0QgIk5ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0QgIlVTRV9XSU5ET1dTX1NTUEkiIC9EICJVU0VfU0NIQU5ORUwiIC9EICJVU0VfV0lOMzJfSUROIiAvRCAiV0FOVF9JRE5fUFJPVE9UWVBFUyIgL0ZEIC9FSHNjIC9jCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRCAvVzQgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0QgIk5ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0QgIlVTRV9XSU5ET1dTX1NTUEkiIC9EICJVU0VfU0NIQU5ORUwiIC9EICJVU0VfV0lOMzJfSUROIiAvRCAiV0FOVF9JRE5fUFJPVE9UWVBFUyIgL0ZEIC9FSHNjIC9jCisjIEFERCBDUFAgL25vbG9nbyAvTUQgL1c0IC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9EICJOREVCVUciIC9EICJCVUlMRElOR19MSUJDVVJMIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9EICJVU0VfV0lORE9XU19TU1BJIiAvRCAiVVNFX1NDSEFOTkVMIiAvRCAiVVNFX1dJTjMyX0lETiIgL0QgIldBTlRfSUROX1BST1RPVFlQRVMiIC9GRCAvRUhzYyAvYwogUlNDPXJjLmV4ZQogIyBBREQgQkFTRSBSU0MgL2wgMHg0MDkgL2QgIk5ERUJVRyIKICMgQUREIFJTQyAvbCAweDQwOSAvZCAiTkRFQlVHIgpAQCAtNjYwLDggKzY2MCw4IEBACiAjIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0xcbGliIgogIyBQUk9QIFRhcmdldF9EaXIgIiIKIENQUD1jbC5leGUKLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EIC9XMyAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cLi5cb3BlbnNzbFxpbmMzMiIgL0QgIk5ERUJVRyIgL0QgIkJVSUxESU5HX0xJQkNVUkwiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0QgIlVTRV9PUEVOU1NMIiAvRkQgL0VIc2MgL2MKLSMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzMgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcaW5jMzIiIC9EICJOREVCVUciIC9EICJCVUlMRElOR19MSUJDVVJMIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9EICJVU0VfT1BFTlNTTCIgL0ZEIC9FSHNjIC9jCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRCAvVzQgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcaW5jMzIiIC9EICJOREVCVUciIC9EICJCVUlMRElOR19MSUJDVVJMIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9EICJVU0VfT1BFTlNTTCIgL0ZEIC9FSHNjIC9jCisjIEFERCBDUFAgL25vbG9nbyAvTUQgL1c0IC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGluYzMyIiAvRCAiTkRFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIkNVUkxfU1RBVElDTElCIiAvRCAiVVNFX09QRU5TU0wiIC9GRCAvRUhzYyAvYwogUlNDPXJjLmV4ZQogIyBBREQgQkFTRSBSU0MgL2wgMHg0MDkgL2QgIk5ERUJVRyIKICMgQUREIFJTQyAvbCAweDQwOSAvZCAiTkRFQlVHIgpAQCAtNjg1LDggKzY4NSw4IEBACiAjIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMlxsaWIiCiAjIFBST1AgVGFyZ2V0X0RpciAiIgogQ1BQPWNsLmV4ZQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTUQgL1czIC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGluYzMyIiAvSSAiLi5cLi5cLi5cLi5cLi5cbGlic3NoMlxpbmNsdWRlIiAvRCAiTkRFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIkNVUkxfU1RBVElDTElCIiAvRCAiVVNFX09QRU5TU0wiIC9EICJVU0VfTElCU1NIMiIgL0QgIkhBVkVfTElCU1NIMl9IIiAvRkQgL0VIc2MgL2MKLSMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzMgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcaW5jMzIiIC9JICIuLlwuLlwuLlwuLlwuLlxsaWJzc2gyXGluY2x1ZGUiIC9EICJOREVCVUciIC9EICJCVUlMRElOR19MSUJDVVJMIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9EICJVU0VfT1BFTlNTTCIgL0QgIlVTRV9MSUJTU0gyIiAvRCAiSEFWRV9MSUJTU0gyX0giIC9GRCAvRUhzYyAvYworIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTUQgL1c0IC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGluYzMyIiAvSSAiLi5cLi5cLi5cLi5cLi5cbGlic3NoMlxpbmNsdWRlIiAvRCAiTkRFQlVHIiAvRCAiQlVJTERJTkdfTElCQ1VSTCIgL0QgIkNVUkxfU1RBVElDTElCIiAvRCAiVVNFX09QRU5TU0wiIC9EICJVU0VfTElCU1NIMiIgL0QgIkhBVkVfTElCU1NIMl9IIiAvRkQgL0VIc2MgL2MKKyMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzQgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcaW5jMzIiIC9JICIuLlwuLlwuLlwuLlwuLlxsaWJzc2gyXGluY2x1ZGUiIC9EICJOREVCVUciIC9EICJCVUlMRElOR19MSUJDVVJMIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9EICJVU0VfT1BFTlNTTCIgL0QgIlVTRV9MSUJTU0gyIiAvRCAiSEFWRV9MSUJTU0gyX0giIC9GRCAvRUhzYyAvYwogUlNDPXJjLmV4ZQogIyBBREQgQkFTRSBSU0MgL2wgMHg0MDkgL2QgIk5ERUJVRyIKICMgQUREIFJTQyAvbCAweDQwOSAvZCAiTkRFQlVHIgpAQCAtNzI5LDEyICs3MjksMTQgQEAKIAogIyBQUk9QIERlZmF1bHRfRmlsdGVyICIiCiBDVVJMX0xJQl9DX0ZJTEVTCitDVVJMX0xJQl9WQVVUSF9DX0ZJTEVTCiBDVVJMX0xJQl9WVExTX0NfRklMRVMKICMgRW5kIEdyb3VwCiAjIEJlZ2luIEdyb3VwICJIZWFkZXIgRmlsZXMiCiAKICMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiIgogQ1VSTF9MSUJfSF9GSUxFUworQ1VSTF9MSUJfVkFVVEhfSF9GSUxFUwogQ1VSTF9MSUJfVlRMU19IX0ZJTEVTCiAjIEVuZCBHcm91cAogIyBCZWdpbiBHcm91cCAiUmVzb3VyY2UgRmlsZXMiCmRpZmYgLS1naXQgYS9wcm9qZWN0cy9XaW5kb3dzL1ZDNi9zcmMvY3VybHNyYy5kc3cgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDNi9zcmMvY3VybC5kc3cKc2ltaWxhcml0eSBpbmRleCA4OCUKcmVuYW1lIGZyb20gcHJvamVjdHMvV2luZG93cy9WQzYvc3JjL2N1cmxzcmMuZHN3CnJlbmFtZSB0byBwcm9qZWN0cy9XaW5kb3dzL1ZDNi9zcmMvY3VybC5kc3cKaW5kZXggMmFlYzAxMC4uYTdhZGJjZSAxMDA2NDQKLS0tIGEvcHJvamVjdHMvV2luZG93cy9WQzYvc3JjL2N1cmxzcmMuZHN3CisrKyBiL3Byb2plY3RzL1dpbmRvd3MvVkM2L3NyYy9jdXJsLmRzdwpAQCAtMyw3ICszLDcgQEAKIA0KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiANCi1Qcm9qZWN0OiAiY3VybHNyYyI9Ii5cY3VybHNyYy5kc3AiIC0gUGFja2FnZSBPd25lcj08ND4NCitQcm9qZWN0OiAiY3VybCI9Ii5cY3VybC5kc3AiIC0gUGFja2FnZSBPd25lcj08ND4NCiANCiBQYWNrYWdlPTw1Pg0KIHt7ew0KZGlmZiAtLWdpdCBhL3Byb2plY3RzL1dpbmRvd3MvVkM2L3NyYy9jdXJsc3JjLnRtcGwgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDNi9zcmMvY3VybC50bXBsCnNpbWlsYXJpdHkgaW5kZXggODIlCnJlbmFtZSBmcm9tIHByb2plY3RzL1dpbmRvd3MvVkM2L3NyYy9jdXJsc3JjLnRtcGwKcmVuYW1lIHRvIHByb2plY3RzL1dpbmRvd3MvVkM2L3NyYy9jdXJsLnRtcGwKaW5kZXggMThhNTQxMy4uNWMwOTExMCAxMDA2NDQKLS0tIGEvcHJvamVjdHMvV2luZG93cy9WQzYvc3JjL2N1cmxzcmMudG1wbAorKysgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDNi9zcmMvY3VybC50bXBsCkBAIC0xLDQ2ICsxLDQ2IEBACi0jIE1pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIFByb2plY3QgRmlsZSAtIE5hbWU9ImN1cmxzcmMiIC0gUGFja2FnZSBPd25lcj08ND4KKyMgTWljcm9zb2Z0IERldmVsb3BlciBTdHVkaW8gUHJvamVjdCBGaWxlIC0gTmFtZT0iY3VybCIgLSBQYWNrYWdlIE93bmVyPTw0PgogIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBHZW5lcmF0ZWQgQnVpbGQgRmlsZSwgRm9ybWF0IFZlcnNpb24gNi4wMAogIyAqKiBETyBOT1QgRURJVCAqKgogCiAjIFRBUkdUWVBFICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIiAweDAxMDMKIAotQ0ZHPWN1cmxzcmMgLSBXaW4zMiBMSUIgRGVidWcKK0NGRz1jdXJsIC0gV2luMzIgTElCIERlYnVnCiAhTUVTU0FHRSBUaGlzIGlzIG5vdCBhIHZhbGlkIG1ha2VmaWxlLiBUbyBidWlsZCB0aGlzIHByb2plY3QgdXNpbmcgTk1BS0UsCiAhTUVTU0FHRSB1c2UgdGhlIEV4cG9ydCBNYWtlZmlsZSBjb21tYW5kIGFuZCBydW4KICFNRVNTQUdFIAotIU1FU1NBR0UgTk1BS0UgL2YgImN1cmxzcmMubWFrIi4KKyFNRVNTQUdFIE5NQUtFIC9mICJjdXJsLm1hayIuCiAhTUVTU0FHRSAKICFNRVNTQUdFIFlvdSBjYW4gc3BlY2lmeSBhIGNvbmZpZ3VyYXRpb24gd2hlbiBydW5uaW5nIE5NQUtFCiAhTUVTU0FHRSBieSBkZWZpbmluZyB0aGUgbWFjcm8gQ0ZHIG9uIHRoZSBjb21tYW5kIGxpbmUuIEZvciBleGFtcGxlOgogIU1FU1NBR0UgCi0hTUVTU0FHRSBOTUFLRSAvZiAiY3VybHNyYy5tYWsiIENGRz0iY3VybHNyYyAtIFdpbjMyIExJQiBEZWJ1ZyIKKyFNRVNTQUdFIE5NQUtFIC9mICJjdXJsLm1hayIgQ0ZHPSJjdXJsIC0gV2luMzIgTElCIERlYnVnIgogIU1FU1NBR0UgCiAhTUVTU0FHRSBQb3NzaWJsZSBjaG9pY2VzIGZvciBjb25maWd1cmF0aW9uIGFyZToKICFNRVNTQUdFIAotIU1FU1NBR0UgImN1cmxzcmMgLSBXaW4zMiBETEwgRGVidWciIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpCi0hTUVTU0FHRSAiY3VybHNyYyAtIFdpbjMyIERMTCBEZWJ1ZyBETEwgT3BlblNTTCIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikKLSFNRVNTQUdFICJjdXJsc3JjIC0gV2luMzIgRExMIERlYnVnIERMTCBPcGVuU1NMIERMTCBMaWJTU0gyIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQotIU1FU1NBR0UgImN1cmxzcmMgLSBXaW4zMiBETEwgRGVidWcgRExMIFdpbmRvd3MgU1NQSSIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikKLSFNRVNTQUdFICJjdXJsc3JjIC0gV2luMzIgRExMIERlYnVnIERMTCBXaW5kb3dzIFNTUEkgRExMIFdpbklETiIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikKLSFNRVNTQUdFICJjdXJsc3JjIC0gV2luMzIgRExMIFJlbGVhc2UiIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpCi0hTUVTU0FHRSAiY3VybHNyYyAtIFdpbjMyIERMTCBSZWxlYXNlIERMTCBPcGVuU1NMIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQotIU1FU1NBR0UgImN1cmxzcmMgLSBXaW4zMiBETEwgUmVsZWFzZSBETEwgT3BlblNTTCBETEwgTGliU1NIMiIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikKLSFNRVNTQUdFICJjdXJsc3JjIC0gV2luMzIgRExMIFJlbGVhc2UgRExMIFdpbmRvd3MgU1NQSSIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikKLSFNRVNTQUdFICJjdXJsc3JjIC0gV2luMzIgRExMIFJlbGVhc2UgRExMIFdpbmRvd3MgU1NQSSBETEwgV2luSUROIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQotIU1FU1NBR0UgImN1cmxzcmMgLSBXaW4zMiBMSUIgRGVidWciIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpCi0hTUVTU0FHRSAiY3VybHNyYyAtIFdpbjMyIExJQiBEZWJ1ZyBETEwgT3BlblNTTCIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikKLSFNRVNTQUdFICJjdXJsc3JjIC0gV2luMzIgTElCIERlYnVnIERMTCBPcGVuU1NMIERMTCBMaWJTU0gyIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQotIU1FU1NBR0UgImN1cmxzcmMgLSBXaW4zMiBMSUIgRGVidWcgRExMIFdpbmRvd3MgU1NQSSIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikKLSFNRVNTQUdFICJjdXJsc3JjIC0gV2luMzIgTElCIERlYnVnIERMTCBXaW5kb3dzIFNTUEkgRExMIFdpbklETiIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikKLSFNRVNTQUdFICJjdXJsc3JjIC0gV2luMzIgTElCIERlYnVnIExJQiBPcGVuU1NMIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQotIU1FU1NBR0UgImN1cmxzcmMgLSBXaW4zMiBMSUIgRGVidWcgTElCIE9wZW5TU0wgTElCIExpYlNTSDIiIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpCi0hTUVTU0FHRSAiY3VybHNyYyAtIFdpbjMyIExJQiBSZWxlYXNlIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQotIU1FU1NBR0UgImN1cmxzcmMgLSBXaW4zMiBMSUIgUmVsZWFzZSBETEwgT3BlblNTTCIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikKLSFNRVNTQUdFICJjdXJsc3JjIC0gV2luMzIgTElCIFJlbGVhc2UgRExMIE9wZW5TU0wgRExMIExpYlNTSDIiIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpCi0hTUVTU0FHRSAiY3VybHNyYyAtIFdpbjMyIExJQiBSZWxlYXNlIERMTCBXaW5kb3dzIFNTUEkiIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpCi0hTUVTU0FHRSAiY3VybHNyYyAtIFdpbjMyIExJQiBSZWxlYXNlIERMTCBXaW5kb3dzIFNTUEkgRExMIFdpbklETiIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikKLSFNRVNTQUdFICJjdXJsc3JjIC0gV2luMzIgTElCIFJlbGVhc2UgTElCIE9wZW5TU0wiIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpCi0hTUVTU0FHRSAiY3VybHNyYyAtIFdpbjMyIExJQiBSZWxlYXNlIExJQiBPcGVuU1NMIExJQiBMaWJTU0gyIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQorIU1FU1NBR0UgImN1cmwgLSBXaW4zMiBETEwgRGVidWciIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpCishTUVTU0FHRSAiY3VybCAtIFdpbjMyIERMTCBEZWJ1ZyBETEwgT3BlblNTTCIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikKKyFNRVNTQUdFICJjdXJsIC0gV2luMzIgRExMIERlYnVnIERMTCBPcGVuU1NMIERMTCBMaWJTU0gyIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQorIU1FU1NBR0UgImN1cmwgLSBXaW4zMiBETEwgRGVidWcgRExMIFdpbmRvd3MgU1NQSSIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikKKyFNRVNTQUdFICJjdXJsIC0gV2luMzIgRExMIERlYnVnIERMTCBXaW5kb3dzIFNTUEkgRExMIFdpbklETiIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikKKyFNRVNTQUdFICJjdXJsIC0gV2luMzIgRExMIFJlbGVhc2UiIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpCishTUVTU0FHRSAiY3VybCAtIFdpbjMyIERMTCBSZWxlYXNlIERMTCBPcGVuU1NMIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQorIU1FU1NBR0UgImN1cmwgLSBXaW4zMiBETEwgUmVsZWFzZSBETEwgT3BlblNTTCBETEwgTGliU1NIMiIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikKKyFNRVNTQUdFICJjdXJsIC0gV2luMzIgRExMIFJlbGVhc2UgRExMIFdpbmRvd3MgU1NQSSIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikKKyFNRVNTQUdFICJjdXJsIC0gV2luMzIgRExMIFJlbGVhc2UgRExMIFdpbmRvd3MgU1NQSSBETEwgV2luSUROIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQorIU1FU1NBR0UgImN1cmwgLSBXaW4zMiBMSUIgRGVidWciIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpCishTUVTU0FHRSAiY3VybCAtIFdpbjMyIExJQiBEZWJ1ZyBETEwgT3BlblNTTCIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikKKyFNRVNTQUdFICJjdXJsIC0gV2luMzIgTElCIERlYnVnIERMTCBPcGVuU1NMIERMTCBMaWJTU0gyIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQorIU1FU1NBR0UgImN1cmwgLSBXaW4zMiBMSUIgRGVidWcgRExMIFdpbmRvd3MgU1NQSSIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikKKyFNRVNTQUdFICJjdXJsIC0gV2luMzIgTElCIERlYnVnIERMTCBXaW5kb3dzIFNTUEkgRExMIFdpbklETiIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikKKyFNRVNTQUdFICJjdXJsIC0gV2luMzIgTElCIERlYnVnIExJQiBPcGVuU1NMIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQorIU1FU1NBR0UgImN1cmwgLSBXaW4zMiBMSUIgRGVidWcgTElCIE9wZW5TU0wgTElCIExpYlNTSDIiIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpCishTUVTU0FHRSAiY3VybCAtIFdpbjMyIExJQiBSZWxlYXNlIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQorIU1FU1NBR0UgImN1cmwgLSBXaW4zMiBMSUIgUmVsZWFzZSBETEwgT3BlblNTTCIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikKKyFNRVNTQUdFICJjdXJsIC0gV2luMzIgTElCIFJlbGVhc2UgRExMIE9wZW5TU0wgRExMIExpYlNTSDIiIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpCishTUVTU0FHRSAiY3VybCAtIFdpbjMyIExJQiBSZWxlYXNlIERMTCBXaW5kb3dzIFNTUEkiIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpCishTUVTU0FHRSAiY3VybCAtIFdpbjMyIExJQiBSZWxlYXNlIERMTCBXaW5kb3dzIFNTUEkgRExMIFdpbklETiIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikKKyFNRVNTQUdFICJjdXJsIC0gV2luMzIgTElCIFJlbGVhc2UgTElCIE9wZW5TU0wiIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpCishTUVTU0FHRSAiY3VybCAtIFdpbjMyIExJQiBSZWxlYXNlIExJQiBPcGVuU1NMIExJQiBMaWJTU0gyIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQogIU1FU1NBR0UgCiAKICMgQmVnaW4gUHJvamVjdApAQCAtNTAsNyArNTAsNyBAQAogQ1BQPWNsLmV4ZQogUlNDPXJjLmV4ZQogCi0hSUYgICIkKENGRykiID09ICJjdXJsc3JjIC0gV2luMzIgRExMIERlYnVnIgorIUlGICAiJChDRkcpIiA9PSAiY3VybCAtIFdpbjMyIERMTCBEZWJ1ZyIKIAogIyBQUk9QIEJBU0UgVXNlX01GQyAwCiAjIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDEKQEAgLTYzLDggKzYzLDggQEAKICMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcRExMIERlYnVnXHNyYyIKICMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwCiAjIFBST1AgVGFyZ2V0X0RpciAiIgotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTURkIC9XMyAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiREVCVUdCVUlMRCIgL0ZEIC9FSHNjIC9HWiAvYwotIyBBREQgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIkRFQlVHQlVJTEQiIC9GRCAvRUhzYyAvR1ogL2MKKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EZCAvVzQgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIkRFQlVHQlVJTEQiIC9GRCAvRUhzYyAvR1ogL2MKKyMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1c0IC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJERUJVR0JVSUxEIiAvRkQgL0VIc2MgL0daIC9jCiAjIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvaSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL2QgIl9ERUJVRyIKICMgQUREIFJTQyAvbCAweDQwOSAvaSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL2QgIl9ERUJVRyIKIEJTQzMyPWJzY21ha2UuZXhlCkBAIC03NCw3ICs3NCw3IEBACiAjIEFERCBCQVNFIExJTkszMiB3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmxkLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XERMTCBEZWJ1Z1xjdXJsZC5leGUiIC9wZGJ0eXBlOmNvbiAvbGlicGF0aDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XERMTCBEZWJ1ZyIgL2ZpeGVkOm5vCiAjIEFERCBMSU5LMzIgd2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsZC5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxETEwgRGVidWdcY3VybGQuZXhlIiAvcGRidHlwZTpjb24gL2xpYnBhdGg6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxETEwgRGVidWciIC9maXhlZDpubwogCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiY3VybHNyYyAtIFdpbjMyIERMTCBEZWJ1ZyBETEwgT3BlblNTTCIKKyFFTFNFSUYgICIkKENGRykiID09ICJjdXJsIC0gV2luMzIgRExMIERlYnVnIERMTCBPcGVuU1NMIgogCiAjIFBST1AgQkFTRSBVc2VfTUZDIDAKICMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQpAQCAtODgsOCArODgsOCBAQAogIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxETEwgRGVidWcgLSBETEwgT3BlblNTTFxzcmMiCiAjIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMAogIyBQUk9QIFRhcmdldF9EaXIgIiIKLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIkRFQlVHQlVJTEQiIC9GRCAvRUhzYyAvR1ogL2MKLSMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1czIC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJERUJVR0JVSUxEIiAvRkQgL0VIc2MgL0daIC9jCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRGQgL1c0IC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJERUJVR0JVSUxEIiAvRkQgL0VIc2MgL0daIC9jCisjIEFERCBDUFAgL25vbG9nbyAvTURkIC9XNCAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiREVCVUdCVUlMRCIgL0ZEIC9FSHNjIC9HWiAvYwogIyBBREQgQkFTRSBSU0MgL2wgMHg0MDkgL2kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9kICJfREVCVUciCiAjIEFERCBSU0MgL2wgMHg0MDkgL2kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9kICJfREVCVUciCiBCU0MzMj1ic2NtYWtlLmV4ZQpAQCAtOTksNyArOTksNyBAQAogIyBBREQgQkFTRSBMSU5LMzIgd2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsZC5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxETEwgRGVidWcgLSBETEwgT3BlblNTTFxjdXJsZC5leGUiIC9wZGJ0eXBlOmNvbiAvbGlicGF0aDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XERMTCBEZWJ1Zy4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxETEwgRGVidWcgLSBETEwgT3BlblNTTCIgL2ZpeGVkOm5vCiAjIEFERCBMSU5LMzIgd2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsZC5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxETEwgRGVidWcgLSBETEwgT3BlblNTTFxjdXJsZC5leGUiIC9wZGJ0eXBlOmNvbiAvbGlicGF0aDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XERMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIiAvZml4ZWQ6bm8KIAotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImN1cmxzcmMgLSBXaW4zMiBETEwgRGVidWcgRExMIE9wZW5TU0wgRExMIExpYlNTSDIiCishRUxTRUlGICAiJChDRkcpIiA9PSAiY3VybCAtIFdpbjMyIERMTCBEZWJ1ZyBETEwgT3BlblNTTCBETEwgTGliU1NIMiIKIAogIyBQUk9QIEJBU0UgVXNlX01GQyAwCiAjIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDEKQEAgLTExMyw4ICsxMTMsOCBAQAogIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyXHNyYyIKICMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwCiAjIFBST1AgVGFyZ2V0X0RpciAiIgotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTURkIC9XMyAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiREVCVUdCVUlMRCIgL0ZEIC9FSHNjIC9HWiAvYwotIyBBREQgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIkRFQlVHQlVJTEQiIC9GRCAvRUhzYyAvR1ogL2MKKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EZCAvVzQgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIkRFQlVHQlVJTEQiIC9GRCAvRUhzYyAvR1ogL2MKKyMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1c0IC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJERUJVR0JVSUxEIiAvRkQgL0VIc2MgL0daIC9jCiAjIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvaSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL2QgIl9ERUJVRyIKICMgQUREIFJTQyAvbCAweDQwOSAvaSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL2QgIl9ERUJVRyIKIEJTQzMyPWJzY21ha2UuZXhlCkBAIC0xMjQsNyArMTI0LDcgQEAKICMgQUREIEJBU0UgTElOSzMyIHdsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybGQubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMlxjdXJsZC5leGUiIC9wZGJ0eXBlOmNvbiAvbGlicGF0aDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XERMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIiAvZml4ZWQ6bm8KICMgQUREIExJTkszMiB3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmxkLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XERMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJcY3VybGQuZXhlIiAvcGRidHlwZTpjb24gL2xpYnBhdGg6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxETEwgRGVidWcgLSBETEwgT3BlblNTTCIgL2ZpeGVkOm5vCiAKLSFFTFNFSUYgICIkKENGRykiID09ICJjdXJsc3JjIC0gV2luMzIgRExMIERlYnVnIERMTCBXaW5kb3dzIFNTUEkiCishRUxTRUlGICAiJChDRkcpIiA9PSAiY3VybCAtIFdpbjMyIERMTCBEZWJ1ZyBETEwgV2luZG93cyBTU1BJIgogCiAjIFBST1AgQkFTRSBVc2VfTUZDIDAKICMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQpAQCAtMTM4LDggKzEzOCw4IEBACiAjIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUElcc3JjIgogIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDAKICMgUFJPUCBUYXJnZXRfRGlyICIiCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRGQgL1czIC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJERUJVR0JVSUxEIiAvRkQgL0VIc2MgL0daIC9jCi0jIEFERCBDUFAgL25vbG9nbyAvTURkIC9XMyAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiREVCVUdCVUlMRCIgL0ZEIC9FSHNjIC9HWiAvYworIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTURkIC9XNCAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiREVCVUdCVUlMRCIgL0ZEIC9FSHNjIC9HWiAvYworIyBBREQgQ1BQIC9ub2xvZ28gL01EZCAvVzQgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIkRFQlVHQlVJTEQiIC9GRCAvRUhzYyAvR1ogL2MKICMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9pICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvZCAiX0RFQlVHIgogIyBBREQgUlNDIC9sIDB4NDA5IC9pICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvZCAiX0RFQlVHIgogQlNDMzI9YnNjbWFrZS5leGUKQEAgLTE0OSw3ICsxNDksNyBAQAogIyBBREQgQkFTRSBMSU5LMzIgd2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsZC5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJXGN1cmxkLmV4ZSIgL3BkYnR5cGU6Y29uIC9saWJwYXRoOiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSIgL2ZpeGVkOm5vCiAjIEFERCBMSU5LMzIgd2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsZC5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJXGN1cmxkLmV4ZSIgL3BkYnR5cGU6Y29uIC9saWJwYXRoOiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSIgL2ZpeGVkOm5vCiAKLSFFTFNFSUYgICIkKENGRykiID09ICJjdXJsc3JjIC0gV2luMzIgRExMIERlYnVnIERMTCBXaW5kb3dzIFNTUEkgRExMIFdpbklETiIKKyFFTFNFSUYgICIkKENGRykiID09ICJjdXJsIC0gV2luMzIgRExMIERlYnVnIERMTCBXaW5kb3dzIFNTUEkgRExMIFdpbklETiIKIAogIyBQUk9QIEJBU0UgVXNlX01GQyAwCiAjIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDEKQEAgLTE2Myw4ICsxNjMsOCBAQAogIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETlxzcmMiCiAjIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMAogIyBQUk9QIFRhcmdldF9EaXIgIiIKLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIkRFQlVHQlVJTEQiIC9GRCAvRUhzYyAvR1ogL2MKLSMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1czIC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJERUJVR0JVSUxEIiAvRkQgL0VIc2MgL0daIC9jCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRGQgL1c0IC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJERUJVR0JVSUxEIiAvRkQgL0VIc2MgL0daIC9jCisjIEFERCBDUFAgL25vbG9nbyAvTURkIC9XNCAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiREVCVUdCVUlMRCIgL0ZEIC9FSHNjIC9HWiAvYwogIyBBREQgQkFTRSBSU0MgL2wgMHg0MDkgL2kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9kICJfREVCVUciCiAjIEFERCBSU0MgL2wgMHg0MDkgL2kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9kICJfREVCVUciCiBCU0MzMj1ic2NtYWtlLmV4ZQpAQCAtMTc0LDcgKzE3NCw3IEBACiAjIEFERCBCQVNFIExJTkszMiB3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmxkLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROXGN1cmxkLmV4ZSIgL3BkYnR5cGU6Y29uIC9saWJwYXRoOiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE4iIC9maXhlZDpubwogIyBBREQgTElOSzMyIHdsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybGQubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE5cY3VybGQuZXhlIiAvcGRidHlwZTpjb24gL2xpYnBhdGg6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETiIgL2ZpeGVkOm5vCiAKLSFFTFNFSUYgICIkKENGRykiID09ICJjdXJsc3JjIC0gV2luMzIgRExMIFJlbGVhc2UiCishRUxTRUlGICAiJChDRkcpIiA9PSAiY3VybCAtIFdpbjMyIERMTCBSZWxlYXNlIgogCiAjIFBST1AgQkFTRSBVc2VfTUZDIDAKICMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMApAQCAtMTg3LDggKzE4Nyw4IEBACiAjIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XERMTCBSZWxlYXNlXHNyYyIKICMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwCiAjIFBST1AgVGFyZ2V0X0RpciAiIgotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTUQgL1czIC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJfQ09OU09MRSIgL0QgIk5ERUJVRyIgL0ZEIC9FSHNjIC9jCi0jIEFERCBDUFAgL25vbG9nbyAvTUQgL1czIC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0ZEIC9FSHNjIC9jCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRCAvVzQgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIl9DT05TT0xFIiAvRCAiTkRFQlVHIiAvRkQgL0VIc2MgL2MKKyMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzQgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRkQgL0VIc2MgL2MKICMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9pICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvZCAiTkRFQlVHIgogIyBBREQgUlNDIC9sIDB4NDA5IC9pICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvZCAiTkRFQlVHIgogQlNDMzI9YnNjbWFrZS5leGUKQEAgLTE5OCw3ICsxOTgsNyBAQAogIyBBREQgQkFTRSBMSU5LMzIgd2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcRExMIFJlbGVhc2VcY3VybC5leGUiIC9saWJwYXRoOiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcRExMIFJlbGVhc2UiIC9maXhlZDpubwogIyBBREQgTElOSzMyIHdsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybC5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL3BkYjpub25lIC9tYWNoaW5lOkkzODYgL291dDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XERMTCBSZWxlYXNlXGN1cmwuZXhlIiAvbGlicGF0aDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XERMTCBSZWxlYXNlIiAvZml4ZWQ6bm8KIAotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImN1cmxzcmMgLSBXaW4zMiBETEwgUmVsZWFzZSBETEwgT3BlblNTTCIKKyFFTFNFSUYgICIkKENGRykiID09ICJjdXJsIC0gV2luMzIgRExMIFJlbGVhc2UgRExMIE9wZW5TU0wiCiAKICMgUFJPUCBCQVNFIFVzZV9NRkMgMAogIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwCkBAIC0yMTIsOCArMjEyLDggQEAKICMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTFxzcmMiCiAjIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMAogIyBQUk9QIFRhcmdldF9EaXIgIiIKLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EIC9XMyAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9GRCAvRUhzYyAvYwotIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XMyAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9GRCAvRUhzYyAvYworIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTUQgL1c0IC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0ZEIC9FSHNjIC9jCisjIEFERCBDUFAgL25vbG9nbyAvTUQgL1c0IC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0ZEIC9FSHNjIC9jCiAjIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvaSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL2QgIk5ERUJVRyIKICMgQUREIFJTQyAvbCAweDQwOSAvaSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL2QgIk5ERUJVRyIKIEJTQzMyPWJzY21ha2UuZXhlCkBAIC0yMjMsNyArMjIzLDcgQEAKICMgQUREIEJBU0UgTElOSzMyIHdsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybC5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL3BkYjpub25lIC9tYWNoaW5lOkkzODYgL291dDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XERMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0xcY3VybC5leGUiIC9saWJwYXRoOiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCIgL2ZpeGVkOm5vCiAjIEFERCBMSU5LMzIgd2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTFxjdXJsLmV4ZSIgL2xpYnBhdGg6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIiAvZml4ZWQ6bm8KIAotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImN1cmxzcmMgLSBXaW4zMiBETEwgUmVsZWFzZSBETEwgT3BlblNTTCBETEwgTGliU1NIMiIKKyFFTFNFSUYgICIkKENGRykiID09ICJjdXJsIC0gV2luMzIgRExMIFJlbGVhc2UgRExMIE9wZW5TU0wgRExMIExpYlNTSDIiCiAKICMgUFJPUCBCQVNFIFVzZV9NRkMgMAogIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwCkBAIC0yMzcsOCArMjM3LDggQEAKICMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyXHNyYyIKICMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwCiAjIFBST1AgVGFyZ2V0X0RpciAiIgotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTUQgL1czIC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0ZEIC9FSHNjIC9jCi0jIEFERCBDUFAgL25vbG9nbyAvTUQgL1czIC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0ZEIC9FSHNjIC9jCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRCAvVzQgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRkQgL0VIc2MgL2MKKyMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzQgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRkQgL0VIc2MgL2MKICMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9pICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvZCAiTkRFQlVHIgogIyBBREQgUlNDIC9sIDB4NDA5IC9pICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvZCAiTkRFQlVHIgogQlNDMzI9YnNjbWFrZS5leGUKQEAgLTI0OCw3ICsyNDgsNyBAQAogIyBBREQgQkFTRSBMSU5LMzIgd2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyXGN1cmwuZXhlIiAvbGlicGF0aDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XERMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wiIC9maXhlZDpubwogIyBBREQgTElOSzMyIHdsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybC5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL3BkYjpub25lIC9tYWNoaW5lOkkzODYgL291dDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XERMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMlxjdXJsLmV4ZSIgL2xpYnBhdGg6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIiAvZml4ZWQ6bm8KIAotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImN1cmxzcmMgLSBXaW4zMiBETEwgUmVsZWFzZSBETEwgV2luZG93cyBTU1BJIgorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImN1cmwgLSBXaW4zMiBETEwgUmVsZWFzZSBETEwgV2luZG93cyBTU1BJIgogCiAjIFBST1AgQkFTRSBVc2VfTUZDIDAKICMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMApAQCAtMjYyLDggKzI2Miw4IEBACiAjIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSVxzcmMiCiAjIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMAogIyBQUk9QIFRhcmdldF9EaXIgIiIKLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EIC9XMyAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9GRCAvRUhzYyAvYwotIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XMyAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9GRCAvRUhzYyAvYworIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTUQgL1c0IC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0ZEIC9FSHNjIC9jCisjIEFERCBDUFAgL25vbG9nbyAvTUQgL1c0IC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0ZEIC9FSHNjIC9jCiAjIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvaSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL2QgIk5ERUJVRyIKICMgQUREIFJTQyAvbCAweDQwOSAvaSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL2QgIk5ERUJVRyIKIEJTQzMyPWJzY21ha2UuZXhlCkBAIC0yNzMsNyArMjczLDcgQEAKICMgQUREIEJBU0UgTElOSzMyIHdsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybC5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL3BkYjpub25lIC9tYWNoaW5lOkkzODYgL291dDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSVxjdXJsLmV4ZSIgL2xpYnBhdGg6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkiIC9maXhlZDpubwogIyBBREQgTElOSzMyIHdsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybC5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL3BkYjpub25lIC9tYWNoaW5lOkkzODYgL291dDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSVxjdXJsLmV4ZSIgL2xpYnBhdGg6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkiIC9maXhlZDpubwogCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiY3VybHNyYyAtIFdpbjMyIERMTCBSZWxlYXNlIERMTCBXaW5kb3dzIFNTUEkgRExMIFdpbklETiIKKyFFTFNFSUYgICIkKENGRykiID09ICJjdXJsIC0gV2luMzIgRExMIFJlbGVhc2UgRExMIFdpbmRvd3MgU1NQSSBETEwgV2luSUROIgogCiAjIFBST1AgQkFTRSBVc2VfTUZDIDAKICMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMApAQCAtMjg3LDggKzI4Nyw4IEBACiAjIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE5cc3JjIgogIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDAKICMgUFJPUCBUYXJnZXRfRGlyICIiCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRCAvVzMgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRkQgL0VIc2MgL2MKLSMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzMgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRkQgL0VIc2MgL2MKKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EIC9XNCAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9GRCAvRUhzYyAvYworIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XNCAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9GRCAvRUhzYyAvYwogIyBBREQgQkFTRSBSU0MgL2wgMHg0MDkgL2kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9kICJOREVCVUciCiAjIEFERCBSU0MgL2wgMHg0MDkgL2kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9kICJOREVCVUciCiBCU0MzMj1ic2NtYWtlLmV4ZQpAQCAtMjk4LDcgKzI5OCw3IEBACiAjIEFERCBCQVNFIExJTkszMiB3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmwubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6bm9uZSAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROXGN1cmwuZXhlIiAvbGlicGF0aDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE4iIC9maXhlZDpubwogIyBBREQgTElOSzMyIHdsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybC5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL3BkYjpub25lIC9tYWNoaW5lOkkzODYgL291dDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE5cY3VybC5leGUiIC9saWJwYXRoOiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETiIgL2ZpeGVkOm5vCiAKLSFFTFNFSUYgICIkKENGRykiID09ICJjdXJsc3JjIC0gV2luMzIgTElCIERlYnVnIgorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImN1cmwgLSBXaW4zMiBMSUIgRGVidWciCiAKICMgUFJPUCBCQVNFIFVzZV9NRkMgMAogIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAxCkBAIC0zMTEsOCArMzExLDggQEAKICMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIERlYnVnXHNyYyIKICMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwCiAjIFBST1AgVGFyZ2V0X0RpciAiIgotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTURkIC9XMyAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiREVCVUdCVUlMRCIgL0QgIkNVUkxfU1RBVElDTElCIiAvRkQgL0VIc2MgL0daIC9jCi0jIEFERCBDUFAgL25vbG9nbyAvTURkIC9XMyAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiREVCVUdCVUlMRCIgL0QgIkNVUkxfU1RBVElDTElCIiAvRkQgL0VIc2MgL0daIC9jCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRGQgL1c0IC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJERUJVR0JVSUxEIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9GRCAvRUhzYyAvR1ogL2MKKyMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1c0IC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJERUJVR0JVSUxEIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9GRCAvRUhzYyAvR1ogL2MKICMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9pICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvZCAiX0RFQlVHIgogIyBBREQgUlNDIC9sIDB4NDA5IC9pICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvZCAiX0RFQlVHIgogQlNDMzI9YnNjbWFrZS5leGUKQEAgLTMyMiw3ICszMjIsNyBAQAogIyBBREQgQkFTRSBMSU5LMzIgYWR2YXBpMzIubGliIHdsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybGQubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIERlYnVnXGN1cmwuZXhlIiAvcGRidHlwZTpjb24gL2xpYnBhdGg6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxMSUIgRGVidWciIC9maXhlZDpubwogIyBBREQgTElOSzMyIGFkdmFwaTMyLmxpYiB3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmxkLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XExJQiBEZWJ1Z1xjdXJsZC5leGUiIC9wZGJ0eXBlOmNvbiAvbGlicGF0aDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XExJQiBEZWJ1ZyIgL2ZpeGVkOm5vCiAKLSFFTFNFSUYgICIkKENGRykiID09ICJjdXJsc3JjIC0gV2luMzIgTElCIERlYnVnIERMTCBPcGVuU1NMIgorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImN1cmwgLSBXaW4zMiBMSUIgRGVidWcgRExMIE9wZW5TU0wiCiAKICMgUFJPUCBCQVNFIFVzZV9NRkMgMAogIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAxCkBAIC0zMzYsOCArMzM2LDggQEAKICMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIERlYnVnIC0gRExMIE9wZW5TU0xcc3JjIgogIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDAKICMgUFJPUCBUYXJnZXRfRGlyICIiCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRGQgL1czIC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJERUJVR0JVSUxEIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9GRCAvRUhzYyAvR1ogL2MKLSMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1czIC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJERUJVR0JVSUxEIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9GRCAvRUhzYyAvR1ogL2MKKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EZCAvVzQgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIkRFQlVHQlVJTEQiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0ZEIC9FSHNjIC9HWiAvYworIyBBREQgQ1BQIC9ub2xvZ28gL01EZCAvVzQgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIkRFQlVHQlVJTEQiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0ZEIC9FSHNjIC9HWiAvYwogIyBBREQgQkFTRSBSU0MgL2wgMHg0MDkgL2kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9kICJfREVCVUciCiAjIEFERCBSU0MgL2wgMHg0MDkgL2kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9kICJfREVCVUciCiBCU0MzMj1ic2NtYWtlLmV4ZQpAQCAtMzQ3LDcgKzM0Nyw3IEBACiAjIEFERCBCQVNFIExJTkszMiBhZHZhcGkzMi5saWIgd2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsZC5saWIgbGliZWF5MzIubGliIHNzbGVheTMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMXGN1cmxkLmV4ZSIgL3BkYnR5cGU6Y29uIC9saWJwYXRoOiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIERlYnVnIC0gRExMIE9wZW5TU0wiIC9maXhlZDpubwogIyBBREQgTElOSzMyIGFkdmFwaTMyLmxpYiB3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmxkLmxpYiBsaWJlYXkzMi5saWIgc3NsZWF5MzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIERlYnVnIC0gRExMIE9wZW5TU0xcY3VybGQuZXhlIiAvcGRidHlwZTpjb24gL2xpYnBhdGg6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxMSUIgRGVidWcgLSBETEwgT3BlblNTTCIgL2xpYnBhdGg6Ii4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luMzJcVkM2XERMTCBEZWJ1ZyIgL2ZpeGVkOm5vCiAKLSFFTFNFSUYgICIkKENGRykiID09ICJjdXJsc3JjIC0gV2luMzIgTElCIERlYnVnIERMTCBPcGVuU1NMIERMTCBMaWJTU0gyIgorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImN1cmwgLSBXaW4zMiBMSUIgRGVidWcgRExMIE9wZW5TU0wgRExMIExpYlNTSDIiCiAKICMgUFJPUCBCQVNFIFVzZV9NRkMgMAogIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAxCkBAIC0zNjEsOCArMzYxLDggQEAKICMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMlxzcmMiCiAjIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMAogIyBQUk9QIFRhcmdldF9EaXIgIiIKLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIkRFQlVHQlVJTEQiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0ZEIC9FSHNjIC9HWiAvYwotIyBBREQgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIkRFQlVHQlVJTEQiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0ZEIC9FSHNjIC9HWiAvYworIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTURkIC9XNCAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiREVCVUdCVUlMRCIgL0QgIkNVUkxfU1RBVElDTElCIiAvRkQgL0VIc2MgL0daIC9jCisjIEFERCBDUFAgL25vbG9nbyAvTURkIC9XNCAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiREVCVUdCVUlMRCIgL0QgIkNVUkxfU1RBVElDTElCIiAvRkQgL0VIc2MgL0daIC9jCiAjIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvaSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL2QgIl9ERUJVRyIKICMgQUREIFJTQyAvbCAweDQwOSAvaSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL2QgIl9ERUJVRyIKIEJTQzMyPWJzY21ha2UuZXhlCkBAIC0zNzIsNyArMzcyLDcgQEAKICMgQUREIEJBU0UgTElOSzMyIGFkdmFwaTMyLmxpYiB3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmxkLmxpYiBsaWJlYXkzMi5saWIgc3NsZWF5MzIubGliIGxpYnNzaDJkLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJcY3VybGQuZXhlIiAvcGRidHlwZTpjb24gL2xpYnBhdGg6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxMSUIgRGVidWcgLSBETEwgT3BlblNTTCIgL2xpYnBhdGg6Ii4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luMzJcVkM2XERMTCBEZWJ1ZyIgL2xpYnBhdGg6Ii4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcYnVpbGRcV2luMzJcVkM2XERMTCBEZWJ1ZyIgL2ZpeGVkOm5vCiAjIEFERCBMSU5LMzIgYWR2YXBpMzIubGliIHdsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybGQubGliIGxpYmVheTMyLmxpYiBzc2xlYXkzMi5saWIgbGlic3NoMmQubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMlxjdXJsZC5leGUiIC9wZGJ0eXBlOmNvbiAvbGlicGF0aDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIiAvbGlicGF0aDoiLi5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW4zMlxWQzZcRExMIERlYnVnIiAvbGlicGF0aDoiLi5cLi5cLi5cLi5cLi5cbGlic3NoMlxidWlsZFxXaW4zMlxWQzZcRExMIERlYnVnIiAvZml4ZWQ6bm8KIAotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImN1cmxzcmMgLSBXaW4zMiBMSUIgRGVidWcgRExMIFdpbmRvd3MgU1NQSSIKKyFFTFNFSUYgICIkKENGRykiID09ICJjdXJsIC0gV2luMzIgTElCIERlYnVnIERMTCBXaW5kb3dzIFNTUEkiCiAKICMgUFJPUCBCQVNFIFVzZV9NRkMgMAogIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAxCkBAIC0zODYsOCArMzg2LDggQEAKICMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSVxzcmMiCiAjIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMAogIyBQUk9QIFRhcmdldF9EaXIgIiIKLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIkRFQlVHQlVJTEQiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0ZEIC9FSHNjIC9HWiAvYwotIyBBREQgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIkRFQlVHQlVJTEQiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0ZEIC9FSHNjIC9HWiAvYworIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTURkIC9XNCAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiREVCVUdCVUlMRCIgL0QgIkNVUkxfU1RBVElDTElCIiAvRkQgL0VIc2MgL0daIC9jCisjIEFERCBDUFAgL25vbG9nbyAvTURkIC9XNCAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiREVCVUdCVUlMRCIgL0QgIkNVUkxfU1RBVElDTElCIiAvRkQgL0VIc2MgL0daIC9jCiAjIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvaSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL2QgIl9ERUJVRyIKICMgQUREIFJTQyAvbCAweDQwOSAvaSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL2QgIl9ERUJVRyIKIEJTQzMyPWJzY21ha2UuZXhlCkBAIC0zOTcsNyArMzk3LDcgQEAKICMgQUREIEJBU0UgTElOSzMyIGFkdmFwaTMyLmxpYiB3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmxkLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUElcY3VybGQuZXhlIiAvcGRidHlwZTpjb24gL2xpYnBhdGg6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIiAvZml4ZWQ6bm8KICMgQUREIExJTkszMiBhZHZhcGkzMi5saWIgd2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsZC5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJXGN1cmxkLmV4ZSIgL3BkYnR5cGU6Y29uIC9saWJwYXRoOiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSIgL2ZpeGVkOm5vCiAKLSFFTFNFSUYgICIkKENGRykiID09ICJjdXJsc3JjIC0gV2luMzIgTElCIERlYnVnIERMTCBXaW5kb3dzIFNTUEkgRExMIFdpbklETiIKKyFFTFNFSUYgICIkKENGRykiID09ICJjdXJsIC0gV2luMzIgTElCIERlYnVnIERMTCBXaW5kb3dzIFNTUEkgRExMIFdpbklETiIKIAogIyBQUk9QIEJBU0UgVXNlX01GQyAwCiAjIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDEKQEAgLTQxMSw4ICs0MTEsOCBAQAogIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETlxzcmMiCiAjIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMAogIyBQUk9QIFRhcmdldF9EaXIgIiIKLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIkRFQlVHQlVJTEQiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0ZEIC9FSHNjIC9HWiAvYwotIyBBREQgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIkRFQlVHQlVJTEQiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0ZEIC9FSHNjIC9HWiAvYworIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTURkIC9XNCAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiREVCVUdCVUlMRCIgL0QgIkNVUkxfU1RBVElDTElCIiAvRkQgL0VIc2MgL0daIC9jCisjIEFERCBDUFAgL25vbG9nbyAvTURkIC9XNCAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiREVCVUdCVUlMRCIgL0QgIkNVUkxfU1RBVElDTElCIiAvRkQgL0VIc2MgL0daIC9jCiAjIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvaSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL2QgIl9ERUJVRyIKICMgQUREIFJTQyAvbCAweDQwOSAvaSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL2QgIl9ERUJVRyIKIEJTQzMyPWJzY21ha2UuZXhlCkBAIC00MjIsNyArNDIyLDcgQEAKICMgQUREIEJBU0UgTElOSzMyIGFkdmFwaTMyLmxpYiBub3JtYWxpei5saWIgd2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsZC5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETlxjdXJsZC5leGUiIC9wZGJ0eXBlOmNvbiAvbGlicGF0aDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROIiAvZml4ZWQ6bm8KICMgQUREIExJTkszMiBhZHZhcGkzMi5saWIgbm9ybWFsaXoubGliIHdsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybGQubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE5cY3VybGQuZXhlIiAvcGRidHlwZTpjb24gL2xpYnBhdGg6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETiIgL2ZpeGVkOm5vCiAKLSFFTFNFSUYgICIkKENGRykiID09ICJjdXJsc3JjIC0gV2luMzIgTElCIERlYnVnIExJQiBPcGVuU1NMIgorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImN1cmwgLSBXaW4zMiBMSUIgRGVidWcgTElCIE9wZW5TU0wiCiAKICMgUFJPUCBCQVNFIFVzZV9NRkMgMAogIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAxCkBAIC00MzYsOCArNDM2LDggQEAKICMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIERlYnVnIC0gTElCIE9wZW5TU0xcc3JjIgogIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDAKICMgUFJPUCBUYXJnZXRfRGlyICIiCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRGQgL1czIC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJERUJVR0JVSUxEIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9GRCAvRUhzYyAvR1ogL2MKLSMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1czIC9aaSAvT2QgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJERUJVR0JVSUxEIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9GRCAvRUhzYyAvR1ogL2MKKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EZCAvVzQgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIkRFQlVHQlVJTEQiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0ZEIC9FSHNjIC9HWiAvYworIyBBREQgQ1BQIC9ub2xvZ28gL01EZCAvVzQgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIkRFQlVHQlVJTEQiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0ZEIC9FSHNjIC9HWiAvYwogIyBBREQgQkFTRSBSU0MgL2wgMHg0MDkgL2kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9kICJfREVCVUciCiAjIEFERCBSU0MgL2wgMHg0MDkgL2kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9kICJfREVCVUciCiBCU0MzMj1ic2NtYWtlLmV4ZQpAQCAtNDQ3LDcgKzQ0Nyw3IEBACiAjIEFERCBCQVNFIExJTkszMiBhZHZhcGkzMi5saWIgY3J5cHQzMi5saWIgZ2RpMzIubGliIHVzZXIzMi5saWIgd2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsZC5saWIgbGliZWF5MzIubGliIHNzbGVheTMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMXGN1cmxkLmV4ZSIgL3BkYnR5cGU6Y29uIC9saWJwYXRoOiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIERlYnVnIC0gTElCIE9wZW5TU0wiIC9maXhlZDpubwogIyBBREQgTElOSzMyIGFkdmFwaTMyLmxpYiBjcnlwdDMyLmxpYiBnZGkzMi5saWIgdXNlcjMyLmxpYiB3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmxkLmxpYiBsaWJlYXkzMi5saWIgc3NsZWF5MzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIERlYnVnIC0gTElCIE9wZW5TU0xcY3VybGQuZXhlIiAvcGRidHlwZTpjb24gL2xpYnBhdGg6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxMSUIgRGVidWcgLSBMSUIgT3BlblNTTCIgL2xpYnBhdGg6Ii4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luMzJcVkM2XExJQiBEZWJ1ZyIgL2ZpeGVkOm5vCiAKLSFFTFNFSUYgICIkKENGRykiID09ICJjdXJsc3JjIC0gV2luMzIgTElCIERlYnVnIExJQiBPcGVuU1NMIExJQiBMaWJTU0gyIgorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImN1cmwgLSBXaW4zMiBMSUIgRGVidWcgTElCIE9wZW5TU0wgTElCIExpYlNTSDIiCiAKICMgUFJPUCBCQVNFIFVzZV9NRkMgMAogIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAxCkBAIC00NjEsOCArNDYxLDggQEAKICMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMlxzcmMiCiAjIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMAogIyBQUk9QIFRhcmdldF9EaXIgIiIKLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIkRFQlVHQlVJTEQiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0ZEIC9FSHNjIC9HWiAvYwotIyBBREQgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL1ppIC9PZCAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIkRFQlVHQlVJTEQiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0ZEIC9FSHNjIC9HWiAvYworIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTURkIC9XNCAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiREVCVUdCVUlMRCIgL0QgIkNVUkxfU1RBVElDTElCIiAvRkQgL0VIc2MgL0daIC9jCisjIEFERCBDUFAgL25vbG9nbyAvTURkIC9XNCAvWmkgL09kIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiREVCVUdCVUlMRCIgL0QgIkNVUkxfU1RBVElDTElCIiAvRkQgL0VIc2MgL0daIC9jCiAjIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvaSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL2QgIl9ERUJVRyIKICMgQUREIFJTQyAvbCAweDQwOSAvaSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL2QgIl9ERUJVRyIKIEJTQzMyPWJzY21ha2UuZXhlCkBAIC00NzIsNyArNDcyLDcgQEAKICMgQUREIEJBU0UgTElOSzMyIGFkdmFwaTMyLmxpYiBjcnlwdDMyLmxpYiBnZGkzMi5saWIgdXNlcjMyLmxpYiB3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmxkLmxpYiBsaWJlYXkzMi5saWIgc3NsZWF5MzIubGliIGxpYnNzaDJkLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJcY3VybGQuZXhlIiAvcGRidHlwZTpjb24gL2xpYnBhdGg6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxMSUIgRGVidWcgLSBMSUIgT3BlblNTTCIgL2xpYnBhdGg6Ii4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luMzJcVkM2XExJQiBEZWJ1ZyIgL2xpYnBhdGg6Ii4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcYnVpbGRcV2luMzJcVkM2XExJQiBEZWJ1ZyIgL2ZpeGVkOm5vCiAjIEFERCBMSU5LMzIgYWR2YXBpMzIubGliIGNyeXB0MzIubGliIGdkaTMyLmxpYiB1c2VyMzIubGliIHdsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybGQubGliIGxpYmVheTMyLmxpYiBzc2xlYXkzMi5saWIgbGlic3NoMmQubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMlxjdXJsZC5leGUiIC9wZGJ0eXBlOmNvbiAvbGlicGF0aDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIiAvbGlicGF0aDoiLi5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW4zMlxWQzZcTElCIERlYnVnIiAvbGlicGF0aDoiLi5cLi5cLi5cLi5cLi5cbGlic3NoMlxidWlsZFxXaW4zMlxWQzZcTElCIERlYnVnIiAvZml4ZWQ6bm8KIAotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImN1cmxzcmMgLSBXaW4zMiBMSUIgUmVsZWFzZSIKKyFFTFNFSUYgICIkKENGRykiID09ICJjdXJsIC0gV2luMzIgTElCIFJlbGVhc2UiCiAKICMgUFJPUCBCQVNFIFVzZV9NRkMgMAogIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwCkBAIC00ODUsOCArNDg1LDggQEAKICMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIFJlbGVhc2Vcc3JjIgogIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDAKICMgUFJPUCBUYXJnZXRfRGlyICIiCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRCAvVzMgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIl9DT05TT0xFIiAvRCAiTkRFQlVHIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9GRCAvRUhzYyAvYwotIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XMyAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0ZEIC9FSHNjIC9jCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRCAvVzQgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIl9DT05TT0xFIiAvRCAiTkRFQlVHIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9GRCAvRUhzYyAvYworIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XNCAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0ZEIC9FSHNjIC9jCiAjIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvaSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL2QgIk5ERUJVRyIKICMgQUREIFJTQyAvbCAweDQwOSAvaSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL2QgIk5ERUJVRyIKIEJTQzMyPWJzY21ha2UuZXhlCkBAIC00OTYsNyArNDk2LDcgQEAKICMgQUREIEJBU0UgTElOSzMyIGFkdmFwaTMyLmxpYiB3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmwubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6bm9uZSAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxMSUIgUmVsZWFzZVxjdXJsLmV4ZSIgL2xpYnBhdGg6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxMSUIgUmVsZWFzZSIgL2ZpeGVkOm5vCiAjIEFERCBMSU5LMzIgYWR2YXBpMzIubGliIHdsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybC5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL3BkYjpub25lIC9tYWNoaW5lOkkzODYgL291dDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XExJQiBSZWxlYXNlXGN1cmwuZXhlIiAvbGlicGF0aDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XExJQiBSZWxlYXNlIiAvZml4ZWQ6bm8KIAotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImN1cmxzcmMgLSBXaW4zMiBMSUIgUmVsZWFzZSBETEwgT3BlblNTTCIKKyFFTFNFSUYgICIkKENGRykiID09ICJjdXJsIC0gV2luMzIgTElCIFJlbGVhc2UgRExMIE9wZW5TU0wiCiAKICMgUFJPUCBCQVNFIFVzZV9NRkMgMAogIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwCkBAIC01MTAsOCArNTEwLDggQEAKICMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTFxzcmMiCiAjIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMAogIyBQUk9QIFRhcmdldF9EaXIgIiIKLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EIC9XMyAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0ZEIC9FSHNjIC9jCi0jIEFERCBDUFAgL25vbG9nbyAvTUQgL1czIC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIkNVUkxfU1RBVElDTElCIiAvRkQgL0VIc2MgL2MKKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EIC9XNCAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0ZEIC9FSHNjIC9jCisjIEFERCBDUFAgL25vbG9nbyAvTUQgL1c0IC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIkNVUkxfU1RBVElDTElCIiAvRkQgL0VIc2MgL2MKICMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9pICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvZCAiTkRFQlVHIgogIyBBREQgUlNDIC9sIDB4NDA5IC9pICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvZCAiTkRFQlVHIgogQlNDMzI9YnNjbWFrZS5leGUKQEAgLTUyMSw3ICs1MjEsNyBAQAogIyBBREQgQkFTRSBMSU5LMzIgYWR2YXBpMzIubGliIHdsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybC5saWIgbGliZWF5MzIubGliIHNzbGVheTMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTFxjdXJsLmV4ZSIgL2xpYnBhdGg6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIiAvZml4ZWQ6bm8KICMgQUREIExJTkszMiBhZHZhcGkzMi5saWIgd2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsLmxpYiBsaWJlYXkzMi5saWIgc3NsZWF5MzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6bm9uZSAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMXGN1cmwuZXhlIiAvbGlicGF0aDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wiIC9saWJwYXRoOiIuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjMyXFZDNlxETEwgUmVsZWFzZSIgL2ZpeGVkOm5vCiAKLSFFTFNFSUYgICIkKENGRykiID09ICJjdXJsc3JjIC0gV2luMzIgTElCIFJlbGVhc2UgRExMIE9wZW5TU0wgRExMIExpYlNTSDIiCishRUxTRUlGICAiJChDRkcpIiA9PSAiY3VybCAtIFdpbjMyIExJQiBSZWxlYXNlIERMTCBPcGVuU1NMIERMTCBMaWJTU0gyIgogCiAjIFBST1AgQkFTRSBVc2VfTUZDIDAKICMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMApAQCAtNTM1LDggKzUzNSw4IEBACiAjIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMlxzcmMiCiAjIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMAogIyBQUk9QIFRhcmdldF9EaXIgIiIKLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EIC9XMyAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0ZEIC9FSHNjIC9jCi0jIEFERCBDUFAgL25vbG9nbyAvTUQgL1czIC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIkNVUkxfU1RBVElDTElCIiAvRkQgL0VIc2MgL2MKKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01EIC9XNCAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0ZEIC9FSHNjIC9jCisjIEFERCBDUFAgL25vbG9nbyAvTUQgL1c0IC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIkNVUkxfU1RBVElDTElCIiAvRkQgL0VIc2MgL2MKICMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9pICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvZCAiTkRFQlVHIgogIyBBREQgUlNDIC9sIDB4NDA5IC9pICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvZCAiTkRFQlVHIgogQlNDMzI9YnNjbWFrZS5leGUKQEAgLTU0Niw3ICs1NDYsNyBAQAogIyBBREQgQkFTRSBMSU5LMzIgYWR2YXBpMzIubGliIHdsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybC5saWIgbGliZWF5MzIubGliIHNzbGVheTMyLmxpYiBsaWJzc2gyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyXGN1cmwuZXhlIiAvbGlicGF0aDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wiIC9saWJwYXRoOiIuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjMyXFZDNlxETEwgUmVsZWFzZSIgL2xpYnBhdGg6Ii4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcYnVpbGRcV2luMzJcVkM2XERMTCBSZWxlYXNlIiAvZml4ZWQ6bm8KICMgQUREIExJTkszMiBhZHZhcGkzMi5saWIgd2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsLmxpYiBsaWJlYXkzMi5saWIgc3NsZWF5MzIubGliIGxpYnNzaDIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6bm9uZSAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJcY3VybC5leGUiIC9saWJwYXRoOiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCIgL2xpYnBhdGg6Ii4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luMzJcVkM2XERMTCBSZWxlYXNlIiAvbGlicGF0aDoiLi5cLi5cLi5cLi5cLi5cbGlic3NoMlxidWlsZFxXaW4zMlxWQzZcRExMIFJlbGVhc2UiIC9maXhlZDpubwogCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiY3VybHNyYyAtIFdpbjMyIExJQiBSZWxlYXNlIERMTCBXaW5kb3dzIFNTUEkiCishRUxTRUlGICAiJChDRkcpIiA9PSAiY3VybCAtIFdpbjMyIExJQiBSZWxlYXNlIERMTCBXaW5kb3dzIFNTUEkiCiAKICMgUFJPUCBCQVNFIFVzZV9NRkMgMAogIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwCkBAIC01NjAsOCArNTYwLDggQEAKICMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJXHNyYyIKICMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwCiAjIFBST1AgVGFyZ2V0X0RpciAiIgotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTUQgL1czIC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIkNVUkxfU1RBVElDTElCIiAvRkQgL0VIc2MgL2MKLSMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzMgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9GRCAvRUhzYyAvYworIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTUQgL1c0IC9PMiAvSSAiJChQcm9ncmFtRmlsZXMpXE1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcSW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxsaWIiIC9JICIuLlwuLlwuLlwuLlxzcmMiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIkNVUkxfU1RBVElDTElCIiAvRkQgL0VIc2MgL2MKKyMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzQgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9GRCAvRUhzYyAvYwogIyBBREQgQkFTRSBSU0MgL2wgMHg0MDkgL2kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9kICJOREVCVUciCiAjIEFERCBSU0MgL2wgMHg0MDkgL2kgIi4uXC4uXC4uXC4uXGluY2x1ZGUiIC9kICJOREVCVUciCiBCU0MzMj1ic2NtYWtlLmV4ZQpAQCAtNTcxLDcgKzU3MSw3IEBACiAjIEFERCBCQVNFIExJTkszMiBhZHZhcGkzMi5saWIgd2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJXGN1cmwuZXhlIiAvbGlicGF0aDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XExJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSIgL2ZpeGVkOm5vCiAjIEFERCBMSU5LMzIgYWR2YXBpMzIubGliIHdsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybC5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL3BkYjpub25lIC9tYWNoaW5lOkkzODYgL291dDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XExJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSVxjdXJsLmV4ZSIgL2xpYnBhdGg6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkiIC9maXhlZDpubwogCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiY3VybHNyYyAtIFdpbjMyIExJQiBSZWxlYXNlIERMTCBXaW5kb3dzIFNTUEkgRExMIFdpbklETiIKKyFFTFNFSUYgICIkKENGRykiID09ICJjdXJsIC0gV2luMzIgTElCIFJlbGVhc2UgRExMIFdpbmRvd3MgU1NQSSBETEwgV2luSUROIgogCiAjIFBST1AgQkFTRSBVc2VfTUZDIDAKICMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMApAQCAtNTg1LDggKzU4NSw4IEBACiAjIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XExJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE5cc3JjIgogIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDAKICMgUFJPUCBUYXJnZXRfRGlyICIiCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRCAvVzMgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9GRCAvRUhzYyAvYwotIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XMyAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0ZEIC9FSHNjIC9jCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRCAvVzQgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9GRCAvRUhzYyAvYworIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XNCAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0ZEIC9FSHNjIC9jCiAjIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvaSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL2QgIk5ERUJVRyIKICMgQUREIFJTQyAvbCAweDQwOSAvaSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL2QgIk5ERUJVRyIKIEJTQzMyPWJzY21ha2UuZXhlCkBAIC01OTYsNyArNTk2LDcgQEAKICMgQUREIEJBU0UgTElOSzMyIGFkdmFwaTMyLmxpYiBub3JtYWxpei5saWIgd2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETlxjdXJsLmV4ZSIgL2xpYnBhdGg6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROIiAvZml4ZWQ6bm8KICMgQUREIExJTkszMiBhZHZhcGkzMi5saWIgbm9ybWFsaXoubGliIHdsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybC5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL3BkYjpub25lIC9tYWNoaW5lOkkzODYgL291dDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XExJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE5cY3VybC5leGUiIC9saWJwYXRoOiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETiIgL2ZpeGVkOm5vCiAKLSFFTFNFSUYgICIkKENGRykiID09ICJjdXJsc3JjIC0gV2luMzIgTElCIFJlbGVhc2UgTElCIE9wZW5TU0wiCishRUxTRUlGICAiJChDRkcpIiA9PSAiY3VybCAtIFdpbjMyIExJQiBSZWxlYXNlIExJQiBPcGVuU1NMIgogCiAjIFBST1AgQkFTRSBVc2VfTUZDIDAKICMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMApAQCAtNjEwLDggKzYxMCw4IEBACiAjIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0xcc3JjIgogIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDAKICMgUFJPUCBUYXJnZXRfRGlyICIiCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRCAvVzMgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9GRCAvRUhzYyAvYwotIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XMyAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0ZEIC9FSHNjIC9jCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRCAvVzQgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9GRCAvRUhzYyAvYworIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XNCAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0ZEIC9FSHNjIC9jCiAjIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvaSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL2QgIk5ERUJVRyIKICMgQUREIFJTQyAvbCAweDQwOSAvaSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL2QgIk5ERUJVRyIKIEJTQzMyPWJzY21ha2UuZXhlCkBAIC02MjEsNyArNjIxLDcgQEAKICMgQUREIEJBU0UgTElOSzMyIGFkdmFwaTMyLmxpYiBjcnlwdDMyLmxpYiBnZGkzMi5saWIgdXNlcjMyLmxpYiB3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmwubGliIGxpYmVheTMyLmxpYiBzc2xlYXkzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL3BkYjpub25lIC9tYWNoaW5lOkkzODYgL291dDoiLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM2XExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0xcY3VybC5leGUiIC9saWJwYXRoOiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCIgL2ZpeGVkOm5vCiAjIEFERCBMSU5LMzIgYWR2YXBpMzIubGliIGNyeXB0MzIubGliIGdkaTMyLmxpYiB1c2VyMzIubGliIHdsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybC5saWIgbGliZWF5MzIubGliIHNzbGVheTMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzZcTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTFxjdXJsLmV4ZSIgL2xpYnBhdGg6Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIiAvbGlicGF0aDoiLi5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW4zMlxWQzZcTElCIFJlbGVhc2UiIC9maXhlZDpubwogCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiY3VybHNyYyAtIFdpbjMyIExJQiBSZWxlYXNlIExJQiBPcGVuU1NMIExJQiBMaWJTU0gyIgorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImN1cmwgLSBXaW4zMiBMSUIgUmVsZWFzZSBMSUIgT3BlblNTTCBMSUIgTGliU1NIMiIKIAogIyBQUk9QIEJBU0UgVXNlX01GQyAwCiAjIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDAKQEAgLTYzNSw4ICs2MzUsOCBAQAogIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIi4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNlxMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJcc3JjIgogIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDAKICMgUFJPUCBUYXJnZXRfRGlyICIiCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRCAvVzMgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9GRCAvRUhzYyAvYwotIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XMyAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0ZEIC9FSHNjIC9jCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NRCAvVzQgL08yIC9JICIkKFByb2dyYW1GaWxlcylcTWljcm9zb2Z0IFBsYXRmb3JtIFNES1xJbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXC4uXC4uXGxpYiIgL0kgIi4uXC4uXC4uXC4uXHNyYyIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiQ1VSTF9TVEFUSUNMSUIiIC9GRCAvRUhzYyAvYworIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XNCAvTzIgL0kgIiQoUHJvZ3JhbUZpbGVzKVxNaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEluY2x1ZGUiIC9JICIuLlwuLlwuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cLi5cLi5cbGliIiAvSSAiLi5cLi5cLi5cLi5cc3JjIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJDVVJMX1NUQVRJQ0xJQiIgL0ZEIC9FSHNjIC9jCiAjIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvaSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL2QgIk5ERUJVRyIKICMgQUREIFJTQyAvbCAweDQwOSAvaSAiLi5cLi5cLi5cLi5caW5jbHVkZSIgL2QgIk5ERUJVRyIKIEJTQzMyPWJzY21ha2UuZXhlCkBAIC02NTAsMzAgKzY1MCwzMCBAQAogCiAjIEJlZ2luIFRhcmdldAogCi0jIE5hbWUgImN1cmxzcmMgLSBXaW4zMiBETEwgRGVidWciCi0jIE5hbWUgImN1cmxzcmMgLSBXaW4zMiBETEwgRGVidWcgRExMIE9wZW5TU0wiCi0jIE5hbWUgImN1cmxzcmMgLSBXaW4zMiBETEwgRGVidWcgRExMIE9wZW5TU0wgRExMIExpYlNTSDIiCi0jIE5hbWUgImN1cmxzcmMgLSBXaW4zMiBETEwgRGVidWcgRExMIFdpbmRvd3MgU1NQSSIKLSMgTmFtZSAiY3VybHNyYyAtIFdpbjMyIERMTCBEZWJ1ZyBETEwgV2luZG93cyBTU1BJIERMTCBXaW5JRE4iCi0jIE5hbWUgImN1cmxzcmMgLSBXaW4zMiBETEwgUmVsZWFzZSIKLSMgTmFtZSAiY3VybHNyYyAtIFdpbjMyIERMTCBSZWxlYXNlIERMTCBPcGVuU1NMIgotIyBOYW1lICJjdXJsc3JjIC0gV2luMzIgRExMIFJlbGVhc2UgRExMIE9wZW5TU0wgRExMIExpYlNTSDIiCi0jIE5hbWUgImN1cmxzcmMgLSBXaW4zMiBETEwgUmVsZWFzZSBETEwgV2luZG93cyBTU1BJIgotIyBOYW1lICJjdXJsc3JjIC0gV2luMzIgRExMIFJlbGVhc2UgRExMIFdpbmRvd3MgU1NQSSBETEwgV2luSUROIgotIyBOYW1lICJjdXJsc3JjIC0gV2luMzIgTElCIERlYnVnIgotIyBOYW1lICJjdXJsc3JjIC0gV2luMzIgTElCIERlYnVnIERMTCBPcGVuU1NMIgotIyBOYW1lICJjdXJsc3JjIC0gV2luMzIgTElCIERlYnVnIERMTCBPcGVuU1NMIERMTCBMaWJTU0gyIgotIyBOYW1lICJjdXJsc3JjIC0gV2luMzIgTElCIERlYnVnIERMTCBXaW5kb3dzIFNTUEkiCi0jIE5hbWUgImN1cmxzcmMgLSBXaW4zMiBMSUIgRGVidWcgRExMIFdpbmRvd3MgU1NQSSBETEwgV2luSUROIgotIyBOYW1lICJjdXJsc3JjIC0gV2luMzIgTElCIERlYnVnIExJQiBPcGVuU1NMIgotIyBOYW1lICJjdXJsc3JjIC0gV2luMzIgTElCIERlYnVnIExJQiBPcGVuU1NMIExJQiBMaWJTU0gyIgotIyBOYW1lICJjdXJsc3JjIC0gV2luMzIgTElCIFJlbGVhc2UiCi0jIE5hbWUgImN1cmxzcmMgLSBXaW4zMiBMSUIgUmVsZWFzZSBETEwgT3BlblNTTCIKLSMgTmFtZSAiY3VybHNyYyAtIFdpbjMyIExJQiBSZWxlYXNlIERMTCBPcGVuU1NMIERMTCBMaWJTU0gyIgotIyBOYW1lICJjdXJsc3JjIC0gV2luMzIgTElCIFJlbGVhc2UgRExMIFdpbmRvd3MgU1NQSSIKLSMgTmFtZSAiY3VybHNyYyAtIFdpbjMyIExJQiBSZWxlYXNlIERMTCBXaW5kb3dzIFNTUEkgRExMIFdpbklETiIKLSMgTmFtZSAiY3VybHNyYyAtIFdpbjMyIExJQiBSZWxlYXNlIExJQiBPcGVuU1NMIgotIyBOYW1lICJjdXJsc3JjIC0gV2luMzIgTElCIFJlbGVhc2UgTElCIE9wZW5TU0wgTElCIExpYlNTSDIiCisjIE5hbWUgImN1cmwgLSBXaW4zMiBETEwgRGVidWciCisjIE5hbWUgImN1cmwgLSBXaW4zMiBETEwgRGVidWcgRExMIE9wZW5TU0wiCisjIE5hbWUgImN1cmwgLSBXaW4zMiBETEwgRGVidWcgRExMIE9wZW5TU0wgRExMIExpYlNTSDIiCisjIE5hbWUgImN1cmwgLSBXaW4zMiBETEwgRGVidWcgRExMIFdpbmRvd3MgU1NQSSIKKyMgTmFtZSAiY3VybCAtIFdpbjMyIERMTCBEZWJ1ZyBETEwgV2luZG93cyBTU1BJIERMTCBXaW5JRE4iCisjIE5hbWUgImN1cmwgLSBXaW4zMiBETEwgUmVsZWFzZSIKKyMgTmFtZSAiY3VybCAtIFdpbjMyIERMTCBSZWxlYXNlIERMTCBPcGVuU1NMIgorIyBOYW1lICJjdXJsIC0gV2luMzIgRExMIFJlbGVhc2UgRExMIE9wZW5TU0wgRExMIExpYlNTSDIiCisjIE5hbWUgImN1cmwgLSBXaW4zMiBETEwgUmVsZWFzZSBETEwgV2luZG93cyBTU1BJIgorIyBOYW1lICJjdXJsIC0gV2luMzIgRExMIFJlbGVhc2UgRExMIFdpbmRvd3MgU1NQSSBETEwgV2luSUROIgorIyBOYW1lICJjdXJsIC0gV2luMzIgTElCIERlYnVnIgorIyBOYW1lICJjdXJsIC0gV2luMzIgTElCIERlYnVnIERMTCBPcGVuU1NMIgorIyBOYW1lICJjdXJsIC0gV2luMzIgTElCIERlYnVnIERMTCBPcGVuU1NMIERMTCBMaWJTU0gyIgorIyBOYW1lICJjdXJsIC0gV2luMzIgTElCIERlYnVnIERMTCBXaW5kb3dzIFNTUEkiCisjIE5hbWUgImN1cmwgLSBXaW4zMiBMSUIgRGVidWcgRExMIFdpbmRvd3MgU1NQSSBETEwgV2luSUROIgorIyBOYW1lICJjdXJsIC0gV2luMzIgTElCIERlYnVnIExJQiBPcGVuU1NMIgorIyBOYW1lICJjdXJsIC0gV2luMzIgTElCIERlYnVnIExJQiBPcGVuU1NMIExJQiBMaWJTU0gyIgorIyBOYW1lICJjdXJsIC0gV2luMzIgTElCIFJlbGVhc2UiCisjIE5hbWUgImN1cmwgLSBXaW4zMiBMSUIgUmVsZWFzZSBETEwgT3BlblNTTCIKKyMgTmFtZSAiY3VybCAtIFdpbjMyIExJQiBSZWxlYXNlIERMTCBPcGVuU1NMIERMTCBMaWJTU0gyIgorIyBOYW1lICJjdXJsIC0gV2luMzIgTElCIFJlbGVhc2UgRExMIFdpbmRvd3MgU1NQSSIKKyMgTmFtZSAiY3VybCAtIFdpbjMyIExJQiBSZWxlYXNlIERMTCBXaW5kb3dzIFNTUEkgRExMIFdpbklETiIKKyMgTmFtZSAiY3VybCAtIFdpbjMyIExJQiBSZWxlYXNlIExJQiBPcGVuU1NMIgorIyBOYW1lICJjdXJsIC0gV2luMzIgTElCIFJlbGVhc2UgTElCIE9wZW5TU0wgTElCIExpYlNTSDIiCiAjIEJlZ2luIEdyb3VwICJTb3VyY2UgRmlsZXMiCiAKICMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiIgpkaWZmIC0tZ2l0IGEvcHJvamVjdHMvV2luZG93cy9WQzcuMS9jdXJsLWFsbC5zbG4gYi9wcm9qZWN0cy9XaW5kb3dzL1ZDNy4xL2N1cmwtYWxsLnNsbgppbmRleCA0NDc1Yzc3Li5mYzUxYjlkIDEwMDY0NAotLS0gYS9wcm9qZWN0cy9XaW5kb3dzL1ZDNy4xL2N1cmwtYWxsLnNsbgorKysgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDNy4xL2N1cmwtYWxsLnNsbgpAQCAtMSw1ICsxLDUgQEAKIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIFNvbHV0aW9uIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDguMDAKLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiY3VybHNyYyIsICJzcmNcY3VybHNyYy52Y3Byb2oiLCAiezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0iCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImN1cmwiLCAic3JjXGN1cmwudmNwcm9qIiwgIns1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9IgogCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0gPSB7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfQogCUVuZFByb2plY3RTZWN0aW9uCmRpZmYgLS1naXQgYS9wcm9qZWN0cy9XaW5kb3dzL1ZDNy4xL2xpYi8uZ2l0aWdub3JlIGIvcHJvamVjdHMvV2luZG93cy9WQzcuMS9saWIvLmdpdGlnbm9yZQppbmRleCA4YjMxOWE3Li5hNzM1M2JmIDEwMDY0NAotLS0gYS9wcm9qZWN0cy9XaW5kb3dzL1ZDNy4xL2xpYi8uZ2l0aWdub3JlCisrKyBiL3Byb2plY3RzL1dpbmRvd3MvVkM3LjEvbGliLy5naXRpZ25vcmUKQEAgLTEsMyArMSwzIEBACi0vKi52Y3Byb2oKIC8qLm5jYgogLyouc3VvCisvKi52Y3Byb2oKZGlmZiAtLWdpdCBhL3Byb2plY3RzL1dpbmRvd3MvVkM3LjEvbGliL2xpYmN1cmwudG1wbCBiL3Byb2plY3RzL1dpbmRvd3MvVkM3LjEvbGliL2xpYmN1cmwudG1wbAppbmRleCBmMjc3ODJlLi5lZTE3YjRiIDEwMDY0NAotLS0gYS9wcm9qZWN0cy9XaW5kb3dzL1ZDNy4xL2xpYi9saWJjdXJsLnRtcGwKKysrIGIvcHJvamVjdHMvV2luZG93cy9WQzcuMS9saWIvbGliY3VybC50bXBsCkBAIC0yNyw3ICsyNyw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0iVFJVRSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlDb21waWxlQXM9IjAiLz4KIAkJCTxUb29sCkBAIC04NCw3ICs4NCw3IEBACiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRztCVUlMRElOR19MSUJDVVJMO0RFQlVHQlVJTEQ7VVNFX09QRU5TU0wiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CkBAIC0xNDMsNyArMTQzLDcgQEAKIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHO0JVSUxESU5HX0xJQkNVUkw7REVCVUdCVUlMRCIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCQlDb21waWxlQXM9IjAiLz4KQEAgLTIwMiw3ICsyMDIsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CiAJCQk8VG9vbApAQCAtMjQ4LDcgKzI0OCw3IEBACiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRztCVUlMRElOR19MSUJDVVJMO0RFQlVHQlVJTEQ7Q1VSTF9TVEFUSUNMSUI7VVNFX09QRU5TU0w7VVNFX0xJQlNTSDI7SEFWRV9MSUJTU0gyX0giCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CkBAIC0yOTYsNyArMjk2LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUNvbXBpbGVBcz0iMCIvPgogCQkJPFRvb2wKQEAgLTM1Miw3ICszNTIsNyBAQAogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUc7QlVJTERJTkdfTElCQ1VSTDtERUJVR0JVSUxEO0NVUkxfU1RBVElDTElCO1VTRV9PUEVOU1NMO1VTRV9MSUJTU0gyO0hBVkVfTElCU1NIMl9IIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJCUNvbXBpbGVBcz0iMCIvPgpAQCAtMzk5LDcgKzM5OSw3IEBACiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRztCVUlMRElOR19MSUJDVVJMO0RFQlVHQlVJTEQ7Q1VSTF9TVEFUSUNMSUI7VVNFX1dJTkRPV1NfU1NQSTtVU0VfU0NIQU5ORUwiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CkBAIC00NDYsNyArNDQ2LDcgQEAKIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHO0JVSUxESU5HX0xJQkNVUkw7REVCVUdCVUlMRDtDVVJMX1NUQVRJQ0xJQjtVU0VfT1BFTlNTTCIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCQlDb21waWxlQXM9IjAiLz4KQEAgLTQ5NCw3ICs0OTQsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CiAJCQk8VG9vbApAQCAtNTUwLDcgKzU1MCw3IEBACiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRztCVUlMRElOR19MSUJDVVJMO0RFQlVHQlVJTEQ7VVNFX1dJTkRPV1NfU1NQSTtVU0VfU0NIQU5ORUwiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CkBAIC02MDksNyArNjA5LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUNvbXBpbGVBcz0iMCIvPgogCQkJPFRvb2wKQEAgLTY1Niw3ICs2NTYsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CiAJCQk8VG9vbApAQCAtNzE0LDcgKzcxNCw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0iVFJVRSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlDb21waWxlQXM9IjAiLz4KIAkJCTxUb29sCkBAIC03NjEsNyArNzYxLDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUNvbXBpbGVBcz0iMCIvPgogCQkJPFRvb2wKQEAgLTgwOCw3ICs4MDgsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CiAJCQk8VG9vbApAQCAtODU1LDcgKzg1NSw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0iVFJVRSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlDb21waWxlQXM9IjAiLz4KIAkJCTxUb29sCkBAIC05MDEsNyArOTAxLDcgQEAKIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHO0JVSUxESU5HX0xJQkNVUkw7REVCVUdCVUlMRDtDVVJMX1NUQVRJQ0xJQiIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCQlDb21waWxlQXM9IjAiLz4KQEAgLTk0OCw3ICs5NDgsNyBAQAogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUc7QlVJTERJTkdfTElCQ1VSTDtERUJVR0JVSUxEO1VTRV9PUEVOU1NMO1VTRV9MSUJTU0gyO0hBVkVfTElCU1NIMl9IIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJCUNvbXBpbGVBcz0iMCIvPgpAQCAtMTAwNyw3ICsxMDA3LDcgQEAKIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHO0JVSUxESU5HX0xJQkNVUkw7REVCVUdCVUlMRDtDVVJMX1NUQVRJQ0xJQjtVU0VfT1BFTlNTTCIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCQlDb21waWxlQXM9IjAiLz4KQEAgLTEwNTQsNyArMTA1NCw3IEBACiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRztCVUlMRElOR19MSUJDVVJMO0RFQlVHQlVJTEQ7VVNFX1dJTkRPV1NfU1NQSTtVU0VfU0NIQU5ORUw7VVNFX1dJTjMyX0lETjtXQU5UX0lETl9QUk9UT1RZUEVTIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJCUNvbXBpbGVBcz0iMCIvPgpAQCAtMTExMyw3ICsxMTEzLDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUNvbXBpbGVBcz0iMCIvPgogCQkJPFRvb2wKQEAgLTExNjksNyArMTE2OSw3IEBACiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRztCVUlMRElOR19MSUJDVVJMO0RFQlVHQlVJTEQ7Q1VSTF9TVEFUSUNMSUI7VVNFX1dJTkRPV1NfU1NQSTtVU0VfU0NIQU5ORUw7VVNFX1dJTjMyX0lETjtXQU5UX0lETl9QUk9UT1RZUEVTIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJCUNvbXBpbGVBcz0iMCIvPgpAQCAtMTIxNyw3ICsxMjE3LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUNvbXBpbGVBcz0iMCIvPgogCQkJPFRvb2wKQEAgLTEyNjgsNiArMTI2OCwyMCBAQAogQ1VSTF9MSUJfUkNfRklMRVMKIAkJPC9GaWx0ZXI+CiAJCTxGaWx0ZXIKKwkJCU5hbWU9InZhdXRoIgorCQkJRmlsdGVyPSIiPgorCQkJPEZpbHRlcgorCQkJCU5hbWU9IlNvdXJjZSBGaWxlcyIKKwkJCQlGaWx0ZXI9IiI+CitDVVJMX0xJQl9WQVVUSF9DX0ZJTEVTCisJCQk8L0ZpbHRlcj4KKwkJCTxGaWx0ZXIKKwkJCQlOYW1lPSJIZWFkZXIgRmlsZXMiCisJCQkJRmlsdGVyPSIiPgorQ1VSTF9MSUJfVkFVVEhfSF9GSUxFUworCQkJPC9GaWx0ZXI+CisJCTwvRmlsdGVyPgorCQk8RmlsdGVyCiAJCQlOYW1lPSJ2dGxzIgogCQkJRmlsdGVyPSIiPgogCQkJPEZpbHRlcgpkaWZmIC0tZ2l0IGEvcHJvamVjdHMvV2luZG93cy9WQzcuMS9zcmMvLmdpdGlnbm9yZSBiL3Byb2plY3RzL1dpbmRvd3MvVkM3LjEvc3JjLy5naXRpZ25vcmUKaW5kZXggOGIzMTlhNy4uYTczNTNiZiAxMDA2NDQKLS0tIGEvcHJvamVjdHMvV2luZG93cy9WQzcuMS9zcmMvLmdpdGlnbm9yZQorKysgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDNy4xL3NyYy8uZ2l0aWdub3JlCkBAIC0xLDMgKzEsMyBAQAotLyoudmNwcm9qCiAvKi5uY2IKIC8qLnN1bworLyoudmNwcm9qCmRpZmYgLS1naXQgYS9wcm9qZWN0cy9XaW5kb3dzL1ZDNy4xL3NyYy9jdXJsc3JjLnNsbiBiL3Byb2plY3RzL1dpbmRvd3MvVkM3LjEvc3JjL2N1cmwuc2xuCnNpbWlsYXJpdHkgaW5kZXggOTglCnJlbmFtZSBmcm9tIHByb2plY3RzL1dpbmRvd3MvVkM3LjEvc3JjL2N1cmxzcmMuc2xuCnJlbmFtZSB0byBwcm9qZWN0cy9XaW5kb3dzL1ZDNy4xL3NyYy9jdXJsLnNsbgppbmRleCBjYmEzYjYwLi40MWViYjYxIDEwMDY0NAotLS0gYS9wcm9qZWN0cy9XaW5kb3dzL1ZDNy4xL3NyYy9jdXJsc3JjLnNsbgorKysgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDNy4xL3NyYy9jdXJsLnNsbgpAQCAtMSw1ICsxLDUgQEAKIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIFNvbHV0aW9uIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDguMDAKLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiY3VybHNyYyIsICJjdXJsc3JjLnZjcHJvaiIsICJ7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfSIKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiY3VybCIsICJjdXJsLnZjcHJvaiIsICJ7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfSIKIAlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0CiAJRW5kUHJvamVjdFNlY3Rpb24KIEVuZFByb2plY3QKZGlmZiAtLWdpdCBhL3Byb2plY3RzL1dpbmRvd3MvVkM3LjEvc3JjL2N1cmxzcmMudG1wbCBiL3Byb2plY3RzL1dpbmRvd3MvVkM3LjEvc3JjL2N1cmwudG1wbApzaW1pbGFyaXR5IGluZGV4IDk2JQpyZW5hbWUgZnJvbSBwcm9qZWN0cy9XaW5kb3dzL1ZDNy4xL3NyYy9jdXJsc3JjLnRtcGwKcmVuYW1lIHRvIHByb2plY3RzL1dpbmRvd3MvVkM3LjEvc3JjL2N1cmwudG1wbAppbmRleCA2NTIyNmMwLi45OGMwODEyIDEwMDY0NAotLS0gYS9wcm9qZWN0cy9XaW5kb3dzL1ZDNy4xL3NyYy9jdXJsc3JjLnRtcGwKKysrIGIvcHJvamVjdHMvV2luZG93cy9WQzcuMS9zcmMvY3VybC50bXBsCkBAIC0yLDcgKzIsNyBAQAogPFZpc3VhbFN0dWRpb1Byb2plY3QKIAlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyIKIAlWZXJzaW9uPSI3LjEwIgotCU5hbWU9ImN1cmxzcmMiCisJTmFtZT0iY3VybCIKIAlTY2NQcm9qZWN0TmFtZT0iIgogCVNjY0xvY2FsUGF0aD0iIj4KIAk8UGxhdGZvcm1zPgpAQCAtMjYsNyArMjYsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CiAJCQk8VG9vbApAQCAtMzUsNyArMzUsNyBAQAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL01BQ0hJTkU6STM4NiAvRklYRUQ6Tk8iCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iY3J5cHQzMi5saWIgd2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsLmxpYiBsaWJlYXkzMi5saWIgc3NsZWF5MzIubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM3LjFcJChDb25maWd1cmF0aW9uTmFtZSksLi5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW4zMlxWQzcuMVxMSUIgUmVsZWFzZSIKQEAgLTgxLDcgKzgxLDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUNvbXBpbGVBcz0iMCIvPgogCQkJPFRvb2wKQEAgLTkwLDcgKzkwLDcgQEAKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9NQUNISU5FOkkzODYgL0ZJWEVEOk5PIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmwuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzcuMVwkKENvbmZpZ3VyYXRpb25OYW1lKSIKQEAgLTEzNiw3ICsxMzYsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CiAJCQk8VG9vbApAQCAtMTQ1LDcgKzE0NSw3IEBACiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvTUFDSElORTpJMzg2IC9GSVhFRDpOTyIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmwubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM3LjFcJChDb25maWd1cmF0aW9uTmFtZSkiCkBAIC0xOTAsNyArMTkwLDcgQEAKIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHO19DT05TT0xFO0RFQlVHQlVJTEQ7Q1VSTF9TVEFUSUNMSUIiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CkBAIC0yMDAsNyArMjAwLDcgQEAKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9NQUNISU5FOkkzODYgL0ZJWEVEOk5PIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybGQubGliIGxpYmVheTMyLmxpYiBzc2xlYXkzMi5saWIgbGlic3NoMmQubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsZC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpZC5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzcuMVwkKENvbmZpZ3VyYXRpb25OYW1lKSwuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjMyXFZDNy4xXERMTCBEZWJ1ZywuLlwuLlwuLlwuLlwuLlxsaWJzc2gyXGJ1aWxkXFdpbjMyXFZDNy4xXERMTCBEZWJ1ZyIKQEAgLTI0Nyw3ICsyNDcsNyBAQAogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUc7X0NPTlNPTEU7REVCVUdCVUlMRDtDVVJMX1NUQVRJQ0xJQiIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCQlDb21waWxlQXM9IjAiLz4KQEAgLTI1Nyw3ICsyNTcsNyBAQAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL01BQ0hJTkU6STM4NiAvRklYRUQ6Tk8iCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iY3J5cHQzMi5saWIgd2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsZC5saWIgbGliZWF5MzIubGliIHNzbGVheTMyLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybGQuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKWQuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM3LjFcJChDb25maWd1cmF0aW9uTmFtZSksLi5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW4zMlxWQzcuMVxMSUIgRGVidWciCkBAIC0zMDQsNyArMzA0LDcgQEAKIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHO19DT05TT0xFO0RFQlVHQlVJTEQiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CkBAIC0zMTQsNyArMzE0LDcgQEAKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9NQUNISU5FOkkzODYgL0ZJWEVEOk5PIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybGQubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsZC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpZC5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzcuMVwkKENvbmZpZ3VyYXRpb25OYW1lKSIKQEAgLTM2MSw3ICszNjEsNyBAQAogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUc7X0NPTlNPTEU7REVCVUdCVUlMRDtDVVJMX1NUQVRJQ0xJQiIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCQlDb21waWxlQXM9IjAiLz4KQEAgLTM3MSw3ICszNzEsNyBAQAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL01BQ0hJTkU6STM4NiAvRklYRUQ6Tk8iCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iY3J5cHQzMi5saWIgd2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsZC5saWIgbGliZWF5MzIubGliIHNzbGVheTMyLmxpYiBsaWJzc2gyZC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmxkLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlkLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNy4xXCQoQ29uZmlndXJhdGlvbk5hbWUpLC4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luMzJcVkM3LjFcTElCIERlYnVnLC4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcYnVpbGRcV2luMzJcVkM3LjFcTElCIERlYnVnIgpAQCAtNDE5LDcgKzQxOSw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0iVFJVRSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlDb21waWxlQXM9IjAiLz4KIAkJCTxUb29sCkBAIC00MjgsNyArNDI4LDcgQEAKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9NQUNISU5FOkkzODYgL0ZJWEVEOk5PIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybC5saWIgbGliZWF5MzIubGliIHNzbGVheTMyLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNy4xXCQoQ29uZmlndXJhdGlvbk5hbWUpLC4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luMzJcVkM3LjFcRExMIFJlbGVhc2UiCkBAIC00NzQsNyArNDc0LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUNvbXBpbGVBcz0iMCIvPgogCQkJPFRvb2wKQEAgLTQ4Myw3ICs0ODMsNyBAQAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL01BQ0hJTkU6STM4NiAvRklYRUQ6Tk8iCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsLmxpYiBsaWJlYXkzMi5saWIgc3NsZWF5MzIubGliIGxpYnNzaDIubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM3LjFcJChDb25maWd1cmF0aW9uTmFtZSksLi5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW4zMlxWQzcuMVxETEwgUmVsZWFzZSwuLlwuLlwuLlwuLlwuLlxsaWJzc2gyXGJ1aWxkXFdpbjMyXFZDNy4xXERMTCBSZWxlYXNlIgpAQCAtNTI5LDcgKzUyOSw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0iVFJVRSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlDb21waWxlQXM9IjAiLz4KIAkJCTxUb29sCkBAIC01MzgsNyArNTM4LDcgQEAKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9NQUNISU5FOkkzODYgL0ZJWEVEOk5PIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmwuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzcuMVwkKENvbmZpZ3VyYXRpb25OYW1lKSIKQEAgLTU4NCw3ICs1ODQsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CiAJCQk8VG9vbApAQCAtNTkzLDcgKzU5Myw3IEBACiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvTUFDSElORTpJMzg2IC9GSVhFRDpOTyIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJjcnlwdDMyLmxpYiB3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmwubGliIGxpYmVheTMyLmxpYiBzc2xlYXkzMi5saWIgbGlic3NoMi5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmwuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzcuMVwkKENvbmZpZ3VyYXRpb25OYW1lKSwuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjMyXFZDNy4xXExJQiBSZWxlYXNlLC4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcYnVpbGRcV2luMzJcVkM3LjFcTElCIFJlbGVhc2UiCkBAIC02MzgsNyArNjM4LDcgQEAKIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHO19DT05TT0xFO0RFQlVHQlVJTEQ7Q1VSTF9TVEFUSUNMSUIiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CkBAIC02NDgsNyArNjQ4LDcgQEAKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9NQUNISU5FOkkzODYgL0ZJWEVEOk5PIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybGQubGliIGxpYmVheTMyLmxpYiBzc2xlYXkzMi5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmxkLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlkLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNy4xXCQoQ29uZmlndXJhdGlvbk5hbWUpLC4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luMzJcVkM3LjFcRExMIERlYnVnIgpAQCAtNjk1LDcgKzY5NSw3IEBACiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRztfQ09OU09MRTtERUJVR0JVSUxEO0NVUkxfU1RBVElDTElCIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJCUNvbXBpbGVBcz0iMCIvPgpAQCAtNzA1LDcgKzcwNSw3IEBACiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvTUFDSElORTpJMzg2IC9GSVhFRDpOTyIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmxkLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybGQuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKWQuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM3LjFcJChDb25maWd1cmF0aW9uTmFtZSkiCkBAIC03NTIsNyArNzUyLDcgQEAKIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHO19DT05TT0xFO0RFQlVHQlVJTEQiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CkBAIC03NjIsNyArNzYyLDcgQEAKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9NQUNISU5FOkkzODYgL0ZJWEVEOk5PIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybGQubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsZC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpZC5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzcuMVwkKENvbmZpZ3VyYXRpb25OYW1lKSIKQEAgLTgxMCw3ICs4MTAsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CiAJCQk8VG9vbApAQCAtODE5LDcgKzgxOSw3IEBACiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvTUFDSElORTpJMzg2IC9GSVhFRDpOTyIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmwubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM3LjFcJChDb25maWd1cmF0aW9uTmFtZSkiCkBAIC04NjUsNyArODY1LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUNvbXBpbGVBcz0iMCIvPgogCQkJPFRvb2wKQEAgLTg3NCw3ICs4NzQsNyBAQAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL01BQ0hJTkU6STM4NiAvRklYRUQ6Tk8iCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNy4xXCQoQ29uZmlndXJhdGlvbk5hbWUpIgpAQCAtOTE5LDcgKzkxOSw3IEBACiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRztfQ09OU09MRTtERUJVR0JVSUxEIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJCUNvbXBpbGVBcz0iMCIvPgpAQCAtOTI5LDcgKzkyOSw3IEBACiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvTUFDSElORTpJMzg2IC9GSVhFRDpOTyIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmxkLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybGQuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKWQuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM3LjFcJChDb25maWd1cmF0aW9uTmFtZSkiCkBAIC05NzYsNyArOTc2LDcgQEAKIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHO19DT05TT0xFO0RFQlVHQlVJTEQ7Q1VSTF9TVEFUSUNMSUIiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CkBAIC05ODYsNyArOTg2LDcgQEAKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9NQUNISU5FOkkzODYgL0ZJWEVEOk5PIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybGQubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsZC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpZC5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzcuMVwkKENvbmZpZ3VyYXRpb25OYW1lKSIKQEAgLTEwMzQsNyArMTAzNCw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0iVFJVRSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlDb21waWxlQXM9IjAiLz4KIAkJCTxUb29sCkBAIC0xMDQzLDcgKzEwNDMsNyBAQAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL01BQ0hJTkU6STM4NiAvRklYRUQ6Tk8iCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNy4xXCQoQ29uZmlndXJhdGlvbk5hbWUpIgpAQCAtMTA4OCw3ICsxMDg4LDcgQEAKIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHO19DT05TT0xFO0RFQlVHQlVJTEQiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CkBAIC0xMDk4LDcgKzEwOTgsNyBAQAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL01BQ0hJTkU6STM4NiAvRklYRUQ6Tk8iCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsZC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmxkLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlkLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNy4xXCQoQ29uZmlndXJhdGlvbk5hbWUpIgpAQCAtMTE0NSw3ICsxMTQ1LDcgQEAKIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHO19DT05TT0xFO0RFQlVHQlVJTEQiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CkBAIC0xMTU1LDcgKzExNTUsNyBAQAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL01BQ0hJTkU6STM4NiAvRklYRUQ6Tk8iCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsZC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmxkLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlkLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNy4xXCQoQ29uZmlndXJhdGlvbk5hbWUpIgpAQCAtMTIwMyw3ICsxMjAzLDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUNvbXBpbGVBcz0iMCIvPgogCQkJPFRvb2wKQEAgLTEyMTIsNyArMTIxMiw3IEBACiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvTUFDSElORTpJMzg2IC9GSVhFRDpOTyIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmwubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM3LjFcJChDb25maWd1cmF0aW9uTmFtZSkiCkBAIC0xMjU3LDcgKzEyNTcsNyBAQAogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUc7X0NPTlNPTEU7REVCVUdCVUlMRDtDVVJMX1NUQVRJQ0xJQiIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCQlDb21waWxlQXM9IjAiLz4KQEAgLTEyNjcsNyArMTI2Nyw3IEBACiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvTUFDSElORTpJMzg2IC9GSVhFRDpOTyIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJub3JtYWxpei5saWIgd2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsZC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmxkLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlkLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNy4xXCQoQ29uZmlndXJhdGlvbk5hbWUpIgpAQCAtMTMxNSw3ICsxMzE1LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUNvbXBpbGVBcz0iMCIvPgogCQkJPFRvb2wKQEAgLTEzMjQsNyArMTMyNCw3IEBACiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvTUFDSElORTpJMzg2IC9GSVhFRDpOTyIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJub3JtYWxpei5saWIgd2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDNy4xXCQoQ29uZmlndXJhdGlvbk5hbWUpIgpkaWZmIC0tZ2l0IGEvcHJvamVjdHMvV2luZG93cy9WQzcvY3VybC1hbGwuc2xuIGIvcHJvamVjdHMvV2luZG93cy9WQzcvY3VybC1hbGwuc2xuCmluZGV4IGZiN2I4OWEuLmIwNzQ2ZDggMTAwNjQ0Ci0tLSBhL3Byb2plY3RzL1dpbmRvd3MvVkM3L2N1cmwtYWxsLnNsbgorKysgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDNy9jdXJsLWFsbC5zbG4KQEAgLTEsNSArMSw1IEBACiBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyBTb2x1dGlvbiBGaWxlLCBGb3JtYXQgVmVyc2lvbiA3LjAwCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImN1cmxzcmMiLCAic3JjXGN1cmxzcmMudmNwcm9qIiwgIns1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9IgorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJjdXJsIiwgInNyY1xjdXJsLnZjcHJvaiIsICJ7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfSIKIEVuZFByb2plY3QKIFByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAibGliY3VybCIsICJsaWJcbGliY3VybC52Y3Byb2oiLCAie0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0iCiBFbmRQcm9qZWN0CmRpZmYgLS1naXQgYS9wcm9qZWN0cy9XaW5kb3dzL1ZDNy9saWIvLmdpdGlnbm9yZSBiL3Byb2plY3RzL1dpbmRvd3MvVkM3L2xpYi8uZ2l0aWdub3JlCmluZGV4IGQ4ODRhY2MuLmJjNTgwNmEgMTAwNjQ0Ci0tLSBhL3Byb2plY3RzL1dpbmRvd3MvVkM3L2xpYi8uZ2l0aWdub3JlCisrKyBiL3Byb2plY3RzL1dpbmRvd3MvVkM3L2xpYi8uZ2l0aWdub3JlCkBAIC0xLDIgKzEsMiBAQAotLyoudmNwcm9qCiAvKi5uY2IKKy8qLnZjcHJvagpkaWZmIC0tZ2l0IGEvcHJvamVjdHMvV2luZG93cy9WQzcvbGliL2xpYmN1cmwudG1wbCBiL3Byb2plY3RzL1dpbmRvd3MvVkM3L2xpYi9saWJjdXJsLnRtcGwKaW5kZXggYWEzMWY4MC4uNmE1N2QxMiAxMDA2NDQKLS0tIGEvcHJvamVjdHMvV2luZG93cy9WQzcvbGliL2xpYmN1cmwudG1wbAorKysgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDNy9saWIvbGliY3VybC50bXBsCkBAIC0yNyw3ICsyNyw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0iVFJVRSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlDb21waWxlQXM9IjAiLz4KIAkJCTxUb29sCkBAIC03OCw3ICs3OCw3IEBACiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRztCVUlMRElOR19MSUJDVVJMO0RFQlVHQlVJTEQ7VVNFX09QRU5TU0wiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CkBAIC0xMzEsNyArMTMxLDcgQEAKIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHO0JVSUxESU5HX0xJQkNVUkw7REVCVUdCVUlMRCIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCQlDb21waWxlQXM9IjAiLz4KQEAgLTE4NCw3ICsxODQsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CiAJCQk8VG9vbApAQCAtMjI0LDcgKzIyNCw3IEBACiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRztCVUlMRElOR19MSUJDVVJMO0RFQlVHQlVJTEQ7Q1VSTF9TVEFUSUNMSUI7VVNFX09QRU5TU0w7VVNFX0xJQlNTSDI7SEFWRV9MSUJTU0gyX0giCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CkBAIC0yNjYsNyArMjY2LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUNvbXBpbGVBcz0iMCIvPgogCQkJPFRvb2wKQEAgLTMxNiw3ICszMTYsNyBAQAogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUc7QlVJTERJTkdfTElCQ1VSTDtERUJVR0JVSUxEO0NVUkxfU1RBVElDTElCO1VTRV9PUEVOU1NMO1VTRV9MSUJTU0gyO0hBVkVfTElCU1NIMl9IIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJCUNvbXBpbGVBcz0iMCIvPgpAQCAtMzU3LDcgKzM1Nyw3IEBACiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRztCVUlMRElOR19MSUJDVVJMO0RFQlVHQlVJTEQ7Q1VSTF9TVEFUSUNMSUI7VVNFX1dJTkRPV1NfU1NQSTtVU0VfU0NIQU5ORUwiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CkBAIC0zOTgsNyArMzk4LDcgQEAKIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHO0JVSUxESU5HX0xJQkNVUkw7REVCVUdCVUlMRDtDVVJMX1NUQVRJQ0xJQjtVU0VfT1BFTlNTTCIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCQlDb21waWxlQXM9IjAiLz4KQEAgLTQ0MCw3ICs0NDAsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CiAJCQk8VG9vbApAQCAtNDkwLDcgKzQ5MCw3IEBACiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRztCVUlMRElOR19MSUJDVVJMO0RFQlVHQlVJTEQ7VVNFX1dJTkRPV1NfU1NQSTtVU0VfU0NIQU5ORUwiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CkBAIC01NDMsNyArNTQzLDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUNvbXBpbGVBcz0iMCIvPgogCQkJPFRvb2wKQEAgLTU4NCw3ICs1ODQsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CiAJCQk8VG9vbApAQCAtNjM2LDcgKzYzNiw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0iVFJVRSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlDb21waWxlQXM9IjAiLz4KIAkJCTxUb29sCkBAIC02NzcsNyArNjc3LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUNvbXBpbGVBcz0iMCIvPgogCQkJPFRvb2wKQEAgLTcxOCw3ICs3MTgsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CiAJCQk8VG9vbApAQCAtNzU5LDcgKzc1OSw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0iVFJVRSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlDb21waWxlQXM9IjAiLz4KIAkJCTxUb29sCkBAIC03OTksNyArNzk5LDcgQEAKIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHO0JVSUxESU5HX0xJQkNVUkw7REVCVUdCVUlMRDtDVVJMX1NUQVRJQ0xJQiIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCQlDb21waWxlQXM9IjAiLz4KQEAgLTg0MCw3ICs4NDAsNyBAQAogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUc7QlVJTERJTkdfTElCQ1VSTDtERUJVR0JVSUxEO1VTRV9PUEVOU1NMO1VTRV9MSUJTU0gyO0hBVkVfTElCU1NIMl9IIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJCUNvbXBpbGVBcz0iMCIvPgpAQCAtODkzLDcgKzg5Myw3IEBACiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRztCVUlMRElOR19MSUJDVVJMO0RFQlVHQlVJTEQ7Q1VSTF9TVEFUSUNMSUI7VVNFX09QRU5TU0wiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CkBAIC05MzQsNyArOTM0LDcgQEAKIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHO0JVSUxESU5HX0xJQkNVUkw7REVCVUdCVUlMRDtVU0VfV0lORE9XU19TU1BJO1VTRV9TQ0hBTk5FTDtVU0VfV0lOMzJfSUROO1dBTlRfSUROX1BST1RPVFlQRVMiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CkBAIC05ODcsNyArOTg3LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUNvbXBpbGVBcz0iMCIvPgogCQkJPFRvb2wKQEAgLTEwMzcsNyArMTAzNyw3IEBACiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRztCVUlMRElOR19MSUJDVVJMO0RFQlVHQlVJTEQ7Q1VSTF9TVEFUSUNMSUI7VVNFX1dJTkRPV1NfU1NQSTtVU0VfU0NIQU5ORUw7VVNFX1dJTjMyX0lETjtXQU5UX0lETl9QUk9UT1RZUEVTIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJCUNvbXBpbGVBcz0iMCIvPgpAQCAtMTA3OSw3ICsxMDc5LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUNvbXBpbGVBcz0iMCIvPgogCQkJPFRvb2wKQEAgLTExMjIsNiArMTEyMiwyMCBAQAogQ1VSTF9MSUJfUkNfRklMRVMKIAkJPC9GaWx0ZXI+CiAJCTxGaWx0ZXIKKwkJCU5hbWU9InZhdXRoIgorCQkJRmlsdGVyPSIiPgorCQkJPEZpbHRlcgorCQkJCU5hbWU9IlNvdXJjZSBGaWxlcyIKKwkJCQlGaWx0ZXI9IiI+CitDVVJMX0xJQl9WQVVUSF9DX0ZJTEVTCisJCQk8L0ZpbHRlcj4KKwkJCTxGaWx0ZXIKKwkJCQlOYW1lPSJIZWFkZXIgRmlsZXMiCisJCQkJRmlsdGVyPSIiPgorQ1VSTF9MSUJfVkFVVEhfSF9GSUxFUworCQkJPC9GaWx0ZXI+CisJCTwvRmlsdGVyPgorCQk8RmlsdGVyCiAJCQlOYW1lPSJ2dGxzIgogCQkJRmlsdGVyPSIiPgogCQkJPEZpbHRlcgpkaWZmIC0tZ2l0IGEvcHJvamVjdHMvV2luZG93cy9WQzcvc3JjLy5naXRpZ25vcmUgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDNy9zcmMvLmdpdGlnbm9yZQppbmRleCBkODg0YWNjLi5iYzU4MDZhIDEwMDY0NAotLS0gYS9wcm9qZWN0cy9XaW5kb3dzL1ZDNy9zcmMvLmdpdGlnbm9yZQorKysgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDNy9zcmMvLmdpdGlnbm9yZQpAQCAtMSwyICsxLDIgQEAKLS8qLnZjcHJvagogLyoubmNiCisvKi52Y3Byb2oKZGlmZiAtLWdpdCBhL3Byb2plY3RzL1dpbmRvd3MvVkM3L3NyYy9jdXJsc3JjLnNsbiBiL3Byb2plY3RzL1dpbmRvd3MvVkM3L3NyYy9jdXJsLnNsbgpzaW1pbGFyaXR5IGluZGV4IDk4JQpyZW5hbWUgZnJvbSBwcm9qZWN0cy9XaW5kb3dzL1ZDNy9zcmMvY3VybHNyYy5zbG4KcmVuYW1lIHRvIHByb2plY3RzL1dpbmRvd3MvVkM3L3NyYy9jdXJsLnNsbgppbmRleCA2NTFjOWIyLi42OTU1NDYxIDEwMDY0NAotLS0gYS9wcm9qZWN0cy9XaW5kb3dzL1ZDNy9zcmMvY3VybHNyYy5zbG4KKysrIGIvcHJvamVjdHMvV2luZG93cy9WQzcvc3JjL2N1cmwuc2xuCkBAIC0xLDUgKzEsNSBAQAogTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gU29sdXRpb24gRmlsZSwgRm9ybWF0IFZlcnNpb24gNy4wMAotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJjdXJsc3JjIiwgImN1cmxzcmMudmNwcm9qIiwgIns1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9IgorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJjdXJsIiwgImN1cmwudmNwcm9qIiwgIns1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9IgogRW5kUHJvamVjdAogR2xvYmFsCiAJR2xvYmFsU2VjdGlvbihTb2x1dGlvbkNvbmZpZ3VyYXRpb24pID0gcHJlU29sdXRpb24KZGlmZiAtLWdpdCBhL3Byb2plY3RzL1dpbmRvd3MvVkM3L3NyYy9jdXJsc3JjLnRtcGwgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDNy9zcmMvY3VybC50bXBsCnNpbWlsYXJpdHkgaW5kZXggOTUlCnJlbmFtZSBmcm9tIHByb2plY3RzL1dpbmRvd3MvVkM3L3NyYy9jdXJsc3JjLnRtcGwKcmVuYW1lIHRvIHByb2plY3RzL1dpbmRvd3MvVkM3L3NyYy9jdXJsLnRtcGwKaW5kZXggY2IxNTJiNS4uOWJlODVkYiAxMDA2NDQKLS0tIGEvcHJvamVjdHMvV2luZG93cy9WQzcvc3JjL2N1cmxzcmMudG1wbAorKysgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDNy9zcmMvY3VybC50bXBsCkBAIC0yLDcgKzIsNyBAQAogPFZpc3VhbFN0dWRpb1Byb2plY3QKIAlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyIKIAlWZXJzaW9uPSI3LjAwIgotCU5hbWU9ImN1cmxzcmMiCisJTmFtZT0iY3VybCIKIAlTY2NQcm9qZWN0TmFtZT0iIgogCVNjY0xvY2FsUGF0aD0iIj4KIAk8UGxhdGZvcm1zPgpAQCAtMjYsNyArMjYsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CiAJCQk8VG9vbApAQCAtMzUsNyArMzUsNyBAQAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL01BQ0hJTkU6STM4NiAvRklYRUQ6Tk8iCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iY3J5cHQzMi5saWIgd2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsLmxpYiBsaWJlYXkzMi5saWIgc3NsZWF5MzIubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM3XCQoQ29uZmlndXJhdGlvbk5hbWUpLC4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luMzJcVkM3XExJQiBSZWxlYXNlIgpAQCAtNzUsNyArNzUsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CiAJCQk8VG9vbApAQCAtODQsNyArODQsNyBAQAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL01BQ0hJTkU6STM4NiAvRklYRUQ6Tk8iCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDN1wkKENvbmZpZ3VyYXRpb25OYW1lKSIKQEAgLTEyNCw3ICsxMjQsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CiAJCQk8VG9vbApAQCAtMTMzLDcgKzEzMyw3IEBACiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvTUFDSElORTpJMzg2IC9GSVhFRDpOTyIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmwubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM3XCQoQ29uZmlndXJhdGlvbk5hbWUpIgpAQCAtMTcyLDcgKzE3Miw3IEBACiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRztfQ09OU09MRTtERUJVR0JVSUxEO0NVUkxfU1RBVElDTElCIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJCUNvbXBpbGVBcz0iMCIvPgpAQCAtMTgyLDcgKzE4Miw3IEBACiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvTUFDSElORTpJMzg2IC9GSVhFRDpOTyIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmxkLmxpYiBsaWJlYXkzMi5saWIgc3NsZWF5MzIubGliIGxpYnNzaDJkLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybGQuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKWQuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM3XCQoQ29uZmlndXJhdGlvbk5hbWUpLC4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luMzJcVkM3XERMTCBEZWJ1ZywuLlwuLlwuLlwuLlwuLlxsaWJzc2gyXGJ1aWxkXFdpbjMyXFZDN1xETEwgRGVidWciCkBAIC0yMjMsNyArMjIzLDcgQEAKIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHO19DT05TT0xFO0RFQlVHQlVJTEQ7Q1VSTF9TVEFUSUNMSUIiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CkBAIC0yMzMsNyArMjMzLDcgQEAKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9NQUNISU5FOkkzODYgL0ZJWEVEOk5PIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImNyeXB0MzIubGliIHdsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybGQubGliIGxpYmVheTMyLmxpYiBzc2xlYXkzMi5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmxkLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlkLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDN1wkKENvbmZpZ3VyYXRpb25OYW1lKSwuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjMyXFZDN1xMSUIgRGVidWciCkBAIC0yNzQsNyArMjc0LDcgQEAKIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHO19DT05TT0xFO0RFQlVHQlVJTEQiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CkBAIC0yODQsNyArMjg0LDcgQEAKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9NQUNISU5FOkkzODYgL0ZJWEVEOk5PIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybGQubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsZC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpZC5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzdcJChDb25maWd1cmF0aW9uTmFtZSkiCkBAIC0zMjUsNyArMzI1LDcgQEAKIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHO19DT05TT0xFO0RFQlVHQlVJTEQ7Q1VSTF9TVEFUSUNMSUIiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CkBAIC0zMzUsNyArMzM1LDcgQEAKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9NQUNISU5FOkkzODYgL0ZJWEVEOk5PIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImNyeXB0MzIubGliIHdsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybGQubGliIGxpYmVheTMyLmxpYiBzc2xlYXkzMi5saWIgbGlic3NoMmQubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsZC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpZC5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzdcJChDb25maWd1cmF0aW9uTmFtZSksLi5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW4zMlxWQzdcTElCIERlYnVnLC4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcYnVpbGRcV2luMzJcVkM3XExJQiBEZWJ1ZyIKQEAgLTM3Nyw3ICszNzcsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CiAJCQk8VG9vbApAQCAtMzg2LDcgKzM4Niw3IEBACiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvTUFDSElORTpJMzg2IC9GSVhFRDpOTyIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmwubGliIGxpYmVheTMyLmxpYiBzc2xlYXkzMi5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmwuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzdcJChDb25maWd1cmF0aW9uTmFtZSksLi5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW4zMlxWQzdcRExMIFJlbGVhc2UiCkBAIC00MjYsNyArNDI2LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUNvbXBpbGVBcz0iMCIvPgogCQkJPFRvb2wKQEAgLTQzNSw3ICs0MzUsNyBAQAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL01BQ0hJTkU6STM4NiAvRklYRUQ6Tk8iCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsLmxpYiBsaWJlYXkzMi5saWIgc3NsZWF5MzIubGliIGxpYnNzaDIubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM3XCQoQ29uZmlndXJhdGlvbk5hbWUpLC4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luMzJcVkM3XERMTCBSZWxlYXNlLC4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcYnVpbGRcV2luMzJcVkM3XERMTCBSZWxlYXNlIgpAQCAtNDc1LDcgKzQ3NSw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0iVFJVRSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlDb21waWxlQXM9IjAiLz4KIAkJCTxUb29sCkBAIC00ODQsNyArNDg0LDcgQEAKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9NQUNISU5FOkkzODYgL0ZJWEVEOk5PIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmwuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzdcJChDb25maWd1cmF0aW9uTmFtZSkiCkBAIC01MjQsNyArNTI0LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUNvbXBpbGVBcz0iMCIvPgogCQkJPFRvb2wKQEAgLTUzMyw3ICs1MzMsNyBAQAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL01BQ0hJTkU6STM4NiAvRklYRUQ6Tk8iCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iY3J5cHQzMi5saWIgd2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsLmxpYiBsaWJlYXkzMi5saWIgc3NsZWF5MzIubGliIGxpYnNzaDIubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM3XCQoQ29uZmlndXJhdGlvbk5hbWUpLC4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luMzJcVkM3XExJQiBSZWxlYXNlLC4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcYnVpbGRcV2luMzJcVkM3XExJQiBSZWxlYXNlIgpAQCAtNTcyLDcgKzU3Miw3IEBACiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRztfQ09OU09MRTtERUJVR0JVSUxEO0NVUkxfU1RBVElDTElCIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJCUNvbXBpbGVBcz0iMCIvPgpAQCAtNTgyLDcgKzU4Miw3IEBACiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvTUFDSElORTpJMzg2IC9GSVhFRDpOTyIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmxkLmxpYiBsaWJlYXkzMi5saWIgc3NsZWF5MzIubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsZC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpZC5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzdcJChDb25maWd1cmF0aW9uTmFtZSksLi5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW4zMlxWQzdcRExMIERlYnVnIgpAQCAtNjIzLDcgKzYyMyw3IEBACiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRztfQ09OU09MRTtERUJVR0JVSUxEO0NVUkxfU1RBVElDTElCIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJCUNvbXBpbGVBcz0iMCIvPgpAQCAtNjMzLDcgKzYzMyw3IEBACiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvTUFDSElORTpJMzg2IC9GSVhFRDpOTyIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmxkLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybGQuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKWQuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM3XCQoQ29uZmlndXJhdGlvbk5hbWUpIgpAQCAtNjc0LDcgKzY3NCw3IEBACiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRztfQ09OU09MRTtERUJVR0JVSUxEIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJCUNvbXBpbGVBcz0iMCIvPgpAQCAtNjg0LDcgKzY4NCw3IEBACiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvTUFDSElORTpJMzg2IC9GSVhFRDpOTyIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmxkLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybGQuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKWQuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM3XCQoQ29uZmlndXJhdGlvbk5hbWUpIgpAQCAtNzI2LDcgKzcyNiw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0iVFJVRSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlDb21waWxlQXM9IjAiLz4KIAkJCTxUb29sCkBAIC03MzUsNyArNzM1LDcgQEAKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9NQUNISU5FOkkzODYgL0ZJWEVEOk5PIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndsZGFwMzIubGliIHdzMl8zMi5saWIgbGliY3VybC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmwuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzdcJChDb25maWd1cmF0aW9uTmFtZSkiCkBAIC03NzUsNyArNzc1LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUNvbXBpbGVBcz0iMCIvPgogCQkJPFRvb2wKQEAgLTc4NCw3ICs3ODQsNyBAQAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL01BQ0hJTkU6STM4NiAvRklYRUQ6Tk8iCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDN1wkKENvbmZpZ3VyYXRpb25OYW1lKSIKQEAgLTgyMyw3ICs4MjMsNyBAQAogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUc7X0NPTlNPTEU7REVCVUdCVUlMRCIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCQlDb21waWxlQXM9IjAiLz4KQEAgLTgzMyw3ICs4MzMsNyBAQAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL01BQ0hJTkU6STM4NiAvRklYRUQ6Tk8iCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsZC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmxkLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlkLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDN1wkKENvbmZpZ3VyYXRpb25OYW1lKSIKQEAgLTg3NCw3ICs4NzQsNyBAQAogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUc7X0NPTlNPTEU7REVCVUdCVUlMRDtDVVJMX1NUQVRJQ0xJQiIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCQlDb21waWxlQXM9IjAiLz4KQEAgLTg4NCw3ICs4ODQsNyBAQAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL01BQ0hJTkU6STM4NiAvRklYRUQ6Tk8iCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsZC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmxkLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlkLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDN1wkKENvbmZpZ3VyYXRpb25OYW1lKSIKQEAgLTkyNiw3ICs5MjYsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CiAJCQk8VG9vbApAQCAtOTM1LDcgKzkzNSw3IEBACiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvTUFDSElORTpJMzg2IC9GSVhFRDpOTyIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmwubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM3XCQoQ29uZmlndXJhdGlvbk5hbWUpIgpAQCAtOTc0LDcgKzk3NCw3IEBACiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRztfQ09OU09MRTtERUJVR0JVSUxEIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJCUNvbXBpbGVBcz0iMCIvPgpAQCAtOTg0LDcgKzk4NCw3IEBACiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvTUFDSElORTpJMzg2IC9GSVhFRDpOTyIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmxkLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybGQuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKWQuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM3XCQoQ29uZmlndXJhdGlvbk5hbWUpIgpAQCAtMTAyNSw3ICsxMDI1LDcgQEAKIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHO19DT05TT0xFO0RFQlVHQlVJTEQiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkJQ29tcGlsZUFzPSIwIi8+CkBAIC0xMDM1LDcgKzEwMzUsNyBAQAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL01BQ0hJTkU6STM4NiAvRklYRUQ6Tk8iCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsZC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmxkLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlkLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDN1wkKENvbmZpZ3VyYXRpb25OYW1lKSIKQEAgLTEwNzcsNyArMTA3Nyw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0iVFJVRSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlDb21waWxlQXM9IjAiLz4KIAkJCTxUb29sCkBAIC0xMDg2LDcgKzEwODYsNyBAQAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL01BQ0hJTkU6STM4NiAvRklYRUQ6Tk8iCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDN1wkKENvbmZpZ3VyYXRpb25OYW1lKSIKQEAgLTExMjUsNyArMTEyNSw3IEBACiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRztfQ09OU09MRTtERUJVR0JVSUxEO0NVUkxfU1RBVElDTElCIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJCUNvbXBpbGVBcz0iMCIvPgpAQCAtMTEzNSw3ICsxMTM1LDcgQEAKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9NQUNISU5FOkkzODYgL0ZJWEVEOk5PIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Im5vcm1hbGl6LmxpYiB3bGRhcDMyLmxpYiB3czJfMzIubGliIGxpYmN1cmxkLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybGQuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKWQuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM3XCQoQ29uZmlndXJhdGlvbk5hbWUpIgpAQCAtMTE3Nyw3ICsxMTc3LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUNvbXBpbGVBcz0iMCIvPgogCQkJPFRvb2wKQEAgLTExODYsNyArMTE4Niw3IEBACiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvTUFDSElORTpJMzg2IC9GSVhFRDpOTyIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJub3JtYWxpei5saWIgd2xkYXAzMi5saWIgd3MyXzMyLmxpYiBsaWJjdXJsLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDN1wkKENvbmZpZ3VyYXRpb25OYW1lKSIKZGlmZiAtLWdpdCBhL3Byb2plY3RzL1dpbmRvd3MvVkM4L2N1cmwtYWxsLnNsbiBiL3Byb2plY3RzL1dpbmRvd3MvVkM4L2N1cmwtYWxsLnNsbgppbmRleCAwZGZiZDFhLi45ZTJjMjJkIDEwMDY0NAotLS0gYS9wcm9qZWN0cy9XaW5kb3dzL1ZDOC9jdXJsLWFsbC5zbG4KKysrIGIvcHJvamVjdHMvV2luZG93cy9WQzgvY3VybC1hbGwuc2xuCkBAIC0xLDYgKzEsNiBAQAogTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gU29sdXRpb24gRmlsZSwgRm9ybWF0IFZlcnNpb24gOS4wMAogIyBWaXN1YWwgU3R1ZGlvIDIwMDUKLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiY3VybHNyYyIsICJzcmNcY3VybHNyYy52Y3Byb2oiLCAiezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0iCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImN1cmwiLCAic3JjXGN1cmwudmNwcm9qIiwgIns1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9IgogCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0gPSB7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfQogCUVuZFByb2plY3RTZWN0aW9uCmRpZmYgLS1naXQgYS9wcm9qZWN0cy9XaW5kb3dzL1ZDOC9saWIvLmdpdGlnbm9yZSBiL3Byb2plY3RzL1dpbmRvd3MvVkM4L2xpYi8uZ2l0aWdub3JlCmluZGV4IDZjZDYyY2EuLjQzMWNmNDcgMTAwNjQ0Ci0tLSBhL3Byb2plY3RzL1dpbmRvd3MvVkM4L2xpYi8uZ2l0aWdub3JlCisrKyBiL3Byb2plY3RzL1dpbmRvd3MvVkM4L2xpYi8uZ2l0aWdub3JlCkBAIC0xLDQgKzEsNCBAQAotLyoudmNwcm9qCi0vKi51c2VyCiAvKi5uY2IKIC8qLnN1bworLyoudXNlcgorLyoudmNwcm9qCmRpZmYgLS1naXQgYS9wcm9qZWN0cy9XaW5kb3dzL1ZDOC9saWIvbGliY3VybC50bXBsIGIvcHJvamVjdHMvV2luZG93cy9WQzgvbGliL2xpYmN1cmwudG1wbAppbmRleCBiNTdjNDlmLi42NWQ3NTBkIDEwMDY0NAotLS0gYS9wcm9qZWN0cy9XaW5kb3dzL1ZDOC9saWIvbGliY3VybC50bXBsCisrKyBiL3Byb2plY3RzL1dpbmRvd3MvVkM4L2xpYi9saWJjdXJsLnRtcGwKQEAgLTU0LDcgKzU0LDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC0xNDIsNyArMTQyLDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC0yMzAsNyArMjMwLDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTMxNiw3ICszMTYsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtMzk1LDcgKzM5NSw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtNDYyLDcgKzQ2Miw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtNTI5LDcgKzUyOSw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC01OTYsNyArNTk2LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTY2Niw3ICs2NjYsNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTc1NCw3ICs3NTQsNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTg0Miw3ICs4NDIsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtOTI4LDcgKzkyOCw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0xMDEyLDcgKzEwMTIsNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTExMDAsNyArMTEwMCw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtMTE4OCw3ICsxMTg4LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTEyNzQsNyArMTI3NCw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0xMzU4LDcgKzEzNTgsNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTE0NDYsNyArMTQ0Niw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtMTUzNCw3ICsxNTM0LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTE2MjAsNyArMTYyMCw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0xNjk5LDcgKzE2OTksNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTE3NjYsNyArMTc2Niw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtMTgzMiw3ICsxODMyLDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC0xODk5LDcgKzE4OTksNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTE5NjUsNyArMTk2NSw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtMjAzMiw3ICsyMDMyLDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC0yMDk4LDcgKzIwOTgsNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTIxNjUsNyArMjE2NSw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtMjIzMSw3ICsyMjMxLDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC0yMjk4LDcgKzIyOTgsNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTIzNjUsNyArMjM2NSw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0yNDMyLDcgKzI0MzIsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtMjQ5OCw3ICsyNDk4LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTI1NjUsNyArMjU2NSw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0yNjMxLDcgKzI2MzEsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtMjY5OCw3ICsyNjk4LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTI3NjQsNyArMjc2NCw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0yODMxLDcgKzI4MzEsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtMjg5Nyw3ICsyODk3LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTI5NjQsNyArMjk2NCw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0zMDM0LDcgKzMwMzQsNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTMxMjIsNyArMzEyMiw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtMzIxMCw3ICszMjEwLDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTMyOTYsNyArMzI5Niw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0zMzc1LDcgKzMzNzUsNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTM0NDIsNyArMzQ0Miw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtMzUwOSw3ICszNTA5LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTM1NzYsNyArMzU3Niw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0zNjI5LDYgKzM2MjksMjAgQEAKIENVUkxfTElCX1JDX0ZJTEVTCiAJCTwvRmlsdGVyPgogCQk8RmlsdGVyCisJCQlOYW1lPSJ2YXV0aCIKKwkJCT4KKwkJCTxGaWx0ZXIKKwkJCQlOYW1lPSJTb3VyY2UgRmlsZXMiCisJCQkJPgorQ1VSTF9MSUJfVkFVVEhfQ19GSUxFUworCQkJPC9GaWx0ZXI+CisJCQk8RmlsdGVyCisJCQkJTmFtZT0iSGVhZGVyIEZpbGVzIgorCQkJCT4KK0NVUkxfTElCX1ZBVVRIX0hfRklMRVMKKwkJCTwvRmlsdGVyPgorCQk8L0ZpbHRlcj4KKwkJPEZpbHRlcgogCQkJTmFtZT0idnRscyIKIAkJCT4KIAkJCTxGaWx0ZXIKZGlmZiAtLWdpdCBhL3Byb2plY3RzL1dpbmRvd3MvVkM4L3NyYy8uZ2l0aWdub3JlIGIvcHJvamVjdHMvV2luZG93cy9WQzgvc3JjLy5naXRpZ25vcmUKaW5kZXggNmNkNjJjYS4uNDMxY2Y0NyAxMDA2NDQKLS0tIGEvcHJvamVjdHMvV2luZG93cy9WQzgvc3JjLy5naXRpZ25vcmUKKysrIGIvcHJvamVjdHMvV2luZG93cy9WQzgvc3JjLy5naXRpZ25vcmUKQEAgLTEsNCArMSw0IEBACi0vKi52Y3Byb2oKLS8qLnVzZXIKIC8qLm5jYgogLyouc3VvCisvKi51c2VyCisvKi52Y3Byb2oKZGlmZiAtLWdpdCBhL3Byb2plY3RzL1dpbmRvd3MvVkMxMC9zcmMvY3VybHNyYy5zbG4gYi9wcm9qZWN0cy9XaW5kb3dzL1ZDOC9zcmMvY3VybC5zbG4Kc2ltaWxhcml0eSBpbmRleCA5OCUKcmVuYW1lIGZyb20gcHJvamVjdHMvV2luZG93cy9WQzEwL3NyYy9jdXJsc3JjLnNsbgpyZW5hbWUgdG8gcHJvamVjdHMvV2luZG93cy9WQzgvc3JjL2N1cmwuc2xuCmluZGV4IDEzZmMxZDMuLjBjNDNjYmUgMTAwNjQ0Ci0tLSBhL3Byb2plY3RzL1dpbmRvd3MvVkMxMC9zcmMvY3VybHNyYy5zbG4KKysrIGIvcHJvamVjdHMvV2luZG93cy9WQzgvc3JjL2N1cmwuc2xuCkBAIC0xLDYgKzEsNiBAQAotTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gU29sdXRpb24gRmlsZSwgRm9ybWF0IFZlcnNpb24gMTEuMDAKLSMgVmlzdWFsIFN0dWRpbyAyMDEwCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImN1cmxzcmMiLCAiY3VybHNyYy52Y3hwcm9qIiwgIns1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9IgorTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gU29sdXRpb24gRmlsZSwgRm9ybWF0IFZlcnNpb24gOS4wMAorIyBWaXN1YWwgU3R1ZGlvIDIwMDUKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiY3VybCIsICJjdXJsLnZjcHJvaiIsICJ7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfSIKIEVuZFByb2plY3QKIEdsb2JhbAogCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Db25maWd1cmF0aW9uUGxhdGZvcm1zKSA9IHByZVNvbHV0aW9uCmRpZmYgLS1naXQgYS9wcm9qZWN0cy9XaW5kb3dzL1ZDOC9zcmMvY3VybHNyYy50bXBsIGIvcHJvamVjdHMvV2luZG93cy9WQzgvc3JjL2N1cmwudG1wbApzaW1pbGFyaXR5IGluZGV4IDk2JQpyZW5hbWUgZnJvbSBwcm9qZWN0cy9XaW5kb3dzL1ZDOC9zcmMvY3VybHNyYy50bXBsCnJlbmFtZSB0byBwcm9qZWN0cy9XaW5kb3dzL1ZDOC9zcmMvY3VybC50bXBsCmluZGV4IGFkNzUyODEuLjI3ODkyZGIgMTAwNjQ0Ci0tLSBhL3Byb2plY3RzL1dpbmRvd3MvVkM4L3NyYy9jdXJsc3JjLnRtcGwKKysrIGIvcHJvamVjdHMvV2luZG93cy9WQzgvc3JjL2N1cmwudG1wbApAQCAtMiw5ICsyLDkgQEAKIDxWaXN1YWxTdHVkaW9Qcm9qZWN0CiAJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiCiAJVmVyc2lvbj0iOC4wMCIKLQlOYW1lPSJjdXJsc3JjIgorCU5hbWU9ImN1cmwiCiAJUHJvamVjdEdVSUQ9Ins1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9IgotCVJvb3ROYW1lc3BhY2U9ImN1cmxzcmMiCisJUm9vdE5hbWVzcGFjZT0iY3VybCIKIAk+CiAJPFBsYXRmb3Jtcz4KIAkJPFBsYXRmb3JtCkBAIC01Miw3ICs1Miw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC02OSw3ICs2OSw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmwubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzhcJChDb25maWd1cmF0aW9uTmFtZSkiCiAJCQkJU3ViU3lzdGVtPSIxIgpAQCAtMTM2LDcgKzEzNiw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0xNTMsNyArMTUzLDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgd2xkYXAzMi5saWIgbGliY3VybC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmwuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDOFwkKENvbmZpZ3VyYXRpb25OYW1lKSIKIAkJCQlTdWJTeXN0ZW09IjEiCkBAIC0yMTksNyArMjE5LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTIzNiw3ICsyMzYsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM4XCQoQ29uZmlndXJhdGlvbk5hbWUpIgogCQkJCVN1YlN5c3RlbT0iMSIKQEAgLTMwMyw3ICszMDMsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtMzIwLDcgKzMyMCw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmwubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzhcJChDb25maWd1cmF0aW9uTmFtZSkiCiAJCQkJU3ViU3lzdGVtPSIxIgpAQCAtMzg1LDcgKzM4NSw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtNDAzLDcgKzQwMyw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmxkLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybGQuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKWQuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzhcJChDb25maWd1cmF0aW9uTmFtZSkiCiAJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIgpAQCAtNDcxLDcgKzQ3MSw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtNDg5LDcgKzQ4OSw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmxkLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybGQuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKWQuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzhcJChDb25maWd1cmF0aW9uTmFtZSkiCiAJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIgpAQCAtNTU2LDcgKzU1Niw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtNTc0LDcgKzU3NCw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmxkLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybGQuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKWQuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzhcJChDb25maWd1cmF0aW9uTmFtZSkiCiAJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIgpAQCAtNjQyLDcgKzY0Miw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtNjYwLDcgKzY2MCw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmxkLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybGQuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKWQuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzhcJChDb25maWd1cmF0aW9uTmFtZSkiCiAJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIgpAQCAtNzI3LDcgKzcyNyw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtNzQ1LDcgKzc0NSw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmxkLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybGQuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKWQuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzhcJChDb25maWd1cmF0aW9uTmFtZSkiCiAJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIgpAQCAtODEzLDcgKzgxMyw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtODMxLDcgKzgzMSw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmxkLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybGQuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKWQuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzhcJChDb25maWd1cmF0aW9uTmFtZSkiCiAJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIgpAQCAtODk4LDcgKzg5OCw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtOTE2LDcgKzkxNiw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmxkLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybGQuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKWQuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzhcJChDb25maWd1cmF0aW9uTmFtZSkiCiAJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIgpAQCAtOTg0LDcgKzk4NCw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtMTAwMiw3ICsxMDAyLDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgd2xkYXAzMi5saWIgbGliY3VybGQubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsZC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpZC5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDOFwkKENvbmZpZ3VyYXRpb25OYW1lKSIKIAkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiCkBAIC0xMDcwLDcgKzEwNzAsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtMTA4Nyw3ICsxMDg3LDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgd2xkYXAzMi5saWIgbGliY3VybC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmwuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDOFwkKENvbmZpZ3VyYXRpb25OYW1lKSIKIAkJCQlTdWJTeXN0ZW09IjEiCkBAIC0xMTU0LDcgKzExNTQsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtMTE3MSw3ICsxMTcxLDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgd2xkYXAzMi5saWIgbGliY3VybC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmwuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDOFwkKENvbmZpZ3VyYXRpb25OYW1lKSIKIAkJCQlTdWJTeXN0ZW09IjEiCkBAIC0xMjM3LDcgKzEyMzcsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtMTI1NCw3ICsxMjU0LDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgd2xkYXAzMi5saWIgbGliY3VybC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmwuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDOFwkKENvbmZpZ3VyYXRpb25OYW1lKSIKIAkJCQlTdWJTeXN0ZW09IjEiCkBAIC0xMzIxLDcgKzEzMjEsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtMTMzOCw3ICsxMzM4LDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgd2xkYXAzMi5saWIgbGliY3VybC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmwuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDOFwkKENvbmZpZ3VyYXRpb25OYW1lKSIKIAkJCQlTdWJTeXN0ZW09IjEiCkBAIC0xNDAzLDcgKzE0MDMsNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTE0MjEsNyArMTQyMSw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmxkLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybGQuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKWQuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzhcJChDb25maWd1cmF0aW9uTmFtZSkiCiAJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIgpAQCAtMTQ4OSw3ICsxNDg5LDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC0xNTA3LDcgKzE1MDcsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsZC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmxkLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlkLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkM4XCQoQ29uZmlndXJhdGlvbk5hbWUpIgogCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSIKQEAgLTE1NzUsNyArMTU3NSw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0xNTkyLDcgKzE1OTIsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM4XCQoQ29uZmlndXJhdGlvbk5hbWUpIgogCQkJCVN1YlN5c3RlbT0iMSIKQEAgLTE2NTksNyArMTY1OSw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0xNjc2LDcgKzE2NzYsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkM4XCQoQ29uZmlndXJhdGlvbk5hbWUpIgogCQkJCVN1YlN5c3RlbT0iMSIKQEAgLTE3NDEsNyArMTc0MSw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtMTc1OSw3ICsxNzU5LDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImNyeXB0MzIubGliIHdzMl8zMi5saWIgd2xkYXAzMi5saWIgbGliY3VybGQubGliIGxpYmVheTMyLmxpYiBzc2xlYXkzMi5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmxkLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlkLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM4XCQoQ29uZmlndXJhdGlvbk5hbWUpOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luMzJcVkM4XExJQiBEZWJ1ZyIKIAkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiCkBAIC0xODI3LDcgKzE4MjcsNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTE4NDUsNyArMTg0NSw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJjcnlwdDMyLmxpYiB3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmxkLmxpYiBsaWJlYXkzMi5saWIgc3NsZWF5MzIubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsZC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpZC5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDOFwkKENvbmZpZ3VyYXRpb25OYW1lKTsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjY0XFZDOFxMSUIgRGVidWciCiAJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIgpAQCAtMTkxMyw3ICsxOTEzLDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTE5MzAsNyArMTkzMCw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJjcnlwdDMyLmxpYiB3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmwubGliIGxpYmVheTMyLmxpYiBzc2xlYXkzMi5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmwuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDOFwkKENvbmZpZ3VyYXRpb25OYW1lKTsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjMyXFZDOFxMSUIgUmVsZWFzZSIKIAkJCQlTdWJTeXN0ZW09IjEiCkBAIC0xOTk3LDcgKzE5OTcsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtMjAxNCw3ICsyMDE0LDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImNyeXB0MzIubGliIHdzMl8zMi5saWIgd2xkYXAzMi5saWIgbGliY3VybC5saWIgbGliZWF5MzIubGliIHNzbGVheTMyLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkM4XCQoQ29uZmlndXJhdGlvbk5hbWUpOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luNjRcVkM4XExJQiBSZWxlYXNlIgogCQkJCVN1YlN5c3RlbT0iMSIKQEAgLTIwNzksNyArMjA3OSw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtMjA5Nyw3ICsyMDk3LDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImNyeXB0MzIubGliIHdzMl8zMi5saWIgd2xkYXAzMi5saWIgbGliY3VybGQubGliIGxpYmVheTMyLmxpYiBzc2xlYXkzMi5saWIgbGlic3NoMmQubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsZC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpZC5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDOFwkKENvbmZpZ3VyYXRpb25OYW1lKTsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjMyXFZDOFxMSUIgRGVidWc7Li5cLi5cLi5cLi5cLi5cbGlic3NoMlxidWlsZFxXaW4zMlxWQzhcTElCIERlYnVnIgogCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSIKQEAgLTIxNjUsNyArMjE2NSw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtMjE4Myw3ICsyMTgzLDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImNyeXB0MzIubGliIHdzMl8zMi5saWIgd2xkYXAzMi5saWIgbGliY3VybGQubGliIGxpYmVheTMyLmxpYiBzc2xlYXkzMi5saWIgbGlic3NoMmQubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsZC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpZC5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDOFwkKENvbmZpZ3VyYXRpb25OYW1lKTsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjY0XFZDOFxMSUIgRGVidWc7Li5cLi5cLi5cLi5cLi5cbGlic3NoMlxidWlsZFxXaW42NFxWQzhcTElCIERlYnVnIgogCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSIKQEAgLTIyNTEsNyArMjI1MSw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0yMjY4LDcgKzIyNjgsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iY3J5cHQzMi5saWIgd3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsLmxpYiBsaWJlYXkzMi5saWIgc3NsZWF5MzIubGliIGxpYnNzaDIubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzhcJChDb25maWd1cmF0aW9uTmFtZSk7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW4zMlxWQzhcTElCIFJlbGVhc2U7Li5cLi5cLi5cLi5cLi5cbGlic3NoMlxidWlsZFxXaW4zMlxWQzhcTElCIFJlbGVhc2UiCiAJCQkJU3ViU3lzdGVtPSIxIgpAQCAtMjMzNSw3ICsyMzM1LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTIzNTIsNyArMjM1Miw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJjcnlwdDMyLmxpYiB3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmwubGliIGxpYmVheTMyLmxpYiBzc2xlYXkzMi5saWIgbGlic3NoMi5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmwuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDOFwkKENvbmZpZ3VyYXRpb25OYW1lKTsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjY0XFZDOFxMSUIgUmVsZWFzZTsuLlwuLlwuLlwuLlwuLlxsaWJzc2gyXGJ1aWxkXFdpbjY0XFZDOFxMSUIgUmVsZWFzZSIKIAkJCQlTdWJTeXN0ZW09IjEiCkBAIC0yNDE3LDcgKzI0MTcsNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTI0MzUsNyArMjQzNSw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmxkLmxpYiBsaWJlYXkzMi5saWIgc3NsZWF5MzIubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsZC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpZC5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDOFwkKENvbmZpZ3VyYXRpb25OYW1lKTsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjMyXFZDOFxETEwgRGVidWciCiAJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIgpAQCAtMjUwMyw3ICsyNTAzLDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC0yNTIxLDcgKzI1MjEsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsZC5saWIgbGliZWF5MzIubGliIHNzbGVheTMyLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybGQuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKWQuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzhcJChDb25maWd1cmF0aW9uTmFtZSk7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW42NFxWQzhcRExMIERlYnVnIgogCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSIKQEAgLTI1ODksNyArMjU4OSw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0yNjA2LDcgKzI2MDYsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsLmxpYiBsaWJlYXkzMi5saWIgc3NsZWF5MzIubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzhcJChDb25maWd1cmF0aW9uTmFtZSk7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW4zMlxWQzhcRExMIFJlbGVhc2UiCiAJCQkJU3ViU3lzdGVtPSIxIgpAQCAtMjY3Myw3ICsyNjczLDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTI2OTAsNyArMjY5MCw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmwubGliIGxpYmVheTMyLmxpYiBzc2xlYXkzMi5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmwuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDOFwkKENvbmZpZ3VyYXRpb25OYW1lKTsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjY0XFZDOFxETEwgUmVsZWFzZSIKIAkJCQlTdWJTeXN0ZW09IjEiCkBAIC0yNzU1LDcgKzI3NTUsNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTI3NzMsNyArMjc3Myw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmxkLmxpYiBsaWJlYXkzMi5saWIgc3NsZWF5MzIubGliIGxpYnNzaDJkLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybGQuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKWQuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzhcJChDb25maWd1cmF0aW9uTmFtZSk7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW4zMlxWQzhcRExMIERlYnVnOy4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcYnVpbGRcV2luMzJcVkM4XERMTCBEZWJ1ZyIKIAkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiCkBAIC0yODQxLDcgKzI4NDEsNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTI4NTksNyArMjg1OSw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmxkLmxpYiBsaWJlYXkzMi5saWIgc3NsZWF5MzIubGliIGxpYnNzaDJkLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybGQuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKWQuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzhcJChDb25maWd1cmF0aW9uTmFtZSk7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW42NFxWQzhcRExMIERlYnVnOy4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcYnVpbGRcV2luNjRcVkM4XERMTCBEZWJ1ZyIKIAkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiCkBAIC0yOTI3LDcgKzI5MjcsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtMjk0NCw3ICsyOTQ0LDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgd2xkYXAzMi5saWIgbGliY3VybC5saWIgbGliZWF5MzIubGliIHNzbGVheTMyLmxpYiBsaWJzc2gyLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM4XCQoQ29uZmlndXJhdGlvbk5hbWUpOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luMzJcVkM4XERMTCBSZWxlYXNlOy4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcYnVpbGRcV2luMzJcVkM4XERMTCBSZWxlYXNlIgogCQkJCVN1YlN5c3RlbT0iMSIKQEAgLTMwMTEsNyArMzAxMSw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0zMDI4LDcgKzMwMjgsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsLmxpYiBsaWJzc2gyLmxpYiBsaWJlYXkzMi5saWIgc3NsZWF5MzIubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzhcJChDb25maWd1cmF0aW9uTmFtZSk7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW42NFxWQzhcRExMIFJlbGVhc2U7Li5cLi5cLi5cLi5cLi5cbGlic3NoMlxidWlsZFxXaW42NFxWQzhcRExMIFJlbGVhc2UiCiAJCQkJU3ViU3lzdGVtPSIxIgpAQCAtMzA5Myw3ICszMDkzLDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC0zMTExLDcgKzMxMTEsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsZC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmxkLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlkLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM4XCQoQ29uZmlndXJhdGlvbk5hbWUpIgogCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSIKQEAgLTMxNzksNyArMzE3OSw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtMzE5Nyw3ICszMTk3LDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgd2xkYXAzMi5saWIgbGliY3VybGQubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsZC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpZC5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDOFwkKENvbmZpZ3VyYXRpb25OYW1lKSIKIAkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiCkBAIC0zMjY1LDcgKzMyNjUsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtMzI4Miw3ICszMjgyLDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgd2xkYXAzMi5saWIgbGliY3VybC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmwuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDOFwkKENvbmZpZ3VyYXRpb25OYW1lKSIKIAkJCQlTdWJTeXN0ZW09IjEiCkBAIC0zMzQ5LDcgKzMzNDksNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtMzM2Niw3ICszMzY2LDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgd2xkYXAzMi5saWIgbGliY3VybC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmwuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDOFwkKENvbmZpZ3VyYXRpb25OYW1lKSIKIAkJCQlTdWJTeXN0ZW09IjEiCkBAIC0zNDMxLDcgKzM0MzEsNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTM0NDksNyArMzQ0OSw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmxkLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybGQuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKWQuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzhcJChDb25maWd1cmF0aW9uTmFtZSkiCiAJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIgpAQCAtMzUxNyw3ICszNTE3LDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC0zNTM1LDcgKzM1MzUsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsZC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmxkLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlkLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkM4XCQoQ29uZmlndXJhdGlvbk5hbWUpIgogCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSIKQEAgLTM2MDMsNyArMzYwMyw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0zNjIwLDcgKzM2MjAsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM4XCQoQ29uZmlndXJhdGlvbk5hbWUpIgogCQkJCVN1YlN5c3RlbT0iMSIKQEAgLTM2ODcsNyArMzY4Nyw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0zNzA0LDcgKzM3MDQsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkM4XCQoQ29uZmlndXJhdGlvbk5hbWUpIgogCQkJCVN1YlN5c3RlbT0iMSIKQEAgLTM3NjksNyArMzc2OSw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtMzc4Nyw3ICszNzg3LDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgd2xkYXAzMi5saWIgbm9ybWFsaXoubGliIGxpYmN1cmxkLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybGQuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKWQuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzhcJChDb25maWd1cmF0aW9uTmFtZSkiCiAJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIgpAQCAtMzg1NSw3ICszODU1LDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC0zODczLDcgKzM4NzMsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBub3JtYWxpei5saWIgbGliY3VybGQubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsZC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpZC5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDOFwkKENvbmZpZ3VyYXRpb25OYW1lKSIKIAkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiCkBAIC0zOTQxLDcgKzM5NDEsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtMzk1OCw3ICszOTU4LDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgd2xkYXAzMi5saWIgbm9ybWFsaXoubGliIGxpYmN1cmwubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzhcJChDb25maWd1cmF0aW9uTmFtZSkiCiAJCQkJU3ViU3lzdGVtPSIxIgpAQCAtNDAyNSw3ICs0MDI1LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTQwNDIsNyArNDA0Miw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIG5vcm1hbGl6LmxpYiBsaWJjdXJsLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkM4XCQoQ29uZmlndXJhdGlvbk5hbWUpIgogCQkJCVN1YlN5c3RlbT0iMSIKZGlmZiAtLWdpdCBhL3Byb2plY3RzL1dpbmRvd3MvVkM4L3NyYy9jdXJsc3JjLnNsbiBiL3Byb2plY3RzL1dpbmRvd3MvVkM4L3NyYy9jdXJsc3JjLnNsbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmU4YWQwNy4uMDAwMDAwMAotLS0gYS9wcm9qZWN0cy9XaW5kb3dzL1ZDOC9zcmMvY3VybHNyYy5zbG4KKysrIC9kZXYvbnVsbApAQCAtMSwxNTcgKzAsMCBAQAotTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gU29sdXRpb24gRmlsZSwgRm9ybWF0IFZlcnNpb24gOS4wMAotIyBWaXN1YWwgU3R1ZGlvIDIwMDUKLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiY3VybHNyYyIsICJjdXJsc3JjLnZjcHJvaiIsICJ7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfSIKLUVuZFByb2plY3QKLUdsb2JhbAotCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Db25maWd1cmF0aW9uUGxhdGZvcm1zKSA9IHByZVNvbHV0aW9uCi0JCURMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIgPSBETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCi0JCURMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0ID0gRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQKLQkJRExMIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzIgPSBETEwgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMgotCQlETEwgRGVidWcgLSBETEwgT3BlblNTTHx4NjQgPSBETEwgRGVidWcgLSBETEwgT3BlblNTTHx4NjQKLQkJRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMgotCQlETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQKLQkJRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKLQkJRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NAotCQlETEwgRGVidWd8V2luMzIgPSBETEwgRGVidWd8V2luMzIKLQkJRExMIERlYnVnfHg2NCA9IERMTCBEZWJ1Z3x4NjQKLQkJRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyID0gRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCi0JCURMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQgPSBETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0Ci0JCURMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzIgPSBETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyCi0JCURMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0ID0gRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQKLQkJRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIKLQkJRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAotCQlETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKLQkJRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NCA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKLQkJRExMIFJlbGVhc2V8V2luMzIgPSBETEwgUmVsZWFzZXxXaW4zMgotCQlETEwgUmVsZWFzZXx4NjQgPSBETEwgUmVsZWFzZXx4NjQKLQkJTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiA9IExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKLQkJTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQgPSBMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NAotCQlMSUIgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiA9IExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyCi0JCUxJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NCA9IExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NAotCQlMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiA9IExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyCi0JCUxJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCA9IExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAotCQlMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyID0gTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgotCQlMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NCA9IExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0Ci0JCUxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzIgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyCi0JCUxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0ID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQKLQkJTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzIgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMgotCQlMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQKLQkJTElCIERlYnVnfFdpbjMyID0gTElCIERlYnVnfFdpbjMyCi0JCUxJQiBEZWJ1Z3x4NjQgPSBMSUIgRGVidWd8eDY0Ci0JCUxJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiA9IExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgotCQlMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0ID0gTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NAotCQlMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyID0gTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMgotCQlMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NCA9IExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0Ci0JCUxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIgPSBMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyCi0JCUxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0ID0gTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQKLQkJTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyID0gTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCi0JCUxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQgPSBMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0Ci0JCUxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMiA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMgotCQlMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0ID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NAotCQlMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMgotCQlMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NCA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0Ci0JCUxJQiBSZWxlYXNlfFdpbjMyID0gTElCIFJlbGVhc2V8V2luMzIKLQkJTElCIFJlbGVhc2V8eDY0ID0gTElCIFJlbGVhc2V8eDY0Ci0JRW5kR2xvYmFsU2VjdGlvbgotCUdsb2JhbFNlY3Rpb24oUHJvamVjdENvbmZpZ3VyYXRpb25QbGF0Zm9ybXMpID0gcG9zdFNvbHV0aW9uCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyLkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0LkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0LkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMi5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMi5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0LkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgT3BlblNTTHx4NjQuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMi5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMi5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0LkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMi5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NC5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NC5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBEZWJ1Z3xXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWd8V2luMzIuQnVpbGQuMCA9IERMTCBEZWJ1Z3xXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERMTCBEZWJ1Z3x4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnfHg2NC5CdWlsZC4wID0gRExMIERlYnVnfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMi5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0LkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzIuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyLkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0LkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0LkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMi5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NC5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NC5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NC5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZXxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gRExMIFJlbGVhc2V8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZXx4NjQuQnVpbGQuMCA9IERMTCBSZWxlYXNlfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NC5CdWlsZC4wID0gTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzIuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBETEwgT3BlblNTTHx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0LkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBETEwgT3BlblNTTHx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0LkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzIuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyLkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0LkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gTElCIERlYnVnfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1Z3xXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gTElCIERlYnVnfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWd8eDY0LkJ1aWxkLjAgPSBMSUIgRGVidWd8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzIuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0LkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0LkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMi5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzIuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZXxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2V8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlfHg2NC5CdWlsZC4wID0gTElCIFJlbGVhc2V8eDY0Ci0JRW5kR2xvYmFsU2VjdGlvbgotCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Qcm9wZXJ0aWVzKSA9IHByZVNvbHV0aW9uCi0JCUhpZGVTb2x1dGlvbk5vZGUgPSBGQUxTRQotCUVuZEdsb2JhbFNlY3Rpb24KLUVuZEdsb2JhbApkaWZmIC0tZ2l0IGEvcHJvamVjdHMvV2luZG93cy9WQzkvY3VybC1hbGwuc2xuIGIvcHJvamVjdHMvV2luZG93cy9WQzkvY3VybC1hbGwuc2xuCmluZGV4IDQ0MTUxODYuLjIwMDdjZjcgMTAwNjQ0Ci0tLSBhL3Byb2plY3RzL1dpbmRvd3MvVkM5L2N1cmwtYWxsLnNsbgorKysgYi9wcm9qZWN0cy9XaW5kb3dzL1ZDOS9jdXJsLWFsbC5zbG4KQEAgLTEsNiArMSw2IEBACiBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyBTb2x1dGlvbiBGaWxlLCBGb3JtYXQgVmVyc2lvbiAxMC4wMAogIyBWaXN1YWwgU3R1ZGlvIDIwMDgKLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiY3VybHNyYyIsICJzcmNcY3VybHNyYy52Y3Byb2oiLCAiezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0iCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImN1cmwiLCAic3JjXGN1cmwudmNwcm9qIiwgIns1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9IgogCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QKIAkJe0RBNkY1NkI0LTA2QTQtNDQxRC1BRDcwLUFDNUE3RDUxRkFEQn0gPSB7REE2RjU2QjQtMDZBNC00NDFELUFENzAtQUM1QTdENTFGQURCfQogCUVuZFByb2plY3RTZWN0aW9uCmRpZmYgLS1naXQgYS9wcm9qZWN0cy9XaW5kb3dzL1ZDOS9saWIvLmdpdGlnbm9yZSBiL3Byb2plY3RzL1dpbmRvd3MvVkM5L2xpYi8uZ2l0aWdub3JlCmluZGV4IDZjZDYyY2EuLjQzMWNmNDcgMTAwNjQ0Ci0tLSBhL3Byb2plY3RzL1dpbmRvd3MvVkM5L2xpYi8uZ2l0aWdub3JlCisrKyBiL3Byb2plY3RzL1dpbmRvd3MvVkM5L2xpYi8uZ2l0aWdub3JlCkBAIC0xLDQgKzEsNCBAQAotLyoudmNwcm9qCi0vKi51c2VyCiAvKi5uY2IKIC8qLnN1bworLyoudXNlcgorLyoudmNwcm9qCmRpZmYgLS1naXQgYS9wcm9qZWN0cy9XaW5kb3dzL1ZDOS9saWIvbGliY3VybC50bXBsIGIvcHJvamVjdHMvV2luZG93cy9WQzkvbGliL2xpYmN1cmwudG1wbAppbmRleCBmM2VjMTQzLi5mNTZiMzFjIDEwMDY0NAotLS0gYS9wcm9qZWN0cy9XaW5kb3dzL1ZDOS9saWIvbGliY3VybC50bXBsCisrKyBiL3Byb2plY3RzL1dpbmRvd3MvVkM5L2xpYi9saWJjdXJsLnRtcGwKQEAgLTU1LDcgKzU1LDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC0xNDAsNyArMTQwLDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC0yMjUsNyArMjI1LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTMwOCw3ICszMDgsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtMzg0LDcgKzM4NCw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtNDUxLDcgKzQ1MSw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtNTE4LDcgKzUxOCw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC01ODUsNyArNTg1LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTY1NSw3ICs2NTUsNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTc0MCw3ICs3NDAsNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTgyNSw3ICs4MjUsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtOTA4LDcgKzkwOCw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC05ODksNyArOTg5LDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC0xMDc0LDcgKzEwNzQsNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTExNTksNyArMTE1OSw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0xMjQyLDcgKzEyNDIsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtMTMyMyw3ICsxMzIzLDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC0xNDA4LDcgKzE0MDgsNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTE0OTMsNyArMTQ5Myw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0xNTc2LDcgKzE1NzYsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtMTY1Miw3ICsxNjUyLDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC0xNzE5LDcgKzE3MTksNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTE3ODUsNyArMTc4NSw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtMTg1Miw3ICsxODUyLDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC0xOTE4LDcgKzE5MTgsNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTE5ODUsNyArMTk4NSw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtMjA1MSw3ICsyMDUxLDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC0yMTE4LDcgKzIxMTgsNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTIxODQsNyArMjE4NCw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtMjI1MSw3ICsyMjUxLDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC0yMzE4LDcgKzIzMTgsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtMjM4NSw3ICsyMzg1LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTI0NTEsNyArMjQ1MSw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0yNTE4LDcgKzI1MTgsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtMjU4NCw3ICsyNTg0LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTI2NTEsNyArMjY1MSw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0yNzE3LDcgKzI3MTcsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtMjc4NCw3ICsyNzg0LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTI4NTAsNyArMjg1MCw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0yOTE3LDcgKzI5MTcsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtMjk4Nyw3ICsyOTg3LDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC0zMDcyLDcgKzMwNzIsNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTMxNTcsNyArMzE1Nyw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0zMjQwLDcgKzMyNDAsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtMzMxNiw3ICszMzE2LDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC0zMzgzLDcgKzMzODMsNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTM0NTAsNyArMzQ1MCw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0zNTE3LDcgKzM1MTcsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtMzU3MCw2ICszNTcwLDIwIEBACiBDVVJMX0xJQl9SQ19GSUxFUwogCQk8L0ZpbHRlcj4KIAkJPEZpbHRlcgorCQkJTmFtZT0idmF1dGgiCisJCQk+CisJCQk8RmlsdGVyCisJCQkJTmFtZT0iU291cmNlIEZpbGVzIgorCQkJCT4KK0NVUkxfTElCX1ZBVVRIX0NfRklMRVMKKwkJCTwvRmlsdGVyPgorCQkJPEZpbHRlcgorCQkJCU5hbWU9IkhlYWRlciBGaWxlcyIKKwkJCQk+CitDVVJMX0xJQl9WQVVUSF9IX0ZJTEVTCisJCQk8L0ZpbHRlcj4KKwkJPC9GaWx0ZXI+CisJCTxGaWx0ZXIKIAkJCU5hbWU9InZ0bHMiCiAJCQk+CiAJCQk8RmlsdGVyCmRpZmYgLS1naXQgYS9wcm9qZWN0cy9XaW5kb3dzL1ZDOS9zcmMvLmdpdGlnbm9yZSBiL3Byb2plY3RzL1dpbmRvd3MvVkM5L3NyYy8uZ2l0aWdub3JlCmluZGV4IDZjZDYyY2EuLjQzMWNmNDcgMTAwNjQ0Ci0tLSBhL3Byb2plY3RzL1dpbmRvd3MvVkM5L3NyYy8uZ2l0aWdub3JlCisrKyBiL3Byb2plY3RzL1dpbmRvd3MvVkM5L3NyYy8uZ2l0aWdub3JlCkBAIC0xLDQgKzEsNCBAQAotLyoudmNwcm9qCi0vKi51c2VyCiAvKi5uY2IKIC8qLnN1bworLyoudXNlcgorLyoudmNwcm9qCmRpZmYgLS1naXQgYS9wcm9qZWN0cy9XaW5kb3dzL1ZDMTAvc3JjL2N1cmxzcmMuc2xuIGIvcHJvamVjdHMvV2luZG93cy9WQzkvc3JjL2N1cmwuc2xuCnNpbWlsYXJpdHkgaW5kZXggOTglCmNvcHkgZnJvbSBwcm9qZWN0cy9XaW5kb3dzL1ZDMTAvc3JjL2N1cmxzcmMuc2xuCmNvcHkgdG8gcHJvamVjdHMvV2luZG93cy9WQzkvc3JjL2N1cmwuc2xuCmluZGV4IDEzZmMxZDMuLjBmYjA1ODYgMTAwNjQ0Ci0tLSBhL3Byb2plY3RzL1dpbmRvd3MvVkMxMC9zcmMvY3VybHNyYy5zbG4KKysrIGIvcHJvamVjdHMvV2luZG93cy9WQzkvc3JjL2N1cmwuc2xuCkBAIC0xLDYgKzEsNiBAQAotTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gU29sdXRpb24gRmlsZSwgRm9ybWF0IFZlcnNpb24gMTEuMDAKLSMgVmlzdWFsIFN0dWRpbyAyMDEwCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImN1cmxzcmMiLCAiY3VybHNyYy52Y3hwcm9qIiwgIns1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9IgorTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gU29sdXRpb24gRmlsZSwgRm9ybWF0IFZlcnNpb24gMTAuMDAKKyMgVmlzdWFsIFN0dWRpbyAyMDA4CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImN1cmwiLCAiY3VybC52Y3Byb2oiLCAiezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0iCiBFbmRQcm9qZWN0CiBHbG9iYWwKIAlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uQ29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwcmVTb2x1dGlvbgpkaWZmIC0tZ2l0IGEvcHJvamVjdHMvV2luZG93cy9WQzkvc3JjL2N1cmxzcmMudG1wbCBiL3Byb2plY3RzL1dpbmRvd3MvVkM5L3NyYy9jdXJsLnRtcGwKc2ltaWxhcml0eSBpbmRleCA5NiUKcmVuYW1lIGZyb20gcHJvamVjdHMvV2luZG93cy9WQzkvc3JjL2N1cmxzcmMudG1wbApyZW5hbWUgdG8gcHJvamVjdHMvV2luZG93cy9WQzkvc3JjL2N1cmwudG1wbAppbmRleCBlMTkyNjk2Li5kYWYzYmRkIDEwMDY0NAotLS0gYS9wcm9qZWN0cy9XaW5kb3dzL1ZDOS9zcmMvY3VybHNyYy50bXBsCisrKyBiL3Byb2plY3RzL1dpbmRvd3MvVkM5L3NyYy9jdXJsLnRtcGwKQEAgLTIsOSArMiw5IEBACiA8VmlzdWFsU3R1ZGlvUHJvamVjdAogCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIgogCVZlcnNpb249IjkuMDAiCi0JTmFtZT0iY3VybHNyYyIKKwlOYW1lPSJjdXJsIgogCVByb2plY3RHVUlEPSJ7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfSIKLQlSb290TmFtZXNwYWNlPSJjdXJsc3JjIgorCVJvb3ROYW1lc3BhY2U9ImN1cmwiCiAJVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTMxMDcyIgogCT4KIAk8UGxhdGZvcm1zPgpAQCAtNTMsNyArNTMsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtNzAsNyArNzAsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM5XCQoQ29uZmlndXJhdGlvbk5hbWUpIgogCQkJCVN1YlN5c3RlbT0iMSIKQEAgLTEzNCw3ICsxMzQsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtMTUxLDcgKzE1MSw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmwubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzlcJChDb25maWd1cmF0aW9uTmFtZSkiCiAJCQkJU3ViU3lzdGVtPSIxIgpAQCAtMjE0LDcgKzIxNCw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0yMzEsNyArMjMxLDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgd2xkYXAzMi5saWIgbGliY3VybC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmwuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDOVwkKENvbmZpZ3VyYXRpb25OYW1lKSIKIAkJCQlTdWJTeXN0ZW09IjEiCkBAIC0yOTUsNyArMjk1LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTMxMiw3ICszMTIsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkM5XCQoQ29uZmlndXJhdGlvbk5hbWUpIgogCQkJCVN1YlN5c3RlbT0iMSIKQEAgLTM3NCw3ICszNzQsNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTM5Miw3ICszOTIsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsZC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmxkLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlkLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM5XCQoQ29uZmlndXJhdGlvbk5hbWUpIgogCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSIKQEAgLTQ1Nyw3ICs0NTcsNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTQ3NSw3ICs0NzUsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsZC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmxkLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlkLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkM5XCQoQ29uZmlndXJhdGlvbk5hbWUpIgogCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSIKQEAgLTUzOSw3ICs1MzksNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTU1Nyw3ICs1NTcsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsZC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmxkLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlkLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM5XCQoQ29uZmlndXJhdGlvbk5hbWUpIgogCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSIKQEAgLTYyMiw3ICs2MjIsNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTY0MCw3ICs2NDAsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsZC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmxkLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlkLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkM5XCQoQ29uZmlndXJhdGlvbk5hbWUpIgogCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSIKQEAgLTcwNCw3ICs3MDQsNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTcyMiw3ICs3MjIsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsZC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmxkLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlkLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM5XCQoQ29uZmlndXJhdGlvbk5hbWUpIgogCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSIKQEAgLTc4Nyw3ICs3ODcsNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTgwNSw3ICs4MDUsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsZC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmxkLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlkLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkM5XCQoQ29uZmlndXJhdGlvbk5hbWUpIgogCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSIKQEAgLTg2OSw3ICs4NjksNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTg4Nyw3ICs4ODcsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsZC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmxkLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlkLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM5XCQoQ29uZmlndXJhdGlvbk5hbWUpIgogCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSIKQEAgLTk1Miw3ICs5NTIsNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTk3MCw3ICs5NzAsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsZC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmxkLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlkLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkM5XCQoQ29uZmlndXJhdGlvbk5hbWUpIgogCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSIKQEAgLTEwMzUsNyArMTAzNSw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0xMDUyLDcgKzEwNTIsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM5XCQoQ29uZmlndXJhdGlvbk5hbWUpIgogCQkJCVN1YlN5c3RlbT0iMSIKQEAgLTExMTYsNyArMTExNiw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0xMTMzLDcgKzExMzMsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkM5XCQoQ29uZmlndXJhdGlvbk5hbWUpIgogCQkJCVN1YlN5c3RlbT0iMSIKQEAgLTExOTYsNyArMTE5Niw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0xMjEzLDcgKzEyMTMsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM5XCQoQ29uZmlndXJhdGlvbk5hbWUpIgogCQkJCVN1YlN5c3RlbT0iMSIKQEAgLTEyNzcsNyArMTI3Nyw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0xMjk0LDcgKzEyOTQsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkM5XCQoQ29uZmlndXJhdGlvbk5hbWUpIgogCQkJCVN1YlN5c3RlbT0iMSIKQEAgLTEzNTYsNyArMTM1Niw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtMTM3NCw3ICsxMzc0LDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgd2xkYXAzMi5saWIgbGliY3VybGQubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsZC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpZC5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDOVwkKENvbmZpZ3VyYXRpb25OYW1lKSIKIAkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiCkBAIC0xNDM5LDcgKzE0MzksNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTE0NTcsNyArMTQ1Nyw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmxkLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybGQuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKWQuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzlcJChDb25maWd1cmF0aW9uTmFtZSkiCiAJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIgpAQCAtMTUyMiw3ICsxNTIyLDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTE1MzksNyArMTUzOSw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmwubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzlcJChDb25maWd1cmF0aW9uTmFtZSkiCiAJCQkJU3ViU3lzdGVtPSIxIgpAQCAtMTYwMyw3ICsxNjAzLDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTE2MjAsNyArMTYyMCw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmwubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzlcJChDb25maWd1cmF0aW9uTmFtZSkiCiAJCQkJU3ViU3lzdGVtPSIxIgpAQCAtMTY4Miw3ICsxNjgyLDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC0xNzAwLDcgKzE3MDAsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iY3J5cHQzMi5saWIgd3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsZC5saWIgbGliZWF5MzIubGliIHNzbGVheTMyLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybGQuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKWQuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzlcJChDb25maWd1cmF0aW9uTmFtZSk7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW4zMlxWQzlcTElCIERlYnVnIgogCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSIKQEAgLTE3NjUsNyArMTc2NSw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtMTc4Myw3ICsxNzgzLDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImNyeXB0MzIubGliIHdzMl8zMi5saWIgd2xkYXAzMi5saWIgbGliY3VybGQubGliIGxpYmVheTMyLmxpYiBzc2xlYXkzMi5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmxkLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlkLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkM5XCQoQ29uZmlndXJhdGlvbk5hbWUpOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luNjRcVkM5XExJQiBEZWJ1ZyIKIAkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiCkBAIC0xODQ4LDcgKzE4NDgsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtMTg2NSw3ICsxODY1LDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImNyeXB0MzIubGliIHdzMl8zMi5saWIgd2xkYXAzMi5saWIgbGliY3VybC5saWIgbGliZWF5MzIubGliIHNzbGVheTMyLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM5XCQoQ29uZmlndXJhdGlvbk5hbWUpOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luMzJcVkM5XExJQiBSZWxlYXNlIgogCQkJCVN1YlN5c3RlbT0iMSIKQEAgLTE5MjksNyArMTkyOSw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0xOTQ2LDcgKzE5NDYsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iY3J5cHQzMi5saWIgd3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsLmxpYiBsaWJlYXkzMi5saWIgc3NsZWF5MzIubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzlcJChDb25maWd1cmF0aW9uTmFtZSk7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW42NFxWQzlcTElCIFJlbGVhc2UiCiAJCQkJU3ViU3lzdGVtPSIxIgpAQCAtMjAwOCw3ICsyMDA4LDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC0yMDI2LDcgKzIwMjYsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iY3J5cHQzMi5saWIgd3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsZC5saWIgbGliZWF5MzIubGliIHNzbGVheTMyLmxpYiBsaWJzc2gyZC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmxkLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlkLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM5XCQoQ29uZmlndXJhdGlvbk5hbWUpOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luMzJcVkM5XExJQiBEZWJ1ZzsuLlwuLlwuLlwuLlwuLlxsaWJzc2gyXGJ1aWxkXFdpbjMyXFZDOVxMSUIgRGVidWciCiAJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIgpAQCAtMjA5MSw3ICsyMDkxLDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC0yMTA5LDcgKzIxMDksNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iY3J5cHQzMi5saWIgd3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsZC5saWIgbGliZWF5MzIubGliIHNzbGVheTMyLmxpYiBsaWJzc2gyZC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmxkLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlkLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkM5XCQoQ29uZmlndXJhdGlvbk5hbWUpOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luNjRcVkM5XExJQiBEZWJ1ZzsuLlwuLlwuLlwuLlwuLlxsaWJzc2gyXGJ1aWxkXFdpbjY0XFZDOVxMSUIgRGVidWciCiAJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIgpAQCAtMjE3NCw3ICsyMTc0LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTIxOTEsNyArMjE5MSw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJjcnlwdDMyLmxpYiB3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmwubGliIGxpYmVheTMyLmxpYiBzc2xlYXkzMi5saWIgbGlic3NoMi5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmwuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDOVwkKENvbmZpZ3VyYXRpb25OYW1lKTsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjMyXFZDOVxMSUIgUmVsZWFzZTsuLlwuLlwuLlwuLlwuLlxsaWJzc2gyXGJ1aWxkXFdpbjMyXFZDOVxMSUIgUmVsZWFzZSIKIAkJCQlTdWJTeXN0ZW09IjEiCkBAIC0yMjU1LDcgKzIyNTUsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtMjI3Miw3ICsyMjcyLDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImNyeXB0MzIubGliIHdzMl8zMi5saWIgd2xkYXAzMi5saWIgbGliY3VybC5saWIgbGliZWF5MzIubGliIHNzbGVheTMyLmxpYiBsaWJzc2gyLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkM5XCQoQ29uZmlndXJhdGlvbk5hbWUpOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luNjRcVkM5XExJQiBSZWxlYXNlOy4uXC4uXC4uXC4uXC4uXGxpYnNzaDJcYnVpbGRcV2luNjRcVkM5XExJQiBSZWxlYXNlIgogCQkJCVN1YlN5c3RlbT0iMSIKQEAgLTIzMzQsNyArMjMzNCw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtMjM1Miw3ICsyMzUyLDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgd2xkYXAzMi5saWIgbGliY3VybGQubGliIGxpYmVheTMyLmxpYiBzc2xlYXkzMi5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmxkLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlkLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM5XCQoQ29uZmlndXJhdGlvbk5hbWUpOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luMzJcVkM5XERMTCBEZWJ1ZyIKIAkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiCkBAIC0yNDE3LDcgKzI0MTcsNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTI0MzUsNyArMjQzNSw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmxkLmxpYiBsaWJlYXkzMi5saWIgc3NsZWF5MzIubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsZC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpZC5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDOVwkKENvbmZpZ3VyYXRpb25OYW1lKTsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjY0XFZDOVxETEwgRGVidWciCiAJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIgpAQCAtMjUwMCw3ICsyNTAwLDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTI1MTcsNyArMjUxNyw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmwubGliIGxpYmVheTMyLmxpYiBzc2xlYXkzMi5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmwuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDOVwkKENvbmZpZ3VyYXRpb25OYW1lKTsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjMyXFZDOVxETEwgUmVsZWFzZSIKIAkJCQlTdWJTeXN0ZW09IjEiCkBAIC0yNTgxLDcgKzI1ODEsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtMjU5OCw3ICsyNTk4LDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgd2xkYXAzMi5saWIgbGliY3VybC5saWIgbGliZWF5MzIubGliIHNzbGVheTMyLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkM5XCQoQ29uZmlndXJhdGlvbk5hbWUpOy4uXC4uXC4uXC4uXC4uXG9wZW5zc2xcYnVpbGRcV2luNjRcVkM5XERMTCBSZWxlYXNlIgogCQkJCVN1YlN5c3RlbT0iMSIKQEAgLTI2NjAsNyArMjY2MCw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtMjY3OCw3ICsyNjc4LDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgd2xkYXAzMi5saWIgbGliY3VybGQubGliIGxpYmVheTMyLmxpYiBzc2xlYXkzMi5saWIgbGlic3NoMmQubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsZC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpZC5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDOVwkKENvbmZpZ3VyYXRpb25OYW1lKTsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjMyXFZDOVxETEwgRGVidWc7Li5cLi5cLi5cLi5cLi5cbGlic3NoMlxidWlsZFxXaW4zMlxWQzlcRExMIERlYnVnIgogCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSIKQEAgLTI3NDMsNyArMjc0Myw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtMjc2MSw3ICsyNzYxLDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgd2xkYXAzMi5saWIgbGliY3VybGQubGliIGxpYmVheTMyLmxpYiBzc2xlYXkzMi5saWIgbGlic3NoMmQubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsZC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpZC5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDOVwkKENvbmZpZ3VyYXRpb25OYW1lKTsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjY0XFZDOVxETEwgRGVidWc7Li5cLi5cLi5cLi5cLi5cbGlic3NoMlxidWlsZFxXaW42NFxWQzlcRExMIERlYnVnIgogCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSIKQEAgLTI4MjYsNyArMjgyNiw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0yODQzLDcgKzI4NDMsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsLmxpYiBsaWJlYXkzMi5saWIgc3NsZWF5MzIubGliIGxpYnNzaDIubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzlcJChDb25maWd1cmF0aW9uTmFtZSk7Li5cLi5cLi5cLi5cLi5cb3BlbnNzbFxidWlsZFxXaW4zMlxWQzlcRExMIFJlbGVhc2U7Li5cLi5cLi5cLi5cLi5cbGlic3NoMlxidWlsZFxXaW4zMlxWQzlcRExMIFJlbGVhc2UiCiAJCQkJU3ViU3lzdGVtPSIxIgpAQCAtMjkwNyw3ICsyOTA3LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTI5MjQsNyArMjkyNCw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmwubGliIGxpYnNzaDIubGliIGxpYmVheTMyLmxpYiBzc2xlYXkzMi5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmwuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjY0XFZDOVwkKENvbmZpZ3VyYXRpb25OYW1lKTsuLlwuLlwuLlwuLlwuLlxvcGVuc3NsXGJ1aWxkXFdpbjY0XFZDOVxETEwgUmVsZWFzZTsuLlwuLlwuLlwuLlwuLlxsaWJzc2gyXGJ1aWxkXFdpbjY0XFZDOVxETEwgUmVsZWFzZSIKIAkJCQlTdWJTeXN0ZW09IjEiCkBAIC0yOTg2LDcgKzI5ODYsNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTMwMDQsNyArMzAwNCw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmxkLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybGQuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKWQuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzlcJChDb25maWd1cmF0aW9uTmFtZSkiCiAJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIgpAQCAtMzA2OSw3ICszMDY5LDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC0zMDg3LDcgKzMwODcsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsZC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmxkLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlkLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkM5XCQoQ29uZmlndXJhdGlvbk5hbWUpIgogCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSIKQEAgLTMxNTIsNyArMzE1Miw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0zMTY5LDcgKzMxNjksNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luMzJcVkM5XCQoQ29uZmlndXJhdGlvbk5hbWUpIgogCQkJCVN1YlN5c3RlbT0iMSIKQEAgLTMyMzMsNyArMzIzMyw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0zMjUwLDcgKzMyNTAsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBsaWJjdXJsLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkM5XCQoQ29uZmlndXJhdGlvbk5hbWUpIgogCQkJCVN1YlN5c3RlbT0iMSIKQEAgLTMzMTIsNyArMzMxMiw3IEBACiAJCQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKIAkJCS8+CiAJCQk8VG9vbApAQCAtMzMzMCw3ICszMzMwLDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgd2xkYXAzMi5saWIgbGliY3VybGQubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsZC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpZC5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDOVwkKENvbmZpZ3VyYXRpb25OYW1lKSIKIAkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiCkBAIC0zMzk1LDcgKzMzOTUsNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTM0MTMsNyArMzQxMyw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmxkLmxpYiIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcY3VybGQuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKWQuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzlcJChDb25maWd1cmF0aW9uTmFtZSkiCiAJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIgpAQCAtMzQ3OCw3ICszNDc4LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTM0OTUsNyArMzQ5NSw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmwubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW4zMlxWQzlcJChDb25maWd1cmF0aW9uTmFtZSkiCiAJCQkJU3ViU3lzdGVtPSIxIgpAQCAtMzU1OSw3ICszNTU5LDcgQEAKIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgogCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTM1NzYsNyArMzU3Niw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIGxpYmN1cmwubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzlcJChDb25maWd1cmF0aW9uTmFtZSkiCiAJCQkJU3ViU3lzdGVtPSIxIgpAQCAtMzYzOCw3ICszNjM4LDcgQEAKIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgogCQkJLz4KIAkJCTxUb29sCkBAIC0zNjU2LDcgKzM2NTYsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBub3JtYWxpei5saWIgbGliY3VybGQubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsZC5leGUiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpZC5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDOVwkKENvbmZpZ3VyYXRpb25OYW1lKSIKIAkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiCkBAIC0zNzIxLDcgKzM3MjEsNyBAQAogCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKIAkJCQlSdW50aW1lTGlicmFyeT0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCiAJCQkvPgogCQkJPFRvb2wKQEAgLTM3MzksNyArMzczOSw3IEBACiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIHdsZGFwMzIubGliIG5vcm1hbGl6LmxpYiBsaWJjdXJsZC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmxkLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlkLmV4ZSIKIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iLi5cLi5cLi5cLi5cYnVpbGRcV2luNjRcVkM5XCQoQ29uZmlndXJhdGlvbk5hbWUpIgogCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSIKQEAgLTM4MDQsNyArMzgwNCw3IEBACiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKIAkJCQlSdW50aW1lTGlicmFyeT0iMiIKIAkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xldmVsPSI0IgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBAIC0zODIxLDcgKzM4MjEsNyBAQAogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiB3bGRhcDMyLmxpYiBub3JtYWxpei5saWIgbGliY3VybC5saWIiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXGN1cmwuZXhlIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5leGUiCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIgogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9Ii4uXC4uXC4uXC4uXGJ1aWxkXFdpbjMyXFZDOVwkKENvbmZpZ3VyYXRpb25OYW1lKSIKIAkJCQlTdWJTeXN0ZW09IjEiCkBAIC0zODg1LDcgKzM4ODUsNyBAQAogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiCiAJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtMzkwMiw3ICszOTAyLDcgQEAKIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgd2xkYXAzMi5saWIgbm9ybWFsaXoubGliIGxpYmN1cmwubGliIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxjdXJsLmV4ZSIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZXhlIgogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKIAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIuLlwuLlwuLlwuLlxidWlsZFxXaW42NFxWQzlcJChDb25maWd1cmF0aW9uTmFtZSkiCiAJCQkJU3ViU3lzdGVtPSIxIgpkaWZmIC0tZ2l0IGEvcHJvamVjdHMvV2luZG93cy9WQzkvc3JjL2N1cmxzcmMuc2xuIGIvcHJvamVjdHMvV2luZG93cy9WQzkvc3JjL2N1cmxzcmMuc2xuCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNjczMzQ5Li4wMDAwMDAwCi0tLSBhL3Byb2plY3RzL1dpbmRvd3MvVkM5L3NyYy9jdXJsc3JjLnNsbgorKysgL2Rldi9udWxsCkBAIC0xLDE1NyArMCwwIEBACi1NaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyBTb2x1dGlvbiBGaWxlLCBGb3JtYXQgVmVyc2lvbiAxMC4wMAotIyBWaXN1YWwgU3R1ZGlvIDIwMDgKLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiY3VybHNyYyIsICJjdXJsc3JjLnZjcHJvaiIsICJ7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfSIKLUVuZFByb2plY3QKLUdsb2JhbAotCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Db25maWd1cmF0aW9uUGxhdGZvcm1zKSA9IHByZVNvbHV0aW9uCi0JCURMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIgPSBETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCi0JCURMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0ID0gRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQKLQkJRExMIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzIgPSBETEwgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMgotCQlETEwgRGVidWcgLSBETEwgT3BlblNTTHx4NjQgPSBETEwgRGVidWcgLSBETEwgT3BlblNTTHx4NjQKLQkJRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMgotCQlETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQKLQkJRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMiA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKLQkJRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NAotCQlETEwgRGVidWd8V2luMzIgPSBETEwgRGVidWd8V2luMzIKLQkJRExMIERlYnVnfHg2NCA9IERMTCBEZWJ1Z3x4NjQKLQkJRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyID0gRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCi0JCURMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQgPSBETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0Ci0JCURMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzIgPSBETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyCi0JCURMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0ID0gRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQKLQkJRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIKLQkJRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAotCQlETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKLQkJRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NCA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKLQkJRExMIFJlbGVhc2V8V2luMzIgPSBETEwgUmVsZWFzZXxXaW4zMgotCQlETEwgUmVsZWFzZXx4NjQgPSBETEwgUmVsZWFzZXx4NjQKLQkJTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiA9IExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKLQkJTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQgPSBMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NAotCQlMSUIgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMiA9IExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyCi0JCUxJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NCA9IExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NAotCQlMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMiA9IExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyCi0JCUxJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NCA9IExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAotCQlMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyID0gTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgotCQlMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NCA9IExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0Ci0JCUxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzIgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyCi0JCUxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0ID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQKLQkJTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzIgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMgotCQlMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQKLQkJTElCIERlYnVnfFdpbjMyID0gTElCIERlYnVnfFdpbjMyCi0JCUxJQiBEZWJ1Z3x4NjQgPSBMSUIgRGVidWd8eDY0Ci0JCUxJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMiA9IExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgotCQlMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0ID0gTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NAotCQlMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyID0gTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMgotCQlMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NCA9IExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0Ci0JCUxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIgPSBMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyCi0JCUxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0ID0gTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQKLQkJTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyID0gTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCi0JCUxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQgPSBMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0Ci0JCUxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMiA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMgotCQlMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0ID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NAotCQlMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMgotCQlMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfHg2NCA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0Ci0JCUxJQiBSZWxlYXNlfFdpbjMyID0gTElCIFJlbGVhc2V8V2luMzIKLQkJTElCIFJlbGVhc2V8eDY0ID0gTElCIFJlbGVhc2V8eDY0Ci0JRW5kR2xvYmFsU2VjdGlvbgotCUdsb2JhbFNlY3Rpb24oUHJvamVjdENvbmZpZ3VyYXRpb25QbGF0Zm9ybXMpID0gcG9zdFNvbHV0aW9uCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIuQWN0aXZlQ2ZnID0gRExMIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyLkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0LkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0LkJ1aWxkLjAgPSBETEwgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMi5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgT3BlblNTTHxXaW4zMi5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0LkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgT3BlblNTTHx4NjQuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMi5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMi5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0LkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQuQnVpbGQuMCA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMi5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NC5BY3RpdmVDZmcgPSBETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfHg2NC5CdWlsZC4wID0gRExMIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBEZWJ1Z3xXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWd8V2luMzIuQnVpbGQuMCA9IERMTCBEZWJ1Z3xXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERMTCBEZWJ1Z3x4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIERlYnVnfHg2NC5CdWlsZC4wID0gRExMIERlYnVnfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMi5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0LkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzIuQWN0aXZlQ2ZnID0gRExMIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyLkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0LkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkRMTCBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0LkJ1aWxkLjAgPSBETEwgUmVsZWFzZSAtIERMTCBPcGVuU1NMfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMi5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NC5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NC5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyLkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIuQnVpbGQuMCA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NC5CdWlsZC4wID0gRExMIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBETEwgUmVsZWFzZXxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gRExMIFJlbGVhc2V8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uRExMIFJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IERMTCBSZWxlYXNlfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5ETEwgUmVsZWFzZXx4NjQuQnVpbGQuMCA9IERMTCBSZWxlYXNlfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NC5CdWlsZC4wID0gTElCIERlYnVnIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzIuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gRExMIE9wZW5TU0x8V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIERMTCBPcGVuU1NMfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBETEwgT3BlblNTTHx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gRExMIE9wZW5TU0x8eDY0LkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBETEwgT3BlblNTTHx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NC5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0LkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIERMTCBXaW5kb3dzIFNTUEl8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzIuQWN0aXZlQ2ZnID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyLkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0LkJ1aWxkLjAgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTHxXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnIC0gTElCIE9wZW5TU0x8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIERlYnVnIC0gTElCIE9wZW5TU0x8eDY0LkFjdGl2ZUNmZyA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWcgLSBMSUIgT3BlblNTTHx4NjQuQnVpbGQuMCA9IExJQiBEZWJ1ZyAtIExJQiBPcGVuU1NMfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gTElCIERlYnVnfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1Z3xXaW4zMi5CdWlsZC4wID0gTElCIERlYnVnfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBEZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gTElCIERlYnVnfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgRGVidWd8eDY0LkJ1aWxkLjAgPSBMSUIgRGVidWd8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTCAtIERMTCBMaWJTU0gyfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMIC0gRExMIExpYlNTSDJ8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0wgLSBETEwgTGliU1NIMnx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIERMTCBPcGVuU1NMfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzIuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBETEwgT3BlblNTTHx4NjQuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gRExMIE9wZW5TU0x8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58V2luMzIuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJIC0gRExMIFdpbklETnxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0LkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSSAtIERMTCBXaW5JRE58eDY0LkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEkgLSBETEwgV2luSUROfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8V2luMzIuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXxXaW4zMi5CdWlsZC4wID0gTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gRExMIFdpbmRvd3MgU1NQSXx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBETEwgV2luZG93cyBTU1BJfHg2NAotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0LkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIERMTCBXaW5kb3dzIFNTUEl8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTCAtIExJQiBMaWJTU0gyfHg2NC5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMIC0gTElCIExpYlNTSDJ8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0wgLSBMSUIgTGliU1NIMnx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHxXaW4zMi5BY3RpdmVDZmcgPSBMSUIgUmVsZWFzZSAtIExJQiBPcGVuU1NMfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzIuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8V2luMzIKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQKLQkJezUyMjhFOUNFLUEyMTYtNDIyRi1BNUU2LTU4RTk1RTJERDcxRH0uTElCIFJlbGVhc2UgLSBMSUIgT3BlblNTTHx4NjQuQnVpbGQuMCA9IExJQiBSZWxlYXNlIC0gTElCIE9wZW5TU0x8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IExJQiBSZWxlYXNlfFdpbjMyCi0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBMSUIgUmVsZWFzZXxXaW4zMgotCQl7NTIyOEU5Q0UtQTIxNi00MjJGLUE1RTYtNThFOTVFMkRENzFEfS5MSUIgUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gTElCIFJlbGVhc2V8eDY0Ci0JCXs1MjI4RTlDRS1BMjE2LTQyMkYtQTVFNi01OEU5NUUyREQ3MUR9LkxJQiBSZWxlYXNlfHg2NC5CdWlsZC4wID0gTElCIFJlbGVhc2V8eDY0Ci0JRW5kR2xvYmFsU2VjdGlvbgotCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Qcm9wZXJ0aWVzKSA9IHByZVNvbHV0aW9uCi0JCUhpZGVTb2x1dGlvbk5vZGUgPSBGQUxTRQotCUVuZEdsb2JhbFNlY3Rpb24KLUVuZEdsb2JhbApkaWZmIC0tZ2l0IGEvcHJvamVjdHMvYnVpbGQtb3BlbnNzbC5iYXQgYi9wcm9qZWN0cy9idWlsZC1vcGVuc3NsLmJhdAppbmRleCAyMDdlY2Y4Li4wNzczZTA3IDEwMDY0NAotLS0gYS9wcm9qZWN0cy9idWlsZC1vcGVuc3NsLmJhdAorKysgYi9wcm9qZWN0cy9idWlsZC1vcGVuc3NsLmJhdApAQCAtNiwxMSArNiwxMSBAQAogcmVtICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KIHJlbSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogcmVtICoKLXJlbSAqIENvcHlyaWdodCAoQykgMjAxMiAtIDIwMTUsIFN0ZXZlIEhvbG1lLCA8c3RldmVfaG9sbWVAaG90bWFpbC5jb20+LgorcmVtICogQ29weXJpZ2h0IChDKSAyMDEyIC0gMjAxNiwgU3RldmUgSG9sbWUsIDxzdGV2ZV9ob2xtZUBob3RtYWlsLmNvbT4uCiByZW0gKgogcmVtICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIHJlbSAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLXJlbSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCityZW0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIHJlbSAqCiByZW0gKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIHJlbSAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjQsMTMgKzI0LDE0IEBACiA6YmVnaW4KICAgcmVtIENoZWNrIHdlIGFyZSBydW5uaW5nIG9uIGEgV2luZG93cyBOVCBkZXJpdmVkIE9TCiAgIGlmIG5vdCAiJU9TJSIgPT0gIldpbmRvd3NfTlQiIGdvdG8gbm9kb3MKKworICByZW0gU2V0IG91ciB2YXJpYWJsZXMKICAgc2V0bG9jYWwKLSAgCi0gIHJlbSBEaXNwbGF5IHRoZSBoZWxwCisgIHNldCBWQ19WRVI9CisgIHNldCBCVUlMRF9QTEFURk9STT0KKworICByZW0gRW5zdXJlIHdlIGhhdmUgdGhlIHJlcXVpcmVkIGFyZ3VtZW50cwogICBpZiAvaSAiJX4xIiA9PSAiIiBnb3RvIHN5bnRheAotICBpZiAvaSAiJX4xIiA9PSAiLT8iIGdvdG8gc3ludGF4Ci0gIGlmIC9pICIlfjEiID09ICItaCIgZ290byBzeW50YXgKLSAgaWYgL2kgIiV+MSIgPT0gIi1oZWxwIiBnb3RvIHN5bnRheAogCiA6cGFyc2VBcmdzCiAgIGlmICIlfjEiID09ICIiIGdvdG8gcHJlcmVxdWlzaXRlcwpAQCAtNjcsNiArNjgsMTAgQEAKICAgICBzZXQgVkNfVkVSPTEyLjAKICAgICBzZXQgVkNfREVTQz1WQzEyCiAgICAgc2V0ICJWQ19QQVRIPU1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIDEyLjBcVkMiCisgICkgZWxzZSBpZiAvaSAiJX4xIiA9PSAidmMxNCIgKAorICAgIHNldCBWQ19WRVI9MTQuMAorICAgIHNldCBWQ19ERVNDPVZDMTQKKyAgICBzZXQgIlZDX1BBVEg9TWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gMTQuMFxWQyIKICAgKSBlbHNlIGlmIC9pICIlfjElIiA9PSAieDg2IiAoCiAgICAgc2V0IEJVSUxEX1BMQVRGT1JNPXg4NgogICApIGVsc2UgaWYgL2kgIiV+MSUiID09ICJ4NjQiICgKQEAgLTc1LDYgKzgwLDEyIEBACiAgICAgc2V0IEJVSUxEX0NPTkZJRz1kZWJ1ZwogICApIGVsc2UgaWYgL2kgIiV+MSUiID09ICJyZWxlYXNlIiAoCiAgICAgc2V0IEJVSUxEX0NPTkZJRz1yZWxlYXNlCisgICkgZWxzZSBpZiAvaSAiJX4xIiA9PSAiLT8iICgKKyAgICBnb3RvIHN5bnRheAorICApIGVsc2UgaWYgL2kgIiV+MSIgPT0gIi1oIiAoCisgICAgZ290byBzeW50YXgKKyAgKSBlbHNlIGlmIC9pICIlfjEiID09ICItaGVscCIgKAorICAgIGdvdG8gc3ludGF4CiAgICkgZWxzZSAoCiAgICAgaWYgbm90IGRlZmluZWQgU1RBUlRfRElSICgKICAgICAgIHNldCBTVEFSVF9ESVI9JX4xJQpAQCAtODYsNiArOTcsMTAgQEAKICAgc2hpZnQgJiBnb3RvIHBhcnNlQXJncwogCiA6cHJlcmVxdWlzaXRlcworICByZW0gQ29tcGlsZXIgYW5kIHBsYXRmb3JtIGFyZSByZXF1aXJlZCBwYXJhbWV0ZXJzLgorICBpZiBub3QgZGVmaW5lZCBWQ19WRVIgZ290byBzeW50YXgKKyAgaWYgbm90IGRlZmluZWQgQlVJTERfUExBVEZPUk0gZ290byBzeW50YXgKKwogICByZW0gRGVmYXVsdCB0aGUgc3RhcnQgZGlyZWN0b3J5IGlmIG9uZSBpc24ndCBzcGVjaWZpZWQKICAgaWYgbm90IGRlZmluZWQgU1RBUlRfRElSIHNldCBTVEFSVF9ESVI9Li5cLi5cb3BlbnNzbAogCkBAIC0xMDUsMTEgKzEyMCwxOCBAQAogICByZW0gQ2hlY2sgd2UgaGF2ZSBWaXN1YWwgU3R1ZGlvIGluc3RhbGxlZAogICBpZiBub3QgZXhpc3QgIiVQRiVcJVZDX1BBVEglIiBnb3RvIG5vdmMKIAotICByZW0gQ2hlY2sgd2UgaGF2ZSBQZXJsIGluc3RhbGxlZAorICByZW0gQ2hlY2sgd2UgaGF2ZSBQZXJsIGluIG91ciBwYXRoCiAgIGVjaG8gJVBBVEglIHwgZmluZHN0ciAvSSAvQzoiXFBlcmwiIDE+bnVsCiAgIGlmIGVycm9ybGV2ZWwgMSAoCi0gICAgaWYgbm90IGV4aXN0ICIlU3lzdGVtRHJpdmUlXFBlcmwiICgKLSAgICAgIGlmIG5vdCBleGlzdCAiJVN5c3RlbURyaXZlJVxQZXJsNjQiIGdvdG8gbm9wZXJsCisgICAgcmVtIEl0IGlzbid0IHNvIGNoZWNrIHdlIGhhdmUgaXQgaW5zdGFsbGVkIGFuZCBzZXQgdGhlIHBhdGggaWYgaXQgaXMKKyAgICBpZiBleGlzdCAiJVN5c3RlbURyaXZlJVxQZXJsIiAoCisgICAgICBzZXQgIlBBVEg9JVN5c3RlbURyaXZlJVxQZXJsXGJpbjslUEFUSCUiCisgICAgKSBlbHNlICgKKyAgICAgIGlmIGV4aXN0ICIlU3lzdGVtRHJpdmUlXFBlcmw2NCIgKAorICAgICAgICBzZXQgIlBBVEg9JVN5c3RlbURyaXZlJVxQZXJsNjRcYmluOyVQQVRIJSIKKyAgICAgICkgZWxzZSAoCisgICAgICAgIGdvdG8gbm9wZXJsCisgICAgICApCiAgICAgKQogICApCiAKQEAgLTE0MCw2ICsxNjIsNyBAQAogICAgIGlmICIlVkNfVkVSJSIgPT0gIjEwLjAiIHNldCBWQ1ZBUlNfUExBVEZPUk09JUJVSUxEX1BMQVRGT1JNJQogICAgIGlmICIlVkNfVkVSJSIgPT0gIjExLjAiIHNldCBWQ1ZBUlNfUExBVEZPUk09YW1kNjQKICAgICBpZiAiJVZDX1ZFUiUiID09ICIxMi4wIiBzZXQgVkNWQVJTX1BMQVRGT1JNPWFtZDY0CisgICAgaWYgIiVWQ19WRVIlIiA9PSAiMTQuMCIgc2V0IFZDVkFSU19QTEFURk9STT1hbWQ2NAogICApCiAKIDpzdGFydApAQCAtMjgwLDYgKzMwMyw3IEBACiAgIGVjaG8gdmMxMCAgICAgIC0gVXNlIFZpc3VhbCBTdHVkaW8gMjAxMAogICBlY2hvIHZjMTEgICAgICAtIFVzZSBWaXN1YWwgU3R1ZGlvIDIwMTIKICAgZWNobyB2YzEyICAgICAgLSBVc2UgVmlzdWFsIFN0dWRpbyAyMDEzCisgIGVjaG8gdmMxNCAgICAgIC0gVXNlIFZpc3VhbCBTdHVkaW8gMjAxNQogICBlY2hvLgogICBlY2hvIFBsYXRmb3JtOgogICBlY2hvLgpkaWZmIC0tZ2l0IGEvcHJvamVjdHMvYnVpbGQtd29sZnNzbC5iYXQgYi9wcm9qZWN0cy9idWlsZC13b2xmc3NsLmJhdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NDkzNTdmCi0tLSAvZGV2L251bGwKKysrIGIvcHJvamVjdHMvYnVpbGQtd29sZnNzbC5iYXQKQEAgLTAsMCArMSwzNTMgQEAKK0BlY2hvIG9mZgorcmVtICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorcmVtICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworcmVtICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKK3JlbSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CityZW0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworcmVtICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CityZW0gKgorcmVtICogQ29weXJpZ2h0IChDKSAyMDEyIC0gMjAxNSwgU3RldmUgSG9sbWUsIDxzdGV2ZV9ob2xtZUBob3RtYWlsLmNvbT4uCityZW0gKiBDb3B5cmlnaHQgKEMpIDIwMTUsIEpheSBTYXRpcm8sIDxyYXlzYXRpcm9AeWFob28uY29tPi4KK3JlbSAqCityZW0gKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAorcmVtICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcworcmVtICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCityZW0gKgorcmVtICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCityZW0gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKK3JlbSAqIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCityZW0gKgorcmVtICogVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQorcmVtICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KK3JlbSAqCityZW0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKKzpiZWdpbgorICByZW0gQ2hlY2sgd2UgYXJlIHJ1bm5pbmcgb24gYSBXaW5kb3dzIE5UIGRlcml2ZWQgT1MKKyAgaWYgbm90ICIlT1MlIiA9PSAiV2luZG93c19OVCIgZ290byBub2RvcworCisgIHJlbSBTZXQgb3VyIHZhcmlhYmxlcworICBzZXRsb2NhbAorICBzZXQgU1VDQ0VTU0ZVTF9CVUlMRFM9CisgIHNldCBWQ19WRVI9CisgIHNldCBCVUlMRF9QTEFURk9STT0KKworICByZW0gRW5zdXJlIHdlIGhhdmUgdGhlIHJlcXVpcmVkIGFyZ3VtZW50cworICBpZiAvaSAiJX4xIiA9PSAiIiBnb3RvIHN5bnRheAorCis6cGFyc2VBcmdzCisgIGlmICIlfjEiID09ICIiIGdvdG8gcHJlcmVxdWlzaXRlcworCisgIGlmIC9pICIlfjEiID09ICJ2YzEwIiAoCisgICAgc2V0IFZDX1ZFUj0xMC4wCisgICAgc2V0IFZDX0RFU0M9VkMxMAorICAgIHNldCBWQ19UT09MU0VUPXYxMDAKKyAgICBzZXQgIlZDX1BBVEg9TWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gMTAuMFxWQyIKKyAgKSBlbHNlIGlmIC9pICIlfjEiID09ICJ2YzExIiAoCisgICAgc2V0IFZDX1ZFUj0xMS4wCisgICAgc2V0IFZDX0RFU0M9VkMxMQorICAgIHNldCBWQ19UT09MU0VUPXYxMTAKKyAgICBzZXQgIlZDX1BBVEg9TWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gMTEuMFxWQyIKKyAgKSBlbHNlIGlmIC9pICIlfjEiID09ICJ2YzEyIiAoCisgICAgc2V0IFZDX1ZFUj0xMi4wCisgICAgc2V0IFZDX0RFU0M9VkMxMgorICAgIHNldCBWQ19UT09MU0VUPXYxMjAKKyAgICBzZXQgIlZDX1BBVEg9TWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gMTIuMFxWQyIKKyAgKSBlbHNlIGlmIC9pICIlfjEiID09ICJ2YzE0IiAoCisgICAgc2V0IFZDX1ZFUj0xNC4wCisgICAgc2V0IFZDX0RFU0M9VkMxNAorICAgIHNldCBWQ19UT09MU0VUPXYxNDAKKyAgICBzZXQgIlZDX1BBVEg9TWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gMTQuMFxWQyIKKyAgKSBlbHNlIGlmIC9pICIlfjEiID09ICJ4ODYiICgKKyAgICBzZXQgQlVJTERfUExBVEZPUk09eDg2CisgICkgZWxzZSBpZiAvaSAiJX4xIiA9PSAieDY0IiAoCisgICAgc2V0IEJVSUxEX1BMQVRGT1JNPXg2NAorICApIGVsc2UgaWYgL2kgIiV+MSIgPT0gImRlYnVnIiAoCisgICAgc2V0IEJVSUxEX0NPTkZJRz1kZWJ1ZworICApIGVsc2UgaWYgL2kgIiV+MSIgPT0gInJlbGVhc2UiICgKKyAgICBzZXQgQlVJTERfQ09ORklHPXJlbGVhc2UKKyAgKSBlbHNlIGlmIC9pICIlfjEiID09ICItPyIgKAorICAgIGdvdG8gc3ludGF4CisgICkgZWxzZSBpZiAvaSAiJX4xIiA9PSAiLWgiICgKKyAgICBnb3RvIHN5bnRheAorICApIGVsc2UgaWYgL2kgIiV+MSIgPT0gIi1oZWxwIiAoCisgICAgZ290byBzeW50YXgKKyAgKSBlbHNlICgKKyAgICBpZiBub3QgZGVmaW5lZCBTVEFSVF9ESVIgKAorICAgICAgc2V0IFNUQVJUX0RJUj0lfjEKKyAgICApIGVsc2UgKAorICAgICAgZ290byB1bmtub3duCisgICAgKQorICApCisKKyAgc2hpZnQgJiBnb3RvIHBhcnNlQXJncworCis6cHJlcmVxdWlzaXRlcworICByZW0gQ29tcGlsZXIgYW5kIHBsYXRmb3JtIGFyZSByZXF1aXJlZCBwYXJhbWV0ZXJzLgorICBpZiBub3QgZGVmaW5lZCBWQ19WRVIgZ290byBzeW50YXgKKyAgaWYgbm90IGRlZmluZWQgQlVJTERfUExBVEZPUk0gZ290byBzeW50YXgKKworICByZW0gRGVmYXVsdCB0aGUgc3RhcnQgZGlyZWN0b3J5IGlmIG9uZSBpc24ndCBzcGVjaWZpZWQKKyAgaWYgbm90IGRlZmluZWQgU1RBUlRfRElSIHNldCBTVEFSVF9ESVI9Li5cLi5cd29sZnNzbAorCisgIHJlbSBDYWxjdWxhdGUgdGhlIHByb2dyYW0gZmlsZXMgZGlyZWN0b3J5CisgIGlmIGRlZmluZWQgUFJPR1JBTUZJTEVTICgKKyAgICBzZXQgIlBGPSVQUk9HUkFNRklMRVMlIgorICAgIHNldCBPU19QTEFURk9STT14ODYKKyAgKQorICBpZiBkZWZpbmVkIFBST0dSQU1GSUxFUyh4ODYpICgKKyAgICBzZXQgIlBGPSVQUk9HUkFNRklMRVMoeDg2KSUiCisgICAgc2V0IE9TX1BMQVRGT1JNPXg2NAorICApCisKKyAgcmVtIENoZWNrIHdlIGhhdmUgYSBwcm9ncmFtIGZpbGVzIGRpcmVjdG9yeQorICBpZiBub3QgZGVmaW5lZCBQRiBnb3RvIG5vcGYKKworICByZW0gQ2hlY2sgd2UgaGF2ZSBWaXN1YWwgU3R1ZGlvIGluc3RhbGxlZAorICBpZiBub3QgZXhpc3QgIiVQRiVcJVZDX1BBVEglIiBnb3RvIG5vdmMKKworICByZW0gQ2hlY2sgdGhlIHN0YXJ0IGRpcmVjdG9yeSBleGlzdHMKKyAgaWYgbm90IGV4aXN0ICIlU1RBUlRfRElSJSIgZ290byBub3dvbGZzc2wKKworOmNvbmZpZ3VyZQorICBpZiAiJUJVSUxEX1BMQVRGT1JNJSIgPT0gIiIgc2V0IEJVSUxEX1BMQVRGT1JNPSVPU19QTEFURk9STSUKKworICBpZiAiJUJVSUxEX1BMQVRGT1JNJSIgPT0gIng4NiIgKAorICAgIHNldCBWQ1ZBUlNfUExBVEZPUk09eDg2CisgICkgZWxzZSBpZiAiJUJVSUxEX1BMQVRGT1JNJSIgPT0gIng2NCIgKAorICAgIGlmICIlVkNfVkVSJSIgPT0gIjEwLjAiIHNldCBWQ1ZBUlNfUExBVEZPUk09JUJVSUxEX1BMQVRGT1JNJQorICAgIGlmICIlVkNfVkVSJSIgPT0gIjExLjAiIHNldCBWQ1ZBUlNfUExBVEZPUk09YW1kNjQKKyAgICBpZiAiJVZDX1ZFUiUiID09ICIxMi4wIiBzZXQgVkNWQVJTX1BMQVRGT1JNPWFtZDY0CisgICAgaWYgIiVWQ19WRVIlIiA9PSAiMTQuMCIgc2V0IFZDVkFSU19QTEFURk9STT1hbWQ2NAorICApCisKKzpzdGFydAorICBlY2hvLgorICBjYWxsICIlUEYlXCVWQ19QQVRIJVx2Y3ZhcnNhbGwiICVWQ1ZBUlNfUExBVEZPUk0lCisKKyAgZWNoby4KKyAgc2V0IFNBVkVEX1BBVEg9JUNEJQorICBjZCAlU1RBUlRfRElSJQorICBnb3RvICVCVUlMRF9QTEFURk9STSUKKworOng2NAorICByZW0gQ2FsY3VsYXRlIG91ciBvdXRwdXQgZGlyZWN0b3J5CisgIHNldCBPVVRESVI9YnVpbGRcV2luNjRcJVZDX0RFU0MlCisgIGlmIG5vdCBleGlzdCAlT1VURElSJSBtZCAlT1VURElSJQorCisgIGlmICIlQlVJTERfQ09ORklHJSIgPT0gInJlbGVhc2UiIGdvdG8geDY0cmVsZWFzZQorCis6eDY0ZGVidWcKKyAgcmVtIFBlcmZvcm0gNjQtYml0IERlYnVnIEJ1aWxkCisKKyAgY2FsbCA6YnVpbGQgRGVidWcgeDY0CisgIGlmIGVycm9ybGV2ZWwgMSBnb3RvIGVycm9yCisKKyAgY2FsbCA6YnVpbGQgIkRMTCBEZWJ1ZyIgeDY0CisgIGlmIGVycm9ybGV2ZWwgMSBnb3RvIGVycm9yCisKKyAgaWYgIiVCVUlMRF9DT05GSUclIiA9PSAiZGVidWciIGdvdG8gc3VjY2VzcworCis6eDY0cmVsZWFzZQorICByZW0gUGVyZm9ybSA2NC1iaXQgUmVsZWFzZSBCdWlsZAorCisgIGNhbGwgOmJ1aWxkIFJlbGVhc2UgeDY0CisgIGlmIGVycm9ybGV2ZWwgMSBnb3RvIGVycm9yCisKKyAgY2FsbCA6YnVpbGQgIkRMTCBSZWxlYXNlIiB4NjQKKyAgaWYgZXJyb3JsZXZlbCAxIGdvdG8gZXJyb3IKKworICBnb3RvIHN1Y2Nlc3MKKworOng4NgorICByZW0gQ2FsY3VsYXRlIG91ciBvdXRwdXQgZGlyZWN0b3J5CisgIHNldCBPVVRESVI9YnVpbGRcV2luMzJcJVZDX0RFU0MlCisgIGlmIG5vdCBleGlzdCAlT1VURElSJSBtZCAlT1VURElSJQorCisgIGlmICIlQlVJTERfQ09ORklHJSIgPT0gInJlbGVhc2UiIGdvdG8geDg2cmVsZWFzZQorCis6eDg2ZGVidWcKKyAgcmVtIFBlcmZvcm0gMzItYml0IERlYnVnIEJ1aWxkCisKKyAgY2FsbCA6YnVpbGQgRGVidWcgV2luMzIKKyAgaWYgZXJyb3JsZXZlbCAxIGdvdG8gZXJyb3IKKworICBjYWxsIDpidWlsZCAiRExMIERlYnVnIiBXaW4zMgorICBpZiBlcnJvcmxldmVsIDEgZ290byBlcnJvcgorCisgIGlmICIlQlVJTERfQ09ORklHJSIgPT0gImRlYnVnIiBnb3RvIHN1Y2Nlc3MKKworOng4NnJlbGVhc2UKKyAgcmVtIFBlcmZvcm0gMzItYml0IFJlbGVhc2UgQnVpbGQKKworICBjYWxsIDpidWlsZCBSZWxlYXNlIFdpbjMyCisgIGlmIGVycm9ybGV2ZWwgMSBnb3RvIGVycm9yCisKKyAgY2FsbCA6YnVpbGQgIkRMTCBSZWxlYXNlIiBXaW4zMgorICBpZiBlcnJvcmxldmVsIDEgZ290byBlcnJvcgorCisgIGdvdG8gc3VjY2VzcworCis6YnVpbGQKKyAgcmVtIFRoaXMgZnVuY3Rpb24gYnVpbGRzIHdvbGZTU0wuCisgIHJlbSBVc2FnZTogQ0FMTCA6YnVpbGQgPGNvbmZpZ3VyYXRpb24+IDxwbGF0Zm9ybT4KKyAgcmVtIFRoZSBjdXJyZW50IGRpcmVjdG9yeSBtdXN0IGJlIHRoZSB3b2xmU1NMIGRpcmVjdG9yeS4KKyAgcmVtIFZTIENvbmZpZ3VyYXRpb246IERlYnVnLCBSZWxlYXNlLCBETEwgRGVidWcgb3IgRExMIFJlbGVhc2UuCisgIHJlbSBWUyBQbGF0Zm9ybTogV2luMzIgb3IgeDY0LgorICByZW0gUmV0dXJuczogMSBvbiBmYWlsLCAwIG9uIHN1Y2Nlc3MuCisgIHJlbSBBbiBpbmZvcm1hdGlvbmFsIG1lc3NhZ2Ugc2hvdWxkIGJlIHNob3duIGJlZm9yZSBhbnkgcmV0dXJuLgorICBzZXRsb2NhbAorICBzZXQgTVNCVUlMRF9DT05GSUc9JX4xCisgIHNldCBNU0JVSUxEX1BMQVRGT1JNPSV+MgorCisgIGlmIG5vdCBleGlzdCB3b2xmc3NsNjQuc2xuICgKKyAgICBlY2hvLgorICAgIGVjaG8gRXJyb3I6IGJ1aWxkOiB3b2xmc3NsNjQuc2xuIG5vdCBmb3VuZCBpbiAiJUNEJSIKKyAgICBleGl0IC9iIDEKKyAgKQorCisgIHJlbSBPVVRESVIgaXNuJ3QgYSBmdWxsIHBhdGgsIG9ubHkgcmVsYXRpdmUuIE1TQlVJTERfT1VURElSIG11c3QgYmUgZnVsbCBhbmQKKyAgcmVtIG5vdCBoYXZlIHRyYWlsaW5nIGJhY2tzbGFzaGVzLCB3aGljaCBhcmUgaGFuZGxlZCBsYXRlci4KKyAgaWYgIiVNU0JVSUxEX0NPTkZJRyUiID09ICJEZWJ1ZyIgKAorICAgIHNldCAiTVNCVUlMRF9PVVRESVI9JUNEJVwlT1VURElSJVxMSUIgRGVidWciCisgICkgZWxzZSBpZiAiJU1TQlVJTERfQ09ORklHJSIgPT0gIlJlbGVhc2UiICgKKyAgICBzZXQgIk1TQlVJTERfT1VURElSPSVDRCVcJU9VVERJUiVcTElCIFJlbGVhc2UiCisgICkgZWxzZSBpZiAiJU1TQlVJTERfQ09ORklHJSIgPT0gIkRMTCBEZWJ1ZyIgKAorICAgIHNldCAiTVNCVUlMRF9PVVRESVI9JUNEJVwlT1VURElSJVxETEwgRGVidWciCisgICkgZWxzZSBpZiAiJU1TQlVJTERfQ09ORklHJSIgPT0gIkRMTCBSZWxlYXNlIiAoCisgICAgc2V0ICJNU0JVSUxEX09VVERJUj0lQ0QlXCVPVVRESVIlXERMTCBSZWxlYXNlIgorICApIGVsc2UgKAorICAgIGVjaG8uCisgICAgZWNobyBFcnJvcjogYnVpbGQ6IENvbmZpZ3VyYXRpb24gbm90IHJlY29nbml6ZWQuCisgICAgZXhpdCAvYiAxCisgICkKKworICBpZiBub3QgIiVNU0JVSUxEX1BMQVRGT1JNJSIgPT0gIldpbjMyIiBpZiBub3QgIiVNU0JVSUxEX1BMQVRGT1JNJSIgPT0gIng2NCIgKAorICAgIGVjaG8uCisgICAgZWNobyBFcnJvcjogYnVpbGQ6IFBsYXRmb3JtIG5vdCByZWNvZ25pemVkLgorICAgIGV4aXQgL2IgMQorICApCisKKyAgY29weSAvdiAveSAiJX5kcDBcd29sZnNzbF9vcHRpb25zLmgiIC5cY3lhc3NsXG9wdGlvbnMuaAorICBpZiAlRVJST1JMRVZFTCUgbmVxIDAgKAorICAgIGVjaG8uCisgICAgZWNobyBFcnJvcjogYnVpbGQ6IENvdWxkbid0IHJlcGxhY2UgLlxjeWFzc2xcb3B0aW9ucy5oCisgICAgZXhpdCAvYiAxCisgICkKKworICBjb3B5IC92IC95ICIlfmRwMFx3b2xmc3NsX29wdGlvbnMuaCIgLlx3b2xmc3NsXG9wdGlvbnMuaAorICBpZiAlRVJST1JMRVZFTCUgbmVxIDAgKAorICAgIGVjaG8uCisgICAgZWNobyBFcnJvcjogYnVpbGQ6IENvdWxkbid0IHJlcGxhY2UgLlx3b2xmc3NsXG9wdGlvbnMuaAorICAgIGV4aXQgL2IgMQorICApCisKKyAgcmVtIEV4dHJhIHRyYWlsaW5nIFwgaW4gRGlycyBiZWNhdXNlIG90aGVyd2lzZSBpdCB0aGlua3MgYSBxdW90ZSBpcyBlc2NhcGVkCisgIG1zYnVpbGQgd29sZnNzbDY0LnNsbiBeCisgICAgLXA6Q3VzdG9tQWZ0ZXJNaWNyb3NvZnRDb21tb25UYXJnZXRzPSIlfmRwMFx3b2xmc3NsX292ZXJyaWRlLnByb3BzIiBeCisgICAgLXA6Q29uZmlndXJhdGlvbj0iJU1TQlVJTERfQ09ORklHJSIgXgorICAgIC1wOlBsYXRmb3JtPSIlTVNCVUlMRF9QTEFURk9STSUiIF4KKyAgICAtcDpQbGF0Zm9ybVRvb2xzZXQ9IiVWQ19UT09MU0VUJSIgXgorICAgIC1wOk91dERpcj0iJU1TQlVJTERfT1VURElSJVxcIiBeCisgICAgLXA6SW50RGlyPSIlTVNCVUlMRF9PVVRESVIlXG9ialxcIgorCisgIGlmICVFUlJPUkxFVkVMJSBuZXEgMCAoCisgICAgZWNoby4KKyAgICBlY2hvIEVycm9yOiBGYWlsZWQgYnVpbGRpbmcgd29sZlNTTCAlTVNCVUlMRF9DT05GSUclXnwlTVNCVUlMRF9QTEFURk9STSUuCisgICAgZXhpdCAvYiAxCisgICkKKworICByZW0gRm9yIHRlc3RzIHRvIHJ1biBwcm9wZXJseSB0aGUgd29sZlNTTCBkaXJlY3RvcnkgbXVzdCByZW1haW4gdGhlIGN1cnJlbnQuCisgIHNldCAiUEFUSD0lTVNCVUlMRF9PVVRESVIlOyVQQVRIJSIKKyAgIiVNU0JVSUxEX09VVERJUiVcdGVzdHN1aXRlLmV4ZSIKKworICBpZiAlRVJST1JMRVZFTCUgbmVxIDAgKAorICAgIGVjaG8uCisgICAgZWNobyBFcnJvcjogRmFpbGVkIHRlc3Rpbmcgd29sZlNTTCAlTVNCVUlMRF9DT05GSUclXnwlTVNCVUlMRF9QTEFURk9STSUuCisgICAgZXhpdCAvYiAxCisgICkKKworICBlY2hvLgorICBlY2hvIFN1Y2Nlc3M6IEJ1aWx0IGFuZCB0ZXN0ZWQgd29sZlNTTCAlTVNCVUlMRF9DT05GSUclXnwlTVNCVUlMRF9QTEFURk9STSUuCisgIGVjaG8uCisgIGVjaG8uCisgIHJlbSBUaGlzIGlzIG5lY2Vzc2FyeSB0byBleHBvcnQgb3VyIGxvY2FsIHZhcmlhYmxlcyBiYWNrIHRvIHRoZSBjYWxsZXIuCisgIGVuZGxvY2FsICYgc2V0IFNVQ0NFU1NGVUxfQlVJTERTPSIlTVNCVUlMRF9DT05GSUclfCVNU0JVSUxEX1BMQVRGT1JNJSIgXgorICAgICVTVUNDRVNTRlVMX0JVSUxEUyUKKyAgZXhpdCAvYiAwCisKKzpzeW50YXgKKyAgcmVtIERpc3BsYXkgdGhlIGhlbHAKKyAgZWNoby4KKyAgZWNobyBVc2FnZTogYnVpbGQtd29sZnNzbCBePGNvbXBpbGVyXj4gXjxwbGF0Zm9ybV4+IFtjb25maWd1cmF0aW9uXSBbZGlyZWN0b3J5XQorICBlY2hvLgorICBlY2hvIENvbXBpbGVyOgorICBlY2hvLgorICBlY2hvIHZjMTAgICAgICAtIFVzZSBWaXN1YWwgU3R1ZGlvIDIwMTAKKyAgZWNobyB2YzExICAgICAgLSBVc2UgVmlzdWFsIFN0dWRpbyAyMDEyCisgIGVjaG8gdmMxMiAgICAgIC0gVXNlIFZpc3VhbCBTdHVkaW8gMjAxMworICBlY2hvIHZjMTQgICAgICAtIFVzZSBWaXN1YWwgU3R1ZGlvIDIwMTUKKyAgZWNoby4KKyAgZWNobyBQbGF0Zm9ybToKKyAgZWNoby4KKyAgZWNobyB4ODYgICAgICAgLSBQZXJmb3JtIGEgMzItYml0IGJ1aWxkCisgIGVjaG8geDY0ICAgICAgIC0gUGVyZm9ybSBhIDY0LWJpdCBidWlsZAorICBlY2hvLgorICBlY2hvIENvbmZpZ3VyYXRpb246CisgIGVjaG8uCisgIGVjaG8gZGVidWcgICAgIC0gUGVyZm9ybSBhIGRlYnVnIGJ1aWxkCisgIGVjaG8gcmVsZWFzZSAgIC0gUGVyZm9ybSBhIHJlbGVhc2UgYnVpbGQKKyAgZWNoby4KKyAgZWNobyBPdGhlcjoKKyAgZWNoby4KKyAgZWNobyBkaXJlY3RvcnkgLSBTcGVjaWZpZXMgdGhlIHdvbGZTU0wgc291cmNlIGRpcmVjdG9yeQorICBnb3RvIGVycm9yCisKKzp1bmtub3duCisgIGVjaG8uCisgIGVjaG8gRXJyb3I6IFVua25vd24gYXJndW1lbnQgJyUxJworICBnb3RvIGVycm9yCisKKzpub2RvcworICBlY2hvLgorICBlY2hvIEVycm9yOiBPbmx5IGEgV2luZG93cyBOVCBiYXNlZCBPcGVyYXRpbmcgU3lzdGVtIGlzIHN1cHBvcnRlZAorICBnb3RvIGVycm9yCisKKzpub3BmCisgIGVjaG8uCisgIGVjaG8gRXJyb3I6IENhbm5vdCBvYnRhaW4gdGhlIGRpcmVjdG9yeSBmb3IgUHJvZ3JhbSBGaWxlcworICBnb3RvIGVycm9yCisKKzpub3ZjCisgIGVjaG8uCisgIGVjaG8gRXJyb3I6ICVWQ19ERVNDJSBpcyBub3QgaW5zdGFsbGVkCisgIGdvdG8gZXJyb3IKKworOm5veDY0CisgIGVjaG8uCisgIGVjaG8gRXJyb3I6ICVWQ19ERVNDJSBkb2VzIG5vdCBzdXBwb3J0IDY0LWJpdCBidWlsZHMKKyAgZ290byBlcnJvcgorCis6bm93b2xmc3NsCisgIGVjaG8uCisgIGVjaG8gRXJyb3I6IENhbm5vdCBsb2NhdGUgd29sZlNTTCBzb3VyY2UgZGlyZWN0b3J5LCBleHBlY3RlZCAiJVNUQVJUX0RJUiUiCisgIGdvdG8gZXJyb3IKKworOmVycm9yCisgIGlmICIlT1MlIiA9PSAiV2luZG93c19OVCIgZW5kbG9jYWwKKyAgZXhpdCAvQiAxCisKKzpzdWNjZXNzCisgIGlmIGRlZmluZWQgU1VDQ0VTU0ZVTF9CVUlMRFMgKAorICAgIGVjaG8uCisgICAgZWNoby4KKyAgICBlY2hvIEJ1aWxkIGNvbXBsZXRlLgorICAgIGVjaG8uCisgICAgZWNobyBUaGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zIHdlcmUgYnVpbHQgYW5kIHRlc3RlZCBzdWNjZXNzZnVsbHk6CisgICAgZWNoby4KKyAgICBlY2hvICVTVUNDRVNTRlVMX0JVSUxEUyUKKyAgICBlY2hvLgorICApCisgIGNkICVTQVZFRF9QQVRIJQorICBlbmRsb2NhbAorICBleGl0IC9CIDAKZGlmZiAtLWdpdCBhL3Byb2plY3RzL2NoZWNrc3JjLmJhdCBiL3Byb2plY3RzL2NoZWNrc3JjLmJhdAppbmRleCA4YTJmNjNhLi41YzgzYWFiIDEwMDY0NAotLS0gYS9wcm9qZWN0cy9jaGVja3NyYy5iYXQKKysrIGIvcHJvamVjdHMvY2hlY2tzcmMuYmF0CkBAIC02LDExICs2LDExIEBACiByZW0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogcmVtICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiByZW0gKgotcmVtICogQ29weXJpZ2h0IChDKSAyMDE0IC0gMjAxNSwgU3RldmUgSG9sbWUsIDxzdGV2ZV9ob2xtZUBob3RtYWlsLmNvbT4uCityZW0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgLSAyMDE2LCBTdGV2ZSBIb2xtZSwgPHN0ZXZlX2hvbG1lQGhvdG1haWwuY29tPi4KIHJlbSAqCiByZW0gKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogcmVtICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotcmVtICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KK3JlbSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogcmVtICoKIHJlbSAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogcmVtICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yNCw0NCArMjQsMTUxIEBACiA6YmVnaW4KICAgcmVtIENoZWNrIHdlIGFyZSBydW5uaW5nIG9uIGEgV2luZG93cyBOVCBkZXJpdmVkIE9TCiAgIGlmIG5vdCAiJU9TJSIgPT0gIldpbmRvd3NfTlQiIGdvdG8gbm9kb3MKLSAgc2V0bG9jYWwKIAotICByZW0gRGlzcGxheSB0aGUgaGVscAotICBpZiAvaSAiJX4xIiA9PSAiLT8iIGdvdG8gc3ludGF4Ci0gIGlmIC9pICIlfjEiID09ICItaCIgZ290byBzeW50YXgKLSAgaWYgL2kgIiV+MSIgPT0gIi1oZWxwIiBnb3RvIHN5bnRheAorICByZW0gU2V0IG91ciB2YXJpYWJsZXMKKyAgc2V0bG9jYWwKKyAgc2V0IENIRUNLX0xJQj1UUlVFCisgIHNldCBDSEVDS19TUkM9VFJVRQorICBzZXQgQ0hFQ0tfVEVTVFM9VFJVRQorICBzZXQgQ0hFQ0tfRVhBTVBMRVM9VFJVRQorCis6cGFyc2VBcmdzCisgIGlmICIlfjEiID09ICIiIGdvdG8gcHJlcmVxdWlzaXRlcworCisgIGlmIC9pICIlfjEiID09ICItPyIgKAorICAgIGdvdG8gc3ludGF4CisgICkgZWxzZSBpZiAvaSAiJX4xIiA9PSAiLWgiICgKKyAgICBnb3RvIHN5bnRheAorICApIGVsc2UgaWYgL2kgIiV+MSIgPT0gIi1oZWxwIiAoCisgICAgZ290byBzeW50YXgKKyAgKSBlbHNlIGlmIC9pICIlfjEiID09ICJsaWIiICgKKyAgICBzZXQgQ0hFQ0tfTElCPVRSVUUKKyAgICBzZXQgQ0hFQ0tfU1JDPUZBTFNFCisgICAgc2V0IENIRUNLX1RFU1RTPUZBTFNFCisgICAgc2V0IENIRUNLX0VYQU1QTEVTPUZBTFNFCisgICkgZWxzZSBpZiAvaSAiJX4xIiA9PSAic3JjIiAoCisgICAgc2V0IENIRUNLX0xJQj1GQUxTRQorICAgIHNldCBDSEVDS19TUkM9VFJVRQorICAgIHNldCBDSEVDS19URVNUUz1GQUxTRQorICAgIHNldCBDSEVDS19FWEFNUExFUz1GQUxTRQorICApIGVsc2UgaWYgL2kgIiV+MSIgPT0gInRlc3RzIiAoCisgICAgc2V0IENIRUNLX0xJQj1GQUxTRQorICAgIHNldCBDSEVDS19TUkM9RkFMU0UKKyAgICBzZXQgQ0hFQ0tfVEVTVFM9VFJVRQorICAgIHNldCBDSEVDS19FWEFNUExFUz1GQUxTRQorICApIGVsc2UgaWYgL2kgIiV+MSIgPT0gImV4YW1wbGVzIiAoCisgICAgc2V0IENIRUNLX0xJQj1GQUxTRQorICAgIHNldCBDSEVDS19TUkM9RkFMU0UKKyAgICBzZXQgQ0hFQ0tfVEVTVFM9RkFMU0UKKyAgICBzZXQgQ0hFQ0tfRVhBTVBMRVM9VFJVRQorICApIGVsc2UgKAorICAgIGlmIG5vdCBkZWZpbmVkIFNSQ19ESVIgKAorICAgICAgc2V0IFNSQ19ESVI9JX4xJQorICAgICkgZWxzZSAoCisgICAgICBnb3RvIHVua25vd24KKyAgICApCisgICkKKworICBzaGlmdCAmIGdvdG8gcGFyc2VBcmdzCiAKIDpwcmVyZXF1aXNpdGVzCi0gIHJlbSBDaGVjayB3ZSBoYXZlIFBlcmwgaW5zdGFsbGVkCisgIHJlbSBDaGVjayB3ZSBoYXZlIFBlcmwgaW4gb3VyIHBhdGgKICAgZWNobyAlUEFUSCUgfCBmaW5kc3RyIC9JIC9DOiJcUGVybCIgMT5udWwKICAgaWYgZXJyb3JsZXZlbCAxICgKLSAgICBpZiBub3QgZXhpc3QgIiVTeXN0ZW1Ecml2ZSVcUGVybCIgKAotICAgICAgaWYgbm90IGV4aXN0ICIlU3lzdGVtRHJpdmUlXFBlcmw2NCIgZ290byBub3BlcmwKKyAgICByZW0gSXQgaXNuJ3Qgc28gY2hlY2sgd2UgaGF2ZSBpdCBpbnN0YWxsZWQgYW5kIHNldCB0aGUgcGF0aCBpZiBpdCBpcworICAgIGlmIGV4aXN0ICIlU3lzdGVtRHJpdmUlXFBlcmwiICgKKyAgICAgIHNldCAiUEFUSD0lU3lzdGVtRHJpdmUlXFBlcmxcYmluOyVQQVRIJSIKKyAgICApIGVsc2UgKAorICAgICAgaWYgZXhpc3QgIiVTeXN0ZW1Ecml2ZSVcUGVybDY0IiAoCisgICAgICAgIHNldCAiUEFUSD0lU3lzdGVtRHJpdmUlXFBlcmw2NFxiaW47JVBBVEglIgorICAgICAgKSBlbHNlICgKKyAgICAgICAgZ290byBub3BlcmwKKyAgICAgICkKICAgICApCiAgICkKIAogOmNvbmZpZ3VyZQotICBpZiAiJTEiID09ICIiIHNldCBTUkNfRElSPS4uCi0gIGlmIG5vdCAiJTEiID09ICIiIHNldCBTUkNfRElSPSV+MSUKKyAgaWYgIiVTUkNfRElSJSIgPT0gIiIgc2V0IFNSQ19ESVI9Li4KICAgaWYgbm90IGV4aXN0ICIlU1JDX0RJUiUiIGdvdG8gbm9zcmMKIAogOnN0YXJ0Ci0gIGZvciAvZiAiZGVsaW1zPSIgJSVpIGluICgnZGlyICIlU1JDX0RJUiVcc3JjXCouYy4qIiAvYicpIGRvIEBwZXJsICIlU1JDX0RJUiVcbGliXGNoZWNrc3JjLnBsIiAiLUQlU1JDX0RJUiVcc3JjIiAtV3Rvb2xfaHVnZWhlbHAuYyAiJSVpIgotICBmb3IgL2YgImRlbGltcz0iICUlaSBpbiAoJ2RpciAiJVNSQ19ESVIlXHNyY1wqLmguKiIgL2InKSBkbyBAcGVybCAiJVNSQ19ESVIlXGxpYlxjaGVja3NyYy5wbCIgIi1EJVNSQ19ESVIlXHNyYyIgIiUlaSIKLSAgZm9yIC9mICJkZWxpbXM9IiAlJWkgaW4gKCdkaXIgIiVTUkNfRElSJVxsaWJcKi5jLioiIC9iJykgZG8gQHBlcmwgIiVTUkNfRElSJVxsaWJcY2hlY2tzcmMucGwiICItRCVTUkNfRElSJVxsaWIiICIlJWkiCi0gIGZvciAvZiAiZGVsaW1zPSIgJSVpIGluICgnZGlyICIlU1JDX0RJUiVcbGliXCouaC4qIiAvYicpIGRvIEBwZXJsICIlU1JDX0RJUiVcbGliXGNoZWNrc3JjLnBsIiAiLUQlU1JDX0RJUiVcbGliIiAtV2N1cmxfY29uZmlnLmguY21ha2UgIiUlaSIKLSAgZm9yIC9mICJkZWxpbXM9IiAlJWkgaW4gKCdkaXIgIiVTUkNfRElSJVxsaWJcdnRsc1wqLmMuKiIgL2InKSBkbyBAcGVybCAiJVNSQ19ESVIlXGxpYlxjaGVja3NyYy5wbCIgIi1EJVNSQ19ESVIlXGxpYlx2dGxzIiAiJSVpIgotICBmb3IgL2YgImRlbGltcz0iICUlaSBpbiAoJ2RpciAiJVNSQ19ESVIlXGxpYlx2dGxzXCouaC4qIiAvYicpIGRvIEBwZXJsICIlU1JDX0RJUiVcbGliXGNoZWNrc3JjLnBsIiAiLUQlU1JDX0RJUiVcbGliXHZ0bHMiICIlJWkiCisgIGlmICIlQ0hFQ0tfU1JDJSIgPT0gIlRSVUUiICgKKyAgICByZW0gQ2hlY2sgdGhlIHNyYyBkaXJlY3RvcnkKKyAgICBpZiBleGlzdCAlU1JDX0RJUiVcc3JjICgKKyAgICAgIGZvciAvZiAiZGVsaW1zPSIgJSVpIGluICgnZGlyICIlU1JDX0RJUiVcc3JjXCouYy4qIiAvYiAyXj5OVUwnKSBkbyBAcGVybCAiJVNSQ19ESVIlXGxpYlxjaGVja3NyYy5wbCIgIi1EJVNSQ19ESVIlXHNyYyIgLVd0b29sX2h1Z2VoZWxwLmMgIiUlaSIKKyAgICAgIGZvciAvZiAiZGVsaW1zPSIgJSVpIGluICgnZGlyICIlU1JDX0RJUiVcc3JjXCouaC4qIiAvYiAyXj5OVUwnKSBkbyBAcGVybCAiJVNSQ19ESVIlXGxpYlxjaGVja3NyYy5wbCIgIi1EJVNSQ19ESVIlXHNyYyIgIiUlaSIKKyAgICApCisgICkKKworICBpZiAiJUNIRUNLX0xJQiUiID09ICJUUlVFIiAoCisgICAgcmVtIENoZWNrIHRoZSBsaWIgZGlyZWN0b3J5CisgICAgaWYgZXhpc3QgJVNSQ19ESVIlXGxpYiAoCisgICAgICBmb3IgL2YgImRlbGltcz0iICUlaSBpbiAoJ2RpciAiJVNSQ19ESVIlXGxpYlwqLmMuKiIgL2IgMl4+TlVMJykgZG8gQHBlcmwgIiVTUkNfRElSJVxsaWJcY2hlY2tzcmMucGwiICItRCVTUkNfRElSJVxsaWIiICIlJWkiCisgICAgICBmb3IgL2YgImRlbGltcz0iICUlaSBpbiAoJ2RpciAiJVNSQ19ESVIlXGxpYlwqLmguKiIgL2IgMl4+TlVMJykgZG8gQHBlcmwgIiVTUkNfRElSJVxsaWJcY2hlY2tzcmMucGwiICItRCVTUkNfRElSJVxsaWIiIC1XY3VybF9jb25maWcuaC5jbWFrZSAiJSVpIgorICAgICkKKworICAgIHJlbSBDaGVjayB0aGUgbGliXHZhdXRoIGRpcmVjdG9yeQorICAgIGlmIGV4aXN0ICVTUkNfRElSJVxsaWJcdmF1dGggKAorICAgICAgZm9yIC9mICJkZWxpbXM9IiAlJWkgaW4gKCdkaXIgIiVTUkNfRElSJVxsaWJcdmF1dGhcKi5jLioiIC9iIDJePk5VTCcpIGRvIEBwZXJsICIlU1JDX0RJUiVcbGliXGNoZWNrc3JjLnBsIiAiLUQlU1JDX0RJUiVcbGliXHZhdXRoIiAiJSVpIgorICAgICAgZm9yIC9mICJkZWxpbXM9IiAlJWkgaW4gKCdkaXIgIiVTUkNfRElSJVxsaWJcdmF1dGhcKi5oLioiIC9iIDJePk5VTCcpIGRvIEBwZXJsICIlU1JDX0RJUiVcbGliXGNoZWNrc3JjLnBsIiAiLUQlU1JDX0RJUiVcbGliXHZhdXRoIiAiJSVpIgorICAgICkKKworICAgIHJlbSBDaGVjayB0aGUgbGliXHZ0bHMgZGlyZWN0b3J5CisgICAgaWYgZXhpc3QgJVNSQ19ESVIlXGxpYlx2dGxzICgKKyAgICAgIGZvciAvZiAiZGVsaW1zPSIgJSVpIGluICgnZGlyICIlU1JDX0RJUiVcbGliXHZ0bHNcKi5jLioiIC9iIDJePk5VTCcpIGRvIEBwZXJsICIlU1JDX0RJUiVcbGliXGNoZWNrc3JjLnBsIiAiLUQlU1JDX0RJUiVcbGliXHZ0bHMiICIlJWkiCisgICAgICBmb3IgL2YgImRlbGltcz0iICUlaSBpbiAoJ2RpciAiJVNSQ19ESVIlXGxpYlx2dGxzXCouaC4qIiAvYiAyXj5OVUwnKSBkbyBAcGVybCAiJVNSQ19ESVIlXGxpYlxjaGVja3NyYy5wbCIgIi1EJVNSQ19ESVIlXGxpYlx2dGxzIiAiJSVpIgorICAgICkKKyAgKQorCisgIGlmICIlQ0hFQ0tfVEVTVFMlIiA9PSAiVFJVRSIgKAorICAgIHJlbSBDaGVjayB0aGUgdGVzdHNcbGlidGVzdCBkaXJlY3RvcnkKKyAgICBpZiBleGlzdCAlU1JDX0RJUiVcdGVzdHNcbGlidGVzdCAoCisgICAgICBmb3IgL2YgImRlbGltcz0iICUlaSBpbiAoJ2RpciAiJVNSQ19ESVIlXHRlc3RzXGxpYnRlc3RcKi5jLioiIC9iIDJePk5VTCcpIGRvIEBwZXJsICIlU1JDX0RJUiVcbGliXGNoZWNrc3JjLnBsIiAiLUQlU1JDX0RJUiVcdGVzdHNcbGlidGVzdCIgIiUlaSIKKyAgICAgIGZvciAvZiAiZGVsaW1zPSIgJSVpIGluICgnZGlyICIlU1JDX0RJUiVcdGVzdHNcbGlidGVzdFwqLmguKiIgL2IgMl4+TlVMJykgZG8gQHBlcmwgIiVTUkNfRElSJVxsaWJcY2hlY2tzcmMucGwiICItRCVTUkNfRElSJVx0ZXN0c1xsaWJ0ZXN0IiAiJSVpIgorICAgICkKKworICAgIHJlbSBDaGVjayB0aGUgdGVzdHNcdW5pdCBkaXJlY3RvcnkKKyAgICBpZiBleGlzdCAlU1JDX0RJUiVcdGVzdHNcdW5pdCAoCisgICAgICBmb3IgL2YgImRlbGltcz0iICUlaSBpbiAoJ2RpciAiJVNSQ19ESVIlXHRlc3RzXHVuaXRcKi5jLioiIC9iIDJePk5VTCcpIGRvIEBwZXJsICIlU1JDX0RJUiVcbGliXGNoZWNrc3JjLnBsIiAiLUQlU1JDX0RJUiVcdGVzdHNcdW5pdCIgIiUlaSIKKyAgICAgIGZvciAvZiAiZGVsaW1zPSIgJSVpIGluICgnZGlyICIlU1JDX0RJUiVcdGVzdHNcdW5pdFwqLmguKiIgL2IgMl4+TlVMJykgZG8gQHBlcmwgIiVTUkNfRElSJVxsaWJcY2hlY2tzcmMucGwiICItRCVTUkNfRElSJVx0ZXN0c1x1bml0IiAiJSVpIgorICAgICkKKworICAgIHJlbSBDaGVjayB0aGUgdGVzdHNcc2VydmVyIGRpcmVjdG9yeQorICAgIGlmIGV4aXN0ICVTUkNfRElSJVx0ZXN0c1xzZXJ2ZXIgKAorICAgICAgZm9yIC9mICJkZWxpbXM9IiAlJWkgaW4gKCdkaXIgIiVTUkNfRElSJVx0ZXN0c1xzZXJ2ZXJcKi5jLioiIC9iIDJePk5VTCcpIGRvIEBwZXJsICIlU1JDX0RJUiVcbGliXGNoZWNrc3JjLnBsIiAiLUQlU1JDX0RJUiVcdGVzdHNcc2VydmVyIiAiJSVpIgorICAgICAgZm9yIC9mICJkZWxpbXM9IiAlJWkgaW4gKCdkaXIgIiVTUkNfRElSJVx0ZXN0c1xzZXJ2ZXJcKi5oLioiIC9iIDJePk5VTCcpIGRvIEBwZXJsICIlU1JDX0RJUiVcbGliXGNoZWNrc3JjLnBsIiAiLUQlU1JDX0RJUiVcdGVzdHNcc2VydmVyIiAiJSVpIgorICAgICkKKyAgKQorCisgIGlmICIlQ0hFQ0tfRVhBTVBMRVMlIiA9PSAiVFJVRSIgKAorICAgIHJlbSBDaGVjayB0aGUgZG9jc1xleGFtcGxlcyBkaXJlY3RvcnkKKyAgICBpZiBleGlzdCAlU1JDX0RJUiVcZG9jc1xleGFtcGxlcyAoCisgICAgICBmb3IgL2YgImRlbGltcz0iICUlaSBpbiAoJ2RpciAiJVNSQ19ESVIlXGRvY3NcZXhhbXBsZXNcKi5jLioiIC9iIDJePk5VTCcpIGRvIEBwZXJsICIlU1JDX0RJUiVcbGliXGNoZWNrc3JjLnBsIiAiLUQlU1JDX0RJUiVcZG9jc1xleGFtcGxlcyIgIiUlaSIKKyAgICApCisgICkKKwogICBnb3RvIHN1Y2Nlc3MKIAogOnN5bnRheAogICByZW0gRGlzcGxheSB0aGUgaGVscAogICBlY2hvLgotICBlY2hvIFVzYWdlOiBjaGVja3NyYyBbZGlyZWN0b3J5XQorICBlY2hvIFVzYWdlOiBjaGVja3NyYyBbd2hhdF0gW2RpcmVjdG9yeV0KKyAgZWNoby4KKyAgZWNobyBXaGF0IHRvIHNjYW46CisgIGVjaG8uCisgIGVjaG8gbGliICAgICAgIC0gU2NhbiB0aGUgbGliY3VybCBzb3VyY2UKKyAgZWNobyBzcmMgICAgICAgLSBTY2FuIHRoZSBjb21tYW5kLWxpbmUgdG9vbCBzb3VyY2UKKyAgZWNobyB0ZXN0cyAgICAgLSBTY2FuIHRoZSBsaWJyYXJ5IHRlc3RzIGFuZCB1bml0IHRlc3RzCisgIGVjaG8gZXhhbXBsZXMgIC0gU2NhbiB0aGUgZXhhbXBsZXMKICAgZWNoby4KICAgZWNobyBkaXJlY3RvcnkgLSBTcGVjaWZpZXMgdGhlIGN1cmwgc291cmNlIGRpcmVjdG9yeQogICBnb3RvIHN1Y2Nlc3MKIAorOnVua25vd24KKyAgZWNoby4KKyAgZWNobyBFcnJvcjogVW5rbm93biBhcmd1bWVudCAnJTEnCisgIGdvdG8gZXJyb3IKKwogOm5vZG9zCiAgIGVjaG8uCiAgIGVjaG8gRXJyb3I6IE9ubHkgYSBXaW5kb3dzIE5UIGJhc2VkIE9wZXJhdGluZyBTeXN0ZW0gaXMgc3VwcG9ydGVkCmRpZmYgLS1naXQgYS9wcm9qZWN0cy9nZW5lcmF0ZS5iYXQgYi9wcm9qZWN0cy9nZW5lcmF0ZS5iYXQKaW5kZXggMmFhMDRkZS4uODIwOWE1ZCAxMDA2NDQKLS0tIGEvcHJvamVjdHMvZ2VuZXJhdGUuYmF0CisrKyBiL3Byb2plY3RzL2dlbmVyYXRlLmJhdApAQCAtMTAsNyArMTAsNyBAQAogcmVtICoKIHJlbSAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiByZW0gKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi1yZW0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorcmVtICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiByZW0gKgogcmVtICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiByZW0gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTIxLDQ5ICsyMSwzMCBAQAogcmVtICoKIHJlbSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIAotcmVtIE5PVEVTCi1yZW0KLXJlbSBEbyBub3Qgc2V0ICVFUlJPUkxFVkVMJSB0byBhbnl0aGluZy4gJUVSUk9STEVWRUwlIGlzIGEgc3BlY2lhbCB2YXJpYWJsZQotcmVtIHRoYXQgb25seSBjb250YWlucyBlcnJvcmxldmVsIHdoZW4gJUVSUk9STEVWRUwlIGlzIG5vdCBzZXQuIFNhbWUgZm9yICVDRCUuCi1yZW0gaHR0cDovL2Jsb2dzLm1zZG4uY29tL2Ivb2xkbmV3dGhpbmcvYXJjaGl2ZS8yMDA4LzA5LzI2Lzg5NjU3NTUuYXNweAotcmVtIElmIHlvdSBuZWVkIHRvIHNldCB0aGUgZXJyb3JsZXZlbCBkbyB0aGlzIGluc3RlYWQ6IENBTEwgOnNldGVyciBbI10KLQogOmJlZ2luCiAgIHJlbSBDaGVjayB3ZSBhcmUgcnVubmluZyBvbiBhIFdpbmRvd3MgTlQgZGVyaXZlZCBPUwogICBpZiBub3QgIiVPUyUiID09ICJXaW5kb3dzX05UIiBnb3RvIG5vZG9zCiAKKyAgcmVtIFNldCBvdXIgdmFyaWFibGVzCisgIHNldGxvY2FsIEVOQUJMRUVYVEVOU0lPTlMKKyAgc2V0IFZFUlNJT049QUxMCisgIHNldCBNT0RFPUdFTkVSQVRFCisKICAgcmVtIENoZWNrIHdlIGFyZSBub3QgcnVubmluZyBvbiBhIG5ldHdvcmsgZHJpdmUKICAgaWYgIiV+ZDAuIj09IlxcLiIgZ290byBub25ldGRydgogCiAgIHJlbSBTd2l0Y2ggdG8gdGhpcyBiYXRjaCBmaWxlJ3MgZGlyZWN0b3J5CiAgIGNkIC9kICIlfjBcLi4iIDE+TlVMIDI+JjEKIAotICByZW0gU2V0IG91ciB2YXJpYWJsZXMKLSAgc2V0bG9jYWwgRU5BQkxFRVhURU5TSU9OUwotICBzZXQgVkVSU0lPTj1BTEwKLSAgc2V0IE1PREU9R0VORVJBVEUKLQotICByZW0gRGV0ZWN0IHByb2dyYW1zLiBIQVZFXzxQUk9HTkFNRT4KLSAgcmVtIFdoZW4gbm90IGZvdW5kIHRoZSB2YXJpYWJsZSBpcyBzZXQgdW5kZWZpbmVkLiBUaGUgdW5kZWZpbmVkIHBhdHRlcm4KLSAgcmVtIGFsbG93cyBmb3Igc3RhdGVtZW50cyBsaWtlICJpZiBub3QgZGVmaW5lZCBIQVZFX1BFUkwgKGNvbW1hbmQpIgotICBncm9mZiAtLXZlcnNpb24gPE5VTCAxPk5VTCAyPiYxCi0gIGlmICVFUlJPUkxFVkVMJSBFUVUgMCAoc2V0IEhBVkVfR1JPRkY9WSkgZWxzZSAoc2V0IEhBVkVfR1JPRkY9KQotICBucm9mZiAtLXZlcnNpb24gPE5VTCAxPk5VTCAyPiYxCi0gIGlmICVFUlJPUkxFVkVMJSBFUVUgMCAoc2V0IEhBVkVfTlJPRkY9WSkgZWxzZSAoc2V0IEhBVkVfTlJPRkY9KQotICBwZXJsIC0tdmVyc2lvbiA8TlVMIDE+TlVMIDI+JjEKLSAgaWYgJUVSUk9STEVWRUwlIEVRVSAwIChzZXQgSEFWRV9QRVJMPVkpIGVsc2UgKHNldCBIQVZFX1BFUkw9KQotICBnemlwIC0tdmVyc2lvbiA8TlVMIDE+TlVMIDI+JjEKLSAgaWYgJUVSUk9STEVWRUwlIEVRVSAwIChzZXQgSEFWRV9HWklQPVkpIGVsc2UgKHNldCBIQVZFX0daSVA9KQotCi0gIHJlbSBEaXNwbGF5IHRoZSBoZWxwCi0gIGlmIC9pICIlfjEiID09ICItPyIgZ290byBzeW50YXgKLSAgaWYgL2kgIiV+MSIgPT0gIi1oIiBnb3RvIHN5bnRheAotICBpZiAvaSAiJX4xIiA9PSAiLWhlbHAiIGdvdG8gc3ludGF4CisgIHJlbSBDaGVjayB3ZSBhcmUgcnVubmluZyBmcm9tIGEgY3VybCBnaXQgcmVwb3NpdG9yeQorICBpZiBub3QgZXhpc3QgLi5cR0lULUlORk8gZ290byBub3JlcG8KIAogOnBhcnNlQXJncwogICBpZiAiJX4xIiA9PSAiIiBnb3RvIHN0YXJ0CiAKLSAgaWYgL2kgIiV+MSIgPT0gInZjNiIgKAorICBpZiAvaSAiJX4xIiA9PSAicHJlIiAoCisgICAgc2V0IFZFUlNJT049UFJFCisgICkgZWxzZSBpZiAvaSAiJX4xIiA9PSAidmM2IiAoCiAgICAgc2V0IFZFUlNJT049VkM2CiAgICkgZWxzZSBpZiAvaSAiJX4xIiA9PSAidmM3IiAoCiAgICAgc2V0IFZFUlNJT049VkM3CkBAIC03OSwyNyArNjAsMzMgQEAKICAgICBzZXQgVkVSU0lPTj1WQzExCiAgICkgZWxzZSBpZiAvaSAiJX4xIiA9PSAidmMxMiIgKAogICAgIHNldCBWRVJTSU9OPVZDMTIKKyAgKSBlbHNlIGlmIC9pICIlfjEiID09ICJ2YzE0IiAoCisgICAgc2V0IFZFUlNJT049VkMxNAogICApIGVsc2UgaWYgL2kgIiV+MSIgPT0gIi1jbGVhbiIgKAogICAgIHNldCBNT0RFPUNMRUFOCisgICkgZWxzZSBpZiAvaSAiJX4xIiA9PSAiLT8iICgKKyAgICBnb3RvIHN5bnRheAorICApIGVsc2UgaWYgL2kgIiV+MSIgPT0gIi1oIiAoCisgICAgZ290byBzeW50YXgKKyAgKSBlbHNlIGlmIC9pICIlfjEiID09ICItaGVscCIgKAorICAgIGdvdG8gc3ludGF4CiAgICkgZWxzZSAoCiAgICAgZ290byB1bmtub3duCiAgICkKKwogICBzaGlmdCAmIGdvdG8gcGFyc2VBcmdzCiAgCiA6c3RhcnQKLSAgaWYgIiVNT0RFJSIgPT0gIkdFTkVSQVRFIiAoCi0gICAgZWNoby4KLSAgICBlY2hvIEdlbmVyYXRpbmcgcHJlcmVxdWlzaXRlIGZpbGVzCi0gICAgQ0FMTCA6Z2VuX2N1cmxidWlsZAotICAgIGlmIGVycm9ybGV2ZWwgMSBnb3RvIGVycm9yCi0gICAgQ0FMTCA6Z2VuX2h1Z2VoZWxwCi0gICAgaWYgZXJyb3JsZXZlbCAxIGdvdG8gZXJyb3IKLSAgKSBlbHNlICgKLSAgICBlY2hvLgotICAgIGVjaG8gUmVtb3ZpbmcgcHJlcmVxdWlzaXRlIGZpbGVzCi0gICAgY2FsbCA6Y2xlYW4gLi5caW5jbHVkZVxjdXJsXGN1cmxidWlsZC5oCi0gICAgY2FsbCA6Y2xlYW4gLi5cc3JjXHRvb2xfaHVnZWhlbHAuYworICBpZiBleGlzdCAuLlxidWlsZGNvbmYuYmF0ICgKKyAgICBpZiAiJU1PREUlIiA9PSAiR0VORVJBVEUiICgKKyAgICAgIGNhbGwgLi5cYnVpbGRjb25mCisgICAgKSBlbHNlIGlmICIlVkVSU0lPTiUiID09ICJQUkUiICgKKyAgICAgIGNhbGwgLi5cYnVpbGRjb25mIC1jbGVhbgorICAgICkgZWxzZSBpZiAiJVZFUlNJT04lIiA9PSAiQUxMIiAoCisgICAgICBjYWxsIC4uXGJ1aWxkY29uZiAtY2xlYW4KKyAgICApCiAgICkKKyAgaWYgIiVWRVJTSU9OJSIgPT0gIlBSRSIgZ290byBzdWNjZXNzCiAgIGlmICIlVkVSU0lPTiUiID09ICJWQzYiIGdvdG8gdmM2CiAgIGlmICIlVkVSU0lPTiUiID09ICJWQzciIGdvdG8gdmM3CiAgIGlmICIlVkVSU0lPTiUiID09ICJWQzcuMSIgZ290byB2YzcxCkBAIC0xMDgsMTcgKzk1LDE4IEBACiAgIGlmICIlVkVSU0lPTiUiID09ICJWQzEwIiBnb3RvIHZjMTAKICAgaWYgIiVWRVJTSU9OJSIgPT0gIlZDMTEiIGdvdG8gdmMxMQogICBpZiAiJVZFUlNJT04lIiA9PSAiVkMxMiIgZ290byB2YzEyCisgIGlmICIlVkVSU0lPTiUiID09ICJWQzE0IiBnb3RvIHZjMTQKIAogOnZjNgogICBlY2hvLgogCiAgIGlmICIlTU9ERSUiID09ICJHRU5FUkFURSIgKAogICAgIGVjaG8gR2VuZXJhdGluZyBWQzYgcHJvamVjdCBmaWxlcwotICAgIGNhbGwgOmdlbmVyYXRlIGRzcCBXaW5kb3dzXFZDNlxzcmNcY3VybHNyYy50bXBsIFdpbmRvd3NcVkM2XHNyY1xjdXJsc3JjLmRzcAorICAgIGNhbGwgOmdlbmVyYXRlIGRzcCBXaW5kb3dzXFZDNlxzcmNcY3VybC50bXBsIFdpbmRvd3NcVkM2XHNyY1xjdXJsLmRzcAogICAgIGNhbGwgOmdlbmVyYXRlIGRzcCBXaW5kb3dzXFZDNlxsaWJcbGliY3VybC50bXBsIFdpbmRvd3NcVkM2XGxpYlxsaWJjdXJsLmRzcAogICApIGVsc2UgKAogICAgIGVjaG8gUmVtb3ZpbmcgVkM2IHByb2plY3QgZmlsZXMKLSAgICBjYWxsIDpjbGVhbiBXaW5kb3dzXFZDNlxzcmNcY3VybHNyYy5kc3AKKyAgICBjYWxsIDpjbGVhbiBXaW5kb3dzXFZDNlxzcmNcY3VybC5kc3AKICAgICBjYWxsIDpjbGVhbiBXaW5kb3dzXFZDNlxsaWJcbGliY3VybC5kc3AKICAgKQogCkBAIC0xMjksMTEgKzExNywxMSBAQAogCiAgIGlmICIlTU9ERSUiID09ICJHRU5FUkFURSIgKAogICAgIGVjaG8gR2VuZXJhdGluZyBWQzcgcHJvamVjdCBmaWxlcwotICAgIGNhbGwgOmdlbmVyYXRlIHZjcHJvajEgV2luZG93c1xWQzdcc3JjXGN1cmxzcmMudG1wbCBXaW5kb3dzXFZDN1xzcmNcY3VybHNyYy52Y3Byb2oKKyAgICBjYWxsIDpnZW5lcmF0ZSB2Y3Byb2oxIFdpbmRvd3NcVkM3XHNyY1xjdXJsLnRtcGwgV2luZG93c1xWQzdcc3JjXGN1cmwudmNwcm9qCiAgICAgY2FsbCA6Z2VuZXJhdGUgdmNwcm9qMSBXaW5kb3dzXFZDN1xsaWJcbGliY3VybC50bXBsIFdpbmRvd3NcVkM3XGxpYlxsaWJjdXJsLnZjcHJvagogICApIGVsc2UgKAogICAgIGVjaG8gUmVtb3ZpbmcgVkM3IHByb2plY3QgZmlsZXMKLSAgICBjYWxsIDpjbGVhbiBXaW5kb3dzXFZDN1xzcmNcY3VybHNyYy52Y3Byb2oKKyAgICBjYWxsIDpjbGVhbiBXaW5kb3dzXFZDN1xzcmNcY3VybC52Y3Byb2oKICAgICBjYWxsIDpjbGVhbiBXaW5kb3dzXFZDN1xsaWJcbGliY3VybC52Y3Byb2oKICAgKQogCkBAIC0xNDQsMTEgKzEzMiwxMSBAQAogCiAgIGlmICIlTU9ERSUiID09ICJHRU5FUkFURSIgKAogICAgIGVjaG8gR2VuZXJhdGluZyBWQzcuMSBwcm9qZWN0IGZpbGVzCi0gICAgY2FsbCA6Z2VuZXJhdGUgdmNwcm9qMSBXaW5kb3dzXFZDNy4xXHNyY1xjdXJsc3JjLnRtcGwgV2luZG93c1xWQzcuMVxzcmNcY3VybHNyYy52Y3Byb2oKKyAgICBjYWxsIDpnZW5lcmF0ZSB2Y3Byb2oxIFdpbmRvd3NcVkM3LjFcc3JjXGN1cmwudG1wbCBXaW5kb3dzXFZDNy4xXHNyY1xjdXJsLnZjcHJvagogICAgIGNhbGwgOmdlbmVyYXRlIHZjcHJvajEgV2luZG93c1xWQzcuMVxsaWJcbGliY3VybC50bXBsIFdpbmRvd3NcVkM3LjFcbGliXGxpYmN1cmwudmNwcm9qCiAgICkgZWxzZSAoCiAgICAgZWNobyBSZW1vdmluZyBWQzcuMSBwcm9qZWN0IGZpbGVzCi0gICAgY2FsbCA6Y2xlYW4gV2luZG93c1xWQzcuMVxzcmNcY3VybHNyYy52Y3Byb2oKKyAgICBjYWxsIDpjbGVhbiBXaW5kb3dzXFZDNy4xXHNyY1xjdXJsLnZjcHJvagogICAgIGNhbGwgOmNsZWFuIFdpbmRvd3NcVkM3LjFcbGliXGxpYmN1cmwudmNwcm9qCiAgICkKIApAQCAtMTU5LDExICsxNDcsMTEgQEAKIAogICBpZiAiJU1PREUlIiA9PSAiR0VORVJBVEUiICgKICAgICBlY2hvIEdlbmVyYXRpbmcgVkM4IHByb2plY3QgZmlsZXMKLSAgICBjYWxsIDpnZW5lcmF0ZSB2Y3Byb2oyIFdpbmRvd3NcVkM4XHNyY1xjdXJsc3JjLnRtcGwgV2luZG93c1xWQzhcc3JjXGN1cmxzcmMudmNwcm9qCisgICAgY2FsbCA6Z2VuZXJhdGUgdmNwcm9qMiBXaW5kb3dzXFZDOFxzcmNcY3VybC50bXBsIFdpbmRvd3NcVkM4XHNyY1xjdXJsLnZjcHJvagogICAgIGNhbGwgOmdlbmVyYXRlIHZjcHJvajIgV2luZG93c1xWQzhcbGliXGxpYmN1cmwudG1wbCBXaW5kb3dzXFZDOFxsaWJcbGliY3VybC52Y3Byb2oKICAgKSBlbHNlICgKICAgICBlY2hvIFJlbW92aW5nIFZDOCBwcm9qZWN0IGZpbGVzCi0gICAgY2FsbCA6Y2xlYW4gV2luZG93c1xWQzhcc3JjXGN1cmxzcmMudmNwcm9qCisgICAgY2FsbCA6Y2xlYW4gV2luZG93c1xWQzhcc3JjXGN1cmwudmNwcm9qCiAgICAgY2FsbCA6Y2xlYW4gV2luZG93c1xWQzhcbGliXGxpYmN1cmwudmNwcm9qCiAgICkKIApAQCAtMTc0LDExICsxNjIsMTEgQEAKIAogICBpZiAiJU1PREUlIiA9PSAiR0VORVJBVEUiICgKICAgICBlY2hvIEdlbmVyYXRpbmcgVkM5IHByb2plY3QgZmlsZXMKLSAgICBjYWxsIDpnZW5lcmF0ZSB2Y3Byb2oyIFdpbmRvd3NcVkM5XHNyY1xjdXJsc3JjLnRtcGwgV2luZG93c1xWQzlcc3JjXGN1cmxzcmMudmNwcm9qCisgICAgY2FsbCA6Z2VuZXJhdGUgdmNwcm9qMiBXaW5kb3dzXFZDOVxzcmNcY3VybC50bXBsIFdpbmRvd3NcVkM5XHNyY1xjdXJsLnZjcHJvagogICAgIGNhbGwgOmdlbmVyYXRlIHZjcHJvajIgV2luZG93c1xWQzlcbGliXGxpYmN1cmwudG1wbCBXaW5kb3dzXFZDOVxsaWJcbGliY3VybC52Y3Byb2oKICAgKSBlbHNlICgKICAgICBlY2hvIFJlbW92aW5nIFZDOSBwcm9qZWN0IGZpbGVzCi0gICAgY2FsbCA6Y2xlYW4gV2luZG93c1xWQzlcc3JjXGN1cmxzcmMudmNwcm9qCisgICAgY2FsbCA6Y2xlYW4gV2luZG93c1xWQzlcc3JjXGN1cmwudmNwcm9qCiAgICAgY2FsbCA6Y2xlYW4gV2luZG93c1xWQzlcbGliXGxpYmN1cmwudmNwcm9qCiAgICkKIApAQCAtMTg5LDExICsxNzcsMTEgQEAKIAogICBpZiAiJU1PREUlIiA9PSAiR0VORVJBVEUiICgKICAgICBlY2hvIEdlbmVyYXRpbmcgVkMxMCBwcm9qZWN0IGZpbGVzCi0gICAgY2FsbCA6Z2VuZXJhdGUgdmN4cHJvaiBXaW5kb3dzXFZDMTBcc3JjXGN1cmxzcmMudG1wbCBXaW5kb3dzXFZDMTBcc3JjXGN1cmxzcmMudmN4cHJvagorICAgIGNhbGwgOmdlbmVyYXRlIHZjeHByb2ogV2luZG93c1xWQzEwXHNyY1xjdXJsLnRtcGwgV2luZG93c1xWQzEwXHNyY1xjdXJsLnZjeHByb2oKICAgICBjYWxsIDpnZW5lcmF0ZSB2Y3hwcm9qIFdpbmRvd3NcVkMxMFxsaWJcbGliY3VybC50bXBsIFdpbmRvd3NcVkMxMFxsaWJcbGliY3VybC52Y3hwcm9qCiAgICkgZWxzZSAoCiAgICAgZWNobyBSZW1vdmluZyBWQzEwIHByb2plY3QgZmlsZXMKLSAgICBjYWxsIDpjbGVhbiBXaW5kb3dzXFZDMTBcc3JjXGN1cmxzcmMudmN4cHJvagorICAgIGNhbGwgOmNsZWFuIFdpbmRvd3NcVkMxMFxzcmNcY3VybC52Y3hwcm9qCiAgICAgY2FsbCA6Y2xlYW4gV2luZG93c1xWQzEwXGxpYlxsaWJjdXJsLnZjeHByb2oKICAgKQogCkBAIC0yMDQsMTEgKzE5MiwxMSBAQAogCiAgIGlmICIlTU9ERSUiID09ICJHRU5FUkFURSIgKAogICAgIGVjaG8gR2VuZXJhdGluZyBWQzExIHByb2plY3QgZmlsZXMKLSAgICBjYWxsIDpnZW5lcmF0ZSB2Y3hwcm9qIFdpbmRvd3NcVkMxMVxzcmNcY3VybHNyYy50bXBsIFdpbmRvd3NcVkMxMVxzcmNcY3VybHNyYy52Y3hwcm9qCisgICAgY2FsbCA6Z2VuZXJhdGUgdmN4cHJvaiBXaW5kb3dzXFZDMTFcc3JjXGN1cmwudG1wbCBXaW5kb3dzXFZDMTFcc3JjXGN1cmwudmN4cHJvagogICAgIGNhbGwgOmdlbmVyYXRlIHZjeHByb2ogV2luZG93c1xWQzExXGxpYlxsaWJjdXJsLnRtcGwgV2luZG93c1xWQzExXGxpYlxsaWJjdXJsLnZjeHByb2oKICAgKSBlbHNlICgKICAgICBlY2hvIFJlbW92aW5nIFZDMTEgcHJvamVjdCBmaWxlcwotICAgIGNhbGwgOmNsZWFuIFdpbmRvd3NcVkMxMVxzcmNcY3VybHNyYy52Y3hwcm9qCisgICAgY2FsbCA6Y2xlYW4gV2luZG93c1xWQzExXHNyY1xjdXJsLnZjeHByb2oKICAgICBjYWxsIDpjbGVhbiBXaW5kb3dzXFZDMTFcbGliXGxpYmN1cmwudmN4cHJvagogICApCiAKQEAgLTIxOSwyNyArMjA3LDQyIEBACiAKICAgaWYgIiVNT0RFJSIgPT0gIkdFTkVSQVRFIiAoCiAgICAgZWNobyBHZW5lcmF0aW5nIFZDMTIgcHJvamVjdCBmaWxlcwotICAgIGNhbGwgOmdlbmVyYXRlIHZjeHByb2ogV2luZG93c1xWQzEyXHNyY1xjdXJsc3JjLnRtcGwgV2luZG93c1xWQzEyXHNyY1xjdXJsc3JjLnZjeHByb2oKKyAgICBjYWxsIDpnZW5lcmF0ZSB2Y3hwcm9qIFdpbmRvd3NcVkMxMlxzcmNcY3VybC50bXBsIFdpbmRvd3NcVkMxMlxzcmNcY3VybC52Y3hwcm9qCiAgICAgY2FsbCA6Z2VuZXJhdGUgdmN4cHJvaiBXaW5kb3dzXFZDMTJcbGliXGxpYmN1cmwudG1wbCBXaW5kb3dzXFZDMTJcbGliXGxpYmN1cmwudmN4cHJvagogICApIGVsc2UgKAogICAgIGVjaG8gUmVtb3ZpbmcgVkMxMiBwcm9qZWN0IGZpbGVzCi0gICAgY2FsbCA6Y2xlYW4gV2luZG93c1xWQzEyXHNyY1xjdXJsc3JjLnZjeHByb2oKKyAgICBjYWxsIDpjbGVhbiBXaW5kb3dzXFZDMTJcc3JjXGN1cmwudmN4cHJvagogICAgIGNhbGwgOmNsZWFuIFdpbmRvd3NcVkMxMlxsaWJcbGliY3VybC52Y3hwcm9qCiAgICkKIAorICBpZiBub3QgIiVWRVJTSU9OJSIgPT0gIkFMTCIgZ290byBzdWNjZXNzCisKKzp2YzE0CisgIGVjaG8uCisKKyAgaWYgIiVNT0RFJSIgPT0gIkdFTkVSQVRFIiAoCisgICAgZWNobyBHZW5lcmF0aW5nIFZDMTQgcHJvamVjdCBmaWxlcworICAgIGNhbGwgOmdlbmVyYXRlIHZjeHByb2ogV2luZG93c1xWQzE0XHNyY1xjdXJsLnRtcGwgV2luZG93c1xWQzE0XHNyY1xjdXJsLnZjeHByb2oKKyAgICBjYWxsIDpnZW5lcmF0ZSB2Y3hwcm9qIFdpbmRvd3NcVkMxNFxsaWJcbGliY3VybC50bXBsIFdpbmRvd3NcVkMxNFxsaWJcbGliY3VybC52Y3hwcm9qCisgICkgZWxzZSAoCisgICAgZWNobyBSZW1vdmluZyBWQzE0IHByb2plY3QgZmlsZXMKKyAgICBjYWxsIDpjbGVhbiBXaW5kb3dzXFZDMTRcc3JjXGN1cmwudmN4cHJvagorICAgIGNhbGwgOmNsZWFuIFdpbmRvd3NcVkMxNFxsaWJcbGliY3VybC52Y3hwcm9qCisgICkKKwogICBnb3RvIHN1Y2Nlc3MKIAogcmVtIE1haW4gZ2VuZXJhdGUgZnVuY3Rpb24uCiByZW0KIHJlbSAlMSAtIFByb2plY3QgVHlwZSAoZHNwIGZvciBWQzYsIHZjcHJvajEgZm9yIFZDNyBhbmQgVkM3LjEsIHZjcHJvajIgZm9yIFZDOCBhbmQgVkM5Ci1yZW0gICAgICBvciB2Y3hwcm9qIGZvciBWQzEwLCBWQzExIGFuZCBWQzEyKQorcmVtICAgICAgb3IgdmN4cHJvaiBmb3IgVkMxMCwgVkMxMSwgVkMxMiBhbmQgVkMxNCkKIHJlbSAlMiAtIElucHV0IHRlbXBsYXRlIGZpbGUKIHJlbSAlMyAtIE91dHB1dCBwcm9qZWN0IGZpbGUKIHJlbQogOmdlbmVyYXRlCiAgIGlmIG5vdCBleGlzdCAlMiAoCiAgICAgZWNoby4KLSAgICBlY2hvIEVycm9yOiBDYW5ub3Qgb3BlbiAlQ0QlXCUyCisgICAgZWNobyBFcnJvcjogQ2Fubm90IG9wZW4gJTIKICAgICBleGl0IC9CCiAgICkKIApAQCAtMjk2LDcgKzI5OSw3IEBACiByZW0gR2VuZXJhdGVzIGEgc2luZ2xlIGZpbGUgeG1sIGVsZW1lbnQuCiByZW0KIHJlbSAlMSAtIFByb2plY3QgVHlwZSAoZHNwIGZvciBWQzYsIHZjcHJvajEgZm9yIFZDNyBhbmQgVkM3LjEsIHZjcHJvajIgZm9yIFZDOCBhbmQgVkM5Ci1yZW0gICAgICBvciB2Y3hwcm9qIGZvciBWQzEwLCBWQzExIGFuZCBWQzEyKQorcmVtICAgICAgb3IgdmN4cHJvaiBmb3IgVkMxMCwgVkMxMSwgVkMxMiBhbmQgVkMxNCkKIHJlbSAlMiAtIERpcmVjdG9yeSAoc3JjLCBsaWIsIGxpYlx2YXV0aCBvciBsaWJcdnRscykKIHJlbSAlMyAtIFNvdXJjZSBmaWxlbmFtZQogcmVtICU0IC0gT3V0cHV0IHByb2plY3QgZmlsZQpAQCAtMzc1LDczICszNzgsMTQgQEAKIAogICBleGl0IC9CCiAKLXJlbSBDQUxMIHRoaXMgZnVuY3Rpb24gdG8gZ2VuZXJhdGUgLi5cc3JjXHRvb2xfaHVnZWhlbHAuYwotcmVtIFJldHVybnMgZXhpdCBjb2RlIDAgb24gc3VjY2VzcyBvciAxIG9uIGZhaWx1cmUuCi06Z2VuX2h1Z2VoZWxwCi0gIHNldGxvY2FsCi0gIHNldCBMQ19BTEw9QwotICBzZXQgUk9GRkNNRD0KLSAgaWYgZGVmaW5lZCBIQVZFX1BFUkwgKAotICAgIGlmIGRlZmluZWQgSEFWRV9HUk9GRiAoCi0gICAgICBzZXQgUk9GRkNNRD1ncm9mZiAtbXR0eS1jaGFyIC1UYXNjaWkgLVAtYyAtbWFuCi0gICAgKSBlbHNlIGlmIGRlZmluZWQgSEFWRV9OUk9GRiAoCi0gICAgICBzZXQgUk9GRkNNRD1ucm9mZiAtYyAtVGFzY2lpIC1tYW4KLSAgICApCi0gICkKLSAgZWNobyAqICVDRCVcLi5cc3JjXHRvb2xfaHVnZWhlbHAuYwotICBlY2hvICNpbmNsdWRlICJ0b29sX3NldHVwLmgiPiAuLlxzcmNcdG9vbF9odWdlaGVscC5jCi0gIGVjaG8gI2luY2x1ZGUgInRvb2xfaHVnZWhlbHAuaCI+PiAuLlxzcmNcdG9vbF9odWdlaGVscC5jCi0gIGlmIGRlZmluZWQgUk9GRkNNRCAoCi0gICAgaWYgZGVmaW5lZCBIQVZFX0daSVAgKAotICAgICAgZWNobyAjaWZuZGVmIEhBVkVfTElCWj4+IC4uXHNyY1x0b29sX2h1Z2VoZWxwLmMKLSAgICApCi0gICAgJVJPRkZDTUQlIC4uXGRvY3NcY3VybC4xIDI+TlVMIHwgcGVybCAuLlxzcmNcbWtoZWxwLnBsIC4uXGRvY3NcTUFOVUFMID4+IC4uXHNyY1x0b29sX2h1Z2VoZWxwLmMKLSAgICBpZiBkZWZpbmVkIEhBVkVfR1pJUCAoCi0gICAgICBlY2hvICNlbHNlPj4gLi5cc3JjXHRvb2xfaHVnZWhlbHAuYwotICAgICAgJVJPRkZDTUQlIC4uXGRvY3NcY3VybC4xIDI+TlVMIHwgcGVybCAuLlxzcmNcbWtoZWxwLnBsIC1jIC4uXGRvY3NcTUFOVUFMID4+IC4uXHNyY1x0b29sX2h1Z2VoZWxwLmMKLSAgICAgIGVjaG8gI2VuZGlmIC9eKiBIQVZFX0xJQlogXiovPj4gLi5cc3JjXHRvb2xfaHVnZWhlbHAuYwotICAgICkKLSAgKSBlbHNlICgKLSAgICBlY2hvLgotICAgIGVjaG8gV2FybmluZzogVGhlIGN1cmwgbWFudWFsIGNvdWxkIG5vdCBiZSBpbnRlZ3JhdGVkIGluIHRoZSBzb3VyY2UuIFRoaXMgbWVhbnMgd2hlbgotICAgIGVjaG8geW91IGJ1aWxkIGN1cmwgdGhlIG1hbnVhbCB3aWxsIG5vdCBiZSBhdmFpbGFibGUgKGN1cmwgLS1tYW5eKS4gSW50ZWdyYXRpb24gb2YKLSAgICBlY2hvIHRoZSBtYW51YWwgaXMgbm90IHJlcXVpcmVkIGFuZCBhIHN1bW1hcnkgb2YgdGhlIG9wdGlvbnMgd2lsbCBzdGlsbCBiZSBhdmFpbGFibGUKLSAgICBlY2hvIChjdXJsIC0taGVscF4pLiBUbyBpbnRlZ3JhdGUgdGhlIG1hbnVhbCB5b3VyIFBBVEggaXMgcmVxdWlyZWQgdG8gaGF2ZQotICAgIGVjaG8gZ3JvZmYvbnJvZmYsIHBlcmwgYW5kIG9wdGlvbmFsbHkgZ3ppcCBmb3IgY29tcHJlc3Npb24uCi0gICAgZWNoby4KLSAgICBlY2hvIHZvaWQgaHVnZWhlbHAodm9pZF4pPj4gLi5cc3JjXHRvb2xfaHVnZWhlbHAuYwotICAgIGVjaG8gI2lmZGVmIFVTRV9NQU5VQUw+PiAuLlxzcmNcdG9vbF9odWdlaGVscC5jCi0gICAgZWNobyB7IGZwdXRzKCJidWlsdC1pbiBtYW51YWwgbm90IGluY2x1ZGVkXG4iLCBzdGRvdXReKTsgfT4+IC4uXHNyY1x0b29sX2h1Z2VoZWxwLmMKLSAgICBlY2hvICNlbHNlPj4gLi5cc3JjXHRvb2xfaHVnZWhlbHAuYwotICAgIGVjaG8ge30+PiAuLlxzcmNcdG9vbF9odWdlaGVscC5jCi0gICAgZWNobyAjZW5kaWY+PiAuLlxzcmNcdG9vbF9odWdlaGVscC5jCi0gICkKLSAgZmluZHN0ciAiL0M6dm9pZCBodWdlaGVscCh2b2lkKSIgLi5cc3JjXHRvb2xfaHVnZWhlbHAuYyAxPk5VTCAyPiYxCi0gIGlmICVFUlJPUkxFVkVMJSBORVEgMCAoCi0gICAgZWNobyBFcnJvcjogVW5hYmxlIHRvIGdlbmVyYXRlIC4uXHNyY1x0b29sX2h1Z2VoZWxwLmMKLSAgICBleGl0IC9CIDEKLSAgKQotICBleGl0IC9CIDAKLQotcmVtIENBTEwgdGhpcyBmdW5jdGlvbiB0byBnZW5lcmF0ZSAuLlxpbmNsdWRlXGN1cmxcY3VybGJ1aWxkLmgKLXJlbSBSZXR1cm5zIGV4aXQgY29kZSAwIG9uIHN1Y2Nlc3Mgb3IgMSBvbiBmYWlsdXJlLgotOmdlbl9jdXJsYnVpbGQKLSAgc2V0bG9jYWwKLSAgZWNobyAqICVDRCVcLi5caW5jbHVkZVxjdXJsXGN1cmxidWlsZC5oCi0gIGNvcHkgL3kgLi5caW5jbHVkZVxjdXJsXGN1cmxidWlsZC5oLmRpc3QgLi5caW5jbHVkZVxjdXJsXGN1cmxidWlsZC5oIDE+TlVMCi0gIGlmICVFUlJPUkxFVkVMJSBORVEgMCAoCi0gICAgZWNobyBFcnJvcjogVW5hYmxlIHRvIGdlbmVyYXRlIC4uXGluY2x1ZGVcY3VybFxjdXJsYnVpbGQuaAotICAgIGV4aXQgL0IgMQotICApCi0gIGV4aXQgL0IgMAotCiA6c3ludGF4CiAgIHJlbSBEaXNwbGF5IHRoZSBoZWxwCiAgIGVjaG8uCi0gIGVjaG8gVXNhZ2U6IGdlbmVyYXRlIFtjb21waWxlcl0gWy1jbGVhbl0KKyAgZWNobyBVc2FnZTogZ2VuZXJhdGUgW3doYXRdIFstY2xlYW5dCiAgIGVjaG8uCi0gIGVjaG8gQ29tcGlsZXI6CisgIGVjaG8gV2hhdCB0byBnZW5lcmF0ZToKICAgZWNoby4KKyAgZWNobyBwcmUgICAgICAgLSBQcmVyZXF1aXNpdGVzIG9ubHkKICAgZWNobyB2YzYgICAgICAgLSBVc2UgVmlzdWFsIFN0dWRpbyA2CiAgIGVjaG8gdmM3ICAgICAgIC0gVXNlIFZpc3VhbCBTdHVkaW8gLk5FVAogICBlY2hvIHZjNy4xICAgICAtIFVzZSBWaXN1YWwgU3R1ZGlvIC5ORVQgMjAwMwpAQCAtNDUwLDYgKzM5NCw3IEBACiAgIGVjaG8gdmMxMCAgICAgIC0gVXNlIFZpc3VhbCBTdHVkaW8gMjAxMAogICBlY2hvIHZjMTEgICAgICAtIFVzZSBWaXN1YWwgU3R1ZGlvIDIwMTIKICAgZWNobyB2YzEyICAgICAgLSBVc2UgVmlzdWFsIFN0dWRpbyAyMDEzCisgIGVjaG8gdmMxNCAgICAgIC0gVXNlIFZpc3VhbCBTdHVkaW8gMjAxNQogICBlY2hvLgogICBlY2hvIC1jbGVhbiAgICAtIFJlbW92ZXMgdGhlIHByb2plY3QgZmlsZXMKICAgZ290byBlcnJvcgpAQCAtNDY5LDYgKzQxNCwxMSBAQAogICBlY2hvIEVycm9yOiBUaGlzIGJhdGNoIGZpbGUgY2Fubm90IHJ1biBmcm9tIGEgbmV0d29yayBkcml2ZQogICBnb3RvIGVycm9yCiAKKzpub3JlcG8KKyAgZWNoby4KKyAgZWNobyBFcnJvcjogVGhpcyBiYXRjaCBmaWxlIHNob3VsZCBvbmx5IGJlIHVzZWQgZnJvbSBhIGN1cmwgZ2l0IHJlcG9zaXRvcnkKKyAgZ290byBlcnJvcgorCiA6c2V0ZXJyCiAgIHJlbSBTZXQgdGhlIGNhbGxlcidzIGVycm9ybGV2ZWwuCiAgIHJlbSAlMVtvcHRdOiBFcnJvcmxldmVsIGFzIGludGVnZXIuCkBAIC00ODIsNyArNDMyLDcgQEAKICAgZXhpdCAvYiAlRVhJVENPREUlCiAKIDplcnJvcgotICBlbmRsb2NhbAorICBpZiAiJU9TJSIgPT0gIldpbmRvd3NfTlQiIGVuZGxvY2FsCiAgIGV4aXQgL0IgMQogCiA6c3VjY2VzcwpkaWZmIC0tZ2l0IGEvcHJvamVjdHMvd29sZnNzbF9vcHRpb25zLmggYi9wcm9qZWN0cy93b2xmc3NsX29wdGlvbnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDc1MmI4Ci0tLSAvZGV2L251bGwKKysrIGIvcHJvamVjdHMvd29sZnNzbF9vcHRpb25zLmgKQEAgLTAsMCArMSwxODQgQEAKKy8qCitCeSBkZWZhdWx0IHdvbGZTU0wgaGFzIGEgdmVyeSBjb25zZXJ2YXRpdmUgY29uZmlndXJhdGlvbiB0aGF0IGNhbiByZXN1bHQgaW4KK2Nvbm5lY3Rpb25zIHRvIHNlcnZlcnMgZmFpbGluZyBkdWUgdG8gY2VydGlmaWNhdGUgb3IgYWxnb3JpdGhtIHByb2JsZW1zLgorVG8gcmVtZWR5IHRoaXMgaXNzdWUgZm9yIGxpYmN1cmwgSSd2ZSBnZW5lcmF0ZWQgdGhpcyBvcHRpb25zIGZpbGUgdGhhdAorYnVpbGQtd29sZnNzbCB3aWxsIGNvcHkgdG8gdGhlIHdvbGZTU0wgaW5jbHVkZSBkaXJlY3RvcmllcyBhbmQgd2lsbCByZXN1bHQgaW4KK21heGltdW0gY29tcGF0aWJpbGl0eS4KKworVGhlc2UgYXJlIHRoZSBjb25maWd1cmUgb3B0aW9ucyB0aGF0IHdlcmUgdXNlZCB0byBidWlsZCB3b2xmU1NMIHYzLjkuMCBpbiBtaW5ndworYW5kIGdlbmVyYXRlIHRoZSBvcHRpb25zIGluIHRoaXMgZmlsZToKKworQ19FWFRSQV9GTEFHUz0iXAorICAtV25vLWF0dHJpYnV0ZXMgXAorICAtV25vLXVudXNlZC1idXQtc2V0LXZhcmlhYmxlIFwKKyAgLURGUF9NQVhfQklUUz0xNjM4NCBcCisgIC1EVEZNX1RJTUlOR19SRVNJU1RBTlQgXAorICAtRFdPTEZTU0xfU1RBVElDX0RIIFwKKyAgLURXT0xGU1NMX1NUQVRJQ19SU0EgXAorICAiIFwKKy4vY29uZmlndXJlIC0tcHJlZml4PS91c3IvbG9jYWwgXAorICAtLWVuYWJsZS1hZXNnY20gXAorICAtLWVuYWJsZS1hbHBuIFwKKyAgLS1lbmFibGUtY2VydGdlbiBcCisgIC0tZW5hYmxlLWRoIFwKKyAgLS1lbmFibGUtZHNhIFwKKyAgLS1lbmFibGUtZWNjIFwKKyAgLS1lbmFibGUtZmFzdG1hdGggXAorICAtLWVuYWJsZS1vcGVuc3NsZXh0cmEgXAorICAtLWVuYWJsZS1yaXBlbWQgXAorICAtLWVuYWJsZS1zZXNzaW9uY2VydHMgXAorICAtLWVuYWJsZS1zaGE1MTIgXAorICAtLWVuYWJsZS1zbmkgXAorICAtLWVuYWJsZS1zc2x2MyBcCisgIC0tZW5hYmxlLXN1cHBvcnRlZGN1cnZlcyBcCisgIC0tZW5hYmxlLXRlc3RjZXJ0IFwKKyAgPiBjb25maWcub3V0IDI+JjEKKworVHdvIGdlbmVyYXRlZCBvcHRpb25zIEhBVkVfVEhSRUFEX0xTIGFuZCBfUE9TSVhfVEhSRUFEUyB3ZXJlIHJlbW92ZWQgc2luY2UgdGhleQorYXJlIGluYXBwbGljYWJsZSBmb3Igb3VyIFZpc3VhbCBTdHVkaW8gYnVpbGQuIEN1cnJlbnRseSB0aHJlYWQgbG9jYWwgc3RvcmFnZSBpcworb25seSB1c2VkIGJ5IHRoZSBGaXhlZCBQb2ludCBjYWNoZSBFQ0Mgd2hpY2ggd2UncmUgbm90IGVuYWJsaW5nLiBIb3dldmVyIGV2ZW4KK2lmIHdlIGxhdGVyIG1heSBkZWNpZGUgdG8gZW5hYmxlIHRoZSBjYWNoZSBpdCB3aWxsIGZhbGxiYWNrIG9uIG11dGV4ZXMgd2hlbgordGhyZWFkIGxvY2FsIHN0b3JhZ2UgaXMgbm90IGF2YWlsYWJsZS4gd29sZlNTTCBpcyB1c2luZyBfX2RlY2xzcGVjKHRocmVhZCkgdG8KK2NyZWF0ZSB0aGUgdGhyZWFkIGxvY2FsIHN0b3JhZ2UgYW5kIHRoYXQgY291bGQgYmUgYSBwcm9ibGVtIGZvciBMb2FkTGlicmFyeS4KKworUmVnYXJkaW5nIHRoZSBvcHRpb25zIHRoYXQgd2VyZSBhZGRlZCB2aWEgQ19FWFRSQV9GTEFHUzoKKworRlBfTUFYX0JJVFM9MTYzODQKK2h0dHA6Ly93d3cueWFzc2wuY29tL2ZvcnVtcy90b3BpYzQyMy1jYWNlcnRvcmdzLWNhLWNlcnQtdmVyaWZ5LWZhaWxlZC1idXQtd2l0aGRpc2FibGVmYXN0bWF0aC1pdC13b3Jrcy5odG1sCisiU2luY2Ugcm9vdC5jcnQgdXNlcyBhIDQwOTYtYml0IFJTQSBrZXksIHlvdSdsbCBuZWVkIHRvIGluY3JlYXNlIHRoZSBmYXN0bWF0aAorYnVmZmVyIHNpemUuICBZb3UgY2FuIGRvIHRoaXMgdXNpbmcgdGhlIGRlZmluZToKK0ZQX01BWF9CSVRTIGFuZCBzZXR0aW5nIGl0IHRvIDgxOTIuIgorCitURk1fVElNSU5HX1JFU0lTVEFOVAoraHR0cHM6Ly93b2xmc3NsLmNvbS93b2xmU1NML0RvY3Mtd29sZnNzbC1tYW51YWwtMi1idWlsZGluZy13b2xmc3NsLmh0bWwKK0Zyb20gc2VjdGlvbiAyLjQuNSBJbmNyZWFzaW5nIFBlcmZvcm1hbmNlLCBVU0VfRkFTVF9NQVRIOgorIkJlY2F1c2UgdGhlIHN0YWNrIG1lbW9yeSB1c2FnZSBjYW4gYmUgbGFyZ2VyIHdoZW4gdXNpbmcgZmFzdG1hdGgsIHdlIHJlY29tbWVuZAorZGVmaW5pbmcgVEZNX1RJTUlOR19SRVNJU1RBTlQgYXMgd2VsbCB3aGVuIHVzaW5nIHRoaXMgb3B0aW9uLiIKKworV09MRlNTTF9TVEFUSUNfREg6ICAgIEFsbG93IFRMU19FQ0RIXyBjaXBoZXJzCitXT0xGU1NMX1NUQVRJQ19SU0E6ICAgQWxsb3cgVExTX1JTQV8gY2lwaGVycworaHR0cHM6Ly9naXRodWIuY29tL3dvbGZTU0wvd29sZnNzbC9ibG9iL3YzLjYuNi9SRUFETUUubWQjbm90ZS0xCitTdGF0aWMga2V5IGNpcGhlciBzdWl0ZXMgYXJlIGRlcHJlY2F0ZWQgYW5kIGRpc2FibGVkIGJ5IGRlZmF1bHQgc2luY2UgdjMuNi42LgorKi8KKworLyogd29sZnNzbCBvcHRpb25zLmgKKyAqIGdlbmVyYXRlZCBmcm9tIGNvbmZpZ3VyZSBvcHRpb25zCisgKgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTUgd29sZlNTTCBJbmMuCisgKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2Ygd29sZlNTTC4gKGZvcm1lcmx5IGtub3duIGFzIEN5YVNTTCkKKyAqCisgKi8KKworI2lmbmRlZiBXT0xGU1NMX09QVElPTlNfSAorI2RlZmluZSBXT0xGU1NMX09QVElPTlNfSAorCisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworI3VuZGVmICBGUF9NQVhfQklUUworI2RlZmluZSBGUF9NQVhfQklUUyAxNjM4NAorCisjdW5kZWYgIFRGTV9USU1JTkdfUkVTSVNUQU5UCisjZGVmaW5lIFRGTV9USU1JTkdfUkVTSVNUQU5UCisKKyN1bmRlZiAgV09MRlNTTF9TVEFUSUNfREgKKyNkZWZpbmUgV09MRlNTTF9TVEFUSUNfREgKKworI3VuZGVmICBXT0xGU1NMX1NUQVRJQ19SU0EKKyNkZWZpbmUgV09MRlNTTF9TVEFUSUNfUlNBCisKKyN1bmRlZiAgT1BFTlNTTF9FWFRSQQorI2RlZmluZSBPUEVOU1NMX0VYVFJBCisKKyN1bmRlZiAgSEFWRV9BRVNHQ00KKyNkZWZpbmUgSEFWRV9BRVNHQ00KKworI3VuZGVmICBXT0xGU1NMX1JJUEVNRAorI2RlZmluZSBXT0xGU1NMX1JJUEVNRAorCisjdW5kZWYgIFdPTEZTU0xfU0hBNTEyCisjZGVmaW5lIFdPTEZTU0xfU0hBNTEyCisKKyN1bmRlZiAgV09MRlNTTF9TSEEzODQKKyNkZWZpbmUgV09MRlNTTF9TSEEzODQKKworI3VuZGVmICBTRVNTSU9OX0NFUlRTCisjZGVmaW5lIFNFU1NJT05fQ0VSVFMKKworI3VuZGVmICBXT0xGU1NMX0NFUlRfR0VOCisjZGVmaW5lIFdPTEZTU0xfQ0VSVF9HRU4KKworI3VuZGVmICBIQVZFX0VDQworI2RlZmluZSBIQVZFX0VDQworCisjdW5kZWYgIFRGTV9FQ0MyNTYKKyNkZWZpbmUgVEZNX0VDQzI1NgorCisjdW5kZWYgIEVDQ19TSEFNSVIKKyNkZWZpbmUgRUNDX1NIQU1JUgorCisjdW5kZWYgIFdPTEZTU0xfQUxMT1dfU1NMVjMKKyNkZWZpbmUgV09MRlNTTF9BTExPV19TU0xWMworCisjdW5kZWYgIE5PX1JDNAorI2RlZmluZSBOT19SQzQKKworI3VuZGVmICBOT19IQzEyOAorI2RlZmluZSBOT19IQzEyOAorCisjdW5kZWYgIE5PX1JBQkJJVAorI2RlZmluZSBOT19SQUJCSVQKKworI3VuZGVmICBIQVZFX1BPTFkxMzA1CisjZGVmaW5lIEhBVkVfUE9MWTEzMDUKKworI3VuZGVmICBIQVZFX09ORV9USU1FX0FVVEgKKyNkZWZpbmUgSEFWRV9PTkVfVElNRV9BVVRICisKKyN1bmRlZiAgSEFWRV9DSEFDSEEKKyNkZWZpbmUgSEFWRV9DSEFDSEEKKworI3VuZGVmICBIQVZFX0hBU0hEUkJHCisjZGVmaW5lIEhBVkVfSEFTSERSQkcKKworI3VuZGVmICBIQVZFX1RMU19FWFRFTlNJT05TCisjZGVmaW5lIEhBVkVfVExTX0VYVEVOU0lPTlMKKworI3VuZGVmICBIQVZFX1NOSQorI2RlZmluZSBIQVZFX1NOSQorCisjdW5kZWYgIEhBVkVfVExTX0VYVEVOU0lPTlMKKyNkZWZpbmUgSEFWRV9UTFNfRVhURU5TSU9OUworCisjdW5kZWYgIEhBVkVfQUxQTgorI2RlZmluZSBIQVZFX0FMUE4KKworI3VuZGVmICBIQVZFX1RMU19FWFRFTlNJT05TCisjZGVmaW5lIEhBVkVfVExTX0VYVEVOU0lPTlMKKworI3VuZGVmICBIQVZFX1NVUFBPUlRFRF9DVVJWRVMKKyNkZWZpbmUgSEFWRV9TVVBQT1JURURfQ1VSVkVTCisKKyN1bmRlZiAgV09MRlNTTF9URVNUX0NFUlQKKyNkZWZpbmUgV09MRlNTTF9URVNUX0NFUlQKKworI3VuZGVmICBOT19QU0sKKyNkZWZpbmUgTk9fUFNLCisKKyN1bmRlZiAgTk9fTUQ0CisjZGVmaW5lIE5PX01ENAorCisjdW5kZWYgIFVTRV9GQVNUX01BVEgKKyNkZWZpbmUgVVNFX0ZBU1RfTUFUSAorCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKworI2VuZGlmIC8qIFdPTEZTU0xfT1BUSU9OU19IICovCisKZGlmZiAtLWdpdCBhL3Byb2plY3RzL3dvbGZzc2xfb3ZlcnJpZGUucHJvcHMgYi9wcm9qZWN0cy93b2xmc3NsX292ZXJyaWRlLnByb3BzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzN2QwYjcKLS0tIC9kZXYvbnVsbAorKysgYi9wcm9qZWN0cy93b2xmc3NsX292ZXJyaWRlLnByb3BzCkBAIC0wLDAgKzEsNDAgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tCitXZSB1c2UgdGhpcyBmaWxlIHRvIG92ZXJyaWRlIHNvbWUgcHJvcGVydGllcyBvZiB0aGUgd29sZlNTTCBwcm9qZWN0IGZpbGVzLgorCitJbiBidWlsZC13b2xmc3NsIHdoZW4gd2UgY2FsbCBtc2J1aWxkIHRvIGJ1aWxkIHdvbGZTU0wgd2UgcGFzcyBpbiB0aGlzIHByb3BzCitmaWxlIGJ5IHVzaW5nIHRoZSBDdXN0b21BZnRlck1pY3Jvc29mdENvbW1vblRhcmdldHMgcHJvcGVydHkuCistLT4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4lKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTs8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPCEtLQorICAgICAgT3VyIG9wdGlvbnMgZmlsZSB3b2xmc3NsX29wdGlvbnMuaCBpcyBjb3BpZWQgYnkgYnVpbGQtd29sZnNzbCB0bworICAgICAgJChTb2x1dGlvbkRpcilcd29sZnNzbFxvcHRpb25zLmguIEl0IGluY2x1ZGVzIGFsbCB0aGUgb3B0aW9ucyB3ZSBuZWVkCisgICAgICB0byBidWlsZCB3b2xmU1NMIGZvciBjb21wYXRpYmlsaXR5LiBTZWUgd29sZnNzbF9vcHRpb25zLmggZm9yIG1vcmUgaW5mby4KKyAgICAgIC0tPgorICAgICAgPEZvcmNlZEluY2x1ZGVGaWxlcz4kKFNvbHV0aW9uRGlyKVx3b2xmc3NsXG9wdGlvbnMuaDslKEZvcmNlZEluY2x1ZGVGaWxlcyk7PC9Gb3JjZWRJbmNsdWRlRmlsZXM+CisgICAgICA8IS0tCisgICAgICBEbyBub3QgdXNlIHRoZSBVbmljb2RlIGNoYXJhY3RlciBzZXQgc2luY2UgdGhlaXIgbWluZ3cgY29uZmlnIGRvZXNuJ3QuCisgICAgICBEbyBub3QgdXNlIHRoZWlyIElERVxXSU5cdXNlcl9zZXR0aW5ncy5oIHNpbmNlIHdlIGhhdmUgd29sZnNzbF9vcHRpb25zLmguCisgICAgICAtLT4KKyAgICAgIDxVbmRlZmluZVByZXByb2Nlc3NvckRlZmluaXRpb25zPl9VTklDT0RFO1VOSUNPREU7V09MRlNTTF9VU0VSX1NFVFRJTkdTO0NZQVNTTF9VU0VSX1NFVFRJTkdTOyUoVW5kZWZpbmVQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk7PC9VbmRlZmluZVByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8VW5kZWZpbmVQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fVU5JQ09ERTtVTklDT0RFOyUoVW5kZWZpbmVQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk7PC9VbmRlZmluZVByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDwhLS0KKyAgVGhlIHByb2plY3QgR1VJRCBmb3Igd29sZnNzbC52Y3hwcm9qIGlzIDczOTczMjIzLTVFRTgtNDFDQS04RTg4LTFENjBFODlBMjM3Qi4KKyAgU2luY2Ugd2UgaGF2ZSBhcmUgdXNpbmcgY2VydGFpbiBvcHRpb25zIGxpa2UgZmFzdCBtYXRoIChURk0pIGluIG91ciBvcHRpb25zCisgIGZpbGUgd2UgbXVzdCBjb21waWxlIHRoZSBjb3JyZXNwb25kaW5nIHVuaXRzIGluIHdvbGZzc2wudmN4cHJvai4gSWYgdGhlIHVzZXIKKyAgZGlzYWJsZXMgc3VjaCBhbiBvcHRpb24gdGhlIHVuaXQgY2FuIHN0aWxsIGJlIGNvbXBpbGVkIGl0IGp1c3Qgd29uJ3QgYmUgdXNlZC4KKyAgLS0+CisgIDxJdGVtR3JvdXAgQ29uZGl0aW9uPSInJChQcm9qZWN0R3VpZCknPT0nezczOTczMjIzLTVFRTgtNDFDQS04RTg4LTFENjBFODlBMjM3Qn0nIj4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IndvbGZjcnlwdFxzcmNcY2hhY2hhLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJ3b2xmY3J5cHRcc3JjXGNoYWNoYTIwX3BvbHkxMzA1LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJ3b2xmY3J5cHRcc3JjXHBvbHkxMzA1LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJ3b2xmY3J5cHRcc3JjXHRmbS5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL3NjcmlwdHMvTWFrZWZpbGUuYW0gYi9zY3JpcHRzL01ha2VmaWxlLmFtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyZGMxYjkKLS0tIC9kZXYvbnVsbAorKysgYi9zY3JpcHRzL01ha2VmaWxlLmFtCkBAIC0wLDAgKzEsNDMgQEAKKyMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworIyAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKyMKKyMgQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyMKKyMgVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKyMgeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcworIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyMKKyMgWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCisjIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworIyBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorIworIyBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisjIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK1pTSF9GVU5DVElPTlNfRElSID0gQFpTSF9GVU5DVElPTlNfRElSQAorUEVSTCA9IEBQRVJMQAorCitaU0hfQ09NUExFVElPTl9GVU5DVElPTl9GSUxFTkFNRSA9IF9jdXJsCisKK2FsbC1sb2NhbDogJChaU0hfQ09NUExFVElPTl9GVU5DVElPTl9GSUxFTkFNRSkKKworJChaU0hfQ09NUExFVElPTl9GVU5DVElPTl9GSUxFTkFNRSk6IHpzaC5wbAoraWYgQ1JPU1NDT01QSUxJTkcKKwlAZWNobyAiTk9USUNFOiB3ZSBjYW4ndCBnZW5lcmF0ZSB6c2ggY29tcGxldGlvbiB3aGVuIGNyb3NzLWNvbXBpbGluZyEiCitlbHNlICMgaWYgbm90IGNyb3NzLWNvbXBpbGluZzoKKwlAaWYgISB0ZXN0IC14ICIkKFBFUkwpIjsgdGhlbiBlY2hvICJObyBwZXJsOiBjYW4ndCBpbnN0YWxsIHpzaC5wbCI7IGV4aXQgMDsgZmkKKwkkKFBFUkwpICQoc3JjZGlyKS96c2gucGwgJCh0b3BfYnVpbGRkaXIpL3NyYy9jdXJsJChFWEVFWFQpID4gJEAKK2VuZGlmCisKK2luc3RhbGwtZGF0YS1sb2NhbDoKK2lmIENST1NTQ09NUElMSU5HCisJQGVjaG8gIk5PVElDRTogd2UgY2FuJ3QgaW5zdGFsbCB6c2ggY29tcGxldGlvbiB3aGVuIGNyb3NzLWNvbXBpbGluZyEiCitlbHNlICMgaWYgbm90IGNyb3NzLWNvbXBpbGluZzoKKwkkKE1LRElSX1ApICQoREVTVERJUikkKFpTSF9GVU5DVElPTlNfRElSKQorCSQoSU5TVEFMTF9EQVRBKSAkKFpTSF9DT01QTEVUSU9OX0ZVTkNUSU9OX0ZJTEVOQU1FKSAkKERFU1RESVIpJChaU0hfRlVOQ1RJT05TX0RJUikvJChaU0hfQ09NUExFVElPTl9GVU5DVElPTl9GSUxFTkFNRSkKK2VuZGlmCmRpZmYgLS1naXQgYS9zY3JpcHRzL2NvbnRyaWJ1dG9ycy5zaCBiL3NjcmlwdHMvY29udHJpYnV0b3JzLnNoCmluZGV4IDA4NDBiZmEuLmQ2MmJhYWQgMTAwNzU1Ci0tLSBhL3NjcmlwdHMvY29udHJpYnV0b3JzLnNoCisrKyBiL3NjcmlwdHMvY29udHJpYnV0b3JzLnNoCkBAIC02LDExICs2LDExIEBACiAjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogIwotIyBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyMgQ29weXJpZ2h0IChDKSAyMDEzLTIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAjCiAjIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAjCiAjIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTIyLDEyICsyMiw5IEBACiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAogIwotIyBUaGlzIHNjcmlwdCBzaG93cyBhbGwgbWVudGlvbmVkIGNvbnRyaWJ1dG9ycyBmcm9tIDxoYXNoPiB1bnRpbCBIRUFELiBUbyBhaWQKLSMgd2hlbiB3cml0aW5nIFJFTEVBU0UtTk9URVMgYW5kIFRIQU5LUy4KLSMKLSMgVXNlIC0tcmVsZWFzZW5vdGVzIHRvIGFsc28gaW5jbHVkZSB0aGUgbmFtZXMgZnJvbSB0aGUgZXhpc3RpbmcgUkVMRUFTRS1OT1RFUwotIyBmaWxlLCB3aGljaCBpcyBoYW5keSB3aGVuIHdlJ3ZlIGFkZGVkIG5hbWVzIG1hbnVhbGx5IGluIHRoZXJlIHRoYXQgc2hvdWxkIGJlCi0jIGluY2x1ZGVkIGluIGFuIHVwZGF0ZWQgbGlzdC4KKyMgVGhpcyBzY3JpcHQgc2hvd3MgYWxsIG1lbnRpb25lZCBjb250cmlidXRvcnMgZnJvbSB0aGUgZ2l2ZW4gPGhhc2g+Lzx0YWc+CisjIHVudGlsIEhFQUQgYW5kIGFkZHMgdGhlIGNvbnRyaWJ1dG9ycyBhbHJlYWR5IG1lbnRpb25lZCBpbiB0aGUgZXhpc3RpbmcKKyMgUkVMRUFTRS1OT1RFUy4KICMKIAogc3RhcnQ9JDEKQEAgLTQ4LDMxICs0NSwyNiBAQAogIyBhd2sgdGhlbSBpbnRvIFJFTEVBU0UtTk9URVMgZm9ybWF0CiAoCiBnaXQgbG9nICRzdGFydC4uSEVBRCB8IFwKLWVncmVwIC1pICcoQXV0aG9yfENvbW1pdHxieSk6JyB8IFwKK2VncmVwIC1haSAnKF5BdXRob3J8XkNvbW1pdHxieSk6JyB8IFwKIGN1dCAtZDogLWYyLSB8IFwKIGN1dCAnLWQ8JyAtZjEgfCBcCiB0ciAsICdcMDEyJyB8IFwKIHNlZCAncy8gYW5kIC9cbi8nIHwgXAotc2VkIC1lICdzL14gLy8nIC1lICdzLyAkLy9nJworc2VkIC1lICdzL14gLy8nIC1lICdzLyAkLy9nJyAtZSAncy9AdXNlcnMubm9yZXBseS5naXRodWIuY29tJC8gb24gZ2l0aHViLycKIAotaWYgZWNobyAiJCoiIHwgZ3JlcCAtcXcgLS0gJy0tcmVsZWFzZW5vdGVzJzt0aGVuCi0gICAgIyBpZiAtLXJlbGVhc2Vub3RlcyB3YXMgdXNlZAotICAgICMgZ3JlcCBvdXQgdGhlIGxpc3Qgb2YgbmFtZXMgZnJvbSBSRUxFQVNFLU5PVEVTCi0gICAgIyBzcGxpdCBvbiAiLCAiCi0gICAgIyByZW1vdmUgbGVhZGluZyB3aGl0ZSBzcGFjZXMKLWdyZXAgIl4gIFteIFwoXSIgUkVMRUFTRS1OT1RFU3wgXAorZ3JlcCAtYSAiXiAgW14gXChdIiBSRUxFQVNFLU5PVEVTfCBcCiBzZWQgJ3MvLCAqL1xuL2cnfCBcCiBzZWQgJ3MvXiAqLy8nCi1maQorCiApfCBcCiBzZWQgLWYgLi9kb2NzL1RIQU5LUy1maWx0ZXIgfCBcCi1ncmVwICcgJyB8IFwKK2dyZXAgLWEgJyAnIHwgXAogc29ydCAtZnUgfCBcCiBhd2sgJ3sKICBudW0rKzsKICBuID0gc3ByaW50ZigiJXMlcyVzLCIsIG4sIGxlbmd0aChuKT8iICI6IiIsICQwKTsKICAjcHJpbnQgbjsKLSBpZihsZW5ndGgobikgPiA3OCkgeworIGlmKGxlbmd0aChuKSA+IDc3KSB7CiAgICBwcmludGYoIiAgJXNcbiIsIHApOwogICAgbj1zcHJpbnRmKCIlcywiLCAkMCk7CiAgfQpkaWZmIC0tZ2l0IGEvc2NyaXB0cy9jb250cml0aGFua3Muc2ggYi9zY3JpcHRzL2NvbnRyaXRoYW5rcy5zaAppbmRleCBiN2ExNmNhLi42Y2E3ZTgzIDEwMDc1NQotLS0gYS9zY3JpcHRzL2NvbnRyaXRoYW5rcy5zaAorKysgYi9zY3JpcHRzL2NvbnRyaXRoYW5rcy5zaApAQCAtNiwxMSArNiwxMSBAQAogIyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICMKLSMgQ29weXJpZ2h0IChDKSAyMDEzLTIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisjIENvcHlyaWdodCAoQykgMjAxMy0yMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogIwogIyBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogIyB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0jIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisjIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogIwogIyBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICMgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zNiwyMiArMzYsMjIgQEAKIAogKAogZ2l0IGxvZyAkc3RhcnQuLkhFQUQgfCBcCi1lZ3JlcCAtaSAnKEF1dGhvcnxDb21taXR8YnkpOicgfCBcCitlZ3JlcCAtYWkgJyheQXV0aG9yfF5Db21taXR8YnkpOicgfCBcCiBjdXQgLWQ6IC1mMi0gfCBcCiBjdXQgJy1kPCcgLWYxIHwgXAogdHIgLCAnXDAxMicgfCBcCiBzZWQgJ3MvIGFuZCAvXG4vJyB8IFwKLXNlZCAtZSAncy9eIC8vJyAtZSAncy8gJC8vZycKK3NlZCAtZSAncy9eIC8vJyAtZSAncy8gJC8vZycgLWUgJ3MvQHVzZXJzLm5vcmVwbHkuZ2l0aHViLmNvbSQvIG9uIGdpdGh1Yi8nCiAKICMgZ3JlcCBvdXQgdGhlIGxpc3Qgb2YgbmFtZXMgZnJvbSBSRUxFQVNFLU5PVEVTCiAjIHNwbGl0IG9uICIsICIKICMgcmVtb3ZlIGxlYWRpbmcgd2hpdGUgc3BhY2VzCi1ncmVwICJeICBbXiAoXSIgUkVMRUFTRS1OT1RFU3wgXAorZ3JlcCAtYSAiXiAgW14gKF0iIFJFTEVBU0UtTk9URVN8IFwKIHNlZCAncy8sICovXG4vZyd8IFwKIHNlZCAncy9eICovLycKIAogKXwgXAogc2VkIC1mIC4vZG9jcy9USEFOS1MtZmlsdGVyIHwgXAotZ3JlcCAnICcgfCBcCitncmVwIC1hICcgJyB8IFwKIHNvcnQgLWZ1IHwgXAotZ3JlcCAteHZmIC4vZG9jcy9USEFOS1MgCitncmVwIC1haXh2ZiAuL2RvY3MvVEhBTktTCmRpZmYgLS1naXQgYS9zY3JpcHRzL3pzaC5wbCBiL3NjcmlwdHMvenNoLnBsCmluZGV4IDc1MjBhMTUuLmYwZDhjMTkgMTAwNzU1Ci0tLSBhL3NjcmlwdHMvenNoLnBsCisrKyBiL3NjcmlwdHMvenNoLnBsCkBAIC0zOCwxNCArMzgsMTQgQEAKICAgICBteSAoJGNtZCwgJHJlZ2V4KSA9IEBfOwogCiAgICAgbXkgQGxpc3Q7Ci0gICAgbXkgQGxpbmVzID0gc3BsaXQgL1xuLywgYCIkY3VybCIgJGNtZGA7CisgICAgbXkgQGxpbmVzID0gY2FsbF9jdXJsKCRjbWQpOwogCiAgICAgZm9yZWFjaCBteSAkbGluZSAoQGxpbmVzKSB7CiAgICAgICAgIG15ICgkc2hvcnQsICRsb25nLCAkYXJnLCAkZGVzYykgPSAoJGxpbmUgPX4gL14kcmVnZXgvKSBvciBuZXh0OwogCiAgICAgICAgIG15ICRvcHRpb24gPSAnJzsKIAotICAgICAgICAkZGVzYyA9fiBzLycvJycvZyBpZiBkZWZpbmVkICRkZXNjOworICAgICAgICAkZGVzYyA9fiBzLycvJ1xcJycvZyBpZiBkZWZpbmVkICRkZXNjOwogICAgICAgICAkZGVzYyA9fiBzL1xbL1xcXFsvZyBpZiBkZWZpbmVkICRkZXNjOwogICAgICAgICAkZGVzYyA9fiBzL1xdL1xcXF0vZyBpZiBkZWZpbmVkICRkZXNjOwogCkBAIC03NCw0ICs3NCwxNSBAQAogICAgIHJldHVybiBAbGlzdDsKIH0KIAotc3ViICB0cmltIHsgbXkgJHMgPSBzaGlmdDsgJHMgPX4gcy9eXHMrfFxzKyQvL2c7IHJldHVybiAkcyB9Oworc3ViIHRyaW0geyBteSAkcyA9IHNoaWZ0OyAkcyA9fiBzL15ccyt8XHMrJC8vZzsgcmV0dXJuICRzIH07CisKK3N1YiBjYWxsX2N1cmwgeworICAgIG15ICgkY21kKSA9IEBfOworICAgIG15ICRvdXRwdXQgPSBgIiRjdXJsIiAkY21kYDsKKyAgICBpZiAoJD8gPT0gLTEpIHsKKyAgICAgICAgZGllICJDb3VsZCBub3QgcnVuIGN1cmw6ICQhIjsKKyAgICB9IGVsc2lmICgobXkgJGV4aXRfY29kZSA9ICQ/ID4+IDgpICE9IDApIHsKKyAgICAgICAgZGllICJjdXJsIHJldHVybmVkICRleGl0X2NvZGUgd2l0aCBvdXRwdXQ6XG4kb3V0cHV0IjsKKyAgICB9CisgICAgcmV0dXJuIHNwbGl0IC9cbi8sICRvdXRwdXQ7Cit9CmRpZmYgLS1naXQgYS9zcmMvLmdpdGlnbm9yZSBiL3NyYy8uZ2l0aWdub3JlCmluZGV4IGY4MGEzZTEuLmNmN2Y5ZTQgMTAwNjQ0Ci0tLSBhL3NyYy8uZ2l0aWdub3JlCisrKyBiL3NyYy8uZ2l0aWdub3JlCkBAIC0xLDExICsxLDEwIEBACisqLmEKKyoubmxtCisqLnJlcworTWFrZWZpbGUudmMqLmRpc3QKK2NvbmZpZy13aW4zMi5oCiBjdXJsCiBjdXJsX2NvbmZpZy5oLmluCiBzdGFtcC1oMgotTWFrZWZpbGUudmM4LmRpc3QKLU1ha2VmaWxlLnZjOS5kaXN0Cit0b29sX2h1Z2VoZWxwLmMKIHRvb2xfdmVyc2lvbi5oLmRpc3QKLU1ha2VmaWxlLnZjMTAuZGlzdAotY29uZmlnLXdpbjMyLmgKLSouYQotKi5yZXMKLSoubmxtCmRpZmYgLS1naXQgYS9zcmMvQ01ha2VMaXN0cy50eHQgYi9zcmMvQ01ha2VMaXN0cy50eHQKaW5kZXggYmZiODY2Yi4uY2ZjZWZiMyAxMDA2NDQKLS0tIGEvc3JjL0NNYWtlTGlzdHMudHh0CisrKyBiL3NyYy9DTWFrZUxpc3RzLnR4dApAQCAtNDMsOSArNDMsMTAgQEAKICAgbGlzdChBUFBFTkQgQ1VSTF9TT1VSQ0UgY3VybC5yYykKIGVuZGlmKCkKIAorIyBDVVJMX0ZJTEVTIGNvbWVzIGZyb20gTWFrZWZpbGUuaW5jCiBhZGRfZXhlY3V0YWJsZSgKICAgJHtFWEVfTkFNRX0KLSAgJHtjdXJsX1NPVVJDRVN9CisgICR7Q1VSTF9GSUxFU30KICAgKQogCiBzb3VyY2VfZ3JvdXAoImNVUkxYIHNvdXJjZSBmaWxlcyIgRklMRVMgJHtDVVJMWF9DRklMRVN9KQpkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLldhdGNvbSBiL3NyYy9NYWtlZmlsZS5XYXRjb20KaW5kZXggNmVjNTk4ZC4uZjFkZGMyOSAxMDA2NDQKLS0tIGEvc3JjL01ha2VmaWxlLldhdGNvbQorKysgYi9zcmMvTWFrZWZpbGUuV2F0Y29tCkBAIC0xLDYgKzEsMjggQEAKKyMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworIyAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDA1IC0gMjAwOCwgR2lzbGUgVmFuZW0gPGd2YW5lbUB5YWhvby5ubz4uCisjIENvcHlyaWdodCAoQykgMjAwNSAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisjCisjIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKyMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisjCisjIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyMgZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKyMKKyMgVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQorIyBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorIworIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCiAjCiAjICBXYXRjb20gLyBPcGVuV2F0Y29tIC8gV2luMzIgbWFrZWZpbGUgZm9yIGNVUkwuCi0jICBHLiBWYW5lbSA8Z3ZhbmVtQGJyb2FkcGFyay5ubz4KICMKIAogLkVSQVNFCmRpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUuYW0gYi9zcmMvTWFrZWZpbGUuYW0KaW5kZXggZjRiYzZjOS4uODc4YmJmZSAxMDA2NDQKLS0tIGEvc3JjL01ha2VmaWxlLmFtCisrKyBiL3NyYy9NYWtlZmlsZS5hbQpAQCAtNSwxMSArNSwxMSBAQAogIyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICMKLSMgQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyMgQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICMKICMgVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICMgeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICMKICMgWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAjIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNTMsNiArNTMsOSBAQAogCiBpbmNsdWRlIE1ha2VmaWxlLmluYwogCisjIENVUkxfRklMRVMgY29tZXMgZnJvbSBNYWtlZmlsZS5pbmMKK2N1cmxfU09VUkNFUyA9ICQoQ1VSTF9GSUxFUykKKwogIyBUaGlzIG1pZ2h0IGhvbGQgLVdlcnJvcgogQ0ZMQUdTICs9IEBDVVJMX0NGTEFHX0VYVFJBU0AKIApAQCAtNzIsOCArNzUsOSBAQAogIyBpZiB1bml0IHRlc3RzIGFyZSBlbmFibGVkLCBidWlsZCBhIHN0YXRpYyBsaWJyYXJ5IHRvIGxpbmsgdGhlbSB3aXRoCiBpZiBCVUlMRF9VTklUVEVTVFMKIG5vaW5zdF9MVExJQlJBUklFUyA9IGxpYmN1cmx0b29sLmxhCi1saWJjdXJsdG9vbF9sYV9DUFBGTEFHUyA9ICQoTElCTUVUQUxJTktfQ1BQRkxBR1MpICQoQU1fQ1BQRkxBR1MpCi1saWJjdXJsdG9vbF9sYV9DRkxBR1MgPSAtRFVOSVRURVNUUworbGliY3VybHRvb2xfbGFfQ1BQRkxBR1MgPSAkKExJQk1FVEFMSU5LX0NQUEZMQUdTKSAkKEFNX0NQUEZMQUdTKSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIC1EQ1VSTF9TVEFUSUNMSUIgLURVTklUVEVTVFMKK2xpYmN1cmx0b29sX2xhX0NGTEFHUyA9CiBsaWJjdXJsdG9vbF9sYV9MREZMQUdTID0gLXN0YXRpYyAkKExJTktGTEFHUykKIGxpYmN1cmx0b29sX2xhX1NPVVJDRVMgPSAkKGN1cmxfU09VUkNFUykKIGVuZGlmCkBAIC04Nyw4ICs5MSw3IEBACiBFWFRSQV9ESVNUID0gbWtoZWxwLnBsIG1ha2VmaWxlLmRqIE1ha2VmaWxlLnZjNiBNYWtlZmlsZS5iMzIJCVwKICBNYWtlZmlsZS5tMzIgbWFjb3MvY3VybC5tY3AueG1sLnNpdC5ocXggbWFjb3MvTUFDSU5TVEFMTC5UWFQJCVwKICBtYWNvcy9zcmMvY3VybF9HVVNJQ29uZmlnLmNwcCBtYWNvcy9zcmMvbWFjb3NfbWFpbi5jcHAgbWFrZWZpbGUuYW1pZ2EJXAotIGN1cmwucmMgTWFrZWZpbGUubmV0d2FyZSBNYWtlZmlsZS5pbmMgTWFrZWZpbGUuV2F0Y29tIENNYWtlTGlzdHMudHh0CVwKLSBjaGVja3NyYy53aGl0ZWxpc3QKKyBjdXJsLnJjIE1ha2VmaWxlLm5ldHdhcmUgTWFrZWZpbGUuaW5jIE1ha2VmaWxlLldhdGNvbSBDTWFrZUxpc3RzLnR4dAogCiBNQU5QQUdFPSQodG9wX3NyY2RpcikvZG9jcy9jdXJsLjEKIFJFQURNRT0kKHRvcF9zcmNkaXIpL2RvY3MvTUFOVUFMCkBAIC0xMjYsNyArMTI5LDggQEAKICMgaWdub3JlIHRvb2xfaHVnZWhlbHAuYyBzaW5jZSBpdCBpcyBnZW5lcmF0ZWQgc291cmNlIGNvZGUgYW5kIGl0IHBsYXlzCiAjIGJ5IHNsaWdodGx5IGRpZmZlcmVudCBydWxlcyEKIGNoZWNrc3JjOgotCUBAUEVSTEAgJCh0b3Bfc3JjZGlyKS9saWIvY2hlY2tzcmMucGwgLUQkKHRvcF9zcmNkaXIpL3NyYyAtV3Rvb2xfaHVnZWhlbHAuYyAkKENVUkxfQ0ZJTEVTKSAkKENVUkxfSEZJTEVTKQorCUBQRVJMQCAkKHRvcF9zcmNkaXIpL2xpYi9jaGVja3NyYy5wbCAtRCQoc3JjZGlyKSAgICAgICAgXAorCS1XJChzcmNkaXIpL3Rvb2xfaHVnZWhlbHAuYyAkKHNyY2RpcikvKi5bY2hdCiAKIGlmIENVUkxERUJVRwogIyBmb3IgZGVidWcgYnVpbGRzLCB3ZSBzY2FuIHRoZSBzb3VyY2VzIG9uIGFsbCByZWd1bGFyIG1ha2UgaW52b2tlcwpkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmIzMiBiL3NyYy9NYWtlZmlsZS5iMzIKaW5kZXggODVmZTQ5Zi4uYTYwYjNkYiAxMDA2NDQKLS0tIGEvc3JjL01ha2VmaWxlLmIzMgorKysgYi9zcmMvTWFrZWZpbGUuYjMyCkBAIC0xLDEzICsxLDMzIEBACisjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKyMgIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisjCisjIENvcHlyaWdodCAoQykgMjAwMCwgSmFlcGlsIEtpbSwgPHBpdEBwYXJhZGlzZS5uZXQubno+LgorIyBDb3B5cmlnaHQgKEMpIDIwMDEgLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorIworIyBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAorIyB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisjIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorIworIyBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKyMgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisjIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCisjCisjIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKyMgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyMKKyMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjCiAjICBNYWtlZmlsZS5iMzIgLSBCb3JsYW5kJ3MgQysrIENvbXBpbGVyIDUuWAogIwotIyAgJ3NyYycgZGlyZWN0b3J5Ci0jCiAjICAnQkNDRElSJyBoYXMgdG8gYmUgc2V0IHVwIHRvIHBvaW50IHRvIHRoZSBiYXNlIGRpcmVjdG9yeQogIyAgb2YgdGhlIGNvbXBpbGVyLCBpLmUuIFNFVCBCQ0NESVIgPSBjOlxCb3JsYW5kXEJDQzU1CiAjCi0jICBJbml0aWFsbHkgd3JpdHRlbiBieSBKYWVwaWwgS2ltLCBwaXRAcGFyYWRpc2UubmV0Lm56CiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAogIWlmICIkKF9fTUFLRV9fKSIgPT0gIiIKZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5pbmMgYi9zcmMvTWFrZWZpbGUuaW5jCmluZGV4IDQwMWE2MzUuLjFhYTE1M2MgMTAwNjQ0Ci0tLSBhL3NyYy9NYWtlZmlsZS5pbmMKKysrIGIvc3JjL01ha2VmaWxlLmluYwpAQCAtMjMsNiArMjMsNyBAQAogCS4uL2xpYi93YXJubGVzcy5oCiAKIENVUkxfQ0ZJTEVTID0gXAorCXNsaXN0X3djLmMgXAogCXRvb2xfYmlubW9kZS5jIFwKIAl0b29sX2JuYW1lLmMgXAogCXRvb2xfY2JfZGJnLmMgXApAQCAtNjQsNiArNjUsNyBAQAogCXRvb2xfeGF0dHIuYwogCiBDVVJMX0hGSUxFUyA9IFwKKwlzbGlzdF93Yy5oIFwKIAl0b29sX2Jpbm1vZGUuaCBcCiAJdG9vbF9ibmFtZS5oIFwKIAl0b29sX2NiX2RiZy5oIFwKQEAgLTEwOSw1ICsxMTEsNSBAQAogCiBDVVJMX1JDRklMRVMgPSBjdXJsLnJjCiAKLWN1cmxfU09VUkNFUyA9ICQoQ1VSTF9DRklMRVMpICQoQ1VSTFhfQ0ZJTEVTKSAkKENVUkxfSEZJTEVTKQotCisjIGN1cmxfU09VUkNFUyBpcyBzcGVjaWFsIGFuZCBnZXRzIGFzc2lnbmVkIGluIHNyYy9NYWtlZmlsZS5hbQorQ1VSTF9GSUxFUyA9ICQoQ1VSTF9DRklMRVMpICQoQ1VSTFhfQ0ZJTEVTKSAkKENVUkxfSEZJTEVTKQpkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLm0zMiBiL3NyYy9NYWtlZmlsZS5tMzIKaW5kZXggZmM1OWY2My4uMDc2ZmM1ZSAxMDA2NDQKLS0tIGEvc3JjL01ha2VmaWxlLm0zMgorKysgYi9zcmMvTWFrZWZpbGUubTMyCkBAIC0xLDEwICsxLDMyIEBACisjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKyMgIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisjCisjIENvcHlyaWdodCAoQykgMTk5OSAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisjCisjIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKyMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisjCisjIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyMgZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKyMKKyMgVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQorIyBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorIworIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMKICMjIE1ha2VmaWxlIGZvciBidWlsZGluZyBjdXJsLmV4ZSB3aXRoIE1pbmdXIChHQ0MtMy4yIG9yIGxhdGVyKQogIyMgYW5kIG9wdGlvbmFsbHkgT3BlblNTTCAoMS4wLjJhKSwgbGlic3NoMiAoMS41KSwgemxpYiAoMS4yLjgpLCBsaWJydG1wICgyLjQpCiAjIwogIyMgVXNhZ2U6ICAgbWluZ3czMi1tYWtlIC1mIE1ha2VmaWxlLm0zMiBDRkc9LWZlYXR1cmUxWy1mZWF0dXJlMl1bLWZlYXR1cmUzXVsuLi5dCi0jIyBFeGFtcGxlOiBtaW5ndzMyLW1ha2UgLWYgTWFrZWZpbGUubTMyIENGRz0temxpYi1zc2wtc3BpLXdpbmlkbgorIyMgRXhhbXBsZTogbWluZ3czMi1tYWtlIC1mIE1ha2VmaWxlLm0zMiBDRkc9LXpsaWItc3NsLXNzcGktd2luaWRuCiAjIwogIyMgSGludDogeW91IGNhbiBhbHNvIHNldCBlbnZpcm9ubWVudCB2YXJzIHRvIGNvbnRyb2wgdGhlIGJ1aWxkLCBmLmUuOgogIyMgc2V0IFpMSUJfUEFUSD1jOi96bGliLTEuMi44CkBAIC00Miw3ICs2NCw3IEBACiBlbmRpZgogIyBFZGl0IHRoZSBwYXRoIGJlbG93IHRvIHBvaW50IHRvIHRoZSBiYXNlIG9mIHlvdXIgbGliaWRuIHBhY2thZ2UuCiBpZm5kZWYgTElCSUROX1BBVEgKLUxJQklETl9QQVRIID0gLi4vLi4vbGliaWRuLTEuMzAKK0xJQklETl9QQVRIID0gLi4vLi4vbGliaWRuLTEuMzIKIGVuZGlmCiAjIEVkaXQgdGhlIHBhdGggYmVsb3cgdG8gcG9pbnQgdG8gdGhlIGJhc2Ugb2YgeW91ciBNUyBJRE4gcGFja2FnZS4KICMgTWljcm9zb2Z0IEludGVybmF0aW9uYWxpemVkIERvbWFpbiBOYW1lcyAoSUROKSBNaXRpZ2F0aW9uIEFQSXMgMS4xCkBAIC02NywxNCArODksMTQgQEAKIGVuZGlmCiAKIENDCT0gJChDUk9TU1BSRUZJWClnY2MKLUNGTEFHUwk9IC1nIC1PMiAtV2FsbAorQ0ZMQUdTCT0gJChDVVJMX0NGTEFHX0VYVFJBUykgLWcgLU8yIC1XYWxsCiBDRkxBR1MJKz0gLWZuby1zdHJpY3QtYWxpYXNpbmcKICMgY29tbWVudCBMREZMQUdTIGJlbG93IHRvIGtlZXAgZGVidWcgaW5mbwotTERGTEFHUwk9IC1zCitMREZMQUdTCT0gJChDVVJMX0xERkxBR19FWFRSQVMpICQoQ1VSTF9MREZMQUdfRVhUUkFTX0VYRSkgLXMKIEFSCT0gJChDUk9TU1BSRUZJWClhcgogUkMJPSAkKENST1NTUFJFRklYKXdpbmRyZXMKIFJDRkxBR1MJPSAtLWluY2x1ZGUtZGlyPSQoUFJPT1QpL2luY2x1ZGUgLU8gQ09GRgotU1RSSVAgICA9ICQoQ1JPU1NQUkVGSVgpc3RyaXAgLWcKK1NUUklQCT0gJChDUk9TU1BSRUZJWClzdHJpcCAtZwogCiAjIFdlIG1heSBuZWVkIHRoZXNlIHNvbWVkYXkKICMgUEVSTCA9IHBlcmwKQEAgLTgzLDE4ICsxMDUsMTggQEAKICMgU2V0IGVudmlyb25tZW50IHZhciBBUkNIIHRvIHlvdXIgYXJjaGl0ZWN0dXJlIHRvIG92ZXJyaWRlIGF1dG9kZXRlY3Rpb24uCiBpZm5kZWYgQVJDSAogaWZlcSAoJChmaW5kc3RyaW5nIHg4Nl82NCwkKHNoZWxsICQoQ0MpIC1kdW1wbWFjaGluZSkpLHg4Nl82NCkKLUFSQ0ggICAgPSB3NjQKK0FSQ0gJPSB3NjQKIGVsc2UKLUFSQ0ggICAgPSB3MzIKK0FSQ0gJPSB3MzIKIGVuZGlmCiBlbmRpZgogCiBpZmVxICgkKEFSQ0gpLHc2NCkKLUNGTEFHUwkrPSAtbTY0IC1EX0FNRDY0XworQ0ZMQUdTICArPSAtbTY0IC1EX0FNRDY0XwogTERGTEFHUyArPSAtbTY0CiBSQ0ZMQUdTICs9IC1GIHBlLXg4Ni02NAogZWxzZQotQ0ZMQUdTCSs9IC1tMzIKK0NGTEFHUyAgKz0gLW0zMgogTERGTEFHUyArPSAtbTMyCiBSQ0ZMQUdTICs9IC1GIHBlLWkzODYKIGVuZGlmCkBAIC0xNDYsNyArMTY4LDkgQEAKIGVuZGlmCiBpZmVxICgkKGZpbmRzdHJpbmcgLXNzaDIsJChDRkcpKSwtc3NoMikKIFNTSDIgPSAxCitpZm5lcSAoJChmaW5kc3RyaW5nIC13aW5zc2wsJChDRkcpKSwtd2luc3NsKQogU1NMID0gMQorZW5kaWYKIFpMSUIgPSAxCiBlbmRpZgogaWZlcSAoJChmaW5kc3RyaW5nIC1zc2wsJChDRkcpKSwtc3NsKQpAQCAtMjE0LDYgKzIzOCwxMSBAQAogaWZkZWYgU1NIMgogICBDRkxBR1MgKz0gLURVU0VfTElCU1NIMiAtREhBVkVfTElCU1NIMl9ICiAgIGN1cmxfTERBREQgKz0gLUwiJChMSUJTU0gyX1BBVEgpL3dpbjMyIiAtbHNzaDIKKyAgaWZkZWYgV0lOU1NMCisgICAgaWZuZGVmIERZTgorICAgICAgY3VybF9MREFERCArPSAtbGJjcnlwdCAtbGNyeXB0MzIKKyAgICBlbmRpZgorICBlbmRpZgogZW5kaWYKIGlmZGVmIFNTTAogICBpZm5kZWYgT1BFTlNTTF9JTkNMVURFCmRpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUubmV0d2FyZSBiL3NyYy9NYWtlZmlsZS5uZXR3YXJlCmluZGV4IDUwNjVjYmYuLjNlNGY2NTQgMTAwNjQ0Ci0tLSBhL3NyYy9NYWtlZmlsZS5uZXR3YXJlCisrKyBiL3NyYy9NYWtlZmlsZS5uZXR3YXJlCkBAIC0xLDkgKzEsMzEgQEAKKyMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworIyAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDA0IC0gMjAxNCwgR3VlbnRlciBLbmF1ZiwgPGh0dHA6Ly93d3cuZ2tudy5uZXQvcGhwYmI+LgorIyBDb3B5cmlnaHQgKEMpIDIwMDEgLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorIworIyBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAorIyB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisjIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorIworIyBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKyMgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisjIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCisjCisjIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKyMgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyMKKyMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMKICMjIE1ha2VmaWxlIGZvciBidWlsZGluZyBjdXJsLm5sbSAoTmV0V2FyZSB2ZXJzaW9uIC0gZ251IG1ha2UpCi0jIyBVc2U6IG1ha2UgLWYgTWFrZWZpbGUubmV0d2FyZQogIyMKLSMjIENvbW1lbnRzIHRvOiBHdWVudGVyIEtuYXVmIGh0dHA6Ly93d3cuZ2tudy5uZXQvcGhwYmIKKyMjIFVzZTogbWFrZSAtZiBNYWtlZmlsZS5uZXR3YXJlCiAjCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCkBAIC04MCw3ICsxMDIsNyBAQAogVEFSR0VUICA9IGN1cmwKIFZFUlNJT04JPSAkKExJQkNVUkxfVkVSU0lPTikKIENPUFlSCT0gQ29weXJpZ2h0IChDKSAkKExJQkNVUkxfQ09QWVJJR0hUX1NUUikKLURFU0NSCT0gY1VSTCAkKExJQkNVUkxfVkVSU0lPTl9TVFIpICgkKExJQkFSQ0gpKSAtIGh0dHA6Ly9jdXJsLmhheHguc2UKK0RFU0NSCT0gY1VSTCAkKExJQkNVUkxfVkVSU0lPTl9TVFIpICgkKExJQkFSQ0gpKSAtIGh0dHBzOi8vY3VybC5oYXh4LnNlCiBNVFNBRkUJPSBZRVMKIFNUQUNLCT0gNjQwMDAKIFNDUkVFTgk9ICQoVEFSR0VUKSBjb21tYW5kbGluZSB1dGlsaXR5CmRpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUudmM2IGIvc3JjL01ha2VmaWxlLnZjNgppbmRleCBlZWM4OWMyLi5mZjgyYTRkIDEwMDY0NAotLS0gYS9zcmMvTWFrZWZpbGUudmM2CisrKyBiL3NyYy9NYWtlZmlsZS52YzYKQEAgLTUsMTEgKzUsMTEgQEAKICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18NCiAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffA0KICMNCi0jIENvcHlyaWdodCAoQykgMTk5OSAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuDQorIyBDb3B5cmlnaHQgKEMpIDE5OTkgLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLg0KICMNCiAjIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoDQogIyB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zDQotIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLg0KKyMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuDQogIw0KICMgWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsDQogIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMNCkBAIC0xNDUsNiArMTQ1LDcgQEAKIAlyYXdzdHJyLm9iaiBcDQogCXN0cnRvb2ZmdHIub2JqIFwNCiAJd2Fybmxlc3Mub2JqIFwNCisJc2xpc3Rfd2Mub2JqIFwNCiAJdG9vbF9iaW5tb2Rlci5vYmogXA0KIAl0b29sX2JuYW1lci5vYmogXA0KIAl0b29sX2NiX2RiZ3Iub2JqIFwNCkBAIC0xOTAsNiArMTkxLDcgQEAKIAlyYXdzdHJkLm9iaiBcDQogCXN0cnRvb2ZmdGQub2JqIFwNCiAJd2Fybmxlc3NkLm9iaiBcDQorCXNsaXN0X3djZC5vYmogXA0KIAl0b29sX2Jpbm1vZGVkLm9iaiBcDQogCXRvb2xfYm5hbWVkLm9iaiBcDQogCXRvb2xfY2JfZGJnZC5vYmogXA0KQEAgLTM2Nyw2ICszNjksOCBAQAogCSQoQ0NSKSAkKENGTEFHUykgL0ZvIiRAIiAuLi9saWIvc3RydG9vZmZ0LmMNCiB3YXJubGVzcy5vYmo6IC4uL2xpYi93YXJubGVzcy5jDQogCSQoQ0NSKSAkKENGTEFHUykgL0ZvIiRAIiAuLi9saWIvd2Fybmxlc3MuYw0KK3NsaXN0X3djLm9iajogc2xpc3Rfd2MuYw0KKwkkKENDUikgJChDRkxBR1MpIC9GbyIkQCIgc2xpc3Rfd2MuYw0KIHRvb2xfYmlubW9kZXIub2JqOiB0b29sX2Jpbm1vZGUuYw0KIAkkKENDUikgJChDRkxBR1MpIC9GbyIkQCIgdG9vbF9iaW5tb2RlLmMNCiB0b29sX2JuYW1lci5vYmo6IHRvb2xfYm5hbWUuYw0KQEAgLTQ1NSw2ICs0NTksOCBAQAogCSQoQ0NEKSAkKENGTEFHUykgL0ZvIiRAIiAuLi9saWIvc3RydG9vZmZ0LmMNCiB3YXJubGVzc2Qub2JqOiAuLi9saWIvd2Fybmxlc3MuYw0KIAkkKENDRCkgJChDRkxBR1MpIC9GbyIkQCIgLi4vbGliL3dhcm5sZXNzLmMNCitzbGlzdF93Y2Qub2JqOiBzbGlzdF93Yy5jDQorCSQoQ0NEKSAkKENGTEFHUykgL0ZvIiRAIiBzbGlzdF93Yy5jDQogdG9vbF9iaW5tb2RlZC5vYmo6IHRvb2xfYmlubW9kZS5jDQogCSQoQ0NEKSAkKENGTEFHUykgL0ZvIiRAIiB0b29sX2Jpbm1vZGUuYw0KIHRvb2xfYm5hbWVkLm9iajogdG9vbF9ibmFtZS5jDQpkaWZmIC0tZ2l0IGEvc3JjL2NoZWNrc3JjLndoaXRlbGlzdCBiL3NyYy9jaGVja3NyYy53aGl0ZWxpc3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwNzhhYzEuLjAwMDAwMDAKLS0tIGEvc3JjL2NoZWNrc3JjLndoaXRlbGlzdAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotICogJ25hbWU9QGZpbGVuYW1lLGZpbGVuYW1lMixmaWxlbmFtZTMnCi0gKiAnbmFtZT1AZmlsZW5hbWU7dHlwZT1pbWFnZS9naWYsZmlsZW5hbWUyLGZpbGVuYW1lMycKLSAgZmlsZSA9IGZvcGVuKG5hbWUsICJyIik7IC8qIFZNUyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2N1cmwucmMgYi9zcmMvY3VybC5yYwppbmRleCAzZGI1OWJkLi4zMGFlNDQ0IDEwMDY0NAotLS0gYS9zcmMvY3VybC5yYworKysgYi9zcmMvY3VybC5yYwpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC00NCw3ICs0NCw3IEBACiAgIEJFR0lOCiAgICAgQkxPQ0sgIjA0MDkwNGIwIgogICAgIEJFR0lOCi0gICAgICBWQUxVRSAiQ29tcGFueU5hbWUiLCAgICAgICJjVVJMLCBodHRwOi8vY3VybC5oYXh4LnNlL1wwIgorICAgICAgVkFMVUUgIkNvbXBhbnlOYW1lIiwgICAgICAiY1VSTCwgaHR0cHM6Ly9jdXJsLmhheHguc2UvXDAiCiAgICAgICBWQUxVRSAiRmlsZURlc2NyaXB0aW9uIiwgICJUaGUgY1VSTCBleGVjdXRhYmxlXDAiCiAgICAgICBWQUxVRSAiRmlsZVZlcnNpb24iLCAgICAgIENVUkxfVkVSU0lPTiAiXDAiCiAgICAgICBWQUxVRSAiSW50ZXJuYWxOYW1lIiwgICAgICJjdXJsXDAiCkBAIC01Miw3ICs1Miw3IEBACiAgICAgICBWQUxVRSAiUHJvZHVjdE5hbWUiLCAgICAgICJUaGUgY1VSTCBleGVjdXRhYmxlXDAiCiAgICAgICBWQUxVRSAiUHJvZHVjdFZlcnNpb24iLCAgIENVUkxfVkVSU0lPTiAiXDAiCiAgICAgICBWQUxVRSAiTGVnYWxDb3B5cmlnaHQiLCAgICKpICIgQ1VSTF9DT1BZUklHSFQgIlwwIgotICAgICAgVkFMVUUgIkxpY2Vuc2UiLCAgICAgICAgICAiaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sXDAiCisgICAgICBWQUxVRSAiTGljZW5zZSIsICAgICAgICAgICJodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sXDAiCiAgICAgRU5ECiAgIEVORAogCmRpZmYgLS1naXQgYS9zcmMvbWFrZWZpbGUuZGogYi9zcmMvbWFrZWZpbGUuZGoKaW5kZXggZDM0Mjg1OS4uNmE2YzhmOSAxMDA2NDQKLS0tIGEvc3JjL21ha2VmaWxlLmRqCisrKyBiL3NyYy9tYWtlZmlsZS5kagpAQCAtMSw2ICsxLDI4IEBACisjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKyMgIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAjCi0jICBBZGFwdGVkIGZvciBkamdwcDIgLyBXYXR0LTMyIC8gRE9TIGJ5Ci0jICBHaXNsZSBWYW5lbSA8Z3ZhbmVtQGJyb2FkcGFyay5ubz4KKyMgQ29weXJpZ2h0IChDKSAyMDAzIC0gMjAwNywgR2lzbGUgVmFuZW0gPGd2YW5lbUB5YWhvby5ubz4uCisjIENvcHlyaWdodCAoQykgMjAwMyAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisjCisjIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKyMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisjCisjIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyMgZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKyMKKyMgVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQorIyBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorIworIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCisjCisjICBBZGFwdGVkIGZvciBkamdwcDIgLyBXYXR0LTMyIC8gRE9TCiAjCiAKIERFUEVORF9QUkVSRVEgPSAjIHRvb2xfaHVnZWhlbHAuYwpkaWZmIC0tZ2l0IGEvc3JjL21raGVscC5wbCBiL3NyYy9ta2hlbHAucGwKaW5kZXggMDg4YTA5YS4uNzRhNGI4MiAxMDA2NDQKLS0tIGEvc3JjL21raGVscC5wbAorKysgYi9zcmMvbWtoZWxwLnBsCkBAIC0xMCw3ICsxMCw3IEBACiAjCiAjIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAjCiAjIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3NyYy9zbGlzdF93Yy5jIGIvc3JjL3NsaXN0X3djLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTIzM2IxYgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9zbGlzdF93Yy5jCkBAIC0wLDAgKzEsNzIgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKyAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorICoKKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKgorICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKyAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICoKKyAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2luY2x1ZGUgInRvb2xfc2V0dXAuaCIKKworI2lmbmRlZiBDVVJMX0RJU0FCTEVfTElCQ1VSTF9PUFRJT04KKworI2luY2x1ZGUgInNsaXN0X3djLmgiCisKKy8qIFRoZSBsYXN0ICNpbmNsdWRlIGZpbGVzIHNob3VsZCBiZTogKi8KKyNpbmNsdWRlICJtZW1kZWJ1Zy5oIgorCisvKgorICogc2xpc3Rfd2NfYXBwZW5kKCkgYXBwZW5kcyBhIHN0cmluZyB0byB0aGUgbGlua2VkIGxpc3QuIFRoaXMgZnVuY3Rpb24gY2FuIGJlCisgKiB1c2VkIGFzIGFuIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIGFzIHdlbGwgYXMgYW4gYXBwZW5kIGZ1bmN0aW9uLgorICovCitzdHJ1Y3Qgc2xpc3Rfd2MgKnNsaXN0X3djX2FwcGVuZChzdHJ1Y3Qgc2xpc3Rfd2MgKmxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpkYXRhKQoreworICBzdHJ1Y3QgY3VybF9zbGlzdCAqbmV3X2l0ZW0gPSBjdXJsX3NsaXN0X2FwcGVuZChOVUxMLCBkYXRhKTsKKworICBpZighbmV3X2l0ZW0pCisgICAgcmV0dXJuIE5VTEw7CisKKyAgaWYoIWxpc3QpIHsKKyAgICBsaXN0ID0gbWFsbG9jKHNpemVvZihzdHJ1Y3Qgc2xpc3Rfd2MpKTsKKworICAgIGlmKCFsaXN0KSB7CisgICAgICBjdXJsX3NsaXN0X2ZyZWVfYWxsKG5ld19pdGVtKTsKKyAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGxpc3QtPmZpcnN0ID0gbmV3X2l0ZW07CisgICAgbGlzdC0+bGFzdCA9IG5ld19pdGVtOworICAgIHJldHVybiBsaXN0OworICB9CisKKyAgbGlzdC0+bGFzdC0+bmV4dCA9IG5ld19pdGVtOworICBsaXN0LT5sYXN0ID0gbGlzdC0+bGFzdC0+bmV4dDsKKyAgcmV0dXJuIGxpc3Q7Cit9CisKKy8qIGJlIG5pY2UgYW5kIGNsZWFuIHVwIHJlc291cmNlcyAqLwordm9pZCBzbGlzdF93Y19mcmVlX2FsbChzdHJ1Y3Qgc2xpc3Rfd2MgKmxpc3QpCit7CisgIGlmKCFsaXN0KQorICAgIHJldHVybjsKKworICBjdXJsX3NsaXN0X2ZyZWVfYWxsKGxpc3QtPmZpcnN0KTsKKyAgZnJlZShsaXN0KTsKK30KKworI2VuZGlmIC8qIENVUkxfRElTQUJMRV9MSUJDVVJMX09QVElPTiAqLwpkaWZmIC0tZ2l0IGEvc3JjL3NsaXN0X3djLmggYi9zcmMvc2xpc3Rfd2MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kODk0MzEyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3NsaXN0X3djLmgKQEAgLTAsMCArMSw1NiBAQAorI2lmbmRlZiBIRUFERVJfQ1VSTF9TTElTVF9XQ19ICisjZGVmaW5lIEhFQURFUl9DVVJMX1NMSVNUX1dDX0gKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKyAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorICoKKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKgorICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKyAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICoKKyAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2luY2x1ZGUgInRvb2xfc2V0dXAuaCIKKyNpZm5kZWYgQ1VSTF9ESVNBQkxFX0xJQkNVUkxfT1BUSU9OCisKKy8qIGxpbmtlZC1saXN0IHN0cnVjdHVyZSB3aXRoIGxhc3Qgbm9kZSBjYWNoZSBmb3IgZWFzeXNyYyAqLworc3RydWN0IHNsaXN0X3djIHsKKyAgc3RydWN0IGN1cmxfc2xpc3QgKmZpcnN0OworICBzdHJ1Y3QgY3VybF9zbGlzdCAqbGFzdDsKK307CisKKy8qCisgKiBOQU1FIGN1cmxfc2xpc3Rfd2NfYXBwZW5kKCkKKyAqCisgKiBERVNDUklQVElPTgorICoKKyAqIEFwcGVuZHMgYSBzdHJpbmcgdG8gYSBsaW5rZWQgbGlzdC4gSWYgbm8gbGlzdCBleGlzdHMsIGl0IHdpbGwgYmUgY3JlYXRlZAorICogZmlyc3QuIFJldHVybnMgdGhlIG5ldyBsaXN0LCBhZnRlciBhcHBlbmRpbmcuCisgKi8KK3N0cnVjdCBzbGlzdF93YyAqc2xpc3Rfd2NfYXBwZW5kKHN0cnVjdCBzbGlzdF93YyAqLCBjb25zdCBjaGFyICopOworCisvKgorICogTkFNRSBjdXJsX3NsaXN0X2ZyZWVfYWxsKCkKKyAqCisgKiBERVNDUklQVElPTgorICoKKyAqIGZyZWUgYSBwcmV2aW91c2x5IGJ1aWx0IGN1cmxfc2xpc3Rfd2MuCisgKi8KK3ZvaWQgc2xpc3Rfd2NfZnJlZV9hbGwoc3RydWN0IHNsaXN0X3djICopOworCisjZW5kaWYgLyogQ1VSTF9ESVNBQkxFX0xJQkNVUkxfT1BUSU9OICovCisKKyNlbmRpZiAvKiBIRUFERVJfQ1VSTF9TTElTVF9XQ19IICovCisKZGlmZiAtLWdpdCBhL3NyYy90b29sX2Jpbm1vZGUuYyBiL3NyYy90b29sX2Jpbm1vZGUuYwppbmRleCA1NDk1YmE0Li41Y2E2NGNkIDEwMDY0NAotLS0gYS9zcmMvdG9vbF9iaW5tb2RlLmMKKysrIGIvc3JjL3Rvb2xfYmlubW9kZS5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3NyYy90b29sX2Jpbm1vZGUuaCBiL3NyYy90b29sX2Jpbm1vZGUuaAppbmRleCBiNWNiMDhkLi44YjQ0NWFlIDEwMDY0NAotLS0gYS9zcmMvdG9vbF9iaW5tb2RlLmgKKysrIGIvc3JjL3Rvb2xfYmlubW9kZS5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xfYm5hbWUuYyBiL3NyYy90b29sX2JuYW1lLmMKaW5kZXggMjc3ODMwNS4uNWNjNWMxNSAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xfYm5hbWUuYworKysgYi9zcmMvdG9vbF9ibmFtZS5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3NyYy90b29sX2JuYW1lLmggYi9zcmMvdG9vbF9ibmFtZS5oCmluZGV4IDY5Y2Y5MmMuLjYxYjk3YjQgMTAwNjQ0Ci0tLSBhL3NyYy90b29sX2JuYW1lLmgKKysrIGIvc3JjL3Rvb2xfYm5hbWUuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3NyYy90b29sX2NiX2RiZy5jIGIvc3JjL3Rvb2xfY2JfZGJnLmMKaW5kZXggZjUyNzE0Ni4uOTdhNWM5MiAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xfY2JfZGJnLmMKKysrIGIvc3JjL3Rvb2xfY2JfZGJnLmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xfY2JfZGJnLmggYi9zcmMvdG9vbF9jYl9kYmcuaAppbmRleCBkMGVkN2IwLi43YWMxNWNmIDEwMDY0NAotLS0gYS9zcmMvdG9vbF9jYl9kYmcuaAorKysgYi9zcmMvdG9vbF9jYl9kYmcuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3NyYy90b29sX2NiX2hkci5jIGIvc3JjL3Rvb2xfY2JfaGRyLmMKaW5kZXggYWY5YmI4Ny4uZjdkODM1NSAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xfY2JfaGRyLmMKKysrIGIvc3JjL3Rvb2xfY2JfaGRyLmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgImN1cmx4LmgiCiAKICNpbmNsdWRlICJ0b29sX2NmZ2FibGUuaCIKKyNpbmNsdWRlICJ0b29sX2Rvc3dpbi5oIgogI2luY2x1ZGUgInRvb2xfbXNncy5oIgogI2luY2x1ZGUgInRvb2xfY2JfaGRyLmgiCiAKQEAgLTQ3LDYgKzQ4LDcgQEAKICAgY29uc3QgY2hhciAqc3RyID0gcHRyOwogICBjb25zdCBzaXplX3QgY2IgPSBzaXplICogbm1lbWI7CiAgIGNvbnN0IGNoYXIgKmVuZCA9IChjaGFyKilwdHIgKyBjYjsKKyAgY2hhciAqdXJsID0gTlVMTDsKIAogICAvKgogICAgKiBPbmNlIHRoYXQgbGliY3VybCBoYXMgY2FsbGVkIGJhY2sgdG9vbF9oZWFkZXJfY2IoKSB0aGUgcmV0dXJuZWQgdmFsdWUKQEAgLTc1LDYgKzc3LDggQEAKICAgICBzaXplX3QgcmMgPSBmd3JpdGUocHRyLCBzaXplLCBubWVtYiwgaGVhZHMtPnN0cmVhbSk7CiAgICAgaWYocmMgIT0gY2IpCiAgICAgICByZXR1cm4gcmM7CisgICAgLyogZmx1c2ggdGhlIHN0cmVhbSB0byBzZW5kIG9mZiB3aGF0IHdlIGdvdCBlYXJsaWVyICovCisgICAgKHZvaWQpZmZsdXNoKGhlYWRzLT5zdHJlYW0pOwogICB9CiAKICAgLyoKQEAgLTg1LDcgKzg5LDkgQEAKICAgICovCiAKICAgaWYoaGRyY2JkYXRhLT5ob25vcl9jZF9maWxlbmFtZSAmJgotICAgICAoY2IgPiAyMCkgJiYgY2hlY2twcmVmaXgoIkNvbnRlbnQtZGlzcG9zaXRpb246Iiwgc3RyKSkgeworICAgICAoY2IgPiAyMCkgJiYgY2hlY2twcmVmaXgoIkNvbnRlbnQtZGlzcG9zaXRpb246Iiwgc3RyKSAmJgorICAgICAhY3VybF9lYXN5X2dldGluZm8ob3V0cy0+Y29uZmlnLT5lYXN5LCBDVVJMSU5GT19FRkZFQ1RJVkVfVVJMLCAmdXJsKSAmJgorICAgICB1cmwgJiYgKGNoZWNrcHJlZml4KCJodHRwOi8vIiwgdXJsKSB8fCBjaGVja3ByZWZpeCgiaHR0cHM6Ly8iLCB1cmwpKSkgewogICAgIGNvbnN0IGNoYXIgKnAgPSBzdHIgKyAyMDsKIAogICAgIC8qIGxvb2sgZm9yIHRoZSAnZmlsZW5hbWU9JyBwYXJhbWV0ZXIKQEAgLTE3OSwxNSArMTg1LDEyIEBACiAgIH0KIAogICAvKiBzY2FuIGZvciB0aGUgZW5kIGxldHRlciBhbmQgc3RvcCB0aGVyZSAqLwotICBxID0gcDsKLSAgd2hpbGUoKnEpIHsKLSAgICBpZihxWzFdICYmIChxWzBdID09ICdcXCcpKQotICAgICAgcSsrOwotICAgIGVsc2UgaWYocVswXSA9PSBzdG9wKQorICBmb3IocSA9IHA7ICpxOyArK3EpIHsKKyAgICBpZigqcSA9PSBzdG9wKSB7CisgICAgICAqcSA9ICdcMCc7CiAgICAgICBicmVhazsKLSAgICBxKys7CisgICAgfQogICB9Ci0gICpxID0gJ1wwJzsKIAogICAvKiBtYWtlIHN1cmUgdGhlIGZpbGUgbmFtZSBkb2Vzbid0IGVuZCBpbiBcciBvciBcbiAqLwogICBxID0gc3RyY2hyKHAsICdccicpOwpAQCAtMjAxLDYgKzIwNCwxNyBAQAogICBpZihjb3B5ICE9IHApCiAgICAgbWVtbW92ZShjb3B5LCBwLCBzdHJsZW4ocCkgKyAxKTsKIAorI2lmIGRlZmluZWQoTVNET1MpIHx8IGRlZmluZWQoV0lOMzIpCisgIHsKKyAgICBjaGFyICpzYW5pdGl6ZWQ7CisgICAgU0FOSVRJWkVjb2RlIHNjID0gc2FuaXRpemVfZmlsZV9uYW1lKCZzYW5pdGl6ZWQsIGNvcHksIDApOworICAgIEN1cmxfc2FmZWZyZWUoY29weSk7CisgICAgaWYoc2MpCisgICAgICByZXR1cm4gTlVMTDsKKyAgICBjb3B5ID0gc2FuaXRpemVkOworICB9CisjZW5kaWYgLyogTVNET1MgfHwgV0lOMzIgKi8KKwogICAvKiBpbiBjYXNlIHdlIGJ1aWx0IGRlYnVnIGVuYWJsZWQsIHdlIGFsbG93IGFuIGV2aXJvbm1lbnQgdmFyaWFibGUKICAgICogbmFtZWQgQ1VSTF9URVNURElSIHRvIHByZWZpeCB0aGUgZ2l2ZW4gZmlsZSBuYW1lIHRvIHB1dCBpdCBpbnRvIGEKICAgICogc3BlY2lmaWMgZGlyZWN0b3J5CmRpZmYgLS1naXQgYS9zcmMvdG9vbF9jYl9oZHIuaCBiL3NyYy90b29sX2NiX2hkci5oCmluZGV4IGJkNTA0MzEuLmJiNTRiYmIgMTAwNjQ0Ci0tLSBhL3NyYy90b29sX2NiX2hkci5oCisrKyBiL3NyYy90b29sX2NiX2hkci5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xfY2JfcHJnLmMgYi9zcmMvdG9vbF9jYl9wcmcuYwppbmRleCA5ZTNjNWZiLi5lYWU4MGZlIDEwMDY0NAotLS0gYS9zcmMvdG9vbF9jYl9wcmcuYworKysgYi9zcmMvdG9vbF9jYl9wcmcuYwpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9zcmMvdG9vbF9jYl9wcmcuaCBiL3NyYy90b29sX2NiX3ByZy5oCmluZGV4IGM2MzViZTguLmQ2MmI0YTAgMTAwNjQ0Ci0tLSBhL3NyYy90b29sX2NiX3ByZy5oCisrKyBiL3NyYy90b29sX2NiX3ByZy5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xfY2JfcmVhLmMgYi9zcmMvdG9vbF9jYl9yZWEuYwppbmRleCA0NTY1YTE1Li44ODEzN2FlIDEwMDY0NAotLS0gYS9zcmMvdG9vbF9jYl9yZWEuYworKysgYi9zcmMvdG9vbF9jYl9yZWEuYwpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9zcmMvdG9vbF9jYl9yZWEuaCBiL3NyYy90b29sX2NiX3JlYS5oCmluZGV4IDQyOTQxNjYuLjVmYmM3OTMgMTAwNjQ0Ci0tLSBhL3NyYy90b29sX2NiX3JlYS5oCisrKyBiL3NyYy90b29sX2NiX3JlYS5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xfY2Jfc2VlLmMgYi9zcmMvdG9vbF9jYl9zZWUuYwppbmRleCAyZjQ5ZTFkLi42MjFkNDQwIDEwMDY0NAotLS0gYS9zcmMvdG9vbF9jYl9zZWUuYworKysgYi9zcmMvdG9vbF9jYl9zZWUuYwpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9zcmMvdG9vbF9jYl9zZWUuaCBiL3NyYy90b29sX2NiX3NlZS5oCmluZGV4IGNlYjIyZDYuLmIwNzc0MWQgMTAwNjQ0Ci0tLSBhL3NyYy90b29sX2NiX3NlZS5oCisrKyBiL3NyYy90b29sX2NiX3NlZS5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xfY2Jfd3J0LmMgYi9zcmMvdG9vbF9jYl93cnQuYwppbmRleCA5YmUzOTNmLi4wNDEzNDU3IDEwMDY0NAotLS0gYS9zcmMvdG9vbF9jYl93cnQuYworKysgYi9zcmMvdG9vbF9jYl93cnQuYwpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9zcmMvdG9vbF9jYl93cnQuaCBiL3NyYy90b29sX2NiX3dydC5oCmluZGV4IGVjYmVmYTguLmZjNjBiZTAgMTAwNjQ0Ci0tLSBhL3NyYy90b29sX2NiX3dydC5oCisrKyBiL3NyYy90b29sX2NiX3dydC5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xfY2ZnYWJsZS5jIGIvc3JjL3Rvb2xfY2ZnYWJsZS5jCmluZGV4IGJhNmM0NjguLjhiNjBhOTEgMTAwNjQ0Ci0tLSBhL3NyYy90b29sX2NmZ2FibGUuYworKysgYi9zcmMvdG9vbF9jZmdhYmxlLmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNDAsNiArNDAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgfihDVVJMUFJPVE9fRklMRSB8IENVUkxQUk9UT19TQ1AgfCBDVVJMUFJPVE9fU01CIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSTFBST1RPX1NNQlMpOwogICBjb25maWctPnByb3RvX3JlZGlyX3ByZXNlbnQgPSBGQUxTRTsKKyAgY29uZmlnLT5wcm90b19kZWZhdWx0ID0gTlVMTDsKIH0KIAogc3RhdGljIHZvaWQgZnJlZV9jb25maWdfZmllbGRzKHN0cnVjdCBPcGVyYXRpb25Db25maWcgKmNvbmZpZykKQEAgLTExMywxMCArMTE0LDExIEBACiAgIEN1cmxfc2FmZWZyZWUoY29uZmlnLT5jdXN0b21yZXF1ZXN0KTsKICAgQ3VybF9zYWZlZnJlZShjb25maWctPmtyYmxldmVsKTsKIAotICBDdXJsX3NhZmVmcmVlKGNvbmZpZy0+eG9hdXRoMl9iZWFyZXIpOworICBDdXJsX3NhZmVmcmVlKGNvbmZpZy0+b2F1dGhfYmVhcmVyKTsKIAogICBDdXJsX3NhZmVmcmVlKGNvbmZpZy0+dW5peF9zb2NrZXRfcGF0aCk7CiAgIEN1cmxfc2FmZWZyZWUoY29uZmlnLT53cml0ZW91dCk7CisgIEN1cmxfc2FmZWZyZWUoY29uZmlnLT5wcm90b19kZWZhdWx0KTsKIAogICBjdXJsX3NsaXN0X2ZyZWVfYWxsKGNvbmZpZy0+cXVvdGUpOwogICBjdXJsX3NsaXN0X2ZyZWVfYWxsKGNvbmZpZy0+cG9zdHF1b3RlKTsKQEAgLTEzMyw5ICsxMzUsOSBAQAogCiAgIGN1cmxfc2xpc3RfZnJlZV9hbGwoY29uZmlnLT50ZWxuZXRfb3B0aW9ucyk7CiAgIGN1cmxfc2xpc3RfZnJlZV9hbGwoY29uZmlnLT5yZXNvbHZlKTsKKyAgY3VybF9zbGlzdF9mcmVlX2FsbChjb25maWctPmNvbm5lY3RfdG8pOwogCiAgIEN1cmxfc2FmZWZyZWUoY29uZmlnLT5zb2Nrc3Byb3h5KTsKLSAgQ3VybF9zYWZlZnJlZShjb25maWctPnNvY2tzNV9nc3NhcGlfc2VydmljZSk7CiAgIEN1cmxfc2FmZWZyZWUoY29uZmlnLT5wcm94eV9zZXJ2aWNlX25hbWUpOwogICBDdXJsX3NhZmVmcmVlKGNvbmZpZy0+c2VydmljZV9uYW1lKTsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xfY2ZnYWJsZS5oIGIvc3JjL3Rvb2xfY2ZnYWJsZS5oCmluZGV4IDA0OGViNGYuLmFhOThmY2UgMTAwNjQ0Ci0tLSBhL3NyYy90b29sX2NmZ2FibGUuaAorKysgYi9zcmMvdG9vbF9jZmdhYmxlLmgKQEAgLTcsMTEgKzcsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC01MSw2ICs1MSw3IEBACiAgIGJvb2wgcHJvdG9fcHJlc2VudDsKICAgbG9uZyBwcm90b19yZWRpcjsKICAgYm9vbCBwcm90b19yZWRpcl9wcmVzZW50OworICBjaGFyICpwcm90b19kZWZhdWx0OwogICBjdXJsX29mZl90IHJlc3VtZV9mcm9tOwogICBjaGFyICpwb3N0ZmllbGRzOwogICBjdXJsX29mZl90IHBvc3RmaWVsZHNpemU7CkBAIC0xNTAsNiArMTUxLDcgQEAKICAgc3RydWN0IGN1cmxfaHR0cHBvc3QgKmxhc3RfcG9zdDsKICAgc3RydWN0IGN1cmxfc2xpc3QgKnRlbG5ldF9vcHRpb25zOwogICBzdHJ1Y3QgY3VybF9zbGlzdCAqcmVzb2x2ZTsKKyAgc3RydWN0IGN1cmxfc2xpc3QgKmNvbm5lY3RfdG87CiAgIEh0dHBSZXEgaHR0cHJlcTsKIAogICAvKiBmb3IgYmFuZHdpZHRoIGxpbWl0aW5nIGZlYXR1cmVzOiAqLwpAQCAtMTY0LDE2ICsxNjYsMTUgQEAKIAogICBjaGFyICpzb2Nrc3Byb3h5OyAgICAgICAgIC8qIHNldCB0byBzZXJ2ZXIgc3RyaW5nICovCiAgIGludCBzb2Nrc3ZlcjsgICAgICAgICAgICAgLyogc2V0IHRvIENVUkxQUk9YWV9TT0NLUyogZGVmaW5lICovCi0gIGNoYXIgKnNvY2tzNV9nc3NhcGlfc2VydmljZTsgIC8qIHNldCBzZXJ2aWNlIG5hbWUgZm9yIGdzc2FwaSBwcmluY2lwYWwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogZGVmYXVsdCByY21kICovCi0gIGNoYXIgKnByb3h5X3NlcnZpY2VfbmFtZTsgLyogc2V0IHNlcnZpY2UgbmFtZSBmb3IgcHJveHkgbmVnb3RpYXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBkZWZhdWx0IEhUVFAgKi8KLSAgaW50IHNvY2tzNV9nc3NhcGlfbmVjIDsgICAvKiBUaGUgTkVDIHJlZmVyZW5jZSBzZXJ2ZXIgZG9lcyBub3QgcHJvdGVjdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHRoZSBlbmNyeXB0aW9uIHR5cGUgZXhjaGFuZ2UgKi8KLSAgY2hhciAqc2VydmljZV9uYW1lOyAgICAgICAvKiBzZXQgbmVnb3RpYXRpb24gc2VydmljZSBuYW1lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICogZGVmYXVsdCBIVFRQICovCisgIGludCBzb2NrczVfZ3NzYXBpX25lYzsgICAgLyogVGhlIE5FQyByZWZlcmVuY2Ugc2VydmVyIGRvZXMgbm90IHByb3RlY3QgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jcnlwdGlvbiB0eXBlIGV4Y2hhbmdlICovCisgIGNoYXIgKnByb3h5X3NlcnZpY2VfbmFtZTsgLyogc2V0IGF1dGhlbnRpY2F0aW9uIHNlcnZpY2UgbmFtZSBmb3IgSFRUUCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTT0NLUzUgcHJveGllcyAqLworICBjaGFyICpzZXJ2aWNlX25hbWU7ICAgICAgIC8qIHNldCBhdXRoZW50aWNhdGlvbiBzZXJ2aWNlIG5hbWUgZm9yIERJR0VTVC1NRDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS2VyYmVyb3MgNSBhbmQgU1BORUdPICovCiAKICAgYm9vbCB0Y3Bfbm9kZWxheTsKKyAgYm9vbCB0Y3BfZmFzdG9wZW47CiAgIGxvbmcgcmVxX3JldHJ5OyAgICAgICAgICAgLyogbnVtYmVyIG9mIHJldHJpZXMgKi8KICAgbG9uZyByZXRyeV9kZWxheTsgICAgICAgICAvKiBkZWxheSBiZXR3ZWVuIHJldHJpZXMgKGluIHNlY29uZHMpICovCiAgIGxvbmcgcmV0cnlfbWF4dGltZTsgICAgICAgLyogbWF4aW11bSB0aW1lIHRvIGtlZXAgcmV0cnlpbmcgKi8KQEAgLTE4Miw2ICsxODMsNyBAQAogICBjaGFyICpmdHBfYWx0ZXJuYXRpdmVfdG9fdXNlcjsgIC8qIHNlbmQgY29tbWFuZCBpZiBVU0VSL1BBU1MgZmFpbHMgKi8KICAgaW50IGZ0cF9maWxlbWV0aG9kOwogICBsb25nIHRmdHBfYmxrc2l6ZTsgICAgICAgIC8qIFRGVFAgQkxLU0laRSBvcHRpb24gKi8KKyAgYm9vbCB0ZnRwX25vX29wdGlvbnM7ICAgICAvKiBkbyBub3Qgc2VuZCBURlRQIG9wdGlvbnMgcmVxdWVzdHMgKi8KICAgYm9vbCBpZ25vcmVjbDsgICAgICAgICAgICAvKiAtLWlnbm9yZS1jb250ZW50LWxlbmd0aCAqLwogICBib29sIGRpc2FibGVfc2Vzc2lvbmlkOwogCkBAIC0xOTksNiArMjAxLDcgQEAKICAgYm9vbCB4YXR0cjsgICAgICAgICAgICAgICAvKiBzdG9yZSBtZXRhZGF0YSBpbiBleHRlbmRlZCBhdHRyaWJ1dGVzICovCiAgIGxvbmcgZ3NzYXBpX2RlbGVnYXRpb247CiAgIGJvb2wgc3NsX2FsbG93X2JlYXN0OyAgICAgLyogYWxsb3cgdGhpcyBTU0wgdnVsbmVyYWJpbGl0eSAqLworICBib29sIHNzbF9ub19yZXZva2U7ICAgICAgIC8qIGRpc2FibGUgU1NMIGNlcnRpZmljYXRlIHJldm9jYXRpb24gY2hlY2tzICovCiAKICAgYm9vbCB1c2VfbWV0YWxpbms7ICAgICAgICAvKiBwcm9jZXNzIGdpdmVuIFVSTHMgYXMgbWV0YWxpbmsgWE1MIGZpbGUgKi8KICAgbWV0YWxpbmtmaWxlICptZXRhbGlua2ZpbGVfbGlzdDsgLyogcG9pbnQgdG8gdGhlIGZpcnN0IG5vZGUgKi8KQEAgLTIwNiwxMiArMjA5LDEzIEBACiAjaWZkZWYgQ1VSTERFQlVHCiAgIGJvb2wgdGVzdF9ldmVudF9iYXNlZDsKICNlbmRpZgotICBjaGFyICp4b2F1dGgyX2JlYXJlcjsgICAgICAgICAgIC8qIFhPQVVUSDIgYmVhcmVyIHRva2VuICovCisgIGNoYXIgKm9hdXRoX2JlYXJlcjsgICAgICAgICAgICAgLyogT0F1dGggMi4wIGJlYXJlciB0b2tlbiAqLwogICBib29sIG5vbnBuOyAgICAgICAgICAgICAgICAgICAgIC8qIGVuYWJsZS9kaXNhYmxlIFRMUyBOUE4gZXh0ZW5zaW9uICovCiAgIGJvb2wgbm9hbHBuOyAgICAgICAgICAgICAgICAgICAgLyogZW5hYmxlL2Rpc2FibGUgVExTIEFMUE4gZXh0ZW5zaW9uICovCiAgIGNoYXIgKnVuaXhfc29ja2V0X3BhdGg7ICAgICAgICAgLyogcGF0aCB0byBVbml4IGRvbWFpbiBzb2NrZXQgKi8KICAgYm9vbCBmYWxzZXN0YXJ0OwogICBib29sIHBhdGhfYXNfaXM7CisgIGRvdWJsZSBleHBlY3QxMDB0aW1lb3V0OwogICBzdHJ1Y3QgR2xvYmFsQ29uZmlnICpnbG9iYWw7CiAgIHN0cnVjdCBPcGVyYXRpb25Db25maWcgKnByZXY7CiAgIHN0cnVjdCBPcGVyYXRpb25Db25maWcgKm5leHQ7ICAgLyogQWx3YXlzIGxhc3QgaW4gdGhlIHN0cnVjdCAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xfY29udmVydC5jIGIvc3JjL3Rvb2xfY29udmVydC5jCmluZGV4IGVjY2UwMzYuLmQwZjVkY2IgMTAwNjQ0Ci0tLSBhL3NyYy90b29sX2NvbnZlcnQuYworKysgYi9zcmMvdG9vbF9jb252ZXJ0LmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xfY29udmVydC5oIGIvc3JjL3Rvb2xfY29udmVydC5oCmluZGV4IDMyZDQ3M2YuLmQxYjFkMjMgMTAwNjQ0Ci0tLSBhL3NyYy90b29sX2NvbnZlcnQuaAorKysgYi9zcmMvdG9vbF9jb252ZXJ0LmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9zcmMvdG9vbF9kaXJoaWUuYyBiL3NyYy90b29sX2RpcmhpZS5jCmluZGV4IGI2YTgwNjcuLmI2NWRiNDEgMTAwNjQ0Ci0tLSBhL3NyYy90b29sX2RpcmhpZS5jCisrKyBiL3NyYy90b29sX2RpcmhpZS5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3NyYy90b29sX2RpcmhpZS5oIGIvc3JjL3Rvb2xfZGlyaGllLmgKaW5kZXggNWYxOTU3NS4uY2M2NzY4NyAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xfZGlyaGllLmgKKysrIGIvc3JjL3Rvb2xfZGlyaGllLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9zcmMvdG9vbF9kb3N3aW4uYyBiL3NyYy90b29sX2Rvc3dpbi5jCmluZGV4IGRkNmU4YmIuLmFlZDY1N2EgMTAwNjQ0Ci0tLSBhL3NyYy90b29sX2Rvc3dpbi5jCisrKyBiL3NyYy90b29sX2Rvc3dpbi5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTg1LDQ0ICs4NSwyNTkgQEAKICMgIGluY2x1ZGUgPGZjbnRsLmg+ICAgICAgICAgICAgICAgIC8qIF91c2VfbGZuKGYpIHByb3RvdHlwZSAqLwogI2VuZGlmCiAKLXN0YXRpYyBjb25zdCBjaGFyICptc2Rvc2lmeSAoY29uc3QgY2hhciAqZmlsZV9uYW1lKTsKLXN0YXRpYyBjaGFyICpyZW5hbWVfaWZfZG9zX2RldmljZV9uYW1lIChjaGFyICpmaWxlX25hbWUpOworI2lmbmRlZiBVTklUVEVTVFMKK3N0YXRpYyBTQU5JVElaRWNvZGUgdHJ1bmNhdGVfZHJ5cnVuKGNvbnN0IGNoYXIgKnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaXplX3QgdHJ1bmNhdGVfcG9zKTsKKyNpZmRlZiBNU0RPUworc3RhdGljIFNBTklUSVpFY29kZSBtc2Rvc2lmeShjaGFyICoqY29uc3Qgc2FuaXRpemVkLCBjb25zdCBjaGFyICpmaWxlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmbGFncyk7CisjZW5kaWYKK3N0YXRpYyBTQU5JVElaRWNvZGUgcmVuYW1lX2lmX3Jlc2VydmVkX2Rvc19kZXZpY2VfbmFtZShjaGFyICoqY29uc3Qgc2FuaXRpemVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZpbGVfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmxhZ3MpOworI2VuZGlmIC8qICFVTklUVEVTVFMgKHN0YXRpYyBkZWNsYXJhdGlvbnMgdXNlZCBpZiBubyB1bml0IHRlc3RzKSAqLworCiAKIC8qCi0gKiBzYW5pdGl6ZV9kb3NfbmFtZTogcmV0dXJucyBhIG5ld2x5IGFsbG9jYXRlZCBzdHJpbmcgaG9sZGluZyBhCi0gKiB2YWxpZCBmaWxlIG5hbWUgd2hpY2ggd2lsbCBiZSBhIHRyYW5zZm9ybWF0aW9uIG9mIGdpdmVuIGFyZ3VtZW50Ci0gKiBpbiBjYXNlIHRoaXMgd2Fzbid0IGFscmVhZHkgYSB2YWxpZCBmaWxlIG5hbWUuCi0gKgotICogVGhpcyBmdW5jdGlvbiB0YWtlcyBvd25lcnNoaXAgb2YgZ2l2ZW4gYXJndW1lbnQsIGZyZWUnaW5nIGl0IGJlZm9yZQotICogcmV0dXJuaW5nLiBDYWxsZXIgaXMgcmVzcG9uc2libGUgb2YgZnJlZSdpbmcgcmV0dXJuZWQgc3RyaW5nLiBVcG9uCi0gKiBvdXQgb2YgbWVtb3J5IGNvbmRpdGlvbiBmdW5jdGlvbiByZXR1cm5zIE5VTEwuCi0gKi8KK1Nhbml0aXplIGEgZmlsZSBvciBwYXRoIG5hbWUuCiAKLWNoYXIgKnNhbml0aXplX2Rvc19uYW1lKGNoYXIgKmZpbGVfbmFtZSkKK0FsbCBiYW5uZWQgY2hhcmFjdGVycyBhcmUgcmVwbGFjZWQgYnkgdW5kZXJzY29yZXMsIGZvciBleGFtcGxlOgorZj8qZm9vID0+IGZfX2ZvbworZjpmb286OiREQVRBID0+IGZfZm9vX18kREFUQQorZjpcZm9vOmJhciA9PiBmX19mb29fYmFyCitmOlxmb286YmFyID0+IGY6XGZvbzpiYXIgICAoZmxhZyBTQU5JVElaRV9BTExPV19QQVRIKQorCitUaGlzIGZ1bmN0aW9uIHdhcyBpbXBsZW1lbnRlZCBhY2NvcmRpbmcgdG8gdGhlIGd1aWRlbGluZXMgaW4gJ05hbWluZyBGaWxlcywKK1BhdGhzLCBhbmQgTmFtZXNwYWNlcycgc2VjdGlvbiAnTmFtaW5nIENvbnZlbnRpb25zJy4KK2h0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL2FhMzY1MjQ3LmFzcHgKKworRmxhZ3MKKy0tLS0tCitTQU5JVElaRV9BTExPV19DT0xPTlM6ICAgICBBbGxvdyBjb2xvbnMuCitXaXRob3V0IHRoaXMgZmxhZyBjb2xvbnMgYXJlIHNhbml0aXplZC4KKworU0FOSVRJWkVfQUxMT1dfUEFUSDogICAgICAgQWxsb3cgcGF0aCBzZXBhcmF0b3JzIGFuZCBjb2xvbnMuCitXaXRob3V0IHRoaXMgZmxhZyBwYXRoIHNlcGFyYXRvcnMgYW5kIGNvbG9ucyBhcmUgc2FuaXRpemVkLgorCitTQU5JVElaRV9BTExPV19SRVNFUlZFRDogICBBbGxvdyByZXNlcnZlZCBkZXZpY2UgbmFtZXMuCitXaXRob3V0IHRoaXMgZmxhZyBhIHJlc2VydmVkIGRldmljZSBuYW1lIGlzIHJlbmFtZWQgKENPTTEgPT4gX0NPTTEpIHVubGVzcyBpdCdzCitpbiBhIFVOQyBwcmVmaXhlZCBwYXRoLgorCitTQU5JVElaRV9BTExPV19UUlVOQ0FURTogICBBbGxvdyB0cnVuY2F0aW5nIGEgbG9uZyBmaWxlbmFtZS4KK1dpdGhvdXQgdGhpcyBmbGFnIGlmIHRoZSBzYW5pdGl6ZWQgZmlsZW5hbWUgb3IgcGF0aCB3aWxsIGJlIHRvbyBsb25nIGFuIGVycm9yCitvY2N1cnMuIFdpdGggdGhpcyBmbGFnIHRoZSBmaWxlbmFtZSAtLWFuZCBub3QgYW55IG90aGVyIHBhcnRzIG9mIHRoZSBwYXRoLS0gbWF5CitiZSB0cnVuY2F0ZWQgdG8gYXQgbGVhc3QgYSBzaW5nbGUgY2hhcmFjdGVyLiBBIGZpbGVuYW1lIGZvbGxvd2VkIGJ5IGFuCithbHRlcm5hdGUgZGF0YSBzdHJlYW0gKEFEUykgY2Fubm90IGJlIHRydW5jYXRlZCBpbiBhbnkgY2FzZS4KKworU3VjY2VzczogKFNBTklUSVpFX0VSUl9PSykgKnNhbml0aXplZCBwb2ludHMgdG8gYSBzYW5pdGl6ZWQgY29weSBvZiBmaWxlX25hbWUuCitGYWlsdXJlOiAoIT0gU0FOSVRJWkVfRVJSX09LKSAqc2FuaXRpemVkIGlzIE5VTEwuCisqLworU0FOSVRJWkVjb2RlIHNhbml0aXplX2ZpbGVfbmFtZShjaGFyICoqY29uc3Qgc2FuaXRpemVkLCBjb25zdCBjaGFyICpmaWxlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmbGFncykKIHsKLSAgY2hhciBuZXdfbmFtZVtQQVRIX01BWF07CisgIGNoYXIgKnAsICp0YXJnZXQ7CisgIHNpemVfdCBsZW47CisgIFNBTklUSVpFY29kZSBzYzsKKyAgc2l6ZV90IG1heF9zYW5pdGl6ZWRfbGVuOworCisgIGlmKCFzYW5pdGl6ZWQpCisgICAgcmV0dXJuIFNBTklUSVpFX0VSUl9CQURfQVJHVU1FTlQ7CisKKyAgKnNhbml0aXplZCA9IE5VTEw7CiAKICAgaWYoIWZpbGVfbmFtZSkKLSAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gU0FOSVRJWkVfRVJSX0JBRF9BUkdVTUVOVDsKIAotICBpZihzdHJsZW4oZmlsZV9uYW1lKSA+PSBQQVRIX01BWCkKLSAgICBmaWxlX25hbWVbUEFUSF9NQVgtMV0gPSAnXDAnOyAvKiB0cnVuY2F0ZSBpdCAqLworICBpZigoZmxhZ3MgJiBTQU5JVElaRV9BTExPV19QQVRIKSkgeworI2lmbmRlZiBNU0RPUworICAgIGlmKGZpbGVfbmFtZVswXSA9PSAnXFwnICYmIGZpbGVfbmFtZVsxXSA9PSAnXFwnKQorICAgICAgLyogVU5DIHByZWZpeGVkIHBhdGggXFwgKGVnIFxcP1xDOlxmb28pICovCisgICAgICBtYXhfc2FuaXRpemVkX2xlbiA9IDMyNzY3LTE7CisgICAgZWxzZQorI2VuZGlmCisgICAgICBtYXhfc2FuaXRpemVkX2xlbiA9IFBBVEhfTUFYLTE7CisgIH0KKyAgZWxzZQorICAgIC8qIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhIGZpbGVuYW1lLgorICAgICAgIEZJTEVOQU1FX01BWCBpcyBvZnRlbiB0aGUgc2FtZSBhcyBQQVRIX01BWCwgaW4gb3RoZXIgd29yZHMgaXQgaXMgMjYwIGFuZAorICAgICAgIGRvZXMgbm90IGRpc2NvdW50IHRoZSBwYXRoIGluZm9ybWF0aW9uIHRoZXJlZm9yZSB3ZSBzaG91bGRuJ3QgdXNlIGl0LiAqLworICAgIG1heF9zYW5pdGl6ZWRfbGVuID0gKFBBVEhfTUFYLTEgPiAyNTUpID8gMjU1IDogUEFUSF9NQVgtMTsKIAotICBzdHJjcHkobmV3X25hbWUsIG1zZG9zaWZ5KGZpbGVfbmFtZSkpOworICBsZW4gPSBzdHJsZW4oZmlsZV9uYW1lKTsKKyAgaWYobGVuID4gbWF4X3Nhbml0aXplZF9sZW4pIHsKKyAgICBpZighKGZsYWdzICYgU0FOSVRJWkVfQUxMT1dfVFJVTkNBVEUpIHx8CisgICAgICAgdHJ1bmNhdGVfZHJ5cnVuKGZpbGVfbmFtZSwgbWF4X3Nhbml0aXplZF9sZW4pKQorICAgICAgcmV0dXJuIFNBTklUSVpFX0VSUl9JTlZBTElEX1BBVEg7CiAKLSAgQ3VybF9zYWZlZnJlZShmaWxlX25hbWUpOworICAgIGxlbiA9IG1heF9zYW5pdGl6ZWRfbGVuOworICB9CiAKLSAgcmV0dXJuIHN0cmR1cChyZW5hbWVfaWZfZG9zX2RldmljZV9uYW1lKG5ld19uYW1lKSk7CisgIHRhcmdldCA9IG1hbGxvYyhsZW4gKyAxKTsKKyAgaWYoIXRhcmdldCkKKyAgICByZXR1cm4gU0FOSVRJWkVfRVJSX09VVF9PRl9NRU1PUlk7CisKKyAgc3RybmNweSh0YXJnZXQsIGZpbGVfbmFtZSwgbGVuKTsKKyAgdGFyZ2V0W2xlbl0gPSAnXDAnOworCisjaWZuZGVmIE1TRE9TCisgIGlmKChmbGFncyAmIFNBTklUSVpFX0FMTE9XX1BBVEgpICYmICFzdHJuY21wKHRhcmdldCwgIlxcXFw/XFwiLCA0KSkKKyAgICAvKiBTa2lwIHRoZSBsaXRlcmFsIHBhdGggcHJlZml4IFxcP1wgKi8KKyAgICBwID0gdGFyZ2V0ICsgNDsKKyAgZWxzZQorI2VuZGlmCisgICAgcCA9IHRhcmdldDsKKworICAvKiByZXBsYWNlIGNvbnRyb2wgY2hhcmFjdGVycyBhbmQgb3RoZXIgYmFubmVkIGNoYXJhY3RlcnMgKi8KKyAgZm9yKDsgKnA7ICsrcCkgeworICAgIGNvbnN0IGNoYXIgKmJhbm5lZDsKKworICAgIGlmKCgxIDw9ICpwICYmICpwIDw9IDMxKSB8fAorICAgICAgICghKGZsYWdzICYgKFNBTklUSVpFX0FMTE9XX0NPTE9OU3xTQU5JVElaRV9BTExPV19QQVRIKSkgJiYgKnAgPT0gJzonKSB8fAorICAgICAgICghKGZsYWdzICYgU0FOSVRJWkVfQUxMT1dfUEFUSCkgJiYgKCpwID09ICcvJyB8fCAqcCA9PSAnXFwnKSkpIHsKKyAgICAgICpwID0gJ18nOworICAgICAgY29udGludWU7CisgICAgfQorCisgICAgZm9yKGJhbm5lZCA9ICJ8PD5cIj8qIjsgKmJhbm5lZDsgKytiYW5uZWQpIHsKKyAgICAgIGlmKCpwID09ICpiYW5uZWQpIHsKKyAgICAgICAgKnAgPSAnXyc7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgIH0KKyAgfQorCisgIC8qIHJlbW92ZSB0cmFpbGluZyBzcGFjZXMgYW5kIHBlcmlvZHMgaWYgbm90IGFsbG93aW5nIHBhdGhzICovCisgIGlmKCEoZmxhZ3MgJiBTQU5JVElaRV9BTExPV19QQVRIKSAmJiBsZW4pIHsKKyAgICBjaGFyICpjbGlwID0gTlVMTDsKKworICAgIHAgPSAmdGFyZ2V0W2xlbl07CisgICAgZG8geworICAgICAgLS1wOworICAgICAgaWYoKnAgIT0gJyAnICYmICpwICE9ICcuJykKKyAgICAgICAgYnJlYWs7CisgICAgICBjbGlwID0gcDsKKyAgICB9IHdoaWxlKHAgIT0gdGFyZ2V0KTsKKworICAgIGlmKGNsaXApIHsKKyAgICAgICpjbGlwID0gJ1wwJzsKKyAgICAgIGxlbiA9IGNsaXAgLSB0YXJnZXQ7CisgICAgfQorICB9CisKKyNpZmRlZiBNU0RPUworICBzYyA9IG1zZG9zaWZ5KCZwLCB0YXJnZXQsIGZsYWdzKTsKKyAgZnJlZSh0YXJnZXQpOworICBpZihzYykKKyAgICByZXR1cm4gc2M7CisgIHRhcmdldCA9IHA7CisgIGxlbiA9IHN0cmxlbih0YXJnZXQpOworCisgIGlmKGxlbiA+IG1heF9zYW5pdGl6ZWRfbGVuKSB7CisgICAgZnJlZSh0YXJnZXQpOworICAgIHJldHVybiBTQU5JVElaRV9FUlJfSU5WQUxJRF9QQVRIOworICB9CisjZW5kaWYKKworICBpZighKGZsYWdzICYgU0FOSVRJWkVfQUxMT1dfUkVTRVJWRUQpKSB7CisgICAgc2MgPSByZW5hbWVfaWZfcmVzZXJ2ZWRfZG9zX2RldmljZV9uYW1lKCZwLCB0YXJnZXQsIGZsYWdzKTsKKyAgICBmcmVlKHRhcmdldCk7CisgICAgaWYoc2MpCisgICAgICByZXR1cm4gc2M7CisgICAgdGFyZ2V0ID0gcDsKKyAgICBsZW4gPSBzdHJsZW4odGFyZ2V0KTsKKworICAgIGlmKGxlbiA+IG1heF9zYW5pdGl6ZWRfbGVuKSB7CisgICAgICBmcmVlKHRhcmdldCk7CisgICAgICByZXR1cm4gU0FOSVRJWkVfRVJSX0lOVkFMSURfUEFUSDsKKyAgICB9CisgIH0KKworICAqc2FuaXRpemVkID0gdGFyZ2V0OworICByZXR1cm4gU0FOSVRJWkVfRVJSX09LOwogfQogCi0vKiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBhcmUgdGFrZW4gd2l0aCBtb2RpZmljYXRpb24gZnJvbSB0aGUgREpHUFAKLSAqIHBvcnQgb2YgdGFyIDEuMTIuIFRoZXkgdXNlIGFsZ29yaXRobXMgb3JpZ2luYWxseSBmcm9tIERKVEFSLiAqLwogCi1zdGF0aWMgY29uc3QgY2hhciAqbXNkb3NpZnkgKGNvbnN0IGNoYXIgKmZpbGVfbmFtZSkKKy8qCitUZXN0IGlmIHRydW5jYXRpbmcgYSBwYXRoIHRvIGEgZmlsZSB3aWxsIGxlYXZlIGF0IGxlYXN0IGEgc2luZ2xlIGNoYXJhY3RlciBpbgordGhlIGZpbGVuYW1lLiBGaWxlbmFtZXMgc3VmZml4ZWQgYnkgYW4gYWx0ZXJuYXRlIGRhdGEgc3RyZWFtIGNhbid0IGJlCit0cnVuY2F0ZWQuIFRoaXMgcGVyZm9ybXMgYSBkcnkgcnVuLCBub3RoaW5nIGlzIG1vZGlmaWVkLgorCitHb29kIHRydW5jYXRlX3BvcyA5OiAgICBDOlxmb29cYmFyICA9PiAgQzpcZm9vXGJhCitHb29kIHRydW5jYXRlX3BvcyA2OiAgICBDOlxmb28gICAgICA9PiAgQzpcZm9vCitHb29kIHRydW5jYXRlX3BvcyA1OiAgICBDOlxmb28gICAgICA9PiAgQzpcZm8KK0JhZCogdHJ1bmNhdGVfcG9zIDU6ICAgIEM6Zm9vICAgICAgID0+ICBDOmZvbworQmFkIHRydW5jYXRlX3BvcyA1OiAgICAgQzpcZm9vOmFkcyAgPT4gIEM6XGZvCitCYWQgdHJ1bmNhdGVfcG9zIDk6ICAgICBDOlxmb286YWRzICA9PiAgQzpcZm9vOmFkCitCYWQgdHJ1bmNhdGVfcG9zIDU6ICAgICBDOlxmb29cYmFyICA9PiAgQzpcZm8KK0JhZCB0cnVuY2F0ZV9wb3MgNTogICAgIEM6XGZvb1wgICAgID0+ICBDOlxmbworQmFkIHRydW5jYXRlX3BvcyA3OiAgICAgQzpcZm9vXCAgICAgPT4gIEM6XGZvb1wKK0Vycm9yIHRydW5jYXRlX3BvcyA3OiAgIEM6XGZvbyAgICAgID0+ICAocG9zIG91dCBvZiByYW5nZSkKK0JhZCB0cnVuY2F0ZV9wb3MgMTogICAgIEM6XGZvb1wgICAgID0+ICBDCisKKyogQzpmb28gaXMgYW1iaWd1b3VzLCBDIGNvdWxkIGVuZCB1cCBiZWluZyBhIGRyaXZlIG9yIGZpbGUgdGhlcmVmb3JlIHNvbWV0aGluZworICBsaWtlIEM6c3VwZXJsb25nZmlsZW5hbWUgY2FuJ3QgYmUgdHJ1bmNhdGVkLgorCitSZXR1cm5zCitTQU5JVElaRV9FUlJfT0s6IEdvb2QgLS0gJ3BhdGgnIGNhbiBiZSB0cnVuY2F0ZWQKK1NBTklUSVpFX0VSUl9JTlZBTElEX1BBVEg6IEJhZCAtLSAncGF0aCcgY2Fubm90IGJlIHRydW5jYXRlZAorIT0gU0FOSVRJWkVfRVJSX09LICYmICE9IFNBTklUSVpFX0VSUl9JTlZBTElEX1BBVEg6IEVycm9yCisqLworU0FOSVRJWkVjb2RlIHRydW5jYXRlX2RyeXJ1bihjb25zdCBjaGFyICpwYXRoLCBjb25zdCBzaXplX3QgdHJ1bmNhdGVfcG9zKQogewotICBzdGF0aWMgY2hhciBkb3NfbmFtZVtQQVRIX01BWF07CisgIHNpemVfdCBsZW47CisKKyAgaWYoIXBhdGgpCisgICAgcmV0dXJuIFNBTklUSVpFX0VSUl9CQURfQVJHVU1FTlQ7CisKKyAgbGVuID0gc3RybGVuKHBhdGgpOworCisgIGlmKHRydW5jYXRlX3BvcyA+IGxlbikKKyAgICByZXR1cm4gU0FOSVRJWkVfRVJSX0JBRF9BUkdVTUVOVDsKKworICBpZighbGVuIHx8ICF0cnVuY2F0ZV9wb3MpCisgICAgcmV0dXJuIFNBTklUSVpFX0VSUl9JTlZBTElEX1BBVEg7CisKKyAgaWYoc3RycGJyaygmcGF0aFt0cnVuY2F0ZV9wb3MgLSAxXSwgIlxcLzoiKSkKKyAgICByZXR1cm4gU0FOSVRJWkVfRVJSX0lOVkFMSURfUEFUSDsKKworICAvKiBDOlxmb28gY2FuIGJlIHRydW5jYXRlZCBidXQgQzpcZm9vOmFkcyBjYW4ndCAqLworICBpZih0cnVuY2F0ZV9wb3MgPiAxKSB7CisgICAgY29uc3QgY2hhciAqcCA9ICZwYXRoW3RydW5jYXRlX3BvcyAtIDFdOworICAgIGRvIHsKKyAgICAgIC0tcDsKKyAgICAgIGlmKCpwID09ICc6JykKKyAgICAgICAgcmV0dXJuIFNBTklUSVpFX0VSUl9JTlZBTElEX1BBVEg7CisgICAgfSB3aGlsZShwICE9IHBhdGggJiYgKnAgIT0gJ1xcJyAmJiAqcCAhPSAnLycpOworICB9CisKKyAgcmV0dXJuIFNBTklUSVpFX0VSUl9PSzsKK30KKworLyogVGhlIGZ1bmN0aW9ucyBtc2Rvc2lmeSwgcmVuYW1lX2lmX2Rvc19kZXZpY2VfbmFtZSBhbmQgX19jcnQwX2dsb2JfZnVuY3Rpb24KKyAqIHdlcmUgdGFrZW4gd2l0aCBtb2RpZmljYXRpb24gZnJvbSB0aGUgREpHUFAgcG9ydCBvZiB0YXIgMS4xMi4gVGhleSB1c2UKKyAqIGFsZ29yaXRobXMgb3JpZ2luYWxseSBmcm9tIERKVEFSLgorICovCisKKy8qCitFeHRyYSBzYW5pdGl6YXRpb24gTVNET1MgZm9yIGZpbGVfbmFtZS4KKworVGhpcyBpcyBhIHN1cHBvcnRpbmcgZnVuY3Rpb24gZm9yIHNhbml0aXplX2ZpbGVfbmFtZS4KKworV2FybmluZzogVGhpcyBpcyBhbiBNU0RPUyBsZWdhY3kgZnVuY3Rpb24gYW5kIHdhcyBwdXJwb3NlbHkgd3JpdHRlbiBpbiBhIHdheQordGhhdCBzb21lIHBhdGggaW5mb3JtYXRpb24gbWF5IHBhc3MgdGhyb3VnaC4gRm9yIGV4YW1wbGUgZHJpdmUgbGV0dGVyIG5hbWVzCisoQzosIEQ6LCBldGMpIGFyZSBhbGxvd2VkIHRvIHBhc3MgdGhyb3VnaC4gRm9yIHNhbml0aXppbmcgYSBmaWxlbmFtZSB1c2UKK3Nhbml0aXplX2ZpbGVfbmFtZS4KKworU3VjY2VzczogKFNBTklUSVpFX0VSUl9PSykgKnNhbml0aXplZCBwb2ludHMgdG8gYSBzYW5pdGl6ZWQgY29weSBvZiBmaWxlX25hbWUuCitGYWlsdXJlOiAoIT0gU0FOSVRJWkVfRVJSX09LKSAqc2FuaXRpemVkIGlzIE5VTEwuCisqLworI2lmIGRlZmluZWQoTVNET1MpIHx8IGRlZmluZWQoVU5JVFRFU1RTKQorU0FOSVRJWkVjb2RlIG1zZG9zaWZ5KGNoYXIgKipjb25zdCBzYW5pdGl6ZWQsIGNvbnN0IGNoYXIgKmZpbGVfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICBpbnQgZmxhZ3MpCit7CisgIGNoYXIgZG9zX25hbWVbUEFUSF9NQVhdOwogICBzdGF0aWMgY29uc3QgY2hhciBpbGxlZ2FsX2NoYXJzX2Rvc1tdID0gIi4rLCA7PVtdIiAvKiBpbGxlZ2FsIGluIERPUyAqLwotICAgICJ8PD5cXFwiOj8qIjsgLyogaWxsZWdhbCBpbiBET1MgJiBXOTUgKi8KKyAgICAifDw+L1xcXCI6PyoiOyAvKiBpbGxlZ2FsIGluIERPUyAmIFc5NSAqLwogICBzdGF0aWMgY29uc3QgY2hhciAqaWxsZWdhbF9jaGFyc193OTUgPSAmaWxsZWdhbF9jaGFyc19kb3NbOF07CiAgIGludCBpZHgsIGRvdF9pZHg7CiAgIGNvbnN0IGNoYXIgKnMgPSBmaWxlX25hbWU7CkBAIC0xMzEsNiArMzQ2LDE5IEBACiAgIGNvbnN0IGNoYXIgKmlsbGVnYWxfYWxpZW5zID0gaWxsZWdhbF9jaGFyc19kb3M7CiAgIHNpemVfdCBsZW4gPSBzaXplb2YoaWxsZWdhbF9jaGFyc19kb3MpIC0gMTsKIAorICBpZighc2FuaXRpemVkKQorICAgIHJldHVybiBTQU5JVElaRV9FUlJfQkFEX0FSR1VNRU5UOworCisgICpzYW5pdGl6ZWQgPSBOVUxMOworCisgIGlmKCFmaWxlX25hbWUpCisgICAgcmV0dXJuIFNBTklUSVpFX0VSUl9CQURfQVJHVU1FTlQ7CisKKyAgaWYoc3RybGVuKGZpbGVfbmFtZSkgPiBQQVRIX01BWC0xICYmCisgICAgICghKGZsYWdzICYgU0FOSVRJWkVfQUxMT1dfVFJVTkNBVEUpIHx8CisgICAgICB0cnVuY2F0ZV9kcnlydW4oZmlsZV9uYW1lLCBQQVRIX01BWC0xKSkpCisgICAgcmV0dXJuIFNBTklUSVpFX0VSUl9JTlZBTElEX1BBVEg7CisKICAgLyogU3VwcG9ydCBmb3IgV2luZG93cyA5WCBWRkFUIHN5c3RlbXMsIHdoZW4gYXZhaWxhYmxlLiAqLwogICBpZihfdXNlX2xmbihmaWxlX25hbWUpKSB7CiAgICAgaWxsZWdhbF9hbGllbnMgPSBpbGxlZ2FsX2NoYXJzX3c5NTsKQEAgLTE0MCwyMiArMzY4LDM1IEBACiAgIC8qIEdldCBwYXN0IHRoZSBkcml2ZSBsZXR0ZXIsIGlmIGFueS4gKi8KICAgaWYoc1swXSA+PSAnQScgJiYgc1swXSA8PSAneicgJiYgc1sxXSA9PSAnOicpIHsKICAgICAqZCsrID0gKnMrKzsKLSAgICAqZCsrID0gKnMrKzsKKyAgICAqZCA9ICgoZmxhZ3MgJiAoU0FOSVRJWkVfQUxMT1dfQ09MT05TfFNBTklUSVpFX0FMTE9XX1BBVEgpKSkgPyAnOicgOiAnXyc7CisgICAgKytkLCArK3M7CiAgIH0KIAogICBmb3IoaWR4ID0gMCwgZG90X2lkeCA9IC0xOyAqcyAmJiBkIDwgZGxpbWl0OyBzKyssIGQrKykgewogICAgIGlmKG1lbWNocihpbGxlZ2FsX2FsaWVucywgKnMsIGxlbikpIHsKKworICAgICAgaWYoKGZsYWdzICYgKFNBTklUSVpFX0FMTE9XX0NPTE9OU3xTQU5JVElaRV9BTExPV19QQVRIKSkgJiYgKnMgPT0gJzonKQorICAgICAgICAqZCA9ICc6JzsKKyAgICAgIGVsc2UgaWYoKGZsYWdzICYgU0FOSVRJWkVfQUxMT1dfUEFUSCkgJiYgKCpzID09ICcvJyB8fCAqcyA9PSAnXFwnKSkKKyAgICAgICAgKmQgPSAqczsKICAgICAgIC8qIERvdHMgYXJlIHNwZWNpYWw6IERPUyBkb2Vzbid0IGFsbG93IHRoZW0gYXMgdGhlIGxlYWRpbmcgY2hhcmFjdGVyLAogICAgICAgICAgYW5kIGEgZmlsZSBuYW1lIGNhbm5vdCBoYXZlIG1vcmUgdGhhbiBhIHNpbmdsZSBkb3QuICBXZSBsZWF2ZSB0aGUKICAgICAgICAgIGZpcnN0IG5vbi1sZWFkaW5nIGRvdCBhbG9uZSwgdW5sZXNzIGl0IGNvbWVzIHRvbyBjbG9zZSB0byB0aGUKICAgICAgICAgIGJlZ2lubmluZyBvZiB0aGUgbmFtZTogd2Ugd2FudCBzaC5sZXguYyB0byBiZWNvbWUgc2hfbGV4LmMsIG5vdAogICAgICAgICAgc2gubGV4LWMuICAqLwotICAgICAgaWYoKnMgPT0gJy4nKSB7Ci0gICAgICAgIGlmKGlkeCA9PSAwICYmIChzWzFdID09ICcvJyB8fCAoc1sxXSA9PSAnLicgJiYgc1syXSA9PSAnLycpKSkgeworICAgICAgZWxzZSBpZigqcyA9PSAnLicpIHsKKyAgICAgICAgaWYoKGZsYWdzICYgU0FOSVRJWkVfQUxMT1dfUEFUSCkgJiYgaWR4ID09IDAgJiYKKyAgICAgICAgICAgKHNbMV0gPT0gJy8nIHx8IHNbMV0gPT0gJ1xcJyB8fAorICAgICAgICAgICAgKHNbMV0gPT0gJy4nICYmIChzWzJdID09ICcvJyB8fCBzWzJdID09ICdcXCcpKSkpIHsKICAgICAgICAgICAvKiBDb3B5ICIuLyIgYW5kICIuLi8iIHZlcmJhdGltLiAgKi8KICAgICAgICAgICAqZCsrID0gKnMrKzsKLSAgICAgICAgICBpZigqcyA9PSAnLicpCisgICAgICAgICAgaWYoZCA9PSBkbGltaXQpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBpZigqcyA9PSAnLicpIHsKICAgICAgICAgICAgICpkKysgPSAqcysrOworICAgICAgICAgICAgaWYoZCA9PSBkbGltaXQpCisgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIH0KICAgICAgICAgICAqZCA9ICpzOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYoaWR4ID09IDApCkBAIC0xNzcsMTIgKzQxOCwyMiBAQAogICAgICAgZWxzZSBpZigqcyA9PSAnKycgJiYgc1sxXSA9PSAnKycpIHsKICAgICAgICAgaWYoaWR4IC0gMiA9PSBkb3RfaWR4KSB7IC8qIC5jKyssIC5oKysgZXRjLiAqLwogICAgICAgICAgICpkKysgPSAneCc7CisgICAgICAgICAgaWYoZCA9PSBkbGltaXQpCisgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAqZCAgID0gJ3gnOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgIC8qIGxpYmcrKyBldGMuICAqLwotICAgICAgICAgIG1lbWNweSAoZCwgInBsdXMiLCA0KTsKLSAgICAgICAgICBkICs9IDM7CisgICAgICAgICAgaWYoZGxpbWl0IC0gZCA8IDQpIHsKKyAgICAgICAgICAgICpkKysgPSAneCc7CisgICAgICAgICAgICBpZihkID09IGRsaW1pdCkKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAqZCAgID0gJ3gnOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1lbWNweSAoZCwgInBsdXMiLCA0KTsKKyAgICAgICAgICAgIGQgKz0gMzsKKyAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgcysrOwogICAgICAgICBpZHgrKzsKQEAgLTE5Miw0NCArNDQzLDE2OCBAQAogICAgIH0KICAgICBlbHNlCiAgICAgICAqZCA9ICpzOwotICAgIGlmKCpzID09ICcvJykgeworICAgIGlmKCpzID09ICcvJyB8fCAqcyA9PSAnXFwnKSB7CiAgICAgICBpZHggPSAwOwogICAgICAgZG90X2lkeCA9IC0xOwogICAgIH0KICAgICBlbHNlCiAgICAgICBpZHgrKzsKICAgfQotCiAgICpkID0gJ1wwJzsKLSAgcmV0dXJuIGRvc19uYW1lOwotfQogCi1zdGF0aWMgY2hhciAqcmVuYW1lX2lmX2Rvc19kZXZpY2VfbmFtZSAoY2hhciAqZmlsZV9uYW1lKQorICBpZigqcykgeworICAgIC8qIGRvc19uYW1lIGlzIHRydW5jYXRlZCwgY2hlY2sgdGhhdCB0cnVuY2F0aW9uIHJlcXVpcmVtZW50cyBhcmUgbWV0LAorICAgICAgIHNwZWNpZmljYWxseSB0cnVuY2F0aW5nIGEgZmlsZW5hbWUgc3VmZml4ZWQgYnkgYW4gYWx0ZXJuYXRlIGRhdGEgc3RyZWFtCisgICAgICAgb3IgdHJ1bmNhdGluZyB0aGUgZW50aXJlIGZpbGVuYW1lIGlzIG5vdCBhbGxvd2VkLiAqLworICAgIGlmKCEoZmxhZ3MgJiBTQU5JVElaRV9BTExPV19UUlVOQ0FURSkgfHwgc3RycGJyayhzLCAiXFwvOiIpIHx8CisgICAgICAgdHJ1bmNhdGVfZHJ5cnVuKGRvc19uYW1lLCBkIC0gZG9zX25hbWUpKQorICAgICAgcmV0dXJuIFNBTklUSVpFX0VSUl9JTlZBTElEX1BBVEg7CisgIH0KKworICAqc2FuaXRpemVkID0gc3RyZHVwKGRvc19uYW1lKTsKKyAgcmV0dXJuICgqc2FuaXRpemVkID8gU0FOSVRJWkVfRVJSX09LIDogU0FOSVRJWkVfRVJSX09VVF9PRl9NRU1PUlkpOworfQorI2VuZGlmIC8qIE1TRE9TIHx8IFVOSVRURVNUUyAqLworCisvKgorUmVuYW1lIGZpbGVfbmFtZSBpZiBpdCdzIGEgcmVzZXJ2ZWQgZG9zIGRldmljZSBuYW1lLgorCitUaGlzIGlzIGEgc3VwcG9ydGluZyBmdW5jdGlvbiBmb3Igc2FuaXRpemVfZmlsZV9uYW1lLgorCitXYXJuaW5nOiBUaGlzIGlzIGFuIE1TRE9TIGxlZ2FjeSBmdW5jdGlvbiBhbmQgd2FzIHB1cnBvc2VseSB3cml0dGVuIGluIGEgd2F5Cit0aGF0IHNvbWUgcGF0aCBpbmZvcm1hdGlvbiBtYXkgcGFzcyB0aHJvdWdoLiBGb3IgZXhhbXBsZSBkcml2ZSBsZXR0ZXIgbmFtZXMKKyhDOiwgRDosIGV0YykgYXJlIGFsbG93ZWQgdG8gcGFzcyB0aHJvdWdoLiBGb3Igc2FuaXRpemluZyBhIGZpbGVuYW1lIHVzZQorc2FuaXRpemVfZmlsZV9uYW1lLgorCitTdWNjZXNzOiAoU0FOSVRJWkVfRVJSX09LKSAqc2FuaXRpemVkIHBvaW50cyB0byBhIHNhbml0aXplZCBjb3B5IG9mIGZpbGVfbmFtZS4KK0ZhaWx1cmU6ICghPSBTQU5JVElaRV9FUlJfT0spICpzYW5pdGl6ZWQgaXMgTlVMTC4KKyovCitTQU5JVElaRWNvZGUgcmVuYW1lX2lmX3Jlc2VydmVkX2Rvc19kZXZpY2VfbmFtZShjaGFyICoqY29uc3Qgc2FuaXRpemVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZmlsZV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdzKQogewogICAvKiBXZSBjb3VsZCBoYXZlIGEgZmlsZSB3aG9zZSBuYW1lIGlzIGEgZGV2aWNlIG9uIE1TLURPUy4gIFRyeWluZyB0bwogICAgKiByZXRyaWV2ZSBzdWNoIGEgZmlsZSB3b3VsZCBmYWlsIGF0IGJlc3QgYW5kIHdlZGdlIHVzIGF0IHdvcnN0LiAgV2UgbmVlZAogICAgKiB0byByZW5hbWUgc3VjaCBmaWxlcy4gKi8KLSAgY2hhciAqYmFzZTsKLSAgc3RydWN0X3N0YXQgc3RfYnVmOworICBjaGFyICpwLCAqYmFzZTsKICAgY2hhciBmbmFtZVtQQVRIX01BWF07CisjaWZkZWYgTVNET1MKKyAgc3RydWN0X3N0YXQgc3RfYnVmOworI2VuZGlmCisKKyAgaWYoIXNhbml0aXplZCkKKyAgICByZXR1cm4gU0FOSVRJWkVfRVJSX0JBRF9BUkdVTUVOVDsKKworICAqc2FuaXRpemVkID0gTlVMTDsKKworICBpZighZmlsZV9uYW1lKQorICAgIHJldHVybiBTQU5JVElaRV9FUlJfQkFEX0FSR1VNRU5UOworCisgIC8qIElnbm9yZSBVTkMgcHJlZml4ZWQgcGF0aHMsIHRoZXkgYXJlIGFsbG93ZWQgdG8gY29udGFpbiBhIHJlc2VydmVkIG5hbWUuICovCisjaWZuZGVmIE1TRE9TCisgIGlmKChmbGFncyAmIFNBTklUSVpFX0FMTE9XX1BBVEgpICYmCisgICAgIGZpbGVfbmFtZVswXSA9PSAnXFwnICYmIGZpbGVfbmFtZVsxXSA9PSAnXFwnKSB7CisgICAgc2l6ZV90IGxlbiA9IHN0cmxlbihmaWxlX25hbWUpOworICAgICpzYW5pdGl6ZWQgPSBtYWxsb2MobGVuICsgMSk7CisgICAgaWYoISpzYW5pdGl6ZWQpCisgICAgICByZXR1cm4gU0FOSVRJWkVfRVJSX09VVF9PRl9NRU1PUlk7CisgICAgc3RybmNweSgqc2FuaXRpemVkLCBmaWxlX25hbWUsIGxlbiArIDEpOworICAgIHJldHVybiBTQU5JVElaRV9FUlJfT0s7CisgIH0KKyNlbmRpZgorCisgIGlmKHN0cmxlbihmaWxlX25hbWUpID4gUEFUSF9NQVgtMSAmJgorICAgICAoIShmbGFncyAmIFNBTklUSVpFX0FMTE9XX1RSVU5DQVRFKSB8fAorICAgICAgdHJ1bmNhdGVfZHJ5cnVuKGZpbGVfbmFtZSwgUEFUSF9NQVgtMSkpKQorICAgIHJldHVybiBTQU5JVElaRV9FUlJfSU5WQUxJRF9QQVRIOwogCiAgIHN0cm5jcHkoZm5hbWUsIGZpbGVfbmFtZSwgUEFUSF9NQVgtMSk7CiAgIGZuYW1lW1BBVEhfTUFYLTFdID0gJ1wwJzsKICAgYmFzZSA9IGJhc2VuYW1lKGZuYW1lKTsKLSAgaWYoKChzdGF0KGJhc2UsICZzdF9idWYpKSA9PSAwKSAmJiAoU19JU0NIUihzdF9idWYuc3RfbW9kZSkpKSB7Ci0gICAgc2l6ZV90IGJsZW4gPSBzdHJsZW4oYmFzZSk7CiAKLSAgICBpZihzdHJsZW4oZm5hbWUpID49IFBBVEhfTUFYLTEpIHsKLSAgICAgIC8qIE1ha2Ugcm9vbSBmb3IgdGhlICdfJyAqLwotICAgICAgYmxlbi0tOwotICAgICAgYmFzZVtibGVuXSA9ICdcMCc7CisgIC8qIFJlbmFtZSByZXNlcnZlZCBkZXZpY2UgbmFtZXMgdGhhdCBhcmUga25vd24gdG8gYmUgYWNjZXNzaWJsZSB3aXRob3V0IFxcLlwKKyAgICAgRXhhbXBsZXM6IENPTiA9PiBfQ09OLCBDT04uRVhUID0+IENPTl9FWFQsIENPTjpBRFMgPT4gQ09OX0FEUworICAgICBodHRwczovL3N1cHBvcnQubWljcm9zb2Z0LmNvbS9lbi11cy9rYi83NDQ5NgorICAgICBodHRwczovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L3dpbmRvd3MvZGVza3RvcC9hYTM2NTI0Ny5hc3B4CisgICAgICovCisgIGZvcihwID0gZm5hbWU7IHA7IHAgPSAocCA9PSBmbmFtZSAmJiBmbmFtZSAhPSBiYXNlID8gYmFzZSA6IE5VTEwpKSB7CisgICAgc2l6ZV90IHBfbGVuOworICAgIGludCB4ID0gKGN1cmxfc3RybmVxdWFsKHAsICJDT04iLCAzKSB8fAorICAgICAgICAgICAgIGN1cmxfc3RybmVxdWFsKHAsICJQUk4iLCAzKSB8fAorICAgICAgICAgICAgIGN1cmxfc3RybmVxdWFsKHAsICJBVVgiLCAzKSB8fAorICAgICAgICAgICAgIGN1cmxfc3RybmVxdWFsKHAsICJOVUwiLCAzKSkgPyAzIDoKKyAgICAgICAgICAgIChjdXJsX3N0cm5lcXVhbChwLCAiQ0xPQ0skIiwgNikpID8gNiA6CisgICAgICAgICAgICAoY3VybF9zdHJuZXF1YWwocCwgIkNPTSIsIDMpIHx8IGN1cmxfc3RybmVxdWFsKHAsICJMUFQiLCAzKSkgPworICAgICAgICAgICAgICAoKCcxJyA8PSBwWzNdICYmIHBbM10gPD0gJzknKSA/IDQgOiAzKSA6IDA7CisKKyAgICBpZigheCkKKyAgICAgIGNvbnRpbnVlOworCisgICAgLyogdGhlIGRldmljZXMgbWF5IGJlIGFjY2Vzc2libGUgd2l0aCBhbiBleHRlbnNpb24gb3IgQURTLCBmb3IKKyAgICAgICBleGFtcGxlIENPTi5BSVIgYW5kICdDT04gLiBBSVInIGFuZCBDT046QUlSIGFjY2VzcyBjb25zb2xlICovCisKKyAgICBmb3IoOyBwW3hdID09ICcgJzsgKyt4KQorICAgICAgOworCisgICAgaWYocFt4XSA9PSAnLicpIHsKKyAgICAgIHBbeF0gPSAnXyc7CisgICAgICBjb250aW51ZTsKICAgICB9Ci0gICAgLyogUHJlcGVuZCBhICdfJy4gICovCi0gICAgbWVtbW92ZShiYXNlICsgMSwgYmFzZSwgYmxlbiArIDEpOwotICAgIGJhc2VbMF0gPSAnXyc7Ci0gICAgc3RyY3B5KGZpbGVfbmFtZSwgZm5hbWUpOworICAgIGVsc2UgaWYocFt4XSA9PSAnOicpIHsKKyAgICAgIGlmKCEoZmxhZ3MgJiAoU0FOSVRJWkVfQUxMT1dfQ09MT05TfFNBTklUSVpFX0FMTE9XX1BBVEgpKSkgeworICAgICAgICBwW3hdID0gJ18nOworICAgICAgICBjb250aW51ZTsKKyAgICAgIH0KKyAgICAgICsreDsKKyAgICB9CisgICAgZWxzZSBpZihwW3hdKSAvKiBubyBtYXRjaCAqLworICAgICAgY29udGludWU7CisKKyAgICAvKiBwIHBvaW50cyB0byAnQ09OJyBvciAnQ09OICcgb3IgJ0NPTjonLCBldGMgKi8KKyAgICBwX2xlbiA9IHN0cmxlbihwKTsKKworICAgIC8qIFByZXBlbmQgYSAnXycgKi8KKyAgICBpZihzdHJsZW4oZm5hbWUpID09IFBBVEhfTUFYLTEpIHsKKyAgICAgIC0tcF9sZW47CisgICAgICBpZighKGZsYWdzICYgU0FOSVRJWkVfQUxMT1dfVFJVTkNBVEUpIHx8IHRydW5jYXRlX2RyeXJ1bihwLCBwX2xlbikpCisgICAgICAgIHJldHVybiBTQU5JVElaRV9FUlJfSU5WQUxJRF9QQVRIOworICAgICAgcFtwX2xlbl0gPSAnXDAnOworICAgIH0KKyAgICBtZW1tb3ZlKHAgKyAxLCBwLCBwX2xlbiArIDEpOworICAgIHBbMF0gPSAnXyc7CisgICAgKytwX2xlbjsKKworICAgIC8qIGlmIGZuYW1lIHdhcyBqdXN0IG1vZGlmaWVkIHRoZW4gdGhlIGJhc2VuYW1lIHBvaW50ZXIgbXVzdCBiZSB1cGRhdGVkICovCisgICAgaWYocCA9PSBmbmFtZSkKKyAgICAgIGJhc2UgPSBiYXNlbmFtZShmbmFtZSk7CiAgIH0KLSAgcmV0dXJuIGZpbGVfbmFtZTsKKworICAvKiBUaGlzIGlzIHRoZSBsZWdhY3kgcG9ydGlvbiBmcm9tIHJlbmFtZV9pZl9kb3NfZGV2aWNlX25hbWUgdGhhdCBjaGVja3MgZm9yCisgICAgIHJlc2VydmVkIGRldmljZSBuYW1lcy4gSXQgb25seSB3b3JrcyBvbiBNU0RPUy4gT24gV2luZG93cyBYUCB0aGUgc3RhdAorICAgICBjaGVjayBlcnJvcnMgd2l0aCBFSU5WQUwgaWYgdGhlIGRldmljZSBuYW1lIGlzIHJlc2VydmVkLiBPbiBXaW5kb3dzCisgICAgIFZpc3RhLzcvOCBpdCBzZXRzIG1vZGUgU19JRlJFRyAocmVndWxhciBmaWxlIG9yIGRldmljZSkuIEFjY29yZGluZyB0byBNU0ROCisgICAgIHN0YXQgZG9jIHRoZSBsYXR0ZXIgYmVoYXZpb3IgaXMgY29ycmVjdCwgYnV0IHRoYXQgZG9lc24ndCBoZWxwIHVzIGlkZW50aWZ5CisgICAgIHdoZXRoZXIgaXQncyBhIHJlc2VydmVkIGRldmljZSBuYW1lIGFuZCBub3QgYSByZWd1bGFyIGZpbGUgbmFtZS4gKi8KKyNpZmRlZiBNU0RPUworICBpZihiYXNlICYmICgoc3RhdChiYXNlLCAmc3RfYnVmKSkgPT0gMCkgJiYgKFNfSVNDSFIoc3RfYnVmLnN0X21vZGUpKSkgeworICAgIC8qIFByZXBlbmQgYSAnXycgKi8KKyAgICBzaXplX3QgYmxlbiA9IHN0cmxlbihiYXNlKTsKKyAgICBpZihibGVuKSB7CisgICAgICBpZihzdHJsZW4oZm5hbWUpID09IFBBVEhfTUFYLTEpIHsKKyAgICAgICAgLS1ibGVuOworICAgICAgICBpZighKGZsYWdzICYgU0FOSVRJWkVfQUxMT1dfVFJVTkNBVEUpIHx8IHRydW5jYXRlX2RyeXJ1bihiYXNlLCBibGVuKSkKKyAgICAgICAgICByZXR1cm4gU0FOSVRJWkVfRVJSX0lOVkFMSURfUEFUSDsKKyAgICAgICAgYmFzZVtibGVuXSA9ICdcMCc7CisgICAgICB9CisgICAgICBtZW1tb3ZlKGJhc2UgKyAxLCBiYXNlLCBibGVuICsgMSk7CisgICAgICBiYXNlWzBdID0gJ18nOworICAgICAgKytibGVuOworICAgIH0KKyAgfQorI2VuZGlmCisKKyAgKnNhbml0aXplZCA9IHN0cmR1cChmbmFtZSk7CisgIHJldHVybiAoKnNhbml0aXplZCA/IFNBTklUSVpFX0VSUl9PSyA6IFNBTklUSVpFX0VSUl9PVVRfT0ZfTUVNT1JZKTsKIH0KIAogI2lmIGRlZmluZWQoTVNET1MpICYmIChkZWZpbmVkKF9fREpHUFBfXykgfHwgZGVmaW5lZChfX0dPMzJfXykpCmRpZmYgLS1naXQgYS9zcmMvdG9vbF9kb3N3aW4uaCBiL3NyYy90b29sX2Rvc3dpbi5oCmluZGV4IGNkMjE2ZGIuLmY2NDllZjAgMTAwNjQ0Ci0tLSBhL3NyYy90b29sX2Rvc3dpbi5oCisrKyBiL3NyYy90b29sX2Rvc3dpbi5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjUsNyArMjUsMjkgQEAKIAogI2lmIGRlZmluZWQoTVNET1MpIHx8IGRlZmluZWQoV0lOMzIpCiAKLWNoYXIgKnNhbml0aXplX2Rvc19uYW1lKGNoYXIgKmZpbGVfbmFtZSk7CisjZGVmaW5lIFNBTklUSVpFX0FMTE9XX0NPTE9OUyAgICAoMTw8MCkgIC8qIEFsbG93IGNvbG9ucyAqLworI2RlZmluZSBTQU5JVElaRV9BTExPV19QQVRIICAgICAgKDE8PDEpICAvKiBBbGxvdyBwYXRoIHNlcGFyYXRvcnMgYW5kIGNvbG9ucyAqLworI2RlZmluZSBTQU5JVElaRV9BTExPV19SRVNFUlZFRCAgKDE8PDIpICAvKiBBbGxvdyByZXNlcnZlZCBkZXZpY2UgbmFtZXMgKi8KKyNkZWZpbmUgU0FOSVRJWkVfQUxMT1dfVFJVTkNBVEUgICgxPDwzKSAgLyogQWxsb3cgdHJ1bmNhdGluZyBhIGxvbmcgZmlsZW5hbWUgKi8KKwordHlwZWRlZiBlbnVtIHsKKyAgU0FOSVRJWkVfRVJSX09LID0gMCwgICAgICAgICAgIC8qIDAgLSBPSyAqLworICBTQU5JVElaRV9FUlJfSU5WQUxJRF9QQVRILCAgICAgLyogMSAtIHRoZSBwYXRoIGlzIGludmFsaWQgKi8KKyAgU0FOSVRJWkVfRVJSX0JBRF9BUkdVTUVOVCwgICAgIC8qIDIgLSBiYWQgZnVuY3Rpb24gcGFyYW1ldGVyICovCisgIFNBTklUSVpFX0VSUl9PVVRfT0ZfTUVNT1JZLCAgICAvKiAzIC0gb3V0IG9mIG1lbW9yeSAqLworICBTQU5JVElaRV9FUlJfTEFTVCAvKiBuZXZlciB1c2UhICovCit9IFNBTklUSVpFY29kZTsKKworU0FOSVRJWkVjb2RlIHNhbml0aXplX2ZpbGVfbmFtZShjaGFyICoqY29uc3Qgc2FuaXRpemVkLCBjb25zdCBjaGFyICpmaWxlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmbGFncyk7CisjaWZkZWYgVU5JVFRFU1RTCitTQU5JVElaRWNvZGUgdHJ1bmNhdGVfZHJ5cnVuKGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IHNpemVfdCB0cnVuY2F0ZV9wb3MpOworU0FOSVRJWkVjb2RlIG1zZG9zaWZ5KGNoYXIgKipjb25zdCBzYW5pdGl6ZWQsIGNvbnN0IGNoYXIgKmZpbGVfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICBpbnQgZmxhZ3MpOworU0FOSVRJWkVjb2RlIHJlbmFtZV9pZl9yZXNlcnZlZF9kb3NfZGV2aWNlX25hbWUoY2hhciAqKmNvbnN0IHNhbml0aXplZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZpbGVfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmbGFncyk7CisjZW5kaWYgLyogVU5JVFRFU1RTICovCiAKICNpZiBkZWZpbmVkKE1TRE9TKSAmJiAoZGVmaW5lZChfX0RKR1BQX18pIHx8IGRlZmluZWQoX19HTzMyX18pKQogCmRpZmYgLS1naXQgYS9zcmMvdG9vbF9lYXN5c3JjLmMgYi9zcmMvdG9vbF9lYXN5c3JjLmMKaW5kZXggMDQ4MmVmNi4uYzJkY2NmOSAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xfZWFzeXNyYy5jCisrKyBiL3NyYy90b29sX2Vhc3lzcmMuYwpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yMSw2ICsyMSw4IEBACiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogI2luY2x1ZGUgInRvb2xfc2V0dXAuaCIKIAorI2luY2x1ZGUgInNsaXN0X3djLmgiCisKICNpZm5kZWYgQ1VSTF9ESVNBQkxFX0xJQkNVUkxfT1BUSU9OCiAKICNkZWZpbmUgRU5BQkxFX0NVUkxYX1BSSU5URgpAQCAtMzUsMTggKzM3LDE4IEBACiAKIC8qIGdsb2JhbCB2YXJpYWJsZSBkZWZpbml0aW9ucywgZm9yIGVhc3ktaW50ZXJmYWNlIHNvdXJjZSBjb2RlIGdlbmVyYXRpb24gKi8KIAotc3RydWN0IGN1cmxfc2xpc3QgKmVhc3lzcmNfZGVjbCA9IE5VTEw7IC8qIFZhcmlhYmxlIGRlY2xhcmF0aW9ucyAqLwotc3RydWN0IGN1cmxfc2xpc3QgKmVhc3lzcmNfZGF0YSA9IE5VTEw7IC8qIEJ1aWxkIHNsaXN0cywgZm9ybXMgZXRjLiAqLwotc3RydWN0IGN1cmxfc2xpc3QgKmVhc3lzcmNfY29kZSA9IE5VTEw7IC8qIFNldG9wdCBjYWxscyAqLwotc3RydWN0IGN1cmxfc2xpc3QgKmVhc3lzcmNfdG9vaGFyZCA9IE5VTEw7IC8qIFVuY29udmVydGlibGUgc2V0b3B0ICovCi1zdHJ1Y3QgY3VybF9zbGlzdCAqZWFzeXNyY19jbGVhbiA9IE5VTEw7ICAvKiBDbGVhbiB1cCBhbGxvY2F0ZWQgZGF0YSAqLworc3RydWN0IHNsaXN0X3djICplYXN5c3JjX2RlY2wgPSBOVUxMOyAvKiBWYXJpYWJsZSBkZWNsYXJhdGlvbnMgKi8KK3N0cnVjdCBzbGlzdF93YyAqZWFzeXNyY19kYXRhID0gTlVMTDsgLyogQnVpbGQgc2xpc3RzLCBmb3JtcyBldGMuICovCitzdHJ1Y3Qgc2xpc3Rfd2MgKmVhc3lzcmNfY29kZSA9IE5VTEw7IC8qIFNldG9wdCBjYWxscyAqLworc3RydWN0IHNsaXN0X3djICplYXN5c3JjX3Rvb2hhcmQgPSBOVUxMOyAvKiBVbmNvbnZlcnRpYmxlIHNldG9wdCAqLworc3RydWN0IHNsaXN0X3djICplYXN5c3JjX2NsZWFuID0gTlVMTDsgIC8qIENsZWFuIHVwIGFsbG9jYXRlZCBkYXRhICovCiBpbnQgZWFzeXNyY19mb3JtX2NvdW50ID0gMDsKIGludCBlYXN5c3JjX3NsaXN0X2NvdW50ID0gMDsKIAogc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHNyY2hlYWRbXT17CiAgICIvKioqKioqKioqIFNhbXBsZSBjb2RlIGdlbmVyYXRlZCBieSB0aGUgY3VybCBjb21tYW5kIGxpbmUgdG9vbCAqKioqKioqKioqIiwKICAgIiAqIEFsbCBjdXJsX2Vhc3lfc2V0b3B0KCkgb3B0aW9ucyBhcmUgZG9jdW1lbnRlZCBhdDoiLAotICAiICogaHR0cDovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvY3VybF9lYXN5X3NldG9wdC5odG1sIiwKKyAgIiAqIGh0dHBzOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvYy9jdXJsX2Vhc3lfc2V0b3B0Lmh0bWwiLAogICAiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8iLAogICAiI2luY2x1ZGUgPGN1cmwvY3VybC5oPiIsCiAgICIiLApAQCAtNzcsMjQgKzc5LDIzIEBACiAvKiBDbGVhbiB1cCBhbGwgc291cmNlIGNvZGUgaWYgd2UgcnVuIG91dCBvZiBtZW1vcnkgKi8KIHN0YXRpYyB2b2lkIGVhc3lzcmNfZnJlZSh2b2lkKQogewotICBjdXJsX3NsaXN0X2ZyZWVfYWxsKGVhc3lzcmNfZGVjbCk7CisgIHNsaXN0X3djX2ZyZWVfYWxsKGVhc3lzcmNfZGVjbCk7CiAgIGVhc3lzcmNfZGVjbCA9IE5VTEw7Ci0gIGN1cmxfc2xpc3RfZnJlZV9hbGwoZWFzeXNyY19kYXRhKTsKKyAgc2xpc3Rfd2NfZnJlZV9hbGwoZWFzeXNyY19kYXRhKTsKICAgZWFzeXNyY19kYXRhID0gTlVMTDsKLSAgY3VybF9zbGlzdF9mcmVlX2FsbChlYXN5c3JjX2NvZGUpOworICBzbGlzdF93Y19mcmVlX2FsbChlYXN5c3JjX2NvZGUpOwogICBlYXN5c3JjX2NvZGUgPSBOVUxMOwotICBjdXJsX3NsaXN0X2ZyZWVfYWxsKGVhc3lzcmNfdG9vaGFyZCk7CisgIHNsaXN0X3djX2ZyZWVfYWxsKGVhc3lzcmNfdG9vaGFyZCk7CiAgIGVhc3lzcmNfdG9vaGFyZCA9IE5VTEw7Ci0gIGN1cmxfc2xpc3RfZnJlZV9hbGwoZWFzeXNyY19jbGVhbik7CisgIHNsaXN0X3djX2ZyZWVfYWxsKGVhc3lzcmNfY2xlYW4pOwogICBlYXN5c3JjX2NsZWFuID0gTlVMTDsKIH0KIAogLyogQWRkIGEgc291cmNlIGxpbmUgdG8gdGhlIG1haW4gY29kZSBvciByZW1hcmtzICovCi1DVVJMY29kZSBlYXN5c3JjX2FkZChzdHJ1Y3QgY3VybF9zbGlzdCAqKnBsaXN0LCBjb25zdCBjaGFyICpsaW5lKQorQ1VSTGNvZGUgZWFzeXNyY19hZGQoc3RydWN0IHNsaXN0X3djICoqcGxpc3QsIGNvbnN0IGNoYXIgKmxpbmUpCiB7CiAgIENVUkxjb2RlIHJldCA9IENVUkxFX09LOwotICBzdHJ1Y3QgY3VybF9zbGlzdCAqbGlzdCA9Ci0gICAgY3VybF9zbGlzdF9hcHBlbmQoKnBsaXN0LCBsaW5lKTsKKyAgc3RydWN0IHNsaXN0X3djICpsaXN0ID0gc2xpc3Rfd2NfYXBwZW5kKCpwbGlzdCwgbGluZSk7CiAgIGlmKCFsaXN0KSB7CiAgICAgZWFzeXNyY19mcmVlKCk7CiAgICAgcmV0ID0gQ1VSTEVfT1VUX09GX01FTU9SWTsKQEAgLTEwNCw3ICsxMDUsNyBAQAogICByZXR1cm4gcmV0OwogfQogCi1DVVJMY29kZSBlYXN5c3JjX2FkZGYoc3RydWN0IGN1cmxfc2xpc3QgKipwbGlzdCwgY29uc3QgY2hhciAqZm10LCAuLi4pCitDVVJMY29kZSBlYXN5c3JjX2FkZGYoc3RydWN0IHNsaXN0X3djICoqcGxpc3QsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQogewogICBDVVJMY29kZSByZXQ7CiAgIGNoYXIgKmJ1ZnA7CkBAIC0xNDMsMTIgKzE0NCwxNCBAQAogICAgIGZvcihpPTA7ICgoYyA9IHNyY2hhcmRbaV0pICE9IE5VTEwpOyBpKyspCiAgICAgICBDSEtSRVQoZWFzeXNyY19hZGQoJmVhc3lzcmNfY29kZSwgYykpOwogICAgIC8qIEVhY2ggdW5jb252ZXJ0ZWQgb3B0aW9uICovCi0gICAgZm9yKHB0cj1lYXN5c3JjX3Rvb2hhcmQ7IHB0cjsgcHRyID0gcHRyLT5uZXh0KQotICAgICAgQ0hLUkVUKGVhc3lzcmNfYWRkKCZlYXN5c3JjX2NvZGUsIHB0ci0+ZGF0YSkpOworICAgIGlmKGVhc3lzcmNfdG9vaGFyZCkgeworICAgICAgZm9yKHB0cj1lYXN5c3JjX3Rvb2hhcmQtPmZpcnN0OyBwdHI7IHB0ciA9IHB0ci0+bmV4dCkKKyAgICAgICAgQ0hLUkVUKGVhc3lzcmNfYWRkKCZlYXN5c3JjX2NvZGUsIHB0ci0+ZGF0YSkpOworICAgIH0KICAgICBDSEtSRVQoZWFzeXNyY19hZGQoJmVhc3lzcmNfY29kZSwgIiIpKTsKICAgICBDSEtSRVQoZWFzeXNyY19hZGQoJmVhc3lzcmNfY29kZSwgIiovIikpOwogCi0gICAgY3VybF9zbGlzdF9mcmVlX2FsbChlYXN5c3JjX3Rvb2hhcmQpOworICAgIHNsaXN0X3djX2ZyZWVfYWxsKGVhc3lzcmNfdG9vaGFyZCk7CiAgICAgZWFzeXNyY190b29oYXJkID0gTlVMTDsKICAgfQogCkBAIC0xNzIsMzggKzE3NSw0MCBAQAogICBzdHJ1Y3QgY3VybF9zbGlzdCAqcHRyOwogICBjaGFyICpvID0gY29uZmlnLT5saWJjdXJsOwogCi0gIGlmKG8pIHsKLSAgICBGSUxFICpvdXQ7Ci0gICAgYm9vbCBmb3BlbmVkID0gRkFMU0U7Ci0gICAgaWYoc3RyY21wKG8sICItIikpIHsKLSAgICAgIG91dCA9IGZvcGVuKG8sIEZPUEVOX1dSSVRFVEVYVCk7Ci0gICAgICBmb3BlbmVkID0gVFJVRTsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgb3V0ID0gc3Rkb3V0OwotICAgIGlmKCFvdXQpCi0gICAgICB3YXJuZihjb25maWcsICJGYWlsZWQgdG8gb3BlbiAlcyB0byB3cml0ZSBsaWJjdXJsIGNvZGUhXG4iLCBvKTsKLSAgICBlbHNlIHsKLSAgICAgIGludCBpOwotICAgICAgY29uc3QgY2hhciAqYzsKKyAgRklMRSAqb3V0OworICBib29sIGZvcGVuZWQgPSBGQUxTRTsKKyAgaWYoc3RyY21wKG8sICItIikpIHsKKyAgICBvdXQgPSBmb3BlbihvLCBGT1BFTl9XUklURVRFWFQpOworICAgIGZvcGVuZWQgPSBUUlVFOworICB9CisgIGVsc2UKKyAgICBvdXQgPSBzdGRvdXQ7CisgIGlmKCFvdXQpCisgICAgd2FybmYoY29uZmlnLCAiRmFpbGVkIHRvIG9wZW4gJXMgdG8gd3JpdGUgbGliY3VybCBjb2RlIVxuIiwgbyk7CisgIGVsc2UgeworICAgIGludCBpOworICAgIGNvbnN0IGNoYXIgKmM7CiAKLSAgICAgIGZvcihpPTA7ICgoYyA9IHNyY2hlYWRbaV0pICE9IE5VTEwpOyBpKyspCi0gICAgICAgIGZwcmludGYob3V0LCAiJXNcbiIsIGMpOworICAgIGZvcihpPTA7ICgoYyA9IHNyY2hlYWRbaV0pICE9IE5VTEwpOyBpKyspCisgICAgICBmcHJpbnRmKG91dCwgIiVzXG4iLCBjKTsKIAotICAgICAgLyogRGVjbGFyZSB2YXJpYWJsZXMgdXNlZCBmb3IgY29tcGxleCBzZXRvcHQgdmFsdWVzICovCi0gICAgICBmb3IocHRyPWVhc3lzcmNfZGVjbDsgcHRyOyBwdHIgPSBwdHItPm5leHQpCisgICAgLyogRGVjbGFyZSB2YXJpYWJsZXMgdXNlZCBmb3IgY29tcGxleCBzZXRvcHQgdmFsdWVzICovCisgICAgaWYoZWFzeXNyY19kZWNsKSB7CisgICAgICBmb3IocHRyPWVhc3lzcmNfZGVjbC0+Zmlyc3Q7IHB0cjsgcHRyID0gcHRyLT5uZXh0KQogICAgICAgICBmcHJpbnRmKG91dCwgIiAgJXNcbiIsIHB0ci0+ZGF0YSk7CisgICAgfQogCi0gICAgICAvKiBTZXQgdXAgY29tcGxleCB2YWx1ZXMgZm9yIHNldG9wdCBjYWxscyAqLwotICAgICAgaWYoZWFzeXNyY19kYXRhKSB7Ci0gICAgICAgIGZwcmludGYob3V0LCAiXG4iKTsKLQotICAgICAgICBmb3IocHRyPWVhc3lzcmNfZGF0YTsgcHRyOyBwdHIgPSBwdHItPm5leHQpCi0gICAgICAgICAgZnByaW50ZihvdXQsICIgICVzXG4iLCBwdHItPmRhdGEpOwotICAgICAgfQotCisgICAgLyogU2V0IHVwIGNvbXBsZXggdmFsdWVzIGZvciBzZXRvcHQgY2FsbHMgKi8KKyAgICBpZihlYXN5c3JjX2RhdGEpIHsKICAgICAgIGZwcmludGYob3V0LCAiXG4iKTsKLSAgICAgIGZvcihwdHI9ZWFzeXNyY19jb2RlOyBwdHI7IHB0ciA9IHB0ci0+bmV4dCkgeworCisgICAgICBmb3IocHRyPWVhc3lzcmNfZGF0YS0+Zmlyc3Q7IHB0cjsgcHRyID0gcHRyLT5uZXh0KQorICAgICAgICBmcHJpbnRmKG91dCwgIiAgJXNcbiIsIHB0ci0+ZGF0YSk7CisgICAgfQorCisgICAgZnByaW50ZihvdXQsICJcbiIpOworICAgIGlmKGVhc3lzcmNfY29kZSkgeworICAgICAgZm9yKHB0cj1lYXN5c3JjX2NvZGUtPmZpcnN0OyBwdHI7IHB0ciA9IHB0ci0+bmV4dCkgewogICAgICAgICBpZihwdHItPmRhdGFbMF0pIHsKICAgICAgICAgICBmcHJpbnRmKG91dCwgIiAgJXNcbiIsIHB0ci0+ZGF0YSk7CiAgICAgICAgIH0KQEAgLTIxMSwxNiArMjE2LDE4IEBACiAgICAgICAgICAgZnByaW50ZihvdXQsICJcbiIpOwogICAgICAgICB9CiAgICAgICB9Ci0KLSAgICAgIGZvcihwdHI9ZWFzeXNyY19jbGVhbjsgcHRyOyBwdHIgPSBwdHItPm5leHQpCi0gICAgICAgIGZwcmludGYob3V0LCAiICAlc1xuIiwgcHRyLT5kYXRhKTsKLQotICAgICAgZm9yKGk9MDsgKChjID0gc3JjZW5kW2ldKSAhPSBOVUxMKTsgaSsrKQotICAgICAgICBmcHJpbnRmKG91dCwgIiVzXG4iLCBjKTsKLQotICAgICAgaWYoZm9wZW5lZCkKLSAgICAgICAgZmNsb3NlKG91dCk7CiAgICAgfQorCisgICAgaWYoZWFzeXNyY19jbGVhbikgeworICAgICAgZm9yKHB0cj1lYXN5c3JjX2NsZWFuLT5maXJzdDsgcHRyOyBwdHIgPSBwdHItPm5leHQpCisgICAgICAgIGZwcmludGYob3V0LCAiICAlc1xuIiwgcHRyLT5kYXRhKTsKKyAgICB9CisKKyAgICBmb3IoaT0wOyAoKGMgPSBzcmNlbmRbaV0pICE9IE5VTEwpOyBpKyspCisgICAgICBmcHJpbnRmKG91dCwgIiVzXG4iLCBjKTsKKworICAgIGlmKGZvcGVuZWQpCisgICAgICBmY2xvc2Uob3V0KTsKICAgfQogCiAgIGVhc3lzcmNfZnJlZSgpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xfZWFzeXNyYy5oIGIvc3JjL3Rvb2xfZWFzeXNyYy5oCmluZGV4IDA3YTRiNzguLjU0NjA3YjggMTAwNjQ0Ci0tLSBhL3NyYy90b29sX2Vhc3lzcmMuaAorKysgYi9zcmMvdG9vbF9lYXN5c3JjLmgKQEAgLTcsMTEgKzcsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yNiwxOCArMjYsMTkgQEAKIAogLyogZ2xvYmFsIHZhcmlhYmxlIGRlY2xhcmF0aW9ucywgZm9yIGVhc3ktaW50ZXJmYWNlIHNvdXJjZSBjb2RlIGdlbmVyYXRpb24gKi8KIAotZXh0ZXJuIHN0cnVjdCBjdXJsX3NsaXN0ICplYXN5c3JjX2RlY2w7IC8qIFZhcmlhYmxlIGRlY2xhcmF0aW9ucyAqLwotZXh0ZXJuIHN0cnVjdCBjdXJsX3NsaXN0ICplYXN5c3JjX2RhdGE7IC8qIEJ1aWxkIHNsaXN0cywgZm9ybXMgZXRjLiAqLwotZXh0ZXJuIHN0cnVjdCBjdXJsX3NsaXN0ICplYXN5c3JjX2NvZGU7IC8qIFNldG9wdCBjYWxscyBldGMuICovCi1leHRlcm4gc3RydWN0IGN1cmxfc2xpc3QgKmVhc3lzcmNfdG9vaGFyZDsgLyogVW5jb252ZXJ0aWJsZSBzZXRvcHQgKi8KLWV4dGVybiBzdHJ1Y3QgY3VybF9zbGlzdCAqZWFzeXNyY19jbGVhbjsgIC8qIENsZWFuIHVwIChyZXZlcnNlIG9yZGVyKSAqLworZXh0ZXJuIHN0cnVjdCBzbGlzdF93YyAqZWFzeXNyY19kZWNsOyAvKiBWYXJpYWJsZSBkZWNsYXJhdGlvbnMgKi8KK2V4dGVybiBzdHJ1Y3Qgc2xpc3Rfd2MgKmVhc3lzcmNfZGF0YTsgLyogQnVpbGQgc2xpc3RzLCBmb3JtcyBldGMuICovCitleHRlcm4gc3RydWN0IHNsaXN0X3djICplYXN5c3JjX2NvZGU7IC8qIFNldG9wdCBjYWxscyBldGMuICovCitleHRlcm4gc3RydWN0IHNsaXN0X3djICplYXN5c3JjX3Rvb2hhcmQ7IC8qIFVuY29udmVydGlibGUgc2V0b3B0ICovCitleHRlcm4gc3RydWN0IHNsaXN0X3djICplYXN5c3JjX2NsZWFuOyAgLyogQ2xlYW4gdXAgKHJldmVyc2Ugb3JkZXIpICovCiAKIGV4dGVybiBpbnQgZWFzeXNyY19mb3JtX2NvdW50OyAgLyogTnVtYmVyIG9mIGN1cmxfaHR0cHBvc3QgdmFyaWFibGVzICovCiBleHRlcm4gaW50IGVhc3lzcmNfc2xpc3RfY291bnQ7IC8qIE51bWJlciBvZiBjdXJsX3NsaXN0IHZhcmlhYmxlcyAqLwogCiBleHRlcm4gQ1VSTGNvZGUgZWFzeXNyY19pbml0KHZvaWQpOwotZXh0ZXJuIENVUkxjb2RlIGVhc3lzcmNfYWRkKHN0cnVjdCBjdXJsX3NsaXN0ICoqcGxpc3QsIGNvbnN0IGNoYXIgKmJ1cGYpOwotZXh0ZXJuIENVUkxjb2RlIGVhc3lzcmNfYWRkZihzdHJ1Y3QgY3VybF9zbGlzdCAqKnBsaXN0LCBjb25zdCBjaGFyICpmbXQsIC4uLik7CitleHRlcm4gQ1VSTGNvZGUgZWFzeXNyY19hZGQoc3RydWN0IHNsaXN0X3djICoqcGxpc3QsIGNvbnN0IGNoYXIgKmJ1cGYpOworZXh0ZXJuIENVUkxjb2RlIGVhc3lzcmNfYWRkZihzdHJ1Y3Qgc2xpc3Rfd2MgKipwbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZm10LCAuLi4pOwogZXh0ZXJuIENVUkxjb2RlIGVhc3lzcmNfcGVyZm9ybSh2b2lkKTsKIGV4dGVybiBDVVJMY29kZSBlYXN5c3JjX2NsZWFudXAodm9pZCk7CiAKZGlmZiAtLWdpdCBhL3NyYy90b29sX2Zvcm1wYXJzZS5jIGIvc3JjL3Rvb2xfZm9ybXBhcnNlLmMKaW5kZXggZjI2ZjI1OS4uZGUzMGM1MiAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xfZm9ybXBhcnNlLmMKKysrIGIvc3JjL3Rvb2xfZm9ybXBhcnNlLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zMjMsNyArMzIzLDcgQEAKICAgICAgICAgaW5mb1tpXS5vcHRpb24gPSBDVVJMRk9STV9FTkQ7CiAKICAgICAgICAgaWYoY3VybF9mb3JtYWRkKGh0dHBwb3N0LCBsYXN0X3Bvc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICBDVVJMRk9STV9BUlJBWSwgaW5mbywgQ1VSTEZPUk1fRU5EICkgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgQ1VSTEZPUk1fQVJSQVksIGluZm8sIENVUkxGT1JNX0VORCkgIT0gMCkgewogICAgICAgICAgIHdhcm5mKGNvbmZpZy0+Z2xvYmFsLCAiY3VybF9mb3JtYWRkIGZhaWxlZCwgcG9zc2libHkgdGhlIGZpbGUgJXMgaXMgIgogICAgICAgICAgICAgICAgICJiYWQhXG4iLCBjb250cCArIDEpOwogICAgICAgICAgIEN1cmxfc2FmZWZyZWUoY29udGVudHMpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xfZm9ybXBhcnNlLmggYi9zcmMvdG9vbF9mb3JtcGFyc2UuaAppbmRleCBmNzczNjI2Li5jZTdhMjkyIDEwMDY0NAotLS0gYS9zcmMvdG9vbF9mb3JtcGFyc2UuaAorKysgYi9zcmMvdG9vbF9mb3JtcGFyc2UuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3NyYy90b29sX2dldHBhcmFtLmMgYi9zcmMvdG9vbF9nZXRwYXJhbS5jCmluZGV4IGM4NmU2YjQuLmQ2MGUwNGMgMTAwNjQ0Ci0tLSBhL3NyYy90b29sX2dldHBhcmFtLmMKKysrIGIvc3JjL3Rvb2xfZ2V0cGFyYW0uYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTY0LDkgKzY0LDkgQEAKIH07CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgTG9uZ1Nob3J0IGFsaWFzZXNbXT0gewotICAvKiBhbGwgdGhlc2Ugb25lcywgc3RhcnRpbmcgd2l0aCAiKiIgb3IgIiQiIGFzIGEgc2hvcnQtb3B0aW9uIGhhdmUgKm5vKgotICAgICBzaG9ydCBvcHRpb24gdG8gbWVudGlvbi4gKi8KLSAgeyIqIiwgICJ1cmwiLCAgICAgICAgICAgICAgICAgICAgICBUUlVFfSwKKyAgLyogJ2xldHRlcicgc3RyaW5ncyB3aXRoIG1vcmUgdGhhbiBvbmUgY2hhcmFjdGVyIGhhdmUgKm5vKiBzaG9ydCBvcHRpb24gdG8KKyAgICAgbWVudGlvbi4gKi8KKyAgeyIqQCIsICJ1cmwiLCAgICAgICAgICAgICAgICAgICAgICBUUlVFfSwKICAgeyIqNCIsICJkbnMtaXB2NC1hZGRyIiwgICAgICAgICAgICBUUlVFfSwKICAgeyIqNiIsICJkbnMtaXB2Ni1hZGRyIiwgICAgICAgICAgICBUUlVFfSwKICAgeyIqYSIsICJyYW5kb20tZmlsZSIsICAgICAgICAgICAgICBUUlVFfSwKQEAgLTEwNiwyMyArMTA2LDIxIEBACiAgIHsiKnUiLCAiY3JsZiIsICAgICAgICAgICAgICAgICAgICAgRkFMU0V9LAogICB7Iip2IiwgInN0ZGVyciIsICAgICAgICAgICAgICAgICAgIFRSVUV9LAogICB7Iip3IiwgImludGVyZmFjZSIsICAgICAgICAgICAgICAgIFRSVUV9LAotICB7Iip4IiwgImtyYiIgLCAgICAgICAgICAgICAgICAgICAgIFRSVUV9LAotICB7Iip4IiwgImtyYjQiICwgICAgICAgICAgICAgICAgICAgIFRSVUV9LAorICB7Iip4IiwgImtyYiIsICAgICAgICAgICAgICAgICAgICAgIFRSVUV9LAorICB7Iip4IiwgImtyYjQiLCAgICAgICAgICAgICAgICAgICAgIFRSVUV9LAogICAgICAgICAgLyogJ2tyYjQnIGlzIHRoZSBwcmV2aW91cyBuYW1lICovCiAgIHsiKnkiLCAibWF4LWZpbGVzaXplIiwgICAgICAgICAgICAgVFJVRX0sCiAgIHsiKnoiLCAiZGlzYWJsZS1lcHJ0IiwgICAgICAgICAgICAgRkFMU0V9LAogICB7IipaIiwgImVwcnQiLCAgICAgICAgICAgICAgICAgICAgIEZBTFNFfSwKICAgICAgICAgIC8qICdlcHJ0JyBtYWRlIGxpa2UgdGhpcyB0byBtYWtlIC0tbm8tZXBydCBhbmQgLS1lcHJ0IHRvIHdvcmsKICAgICAgICAgICAgICBhbHRob3VnaCAtLWRpc2FibGUtZXBydCBpcyB0aGUgZG9jdW1lbnRlZCBvcHRpb24gKi8KKyAgeyIqfiIsICJ4YXR0ciIsICAgICAgICAgICAgICAgICAgICBGQUxTRX0sCiAgIHsiJGEiLCAiZnRwLXNzbCIsICAgICAgICAgICAgICAgICAgRkFMU0V9LAogICAgICAgICAgLyogJ2Z0cC1zc2wnIGRlcHJlY2F0ZWQgbmFtZSBzaW5jZSA3LjIwLjAgKi8KICAgeyIkYSIsICJzc2wiLCAgICAgICAgICAgICAgICAgICAgICBGQUxTRX0sCiAgICAgICAgICAvKiAnc3NsJyBuZXcgb3B0aW9uIG5hbWUgaW4gNy4yMC4wLCBwcmV2aW91c2x5IHRoaXMgd2FzIGZ0cC1zc2wgKi8KICAgeyIkYiIsICJmdHAtcGFzdiIsICAgICAgICAgICAgICAgICBGQUxTRX0sCiAgIHsiJGMiLCAic29ja3M1IiwgICAgICAgICAgICAgICAgICAgVFJVRX0sCi0gIHsiJGMiLCAic29ja3MiLCAgICAgICAgICAgICAgICAgICAgVFJVRX0sCi0gICAgICAgICAvKiAnc29ja3MnIGlzIGhvdyB0aGUgb3B0aW9uIG9uY2Ugd2FzIGRvY3VtZW50ZWQgYnV0IHdlIHByZWZlcgotICAgICAgICAgICAgdGhlIC0tc29ja3M1IHZlcnNpb24gZm9yIGV4cGxpY2l0IHZlcnNpb24gKi8KICAgeyIkZCIsICJ0Y3Atbm9kZWxheSIsICAgICAgICAgICAgICBGQUxTRX0sCiAgIHsiJGUiLCAicHJveHktZGlnZXN0IiwgICAgICAgICAgICAgRkFMU0V9LAogICB7IiRmIiwgInByb3h5LWJhc2ljIiwgICAgICAgICAgICAgIEZBTFNFfSwKQEAgLTE1OCwxMiArMTU2LDcgQEAKICAgeyIkMyIsICJrZWVwYWxpdmUtdGltZSIsICAgICAgICAgICBUUlVFfSwKICAgeyIkNCIsICJwb3N0MzAyIiwgICAgICAgICAgICAgICAgICBGQUxTRX0sCiAgIHsiJDUiLCAibm9wcm94eSIsICAgICAgICAgICAgICAgICAgVFJVRX0sCi0jaWYgZGVmaW5lZChIQVZFX0dTU0FQSSkgfHwgZGVmaW5lZChVU0VfV0lORE9XU19TU1BJKQotICB7IiQ2IiwgInNvY2tzNS1nc3NhcGktc2VydmljZSIsICAgIFRSVUV9LAogICB7IiQ3IiwgInNvY2tzNS1nc3NhcGktbmVjIiwgICAgICAgIEZBTFNFfSwKLSAgeyIkTyIsICJwcm94eS1zZXJ2aWNlLW5hbWUiLCAgICAgICBUUlVFfSwKLSAgeyIkUCIsICJzZXJ2aWNlLW5hbWUiLCAgICAgICAgICAgICBUUlVFfSwKLSNlbmRpZgogICB7IiQ4IiwgInByb3h5MS4wIiwgICAgICAgICAgICAgICAgIFRSVUV9LAogICB7IiQ5IiwgInRmdHAtYmxrc2l6ZSIsICAgICAgICAgICAgIFRSVUV9LAogICB7IiRBIiwgIm1haWwtZnJvbSIsICAgICAgICAgICAgICAgIFRSVUV9LApAQCAtMTgwLDkgKzE3MywxOSBAQAogICB7IiRMIiwgInRlc3QtZXZlbnQiLCAgICAgICAgICAgICAgIEZBTFNFfSwKICAgeyIkTSIsICJ1bml4LXNvY2tldCIsICAgICAgICAgICAgICBUUlVFfSwKICAgeyIkTiIsICJwYXRoLWFzLWlzIiwgICAgICAgICAgICAgICBGQUxTRX0sCisgIHsiJE8iLCAic29ja3M1LWdzc2FwaS1zZXJ2aWNlIiwgICAgVFJVRX0sCisgICAgICAgICAvKiAnc29ja3M1LWdzc2FwaS1zZXJ2aWNlJyBtZXJnZWQgd2l0aCdwcm94eS1zZXJ2aWNlLW5hbWUnIGFuZAorICAgICAgICAgICAgZGVwcmVjYXRlZCBzaW5jZSA3LjQ5LjAgKi8KKyAgeyIkTyIsICJwcm94eS1zZXJ2aWNlLW5hbWUiLCAgICAgICBUUlVFfSwKKyAgeyIkUCIsICJzZXJ2aWNlLW5hbWUiLCAgICAgICAgICAgICBUUlVFfSwKKyAgeyIkUSIsICJwcm90by1kZWZhdWx0IiwgICAgICAgICAgICBUUlVFfSwKKyAgeyIkUiIsICJleHBlY3QxMDAtdGltZW91dCIsICAgICAgICBUUlVFfSwKKyAgeyIkUyIsICJ0ZnRwLW5vLW9wdGlvbnMiLCAgICAgICAgICBGQUxTRX0sCisgIHsiJFUiLCAiY29ubmVjdC10byIsICAgICAgICAgICAgICAgVFJVRX0sCiAgIHsiMCIsICAgImh0dHAxLjAiLCAgICAgICAgICAgICAgICAgRkFMU0V9LAogICB7IjAxIiwgICJodHRwMS4xIiwgICAgICAgICAgICAgICAgIEZBTFNFfSwKICAgeyIwMiIsICAiaHR0cDIiLCAgICAgICAgICAgICAgICAgICBGQUxTRX0sCisgIHsiMDMiLCAgImh0dHAyLXByaW9yLWtub3dsZWRnZSIsICAgRkFMU0V9LAogICB7IjEiLCAgInRsc3YxIiwgICAgICAgICAgICAgICAgICAgIEZBTFNFfSwKICAgeyIxMCIsICAidGxzdjEuMCIsICAgICAgICAgICAgICAgICBGQUxTRX0sCiAgIHsiMTEiLCAgInRsc3YxLjEiLCAgICAgICAgICAgICAgICAgRkFMU0V9LApAQCAtMjExLDcgKzIxNCw3IEBACiAgIHsiRWQiLCAia2V5LXR5cGUiLCAgICAgICAgICAgICAgICAgVFJVRX0sCiAgIHsiRWUiLCAicGFzcyIsICAgICAgICAgICAgICAgICAgICAgVFJVRX0sCiAgIHsiRWYiLCAiZW5naW5lIiwgICAgICAgICAgICAgICAgICAgVFJVRX0sCi0gIHsiRWciLCAiY2FwYXRoICIsICAgICAgICAgICAgICAgICAgVFJVRX0sCisgIHsiRWciLCAiY2FwYXRoIiwgICAgICAgICAgICAgICAgICAgVFJVRX0sCiAgIHsiRWgiLCAicHVia2V5IiwgICAgICAgICAgICAgICAgICAgVFJVRX0sCiAgIHsiRWkiLCAiaG9zdHB1Ym1kNSIsICAgICAgICAgICAgICAgVFJVRX0sCiAgIHsiRWoiLCAiY3JsZmlsZSIsICAgICAgICAgICAgICAgICAgVFJVRX0sCkBAIC0yMjMsNiArMjI2LDggQEAKICAgeyJFcCIsICJwaW5uZWRwdWJrZXkiLCAgICAgICAgICAgICBUUlVFfSwKICAgeyJFcSIsICJjZXJ0LXN0YXR1cyIsICAgICAgICAgICAgICBGQUxTRX0sCiAgIHsiRXIiLCAiZmFsc2Utc3RhcnQiLCAgICAgICAgICAgICAgRkFMU0V9LAorICB7IkVzIiwgInNzbC1uby1yZXZva2UiLCAgICAgICAgICAgIEZBTFNFfSwKKyAgeyJFdCIsICJ0Y3AtZmFzdG9wZW4iLCAgICAgICAgICAgICBGQUxTRX0sCiAgIHsiZiIsICAiZmFpbCIsICAgICAgICAgICAgICAgICAgICAgRkFMU0V9LAogICB7IkYiLCAgImZvcm0iLCAgICAgICAgICAgICAgICAgICAgIFRSVUV9LAogICB7IkZzIiwgImZvcm0tc3RyaW5nIiwgICAgICAgICAgICAgIFRSVUV9LApAQCAtMjUxLDggKzI1Niw2IEBACiAgIHsiTyIsICAicmVtb3RlLW5hbWUiLCAgICAgICAgICAgICAgRkFMU0V9LAogICB7Ik9hIiwgInJlbW90ZS1uYW1lLWFsbCIsICAgICAgICAgIEZBTFNFfSwKICAgeyJwIiwgICJwcm94eXR1bm5lbCIsICAgICAgICAgICAgICBGQUxTRX0sCi0gIHsiUCIsICAiZnRwcG9ydCIsICAgICAgICAgICAgICAgICAgVFJVRX0sCi0gICAgICAgICAvKiAnZnRwcG9ydCcgb2xkIHZlcnNpb24gKi8KICAgeyJQIiwgICJmdHAtcG9ydCIsICAgICAgICAgICAgICAgICBUUlVFfSwKICAgeyJxIiwgICJkaXNhYmxlIiwgICAgICAgICAgICAgICAgICBGQUxTRX0sCiAgIHsiUSIsICAicXVvdGUiLCAgICAgICAgICAgICAgICAgICAgVFJVRX0sCkBAIC0yNjAsOCArMjYzLDcgQEAKICAgeyJSIiwgICJyZW1vdGUtdGltZSIsICAgICAgICAgICAgICBGQUxTRX0sCiAgIHsicyIsICAic2lsZW50IiwgICAgICAgICAgICAgICAgICAgRkFMU0V9LAogICB7IlMiLCAgInNob3ctZXJyb3IiLCAgICAgICAgICAgICAgIEZBTFNFfSwKLSAgeyJ0IiwgICJ0ZWxuZXQtb3B0aW9ucyIsICAgICAgICAgICBUUlVFfSwKLSAgICAgICAgIC8qICd0ZWxuZXQtb3B0aW9ucycgZG9jdW1lbnRlZCBhcyB0ZWxuZXQtb3B0aW9uICovCisgIHsidCIsICAidGVsbmV0LW9wdGlvbiIsICAgICAgICAgICAgVFJVRX0sCiAgIHsiVCIsICAidXBsb2FkLWZpbGUiLCAgICAgICAgICAgICAgVFJVRX0sCiAgIHsidSIsICAidXNlciIsICAgICAgICAgICAgICAgICAgICAgVFJVRX0sCiAgIHsiVSIsICAicHJveHktdXNlciIsICAgICAgICAgICAgICAgVFJVRX0sCkBAIC0yNzAsMTQgKzI3MiwxMSBAQAogICB7InciLCAgIndyaXRlLW91dCIsICAgICAgICAgICAgICAgIFRSVUV9LAogICB7IngiLCAgInByb3h5IiwgICAgICAgICAgICAgICAgICAgIFRSVUV9LAogICB7IlgiLCAgInJlcXVlc3QiLCAgICAgICAgICAgICAgICAgIFRSVUV9LAotICB7IlgiLCAgImh0dHAtcmVxdWVzdCIsICAgICAgICAgICAgIFRSVUV9LAotICAgICAgICAgLyogJ2h0dHAtcmVxdWVzdCcgT0JTT0xFVEUgVkVSU0lPTiAqLwogICB7IlkiLCAgInNwZWVkLWxpbWl0IiwgICAgICAgICAgICAgIFRSVUV9LAogICB7InkiLCAgInNwZWVkLXRpbWUiLCAgICAgICAgICAgICAgIFRSVUV9LAogICB7InoiLCAgInRpbWUtY29uZCIsICAgICAgICAgICAgICAgIFRSVUV9LAogICB7IiMiLCAgInByb2dyZXNzLWJhciIsICAgICAgICAgICAgIEZBTFNFfSwKICAgeyI6IiwgICJuZXh0IiwgICAgICAgICAgICAgICAgICAgICBGQUxTRX0sCi0gIHsifiIsICAieGF0dHIiLCAgICAgICAgICAgICAgICAgICAgRkFMU0V9LAogfTsKIAogLyogU3BsaXQgdGhlIGFyZ3VtZW50IG9mIC1FIHRvICdjZXJ0bmFtZScgYW5kICdwYXNzcGhyYXNlJyBzZXBhcmF0ZWQgYnkgY29sb24uCkBAIC00OTUsOCArNDk0LDggQEAKICAgICAgIGNhc2UgJ2InOiAvKiBlZ2QtZmlsZSAqLwogICAgICAgICBHZXRTdHIoJmNvbmZpZy0+ZWdkX2ZpbGUsIG5leHRhcmcpOwogICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgJ0InOiAvKiBYT0FVVEgyIEJlYXJlciAqLwotICAgICAgICBHZXRTdHIoJmNvbmZpZy0+eG9hdXRoMl9iZWFyZXIsIG5leHRhcmcpOworICAgICAgY2FzZSAnQic6IC8qIE9BdXRoIDIuMCBiZWFyZXIgdG9rZW4gKi8KKyAgICAgICAgR2V0U3RyKCZjb25maWctPm9hdXRoX2JlYXJlciwgbmV4dGFyZyk7CiAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSAnYyc6IC8qIGNvbm5lY3QtdGltZW91dCAqLwogICAgICAgICBlcnIgPSBzdHIydWRvdWJsZSgmY29uZmlnLT5jb25uZWN0dGltZW91dCwgbmV4dGFyZyk7CkBAIC03MTYsOCArNzE1LDEwIEBACiAgICAgICBjYXNlICdaJzogLyogLS1lcHJ0ICovCiAgICAgICAgIGNvbmZpZy0+ZGlzYWJsZV9lcHJ0ID0gKCF0b2dnbGUpP1RSVUU6RkFMU0U7CiAgICAgICAgIGJyZWFrOwotCi0gICAgICBkZWZhdWx0OiAvKiB0aGUgVVJMISAqLworICAgICAgY2FzZSAnfic6IC8qIC0teGF0dHIgKi8KKyAgICAgICAgY29uZmlnLT54YXR0ciA9IHRvZ2dsZTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICdAJzogLyogdGhlIFVSTCEgKi8KICAgICAgIHsKICAgICAgICAgc3RydWN0IGdldG91dCAqdXJsOwogICAgICAgICBpZihjb25maWctPnVybF9nZXQgfHwgKChjb25maWctPnVybF9nZXQgPSBjb25maWctPnVybF9saXN0KSAhPSBOVUxMKSkgewpAQCAtODk4LDIwICs4OTksOSBAQAogICAgICAgICAvKiBUaGlzIHNwZWNpZmllcyB0aGUgbm9wcm94eSBsaXN0ICovCiAgICAgICAgIEdldFN0cigmY29uZmlnLT5ub3Byb3h5LCBuZXh0YXJnKTsKICAgICAgICAgYnJlYWs7Ci0jaWYgZGVmaW5lZChIQVZFX0dTU0FQSSkgfHwgZGVmaW5lZChVU0VfV0lORE9XU19TU1BJKQotICAgICAgY2FzZSAnNic6IC8qIC0tc29ja3M1LWdzc2FwaS1zZXJ2aWNlICovCi0gICAgICAgIEdldFN0cigmY29uZmlnLT5zb2NrczVfZ3NzYXBpX3NlcnZpY2UsIG5leHRhcmcpOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgJzcnOiAvKiAtLXNvY2tzNS1nc3NhcGktbmVjKi8KKyAgICAgICBjYXNlICc3JzogLyogLS1zb2NrczUtZ3NzYXBpLW5lYyovCiAgICAgICAgIGNvbmZpZy0+c29ja3M1X2dzc2FwaV9uZWMgPSB0b2dnbGU7CiAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSAnTyc6IC8qIC0tcHJveHktc2VydmljZS1uYW1lICovCi0gICAgICAgIEdldFN0cigmY29uZmlnLT5wcm94eV9zZXJ2aWNlX25hbWUsIG5leHRhcmcpOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgJ1AnOiAvKiAtLXNlcnZpY2UtbmFtZSAqLwotICAgICAgICBHZXRTdHIoJmNvbmZpZy0+c2VydmljZV9uYW1lLCBuZXh0YXJnKTsKLSAgICAgICAgYnJlYWs7Ci0jZW5kaWYKICAgICAgIGNhc2UgJzgnOiAvKiAtLXByb3h5MS4wICovCiAgICAgICAgIC8qIGh0dHAgMS4wIHByb3h5ICovCiAgICAgICAgIEdldFN0cigmY29uZmlnLT5wcm94eSwgbmV4dGFyZyk7CkBAIC05OTUsNiArOTg1LDMxIEBACiAgICAgICBjYXNlICdOJzogLyogLS1wYXRoLWFzLWlzICovCiAgICAgICAgIGNvbmZpZy0+cGF0aF9hc19pcyA9IHRvZ2dsZTsKICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICdPJzogLyogLS1wcm94eS1zZXJ2aWNlLW5hbWUgKi8KKyAgICAgICAgR2V0U3RyKCZjb25maWctPnByb3h5X3NlcnZpY2VfbmFtZSwgbmV4dGFyZyk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAnUCc6IC8qIC0tc2VydmljZS1uYW1lICovCisgICAgICAgIEdldFN0cigmY29uZmlnLT5zZXJ2aWNlX25hbWUsIG5leHRhcmcpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJ1EnOiAvKiAtLXByb3RvLWRlZmF1bHQgKi8KKyAgICAgICAgR2V0U3RyKCZjb25maWctPnByb3RvX2RlZmF1bHQsIG5leHRhcmcpOworICAgICAgICBlcnIgPSBjaGVja19wcm90b2NvbChjb25maWctPnByb3RvX2RlZmF1bHQpOworICAgICAgICBpZihlcnIpCisgICAgICAgICAgcmV0dXJuIGVycjsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICdSJzogLyogLS1leHBlY3QxMDAtdGltZW91dCAqLworICAgICAgICBlcnIgPSBzdHIydWRvdWJsZSgmY29uZmlnLT5leHBlY3QxMDB0aW1lb3V0LCBuZXh0YXJnKTsKKyAgICAgICAgaWYoZXJyKQorICAgICAgICAgIHJldHVybiBlcnI7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAnUyc6IC8qIC0tdGZ0cC1uby1vcHRpb25zICovCisgICAgICAgIGNvbmZpZy0+dGZ0cF9ub19vcHRpb25zID0gdG9nZ2xlOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJ1UnOiAvKiAtLWNvbm5lY3QtdG8gKi8KKyAgICAgICAgZXJyID0gYWRkMmxpc3QoJmNvbmZpZy0+Y29ubmVjdF90bywgbmV4dGFyZyk7CisgICAgICAgIGlmKGVycikKKyAgICAgICAgICByZXR1cm4gZXJyOworICAgICAgICBicmVhazsKICAgICAgIH0KICAgICAgIGJyZWFrOwogICAgIGNhc2UgJyMnOiAvKiAtLXByb2dyZXNzLWJhciAqLwpAQCAtMTAwNSw5ICsxMDIwLDYgQEAKICAgICAgIGJyZWFrOwogICAgIGNhc2UgJzonOiAvKiAtLW5leHQgKi8KICAgICAgIHJldHVybiBQQVJBTV9ORVhUX09QRVJBVElPTjsKLSAgICBjYXNlICd+JzogLyogLS14YXR0ciAqLwotICAgICAgY29uZmlnLT54YXR0ciA9IHRvZ2dsZTsKLSAgICAgIGJyZWFrOwogICAgIGNhc2UgJzAnOiAvKiAtLWh0dHAqIG9wdGlvbnMgKi8KICAgICAgIHN3aXRjaChzdWJsZXR0ZXIpIHsKICAgICAgIGNhc2UgJ1wwJzoKQEAgLTEwMjIsNiArMTAzNCwxMCBAQAogICAgICAgICAvKiBIVFRQIHZlcnNpb24gMi4wICovCiAgICAgICAgIGNvbmZpZy0+aHR0cHZlcnNpb24gPSBDVVJMX0hUVFBfVkVSU0lPTl8yXzA7CiAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAnMyc6CisgICAgICAgIC8qIEhUVFAgdmVyc2lvbiAyLjAgb3ZlciBjbGVhbiBUQ1AqLworICAgICAgICBjb25maWctPmh0dHB2ZXJzaW9uID0gQ1VSTF9IVFRQX1ZFUlNJT05fMl9QUklPUl9LTk9XTEVER0U7CisgICAgICAgIGJyZWFrOwogICAgICAgfQogICAgICAgYnJlYWs7CiAgICAgY2FzZSAnMSc6IC8qIC0tdGxzdjEqIG9wdGlvbnMgKi8KQEAgLTEzODYsNiArMTQwMiwxNSBAQAogICAgICAgICBjb25maWctPmZhbHNlc3RhcnQgPSBUUlVFOwogICAgICAgICBicmVhazsKIAorICAgICAgY2FzZSAncyc6IC8qIC0tc3NsLW5vLXJldm9rZSAqLworICAgICAgICBpZihjdXJsaW5mby0+ZmVhdHVyZXMgJiBDVVJMX1ZFUlNJT05fU1NMKQorICAgICAgICAgIGNvbmZpZy0+c3NsX25vX3Jldm9rZSA9IFRSVUU7CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlICd0JzogLyogLS10Y3AtZmFzdG9wZW4gKi8KKyAgICAgICAgY29uZmlnLT50Y3BfZmFzdG9wZW4gPSBUUlVFOworICAgICAgICBicmVhazsKKwogICAgICAgZGVmYXVsdDogLyogY2VydGlmaWNhdGUgZmlsZSAqLwogICAgICAgewogICAgICAgICBjaGFyICpjZXJ0bmFtZSwgKnBhc3NwaHJhc2U7CkBAIC0xNDEzLDcgKzE0MzgsNyBAQAogICAgICAgICAgICAgICAgICAgICZjb25maWctPmxhc3RfcG9zdCwKICAgICAgICAgICAgICAgICAgICAoc3VibGV0dGVyPT0ncycpP1RSVUU6RkFMU0UpKSAvKiAncycgbWVhbnMgbGl0ZXJhbCBzdHJpbmcgKi8KICAgICAgICAgcmV0dXJuIFBBUkFNX0JBRF9VU0U7Ci0gICAgICBpZihTZXRIVFRQcmVxdWVzdChjb25maWcsIEhUVFBSRVFfUE9TVCwgJmNvbmZpZy0+aHR0cHJlcSkpCisgICAgICBpZihTZXRIVFRQcmVxdWVzdChjb25maWcsIEhUVFBSRVFfRk9STVBPU1QsICZjb25maWctPmh0dHByZXEpKQogICAgICAgICByZXR1cm4gUEFSQU1fQkFEX1VTRTsKICAgICAgIGJyZWFrOwogCmRpZmYgLS1naXQgYS9zcmMvdG9vbF9nZXRwYXJhbS5oIGIvc3JjL3Rvb2xfZ2V0cGFyYW0uaAppbmRleCBlZjQzNjZiLi4wYzg1YzY5IDEwMDY0NAotLS0gYS9zcmMvdG9vbF9nZXRwYXJhbS5oCisrKyBiL3NyYy90b29sX2dldHBhcmFtLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zNyw2ICszNyw3IEBACiAgIFBBUkFNX0JBRF9OVU1FUklDLAogICBQQVJBTV9ORUdBVElWRV9OVU1FUklDLAogICBQQVJBTV9MSUJDVVJMX0RPRVNOVF9TVVBQT1JULAorICBQQVJBTV9MSUJDVVJMX1VOU1VQUE9SVEVEX1BST1RPQ09MLAogICBQQVJBTV9OT19NRU0sCiAgIFBBUkFNX05FWFRfT1BFUkFUSU9OLAogICBQQVJBTV9MQVNUCmRpZmYgLS1naXQgYS9zcmMvdG9vbF9nZXRwYXNzLmMgYi9zcmMvdG9vbF9nZXRwYXNzLmMKaW5kZXggMGY3ZWQwMS4uOGUzZTVmYSAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xfZ2V0cGFzcy5jCisrKyBiL3NyYy90b29sX2dldHBhc3MuYwpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9zcmMvdG9vbF9nZXRwYXNzLmggYi9zcmMvdG9vbF9nZXRwYXNzLmgKaW5kZXggZDRmYzdlMi4uOTVkZDc3OSAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xfZ2V0cGFzcy5oCisrKyBiL3NyYy90b29sX2dldHBhc3MuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3NyYy90b29sX2hlbHAuYyBiL3NyYy90b29sX2hlbHAuYwppbmRleCA0NmFlMzQxLi5mYjQyOGM5IDEwMDY0NAotLS0gYS9zcmMvdG9vbF9oZWxwLmMKKysrIGIvc3JjL3Rvb2xfaGVscC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNTgsNiArNTgsNyBAQAogICAiICAgICAtLWNvbXByZXNzZWQgICAgUmVxdWVzdCBjb21wcmVzc2VkIHJlc3BvbnNlICh1c2luZyBkZWZsYXRlIG9yIGd6aXApIiwKICAgIiAtSywgLS1jb25maWcgRklMRSAgIFJlYWQgY29uZmlnIGZyb20gRklMRSIsCiAgICIgICAgIC0tY29ubmVjdC10aW1lb3V0IFNFQ09ORFMgIE1heGltdW0gdGltZSBhbGxvd2VkIGZvciBjb25uZWN0aW9uIiwKKyAgIiAgICAgLS1jb25uZWN0LXRvIEhPU1QxOlBPUlQxOkhPU1QyOlBPUlQyIENvbm5lY3QgdG8gaG9zdCAobmV0d29yayBsZXZlbCkiLAogICAiIC1DLCAtLWNvbnRpbnVlLWF0IE9GRlNFVCAgUmVzdW1lZCB0cmFuc2ZlciBPRkZTRVQiLAogICAiIC1iLCAtLWNvb2tpZSBTVFJJTkcvRklMRSAgUmVhZCBjb29raWVzIGZyb20gU1RSSU5HL0ZJTEUgKEgpIiwKICAgIiAtYywgLS1jb29raWUtamFyIEZJTEUgIFdyaXRlIGNvb2tpZXMgdG8gRklMRSBhZnRlciBvcGVyYXRpb24gKEgpIiwKQEAgLTgzLDYgKzg0LDcgQEAKICNpZmRlZiBVU0VfRU5WSVJPTk1FTlQKICAgIiAgICAgLS1lbnZpcm9ubWVudCAgIFdyaXRlIHJlc3VsdHMgdG8gZW52aXJvbm1lbnQgdmFyaWFibGVzIChSSVNDIE9TKSIsCiAjZW5kaWYKKyAgIiAgICAgLS1leHBlY3QxMDAtdGltZW91dCBTRUNPTkRTIEhvdyBsb25nIHRvIHdhaXQgZm9yIDEwMC1jb250aW51ZSAoSCkiLAogICAiIC1mLCAtLWZhaWwgICAgICAgICAgRmFpbCBzaWxlbnRseSAobm8gb3V0cHV0IGF0IGFsbCkgb24gSFRUUCBlcnJvcnMgKEgpIiwKICAgIiAgICAgLS1mYWxzZS1zdGFydCAgIEVuYWJsZSBUTFMgRmFsc2UgU3RhcnQuIiwKICAgIiAtRiwgLS1mb3JtIENPTlRFTlQgIFNwZWNpZnkgSFRUUCBtdWx0aXBhcnQgUE9TVCBkYXRhIChIKSIsCkBAIC0xMTAsNiArMTEyLDcgQEAKICAgIiAtMCwgLS1odHRwMS4wICAgICAgIFVzZSBIVFRQIDEuMCAoSCkiLAogICAiICAgICAtLWh0dHAxLjEgICAgICAgVXNlIEhUVFAgMS4xIChIKSIsCiAgICIgICAgIC0taHR0cDIgICAgICAgICBVc2UgSFRUUCAyIChIKSIsCisgICIgICAgIC0taHR0cDItcHJpb3Ita25vd2xlZGdlICBVc2UgSFRUUCAyIHdpdGhvdXQgSFRUUC8xLjEgVXBncmFkZSAoSCkiLAogICAiICAgICAtLWlnbm9yZS1jb250ZW50LWxlbmd0aCAgSWdub3JlIHRoZSBIVFRQIENvbnRlbnQtTGVuZ3RoIGhlYWRlciIsCiAgICIgLWksIC0taW5jbHVkZSAgICAgICBJbmNsdWRlIHByb3RvY29sIGhlYWRlcnMgaW4gdGhlIG91dHB1dCAoSC9GKSIsCiAgICIgLWssIC0taW5zZWN1cmUgICAgICBBbGxvdyBjb25uZWN0aW9ucyB0byBTU0wgc2l0ZXMgd2l0aG91dCBjZXJ0cyAoSCkiLApAQCAtMTUyLDEyICsxNTUsMTIgQEAKICAgIiAgICAgLS1uby1zZXNzaW9uaWQgIERpc2FibGUgU1NMIHNlc3Npb24tSUQgcmV1c2luZyAoU1NMKSIsCiAgICIgICAgIC0tbm9wcm94eSAgICAgICBMaXN0IG9mIGhvc3RzIHdoaWNoIGRvIG5vdCB1c2UgcHJveHkiLAogICAiICAgICAtLW50bG0gICAgICAgICAgVXNlIEhUVFAgTlRMTSBhdXRoZW50aWNhdGlvbiAoSCkiLAorICAiICAgICAtLW50bG0td2IgICAgICAgVXNlIEhUVFAgTlRMTSBhdXRoZW50aWNhdGlvbiB3aXRoIHdpbmJpbmQgKEgpIiwKICAgIiAgICAgLS1vYXV0aDItYmVhcmVyIFRPS0VOICBPQXV0aCAyIEJlYXJlciBUb2tlbiAoSU1BUCwgUE9QMywgU01UUCkiLAogICAiIC1vLCAtLW91dHB1dCBGSUxFICAgV3JpdGUgdG8gRklMRSBpbnN0ZWFkIG9mIHN0ZG91dCIsCiAgICIgICAgIC0tcGFzcyBQQVNTICAgICBQYXNzIHBocmFzZSBmb3IgdGhlIHByaXZhdGUga2V5IChTU0wvU1NIKSIsCiAgICIgICAgIC0tcGF0aC1hcy1pcyAgICBEbyBub3Qgc3F1YXNoIC4uIHNlcXVlbmNlcyBpbiBVUkwgcGF0aCIsCi0gICIgICAgIC0tcGlubmVkcHVia2V5IEZJTEUgIFB1YmxpYyBrZXkgKFBFTS9ERVIpIHRvIHZlcmlmeSBwZWVyIGFnYWluc3QgIgotICAiKE9wZW5TU0wvR251VExTL05TUy93b2xmU1NML0N5YVNTTC9HU0tpdCBvbmx5KSIsCisgICIgICAgIC0tcGlubmVkcHVia2V5IEZJTEUvSEFTSEVTIFB1YmxpYyBrZXkgdG8gdmVyaWZ5IHBlZXIgYWdhaW5zdCAoU1NMKSIsCiAgICIgICAgIC0tcG9zdDMwMSAgICAgICAiCiAgICJEbyBub3Qgc3dpdGNoIHRvIEdFVCBhZnRlciBmb2xsb3dpbmcgYSAzMDEgcmVkaXJlY3QgKEgpIiwKICAgIiAgICAgLS1wb3N0MzAyICAgICAgICIKQEAgLTE2Niw3ICsxNjksOCBAQAogICAiRG8gbm90IHN3aXRjaCB0byBHRVQgYWZ0ZXIgZm9sbG93aW5nIGEgMzAzIHJlZGlyZWN0IChIKSIsCiAgICIgLSMsIC0tcHJvZ3Jlc3MtYmFyICBEaXNwbGF5IHRyYW5zZmVyIHByb2dyZXNzIGFzIGEgcHJvZ3Jlc3MgYmFyIiwKICAgIiAgICAgLS1wcm90byBQUk9UT0NPTFMgIEVuYWJsZS9kaXNhYmxlIFBST1RPQ09MUyIsCi0gICIgICAgIC0tcHJvdG8tcmVkaXIgUFJPVE9DT0xTICBFbmFibGUvZGlzYWJsZSBQUk9UT0NPTFMgb24gcmVkaXJlY3QiLAorICAiICAgICAtLXByb3RvLWRlZmF1bHQgUFJPVE9DT0wgIFVzZSBQUk9UT0NPTCBmb3IgYW55IFVSTCBtaXNzaW5nIGEgc2NoZW1lIiwKKyAgIiAgICAgLS1wcm90by1yZWRpciBQUk9UT0NPTFMgICBFbmFibGUvZGlzYWJsZSBQUk9UT0NPTFMgb24gcmVkaXJlY3QiLAogICAiIC14LCAtLXByb3h5IFtQUk9UT0NPTDovL11IT1NUWzpQT1JUXSAgVXNlIHByb3h5IG9uIGdpdmVuIHBvcnQiLAogICAiICAgICAtLXByb3h5LWFueWF1dGggIFBpY2sgXCJhbnlcIiBwcm94eSBhdXRoZW50aWNhdGlvbiBtZXRob2QgKEgpIiwKICAgIiAgICAgLS1wcm94eS1iYXNpYyAgIFVzZSBCYXNpYyBhdXRoZW50aWNhdGlvbiBvbiB0aGUgcHJveHkgKEgpIiwKQEAgLTE3NCwxMCArMTc4LDkgQEAKICAgIiAgICAgLS1wcm94eS1uZWdvdGlhdGUgICIKICAgIlVzZSBIVFRQIE5lZ290aWF0ZSAoU1BORUdPKSBhdXRoZW50aWNhdGlvbiBvbiB0aGUgcHJveHkgKEgpIiwKICAgIiAgICAgLS1wcm94eS1udGxtICAgIFVzZSBOVExNIGF1dGhlbnRpY2F0aW9uIG9uIHRoZSBwcm94eSAoSCkiLAotI2lmIGRlZmluZWQoSEFWRV9HU1NBUEkpIHx8IGRlZmluZWQoVVNFX1dJTkRPV1NfU1NQSSkKKyAgIiAgICAgLS1wcm94eS1oZWFkZXIgTElORSBQYXNzIGN1c3RvbSBoZWFkZXIgTElORSB0byBwcm94eSAoSCkiLAogICAiICAgICAtLXByb3h5LXNlcnZpY2UtbmFtZSBOQU1FICBTUE5FR08gcHJveHkgc2VydmljZSBuYW1lIiwKICAgIiAgICAgLS1zZXJ2aWNlLW5hbWUgTkFNRSAgU1BORUdPIHNlcnZpY2UgbmFtZSIsCi0jZW5kaWYKICAgIiAtVSwgLS1wcm94eS11c2VyIFVTRVJbOlBBU1NXT1JEXSAgUHJveHkgdXNlciBhbmQgcGFzc3dvcmQiLAogICAiICAgICAtLXByb3h5MS4wIEhPU1RbOlBPUlRdICBVc2UgSFRUUC8xLjAgcHJveHkgb24gZ2l2ZW4gcG9ydCIsCiAgICIgLXAsIC0tcHJveHl0dW5uZWwgICBPcGVyYXRlIHRocm91Z2ggYSBIVFRQIHByb3h5IHR1bm5lbCAodXNpbmcgQ09OTkVDVCkiLApAQCAtMjA2LDEwICsyMDksOCBAQAogICAiICAgICAtLXNvY2tzNSBIT1NUWzpQT1JUXSAgU09DS1M1IHByb3h5IG9uIGdpdmVuIGhvc3QgKyBwb3J0IiwKICAgIiAgICAgLS1zb2NrczUtaG9zdG5hbWUgSE9TVFs6UE9SVF0gICIKICAgIlNPQ0tTNSBwcm94eSwgcGFzcyBob3N0IG5hbWUgdG8gcHJveHkiLAotI2lmIGRlZmluZWQoSEFWRV9HU1NBUEkpIHx8IGRlZmluZWQoVVNFX1dJTkRPV1NfU1NQSSkKICAgIiAgICAgLS1zb2NrczUtZ3NzYXBpLXNlcnZpY2UgTkFNRSAgU09DS1M1IHByb3h5IHNlcnZpY2UgbmFtZSBmb3IgR1NTLUFQSSIsCiAgICIgICAgIC0tc29ja3M1LWdzc2FwaS1uZWMgIENvbXBhdGliaWxpdHkgd2l0aCBORUMgU09DS1M1IHNlcnZlciIsCi0jZW5kaWYKICAgIiAtWSwgLS1zcGVlZC1saW1pdCBSQVRFICAiCiAgICJTdG9wIHRyYW5zZmVycyBiZWxvdyBSQVRFIGZvciAnc3BlZWQtdGltZScgc2VjcyIsCiAgICIgLXksIC0tc3BlZWQtdGltZSBTRUNPTkRTICAiCkBAIC0yMTksMTIgKzIyMCwxNSBAQAogICAiIC0yLCAtLXNzbHYyICAgICAgICAgVXNlIFNTTHYyIChTU0wpIiwKICAgIiAtMywgLS1zc2x2MyAgICAgICAgIFVzZSBTU0x2MyAoU1NMKSIsCiAgICIgICAgIC0tc3NsLWFsbG93LWJlYXN0ICBBbGxvdyBzZWN1cml0eSBmbGF3IHRvIGltcHJvdmUgaW50ZXJvcCAoU1NMKSIsCisgICIgICAgIC0tc3NsLW5vLXJldm9rZSAgICBEaXNhYmxlIGNlcnQgcmV2b2NhdGlvbiBjaGVja3MgKFdpblNTTCkiLAogICAiICAgICAtLXN0ZGVyciBGSUxFICAgV2hlcmUgdG8gcmVkaXJlY3Qgc3RkZXJyICh1c2UgXCItXCIgZm9yIHN0ZG91dCkiLAogICAiICAgICAtLXRjcC1ub2RlbGF5ICAgVXNlIHRoZSBUQ1BfTk9ERUxBWSBvcHRpb24iLAorICAiICAgICAtLXRjcC1mYXN0b3BlbiAgVXNlIFRDUCBGYXN0IE9wZW4iLAogICAiIC10LCAtLXRlbG5ldC1vcHRpb24gT1BUPVZBTCAgU2V0IHRlbG5ldCBvcHRpb24iLAogICAiICAgICAtLXRmdHAtYmxrc2l6ZSBWQUxVRSAgU2V0IFRGVFAgQkxLU0laRSBvcHRpb24gKG11c3QgYmUgPjUxMikiLAotICAiIC16LCAtLXRpbWUtY29uZCBUSU1FICBUcmFuc2ZlciBiYXNlZCBvbiBhIHRpbWUgY29uZGl0aW9uIiwKLSAgIiAtMSwgLS10bHN2MSAgICAgICAgIFVzZSA9PiBUTFN2MSAoU1NMKSIsCisgICIgICAgIC0tdGZ0cC1uby1vcHRpb25zICBEbyBub3Qgc2VuZCBURlRQIG9wdGlvbnMgcmVxdWVzdHMiLAorICAiIC16LCAtLXRpbWUtY29uZCBUSU1FICAgVHJhbnNmZXIgYmFzZWQgb24gYSB0aW1lIGNvbmRpdGlvbiIsCisgICIgLTEsIC0tdGxzdjEgICAgICAgICBVc2UgPj0gVExTdjEgKFNTTCkiLAogICAiICAgICAtLXRsc3YxLjAgICAgICAgVXNlIFRMU3YxLjAgKFNTTCkiLAogICAiICAgICAtLXRsc3YxLjEgICAgICAgVXNlIFRMU3YxLjEgKFNTTCkiLAogICAiICAgICAtLXRsc3YxLjIgICAgICAgVXNlIFRMU3YxLjIgKFNTTCkiLApAQCAtMjQ4LDcgKzI1Miw3IEBACiAjZW5kaWYKICAgIiAtdywgLS13cml0ZS1vdXQgRk9STUFUICBVc2Ugb3V0cHV0IEZPUk1BVCBhZnRlciBjb21wbGV0aW9uIiwKICAgIiAgICAgLS14YXR0ciAgICAgICAgIFN0b3JlIG1ldGFkYXRhIGluIGV4dGVuZGVkIGZpbGUgYXR0cmlidXRlcyIsCi0gICIgLXEgICAgICAgICAgICAgICAgICBEaXNhYmxlIC5jdXJscmMgKG11c3QgYmUgZmlyc3QgcGFyYW1ldGVyKSIsCisgICIgLXEsIC0tZGlzYWJsZSAgICAgICBEaXNhYmxlIC5jdXJscmMgKG11c3QgYmUgZmlyc3QgcGFyYW1ldGVyKSIsCiAgIE5VTEwKIH07CiAKQEAgLTMyMCw2ICszMjQsOSBAQAogI2lmZGVmIFVTRV9NRVRBTElOSwogICAgIHByaW50ZigiTWV0YWxpbmsgIik7CiAjZW5kaWYKKyNpZmRlZiBVU0VfTElCUFNMCisgICAgcHJpbnRmKCJQU0wgIik7CisjZW5kaWYKICAgICBwdXRzKCIiKTsgLyogbmV3bGluZSAqLwogICB9CiB9CmRpZmYgLS1naXQgYS9zcmMvdG9vbF9oZWxwLmggYi9zcmMvdG9vbF9oZWxwLmgKaW5kZXggOWVmNTAwNi4uNDM0MzJkNyAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xfaGVscC5oCisrKyBiL3NyYy90b29sX2hlbHAuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3NyYy90b29sX2hlbHBlcnMuYyBiL3NyYy90b29sX2hlbHBlcnMuYwppbmRleCA1NDc5YTFjLi5mZWYxNDU5IDEwMDY0NAotLS0gYS9zcmMvdG9vbF9oZWxwZXJzLmMKKysrIGIvc3JjL3Rvb2xfaGVscGVycy5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTU4LDYgKzU4LDggQEAKICAgICByZXR1cm4gImV4cGVjdGVkIGEgcG9zaXRpdmUgbnVtZXJpY2FsIHBhcmFtZXRlciI7CiAgIGNhc2UgUEFSQU1fTElCQ1VSTF9ET0VTTlRfU1VQUE9SVDoKICAgICByZXR1cm4gInRoZSBpbnN0YWxsZWQgbGliY3VybCB2ZXJzaW9uIGRvZXNuJ3Qgc3VwcG9ydCB0aGlzIjsKKyAgY2FzZSBQQVJBTV9MSUJDVVJMX1VOU1VQUE9SVEVEX1BST1RPQ09MOgorICAgIHJldHVybiAiYSBzcGVjaWZpZWQgcHJvdG9jb2wgaXMgdW5zdXBwb3J0ZWQgYnkgbGliY3VybCI7CiAgIGNhc2UgUEFSQU1fTk9fTUVNOgogICAgIHJldHVybiAib3V0IG9mIG1lbW9yeSI7CiAgIGRlZmF1bHQ6CkBAIC02NywxMyArNjksNDggQEAKIAogaW50IFNldEhUVFByZXF1ZXN0KHN0cnVjdCBPcGVyYXRpb25Db25maWcgKmNvbmZpZywgSHR0cFJlcSByZXEsIEh0dHBSZXEgKnN0b3JlKQogeworICAvKiB0aGlzIG1pcnJvcnMgdGhlIEh0dHBSZXEgZW51bSBpbiB0b29sX3NkZWNscy5oICovCisgIGNvbnN0IGNoYXIgKnJlcW5hbWVbXT0geworICAgICIiLCAvKiB1bnNwZWMgKi8KKyAgICAiR0VUICgtRywgLS1nZXQpIiwKKyAgICAiSEVBRCAoLUksIC0taGVhZCkiLAorICAgICJtdWx0aXBhcnQgZm9ybXBvc3QgKC1GLCAtLWZvcm0pIiwKKyAgICAiUE9TVCAoLWQsIC0tZGF0YSkiCisgIH07CisKICAgaWYoKCpzdG9yZSA9PSBIVFRQUkVRX1VOU1BFQykgfHwKICAgICAgKCpzdG9yZSA9PSByZXEpKSB7CiAgICAgKnN0b3JlID0gcmVxOwogICAgIHJldHVybiAwOwogICB9Ci0KLSAgd2FybmYoY29uZmlnLT5nbG9iYWwsICJZb3UgY2FuIG9ubHkgc2VsZWN0IG9uZSBIVFRQIHJlcXVlc3QhXG4iKTsKKyAgd2FybmYoY29uZmlnLT5nbG9iYWwsICJZb3UgY2FuIG9ubHkgc2VsZWN0IG9uZSBIVFRQIHJlcXVlc3QgbWV0aG9kISAiCisgICAgICAgICJZb3UgYXNrZWQgZm9yIGJvdGggJXMgYW5kICVzLlxuIiwKKyAgICAgICAgcmVxbmFtZVtyZXFdLCByZXFuYW1lWypzdG9yZV0pOwogCiAgIHJldHVybiAxOwogfQorCit2b2lkIGN1c3RvbXJlcXVlc3RfaGVscGVyKHN0cnVjdCBPcGVyYXRpb25Db25maWcgKmNvbmZpZywgSHR0cFJlcSByZXEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKm1ldGhvZCkKK3sKKyAgLyogdGhpcyBtaXJyb3JzIHRoZSBIdHRwUmVxIGVudW0gaW4gdG9vbF9zZGVjbHMuaCAqLworICBjb25zdCBjaGFyICpkZmx0W109IHsKKyAgICAiR0VUIiwKKyAgICAiR0VUIiwKKyAgICAiSEVBRCIsCisgICAgIlBPU1QiLAorICAgICJQT1NUIgorICB9OworCisgIGlmKCFtZXRob2QpCisgICAgOworICBlbHNlIGlmKGN1cmxfc3RyZXF1YWwobWV0aG9kLCBkZmx0W3JlcV0pKSB7CisgICAgbm90ZWYoY29uZmlnLT5nbG9iYWwsICJVbm5lY2Vzc2FyeSB1c2Ugb2YgLVggb3IgLS1yZXF1ZXN0LCAlcyBpcyBhbHJlYWR5ICIKKyAgICAgICAgICAiaW5mZXJyZWQuXG4iLCBkZmx0W3JlcV0pOworICB9CisgIGVsc2UgaWYoY3VybF9zdHJlcXVhbChtZXRob2QsICJoZWFkIikpIHsKKyAgICB3YXJuZihjb25maWctPmdsb2JhbCwKKyAgICAgICAgICAiU2V0dGluZyBjdXN0b20gSFRUUCBtZXRob2QgdG8gSEVBRCB3aXRoIC1YLy0tcmVxdWVzdCBtYXkgbm90IHdvcmsgIgorICAgICAgICAgICJ0aGUgd2F5IHlvdSB3YW50LiBDb25zaWRlciB1c2luZyAtSS8tLWhlYWQgaW5zdGVhZC5cbiIpOworICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvdG9vbF9oZWxwZXJzLmggYi9zcmMvdG9vbF9oZWxwZXJzLmgKaW5kZXggNzNiY2ZjNy4uOWVkZTE2ZSAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xfaGVscGVycy5oCisrKyBiL3NyYy90b29sX2hlbHBlcnMuaApAQCAtNywxMSArNywxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTI4LDUgKzI4LDggQEAKIGludCBTZXRIVFRQcmVxdWVzdChzdHJ1Y3QgT3BlcmF0aW9uQ29uZmlnICpjb25maWcsIEh0dHBSZXEgcmVxLAogICAgICAgICAgICAgICAgICAgIEh0dHBSZXEgKnN0b3JlKTsKIAordm9pZCBjdXN0b21yZXF1ZXN0X2hlbHBlcihzdHJ1Y3QgT3BlcmF0aW9uQ29uZmlnICpjb25maWcsIEh0dHBSZXEgcmVxLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICptZXRob2QpOworCiAjZW5kaWYgLyogSEVBREVSX0NVUkxfVE9PTF9IRUxQRVJTX0ggKi8KIApkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xfaG9tZWRpci5jIGIvc3JjL3Rvb2xfaG9tZWRpci5jCmluZGV4IDczYTY2ZjguLmNjZjA0YjUgMTAwNjQ0Ci0tLSBhL3NyYy90b29sX2hvbWVkaXIuYworKysgYi9zcmMvdG9vbF9ob21lZGlyLmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xfaG9tZWRpci5oIGIvc3JjL3Rvb2xfaG9tZWRpci5oCmluZGV4IGQ1ODg2MTUuLjk4ZDk0YjggMTAwNjQ0Ci0tLSBhL3NyYy90b29sX2hvbWVkaXIuaAorKysgYi9zcmMvdG9vbF9ob21lZGlyLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9zcmMvdG9vbF9odWdlaGVscC5jIGIvc3JjL3Rvb2xfaHVnZWhlbHAuYwppbmRleCA1ODk1OTAwLi4yNDk5YTQ4IDEwMDY0NAotLS0gYS9zcmMvdG9vbF9odWdlaGVscC5jCisrKyBiL3NyYy90b29sX2h1Z2VoZWxwLmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xfaHVnZWhlbHAuaCBiL3NyYy90b29sX2h1Z2VoZWxwLmgKaW5kZXggNDQyNTc5ZS4uMTY1MjBiNiAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xfaHVnZWhlbHAuaAorKysgYi9zcmMvdG9vbF9odWdlaGVscC5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xfbGliaW5mby5jIGIvc3JjL3Rvb2xfbGliaW5mby5jCmluZGV4IGE4ZmZiOGYuLjVkYjg1NDggMTAwNjQ0Ci0tLSBhL3NyYy90b29sX2xpYmluZm8uYworKysgYi9zcmMvdG9vbF9saWJpbmZvLmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xfbGliaW5mby5oIGIvc3JjL3Rvb2xfbGliaW5mby5oCmluZGV4IDVjMTQ5ZDkuLjI5OGRmODAgMTAwNjQ0Ci0tLSBhL3NyYy90b29sX2xpYmluZm8uaAorKysgYi9zcmMvdG9vbF9saWJpbmZvLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9zcmMvdG9vbF9tYWluLmMgYi9zcmMvdG9vbF9tYWluLmMKaW5kZXggOWE1Y2ViYS4uN2U3NDJmZiAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xfbWFpbi5jCisrKyBiL3NyYy90b29sX21haW4uYwpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9zcmMvdG9vbF9tYWluLmggYi9zcmMvdG9vbF9tYWluLmgKaW5kZXggOWE3OTcyZi4uYzk3YzM2MCAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xfbWFpbi5oCisrKyBiL3NyYy90b29sX21haW4uaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3NyYy90b29sX21ldGFsaW5rLmMgYi9zcmMvdG9vbF9tZXRhbGluay5jCmluZGV4IDU4NzNhZGYuLjlhNjQ2NWUgMTAwNjQ0Ci0tLSBhL3NyYy90b29sX21ldGFsaW5rLmMKKysrIGIvc3JjL3Rvb2xfbWV0YWxpbmsuYwpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9zcmMvdG9vbF9tZXRhbGluay5oIGIvc3JjL3Rvb2xfbWV0YWxpbmsuaAppbmRleCAzNjg1OTA2Li43ZWUyNzM2IDEwMDY0NAotLS0gYS9zcmMvdG9vbF9tZXRhbGluay5oCisrKyBiL3NyYy90b29sX21ldGFsaW5rLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9zcmMvdG9vbF9tZmlsZXMuYyBiL3NyYy90b29sX21maWxlcy5jCmluZGV4IDNlZGE0NWYuLmQ4NjJkNDEgMTAwNjQ0Ci0tLSBhL3NyYy90b29sX21maWxlcy5jCisrKyBiL3NyYy90b29sX21maWxlcy5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3NyYy90b29sX21maWxlcy5oIGIvc3JjL3Rvb2xfbWZpbGVzLmgKaW5kZXggMWVhNmY0YS4uODI3ZjQwMCAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xfbWZpbGVzLmgKKysrIGIvc3JjL3Rvb2xfbWZpbGVzLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9zcmMvdG9vbF9tc2dzLmMgYi9zcmMvdG9vbF9tc2dzLmMKaW5kZXggMzhkZTk3Ny4uMTQ1NDkwMyAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xfbXNncy5jCisrKyBiL3NyYy90b29sX21zZ3MuYwpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zMSwzMSArMzEsMjcgQEAKICNpbmNsdWRlICJtZW1kZWJ1Zy5oIiAvKiBrZWVwIHRoaXMgYXMgTEFTVCBpbmNsdWRlICovCiAKICNkZWZpbmUgV0FSTl9QUkVGSVggIldhcm5pbmc6ICIKLSNkZWZpbmUgV0FSTl9URVhUV0lEVEggKDc5IC0gKGludClzdHJsZW4oV0FSTl9QUkVGSVgpKQorI2RlZmluZSBOT1RFX1BSRUZJWCAiTm90ZTogIgogCi0vKgotICogRW1pdCB3YXJuaW5nIGZvcm1hdHRlZCBtZXNzYWdlIG9uIGNvbmZpZ3VyZWQgJ2Vycm9ycycgc3RyZWFtIHVubGVzcwotICogbXV0ZSAoLS1zaWxlbnQpIHdhcyBzZWxlY3RlZC4KLSAqLwotCi12b2lkIHdhcm5mKHN0cnVjdCBHbG9iYWxDb25maWcgKmNvbmZpZywgY29uc3QgY2hhciAqZm10LCAuLi4pCitzdGF0aWMgdm9pZCB2b3V0ZihzdHJ1Y3QgR2xvYmFsQ29uZmlnICpjb25maWcsCisgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwcmVmaXgsCisgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmbXQsCisgICAgICAgICAgICAgICAgICB2YV9saXN0IGFwKQogeworICBzaXplX3Qgd2lkdGggPSAoNzkgLSAoaW50KXN0cmxlbihwcmVmaXgpKTsKICAgaWYoIWNvbmZpZy0+bXV0ZSkgewotICAgIHZhX2xpc3QgYXA7Ci0gICAgaW50IGxlbjsKKyAgICBzaXplX3QgbGVuOwogICAgIGNoYXIgKnB0cjsKICAgICBjaGFyIHByaW50X2J1ZmZlclsyNTZdOwogCi0gICAgdmFfc3RhcnQoYXAsIGZtdCk7CiAgICAgbGVuID0gdnNucHJpbnRmKHByaW50X2J1ZmZlciwgc2l6ZW9mKHByaW50X2J1ZmZlciksIGZtdCwgYXApOwotICAgIHZhX2VuZChhcCk7CiAKICAgICBwdHIgPSBwcmludF9idWZmZXI7CiAgICAgd2hpbGUobGVuID4gMCkgewotICAgICAgZnB1dHMoV0FSTl9QUkVGSVgsIGNvbmZpZy0+ZXJyb3JzKTsKKyAgICAgIGZwdXRzKHByZWZpeCwgY29uZmlnLT5lcnJvcnMpOwogCi0gICAgICBpZihsZW4gPiAoaW50KVdBUk5fVEVYVFdJRFRIKSB7Ci0gICAgICAgIGludCBjdXQgPSBXQVJOX1RFWFRXSURUSC0xOworICAgICAgaWYobGVuID4gd2lkdGgpIHsKKyAgICAgICAgc2l6ZV90IGN1dCA9IHdpZHRoLTE7CiAKICAgICAgICAgd2hpbGUoIUlTU1BBQ0UocHRyW2N1dF0pICYmIGN1dCkgewogICAgICAgICAgIGN1dC0tOwpAQCAtNjMsNyArNTksNyBAQAogICAgICAgICBpZigwID09IGN1dCkKICAgICAgICAgICAvKiBub3QgYSBzaW5nbGUgY3V0dGluZyBwb3NpdGlvbiB3YXMgZm91bmQsIGp1c3QgY3V0IGl0IGF0IHRoZQogICAgICAgICAgICAgIG1heCB0ZXh0IHdpZHRoIHRoZW4hICovCi0gICAgICAgICAgY3V0ID0gV0FSTl9URVhUV0lEVEgtMTsKKyAgICAgICAgICBjdXQgPSB3aWR0aC0xOwogCiAgICAgICAgICh2b2lkKWZ3cml0ZShwdHIsIGN1dCArIDEsIDEsIGNvbmZpZy0+ZXJyb3JzKTsKICAgICAgICAgZnB1dHMoIlxuIiwgY29uZmlnLT5lcnJvcnMpOwpAQCAtNzksNiArNzUsMzEgQEAKIH0KIAogLyoKKyAqIEVtaXQgJ25vdGUnIGZvcm1hdHRlZCBtZXNzYWdlIG9uIGNvbmZpZ3VyZWQgJ2Vycm9ycycgc3RyZWFtLCBpZiB2ZXJib3NlIHdhcworICogc2VsZWN0ZWQuCisgKi8KK3ZvaWQgbm90ZWYoc3RydWN0IEdsb2JhbENvbmZpZyAqY29uZmlnLCBjb25zdCBjaGFyICpmbXQsIC4uLikKK3sKKyAgdmFfbGlzdCBhcDsKKyAgdmFfc3RhcnQoYXAsIGZtdCk7CisgIGlmKGNvbmZpZy0+dHJhY2V0eXBlKQorICAgIHZvdXRmKGNvbmZpZywgTk9URV9QUkVGSVgsIGZtdCwgYXApOworICB2YV9lbmQoYXApOworfQorCisvKgorICogRW1pdCB3YXJuaW5nIGZvcm1hdHRlZCBtZXNzYWdlIG9uIGNvbmZpZ3VyZWQgJ2Vycm9ycycgc3RyZWFtIHVubGVzcworICogbXV0ZSAoLS1zaWxlbnQpIHdhcyBzZWxlY3RlZC4KKyAqLworCit2b2lkIHdhcm5mKHN0cnVjdCBHbG9iYWxDb25maWcgKmNvbmZpZywgY29uc3QgY2hhciAqZm10LCAuLi4pCit7CisgIHZhX2xpc3QgYXA7CisgIHZhX3N0YXJ0KGFwLCBmbXQpOworICB2b3V0Zihjb25maWcsIFdBUk5fUFJFRklYLCBmbXQsIGFwKTsKKyAgdmFfZW5kKGFwKTsKK30KKy8qCiAgKiBFbWl0IGhlbHAgZm9ybWF0dGVkIG1lc3NhZ2Ugb24gZ2l2ZW4gc3RyZWFtLgogICovCiAKZGlmZiAtLWdpdCBhL3NyYy90b29sX21zZ3MuaCBiL3NyYy90b29sX21zZ3MuaAppbmRleCBiZjk3YmZiLi5lODRjMWIyIDEwMDY0NAotLS0gYS9zcmMvdG9vbF9tc2dzLmgKKysrIGIvc3JjL3Rvb2xfbXNncy5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgInRvb2xfc2V0dXAuaCIKIAogdm9pZCB3YXJuZihzdHJ1Y3QgR2xvYmFsQ29uZmlnICpjb25maWcsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKK3ZvaWQgbm90ZWYoc3RydWN0IEdsb2JhbENvbmZpZyAqY29uZmlnLCBjb25zdCBjaGFyICpmbXQsIC4uLik7CiAKIHZvaWQgaGVscGYoRklMRSAqZXJyb3JzLCBjb25zdCBjaGFyICpmbXQsIC4uLik7CiAKZGlmZiAtLWdpdCBhL3NyYy90b29sX29wZXJhdGUuYyBiL3NyYy90b29sX29wZXJhdGUuYwppbmRleCBmZWE1ODdiLi41ZjQ5ZWZiIDEwMDY0NAotLS0gYS9zcmMvdG9vbF9vcGVyYXRlLmMKKysrIGIvc3JjL3Rvb2xfb3BlcmF0ZS5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtOTgsNyArOTgsNyBAQAogI2VuZGlmCiAKICNkZWZpbmUgQ1VSTF9DQV9DRVJUX0VSUk9STVNHMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICJNb3JlIGRldGFpbHMgaGVyZTogaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL3NzbGNlcnRzLmh0bWxcblxuIiAgICAgICAgICAgXAorICAiTW9yZSBkZXRhaWxzIGhlcmU6IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3Mvc3NsY2VydHMuaHRtbFxuXG4iICAgICAgICAgICBcCiAgICJjdXJsIHBlcmZvcm1zIFNTTCBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gYnkgZGVmYXVsdCwgIiAgICAgICAgICAgICAgICAgXAogICAidXNpbmcgYSBcImJ1bmRsZVwiXG4iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIiBvZiBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgKENBKSBwdWJsaWMga2V5cyAoQ0EgY2VydHMpLiBJZiB0aGUgZGVmYXVsdFxuIiBcCkBAIC0xNTEsNiArMTUxLDcgQEAKICAgaW50IHJldF9zdGF0OwogICBGSUxFICogZmlsZTsKIAorICAvKiAhY2hlY2tzcmMhIGRpc2FibGUgRk9QRU5NT0RFIDEgKi8KICAgZmlsZSA9IGZvcGVuKG5hbWUsICJyIik7IC8qIFZNUyAqLwogICBpZihmaWxlID09IE5VTEwpIHsKICAgICByZXR1cm4gMDsKQEAgLTIwNCw2ICsyMDUsNyBAQAogCiAgIENVUkxjb2RlIHJlc3VsdCA9IENVUkxFX09LOwogICB1bnNpZ25lZCBsb25nIGxpOworICBib29sIGNhcGF0aF9mcm9tX2VudjsKIAogICAvKiBTYXZlIHRoZSB2YWx1ZXMgb2Ygbm9wcm9ncmVzcyBhbmQgaXNhdHR5IHRvIHJlc3RvcmUgdGhlbSBsYXRlciBvbiAqLwogICBib29sIG9yaWdfbm9wcm9ncmVzcyA9IGdsb2JhbC0+bm9wcm9ncmVzczsKQEAgLTIzOSw2ICsyNDEsNyBAQAogICAgKiBXZSBzdXBwb3J0IHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSB0aGluZyBmb3Igbm9uLVdpbmRvd3MgcGxhdGZvcm1zCiAgICAqIHRvby4gSnVzdCBmb3IgdGhlIHNha2Ugb2YgaXQuCiAgICAqLworICBjYXBhdGhfZnJvbV9lbnYgPSBmYWxzZTsKICAgaWYoIWNvbmZpZy0+Y2FjZXJ0ICYmCiAgICAgICFjb25maWctPmNhcGF0aCAmJgogICAgICAhY29uZmlnLT5pbnNlY3VyZV9vaykgewpAQCAtMjYzLDYgKzI2Niw3IEBACiAgICAgICAgICAgcmVzdWx0ID0gQ1VSTEVfT1VUX09GX01FTU9SWTsKICAgICAgICAgICBnb3RvIHF1aXRfY3VybDsKICAgICAgICAgfQorICAgICAgICBjYXBhdGhfZnJvbV9lbnYgPSB0cnVlOwogICAgICAgfQogICAgICAgZWxzZSB7CiAgICAgICAgIGVudiA9IGN1cmx4X2dldGVudigiU1NMX0NFUlRfRklMRSIpOwpAQCAtNTQ4LDE1ICs1NTIsNiBAQAogICAgICAgICAgICAgICByZXN1bHQgPSBDVVJMRV9XUklURV9FUlJPUjsKICAgICAgICAgICAgICAgZ290byBxdWl0X3VybHM7CiAgICAgICAgICAgICB9Ci0jaWYgZGVmaW5lZChNU0RPUykgfHwgZGVmaW5lZChXSU4zMikKLSAgICAgICAgICAgIC8qIEZvciBET1MgYW5kIFdJTjMyLCB3ZSBkbyBzb21lIG1ham9yIHJlcGxhY2luZyBvZgotICAgICAgICAgICAgICAgYmFkIGNoYXJhY3RlcnMgaW4gdGhlIGZpbGUgbmFtZSBiZWZvcmUgdXNpbmcgaXQgKi8KLSAgICAgICAgICAgIG91dGZpbGUgPSBzYW5pdGl6ZV9kb3NfbmFtZShvdXRmaWxlKTsKLSAgICAgICAgICAgIGlmKCFvdXRmaWxlKSB7Ci0gICAgICAgICAgICAgIHJlc3VsdCA9IENVUkxFX09VVF9PRl9NRU1PUlk7Ci0gICAgICAgICAgICAgIGdvdG8gc2hvd19lcnJvcjsKLSAgICAgICAgICAgIH0KLSNlbmRpZiAvKiBNU0RPUyB8fCBXSU4zMiAqLwogICAgICAgICAgIH0KICAgICAgICAgICBlbHNlIGlmKHVybHMpIHsKICAgICAgICAgICAgIC8qIGZpbGwgJyMxJyAuLi4gJyM5JyB0ZXJtcyBmcm9tIFVSTCBwYXR0ZXJuICovCkBAIC04MDAsNiArNzk1LDkgQEAKICAgICAgICAgaWYoY29uZmlnLT50Y3Bfbm9kZWxheSkKICAgICAgICAgICBteV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9UQ1BfTk9ERUxBWSwgMUwpOwogCisgICAgICAgIGlmKGNvbmZpZy0+dGNwX2Zhc3RvcGVuKQorICAgICAgICAgIG15X3NldG9wdChjdXJsLCBDVVJMT1BUX1RDUF9GQVNUT1BFTiwgMUwpOworCiAgICAgICAgIC8qIHdoZXJlIHRvIHN0b3JlICovCiAgICAgICAgIG15X3NldG9wdChjdXJsLCBDVVJMT1BUX1dSSVRFREFUQSwgJm91dHMpOwogICAgICAgICBpZihtZXRhbGluayB8fCAhY29uZmlnLT51c2VfbWV0YWxpbmspCkBAIC04NTEsOCArODQ5LDggQEAKICAgICAgICAgZWxzZSBpZighY29uZmlnLT51c2VfbWV0YWxpbmspCiAgICAgICAgICAgbXlfc2V0b3B0KGN1cmwsIENVUkxPUFRfSEVBREVSLCBjb25maWctPmluY2x1ZGVfaGVhZGVycz8xTDowTCk7CiAKLSAgICAgICAgaWYoY29uZmlnLT54b2F1dGgyX2JlYXJlcikKLSAgICAgICAgICBteV9zZXRvcHRfc3RyKGN1cmwsIENVUkxPUFRfWE9BVVRIMl9CRUFSRVIsIGNvbmZpZy0+eG9hdXRoMl9iZWFyZXIpOworICAgICAgICBpZihjb25maWctPm9hdXRoX2JlYXJlcikKKyAgICAgICAgICBteV9zZXRvcHRfc3RyKGN1cmwsIENVUkxPUFRfWE9BVVRIMl9CRUFSRVIsIGNvbmZpZy0+b2F1dGhfYmVhcmVyKTsKIAogI2lmICFkZWZpbmVkKENVUkxfRElTQUJMRV9QUk9YWSkKICAgICAgICAgewpAQCAtODkyLDcgKzg5MCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZylDVVJMQVVUSF9CQVNJQyk7CiAKICAgICAgICAgICAvKiBuZXcgaW4gbGliY3VybCA3LjE5LjQgKi8KLSAgICAgICAgICBteV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9OT1BST1hZLCBjb25maWctPm5vcHJveHkpOworICAgICAgICAgIG15X3NldG9wdF9zdHIoY3VybCwgQ1VSTE9QVF9OT1BST1hZLCBjb25maWctPm5vcHJveHkpOwogICAgICAgICB9CiAjZW5kaWYKIApAQCAtOTA5LDcgKzkwNyw3IEBACiAgICAgICAgICAgbXlfc2V0b3B0X2VudW0oY3VybCwgQ1VSTE9QVF9ORVRSQywgKGxvbmcpQ1VSTF9ORVRSQ19JR05PUkVEKTsKIAogICAgICAgICBpZihjb25maWctPm5ldHJjX2ZpbGUpCi0gICAgICAgICAgbXlfc2V0b3B0KGN1cmwsIENVUkxPUFRfTkVUUkNfRklMRSwgY29uZmlnLT5uZXRyY19maWxlKTsKKyAgICAgICAgICBteV9zZXRvcHRfc3RyKGN1cmwsIENVUkxPUFRfTkVUUkNfRklMRSwgY29uZmlnLT5uZXRyY19maWxlKTsKIAogICAgICAgICBteV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9UUkFOU0ZFUlRFWFQsIGNvbmZpZy0+dXNlX2FzY2lpPzFMOjBMKTsKICAgICAgICAgaWYoY29uZmlnLT5sb2dpbl9vcHRpb25zKQpAQCAtOTM1LDcgKzkzMyw3IEBACiAgICAgICAgICAgICBteV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9QT1NURklFTERTSVpFX0xBUkdFLAogICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy0+cG9zdGZpZWxkc2l6ZSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEhUVFBSRVFfUE9TVDoKKyAgICAgICAgICBjYXNlIEhUVFBSRVFfRk9STVBPU1Q6CiAgICAgICAgICAgICBteV9zZXRvcHRfaHR0cHBvc3QoY3VybCwgQ1VSTE9QVF9IVFRQUE9TVCwgY29uZmlnLT5odHRwcG9zdCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICBkZWZhdWx0OgpAQCAtOTU2LDkgKzk1NCwxMSBAQAogICAgICAgICAgIC8qIG5ldyBpbiBsaWJjdXJsIDcuNSAqLwogICAgICAgICAgIG15X3NldG9wdChjdXJsLCBDVVJMT1BUX01BWFJFRElSUywgY29uZmlnLT5tYXhyZWRpcnMpOwogCi0gICAgICAgICAgLyogbmV3IGluIGxpYmN1cmwgNy45LjEgKi8KICAgICAgICAgICBpZihjb25maWctPmh0dHB2ZXJzaW9uKQogICAgICAgICAgICAgbXlfc2V0b3B0X2VudW0oY3VybCwgQ1VSTE9QVF9IVFRQX1ZFUlNJT04sIGNvbmZpZy0+aHR0cHZlcnNpb24pOworICAgICAgICAgIGVsc2UgaWYoY3VybGluZm8tPmZlYXR1cmVzICYgQ1VSTF9WRVJTSU9OX0hUVFAyKSB7CisgICAgICAgICAgICBteV9zZXRvcHRfZW51bShjdXJsLCBDVVJMT1BUX0hUVFBfVkVSU0lPTiwgQ1VSTF9IVFRQX1ZFUlNJT05fMlRMUyk7CisgICAgICAgICAgfQogCiAgICAgICAgICAgLyogbmV3IGluIGxpYmN1cmwgNy4xMC42IChkZWZhdWx0IGlzIEJhc2ljKSAqLwogICAgICAgICAgIGlmKGNvbmZpZy0+YXV0aHR5cGUpCkBAIC0xMDE2LDggKzEwMTYsMTYgQEAKIAogICAgICAgICBpZihjb25maWctPmNhY2VydCkKICAgICAgICAgICBteV9zZXRvcHRfc3RyKGN1cmwsIENVUkxPUFRfQ0FJTkZPLCBjb25maWctPmNhY2VydCk7Ci0gICAgICAgIGlmKGNvbmZpZy0+Y2FwYXRoKQotICAgICAgICAgIG15X3NldG9wdF9zdHIoY3VybCwgQ1VSTE9QVF9DQVBBVEgsIGNvbmZpZy0+Y2FwYXRoKTsKKyAgICAgICAgaWYoY29uZmlnLT5jYXBhdGgpIHsKKyAgICAgICAgICByZXN1bHQgPSByZXNfc2V0b3B0X3N0cihjdXJsLCBDVVJMT1BUX0NBUEFUSCwgY29uZmlnLT5jYXBhdGgpOworICAgICAgICAgIGlmKHJlc3VsdCA9PSBDVVJMRV9OT1RfQlVJTFRfSU4pIHsKKyAgICAgICAgICAgIHdhcm5mKGNvbmZpZy0+Z2xvYmFsLCAiaWdub3JpbmcgJXMsIG5vdCBzdXBwb3J0ZWQgYnkgbGliY3VybFxuIiwKKyAgICAgICAgICAgICAgICAgIGNhcGF0aF9mcm9tX2Vudj8KKyAgICAgICAgICAgICAgICAgICJTU0xfQ0VSVF9ESVIgZW52aXJvbm1lbnQgdmFyaWFibGUiOiItLWNhcGF0aCIpOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmKHJlc3VsdCkKKyAgICAgICAgICAgIGdvdG8gc2hvd19lcnJvcjsKKyAgICAgICAgfQogICAgICAgICBpZihjb25maWctPmNybGZpbGUpCiAgICAgICAgICAgbXlfc2V0b3B0X3N0cihjdXJsLCBDVVJMT1BUX0NSTEZJTEUsIGNvbmZpZy0+Y3JsZmlsZSk7CiAKQEAgLTExMDgsNiArMTExNiw3IEBACiAgICAgICAgIG15X3NldG9wdF9lbnVtKGN1cmwsIENVUkxPUFRfVElNRUNPTkRJVElPTiwgKGxvbmcpY29uZmlnLT50aW1lY29uZCk7CiAgICAgICAgIG15X3NldG9wdChjdXJsLCBDVVJMT1BUX1RJTUVWQUxVRSwgKGxvbmcpY29uZmlnLT5jb25kdGltZSk7CiAgICAgICAgIG15X3NldG9wdF9zdHIoY3VybCwgQ1VSTE9QVF9DVVNUT01SRVFVRVNULCBjb25maWctPmN1c3RvbXJlcXVlc3QpOworICAgICAgICBjdXN0b21yZXF1ZXN0X2hlbHBlcihjb25maWcsIGNvbmZpZy0+aHR0cHJlcSwgY29uZmlnLT5jdXN0b21yZXF1ZXN0KTsKICAgICAgICAgbXlfc2V0b3B0KGN1cmwsIENVUkxPUFRfU1RERVJSLCBnbG9iYWwtPmVycm9ycyk7CiAKICAgICAgICAgLyogdGhyZWUgbmV3IG9uZXMgaW4gbGliY3VybCA3LjM6ICovCkBAIC0xMTcxLDkgKzExODAsMTIgQEAKICAgICAgICAgICBteV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9TU0xFTkdJTkVfREVGQVVMVCwgMUwpOwogICAgICAgICB9CiAKLSAgICAgICAgLyogbmV3IGluIGN1cmwgNy4xMC43LCBleHRlbmRlZCBpbiA3LjE5LjQgYnV0IHRoaXMgb25seSBzZXRzIDAgb3IgMSAqLworICAgICAgICAvKiBuZXcgaW4gY3VybCA3LjEwLjcsIGV4dGVuZGVkIGluIDcuMTkuNC4gTW9kaWZpZWQgdG8gdXNlCisgICAgICAgICAgIENSRUFURV9ESVJfUkVUUlkgaW4gNy40OS4wICovCiAgICAgICAgIG15X3NldG9wdChjdXJsLCBDVVJMT1BUX0ZUUF9DUkVBVEVfTUlTU0lOR19ESVJTLAotICAgICAgICAgICAgICAgICAgY29uZmlnLT5mdHBfY3JlYXRlX2RpcnM/MUw6MEwpOworICAgICAgICAgICAgICAgICAgKGxvbmcpKGNvbmZpZy0+ZnRwX2NyZWF0ZV9kaXJzPworICAgICAgICAgICAgICAgICAgICAgICAgIENVUkxGVFBfQ1JFQVRFX0RJUl9SRVRSWToKKyAgICAgICAgICAgICAgICAgICAgICAgICBDVVJMRlRQX0NSRUFURV9ESVJfTk9ORSkpOwogCiAgICAgICAgIC8qIG5ldyBpbiBjdXJsIDcuMTAuOCAqLwogICAgICAgICBpZihjb25maWctPm1heF9maWxlc2l6ZSkKQEAgLTEyMDQsMzIgKzEyMTYsMjEgQEAKICAgICAgICAgICBteV9zZXRvcHRfZW51bShjdXJsLCBDVVJMT1BUX0ZUUF9TU0xfQ0NDLAogICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKWNvbmZpZy0+ZnRwX3NzbF9jY2NfbW9kZSk7CiAKLSNpZiBkZWZpbmVkKEhBVkVfR1NTQVBJKSB8fCBkZWZpbmVkKFVTRV9XSU5ET1dTX1NTUEkpCi0gICAgICAgIHsKLSAgICAgICAgICAvKiBUT0RPOiBNYWtlIHRoaXMgYSBydW4tdGltZSBjaGVjayBpbnN0ZWFkIG9mIGNvbXBpbGUtdGltZSBvbmUuICovCisgICAgICAgIC8qIG5ldyBpbiBjdXJsIDcuMTkuNCAqLworICAgICAgICBpZihjb25maWctPnNvY2tzNV9nc3NhcGlfbmVjKQorICAgICAgICAgIG15X3NldG9wdF9zdHIoY3VybCwgQ1VSTE9QVF9TT0NLUzVfR1NTQVBJX05FQywKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy0+c29ja3M1X2dzc2FwaV9uZWMpOwogCi0gICAgICAgICAgLyogbmV3IGluIGN1cmwgNy4xOS40ICovCi0gICAgICAgICAgaWYoY29uZmlnLT5zb2NrczVfZ3NzYXBpX3NlcnZpY2UpCi0gICAgICAgICAgICBteV9zZXRvcHRfc3RyKGN1cmwsIENVUkxPUFRfU09DS1M1X0dTU0FQSV9TRVJWSUNFLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWctPnNvY2tzNV9nc3NhcGlfc2VydmljZSk7CisgICAgICAgIC8qIG5ldyBpbiBjdXJsIDcuNDMuMCAqLworICAgICAgICBpZihjb25maWctPnByb3h5X3NlcnZpY2VfbmFtZSkKKyAgICAgICAgICBteV9zZXRvcHRfc3RyKGN1cmwsIENVUkxPUFRfUFJPWFlfU0VSVklDRV9OQU1FLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLT5wcm94eV9zZXJ2aWNlX25hbWUpOwogCi0gICAgICAgICAgLyogbmV3IGluIGN1cmwgNy4xOS40ICovCi0gICAgICAgICAgaWYoY29uZmlnLT5zb2NrczVfZ3NzYXBpX25lYykKLSAgICAgICAgICAgIG15X3NldG9wdF9zdHIoY3VybCwgQ1VSTE9QVF9TT0NLUzVfR1NTQVBJX05FQywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLT5zb2NrczVfZ3NzYXBpX25lYyk7CisgICAgICAgIC8qIG5ldyBpbiBjdXJsIDcuNDMuMCAqLworICAgICAgICBpZihjb25maWctPnNlcnZpY2VfbmFtZSkKKyAgICAgICAgICBteV9zZXRvcHRfc3RyKGN1cmwsIENVUkxPUFRfU0VSVklDRV9OQU1FLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLT5zZXJ2aWNlX25hbWUpOwogCi0gICAgICAgICAgLyogbmV3IGluIGN1cmwgNy40My4wICovCi0gICAgICAgICAgaWYoY29uZmlnLT5wcm94eV9zZXJ2aWNlX25hbWUpCi0gICAgICAgICAgICBteV9zZXRvcHRfc3RyKGN1cmwsIENVUkxPUFRfUFJPWFlfU0VSVklDRV9OQU1FLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWctPnByb3h5X3NlcnZpY2VfbmFtZSk7Ci0KLSAgICAgICAgICAvKiBuZXcgaW4gY3VybCA3LjQzLjAgKi8KLSAgICAgICAgICBpZihjb25maWctPnNlcnZpY2VfbmFtZSkKLSAgICAgICAgICAgIG15X3NldG9wdF9zdHIoY3VybCwgQ1VSTE9QVF9TRVJWSUNFX05BTUUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy0+c2VydmljZV9uYW1lKTsKLQotICAgICAgICB9Ci0jZW5kaWYKICAgICAgICAgLyogY3VybCA3LjEzLjAgKi8KICAgICAgICAgbXlfc2V0b3B0X3N0cihjdXJsLCBDVVJMT1BUX0ZUUF9BQ0NPVU5ULCBjb25maWctPmZ0cF9hY2NvdW50KTsKIApAQCAtMTI2NywxMCArMTI2OCw2IEBACiAgICAgICAgIGlmKCFjb25maWctPm5va2VlcGFsaXZlKSB7CiAgICAgICAgICAgbXlfc2V0b3B0KGN1cmwsIENVUkxPUFRfVENQX0tFRVBBTElWRSwgMUwpOwogICAgICAgICAgIGlmKGNvbmZpZy0+YWxpdmV0aW1lICE9IDApIHsKLSNpZiAhZGVmaW5lZChUQ1BfS0VFUElETEUpIHx8ICFkZWZpbmVkKFRDUF9LRUVQSU5UVkwpCi0gICAgICAgICAgICB3YXJuZihjb25maWctPmdsb2JhbCwgIktlZXAtYWxpdmUgZnVuY3Rpb25hbGl0eSBzb21ld2hhdCBjcmlwcGxlZCAiCi0gICAgICAgICAgICAgICAgImR1ZSB0byBtaXNzaW5nIHN1cHBvcnQgaW4geW91ciBvcGVyYXRpbmcgc3lzdGVtIVxuIik7Ci0jZW5kaWYKICAgICAgICAgICAgIG15X3NldG9wdChjdXJsLCBDVVJMT1BUX1RDUF9LRUVQSURMRSwgY29uZmlnLT5hbGl2ZXRpbWUpOwogICAgICAgICAgICAgbXlfc2V0b3B0KGN1cmwsIENVUkxPUFRfVENQX0tFRVBJTlRWTCwgY29uZmlnLT5hbGl2ZXRpbWUpOwogICAgICAgICAgIH0KQEAgLTEyOTgsOSArMTI5NSw3IEBACiAgICAgICAgICAgbXlfc2V0b3B0X2ZsYWdzKGN1cmwsIENVUkxPUFRfUkVESVJfUFJPVE9DT0xTLCBjb25maWctPnByb3RvX3JlZGlyKTsKIAogICAgICAgICBpZihjb25maWctPmNvbnRlbnRfZGlzcG9zaXRpb24KLSAgICAgICAgICAgJiYgKHVybG5vZGUtPmZsYWdzICYgR0VUT1VUX1VTRVJFTU9URSkKLSAgICAgICAgICAgJiYgKGNoZWNrcHJlZml4KCJodHRwOi8vIiwgdGhpc191cmwpIHx8Ci0gICAgICAgICAgICAgICBjaGVja3ByZWZpeCgiaHR0cHM6Ly8iLCB0aGlzX3VybCkpKQorICAgICAgICAgICAmJiAodXJsbm9kZS0+ZmxhZ3MgJiBHRVRPVVRfVVNFUkVNT1RFKSkKICAgICAgICAgICBoZHJjYmRhdGEuaG9ub3JfY2RfZmlsZW5hbWUgPSBUUlVFOwogICAgICAgICBlbHNlCiAgICAgICAgICAgaGRyY2JkYXRhLmhvbm9yX2NkX2ZpbGVuYW1lID0gRkFMU0U7CkBAIC0xMzE1LDYgKzEzMTAsMTAgQEAKICAgICAgICAgICAvKiBuZXcgaW4gNy4yMS4zICovCiAgICAgICAgICAgbXlfc2V0b3B0X3NsaXN0KGN1cmwsIENVUkxPUFRfUkVTT0xWRSwgY29uZmlnLT5yZXNvbHZlKTsKIAorICAgICAgICBpZihjb25maWctPmNvbm5lY3RfdG8pCisgICAgICAgICAgLyogbmV3IGluIDcuNDkuMCAqLworICAgICAgICAgIG15X3NldG9wdF9zbGlzdChjdXJsLCBDVVJMT1BUX0NPTk5FQ1RfVE8sIGNvbmZpZy0+Y29ubmVjdF90byk7CisKICAgICAgICAgLyogbmV3IGluIDcuMjEuNCAqLwogICAgICAgICBpZihjdXJsaW5mby0+ZmVhdHVyZXMgJiBDVVJMX1ZFUlNJT05fVExTQVVUSF9TUlApIHsKICAgICAgICAgICBpZihjb25maWctPnRsc191c2VybmFtZSkKQEAgLTEzMzMsOSArMTMzMiwxMyBAQAogICAgICAgICAgIG15X3NldG9wdF9zdHIoY3VybCwgQ1VSTE9QVF9HU1NBUElfREVMRUdBVElPTiwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy0+Z3NzYXBpX2RlbGVnYXRpb24pOwogCi0gICAgICAgIC8qIG5ldyBpbiA3LjI1LjAgKi8KLSAgICAgICAgaWYoY29uZmlnLT5zc2xfYWxsb3dfYmVhc3QpCi0gICAgICAgICAgbXlfc2V0b3B0KGN1cmwsIENVUkxPUFRfU1NMX09QVElPTlMsIChsb25nKUNVUkxTU0xPUFRfQUxMT1dfQkVBU1QpOworICAgICAgICAvKiBuZXcgaW4gNy4yNS4wIGFuZCA3LjQ0LjAgKi8KKyAgICAgICAgeworICAgICAgICAgIGxvbmcgbWFzayA9IChjb25maWctPnNzbF9hbGxvd19iZWFzdCA/IENVUkxTU0xPUFRfQUxMT1dfQkVBU1QgOiAwKSB8CisgICAgICAgICAgICAgICAgICAgICAgKGNvbmZpZy0+c3NsX25vX3Jldm9rZSA/IENVUkxTU0xPUFRfTk9fUkVWT0tFIDogMCk7CisgICAgICAgICAgaWYobWFzaykKKyAgICAgICAgICAgIG15X3NldG9wdF9iaXRtYXNrKGN1cmwsIENVUkxPUFRfU1NMX09QVElPTlMsIG1hc2spOworICAgICAgICB9CiAKICAgICAgICAgaWYoY29uZmlnLT5tYWlsX2F1dGgpCiAgICAgICAgICAgbXlfc2V0b3B0X3N0cihjdXJsLCBDVVJMT1BUX01BSUxfQVVUSCwgY29uZmlnLT5tYWlsX2F1dGgpOwpAQCAtMTM1Nyw2ICsxMzYwLDE5IEBACiAgICAgICAgICAgbXlfc2V0b3B0X3N0cihjdXJsLCBDVVJMT1BUX1VOSVhfU09DS0VUX1BBVEgsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWctPnVuaXhfc29ja2V0X3BhdGgpOwogCisgICAgICAgIC8qIG5ldyBpbiA3LjQ1LjAgKi8KKyAgICAgICAgaWYoY29uZmlnLT5wcm90b19kZWZhdWx0KQorICAgICAgICAgIG15X3NldG9wdF9zdHIoY3VybCwgQ1VSTE9QVF9ERUZBVUxUX1BST1RPQ09MLCBjb25maWctPnByb3RvX2RlZmF1bHQpOworCisgICAgICAgIC8qIG5ldyBpbiA3LjQ3LjAgKi8KKyAgICAgICAgaWYoY29uZmlnLT5leHBlY3QxMDB0aW1lb3V0ID4gMCkKKyAgICAgICAgICBteV9zZXRvcHRfc3RyKGN1cmwsIENVUkxPUFRfRVhQRUNUXzEwMF9USU1FT1VUX01TLAorICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpKGNvbmZpZy0+ZXhwZWN0MTAwdGltZW91dCoxMDAwKSk7CisKKyAgICAgICAgLyogbmV3IGluIDcuNDguMCAqLworICAgICAgICBpZihjb25maWctPnRmdHBfbm9fb3B0aW9ucykKKyAgICAgICAgICBteV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9URlRQX05PX09QVElPTlMsIDFMKTsKKwogICAgICAgICAvKiBpbml0aWFsaXplIHJldHJ5IHZhcnMgZm9yIGxvb3AgYmVsb3cgKi8KICAgICAgICAgcmV0cnlfc2xlZXBfZGVmYXVsdCA9IChjb25maWctPnJldHJ5X2RlbGF5KSA/CiAgICAgICAgICAgY29uZmlnLT5yZXRyeV9kZWxheSoxMDAwTCA6IFJFVFJZX1NMRUVQX0RFRkFVTFQ7IC8qIG1zICovCkBAIC0xMzY2LDkgKzEzODIsMTAgQEAKICAgICAgICAgcmV0cnlzdGFydCA9IHR2bm93KCk7CiAKICNpZm5kZWYgQ1VSTF9ESVNBQkxFX0xJQkNVUkxfT1BUSU9OCi0gICAgICAgIHJlc3VsdCA9IGVhc3lzcmNfcGVyZm9ybSgpOwotICAgICAgICBpZihyZXN1bHQpIHsKLSAgICAgICAgICBnb3RvIHNob3dfZXJyb3I7CisgICAgICAgIGlmKGdsb2JhbC0+bGliY3VybCkgeworICAgICAgICAgIHJlc3VsdCA9IGVhc3lzcmNfcGVyZm9ybSgpOworICAgICAgICAgIGlmKHJlc3VsdCkKKyAgICAgICAgICAgIGdvdG8gc2hvd19lcnJvcjsKICAgICAgICAgfQogI2VuZGlmCiAKQEAgLTE1MDcsNyArMTUyNCw3IEBACiAgICAgICAgICAgICAgICAgZmZsdXNoKG91dHMuc3RyZWFtKTsKICAgICAgICAgICAgICAgICAvKiB0cnVuY2F0ZSBmaWxlIGF0IHRoZSBwb3NpdGlvbiB3aGVyZSB3ZSBzdGFydGVkIGFwcGVuZGluZyAqLwogI2lmZGVmIEhBVkVfRlRSVU5DQVRFCi0gICAgICAgICAgICAgICAgaWYoZnRydW5jYXRlKCBmaWxlbm8ob3V0cy5zdHJlYW0pLCBvdXRzLmluaXQpKSB7CisgICAgICAgICAgICAgICAgaWYoZnRydW5jYXRlKGZpbGVubyhvdXRzLnN0cmVhbSksIG91dHMuaW5pdCkpIHsKICAgICAgICAgICAgICAgICAgIC8qIHdoZW4gdHJ1bmNhdGUgZmFpbHMsIHdlIGNhbid0IGp1c3QgYXBwZW5kIGFzIHRoZW4gd2UnbGwKICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZSBzb21ldGhpbmcgc3RyYW5nZSwgYmFpbCBvdXQgKi8KICAgICAgICAgICAgICAgICAgIGlmKCFnbG9iYWwtPm11dGUpCkBAIC0xODI0LDcgKzE4NDEsOSBAQAogI2VuZGlmCiAKICAgLyogUGFyc2UgLmN1cmxyYyBpZiBuZWNlc3NhcnkgKi8KLSAgaWYoKGFyZ2MgPT0gMSkgfHwgKCFjdXJseF9zdHJlcXVhbChhcmd2WzFdLCAiLXEiKSkpIHsKKyAgaWYoKGFyZ2MgPT0gMSkgfHwKKyAgICAgKCFjdXJseF9zdHJlcXVhbChhcmd2WzFdLCAiLXEiKSB8fAorICAgICAgIWN1cmx4X3N0cmVxdWFsKGFyZ3ZbMV0sICItLWRpc2FibGUiKSkpIHsKICAgICBwYXJzZWNvbmZpZyhOVUxMLCBjb25maWcpOyAvKiBpZ25vcmUgcG9zc2libGUgZmFpbHVyZSAqLwogCiAgICAgLyogSWYgd2UgaGFkIG5vIGFyZ3VtZW50cyB0aGVuIG1ha2Ugc3VyZSBhIHVybCB3YXMgc3BlY2lmaWVkIGluIC5jdXJscmMgKi8KQEAgLTE4NTIsMTMgKzE4NzEsMTcgQEAKICAgICAgIC8qIENoZWNrIGlmIHdlIHdlcmUgYXNrZWQgdG8gbGlzdCB0aGUgU1NMIGVuZ2luZXMgKi8KICAgICAgIGVsc2UgaWYocmVzID09IFBBUkFNX0VOR0lORVNfUkVRVUVTVEVEKQogICAgICAgICB0b29sX2xpc3RfZW5naW5lcyhjb25maWctPmVhc3kpOworICAgICAgZWxzZSBpZihyZXMgPT0gUEFSQU1fTElCQ1VSTF9VTlNVUFBPUlRFRF9QUk9UT0NPTCkKKyAgICAgICAgcmVzdWx0ID0gQ1VSTEVfVU5TVVBQT1JURURfUFJPVE9DT0w7CiAgICAgICBlbHNlCiAgICAgICAgIHJlc3VsdCA9IENVUkxFX0ZBSUxFRF9JTklUOwogICAgIH0KICAgICBlbHNlIHsKICNpZm5kZWYgQ1VSTF9ESVNBQkxFX0xJQkNVUkxfT1BUSU9OCi0gICAgICAvKiBJbml0aWFsaXNlIHRoZSBsaWJjdXJsIHNvdXJjZSBvdXRwdXQgKi8KLSAgICAgIHJlc3VsdCA9IGVhc3lzcmNfaW5pdCgpOworICAgICAgaWYoY29uZmlnLT5saWJjdXJsKSB7CisgICAgICAgIC8qIEluaXRpYWxpc2UgdGhlIGxpYmN1cmwgc291cmNlIG91dHB1dCAqLworICAgICAgICByZXN1bHQgPSBlYXN5c3JjX2luaXQoKTsKKyAgICAgIH0KICNlbmRpZgogCiAgICAgICAvKiBQZXJmb3JtIHRoZSBtYWluIG9wZXJhdGlvbnMgKi8KQEAgLTE4ODQsMTEgKzE5MDcsMTMgQEAKICAgICAgICAgfQogCiAjaWZuZGVmIENVUkxfRElTQUJMRV9MSUJDVVJMX09QVElPTgotICAgICAgICAvKiBDbGVhbnVwIHRoZSBsaWJjdXJsIHNvdXJjZSBvdXRwdXQgKi8KLSAgICAgICAgZWFzeXNyY19jbGVhbnVwKCk7CisgICAgICAgIGlmKGNvbmZpZy0+bGliY3VybCkgeworICAgICAgICAgIC8qIENsZWFudXAgdGhlIGxpYmN1cmwgc291cmNlIG91dHB1dCAqLworICAgICAgICAgIGVhc3lzcmNfY2xlYW51cCgpOwogCi0gICAgICAgIC8qIER1bXAgdGhlIGxpYmN1cmwgY29kZSBpZiBwcmV2aW91c2x5IGVuYWJsZWQgKi8KLSAgICAgICAgZHVtcGVhc3lzcmMoY29uZmlnKTsKKyAgICAgICAgICAvKiBEdW1wIHRoZSBsaWJjdXJsIGNvZGUgaWYgcHJldmlvdXNseSBlbmFibGVkICovCisgICAgICAgICAgZHVtcGVhc3lzcmMoY29uZmlnKTsKKyAgICAgICAgfQogI2VuZGlmCiAgICAgICB9CiAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9zcmMvdG9vbF9vcGVyYXRlLmggYi9zcmMvdG9vbF9vcGVyYXRlLmgKaW5kZXggMWQ1YzFhOS4uYzU0ZmUzZiAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xfb3BlcmF0ZS5oCisrKyBiL3NyYy90b29sX29wZXJhdGUuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3NyYy90b29sX29wZXJobHAuYyBiL3NyYy90b29sX29wZXJobHAuYwppbmRleCBhYmY5NDk2Li5iNDNkYzk1IDEwMDY0NAotLS0gYS9zcmMvdG9vbF9vcGVyaGxwLmMKKysrIGIvc3JjL3Rvb2xfb3BlcmhscC5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgInRvb2xfY2ZnYWJsZS5oIgogI2luY2x1ZGUgInRvb2xfY29udmVydC5oIgorI2luY2x1ZGUgInRvb2xfZG9zd2luLmgiCiAjaW5jbHVkZSAidG9vbF9vcGVyaGxwLmgiCiAjaW5jbHVkZSAidG9vbF9tZXRhbGluay5oIgogCkBAIC0xMjgsNyArMTI5LDcgQEAKICAqLwogQ1VSTGNvZGUgZ2V0X3VybF9maWxlX25hbWUoY2hhciAqKmZpbGVuYW1lLCBjb25zdCBjaGFyICp1cmwpCiB7Ci0gIGNvbnN0IGNoYXIgKnBjOworICBjb25zdCBjaGFyICpwYywgKnBjMjsKIAogICAqZmlsZW5hbWUgPSBOVUxMOwogCkBAIC0xMzgsNyArMTM5LDExIEBACiAgICAgcGMgKz0gMzsKICAgZWxzZQogICAgIHBjID0gdXJsOworCisgIHBjMiA9IHN0cnJjaHIocGMsICdcXCcpOwogICBwYyA9IHN0cnJjaHIocGMsICcvJyk7CisgIGlmKHBjMiAmJiAoIXBjIHx8IHBjIDwgcGMyKSkKKyAgICBwYyA9IHBjMjsKIAogICBpZihwYykKICAgICAvKiBkdXBsaWNhdGUgdGhlIHN0cmluZyBiZXlvbmQgdGhlIHNsYXNoICovCkBAIC0xNTEsNiArMTU2LDE3IEBACiAgIGlmKCEqZmlsZW5hbWUpCiAgICAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CiAKKyNpZiBkZWZpbmVkKE1TRE9TKSB8fCBkZWZpbmVkKFdJTjMyKQorICB7CisgICAgY2hhciAqc2FuaXRpemVkOworICAgIFNBTklUSVpFY29kZSBzYyA9IHNhbml0aXplX2ZpbGVfbmFtZSgmc2FuaXRpemVkLCAqZmlsZW5hbWUsIDApOworICAgIEN1cmxfc2FmZWZyZWUoKmZpbGVuYW1lKTsKKyAgICBpZihzYykKKyAgICAgIHJldHVybiBDVVJMRV9VUkxfTUFMRk9STUFUOworICAgICpmaWxlbmFtZSA9IHNhbml0aXplZDsKKyAgfQorI2VuZGlmIC8qIE1TRE9TIHx8IFdJTjMyICovCisKICAgLyogaW4gY2FzZSB3ZSBidWlsdCBkZWJ1ZyBlbmFibGVkLCB3ZSBhbGxvdyBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZQogICAgKiBuYW1lZCBDVVJMX1RFU1RESVIgdG8gcHJlZml4IHRoZSBnaXZlbiBmaWxlIG5hbWUgdG8gcHV0IGl0IGludG8gYQogICAgKiBzcGVjaWZpYyBkaXJlY3RvcnkKZGlmZiAtLWdpdCBhL3NyYy90b29sX29wZXJobHAuaCBiL3NyYy90b29sX29wZXJobHAuaAppbmRleCA4ZmNhYWQ2Li40NDZjNTYwIDEwMDY0NAotLS0gYS9zcmMvdG9vbF9vcGVyaGxwLmgKKysrIGIvc3JjL3Rvb2xfb3BlcmhscC5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xfcGFueWtleS5jIGIvc3JjL3Rvb2xfcGFueWtleS5jCmluZGV4IGQ4NzE4ZTMuLjE0ZTFlMDUgMTAwNjQ0Ci0tLSBhL3NyYy90b29sX3BhbnlrZXkuYworKysgYi9zcmMvdG9vbF9wYW55a2V5LmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xfcGFueWtleS5oIGIvc3JjL3Rvb2xfcGFueWtleS5oCmluZGV4IDUwYjE1ZDIuLjlkNjQ0MTggMTAwNjQ0Ci0tLSBhL3NyYy90b29sX3BhbnlrZXkuaAorKysgYi9zcmMvdG9vbF9wYW55a2V5LmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9zcmMvdG9vbF9wYXJhbWhscC5jIGIvc3JjL3Rvb2xfcGFyYW1obHAuYwppbmRleCBkNGI5NmU3Li5mMmU2OGRhIDEwMDY0NAotLS0gYS9zcmMvdG9vbF9wYXJhbWhscC5jCisrKyBiL3NyYy90b29sX3BhcmFtaGxwLmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzM5LDYgKzMzOSwyNyBAQAogfQogCiAvKioKKyAqIENoZWNrIGlmIHRoZSBnaXZlbiBzdHJpbmcgaXMgYSBwcm90b2NvbCBzdXBwb3J0ZWQgYnkgbGliY3VybAorICoKKyAqIEBwYXJhbSBzdHIgIHRoZSBwcm90b2NvbCBuYW1lCisgKiBAcmV0dXJuIFBBUkFNX09LICBwcm90b2NvbCBzdXBwb3J0ZWQKKyAqIEByZXR1cm4gUEFSQU1fTElCQ1VSTF9VTlNVUFBPUlRFRF9QUk9UT0NPTCAgcHJvdG9jb2wgbm90IHN1cHBvcnRlZAorICogQHJldHVybiBQQVJBTV9SRVFVSVJFU19QQVJBTUVURVIgICBtaXNzaW5nIHBhcmFtZXRlcgorICovCitpbnQgY2hlY2tfcHJvdG9jb2woY29uc3QgY2hhciAqc3RyKQoreworICBjb25zdCBjaGFyICogY29uc3QgKnBwOworICBjb25zdCBjdXJsX3ZlcnNpb25faW5mb19kYXRhICpjdXJsaW5mbyA9IGN1cmxfdmVyc2lvbl9pbmZvKENVUkxWRVJTSU9OX05PVyk7CisgIGlmKCFzdHIpCisgICAgcmV0dXJuIFBBUkFNX1JFUVVJUkVTX1BBUkFNRVRFUjsKKyAgZm9yKHBwID0gY3VybGluZm8tPnByb3RvY29sczsgKnBwOyBwcCsrKSB7CisgICAgaWYoY3VybHhfcmF3X2VxdWFsKCpwcCwgc3RyKSkKKyAgICAgIHJldHVybiBQQVJBTV9PSzsKKyAgfQorICByZXR1cm4gUEFSQU1fTElCQ1VSTF9VTlNVUFBPUlRFRF9QUk9UT0NPTDsKK30KKworLyoqCiAgKiBQYXJzZXMgdGhlIGdpdmVuIHN0cmluZyBsb29raW5nIGZvciBhbiBvZmZzZXQgKHdoaWNoIG1heSBiZSBhCiAgKiBsYXJnZXItdGhhbi1pbnRlZ2VyIHZhbHVlKS4gVGhlIG9mZnNldCBDQU5OT1QgYmUgbmVnYXRpdmUhCiAgKgpAQCAtNDA1LDcgKzQyNiw3IEBACiAgICAgICBjdXJseF9tc25wcmludGYocHJvbXB0LCBzaXplb2YocHJvbXB0KSwKICAgICAgICAgICAgICAgICAgICAgICAiRW50ZXIgJXMgcGFzc3dvcmQgZm9yIHVzZXIgJyVzJyBvbiBVUkwgIyUiCiAgICAgICAgICAgICAgICAgICAgICAgQ1VSTF9GT1JNQVRfQ1VSTF9PRkZfVFUgIjoiLAotICAgICAgICAgICAgICAgICAgICAgIGtpbmQsICp1c2VycHdkLCBpICsgMSk7CisgICAgICAgICAgICAgICAgICAgICAga2luZCwgKnVzZXJwd2QsIChjdXJsX29mZl90KSAoaSArIDEpKTsKIAogICAgIC8qIGdldCBwYXNzd29yZCAqLwogICAgIGdldHBhc3Nfcihwcm9tcHQsIHBhc3N3ZCwgc2l6ZW9mKHBhc3N3ZCkpOwpAQCAtNDk4LDcgKzUxOSw3IEBACiAgIGJvb2wgbGFzdCA9IChjb25maWctPm5leHQgPyBGQUxTRSA6IFRSVUUpOwogCiAgIC8qIENoZWNrIHdlIGhhdmUgYSBwYXNzd29yZCBmb3IgdGhlIGdpdmVuIGhvc3QgdXNlciAqLwotICBpZihjb25maWctPnVzZXJwd2QgJiYgIWNvbmZpZy0+eG9hdXRoMl9iZWFyZXIpIHsKKyAgaWYoY29uZmlnLT51c2VycHdkICYmICFjb25maWctPm9hdXRoX2JlYXJlcikgewogICAgIHJlc3VsdCA9IGNoZWNrcGFzc3dkKCJob3N0IiwgaSwgbGFzdCwgJmNvbmZpZy0+dXNlcnB3ZCk7CiAgICAgaWYocmVzdWx0KQogICAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL3NyYy90b29sX3BhcmFtaGxwLmggYi9zcmMvdG9vbF9wYXJhbWhscC5oCmluZGV4IDY5ZDdmZDQuLjg5YTk5YjIgMTAwNjQ0Ci0tLSBhL3NyYy90b29sX3BhcmFtaGxwLmgKKysrIGIvc3JjL3Rvb2xfcGFyYW1obHAuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTM4LDYgKzM4LDggQEAKIAogbG9uZyBwcm90bzJudW0oc3RydWN0IE9wZXJhdGlvbkNvbmZpZyAqY29uZmlnLCBsb25nICp2YWwsIGNvbnN0IGNoYXIgKnN0cik7CiAKK2ludCBjaGVja19wcm90b2NvbChjb25zdCBjaGFyICpzdHIpOworCiBQYXJhbWV0ZXJFcnJvciBzdHIyb2Zmc2V0KGN1cmxfb2ZmX3QgKnZhbCwgY29uc3QgY2hhciAqc3RyKTsKIAogQ1VSTGNvZGUgZ2V0X2FyZ3Moc3RydWN0IE9wZXJhdGlvbkNvbmZpZyAqY29uZmlnLCBjb25zdCBzaXplX3QgaSk7CkBAIC01MSw0ICs1MywzIEBACiBsb25nIGRlbGVnYXRpb24oc3RydWN0IE9wZXJhdGlvbkNvbmZpZyAqY29uZmlnLCBjaGFyICpzdHIpOwogCiAjZW5kaWYgLyogSEVBREVSX0NVUkxfVE9PTF9QQVJBTUhMUF9IICovCi0KZGlmZiAtLWdpdCBhL3NyYy90b29sX3BhcnNlY2ZnLmMgYi9zcmMvdG9vbF9wYXJzZWNmZy5jCmluZGV4IDM5YjQzZWUuLmQ5NDU0YzIgMTAwNjQ0Ci0tLSBhL3NyYy90b29sX3BhcnNlY2ZnLmMKKysrIGIvc3JjL3Rvb2xfcGFyc2VjZmcuYwpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9zcmMvdG9vbF9wYXJzZWNmZy5oIGIvc3JjL3Rvb2xfcGFyc2VjZmcuaAppbmRleCBjM2IxOWQ1Li5iNjc2ZWMzIDEwMDY0NAotLS0gYS9zcmMvdG9vbF9wYXJzZWNmZy5oCisrKyBiL3NyYy90b29sX3BhcnNlY2ZnLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9zcmMvdG9vbF9zZGVjbHMuaCBiL3NyYy90b29sX3NkZWNscy5oCmluZGV4IGU3NDAyMGYuLmE1NjM5MGUgMTAwNjQ0Ci0tLSBhL3NyYy90b29sX3NkZWNscy5oCisrKyBiL3NyYy90b29sX3NkZWNscy5oCkBAIC03LDExICs3LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTM1LDEwICsxMzUsOCBAQAogICBIVFRQUkVRX1VOU1BFQywgIC8qIGZpcnN0IGluIGxpc3QgKi8KICAgSFRUUFJFUV9HRVQsCiAgIEhUVFBSRVFfSEVBRCwKLSAgSFRUUFJFUV9QT1NULAotICBIVFRQUkVRX1NJTVBMRVBPU1QsCi0gIEhUVFBSRVFfQ1VTVE9NLAotICBIVFRQUkVRX0xBU1QgICAgIC8qIGxhc3QgaW4gbGlzdCAqLworICBIVFRQUkVRX0ZPUk1QT1NULAorICBIVFRQUkVRX1NJTVBMRVBPU1QKIH0gSHR0cFJlcTsKIAogCmRpZmYgLS1naXQgYS9zcmMvdG9vbF9zZXRvcHQuYyBiL3NyYy90b29sX3NldG9wdC5jCmluZGV4IGE1M2ZkYzguLjY5MGNlMTQgMTAwNjQ0Ci0tLSBhL3NyYy90b29sX3NldG9wdC5jCisrKyBiL3NyYy90b29sX3NldG9wdC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNzAsNiArNzAsOCBAQAogICBOVihDVVJMX0hUVFBfVkVSU0lPTl9OT05FKSwKICAgTlYoQ1VSTF9IVFRQX1ZFUlNJT05fMV8wKSwKICAgTlYoQ1VSTF9IVFRQX1ZFUlNJT05fMV8xKSwKKyAgTlYoQ1VSTF9IVFRQX1ZFUlNJT05fMl8wKSwKKyAgTlYoQ1VSTF9IVFRQX1ZFUlNJT05fMlRMUyksCiAgIE5WRU5ELAogfTsKIApAQCAtMTA3LDYgKzEwOSwxMiBAQAogICBOVkVORCwKIH07CiAKK2NvbnN0IE5hbWVWYWx1ZVVuc2lnbmVkIHNldG9wdF9udl9DVVJMU1NMT1BUW10gPSB7CisgIE5WKENVUkxTU0xPUFRfQUxMT1dfQkVBU1QpLAorICBOVihDVVJMU1NMT1BUX05PX1JFVk9LRSksCisgIE5WRU5ELAorfTsKKwogY29uc3QgTmFtZVZhbHVlIHNldG9wdF9udl9DVVJMX05FVFJDW10gPSB7CiAgIE5WKENVUkxfTkVUUkNfSUdOT1JFRCksCiAgIE5WKENVUkxfTkVUUkNfT1BUSU9OQUwpLApAQCAtMjIxLDcgKzIyOSw3IEBACiAgICAgICBlICs9IDI7CiAgICAgfQogICAgIGVsc2UgaWYoISBpc3ByaW50KGMpKSB7Ci0gICAgICBzbnByaW50ZihlLCA0LCAiXFwlMDNvIiwgYyk7CisgICAgICBzbnByaW50ZihlLCA1LCAiXFwlMDNvIiwgKHVuc2lnbmVkKWMpOwogICAgICAgZSArPSA0OwogICAgIH0KICAgICBlbHNlCkBAIC0zODYsMTEgKzM5NCwxMSBAQAogICAgICAgICAgIHJldCA9IENVUkxFX09VVF9PRl9NRU1PUlk7CiAgICAgICAgICAgZ290byBub21lbTsKICAgICAgICAgfQotICAgICAgICBpZihwcC0+ZmxhZ3MgJiBIVFRQUE9TVF9GSUxFTkFNRSkgeworICAgICAgICBpZihwcC0+ZmxhZ3MgJiBDVVJMX0hUVFBQT1NUX0ZJTEVOQU1FKSB7CiAgICAgICAgICAgLyogZmlsZSB1cGxvYWQgYXMgZm9yIC1GIEBmaWxlbmFtZSAqLwogICAgICAgICAgIERBVEExKCIgICAgICAgICAgICAgQ1VSTEZPUk1fRklMRSwgXCIlc1wiLCIsIGVzY2FwZWQpOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYocHAtPmZsYWdzICYgSFRUUFBPU1RfUkVBREZJTEUpIHsKKyAgICAgICAgZWxzZSBpZihwcC0+ZmxhZ3MgJiBDVVJMX0hUVFBQT1NUX1JFQURGSUxFKSB7CiAgICAgICAgICAgLyogY29udGVudCBmcm9tIGZpbGUgYXMgZm9yIC1GIDxmaWxlbmFtZSAqLwogICAgICAgICAgIERBVEExKCIgICAgICAgICAgICAgQ1VSTEZPUk1fRklMRUNPTlRFTlQsIFwiJXNcIiwiLCBlc2NhcGVkKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xfc2V0b3B0LmggYi9zcmMvdG9vbF9zZXRvcHQuaAppbmRleCBmY2JhOTRjLi43Y2QzODc1IDEwMDY0NAotLS0gYS9zcmMvdG9vbF9zZXRvcHQuaAorKysgYi9zcmMvdG9vbF9zZXRvcHQuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTUyLDYgKzUyLDcgQEAKIGV4dGVybiBjb25zdCBOYW1lVmFsdWUgc2V0b3B0X252X0NVUkxfVElNRUNPTkRbXTsKIGV4dGVybiBjb25zdCBOYW1lVmFsdWUgc2V0b3B0X252X0NVUkxGVFBTU0xfQ0NDW107CiBleHRlcm4gY29uc3QgTmFtZVZhbHVlIHNldG9wdF9udl9DVVJMVVNFU1NMW107CitleHRlcm4gY29uc3QgTmFtZVZhbHVlVW5zaWduZWQgc2V0b3B0X252X0NVUkxTU0xPUFRbXTsKIGV4dGVybiBjb25zdCBOYW1lVmFsdWUgc2V0b3B0X252X0NVUkxfTkVUUkNbXTsKIGV4dGVybiBjb25zdCBOYW1lVmFsdWUgc2V0b3B0X252X0NVUkxQUk9UT1tdOwogZXh0ZXJuIGNvbnN0IE5hbWVWYWx1ZVVuc2lnbmVkIHNldG9wdF9udl9DVVJMQVVUSFtdOwpAQCAtNjMsNiArNjQsNyBAQAogI2RlZmluZSBzZXRvcHRfbnZfQ1VSTE9QVF9USU1FQ09ORElUSU9OIHNldG9wdF9udl9DVVJMX1RJTUVDT05ECiAjZGVmaW5lIHNldG9wdF9udl9DVVJMT1BUX0ZUUF9TU0xfQ0NDIHNldG9wdF9udl9DVVJMRlRQU1NMX0NDQwogI2RlZmluZSBzZXRvcHRfbnZfQ1VSTE9QVF9VU0VfU1NMIHNldG9wdF9udl9DVVJMVVNFU1NMCisjZGVmaW5lIHNldG9wdF9udl9DVVJMT1BUX1NTTF9PUFRJT05TIHNldG9wdF9udl9DVVJMU1NMT1BUCiAjZGVmaW5lIHNldG9wdF9udl9DVVJMT1BUX05FVFJDIHNldG9wdF9udl9DVVJMX05FVFJDCiAjZGVmaW5lIHNldG9wdF9udl9DVVJMT1BUX1BST1RPQ09MUyBzZXRvcHRfbnZfQ1VSTFBST1RPCiAjZGVmaW5lIHNldG9wdF9udl9DVVJMT1BUX1JFRElSX1BST1RPQ09MUyBzZXRvcHRfbnZfQ1VSTFBST1RPCmRpZmYgLS1naXQgYS9zcmMvdG9vbF9zZXR1cC5oIGIvc3JjL3Rvb2xfc2V0dXAuaAppbmRleCAzZDdjMTU4Li45MGIwMWQ3IDEwMDY0NAotLS0gYS9zcmMvdG9vbF9zZXR1cC5oCisrKyBiL3NyYy90b29sX3NldHVwLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9zcmMvdG9vbF9zbGVlcC5jIGIvc3JjL3Rvb2xfc2xlZXAuYwppbmRleCBkMDIzYjMyLi5kODc4NTEyIDEwMDY0NAotLS0gYS9zcmMvdG9vbF9zbGVlcC5jCisrKyBiL3NyYy90b29sX3NsZWVwLmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xfc2xlZXAuaCBiL3NyYy90b29sX3NsZWVwLmgKaW5kZXggMTE1YTRlNC4uNmM1MWE5MyAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xfc2xlZXAuaAorKysgYi9zcmMvdG9vbF9zbGVlcC5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xfc3RyZHVwLmMgYi9zcmMvdG9vbF9zdHJkdXAuYwppbmRleCBhMGJiZTg4Li5jYjRhMWM1IDEwMDY0NAotLS0gYS9zcmMvdG9vbF9zdHJkdXAuYworKysgYi9zcmMvdG9vbF9zdHJkdXAuYwpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9zcmMvdG9vbF9zdHJkdXAuaCBiL3NyYy90b29sX3N0cmR1cC5oCmluZGV4IDgzYzgxMDIuLmY4NGIyMDIgMTAwNjQ0Ci0tLSBhL3NyYy90b29sX3N0cmR1cC5oCisrKyBiL3NyYy90b29sX3N0cmR1cC5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xfdXJsZ2xvYi5jIGIvc3JjL3Rvb2xfdXJsZ2xvYi5jCmluZGV4IDEzMzcyNTIuLjcwZDE3ZmUgMTAwNjQ0Ci0tLSBhL3NyYy90b29sX3VybGdsb2IuYworKysgYi9zcmMvdG9vbF91cmxnbG9iLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yNCw2ICsyNCw4IEBACiAjZGVmaW5lIEVOQUJMRV9DVVJMWF9QUklOVEYKIC8qIHVzZSBvdXIgb3duIHByaW50ZigpIGZ1bmN0aW9ucyAqLwogI2luY2x1ZGUgImN1cmx4LmgiCisjaW5jbHVkZSAidG9vbF9jZmdhYmxlLmgiCisjaW5jbHVkZSAidG9vbF9kb3N3aW4uaCIKICNpbmNsdWRlICJ0b29sX3VybGdsb2IuaCIKICNpbmNsdWRlICJ0b29sX3Ztcy5oIgogCkBAIC0yNzcsOCArMjc5LDcgQEAKIAogICAgICpwb3NwICs9IChwYXR0ZXJuIC0gKnBhdHRlcm5wKTsKIAotICAgIGlmKCFlbmRwIHx8IChtaW5fbiA+IG1heF9uKSB8fCAoc3RlcF9uID4gKG1heF9uIC0gbWluX24pKSB8fAotICAgICAgIChzdGVwX24gPD0gMCkgKQorICAgIGlmKCFlbmRwIHx8IChtaW5fbiA+IG1heF9uKSB8fCAoc3RlcF9uID4gKG1heF9uIC0gbWluX24pKSB8fCAhc3RlcF9uKQogICAgICAgLyogdGhlIHBhdHRlcm4gaXMgbm90IHdlbGwtZm9ybWVkICovCiAgICAgICByZXR1cm4gR0xPQkVSUk9SKCJiYWQgcmFuZ2UiLCAqcG9zcCwgQ1VSTEVfVVJMX01BTEZPUk1BVCk7CiAKQEAgLTY2Niw2ICs2NjcsMjAgQEAKICAgICBzdHJpbmdsZW4gKz0gYXBwZW5kbGVuOwogICB9CiAgIHRhcmdldFtzdHJpbmdsZW5dPSAnXDAnOworCisjaWYgZGVmaW5lZChNU0RPUykgfHwgZGVmaW5lZChXSU4zMikKKyAgeworICAgIGNoYXIgKnNhbml0aXplZDsKKyAgICBTQU5JVElaRWNvZGUgc2MgPSBzYW5pdGl6ZV9maWxlX25hbWUoJnNhbml0aXplZCwgdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU0FOSVRJWkVfQUxMT1dfUEFUSCB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTQU5JVElaRV9BTExPV19SRVNFUlZFRCkpOworICAgIEN1cmxfc2FmZWZyZWUodGFyZ2V0KTsKKyAgICBpZihzYykKKyAgICAgIHJldHVybiBDVVJMRV9VUkxfTUFMRk9STUFUOworICAgIHRhcmdldCA9IHNhbml0aXplZDsKKyAgfQorI2VuZGlmIC8qIE1TRE9TIHx8IFdJTjMyICovCisKICAgKnJlc3VsdCA9IHRhcmdldDsKICAgcmV0dXJuIENVUkxFX09LOwogfQpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xfdXJsZ2xvYi5oIGIvc3JjL3Rvb2xfdXJsZ2xvYi5oCmluZGV4IDYyYzFhYmQuLmMzYmU5NDggMTAwNjQ0Ci0tLSBhL3NyYy90b29sX3VybGdsb2IuaAorKysgYi9zcmMvdG9vbF91cmxnbG9iLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9zcmMvdG9vbF91dGlsLmMgYi9zcmMvdG9vbF91dGlsLmMKaW5kZXggNmMyNjQxNC4uOGFmMTVmZiAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xfdXRpbC5jCisrKyBiL3NyYy90b29sX3V0aWwuYwpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9zcmMvdG9vbF91dGlsLmggYi9zcmMvdG9vbF91dGlsLmgKaW5kZXggZDhiYjAzNi4uOGY3MmQ2MiAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xfdXRpbC5oCisrKyBiL3NyYy90b29sX3V0aWwuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3NyYy90b29sX3ZlcnNpb24uaCBiL3NyYy90b29sX3ZlcnNpb24uaAppbmRleCA1Njk1MjZiLi4wNGY0NTY3IDEwMDY0NAotLS0gYS9zcmMvdG9vbF92ZXJzaW9uLmgKKysrIGIvc3JjL3Rvb2xfdmVyc2lvbi5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xfdm1zLmMgYi9zcmMvdG9vbF92bXMuYwppbmRleCA0YTZhNmY1Li5jYzMwZmUwIDEwMDY0NAotLS0gYS9zcmMvdG9vbF92bXMuYworKysgYi9zcmMvdG9vbF92bXMuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTIsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTE2MCwyMCArMTYwLDIwIEBACiAgIGZvcihpID0gMDsgZGVjY19mZWF0X2FycmF5W2ldLm5hbWUgIT0gTlVMTDsgaSsrKSB7CiAKICAgICAvKiBHZXQgdGhlIGZlYXR1cmUgaW5kZXguICovCi0gICAgZmVhdF9pbmRleCA9IGRlY2MkZmVhdHVyZV9nZXRfaW5kZXgoIGRlY2NfZmVhdF9hcnJheVtpXS5uYW1lKTsKKyAgICBmZWF0X2luZGV4ID0gZGVjYyRmZWF0dXJlX2dldF9pbmRleChkZWNjX2ZlYXRfYXJyYXlbaV0ubmFtZSk7CiAKICAgICBpZihmZWF0X2luZGV4ID49IDApIHsKICAgICAgIC8qIFZhbGlkIGl0ZW0uICBDb2xsZWN0IGl0cyBwcm9wZXJ0aWVzLiAqLwotICAgICAgZmVhdF92YWx1ZSA9IGRlY2MkZmVhdHVyZV9nZXRfdmFsdWUoIGZlYXRfaW5kZXgsIDEpOwotICAgICAgZmVhdF92YWx1ZV9taW4gPSBkZWNjJGZlYXR1cmVfZ2V0X3ZhbHVlKCBmZWF0X2luZGV4LCAyKTsKLSAgICAgIGZlYXRfdmFsdWVfbWF4ID0gZGVjYyRmZWF0dXJlX2dldF92YWx1ZSggZmVhdF9pbmRleCwgMyk7CisgICAgICBmZWF0X3ZhbHVlID0gZGVjYyRmZWF0dXJlX2dldF92YWx1ZShmZWF0X2luZGV4LCAxKTsKKyAgICAgIGZlYXRfdmFsdWVfbWluID0gZGVjYyRmZWF0dXJlX2dldF92YWx1ZShmZWF0X2luZGV4LCAyKTsKKyAgICAgIGZlYXRfdmFsdWVfbWF4ID0gZGVjYyRmZWF0dXJlX2dldF92YWx1ZShmZWF0X2luZGV4LCAzKTsKIAogICAgICAgaWYoKGRlY2NfZmVhdF9hcnJheVtpXS52YWx1ZSA+PSBmZWF0X3ZhbHVlX21pbikgJiYKICAgICAgICAgIChkZWNjX2ZlYXRfYXJyYXlbaV0udmFsdWUgPD0gZmVhdF92YWx1ZV9tYXgpKSB7CiAgICAgICAgIC8qIFZhbGlkIHZhbHVlLiAgU2V0IGl0IGlmIG5lY2Vzc2FyeS4gKi8KICAgICAgICAgaWYoZmVhdF92YWx1ZSAhPSBkZWNjX2ZlYXRfYXJyYXlbaV0udmFsdWUpIHsKLSAgICAgICAgICBzdHMgPSBkZWNjJGZlYXR1cmVfc2V0X3ZhbHVlKCBmZWF0X2luZGV4LCAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2NfZmVhdF9hcnJheVtpXS52YWx1ZSk7CisgICAgICAgICAgc3RzID0gZGVjYyRmZWF0dXJlX3NldF92YWx1ZShmZWF0X2luZGV4LCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjY19mZWF0X2FycmF5W2ldLnZhbHVlKTsKICAgICAgICAgfQogICAgICAgfQogICAgICAgZWxzZSB7CmRpZmYgLS1naXQgYS9zcmMvdG9vbF92bXMuaCBiL3NyYy90b29sX3Ztcy5oCmluZGV4IDFhZmQ3NWUuLjY2NTZhNTkgMTAwNjQ0Ci0tLSBhL3NyYy90b29sX3Ztcy5oCisrKyBiL3NyYy90b29sX3Ztcy5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xfd3JpdGVlbnYuYyBiL3NyYy90b29sX3dyaXRlZW52LmMKaW5kZXggYjI4ZjM1YS4uYzFiZmNiZSAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xfd3JpdGVlbnYuYworKysgYi9zcmMvdG9vbF93cml0ZWVudi5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3NyYy90b29sX3dyaXRlZW52LmggYi9zcmMvdG9vbF93cml0ZWVudi5oCmluZGV4IGMwYTk1MmYuLjU1ZGFmNDggMTAwNjQ0Ci0tLSBhL3NyYy90b29sX3dyaXRlZW52LmgKKysrIGIvc3JjL3Rvb2xfd3JpdGVlbnYuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3NyYy90b29sX3dyaXRlb3V0LmMgYi9zcmMvdG9vbF93cml0ZW91dC5jCmluZGV4IDYzZGI5MGMuLjQxNGZjYmUgMTAwNjQ0Ci0tLSBhL3NyYy90b29sX3dyaXRlb3V0LmMKKysrIGIvc3JjL3Rvb2xfd3JpdGVvdXQuYwpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9zcmMvdG9vbF93cml0ZW91dC5oIGIvc3JjL3Rvb2xfd3JpdGVvdXQuaAppbmRleCA0ZGQzYTc1Li44ZDNmNjQ1IDEwMDY0NAotLS0gYS9zcmMvdG9vbF93cml0ZW91dC5oCisrKyBiL3NyYy90b29sX3dyaXRlb3V0LmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS9zcmMvdG9vbF94YXR0ci5jIGIvc3JjL3Rvb2xfeGF0dHIuYwppbmRleCBkYTBjYWQ2Li5mNDlmZDU3IDEwMDY0NAotLS0gYS9zcmMvdG9vbF94YXR0ci5jCisrKyBiL3NyYy90b29sX3hhdHRyLmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xfeGF0dHIuaCBiL3NyYy90b29sX3hhdHRyLmgKaW5kZXggM2Y4ZjU4NS4uNTZiZDllNCAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xfeGF0dHIuaAorKysgYi9zcmMvdG9vbF94YXR0ci5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvdGVzdHMvLmdpdGlnbm9yZSBiL3Rlc3RzLy5naXRpZ25vcmUKaW5kZXggZWY3Y2UxMS4uZGM0NWYwMyAxMDA2NDQKLS0tIGEvdGVzdHMvLmdpdGlnbm9yZQorKysgYi90ZXN0cy8uZ2l0aWdub3JlCkBAIC0xLDE3ICsxLDE3IEBACi1sb2cKKypwaWQKK2NvbmZpZ3VyZWhlbHAucG0KIGN1cmxfY2xpZW50X2tleQogY3VybF9jbGllbnRfa2V5LnB1YgogY3VybF9jbGllbnRfa25vd25ob3N0cwotY3VybF9ob3N0X2RzYV9rZXkKLWN1cmxfaG9zdF9kc2Ffa2V5LnB1YgorY3VybF9ob3N0X3JzYV9rZXkKK2N1cmxfaG9zdF9yc2Ffa2V5LnB1YgogY3VybF9zZnRwX2NtZHMKIGN1cmxfc2Z0cF9jb25maWcKIGN1cmxfc3NoX2NvbmZpZwogY3VybF9zc2hkX2NvbmZpZwotKnBpZAotc3R1bm5lbC5jb25mCitsb2cKIHJ1bnRlc3RzLmh0bWwKIHJ1bnRlc3RzLnBkZgorc3R1bm5lbC5jb25mCiB0ZXN0Y3VybC5odG1sCiB0ZXN0Y3VybC5wZGYKLWNvbmZpZ3VyZWhlbHAucG0KZGlmZiAtLWdpdCBhL3Rlc3RzL0ZJTEVGT1JNQVQgYi90ZXN0cy9GSUxFRk9STUFUCmluZGV4IGMyMzRjMjIuLmE4ZTc0YjMgMTAwNjQ0Ci0tLSBhL3Rlc3RzL0ZJTEVGT1JNQVQKKysrIGIvdGVzdHMvRklMRUZPUk1BVApAQCAtMTIyLDcgKzEyMiw3IEBACiAgLSBEZWxheSByZXNwb25kaW5nIHRvIHRoaXMgY29tbWFuZCBmb3IgdGhlIGdpdmVuIHRpbWUKIFJFVFJXRUlSRE8KICAtIEVuYWJsZSB0aGUgIndlaXJkbyIgUkVUUiBjYXNlIHdoZW4gbXVsdGlwbGUgcmVzcG9uc2UgbGluZXMgYXBwZWFyIGF0IG9uY2UKLSAgIHdoZW4gYSBmaWxlIGlzIHRyYW5zZmVyZWQKKyAgIHdoZW4gYSBmaWxlIGlzIHRyYW5zZmVycmVkCiBSRVRSTk9TSVpFCiAgLSBNYWtlIHN1cmUgdGhlIFJFVFIgcmVzcG9uc2UgZG9lc24ndCBjb250YWluIHRoZSBzaXplIG9mIHRoZSBmaWxlCiBOT1NBVkUKQEAgLTIxMSwyNiArMjExLDI4IEBACiBkZWJ1ZwogZ2V0cmxpbWl0CiBHbnVUTFMKK0dTUy1BUEkKK2h0dHAyCiBpZG4KIGlwdjYKK0tlcmJlcm9zCiBsYXJnZV9maWxlCiBsaWJ6CiBNZXRhbGluawogTlNTCiBOVExNCiBPcGVuU1NMCitQU0wKIHNvY2tzCitTUE5FR08KIFNTTAogU1NMcGlubmluZworU1NQSQogVExTLVNSUAogVHJhY2tNZW1vcnkKIHVuaXR0ZXN0Ci1odHRwMgotU1NQSQotR1NTLUFQSQotS2VyYmVyb3MKLVNQTkVHTwogdW5peC1zb2NrZXRzCitXaW5TU0wKIAogYXMgd2VsbCBhcyBlYWNoIHByb3RvY29sIHRoYXQgY3VybCBzdXBwb3J0cy4gIEEgcHJvdG9jb2wgb25seSBuZWVkcyB0byBiZQogc3BlY2lmaWVkIGlmIGl0IGlzIGRpZmZlcmVudCBmcm9tIHRoZSBzZXJ2ZXIgKHVzZWZ1bCB3aGVuIHRoZSBzZXJ2ZXIKQEAgLTI5MCw3ICsyOTIsNyBAQAogbnVtYmVyIGZvbGxvd2luZyB0aGUgbGFzdCBkb3QgaW4gdGhlIGdpdmVuIGhvc3RuYW1lIChtYWRlIHNvIHRoYXQgYSBDT05ORUNUCiBjYW4gc3RpbGwgcGFzcyBvbiB0ZXN0IG51bWJlcikgc28gdGhhdCAiZm9vLmJhci4xMjMiIGdldHMgdHJlYXRlZCBhcyB0ZXN0IGNhc2UKIDEyMy4gQWx0ZXJuYXRpdmVseSwgaWYgYW4gSVB2NiBhZGRyZXNzIGlzIHByb3ZpZGVkIHRvIENPTk5FQ1QsIHRoZSBsYXN0Ci1oZXhhZGVjaW1hbCBncm91cCBpbiB0aGUgYWRkcmVzcyB3aWxsIGJlIHVzZWQgYXMgdGhlIHRlc3QgbnVtZXIhIEZvciBleGFtcGxlCitoZXhhZGVjaW1hbCBncm91cCBpbiB0aGUgYWRkcmVzcyB3aWxsIGJlIHVzZWQgYXMgdGhlIHRlc3QgbnVtYmVyISBGb3IgZXhhbXBsZQogdGhlIGFkZHJlc3MgIlsxMjM0OjpmZl0iIHdvdWxkIGJlIHRyZWF0ZWQgYXMgdGVzdCBjYXNlIDI1NS4KIAogU2V0IHR5cGU9InBlcmwiIHRvIHdyaXRlIHRoZSB0ZXN0IGNhc2UgYXMgYSBwZXJsIHNjcmlwdC4gSXQgaW1wbGllcyB0aGF0CkBAIC0zNDAsNyArMzQyLDcgQEAKICVIVFRQVExTUE9SVCAgLSBQb3J0IG51bWJlciBvZiB0aGUgSFRUUCBUTFMgc2VydmVyCiAlSU1BUDZQT1JUIC0gSVB2NiBwb3J0IG51bWJlciBvZiB0aGUgSU1BUCBzZXJ2ZXIKICVJTUFQUE9SVCAgLSBQb3J0IG51bWJlciBvZiB0aGUgSU1BUCBzZXJ2ZXIKLSVQT1AzNlBPUlQgLSBJUHY2IG9ydCBudW1iZXIgb2YgdGhlIFBPUDMgc2VydmVyCislUE9QMzZQT1JUIC0gSVB2NiBwb3J0IG51bWJlciBvZiB0aGUgUE9QMyBzZXJ2ZXIKICVQT1AzUE9SVCAgLSBQb3J0IG51bWJlciBvZiB0aGUgUE9QMyBzZXJ2ZXIKICVQUk9YWVBPUlQgLSBQb3J0IG51bWJlciBvZiB0aGUgSFRUUCBwcm94eQogJVBXRCAgICAgICAtIEN1cnJlbnQgZGlyZWN0b3J5CmRpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5hbSBiL3Rlc3RzL01ha2VmaWxlLmFtCmluZGV4IGVhYzQ1NWEuLjM2ZTkyYWMgMTAwNjQ0Ci0tLSBhL3Rlc3RzL01ha2VmaWxlLmFtCisrKyBiL3Rlc3RzL01ha2VmaWxlLmFtCkBAIC01LDExICs1LDExIEBACiAjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogIwotIyBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDEzLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorIyBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogIwogIyBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogIyB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0jIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisjIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogIwogIyBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICMgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yNSw5ICsyNSwxMSBAQAogCiBFWFRSQV9ESVNUID0gZnRwc2VydmVyLnBsIGh0dHBzZXJ2ZXIucGwgc2VjdXJlc2VydmVyLnBsIHJ1bnRlc3RzLnBsIGdldHBhcnQucG0gXAogIEZJTEVGT1JNQVQgUkVBRE1FIHN0dW5uZWwucGVtIG1lbWFuYWx5emUucGwgdGVzdGN1cmwucGwgdmFsZ3JpbmQucG0gZnRwLnBtICAgXAotIHNzaHNlcnZlci5wbCBzc2hoZWxwLnBtIHRlc3RjdXJsLjEgcnVudGVzdHMuMSAkKEhUTUxQQUdFUykgJChQREZQQUdFUykgXAorIHNzaHNlcnZlci5wbCBzc2hoZWxwLnBtIHBhdGhoZWxwLnBtIHRlc3RjdXJsLjEgcnVudGVzdHMuMSBcCisgJChIVE1MUEFHRVMpICQoUERGUEFHRVMpIFwKICBzZXJ2ZXJoZWxwLnBtIHRmdHBzZXJ2ZXIucGwgcnRzcHNlcnZlci5wbCBkaXJlY3Rvcmllcy5wbSBzeW1ib2wtc2Nhbi5wbCBcCi0gQ01ha2VMaXN0cy50eHQgbWVtLWluY2x1ZGUtc2Nhbi5wbCB2YWxncmluZC5zdXBwIGh0dHBfcGlwZS5weSBleHRlcm4tc2Nhbi5wbAorIENNYWtlTGlzdHMudHh0IG1lbS1pbmNsdWRlLXNjYW4ucGwgdmFsZ3JpbmQuc3VwcCBodHRwX3BpcGUucHkgZXh0ZXJuLXNjYW4ucGwgXAorIG1hbnBhZ2Utc2Nhbi5wbCBucm9mZi1zY2FuLnBsCiAKIERJU1RDTEVBTkZJTEVTID0gY29uZmlndXJlaGVscC5wbQogCkBAIC00OSw3ICs1MSw3IEBACiAKIENMRUFORklMRVMgPSAuaHR0cC5waWQgLmh0dHBzLnBpZCAuZnRwLnBpZCAuZnRwcy5waWQKIAotTUFOMkhUTUw9IHJvZmZpdCA8ICQ8ID4kQAorTUFOMkhUTUw9IHJvZmZpdCAkPCA+JEAKIAogY3VybDoKIAlAY2QgJCh0b3BfYnVpbGRkaXIpICYmICQoTUFLRSkKQEAgLTkyLDMgKzk0LDggQEAKIAlwczJwZGYgJCRmb28ucHMgJEA7IFwKIAlybSAkJGZvby5wczsgXAogCWVjaG8gImNvbnZlcnRlZCAkPCB0byAkQCIpCisKK2NoZWNrc3JjOgorCWNkIGxpYnRlc3QgJiYgJChNQUtFKSBjaGVja3NyYworCWNkIHVuaXQgJiYgJChNQUtFKSBjaGVja3NyYworCWNkIHNlcnZlciAmJiAkKE1BS0UpIGNoZWNrc3JjCmRpZmYgLS1naXQgYS90ZXN0cy9jZXJ0cy9NYWtlZmlsZS5hbSBiL3Rlc3RzL2NlcnRzL01ha2VmaWxlLmFtCmluZGV4IGJkMGJiYmIuLjdlN2YxZmEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2NlcnRzL01ha2VmaWxlLmFtCisrKyBiL3Rlc3RzL2NlcnRzL01ha2VmaWxlLmFtCkBAIC05LDcgKzksNyBAQAogIwogIyBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogIyB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0jIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisjIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogIwogIyBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICMgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS90ZXN0cy9jZXJ0cy9zY3JpcHRzL01ha2VmaWxlLmFtIGIvdGVzdHMvY2VydHMvc2NyaXB0cy9NYWtlZmlsZS5hbQppbmRleCBmZmMxNDQ5Li5kYjRhOTBmIDEwMDY0NAotLS0gYS90ZXN0cy9jZXJ0cy9zY3JpcHRzL01ha2VmaWxlLmFtCisrKyBiL3Rlc3RzL2NlcnRzL3NjcmlwdHMvTWFrZWZpbGUuYW0KQEAgLTksNyArOSw3IEBACiAjCiAjIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAjCiAjIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3Rlc3RzL2NvbnZzcmN0ZXN0LnBsIGIvdGVzdHMvY29udnNyY3Rlc3QucGwKaW5kZXggZWU0NDIzOS4uMTEyMzc0NCAxMDA3NTUKLS0tIGEvdGVzdHMvY29udnNyY3Rlc3QucGwKKysrIGIvdGVzdHMvY29udnNyY3Rlc3QucGwKQEAgLTEwLDcgKzEwLDcgQEAKICMKICMgVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICMgeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICMKICMgWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAjIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS9ESVNBQkxFRCBiL3Rlc3RzL2RhdGEvRElTQUJMRUQKaW5kZXggNmEwMTE5ZC4uNTA1NDRhYiAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS9ESVNBQkxFRAorKysgYi90ZXN0cy9kYXRhL0RJU0FCTEVECkBAIC0xMCwzICsxMCw5IEBACiA4MzYKIDg4MgogOTM4CisjIHRlc3QgMTgwMSBjYXVzZXMgcHJvYmxlbXMgb24gTWFjIE9TIFggYW5kIGdpdGh1YgorIyBodHRwczovL2dpdGh1Yi5jb20vY3VybC9jdXJsL2lzc3Vlcy8zODAKKzE4MDEKKyMgdGVzdCAxNTEwIGNhc3VlcyBwcm9ibGVtcyBvbiB0aGUgQ0kgb24gZ2l0aHViCisjIGV4YW1wbGU6IGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9jdXJsL2N1cmwvYnVpbGRzLzgxNjMzNjAwCisxNTEwCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL01ha2VmaWxlLmFtIGIvdGVzdHMvZGF0YS9NYWtlZmlsZS5hbQppbmRleCBhNGIyODFmLi40ZWMwMzY0IDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL01ha2VmaWxlLmFtCisrKyBiL3Rlc3RzL2RhdGEvTWFrZWZpbGUuYW0KQEAgLTUsNyArNSw3IEBACiAjIFRFU1RDQVNFUyBhcmUgdGFrZW4gZnJvbSBNYWtlZmlsZS5pbmMKIGluY2x1ZGUgTWFrZWZpbGUuaW5jCiAKLUVYVFJBX0RJU1QgPSAkKFRFU1RDQVNFUykgRElTQUJMRUQKK0VYVFJBX0RJU1QgPSAkKFRFU1RDQVNFUykgRElTQUJMRUQgQ01ha2VMaXN0cy50eHQKIAogZmlsZWNoZWNrOgogCUBta2RpciB0ZXN0LXBsYWNlOyBcCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL01ha2VmaWxlLmluYyBiL3Rlc3RzL2RhdGEvTWFrZWZpbGUuaW5jCmluZGV4IDczODc3YzYuLmUzYjVhODggMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvTWFrZWZpbGUuaW5jCisrKyBiL3Rlc3RzL2RhdGEvTWFrZWZpbGUuaW5jCkBAIC01LDExICs1LDExIEBACiAjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogIwotIyBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE1LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorIyBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogIwogIyBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogIyB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0jIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisjIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogIwogIyBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICMgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC04NiwyMCArODYsMjEgQEAKIHRlc3Q4MDkgdGVzdDgxMCB0ZXN0ODExIHRlc3Q4MTIgdGVzdDgxMyB0ZXN0ODE0IHRlc3Q4MTUgdGVzdDgxNiB0ZXN0ODE3IFwKIHRlc3Q4MTggdGVzdDgxOSB0ZXN0ODIwIHRlc3Q4MjEgdGVzdDgyMiB0ZXN0ODIzIHRlc3Q4MjQgdGVzdDgyNSB0ZXN0ODI2IFwKIHRlc3Q4MjcgdGVzdDgyOCB0ZXN0ODI5IHRlc3Q4MzAgdGVzdDgzMSB0ZXN0ODMyIHRlc3Q4MzMgdGVzdDgzNCB0ZXN0ODM1IFwKLXRlc3Q4MzYgdGVzdDgzNyB0ZXN0ODM4IHRlc3Q4MzkgdGVzdDg0MCBcCit0ZXN0ODM2IHRlc3Q4MzcgdGVzdDgzOCB0ZXN0ODM5IHRlc3Q4NDAgdGVzdDg0MSB0ZXN0ODQyIHRlc3Q4NDMgdGVzdDg0NCBcCit0ZXN0ODQ1IFwKIFwKIHRlc3Q4NTAgdGVzdDg1MSB0ZXN0ODUyIHRlc3Q4NTMgdGVzdDg1NCB0ZXN0ODU1IHRlc3Q4NTYgdGVzdDg1NyB0ZXN0ODU4IFwKIHRlc3Q4NTkgdGVzdDg2MCB0ZXN0ODYxIHRlc3Q4NjIgdGVzdDg2MyB0ZXN0ODY0IHRlc3Q4NjUgdGVzdDg2NiB0ZXN0ODY3IFwKIHRlc3Q4NjggdGVzdDg2OSB0ZXN0ODcwIHRlc3Q4NzEgdGVzdDg3MiB0ZXN0ODczIHRlc3Q4NzQgdGVzdDg3NSB0ZXN0ODc2IFwKIHRlc3Q4NzcgdGVzdDg3OCB0ZXN0ODc5IHRlc3Q4ODAgdGVzdDg4MSB0ZXN0ODgyIHRlc3Q4ODMgdGVzdDg4NCB0ZXN0ODg1IFwKLXRlc3Q4ODYgXAordGVzdDg4NiB0ZXN0ODg3IHRlc3Q4ODggdGVzdDg4OSB0ZXN0ODkwIFwKIFwKIHRlc3Q5MDAgdGVzdDkwMSB0ZXN0OTAyIHRlc3Q5MDMgdGVzdDkwNCB0ZXN0OTA1IHRlc3Q5MDYgdGVzdDkwNyB0ZXN0OTA4IFwKIHRlc3Q5MDkgdGVzdDkxMCB0ZXN0OTExIHRlc3Q5MTIgdGVzdDkxMyB0ZXN0OTE0IHRlc3Q5MTUgdGVzdDkxNiB0ZXN0OTE3IFwKIHRlc3Q5MTggdGVzdDkxOSB0ZXN0OTIwIHRlc3Q5MjEgdGVzdDkyMiB0ZXN0OTIzIHRlc3Q5MjQgdGVzdDkyNSB0ZXN0OTI2IFwKIHRlc3Q5MjcgdGVzdDkyOCB0ZXN0OTI5IHRlc3Q5MzAgdGVzdDkzMSB0ZXN0OTMyIHRlc3Q5MzMgdGVzdDkzNCB0ZXN0OTM1IFwKIHRlc3Q5MzYgdGVzdDkzNyB0ZXN0OTM4IHRlc3Q5MzkgdGVzdDk0MCB0ZXN0OTQxIHRlc3Q5NDIgdGVzdDk0MyB0ZXN0OTQ0IFwKLXRlc3Q5NDUgXAordGVzdDk0NSB0ZXN0OTQ2IHRlc3Q5NDcgdGVzdDk0OCB0ZXN0OTQ5IFwKIFwKIHRlc3QxMDAwIHRlc3QxMDAxIHRlc3QxMDAyIHRlc3QxMDAzIHRlc3QxMDA0IHRlc3QxMDA1IHRlc3QxMDA2IHRlc3QxMDA3IFwKIHRlc3QxMDA4IHRlc3QxMDA5IHRlc3QxMDEwIHRlc3QxMDExIHRlc3QxMDEyIHRlc3QxMDEzIHRlc3QxMDE0IHRlc3QxMDE1IFwKQEAgLTExOCwxNyArMTE5LDE4IEBACiB0ZXN0MTExMiB0ZXN0MTExMyB0ZXN0MTExNCB0ZXN0MTExNSB0ZXN0MTExNiB0ZXN0MTExNyB0ZXN0MTExOCB0ZXN0MTExOSBcCiB0ZXN0MTEyMCB0ZXN0MTEyMSB0ZXN0MTEyMiB0ZXN0MTEyMyB0ZXN0MTEyNCB0ZXN0MTEyNSB0ZXN0MTEyNiB0ZXN0MTEyNyBcCiB0ZXN0MTEyOCB0ZXN0MTEyOSB0ZXN0MTEzMCB0ZXN0MTEzMSB0ZXN0MTEzMiB0ZXN0MTEzMyB0ZXN0MTEzNCB0ZXN0MTEzNSBcCit0ZXN0MTEzNiB0ZXN0MTEzNyB0ZXN0MTEzOCB0ZXN0MTEzOSB0ZXN0MTE0MCBcCiBcCiB0ZXN0MTIwMCB0ZXN0MTIwMSB0ZXN0MTIwMiB0ZXN0MTIwMyB0ZXN0MTIwNCB0ZXN0MTIwNSB0ZXN0MTIwNiB0ZXN0MTIwNyBcCiB0ZXN0MTIwOCB0ZXN0MTIwOSB0ZXN0MTIxMCB0ZXN0MTIxMSB0ZXN0MTIxMiB0ZXN0MTIxMyB0ZXN0MTIxNCB0ZXN0MTIxNSBcCiB0ZXN0MTIxNiB0ZXN0MTIxNyB0ZXN0MTIxOCB0ZXN0MTIxOSBcCiB0ZXN0MTIyMCB0ZXN0MTIyMSB0ZXN0MTIyMiB0ZXN0MTIyMyB0ZXN0MTIyNCB0ZXN0MTIyNSB0ZXN0MTIyNiB0ZXN0MTIyNyBcCiB0ZXN0MTIyOCB0ZXN0MTIyOSB0ZXN0MTIzMCB0ZXN0MTIzMSB0ZXN0MTIzMiB0ZXN0MTIzMyB0ZXN0MTIzNCB0ZXN0MTIzNSBcCi10ZXN0MTIzNiB0ZXN0MTIzNyB0ZXN0MTIzOCB0ZXN0MTIzOSB0ZXN0MTI0MCB0ZXN0MTI0MSBcCit0ZXN0MTIzNiB0ZXN0MTIzNyB0ZXN0MTIzOCB0ZXN0MTIzOSB0ZXN0MTI0MCB0ZXN0MTI0MSB0ZXN0MTI0MiB0ZXN0MTI0MyBcCiBcCiB0ZXN0MTMwMCB0ZXN0MTMwMSB0ZXN0MTMwMiB0ZXN0MTMwMyB0ZXN0MTMwNCB0ZXN0MTMwNSB0ZXN0MTMwNiB0ZXN0MTMwNyBcCiB0ZXN0MTMwOCB0ZXN0MTMwOSB0ZXN0MTMxMCB0ZXN0MTMxMSB0ZXN0MTMxMiB0ZXN0MTMxMyB0ZXN0MTMxNCB0ZXN0MTMxNSBcCi10ZXN0MTMxNiB0ZXN0MTMxNyB0ZXN0MTMxOCB0ZXN0MTMxOSB0ZXN0MTMyMCB0ZXN0MTMyMSAgICAgICAgICAgICAgICAgICBcCit0ZXN0MTMxNiB0ZXN0MTMxNyB0ZXN0MTMxOCB0ZXN0MTMxOSB0ZXN0MTMyMCB0ZXN0MTMyMSB0ZXN0MTMyMiAgICAgICAgICBcCiAgICAgICAgICB0ZXN0MTMyNSB0ZXN0MTMyNiB0ZXN0MTMyNyB0ZXN0MTMyOCB0ZXN0MTMyOSB0ZXN0MTMzMCB0ZXN0MTMzMSBcCiB0ZXN0MTMzMiB0ZXN0MTMzMyB0ZXN0MTMzNCB0ZXN0MTMzNSB0ZXN0MTMzNiB0ZXN0MTMzNyB0ZXN0MTMzOCB0ZXN0MTMzOSBcCiB0ZXN0MTM0MCB0ZXN0MTM0MSB0ZXN0MTM0MiB0ZXN0MTM0MyB0ZXN0MTM0NCB0ZXN0MTM0NSB0ZXN0MTM0NiB0ZXN0MTM0NyBcCkBAIC0xNDUsMTcgKzE0NywxNyBAQAogdGVzdDE0MTYgdGVzdDE0MTcgdGVzdDE0MTggdGVzdDE0MTkgdGVzdDE0MjAgdGVzdDE0MjEgdGVzdDE0MjIgdGVzdDE0MjMgXAogdGVzdDE0MjQgXAogdGVzdDE0MjggdGVzdDE0MjkgdGVzdDE0MzAgdGVzdDE0MzEgdGVzdDE0MzIgdGVzdDE0MzMgdGVzdDE0MzQgdGVzdDE0MzUgXAotdGVzdDE0MzYgXAordGVzdDE0MzYgdGVzdDE0MzcgXAogXAogdGVzdDE1MDAgdGVzdDE1MDEgdGVzdDE1MDIgdGVzdDE1MDMgdGVzdDE1MDQgdGVzdDE1MDUgdGVzdDE1MDYgdGVzdDE1MDcgXAogdGVzdDE1MDggdGVzdDE1MDkgdGVzdDE1MTAgdGVzdDE1MTEgdGVzdDE1MTIgdGVzdDE1MTMgdGVzdDE1MTQgdGVzdDE1MTUgXAotdGVzdDE1MTYgXAordGVzdDE1MTYgdGVzdDE1MTcgXAogXAogdGVzdDE1MjAgXAogXAotdGVzdDE1MjUgdGVzdDE1MjYgdGVzdDE1MjcgdGVzdDE1MjggdGVzdDE1MjkgdGVzdDE1MzAgXAordGVzdDE1MjUgdGVzdDE1MjYgdGVzdDE1MjcgdGVzdDE1MjggdGVzdDE1MjkgdGVzdDE1MzAgdGVzdDE1MzEgXAogXAotdGVzdDE2MDAgdGVzdDE2MDEgdGVzdDE2MDIgXAordGVzdDE2MDAgdGVzdDE2MDEgdGVzdDE2MDIgdGVzdDE2MDMgdGVzdDE2MDQgXAogXAogdGVzdDE4MDAgdGVzdDE4MDEgXAogXApAQCAtMTY2LDQgKzE2OCw1IEBACiB0ZXN0MjAxNiB0ZXN0MjAxNyB0ZXN0MjAxOCB0ZXN0MjAxOSB0ZXN0MjAyMCB0ZXN0MjAyMSB0ZXN0MjAyMiB0ZXN0MjAyMyBcCiB0ZXN0MjAyNCB0ZXN0MjAyNSB0ZXN0MjAyNiB0ZXN0MjAyNyB0ZXN0MjAyOCB0ZXN0MjAyOSB0ZXN0MjAzMCB0ZXN0MjAzMSBcCiB0ZXN0MjAzMiB0ZXN0MjAzMyB0ZXN0MjAzNCB0ZXN0MjAzNSB0ZXN0MjAzNiB0ZXN0MjAzNyB0ZXN0MjAzOCB0ZXN0MjAzOSBcCi10ZXN0MjA0MAordGVzdDIwNDAgdGVzdDIwNDEgdGVzdDIwNDIgdGVzdDIwNDMgdGVzdDIwNDQgdGVzdDIwNDUgdGVzdDIwNDYgdGVzdDIwNDcgXAordGVzdDIwNDggdGVzdDIwNDkgdGVzdDIwNTAgdGVzdDIwNTEgdGVzdDIwNTIKZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDEwMDEgYi90ZXN0cy9kYXRhL3Rlc3QxMDAxCmluZGV4IDkxYjEzMjAuLjYwZTY4YTggMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDEwMDEKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTAwMQpAQCAtODksNyArODksNiBAQAogQ29udGVudC1SYW5nZTogYnl0ZXMgMi00LzUNCiBVc2VyLUFnZW50OiBjdXJsLzcuMTIuMS1DVlMgKGk2ODYtcGMtbGludXgtZ251KSBsaWJjdXJsLzcuMTIuMS1DVlMgT3BlblNTTC8wLjkuNmIgaXB2NiB6bGliLzEuMS40IEdTUyBsaWJpZG4vMC40LjYNCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiBDb250ZW50LUxlbmd0aDogMA0KIA0KIEdFVCBodHRwOi8vJUhPU1RJUDolSFRUUFBPUlQvMTAwMSBIVFRQLzEuMQ0KQEAgLTk3LDcgKzk2LDYgQEAKIEF1dGhvcml6YXRpb246IERpZ2VzdCB1c2VybmFtZT0iYXVzZXIiLCByZWFsbT0idGVzdHJlYWxtIiwgbm9uY2U9IjEwNTM2MDQxNDQiLCB1cmk9Ii8xMDAxIiwgcmVzcG9uc2U9IjZhZjRkODljOTUyZjRkZDRjYzIxNWE2ODc4ZGM0OTlkIg0KIENvbnRlbnQtUmFuZ2U6IGJ5dGVzIDItNC81DQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogQ29udGVudC1MZW5ndGg6IDMNCiBFeHBlY3Q6IDEwMC1jb250aW51ZQ0KIA0KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDEwMDIgYi90ZXN0cy9kYXRhL3Rlc3QxMDAyCmluZGV4IDgzY2NlNmUuLjgzYjg3YjkgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDEwMDIKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTAwMgpAQCAtODgsNyArODgsNiBAQAogQ29udGVudC1SYW5nZTogYnl0ZXMgMi00LzUNCiBVc2VyLUFnZW50OiBjdXJsLzcuMTIuMS1DVlMgKGk2ODYtcGMtbGludXgtZ251KSBsaWJjdXJsLzcuMTIuMS1DVlMgT3BlblNTTC8wLjkuNmIgaXB2NiB6bGliLzEuMS40IEdTUyBsaWJpZG4vMC40LjYNCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiBDb250ZW50LUxlbmd0aDogMA0KIA0KIEdFVCBodHRwOi8vJUhPU1RJUDolSFRUUFBPUlQvMTAwMi51cGxvYWQxIEhUVFAvMS4xDQpAQCAtOTYsNyArOTUsNiBAQAogQXV0aG9yaXphdGlvbjogRGlnZXN0IHVzZXJuYW1lPSJhdXNlciIsIHJlYWxtPSJ0ZXN0cmVhbG0iLCBub25jZT0iMTA1MzYwNDE0NCIsIHVyaT0iLzEwMDIudXBsb2FkMSIsIHJlc3BvbnNlPSIxOThhYTliNmFjYjRiMGM3MWQwMmExOTdhNWU0MWY1NCINCiBDb250ZW50LVJhbmdlOiBieXRlcyAyLTQvNQ0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIENvbnRlbnQtTGVuZ3RoOiAzDQogRXhwZWN0OiAxMDAtY29udGludWUNCiANCkBAIC0xMDcsNyArMTA1LDYgQEAKIENvbnRlbnQtUmFuZ2U6IGJ5dGVzIDItNC81DQogVXNlci1BZ2VudDogY3VybC83LjE2LjENCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiBDb250ZW50LUxlbmd0aDogMw0KIEV4cGVjdDogMTAwLWNvbnRpbnVlDQogDQpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTAwNyBiL3Rlc3RzL2RhdGEvdGVzdDEwMDcKaW5kZXggNTk2NmFiMy4uNmJhZjIyMSAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MTAwNworKysgYi90ZXN0cy9kYXRhL3Rlc3QxMDA3CkBAIC0zMiw4ICszMiwxMSBAQAogPC9lcnJvcmNvZGU+CiA8cHJvdG9jb2w+CiBvcGNvZGU6IDIKLWZpbGVuYW1lOiAvaW52YWxpZC1maWxlCiBtb2RlOiBvY3RldAordHNpemU6IDI3CitibGtzaXplOiA1MTIKK3RpbWVvdXQ6IDYKK2ZpbGVuYW1lOiAvaW52YWxpZC1maWxlCiA8L3Byb3RvY29sPgogPC92ZXJpZnk+CiA8L3Rlc3RjYXNlPgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTAwOCBiL3Rlc3RzL2RhdGEvdGVzdDEwMDgKaW5kZXggYmNjNTAzZS4uMWRhYzM5NSAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MTAwOAorKysgYi90ZXN0cy9kYXRhL3Rlc3QxMDA4CkBAIC0xMTQsMTIgKzExNCwxMCBAQAogQ09OTkVDVCB0ZXN0LnJlbW90ZS5leGFtcGxlLmNvbS4xMDA4OiVIVFRQUE9SVCBIVFRQLzEuMQ0KIEhvc3Q6IHRlc3QucmVtb3RlLmV4YW1wbGUuY29tLjEwMDg6JUhUVFBQT1JUDQogUHJveHktQXV0aG9yaXphdGlvbjogTlRMTSBUbFJNVFZOVFVBQUJBQUFBQm9JSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBPQ0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiBDT05ORUNUIHRlc3QucmVtb3RlLmV4YW1wbGUuY29tLjEwMDg6JUhUVFBQT1JUIEhUVFAvMS4xDQogSG9zdDogdGVzdC5yZW1vdGUuZXhhbXBsZS5jb20uMTAwODolSFRUUFBPUlQNCiBQcm94eS1BdXRob3JpemF0aW9uOiBOVExNIFRsUk1UVk5UVUFBREFBQUFHQUFZQUVBQUFBQ2VBSjRBV0FBQUFBQUFBQUQyQUFBQUNBQUlBUFlBQUFBSUFBZ0EvZ0FBQUFBQUFBQUFBQUFBQm9LQkFMOUxOVzUrbmt5SFpSbXlGYUwvTEo0eE1qTTBNakl6TkdVQ3loZ1E5aHc2ZVdBVDEzRWJEYTBCQVFBQUFBQUFBQUNBUHRYZXNaMEJNVEl6TkRJeU16UUFBQUFBQWdBRUFFTUFRd0FCQUJJQVJRQk1BRWtBVXdCQkFFSUFSUUJVQUVnQUJBQVlBR01BWXdBdUFHa0FZd0JsQUdRQVpRQjJBQzRBYmdCMUFBTUFMQUJsQUd3QWFRQnpBR0VBWWdCbEFIUUFhQUF1QUdNQVl3QXVBR2tBWXdCbEFHUUFaUUIyQUM0QWJnQjFBQUFBQUFBQUFBQUFkR1Z6ZEhWelpYSmpkWEpzYUc5emRBPT0NCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogR0VUIC9wYXRoLzEwMDgwMDAyIEhUVFAvMS4xDQogVXNlci1BZ2VudDogY3VybC83LjEyLjMtQ1ZTIChpNjg2LXBjLWxpbnV4LWdudSkgbGliY3VybC83LjEyLjMtQ1ZTIE9wZW5TU0wvMC45LjZiIHpsaWIvMS4xLjQNCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxMDA5IGIvdGVzdHMvZGF0YS90ZXN0MTAwOQppbmRleCBiMGE5M2U1Li5lMTkyOWJlIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QxMDA5CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDEwMDkKQEAgLTM3LDggKzM3LDExIEBACiA8dmVyaWZ5PgogPHByb3RvY29sPgogb3Bjb2RlOiAxCi1maWxlbmFtZTogLzEwMDkKIG1vZGU6IG9jdGV0Cit0c2l6ZTogMAorYmxrc2l6ZTogNTEyCit0aW1lb3V0OiA2CitmaWxlbmFtZTogLzEwMDkKIDwvcHJvdG9jb2w+CiA8L3ZlcmlmeT4KIDwvdGVzdGNhc2U+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxMDIxIGIvdGVzdHMvZGF0YS90ZXN0MTAyMQppbmRleCAzYWM5ZTEyLi4zYmQ2NGJkIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QxMDIxCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDEwMjEKQEAgLTExOSwxNyArMTE5LDE0IEBACiA8cHJvdG9jb2w+CiBDT05ORUNUIHRlc3QucmVtb3RlLmV4YW1wbGUuY29tLjEwMjE6JUhUVFBQT1JUIEhUVFAvMS4xDQogSG9zdDogdGVzdC5yZW1vdGUuZXhhbXBsZS5jb20uMTAyMTolSFRUUFBPUlQNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogQ09OTkVDVCB0ZXN0LnJlbW90ZS5leGFtcGxlLmNvbS4xMDIxOiVIVFRQUE9SVCBIVFRQLzEuMQ0KIEhvc3Q6IHRlc3QucmVtb3RlLmV4YW1wbGUuY29tLjEwMjE6JUhUVFBQT1JUDQogUHJveHktQXV0aG9yaXphdGlvbjogTlRMTSBUbFJNVFZOVFVBQUJBQUFBQm9JSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBPQ0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiBDT05ORUNUIHRlc3QucmVtb3RlLmV4YW1wbGUuY29tLjEwMjE6JUhUVFBQT1JUIEhUVFAvMS4xDQogSG9zdDogdGVzdC5yZW1vdGUuZXhhbXBsZS5jb20uMTAyMTolSFRUUFBPUlQNCiBQcm94eS1BdXRob3JpemF0aW9uOiBOVExNIFRsUk1UVk5UVUFBREFBQUFHQUFZQUVBQUFBQ2VBSjRBV0FBQUFBQUFBQUQyQUFBQUNBQUlBUFlBQUFBSUFBZ0EvZ0FBQUFBQUFBQUFBQUFBQm9LQkFMOUxOVzUrbmt5SFpSbXlGYUwvTEo0eE1qTTBNakl6TkdVQ3loZ1E5aHc2ZVdBVDEzRWJEYTBCQVFBQUFBQUFBQUNBUHRYZXNaMEJNVEl6TkRJeU16UUFBQUFBQWdBRUFFTUFRd0FCQUJJQVJRQk1BRWtBVXdCQkFFSUFSUUJVQUVnQUJBQVlBR01BWXdBdUFHa0FZd0JsQUdRQVpRQjJBQzRBYmdCMUFBTUFMQUJsQUd3QWFRQnpBR0VBWWdCbEFIUUFhQUF1QUdNQVl3QXVBR2tBWXdCbEFHUUFaUUIyQUM0QWJnQjFBQUFBQUFBQUFBQUFkR1Z6ZEhWelpYSmpkWEpzYUc5emRBPT0NCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogR0VUIC9wYXRoLzEwMjEwMDAyIEhUVFAvMS4xDQogVXNlci1BZ2VudDogY3VybC83LjEyLjMtQ1ZTIChpNjg2LXBjLWxpbnV4LWdudSkgbGliY3VybC83LjEyLjMtQ1ZTIE9wZW5TU0wvMC45LjZiIHpsaWIvMS4xLjQNCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxMDM0IGIvdGVzdHMvZGF0YS90ZXN0MTAzNAppbmRleCBjNDc1NzQwLi5mMTQyNjg0IDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QxMDM0CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDEwMzQKQEAgLTU1LDcgKzU1LDYgQEAKIEdFVCBodHRwOi8vaW52YWxpZC11dGY4LeKQLmxvY2FsL3BhZ2UvMTAzNCBIVFRQLzEuMQ0KIEhvc3Q6IGludmFsaWQtdXRmOC3ikC5sb2NhbA0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIDwvcHJvdG9jb2w+CiA8L3ZlcmlmeT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDEwMzUgYi90ZXN0cy9kYXRhL3Rlc3QxMDM1CmluZGV4IDIwYjQzNGMuLmUxYzJhZjYgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDEwMzUKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTAzNQpAQCAtNTIsNyArNTIsNiBAQAogR0VUIGh0dHA6Ly90b28tbG9uZy1JRE4tbmFtZS1j/HJsLXL8bGVzLWxhLWxhLWxhLWRlZS1kYS1mbG9vYnktbm9vYnkubG9jYWwvcGFnZS8xMDM1IEhUVFAvMS4xDQogSG9zdDogdG9vLWxvbmctSUROLW5hbWUtY/xybC1y/Gxlcy1sYS1sYS1sYS1kZWUtZGEtZmxvb2J5LW5vb2J5LmxvY2FsDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogPC9wcm90b2NvbD4KIDwvdmVyaWZ5PgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTA0OCBiL3Rlc3RzL2RhdGEvdGVzdDEwNDgKaW5kZXggYzMwMzQ3My4uZjk0YWU1OCAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MTA0OAorKysgYi90ZXN0cy9kYXRhL3Rlc3QxMDQ4CkBAIC0xNiw3ICsxNiw3IEBACiA8cmVwbHk+CiAjIFdoZW4gZG9pbmcgTElTVCwgd2UgZ2V0IHRoZSBkZWZhdWx0IGxpc3Qgb3V0cHV0IGhhcmQtY29kZWQgaW4gdGhlIHRlc3QKICMgRlRQIHNlcnZlcgotPGRhdGFjaGVjaz4KKzxkYXRhY2hlY2sgbW9kZT0idGV4dCI+CiB0b3RhbCAyMAogZHJ3eHIteHIteCAgIDggOTggICAgICAgOTggICAgICAgICAgIDUxMiBPY3QgMjIgMTM6MDYgLgogZHJ3eHIteHIteCAgIDggOTggICAgICAgOTggICAgICAgICAgIDUxMiBPY3QgMjIgMTM6MDYgLi4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDEwNDkgYi90ZXN0cy9kYXRhL3Rlc3QxMDQ5CmluZGV4IGU2MDU0YTQuLjYwZjQxMzYgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDEwNDkKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTA0OQpAQCAtMzcsOCArMzcsMTEgQEAKIDx2ZXJpZnk+CiA8cHJvdG9jb2w+CiBvcGNvZGU6IDEKLWZpbGVuYW1lOiAvMTA0OQogbW9kZTogb2N0ZXQKK3RzaXplOiAwCitibGtzaXplOiA1MTIKK3RpbWVvdXQ6IDYKK2ZpbGVuYW1lOiAvMTA0OQogPC9wcm90b2NvbD4KIDwvdmVyaWZ5PgogPC90ZXN0Y2FzZT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDEwNTAgYi90ZXN0cy9kYXRhL3Rlc3QxMDUwCmluZGV4IDFhYmI5YjEuLmEwZTViZWEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDEwNTAKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTA1MApAQCAtMTIsNyArMTIsNyBAQAogPHJlcGx5PgogIyBXaGVuIGRvaW5nIExJU1QsIHdlIGdldCB0aGUgZGVmYXVsdCBsaXN0IG91dHB1dCBoYXJkLWNvZGVkIGluIHRoZSB0ZXN0CiAjIEZUUCBzZXJ2ZXIKLTxkYXRhY2hlY2s+Cis8ZGF0YWNoZWNrIG1vZGU9InRleHQiPgogdG90YWwgMjAKIGRyd3hyLXhyLXggICA4IDk4ICAgICAgIDk4ICAgICAgICAgICA1MTIgT2N0IDIyIDEzOjA2IC4KIGRyd3hyLXhyLXggICA4IDk4ICAgICAgIDk4ICAgICAgICAgICA1MTIgT2N0IDIyIDEzOjA2IC4uCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxMDU5IGIvdGVzdHMvZGF0YS90ZXN0MTA1OQppbmRleCA2ODIwZWE2Li5lZTRlNmE3IDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QxMDU5CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDEwNTkKQEAgLTUxLDcgKzUxLDYgQEAKIDxwcm90b2NvbD4KIENPTk5FQ1QgdGVzdC1udW1iZXI6MTA1OSBIVFRQLzEuMQ0KIEhvc3Q6IHRlc3QtbnVtYmVyOjEwNTkNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogPC9wcm90b2NvbD4KIDwvdmVyaWZ5PgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTA2MCBiL3Rlc3RzL2RhdGEvdGVzdDEwNjAKaW5kZXggZTRhZWE2NS4uMTA5NDc5MiAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MTA2MAorKysgYi90ZXN0cy9kYXRhL3Rlc3QxMDYwCkBAIC04ODcsMTIgKzg4NywxMCBAQAogPHByb3RvY29sPgogQ09OTkVDVCB0ZXN0LnJlbW90ZS5oYXh4LnNlLjEwNjA6ODk5MCBIVFRQLzEuMQ0KIEhvc3Q6IHRlc3QucmVtb3RlLmhheHguc2UuMTA2MDo4OTkwDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIENPTk5FQ1QgdGVzdC5yZW1vdGUuaGF4eC5zZS4xMDYwOjg5OTAgSFRUUC8xLjENCiBIb3N0OiB0ZXN0LnJlbW90ZS5oYXh4LnNlLjEwNjA6ODk5MA0KIFByb3h5LUF1dGhvcml6YXRpb246IERpZ2VzdCB1c2VybmFtZT0ic2lsbHkiLCByZWFsbT0id2VpcmRvcmVhbG0iLCBub25jZT0iMTIzNDUiLCB1cmk9InRlc3QucmVtb3RlLmhheHguc2UuMTA2MDo4OTkwIiwgcmVzcG9uc2U9ImUxZmJlZDM5YzI2ZjRlZmUyODRhZGMwZTU3NmZmNjM4Ig0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiBHRVQgL3BhdGgvMTA2MDAwMDIgSFRUUC8xLjENCiBIb3N0OiB0ZXN0LnJlbW90ZS5oYXh4LnNlLjEwNjA6ODk5MA0KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDEwNjEgYi90ZXN0cy9kYXRhL3Rlc3QxMDYxCmluZGV4IGE1NWEyNzIuLjRmNTNhODcgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDEwNjEKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTA2MQpAQCAtODkyLDEyICs4OTIsMTAgQEAKIDxwcm90b2NvbD4KIENPTk5FQ1QgdGVzdC5yZW1vdGUuaGF4eC5zZS4xMDYxOjg5OTAgSFRUUC8xLjENCiBIb3N0OiB0ZXN0LnJlbW90ZS5oYXh4LnNlLjEwNjE6ODk5MA0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiBDT05ORUNUIHRlc3QucmVtb3RlLmhheHguc2UuMTA2MTo4OTkwIEhUVFAvMS4xDQogSG9zdDogdGVzdC5yZW1vdGUuaGF4eC5zZS4xMDYxOjg5OTANCiBQcm94eS1BdXRob3JpemF0aW9uOiBEaWdlc3QgdXNlcm5hbWU9InNpbGx5IiwgcmVhbG09IndlaXJkb3JlYWxtIiwgbm9uY2U9IjEyMzQ1IiwgdXJpPSJ0ZXN0LnJlbW90ZS5oYXh4LnNlLjEwNjE6ODk5MCIsIHJlc3BvbnNlPSI0ZTIzNDQ5ZmE5MzIyNDgzNDI5OWU3MjgyYTcwNDcyYyINCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogR0VUIC9wYXRoLzEwNjEwMDAyIEhUVFAvMS4xDQogSG9zdDogdGVzdC5yZW1vdGUuaGF4eC5zZS4xMDYxOjg5OTANCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxMDc3IGIvdGVzdHMvZGF0YS90ZXN0MTA3NwppbmRleCBhM2M5MDI0Li5lNzFkNzU2IDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QxMDc3CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDEwNzcKQEAgLTMwLDcgKzMwLDYgQEAKIENvbnRlbnQtVHlwZTogdGV4dC9wbGFpbg0KIENvbnRlbnQtTGVuZ3RoOiA5DQogRnVubnktaGVhZDogeWVzeWVzDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIGNvbnRlbnRzCiA8L2RhdGEyPgpAQCAtNjMsMTIgKzYyLDEwIEBACiBHRVQgZnRwOi8vJUhPU1RJUDolSFRUUFBPUlQvd2Uvd2FudC90aGF0L3BhZ2UvMTA3NyBIVFRQLzEuMQ0KIEhvc3Q6ICVIT1NUSVA6JUhUVFBQT1JUDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogR0VUIGZ0cDovLyVIT1NUSVA6JUhUVFBQT1JUL3dlL3dhbnQvdGhhdC9wYWdlLzEwNzcwMDAyIEhUVFAvMS4wDQogSG9zdDogJUhPU1RJUDolSFRUUFBPUlQNCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiA8L3Byb3RvY29sPgogPC92ZXJpZnk+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxMDc4IGIvdGVzdHMvZGF0YS90ZXN0MTA3OAppbmRleCBhOWJiNzcxLi5mMDRiYWQzIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QxMDc4CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDEwNzgKQEAgLTU2LDcgKzU2LDYgQEAKIDxwcm94eT4KIENPTk5FQ1QgJUhPU1RJUC4xMDc4OiVIVFRQUE9SVCBIVFRQLzEuMA0KIEhvc3Q6ICVIT1NUSVAuMTA3ODolSFRUUFBPUlQNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogPC9wcm94eT4KIDxwcm90b2NvbD4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDEwODcgYi90ZXN0cy9kYXRhL3Rlc3QxMDg3CmluZGV4IGQyMjg5NzYuLjFmYjEzY2IgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDEwODcKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTA4NwpAQCAtOTIsMTggKzkyLDE1IEBACiBHRVQgaHR0cDovL2ZpcnN0Lmhvc3QuaXQuaXMvd2Uvd2FudC90aGF0L3BhZ2UvMTA4NzEwMDAgSFRUUC8xLjENCiBIb3N0OiBmaXJzdC5ob3N0Lml0LmlzDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogR0VUIGh0dHA6Ly9maXJzdC5ob3N0Lml0LmlzL3dlL3dhbnQvdGhhdC9wYWdlLzEwODcxMDAwIEhUVFAvMS4xDQogSG9zdDogZmlyc3QuaG9zdC5pdC5pcw0KIEF1dGhvcml6YXRpb246IEJhc2ljIGFXRnRPbTE1YzJWc1pnPT0NCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiBHRVQgaHR0cDovL2dvdG8uc2Vjb25kLmhvc3Qubm93LzEwODcxMDAyIEhUVFAvMS4xDQogSG9zdDogZ290by5zZWNvbmQuaG9zdC5ub3cNCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiA8L3Byb3RvY29sPgogPC92ZXJpZnk+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxMDg4IGIvdGVzdHMvZGF0YS90ZXN0MTA4OAppbmRleCBhODA3Y2U5Li45ODAxZmZmIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QxMDg4CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDEwODgKQEAgLTkzLDE5ICs5MywxNiBAQAogR0VUIGh0dHA6Ly9maXJzdC5ob3N0Lml0LmlzL3dlL3dhbnQvdGhhdC9wYWdlLzEwODgxMDAwIEhUVFAvMS4xDQogSG9zdDogZmlyc3QuaG9zdC5pdC5pcw0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIEdFVCBodHRwOi8vZmlyc3QuaG9zdC5pdC5pcy93ZS93YW50L3RoYXQvcGFnZS8xMDg4MTAwMCBIVFRQLzEuMQ0KIEhvc3Q6IGZpcnN0Lmhvc3QuaXQuaXMNCiBBdXRob3JpemF0aW9uOiBCYXNpYyBhV0Z0T20xNWMyVnNaZz09DQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogR0VUIGh0dHA6Ly9nb3RvLnNlY29uZC5ob3N0Lm5vdy8xMDg4MTAwMiBIVFRQLzEuMQ0KIEhvc3Q6IGdvdG8uc2Vjb25kLmhvc3Qubm93DQogQXV0aG9yaXphdGlvbjogQmFzaWMgYVdGdE9tMTVjMlZzWmc9PQ0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIDwvcHJvdG9jb2w+CiA8L3ZlcmlmeT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDEwOTIgYi90ZXN0cy9kYXRhL3Rlc3QxMDkyCmluZGV4IGFkZWY0MzIuLmNlODQzZjAgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDEwOTIKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTA5MgpAQCAtNDksNyArNDksNiBAQAogR0VUIGZ0cDovLyVIT1NUSVA6JUhUVFBQT1JUL3dlL3dhbnQvdGhhdC9wYWdlLzEwOTI7dHlwZT1pIEhUVFAvMS4xDQogSG9zdDogJUhPU1RJUDolSFRUUFBPUlQNCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiA8L3Byb3RvY29sPgogPC92ZXJpZnk+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxMDkzIGIvdGVzdHMvZGF0YS90ZXN0MTA5MwppbmRleCBkYmNmZDlmLi4yMDg3YzgyIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QxMDkzCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDEwOTMKQEAgLTM3LDggKzM3LDExIEBACiA8dmVyaWZ5PgogPHByb3RvY29sPgogb3Bjb2RlOiAxCi1maWxlbmFtZTogLzEwOTMKIG1vZGU6IG9jdGV0Cit0c2l6ZTogMAorYmxrc2l6ZTogNTEyCit0aW1lb3V0OiA2CitmaWxlbmFtZTogLzEwOTMKIDwvcHJvdG9jb2w+CiA8L3ZlcmlmeT4KIDwvdGVzdGNhc2U+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxMDk0IGIvdGVzdHMvZGF0YS90ZXN0MTA5NAppbmRleCAyOTk2NTUwLi45MTMxNzIyIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QxMDk0CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDEwOTQKQEAgLTQzLDggKzQzLDExIEBACiA8dmVyaWZ5PgogPHByb3RvY29sPgogb3Bjb2RlOiAxCi1maWxlbmFtZTogLzEwOTQKIG1vZGU6IG5ldGFzY2lpCit0c2l6ZTogMAorYmxrc2l6ZTogNTEyCit0aW1lb3V0OiA2CitmaWxlbmFtZTogLzEwOTQKIDwvcHJvdG9jb2w+CiA8L3ZlcmlmeT4KIDwvdGVzdGNhc2U+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxMDk3IGIvdGVzdHMvZGF0YS90ZXN0MTA5NwppbmRleCAzYjczM2E1Li44MWVhODU1IDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QxMDk3CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDEwOTcKQEAgLTY3LDcgKzY3LDYgQEAKIEhvc3Q6IHRlc3QuYS5nYWxheHkuZmFyLmZhci5hd2F5LjEwOTc6JUhUVFBQT1JUDQogUHJveHktQXV0aG9yaXphdGlvbjogTlRMTSBUbFJNVFZOVFVBQUJBQUFBQm9JSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBPQ0KIFVzZXItQWdlbnQ6IGN1cmwvNy4xOS41LUNWUyAoaTY4Ni1wYy1saW51eC1nbnUpIGxpYmN1cmwvNy4xOS41LUNWUyBPcGVuU1NMLzAuOS44ZyB6bGliLzEuMi4zLjMgYy1hcmVzLzEuNi4xLUNWUyBsaWJpZG4vMS4xMiBsaWJzc2gyLzEuMC4xX0NWUw0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiBQT1NUIC8xMDk3IEhUVFAvMS4xDQogVXNlci1BZ2VudDogY3VybC83LjE5LjUtQ1ZTIChpNjg2LXBjLWxpbnV4LWdudSkgbGliY3VybC83LjE5LjUtQ1ZTIE9wZW5TU0wvMC45LjhnIHpsaWIvMS4yLjMuMyBjLWFyZXMvMS42LjEtQ1ZTIGxpYmlkbi8xLjEyIGxpYnNzaDIvMS4wLjFfQ1ZTDQpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTA5OCBiL3Rlc3RzL2RhdGEvdGVzdDEwOTgKaW5kZXggOTgwNTY0OC4uNzBhNmYzOSAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MTA5OAorKysgYi90ZXN0cy9kYXRhL3Rlc3QxMDk4CkBAIC00OSwxMiArNDksMTAgQEAKIEdFVCBmdHA6Ly9mdHAtc2l0ZS9tb28vMTA5OCBIVFRQLzEuMQ0KIEhvc3Q6IGZ0cC1zaXRlOjIxDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogR0VUIGZ0cDovL2Z0cC1zaXRlL21vby8xMDk4IEhUVFAvMS4xDQogSG9zdDogZnRwLXNpdGU6MjENCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiA8L3Byb3RvY29sPgogPHN0ZG91dD4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDEwOTkgYi90ZXN0cy9kYXRhL3Rlc3QxMDk5CmluZGV4IGNkZTQwMzkuLjdhYWNjMTEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDEwOTkKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTA5OQpAQCAtMzIsMTEgKzMyLDE3IEBACiA8dmVyaWZ5PgogPHByb3RvY29sPgogb3Bjb2RlOiAxCittb2RlOiBvY3RldAordHNpemU6IDAKK2Jsa3NpemU6IDUxMgordGltZW91dDogNgogZmlsZW5hbWU6IGFuL2ludmFsaWQtZmlsZQotbW9kZTogb2N0ZXQKIG9wY29kZTogMQotZmlsZW5hbWU6IC8xMDk5CiBtb2RlOiBvY3RldAordHNpemU6IDAKK2Jsa3NpemU6IDUxMgordGltZW91dDogNgorZmlsZW5hbWU6IC8xMDk5CiA8L3Byb3RvY29sPgogPHN0ZG91dD4KIGRhdGEgZm9yIDEwOTkKZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDExMDQgYi90ZXN0cy9kYXRhL3Rlc3QxMTA0CmluZGV4IDIxZWZlM2MuLjRkZjgxYTEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDExMDQKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTEwNApAQCAtNzIsMTIgKzcyLDEwIEBACiBHRVQgaHR0cDovLyVIT1NUSVA6JUhUVFBQT1JUL3dhbnQvMTEwNCBIVFRQLzEuMQ0KIEhvc3Q6ICVIT1NUSVA6JUhUVFBQT1JUDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogR0VUIGh0dHA6Ly8lSE9TVElQOiVIVFRQUE9SVC93YW50L2RhdGEvMTEwNDAwMDIgSFRUUC8xLjENCiBIb3N0OiAlSE9TVElQOiVIVFRQUE9SVA0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIENvb2tpZTogdGVzdDI9dHJ1ZQ0KIA0KIDwvcHJvdG9jb2w+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxMTA1IGIvdGVzdHMvZGF0YS90ZXN0MTEwNQppbmRleCA5NTY0Nzc1Li43NmFjNDUwIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QxMTA1CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDExMDUKQEAgLTU1LDcgKzU1LDcgQEAKIDwvcHJvdG9jb2w+CiA8ZmlsZSBuYW1lPSJsb2cvY29va2llMTEwNS50eHQiIG1vZGU9InRleHQiPgogIyBOZXRzY2FwZSBIVFRQIENvb2tpZSBGaWxlCi0jIGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9odHRwLWNvb2tpZXMuaHRtbAorIyBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2h0dHAtY29va2llcy5odG1sCiAjIFRoaXMgZmlsZSB3YXMgZ2VuZXJhdGVkIGJ5IGxpYmN1cmwhIEVkaXQgYXQgeW91ciBvd24gcmlzay4KIAogMTI3LjAuMC4xCUZBTFNFCS93ZS93YW50LwlGQUxTRQkwCWZvb2JhcgluYW1lCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxMTA2IGIvdGVzdHMvZGF0YS90ZXN0MTEwNgppbmRleCAwYzZiZWMxLi5hMmFkYmJiIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QxMTA2CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDExMDYKQEAgLTUwLDcgKzUwLDYgQEAKIEdFVCBmdHA6Ly8lSE9TVElQOjIzNDU2LzExMDYgSFRUUC8xLjENCiBIb3N0OiAlSE9TVElQOjIzNDU2DQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogPC9wcm90b2NvbD4KIDwvdmVyaWZ5PgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTEzNSBiL3Rlc3RzL2RhdGEvdGVzdDExMzUKaW5kZXggOGZjZTU2NS4uOTYwYWFkZSAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MTEzNQorKysgYi90ZXN0cy9kYXRhL3Rlc3QxMTM1CkBAIC04Nyw2ICs4Nyw4IEBACiBDVVJMX0VYVEVSTiBDVVJMTWNvZGUgY3VybF9tdWx0aV90aW1lb3V0KENVUkxNICptdWx0aV9oYW5kbGUsCiBDVVJMX0VYVEVSTiBDVVJMTWNvZGUgY3VybF9tdWx0aV9zZXRvcHQoQ1VSTE0gKm11bHRpX2hhbmRsZSwKIENVUkxfRVhURVJOIENVUkxNY29kZSBjdXJsX211bHRpX2Fzc2lnbihDVVJMTSAqbXVsdGlfaGFuZGxlLAorQ1VSTF9FWFRFUk4gY2hhciAqY3VybF9wdXNoaGVhZGVyX2J5bnVtKHN0cnVjdCBjdXJsX3B1c2hoZWFkZXJzICpoLAorQ1VSTF9FWFRFUk4gY2hhciAqY3VybF9wdXNoaGVhZGVyX2J5bmFtZShzdHJ1Y3QgY3VybF9wdXNoaGVhZGVycyAqaCwKIDwvc3Rkb3V0PgogPC92ZXJpZnk+CiAKZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDExMzYgYi90ZXN0cy9kYXRhL3Rlc3QxMTM2Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzMzI3ZTgKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9kYXRhL3Rlc3QxMTM2CkBAIC0wLDAgKzEsNjQgQEAKKzx0ZXN0Y2FzZT4KKzxpbmZvPgorPGtleXdvcmRzPgorSFRUUAorSFRUUCBHRVQKK0hUVFAgcHJveHkKK2Nvb2tpZXMKK2Nvb2tpZWphcgorUFNMCis8L2tleXdvcmRzPgorPC9pbmZvPgorCisjIFNlcnZlci1zaWRlCis8cmVwbHk+Cis8ZGF0YT4KK0hUVFAvMS4xIDIwMCBPSworRGF0ZTogVGh1LCAwOSBOb3YgMjAxMCAxNDo0OTowMCBHTVQKK1NlcnZlcjogdGVzdC1zZXJ2ZXIvZmFrZQorQ29udGVudC1MZW5ndGg6IDQKK0NvbnRlbnQtVHlwZTogdGV4dC9odG1sCitGdW5ueS1oZWFkOiB5ZXN5ZXMKK1NldC1Db29raWU6IHRlc3QxPWZvcmJpZGRlbjE7IGRvbWFpbj1leGFtcGxlLmNrOyBwYXRoPS87CitTZXQtQ29va2llOiB0ZXN0Mj1hbGxvd2VkMjsgZG9tYWluPXd3dy5leGFtcGxlLmNrOyBwYXRoPS87CitTZXQtQ29va2llOiB0ZXN0Mz1mb3JiaWRkZW4zOyBkb21haW49Y2s7IHBhdGg9LzsKK1NldC1Db29raWU6IHRlc3Q0PWFsbG93ZWQ0OyBkb21haW49d3d3LmNrOyBwYXRoPS87CitTZXQtQ29va2llOiB0ZXN0NT1mb3JiaWRkZW41OyBkb21haW49ei0xLmNvbXB1dGUtMS5hbWF6b25hd3MuY29tOyBwYXRoPS87CisKK2JvbworPC9kYXRhPgorPC9yZXBseT4KKworIyBDbGllbnQtc2lkZQorPGNsaWVudD4KKzxmZWF0dXJlcz4KK1BTTAorPC9mZWF0dXJlcz4KKzxzZXJ2ZXI+CitodHRwCis8L3NlcnZlcj4KKzxuYW1lPgorQ2hlY2sgY29va2llcyBhZ2FpbnN0IFBTTAorPC9uYW1lPgorPHNldGVudj4KK1RaPUdNVAorPC9zZXRlbnY+Cis8Y29tbWFuZD4KK2h0dHA6Ly93d3cuZXhhbXBsZS5jay8xMTM2IGh0dHA6Ly93d3cuY2svMTEzNiBodHRwOi8vei0xLmNvbXB1dGUtMS5hbWF6b25hd3MuY29tLzExMzYgLWIgbm9uZSAtYyBsb2cvamFyMTEzNi50eHQgLXggJUhPU1RJUDolSFRUUFBPUlQKKzwvY29tbWFuZD4KKworPC9jbGllbnQ+CisKKyMgVmVyaWZ5IGRhdGEgYWZ0ZXIgdGhlIHRlc3QgaGFzIGJlZW4gInNob3QiCis8dmVyaWZ5PgorPGZpbGUgbmFtZT0ibG9nL2phcjExMzYudHh0IiBtb2RlPSJ0ZXh0Ij4KKyMgTmV0c2NhcGUgSFRUUCBDb29raWUgRmlsZQorIyBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2h0dHAtY29va2llcy5odG1sCisjIFRoaXMgZmlsZSB3YXMgZ2VuZXJhdGVkIGJ5IGxpYmN1cmwhIEVkaXQgYXQgeW91ciBvd24gcmlzay4KKworLnd3dy5leGFtcGxlLmNrCVRSVUUJLwlGQUxTRQkwCXRlc3QyCWFsbG93ZWQyCisud3d3LmNrCVRSVUUJLwlGQUxTRQkwCXRlc3Q0CWFsbG93ZWQ0Cisuei0xLmNvbXB1dGUtMS5hbWF6b25hd3MuY29tCVRSVUUJLwlGQUxTRQkwCXRlc3Q1CWZvcmJpZGRlbjUKKzwvZmlsZT4KKzwvdmVyaWZ5PgorPC90ZXN0Y2FzZT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDExMzcgYi90ZXN0cy9kYXRhL3Rlc3QxMTM3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyYmZjYmEKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9kYXRhL3Rlc3QxMTM3CkBAIC0wLDAgKzEsNTIgQEAKKzx0ZXN0Y2FzZT4KKzxpbmZvPgorPGtleXdvcmRzPgorRlRQCitQQVNWCitSRVRSCistLWlnbm9yZS1jb250ZW50LWxlbmd0aAorPC9rZXl3b3Jkcz4KKzwvaW5mbz4KKyMgU2VydmVyLXNpZGUKKzxyZXBseT4KKzxkYXRhPgorZGF0YQorICAgIHRvCisgICAgICBzZWUKK3RoYXQgRlRQCit3b3JrcworICBzbyBkb2VzIGl0PworPC9kYXRhPgorPHNlcnZlcmNtZD4KK1JFUExZIEVQU1YgNTAwIG5vIHN1Y2ggY29tbWFuZAorPC9zZXJ2ZXJjbWQ+Cis8L3JlcGx5PgorCisjIENsaWVudC1zaWRlCis8Y2xpZW50PgorPHNlcnZlcj4KK2Z0cAorPC9zZXJ2ZXI+CisgPG5hbWU+CitGVFAgUkVUUiAtLWlnbm9yZS1jb250ZW50LWxlbmd0aAorIDwvbmFtZT4KKyA8Y29tbWFuZD4KK2Z0cDovLyVIT1NUSVA6JUZUUFBPUlQvMTEzNyAtLWlnbm9yZS1jb250ZW50LWxlbmd0aAorPC9jb21tYW5kPgorCis8L2NsaWVudD4KKworIyBWZXJpZnkgZGF0YSBhZnRlciB0aGUgdGVzdCBoYXMgYmVlbiAic2hvdCIKKzx2ZXJpZnk+Cis8cHJvdG9jb2w+CitVU0VSIGFub255bW91cw0KK1BBU1MgZnRwQGV4YW1wbGUuY29tDQorUFdEDQorRVBTVg0KK1BBU1YNCitUWVBFIEkNCitSRVRSIDExMzcNCitRVUlUDQorPC9wcm90b2NvbD4KKzwvdmVyaWZ5PgorPC90ZXN0Y2FzZT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDExMzggYi90ZXN0cy9kYXRhL3Rlc3QxMTM4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjOTFkMjAKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9kYXRhL3Rlc3QxMTM4CkBAIC0wLDAgKzEsNzQgQEAKKzx0ZXN0Y2FzZT4KKzxpbmZvPgorPGtleXdvcmRzPgorSFRUUAorSFRUUCBHRVQKK2ZvbGxvd2xvY2F0aW9uCis8L2tleXdvcmRzPgorPC9pbmZvPgorIworIyBTZXJ2ZXItc2lkZQorPHJlcGx5PgorPGRhdGE+CitIVFRQLzEuMSAzMDIgT0sgc3dzY2xvc2UNCitMb2NhdGlvbjogLi4vbW9vLmh0bWwvP25hbWU92KLYutin2LIt2LPZhS3Ystiv2KfbjNuMLdin2LIt2KjYp9iy2KfYsS3ZvtmI2YQmdGVzdGNhc2U9LzExMzgwMDAyICAgIA0KK0RhdGU6IFRodSwgMDkgTm92IDIwMTAgMTQ6NDk6MDAgR01UDQorQ29ubmVjdGlvbjogY2xvc2UNCisNCis8L2RhdGE+Cis8ZGF0YTI+CitIVFRQLzEuMSAyMDAgT0sgc3dzY2xvc2UNCitMb2NhdGlvbjogdGhpcyBzaG91bGQgYmUgaWdub3JlZA0KK0RhdGU6IFRodSwgMDkgTm92IDIwMTAgMTQ6NDk6MDAgR01UDQorQ29ubmVjdGlvbjogY2xvc2UNCisNCitib2R5Cis8L2RhdGEyPgorPGRhdGFjaGVjaz4KK0hUVFAvMS4xIDMwMiBPSyBzd3NjbG9zZQ0KK0xvY2F0aW9uOiAuLi9tb28uaHRtbC8/bmFtZT3Yoti62KfYsi3Ys9mFLdiy2K/Yp9uM24wt2KfYsi3YqNin2LLYp9ixLdm+2YjZhCZ0ZXN0Y2FzZT0vMTEzODAwMDIgICAgDQorRGF0ZTogVGh1LCAwOSBOb3YgMjAxMCAxNDo0OTowMCBHTVQNCitDb25uZWN0aW9uOiBjbG9zZQ0KKw0KK0hUVFAvMS4xIDIwMCBPSyBzd3NjbG9zZQ0KK0xvY2F0aW9uOiB0aGlzIHNob3VsZCBiZSBpZ25vcmVkDQorRGF0ZTogVGh1LCAwOSBOb3YgMjAxMCAxNDo0OTowMCBHTVQNCitDb25uZWN0aW9uOiBjbG9zZQ0KKw0KK2JvZHkKKzwvZGF0YWNoZWNrPgorPC9yZXBseT4KKworIworIyBDbGllbnQtc2lkZQorPGNsaWVudD4KKzxzZXJ2ZXI+CitodHRwCis8L3NlcnZlcj4KKyA8bmFtZT4KK0hUVFAgcmVkaXJlY3Qgd2l0aCBVVEYtOCBjaGFyYWN0ZXJzCisgPC9uYW1lPgorIDxjb21tYW5kPgoraHR0cDovLyVIT1NUSVA6JUhUVFBQT1JUL3dlL2FyZS9hbGwvdHdpdHMvMTEzOCAtTAorPC9jb21tYW5kPgorPC9jbGllbnQ+CisKKyMKKyMgVmVyaWZ5IGRhdGEgYWZ0ZXIgdGhlIHRlc3QgaGFzIGJlZW4gInNob3QiCis8dmVyaWZ5PgorPHN0cmlwPgorXlVzZXItQWdlbnQ6LioKKzwvc3RyaXA+Cis8cHJvdG9jb2w+CitHRVQgL3dlL2FyZS9hbGwvdHdpdHMvMTEzOCBIVFRQLzEuMQ0KK0hvc3Q6ICVIT1NUSVA6JUhUVFBQT1JUDQorQWNjZXB0OiAqLyoNCisNCitHRVQgL3dlL2FyZS9hbGwvbW9vLmh0bWwvP25hbWU9JWQ4JWEyJWQ4JWJhJWQ4JWE3JWQ4JWIyLSVkOCViMyVkOSU4NS0lZDglYjIlZDglYWYlZDglYTclZGIlOGMlZGIlOGMtJWQ4JWE3JWQ4JWIyLSVkOCVhOCVkOCVhNyVkOCViMiVkOCVhNyVkOCViMS0lZDklYmUlZDklODglZDklODQmdGVzdGNhc2U9LzExMzgwMDAyIEhUVFAvMS4xDQorVXNlci1BZ2VudDogY3VybC83LjEwIChpNjg2LXBjLWxpbnV4LWdudSkgbGliY3VybC83LjEwIE9wZW5TU0wvMC45LjZjIGlwdjYgemxpYi8xLjEuMw0KK0hvc3Q6ICVIT1NUSVA6JUhUVFBQT1JUDQorQWNjZXB0OiAqLyoNCisNCis8L3Byb3RvY29sPgorPC92ZXJpZnk+Cis8L3Rlc3RjYXNlPgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTEzOSBiL3Rlc3RzL2RhdGEvdGVzdDExMzkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzBmNzMwYwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDExMzkKQEAgLTAsMCArMSwyNiBAQAorPHRlc3RjYXNlPgorPGluZm8+Cis8a2V5d29yZHM+Citzb3VyY2UgYW5hbHlzaXMKK3N5bWJvbHMtaW4tdmVyc2lvbnMKK2RvY3VtZW50YXRpb24KKzwva2V5d29yZHM+Cis8L2luZm8+CisKKyMKKyMgQ2xpZW50LXNpZGUKKzxjbGllbnQ+Cis8c2VydmVyPgorbm9uZQorPC9zZXJ2ZXI+CisKKyA8bmFtZT4KK1ZlcmlmeSB0aGF0IGFsbCBsaWJjdXJsIG9wdGlvbnMgaGF2ZSBtYW4gcGFnZXMKKyA8L25hbWU+CisKKzxjb21tYW5kIHR5cGU9InBlcmwiPgorJVNSQ0RJUi9tYW5wYWdlLXNjYW4ucGwgJVNSQ0RJUi8uLgorPC9jb21tYW5kPgorPC9jbGllbnQ+CisKKzwvdGVzdGNhc2U+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxMTQwIGIvdGVzdHMvZGF0YS90ZXN0MTE0MApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTQ1OGJlCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTE0MApAQCAtMCwwICsxLDI2IEBACis8dGVzdGNhc2U+Cis8aW5mbz4KKzxrZXl3b3Jkcz4KK3NvdXJjZSBhbmFseXNpcworc3ltYm9scy1pbi12ZXJzaW9ucworZG9jdW1lbnRhdGlvbgorPC9rZXl3b3Jkcz4KKzwvaW5mbz4KKworIworIyBDbGllbnQtc2lkZQorPGNsaWVudD4KKzxzZXJ2ZXI+Citub25lCis8L3NlcnZlcj4KKworIDxuYW1lPgorVmVyaWZ5IHRoZSBucm9mZiBvZiBtYW4gcGFnZXMKKyA8L25hbWU+CisKKzxjb21tYW5kIHR5cGU9InBlcmwiPgorJVNSQ0RJUi9ucm9mZi1zY2FuLnBsICVTUkNESVIvLi4vZG9jcy8gJVNSQ0RJUi8uLi9kb2NzL2xpYmN1cmwvKi4zICVTUkNESVIvLi4vZG9jcy9saWJjdXJsL29wdHMvKi4zICVTUkNESVIvLi4vZG9jcy8qLjEKKzwvY29tbWFuZD4KKzwvY2xpZW50PgorCis8L3Rlc3RjYXNlPgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTIxMyBiL3Rlc3RzL2RhdGEvdGVzdDEyMTMKaW5kZXggNzI5YTcwMy4uYmMxNDZiMCAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MTIxMworKysgYi90ZXN0cy9kYXRhL3Rlc3QxMjEzCkBAIC00MywxMCArNDMsOSBAQAogXlVzZXItQWdlbnQ6LioKIDwvc3RyaXA+CiA8cHJvdG9jb2w+Ci1HRVQgSFRUUDovL3dlLndhbnQudGhhdC5zaXRlLmNvbS4xMjEzLyBIVFRQLzEuMQ0KK0dFVCBodHRwOi8vd2Uud2FudC50aGF0LnNpdGUuY29tLjEyMTMvIEhUVFAvMS4xDQogSG9zdDogd2Uud2FudC50aGF0LnNpdGUuY29tLjEyMTMNCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiA8L3Byb3RvY29sPgogPC92ZXJpZnk+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxMjE0IGIvdGVzdHMvZGF0YS90ZXN0MTIxNAppbmRleCAzZWViM2UzLi5lNzAzZjdhIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QxMjE0CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDEyMTQKQEAgLTQ2LDcgKzQ2LDYgQEAKIEdFVCBodHRwOi8vd2Uud2FudC50aGF0LnNpdGUuY29tLjEyMTQvP21vbz1mb28gSFRUUC8xLjENCiBIb3N0OiB3ZS53YW50LnRoYXQuc2l0ZS5jb20uMTIxNA0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIDwvcHJvdG9jb2w+CiA8L3ZlcmlmeT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDEyMTUgYi90ZXN0cy9kYXRhL3Rlc3QxMjE1CmluZGV4IGY4YzUyYTkuLmUyMjU5MWMgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDEyMTUKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTIxNQpAQCAtOTIsMTQgKzkyLDEyIEBACiBBdXRob3JpemF0aW9uOiBOVExNIFRsUk1UVk5UVUFBQkFBQUFCb0lJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE9DQogVXNlci1BZ2VudDogY3VybC83LjMwLjAtREVWDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogR0VUIGh0dHA6Ly8lSE9TVElQOiVIVFRQUE9SVC8xMjE1IEhUVFAvMS4xDQogSG9zdDogJUhPU1RJUDolSFRUUFBPUlQNCiBBdXRob3JpemF0aW9uOiBOVExNIFRsUk1UVk5UVUFBREFBQUFHQUFZQUVBQUFBQ2VBSjRBV0FBQUFBQUFBQUQyQUFBQUNBQUlBUFlBQUFBSUFBZ0EvZ0FBQUFBQUFBQUFBQUFBQm9LQkFMOUxOVzUrbmt5SFpSbXlGYUwvTEo0eE1qTTBNakl6TkdVQ3loZ1E5aHc2ZVdBVDEzRWJEYTBCQVFBQUFBQUFBQUNBUHRYZXNaMEJNVEl6TkRJeU16UUFBQUFBQWdBRUFFTUFRd0FCQUJJQVJRQk1BRWtBVXdCQkFFSUFSUUJVQUVnQUJBQVlBR01BWXdBdUFHa0FZd0JsQUdRQVpRQjJBQzRBYmdCMUFBTUFMQUJsQUd3QWFRQnpBR0VBWWdCbEFIUUFhQUF1QUdNQVl3QXVBR2tBWXdCbEFHUUFaUUIyQUM0QWJnQjFBQUFBQUFBQUFBQUFkR1Z6ZEhWelpYSmpkWEpzYUc5emRBPT0NCiBVc2VyLUFnZW50OiBjdXJsLzcuMzAuMC1ERVYNCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiA8L3Byb3RvY29sPgogPC92ZXJpZnk+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxMjE2IGIvdGVzdHMvZGF0YS90ZXN0MTIxNgppbmRleCA1YmVkYTc5Li42ZTQ1YWM2IDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QxMjE2CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDEyMTYKQEAgLTUwLDEzICs1MCwxMSBAQAogR0VUIGh0dHA6Ly9leGFtcGxlLmZha2UvYy8xMjE2IEhUVFAvMS4xDQogSG9zdDogZXhhbXBsZS5mYWtlDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogQ29va2llOiBtb28yPWluZGVlZDsgbW9vMz1pbmRlZWQNCiANCiBHRVQgaHR0cDovL2JleGFtcGxlLmZha2UvYy8xMjE2IEhUVFAvMS4xDQogSG9zdDogYmV4YW1wbGUuZmFrZQ0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIDwvcHJvdG9jb2w+CiA8L3ZlcmlmeT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDEyMTggYi90ZXN0cy9kYXRhL3Rlc3QxMjE4CmluZGV4IDdkODY1NDcuLjljMmZjMDMgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDEyMTgKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTIxOApAQCAtMTQsNyArMTQsNyBAQAogPGRhdGE+CiBIVFRQLzEuMSAyMDAgT0sKIERhdGU6IFR1ZSwgMjUgU2VwIDIwMDEgMTk6Mzc6NDQgR01UCi1TZXQtQ29va2llOiBkb21haW49LmV4YW1wbGUuZmFrZTsgYnVnPWZpeGVkOworU2V0LUNvb2tpZTogYnVnPWZpeGVkOyBkb21haW49LmV4YW1wbGUuZmFrZTsKIENvbnRlbnQtTGVuZ3RoOiAyMQ0KIAogVGhpcyBzZXJ2ZXIgc2F5cyBtb28KQEAgLTQzLDE4ICs0MywxNSBAQAogR0VUIGh0dHA6Ly9leGFtcGxlLmZha2UvYy8xMjE4IEhUVFAvMS4xDQogSG9zdDogZXhhbXBsZS5mYWtlDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogR0VUIGh0dHA6Ly9leGFtcGxlLmZha2UvYy8xMjE4IEhUVFAvMS4xDQogSG9zdDogZXhhbXBsZS5mYWtlDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogQ29va2llOiBidWc9Zml4ZWQNCiANCiBHRVQgaHR0cDovL2JleGFtcGxlLmZha2UvYy8xMjE4IEhUVFAvMS4xDQogSG9zdDogYmV4YW1wbGUuZmFrZQ0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIDwvcHJvdG9jb2w+CiA8L3ZlcmlmeT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDEyMjggYi90ZXN0cy9kYXRhL3Rlc3QxMjI4CmluZGV4IGE3ZTU2YTcuLmQwYWY1MTcgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDEyMjgKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTIyOApAQCAtNDIsMTIgKzQyLDEwIEBACiBHRVQgaHR0cDovL2V4YW1wbGUuZmFrZS9ob2dlLzEyMjggSFRUUC8xLjENCiBIb3N0OiBleGFtcGxlLmZha2UNCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiBHRVQgaHR0cDovL2V4YW1wbGUuZmFrZS9ob2dlZ2UvIEhUVFAvMS4xDQogSG9zdDogZXhhbXBsZS5mYWtlDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogQ29va2llOiBwYXRoMT1yb290DQogDQogPC9wcm90b2NvbD4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDEyMzAgYi90ZXN0cy9kYXRhL3Rlc3QxMjMwCmluZGV4IDNjMWQzZDQuLjhjZTRjNGUgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDEyMzAKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTIzMApAQCAtNjksNyArNjksNiBAQAogPHByb3RvY29sPgogQ09OTkVDVCBbMTIzNDoxMjM0OjEyMzQ6OjRjZV06JUhUVFBQT1JUIEhUVFAvMS4xDQogSG9zdDogWzEyMzQ6MTIzNDoxMjM0Ojo0Y2VdOiVIVFRQUE9SVA0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiBHRVQgL3dhbnRlZC9wYWdlLzEyMzAgSFRUUC8xLjENCiBIb3N0OiBbMTIzNDoxMjM0OjEyMzQ6OjRjZV06JUhUVFBQT1JUDQpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTIzMiBiL3Rlc3RzL2RhdGEvdGVzdDEyMzIKaW5kZXggZWFkNDMzNi4uMWM1YmMyMCAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MTIzMgorKysgYi90ZXN0cy9kYXRhL3Rlc3QxMjMyCkBAIC01MywxMiArNTMsMTAgQEAKIEdFVCBodHRwOi8vdGVzdC5yZW1vdGUuaGF4eC5zZS4xMjMyOjg5OTAvaGVqL2J1dC8xMjMyP3N0dXBpZD1tZS8uLi8xMjMyIEhUVFAvMS4xDQogSG9zdDogdGVzdC5yZW1vdGUuaGF4eC5zZS4xMjMyOjg5OTANCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiBHRVQgaHR0cDovL3Rlc3QucmVtb3RlLmhheHguc2UuMTIzMjo4OTkwL2hlai9idXQvMTIzMjAwMDEgSFRUUC8xLjENCiBIb3N0OiB0ZXN0LnJlbW90ZS5oYXh4LnNlLjEyMzI6ODk5MA0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIDwvcHJvdG9jb2w+CiA8L3ZlcmlmeT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDEyMzggYi90ZXN0cy9kYXRhL3Rlc3QxMjM4CmluZGV4IDE4NTkzMzkuLjRjOTc2YzcgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDEyMzgKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTIzOApAQCAtMzgsOCArMzgsMTEgQEAKIDx2ZXJpZnk+CiA8cHJvdG9jb2w+CiBvcGNvZGU6IDEKLWZpbGVuYW1lOiAvMTIzOAogbW9kZTogb2N0ZXQKK3RzaXplOiAwCitibGtzaXplOiA1MTIKK3RpbWVvdXQ6IDYKK2ZpbGVuYW1lOiAvMTIzOAogPC9wcm90b2NvbD4KICMgMjggPSBDVVJMRV9PUEVSQVRJT05fVElNRURPVVQKIDxlcnJvcmNvZGU+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxMjQxIGIvdGVzdHMvZGF0YS90ZXN0MTI0MQppbmRleCBhYWE1Njg4Li41YTEyNzMyIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QxMjQxCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDEyNDEKQEAgLTUyLDEyICs1MiwxMCBAQAogR0VUIGh0dHA6Ly90ZXN0LnJlbW90ZS5oYXh4LnNlLjEyNDE6ODk5MC8uLi8uLi9oZWovYnV0L3doby8uLi8xMjQxP3N0dXBpZD1tZS8uLi8xMjQxIEhUVFAvMS4xDQogSG9zdDogdGVzdC5yZW1vdGUuaGF4eC5zZS4xMjQxOjg5OTANCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiBHRVQgaHR0cDovL3Rlc3QucmVtb3RlLmhheHguc2UuMTI0MTo4OTkwLy4uLy4uL2hlai9idXQvd2hvLy4uLzEyNDEwMDAxIEhUVFAvMS4xDQogSG9zdDogdGVzdC5yZW1vdGUuaGF4eC5zZS4xMjQxOjg5OTANCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiA8L3Byb3RvY29sPgogPC92ZXJpZnk+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxMjQyIGIvdGVzdHMvZGF0YS90ZXN0MTI0MgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOGJjM2Q0Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTI0MgpAQCAtMCwwICsxLDQzIEBACis8dGVzdGNhc2U+Cis8aW5mbz4KKzxrZXl3b3Jkcz4KK1RGVFAKK1RGVFAgUlJRCis8L2tleXdvcmRzPgorPC9pbmZvPgorCisjCisjIFNlcnZlci1zaWRlCis8cmVwbHk+Cis8ZGF0YT4KK2EgY2h1bmsgb2YKK2RhdGEKK3JldHVybmVkCisgdG8gY2xpZW50Cis8L2RhdGE+Cis8L3JlcGx5PgorCisjCisjIENsaWVudC1zaWRlCis8Y2xpZW50PgorPHNlcnZlcj4KK3RmdHAKKzwvc2VydmVyPgorIDxuYW1lPgorVEZUUCByZXRyaWV2ZSB3aXRob3V0IFRGVFAgb3B0aW9ucyByZXF1ZXN0cworIDwvbmFtZT4KKyA8Y29tbWFuZD4KK3RmdHA6Ly8lSE9TVElQOiVURlRQUE9SVC8vMTI0MiAtLXRmdHAtbm8tb3B0aW9ucyAtLXRyYWNlLWFzY2lpIGxvZy90cmFjZWl0Cis8L2NvbW1hbmQ+Cis8L2NsaWVudD4KKworIworIyBWZXJpZnkgcHNldWRvIHByb3RvY29sIGFmdGVyIHRoZSB0ZXN0IGhhcyBiZWVuICJzaG90IgorPHZlcmlmeT4KKzxwcm90b2NvbD4KK29wY29kZTogMQorbW9kZTogb2N0ZXQKK2ZpbGVuYW1lOiAvMTI0MgorPC9wcm90b2NvbD4KKzwvdmVyaWZ5PgorPC90ZXN0Y2FzZT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDEyNDMgYi90ZXN0cy9kYXRhL3Rlc3QxMjQzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzMDNhNWQKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9kYXRhL3Rlc3QxMjQzCkBAIC0wLDAgKzEsNDQgQEAKKzx0ZXN0Y2FzZT4KKzxpbmZvPgorPGtleXdvcmRzPgorVEZUUAorVEZUUCBXUlEKKzwva2V5d29yZHM+Cis8L2luZm8+CisKKyMKKyMgQ2xpZW50LXNpZGUKKzxjbGllbnQ+Cis8c2VydmVyPgordGZ0cAorPC9zZXJ2ZXI+CisgPG5hbWU+CitURlRQIHNlbmQgd2l0aG91dCBURlRQIG9wdGlvbnMgcmVxdWVzdHMKKyA8L25hbWU+CisgPGNvbW1hbmQ+CistVCBsb2cvdGVzdDEyNDMudHh0IHRmdHA6Ly8lSE9TVElQOiVURlRQUE9SVC8vIC0tdGZ0cC1uby1vcHRpb25zIC0tdHJhY2UtYXNjaWkgbG9nL3RyYWNlaXQKKzwvY29tbWFuZD4KKzxmaWxlIG5hbWU9ImxvZy90ZXN0MTI0My50eHQiPgorYSBjaHVuayBvZgorZGF0YQorc2VudAorIHRvIHNlcnZlcgorPC9maWxlPgorPC9jbGllbnQ+CisKKyMKKyMgVmVyaWZ5IHBzZXVkbyBwcm90b2NvbCBhZnRlciB0aGUgdGVzdCBoYXMgYmVlbiAic2hvdCIKKzx2ZXJpZnk+Cis8dXBsb2FkPgorYSBjaHVuayBvZgorZGF0YQorc2VudAorIHRvIHNlcnZlcgorPC91cGxvYWQ+Cis8cHJvdG9jb2w+CitvcGNvZGU6IDIKK21vZGU6IG9jdGV0CitmaWxlbmFtZTogL3Rlc3QxMjQzLnR4dAorPC9wcm90b2NvbD4KKzwvdmVyaWZ5PgorPC90ZXN0Y2FzZT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDEzMTIgYi90ZXN0cy9kYXRhL3Rlc3QxMzEyCmluZGV4IDkyMTQ0MDEuLmJlZDQ5MmMgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDEzMTIKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTMxMgpAQCAtNDAsNyArNDAsNyBAQAogQ1VSTF9URVNURElSPSVQV0QvbG9nCiA8L3NldGVudj4KIDxjb21tYW5kIG9wdGlvbj0ibm8tb3V0cHV0LG5vLWluY2x1ZGUiPgotaHR0cDovLyVIT1NUSVA6JUhUVFBQT1JULzEzMTIgLUogLU8KKyVIT1NUSVA6JUhUVFBQT1JULzEzMTIgLUogLU8KIDwvY29tbWFuZD4KIDwvY2xpZW50PgogCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxMzE0IGIvdGVzdHMvZGF0YS90ZXN0MTMxNAppbmRleCAwNzhhZGE2Li4xMWUxMjhhIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QxMzE0CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDEzMTQKQEAgLTY3LDEyICs2NywxMCBAQAogR0VUIGh0dHA6Ly9maXJzdHBsYWNlLmV4YW1wbGUuY29tL3dhbnQvMTMxNCBIVFRQLzEuMQ0KIEhvc3Q6IGZpcnN0cGxhY2UuZXhhbXBsZS5jb20NCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiBHRVQgaHR0cDovL3NvbWV3aGVyZS5leGFtcGxlLmNvbS9yZXBseS8xMzE0IEhUVFAvMS4xDQogSG9zdDogc29tZXdoZXJlLmV4YW1wbGUuY29tDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogPC9wcm90b2NvbD4KIDwvdmVyaWZ5PgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTMxOSBiL3Rlc3RzL2RhdGEvdGVzdDEzMTkKaW5kZXggMDUyMGIxYi4uYTk3ZGE5YyAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MTMxOQorKysgYi90ZXN0cy9kYXRhL3Rlc3QxMzE5CkBAIC03OSw3ICs3OSw2IEBACiBDT05ORUNUIHBvcC4xMzE5OiVQT1AzUE9SVCBIVFRQLzEuMQ0KIEhvc3Q6IHBvcC4xMzE5OiVQT1AzUE9SVA0KIFVzZXItQWdlbnQ6IGN1cmwvNy4yNC4wLURFViAoaTY4Ni1wYy1saW51eC1nbnUpIGxpYmN1cmwvNy4yNC4wLURFViBPcGVuU1NMLzEuMC4wZSB6bGliLzEuMi4zLjQgYy1hcmVzLzEuNy42LURFViBsaWJpZG4vMS4yMyBsaWJzc2gyLzEuNC4wX0RFViBsaWJydG1wLzIuMmUNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogPC9wcm94eT4KIDwvdmVyaWZ5PgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTMyMCBiL3Rlc3RzL2RhdGEvdGVzdDEzMjAKaW5kZXggN2ExNWY4MC4uNjA5ZjRjMiAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MTMyMAorKysgYi90ZXN0cy9kYXRhL3Rlc3QxMzIwCkBAIC02Niw3ICs2Niw2IEBACiBDT05ORUNUIHNtdHAuMTMyMDolU01UUFBPUlQgSFRUUC8xLjENCiBIb3N0OiBzbXRwLjEzMjA6JVNNVFBQT1JUDQogVXNlci1BZ2VudDogY3VybC83LjI0LjAtREVWIChpNjg2LXBjLWxpbnV4LWdudSkgbGliY3VybC83LjI0LjAtREVWIE9wZW5TU0wvMS4wLjBlIHpsaWIvMS4yLjMuNCBjLWFyZXMvMS43LjYtREVWIGxpYmlkbi8xLjIzIGxpYnNzaDIvMS40LjBfREVWIGxpYnJ0bXAvMi4yZQ0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiA8L3Byb3h5PgogPC92ZXJpZnk+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxMzIxIGIvdGVzdHMvZGF0YS90ZXN0MTMyMQppbmRleCAyNjZmZDg4Li5iNWFkMjc3IDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QxMzIxCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDEzMjEKQEAgLTc1LDcgKzc1LDYgQEAKIENPTk5FQ1QgaW1hcC4xMzIxOiVJTUFQUE9SVCBIVFRQLzEuMQ0KIEhvc3Q6IGltYXAuMTMyMTolSU1BUFBPUlQNCiBVc2VyLUFnZW50OiBjdXJsLzcuMjQuMC1ERVYgKGk2ODYtcGMtbGludXgtZ251KSBsaWJjdXJsLzcuMjQuMC1ERVYgT3BlblNTTC8xLjAuMGUgemxpYi8xLjIuMy40IGMtYXJlcy8xLjcuNi1ERVYgbGliaWRuLzEuMjMgbGlic3NoMi8xLjQuMF9ERVYgbGlicnRtcC8yLjJlDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIDwvcHJveHk+CiA8L3ZlcmlmeT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDEzMjIgYi90ZXN0cy9kYXRhL3Rlc3QxMzIyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmMTBhOGQKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9kYXRhL3Rlc3QxMzIyCkBAIC0wLDAgKzEsNTcgQEAKKzx0ZXN0Y2FzZT4KKzxpbmZvPgorPGtleXdvcmRzPgorSFRUUAorSFRUUCBHRVQKKy0tcmVzb2x2ZQordHJhaWxpbmcgZG90Cis8L2tleXdvcmRzPgorPC9pbmZvPgorCisjCisjIFNlcnZlci1zaWRlCis8cmVwbHk+Cis8ZGF0YT4KK0hUVFAvMS4xIDIwMCBPSworRGF0ZTogVGh1LCAwOSBOb3YgMjAxMCAxNDo0OTowMCBHTVQKK1NlcnZlcjogdGVzdC1zZXJ2ZXIvZmFrZQorTGFzdC1Nb2RpZmllZDogVHVlLCAxMyBKdW4gMjAwMCAxMjoxMDowMCBHTVQKK0VUYWc6ICIyMTAyNS1kYzctMzk0NjI0OTgiCitBY2NlcHQtUmFuZ2VzOiBieXRlcworQ29udGVudC1MZW5ndGg6IDYKK0Nvbm5lY3Rpb246IGNsb3NlCitDb250ZW50LVR5cGU6IHRleHQvaHRtbAorRnVubnktaGVhZDogeWVzeWVzCisKKy1mb28tCis8L2RhdGE+Cis8L3JlcGx5PgorCisjCisjIENsaWVudC1zaWRlCis8Y2xpZW50PgorPHNlcnZlcj4KK2h0dHAKKzwvc2VydmVyPgorPG5hbWU+CitIVFRQIHdpdGggLS1yZXNvbHZlIGFuZCBob3N0bmFtZSB3aXRoIHRyYWlsaW5nIGRvdAorPC9uYW1lPgorPGNvbW1hbmQ+CistLXJlc29sdmUgZXhhbXBsZS5jb206JUhUVFBQT1JUOiVIT1NUSVAgaHR0cDovL2V4YW1wbGUuY29tLjolSFRUUFBPUlQvMTMyMgorPC9jb21tYW5kPgorPC9jbGllbnQ+CisKKyMKKyMgVmVyaWZ5IGRhdGEgYWZ0ZXIgdGhlIHRlc3QgaGFzIGJlZW4gInNob3QiCis8dmVyaWZ5PgorPHN0cmlwPgorXlVzZXItQWdlbnQ6LioKKzwvc3RyaXA+Cis8cHJvdG9jb2w+CitHRVQgLzEzMjIgSFRUUC8xLjENCitIb3N0OiBleGFtcGxlLmNvbTolSFRUUFBPUlQNCitBY2NlcHQ6ICovKg0KKw0KKzwvcHJvdG9jb2w+Cis8L3ZlcmlmeT4KKzwvdGVzdGNhc2U+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxMzI2IGIvdGVzdHMvZGF0YS90ZXN0MTMyNgppbmRleCBiYjBjYmFjLi4yYmNmNjRiIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QxMzI2CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDEzMjYKQEAgLTMzLDcgKzMzLDcgQEAKIA0KIDwvc3RkaW4+CiAgPGNvbW1hbmQ+Ci10ZWxuZXQ6Ly8lSE9TVElQOiVIVFRQUE9SVAordGVsbmV0Oi8vJUhPU1RJUDolSFRUUFBPUlQgLS11cGxvYWQtZmlsZSAtCiA8L2NvbW1hbmQ+CiA8L2NsaWVudD4KIApkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTMzMSBiL3Rlc3RzL2RhdGEvdGVzdDEzMzEKaW5kZXggMzI5OWRmNC4uODM3ZWY4ZCAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MTMzMQorKysgYi90ZXN0cy9kYXRhL3Rlc3QxMzMxCkBAIC03NSwxMyArNzUsMTEgQEAKIEdFVCBodHRwOi8vei54LmNvbS8xMzMxIEhUVFAvMS4xDQogSG9zdDogei54LmNvbQ0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIEdFVCBodHRwOi8vei54LmNvbS8xMzMxIEhUVFAvMS4xDQogSG9zdDogei54LmNvbQ0KIFByb3h5LUF1dGhvcml6YXRpb246IEJhc2ljIGJYbHVZVzFsT20xNWNHRnpjM2R2Y21RPQ0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIENvb2tpZTogcHJveHljb29raWU9d2VpcmRvDQogDQogPC9wcm90b2NvbD4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDE0MDAgYi90ZXN0cy9kYXRhL3Rlc3QxNDAwCmluZGV4IDcyOTg5YzQuLjBlZTczNzAgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDE0MDAKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTQwMApAQCAtNDYsMTUgKzQ2LDE2IEBACiA8L3Byb3RvY29sPgogPHN0cmlwZmlsZT4KIHMvKFVTRVJBR0VOVCwgXCIpW15cIl0rLyR7MX1zdHJpcHBlZC8KLSMgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiBhbmQgU1NIX0tOT1dOSE9TVFMgdmFyeSB3aXRoIGNvbmZpZ3VyYXRpb25zIC0ganVzdAotIyBpZ25vcmUgdGhlbQorIyBDVVJMT1BUX1NTTF9WRVJJRllQRUVSLCBTU0hfS05PV05IT1NUUyBhbmQgSFRUUF9WRVJTSU9OIHZhcnkgd2l0aAorIyBjb25maWd1cmF0aW9ucyAtIGp1c3QgaWdub3JlIHRoZW0KICRfID0gJycgaWYgL0NVUkxPUFRfU1NMX1ZFUklGWVBFRVIvCiAkXyA9ICcnIGlmIC9DVVJMT1BUX1NTSF9LTk9XTkhPU1RTLworJF8gPSAnJyBpZiAvQ1VSTE9QVF9IVFRQX1ZFUlNJT04vCiA8L3N0cmlwZmlsZT4KIDxmaWxlIG5hbWU9ImxvZy90ZXN0MTQwMC5jIiBtb2RlPSJ0ZXh0Ij4KIC8qKioqKioqKiogU2FtcGxlIGNvZGUgZ2VuZXJhdGVkIGJ5IHRoZSBjdXJsIGNvbW1hbmQgbGluZSB0b29sICoqKioqKioqKioKICAqIEFsbCBjdXJsX2Vhc3lfc2V0b3B0KCkgb3B0aW9ucyBhcmUgZG9jdW1lbnRlZCBhdDoKLSAqIGh0dHA6Ly9jdXJsLmhheHguc2UvbGliY3VybC9jL2N1cmxfZWFzeV9zZXRvcHQuaHRtbAorICogaHR0cHM6Ly9jdXJsLmhheHguc2UvbGliY3VybC9jL2N1cmxfZWFzeV9zZXRvcHQuaHRtbAogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KICNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KIApkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTQwMSBiL3Rlc3RzL2RhdGEvdGVzdDE0MDEKaW5kZXggZDEwY2FjMi4uNjAyYjA5YSAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MTQwMQorKysgYi90ZXN0cy9kYXRhL3Rlc3QxNDAxCkBAIC01MywxNSArNTMsMTYgQEAKIA0KIDwvcHJvdG9jb2w+CiA8c3RyaXBmaWxlPgotIyBDVVJMT1BUX1NTTF9WRVJJRllQRUVSIGFuZCBTU0hfS05PV05IT1NUUyB2YXJ5IHdpdGggY29uZmlndXJhdGlvbnMgLSBqdXN0Ci0jIGlnbm9yZSB0aGVtCisjIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIsIFNTSF9LTk9XTkhPU1RTIGFuZCBIVFRQX1ZFUlNJT04gdmFyeSB3aXRoCisjIGNvbmZpZ3VyYXRpb25zIC0ganVzdCBpZ25vcmUgdGhlbQogJF8gPSAnJyBpZiAvQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUi8KICRfID0gJycgaWYgL0NVUkxPUFRfU1NIX0tOT1dOSE9TVFMvCiskXyA9ICcnIGlmIC9DVVJMT1BUX0hUVFBfVkVSU0lPTi8KIDwvc3RyaXBmaWxlPgogPGZpbGUgbmFtZT0ibG9nL3Rlc3QxNDAxLmMiIG1vZGU9InRleHQiPgogLyoqKioqKioqKiBTYW1wbGUgY29kZSBnZW5lcmF0ZWQgYnkgdGhlIGN1cmwgY29tbWFuZCBsaW5lIHRvb2wgKioqKioqKioqKgogICogQWxsIGN1cmxfZWFzeV9zZXRvcHQoKSBvcHRpb25zIGFyZSBkb2N1bWVudGVkIGF0OgotICogaHR0cDovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvY3VybF9lYXN5X3NldG9wdC5odG1sCisgKiBodHRwczovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvY3VybF9lYXN5X3NldG9wdC5odG1sCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgogCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxNDAyIGIvdGVzdHMvZGF0YS90ZXN0MTQwMgppbmRleCBjM2JmODM0Li4wYzIxOTllIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QxNDAyCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDE0MDIKQEAgLTUxLDE1ICs1MSwxNiBAQAogPHN0cmlwZmlsZT4KICMgY3VybCdzIGRlZmF1bHQgdXNlci1hZ2VudCB2YXJpZXMgd2l0aCB2ZXJzaW9uLCBsaWJyYXJpZXMgZXRjLgogcy8oVVNFUkFHRU5ULCBcIilbXlwiXSsvJHsxfXN0cmlwcGVkLwotIyBDVVJMT1BUX1NTTF9WRVJJRllQRUVSIGFuZCBTU0hfS05PV05IT1NUUyB2YXJ5IHdpdGggY29uZmlndXJhdGlvbnMgLSBqdXN0Ci0jIGlnbm9yZSB0aGVtCisjIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIsIFNTSF9LTk9XTkhPU1RTIGFuZCBIVFRQX1ZFUlNJT04gdmFyeSB3aXRoCisjIGNvbmZpZ3VyYXRpb25zIC0ganVzdCBpZ25vcmUgdGhlbQogJF8gPSAnJyBpZiAvQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUi8KICRfID0gJycgaWYgL0NVUkxPUFRfU1NIX0tOT1dOSE9TVFMvCiskXyA9ICcnIGlmIC9DVVJMT1BUX0hUVFBfVkVSU0lPTi8KIDwvc3RyaXBmaWxlPgogPGZpbGUgbmFtZT0ibG9nL3Rlc3QxNDAyLmMiIG1vZGU9InRleHQiPgogLyoqKioqKioqKiBTYW1wbGUgY29kZSBnZW5lcmF0ZWQgYnkgdGhlIGN1cmwgY29tbWFuZCBsaW5lIHRvb2wgKioqKioqKioqKgogICogQWxsIGN1cmxfZWFzeV9zZXRvcHQoKSBvcHRpb25zIGFyZSBkb2N1bWVudGVkIGF0OgotICogaHR0cDovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvY3VybF9lYXN5X3NldG9wdC5odG1sCisgKiBodHRwczovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvY3VybF9lYXN5X3NldG9wdC5odG1sCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgogCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxNDAzIGIvdGVzdHMvZGF0YS90ZXN0MTQwMwppbmRleCAzZWM3ZGQwLi45OGYyMzhmIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QxNDAzCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDE0MDMKQEAgLTQ4LDE1ICs0OCwxNiBAQAogPHN0cmlwZmlsZT4KICMgY3VybCdzIGRlZmF1bHQgdXNlci1hZ2VudCB2YXJpZXMgd2l0aCB2ZXJzaW9uLCBsaWJyYXJpZXMgZXRjLgogcy8oVVNFUkFHRU5ULCBcIilbXlwiXSsvJHsxfXN0cmlwcGVkLwotIyBDVVJMT1BUX1NTTF9WRVJJRllQRUVSIGFuZCBTU0hfS05PV05IT1NUUyB2YXJ5IHdpdGggY29uZmlndXJhdGlvbnMgLSBqdXN0Ci0jIGlnbm9yZSB0aGVtCisjIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIsIFNTSF9LTk9XTkhPU1RTIGFuZCBIVFRQX1ZFUlNJT04gdmFyeSB3aXRoCisjIGNvbmZpZ3VyYXRpb25zIC0ganVzdCBpZ25vcmUgdGhlbQogJF8gPSAnJyBpZiAvQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUi8KICRfID0gJycgaWYgL0NVUkxPUFRfU1NIX0tOT1dOSE9TVFMvCiskXyA9ICcnIGlmIC9DVVJMT1BUX0hUVFBfVkVSU0lPTi8KIDwvc3RyaXBmaWxlPgogPGZpbGUgbmFtZT0ibG9nL3Rlc3QxNDAzLmMiIG1vZGU9InRleHQiPgogLyoqKioqKioqKiBTYW1wbGUgY29kZSBnZW5lcmF0ZWQgYnkgdGhlIGN1cmwgY29tbWFuZCBsaW5lIHRvb2wgKioqKioqKioqKgogICogQWxsIGN1cmxfZWFzeV9zZXRvcHQoKSBvcHRpb25zIGFyZSBkb2N1bWVudGVkIGF0OgotICogaHR0cDovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvY3VybF9lYXN5X3NldG9wdC5odG1sCisgKiBodHRwczovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvY3VybF9lYXN5X3NldG9wdC5odG1sCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgogCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxNDA0IGIvdGVzdHMvZGF0YS90ZXN0MTQwNAppbmRleCA0NDE1Njk3Li5hMTU5ZTQ5IDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QxNDA0CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDE0MDQKQEAgLTgzLDE1ICs4MywxNiBAQAogPHN0cmlwZmlsZT4KICMgY3VybCdzIGRlZmF1bHQgdXNlci1hZ2VudCB2YXJpZXMgd2l0aCB2ZXJzaW9uLCBsaWJyYXJpZXMgZXRjLgogcy8oVVNFUkFHRU5ULCBcIilbXlwiXSsvJHsxfXN0cmlwcGVkLwotIyBDVVJMT1BUX1NTTF9WRVJJRllQRUVSIGFuZCBTU0hfS05PV05IT1NUUyB2YXJ5IHdpdGggY29uZmlndXJhdGlvbnMgLSBqdXN0Ci0jIGlnbm9yZSB0aGVtCisjIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIsIFNTSF9LTk9XTkhPU1RTIGFuZCBIVFRQX1ZFUlNJT04gdmFyeSB3aXRoCisjIGNvbmZpZ3VyYXRpb25zIC0ganVzdCBpZ25vcmUgdGhlbQogJF8gPSAnJyBpZiAvQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUi8KICRfID0gJycgaWYgL0NVUkxPUFRfU1NIX0tOT1dOSE9TVFMvCiskXyA9ICcnIGlmIC9DVVJMT1BUX0hUVFBfVkVSU0lPTi8KIDwvc3RyaXBmaWxlPgogPGZpbGUgbmFtZT0ibG9nL3Rlc3QxNDA0LmMiIG1vZGU9InRleHQiPgogLyoqKioqKioqKiBTYW1wbGUgY29kZSBnZW5lcmF0ZWQgYnkgdGhlIGN1cmwgY29tbWFuZCBsaW5lIHRvb2wgKioqKioqKioqKgogICogQWxsIGN1cmxfZWFzeV9zZXRvcHQoKSBvcHRpb25zIGFyZSBkb2N1bWVudGVkIGF0OgotICogaHR0cDovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvY3VybF9lYXN5X3NldG9wdC5odG1sCisgKiBodHRwczovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvY3VybF9lYXN5X3NldG9wdC5odG1sCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgogCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxNDA1IGIvdGVzdHMvZGF0YS90ZXN0MTQwNQppbmRleCAzOGJmZDVjLi5mMjIzOTU0IDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QxNDA1CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDE0MDUKQEAgLTU4LDcgKzU4LDcgQEAKIDxmaWxlIG5hbWU9ImxvZy90ZXN0MTQwNS5jIiBtb2RlPSJ0ZXh0Ij4KIC8qKioqKioqKiogU2FtcGxlIGNvZGUgZ2VuZXJhdGVkIGJ5IHRoZSBjdXJsIGNvbW1hbmQgbGluZSB0b29sICoqKioqKioqKioKICAqIEFsbCBjdXJsX2Vhc3lfc2V0b3B0KCkgb3B0aW9ucyBhcmUgZG9jdW1lbnRlZCBhdDoKLSAqIGh0dHA6Ly9jdXJsLmhheHguc2UvbGliY3VybC9jL2N1cmxfZWFzeV9zZXRvcHQuaHRtbAorICogaHR0cHM6Ly9jdXJsLmhheHguc2UvbGliY3VybC9jL2N1cmxfZWFzeV9zZXRvcHQuaHRtbAogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KICNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KIApAQCAtMTI3LDEwICsxMjcsMTEgQEAKICMgc3VwcG9ydCwgSU9XIGRlcGVuZHMgb24gY29uZmlndXJhdGlvbiAtIGp1c3QgaWdub3JlIHRoZXNlLgogJF8gPSAnJyBpZiAvQ1VSTE9QVF9VU0VSQUdFTlQvCiAkXyA9ICcnIGlmIC9DVVJMT1BUX01BWFJFRElSUy8KLSMgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiBhbmQgU1NIX0tOT1dOSE9TVFMgdmFyeSB3aXRoIGNvbmZpZ3VyYXRpb25zIC0ganVzdAotIyBpZ25vcmUgdGhlbQorIyBDVVJMT1BUX1NTTF9WRVJJRllQRUVSLCBTU0hfS05PV05IT1NUUyBhbmQgSFRUUF9WRVJTSU9OIHZhcnkgd2l0aAorIyBjb25maWd1cmF0aW9ucyAtIGp1c3QgaWdub3JlIHRoZW0KICRfID0gJycgaWYgL0NVUkxPUFRfU1NMX1ZFUklGWVBFRVIvCiAkXyA9ICcnIGlmIC9DVVJMT1BUX1NTSF9LTk9XTkhPU1RTLworJF8gPSAnJyBpZiAvQ1VSTE9QVF9IVFRQX1ZFUlNJT04vCiA8L3N0cmlwZmlsZT4KIDwvdmVyaWZ5PgogPC90ZXN0Y2FzZT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDE0MDYgYi90ZXN0cy9kYXRhL3Rlc3QxNDA2CmluZGV4IGM4MDQ1OWYuLmM3ZTRjZDQgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDE0MDYKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTQwNgpAQCAtNTcsNyArNTcsNyBAQAogPGZpbGUgbmFtZT0ibG9nL3Rlc3QxNDA2LmMiIG1vZGU9InRleHQiPgogLyoqKioqKioqKiBTYW1wbGUgY29kZSBnZW5lcmF0ZWQgYnkgdGhlIGN1cmwgY29tbWFuZCBsaW5lIHRvb2wgKioqKioqKioqKgogICogQWxsIGN1cmxfZWFzeV9zZXRvcHQoKSBvcHRpb25zIGFyZSBkb2N1bWVudGVkIGF0OgotICogaHR0cDovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvY3VybF9lYXN5X3NldG9wdC5odG1sCisgKiBodHRwczovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvY3VybF9lYXN5X3NldG9wdC5odG1sCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgogCkBAIC0xMTYsMTAgKzExNiwxMSBAQAogPHN0cmlwZmlsZT4KICMgY3VybCdzIGRlZmF1bHQgdXNlci1hZ2VudCB2YXJpZXMgd2l0aCB2ZXJzaW9uLCBsaWJyYXJpZXMgZXRjLgogcy8oVVNFUkFHRU5ULCBcIilbXlwiXSsvJHsxfXN0cmlwcGVkLwotIyBDVVJMT1BUX1NTTF9WRVJJRllQRUVSIGFuZCBTU0hfS05PV05IT1NUUyB2YXJ5IHdpdGggY29uZmlndXJhdGlvbnMgLSBqdXN0Ci0jIGlnbm9yZSB0aGVtCisjIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIsIFNTSF9LTk9XTkhPU1RTIGFuZCBIVFRQX1ZFUlNJT04gdmFyeSB3aXRoCisjIGNvbmZpZ3VyYXRpb25zIC0ganVzdCBpZ25vcmUgdGhlbQogJF8gPSAnJyBpZiAvQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUi8KICRfID0gJycgaWYgL0NVUkxPUFRfU1NIX0tOT1dOSE9TVFMvCiskXyA9ICcnIGlmIC9DVVJMT1BUX0hUVFBfVkVSU0lPTi8KIDwvc3RyaXBmaWxlPgogPC92ZXJpZnk+CiA8L3Rlc3RjYXNlPgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTQwNyBiL3Rlc3RzL2RhdGEvdGVzdDE0MDcKaW5kZXggZTg0NDYzYS4uOGY4Y2IyYSAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MTQwNworKysgYi90ZXN0cy9kYXRhL3Rlc3QxNDA3CkBAIC00NCw3ICs0NCw3IEBACiA8ZmlsZSBuYW1lPSJsb2cvdGVzdDE0MDcuYyIgbW9kZT0idGV4dCI+CiAvKioqKioqKioqIFNhbXBsZSBjb2RlIGdlbmVyYXRlZCBieSB0aGUgY3VybCBjb21tYW5kIGxpbmUgdG9vbCAqKioqKioqKioqCiAgKiBBbGwgY3VybF9lYXN5X3NldG9wdCgpIG9wdGlvbnMgYXJlIGRvY3VtZW50ZWQgYXQ6Ci0gKiBodHRwOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvYy9jdXJsX2Vhc3lfc2V0b3B0Lmh0bWwKKyAqIGh0dHBzOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvYy9jdXJsX2Vhc3lfc2V0b3B0Lmh0bWwKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAKQEAgLTk0LDEwICs5NCwxMSBAQAogPHN0cmlwZmlsZT4KICMgY3VybCdzIGRlZmF1bHQgdXNlci1hZ2VudCB2YXJpZXMgd2l0aCB2ZXJzaW9uLCBsaWJyYXJpZXMgZXRjLgogcy8oVVNFUkFHRU5ULCBcIilbXlwiXSsvJHsxfXN0cmlwcGVkLwotIyBDVVJMT1BUX1NTTF9WRVJJRllQRUVSIGFuZCBTU0hfS05PV05IT1NUUyB2YXJ5IHdpdGggY29uZmlndXJhdGlvbnMgLSBqdXN0Ci0jIGlnbm9yZSB0aGVtCisjIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIsIFNTSF9LTk9XTkhPU1RTIGFuZCBIVFRQX1ZFUlNJT04gdmFyeSB3aXRoCisjIGNvbmZpZ3VyYXRpb25zIC0ganVzdCBpZ25vcmUgdGhlbQogJF8gPSAnJyBpZiAvQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUi8KICRfID0gJycgaWYgL0NVUkxPUFRfU1NIX0tOT1dOSE9TVFMvCiskXyA9ICcnIGlmIC9DVVJMT1BUX0hUVFBfVkVSU0lPTi8KIDwvc3RyaXBmaWxlPgogPC92ZXJpZnk+CiA8L3Rlc3RjYXNlPgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTQxNSBiL3Rlc3RzL2RhdGEvdGVzdDE0MTUKaW5kZXggZDk3ZGZjZS4uMzdjZmIwNyAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MTQxNQorKysgYi90ZXN0cy9kYXRhL3Rlc3QxNDE1CkBAIC01NywxMyArNTcsMTIgQEAKIEdFVCBodHRwOi8vZXhhbXBsZS5jb20vd2Uvd2FudC8xNDE1IEhUVFAvMS4xDQogSG9zdDogZXhhbXBsZS5jb20NCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiA8L3Byb3RvY29sPgogCiA8ZmlsZSBuYW1lPSJsb2cvamFyMTQxNS50eHQiIG1vZGU9InRleHQiPgogIyBOZXRzY2FwZSBIVFRQIENvb2tpZSBGaWxlCi0jIGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9odHRwLWNvb2tpZXMuaHRtbAorIyBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2h0dHAtY29va2llcy5odG1sCiAjIFRoaXMgZmlsZSB3YXMgZ2VuZXJhdGVkIGJ5IGxpYmN1cmwhIEVkaXQgYXQgeW91ciBvd24gcmlzay4KIAogLmV4YW1wbGUuY29tCVRSVUUJLwlGQUxTRQkwCXRlc3QxdmFsdWUJdGVzdDEKZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDE0MjAgYi90ZXN0cy9kYXRhL3Rlc3QxNDIwCmluZGV4IDc5Y2E2NzUuLjdhODY4MDYgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDE0MjAKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTQyMApAQCAtNTAsNyArNTAsNyBAQAogPGZpbGUgbmFtZT0ibG9nL3Rlc3QxNDIwLmMiIG1vZGU9InRleHQiPgogLyoqKioqKioqKiBTYW1wbGUgY29kZSBnZW5lcmF0ZWQgYnkgdGhlIGN1cmwgY29tbWFuZCBsaW5lIHRvb2wgKioqKioqKioqKgogICogQWxsIGN1cmxfZWFzeV9zZXRvcHQoKSBvcHRpb25zIGFyZSBkb2N1bWVudGVkIGF0OgotICogaHR0cDovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvY3VybF9lYXN5X3NldG9wdC5odG1sCisgKiBodHRwczovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvY3VybF9lYXN5X3NldG9wdC5odG1sCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgogCkBAIC05OSwxMCArOTksMTEgQEAKIDxzdHJpcGZpbGU+CiAjIGN1cmwncyBkZWZhdWx0IHVzZXItYWdlbnQgdmFyaWVzIHdpdGggdmVyc2lvbiwgbGlicmFyaWVzIGV0Yy4KIHMvKFVTRVJBR0VOVCwgXCIpW15cIl0rLyR7MX1zdHJpcHBlZC8KLSMgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiBhbmQgU1NIX0tOT1dOSE9TVFMgdmFyeSB3aXRoIGNvbmZpZ3VyYXRpb25zIC0ganVzdAotIyBpZ25vcmUgdGhlbQorIyBDVVJMT1BUX1NTTF9WRVJJRllQRUVSLCBTU0hfS05PV05IT1NUUyBhbmQgSFRUUF9WRVJTSU9OIHZhcnkgd2l0aAorIyBjb25maWd1cmF0aW9ucyAtIGp1c3QgaWdub3JlIHRoZW0KICRfID0gJycgaWYgL0NVUkxPUFRfU1NMX1ZFUklGWVBFRVIvCiAkXyA9ICcnIGlmIC9DVVJMT1BUX1NTSF9LTk9XTkhPU1RTLworJF8gPSAnJyBpZiAvQ1VSTE9QVF9IVFRQX1ZFUlNJT04vCiA8L3N0cmlwZmlsZT4KIDwvdmVyaWZ5PgogPC90ZXN0Y2FzZT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDE0MjEgYi90ZXN0cy9kYXRhL3Rlc3QxNDIxCmluZGV4IDZjNTliMjEuLjg4OWM5MzggMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDE0MjEKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTQyMQpAQCAtNTksMTIgKzU5LDEwIEBACiBHRVQgaHR0cDovL3Rlc3QucmVtb3RlLmhheHguc2UuMTQyMTo4OTkwLyBIVFRQLzEuMQ0KIEhvc3Q6IHRlc3QucmVtb3RlLmhheHguc2UuMTQyMTo4OTkwDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogR0VUIGh0dHA6Ly9kaWZmZXJlbnQucmVtb3RlLmhheHguc2UuMTQyMTo4OTkwLyBIVFRQLzEuMQ0KIEhvc3Q6IGRpZmZlcmVudC5yZW1vdGUuaGF4eC5zZS4xNDIxOjg5OTANCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiBbRElTQ09OTkVDVF0KIDwvcHJvdG9jb2w+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxNDI4IGIvdGVzdHMvZGF0YS90ZXN0MTQyOAppbmRleCA1OTA0MWVjLi42MGZiOGE5IDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QxNDI4CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDE0MjgKQEAgLTY0LDcgKzY0LDYgQEAKIENPTk5FQ1QgdGVzdC4xNDI4OiVIVFRQUE9SVCBIVFRQLzEuMQ0KIEhvc3Q6IHRlc3QuMTQyODolSFRUUFBPUlQNCiBVc2VyLUFnZW50OiBjdXJsLzcuMTAuNy1wcmUyIChpNjg2LXBjLWxpbnV4LWdudSkgbGliY3VybC83LjEwLjctcHJlMiBPcGVuU1NMLzAuOS43YSB6bGliLzEuMS4zDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIGhlYWRlci10eXBlOiBwcm94eQ0KIA0KIDwvcHJveHk+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxNDM3IGIvdGVzdHMvZGF0YS90ZXN0MTQzNwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOWNjZWNlCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTQzNwpAQCAtMCwwICsxLDg0IEBACis8dGVzdGNhc2U+Cis8aW5mbz4KKzxrZXl3b3Jkcz4KK0hUVFAKK0hUVFAgR0VUCitIVFRQIERpZ2VzdCBhdXRoCis8L2tleXdvcmRzPgorPC9pbmZvPgorIyBTZXJ2ZXItc2lkZQorPHJlcGx5PgorPGRhdGE+CitIVFRQLzEuMSA0MDEgQXV0aG9yaXphdGlvbiBSZXF1aXJlZCBzd3NjbG9zZQ0KK1NlcnZlcjogQXBhY2hlLzEuMy4yNyAoRGFyd2luKSBQSFAvNC4xLjINCitXV1ctQXV0aGVudGljYXRlOiBEaWdlc3QgcmVhbG09InRlc3RyZWFsbSIsIGFsZ29yaXRobT1NRDUsIGFsZ29yaXRobT1NRDUsIG5vbmNlPTEsIG5vbmNlPTINCitDb250ZW50LVR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xDQorQ29udGVudC1MZW5ndGg6IDI2DQorDQorVGhpcyBpcyBub3QgdGhlIHJlYWwgcGFnZQorPC9kYXRhPgorCisjIFRoaXMgaXMgc3VwcG9zZWQgdG8gYmUgcmV0dXJuZWQgd2hlbiB0aGUgc2VydmVyIGdldHMgYQorIyBBdXRob3JpemF0aW9uOiBEaWdlc3QgbGluZSBwYXNzZWQtaW4gZnJvbSB0aGUgY2xpZW50Cis8ZGF0YTEwMDA+CitIVFRQLzEuMSAyMDAgT0sgc3dzY2xvc2UNCitTZXJ2ZXI6IEFwYWNoZS8xLjMuMjcgKERhcndpbikgUEhQLzQuMS4yDQorQ29udGVudC1UeXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMQ0KK0NvbnRlbnQtTGVuZ3RoOiAyMw0KKw0KK1RoaXMgSVMgdGhlIHJlYWwgcGFnZSEKKzwvZGF0YTEwMDA+CisKKzxkYXRhY2hlY2s+CitIVFRQLzEuMSA0MDEgQXV0aG9yaXphdGlvbiBSZXF1aXJlZCBzd3NjbG9zZQ0KK1NlcnZlcjogQXBhY2hlLzEuMy4yNyAoRGFyd2luKSBQSFAvNC4xLjINCitXV1ctQXV0aGVudGljYXRlOiBEaWdlc3QgcmVhbG09InRlc3RyZWFsbSIsIGFsZ29yaXRobT1NRDUsIGFsZ29yaXRobT1NRDUsIG5vbmNlPTEsIG5vbmNlPTINCitDb250ZW50LVR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xDQorQ29udGVudC1MZW5ndGg6IDI2DQorDQorSFRUUC8xLjEgMjAwIE9LIHN3c2Nsb3NlDQorU2VydmVyOiBBcGFjaGUvMS4zLjI3IChEYXJ3aW4pIFBIUC80LjEuMg0KK0NvbnRlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTENCitDb250ZW50LUxlbmd0aDogMjMNCisNCitUaGlzIElTIHRoZSByZWFsIHBhZ2UhCis8L2RhdGFjaGVjaz4KKworPC9yZXBseT4KKworIyBDbGllbnQtc2lkZQorPGNsaWVudD4KKzxzZXJ2ZXI+CitodHRwCis8L3NlcnZlcj4KKzxmZWF0dXJlcz4KKyFTU1BJCitjcnlwdG8KKzwvZmVhdHVyZXM+CisgPG5hbWU+CitIVFRQIHdpdGggZHVwbGljYXRlZCBXV1ctQXV0aGVudGljYXRlIHBhcmFtZXRlcnMKKyA8L25hbWU+CisgPGNvbW1hbmQ+CitodHRwOi8vJUhPU1RJUDolSFRUUFBPUlQvMTQzNyAtdSB0ZXN0dXNlcjp0ZXN0cGFzcyAtLWRpZ2VzdAorPC9jb21tYW5kPgorPC9jbGllbnQ+CisKKyMgVmVyaWZ5IGRhdGEgYWZ0ZXIgdGhlIHRlc3QgaGFzIGJlZW4gInNob3QiCis8dmVyaWZ5PgorPHN0cmlwPgorXlVzZXItQWdlbnQ6LioKKzwvc3RyaXA+Cis8cHJvdG9jb2w+CitHRVQgLzE0MzcgSFRUUC8xLjENCitIb3N0OiAlSE9TVElQOiVIVFRQUE9SVA0KK0FjY2VwdDogKi8qDQorDQorR0VUIC8xNDM3IEhUVFAvMS4xDQorSG9zdDogJUhPU1RJUDolSFRUUFBPUlQNCitBdXRob3JpemF0aW9uOiBEaWdlc3QgdXNlcm5hbWU9InRlc3R1c2VyIiwgcmVhbG09InRlc3RyZWFsbSIsIG5vbmNlPSIyIiwgdXJpPSIvMTQzNyIsIHJlc3BvbnNlPSI0Mzc2ZWI2MzliZjhlNzM0M2E2ZTdiNTZlMWI4OWM0ZiIsIGFsZ29yaXRobT0iTUQ1Ig0KK1VzZXItQWdlbnQ6IGN1cmwvNy4xMC41IChpNjg2LXBjLWxpbnV4LWdudSkgbGliY3VybC83LjEwLjUgT3BlblNTTC8wLjkuN2EgaXB2NiB6bGliLzEuMS4zDQorQWNjZXB0OiAqLyoNCisNCis8L3Byb3RvY29sPgorPC92ZXJpZnk+Cis8L3Rlc3RjYXNlPgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTQ4IGIvdGVzdHMvZGF0YS90ZXN0MTQ4CmluZGV4IGZiYWMxMGYuLjU0MGM4ZmUgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDE0OAorKysgYi90ZXN0cy9kYXRhL3Rlc3QxNDgKQEAgLTQyLDYgKzQyLDcgQEAKIFBXRA0KIENXRCBhdHRlbXB0DQogTUtEIGF0dGVtcHQNCitDV0QgYXR0ZW1wdA0KIFFVSVQNCiA8L3Byb3RvY29sPgogPC92ZXJpZnk+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxNTA5IGIvdGVzdHMvZGF0YS90ZXN0MTUwOQppbmRleCBiNGJmYzY2Li4xOGViMDdmIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QxNTA5CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDE1MDkKQEAgLTc0LDcgKzc0LDYgQEAKIDxwcm94eT4KIENPTk5FQ1QgdGhlLm9sZC5tb28uMTUwOTolSFRUUFBPUlQgSFRUUC8xLjENCiBIb3N0OiB0aGUub2xkLm1vby4xNTA5OiVIVFRQUE9SVA0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiA8L3Byb3h5PgogPHByb3RvY29sPgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTUxMyBiL3Rlc3RzL2RhdGEvdGVzdDE1MTMKaW5kZXggOGFiYjk2Zi4uYmEwYzE4YSAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MTUxMworKysgYi90ZXN0cy9kYXRhL3Rlc3QxNTEzCkBAIC00Miw1ICs0Miw4IEBACiA8ZXJyb3Jjb2RlPgogNDIKIDwvZXJyb3Jjb2RlPgorPHN0ZG91dD4KK1BST0dSRVNTRlVOQ1RJT04gY2FsbGVkCis8L3N0ZG91dD4KIDwvdmVyaWZ5PgogPC90ZXN0Y2FzZT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDE1MTUgYi90ZXN0cy9kYXRhL3Rlc3QxNTE1CmluZGV4IDNhNDlkMWIuLjc0MTc5MjQgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDE1MTUKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTUxNQpAQCAtMzIsNiArMzIsMTAgQEAKIAogaGVsbG8KIDwvZGF0YTI+Cis8ZGF0YWNoZWNrPgoraGVsbG8KK2hlbGxvCis8L2RhdGFjaGVjaz4KIDwvcmVwbHk+CiAKIDxjbGllbnQ+CkBAIC00NSw3ICs0OSw3IEBACiBjYWNoaW5nIG9mIG1hbnVhbCBsaWJjdXJsIEROUyBlbnRyaWVzIGFmdGVyIEROUyBjYWNoZSB0aW1lb3V0CiA8L25hbWU+CiA8Y29tbWFuZD4KLS9wYXRoLzE1MTUgJUhPU1RJUCAlSFRUUFBPUlQKK3BhdGgvMTUxNSAlSE9TVElQICVIVFRQUE9SVAogPC9jb21tYW5kPgogPC9jbGllbnQ+CiAKZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDE1MTcgYi90ZXN0cy9kYXRhL3Rlc3QxNTE3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwYTRhZWMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9kYXRhL3Rlc3QxNTE3CkBAIC0wLDAgKzEsNjkgQEAKKzx0ZXN0Y2FzZT4KKzxpbmZvPgorPGtleXdvcmRzPgorSFRUUAorUE9TVAorUE9TVCBjYWxsYmFjaworc2xvdyBjYWxsYmFjaworZWFybHkgcmVzcG9uc2UKKzwva2V5d29yZHM+Cis8L2luZm8+CisjCisjIFRoaXMgcmVwcm9kdWNlcyBpc3N1ZSAjNjU3LCBmaXhlZCB3aXRoIFBSICM2NjggLSBvbiBXaW5kb3dzCisjCisjIFNlcnZlci1zaWRlCis8cmVwbHk+CisjIEZvcmNlIHNlcnZlciByZXBseSByaWdodCBhZnRlciByZXF1ZXN0IGhlYWRlcnMsIG5vdCB3YWl0aW5nIGZvciByZXF1ZXN0IGJvZHkKKzxzZXJ2ZXJjbWQ+Citza2lwOiA0NQorPC9zZXJ2ZXJjbWQ+Cis8ZGF0YT4KK0hUVFAvMS4xIDUwMCBJbnRlcm5hbCBTZXJ2ZXIgRXJyb3IKK0RhdGU6IFRodSwgMTcgTWFyIDIwMTYgMTQ6NDE6MDAgR01UCitTZXJ2ZXI6IHRlc3Qtc2VydmVyL2Zha2UKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VUy1BU0NJSQorWC1TcGVjaWFsOiBzd3NjbG9zZQorQ29udGVudC1MZW5ndGg6IDU1CitDb25uZWN0aW9uOiBjbG9zZQorCitUaGlzIGlzIGEgdmlydHVhbCBkZXNjcmlwdGlvbiBvZiBzZXJ2ZXIgdmlydHVhbCBlcnJvci4KKzwvZGF0YT4KKzwvcmVwbHk+CisKKyMgQ2xpZW50LXNpZGUKKzxjbGllbnQ+Cis8c2VydmVyPgoraHR0cAorPC9zZXJ2ZXI+CisjIHRvb2wgaXMgd2hhdCB0byB1c2UgaW5zdGVhZCBvZiAnY3VybCcKKzx0b29sPgorbGliMTUxNworPC90b29sPgorCisgPG5hbWU+CitIVFRQIFBPU1QsIHNlcnZlciByZXNwb25kcyBiZWZvcmUgY29tcGxldGVkIHNlbmQKKyA8L25hbWU+CisgPGNvbW1hbmQ+CitodHRwOi8vJUhPU1RJUDolSFRUUFBPUlQvMTUxNworPC9jb21tYW5kPgorPC9jbGllbnQ+CisKKyMKKyMgVmVyaWZ5IGRhdGEgYWZ0ZXIgdGhlIHRlc3QgaGFzIGJlZW4gInNob3QiCis8dmVyaWZ5PgorPHN0cmlwcGFydD4KK3MvXih0aGlzIGlzIHdoYXQgd2UgcG9zdCB0byB0aGUgc2lsbHkgd2ViIHNlcnZlcikoXHIpP1xuLy8KKzwvc3RyaXBwYXJ0PgorPHByb3RvY29sPgorUE9TVCAvMTUxNyBIVFRQLzEuMQ0KK0hvc3Q6ICVIT1NUSVA6JUhUVFBQT1JUDQorQWNjZXB0OiAqLyoNCitDb250ZW50LUxlbmd0aDogNDUNCitDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZA0KKw0KKzwvcHJvdG9jb2w+Cis8ZXJyb3Jjb2RlPgorMAorPC9lcnJvcmNvZGU+Cis8L3ZlcmlmeT4KKzwvdGVzdGNhc2U+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxNTI1IGIvdGVzdHMvZGF0YS90ZXN0MTUyNQppbmRleCAwNTYwZDVjLi5kOGY2ODgzIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QxNTI1CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDE1MjUKQEAgLTU4LDcgKzU4LDYgQEAKIDxwcm94eT4KIENPTk5FQ1QgdGhlLm9sZC5tb28uMTUyNTolSFRUUFBPUlQgSFRUUC8xLjENCiBIb3N0OiB0aGUub2xkLm1vby4xNTI1OiVIVFRQUE9SVA0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiBVc2VyLUFnZW50OiBIdHRwIEFnZW50DQogDQogPC9wcm94eT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDE1MjYgYi90ZXN0cy9kYXRhL3Rlc3QxNTI2CmluZGV4IGFhMTExYzguLjlmNWQwOWUgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDE1MjYKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTUyNgpAQCAtNTgsNyArNTgsNiBAQAogPHByb3h5PgogQ09OTkVDVCB0aGUub2xkLm1vby4xNTI2OiVIVFRQUE9SVCBIVFRQLzEuMQ0KIEhvc3Q6IHRoZS5vbGQubW9vLjE1MjY6JUhUVFBQT1JUDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIFVzZXItQWdlbnQ6IFByb3h5IEFnZW50DQogDQogPC9wcm94eT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDE1MjcgYi90ZXN0cy9kYXRhL3Rlc3QxNTI3CmluZGV4IGU4ZDUyNzkuLjY5YWU2ZTQgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDE1MjcKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTUyNwpAQCAtNTcsNyArNTcsNiBAQAogPHByb3h5PgogQ09OTkVDVCB0aGUub2xkLm1vby4xNTI3OiVIVFRQUE9SVCBIVFRQLzEuMQ0KIEhvc3Q6IHRoZS5vbGQubW9vLjE1Mjc6JUhUVFBQT1JUDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIFVzZXItQWdlbnQ6IEh0dHAgQWdlbnQNCiBFeHBlY3Q6IDEwMC1jb250aW51ZQ0KIA0KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDE1MjggYi90ZXN0cy9kYXRhL3Rlc3QxNTI4CmluZGV4IDg3NjgwNmEuLmU2MGY2MDAgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDE1MjgKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTUyOApAQCAtNTEsNyArNTEsNiBAQAogR0VUIGh0dHA6Ly90aGUub2xkLm1vbzolSFRUUFBPUlQvMTUyOCBIVFRQLzEuMQ0KIEhvc3Q6IHRoZS5vbGQubW9vOiVIVFRQUE9SVA0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIFVzZXItQWdlbnQ6IEh0dHAgQWdlbnQNCiBQcm94eS1Vc2VyLUFnZW50OiBIdHRwIEFnZW50Mg0KIA0KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDE1MzEgYi90ZXN0cy9kYXRhL3Rlc3QxNTMxCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1OGRlYjYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9kYXRhL3Rlc3QxNTMxCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDE2IGIvdGVzdHMvZGF0YS90ZXN0MTYKaW5kZXggNWNiZGU1OS4uOWQ5YTljYyAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MTYKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTYKQEAgLTMxLDcgKzMxLDcgQEAKIEhUVFAgd2l0aCBwcm94eSBhdXRob3JpemF0aW9uCiAgPC9uYW1lPgogIDxjb21tYW5kPgotIC1VIGZha2VAdXNlcjqnp6dsb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vbmcgLXggJUhPU1RJUDolSFRUUFBPUlQgaHR0cDovL3dlLndhbnQudGhhdC5zaXRlLmNvbS8xNgorIC1VIGZha2VAdXNlcjpsb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vbmcgLXggJUhPU1RJUDolSFRUUFBPUlQgaHR0cDovL3dlLndhbnQudGhhdC5zaXRlLmNvbS8xNgogPC9jb21tYW5kPgogPC9jbGllbnQ+CiAKQEAgLTQzLDkgKzQzLDggQEAKIDxwcm90b2NvbD4KIEdFVCBodHRwOi8vd2Uud2FudC50aGF0LnNpdGUuY29tLzE2IEhUVFAvMS4xDQogSG9zdDogd2Uud2FudC50aGF0LnNpdGUuY29tDQotUHJveHktQXV0aG9yaXphdGlvbjogQmFzaWMgWm1GclpVQjFjMlZ5T3FlbnAyeHZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl1Wnc9PQ0KK1Byb3h5LUF1dGhvcml6YXRpb246IEJhc2ljIFptRnJaVUIxYzJWeU9teHZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dmIyOXZiMjl2YjI5dVp3PT0NCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiA8L3Byb3RvY29sPgogPC92ZXJpZnk+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxNjAzIGIvdGVzdHMvZGF0YS90ZXN0MTYwMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MDVjOWUzCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTYwMwpAQCAtMCwwICsxLDI2IEBACis8dGVzdGNhc2U+Cis8aW5mbz4KKzxrZXl3b3Jkcz4KK3VuaXR0ZXN0CitoYXNoCis8L2tleXdvcmRzPgorPC9pbmZvPgorCisjCisjIENsaWVudC1zaWRlCis8Y2xpZW50PgorPHNlcnZlcj4KK25vbmUKKzwvc2VydmVyPgorPGZlYXR1cmVzPgordW5pdHRlc3QKKzwvZmVhdHVyZXM+CisgPG5hbWU+CitJbnRlcm5hbCBoYXNoIGFkZCwgcmV0cmlldmFsLCBkZWxldGlvbiB0ZXN0aW5nCisgPC9uYW1lPgorPHRvb2w+Cit1bml0MTYwMworPC90b29sPgorPC9jbGllbnQ+CisKKzwvdGVzdGNhc2U+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxNjA0IGIvdGVzdHMvZGF0YS90ZXN0MTYwNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjIwNzc1Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTYwNApAQCAtMCwwICsxLDI1IEBACis8dGVzdGNhc2U+Cis8aW5mbz4KKzxrZXl3b3Jkcz4KK3VuaXR0ZXN0Cis8L2tleXdvcmRzPgorPC9pbmZvPgorCisjCisjIENsaWVudC1zaWRlCis8Y2xpZW50PgorPHNlcnZlcj4KK25vbmUKKzwvc2VydmVyPgorPGZlYXR1cmVzPgordW5pdHRlc3QKKzwvZmVhdHVyZXM+CisgPG5hbWU+CitUZXN0IFdJTjMyL01TRE9TIGZpbGVuYW1lIHNhbml0aXphdGlvbgorIDwvbmFtZT4KKzx0b29sPgordW5pdDE2MDQKKzwvdG9vbD4KKzwvY2xpZW50PgorCis8L3Rlc3RjYXNlPgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTYyIGIvdGVzdHMvZGF0YS90ZXN0MTYyCmluZGV4IGVlMmY0MGEuLmNjNGM4MmQgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDE2MgorKysgYi90ZXN0cy9kYXRhL3Rlc3QxNjIKQEAgLTUxLDcgKzUxLDYgQEAKIFByb3h5LUF1dGhvcml6YXRpb246IE5UTE0gVGxSTVRWTlRVQUFCQUFBQUJvSUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQT0NCiBVc2VyLUFnZW50OiBjdXJsLzcuOC4xLXByZTMgKHNwYXJjLXN1bi1zb2xhcmlzMi43KSBsaWJjdXJsIDcuOC4xLXByZTMgKE9wZW5TU0wgMC45LjZhKSAoa3JiNCBlbmFibGVkKQ0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIDwvcHJvdG9jb2w+CiA8ZXJyb3Jjb2RlPgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTY1IGIvdGVzdHMvZGF0YS90ZXN0MTY1CmluZGV4IGRkZmUxZTkuLmI0NzVmZGUgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDE2NQorKysgYi90ZXN0cy9kYXRhL3Rlc3QxNjUKQEAgLTUxLDcgKzUxLDYgQEAKIEdFVCBodHRwOi8vd3d3LnhuLS00Y2FiNmMuc2UvcGFnZS8xNjUgSFRUUC8xLjENCiBIb3N0OiB3d3cueG4tLTRjYWI2Yy5zZQ0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIDwvcHJvdG9jb2w+CiA8L3ZlcmlmeT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDE2NyBiL3Rlc3RzL2RhdGEvdGVzdDE2NwppbmRleCAwYjE0OTk2Li43NmY5ZTVjIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QxNjcKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTY3CkBAIC02NSw3ICs2NSw2IEBACiBQcm94eS1BdXRob3JpemF0aW9uOiBCYXNpYyBabTl2T21KaGNnPT0NCiBVc2VyLUFnZW50OiBjdXJsLzcuMTIuMC1DVlMgKGk2ODYtcGMtbGludXgtZ251KSBsaWJjdXJsLzcuMTIuMC1DVlMgT3BlblNTTC8wLjkuNmIgemxpYi8xLjEuNCBjLWFyZXMvMS4yLjAgbGliaWRuLzAuNC4zDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogR0VUIGh0dHA6Ly9kYXRhLmZyb20uc2VydmVyLnJlcXVpcmluZy5kaWdlc3QuaG9ob2hvLmNvbS8xNjcgSFRUUC8xLjENCiBIb3N0OiBkYXRhLmZyb20uc2VydmVyLnJlcXVpcmluZy5kaWdlc3QuaG9ob2hvLmNvbQ0KQEAgLTczLDcgKzcyLDYgQEAKIEF1dGhvcml6YXRpb246IERpZ2VzdCB1c2VybmFtZT0iZGlnZXN0IiwgcmVhbG09IndlaXJkb3JlYWxtIiwgbm9uY2U9IjEyMzQ1IiwgdXJpPSIvMTY3IiwgcmVzcG9uc2U9IjEzYzdjMDJhMjUyY2JlMWM0NmQ4NjY5ODk4YTNiZTI2Ig0KIFVzZXItQWdlbnQ6IGN1cmwvNy4xMi4wLUNWUyAoaTY4Ni1wYy1saW51eC1nbnUpIGxpYmN1cmwvNy4xMi4wLUNWUyBPcGVuU1NMLzAuOS42YiB6bGliLzEuMS40IGMtYXJlcy8xLjIuMCBsaWJpZG4vMC40LjMNCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiA8L3Byb3RvY29sPgogPC92ZXJpZnk+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxNjggYi90ZXN0cy9kYXRhL3Rlc3QxNjgKaW5kZXggMjBlMGI2ZC4uMGY0ZTAyNSAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MTY4CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDE2OApAQCAtNzgsMTQgKzc4LDEyIEBACiBIb3N0OiBkYXRhLmZyb20uc2VydmVyLnJlcXVpcmluZy5kaWdlc3QuaG9ob2hvLmNvbQ0KIFVzZXItQWdlbnQ6IGN1cmwvNy4xMi4wLUNWUyAoaTY4Ni1wYy1saW51eC1nbnUpIGxpYmN1cmwvNy4xMi4wLUNWUyBPcGVuU1NMLzAuOS42YiB6bGliLzEuMS40IGMtYXJlcy8xLjIuMCBsaWJpZG4vMC40LjMNCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiBHRVQgaHR0cDovL2RhdGEuZnJvbS5zZXJ2ZXIucmVxdWlyaW5nLmRpZ2VzdC5ob2hvaG8uY29tLzE2OCBIVFRQLzEuMQ0KIEhvc3Q6IGRhdGEuZnJvbS5zZXJ2ZXIucmVxdWlyaW5nLmRpZ2VzdC5ob2hvaG8uY29tDQogUHJveHktQXV0aG9yaXphdGlvbjogRGlnZXN0IHVzZXJuYW1lPSJmb28iLCByZWFsbT0id2VpcmRvcmVhbG0iLCBub25jZT0iMTIzNDUiLCB1cmk9Ii8xNjgiLCByZXNwb25zZT0iZmI4NjA4ZTAwYWQ5MjM5YTNkZWRiMTRiYzg1NzU5NzYiDQogVXNlci1BZ2VudDogY3VybC83LjEyLjAtQ1ZTIChpNjg2LXBjLWxpbnV4LWdudSkgbGliY3VybC83LjEyLjAtQ1ZTIE9wZW5TU0wvMC45LjZiIHpsaWIvMS4xLjQgYy1hcmVzLzEuMi4wIGxpYmlkbi8wLjQuMw0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIEdFVCBodHRwOi8vZGF0YS5mcm9tLnNlcnZlci5yZXF1aXJpbmcuZGlnZXN0LmhvaG9oby5jb20vMTY4IEhUVFAvMS4xDQogSG9zdDogZGF0YS5mcm9tLnNlcnZlci5yZXF1aXJpbmcuZGlnZXN0LmhvaG9oby5jb20NCkBAIC05Myw3ICs5MSw2IEBACiBBdXRob3JpemF0aW9uOiBEaWdlc3QgdXNlcm5hbWU9ImRpZ2VzdCIsIHJlYWxtPSJyZWFsbXdlaXJkbyIsIG5vbmNlPSIxMjM0NTYiLCB1cmk9Ii8xNjgiLCByZXNwb25zZT0iY2E4N2YyZDc2OGEyMzFlMmQ2MzdhNTU2OThkNWM0MTYiDQogVXNlci1BZ2VudDogY3VybC83LjEyLjAtQ1ZTIChpNjg2LXBjLWxpbnV4LWdudSkgbGliY3VybC83LjEyLjAtQ1ZTIE9wZW5TU0wvMC45LjZiIGlwdjYgemxpYi8xLjEuNCBHU1MgbGliaWRuLzAuNC4zDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogPC9wcm90b2NvbD4KIDwvdmVyaWZ5PgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTY5IGIvdGVzdHMvZGF0YS90ZXN0MTY5CmluZGV4IDczY2E5YmQuLmJlNWI0YzYgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDE2OQorKysgYi90ZXN0cy9kYXRhL3Rlc3QxNjkKQEAgLTEwOCwyMSArMTA4LDE4IEBACiBQcm94eS1BdXRob3JpemF0aW9uOiBOVExNIFRsUk1UVk5UVUFBQkFBQUFCb0lJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE9DQogVXNlci1BZ2VudDogY3VybC83LjEyLjAtQ1ZTIChpNjg2LXBjLWxpbnV4LWdudSkgbGliY3VybC83LjEyLjAtQ1ZTIE9wZW5TU0wvMC45LjZiIGlwdjYgemxpYi8xLjEuNCBHU1MgbGliaWRuLzAuNC4zDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogR0VUIGh0dHA6Ly9kYXRhLmZyb20uc2VydmVyLnJlcXVpcmluZy5kaWdlc3QuaG9ob2hvLmNvbS8xNjkgSFRUUC8xLjENCiBIb3N0OiBkYXRhLmZyb20uc2VydmVyLnJlcXVpcmluZy5kaWdlc3QuaG9ob2hvLmNvbQ0KIFByb3h5LUF1dGhvcml6YXRpb246IE5UTE0gVGxSTVRWTlRVQUFEQUFBQUdBQVlBRUFBQUFDZUFKNEFXQUFBQUFBQUFBRDJBQUFBQ0FBSUFQWUFBQUFJQUFnQS9nQUFBQUFBQUFBQUFBQUFCb0tCQUw5TE5XNStua3lIWlJteUZhTC9MSjR4TWpNME1qSXpOR1VDeWhnUTlodzZlV0FUMTNFYkRhMEJBUUFBQUFBQUFBQ0FQdFhlc1owQk1USXpOREl5TXpRQUFBQUFBZ0FFQUVNQVF3QUJBQklBUlFCTUFFa0FVd0JCQUVJQVJRQlVBRWdBQkFBWUFHTUFZd0F1QUdrQVl3QmxBR1FBWlFCMkFDNEFiZ0IxQUFNQUxBQmxBR3dBYVFCekFHRUFZZ0JsQUhRQWFBQXVBR01BWXdBdUFHa0FZd0JsQUdRQVpRQjJBQzRBYmdCMUFBQUFBQUFBQUFBQWRHVnpkSFZ6WlhKamRYSnNhRzl6ZEE9PQ0KIFVzZXItQWdlbnQ6IGN1cmwvNy4xMi4wLUNWUyAoaTY4Ni1wYy1saW51eC1nbnUpIGxpYmN1cmwvNy4xMi4wLUNWUyBPcGVuU1NMLzAuOS42YiBpcHY2IHpsaWIvMS4xLjQgR1NTIGxpYmlkbi8wLjQuMw0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIEdFVCBodHRwOi8vZGF0YS5mcm9tLnNlcnZlci5yZXF1aXJpbmcuZGlnZXN0LmhvaG9oby5jb20vMTY5IEhUVFAvMS4xDQogSG9zdDogZGF0YS5mcm9tLnNlcnZlci5yZXF1aXJpbmcuZGlnZXN0LmhvaG9oby5jb20NCiBBdXRob3JpemF0aW9uOiBEaWdlc3QgdXNlcm5hbWU9ImRpZ2VzdCIsIHJlYWxtPSJyIGUgYSBsIG0iLCBub25jZT0iYWJjZGVmIiwgdXJpPSIvMTY5IiwgcmVzcG9uc2U9Ijk1ZDQ4NTkxOTg1YTAzYzRiNDljYjk2MmFhN2JkM2U2Ig0KIFVzZXItQWdlbnQ6IGN1cmwvNy4xMi4wLUNWUyAoaTY4Ni1wYy1saW51eC1nbnUpIGxpYmN1cmwvNy4xMi4wLUNWUyBPcGVuU1NMLzAuOS42YiBpcHY2IHpsaWIvMS4xLjQgR1NTIGxpYmlkbi8wLjQuMw0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIDwvcHJvdG9jb2w+CiA8L3ZlcmlmeT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDE3MCBiL3Rlc3RzL2RhdGEvdGVzdDE3MAppbmRleCA4Y2U3Nzc0Li40OGEyNjNmIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QxNzAKKysrIGIvdGVzdHMvZGF0YS90ZXN0MTcwCkBAIC00MCw3ICs0MCw2IEBACiBQcm94eS1BdXRob3JpemF0aW9uOiBOVExNIFRsUk1UVk5UVUFBQkFBQUFCb0lJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE9DQogVXNlci1BZ2VudDogY3VybC83LjEyLjAtQ1ZTIChpNjg2LXBjLWxpbnV4LWdudSkgbGliY3VybC83LjEyLjAtQ1ZTIE9wZW5TU0wvMC45LjZiIGlwdjYgemxpYi8xLjEuNCBsaWJpZG4vMC40LjMNCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiBDb250ZW50LUxlbmd0aDogMA0KIA0KIDwvcHJvdG9jb2w+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxNzEgYi90ZXN0cy9kYXRhL3Rlc3QxNzEKaW5kZXggMTQ3YmUwYS4uM2I5ZjdiYSAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MTcxCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDE3MQpAQCAtNDQsMTIgKzQ0LDExIEBACiBHRVQgaHR0cDovL3oueC5jb20vMTcxIEhUVFAvMS4xDQogSG9zdDogei54LmNvbQ0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIDwvcHJvdG9jb2w+CiA8ZmlsZSBuYW1lPSJsb2cvamFyMTcxIiBtb2RlPSJ0ZXh0Ij4KICMgTmV0c2NhcGUgSFRUUCBDb29raWUgRmlsZQotIyBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvaHR0cC1jb29raWVzLmh0bWwKKyMgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9odHRwLWNvb2tpZXMuaHRtbAogIyBUaGlzIGZpbGUgd2FzIGdlbmVyYXRlZCBieSBsaWJjdXJsISBFZGl0IGF0IHlvdXIgb3duIHJpc2suCiAKIC56LnguY29tCVRSVUUJLwlGQUxTRQkwCVhUb2tlbgl4dApkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTcyIGIvdGVzdHMvZGF0YS90ZXN0MTcyCmluZGV4IDNkNTM0MTguLmFkMzYyODQgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDE3MgorKysgYi90ZXN0cy9kYXRhL3Rlc3QxNzIKQEAgLTMxLDcgKzMxLDcgQEAKIDwvY29tbWFuZD4KIDxmaWxlIG5hbWU9ImxvZy9qYXIxNzIudHh0Ij4KICMgTmV0c2NhcGUgSFRUUCBDb29raWUgRmlsZQotIyBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvaHR0cC1jb29raWVzLmh0bWwKKyMgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9odHRwLWNvb2tpZXMuaHRtbAogIyBUaGlzIGZpbGUgd2FzIGdlbmVyYXRlZCBieSBsaWJjdXJsISBFZGl0IGF0IHlvdXIgb3duIHJpc2suCiAKIC4lSE9TVElQCVRSVUUJL3NpbGx5LwlGQUxTRQkwCWlzbWF0Y2gJdGhpcwpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTc5IGIvdGVzdHMvZGF0YS90ZXN0MTc5CmluZGV4IGY4Zjc4MTEuLjFjZDViYWQgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDE3OQorKysgYi90ZXN0cy9kYXRhL3Rlc3QxNzkKQEAgLTQ5LDcgKzQ5LDYgQEAKIEdFVCBodHRwOi8vc3VwZXJ0cm9vcGVyLmZha2UvYy8xNzkgSFRUUC8xLjENCiBIb3N0OiBzdXBlcnRyb29wZXIuZmFrZQ0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIENvb2tpZTogbW9vMj1pbmRlZWQNCiANCiA8L3Byb3RvY29sPgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTgzIGIvdGVzdHMvZGF0YS90ZXN0MTgzCmluZGV4IGYzNGRjMGMuLmI0NDcxMDkgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDE4MworKysgYi90ZXN0cy9kYXRhL3Rlc3QxODMKQEAgLTQyLDEzICs0MiwxMSBAQAogVXNlci1BZ2VudDogY3VybC83LjEyLjItQ1ZTIChpNjg2LXBjLWxpbnV4LWdudSkgbGliY3VybC83LjEyLjItQ1ZTIE9wZW5TU0wvMC45LjZiIHpsaWIvMS4xLjQgbGliaWRuLzAuNC42DQogSG9zdDogZGVhdGhzdGFyLmFub3RoZXIuZ2FsYXh5DQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogR0VUIGh0dHA6Ly9hLmdhbGF4eS5mYXIuZmFyLmF3YXkvMTgzIEhUVFAvMS4xDQogVXNlci1BZ2VudDogY3VybC83LjEyLjItQ1ZTIChpNjg2LXBjLWxpbnV4LWdudSkgbGliY3VybC83LjEyLjItQ1ZTIE9wZW5TU0wvMC45LjZiIHpsaWIvMS4xLjQgbGliaWRuLzAuNC42CiBIb3N0OiBhLmdhbGF4eS5mYXIuZmFyLmF3YXkNCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiA8L3Byb3RvY29sPgogCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxODQgYi90ZXN0cy9kYXRhL3Rlc3QxODQKaW5kZXggOGIwOWRkZS4uOWNhZGM4MiAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MTg0CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDE4NApAQCAtNjIsMTIgKzYyLDEwIEBACiBIb3N0OiBhbm90aGVyLnZpc2l0b3Iuc3RheS5hLndoaWxlLnN0YXkuZm9yZWVlZWVldmVyDQogVXNlci1BZ2VudDogY3VybC83LjEyLjItQ1ZTIChpNjg2LXBjLWxpbnV4LWdudSkgbGliY3VybC83LjEyLjItQ1ZTIE9wZW5TU0wvMC45LjZiIHpsaWIvMS4xLjQgbGliaWRuLzAuNC42DQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogR0VUIGh0dHA6Ly95ZXQuYW5vdGhlci5ob3N0LzE4NCBIVFRQLzEuMQ0KIEhvc3Q6IHlldC5hbm90aGVyLmhvc3QNCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiA8L3Byb3RvY29sPgogCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxODUgYi90ZXN0cy9kYXRhL3Rlc3QxODUKaW5kZXggMjk4ZGQ0OS4uZGJlZjZlNyAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MTg1CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDE4NQpAQCAtNjIsMTIgKzYyLDEwIEBACiBIb3N0OiBhbm90aGVyLnZpc2l0b3Iuc3RheS5hLndoaWxlLnN0YXkuZm9yZWVlZWVldmVyDQogVXNlci1BZ2VudDogY3VybC83LjEyLjItQ1ZTIChpNjg2LXBjLWxpbnV4LWdudSkgbGliY3VybC83LjEyLjItQ1ZTIE9wZW5TU0wvMC45LjZiIHpsaWIvMS4xLjQgbGliaWRuLzAuNC42DQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogR0VUIGh0dHA6Ly9kZWF0aHN0YXIuYW5vdGhlci5nYWxheHkvZ28vd2VzdC8xODUgSFRUUC8xLjENCiBIb3N0OiBhbm90aGVyLnZpc2l0b3Iuc3RheS5hLndoaWxlLnN0YXkuZm9yZWVlZWVldmVyDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogPC9wcm90b2NvbD4KIApkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTkwMiBiL3Rlc3RzL2RhdGEvdGVzdDE5MDIKaW5kZXggNTU1YjQ4Ni4uNTMzZWQ1NSAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MTkwMgorKysgYi90ZXN0cy9kYXRhL3Rlc3QxOTAyCkBAIC00OCwxMSArNDgsMTEgQEAKIDxmaWxlIG5hbWU9ImxvZy91cmxzLnR4dCI+CiAwIDFrLnR4dAogMTAwMCBjb25uZWN0aW9uX2Nsb3NlLnR4dAotMCAxay50eHQKLTAgMWsudHh0Ci0wIDFrLnR4dAotMCAxay50eHQKLTAgMWsudHh0CisxIDFrLnR4dAorMiAxay50eHQKKzMgMWsudHh0Cis0IDFrLnR4dAorNSAxay50eHQKIDwvZmlsZT4KIDwvY2xpZW50PgogCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QyMDAyIGIvdGVzdHMvZGF0YS90ZXN0MjAwMgppbmRleCBmMzljZDYwLi5kYjk2YmZlIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QyMDAyCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDIwMDIKQEAgLTg4LDggKzg4LDExIEBACiBTSVpFIDIwMDIwMDAyDQogUkVUUiAyMDAyMDAwMg0KIG9wY29kZTogMQotZmlsZW5hbWU6IC8yMDAyMDAwMwogbW9kZTogb2N0ZXQKK3RzaXplOiAwCitibGtzaXplOiA1MTIKK3RpbWVvdXQ6IDYKK2ZpbGVuYW1lOiAvMjAwMjAwMDMKIFFVSVQNCiA8L3Byb3RvY29sPgogPHN0ZG91dD4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDIwMDMgYi90ZXN0cy9kYXRhL3Rlc3QyMDAzCmluZGV4IDU3YzBkMjQuLjU5YTc0M2YgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDIwMDMKKysrIGIvdGVzdHMvZGF0YS90ZXN0MjAwMwpAQCAtODgsMTEgKzg4LDE3IEBACiBTSVpFIDIwMDMwMDAyDQogUkVUUiAyMDAzMDAwMg0KIG9wY29kZTogMQotZmlsZW5hbWU6IC8yMDAzMDAwMwogbW9kZTogb2N0ZXQKK3RzaXplOiAwCitibGtzaXplOiA1MTIKK3RpbWVvdXQ6IDYKK2ZpbGVuYW1lOiAvMjAwMzAwMDMKIG9wY29kZTogMQotZmlsZW5hbWU6IC8yMDAzMDAwMwogbW9kZTogb2N0ZXQKK3RzaXplOiAwCitibGtzaXplOiA1MTIKK3RpbWVvdXQ6IDYKK2ZpbGVuYW1lOiAvMjAwMzAwMDMKIEVQU1YNCiBTSVpFIDIwMDMwMDAyDQogUkVUUiAyMDAzMDAwMg0KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDIwMDQgYi90ZXN0cy9kYXRhL3Rlc3QyMDA0CmluZGV4IGJhZDZmN2IuLjgwMzUxODMgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDIwMDQKKysrIGIvdGVzdHMvZGF0YS90ZXN0MjAwNApAQCAtNDMsMTEgKzQzLDE3IEBACiA8dmVyaWZ5PgogPHByb3RvY29sPgogb3Bjb2RlOiAxCi1maWxlbmFtZTogLzIwMDQKIG1vZGU6IG9jdGV0Cit0c2l6ZTogMAorYmxrc2l6ZTogNTEyCit0aW1lb3V0OiA2CitmaWxlbmFtZTogLzIwMDQKIG9wY29kZTogMQotZmlsZW5hbWU6IC8yMDA0CiBtb2RlOiBvY3RldAordHNpemU6IDAKK2Jsa3NpemU6IDUxMgordGltZW91dDogNgorZmlsZW5hbWU6IC8yMDA0CiA8L3Byb3RvY29sPgogPHN0ZG91dD4KIFRlc3QgZGF0YSBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QyMDQxIGIvdGVzdHMvZGF0YS90ZXN0MjA0MQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kY2FkMmZkCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvZGF0YS90ZXN0MjA0MQpAQCAtMCwwICsxLDU4IEBACis8dGVzdGNhc2U+Cis8aW5mbz4KKzxrZXl3b3Jkcz4KK0hUVFBTCitIVFRQIEdFVAorUEVNIGNlcnRpZmljYXRlCis8L2tleXdvcmRzPgorPC9pbmZvPgorCisjCisjIFNlcnZlci1zaWRlCis8cmVwbHk+Cis8ZGF0YT4KK0hUVFAvMS4xIDIwMCBPSworRGF0ZTogVGh1LCAwOSBOb3YgMjAxMCAxNDo0OTowMCBHTVQKK1NlcnZlcjogdGVzdC1zZXJ2ZXIvZmFrZQorQ29udGVudC1MZW5ndGg6IDcKKworTW9vTW9vCis8L2RhdGE+Cis8L3JlcGx5PgorCisjCisjIENsaWVudC1zaWRlCis8Y2xpZW50PgorPGZlYXR1cmVzPgorU1NMCitTU0xwaW5uaW5nCis8L2ZlYXR1cmVzPgorPHNlcnZlcj4KK2h0dHBzIFNlcnZlci1sb2NhbGhvc3Qtc3YucGVtCis8L3NlcnZlcj4KKyA8bmFtZT4KK3NpbXBsZSBIVFRQUyBHRVQgd2l0aCBiYXNlNjQtc2hhMjU2IHB1YmxpYyBrZXkgcGlubmluZworIDwvbmFtZT4KKyA8Y29tbWFuZD4KKy0tY2FjZXJ0ICVTUkNESVIvY2VydHMvRWRlbEN1cmxSb290LWNhLmNydCAtLXBpbm5lZHB1YmtleSBzaGEyNTYvL3B5aCtmSUNpOU04TUZFWnZoZXJJVDBjczNNTitjWE5Hb1U5R2l3eXgxc289IGh0dHBzOi8vbG9jYWxob3N0OiVIVFRQU1BPUlQvMjA0MQorPC9jb21tYW5kPgorIyBFbnN1cmUgdGhhdCB3ZSdyZSBydW5uaW5nIG9uIGxvY2FsaG9zdCBiZWNhdXNlIHdlJ3JlIGNoZWNraW5nIHRoZSBob3N0IG5hbWUKKzxwcmVjaGVjaz4KK3BlcmwgLWUgInByaW50ICdUZXN0IHJlcXVpcmVzIGRlZmF1bHQgdGVzdCBzZXJ2ZXIgaG9zdCcgaWYgKCAnJUhPU1RJUCcgbmUgJzEyNy4wLjAuMScgKTsiCis8L3ByZWNoZWNrPgorPC9jbGllbnQ+CisKKyMKKyMgVmVyaWZ5IGRhdGEgYWZ0ZXIgdGhlIHRlc3QgaGFzIGJlZW4gInNob3QiCis8dmVyaWZ5PgorPHN0cmlwPgorXlVzZXItQWdlbnQ6LioKKzwvc3RyaXA+Cis8cHJvdG9jb2w+CitHRVQgLzIwNDEgSFRUUC8xLjENCitIb3N0OiBsb2NhbGhvc3Q6JUhUVFBTUE9SVA0KK0FjY2VwdDogKi8qDQorDQorPC9wcm90b2NvbD4KKzwvdmVyaWZ5PgorPC90ZXN0Y2FzZT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDIwNDIgYi90ZXN0cy9kYXRhL3Rlc3QyMDQyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxODFlNTMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9kYXRhL3Rlc3QyMDQyCkBAIC0wLDAgKzEsNDQgQEAKKzx0ZXN0Y2FzZT4KKzxpbmZvPgorPGtleXdvcmRzPgorSFRUUFMKK0hUVFAgR0VUCitQRU0gY2VydGlmaWNhdGUKKzwva2V5d29yZHM+Cis8L2luZm8+CisKKyMKKyMgU2VydmVyLXNpZGUKKzxyZXBseT4KKzwvcmVwbHk+CisKKyMKKyMgQ2xpZW50LXNpZGUKKzxjbGllbnQ+Cis8ZmVhdHVyZXM+CitTU0wKK1NTTHBpbm5pbmcKKzwvZmVhdHVyZXM+Cis8c2VydmVyPgoraHR0cHMgU2VydmVyLWxvY2FsaG9zdC1zdi5wZW0KKzwvc2VydmVyPgorIDxuYW1lPgorSFRUUFMgd3JvbmcgYmFzZTY0LXNoYTI1NiBwaW5uZWRwdWJrZXkgYnV0IHJpZ2h0IENOCisgPC9uYW1lPgorIDxjb21tYW5kPgorLS1jYWNlcnQgJVNSQ0RJUi9jZXJ0cy9FZGVsQ3VybFJvb3QtY2EuY3J0IC0tcGlubmVkcHVia2V5IHNoYTI1Ni8vYlNJZ2dUZitpa01HMEN0bURscE1WQmQ3eWk3SDFtZDRVUm9nUlBxZXJzbz0gaHR0cHM6Ly9sb2NhbGhvc3Q6JUhUVFBTUE9SVC8yMDQyCis8L2NvbW1hbmQ+CisjIEVuc3VyZSB0aGF0IHdlJ3JlIHJ1bm5pbmcgb24gbG9jYWxob3N0IGJlY2F1c2Ugd2UncmUgY2hlY2tpbmcgdGhlIGhvc3QgbmFtZQorPHByZWNoZWNrPgorcGVybCAtZSAicHJpbnQgJ1Rlc3QgcmVxdWlyZXMgZGVmYXVsdCB0ZXN0IHNlcnZlciBob3N0JyBpZiAoICclSE9TVElQJyBuZSAnMTI3LjAuMC4xJyApOyIKKzwvcHJlY2hlY2s+Cis8L2NsaWVudD4KKworIworIyBWZXJpZnkgZGF0YSBhZnRlciB0aGUgdGVzdCBoYXMgYmVlbiAic2hvdCIKKzx2ZXJpZnk+Cis8ZXJyb3Jjb2RlPgorOTAKKzwvZXJyb3Jjb2RlPgorPC92ZXJpZnk+Cis8L3Rlc3RjYXNlPgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MjA0MyBiL3Rlc3RzL2RhdGEvdGVzdDIwNDMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2E5MWY1YgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDIwNDMKQEAgLTAsMCArMSwzMyBAQAorPHRlc3RjYXNlPgorPGluZm8+Cis8a2V5d29yZHM+CitIVFRQUworSFRUUCBHRVQKKzwva2V5d29yZHM+Cis8L2luZm8+CisKKyMKKyMgQ2xpZW50LXNpZGUKKzxjbGllbnQ+Cis8ZmVhdHVyZXM+CitXaW5TU0wKKzwvZmVhdHVyZXM+Cis8c2VydmVyPgorbm9uZQorPC9zZXJ2ZXI+CisgPG5hbWU+CitEaXNhYmxlIGNlcnRpZmljYXRlIHJldm9jYXRpb24gY2hlY2tzCisgPC9uYW1lPgorIDxjb21tYW5kPgorLS1zc2wtbm8tcmV2b2tlIC1JIGh0dHBzOi8vcmV2b2tlZC5ncmMuY29tLworPC9jb21tYW5kPgorPC9jbGllbnQ+CisKKyMKKyMgVmVyaWZ5IGRhdGEgYWZ0ZXIgdGhlIHRlc3QgaGFzIGJlZW4gInNob3QiCis8dmVyaWZ5PgorPGVycm9yY29kZT4KKzAKKzwvZXJyb3Jjb2RlPgorPC92ZXJpZnk+Cis8L3Rlc3RjYXNlPgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MjA0NCBiL3Rlc3RzL2RhdGEvdGVzdDIwNDQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzNlODFhOAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDIwNDQKQEAgLTAsMCArMSwzMyBAQAorPHRlc3RjYXNlPgorPGluZm8+Cis8a2V5d29yZHM+CistLXByb3RvLWRlZmF1bHQKKzwva2V5d29yZHM+Cis8L2luZm8+CisKKyMKKyMgQ2xpZW50LXNpZGUKKzxjbGllbnQ+Cis8ZmVhdHVyZXM+Citub25lCis8L2ZlYXR1cmVzPgorPHNlcnZlcj4KK25vbmUKKzwvc2VydmVyPgorPG5hbWU+CitBdHRlbXB0IHRvIHNldCBhIGRlZmF1bHQgcHJvdG9jb2wgdGhhdCBkb2VzIG5vdCBleGlzdAorPC9uYW1lPgorPGNvbW1hbmQ+CistLXByb3RvLWRlZmF1bHQgRE9FU05PVEVYSVNUCis8L2NvbW1hbmQ+Cis8L2NsaWVudD4KKworIworIyBWZXJpZnkgZGF0YSBhZnRlciB0aGUgdGVzdCBoYXMgYmVlbiAic2hvdCIKKzx2ZXJpZnk+CisjIENVUkxFX1VOU1VQUE9SVEVEX1BST1RPQ09MIGlzIGVycm9yIGNvZGUgMQorPGVycm9yY29kZT4KKzEKKzwvZXJyb3Jjb2RlPgorPC92ZXJpZnk+Cis8L3Rlc3RjYXNlPgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MjA0NSBiL3Rlc3RzL2RhdGEvdGVzdDIwNDUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzE5MGY4MAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDIwNDUKQEAgLTAsMCArMSw1NCBAQAorPHRlc3RjYXNlPgorPGluZm8+Cis8a2V5d29yZHM+CitGVFAKKy0tcHJvdG8tZGVmYXVsdAorPC9rZXl3b3Jkcz4KKzwvaW5mbz4KKworCisjCisjIFNlcnZlci1zaWRlCis8cmVwbHk+Cis8IS0tCitUaGUgcHVycG9zZSBvZiB0aGlzIHRlc3QgaXMgdG8gbWFrZSBzdXJlIHRoZSAtLXByb3RvLWRlZmF1bHQgb3B0aW9uIHdvcmtzCitwcm9wZXJseS4gV2Ugc3BlY2lmeSBhIGRlZmF1bHQgcHJvdG9jb2wgb2YgRlRQIGFuZCBpZiB0aGUgb3B0aW9uIHdvcmtzIHByb3Blcmx5CitjdXJsIHdpbGwgdXNlIHRoZSBGVFAgcHJvdG9jb2wuIElmIHRoZSBvcHRpb24gaXMgYnJva2VuIGhvd2V2ZXIgY3VybCB3aWxsIHVzZQordGhlIEhUVFAgcHJvdG9jb2wuCitJbiB0aGUgYnJva2VuIHNjZW5hcmlvIGN1cmwgd291bGQgdXNlIEhUVFAgdG8gdGFsayB0byBvdXIgRlRQIHNlcnZlci4gV2UgaGFuZGxlCit0aGF0IGJ5IHJlcGx5aW5nIHdpdGggc29tZXRoaW5nIHRoYXQgYm90aCBwcm90b2NvbHMgY2FuIHVuZGVyc3RhbmQuIE91ciBGVFAKK3NlcnZlciBhbGxvd3MgYSBjdXN0b20gd2VsY29tZSBtZXNzYWdlLCBzbyB3ZSB1c2UgdGhhdCBmZWF0dXJlIHRvIG1ha2UgYW4gSFRUUAorcmVwbHkgdGhhdCBjb250YWlucyBhbiBGVFAgcmVwbHkgKHRoaW5rIHBvbHlnbG90KS4gSW4gdGhlIGNhc2Ugb2YgRlRQIHdlIGV4cGVjdAorY3VybCB3aWxsIHJldHVybiBDVVJMRV9GVFBfV0VJUkRfU0VSVkVSX1JFUExZIHNvIHdlIHRlc3QgZm9yIHRoYXQgcmV0dXJuIGNvZGUuCistLT4KKzxzZXJ2ZXJjbWQ+CitSRVBMWSB3ZWxjb21lIEhUVFAvMS4xIDIwMCBPS1xyXG5Db250ZW50LUxlbmd0aDogMjFcclxuXHJcbjUwMCBXZWlyZCBGVFAgUmVwbHkKKzwvc2VydmVyY21kPgorPC9yZXBseT4KKworIworIyBDbGllbnQtc2lkZQorPGNsaWVudD4KKzxmZWF0dXJlcz4KK25vbmUKKzwvZmVhdHVyZXM+Cis8c2VydmVyPgorZnRwCis8L3NlcnZlcj4KKzxuYW1lPgorU2V0IHRoZSBkZWZhdWx0IHByb3RvY29sIHRvIGZ0cCBmb3IgYSBzY2hlbWVsZXNzIFVSTAorPC9uYW1lPgorPGNvbW1hbmQ+CistSCAiVXNlci1BZ2VudDoiIC1IICJIb3N0OiIgLUggIkFjY2VwdDoiIC0tcHJvdG8tZGVmYXVsdCBmdHAgJUhPU1RJUDolRlRQUE9SVAorPC9jb21tYW5kPgorPC9jbGllbnQ+CisKKyMKKyMgVmVyaWZ5IGRhdGEgYWZ0ZXIgdGhlIHRlc3QgaGFzIGJlZW4gInNob3QiCis8dmVyaWZ5PgorIyBDVVJMRV9GVFBfV0VJUkRfU0VSVkVSX1JFUExZIGlzIGVycm9yIGNvZGUgOAorPGVycm9yY29kZT4KKzgKKzwvZXJyb3Jjb2RlPgorPC92ZXJpZnk+Cis8L3Rlc3RjYXNlPgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MjA0NiBiL3Rlc3RzL2RhdGEvdGVzdDIwNDYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTMzYzE0ZAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDIwNDYKQEAgLTAsMCArMSw5NCBAQAorPHRlc3RjYXNlPgorPGluZm8+Cis8a2V5d29yZHM+CitIVFRQCitIVFRQIEdFVAorSUROCitmb2xsb3dsb2NhdGlvbgorLS13cml0ZS1vdXQKKzwva2V5d29yZHM+Cis8L2luZm8+CisKKyMKKyMgU2VydmVyLXNpZGUKKzxyZXBseT4KKzxkYXRhIG5vY2hlY2s9InllcyI+CitIVFRQLzEuMSAzMDIgT0sgc3dzYm91bmNlCitEYXRlOiBUaHUsIDA5IE5vdiAyMDEwIDE0OjQ5OjAwIEdNVAorQ29udGVudC1MZW5ndGg6IDkKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbgorTG9jYXRpb246IC4vMjA0NjAwMDEKKworcmVkaXJlY3QKKzwvZGF0YT4KKzxkYXRhMSBub2NoZWNrPSJ5ZXMiPgorSFRUUC8xLjEgMjAwIE9LCitEYXRlOiBUaHUsIDA5IE5vdiAyMDEwIDE0OjQ5OjAwIEdNVAorQ29udGVudC1MZW5ndGg6IDMKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD11cy1hc2NpaQorCitPSworPC9kYXRhMT4KKzwvcmVwbHk+CisKKyMKKyMgQ2xpZW50LXNpZGUKKzxjbGllbnQ+Cis8c2VydmVyPgoraHR0cAorPC9zZXJ2ZXI+Cis8ZmVhdHVyZXM+CitpZG4KKzwvZmVhdHVyZXM+Cis8c2V0ZW52PgorQ0hBUlNFVD1VVEYtOAorPC9zZXRlbnY+CisgPG5hbWU+CitDb25uZWN0aW9uIHJlLXVzZSB3aXRoIElETiBob3N0IG5hbWUKKyA8L25hbWU+CisKKyA8Y29tbWFuZD4KK2h0dHA6Ly/DpcOkw7Yuc2U6JUhUVFBQT1JULzIwNDYgLS1yZXNvbHZlIHhuLS00Y2FiNmMuc2U6JUhUVFBQT1JUOiVIT1NUSVAgLXcgIiV7bnVtX2Nvbm5lY3RzfVxuJXtudW1fcmVkaXJlY3RzfVxuJXtzaXplX2Rvd25sb2FkfVxuJXt1cmxfZWZmZWN0aXZlfVxuJXtjb250ZW50X3R5cGV9XG4le3Jlc3BvbnNlX2NvZGV9XG4iIC1MCis8L2NvbW1hbmQ+Cis8L2NsaWVudD4KKworIworIyBWZXJpZnkgZGF0YSBhZnRlciB0aGUgdGVzdCBoYXMgYmVlbiAic2hvdCIKKzx2ZXJpZnk+Cis8c3RyaXA+CiteVXNlci1BZ2VudDouKgorPC9zdHJpcD4KKzxwcm90b2NvbD4KK0dFVCAvMjA0NiBIVFRQLzEuMQ0KK0hvc3Q6IHhuLS00Y2FiNmMuc2U6JUhUVFBQT1JUDQorQWNjZXB0OiAqLyoNCisNCitHRVQgLzIwNDYwMDAxIEhUVFAvMS4xDQorSG9zdDogeG4tLTRjYWI2Yy5zZTolSFRUUFBPUlQNCitBY2NlcHQ6ICovKg0KKw0KKzwvcHJvdG9jb2w+CisKKzxzdGRvdXQ+CitIVFRQLzEuMSAzMDIgT0sgc3dzYm91bmNlCitEYXRlOiBUaHUsIDA5IE5vdiAyMDEwIDE0OjQ5OjAwIEdNVAorQ29udGVudC1MZW5ndGg6IDkKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbgorTG9jYXRpb246IC4vMjA0NjAwMDEKKworSFRUUC8xLjEgMjAwIE9LCitEYXRlOiBUaHUsIDA5IE5vdiAyMDEwIDE0OjQ5OjAwIEdNVAorQ29udGVudC1MZW5ndGg6IDMKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD11cy1hc2NpaQorCitPSworMQorMQorMworaHR0cDovL8Olw6TDti5zZTolSFRUUFBPUlQvMjA0NjAwMDEKK3RleHQvcGxhaW47IGNoYXJzZXQ9dXMtYXNjaWkKKzIwMAorPC9zdGRvdXQ+CisKKzwvdmVyaWZ5PgorPC90ZXN0Y2FzZT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDIwNDcgYi90ZXN0cy9kYXRhL3Rlc3QyMDQ3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4Y2NhMmYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9kYXRhL3Rlc3QyMDQ3CkBAIC0wLDAgKzEsOTUgQEAKKzx0ZXN0Y2FzZT4KKzxpbmZvPgorPGtleXdvcmRzPgorSFRUUAorSFRUUCBHRVQKK0hUVFAgcHJveHkKK0lETgorZm9sbG93bG9jYXRpb24KKy0td3JpdGUtb3V0Cis8L2tleXdvcmRzPgorPC9pbmZvPgorCisjCisjIFNlcnZlci1zaWRlCis8cmVwbHk+Cis8ZGF0YSBub2NoZWNrPSJ5ZXMiPgorSFRUUC8xLjEgMzAyIE9LIHN3c2JvdW5jZQorRGF0ZTogVGh1LCAwOSBOb3YgMjAxMCAxNDo0OTowMCBHTVQKK0NvbnRlbnQtTGVuZ3RoOiA5CitDb250ZW50LVR5cGU6IHRleHQvcGxhaW4KK0xvY2F0aW9uOiAuLzIwNDcwMDAxCisKK3JlZGlyZWN0Cis8L2RhdGE+Cis8ZGF0YTEgbm9jaGVjaz0ieWVzIj4KK0hUVFAvMS4xIDIwMCBPSworRGF0ZTogVGh1LCAwOSBOb3YgMjAxMCAxNDo0OTowMCBHTVQKK0NvbnRlbnQtTGVuZ3RoOiAzCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXMtYXNjaWkKKworT0sKKzwvZGF0YTE+Cis8L3JlcGx5PgorCisjCisjIENsaWVudC1zaWRlCis8Y2xpZW50PgorPHNlcnZlcj4KK2h0dHAKKzwvc2VydmVyPgorPGZlYXR1cmVzPgoraWRuCis8L2ZlYXR1cmVzPgorPHNldGVudj4KK0NIQVJTRVQ9VVRGLTgKKzwvc2V0ZW52PgorIDxuYW1lPgorQ29ubmVjdGlvbiByZS11c2Ugd2l0aCBJRE4gaG9zdCBuYW1lIG92ZXIgSFRUUCBwcm94eQorIDwvbmFtZT4KKworIDxjb21tYW5kPgoraHR0cDovL8Olw6TDti5zZS8yMDQ3IC14ICVIT1NUSVA6JUhUVFBQT1JUIC13ICIle251bV9jb25uZWN0c31cbiV7bnVtX3JlZGlyZWN0c31cbiV7c2l6ZV9kb3dubG9hZH1cbiV7dXJsX2VmZmVjdGl2ZX1cbiV7Y29udGVudF90eXBlfVxuJXtyZXNwb25zZV9jb2RlfVxuIiAtTAorPC9jb21tYW5kPgorPC9jbGllbnQ+CisKKyMKKyMgVmVyaWZ5IGRhdGEgYWZ0ZXIgdGhlIHRlc3QgaGFzIGJlZW4gInNob3QiCis8dmVyaWZ5PgorPHN0cmlwPgorXlVzZXItQWdlbnQ6LioKKzwvc3RyaXA+Cis8cHJvdG9jb2w+CitHRVQgaHR0cDovL3huLS00Y2FiNmMuc2UvMjA0NyBIVFRQLzEuMQ0KK0hvc3Q6IHhuLS00Y2FiNmMuc2UNCitBY2NlcHQ6ICovKg0KKw0KK0dFVCBodHRwOi8veG4tLTRjYWI2Yy5zZS8yMDQ3MDAwMSBIVFRQLzEuMQ0KK0hvc3Q6IHhuLS00Y2FiNmMuc2UNCitBY2NlcHQ6ICovKg0KKw0KKzwvcHJvdG9jb2w+CisKKzxzdGRvdXQ+CitIVFRQLzEuMSAzMDIgT0sgc3dzYm91bmNlCitEYXRlOiBUaHUsIDA5IE5vdiAyMDEwIDE0OjQ5OjAwIEdNVAorQ29udGVudC1MZW5ndGg6IDkKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbgorTG9jYXRpb246IC4vMjA0NzAwMDEKKworSFRUUC8xLjEgMjAwIE9LCitEYXRlOiBUaHUsIDA5IE5vdiAyMDEwIDE0OjQ5OjAwIEdNVAorQ29udGVudC1MZW5ndGg6IDMKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD11cy1hc2NpaQorCitPSworMQorMQorMworaHR0cDovL3huLS00Y2FiNmMuc2UvMjA0NzAwMDEKK3RleHQvcGxhaW47IGNoYXJzZXQ9dXMtYXNjaWkKKzIwMAorPC9zdGRvdXQ+CisKKzwvdmVyaWZ5PgorPC90ZXN0Y2FzZT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDIwNDggYi90ZXN0cy9kYXRhL3Rlc3QyMDQ4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViMmIxZGYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9kYXRhL3Rlc3QyMDQ4CkBAIC0wLDAgKzEsNDAgQEAKKzx0ZXN0Y2FzZT4KKzxpbmZvPgorPGtleXdvcmRzPgorSFRUUFMKK0hUVFAgR0VUCitQRU0gY2VydGlmaWNhdGUKKzwva2V5d29yZHM+Cis8L2luZm8+CisKKyMKKyMgU2VydmVyLXNpZGUKKzxyZXBseT4KKzwvcmVwbHk+CisKKyMKKyMgQ2xpZW50LXNpZGUKKzxjbGllbnQ+Cis8ZmVhdHVyZXM+CitTU0wKK1NTTHBpbm5pbmcKKzwvZmVhdHVyZXM+Cis8c2VydmVyPgoraHR0cHMgU2VydmVyLWxvY2FsaG9zdC1zdi5wZW0KKzwvc2VydmVyPgorPG5hbWU+CitwaW5uZWRwdWJrZXkgbm8tbWF0Y2ggbXVzdCBmYWlsIGV2ZW4gd2hlbiBpbnNlY3VyZQorPC9uYW1lPgorPGNvbW1hbmQ+CistLWluc2VjdXJlIC0tY2FjZXJ0ICVTUkNESVIvY2VydHMvRWRlbEN1cmxSb290LWNhLmNydCAtLXBpbm5lZHB1YmtleSAlU1JDRElSL2NlcnRzL1NlcnZlci1sb2NhbGhvc3Qubm4tc3YucHViLmRlciBodHRwczovL2xvY2FsaG9zdDolSFRUUFNQT1JULzIwMzQKKzwvY29tbWFuZD4KKzwvY2xpZW50PgorCisjCisjIFZlcmlmeSBkYXRhIGFmdGVyIHRoZSB0ZXN0IGhhcyBiZWVuICJzaG90IgorPHZlcmlmeT4KKzxlcnJvcmNvZGU+Cis5MAorPC9lcnJvcmNvZGU+Cis8L3ZlcmlmeT4KKzwvdGVzdGNhc2U+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QyMDQ5IGIvdGVzdHMvZGF0YS90ZXN0MjA0OQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZmE1NzZlCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvZGF0YS90ZXN0MjA0OQpAQCAtMCwwICsxLDY0IEBACis8dGVzdGNhc2U+Cis8aW5mbz4KKzxrZXl3b3Jkcz4KK0hUVFAKK0hUVFAgR0VUCitDVVJMT1BUX0NPTk5FQ1RfVE8KKzwva2V5d29yZHM+Cis8L2luZm8+CisKKyMKKyMgU2VydmVyLXNpZGUKKzxyZXBseT4KKzxkYXRhPgorSFRUUC8xLjEgMjAwIE9LCitEYXRlOiBUaHUsIDA5IE5vdiAyMDEwIDE0OjQ5OjAwIEdNVAorQ29udGVudC1MZW5ndGg6IDMKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbgorCitPSworPC9kYXRhPgorPC9yZXBseT4KKworIworIyBDbGllbnQtc2lkZQorPGNsaWVudD4KKzxzZXJ2ZXI+CitodHRwCis8L3NlcnZlcj4KKyA8bmFtZT4KK0Nvbm5lY3QgdG8gc3BlY2lmaWMgaG9zdAorIDwvbmFtZT4KKworIDxjb21tYW5kPgoraHR0cDovL3d3dzEuZXhhbXBsZS5jb206ODA4MS8yMDQ5IC0tY29ubmVjdC10byA6OiVIT1NUSVA6JUhUVFBQT1JUIC0tbmV4dCBodHRwOi8vd3d3Mi5leGFtcGxlLmNvbTo4MDgyLzIwNDkgLS1jb25uZWN0LXRvIDo4MDgyOiVIT1NUSVA6JUhUVFBQT1JUIC0tbmV4dCBodHRwOi8vd3d3My5leGFtcGxlLmNvbTo4MDgzLzIwNDkgLS1jb25uZWN0LXRvIHd3dzMuZXhhbXBsZS5jb206OiVIT1NUSVA6JUhUVFBQT1JUIC0tbmV4dCBodHRwOi8vd3d3NC5leGFtcGxlLmNvbTo4MDg0LzIwNDkgLS1jb25uZWN0LXRvIHd3dzQuZXhhbXBsZS5jb206ODA4NDolSE9TVElQOiVIVFRQUE9SVAorPC9jb21tYW5kPgorPC9jbGllbnQ+CisKKyMKKyMgVmVyaWZ5IGRhdGEgYWZ0ZXIgdGhlIHRlc3QgaGFzIGJlZW4gInNob3QiCis8dmVyaWZ5PgorPHN0cmlwPgorXlVzZXItQWdlbnQ6LioKKzwvc3RyaXA+Cis8cHJvdG9jb2w+CitHRVQgLzIwNDkgSFRUUC8xLjENCitIb3N0OiB3d3cxLmV4YW1wbGUuY29tOjgwODENCitBY2NlcHQ6ICovKg0KKw0KK0dFVCAvMjA0OSBIVFRQLzEuMQ0KK0hvc3Q6IHd3dzIuZXhhbXBsZS5jb206ODA4Mg0KK0FjY2VwdDogKi8qDQorDQorR0VUIC8yMDQ5IEhUVFAvMS4xDQorSG9zdDogd3d3My5leGFtcGxlLmNvbTo4MDgzDQorQWNjZXB0OiAqLyoNCisNCitHRVQgLzIwNDkgSFRUUC8xLjENCitIb3N0OiB3d3c0LmV4YW1wbGUuY29tOjgwODQNCitBY2NlcHQ6ICovKg0KKw0KKzwvcHJvdG9jb2w+CisKKzwvdmVyaWZ5PgorPC90ZXN0Y2FzZT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDIwNTAgYi90ZXN0cy9kYXRhL3Rlc3QyMDUwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwNWU4NzIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9kYXRhL3Rlc3QyMDUwCkBAIC0wLDAgKzEsNzcgQEAKKzx0ZXN0Y2FzZT4KKzxpbmZvPgorPGtleXdvcmRzPgorSFRUUAorSFRUUCBHRVQKK0hUVFAgQ09OTkVDVAorSFRUUCBwcm94eQorcHJveHl0dW5uZWwKK0NVUkxPUFRfQ09OTkVDVF9UTworPC9rZXl3b3Jkcz4KKzwvaW5mbz4KKworIworIyBTZXJ2ZXItc2lkZQorPHJlcGx5PgorPGNvbm5lY3Q+CitIVFRQLzEuMSAyMDAgQ29ubmVjdGlvbiBlc3RhYmxpc2hlZAorCis8L2Nvbm5lY3Q+CisKKzxkYXRhPgorSFRUUC8xLjEgMjAwIE9LCitEYXRlOiBUaHUsIDA5IE5vdiAyMDEwIDE0OjQ5OjAwIEdNVAorQ29udGVudC1MZW5ndGg6IDMKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbgorCitPSworPC9kYXRhPgorCis8ZGF0YWNoZWNrPgorSFRUUC8xLjEgMjAwIENvbm5lY3Rpb24gZXN0YWJsaXNoZWQKKworSFRUUC8xLjEgMjAwIE9LCitEYXRlOiBUaHUsIDA5IE5vdiAyMDEwIDE0OjQ5OjAwIEdNVAorQ29udGVudC1MZW5ndGg6IDMKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbgorCitPSworPC9kYXRhY2hlY2s+Cis8L3JlcGx5PgorCisjCisjIENsaWVudC1zaWRlCis8Y2xpZW50PgorPHNlcnZlcj4KK2h0dHAKK2h0dHAtcHJveHkKKzwvc2VydmVyPgorIDxuYW1lPgorQ29ubmVjdCB0byBzcGVjaWZpYyBob3N0IHZpYSBIVFRQIHByb3h5IChzd2l0Y2ggdG8gdHVubmVsIG1vZGUgYXV0b21hdGljYWxseSkKKyA8L25hbWU+CisKKyA8Y29tbWFuZD4KK2h0dHA6Ly93d3cuZXhhbXBsZS5jb20uMjA1MC8yMDUwIC0tY29ubmVjdC10byA6OmNvbm5lY3QuZXhhbXBsZS5jb20uMjA1MDolSFRUUFBPUlQgLXggJUhPU1RJUDolUFJPWFlQT1JUCis8L2NvbW1hbmQ+Cis8L2NsaWVudD4KKworIworIyBWZXJpZnkgZGF0YSBhZnRlciB0aGUgdGVzdCBoYXMgYmVlbiAic2hvdCIKKzx2ZXJpZnk+Cis8c3RyaXA+CiteVXNlci1BZ2VudDouKgorPC9zdHJpcD4KKzxwcm94eT4KK0NPTk5FQ1QgY29ubmVjdC5leGFtcGxlLmNvbS4yMDUwOiVIVFRQUE9SVCBIVFRQLzEuMQ0KK0hvc3Q6IGNvbm5lY3QuZXhhbXBsZS5jb20uMjA1MDolSFRUUFBPUlQNCisNCis8L3Byb3h5PgorPHByb3RvY29sPgorR0VUIC8yMDUwIEhUVFAvMS4xDQorSG9zdDogd3d3LmV4YW1wbGUuY29tLjIwNTANCitBY2NlcHQ6ICovKg0KKw0KKzwvcHJvdG9jb2w+CisKKzwvdmVyaWZ5PgorPC90ZXN0Y2FzZT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDIwNTEgYi90ZXN0cy9kYXRhL3Rlc3QyMDUxCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4YzZiZWQKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9kYXRhL3Rlc3QyMDUxCkBAIC0wLDAgKzEsNzQgQEAKKzx0ZXN0Y2FzZT4KKzxpbmZvPgorPGtleXdvcmRzPgorSFRUUAorSFRUUCBHRVQKK0NVUkxPUFRfQ09OTkVDVF9UTworPC9rZXl3b3Jkcz4KKzwvaW5mbz4KKworIworIyBTZXJ2ZXItc2lkZQorPHJlcGx5PgorPGRhdGEgbm9jaGVjaz0ieWVzIj4KK0hUVFAvMS4xIDIwMCBPSworRGF0ZTogVGh1LCAwOSBOb3YgMjAxMCAxNDo0OTowMCBHTVQKK0NvbnRlbnQtTGVuZ3RoOiAzCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW4KKworT0sKKzwvZGF0YT4KKzwvcmVwbHk+CisKKyMKKyMgQ2xpZW50LXNpZGUKKzxjbGllbnQ+Cis8c2VydmVyPgoraHR0cAorPC9zZXJ2ZXI+CisgPG5hbWU+CitDb25uZWN0IHRvIHNwZWNpZmljIGhvc3Q6IFJlLXVzZSBleGlzdGluZyBjb25uZWN0aW9ucyBpZiBwb3NzaWJsZQorIDwvbmFtZT4KKworIDxjb21tYW5kPgoraHR0cDovLyVIT1NUSVA6JUhUVFBQT1JULzIwNTEgLXcgIiV7bnVtX2Nvbm5lY3RzfVxuIiAtLW5leHQgLS1jb25uZWN0LXRvIDo6JUhPU1RJUDolSFRUUFBPUlQgaHR0cDovLyVIT1NUSVA6JUhUVFBQT1JULzIwNTEgLXcgIiV7bnVtX2Nvbm5lY3RzfVxuIiAtLW5leHQgaHR0cDovLyVIT1NUSVA6JUhUVFBQT1JULzIwNTEgLXcgIiV7bnVtX2Nvbm5lY3RzfVxuIgorPC9jb21tYW5kPgorPC9jbGllbnQ+CisKKyMKKyMgVmVyaWZ5IGRhdGEgYWZ0ZXIgdGhlIHRlc3QgaGFzIGJlZW4gInNob3QiCis8dmVyaWZ5PgorPHN0cmlwPgorXlVzZXItQWdlbnQ6LioKKzwvc3RyaXA+Cis8cHJvdG9jb2w+CitHRVQgLzIwNTEgSFRUUC8xLjENCitIb3N0OiAlSE9TVElQOiVIVFRQUE9SVA0KK0FjY2VwdDogKi8qDQorDQorR0VUIC8yMDUxIEhUVFAvMS4xDQorSG9zdDogJUhPU1RJUDolSFRUUFBPUlQNCitBY2NlcHQ6ICovKg0KKw0KK0dFVCAvMjA1MSBIVFRQLzEuMQ0KK0hvc3Q6ICVIT1NUSVA6JUhUVFBQT1JUDQorQWNjZXB0OiAqLyoNCisNCis8L3Byb3RvY29sPgorCis8c3Rkb3V0PgorSFRUUC8xLjEgMjAwIE9LCitEYXRlOiBUaHUsIDA5IE5vdiAyMDEwIDE0OjQ5OjAwIEdNVAorQ29udGVudC1MZW5ndGg6IDMKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbgorCitPSworMQorT0sKKzAKK09LCiswCis8L3N0ZG91dD4KKworPC92ZXJpZnk+Cis8L3Rlc3RjYXNlPgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MjA1MiBiL3Rlc3RzL2RhdGEvdGVzdDIwNTIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDgyMDAyZgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDIwNTIKQEAgLTAsMCArMSw2OCBAQAorPHRlc3RjYXNlPgorPGluZm8+Cis8a2V5d29yZHM+CitIVFRQCitIVFRQIEdFVAorQ1VSTE9QVF9DT05ORUNUX1RPCis8L2tleXdvcmRzPgorPC9pbmZvPgorCisjCisjIFNlcnZlci1zaWRlCis8cmVwbHk+Cis8ZGF0YSBub2NoZWNrPSJ5ZXMiPgorSFRUUC8xLjEgMjAwIE9LCitEYXRlOiBUaHUsIDA5IE5vdiAyMDEwIDE0OjQ5OjAwIEdNVAorQ29udGVudC1MZW5ndGg6IDMKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbgorCitPSworPC9kYXRhPgorPC9yZXBseT4KKworIworIyBDbGllbnQtc2lkZQorPGNsaWVudD4KKzxzZXJ2ZXI+CitodHRwCis8L3NlcnZlcj4KKyA8bmFtZT4KK0Nvbm5lY3QgdG8gc3BlY2lmaWMgaG9zdDogRG8gbm90IG1peCBjb25uZWN0aW9ucyB3aXRoIGFuZCB3aXRob3V0IGEgImNvbm5lY3QgdG8gaG9zdCIKKyA8L25hbWU+CisKKyA8Y29tbWFuZD4KK2h0dHA6Ly93d3cuZXhhbXBsZS5jb206JUhUVFBQT1JULzIwNTIgLS1yZXNvbHZlIHd3dy5leGFtcGxlLmNvbTolSFRUUFBPUlQ6JUhPU1RJUCAtdyAiJXtudW1fY29ubmVjdHN9XG4iIC0tbmV4dCAtLXJlc29sdmUgLXd3dy5leGFtcGxlLmNvbTolSFRUUFBPUlQgLS1jb25uZWN0LXRvIDo6JUhPU1RJUDolSFRUUFBPUlQgaHR0cDovL3d3dy5leGFtcGxlLmNvbTolSFRUUFBPUlQvMjA1MiAtdyAiJXtudW1fY29ubmVjdHN9XG4iCis8L2NvbW1hbmQ+Cis8L2NsaWVudD4KKworIworIyBWZXJpZnkgZGF0YSBhZnRlciB0aGUgdGVzdCBoYXMgYmVlbiAic2hvdCIKKzx2ZXJpZnk+Cis8c3RyaXA+CiteVXNlci1BZ2VudDouKgorPC9zdHJpcD4KKzxwcm90b2NvbD4KK0dFVCAvMjA1MiBIVFRQLzEuMQ0KK0hvc3Q6IHd3dy5leGFtcGxlLmNvbTolSFRUUFBPUlQNCitBY2NlcHQ6ICovKg0KKw0KK0dFVCAvMjA1MiBIVFRQLzEuMQ0KK0hvc3Q6IHd3dy5leGFtcGxlLmNvbTolSFRUUFBPUlQNCitBY2NlcHQ6ICovKg0KKw0KKzwvcHJvdG9jb2w+CisKKzxzdGRvdXQ+CitIVFRQLzEuMSAyMDAgT0sKK0RhdGU6IFRodSwgMDkgTm92IDIwMTAgMTQ6NDk6MDAgR01UCitDb250ZW50LUxlbmd0aDogMworQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluCisKK09LCisxCitPSworMQorPC9zdGRvdXQ+CisKKzwvdmVyaWZ5PgorPC90ZXN0Y2FzZT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDIwNiBiL3Rlc3RzL2RhdGEvdGVzdDIwNgppbmRleCA1ZjBjODg1Li5lZmJjNTZlIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QyMDYKKysrIGIvdGVzdHMvZGF0YS90ZXN0MjA2CkBAIC05MCwxMiArOTAsMTAgQEAKIDxwcm90b2NvbD4KIENPTk5FQ1QgdGVzdC5yZW1vdGUuaGF4eC5zZS4yMDY6ODk5MCBIVFRQLzEuMQ0KIEhvc3Q6IHRlc3QucmVtb3RlLmhheHguc2UuMjA2Ojg5OTANCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogQ09OTkVDVCB0ZXN0LnJlbW90ZS5oYXh4LnNlLjIwNjo4OTkwIEhUVFAvMS4xDQogSG9zdDogdGVzdC5yZW1vdGUuaGF4eC5zZS4yMDY6ODk5MA0KIFByb3h5LUF1dGhvcml6YXRpb246IERpZ2VzdCB1c2VybmFtZT0ic2lsbHkiLCByZWFsbT0id2VpcmRvcmVhbG0iLCBub25jZT0iMTIzNDUiLCB1cmk9InRlc3QucmVtb3RlLmhheHguc2UuMjA2Ojg5OTAiLCByZXNwb25zZT0iMDAzZTM2ZGVjYjRkYmY2MzY2YjNlY2I5Yjg3YzI0ZWMiDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIEdFVCAvcGF0aC8yMDYwMDAyIEhUVFAvMS4xDQogVXNlci1BZ2VudDogY3VybC83LjEyLjMtQ1ZTIChpNjg2LXBjLWxpbnV4LWdudSkgbGliY3VybC83LjEyLjMtQ1ZTIE9wZW5TU0wvMC45LjZiIHpsaWIvMS4xLjQNCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QyMDggYi90ZXN0cy9kYXRhL3Rlc3QyMDgKaW5kZXggYWZiMjU2Ni4uZmI0YzBlYSAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MjA4CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDIwOApAQCAtNTcsNyArNTcsNiBAQAogSG9zdDogaG9zdC5jb206MjENCiBBdXRob3JpemF0aW9uOiBCYXNpYyBaR0Z1YVdWc09tMTVjMlZqY21WMA0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIENvbnRlbnQtTGVuZ3RoOiA3OA0KIEV4cGVjdDogMTAwLWNvbnRpbnVlDQogDQpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MjA5IGIvdGVzdHMvZGF0YS90ZXN0MjA5CmluZGV4IDk2MWViYTEuLmY4Njg1NDEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDIwOQorKysgYi90ZXN0cy9kYXRhL3Rlc3QyMDkKQEAgLTEwNCwxMiArMTA0LDEwIEBACiBDT05ORUNUIHRlc3QucmVtb3RlLmV4YW1wbGUuY29tLjIwOTolSFRUUFBPUlQgSFRUUC8xLjENCiBIb3N0OiB0ZXN0LnJlbW90ZS5leGFtcGxlLmNvbS4yMDk6JUhUVFBQT1JUDQogUHJveHktQXV0aG9yaXphdGlvbjogTlRMTSBUbFJNVFZOVFVBQUJBQUFBQm9JSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBPQ0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiBDT05ORUNUIHRlc3QucmVtb3RlLmV4YW1wbGUuY29tLjIwOTolSFRUUFBPUlQgSFRUUC8xLjENCiBIb3N0OiB0ZXN0LnJlbW90ZS5leGFtcGxlLmNvbS4yMDk6JUhUVFBQT1JUDQogUHJveHktQXV0aG9yaXphdGlvbjogTlRMTSBUbFJNVFZOVFVBQURBQUFBR0FBWUFFQUFBQUNlQUo0QVdBQUFBQUFBQUFEMkFBQUFDQUFJQVBZQUFBQUlBQWdBL2dBQUFBQUFBQUFBQUFBQUJvS0JBTDlMTlc1K25reUhaUm15RmFML0xKNHhNak0wTWpJek5HVUN5aGdROWh3NmVXQVQxM0ViRGEwQkFRQUFBQUFBQUFDQVB0WGVzWjBCTVRJek5ESXlNelFBQUFBQUFnQUVBRU1BUXdBQkFCSUFSUUJNQUVrQVV3QkJBRUlBUlFCVUFFZ0FCQUFZQUdNQVl3QXVBR2tBWXdCbEFHUUFaUUIyQUM0QWJnQjFBQU1BTEFCbEFHd0FhUUJ6QUdFQVlnQmxBSFFBYUFBdUFHTUFZd0F1QUdrQVl3QmxBR1FBWlFCMkFDNEFiZ0IxQUFBQUFBQUFBQUFBZEdWemRIVnpaWEpqZFhKc2FHOXpkQT09DQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIEdFVCAvcGF0aC8yMDkwMDAyIEhUVFAvMS4xDQogVXNlci1BZ2VudDogY3VybC83LjEyLjMtQ1ZTIChpNjg2LXBjLWxpbnV4LWdudSkgbGliY3VybC83LjEyLjMtQ1ZTIE9wZW5TU0wvMC45LjZiIHpsaWIvMS4xLjQNCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QyMTMgYi90ZXN0cy9kYXRhL3Rlc3QyMTMKaW5kZXggZWRiYjZhNi4uN2NlZWQ5OCAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MjEzCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDIxMwpAQCAtMTA0LDEyICsxMDQsMTAgQEAKIENPTk5FQ1QgdGVzdC5yZW1vdGUuZXhhbXBsZS5jb20uMjEzOiVIVFRQUE9SVCBIVFRQLzEuMA0KIEhvc3Q6IHRlc3QucmVtb3RlLmV4YW1wbGUuY29tLjIxMzolSFRUUFBPUlQNCiBQcm94eS1BdXRob3JpemF0aW9uOiBOVExNIFRsUk1UVk5UVUFBQkFBQUFCb0lJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE9DQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIENPTk5FQ1QgdGVzdC5yZW1vdGUuZXhhbXBsZS5jb20uMjEzOiVIVFRQUE9SVCBIVFRQLzEuMA0KIEhvc3Q6IHRlc3QucmVtb3RlLmV4YW1wbGUuY29tLjIxMzolSFRUUFBPUlQNCiBQcm94eS1BdXRob3JpemF0aW9uOiBOVExNIFRsUk1UVk5UVUFBREFBQUFHQUFZQUVBQUFBQ2VBSjRBV0FBQUFBQUFBQUQyQUFBQUNBQUlBUFlBQUFBSUFBZ0EvZ0FBQUFBQUFBQUFBQUFBQm9LQkFMOUxOVzUrbmt5SFpSbXlGYUwvTEo0eE1qTTBNakl6TkdVQ3loZ1E5aHc2ZVdBVDEzRWJEYTBCQVFBQUFBQUFBQUNBUHRYZXNaMEJNVEl6TkRJeU16UUFBQUFBQWdBRUFFTUFRd0FCQUJJQVJRQk1BRWtBVXdCQkFFSUFSUUJVQUVnQUJBQVlBR01BWXdBdUFHa0FZd0JsQUdRQVpRQjJBQzRBYmdCMUFBTUFMQUJsQUd3QWFRQnpBR0VBWWdCbEFIUUFhQUF1QUdNQVl3QXVBR2tBWXdCbEFHUUFaUUIyQUM0QWJnQjFBQUFBQUFBQUFBQUFkR1Z6ZEhWelpYSmpkWEpzYUc5emRBPT0NCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogUE9TVCAvcGF0aC8yMTMwMDAyIEhUVFAvMS4xDQogVXNlci1BZ2VudDogY3VybC83LjEyLjMtQ1ZTIChpNjg2LXBjLWxpbnV4LWdudSkgbGliY3VybC83LjEyLjMtQ1ZTIE9wZW5TU0wvMC45LjZiIHpsaWIvMS4xLjQNCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QyMTcgYi90ZXN0cy9kYXRhL3Rlc3QyMTcKaW5kZXggZjEwZGY1Ni4uMGUwYzBhZCAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MjE3CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDIxNwpAQCAtNDQsNyArNDQsNiBAQAogPHByb3RvY29sPgogQ09OTkVDVCB0ZXN0LnJlbW90ZS5leGFtcGxlLmNvbS4yMTc6JUhUVFBQT1JUIEhUVFAvMS4xDQogSG9zdDogdGVzdC5yZW1vdGUuZXhhbXBsZS5jb20uMjE3OiVIVFRQUE9SVA0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiA8L3Byb3RvY29sPgogIyBDVVJMRV9SRUNWX0VSUk9SCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QyMzMgYi90ZXN0cy9kYXRhL3Rlc3QyMzMKaW5kZXggYjYzMWU1Mi4uOTk2ODU1ZCAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MjMzCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDIzMwpAQCAtODEsMTMgKzgxLDExIEBACiBQcm94eS1BdXRob3JpemF0aW9uOiBCYXNpYyBkR1Z6ZEdsdVp6cDBhR2x6DQogQXV0aG9yaXphdGlvbjogQmFzaWMgYVdGdE9tMTVjMlZzWmc9PQ0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIEdFVCBodHRwOi8vZ290by5zZWNvbmQuaG9zdC5ub3cvMjMzMDAwMiBIVFRQLzEuMQ0KIEhvc3Q6IGdvdG8uc2Vjb25kLmhvc3Qubm93DQogUHJveHktQXV0aG9yaXphdGlvbjogQmFzaWMgZEdWemRHbHVaenAwYUdseg0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIDwvcHJvdG9jb2w+CiA8L3ZlcmlmeT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDIzNCBiL3Rlc3RzL2RhdGEvdGVzdDIzNAppbmRleCAxZDJlMDViLi5mN2RhMmI5IDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QyMzQKKysrIGIvdGVzdHMvZGF0YS90ZXN0MjM0CkBAIC04MywxNCArODMsMTIgQEAKIFByb3h5LUF1dGhvcml6YXRpb246IEJhc2ljIGRHVnpkR2x1WnpwMGFHbHoNCiBBdXRob3JpemF0aW9uOiBCYXNpYyBhV0Z0T20xNWMyVnNaZz09DQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogR0VUIGh0dHA6Ly9nb3RvLnNlY29uZC5ob3N0Lm5vdy8yMzQwMDAyIEhUVFAvMS4xDQogSG9zdDogZ290by5zZWNvbmQuaG9zdC5ub3cNCiBQcm94eS1BdXRob3JpemF0aW9uOiBCYXNpYyBkR1Z6ZEdsdVp6cDBhR2x6DQogQXV0aG9yaXphdGlvbjogQmFzaWMgYVdGdE9tMTVjMlZzWmc9PQ0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIDwvcHJvdG9jb2w+CiA8L3ZlcmlmeT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDIzOSBiL3Rlc3RzL2RhdGEvdGVzdDIzOQppbmRleCA2YjkyZjA3Li4yNzVjODFiIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QyMzkKKysrIGIvdGVzdHMvZGF0YS90ZXN0MjM5CkBAIC04Myw3ICs4Myw2IEBACiBQcm94eS1BdXRob3JpemF0aW9uOiBOVExNIFRsUk1UVk5UVUFBQkFBQUFCb0lJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE9DQogVXNlci1BZ2VudDogY3VybC83LjEzLjItQ1ZTIChpNjg2LXBjLWxpbnV4LWdudSkgbGliY3VybC83LjEzLjItQ1ZTIE9wZW5TU0wvMC45LjdlIHpsaWIvMS4yLjIgbGliaWRuLzAuNS4xMw0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIENvbnRlbnQtTGVuZ3RoOiAwDQogQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQNCiANCkBAIC05Miw3ICs5MSw2IEBACiBQcm94eS1BdXRob3JpemF0aW9uOiBOVExNIFRsUk1UVk5UVUFBREFBQUFHQUFZQUVBQUFBQ2VBSjRBV0FBQUFBQUFBQUQyQUFBQUNBQUlBUFlBQUFBSUFBZ0EvZ0FBQUFBQUFBQUFBQUFBQm9LQkFMOUxOVzUrbmt5SFpSbXlGYUwvTEo0eE1qTTBNakl6TkdVQ3loZ1E5aHc2ZVdBVDEzRWJEYTBCQVFBQUFBQUFBQUNBUHRYZXNaMEJNVEl6TkRJeU16UUFBQUFBQWdBRUFFTUFRd0FCQUJJQVJRQk1BRWtBVXdCQkFFSUFSUUJVQUVnQUJBQVlBR01BWXdBdUFHa0FZd0JsQUdRQVpRQjJBQzRBYmdCMUFBTUFMQUJsQUd3QWFRQnpBR0VBWWdCbEFIUUFhQUF1QUdNQVl3QXVBR2tBWXdCbEFHUUFaUUIyQUM0QWJnQjFBQUFBQUFBQUFBQUFkR1Z6ZEhWelpYSmpkWEpzYUc5emRBPT0NCiBVc2VyLUFnZW50OiBjdXJsLzcuMTMuMi1DVlMgKGk2ODYtcGMtbGludXgtZ251KSBsaWJjdXJsLzcuMTMuMi1DVlMgT3BlblNTTC8wLjkuN2UgemxpYi8xLjIuMiBsaWJpZG4vMC41LjEzDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogQ29udGVudC1MZW5ndGg6IDYNCiBDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZA0KIA0KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDI0MyBiL3Rlc3RzL2RhdGEvdGVzdDI0MwppbmRleCAzNDk2MDU1Li5iYzA5Mjg2IDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QyNDMKKysrIGIvdGVzdHMvZGF0YS90ZXN0MjQzCkBAIC0xMDMsNyArMTAzLDYgQEAKIEhvc3Q6ICVIT1NUSVA6JUhUVFBQT1JUDQogVXNlci1BZ2VudDogY3VybC83LjEzLjItQ1ZTIChpNjg2LXBjLWxpbnV4LWdudSkgbGliY3VybC83LjEzLjItQ1ZTIE9wZW5TU0wvMC45LjdlIHpsaWIvMS4yLjIgbGliaWRuLzAuNS4xMw0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIENvbnRlbnQtTGVuZ3RoOiA2DQogQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQNCiANCkBAIC0xMTIsNyArMTExLDYgQEAKIFByb3h5LUF1dGhvcml6YXRpb246IE5UTE0gVGxSTVRWTlRVQUFCQUFBQUJvSUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQT0NCiBVc2VyLUFnZW50OiBjdXJsLzcuMTMuMi1DVlMgKGk2ODYtcGMtbGludXgtZ251KSBsaWJjdXJsLzcuMTMuMi1DVlMgT3BlblNTTC8wLjkuN2UgemxpYi8xLjIuMiBsaWJpZG4vMC41LjEzDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogQ29udGVudC1MZW5ndGg6IDANCiBDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZA0KIA0KQEAgLTEyMSw3ICsxMTksNiBAQAogUHJveHktQXV0aG9yaXphdGlvbjogTlRMTSBUbFJNVFZOVFVBQURBQUFBR0FBWUFFQUFBQUNlQUo0QVdBQUFBQUFBQUFEMkFBQUFDQUFJQVBZQUFBQUlBQWdBL2dBQUFBQUFBQUFBQUFBQUJvS0JBTDlMTlc1K25reUhaUm15RmFML0xKNHhNak0wTWpJek5HVUN5aGdROWh3NmVXQVQxM0ViRGEwQkFRQUFBQUFBQUFDQVB0WGVzWjBCTVRJek5ESXlNelFBQUFBQUFnQUVBRU1BUXdBQkFCSUFSUUJNQUVrQVV3QkJBRUlBUlFCVUFFZ0FCQUFZQUdNQVl3QXVBR2tBWXdCbEFHUUFaUUIyQUM0QWJnQjFBQU1BTEFCbEFHd0FhUUJ6QUdFQVlnQmxBSFFBYUFBdUFHTUFZd0F1QUdrQVl3QmxBR1FBWlFCMkFDNEFiZ0IxQUFBQUFBQUFBQUFBZEdWemRIVnpaWEpqZFhKc2FHOXpkQT09DQogVXNlci1BZ2VudDogY3VybC83LjEzLjItQ1ZTIChpNjg2LXBjLWxpbnV4LWdudSkgbGliY3VybC83LjEzLjItQ1ZTIE9wZW5TU0wvMC45LjdlIHpsaWIvMS4yLjIgbGliaWRuLzAuNS4xMw0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIENvbnRlbnQtTGVuZ3RoOiA2DQogQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQNCiANCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QyNTIgYi90ZXN0cy9kYXRhL3Rlc3QyNTIKaW5kZXggYjNmNDk2Ni4uNTU5ZWNlMCAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MjUyCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDI1MgpAQCAtMSw2ICsxLDcgQEAKIDx0ZXN0Y2FzZT4KIDxpbmZvPgogPGtleXdvcmRzPgorRlRQCiBGVFAtaXB2NgogSVB2NgogRVBTVgpAQCAtMTEsNyArMTIsNyBAQAogPHJlcGx5PgogIyBXaGVuIGRvaW5nIExJU1QsIHdlIGdldCB0aGUgZGVmYXVsdCBsaXN0IG91dHB1dCBoYXJkLWNvZGVkIGluIHRoZSB0ZXN0CiAjIEZUUCBzZXJ2ZXIKLTxkYXRhY2hlY2s+Cis8ZGF0YWNoZWNrIG1vZGU9InRleHQiPgogdG90YWwgMjAKIGRyd3hyLXhyLXggICA4IDk4ICAgICAgIDk4ICAgICAgICAgICA1MTIgT2N0IDIyIDEzOjA2IC4KIGRyd3hyLXhyLXggICA4IDk4ICAgICAgIDk4ICAgICAgICAgICA1MTIgT2N0IDIyIDEzOjA2IC4uCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QyNTMgYi90ZXN0cy9kYXRhL3Rlc3QyNTMKaW5kZXggOWJlNWYzZC4uODk3NGE4YiAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MjUzCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDI1MwpAQCAtMSw2ICsxLDcgQEAKIDx0ZXN0Y2FzZT4KIDxpbmZvPgogPGtleXdvcmRzPgorRlRQCiBGVFAtaXB2NgogSVB2NgogRVBSVApAQCAtMTEsNyArMTIsNyBAQAogPHJlcGx5PgogIyBXaGVuIGRvaW5nIExJU1QsIHdlIGdldCB0aGUgZGVmYXVsdCBsaXN0IG91dHB1dCBoYXJkLWNvZGVkIGluIHRoZSB0ZXN0CiAjIEZUUCBzZXJ2ZXIKLTxkYXRhY2hlY2s+Cis8ZGF0YWNoZWNrIG1vZGU9InRleHQiPgogdG90YWwgMjAKIGRyd3hyLXhyLXggICA4IDk4ICAgICAgIDk4ICAgICAgICAgICA1MTIgT2N0IDIyIDEzOjA2IC4KIGRyd3hyLXhyLXggICA4IDk4ICAgICAgIDk4ICAgICAgICAgICA1MTIgT2N0IDIyIDEzOjA2IC4uCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QyNTQgYi90ZXN0cy9kYXRhL3Rlc3QyNTQKaW5kZXggNTcxYjAzMy4uYTllYTBjYyAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MjU0CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDI1NApAQCAtMSw2ICsxLDcgQEAKIDx0ZXN0Y2FzZT4KIDxpbmZvPgogPGtleXdvcmRzPgorRlRQCiBGVFAtaXB2NgogSVB2NgogRVBTVgpAQCAtMTIsNyArMTMsNyBAQAogPHJlcGx5PgogIyBXaGVuIGRvaW5nIExJU1QsIHdlIGdldCB0aGUgZGVmYXVsdCBsaXN0IG91dHB1dCBoYXJkLWNvZGVkIGluIHRoZSB0ZXN0CiAjIEZUUCBzZXJ2ZXIKLTxkYXRhY2hlY2s+Cis8ZGF0YWNoZWNrIG1vZGU9InRleHQiPgogdG90YWwgMjAKIGRyd3hyLXhyLXggICA4IDk4ICAgICAgIDk4ICAgICAgICAgICA1MTIgT2N0IDIyIDEzOjA2IC4KIGRyd3hyLXhyLXggICA4IDk4ICAgICAgIDk4ICAgICAgICAgICA1MTIgT2N0IDIyIDEzOjA2IC4uCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QyNTUgYi90ZXN0cy9kYXRhL3Rlc3QyNTUKaW5kZXggY2M1MGM5NS4uNzlkNDNhZiAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MjU1CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDI1NQpAQCAtMSw2ICsxLDcgQEAKIDx0ZXN0Y2FzZT4KIDxpbmZvPgogPGtleXdvcmRzPgorRlRQCiBGVFAtaXB2NgogSVB2NgogRVBSVApAQCAtMTIsNyArMTMsNyBAQAogPHJlcGx5PgogIyBXaGVuIGRvaW5nIExJU1QsIHdlIGdldCB0aGUgZGVmYXVsdCBsaXN0IG91dHB1dCBoYXJkLWNvZGVkIGluIHRoZSB0ZXN0CiAjIEZUUCBzZXJ2ZXIKLTxkYXRhY2hlY2s+Cis8ZGF0YWNoZWNrIG1vZGU9InRleHQiPgogdG90YWwgMjAKIGRyd3hyLXhyLXggICA4IDk4ICAgICAgIDk4ICAgICAgICAgICA1MTIgT2N0IDIyIDEzOjA2IC4KIGRyd3hyLXhyLXggICA4IDk4ICAgICAgIDk4ICAgICAgICAgICA1MTIgT2N0IDIyIDEzOjA2IC4uCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QyNTYgYi90ZXN0cy9kYXRhL3Rlc3QyNTYKaW5kZXggMmI5NmVjZi4uMGFjZDlkYiAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MjU2CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDI1NgpAQCAtNTEsNyArNTEsNiBAQAogUHJveHktQXV0aG9yaXphdGlvbjogQmFzaWMgWkdGdWFXVnNPbk4wWlc1aVpYSm4NCiBSYW5nZTogYnl0ZXM9NzgtDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogPC9wcm90b2NvbD4KIApkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MjU3IGIvdGVzdHMvZGF0YS90ZXN0MjU3CmluZGV4IDUwMjQ0OGQuLjQ1ZGNiZDUgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDI1NworKysgYi90ZXN0cy9kYXRhL3Rlc3QyNTcKQEAgLTkyLDIwICs5MiwxNyBAQAogQXV0aG9yaXphdGlvbjogQmFzaWMgZFhObGNqRTZjR0Z6YzNka01RPT0NCiBVc2VyLUFnZW50OiBjdXJsLzcuMTQuMC1DVlMgKGk2ODYtcGMtbGludXgtZ251KSBsaWJjdXJsLzcuMTQuMC1DVlMgT3BlblNTTC8wLjkuN2UgemxpYi8xLjIuMiBsaWJpZG4vMC41LjEzDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogR0VUIGh0dHA6Ly9hbm90aGVyb25lLmNvbS8yNTcwMDAyIEhUVFAvMS4xDQogSG9zdDogYW5vdGhlcm9uZS5jb20NCiBBdXRob3JpemF0aW9uOiBCYXNpYyBkWE5sY2pJNmNHRnpjM2RrTWc9PQ0KIFVzZXItQWdlbnQ6IGN1cmwvNy4xNC4wLUNWUyAoaTY4Ni1wYy1saW51eC1nbnUpIGxpYmN1cmwvNy4xNC4wLUNWUyBPcGVuU1NMLzAuOS43ZSB6bGliLzEuMi4yIGxpYmlkbi8wLjUuMTMKIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIEdFVCBodHRwOi8vYXRoaXJkLmNvbS8yNTcwMDAzIEhUVFAvMS4xDQogSG9zdDogYXRoaXJkLmNvbQ0KIFVzZXItQWdlbnQ6IGN1cmwvNy4xNC4wLUNWUyAoaTY4Ni1wYy1saW51eC1nbnUpIGxpYmN1cmwvNy4xNC4wLUNWUyBPcGVuU1NMLzAuOS43ZSB6bGliLzEuMi4yIGxpYmlkbi8wLjUuMTMKIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIDwvcHJvdG9jb2w+CiA8L3ZlcmlmeT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDI1OCBiL3Rlc3RzL2RhdGEvdGVzdDI1OAppbmRleCA5OGMzNDAxLi44MmM2NzMxIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QyNTgKKysrIGIvdGVzdHMvZGF0YS90ZXN0MjU4CkBAIC0yMCw3ICsyMCw2IEBACiBEYXRlOiBUaHUsIDA5IE5vdiAyMDEwIDE0OjQ5OjAwIEdNVAogU2VydmVyOiB0ZXN0LXNlcnZlci9mYWtlCiBQcm94eS1BdXRoZW50aWNhdGU6IERpZ2VzdCByZWFsbT0ibWFueSBzZWNyZXRzIiwgbm9uY2U9IjkxMSIKLVByb3h5LUNvbm5lY3Rpb246IGNsb3NlCiBDb250ZW50LUxlbmd0aDogMAogCiA8L2RhdGE+CkBAIC0zNyw3ICszNiw2IEBACiBEYXRlOiBUaHUsIDA5IE5vdiAyMDEwIDE0OjQ5OjAwIEdNVAogU2VydmVyOiB0ZXN0LXNlcnZlci9mYWtlCiBQcm94eS1BdXRoZW50aWNhdGU6IERpZ2VzdCByZWFsbT0ibWFueSBzZWNyZXRzIiwgbm9uY2U9IjkxMSIKLVByb3h5LUNvbm5lY3Rpb246IGNsb3NlCiBDb250ZW50LUxlbmd0aDogMAogCiBIVFRQLzEuMSAyMDAgQSBPSw0KQEAgLTgzLDcgKzgxLDYgQEAKIEhvc3Q6IHJlbW90ZWhvc3Q6NTQzMjENCiBVc2VyLUFnZW50OiBjdXJsLzcuMTAuNCAoaTY4Ni1wYy1saW51eC1nbnUpIGxpYmN1cmwvNy4xMC40IE9wZW5TU0wvMC45LjdhIGlwdjYgemxpYi8xLjEuMw0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIENvbnRlbnQtTGVuZ3RoOiA0MDkNCiBDb250ZW50LVR5cGU6IG11bHRpcGFydC9mb3JtLWRhdGE7IGJvdW5kYXJ5PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS03YzYzM2Q1YzI3Y2UNCiANCkBAIC0xMDksNyArMTA2LDYgQEAKIFVzZXItQWdlbnQ6IGN1cmwvNy4xMC40IChpNjg2LXBjLWxpbnV4LWdudSkgbGliY3VybC83LjEwLjQgT3BlblNTTC8wLjkuN2EgaXB2NiB6bGliLzEuMS4zDQogUHJveHktQXV0aG9yaXphdGlvbjogRGlnZXN0IHVzZXJuYW1lPSJ1dXVzZXIiLCByZWFsbT0ibWFueSBzZWNyZXRzIiwgbm9uY2U9IjkxMSIsIHVyaT0iL3dlL3dhbnQvMjU4IiwgcmVzcG9uc2U9IjI1MDE2NTRjYTM5MWYwYjVjOGMxMmExZGE3N2UzNGNkIg0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIENvbnRlbnQtTGVuZ3RoOiA0MDkNCiBDb250ZW50LVR5cGU6IG11bHRpcGFydC9mb3JtLWRhdGE7IGJvdW5kYXJ5PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS03YzYzM2Q1YzI3Y2UNCiANCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QyNTkgYi90ZXN0cy9kYXRhL3Rlc3QyNTkKaW5kZXggOTUzMjg4Ny4uNzViMWY1MyAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MjU5CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDI1OQpAQCAtNzksNyArNzksNiBAQAogSG9zdDogcmVtb3RlaG9zdDo1NDMyMQ0KIFVzZXItQWdlbnQ6IGN1cmwvNy4xMC40IChpNjg2LXBjLWxpbnV4LWdudSkgbGliY3VybC83LjEwLjQgT3BlblNTTC8wLjkuN2EgaXB2NiB6bGliLzEuMS4zDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogQ29udGVudC1MZW5ndGg6IDQwOQ0KIEV4cGVjdDogMTAwLWNvbnRpbnVlDQogQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvZm9ybS1kYXRhOyBib3VuZGFyeT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tN2M2MzNkNWMyN2NlDQpAQCAtMTA2LDcgKzEwNSw2IEBACiBVc2VyLUFnZW50OiBjdXJsLzcuMTAuNCAoaTY4Ni1wYy1saW51eC1nbnUpIGxpYmN1cmwvNy4xMC40IE9wZW5TU0wvMC45LjdhIGlwdjYgemxpYi8xLjEuMw0KIFByb3h5LUF1dGhvcml6YXRpb246IERpZ2VzdCB1c2VybmFtZT0idXV1c2VyIiwgcmVhbG09Im1hbnkgc2VjcmV0cyIsIG5vbmNlPSI5MTEiLCB1cmk9Ii93ZS93YW50LzI1OSIsIHJlc3BvbnNlPSJiNDc5OTk0ZDEzZTYwZjNhYTE5MmE2N2M1ODkyZGRjNSINCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiBDb250ZW50LUxlbmd0aDogNDA5DQogRXhwZWN0OiAxMDAtY29udGludWUNCiBDb250ZW50LVR5cGU6IG11bHRpcGFydC9mb3JtLWRhdGE7IGJvdW5kYXJ5PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS03YzYzM2Q1YzI3Y2UNCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QyNjMgYi90ZXN0cy9kYXRhL3Rlc3QyNjMKaW5kZXggNTA4ODE0MS4uZGYwYmEwMyAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MjYzCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDI2MwpAQCAtNDcsNyArNDcsNiBAQAogR0VUIGh0dHA6Ly92ZXJ5dmVyeXJlbW90ZXNpdGUuY29tLzI2MyBIVFRQLzEuMQ0KIEhvc3Q6IHZlcnl2ZXJ5cmVtb3Rlc2l0ZS5jb20NCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiA8L3Byb3RvY29sPgogPC92ZXJpZnk+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QyNjQgYi90ZXN0cy9kYXRhL3Rlc3QyNjQKaW5kZXggZjRkMTcxYS4uMTE3NGNhNSAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0MjY0CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDI2NApAQCAtNDIsNyArNDIsNiBAQAogSG9zdDogd2Uud2FudC50aGF0LnNpdGUuY29tDQogUHJveHktQXV0aG9yaXphdGlvbjogQmFzaWMgWm1GclpUcDFjMlZ5DQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogPC9wcm90b2NvbD4KIDwvdmVyaWZ5PgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MjY1IGIvdGVzdHMvZGF0YS90ZXN0MjY1CmluZGV4IDFhMTYyYjguLjc5YWIxODMgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDI2NQorKysgYi90ZXN0cy9kYXRhL3Rlc3QyNjUKQEAgLTEwNywxMiArMTA3LDEwIEBACiBDT05ORUNUIHRlc3QucmVtb3RlLmV4YW1wbGUuY29tLjI2NTolSFRUUFBPUlQgSFRUUC8xLjENCiBIb3N0OiB0ZXN0LnJlbW90ZS5leGFtcGxlLmNvbS4yNjU6JUhUVFBQT1JUDQogUHJveHktQXV0aG9yaXphdGlvbjogTlRMTSBUbFJNVFZOVFVBQUJBQUFBQm9JSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBPQ0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiBDT05ORUNUIHRlc3QucmVtb3RlLmV4YW1wbGUuY29tLjI2NTolSFRUUFBPUlQgSFRUUC8xLjENCiBIb3N0OiB0ZXN0LnJlbW90ZS5leGFtcGxlLmNvbS4yNjU6JUhUVFBQT1JUDQogUHJveHktQXV0aG9yaXphdGlvbjogTlRMTSBUbFJNVFZOVFVBQURBQUFBR0FBWUFFQUFBQUNlQUo0QVdBQUFBQUFBQUFEMkFBQUFDQUFJQVBZQUFBQUlBQWdBL2dBQUFBQUFBQUFBQUFBQUJvS0JBTDlMTlc1K25reUhaUm15RmFML0xKNHhNak0wTWpJek5HVUN5aGdROWh3NmVXQVQxM0ViRGEwQkFRQUFBQUFBQUFDQVB0WGVzWjBCTVRJek5ESXlNelFBQUFBQUFnQUVBRU1BUXdBQkFCSUFSUUJNQUVrQVV3QkJBRUlBUlFCVUFFZ0FCQUFZQUdNQVl3QXVBR2tBWXdCbEFHUUFaUUIyQUM0QWJnQjFBQU1BTEFCbEFHd0FhUUJ6QUdFQVlnQmxBSFFBYUFBdUFHTUFZd0F1QUdrQVl3QmxBR1FBWlFCMkFDNEFiZ0IxQUFBQUFBQUFBQUFBZEdWemRIVnpaWEpqZFhKc2FHOXpkQT09DQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIFBPU1QgL3BhdGgvMjY1MDAwMiBIVFRQLzEuMQ0KIFVzZXItQWdlbnQ6IGN1cmwvNy4xMi4zLUNWUyAoaTY4Ni1wYy1saW51eC1nbnUpIGxpYmN1cmwvNy4xMi4zLUNWUyBPcGVuU1NMLzAuOS42YiB6bGliLzEuMS40DQpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MjcgYi90ZXN0cy9kYXRhL3Rlc3QyNwppbmRleCA1YWUyZmZkLi42ZmVkM2Q5IDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QyNworKysgYi90ZXN0cy9kYXRhL3Rlc3QyNwpAQCAtMTEsNyArMTEsNyBAQAogPGRhdGE+CiBIVFRQLzEuMSAyMDAgTW9vbyBzd3NjbG9zZQogQ29ubmVjdGlvbjogY2xvc2UKLVNldC1Db29raWU6IHBhdGg9LzsgdGhld2lubmVyaXM9bm93YXl5b3V3aW47CitTZXQtQ29va2llOiB0aGV3aW5uZXJpcz1ub3dheXlvdXdpbjsgcGF0aD0vOwogQ29udGVudC1MZW5ndGg6IDgKIAogKmZsb3BwKgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MjcxIGIvdGVzdHMvZGF0YS90ZXN0MjcxCmluZGV4IGFmNWE2YzYuLjA2ZDVhOGIgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDI3MQorKysgYi90ZXN0cy9kYXRhL3Rlc3QyNzEKQEAgLTM2LDggKzM2LDExIEBACiA8dmVyaWZ5PgogPHByb3RvY29sPgogb3Bjb2RlOiAxCi1maWxlbmFtZTogLzI3MQogbW9kZTogb2N0ZXQKK3RzaXplOiAwCitibGtzaXplOiA1MTIKK3RpbWVvdXQ6IDYKK2ZpbGVuYW1lOiAvMjcxCiA8L3Byb3RvY29sPgogPC92ZXJpZnk+CiA8L3Rlc3RjYXNlPgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0Mjc1IGIvdGVzdHMvZGF0YS90ZXN0Mjc1CmluZGV4IDgwMmM0YmIuLjYwMDA0NTQgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDI3NQorKysgYi90ZXN0cy9kYXRhL3Rlc3QyNzUKQEAgLTY5LDcgKzY5LDYgQEAKIEhvc3Q6IHJlbW90ZXNpdGUuY29tLjI3NTolSFRUUFBPUlQNCiBQcm94eS1BdXRob3JpemF0aW9uOiBCYXNpYyBlVzkxWVhKbE9ubHZkWEp6Wld4bQ0KIFVzZXItQWdlbnQ6IGN1cmwvNy4xMC43LXByZTIgKGk2ODYtcGMtbGludXgtZ251KSBsaWJjdXJsLzcuMTAuNy1wcmUyIE9wZW5TU0wvMC45LjdhIHpsaWIvMS4xLjMNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogPC9wcm94eT4KIDxwcm90b2NvbD4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDI3OCBiL3Rlc3RzL2RhdGEvdGVzdDI3OAppbmRleCAzMTEyMjY0Li5lNmYxZWY3IDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QyNzgKKysrIGIvdGVzdHMvZGF0YS90ZXN0Mjc4CkBAIC00Miw3ICs0Miw2IEBACiBIb3N0OiB3ZS53YW50LnRoYXQuc2l0ZS5jb20NCiBQcm94eS1BdXRob3JpemF0aW9uOiBCYXNpYyBabUZyWlRvPQ0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIDwvcHJvdG9jb2w+CiA8L3ZlcmlmeT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDI3OSBiL3Rlc3RzL2RhdGEvdGVzdDI3OQppbmRleCA0N2Y4YjY4Li41MDA1ZGFhIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QyNzkKKysrIGIvdGVzdHMvZGF0YS90ZXN0Mjc5CkBAIC00Myw3ICs0Myw2IEBACiBIb3N0OiB3ZS53YW50LnRoYXQuc2l0ZS5jb20NCiBQcm94eS1BdXRob3JpemF0aW9uOiBCYXNpYyBabUZyWlRvPQ0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIDwvcHJvdG9jb2w+CiA8L3ZlcmlmeT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDI4MyBiL3Rlc3RzL2RhdGEvdGVzdDI4MwppbmRleCA5MjJkZTUxLi4wZGMxMjcwIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3QyODMKKysrIGIvdGVzdHMvZGF0YS90ZXN0MjgzCkBAIC0xNyw3ICsxNyw3IEBACiBURlRQIHJldHJpZXZlIG9uIGludmFsaWQgZmlsZQogIDwvbmFtZT4KICA8Y29tbWFuZD4KLXRmdHA6Ly8lSE9TVElQOiVURlRQUE9SVC8vaW52YWxpZC1maWxlIC0tdHJhY2UtYXNjaWkgbG9nL3RyYWNlaXQKK3RmdHA6Ly8lSE9TVElQOiVURlRQUE9SVC8vaW52YWxpZC1maWxlIC0tdHJhY2UtYXNjaWkgbG9nL3RyYWNlaXQgLS10ZnRwLWJsa3NpemUgMTAyNAogPC9jb21tYW5kPgogPC9jbGllbnQ+CiAKQEAgLTI5LDggKzI5LDExIEBACiA8L2Vycm9yY29kZT4KIDxwcm90b2NvbD4KIG9wY29kZTogMQotZmlsZW5hbWU6IC9pbnZhbGlkLWZpbGUKIG1vZGU6IG9jdGV0Cit0c2l6ZTogMAorYmxrc2l6ZTogMTAyNAordGltZW91dDogNgorZmlsZW5hbWU6IC9pbnZhbGlkLWZpbGUKIDwvcHJvdG9jb2w+CiA8L3ZlcmlmeT4KIDwvdGVzdGNhc2U+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QyODQgYi90ZXN0cy9kYXRhL3Rlc3QyODQKaW5kZXggMGMyYTY2NS4uOTU0YzkwMiAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0Mjg0CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDI4NApAQCAtNjAsOCArNjAsMTEgQEAKIDx2ZXJpZnk+CiA8cHJvdG9jb2w+CiBvcGNvZGU6IDEKLWZpbGVuYW1lOiAvMjg0CiBtb2RlOiBvY3RldAordHNpemU6IDAKK2Jsa3NpemU6IDUxMgordGltZW91dDogNgorZmlsZW5hbWU6IC8yODQKIDwvcHJvdG9jb2w+CiA8L3ZlcmlmeT4KIDwvdGVzdGNhc2U+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QyODUgYi90ZXN0cy9kYXRhL3Rlc3QyODUKaW5kZXggNzVhMTk5OS4uZDdhNGEzOSAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0Mjg1CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDI4NQpAQCAtMzcsOCArMzcsMTEgQEAKIDwvdXBsb2FkPgogPHByb3RvY29sPgogb3Bjb2RlOiAyCi1maWxlbmFtZTogL3Rlc3QyODUudHh0CiBtb2RlOiBvY3RldAordHNpemU6IDMyCitibGtzaXplOiA1MTIKK3RpbWVvdXQ6IDYKK2ZpbGVuYW1lOiAvdGVzdDI4NS50eHQKIDwvcHJvdG9jb2w+CiA8L3ZlcmlmeT4KIDwvdGVzdGNhc2U+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QyODYgYi90ZXN0cy9kYXRhL3Rlc3QyODYKaW5kZXggODQxZWUxZS4uYjkwOWZkMyAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0Mjg2CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDI4NgpAQCAtODUsOCArODUsMTEgQEAKIDwvdXBsb2FkPgogPHByb3RvY29sPgogb3Bjb2RlOiAyCi1maWxlbmFtZTogL3Rlc3QyODYudHh0CiBtb2RlOiBvY3RldAordHNpemU6IDUxMgorYmxrc2l6ZTogNTEyCit0aW1lb3V0OiA2CitmaWxlbmFtZTogL3Rlc3QyODYudHh0CiA8L3Byb3RvY29sPgogPC92ZXJpZnk+CiA8L3Rlc3RjYXNlPgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0Mjg3IGIvdGVzdHMvZGF0YS90ZXN0Mjg3CmluZGV4IDY3NzJlMjIuLjUyNjQ0NmYgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDI4NworKysgYi90ZXN0cy9kYXRhL3Rlc3QyODcKQEAgLTM3LDcgKzM3LDYgQEAKIDxwcm90b2NvbD4KIENPTk5FQ1QgdGVzdC5yZW1vdGUuZXhhbXBsZS5jb20uMjg3OiVIVFRQUE9SVCBIVFRQLzEuMQ0KIEhvc3Q6IHRlc3QucmVtb3RlLmV4YW1wbGUuY29tLjI4NzolSFRUUFBPUlQNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogVXNlci1BZ2VudDogbG9vc2VyLzIwMDcNCiANCiA8L3Byb3RvY29sPgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0Mjk5IGIvdGVzdHMvZGF0YS90ZXN0Mjk5CmluZGV4IDRkYWFlYTQuLmE3Yjc3NTUgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDI5OQorKysgYi90ZXN0cy9kYXRhL3Rlc3QyOTkKQEAgLTQ2LDcgKzQ2LDYgQEAKIEhvc3Q6IGhvc3QuY29tOjIxDQogQXV0aG9yaXphdGlvbjogQmFzaWMgYldsamFHRnNPbUY1WW1GaWRIVT0NCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiA8L3Byb3RvY29sPgogPC92ZXJpZnk+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QzMSBiL3Rlc3RzL2RhdGEvdGVzdDMxCmluZGV4IDdjZjU1NmMuLjIyODlkNTYgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDMxCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDMxCkBAIC05Nyw3ICs5Nyw3IEBACiA8L3Byb3RvY29sPgogPGZpbGUgbmFtZT0ibG9nL2phcjMxLnR4dCIgbW9kZT0idGV4dCI+CiAjIE5ldHNjYXBlIEhUVFAgQ29va2llIEZpbGUKLSMgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2h0dHAtY29va2llcy5odG1sCisjIGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvaHR0cC1jb29raWVzLmh0bWwKICMgVGhpcyBmaWxlIHdhcyBnZW5lcmF0ZWQgYnkgbGliY3VybCEgRWRpdCBhdCB5b3VyIG93biByaXNrLgogCiAxMjcuMC4wLjEJRkFMU0UJL3NpbGx5LwlGQUxTRQkwCWlzbWF0Y2gJdGhpcwpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0NDAwIGIvdGVzdHMvZGF0YS90ZXN0NDAwCmluZGV4IDc1ZDU5NzkuLmYyZDMyNjMgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDQwMAorKysgYi90ZXN0cy9kYXRhL3Rlc3Q0MDAKQEAgLTEsNiArMSw3IEBACiA8dGVzdGNhc2U+CiA8aW5mbz4KIDxrZXl3b3Jkcz4KK0ZUUAogRlRQUwogUEFTVgogTElTVApAQCAtMTEsNyArMTIsNyBAQAogPHJlcGx5PgogIyBXaGVuIGRvaW5nIExJU1QsIHdlIGdldCB0aGUgZGVmYXVsdCBsaXN0IG91dHB1dCBoYXJkLWNvZGVkIGluIHRoZSB0ZXN0CiAjIEZUUFMgc2VydmVyCi08ZGF0YWNoZWNrPgorPGRhdGFjaGVjayBtb2RlPSJ0ZXh0Ij4KIHRvdGFsIDIwCiBkcnd4ci14ci14ICAgOCA5OCAgICAgICA5OCAgICAgICAgICAgNTEyIE9jdCAyMiAxMzowNiAuCiBkcnd4ci14ci14ICAgOCA5OCAgICAgICA5OCAgICAgICAgICAgNTEyIE9jdCAyMiAxMzowNiAuLgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0NDAxIGIvdGVzdHMvZGF0YS90ZXN0NDAxCmluZGV4IGNiMDFjMWMuLjFiYjlmYjEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDQwMQorKysgYi90ZXN0cy9kYXRhL3Rlc3Q0MDEKQEAgLTEsNiArMSw3IEBACiA8dGVzdGNhc2U+CiA8aW5mbz4KIDxrZXl3b3Jkcz4KK0ZUUAogRlRQUwogRVBTVgogU1RPUgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0NDAyIGIvdGVzdHMvZGF0YS90ZXN0NDAyCmluZGV4IDI3MmM0ZTMuLjMwNjBjOTkgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDQwMgorKysgYi90ZXN0cy9kYXRhL3Rlc3Q0MDIKQEAgLTEsNiArMSw3IEBACiA8dGVzdGNhc2U+CiA8aW5mbz4KIDxrZXl3b3Jkcz4KK0ZUUAogRlRQUwogRkFJTFVSRQogPC9rZXl3b3Jkcz4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDQwMyBiL3Rlc3RzL2RhdGEvdGVzdDQwMwppbmRleCAyYjhmZjVlLi43ZTRkMmJmIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3Q0MDMKKysrIGIvdGVzdHMvZGF0YS90ZXN0NDAzCkBAIC0xLDYgKzEsNyBAQAogPHRlc3RjYXNlPgogPGluZm8+CiA8a2V5d29yZHM+CitGVFAKIEZUUFMKIFBBU1YKIExJU1QKQEAgLTEzLDcgKzE0LDcgQEAKIDxyZXBseT4KICMgV2hlbiBkb2luZyBMSVNULCB3ZSBnZXQgdGhlIGRlZmF1bHQgbGlzdCBvdXRwdXQgaGFyZC1jb2RlZCBpbiB0aGUgdGVzdAogIyBGVFBTIHNlcnZlcgotPGRhdGFjaGVjaz4KKzxkYXRhY2hlY2sgbW9kZT0idGV4dCI+CiB0b3RhbCAyMAogZHJ3eHIteHIteCAgIDggOTggICAgICAgOTggICAgICAgICAgIDUxMiBPY3QgMjIgMTM6MDYgLgogZHJ3eHIteHIteCAgIDggOTggICAgICAgOTggICAgICAgICAgIDUxMiBPY3QgMjIgMTM6MDYgLi4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDQwNCBiL3Rlc3RzL2RhdGEvdGVzdDQwNAppbmRleCA5NzY2NjMwLi4wZjczMzI1IDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3Q0MDQKKysrIGIvdGVzdHMvZGF0YS90ZXN0NDA0CkBAIC0xLDYgKzEsNyBAQAogPHRlc3RjYXNlPgogPGluZm8+CiA8a2V5d29yZHM+CitGVFAKIEZUUFMKIEZBSUxVUkUKIDwva2V5d29yZHM+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3Q0MDUgYi90ZXN0cy9kYXRhL3Rlc3Q0MDUKaW5kZXggMjllN2FmMi4uMjhkOGI1NyAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0NDA1CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDQwNQpAQCAtMSw2ICsxLDcgQEAKIDx0ZXN0Y2FzZT4KIDxpbmZvPgogPGtleXdvcmRzPgorRlRQCiBGVFBTCiBGQUlMVVJFCiA8L2tleXdvcmRzPgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0NDA2IGIvdGVzdHMvZGF0YS90ZXN0NDA2CmluZGV4IDMyNTliYzYuLjAxZDgzZGMgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDQwNgorKysgYi90ZXN0cy9kYXRhL3Rlc3Q0MDYKQEAgLTEsNiArMSw3IEBACiA8dGVzdGNhc2U+CiA8aW5mbz4KIDxrZXl3b3Jkcz4KK0ZUUAogRlRQUwogUE9SVAogTElTVApAQCAtMTEsNyArMTIsNyBAQAogPHJlcGx5PgogIyBXaGVuIGRvaW5nIExJU1QsIHdlIGdldCB0aGUgZGVmYXVsdCBsaXN0IG91dHB1dCBoYXJkLWNvZGVkIGluIHRoZSB0ZXN0CiAjIEZUUFMgc2VydmVyCi08ZGF0YWNoZWNrPgorPGRhdGFjaGVjayBtb2RlPSJ0ZXh0Ij4KIHRvdGFsIDIwCiBkcnd4ci14ci14ICAgOCA5OCAgICAgICA5OCAgICAgICAgICAgNTEyIE9jdCAyMiAxMzowNiAuCiBkcnd4ci14ci14ICAgOCA5OCAgICAgICA5OCAgICAgICAgICAgNTEyIE9jdCAyMiAxMzowNiAuLgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0NDA3IGIvdGVzdHMvZGF0YS90ZXN0NDA3CmluZGV4IDhjMTRmYTguLmNhMDY4MzggMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDQwNworKysgYi90ZXN0cy9kYXRhL3Rlc3Q0MDcKQEAgLTEsNiArMSw3IEBACiA8dGVzdGNhc2U+CiA8aW5mbz4KIDxrZXl3b3Jkcz4KK0ZUUAogRlRQUwogUEFTVgogUkVUUgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0NDA4IGIvdGVzdHMvZGF0YS90ZXN0NDA4CmluZGV4IGQwYWExM2IuLjY4YjQyYjIgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDQwOAorKysgYi90ZXN0cy9kYXRhL3Rlc3Q0MDgKQEAgLTEsNiArMSw3IEBACiA8dGVzdGNhc2U+CiA8aW5mbz4KIDxrZXl3b3Jkcz4KK0ZUUAogRlRQUwogUE9SVAogU1RPUgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0NDA5IGIvdGVzdHMvZGF0YS90ZXN0NDA5CmluZGV4IGQ3ODAxYTguLjAwMTAwYmMgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDQwOQorKysgYi90ZXN0cy9kYXRhL3Rlc3Q0MDkKQEAgLTEsNiArMSw3IEBACiA8dGVzdGNhc2U+CiA8aW5mbz4KIDxrZXl3b3Jkcz4KK0ZUUAogRlRQUwogRVBTVgogU1RPUgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0NDMgYi90ZXN0cy9kYXRhL3Rlc3Q0MwppbmRleCBlNTUzNWJiLi5kYzBkZDVmIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3Q0MworKysgYi90ZXN0cy9kYXRhL3Rlc3Q0MwpAQCAtNjcsMTIgKzY3LDEwIEBACiBHRVQgaHR0cDovLyVIT1NUSVA6JUhUVFBQT1JUL3dhbnQvNDMgSFRUUC8xLjENCiBIb3N0OiAlSE9TVElQOiVIVFRQUE9SVA0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIEdFVCBodHRwOi8vJUhPU1RJUDolSFRUUFBPUlQvd2FudC9kYXRhLzQzMDAwMi50eHQ/Y29vbHNpdGU9eWVzIEhUVFAvMS4xDQogSG9zdDogJUhPU1RJUDolSFRUUFBPUlQNCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiA8L3Byb3RvY29sPgogPC92ZXJpZnk+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3Q0NiBiL3Rlc3RzL2RhdGEvdGVzdDQ2CmluZGV4IGI2ZjhmODMuLmQxMDQ1YjMgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDQ2CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDQ2CkBAIC00NiwxMyArNDYsMTMgQEAKIDwvY29tbWFuZD4KIDxmaWxlIG5hbWU9ImxvZy9pbmphcjQ2Ij4KICMgTmV0c2NhcGUgSFRUUCBDb29raWUgRmlsZQotIyBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvaHR0cC1jb29raWVzLmh0bWwKKyMgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9odHRwLWNvb2tpZXMuaHRtbAogIyBUaGlzIGlzIGdlbmVyYXRlZCBieSBsaWJjdXJsISAgRG8gbm90IGVkaXQuCiAKLXd3dy5mYWtlLmNvbWUJRkFMU0UJLwlGQUxTRQkxMDIyMTQ0OTUzCWNvb2tpZWNsaWVudGUJc2kKLXd3dy5sb3Nlci5jb20JRkFMU0UJLwlGQUxTRQkxMTM5MTUwOTkzCVVJRAk5OQotJUhPU1RJUAlGQUxTRQkvCUZBTFNFCTE0MzkxNTA5OTMJbW9vbwlpbmRlZWQKLSNIdHRwT25seV8lSE9TVElQCUZBTFNFCS93YW50CUZBTFNFCTE0MzkxNTA5OTMJbW9vbzIJaW5kZWVkMgord3d3LmZha2UuY29tZQlGQUxTRQkvCUZBTFNFCTIwMjIxNDQ5NTMJY29va2llY2xpZW50ZQlzaQord3d3Lmxvc2VyLmNvbQlGQUxTRQkvCUZBTFNFCTIxMzkxNTA5OTMJVUlECTk5CislSE9TVElQCUZBTFNFCS8JRkFMU0UJMTczOTE1MDk5Mwltb29vCWluZGVlZAorI0h0dHBPbmx5XyVIT1NUSVAJRkFMU0UJL3dhbnQJRkFMU0UJMTczOTE1MDk5Mwltb29vMglpbmRlZWQyCiAlSE9TVElQCUZBTFNFCS93YW50CUZBTFNFCTAJZW1wdHkJCiA8L2ZpbGU+CiA8L2NsaWVudD4KQEAgLTcxLDEzICs3MSwxMyBAQAogPC9wcm90b2NvbD4KIDxmaWxlIG5hbWU9ImxvZy9qYXI0NiIgbW9kZT0idGV4dCI+CiAjIE5ldHNjYXBlIEhUVFAgQ29va2llIEZpbGUKLSMgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2h0dHAtY29va2llcy5odG1sCisjIGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvaHR0cC1jb29raWVzLmh0bWwKICMgVGhpcyBmaWxlIHdhcyBnZW5lcmF0ZWQgYnkgbGliY3VybCEgRWRpdCBhdCB5b3VyIG93biByaXNrLgogCi13d3cuZmFrZS5jb21lCUZBTFNFCS8JRkFMU0UJMTAyMjE0NDk1Mwljb29raWVjbGllbnRlCXNpCi13d3cubG9zZXIuY29tCUZBTFNFCS8JRkFMU0UJMTEzOTE1MDk5MwlVSUQJOTkKLSVIT1NUSVAJRkFMU0UJLwlGQUxTRQkxNDM5MTUwOTkzCW1vb28JaW5kZWVkCi0jSHR0cE9ubHlfJUhPU1RJUAlGQUxTRQkvd2FudAlGQUxTRQkxNDM5MTUwOTkzCW1vb28yCWluZGVlZDIKK3d3dy5mYWtlLmNvbWUJRkFMU0UJLwlGQUxTRQkyMDIyMTQ0OTUzCWNvb2tpZWNsaWVudGUJc2kKK3d3dy5sb3Nlci5jb20JRkFMU0UJLwlGQUxTRQkyMTM5MTUwOTkzCVVJRAk5OQorJUhPU1RJUAlGQUxTRQkvCUZBTFNFCTE3MzkxNTA5OTMJbW9vbwlpbmRlZWQKKyNIdHRwT25seV8lSE9TVElQCUZBTFNFCS93YW50CUZBTFNFCTE3MzkxNTA5OTMJbW9vbzIJaW5kZWVkMgogJUhPU1RJUAlGQUxTRQkvd2FudAlGQUxTRQkwCWVtcHR5CQogJUhPU1RJUAlGQUxTRQkvCUZBTFNFCTIwNTQwMzAxODcJY2t5UGVyc2lzdGVudAlwZXJtYW5lbnQKICVIT1NUSVAJRkFMU0UJLwlGQUxTRQkwCWNreVNlc3Npb24JdGVtcG9yYXJ5CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3Q1IGIvdGVzdHMvZGF0YS90ZXN0NQppbmRleCBiNjJmMWExLi4xMzMxNDU3IDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3Q1CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDUKQEAgLTQzLDcgKzQzLDYgQEAKIEdFVCBodHRwOi8vJUhPU1RJUDolSFRUUFBPUlQvd2Uvd2FudC90aGF0L3BhZ2UvNSBIVFRQLzEuMQ0KIEhvc3Q6ICVIT1NUSVA6JUhUVFBQT1JUDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogPC9wcm90b2NvbD4KIDwvdmVyaWZ5PgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0NTAzIGIvdGVzdHMvZGF0YS90ZXN0NTAzCmluZGV4IGU4ZGMyMWUuLmYwMmJhYzYgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDUwMworKysgYi90ZXN0cy9kYXRhL3Rlc3Q1MDMKQEAgLTcyLDcgKzcyLDYgQEAKIENPTk5FQ1QgbWFjaGluZS41MDM6JUhUVFBQT1JUIEhUVFAvMS4xDQogSG9zdDogbWFjaGluZS41MDM6JUhUVFBQT1JUDQogUHJveHktQXV0aG9yaXphdGlvbjogQmFzaWMgZEdWemREcHBibWM9DQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIDwvcHJveHk+CiA8cHJvdG9jb2w+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3Q1MDYgYi90ZXN0cy9kYXRhL3Rlc3Q1MDYKaW5kZXggMDdiYmRlYS4uZjE5MzlmZSAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0NTA2CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDUwNgpAQCAtMjEyLDcgKzIxMiw3IEBACiA8L3N0ZGVycj4KIDxmaWxlIG5hbWU9ImxvZy9qYXI1MDYiIG1vZGU9InRleHQiPgogIyBOZXRzY2FwZSBIVFRQIENvb2tpZSBGaWxlCi0jIGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9odHRwLWNvb2tpZXMuaHRtbAorIyBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2h0dHAtY29va2llcy5odG1sCiAjIFRoaXMgZmlsZSB3YXMgZ2VuZXJhdGVkIGJ5IGxpYmN1cmwhIEVkaXQgYXQgeW91ciBvd24gcmlzay4KIAogLmhvc3QuZm9vLmNvbQlUUlVFCS8JRkFMU0UJMTg5NjI2Mzc4NwlpbmplY3RlZAl5ZXMKZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDUyMyBiL3Rlc3RzL2RhdGEvdGVzdDUyMwppbmRleCA5YWJlMGVkLi5kMDIxYWUzIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3Q1MjMKKysrIGIvdGVzdHMvZGF0YS90ZXN0NTIzCkBAIC01NCw3ICs1NCw2IEBACiBIb3N0OiB3d3cuZXhhbXBsZS5jb206MTk5OTkNCiBBdXRob3JpemF0aW9uOiBCYXNpYyBlSGg0T25sNWVRPT0NCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiA8L3Byb3RvY29sPgogPHN0ZG91dD4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDUzOSBiL3Rlc3RzL2RhdGEvdGVzdDUzOQppbmRleCBlYWE2NGQ1Li5lOWFhZGQxIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3Q1MzkKKysrIGIvdGVzdHMvZGF0YS90ZXN0NTM5CkBAIC0xMiw4ICsxMiwxMCBAQAogZmlsZSBjb250ZW50cwogPC9kYXRhPgogCi08ZGF0YWNoZWNrIG1vZGU9InRleHQiPgorPGRhdGFjaGVjaz4KIGZpbGUgY29udGVudHMKKzwvZGF0YWNoZWNrPgorPGRhdGFjaGVjazEgbW9kZT0idGV4dCI+CiB0b3RhbCAyMAogZHJ3eHIteHIteCAgIDggOTggICAgICAgOTggICAgICAgICAgIDUxMiBPY3QgMjIgMTM6MDYgLgogZHJ3eHIteHIteCAgIDggOTggICAgICAgOTggICAgICAgICAgIDUxMiBPY3QgMjIgMTM6MDYgLi4KQEAgLTI1LDcgKzI3LDcgQEAKIGRyLXhyLXhyLXggICAyIDAgICAgICAgIDEgICAgICAgICAgICA1MTIgTm92IDMwICAxOTk1IGV0YwogZHJ3eHJ3eHJ3eCAgIDIgOTggICAgICAgMSAgICAgICAgICAgIDUxMiBPY3QgMzAgMTQ6MzMgcHViCiBkci14ci14ci14ICAgNSAwICAgICAgICAxICAgICAgICAgICAgNTEyIE9jdCAgMSAgMTk5NyB1c3IKLTwvZGF0YWNoZWNrPgorPC9kYXRhY2hlY2sxPgogPC9yZXBseT4KIAogIyBDbGllbnQtc2lkZQpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0NTQwIGIvdGVzdHMvZGF0YS90ZXN0NTQwCmluZGV4IDhkZWNhZWEuLjE5YTEzZjEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDU0MAorKysgYi90ZXN0cy9kYXRhL3Rlc3Q1NDAKQEAgLTc4LDE5ICs3OCwxNiBAQAogR0VUIGh0dHA6Ly90ZXN0LnJlbW90ZS5leGFtcGxlLmNvbS9wYXRoLzU0MCBIVFRQLzEuMQ0KIEhvc3Q6IGN1c3RvbS5zZXQuaG9zdC5uYW1lDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogR0VUIGh0dHA6Ly90ZXN0LnJlbW90ZS5leGFtcGxlLmNvbS9wYXRoLzU0MCBIVFRQLzEuMQ0KIEhvc3Q6IGN1c3RvbS5zZXQuaG9zdC5uYW1lDQogUHJveHktQXV0aG9yaXphdGlvbjogRGlnZXN0IHVzZXJuYW1lPSJzaWxseSIsIHJlYWxtPSJ3ZWlyZG9yZWFsbSIsIG5vbmNlPSIxMjM0NSIsIHVyaT0iL3BhdGgvNTQwIiwgcmVzcG9uc2U9ImNhNTA3ZGNmMTg5MTk2YjZhNTM3NGQzMjMzMDQyMjYxIg0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIEdFVCBodHRwOi8vdGVzdC5yZW1vdGUuZXhhbXBsZS5jb20vcGF0aC81NDAgSFRUUC8xLjENCiBIb3N0OiBjdXN0b20uc2V0Lmhvc3QubmFtZQ0KIFByb3h5LUF1dGhvcml6YXRpb246IERpZ2VzdCB1c2VybmFtZT0ic2lsbHkiLCByZWFsbT0id2VpcmRvcmVhbG0iLCBub25jZT0iMTIzNDUiLCB1cmk9Ii9wYXRoLzU0MCIsIHJlc3BvbnNlPSJjYTUwN2RjZjE4OTE5NmI2YTUzNzRkMzIzMzA0MjI2MSINCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiA8L3Byb3RvY29sPgogPC92ZXJpZnk+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3Q1NDcgYi90ZXN0cy9kYXRhL3Rlc3Q1NDcKaW5kZXggY2VlMjJjNi4uN2NmM2U5MSAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0NTQ3CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDU0NwpAQCAtMTA2LDcgKzEwNiw2IEBACiBIb3N0OiB0ZXN0LnJlbW90ZS5leGFtcGxlLmNvbQ0KIFVzZXItQWdlbnQ6IGN1cmwvNy4xMy4yLUNWUyAoaTY4Ni1wYy1saW51eC1nbnUpIGxpYmN1cmwvNy4xMy4yLUNWUyBPcGVuU1NMLzAuOS43ZSB6bGliLzEuMi4yIGxpYmlkbi8wLjUuMTMNCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiBDb250ZW50LUxlbmd0aDogMzYNCiBDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZA0KIA0KQEAgLTExNiw3ICsxMTUsNiBAQAogUHJveHktQXV0aG9yaXphdGlvbjogTlRMTSBUbFJNVFZOVFVBQUJBQUFBQm9JSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBPQ0KIFVzZXItQWdlbnQ6IGN1cmwvNy4xMy4yLUNWUyAoaTY4Ni1wYy1saW51eC1nbnUpIGxpYmN1cmwvNy4xMy4yLUNWUyBPcGVuU1NMLzAuOS43ZSB6bGliLzEuMi4yIGxpYmlkbi8wLjUuMTMNCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiBDb250ZW50LUxlbmd0aDogMA0KIENvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkDQogDQpAQCAtMTI1LDcgKzEyMyw2IEBACiBQcm94eS1BdXRob3JpemF0aW9uOiBOVExNIFRsUk1UVk5UVUFBREFBQUFHQUFZQUVBQUFBQ2VBSjRBV0FBQUFBQUFBQUQyQUFBQUNBQUlBUFlBQUFBSUFBZ0EvZ0FBQUFBQUFBQUFBQUFBQm9LQkFMOUxOVzUrbmt5SFpSbXlGYUwvTEo0eE1qTTBNakl6TkdVQ3loZ1E5aHc2ZVdBVDEzRWJEYTBCQVFBQUFBQUFBQUNBUHRYZXNaMEJNVEl6TkRJeU16UUFBQUFBQWdBRUFFTUFRd0FCQUJJQVJRQk1BRWtBVXdCQkFFSUFSUUJVQUVnQUJBQVlBR01BWXdBdUFHa0FZd0JsQUdRQVpRQjJBQzRBYmdCMUFBTUFMQUJsQUd3QWFRQnpBR0VBWWdCbEFIUUFhQUF1QUdNQVl3QXVBR2tBWXdCbEFHUUFaUUIyQUM0QWJnQjFBQUFBQUFBQUFBQUFkR1Z6ZEhWelpYSmpkWEpzYUc5emRBPT0NCiBVc2VyLUFnZW50OiBjdXJsLzcuMTMuMi1DVlMgKGk2ODYtcGMtbGludXgtZ251KSBsaWJjdXJsLzcuMTMuMi1DVlMgT3BlblNTTC8wLjkuN2UgemxpYi8xLjIuMiBsaWJpZG4vMC41LjEzDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogQ29udGVudC1MZW5ndGg6IDM2DQogQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQNCiANCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3Q1NDggYi90ZXN0cy9kYXRhL3Rlc3Q1NDgKaW5kZXggMzRjZjVlMi4uZTlkMjI2MiAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0NTQ4CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDU0OApAQCAtMTA2LDcgKzEwNiw2IEBACiBIb3N0OiB0ZXN0LnJlbW90ZS5leGFtcGxlLmNvbQ0KIFVzZXItQWdlbnQ6IGN1cmwvNy4xMy4yLUNWUyAoaTY4Ni1wYy1saW51eC1nbnUpIGxpYmN1cmwvNy4xMy4yLUNWUyBPcGVuU1NMLzAuOS43ZSB6bGliLzEuMi4yIGxpYmlkbi8wLjUuMTMNCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiBDb250ZW50LUxlbmd0aDogMzYNCiBDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZA0KIA0KQEAgLTExNiw3ICsxMTUsNiBAQAogUHJveHktQXV0aG9yaXphdGlvbjogTlRMTSBUbFJNVFZOVFVBQUJBQUFBQm9JSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBPQ0KIFVzZXItQWdlbnQ6IGN1cmwvNy4xMy4yLUNWUyAoaTY4Ni1wYy1saW51eC1nbnUpIGxpYmN1cmwvNy4xMy4yLUNWUyBPcGVuU1NMLzAuOS43ZSB6bGliLzEuMi4yIGxpYmlkbi8wLjUuMTMNCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiBDb250ZW50LUxlbmd0aDogMA0KIENvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkDQogDQpAQCAtMTI1LDcgKzEyMyw2IEBACiBQcm94eS1BdXRob3JpemF0aW9uOiBOVExNIFRsUk1UVk5UVUFBREFBQUFHQUFZQUVBQUFBQ2VBSjRBV0FBQUFBQUFBQUQyQUFBQUNBQUlBUFlBQUFBSUFBZ0EvZ0FBQUFBQUFBQUFBQUFBQm9LQkFMOUxOVzUrbmt5SFpSbXlGYUwvTEo0eE1qTTBNakl6TkdVQ3loZ1E5aHc2ZVdBVDEzRWJEYTBCQVFBQUFBQUFBQUNBUHRYZXNaMEJNVEl6TkRJeU16UUFBQUFBQWdBRUFFTUFRd0FCQUJJQVJRQk1BRWtBVXdCQkFFSUFSUUJVQUVnQUJBQVlBR01BWXdBdUFHa0FZd0JsQUdRQVpRQjJBQzRBYmdCMUFBTUFMQUJsQUd3QWFRQnpBR0VBWWdCbEFIUUFhQUF1QUdNQVl3QXVBR2tBWXdCbEFHUUFaUUIyQUM0QWJnQjFBQUFBQUFBQUFBQUFkR1Z6ZEhWelpYSmpkWEpzYUc5emRBPT0NCiBVc2VyLUFnZW50OiBjdXJsLzcuMTMuMi1DVlMgKGk2ODYtcGMtbGludXgtZ251KSBsaWJjdXJsLzcuMTMuMi1DVlMgT3BlblNTTC8wLjkuN2UgemxpYi8xLjIuMiBsaWJpZG4vMC41LjEzDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogQ29udGVudC1MZW5ndGg6IDM2DQogQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQNCiANCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3Q1NDkgYi90ZXN0cy9kYXRhL3Rlc3Q1NDkKaW5kZXggYTI0OGVkYi4uNTk5MjVjZSAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0NTQ5CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDU0OQpAQCAtNTUsNyArNTUsNiBAQAogR0VUIGZ0cDovL3d3dy5leGFtcGxlLmNvbS9tb28vNTQ5O3R5cGU9aSBIVFRQLzEuMQ0KIEhvc3Q6IHd3dy5leGFtcGxlLmNvbToyMQ0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIDwvcHJvdG9jb2w+CiA8c3Rkb3V0PgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0NTUwIGIvdGVzdHMvZGF0YS90ZXN0NTUwCmluZGV4IGE2MDlhYTIuLjlhNzE3ZWUgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDU1MAorKysgYi90ZXN0cy9kYXRhL3Rlc3Q1NTAKQEAgLTU1LDcgKzU1LDYgQEAKIEdFVCBmdHA6Ly93d3cuZXhhbXBsZS5jb20vbW9vLzU1MDt0eXBlPWEgSFRUUC8xLjENCiBIb3N0OiB3d3cuZXhhbXBsZS5jb206MjENCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiA8L3Byb3RvY29sPgogPHN0ZG91dD4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDU1MSBiL3Rlc3RzL2RhdGEvdGVzdDU1MQppbmRleCBlZDZhZWUyLi42ZGQwMTMzIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3Q1NTEKKysrIGIvdGVzdHMvZGF0YS90ZXN0NTUxCkBAIC04MSw3ICs4MSw2IEBACiBQT1NUIGh0dHA6Ly90ZXN0LnJlbW90ZS5leGFtcGxlLmNvbS9wYXRoLzU1MSBIVFRQLzEuMQ0KIEhvc3Q6IHRlc3QucmVtb3RlLmV4YW1wbGUuY29tDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogQ29udGVudC1MZW5ndGg6IDM2DQogQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQNCiANCkBAIC05MCw3ICs4OSw2IEBACiBIb3N0OiB0ZXN0LnJlbW90ZS5leGFtcGxlLmNvbQ0KIFByb3h5LUF1dGhvcml6YXRpb246IERpZ2VzdCB1c2VybmFtZT0iczFsbHkiLCByZWFsbT0ic29tZXRoaW5nIGZ1biB0byByZWFkIiwgbm9uY2U9IkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLCB1cmk9Ii9wYXRoLzU1MSIsIHJlc3BvbnNlPSIzMzI1MjQwNzI2ZmJkYWYxZTYxZjNhMGRkNDBiOTMwYyINCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiBDb250ZW50LUxlbmd0aDogMzYNCiBDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZA0KIA0KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDU1MiBiL3Rlc3RzL2RhdGEvdGVzdDU1MgppbmRleCBiNDRjYTM0Li5jMjBlMjA0IDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3Q1NTIKKysrIGIvdGVzdHMvZGF0YS90ZXN0NTUyCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDU1NCBiL3Rlc3RzL2RhdGEvdGVzdDU1NAppbmRleCBiNTVmYTNkLi5mZGJkMTg2IDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3Q1NTQKKysrIGIvdGVzdHMvZGF0YS90ZXN0NTU0CkBAIC0xOCw2ICsxOCwyMiBAQAogDQogaGVsbG8KIDwvZGF0YT4KKzxkYXRhY2hlY2s+CitIVFRQLzEuMSAyMDAgT0sNCitEYXRlOiBUaHUsIDA5IE5vdiAyMDEwIDE0OjQ5OjAwIEdNVA0KK1NlcnZlcjogdGVzdC1zZXJ2ZXIvZmFrZSBzd3NjbG9zZQ0KK0Nvbm5lY3Rpb246IGNsb3NlDQorQ29udGVudC1UeXBlOiB0ZXh0L2h0bWwNCisNCitoZWxsbworSFRUUC8xLjEgMjAwIE9LDQorRGF0ZTogVGh1LCAwOSBOb3YgMjAxMCAxNDo0OTowMCBHTVQNCitTZXJ2ZXI6IHRlc3Qtc2VydmVyL2Zha2Ugc3dzY2xvc2UNCitDb25uZWN0aW9uOiBjbG9zZQ0KK0NvbnRlbnQtVHlwZTogdGV4dC9odG1sDQorDQoraGVsbG8KKzwvZGF0YWNoZWNrPgogPC9yZXBseT4KIAogIyBDbGllbnQtc2lkZQpAQCAtODAsNiArOTYsMzcgQEAKIA0KIGJsYWggYmxhaA0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorUE9TVCAvNTU0IEhUVFAvMS4xDQorSG9zdDogJUhPU1RJUDolSFRUUFBPUlQNCitBY2NlcHQ6ICovKg0KK0NvbnRlbnQtTGVuZ3RoOiA3MzINCitFeHBlY3Q6IDEwMC1jb250aW51ZQ0KK0NvbnRlbnQtVHlwZTogbXVsdGlwYXJ0L2Zvcm0tZGF0YTsgYm91bmRhcnk9LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0NvbnRlbnQtRGlzcG9zaXRpb246IGZvcm0tZGF0YTsgbmFtZT0ic2VuZGZpbGUgYWx0ZXJuYXRpdmUiOyBmaWxlbmFtZT0iZmlsZSBuYW1lIDIiDQorDQordGhpcyBpcyB3aGF0IHdlIHBvc3QgdG8gdGhlIHNpbGx5IHdlYiBzZXJ2ZXIKKw0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0NvbnRlbnQtRGlzcG9zaXRpb246IGZvcm0tZGF0YTsgbmFtZT0iY2FsbGJhY2tkYXRhIg0KKw0KK3RoaXMgaXMgd2hhdCB3ZSBwb3N0IHRvIHRoZSBzaWxseSB3ZWIgc2VydmVyCisNCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitDb250ZW50LURpc3Bvc2l0aW9uOiBmb3JtLWRhdGE7IG5hbWU9ImZpbGVuYW1lIg0KKw0KK3Bvc3RpdDIuYw0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0NvbnRlbnQtRGlzcG9zaXRpb246IGZvcm0tZGF0YTsgbmFtZT0ic3VibWl0Ig0KKw0KK3NlbmQNCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitDb250ZW50LURpc3Bvc2l0aW9uOiBmb3JtLWRhdGE7IG5hbWU9InNvbWVuYW1lIjsgZmlsZW5hbWU9InNvbWVmaWxlLnR4dCINCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW4NCisNCitibGFoIGJsYWgNCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIDwvcHJvdG9jb2w+CiA8L3ZlcmlmeT4KIDwvdGVzdGNhc2U+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3Q1NTUgYi90ZXN0cy9kYXRhL3Rlc3Q1NTUKaW5kZXggMGYzYmIwNy4uNmMwOWUzYyAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0NTU1CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDU1NQpAQCAtMTE1LDcgKzExNSw2IEBACiBIb3N0OiB0ZXN0LnJlbW90ZS5leGFtcGxlLmNvbQ0KIFVzZXItQWdlbnQ6IGN1cmwvNy4xMy4yLUNWUyAoaTY4Ni1wYy1saW51eC1nbnUpIGxpYmN1cmwvNy4xMy4yLUNWUyBPcGVuU1NMLzAuOS43ZSB6bGliLzEuMi4yIGxpYmlkbi8wLjUuMTMNCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiBDb250ZW50LUxlbmd0aDogMzYNCiBDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZA0KIA0KQEAgLTEyNSw3ICsxMjQsNiBAQAogUHJveHktQXV0aG9yaXphdGlvbjogTlRMTSBUbFJNVFZOVFVBQUJBQUFBQm9JSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBPQ0KIFVzZXItQWdlbnQ6IGN1cmwvNy4xMy4yLUNWUyAoaTY4Ni1wYy1saW51eC1nbnUpIGxpYmN1cmwvNy4xMy4yLUNWUyBPcGVuU1NMLzAuOS43ZSB6bGliLzEuMi4yIGxpYmlkbi8wLjUuMTMNCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiBDb250ZW50LUxlbmd0aDogMA0KIENvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkDQogDQpAQCAtMTM0LDcgKzEzMiw2IEBACiBQcm94eS1BdXRob3JpemF0aW9uOiBOVExNIFRsUk1UVk5UVUFBREFBQUFHQUFZQUVBQUFBQ2VBSjRBV0FBQUFBQUFBQUQyQUFBQUNBQUlBUFlBQUFBSUFBZ0EvZ0FBQUFBQUFBQUFBQUFBQm9LQkFMOUxOVzUrbmt5SFpSbXlGYUwvTEo0eE1qTTBNakl6TkdVQ3loZ1E5aHc2ZVdBVDEzRWJEYTBCQVFBQUFBQUFBQUNBUHRYZXNaMEJNVEl6TkRJeU16UUFBQUFBQWdBRUFFTUFRd0FCQUJJQVJRQk1BRWtBVXdCQkFFSUFSUUJVQUVnQUJBQVlBR01BWXdBdUFHa0FZd0JsQUdRQVpRQjJBQzRBYmdCMUFBTUFMQUJsQUd3QWFRQnpBR0VBWWdCbEFIUUFhQUF1QUdNQVl3QXVBR2tBWXdCbEFHUUFaUUIyQUM0QWJnQjFBQUFBQUFBQUFBQUFkR1Z6ZEhWelpYSmpkWEpzYUc5emRBPT0NCiBVc2VyLUFnZW50OiBjdXJsLzcuMTMuMi1DVlMgKGk2ODYtcGMtbGludXgtZ251KSBsaWJjdXJsLzcuMTMuMi1DVlMgT3BlblNTTC8wLjkuN2UgemxpYi8xLjIuMiBsaWJpZG4vMC41LjEzDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogQ29udGVudC1MZW5ndGg6IDM2DQogQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQNCiANCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3Q1NTcgYi90ZXN0cy9kYXRhL3Rlc3Q1NTcKaW5kZXggZWUyNzkzZi4uOGQwOTQ0YSAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0NTU3CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDU1NwpAQCAtMzksNiArMzksNyBAQAogQWxsIGN1cmxfbXByaW50ZigpIHVuc2lnbmVkIGxvbmcgdGVzdHMgT0shCiBBbGwgY3VybF9tcHJpbnRmKCkgc2lnbmVkIGxvbmcgdGVzdHMgT0shCiBBbGwgY3VybF9tcHJpbnRmKCkgY3VybF9vZmZfdCB0ZXN0cyBPSyEKK0FsbCBjdXJsX21wcmludGYoKSBzdHJpbmdzIHRlc3RzIE9LIQogPC9zdGRvdXQ+CiA8L3ZlcmlmeT4KIApkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0NTYxIGIvdGVzdHMvZGF0YS90ZXN0NTYxCmluZGV4IGE2MTg4ZWEuLjkwNWU3NTYgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDU2MQorKysgYi90ZXN0cy9kYXRhL3Rlc3Q1NjEKQEAgLTU2LDcgKzU2LDYgQEAKIEdFVCBmdHA6Ly93d3cuZXhhbXBsZS5jb20vbW9vLzU2MTt0eXBlPWkgSFRUUC8xLjENCiBIb3N0OiB3d3cuZXhhbXBsZS5jb206MjENCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiA8L3Byb3RvY29sPgogPHN0ZG91dD4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDU2MyBiL3Rlc3RzL2RhdGEvdGVzdDU2MwppbmRleCA3ODUxNTIzLi5lNGMwMGY1IDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3Q1NjMKKysrIGIvdGVzdHMvZGF0YS90ZXN0NTYzCkBAIC01MCw3ICs1MCw2IEBACiBHRVQgRlRQOi8vJUhPU1RJUDolRlRQUE9SVC81NjM7dHlwZT1BIEhUVFAvMS4xDQogSG9zdDogJUhPU1RJUDolRlRQUE9SVA0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIDwvcHJvdG9jb2w+CiA8L3ZlcmlmeT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDU5MCBiL3Rlc3RzL2RhdGEvdGVzdDU5MAppbmRleCA1NWVhNGYwLi4zMzQxNzc2IDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3Q1OTAKKysrIGIvdGVzdHMvZGF0YS90ZXN0NTkwCkBAIC0xMDQsMjEgKzEwNCwxOCBAQAogSG9zdDogdGVzdC5yZW1vdGUuZXhhbXBsZS5jb20NCiBVc2VyLUFnZW50OiBjdXJsLzcuMTMuMi1DVlMgKGk2ODYtcGMtbGludXgtZ251KSBsaWJjdXJsLzcuMTMuMi1DVlMgT3BlblNTTC8wLjkuN2UgemxpYi8xLjIuMiBsaWJpZG4vMC41LjEzDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogR0VUIGh0dHA6Ly90ZXN0LnJlbW90ZS5leGFtcGxlLmNvbS9wYXRoLzU5MCBIVFRQLzEuMQ0KIEhvc3Q6IHRlc3QucmVtb3RlLmV4YW1wbGUuY29tDQogUHJveHktQXV0aG9yaXphdGlvbjogTlRMTSBUbFJNVFZOVFVBQUJBQUFBQm9JSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBPQ0KIFVzZXItQWdlbnQ6IGN1cmwvNy4xMy4yLUNWUyAoaTY4Ni1wYy1saW51eC1nbnUpIGxpYmN1cmwvNy4xMy4yLUNWUyBPcGVuU1NMLzAuOS43ZSB6bGliLzEuMi4yIGxpYmlkbi8wLjUuMTMNCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiBHRVQgaHR0cDovL3Rlc3QucmVtb3RlLmV4YW1wbGUuY29tL3BhdGgvNTkwIEhUVFAvMS4xDQogSG9zdDogdGVzdC5yZW1vdGUuZXhhbXBsZS5jb20NCiBQcm94eS1BdXRob3JpemF0aW9uOiBOVExNIFRsUk1UVk5UVUFBREFBQUFHQUFZQUVBQUFBQ2VBSjRBV0FBQUFBQUFBQUQyQUFBQUFnQUNBUFlBQUFBSUFBZ0ErQUFBQUFBQUFBQUFBQUFBQm9LQkFCM0hyNlNEbjNORE5rZ2ViYmFQODhFeE1qTTBNakl6TkZJVzRON2FZVDQ0YkFJZzFqdDJibFVCQVFBQUFBQUFBQUNBUHRYZXNaMEJNVEl6TkRJeU16UUFBQUFBQWdBRUFFTUFRd0FCQUJJQVJRQk1BRWtBVXdCQkFFSUFSUUJVQUVnQUJBQVlBR01BWXdBdUFHa0FZd0JsQUdRQVpRQjJBQzRBYmdCMUFBTUFMQUJsQUd3QWFRQnpBR0VBWWdCbEFIUUFhQUF1QUdNQVl3QXVBR2tBWXdCbEFHUUFaUUIyQUM0QWJnQjFBQUFBQUFBQUFBQUFiV1ZqZFhKc2FHOXpkQT09DQogVXNlci1BZ2VudDogY3VybC83LjEzLjItQ1ZTIChpNjg2LXBjLWxpbnV4LWdudSkgbGliY3VybC83LjEzLjItQ1ZTIE9wZW5TU0wvMC45LjdlIHpsaWIvMS4yLjIgbGliaWRuLzAuNS4xMw0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIDwvcHJvdG9jb2w+CiA8L3ZlcmlmeT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDYxIGIvdGVzdHMvZGF0YS90ZXN0NjEKaW5kZXggYWJjOTc4OS4uNzRiOGY2NCAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0NjEKKysrIGIvdGVzdHMvZGF0YS90ZXN0NjEKQEAgLTYyLDcgKzYyLDcgQEAKIDwvcHJvdG9jb2w+CiA8ZmlsZSBuYW1lPSJsb2cvamFyNjEudHh0IiBtb2RlPSJ0ZXh0Ij4KICMgTmV0c2NhcGUgSFRUUCBDb29raWUgRmlsZQotIyBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvaHR0cC1jb29raWVzLmh0bWwKKyMgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9odHRwLWNvb2tpZXMuaHRtbAogIyBUaGlzIGZpbGUgd2FzIGdlbmVyYXRlZCBieSBsaWJjdXJsISBFZGl0IGF0IHlvdXIgb3duIHJpc2suCiAKICNIdHRwT25seV8uZm9vLmNvbQlUUlVFCS93ZS93YW50LwlGQUxTRQkyMDU0MDMwMTg3CXRlc3QJeWVzCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3Q2MiBiL3Rlc3RzL2RhdGEvdGVzdDYyCmluZGV4IDUxYjg4NzAuLmFkZDJhNmEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDYyCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDYyCkBAIC0zMyw3ICszMyw3IEBACiA8L2NvbW1hbmQ+CiA8ZmlsZSBuYW1lPSJsb2cvamFyNjIudHh0Ij4KICMgTmV0c2NhcGUgSFRUUCBDb29raWUgRmlsZQotIyBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvaHR0cC1jb29raWVzLmh0bWwKKyMgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9odHRwLWNvb2tpZXMuaHRtbAogIyBUaGlzIGZpbGUgd2FzIGdlbmVyYXRlZCBieSBsaWJjdXJsISBFZGl0IGF0IHlvdXIgb3duIHJpc2suCiAKICNIdHRwT25seV8uZm9vLmNvbQlUUlVFCS93ZS93YW50LwlGQUxTRQkyMDU0MDMwMTg3CXRlc3QJeWVzCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3Q2MyBiL3Rlc3RzL2RhdGEvdGVzdDYzCmluZGV4IGNjYzE5ZGQuLjJhOTY0NDkgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDYzCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDYzCkBAIC00NSw3ICs0NSw2IEBACiBIb3N0OiB3ZS53YW50LnRoYXQuc2l0ZS5jb20NCiBQcm94eS1BdXRob3JpemF0aW9uOiBCYXNpYyBabUZyWlRwMWMyVnkNCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiA8L3Byb3RvY29sPgogPC92ZXJpZnk+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3Q3MDYgYi90ZXN0cy9kYXRhL3Rlc3Q3MDYKaW5kZXggMzMwY2IyMy4uYjA1MzFlNyAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0NzA2CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDcwNgpAQCAtMTMsNyArMTMsNyBAQAogPHJlcGx5PgogIyBXaGVuIGRvaW5nIExJU1QsIHdlIGdldCB0aGUgZGVmYXVsdCBsaXN0IG91dHB1dCBoYXJkLWNvZGVkIGluIHRoZSB0ZXN0CiAjIEZUUCBzZXJ2ZXIKLTxkYXRhY2hlY2s+Cis8ZGF0YWNoZWNrIG1vZGU9InRleHQiPgogdG90YWwgMjAKIGRyd3hyLXhyLXggICA4IDk4ICAgICAgIDk4ICAgICAgICAgICA1MTIgT2N0IDIyIDEzOjA2IC4KIGRyd3hyLXhyLXggICA4IDk4ICAgICAgIDk4ICAgICAgICAgICA1MTIgT2N0IDIyIDEzOjA2IC4uCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3Q3MDcgYi90ZXN0cy9kYXRhL3Rlc3Q3MDcKaW5kZXggYzNhODYyMS4uZDRjM2FiNyAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0NzA3CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDcwNwpAQCAtMTMsNyArMTMsNyBAQAogPHJlcGx5PgogIyBXaGVuIGRvaW5nIExJU1QsIHdlIGdldCB0aGUgZGVmYXVsdCBsaXN0IG91dHB1dCBoYXJkLWNvZGVkIGluIHRoZSB0ZXN0CiAjIEZUUCBzZXJ2ZXIKLTxkYXRhY2hlY2s+Cis8ZGF0YWNoZWNrIG1vZGU9InRleHQiPgogdG90YWwgMjAKIGRyd3hyLXhyLXggICA4IDk4ICAgICAgIDk4ICAgICAgICAgICA1MTIgT2N0IDIyIDEzOjA2IC4KIGRyd3hyLXhyLXggICA4IDk4ICAgICAgIDk4ICAgICAgICAgICA1MTIgT2N0IDIyIDEzOjA2IC4uCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3Q3MyBiL3Rlc3RzL2RhdGEvdGVzdDczCmluZGV4IGEyMzU0NmQuLjcwNDA4YTggMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDczCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDczCkBAIC00Niw3ICs0Niw3IEBACiA8L3Byb3RvY29sPgogPGZpbGUgbmFtZT0ibG9nL2phcjczLnR4dCIgbW9kZT0idGV4dCI+CiAjIE5ldHNjYXBlIEhUVFAgQ29va2llIEZpbGUKLSMgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2h0dHAtY29va2llcy5odG1sCisjIGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvaHR0cC1jb29raWVzLmh0bWwKICMgVGhpcyBmaWxlIHdhcyBnZW5lcmF0ZWQgYnkgbGliY3VybCEgRWRpdCBhdCB5b3VyIG93biByaXNrLgogCiAuTk9UX0RJU0NMT1NFRC5zZQlUUlVFCS8JRkFMU0UJMAlJUENaUVgwMWFmMGZjYTVjCTAwMDAxMDAwODE2OGMyMDBkMjVkZmM0YgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0NzkgYi90ZXN0cy9kYXRhL3Rlc3Q3OQppbmRleCBiMjU2NmUyLi41NWZjMjQ1IDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3Q3OQorKysgYi90ZXN0cy9kYXRhL3Rlc3Q3OQpAQCAtNDgsNyArNDgsNiBAQAogR0VUIGZ0cDovLyVIT1NUSVA6JUhUVFBQT1JUL3dlL3dhbnQvdGhhdC9wYWdlLzc5IEhUVFAvMS4xDQogSG9zdDogJUhPU1RJUDolSFRUUFBPUlQNCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiA8L3Byb3RvY29sPgogPC92ZXJpZnk+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3Q4IGIvdGVzdHMvZGF0YS90ZXN0OAppbmRleCAwMzBmZDU1Li5mZmM0MjFhIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3Q4CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDgKQEAgLTQxLDYgKzQxLDggQEAKIFNldC1Db29raWU6IGR1cGxpY2F0ZT10ZXN0OyBkb21haW49LjAuMC4xOyBkb21haW49LjAuMC4xOyBwYXRoPS9kb25rZXk7CiBTZXQtQ29va2llOiBjb29raWU9eWVzOyBwYXRoPS93ZTsKIFNldC1Db29raWU6IGNvb2tpZT1wZXJoYXBzOyBwYXRoPS93ZS93YW50OworU2V0LUNvb2tpZTogbmFtZSB3aXRoIHNwYWNlPWlzIHdlaXJkIGJ1dDsgcGF0aD0vd2Uvd2FudDsKK1NldC1Db29raWU6IHRyYWlsaW5nc3BhY2UgICAgPSByZW1vdmVkOyBwYXRoPS93ZS93YW50OwogU2V0LUNvb2tpZTogbm9jb29raWU9eWVzOyBwYXRoPS9XRTsKIFNldC1Db29raWU6IGJsZXhwPXllc3llczsgZG9tYWluPSVIT1NUSVA7IGRvbWFpbj0lSE9TVElQOyBleHBpcnk9dG90YWxseSBiYWQ7CiBTZXQtQ29va2llOiBwYXJ0aWFsaXA9bm9ubzsgZG9tYWluPS4wLjAuMTsKQEAgLTYwLDcgKzYyLDcgQEAKIEdFVCAvd2Uvd2FudC84IEhUVFAvMS4xDQogSG9zdDogJUhPU1RJUDolSFRUUFBPUlQNCiBBY2NlcHQ6ICovKg0KLUNvb2tpZTogY29va2llPXBlcmhhcHM7IGNvb2tpZT15ZXM7IGZvb2Jhcj1uYW1lOyBibGV4cD15ZXN5ZXMNCitDb29raWU6IGNvb2tpZT1wZXJoYXBzOyBuYW1lIHdpdGggc3BhY2U9aXMgd2VpcmQgYnV0OyB0cmFpbGluZ3NwYWNlPXJlbW92ZWQ7IGNvb2tpZT15ZXM7IGZvb2Jhcj1uYW1lOyBibGV4cD15ZXN5ZXMNCiANCiA8L3Byb3RvY29sPgogPC92ZXJpZnk+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3Q4MCBiL3Rlc3RzL2RhdGEvdGVzdDgwCmluZGV4IDE0N2E2YWEuLjhhNjM1YjQgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDgwCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDgwCkBAIC02OCw3ICs2OCw2IEBACiBIb3N0OiB0ZXN0LjgwOiVIVFRQUE9SVA0KIFByb3h5LUF1dGhvcml6YXRpb246IEJhc2ljIGVXOTFZWEpsT25sdmRYSnpaV3htDQogVXNlci1BZ2VudDogY3VybC83LjEwLjctcHJlMiAoaTY4Ni1wYy1saW51eC1nbnUpIGxpYmN1cmwvNy4xMC43LXByZTIgT3BlblNTTC8wLjkuN2EgemxpYi8xLjEuMw0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiA8L3Byb3h5PgogPHByb3RvY29sPgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0ODEgYi90ZXN0cy9kYXRhL3Rlc3Q4MQppbmRleCBkYzA1NGQyLi41M2FmZmEwIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3Q4MQorKysgYi90ZXN0cy9kYXRhL3Rlc3Q4MQpAQCAtODksMTQgKzg5LDEyIEBACiBQcm94eS1BdXRob3JpemF0aW9uOiBOVExNIFRsUk1UVk5UVUFBQkFBQUFCb0lJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE9DQogVXNlci1BZ2VudDogY3VybC83LjEwLjYtcHJlMSAoaTY4Ni1wYy1saW51eC1nbnUpIGxpYmN1cmwvNy4xMC42LXByZTEgT3BlblNTTC8wLjkuN2EgaXB2NiB6bGliLzEuMS4zDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogR0VUIGh0dHA6Ly8lSE9TVElQOiVIVFRQUE9SVC84MSBIVFRQLzEuMQ0KIEhvc3Q6ICVIT1NUSVA6JUhUVFBQT1JUDQogUHJveHktQXV0aG9yaXphdGlvbjogTlRMTSBUbFJNVFZOVFVBQURBQUFBR0FBWUFFQUFBQUNlQUo0QVdBQUFBQUFBQUFEMkFBQUFDQUFJQVBZQUFBQUlBQWdBL2dBQUFBQUFBQUFBQUFBQUJvS0JBTDlMTlc1K25reUhaUm15RmFML0xKNHhNak0wTWpJek5HVUN5aGdROWh3NmVXQVQxM0ViRGEwQkFRQUFBQUFBQUFDQVB0WGVzWjBCTVRJek5ESXlNelFBQUFBQUFnQUVBRU1BUXdBQkFCSUFSUUJNQUVrQVV3QkJBRUlBUlFCVUFFZ0FCQUFZQUdNQVl3QXVBR2tBWXdCbEFHUUFaUUIyQUM0QWJnQjFBQU1BTEFCbEFHd0FhUUJ6QUdFQVlnQmxBSFFBYUFBdUFHTUFZd0F1QUdrQVl3QmxBR1FBWlFCMkFDNEFiZ0IxQUFBQUFBQUFBQUFBZEdWemRIVnpaWEpqZFhKc2FHOXpkQT09DQogVXNlci1BZ2VudDogY3VybC83LjEwLjYtcHJlMSAoaTY4Ni1wYy1saW51eC1nbnUpIGxpYmN1cmwvNy4xMC42LXByZTEgT3BlblNTTC8wLjkuN2EgaXB2NiB6bGliLzEuMS4zDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogPC9wcm90b2NvbD4KIDwvdmVyaWZ5PgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0ODIgYi90ZXN0cy9kYXRhL3Rlc3Q4MgppbmRleCA4YjU4Zjc1Li5kZTNmY2JhIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3Q4MgorKysgYi90ZXN0cy9kYXRhL3Rlc3Q4MgpAQCAtNDksNyArNDksNiBAQAogUHJveHktQXV0aG9yaXphdGlvbjogQmFzaWMgZEdWemRIVnpaWEk2ZEdWemRIQmhjM009DQogVXNlci1BZ2VudDogY3VybC83LjEwLjYtcHJlMSAoaTY4Ni1wYy1saW51eC1nbnUpIGxpYmN1cmwvNy4xMC42LXByZTEgT3BlblNTTC8wLjkuN2EgaXB2NiB6bGliLzEuMS4zDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogPC9wcm90b2NvbD4KIDwvdmVyaWZ5PgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0ODI0IGIvdGVzdHMvZGF0YS90ZXN0ODI0CmluZGV4IDI0MmMxYjQuLmU2NDZlZWMgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDgyNAorKysgYi90ZXN0cy9kYXRhL3Rlc3Q4MjQKQEAgLTM0LDcgKzM0LDcgQEAKIGltYXAKIDwvc2VydmVyPgogIDxuYW1lPgotSU1BUCBPQXV0aCAyLjAgYXV0aGVudGljYXRpb24KK0lNQVAgT0F1dGggMi4wIChYT0FVVEgyKSBhdXRoZW50aWNhdGlvbgogIDwvbmFtZT4KICA8Y29tbWFuZD4KICdpbWFwOi8vJUhPU1RJUDolSU1BUFBPUlQvODI0LztVSUQ9MScgLXUgdXNlciAtLW9hdXRoMi1iZWFyZXIgbUZfOS5CNWYtNC4xSnFNCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3Q4MjggYi90ZXN0cy9kYXRhL3Rlc3Q4MjgKaW5kZXggYjJmYjY5My4uYzg2NTE2YSAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0ODI4CisrKyBiL3Rlc3RzL2RhdGEvdGVzdDgyOApAQCAtMzUsNyArMzUsNyBAQAogaW1hcAogPC9zZXJ2ZXI+CiAgPG5hbWU+Ci1JTUFQIE9BdXRoIDIuMCBhdXRoZW50aWNhdGlvbiB3aXRoIGluaXRpYWwgcmVzcG9uc2UKK0lNQVAgT0F1dGggMi4wIChYT0FVVEgyKSBhdXRoZW50aWNhdGlvbiB3aXRoIGluaXRpYWwgcmVzcG9uc2UKICA8L25hbWU+CiAgPGNvbW1hbmQ+CiAnaW1hcDovLyVIT1NUSVA6JUlNQVBQT1JULzgyOC87VUlEPTEnIC11IHVzZXIgLS1vYXV0aDItYmVhcmVyIG1GXzkuQjVmLTQuMUpxTQpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0ODMgYi90ZXN0cy9kYXRhL3Rlc3Q4MwppbmRleCAxMjBiY2M2Li40ZmU4YmEzIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3Q4MworKysgYi90ZXN0cy9kYXRhL3Rlc3Q4MwpAQCAtNjQsNyArNjQsNiBAQAogQ09OTkVDVCB0ZXN0LjgzOiVIVFRQUE9SVCBIVFRQLzEuMQ0KIEhvc3Q6IHRlc3QuODM6JUhUVFBQT1JUDQogVXNlci1BZ2VudDogY3VybC83LjEwLjctcHJlMiAoaTY4Ni1wYy1saW51eC1nbnUpIGxpYmN1cmwvNy4xMC43LXByZTIgT3BlblNTTC8wLjkuN2EgemxpYi8xLjEuMw0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiA8L3Byb3h5PgogPHByb3RvY29sPgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0ODQgYi90ZXN0cy9kYXRhL3Rlc3Q4NAppbmRleCA2MjlkYWUyLi5jZjY2N2Q2IDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3Q4NAorKysgYi90ZXN0cy9kYXRhL3Rlc3Q4NApAQCAtNDcsNyArNDcsNiBAQAogQXV0aG9yaXphdGlvbjogQmFzaWMgYVdGdE9tMTVjMlZzWmc9PQ0KIFVzZXItQWdlbnQ6IGN1cmwvNy4xMC43LXByZTIgKGk2ODYtcGMtbGludXgtZ251KSBsaWJjdXJsLzcuMTAuNy1wcmUyIE9wZW5TU0wvMC45LjdhIHpsaWIvMS4xLjMNCiBBY2NlcHQ6ICovKg0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiA8L3Byb3RvY29sPgogPC92ZXJpZnk+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3Q4NDEgYi90ZXN0cy9kYXRhL3Rlc3Q4NDEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODM5YmZlMwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDg0MQpAQCAtMCwwICsxLDUxIEBACis8dGVzdGNhc2U+Cis8aW5mbz4KKzxrZXl3b3Jkcz4KK0lNQVAKK0NsZWFyIFRleHQKK0ZFVENICitDVVNUT01SRVFVRVNUCis8L2tleXdvcmRzPgorPC9pbmZvPgorCisjCisjIFNlcnZlci1zaWRlCis8cmVwbHk+Cis8ZGF0YT4KK2JvZHkNCisNCisrIEN1cmwgZGlkIG5vdCB1c2VkIHRvIGxpa2UgdGhpcyBsaW5lDQorLS0NCisgIHlvdXJzIHNpbmNlcmVseQ0KKzwvZGF0YT4KKzxkYXRhY2hlY2s+CisqIDEyMyBGRVRDSCAoQk9EWVsxXSB7NzB9DQorPC9kYXRhY2hlY2s+Cis8L3JlcGx5PgorCisjCisjIENsaWVudC1zaWRlCis8Y2xpZW50PgorPHNlcnZlcj4KK2ltYXAKKzwvc2VydmVyPgorIDxuYW1lPgorSU1BUCBjdXN0b20gcmVxdWVzdCBkb2Vzbid0IGNoZWNrIGNvbnRpbnVhdGlvbiBkYXRhCisgPC9uYW1lPgorIDxjb21tYW5kPgorIGltYXA6Ly8lSE9TVElQOiVJTUFQUE9SVC84NDEvIC11IHVzZXI6c2VjcmV0IC1YICdGRVRDSCAxMjMgQk9EWVsxXScKKzwvY29tbWFuZD4KKzwvY2xpZW50PgorCisjCisjIFZlcmlmeSBkYXRhIGFmdGVyIHRoZSB0ZXN0IGhhcyBiZWVuICJzaG90IgorPHZlcmlmeT4KKzxwcm90b2NvbD4KK0EwMDEgQ0FQQUJJTElUWQ0KK0EwMDIgTE9HSU4gdXNlciBzZWNyZXQNCitBMDAzIFNFTEVDVCA4NDENCitBMDA0IEZFVENIIDEyMyBCT0RZWzFdDQorQTAwNSBMT0dPVVQNCis8L3Byb3RvY29sPgorPC92ZXJpZnk+Cis8L3Rlc3RjYXNlPgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0ODQyIGIvdGVzdHMvZGF0YS90ZXN0ODQyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5OGQ1YTIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9kYXRhL3Rlc3Q4NDIKQEAgLTAsMCArMSw2MiBAQAorPHRlc3RjYXNlPgorPGluZm8+Cis8a2V5d29yZHM+CitJTUFQCitTQVNMCitTQVNMIEFVVEggT0FVVEgyCitSRkM2NzQ5CitSRkM3NjI4Cis8L2tleXdvcmRzPgorPC9pbmZvPgorCisjCisjIFNlcnZlci1zaWRlCis8cmVwbHk+Cis8c2VydmVyY21kPgorQVVUSCBPQVVUSEJFQVJFUgorUkVQTFkgQVVUSEVOVElDQVRFICsKK1JFUExZIGRYTmxjajExYzJWeUFXaHZjM1E5TVRJM0xqQXVNQzR4QVhCdmNuUTlPVEF3TXdGaGRYUm9QVUpsWVhKbGNpQnRSbDg1TGtJMVppMDBMakZLY1UwQkFRPT0gQTAwMiBPSyBBVVRIRU5USUNBVEUgY29tcGxldGVkCis8L3NlcnZlcmNtZD4KKzxkYXRhPgorRnJvbTogbWVAc29tZXdoZXJlDQorVG86IGZha2VAbm93aGVyZQ0KKw0KK2JvZHkNCisNCistLQ0KKyAgeW91cnMgc2luY2VyZWx5DQorPC9kYXRhPgorPC9yZXBseT4KKworIworIyBDbGllbnQtc2lkZQorPGNsaWVudD4KKzxzZXJ2ZXI+CitpbWFwCis8L3NlcnZlcj4KKyA8bmFtZT4KK0lNQVAgT0F1dGggMi4wIChPQVVUSEJFQVJFUikgYXV0aGVudGljYXRpb24KKyA8L25hbWU+CisgPGNvbW1hbmQ+CisnaW1hcDovLyVIT1NUSVA6JUlNQVBQT1JULzg0Mi87VUlEPTEnIC11IHVzZXIgLS1vYXV0aDItYmVhcmVyIG1GXzkuQjVmLTQuMUpxTQorPC9jb21tYW5kPgorIyBUaGUgcHJvdG9jb2wgc2VjdGlvbiBkb2Vzbid0IHN1cHBvcnQgd2F5cyBvZiBzcGVjaWZpbmcgdGhlIHJhdyBkYXRhIGluIHRoZQorIyBiYXNlNjQgZW5jb2RlZCBtZXNzYWdlIHNvIHdlIG11c3QgYXNzZXJ0IHRoaXMKKzxwcmVjaGVjaz4KK3BlcmwgLWUgInByaW50ICdUZXN0IHJlcXVpcmVzIGRlZmF1bHQgdGVzdCBzZXJ2ZXIgaG9zdCBhbmQgcG9ydCcgaWYgKCAnJUhPU1RJUCcgbmUgJzEyNy4wLjAuMScgfHwgJyVJTUFQUE9SVCcgbmUgJzkwMDMnICk7IgorPC9wcmVjaGVjaz4KKzwvY2xpZW50PgorCisjCisjIFZlcmlmeSBkYXRhIGFmdGVyIHRoZSB0ZXN0IGhhcyBiZWVuICJzaG90IgorPHZlcmlmeT4KKzxwcm90b2NvbD4KK0EwMDEgQ0FQQUJJTElUWQ0KK0EwMDIgQVVUSEVOVElDQVRFIE9BVVRIQkVBUkVSDQorZFhObGNqMTFjMlZ5QVdodmMzUTlNVEkzTGpBdU1DNHhBWEJ2Y25ROU9UQXdNd0ZoZFhSb1BVSmxZWEpsY2lCdFJsODVMa0kxWmkwMExqRktjVTBCQVE9PQ0KK0EwMDMgU0VMRUNUIDg0Mg0KK0EwMDQgRkVUQ0ggMSBCT0RZW10NCitBMDA1IExPR09VVA0KKzwvcHJvdG9jb2w+Cis8L3ZlcmlmeT4KKzwvdGVzdGNhc2U+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3Q4NDMgYi90ZXN0cy9kYXRhL3Rlc3Q4NDMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjY2YWFhNwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDg0MwpAQCAtMCwwICsxLDYyIEBACis8dGVzdGNhc2U+Cis8aW5mbz4KKzxrZXl3b3Jkcz4KK0lNQVAKK1NBU0wKK1NBU0wgQVVUSCBPQVVUSDIKK1NBU0wtSVIKK1JGQzY3NDkKK1JGQzc2MjgKKzwva2V5d29yZHM+Cis8L2luZm8+CisKKyMKKyMgU2VydmVyLXNpZGUKKzxyZXBseT4KKzxzZXJ2ZXJjbWQ+CitBVVRIIE9BVVRIQkVBUkVSCitDQVBBIFNBU0wtSVIKK1JFUExZIEFVVEhFTlRJQ0FURSBBMDAyIE9LIEFVVEhFTlRJQ0FURSBjb21wbGV0ZWQKKzwvc2VydmVyY21kPgorPGRhdGE+CitGcm9tOiBtZUBzb21ld2hlcmUNCitUbzogZmFrZUBub3doZXJlDQorDQorYm9keQ0KKw0KKy0tDQorICB5b3VycyBzaW5jZXJlbHkNCis8L2RhdGE+Cis8L3JlcGx5PgorCisjCisjIENsaWVudC1zaWRlCis8Y2xpZW50PgorPHNlcnZlcj4KK2ltYXAKKzwvc2VydmVyPgorIDxuYW1lPgorSU1BUCBPQXV0aCAyLjAgKE9BVVRIQkVBUkVSKSBhdXRoZW50aWNhdGlvbiB3aXRoIGluaXRpYWwgcmVzcG9uc2UKKyA8L25hbWU+CisgPGNvbW1hbmQ+CisnaW1hcDovLyVIT1NUSVA6JUlNQVBQT1JULzg0My87VUlEPTEnIC11IHVzZXIgLS1vYXV0aDItYmVhcmVyIG1GXzkuQjVmLTQuMUpxTQorPC9jb21tYW5kPgorIyBUaGUgcHJvdG9jb2wgc2VjdGlvbiBkb2Vzbid0IHN1cHBvcnQgd2F5cyBvZiBzcGVjaWZpbmcgdGhlIHJhdyBkYXRhIGluIHRoZQorIyBiYXNlNjQgZW5jb2RlZCBtZXNzYWdlIHNvIHdlIG11c3QgYXNzZXJ0IHRoaXMKKzxwcmVjaGVjaz4KK3BlcmwgLWUgInByaW50ICdUZXN0IHJlcXVpcmVzIGRlZmF1bHQgdGVzdCBzZXJ2ZXIgaG9zdCBhbmQgcG9ydCcgaWYgKCAnJUhPU1RJUCcgbmUgJzEyNy4wLjAuMScgfHwgJyVJTUFQUE9SVCcgbmUgJzkwMDMnICk7IgorPC9wcmVjaGVjaz4KKzwvY2xpZW50PgorCisjCisjIFZlcmlmeSBkYXRhIGFmdGVyIHRoZSB0ZXN0IGhhcyBiZWVuICJzaG90IgorPHZlcmlmeT4KKzxwcm90b2NvbD4KK0EwMDEgQ0FQQUJJTElUWQ0KK0EwMDIgQVVUSEVOVElDQVRFIE9BVVRIQkVBUkVSIGRYTmxjajExYzJWeUFXaHZjM1E5TVRJM0xqQXVNQzR4QVhCdmNuUTlPVEF3TXdGaGRYUm9QVUpsWVhKbGNpQnRSbDg1TGtJMVppMDBMakZLY1UwQkFRPT0NCitBMDAzIFNFTEVDVCA4NDMNCitBMDA0IEZFVENIIDEgQk9EWVtdDQorQTAwNSBMT0dPVVQNCis8L3Byb3RvY29sPgorPC92ZXJpZnk+Cis8L3Rlc3RjYXNlPgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0ODQ0IGIvdGVzdHMvZGF0YS90ZXN0ODQ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhY2Q2NjcKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9kYXRhL3Rlc3Q4NDQKQEAgLTAsMCArMSw1OSBAQAorPHRlc3RjYXNlPgorPGluZm8+Cis8a2V5d29yZHM+CitJTUFQCitTQVNMCitTQVNMIEFVVEggT0FVVEgyCitSRkM2NzQ5CitSRkM3NjI4Cis8L2tleXdvcmRzPgorPC9pbmZvPgorCisjCisjIFNlcnZlci1zaWRlCis8cmVwbHk+Cis8c2VydmVyY21kPgorQVVUSCBPQVVUSEJFQVJFUgorUkVQTFkgQVVUSEVOVElDQVRFICsKK1JFUExZIGRYTmxjajExYzJWeUFXaHZjM1E5TVRJM0xqQXVNQzR4QVhCdmNuUTlPVEF3TXdGaGRYUm9QVUpsWVhKbGNpQnRSbDg1TGtJMVppMDBMakZLY1UwQkFRPT0gKyBleUp6ZEdGMGRYTWlPaUpwYm5aaGJHbGtYM1J2YTJWdUlpd2ljMk52Y0dVaU9pSmxlR0Z0Y0d4bFgzTmpiM0JsSWl3aWIzQmxibWxrTFdOdmJtWnBaM1Z5WVhScGIyNGlPaUpvZEhSd2N6b3ZMMlY0WVcxd2JHVXVZMjl0THk1M1pXeHNMV3R1YjNkdUwyOXdaVzVwWkMxamIyNW1hV2QxY21GMGFXOXVJbjA9CitSRVBMWSBBUT09IEEwMDIgTk8gQXV0aGVudGljYXRpb24gZmFpbGVkCis8L3NlcnZlcmNtZD4KKzwvcmVwbHk+CisKKyMKKyMgQ2xpZW50LXNpZGUKKzxjbGllbnQ+Cis8c2VydmVyPgoraW1hcAorPC9zZXJ2ZXI+CisgPG5hbWU+CitJTUFQIE9BdXRoIDIuMCAoT0FVVEhCRUFSRVIpIGZhaWx1cmUgYXMgY29udGludWF0aW9uCisgPC9uYW1lPgorIDxjb21tYW5kPgorJ2ltYXA6Ly8lSE9TVElQOiVJTUFQUE9SVC84NDQvO1VJRD0xJyAtdSB1c2VyIC0tb2F1dGgyLWJlYXJlciBtRl85LkI1Zi00LjFKcU0KKzwvY29tbWFuZD4KKyMgVGhlIHByb3RvY29sIHNlY3Rpb24gZG9lc24ndCBzdXBwb3J0IHdheXMgb2Ygc3BlY2lmaW5nIHRoZSByYXcgZGF0YSBpbiB0aGUKKyMgYmFzZTY0IGVuY29kZWQgbWVzc2FnZSBzbyB3ZSBtdXN0IGFzc2VydCB0aGlzCis8cHJlY2hlY2s+CitwZXJsIC1lICJwcmludCAnVGVzdCByZXF1aXJlcyBkZWZhdWx0IHRlc3Qgc2VydmVyIGhvc3QgYW5kIHBvcnQnIGlmICggJyVIT1NUSVAnIG5lICcxMjcuMC4wLjEnIHx8ICclSU1BUFBPUlQnIG5lICc5MDAzJyApOyIKKzwvcHJlY2hlY2s+Cis8L2NsaWVudD4KKworIworIyBWZXJpZnkgZGF0YSBhZnRlciB0aGUgdGVzdCBoYXMgYmVlbiAic2hvdCIKKzx2ZXJpZnk+CisjIDY3IC0gQ1VSTEVfTE9HSU5fREVOSUVECis8ZXJyb3Jjb2RlPgorNjcKKzwvZXJyb3Jjb2RlPgorIworIyBUaGUgbXVsdGkgaW50ZXJmYWNlIGNvbnNpZGVycyBhIGJyb2tlbiAiQ09OTkVDVCIgYXMgYSBwcmVtYXR1cmVseSBicm9rZW4KKyMgdHJhbnNmZXIgYW5kIHN1Y2ggYSBjb25uZWN0aW9uIHdpbGwgbm90IGdldCBhICJMT0dPVVQiCis8cHJvdG9jb2w+CitBMDAxIENBUEFCSUxJVFkNCitBMDAyIEFVVEhFTlRJQ0FURSBPQVVUSEJFQVJFUg0KK2RYTmxjajExYzJWeUFXaHZjM1E5TVRJM0xqQXVNQzR4QVhCdmNuUTlPVEF3TXdGaGRYUm9QVUpsWVhKbGNpQnRSbDg1TGtJMVppMDBMakZLY1UwQkFRPT0NCitBUT09DQorPC9wcm90b2NvbD4KKzwvdmVyaWZ5PgorPC90ZXN0Y2FzZT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDg0NSBiL3Rlc3RzL2RhdGEvdGVzdDg0NQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNTJhYjU4Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvZGF0YS90ZXN0ODQ1CkBAIC0wLDAgKzEsNTkgQEAKKzx0ZXN0Y2FzZT4KKzxpbmZvPgorPGtleXdvcmRzPgorSU1BUAorU0FTTAorU0FTTCBBVVRIIE9BVVRIMgorU0FTTC1JUgorUkZDNjc0OQorUkZDNzYyOAorPC9rZXl3b3Jkcz4KKzwvaW5mbz4KKworIworIyBTZXJ2ZXItc2lkZQorPHJlcGx5PgorPHNlcnZlcmNtZD4KK0FVVEggT0FVVEhCRUFSRVIKK0NBUEEgU0FTTC1JUgorUkVQTFkgQVVUSEVOVElDQVRFICsgZXlKemRHRjBkWE1pT2lKcGJuWmhiR2xrWDNSdmEyVnVJaXdpYzJOdmNHVWlPaUpsZUdGdGNHeGxYM05qYjNCbElpd2liM0JsYm1sa0xXTnZibVpwWjNWeVlYUnBiMjRpT2lKb2RIUndjem92TDJWNFlXMXdiR1V1WTI5dEx5NTNaV3hzTFd0dWIzZHVMMjl3Wlc1cFpDMWpiMjVtYVdkMWNtRjBhVzl1SW4wPQorUkVQTFkgQVE9PSBBMDAyIE5PIEF1dGhlbnRpY2F0aW9uIGZhaWxlZAorPC9zZXJ2ZXJjbWQ+Cis8L3JlcGx5PgorCisjCisjIENsaWVudC1zaWRlCis8Y2xpZW50PgorPHNlcnZlcj4KK2ltYXAKKzwvc2VydmVyPgorIDxuYW1lPgorSU1BUCBPQXV0aCAyLjAgKE9BVVRIQkVBUkVSKSBmYWlsdXJlIGFzIGNvbnRpbnVhdGlvbiB3aXRoIGluaXRpYWwgcmVzcG9uc2UKKyA8L25hbWU+CisgPGNvbW1hbmQ+CisnaW1hcDovLyVIT1NUSVA6JUlNQVBQT1JULzg0NS87VUlEPTEnIC11IHVzZXIgLS1vYXV0aDItYmVhcmVyIG1GXzkuQjVmLTQuMUpxTQorPC9jb21tYW5kPgorIyBUaGUgcHJvdG9jb2wgc2VjdGlvbiBkb2Vzbid0IHN1cHBvcnQgd2F5cyBvZiBzcGVjaWZpbmcgdGhlIHJhdyBkYXRhIGluIHRoZQorIyBiYXNlNjQgZW5jb2RlZCBtZXNzYWdlIHNvIHdlIG11c3QgYXNzZXJ0IHRoaXMKKzxwcmVjaGVjaz4KK3BlcmwgLWUgInByaW50ICdUZXN0IHJlcXVpcmVzIGRlZmF1bHQgdGVzdCBzZXJ2ZXIgaG9zdCBhbmQgcG9ydCcgaWYgKCAnJUhPU1RJUCcgbmUgJzEyNy4wLjAuMScgfHwgJyVJTUFQUE9SVCcgbmUgJzkwMDMnICk7IgorPC9wcmVjaGVjaz4KKzwvY2xpZW50PgorCisjCisjIFZlcmlmeSBkYXRhIGFmdGVyIHRoZSB0ZXN0IGhhcyBiZWVuICJzaG90IgorPHZlcmlmeT4KKyMgNjcgLSBDVVJMRV9MT0dJTl9ERU5JRUQKKzxlcnJvcmNvZGU+Cis2NworPC9lcnJvcmNvZGU+CisjCisjIFRoZSBtdWx0aSBpbnRlcmZhY2UgY29uc2lkZXJzIGEgYnJva2VuICJDT05ORUNUIiBhcyBhIHByZW1hdHVyZWx5IGJyb2tlbgorIyB0cmFuc2ZlciBhbmQgc3VjaCBhIGNvbm5lY3Rpb24gd2lsbCBub3QgZ2V0IGEgIkxPR09VVCIKKzxwcm90b2NvbD4KK0EwMDEgQ0FQQUJJTElUWQ0KK0EwMDIgQVVUSEVOVElDQVRFIE9BVVRIQkVBUkVSIGRYTmxjajExYzJWeUFXaHZjM1E5TVRJM0xqQXVNQzR4QVhCdmNuUTlPVEF3TXdGaGRYUm9QVUpsWVhKbGNpQnRSbDg1TGtJMVppMDBMakZLY1UwQkFRPT0NCitBUT09DQorPC9wcm90b2NvbD4KKzwvdmVyaWZ5PgorPC90ZXN0Y2FzZT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDg1IGIvdGVzdHMvZGF0YS90ZXN0ODUKaW5kZXggY2I1ZTZlMC4uYTExMzYzZiAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0ODUKKysrIGIvdGVzdHMvZGF0YS90ZXN0ODUKQEAgLTUxLDcgKzUxLDYgQEAKIEF1dGhvcml6YXRpb246IEJhc2ljIGFXRnRPbTE1YzJWc1pnPT0NCiBVc2VyLUFnZW50OiBjdXJsLzcuMTAuNy1wcmUyIChpNjg2LXBjLWxpbnV4LWdudSkgbGliY3VybC83LjEwLjctcHJlMiBPcGVuU1NMLzAuOS43YSB6bGliLzEuMS4zDQogQWNjZXB0OiAqLyoNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogPC9wcm90b2NvbD4KIDwvdmVyaWZ5PgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0ODcgYi90ZXN0cy9kYXRhL3Rlc3Q4NwppbmRleCA0ODgwMzdjLi41ZTZhZWYzIDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3Q4NworKysgYi90ZXN0cy9kYXRhL3Rlc3Q4NwpAQCAtNTAsNyArNTAsNyBAQAogIyBzdXJ2aXZlcwogIwogPHZlcmlmeT4KLTxmaWxlIG5hbWU9ImxvZy9kdW1waXQjMi5kdW1wIiBtb2RlPSJ0ZXh0Ij4KKzxmaWxlIG5hbWU9ImxvZy9kdW1waXQjMi5kdW1wIj4KIEhUVFAvMS4xIDIwMCBPSw0KIEZ1bm55LWhlYWQ6IHllc3llcw0KIENvbnRlbnQtTGVuZ3RoOiAxNg0KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDg3MCBiL3Rlc3RzL2RhdGEvdGVzdDg3MAppbmRleCA4ODViOGMxLi5mNjMzM2Y3IDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3Q4NzAKKysrIGIvdGVzdHMvZGF0YS90ZXN0ODcwCkBAIC0zNiw3ICszNiw3IEBACiBwb3AzCiA8L3NlcnZlcj4KICA8bmFtZT4KLVBPUDMgT0F1dGggMi4wIGF1dGhlbnRpY2F0aW9uCitQT1AzIE9BdXRoIDIuMCAoWE9BVVRIMikgYXV0aGVudGljYXRpb24KICA8L25hbWU+CiAgPGNvbW1hbmQ+CiBwb3AzOi8vJUhPU1RJUDolUE9QM1BPUlQvODcwIC11IHVzZXIgLS1vYXV0aDItYmVhcmVyIG1GXzkuQjVmLTQuMUpxTQpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0ODc0IGIvdGVzdHMvZGF0YS90ZXN0ODc0CmluZGV4IGRlMjIxZmEuLmQxMDMwZGEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDg3NAorKysgYi90ZXN0cy9kYXRhL3Rlc3Q4NzQKQEAgLTM2LDcgKzM2LDcgQEAKIHBvcDMKIDwvc2VydmVyPgogIDxuYW1lPgotUE9QMyBPQXV0aCAyLjAgYXV0aGVudGljYXRpb24gd2l0aCBpbml0aWFsIHJlc3BvbnNlCitQT1AzIE9BdXRoIDIuMCAoWE9BVVRIMikgYXV0aGVudGljYXRpb24gd2l0aCBpbml0aWFsIHJlc3BvbnNlCiAgPC9uYW1lPgogIDxjb21tYW5kPgogcG9wMzovLyVIT1NUSVA6JVBPUDNQT1JULzg3NCAtdSB1c2VyIC0tb2F1dGgyLWJlYXJlciBtRl85LkI1Zi00LjFKcU0gLS1zYXNsLWlyCmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3Q4ODcgYi90ZXN0cy9kYXRhL3Rlc3Q4ODcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjM5ZGMyMQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDg4NwpAQCAtMCwwICsxLDYzIEBACis8dGVzdGNhc2U+Cis8aW5mbz4KKzxrZXl3b3Jkcz4KK1BPUDMKK1NBU0wKK1NBU0wgQVVUSCBPQVVUSDIKK1JGQzE3MzQKK1JGQzUwMzQKK1JGQzY3NDkKK1JGQzc2MjgKKzwva2V5d29yZHM+Cis8L2luZm8+CisKKyMKKyMgU2VydmVyLXNpZGUKKzxyZXBseT4KKzxzZXJ2ZXJjbWQ+CitBVVRIIE9BVVRIQkVBUkVSCitSRVBMWSBBVVRIICsKK1JFUExZIGRYTmxjajExYzJWeUFXaHZjM1E5TVRJM0xqQXVNQzR4QVhCdmNuUTlPVEF3TVFGaGRYUm9QVUpsWVhKbGNpQnRSbDg1TGtJMVppMDBMakZLY1UwQkFRPT0gK09LIExvZ2luIHN1Y2Nlc3NmdWwKKzwvc2VydmVyY21kPgorPGRhdGE+CitGcm9tOiBtZUBzb21ld2hlcmUNCitUbzogZmFrZUBub3doZXJlDQorDQorYm9keQ0KKw0KKy0tDQorICB5b3VycyBzaW5jZXJlbHkNCis8L2RhdGE+Cis8L3JlcGx5PgorCisjCisjIENsaWVudC1zaWRlCis8Y2xpZW50PgorPHNlcnZlcj4KK3BvcDMKKzwvc2VydmVyPgorIDxuYW1lPgorUE9QMyBPQXV0aCAyLjAgKE9BVVRIQkVBUkVSKSBhdXRoZW50aWNhdGlvbgorIDwvbmFtZT4KKyA8Y29tbWFuZD4KK3BvcDM6Ly8lSE9TVElQOiVQT1AzUE9SVC84ODcgLXUgdXNlciAtLW9hdXRoMi1iZWFyZXIgbUZfOS5CNWYtNC4xSnFNCis8L2NvbW1hbmQ+CisjIFRoZSBwcm90b2NvbCBzZWN0aW9uIGRvZXNuJ3Qgc3VwcG9ydCB3YXlzIG9mIHNwZWNpZmluZyB0aGUgcmF3IGRhdGEgaW4gdGhlCisjIGJhc2U2NCBlbmNvZGVkIG1lc3NhZ2Ugc28gd2UgbXVzdCBhc3NlcnQgdGhpcworPHByZWNoZWNrPgorcGVybCAtZSAicHJpbnQgJ1Rlc3QgcmVxdWlyZXMgZGVmYXVsdCB0ZXN0IHNlcnZlciBob3N0IGFuZCBwb3J0JyBpZiAoICclSE9TVElQJyBuZSAnMTI3LjAuMC4xJyB8fCAnJVBPUDNQT1JUJyBuZSAnOTAwMScgKTsiCis8L3ByZWNoZWNrPgorPC9jbGllbnQ+CisKKyMKKyMgVmVyaWZ5IGRhdGEgYWZ0ZXIgdGhlIHRlc3QgaGFzIGJlZW4gInNob3QiCis8dmVyaWZ5PgorPHByb3RvY29sPgorQ0FQQQ0KK0FVVEggT0FVVEhCRUFSRVINCitkWE5sY2oxMWMyVnlBV2h2YzNROU1USTNMakF1TUM0eEFYQnZjblE5T1RBd01RRmhkWFJvUFVKbFlYSmxjaUJ0Umw4NUxrSTFaaTAwTGpGS2NVMEJBUT09DQorUkVUUiA4ODcNCitRVUlUDQorPC9wcm90b2NvbD4KKzwvdmVyaWZ5PgorPC90ZXN0Y2FzZT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDg4OCBiL3Rlc3RzL2RhdGEvdGVzdDg4OApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTM1OWRmCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvZGF0YS90ZXN0ODg4CkBAIC0wLDAgKzEsNjIgQEAKKzx0ZXN0Y2FzZT4KKzxpbmZvPgorPGtleXdvcmRzPgorUE9QMworU0FTTAorU0FTTCBBVVRIIE9BVVRIMgorU0FTTC1JUgorUkZDMTczNAorUkZDNTAzNAorUkZDNjc0OQorUkZDNzYyOAorPC9rZXl3b3Jkcz4KKzwvaW5mbz4KKworIworIyBTZXJ2ZXItc2lkZQorPHJlcGx5PgorPHNlcnZlcmNtZD4KK0FVVEggT0FVVEhCRUFSRVIKK1JFUExZIEFVVEggK09LIExvZ2luIHN1Y2Nlc3NmdWwKKzwvc2VydmVyY21kPgorPGRhdGE+CitGcm9tOiBtZUBzb21ld2hlcmUNCitUbzogZmFrZUBub3doZXJlDQorDQorYm9keQ0KKw0KKy0tDQorICB5b3VycyBzaW5jZXJlbHkNCis8L2RhdGE+Cis8L3JlcGx5PgorCisjCisjIENsaWVudC1zaWRlCis8Y2xpZW50PgorPHNlcnZlcj4KK3BvcDMKKzwvc2VydmVyPgorIDxuYW1lPgorUE9QMyBPQXV0aCAyLjAgKE9BVVRIQkVBUkVSKSBhdXRoZW50aWNhdGlvbiB3aXRoIGluaXRpYWwgcmVzcG9uc2UKKyA8L25hbWU+CisgPGNvbW1hbmQ+Citwb3AzOi8vJUhPU1RJUDolUE9QM1BPUlQvODg4IC11IHVzZXIgLS1vYXV0aDItYmVhcmVyIG1GXzkuQjVmLTQuMUpxTSAtLXNhc2wtaXIKKzwvY29tbWFuZD4KKyMgVGhlIHByb3RvY29sIHNlY3Rpb24gZG9lc24ndCBzdXBwb3J0IHdheXMgb2Ygc3BlY2lmaW5nIHRoZSByYXcgZGF0YSBpbiB0aGUKKyMgYmFzZTY0IGVuY29kZWQgbWVzc2FnZSBzbyB3ZSBtdXN0IGFzc2VydCB0aGlzCis8cHJlY2hlY2s+CitwZXJsIC1lICJwcmludCAnVGVzdCByZXF1aXJlcyBkZWZhdWx0IHRlc3Qgc2VydmVyIGhvc3QgYW5kIHBvcnQnIGlmICggJyVIT1NUSVAnIG5lICcxMjcuMC4wLjEnIHx8ICclUE9QM1BPUlQnIG5lICc5MDAxJyApOyIKKzwvcHJlY2hlY2s+Cis8L2NsaWVudD4KKworIworIyBWZXJpZnkgZGF0YSBhZnRlciB0aGUgdGVzdCBoYXMgYmVlbiAic2hvdCIKKzx2ZXJpZnk+Cis8cHJvdG9jb2w+CitDQVBBDQorQVVUSCBPQVVUSEJFQVJFUiBkWE5sY2oxMWMyVnlBV2h2YzNROU1USTNMakF1TUM0eEFYQnZjblE5T1RBd01RRmhkWFJvUFVKbFlYSmxjaUJ0Umw4NUxrSTFaaTAwTGpGS2NVMEJBUT09DQorUkVUUiA4ODgNCitRVUlUDQorPC9wcm90b2NvbD4KKzwvdmVyaWZ5PgorPC90ZXN0Y2FzZT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDg4OSBiL3Rlc3RzL2RhdGEvdGVzdDg4OQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZmJkMGNhCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvZGF0YS90ZXN0ODg5CkBAIC0wLDAgKzEsNjEgQEAKKzx0ZXN0Y2FzZT4KKzxpbmZvPgorPGtleXdvcmRzPgorUE9QMworU0FTTAorU0FTTCBBVVRIIE9BVVRIMgorUkZDMTczNAorUkZDNTAzNAorUkZDNjc0OQorUkZDNzYyOAorPC9rZXl3b3Jkcz4KKzwvaW5mbz4KKworIworIyBTZXJ2ZXItc2lkZQorPHJlcGx5PgorPHNlcnZlcmNtZD4KK0FVVEggT0FVVEhCRUFSRVIKK1JFUExZIEFVVEggKworUkVQTFkgZFhObGNqMTFjMlZ5QVdodmMzUTlNVEkzTGpBdU1DNHhBWEJ2Y25ROU9UQXdNUUZoZFhSb1BVSmxZWEpsY2lCdFJsODVMa0kxWmkwMExqRktjVTBCQVE9PSArIGV5SnpkR0YwZFhNaU9pSnBiblpoYkdsa1gzUnZhMlZ1SWl3aWMyTnZjR1VpT2lKbGVHRnRjR3hsWDNOamIzQmxJaXdpYjNCbGJtbGtMV052Ym1acFozVnlZWFJwYjI0aU9pSm9kSFJ3Y3pvdkwyVjRZVzF3YkdVdVkyOXRMeTUzWld4c0xXdHViM2R1TDI5d1pXNXBaQzFqYjI1bWFXZDFjbUYwYVc5dUluMAorUkVQTFkgQVE9PSAtRVJSIEF1dGhlbnRpY2F0aW9uIGZhaWxlZAorPC9zZXJ2ZXJjbWQ+Cis8L3JlcGx5PgorCisjCisjIENsaWVudC1zaWRlCis8Y2xpZW50PgorPHNlcnZlcj4KK3BvcDMKKzwvc2VydmVyPgorIDxuYW1lPgorUE9QMyBPQXV0aCAyLjAgKE9BVVRIQkVBUkVSKSBmYWlsdXJlIGFzIGNvbnRpbnVhdGlvbgorIDwvbmFtZT4KKyA8Y29tbWFuZD4KK3BvcDM6Ly8lSE9TVElQOiVQT1AzUE9SVC84ODkgLXUgdXNlciAtLW9hdXRoMi1iZWFyZXIgbUZfOS5CNWYtNC4xSnFNCis8L2NvbW1hbmQ+CisjIFRoZSBwcm90b2NvbCBzZWN0aW9uIGRvZXNuJ3Qgc3VwcG9ydCB3YXlzIG9mIHNwZWNpZmluZyB0aGUgcmF3IGRhdGEgaW4gdGhlCisjIGJhc2U2NCBlbmNvZGVkIG1lc3NhZ2Ugc28gd2UgbXVzdCBhc3NlcnQgdGhpcworPHByZWNoZWNrPgorcGVybCAtZSAicHJpbnQgJ1Rlc3QgcmVxdWlyZXMgZGVmYXVsdCB0ZXN0IHNlcnZlciBob3N0IGFuZCBwb3J0JyBpZiAoICclSE9TVElQJyBuZSAnMTI3LjAuMC4xJyB8fCAnJVBPUDNQT1JUJyBuZSAnOTAwMScgKTsiCis8L3ByZWNoZWNrPgorPC9jbGllbnQ+CisKKyMKKyMgVmVyaWZ5IGRhdGEgYWZ0ZXIgdGhlIHRlc3QgaGFzIGJlZW4gInNob3QiCis8dmVyaWZ5PgorIyA2NyAtIENVUkxFX0xPR0lOX0RFTklFRAorPGVycm9yY29kZT4KKzY3Cis8L2Vycm9yY29kZT4KKyMKKyMgVGhlIG11bHRpIGludGVyZmFjZSBjb25zaWRlcnMgYSBicm9rZW4gIkNPTk5FQ1QiIGFzIGEgcHJlbWF0dXJlbHkgYnJva2VuCisjIHRyYW5zZmVyIGFuZCBzdWNoIGEgY29ubmVjdGlvbiB3aWxsIG5vdCBnZXQgYSAiUVVJVCIKKzxwcm90b2NvbD4KK0NBUEENCitBVVRIIE9BVVRIQkVBUkVSDQorZFhObGNqMTFjMlZ5QVdodmMzUTlNVEkzTGpBdU1DNHhBWEJ2Y25ROU9UQXdNUUZoZFhSb1BVSmxZWEpsY2lCdFJsODVMa0kxWmkwMExqRktjVTBCQVE9PQ0KK0FRPT0NCis8L3Byb3RvY29sPgorPC92ZXJpZnk+Cis8L3Rlc3RjYXNlPgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0ODkwIGIvdGVzdHMvZGF0YS90ZXN0ODkwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzOTJkZmEKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9kYXRhL3Rlc3Q4OTAKQEAgLTAsMCArMSw2MCBAQAorPHRlc3RjYXNlPgorPGluZm8+Cis8a2V5d29yZHM+CitQT1AzCitTQVNMCitTQVNMIEFVVEggT0FVVEgyCitTQVNMLUlSCitSRkMxNzM0CitSRkM1MDM0CitSRkM2NzQ5CitSRkM3NjI4Cis8L2tleXdvcmRzPgorPC9pbmZvPgorCisjCisjIFNlcnZlci1zaWRlCis8cmVwbHk+Cis8c2VydmVyY21kPgorQVVUSCBPQVVUSEJFQVJFUgorUkVQTFkgQVVUSCArIGV5SnpkR0YwZFhNaU9pSnBiblpoYkdsa1gzUnZhMlZ1SWl3aWMyTnZjR1VpT2lKbGVHRnRjR3hsWDNOamIzQmxJaXdpYjNCbGJtbGtMV052Ym1acFozVnlZWFJwYjI0aU9pSm9kSFJ3Y3pvdkwyVjRZVzF3YkdVdVkyOXRMeTUzWld4c0xXdHViM2R1TDI5d1pXNXBaQzFqYjI1bWFXZDFjbUYwYVc5dUluMAorUkVQTFkgQVE9PSAtRVJSIEF1dGhlbnRpY2F0aW9uIGZhaWxlZAorPC9zZXJ2ZXJjbWQ+Cis8L3JlcGx5PgorCisjCisjIENsaWVudC1zaWRlCis8Y2xpZW50PgorPHNlcnZlcj4KK3BvcDMKKzwvc2VydmVyPgorIDxuYW1lPgorUE9QMyBPQXV0aCAyLjAgKE9BVVRIQkVBUkVSKSBmYWlsdXJlIGFzIGNvbnRpbnVhdGlvbiB3aXRoIGluaXRpYWwgcmVzcG9uc2UKKyA8L25hbWU+CisgPGNvbW1hbmQ+Citwb3AzOi8vJUhPU1RJUDolUE9QM1BPUlQvODkwIC11IHVzZXIgLS1vYXV0aDItYmVhcmVyIG1GXzkuQjVmLTQuMUpxTSAtLXNhc2wtaXIKKzwvY29tbWFuZD4KKyMgVGhlIHByb3RvY29sIHNlY3Rpb24gZG9lc24ndCBzdXBwb3J0IHdheXMgb2Ygc3BlY2lmaW5nIHRoZSByYXcgZGF0YSBpbiB0aGUKKyMgYmFzZTY0IGVuY29kZWQgbWVzc2FnZSBzbyB3ZSBtdXN0IGFzc2VydCB0aGlzCis8cHJlY2hlY2s+CitwZXJsIC1lICJwcmludCAnVGVzdCByZXF1aXJlcyBkZWZhdWx0IHRlc3Qgc2VydmVyIGhvc3QgYW5kIHBvcnQnIGlmICggJyVIT1NUSVAnIG5lICcxMjcuMC4wLjEnIHx8ICclUE9QM1BPUlQnIG5lICc5MDAxJyApOyIKKzwvcHJlY2hlY2s+Cis8L2NsaWVudD4KKworIworIyBWZXJpZnkgZGF0YSBhZnRlciB0aGUgdGVzdCBoYXMgYmVlbiAic2hvdCIKKzx2ZXJpZnk+CisjIDY3IC0gQ1VSTEVfTE9HSU5fREVOSUVECis8ZXJyb3Jjb2RlPgorNjcKKzwvZXJyb3Jjb2RlPgorIworIyBUaGUgbXVsdGkgaW50ZXJmYWNlIGNvbnNpZGVycyBhIGJyb2tlbiAiQ09OTkVDVCIgYXMgYSBwcmVtYXR1cmVseSBicm9rZW4KKyMgdHJhbnNmZXIgYW5kIHN1Y2ggYSBjb25uZWN0aW9uIHdpbGwgbm90IGdldCBhICJRVUlUIgorPHByb3RvY29sPgorQ0FQQQ0KK0FVVEggT0FVVEhCRUFSRVIgZFhObGNqMTFjMlZ5QVdodmMzUTlNVEkzTGpBdU1DNHhBWEJ2Y25ROU9UQXdNUUZoZFhSb1BVSmxZWEpsY2lCdFJsODVMa0kxWmkwMExqRktjVTBCQVE9PQ0KK0FRPT0NCis8L3Byb3RvY29sPgorPC92ZXJpZnk+Cis8L3Rlc3RjYXNlPgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0OTA4IGIvdGVzdHMvZGF0YS90ZXN0OTA4CmluZGV4IGM0NzFjYjcuLmJmMGI0NWEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RhdGEvdGVzdDkwOAorKysgYi90ZXN0cy9kYXRhL3Rlc3Q5MDgKQEAgLTI2LDcgKzI2LDcgQEAKIHNtdHAKIDwvc2VydmVyPgogIDxuYW1lPgotU01UUCBPQXV0aCAyLjAgYXV0aGVudGljYXRpb24KK1NNVFAgT0F1dGggMi4wIChYT0FVVEgyKSBhdXRoZW50aWNhdGlvbgogIDwvbmFtZT4KIDxzdGRpbj4KIG1haWwgYm9keQ0KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDkyMiBiL3Rlc3RzL2RhdGEvdGVzdDkyMgppbmRleCBlOWUwZDVmLi5hYWNkNjg0IDEwMDY0NAotLS0gYS90ZXN0cy9kYXRhL3Rlc3Q5MjIKKysrIGIvdGVzdHMvZGF0YS90ZXN0OTIyCkBAIC0yNiw3ICsyNiw3IEBACiBzbXRwCiA8L3NlcnZlcj4KICA8bmFtZT4KLVNNVFAgT0F1dGggMi4wIGF1dGhlbnRpY2F0aW9uIHdpdGggaW5pdGlhbCByZXNwb25zZQorU01UUCBPQXV0aCAyLjAgKFhPQVVUSDIpIGF1dGhlbnRpY2F0aW9uIHdpdGggaW5pdGlhbCByZXNwb25zZQogIDwvbmFtZT4KIDxzdGRpbj4KIG1haWwgYm9keQ0KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDkzIGIvdGVzdHMvZGF0YS90ZXN0OTMKaW5kZXggMTM4NzI0OC4uOTQ4ZDI5YyAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0OTMKKysrIGIvdGVzdHMvZGF0YS90ZXN0OTMKQEAgLTQzLDcgKzQzLDYgQEAKIEdFVCBodHRwOi8vJUhPU1RJUDolSFRUUFBPUlQvOTMgSFRUUC8xLjENCiBIb3N0OiAlSE9TVElQOiVIVFRQUE9SVA0KIEFjY2VwdDogKi8qDQotUHJveHktQ29ubmVjdGlvbjogS2VlcC1BbGl2ZQ0KIA0KIDwvcHJvdG9jb2w+CiA8L3ZlcmlmeT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDk0IGIvdGVzdHMvZGF0YS90ZXN0OTQKaW5kZXggMmYzZjQ4Mi4uOTRjODk0YyAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0OTQKKysrIGIvdGVzdHMvZGF0YS90ZXN0OTQKQEAgLTUxLDcgKzUxLDYgQEAKIENPTk5FQ1QgdGVzdC5hbnl0aGluZy5yZWFsbHkuY29tOjk0IEhUVFAvMS4wDQogVXNlci1BZ2VudDogY3VybC83LjExLjAtQ1ZTIChpNjg2LXBjLWxpbnV4LWdudSkgbGliY3VybC83LjExLjAtQ1ZTIE9wZW5TU0wvMC45LjZiIGlwdjYgemxpYi8xLjEuNA0KIEhvc3Q6IHRlc3QuYW55dGhpbmcucmVhbGx5LmNvbTo5NA0KLVByb3h5LUNvbm5lY3Rpb246IEtlZXAtQWxpdmUNCiANCiA8L3Byb3RvY29sPgogPC92ZXJpZnk+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3Q5NDYgYi90ZXN0cy9kYXRhL3Rlc3Q5NDYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDM0YmQ5MQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDk0NgpAQCAtMCwwICsxLDYyIEBACis8dGVzdGNhc2U+Cis8aW5mbz4KKzxrZXl3b3Jkcz4KK1NNVFAKK1NBU0wKK1NBU0wgQVVUSCBPQVVUSDIKK1JGQzQ5NTQKK1JGQzY3NDkKK1JGQzc2MjgKKzwva2V5d29yZHM+Cis8L2luZm8+CisKKyMKKyMgU2VydmVyLXNpZGUKKzxyZXBseT4KKzxzZXJ2ZXJjbWQ+CitBVVRIIE9BVVRIQkVBUkVSCitSRVBMWSBBVVRIIDMzNCBPQVVUSEJFQVJFUiBzdXBwb3J0ZWQKK1JFUExZIGRYTmxjajExYzJWeUFXaHZjM1E5TVRJM0xqQXVNQzR4QVhCdmNuUTlPVEF3TlFGaGRYUm9QVUpsWVhKbGNpQnRSbDg1TGtJMVppMDBMakZLY1UwQkFRPT0gMjM1IEF1dGhlbnRpY2F0ZWQKKzwvc2VydmVyY21kPgorPC9yZXBseT4KKworIworIyBDbGllbnQtc2lkZQorPGNsaWVudD4KKzxzZXJ2ZXI+CitzbXRwCis8L3NlcnZlcj4KKyA8bmFtZT4KK1NNVFAgT0F1dGggMi4wIChPQVVUSEJFQVJFUikgYXV0aGVudGljYXRpb24KKyA8L25hbWU+Cis8c3RkaW4+CittYWlsIGJvZHkNCis8L3N0ZGluPgorIDxjb21tYW5kPgorc210cDovLyVIT1NUSVA6JVNNVFBQT1JULzk0NiAtLW1haWwtcmNwdCByZWNpcGllbnRAZXhhbXBsZS5jb20gLS1tYWlsLWZyb20gc2VuZGVyQGV4YW1wbGUuY29tIC11IHVzZXIgLS1vYXV0aDItYmVhcmVyIG1GXzkuQjVmLTQuMUpxTSAtVCAtCis8L2NvbW1hbmQ+CisjIFRoZSBwcm90b2NvbCBzZWN0aW9uIGRvZXNuJ3Qgc3VwcG9ydCB3YXlzIG9mIHNwZWNpZmluZyB0aGUgcmF3IGRhdGEgaW4gdGhlCisjIGJhc2U2NCBlbmNvZGVkIG1lc3NhZ2Ugc28gd2UgbXVzdCBhc3NlcnQgdGhpcworPHByZWNoZWNrPgorcGVybCAtZSAicHJpbnQgJ1Rlc3QgcmVxdWlyZXMgZGVmYXVsdCB0ZXN0IHNlcnZlciBob3N0IGFuZCBwb3J0JyBpZiAoICclSE9TVElQJyBuZSAnMTI3LjAuMC4xJyB8fCAnJVNNVFBQT1JUJyBuZSAnOTAwNScgKTsiCis8L3ByZWNoZWNrPgorPC9jbGllbnQ+CisKKyMKKyMgVmVyaWZ5IGRhdGEgYWZ0ZXIgdGhlIHRlc3QgaGFzIGJlZW4gInNob3QiCis8dmVyaWZ5PgorPHByb3RvY29sPgorRUhMTyA5NDYNCitBVVRIIE9BVVRIQkVBUkVSDQorZFhObGNqMTFjMlZ5QVdodmMzUTlNVEkzTGpBdU1DNHhBWEJ2Y25ROU9UQXdOUUZoZFhSb1BVSmxZWEpsY2lCdFJsODVMa0kxWmkwMExqRktjVTBCQVE9PQ0KK01BSUwgRlJPTTo8c2VuZGVyQGV4YW1wbGUuY29tPg0KK1JDUFQgVE86PHJlY2lwaWVudEBleGFtcGxlLmNvbT4NCitEQVRBDQorUVVJVA0KKzwvcHJvdG9jb2w+Cis8dXBsb2FkPgorbWFpbCBib2R5DQorLg0KKzwvdXBsb2FkPgorPC92ZXJpZnk+Cis8L3Rlc3RjYXNlPgpkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0OTQ3IGIvdGVzdHMvZGF0YS90ZXN0OTQ3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzNjQ4YTQKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9kYXRhL3Rlc3Q5NDcKQEAgLTAsMCArMSw2MSBAQAorPHRlc3RjYXNlPgorPGluZm8+Cis8a2V5d29yZHM+CitTTVRQCitTQVNMCitTQVNMIEFVVEggT0FVVEgyCitTQVNMLUlSCitSRkM0OTU0CitSRkM2NzQ5CitSRkM3NjI4Cis8L2tleXdvcmRzPgorPC9pbmZvPgorCisjCisjIFNlcnZlci1zaWRlCis8cmVwbHk+Cis8c2VydmVyY21kPgorQVVUSCBPQVVUSEJFQVJFUgorUkVQTFkgQVVUSCAyMzUgQXV0aGVudGljYXRlZAorPC9zZXJ2ZXJjbWQ+Cis8L3JlcGx5PgorCisjCisjIENsaWVudC1zaWRlCis8Y2xpZW50PgorPHNlcnZlcj4KK3NtdHAKKzwvc2VydmVyPgorIDxuYW1lPgorU01UUCBPQXV0aCAyLjAgKE9BVVRIQkVBUkVSKSBhdXRoZW50aWNhdGlvbiB3aXRoIGluaXRpYWwgcmVzcG9uc2UKKyA8L25hbWU+Cis8c3RkaW4+CittYWlsIGJvZHkNCis8L3N0ZGluPgorIDxjb21tYW5kPgorc210cDovLyVIT1NUSVA6JVNNVFBQT1JULzk0NyAtLW1haWwtcmNwdCByZWNpcGllbnRAZXhhbXBsZS5jb20gLS1tYWlsLWZyb20gc2VuZGVyQGV4YW1wbGUuY29tIC11IHVzZXIgLS1vYXV0aDItYmVhcmVyIG1GXzkuQjVmLTQuMUpxTSAtLXNhc2wtaXIgLVQgLQorPC9jb21tYW5kPgorIyBUaGUgcHJvdG9jb2wgc2VjdGlvbiBkb2Vzbid0IHN1cHBvcnQgd2F5cyBvZiBzcGVjaWZpbmcgdGhlIHJhdyBkYXRhIGluIHRoZQorIyBiYXNlNjQgZW5jb2RlZCBtZXNzYWdlIHNvIHdlIG11c3QgYXNzZXJ0IHRoaXMKKzxwcmVjaGVjaz4KK3BlcmwgLWUgInByaW50ICdUZXN0IHJlcXVpcmVzIGRlZmF1bHQgdGVzdCBzZXJ2ZXIgaG9zdCBhbmQgcG9ydCcgaWYgKCAnJUhPU1RJUCcgbmUgJzEyNy4wLjAuMScgfHwgJyVTTVRQUE9SVCcgbmUgJzkwMDUnICk7IgorPC9wcmVjaGVjaz4KKzwvY2xpZW50PgorCisjCisjIFZlcmlmeSBkYXRhIGFmdGVyIHRoZSB0ZXN0IGhhcyBiZWVuICJzaG90IgorPHZlcmlmeT4KKzxwcm90b2NvbD4KK0VITE8gOTQ3DQorQVVUSCBPQVVUSEJFQVJFUiBkWE5sY2oxMWMyVnlBV2h2YzNROU1USTNMakF1TUM0eEFYQnZjblE5T1RBd05RRmhkWFJvUFVKbFlYSmxjaUJ0Umw4NUxrSTFaaTAwTGpGS2NVMEJBUT09DQorTUFJTCBGUk9NOjxzZW5kZXJAZXhhbXBsZS5jb20+DQorUkNQVCBUTzo8cmVjaXBpZW50QGV4YW1wbGUuY29tPg0KK0RBVEENCitRVUlUDQorPC9wcm90b2NvbD4KKzx1cGxvYWQ+CittYWlsIGJvZHkNCisuDQorPC91cGxvYWQ+Cis8L3ZlcmlmeT4KKzwvdGVzdGNhc2U+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3Q5NDggYi90ZXN0cy9kYXRhL3Rlc3Q5NDgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTFiYjQxYQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDk0OApAQCAtMCwwICsxLDYzIEBACis8dGVzdGNhc2U+Cis8aW5mbz4KKzxrZXl3b3Jkcz4KK1NNVFAKK1NBU0wKK1NBU0wgQVVUSCBPQVVUSDIKK1JGQzQ5NTQKK1JGQzY3NDkKK1JGQzc2MjgKKzwva2V5d29yZHM+Cis8L2luZm8+CisKKyMKKyMgU2VydmVyLXNpZGUKKzxyZXBseT4KKzxzZXJ2ZXJjbWQ+CitBVVRIIE9BVVRIQkVBUkVSCitSRVBMWSBBVVRIIDMzNCBPQVVUSEJFQVJFUiBzdXBwb3J0ZWQKK1JFUExZIGRYTmxjajExYzJWeUFXaHZjM1E5TVRJM0xqQXVNQzR4QVhCdmNuUTlPVEF3TlFGaGRYUm9QVUpsWVhKbGNpQnRSbDg1TGtJMVppMDBMakZLY1UwQkFRPT0gMzM0IGV5SnpkR0YwZFhNaU9pSnBiblpoYkdsa1gzUnZhMlZ1SWl3aWMyTnZjR1VpT2lKbGVHRnRjR3hsWDNOamIzQmxJaXdpYjNCbGJtbGtMV052Ym1acFozVnlZWFJwYjI0aU9pSm9kSFJ3Y3pvdkwyVjRZVzF3YkdVdVkyOXRMeTUzWld4c0xXdHViM2R1TDI5d1pXNXBaQzFqYjI1bWFXZDFjbUYwYVc5dUluMAorUkVQTFkgQVE9PSA1MzUgVXNlcm5hbWUgYW5kIFBhc3N3b3JkIG5vdCBhY2NlcHRlZC4gTGVhcm4gbW9yZSBhdFxyXG41MzUgaHR0cDovL3N1cHBvcnQuZXhhbXBsZS5jb20vbWFpbC9vYXV0aAorPC9zZXJ2ZXJjbWQ+Cis8L3JlcGx5PgorCisjdmkKKyMgQ2xpZW50LXNpZGUKKzxjbGllbnQ+Cis8c2VydmVyPgorc210cAorPC9zZXJ2ZXI+CisgPG5hbWU+CitTTVRQIE9BdXRoIDIuMCAoT0FVVEhCRUFSRVIpIGZhaWx1cmUgYXMgY29udGludWF0aW9uCisgPC9uYW1lPgorPHN0ZGluPgorbWFpbCBib2R5DQorPC9zdGRpbj4KKyA8Y29tbWFuZD4KK3NtdHA6Ly8lSE9TVElQOiVTTVRQUE9SVC85NDggLS1tYWlsLXJjcHQgcmVjaXBpZW50QGV4YW1wbGUuY29tIC0tbWFpbC1mcm9tIHNlbmRlckBleGFtcGxlLmNvbSAtdSB1c2VyIC0tb2F1dGgyLWJlYXJlciBtRl85LkI1Zi00LjFKcU0gLVQgLQorPC9jb21tYW5kPgorIyBUaGUgcHJvdG9jb2wgc2VjdGlvbiBkb2Vzbid0IHN1cHBvcnQgd2F5cyBvZiBzcGVjaWZpbmcgdGhlIHJhdyBkYXRhIGluIHRoZQorIyBiYXNlNjQgZW5jb2RlZCBtZXNzYWdlIHNvIHdlIG11c3QgYXNzZXJ0IHRoaXMKKzxwcmVjaGVjaz4KK3BlcmwgLWUgInByaW50ICdUZXN0IHJlcXVpcmVzIGRlZmF1bHQgdGVzdCBzZXJ2ZXIgaG9zdCBhbmQgcG9ydCcgaWYgKCAnJUhPU1RJUCcgbmUgJzEyNy4wLjAuMScgfHwgJyVTTVRQUE9SVCcgbmUgJzkwMDUnICk7IgorPC9wcmVjaGVjaz4KKzwvY2xpZW50PgorCisjCisjIFZlcmlmeSBkYXRhIGFmdGVyIHRoZSB0ZXN0IGhhcyBiZWVuICJzaG90IgorPHZlcmlmeT4KKyMgNjcgLSBDVVJMRV9MT0dJTl9ERU5JRUQKKzxlcnJvcmNvZGU+Cis2NworPC9lcnJvcmNvZGU+CisjCisjIFRoZSBtdWx0aSBpbnRlcmZhY2UgY29uc2lkZXJzIGEgYnJva2VuICJDT05ORUNUIiBhcyBhIHByZW1hdHVyZWx5IGJyb2tlbgorIyB0cmFuc2ZlciBhbmQgc3VjaCBhIGNvbm5lY3Rpb24gd2lsbCBub3QgZ2V0IGEgIlFVSVQiCis8cHJvdG9jb2w+CitFSExPIDk0OA0KK0FVVEggT0FVVEhCRUFSRVINCitkWE5sY2oxMWMyVnlBV2h2YzNROU1USTNMakF1TUM0eEFYQnZjblE5T1RBd05RRmhkWFJvUFVKbFlYSmxjaUJ0Umw4NUxrSTFaaTAwTGpGS2NVMEJBUT09DQorQVE9PQ0KKzwvcHJvdG9jb2w+Cis8L3ZlcmlmeT4KKzwvdGVzdGNhc2U+CmRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3Q5NDkgYi90ZXN0cy9kYXRhL3Rlc3Q5NDkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjg0YzQyYgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL2RhdGEvdGVzdDk0OQpAQCAtMCwwICsxLDYyIEBACis8dGVzdGNhc2U+Cis8aW5mbz4KKzxrZXl3b3Jkcz4KK1NNVFAKK1NBU0wKK1NBU0wgQVVUSCBPQVVUSDIKK1NBU0wtSVIKK1JGQzQ5NTQKK1JGQzY3NDkKK1JGQzc2MjgKKzwva2V5d29yZHM+Cis8L2luZm8+CisKKyMKKyMgU2VydmVyLXNpZGUKKzxyZXBseT4KKzxzZXJ2ZXJjbWQ+CitBVVRIIE9BVVRIQkVBUkVSCitSRVBMWSBBVVRIIDMzNCBleUp6ZEdGMGRYTWlPaUpwYm5aaGJHbGtYM1J2YTJWdUlpd2ljMk52Y0dVaU9pSmxlR0Z0Y0d4bFgzTmpiM0JsSWl3aWIzQmxibWxrTFdOdmJtWnBaM1Z5WVhScGIyNGlPaUpvZEhSd2N6b3ZMMlY0WVcxd2JHVXVZMjl0THk1M1pXeHNMV3R1YjNkdUwyOXdaVzVwWkMxamIyNW1hV2QxY21GMGFXOXVJbjAKK1JFUExZIEFRPT0gNTM1IFVzZXJuYW1lIGFuZCBQYXNzd29yZCBub3QgYWNjZXB0ZWQuIExlYXJuIG1vcmUgYXRcclxuNTM1IGh0dHA6Ly9zdXBwb3J0LmV4YW1wbGUuY29tL21haWwvb2F1dGgKKzwvc2VydmVyY21kPgorPC9yZXBseT4KKworIworIyBDbGllbnQtc2lkZQorPGNsaWVudD4KKzxzZXJ2ZXI+CitzbXRwCis8L3NlcnZlcj4KKyA8bmFtZT4KK1NNVFAgT0F1dGggMi4wIChPQVVUSEJFQVJFUikgZmFpbHVyZSBhcyBjb250aW51YXRpb24gd2l0aCBpbml0aWFsIHJlc3BvbnNlCisgPC9uYW1lPgorPHN0ZGluPgorbWFpbCBib2R5DQorPC9zdGRpbj4KKyA8Y29tbWFuZD4KK3NtdHA6Ly8lSE9TVElQOiVTTVRQUE9SVC85NDkgLS1tYWlsLXJjcHQgcmVjaXBpZW50QGV4YW1wbGUuY29tIC0tbWFpbC1mcm9tIHNlbmRlckBleGFtcGxlLmNvbSAtdSB1c2VyIC0tb2F1dGgyLWJlYXJlciBtRl85LkI1Zi00LjFKcU0gLS1zYXNsLWlyIC1UIC0KKzwvY29tbWFuZD4KKyMgVGhlIHByb3RvY29sIHNlY3Rpb24gZG9lc24ndCBzdXBwb3J0IHdheXMgb2Ygc3BlY2lmaW5nIHRoZSByYXcgZGF0YSBpbiB0aGUKKyMgYmFzZTY0IGVuY29kZWQgbWVzc2FnZSBzbyB3ZSBtdXN0IGFzc2VydCB0aGlzCis8cHJlY2hlY2s+CitwZXJsIC1lICJwcmludCAnVGVzdCByZXF1aXJlcyBkZWZhdWx0IHRlc3Qgc2VydmVyIGhvc3QgYW5kIHBvcnQnIGlmICggJyVIT1NUSVAnIG5lICcxMjcuMC4wLjEnIHx8ICclU01UUFBPUlQnIG5lICc5MDA1JyApOyIKKzwvcHJlY2hlY2s+Cis8L2NsaWVudD4KKworIworIyBWZXJpZnkgZGF0YSBhZnRlciB0aGUgdGVzdCBoYXMgYmVlbiAic2hvdCIKKzx2ZXJpZnk+CisjIDY3IC0gQ1VSTEVfTE9HSU5fREVOSUVECis8ZXJyb3Jjb2RlPgorNjcKKzwvZXJyb3Jjb2RlPgorIworIyBUaGUgbXVsdGkgaW50ZXJmYWNlIGNvbnNpZGVycyBhIGJyb2tlbiAiQ09OTkVDVCIgYXMgYSBwcmVtYXR1cmVseSBicm9rZW4KKyMgdHJhbnNmZXIgYW5kIHN1Y2ggYSBjb25uZWN0aW9uIHdpbGwgbm90IGdldCBhICJRVUlUIgorPHByb3RvY29sPgorRUhMTyA5NDkNCitBVVRIIE9BVVRIQkVBUkVSIGRYTmxjajExYzJWeUFXaHZjM1E5TVRJM0xqQXVNQzR4QVhCdmNuUTlPVEF3TlFGaGRYUm9QVUpsWVhKbGNpQnRSbDg1TGtJMVppMDBMakZLY1UwQkFRPT0NCitBUT09DQorPC9wcm90b2NvbD4KKzwvdmVyaWZ5PgorPC90ZXN0Y2FzZT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvdGVzdDk1IGIvdGVzdHMvZGF0YS90ZXN0OTUKaW5kZXggMWNkODhhYy4uMmIzZTJjMiAxMDA2NDQKLS0tIGEvdGVzdHMvZGF0YS90ZXN0OTUKKysrIGIvdGVzdHMvZGF0YS90ZXN0OTUKQEAgLTY0LDcgKzY0LDYgQEAKIENPTk5FQ1QgdGVzdC45NTolSFRUUFBPUlQgSFRUUC8xLjENCiBVc2VyLUFnZW50OiBjdXJsLzcuMTAuNy1wcmUyIChpNjg2LXBjLWxpbnV4LWdudSkgbGliY3VybC83LjEwLjctcHJlMiBPcGVuU1NMLzAuOS43YSB6bGliLzEuMS4zDQogSG9zdDogdGVzdC45NTolSFRUUFBPUlQNCi1Qcm94eS1Db25uZWN0aW9uOiBLZWVwLUFsaXZlDQogDQogPC9wcm94eT4KIDxwcm90b2NvbCBub25ld2xpbmU9InllcyI+CmRpZmYgLS1naXQgYS90ZXN0cy9kaXJlY3Rvcmllcy5wbSBiL3Rlc3RzL2RpcmVjdG9yaWVzLnBtCmluZGV4IDZjYmI5NjMuLmUzMzI3YzEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2RpcmVjdG9yaWVzLnBtCisrKyBiL3Rlc3RzL2RpcmVjdG9yaWVzLnBtCkBAIC05LDcgKzksNyBAQAogIwogIyBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogIyB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0jIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisjIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogIwogIyBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICMgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS90ZXN0cy9leHRlcm4tc2Nhbi5wbCBiL3Rlc3RzL2V4dGVybi1zY2FuLnBsCmluZGV4IDQ5ZDBjODYuLjdhNWMyOTEgMTAwNzU1Ci0tLSBhL3Rlc3RzL2V4dGVybi1zY2FuLnBsCisrKyBiL3Rlc3RzL2V4dGVybi1zY2FuLnBsCkBAIC0xMCw3ICsxMCw3IEBACiAjCiAjIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAjCiAjIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3Rlc3RzL2Z0cC5wbSBiL3Rlc3RzL2Z0cC5wbQppbmRleCAyZTEyNWUyLi5mNGE0YWNlIDEwMDY0NAotLS0gYS90ZXN0cy9mdHAucG0KKysrIGIvdGVzdHMvZnRwLnBtCkBAIC05LDcgKzksNyBAQAogIwogIyBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogIyB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0jIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisjIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogIwogIyBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICMgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS90ZXN0cy9mdHBzZXJ2ZXIucGwgYi90ZXN0cy9mdHBzZXJ2ZXIucGwKaW5kZXggNDgwN2ExZi4uMDFhN2RmOCAxMDA3NTUKLS0tIGEvdGVzdHMvZnRwc2VydmVyLnBsCisrKyBiL3Rlc3RzL2Z0cHNlcnZlci5wbApAQCAtMTAsNyArMTAsNyBAQAogIwogIyBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogIyB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0jIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisjIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogIwogIyBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICMgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS90ZXN0cy9nZXRwYXJ0LnBtIGIvdGVzdHMvZ2V0cGFydC5wbQppbmRleCAwNzI5Y2Y0Li41MTk4YjVmIDEwMDY0NAotLS0gYS90ZXN0cy9nZXRwYXJ0LnBtCisrKyBiL3Rlc3RzL2dldHBhcnQucG0KQEAgLTksNyArOSw3IEBACiAjCiAjIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAjCiAjIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3Rlc3RzL2h0dHBfcGlwZS5weSBiL3Rlc3RzL2h0dHBfcGlwZS5weQppbmRleCAxOWViZWM3Li5iYzMyMTczIDEwMDc1NQotLS0gYS90ZXN0cy9odHRwX3BpcGUucHkKKysrIGIvdGVzdHMvaHR0cF9waXBlLnB5CkBAIC02LDcgKzYsNyBAQAogIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAjIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogIwotIyAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyMgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogIwogIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAjIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCkBAIC0zNCwxMSArMzQsMTEgQEAKIEl0IGlzIGEgbW9kaWZpZWQgdmVyc2lvbiBpZiBHb29nbGUncyBIVFRQIHBpcGVsaW5pbmcgdGVzdCBzZXJ2ZXIuIE1vcmUKIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBoZXJlOgogCi1odHRwOi8vZGV2LmNocm9taXVtLm9yZy9kZXZlbG9wZXJzL2Rlc2lnbi1kb2N1bWVudHMvbmV0d29yay1zdGFjay9odHRwLXBpcGVsaW5pbmcKK2h0dHBzOi8vZGV2LmNocm9taXVtLm9yZy9kZXZlbG9wZXJzL2Rlc2lnbi1kb2N1bWVudHMvbmV0d29yay1zdGFjay9odHRwLXBpcGVsaW5pbmcKIAogU291cmNlIGNvZGUgY2FuIGJlIGZvdW5kIGhlcmU6CiAKLWh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9odHRwLXBpcGVsaW5pbmctdGVzdC8KK2h0dHBzOi8vY29kZS5nb29nbGUuY29tL2FyY2hpdmUvcC9odHRwLXBpcGVsaW5pbmctdGVzdC8KICcnJwogTUFYX1JFUVVFU1RfU0laRSA9IDEwMjQgICMgYnl0ZXMKIE1JTl9QT0xMX1RJTUUgPSAwLjAxICAjIHNlY29uZHMuIE1pbmltdW0gdGltZSB0byBwb2xsLCBpbiBvcmRlciB0byBwcmV2ZW50CmRpZmYgLS1naXQgYS90ZXN0cy9odHRwc2VydmVyLnBsIGIvdGVzdHMvaHR0cHNlcnZlci5wbAppbmRleCBiNjBkYWRjLi4wYmU1NjY3IDEwMDc1NQotLS0gYS90ZXN0cy9odHRwc2VydmVyLnBsCisrKyBiL3Rlc3RzL2h0dHBzZXJ2ZXIucGwKQEAgLTEwLDcgKzEwLDcgQEAKICMKICMgVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICMgeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICMKICMgWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAjIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvdGVzdHMva2V5d29yZHMucGwgYi90ZXN0cy9rZXl3b3Jkcy5wbAppbmRleCBjNjFkZjc3Li4zMzc0OGJkIDEwMDc1NQotLS0gYS90ZXN0cy9rZXl3b3Jkcy5wbAorKysgYi90ZXN0cy9rZXl3b3Jkcy5wbApAQCAtMTAsNyArMTAsNyBAQAogIwogIyBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogIyB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0jIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisjIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogIwogIyBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICMgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0Ly5naXRpZ25vcmUgYi90ZXN0cy9saWJ0ZXN0Ly5naXRpZ25vcmUKaW5kZXggYzMzYTZkMi4uYWI4YjhkYiAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC8uZ2l0aWdub3JlCisrKyBiL3Rlc3RzL2xpYnRlc3QvLmdpdGlnbm9yZQpAQCAtMSw3ICsxLDcgQEAKIGNoa2hvc3RuYW1lCi1saWI1WzAtOV1bMC05XQogbGliMTVbMC05XVswLTldCiBsaWIxOVswLTldWzAtOV0KIGxpYjIwMzMKK2xpYjVbMC05XVswLTldCiBsaWJhdXRocmV0cnkKIGxpYm50bG1jb25uZWN0CmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L01ha2VmaWxlLmFtIGIvdGVzdHMvbGlidGVzdC9NYWtlZmlsZS5hbQppbmRleCA4MDcwN2IxLi44MjZiM2Q0IDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L01ha2VmaWxlLmFtCisrKyBiL3Rlc3RzL2xpYnRlc3QvTWFrZWZpbGUuYW0KQEAgLTUsMTEgKzUsMTEgQEAKICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAjCi0jIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTMsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisjIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAjCiAjIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAjCiAjIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTUxLDcgKzUxLDcgQEAKIGVuZGlmCiAKIEVYVFJBX0RJU1QgPSB0ZXN0NzUucGwgdGVzdDMwNy5wbCB0ZXN0NjEwLnBsIHRlc3Q2MTMucGwgdGVzdDEwMTMucGwJXAotdGVzdDEwMjIucGwgTWFrZWZpbGUuaW5jIG5vdGV4aXN0cy5wbAordGVzdDEwMjIucGwgTWFrZWZpbGUuaW5jIG5vdGV4aXN0cy5wbCBDTWFrZUxpc3RzLnR4dAogCiBDRkxBR19DVVJMX1NZTUJPTF9ISURJTkcgPSBAQ0ZMQUdfQ1VSTF9TWU1CT0xfSElESU5HQAogCkBAIC02Miw4ICs2Miw4IEBACiBTVVBQT1JURklMRVNfTElCUyA9ICQodG9wX2J1aWxkZGlyKS9saWIvbGliY3VybC5sYSBATElCQ1VSTF9MSUJTQAogVEVTVFVUSUxfTElCUyA9ICQodG9wX2J1aWxkZGlyKS9saWIvbGliY3VybC5sYSBATElCQ1VSTF9MSUJTQAogZWxzZQotU1VQUE9SVEZJTEVTX0xJQlMgPSAkKHRvcF9idWlsZGRpcikvbGliL2xpYmN1cmwubGEgQENVUkxfTkVUV09SS19MSUJTQAotVEVTVFVUSUxfTElCUyA9ICQodG9wX2J1aWxkZGlyKS9saWIvbGliY3VybC5sYSBAQ1VSTF9ORVRXT1JLX0FORF9USU1FX0xJQlNACitTVVBQT1JURklMRVNfTElCUyA9ICQodG9wX2J1aWxkZGlyKS9saWIvbGliY3VybC5sYSBAQ1VSTF9ORVRXT1JLX0xJQlNAIEBOU1NfTElCU0AKK1RFU1RVVElMX0xJQlMgPSAkKHRvcF9idWlsZGRpcikvbGliL2xpYmN1cmwubGEgQENVUkxfTkVUV09SS19BTkRfVElNRV9MSUJTQCBATlNTX0xJQlNACiBlbmRpZgogCiAjIERlcGVuZGVuY2llcyAobWF5IG5lZWQgdG8gYmUgb3ZlcnJpZGVuKQpAQCAtMTE1LDMgKzExNSw2IEBACiAKIGxpYmhvc3RuYW1lX2xhX0xJQkFERCA9CiBsaWJob3N0bmFtZV9sYV9ERVBFTkRFTkNJRVMgPQorCitjaGVja3NyYzoKKwlAUEVSTEAgJCh0b3Bfc3JjZGlyKS9saWIvY2hlY2tzcmMucGwgJChzcmNkaXIpLyouYwpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9NYWtlZmlsZS5pbmMgYi90ZXN0cy9saWJ0ZXN0L01ha2VmaWxlLmluYwppbmRleCA3OGQ1MzEzLi43YWU2NmQ3IDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L01ha2VmaWxlLmluYworKysgYi90ZXN0cy9saWJ0ZXN0L01ha2VmaWxlLmluYwpAQCAtMjEsOSArMjEsOSBAQAogIGxpYjU3MSBsaWI1NzIgbGliNTczIGxpYjU3NCBsaWI1NzUgbGliNTc2ICAgICAgICBsaWI1NzggbGliNTc5IGxpYjU4MiAgIFwKICBsaWI1ODMgbGliNTg1IGxpYjU4NiBsaWI1ODcgICAgICAgIGxpYjU5MCBsaWI1OTEgbGliNTk3IGxpYjU5OCBsaWI1OTkgICBcCiAgbGliMTUwMCBsaWIxNTAxIGxpYjE1MDIgbGliMTUwMyBsaWIxNTA0IGxpYjE1MDUgbGliMTUwNiBsaWIxNTA3IGxpYjE1MDggXAotIGxpYjE1MDkgbGliMTUxMCBsaWIxNTExIGxpYjE1MTIgbGliMTUxMyBsaWIxNTE0IGxpYjE1MTUgXAorIGxpYjE1MDkgbGliMTUxMCBsaWIxNTExIGxpYjE1MTIgbGliMTUxMyBsaWIxNTE0IGxpYjE1MTUgICAgICAgICBsaWIxNTE3IFwKICBsaWIxNTIwIFwKLSBsaWIxNTI1IGxpYjE1MjYgbGliMTUyNyBsaWIxNTI4IGxpYjE1MjkgbGliMTUzMCBcCisgbGliMTUyNSBsaWIxNTI2IGxpYjE1MjcgbGliMTUyOCBsaWIxNTI5IGxpYjE1MzAgbGliMTUzMSBcCiAgbGliMTkwMCBcCiAgbGliMjAzMwogCkBAIC0zNTcsNiArMzU3LDkgQEAKIGxpYjE1MTVfTERBREQgPSAkKFRFU1RVVElMX0xJQlMpCiBsaWIxNTE1X0NQUEZMQUdTID0gJChBTV9DUFBGTEFHUykgLURMSUIxNTE1CiAKK2xpYjE1MTdfU09VUkNFUyA9IGxpYjE1MTcuYyAkKFNVUFBPUlRGSUxFUykKK2xpYjE1MTdfQ1BQRkxBR1MgPSAkKEFNX0NQUEZMQUdTKSAtRExJQjE1MTcKKwogbGliMTUyMF9TT1VSQ0VTID0gbGliMTUyMC5jICQoU1VQUE9SVEZJTEVTKQogbGliMTUyMF9DUFBGTEFHUyA9ICQoQU1fQ1BQRkxBR1MpIC1ETElCMTUyMAogCkBAIC0zODQsNiArMzg3LDEwIEBACiBsaWIxNTMwX0xEQUREID0gJChURVNUVVRJTF9MSUJTKQogbGliMTUzMF9DUFBGTEFHUyA9ICQoQU1fQ1BQRkxBR1MpIC1ETElCMTUzMAogCitsaWIxNTMxX1NPVVJDRVMgPSBsaWIxNTMxLmMgJChTVVBQT1JURklMRVMpICQoVEVTVFVUSUwpICQoV0FSTkxFU1MpCitsaWIxNTMxX0xEQUREID0gJChURVNUVVRJTF9MSUJTKQorbGliMTUzMV9DUFBGTEFHUyA9ICQoQU1fQ1BQRkxBR1MpIC1ETElCMTUzMQorCiBsaWIxOTAwX1NPVVJDRVMgPSBsaWIxOTAwLmMgJChTVVBQT1JURklMRVMpICQoVEVTVFVUSUwpICQoV0FSTkxFU1MpCiBsaWIxOTAwX0xEQUREID0gJChURVNUVVRJTF9MSUJTKQogbGliMTkwMF9DUFBGTEFHUyA9ICQoQU1fQ1BQRkxBR1MpCmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2Noa2hvc3RuYW1lLmMgYi90ZXN0cy9saWJ0ZXN0L2Noa2hvc3RuYW1lLmMKaW5kZXggMTY4Mjk0YS4uNzllMzgyYiAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9jaGtob3N0bmFtZS5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvY2hraG9zdG5hbWUuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTIsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTI4LDEyICsyOCwxMiBAQAogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIHsKICAgY2hhciBidWZmW0hPU1ROQU1FX01BWF07Ci0gIGlmIChhcmdjICE9IDIpIHsKKyAgaWYoYXJnYyAhPSAyKSB7CiAgICAgcHJpbnRmKCJVc2FnZTogJXMgRVhQRUNURURfSE9TVE5BTUVcbiIsIGFyZ3ZbMF0pOwogICAgIHJldHVybiAxOwogICB9CiAKLSAgaWYgKEN1cmxfZ2V0aG9zdG5hbWUoYnVmZiwgSE9TVE5BTUVfTUFYKSkgeworICBpZihDdXJsX2dldGhvc3RuYW1lKGJ1ZmYsIEhPU1ROQU1FX01BWCkpIHsKICAgICBwcmludGYoIkN1cmxfZ2V0aG9zdG5hbWUoKSBmYWlsZWRcbiIpOwogICAgIHJldHVybiAxOwogICB9CmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2ZpcnN0LmMgYi90ZXN0cy9saWJ0ZXN0L2ZpcnN0LmMKaW5kZXggMGVhZDM5ZC4uMjMxYWUzNiAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9maXJzdC5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvZmlyc3QuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTMzLDYgKzMzLDEwIEBACiAjICBpbmNsdWRlIDxmY250bC5oPiAvKiBmb3Igc2V0bW9kZSgpICovCiAjZW5kaWYKIAorI2lmZGVmIFVTRV9OU1MKKyNpbmNsdWRlIDxuc3ByLmg+CisjZW5kaWYKKwogI2lmZGVmIENVUkxERUJVRwogIyAgZGVmaW5lIE1FTURFQlVHX05PREVGSU5FUwogIyAgaW5jbHVkZSAibWVtZGVidWcuaCIKQEAgLTUyLDcgKzU2LDcgQEAKICAgICogc2VsZWN0KCkgY2FuIG5vdCBiZSB1c2VkIHRvIHNsZWVwIHdpdGhvdXQgYSBzaW5nbGUgZmRfc2V0LgogICAgKi8KICAgaWYoIW5mZHMpIHsKLSAgICBTbGVlcCgxMDAwKnR2LT50dl9zZWMgKyB0di0+dHZfdXNlYy8xMDAwKTsKKyAgICBTbGVlcCgoMTAwMCp0di0+dHZfc2VjKSArIChEV09SRCkoKChkb3VibGUpdHYtPnR2X3VzZWMpLzEwMDAuMCkpOwogICAgIHJldHVybiAwOwogICB9CiAjZW5kaWYKQEAgLTY1LDcgKzY5LDcgQEAKICAgdC50dl9zZWMgPSBtcy8xMDAwOwogICBtcyAtPSAoaW50KXQudHZfc2VjICogMTAwMDsKICAgdC50dl91c2VjID0gbXMgKiAxMDAwOwotICBzZWxlY3Rfd3JhcHBlcigwLCBOVUxMLCBOVUxMICwgTlVMTCwgJnQpOworICBzZWxlY3Rfd3JhcHBlcigwLCBOVUxMLCBOVUxMLCBOVUxMLCAmdCk7CiB9CiAKIGNoYXIgKmxpYnRlc3RfYXJnMj1OVUxMOwpAQCAtMTI4LDYgKzEzMiw3IEBACiBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiB7CiAgIGNoYXIgKlVSTDsKKyAgaW50IHJlc3VsdDsKIAogI2lmZGVmIE9fQklOQVJZCiAjICBpZmRlZiBfX0hJR0hDX18KQEAgLTE0OCw3ICsxNTMsNyBAQAogICBzZXRsb2NhbGUoTENfQUxMLCAiIik7CiAjZW5kaWYKIAotICBpZihhcmdjPCAyICkgeworICBpZihhcmdjPCAyKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJQYXNzIFVSTCBhcyBhcmd1bWVudCBwbGVhc2VcbiIpOwogICAgIHJldHVybiAxOwogICB9CkBAIC0xNjYsNSArMTcxLDEzIEBACiAKICAgZnByaW50ZihzdGRlcnIsICJVUkw6ICVzXG4iLCBVUkwpOwogCi0gIHJldHVybiB0ZXN0KFVSTCk7CisgIHJlc3VsdCA9IHRlc3QoVVJMKTsKKworI2lmZGVmIFVTRV9OU1MKKyAgaWYoUFJfSW5pdGlhbGl6ZWQoKSkKKyAgICAvKiBwcmV2ZW50IHZhbGdyaW5kIGZyb20gcmVwb3J0aW5nIHBvc3NpYmx5IGxvc3QgbWVtb3J5IChmZCBjYWNoZSwgLi4uKSAqLworICAgIFBSX0NsZWFudXAoKTsKKyNlbmRpZgorCisgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYjE1MDAuYyBiL3Rlc3RzL2xpYnRlc3QvbGliMTUwMC5jCmluZGV4IDA4YjkxN2YuLmYzYzQ5NTggMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliMTUwMC5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliMTUwMC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMywgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNTYsNyArNTYsNyBAQAogICB3aGlsZShzdGlsbF9ydW5uaW5nKSB7CiAgICAgaW50IG51bTsKICAgICByZXMgPSBjdXJsX211bHRpX3dhaXQobXVsdGksIE5VTEwsIDAsIFRFU1RfSEFOR19USU1FT1VULCAmbnVtKTsKLSAgICBpZiAocmVzICE9IENVUkxNX09LKSB7CisgICAgaWYocmVzICE9IENVUkxNX09LKSB7CiAgICAgICBwcmludGYoImN1cmxfbXVsdGlfd2FpdCgpIHJldHVybmVkICVkXG4iLCByZXMpOwogICAgICAgcmVzID0gVEVTVF9FUlJfTUFKT1JfQkFEOwogICAgICAgZ290byB0ZXN0X2NsZWFudXA7CmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYjE1MDEuYyBiL3Rlc3RzL2xpYnRlc3QvbGliMTUwMS5jCmluZGV4IDAxYTM4MmUuLmNjNDQyYjUgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliMTUwMS5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliMTUwMS5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNDEsNyArNDEsNyBAQAogCiAgIHJlc3VsdCA9IChhZnRlci0+dHZfc2VjIC0gYmVmb3JlLT50dl9zZWMpICogMTAwMDAwMCArCiAgICAgYWZ0ZXItPnR2X3VzZWMgLSBiZWZvcmUtPnR2X3VzZWM7Ci0gIGlmIChyZXN1bHQgPCAwKQorICBpZihyZXN1bHQgPCAwKQogICAgIHJlc3VsdCA9IDA7CiAKICAgcmV0dXJuIGN1cmx4X3N6dG9zaShyZXN1bHQpOwpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWIxNTAyLmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjE1MDIuYwppbmRleCAyYjUwYzQ3Li5lNGUxYTE2IDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYjE1MDIuYworKysgYi90ZXN0cy9saWJ0ZXN0L2xpYjE1MDIuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTIsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTUxLDcgKzUxLDggQEAKICAgLyogRE5TIGNhY2hlIGluamVjdGlvbiAqLwogICBzdHJ1Y3QgY3VybF9zbGlzdCAqZG5zX2NhY2hlX2xpc3Q7CiAKLSAgc3ByaW50ZihyZWRpcmVjdCwgImdvb2dsZS5jb206JXM6JXMiLCBsaWJ0ZXN0X2FyZzIsIGxpYnRlc3RfYXJnMyk7CisgIHNucHJpbnRmKHJlZGlyZWN0LCBzaXplb2YocmVkaXJlY3QpLCAiZ29vZ2xlLmNvbTolczolcyIsIGxpYnRlc3RfYXJnMiwKKyAgICAgICAgICAgbGlidGVzdF9hcmczKTsKIAogICBzdGFydF90ZXN0X3RpbWluZygpOwogCmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYjE1MDYuYyBiL3Rlc3RzL2xpYnRlc3QvbGliMTUwNi5jCmluZGV4IGI2MWM0ZGIuLjQ3ZmMzMzUgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliMTUwNi5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliMTUwNi5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTQ2LDcgKzQ2LDggQEAKIAogICAvKiBDcmVhdGUgZmFrZSBETlMgZW50cmllcyBmb3Igc2VydmVyWC5leGFtcGxlLmNvbSBmb3IgYWxsIGhhbmRsZXMgKi8KICAgZm9yKGk9MDsgaSA8IE5VTV9IQU5ETEVTOyBpKyspIHsKLSAgICBzcHJpbnRmKGRuc2VudHJ5LCAic2VydmVyJWQuZXhhbXBsZS5jb206JXM6JXMiLCBpICsgMSwgcG9ydCwgYWRkcmVzcyk7CisgICAgc25wcmludGYoZG5zZW50cnksIHNpemVvZihkbnNlbnRyeSksICJzZXJ2ZXIlZC5leGFtcGxlLmNvbTolczolcyIsCisgICAgICAgICAgICAgaSArIDEsIHBvcnQsIGFkZHJlc3MpOwogICAgIHByaW50ZigiJXNcbiIsIGRuc2VudHJ5KTsKICAgICBzbGlzdDIgPSBjdXJsX3NsaXN0X2FwcGVuZChzbGlzdCwgZG5zZW50cnkpOwogICAgIGlmKCFzbGlzdDIpIHsKQEAgLTY5LDggKzcwLDkgQEAKICAgICAvKiBnZXQgYW4gZWFzeSBoYW5kbGUgKi8KICAgICBlYXN5X2luaXQoY3VybFtpXSk7CiAgICAgLyogc3BlY2lmeSB0YXJnZXQgKi8KLSAgICBzcHJpbnRmKHRhcmdldF91cmwsICJodHRwOi8vc2VydmVyJWQuZXhhbXBsZS5jb206JXMvcGF0aC8xNTA2JTA0aSIsCi0gICAgICAgICAgICBpICsgMSwgcG9ydCwgaSArIDEpOworICAgIHNucHJpbnRmKHRhcmdldF91cmwsIHNpemVvZih0YXJnZXRfdXJsKSwKKyAgICAgICAgICAgICAiaHR0cDovL3NlcnZlciVkLmV4YW1wbGUuY29tOiVzL3BhdGgvMTUwNiUwNGkiLAorICAgICAgICAgICAgIGkgKyAxLCBwb3J0LCBpICsgMSk7CiAgICAgdGFyZ2V0X3VybFtzaXplb2YodGFyZ2V0X3VybCkgLSAxXSA9ICdcMCc7CiAgICAgZWFzeV9zZXRvcHQoY3VybFtpXSwgQ1VSTE9QVF9VUkwsIHRhcmdldF91cmwpOwogICAgIC8qIGdvIHZlcmJvc2UgKi8KZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliMTUwNy5jIGIvdGVzdHMvbGlidGVzdC9saWIxNTA3LmMKaW5kZXggNWJiNjFiMy4uNWE3OTk0ZSAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWIxNTA3LmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWIxNTA3LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDEzLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0xMzcsNyArMTM3LDcgQEAKIAogICAgIHJjID0gc2VsZWN0KG1heGZkKzEsICZmZHJlYWQsICZmZHdyaXRlLCAmZmRleGNlcCwgJnRpbWVvdXQpOwogCi0gICAgaWYgKHR2ZGlmZih0dm5vdygpLCBtcF9zdGFydCkgPiBNVUxUSV9QRVJGT1JNX0hBTkdfVElNRU9VVCkgeworICAgIGlmKHR2ZGlmZih0dm5vdygpLCBtcF9zdGFydCkgPiBNVUxUSV9QRVJGT1JNX0hBTkdfVElNRU9VVCkgewogICAgICAgZnByaW50ZihzdGRlcnIsICJBQk9SVElORyBURVNULCBzaW5jZSBpdCBzZWVtcyAiCiAgICAgICAgICAgICAgICJ0aGF0IGl0IHdvdWxkIGhhdmUgcnVuIGZvcmV2ZXIuXG4iKTsKICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWIxNTA4LmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjE1MDguYwppbmRleCA3MmYyNmQxLi5mNTM2NDIyIDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYjE1MDguYworKysgYi90ZXN0cy9saWJ0ZXN0L2xpYjE1MDguYwpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYjE1MDkuYyBiL3Rlc3RzL2xpYnRlc3QvbGliMTUwOS5jCmluZGV4IGY2N2M3ZDYuLmRmNDI4YTAgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliMTUwOS5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliMTUwOS5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliMTUxMC5jIGIvdGVzdHMvbGlidGVzdC9saWIxNTEwLmMKaW5kZXggZDE5YTdiNS4uMjVlOWZlZCAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWIxNTEwLmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWIxNTEwLmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNDQsNyArNDQsOCBAQAogCiAgIC8qIENyZWF0ZSBmYWtlIEROUyBlbnRyaWVzIGZvciBzZXJ2ZXJYLmV4YW1wbGUuY29tIGZvciBhbGwgaGFuZGxlcyAqLwogICBmb3IoaT0wOyBpIDwgTlVNX1VSTFM7IGkrKykgewotICAgIHNwcmludGYoZG5zZW50cnksICJzZXJ2ZXIlZC5leGFtcGxlLmNvbTolczolcyIsIGkgKyAxLCBwb3J0LCBhZGRyZXNzKTsKKyAgICBzbnByaW50ZihkbnNlbnRyeSwgc2l6ZW9mKGRuc2VudHJ5KSwgInNlcnZlciVkLmV4YW1wbGUuY29tOiVzOiVzIiwgaSArIDEsCisgICAgICAgICAgICAgcG9ydCwgYWRkcmVzcyk7CiAgICAgcHJpbnRmKCIlc1xuIiwgZG5zZW50cnkpOwogICAgIHNsaXN0MiA9IGN1cmxfc2xpc3RfYXBwZW5kKHNsaXN0LCBkbnNlbnRyeSk7CiAgICAgaWYoIXNsaXN0MikgewpAQCAtNzMsOCArNzQsOSBAQAogICAvKiBnZXQgTlVNX0hBTkRMRVMgZWFzeSBoYW5kbGVzICovCiAgIGZvcihpPTA7IGkgPCBOVU1fVVJMUzsgaSsrKSB7CiAgICAgLyogc3BlY2lmeSB0YXJnZXQgKi8KLSAgICBzcHJpbnRmKHRhcmdldF91cmwsICJodHRwOi8vc2VydmVyJWQuZXhhbXBsZS5jb206JXMvcGF0aC8xNTEwJTA0aSIsCi0gICAgICAgICAgICBpICsgMSwgcG9ydCwgaSArIDEpOworICAgIHNucHJpbnRmKHRhcmdldF91cmwsIHNpemVvZih0YXJnZXRfdXJsKSwKKyAgICAgICAgICAgICAiaHR0cDovL3NlcnZlciVkLmV4YW1wbGUuY29tOiVzL3BhdGgvMTUxMCUwNGkiLAorICAgICAgICAgICAgIGkgKyAxLCBwb3J0LCBpICsgMSk7CiAgICAgdGFyZ2V0X3VybFtzaXplb2YodGFyZ2V0X3VybCkgLSAxXSA9ICdcMCc7CiAgICAgZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9VUkwsIHRhcmdldF91cmwpOwogCmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYjE1MTEuYyBiL3Rlc3RzL2xpYnRlc3QvbGliMTUxMS5jCmluZGV4IGE0NmY5YWIuLmJlYzMxNjcgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliMTUxMS5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliMTUxMS5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliMTUxMi5jIGIvdGVzdHMvbGlidGVzdC9saWIxNTEyLmMKaW5kZXggODYzNzJhYS4uZjQwOTFiNCAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWIxNTEyLmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWIxNTEyLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIExpbnVzIE5pZWxzZW4gRmVsdHppbmcgPGxpbnVzQGhheHguc2U+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE2LCBMaW51cyBOaWVsc2VuIEZlbHR6aW5nIDxsaW51c0BoYXh4LnNlPgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTQ5LDcgKzQ5LDggQEAKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwogICB9CiAKLSAgc3ByaW50ZihkbnNlbnRyeSwgInNlcnZlci5leGFtcGxlLmN1cmw6JXM6JXMiLCBwb3J0LCBhZGRyZXNzKTsKKyAgc25wcmludGYoZG5zZW50cnksIHNpemVvZihkbnNlbnRyeSksICJzZXJ2ZXIuZXhhbXBsZS5jdXJsOiVzOiVzIiwKKyAgICAgICAgICAgcG9ydCwgYWRkcmVzcyk7CiAgIHByaW50ZigiJXNcbiIsIGRuc2VudHJ5KTsKICAgc2xpc3QgPSBjdXJsX3NsaXN0X2FwcGVuZChzbGlzdCwgZG5zZW50cnkpOwogCkBAIC01OCw4ICs1OSw5IEBACiAgICAgLyogZ2V0IGFuIGVhc3kgaGFuZGxlICovCiAgICAgZWFzeV9pbml0KGN1cmxbaV0pOwogICAgIC8qIHNwZWNpZnkgdGFyZ2V0ICovCi0gICAgc3ByaW50Zih0YXJnZXRfdXJsLCAiaHR0cDovL3NlcnZlci5leGFtcGxlLmN1cmw6JXMvcGF0aC8xNTEyJTA0aSIsCi0gICAgICAgICAgICBwb3J0LCBpICsgMSk7CisgICAgc25wcmludGYodGFyZ2V0X3VybCwgc2l6ZW9mKHRhcmdldF91cmwpLAorICAgICAgICAgICAgICJodHRwOi8vc2VydmVyLmV4YW1wbGUuY3VybDolcy9wYXRoLzE1MTIlMDRpIiwKKyAgICAgICAgICAgICBwb3J0LCBpICsgMSk7CiAgICAgdGFyZ2V0X3VybFtzaXplb2YodGFyZ2V0X3VybCkgLSAxXSA9ICdcMCc7CiAgICAgZWFzeV9zZXRvcHQoY3VybFtpXSwgQ1VSTE9QVF9VUkwsIHRhcmdldF91cmwpOwogICAgIC8qIGdvIHZlcmJvc2UgKi8KZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliMTUxMy5jIGIvdGVzdHMvbGlidGVzdC9saWIxNTEzLmMKaW5kZXggYWVmYjU3Ny4uZDAxMjNmMSAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWIxNTEzLmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWIxNTEzLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC00MSw2ICs0MSw3IEBACiAgICh2b2lkKWRsbm93OwogICAodm9pZCl1bHRvdGFsOwogICAodm9pZCl1bG5vdzsKKyAgcHJpbnRmKCJQUk9HUkVTU0ZVTkNUSU9OIGNhbGxlZFxuIik7CiAgIHJldHVybiAxOwogfQogCmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYjE1MTQuYyBiL3Rlc3RzL2xpYnRlc3QvbGliMTUxNC5jCmluZGV4IGVjOGY4YTMuLmI0YWI5ZGMgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliMTUxNC5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliMTUxNC5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliMTUxNS5jIGIvdGVzdHMvbGlidGVzdC9saWIxNTE1LmMKaW5kZXggZDVjOGY3ZC4uMmZkMTliYiAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWIxNTE1LmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWIxNTE1LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zOSw3ICszOSw4IEBACiAjZGVmaW5lIHNsZWVwKHMpIFNsZWVwKHMgKiAxMDAwKQogI2VuZGlmCiAKLXN0YXRpYyBpbnQgZGVidWdfY2FsbGJhY2soQ1VSTCAqY3VybCwgY3VybF9pbmZvdHlwZSBpbmZvLCBjaGFyICptc2csIHNpemVfdCBsZW4sIHZvaWQgKnB0cikKK3N0YXRpYyBpbnQgZGVidWdfY2FsbGJhY2soQ1VSTCAqY3VybCwgY3VybF9pbmZvdHlwZSBpbmZvLCBjaGFyICptc2csCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW4sIHZvaWQgKnB0cikKIHsKICAgKHZvaWQpY3VybDsKICAgKHZvaWQpcHRyOwpAQCAtMTIxLDcgKzEyMiw4IEBACiAgIGludCBpOwogICBpbnQgY291bnQgPSAyOwogCi0gIHNucHJpbnRmKGRuc19lbnRyeSwgc2l6ZW9mKGRuc19lbnRyeSksICJ0ZXN0c2VydmVyLmV4YW1wbGUuY29tOiVzOiVzIiwgcG9ydCwgYWRkcmVzcyk7CisgIHNucHJpbnRmKGRuc19lbnRyeSwgc2l6ZW9mKGRuc19lbnRyeSksICJ0ZXN0c2VydmVyLmV4YW1wbGUuY29tOiVzOiVzIiwKKyAgICAgICAgICAgcG9ydCwgYWRkcmVzcyk7CiAKICAgc3RhcnRfdGVzdF90aW1pbmcoKTsKIApAQCAtMTMwLDcgKzEzMiw4IEBACiAKICAgZm9yKGkgPSAxOyBpIDw9IGNvdW50OyBpKyspIHsKICAgICBjaGFyIHRhcmdldF91cmxbMjU2XTsKLSAgICBzbnByaW50Zih0YXJnZXRfdXJsLCBzaXplb2YodGFyZ2V0X3VybCksICJodHRwOi8vdGVzdHNlcnZlci5leGFtcGxlLmNvbTolcyVzJTA0ZCIsIHBvcnQsIHBhdGgsIGkpOworICAgIHNucHJpbnRmKHRhcmdldF91cmwsIHNpemVvZih0YXJnZXRfdXJsKSwKKyAgICAgICAgICAgICAiaHR0cDovL3Rlc3RzZXJ2ZXIuZXhhbXBsZS5jb206JXMvJXMlMDRkIiwgcG9ydCwgcGF0aCwgaSk7CiAKICAgICAvKiBzZWNvbmQgcmVxdWVzdCBtdXN0IHN1Y2NlZWQgbGlrZSB0aGUgZmlyc3Qgb25lICovCiAgICAgaWYoKHJlcyA9IGRvX29uZV9yZXF1ZXN0KG11bHRpLCB0YXJnZXRfdXJsLCBkbnNfZW50cnkpKSkKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliMTUxNy5jIGIvdGVzdHMvbGlidGVzdC9saWIxNTE3LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTI3MGVkNwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliMTUxNy5jCkBAIC0wLDAgKzEsMTE2IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqCisgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisjaW5jbHVkZSAidGVzdC5oIgorCisjaW5jbHVkZSAibWVtZGVidWcuaCIKKworc3RhdGljIGNoYXIgZGF0YVtdPSJ0aGlzIGlzIHdoYXQgd2UgcG9zdCB0byB0aGUgc2lsbHkgd2ViIHNlcnZlclxuIjsKKworc3RydWN0IFdyaXRlVGhpcyB7CisgIGNoYXIgKnJlYWRwdHI7CisgIHNpemVfdCBzaXplbGVmdDsKK307CisKK3N0YXRpYyBzaXplX3QgcmVhZF9jYWxsYmFjayh2b2lkICpwdHIsIHNpemVfdCBzaXplLCBzaXplX3Qgbm1lbWIsIHZvaWQgKnVzZXJwKQoreworICBzdHJ1Y3QgV3JpdGVUaGlzICpwb29oID0gKHN0cnVjdCBXcml0ZVRoaXMgKil1c2VycDsKKyAgc2l6ZV90IHRvY29weSA9IHNpemUgKiBubWVtYjsKKworICAvKiBXYWl0IG9uZSBzZWNvbmQgYmVmb3JlIHJldHVybiBQT1NUIGRhdGEgICAgICAgICAgKgorICAgKiBzbyBsaWJjdXJsIHdpbGwgd2FpdCBiZWZvcmUgc2VuZGluZyByZXF1ZXN0IGJvZHkgKi8KKyAgd2FpdF9tcygxMDAwKTsKKworICBpZih0b2NvcHkgPCAxIHx8ICFwb29oLT5zaXplbGVmdCkKKyAgICByZXR1cm4gMDsKKworICBpZihwb29oLT5zaXplbGVmdCA8IHRvY29weSkKKyAgICB0b2NvcHkgPSBwb29oLT5zaXplbGVmdDsKKworICBtZW1jcHkocHRyLCBwb29oLT5yZWFkcHRyLCB0b2NvcHkpOy8qIGNvcHkgcmVxdWVzdGVkIGRhdGEgKi8KKyAgcG9vaC0+cmVhZHB0ciArPSB0b2NvcHk7ICAgICAgICAgICAvKiBhZHZhbmNlIHBvaW50ZXIgKi8KKyAgcG9vaC0+c2l6ZWxlZnQgLT0gdG9jb3B5OyAgICAgICAgICAvKiBsZXNzIGRhdGEgbGVmdCAqLworICByZXR1cm4gdG9jb3B5OworfQorCitpbnQgdGVzdChjaGFyICpVUkwpCit7CisgIENVUkwgKmN1cmw7CisgIENVUkxjb2RlIHJlcz1DVVJMRV9PSzsKKworICBzdHJ1Y3QgV3JpdGVUaGlzIHBvb2g7CisKKyAgcG9vaC5yZWFkcHRyID0gZGF0YTsKKyAgcG9vaC5zaXplbGVmdCA9IHN0cmxlbihkYXRhKTsKKworICBpZihjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkpIHsKKyAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZ2xvYmFsX2luaXQoKSBmYWlsZWRcbiIpOworICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CisgIH0KKworICBjdXJsID0gY3VybF9lYXN5X2luaXQoKTsKKyAgaWYoIWN1cmwpIHsKKyAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZWFzeV9pbml0KCkgZmFpbGVkXG4iKTsKKyAgICBjdXJsX2dsb2JhbF9jbGVhbnVwKCk7CisgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKKyAgfQorCisgIC8qIEZpcnN0IHNldCB0aGUgVVJMIHRoYXQgaXMgYWJvdXQgdG8gcmVjZWl2ZSBvdXIgUE9TVC4gKi8KKyAgdGVzdF9zZXRvcHQoY3VybCwgQ1VSTE9QVF9VUkwsIFVSTCk7CisKKyAgLyogTm93IHNwZWNpZnkgd2Ugd2FudCB0byBQT1NUIGRhdGEgKi8KKyAgdGVzdF9zZXRvcHQoY3VybCwgQ1VSTE9QVF9QT1NULCAxTCk7CisKKyNpZmRlZiBDVVJMX0RPRVNfQ09OVkVSU0lPTlMKKyAgLyogQ29udmVydCB0aGUgUE9TVCBkYXRhIHRvIEFTQ0lJICovCisgIHRlc3Rfc2V0b3B0KGN1cmwsIENVUkxPUFRfVFJBTlNGRVJURVhULCAxTCk7CisjZW5kaWYKKworICAvKiBTZXQgdGhlIGV4cGVjdGVkIFBPU1Qgc2l6ZSAqLworICB0ZXN0X3NldG9wdChjdXJsLCBDVVJMT1BUX1BPU1RGSUVMRFNJWkUsIChsb25nKXBvb2guc2l6ZWxlZnQpOworCisgIC8qIHdlIHdhbnQgdG8gdXNlIG91ciBvd24gcmVhZCBmdW5jdGlvbiAqLworICB0ZXN0X3NldG9wdChjdXJsLCBDVVJMT1BUX1JFQURGVU5DVElPTiwgcmVhZF9jYWxsYmFjayk7CisKKyAgLyogcG9pbnRlciB0byBwYXNzIHRvIG91ciByZWFkIGZ1bmN0aW9uICovCisgIHRlc3Rfc2V0b3B0KGN1cmwsIENVUkxPUFRfUkVBRERBVEEsICZwb29oKTsKKworICAvKiBnZXQgdmVyYm9zZSBkZWJ1ZyBvdXRwdXQgcGxlYXNlICovCisgIHRlc3Rfc2V0b3B0KGN1cmwsIENVUkxPUFRfVkVSQk9TRSwgMUwpOworCisgIC8qIGluY2x1ZGUgaGVhZGVycyBpbiB0aGUgb3V0cHV0ICovCisgIHRlc3Rfc2V0b3B0KGN1cmwsIENVUkxPUFRfSEVBREVSLCAxTCk7CisKKyAgLyogZGV0ZWN0IEhUVFAgZXJyb3IgY29kZXMgPj0gNDAwICovCisgIC8qIHRlc3Rfc2V0b3B0KGN1cmwsIENVUkxPUFRfRkFJTE9ORVJST1IsIDFMKTsgKi8KKworCisgIC8qIFBlcmZvcm0gdGhlIHJlcXVlc3QsIHJlcyB3aWxsIGdldCB0aGUgcmV0dXJuIGNvZGUgKi8KKyAgcmVzID0gY3VybF9lYXN5X3BlcmZvcm0oY3VybCk7CisKK3Rlc3RfY2xlYW51cDoKKworICAvKiBhbHdheXMgY2xlYW51cCAqLworICBjdXJsX2Vhc3lfY2xlYW51cChjdXJsKTsKKyAgY3VybF9nbG9iYWxfY2xlYW51cCgpOworCisgIHJldHVybiByZXM7Cit9CmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYjE1MjAuYyBiL3Rlc3RzL2xpYnRlc3QvbGliMTUyMC5jCmluZGV4IGM2ZDJlODIuLmE0Y2U3OWIgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliMTUyMC5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliMTUyMC5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliMTUyNS5jIGIvdGVzdHMvbGlidGVzdC9saWIxNTI1LmMKaW5kZXggOTU3YjQyOS4uYzU4ZWJlZCAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWIxNTI1LmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWIxNTI1LmMKQEAgLTUsMTIgKzUsMTIgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqIENvcHlyaWdodCAoQykgMjAxNCwgVmlqYXkgUGFuZ2hhbCwgPHZwYW5naGFsQG1hZ2luYXRpY3MuY29tPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzUsNyArMzUsNyBAQAogc3RhdGljIHNpemVfdCByZWFkX2NhbGxiYWNrKHZvaWQgKnB0ciwgc2l6ZV90IHNpemUsIHNpemVfdCBubWVtYiwgdm9pZCAqc3RyZWFtKQogewogICBzaXplX3QgIGFtb3VudCA9IG5tZW1iICogc2l6ZTsgLyogVG90YWwgYnl0ZXMgY3VybCB3YW50cyAqLwotICBpZiAoYW1vdW50IDwgc3RybGVuKGRhdGEpKSB7CisgIGlmKGFtb3VudCA8IHN0cmxlbihkYXRhKSkgewogICAgIHJldHVybiBzdHJsZW4oZGF0YSk7CiAgIH0KICAgKHZvaWQpc3RyZWFtOwpAQCAtNjQsNyArNjQsNyBAQAogCiAgIGhobCA9IGN1cmxfc2xpc3RfYXBwZW5kKGhobCwgIlVzZXItQWdlbnQ6IEh0dHAgQWdlbnQiKTsKIAotICBpZiAoIWhobCkgeworICBpZighaGhsKSB7CiAgICAgZ290byB0ZXN0X2NsZWFudXA7CiAgIH0KIApkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWIxNTI2LmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjE1MjYuYwppbmRleCBlYzIxZmIwLi5lZjY2YTQ4IDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYjE1MjYuYworKysgYi90ZXN0cy9saWJ0ZXN0L2xpYjE1MjYuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIFZpamF5IFBhbmdoYWwsIDx2cGFuZ2hhbEBtYWdpbmF0aWNzLmNvbT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgVmlqYXkgUGFuZ2hhbCwgPHZwYW5naGFsQG1hZ2luYXRpY3MuY29tPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzQsNyArMzQsNyBAQAogc3RhdGljIHNpemVfdCByZWFkX2NhbGxiYWNrKHZvaWQgKnB0ciwgc2l6ZV90IHNpemUsIHNpemVfdCBubWVtYiwgdm9pZCAqc3RyZWFtKQogewogICBzaXplX3QgIGFtb3VudCA9IG5tZW1iICogc2l6ZTsgLyogVG90YWwgYnl0ZXMgY3VybCB3YW50cyAqLwotICBpZiAoYW1vdW50IDwgc3RybGVuKGRhdGEpKSB7CisgIGlmKGFtb3VudCA8IHN0cmxlbihkYXRhKSkgewogICAgIHJldHVybiBzdHJsZW4oZGF0YSk7CiAgIH0KICAgKHZvaWQpc3RyZWFtOwpAQCAtNjIsMTEgKzYyLDExIEBACiAKICAgaGhsID0gY3VybF9zbGlzdF9hcHBlbmQoaGhsLCAiVXNlci1BZ2VudDogSHR0cCBBZ2VudCIpOwogICBwaGwgPSBjdXJsX3NsaXN0X2FwcGVuZChwaGwsICJVc2VyLUFnZW50OiBQcm94eSBBZ2VudCIpOwotICBpZiAoIWhobCB8fCAhcGhsKSB7CisgIGlmKCFoaGwgfHwgIXBobCkgewogICAgIGdvdG8gdGVzdF9jbGVhbnVwOwogICB9CiAgIHRtcCA9IGN1cmxfc2xpc3RfYXBwZW5kKHBobCwgIkV4cGVjdDoiKTsKLSAgaWYgKCF0bXApIHsKKyAgaWYoIXRtcCkgewogICAgIGdvdG8gdGVzdF9jbGVhbnVwOwogICB9CiAgIHBobCA9IHRtcDsKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliMTUyNy5jIGIvdGVzdHMvbGlidGVzdC9saWIxNTI3LmMKaW5kZXggMTEyMmQ4ZS4uZjAwOGNmMSAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWIxNTI3LmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWIxNTI3LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBWaWpheSBQYW5naGFsLCA8dnBhbmdoYWxAbWFnaW5hdGljcy5jb20+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIFZpamF5IFBhbmdoYWwsIDx2cGFuZ2hhbEBtYWdpbmF0aWNzLmNvbT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTM0LDcgKzM0LDcgQEAKIHN0YXRpYyBzaXplX3QgcmVhZF9jYWxsYmFjayh2b2lkICpwdHIsIHNpemVfdCBzaXplLCBzaXplX3Qgbm1lbWIsIHZvaWQgKnN0cmVhbSkKIHsKICAgc2l6ZV90ICBhbW91bnQgPSBubWVtYiAqIHNpemU7IC8qIFRvdGFsIGJ5dGVzIGN1cmwgd2FudHMgKi8KLSAgaWYgKGFtb3VudCA8IHN0cmxlbihkYXRhKSkgeworICBpZihhbW91bnQgPCBzdHJsZW4oZGF0YSkpIHsKICAgICByZXR1cm4gc3RybGVuKGRhdGEpOwogICB9CiAgICh2b2lkKXN0cmVhbTsKQEAgLTYyLDExICs2MiwxMSBAQAogICB9CiAKICAgaGhsID0gY3VybF9zbGlzdF9hcHBlbmQoaGhsLCAiVXNlci1BZ2VudDogSHR0cCBBZ2VudCIpOwotICBpZiAoIWhobCkgeworICBpZighaGhsKSB7CiAgICAgZ290byB0ZXN0X2NsZWFudXA7CiAgIH0KICAgdG1wID0gY3VybF9zbGlzdF9hcHBlbmQoaGhsLCAiRXhwZWN0OiAxMDAtY29udGludWUiKTsKLSAgaWYgKCF0bXApIHsKKyAgaWYoIXRtcCkgewogICAgIGdvdG8gdGVzdF9jbGVhbnVwOwogICB9CiAgIGhobCA9IHRtcDsKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliMTUyOC5jIGIvdGVzdHMvbGlidGVzdC9saWIxNTI4LmMKaW5kZXggOTRhN2NkMC4uMDlhZjQ4MSAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWIxNTI4LmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWIxNTI4LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC00Niw3ICs0Niw3IEBACiAgIGhobCA9IGN1cmxfc2xpc3RfYXBwZW5kKGhobCwgIlVzZXItQWdlbnQ6IEh0dHAgQWdlbnQiKTsKICAgcGhsID0gY3VybF9zbGlzdF9hcHBlbmQocGhsLCAiUHJveHktVXNlci1BZ2VudDogSHR0cCBBZ2VudDIiKTsKIAotICBpZiAoIWhobCkgeworICBpZighaGhsKSB7CiAgICAgZ290byB0ZXN0X2NsZWFudXA7CiAgIH0KIApkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWIxNTI5LmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjE1MjkuYwppbmRleCAzZGVmMTQyLi4zMzMzYWU2IDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYjE1MjkuYworKysgYi90ZXN0cy9saWJ0ZXN0L2xpYjE1MjkuYwpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYjE1MzAuYyBiL3Rlc3RzL2xpYnRlc3QvbGliMTUzMC5jCmluZGV4IDc2MjMxYzkuLmQxY2EzNGMgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliMTUzMC5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliMTUzMC5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliMTUzMS5jIGIvdGVzdHMvbGlidGVzdC9saWIxNTMxLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjIxZDA2NwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliMTUzMS5jCkBAIC0wLDAgKzEsMTQ0IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisgKiAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCisgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqCisgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKyAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICogZnVybmlzaGVkIHRvIGRvIHNvLCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENPUFlJTkcgZmlsZS4KKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisjaW5jbHVkZSAidGVzdC5oIgorCisjaW5jbHVkZSAidGVzdHV0aWwuaCIKKyNpbmNsdWRlICJ3YXJubGVzcy5oIgorI2luY2x1ZGUgIm1lbWRlYnVnLmgiCisKKyNkZWZpbmUgVEVTVF9IQU5HX1RJTUVPVVQgNjAgKiAxMDAwCisKK2NoYXIgY29uc3QgdGVzdERhdGFbXSA9ICIuYWJjXDB4eXoiOworb2ZmX3QgY29uc3QgdGVzdERhdGFTaXplID0gc2l6ZW9mKHRlc3REYXRhKSAtIDE7CisKK2ludCB0ZXN0KGNoYXIgKlVSTCkKK3sKKyAgQ1VSTCAqZWFzeTsKKyAgQ1VSTE0gKm11bHRpX2hhbmRsZTsKKyAgaW50IHN0aWxsX3J1bm5pbmc7IC8qIGtlZXAgbnVtYmVyIG9mIHJ1bm5pbmcgaGFuZGxlcyAqLworICBDVVJMTXNnICptc2c7IC8qIGZvciBwaWNraW5nIHVwIG1lc3NhZ2VzIHdpdGggdGhlIHRyYW5zZmVyIHN0YXR1cyAqLworICBpbnQgbXNnc19sZWZ0OyAvKiBob3cgbWFueSBtZXNzYWdlcyBhcmUgbGVmdCAqLworCisgIC8qIEFsbG9jYXRlIG9uZSBDVVJMIGhhbmRsZSBwZXIgdHJhbnNmZXIgKi8KKyAgZWFzeSA9IGN1cmxfZWFzeV9pbml0KCk7CisKKyAgLyogaW5pdCBhIG11bHRpIHN0YWNrICovCisgIG11bHRpX2hhbmRsZSA9IGN1cmxfbXVsdGlfaW5pdCgpOworCisgIC8qIGFkZCB0aGUgaW5kaXZpZHVhbCB0cmFuc2ZlciAqLworICBjdXJsX211bHRpX2FkZF9oYW5kbGUobXVsdGlfaGFuZGxlLCBlYXN5KTsKKworICAvKiBzZXQgdGhlIG9wdGlvbnMgKEkgbGVmdCBvdXQgYSBmZXcsIHlvdSdsbCBnZXQgdGhlIHBvaW50IGFueXdheSkgKi8KKyAgY3VybF9lYXN5X3NldG9wdChlYXN5LCBDVVJMT1BUX1VSTCwgVVJMKTsKKyAgY3VybF9lYXN5X3NldG9wdChlYXN5LCBDVVJMT1BUX1BPU1RGSUVMRFNJWkVfTEFSR0UsCisgICAgICAgICAgICAgICAgICAgKGN1cmxfb2ZmX3QpdGVzdERhdGFTaXplKTsKKyAgY3VybF9lYXN5X3NldG9wdChlYXN5LCBDVVJMT1BUX1BPU1RGSUVMRFMsIHRlc3REYXRhKTsKKworICAvKiB3ZSBzdGFydCBzb21lIGFjdGlvbiBieSBjYWxsaW5nIHBlcmZvcm0gcmlnaHQgYXdheSAqLworICBjdXJsX211bHRpX3BlcmZvcm0obXVsdGlfaGFuZGxlLCAmc3RpbGxfcnVubmluZyk7CisKKyAgZG8geworICAgIHN0cnVjdCB0aW1ldmFsIHRpbWVvdXQ7CisgICAgaW50IHJjOyAvKiBzZWxlY3QoKSByZXR1cm4gY29kZSAqLworICAgIENVUkxNY29kZSBtYzsgLyogY3VybF9tdWx0aV9mZHNldCgpIHJldHVybiBjb2RlICovCisKKyAgICBmZF9zZXQgZmRyZWFkOworICAgIGZkX3NldCBmZHdyaXRlOworICAgIGZkX3NldCBmZGV4Y2VwOworICAgIGludCBtYXhmZCA9IC0xOworCisgICAgbG9uZyBjdXJsX3RpbWVvID0gLTE7CisKKyAgICBGRF9aRVJPKCZmZHJlYWQpOworICAgIEZEX1pFUk8oJmZkd3JpdGUpOworICAgIEZEX1pFUk8oJmZkZXhjZXApOworCisgICAgLyogc2V0IGEgc3VpdGFibGUgdGltZW91dCB0byBwbGF5IGFyb3VuZCB3aXRoICovCisgICAgdGltZW91dC50dl9zZWMgPSAxOworICAgIHRpbWVvdXQudHZfdXNlYyA9IDA7CisKKyAgICBjdXJsX211bHRpX3RpbWVvdXQobXVsdGlfaGFuZGxlLCAmY3VybF90aW1lbyk7CisgICAgaWYoY3VybF90aW1lbyA+PSAwKSB7CisgICAgICB0aW1lb3V0LnR2X3NlYyA9IGN1cmxfdGltZW8gLyAxMDAwOworICAgICAgaWYodGltZW91dC50dl9zZWMgPiAxKQorICAgICAgICB0aW1lb3V0LnR2X3NlYyA9IDE7CisgICAgICBlbHNlCisgICAgICAgIHRpbWVvdXQudHZfdXNlYyA9IChjdXJsX3RpbWVvICUgMTAwMCkgKiAxMDAwOworICAgIH0KKworICAgIC8qIGdldCBmaWxlIGRlc2NyaXB0b3JzIGZyb20gdGhlIHRyYW5zZmVycyAqLworICAgIG1jID0gY3VybF9tdWx0aV9mZHNldChtdWx0aV9oYW5kbGUsICZmZHJlYWQsICZmZHdyaXRlLCAmZmRleGNlcCwgJm1heGZkKTsKKworICAgIGlmKG1jICE9IENVUkxNX09LKSB7CisgICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfbXVsdGlfZmRzZXQoKSBmYWlsZWQsIGNvZGUgJWQuXG4iLCBtYyk7CisgICAgICBicmVhazsKKyAgICB9CisKKyAgICAvKiBPbiBzdWNjZXNzIHRoZSB2YWx1ZSBvZiBtYXhmZCBpcyBndWFyYW50ZWVkIHRvIGJlID49IC0xLiBXZSBjYWxsCisgICAgICAgc2VsZWN0KG1heGZkICsgMSwgLi4uKTsgc3BlY2lhbGx5IGluIGNhc2Ugb2YgKG1heGZkID09IC0xKSB0aGVyZSBhcmUKKyAgICAgICBubyBmZHMgcmVhZHkgeWV0IHNvIHdlIGNhbGwgc2VsZWN0KDAsIC4uLikgLS1vciBTbGVlcCgpIG9uIFdpbmRvd3MtLQorICAgICAgIHRvIHNsZWVwIDEwMG1zLCB3aGljaCBpcyB0aGUgbWluaW11bSBzdWdnZXN0ZWQgdmFsdWUgaW4gdGhlCisgICAgICAgY3VybF9tdWx0aV9mZHNldCgpIGRvYy4gKi8KKworICAgIGlmKG1heGZkID09IC0xKSB7CisjaWZkZWYgX1dJTjMyCisgICAgICBTbGVlcCgxMDApOworICAgICAgcmMgPSAwOworI2Vsc2UKKyAgICAgIC8qIFBvcnRhYmxlIHNsZWVwIGZvciBwbGF0Zm9ybXMgb3RoZXIgdGhhbiBXaW5kb3dzLiAqLworICAgICAgc3RydWN0IHRpbWV2YWwgd2FpdCA9IHsgMCwgMTAwICogMTAwMCB9OyAvKiAxMDBtcyAqLworICAgICAgcmMgPSBzZWxlY3QoMCwgTlVMTCwgTlVMTCwgTlVMTCwgJndhaXQpOworI2VuZGlmCisgICAgfQorICAgIGVsc2UgeworICAgICAgLyogTm90ZSB0aGF0IG9uIHNvbWUgcGxhdGZvcm1zICd0aW1lb3V0JyBtYXkgYmUgbW9kaWZpZWQgYnkgc2VsZWN0KCkuCisgICAgICAgICBJZiB5b3UgbmVlZCBhY2Nlc3MgdG8gdGhlIG9yaWdpbmFsIHZhbHVlIHNhdmUgYSBjb3B5IGJlZm9yZWhhbmQuICovCisgICAgICByYyA9IHNlbGVjdChtYXhmZCsxLCAmZmRyZWFkLCAmZmR3cml0ZSwgJmZkZXhjZXAsICZ0aW1lb3V0KTsKKyAgICB9CisKKyAgICBzd2l0Y2gocmMpIHsKKyAgICBjYXNlIC0xOgorICAgICAgLyogc2VsZWN0IGVycm9yICovCisgICAgICBicmVhazsKKyAgICBjYXNlIDA6IC8qIHRpbWVvdXQgKi8KKyAgICBkZWZhdWx0OiAvKiBhY3Rpb24gKi8KKyAgICAgIGN1cmxfbXVsdGlfcGVyZm9ybShtdWx0aV9oYW5kbGUsICZzdGlsbF9ydW5uaW5nKTsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgfSB3aGlsZShzdGlsbF9ydW5uaW5nKTsKKworICAvKiBTZWUgaG93IHRoZSB0cmFuc2ZlcnMgd2VudCAqLworICB3aGlsZSgobXNnID0gY3VybF9tdWx0aV9pbmZvX3JlYWQobXVsdGlfaGFuZGxlLCAmbXNnc19sZWZ0KSkpIHsKKyAgICBpZihtc2ctPm1zZyA9PSBDVVJMTVNHX0RPTkUpIHsKKyAgICAgIHByaW50ZigiSFRUUCB0cmFuc2ZlciBjb21wbGV0ZWQgd2l0aCBzdGF0dXMgJWRcbiIsIG1zZy0+ZGF0YS5yZXN1bHQpOworICAgICAgYnJlYWs7CisgICAgfQorICB9CisKKyAgY3VybF9tdWx0aV9jbGVhbnVwKG11bHRpX2hhbmRsZSk7CisKKyAgLyogRnJlZSB0aGUgQ1VSTCBoYW5kbGVzICovCisgIGN1cmxfZWFzeV9jbGVhbnVwKGVhc3kpOworCisgIHJldHVybiAwOworfQorCmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYjE5MDAuYyBiL3Rlc3RzL2xpYnRlc3QvbGliMTkwMC5jCmluZGV4IDJmNjQ3NDIuLjQ1MDJmYzAgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliMTkwMC5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliMTkwMC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCBMaW51cyBOaWVsc2VuIEZlbHR6aW5nLCA8bGludXNAaGF4eC5zZT4KKyAqIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTYsIExpbnVzIE5pZWxzZW4gRmVsdHppbmcsIDxsaW51c0BoYXh4LnNlPgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTExMyw3ICsxMTMsNyBAQAogewogICBjaGFyIHVybGJ1ZlsyNTZdOwogCi0gIHNwcmludGYodXJsYnVmLCAiJXMlcyIsIGJhc2VfdXJsLCB1cmxzdHJpbmdbaGFuZGxlbnVtXSk7CisgIHNucHJpbnRmKHVybGJ1Ziwgc2l6ZW9mKHVybGJ1ZiksICIlcyVzIiwgYmFzZV91cmwsIHVybHN0cmluZ1toYW5kbGVudW1dKTsKICAgY3VybF9lYXN5X3NldG9wdChoYW5kbGVzW2hhbmRsZW51bV0sIENVUkxPUFRfVVJMLCB1cmxidWYpOwogICBjdXJsX2Vhc3lfc2V0b3B0KGhhbmRsZXNbaGFuZGxlbnVtXSwgQ1VSTE9QVF9WRVJCT1NFLCAxTCk7CiAgIGN1cmxfZWFzeV9zZXRvcHQoaGFuZGxlc1toYW5kbGVudW1dLCBDVVJMT1BUX0ZBSUxPTkVSUk9SLCAxTCk7CkBAIC0xOTIsMTIgKzE5MiwxMiBAQAogICAgIGFib3J0X29uX3Rlc3RfdGltZW91dCgpOwogCiAgICAgLyogU2VlIGhvdyB0aGUgdHJhbnNmZXJzIHdlbnQgKi8KLSAgICB3aGlsZSAoKG1zZyA9IGN1cmxfbXVsdGlfaW5mb19yZWFkKG0sICZtc2dzX2xlZnQpKSkgewotICAgICAgaWYgKG1zZy0+bXNnID09IENVUkxNU0dfRE9ORSkgeworICAgIHdoaWxlKChtc2cgPSBjdXJsX211bHRpX2luZm9fcmVhZChtLCAmbXNnc19sZWZ0KSkpIHsKKyAgICAgIGlmKG1zZy0+bXNnID09IENVUkxNU0dfRE9ORSkgewogICAgICAgICBpbnQgaSwgZm91bmQgPSAwOwogCiAgICAgICAgIC8qIEZpbmQgb3V0IHdoaWNoIGhhbmRsZSB0aGlzIG1lc3NhZ2UgaXMgYWJvdXQgKi8KLSAgICAgICAgZm9yIChpID0gMDsgaSA8IG51bV9oYW5kbGVzOyBpKyspIHsKKyAgICAgICAgZm9yKGkgPSAwOyBpIDwgbnVtX2hhbmRsZXM7IGkrKykgewogICAgICAgICAgIGZvdW5kID0gKG1zZy0+ZWFzeV9oYW5kbGUgPT0gaGFuZGxlc1tpXSk7CiAgICAgICAgICAgaWYoZm91bmQpCiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliNTAwLmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjUwMC5jCmluZGV4IDRkNjIyMDguLjQzYjA1OTggMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliNTAwLmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWI1MDAuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTIsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTYzLDEyICs2MywxMiBAQAogICBDVVJMICpjdXJsOwogICBjaGFyICppcHN0cj1OVUxMOwogCi0gIGlmIChjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKKyAgaWYoY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpICE9IENVUkxFX09LKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2dsb2JhbF9pbml0KCkgZmFpbGVkXG4iKTsKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwogICB9CiAKLSAgaWYgKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgeworICBpZigoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZWFzeV9pbml0KCkgZmFpbGVkXG4iKTsKICAgICBjdXJsX2dsb2JhbF9jbGVhbnVwKCk7CiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKQEAgLTkyLDQyICs5Miw0MiBAQAogCiAgIGlmKCFyZXMpIHsKICAgICByZXMgPSBjdXJsX2Vhc3lfZ2V0aW5mbyhjdXJsLCBDVVJMSU5GT19QUklNQVJZX0lQLCAmaXBzdHIpOwotICAgIGlmIChsaWJ0ZXN0X2FyZzIpIHsKKyAgICBpZihsaWJ0ZXN0X2FyZzIpIHsKICAgICAgIEZJTEUgKm1vbyA9IGZvcGVuKGxpYnRlc3RfYXJnMiwgIndiIik7CiAgICAgICBpZihtb28pIHsKLQlkb3VibGUgdGltZV9uYW1lbG9va3VwOwotCWRvdWJsZSB0aW1lX2Nvbm5lY3Q7Ci0JZG91YmxlIHRpbWVfcHJldHJhbnNmZXI7Ci0JZG91YmxlIHRpbWVfc3RhcnR0cmFuc2ZlcjsKLQlkb3VibGUgdGltZV90b3RhbDsKLQlmcHJpbnRmKG1vbywgIklQOiAlc1xuIiwgaXBzdHIpOwotCWN1cmxfZWFzeV9nZXRpbmZvKGN1cmwsIENVUkxJTkZPX05BTUVMT09LVVBfVElNRSwgJnRpbWVfbmFtZWxvb2t1cCk7Ci0JY3VybF9lYXN5X2dldGluZm8oY3VybCwgQ1VSTElORk9fQ09OTkVDVF9USU1FLCAmdGltZV9jb25uZWN0KTsKLQljdXJsX2Vhc3lfZ2V0aW5mbyhjdXJsLCBDVVJMSU5GT19QUkVUUkFOU0ZFUl9USU1FLCAmdGltZV9wcmV0cmFuc2Zlcik7Ci0JY3VybF9lYXN5X2dldGluZm8oY3VybCwgQ1VSTElORk9fU1RBUlRUUkFOU0ZFUl9USU1FLAotCQkJICAmdGltZV9zdGFydHRyYW5zZmVyKTsKLQljdXJsX2Vhc3lfZ2V0aW5mbyhjdXJsLCBDVVJMSU5GT19UT1RBTF9USU1FLCAmdGltZV90b3RhbCk7CisgICAgICAgIGRvdWJsZSB0aW1lX25hbWVsb29rdXA7CisgICAgICAgIGRvdWJsZSB0aW1lX2Nvbm5lY3Q7CisgICAgICAgIGRvdWJsZSB0aW1lX3ByZXRyYW5zZmVyOworICAgICAgICBkb3VibGUgdGltZV9zdGFydHRyYW5zZmVyOworICAgICAgICBkb3VibGUgdGltZV90b3RhbDsKKyAgICAgICAgZnByaW50Zihtb28sICJJUDogJXNcbiIsIGlwc3RyKTsKKyAgICAgICAgY3VybF9lYXN5X2dldGluZm8oY3VybCwgQ1VSTElORk9fTkFNRUxPT0tVUF9USU1FLCAmdGltZV9uYW1lbG9va3VwKTsKKyAgICAgICAgY3VybF9lYXN5X2dldGluZm8oY3VybCwgQ1VSTElORk9fQ09OTkVDVF9USU1FLCAmdGltZV9jb25uZWN0KTsKKyAgICAgICAgY3VybF9lYXN5X2dldGluZm8oY3VybCwgQ1VSTElORk9fUFJFVFJBTlNGRVJfVElNRSwgJnRpbWVfcHJldHJhbnNmZXIpOworICAgICAgICBjdXJsX2Vhc3lfZ2V0aW5mbyhjdXJsLCBDVVJMSU5GT19TVEFSVFRSQU5TRkVSX1RJTUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZ0aW1lX3N0YXJ0dHJhbnNmZXIpOworICAgICAgICBjdXJsX2Vhc3lfZ2V0aW5mbyhjdXJsLCBDVVJMSU5GT19UT1RBTF9USU1FLCAmdGltZV90b3RhbCk7CiAKLQkvKiBzaW5jZSB0aGUgdGltaW5nIHdpbGwgYWx3YXlzIHZhcnkgd2Ugb25seSBjb21wYXJlIHJlbGF0aXZlIGRpZmZlcmVuY2VzCi0JICAgYmV0d2VlbiB0aGVzZSA1IHRpbWVzICovCi0JaWYodGltZV9uYW1lbG9va3VwID4gdGltZV9jb25uZWN0KSB7Ci0JICBmcHJpbnRmKG1vbywgIm5hbWVsb29rdXAgdnMgY29ubmVjdDogJWYgJWZcbiIsCi0JCSAgdGltZV9uYW1lbG9va3VwLCB0aW1lX2Nvbm5lY3QpOwotCX0KLQlpZih0aW1lX2Nvbm5lY3QgPiB0aW1lX3ByZXRyYW5zZmVyKSB7Ci0JICBmcHJpbnRmKG1vbywgImNvbm5lY3QgdnMgcHJldHJhbnNmZXI6ICVmICVmXG4iLAotCQkgIHRpbWVfY29ubmVjdCwgdGltZV9wcmV0cmFuc2Zlcik7Ci0JfQotCWlmKHRpbWVfcHJldHJhbnNmZXIgPiB0aW1lX3N0YXJ0dHJhbnNmZXIpIHsKLQkgIGZwcmludGYobW9vLCAicHJldHJhbnNmZXIgdnMgc3RhcnR0cmFuc2ZlcjogJWYgJWZcbiIsCi0JCSAgdGltZV9wcmV0cmFuc2ZlciwgdGltZV9zdGFydHRyYW5zZmVyKTsKLQl9Ci0JaWYodGltZV9zdGFydHRyYW5zZmVyID4gdGltZV90b3RhbCkgewotCSAgZnByaW50Zihtb28sICJzdGFydHRyYW5zZmVyIHZzIHRvdGFsOiAlZiAlZlxuIiwKLQkJICB0aW1lX3N0YXJ0dHJhbnNmZXIsIHRpbWVfdG90YWwpOwotCX0KKyAgICAgICAgLyogc2luY2UgdGhlIHRpbWluZyB3aWxsIGFsd2F5cyB2YXJ5IHdlIG9ubHkgY29tcGFyZSByZWxhdGl2ZQorICAgICAgICAgICBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZXNlIDUgdGltZXMgKi8KKyAgICAgICAgaWYodGltZV9uYW1lbG9va3VwID4gdGltZV9jb25uZWN0KSB7CisgICAgICAgICAgZnByaW50Zihtb28sICJuYW1lbG9va3VwIHZzIGNvbm5lY3Q6ICVmICVmXG4iLAorICAgICAgICAgICAgICAgICAgdGltZV9uYW1lbG9va3VwLCB0aW1lX2Nvbm5lY3QpOworICAgICAgICB9CisgICAgICAgIGlmKHRpbWVfY29ubmVjdCA+IHRpbWVfcHJldHJhbnNmZXIpIHsKKyAgICAgICAgICBmcHJpbnRmKG1vbywgImNvbm5lY3QgdnMgcHJldHJhbnNmZXI6ICVmICVmXG4iLAorICAgICAgICAgICAgICAgICAgdGltZV9jb25uZWN0LCB0aW1lX3ByZXRyYW5zZmVyKTsKKyAgICAgICAgfQorICAgICAgICBpZih0aW1lX3ByZXRyYW5zZmVyID4gdGltZV9zdGFydHRyYW5zZmVyKSB7CisgICAgICAgICAgZnByaW50Zihtb28sICJwcmV0cmFuc2ZlciB2cyBzdGFydHRyYW5zZmVyOiAlZiAlZlxuIiwKKyAgICAgICAgICAgICAgICAgIHRpbWVfcHJldHJhbnNmZXIsIHRpbWVfc3RhcnR0cmFuc2Zlcik7CisgICAgICAgIH0KKyAgICAgICAgaWYodGltZV9zdGFydHRyYW5zZmVyID4gdGltZV90b3RhbCkgeworICAgICAgICAgIGZwcmludGYobW9vLCAic3RhcnR0cmFuc2ZlciB2cyB0b3RhbDogJWYgJWZcbiIsCisgICAgICAgICAgICAgICAgICB0aW1lX3N0YXJ0dHJhbnNmZXIsIHRpbWVfdG90YWwpOworICAgICAgICB9CiAKLQlmY2xvc2UobW9vKTsKKyAgICAgICAgZmNsb3NlKG1vbyk7CiAgICAgICB9CiAgICAgfQogICB9CmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYjUwMS5jIGIvdGVzdHMvbGlidGVzdC9saWI1MDEuYwppbmRleCAyNjI3NWY5Li4yYTEwNWYwIDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYjUwMS5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliNTAxLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDExLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zMCwxMiArMzAsMTIgQEAKIAogICAodm9pZClVUkw7IC8qIHdlIGRvbid0IHVzZSB0aGlzICovCiAKLSAgaWYgKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgeworICBpZihjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZ2xvYmFsX2luaXQoKSBmYWlsZWRcbiIpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CiAgIH0KIAotICBpZiAoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CisgIGlmKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9lYXN5X2luaXQoKSBmYWlsZWRcbiIpOwogICAgIGN1cmxfZ2xvYmFsX2NsZWFudXAoKTsKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWI1MDIuYyBiL3Rlc3RzL2xpYnRlc3QvbGliNTAyLmMKaW5kZXggNTU0NTgzYS4uN2NmNjQxNSAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWI1MDIuYworKysgYi90ZXN0cy9saWJ0ZXN0L2xpYjUwMi5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliNTAzLmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjUwMy5jCmluZGV4IDUwMjc3ZjcuLjJlYjI4NzQgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliNTAzLmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWI1MDMuYwpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYjUwNC5jIGIvdGVzdHMvbGlidGVzdC9saWI1MDQuYwppbmRleCAzNThmYzk4Li4zNDY2ZGM5IDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYjUwNC5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliNTA0LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDExLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC01MCw3ICs1MCw3IEBACiAKICAgLyogVGhlIHBvaW50IGhlcmUgaXMgdGhhdCB0aGVyZSBtdXN0IG5vdCBiZSBhbnl0aGluZyBydW5uaW5nIG9uIHRoZSBnaXZlbgogICAgICBwcm94eSBwb3J0ICovCi0gIGlmIChsaWJ0ZXN0X2FyZzIpCisgIGlmKGxpYnRlc3RfYXJnMikKICAgICBlYXN5X3NldG9wdChjLCBDVVJMT1BUX1BST1hZLCBsaWJ0ZXN0X2FyZzIpOwogICBlYXN5X3NldG9wdChjLCBDVVJMT1BUX1VSTCwgVVJMKTsKICAgZWFzeV9zZXRvcHQoYywgQ1VSTE9QVF9WRVJCT1NFLCAxTCk7CmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYjUwNS5jIGIvdGVzdHMvbGlidGVzdC9saWI1MDUuYwppbmRleCA5NTkyZTBmLi4xMjdmZGU3IDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYjUwNS5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliNTA1LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDEyLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zOCw4ICszOCw4IEBACiB7CiAgIENVUkwgKmN1cmw7CiAgIENVUkxjb2RlIHJlcyA9IENVUkxFX09LOwotICBGSUxFICpoZF9zcmMgOwotICBpbnQgaGQgOworICBGSUxFICpoZF9zcmM7CisgIGludCBoZDsKICAgc3RydWN0X3N0YXQgZmlsZV9pbmZvOwogICBzdHJ1Y3QgY3VybF9zbGlzdCAqaGw7CiAgIGludCBlcnJvcjsKQEAgLTQ4LDcgKzQ4LDcgQEAKICAgY29uc3QgY2hhciAqYnVmXzEgPSAiUk5GUiA1MDUiOwogICBjb25zdCBjaGFyICpidWZfMiA9ICJSTlRPIDUwNS1mb3JyZWFsIjsKIAotICBpZiAoIWxpYnRlc3RfYXJnMikgeworICBpZighbGlidGVzdF9hcmcyKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJVc2FnZTogPHVybD4gPGZpbGUtdG8tdXBsb2FkPlxuIik7CiAgICAgcmV0dXJuIFRFU1RfRVJSX1VTQUdFOwogICB9CkBAIC01Niw3ICs1Niw3IEBACiAgIGhkX3NyYyA9IGZvcGVuKGxpYnRlc3RfYXJnMiwgInJiIik7CiAgIGlmKE5VTEwgPT0gaGRfc3JjKSB7CiAgICAgZXJyb3IgPSBFUlJOTzsKLSAgICBmcHJpbnRmKHN0ZGVyciwgImZvcGVuKCkgZmFpbGVkIHdpdGggZXJyb3I6ICVkICVzXG4iLAorICAgIGZwcmludGYoc3RkZXJyLCAiZm9wZW4gZmFpbGVkIHdpdGggZXJyb3I6ICVkICVzXG4iLAogICAgICAgICAgICAgZXJyb3IsIHN0cmVycm9yKGVycm9yKSk7CiAgICAgZnByaW50ZihzdGRlcnIsICJFcnJvciBvcGVuaW5nIGZpbGU6ICVzXG4iLCBsaWJ0ZXN0X2FyZzIpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7IC8qIGlmIHRoaXMgaGFwcGVucyB0aGluZ3MgYXJlIG1ham9yIHdlaXJkICovCkBAIC04MCwxNCArODAsMTUgQEAKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwogICB9CiAKLSAgaWYgKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgeworICBpZihjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZ2xvYmFsX2luaXQoKSBmYWlsZWRcbiIpOwogICAgIGZjbG9zZShoZF9zcmMpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CiAgIH0KIAogICAvKiBnZXQgYSBjdXJsIGhhbmRsZSAqLwotICBpZiAoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CisgIGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpOworICBpZighY3VybCkgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9lYXN5X2luaXQoKSBmYWlsZWRcbiIpOwogICAgIGN1cmxfZ2xvYmFsX2NsZWFudXAoKTsKICAgICBmY2xvc2UoaGRfc3JjKTsKQEAgLTk2LDE0ICs5NywxNiBAQAogCiAgIC8qIGJ1aWxkIGEgbGlzdCBvZiBjb21tYW5kcyB0byBwYXNzIHRvIGxpYmN1cmwgKi8KIAotICBpZiAoKGhsID0gY3VybF9zbGlzdF9hcHBlbmQoaGVhZGVybGlzdCwgYnVmXzEpKSA9PSBOVUxMKSB7CisgIGhsID0gY3VybF9zbGlzdF9hcHBlbmQoaGVhZGVybGlzdCwgYnVmXzEpOworICBpZighaGwpIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfc2xpc3RfYXBwZW5kKCkgZmFpbGVkXG4iKTsKICAgICBjdXJsX2Vhc3lfY2xlYW51cChjdXJsKTsKICAgICBjdXJsX2dsb2JhbF9jbGVhbnVwKCk7CiAgICAgZmNsb3NlKGhkX3NyYyk7CiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKICAgfQotICBpZiAoKGhlYWRlcmxpc3QgPSBjdXJsX3NsaXN0X2FwcGVuZChobCwgYnVmXzIpKSA9PSBOVUxMKSB7CisgIGhlYWRlcmxpc3QgPSBjdXJsX3NsaXN0X2FwcGVuZChobCwgYnVmXzIpOworICBpZighaGVhZGVybGlzdCkgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9zbGlzdF9hcHBlbmQoKSBmYWlsZWRcbiIpOwogICAgIGN1cmxfc2xpc3RfZnJlZV9hbGwoaGwpOwogICAgIGN1cmxfZWFzeV9jbGVhbnVwKGN1cmwpOwpAQCAtMTIwLDcgKzEyMyw3IEBACiAgIHRlc3Rfc2V0b3B0KGN1cmwsIENVUkxPUFRfVkVSQk9TRSwgMUwpOwogCiAgIC8qIHNwZWNpZnkgdGFyZ2V0ICovCi0gIHRlc3Rfc2V0b3B0KGN1cmwsQ1VSTE9QVF9VUkwsIFVSTCk7CisgIHRlc3Rfc2V0b3B0KGN1cmwsIENVUkxPUFRfVVJMLCBVUkwpOwogCiAgIC8qIHBhc3MgaW4gdGhhdCBsYXN0IG9mIEZUUCBjb21tYW5kcyB0byBydW4gYWZ0ZXIgdGhlIHRyYW5zZmVyICovCiAgIHRlc3Rfc2V0b3B0KGN1cmwsIENVUkxPUFRfUE9TVFFVT1RFLCBoZWFkZXJsaXN0KTsKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliNTA2LmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjUwNi5jCmluZGV4IDZkY2MzNmQuLjhkZTMwYzIgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliNTA2LmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWI1MDYuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTQwLDggKzQwLDggQEAKIGludCBsb2NrWzNdOwogCiAvKiBsb2NrIGNhbGxiYWNrICovCi1zdGF0aWMgdm9pZCBteV9sb2NrKENVUkwgKmhhbmRsZSwgY3VybF9sb2NrX2RhdGEgZGF0YSwgY3VybF9sb2NrX2FjY2VzcyBsYWNjZXNzLAotICAgICAgICAgIHZvaWQgKnVzZXB0ciApCitzdGF0aWMgdm9pZCBteV9sb2NrKENVUkwgKmhhbmRsZSwgY3VybF9sb2NrX2RhdGEgZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgY3VybF9sb2NrX2FjY2VzcyBsYWNjZXNzLCB2b2lkICp1c2VwdHIpCiB7CiAgIGNvbnN0IGNoYXIgKndoYXQ7CiAgIHN0cnVjdCB1c2VyZGF0YSAqdXNlciA9IChzdHJ1Y3QgdXNlcmRhdGEgKil1c2VwdHI7CkBAIC01MCw3ICs1MCw3IEBACiAgICh2b2lkKWhhbmRsZTsKICAgKHZvaWQpbGFjY2VzczsKIAotICBzd2l0Y2ggKCBkYXRhICkgeworICBzd2l0Y2ggKGRhdGEpIHsKICAgICBjYXNlIENVUkxfTE9DS19EQVRBX1NIQVJFOgogICAgICAgd2hhdCA9ICJzaGFyZSI7CiAgICAgICBsb2NrbnVtID0gMDsKQEAgLTgwLDEzICs4MCwxMyBAQAogfQogCiAvKiB1bmxvY2sgY2FsbGJhY2sgKi8KLXN0YXRpYyB2b2lkIG15X3VubG9jayhDVVJMICpoYW5kbGUsIGN1cmxfbG9ja19kYXRhIGRhdGEsIHZvaWQgKnVzZXB0ciApCitzdGF0aWMgdm9pZCBteV91bmxvY2soQ1VSTCAqaGFuZGxlLCBjdXJsX2xvY2tfZGF0YSBkYXRhLCB2b2lkICp1c2VwdHIpCiB7CiAgIGNvbnN0IGNoYXIgKndoYXQ7CiAgIHN0cnVjdCB1c2VyZGF0YSAqdXNlciA9IChzdHJ1Y3QgdXNlcmRhdGEgKil1c2VwdHI7CiAgIGludCBsb2NrbnVtOwogICAodm9pZCloYW5kbGU7Ci0gIHN3aXRjaCAoIGRhdGEgKSB7CisgIHN3aXRjaCAoZGF0YSkgewogICAgIGNhc2UgQ1VSTF9MT0NLX0RBVEFfU0hBUkU6CiAgICAgICB3aGF0ID0gInNoYXJlIjsKICAgICAgIGxvY2tudW0gPSAwOwpAQCAtMTIwLDcgKzEyMCw3IEBACiBzdGF0aWMgc3RydWN0IGN1cmxfc2xpc3QgKnNldGhvc3Qoc3RydWN0IGN1cmxfc2xpc3QgKmhlYWRlcnMpCiB7CiAgICh2b2lkKWhlYWRlcnM7Ci0gIHJldHVybiBjdXJsX3NsaXN0X2FwcGVuZChOVUxMLCBIT1NUSEVBREVSICk7CisgIHJldHVybiBjdXJsX3NsaXN0X2FwcGVuZChOVUxMLCBIT1NUSEVBREVSKTsKIH0KIAogCkBAIC0xMzMsNyArMTMzLDggQEAKICAgQ1VSTCAqY3VybDsKICAgaW50IGk9MDsKIAotICBpZiAoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CisgIGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpOworICBpZighY3VybCkgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9lYXN5X2luaXQoKSBmYWlsZWRcbiIpOwogICAgIHJldHVybiBOVUxMOwogICB9CkBAIC0xNDIsMTcgKzE0MywxNyBAQAogICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfVkVSQk9TRSwgICAgMUwpOwogICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfSFRUUEhFQURFUiwgaGVhZGVycyk7CiAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9VUkwsICAgICAgICB0ZGF0YS0+dXJsKTsKLSAgcHJpbnRmKCAiQ1VSTE9QVF9TSEFSRVxuIiApOworICBwcmludGYoIkNVUkxPUFRfU0hBUkVcbiIpOwogICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfU0hBUkUsIHRkYXRhLT5zaGFyZSk7CiAKLSAgcHJpbnRmKCAiUEVSRk9STVxuIiApOworICBwcmludGYoIlBFUkZPUk1cbiIpOwogICBjb2RlID0gY3VybF9lYXN5X3BlcmZvcm0oY3VybCk7Ci0gIGlmKCBjb2RlICE9IENVUkxFX09LICkgeworICBpZihjb2RlKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJwZXJmb3JtIHVybCAnJXMnIHJlcGVhdCAlZCBmYWlsZWQsIGN1cmxjb2RlICVkXG4iLAogICAgICAgICAgICAgdGRhdGEtPnVybCwgaSwgKGludCljb2RlKTsKICAgfQogCi0gIHByaW50ZiggIkNMRUFOVVBcbiIgKTsKKyAgcHJpbnRmKCJDTEVBTlVQXG4iKTsKICAgY3VybF9lYXN5X2NsZWFudXAoY3VybCk7CiAgIGN1cmxfc2xpc3RfZnJlZV9hbGwoaGVhZGVycyk7CiAKQEAgLTE4Niw0MiArMTg3LDQyIEBACiAgIHVzZXIudGV4dCA9IChjaGFyICopIlBpZ3MgaW4gc3BhY2UiOwogICB1c2VyLmNvdW50ZXIgPSAwOwogCi0gIHByaW50ZiggIkdMT0JBTF9JTklUXG4iICk7Ci0gIGlmIChjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKKyAgcHJpbnRmKCJHTE9CQUxfSU5JVFxuIik7CisgIGlmKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9nbG9iYWxfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKICAgfQogCiAgIC8qIHByZXBhcmUgc2hhcmUgKi8KLSAgcHJpbnRmKCAiU0hBUkVfSU5JVFxuIiApOwotICBpZiAoKHNoYXJlID0gY3VybF9zaGFyZV9pbml0KCkpID09IE5VTEwpIHsKKyAgcHJpbnRmKCJTSEFSRV9JTklUXG4iKTsKKyAgaWYoKHNoYXJlID0gY3VybF9zaGFyZV9pbml0KCkpID09IE5VTEwpIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfc2hhcmVfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgY3VybF9nbG9iYWxfY2xlYW51cCgpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CiAgIH0KIAotICBpZiAoIENVUkxTSEVfT0sgPT0gc2NvZGUgKSB7Ci0gICAgcHJpbnRmKCAiQ1VSTFNIT1BUX0xPQ0tGVU5DXG4iICk7Ci0gICAgc2NvZGUgPSBjdXJsX3NoYXJlX3NldG9wdCggc2hhcmUsIENVUkxTSE9QVF9MT0NLRlVOQywgbXlfbG9jayk7CisgIGlmKENVUkxTSEVfT0sgPT0gc2NvZGUpIHsKKyAgICBwcmludGYoIkNVUkxTSE9QVF9MT0NLRlVOQ1xuIik7CisgICAgc2NvZGUgPSBjdXJsX3NoYXJlX3NldG9wdChzaGFyZSwgQ1VSTFNIT1BUX0xPQ0tGVU5DLCBteV9sb2NrKTsKICAgfQotICBpZiAoIENVUkxTSEVfT0sgPT0gc2NvZGUgKSB7Ci0gICAgcHJpbnRmKCAiQ1VSTFNIT1BUX1VOTE9DS0ZVTkNcbiIgKTsKLSAgICBzY29kZSA9IGN1cmxfc2hhcmVfc2V0b3B0KCBzaGFyZSwgQ1VSTFNIT1BUX1VOTE9DS0ZVTkMsIG15X3VubG9jayk7CisgIGlmKENVUkxTSEVfT0sgPT0gc2NvZGUpIHsKKyAgICBwcmludGYoIkNVUkxTSE9QVF9VTkxPQ0tGVU5DXG4iKTsKKyAgICBzY29kZSA9IGN1cmxfc2hhcmVfc2V0b3B0KHNoYXJlLCBDVVJMU0hPUFRfVU5MT0NLRlVOQywgbXlfdW5sb2NrKTsKICAgfQotICBpZiAoIENVUkxTSEVfT0sgPT0gc2NvZGUgKSB7Ci0gICAgcHJpbnRmKCAiQ1VSTFNIT1BUX1VTRVJEQVRBXG4iICk7Ci0gICAgc2NvZGUgPSBjdXJsX3NoYXJlX3NldG9wdCggc2hhcmUsIENVUkxTSE9QVF9VU0VSREFUQSwgJnVzZXIpOworICBpZihDVVJMU0hFX09LID09IHNjb2RlKSB7CisgICAgcHJpbnRmKCJDVVJMU0hPUFRfVVNFUkRBVEFcbiIpOworICAgIHNjb2RlID0gY3VybF9zaGFyZV9zZXRvcHQoc2hhcmUsIENVUkxTSE9QVF9VU0VSREFUQSwgJnVzZXIpOwogICB9Ci0gIGlmICggQ1VSTFNIRV9PSyA9PSBzY29kZSApIHsKLSAgICBwcmludGYoICJDVVJMX0xPQ0tfREFUQV9DT09LSUVcbiIgKTsKLSAgICBzY29kZSA9IGN1cmxfc2hhcmVfc2V0b3B0KCBzaGFyZSwgQ1VSTFNIT1BUX1NIQVJFLCBDVVJMX0xPQ0tfREFUQV9DT09LSUUpOworICBpZihDVVJMU0hFX09LID09IHNjb2RlKSB7CisgICAgcHJpbnRmKCJDVVJMX0xPQ0tfREFUQV9DT09LSUVcbiIpOworICAgIHNjb2RlID0gY3VybF9zaGFyZV9zZXRvcHQoc2hhcmUsIENVUkxTSE9QVF9TSEFSRSwgQ1VSTF9MT0NLX0RBVEFfQ09PS0lFKTsKICAgfQotICBpZiAoIENVUkxTSEVfT0sgPT0gc2NvZGUgKSB7Ci0gICAgcHJpbnRmKCAiQ1VSTF9MT0NLX0RBVEFfRE5TXG4iICk7Ci0gICAgc2NvZGUgPSBjdXJsX3NoYXJlX3NldG9wdCggc2hhcmUsIENVUkxTSE9QVF9TSEFSRSwgQ1VSTF9MT0NLX0RBVEFfRE5TKTsKKyAgaWYoQ1VSTFNIRV9PSyA9PSBzY29kZSkgeworICAgIHByaW50ZigiQ1VSTF9MT0NLX0RBVEFfRE5TXG4iKTsKKyAgICBzY29kZSA9IGN1cmxfc2hhcmVfc2V0b3B0KHNoYXJlLCBDVVJMU0hPUFRfU0hBUkUsIENVUkxfTE9DS19EQVRBX0ROUyk7CiAgIH0KIAotICBpZiAoIENVUkxTSEVfT0sgIT0gc2NvZGUgKSB7CisgIGlmKENVUkxTSEVfT0sgIT0gc2NvZGUpIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfc2hhcmVfc2V0b3B0KCkgZmFpbGVkXG4iKTsKICAgICBjdXJsX3NoYXJlX2NsZWFudXAoc2hhcmUpOwogICAgIGN1cmxfZ2xvYmFsX2NsZWFudXAoKTsKQEAgLTIyOSwxNDkgKzIzMCwxNDUgQEAKICAgfQogCiAgIC8qIGluaXRpYWwgY29va2llIG1hbmlwdWxhdGlvbiAqLwotICBpZiAoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CisgIGlmKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9lYXN5X2luaXQoKSBmYWlsZWRcbiIpOwogICAgIGN1cmxfc2hhcmVfY2xlYW51cChzaGFyZSk7CiAgICAgY3VybF9nbG9iYWxfY2xlYW51cCgpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CiAgIH0KLSAgcHJpbnRmKCAiQ1VSTE9QVF9TSEFSRVxuIiApOwotICB0ZXN0X3NldG9wdCggY3VybCwgQ1VSTE9QVF9TSEFSRSwgICAgICBzaGFyZSApOwotICBwcmludGYoICJDVVJMT1BUX0NPT0tJRUxJU1QgaW5qZWN0ZWRfYW5kX2Nsb2JiZXJlZFxuIiApOwotICB0ZXN0X3NldG9wdCggY3VybCwgQ1VSTE9QVF9DT09LSUVMSVNULAorICBwcmludGYoIkNVUkxPUFRfU0hBUkVcbiIpOworICB0ZXN0X3NldG9wdChjdXJsLCBDVVJMT1BUX1NIQVJFLCAgICAgIHNoYXJlKTsKKyAgcHJpbnRmKCJDVVJMT1BUX0NPT0tJRUxJU1QgaW5qZWN0ZWRfYW5kX2Nsb2JiZXJlZFxuIik7CisgIHRlc3Rfc2V0b3B0KGN1cmwsIENVUkxPUFRfQ09PS0lFTElTVCwKICAgICAgICAgICAgICAgICJTZXQtQ29va2llOiBpbmplY3RlZF9hbmRfY2xvYmJlcmVkPXllczsgIgotICAgICAgICAgICAgICAgImRvbWFpbj1ob3N0LmZvby5jb207IGV4cGlyZXM9U2F0IEZlYiAyIDExOjU2OjI3IEdNVCAyMDMwIiApOwotICBwcmludGYoICJDVVJMT1BUX0NPT0tJRUxJU1QgQUxMXG4iICk7Ci0gIHRlc3Rfc2V0b3B0KCBjdXJsLCBDVVJMT1BUX0NPT0tJRUxJU1QsICJBTEwiICk7Ci0gIHByaW50ZiggIkNVUkxPUFRfQ09PS0lFTElTVCBzZXNzaW9uXG4iICk7Ci0gIHRlc3Rfc2V0b3B0KCBjdXJsLCBDVVJMT1BUX0NPT0tJRUxJU1QsICJTZXQtQ29va2llOiBzZXNzaW9uPWVsZXBoYW50cyIgKTsKLSAgcHJpbnRmKCAiQ1VSTE9QVF9DT09LSUVMSVNUIGluamVjdGVkXG4iICk7Ci0gIHRlc3Rfc2V0b3B0KCBjdXJsLCBDVVJMT1BUX0NPT0tJRUxJU1QsCisgICAgICAgICAgICAgICAiZG9tYWluPWhvc3QuZm9vLmNvbTsgZXhwaXJlcz1TYXQgRmViIDIgMTE6NTY6MjcgR01UIDIwMzAiKTsKKyAgcHJpbnRmKCJDVVJMT1BUX0NPT0tJRUxJU1QgQUxMXG4iKTsKKyAgdGVzdF9zZXRvcHQoY3VybCwgQ1VSTE9QVF9DT09LSUVMSVNULCAiQUxMIik7CisgIHByaW50ZigiQ1VSTE9QVF9DT09LSUVMSVNUIHNlc3Npb25cbiIpOworICB0ZXN0X3NldG9wdChjdXJsLCBDVVJMT1BUX0NPT0tJRUxJU1QsICJTZXQtQ29va2llOiBzZXNzaW9uPWVsZXBoYW50cyIpOworICBwcmludGYoIkNVUkxPUFRfQ09PS0lFTElTVCBpbmplY3RlZFxuIik7CisgIHRlc3Rfc2V0b3B0KGN1cmwsIENVUkxPUFRfQ09PS0lFTElTVCwKICAgICAgICAgICAgICAgICJTZXQtQ29va2llOiBpbmplY3RlZD15ZXM7IGRvbWFpbj1ob3N0LmZvby5jb207ICIKLSAgICAgICAgICAgICAgICJleHBpcmVzPVNhdCBGZWIgMiAxMTo1NjoyNyBHTVQgMjAzMCIgKTsKLSAgcHJpbnRmKCAiQ1VSTE9QVF9DT09LSUVMSVNUIFNFU1NcbiIgKTsKLSAgdGVzdF9zZXRvcHQoIGN1cmwsIENVUkxPUFRfQ09PS0lFTElTVCwgIlNFU1MiICk7Ci0gIHByaW50ZiggIkNMRUFOVVBcbiIgKTsKLSAgY3VybF9lYXN5X2NsZWFudXAoIGN1cmwgKTsKKyAgICAgICAgICAgICAgICJleHBpcmVzPVNhdCBGZWIgMiAxMTo1NjoyNyBHTVQgMjAzMCIpOworICBwcmludGYoIkNVUkxPUFRfQ09PS0lFTElTVCBTRVNTXG4iKTsKKyAgdGVzdF9zZXRvcHQoY3VybCwgQ1VSTE9QVF9DT09LSUVMSVNULCAiU0VTUyIpOworICBwcmludGYoIkNMRUFOVVBcbiIpOworICBjdXJsX2Vhc3lfY2xlYW51cChjdXJsKTsKIAogCiAgIHJlcyA9IDA7CiAKICAgLyogc3RhcnQgdHJlYWRzICovCi0gIGZvciAoaT0xOyBpPD1USFJFQURTOyBpKysgKSB7CisgIGZvcihpPTE7IGk8PVRIUkVBRFM7IGkrKykgewogCiAgICAgLyogc2V0IHRocmVhZCBkYXRhICovCi0gICAgdGRhdGEudXJsICAgPSBzdWJ1cmwoIFVSTCwgaSApOyAvKiBtdXN0IGJlIGN1cmxfZnJlZSgpZCAqLworICAgIHRkYXRhLnVybCAgID0gc3VidXJsKFVSTCwgaSk7IC8qIG11c3QgYmUgY3VybF9mcmVlKClkICovCiAgICAgdGRhdGEuc2hhcmUgPSBzaGFyZTsKIAogICAgIC8qIHNpbXVsYXRlIHRocmVhZCwgZGlyZWN0IGNhbGwgb2YgInRocmVhZCIgZnVuY3Rpb24gKi8KLSAgICBwcmludGYoICIqKiogcnVuICVkXG4iLGkgKTsKLSAgICBmaXJlKCAmdGRhdGEgKTsKKyAgICBwcmludGYoIioqKiBydW4gJWRcbiIsaSk7CisgICAgZmlyZSgmdGRhdGEpOwogCi0gICAgY3VybF9mcmVlKCB0ZGF0YS51cmwgKTsKLQorICAgIGN1cmxfZnJlZSh0ZGF0YS51cmwpOwogICB9CiAKIAogICAvKiBmZXRjaCBhIGFub3RoZXIgb25lIGFuZCBzYXZlIGNvb2tpZXMgKi8KLSAgcHJpbnRmKCAiKioqIHJ1biAlZFxuIiwgaSApOwotICBpZiAoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CisgIHByaW50ZigiKioqIHJ1biAlZFxuIiwgaSk7CisgIGlmKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9lYXN5X2luaXQoKSBmYWlsZWRcbiIpOwogICAgIGN1cmxfc2hhcmVfY2xlYW51cChzaGFyZSk7CiAgICAgY3VybF9nbG9iYWxfY2xlYW51cCgpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CiAgIH0KIAotICB1cmwgPSBzdWJ1cmwoIFVSTCwgaSApOwotICBoZWFkZXJzID0gc2V0aG9zdCggTlVMTCApOwotICB0ZXN0X3NldG9wdCggY3VybCwgQ1VSTE9QVF9IVFRQSEVBREVSLCBoZWFkZXJzICk7Ci0gIHRlc3Rfc2V0b3B0KCBjdXJsLCBDVVJMT1BUX1VSTCwgICAgICAgIHVybCApOwotICBwcmludGYoICJDVVJMT1BUX1NIQVJFXG4iICk7Ci0gIHRlc3Rfc2V0b3B0KCBjdXJsLCBDVVJMT1BUX1NIQVJFLCAgICAgIHNoYXJlICk7Ci0gIHByaW50ZiggIkNVUkxPUFRfQ09PS0lFSkFSXG4iICk7Ci0gIHRlc3Rfc2V0b3B0KCBjdXJsLCBDVVJMT1BUX0NPT0tJRUpBUiwgIEpBUiApOwotICBwcmludGYoICJDVVJMT1BUX0NPT0tJRUxJU1QgRkxVU0hcbiIgKTsKLSAgdGVzdF9zZXRvcHQoIGN1cmwsIENVUkxPUFRfQ09PS0lFTElTVCwgIkZMVVNIIiApOworICB1cmwgPSBzdWJ1cmwoVVJMLCBpKTsKKyAgaGVhZGVycyA9IHNldGhvc3QoTlVMTCk7CisgIHRlc3Rfc2V0b3B0KGN1cmwsIENVUkxPUFRfSFRUUEhFQURFUiwgaGVhZGVycyk7CisgIHRlc3Rfc2V0b3B0KGN1cmwsIENVUkxPUFRfVVJMLCAgICAgICAgdXJsKTsKKyAgcHJpbnRmKCJDVVJMT1BUX1NIQVJFXG4iKTsKKyAgdGVzdF9zZXRvcHQoY3VybCwgQ1VSTE9QVF9TSEFSRSwgICAgICBzaGFyZSk7CisgIHByaW50ZigiQ1VSTE9QVF9DT09LSUVKQVJcbiIpOworICB0ZXN0X3NldG9wdChjdXJsLCBDVVJMT1BUX0NPT0tJRUpBUiwgIEpBUik7CisgIHByaW50ZigiQ1VSTE9QVF9DT09LSUVMSVNUIEZMVVNIXG4iKTsKKyAgdGVzdF9zZXRvcHQoY3VybCwgQ1VSTE9QVF9DT09LSUVMSVNULCAiRkxVU0giKTsKIAotICBwcmludGYoICJQRVJGT1JNXG4iICk7Ci0gIGN1cmxfZWFzeV9wZXJmb3JtKCBjdXJsICk7CisgIHByaW50ZigiUEVSRk9STVxuIik7CisgIGN1cmxfZWFzeV9wZXJmb3JtKGN1cmwpOwogCi0gIHByaW50ZiggIkNMRUFOVVBcbiIgKTsKLSAgY3VybF9lYXN5X2NsZWFudXAoIGN1cmwgKTsKKyAgcHJpbnRmKCJDTEVBTlVQXG4iKTsKKyAgY3VybF9lYXN5X2NsZWFudXAoY3VybCk7CiAgIGN1cmxfZnJlZSh1cmwpOwotICBjdXJsX3NsaXN0X2ZyZWVfYWxsKCBoZWFkZXJzICk7CisgIGN1cmxfc2xpc3RfZnJlZV9hbGwoaGVhZGVycyk7CiAKICAgLyogbG9hZCBjb29raWVzICovCi0gIGlmICgoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKKyAgaWYoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2Vhc3lfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgY3VybF9zaGFyZV9jbGVhbnVwKHNoYXJlKTsKICAgICBjdXJsX2dsb2JhbF9jbGVhbnVwKCk7CiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKICAgfQotICB1cmwgPSBzdWJ1cmwoIFVSTCwgaSApOwotICBoZWFkZXJzID0gc2V0aG9zdCggTlVMTCApOwotICB0ZXN0X3NldG9wdCggY3VybCwgQ1VSTE9QVF9IVFRQSEVBREVSLCBoZWFkZXJzICk7Ci0gIHRlc3Rfc2V0b3B0KCBjdXJsLCBDVVJMT1BUX1VSTCwgICAgICAgIHVybCApOwotICBwcmludGYoICJDVVJMT1BUX1NIQVJFXG4iICk7Ci0gIHRlc3Rfc2V0b3B0KCBjdXJsLCBDVVJMT1BUX1NIQVJFLCAgICAgIHNoYXJlICk7Ci0gIHByaW50ZiggIkNVUkxPUFRfQ09PS0lFTElTVCBBTExcbiIgKTsKLSAgdGVzdF9zZXRvcHQoIGN1cmwsIENVUkxPUFRfQ09PS0lFTElTVCwgIkFMTCIgKTsKLSAgcHJpbnRmKCAiQ1VSTE9QVF9DT09LSUVKQVJcbiIgKTsKLSAgdGVzdF9zZXRvcHQoIGN1cmwsIENVUkxPUFRfQ09PS0lFRklMRSwgSkFSICk7Ci0gIHByaW50ZiggIkNVUkxPUFRfQ09PS0lFTElTVCBSRUxPQURcbiIgKTsKLSAgdGVzdF9zZXRvcHQoIGN1cmwsIENVUkxPUFRfQ09PS0lFTElTVCwgIlJFTE9BRCIgKTsKKyAgdXJsID0gc3VidXJsKFVSTCwgaSk7CisgIGhlYWRlcnMgPSBzZXRob3N0KE5VTEwpOworICB0ZXN0X3NldG9wdChjdXJsLCBDVVJMT1BUX0hUVFBIRUFERVIsIGhlYWRlcnMpOworICB0ZXN0X3NldG9wdChjdXJsLCBDVVJMT1BUX1VSTCwgICAgICAgIHVybCk7CisgIHByaW50ZigiQ1VSTE9QVF9TSEFSRVxuIik7CisgIHRlc3Rfc2V0b3B0KGN1cmwsIENVUkxPUFRfU0hBUkUsICAgICAgc2hhcmUpOworICBwcmludGYoIkNVUkxPUFRfQ09PS0lFTElTVCBBTExcbiIpOworICB0ZXN0X3NldG9wdChjdXJsLCBDVVJMT1BUX0NPT0tJRUxJU1QsICJBTEwiKTsKKyAgcHJpbnRmKCJDVVJMT1BUX0NPT0tJRUpBUlxuIik7CisgIHRlc3Rfc2V0b3B0KGN1cmwsIENVUkxPUFRfQ09PS0lFRklMRSwgSkFSKTsKKyAgcHJpbnRmKCJDVVJMT1BUX0NPT0tJRUxJU1QgUkVMT0FEXG4iKTsKKyAgdGVzdF9zZXRvcHQoY3VybCwgQ1VSTE9QVF9DT09LSUVMSVNULCAiUkVMT0FEIik7CiAKICAgY29kZSA9IGN1cmxfZWFzeV9nZXRpbmZvKGN1cmwsIENVUkxJTkZPX0NPT0tJRUxJU1QsICZjb29raWVzKTsKLSAgaWYgKCBjb2RlICE9IENVUkxFX09LICkKLSAgeworICBpZihjb2RlICE9IENVUkxFX09LKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2Vhc3lfZ2V0aW5mbygpIGZhaWxlZFxuIik7CiAgICAgcmVzID0gVEVTVF9FUlJfTUFKT1JfQkFEOwogICAgIGdvdG8gdGVzdF9jbGVhbnVwOwogICB9CiAgIHByaW50ZigibG9hZGVkIGNvb2tpZXM6XG4iKTsKLSAgaWYgKCAhY29va2llcyApCi0gIHsKKyAgaWYoIWNvb2tpZXMpIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgcmVsb2FkaW5nIGNvb2tpZXMgZnJvbSAnJXMnIGZhaWxlZFxuIiwgSkFSKTsKICAgICByZXMgPSBURVNUX0VSUl9NQUpPUl9CQUQ7CiAgICAgZ290byB0ZXN0X2NsZWFudXA7CiAgIH0KICAgcHJpbnRmKCItLS0tLS0tLS0tLS0tLS0tLVxuIik7CiAgIG5leHRfY29va2llID0gY29va2llczsKLSAgd2hpbGUgKCBuZXh0X2Nvb2tpZSApCi0gIHsKLSAgICBwcmludGYoICIgICVzXG4iLCBuZXh0X2Nvb2tpZS0+ZGF0YSApOworICB3aGlsZShuZXh0X2Nvb2tpZSkgeworICAgIHByaW50ZigiICAlc1xuIiwgbmV4dF9jb29raWUtPmRhdGEpOwogICAgIG5leHRfY29va2llID0gbmV4dF9jb29raWUtPm5leHQ7CiAgIH0KICAgcHJpbnRmKCItLS0tLS0tLS0tLS0tLS0tLVxuIik7Ci0gIGN1cmxfc2xpc3RfZnJlZV9hbGwoIGNvb2tpZXMgKTsKKyAgY3VybF9zbGlzdF9mcmVlX2FsbChjb29raWVzKTsKIAogICAvKiB0cnkgdG8gZnJlZSBzaGFyZSwgZXhwZWN0IHRvIGZhaWwgYmVjYXVzZSBzaGFyZSBpcyBpbiB1c2UqLwotICBwcmludGYoICJ0cnkgU0hBUkVfQ0xFQU5VUC4uLlxuIiApOwotICBzY29kZSA9IGN1cmxfc2hhcmVfY2xlYW51cCggc2hhcmUgKTsKLSAgaWYgKCBzY29kZT09Q1VSTFNIRV9PSyApCi0gIHsKKyAgcHJpbnRmKCJ0cnkgU0hBUkVfQ0xFQU5VUC4uLlxuIik7CisgIHNjb2RlID0gY3VybF9zaGFyZV9jbGVhbnVwKHNoYXJlKTsKKyAgaWYoc2NvZGU9PUNVUkxTSEVfT0spIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfc2hhcmVfY2xlYW51cCBzdWNjZWVkIGJ1dCBlcnJvciBleHBlY3RlZFxuIik7CiAgICAgc2hhcmUgPSBOVUxMOwotICB9IGVsc2UgewotICAgIHByaW50ZiggIlNIQVJFX0NMRUFOVVAgZmFpbGVkLCBjb3JyZWN0XG4iICk7CisgIH0KKyAgZWxzZSB7CisgICAgcHJpbnRmKCJTSEFSRV9DTEVBTlVQIGZhaWxlZCwgY29ycmVjdFxuIik7CiAgIH0KIAogdGVzdF9jbGVhbnVwOgogCiAgIC8qIGNsZWFuIHVwIGxhc3QgaGFuZGxlICovCi0gIHByaW50ZiggIkNMRUFOVVBcbiIgKTsKLSAgY3VybF9lYXN5X2NsZWFudXAoIGN1cmwgKTsKLSAgY3VybF9zbGlzdF9mcmVlX2FsbCggaGVhZGVycyApOworICBwcmludGYoIkNMRUFOVVBcbiIpOworICBjdXJsX2Vhc3lfY2xlYW51cChjdXJsKTsKKyAgY3VybF9zbGlzdF9mcmVlX2FsbChoZWFkZXJzKTsKICAgY3VybF9mcmVlKHVybCk7CiAKICAgLyogZnJlZSBzaGFyZSAqLwotICBwcmludGYoICJTSEFSRV9DTEVBTlVQXG4iICk7Ci0gIHNjb2RlID0gY3VybF9zaGFyZV9jbGVhbnVwKCBzaGFyZSApOwotICBpZiAoIHNjb2RlIT1DVVJMU0hFX09LICkKKyAgcHJpbnRmKCJTSEFSRV9DTEVBTlVQXG4iKTsKKyAgc2NvZGUgPSBjdXJsX3NoYXJlX2NsZWFudXAoc2hhcmUpOworICBpZihzY29kZSE9Q1VSTFNIRV9PSykKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfc2hhcmVfY2xlYW51cCBmYWlsZWQsIGNvZGUgZXJybm8gJWRcbiIsCiAgICAgICAgICAgICAoaW50KXNjb2RlKTsKIAotICBwcmludGYoICJHTE9CQUxfQ0xFQU5VUFxuIiApOworICBwcmludGYoIkdMT0JBTF9DTEVBTlVQXG4iKTsKICAgY3VybF9nbG9iYWxfY2xlYW51cCgpOwogCiAgIHJldHVybiByZXM7CmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYjUwNy5jIGIvdGVzdHMvbGlidGVzdC9saWI1MDcuYwppbmRleCA4N2MyMWRlLi43NDg3OTkyIDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYjUwNy5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliNTA3LmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWI1MDguYyBiL3Rlc3RzL2xpYnRlc3QvbGliNTA4LmMKaW5kZXggN2YzNzMwOS4uY2I2MGNlMSAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWI1MDguYworKysgYi90ZXN0cy9saWJ0ZXN0L2xpYjUwOC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNTcsMTIgKzU3LDEyIEBACiAgIHBvb2gucmVhZHB0ciA9IGRhdGE7CiAgIHBvb2guc2l6ZWxlZnQgPSBzdHJsZW4oZGF0YSk7CiAKLSAgaWYgKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgeworICBpZihjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZ2xvYmFsX2luaXQoKSBmYWlsZWRcbiIpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CiAgIH0KIAotICBpZiAoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CisgIGlmKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9lYXN5X2luaXQoKSBmYWlsZWRcbiIpOwogICAgIGN1cmxfZ2xvYmFsX2NsZWFudXAoKTsKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWI1MDkuYyBiL3Rlc3RzL2xpYnRlc3QvbGliNTA5LmMKaW5kZXggYTNkZTUxZS4uMDg1YTk3NSAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWI1MDkuYworKysgYi90ZXN0cy9saWJ0ZXN0L2xpYjUwOS5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMywgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTE3LDEyICsxMTcsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX3JlYWxsb2MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9zdHJkdXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9jYWxsb2MpOwotICBpZiAocmVzICE9IENVUkxFX09LKSB7CisgIGlmKHJlcyAhPSBDVVJMRV9PSykgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9nbG9iYWxfaW5pdF9tZW0oKSBmYWlsZWRcbiIpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CiAgIH0KIAotICBpZiAoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CisgIGlmKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9lYXN5X2luaXQoKSBmYWlsZWRcbiIpOwogICAgIGN1cmxfZ2xvYmFsX2NsZWFudXAoKTsKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWI1MTAuYyBiL3Rlc3RzL2xpYnRlc3QvbGliNTEwLmMKaW5kZXggYzYwYjJjYS4uY2I1Mjk2ZSAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWI1MTAuYworKysgYi90ZXN0cy9saWJ0ZXN0L2xpYjUxMC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNjMsMTkgKzYzLDE5IEBACiAgIHN0cnVjdCBXcml0ZVRoaXMgcG9vaDsKICAgcG9vaC5jb3VudGVyID0gMDsKIAotICBpZiAoY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpICE9IENVUkxFX09LKSB7CisgIGlmKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9nbG9iYWxfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKICAgfQogCi0gIGlmICgoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKKyAgaWYoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2Vhc3lfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgY3VybF9nbG9iYWxfY2xlYW51cCgpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CiAgIH0KIAogICBzbGlzdCA9IGN1cmxfc2xpc3RfYXBwZW5kKHNsaXN0LCAiVHJhbnNmZXItRW5jb2Rpbmc6IGNodW5rZWQiKTsKLSAgaWYgKHNsaXN0ID09IE5VTEwpIHsKKyAgaWYoc2xpc3QgPT0gTlVMTCkgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9zbGlzdF9hcHBlbmQoKSBmYWlsZWRcbiIpOwogICAgIGN1cmxfZWFzeV9jbGVhbnVwKGN1cmwpOwogICAgIGN1cmxfZ2xvYmFsX2NsZWFudXAoKTsKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliNTExLmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjUxMS5jCmluZGV4IDZiZTJkMmYuLjBiN2FlNmYgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliNTExLmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWI1MTEuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTEsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTI4LDEyICsyOCwxMiBAQAogICBDVVJMY29kZSByZXM7CiAgIENVUkwgKmN1cmw7CiAKLSAgaWYgKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgeworICBpZihjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZ2xvYmFsX2luaXQoKSBmYWlsZWRcbiIpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CiAgIH0KIAotICBpZiAoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CisgIGlmKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9lYXN5X2luaXQoKSBmYWlsZWRcbiIpOwogICAgIGN1cmxfZ2xvYmFsX2NsZWFudXAoKTsKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWI1MTIuYyBiL3Rlc3RzL2xpYnRlc3QvbGliNTEyLmMKaW5kZXggMTlkYTE4Yi4uMTQyNDFkZCAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWI1MTIuYworKysgYi90ZXN0cy9saWJ0ZXN0L2xpYjUxMi5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliNTEzLmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjUxMy5jCmluZGV4IDdhYWIzYjEuLjU4MDkxZWYgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliNTEzLmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWI1MTMuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTEsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTM3LDEyICszNywxMiBAQAogICBDVVJMICpjdXJsOwogICBDVVJMY29kZSByZXM9Q1VSTEVfT0s7CiAKLSAgaWYgKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgeworICBpZihjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZ2xvYmFsX2luaXQoKSBmYWlsZWRcbiIpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CiAgIH0KIAotICBpZiAoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CisgIGlmKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9lYXN5X2luaXQoKSBmYWlsZWRcbiIpOwogICAgIGN1cmxfZ2xvYmFsX2NsZWFudXAoKTsKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWI1MTQuYyBiL3Rlc3RzL2xpYnRlc3QvbGliNTE0LmMKaW5kZXggOTUzZTkwZC4uZjUxNmQwOSAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWI1MTQuYworKysgYi90ZXN0cy9saWJ0ZXN0L2xpYjUxNC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjgsMTIgKzI4LDEyIEBACiAgIENVUkwgKmN1cmw7CiAgIENVUkxjb2RlIHJlcz1DVVJMRV9PSzsKIAotICBpZiAoY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpICE9IENVUkxFX09LKSB7CisgIGlmKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9nbG9iYWxfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKICAgfQogCi0gIGlmICgoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKKyAgaWYoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2Vhc3lfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgY3VybF9nbG9iYWxfY2xlYW51cCgpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYjUxNS5jIGIvdGVzdHMvbGlidGVzdC9saWI1MTUuYwppbmRleCA0ZTk2YzRhLi5kM2U2ZTQ0IDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYjUxNS5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliNTE1LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDExLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yOCwxMiArMjgsMTIgQEAKICAgQ1VSTCAqY3VybDsKICAgQ1VSTGNvZGUgcmVzPUNVUkxFX09LOwogCi0gIGlmIChjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKKyAgaWYoY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpICE9IENVUkxFX09LKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2dsb2JhbF9pbml0KCkgZmFpbGVkXG4iKTsKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwogICB9CiAKLSAgaWYgKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgeworICBpZigoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZWFzeV9pbml0KCkgZmFpbGVkXG4iKTsKICAgICBjdXJsX2dsb2JhbF9jbGVhbnVwKCk7CiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliNTE2LmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjUxNi5jCmluZGV4IGE5NTkwOTQuLjlmYWYyNjIgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliNTE2LmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWI1MTYuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTEsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTI4LDEyICsyOCwxMiBAQAogICBDVVJMICpjdXJsOwogICBDVVJMY29kZSByZXM9Q1VSTEVfT0s7CiAKLSAgaWYgKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgeworICBpZihjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZ2xvYmFsX2luaXQoKSBmYWlsZWRcbiIpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CiAgIH0KIAotICBpZiAoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CisgIGlmKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9lYXN5X2luaXQoKSBmYWlsZWRcbiIpOwogICAgIGN1cmxfZ2xvYmFsX2NsZWFudXAoKTsKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWI1MTcuYyBiL3Rlc3RzL2xpYnRlc3QvbGliNTE3LmMKaW5kZXggYmE0OWVjNC4uMmY2OGViZCAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWI1MTcuYworKysgYi90ZXN0cy9saWJ0ZXN0L2xpYjUxNy5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliNTE4LmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjUxOC5jCmluZGV4IDIzZjdmMTcuLmUzN2E3NzcgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliNTE4LmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWI1MTguYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTEsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTU2LDE4ICs1NiwxOSBAQAogCiBzdGF0aWMgdm9pZCBzdG9yZV9lcnJtc2coY29uc3QgY2hhciAqbXNnLCBpbnQgZXJyKQogewotICBpZiAoIWVycikKLSAgICBzcHJpbnRmKG1zZ2J1ZmYsICIlcyIsIG1zZyk7CisgIGlmKCFlcnIpCisgICAgc25wcmludGYobXNnYnVmZiwgc2l6ZW9mKG1zZ2J1ZmYpLCAiJXMiLCBtc2cpOwogICBlbHNlCi0gICAgc3ByaW50Zihtc2didWZmLCAiJXMsIGVycm5vICVkLCAlcyIsIG1zZywgZXJyLCBzdHJlcnJvcihlcnIpKTsKKyAgICBzbnByaW50Zihtc2didWZmLCBzaXplb2YobXNnYnVmZiksICIlcywgZXJybm8gJWQsICVzIiwgbXNnLAorICAgICAgICAgICAgIGVyciwgc3RyZXJyb3IoZXJyKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGNsb3NlX2ZpbGVfZGVzY3JpcHRvcnModm9pZCkKIHsKLSAgZm9yIChudW1fb3Blbi5ybGltX2N1ciA9IDA7Ci0gICAgICAgbnVtX29wZW4ucmxpbV9jdXIgPCBudW1fb3Blbi5ybGltX21heDsKLSAgICAgICBudW1fb3Blbi5ybGltX2N1cisrKQotICAgIGlmIChmZFtudW1fb3Blbi5ybGltX2N1cl0gPiAwKQorICBmb3IobnVtX29wZW4ucmxpbV9jdXIgPSAwOworICAgICAgbnVtX29wZW4ucmxpbV9jdXIgPCBudW1fb3Blbi5ybGltX21heDsKKyAgICAgIG51bV9vcGVuLnJsaW1fY3VyKyspCisgICAgaWYoZmRbbnVtX29wZW4ucmxpbV9jdXJdID4gMCkKICAgICAgIGNsb3NlKGZkW251bV9vcGVuLnJsaW1fY3VyXSk7CiAgIGZyZWUoZmQpOwogICBmZCA9IE5VTEw7CkBAIC03OSwyMCArODAsMjAgQEAKICAgaW50IGk7CiAgIGludCByZXQgPSAxOwogCi0gIGZvciAoaSA9IDA7IGkgPCAzOyBpKyspIHsKKyAgZm9yKGkgPSAwOyBpIDwgMzsgaSsrKSB7CiAgICAgZnBhW2ldID0gTlVMTDsKICAgfQotICBmb3IgKGkgPSAwOyBpIDwgMzsgaSsrKSB7Ci0gICAgZnBhW2ldID0gZm9wZW4oREVWX05VTEwsICJyIik7Ci0gICAgaWYgKGZwYVtpXSA9PSBOVUxMKSB7Ci0gICAgICBzdG9yZV9lcnJtc2coImZvcGVuKCkgZmFpbGVkIiwgRVJSTk8pOworICBmb3IoaSA9IDA7IGkgPCAzOyBpKyspIHsKKyAgICBmcGFbaV0gPSBmb3BlbihERVZfTlVMTCwgRk9QRU5fUkVBRFRFWFQpOworICAgIGlmKGZwYVtpXSA9PSBOVUxMKSB7CisgICAgICBzdG9yZV9lcnJtc2coImZvcGVuIGZhaWxlZCIsIEVSUk5PKTsKICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXNcbiIsIG1zZ2J1ZmYpOwogICAgICAgcmV0ID0gMDsKICAgICAgIGJyZWFrOwogICAgIH0KICAgfQotICBmb3IgKGkgPSAwOyBpIDwgMzsgaSsrKSB7Ci0gICAgaWYgKGZwYVtpXSAhPSBOVUxMKQorICBmb3IoaSA9IDA7IGkgPCAzOyBpKyspIHsKKyAgICBpZihmcGFbaV0gIT0gTlVMTCkKICAgICAgIGZjbG9zZShmcGFbaV0pOwogICB9CiAgIHJldHVybiByZXQ7CkBAIC0xMTIsNyArMTEzLDcgQEAKICNpZmRlZiBIQVZFX0xPTkdMT05HCiAgIGNoYXIgZm10X2xsdVtdID0gIiVsbHUiOwogCi0gIGlmIChzaXplb2YocmwucmxpbV9tYXgpID4gc2l6ZW9mKGxvbmcpKQorICBpZihzaXplb2YocmwucmxpbV9tYXgpID4gc2l6ZW9mKGxvbmcpKQogICAgIGZtdCA9IGZtdF9sbHU7CiAgIGVsc2UKICNlbmRpZgpAQCAtMTIwLDcgKzEyMSw3IEBACiAKICAgLyogZ2V0IGluaXRpYWwgb3BlbiBmaWxlIGxpbWl0cyAqLwogCi0gIGlmIChnZXRybGltaXQoUkxJTUlUX05PRklMRSwgJnJsKSAhPSAwKSB7CisgIGlmKGdldHJsaW1pdChSTElNSVRfTk9GSUxFLCAmcmwpICE9IDApIHsKICAgICBzdG9yZV9lcnJtc2coImdldHJsaW1pdCgpIGZhaWxlZCIsIEVSUk5PKTsKICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCBtc2didWZmKTsKICAgICByZXR1cm4gLTE7CkBAIC0xMjksMTkgKzEzMCwxOSBAQAogICAvKiBzaG93IGluaXRpYWwgb3BlbiBmaWxlIGxpbWl0cyAqLwogCiAjaWZkZWYgUkxJTV9JTkZJTklUWQotICBpZiAocmwucmxpbV9jdXIgPT0gUkxJTV9JTkZJTklUWSkKKyAgaWYocmwucmxpbV9jdXIgPT0gUkxJTV9JTkZJTklUWSkKICAgICBzdHJjcHkoc3RyYnVmZiwgIklORklOSVRZIik7CiAgIGVsc2UKICNlbmRpZgotICAgIHNwcmludGYoc3RyYnVmZiwgZm10LCBybC5ybGltX2N1cik7CisgICAgc25wcmludGYoc3RyYnVmZiwgc2l6ZW9mKHN0cmJ1ZmYpLCBmbXQsIHJsLnJsaW1fY3VyKTsKICAgZnByaW50ZihzdGRlcnIsICJpbml0aWFsIHNvZnQgbGltaXQ6ICVzXG4iLCBzdHJidWZmKTsKIAogI2lmZGVmIFJMSU1fSU5GSU5JVFkKLSAgaWYgKHJsLnJsaW1fbWF4ID09IFJMSU1fSU5GSU5JVFkpCisgIGlmKHJsLnJsaW1fbWF4ID09IFJMSU1fSU5GSU5JVFkpCiAgICAgc3RyY3B5KHN0cmJ1ZmYsICJJTkZJTklUWSIpOwogICBlbHNlCiAjZW5kaWYKLSAgICBzcHJpbnRmKHN0cmJ1ZmYsIGZtdCwgcmwucmxpbV9tYXgpOworICAgIHNucHJpbnRmKHN0cmJ1ZmYsIHNpemVvZihzdHJidWZmKSwgZm10LCBybC5ybGltX21heCk7CiAgIGZwcmludGYoc3RkZXJyLCAiaW5pdGlhbCBoYXJkIGxpbWl0OiAlc1xuIiwgc3RyYnVmZik7CiAKICAgLyogc2hvdyBvdXIgY29uc3RhbnRzICovCkBAIC0xNTksMTQgKzE2MCwxNCBAQAogICAgKiBvcGVuIG1vcmUgdGhhbiBzb2Z0IGxpbWl0IGZpbGUgZGVzY3JpcHRvcnMgd2lsbCBmYWlsLgogICAgKi8KIAotICBpZiAocmwucmxpbV9jdXIgIT0gcmwucmxpbV9tYXgpIHsKKyAgaWYocmwucmxpbV9jdXIgIT0gcmwucmxpbV9tYXgpIHsKIAogI2lmZGVmIE9QRU5fTUFYCi0gICAgaWYgKChybC5ybGltX2N1ciA+IDApICYmCi0gICAgICAgIChybC5ybGltX2N1ciA8IE9QRU5fTUFYKSkgeworICAgIGlmKChybC5ybGltX2N1ciA+IDApICYmCisgICAgICAgKHJsLnJsaW1fY3VyIDwgT1BFTl9NQVgpKSB7CiAgICAgICBmcHJpbnRmKHN0ZGVyciwgInJhaXNpbmcgc29mdCBsaW1pdCB1cCB0byBPUEVOX01BWFxuIik7CiAgICAgICBybC5ybGltX2N1ciA9IE9QRU5fTUFYOwotICAgICAgaWYgKHNldHJsaW1pdChSTElNSVRfTk9GSUxFLCAmcmwpICE9IDApIHsKKyAgICAgIGlmKHNldHJsaW1pdChSTElNSVRfTk9GSUxFLCAmcmwpICE9IDApIHsKICAgICAgICAgLyogb24gZmFpbHVyZSBkb24ndCBhYm9ydCBqdXN0IGlzc3VlIGEgd2FybmluZyAqLwogICAgICAgICBzdG9yZV9lcnJtc2coInNldHJsaW1pdCgpIGZhaWxlZCIsIEVSUk5PKTsKICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlc1xuIiwgbXNnYnVmZik7CkBAIC0xNzcsNyArMTc4LDcgQEAKIAogICAgIGZwcmludGYoc3RkZXJyLCAicmFpc2luZyBzb2Z0IGxpbWl0IHVwIHRvIGhhcmQgbGltaXRcbiIpOwogICAgIHJsLnJsaW1fY3VyID0gcmwucmxpbV9tYXg7Ci0gICAgaWYgKHNldHJsaW1pdChSTElNSVRfTk9GSUxFLCAmcmwpICE9IDApIHsKKyAgICBpZihzZXRybGltaXQoUkxJTUlUX05PRklMRSwgJnJsKSAhPSAwKSB7CiAgICAgICAvKiBvbiBmYWlsdXJlIGRvbid0IGFib3J0IGp1c3QgaXNzdWUgYSB3YXJuaW5nICovCiAgICAgICBzdG9yZV9lcnJtc2coInNldHJsaW1pdCgpIGZhaWxlZCIsIEVSUk5PKTsKICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXNcbiIsIG1zZ2J1ZmYpOwpAQCAtMTg2LDcgKzE4Nyw3IEBACiAKICAgICAvKiBnZXQgY3VycmVudCBvcGVuIGZpbGUgbGltaXRzICovCiAKLSAgICBpZiAoZ2V0cmxpbWl0KFJMSU1JVF9OT0ZJTEUsICZybCkgIT0gMCkgeworICAgIGlmKGdldHJsaW1pdChSTElNSVRfTk9GSUxFLCAmcmwpICE9IDApIHsKICAgICAgIHN0b3JlX2Vycm1zZygiZ2V0cmxpbWl0KCkgZmFpbGVkIiwgRVJSTk8pOwogICAgICAgZnByaW50ZihzdGRlcnIsICIlc1xuIiwgbXNnYnVmZik7CiAgICAgICByZXR1cm4gLTM7CkBAIC0xOTUsMTkgKzE5NiwxOSBAQAogICAgIC8qIHNob3cgY3VycmVudCBvcGVuIGZpbGUgbGltaXRzICovCiAKICNpZmRlZiBSTElNX0lORklOSVRZCi0gICAgaWYgKHJsLnJsaW1fY3VyID09IFJMSU1fSU5GSU5JVFkpCisgICAgaWYocmwucmxpbV9jdXIgPT0gUkxJTV9JTkZJTklUWSkKICAgICAgIHN0cmNweShzdHJidWZmLCAiSU5GSU5JVFkiKTsKICAgICBlbHNlCiAjZW5kaWYKLSAgICAgIHNwcmludGYoc3RyYnVmZiwgZm10LCBybC5ybGltX2N1cik7CisgICAgICBzbnByaW50ZihzdHJidWZmLCBzaXplb2Yoc3RyYnVmZiksIGZtdCwgcmwucmxpbV9jdXIpOwogICAgIGZwcmludGYoc3RkZXJyLCAiY3VycmVudCBzb2Z0IGxpbWl0OiAlc1xuIiwgc3RyYnVmZik7CiAKICNpZmRlZiBSTElNX0lORklOSVRZCi0gICAgaWYgKHJsLnJsaW1fbWF4ID09IFJMSU1fSU5GSU5JVFkpCisgICAgaWYocmwucmxpbV9tYXggPT0gUkxJTV9JTkZJTklUWSkKICAgICAgIHN0cmNweShzdHJidWZmLCAiSU5GSU5JVFkiKTsKICAgICBlbHNlCiAjZW5kaWYKLSAgICAgIHNwcmludGYoc3RyYnVmZiwgZm10LCBybC5ybGltX21heCk7CisgICAgICBzbnByaW50ZihzdHJidWZmLCBzaXplb2Yoc3RyYnVmZiksIGZtdCwgcmwucmxpbV9tYXgpOwogICAgIGZwcmludGYoc3RkZXJyLCAiY3VycmVudCBoYXJkIGxpbWl0OiAlc1xuIiwgc3RyYnVmZik7CiAKICAgfSAvKiAocmwucmxpbV9jdXIgIT0gcmwucmxpbV9tYXgpICovCkBAIC0yMjksMTUgKzIzMCwxNSBAQAogCiAgIG51bV9vcGVuLnJsaW1fY3VyID0gTlVNX05FRURFRDsKIAotICBpZiAoKHJsLnJsaW1fY3VyID4gMCkgJiYKKyAgaWYoKHJsLnJsaW1fY3VyID4gMCkgJiYKICNpZmRlZiBSTElNX0lORklOSVRZCiAgICAgIChybC5ybGltX2N1ciAhPSBSTElNX0lORklOSVRZKSAmJgogI2VuZGlmCiAgICAgIChybC5ybGltX2N1ciA8PSBudW1fb3Blbi5ybGltX2N1cikpIHsKLSAgICBzcHJpbnRmKHN0cmJ1ZmYyLCBmbXQsIHJsLnJsaW1fY3VyKTsKLSAgICBzcHJpbnRmKHN0cmJ1ZmYxLCBmbXQsIG51bV9vcGVuLnJsaW1fY3VyKTsKLSAgICBzcHJpbnRmKHN0cmJ1ZmYsICJmZHMgbmVlZGVkICVzID4gc3lzdGVtIGxpbWl0ICVzIiwKLSAgICAgICAgICAgIHN0cmJ1ZmYxLCBzdHJidWZmMik7CisgICAgc25wcmludGYoc3RyYnVmZjIsIHNpemVvZihzdHJidWZmMiksIGZtdCwgcmwucmxpbV9jdXIpOworICAgIHNucHJpbnRmKHN0cmJ1ZmYxLCBzaXplb2Yoc3RyYnVmZjEpLCBmbXQsIG51bV9vcGVuLnJsaW1fY3VyKTsKKyAgICBzbnByaW50ZihzdHJidWZmLCBzaXplb2Yoc3RyYnVmZiksICJmZHMgbmVlZGVkICVzID4gc3lzdGVtIGxpbWl0ICVzIiwKKyAgICAgICAgICAgICBzdHJidWZmMSwgc3RyYnVmZjIpOwogICAgIHN0b3JlX2Vycm1zZyhzdHJidWZmLCAwKTsKICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCBtc2didWZmKTsKICAgICByZXR1cm4gLTQ7CkBAIC0yNTIsMjEgKzI1MywyMSBAQAogICAgKiB0aGF0IGl0IGJlY29tZXMgYXZhaWxhYmxlIHRvIHRoZSB0ZXN0LgogICAgKi8KIAotICBmb3IgKG5pdGVtcyA9IGkgPSAxOyBuaXRlbXMgPD0gaTsgaSAqPSAyKQorICBmb3Iobml0ZW1zID0gaSA9IDE7IG5pdGVtcyA8PSBpOyBpICo9IDIpCiAgICAgbml0ZW1zID0gaTsKLSAgaWYgKG5pdGVtcyA+IDB4N2ZmZikKKyAgaWYobml0ZW1zID4gMHg3ZmZmKQogICAgIG5pdGVtcyA9IDB4NDAwMDA7CiAgIGRvIHsKICAgICBudW1fb3Blbi5ybGltX21heCA9IHNpemVvZigqbWVtY2h1bmspICogKHNpemVfdCluaXRlbXM7Ci0gICAgc3ByaW50ZihzdHJidWZmLCBmbXQsIG51bV9vcGVuLnJsaW1fbWF4KTsKKyAgICBzbnByaW50ZihzdHJidWZmLCBzaXplb2Yoc3RyYnVmZiksIGZtdCwgbnVtX29wZW4ucmxpbV9tYXgpOwogICAgIGZwcmludGYoc3RkZXJyLCAiYWxsb2NhdGluZyBtZW1jaHVuayAlcyBieXRlIGFycmF5XG4iLCBzdHJidWZmKTsKICAgICBtZW1jaHVuayA9IG1hbGxvYyhzaXplb2YoKm1lbWNodW5rKSAqIChzaXplX3Qpbml0ZW1zKTsKLSAgICBpZiAoIW1lbWNodW5rKSB7CisgICAgaWYoIW1lbWNodW5rKSB7CiAgICAgICBmcHJpbnRmKHN0ZGVyciwgIm1lbWNodW5rLCBtYWxsb2MoKSBmYWlsZWRcbiIpOwogICAgICAgbml0ZW1zIC89IDI7CiAgICAgfQotICB9IHdoaWxlIChuaXRlbXMgJiYgIW1lbWNodW5rKTsKLSAgaWYgKCFtZW1jaHVuaykgeworICB9IHdoaWxlKG5pdGVtcyAmJiAhbWVtY2h1bmspOworICBpZighbWVtY2h1bmspIHsKICAgICBzdG9yZV9lcnJtc2coIm1lbWNodW5rLCBtYWxsb2MoKSBmYWlsZWQiLCBFUlJOTyk7CiAgICAgZnByaW50ZihzdGRlcnIsICIlc1xuIiwgbXNnYnVmZik7CiAgICAgcmV0dXJuIC01OwpAQCAtMjc2LDcgKzI3Nyw3IEBACiAKICAgZnByaW50ZihzdGRlcnIsICJpbml0aWFsaXppbmcgbWVtY2h1bmsgYXJyYXlcbiIpOwogCi0gIGZvciAoaSA9IDA7IGkgPCBuaXRlbXM7IGkrKykKKyAgZm9yKGkgPSAwOyBpIDwgbml0ZW1zOyBpKyspCiAgICAgbWVtY2h1bmtbaV0gPSAtMTsKIAogICAvKiBzZXQgdGhlIG51bWJlciBvZiBmaWxlIGRlc2NyaXB0b3JzIHdlIHdpbGwgdHJ5IHRvIG9wZW4gKi8KQEAgLTI4NSwxMCArMjg2LDEwIEBACiAKICAgLyogdmVyaWZ5IHRoYXQgd2Ugd29uJ3Qgb3ZlcmZsb3cgc2l6ZV90IGluIG1hbGxvYygpICovCiAKLSAgaWYgKChzaXplX3QpKG51bV9vcGVuLnJsaW1fbWF4KSA+ICgoc2l6ZV90KS0xKSAvIHNpemVvZigqZmQpKSB7Ci0gICAgc3ByaW50ZihzdHJidWZmMSwgZm10LCBudW1fb3Blbi5ybGltX21heCk7Ci0gICAgc3ByaW50ZihzdHJidWZmLCAidW5hYmxlIHRvIGFsbG9jYXRlIGFuIGFycmF5IGZvciAlcyAiCi0gICAgICAgICAgICAiZmlsZSBkZXNjcmlwdG9ycywgd291bGQgb3ZlcmZsb3cgc2l6ZV90Iiwgc3RyYnVmZjEpOworICBpZigoc2l6ZV90KShudW1fb3Blbi5ybGltX21heCkgPiAoKHNpemVfdCktMSkgLyBzaXplb2YoKmZkKSkgeworICAgIHNucHJpbnRmKHN0cmJ1ZmYxLCBzaXplb2Yoc3RyYnVmZjEpLCBmbXQsIG51bV9vcGVuLnJsaW1fbWF4KTsKKyAgICBzbnByaW50ZihzdHJidWZmLCBzaXplb2Yoc3RyYnVmZiksICJ1bmFibGUgdG8gYWxsb2NhdGUgYW4gYXJyYXkgZm9yICVzICIKKyAgICAgICAgICAgICAiZmlsZSBkZXNjcmlwdG9ycywgd291bGQgb3ZlcmZsb3cgc2l6ZV90Iiwgc3RyYnVmZjEpOwogICAgIHN0b3JlX2Vycm1zZyhzdHJidWZmLCAwKTsKICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCBtc2didWZmKTsKICAgICBmcmVlKG1lbWNodW5rKTsKQEAgLTI5NywxMSArMjk4LDExIEBACiAKICAgLyogYWxsb2NhdGUgYXJyYXkgZm9yIGZpbGUgZGVzY3JpcHRvcnMgKi8KIAotICBzcHJpbnRmKHN0cmJ1ZmYsIGZtdCwgbnVtX29wZW4ucmxpbV9tYXgpOworICBzbnByaW50ZihzdHJidWZmLCBzaXplb2Yoc3RyYnVmZiksIGZtdCwgbnVtX29wZW4ucmxpbV9tYXgpOwogICBmcHJpbnRmKHN0ZGVyciwgImFsbG9jYXRpbmcgYXJyYXkgZm9yICVzIGZpbGUgZGVzY3JpcHRvcnNcbiIsIHN0cmJ1ZmYpOwogCiAgIGZkID0gbWFsbG9jKHNpemVvZigqZmQpICogKHNpemVfdCkobnVtX29wZW4ucmxpbV9tYXgpKTsKLSAgaWYgKCFmZCkgeworICBpZighZmQpIHsKICAgICBzdG9yZV9lcnJtc2coImZkLCBtYWxsb2MoKSBmYWlsZWQiLCBFUlJOTyk7CiAgICAgZnByaW50ZihzdGRlcnIsICIlc1xuIiwgbXNnYnVmZik7CiAgICAgZnJlZShtZW1jaHVuayk7CkBAIC0zMTIsMTkgKzMxMywxOSBAQAogCiAgIGZwcmludGYoc3RkZXJyLCAiaW5pdGlhbGl6aW5nIGZkIGFycmF5XG4iKTsKIAotICBmb3IgKG51bV9vcGVuLnJsaW1fY3VyID0gMDsKLSAgICAgICBudW1fb3Blbi5ybGltX2N1ciA8IG51bV9vcGVuLnJsaW1fbWF4OwotICAgICAgIG51bV9vcGVuLnJsaW1fY3VyKyspCisgIGZvcihudW1fb3Blbi5ybGltX2N1ciA9IDA7CisgICAgICBudW1fb3Blbi5ybGltX2N1ciA8IG51bV9vcGVuLnJsaW1fbWF4OworICAgICAgbnVtX29wZW4ucmxpbV9jdXIrKykKICAgICBmZFtudW1fb3Blbi5ybGltX2N1cl0gPSAtMTsKIAotICBzcHJpbnRmKHN0cmJ1ZmYsIGZtdCwgbnVtX29wZW4ucmxpbV9tYXgpOworICBzbnByaW50ZihzdHJidWZmLCBzaXplb2Yoc3RyYnVmZiksIGZtdCwgbnVtX29wZW4ucmxpbV9tYXgpOwogICBmcHJpbnRmKHN0ZGVyciwgInRyeWluZyB0byBvcGVuICVzIGZpbGUgZGVzY3JpcHRvcnNcbiIsIHN0cmJ1ZmYpOwogCiAgIC8qIG9wZW4gYSBkdW1teSBkZXNjcmlwdG9yICovCiAKICAgZmRbMF0gPSBvcGVuKERFVl9OVUxMLCBPX1JET05MWSk7Ci0gIGlmIChmZFswXSA8IDApIHsKLSAgICBzcHJpbnRmKHN0cmJ1ZmYsICJvcGVuaW5nIG9mICVzIGZhaWxlZCIsIERFVl9OVUxMKTsKKyAgaWYoZmRbMF0gPCAwKSB7CisgICAgc25wcmludGYoc3RyYnVmZiwgc2l6ZW9mKHN0cmJ1ZmYpLCAib3BlbmluZyBvZiAlcyBmYWlsZWQiLCBERVZfTlVMTCk7CiAgICAgc3RvcmVfZXJybXNnKHN0cmJ1ZmYsIEVSUk5PKTsKICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCBtc2didWZmKTsKICAgICBmcmVlKGZkKTsKQEAgLTMzNSwzNiArMzM2LDM3IEBACiAKICAgLyogY3JlYXRlIGEgYnVuY2ggb2YgZmlsZSBkZXNjcmlwdG9ycyAqLwogCi0gIGZvciAobnVtX29wZW4ucmxpbV9jdXIgPSAxOwotICAgICAgIG51bV9vcGVuLnJsaW1fY3VyIDwgbnVtX29wZW4ucmxpbV9tYXg7Ci0gICAgICAgbnVtX29wZW4ucmxpbV9jdXIrKykgeworICBmb3IobnVtX29wZW4ucmxpbV9jdXIgPSAxOworICAgICAgbnVtX29wZW4ucmxpbV9jdXIgPCBudW1fb3Blbi5ybGltX21heDsKKyAgICAgIG51bV9vcGVuLnJsaW1fY3VyKyspIHsKIAogICAgIGZkW251bV9vcGVuLnJsaW1fY3VyXSA9IGR1cChmZFswXSk7CiAKLSAgICBpZiAoZmRbbnVtX29wZW4ucmxpbV9jdXJdIDwgMCkgeworICAgIGlmKGZkW251bV9vcGVuLnJsaW1fY3VyXSA8IDApIHsKIAogICAgICAgZmRbbnVtX29wZW4ucmxpbV9jdXJdID0gLTE7CiAKLSAgICAgIHNwcmludGYoc3RyYnVmZjEsIGZtdCwgbnVtX29wZW4ucmxpbV9jdXIpOwotICAgICAgc3ByaW50ZihzdHJidWZmLCAiZHVwKCkgYXR0ZW1wdCAlcyBmYWlsZWQiLCBzdHJidWZmMSk7CisgICAgICBzbnByaW50ZihzdHJidWZmMSwgc2l6ZW9mKHN0cmJ1ZmYxKSwgZm10LCBudW1fb3Blbi5ybGltX2N1cik7CisgICAgICBzbnByaW50ZihzdHJidWZmLCBzaXplb2Yoc3RyYnVmZiksICJkdXAoKSBhdHRlbXB0ICVzIGZhaWxlZCIsIHN0cmJ1ZmYxKTsKICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXNcbiIsIHN0cmJ1ZmYpOwogCi0gICAgICBzcHJpbnRmKHN0cmJ1ZmYxLCBmbXQsIG51bV9vcGVuLnJsaW1fY3VyKTsKLSAgICAgIHNwcmludGYoc3RyYnVmZiwgImZkcyBzeXN0ZW0gbGltaXQgc2VlbXMgY2xvc2UgdG8gJXMiLCBzdHJidWZmMSk7CisgICAgICBzbnByaW50ZihzdHJidWZmMSwgc2l6ZW9mKHN0cmJ1ZmYpLCBmbXQsIG51bV9vcGVuLnJsaW1fY3VyKTsKKyAgICAgIHNucHJpbnRmKHN0cmJ1ZmYsIHNpemVvZihzdHJidWZmKSwgImZkcyBzeXN0ZW0gbGltaXQgc2VlbXMgY2xvc2UgdG8gJXMiLAorICAgICAgICAgICAgICAgc3RyYnVmZjEpOwogICAgICAgZnByaW50ZihzdGRlcnIsICIlc1xuIiwgc3RyYnVmZik7CiAKICAgICAgIG51bV9vcGVuLnJsaW1fbWF4ID0gTlVNX05FRURFRDsKIAotICAgICAgc3ByaW50ZihzdHJidWZmMiwgZm10LCBudW1fb3Blbi5ybGltX21heCk7Ci0gICAgICBzcHJpbnRmKHN0cmJ1ZmYxLCBmbXQsIG51bV9vcGVuLnJsaW1fY3VyKTsKLSAgICAgIHNwcmludGYoc3RyYnVmZiwgImZkcyBuZWVkZWQgJXMgPiBzeXN0ZW0gbGltaXQgJXMiLAotICAgICAgICAgICAgICBzdHJidWZmMiwgc3RyYnVmZjEpOworICAgICAgc25wcmludGYoc3RyYnVmZjIsIHNpemVvZihzdHJidWZmMiksIGZtdCwgbnVtX29wZW4ucmxpbV9tYXgpOworICAgICAgc25wcmludGYoc3RyYnVmZjEsIHNpemVvZihzdHJidWZmMSksIGZtdCwgbnVtX29wZW4ucmxpbV9jdXIpOworICAgICAgc25wcmludGYoc3RyYnVmZiwgc2l6ZW9mKHN0cmJ1ZmYpLCAiZmRzIG5lZWRlZCAlcyA+IHN5c3RlbSBsaW1pdCAlcyIsCisgICAgICAgICAgICAgICBzdHJidWZmMiwgc3RyYnVmZjEpOwogICAgICAgc3RvcmVfZXJybXNnKHN0cmJ1ZmYsIDApOwogICAgICAgZnByaW50ZihzdGRlcnIsICIlc1xuIiwgbXNnYnVmZik7CiAKLSAgICAgIGZvciAobnVtX29wZW4ucmxpbV9jdXIgPSAwOwotICAgICAgICAgICBmZFtudW1fb3Blbi5ybGltX2N1cl0gPj0gMDsKLSAgICAgICAgICAgbnVtX29wZW4ucmxpbV9jdXIrKykKKyAgICAgIGZvcihudW1fb3Blbi5ybGltX2N1ciA9IDA7CisgICAgICAgICAgZmRbbnVtX29wZW4ucmxpbV9jdXJdID49IDA7CisgICAgICAgICAgbnVtX29wZW4ucmxpbV9jdXIrKykKICAgICAgICAgY2xvc2UoZmRbbnVtX29wZW4ucmxpbV9jdXJdKTsKICAgICAgIGZyZWUoZmQpOwogICAgICAgZmQgPSBOVUxMOwpAQCAtMzc1LDcgKzM3Nyw3IEBACiAKICAgfQogCi0gIHNwcmludGYoc3RyYnVmZiwgZm10LCBudW1fb3Blbi5ybGltX21heCk7CisgIHNucHJpbnRmKHN0cmJ1ZmYsIHNpemVvZihzdHJidWZmKSwgZm10LCBudW1fb3Blbi5ybGltX21heCk7CiAgIGZwcmludGYoc3RkZXJyLCAiJXMgZmlsZSBkZXNjcmlwdG9ycyBvcGVuXG4iLCBzdHJidWZmKTsKIAogI2lmICFkZWZpbmVkKEhBVkVfUE9MTF9GSU5FKSAgICAmJiBcCkBAIC0zOTQsOCArMzk2LDkgQEAKICAgICovCiAKICAgbnVtX29wZW4ucmxpbV9jdXIgPSBGRF9TRVRTSVpFIC0gU0FGRVRZX01BUkdJTjsKLSAgaWYgKG51bV9vcGVuLnJsaW1fbWF4ID4gbnVtX29wZW4ucmxpbV9jdXIpIHsKLSAgICBzcHJpbnRmKHN0cmJ1ZmYsICJzZWxlY3QgbGltaXQgaXMgRkRfU0VUU0laRSAlZCIsIEZEX1NFVFNJWkUpOworICBpZihudW1fb3Blbi5ybGltX21heCA+IG51bV9vcGVuLnJsaW1fY3VyKSB7CisgICAgc25wcmludGYoc3RyYnVmZiwgc2l6ZW9mKHN0cmJ1ZmYpLCAic2VsZWN0IGxpbWl0IGlzIEZEX1NFVFNJWkUgJWQiLAorICAgICAgICAgICAgIEZEX1NFVFNJWkUpOwogICAgIHN0b3JlX2Vycm1zZyhzdHJidWZmLCAwKTsKICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCBtc2didWZmKTsKICAgICBjbG9zZV9maWxlX2Rlc2NyaXB0b3JzKCk7CkBAIC00MDQsMTIgKzQwNywxMyBAQAogICB9CiAKICAgbnVtX29wZW4ucmxpbV9jdXIgPSBGRF9TRVRTSVpFIC0gU0FGRVRZX01BUkdJTjsKLSAgZm9yIChybC5ybGltX2N1ciA9IDA7Ci0gICAgICAgcmwucmxpbV9jdXIgPCBudW1fb3Blbi5ybGltX21heDsKLSAgICAgICBybC5ybGltX2N1cisrKSB7Ci0gICAgaWYgKChmZFtybC5ybGltX2N1cl0gPiAwKSAmJgorICBmb3IocmwucmxpbV9jdXIgPSAwOworICAgICAgcmwucmxpbV9jdXIgPCBudW1fb3Blbi5ybGltX21heDsKKyAgICAgIHJsLnJsaW1fY3VyKyspIHsKKyAgICBpZigoZmRbcmwucmxpbV9jdXJdID4gMCkgJiYKICAgICAgICAoKHVuc2lnbmVkIGludClmZFtybC5ybGltX2N1cl0gPiBudW1fb3Blbi5ybGltX2N1cikpIHsKLSAgICAgIHNwcmludGYoc3RyYnVmZiwgInNlbGVjdCBsaW1pdCBpcyBGRF9TRVRTSVpFICVkIiwgRkRfU0VUU0laRSk7CisgICAgICBzbnByaW50ZihzdHJidWZmLCBzaXplb2Yoc3RyYnVmZiksICJzZWxlY3QgbGltaXQgaXMgRkRfU0VUU0laRSAlZCIsCisgICAgICAgICAgICAgICBGRF9TRVRTSVpFKTsKICAgICAgIHN0b3JlX2Vycm1zZyhzdHJidWZmLCAwKTsKICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXNcbiIsIG1zZ2J1ZmYpOwogICAgICAgY2xvc2VfZmlsZV9kZXNjcmlwdG9ycygpOwpAQCAtNDI5LDEyICs0MzMsMTQgQEAKICAgICogaWYgaXQgaXMgY2FwYWJsZSBvZiBmb3BlbigpaW5nIHNvbWUgYWRkaXRpb25hbCBmaWxlcy4KICAgICovCiAKLSAgaWYgKCFmb3Blbl93b3JrcygpKSB7Ci0gICAgc3ByaW50ZihzdHJidWZmMSwgZm10LCBudW1fb3Blbi5ybGltX21heCk7Ci0gICAgc3ByaW50ZihzdHJidWZmLCAic3RkaW8gZm9wZW4oKSBmYWlscyB3aXRoICVzIGZkcyBvcGVuKCkiLAotICAgICAgICAgICAgc3RyYnVmZjEpOworICBpZighZm9wZW5fd29ya3MoKSkgeworICAgIHNucHJpbnRmKHN0cmJ1ZmYxLCBzaXplb2Yoc3RyYnVmZjEpLCBmbXQsIG51bV9vcGVuLnJsaW1fbWF4KTsKKyAgICBzbnByaW50ZihzdHJidWZmLCBzaXplb2Yoc3RyYnVmZiksCisgICAgICAgICAgICAgImZvcGVuIGZhaWxzIHdpdGggJXMgZmRzIG9wZW4oKSIsCisgICAgICAgICAgICAgc3RyYnVmZjEpOwogICAgIGZwcmludGYoc3RkZXJyLCAiJXNcbiIsIG1zZ2J1ZmYpOwotICAgIHNwcmludGYoc3RyYnVmZiwgInN0ZGlvIGZvcGVuKCkgZmFpbHMgd2l0aCBsb3RzIG9mIGZkcyBvcGVuKCkiKTsKKyAgICBzbnByaW50ZihzdHJidWZmLCBzaXplb2Yoc3RyYnVmZiksCisgICAgICAgICAgICAgImZvcGVuIGZhaWxzIHdpdGggbG90cyBvZiBmZHMgb3BlbigpIik7CiAgICAgc3RvcmVfZXJybXNnKHN0cmJ1ZmYsIDApOwogICAgIGNsb3NlX2ZpbGVfZGVzY3JpcHRvcnMoKTsKICAgICBmcmVlKG1lbWNodW5rKTsKQEAgLTQ0OCw3ICs0NTQsNyBAQAogCiAgIC8qIGNsb3NlIGZpbGUgZGVzY3JpcHRvcnMgdW5sZXNzIGluc3RydWN0ZWQgdG8ga2VlcCB0aGVtICovCiAKLSAgaWYgKCFrZWVwX29wZW4pIHsKKyAgaWYoIWtlZXBfb3BlbikgewogICAgIGNsb3NlX2ZpbGVfZGVzY3JpcHRvcnMoKTsKICAgfQogCkBAIC00NjksNyArNDc1LDcgQEAKICAgICByZXR1cm4gMDsgLyogc3VyZSwgcnVuIHRoaXMhICovCiAgIH0KIAotICBpZiAocmxpbWl0KFRSVUUpKSB7CisgIGlmKHJsaW1pdChUUlVFKSkgewogICAgIC8qIGZhaWx1cmUgKi8KICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwogICB9CkBAIC00NzcsMTMgKzQ4MywxMyBAQAogICAvKiBydW4gdGhlIHRlc3Qgd2l0aCB0aGUgYnVuY2ggb2Ygb3BlbiBmaWxlIGRlc2NyaXB0b3JzCiAgICAgIGFuZCBjbG9zZSB0aGVtIGFsbCBvbmNlIHRoZSB0ZXN0IGlzIG92ZXIgKi8KIAotICBpZiAoY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpICE9IENVUkxFX09LKSB7CisgIGlmKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9nbG9iYWxfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgY2xvc2VfZmlsZV9kZXNjcmlwdG9ycygpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CiAgIH0KIAotICBpZiAoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CisgIGlmKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9lYXN5X2luaXQoKSBmYWlsZWRcbiIpOwogICAgIGNsb3NlX2ZpbGVfZGVzY3JpcHRvcnMoKTsKICAgICBjdXJsX2dsb2JhbF9jbGVhbnVwKCk7CmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYjUxOS5jIGIvdGVzdHMvbGlidGVzdC9saWI1MTkuYwppbmRleCBiNzIwYzhmLi42ZTMwNTk4IDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYjUxOS5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliNTE5LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDExLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yOCwxMiArMjgsMTIgQEAKICAgQ1VSTGNvZGUgcmVzOwogICBDVVJMICpjdXJsOwogCi0gIGlmIChjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKKyAgaWYoY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpICE9IENVUkxFX09LKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2dsb2JhbF9pbml0KCkgZmFpbGVkXG4iKTsKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwogICB9CiAKLSAgaWYgKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgeworICBpZigoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZWFzeV9pbml0KCkgZmFpbGVkXG4iKTsKICAgICBjdXJsX2dsb2JhbF9jbGVhbnVwKCk7CiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliNTIwLmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjUyMC5jCmluZGV4IDlmZmFhNGYuLmI1YTcxZGEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliNTIwLmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWI1MjAuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTEsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTI4LDEyICsyOCwxMiBAQAogICBDVVJMY29kZSByZXM7CiAgIENVUkwgKmN1cmw7CiAKLSAgaWYgKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgeworICBpZihjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZ2xvYmFsX2luaXQoKSBmYWlsZWRcbiIpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CiAgIH0KIAotICBpZiAoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CisgIGlmKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9lYXN5X2luaXQoKSBmYWlsZWRcbiIpOwogICAgIGN1cmxfZ2xvYmFsX2NsZWFudXAoKTsKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWI1MjEuYyBiL3Rlc3RzL2xpYnRlc3QvbGliNTIxLmMKaW5kZXggOTNjMzA2OC4uNDBmNGRlZiAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWI1MjEuYworKysgYi90ZXN0cy9saWJ0ZXN0L2xpYjUyMS5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjgsMTIgKzI4LDEyIEBACiAgIENVUkxjb2RlIHJlczsKICAgQ1VSTCAqY3VybDsKIAotICBpZiAoY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpICE9IENVUkxFX09LKSB7CisgIGlmKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9nbG9iYWxfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKICAgfQogCi0gIGlmICgoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKKyAgaWYoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2Vhc3lfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgY3VybF9nbG9iYWxfY2xlYW51cCgpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYjUyMy5jIGIvdGVzdHMvbGlidGVzdC9saWI1MjMuYwppbmRleCAwZmRjODNkLi5mMzI2NDY5IDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYjUyMy5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliNTIzLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDExLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yOCwxMiArMjgsMTIgQEAKICAgQ1VSTGNvZGUgcmVzOwogICBDVVJMICpjdXJsOwogCi0gIGlmIChjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKKyAgaWYoY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpICE9IENVUkxFX09LKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2dsb2JhbF9pbml0KCkgZmFpbGVkXG4iKTsKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwogICB9CiAKLSAgaWYgKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgeworICBpZigoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZWFzeV9pbml0KCkgZmFpbGVkXG4iKTsKICAgICBjdXJsX2dsb2JhbF9jbGVhbnVwKCk7CiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliNTI0LmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjUyNC5jCmluZGV4IDZmNTZkZjkuLjM0NDA1NjIgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliNTI0LmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWI1MjQuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTEsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTI4LDEyICsyOCwxMiBAQAogICBDVVJMY29kZSByZXM7CiAgIENVUkwgKmN1cmw7CiAKLSAgaWYgKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgeworICBpZihjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZ2xvYmFsX2luaXQoKSBmYWlsZWRcbiIpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CiAgIH0KIAotICBpZiAoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CisgIGlmKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9lYXN5X2luaXQoKSBmYWlsZWRcbiIpOwogICAgIGN1cmxfZ2xvYmFsX2NsZWFudXAoKTsKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWI1MjUuYyBiL3Rlc3RzL2xpYnRlc3QvbGliNTI1LmMKaW5kZXggY2ExMjhjYi4uNGJmMjU5ZCAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWI1MjUuYworKysgYi90ZXN0cy9saWJ0ZXN0L2xpYjUyNS5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzQsNyArMzQsNyBAQAogICBpbnQgcmVzID0gMDsKICAgQ1VSTCAqY3VybCA9IE5VTEw7CiAgIEZJTEUgKmhkX3NyYyA9IE5VTEw7Ci0gIGludCBoZCA7CisgIGludCBoZDsKICAgaW50IGVycm9yOwogICBzdHJ1Y3Rfc3RhdCBmaWxlX2luZm87CiAgIENVUkxNICptID0gTlVMTDsKQEAgLTU2LDcgKzU2LDcgQEAKICAgaGRfc3JjID0gZm9wZW4obGlidGVzdF9hcmcyLCAicmIiKTsKICAgaWYoTlVMTCA9PSBoZF9zcmMpIHsKICAgICBlcnJvciA9IEVSUk5POwotICAgIGZwcmludGYoc3RkZXJyLCAiZm9wZW4oKSBmYWlsZWQgd2l0aCBlcnJvcjogJWQgKCVzKVxuIiwKKyAgICBmcHJpbnRmKHN0ZGVyciwgImZvcGVuIGZhaWxlZCB3aXRoIGVycm9yOiAlZCAoJXMpXG4iLAogICAgICAgICAgICAgZXJyb3IsIHN0cmVycm9yKGVycm9yKSk7CiAgICAgZnByaW50ZihzdGRlcnIsICJFcnJvciBvcGVuaW5nIGZpbGU6ICglcylcbiIsIGxpYnRlc3RfYXJnMik7CiAgICAgcmV0dXJuIFRFU1RfRVJSX0ZPUEVOOwpAQCAtODYsNyArODYsNyBAQAogICBlYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1VQTE9BRCwgMUwpOwogCiAgIC8qIHNwZWNpZnkgdGFyZ2V0ICovCi0gIGVhc3lfc2V0b3B0KGN1cmwsQ1VSTE9QVF9VUkwsIFVSTCk7CisgIGVhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfVVJMLCBVUkwpOwogCiAgIC8qIGdvIHZlcmJvc2UgKi8KICAgZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9WRVJCT1NFLCAxTCk7CmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYjUyNi5jIGIvdGVzdHMvbGlidGVzdC9saWI1MjYuYwppbmRleCA5ZGIwNGRiLi4wY2U3ZWJiIDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYjUyNi5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliNTI2LmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWI1MzAuYyBiL3Rlc3RzL2xpYnRlc3QvbGliNTMwLmMKaW5kZXggZTYwZDExNy4uODJiZmFiMyAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWI1MzAuYworKysgYi90ZXN0cy9saWJ0ZXN0L2xpYjUzMC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNTMsNyArNTMsNyBAQAogICAgIC8qIGdldCBhbiBlYXN5IGhhbmRsZSAqLwogICAgIGVhc3lfaW5pdChjdXJsW2ldKTsKICAgICAvKiBzcGVjaWZ5IHRhcmdldCAqLwotICAgIHNwcmludGYodGFyZ2V0X3VybCwgIiVzJTA0aSIsIFVSTCwgaSArIDEpOworICAgIHNucHJpbnRmKHRhcmdldF91cmwsIHNpemVvZih0YXJnZXRfdXJsKSwgIiVzJTA0aSIsIFVSTCwgaSArIDEpOwogICAgIHRhcmdldF91cmxbc2l6ZW9mKHRhcmdldF91cmwpIC0gMV0gPSAnXDAnOwogICAgIGVhc3lfc2V0b3B0KGN1cmxbaV0sIENVUkxPUFRfVVJMLCB0YXJnZXRfdXJsKTsKICAgICAvKiBnbyB2ZXJib3NlICovCmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYjUzMy5jIGIvdGVzdHMvbGlidGVzdC9saWI1MzMuYwppbmRleCBmZGMxOGExLi43MDZiMjY5IDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYjUzMy5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliNTMzLmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWI1MzYuYyBiL3Rlc3RzL2xpYnRlc3QvbGliNTM2LmMKaW5kZXggZTNhZTQwMi4uZjNiYTU3MyAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWI1MzYuYworKysgYi90ZXN0cy9saWJ0ZXN0L2xpYjUzNi5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliNTM3LmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjUzNy5jCmluZGV4IDVkYTUzNzkuLmMxNTYxNDEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliNTM3LmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWI1MzcuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTMsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTU3LDE4ICs1NywxOSBAQAogCiBzdGF0aWMgdm9pZCBzdG9yZV9lcnJtc2coY29uc3QgY2hhciAqbXNnLCBpbnQgZXJyKQogewotICBpZiAoIWVycikKLSAgICBzcHJpbnRmKG1zZ2J1ZmYsICIlcyIsIG1zZyk7CisgIGlmKCFlcnIpCisgICAgc25wcmludGYobXNnYnVmZiwgc2l6ZW9mKG1zZ2J1ZmYpLCAiJXMiLCBtc2cpOwogICBlbHNlCi0gICAgc3ByaW50Zihtc2didWZmLCAiJXMsIGVycm5vICVkLCAlcyIsIG1zZywgZXJyLCBzdHJlcnJvcihlcnIpKTsKKyAgICBzbnByaW50Zihtc2didWZmLCBzaXplb2YobXNnYnVmZiksICIlcywgZXJybm8gJWQsICVzIiwgbXNnLCBlcnIsCisgICAgICAgICAgICAgc3RyZXJyb3IoZXJyKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGNsb3NlX2ZpbGVfZGVzY3JpcHRvcnModm9pZCkKIHsKLSAgZm9yIChudW1fb3Blbi5ybGltX2N1ciA9IDA7Ci0gICAgICAgbnVtX29wZW4ucmxpbV9jdXIgPCBudW1fb3Blbi5ybGltX21heDsKLSAgICAgICBudW1fb3Blbi5ybGltX2N1cisrKQotICAgIGlmIChmZFtudW1fb3Blbi5ybGltX2N1cl0gPiAwKQorICBmb3IobnVtX29wZW4ucmxpbV9jdXIgPSAwOworICAgICAgbnVtX29wZW4ucmxpbV9jdXIgPCBudW1fb3Blbi5ybGltX21heDsKKyAgICAgIG51bV9vcGVuLnJsaW1fY3VyKyspCisgICAgaWYoZmRbbnVtX29wZW4ucmxpbV9jdXJdID4gMCkKICAgICAgIGNsb3NlKGZkW251bV9vcGVuLnJsaW1fY3VyXSk7CiAgIGZyZWUoZmQpOwogICBmZCA9IE5VTEw7CkBAIC04MCwyMCArODEsMjAgQEAKICAgaW50IGk7CiAgIGludCByZXQgPSAxOwogCi0gIGZvciAoaSA9IDA7IGkgPCAzOyBpKyspIHsKKyAgZm9yKGkgPSAwOyBpIDwgMzsgaSsrKSB7CiAgICAgZnBhW2ldID0gTlVMTDsKICAgfQotICBmb3IgKGkgPSAwOyBpIDwgMzsgaSsrKSB7Ci0gICAgZnBhW2ldID0gZm9wZW4oREVWX05VTEwsICJyIik7Ci0gICAgaWYgKGZwYVtpXSA9PSBOVUxMKSB7Ci0gICAgICBzdG9yZV9lcnJtc2coImZvcGVuKCkgZmFpbGVkIiwgRVJSTk8pOworICBmb3IoaSA9IDA7IGkgPCAzOyBpKyspIHsKKyAgICBmcGFbaV0gPSBmb3BlbihERVZfTlVMTCwgRk9QRU5fUkVBRFRFWFQpOworICAgIGlmKGZwYVtpXSA9PSBOVUxMKSB7CisgICAgICBzdG9yZV9lcnJtc2coImZvcGVuIGZhaWxlZCIsIEVSUk5PKTsKICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXNcbiIsIG1zZ2J1ZmYpOwogICAgICAgcmV0ID0gMDsKICAgICAgIGJyZWFrOwogICAgIH0KICAgfQotICBmb3IgKGkgPSAwOyBpIDwgMzsgaSsrKSB7Ci0gICAgaWYgKGZwYVtpXSAhPSBOVUxMKQorICBmb3IoaSA9IDA7IGkgPCAzOyBpKyspIHsKKyAgICBpZihmcGFbaV0gIT0gTlVMTCkKICAgICAgIGZjbG9zZShmcGFbaV0pOwogICB9CiAgIHJldHVybiByZXQ7CkBAIC0xMTMsNyArMTE0LDcgQEAKICNpZmRlZiBIQVZFX0xPTkdMT05HCiAgIGNoYXIgZm10X2xsdVtdID0gIiVsbHUiOwogCi0gIGlmIChzaXplb2YocmwucmxpbV9tYXgpID4gc2l6ZW9mKGxvbmcpKQorICBpZihzaXplb2YocmwucmxpbV9tYXgpID4gc2l6ZW9mKGxvbmcpKQogICAgIGZtdCA9IGZtdF9sbHU7CiAgIGVsc2UKICNlbmRpZgpAQCAtMTIxLDcgKzEyMiw3IEBACiAKICAgLyogZ2V0IGluaXRpYWwgb3BlbiBmaWxlIGxpbWl0cyAqLwogCi0gIGlmIChnZXRybGltaXQoUkxJTUlUX05PRklMRSwgJnJsKSAhPSAwKSB7CisgIGlmKGdldHJsaW1pdChSTElNSVRfTk9GSUxFLCAmcmwpICE9IDApIHsKICAgICBzdG9yZV9lcnJtc2coImdldHJsaW1pdCgpIGZhaWxlZCIsIEVSUk5PKTsKICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCBtc2didWZmKTsKICAgICByZXR1cm4gLTE7CkBAIC0xMzAsMTkgKzEzMSwxOSBAQAogICAvKiBzaG93IGluaXRpYWwgb3BlbiBmaWxlIGxpbWl0cyAqLwogCiAjaWZkZWYgUkxJTV9JTkZJTklUWQotICBpZiAocmwucmxpbV9jdXIgPT0gUkxJTV9JTkZJTklUWSkKKyAgaWYocmwucmxpbV9jdXIgPT0gUkxJTV9JTkZJTklUWSkKICAgICBzdHJjcHkoc3RyYnVmZiwgIklORklOSVRZIik7CiAgIGVsc2UKICNlbmRpZgotICAgIHNwcmludGYoc3RyYnVmZiwgZm10LCBybC5ybGltX2N1cik7CisgICAgc25wcmludGYoc3RyYnVmZiwgc2l6ZW9mKHN0cmJ1ZmYpLCBmbXQsIHJsLnJsaW1fY3VyKTsKICAgZnByaW50ZihzdGRlcnIsICJpbml0aWFsIHNvZnQgbGltaXQ6ICVzXG4iLCBzdHJidWZmKTsKIAogI2lmZGVmIFJMSU1fSU5GSU5JVFkKLSAgaWYgKHJsLnJsaW1fbWF4ID09IFJMSU1fSU5GSU5JVFkpCisgIGlmKHJsLnJsaW1fbWF4ID09IFJMSU1fSU5GSU5JVFkpCiAgICAgc3RyY3B5KHN0cmJ1ZmYsICJJTkZJTklUWSIpOwogICBlbHNlCiAjZW5kaWYKLSAgICBzcHJpbnRmKHN0cmJ1ZmYsIGZtdCwgcmwucmxpbV9tYXgpOworICAgIHNucHJpbnRmKHN0cmJ1ZmYsIHNpemVvZihzdHJidWZmKSwgZm10LCBybC5ybGltX21heCk7CiAgIGZwcmludGYoc3RkZXJyLCAiaW5pdGlhbCBoYXJkIGxpbWl0OiAlc1xuIiwgc3RyYnVmZik7CiAKICAgLyoKQEAgLTE1NCwxNCArMTU1LDE0IEBACiAgICAqIG9wZW4gbW9yZSB0aGFuIHNvZnQgbGltaXQgZmlsZSBkZXNjcmlwdG9ycyB3aWxsIGZhaWwuCiAgICAqLwogCi0gIGlmIChybC5ybGltX2N1ciAhPSBybC5ybGltX21heCkgeworICBpZihybC5ybGltX2N1ciAhPSBybC5ybGltX21heCkgewogCiAjaWZkZWYgT1BFTl9NQVgKLSAgICBpZiAoKHJsLnJsaW1fY3VyID4gMCkgJiYKKyAgICBpZigocmwucmxpbV9jdXIgPiAwKSAmJgogICAgICAgICAocmwucmxpbV9jdXIgPCBPUEVOX01BWCkpIHsKICAgICAgIGZwcmludGYoc3RkZXJyLCAicmFpc2luZyBzb2Z0IGxpbWl0IHVwIHRvIE9QRU5fTUFYXG4iKTsKICAgICAgIHJsLnJsaW1fY3VyID0gT1BFTl9NQVg7Ci0gICAgICBpZiAoc2V0cmxpbWl0KFJMSU1JVF9OT0ZJTEUsICZybCkgIT0gMCkgeworICAgICAgaWYoc2V0cmxpbWl0KFJMSU1JVF9OT0ZJTEUsICZybCkgIT0gMCkgewogICAgICAgICAvKiBvbiBmYWlsdXJlIGRvbid0IGFib3J0IGp1c3QgaXNzdWUgYSB3YXJuaW5nICovCiAgICAgICAgIHN0b3JlX2Vycm1zZygic2V0cmxpbWl0KCkgZmFpbGVkIiwgRVJSTk8pOwogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCBtc2didWZmKTsKQEAgLTE3Miw3ICsxNzMsNyBAQAogCiAgICAgZnByaW50ZihzdGRlcnIsICJyYWlzaW5nIHNvZnQgbGltaXQgdXAgdG8gaGFyZCBsaW1pdFxuIik7CiAgICAgcmwucmxpbV9jdXIgPSBybC5ybGltX21heDsKLSAgICBpZiAoc2V0cmxpbWl0KFJMSU1JVF9OT0ZJTEUsICZybCkgIT0gMCkgeworICAgIGlmKHNldHJsaW1pdChSTElNSVRfTk9GSUxFLCAmcmwpICE9IDApIHsKICAgICAgIC8qIG9uIGZhaWx1cmUgZG9uJ3QgYWJvcnQganVzdCBpc3N1ZSBhIHdhcm5pbmcgKi8KICAgICAgIHN0b3JlX2Vycm1zZygic2V0cmxpbWl0KCkgZmFpbGVkIiwgRVJSTk8pOwogICAgICAgZnByaW50ZihzdGRlcnIsICIlc1xuIiwgbXNnYnVmZik7CkBAIC0xODEsNyArMTgyLDcgQEAKIAogICAgIC8qIGdldCBjdXJyZW50IG9wZW4gZmlsZSBsaW1pdHMgKi8KIAotICAgIGlmIChnZXRybGltaXQoUkxJTUlUX05PRklMRSwgJnJsKSAhPSAwKSB7CisgICAgaWYoZ2V0cmxpbWl0KFJMSU1JVF9OT0ZJTEUsICZybCkgIT0gMCkgewogICAgICAgc3RvcmVfZXJybXNnKCJnZXRybGltaXQoKSBmYWlsZWQiLCBFUlJOTyk7CiAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCBtc2didWZmKTsKICAgICAgIHJldHVybiAtMzsKQEAgLTE5MCwxOSArMTkxLDE5IEBACiAgICAgLyogc2hvdyBjdXJyZW50IG9wZW4gZmlsZSBsaW1pdHMgKi8KIAogI2lmZGVmIFJMSU1fSU5GSU5JVFkKLSAgICBpZiAocmwucmxpbV9jdXIgPT0gUkxJTV9JTkZJTklUWSkKKyAgICBpZihybC5ybGltX2N1ciA9PSBSTElNX0lORklOSVRZKQogICAgICAgc3RyY3B5KHN0cmJ1ZmYsICJJTkZJTklUWSIpOwogICAgIGVsc2UKICNlbmRpZgotICAgICAgc3ByaW50ZihzdHJidWZmLCBmbXQsIHJsLnJsaW1fY3VyKTsKKyAgICAgIHNucHJpbnRmKHN0cmJ1ZmYsIHNpemVvZihzdHJidWZmKSwgZm10LCBybC5ybGltX2N1cik7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJyZW50IHNvZnQgbGltaXQ6ICVzXG4iLCBzdHJidWZmKTsKIAogI2lmZGVmIFJMSU1fSU5GSU5JVFkKLSAgICBpZiAocmwucmxpbV9tYXggPT0gUkxJTV9JTkZJTklUWSkKKyAgICBpZihybC5ybGltX21heCA9PSBSTElNX0lORklOSVRZKQogICAgICAgc3RyY3B5KHN0cmJ1ZmYsICJJTkZJTklUWSIpOwogICAgIGVsc2UKICNlbmRpZgotICAgICAgc3ByaW50ZihzdHJidWZmLCBmbXQsIHJsLnJsaW1fbWF4KTsKKyAgICAgIHNucHJpbnRmKHN0cmJ1ZmYsIHNpemVvZihzdHJidWZmKSwgZm10LCBybC5ybGltX21heCk7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJyZW50IGhhcmQgbGltaXQ6ICVzXG4iLCBzdHJidWZmKTsKIAogICB9IC8qIChybC5ybGltX2N1ciAhPSBybC5ybGltX21heCkgKi8KQEAgLTIyNiwyMSArMjI3LDIxIEBACiAgICAqIHRoYXQgaXQgYmVjb21lcyBhdmFpbGFibGUgdG8gdGhlIHRlc3QuCiAgICAqLwogCi0gIGZvciAobml0ZW1zID0gaSA9IDE7IG5pdGVtcyA8PSBpOyBpICo9IDIpCisgIGZvcihuaXRlbXMgPSBpID0gMTsgbml0ZW1zIDw9IGk7IGkgKj0gMikKICAgICBuaXRlbXMgPSBpOwotICBpZiAobml0ZW1zID4gMHg3ZmZmKQorICBpZihuaXRlbXMgPiAweDdmZmYpCiAgICAgbml0ZW1zID0gMHg0MDAwMDsKICAgZG8gewogICAgIG51bV9vcGVuLnJsaW1fbWF4ID0gc2l6ZW9mKCptZW1jaHVuaykgKiAoc2l6ZV90KW5pdGVtczsKLSAgICBzcHJpbnRmKHN0cmJ1ZmYsIGZtdCwgbnVtX29wZW4ucmxpbV9tYXgpOworICAgIHNucHJpbnRmKHN0cmJ1ZmYsIHNpemVvZihzdHJidWZmKSwgZm10LCBudW1fb3Blbi5ybGltX21heCk7CiAgICAgZnByaW50ZihzdGRlcnIsICJhbGxvY2F0aW5nIG1lbWNodW5rICVzIGJ5dGUgYXJyYXlcbiIsIHN0cmJ1ZmYpOwogICAgIG1lbWNodW5rID0gbWFsbG9jKHNpemVvZigqbWVtY2h1bmspICogKHNpemVfdCluaXRlbXMpOwotICAgIGlmICghbWVtY2h1bmspIHsKKyAgICBpZighbWVtY2h1bmspIHsKICAgICAgIGZwcmludGYoc3RkZXJyLCAibWVtY2h1bmssIG1hbGxvYygpIGZhaWxlZFxuIik7CiAgICAgICBuaXRlbXMgLz0gMjsKICAgICB9Ci0gIH0gd2hpbGUgKG5pdGVtcyAmJiAhbWVtY2h1bmspOwotICBpZiAoIW1lbWNodW5rKSB7CisgIH0gd2hpbGUobml0ZW1zICYmICFtZW1jaHVuayk7CisgIGlmKCFtZW1jaHVuaykgewogICAgIHN0b3JlX2Vycm1zZygibWVtY2h1bmssIG1hbGxvYygpIGZhaWxlZCIsIEVSUk5PKTsKICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCBtc2didWZmKTsKICAgICByZXR1cm4gLTQ7CkBAIC0yNTAsMzQgKzI1MSwzNCBAQAogCiAgIGZwcmludGYoc3RkZXJyLCAiaW5pdGlhbGl6aW5nIG1lbWNodW5rIGFycmF5XG4iKTsKIAotICBmb3IgKGkgPSAwOyBpIDwgbml0ZW1zOyBpKyspCisgIGZvcihpID0gMDsgaSA8IG5pdGVtczsgaSsrKQogICAgIG1lbWNodW5rW2ldID0gLTE7CiAKICAgLyogc2V0IHRoZSBudW1iZXIgb2YgZmlsZSBkZXNjcmlwdG9ycyB3ZSB3aWxsIHRyeSB0byBvcGVuICovCiAKICNpZmRlZiBSTElNX0lORklOSVRZCi0gIGlmICgocmwucmxpbV9jdXIgPiAwKSAmJiAocmwucmxpbV9jdXIgIT0gUkxJTV9JTkZJTklUWSkpIHsKKyAgaWYoKHJsLnJsaW1fY3VyID4gMCkgJiYgKHJsLnJsaW1fY3VyICE9IFJMSU1fSU5GSU5JVFkpKSB7CiAjZWxzZQotICBpZiAocmwucmxpbV9jdXIgPiAwKSB7CisgIGlmKHJsLnJsaW1fY3VyID4gMCkgewogI2VuZGlmCiAgICAgLyogc29mdCBsaW1pdCBtaW51cyBTQUZFVFlfTUFSR0lOICovCiAgICAgbnVtX29wZW4ucmxpbV9tYXggPSBybC5ybGltX2N1ciAtIFNBRkVUWV9NQVJHSU47CiAgIH0KICAgZWxzZSB7CiAgICAgLyogYSBodWdlIG51bWJlciBvZiBmaWxlIGRlc2NyaXB0b3JzICovCi0gICAgZm9yIChuaXRlbXMgPSBpID0gMTsgbml0ZW1zIDw9IGk7IGkgKj0gMikKKyAgICBmb3Iobml0ZW1zID0gaSA9IDE7IG5pdGVtcyA8PSBpOyBpICo9IDIpCiAgICAgICBuaXRlbXMgPSBpOwotICAgIGlmIChuaXRlbXMgPiAweDdmZmYpCisgICAgaWYobml0ZW1zID4gMHg3ZmZmKQogICAgICAgbml0ZW1zID0gMHg0MDAwMDsKICAgICBudW1fb3Blbi5ybGltX21heCA9IG5pdGVtczsKICAgfQogCiAgIC8qIHZlcmlmeSB0aGF0IHdlIHdvbid0IG92ZXJmbG93IHNpemVfdCBpbiBtYWxsb2MoKSAqLwogCi0gIGlmICgoc2l6ZV90KShudW1fb3Blbi5ybGltX21heCkgPiAoKHNpemVfdCktMSkgLyBzaXplb2YoKmZkKSkgewotICAgIHNwcmludGYoc3RyYnVmZjEsIGZtdCwgbnVtX29wZW4ucmxpbV9tYXgpOwotICAgIHNwcmludGYoc3RyYnVmZiwgInVuYWJsZSB0byBhbGxvY2F0ZSBhbiBhcnJheSBmb3IgJXMgIgotICAgICAgICAgICAgImZpbGUgZGVzY3JpcHRvcnMsIHdvdWxkIG92ZXJmbG93IHNpemVfdCIsIHN0cmJ1ZmYxKTsKKyAgaWYoKHNpemVfdCkobnVtX29wZW4ucmxpbV9tYXgpID4gKChzaXplX3QpLTEpIC8gc2l6ZW9mKCpmZCkpIHsKKyAgICBzbnByaW50ZihzdHJidWZmMSwgc2l6ZW9mKHN0cmJ1ZmYxKSwgZm10LCBudW1fb3Blbi5ybGltX21heCk7CisgICAgc25wcmludGYoc3RyYnVmZiwgc2l6ZW9mKHN0cmJ1ZmYpLCAidW5hYmxlIHRvIGFsbG9jYXRlIGFuIGFycmF5IGZvciAlcyAiCisgICAgICAgICAgICAgImZpbGUgZGVzY3JpcHRvcnMsIHdvdWxkIG92ZXJmbG93IHNpemVfdCIsIHN0cmJ1ZmYxKTsKICAgICBzdG9yZV9lcnJtc2coc3RyYnVmZiwgMCk7CiAgICAgZnByaW50ZihzdGRlcnIsICIlc1xuIiwgbXNnYnVmZik7CiAgICAgZnJlZShtZW1jaHVuayk7CkBAIC0yODcsMTUgKzI4OCwxNSBAQAogICAvKiBhbGxvY2F0ZSBhcnJheSBmb3IgZmlsZSBkZXNjcmlwdG9ycyAqLwogCiAgIGRvIHsKLSAgICBzcHJpbnRmKHN0cmJ1ZmYsIGZtdCwgbnVtX29wZW4ucmxpbV9tYXgpOworICAgIHNucHJpbnRmKHN0cmJ1ZmYsIHNpemVvZihzdHJidWZmKSwgZm10LCBudW1fb3Blbi5ybGltX21heCk7CiAgICAgZnByaW50ZihzdGRlcnIsICJhbGxvY2F0aW5nIGFycmF5IGZvciAlcyBmaWxlIGRlc2NyaXB0b3JzXG4iLCBzdHJidWZmKTsKICAgICBmZCA9IG1hbGxvYyhzaXplb2YoKmZkKSAqIChzaXplX3QpKG51bV9vcGVuLnJsaW1fbWF4KSk7Ci0gICAgaWYgKCFmZCkgeworICAgIGlmKCFmZCkgewogICAgICAgZnByaW50ZihzdGRlcnIsICJmZCwgbWFsbG9jKCkgZmFpbGVkXG4iKTsKICAgICAgIG51bV9vcGVuLnJsaW1fbWF4IC89IDI7CiAgICAgfQotICB9IHdoaWxlIChudW1fb3Blbi5ybGltX21heCAmJiAhZmQpOwotICBpZiAoIWZkKSB7CisgIH0gd2hpbGUobnVtX29wZW4ucmxpbV9tYXggJiYgIWZkKTsKKyAgaWYoIWZkKSB7CiAgICAgc3RvcmVfZXJybXNnKCJmZCwgbWFsbG9jKCkgZmFpbGVkIiwgRVJSTk8pOwogICAgIGZwcmludGYoc3RkZXJyLCAiJXNcbiIsIG1zZ2J1ZmYpOwogICAgIGZyZWUobWVtY2h1bmspOwpAQCAtMzA2LDE5ICszMDcsMTkgQEAKIAogICBmcHJpbnRmKHN0ZGVyciwgImluaXRpYWxpemluZyBmZCBhcnJheVxuIik7CiAKLSAgZm9yIChudW1fb3Blbi5ybGltX2N1ciA9IDA7Ci0gICAgICAgbnVtX29wZW4ucmxpbV9jdXIgPCBudW1fb3Blbi5ybGltX21heDsKLSAgICAgICBudW1fb3Blbi5ybGltX2N1cisrKQorICBmb3IobnVtX29wZW4ucmxpbV9jdXIgPSAwOworICAgICAgbnVtX29wZW4ucmxpbV9jdXIgPCBudW1fb3Blbi5ybGltX21heDsKKyAgICAgIG51bV9vcGVuLnJsaW1fY3VyKyspCiAgICAgZmRbbnVtX29wZW4ucmxpbV9jdXJdID0gLTE7CiAKLSAgc3ByaW50ZihzdHJidWZmLCBmbXQsIG51bV9vcGVuLnJsaW1fbWF4KTsKKyAgc25wcmludGYoc3RyYnVmZiwgc2l6ZW9mKHN0cmJ1ZmYpLCBmbXQsIG51bV9vcGVuLnJsaW1fbWF4KTsKICAgZnByaW50ZihzdGRlcnIsICJ0cnlpbmcgdG8gb3BlbiAlcyBmaWxlIGRlc2NyaXB0b3JzXG4iLCBzdHJidWZmKTsKIAogICAvKiBvcGVuIGEgZHVtbXkgZGVzY3JpcHRvciAqLwogCiAgIGZkWzBdID0gb3BlbihERVZfTlVMTCwgT19SRE9OTFkpOwotICBpZiAoZmRbMF0gPCAwKSB7Ci0gICAgc3ByaW50ZihzdHJidWZmLCAib3BlbmluZyBvZiAlcyBmYWlsZWQiLCBERVZfTlVMTCk7CisgIGlmKGZkWzBdIDwgMCkgeworICAgIHNucHJpbnRmKHN0cmJ1ZmYsIHNpemVvZihzdHJidWZmKSwgIm9wZW5pbmcgb2YgJXMgZmFpbGVkIiwgREVWX05VTEwpOwogICAgIHN0b3JlX2Vycm1zZyhzdHJidWZmLCBFUlJOTyk7CiAgICAgZnByaW50ZihzdGRlcnIsICIlc1xuIiwgbXNnYnVmZik7CiAgICAgZnJlZShmZCk7CkBAIC0zMjksNDUgKzMzMCw0NyBAQAogCiAgIC8qIGNyZWF0ZSBhIGJ1bmNoIG9mIGZpbGUgZGVzY3JpcHRvcnMgKi8KIAotICBmb3IgKG51bV9vcGVuLnJsaW1fY3VyID0gMTsKLSAgICAgICBudW1fb3Blbi5ybGltX2N1ciA8IG51bV9vcGVuLnJsaW1fbWF4OwotICAgICAgIG51bV9vcGVuLnJsaW1fY3VyKyspIHsKKyAgZm9yKG51bV9vcGVuLnJsaW1fY3VyID0gMTsKKyAgICAgIG51bV9vcGVuLnJsaW1fY3VyIDwgbnVtX29wZW4ucmxpbV9tYXg7CisgICAgICBudW1fb3Blbi5ybGltX2N1cisrKSB7CiAKICAgICBmZFtudW1fb3Blbi5ybGltX2N1cl0gPSBkdXAoZmRbMF0pOwogCi0gICAgaWYgKGZkW251bV9vcGVuLnJsaW1fY3VyXSA8IDApIHsKKyAgICBpZihmZFtudW1fb3Blbi5ybGltX2N1cl0gPCAwKSB7CiAKICAgICAgIGZkW251bV9vcGVuLnJsaW1fY3VyXSA9IC0xOwogCi0gICAgICBzcHJpbnRmKHN0cmJ1ZmYxLCBmbXQsIG51bV9vcGVuLnJsaW1fY3VyKTsKLSAgICAgIHNwcmludGYoc3RyYnVmZiwgImR1cCgpIGF0dGVtcHQgJXMgZmFpbGVkIiwgc3RyYnVmZjEpOworICAgICAgc25wcmludGYoc3RyYnVmZjEsIHNpemVvZihzdHJidWZmMSksIGZtdCwgbnVtX29wZW4ucmxpbV9jdXIpOworICAgICAgc25wcmludGYoc3RyYnVmZiwgc2l6ZW9mKHN0cmJ1ZmYpLCAiZHVwKCkgYXR0ZW1wdCAlcyBmYWlsZWQiLCBzdHJidWZmMSk7CiAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCBzdHJidWZmKTsKIAotICAgICAgc3ByaW50ZihzdHJidWZmMSwgZm10LCBudW1fb3Blbi5ybGltX2N1cik7Ci0gICAgICBzcHJpbnRmKHN0cmJ1ZmYsICJmZHMgc3lzdGVtIGxpbWl0IHNlZW1zIGNsb3NlIHRvICVzIiwgc3RyYnVmZjEpOworICAgICAgc25wcmludGYoc3RyYnVmZjEsIHNpemVvZihzdHJidWZmMSksIGZtdCwgbnVtX29wZW4ucmxpbV9jdXIpOworICAgICAgc25wcmludGYoc3RyYnVmZiwgc2l6ZW9mKHN0cmJ1ZmYpLCAiZmRzIHN5c3RlbSBsaW1pdCBzZWVtcyBjbG9zZSB0byAlcyIsCisgICAgICAgICAgICAgICBzdHJidWZmMSk7CiAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCBzdHJidWZmKTsKIAogICAgICAgbnVtX29wZW4ucmxpbV9tYXggPSBudW1fb3Blbi5ybGltX2N1ciAtIFNBRkVUWV9NQVJHSU47CiAKICAgICAgIG51bV9vcGVuLnJsaW1fY3VyIC09IG51bV9vcGVuLnJsaW1fbWF4OwotICAgICAgc3ByaW50ZihzdHJidWZmMSwgZm10LCBudW1fb3Blbi5ybGltX2N1cik7Ci0gICAgICBzcHJpbnRmKHN0cmJ1ZmYsICJjbG9zaW5nICVzIGZpbGUgZGVzY3JpcHRvcnMiLCBzdHJidWZmMSk7CisgICAgICBzbnByaW50ZihzdHJidWZmMSwgc2l6ZW9mKHN0cmJ1ZmYxKSwgZm10LCBudW1fb3Blbi5ybGltX2N1cik7CisgICAgICBzbnByaW50ZihzdHJidWZmLCBzaXplb2Yoc3RyYnVmZiksICJjbG9zaW5nICVzIGZpbGUgZGVzY3JpcHRvcnMiLAorICAgICAgICAgICAgICAgc3RyYnVmZjEpOwogICAgICAgZnByaW50ZihzdGRlcnIsICIlc1xuIiwgc3RyYnVmZik7CiAKLSAgICAgIGZvciAobnVtX29wZW4ucmxpbV9jdXIgPSBudW1fb3Blbi5ybGltX21heDsKLSAgICAgICAgICAgZmRbbnVtX29wZW4ucmxpbV9jdXJdID49IDA7Ci0gICAgICAgICAgIG51bV9vcGVuLnJsaW1fY3VyKyspIHsKKyAgICAgIGZvcihudW1fb3Blbi5ybGltX2N1ciA9IG51bV9vcGVuLnJsaW1fbWF4OworICAgICAgICAgIGZkW251bV9vcGVuLnJsaW1fY3VyXSA+PSAwOworICAgICAgICAgIG51bV9vcGVuLnJsaW1fY3VyKyspIHsKICAgICAgICAgY2xvc2UoZmRbbnVtX29wZW4ucmxpbV9jdXJdKTsKICAgICAgICAgZmRbbnVtX29wZW4ucmxpbV9jdXJdID0gLTE7CiAgICAgICB9CiAKLSAgICAgIHNwcmludGYoc3RyYnVmZiwgZm10LCBudW1fb3Blbi5ybGltX21heCk7CisgICAgICBzbnByaW50ZihzdHJidWZmLCBzaXplb2Yoc3RyYnVmZiksIGZtdCwgbnVtX29wZW4ucmxpbV9tYXgpOwogICAgICAgZnByaW50ZihzdGRlcnIsICJzaHJpbmtpbmcgYXJyYXkgZm9yICVzIGZpbGUgZGVzY3JpcHRvcnNcbiIsIHN0cmJ1ZmYpOwogCiAgICAgICAvKiB3ZSBkb24ndCBjYXJlIGlmIHdlIGNhbid0IHNocmluayBpdCAqLwogCiAgICAgICB0bXBmZCA9IHJlYWxsb2MoZmQsIHNpemVvZigqZmQpICogKHNpemVfdCkobnVtX29wZW4ucmxpbV9tYXgpKTsKLSAgICAgIGlmICh0bXBmZCkgeworICAgICAgaWYodG1wZmQpIHsKICAgICAgICAgZmQgPSB0bXBmZDsKICAgICAgICAgdG1wZmQgPSBOVUxMOwogICAgICAgfQpAQCAtMzc4LDcgKzM4MSw3IEBACiAKICAgfQogCi0gIHNwcmludGYoc3RyYnVmZiwgZm10LCBudW1fb3Blbi5ybGltX21heCk7CisgIHNucHJpbnRmKHN0cmJ1ZmYsIHNpemVvZihzdHJidWZmKSwgZm10LCBudW1fb3Blbi5ybGltX21heCk7CiAgIGZwcmludGYoc3RkZXJyLCAiJXMgZmlsZSBkZXNjcmlwdG9ycyBvcGVuXG4iLCBzdHJidWZmKTsKIAogI2lmICFkZWZpbmVkKEhBVkVfUE9MTF9GSU5FKSAgICAmJiBcCkBAIC0zOTcsOCArNDAwLDkgQEAKICAgICovCiAKICAgbnVtX29wZW4ucmxpbV9jdXIgPSBGRF9TRVRTSVpFIC0gU0FGRVRZX01BUkdJTjsKLSAgaWYgKG51bV9vcGVuLnJsaW1fbWF4ID4gbnVtX29wZW4ucmxpbV9jdXIpIHsKLSAgICBzcHJpbnRmKHN0cmJ1ZmYsICJzZWxlY3QgbGltaXQgaXMgRkRfU0VUU0laRSAlZCIsIEZEX1NFVFNJWkUpOworICBpZihudW1fb3Blbi5ybGltX21heCA+IG51bV9vcGVuLnJsaW1fY3VyKSB7CisgICAgc25wcmludGYoc3RyYnVmZiwgc2l6ZW9mKHN0cmJ1ZmYpLCAic2VsZWN0IGxpbWl0IGlzIEZEX1NFVFNJWkUgJWQiLAorICAgICAgICAgICAgIEZEX1NFVFNJWkUpOwogICAgIHN0b3JlX2Vycm1zZyhzdHJidWZmLCAwKTsKICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCBtc2didWZmKTsKICAgICBjbG9zZV9maWxlX2Rlc2NyaXB0b3JzKCk7CkBAIC00MDcsMTIgKzQxMSwxMyBAQAogICB9CiAKICAgbnVtX29wZW4ucmxpbV9jdXIgPSBGRF9TRVRTSVpFIC0gU0FGRVRZX01BUkdJTjsKLSAgZm9yIChybC5ybGltX2N1ciA9IDA7Ci0gICAgICAgcmwucmxpbV9jdXIgPCBudW1fb3Blbi5ybGltX21heDsKLSAgICAgICBybC5ybGltX2N1cisrKSB7Ci0gICAgaWYgKChmZFtybC5ybGltX2N1cl0gPiAwKSAmJgorICBmb3IocmwucmxpbV9jdXIgPSAwOworICAgICAgcmwucmxpbV9jdXIgPCBudW1fb3Blbi5ybGltX21heDsKKyAgICAgIHJsLnJsaW1fY3VyKyspIHsKKyAgICBpZigoZmRbcmwucmxpbV9jdXJdID4gMCkgJiYKICAgICAgICAoKHVuc2lnbmVkIGludClmZFtybC5ybGltX2N1cl0gPiBudW1fb3Blbi5ybGltX2N1cikpIHsKLSAgICAgIHNwcmludGYoc3RyYnVmZiwgInNlbGVjdCBsaW1pdCBpcyBGRF9TRVRTSVpFICVkIiwgRkRfU0VUU0laRSk7CisgICAgICBzbnByaW50ZihzdHJidWZmLCBzaXplb2Yoc3RyYnVmZiksICJzZWxlY3QgbGltaXQgaXMgRkRfU0VUU0laRSAlZCIsCisgICAgICAgICAgICAgICBGRF9TRVRTSVpFKTsKICAgICAgIHN0b3JlX2Vycm1zZyhzdHJidWZmLCAwKTsKICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXNcbiIsIG1zZ2J1ZmYpOwogICAgICAgY2xvc2VfZmlsZV9kZXNjcmlwdG9ycygpOwpAQCAtNDMyLDEyICs0MzcsMTIgQEAKICAgICogaWYgaXQgaXMgY2FwYWJsZSBvZiBmb3BlbigpaW5nIHNvbWUgYWRkaXRpb25hbCBmaWxlcy4KICAgICovCiAKLSAgaWYgKCFmb3Blbl93b3JrcygpKSB7Ci0gICAgc3ByaW50ZihzdHJidWZmMSwgZm10LCBudW1fb3Blbi5ybGltX21heCk7Ci0gICAgc3ByaW50ZihzdHJidWZmLCAic3RkaW8gZm9wZW4oKSBmYWlscyB3aXRoICVzIGZkcyBvcGVuKCkiLAorICBpZighZm9wZW5fd29ya3MoKSkgeworICAgIHNucHJpbnRmKHN0cmJ1ZmYxLCBzaXplb2Yoc3RyYnVmZjEpLCBmbXQsIG51bV9vcGVuLnJsaW1fbWF4KTsKKyAgICBzbnByaW50ZihzdHJidWZmLCBzaXplb2Yoc3RyYnVmZiksICJmb3BlbiBmYWlscyB3aXRoICVzIGZkcyBvcGVuIiwKICAgICAgICAgICAgIHN0cmJ1ZmYxKTsKICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCBtc2didWZmKTsKLSAgICBzcHJpbnRmKHN0cmJ1ZmYsICJzdGRpbyBmb3BlbigpIGZhaWxzIHdpdGggbG90cyBvZiBmZHMgb3BlbigpIik7CisgICAgc25wcmludGYoc3RyYnVmZiwgc2l6ZW9mKHN0cmJ1ZmYpLCAiZm9wZW4gZmFpbHMgd2l0aCBsb3RzIG9mIGZkcyBvcGVuIik7CiAgICAgc3RvcmVfZXJybXNnKHN0cmJ1ZmYsIDApOwogICAgIGNsb3NlX2ZpbGVfZGVzY3JpcHRvcnMoKTsKICAgICBmcmVlKG1lbWNodW5rKTsKQEAgLTQ1MSw3ICs0NTYsNyBAQAogCiAgIC8qIGNsb3NlIGZpbGUgZGVzY3JpcHRvcnMgdW5sZXNzIGluc3RydWN0ZWQgdG8ga2VlcCB0aGVtICovCiAKLSAgaWYgKCFrZWVwX29wZW4pIHsKKyAgaWYoIWtlZXBfb3BlbikgewogICAgIGNsb3NlX2ZpbGVfZGVzY3JpcHRvcnMoKTsKICAgfQogCkBAIC00NzIsNyArNDc3LDcgQEAKICAgICByZXR1cm4gMDsgLyogc3VyZSwgcnVuIHRoaXMhICovCiAgIH0KIAotICBpZiAocmxpbWl0KFRSVUUpKSB7CisgIGlmKHJsaW1pdChUUlVFKSkgewogICAgIC8qIGZhaWx1cmUgKi8KICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwogICB9CkBAIC00ODAsMTMgKzQ4NSwxMyBAQAogICAvKiBydW4gdGhlIHRlc3Qgd2l0aCB0aGUgYnVuY2ggb2Ygb3BlbiBmaWxlIGRlc2NyaXB0b3JzCiAgICAgIGFuZCBjbG9zZSB0aGVtIGFsbCBvbmNlIHRoZSB0ZXN0IGlzIG92ZXIgKi8KIAotICBpZiAoY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpICE9IENVUkxFX09LKSB7CisgIGlmKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9nbG9iYWxfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgY2xvc2VfZmlsZV9kZXNjcmlwdG9ycygpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CiAgIH0KIAotICBpZiAoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CisgIGlmKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9lYXN5X2luaXQoKSBmYWlsZWRcbiIpOwogICAgIGNsb3NlX2ZpbGVfZGVzY3JpcHRvcnMoKTsKICAgICBjdXJsX2dsb2JhbF9jbGVhbnVwKCk7CmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYjUzOS5jIGIvdGVzdHMvbGlidGVzdC9saWI1MzkuYwppbmRleCAwNTNkMjk4Li45ZjBmOGZhIDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYjUzOS5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliNTM5LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDExLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zMCwxMiArMzAsMTIgQEAKICAgIGNoYXIgKm5ld1VSTCA9IE5VTEw7CiAgICBzdHJ1Y3QgY3VybF9zbGlzdCAqc2xpc3QgPSBOVUxMOwogCi0gICBpZiAoY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpICE9IENVUkxFX09LKSB7CisgICBpZihjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKICAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2dsb2JhbF9pbml0KCkgZmFpbGVkXG4iKTsKICAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKICAgIH0KIAotICAgaWYgKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgeworICAgaWYoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CiAgICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9lYXN5X2luaXQoKSBmYWlsZWRcbiIpOwogICAgICBjdXJsX2dsb2JhbF9jbGVhbnVwKCk7CiAgICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CkBAIC01OCwxNiArNTgsMTUgQEAKICAgICAqIGV2ZW4gdGhvdWdoIG5vIGRpcmVjdG9yaWVzIGFyZSBzdG9yZWQgaW4gdGhlIGZ0cGNvbm4tPmRpcnMgYXJyYXkgKGFmdGVyIGEKICAgICAqIGNhbGwgdG8gZnJlZWRpcnMpLgogICAgICovCi0gICBuZXdVUkwgPSBtYWxsb2Moc3RybGVuKFVSTCkgKyAzKTsKLSAgIGlmIChuZXdVUkwgPT0gTlVMTCkgeworICAgbmV3VVJMID0gYXByaW50ZigiJXMuLyIsIFVSTCk7CisgICBpZihuZXdVUkwgPT0gTlVMTCkgewogICAgICBjdXJsX2Vhc3lfY2xlYW51cChjdXJsKTsKICAgICAgY3VybF9nbG9iYWxfY2xlYW51cCgpOwogICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwogICAgfQotICAgbmV3VVJMID0gc3RyY2F0KHN0cmNweShuZXdVUkwsIFVSTCksICIuLyIpOwogCiAgICBzbGlzdCA9IGN1cmxfc2xpc3RfYXBwZW5kIChOVUxMLCAiU1lTVCIpOwotICAgaWYgKHNsaXN0ID09IE5VTEwpIHsKKyAgIGlmKHNsaXN0ID09IE5VTEwpIHsKICAgICAgZnJlZShuZXdVUkwpOwogICAgICBjdXJsX2Vhc3lfY2xlYW51cChjdXJsKTsKICAgICAgY3VybF9nbG9iYWxfY2xlYW51cCgpOwpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWI1NDAuYyBiL3Rlc3RzL2xpYnRlc3QvbGliNTQwLmMKaW5kZXggYWMwZWJlNi4uOWIzYjVhNCAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWI1NDAuYworKysgYi90ZXN0cy9saWJ0ZXN0L2xpYjU0MC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTEzLDcgKzExMyw3IEBACiAgIGlmKHJlcykKICAgICByZXR1cm4gcmVzOwogCi0gIHdoaWxlIChVKSB7CisgIHdoaWxlKFUpIHsKIAogICAgIGludCBNID0gLTk5OwogCkBAIC0xMjUsNyArMTI1LDcgQEAKICAgICBpZihyZXMpCiAgICAgICByZXR1cm4gcmVzOwogCi0gICAgaWYgKFUpIHsKKyAgICBpZihVKSB7CiAgICAgICBGRF9aRVJPKCZSKTsKICAgICAgIEZEX1pFUk8oJlcpOwogICAgICAgRkRfWkVSTygmRSk7CkBAIC0yMDAsNyArMjAwLDcgQEAKICAgaWYodGVzdF9hcmdjIDwgNCkKICAgICByZXR1cm4gOTk7CiAKLSAgc3ByaW50ZihidWZmZXIsICJIb3N0OiAlcyIsIEhPU1QpOworICBzbnByaW50ZihidWZmZXIsIHNpemVvZihidWZmZXIpLCAiSG9zdDogJXMiLCBIT1NUKTsKIAogICAvKiBub3cgYWRkIGEgY3VzdG9tIEhvc3Q6IGhlYWRlciAqLwogICBoZWFkZXJzID0gY3VybF9zbGlzdF9hcHBlbmQoaGVhZGVycywgYnVmZmVyKTsKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliNTQxLmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjU0MS5jCmluZGV4IDYwMTVkMmYuLjYwNDQ0NmEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliNTQxLmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWI1NDEuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTEsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTM1LDEyICszNSwxMiBAQAogewogICBDVVJMICpjdXJsOwogICBDVVJMY29kZSByZXMgPSBDVVJMRV9PSzsKLSAgRklMRSAqaGRfc3JjIDsKKyAgRklMRSAqaGRfc3JjOwogICBpbnQgaGQ7CiAgIHN0cnVjdF9zdGF0IGZpbGVfaW5mbzsKICAgaW50IGVycm9yOwogCi0gIGlmICghbGlidGVzdF9hcmcyKSB7CisgIGlmKCFsaWJ0ZXN0X2FyZzIpIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgIlVzYWdlOiA8dXJsPiA8ZmlsZS10by11cGxvYWQ+XG4iKTsKICAgICByZXR1cm4gVEVTVF9FUlJfVVNBR0U7CiAgIH0KQEAgLTQ4LDcgKzQ4LDcgQEAKICAgaGRfc3JjID0gZm9wZW4obGlidGVzdF9hcmcyLCAicmIiKTsKICAgaWYoTlVMTCA9PSBoZF9zcmMpIHsKICAgICBlcnJvciA9IEVSUk5POwotICAgIGZwcmludGYoc3RkZXJyLCAiZm9wZW4oKSBmYWlsZWQgd2l0aCBlcnJvcjogJWQgJXNcbiIsCisgICAgZnByaW50ZihzdGRlcnIsICJmb3BlbiBmYWlsZWQgd2l0aCBlcnJvcjogJWQgJXNcbiIsCiAgICAgICAgICAgICBlcnJvciwgc3RyZXJyb3IoZXJyb3IpKTsKICAgICBmcHJpbnRmKHN0ZGVyciwgIkVycm9yIG9wZW5pbmcgZmlsZTogJXNcbiIsIGxpYnRlc3RfYXJnMik7CiAgICAgcmV0dXJuIC0yOyAvKiBpZiB0aGlzIGhhcHBlbnMgdGhpbmdzIGFyZSBtYWpvciB3ZWlyZCAqLwpAQCAtNzIsMTQgKzcyLDE0IEBACiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKICAgfQogCi0gIGlmIChjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKKyAgaWYoY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpICE9IENVUkxFX09LKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2dsb2JhbF9pbml0KCkgZmFpbGVkXG4iKTsKICAgICBmY2xvc2UoaGRfc3JjKTsKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwogICB9CiAKICAgLyogZ2V0IGEgY3VybCBoYW5kbGUgKi8KLSAgaWYgKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgeworICBpZigoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZWFzeV9pbml0KCkgZmFpbGVkXG4iKTsKICAgICBjdXJsX2dsb2JhbF9jbGVhbnVwKCk7CiAgICAgZmNsb3NlKGhkX3NyYyk7CkBAIC05Myw3ICs5Myw3IEBACiAgIHRlc3Rfc2V0b3B0KGN1cmwsIENVUkxPUFRfVkVSQk9TRSwgMUwpOwogCiAgIC8qIHNwZWNpZnkgdGFyZ2V0ICovCi0gIHRlc3Rfc2V0b3B0KGN1cmwsQ1VSTE9QVF9VUkwsIFVSTCk7CisgIHRlc3Rfc2V0b3B0KGN1cmwsIENVUkxPUFRfVVJMLCBVUkwpOwogCiAgIC8qIG5vdyBzcGVjaWZ5IHdoaWNoIGZpbGUgdG8gdXBsb2FkICovCiAgIHRlc3Rfc2V0b3B0KGN1cmwsIENVUkxPUFRfUkVBRERBVEEsIGhkX3NyYyk7CmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYjU0Mi5jIGIvdGVzdHMvbGlidGVzdC9saWI1NDIuYwppbmRleCA4NGY0OTNmLi5jODJjY2Q1IDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYjU0Mi5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliNTQyLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDExLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zNiwxMyArMzYsMTMgQEAKICAgQ1VSTCAqY3VybDsKICAgQ1VSTGNvZGUgcmVzID0gQ1VSTEVfT0s7CiAKLSAgaWYgKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgeworICBpZihjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZ2xvYmFsX2luaXQoKSBmYWlsZWRcbiIpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CiAgIH0KIAogICAvKiBnZXQgYSBjdXJsIGhhbmRsZSAqLwotICBpZiAoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CisgIGlmKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9lYXN5X2luaXQoKSBmYWlsZWRcbiIpOwogICAgIGN1cmxfZ2xvYmFsX2NsZWFudXAoKTsKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwpAQCAtNTgsNyArNTgsNyBAQAogICB0ZXN0X3NldG9wdChjdXJsLCBDVVJMT1BUX0hFQURFUiwgMEwpOwogCiAgIC8qIHNwZWNpZnkgdGFyZ2V0ICovCi0gIHRlc3Rfc2V0b3B0KGN1cmwsQ1VSTE9QVF9VUkwsIFVSTCk7CisgIHRlc3Rfc2V0b3B0KGN1cmwsIENVUkxPUFRfVVJMLCBVUkwpOwogCiAgIC8qIE5vdyBydW4gb2ZmIGFuZCBkbyB3aGF0IHlvdSd2ZSBiZWVuIHRvbGQhICovCiAgIHJlcyA9IGN1cmxfZWFzeV9wZXJmb3JtKGN1cmwpOwpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWI1NDMuYyBiL3Rlc3RzL2xpYnRlc3QvbGliNTQzLmMKaW5kZXggYjRhMzFjYS4uOGZlYzA1MiAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWI1NDMuYworKysgYi90ZXN0cy9saWJ0ZXN0L2xpYjU0My5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzYsNyArMzYsNyBAQAogICBjaGFyICpzOwogICAodm9pZClVUkw7CiAKLSAgaWYgKChlYXN5ID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgeworICBpZigoZWFzeSA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZWFzeV9pbml0KCkgZmFpbGVkXG4iKTsKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwogICB9CmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYjU0NC5jIGIvdGVzdHMvbGlidGVzdC9saWI1NDQuYwppbmRleCA3ZTJmNzM1Li40YjA4YTBhIDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYjU0NC5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliNTQ0LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC00MiwxMiArNDIsMTIgQEAKICAgQ1VSTCAqY3VybDsKICAgQ1VSTGNvZGUgcmVzPUNVUkxFX09LOwogCi0gIGlmIChjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKKyAgaWYoY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpICE9IENVUkxFX09LKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2dsb2JhbF9pbml0KCkgZmFpbGVkXG4iKTsKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwogICB9CiAKLSAgaWYgKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgeworICBpZigoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZWFzeV9pbml0KCkgZmFpbGVkXG4iKTsKICAgICBjdXJsX2dsb2JhbF9jbGVhbnVwKCk7CiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliNTQ3LmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjU0Ny5jCmluZGV4IGM4MmJjM2YuLjRlYzQyYTMgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliNTQ3LmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWI1NDcuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTEsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTg1LDEyICs4NSwxMiBAQAogICBpbnQgY291bnRlcj0wOwogI2VuZGlmCiAKLSAgaWYgKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgeworICBpZihjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZ2xvYmFsX2luaXQoKSBmYWlsZWRcbiIpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CiAgIH0KIAotICBpZiAoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CisgIGlmKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9lYXN5X2luaXQoKSBmYWlsZWRcbiIpOwogICAgIGN1cmxfZ2xvYmFsX2NsZWFudXAoKTsKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwpAQCAtMTA4LDcgKzEwOCw4IEBACiAgIHRlc3Rfc2V0b3B0KGN1cmwsIENVUkxPUFRfSU9DVExEQVRBLCAmY291bnRlcik7CiAgIHRlc3Rfc2V0b3B0KGN1cmwsIENVUkxPUFRfUkVBREZVTkNUSU9OLCByZWFkY2FsbGJhY2spOwogICB0ZXN0X3NldG9wdChjdXJsLCBDVVJMT1BUX1JFQUREQVRBLCAmY291bnRlcik7Ci0gIC8qIFdlIENBTk5PVCBkbyB0aGUgUE9TVCBmaW5lIHdpdGhvdXQgc2V0dGluZyB0aGUgc2l6ZSAob3IgY2hvb3NlIGNodW5rZWQpISAqLworICAvKiBXZSBDQU5OT1QgZG8gdGhlIFBPU1QgZmluZSB3aXRob3V0IHNldHRpbmcgdGhlIHNpemUgKG9yIGNob29zZQorICAgICBjaHVua2VkKSEgKi8KICAgdGVzdF9zZXRvcHQoY3VybCwgQ1VSTE9QVF9QT1NURklFTERTSVpFLCAobG9uZylzdHJsZW4oVVBMT0FEVEhJUykpOwogI2VuZGlmCiAgIHRlc3Rfc2V0b3B0KGN1cmwsIENVUkxPUFRfUE9TVCwgMUwpOwpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWI1NDkuYyBiL3Rlc3RzL2xpYnRlc3QvbGliNTQ5LmMKaW5kZXggYTE1NjhjOC4uMTM3MDI5NSAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWI1NDkuYworKysgYi90ZXN0cy9saWJ0ZXN0L2xpYjU0OS5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzMsMTIgKzMzLDEyIEBACiAgIENVUkxjb2RlIHJlczsKICAgQ1VSTCAqY3VybDsKIAotICBpZiAoY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpICE9IENVUkxFX09LKSB7CisgIGlmKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9nbG9iYWxfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKICAgfQogCi0gIGlmICgoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKKyAgaWYoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2Vhc3lfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgY3VybF9nbG9iYWxfY2xlYW51cCgpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYjU1Mi5jIGIvdGVzdHMvbGlidGVzdC9saWI1NTIuYwppbmRleCAyY2M5NDJhLi45ZmU0YTcxIDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYjU1Mi5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliNTUyLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDEyLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC02MywxNCArNjMsMTQgQEAKIAogICAgIGZvcihjID0gMDsgKGMgPCB3aWR0aCkgJiYgKGkrYyA8IHNpemUpOyBjKyspIHsKICAgICAgIC8qIGNoZWNrIGZvciAwRDBBOyBpZiBmb3VuZCwgc2tpcCBwYXN0IGFuZCBzdGFydCBhIG5ldyBsaW5lIG9mIG91dHB1dCAqLwotICAgICAgaWYgKG5vaGV4ICYmIChpK2MrMSA8IHNpemUpICYmIHB0cltpK2NdPT0weDBEICYmIHB0cltpK2MrMV09PTB4MEEpIHsKKyAgICAgIGlmKG5vaGV4ICYmIChpK2MrMSA8IHNpemUpICYmIHB0cltpK2NdPT0weDBEICYmIHB0cltpK2MrMV09PTB4MEEpIHsKICAgICAgICAgaSs9KGMrMi13aWR0aCk7CiAgICAgICAgIGJyZWFrOwogICAgICAgfQogICAgICAgZnByaW50ZihzdHJlYW0sICIlYyIsCiAgICAgICAgICAgICAgIChwdHJbaStjXT49MHgyMCkgJiYgKHB0cltpK2NdPDB4ODApP3B0cltpK2NdOicuJyk7CiAgICAgICAvKiBjaGVjayBhZ2FpbiBmb3IgMEQwQSwgdG8gYXZvaWQgYW4gZXh0cmEgXG4gaWYgaXQncyBhdCB3aWR0aCAqLwotICAgICAgaWYgKG5vaGV4ICYmIChpK2MrMiA8IHNpemUpICYmIHB0cltpK2MrMV09PTB4MEQgJiYgcHRyW2krYysyXT09MHgwQSkgeworICAgICAgaWYobm9oZXggJiYgKGkrYysyIDwgc2l6ZSkgJiYgcHRyW2krYysxXT09MHgwRCAmJiBwdHJbaStjKzJdPT0weDBBKSB7CiAgICAgICAgIGkrPShjKzMtd2lkdGgpOwogICAgICAgICBicmVhazsKICAgICAgIH0KQEAgLTEyMSwxMiArMTIxLDE0IEBACiAKIAogc3RhdGljIHNpemVfdCBjdXJyZW50X29mZnNldCA9IDA7Ci1zdGF0aWMgY2hhciBkYXRhYnVmWzcwMDAwXTsgLyogTVVTVCBiZSBtb3JlIHRoYW4gNjRrIE9SIE1BWF9JTklUSUFMX1BPU1RfU0laRSAqLworc3RhdGljIGNoYXIgZGF0YWJ1Zls3MDAwMF07IC8qIE1VU1QgYmUgbW9yZSB0aGFuIDY0ayBPUgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1BWF9JTklUSUFMX1BPU1RfU0laRSAqLwogCiBzdGF0aWMgc2l6ZV90IHJlYWRfY2FsbGJhY2sodm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IG5tZW1iLCB2b2lkICpzdHJlYW0pCiB7CiAgIHNpemVfdCAgYW1vdW50ID0gbm1lbWIgKiBzaXplOyAvKiBUb3RhbCBieXRlcyBjdXJsIHdhbnRzICovCi0gIHNpemVfdCAgYXZhaWxhYmxlID0gc2l6ZW9mKGRhdGFidWYpIC0gY3VycmVudF9vZmZzZXQ7IC8qIFdoYXQgd2UgaGF2ZSB0byBnaXZlICovCisgIHNpemVfdCAgYXZhaWxhYmxlID0gc2l6ZW9mKGRhdGFidWYpIC0gY3VycmVudF9vZmZzZXQ7IC8qIFdoYXQgd2UgaGF2ZSB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaXZlICovCiAgIHNpemVfdCAgZ2l2ZW4gPSBhbW91bnQgPCBhdmFpbGFibGUgPyBhbW91bnQgOiBhdmFpbGFibGU7IC8qIFdoYXQgaXMgZ2l2ZW4gKi8KICAgKHZvaWQpc3RyZWFtOwogICBtZW1jcHkocHRyLCBkYXRhYnVmICsgY3VycmVudF9vZmZzZXQsIGdpdmVuKTsKQEAgLTEzNSw3ICsxMzcsOCBAQAogfQogCiAKLXN0YXRpYyBzaXplX3Qgd3JpdGVfY2FsbGJhY2sodm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IG5tZW1iLCB2b2lkICpzdHJlYW0pCitzdGF0aWMgc2l6ZV90IHdyaXRlX2NhbGxiYWNrKHZvaWQgKnB0ciwgc2l6ZV90IHNpemUsIHNpemVfdCBubWVtYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqc3RyZWFtKQogewogICBpbnQgYW1vdW50ID0gY3VybHhfdXp0b3NpKHNpemUgKiBubWVtYik7CiAgIHByaW50ZigiJS4qcyIsIGFtb3VudCwgKGNoYXIgKilwdHIpOwpAQCAtMTQ3LDcgKzE1MCw3IEBACiBzdGF0aWMgY3VybGlvZXJyIGlvY3RsX2NhbGxiYWNrKENVUkwgKiBoYW5kbGUsIGludCBjbWQsIHZvaWQgKmNsaWVudHApCiB7CiAgICh2b2lkKWNsaWVudHA7Ci0gIGlmIChjbWQgPT0gQ1VSTElPQ01EX1JFU1RBUlRSRUFEICkgeworICBpZihjbWQgPT0gQ1VSTElPQ01EX1JFU1RBUlRSRUFEKSB7CiAgICAgcHJpbnRmKCJBUFBMSUNBVElPTjogcmVjaWV2ZWQgYSBDVVJMSU9DTURfUkVTVEFSVFJFQUQgcmVxdWVzdFxuIik7CiAgICAgcHJpbnRmKCJBUFBMSUNBVElPTjogKiogUkVXSU5ESU5HISAqKlxuIik7CiAgICAgY3VycmVudF9vZmZzZXQgPSAwOwpAQCAtMTgxLDcgKzE4NCw3IEBACiAgIHRlc3Rfc2V0b3B0KGN1cmwsIENVUkxPUFRfVkVSQk9TRSwgMUwpOwogCiAgIC8qIHNldHVwIHJlcGVhdGVkIGRhdGEgc3RyaW5nICovCi0gIGZvciAoaT0wOyBpIDwgc2l6ZW9mKGRhdGFidWYpOyArK2kpCisgIGZvcihpPTA7IGkgPCBzaXplb2YoZGF0YWJ1Zik7ICsraSkKICAgICAgIGRhdGFidWZbaV0gPSBmaWxsW2kgJSBzaXplb2YgZmlsbF07CiAKICAgLyogUG9zdCAqLwpAQCAtMjA2LDcgKzIwOSw4IEBACiAKICAgdGVzdF9zZXRvcHQoY3VybCwgQ1VSTE9QVF9VUkwsIFVSTCk7CiAKLSAgLyogQWNjZXB0IGFueSBhdXRoLiBCdXQgZm9yIHRoaXMgYnVnIGNvbmZpZ3VyZSBwcm94eSB3aXRoIERJR0VTVCwgYmFzaWMgbWlnaHQgd29yayB0b28sIG5vdCBOVExNICovCisgIC8qIEFjY2VwdCBhbnkgYXV0aC4gQnV0IGZvciB0aGlzIGJ1ZyBjb25maWd1cmUgcHJveHkgd2l0aCBESUdFU1QsIGJhc2ljCisgICAgIG1pZ2h0IHdvcmsgdG9vLCBub3QgTlRMTSAqLwogICB0ZXN0X3NldG9wdChjdXJsLCBDVVJMT1BUX1BST1hZQVVUSCwgKGxvbmcpQ1VSTEFVVEhfQU5ZKTsKIAogICByZXMgPSBjdXJsX2Vhc3lfcGVyZm9ybShjdXJsKTsKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliNTUzLmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjU1My5jCmluZGV4IGNiMWNlZmQuLjlhZmFhZDQgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliNTUzLmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWI1NTMuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTEsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTM5LDcgKzM5LDcgQEAKICAgbWVtc2V0KGJ1ZiwgJ0EnLCBzaXplb2YoYnVmKSk7CiAKICAgc2l6ZSAqPSBubWVtYjsKLSAgaWYgKHNpemUgPiB0b3RhbCkKKyAgaWYoc2l6ZSA+IHRvdGFsKQogICAgIHNpemUgPSB0b3RhbDsKIAogICBpZihzaXplID4gc2l6ZW9mKGJ1ZikpCkBAIC03MywxOCArNzMsMTggQEAKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwogICB9CiAKLSAgZm9yIChpID0gMDsgaSA8IE5VTV9IRUFERVJTOyBpKyspIHsKLSAgICBpbnQgbGVuID0gc3ByaW50ZihidWYsICJIZWFkZXIlZDogIiwgaSk7CisgIGZvcihpID0gMDsgaSA8IE5VTV9IRUFERVJTOyBpKyspIHsKKyAgICBpbnQgbGVuID0gc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgIkhlYWRlciVkOiAiLCBpKTsKICAgICBtZW1zZXQoJmJ1ZltsZW5dLCAnQScsIFNJWkVfSEVBREVSUyk7CiAgICAgYnVmW2xlbiArIFNJWkVfSEVBREVSU109MDsgLyogemVybyB0ZXJtaW5hdGUgKi8KICAgICBobCA9IGN1cmxfc2xpc3RfYXBwZW5kKGhlYWRlcmxpc3QsICBidWYpOwotICAgIGlmICghaGwpCisgICAgaWYoIWhsKQogICAgICAgZ290byB0ZXN0X2NsZWFudXA7CiAgICAgaGVhZGVybGlzdCA9IGhsOwogICB9CiAKICAgaGwgPSBjdXJsX3NsaXN0X2FwcGVuZChoZWFkZXJsaXN0LCAiRXhwZWN0OiAiKTsKLSAgaWYgKCFobCkKKyAgaWYoIWhsKQogICAgIGdvdG8gdGVzdF9jbGVhbnVwOwogICBoZWFkZXJsaXN0ID0gaGw7CiAKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliNTU0LmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjU1NC5jCmluZGV4IDA1OTZmM2UuLjgwM2RmMjYgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliNTU0LmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWI1NTQuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTIsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTY0LDcgKzY0LDcgQEAKICNlbmRpZgogfQogCi1pbnQgdGVzdChjaGFyICpVUkwpCitzdGF0aWMgaW50IG9uY2UoY2hhciAqVVJMLCBib29sIG9sZHN0eWxlKQogewogICBDVVJMICpjdXJsOwogICBDVVJMY29kZSByZXM9Q1VSTEVfT0s7CkBAIC03NSwyMiArNzUsMjkgQEAKICAgc3RydWN0IFdyaXRlVGhpcyBwb29oOwogICBzdHJ1Y3QgV3JpdGVUaGlzIHBvb2gyOwogCi0gIGlmIChjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKLSAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZ2xvYmFsX2luaXQoKSBmYWlsZWRcbiIpOwotICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7Ci0gIH0KLQogICBwb29oLnJlYWRwdHIgPSBkYXRhOwogICBwb29oLnNpemVsZWZ0ID0gc3RybGVuKGRhdGEpOwogCiAgIC8qIEZpbGwgaW4gdGhlIGZpbGUgdXBsb2FkIGZpZWxkICovCi0gIGZvcm1yYyA9IGN1cmxfZm9ybWFkZCgmZm9ybXBvc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAmbGFzdHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgIENVUkxGT1JNX0NPUFlOQU1FLCAic2VuZGZpbGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgQ1VSTEZPUk1fU1RSRUFNLCAmcG9vaCwKLSAgICAgICAgICAgICAgICAgICAgICAgIENVUkxGT1JNX0NPTlRFTlRTTEVOR1RILCAobG9uZylwb29oLnNpemVsZWZ0LAotICAgICAgICAgICAgICAgICAgICAgICAgQ1VSTEZPUk1fRklMRU5BTUUsICJwb3N0aXQyLmMiLAotICAgICAgICAgICAgICAgICAgICAgICAgQ1VSTEZPUk1fRU5EKTsKKyAgaWYob2xkc3R5bGUpIHsKKyAgICBmb3JtcmMgPSBjdXJsX2Zvcm1hZGQoJmZvcm1wb3N0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAmbGFzdHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSTEZPUk1fQ09QWU5BTUUsICJzZW5kZmlsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIENVUkxGT1JNX1NUUkVBTSwgJnBvb2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgIENVUkxGT1JNX0NPTlRFTlRTTEVOR1RILCAobG9uZylwb29oLnNpemVsZWZ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBDVVJMRk9STV9GSUxFTkFNRSwgInBvc3RpdDIuYyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIENVUkxGT1JNX0VORCk7CisgIH0KKyAgZWxzZSB7CisgICAgLyogbmV3IHN0eWxlICovCisgICAgZm9ybXJjID0gY3VybF9mb3JtYWRkKCZmb3JtcG9zdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmxhc3RwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIENVUkxGT1JNX0NPUFlOQU1FLCAic2VuZGZpbGUgYWx0ZXJuYXRpdmUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICBDVVJMRk9STV9TVFJFQU0sICZwb29oLAorICAgICAgICAgICAgICAgICAgICAgICAgICBDVVJMRk9STV9DT05URU5UTEVOLCAoY3VybF9vZmZfdClwb29oLnNpemVsZWZ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBDVVJMRk9STV9GSUxFTkFNRSwgImZpbGUgbmFtZSAyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSTEZPUk1fRU5EKTsKKyAgfQogCiAgIGlmKGZvcm1yYykKICAgICBwcmludGYoImN1cmxfZm9ybWFkZCgxKSA9ICVkXG4iLCAoaW50KWZvcm1yYyk7CkBAIC0xNTUsNyArMTYyLDcgQEAKICAgaWYoZm9ybXJjKQogICAgIHByaW50ZigiY3VybF9mb3JtYWRkKDQpID0gJWRcbiIsIChpbnQpZm9ybXJjKTsKIAotICBpZiAoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CisgIGlmKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9lYXN5X2luaXQoKSBmYWlsZWRcbiIpOwogICAgIGN1cmxfZm9ybWZyZWUoZm9ybXBvc3QpOwogICAgIGN1cmxfZ2xvYmFsX2NsZWFudXAoKTsKQEAgLTE5MCwxMCArMTk3LDI3IEBACiAKICAgLyogYWx3YXlzIGNsZWFudXAgKi8KICAgY3VybF9lYXN5X2NsZWFudXAoY3VybCk7Ci0gIGN1cmxfZ2xvYmFsX2NsZWFudXAoKTsKIAogICAvKiBub3cgY2xlYW51cCB0aGUgZm9ybXBvc3QgY2hhaW4gKi8KICAgY3VybF9mb3JtZnJlZShmb3JtcG9zdCk7CiAKICAgcmV0dXJuIHJlczsKIH0KKworaW50IHRlc3QoY2hhciAqVVJMKQoreworICBpbnQgcmVzOworCisgIGlmKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgeworICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9nbG9iYWxfaW5pdCgpIGZhaWxlZFxuIik7CisgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKKyAgfQorCisgIHJlcyA9IG9uY2UoVVJMLCBUUlVFKTsgLyogb2xkICovCisgIGlmKCFyZXMpCisgICAgcmVzID0gb25jZShVUkwsIEZBTFNFKTsgLyogbmV3ICovCisKKyAgY3VybF9nbG9iYWxfY2xlYW51cCgpOworCisgIHJldHVybiByZXM7Cit9CmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYjU1NS5jIGIvdGVzdHMvbGlidGVzdC9saWI1NTUuYwppbmRleCA0OWE4MWJmLi5lODRhZjg3IDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYjU1NS5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliNTU1LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDExLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC05Niw3ICs5Niw4IEBACiAgIGVhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfSU9DVExEQVRBLCAmY291bnRlcik7CiAgIGVhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfUkVBREZVTkNUSU9OLCByZWFkY2FsbGJhY2spOwogICBlYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1JFQUREQVRBLCAmY291bnRlcik7Ci0gIC8qIFdlIENBTk5PVCBkbyB0aGUgUE9TVCBmaW5lIHdpdGhvdXQgc2V0dGluZyB0aGUgc2l6ZSAob3IgY2hvb3NlIGNodW5rZWQpISAqLworICAvKiBXZSBDQU5OT1QgZG8gdGhlIFBPU1QgZmluZSB3aXRob3V0IHNldHRpbmcgdGhlIHNpemUgKG9yIGNob29zZQorICAgICBjaHVua2VkKSEgKi8KICAgZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9QT1NURklFTERTSVpFLCBzdHJsZW4oVVBMT0FEVEhJUykpOwogCiAgIGVhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfUE9TVCwgMUwpOwpAQCAtMTEzLDcgKzExNCw3IEBACiAKICAgbXVsdGlfYWRkX2hhbmRsZShtLCBjdXJsKTsKIAotICB3aGlsZSAocnVubmluZykgeworICB3aGlsZShydW5uaW5nKSB7CiAgICAgc3RydWN0IHRpbWV2YWwgdGltZW91dDsKICAgICBmZF9zZXQgZmRyZWFkLCBmZHdyaXRlLCBmZGV4Y2VwOwogICAgIGludCBtYXhmZCA9IC05OTsKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliNTU2LmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjU1Ni5jCmluZGV4IGE0YjRiOTMuLjUyNzkzNTMgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliNTU2LmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWI1NTYuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTQwLDEyICs0MCwxMiBAQAogICBDVVJMY29kZSByZXM7CiAgIENVUkwgKmN1cmw7CiAKLSAgaWYgKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgeworICBpZihjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZ2xvYmFsX2luaXQoKSBmYWlsZWRcbiIpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CiAgIH0KIAotICBpZiAoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CisgIGlmKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9lYXN5X2luaXQoKSBmYWlsZWRcbiIpOwogICAgIGN1cmxfZ2xvYmFsX2NsZWFudXAoKTsKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWI1NTcuYyBiL3Rlc3RzL2xpYnRlc3QvbGliNTU3LmMKaW5kZXggYjg4Mjg1Mi4uNWJkYjhhYiAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWI1NTcuYworKysgYi90ZXN0cy9saWJ0ZXN0L2xpYjU1Ny5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMywgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNDUzLDYgKzQ1Myw3IEBACiAKICNlbGlmIChTSVpFT0ZfSU5UID09IDgpCiAKKyAgLyogIWNoZWNrc3JjISBkaXNhYmxlIExPTkdMSU5FIGFsbCAqLwogICBpPTE7IHVpX3Rlc3RbaV0ubnVtID0gMHhGRkZGRkZGRkZGRkZGRkZGVTsgdWlfdGVzdFtpXS5leHBlY3RlZCA9ICIxODQ0Njc0NDA3MzcwOTU1MTYxNSI7CiAgIGkrKzsgdWlfdGVzdFtpXS5udW0gPSAweEZGRkZGRkZGMDAwMDAwMDBVOyB1aV90ZXN0W2ldLmV4cGVjdGVkID0gIjE4NDQ2NzQ0MDY5NDE0NTg0MzIwIjsKICAgaSsrOyB1aV90ZXN0W2ldLm51bSA9IDB4MDAwMDAwMDBGRkZGRkZGRlU7IHVpX3Rlc3RbaV0uZXhwZWN0ZWQgPSAiNDI5NDk2NzI5NSI7CkBAIC0xMzQ0LDYgKzEzNDUsNyBAQAogICBudW1fY29mZnRfdGVzdHMgPSBpOwogCiAjZW5kaWYKKyAgLyogIWNoZWNrc3JjISBlbmFibGUgTE9OR0xJTkUgKi8KIAogICBmb3IoaT0xOyBpPD1udW1fY29mZnRfdGVzdHM7IGkrKykgewogCkBAIC0xMzUxLDExICsxMzUzLDEyIEBACiAgICAgICBjb190ZXN0W2ldLnJlc3VsdFtqXSA9ICdYJzsKICAgICBjb190ZXN0W2ldLnJlc3VsdFtCVUZTWi0xXSA9ICdcMCc7CiAKLSAgICAodm9pZCljdXJsX21zcHJpbnRmKGNvX3Rlc3RbaV0ucmVzdWx0LCAiJSIgQ1VSTF9GT1JNQVRfQ1VSTF9PRkZfVCwgY29fdGVzdFtpXS5udW0pOworICAgICh2b2lkKWN1cmxfbXNwcmludGYoY29fdGVzdFtpXS5yZXN1bHQsICIlIiBDVVJMX0ZPUk1BVF9DVVJMX09GRl9ULAorICAgICAgICAgICAgICAgICAgICAgICAgY29fdGVzdFtpXS5udW0pOwogCiAgICAgaWYobWVtY21wKGNvX3Rlc3RbaV0ucmVzdWx0LAotICAgICAgICAgICAgICAgY29fdGVzdFtpXS5leHBlY3RlZCwKLSAgICAgICAgICAgICAgIHN0cmxlbihjb190ZXN0W2ldLmV4cGVjdGVkKSkpIHsKKyAgICAgICAgICAgICAgY29fdGVzdFtpXS5leHBlY3RlZCwKKyAgICAgICAgICAgICAgc3RybGVuKGNvX3Rlc3RbaV0uZXhwZWN0ZWQpKSkgewogICAgICAgcHJpbnRmKCJjdXJsX29mZl90IHRlc3QgIyUuMmQ6IEZhaWxlZCAoRXhwZWN0ZWQ6ICVzIEdvdDogJXMpXG4iLAogICAgICAgICAgICAgIGksIGNvX3Rlc3RbaV0uZXhwZWN0ZWQsIGNvX3Rlc3RbaV0ucmVzdWx0KTsKICAgICAgIGZhaWxlZCsrOwpAQCAtMTM3MSw2ICsxMzc0LDUzIEBACiAgIHJldHVybiBmYWlsZWQ7CiB9CiAKK3N0YXRpYyBpbnQgc3RyaW5nX2NoZWNrKGNoYXIgKmJ1ZiwgY29uc3QgY2hhciAqYnVmMikKK3sKKyAgaWYoc3RyY21wKGJ1ZiwgYnVmMikpIHsKKyAgICAvKiB0aGV5IHNob3VsZG4ndCBkaWZmZXIgKi8KKyAgICBwcmludGYoInNwcmludGYgZmFpbGVkOlxud2UgJyVzJ1xuc3lzdGVtOiAnJXMnXG4iLAorICAgICAgICAgICBidWYsIGJ1ZjIpOworICAgIHJldHVybiAxOworICB9CisgIHJldHVybiAwOworfQorCisvKgorICogVGhlIG91dHB1dCBzdHJpbmdzIGluIHRoaXMgdGVzdCBuZWVkIHRvIGhhdmUgYmVlbiB2ZXJpZmllZCB3aXRoIGEgc3lzdGVtCisgKiBzcHJpbnRmKCkgYmVmb3JlIHVzZWQgaGVyZS4KKyAqLworc3RhdGljIGludCB0ZXN0X3N0cmluZ19mb3JtYXR0aW5nKHZvaWQpCit7CisgIGludCBlcnJvcnMgPSAwOworICBjaGFyIGJ1ZlsyNTZdOworICBjdXJsX21zbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiJTAqZCVzIiwgMiwgOSwgImZvbyIpOworICBlcnJvcnMgKz0gc3RyaW5nX2NoZWNrKGJ1ZiwgIjA5Zm9vIik7CisKKyAgY3VybF9tc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgIiUqLipzIiwgNSwgMiwgImZvbyIpOworICBlcnJvcnMgKz0gc3RyaW5nX2NoZWNrKGJ1ZiwgIiAgIGZvIik7CisKKyAgY3VybF9tc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgIiUqLipzIiwgMiwgNSwgImZvbyIpOworICBlcnJvcnMgKz0gc3RyaW5nX2NoZWNrKGJ1ZiwgImZvbyIpOworCisgIGN1cmxfbXNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICIlKi4qcyIsIDAsIDEwLCAiZm9vIik7CisgIGVycm9ycyArPSBzdHJpbmdfY2hlY2soYnVmLCAiZm9vIik7CisKKyAgY3VybF9tc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgIiUtMTBzIiwgImZvbyIpOworICBlcnJvcnMgKz0gc3RyaW5nX2NoZWNrKGJ1ZiwgImZvbyAgICAgICAiKTsKKworICBjdXJsX21zbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiJTEwcyIsICJmb28iKTsKKyAgZXJyb3JzICs9IHN0cmluZ19jaGVjayhidWYsICIgICAgICAgZm9vIik7CisKKyAgY3VybF9tc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgIiUqLipzIiwgLTEwLCAtMTAsICJmb28iKTsKKyAgZXJyb3JzICs9IHN0cmluZ19jaGVjayhidWYsICJmb28gICAgICAgIik7CisKKyAgaWYoIWVycm9ycykKKyAgICBwcmludGYoIkFsbCBjdXJsX21wcmludGYoKSBzdHJpbmdzIHRlc3RzIE9LIVxuIik7CisgIGVsc2UKKyAgICBwcmludGYoIlNvbWUgY3VybF9tcHJpbnRmKCkgc3RyaW5nIHRlc3RzIEZhaWxlZCFcbiIpOworCisgIHJldHVybiBlcnJvcnM7Cit9CiAKIGludCB0ZXN0KGNoYXIgKlVSTCkKIHsKQEAgLTEzOTEsNiArMTQ0MSw4IEBACiAKICAgZXJyb3JzICs9IHRlc3RfY3VybF9vZmZfdF9mb3JtYXR0aW5nKCk7CiAKKyAgZXJyb3JzICs9IHRlc3Rfc3RyaW5nX2Zvcm1hdHRpbmcoKTsKKwogICBpZihlcnJvcnMpCiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKICAgZWxzZQpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWI1NTguYyBiL3Rlc3RzL2xpYnRlc3QvbGliNTU4LmMKaW5kZXggMTI4NmExZC4uMDlhNTBkNiAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWI1NTguYworKysgYi90ZXN0cy9saWJ0ZXN0L2xpYjU1OC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMywgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzMsNyArMzMsNyBAQAogCiAgICh2b2lkKVVSTDsgLyogd2UgZG9uJ3QgdXNlIHRoaXMgKi8KIAotICBpZiAoY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpICE9IENVUkxFX09LKSB7CisgIGlmKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9nbG9iYWxfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKICAgfQpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWI1NjAuYyBiL3Rlc3RzL2xpYnRlc3QvbGliNTYwLmMKaW5kZXggZThiZTFjNy4uOGZhMGMyZCAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWI1NjAuYworKysgYi90ZXN0cy9saWJ0ZXN0L2xpYjU2MC5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliNTYyLmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjU2Mi5jCmluZGV4IGE1ZjBlYTUuLjgxOWI1MDcgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliNTYyLmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWI1NjIuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTEsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTQwLDEzICs0MCwxMyBAQAogICBDVVJMICpjdXJsOwogICBDVVJMY29kZSByZXMgPSBDVVJMRV9PSzsKIAotICBpZiAoY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpICE9IENVUkxFX09LKSB7CisgIGlmKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9nbG9iYWxfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKICAgfQogCiAgIC8qIGdldCBhIGN1cmwgaGFuZGxlICovCi0gIGlmICgoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKKyAgaWYoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2Vhc3lfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgY3VybF9nbG9iYWxfY2xlYW51cCgpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CkBAIC01OSw3ICs1OSw3IEBACiAgIHRlc3Rfc2V0b3B0KGN1cmwsIENVUkxPUFRfUE9SVCwgc3RydG9sKGxpYnRlc3RfYXJnMiwgTlVMTCwgMTApKTsKIAogICAvKiBzcGVjaWZ5IHRhcmdldCAqLwotICB0ZXN0X3NldG9wdChjdXJsLENVUkxPUFRfVVJMLCBVUkwpOworICB0ZXN0X3NldG9wdChjdXJsLCBDVVJMT1BUX1VSTCwgVVJMKTsKIAogICAvKiBOb3cgcnVuIG9mZiBhbmQgZG8gd2hhdCB5b3UndmUgYmVlbiB0b2xkISAqLwogICByZXMgPSBjdXJsX2Vhc3lfcGVyZm9ybShjdXJsKTsKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliNTY0LmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjU2NC5jCmluZGV4IDJhMGE1NjYuLjE4MjI5MzEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliNTY0LmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWI1NjQuYwpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYjU2Ni5jIGIvdGVzdHMvbGlidGVzdC9saWI1NjYuYwppbmRleCBiYTgzOWQ2Li45NGE5MWQ1IDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYjU2Ni5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliNTY2LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDExLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zMCwxMiArMzAsMTIgQEAKIAogICBkb3VibGUgY29udGVudF9sZW5ndGggPSAzOwogCi0gIGlmIChjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKKyAgaWYoY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpICE9IENVUkxFX09LKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2dsb2JhbF9pbml0KCkgZmFpbGVkXG4iKTsKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwogICB9CiAKLSAgaWYgKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgeworICBpZigoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZWFzeV9pbml0KCkgZmFpbGVkXG4iKTsKICAgICBjdXJsX2dsb2JhbF9jbGVhbnVwKCk7CiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliNTY3LmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjU2Ny5jCmluZGV4IDU3MzUyOWMuLjM4ZTBjMGIgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliNTY3LmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWI1NjcuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTEsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTMyLDEyICszMiwxMiBAQAogICBDVVJMICpjdXJsOwogICBzdHJ1Y3QgY3VybF9zbGlzdCAqY3VzdG9tX2hlYWRlcnM9TlVMTDsKIAotICBpZiAoY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpICE9IENVUkxFX09LKSB7CisgIGlmKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9nbG9iYWxfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKICAgfQogCi0gIGlmICgoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKKyAgaWYoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2Vhc3lfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgY3VybF9nbG9iYWxfY2xlYW51cCgpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYjU2OC5jIGIvdGVzdHMvbGlidGVzdC9saWI1NjguYwppbmRleCBiNmY1YWI3Li45YjNhMDc3IDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYjU2OC5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliNTY4LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDExLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC01MCwxMiArNTAsMTIgQEAKICAgaW50IHJlcXVlc3Q9MTsKICAgc3RydWN0IGN1cmxfc2xpc3QgKmN1c3RvbV9oZWFkZXJzPU5VTEw7CiAKLSAgaWYgKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgeworICBpZihjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZ2xvYmFsX2luaXQoKSBmYWlsZWRcbiIpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CiAgIH0KIAotICBpZiAoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CisgIGlmKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9lYXN5X2luaXQoKSBmYWlsZWRcbiIpOwogICAgIGN1cmxfZ2xvYmFsX2NsZWFudXAoKTsKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwpAQCAtMTMxLDcgKzEzMSw4IEBACiAgIH0KICAgdGVzdF9zZXRvcHQoY3VybCwgQ1VSTE9QVF9SVFNQSEVBREVSLCBjdXN0b21faGVhZGVycyk7CiAgIHRlc3Rfc2V0b3B0KGN1cmwsIENVUkxPUFRfUlRTUF9SRVFVRVNULCBDVVJMX1JUU1BSRVFfQU5OT1VOQ0UpOwotICB0ZXN0X3NldG9wdChjdXJsLCBDVVJMT1BUX1BPU1RGSUVMRFMsICJwb3N0eWZpZWxkPXBvc3R5c3R1ZmYmcHJvamVjdD1jdXJsXG4iKTsKKyAgdGVzdF9zZXRvcHQoY3VybCwgQ1VSTE9QVF9QT1NURklFTERTLAorICAgICAgICAgICAgICAicG9zdHlmaWVsZD1wb3N0eXN0dWZmJnByb2plY3Q9Y3VybFxuIik7CiAKICAgcmVzID0gY3VybF9lYXN5X3BlcmZvcm0oY3VybCk7CiAgIGlmKHJlcykKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliNTY5LmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjU2OS5jCmluZGV4IGJjNDg4NzIuLjU1MjgyYjYgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliNTY5LmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWI1NjkuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTEsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTQ3LDEzICs0NywxMyBAQAogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CiAgIH0KIAotICBpZiAoY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpICE9IENVUkxFX09LKSB7CisgIGlmKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9nbG9iYWxfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgZmNsb3NlKGlkZmlsZSk7CiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKICAgfQogCi0gIGlmICgoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKKyAgaWYoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2Vhc3lfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgY3VybF9nbG9iYWxfY2xlYW51cCgpOwogICAgIGZjbG9zZShpZGZpbGUpOwpAQCAtODYsNyArODYsOCBAQAogICAgIHN0cmVhbV91cmkgPSBOVUxMOwogCiAgICAgdGVzdF9zZXRvcHQoY3VybCwgQ1VSTE9QVF9SVFNQX1JFUVVFU1QsIENVUkxfUlRTUFJFUV9TRVRVUCk7Ci0gICAgdGVzdF9zZXRvcHQoY3VybCwgQ1VSTE9QVF9SVFNQX1RSQU5TUE9SVCwgIkZha2UvTm90UmVhbC9KdXN0QVRlc3Q7Zm9vPWJheiIpOworICAgIHRlc3Rfc2V0b3B0KGN1cmwsIENVUkxPUFRfUlRTUF9UUkFOU1BPUlQsCisgICAgICAgICAgICAgICAgIkZha2UvTm90UmVhbC9KdXN0QVRlc3Q7Zm9vPWJheiIpOwogICAgIHJlcyA9IGN1cmxfZWFzeV9wZXJmb3JtKGN1cmwpOwogICAgIGlmKHJlcykKICAgICAgIGdvdG8gdGVzdF9jbGVhbnVwOwpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWI1NzAuYyBiL3Rlc3RzL2xpYnRlc3QvbGliNTcwLmMKaW5kZXggMTc4ZjU4Zi4uMmRjNTdiNyAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWI1NzAuYworKysgYi90ZXN0cy9saWJ0ZXN0L2xpYjU3MC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMywgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzUsMTIgKzM1LDEyIEBACiAgIGludCByZXF1ZXN0PTE7CiAgIGNoYXIgKnN0cmVhbV91cmkgPSBOVUxMOwogCi0gIGlmIChjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKKyAgaWYoY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpICE9IENVUkxFX09LKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2dsb2JhbF9pbml0KCkgZmFpbGVkXG4iKTsKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwogICB9CiAKLSAgaWYgKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgeworICBpZigoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZWFzeV9pbml0KCkgZmFpbGVkXG4iKTsKICAgICBjdXJsX2dsb2JhbF9jbGVhbnVwKCk7CiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliNTcxLmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjU3MS5jCmluZGV4IGQ4ZGFkMzkuLmFkNmMzNjYgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliNTcxLmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWI1NzEuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTMsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTc1LDggKzc1LDkgQEAKICAgICAgICAgcHJpbnRmKCJSVFAgUEFZTE9BRCBDT1JSVVBURUQgWyVzXVxuIiwgZGF0YSArIGkpOwogICAgICAgICByZXR1cm4gZmFpbHVyZTsKICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgaWYgKG1lbWNtcChSVFBfREFUQSwgZGF0YSArIGksIG1lc3NhZ2Vfc2l6ZSAtIGkpICE9IDApIHsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICBpZihtZW1jbXAoUlRQX0RBVEEsIGRhdGEgKyBpLCBtZXNzYWdlX3NpemUgLSBpKSAhPSAwKSB7CiAgICAgICAgIHByaW50ZigiUlRQIFBBWUxPQUQgRU5EIENPUlJVUFRFRCAoJWQpLCBbJXNdXG4iLAogICAgICAgICAgICAgICAgbWVzc2FnZV9zaXplIC0gaSwgZGF0YSArIGkpOwogICAgICAgICByZXR1cm4gZmFpbHVyZTsKQEAgLTExMCwxMyArMTExLDEzIEBACiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKICAgfQogCi0gIGlmIChjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKKyAgaWYoY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpICE9IENVUkxFX09LKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2dsb2JhbF9pbml0KCkgZmFpbGVkXG4iKTsKICAgICBmY2xvc2UocHJvdG9maWxlKTsKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwogICB9CiAKLSAgaWYgKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgeworICBpZigoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZWFzeV9pbml0KCkgZmFpbGVkXG4iKTsKICAgICBmY2xvc2UocHJvdG9maWxlKTsKICAgICBjdXJsX2dsb2JhbF9jbGVhbnVwKCk7CmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYjU3Mi5jIGIvdGVzdHMvbGlidGVzdC9saWI1NzIuYwppbmRleCBmZDU0N2I4Li4zNDc1ZTgwIDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYjU3Mi5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliNTcyLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDExLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC01MCwxMiArNTAsMTIgQEAKICAgaW50IHJlcXVlc3Q9MTsKICAgc3RydWN0IGN1cmxfc2xpc3QgKmN1c3RvbV9oZWFkZXJzPU5VTEw7CiAKLSAgaWYgKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgeworICBpZihjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZ2xvYmFsX2luaXQoKSBmYWlsZWRcbiIpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CiAgIH0KIAotICBpZiAoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CisgIGlmKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9lYXN5X2luaXQoKSBmYWlsZWRcbiIpOwogICAgIGN1cmxfZ2xvYmFsX2NsZWFudXAoKTsKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWI1NzMuYyBiL3Rlc3RzL2xpYnRlc3QvbGliNTczLmMKaW5kZXggYjQ5ZDI2YS4uZGNlMTk4YiAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWI1NzMuYworKysgYi90ZXN0cy9saWJ0ZXN0L2xpYjU3My5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNDQsNyArNDQsNyBAQAogICBkYmxfZXBzaWxvbiA9IDEuMDsKICAgZG8gewogICAgIGRibF9lcHNpbG9uIC89IDIuMDsKLSAgfSB3aGlsZSAoKGRvdWJsZSkoMS4wICsgKGRibF9lcHNpbG9uLzIuMCkpID4gKGRvdWJsZSkxLjApOworICB9IHdoaWxlKChkb3VibGUpKDEuMCArIChkYmxfZXBzaWxvbi8yLjApKSA+IChkb3VibGUpMS4wKTsKIAogICBzdGFydF90ZXN0X3RpbWluZygpOwogCkBAIC02NSw3ICs2NSw3IEBACiAKICAgbXVsdGlfYWRkX2hhbmRsZShtLCBjKTsKIAotICB3aGlsZSAocnVubmluZykgeworICB3aGlsZShydW5uaW5nKSB7CiAgICAgc3RydWN0IHRpbWV2YWwgdGltZW91dDsKICAgICBmZF9zZXQgZmRyZWFkLCBmZHdyaXRlLCBmZGV4Y2VwOwogICAgIGludCBtYXhmZCA9IC05OTsKQEAgLTk0LDggKzk0LDkgQEAKICAgfQogCiAgIGN1cmxfZWFzeV9nZXRpbmZvKGMsIENVUkxJTkZPX0NPTk5FQ1RfVElNRSwgJmNvbm5lY3RfdGltZSk7Ci0gIGlmIChjb25uZWN0X3RpbWUgPCBkYmxfZXBzaWxvbikgewotICAgIGZwcmludGYoc3RkZXJyLCAiY29ubmVjdCB0aW1lIGlzIDwgZXBzaWxvblxuIik7CisgIGlmKGNvbm5lY3RfdGltZSA8IGRibF9lcHNpbG9uKSB7CisgICAgZnByaW50ZihzdGRlcnIsICJjb25uZWN0IHRpbWUgJWUgaXMgPCBlcHNpbG9uICVlXG4iLAorICAgICAgICAgICAgY29ubmVjdF90aW1lLCBkYmxfZXBzaWxvbik7CiAgICAgcmVzID0gVEVTVF9FUlJfTUFKT1JfQkFEOwogICB9CiAKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliNTc0LmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjU3NC5jCmluZGV4IGFmYjJiY2UuLjlmOTIyMmIgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliNTc0LmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWI1NzQuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTEsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTM1LDEyICszNSwxMiBAQAogICBpbnQgcmVzOwogICBDVVJMICpjdXJsOwogCi0gIGlmIChjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKKyAgaWYoY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpICE9IENVUkxFX09LKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2dsb2JhbF9pbml0KCkgZmFpbGVkXG4iKTsKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwogICB9CiAKLSAgaWYgKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgeworICBpZigoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZWFzeV9pbml0KCkgZmFpbGVkXG4iKTsKICAgICBjdXJsX2dsb2JhbF9jbGVhbnVwKCk7CiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliNTc1LmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjU3NS5jCmluZGV4IDk0MmRmNjguLjE4NjE3MGMgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliNTc1LmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWI1NzUuYwpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYjU3Ni5jIGIvdGVzdHMvbGlidGVzdC9saWI1NzYuYwppbmRleCA2MWJiNjEzLi4zYjlhOTAwIDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYjU3Ni5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliNTc2LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDExLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC03NCw3ICs3NCw4IEBACiAgIH0KICAgaWYoZmluZm8tPmZpbGV0eXBlID09IENVUkxGSUxFVFlQRV9GSUxFKSB7CiAgICAgY2hfZC0+cHJpbnRfY29udGVudCA9IDE7Ci0gICAgcHJpbnRmKCJDb250ZW50OlxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7CisgICAgcHJpbnRmKCJDb250ZW50OlxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCisgICAgICAgICAgICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7CiAgIH0KICAgaWYoc3RyY21wKGZpbmZvLT5maWxlbmFtZSwgInNvbWVvdGhlcnRleHQudHh0IikgPT0gMCkgewogICAgIHByaW50ZigiIyBUSElTIENPTlRFTlQgV0FTIFNLSVBQRUQgSU4gQ0hVTktfQkdOIENBTExCQUNLICNcbiIpOwpAQCAtMTAwLDcgKzEwMSw3IEBACiB7CiAgIENVUkwgKmhhbmRsZSA9IE5VTEw7CiAgIENVUkxjb2RlIHJlcyA9IENVUkxFX09LOwotICBjaHVua19kYXRhX3QgY2h1bmtfZGF0YSA9IHswLDB9OworICBjaHVua19kYXRhX3QgY2h1bmtfZGF0YSA9IHswLCAwfTsKICAgY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpOwogICBoYW5kbGUgPSBjdXJsX2Vhc3lfaW5pdCgpOwogICBpZighaGFuZGxlKSB7CmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYjU3OC5jIGIvdGVzdHMvbGlidGVzdC9saWI1NzguYwppbmRleCBhMzliMzE3Li41ZTAxZDM2IDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYjU3OC5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliNTc4LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDExLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yOCw3ICsyOCw4IEBACiAKIHN0YXRpYyBzaXplX3QgZGF0YV9zaXplID0gc2l6ZW9mKGRhdGEpIC8gc2l6ZW9mKGNoYXIpOwogCi1zdGF0aWMgaW50IHByb2dyZXNzX2NhbGxiYWNrKHZvaWQgKmNsaWVudHAsIGRvdWJsZSBkbHRvdGFsLCBkb3VibGUgZGxub3csIGRvdWJsZSB1bHRvdGFsLCBkb3VibGUgdWxub3cpCitzdGF0aWMgaW50IHByb2dyZXNzX2NhbGxiYWNrKHZvaWQgKmNsaWVudHAsIGRvdWJsZSBkbHRvdGFsLCBkb3VibGUgZGxub3csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSB1bHRvdGFsLCBkb3VibGUgdWxub3cpCiB7CiAgIEZJTEUgKm1vbyA9IGZvcGVuKGxpYnRlc3RfYXJnMiwgIndiIik7CiAKQEAgLTM3LDEwICszOCwxMSBAQAogICAodm9pZClkbG5vdzsgLyogVU5VU0VEICovCiAKICAgaWYobW9vKSB7Ci0gICAgaWYgKChzaXplX3QpdWx0b3RhbCA9PSBkYXRhX3NpemUgJiYgKHNpemVfdCl1bG5vdyA9PSBkYXRhX3NpemUpCisgICAgaWYoKHNpemVfdCl1bHRvdGFsID09IGRhdGFfc2l6ZSAmJiAoc2l6ZV90KXVsbm93ID09IGRhdGFfc2l6ZSkKICAgICAgIGZwcmludGYobW9vLCAiUEFTU0VELCBVTCBkYXRhIG1hdGNoZWQgZGF0YSBzaXplXG4iKTsKICAgICBlbHNlCi0gICAgICBmcHJpbnRmKG1vbywgIlByb2dyZXNzIGNhbGxiYWNrIGNhbGxlZCB3aXRoIFVMICVmIG91dCBvZiAlZlxuIiwgdWxub3csIHVsdG90YWwpOworICAgICAgZnByaW50Zihtb28sICJQcm9ncmVzcyBjYWxsYmFjayBjYWxsZWQgd2l0aCBVTCAlZiBvdXQgb2YgJWZcbiIsCisgICAgICAgICAgICAgIHVsbm93LCB1bHRvdGFsKTsKICAgICBmY2xvc2UobW9vKTsKICAgfQogICByZXR1cm4gMDsKQEAgLTUxLDEyICs1MywxMiBAQAogICBDVVJMICpjdXJsOwogICBDVVJMY29kZSByZXM9Q1VSTEVfT0s7CiAKLSAgaWYgKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgeworICBpZihjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZ2xvYmFsX2luaXQoKSBmYWlsZWRcbiIpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CiAgIH0KIAotICBpZiAoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CisgIGlmKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9lYXN5X2luaXQoKSBmYWlsZWRcbiIpOwogICAgIGN1cmxfZ2xvYmFsX2NsZWFudXAoKTsKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC9saWI1NzkuYyBiL3Rlc3RzL2xpYnRlc3QvbGliNTc5LmMKaW5kZXggMGU4YmQyZi4uYWFlMjk5YyAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWI1NzkuYworKysgYi90ZXN0cy9saWJ0ZXN0L2xpYjU3OS5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtOTIsMTkgKzkyLDE5IEBACiAgIHN0cnVjdCBXcml0ZVRoaXMgcG9vaDsKICAgcG9vaC5jb3VudGVyID0gMDsKIAotICBpZiAoY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpICE9IENVUkxFX09LKSB7CisgIGlmKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9nbG9iYWxfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKICAgfQogCi0gIGlmICgoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKKyAgaWYoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2Vhc3lfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgY3VybF9nbG9iYWxfY2xlYW51cCgpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CiAgIH0KIAogICBzbGlzdCA9IGN1cmxfc2xpc3RfYXBwZW5kKHNsaXN0LCAiVHJhbnNmZXItRW5jb2Rpbmc6IGNodW5rZWQiKTsKLSAgaWYgKHNsaXN0ID09IE5VTEwpIHsKKyAgaWYoc2xpc3QgPT0gTlVMTCkgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9zbGlzdF9hcHBlbmQoKSBmYWlsZWRcbiIpOwogICAgIGN1cmxfZWFzeV9jbGVhbnVwKGN1cmwpOwogICAgIGN1cmxfZ2xvYmFsX2NsZWFudXAoKTsKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliNTgyLmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjU4Mi5jCmluZGV4IDRjM2VhNmYuLjQ0NGI0MTYgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliNTgyLmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWI1ODIuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTIsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTUxLDkgKzUxLDkgQEAKICAgaWYobWVudGlvbikKICAgICBmcHJpbnRmKHN0ZGVyciwgIlJlbW92ZSBzb2NrZXQgZmQgJWRcbiIsIChpbnQpIGZkKTsKIAotICBmb3IgKGkgPSAwOyBpIDwgc29ja2V0cy0+Y291bnQ7ICsraSkgewotICAgIGlmIChzb2NrZXRzLT5zb2NrZXRzW2ldID09IGZkKSB7Ci0gICAgICBpZiAoaSA8IHNvY2tldHMtPmNvdW50IC0gMSkKKyAgZm9yKGkgPSAwOyBpIDwgc29ja2V0cy0+Y291bnQ7ICsraSkgeworICAgIGlmKHNvY2tldHMtPnNvY2tldHNbaV0gPT0gZmQpIHsKKyAgICAgIGlmKGkgPCBzb2NrZXRzLT5jb3VudCAtIDEpCiAgICAgICAgIG1lbW1vdmUoJnNvY2tldHMtPnNvY2tldHNbaV0sICZzb2NrZXRzLT5zb2NrZXRzW2kgKyAxXSwKICAgICAgICAgICAgICAgc2l6ZW9mKGN1cmxfc29ja2V0X3QpICogKHNvY2tldHMtPmNvdW50IC0gKGkgKyAxKSkpOwogICAgICAgLS1zb2NrZXRzLT5jb3VudDsKQEAgLTExMCwxMCArMTEwLDEwIEBACiAgICh2b2lkKWVhc3k7IC8qIHVudXNlZCAqLwogICAodm9pZClzb2NrZXRwOyAvKiB1bnVzZWQgKi8KIAotICBpZiAoYWN0aW9uID09IENVUkxfUE9MTF9JTiB8fCBhY3Rpb24gPT0gQ1VSTF9QT0xMX0lOT1VUKQorICBpZihhY3Rpb24gPT0gQ1VSTF9QT0xMX0lOIHx8IGFjdGlvbiA9PSBDVVJMX1BPTExfSU5PVVQpCiAgICAgYWRkRmQoJnNvY2tldHMtPnJlYWQsIHMsICJyZWFkIik7CiAKLSAgaWYgKGFjdGlvbiA9PSBDVVJMX1BPTExfT1VUIHx8IGFjdGlvbiA9PSBDVVJMX1BPTExfSU5PVVQpCisgIGlmKGFjdGlvbiA9PSBDVVJMX1BPTExfT1VUIHx8IGFjdGlvbiA9PSBDVVJMX1BPTExfSU5PVVQpCiAgICAgYWRkRmQoJnNvY2tldHMtPndyaXRlLCBzLCAid3JpdGUiKTsKIAogICBpZihhY3Rpb24gPT0gQ1VSTF9QT0xMX1JFTU9WRSkgewpAQCAtMTMyLDcgKzEzMiw3IEBACiAgIHN0cnVjdCB0aW1ldmFsKiB0aW1lb3V0ID0gdXNlcnA7CiAKICAgKHZvaWQpbXVsdGk7IC8qIHVudXNlZCAqLwotICBpZiAodGltZW91dF9tcyAhPSAtMSkgeworICBpZih0aW1lb3V0X21zICE9IC0xKSB7CiAgICAgKnRpbWVvdXQgPSB0dXRpbF90dm5vdygpOwogICAgIHRpbWVvdXQtPnR2X3VzZWMgKz0gdGltZW91dF9tcyAqIDEwMDA7CiAgIH0KQEAgLTE1MSwxMCArMTUxLDEwIEBACiAgIENVUkxNc2cqIG1lc3NhZ2U7CiAgIGludCByZXN1bHQgPSAwOwogICAqc3VjY2VzcyA9IDA7Ci0gIHdoaWxlICgobWVzc2FnZSA9IGN1cmxfbXVsdGlfaW5mb19yZWFkKGN1cmwsICZudW1NZXNzYWdlcykpICE9IE5VTEwpIHsKLSAgICBpZiAobWVzc2FnZS0+bXNnID09IENVUkxNU0dfRE9ORSkgeworICB3aGlsZSgobWVzc2FnZSA9IGN1cmxfbXVsdGlfaW5mb19yZWFkKGN1cmwsICZudW1NZXNzYWdlcykpICE9IE5VTEwpIHsKKyAgICBpZihtZXNzYWdlLT5tc2cgPT0gQ1VSTE1TR19ET05FKSB7CiAgICAgICByZXN1bHQgPSAxOwotICAgICAgaWYgKG1lc3NhZ2UtPmRhdGEucmVzdWx0ID09IENVUkxFX09LKQorICAgICAgaWYobWVzc2FnZS0+ZGF0YS5yZXN1bHQgPT0gQ1VSTEVfT0spCiAgICAgICAgICpzdWNjZXNzID0gMTsKICAgICAgIGVsc2UKICAgICAgICAgKnN1Y2Nlc3MgPSAwOwpAQCAtMTc2LDcgKzE3Niw3IEBACiAgIG5vdyA9IHR1dGlsX3R2bm93KCk7CiAgIHJlc3VsdCA9ICh0aW1lb3V0LT50dl9zZWMgLSBub3cudHZfc2VjKSAqIDEwMDAwMDAgKwogICAgIHRpbWVvdXQtPnR2X3VzZWMgLSBub3cudHZfdXNlYzsKLSAgaWYgKHJlc3VsdCA8IDApCisgIGlmKHJlc3VsdCA8IDApCiAgICAgcmVzdWx0ID0gMDsKIAogICByZXR1cm4gY3VybHhfc3p0b3NpKHJlc3VsdCk7CkBAIC0xODksOSArMTg5LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGN1cmxfc29ja2V0X3QgKm1heEZkKQogewogICBpbnQgaTsKLSAgZm9yIChpID0gMDsgaSA8IHNvY2tldHMtPmNvdW50OyArK2kpIHsKKyAgZm9yKGkgPSAwOyBpIDwgc29ja2V0cy0+Y291bnQ7ICsraSkgewogICAgIEZEX1NFVChzb2NrZXRzLT5zb2NrZXRzW2ldLCBmZHNldCk7Ci0gICAgaWYgKCptYXhGZCA8IHNvY2tldHMtPnNvY2tldHNbaV0gKyAxKSB7CisgICAgaWYoKm1heEZkIDwgc29ja2V0cy0+c29ja2V0c1tpXSArIDEpIHsKICAgICAgICptYXhGZCA9IHNvY2tldHMtPnNvY2tldHNbaV0gKyAxOwogICAgIH0KICAgfQpAQCAtMjAyLDcgKzIwMiw3IEBACiB7CiAgIGludCBudW1oYW5kbGVzID0gMDsKICAgQ1VSTE1jb2RlIHJlc3VsdCA9IGN1cmxfbXVsdGlfc29ja2V0X2FjdGlvbihjdXJsLCBzLCBldkJpdG1hc2ssICZudW1oYW5kbGVzKTsKLSAgaWYgKHJlc3VsdCAhPSBDVVJMTV9PSykgeworICBpZihyZXN1bHQgIT0gQ1VSTE1fT0spIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgIkN1cmwgZXJyb3Igb24gJXM6ICVpICglcylcbiIsCiAgICAgICAgICAgICBpbmZvLCByZXN1bHQsIGN1cmxfbXVsdGlfc3RyZXJyb3IocmVzdWx0KSk7CiAgIH0KQEAgLTIxNSw4ICsyMTUsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICBpbnQgZXZCaXRtYXNrLCBjb25zdCBjaGFyICpuYW1lKQogewogICBpbnQgaTsKLSAgZm9yIChpID0gMDsgaSA8IHNvY2tldHMtPmNvdW50OyArK2kpIHsKLSAgICBpZiAoRkRfSVNTRVQoc29ja2V0cy0+c29ja2V0c1tpXSwgZmRzZXQpKSB7CisgIGZvcihpID0gMDsgaSA8IHNvY2tldHMtPmNvdW50OyArK2kpIHsKKyAgICBpZihGRF9JU1NFVChzb2NrZXRzLT5zb2NrZXRzW2ldLCBmZHNldCkpIHsKICAgICAgIG5vdGlmeUN1cmwoY3VybCwgc29ja2V0cy0+c29ja2V0c1tpXSwgZXZCaXRtYXNrLCBuYW1lKTsKICAgICB9CiAgIH0KQEAgLTIyNyw3ICsyMjcsNyBAQAogICBpbnQgcmVzID0gMDsKICAgQ1VSTCAqY3VybCA9IE5VTEw7CiAgIEZJTEUgKmhkX3NyYyA9IE5VTEw7Ci0gIGludCBoZCA7CisgIGludCBoZDsKICAgaW50IGVycm9yOwogICBzdHJ1Y3Rfc3RhdCBmaWxlX2luZm87CiAgIENVUkxNICptID0gTlVMTDsKQEAgLTIzNyw3ICsyMzcsNyBAQAogCiAgIHN0YXJ0X3Rlc3RfdGltaW5nKCk7CiAKLSAgaWYgKCFsaWJ0ZXN0X2FyZzMpIHsKKyAgaWYoIWxpYnRlc3RfYXJnMykgewogICAgIGZwcmludGYoc3RkZXJyLCAiVXNhZ2U6IGxpYjU4MiBbdXJsXSBbZmlsZW5hbWVdIFt1c2VybmFtZV1cbiIpOwogICAgIHJldHVybiBURVNUX0VSUl9VU0FHRTsKICAgfQpAQCAtMjc2LDcgKzI3Niw3IEBACiAgIGVhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfVVBMT0FELCAxTCk7CiAKICAgLyogc3BlY2lmeSB0YXJnZXQgKi8KLSAgZWFzeV9zZXRvcHQoY3VybCxDVVJMT1BUX1VSTCwgVVJMKTsKKyAgZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9VUkwsIFVSTCk7CiAKICAgLyogZ28gdmVyYm9zZSAqLwogICBlYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1ZFUkJPU0UsIDFMKTsKQEAgLTMwMCw4ICszMDAsNyBAQAogCiAgIG11bHRpX2FkZF9oYW5kbGUobSwgY3VybCk7CiAKLSAgd2hpbGUgKCFjaGVja0ZvckNvbXBsZXRpb24obSwgJnN1Y2Nlc3MpKQotICB7CisgIHdoaWxlKCFjaGVja0ZvckNvbXBsZXRpb24obSwgJnN1Y2Nlc3MpKSB7CiAgICAgZmRfc2V0IHJlYWRTZXQsIHdyaXRlU2V0OwogICAgIGN1cmxfc29ja2V0X3QgbWF4RmQgPSAwOwogICAgIHN0cnVjdCB0aW1ldmFsIHR2ID0gezEwLCAwfTsKQEAgLTMxMSwxNCArMzEwLDEyIEBACiAgICAgdXBkYXRlRmRTZXQoJnNvY2tldHMucmVhZCwgJnJlYWRTZXQsICZtYXhGZCk7CiAgICAgdXBkYXRlRmRTZXQoJnNvY2tldHMud3JpdGUsICZ3cml0ZVNldCwgJm1heEZkKTsKIAotICAgIGlmICh0aW1lb3V0LnR2X3NlYyAhPSAtMSkKLSAgICB7CisgICAgaWYodGltZW91dC50dl9zZWMgIT0gLTEpIHsKICAgICAgIGludCB1c1RpbWVvdXQgPSBnZXRNaWNyb1NlY29uZFRpbWVvdXQoJnRpbWVvdXQpOwogICAgICAgdHYudHZfc2VjID0gdXNUaW1lb3V0IC8gMTAwMDAwMDsKICAgICAgIHR2LnR2X3VzZWMgPSB1c1RpbWVvdXQgJSAxMDAwMDAwOwogICAgIH0KLSAgICBlbHNlIGlmIChtYXhGZCA8PSAwKQotICAgIHsKKyAgICBlbHNlIGlmKG1heEZkIDw9IDApIHsKICAgICAgIHR2LnR2X3NlYyA9IDA7CiAgICAgICB0di50dl91c2VjID0gMTAwMDAwOwogICAgIH0KQEAgLTMyOSw4ICszMjYsNyBAQAogICAgIGNoZWNrRmRTZXQobSwgJnNvY2tldHMucmVhZCwgJnJlYWRTZXQsIENVUkxfQ1NFTEVDVF9JTiwgInJlYWQiKTsKICAgICBjaGVja0ZkU2V0KG0sICZzb2NrZXRzLndyaXRlLCAmd3JpdGVTZXQsIENVUkxfQ1NFTEVDVF9PVVQsICJ3cml0ZSIpOwogCi0gICAgaWYgKHRpbWVvdXQudHZfc2VjICE9IC0xICYmIGdldE1pY3JvU2Vjb25kVGltZW91dCgmdGltZW91dCkgPT0gMCkKLSAgICB7CisgICAgaWYodGltZW91dC50dl9zZWMgIT0gLTEgJiYgZ2V0TWljcm9TZWNvbmRUaW1lb3V0KCZ0aW1lb3V0KSA9PSAwKSB7CiAgICAgICAvKiBDdXJsJ3MgdGltZXIgaGFzIGVsYXBzZWQuICovCiAgICAgICBub3RpZnlDdXJsKG0sIENVUkxfU09DS0VUX1RJTUVPVVQsIDAsICJ0aW1lb3V0Iik7CiAgICAgfQpAQCAtMzM4LDggKzMzNCw3IEBACiAgICAgYWJvcnRfb25fdGVzdF90aW1lb3V0KCk7CiAgIH0KIAotICBpZiAoIXN1Y2Nlc3MpCi0gIHsKKyAgaWYoIXN1Y2Nlc3MpIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgIkVycm9yIHVwbG9hZGluZyBmaWxlLlxuIik7CiAgICAgcmVzID0gVEVTVF9FUlJfTUFKT1JfQkFEOwogICB9CmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYjU4My5jIGIvdGVzdHMvbGlidGVzdC9saWI1ODMuYwppbmRleCBhZDVhNWNlLi45YWY0OGQyIDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYjU4My5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliNTgzLmMKQEAgLTksNyArOSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjEsNyArMjEsNyBAQAogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIC8qCiAgKiBUaGlzIHRlc3QgY2FzZSBpcyBiYXNlZCBvbiB0aGUgc2FtcGxlIGNvZGUgcHJvdmlkZWQgYnkgU2FxaWIgQWxpCi0gKiBodHRwOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMTEtMDMvMDA2Ni5odG1sCisgKiBodHRwczovL2N1cmwuaGF4eC5zZS9tYWlsL2xpYi0yMDExLTAzLzAwNjYuaHRtbAogICovCiAKICNpbmNsdWRlICJ0ZXN0LmgiCmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYjU4Ni5jIGIvdGVzdHMvbGlidGVzdC9saWI1ODYuYwppbmRleCBhMTQxMmI1Li5lYjdjZmEwIDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYjU4Ni5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliNTg2LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDEzLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zNiw4ICszNiw4IEBACiB9OwogCiAvKiBsb2NrIGNhbGxiYWNrICovCi1zdGF0aWMgdm9pZCBteV9sb2NrKENVUkwgKmhhbmRsZSwgY3VybF9sb2NrX2RhdGEgZGF0YSwgY3VybF9sb2NrX2FjY2VzcyBsYWNjZXNzLAotICAgICAgICAgIHZvaWQgKnVzZXB0ciApCitzdGF0aWMgdm9pZCBteV9sb2NrKENVUkwgKmhhbmRsZSwgY3VybF9sb2NrX2RhdGEgZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgY3VybF9sb2NrX2FjY2VzcyBsYWNjZXNzLCB2b2lkICp1c2VwdHIpCiB7CiAgIGNvbnN0IGNoYXIgKndoYXQ7CiAgIHN0cnVjdCB1c2VyZGF0YSAqdXNlciA9IChzdHJ1Y3QgdXNlcmRhdGEgKil1c2VwdHI7CkBAIC00NSw3ICs0NSw3IEBACiAgICh2b2lkKWhhbmRsZTsKICAgKHZvaWQpbGFjY2VzczsKIAotICBzd2l0Y2ggKCBkYXRhICkgeworICBzd2l0Y2ggKGRhdGEpIHsKICAgICBjYXNlIENVUkxfTE9DS19EQVRBX1NIQVJFOgogICAgICAgd2hhdCA9ICJzaGFyZSI7CiAgICAgICBicmVhazsKQEAgLTY3LDEyICs2NywxMiBAQAogfQogCiAvKiB1bmxvY2sgY2FsbGJhY2sgKi8KLXN0YXRpYyB2b2lkIG15X3VubG9jayhDVVJMICpoYW5kbGUsIGN1cmxfbG9ja19kYXRhIGRhdGEsIHZvaWQgKnVzZXB0ciApCitzdGF0aWMgdm9pZCBteV91bmxvY2soQ1VSTCAqaGFuZGxlLCBjdXJsX2xvY2tfZGF0YSBkYXRhLCB2b2lkICp1c2VwdHIpCiB7CiAgIGNvbnN0IGNoYXIgKndoYXQ7CiAgIHN0cnVjdCB1c2VyZGF0YSAqdXNlciA9IChzdHJ1Y3QgdXNlcmRhdGEgKil1c2VwdHI7CiAgICh2b2lkKWhhbmRsZTsKLSAgc3dpdGNoICggZGF0YSApIHsKKyAgc3dpdGNoICggZGF0YSkgewogICAgIGNhc2UgQ1VSTF9MT0NLX0RBVEFfU0hBUkU6CiAgICAgICB3aGF0ID0gInNoYXJlIjsKICAgICAgIGJyZWFrOwpAQCAtMTAxLDcgKzEwMSw3IEBACiAgIENVUkwgKmN1cmw7CiAgIGludCBpPTA7CiAKLSAgaWYgKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgeworICBpZigoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZWFzeV9pbml0KCkgZmFpbGVkXG4iKTsKICAgICByZXR1cm4gTlVMTDsKICAgfQpAQCAtMTA5LDE3ICsxMDksMTcgQEAKICAgY3VybF9lYXN5X3NldG9wdChjdXJsLCBDVVJMT1BUX1NTTF9WRVJJRllQRUVSLCAwTCk7CiAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9WRVJCT1NFLCAgICAxTCk7CiAgIGN1cmxfZWFzeV9zZXRvcHQoY3VybCwgQ1VSTE9QVF9VUkwsICAgICAgICB0ZGF0YS0+dXJsKTsKLSAgcHJpbnRmKCAiQ1VSTE9QVF9TSEFSRVxuIiApOworICBwcmludGYoIkNVUkxPUFRfU0hBUkVcbiIpOwogICBjdXJsX2Vhc3lfc2V0b3B0KGN1cmwsIENVUkxPUFRfU0hBUkUsIHRkYXRhLT5zaGFyZSk7CiAKLSAgcHJpbnRmKCAiUEVSRk9STVxuIiApOworICBwcmludGYoIlBFUkZPUk1cbiIpOwogICBjb2RlID0gY3VybF9lYXN5X3BlcmZvcm0oY3VybCk7Ci0gIGlmKCBjb2RlICE9IENVUkxFX09LICkgeworICBpZihjb2RlICE9IENVUkxFX09LKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJwZXJmb3JtIHVybCAnJXMnIHJlcGVhdCAlZCBmYWlsZWQsIGN1cmxjb2RlICVkXG4iLAogICAgICAgICAgICAgdGRhdGEtPnVybCwgaSwgKGludCljb2RlKTsKICAgfQogCi0gIHByaW50ZiggIkNMRUFOVVBcbiIgKTsKKyAgcHJpbnRmKCJDTEVBTlVQXG4iKTsKICAgY3VybF9lYXN5X2NsZWFudXAoY3VybCk7CiAKICAgcmV0dXJuIE5VTEw7CkBAIC0xNDAsMzggKzE0MCwzOSBAQAogICB1c2VyLnRleHQgPSAoY2hhciAqKSJQaWdzIGluIHNwYWNlIjsKICAgdXNlci5jb3VudGVyID0gMDsKIAotICBwcmludGYoICJHTE9CQUxfSU5JVFxuIiApOwotICBpZiAoY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpICE9IENVUkxFX09LKSB7CisgIHByaW50ZigiR0xPQkFMX0lOSVRcbiIpOworICBpZihjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZ2xvYmFsX2luaXQoKSBmYWlsZWRcbiIpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CiAgIH0KIAogICAvKiBwcmVwYXJlIHNoYXJlICovCi0gIHByaW50ZiggIlNIQVJFX0lOSVRcbiIgKTsKLSAgaWYgKChzaGFyZSA9IGN1cmxfc2hhcmVfaW5pdCgpKSA9PSBOVUxMKSB7CisgIHByaW50ZigiU0hBUkVfSU5JVFxuIik7CisgIGlmKChzaGFyZSA9IGN1cmxfc2hhcmVfaW5pdCgpKSA9PSBOVUxMKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX3NoYXJlX2luaXQoKSBmYWlsZWRcbiIpOwogICAgIGN1cmxfZ2xvYmFsX2NsZWFudXAoKTsKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwogICB9CiAKLSAgaWYgKCBDVVJMU0hFX09LID09IHNjb2RlICkgewotICAgIHByaW50ZiggIkNVUkxTSE9QVF9MT0NLRlVOQ1xuIiApOwotICAgIHNjb2RlID0gY3VybF9zaGFyZV9zZXRvcHQoIHNoYXJlLCBDVVJMU0hPUFRfTE9DS0ZVTkMsIG15X2xvY2spOworICBpZihDVVJMU0hFX09LID09IHNjb2RlKSB7CisgICAgcHJpbnRmKCJDVVJMU0hPUFRfTE9DS0ZVTkNcbiIpOworICAgIHNjb2RlID0gY3VybF9zaGFyZV9zZXRvcHQoc2hhcmUsIENVUkxTSE9QVF9MT0NLRlVOQywgbXlfbG9jayk7CiAgIH0KLSAgaWYgKCBDVVJMU0hFX09LID09IHNjb2RlICkgewotICAgIHByaW50ZiggIkNVUkxTSE9QVF9VTkxPQ0tGVU5DXG4iICk7Ci0gICAgc2NvZGUgPSBjdXJsX3NoYXJlX3NldG9wdCggc2hhcmUsIENVUkxTSE9QVF9VTkxPQ0tGVU5DLCBteV91bmxvY2spOworICBpZihDVVJMU0hFX09LID09IHNjb2RlKSB7CisgICAgcHJpbnRmKCJDVVJMU0hPUFRfVU5MT0NLRlVOQ1xuIik7CisgICAgc2NvZGUgPSBjdXJsX3NoYXJlX3NldG9wdChzaGFyZSwgQ1VSTFNIT1BUX1VOTE9DS0ZVTkMsIG15X3VubG9jayk7CiAgIH0KLSAgaWYgKCBDVVJMU0hFX09LID09IHNjb2RlICkgewotICAgIHByaW50ZiggIkNVUkxTSE9QVF9VU0VSREFUQVxuIiApOwotICAgIHNjb2RlID0gY3VybF9zaGFyZV9zZXRvcHQoIHNoYXJlLCBDVVJMU0hPUFRfVVNFUkRBVEEsICZ1c2VyKTsKKyAgaWYoQ1VSTFNIRV9PSyA9PSBzY29kZSkgeworICAgIHByaW50ZigiQ1VSTFNIT1BUX1VTRVJEQVRBXG4iKTsKKyAgICBzY29kZSA9IGN1cmxfc2hhcmVfc2V0b3B0KHNoYXJlLCBDVVJMU0hPUFRfVVNFUkRBVEEsICZ1c2VyKTsKICAgfQotICBpZiAoIENVUkxTSEVfT0sgPT0gc2NvZGUgKSB7Ci0gICAgcHJpbnRmKCAiQ1VSTF9MT0NLX0RBVEFfU1NMX1NFU1NJT05cbiIgKTsKLSAgICBzY29kZSA9IGN1cmxfc2hhcmVfc2V0b3B0KCBzaGFyZSwgQ1VSTFNIT1BUX1NIQVJFLCBDVVJMX0xPQ0tfREFUQV9TU0xfU0VTU0lPTik7CisgIGlmKENVUkxTSEVfT0sgPT0gc2NvZGUpIHsKKyAgICBwcmludGYoIkNVUkxfTE9DS19EQVRBX1NTTF9TRVNTSU9OXG4iKTsKKyAgICBzY29kZSA9IGN1cmxfc2hhcmVfc2V0b3B0KHNoYXJlLCBDVVJMU0hPUFRfU0hBUkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDVVJMX0xPQ0tfREFUQV9TU0xfU0VTU0lPTik7CiAgIH0KIAotICBpZiAoIENVUkxTSEVfT0sgIT0gc2NvZGUgKSB7CisgIGlmKENVUkxTSEVfT0sgIT0gc2NvZGUpIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfc2hhcmVfc2V0b3B0KCkgZmFpbGVkXG4iKTsKICAgICBjdXJsX3NoYXJlX2NsZWFudXAoc2hhcmUpOwogICAgIGN1cmxfZ2xvYmFsX2NsZWFudXAoKTsKQEAgLTE4MiwyMSArMTgzLDIxIEBACiAgIHJlcyA9IDA7CiAKICAgLyogc3RhcnQgdHJlYWRzICovCi0gIGZvciAoaT0xOyBpPD1USFJFQURTOyBpKysgKSB7CisgIGZvcihpPTE7IGk8PVRIUkVBRFM7IGkrKykgewogCiAgICAgLyogc2V0IHRocmVhZCBkYXRhICovCiAgICAgdGRhdGEudXJsICAgPSBVUkw7CiAgICAgdGRhdGEuc2hhcmUgPSBzaGFyZTsKIAogICAgIC8qIHNpbXVsYXRlIHRocmVhZCwgZGlyZWN0IGNhbGwgb2YgInRocmVhZCIgZnVuY3Rpb24gKi8KLSAgICBwcmludGYoICIqKiogcnVuICVkXG4iLGkgKTsKLSAgICBmaXJlKCAmdGRhdGEgKTsKKyAgICBwcmludGYoIioqKiBydW4gJWRcbiIsaSk7CisgICAgZmlyZSgmdGRhdGEpOwogICB9CiAKIAogICAvKiBmZXRjaCBhIGFub3RoZXIgb25lICovCi0gIHByaW50ZiggIioqKiBydW4gJWRcbiIsIGkgKTsKLSAgaWYgKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgeworICBwcmludGYoIioqKiBydW4gJWRcbiIsIGkpOworICBpZigoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZWFzeV9pbml0KCkgZmFpbGVkXG4iKTsKICAgICBjdXJsX3NoYXJlX2NsZWFudXAoc2hhcmUpOwogICAgIGN1cmxfZ2xvYmFsX2NsZWFudXAoKTsKQEAgLTIwNCwzOCArMjA1LDM4IEBACiAgIH0KIAogICB1cmwgPSBVUkw7Ci0gIHRlc3Rfc2V0b3B0KCBjdXJsLCBDVVJMT1BUX1VSTCwgICAgICAgIHVybCApOwotICBwcmludGYoICJDVVJMT1BUX1NIQVJFXG4iICk7Ci0gIHRlc3Rfc2V0b3B0KCBjdXJsLCBDVVJMT1BUX1NIQVJFLCAgICAgIHNoYXJlICk7CisgIHRlc3Rfc2V0b3B0KGN1cmwsIENVUkxPUFRfVVJMLCB1cmwpOworICBwcmludGYoIkNVUkxPUFRfU0hBUkVcbiIpOworICB0ZXN0X3NldG9wdChjdXJsLCBDVVJMT1BUX1NIQVJFLCBzaGFyZSk7CiAKLSAgcHJpbnRmKCAiUEVSRk9STVxuIiApOwotICBjdXJsX2Vhc3lfcGVyZm9ybSggY3VybCApOworICBwcmludGYoIlBFUkZPUk1cbiIpOworICBjdXJsX2Vhc3lfcGVyZm9ybShjdXJsKTsKIAogICAvKiB0cnkgdG8gZnJlZSBzaGFyZSwgZXhwZWN0IHRvIGZhaWwgYmVjYXVzZSBzaGFyZSBpcyBpbiB1c2UqLwotICBwcmludGYoICJ0cnkgU0hBUkVfQ0xFQU5VUC4uLlxuIiApOwotICBzY29kZSA9IGN1cmxfc2hhcmVfY2xlYW51cCggc2hhcmUgKTsKLSAgaWYgKCBzY29kZT09Q1VSTFNIRV9PSyApCi0gIHsKKyAgcHJpbnRmKCJ0cnkgU0hBUkVfQ0xFQU5VUC4uLlxuIik7CisgIHNjb2RlID0gY3VybF9zaGFyZV9jbGVhbnVwKHNoYXJlKTsKKyAgaWYoc2NvZGU9PUNVUkxTSEVfT0spIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfc2hhcmVfY2xlYW51cCBzdWNjZWVkIGJ1dCBlcnJvciBleHBlY3RlZFxuIik7CiAgICAgc2hhcmUgPSBOVUxMOwotICB9IGVsc2UgewotICAgIHByaW50ZiggIlNIQVJFX0NMRUFOVVAgZmFpbGVkLCBjb3JyZWN0XG4iICk7CisgIH0KKyAgZWxzZSB7CisgICAgcHJpbnRmKCJTSEFSRV9DTEVBTlVQIGZhaWxlZCwgY29ycmVjdFxuIik7CiAgIH0KIAogdGVzdF9jbGVhbnVwOgogCiAgIC8qIGNsZWFuIHVwIGxhc3QgaGFuZGxlICovCi0gIHByaW50ZiggIkNMRUFOVVBcbiIgKTsKLSAgY3VybF9lYXN5X2NsZWFudXAoIGN1cmwgKTsKKyAgcHJpbnRmKCJDTEVBTlVQXG4iKTsKKyAgY3VybF9lYXN5X2NsZWFudXAoY3VybCk7CiAKICAgLyogZnJlZSBzaGFyZSAqLwotICBwcmludGYoICJTSEFSRV9DTEVBTlVQXG4iICk7Ci0gIHNjb2RlID0gY3VybF9zaGFyZV9jbGVhbnVwKCBzaGFyZSApOwotICBpZiAoIHNjb2RlIT1DVVJMU0hFX09LICkKKyAgcHJpbnRmKCJTSEFSRV9DTEVBTlVQXG4iKTsKKyAgc2NvZGUgPSBjdXJsX3NoYXJlX2NsZWFudXAoc2hhcmUpOworICBpZihzY29kZSE9Q1VSTFNIRV9PSykKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfc2hhcmVfY2xlYW51cCBmYWlsZWQsIGNvZGUgZXJybm8gJWRcbiIsCiAgICAgICAgICAgICAoaW50KXNjb2RlKTsKIAotICBwcmludGYoICJHTE9CQUxfQ0xFQU5VUFxuIiApOworICBwcmludGYoIkdMT0JBTF9DTEVBTlVQXG4iKTsKICAgY3VybF9nbG9iYWxfY2xlYW51cCgpOwogCiAgIHJldHVybiByZXM7CmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYjU5MC5jIGIvdGVzdHMvbGlidGVzdC9saWI1OTAuYwppbmRleCA2ODYwM2M2Li43Yjg2M2NjIDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYjU5MC5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliNTkwLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDEyLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yMywxNCArMjMsMTQgQEAKIAogLyoKICAgQmFzZWQgb24gYSBidWcgcmVwb3J0IHJlY2lwZSBieSBSZW5lIEJlcm5oYXJkdCBpbgotICBodHRwOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMTEtMTAvMDMyMy5odG1sCisgIGh0dHBzOi8vY3VybC5oYXh4LnNlL21haWwvbGliLTIwMTEtMTAvMDMyMy5odG1sCiAKICAgSXQgaXMgcmVwcm9kdWNpYmxlIGJ5IHRoZSBmb2xsb3dpbmcgc3RlcHM6CiAKICAgLSBVc2UgYSBwcm94eSB0aGF0IG9mZmVycyBOVExNIGFuZCBOZWdvdGlhdGUgKCBDVVJMT1BUX1BST1hZIGFuZAotICBDVVJMT1BUX1BST1hZUE9SVCApCisgIENVUkxPUFRfUFJPWFlQT1JUKQogICAtIFRlbGwgbGliY3VybCBOT1QgdG8gdXNlIE5lZ290aWF0ZSAgQ1VSTF9FQVNZX1NFVE9QVChDVVJMT1BUX1BST1hZQVVUSCwKLSAgQ1VSTEFVVEhfQkFTSUMgfCBDVVJMQVVUSF9ESUdFU1QgfCBDVVJMQVVUSF9OVExNICkKKyAgQ1VSTEFVVEhfQkFTSUMgfCBDVVJMQVVUSF9ESUdFU1QgfCBDVVJMQVVUSF9OVExNKQogICAtIFN0YXJ0IHRoZSByZXF1ZXN0CiAqLwogCkBAIC00MSwxMiArNDEsMTIgQEAKICAgQ1VSTGNvZGUgcmVzOwogICBDVVJMICpjdXJsOwogCi0gIGlmIChjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKKyAgaWYoY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpICE9IENVUkxFX09LKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2dsb2JhbF9pbml0KCkgZmFpbGVkXG4iKTsKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwogICB9CiAKLSAgaWYgKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgeworICBpZigoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZWFzeV9pbml0KCkgZmFpbGVkXG4iKTsKICAgICBjdXJsX2dsb2JhbF9jbGVhbnVwKCk7CiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliNTkxLmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjU5MS5jCmluZGV4IDVjZDQ2NDQuLjdkNTBmODkgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliNTkxLmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWI1OTEuYwpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYjU5Ny5jIGIvdGVzdHMvbGlidGVzdC9saWI1OTcuYwppbmRleCBhMjdjZWZkLi44MTNhZjc1IDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYjU5Ny5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliNTk3LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDEyLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC02OSw3ICs2OSw3IEBACiAKICAgbXVsdGlfaW5pdChtdWx0aSk7CiAKLSAgZm9yIChwaGFzZSA9IENPTk5FQ1RfT05MWV9QSEFTRTsgcGhhc2UgPCBMQVNUX1BIQVNFOyArK3BoYXNlKSB7CisgIGZvcihwaGFzZSA9IENPTk5FQ1RfT05MWV9QSEFTRTsgcGhhc2UgPCBMQVNUX1BIQVNFOyArK3BoYXNlKSB7CiAgICAgLyogZ28gdmVyYm9zZSAqLwogICAgIGVhc3lfc2V0b3B0KGVhc3ksIENVUkxPUFRfVkVSQk9TRSwgMUwpOwogCkBAIC03NywxMSArNzcsMTEgQEAKICAgICBlYXN5X3NldG9wdChlYXN5LCBDVVJMT1BUX1VSTCwgVVJMKTsKIAogICAgIC8qIGVuYWJsZSAnQ09OTkVDVF9PTkxZJyBvcHRpb24gd2hlbiBpbiBjb25uZWN0IHBoYXNlICovCi0gICAgaWYgKHBoYXNlID09IENPTk5FQ1RfT05MWV9QSEFTRSkKKyAgICBpZihwaGFzZSA9PSBDT05ORUNUX09OTFlfUEhBU0UpCiAgICAgICBlYXN5X3NldG9wdChlYXN5LCBDVVJMT1BUX0NPTk5FQ1RfT05MWSwgMUwpOwogCiAgICAgLyogZW5hYmxlICdOT0JPRFknIG9wdGlvbiB0byBzZW5kICdRVUlUJyBjb21tYW5kIGluIHF1aXQgcGhhc2UgKi8KLSAgICBpZiAocGhhc2UgPT0gUVVJVF9QSEFTRSkgeworICAgIGlmKHBoYXNlID09IFFVSVRfUEhBU0UpIHsKICAgICAgIGVhc3lfc2V0b3B0KGVhc3ksIENVUkxPUFRfQ09OTkVDVF9PTkxZLCAwTCk7CiAgICAgICBlYXN5X3NldG9wdChlYXN5LCBDVVJMT1BUX05PQk9EWSwgMUwpOwogICAgICAgZWFzeV9zZXRvcHQoZWFzeSwgQ1VSTE9QVF9GT1JCSURfUkVVU0UsIDFMKTsKQEAgLTExNCw3ICsxMTQsOCBAQAogCiAgICAgICBtdWx0aV90aW1lb3V0KG11bHRpLCAmdGltZW91dCk7CiAKLSAgICAgIC8qIEF0IHRoaXMgcG9pbnQsIHRpbWVvdXQgaXMgZ3VhcmFudGVlZCB0byBiZSBncmVhdGVyIG9yIGVxdWFsIHRoYW4gLTEuICovCisgICAgICAvKiBBdCB0aGlzIHBvaW50LCB0aW1lb3V0IGlzIGd1YXJhbnRlZWQgdG8gYmUgZ3JlYXRlciBvciBlcXVhbCB0aGFuCisgICAgICAgICAtMS4gKi8KIAogICAgICAgaWYodGltZW91dCAhPSAtMUwpIHsKICAgICAgICAgaW50IGl0aW1lb3V0ID0gKHRpbWVvdXQgPiAobG9uZylJTlRfTUFYKSA/IElOVF9NQVggOiAoaW50KXRpbWVvdXQ7CmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYjU5OC5jIGIvdGVzdHMvbGlidGVzdC9saWI1OTguYwppbmRleCBlOWMxYWQ3Li5iMTA3ZjI5IDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYjU5OC5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliNTk4LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDEyLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yOCwxMiArMjgsMTIgQEAKICAgQ1VSTGNvZGUgcmVzOwogICBDVVJMICpjdXJsOwogCi0gIGlmIChjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKKyAgaWYoY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpICE9IENVUkxFX09LKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2dsb2JhbF9pbml0KCkgZmFpbGVkXG4iKTsKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwogICB9CiAKLSAgaWYgKChjdXJsID0gY3VybF9lYXN5X2luaXQoKSkgPT0gTlVMTCkgeworICBpZigoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgImN1cmxfZWFzeV9pbml0KCkgZmFpbGVkXG4iKTsKICAgICBjdXJsX2dsb2JhbF9jbGVhbnVwKCk7CiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvbGliNTk5LmMgYi90ZXN0cy9saWJ0ZXN0L2xpYjU5OS5jCmluZGV4IDA4YzUzNmMuLjFkZWUwYjkgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvbGliNTk5LmMKKysrIGIvdGVzdHMvbGlidGVzdC9saWI1OTkuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTIsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTQ1LDEyICs0NSwxMiBAQAogICBDVVJMY29kZSByZXM9Q1VSTEVfT0s7CiAgIGRvdWJsZSBjb250ZW50X2xlbmd0aCA9IDAuMDsKIAotICBpZiAoY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpICE9IENVUkxFX09LKSB7CisgIGlmKGN1cmxfZ2xvYmFsX2luaXQoQ1VSTF9HTE9CQUxfQUxMKSAhPSBDVVJMRV9PSykgewogICAgIGZwcmludGYoc3RkZXJyLCAiY3VybF9nbG9iYWxfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKICAgfQogCi0gIGlmICgoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKKyAgaWYoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2Vhc3lfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgY3VybF9nbG9iYWxfY2xlYW51cCgpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CkBAIC03NSwxMiArNzUsMTIgQEAKICAgLyogUGVyZm9ybSB0aGUgcmVxdWVzdCwgcmVzIHdpbGwgZ2V0IHRoZSByZXR1cm4gY29kZSAqLwogICByZXMgPSBjdXJsX2Vhc3lfcGVyZm9ybShjdXJsKTsKIAotICBpZiAoIXJlcykgeworICBpZighcmVzKSB7CiAgICAgRklMRSAqbW9vOwogICAgIHJlcyA9IGN1cmxfZWFzeV9nZXRpbmZvKGN1cmwsIENVUkxJTkZPX0NPTlRFTlRfTEVOR1RIX0RPV05MT0FELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb250ZW50X2xlbmd0aCk7CiAgICAgbW9vID0gZm9wZW4obGlidGVzdF9hcmcyLCAid2IiKTsKLSAgICBpZiAobW9vKSB7CisgICAgaWYobW9vKSB7CiAgICAgICBmcHJpbnRmKG1vbywgIkNMOiAlLjBmXG4iLCBjb250ZW50X2xlbmd0aCk7CiAgICAgICBmY2xvc2UobW9vKTsKICAgICB9CmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYmF1dGhyZXRyeS5jIGIvdGVzdHMvbGlidGVzdC9saWJhdXRocmV0cnkuYwppbmRleCAxMDNhODljLi45OTRmOWRlIDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L2xpYmF1dGhyZXRyeS5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGliYXV0aHJldHJ5LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDEyLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zMiwxMyArMzIsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBhdXRoX3NjaGVtZSwgY29uc3QgY2hhciAqdXNlcnB3ZCkKIHsKICAgQ1VSTGNvZGUgcmVzOwotICBjaGFyKiBmdWxsX3VybCA9IG1hbGxvYyhzdHJsZW4odXJsKSArIDQgKyAxKTsKLSAgaWYgKCFmdWxsX3VybCkgeworICBzaXplX3QgbGVuID0gc3RybGVuKHVybCkgKyA0ICsgMTsKKyAgY2hhciogZnVsbF91cmwgPSBtYWxsb2MobGVuKTsKKyAgaWYoIWZ1bGxfdXJsKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJOb3QgZW5vdWdoIG1lbW9yeSBmb3IgZnVsbCB1cmxcbiIpOwogICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwogICB9CiAKLSAgc3ByaW50ZihmdWxsX3VybCwgIiVzJTA0ZCIsIHVybCwgc2VxKTsKKyAgc25wcmludGYoZnVsbF91cmwsIGxlbiwgIiVzJTA0ZCIsIHVybCwgc2VxKTsKICAgZnByaW50ZihzdGRlcnIsICJTZW5kaW5nIG5ldyByZXF1ZXN0ICVkIHRvICVzIHdpdGggY3JlZGVudGlhbCAlcyAiCiAgICAgICAgICAgIihhdXRoICVsZClcbiIsIHNlcSwgZnVsbF91cmwsIHVzZXJwd2QsIGF1dGhfc2NoZW1lKTsKICAgdGVzdF9zZXRvcHQoY3VybCwgQ1VSTE9QVF9VUkwsIGZ1bGxfdXJsKTsKQEAgLTY5LDEzICs3MCwxMyBAQAogCiBzdGF0aWMgbG9uZyBwYXJzZV9hdXRoX25hbWUoY29uc3QgY2hhciAqYXJnKQogewotICBpZiAoIWFyZykKKyAgaWYoIWFyZykKICAgICByZXR1cm4gQ1VSTEFVVEhfTk9ORTsKLSAgaWYgKHN0cmVxdWFsKGFyZywgImJhc2ljIikpCisgIGlmKHN0cmVxdWFsKGFyZywgImJhc2ljIikpCiAgICAgcmV0dXJuIENVUkxBVVRIX0JBU0lDOwotICBpZiAoc3RyZXF1YWwoYXJnLCAiZGlnZXN0IikpCisgIGlmKHN0cmVxdWFsKGFyZywgImRpZ2VzdCIpKQogICAgIHJldHVybiBDVVJMQVVUSF9ESUdFU1Q7Ci0gIGlmIChzdHJlcXVhbChhcmcsICJudGxtIikpCisgIGlmKHN0cmVxdWFsKGFyZywgIm50bG0iKSkKICAgICByZXR1cm4gQ1VSTEFVVEhfTlRMTTsKICAgcmV0dXJuIENVUkxBVVRIX05PTkU7CiB9CkBAIC04OCw1OCArODksNTggQEAKICAgbG9uZyBtYWluX2F1dGhfc2NoZW1lID0gcGFyc2VfYXV0aF9uYW1lKGxpYnRlc3RfYXJnMik7CiAgIGxvbmcgZmFsbGJhY2tfYXV0aF9zY2hlbWUgPSBwYXJzZV9hdXRoX25hbWUobGlidGVzdF9hcmczKTsKIAotICBpZiAobWFpbl9hdXRoX3NjaGVtZSA9PSBDVVJMQVVUSF9OT05FIHx8CisgIGlmKG1haW5fYXV0aF9zY2hlbWUgPT0gQ1VSTEFVVEhfTk9ORSB8fAogICAgICAgZmFsbGJhY2tfYXV0aF9zY2hlbWUgPT0gQ1VSTEFVVEhfTk9ORSkgewogICAgIGZwcmludGYoc3RkZXJyLCAiYXV0aCBzY2hlbWVzIG5vdCBmb3VuZCBvbiBjb21tYW5kbGluZVxuIik7CiAgICAgcmV0dXJuIFRFU1RfRVJSX01BSk9SX0JBRDsKICAgfQogCi0gIGlmIChjdXJsX2dsb2JhbF9pbml0KENVUkxfR0xPQkFMX0FMTCkgIT0gQ1VSTEVfT0spIHsKKyAgaWYoY3VybF9nbG9iYWxfaW5pdChDVVJMX0dMT0JBTF9BTEwpICE9IENVUkxFX09LKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2dsb2JhbF9pbml0KCkgZmFpbGVkXG4iKTsKICAgICByZXR1cm4gVEVTVF9FUlJfTUFKT1JfQkFEOwogICB9CiAKICAgLyogU2VuZCB3cm9uZyBwYXNzd29yZCwgdGhlbiByaWdodCBwYXNzd29yZCAqLwogCi0gIGlmICgoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKKyAgaWYoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2Vhc3lfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgY3VybF9nbG9iYWxfY2xlYW51cCgpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CiAgIH0KIAogICByZXMgPSBzZW5kX3dyb25nX3Bhc3N3b3JkKGN1cmwsIHVybCwgMTAwLCBtYWluX2F1dGhfc2NoZW1lKTsKLSAgaWYgKHJlcyAhPSBDVVJMRV9PSykKLSAgICAgIGdvdG8gdGVzdF9jbGVhbnVwOworICBpZihyZXMgIT0gQ1VSTEVfT0spCisgICAgZ290byB0ZXN0X2NsZWFudXA7CiAgIGN1cmxfZWFzeV9yZXNldChjdXJsKTsKIAogICByZXMgPSBzZW5kX3JpZ2h0X3Bhc3N3b3JkKGN1cmwsIHVybCwgMjAwLCBmYWxsYmFja19hdXRoX3NjaGVtZSk7Ci0gIGlmIChyZXMgIT0gQ1VSTEVfT0spCi0gICAgICBnb3RvIHRlc3RfY2xlYW51cDsKKyAgaWYocmVzICE9IENVUkxFX09LKQorICAgIGdvdG8gdGVzdF9jbGVhbnVwOwogICBjdXJsX2Vhc3lfcmVzZXQoY3VybCk7CiAKICAgY3VybF9lYXN5X2NsZWFudXAoY3VybCk7CiAKICAgLyogU2VuZCB3cm9uZyBwYXNzd29yZCB0d2ljZSwgdGhlbiByaWdodCBwYXNzd29yZCAqLwogCi0gIGlmICgoY3VybCA9IGN1cmxfZWFzeV9pbml0KCkpID09IE5VTEwpIHsKKyAgaWYoKGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpKSA9PSBOVUxMKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJjdXJsX2Vhc3lfaW5pdCgpIGZhaWxlZFxuIik7CiAgICAgY3VybF9nbG9iYWxfY2xlYW51cCgpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CiAgIH0KIAogICByZXMgPSBzZW5kX3dyb25nX3Bhc3N3b3JkKGN1cmwsIHVybCwgMzAwLCBtYWluX2F1dGhfc2NoZW1lKTsKLSAgaWYgKHJlcyAhPSBDVVJMRV9PSykKLSAgICAgIGdvdG8gdGVzdF9jbGVhbnVwOworICBpZihyZXMgIT0gQ1VSTEVfT0spCisgICAgZ290byB0ZXN0X2NsZWFudXA7CiAgIGN1cmxfZWFzeV9yZXNldChjdXJsKTsKIAogICByZXMgPSBzZW5kX3dyb25nX3Bhc3N3b3JkKGN1cmwsIHVybCwgNDAwLCBmYWxsYmFja19hdXRoX3NjaGVtZSk7Ci0gIGlmIChyZXMgIT0gQ1VSTEVfT0spCi0gICAgICBnb3RvIHRlc3RfY2xlYW51cDsKKyAgaWYocmVzICE9IENVUkxFX09LKQorICAgIGdvdG8gdGVzdF9jbGVhbnVwOwogICBjdXJsX2Vhc3lfcmVzZXQoY3VybCk7CiAKICAgcmVzID0gc2VuZF9yaWdodF9wYXNzd29yZChjdXJsLCB1cmwsIDUwMCwgZmFsbGJhY2tfYXV0aF9zY2hlbWUpOwotICBpZiAocmVzICE9IENVUkxFX09LKQotICAgICAgZ290byB0ZXN0X2NsZWFudXA7CisgIGlmKHJlcyAhPSBDVVJMRV9PSykKKyAgICBnb3RvIHRlc3RfY2xlYW51cDsKICAgY3VybF9lYXN5X3Jlc2V0KGN1cmwpOwogCiB0ZXN0X2NsZWFudXA6CmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L2xpYm50bG1jb25uZWN0LmMgYi90ZXN0cy9saWJ0ZXN0L2xpYm50bG1jb25uZWN0LmMKaW5kZXggNTA5YjY3MS4uNzM2MjIyZCAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9saWJudGxtY29ubmVjdC5jCisrKyBiL3Rlc3RzL2xpYnRlc3QvbGlibnRsbWNvbm5lY3QuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMjAxMiAtIDIwMTMsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTQ3LDcgKzQ3LDcgQEAKICAgY29uc3Qgc2l6ZV90IGZhaWx1cmUgPSAoc2l6ZSAqIG5tZW1iKSA/IDAgOiAxOwogCiAgIGNoYXIgKm91dHB1dCA9IG1hbGxvYyhzaXplICogbm1lbWIgKyAxKTsKLSAgaWYgKCFvdXRwdXQpIHsKKyAgaWYoIW91dHB1dCkgewogICAgIGZwcmludGYoc3RkZXJyLCAib3V0cHV0LCBtYWxsb2MoKSBmYWlsZWRcbiIpOwogICAgIHJlcyA9IFRFU1RfRVJSX01BSk9SX0JBRDsKICAgICByZXR1cm4gZmFpbHVyZTsKQEAgLTYwLDI1ICs2MCwyNSBAQAogCiAgIC8qIEdldCBzb2NrZXQgYmVpbmcgdXNlZCBmb3IgdGhpcyBlYXN5IGhhbmRsZSwgb3RoZXJ3aXNlIENVUkxfU09DS0VUX0JBRCAqLwogICBjb2RlID0gY3VybF9lYXN5X2dldGluZm8oZWFzeVtpZHhdLCBDVVJMSU5GT19MQVNUU09DS0VULCAmbG9uZ2RhdGEpOwotICBpZiAoQ1VSTEVfT0sgIT0gY29kZSkgeworICBpZihDVVJMRV9PSyAhPSBjb2RlKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICIlczolZCBjdXJsX2Vhc3lfZ2V0aW5mbygpIGZhaWxlZCwgIgogICAgICAgICAgICAgIndpdGggY29kZSAlZCAoJXMpXG4iLAogICAgICAgICAgICAgX19GSUxFX18sIF9fTElORV9fLCAoaW50KWNvZGUsIGN1cmxfZWFzeV9zdHJlcnJvcihjb2RlKSk7CiAgICAgcmVzID0gVEVTVF9FUlJfTUFKT1JfQkFEOwogICAgIHJldHVybiBmYWlsdXJlOwogICB9Ci0gIGlmIChsb25nZGF0YSA9PSAtMUwpCisgIGlmKGxvbmdkYXRhID09IC0xTCkKICAgICBzb2NrID0gQ1VSTF9TT0NLRVRfQkFEOwogICBlbHNlCiAgICAgc29jayA9IChjdXJsX3NvY2tldF90KWxvbmdkYXRhOwogCi0gIGlmIChzb2NrICE9IENVUkxfU09DS0VUX0JBRCkgeworICBpZihzb2NrICE9IENVUkxfU09DS0VUX0JBRCkgewogICAgIC8qIFRyYWNrIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoaXMgZWFzeSBoYW5kbGUgYW5kIHRoZSBzb2NrZXQuICovCi0gICAgaWYgKHNvY2tldHNbaWR4XSA9PSBDVVJMX1NPQ0tFVF9CQUQpIHsKKyAgICBpZihzb2NrZXRzW2lkeF0gPT0gQ1VSTF9TT0NLRVRfQkFEKSB7CiAgICAgICAvKiBBbiBlYXN5IGhhbmRsZSB3aXRob3V0IHByZXZpb3VzIHNvY2tldCwgcmVjb3JkIHRoZSBzb2NrZXQuICovCiAgICAgICBzb2NrZXRzW2lkeF0gPSBzb2NrOwogICAgIH0KLSAgICBlbHNlIGlmIChzb2NrICE9IHNvY2tldHNbaWR4XSkgeworICAgIGVsc2UgaWYoc29jayAhPSBzb2NrZXRzW2lkeF0pIHsKICAgICAgIC8qIEFuIGVhc3kgaGFuZGxlIHdpdGggYSBzb2NrZXQgZGlmZmVyZW50IHRvIHByZXZpb3VzbHkKICAgICAgICAgIHRyYWNrZWQgb25lLCBsb2cgYW5kIGZhaWwgcmlnaHQgYXdheS4gS25vd24gYnVnICMzNy4gKi8KICAgICAgIGZwcmludGYoc3RkZXJyLCAiSGFuZGxlICVkIHN0YXJ0ZWQgb24gc29ja2V0ICVkIGFuZCBtb3ZlZCB0byAlZFxuIiwKQEAgLTEwMywxNiArMTAzLDE3IEBACiAgIGludCBpLCBqOwogICBpbnQgbnVtX2hhbmRsZXMgPSAwOwogICBlbnVtIEhhbmRsZVN0YXRlIHN0YXRlID0gUmVhZHlGb3JOZXdIYW5kbGU7Ci0gIGNoYXIqIGZ1bGxfdXJsID0gbWFsbG9jKHN0cmxlbih1cmwpICsgNCArIDEpOworICBzaXplX3QgdXJsbGVuID0gc3RybGVuKHVybCkgKyA0ICsgMTsKKyAgY2hhciogZnVsbF91cmwgPSBtYWxsb2ModXJsbGVuKTsKIAogICBzdGFydF90ZXN0X3RpbWluZygpOwogCi0gIGlmICghZnVsbF91cmwpIHsKKyAgaWYoIWZ1bGxfdXJsKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJOb3QgZW5vdWdoIG1lbW9yeSBmb3IgZnVsbCB1cmxcbiIpOwogICAgIHJldHVybiBURVNUX0VSUl9NQUpPUl9CQUQ7CiAgIH0KIAotICBmb3IgKGkgPSAwOyBpIDwgTUFYX0VBU1lfSEFORExFUzsgKytpKSB7CisgIGZvcihpID0gMDsgaSA8IE1BWF9FQVNZX0hBTkRMRVM7ICsraSkgewogICAgIGVhc3lbaV0gPSBOVUxMOwogICAgIHNvY2tldHNbaV0gPSBDVVJMX1NPQ0tFVF9CQUQ7CiAgIH0KQEAgLTE0MSwxNCArMTQyLDE1IEBACiAgICAgYm9vbCBmb3VuZF9uZXdfc29ja2V0ID0gRkFMU0U7CiAKICAgICAvKiBTdGFydCBhIG5ldyBoYW5kbGUgaWYgd2UgYXJlbid0IGF0IHRoZSBtYXggKi8KLSAgICBpZiAoc3RhdGUgPT0gUmVhZHlGb3JOZXdIYW5kbGUpIHsKKyAgICBpZihzdGF0ZSA9PSBSZWFkeUZvck5ld0hhbmRsZSkgewogICAgICAgZWFzeV9pbml0KGVhc3lbbnVtX2hhbmRsZXNdKTsKIAotICAgICAgaWYgKG51bV9oYW5kbGVzICUgMyA9PSAyKSB7Ci0gICAgICAgIHNwcmludGYoZnVsbF91cmwsICIlczAyMDAiLCB1cmwpOworICAgICAgaWYobnVtX2hhbmRsZXMgJSAzID09IDIpIHsKKyAgICAgICAgc25wcmludGYoZnVsbF91cmwsIHVybGxlbiwgIiVzMDIwMCIsIHVybCk7CiAgICAgICAgIGVhc3lfc2V0b3B0KGVhc3lbbnVtX2hhbmRsZXNdLCBDVVJMT1BUX0hUVFBBVVRILCBDVVJMQVVUSF9OVExNKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIHNwcmludGYoZnVsbF91cmwsICIlczAxMDAiLCB1cmwpOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHNucHJpbnRmKGZ1bGxfdXJsLCB1cmxsZW4sICIlczAxMDAiLCB1cmwpOwogICAgICAgICBlYXN5X3NldG9wdChlYXN5W251bV9oYW5kbGVzXSwgQ1VSTE9QVF9IVFRQQVVUSCwgQ1VSTEFVVEhfQkFTSUMpOwogICAgICAgfQogICAgICAgZWFzeV9zZXRvcHQoZWFzeVtudW1faGFuZGxlc10sIENVUkxPUFRfRlJFU0hfQ09OTkVDVCwgMUwpOwpAQCAtMTgxLDM0ICsxODMsMzQgQEAKICAgICAvKiBBdCB0aGlzIHBvaW50LCBtYXhmZCBpcyBndWFyYW50ZWVkIHRvIGJlIGdyZWF0ZXIgb3IgZXF1YWwgdGhhbiAtMS4gKi8KIAogICAgIC8qIEFueSBzb2NrZXQgd2hpY2ggaXMgbmV3IGluIGZkcmVhZCBpcyBhc3NvY2lhdGVkIHdpdGggdGhlIG5ldyBoYW5kbGUgKi8KLSAgICBmb3IgKGkgPSAwOyBpIDw9IG1heGZkOyArK2kpIHsKKyAgICBmb3IoaSA9IDA7IGkgPD0gbWF4ZmQ7ICsraSkgewogICAgICAgYm9vbCBzb2NrZXRfZXhpc3RzID0gRkFMU0U7CiAgICAgICBjdXJsX3NvY2tldF90IGN1cmZkID0gKGN1cmxfc29ja2V0X3QpaTsKIAotICAgICAgaWYgKCFGRF9JU1NFVChjdXJmZCwgJmZkcmVhZCkpIHsKKyAgICAgIGlmKCFGRF9JU1NFVChjdXJmZCwgJmZkcmVhZCkpIHsKICAgICAgICAgY29udGludWU7CiAgICAgICB9CiAKICAgICAgIC8qIENoZWNrIGlmIHRoaXMgc29ja2V0IHdhcyBhbHJlYWR5IGRldGVjdGVkIGZvciBhbiBlYXJsaWVyIGhhbmRsZSAob3IKICAgICAgICAgIGZvciB0aGlzIGhhbmRsZSwgbnVtX2hhbmRsZXMtMSwgaW4gdGhlIGNhbGxiYWNrICovCi0gICAgICBmb3IgKGogPSAwOyBqIDwgbnVtX2hhbmRsZXM7ICsraikgewotICAgICAgICBpZiAoc29ja2V0c1tqXSA9PSBjdXJmZCkgeworICAgICAgZm9yKGogPSAwOyBqIDwgbnVtX2hhbmRsZXM7ICsraikgeworICAgICAgICBpZihzb2NrZXRzW2pdID09IGN1cmZkKSB7CiAgICAgICAgICAgc29ja2V0X2V4aXN0cyA9IFRSVUU7CiAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgIH0KLSAgICAgIGlmIChzb2NrZXRfZXhpc3RzKSB7CisgICAgICBpZihzb2NrZXRfZXhpc3RzKSB7CiAgICAgICAgIGNvbnRpbnVlOwogICAgICAgfQogCi0gICAgICBpZiAoZm91bmRfbmV3X3NvY2tldCB8fCBzdGF0ZSAhPSBOZWVkU29ja2V0Rm9yTmV3SGFuZGxlKSB7CisgICAgICBpZihmb3VuZF9uZXdfc29ja2V0IHx8IHN0YXRlICE9IE5lZWRTb2NrZXRGb3JOZXdIYW5kbGUpIHsKICAgICAgICAgZnByaW50ZihzdGRlcnIsICJVbmV4cGVjdGVkIG5ldyBzb2NrZXRcbiIpOwogICAgICAgICByZXMgPSBURVNUX0VSUl9NQUpPUl9CQUQ7CiAgICAgICAgIGdvdG8gdGVzdF9jbGVhbnVwOwogICAgICAgfQogCiAgICAgICAvKiBOb3cgd2Uga25vdyB0aGUgc29ja2V0IGlzIGZvciB0aGUgbW9zdCByZWNlbnQgaGFuZGxlLCBudW1faGFuZGxlcy0xICovCi0gICAgICBpZiAoc29ja2V0c1tudW1faGFuZGxlcy0xXSAhPSBDVVJMX1NPQ0tFVF9CQUQpIHsKKyAgICAgIGlmKHNvY2tldHNbbnVtX2hhbmRsZXMtMV0gIT0gQ1VSTF9TT0NLRVRfQkFEKSB7CiAgICAgICAgIC8qIEEgc29ja2V0IGZvciB0aGlzIGhhbmRsZSB3YXMgYWxyZWFkeSBkZXRlY3RlZCBpbiB0aGUgY2FsbGJhY2s7IGlmIGl0CiAgICAgICAgICAgIG1hdGNoZWQgc29ja2V0X2V4aXN0cyBzaG91bGQgYmUgdHJ1ZSBhbmQgd2Ugd291bGQgbmV2ZXIgZ2V0IGhlcmUgKi8KICAgICAgICAgYXNzZXJ0KGN1cmZkICE9IHNvY2tldHNbbnVtX2hhbmRsZXMtMV0pOwpAQCAtMjI0LDcgKzIyNiw3IEBACiAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKHN0YXRlID09IE5lZWRTb2NrZXRGb3JOZXdIYW5kbGUpIHsKKyAgICBpZihzdGF0ZSA9PSBOZWVkU29ja2V0Rm9yTmV3SGFuZGxlKSB7CiAgICAgICBpZihtYXhmZCAhPSAtMSAmJiAhZm91bmRfbmV3X3NvY2tldCkgewogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIldhcm5pbmc6IHNvY2tldCBkaWQgbm90IG9wZW4gaW1tZWRpYXRlbHkgZm9yIG5ldyAiCiAgICAgICAgICAgICAgICAgImhhbmRsZSAodHJ5aW5nIGFnYWluKVxuIik7CmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L3NldGhvc3RuYW1lLmMgYi90ZXN0cy9saWJ0ZXN0L3NldGhvc3RuYW1lLmMKaW5kZXggOWRhNmE2Ny4uMjEwYTYwMCAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9zZXRob3N0bmFtZS5jCisrKyBiL3Rlc3RzL2xpYnRlc3Qvc2V0aG9zdG5hbWUuYwpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L3NldGhvc3RuYW1lLmggYi90ZXN0cy9saWJ0ZXN0L3NldGhvc3RuYW1lLmgKaW5kZXggMDMyZWFhMC4uMWExYzA3NyAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC9zZXRob3N0bmFtZS5oCisrKyBiL3Rlc3RzL2xpYnRlc3Qvc2V0aG9zdG5hbWUuaApAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L3Rlc3QuaCBiL3Rlc3RzL2xpYnRlc3QvdGVzdC5oCmluZGV4IDQ2OGVkYTkuLjk2NDc2NTggMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvdGVzdC5oCisrKyBiL3Rlc3RzL2xpYnRlc3QvdGVzdC5oCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNDAsMTUgKzQwLDEzIEBACiAjICBpbmNsdWRlICJzZWxlY3QuaCIKICNlbmRpZgogCi0jZGVmaW5lIF9NUFJJTlRGX1JFUExBQ0UKLSNpbmNsdWRlIDxjdXJsL21wcmludGYuaD4KLQorI2luY2x1ZGUgImN1cmxfcHJpbnRmLmgiCiAKICNkZWZpbmUgdGVzdF9zZXRvcHQoQSxCLEMpIFwKLSAgaWYoKHJlcyA9IGN1cmxfZWFzeV9zZXRvcHQoKEEpLChCKSwoQykpKSAhPSBDVVJMRV9PSykgZ290byB0ZXN0X2NsZWFudXAKKyAgaWYoKHJlcyA9IGN1cmxfZWFzeV9zZXRvcHQoKEEpLCAoQiksIChDKSkpICE9IENVUkxFX09LKSBnb3RvIHRlc3RfY2xlYW51cAogCiAjZGVmaW5lIHRlc3RfbXVsdGlfc2V0b3B0KEEsQixDKSBcCi0gIGlmKChyZXMgPSBjdXJsX211bHRpX3NldG9wdCgoQSksKEIpLChDKSkpICE9IENVUkxFX09LKSBnb3RvIHRlc3RfY2xlYW51cAorICBpZigocmVzID0gY3VybF9tdWx0aV9zZXRvcHQoKEEpLCAoQiksIChDKSkpICE9IENVUkxFX09LKSBnb3RvIHRlc3RfY2xlYW51cAogCiBleHRlcm4gY2hhciAqbGlidGVzdF9hcmcyOyAvKiBzZXQgYnkgZmlyc3QuYyB0byB0aGUgYXJndlsyXSBvciBOVUxMICovCiBleHRlcm4gY2hhciAqbGlidGVzdF9hcmczOyAvKiBzZXQgYnkgZmlyc3QuYyB0byB0aGUgYXJndlszXSBvciBOVUxMICovCkBAIC0xMzQsMTYgKzEzMiwxNiBAQAogfSBXSElMRV9GQUxTRQogCiAjZGVmaW5lIHJlc19lYXN5X2luaXQoQSkgXAotICBleGVfZWFzeV9pbml0KChBKSwoX19GSUxFX18pLChfX0xJTkVfXykpCisgIGV4ZV9lYXN5X2luaXQoKEEpLCAoX19GSUxFX18pLCAoX19MSU5FX18pKQogCiAjZGVmaW5lIGNoa19lYXN5X2luaXQoQSxZLFopIGRvIHsgXAotICBleGVfZWFzeV9pbml0KChBKSwoWSksKFopKTsgICAgIFwKKyAgZXhlX2Vhc3lfaW5pdCgoQSksIChZKSwgKFopKTsgICBcCiAgIGlmKHJlcykgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIGdvdG8gdGVzdF9jbGVhbnVwOyAgICAgICAgICAgIFwKIH0gV0hJTEVfRkFMU0UKIAogI2RlZmluZSBlYXN5X2luaXQoQSkgXAotICBjaGtfZWFzeV9pbml0KChBKSwoX19GSUxFX18pLChfX0xJTkVfXykpCisgIGNoa19lYXN5X2luaXQoKEEpLCAoX19GSUxFX18pLCAoX19MSU5FX18pKQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKQEAgLTE1NSw3MCArMTUzLDcwIEBACiB9IFdISUxFX0ZBTFNFCiAKICNkZWZpbmUgcmVzX211bHRpX2luaXQoQSkgXAotICBleGVfbXVsdGlfaW5pdCgoQSksKF9fRklMRV9fKSwoX19MSU5FX18pKQorICBleGVfbXVsdGlfaW5pdCgoQSksIChfX0ZJTEVfXyksIChfX0xJTkVfXykpCiAKICNkZWZpbmUgY2hrX211bHRpX2luaXQoQSxZLFopIGRvIHsgXAotICBleGVfbXVsdGlfaW5pdCgoQSksKFkpLChaKSk7ICAgICBcCisgIGV4ZV9tdWx0aV9pbml0KChBKSwgKFkpLCAoWikpOyAgIFwKICAgaWYocmVzKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIGdvdG8gdGVzdF9jbGVhbnVwOyAgICAgICAgICAgICBcCiB9IFdISUxFX0ZBTFNFCiAKICNkZWZpbmUgbXVsdGlfaW5pdChBKSBcCi0gIGNoa19tdWx0aV9pbml0KChBKSwoX19GSUxFX18pLChfX0xJTkVfXykpCisgIGNoa19tdWx0aV9pbml0KChBKSwgKF9fRklMRV9fKSwgKF9fTElORV9fKSkKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCi0jZGVmaW5lIGV4ZV9lYXN5X3NldG9wdChBLEIsQyxZLFopIGRvIHsgICAgICAgICAgICAgICAgICBcCi0gIENVUkxjb2RlIGVjOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIGlmKChlYyA9IGN1cmxfZWFzeV9zZXRvcHQoKEEpLChCKSwoQykpKSAhPSBDVVJMRV9PSykgeyBcCi0gICAgZnByaW50ZihzdGRlcnIsICIlczolZCBjdXJsX2Vhc3lfc2V0b3B0KCkgZmFpbGVkLCAiICBcCi0gICAgICAgICAgICAid2l0aCBjb2RlICVkICglcylcbiIsICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAoWSksIChaKSwgKGludCllYywgY3VybF9lYXN5X3N0cmVycm9yKGVjKSk7ICBcCi0gICAgcmVzID0gKGludCllYzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisjZGVmaW5lIGV4ZV9lYXN5X3NldG9wdChBLEIsQyxZLFopIGRvIHsgICAgICAgICAgICAgICAgICAgIFwKKyAgQ1VSTGNvZGUgZWM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBpZigoZWMgPSBjdXJsX2Vhc3lfc2V0b3B0KChBKSwgKEIpLCAoQykpKSAhPSBDVVJMRV9PSykgeyBcCisgICAgZnByaW50ZihzdGRlcnIsICIlczolZCBjdXJsX2Vhc3lfc2V0b3B0KCkgZmFpbGVkLCAiICAgIFwKKyAgICAgICAgICAgICJ3aXRoIGNvZGUgJWQgKCVzKVxuIiwgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgKFkpLCAoWiksIChpbnQpZWMsIGN1cmxfZWFzeV9zdHJlcnJvcihlYykpOyAgICBcCisgICAgcmVzID0gKGludCllYzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogfSBXSElMRV9GQUxTRQogCi0jZGVmaW5lIHJlc19lYXN5X3NldG9wdChBLEIsQykgXAotICBleGVfZWFzeV9zZXRvcHQoKEEpLChCKSwoQyksKF9fRklMRV9fKSwoX19MSU5FX18pKQorI2RlZmluZSByZXNfZWFzeV9zZXRvcHQoQSwgQiwgQykgXAorICBleGVfZWFzeV9zZXRvcHQoKEEpLCAoQiksIChDKSwgKF9fRklMRV9fKSwgKF9fTElORV9fKSkKIAotI2RlZmluZSBjaGtfZWFzeV9zZXRvcHQoQSxCLEMsWSxaKSBkbyB7IFwKLSAgZXhlX2Vhc3lfc2V0b3B0KChBKSwoQiksKEMpLChZKSwoWikpOyBcCi0gIGlmKHJlcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGdvdG8gdGVzdF9jbGVhbnVwOyAgICAgICAgICAgICAgICAgIFwKKyNkZWZpbmUgY2hrX2Vhc3lfc2V0b3B0KEEsIEIsIEMsIFksIFopIGRvIHsgXAorICBleGVfZWFzeV9zZXRvcHQoKEEpLCAoQiksIChDKSwgKFkpLCAoWikpOyBcCisgIGlmKHJlcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBnb3RvIHRlc3RfY2xlYW51cDsgICAgICAgICAgICAgICAgICAgICAgXAogfSBXSElMRV9GQUxTRQogCi0jZGVmaW5lIGVhc3lfc2V0b3B0KEEsQixDKSBcCi0gIGNoa19lYXN5X3NldG9wdCgoQSksKEIpLChDKSwoX19GSUxFX18pLChfX0xJTkVfXykpCisjZGVmaW5lIGVhc3lfc2V0b3B0KEEsIEIsIEMpIFwKKyAgY2hrX2Vhc3lfc2V0b3B0KChBKSwgKEIpLCAoQyksIChfX0ZJTEVfXyksIChfX0xJTkVfXykpCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAotI2RlZmluZSBleGVfbXVsdGlfc2V0b3B0KEEsQixDLFksWikgZG8geyAgICAgICAgICAgICAgICAgIFwKLSAgQ1VSTE1jb2RlIGVjOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIGlmKChlYyA9IGN1cmxfbXVsdGlfc2V0b3B0KChBKSwoQiksKEMpKSkgIT0gQ1VSTE1fT0spIHsgXAotICAgIGZwcmludGYoc3RkZXJyLCAiJXM6JWQgY3VybF9tdWx0aV9zZXRvcHQoKSBmYWlsZWQsICIgIFwKLSAgICAgICAgICAgICJ3aXRoIGNvZGUgJWQgKCVzKVxuIiwgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAoWSksIChaKSwgKGludCllYywgY3VybF9tdWx0aV9zdHJlcnJvcihlYykpOyAgXAotICAgIHJlcyA9IChpbnQpZWM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisjZGVmaW5lIGV4ZV9tdWx0aV9zZXRvcHQoQSwgQiwgQywgWSwgWikgZG8geyAgICAgICAgICAgICAgICBcCisgIENVUkxNY29kZSBlYzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIGlmKChlYyA9IGN1cmxfbXVsdGlfc2V0b3B0KChBKSwgKEIpLCAoQykpKSAhPSBDVVJMTV9PSykgeyBcCisgICAgZnByaW50ZihzdGRlcnIsICIlczolZCBjdXJsX211bHRpX3NldG9wdCgpIGZhaWxlZCwgIiAgICBcCisgICAgICAgICAgICAid2l0aCBjb2RlICVkICglcylcbiIsICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAoWSksIChaKSwgKGludCllYywgY3VybF9tdWx0aV9zdHJlcnJvcihlYykpOyAgICBcCisgICAgcmVzID0gKGludCllYzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiB9IFdISUxFX0ZBTFNFCiAKICNkZWZpbmUgcmVzX211bHRpX3NldG9wdChBLEIsQykgXAotICBleGVfbXVsdGlfc2V0b3B0KChBKSwoQiksKEMpLChfX0ZJTEVfXyksKF9fTElORV9fKSkKKyAgZXhlX211bHRpX3NldG9wdCgoQSksIChCKSwgKEMpLCAoX19GSUxFX18pLCAoX19MSU5FX18pKQogCi0jZGVmaW5lIGNoa19tdWx0aV9zZXRvcHQoQSxCLEMsWSxaKSBkbyB7IFwKLSAgZXhlX211bHRpX3NldG9wdCgoQSksKEIpLChDKSwoWSksKFopKTsgXAotICBpZihyZXMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgZ290byB0ZXN0X2NsZWFudXA7ICAgICAgICAgICAgICAgICAgIFwKKyNkZWZpbmUgY2hrX211bHRpX3NldG9wdChBLEIsQyxZLFopIGRvIHsgICAgIFwKKyAgZXhlX211bHRpX3NldG9wdCgoQSksIChCKSwgKEMpLCAoWSksIChaKSk7IFwKKyAgaWYocmVzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBnb3RvIHRlc3RfY2xlYW51cDsgICAgICAgICAgICAgICAgICAgICAgIFwKIH0gV0hJTEVfRkFMU0UKIAogI2RlZmluZSBtdWx0aV9zZXRvcHQoQSxCLEMpIFwKLSAgY2hrX211bHRpX3NldG9wdCgoQSksKEIpLChDKSwoX19GSUxFX18pLChfX0xJTkVfXykpCisgIGNoa19tdWx0aV9zZXRvcHQoKEEpLCAoQiksIChDKSwgKF9fRklMRV9fKSwgKF9fTElORV9fKSkKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCiAjZGVmaW5lIGV4ZV9tdWx0aV9hZGRfaGFuZGxlKEEsQixZLFopIGRvIHsgICAgICAgICAgICAgICAgICAgXAogICBDVVJMTWNvZGUgZWM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgaWYoKGVjID0gY3VybF9tdWx0aV9hZGRfaGFuZGxlKChBKSwoQikpKSAhPSBDVVJMTV9PSykgeyAgICBcCisgIGlmKChlYyA9IGN1cmxfbXVsdGlfYWRkX2hhbmRsZSgoQSksIChCKSkpICE9IENVUkxNX09LKSB7ICAgXAogICAgIGZwcmludGYoc3RkZXJyLCAiJXM6JWQgY3VybF9tdWx0aV9hZGRfaGFuZGxlKCkgZmFpbGVkLCAiIFwKICAgICAgICAgICAgICJ3aXRoIGNvZGUgJWQgKCVzKVxuIiwgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAoWSksIChaKSwgKGludCllYywgY3VybF9tdWx0aV9zdHJlcnJvcihlYykpOyAgICAgXApAQCAtMjI2LDIzICsyMjQsMjMgQEAKICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiB9IFdISUxFX0ZBTFNFCiAKLSNkZWZpbmUgcmVzX211bHRpX2FkZF9oYW5kbGUoQSxCKSBcCi0gIGV4ZV9tdWx0aV9hZGRfaGFuZGxlKChBKSwoQiksKF9fRklMRV9fKSwoX19MSU5FX18pKQorI2RlZmluZSByZXNfbXVsdGlfYWRkX2hhbmRsZShBLCBCKSBcCisgIGV4ZV9tdWx0aV9hZGRfaGFuZGxlKChBKSwgKEIpLCAoX19GSUxFX18pLCAoX19MSU5FX18pKQogCi0jZGVmaW5lIGNoa19tdWx0aV9hZGRfaGFuZGxlKEEsQixZLFopIGRvIHsgXAotICBleGVfbXVsdGlfYWRkX2hhbmRsZSgoQSksKEIpLChZKSwoWikpOyAgIFwKLSAgaWYocmVzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgZ290byB0ZXN0X2NsZWFudXA7ICAgICAgICAgICAgICAgICAgICAgXAorI2RlZmluZSBjaGtfbXVsdGlfYWRkX2hhbmRsZShBLCBCLCBZLCBaKSBkbyB7IFwKKyAgZXhlX211bHRpX2FkZF9oYW5kbGUoKEEpLCAoQiksIChZKSwgKFopKTsgICBcCisgIGlmKHJlcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGdvdG8gdGVzdF9jbGVhbnVwOyAgICAgICAgICAgICAgICAgICAgICAgIFwKIH0gV0hJTEVfRkFMU0UKIAotI2RlZmluZSBtdWx0aV9hZGRfaGFuZGxlKEEsQikgXAotICBjaGtfbXVsdGlfYWRkX2hhbmRsZSgoQSksKEIpLChfX0ZJTEVfXyksKF9fTElORV9fKSkKKyNkZWZpbmUgbXVsdGlfYWRkX2hhbmRsZShBLCBCKSBcCisgIGNoa19tdWx0aV9hZGRfaGFuZGxlKChBKSwgKEIpLCAoX19GSUxFX18pLCAoX19MSU5FX18pKQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKICNkZWZpbmUgZXhlX211bHRpX3JlbW92ZV9oYW5kbGUoQSxCLFksWikgZG8geyAgICAgICAgICAgICAgICAgICBcCiAgIENVUkxNY29kZSBlYzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBpZigoZWMgPSBjdXJsX211bHRpX3JlbW92ZV9oYW5kbGUoKEEpLChCKSkpICE9IENVUkxNX09LKSB7ICAgIFwKKyAgaWYoKGVjID0gY3VybF9tdWx0aV9yZW1vdmVfaGFuZGxlKChBKSwgKEIpKSkgIT0gQ1VSTE1fT0spIHsgICBcCiAgICAgZnByaW50ZihzdGRlcnIsICIlczolZCBjdXJsX211bHRpX3JlbW92ZV9oYW5kbGUoKSBmYWlsZWQsICIgXAogICAgICAgICAgICAgIndpdGggY29kZSAlZCAoJXMpXG4iLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIChZKSwgKFopLCAoaW50KWVjLCBjdXJsX211bHRpX3N0cmVycm9yKGVjKSk7ICAgICAgICBcCkBAIC0yNTAsMjQgKzI0OCwyNCBAQAogICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKIH0gV0hJTEVfRkFMU0UKIAotI2RlZmluZSByZXNfbXVsdGlfcmVtb3ZlX2hhbmRsZShBLEIpIFwKLSAgZXhlX211bHRpX3JlbW92ZV9oYW5kbGUoKEEpLChCKSwoX19GSUxFX18pLChfX0xJTkVfXykpCisjZGVmaW5lIHJlc19tdWx0aV9yZW1vdmVfaGFuZGxlKEEsIEIpIFwKKyAgZXhlX211bHRpX3JlbW92ZV9oYW5kbGUoKEEpLCAoQiksIChfX0ZJTEVfXyksIChfX0xJTkVfXykpCiAKLSNkZWZpbmUgY2hrX211bHRpX3JlbW92ZV9oYW5kbGUoQSxCLFksWikgZG8geyBcCi0gIGV4ZV9tdWx0aV9yZW1vdmVfaGFuZGxlKChBKSwoQiksKFkpLChaKSk7ICAgXAotICBpZihyZXMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBnb3RvIHRlc3RfY2xlYW51cDsgICAgICAgICAgICAgICAgICAgICAgICBcCisjZGVmaW5lIGNoa19tdWx0aV9yZW1vdmVfaGFuZGxlKEEsIEIsIFksIFopIGRvIHsgXAorICBleGVfbXVsdGlfcmVtb3ZlX2hhbmRsZSgoQSksIChCKSwgKFkpLCAoWikpOyAgIFwKKyAgaWYocmVzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZ290byB0ZXN0X2NsZWFudXA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogfSBXSElMRV9GQUxTRQogCiAKLSNkZWZpbmUgbXVsdGlfcmVtb3ZlX2hhbmRsZShBLEIpIFwKLSAgY2hrX211bHRpX3JlbW92ZV9oYW5kbGUoKEEpLChCKSwoX19GSUxFX18pLChfX0xJTkVfXykpCisjZGVmaW5lIG11bHRpX3JlbW92ZV9oYW5kbGUoQSwgQikgXAorICBjaGtfbXVsdGlfcmVtb3ZlX2hhbmRsZSgoQSksIChCKSwgKF9fRklMRV9fKSwgKF9fTElORV9fKSkKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCiAjZGVmaW5lIGV4ZV9tdWx0aV9wZXJmb3JtKEEsQixZLFopIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgQ1VSTE1jb2RlIGVjOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBpZigoZWMgPSBjdXJsX211bHRpX3BlcmZvcm0oKEEpLChCKSkpICE9IENVUkxNX09LKSB7ICAgICAgICAgICBcCisgIGlmKChlYyA9IGN1cmxfbXVsdGlfcGVyZm9ybSgoQSksIChCKSkpICE9IENVUkxNX09LKSB7ICAgICAgICAgIFwKICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiVkIGN1cmxfbXVsdGlfcGVyZm9ybSgpIGZhaWxlZCwgIiAgICAgICAgXAogICAgICAgICAgICAgIndpdGggY29kZSAlZCAoJXMpXG4iLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAoWSksIChaKSwgKGludCllYywgY3VybF9tdWx0aV9zdHJlcnJvcihlYykpOyAgICAgICAgIFwKQEAgLTI4MSw1MyArMjc5LDUzIEBACiAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKIH0gV0hJTEVfRkFMU0UKIAotI2RlZmluZSByZXNfbXVsdGlfcGVyZm9ybShBLEIpIFwKLSAgZXhlX211bHRpX3BlcmZvcm0oKEEpLChCKSwoX19GSUxFX18pLChfX0xJTkVfXykpCisjZGVmaW5lIHJlc19tdWx0aV9wZXJmb3JtKEEsIEIpIFwKKyAgZXhlX211bHRpX3BlcmZvcm0oKEEpLCAoQiksIChfX0ZJTEVfXyksIChfX0xJTkVfXykpCiAKLSNkZWZpbmUgY2hrX211bHRpX3BlcmZvcm0oQSxCLFksWikgZG8geyBcCi0gIGV4ZV9tdWx0aV9wZXJmb3JtKChBKSwoQiksKFkpLChaKSk7ICAgXAotICBpZihyZXMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBnb3RvIHRlc3RfY2xlYW51cDsgICAgICAgICAgICAgICAgICBcCisjZGVmaW5lIGNoa19tdWx0aV9wZXJmb3JtKEEsIEIsIFksIFopIGRvIHsgXAorICBleGVfbXVsdGlfcGVyZm9ybSgoQSksIChCKSwgKFkpLCAoWikpOyAgIFwKKyAgaWYocmVzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZ290byB0ZXN0X2NsZWFudXA7ICAgICAgICAgICAgICAgICAgICAgXAogfSBXSElMRV9GQUxTRQogCiAjZGVmaW5lIG11bHRpX3BlcmZvcm0oQSxCKSBcCi0gIGNoa19tdWx0aV9wZXJmb3JtKChBKSwoQiksKF9fRklMRV9fKSwoX19MSU5FX18pKQorICBjaGtfbXVsdGlfcGVyZm9ybSgoQSksIChCKSwgKF9fRklMRV9fKSwgKF9fTElORV9fKSkKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCi0jZGVmaW5lIGV4ZV9tdWx0aV9mZHNldChBLEIsQyxELEUsWSxaKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgQ1VSTE1jb2RlIGVjOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBpZigoZWMgPSBjdXJsX211bHRpX2Zkc2V0KChBKSwoQiksKEMpLChEKSwoRSkpKSAhPSBDVVJMTV9PSykgeyBcCi0gICAgZnByaW50ZihzdGRlcnIsICIlczolZCBjdXJsX211bHRpX2Zkc2V0KCkgZmFpbGVkLCAiICAgICAgICAgIFwKLSAgICAgICAgICAgICJ3aXRoIGNvZGUgJWQgKCVzKVxuIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgKFkpLCAoWiksIChpbnQpZWMsIGN1cmxfbXVsdGlfc3RyZXJyb3IoZWMpKTsgICAgICAgICBcCi0gICAgcmVzID0gKGludCllYzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBlbHNlIGlmKCooKEUpKSA8IC0xKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgZnByaW50ZihzdGRlcnIsICIlczolZCBjdXJsX211bHRpX2Zkc2V0KCkgc3VjY2VlZGVkLCAiICAgICAgIFwKLSAgICAgICAgICAgICJidXQgcmV0dXJuZWQgaW52YWxpZCBtYXhfZmQgdmFsdWUgKCVkKVxuIiwgICAgICAgICAgXAotICAgICAgICAgICAgKFkpLCAoWiksIChpbnQpKigoRSkpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgcmVzID0gVEVTVF9FUlJfTlVNX0hBTkRMRVM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorI2RlZmluZSBleGVfbXVsdGlfZmRzZXQoQSwgQiwgQywgRCwgRSwgWSwgWikgZG8geyAgICAgICAgICAgICAgICAgICAgXAorICBDVVJMTWNvZGUgZWM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBpZigoZWMgPSBjdXJsX211bHRpX2Zkc2V0KChBKSwgKEIpLCAoQyksIChEKSwgKEUpKSkgIT0gQ1VSTE1fT0spIHsgXAorICAgIGZwcmludGYoc3RkZXJyLCAiJXM6JWQgY3VybF9tdWx0aV9mZHNldCgpIGZhaWxlZCwgIiAgICAgICAgICAgICAgXAorICAgICAgICAgICAgIndpdGggY29kZSAlZCAoJXMpXG4iLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgKFkpLCAoWiksIChpbnQpZWMsIGN1cmxfbXVsdGlfc3RyZXJyb3IoZWMpKTsgICAgICAgICAgICAgXAorICAgIHJlcyA9IChpbnQpZWM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBlbHNlIGlmKCooKEUpKSA8IC0xKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGZwcmludGYoc3RkZXJyLCAiJXM6JWQgY3VybF9tdWx0aV9mZHNldCgpIHN1Y2NlZWRlZCwgIiAgICAgICAgICAgXAorICAgICAgICAgICAgImJ1dCByZXR1cm5lZCBpbnZhbGlkIG1heF9mZCB2YWx1ZSAoJWQpXG4iLCAgICAgICAgICAgICAgXAorICAgICAgICAgICAgKFkpLCAoWiksIChpbnQpKigoRSkpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHJlcyA9IFRFU1RfRVJSX05VTV9IQU5ETEVTOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogfSBXSElMRV9GQUxTRQogCi0jZGVmaW5lIHJlc19tdWx0aV9mZHNldChBLEIsQyxELEUpIFwKLSAgZXhlX211bHRpX2Zkc2V0KChBKSwoQiksKEMpLChEKSwoRSksKF9fRklMRV9fKSwoX19MSU5FX18pKQorI2RlZmluZSByZXNfbXVsdGlfZmRzZXQoQSwgQiwgQywgRCwgRSkgXAorICBleGVfbXVsdGlfZmRzZXQoKEEpLCAoQiksIChDKSwgKEQpLCAoRSksIChfX0ZJTEVfXyksIChfX0xJTkVfXykpCiAKLSNkZWZpbmUgY2hrX211bHRpX2Zkc2V0KEEsQixDLEQsRSxZLFopIGRvIHsgICAgIFwKLSAgZXhlX211bHRpX2Zkc2V0KChBKSwoQiksKEMpLChEKSwoRSksKFkpLChaKSk7IFwKLSAgaWYocmVzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBnb3RvIHRlc3RfY2xlYW51cDsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX0gV0hJTEVfRkFMU0UKKyNkZWZpbmUgY2hrX211bHRpX2Zkc2V0KEEsIEIsIEMsIEQsIEUsIFksIFopIGRvIHsgICAgICAgXAorICAgIGV4ZV9tdWx0aV9mZHNldCgoQSksIChCKSwgKEMpLCAoRCksIChFKSwgKFkpLCAoWikpOyBcCisgICAgaWYocmVzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIGdvdG8gdGVzdF9jbGVhbnVwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB9IFdISUxFX0ZBTFNFCiAKLSNkZWZpbmUgbXVsdGlfZmRzZXQoQSxCLEMsRCxFKSBcCi0gIGNoa19tdWx0aV9mZHNldCgoQSksKEIpLChDKSwoRCksKEUpLChfX0ZJTEVfXyksKF9fTElORV9fKSkKKyNkZWZpbmUgbXVsdGlfZmRzZXQoQSwgQiwgQywgRCwgRSkgXAorICBjaGtfbXVsdGlfZmRzZXQoKEEpLCAoQiksIChDKSwgKEQpLCAoRSksIChfX0ZJTEVfXyksIChfX0xJTkVfXykpCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAogI2RlZmluZSBleGVfbXVsdGlfdGltZW91dChBLEIsWSxaKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgIFwKICAgQ1VSTE1jb2RlIGVjOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIGlmKChlYyA9IGN1cmxfbXVsdGlfdGltZW91dCgoQSksKEIpKSkgIT0gQ1VSTE1fT0spIHsgICAgICAgXAorICBpZigoZWMgPSBjdXJsX211bHRpX3RpbWVvdXQoKEEpLCAoQikpKSAhPSBDVVJMTV9PSykgeyAgICAgIFwKICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiVkIGN1cmxfbXVsdGlfdGltZW91dCgpIGZhaWxlZCwgIiAgICBcCiAgICAgICAgICAgICAid2l0aCBjb2RlICVkICglcylcbiIsICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgKFkpLCAoWiksIChpbnQpZWMsIGN1cmxfbXVsdGlfc3RyZXJyb3IoZWMpKTsgICAgIFwKQEAgLTM0MSw0MiArMzM5LDQyIEBACiAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogfSBXSElMRV9GQUxTRQogCi0jZGVmaW5lIHJlc19tdWx0aV90aW1lb3V0KEEsQikgXAotICBleGVfbXVsdGlfdGltZW91dCgoQSksKEIpLChfX0ZJTEVfXyksKF9fTElORV9fKSkKKyNkZWZpbmUgcmVzX211bHRpX3RpbWVvdXQoQSwgQikgXAorICBleGVfbXVsdGlfdGltZW91dCgoQSksIChCKSwgKF9fRklMRV9fKSwgKF9fTElORV9fKSkKIAotI2RlZmluZSBjaGtfbXVsdGlfdGltZW91dChBLEIsWSxaKSBkbyB7IFwKLSAgZXhlX211bHRpX3RpbWVvdXQoKEEpLChCKSwoWSksKFopKTsgICBcCi0gIGlmKHJlcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGdvdG8gdGVzdF9jbGVhbnVwOyAgICAgICAgICAgICAgICAgIFwKLX0gV0hJTEVfRkFMU0UKKyNkZWZpbmUgY2hrX211bHRpX3RpbWVvdXQoQSwgQiwgWSwgWikgZG8geyBcCisgICAgZXhlX211bHRpX3RpbWVvdXQoKEEpLCAoQiksIChZKSwgKFopKTsgXAorICAgIGlmKHJlcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIGdvdG8gdGVzdF9jbGVhbnVwOyAgICAgICAgICAgICAgICAgICBcCisgIH0gV0hJTEVfRkFMU0UKIAotI2RlZmluZSBtdWx0aV90aW1lb3V0KEEsQikgXAotICBjaGtfbXVsdGlfdGltZW91dCgoQSksKEIpLChfX0ZJTEVfXyksKF9fTElORV9fKSkKKyNkZWZpbmUgbXVsdGlfdGltZW91dChBLCBCKSBcCisgIGNoa19tdWx0aV90aW1lb3V0KChBKSwgKEIpLCAoX19GSUxFX18pLCAoX19MSU5FX18pKQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKLSNkZWZpbmUgZXhlX3NlbGVjdF90ZXN0KEEsQixDLEQsRSxZLFopIGRvIHsgICAgICAgIFwKLSAgaW50IGVjOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgaWYoc2VsZWN0X3dyYXBwZXIoKEEpLChCKSwoQyksKEQpLChFKSkgPT0gLTEgKSB7IFwKLSAgICBlYyA9IFNPQ0tFUlJOTzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiVkIHNlbGVjdCgpIGZhaWxlZCwgd2l0aCAiIFwKLSAgICAgICAgICAgICJlcnJubyAlZCAoJXMpXG4iLCAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIChZKSwgKFopLCBlYywgc3RyZXJyb3IoZWMpKTsgICAgICAgICAgIFwKLSAgICByZXMgPSBURVNUX0VSUl9TRUxFQ1Q7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX0gV0hJTEVfRkFMU0UKKyNkZWZpbmUgZXhlX3NlbGVjdF90ZXN0KEEsIEIsIEMsIEQsIEUsIFksIFopIGRvIHsgICAgICAgICAgICAgICBcCisgICAgaW50IGVjOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmKHNlbGVjdF93cmFwcGVyKChBKSwgKEIpLCAoQyksIChEKSwgKEUpKSA9PSAtMSkgeyAgICAgICAgIFwKKyAgICAgIGVjID0gU09DS0VSUk5POyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiVkIHNlbGVjdCgpIGZhaWxlZCwgd2l0aCAiICAgICAgICAgICAgXAorICAgICAgICAgICAgICAiZXJybm8gJWQgKCVzKVxuIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgKFkpLCAoWiksIGVjLCBzdHJlcnJvcihlYykpOyAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICByZXMgPSBURVNUX0VSUl9TRUxFQ1Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgfSBXSElMRV9GQUxTRQogCi0jZGVmaW5lIHJlc19zZWxlY3RfdGVzdChBLEIsQyxELEUpIFwKLSAgZXhlX3NlbGVjdF90ZXN0KChBKSwoQiksKEMpLChEKSwoRSksKF9fRklMRV9fKSwoX19MSU5FX18pKQorI2RlZmluZSByZXNfc2VsZWN0X3Rlc3QoQSwgQiwgQywgRCwgRSkgXAorICBleGVfc2VsZWN0X3Rlc3QoKEEpLCAoQiksIChDKSwgKEQpLCAoRSksIChfX0ZJTEVfXyksIChfX0xJTkVfXykpCiAKLSNkZWZpbmUgY2hrX3NlbGVjdF90ZXN0KEEsQixDLEQsRSxZLFopIGRvIHsgICAgIFwKLSAgZXhlX3NlbGVjdF90ZXN0KChBKSwoQiksKEMpLChEKSwoRSksKFkpLChaKSk7IFwKLSAgaWYocmVzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBnb3RvIHRlc3RfY2xlYW51cDsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX0gV0hJTEVfRkFMU0UKKyNkZWZpbmUgY2hrX3NlbGVjdF90ZXN0KEEsIEIsIEMsIEQsIEUsIFksIFopIGRvIHsgICAgICAgXAorICAgIGV4ZV9zZWxlY3RfdGVzdCgoQSksIChCKSwgKEMpLCAoRCksIChFKSwgKFkpLCAoWikpOyBcCisgICAgaWYocmVzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIGdvdG8gdGVzdF9jbGVhbnVwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB9IFdISUxFX0ZBTFNFCiAKLSNkZWZpbmUgc2VsZWN0X3Rlc3QoQSxCLEMsRCxFKSBcCi0gIGNoa19zZWxlY3RfdGVzdCgoQSksKEIpLChDKSwoRCksKEUpLChfX0ZJTEVfXyksKF9fTElORV9fKSkKKyNkZWZpbmUgc2VsZWN0X3Rlc3QoQSwgQiwgQywgRCwgRSkgXAorICBjaGtfc2VsZWN0X3Rlc3QoKEEpLCAoQiksIChDKSwgKEQpLCAoRSksIChfX0ZJTEVfXyksIChfX0xJTkVfXykpCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIApAQCAtMzkzLDE2ICszOTEsMTYgQEAKIH0gV0hJTEVfRkFMU0UKIAogI2RlZmluZSByZXNfdGVzdF90aW1lZG91dCgpIFwKLSAgZXhlX3Rlc3RfdGltZWRvdXQoKF9fRklMRV9fKSwoX19MSU5FX18pKQorICBleGVfdGVzdF90aW1lZG91dCgoX19GSUxFX18pLCAoX19MSU5FX18pKQogCi0jZGVmaW5lIGNoa190ZXN0X3RpbWVkb3V0KFksWikgZG8geyBcCi0gIGV4ZV90ZXN0X3RpbWVkb3V0KFksWik7ICAgICAgICAgICBcCi0gIGlmKHJlcykgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgZ290byB0ZXN0X2NsZWFudXA7ICAgICAgICAgICAgICBcCi19IFdISUxFX0ZBTFNFCisjZGVmaW5lIGNoa190ZXN0X3RpbWVkb3V0KFksIFopIGRvIHsgXAorICAgIGV4ZV90ZXN0X3RpbWVkb3V0KFksIFopOyAgICAgICAgIFwKKyAgICBpZihyZXMpICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBnb3RvIHRlc3RfY2xlYW51cDsgICAgICAgICAgICAgXAorICB9IFdISUxFX0ZBTFNFCiAKICNkZWZpbmUgYWJvcnRfb25fdGVzdF90aW1lb3V0KCkgXAotICBjaGtfdGVzdF90aW1lZG91dCgoX19GSUxFX18pLChfX0xJTkVfXykpCisgIGNoa190ZXN0X3RpbWVkb3V0KChfX0ZJTEVfXyksIChfX0xJTkVfXykpCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIApAQCAtNDE3LDE4ICs0MTUsMTggQEAKIH0gV0hJTEVfRkFMU0UKIAogI2RlZmluZSByZXNfZ2xvYmFsX2luaXQoQSkgXAotICBleGVfZ2xvYmFsX2luaXQoKEEpLChfX0ZJTEVfXyksKF9fTElORV9fKSkKKyAgZXhlX2dsb2JhbF9pbml0KChBKSwgKF9fRklMRV9fKSwgKF9fTElORV9fKSkKIAotI2RlZmluZSBjaGtfZ2xvYmFsX2luaXQoQSxZLFopIGRvIHsgXAotICBleGVfZ2xvYmFsX2luaXQoKEEpLChZKSwoWikpOyAgICAgXAotICBpZihyZXMpICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHJldHVybiByZXM7ICAgICAgICAgICAgICAgICAgICAgXAotfSBXSElMRV9GQUxTRQorI2RlZmluZSBjaGtfZ2xvYmFsX2luaXQoQSwgWSwgWikgZG8geyBcCisgICAgZXhlX2dsb2JhbF9pbml0KChBKSwgKFkpLCAoWikpOyAgIFwKKyAgICBpZihyZXMpICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgcmV0dXJuIHJlczsgICAgICAgICAgICAgICAgICAgICBcCisgIH0gV0hJTEVfRkFMU0UKIAogLyogZ2xvYmFsX2luaXQoKSBpcyBkaWZmZXJlbnQgdGhhbiBvdGhlciBtYWNyb3MuIEluIGNhc2Ugb2YKICAgIGZhaWx1cmUgaXQgJ3JldHVybidzIGluc3RlYWQgb2YgZ29pbmcgdG8gJ3Rlc3RfY2xlYW51cCcuICovCiAKICNkZWZpbmUgZ2xvYmFsX2luaXQoQSkgXAotICBjaGtfZ2xvYmFsX2luaXQoKEEpLChfX0ZJTEVfXyksKF9fTElORV9fKSkKKyAgY2hrX2dsb2JhbF9pbml0KChBKSwgKF9fRklMRV9fKSwgKF9fTElORV9fKSkKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwpkaWZmIC0tZ2l0IGEvdGVzdHMvbGlidGVzdC90ZXN0dHJhY2UuYyBiL3Rlc3RzL2xpYnRlc3QvdGVzdHRyYWNlLmMKaW5kZXggOGQ5YzZiOC4uOTU4NzE5ZiAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC90ZXN0dHJhY2UuYworKysgYi90ZXN0cy9saWJ0ZXN0L3Rlc3R0cmFjZS5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvdGVzdHRyYWNlLmggYi90ZXN0cy9saWJ0ZXN0L3Rlc3R0cmFjZS5oCmluZGV4IDczZDI0ODkuLmZhZmRmMjkgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xpYnRlc3QvdGVzdHRyYWNlLmgKKysrIGIvdGVzdHMvbGlidGVzdC90ZXN0dHJhY2UuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYnRlc3QvdGVzdHV0aWwuYyBiL3Rlc3RzL2xpYnRlc3QvdGVzdHV0aWwuYwppbmRleCBiMThhNjA3Li5iOWM0M2RlIDEwMDY0NAotLS0gYS90ZXN0cy9saWJ0ZXN0L3Rlc3R1dGlsLmMKKysrIGIvdGVzdHMvbGlidGVzdC90ZXN0dXRpbC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjAsNyArMjAsNyBAQAogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAjaW5jbHVkZSAiY3VybF9zZXR1cC5oIgotCisjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAjaW5jbHVkZSAidGVzdHV0aWwuaCIKICNpbmNsdWRlICJtZW1kZWJ1Zy5oIgogCmRpZmYgLS1naXQgYS90ZXN0cy9saWJ0ZXN0L3Rlc3R1dGlsLmggYi90ZXN0cy9saWJ0ZXN0L3Rlc3R1dGlsLmgKaW5kZXggYTIzNjk3MC4uMGJjNWUwMyAxMDA2NDQKLS0tIGEvdGVzdHMvbGlidGVzdC90ZXN0dXRpbC5oCisrKyBiL3Rlc3RzL2xpYnRlc3QvdGVzdHV0aWwuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3Rlc3RzL21hbnBhZ2Utc2Nhbi5wbCBiL3Rlc3RzL21hbnBhZ2Utc2Nhbi5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzZlMWUzCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvbWFucGFnZS1zY2FuLnBsCkBAIC0wLDAgKzEsMjg3IEBACisjIS91c3IvYmluL2VudiBwZXJsCisjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKyMgIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gX198IHwgfCB8IHxfKSB8IHwKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisjCisjIENvcHlyaWdodCAoQykgMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyMKKyMgVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKyMgeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcworIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyMKKyMgWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCisjIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworIyBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorIworIyBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisjIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgU2NhbiBzeW1ib2xzLWluLXZlcnNpb24gKHdoaWNoIGlzIHZlcmlmaWVkIHRvIGJlIGNvcnJlY3QgYnkgdGVzdCAxMTE5KSwgdGhlbgorIyB2ZXJpZnkgdGhhdCBlYWNoIG9wdGlvbiBtZW50aW9uIGluIHRoZXJlIHRoYXQgc2hvdWxkIGhhdmUgaXRzIG93biBtYW4gcGFnZQorIyBhY3R1YWxseSBkb2VzLgorIworIyBJbiBhZGRpdGlvbiwgbWFrZSBzdXJlIHRoYXQgZXZlcnkgY3VycmVudCBvcHRpb24gdG8gY3VybF9lYXN5X3NldG9wdCwKKyMgY3VybF9lYXN5X2dldGluZm8gYW5kIGN1cmxfbXVsdGlfc2V0b3B0IGFyZSBhbHNvIG1lbnRpb25lZCBpbiB0aGVpcgorIyBjb3JyZXNwb25kaW5nIG1haW4gKGluZGV4KSBtYW4gcGFnZS4KKyMKKyMgc3JjL3Rvb2xfZ2V0cGFyYW0uYyBsaXN0cyBhbGwgb3B0aW9ucyBjdXJsIGNhbiBwYXJzZQorIyBkb2NzL2N1cmwuMSBkb2N1bWVudHMgYWxsIGNvbW1hbmQgbGluZSBvcHRpb25zCisjIHNyYy90b29sX2hlbHAuYyBvdXRwdXRzIGFsbCBvcHRpb25zIHdpdGggY3VybCAtaAorIyAtIG1ha2Ugc3VyZSB0aGV5J3JlIGFsbCBpbiBzeW5jCisjCisjIE91dHB1dCBhbGwgZGV2aWFuY2VzIHRvIHN0ZGVyci4KKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKKworIyB3ZSBtYXkgZ2V0IHRoZSBkaXIgcm9vdCBwb2ludGVkIG91dAorbXkgJHJvb3Q9JEFSR1ZbMF0gfHwgIi4iOworbXkgJHN5bXMgPSAiJHJvb3QvZG9jcy9saWJjdXJsL3N5bWJvbHMtaW4tdmVyc2lvbnMiOworbXkgJGN1cmxoID0gIiRyb290L2luY2x1ZGUvY3VybC9jdXJsLmgiOworbXkgJGVycm9ycz0wOworCisjIHRoZSBwcmVwb3B1bGF0ZWQgYWxpYXMgbGlzdCBpcyB0aGUgQ1VSTElORk9fKiBkZWZpbmVzIHRoYXQgYXJlIHVzZWQgZm9yIHRoZQorIyBkZWJ1ZyBmdW5jdGlvbiBjYWxsYmFjayBhbmQgdGhlIGZhY3QgdGhhdCB0aGV5IHVzZSB0aGUgc2FtZSBwcmVmaXggYXMgdGhlCisjIGN1cmxfZWFzeV9nZXRpbmZvIG9wdGlvbnMgd2FzIGEgbWlzdGFrZS4KK215ICVhbGlhcyA9ICgKKyAgICAnQ1VSTElORk9fREFUQV9JTicgPT4gJ25vbmUnLAorICAgICdDVVJMSU5GT19EQVRBX09VVCcgPT4gJ25vbmUnLAorICAgICdDVVJMSU5GT19FTkQnID0+ICdub25lJywKKyAgICAnQ1VSTElORk9fSEVBREVSX0lOJyA9PiAnbm9uZScsCisgICAgJ0NVUkxJTkZPX0hFQURFUl9PVVQnID0+ICdub25lJywKKyAgICAnQ1VSTElORk9fTEFTVE9ORScgPT4gJ25vbmUnLAorICAgICdDVVJMSU5GT19OT05FJyA9PiAnbm9uZScsCisgICAgJ0NVUkxJTkZPX1NTTF9EQVRBX0lOJyA9PiAnbm9uZScsCisgICAgJ0NVUkxJTkZPX1NTTF9EQVRBX09VVCcgPT4gJ25vbmUnLAorICAgICdDVVJMSU5GT19URVhUJyA9PiAnbm9uZScKKyAgICApOworCitzdWIgc2Nhbm1hbnBhZ2UgeworICAgIG15ICgkZmlsZSwgQHdvcmRzKSA9IEBfOworCisgICAgb3BlbihNLCAiPCRmaWxlIik7CisgICAgbXkgQG0gPSA8TT47CisgICAgY2xvc2UoTSk7CisKKyAgICBmb3JlYWNoIG15ICRtIChAd29yZHMpIHsKKworICAgICAgICBteSBAZyA9IGdyZXAoL15cLklQICRtLywgQG0pOworICAgICAgICBpZighJGdbMF0pIHsKKyAgICAgICAgICAgIHByaW50IFNUREVSUiAiTWlzc2luZyBtZW50aW9uIG9mICRtIGluICRmaWxlXG4iOworICAgICAgICAgICAgJGVycm9ycysrOworICAgICAgICB9CisgICAgfQorfQorCisjIGNoZWNrIGZvciBkZWZpbmUgYWxpc2VzCitvcGVuKFIsICI8JGN1cmxoIikgfHwKKyAgICBkaWUgIm5vIGN1cmwuaCI7Cit3aGlsZSg8Uj4pIHsKKyAgICBpZigvXlwjZGVmaW5lIChDVVJMKE9QVHxJTkZPfE1PUFQpX1x3KykgKC4qKS8pIHsKKyAgICAgICAgJGFsaWFzeyQxfT0kMzsKKyAgICB9Cit9CitjbG9zZShSKTsKKworbXkgQGN1cmxvcHQ7CitteSBAY3VybGluZm87CitteSBAY3VybG1vcHQ7CitvcGVuKFIsICI8JHN5bXMiKSB8fAorICAgIGRpZSAibm8gaW5wdXQgZmlsZSI7Cit3aGlsZSg8Uj4pIHsKKyAgICBjaG9tcDsKKyAgICBteSAkbD0gJF87CisgICAgaWYoJGwgPX4gLyhDVVJMKE9QVHxJTkZPfE1PUFQpX1x3KykgKihbMC05Ll0qKSAqKFswLTkuLV0qKSAqKFswLTkuXSopLykgeworICAgICAgICBteSAoJG9wdCwgJHR5cGUsICRhZGQsICRkZXAsICRyZW0pID0gKCQxLCAkMiwgJDMsICQ0LCAkNSk7CisKKyAgICAgICAgaWYoJGFsaWFzeyRvcHR9KSB7CisgICAgICAgICAgICAjcHJpbnQgIiRvcHQgPT4gJGFsaWFzeyRvcHR9XG4iOworICAgICAgICB9CisgICAgICAgIGVsc2lmKCRyZW0pIHsKKyAgICAgICAgICAgICMgJG9wdCB3YXMgcmVtb3ZlZCBpbiAkcmVtCisgICAgICAgICAgICAjIHNvIGRvbid0IGNoZWNrIGZvciB0aGF0CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZigkdHlwZSBlcSAiT1BUIikgeworICAgICAgICAgICAgICAgIHB1c2ggQGN1cmxvcHQsICRvcHQsCisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNpZigkdHlwZSBlcSAiSU5GTyIpIHsKKyAgICAgICAgICAgICAgICBwdXNoIEBjdXJsaW5mbywgJG9wdCwKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2lmKCR0eXBlIGVxICJNT1BUIikgeworICAgICAgICAgICAgICAgIHB1c2ggQGN1cmxtb3B0LCAkb3B0LAorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYoISAtZiAiJHJvb3QvZG9jcy9saWJjdXJsL29wdHMvJG9wdC4zIikgeworICAgICAgICAgICAgICAgIHByaW50IFNUREVSUiAiTWlzc2luZyAkb3B0LjNcbiI7CisgICAgICAgICAgICAgICAgJGVycm9ycysrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorY2xvc2UoUik7CisKK3NjYW5tYW5wYWdlKCIkcm9vdC9kb2NzL2xpYmN1cmwvY3VybF9lYXN5X3NldG9wdC4zIiwgQGN1cmxvcHQpOworc2Nhbm1hbnBhZ2UoIiRyb290L2RvY3MvbGliY3VybC9jdXJsX2Vhc3lfZ2V0aW5mby4zIiwgQGN1cmxpbmZvKTsKK3NjYW5tYW5wYWdlKCIkcm9vdC9kb2NzL2xpYmN1cmwvY3VybF9tdWx0aV9zZXRvcHQuMyIsIEBjdXJsbW9wdCk7CisKKyMgdXNpbmcgdGhpcyBoYXNoIGFycmF5LCB3ZSBjYW4gd2hpdGVsaXN0IHNwZWNpZmljIG9wdGlvbnMKK215ICVvcHRzID0gKAorICAgICMgcHJldGVuZCB0aGVzZSAtLW5vIG9wdGlvbnMgZXhpc3RzIGluIHRvb2xfZ2V0cGFyYW0uYworICAgICctLW5vLWFscG4nID0+IDEsCisgICAgJy0tbm8tbnBuJyA9PiAxLAorICAgICctTiwgLS1uby1idWZmZXInID0+IDEsCisgICAgJy0tbm8tc2Vzc2lvbmlkJyA9PiAxLAorICAgICctLW5vLWtlZXBhbGl2ZScgPT4gMSwKKworICAgICMgcHJldGVuZCB0aGVzZSBvcHRpb25zIHdpdGhvdXQgLW5vIGV4aXN0IGluIGN1cmwuMSBhbmQgdG9vbF9oZWxwLmMKKyAgICAnLS1hbHBuJyA9PiA2LAorICAgICctLW5wbicgPT4gNiwKKyAgICAnLS1lcHJ0JyA9PiA2LAorICAgICctLWVwc3YnID0+IDYsCisgICAgJy0ta2VlcGFsaXZlJyA9PiA2LAorICAgICctTiwgLS1idWZmZXInID0+IDYsCisgICAgJy0tc2Vzc2lvbmlkJyA9PiA2LAorCisgICAgIyBkZXByZWNhdGVkIG9wdGlvbnMgZG8gbm90IG5lZWQgdG8gYmUgaW4gY3VybCAtaCBvdXRwdXQKKyAgICAnLS1rcmI0JyA9PiA0LAorICAgICctLWZ0cC1zc2wnID0+IDQsCisgICAgJy0tZnRwLXNzbC1yZXFkJyA9PiA0LAorCisgICAgIyBmb3IgdGVzdHMgYW5kIGRlYnVnIG9ubHksIGNhbiByZW1haW4gaGlkZGVuCisgICAgJy0tdGVzdC1ldmVudCcgPT4gNiwKKyAgICAnLS13ZGVidWcnID0+IDYsCisgICAgKTsKKworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIHBhcnNlIHRoZSBjdXJsIGNvZGUgdGhhdCBwYXJzZXMgdGhlIGNvbW1hbmQgbGluZSBhcmd1bWVudHMhCitvcGVuKFIsICI8JHJvb3Qvc3JjL3Rvb2xfZ2V0cGFyYW0uYyIpIHx8CisgICAgZGllICJubyBpbnB1dCBmaWxlIjsKK215ICRsaXN0OworbXkgQGdldHBhcmFtOyAjIHN0b3JlIGFsbCBwYXJzZWQgcGFyYW1ldGVycworCit3aGlsZSg8Uj4pIHsKKyAgICBjaG9tcDsKKyAgICBteSAkbD0gJF87CisgICAgaWYoL3N0cnVjdCBMb25nU2hvcnQgYWxpYXNlcy8pIHsKKyAgICAgICAgJGxpc3Q9MTsKKyAgICB9CisgICAgZWxzaWYoJGxpc3QpIHsKKyAgICAgICAgaWYoIC9eICBceyhbXixdKiksICooW14gXSopLykgeworICAgICAgICAgICAgbXkgKCRzLCAkbCk9KCQxLCAkMik7CisgICAgICAgICAgICBteSAkc2g7CisgICAgICAgICAgICBteSAkbG87CisgICAgICAgICAgICBteSAkdGl0bGU7CisgICAgICAgICAgICBpZigkbCA9fiAvXCIoLiopXCIvKSB7CisgICAgICAgICAgICAgICAgIyBsb25nIG9wdGlvbgorICAgICAgICAgICAgICAgICRsbyA9ICQxOworICAgICAgICAgICAgICAgICR0aXRsZT0iLS0kbG8iOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYoJHMgPX4gL1wiKC4pXCIvKSB7CisgICAgICAgICAgICAgICAgIyBhIHNob3J0IG9wdGlvbgorICAgICAgICAgICAgICAgICRzaCA9ICQxOworICAgICAgICAgICAgICAgICR0aXRsZT0iLSRzaCwgJHRpdGxlIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHB1c2ggQGdldHBhcmFtLCAkdGl0bGU7CisgICAgICAgICAgICAkb3B0c3skdGl0bGV9IHw9IDE7CisgICAgICAgIH0KKyAgICB9Cit9CitjbG9zZShSKTsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBwYXJzZSB0aGUgY3VybC4xIG1hbiBwYWdlLCBleHRyYWN0IGFsbCBkb2N1bWVudGVkIGNvbW1hbmQgbGluZSBvcHRpb25zCitvcGVuKFIsICI8JHJvb3QvZG9jcy9jdXJsLjEiKSB8fAorICAgIGRpZSAibm8gaW5wdXQgZmlsZSI7CitteSBAbWFucGFnZTsgIyBzdG9yZSBhbGwgcGFyc2VkIHBhcmFtZXRlcnMKK3doaWxlKDxSPikgeworICAgIGNob21wOworICAgIG15ICRsPSAkXzsKKyAgICBpZigvXlwuSVAgXCIoLVteXCJdKilcIi8pIHsKKyAgICAgICAgbXkgJHN0ciA9ICQxOworICAgICAgICBteSAkY29tYm87CisgICAgICAgIGlmKCRzdHIgPX4gL14tKC4pLCAtLShbYS16MC05Li1dKikvKSB7CisgICAgICAgICAgICAjIGZpZ3VyZSBvdXQgdGhlIC1zaG9ydCwgLS1sb25nIGNvbWJvCisgICAgICAgICAgICAkY29tYm8gPSAiLSQxLCAtLSQyIjsKKyAgICAgICAgfQorICAgICAgICBlbHNpZigkc3RyID1+IC9eLS0oW2EtejAtOS4tXSopLykgeworICAgICAgICAgICAgIyBmaWd1cmUgb3V0IHRoZSAtLWxvbmcgbmFtZQorICAgICAgICAgICAgJGNvbWJvID0gIi0tJDEiOworICAgICAgICB9CisgICAgICAgIGlmKCRjb21ibykgeworICAgICAgICAgICAgcHVzaCBAbWFucGFnZSwgJGNvbWJvOworICAgICAgICAgICAgJG9wdHN7JGNvbWJvfSB8PSAyOworICAgICAgICB9CisgICAgfQorfQorY2xvc2UoUik7CisKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBwYXJzZSB0aGUgY3VybCBjb2RlIHRoYXQgb3V0cHV0cyB0aGUgY3VybCAtaCBsaXN0CitvcGVuKFIsICI8JHJvb3Qvc3JjL3Rvb2xfaGVscC5jIikgfHwKKyAgICBkaWUgIm5vIGlucHV0IGZpbGUiOworbXkgQHRvb2xoZWxwOyAjIHN0b3JlIGFsbCBwYXJzZWQgcGFyYW1ldGVycword2hpbGUoPFI+KSB7CisgICAgY2hvbXA7CisgICAgbXkgJGw9ICRfOworICAgIGlmKC9eICBcIiAqKC4qKS8pIHsKKyAgICAgICAgbXkgJHN0cj0kMTsKKyAgICAgICAgbXkgJGNvbWJvOworICAgICAgICBpZigkc3RyID1+IC9eLSguKSwgLS0oW2EtejAtOS4tXSopLykgeworICAgICAgICAgICAgIyBmaWd1cmUgb3V0IHRoZSAtc2hvcnQsIC0tbG9uZyBjb21ibworICAgICAgICAgICAgJGNvbWJvID0gIi0kMSwgLS0kMiI7CisgICAgICAgIH0KKyAgICAgICAgZWxzaWYoJHN0ciA9fiAvXi0tKFthLXowLTkuLV0qKS8pIHsKKyAgICAgICAgICAgICMgZmlndXJlIG91dCB0aGUgLS1sb25nIG5hbWUKKyAgICAgICAgICAgICRjb21ibyA9ICItLSQxIjsKKyAgICAgICAgfQorICAgICAgICBpZigkY29tYm8pIHsKKyAgICAgICAgICAgIHB1c2ggQHRvb2xoZWxwLCAkY29tYm87CisgICAgICAgICAgICAkb3B0c3skY29tYm99IHw9IDQ7CisgICAgICAgIH0KKworICAgIH0KK30KK2Nsb3NlKFIpOworCisjCisjIE5vdyB3ZSBoYXZlIHRocmVlIGFycmF5cyB3aXRoIG9wdGlvbnMgdG8gY3Jvc3MtcmVmZXJlbmNlLgorCitmb3JlYWNoIG15ICRvIChrZXlzICVvcHRzKSB7CisgICAgbXkgJHdoZXJlID0gJG9wdHN7JG99OworCisgICAgaWYoJHdoZXJlICE9IDcpIHsKKyAgICAgICAgIyB0aGlzIGlzIG5vdCBpbiBhbGwgdGhyZWUgcGxhY2VzCisgICAgICAgICRlcnJvcnMrKzsKKyAgICAgICAgbXkgJGV4aXN0czsKKyAgICAgICAgbXkgJG1pc3Npbmc7CisgICAgICAgIGlmKCR3aGVyZSAmIDEpIHsKKyAgICAgICAgICAgICRleGlzdHM9IiB0b29sX2dldHBhcmFtLmMiOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgJG1pc3Npbmc9IiB0b29sX2dldHBhcmFtLmMiOworICAgICAgICB9CisgICAgICAgIGlmKCR3aGVyZSAmIDIpIHsKKyAgICAgICAgICAgICRleGlzdHMuPSAiIGN1cmwuMSI7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAkbWlzc2luZy49ICIgY3VybC4xIjsKKyAgICAgICAgfQorICAgICAgICBpZigkd2hlcmUgJiA0KSB7CisgICAgICAgICAgICAkZXhpc3RzIC49ICIgdG9vbF9oZWxwLmMiOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgJG1pc3NpbmcgLj0gIiB0b29sX2hlbHAuYyI7CisgICAgICAgIH0KKworICAgICAgICBwcmludCBTVERFUlIgIiRvIGlzIG5vdCBpbiRtaXNzaW5nIChidXQgaW4kZXhpc3RzKVxuIjsKKyAgICB9Cit9CisKK2V4aXQgJGVycm9yczsKZGlmZiAtLWdpdCBhL3Rlc3RzL21lbS1pbmNsdWRlLXNjYW4ucGwgYi90ZXN0cy9tZW0taW5jbHVkZS1zY2FuLnBsCmluZGV4IDY3NmRmMjUuLjg5MjJiZDQgMTAwNjQ0Ci0tLSBhL3Rlc3RzL21lbS1pbmNsdWRlLXNjYW4ucGwKKysrIGIvdGVzdHMvbWVtLWluY2x1ZGUtc2Nhbi5wbApAQCAtMTAsNyArMTAsNyBAQAogIwogIyBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogIyB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0jIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisjIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogIwogIyBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICMgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS90ZXN0cy9tZW1hbmFseXplLnBsIGIvdGVzdHMvbWVtYW5hbHl6ZS5wbAppbmRleCA3MDFjZjE2Li4zNWQxYzdlIDEwMDc1NQotLS0gYS90ZXN0cy9tZW1hbmFseXplLnBsCisrKyBiL3Rlc3RzL21lbWFuYWx5emUucGwKQEAgLTEwLDcgKzEwLDcgQEAKICMKICMgVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICMgeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICMKICMgWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAjIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvdGVzdHMvbnJvZmYtc2Nhbi5wbCBiL3Rlc3RzL25yb2ZmLXNjYW4ucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzkzMDY4YwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL25yb2ZmLXNjYW4ucGwKQEAgLTAsMCArMSwxMDQgQEAKKyMhL3Vzci9iaW4vZW52IHBlcmwKKyMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworIyAgUHJvamVjdCAgICAgICAgICAgICAgICAgICAgIF9fX3wgfCB8IHwgIF8gXHwgfAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorIworIyBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAorIyB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCisjIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorIworIyBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKKyMgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisjIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCisjCisjIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKKyMgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBzY2FuIG5yb2ZmIHBhZ2VzIHRvIGZpbmQgYmFzaWMgc3ludGFjdGljIHByb2JsZW1zIHN1Y2ggYXMgdW5iYWxhbmNlZCBcZgorIyBjb2RlcyBvciByZWZlcmVuY2VzIHRvIG5vbi1leGlzdGluZyBjdXJsIG1hbiBwYWdlcy4KKworbXkgJGRvY3Nyb290ID0gJEFSR1ZbMF07CisKK2lmKCEkZG9jc3Jvb3QgfHwgKCRkb2Nzcm9vdCBlcSAiLWciKSkgeworICAgIHByaW50ICJVc2FnZTogbnJvZmYtc2Nhbi5wbCA8ZG9jcyByb290IGRpcj4gW25yb2ZmIGZpbGVzXVxuIjsKKyAgICBleGl0OworfQorCisKK3NoaWZ0IEBBUkdWOworCitteSBAZiA9IEBBUkdWOworCitteSAlbWFucDsKKworc3ViIG1hbnByZXNlbnQgeworICAgIG15ICgkbWFuKSA9IEBfOworICAgIGlmKCRtYW5weyRtYW59KSB7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICBlbHNpZigtciAiJGRvY3Nyb290LyRtYW4iIHx8CisgICAgICAgICAgLXIgIiRkb2Nzcm9vdC9saWJjdXJsLyRtYW4iIHx8CisgICAgICAgICAgLXIgIiRkb2Nzcm9vdC9saWJjdXJsL29wdHMvJG1hbiIpIHsKKyAgICAgICAgJG1hbnB7JG1hbn09MTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitzdWIgZmlsZSB7CisgICAgbXkgKCRmKSA9IEBfOworICAgIG9wZW4oRiwgIjwkZiIpIHx8CisgICAgICAgIGRpZSAibm8gZmlsZSI7CisgICAgbXkgJGxpbmUgPSAxOworICAgIHdoaWxlKDxGPikgeworICAgICAgICBjaG9tcDsKKyAgICAgICAgbXkgJGwgPSAkXzsKKyAgICAgICAgd2hpbGUoJGwgPX4gcy9cXGYoLikoW14gXSopXFxmKC4pLy8pIHsKKyAgICAgICAgICAgIG15ICgkcHJlLCAkc3RyLCAkcG9zdCk9KCQxLCAkMiwgJDMpOworICAgICAgICAgICAgaWYoJHBvc3QgbmUgIlAiKSB7CisgICAgICAgICAgICAgICAgcHJpbnQgU1RERVJSICJlcnJvcjogJGY6JGxpbmU6IG1pc3NpbmcgXFxmUCBhZnRlciAkc3RyXG4iOworICAgICAgICAgICAgICAgICRlcnJvcnMrKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmKCRzdHIgPX4gLygobGliY3VybHxjdXJsKShbXiBdKikpXCgzXCkvaSkgeworICAgICAgICAgICAgICAgIG15ICRtYW4gPSAiJDEuMyI7CisgICAgICAgICAgICAgICAgaWYoIW1hbnByZXNlbnQoJG1hbikpIHsKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQgU1RERVJSICJlcnJvcjogJGY6JGxpbmU6IHJlZmVyaW5nIHRvIG5vbi1leGlzdGluZyBtYW4gcGFnZSAkbWFuXG4iOworICAgICAgICAgICAgICAgICAgICAkZXJyb3JzKys7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmKCRwcmUgbmUgIkkiKSB7CisgICAgICAgICAgICAgICAgICAgIHByaW50IFNUREVSUiAiZXJyb3I6ICRmOiRsaW5lOiB1c2UgXFxmSSBiZWZvcmUgJHN0clxuIjsKKyAgICAgICAgICAgICAgICAgICAgJGVycm9ycysrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZigkbCA9fiAvKGN1cmwoW14gXSopXCgzXCkpL2kpIHsKKyAgICAgICAgICAgIHByaW50IFNUREVSUiAiZXJyb3I6ICRmOiRsaW5lOiBub24tcmVmZXJlbmNpbmcgJDFcbiI7CisgICAgICAgICAgICAkZXJyb3JzKys7CisgICAgICAgIH0KKyAgICAgICAgaWYoJGwgPX4gL15cLkJSICguKikvKSB7CisgICAgICAgICAgICBteSAkaT0gJDE7CisgICAgICAgICAgICB3aGlsZSgkaSA9fiBzLygobGlifCljdXJsKFteIF0qKSkgKlwiXCgzXCkoLHwpICpcIiAqLy9pICkgeworICAgICAgICAgICAgICAgIG15ICRtYW4gPSAiJDEuMyI7CisgICAgICAgICAgICAgICAgaWYoIW1hbnByZXNlbnQoJG1hbikpIHsKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQgU1RERVJSICJlcnJvcjogJGY6JGxpbmU6IHJlZmVyaW5nIHRvIG5vbi1leGlzdGluZyBtYW4gcGFnZSAkbWFuXG4iOworICAgICAgICAgICAgICAgICAgICAkZXJyb3JzKys7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgICRsaW5lKys7CisgICAgfQorICAgIGNsb3NlKEYpOworfQorCitmb3JlYWNoIG15ICRmIChAZikgeworICAgIGZpbGUoJGYpOworfQorCitleGl0ICRlcnJvcnM/MTowOwpkaWZmIC0tZ2l0IGEvdGVzdHMvcGF0aGhlbHAucG0gYi90ZXN0cy9wYXRoaGVscC5wbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOTFlZjZjCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvcGF0aGhlbHAucG0KQEAgLTAsMCArMSw3NjEgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICAgXyBfX19fICBfCisjICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorIworIyBDb3B5cmlnaHQgKEMpIDIwMTYsIEV2Z2VueSBHcmluIChLYXJsc29uMmspLCA8azJrQG5hcm9kLnJ1Pi4KKyMKKyMgVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKyMgeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcworIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyMKKyMgWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCisjIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworIyBmdXJuaXNoZWQgdG8gZG8gc28sIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ09QWUlORyBmaWxlLgorIworIyBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCisjIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyBUaGlzIFBlcmwgcGFja2FnZSBoZWxwcyB3aXRoIHBhdGggdHJhbnNmb3JtaW5nIHdoZW4gcnVubmluZyBjVVJMIHRlc3RzIG9uCisjIFdpbjMyIHBsYXRmb3JtIHdpdGggTXN5cyBvciBDeWd3aW4uCisjIFRocmVlIG1haW4gZnVuY3Rpb25zICdzeXNfbmF0aXZlX2Fic19wYXRoJywgJ3N5c19uYXRpdmVfcGF0aCcgYW5kCisjICdidWlsZF9zeXNfYWJzX3BhdGgnIGF1dG9kZXRlY3QgZm9ybWF0IG9mIGdpdmVuIHBhdGhuYW1lcy4gRm9sbG93aW5nIGZvcm1hdHMKKyMgYXJlIHN1cHBvcnRlZDoKKyMgICgxKSAvc29tZS9wYXRoICAgLSBhYnNvbHV0ZSBwYXRoIGluIFVuaXgtc3R5bGUKKyMgICgyKSBEOi9zb21lL3BhdGggLSBhYnNvbHV0ZSBwYXRoIGluIFdpbjMyLXN0eWxlCisjICAoMykgc29tZS9wYXRoICAgIC0gcmVsYXRpdmUgcGF0aAorIyAgKDQpIEQ6c29tZS9wYXRoICAtIHBhdGggcmVsYXRpdmUgdG8gY3VycmVudCBkaXJlY3Rvcnkgb24gV2luMzIgZHJpdmUgKHBhdGhzCisjICAgICAgICAgICAgICAgICAgICAgbGlrZSAnRDonIGFyZSB0cmVhdGVkIGFzICdEOi4vJykgKCopCisjICAoNSkgXHNvbWUvcGF0aCAgIC0gcGF0aCBmcm9tIHJvb3QgZGlyZWN0b3J5IG9uIGN1cnJlbnQgV2luMzIgZHJpdmUgKCopCisjIEFsbCBmb3J3YXJkICcvJyBhbmQgYmFjayAnXCcgc2xhc2hlcyBhcmUgdHJlYXRlZCBpZGVudGljYWxseSBleGNlcHQgbGVhZGluZworIyBzbGFzaCBpbiBmb3JtcyAoMSkgYW5kICg1KS4KKyMgRm9yd2FyZCBzbGFzaGVzIGFyZSBzaW1wbGVyIHByb2Nlc3NlZCBpbiBQZXJsLCBkbyBub3QgcmVxdWlyZSBleHRyYSBlc2NhcGluZworIyBmb3Igc2hlbGwgKHVubGlrZSBiYWNrIHNsYXNoZXMpIGFuZCBhY2NlcHRlZCBieSBXaW4zMiBuYXRpdmUgcHJvZ3JhbXMsIHNvCisjIGFsbCBmdW5jdGlvbnMgcmV0dXJuIHBhdGhzIHdpdGggb25seSBmb3J3YXJkIHNsYXNoZXMgZXhjZXB0CisjICdzeXNfbmF0aXZlX3BhdGgnIHdoaWNoIHJldHVybnMgcGF0aHMgd2l0aCBmaXJzdCBmb3J3YXJkIHNsYXNoIGZvciBmb3JtICg1KS4KKyMgQWxsIHJldHVybmVkIHBhdGhzIGRvbid0IGNvbnRhaW4gYW55IGR1cGxpY2F0ZWQgc2xhc2hlcywgb25seSBzaW5nbGUgc2xhc2hlcworIyBhcmUgdXNlZCBhcyBkaXJlY3Rvcnkgc2VwYXJhdG9ycyBvbiBvdXRwdXQuCisjIE9uIG5vbi1XaW5kb3dzIHBsYXRmb3JtcyBmdW5jdGlvbnMgYWN0cyBhcyB0cmFuc3BhcmVudCB3cmFwcGVycyBmb3Igc2ltaWxhcgorIyBQZXJsJ3MgZnVuY3Rpb25zIG9yIHJldHVybiB1bm1vZGlmaWVkIHN0cmluZyAoZGVwZW5kaW5nIG9uIGZ1bmN0aW9uYWxpdHkpLAorIyBzbyBhbGwgZnVuY3Rpb25zIGNhbiBiZSB1bmNvbmRpdGlvbmFsbHkgdXNlZCBvbiBhbGwgcGxhdGZvcm1zLgorIworIyAoKikgQ0FVVElPTiEgRm9ybXMgKDQpIGFuZCAoNSkgYXJlIG5vdCByZWNvbW1lbmRlZCB0byB1c2UgYXMgdGhleSBjYW4gYmUKKyMgICAgIGludGVycHJldGVkIGluY29ycmVjdGx5IGluIFBlcmwgYW5kIE1zeXMvQ3lnd2luIGVudmlyb25tZW50IGhhdmUgbG93CisjICAgICBjb250cm9sIG9uIFdpbjMyIGN1cnJlbnQgZHJpdmUgYW5kIFdpbjMyIGN1cnJlbnQgcGF0aCBvbiBzcGVjaWZpYyBkcml2ZS4KKworCitwYWNrYWdlIHBhdGhoZWxwOwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKK3VzZSBDd2QgJ2Fic19wYXRoJzsKKworQkVHSU4geworICAgIHJlcXVpcmUgRXhwb3J0ZXI7CisKKyAgICBvdXIgQElTQSAgICA9IHF3KEV4cG9ydGVyKTsKKworICAgIG91ciBARVhQT1JUID0gcXcoCisgICAgICBzeXNfbmF0aXZlX2Fic19wYXRoCisgICAgICBzeXNfbmF0aXZlX3BhdGgKKyAgICApOworCisgICAgb3VyIEBFWFBPUlRfT0sgPSBxdygKKyAgICAgIGJ1aWxkX3N5c19hYnNfcGF0aAorICAgICAgc3lzX25hdGl2ZV9jdXJyZW50X3BhdGgKKyAgICAgIG5vcm1hbGl6ZV9wYXRoCisgICAgICBvc19pc193aW4KKyAgICAgICR1c2VfY3lncGF0aAorICAgICAgc2hvdWxkX3VzZV9jeWdwYXRoCisgICAgICBkcml2ZXNfbW91bnRlZF9vbl9jeWdkcml2ZQorICAgICk7Cit9CisKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgQmxvY2sgZm9yIGNhY2hlZCBzdGF0aWMgdmFyaWFibGVzCisjCit7CisgICAgIyBDYWNoZWQgc3RhdGljIHZhcmlhYmxlLCBQZXJsIDUuMC1jb21wYXRpYmxlLgorICAgIG15ICRpc193aW4gPSAkXk8gZXEgJ01TV2luMzInCisgICAgICAgICAgICAgIHx8ICReTyBlcSAnY3lnd2luJworICAgICAgICAgICAgICB8fCAkXk8gZXEgJ21zeXMnOworCisgICAgIyBSZXR1cm5zIGJvb2xlYW4gdHJ1ZSBpZiBPUyBpcyBhbnkgZm9ybSBvZiBXaW5kb3dzLgorICAgIHN1YiBvc19pc193aW4geworICAgICAgICByZXR1cm4gJGlzX3dpbjsKKyAgICB9CisKKyAgICAjIENhY2hlZCBzdGF0aWMgdmFyaWFibGUsIFBlcmwgNS4wLWNvbXBhdGlibGUuCisgICAgbXkgJGN5Z2RyaXZlX3ByZXNlbnQ7CisKKyAgICAjIFJldHVybnMgYm9vbGVhbiB0cnVlIGlmIFdpbjMyIGRyaXZlcyBtb3VudGVkIHdpdGggJy9jeWdkcml2ZS8nIHByZWZpeC4KKyAgICBzdWIgZHJpdmVzX21vdW50ZWRfb25fY3lnZHJpdmUgeworICAgICAgICByZXR1cm4gJGN5Z2RyaXZlX3ByZXNlbnQgaWYgZGVmaW5lZCAkY3lnZHJpdmVfcHJlc2VudDsKKyAgICAgICAgJGN5Z2RyaXZlX3ByZXNlbnQgPSAoKC1lICcvY3lnZHJpdmUvJykgJiYgKC1kICcvY3lnZHJpdmUvJykpID8gMSA6IDA7CisgICAgICAgIHJldHVybiAkY3lnZHJpdmVfcHJlc2VudDsKKyAgICB9Cit9CisKK291ciAkdXNlX2N5Z3BhdGg7ICAgICMgT25seSBmb3IgV2luMzI6CisgICAgICAgICAgICAgICAgICAgICAjICB1bmRlZiAtIGF1dG9kZXRlY3QKKyAgICAgICAgICAgICAgICAgICAgICMgICAgICAxIC0gdXNlIGN5Z3BhdGgKKyAgICAgICAgICAgICAgICAgICAgICMgICAgICAwIC0gZG8gbm90IHVzZSBjeWdwYXRoCisKKyMgUmV0dXJucyBib29sZWFuIHRydWUgaWYgJ2N5Z3BhdGgnIHV0aWxpdHkgc2hvdWxkIGJlIHVzZWQgZm9yIHBhdGggY29udmVyc2lvbi4KK3N1YiBzaG91bGRfdXNlX2N5Z3BhdGggeworICAgIHVubGVzcyAob3NfaXNfd2luKCkpIHsKKyAgICAgICAgJHVzZV9jeWdwYXRoID0gMDsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiAkdXNlX2N5Z3BhdGggaWYgZGVmaW5lZCAkdXNlX2N5Z3BhdGg7CisKKyAgICAkdXNlX2N5Z3BhdGggPSAocXh7Y3lncGF0aCAtdSAnLlxcJyAyPi9kZXYvbnVsbH0gZXEgIi4vXG4iICYmICQ/ID09IDApOworCisgICAgcmV0dXJuICR1c2VfY3lncGF0aDsKK30KKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgUGVyZm9ybXMgcGF0aCAibm9ybWFsaXphdGlvbiI6IGFsbCBzbGFzaGVzIGNvbnZlcnRlZCB0byBmb3J3YXJkCisjIHNsYXNoZXMgKGV4Y2VwdCBsZWFkaW5nIHNsYXNoKSwgYWxsIGR1cGxpY2F0ZWQgc2xhc2hlcyBhcmUgcmVwbGFjZWQKKyMgd2l0aCBzaW5nbGUgc2xhc2hlcywgYWxsIHJlbGF0aXZlIGRpcmVjdG9yaWVzICgnLi8nIGFuZCAnLi4vJykgYXJlCisjIHJlc29sdmVkIGlmIHBvc3NpYmxlLgorIyBQYXRoIHByb2Nlc3NlZCBhcyBzdHJpbmcsIGRpcmVjdG9yaWVzIGFyZSBub3QgY2hlY2tlZCBmb3IgcHJlc2VuY2Ugc28KKyMgcGF0aCBmb3Igbm90IHlldCBleGlzdGluZyBkaXJlY3RvcnkgY2FuIGJlICJub3JtYWxpemVkIi4KKyMKK3N1YiBub3JtYWxpemVfcGF0aDsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgUmV0dXJucyBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IGluIFdpbjMyIGZvcm1hdCBvbiBXaW5kb3dzLgorIworc3ViIHN5c19uYXRpdmVfY3VycmVudF9wYXRoIHsKKyAgICByZXR1cm4gQ3dkOjpnZXRjd2QoKSB1bmxlc3Mgb3NfaXNfd2luKCk7CisKKyAgICBteSAkY3VyX2RpcjsKKyAgICBpZigkXk8gZXEgJ21zeXMnKSB7CisgICAgICAgICMgTVN5cyBzaGVsbCBoYXMgYnVpbHQtaW4gY29tbWFuZC4KKyAgICAgICAgY2hvbXAoJGN1cl9kaXIgPSBgYmFzaCAtYyAncHdkIC1XJ2ApOworICAgICAgICBpZigkPyAhPSAwKSB7CisgICAgICAgICAgICB3YXJuICJDYW4ndCBkZXRlcm1pbmUgV2luMzIgY3VycmVudCBkaXJlY3RvcnkuXG4iOworICAgICAgICAgICAgcmV0dXJuIHVuZGVmOworICAgICAgICB9CisgICAgICAgICMgQWRkIGZpbmFsIHNsYXNoIGlmIHJlcXVpcmVkLgorICAgICAgICAkY3VyX2RpciAuPSAnLycgaWYgbGVuZ3RoKCRjdXJfZGlyKSA+IDM7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAjIERvIG5vdCB1c2UgJ2N5Z3BhdGgnIC0gaXQgZmFsc2VseSBzdWNjZWVkIG9uIHBhdGhzIGxpa2UgJy9jeWdkcml2ZScuCisgICAgICAgICRjdXJfZGlyID0gYGNtZCAiL2M7IiBlY2hvICVfX0NEX18lYDsKKyAgICAgICAgaWYoJD8gIT0gMCB8fCBzdWJzdHIoJGN1cl9kaXIsIDAsIDEpIGVxICclJykgeworICAgICAgICAgICAgd2FybiAiQ2FuJ3QgZGV0ZXJtaW5lIFdpbjMyIGN1cnJlbnQgZGlyZWN0b3J5LlxuIjsKKyAgICAgICAgICAgIHJldHVybiB1bmRlZjsKKyAgICAgICAgfQorICAgICAgICAjIFJlbW92ZSBib3RoICdccicgYW5kICdcbicuCisgICAgICAgICRjdXJfZGlyID1+IHN7XG58XHJ9e31nOworCisgICAgICAgICMgUmVwbGFjZSBiYWNrIHNsYXNoZXMgd2l0aCBmb3J3YXJkIHNsYXNoZXMuCisgICAgICAgICRjdXJfZGlyID1+IHN7XFx9ey99ZzsKKyAgICB9CisgICAgcmV0dXJuICRjdXJfZGlyOworfQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBSZXR1cm5zIFdpbjMyIGN1cnJlbnQgZHJpdmUgbGV0dGVyIHdpdGggY29sb24uCisjCitzdWIgZ2V0X3dpbjMyX2N1cnJlbnRfZHJpdmUgeworICAgICMgTm90aWNlIHBhcmFtZXRlciAiL2M7IiAtIGl0J3MgcmVxdWlyZWQgdG8gdHVybiBvZmYgTXN5cydzCisgICAgIyB0cmFuc2Zvcm1hdGlvbiBvZiAnL2MnIGFuZCBjb21wYXRpYmxlIHdpdGggQ3lnd2luLgorICAgIG15ICRkcml2ZV9sZXR0ZXIgPSBgY21kICIvYzsiIGVjaG8gJV9fQ0RfXzp+MCwyJWA7CisgICAgaWYoJD8gIT0gMCB8fCBzdWJzdHIoJGRyaXZlX2xldHRlciwgMSwgMSkgbmUgJzonKSB7CisgICAgICAgIHdhcm4gIkNhbid0IGRldGVybWluZSBjdXJyZW50IFdpbjMyIGRyaXZlIGxldHRlci5cbiI7CisgICAgICAgIHJldHVybiB1bmRlZjsKKyAgICB9CisKKyAgICByZXR1cm4gc3Vic3RyKCRkcml2ZV9sZXR0ZXIsIDAsIDIpOworfQorCisjIEludGVybmFsIGZ1bmN0aW9uLiBDb252ZXJ0cyBwYXRoIGJ5IHVzaW5nIE1zeXMncyBidWlsdC1pbiB0cmFuc2Zvcm1hdGlvbi4KKyMgUmV0dXJuZWQgcGF0aCBtYXkgY29udGFpbiBkdXBsaWNhdGVkIGFuZCBiYWNrIHNsYXNoZXMuCitzdWIgZG9fbXN5c190cmFuc2Zvcm07CisKKyMgSW50ZXJuYWwgZnVuY3Rpb24uIEdldHMgdHdvIHBhcmFtZXRlcnM6IGZpcnN0IHBhcmFtZXRlciBtdXN0IGJlIHNpbmdsZQorIyBkcml2ZSBsZXR0ZXIgKCdjJyksIHNlY29uZCBvcHRpb25hbCBwYXJhbWV0ZXIgaXMgcGF0aCByZWxhdGl2ZSB0byBkcml2ZSdzIAorIyBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LiBSZXR1cm5zIFdpbjMyIGFic29sdXRlIG5vcm1hbGl6ZWQgcGF0aC4KK3N1YiBnZXRfYWJzX3BhdGhfb25fd2luMzJfZHJpdmU7CisKKyMgSW50ZXJuYWwgZnVuY3Rpb24uIFRyaWVzIHRvIGZpbmQgb3IgZ3Vlc3MgV2luMzIgdmVyc2lvbiBvZiBnaXZlbgorIyBhYnNvbHV0ZSBVbml4LXN0eWxlIHBhdGguIE90aGVyIHR5cGVzIG9mIHBhdGhzIGFyZSBub3Qgc3VwcG9ydGVkLgorIyBSZXR1cm5lZCBwYXRocyBjb250YWluIG9ubHkgc2luZ2xlIGZvcndhcmQgc2xhc2hlcyAobm8gYmFjayBhbmQKKyMgZHVwbGljYXRlZCBzbGFzaGVzKS4KKyMgTGFzdCByZXNvcnQuIFVzZWQgb25seSB3aGVuIG90aGVyIHRyYW5zZm9ybWF0aW9ucyBhcmUgbm90IGF2YWlsYWJsZS4KK3N1YiBkb19kdW1iX2d1ZXNzZWRfdHJhbnNmb3JtOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBDb252ZXJ0cyBnaXZlbiBwYXRoIHRvIHN5c3RlbSBuYXRpdmUgZm9ybWF0LCBpLmUuIHRvIFdpbjMyIGZvcm1hdCBvbgorIyBXaW5kb3dzIHBsYXRmb3JtLiBSZWxhdGl2ZSBwYXRocyBjb252ZXJ0ZWQgdG8gcmVsYXRpdmUsIGFic29sdXRlCisjIHBhdGhzIGNvbnZlcnRlZCB0byBhYnNvbHV0ZS4KKyMKK3N1YiBzeXNfbmF0aXZlX3BhdGggeworICAgIG15ICgkcGF0aCkgPSBAXzsKKworICAgICMgUmV0dXJuIHVudG91Y2hlZCBvbiBub24tV2luZG93cyBwbGF0Zm9ybXMuCisgICAgcmV0dXJuICRwYXRoIHVubGVzcyAob3NfaXNfd2luKCkpOworCisgICAgIyBEbyBub3QgcHJvY2VzcyBlbXB0eSBwYXRoLgorICAgIHJldHVybiAkcGF0aCBpZiAoJHBhdGggZXEgJycpOworCisgICAgaWYoJHBhdGggPX4gc3teKFthLXpBLVpdKTokfXtcdSQxOn0pIHsKKyAgICAgICAgIyBQYXRoIGlzIHNpbmdsZSBkcml2ZSB3aXRoIGNvbG9uLiAoQzopCisgICAgICAgICMgVGhpcyB0eXBlIG9mIHBhdGhzIGlzIG5vdCBwcm9jZXNzZWQgY29ycmVjdGx5IGJ5ICdjeWdwYXRoJy4KKyAgICAgICAgIyBXQVJOSU5HIQorICAgICAgICAjIEJlIGNhcmVmdWwsIHRoaXMgcmVsYXRpdmUgcGF0aCBjYW4gYmUgYWNjaWRlbnRhbGx5IHRyYW5zZm9ybWVkCisgICAgICAgICMgaW50byB3cm9uZyBhYnNvbHV0ZSBwYXRoIGJ5IGFkZGluZyB0byBpdCBzb21lICcvZGlybmFtZScgd2l0aAorICAgICAgICAjIHNsYXNoIGF0IGZvbnQuCisgICAgICAgIHJldHVybiAkcGF0aDsKKyAgICB9CisgICAgZWxzaWYoJHBhdGggPX4gbXteXFx9IHx8ICRwYXRoID1+IG17XlthLXpBLVpdOlteL1xcXX0pIHsKKyAgICAgICAgIyBQYXRoIGlzIGEgZGlyZWN0b3J5IG9yIGZpbGVuYW1lIG9uIFdpbjMyIGN1cnJlbnQgZHJpdmUgb3IgcmVsYXRpdmUKKyAgICAgICAgIyBwYXRoIG9uIGN1cnJlbnQgZGlyZWN0b3J5IG9uIHNwZWNpZmljIFdpbjMyIGRyaXZlLgorICAgICAgICAjICgnXHBhdGgnIG9yICdEOnBhdGgnKQorICAgICAgICAjIEZpcnN0IHR5cGUgb2YgcGF0aHMgaXMgbm90IHByb2Nlc3NlZCBieSBNc3lzIHRyYW5zZm9ybWF0aW9uIGFuZAorICAgICAgICAjIHJlc29sdmVkIHRvIGFic29sdXRlIHBhdGggYnkgJ2N5Z3BhdGgnLgorICAgICAgICAjIFNlY29uZCB0eXBlIGlzIG5vdCBwcm9jZXNzZWQgYnkgTXN5cyB0cmFuc2Zvcm1hdGlvbiBhbmQgbWF5IGJlCisgICAgICAgICMgaW5jb3JyZWN0bHkgcHJvY2Vzc2VkIGJ5ICdjeWdwYXRoJyAoZm9yIHBhdGhzIGxpa2UgJ0Q6Li5cLi4vLlwnKQorCisgICAgICAgIG15ICRmaXJzdF9jaGFyID0gdWNmaXJzdChzdWJzdHIoJHBhdGgsIDAsIDEpKTsKKworICAgICAgICAjIFJlcGxhY2UgYW55IGJhY2sgYW5kIGR1cGxpY2F0ZWQgc2xhc2hlcyB3aXRoIHNpbmdsZSBmb3J3YXJkIHNsYXNoZXMuCisgICAgICAgICRwYXRoID1+IHN7W1xcL10rfXsvfWc7CisKKyAgICAgICAgIyBDb252ZXJ0IGxlYWRpbmcgc2xhc2ggYmFjayB0byBmb3J3YXJkIHNsYXNoIHRvIGluZGljYXRlCisgICAgICAgICMgZGlyZWN0b3J5IG9uIFdpbjMyIGN1cnJlbnQgZHJpdmUgb3IgY2FwaXRhbGl6ZSBkcml2ZSBsZXR0ZXIuCisgICAgICAgIHN1YnN0cigkcGF0aCwgMCwgMSkgPSAkZmlyc3RfY2hhcjsKKyAgICAgICAgcmV0dXJuICRwYXRoOworICAgIH0KKyAgICBlbHNpZihzaG91bGRfdXNlX2N5Z3BhdGgoKSkgeworICAgICAgICAjICdjeWdwYXRoJyBpcyBhdmFpbGFibGUgLSB1c2UgaXQuCisKKyAgICAgICAgIyBSZW1vdmUgbGVhZGluZyBkdXBsaWNhdGVkIGZvcndhcmQgYW5kIGJhY2sgc2xhc2hlcywgYXMgdGhleSBtYXkKKyAgICAgICAgIyBwcmV2ZW50IHRyYW5zZm9ybWluZyBhbmQgbWF5IGJlIG5vdCBwcm9jZXNzZWQuCisgICAgICAgICRwYXRoID1+IHN7XihbXFwvXSlbXFwvXSt9eyQxfWc7CisKKyAgICAgICAgbXkgJGhhc19maW5hbF9zbGFzaCA9ICgkcGF0aCA9fiBte1svXFxdJH0pOworCisgICAgICAgICMgVXNlICdjeWdwYXRoJywgJy1tJyBtZWFucyBXaW4zMiBwYXRoIHdpdGggZm9yd2FyZCBzbGFzaGVzLgorICAgICAgICBjaG9tcCgkcGF0aCA9IGBjeWdwYXRoIC1tICckcGF0aCdgKTsKKyAgICAgICAgaWYgKCQ/ICE9IDApIHsKKyAgICAgICAgICAgIHdhcm4gIkNhbid0IGNvbnZlcnQgcGF0aCBieSBcImN5Z3BhdGhcIi5cbiI7CisgICAgICAgICAgICByZXR1cm4gdW5kZWY7CisgICAgICAgIH0KKworICAgICAgICAjICdjeWdwYXRoJyBtYXkgcmVtb3ZlIGxhc3Qgc2xhc2ggZm9yIGV4aXN0aW5nIGRpcmVjdG9yaWVzLgorICAgICAgICAkcGF0aCAuPSAnLycgaWYoJGhhc19maW5hbF9zbGFzaCk7CisKKyAgICAgICAgIyBSZW1vdmUgYW55IGR1cGxpY2F0ZWQgZm9yd2FyZCBzbGFzaGVzIChhZGRlZCBieSAnY3lncGF0aCcgZm9yIHJvb3QKKyAgICAgICAgIyBkaXJlY3RvcmllcykKKyAgICAgICAgJHBhdGggPX4gc3svLyt9ey99ZzsKKworICAgICAgICByZXR1cm4gJHBhdGg7CisgICAgfQorICAgIGVsc2lmKCReTyBlcSAnbXN5cycpIHsKKyAgICAgICAgIyBNc3lzIHRyYW5zZm9ybXMgYXV0b21hdGljYWxseSBwYXRoIHRvIFdpbmRvd3MgbmF0aXZlIGZvcm0gaW4gc3RhcmluZworICAgICAgICAjIHByb2dyYW0gcGFyYW1ldGVycyBpZiBwcm9ncmFtIGlzIG5vdCBNc3lzLWJhc2VkLgorCisgICAgICAgICRwYXRoID0gZG9fbXN5c190cmFuc2Zvcm0oJHBhdGgpOworICAgICAgICByZXR1cm4gdW5kZWYgdW5sZXNzIGRlZmluZWQgJHBhdGg7CisKKyAgICAgICAgIyBDYXBpdGFsaXplIGRyaXZlIGxldHRlciBmb3IgV2luMzIgcGF0aHMuCisgICAgICAgICRwYXRoID1+IHN7XihbYS16XTopfXtcdSQxfTsKKworICAgICAgICAjIFJlcGxhY2UgYW55IGJhY2sgYW5kIGR1cGxpY2F0ZWQgc2xhc2hlcyB3aXRoIHNpbmdsZSBmb3J3YXJkIHNsYXNoZXMuCisgICAgICAgICRwYXRoID1+IHN7W1xcL10rfXsvfWc7CisgICAgICAgIHJldHVybiAkcGF0aDsKKyAgICB9CisgICAgZWxzaWYoJHBhdGggPX4gc3teKFthLXpBLVpdKTpbL1xcXX17XHUkMTovfSkgeworICAgICAgICAjIFBhdGggaXMgYWxyZWFkeSBpbiBXaW4zMiBmb3JtLiAoJ0M6XHBhdGgnKQorCisgICAgICAgICMgUmVwbGFjZSBhbnkgYmFjayBhbmQgZHVwbGljYXRlZCBzbGFzaGVzIHdpdGggc2luZ2xlIGZvcndhcmQgc2xhc2hlcy4KKyAgICAgICAgJHBhdGggPX4gc3tbXFwvXSt9ey99ZzsKKyAgICAgICAgcmV0dXJuICRwYXRoOworICAgIH0KKyAgICBlbHNpZigkcGF0aCAhfiBte14vfSkgeworICAgICAgICAjIFBhdGggaXMgaW4gcmVsYXRpdmUgZm9ybS4gKCdwYXRoL25hbWUnLCAnLi9wYXRoJyBvciAnLi4vcGF0aCcpCisKKyAgICAgICAgIyBSZXBsYWNlIGFueSBiYWNrIGFuZCBkdXBsaWNhdGVkIHNsYXNoZXMgd2l0aCBzaW5nbGUgZm9yd2FyZCBzbGFzaGVzLgorICAgICAgICAkcGF0aCA9fiBze1tcXC9dK317L31nOworICAgICAgICByZXR1cm4gJHBhdGg7CisgICAgfQorCisgICAgIyBPUyBpcyBXaW5kb3dzLCBidXQgbm90IE1zeXMsIHBhdGggaXMgYWJzb2x1dGUsIHBhdGggaXMgbm90IGluIFdpbjMyCisgICAgIyBmb3JtIGFuZCAnY3lncGF0aCcgaXMgbm90IGF2YWlsYWJsZS4KKyAgICByZXR1cm4gZG9fZHVtYl9ndWVzc2VkX3RyYW5zZm9ybSgkcGF0aCk7Cit9CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIENvbnZlcnRzIGdpdmVuIHBhdGggdG8gc3lzdGVtIG5hdGl2ZSBhYnNvbHV0ZSBwYXRoLCBpLmUuIHRvIFdpbjMyCisjIGFic29sdXRlIGZvcm1hdCBvbiBXaW5kb3dzIHBsYXRmb3JtLiBCb3RoIHJlbGF0aXZlIGFuZCBhYnNvbHV0ZQorIyBmb3JtYXRzIGFyZSBzdXBwb3J0ZWQgZm9yIGlucHV0LgorIworc3ViIHN5c19uYXRpdmVfYWJzX3BhdGggeworICAgIG15ICgkcGF0aCkgPSBAXzsKKworICAgIHVubGVzcyhvc19pc193aW4oKSkgeworICAgICAgICAjIENvbnZlcnQgcGF0aCB0byBhYnNvbHV0ZSBmb3JtLgorICAgICAgICAkcGF0aCA9IEN3ZDo6YWJzX3BhdGgoJHBhdGgpOworCisgICAgICAgICMgRG8gbm90IHByb2Nlc3MgZnVydGhlciBvbiBub24tV2luZG93cyBwbGF0Zm9ybXMuCisgICAgICAgIHJldHVybiAkcGF0aDsKKyAgICB9CisKKyAgICBpZigkcGF0aCA9fiBte14oW2EtekEtWl0pOigkfFteL1xcXS4qJCl9KSB7CisgICAgICAgICMgUGF0aCBpcyBzaW5nbGUgZHJpdmUgd2l0aCBjb2xvbiBvciByZWxhdGl2ZSBwYXRoIG9uIFdpbjMyIGRyaXZlLgorICAgICAgICAjICgnQzonIG9yICdDOnBhdGgnKQorICAgICAgICAjIFRoaXMga2luZCBvZiByZWxhdGl2ZSBwYXRoIGlzIG5vdCBwcm9jZXNzZWQgY29ycmVjdGx5IGJ5ICdjeWdwYXRoJy4KKyAgICAgICAgIyBHZXQgc3BlY2lmaWVkIGRyaXZlIGxldHRlcgorICAgICAgICByZXR1cm4gZ2V0X2Fic19wYXRoX29uX3dpbjMyX2RyaXZlKCQxLCAkMik7CisgICAgfQorICAgIGVsc2lmKCRwYXRoIGVxICcnKSB7CisgICAgICAgICMgUGF0aCBpcyBlbXB0eSBzdHJpbmcuIFJldHVybiBjdXJyZW50IGRpcmVjdG9yeS4KKyAgICAgICAgIyBFbXB0eSBzdHJpbmcgcHJvY2Vzc2VkIGNvcnJlY3RseSBieSAnY3lncGF0aCcuCisKKyAgICAgICAgcmV0dXJuIHN5c19uYXRpdmVfY3VycmVudF9wYXRoKCk7CisgICAgfQorICAgIGVsc2lmKHNob3VsZF91c2VfY3lncGF0aCgpKSB7CisgICAgICAgICMgJ2N5Z3BhdGgnIGlzIGF2YWlsYWJsZSAtIHVzZSBpdC4KKworICAgICAgICBteSAkaGFzX2ZpbmFsX3NsYXNoID0gKCRwYXRoID1+IG17W1xcL10kfSk7CisKKyAgICAgICAgIyBSZW1vdmUgbGVhZGluZyBkdXBsaWNhdGVkIGZvcndhcmQgYW5kIGJhY2sgc2xhc2hlcywgYXMgdGhleSBtYXkKKyAgICAgICAgIyBwcmV2ZW50IHRyYW5zZm9ybWluZyBhbmQgbWF5IGJlIG5vdCBwcm9jZXNzZWQuCisgICAgICAgICRwYXRoID1+IHN7XihbXFwvXSlbXFwvXSt9eyQxfWc7CisKKyAgICAgICAgcHJpbnQgIkludGVyIHJlc3VsdDogXCIkcGF0aFwiXG4iOworICAgICAgICAjIFVzZSAnY3lncGF0aCcsICctbScgbWVhbnMgV2luMzIgcGF0aCB3aXRoIGZvcndhcmQgc2xhc2hlcywKKyAgICAgICAgIyAnLWEnIG1lYW5zIGFic29sdXRlIHBhdGgKKyAgICAgICAgY2hvbXAoJHBhdGggPSBgY3lncGF0aCAtbSAtYSAnJHBhdGgnYCk7CisgICAgICAgIGlmKCQ/ICE9IDApIHsKKyAgICAgICAgICAgIHdhcm4gIkNhbid0IHJlc29sdmUgcGF0aCBieSB1c3VuZyBcImN5Z3BhdGhcIi5cbiI7CisgICAgICAgICAgICByZXR1cm4gdW5kZWY7CisgICAgICAgIH0KKworICAgICAgICAjICdjeWdwYXRoJyBtYXkgcmVtb3ZlIGxhc3Qgc2xhc2ggZm9yIGV4aXN0aW5nIGRpcmVjdG9yaWVzLgorICAgICAgICAkcGF0aCAuPSAnLycgaWYoJGhhc19maW5hbF9zbGFzaCk7CisKKyAgICAgICAgIyBSZW1vdmUgYW55IGR1cGxpY2F0ZWQgZm9yd2FyZCBzbGFzaGVzIChhZGRlZCBieSAnY3lncGF0aCcgZm9yIHJvb3QKKyAgICAgICAgIyBkaXJlY3RvcmllcykKKyAgICAgICAgJHBhdGggPX4gc3svLyt9ey99ZzsKKworICAgICAgICByZXR1cm4gJHBhdGgKKyAgICB9CisgICAgZWxzaWYoJHBhdGggPX4gc3teKFthLXpBLVpdKTpbL1xcXX17XHUkMTovfSkgeworICAgICAgICAjIFBhdGggaXMgYWxyZWFkeSBpbiBXaW4zMiBmb3JtLiAoJ0M6XHBhdGgnKQorCisgICAgICAgICMgUmVwbGFjZSBhbnkgcG9zc2libGUgYmFjayBzbGFzaGVzIHdpdGggZm9yd2FyZCBzbGFzaGVzLAorICAgICAgICAjIHJlbW92ZSBhbnkgZHVwbGljYXRlZCBzbGFzaGVzLCByZXNvbHZlIHJlbGF0aXZlIGRpcnMuCisgICAgICAgIHJldHVybiBub3JtYWxpemVfcGF0aCgkcGF0aCk7CisgICAgfQorICAgIGVsc2lmKHN1YnN0cigkcGF0aCwgMCwgMSkgZXEgJ1xcJyApIHsKKyAgICAgICAgIyBQYXRoIGlzIGRpcmVjdG9yeSBvciBmaWxlbmFtZSBvbiBXaW4zMiBjdXJyZW50IGRyaXZlLiAoJ1xXaW5kb3dzJykKKworICAgICAgICBteSAkdzMyZHJpdmUgPSBnZXRfd2luMzJfY3VycmVudF9kcml2ZSgpOworICAgICAgICByZXR1cm4gdW5kZWYgdW5sZXNzIGRlZmluZWQgJHczMmRyaXZlOworCisgICAgICAgICMgQ29tYmluZSBkcml2ZSBhbmQgcGF0aC4KKyAgICAgICAgIyBSZXBsYWNlIGFueSBwb3NzaWJsZSBiYWNrIHNsYXNoZXMgd2l0aCBmb3J3YXJkIHNsYXNoZXMsCisgICAgICAgICMgcmVtb3ZlIGFueSBkdXBsaWNhdGVkIHNsYXNoZXMsIHJlc29sdmUgcmVsYXRpdmUgZGlycy4KKyAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZV9wYXRoKCR3MzJkcml2ZSAuICRwYXRoKTsKKyAgICB9CisKKyAgICB1bmxlc3MgKHN1YnN0cigkcGF0aCwgMCwgMSkgZXEgJy8nKSB7CisgICAgICAgICMgUGF0aCBpcyBpbiByZWxhdGl2ZSBmb3JtLiBSZXNvbHZlIHJlbGF0aXZlIGRpcmVjdG9yaWVzIGluIFVuaXggZm9ybQorICAgICAgICAjICpCRUZPUkUqIGNvbnZlcnRpbmcgdG8gV2luMzIgZm9ybSBvdGhlcndpc2UgcGF0aHMgbGlrZQorICAgICAgICAjICcuLi8uLi8uLi9jeWdkcml2ZS9jL3dpbmRvd3MnIHdpbGwgbm90IGJlIHJlc29sdmVkLgorICAgICAgICBteSAkY3VyX2RpciA9IGBwd2QgLUxgOworICAgICAgICBpZigkPyAhPSAwKSB7CisgICAgICAgICAgICB3YXJuICJDYW4ndCBkZXRlcm1pbmUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS5cbiI7CisgICAgICAgICAgICByZXR1cm4gdW5kZWY7CisgICAgICAgIH0KKyAgICAgICAgY2hvbXAoJGN1cl9kaXIpOworCisgICAgICAgICRwYXRoID0gJGN1cl9kaXIgLiAnLycgLiAkcGF0aDsKKyAgICB9CisKKyAgICAjIFJlc29sdmUgcmVsYXRpdmUgZGlycy4KKyAgICAkcGF0aCA9IG5vcm1hbGl6ZV9wYXRoKCRwYXRoKTsKKyAgICByZXR1cm4gdW5kZWYgdW5sZXNzIGRlZmluZWQgJHBhdGg7CisKKyAgICBpZigkXk8gZXEgJ21zeXMnKSB7CisgICAgICAgICMgTXN5cyB0cmFuc2Zvcm1zIGF1dG9tYXRpY2FsbHkgcGF0aCB0byBXaW5kb3dzIG5hdGl2ZSBmb3JtIGluIHN0YXJpbmcKKyAgICAgICAgIyBwcm9ncmFtIHBhcmFtZXRlcnMgaWYgcHJvZ3JhbSBpcyBub3QgTXN5cy1iYXNlZC4KKyAgICAgICAgJHBhdGggPSBkb19tc3lzX3RyYW5zZm9ybSgkcGF0aCk7CisgICAgICAgIHJldHVybiB1bmRlZiB1bmxlc3MgZGVmaW5lZCAkcGF0aDsKKworICAgICAgICAjIFJlcGxhY2UgYW55IGJhY2sgYW5kIGR1cGxpY2F0ZWQgc2xhc2hlcyB3aXRoIHNpbmdsZSBmb3J3YXJkIHNsYXNoZXMuCisgICAgICAgICRwYXRoID1+IHN7W1xcL10rfXsvfWc7CisgICAgICAgIHJldHVybiAkcGF0aDsKKyAgICB9CisgICAgIyBPUyBpcyBXaW5kb3dzLCBidXQgbm90IE1zeXMsIHBhdGggaXMgYWJzb2x1dGUsIHBhdGggaXMgbm90IGluIFdpbjMyCisgICAgIyBmb3JtIGFuZCAnY3lncGF0aCcgaXMgbm90IGF2YWlsYWJsZS4KKworICAgIHJldHVybiBkb19kdW1iX2d1ZXNzZWRfdHJhbnNmb3JtKCRwYXRoKTsKK30KKworIyBJbnRlcm5hbCBmdW5jdGlvbi4gQ29udmVydHMgZ2l2ZW4gVW5peC1zdHlsZSBhYnNvbHV0ZSBwYXRoIHRvIFdpbjMyIGZvcm1hdC4KK3N1YiBzaW1wbGVfdHJhbnNmb3JtX3dpbjMyX3RvX3VuaXg7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIENvbnZlcnRzIGdpdmVuIHBhdGggdG8gYnVpbGQgc3lzdGVtIGZvcm1hdCBhYnNvbHV0ZSBwYXRoLCBpLmUuIHRvCisjIE1zeXMvQ3lnd2luIFVuaXgtc3R5bGUgYWJzb2x1dGUgZm9ybWF0IG9uIFdpbmRvd3MgcGxhdGZvcm0uIEJvdGgKKyMgcmVsYXRpdmUgYW5kIGFic29sdXRlIGZvcm1hdHMgYXJlIHN1cHBvcnRlZCBmb3IgaW5wdXQuCisjCitzdWIgYnVpbGRfc3lzX2Fic19wYXRoIHsKKyAgICBteSAoJHBhdGgpID0gQF87CisKKyAgICB1bmxlc3Mob3NfaXNfd2luKCkpIHsKKyAgICAgICAgIyBDb252ZXJ0IHBhdGggdG8gYWJzb2x1dGUgZm9ybS4KKyAgICAgICAgJHBhdGggPSBDd2Q6OmFic19wYXRoKCRwYXRoKTsKKworICAgICAgICAjIERvIG5vdCBwcm9jZXNzIGZ1cnRoZXIgb24gbm9uLVdpbmRvd3MgcGxhdGZvcm1zLgorICAgICAgICByZXR1cm4gJHBhdGg7CisgICAgfQorCisgICAgaWYoJHBhdGggPX4gbXteKFthLXpBLVpdKTooJHxbXi9cXF0uKiQpfSkgeworICAgICAgICAjIFBhdGggaXMgc2luZ2xlIGRyaXZlIHdpdGggY29sb24gb3IgcmVsYXRpdmUgcGF0aCBvbiBXaW4zMiBkcml2ZS4KKyAgICAgICAgIyAoJ0M6JyBvciAnQzpwYXRoJykKKyAgICAgICAgIyBUaGlzIGtpbmQgb2YgcmVsYXRpdmUgcGF0aCBpcyBub3QgcHJvY2Vzc2VkIGNvcnJlY3RseSBieSAnY3lncGF0aCcuCisgICAgICAgICMgR2V0IHNwZWNpZmllZCBkcml2ZSBsZXR0ZXIKKworICAgICAgICAjIFJlc29sdmUgcmVsYXRpdmUgZGlycyBpbiBXaW4zMi1zdHlsZSBwYXRoIG9yIHBhdGhzIGxpa2UgJ0Q6Ly4uL2MvJworICAgICAgICAjIHdpbGwgYmUgcmVzb2x2ZWQgaW5jb3JyZWN0bHkuCisgICAgICAgICMgUmVwbGFjZSBhbnkgcG9zc2libGUgYmFjayBzbGFzaGVzIHdpdGggZm9yd2FyZCBzbGFzaGVzLAorICAgICAgICAjIHJlbW92ZSBhbnkgZHVwbGljYXRlZCBzbGFzaGVzLgorICAgICAgICAkcGF0aCA9IGdldF9hYnNfcGF0aF9vbl93aW4zMl9kcml2ZSgkMSwgJDIpOworICAgICAgICByZXR1cm4gdW5kZWYgdW5sZXNzIGRlZmluZWQgJHBhdGg7CisKKyAgICAgICAgcmV0dXJuIHNpbXBsZV90cmFuc2Zvcm1fd2luMzJfdG9fdW5peCgkcGF0aCk7CisgICAgfQorICAgIGVsc2lmKCRwYXRoIGVxICcnKSB7CisgICAgICAgICMgUGF0aCBpcyBlbXB0eSBzdHJpbmcuIFJldHVybiBjdXJyZW50IGRpcmVjdG9yeS4KKyAgICAgICAgIyBFbXB0eSBzdHJpbmcgcHJvY2Vzc2VkIGNvcnJlY3RseSBieSAnY3lncGF0aCcuCisKKyAgICAgICAgY2hvbXAoJHBhdGggPSBgcHdkIC1MYCk7CisgICAgICAgIGlmKCQ/ICE9IDApIHsKKyAgICAgICAgICAgIHdhcm4gIkNhbid0IGRldGVybWluZSBVbml4LXN0eWxlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuXG4iOworICAgICAgICAgICAgcmV0dXJuIHVuZGVmOworICAgICAgICB9CisKKyAgICAgICAgIyBBZGQgZmluYWwgc2xhc2ggaWYgbm90IGF0IHJvb3QgZGlyLgorICAgICAgICAkcGF0aCAuPSAnLycgaWYgbGVuZ3RoKCRwYXRoKSA+IDI7CisgICAgICAgIHJldHVybiAkcGF0aDsKKyAgICB9CisgICAgZWxzaWYoc2hvdWxkX3VzZV9jeWdwYXRoKCkpIHsKKyAgICAgICAgIyAnY3lncGF0aCcgaXMgYXZhbGFibGUgLSB1c2UgaXQuCisKKyAgICAgICAgbXkgJGhhc19maW5hbF9zbGFzaCA9ICgkcGF0aCA9fiBte1tcXC9dJH0pOworCisgICAgICAgICMgUmVzb2x2ZSByZWxhdGl2ZSBkaXJlY3RvcmllcywgYXMgdGhleSBtYXkgYmUgbm90IHJlc29sdmVkIGZvciAKKyAgICAgICAgIyBVbml4LXN0eWxlIHBhdGhzLgorICAgICAgICAjIFJlbW92ZSBkdXBsaWNhdGVkIHNsYXNoZXMsIGFzIHRoZXkgbWF5IGJlIG5vdCBwcm9jZXNzZWQuCisgICAgICAgICRwYXRoID0gbm9ybWFsaXplX3BhdGgoJHBhdGgpOworICAgICAgICByZXR1cm4gdW5kZWYgdW5sZXNzIGRlZmluZWQgJHBhdGg7CisKKyAgICAgICAgIyBVc2UgJ2N5Z3BhdGgnLCAnLXUnIG1lYW5zIFVuaXgtc3RpbGUgcGF0aCwKKyAgICAgICAgIyAnLWEnIG1lYW5zIGFic29sdXRlIHBhdGgKKyAgICAgICAgY2hvbXAoJHBhdGggPSBgY3lncGF0aCAtdSAtYSAnJHBhdGgnYCk7CisgICAgICAgIGlmKCQ/ICE9IDApIHsKKyAgICAgICAgICAgIHdhcm4gIkNhbid0IHJlc29sdmUgcGF0aCBieSB1c3VuZyBcImN5Z3BhdGhcIi5cbiI7CisgICAgICAgICAgICByZXR1cm4gdW5kZWY7CisgICAgICAgIH0KKworICAgICAgICAjICdjeWdwYXRoJyByZW1vdmVzIGxhc3Qgc2xhc2ggaWYgcGF0aCBpcyByb290IGRpciBvbiBXaW4zMiBkcml2ZS4KKyAgICAgICAgIyBSZXN0b3JlIGl0LgorICAgICAgICAkcGF0aCAuPSAnLycgaWYoJGhhc19maW5hbF9zbGFzaCAmJgorICAgICAgICAgICAgICAgICAgICAgICAgc3Vic3RyKCRwYXRoLCBsZW5ndGgoJHBhdGgpIC0gMSwgMSkgbmUgJy8nKTsKKworICAgICAgICByZXR1cm4gJHBhdGgKKyAgICB9CisgICAgZWxzaWYoJHBhdGggPX4gbXteW2EtekEtWl06Wy9cXF19KSB7CisgICAgICAgICMgUGF0aCBpcyBhbHJlYWR5IGluIFdpbjMyIGZvcm0uICgnQzpccGF0aCcpCisKKyAgICAgICAgIyBSZXNvbHZlIHJlbGF0aXZlIGRpcnMgaW4gV2luMzItc3R5bGUgcGF0aCBvdGhlcndpc2UgcGF0aHMKKyAgICAgICAgIyBsaWtlICdEOi8uLi9jLycgd2lsbCBiZSByZXNvbHZlZCBpbmNvcnJlY3RseS4KKyAgICAgICAgIyBSZXBsYWNlIGFueSBwb3NzaWJsZSBiYWNrIHNsYXNoZXMgd2l0aCBmb3J3YXJkIHNsYXNoZXMsCisgICAgICAgICMgcmVtb3ZlIGFueSBkdXBsaWNhdGVkIHNsYXNoZXMuCisgICAgICAgICRwYXRoID0gbm9ybWFsaXplX3BhdGgoJHBhdGgpOworICAgICAgICByZXR1cm4gdW5kZWYgdW5sZXNzIGRlZmluZWQgJHBhdGg7CisKKyAgICAgICAgcmV0dXJuIHNpbXBsZV90cmFuc2Zvcm1fd2luMzJfdG9fdW5peCgkcGF0aCk7CisgICAgfQorICAgIGVsc2lmKHN1YnN0cigkcGF0aCwgMCwgMSkgZXEgJ1xcJykgeworICAgICAgICAjIFBhdGggaXMgZGlyZWN0b3J5IG9yIGZpbGVuYW1lIG9uIFdpbjMyIGN1cnJlbnQgZHJpdmUuICgnXFdpbmRvd3MnKQorCisgICAgICAgIG15ICR3MzJkcml2ZSA9IGdldF93aW4zMl9jdXJyZW50X2RyaXZlKCk7CisgICAgICAgIHJldHVybiB1bmRlZiB1bmxlc3MgZGVmaW5lZCAkdzMyZHJpdmU7CisKKyAgICAgICAgIyBDb21iaW5lIGRyaXZlIGFuZCBwYXRoLgorICAgICAgICAjIFJlc29sdmUgcmVsYXRpdmUgZGlycyBpbiBXaW4zMi1zdHlsZSBwYXRoIG9yIHBhdGhzIGxpa2UgJ0Q6Ly4uL2MvJworICAgICAgICAjIHdpbGwgYmUgcmVzb2x2ZWQgaW5jb3JyZWN0bHkuCisgICAgICAgICMgUmVwbGFjZSBhbnkgcG9zc2libGUgYmFjayBzbGFzaGVzIHdpdGggZm9yd2FyZCBzbGFzaGVzLAorICAgICAgICAjIHJlbW92ZSBhbnkgZHVwbGljYXRlZCBzbGFzaGVzLgorICAgICAgICAkcGF0aCA9IG5vcm1hbGl6ZV9wYXRoKCR3MzJkcml2ZSAuICRwYXRoKTsKKyAgICAgICAgcmV0dXJuIHVuZGVmIHVubGVzcyBkZWZpbmVkICRwYXRoOworCisgICAgICAgIHJldHVybiBzaW1wbGVfdHJhbnNmb3JtX3dpbjMyX3RvX3VuaXgoJHBhdGgpOworICAgIH0KKworICAgICMgUGF0aCBpcyBub3QgaW4gYW55IFdpbjMyIGZvcm0uCisgICAgdW5sZXNzIChzdWJzdHIoJHBhdGgsIDAsIDEpIGVxICcvJykgeworICAgICAgICAjIFBhdGggaW4gcmVsYXRpdmUgZm9ybS4gUmVzb2x2ZSByZWxhdGl2ZSBkaXJlY3RvcmllcyBpbiBVbml4IGZvcm0KKyAgICAgICAgIyAqQkVGT1JFKiBjb252ZXJ0aW5nIHRvIFdpbjMyIGZvcm0gb3RoZXJ3aXNlIHBhdGhzIGxpa2UKKyAgICAgICAgIyAnLi4vLi4vLi4vY3lnZHJpdmUvYy93aW5kb3dzJyB3aWxsIG5vdCBiZSByZXNvbHZlZC4KKyAgICAgICAgbXkgJGN1cl9kaXIgPSBgcHdkIC1MYDsKKyAgICAgICAgaWYoJD8gIT0gMCkgeworICAgICAgICAgICAgd2FybiAiQ2FuJ3QgZGV0ZXJtaW5lIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuXG4iOworICAgICAgICAgICAgcmV0dXJuIHVuZGVmOworICAgICAgICB9CisgICAgICAgIGNob21wKCRjdXJfZGlyKTsKKworICAgICAgICAkcGF0aCA9ICRjdXJfZGlyIC4gJy8nIC4gJHBhdGg7CisgICAgfQorCisgICAgcmV0dXJuIG5vcm1hbGl6ZV9wYXRoKCRwYXRoKTsKK30KKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgUGVyZm9ybXMgcGF0aCAibm9ybWFsaXphdGlvbiI6IGFsbCBzbGFzaGVzIGNvbnZlcnRlZCB0byBmb3J3YXJkCisjIHNsYXNoZXMgKGV4Y2VwdCBsZWFkaW5nIHNsYXNoKSwgYWxsIGR1cGxpY2F0ZWQgc2xhc2hlcyBhcmUgcmVwbGFjZWQKKyMgd2l0aCBzaW5nbGUgc2xhc2hlcywgYWxsIHJlbGF0aXZlIGRpcmVjdG9yaWVzICgnLi8nIGFuZCAnLi4vJykgYXJlCisjIHJlc29sdmVkIGlmIHBvc3NpYmxlLgorIyBQYXRoIHByb2Nlc3NlZCBhcyBzdHJpbmcsIGRpcmVjdG9yaWVzIGFyZSBub3QgY2hlY2tlZCBmb3IgcHJlc2VuY2Ugc28KKyMgcGF0aCBmb3Igbm90IHlldCBleGlzdGluZyBkaXJlY3RvcnkgY2FuIGJlICJub3JtYWxpemVkIi4KKyMKK3N1YiBub3JtYWxpemVfcGF0aCB7CisgICAgbXkgKCRwYXRoKSA9IEBfOworCisgICAgIyBEb24ndCBwcm9jZXNzIGVtcHR5IHBhdGhzLgorICAgIHJldHVybiAkcGF0aCBpZiAkcGF0aCBlcSAnJzsKKworICAgIHVubGVzcygkcGF0aCA9fiBteyg/Ol58XFx8LylcLnsxLDJ9KD86XFx8L3wkKX0pIHsKKyAgICAgICAgIyBTcGVlZCB1cCBwcm9jZXNzaW5nIG9mIHNpbXBsZSBwYXRocy4KKyAgICAgICAgbXkgJGZpcnN0X2NoYXIgPSBzdWJzdHIoJHBhdGgsIDAsIDEpOworICAgICAgICAkcGF0aCA9fiBze1tcXC9dK317L31nOworICAgICAgICAjIFJlc3RvcmUgc3RhcnRpbmcgYmFja3NsYXNoIGlmIGFueS4KKyAgICAgICAgc3Vic3RyKCRwYXRoLCAwLCAxKSA9ICRmaXJzdF9jaGFyOworICAgICAgICByZXR1cm4gJHBhdGg7CisgICAgfQorCisgICAgbXkgQGFycjsKKyAgICBteSAkcHJlZml4OworICAgIG15ICRoYXZlX3Jvb3QgPSAwOworCisgICAgIyBDaGVjayB3aGV0aGVyIHBhdGggc3RhcnRzIGZyb20gV2luMzIgZHJpdmUuICgnQzpwYXRoJyBvciAnQzpccGF0aCcpCisgICAgaWYoJHBhdGggPX4gbXteKFthLXpBLVpdOigvfFxcKT8pKC4qJCl9KSB7CisgICAgICAgICRwcmVmaXggPSAkMTsKKyAgICAgICAgJGhhdmVfcm9vdCA9IDEgaWYgZGVmaW5lZCAkMjsKKyAgICAgICAgIyBQcm9jZXNzIHBhdGggc2VwYXJhdGVseSBmcm9tIGRyaXZlIGxldHRlci4KKyAgICAgICAgQGFyciA9IHNwbGl0KG17XC98XFx9LCAkMyk7CisgICAgICAgICMgUmVwbGFjZSBiYWNrc2xhc2ggd2l0aCBmb3J3YXJkIHNsYXNoIGlmIHJlcXVpcmVkLgorICAgICAgICBzdWJzdHIoJHByZWZpeCwgMiwgMSkgPSAnLycgaWYgJGhhdmVfcm9vdDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGlmKCRwYXRoID1+IG17XihcL3xcXCl9KSB7CisgICAgICAgICAgICAkaGF2ZV9yb290ID0gMTsKKyAgICAgICAgICAgICRwcmVmaXggPSAkMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICRwcmVmaXggPSAnJzsKKyAgICAgICAgfQorICAgICAgICBAYXJyID0gc3BsaXQobXtcL3xcXH0sICRwYXRoKTsKKyAgICB9CisKKyAgICBteSAkcCA9IDA7CisgICAgbXkgQHJlczsKKworICAgIGZvciBteSAkZWwgKEBhcnIpIHsKKyAgICAgICAgaWYobGVuZ3RoKCRlbCkgPT0gMCB8fCAkZWwgZXEgJy4nKSB7CisgICAgICAgICAgICBuZXh0OworICAgICAgICB9CisgICAgICAgIGVsc2lmKCRlbCBlcSAnLi4nICYmIEByZXMgPiAwICYmICRyZXNbJCNyZXNdIG5lICcuLicpIHsKKyAgICAgICAgICAgIHBvcCBAcmVzOworICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgfQorICAgICAgICBwdXNoIEByZXMsICRlbDsKKyAgICB9CisgICAgaWYoJGhhdmVfcm9vdCAmJiBAcmVzID4gMCAmJiAkcmVzWzBdIGVxICcuLicpIHsKKyAgICAgICAgd2FybiAiRXJyb3IgcHJvY2Vzc2luZyBwYXRoIFwiJHBhdGhcIjogIiAuCisgICAgICAgICAgICAgIlBhcmVudCBkaXJlY3Rvcnkgb2Ygcm9vdCBkaXJlY3RvcnkgZG9lcyBub3QgZXhpc3QhXG4iOworICAgICAgICByZXR1cm4gdW5kZWY7CisgICAgfQorCisgICAgbXkgJHJldCA9ICRwcmVmaXggLiBqb2luKCcvJywgQHJlcyk7CisgICAgJHJldCAuPSAnLycgaWYoJHBhdGggPX4gbXtcXCR8LyR9ICYmIHNjYWxhciBAcmVzID4gMCk7CisKKyAgICByZXR1cm4gJHJldDsKK30KKworIyBJbnRlcm5hbCBmdW5jdGlvbi4gQ29udmVydHMgcGF0aCBieSB1c2luZyBNc3lzJ3MgYnVpbHQtaW4KKyMgdHJhbnNmb3JtYXRpb24uCitzdWIgZG9fbXN5c190cmFuc2Zvcm0geworICAgIG15ICgkcGF0aCkgPSBAXzsKKyAgICByZXR1cm4gdW5kZWYgaWYgJF5PIG5lICdtc3lzJzsKKyAgICByZXR1cm4gJHBhdGggaWYgJHBhdGggZXEgJyc7CisKKyAgICAjIFJlbW92ZSBsZWFkaW5nIGRvdWJsZSBmb3J3YXJkIHNsYXNoZXMsIGFzIHRoZXkgdHVybiBvZmYgTXN5cworICAgICMgdHJhbnNmb3JtaW5nLgorICAgICRwYXRoID1+IHN7Xi9bL1xcXSt9ey99OworCisgICAgIyBNc3lzIHRyYW5zZm9ybXMgYXV0b21hdGljYWxseSBwYXRoIHRvIFdpbmRvd3MgbmF0aXZlIGZvcm0gaW4gc3RhcmluZworICAgICMgcHJvZ3JhbSBwYXJhbWV0ZXJzIGlmIHByb2dyYW0gaXMgbm90IE1zeXMtYmFzZWQuCisgICAgIyBOb3RlOiBhbHJlYWR5IGNoZWNrZWQgdGhhdCAkcGF0aCBpcyBub24tZW1wdHkuCisgICAgJHBhdGggPSBgY21kIC8vYyBlY2hvICckcGF0aCdgOworICAgIGlmKCQ/ICE9IDApIHsKKyAgICAgICAgd2FybiAiQ2FuJ3QgdHJhbnNmb3JtIHBhdGggaW50byBXaW4zMiBmb3JtIGJ5IHVzaW5nIE1zeXMiIC4KKyAgICAgICAgICAgICAiaW50ZXJuYWwgdHJhbnNmb3JtYXRpb24uXG4iOworICAgICAgICByZXR1cm4gdW5kZWY7CisgICAgfQorCisgICAgIyBSZW1vdmUgZG91YmxlIHF1b3RlcywgdGhleSBhcmUgYWRkZWQgZm9yIHBhdGhzIHdpdGggc3BhY2VzLAorICAgICMgcmVtb3ZlIGJvdGggJ1xyJyBhbmQgJ1xuJy4KKyAgICAkcGF0aCA9fiBze15cInxcIiR8XCJccnxcbnxccn17fWc7CisKKyAgICByZXR1cm4gJHBhdGg7Cit9CisKKyMgSW50ZXJuYWwgZnVuY3Rpb24uIEdldHMgdHdvIHBhcmFtZXRlcnM6IGZpcnN0IHBhcmFtZXRlciBtdXN0IGJlIHNpbmdsZQorIyBkcml2ZSBsZXR0ZXIgKCdjJyksIHNlY29uZCBvcHRpb25hbCBwYXJhbWV0ZXIgaXMgcGF0aCByZWxhdGl2ZSB0byBkcml2ZSdzIAorIyBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LiBSZXR1cm5zIFdpbjMyIGFic29sdXRlIG5vcm1hbGl6ZWQgcGF0aC4KK3N1YiBnZXRfYWJzX3BhdGhfb25fd2luMzJfZHJpdmUgeworICAgIG15ICgkZHJ2LCAkcmVsX3BhdGgpID0gQF87CisgICAgbXkgJHJlczsKKworICAgICMgR2V0IGN1cnJlbnQgZGlyZWN0b3J5IG9uIHNwZWNpZmllZCBkcml2ZS4KKyAgICAjICIvYzsiIGlzIGNvbXBhdGlibGUgd2l0aCBib3RoIE1zeXMgYW5kIEN5Z3dpbi4KKyAgICBteSAkY3VyX2Rpcl9vbl9kcnYgPSBgY21kICIvYzsiIGVjaG8gJT0kZHJ2OiVgOworICAgIGlmKCQ/ICE9IDApIHsKKyAgICAgICAgd2FybiAiQ2FuJ3QgZGV0ZXJtaW5lIFdpbjMyIGN1cnJlbnQgZGlyZWN0b3J5IG9uIGRyaXZlICRkcnY6LlxuIjsKKyAgICAgICAgcmV0dXJuIHVuZGVmOworICAgIH0KKworICAgIGlmKCRjdXJfZGlyX29uX2RydiA9fiBte15bJV19KSB7CisgICAgICAgICMgQ3VycmVudCBkaXJlY3Rvcnkgb24gZHJpdmUgaXMgbm90IHNldCwgZGVmYXVsdCBpcworICAgICAgICAjIHJvb3QgZGlyZWN0b3J5LgorCisgICAgICAgICRyZXMgPSB1Y2ZpcnN0KCRkcnYpIC4gJzovJzsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgICMgQ3VycmVudCBkaXJlY3Rvcnkgb24gZHJpdmUgd2FzIHNldC4KKyAgICAgICAgIyBSZW1vdmUgYm90aCAnXHInIGFuZCAnXG4nLgorICAgICAgICAkY3VyX2Rpcl9vbl9kcnYgPX4gc3tcbnxccn17fWc7CisKKyAgICAgICAgIyBBcHBlbmQgcmVsYXRpdmUgcGF0aCBwYXJ0LgorICAgICAgICAkcmVzID0gJGN1cl9kaXJfb25fZHJ2IC4gJy8nOworICAgIH0KKyAgICAkcmVzIC49ICRyZWxfcGF0aCBpZiBkZWZpbmVkICRyZWxfcGF0aDsKKworICAgICMgUmVwbGFjZSBhbnkgcG9zc2libGUgYmFjayBzbGFzaGVzIHdpdGggZm9yd2FyZCBzbGFzaGVzLAorICAgICMgcmVtb3ZlIGFueSBkdXBsaWNhdGVkIHNsYXNoZXMsIHJlc29sdmUgcmVsYXRpdmUgZGlycy4KKyAgICByZXR1cm4gbm9ybWFsaXplX3BhdGgoJHJlcyk7Cit9CisKKyMgSW50ZXJuYWwgZnVuY3Rpb24uIFRyaWVzIHRvIGZpbmQgb3IgZ3Vlc3MgV2luMzIgdmVyc2lvbiBvZiBnaXZlbgorIyBhYnNvbHV0ZSBVbml4LXN0eWxlIHBhdGguIE90aGVyIHR5cGVzIG9mIHBhdGhzIGFyZSBub3Qgc3VwcG9ydGVkLgorIyBSZXR1cm5lZCBwYXRocyBjb250YWluIG9ubHkgc2luZ2xlIGZvcndhcmQgc2xhc2hlcyAobm8gYmFjayBhbmQKKyMgZHVwbGljYXRlZCBzbGFzaGVzKS4KKyMgTGFzdCByZXNvcnQuIFVzZWQgb25seSB3aGVuIG90aGVyIHRyYW5zZm9ybWF0aW9ucyBhcmUgbm90IGF2YWlsYWJsZS4KK3N1YiBkb19kdW1iX2d1ZXNzZWRfdHJhbnNmb3JtIHsKKyAgICBteSAoJHBhdGgpID0gQF87CisKKyAgICAjIFJlcGxhY2UgYW55IHBvc3NpYmxlIGJhY2sgc2xhc2hlcyBhbmQgZHVwbGljYXRlZCBmb3J3YXJkIHNsYXNoZXMKKyAgICAjIHdpdGggc2luZ2xlIGZvcndhcmQgc2xhc2hlcy4KKyAgICAkcGF0aCA9fiBze1svXFxdK317L31nOworCisgICAgIyBFbXB0eSBwYXRoIGlzIG5vdCB2YWxpZC4KKyAgICByZXR1cm4gdW5kZWYgaWYgKGxlbmd0aCgkcGF0aCkgPT0gMCk7CisKKyAgICAjIFJFIHRvIGZpbmQgV2luMzIgZHJpdmUgbGV0dGVyCisgICAgbXkgJGRydl9sdHJfcmUgPSBkcml2ZXNfbW91bnRlZF9vbl9jeWdkcml2ZSgpID8KKyAgICAgICAgICAgICAgICAgICAgICAgIHFye14vY3lnZHJpdmUvKFthLXpBLVpdKSgkfC8uKiQpfSA6CisgICAgICAgICAgICAgICAgICAgICAgICBxcnteLyhbYS16QS1aXSkoJHwvLiokKX07CisKKyAgICAjIENoZWNrIHBhdGggd2hldGhlciBwYXRoIGlzIFdpbjMyIGRpcmVjdGx5IG1hcHBlZCBkcml2ZSBhbmQgdHJ5IHRvCisgICAgIyB0cmFuc2Zvcm0gaXQgYXNzdW1pbmcgdGhhdCBkcml2ZSBsZXR0ZXIgaXMgbWF0Y2hlZCB0byBXaW4zMiBkcml2ZSBsZXR0ZXIuCisgICAgaWYoJHBhdGggPX4gbXskZHJ2X2x0cl9yZX0pIHsKKyAgICAgICAgcmV0dXJuIHVjZmlyc3QoJDEpIC4gJzovJyBpZihsZW5ndGgoJDIpID09IDApOworICAgICAgICByZXR1cm4gdWNmaXJzdCgkMSkgLiAnOicgLiAkMjsKKyAgICB9CisKKyAgICAjIFRoaXMgbWF5IGJlIHNvbWUgY3VzdG9tIG1hcHBlZCBwYXRoLiAoJy9teW1vdW50L3BhdGgnKQorCisgICAgIyBNdXN0IGNoZWNrIGxvbmdlc3QgcG9zc2libGUgcGF0aCBjb21wb25lbnQgYXMgc3ViZGlyIGNhbiBiZSBtYXBwZWQgdG8KKyAgICAjIGRpZmZlcmVudCBkaXJlY3RvcnkuIEZvciBleGFtcGxlICcvdXNyL2Jpbi8nIGNhbiBiZSBtYXBwZWQgdG8gJy9iaW4vJyBvcgorICAgICMgJy9iaW4vJyBjYW4gYmUgbWFwcGVkIHRvICcvdXNyL2Jpbi8nLgorICAgIG15ICRjaGVja19wYXRoID0gJHBhdGg7CisgICAgbXkgJHBhdGhfdGFpbCA9ICcnOworICAgIGRvIHsKKyAgICAgICAgaWYoLWQgJGNoZWNrX3BhdGgpIHsKKyAgICAgICAgICAgIG15ICRyZXMgPQorICAgICAgICAgICAgICAgIGAoY2QgIiRjaGVja19wYXRoIiAmJiBjbWQgL2MgImVjaG8gJV9fQ0RfXyUiKSAyPi9kZXYvbnVsbGA7CisgICAgICAgICAgICBpZigkPyA9PSAwICYmIHN1YnN0cigkcGF0aCwgMCwgMSkgbmUgJyUnKSB7CisgICAgICAgICAgICAgICAgIyBSZW1vdmUgYm90aCAnXHInIGFuZCAnXG4nLgorICAgICAgICAgICAgICAgICRyZXMgPX4gc3tcbnxccn17fWc7CisKKyAgICAgICAgICAgICAgICAjIFJlcGxhY2UgYWxsIGJhY2sgc2xhc2hlcyB3aXRoIGZvcndhcmQgc2xhc2hlcy4KKyAgICAgICAgICAgICAgICAkcmVzID1+IHN7XFx9ey99ZzsKKworICAgICAgICAgICAgICAgIGlmKGxlbmd0aCgkcGF0aF90YWlsKSA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRyZXMgLiAkcGF0aF90YWlsOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgJHJlcyA9fiBzey8kfXt9IHVubGVzcyAkY2hlY2tfcGF0aCA9fiBtey8kfTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRyZXM7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmKCRjaGVja19wYXRoID1+IG17KF4uKi8pKFteL10rLyopfSkgeworICAgICAgICAgICAgJGNoZWNrX3BhdGggPSAkMTsKKyAgICAgICAgICAgICRwYXRoX3RhaWwgPSAkMiAuICRwYXRoX3RhaWw7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAjIFNob3VsZG4ndCBoYXBwZW5zIGFzIHJvb3QgJy8nIGRpcmVjdG9yeSBzaG91bGQgYWx3YXlzCisgICAgICAgICAgICAjIGJlIHJlc29sdmFibGUuCisgICAgICAgICAgICB3YXJuICJDYW4ndCBkZXRlcm1pbmUgV2luMzIgZGlyZWN0b3J5IGZvciBwYXRoIFwiJHBhdGhcIi5cbiI7CisgICAgICAgICAgICByZXR1cm4gdW5kZWY7CisgICAgICAgIH0KKyAgICB9IHdoaWxlKDEpOworfQorCisKKyMgSW50ZXJuYWwgZnVuY3Rpb24uIENvbnZlcnRzIGdpdmVuIFVuaXgtc3R5bGUgYWJzb2x1dGUgcGF0aCB0byBXaW4zMiBmb3JtYXQuCitzdWIgc2ltcGxlX3RyYW5zZm9ybV93aW4zMl90b191bml4IHsKKyAgICBteSAoJHBhdGgpID0gQF87CisKKyAgICBpZihzaG91bGRfdXNlX2N5Z3BhdGgoKSkgeworICAgICAgICAjICdjeWdwYXRoJyBnaXZlcyBwcmVjaXNlIHJlc3VsdC4KKyAgICAgICAgbXkgJHJlczsKKyAgICAgICAgY2hvbXAoJHJlcyA9IGBjeWdwYXRoIC1hIC11ICckcGF0aCdgKTsKKyAgICAgICAgaWYoJD8gIT0gMCkgeworICAgICAgICAgICAgd2FybiAiQ2FuJ3QgZGV0ZXJtaW5lIFVuaXgtc3R5bGUgZGlyZWN0b3J5IGZvciBXaW4zMiAiIC4KKyAgICAgICAgICAgICAgICAgImRpcmVjdG9yeSBcIiRwYXRoXCIuXG4iOworICAgICAgICAgICAgcmV0dXJuIHVuZGVmOworICAgICAgICB9CisKKyAgICAgICAgIyAnY3lncGF0aCcgcmVtb3ZlcyBsYXN0IHNsYXNoIGlmIHBhdGggaXMgcm9vdCBkaXIgb24gV2luMzIgZHJpdmUuCisgICAgICAgICRyZXMgLj0gJy8nIGlmKHN1YnN0cigkcmVzLCBsZW5ndGgoJHJlcykgLSAxLCAxKSBuZSAnLycgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgJHBhdGggPX4gbXtbL1xcXSR9KTsKKyAgICAgICAgcmV0dXJuICRyZXM7CisgICAgfQorCisgICAgIyAnY3lncGF0aCcgaXMgbm90IGF2YWlsYWJsZSwgdXNlIGd1ZXNzZWQgdHJhbnNmb3JtYXRpb24uCisgICAgdW5sZXNzKCRwYXRoID1+IHN7XihbYS16QS1aXSk6KD86L3xcXCl9ey9cbCQxL30pIHsKKyAgICAgICAgd2FybiAiQ2FuJ3QgZGV0ZXJtaW5lIFVuaXgtc3R5bGUgZGlyZWN0b3J5IGZvciBXaW4zMiAiIC4KKyAgICAgICAgICAgICAiZGlyZWN0b3J5IFwiJHBhdGhcIi5cbiI7CisgICAgICAgIHJldHVybiB1bmRlZjsKKyAgICB9CisKKyAgICAkcGF0aCA9ICcvY3lnZHJpdmUnIC4gJHBhdGggaWYoZHJpdmVzX21vdW50ZWRfb25fY3lnZHJpdmUoKSk7CisgICAgcmV0dXJuICRwYXRoOworfQorCisxOyAgICAjIEVuZCBvZiBtb2R1bGUKZGlmZiAtLWdpdCBhL3Rlc3RzL3J0c3BzZXJ2ZXIucGwgYi90ZXN0cy9ydHNwc2VydmVyLnBsCmluZGV4IDA3YTU4OGUuLmJkZGNjYjkgMTAwNzU1Ci0tLSBhL3Rlc3RzL3J0c3BzZXJ2ZXIucGwKKysrIGIvdGVzdHMvcnRzcHNlcnZlci5wbApAQCAtMTAsNyArMTAsNyBAQAogIwogIyBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogIyB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0jIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisjIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogIwogIyBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICMgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS90ZXN0cy9ydW50ZXN0cy4xIGIvdGVzdHMvcnVudGVzdHMuMQppbmRleCBjYjc2NWE2Li41NTc2YjJmIDEwMDY0NAotLS0gYS90ZXN0cy9ydW50ZXN0cy4xCisrKyBiL3Rlc3RzL3J1bnRlc3RzLjEKQEAgLTksNyArOSw3IEBACiAuXCIgKgogLlwiICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKIC5cIiAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLS5cIiAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisuXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KIC5cIiAqCiAuXCIgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKIC5cIiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvdGVzdHMvcnVudGVzdHMucGwgYi90ZXN0cy9ydW50ZXN0cy5wbAppbmRleCAwMTAxMDkxLi41ZDEzZmM4IDEwMDc1NQotLS0gYS90ZXN0cy9ydW50ZXN0cy5wbAorKysgYi90ZXN0cy9ydW50ZXN0cy5wbApAQCAtMTAsNyArMTAsNyBAQAogIwogIyBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogIyB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0jIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisjIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogIwogIyBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICMgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0xMDUsNiArMTA1LDggQEAKICAgICBzc2h2ZXJzaW9uaW5mbwogICAgICk7CiAKK3VzZSBwYXRoaGVscDsKKwogcmVxdWlyZSAiZ2V0cGFydC5wbSI7ICMgYXJyYXkgZnVuY3Rpb25zCiByZXF1aXJlICJ2YWxncmluZC5wbSI7ICMgdmFsZ3JpbmQgcmVwb3J0IHBhcnNlcgogcmVxdWlyZSAiZnRwLnBtIjsKQEAgLTE5OSw4ICsyMDEsOCBAQAogbXkgJGdkYiA9IGNoZWNrdGVzdGNtZCgiZ2RiIik7CiBteSAkaHR0cHRsc3NydiA9IGZpbmRfaHR0cHRsc3NydigpOwogCi1teSAkc3NsX3ZlcnNpb247ICAgICMgc2V0IGlmIGxpYmN1cmwgaXMgYnVpbHQgd2l0aCBTU0wgc3VwcG9ydAotbXkgJGxhcmdlX2ZpbGU7ICAgICAjIHNldCBpZiBsaWJjdXJsIGlzIGJ1aWx0IHdpdGggbGFyZ2UgZmlsZSBzdXBwb3J0CitteSAkaGFzX3NzbDsgICAgICAgICMgc2V0IGlmIGxpYmN1cmwgaXMgYnVpbHQgd2l0aCBTU0wgc3VwcG9ydAorbXkgJGhhc19sYXJnZWZpbGU7ICAjIHNldCBpZiBsaWJjdXJsIGlzIGJ1aWx0IHdpdGggbGFyZ2UgZmlsZSBzdXBwb3J0CiBteSAkaGFzX2lkbjsgICAgICAgICMgc2V0IGlmIGxpYmN1cmwgaXMgYnVpbHQgd2l0aCBJRE4gc3VwcG9ydAogbXkgJGh0dHBfaXB2NjsgICAgICAjIHNldCBpZiBIVFRQIHNlcnZlciBoYXMgSVB2NiBzdXBwb3J0CiBteSAkaHR0cF91bml4OyAgICAgICMgc2V0IGlmIEhUVFAgc2VydmVyIGhhcyBVbml4IHNvY2tldHMgc3VwcG9ydApAQCAtMjI0LDYgKzIyNiw3IEBACiBteSAkaGFzX2NyeXB0bzsgICAgICMgc2V0IGlmIGxpYmN1cmwgaXMgYnVpbHQgd2l0aCBjcnlwdG9ncmFwaGljIHN1cHBvcnQKIG15ICRoYXNfY2FyZXM7ICAgICAgIyBzZXQgaWYgYnVpbHQgd2l0aCBjLWFyZXMKIG15ICRoYXNfdGhyZWFkZWRyZXM7IyBzZXQgaWYgYnVpbHQgd2l0aCB0aHJlYWRlZCByZXNvbHZlcgorbXkgJGhhc19wc2w7ICAgICAgICAjIHNldCBpZiBsaWJjdXJsIGlzIGJ1aWx0IHdpdGggUFNMIHN1cHBvcnQKIAogIyB0aGlzIHZlcnNpb24gaXMgZGVjaWRlZCBieSB0aGUgcGFydGljdWxhciBuZ2h0dHAyIGxpYnJhcnkgdGhhdCBpcyBiZWluZyB1c2VkCiBteSAkaDJjdmVyID0gImgyYyI7CkBAIC0yMzcsNyArMjQwLDggQEAKIG15ICRoYXNfd2luc3NsOyAgICAgIyBidWlsdCB3aXRoIFdpblNTTCAgICAoU2VjdXJlIENoYW5uZWwgYWthIFNjaGFubmVsKQogbXkgJGhhc19kYXJ3aW5zc2w7ICAjIGJ1aWx0IHdpdGggRGFyd2luU1NMIChTZWN1cmUgVHJhbnNwb3J0KQogbXkgJGhhc19ib3Jpbmdzc2w7ICAjIGJ1aWx0IHdpdGggQm9yaW5nU1NMCi1teSAkaGFzX2xpYnJlc3NsOyAgICMgYnVpbHQgd2l0aCBsaWJyZXNzbCAKK215ICRoYXNfbGlicmVzc2w7ICAgIyBidWlsdCB3aXRoIGxpYnJlc3NsCitteSAkaGFzX21iZWR0bHM7ICAgICMgYnVpbHQgd2l0aCBtYmVkVExTCiAKIG15ICRoYXNfc3NscGlubmluZzsgIyBidWlsdCB3aXRoIGEgVExTIGJhY2tlbmQgdGhhdCBzdXBwb3J0cyBwaW5uaW5nCiAKQEAgLTM5Nyw3ICs0MDEsNyBAQAogc3ViIGNoZWNrZGllZCB7CiAgICAgdXNlIFBPU0lYICI6c3lzX3dhaXRfaCI7CiAgICAgbXkgJHBpZCA9ICRfWzBdOwotICAgIGlmKG5vdCBkZWZpbmVkICRwaWQgfHwgJHBpZCA8PSAwKSB7CisgICAgaWYoKG5vdCBkZWZpbmVkICRwaWQpIHx8ICRwaWQgPD0gMCkgewogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgbXkgJHJjID0gd2FpdHBpZCgkcGlkLCAmV05PSEFORyk7CkBAIC0yMzA5LDI3ICsyMzEzLDExIEBACiAgICAgICAgICAgICAkY3VybCA9fiBzL14oLiopKGxpYmN1cmwuKikvJDEvZzsKIAogICAgICAgICAgICAgJGxpYmN1cmwgPSAkMjsKLSAgICAgICAgICAgIGlmKCRjdXJsID1+IC9taW5ndzMyLykgewotICAgICAgICAgICAgICAgICMgVGhpcyBpcyBhIHdpbmRvd3MgbWludzMyIGJ1aWxkLCB3ZSBuZWVkIHRvIHRyYW5zbGF0ZSB0aGUKLSAgICAgICAgICAgICAgICAjIGdpdmVuIHBhdGggdG8gdGhlICJhY3R1YWwiIHdpbmRvd3MgcGF0aC4gVGhlIE1TWVMgc2hlbGwKLSAgICAgICAgICAgICAgICAjIGhhcyBhIGJ1aWx0aW4gJ3B3ZCAtVycgY29tbWFuZCB3aGljaCBjb252ZXJ0cyB0aGUgcGF0aC4KLSAgICAgICAgICAgICAgICAkcHdkID0gYHNoIC1jICJlY2hvIFwkKHB3ZCAtVykiYDsKLSAgICAgICAgICAgICAgICBjaG9tcCgkcHdkKTsKKyAgICAgICAgICAgIGlmKCRjdXJsID1+IC93aW4zMnxtaW5ndygzMnw2NCkvKSB7CisgICAgICAgICAgICAgICAgIyBUaGlzIGlzIGEgV2luZG93cyBNaW5HVyBidWlsZCBvciBuYXRpdmUgYnVpbGQsIHdlIG5lZWQgdG8gdXNlCisgICAgICAgICAgICAgICAgIyBXaW4zMi1zdHlsZSBwYXRoLgorICAgICAgICAgICAgICAgICRwd2QgPSBwYXRoaGVscDo6c3lzX25hdGl2ZV9jdXJyZW50X3BhdGgoKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2lmICgkY3VybCA9fiAvd2luMzIvKSB7Ci0gICAgICAgICAgICAgICAjIE5hdGl2ZSBXaW5kb3dzIGJ1aWxkcyBkb24ndCB1bmRlcnN0YW5kIHRoZQotICAgICAgICAgICAgICAgIyBvdXRwdXQgb2YgY3lnd2luJ3MgcHdkLiAgSXQgd2lsbCBiZQotICAgICAgICAgICAgICAgIyBzb21ldGhpbmcgbGlrZSAvY3lnZHJpdmUvYy88c29tZSBwYXRoPi4KLSAgICAgICAgICAgICAgICMKLSAgICAgICAgICAgICAgICMgVXNlIHRoZSBjeWdwYXRoIHV0aWxpdHkgdG8gY29udmVydCB0aGUKLSAgICAgICAgICAgICAgICMgd29ya2luZyBkaXJlY3RvcnkgdG8gYSBXaW5kb3dzIGZyaWVuZGx5Ci0gICAgICAgICAgICAgICAjIHBhdGguICBUaGUgLW0gb3B0aW9uIGNvbnZlcnRzIHRvIHVzZSBkcml2ZQotICAgICAgICAgICAgICAgIyBsZXR0ZXI6LCBidXQgaXQgdXNlcyAvIGluc3RlYWQgXC4gIEZvcndhcmQKLSAgICAgICAgICAgICAgICMgc2xhc2hlcyAoLykgYXJlIGVhc2llciBmb3IgdXMuICBXZSBkb24ndAotICAgICAgICAgICAgICAgIyBoYXZlIHRvIGVzY2FwZSB0aGVtIHRvIGdldCB0aGVtIHRvIGN1cmwKLSAgICAgICAgICAgICAgICMgdGhyb3VnaCBhIHNoZWxsLgotICAgICAgICAgICAgICAgY2hvbXAoJHB3ZCA9IGBjeWdwYXRoIC1tICRwd2RgKTsKLSAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoJGxpYmN1cmwgPX4gL3dpbnNzbC9pKSB7CiAgICAgICAgICAgICAgICAkaGFzX3dpbnNzbD0xOwogICAgICAgICAgICAgICAgJHNzbGxpYj0iV2luU1NMIjsKQEAgLTIzNTYsNiArMjM0NCw3IEBACiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCRsaWJjdXJsID1+IC9wb2xhcnNzbC9pKSB7CiAgICAgICAgICAgICAgICAkaGFzX3BvbGFyc3NsPTE7CisgICAgICAgICAgICAgICAkaGFzX3NzbHBpbm5pbmc9MTsKICAgICAgICAgICAgICAgICRzc2xsaWI9InBvbGFyc3NsIjsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoJGxpYmN1cmwgPX4gL2F4dGxzL2kpIHsKQEAgLTIzNjgsMTIgKzIzNTcsMTkgQEAKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoJGxpYmN1cmwgPX4gL0JvcmluZ1NTTC9pKSB7CiAgICAgICAgICAgICAgICAkaGFzX2JvcmluZ3NzbD0xOworICAgICAgICAgICAgICAgJGhhc19zc2xwaW5uaW5nPTE7CiAgICAgICAgICAgICAgICAkc3NsbGliPSJCb3JpbmdTU0wiOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICgkbGliY3VybCA9fiAvbGlicmVzc2wvaSkgewogICAgICAgICAgICAgICAgJGhhc19saWJyZXNzbD0xOworICAgICAgICAgICAgICAgJGhhc19zc2xwaW5uaW5nPTE7CiAgICAgICAgICAgICAgICAkc3NsbGliPSJsaWJyZXNzbCI7CiAgICAgICAgICAgIH0KKyAgICAgICAgICAgZWxzaWYgKCRsaWJjdXJsID1+IC9tYmVkVExTL2kpIHsKKyAgICAgICAgICAgICAgICRoYXNfbWJlZHRscz0xOworICAgICAgICAgICAgICAgJGhhc19zc2xwaW5uaW5nPTE7CisgICAgICAgICAgICAgICAkc3NsbGliPSJtYmVkVExTIjsKKyAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoJGxpYmN1cmwgPX4gL2FyZXMvaSkgewogICAgICAgICAgICAgICAgJGhhc19jYXJlcz0xOwogICAgICAgICAgICAgICAgJHJlc29sdmVyPSJjLWFyZXMiOwpAQCAtMjQxMCwxMSArMjQwNiwxMSBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYoJGZlYXQgPX4gL1NTTC9pKSB7CiAgICAgICAgICAgICAgICAgIyBzc2wgZW5hYmxlZAotICAgICAgICAgICAgICAgICRzc2xfdmVyc2lvbj0xOworICAgICAgICAgICAgICAgICRoYXNfc3NsPTE7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZigkZmVhdCA9fiAvTGFyZ2VmaWxlL2kpIHsKICAgICAgICAgICAgICAgICAjIGxhcmdlIGZpbGUgc3VwcG9ydAotICAgICAgICAgICAgICAgICRsYXJnZV9maWxlPTE7CisgICAgICAgICAgICAgICAgJGhhc19sYXJnZWZpbGU9MTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmKCRmZWF0ID1+IC9JRE4vaSkgewogICAgICAgICAgICAgICAgICMgSUROIHN1cHBvcnQKQEAgLTI0NzQsNiArMjQ3MCwxMCBAQAogICAgICAgICAgICAgICAgICMgTWV0YWxpbmsgZW5hYmxlZAogICAgICAgICAgICAgICAgICRoYXNfbWV0YWxpbms9MTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmKCRmZWF0ID1+IC9QU0wvaSkgeworICAgICAgICAgICAgICAgICMgUFNMIGVuYWJsZWQKKyAgICAgICAgICAgICAgICAkaGFzX3BzbD0xOworICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYoJGZlYXQgPX4gL0FzeW5jaEROUy9pKSB7CiAgICAgICAgICAgICAgICAgaWYoISRoYXNfY2FyZXMpIHsKICAgICAgICAgICAgICAgICAgICAgIyB0aGlzIG1lYW5zIHRocmVhZGVkIHJlc29sdmVyCkBAIC0yNTkwLDcyICsyNTkwLDY3IEBACiAgICAgICAgICAgICAgICAiKlxuIik7CiAgICAgfQogCi0gICAgbG9nbXNnIHNwcmludGYoIiogU2VydmVyIFNTTDogICAlOHMiLCAkc3R1bm5lbD8iT04gIjoiT0ZGIik7Ci0gICAgbG9nbXNnIHNwcmludGYoIiAgbGliY3VybCBTU0w6ICAlc1xuIiwgJHNzbF92ZXJzaW9uPyJPTiAiOiJPRkYiKTsKLSAgICBsb2dtc2cgc3ByaW50ZigiKiBkZWJ1ZyBidWlsZDogICU4cyIsICRkZWJ1Z19idWlsZD8iT04gIjoiT0ZGIik7Ci0gICAgbG9nbXNnIHNwcmludGYoIiAgdHJhY2sgbWVtb3J5OiAlc1xuIiwgJGhhc19tZW1vcnlfdHJhY2tpbmc/Ik9OICI6Ik9GRiIpOwotICAgIGxvZ21zZyBzcHJpbnRmKCIqIHZhbGdyaW5kOiAgICAgJThzIiwgJHZhbGdyaW5kPyJPTiAiOiJPRkYiKTsKLSAgICBsb2dtc2cgc3ByaW50ZigiICBIVFRQIElQdjYgICAgICVzXG4iLCAkaHR0cF9pcHY2PyJPTiAiOiJPRkYiKTsKLSAgICBsb2dtc2cgc3ByaW50ZigiKiBIVFRQIFVuaXggICAgICVzXG4iLCAkaHR0cF91bml4PyJPTiAiOiJPRkYiKTsKLSAgICBsb2dtc2cgc3ByaW50ZigiKiBGVFAgSVB2NiAgICAgICU4cyIsICRmdHBfaXB2Nj8iT04gIjoiT0ZGIik7Ci0gICAgbG9nbXNnIHNwcmludGYoIiAgTGlidG9vbCBsaWI6ICAlc1xuIiwgJGxpYnRvb2w/Ik9OICI6Ik9GRiIpOwotICAgIGxvZ21zZyBzcHJpbnRmKCIqIFNoYXJlZCBidWlsZDogICAgICAlLTNzIiwgJGhhc19zaGFyZWQpOwotICAgIGxvZ21zZyBzcHJpbnRmKCIgIFJlc29sdmVyOiAgICAgJXNcbiIsICRyZXNvbHZlcik7Ci0gICAgaWYoJHNzbF92ZXJzaW9uKSB7Ci0gICAgICAgIGxvZ21zZyBzcHJpbnRmKCIqIFNTTCBsaWJyYXJ5OiAlMTNzXG4iLCAkc3NsbGliKTsKLSAgICB9CisgICAgbG9nbXNnIHNwcmludGYoIiogU2VydmVyczogJXMiLCAkc3R1bm5lbD8iU1NMICI6IiIpOworICAgIGxvZ21zZyBzcHJpbnRmKCIlcyIsICRodHRwX2lwdjY/IkhUVFAtSVB2NiAiOiIiKTsKKyAgICBsb2dtc2cgc3ByaW50ZigiJXMiLCAkaHR0cF91bml4PyJIVFRQLXVuaXggIjoiIik7CisgICAgbG9nbXNnIHNwcmludGYoIiVzXG4iLCAkZnRwX2lwdjY/IkZUUC1JUHY2ICI6Ik9GRiIpOwogCi0gICAgbG9nbXNnICIqIFBvcnRzOlxuIjsKKyAgICBsb2dtc2cgc3ByaW50ZigiKiBFbnY6ICVzJXMiLCAkdmFsZ3JpbmQ/IlZhbGdyaW5kICI6IiIsCisgICAgICAgICAgICAgICAgICAgJHJ1bl9ldmVudF9iYXNlZD8iZXZlbnQtYmFzZWQgIjoiIik7CisgICAgbG9nbXNnIHNwcmludGYoIiVzXG4iLCAkbGlidG9vbD8iTGlidG9vbCAiOiIiKTsKIAotICAgIGxvZ21zZyBzcHJpbnRmKCIqICAgSFRUUC8lZCAiLCAkSFRUUFBPUlQpOwotICAgIGxvZ21zZyBzcHJpbnRmKCJGVFAvJWQgIiwgJEZUUFBPUlQpOwotICAgIGxvZ21zZyBzcHJpbnRmKCJGVFAyLyVkICIsICRGVFAyUE9SVCk7Ci0gICAgbG9nbXNnIHNwcmludGYoIlJUU1AvJWQgIiwgJFJUU1BQT1JUKTsKLSAgICBpZigkc3R1bm5lbCkgewotICAgICAgICBsb2dtc2cgc3ByaW50ZigiRlRQUy8lZCAiLCAkRlRQU1BPUlQpOwotICAgICAgICBsb2dtc2cgc3ByaW50ZigiSFRUUFMvJWQgIiwgJEhUVFBTUE9SVCk7Ci0gICAgfQotICAgIGxvZ21zZyBzcHJpbnRmKCJcbiogICBURlRQLyVkICIsICRURlRQUE9SVCk7Ci0gICAgaWYoJGh0dHBfaXB2NikgewotICAgICAgICBsb2dtc2cgc3ByaW50ZigiSFRUUC1JUHY2LyVkICIsICRIVFRQNlBPUlQpOwotICAgICAgICBsb2dtc2cgc3ByaW50ZigiUlRTUC1JUHY2LyVkICIsICRSVFNQNlBPUlQpOwotICAgIH0KLSAgICBpZigkZnRwX2lwdjYpIHsKLSAgICAgICAgbG9nbXNnIHNwcmludGYoIkZUUC1JUHY2LyVkICIsICRGVFA2UE9SVCk7Ci0gICAgfQotICAgIGlmKCR0ZnRwX2lwdjYpIHsKLSAgICAgICAgbG9nbXNnIHNwcmludGYoIlRGVFAtSVB2Ni8lZCAiLCAkVEZUUDZQT1JUKTsKLSAgICB9Ci0gICAgbG9nbXNnIHNwcmludGYoIlxuKiAgIEdPUEhFUi8lZCAiLCAkR09QSEVSUE9SVCk7Ci0gICAgaWYoJGdvcGhlcl9pcHY2KSB7Ci0gICAgICAgIGxvZ21zZyBzcHJpbnRmKCJHT1BIRVItSVB2Ni8lZCIsICRHT1BIRVJQT1JUKTsKLSAgICB9Ci0gICAgbG9nbXNnIHNwcmludGYoIlxuKiAgIFNTSC8lZCAiLCAkU1NIUE9SVCk7Ci0gICAgbG9nbXNnIHNwcmludGYoIlNPQ0tTLyVkICIsICRTT0NLU1BPUlQpOwotICAgIGxvZ21zZyBzcHJpbnRmKCJQT1AzLyVkICIsICRQT1AzUE9SVCk7Ci0gICAgbG9nbXNnIHNwcmludGYoIklNQVAvJWQgIiwgJElNQVBQT1JUKTsKLSAgICBsb2dtc2cgc3ByaW50ZigiU01UUC8lZFxuIiwgJFNNVFBQT1JUKTsKLSAgICBpZigkZnRwX2lwdjYpIHsKLSAgICAgICAgbG9nbXNnIHNwcmludGYoIiogICBQT1AzLUlQdjYvJWQgIiwgJFBPUDM2UE9SVCk7Ci0gICAgICAgIGxvZ21zZyBzcHJpbnRmKCJJTUFQLUlQdjYvJWQgIiwgJElNQVA2UE9SVCk7Ci0gICAgICAgIGxvZ21zZyBzcHJpbnRmKCJTTVRQLUlQdjYvJWRcbiIsICRTTVRQNlBPUlQpOwotICAgIH0KLSAgICBpZigkaHR0cHRsc3NydikgewotICAgICAgICBsb2dtc2cgc3ByaW50ZigiKiAgIEhUVFBUTFMvJWQgIiwgJEhUVFBUTFNQT1JUKTsKLSAgICAgICAgaWYoJGhhc19pcHY2KSB7Ci0gICAgICAgICAgICBsb2dtc2cgc3ByaW50ZigiSFRUUFRMUy1JUHY2LyVkICIsICRIVFRQVExTNlBPUlQpOworICAgIGlmKCR2ZXJib3NlKSB7CisgICAgICAgIGxvZ21zZyAiKiBQb3J0czpcbiI7CisKKyAgICAgICAgbG9nbXNnIHNwcmludGYoIiogICBIVFRQLyVkICIsICRIVFRQUE9SVCk7CisgICAgICAgIGxvZ21zZyBzcHJpbnRmKCJGVFAvJWQgIiwgJEZUUFBPUlQpOworICAgICAgICBsb2dtc2cgc3ByaW50ZigiRlRQMi8lZCAiLCAkRlRQMlBPUlQpOworICAgICAgICBsb2dtc2cgc3ByaW50ZigiUlRTUC8lZCAiLCAkUlRTUFBPUlQpOworICAgICAgICBpZigkc3R1bm5lbCkgeworICAgICAgICAgICAgbG9nbXNnIHNwcmludGYoIkZUUFMvJWQgIiwgJEZUUFNQT1JUKTsKKyAgICAgICAgICAgIGxvZ21zZyBzcHJpbnRmKCJIVFRQUy8lZCAiLCAkSFRUUFNQT1JUKTsKICAgICAgICAgfQotICAgICAgICBsb2dtc2cgIlxuIjsKLSAgICB9Ci0gICAgbG9nbXNnIHNwcmludGYoIiogICBIVFRQLVBJUEUvJWQgXG4iLCAkSFRUUFBJUEVQT1JUKTsKKyAgICAgICAgbG9nbXNnIHNwcmludGYoIlxuKiAgIFRGVFAvJWQgIiwgJFRGVFBQT1JUKTsKKyAgICAgICAgaWYoJGh0dHBfaXB2NikgeworICAgICAgICAgICAgbG9nbXNnIHNwcmludGYoIkhUVFAtSVB2Ni8lZCAiLCAkSFRUUDZQT1JUKTsKKyAgICAgICAgICAgIGxvZ21zZyBzcHJpbnRmKCJSVFNQLUlQdjYvJWQgIiwgJFJUU1A2UE9SVCk7CisgICAgICAgIH0KKyAgICAgICAgaWYoJGZ0cF9pcHY2KSB7CisgICAgICAgICAgICBsb2dtc2cgc3ByaW50ZigiRlRQLUlQdjYvJWQgIiwgJEZUUDZQT1JUKTsKKyAgICAgICAgfQorICAgICAgICBpZigkdGZ0cF9pcHY2KSB7CisgICAgICAgICAgICBsb2dtc2cgc3ByaW50ZigiVEZUUC1JUHY2LyVkICIsICRURlRQNlBPUlQpOworICAgICAgICB9CisgICAgICAgIGxvZ21zZyBzcHJpbnRmKCJcbiogICBHT1BIRVIvJWQgIiwgJEdPUEhFUlBPUlQpOworICAgICAgICBpZigkZ29waGVyX2lwdjYpIHsKKyAgICAgICAgICAgIGxvZ21zZyBzcHJpbnRmKCJHT1BIRVItSVB2Ni8lZCIsICRHT1BIRVJQT1JUKTsKKyAgICAgICAgfQorICAgICAgICBsb2dtc2cgc3ByaW50ZigiXG4qICAgU1NILyVkICIsICRTU0hQT1JUKTsKKyAgICAgICAgbG9nbXNnIHNwcmludGYoIlNPQ0tTLyVkICIsICRTT0NLU1BPUlQpOworICAgICAgICBsb2dtc2cgc3ByaW50ZigiUE9QMy8lZCAiLCAkUE9QM1BPUlQpOworICAgICAgICBsb2dtc2cgc3ByaW50ZigiSU1BUC8lZCAiLCAkSU1BUFBPUlQpOworICAgICAgICBsb2dtc2cgc3ByaW50ZigiU01UUC8lZFxuIiwgJFNNVFBQT1JUKTsKKyAgICAgICAgaWYoJGZ0cF9pcHY2KSB7CisgICAgICAgICAgICBsb2dtc2cgc3ByaW50ZigiKiAgIFBPUDMtSVB2Ni8lZCAiLCAkUE9QMzZQT1JUKTsKKyAgICAgICAgICAgIGxvZ21zZyBzcHJpbnRmKCJJTUFQLUlQdjYvJWQgIiwgJElNQVA2UE9SVCk7CisgICAgICAgICAgICBsb2dtc2cgc3ByaW50ZigiU01UUC1JUHY2LyVkXG4iLCAkU01UUDZQT1JUKTsKKyAgICAgICAgfQorICAgICAgICBpZigkaHR0cHRsc3NydikgeworICAgICAgICAgICAgbG9nbXNnIHNwcmludGYoIiogICBIVFRQVExTLyVkICIsICRIVFRQVExTUE9SVCk7CisgICAgICAgICAgICBpZigkaGFzX2lwdjYpIHsKKyAgICAgICAgICAgICAgICBsb2dtc2cgc3ByaW50ZigiSFRUUFRMUy1JUHY2LyVkICIsICRIVFRQVExTNlBPUlQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbG9nbXNnICJcbiI7CisgICAgICAgIH0KKyAgICAgICAgbG9nbXNnIHNwcmludGYoIiogICBIVFRQLVBJUEUvJWQgXG4iLCAkSFRUUFBJUEVQT1JUKTsKIAotICAgIGlmKCRoYXNfdW5peCkgewotICAgICAgICBsb2dtc2cgIiogVW5peCBzb2NrZXQgcGF0aHM6XG4iOwotICAgICAgICBpZigkaHR0cF91bml4KSB7Ci0gICAgICAgICAgICBsb2dtc2cgc3ByaW50ZigiKiAgIEhUVFAtVW5peDolc1xuIiwgJEhUVFBVTklYUEFUSCk7CisgICAgICAgIGlmKCRoYXNfdW5peCkgeworICAgICAgICAgICAgbG9nbXNnICIqIFVuaXggc29ja2V0IHBhdGhzOlxuIjsKKyAgICAgICAgICAgIGlmKCRodHRwX3VuaXgpIHsKKyAgICAgICAgICAgICAgICBsb2dtc2cgc3ByaW50ZigiKiAgIEhUVFAtVW5peDolc1xuIiwgJEhUVFBVTklYUEFUSCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0KICAgICAkaGFzX3RleHRhd2FyZSA9ICgkXk8gZXEgJ01TV2luMzInKSB8fCAoJF5PIGVxICdtc3lzJyk7CiAKICAgICBsb2dtc2cgIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIFxuIjsKQEAgLTI4NTIsNyArMjg0Nyw3IEBACiAgICAgICAgICAgICAkZmVhdHVyZXskMX0gPSAkMTsKIAogICAgICAgICAgICAgaWYoJDEgZXEgIlNTTCIpIHsKLSAgICAgICAgICAgICAgICBpZigkc3NsX3ZlcnNpb24pIHsKKyAgICAgICAgICAgICAgICBpZigkaGFzX3NzbCkgewogICAgICAgICAgICAgICAgICAgICBuZXh0OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTI5MDcsNyArMjkwMiw3IEBACiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzaWYoJDEgZXEgImxhcmdlX2ZpbGUiKSB7Ci0gICAgICAgICAgICAgICAgaWYoJGxhcmdlX2ZpbGUpIHsKKyAgICAgICAgICAgICAgICBpZigkaGFzX2xhcmdlZmlsZSkgewogICAgICAgICAgICAgICAgICAgICBuZXh0OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTI5ODEsNiArMjk3NiwxMSBAQAogICAgICAgICAgICAgICAgICAgICBuZXh0OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2lmKCQxIGVxICJQU0wiKSB7CisgICAgICAgICAgICAgICAgaWYoJGhhc19wc2wpIHsKKyAgICAgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNpZigkMSBlcSAic29ja3MiKSB7CiAgICAgICAgICAgICAgICAgbmV4dDsKICAgICAgICAgICAgIH0KQEAgLTMwMDUsNyArMzAwNSw3IEBACiAKICAgICAgICAgICAgIGlmKCRmID1+IC9eISguKikkLykgewogICAgICAgICAgICAgICAgIGlmKCQxIGVxICJTU0wiKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmKCEkc3NsX3ZlcnNpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgaWYoISRoYXNfc3NsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0OwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQpAQCAtMzA0NSw3ICszMDQ1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBlbHNpZigkMSBlcSAibGFyZ2VfZmlsZSIpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYoISRsYXJnZV9maWxlKSB7CisgICAgICAgICAgICAgICAgICAgIGlmKCEkaGFzX2xhcmdlZmlsZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgbmV4dDsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KQEAgLTMxMTcsNiArMzExNywxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgbmV4dDsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNpZigkMSBlcSAiUFNMIikgeworICAgICAgICAgICAgICAgICAgICBpZighJGhhc19wc2wpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5leHQ7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIG5leHQ7CiAgICAgICAgICAgICAgICAgfQpAQCAtMzI3NSwxOCArMzI4MCw1MCBAQAogCiAgICAgaWYgKEByZXBseWNoZWNrKSB7CiAgICAgICAgICMgd2UgdXNlIHRoaXMgZmlsZSBpbnN0ZWFkIHRvIGNoZWNrIHRoZSBmaW5hbCBvdXRwdXQgYWdhaW5zdAotCisgICAgICAgICMgZ2V0IHRoZSBtb2RlIGF0dHJpYnV0ZQorICAgICAgICBteSAkZmlsZW1vZGU9JHJlcGx5Y2hlY2thdHRyeydtb2RlJ307CisgICAgICAgIGlmKCRmaWxlbW9kZSAmJiAoJGZpbGVtb2RlIGVxICJ0ZXh0IikgJiYgJGhhc190ZXh0YXdhcmUpIHsKKyAgICAgICAgICAgICMgdGV4dCBtb2RlIHdoZW4gcnVubmluZyBvbiB3aW5kb3dzOiBmaXggbGluZSBlbmRpbmdzCisgICAgICAgICAgICBtYXAgcy9cclxuL1xuL2csIEByZXBseWNoZWNrOworICAgICAgICAgICAgbWFwIHMvXG4vXHJcbi9nLCBAcmVwbHljaGVjazsKKyAgICAgICAgfQogICAgICAgICBpZigkcmVwbHljaGVja2F0dHJ7J25vbmV3bGluZSd9KSB7CiAgICAgICAgICAgICAjIFllcywgd2UgbXVzdCBjdXQgb2ZmIHRoZSBmaW5hbCBuZXdsaW5lIGZyb20gdGhlIGZpbmFsIGxpbmUKICAgICAgICAgICAgICMgb2YgdGhlIGRhdGFjaGVjawogICAgICAgICAgICAgY2hvbXAoJHJlcGx5Y2hlY2tbJCNyZXBseWNoZWNrXSk7CiAgICAgICAgIH0KLSAgICAgICAgaWYoJHJlcGx5Y2hlY2thdHRyeydtb2RlJ30pIHsKLSAgICAgICAgICAgICRyZXBseWF0dHJ7J21vZGUnfSA9ICRyZXBseWNoZWNrYXR0cnsnbW9kZSd9OworCisgICAgICAgIGZvciBteSAkcGFydHN1ZmZpeCAoKCcxJywgJzInLCAnMycsICc0JykpIHsKKyAgICAgICAgICAgIG15IEByZXBseWNoZWNrcGFydCA9IGdldHBhcnQoInJlcGx5IiwgImRhdGFjaGVjayIuJHBhcnRzdWZmaXgpOworICAgICAgICAgICAgaWYoQHJlcGx5Y2hlY2twYXJ0IHx8IHBhcnRleGlzdHMoInJlcGx5IiwgImRhdGFjaGVjayIuJHBhcnRzdWZmaXgpICkgeworICAgICAgICAgICAgICAgIG15ICVyZXBseWNoZWNrcGFydGF0dHIgPSBnZXRwYXJ0YXR0cigicmVwbHkiLCAiZGF0YWNoZWNrIi4kcGFydHN1ZmZpeCk7CisgICAgICAgICAgICAgICAgIyBnZXQgdGhlIG1vZGUgYXR0cmlidXRlCisgICAgICAgICAgICAgICAgbXkgJGZpbGVtb2RlPSRyZXBseWNoZWNrcGFydGF0dHJ7J21vZGUnfTsKKyAgICAgICAgICAgICAgICBpZigkZmlsZW1vZGUgJiYgKCRmaWxlbW9kZSBlcSAidGV4dCIpICYmICRoYXNfdGV4dGF3YXJlKSB7CisgICAgICAgICAgICAgICAgICAgICMgdGV4dCBtb2RlIHdoZW4gcnVubmluZyBvbiB3aW5kb3dzOiBmaXggbGluZSBlbmRpbmdzCisgICAgICAgICAgICAgICAgICAgIG1hcCBzL1xyXG4vXG4vZywgQHJlcGx5Y2hlY2twYXJ0OworICAgICAgICAgICAgICAgICAgICBtYXAgcy9cbi9cclxuL2csIEByZXBseWNoZWNrcGFydDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYoJHJlcGx5Y2hlY2twYXJ0YXR0cnsnbm9uZXdsaW5lJ30pIHsKKyAgICAgICAgICAgICAgICAgICAgIyBZZXMsIHdlIG11c3QgY3V0IG9mZiB0aGUgZmluYWwgbmV3bGluZSBmcm9tIHRoZSBmaW5hbCBsaW5lCisgICAgICAgICAgICAgICAgICAgICMgb2YgdGhlIGRhdGFjaGVjaworICAgICAgICAgICAgICAgICAgICBjaG9tcCgkcmVwbHljaGVja3BhcnRbJCNyZXBseWNoZWNrcGFydF0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBwdXNoKEByZXBseWNoZWNrLCBAcmVwbHljaGVja3BhcnQpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgQHJlcGx5PUByZXBseWNoZWNrOwogICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgIyBnZXQgdGhlIG1vZGUgYXR0cmlidXRlCisgICAgICAgIG15ICRmaWxlbW9kZT0kcmVwbHlhdHRyeydtb2RlJ307CisgICAgICAgIGlmKCRmaWxlbW9kZSAmJiAoJGZpbGVtb2RlIGVxICJ0ZXh0IikgJiYgJGhhc190ZXh0YXdhcmUpIHsKKyAgICAgICAgICAgICMgdGV4dCBtb2RlIHdoZW4gcnVubmluZyBvbiB3aW5kb3dzOiBmaXggbGluZSBlbmRpbmdzCisgICAgICAgICAgICBtYXAgcy9cclxuL1xuL2csIEByZXBseTsKKyAgICAgICAgICAgIG1hcCBzL1xuL1xyXG4vZywgQHJlcGx5OworICAgICAgICB9CisgICAgfQogCiAgICAgIyB0aGlzIGlzIHRoZSB2YWxpZCBwcm90b2NvbCBibHVyYiBjdXJsIHNob3VsZCBnZW5lcmF0ZQogICAgIG15IEBwcm90b2NvbD0gZml4YXJyYXkgKCBnZXRwYXJ0KCJ2ZXJpZnkiLCAicHJvdG9jb2wiKSApOwpAQCAtMzgyMiwxNCArMzg1OSw2IEBACiAgICAgaWYoISRyZXBseWF0dHJ7J25vY2hlY2snfSAmJiAoQHJlcGx5IHx8ICRyZXBseWF0dHJ7J3NlbmR6ZXJvJ30pKSB7CiAgICAgICAgICMgdmVyaWZ5IHRoZSByZWNlaXZlZCBkYXRhCiAgICAgICAgIG15IEBvdXQgPSBsb2FkYXJyYXkoJENVUkxPVVQpOwotICAgICAgICAjIGdldCB0aGUgbW9kZSBhdHRyaWJ1dGUKLSAgICAgICAgbXkgJGZpbGVtb2RlPSRyZXBseWF0dHJ7J21vZGUnfTsKLSAgICAgICAgaWYoJGZpbGVtb2RlICYmICgkZmlsZW1vZGUgZXEgInRleHQiKSAmJiAkaGFzX3RleHRhd2FyZSkgewotICAgICAgICAgICAgIyB0ZXh0IG1vZGUgd2hlbiBydW5uaW5nIG9uIHdpbmRvd3M6IGZpeCBsaW5lIGVuZGluZ3MKLSAgICAgICAgICAgIG1hcCBzL1xyXG4vXG4vZywgQHJlcGx5OwotICAgICAgICAgICAgbWFwIHMvXG4vXHJcbi9nLCBAcmVwbHk7Ci0gICAgICAgIH0KLQogICAgICAgICAkcmVzID0gY29tcGFyZSgkdGVzdG51bSwgJHRlc3RuYW1lLCAiZGF0YSIsIFxAb3V0LCBcQHJlcGx5KTsKICAgICAgICAgaWYgKCRyZXMpIHsKICAgICAgICAgICAgIHJldHVybiAxOwpAQCAtNDMzNCw3ICs0MzYzLDcgQEAKICAgICAgICAgICAgICAgICAjIHdlIGNhbid0IHJ1biBmdHBzIHRlc3RzIHdpdGhvdXQgc3R1bm5lbAogICAgICAgICAgICAgICAgIHJldHVybiAibm8gc3R1bm5lbCI7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZighJHNzbF92ZXJzaW9uKSB7CisgICAgICAgICAgICBpZighJGhhc19zc2wpIHsKICAgICAgICAgICAgICAgICAjIHdlIGNhbid0IHJ1biBmdHBzIHRlc3RzIGlmIGxpYmN1cmwgaXMgU1NMLWxlc3MKICAgICAgICAgICAgICAgICByZXR1cm4gImN1cmwgbGFja3MgU1NMIHN1cHBvcnQiOwogICAgICAgICAgICAgfQpAQCAtNDM3Miw3ICs0NDAxLDcgQEAKICAgICAgICAgICAgICAgICAjIHdlIGNhbid0IHJ1biBodHRwcyB0ZXN0cyB3aXRob3V0IHN0dW5uZWwKICAgICAgICAgICAgICAgICByZXR1cm4gIm5vIHN0dW5uZWwiOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYoISRzc2xfdmVyc2lvbikgeworICAgICAgICAgICAgaWYoISRoYXNfc3NsKSB7CiAgICAgICAgICAgICAgICAgIyB3ZSBjYW4ndCBydW4gaHR0cHMgdGVzdHMgaWYgbGliY3VybCBpcyBTU0wtbGVzcwogICAgICAgICAgICAgICAgIHJldHVybiAiY3VybCBsYWNrcyBTU0wgc3VwcG9ydCI7CiAgICAgICAgICAgICB9CkBAIC00NzM0LDcgKzQ3NjMsNyBAQAogICAgIH0KICAgICBlbHNpZiAoJEFSR1ZbMF0gZXEgIi1jIikgewogICAgICAgICAjIHVzZSB0aGlzIHBhdGggdG8gY3VybCBpbnN0ZWFkIG9mIGRlZmF1bHQKLSAgICAgICAgJERCR0NVUkw9JENVUkw9JEFSR1ZbMV07CisgICAgICAgICREQkdDVVJMPSRDVVJMPSJcIiRBUkdWWzFdXCIiOwogICAgICAgICBzaGlmdCBAQVJHVjsKICAgICB9CiAgICAgZWxzaWYgKCRBUkdWWzBdIGVxICItdmMiKSB7CkBAIC00NzQ0LDcgKzQ3NzMsNyBAQAogICAgICAgICAjIHRoZSBkZXZlbG9wbWVudCB2ZXJzaW9uIGFzIHRoZW4gaXQgd29uJ3QgYmUgYWJsZSB0byBydW4gYW55IHRlc3RzCiAgICAgICAgICMgc2luY2UgaXQgY2FuJ3QgdmVyaWZ5IHRoZSBzZXJ2ZXJzIQogCi0gICAgICAgICRWQ1VSTD0kQVJHVlsxXTsKKyAgICAgICAgJFZDVVJMPSJcIiRBUkdWWzFdXCIiOwogICAgICAgICBzaGlmdCBAQVJHVjsKICAgICB9CiAgICAgZWxzaWYgKCRBUkdWWzBdIGVxICItZCIpIHsKZGlmZiAtLWdpdCBhL3Rlc3RzL3NlY3VyZXNlcnZlci5wbCBiL3Rlc3RzL3NlY3VyZXNlcnZlci5wbAppbmRleCA2Mjc2MTEwLi4zYTc0NDNjIDEwMDc1NQotLS0gYS90ZXN0cy9zZWN1cmVzZXJ2ZXIucGwKKysrIGIvdGVzdHMvc2VjdXJlc2VydmVyLnBsCkBAIC0xMCw3ICsxMCw3IEBACiAjCiAjIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAjCiAjIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTQwLDYgKzQwLDggQEAKICAgICBzZXJ2ZXJfbG9nZmlsZW5hbWUKICAgICApOwogCit1c2UgcGF0aGhlbHA7CisKIG15ICRzdHVubmVsID0gInN0dW5uZWwiOwogCiBteSAkdmVyYm9zZT0wOyAjIHNldCB0byAxIGZvciBkZWJ1Z2dpbmcKQEAgLTIyOSw5ICsyMzEsOSBAQAogaWYoJHN0dW5uZWwgPX4gL3RzdHVubmVsKFwuZXhlKT8iPyQvKSB7CiAgICAgJHRzdHVubmVsX3dpbmRvd3MgPSAxOwogCi0gICAgIyByZXBsYWNlIEN5Z3dpbiBhbmQgTWluR1cgZHJpdmVzIHdpdGhpbiBwYXRocwotICAgICRjYXBhdGggPX4gcy9eKFwvY3lnZHJpdmUpP1wvKFx3KVwvLyQyXDpcLy87Ci0gICAgJGNlcnRmaWxlID1+IHMvXihcL2N5Z2RyaXZlKT9cLyhcdylcLy8kMlw6XC8vOworICAgICMgY29udmVydCBDeWd3aW4vTWluR1cgcGF0aHMgdG8gV2luMzIgZm9ybWF0CisgICAgJGNhcGF0aCA9IHBhdGhoZWxwOjpzeXNfbmF0aXZlX2Fic19wYXRoKCRjYXBhdGgpOworICAgICRjZXJ0ZmlsZSA9IHBhdGhoZWxwOjpzeXNfbmF0aXZlX2Fic19wYXRoKCRjZXJ0ZmlsZSk7CiB9CiAKICMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKZGlmZiAtLWdpdCBhL3Rlc3RzL3NlcnZlci8uZ2l0aWdub3JlIGIvdGVzdHMvc2VydmVyLy5naXRpZ25vcmUKaW5kZXggODAwN2JlYy4uNDk3NzgzYiAxMDA2NDQKLS0tIGEvdGVzdHMvc2VydmVyLy5naXRpZ25vcmUKKysrIGIvdGVzdHMvc2VydmVyLy5naXRpZ25vcmUKQEAgLTEsNyArMSw3IEBACitmYWtlX250bG0KIGdldHBhcnQKIHJlc29sdmUKIHJ0c3BkCiBzb2NrZmlsdAogc3dzCiB0ZnRwZAotZmFrZV9udGxtCmRpZmYgLS1naXQgYS90ZXN0cy9zZXJ2ZXIvTWFrZWZpbGUuYW0gYi90ZXN0cy9zZXJ2ZXIvTWFrZWZpbGUuYW0KaW5kZXggNzUzM2E5OC4uZTI3NGMwMSAxMDA2NDQKLS0tIGEvdGVzdHMvc2VydmVyL01ha2VmaWxlLmFtCisrKyBiL3Rlc3RzL3NlcnZlci9NYWtlZmlsZS5hbQpAQCAtNSwxMSArNSwxMSBAQAogIyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICMKLSMgQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyMgQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICMKICMgVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICMgeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICMKICMgWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAjIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNjAsNSArNjAsNyBAQAogIyBNYWtlZmlsZS5pbmMgcHJvdmlkZXMgbmVhdCBkZWZpbml0aW9ucwogaW5jbHVkZSBNYWtlZmlsZS5pbmMKIAotRVhUUkFfRElTVCA9IGJhc2U2NC5wbCBNYWtlZmlsZS5pbmMKK0VYVFJBX0RJU1QgPSBiYXNlNjQucGwgTWFrZWZpbGUuaW5jIENNYWtlTGlzdHMudHh0CiAKK2NoZWNrc3JjOgorCUBQRVJMQCAkKHRvcF9zcmNkaXIpL2xpYi9jaGVja3NyYy5wbCAkKHNyY2RpcikvKi5jCmRpZmYgLS1naXQgYS90ZXN0cy9zZXJ2ZXIvZmFrZV9udGxtLmMgYi90ZXN0cy9zZXJ2ZXIvZmFrZV9udGxtLmMKaW5kZXggNzk5ZjU3My4uODcxMThiMyAxMDA2NDQKLS0tIGEvdGVzdHMvc2VydmVyL2Zha2VfbnRsbS5jCisrKyBiL3Rlc3RzL3NlcnZlci9mYWtlX250bG0uYwpAQCAtMTAsNyArMTAsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTc2LDcgKzc2LDcgQEAKICAgICByZXR1cm4gTlVMTDsKIAogICBpZighaW5sZW5ndGgpIHsKLSAgICBzcHJpbnRmKCZvdXRidWZbMF0sICIlcyIsIE5PVEhJTkdfU1RSKTsKKyAgICBzbnByaW50Zigmb3V0YnVmWzBdLCBvdXRzaXplLCAiJXMiLCBOT1RISU5HX1NUUik7CiAgICAgcmV0dXJuIG91dGJ1ZjsKICAgfQogCkBAIC05OCw3ICs5OCw3IEBACiAgICAgICBvKys7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgc3ByaW50Zigmb3V0YnVmW29dLCBIRVhfRk1UX1NUUiwgaW5idWZbaV0pOworICAgICAgc25wcmludGYoJm91dGJ1ZltvXSwgb3V0c2l6ZSAtIG8sIEhFWF9GTVRfU1RSLCBpbmJ1ZltpXSk7CiAgICAgICBvICs9IEhFWF9TVFJfTEVOOwogICAgIH0KIApAQCAtMTYzLDcgKzE2Myw3IEBACiAgICAgICAgICAodXNlX2NhY2hlZF9jcmVkcykgPyAieWVzIiA6ICJubyIpOwogCiAgIGVudiA9IGdldGVudigiQ1VSTF9OVExNX0FVVEhfVEVTVE5VTSIpOwotICBpZiAoZW52KSB7CisgIGlmKGVudikgewogICAgIGNoYXIgKmVuZHB0cjsKICAgICBsb25nIGxudW0gPSBzdHJ0b2woZW52LCAmZW5kcHRyLCAxMCk7CiAgICAgaWYoKGVuZHB0ciAhPSBlbnYgKyBzdHJsZW4oZW52KSkgfHwgKGxudW0gPCAxTCkpIHsKQEAgLTE3MSwxMyArMTcxLDE0IEBACiAgICAgICBleGl0KDEpOwogICAgIH0KICAgICB0ZXN0bnVtID0gbG51bTsKLSAgfSBlbHNlIHsKKyAgfQorICBlbHNlIHsKICAgICBsb2dtc2coIlRlc3QgbnVtYmVyIG5vdCBzcGVjaWZpZWQgaW4gQ1VSTF9OVExNX0FVVEhfVEVTVE5VTSIpOwogICAgIGV4aXQoMSk7CiAgIH0KIAogICBlbnYgPSBnZXRlbnYoIkNVUkxfTlRMTV9BVVRIX1NSQ0RJUiIpOwotICBpZiAoZW52KSB7CisgIGlmKGVudikgewogICAgIHBhdGggPSBlbnY7CiAgIH0KIApAQCAtMjMwLDcgKzIzMSw4IEBACiAgICAgICB9CiAgICAgICBlbHNlIHsKICAgICAgICAgc2l6ZSA9IDA7Ci0gICAgICAgIGVycm9yID0gZ2V0cGFydCgmdHlwZTFfb3V0cHV0LCAmc2l6ZSwgIm50bG1fYXV0aF90eXBlMSIsICJvdXRwdXQiLCBzdHJlYW0pOworICAgICAgICBlcnJvciA9IGdldHBhcnQoJnR5cGUxX291dHB1dCwgJnNpemUsICJudGxtX2F1dGhfdHlwZTEiLCAib3V0cHV0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbSk7CiAgICAgICAgIGZjbG9zZShzdHJlYW0pOwogICAgICAgICBpZihlcnJvciB8fCBzaXplID09IDApIHsKICAgICAgICAgICBsb2dtc2coImdldHBhcnQoKSB0eXBlIDEgb3V0cHV0IGZhaWxlZCB3aXRoIGVycm9yOiAlZCIsIGVycm9yKTsKQEAgLTI1MSw3ICsyNTMsOCBAQAogICAgICAgfQogICAgICAgZWxzZSB7CiAgICAgICAgIHNpemUgPSAwOwotICAgICAgICBlcnJvciA9IGdldHBhcnQoJnR5cGUzX291dHB1dCwgJnNpemUsICJudGxtX2F1dGhfdHlwZTMiLCAib3V0cHV0Iiwgc3RyZWFtKTsKKyAgICAgICAgZXJyb3IgPSBnZXRwYXJ0KCZ0eXBlM19vdXRwdXQsICZzaXplLCAibnRsbV9hdXRoX3R5cGUzIiwgIm91dHB1dCIsCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW0pOwogICAgICAgICBmY2xvc2Uoc3RyZWFtKTsKICAgICAgICAgaWYoZXJyb3IgfHwgc2l6ZSA9PSAwKSB7CiAgICAgICAgICAgbG9nbXNnKCJnZXRwYXJ0KCkgdHlwZSAzIG91dHB1dCBmYWlsZWQgd2l0aCBlcnJvcjogJWQiLCBlcnJvcik7CmRpZmYgLS1naXQgYS90ZXN0cy9zZXJ2ZXIvZ2V0cGFydC5jIGIvdGVzdHMvc2VydmVyL2dldHBhcnQuYwppbmRleCBmNzczZGQwLi45NjBmYmFhIDEwMDY0NAotLS0gYS90ZXN0cy9zZXJ2ZXIvZ2V0cGFydC5jCisrKyBiL3Rlc3RzL3NlcnZlci9nZXRwYXJ0LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDEzLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0xMDEsNyArMTAxLDcgQEAKICAgICBpbnQgYnl0ZXN0b3JlYWQgPSBjdXJseF91enRvc2koKmJ1ZnNpemUgLSBvZmZzZXQpOwogCiAgICAgaWYoIWZnZXRzKCpidWZmZXIgKyBvZmZzZXQsIGJ5dGVzdG9yZWFkLCBzdHJlYW0pKQotICAgICAgcmV0dXJuIChvZmZzZXQgIT0gMCkgPyBHUEVfT0sgOiBHUEVfRU5EX09GX0ZJTEUgOworICAgICAgcmV0dXJuIChvZmZzZXQgIT0gMCkgPyBHUEVfT0sgOiBHUEVfRU5EX09GX0ZJTEU7CiAKICAgICBsZW5ndGggPSBvZmZzZXQgKyBzdHJsZW4oKmJ1ZmZlciArIG9mZnNldCk7CiAgICAgaWYoKigqYnVmZmVyICsgbGVuZ3RoIC0gMSkgPT0gJ1xuJykKZGlmZiAtLWdpdCBhL3Rlc3RzL3NlcnZlci9nZXRwYXJ0LmggYi90ZXN0cy9zZXJ2ZXIvZ2V0cGFydC5oCmluZGV4IDI1MzIwYjAuLjI3NzM2ODUgMTAwNjQ0Ci0tLSBhL3Rlc3RzL3NlcnZlci9nZXRwYXJ0LmgKKysrIGIvdGVzdHMvc2VydmVyL2dldHBhcnQuaApAQCAtMTEsNyArMTEsNyBAQAogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3Rlc3RzL3NlcnZlci9yZXNvbHZlLmMgYi90ZXN0cy9zZXJ2ZXIvcmVzb2x2ZS5jCmluZGV4IDM5ODQ5ZTcuLjIwNjI0NWEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL3NlcnZlci9yZXNvbHZlLmMKKysrIGIvdGVzdHMvc2VydmVyL3Jlc29sdmUuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTEyNiw3ICsxMjYsNyBAQAogICAgICAgc2Nsb3NlKHMpOwogICAgIH0KIAotICAgIGlmIChyYyA9PSAwKSB7CisgICAgaWYocmMgPT0gMCkgewogICAgICAgLyogZ2V0YWRkcmluZm8oKSByZXNvbHZlICovCiAgICAgICBzdHJ1Y3QgYWRkcmluZm8gKmFpOwogICAgICAgc3RydWN0IGFkZHJpbmZvIGhpbnRzOwpAQCAtMTM4LDcgKzEzOCw3IEBACiAgICAgICAvKiBVc2UgcGFyZW50aGVzaXMgYXJvdW5kIGZ1bmN0aW9ucyB0byBzdG9wIHRoZW0gZnJvbSBiZWluZyByZXBsYWNlZCBieQogICAgICAgICAgdGhlIG1hY3JvIGluIG1lbWRlYnVnLmggKi8KICAgICAgIHJjID0gKGdldGFkZHJpbmZvKShob3N0LCAiODAiLCAmaGludHMsICZhaSk7Ci0gICAgICBpZiAocmMgPT0gMCkKKyAgICAgIGlmKHJjID09IDApCiAgICAgICAgIChmcmVlYWRkcmluZm8pKGFpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL3Rlc3RzL3NlcnZlci9ydHNwZC5jIGIvdGVzdHMvc2VydmVyL3J0c3BkLmMKaW5kZXggMDI5M2Y1OS4uOTFlZjZjNiAxMDA2NDQKLS0tIGEvdGVzdHMvc2VydmVyL3J0c3BkLmMKKysrIGIvdGVzdHMvc2VydmVyL3J0c3BkLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDEzLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zNTMsMTUgKzM1MywxNSBAQAogICAgIGNoYXIgKnB0cjsKIAogICAgIGlmKCFzdHJjbXAocHJvdF9zdHIsICJIVFRQIikpIHsKLSAgICAgICAgcmVxLT5wcm90b2NvbCA9IFJQUk9UX0hUVFA7CisgICAgICByZXEtPnByb3RvY29sID0gUlBST1RfSFRUUDsKICAgICB9CiAgICAgZWxzZSBpZighc3RyY21wKHByb3Rfc3RyLCAiUlRTUCIpKSB7Ci0gICAgICAgIHJlcS0+cHJvdG9jb2wgPSBSUFJPVF9SVFNQOworICAgICAgcmVxLT5wcm90b2NvbCA9IFJQUk9UX1JUU1A7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICByZXEtPnByb3RvY29sID0gUlBST1RfTk9ORTsKLSAgICAgICAgbG9nbXNnKCJnb3QgdW5rbm93biBwcm90b2NvbCAlcyIsIHByb3Rfc3RyKTsKLSAgICAgICAgcmV0dXJuIDE7CisgICAgICByZXEtPnByb3RvY29sID0gUlBST1RfTk9ORTsKKyAgICAgIGxvZ21zZygiZ290IHVua25vd24gcHJvdG9jb2wgJXMiLCBwcm90X3N0cik7CisgICAgICByZXR1cm4gMTsKICAgICB9CiAKICAgICByZXEtPnByb3RfdmVyc2lvbiA9IHByb3RfbWFqb3IqMTAgKyBwcm90X21pbm9yOwpAQCAtMzc1LDEwICszNzUsMTAgQEAKICAgICAgIGNoYXIgKmZpbGVuYW1lOwogCiAgICAgICBpZigoc3RybGVuKGRvYykgKyBzdHJsZW4ocmVxdWVzdCkpIDwgMjAwKQotICAgICAgICBzcHJpbnRmKGxvZ2J1ZiwgIkdvdCByZXF1ZXN0OiAlcyAlcyAlcy8lZC4lZCIsCi0gICAgICAgICAgICAgICAgcmVxdWVzdCwgZG9jLCBwcm90X3N0ciwgcHJvdF9tYWpvciwgcHJvdF9taW5vcik7CisgICAgICAgIHNucHJpbnRmKGxvZ2J1Ziwgc2l6ZW9mKGxvZ2J1ZiksICJHb3QgcmVxdWVzdDogJXMgJXMgJXMvJWQuJWQiLAorICAgICAgICAgICAgICAgICByZXF1ZXN0LCBkb2MsIHByb3Rfc3RyLCBwcm90X21ham9yLCBwcm90X21pbm9yKTsKICAgICAgIGVsc2UKLSAgICAgICAgc3ByaW50Zihsb2didWYsICJHb3QgYSAqSFVHRSogcmVxdWVzdCAlcy8lZC4lZCIsCisgICAgICAgIHNucHJpbnRmKGxvZ2J1Ziwgc2l6ZW9mKGxvZ2J1ZiksICJHb3QgYSAqSFVHRSogcmVxdWVzdCAlcy8lZC4lZCIsCiAgICAgICAgICAgICAgICAgcHJvdF9zdHIsIHByb3RfbWFqb3IsIHByb3RfbWlub3IpOwogICAgICAgbG9nbXNnKCIlcyIsIGxvZ2J1Zik7CiAKQEAgLTQwOSw4ICs0MDksOCBAQAogICAgICAgZWxzZQogICAgICAgICByZXEtPnBhcnRubyA9IDA7CiAKLSAgICAgIHNwcmludGYobG9nYnVmLCAiUmVxdWVzdGVkIHRlc3QgbnVtYmVyICVsZCBwYXJ0ICVsZCIsCi0gICAgICAgICAgICAgIHJlcS0+dGVzdG5vLCByZXEtPnBhcnRubyk7CisgICAgICBzbnByaW50Zihsb2didWYsIHNpemVvZihsb2didWYpLCAiUmVxdWVzdGVkIHRlc3QgbnVtYmVyICVsZCBwYXJ0ICVsZCIsCisgICAgICAgICAgICAgICByZXEtPnRlc3RubywgcmVxLT5wYXJ0bm8pOwogICAgICAgbG9nbXNnKCIlcyIsIGxvZ2J1Zik7CiAKICAgICAgIGZpbGVuYW1lID0gdGVzdDJmaWxlKHJlcS0+dGVzdG5vKTsKQEAgLTQ4OCw3ICs0ODgsNyBAQAogICAgICAgICAgICAgICAgIHJ0cF9zY3JhdGNoWzBdID0gJyQnOwogCiAgICAgICAgICAgICAgICAgLyogVGhlIGNoYW5uZWwgZm9sbG93cyBhbmQgaXMgb25lIGJ5dGUgKi8KLSAgICAgICAgICAgICAgICBTRVRfUlRQX1BLVF9DSE4ocnRwX3NjcmF0Y2ggLHJ0cF9jaGFubmVsKTsKKyAgICAgICAgICAgICAgICBTRVRfUlRQX1BLVF9DSE4ocnRwX3NjcmF0Y2gsIHJ0cF9jaGFubmVsKTsKIAogICAgICAgICAgICAgICAgIC8qIExlbmd0aCBmb2xsb3dzIGFuZCBpcyBhIHR3byBieXRlIHNob3J0IGluIG5ldHdvcmsgb3JkZXIgKi8KICAgICAgICAgICAgICAgICBTRVRfUlRQX1BLVF9MRU4ocnRwX3NjcmF0Y2gsIHJ0cF9zaXplKTsKQEAgLTUwMSwxNCArNTAxLDE4IEBACiAgICAgICAgICAgICAgICAgaWYocmVxLT5ydHBfYnVmZmVyID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICAgIHJlcS0+cnRwX2J1ZmZlciA9IHJ0cF9zY3JhdGNoOwogICAgICAgICAgICAgICAgICAgcmVxLT5ydHBfYnVmZmVyc2l6ZSA9IHJ0cF9zaXplICsgNDsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgcmVxLT5ydHBfYnVmZmVyID0gcmVhbGxvYyhyZXEtPnJ0cF9idWZmZXIsIHJlcS0+cnRwX2J1ZmZlcnNpemUgKyBydHBfc2l6ZSArIDQpOwotICAgICAgICAgICAgICAgICAgbWVtY3B5KHJlcS0+cnRwX2J1ZmZlciArIHJlcS0+cnRwX2J1ZmZlcnNpemUsIHJ0cF9zY3JhdGNoLCBydHBfc2l6ZSArIDQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgIHJlcS0+cnRwX2J1ZmZlciA9IHJlYWxsb2MocmVxLT5ydHBfYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXEtPnJ0cF9idWZmZXJzaXplICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRwX3NpemUgKyA0KTsKKyAgICAgICAgICAgICAgICAgIG1lbWNweShyZXEtPnJ0cF9idWZmZXIgKyByZXEtPnJ0cF9idWZmZXJzaXplLCBydHBfc2NyYXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBydHBfc2l6ZSArIDQpOwogICAgICAgICAgICAgICAgICAgcmVxLT5ydHBfYnVmZmVyc2l6ZSArPSBydHBfc2l6ZSArIDQ7CiAgICAgICAgICAgICAgICAgICBmcmVlKHJ0cF9zY3JhdGNoKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbG9nbXNnKCJydHBfYnVmZmVyc2l6ZSBpcyAlenUsIHJ0cF9zaXplIGlzICVkLiIsIHJlcS0+cnRwX2J1ZmZlcnNpemUsIHJ0cF9zaXplKTsKLQorICAgICAgICAgICAgICAgIGxvZ21zZygicnRwX2J1ZmZlcnNpemUgaXMgJXp1LCBydHBfc2l6ZSBpcyAlZC4iLAorICAgICAgICAgICAgICAgICAgICAgICByZXEtPnJ0cF9idWZmZXJzaXplLCBydHBfc2l6ZSk7CiAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgewpAQCAtNTI5LDggKzUzMyw5IEBACiAgICAgZWxzZSB7CiAgICAgICBpZihzc2NhbmYocmVxLT5yZXFidWYsICJDT05ORUNUICUiIE1BWERPQ05BTUVMRU5fVFhUICJzIEhUVFAvJWQuJWQiLAogICAgICAgICAgICAgICAgIGRvYywgJnByb3RfbWFqb3IsICZwcm90X21pbm9yKSA9PSAzKSB7Ci0gICAgICAgIHNwcmludGYobG9nYnVmLCAiUmVjZWl2ZWQgYSBDT05ORUNUICVzIEhUVFAvJWQuJWQgcmVxdWVzdCIsCi0gICAgICAgICAgICAgICAgZG9jLCBwcm90X21ham9yLCBwcm90X21pbm9yKTsKKyAgICAgICAgc25wcmludGYobG9nYnVmLCBzaXplb2YobG9nYnVmKSwKKyAgICAgICAgICAgICAgICAgIlJlY2VpdmVkIGEgQ09OTkVDVCAlcyBIVFRQLyVkLiVkIHJlcXVlc3QiLAorICAgICAgICAgICAgICAgICBkb2MsIHByb3RfbWFqb3IsIHByb3RfbWlub3IpOwogICAgICAgICBsb2dtc2coIiVzIiwgbG9nYnVmKTsKIAogICAgICAgICBpZihyZXEtPnByb3RfdmVyc2lvbiA9PSAxMCkKQEAgLTY2MiwxMCArNjY3LDExIEBACiAgICAgcmVxLT5udGxtID0gVFJVRTsgLyogTlRMTSBmb3VuZCAqLwogICAgIGxvZ21zZygiUmVjZWl2ZWQgTlRMTSB0eXBlLTEsIHNlbmRpbmcgYmFjayBkYXRhICVsZCIsIHJlcS0+cGFydG5vKTsKICAgfQotICBlbHNlIGlmKChyZXEtPnBhcnRubyA+PSAxMDAwKSAmJiBzdHJzdHIocmVxLT5yZXFidWYsICJBdXRob3JpemF0aW9uOiBCYXNpYyIpKSB7Ci0gICAgLyogSWYgdGhlIGNsaWVudCBpcyBwYXNzaW5nIHRoaXMgQmFzaWMtaGVhZGVyIGFuZCB0aGUgcGFydCBudW1iZXIgaXMgYWxyZWFkeQotICAgICAgID49MTAwMCwgd2UgYWRkIDEgdG8gdGhlIHBhcnQgbnVtYmVyLiAgVGhpcyBhbGxvd3Mgc2ltcGxlIEJhc2ljIGF1dGhlbnRpY2F0aW9uCi0gICAgICAgbmVnb3RpYXRpb24gdG8gd29yayBpbiB0aGUgdGVzdCBzdWl0ZS4gKi8KKyAgZWxzZSBpZigocmVxLT5wYXJ0bm8gPj0gMTAwMCkgJiYKKyAgICAgICAgICBzdHJzdHIocmVxLT5yZXFidWYsICJBdXRob3JpemF0aW9uOiBCYXNpYyIpKSB7CisgICAgLyogSWYgdGhlIGNsaWVudCBpcyBwYXNzaW5nIHRoaXMgQmFzaWMtaGVhZGVyIGFuZCB0aGUgcGFydCBudW1iZXIgaXMKKyAgICAgICBhbHJlYWR5ID49MTAwMCwgd2UgYWRkIDEgdG8gdGhlIHBhcnQgbnVtYmVyLiAgVGhpcyBhbGxvd3Mgc2ltcGxlIEJhc2ljCisgICAgICAgYXV0aGVudGljYXRpb24gbmVnb3RpYXRpb24gdG8gd29yayBpbiB0aGUgdGVzdCBzdWl0ZS4gKi8KICAgICByZXEtPnBhcnRubyArPSAxOwogICAgIGxvZ21zZygiUmVjZWl2ZWQgQmFzaWMgcmVxdWVzdCwgc2VuZGluZyBiYWNrIGRhdGEgJWxkIiwgcmVxLT5wYXJ0bm8pOwogICB9CkBAIC03MjMsMTUgKzcyOSwxNSBAQAogICBzaXplX3Qgd3JpdGVsZWZ0OwogICBGSUxFICpkdW1wOwogCi0gIGlmIChyZXFidWYgPT0gTlVMTCkKKyAgaWYocmVxYnVmID09IE5VTEwpCiAgICAgcmV0dXJuOwotICBpZiAodG90YWxzaXplID09IDApCisgIGlmKHRvdGFsc2l6ZSA9PSAwKQogICAgIHJldHVybjsKIAogICBkbyB7CiAgICAgZHVtcCA9IGZvcGVuKFJFUVVFU1RfRFVNUCwgImFiIik7Ci0gIH0gd2hpbGUgKChkdW1wID09IE5VTEwpICYmICgoZXJyb3IgPSBlcnJubykgPT0gRUlOVFIpKTsKLSAgaWYgKGR1bXAgPT0gTlVMTCkgeworICB9IHdoaWxlKChkdW1wID09IE5VTEwpICYmICgoZXJyb3IgPSBlcnJubykgPT0gRUlOVFIpKTsKKyAgaWYoZHVtcCA9PSBOVUxMKSB7CiAgICAgbG9nbXNnKCJFcnJvciBvcGVuaW5nIGZpbGUgJXMgZXJyb3I6ICVkICVzIiwKICAgICAgICAgICAgUkVRVUVTVF9EVU1QLCBlcnJvciwgc3RyZXJyb3IoZXJyb3IpKTsKICAgICBsb2dtc2coIkZhaWxlZCB0byB3cml0ZSByZXF1ZXN0IGlucHV0IHRvICIgUkVRVUVTVF9EVU1QKTsKQEAgLTc0Niw3ICs3NTIsNyBAQAogICAgICAgZ290byBzdG9yZXJlcXVlc3RfY2xlYW51cDsKICAgICBpZih3cml0dGVuID4gMCkKICAgICAgIHdyaXRlbGVmdCAtPSB3cml0dGVuOwotICB9IHdoaWxlICgod3JpdGVsZWZ0ID4gMCkgJiYgKChlcnJvciA9IGVycm5vKSA9PSBFSU5UUikpOworICB9IHdoaWxlKCh3cml0ZWxlZnQgPiAwKSAmJiAoKGVycm9yID0gZXJybm8pID09IEVJTlRSKSk7CiAKICAgaWYod3JpdGVsZWZ0ID09IDApCiAgICAgbG9nbXNnKCJXcm90ZSByZXF1ZXN0ICglenUgYnl0ZXMpIGlucHV0IHRvICIgUkVRVUVTVF9EVU1QLCB0b3RhbHNpemUpOwpAQCAtODE1LDkgKzgyMSw5IEBACiAgICAgfQogICAgIGVsc2UgewogICAgICAgaWYocmVxLT5za2lwKQotICAgICAgICAvKiB3ZSBhcmUgaW5zdHJ1Y3RlZCB0byBub3QgcmVhZCB0aGUgZW50aXJlIHRoaW5nLCBzbyB3ZSBtYWtlIHN1cmUgdG8gb25seQotICAgICAgICAgICByZWFkIHdoYXQgd2UncmUgc3VwcG9zZWQgdG8gYW5kIE5PVCByZWFkIHRoZSBlbmlyZSB0aGluZyB0aGUgY2xpZW50Ci0gICAgICAgICAgIHdhbnRzIHRvIHNlbmQhICovCisgICAgICAgIC8qIHdlIGFyZSBpbnN0cnVjdGVkIHRvIG5vdCByZWFkIHRoZSBlbnRpcmUgdGhpbmcsIHNvIHdlIG1ha2Ugc3VyZSB0bworICAgICAgICAgICBvbmx5IHJlYWQgd2hhdCB3ZSdyZSBzdXBwb3NlZCB0byBhbmQgTk9UIHJlYWQgdGhlIGVuaXJlIHRoaW5nIHRoZQorICAgICAgICAgICBjbGllbnQgd2FudHMgdG8gc2VuZCEgKi8KICAgICAgICAgZ290ID0gc3JlYWQoc29jaywgcmVxYnVmICsgcmVxLT5vZmZzZXQsIHJlcS0+Y2wpOwogICAgICAgZWxzZQogICAgICAgICBnb3QgPSBzcmVhZChzb2NrLCByZXFidWYgKyByZXEtPm9mZnNldCwgUkVRQlVGU0laLTEgLSByZXEtPm9mZnNldCk7CkBAIC05MDgsNyArOTE0LDcgQEAKICAgY2FzZSBSQ01EX1NUUkVBTToKICNkZWZpbmUgU1RSRUFNVEhJUyAiYSBzdHJpbmcgdG8gc3RyZWFtIDAxMjM0NTY3ODkwXG4iCiAgICAgY291bnQgPSBzdHJsZW4oU1RSRUFNVEhJUyk7Ci0gICAgZm9yICg7OykgeworICAgIGZvcig7OykgewogICAgICAgd3JpdHRlbiA9IHN3cml0ZShzb2NrLCBTVFJFQU1USElTLCBjb3VudCk7CiAgICAgICBpZihnb3RfZXhpdF9zaWduYWwpCiAgICAgICAgIHJldHVybiAtMTsKQEAgLTkzNywxMCArOTQzLDEyIEBACiAgICAgY2FzZSBET0NOVU1CRVJfV0VSVUxFWjoKICAgICAgIC8qIHdlIGdvdCBhICJmcmllbmRzPyIgcXVlc3Rpb24sIHJlcGx5IGJhY2sgdGhhdCB3ZSBzdXJlIGFyZSAqLwogICAgICAgbG9nbXNnKCJJZGVudGlmeWluZyBvdXJzZWx2ZXMgYXMgZnJpZW5kcyIpOwotICAgICAgc3ByaW50Zihtc2didWYsICJSVFNQX1NFUlZFUiBXRSBST09MWjogJWxkXHJcbiIsIChsb25nKWdldHBpZCgpKTsKKyAgICAgIHNucHJpbnRmKG1zZ2J1Ziwgc2l6ZW9mKG1zZ2J1ZiksICJSVFNQX1NFUlZFUiBXRSBST09MWjogJWxkXHJcbiIsCisgICAgICAgICAgICAgICAobG9uZylnZXRwaWQoKSk7CiAgICAgICBtc2dsZW4gPSBzdHJsZW4obXNnYnVmKTsKLSAgICAgIHNwcmludGYod2VhcmUsICJIVFRQLzEuMSAyMDAgT0tcclxuQ29udGVudC1MZW5ndGg6ICV6dVxyXG5cclxuJXMiLAotICAgICAgICAgICAgICBtc2dsZW4sIG1zZ2J1Zik7CisgICAgICBzbnByaW50Zih3ZWFyZSwgc2l6ZW9mKHdlYXJlKSwKKyAgICAgICAgICAgICAgICJIVFRQLzEuMSAyMDAgT0tcclxuQ29udGVudC1MZW5ndGg6ICV6dVxyXG5cclxuJXMiLAorICAgICAgICAgICAgICAgbXNnbGVuLCBtc2didWYpOwogICAgICAgYnVmZmVyID0gd2VhcmU7CiAgICAgICBicmVhazsKICAgICBjYXNlIERPQ05VTUJFUl9JTlRFUk5BTDoKQEAgLTk1OCw5ICs5NjYsMTAgQEAKICAgICBkZWZhdWx0OgogICAgICAgbG9nbXNnKCJSZXBseWluZyB0byB3aXRoIGEgNDA0Iik7CiAgICAgICBpZihyZXEtPnByb3RvY29sID09IFJQUk9UX0hUVFApIHsKLSAgICAgICAgICBidWZmZXIgPSBkb2M0MDRfSFRUUDsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgYnVmZmVyID0gZG9jNDA0X1JUU1A7CisgICAgICAgIGJ1ZmZlciA9IGRvYzQwNF9IVFRQOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIGJ1ZmZlciA9IGRvYzQwNF9SVFNQOwogICAgICAgfQogICAgICAgYnJlYWs7CiAgICAgfQpAQCAtOTcxLDcgKzk4MCw3IEBACiAgICAgY2hhciAqZmlsZW5hbWUgPSB0ZXN0MmZpbGUocmVxLT50ZXN0bm8pOwogCiAgICAgaWYoMCAhPSByZXEtPnBhcnRubykKLSAgICAgIHNwcmludGYocGFydGJ1ZiwgImRhdGElbGQiLCByZXEtPnBhcnRubyk7CisgICAgICBzbnByaW50ZihwYXJ0YnVmLCBzaXplb2YocGFydGJ1ZiksICJkYXRhJWxkIiwgcmVxLT5wYXJ0bm8pOwogCiAgICAgc3RyZWFtPWZvcGVuKGZpbGVuYW1lLCAicmIiKTsKICAgICBpZighc3RyZWFtKSB7CkBAIC0xMDU4LDcgKzEwNjcsNyBAQAogICAgIGlmKG51bSA+IDIwMCkKICAgICAgIG51bSA9IDIwMDsKICAgICB3cml0dGVuID0gc3dyaXRlKHNvY2ssIGJ1ZmZlciwgbnVtKTsKLSAgICBpZiAod3JpdHRlbiA8IDApIHsKKyAgICBpZih3cml0dGVuIDwgMCkgewogICAgICAgc2VuZGZhaWx1cmUgPSBUUlVFOwogICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTA4Miw3ICsxMDkxLDggQEAKICAgICAgIHNpemVfdCBudW0gPSBjb3VudDsKICAgICAgIGlmKG51bSA+IDIwMCkKICAgICAgICAgbnVtID0gMjAwOwotICAgICAgd3JpdHRlbiA9IHN3cml0ZShzb2NrLCByZXEtPnJ0cF9idWZmZXIgKyAocmVxLT5ydHBfYnVmZmVyc2l6ZSAtIGNvdW50KSwgbnVtKTsKKyAgICAgIHdyaXR0ZW4gPSBzd3JpdGUoc29jaywgcmVxLT5ydHBfYnVmZmVyICsgKHJlcS0+cnRwX2J1ZmZlcnNpemUgLSBjb3VudCksCisgICAgICAgICAgICAgICAgICAgICAgIG51bSk7CiAgICAgICBpZih3cml0dGVuIDwgMCkgewogICAgICAgICBzZW5kZmFpbHVyZSA9IFRSVUU7CiAgICAgICAgIGJyZWFrOwpAQCAtMTEwOCw3ICsxMTE4LDggQEAKICAgfQogCiAgIGlmKHNlbmRmYWlsdXJlKSB7Ci0gICAgbG9nbXNnKCJTZW5kaW5nIHJlc3BvbnNlIGZhaWxlZC4gT25seSAoJXp1IGJ5dGVzKSBvZiAoJXp1IGJ5dGVzKSB3ZXJlIHNlbnQiLAorICAgIGxvZ21zZygiU2VuZGluZyByZXNwb25zZSBmYWlsZWQuIE9ubHkgKCV6dSBieXRlcykgb2YgIgorICAgICAgICAgICAiKCV6dSBieXRlcykgd2VyZSBzZW50IiwKICAgICAgICAgICAgcmVzcG9uc2VzaXplLWNvdW50LCByZXNwb25zZXNpemUpOwogICAgIGZyZWUocHRyKTsKICAgICBmcmVlKGNtZCk7CkBAIC0xMTE5LDcgKzExMzAsNyBAQAogICAgICAgICAgcmVzcG9uc2VzaXplKTsKICAgZnJlZShwdHIpOwogCi0gIGlmKGNtZHNpemUgPiAwICkgeworICBpZihjbWRzaXplID4gMCkgewogICAgIGNoYXIgY29tbWFuZFszMl07CiAgICAgaW50IHF1YXJ0ZXJzOwogICAgIGludCBudW07CkBAIC0xMjc4LDcgKzEyODksNyBAQAogICB9CiAKICAgZmxhZyA9IDE7Ci0gIGlmICgwICE9IHNldHNvY2tvcHQoc29jaywgU09MX1NPQ0tFVCwgU09fUkVVU0VBRERSLAorICBpZigwICE9IHNldHNvY2tvcHQoc29jaywgU09MX1NPQ0tFVCwgU09fUkVVU0VBRERSLAogICAgICAgICAgICAgKHZvaWQgKikmZmxhZywgc2l6ZW9mKGZsYWcpKSkgewogICAgIGVycm9yID0gU09DS0VSUk5POwogICAgIGxvZ21zZygic2V0c29ja29wdChTT19SRVVTRUFERFIpIGZhaWxlZCB3aXRoIGVycm9yOiAoJWQpICVzIiwKQEAgLTEzMzEsMTIgKzEzNDIsMTIgQEAKICAgaWYoIXdyb3RlcGlkZmlsZSkKICAgICBnb3RvIHNlcnZlcl9jbGVhbnVwOwogCi0gIGZvciAoOzspIHsKKyAgZm9yKDs7KSB7CiAgICAgbXNnc29jayA9IGFjY2VwdChzb2NrLCBOVUxMLCBOVUxMKTsKIAogICAgIGlmKGdvdF9leGl0X3NpZ25hbCkKICAgICAgIGJyZWFrOwotICAgIGlmIChDVVJMX1NPQ0tFVF9CQUQgPT0gbXNnc29jaykgeworICAgIGlmKENVUkxfU09DS0VUX0JBRCA9PSBtc2dzb2NrKSB7CiAgICAgICBlcnJvciA9IFNPQ0tFUlJOTzsKICAgICAgIGxvZ21zZygiTUFKT1IgRVJST1I6IGFjY2VwdCgpIGZhaWxlZCB3aXRoIGVycm9yOiAoJWQpICVzIiwKICAgICAgICAgICAgICBlcnJvciwgc3RyZXJyb3IoZXJyb3IpKTsKQEAgLTEzNjAsNyArMTM3MSw3IEBACiAgICAgICogcmVzcG9uc2UgaW4gbWFueSBzbWFsbCBzZWdtZW50cyB0byB0b3J0dXJlIHRoZSBjbGllbnRzIG1vcmUuCiAgICAgICovCiAgICAgZmxhZyA9IDE7Ci0gICAgaWYgKHNldHNvY2tvcHQobXNnc29jaywgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLAorICAgIGlmKHNldHNvY2tvcHQobXNnc29jaywgSVBQUk9UT19UQ1AsIFRDUF9OT0RFTEFZLAogICAgICAgICAgICAgICAgICAgICh2b2lkICopJmZsYWcsIHNpemVvZihmbGFnKSkgPT0gLTEpIHsKICAgICAgIGxvZ21zZygiPT09PT4gVENQX05PREVMQVkgZmFpbGVkIik7CiAgICAgfQpAQCAtMTQyNCw3ICsxNDM1LDcgQEAKICAgICAgIGNsZWFyX2Fkdmlzb3JfcmVhZF9sb2NrKFNFUlZFUkxPR1NfTE9DSyk7CiAgICAgfQogCi0gICAgaWYgKHJlcS50ZXN0bm8gPT0gRE9DTlVNQkVSX1FVSVQpCisgICAgaWYocmVxLnRlc3RubyA9PSBET0NOVU1CRVJfUVVJVCkKICAgICAgIGJyZWFrOwogICB9CiAKZGlmZiAtLWdpdCBhL3Rlc3RzL3NlcnZlci9zZXJ2ZXJfc2V0dXAuaCBiL3Rlc3RzL3NlcnZlci9zZXJ2ZXJfc2V0dXAuaAppbmRleCA1OWUzNjk1Li43NmM0NjIzIDEwMDY0NAotLS0gYS90ZXN0cy9zZXJ2ZXIvc2VydmVyX3NldHVwLmgKKysrIGIvdGVzdHMvc2VydmVyL3NlcnZlcl9zZXR1cC5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvdGVzdHMvc2VydmVyL3NlcnZlcl9zb2NrYWRkci5oIGIvdGVzdHMvc2VydmVyL3NlcnZlcl9zb2NrYWRkci5oCmluZGV4IDNmNGNkNjcuLmJiY2FiODMgMTAwNjQ0Ci0tLSBhL3Rlc3RzL3NlcnZlci9zZXJ2ZXJfc29ja2FkZHIuaAorKysgYi90ZXN0cy9zZXJ2ZXIvc2VydmVyX3NvY2thZGRyLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS90ZXN0cy9zZXJ2ZXIvc29ja2ZpbHQuYyBiL3Rlc3RzL3NlcnZlci9zb2NrZmlsdC5jCmluZGV4IGE0NDk2ZTAuLjM4YWE1MWUgMTAwNjQ0Ci0tLSBhL3Rlc3RzL3NlcnZlci9zb2NrZmlsdC5jCisrKyBiL3Rlc3RzL3NlcnZlci9zb2NrZmlsdC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNTMsMzEgKzUzLDM0IEBACiAgKgogICogVGhpcyBwcm9ncmFtIGlzIGEgc2luZ2xlLXRocmVhZGVkIHByb2Nlc3MuCiAgKgotICogVGhpcyBwcm9ncmFtIGlzIGludGVuZGVkIHRvIGJlIGhpZ2hseSBwb3J0YWJsZSBhbmQgYXMgc3VjaCBpdCBtdXN0IGJlIGtlcHQgYXMKLSAqIHNpbXBsZSBhcyBwb3NzaWJsZSwgZHVlIHRvIHRoaXMgdGhlIG9ubHkgc2lnbmFsIGhhbmRsaW5nIG1lY2hhbmlzbXMgdXNlZCB3aWxsCi0gKiBiZSB0aG9zZSBvZiBBTlNJIEMsIGFuZCB1c2VkIG9ubHkgaW4gdGhlIG1vc3QgYmFzaWMgZm9ybSB3aGljaCBpcyBnb29kIGVub3VnaAotICogZm9yIHRoZSBwdXJwb3NlIG9mIHRoaXMgcHJvZ3JhbS4KKyAqIFRoaXMgcHJvZ3JhbSBpcyBpbnRlbmRlZCB0byBiZSBoaWdobHkgcG9ydGFibGUgYW5kIGFzIHN1Y2ggaXQgbXVzdCBiZSBrZXB0CisgKiBhcyBzaW1wbGUgYXMgcG9zc2libGUsIGR1ZSB0byB0aGlzIHRoZSBvbmx5IHNpZ25hbCBoYW5kbGluZyBtZWNoYW5pc21zIHVzZWQKKyAqIHdpbGwgYmUgdGhvc2Ugb2YgQU5TSSBDLCBhbmQgdXNlZCBvbmx5IGluIHRoZSBtb3N0IGJhc2ljIGZvcm0gd2hpY2ggaXMgZ29vZAorICogZW5vdWdoIGZvciB0aGUgcHVycG9zZSBvZiB0aGlzIHByb2dyYW0uCiAgKgogICogRm9yIHRoZSBhYm92ZSByZWFzb24gYW5kIHRoZSBzcGVjaWZpYyBuZWVkcyBvZiB0aGlzIHByb2dyYW0gc2lnbmFscyBTSUdIVVAsCi0gKiBTSUdQSVBFIGFuZCBTSUdBTFJNIHdpbGwgYmUgc2ltcGx5IGlnbm9yZWQgb24gc3lzdGVtcyB3aGVyZSB0aGlzIGNhbiBiZSBkb25lLgotICogSWYgcG9zc2libGUsIHNpZ25hbHMgU0lHSU5UIGFuZCBTSUdURVJNIHdpbGwgYmUgaGFuZGxlZCBieSB0aGlzIHByb2dyYW0gYXMgYW4KLSAqIGluZGljYXRpb24gdG8gY2xlYW51cCBhbmQgZmluaXNoIGV4ZWN1dGlvbiBhcyBzb29uIGFzIHBvc3NpYmxlLiAgVGhpcyB3aWxsIGJlCi0gKiBhY2hpZXZlZCB3aXRoIGEgc2luZ2xlIHNpZ25hbCBoYW5kbGVyICdleGl0X3NpZ25hbF9oYW5kbGVyJyBmb3IgYm90aCBzaWduYWxzLgorICogU0lHUElQRSBhbmQgU0lHQUxSTSB3aWxsIGJlIHNpbXBseSBpZ25vcmVkIG9uIHN5c3RlbXMgd2hlcmUgdGhpcyBjYW4gYmUKKyAqIGRvbmUuICBJZiBwb3NzaWJsZSwgc2lnbmFscyBTSUdJTlQgYW5kIFNJR1RFUk0gd2lsbCBiZSBoYW5kbGVkIGJ5IHRoaXMKKyAqIHByb2dyYW0gYXMgYW4gaW5kaWNhdGlvbiB0byBjbGVhbnVwIGFuZCBmaW5pc2ggZXhlY3V0aW9uIGFzIHNvb24gYXMKKyAqIHBvc3NpYmxlLiAgVGhpcyB3aWxsIGJlIGFjaGlldmVkIHdpdGggYSBzaW5nbGUgc2lnbmFsIGhhbmRsZXIKKyAqICdleGl0X3NpZ25hbF9oYW5kbGVyJyBmb3IgYm90aCBzaWduYWxzLgogICoKICAqIFRoZSAnZXhpdF9zaWduYWxfaGFuZGxlcicgdXBvbiB0aGUgZmlyc3QgU0lHSU5UIG9yIFNJR1RFUk0gcmVjZWl2ZWQgc2lnbmFsCiAgKiB3aWxsIGp1c3Qgc2V0IHRvIG9uZSB0aGUgZ2xvYmFsIHZhciAnZ290X2V4aXRfc2lnbmFsJyBzdG9yaW5nIGluIGdsb2JhbCB2YXIKICAqICdleGl0X3NpZ25hbCcgdGhlIHNpZ25hbCB0aGF0IHRyaWdnZXJlZCB0aGlzIGNoYW5nZS4KICAqCiAgKiBOb3RoaW5nIGZhbmN5IHRoYXQgY291bGQgaW50cm9kdWNlIHByb2JsZW1zIGlzIHVzZWQsIHRoZSBwcm9ncmFtIGF0IGNlcnRhaW4KLSAqIHBvaW50cyBpbiBpdHMgbm9ybWFsIGZsb3cgY2hlY2tzIGlmIHZhciAnZ290X2V4aXRfc2lnbmFsJyBpcyBzZXQgYW5kIGluIGNhc2UKLSAqIHRoaXMgaXMgdHJ1ZSBpdCBqdXN0IG1ha2VzIGl0cyB3YXkgb3V0IG9mIGxvb3BzIGFuZCBmdW5jdGlvbnMgaW4gc3RydWN0dXJlZAotICogYW5kIHdlbGwgYmVoYXZlZCBtYW5uZXIgdG8gYWNoaWV2ZSBwcm9wZXIgcHJvZ3JhbSBjbGVhbnVwIGFuZCB0ZXJtaW5hdGlvbi4KKyAqIHBvaW50cyBpbiBpdHMgbm9ybWFsIGZsb3cgY2hlY2tzIGlmIHZhciAnZ290X2V4aXRfc2lnbmFsJyBpcyBzZXQgYW5kIGluCisgKiBjYXNlIHRoaXMgaXMgdHJ1ZSBpdCBqdXN0IG1ha2VzIGl0cyB3YXkgb3V0IG9mIGxvb3BzIGFuZCBmdW5jdGlvbnMgaW4KKyAqIHN0cnVjdHVyZWQgYW5kIHdlbGwgYmVoYXZlZCBtYW5uZXIgdG8gYWNoaWV2ZSBwcm9wZXIgcHJvZ3JhbSBjbGVhbnVwIGFuZAorICogdGVybWluYXRpb24uCiAgKgotICogRXZlbiB3aXRoIHRoZSBhYm92ZSBtZWNoYW5pc20gaW1wbGVtZW50ZWQgaXQgaXMgd29ydGh3aWxlIHRvIG5vdGUgdGhhdCBvdGhlcgotICogc2lnbmFscyBtaWdodCBzdGlsbCBiZSByZWNlaXZlZCwgb3IgdGhhdCB0aGVyZSBtaWdodCBiZSBzeXN0ZW1zIG9uIHdoaWNoIGl0Ci0gKiBpcyBub3QgcG9zc2libGUgdG8gdHJhcCBhbmQgaWdub3JlIHNvbWUgb2YgdGhlIGFib3ZlIHNpZ25hbHMuICBUaGlzIGltcGxpZXMKLSAqIHRoYXQgZm9yIGluY3JlYXNlZCBwb3J0YWJpbGl0eSBhbmQgcmVsaWFiaWxpdHkgdGhlIHByb2dyYW0gbXVzdCBiZSBjb2RlZCBhcwotICogaWYgbm8gc2lnbmFsIHdhcyBiZWluZyBpZ25vcmVkIG9yIGhhbmRsZWQgYXQgYWxsLiAgRW5qb3kgaXQhCisgKiBFdmVuIHdpdGggdGhlIGFib3ZlIG1lY2hhbmlzbSBpbXBsZW1lbnRlZCBpdCBpcyB3b3J0aHdpbGUgdG8gbm90ZSB0aGF0CisgKiBvdGhlciBzaWduYWxzIG1pZ2h0IHN0aWxsIGJlIHJlY2VpdmVkLCBvciB0aGF0IHRoZXJlIG1pZ2h0IGJlIHN5c3RlbXMgb24KKyAqIHdoaWNoIGl0IGlzIG5vdCBwb3NzaWJsZSB0byB0cmFwIGFuZCBpZ25vcmUgc29tZSBvZiB0aGUgYWJvdmUgc2lnbmFscy4KKyAqIFRoaXMgaW1wbGllcyB0aGF0IGZvciBpbmNyZWFzZWQgcG9ydGFiaWxpdHkgYW5kIHJlbGlhYmlsaXR5IHRoZSBwcm9ncmFtCisgKiBtdXN0IGJlIGNvZGVkIGFzIGlmIG5vIHNpZ25hbCB3YXMgYmVpbmcgaWdub3JlZCBvciBoYW5kbGVkIGF0IGFsbC4gIEVuam95CisgKiBpdCEKICAqLwogCiAjaWZkZWYgSEFWRV9TSUdOQUxfSApAQCAtNDY5LDIzICs0NzIsMjggQEAKICAgdW5zaWduZWQgY2hhciAqcHRyID0gYnVmZmVyOwogICBjaGFyICpvcHRyID0gZGF0YTsKICAgc3NpemVfdCB3aWR0aD0wOworICBpbnQgbGVmdCA9IHNpemVvZihkYXRhKTsKIAogICBmb3IoaT0wOyBpPGxlbjsgaSsrKSB7CiAgICAgc3dpdGNoKHB0cltpXSkgewogICAgIGNhc2UgJ1xuJzoKLSAgICAgIHNwcmludGYob3B0ciwgIlxcbiIpOworICAgICAgc25wcmludGYob3B0ciwgbGVmdCwgIlxcbiIpOwogICAgICAgd2lkdGggKz0gMjsKICAgICAgIG9wdHIgKz0gMjsKKyAgICAgIGxlZnQtPTI7CiAgICAgICBicmVhazsKICAgICBjYXNlICdccic6Ci0gICAgICBzcHJpbnRmKG9wdHIsICJcXHIiKTsKKyAgICAgIHNucHJpbnRmKG9wdHIsIGxlZnQsICJcXHIiKTsKICAgICAgIHdpZHRoICs9IDI7CiAgICAgICBvcHRyICs9IDI7CisgICAgICBsZWZ0LT0yOwogICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKLSAgICAgIHNwcmludGYob3B0ciwgIiVjIiwgKElTR1JBUEgocHRyW2ldKSB8fCBwdHJbaV09PTB4MjApID9wdHJbaV06Jy4nKTsKKyAgICAgIHNucHJpbnRmKG9wdHIsIGxlZnQsICIlYyIsIChJU0dSQVBIKHB0cltpXSkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHJbaV09PTB4MjApID9wdHJbaV06Jy4nKTsKICAgICAgIHdpZHRoKys7CiAgICAgICBvcHRyKys7CisgICAgICBsZWZ0LS07CiAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTQ5Myw2ICs1MDEsNyBAQAogICAgICAgbG9nbXNnKCInJXMnIiwgZGF0YSk7CiAgICAgICB3aWR0aCA9IDA7CiAgICAgICBvcHRyID0gZGF0YTsKKyAgICAgIGxlZnQgPSBzaXplb2YoZGF0YSk7CiAgICAgfQogICB9CiAgIGlmKHdpZHRoKQpAQCAtNTA5LDggKzUxOCw4IEBACiAgKiBvdGhlciBoYW5kbGUgdHlwZXMgc3VwcG9ydGVkIGJ5IFdhaXRGb3JNdWx0aXBsZU9iamVjdHNFeCgpIGFzCiAgKiB3ZWxsIGFzIGRpc2sgZmlsZXMsIGFub255bW91cyBhbmQgbmFtZXMgcGlwZXMsIGFuZCBjaGFyYWN0ZXIgaW5wdXQuCiAgKgotICogaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L3dpbmRvd3MvZGVza3RvcC9tczY4NzAyOC5hc3B4Ci0gKiBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL21zNzQxNTcyLmFzcHgKKyAqIGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL21zNjg3MDI4LmFzcHgKKyAqIGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL21zNzQxNTcyLmFzcHgKICAqLwogc3RydWN0IHNlbGVjdF93c193YWl0X2RhdGEgewogICBIQU5ETEUgaGFuZGxlOyAvKiBhY3R1YWwgaGFuZGxlIHRvIHdhaXQgZm9yIGR1cmluZyBzZWxlY3QgKi8KQEAgLTU0Nyw4ICs1NTYsOCBAQAogICAgICAgICAqIEFwcHJvYWNoOiBMb29wIHRpbGwgZWl0aGVyIHRoZSBpbnRlcm5hbCBldmVudCBpcyBzaWduYWxsZWQKICAgICAgICAgKiAgICAgICAgICAgb3IgaWYgdGhlIGVuZCBvZiB0aGUgZmlsZSBoYXMgYWxyZWFkeSBiZWVuIHJlYWNoZWQuCiAgICAgICAgICovCi0gICAgICB3aGlsZShXYWl0Rm9yTXVsdGlwbGVPYmplY3RzRXgoMiwgaGFuZGxlcywgRkFMU0UsIElORklOSVRFLCBGQUxTRSkKLSAgICAgICAgICAgID09IFdBSVRfT0JKRUNUXzAgKyAxKSB7CisgICAgICB3aGlsZShXYWl0Rm9yTXVsdGlwbGVPYmplY3RzRXgoMSwgaGFuZGxlcywgRkFMU0UsIDAsIEZBTFNFKQorICAgICAgICAgICAgPT0gV0FJVF9USU1FT1VUKSB7CiAgICAgICAgIC8qIGdldCB0b3RhbCBzaXplIG9mIGZpbGUgKi8KICAgICAgICAgbGVuZ3RoID0gMDsKICAgICAgICAgc2l6ZS5RdWFkUGFydCA9IDA7CkBAIC01NTgsNyArNTY3LDggQEAKICAgICAgICAgICBzaXplLkhpZ2hQYXJ0ID0gbGVuZ3RoOwogICAgICAgICAgIC8qIGdldCB0aGUgY3VycmVudCBwb3NpdGlvbiB3aXRoaW4gdGhlIGZpbGUgKi8KICAgICAgICAgICBwb3MuUXVhZFBhcnQgPSAwOwotICAgICAgICAgIHBvcy5Mb3dQYXJ0ID0gU2V0RmlsZVBvaW50ZXIoaGFuZGxlLCAwLCAmcG9zLkhpZ2hQYXJ0LCBGSUxFX0NVUlJFTlQpOworICAgICAgICAgIHBvcy5Mb3dQYXJ0ID0gU2V0RmlsZVBvaW50ZXIoaGFuZGxlLCAwLCAmcG9zLkhpZ2hQYXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRV9DVVJSRU5UKTsKICAgICAgICAgICBpZigocG9zLkxvd1BhcnQgIT0gSU5WQUxJRF9TRVRfRklMRV9QT0lOVEVSKSB8fAogICAgICAgICAgICAgIChHZXRMYXN0RXJyb3IoKSA9PSBOT19FUlJPUikpIHsKICAgICAgICAgICAgIC8qIGNvbXBhcmUgcG9zaXRpb24gd2l0aCBzaXplLCBhYm9ydCBpZiBub3QgZXF1YWwgKi8KQEAgLTYxMSw4ICs2MjEsOCBAQAogICAgICAgICAqIEFwcHJvYWNoOiBMb29wIHRpbGwgZWl0aGVyIHRoZSBpbnRlcm5hbCBldmVudCBpcyBzaWduYWxsZWQKICAgICAgICAgKiAgICAgICAgICAgb3IgdGhlcmUgaXMgZGF0YSBpbiB0aGUgcGlwZSBhdmFpbGFibGUgZm9yIHJlYWRpbmcuCiAgICAgICAgICovCi0gICAgICB3aGlsZShXYWl0Rm9yTXVsdGlwbGVPYmplY3RzRXgoMiwgaGFuZGxlcywgRkFMU0UsIElORklOSVRFLCBGQUxTRSkKLSAgICAgICAgICAgID09IFdBSVRfT0JKRUNUXzAgKyAxKSB7CisgICAgICB3aGlsZShXYWl0Rm9yTXVsdGlwbGVPYmplY3RzRXgoMSwgaGFuZGxlcywgRkFMU0UsIDAsIEZBTFNFKQorICAgICAgICAgICAgPT0gV0FJVF9USU1FT1VUKSB7CiAgICAgICAgIC8qIHBlZWsgaW50byB0aGUgcGlwZSBhbmQgcmV0cmlldmUgdGhlIGFtb3VudCBvZiBkYXRhIGF2YWlsYWJsZSAqLwogICAgICAgICBsZW5ndGggPSAwOwogICAgICAgICBpZihQZWVrTmFtZWRQaXBlKGhhbmRsZSwgTlVMTCwgMCwgTlVMTCwgJmxlbmd0aCwgTlVMTCkpIHsKQEAgLTY5NSw3ICs3MDUsNyBAQAogCiAgIC8qIGNoZWNrIGlmIHdlIGdvdCBkZXNjcmlwdG9ycywgc2xlZXAgaW4gY2FzZSB3ZSBnb3Qgbm9uZSAqLwogICBpZighbmZkcykgewotICAgIFNsZWVwKCh0aW1lb3V0LT50dl9zZWMgKiAxMDAwKSArICh0aW1lb3V0LT50dl91c2VjIC8gMTAwMCkpOworICAgIFNsZWVwKCh0aW1lb3V0LT50dl9zZWMqMTAwMCkrKERXT1JEKSgoKGRvdWJsZSl0aW1lb3V0LT50dl91c2VjKS8xMDAwLjApKTsKICAgICByZXR1cm4gMDsKICAgfQogCkBAIC04NTYsNiArODY2LDE3IEBACiAgICAgfQogICB9CiAKKyAgZm9yKGZkcyA9IDA7IGZkcyA8IG5mZHM7IGZkcysrKSB7CisgICAgaWYoRkRfSVNTRVQoZmRzLCByZWFkZmRzKSkKKyAgICAgIGxvZ21zZygic2VsZWN0X3dzOiAlZCBpcyByZWFkYWJsZSIsIGZkcyk7CisKKyAgICBpZihGRF9JU1NFVChmZHMsIHdyaXRlZmRzKSkKKyAgICAgIGxvZ21zZygic2VsZWN0X3dzOiAlZCBpcyB3cml0YWJsZSIsIGZkcyk7CisKKyAgICBpZihGRF9JU1NFVChmZHMsIGV4Y2VwdGZkcykpCisgICAgICBsb2dtc2coInNlbGVjdF93czogJWQgaXMgZXhjZXB0ZWQiLCBmZHMpOworICB9CisKICAgZm9yKGlkeCA9IDA7IGlkeCA8IHdzYTsgaWR4KyspIHsKICAgICBXU0FFdmVudFNlbGVjdChkYXRhW2lkeF0ud3Nhc29jaywgTlVMTCwgMCk7CiAgICAgV1NBQ2xvc2VFdmVudChkYXRhW2lkeF0ud3NhZXZlbnQpOwpAQCAtMTAyNiw3ICsxMDQ3LDcgQEAKICAgICAgIHJldHVybiBGQUxTRTsKIAogICAgIGxvZ21zZygiUmVjZWl2ZWQgJWMlYyVjJWMgKG9uIHN0ZGluKSIsCi0gICAgICAgICAgIGJ1ZmZlclswXSwgYnVmZmVyWzFdLCBidWZmZXJbMl0sIGJ1ZmZlclszXSApOworICAgICAgICAgICBidWZmZXJbMF0sIGJ1ZmZlclsxXSwgYnVmZmVyWzJdLCBidWZmZXJbM10pOwogCiAgICAgaWYoIW1lbWNtcCgiUElORyIsIGJ1ZmZlciwgNCkpIHsKICAgICAgIC8qIHNlbmQgcmVwbHkgb24gc3Rkb3V0LCBqdXN0IHByb3Zpbmcgd2UgYXJlIGFsaXZlICovCkBAIC0xMDM3LDcgKzEwNTgsNyBAQAogICAgIGVsc2UgaWYoIW1lbWNtcCgiUE9SVCIsIGJ1ZmZlciwgNCkpIHsKICAgICAgIC8qIFF1ZXN0aW9uIGFza2luZyB1cyB3aGF0IFBPUlQgbnVtYmVyIHdlIGFyZSBsaXN0ZW5pbmcgdG8uCiAgICAgICAgICBSZXBsaWVzIHRvIFBPUlQgd2l0aCAiSVB2W251bV0vW3BvcnRdIiAqLwotICAgICAgc3ByaW50ZigoY2hhciAqKWJ1ZmZlciwgIiVzLyVodVxuIiwgaXB2X2ludXNlLCBwb3J0KTsKKyAgICAgIHNucHJpbnRmKChjaGFyICopYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgIiVzLyVodVxuIiwgaXB2X2ludXNlLCBwb3J0KTsKICAgICAgIGJ1ZmZlcl9sZW4gPSAoc3NpemVfdClzdHJsZW4oKGNoYXIgKilidWZmZXIpOwogICAgICAgc25wcmludGYoZGF0YSwgc2l6ZW9mKGRhdGEpLCAiUE9SVFxuJTA0enhcbiIsIGJ1ZmZlcl9sZW4pOwogICAgICAgaWYoIXdyaXRlX3N0ZG91dChkYXRhLCAxMCkpCkBAIC0xMDU5LDcgKzEwODAsNyBAQAogICAgICAgYnVmZmVyWzVdID0gJ1wwJzsKIAogICAgICAgYnVmZmVyX2xlbiA9IChzc2l6ZV90KXN0cnRvbCgoY2hhciAqKWJ1ZmZlciwgTlVMTCwgMTYpOwotICAgICAgaWYgKGJ1ZmZlcl9sZW4gPiAoc3NpemVfdClzaXplb2YoYnVmZmVyKSkgeworICAgICAgaWYoYnVmZmVyX2xlbiA+IChzc2l6ZV90KXNpemVvZihidWZmZXIpKSB7CiAgICAgICAgIGxvZ21zZygiRVJST1I6IEJ1ZmZlciBzaXplICglenUgYnl0ZXMpIHRvbyBzbWFsbCBmb3IgZGF0YSBzaXplICIKICAgICAgICAgICAgICAgICIoJXpkIGJ5dGVzKSIsIHNpemVvZihidWZmZXIpLCBidWZmZXJfbGVuKTsKICAgICAgICAgcmV0dXJuIEZBTFNFOwpAQCAtMTQ1Nyw3ICsxNDc4LDcgQEAKICAgICAgIG1lLnNhNC5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKICAgICAgIG1lLnNhNC5zaW5fcG9ydCA9IGh0b25zKGNvbm5lY3Rwb3J0KTsKICAgICAgIG1lLnNhNC5zaW5fYWRkci5zX2FkZHIgPSBJTkFERFJfQU5ZOwotICAgICAgaWYgKCFhZGRyKQorICAgICAgaWYoIWFkZHIpCiAgICAgICAgIGFkZHIgPSAiMTI3LjAuMC4xIjsKICAgICAgIEN1cmxfaW5ldF9wdG9uKEFGX0lORVQsIGFkZHIsICZtZS5zYTQuc2luX2FkZHIpOwogCkBAIC0xNDY4LDcgKzE0ODksNyBAQAogICAgICAgbWVtc2V0KCZtZS5zYTYsIDAsIHNpemVvZihtZS5zYTYpKTsKICAgICAgIG1lLnNhNi5zaW42X2ZhbWlseSA9IEFGX0lORVQ2OwogICAgICAgbWUuc2E2LnNpbjZfcG9ydCA9IGh0b25zKGNvbm5lY3Rwb3J0KTsKLSAgICAgIGlmICghYWRkcikKKyAgICAgIGlmKCFhZGRyKQogICAgICAgICBhZGRyID0gIjo6MSI7CiAgICAgICBDdXJsX2luZXRfcHRvbihBRl9JTkVUNiwgYWRkciwgJm1lLnNhNi5zaW42X2FkZHIpOwogCmRpZmYgLS1naXQgYS90ZXN0cy9zZXJ2ZXIvc3dzLmMgYi90ZXN0cy9zZXJ2ZXIvc3dzLmMKaW5kZXggOWFkNTRlNC4uMjdjODZlMCAxMDA2NDQKLS0tIGEvdGVzdHMvc2VydmVyL3N3cy5jCisrKyBiL3Rlc3RzL3NlcnZlci9zd3MuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTQ5MSwxMSArNDkxLDExIEBACiAgICAgLyogZ2V0IHRoZSBudW1iZXIgYWZ0ZXIgaXQgKi8KICAgICBpZihwdHIpIHsKICAgICAgIGlmKChzdHJsZW4oZG9jKSArIHN0cmxlbihyZXF1ZXN0KSkgPCA0MDApCi0gICAgICAgIHNwcmludGYobG9nYnVmLCAiR290IHJlcXVlc3Q6ICVzICVzIEhUVFAvJWQuJWQiLAotICAgICAgICAgICAgICAgIHJlcXVlc3QsIGRvYywgcHJvdF9tYWpvciwgcHJvdF9taW5vcik7CisgICAgICAgIHNucHJpbnRmKGxvZ2J1Ziwgc2l6ZW9mKGxvZ2J1ZiksICJHb3QgcmVxdWVzdDogJXMgJXMgSFRUUC8lZC4lZCIsCisgICAgICAgICAgICAgICAgIHJlcXVlc3QsIGRvYywgcHJvdF9tYWpvciwgcHJvdF9taW5vcik7CiAgICAgICBlbHNlCi0gICAgICAgIHNwcmludGYobG9nYnVmLCAiR290IGEgKkhVR0UqIHJlcXVlc3QgSFRUUC8lZC4lZCIsCi0gICAgICAgICAgICAgICAgcHJvdF9tYWpvciwgcHJvdF9taW5vcik7CisgICAgICAgIHNucHJpbnRmKGxvZ2J1Ziwgc2l6ZW9mKGxvZ2J1ZiksICJHb3QgYSAqSFVHRSogcmVxdWVzdCBIVFRQLyVkLiVkIiwKKyAgICAgICAgICAgICAgICAgcHJvdF9tYWpvciwgcHJvdF9taW5vcik7CiAgICAgICBsb2dtc2coIiVzIiwgbG9nYnVmKTsKIAogICAgICAgaWYoIXN0cm5jbXAoIi92ZXJpZmllZHNlcnZlciIsIHB0ciwgMTUpKSB7CkBAIC01MjcsOCArNTI3LDggQEAKIAogICAgICAgaWYocmVxLT50ZXN0bm8pIHsKIAotICAgICAgICBzcHJpbnRmKGxvZ2J1ZiwgIlJlcXVlc3RlZCB0ZXN0IG51bWJlciAlbGQgcGFydCAlbGQiLAotICAgICAgICAgICAgICAgIHJlcS0+dGVzdG5vLCByZXEtPnBhcnRubyk7CisgICAgICAgIHNucHJpbnRmKGxvZ2J1Ziwgc2l6ZW9mKGxvZ2J1ZiksICJSZXF1ZXN0ZWQgdGVzdCBudW1iZXIgJWxkIHBhcnQgJWxkIiwKKyAgICAgICAgICAgICAgICAgcmVxLT50ZXN0bm8sIHJlcS0+cGFydG5vKTsKICAgICAgICAgbG9nbXNnKCIlcyIsIGxvZ2J1Zik7CiAKICAgICAgICAgLyogZmluZCBhbmQgcGFyc2UgPHNlcnZlcmNtZD4gZm9yIHRoaXMgdGVzdCAqLwpAQCAtNTQ4LDggKzU0OCw5IEBACiAgICAgICAgIGNoYXIgKnBvcnRwID0gTlVMTDsKICAgICAgICAgdW5zaWduZWQgbG9uZyBwYXJ0PTA7CiAKLSAgICAgICAgc3ByaW50Zihsb2didWYsICJSZWNlaXZlZCBhIENPTk5FQ1QgJXMgSFRUUC8lZC4lZCByZXF1ZXN0IiwKLSAgICAgICAgICAgICAgICBkb2MsIHByb3RfbWFqb3IsIHByb3RfbWlub3IpOworICAgICAgICBzbnByaW50Zihsb2didWYsIHNpemVvZihsb2didWYpLAorICAgICAgICAgICAgICAgICAiUmVjZWl2ZWQgYSBDT05ORUNUICVzIEhUVFAvJWQuJWQgcmVxdWVzdCIsCisgICAgICAgICAgICAgICAgIGRvYywgcHJvdF9tYWpvciwgcHJvdF9taW5vcik7CiAgICAgICAgIGxvZ21zZygiJXMiLCBsb2didWYpOwogCiAgICAgICAgIHJlcS0+Y29ubmVjdF9yZXF1ZXN0ID0gVFJVRTsKQEAgLTU3MSw3ICs1NzIsNyBAQAogICAgICAgICAgIH0KICAgICAgICAgICBpZigqcCAhPSAnXScpCiAgICAgICAgICAgICBsb2dtc2coIkludmFsaWQgQ09OTkVDVCBJUHY2IGFkZHJlc3MgZm9ybWF0Iik7Ci0gICAgICAgICAgZWxzZSBpZiAoKihwKzEpICE9ICc6JykKKyAgICAgICAgICBlbHNlIGlmKCoocCsxKSAhPSAnOicpCiAgICAgICAgICAgICBsb2dtc2coIkludmFsaWQgQ09OTkVDVCBJUHY2IHBvcnQgZm9ybWF0Iik7CiAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgcG9ydHAgPSBwKzE7CkBAIC02MTgsOCArNjE5LDkgQEAKICAgICAgICAgZWxzZQogICAgICAgICAgIHJlcS0+cGFydG5vID0gMDsKIAotICAgICAgICBzcHJpbnRmKGxvZ2J1ZiwgIlJlcXVlc3RlZCB0ZXN0IG51bWJlciAlbGQgcGFydCAlbGQgKGZyb20gaG9zdCBuYW1lKSIsCi0gICAgICAgICAgICAgICAgcmVxLT50ZXN0bm8sIHJlcS0+cGFydG5vKTsKKyAgICAgICAgc25wcmludGYobG9nYnVmLCBzaXplb2YobG9nYnVmKSwKKyAgICAgICAgICAgICAgICAgIlJlcXVlc3RlZCB0ZXN0IG51bWJlciAlbGQgcGFydCAlbGQgKGZyb20gaG9zdCBuYW1lKSIsCisgICAgICAgICAgICAgICAgIHJlcS0+dGVzdG5vLCByZXEtPnBhcnRubyk7CiAgICAgICAgIGxvZ21zZygiJXMiLCBsb2didWYpOwogCiAgICAgICB9CkBAIC02NjgsOCArNjcwLDkgQEAKICAgICAgIGVsc2UKICAgICAgICAgcmVxLT5wYXJ0bm8gPSAwOwogCi0gICAgICBzcHJpbnRmKGxvZ2J1ZiwgIlJlcXVlc3RlZCBHT1BIRVIgdGVzdCBudW1iZXIgJWxkIHBhcnQgJWxkIiwKLSAgICAgICAgICAgICAgcmVxLT50ZXN0bm8sIHJlcS0+cGFydG5vKTsKKyAgICAgIHNucHJpbnRmKGxvZ2J1Ziwgc2l6ZW9mKGxvZ2J1ZiksCisgICAgICAgICAgICAgICAiUmVxdWVzdGVkIEdPUEhFUiB0ZXN0IG51bWJlciAlbGQgcGFydCAlbGQiLAorICAgICAgICAgICAgICAgcmVxLT50ZXN0bm8sIHJlcS0+cGFydG5vKTsKICAgICAgIGxvZ21zZygiJXMiLCBsb2didWYpOwogICAgIH0KICAgfQpAQCAtODQzLDE1ICs4NDYsMTUgQEAKICAgRklMRSAqZHVtcDsKICAgY29uc3QgY2hhciAqZHVtcGZpbGU9aXNfcHJveHk/UkVRVUVTVF9QUk9YWV9EVU1QOlJFUVVFU1RfRFVNUDsKIAotICBpZiAocmVxYnVmID09IE5VTEwpCisgIGlmKHJlcWJ1ZiA9PSBOVUxMKQogICAgIHJldHVybjsKLSAgaWYgKHRvdGFsc2l6ZSA9PSAwKQorICBpZih0b3RhbHNpemUgPT0gMCkKICAgICByZXR1cm47CiAKICAgZG8gewogICAgIGR1bXAgPSBmb3BlbihkdW1wZmlsZSwgImFiIik7Ci0gIH0gd2hpbGUgKChkdW1wID09IE5VTEwpICYmICgoZXJyb3IgPSBlcnJubykgPT0gRUlOVFIpKTsKLSAgaWYgKGR1bXAgPT0gTlVMTCkgeworICB9IHdoaWxlKChkdW1wID09IE5VTEwpICYmICgoZXJyb3IgPSBlcnJubykgPT0gRUlOVFIpKTsKKyAgaWYoZHVtcCA9PSBOVUxMKSB7CiAgICAgbG9nbXNnKCJbMl0gRXJyb3Igb3BlbmluZyBmaWxlICVzIGVycm9yOiAlZCAlcyIsCiAgICAgICAgICAgIGR1bXBmaWxlLCBlcnJvciwgc3RyZXJyb3IoZXJyb3IpKTsKICAgICBsb2dtc2coIkZhaWxlZCB0byB3cml0ZSByZXF1ZXN0IGlucHV0ICIpOwpAQCAtODY2LDcgKzg2OSw3IEBACiAgICAgICBnb3RvIHN0b3JlcmVxdWVzdF9jbGVhbnVwOwogICAgIGlmKHdyaXR0ZW4gPiAwKQogICAgICAgd3JpdGVsZWZ0IC09IHdyaXR0ZW47Ci0gIH0gd2hpbGUgKCh3cml0ZWxlZnQgPiAwKSAmJiAoKGVycm9yID0gZXJybm8pID09IEVJTlRSKSk7CisgIH0gd2hpbGUoKHdyaXRlbGVmdCA+IDApICYmICgoZXJyb3IgPSBlcnJubykgPT0gRUlOVFIpKTsKIAogICBpZih3cml0ZWxlZnQgPT0gMCkKICAgICBsb2dtc2coIldyb3RlIHJlcXVlc3QgKCV6dSBieXRlcykgaW5wdXQgdG8gJXMiLCB0b3RhbHNpemUsIGR1bXBmaWxlKTsKQEAgLTk2OCw3ICs5NzEsNyBAQAogICAgIH0KICAgICBlbHNlIGlmKGdvdCA8IDApIHsKICAgICAgIGVycm9yID0gU09DS0VSUk5POwotICAgICAgaWYgKEVBR0FJTiA9PSBlcnJvciB8fCBFV09VTERCTE9DSyA9PSBlcnJvcikgeworICAgICAgaWYoRUFHQUlOID09IGVycm9yIHx8IEVXT1VMREJMT0NLID09IGVycm9yKSB7CiAgICAgICAgIC8qIG5vdGhpbmcgdG8gcmVhZCBhdCB0aGUgbW9tZW50ICovCiAgICAgICAgIHJldHVybiAwOwogICAgICAgfQpAQCAtMTAxMyw3ICsxMDE2LDcgQEAKICAgICByZXFidWZbcmVxLT5vZmZzZXRdID0gJ1wwJzsKIAogICAvKiBhdCB0aGUgZW5kIG9mIGEgcmVxdWVzdCBkdW1wIGl0IHRvIGFuIGV4dGVybmFsIGZpbGUgKi8KLSAgaWYgKGZhaWwgfHwgcmVxLT5kb25lX3Byb2Nlc3NpbmcpCisgIGlmKGZhaWwgfHwgcmVxLT5kb25lX3Byb2Nlc3NpbmcpCiAgICAgc3RvcmVyZXF1ZXN0KHJlcWJ1ZiwgcmVxLT5waXBlbGluaW5nID8gcmVxLT5jaGVja2luZGV4IDogcmVxLT5vZmZzZXQpOwogICBpZihnb3RfZXhpdF9zaWduYWwpCiAgICAgcmV0dXJuIC0xOwpAQCAtMTA0Nyw3ICsxMDUwLDcgQEAKICAgY2FzZSBSQ01EX1NUUkVBTToKICNkZWZpbmUgU1RSRUFNVEhJUyAiYSBzdHJpbmcgdG8gc3RyZWFtIDAxMjM0NTY3ODkwXG4iCiAgICAgY291bnQgPSBzdHJsZW4oU1RSRUFNVEhJUyk7Ci0gICAgZm9yICg7OykgeworICAgIGZvcig7OykgewogICAgICAgd3JpdHRlbiA9IHN3cml0ZShzb2NrLCBTVFJFQU1USElTLCBjb3VudCk7CiAgICAgICBpZihnb3RfZXhpdF9zaWduYWwpCiAgICAgICAgIHJldHVybiAtMTsKQEAgLTEwNzYsMTMgKzEwNzksMTQgQEAKICAgICBjYXNlIERPQ05VTUJFUl9XRVJVTEVaOgogICAgICAgLyogd2UgZ290IGEgImZyaWVuZHM/IiBxdWVzdGlvbiwgcmVwbHkgYmFjayB0aGF0IHdlIHN1cmUgYXJlICovCiAgICAgICBsb2dtc2coIklkZW50aWZ5aW5nIG91cnNlbHZlcyBhcyBmcmllbmRzIik7Ci0gICAgICBzcHJpbnRmKG1zZ2J1ZiwgIldFIFJPT0xaOiAlbGRcclxuIiwgKGxvbmcpZ2V0cGlkKCkpOworICAgICAgc25wcmludGYobXNnYnVmLCBzaXplb2YobXNnYnVmKSwgIldFIFJPT0xaOiAlbGRcclxuIiwgKGxvbmcpZ2V0cGlkKCkpOwogICAgICAgbXNnbGVuID0gc3RybGVuKG1zZ2J1Zik7CiAgICAgICBpZih1c2VfZ29waGVyKQotICAgICAgICBzcHJpbnRmKHdlYXJlLCAiJXMiLCBtc2didWYpOworICAgICAgICBzbnByaW50Zih3ZWFyZSwgc2l6ZW9mKHdlYXJlKSwgIiVzIiwgbXNnYnVmKTsKICAgICAgIGVsc2UKLSAgICAgICAgc3ByaW50Zih3ZWFyZSwgIkhUVFAvMS4xIDIwMCBPS1xyXG5Db250ZW50LUxlbmd0aDogJXp1XHJcblxyXG4lcyIsCi0gICAgICAgICAgICAgICAgbXNnbGVuLCBtc2didWYpOworICAgICAgICBzbnByaW50Zih3ZWFyZSwgc2l6ZW9mKHdlYXJlKSwKKyAgICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIwMCBPS1xyXG5Db250ZW50LUxlbmd0aDogJXp1XHJcblxyXG4lcyIsCisgICAgICAgICAgICAgICAgIG1zZ2xlbiwgbXNnYnVmKTsKICAgICAgIGJ1ZmZlciA9IHdlYXJlOwogICAgICAgYnJlYWs7CiAgICAgY2FzZSBET0NOVU1CRVJfNDA0OgpAQCAtMTEwMyw5ICsxMTA3LDkgQEAKICAgICBjb25zdCBjaGFyICpzZWN0aW9uPSByZXEtPmNvbm5lY3RfcmVxdWVzdD8iY29ubmVjdCI6ImRhdGEiOwogCiAgICAgaWYocmVxLT5wYXJ0bm8pCi0gICAgICBzcHJpbnRmKHBhcnRidWYsICIlcyVsZCIsIHNlY3Rpb24sIHJlcS0+cGFydG5vKTsKKyAgICAgIHNucHJpbnRmKHBhcnRidWYsIHNpemVvZihwYXJ0YnVmKSwgIiVzJWxkIiwgc2VjdGlvbiwgcmVxLT5wYXJ0bm8pOwogICAgIGVsc2UKLSAgICAgIHNwcmludGYocGFydGJ1ZiwgIiVzIiwgc2VjdGlvbik7CisgICAgICBzbnByaW50ZihwYXJ0YnVmLCBzaXplb2YocGFydGJ1ZiksICIlcyIsIHNlY3Rpb24pOwogCiAgICAgbG9nbXNnKCJTZW5kIHJlc3BvbnNlIHRlc3QlbGQgc2VjdGlvbiA8JXM+IiwgcmVxLT50ZXN0bm8sIHBhcnRidWYpOwogCkBAIC0xMTkxLDcgKzExOTUsNyBAQAogICAgIGlmKG51bSA+IDIwMCkKICAgICAgIG51bSA9IDIwMDsKICAgICB3cml0dGVuID0gc3dyaXRlKHNvY2ssIGJ1ZmZlciwgbnVtKTsKLSAgICBpZiAod3JpdHRlbiA8IDApIHsKKyAgICBpZih3cml0dGVuIDwgMCkgewogICAgICAgc2VuZGZhaWx1cmUgPSBUUlVFOwogICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTIyOCw3ICsxMjMyLDggQEAKICAgfQogCiAgIGlmKHNlbmRmYWlsdXJlKSB7Ci0gICAgbG9nbXNnKCJTZW5kaW5nIHJlc3BvbnNlIGZhaWxlZC4gT25seSAoJXp1IGJ5dGVzKSBvZiAoJXp1IGJ5dGVzKSB3ZXJlIHNlbnQiLAorICAgIGxvZ21zZygiU2VuZGluZyByZXNwb25zZSBmYWlsZWQuIE9ubHkgKCV6dSBieXRlcykgb2YgKCV6dSBieXRlcykgIgorICAgICAgICAgICAid2VyZSBzZW50IiwKICAgICAgICAgICAgcmVzcG9uc2VzaXplLWNvdW50LCByZXNwb25zZXNpemUpOwogICAgIGZyZWUocHRyKTsKICAgICBmcmVlKGNtZCk7CkBAIC0xMjM5LDcgKzEyNDQsNyBAQAogICAgICAgICAgcmVzcG9uc2VzaXplLCByZXNwb25zZWR1bXApOwogICBmcmVlKHB0cik7CiAKLSAgaWYoY21kc2l6ZSA+IDAgKSB7CisgIGlmKGNtZHNpemUgPiAwKSB7CiAgICAgY2hhciBjb21tYW5kWzMyXTsKICAgICBpbnQgcXVhcnRlcnM7CiAgICAgaW50IG51bTsKQEAgLTE1NTIsNyArMTU1Nyw4IEBACiAgICAgICAgICAgICAgICAgLyogY29ubmVjdCB0byB0aGUgc2VydmVyICovCiAgICAgICAgICAgICAgICAgc2VydmVyZmRbREFUQV0gPSBjb25uZWN0X3RvKGlwYWRkciwgcmVxMi5jb25uZWN0X3BvcnQpOwogICAgICAgICAgICAgICAgIGlmKHNlcnZlcmZkW0RBVEFdICE9IENVUkxfU09DS0VUX0JBRCkgewotICAgICAgICAgICAgICAgICAgLyogc2Vjb25kYXJ5IHR1bm5lbCBlc3RhYmxpc2hlZCwgbm93IHdlIGhhdmUgdHdvIGNvbm5lY3Rpb25zICovCisgICAgICAgICAgICAgICAgICAvKiBzZWNvbmRhcnkgdHVubmVsIGVzdGFibGlzaGVkLCBub3cgd2UgaGF2ZSB0d28KKyAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25zICovCiAgICAgICAgICAgICAgICAgICBwb2xsX2NsaWVudF9yZFtEQVRBXSA9IFRSVUU7CiAgICAgICAgICAgICAgICAgICBwb2xsX2NsaWVudF93cltEQVRBXSA9IFRSVUU7CiAgICAgICAgICAgICAgICAgICBwb2xsX3NlcnZlcl9yZFtEQVRBXSA9IFRSVUU7CkBAIC0xODc0LDcgKzE4ODAsNyBAQAogCiAgIHdoaWxlKCFyZXEtPmRvbmVfcHJvY2Vzc2luZykgewogICAgIGludCByYyA9IGdldF9yZXF1ZXN0KG1zZ3NvY2ssIHJlcSk7Ci0gICAgaWYgKHJjIDw9IDApIHsKKyAgICBpZihyYyA8PSAwKSB7CiAgICAgICAvKiBOb3RoaW5nIGZ1cnRoZXIgdG8gcmVhZCBub3cgKHBvc3NpYmx5IGJlY2F1c2UgdGhlIHNvY2tldCB3YXMgY2xvc2VkICovCiAgICAgICByZXR1cm4gcmM7CiAgICAgfQpAQCAtMjE1Myw3ICsyMTU5LDcgQEAKICAgICAgIC8qIHNvY2tldCBzZXJ2ZXIgaXMgbm90IGFsaXZlLCBub3cgY2hlY2sgaWYgaXQgd2FzIGFjdHVhbGx5IGEgc29ja2V0LgogICAgICAgICogU3lzdGVtcyB3aGljaCBoYXZlIFVuaXggc29ja2V0cyB3aWxsIGFsc28gaGF2ZSBsc3RhdCAqLwogICAgICAgcmMgPSBsc3RhdCh1bml4X3NvY2tldCwgJnN0YXRidWYpOwotICAgICAgaWYgKDAgIT0gcmMpIHsKKyAgICAgIGlmKDAgIT0gcmMpIHsKICAgICAgICAgbG9nbXNnKCJFcnJvciBiaW5kaW5nIHNvY2tldCwgZmFpbGVkIHRvIHN0YXQgJXM6ICglZCkgJXMiLAogICAgICAgICAgICAgICAgdW5peF9zb2NrZXQsIGVycm5vLCBzdHJlcnJvcihlcnJubykpOwogICAgICAgICBnb3RvIHN3c19jbGVhbnVwOwpAQCAtMjIyMyw4ICsyMjI5LDggQEAKICAgICBjdXJsX3NvY2tldF90IG1heGZkID0gKGN1cmxfc29ja2V0X3QpLTE7CiAKICAgICAvKiBDbGVhciBvdXQgY2xvc2VkIHNvY2tldHMgKi8KLSAgICBmb3IgKHNvY2tldF9pZHggPSBudW1fc29ja2V0cyAtIDE7IHNvY2tldF9pZHggPj0gMTsgLS1zb2NrZXRfaWR4KSB7Ci0gICAgICBpZiAoQ1VSTF9TT0NLRVRfQkFEID09IGFsbF9zb2NrZXRzW3NvY2tldF9pZHhdKSB7CisgICAgZm9yKHNvY2tldF9pZHggPSBudW1fc29ja2V0cyAtIDE7IHNvY2tldF9pZHggPj0gMTsgLS1zb2NrZXRfaWR4KSB7CisgICAgICBpZihDVVJMX1NPQ0tFVF9CQUQgPT0gYWxsX3NvY2tldHNbc29ja2V0X2lkeF0pIHsKICAgICAgICAgY2hhciogZHN0ID0gKGNoYXIgKikgKGFsbF9zb2NrZXRzICsgc29ja2V0X2lkeCk7CiAgICAgICAgIGNoYXIqIHNyYyA9IChjaGFyICopIChhbGxfc29ja2V0cyArIHNvY2tldF9pZHggKyAxKTsKICAgICAgICAgY2hhciogZW5kID0gKGNoYXIgKikgKGFsbF9zb2NrZXRzICsgbnVtX3NvY2tldHMpOwpAQCAtMjI0MCw3ICsyMjQ2LDcgQEAKICAgICBGRF9aRVJPKCZpbnB1dCk7CiAgICAgRkRfWkVSTygmb3V0cHV0KTsKIAotICAgIGZvciAoc29ja2V0X2lkeCA9IDA7IHNvY2tldF9pZHggPCBudW1fc29ja2V0czsgKytzb2NrZXRfaWR4KSB7CisgICAgZm9yKHNvY2tldF9pZHggPSAwOyBzb2NrZXRfaWR4IDwgbnVtX3NvY2tldHM7ICsrc29ja2V0X2lkeCkgewogICAgICAgLyogTGlzdGVuIG9uIGFsbCBzb2NrZXRzICovCiAgICAgICBGRF9TRVQoYWxsX3NvY2tldHNbc29ja2V0X2lkeF0sICZpbnB1dCk7CiAgICAgICBpZihhbGxfc29ja2V0c1tzb2NrZXRfaWR4XSA+IG1heGZkKQpAQCAtMjI1MSw3ICsyMjU3LDcgQEAKICAgICAgIGdvdG8gc3dzX2NsZWFudXA7CiAKICAgICByYyA9IHNlbGVjdCgoaW50KW1heGZkICsgMSwgJmlucHV0LCAmb3V0cHV0LCBOVUxMLCAmdGltZW91dCk7Ci0gICAgaWYgKHJjIDwgMCkgeworICAgIGlmKHJjIDwgMCkgewogICAgICAgZXJyb3IgPSBTT0NLRVJSTk87CiAgICAgICBsb2dtc2coInNlbGVjdCgpIGZhaWxlZCB3aXRoIGVycm9yOiAoJWQpICVzIiwKICAgICAgICAgICAgICBlcnJvciwgc3RyZXJyb3IoZXJyb3IpKTsKQEAgLTIyNjEsMjYgKzIyNjcsMjYgQEAKICAgICBpZihnb3RfZXhpdF9zaWduYWwpCiAgICAgICBnb3RvIHN3c19jbGVhbnVwOwogCi0gICAgaWYgKHJjID09IDApIHsKKyAgICBpZihyYyA9PSAwKSB7CiAgICAgICAvKiBUaW1lZCBvdXQgLSB0cnkgYWdhaW4qLwogICAgICAgY29udGludWU7CiAgICAgfQogCiAgICAgLyogQ2hlY2sgaWYgdGhlIGxpc3RlbmluZyBzb2NrZXQgaXMgcmVhZHkgdG8gYWNjZXB0ICovCi0gICAgaWYgKEZEX0lTU0VUKGFsbF9zb2NrZXRzWzBdLCAmaW5wdXQpKSB7CisgICAgaWYoRkRfSVNTRVQoYWxsX3NvY2tldHNbMF0sICZpbnB1dCkpIHsKICAgICAgIC8qIFNlcnZpY2UgYWxsIHF1ZXVlZCBjb25uZWN0aW9ucyAqLwogICAgICAgY3VybF9zb2NrZXRfdCBtc2dzb2NrOwogICAgICAgZG8gewogICAgICAgICBtc2dzb2NrID0gYWNjZXB0X2Nvbm5lY3Rpb24oc29jayk7CiAgICAgICAgIGxvZ21zZygiYWNjZXB0X2Nvbm5lY3Rpb24gJWQgcmV0dXJuZWQgJWQiLCBzb2NrLCBtc2dzb2NrKTsKLSAgICAgICAgaWYgKENVUkxfU09DS0VUX0JBRCA9PSBtc2dzb2NrKQorICAgICAgICBpZihDVVJMX1NPQ0tFVF9CQUQgPT0gbXNnc29jaykKICAgICAgICAgICBnb3RvIHN3c19jbGVhbnVwOwotICAgICAgfSB3aGlsZSAobXNnc29jayA+IDApOworICAgICAgfSB3aGlsZShtc2dzb2NrID4gMCk7CiAgICAgfQogCiAgICAgLyogU2VydmljZSBhbGwgY29ubmVjdGlvbnMgdGhhdCBhcmUgcmVhZHkgKi8KLSAgICBmb3IgKHNvY2tldF9pZHggPSAxOyBzb2NrZXRfaWR4IDwgbnVtX3NvY2tldHM7ICsrc29ja2V0X2lkeCkgewotICAgICAgaWYgKEZEX0lTU0VUKGFsbF9zb2NrZXRzW3NvY2tldF9pZHhdLCAmaW5wdXQpKSB7CisgICAgZm9yKHNvY2tldF9pZHggPSAxOyBzb2NrZXRfaWR4IDwgbnVtX3NvY2tldHM7ICsrc29ja2V0X2lkeCkgeworICAgICAgaWYoRkRfSVNTRVQoYWxsX3NvY2tldHNbc29ja2V0X2lkeF0sICZpbnB1dCkpIHsKICAgICAgICAgaWYoZ290X2V4aXRfc2lnbmFsKQogICAgICAgICAgIGdvdG8gc3dzX2NsZWFudXA7CiAKQEAgLTIyOTEsNyArMjI5Nyw3IEBACiAgICAgICAgICAgaWYoZ290X2V4aXRfc2lnbmFsKQogICAgICAgICAgICAgZ290byBzd3NfY2xlYW51cDsKIAotICAgICAgICAgIGlmIChyYyA8IDApIHsKKyAgICAgICAgICBpZihyYyA8IDApIHsKICAgICAgICAgICAgIGxvZ21zZygiPT09PT4gQ2xpZW50IGRpc2Nvbm5lY3QgJWQiLCByZXEuY29ubm1vbik7CiAKICAgICAgICAgICAgIGlmKHJlcS5jb25ubW9uKSB7CkBAIC0yMzE1LDE0ICsyMzIxLDE0IEBACiAgICAgICAgICAgICBpZighc2VydmVybG9nc2xvY2tlZCkKICAgICAgICAgICAgICAgY2xlYXJfYWR2aXNvcl9yZWFkX2xvY2soU0VSVkVSTE9HU19MT0NLKTsKIAotICAgICAgICAgICAgaWYgKHJlcS50ZXN0bm8gPT0gRE9DTlVNQkVSX1FVSVQpCisgICAgICAgICAgICBpZihyZXEudGVzdG5vID09IERPQ05VTUJFUl9RVUlUKQogICAgICAgICAgICAgICBnb3RvIHN3c19jbGVhbnVwOwogICAgICAgICAgIH0KIAogICAgICAgICAgIC8qIFJlc2V0IHRoZSByZXF1ZXN0LCB1bmxlc3Mgd2UncmUgc3RpbGwgaW4gdGhlIG1pZGRsZSBvZiByZWFkaW5nICovCi0gICAgICAgICAgaWYgKHJjICE9IDApCisgICAgICAgICAgaWYocmMgIT0gMCkKICAgICAgICAgICAgIGluaXRfaHR0cHJlcXVlc3QoJnJlcSk7Ci0gICAgICAgIH0gd2hpbGUgKHJjID4gMCk7CisgICAgICAgIH0gd2hpbGUocmMgPiAwKTsKICAgICAgIH0KICAgICB9CiAKQEAgLTIzMzIsNyArMjMzOCw3IEBACiAKIHN3c19jbGVhbnVwOgogCi0gIGZvciAoc29ja2V0X2lkeCA9IDE7IHNvY2tldF9pZHggPCBudW1fc29ja2V0czsgKytzb2NrZXRfaWR4KQorICBmb3Ioc29ja2V0X2lkeCA9IDE7IHNvY2tldF9pZHggPCBudW1fc29ja2V0czsgKytzb2NrZXRfaWR4KQogICAgIGlmKChhbGxfc29ja2V0c1tzb2NrZXRfaWR4XSAhPSBzb2NrKSAmJgogICAgICAoYWxsX3NvY2tldHNbc29ja2V0X2lkeF0gIT0gQ1VSTF9TT0NLRVRfQkFEKSkKICAgICAgIHNjbG9zZShhbGxfc29ja2V0c1tzb2NrZXRfaWR4XSk7CmRpZmYgLS1naXQgYS90ZXN0cy9zZXJ2ZXIvdGVzdHBhcnQuYyBiL3Rlc3RzL3NlcnZlci90ZXN0cGFydC5jCmluZGV4IDkxMjA5NmYuLmYzYTcwYzcgMTAwNjQ0Ci0tLSBhL3Rlc3RzL3NlcnZlci90ZXN0cGFydC5jCisrKyBiL3Rlc3RzL3NlcnZlci90ZXN0cGFydC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNDEsNyArNDEsNyBAQAogICBlbHNlIHsKICAgICByYyA9IGdldHBhcnQoJnBhcnQsICZwYXJ0bGVuLCBhcmd2WzFdLCBhcmd2WzJdLCBzdGRpbik7CiAgICAgaWYocmMpCi0gICAgICByZXR1cm4ocmMpOworICAgICAgcmV0dXJuIHJjOwogICAgIGZvcihpID0gMDsgaSA8IHBhcnRsZW47IGkrKykKICAgICAgIHByaW50ZigiJWMiLCBwYXJ0W2ldKTsKICAgICBmcmVlKHBhcnQpOwpkaWZmIC0tZ2l0IGEvdGVzdHMvc2VydmVyL3RmdHAuaCBiL3Rlc3RzL3NlcnZlci90ZnRwLmgKaW5kZXggMDY1MGVmZS4uM2NkZDZlNiAxMDA2NDQKLS0tIGEvdGVzdHMvc2VydmVyL3RmdHAuaAorKysgYi90ZXN0cy9zZXJ2ZXIvdGZ0cC5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvdGVzdHMvc2VydmVyL3RmdHBkLmMgYi90ZXN0cy9zZXJ2ZXIvdGZ0cGQuYwppbmRleCBjZWYxMjlmLi5hZmMwODg0IDEwMDY0NAotLS0gYS90ZXN0cy9zZXJ2ZXIvdGZ0cGQuYworKysgYi90ZXN0cy9zZXJ2ZXIvdGZ0cGQuYwpAQCAtNDU5LDcgKzQ1OSw3IEBACiAgIGN1cnJlbnQgPSAhY3VycmVudDsgICAgICAgICAgICAgLyogImluY3IiIGN1cnJlbnQgKi8KIAogICBiID0gJmJmc1tjdXJyZW50XTsgICAgICAgICAgICAgIC8qIGxvb2sgYXQgbmV3IGJ1ZmZlciAqLwotICBpZiAoYi0+Y291bnRlciA9PSBCRl9GUkVFKSAgICAgIC8qIGlmIGl0J3MgZW1wdHkgKi8KKyAgaWYoYi0+Y291bnRlciA9PSBCRl9GUkVFKSAgICAgIC8qIGlmIGl0J3MgZW1wdHkgKi8KICAgICByZWFkX2FoZWFkKHRlc3QsIGNvbnZlcnQpOyAgICAvKiBmaWxsIGl0ICovCiAKICAgKmRwcCA9ICZiLT5idWYuaGRyOyAgICAgICAgICAgICAvKiBzZXQgY2FsbGVyJ3MgcHRyICovCkBAIC00NjgsNyArNDY4LDcgQEAKIAogLyoKICAqIGZpbGwgdGhlIGlucHV0IGJ1ZmZlciwgZG9pbmcgYXNjaWkgY29udmVyc2lvbnMgaWYgcmVxdWVzdGVkCi0gKiBjb252ZXJzaW9ucyBhcmUgIGxmIC0+IGNyLGxmICBhbmQgY3IgLT4gY3IsIG51bAorICogY29udmVyc2lvbnMgYXJlICBsZiAtPiBjciwgbGYgIGFuZCBjciAtPiBjciwgbnVsCiAgKi8KIHN0YXRpYyB2b2lkIHJlYWRfYWhlYWQoc3RydWN0IHRlc3RjYXNlICp0ZXN0LAogICAgICAgICAgICAgICAgICAgICAgICBpbnQgY29udmVydCAvKiBpZiB0cnVlLCBjb252ZXJ0IHRvIGFzY2lpICovKQpAQCAtNDgwLDEzICs0ODAsMTMgQEAKICAgc3RydWN0IHRmdHBoZHIgKmRwOwogCiAgIGIgPSAmYmZzW25leHRvbmVdOyAgICAgICAgICAgICAgLyogbG9vayBhdCAibmV4dCIgYnVmZmVyICovCi0gIGlmIChiLT5jb3VudGVyICE9IEJGX0ZSRUUpICAgICAgLyogbm9wIGlmIG5vdCBmcmVlICovCisgIGlmKGItPmNvdW50ZXIgIT0gQkZfRlJFRSkgICAgICAvKiBub3AgaWYgbm90IGZyZWUgKi8KICAgICByZXR1cm47CiAgIG5leHRvbmUgPSAhbmV4dG9uZTsgICAgICAgICAgICAgLyogImluY3IiIG5leHQgYnVmZmVyIHB0ciAqLwogCiAgIGRwID0gJmItPmJ1Zi5oZHI7CiAKLSAgaWYgKGNvbnZlcnQgPT0gMCkgeworICBpZihjb252ZXJ0ID09IDApIHsKICAgICAvKiBUaGUgZm9ybWVyIGZpbGUgcmVhZGluZyBjb2RlIGRpZCB0aGlzOgogICAgICAgIGItPmNvdW50ZXIgPSByZWFkKGZpbGVubyhmaWxlKSwgZHAtPnRoX2RhdGEsIFNFR1NJWkUpOyAqLwogICAgIHNpemVfdCBjb3B5X24gPSBNSU4oU0VHU0laRSwgdGVzdC0+cmNvdW50KTsKQEAgLTUwMCw5ICs1MDAsOSBAQAogICB9CiAKICAgcCA9IGRwLT50aF9kYXRhOwotICBmb3IgKGkgPSAwIDsgaSA8IFNFR1NJWkU7IGkrKykgewotICAgIGlmIChuZXdsaW5lKSB7Ci0gICAgICBpZiAocHJldmNoYXIgPT0gJ1xuJykKKyAgZm9yKGkgPSAwIDsgaSA8IFNFR1NJWkU7IGkrKykgeworICAgIGlmKG5ld2xpbmUpIHsKKyAgICAgIGlmKHByZXZjaGFyID09ICdcbicpCiAgICAgICAgIGMgPSAnXG4nOyAgICAgICAvKiBsZiB0byBjcixsZiAqLwogICAgICAgZWxzZQogICAgICAgICBjID0gJ1wwJzsgICAgICAgLyogY3IgdG8gY3IsbnVsICovCkBAIC01MTYsNyArNTE2LDcgQEAKICAgICAgIH0KICAgICAgIGVsc2UKICAgICAgICAgYnJlYWs7Ci0gICAgICBpZiAoYyA9PSAnXG4nIHx8IGMgPT0gJ1xyJykgeworICAgICAgaWYoYyA9PSAnXG4nIHx8IGMgPT0gJ1xyJykgewogICAgICAgICBwcmV2Y2hhciA9IGM7CiAgICAgICAgIGMgPSAnXHInOwogICAgICAgICBuZXdsaW5lID0gMTsKQEAgLTUzNSw3ICs1MzUsNyBAQAogewogICBiZnNbY3VycmVudF0uY291bnRlciA9IGN0OyAgICAgIC8qIHNldCBzaXplIG9mIGRhdGEgdG8gd3JpdGUgKi8KICAgY3VycmVudCA9ICFjdXJyZW50OyAgICAgICAgICAgICAvKiBzd2l0Y2ggdG8gb3RoZXIgYnVmZmVyICovCi0gIGlmIChiZnNbY3VycmVudF0uY291bnRlciAhPSBCRl9GUkVFKSAgICAgLyogaWYgbm90IGZyZWUgKi8KKyAgaWYoYmZzW2N1cnJlbnRdLmNvdW50ZXIgIT0gQkZfRlJFRSkgICAgIC8qIGlmIG5vdCBmcmVlICovCiAgICAgd3JpdGVfYmVoaW5kKHRlc3QsIGNvbnZlcnQpOyAgICAgLyogZmx1c2ggaXQgKi8KICAgYmZzW2N1cnJlbnRdLmNvdW50ZXIgPSBCRl9BTExPQzsgICAgICAgIC8qIG1hcmsgYXMgYWxsb2MnZCAqLwogICAqZHBwID0gICZiZnNbY3VycmVudF0uYnVmLmhkcjsKQEAgLTU0NCw3ICs1NDQsNyBAQAogCiAvKgogICogT3V0cHV0IGEgYnVmZmVyIHRvIGEgZmlsZSwgY29udmVydGluZyBmcm9tIG5ldGFzY2lpIGlmIHJlcXVlc3RlZC4KLSAqIENSLE5VTCAtPiBDUiAgYW5kIENSLExGID0+IExGLgorICogQ1IsIE5VTCAtPiBDUiAgYW5kIENSLCBMRiA9PiBMRi4KICAqIE5vdGUgc3BlYyBpcyB1bmRlZmluZWQgaWYgd2UgZ2V0IENSIGFzIGxhc3QgYnl0ZSBvZiBmaWxlIG9yIGEKICAqIENSIGZvbGxvd2VkIGJ5IGFueXRoaW5nIGVsc2UuICBJbiB0aGlzIGNhc2Ugd2UgbGVhdmUgaXQgYWxvbmUuCiAgKi8KQEAgLTU1OSwxMyArNTU5LDE3IEBACiAgIHN0cnVjdCB0ZnRwaGRyICpkcDsKIAogICBiID0gJmJmc1tuZXh0b25lXTsKLSAgaWYgKGItPmNvdW50ZXIgPCAtMSkgICAgICAgICAgICAvKiBhbnl0aGluZyB0byBmbHVzaD8gKi8KKyAgaWYoYi0+Y291bnRlciA8IC0xKSAgICAgICAgICAgIC8qIGFueXRoaW5nIHRvIGZsdXNoPyAqLwogICAgIHJldHVybiAwOyAgICAgICAgICAgICAgICAgICAgIC8qIGp1c3Qgbm9wIGlmIG5vdGhpbmcgdG8gZG8gKi8KIAogICBpZighdGVzdC0+b2ZpbGUpIHsKICAgICBjaGFyIG91dGZpbGVbMjU2XTsKICAgICBzbnByaW50ZihvdXRmaWxlLCBzaXplb2Yob3V0ZmlsZSksICJsb2cvdXBsb2FkLiVsZCIsIHRlc3QtPnRlc3Rubyk7CisjaWZkZWYgV0lOMzIKKyAgICB0ZXN0LT5vZmlsZT1vcGVuKG91dGZpbGUsIE9fQ1JFQVR8T19SRFdSfE9fQklOQVJZLCAwNzc3KTsKKyNlbHNlCiAgICAgdGVzdC0+b2ZpbGU9b3BlbihvdXRmaWxlLCBPX0NSRUFUfE9fUkRXUiwgMDc3Nyk7CisjZW5kaWYKICAgICBpZih0ZXN0LT5vZmlsZSA9PSAtMSkgewogICAgICAgbG9nbXNnKCJDb3VsZG4ndCBjcmVhdGUgYW5kL29yIG9wZW4gZmlsZSAlcyBmb3IgdXBsb2FkISIsIG91dGZpbGUpOwogICAgICAgcmV0dXJuIC0xOyAvKiBmYWlsdXJlISAqLwpAQCAtNTc4LDIxICs1ODIsMjEgQEAKICAgbmV4dG9uZSA9ICFuZXh0b25lOyAgICAgICAgICAgICAvKiBpbmNyIGZvciBuZXh0IHRpbWUgKi8KICAgd3JpdGVidWYgPSBkcC0+dGhfZGF0YTsKIAotICBpZiAoY291bnQgPD0gMCkKKyAgaWYoY291bnQgPD0gMCkKICAgICByZXR1cm4gLTE7ICAgICAgICAgICAgICAgICAgICAvKiBuYWsgbG9naWM/ICovCiAKLSAgaWYgKGNvbnZlcnQgPT0gMCkKKyAgaWYoY29udmVydCA9PSAwKQogICAgIHJldHVybiB3cml0ZSh0ZXN0LT5vZmlsZSwgd3JpdGVidWYsIGNvdW50KTsKIAogICBwID0gd3JpdGVidWY7CiAgIGN0ID0gY291bnQ7Ci0gIHdoaWxlIChjdC0tKSB7ICAgICAgICAgICAgICAgICAgLyogbG9vcCBvdmVyIHRoZSBidWZmZXIgKi8KKyAgd2hpbGUoY3QtLSkgeyAgICAgICAgICAgICAgICAgICAvKiBsb29wIG92ZXIgdGhlIGJ1ZmZlciAqLwogICAgIGMgPSAqcCsrOyAgICAgICAgICAgICAgICAgICAgIC8qIHBpY2sgdXAgYSBjaGFyYWN0ZXIgKi8KLSAgICBpZiAocHJldmNoYXIgPT0gJ1xyJykgeyAgICAgICAvKiBpZiBwcmV2IGNoYXIgd2FzIGNyICovCi0gICAgICBpZiAoYyA9PSAnXG4nKSAgICAgICAgICAgICAgLyogaWYgaGF2ZSBjcixsZiB0aGVuIGp1c3QgKi8KKyAgICBpZihwcmV2Y2hhciA9PSAnXHInKSB7ICAgICAgICAvKiBpZiBwcmV2IGNoYXIgd2FzIGNyICovCisgICAgICBpZihjID09ICdcbicpICAgICAgICAgICAgICAgLyogaWYgaGF2ZSBjcixsZiB0aGVuIGp1c3QgKi8KICAgICAgICAgbHNlZWsodGVzdC0+b2ZpbGUsIC0xLCBTRUVLX0NVUik7IC8qIHNtYXNoIGxmIG9uIHRvcCBvZiB0aGUgY3IgKi8KICAgICAgIGVsc2UKLSAgICAgICAgaWYgKGMgPT0gJ1wwJykgICAgICAgICAgICAvKiBpZiBoYXZlIGNyLG51bCB0aGVuICovCisgICAgICAgIGlmKGMgPT0gJ1wwJykgICAgICAgICAgICAgLyogaWYgaGF2ZSBjcixudWwgdGhlbiAqLwogICAgICAgICAgIGdvdG8gc2tpcGl0OyAgICAgICAgICAgIC8qIGp1c3Qgc2tpcCBvdmVyIHRoZSBwdXRjICovCiAgICAgICAvKiBlbHNlIGp1c3QgZmFsbCB0aHJvdWdoIGFuZCBhbGxvdyBpdCAqLwogICAgIH0KQEAgLTYzMCwxMyArNjM0LDEzIEBACiAgIHNydnJfc29ja2FkZHJfdW5pb25fdCBmcm9tYWRkcjsKICAgY3VybF9zb2NrbGVuX3QgZnJvbWFkZHJsZW47CiAKLSAgZm9yICg7OykgeworICBmb3IoOzspIHsKICNpZiBkZWZpbmVkKEhBVkVfSU9DVExTT0NLRVQpCiAgICAgKHZvaWQpIGlvY3Rsc29ja2V0KGYsIEZJT05SRUFELCAmaSk7CiAjZWxzZQogICAgICh2b2lkKSBpb2N0bChmLCBGSU9OUkVBRCwgJmkpOwogI2VuZGlmCi0gICAgaWYgKGkpIHsKKyAgICBpZihpKSB7CiAgICAgICBqKys7CiAjaWZkZWYgRU5BQkxFX0lQVjYKICAgICAgIGlmKCF1c2VfaXB2NikKQEAgLTc2OSw3ICs3NzMsNyBAQAogICB9CiAKICAgZmxhZyA9IDE7Ci0gIGlmICgwICE9IHNldHNvY2tvcHQoc29jaywgU09MX1NPQ0tFVCwgU09fUkVVU0VBRERSLAorICBpZigwICE9IHNldHNvY2tvcHQoc29jaywgU09MX1NPQ0tFVCwgU09fUkVVU0VBRERSLAogICAgICAgICAgICAgKHZvaWQgKikmZmxhZywgc2l6ZW9mKGZsYWcpKSkgewogICAgIGVycm9yID0gU09DS0VSUk5POwogICAgIGxvZ21zZygic2V0c29ja29wdChTT19SRVVTRUFERFIpIGZhaWxlZCB3aXRoIGVycm9yOiAoJWQpICVzIiwKQEAgLTgxMiw3ICs4MTYsNyBAQAogCiAgIGxvZ21zZygiUnVubmluZyAlcyB2ZXJzaW9uIG9uIHBvcnQgVURQLyVkIiwgaXB2X2ludXNlLCAoaW50KXBvcnQpOwogCi0gIGZvciAoOzspIHsKKyAgZm9yKDs7KSB7CiAgICAgZnJvbWxlbiA9IHNpemVvZihmcm9tKTsKICNpZmRlZiBFTkFCTEVfSVBWNgogICAgIGlmKCF1c2VfaXB2NikKQEAgLTgyNiw3ICs4MzAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAmZnJvbS5zYSwgJmZyb21sZW4pOwogICAgIGlmKGdvdF9leGl0X3NpZ25hbCkKICAgICAgIGJyZWFrOwotICAgIGlmIChuIDwgMCkgeworICAgIGlmKG4gPCAwKSB7CiAgICAgICBsb2dtc2coInJlY3Zmcm9tIik7CiAgICAgICByZXN1bHQgPSAzOwogICAgICAgYnJlYWs7CkBAIC04NzIsOSArODc2LDkgQEAKIAogICAgIHRwID0gJmJ1Zi5oZHI7CiAgICAgdHAtPnRoX29wY29kZSA9IG50b2hzKHRwLT50aF9vcGNvZGUpOwotICAgIGlmICh0cC0+dGhfb3Bjb2RlID09IG9wY29kZV9SUlEgfHwgdHAtPnRoX29wY29kZSA9PSBvcGNvZGVfV1JRKSB7CisgICAgaWYodHAtPnRoX29wY29kZSA9PSBvcGNvZGVfUlJRIHx8IHRwLT50aF9vcGNvZGUgPT0gb3Bjb2RlX1dSUSkgewogICAgICAgbWVtc2V0KCZ0ZXN0LCAwLCBzaXplb2YodGVzdCkpOwotICAgICAgaWYgKGRvX3RmdHAoJnRlc3QsIHRwLCBuKSA8IDApCisgICAgICBpZihkb190ZnRwKCZ0ZXN0LCB0cCwgbikgPCAwKQogICAgICAgICBicmVhazsKICAgICAgIGZyZWUodGVzdC5idWZmZXIpOwogICAgIH0KQEAgLTk1MSw2ICs5NTUsOCBAQAogI2lmZGVmIFVTRV9XSU5TT0NLCiAgIERXT1JEIHJlY3Z0aW1lb3V0LCByZWN2dGltZW91dGJhazsKICNlbmRpZgorICBjaGFyICpvcHRpb24gPSAoY2hhciAqKSJtb2RlIjsgLyogbW9kZSBpcyBpbXBsaWNpdCAqLworICBpbnQgdG9nZ2xlID0gMTsKIAogICAvKiBPcGVuIHJlcXVlc3QgZHVtcCBmaWxlLiAqLwogICBzZXJ2ZXIgPSBmb3BlbihSRVFVRVNUX0RVTVAsICJhYiIpOwpAQCAtOTY2LDQyICs5NzIsNjcgQEAKIAogICBjcCA9IChjaGFyICopJnRwLT50aF9zdHVmZjsKICAgZmlsZW5hbWUgPSBjcDsKLWFnYWluOgotICB3aGlsZSAoY3AgPCAmYnVmLnN0b3JhZ2Vbc2l6ZV0pIHsKLSAgICBpZiAoKmNwID09ICdcMCcpCisgIGRvIHsKKyAgICBib29sIGVuZG9maXQgPSB0cnVlOworICAgIHdoaWxlKGNwIDwgJmJ1Zi5zdG9yYWdlW3NpemVdKSB7CisgICAgICBpZigqY3AgPT0gJ1wwJykgeworICAgICAgICBlbmRvZml0ID0gZmFsc2U7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgY3ArKzsKKyAgICB9CisgICAgaWYoZW5kb2ZpdCkKKyAgICAgIC8qIG5vIG1vcmUgb3B0aW9ucyAqLwogICAgICAgYnJlYWs7Ci0gICAgY3ArKzsKLSAgfQotICBpZiAoKmNwKSB7CisKKyAgICAvKiBiZWZvcmUgaW5jcmVhc2luZyBwb2ludGVyLCBtYWtlIHN1cmUgaXQgaXMgc3RpbGwgd2l0aGluIHRoZSBsZWdhbAorICAgICAgIHNwYWNlICovCisgICAgaWYoKGNwKzEpIDwgJmJ1Zi5zdG9yYWdlW3NpemVdKSB7CisgICAgICArK2NwOworICAgICAgaWYoZmlyc3QpIHsKKyAgICAgICAgLyogc3RvcmUgdGhlIG1vZGUgc2luY2Ugd2UgbmVlZCBpdCBsYXRlciAqLworICAgICAgICBtb2RlID0gY3A7CisgICAgICAgIGZpcnN0ID0gMDsKKyAgICAgIH0KKyAgICAgIGlmKHRvZ2dsZSkKKyAgICAgICAgLyogbmFtZS92YWx1ZSBwYWlyOiAqLworICAgICAgICBmcHJpbnRmKHNlcnZlciwgIiVzOiAlc1xuIiwgb3B0aW9uLCBjcCk7CisgICAgICBlbHNlIHsKKyAgICAgICAgLyogc3RvcmUgdGhlIG5hbWUgcG9pbnRlciAqLworICAgICAgICBvcHRpb24gPSBjcDsKKyAgICAgIH0KKyAgICAgIHRvZ2dsZSBePSAxOworICAgIH0KKyAgICBlbHNlCisgICAgICAvKiBObyBtb3JlIG9wdGlvbnMgKi8KKyAgICAgIGJyZWFrOworICB9IHdoaWxlKDEpOworCisgIGlmKCpjcCkgewogICAgIG5hayhFQkFET1ApOwogICAgIGZjbG9zZShzZXJ2ZXIpOwogICAgIHJldHVybiAzOwogICB9Ci0gIGlmIChmaXJzdCkgewotICAgIG1vZGUgPSArK2NwOwotICAgIGZpcnN0ID0gMDsKLSAgICBnb3RvIGFnYWluOwotICB9CisKICAgLyogc3RvcmUgaW5wdXQgcHJvdG9jb2wgKi8KICAgZnByaW50ZihzZXJ2ZXIsICJmaWxlbmFtZTogJXNcbiIsIGZpbGVuYW1lKTsKIAotICBmb3IgKGNwID0gbW9kZTsgY3AgJiYgKmNwOyBjcCsrKQorICBmb3IoY3AgPSBtb2RlOyBjcCAmJiAqY3A7IGNwKyspCiAgICAgaWYoSVNVUFBFUigqY3ApKQogICAgICAgKmNwID0gKGNoYXIpdG9sb3dlcigoaW50KSpjcCk7CiAKICAgLyogc3RvcmUgaW5wdXQgcHJvdG9jb2wgKi8KLSAgZnByaW50ZihzZXJ2ZXIsICJtb2RlOiAlc1xuIiwgbW9kZSk7CiAgIGZjbG9zZShzZXJ2ZXIpOwogCi0gIGZvciAocGYgPSBmb3JtYXRhOyBwZi0+Zl9tb2RlOyBwZisrKQotICAgIGlmIChzdHJjbXAocGYtPmZfbW9kZSwgbW9kZSkgPT0gMCkKKyAgZm9yKHBmID0gZm9ybWF0YTsgcGYtPmZfbW9kZTsgcGYrKykKKyAgICBpZihzdHJjbXAocGYtPmZfbW9kZSwgbW9kZSkgPT0gMCkKICAgICAgIGJyZWFrOwotICBpZiAoIXBmLT5mX21vZGUpIHsKKyAgaWYoIXBmLT5mX21vZGUpIHsKICAgICBuYWsoRUJBRE9QKTsKICAgICByZXR1cm4gMjsKICAgfQogICBlY29kZSA9IHZhbGlkYXRlX2FjY2Vzcyh0ZXN0LCBmaWxlbmFtZSwgdHAtPnRoX29wY29kZSk7Ci0gIGlmIChlY29kZSkgeworICBpZihlY29kZSkgewogICAgIG5hayhlY29kZSk7CiAgICAgcmV0dXJuIDE7CiAgIH0KQEAgLTEwMTUsNyArMTA0Niw3IEBACiAgICAgICAgICAgICAgKGNvbnN0IGNoYXIqKSZyZWN2dGltZW91dCwgc2l6ZW9mKHJlY3Z0aW1lb3V0KSk7CiAjZW5kaWYKIAotICBpZiAodHAtPnRoX29wY29kZSA9PSBvcGNvZGVfV1JRKQorICBpZih0cC0+dGhfb3Bjb2RlID09IG9wY29kZV9XUlEpCiAgICAgcmVjdnRmdHAodGVzdCwgcGYpOwogICBlbHNlCiAgICAgc2VuZHRmdHAodGVzdCwgcGYpOwpAQCAtMTExMCw3ICsxMTQxLDggQEAKIAogICBpZighc3RybmNtcCgidmVyaWZpZWRzZXJ2ZXIiLCBmaWxlbmFtZSwgMTQpKSB7CiAgICAgY2hhciB3ZWFyZVsxMjhdOwotICAgIHNpemVfdCBjb3VudCA9IHNwcmludGYod2VhcmUsICJXRSBST09MWjogJWxkXHJcbiIsIChsb25nKWdldHBpZCgpKTsKKyAgICBzaXplX3QgY291bnQgPSBzbnByaW50Zih3ZWFyZSwgc2l6ZW9mKHdlYXJlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiV0UgUk9PTFo6ICVsZFxyXG4iLCAobG9uZylnZXRwaWQoKSk7CiAKICAgICBsb2dtc2coIkFyZS13ZS1mcmllbmRseSBxdWVzdGlvbiByZWNlaXZlZCIpOwogICAgIHRlc3QtPmJ1ZmZlciA9IHN0cmR1cCh3ZWFyZSk7CkBAIC0xMTUyLDcgKzExODQsNyBAQAogICAgIGZpbGUgPSB0ZXN0MmZpbGUodGVzdG5vKTsKIAogICAgIGlmKDAgIT0gcGFydG5vKQotICAgICAgc3ByaW50ZihwYXJ0YnVmLCAiZGF0YSVsZCIsIHBhcnRubyk7CisgICAgICBzbnByaW50ZihwYXJ0YnVmLCBzaXplb2YocGFydGJ1ZiksICJkYXRhJWxkIiwgcGFydG5vKTsKIAogICAgIGlmKGZpbGUpIHsKICAgICAgIEZJTEUgKnN0cmVhbT1mb3BlbihmaWxlLCAicmIiKTsKQEAgLTEyMTMsNyArMTI0NSw3IEBACiAgIHNhcCA9ICZhY2tidWYuaGRyOwogICBkbyB7CiAgICAgc2l6ZSA9IHJlYWRpdCh0ZXN0LCAmc2RwLCBwZi0+Zl9jb252ZXJ0KTsKLSAgICBpZiAoc2l6ZSA8IDApIHsKKyAgICBpZihzaXplIDwgMCkgewogICAgICAgbmFrKGVycm5vICsgMTAwKTsKICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMjMwLDEyICsxMjYyLDEyIEBACiAgICAgfQogCiAgICAgc2VuZF9kYXRhOgotICAgIGlmIChzd3JpdGUocGVlciwgc2RwLCBzaXplICsgNCkgIT0gc2l6ZSArIDQpIHsKKyAgICBpZihzd3JpdGUocGVlciwgc2RwLCBzaXplICsgNCkgIT0gc2l6ZSArIDQpIHsKICAgICAgIGxvZ21zZygid3JpdGUiKTsKICAgICAgIHJldHVybjsKICAgICB9CiAgICAgcmVhZF9haGVhZCh0ZXN0LCBwZi0+Zl9jb252ZXJ0KTsKLSAgICBmb3IgKCA7IDsgKSB7CisgICAgZm9yKDs7KSB7CiAjaWZkZWYgSEFWRV9BTEFSTQogICAgICAgYWxhcm0ocmV4bXR2YWwpOyAgICAgICAgLyogcmVhZCB0aGUgYWNrICovCiAjZW5kaWYKQEAgLTEyNDUsMzIgKzEyNzcsMzIgQEAKICNlbmRpZgogICAgICAgaWYoZ290X2V4aXRfc2lnbmFsKQogICAgICAgICByZXR1cm47Ci0gICAgICBpZiAobiA8IDApIHsKKyAgICAgIGlmKG4gPCAwKSB7CiAgICAgICAgIGxvZ21zZygicmVhZDogZmFpbCIpOwogICAgICAgICByZXR1cm47CiAgICAgICB9CiAgICAgICBzYXAtPnRoX29wY29kZSA9IG50b2hzKCh1bnNpZ25lZCBzaG9ydClzYXAtPnRoX29wY29kZSk7CiAgICAgICBzYXAtPnRoX2Jsb2NrID0gbnRvaHMoc2FwLT50aF9ibG9jayk7CiAKLSAgICAgIGlmIChzYXAtPnRoX29wY29kZSA9PSBvcGNvZGVfRVJST1IpIHsKKyAgICAgIGlmKHNhcC0+dGhfb3Bjb2RlID09IG9wY29kZV9FUlJPUikgewogICAgICAgICBsb2dtc2coImdvdCBFUlJPUiIpOwogICAgICAgICByZXR1cm47CiAgICAgICB9CiAKLSAgICAgIGlmIChzYXAtPnRoX29wY29kZSA9PSBvcGNvZGVfQUNLKSB7Ci0gICAgICAgIGlmIChzYXAtPnRoX2Jsb2NrID09IHNlbmRibG9jaykgeworICAgICAgaWYoc2FwLT50aF9vcGNvZGUgPT0gb3Bjb2RlX0FDSykgeworICAgICAgICBpZihzYXAtPnRoX2Jsb2NrID09IHNlbmRibG9jaykgewogICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIC8qIFJlLXN5bmNocm9uaXplIHdpdGggdGhlIG90aGVyIHNpZGUgKi8KICAgICAgICAgKHZvaWQpIHN5bmNobmV0KHBlZXIpOwotICAgICAgICBpZiAoc2FwLT50aF9ibG9jayA9PSAoc2VuZGJsb2NrLTEpKSB7CisgICAgICAgIGlmKHNhcC0+dGhfYmxvY2sgPT0gKHNlbmRibG9jay0xKSkgewogICAgICAgICAgIGdvdG8gc2VuZF9kYXRhOwogICAgICAgICB9CiAgICAgICB9CiAKICAgICB9CiAgICAgc2VuZGJsb2NrKys7Ci0gIH0gd2hpbGUgKHNpemUgPT0gU0VHU0laRSk7CisgIH0gd2hpbGUoc2l6ZSA9PSBTRUdTSVpFKTsKIH0KIAogLyoKQEAgLTEyOTksMTIgKzEzMzEsMTIgQEAKICAgICAodm9pZCkgc2lnc2V0am1wKHRpbWVvdXRidWYsIDEpOwogI2VuZGlmCiBzZW5kX2FjazoKLSAgICBpZiAoc3dyaXRlKHBlZXIsICZhY2tidWYuc3RvcmFnZVswXSwgNCkgIT0gNCkgeworICAgIGlmKHN3cml0ZShwZWVyLCAmYWNrYnVmLnN0b3JhZ2VbMF0sIDQpICE9IDQpIHsKICAgICAgIGxvZ21zZygid3JpdGU6IGZhaWxcbiIpOwogICAgICAgZ290byBhYm9ydDsKICAgICB9CiAgICAgd3JpdGVfYmVoaW5kKHRlc3QsIHBmLT5mX2NvbnZlcnQpOwotICAgIGZvciAoIDsgOyApIHsKKyAgICBmb3IoOzspIHsKICNpZmRlZiBIQVZFX0FMQVJNCiAgICAgICBhbGFybShyZXhtdHZhbCk7CiAjZW5kaWYKQEAgLTEzMTQsMzcgKzEzNDYsMzggQEAKICNlbmRpZgogICAgICAgaWYoZ290X2V4aXRfc2lnbmFsKQogICAgICAgICBnb3RvIGFib3J0OwotICAgICAgaWYgKG4gPCAwKSB7ICAgICAgICAgICAgICAgICAgICAgICAvKiByZWFsbHk/ICovCisgICAgICBpZihuIDwgMCkgeyAgICAgICAgICAgICAgICAgICAgICAgLyogcmVhbGx5PyAqLwogICAgICAgICBsb2dtc2coInJlYWQ6IGZhaWxcbiIpOwogICAgICAgICBnb3RvIGFib3J0OwogICAgICAgfQogICAgICAgcmRwLT50aF9vcGNvZGUgPSBudG9ocygodW5zaWduZWQgc2hvcnQpcmRwLT50aF9vcGNvZGUpOwogICAgICAgcmRwLT50aF9ibG9jayA9IG50b2hzKHJkcC0+dGhfYmxvY2spOwotICAgICAgaWYgKHJkcC0+dGhfb3Bjb2RlID09IG9wY29kZV9FUlJPUikKKyAgICAgIGlmKHJkcC0+dGhfb3Bjb2RlID09IG9wY29kZV9FUlJPUikKICAgICAgICAgZ290byBhYm9ydDsKLSAgICAgIGlmIChyZHAtPnRoX29wY29kZSA9PSBvcGNvZGVfREFUQSkgewotICAgICAgICBpZiAocmRwLT50aF9ibG9jayA9PSByZWN2YmxvY2spIHsKKyAgICAgIGlmKHJkcC0+dGhfb3Bjb2RlID09IG9wY29kZV9EQVRBKSB7CisgICAgICAgIGlmKHJkcC0+dGhfYmxvY2sgPT0gcmVjdmJsb2NrKSB7CiAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5vcm1hbCAqLwogICAgICAgICB9CiAgICAgICAgIC8qIFJlLXN5bmNocm9uaXplIHdpdGggdGhlIG90aGVyIHNpZGUgKi8KICAgICAgICAgKHZvaWQpIHN5bmNobmV0KHBlZXIpOwotICAgICAgICBpZiAocmRwLT50aF9ibG9jayA9PSAocmVjdmJsb2NrLTEpKQorICAgICAgICBpZihyZHAtPnRoX2Jsb2NrID09IChyZWN2YmxvY2stMSkpCiAgICAgICAgICAgZ290byBzZW5kX2FjazsgICAgICAgICAgICAgICAgIC8qIHJleG1pdCAqLwogICAgICAgfQogICAgIH0KIAogICAgIHNpemUgPSB3cml0ZWl0KHRlc3QsICZyZHAsIChpbnQpKG4gLSA0KSwgcGYtPmZfY29udmVydCk7Ci0gICAgaWYgKHNpemUgIT0gKG4tNCkpIHsgICAgICAgICAgICAgICAgIC8qIGFoZW0gKi8KLSAgICAgIGlmIChzaXplIDwgMCkKKyAgICBpZihzaXplICE9IChuLTQpKSB7ICAgICAgICAgICAgICAgICAvKiBhaGVtICovCisgICAgICBpZihzaXplIDwgMCkKICAgICAgICAgbmFrKGVycm5vICsgMTAwKTsKICAgICAgIGVsc2UKICAgICAgICAgbmFrKEVOT1NQQUNFKTsKICAgICAgIGdvdG8gYWJvcnQ7CiAgICAgfQotICB9IHdoaWxlIChzaXplID09IFNFR1NJWkUpOworICB9IHdoaWxlKHNpemUgPT0gU0VHU0laRSk7CiAgIHdyaXRlX2JlaGluZCh0ZXN0LCBwZi0+Zl9jb252ZXJ0KTsKIAotICByYXAtPnRoX29wY29kZSA9IGh0b25zKCh1bnNpZ25lZCBzaG9ydClvcGNvZGVfQUNLKTsgIC8qIHNlbmQgdGhlICJmaW5hbCIgYWNrICovCisgIHJhcC0+dGhfb3Bjb2RlID0gaHRvbnMoKHVuc2lnbmVkIHNob3J0KW9wY29kZV9BQ0spOyAgLyogc2VuZCB0aGUgImZpbmFsIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjayAqLwogICByYXAtPnRoX2Jsb2NrID0gaHRvbnMocmVjdmJsb2NrKTsKICAgKHZvaWQpIHN3cml0ZShwZWVyLCAmYWNrYnVmLnN0b3JhZ2VbMF0sIDQpOwogI2lmIGRlZmluZWQoSEFWRV9BTEFSTSkgJiYgZGVmaW5lZChTSUdBTFJNKQpAQCAtMTM1OCw5ICsxMzkxLDkgQEAKICNlbmRpZgogICBpZihnb3RfZXhpdF9zaWduYWwpCiAgICAgZ290byBhYm9ydDsKLSAgaWYgKG4gPj0gNCAmJiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpZiByZWFkIHNvbWUgZGF0YSAqLwotICAgICAgcmRwLT50aF9vcGNvZGUgPT0gb3Bjb2RlX0RBVEEgJiYgICAgICAgIC8qIGFuZCBnb3QgYSBkYXRhIGJsb2NrICovCi0gICAgICByZWN2YmxvY2sgPT0gcmRwLT50aF9ibG9jaykgeyAgICAgICAgICAgLyogdGhlbiBteSBsYXN0IGFjayB3YXMgbG9zdCAqLworICBpZihuID49IDQgJiYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaWYgcmVhZCBzb21lIGRhdGEgKi8KKyAgICAgcmRwLT50aF9vcGNvZGUgPT0gb3Bjb2RlX0RBVEEgJiYgICAgICAgIC8qIGFuZCBnb3QgYSBkYXRhIGJsb2NrICovCisgICAgIHJlY3ZibG9jayA9PSByZHAtPnRoX2Jsb2NrKSB7ICAgICAgICAgICAvKiB0aGVuIG15IGxhc3QgYWNrIHdhcyBsb3N0ICovCiAgICAgKHZvaWQpIHN3cml0ZShwZWVyLCAmYWNrYnVmLnN0b3JhZ2VbMF0sIDQpOyAgLyogcmVzZW5kIGZpbmFsIGFjayAqLwogICB9CiBhYm9ydDoKQEAgLTEzODAsMTAgKzE0MTMsMTAgQEAKICAgdHAgPSAmYnVmLmhkcjsKICAgdHAtPnRoX29wY29kZSA9IGh0b25zKCh1bnNpZ25lZCBzaG9ydClvcGNvZGVfRVJST1IpOwogICB0cC0+dGhfY29kZSA9IGh0b25zKCh1bnNpZ25lZCBzaG9ydCllcnJvcik7Ci0gIGZvciAocGUgPSBlcnJtc2dzOyBwZS0+ZV9jb2RlID49IDA7IHBlKyspCi0gICAgaWYgKHBlLT5lX2NvZGUgPT0gZXJyb3IpCisgIGZvcihwZSA9IGVycm1zZ3M7IHBlLT5lX2NvZGUgPj0gMDsgcGUrKykKKyAgICBpZihwZS0+ZV9jb2RlID09IGVycm9yKQogICAgICAgYnJlYWs7Ci0gIGlmIChwZS0+ZV9jb2RlIDwgMCkgeworICBpZihwZS0+ZV9jb2RlIDwgMCkgewogICAgIHBlLT5lX21zZyA9IHN0cmVycm9yKGVycm9yIC0gMTAwKTsKICAgICB0cC0+dGhfY29kZSA9IEVVTkRFRjsgICAvKiBzZXQgJ3VuZGVmJyBlcnJvcmNvZGUgKi8KICAgfQpAQCAtMTM5Myw2ICsxNDI2LDYgQEAKICAgICogcmVwb3J0IGZyb20gZ2xpYmMgd2l0aCBGT1JUSUZZX1NPVVJDRSAqLwogICBtZW1jcHkodHAtPnRoX21zZywgcGUtPmVfbXNnLCBsZW5ndGggKyAxKTsKICAgbGVuZ3RoICs9IDU7Ci0gIGlmIChzd3JpdGUocGVlciwgJmJ1Zi5zdG9yYWdlWzBdLCBsZW5ndGgpICE9IGxlbmd0aCkKKyAgaWYoc3dyaXRlKHBlZXIsICZidWYuc3RvcmFnZVswXSwgbGVuZ3RoKSAhPSBsZW5ndGgpCiAgICAgbG9nbXNnKCJuYWs6IGZhaWxcbiIpOwogfQpkaWZmIC0tZ2l0IGEvdGVzdHMvc2VydmVyL3V0aWwuYyBiL3Rlc3RzL3NlcnZlci91dGlsLmMKaW5kZXggMDZmM2NlMS4uZDk5MzM2MyAxMDA2NDQKLS0tIGEvdGVzdHMvc2VydmVyL3V0aWwuYworKysgYi90ZXN0cy9zZXJ2ZXIvdXRpbC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMywgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNzcsMTEgKzc3LDExIEBACiAgICAgaWYoKGRhdGFbaV0gPj0gMHgyMCkgJiYgKGRhdGFbaV0gPCAweDdmKSkKICAgICAgICpvcHRyKysgPSAqaXB0cisrOwogICAgIGVsc2UgewotICAgICAgc3ByaW50ZihvcHRyLCAiJSUlMDJ4IiwgKmlwdHIrKyk7CisgICAgICBzbnByaW50ZihvcHRyLCA0LCAiJSUlMDJ4IiwgKmlwdHIrKyk7CiAgICAgICBvcHRyKz0zOwogICAgIH0KICAgfQotICAqb3B0cj0wOyAvKiBpbiBjYXNlIG5vIHNwcmludGYoKSB3YXMgdXNlZCAqLworICAqb3B0cj0wOyAvKiBpbiBjYXNlIG5vIHNwcmludGYgd2FzIHVzZWQgKi8KIAogICByZXR1cm4gYnVmOwogfQpAQCAtOTksNyArOTksNyBAQAogICBzdGF0aWMgdGltZV90IGVwb2NoX29mZnNldDsKICAgc3RhdGljIGludCAgICBrbm93bl9vZmZzZXQ7CiAKLSAgaWYgKCFzZXJ2ZXJsb2dmaWxlKSB7CisgIGlmKCFzZXJ2ZXJsb2dmaWxlKSB7CiAgICAgZnByaW50ZihzdGRlcnIsICJFcnJvcjogc2VydmVybG9nZmlsZSBub3Qgc2V0XG4iKTsKICAgICByZXR1cm47CiAgIH0KQEAgLTE0MCwxMSArMTQwLDExIEBACiAgIGNoYXIgYnVmWzUxMl07CiAgIERXT1JEIGVyciA9IFNPQ0tFUlJOTzsKIAotICBpZiAoIUZvcm1hdE1lc3NhZ2UoRk9STUFUX01FU1NBR0VfRlJPTV9TWVNURU0sIE5VTEwsIGVyciwKLSAgICAgICAgICAgICAgICAgICAgIExBTkdfTkVVVFJBTCwgYnVmLCBzaXplb2YoYnVmKSwgTlVMTCkpCisgIGlmKCFGb3JtYXRNZXNzYWdlKEZPUk1BVF9NRVNTQUdFX0ZST01fU1lTVEVNLCBOVUxMLCBlcnIsCisgICAgICAgICAgICAgICAgICAgIExBTkdfTkVVVFJBTCwgYnVmLCBzaXplb2YoYnVmKSwgTlVMTCkpCiAgICAgIHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICJVbmtub3duIGVycm9yICVsdSAoJSNseCkiLCBlcnIsIGVycik7Ci0gIGlmIChtc2cpCi0gICAgIGZwcmludGYoc3RkZXJyLCAiJXM6ICIsIG1zZyk7CisgIGlmKG1zZykKKyAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiAiLCBtc2cpOwogICBmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCBidWYpOwogfQogI2VuZGlmICAvKiBXSU4zMiAqLwpAQCAtMTU5LDE1ICsxNTksMTQgQEAKIAogICBlcnIgPSBXU0FTdGFydHVwKHdWZXJzaW9uUmVxdWVzdGVkLCAmd3NhRGF0YSk7CiAKLSAgaWYgKGVyciAhPSAwKSB7CisgIGlmKGVyciAhPSAwKSB7CiAgICAgcGVycm9yKCJXaW5zb2NrIGluaXQgZmFpbGVkIik7CiAgICAgbG9nbXNnKCJFcnJvciBpbml0aWFsaXNpbmcgd2luc29jayAtLSBhYm9ydGluZyIpOwogICAgIGV4aXQoMSk7CiAgIH0KIAotICBpZiAoIExPQllURSggd3NhRGF0YS53VmVyc2lvbiApICE9IFVTRV9XSU5TT0NLIHx8Ci0gICAgICAgSElCWVRFKCB3c2FEYXRhLndWZXJzaW9uICkgIT0gVVNFX1dJTlNPQ0sgKSB7Ci0KKyAgaWYoTE9CWVRFKHdzYURhdGEud1ZlcnNpb24pICE9IFVTRV9XSU5TT0NLIHx8CisgICAgIEhJQllURSh3c2FEYXRhLndWZXJzaW9uKSAhPSBVU0VfV0lOU09DSykgewogICAgIFdTQUNsZWFudXAoKTsKICAgICBwZXJyb3IoIldpbnNvY2sgaW5pdCBmYWlsZWQiKTsKICAgICBsb2dtc2coIk5vIHN1aXRhYmxlIHdpbnNvY2suZGxsIGZvdW5kIC0tIGFib3J0aW5nIik7CmRpZmYgLS1naXQgYS90ZXN0cy9zZXJ2ZXIvdXRpbC5oIGIvdGVzdHMvc2VydmVyL3V0aWwuaAppbmRleCA4ZDJlNTgyLi4yYTE5YTYxIDEwMDY0NAotLS0gYS90ZXN0cy9zZXJ2ZXIvdXRpbC5oCisrKyBiL3Rlc3RzL3NlcnZlci91dGlsLmgKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS90ZXN0cy9zZXJ2ZXJoZWxwLnBtIGIvdGVzdHMvc2VydmVyaGVscC5wbQppbmRleCAyMjBmYmE5Li44YjI3NzlkIDEwMDY0NAotLS0gYS90ZXN0cy9zZXJ2ZXJoZWxwLnBtCisrKyBiL3Rlc3RzL3NlcnZlcmhlbHAucG0KQEAgLTksNyArOSw3IEBACiAjCiAjIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAjCiAjIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3Rlc3RzL3NzaGhlbHAucG0gYi90ZXN0cy9zc2hoZWxwLnBtCmluZGV4IDkxNDg3OWIuLmM1NjE4YTEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL3NzaGhlbHAucG0KKysrIGIvdGVzdHMvc3NoaGVscC5wbQpAQCAtOSw3ICs5LDcgQEAKICMKICMgVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICMgeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICMKICMgWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAjIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMTIwLDggKzEyMCw4IEBACiAkc2Z0cGxvZyAgICAgICAgID0gdW5kZWY7ICAgICAgICAgICAgICAgICAgICAjIHNmdHAgY2xpZW50IGxvZyBmaWxlCiAkc2Z0cGNtZHMgICAgICAgID0gJ2N1cmxfc2Z0cF9jbWRzJzsgICAgICAgICAjIHNmdHAgY2xpZW50IGNvbW1hbmRzIGJhdGNoIGZpbGUKICRrbm93bmhvc3RzICAgICAgPSAnY3VybF9jbGllbnRfa25vd25ob3N0cyc7ICMgc3NoIGtub3duaG9zdHMgZmlsZQotJGhzdHBydmtleWYgICAgICA9ICdjdXJsX2hvc3RfZHNhX2tleSc7ICAgICAgIyBob3N0IHByaXZhdGUga2V5IGZpbGUKLSRoc3RwdWJrZXlmICAgICAgPSAnY3VybF9ob3N0X2RzYV9rZXkucHViJzsgICMgaG9zdCBwdWJsaWMga2V5IGZpbGUKKyRoc3RwcnZrZXlmICAgICAgPSAnY3VybF9ob3N0X3JzYV9rZXknOyAgICAgICMgaG9zdCBwcml2YXRlIGtleSBmaWxlCiskaHN0cHVia2V5ZiAgICAgID0gJ2N1cmxfaG9zdF9yc2Ffa2V5LnB1Yic7ICAjIGhvc3QgcHVibGljIGtleSBmaWxlCiAkY2xpcHJ2a2V5ZiAgICAgID0gJ2N1cmxfY2xpZW50X2tleSc7ICAgICAgICAjIGNsaWVudCBwcml2YXRlIGtleSBmaWxlCiAkY2xpcHVia2V5ZiAgICAgID0gJ2N1cmxfY2xpZW50X2tleS5wdWInOyAgICAjIGNsaWVudCBwdWJsaWMga2V5IGZpbGUKIApkaWZmIC0tZ2l0IGEvdGVzdHMvc3Noc2VydmVyLnBsIGIvdGVzdHMvc3Noc2VydmVyLnBsCmluZGV4IGQ4YzJkNmYuLjNlYmY4ZTYgMTAwNzU1Ci0tLSBhL3Rlc3RzL3NzaHNlcnZlci5wbAorKysgYi90ZXN0cy9zc2hzZXJ2ZXIucGwKQEAgLTEwLDcgKzEwLDcgQEAKICMKICMgVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICMgeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICMKICMgWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAjIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNzQsNiArNzQsNyBAQAogICAgIHNlcnZlcl9sb2dmaWxlbmFtZQogICAgICk7CiAKK3VzZSBwYXRoaGVscDsKIAogIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogCkBAIC0zNzEsMTIgKzM3MiwxMiBAQAogICAgICMgTWFrZSBzdXJlIGFsbCBmaWxlcyBhcmUgZ29uZSBzbyBzc2gta2V5Z2VuIGRvZXNuJ3QgY29tcGxhaW4KICAgICB1bmxpbmsoJGhzdHBydmtleWYsICRoc3RwdWJrZXlmLCAkY2xpcHJ2a2V5ZiwgJGNsaXB1YmtleWYpOwogICAgIGxvZ21zZyAnZ2VuZXJhdGluZyBob3N0IGtleXMuLi4nIGlmKCR2ZXJib3NlKTsKLSAgICBpZihzeXN0ZW0gIlwiJHNzaGtleWdlblwiIC1xIC10IGRzYSAtZiAkaHN0cHJ2a2V5ZiAtQyAnY3VybCB0ZXN0IHNlcnZlcicgLU4gJyciKSB7CisgICAgaWYoc3lzdGVtICJcIiRzc2hrZXlnZW5cIiAtcSAtdCByc2EgLWYgJGhzdHBydmtleWYgLUMgJ2N1cmwgdGVzdCBzZXJ2ZXInIC1OICcnIikgewogICAgICAgICBsb2dtc2cgJ0NvdWxkIG5vdCBnZW5lcmF0ZSBob3N0IGtleSc7CiAgICAgICAgIGV4aXQgMTsKICAgICB9CiAgICAgbG9nbXNnICdnZW5lcmF0aW5nIGNsaWVudCBrZXlzLi4uJyBpZigkdmVyYm9zZSk7Ci0gICAgaWYoc3lzdGVtICJcIiRzc2hrZXlnZW5cIiAtcSAtdCBkc2EgLWYgJGNsaXBydmtleWYgLUMgJ2N1cmwgdGVzdCBjbGllbnQnIC1OICcnIikgeworICAgIGlmKHN5c3RlbSAiXCIkc3Noa2V5Z2VuXCIgLXEgLXQgcnNhIC1mICRjbGlwcnZrZXlmIC1DICdjdXJsIHRlc3QgY2xpZW50JyAtTiAnJyIpIHsKICAgICAgICAgbG9nbXNnICdDb3VsZCBub3QgZ2VuZXJhdGUgY2xpZW50IGtleSc7CiAgICAgICAgIGV4aXQgMTsKICAgICB9CkBAIC0zODQsNyArMzg1LDcgQEAKIAogCiAjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jIENvbnZlcnQgcGF0aHMgZm9yIGN1cmwncyB0ZXN0cyBydW5uaW5nIG9uIFdpbmRvd3MgdXNpbmcgQ3lnd2luIE9wZW5TU0gKKyMgQ29udmVydCBwYXRocyBmb3IgY3VybCdzIHRlc3RzIHJ1bm5pbmcgb24gV2luZG93cyB3aXRoIEN5Z3dpbi9Nc3lzIE9wZW5TU0gKICMKIG15ICRjbGlwdWJrZXlmX2NvbmZpZyA9IGFic19wYXRoKCIkcGF0aC8kY2xpcHVia2V5ZiIpOwogbXkgJGhzdHBydmtleWZfY29uZmlnID0gYWJzX3BhdGgoIiRwYXRoLyRoc3RwcnZrZXlmIik7CkBAIC0zOTIsMTAgKzM5MywxMCBAQAogbXkgJHNmdHBzcnZfY29uZmlnID0gJHNmdHBzcnY7CiAKIGlmICgkXk8gZXEgJ01TV2luMzInIHx8ICReTyBlcSAnY3lnd2luJyB8fCAkXk8gZXEgJ21zeXMnKSB7Ci0gICAgIyBjb252ZXJ0IE1pbkdXIGRyaXZlIHBhdGhzIHRvIEN5Z3dpbiBkcml2ZSBwYXRocwotICAgICRjbGlwdWJrZXlmX2NvbmZpZyA9fiBzL15cLyhcdylcLy9cL2N5Z2RyaXZlXC8kMVwvLzsKLSAgICAkaHN0cHJ2a2V5Zl9jb25maWcgPX4gcy9eXC8oXHcpXC8vXC9jeWdkcml2ZVwvJDFcLy87Ci0gICAgJHBpZGZpbGVfY29uZmlnID1+IHMvXlwvKFx3KVwvL1wvY3lnZHJpdmVcLyQxXC8vOworICAgICMgRW5zdXJlIHRvIHVzZSBNaW5HVy9DeWd3aW4gcGF0aHMKKyAgICAkY2xpcHVia2V5Zl9jb25maWcgPSBwYXRoaGVscDo6YnVpbGRfc3lzX2Fic19wYXRoKCRjbGlwdWJrZXlmX2NvbmZpZyk7CisgICAgJGhzdHBydmtleWZfY29uZmlnID0gcGF0aGhlbHA6OmJ1aWxkX3N5c19hYnNfcGF0aCgkaHN0cHJ2a2V5Zl9jb25maWcpOworICAgICRwaWRmaWxlX2NvbmZpZyA9IHBhdGhoZWxwOjpidWlsZF9zeXNfYWJzX3BhdGgoJHBpZGZpbGVfY29uZmlnKTsKICAgICAkc2Z0cHNydl9jb25maWcgPSAiaW50ZXJuYWwtc2Z0cCI7CiB9CiAKQEAgLTU1OCw3ICs1NTksNyBAQAogICAgICAgICAoJHNzaGRpZCA9fiAvU3VuU1NILykpIHsKICAgICAgICAgIyBzc2ggZGFlbW9uIHN1cHBvcnRzIGNvbW1hbmQgbGluZSBvcHRpb25zIC10IC1mIGFuZCAtbwogICAgICAgICAkZXJyID0gZ3JlcCAvKChVbnN1cHBvcnRlZCl8KEJhZCBjb25maWd1cmF0aW9uKXwoRGVwcmVjYXRlZCkpIG9wdGlvbi4qJG9wdGlvbi8sCi0gICAgICAgICAgICAgICAgICAgIHF4KCIkc3NoZCIgLXQgLWYgJHNzaGRjb25maWcgLW8gJG9wdGlvbj0kdmFsdWUgMj4mMSk7CisgICAgICAgICAgICAgICAgICAgIHF4KCIkc3NoZCIgLXQgLWYgJHNzaGRjb25maWcgLW8gIiRvcHRpb249JHZhbHVlIiAyPiYxKTsKICAgICAgICAgcmV0dXJuICEkZXJyOwogICAgIH0KICAgICBpZigoJHNzaGRpZCA9fiAvT3BlblNTSC8pICYmICgkc3NoZHZlcm51bSA+PSAyOTkpKSB7CkBAIC03MjksMTEgKzczMCwxMSBAQAogaWYoKCEgLWUgJGtub3duaG9zdHMpIHx8ICghIC1zICRrbm93bmhvc3RzKSkgewogICAgIGxvZ21zZyAnZ2VuZXJhdGluZyBzc2ggY2xpZW50IGtub3duIGhvc3RzIGZpbGUuLi4nIGlmKCR2ZXJib3NlKTsKICAgICB1bmxpbmsoJGtub3duaG9zdHMpOwotICAgIGlmKG9wZW4oRFNBS0VZRklMRSwgIjwkaHN0cHVia2V5ZiIpKSB7Ci0gICAgICAgIG15IEBkc2Fob3N0a2V5ID0gZG8geyBsb2NhbCAkLyA9ICcgJzsgPERTQUtFWUZJTEU+IH07Ci0gICAgICAgIGlmKGNsb3NlKERTQUtFWUZJTEUpKSB7CisgICAgaWYob3BlbihSU0FLRVlGSUxFLCAiPCRoc3RwdWJrZXlmIikpIHsKKyAgICAgICAgbXkgQHJzYWhvc3RrZXkgPSBkbyB7IGxvY2FsICQvID0gJyAnOyA8UlNBS0VZRklMRT4gfTsKKyAgICAgICAgaWYoY2xvc2UoUlNBS0VZRklMRSkpIHsKICAgICAgICAgICAgIGlmKG9wZW4oS05PV05IT1NUUywgIj4ka25vd25ob3N0cyIpKSB7Ci0gICAgICAgICAgICAgICAgcHJpbnQgS05PV05IT1NUUyAiJGxpc3RlbmFkZHIgc3NoLWRzcyAkZHNhaG9zdGtleVsxXVxuIjsKKyAgICAgICAgICAgICAgICBwcmludCBLTk9XTkhPU1RTICIkbGlzdGVuYWRkciBzc2gtcnNhICRyc2Fob3N0a2V5WzFdXG4iOwogICAgICAgICAgICAgICAgIGlmKCFjbG9zZShLTk9XTkhPU1RTKSkgewogICAgICAgICAgICAgICAgICAgICAkZXJyb3IgPSAiRXJyb3I6IGNhbm5vdCBjbG9zZSBmaWxlICRrbm93bmhvc3RzIjsKICAgICAgICAgICAgICAgICB9CkBAIC03NjMsOSArNzY0LDkgQEAKIG15ICRrbm93bmhvc3RzX2NvbmZpZyA9IGFic19wYXRoKCIkcGF0aC8ka25vd25ob3N0cyIpOwogCiBpZiAoJF5PIGVxICdNU1dpbjMyJyB8fCAkXk8gZXEgJ2N5Z3dpbicgfHwgJF5PIGVxICdtc3lzJykgewotICAgICMgY29udmVydCBNaW5HVyBkcml2ZSBwYXRocyB0byBDeWd3aW4gZHJpdmUgcGF0aHMKLSAgICAkaWRlbnRpdHlfY29uZmlnID1+IHMvXlwvKFx3KVwvL1wvY3lnZHJpdmVcLyQxXC8vOwotICAgICRrbm93bmhvc3RzX2NvbmZpZyA9fiBzL15cLyhcdylcLy9cL2N5Z2RyaXZlXC8kMVwvLzsKKyAgICAjIEVuc3VyZSB0byB1c2UgTWluR1cvQ3lnd2luIHBhdGhzCisgICAgJGlkZW50aXR5X2NvbmZpZyA9IHBhdGhoZWxwOjpidWlsZF9zeXNfYWJzX3BhdGgoJGlkZW50aXR5X2NvbmZpZyk7CisgICAgJGtub3duaG9zdHNfY29uZmlnID0gcGF0aGhlbHA6OmJ1aWxkX3N5c19hYnNfcGF0aCgka25vd25ob3N0c19jb25maWcpOwogfQogCiAKZGlmZiAtLWdpdCBhL3Rlc3RzL3N5bWJvbC1zY2FuLnBsIGIvdGVzdHMvc3ltYm9sLXNjYW4ucGwKaW5kZXggODlmNWVlZi4uNWQ1NzBkOCAxMDA2NDQKLS0tIGEvdGVzdHMvc3ltYm9sLXNjYW4ucGwKKysrIGIvdGVzdHMvc3ltYm9sLXNjYW4ucGwKQEAgLTEwLDcgKzEwLDcgQEAKICMKICMgVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICMgeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICMKICMgWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAjIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvdGVzdHMvdGVzdGN1cmwuMSBiL3Rlc3RzL3Rlc3RjdXJsLjEKaW5kZXggZWNlYTkxMS4uNTA5ZjVkYyAxMDA2NDQKLS0tIGEvdGVzdHMvdGVzdGN1cmwuMQorKysgYi90ZXN0cy90ZXN0Y3VybC4xCkBAIC05LDcgKzksNyBAQAogLlwiICoKIC5cIiAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAuXCIgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0uXCIgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorLlwiICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAuXCIgKgogLlwiICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAuXCIgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTMyLDcgKzMyLDcgQEAKIG1haWxlZCB0byBjdXJsLWF1dG9jb21waWxlQGhheHguc2UgdG8gYmUgZGVhbHQgd2l0aCBhdXRvbWF0aWNhbGx5IChtYWtlIHN1cmUKIHRoZSBzdWJqZWN0IGluY2x1ZGVzIHRoZSB3b3JkICJhdXRvYnVpbGQiIGFzIHRoZSBtYWlsIGdldHMgc2lsZW50bHkgZGlzY2FyZGVkCiBvdGhlcndpc2UpLiAgVGhlIG1vc3QgY3VycmVudCBidWlsZCBzdGF0dXMgKHdpdGggYSByZWFzb25hYmxlIGJhY2tsb2cpIHdpbGwgYmUKLXB1Ymxpc2hlZCBvbiB0aGUgY3VybCBzaXRlLCBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2F1dG8vCitwdWJsaXNoZWQgb24gdGhlIGN1cmwgc2l0ZSwgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvYXV0by8KIAogXGZJb3B0aW9uc1xmUCBtYXkgYmUgb21pdHRlZC4gU2VlIFxmSS0tc2V0dXBcZlAgZm9yIHdoYXQgaGFwcGVucyB0aGVuLgogCkBAIC03OSwxMiArNzksMTIgQEAKIC5TSCAiSU5JVElBTCBTRVRVUCIKIEZpcnN0IHlvdSBtYWtlIGEgY2hlY2tvdXQgZnJvbSBnaXQgKG9yIHlvdSB3cml0ZSBhIHNjcmlwdCB0aGF0IGRvd25sb2FkcyBkYWlseQogc25hcHNob3RzIGF1dG9tYXRpY2FsbHksIGZpbmQgaW5zcGlyYXRpb24gYXQKLWh0dHA6Ly9jdXJsLmhheHguc2UvYXV0by9hdXRvY3VybC50eHQpOgoraHR0cHM6Ly9jdXJsLmhheHguc2UvYXV0by9hdXRvY3VybC50eHQpOgogCiAubmYKICAgJCBta2RpciBkYWlseS1jdXJsCiAgICQgY2QgZGFpbHktY3VybAotICAkIGdpdCBjbG9uZSBnaXQ6Ly9naXRodWIuY29tL2JhZ2Rlci9jdXJsLmdpdAorICAkIGdpdCBjbG9uZSBnaXQ6Ly9naXRodWIuY29tL2N1cmwvY3VybC5naXQKIC5maQogCiBXaXRoIHRoZSBjdXJsIHNvdXJjZXMgY2hlY2tlZCBvdXQsIG9yIGRvd25sb2FkZWQsIHlvdSBjYW4gc3RhcnQgdGVzdGluZyByaWdodApkaWZmIC0tZ2l0IGEvdGVzdHMvdGVzdGN1cmwucGwgYi90ZXN0cy90ZXN0Y3VybC5wbAppbmRleCAyYjllMDgzLi5kYzM1YTAyIDEwMDc1NQotLS0gYS90ZXN0cy90ZXN0Y3VybC5wbAorKysgYi90ZXN0cy90ZXN0Y3VybC5wbApAQCAtMTAsNyArMTAsNyBAQAogIwogIyBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogIyB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0jIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisjIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogIwogIyBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICMgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zMiw3ICszMiw3IEBACiAjIGN1cmwtYXV0b2NvbXBpbGVAaGF4eC5zZSB0byBiZSBkZWFsdCB3aXRoIGF1dG9tYXRpY2FsbHkgKG1ha2Ugc3VyZSB0aGUKICMgc3ViamVjdCBpbmNsdWRlcyB0aGUgd29yZCAiYXV0b2J1aWxkIiBhcyB0aGUgbWFpbCBnZXRzIHNpbGVudGx5IGRpc2NhcmRlZAogIyBvdGhlcndpc2UpLiAgVGhlIG1vc3QgY3VycmVudCBidWlsZCBzdGF0dXMgKHdpdGggYSByZXNvbmFibGUgYmFja2xvZykgd2lsbAotIyBiZSBwdWJsaXNoZWQgb24gdGhlIGN1cmwgc2l0ZSwgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9hdXRvLworIyBiZSBwdWJsaXNoZWQgb24gdGhlIGN1cmwgc2l0ZSwgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvYXV0by8KIAogIyBVU0FHRToKICMgdGVzdGN1cmwucGwgW29wdGlvbnNdIFtjdXJsLWRhaWx5LW5hbWVdID4gb3V0cHV0CmRpZmYgLS1naXQgYS90ZXN0cy90ZnRwc2VydmVyLnBsIGIvdGVzdHMvdGZ0cHNlcnZlci5wbAppbmRleCA2MGZjMzJkLi5hNGM0ZTQ3IDEwMDc1NQotLS0gYS90ZXN0cy90ZnRwc2VydmVyLnBsCisrKyBiL3Rlc3RzL3RmdHBzZXJ2ZXIucGwKQEAgLTEwLDcgKzEwLDcgQEAKICMKICMgVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICMgeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICMKICMgWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAjIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpkaWZmIC0tZ2l0IGEvdGVzdHMvdW5pdC9NYWtlZmlsZS5hbSBiL3Rlc3RzL3VuaXQvTWFrZWZpbGUuYW0KaW5kZXggNGI0N2Y3Mi4uZDQ5ODdkNiAxMDA2NDQKLS0tIGEvdGVzdHMvdW5pdC9NYWtlZmlsZS5hbQorKysgYi90ZXN0cy91bml0L01ha2VmaWxlLmFtCkBAIC01LDExICs1LDExIEBACiAjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogIwotIyBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDEzLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorIyBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogIwogIyBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogIyB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0jIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisjIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogIwogIyBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICMgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC03MSw2ICs3MSw5IEBACiAjIE1ha2VmaWxlLmluYyBwcm92aWRlcyBuZWF0IGRlZmluaXRpb25zCiBpbmNsdWRlIE1ha2VmaWxlLmluYwogCitjaGVja3NyYzoKKwlAUEVSTEAgJCh0b3Bfc3JjZGlyKS9saWIvY2hlY2tzcmMucGwgJChzcmNkaXIpLyouYworCiBpZiBCVUlMRF9VTklUVEVTVFMKIG5vaW5zdF9QUk9HUkFNUyA9ICQoVU5JVFBST0dTKQogZWxzZQpkaWZmIC0tZ2l0IGEvdGVzdHMvdW5pdC9NYWtlZmlsZS5pbmMgYi90ZXN0cy91bml0L01ha2VmaWxlLmluYwppbmRleCA5MDczYjM0Li5jNWExNTIzIDEwMDY0NAotLS0gYS90ZXN0cy91bml0L01ha2VmaWxlLmluYworKysgYi90ZXN0cy91bml0L01ha2VmaWxlLmluYwpAQCAtNyw3ICs3LDcgQEAKICMgVGhlc2UgYXJlIGFsbCB1bml0IHRlc3QgcHJvZ3JhbXMKIFVOSVRQUk9HUyA9IHVuaXQxMzAwIHVuaXQxMzAxIHVuaXQxMzAyIHVuaXQxMzAzIHVuaXQxMzA0IHVuaXQxMzA1IHVuaXQxMzA3CVwKICB1bml0MTMwOCB1bml0MTMwOSB1bml0MTMzMCB1bml0MTM5NCB1bml0MTM5NSB1bml0MTM5NiB1bml0MTM5NyB1bml0MTM5OAlcCi0gdW5pdDE2MDAgdW5pdDE2MDEgdW5pdDE2MDIKKyB1bml0MTYwMCB1bml0MTYwMSB1bml0MTYwMiB1bml0MTYwMyB1bml0MTYwNAogCiB1bml0MTMwMF9TT1VSQ0VTID0gdW5pdDEzMDAuYyAkKFVOSVRGSUxFUykKIHVuaXQxMzAwX0NQUEZMQUdTID0gJChBTV9DUFBGTEFHUykKQEAgLTY2LDMgKzY2LDkgQEAKIHVuaXQxNjAyX1NPVVJDRVMgPSB1bml0MTYwMi5jICQoVU5JVEZJTEVTKQogdW5pdDE2MDJfQ1BQRkxBR1MgPSAkKEFNX0NQUEZMQUdTKQogCit1bml0MTYwM19TT1VSQ0VTID0gdW5pdDE2MDMuYyAkKFVOSVRGSUxFUykKK3VuaXQxNjAzX0NQUEZMQUdTID0gJChBTV9DUFBGTEFHUykKKwordW5pdDE2MDRfU09VUkNFUyA9IHVuaXQxNjA0LmMgJChVTklURklMRVMpCit1bml0MTYwNF9DUFBGTEFHUyA9ICQoQU1fQ1BQRkxBR1MpICQoTElCTUVUQUxJTktfQ1BQRkxBR1MpCisKZGlmZiAtLWdpdCBhL3Rlc3RzL3VuaXQvY3VybGNoZWNrLmggYi90ZXN0cy91bml0L2N1cmxjaGVjay5oCmluZGV4IDJlMzc0NmIuLjA2NjBlMmIgMTAwNjQ0Ci0tLSBhL3Rlc3RzL3VuaXQvY3VybGNoZWNrLmgKKysrIGIvdGVzdHMvdW5pdC9jdXJsY2hlY2suaApAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTI0LDcgKzI0LDcgQEAKIC8qIFRoZSBmYWlsIG1hY3JvcyBtYXJrIHRoZSBjdXJyZW50IHRlc3Qgc3RlcCBhcyBmYWlsZWQsIGFuZCBjb250aW51ZSAqLwogI2RlZmluZSBmYWlsX2lmKGV4cHIsIG1zZykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgIGlmKGV4cHIpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiVkIEFzc2VydGlvbiAnJXMnIG1ldDogJXNcbiIgLCAgXAorICAgIGZwcmludGYoc3RkZXJyLCAiJXM6JWQgQXNzZXJ0aW9uICclcycgbWV0OiAlc1xuIiwgICBcCiAgICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18sICNleHByLCBtc2cpOyAgICAgICAgICAgIFwKICAgICB1bml0ZmFpbCsrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICB9CkBAIC0zOCwxMCArMzgsMTAgQEAKIAogI2RlZmluZSB2ZXJpZnlfbWVtb3J5KGR5bmFtaWMsIGNoZWNrLCBsZW4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgaWYoZHluYW1pYyAmJiBtZW1jbXAoZHluYW1pYywgY2hlY2ssIGxlbikpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgZnByaW50ZihzdGRlcnIsICIlczolZCBNZW1vcnkgYnVmZmVyIG1pc21hdGNoIHNpemUgJWQuICclcycgaXMgbm90XG4iLCBcCi0gICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18sIGxlbiwgaGV4ZHVtcCgodW5zaWduZWQgY2hhciAqKWNoZWNrLCBsZW4pKTsgICAgICBcCisgICAgZnByaW50ZihzdGRlcnIsICIlczolZCBNZW1vcnkgYnVmZmVyIG1pc21hdGNoIHNpemUgJWQuICclcycgaXMgbm90XG4iLCAgXAorICAgICAgICAgICAgX19GSUxFX18sIF9fTElORV9fLCBsZW4sIGhleGR1bXAoKHVuc2lnbmVkIGNoYXIgKiljaGVjaywgbGVuKSk7IFwKICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiVkIHRoZSBzYW1lIGFzICclcydcbiIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18sIGhleGR1bXAoKHVuc2lnbmVkIGNoYXIgKilkeW5hbWljLCBsZW4pKTsgICAgICAgICBcCisgICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18sIGhleGR1bXAoKHVuc2lnbmVkIGNoYXIgKilkeW5hbWljLCBsZW4pKTsgICAgXAogICAgIHVuaXRmYWlsKys7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgfQogCkBAIC01Nyw3ICs1Nyw3IEBACiAvKiBUaGUgYWJvcnQgbWFjcm9zIG1hcmsgdGhlIGN1cnJlbnQgdGVzdCBzdGVwIGFzIGZhaWxlZCwgYW5kIGV4aXQgdGhlIHRlc3QgKi8KICNkZWZpbmUgYWJvcnRfaWYoZXhwciwgbXNnKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICBpZihleHByKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgZnByaW50ZihzdGRlcnIsICIlczolZCBBYm9ydCBhc3NlcnRpb24gJyVzJyBtZXQ6ICVzXG4iICwgIFwKKyAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiVkIEFib3J0IGFzc2VydGlvbiAnJXMnIG1ldDogJXNcbiIsICAgXAogICAgICAgICAgICAgX19GSUxFX18sIF9fTElORV9fLCAjZXhwciwgbXNnKTsgICAgICAgICAgICAgICAgICBcCiAgICAgdW5pdGZhaWwrKzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBnb3RvIHVuaXRfdGVzdF9hYm9ydDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtODUsMTAgKzg1LDExIEBACiAjZGVmaW5lIFVOSVRURVNUX1NUQVJUICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgIGludCB0ZXN0KGNoYXIgKmFyZykgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICh2b2lkKWFyZzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIGlmICh1bml0X3NldHVwKCkpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgZmFpbCgidW5pdF9zZXR1cCgpIGZhaWx1cmUiKTsgICAgICAgICAgICAgICBcCi0gIH0gZWxzZSB7CisgICAgKHZvaWQpYXJnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYodW5pdF9zZXR1cCgpKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBmYWlsKCJ1bml0X3NldHVwKCkgZmFpbHVyZSIpOyAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZWxzZSB7CiAKICNkZWZpbmUgVU5JVFRFU1RfU1RPUCAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBnb3RvIHVuaXRfdGVzdF9hYm9ydDsgLyogYXZvaWQgd2FybmluZyAqLyAgIFwKZGlmZiAtLWdpdCBhL3Rlc3RzL3VuaXQvdW5pdDEzMDAuYyBiL3Rlc3RzL3VuaXQvdW5pdDEzMDAuYwppbmRleCAyYjgzNDE2Li5jNGQ5ZGQ5IDEwMDY0NAotLS0gYS90ZXN0cy91bml0L3VuaXQxMzAwLmMKKysrIGIvdGVzdHMvdW5pdC91bml0MTMwMC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxMSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtNDEsOCArNDEsOCBAQAogICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwogICBsbGlzdF9kZXN0aW5hdGlvbiA9IEN1cmxfbGxpc3RfYWxsb2ModGVzdF9jdXJsX2xsaXN0X2R0b3IpOwogICBpZighbGxpc3RfZGVzdGluYXRpb24pIHsKLSAgICAgIEN1cmxfbGxpc3RfZGVzdHJveShsbGlzdCwgTlVMTCk7Ci0gICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKKyAgICBDdXJsX2xsaXN0X2Rlc3Ryb3kobGxpc3QsIE5VTEwpOworICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwogICB9CiAKICAgcmV0dXJuIENVUkxFX09LOwpkaWZmIC0tZ2l0IGEvdGVzdHMvdW5pdC91bml0MTMwMS5jIGIvdGVzdHMvdW5pdC91bml0MTMwMS5jCmluZGV4IDQ3ZGY0ODEuLjkyODA3NmUgMTAwNjQ0Ci0tLSBhL3Rlc3RzL3VuaXQvdW5pdDEzMDEuYworKysgYi90ZXN0cy91bml0L3VuaXQxMzAxLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDExLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yMywzMiArMjMsMzIgQEAKIAogI2luY2x1ZGUgInN0cmVxdWFsLmgiCiAKLXN0YXRpYyBDVVJMY29kZSB1bml0X3NldHVwKCB2b2lkICkge3JldHVybiBDVVJMRV9PSzt9Ci1zdGF0aWMgdm9pZCB1bml0X3N0b3AoIHZvaWQgKSB7fQorc3RhdGljIENVUkxjb2RlIHVuaXRfc2V0dXAodm9pZCkge3JldHVybiBDVVJMRV9PSzt9CitzdGF0aWMgdm9pZCB1bml0X3N0b3Aodm9pZCkge30KIAogVU5JVFRFU1RfU1RBUlQKIAogaW50IHJjOwogCiByYyA9IGN1cmxfc3RyZXF1YWwoImlpaSIsICJJSUkiKTsKLWZhaWxfdW5sZXNzKCByYyAhPSAwICwgInJldHVybiBjb2RlIHNob3VsZCBiZSB6ZXJvIiApOworZmFpbF91bmxlc3MocmMgIT0gMCwgInJldHVybiBjb2RlIHNob3VsZCBiZSB6ZXJvIik7CiAKIHJjID0gY3VybF9zdHJlcXVhbCgiaWlpYSIsICJJSUkiKTsKLWZhaWxfdW5sZXNzKCByYyA9PSAwICwgInJldHVybiBjb2RlIHNob3VsZCBiZSB6ZXJvIiApOworZmFpbF91bmxlc3MocmMgPT0gMCwgInJldHVybiBjb2RlIHNob3VsZCBiZSB6ZXJvIik7CiAKIHJjID0gY3VybF9zdHJlcXVhbCgiaWlpIiwgIklJSWEiKTsKLWZhaWxfdW5sZXNzKCByYyA9PSAwICwgInJldHVybiBjb2RlIHNob3VsZCBiZSB6ZXJvIiApOworZmFpbF91bmxlc3MocmMgPT0gMCwgInJldHVybiBjb2RlIHNob3VsZCBiZSB6ZXJvIik7CiAKIHJjID0gY3VybF9zdHJlcXVhbCgiaWlpQSIsICJJSUlhIik7Ci1mYWlsX3VubGVzcyggcmMgIT0gMCAsICJyZXR1cm4gY29kZSBzaG91bGQgYmUgbm9uLXplcm8iICk7CitmYWlsX3VubGVzcyhyYyAhPSAwLCAicmV0dXJuIGNvZGUgc2hvdWxkIGJlIG5vbi16ZXJvIik7CiAKIHJjID0gY3VybF9zdHJuZXF1YWwoImlpaSIsICJJSUkiLCAzKTsKLWZhaWxfdW5sZXNzKCByYyAhPSAwICwgInJldHVybiBjb2RlIHNob3VsZCBiZSBub24temVybyIgKTsKK2ZhaWxfdW5sZXNzKHJjICE9IDAsICJyZXR1cm4gY29kZSBzaG91bGQgYmUgbm9uLXplcm8iKTsKIAogcmMgPSBjdXJsX3N0cm5lcXVhbCgiaWlpQUJDIiwgIklJSWNiYSIsIDMpOwotZmFpbF91bmxlc3MoIHJjICE9IDAgLCAicmV0dXJuIGNvZGUgc2hvdWxkIGJlIG5vbi16ZXJvIiApOworZmFpbF91bmxlc3MocmMgIT0gMCwgInJldHVybiBjb2RlIHNob3VsZCBiZSBub24temVybyIpOwogCiByYyA9IGN1cmxfc3RybmVxdWFsKCJpaSIsICJJSSIsIDMpOwotZmFpbF91bmxlc3MoIHJjICE9IDAgLCAicmV0dXJuIGNvZGUgc2hvdWxkIGJlIG5vbi16ZXJvIiApOworZmFpbF91bmxlc3MocmMgIT0gMCwgInJldHVybiBjb2RlIHNob3VsZCBiZSBub24temVybyIpOwogCiBVTklUVEVTVF9TVE9QCmRpZmYgLS1naXQgYS90ZXN0cy91bml0L3VuaXQxMzAyLmMgYi90ZXN0cy91bml0L3VuaXQxMzAyLmMKaW5kZXggNDEyYTcxZi4uNjYwNTRkYSAxMDA2NDQKLS0tIGEvdGVzdHMvdW5pdC91bml0MTMwMi5jCisrKyBiL3Rlc3RzL3VuaXQvdW5pdDEzMDIuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTQsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTI4LDcgKzI4LDcgQEAKIAogc3RhdGljIHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhOwogCi1zdGF0aWMgQ1VSTGNvZGUgdW5pdF9zZXR1cCggdm9pZCApCitzdGF0aWMgQ1VSTGNvZGUgdW5pdF9zZXR1cCh2b2lkKQogewogICBkYXRhID0gY3VybF9lYXN5X2luaXQoKTsKICAgaWYoIWRhdGEpCkBAIC0zNiw3ICszNiw3IEBACiAgIHJldHVybiBDVVJMRV9PSzsKIH0KIAotc3RhdGljIHZvaWQgdW5pdF9zdG9wKCB2b2lkICkKK3N0YXRpYyB2b2lkIHVuaXRfc3RvcCh2b2lkKQogewogICBjdXJsX2Vhc3lfY2xlYW51cChkYXRhKTsKIH0KQEAgLTUyLDUwICs1Miw1MCBAQAogcmMgPSBDdXJsX2Jhc2U2NF9lbmNvZGUoZGF0YSwgImkiLCAxLCAmb3V0cHV0LCAmc2l6ZSk7CiBmYWlsX3VubGVzcyhyYyA9PSBDVVJMRV9PSywgInJldHVybiBjb2RlIHNob3VsZCBiZSBDVVJMRV9PSyIpOwogZmFpbF91bmxlc3Moc2l6ZSA9PSA0LCAic2l6ZSBzaG91bGQgYmUgNCIpOwotdmVyaWZ5X21lbW9yeSggb3V0cHV0LCAiYVE9PSIsIDQpOwordmVyaWZ5X21lbW9yeShvdXRwdXQsICJhUT09IiwgNCk7CiBDdXJsX3NhZmVmcmVlKG91dHB1dCk7CiAKIHJjID0gQ3VybF9iYXNlNjRfZW5jb2RlKGRhdGEsICJpaSIsIDIsICZvdXRwdXQsICZzaXplKTsKIGZhaWxfdW5sZXNzKHJjID09IENVUkxFX09LLCAicmV0dXJuIGNvZGUgc2hvdWxkIGJlIENVUkxFX09LIik7CiBmYWlsX3VubGVzcyhzaXplID09IDQsICJzaXplIHNob3VsZCBiZSA0Iik7Ci12ZXJpZnlfbWVtb3J5KCBvdXRwdXQsICJhV2s9IiwgNCk7Cit2ZXJpZnlfbWVtb3J5KG91dHB1dCwgImFXaz0iLCA0KTsKIEN1cmxfc2FmZWZyZWUob3V0cHV0KTsKIAogcmMgPSBDdXJsX2Jhc2U2NF9lbmNvZGUoZGF0YSwgImlpaSIsIDMsICZvdXRwdXQsICZzaXplKTsKIGZhaWxfdW5sZXNzKHJjID09IENVUkxFX09LLCAicmV0dXJuIGNvZGUgc2hvdWxkIGJlIENVUkxFX09LIik7CiBmYWlsX3VubGVzcyhzaXplID09IDQsICJzaXplIHNob3VsZCBiZSA0Iik7Ci12ZXJpZnlfbWVtb3J5KCBvdXRwdXQsICJhV2xwIiwgNCk7Cit2ZXJpZnlfbWVtb3J5KG91dHB1dCwgImFXbHAiLCA0KTsKIEN1cmxfc2FmZWZyZWUob3V0cHV0KTsKIAogcmMgPSBDdXJsX2Jhc2U2NF9lbmNvZGUoZGF0YSwgImlpaWkiLCA0LCAmb3V0cHV0LCAmc2l6ZSk7CiBmYWlsX3VubGVzcyhyYyA9PSBDVVJMRV9PSywgInJldHVybiBjb2RlIHNob3VsZCBiZSBDVVJMRV9PSyIpOwogZmFpbF91bmxlc3Moc2l6ZSA9PSA4LCAic2l6ZSBzaG91bGQgYmUgOCIpOwotdmVyaWZ5X21lbW9yeSggb3V0cHV0LCAiYVdscGFRPT0iLCA4KTsKK3ZlcmlmeV9tZW1vcnkob3V0cHV0LCAiYVdscGFRPT0iLCA4KTsKIEN1cmxfc2FmZWZyZWUob3V0cHV0KTsKIAogcmMgPSBDdXJsX2Jhc2U2NF9lbmNvZGUoZGF0YSwgIlx4ZmZceDAxXHhmZVx4MDIiLCA0LCAmb3V0cHV0LCAmc2l6ZSk7CiBmYWlsX3VubGVzcyhyYyA9PSBDVVJMRV9PSywgInJldHVybiBjb2RlIHNob3VsZCBiZSBDVVJMRV9PSyIpOwogZmFpbF91bmxlc3Moc2l6ZSA9PSA4LCAic2l6ZSBzaG91bGQgYmUgOCIpOwotdmVyaWZ5X21lbW9yeSggb3V0cHV0LCAiL3dIK0FnPT0iLCA4KTsKK3ZlcmlmeV9tZW1vcnkob3V0cHV0LCAiL3dIK0FnPT0iLCA4KTsKIEN1cmxfc2FmZWZyZWUob3V0cHV0KTsKIAogcmMgPSBDdXJsX2Jhc2U2NHVybF9lbmNvZGUoZGF0YSwgIlx4ZmZceDAxXHhmZVx4MDIiLCA0LCAmb3V0cHV0LCAmc2l6ZSk7CiBmYWlsX3VubGVzcyhyYyA9PSBDVVJMRV9PSywgInJldHVybiBjb2RlIHNob3VsZCBiZSBDVVJMRV9PSyIpOwogZmFpbF91bmxlc3Moc2l6ZSA9PSA4LCAic2l6ZSBzaG91bGQgYmUgOCIpOwotdmVyaWZ5X21lbW9yeSggb3V0cHV0LCAiX3dILUFnPT0iLCA4KTsKK3ZlcmlmeV9tZW1vcnkob3V0cHV0LCAiX3dILUFnPT0iLCA4KTsKIEN1cmxfc2FmZWZyZWUob3V0cHV0KTsKIAogcmMgPSBDdXJsX2Jhc2U2NHVybF9lbmNvZGUoZGF0YSwgImlpaWkiLCA0LCAmb3V0cHV0LCAmc2l6ZSk7CiBmYWlsX3VubGVzcyhyYyA9PSBDVVJMRV9PSywgInJldHVybiBjb2RlIHNob3VsZCBiZSBDVVJMRV9PSyIpOwogZmFpbF91bmxlc3Moc2l6ZSA9PSA4LCAic2l6ZSBzaG91bGQgYmUgOCIpOwotdmVyaWZ5X21lbW9yeSggb3V0cHV0LCAiYVdscGFRPT0iLCA4KTsKK3ZlcmlmeV9tZW1vcnkob3V0cHV0LCAiYVdscGFRPT0iLCA4KTsKIEN1cmxfc2FmZWZyZWUob3V0cHV0KTsKIAogLyogMCBsZW5ndGggbWFrZXMgaXQgZG8gc3RybGVuKCkgKi8KIHJjID0gQ3VybF9iYXNlNjRfZW5jb2RlKGRhdGEsICJpaWlpIiwgMCwgJm91dHB1dCwgJnNpemUpOwogZmFpbF91bmxlc3MocmMgPT0gQ1VSTEVfT0ssICJyZXR1cm4gY29kZSBzaG91bGQgYmUgQ1VSTEVfT0siKTsKIGZhaWxfdW5sZXNzKHNpemUgPT0gOCwgInNpemUgc2hvdWxkIGJlIDgiKTsKLXZlcmlmeV9tZW1vcnkoIG91dHB1dCwgImFXbHBhUT09IiwgOCk7Cit2ZXJpZnlfbWVtb3J5KG91dHB1dCwgImFXbHBhUT09IiwgOCk7CiBDdXJsX3NhZmVmcmVlKG91dHB1dCk7CiAKIHJjID0gQ3VybF9iYXNlNjRfZGVjb2RlKCJhV2xwYVE9PSIsICZkZWNvZGVkLCAmc2l6ZSk7CkBAIC0xMjYsNyArMTI2LDggQEAKIHNpemUgPSAxOyAvKiBub3QgemVybyAqLwogZGVjb2RlZCA9ICZhbnljaGFyOyAvKiBub3QgTlVMTCAqLwogcmMgPSBDdXJsX2Jhc2U2NF9kZWNvZGUoImFRIiwgJmRlY29kZWQsICZzaXplKTsKLWZhaWxfdW5sZXNzKHJjID09IENVUkxFX0JBRF9DT05URU5UX0VOQ09ESU5HLCAicmV0dXJuIGNvZGUgc2hvdWxkIGJlIENVUkxFX0JBRF9DT05URU5UX0VOQ09ESU5HIik7CitmYWlsX3VubGVzcyhyYyA9PSBDVVJMRV9CQURfQ09OVEVOVF9FTkNPRElORywKKyAgICAgICAgICAgICJyZXR1cm4gY29kZSBzaG91bGQgYmUgQ1VSTEVfQkFEX0NPTlRFTlRfRU5DT0RJTkciKTsKIGZhaWxfdW5sZXNzKHNpemUgPT0gMCwgInNpemUgc2hvdWxkIGJlIDAiKTsKIGZhaWxfaWYoZGVjb2RlZCwgInJldHVybmVkIHBvaW50ZXIgc2hvdWxkIGJlIE5VTEwiKTsKIApAQCAtMTM0LDcgKzEzNSw4IEBACiBzaXplID0gMTsgLyogbm90IHplcm8gKi8KIGRlY29kZWQgPSAmYW55Y2hhcjsgLyogbm90IE5VTEwgKi8KIHJjID0gQ3VybF9iYXNlNjRfZGVjb2RlKCJhPT09IiwgJmRlY29kZWQsICZzaXplKTsKLWZhaWxfdW5sZXNzKHJjID09IENVUkxFX0JBRF9DT05URU5UX0VOQ09ESU5HLCAicmV0dXJuIGNvZGUgc2hvdWxkIGJlIENVUkxFX0JBRF9DT05URU5UX0VOQ09ESU5HIik7CitmYWlsX3VubGVzcyhyYyA9PSBDVVJMRV9CQURfQ09OVEVOVF9FTkNPRElORywKKyAgICAgICAgICAgICJyZXR1cm4gY29kZSBzaG91bGQgYmUgQ1VSTEVfQkFEX0NPTlRFTlRfRU5DT0RJTkciKTsKIGZhaWxfdW5sZXNzKHNpemUgPT0gMCwgInNpemUgc2hvdWxkIGJlIDAiKTsKIGZhaWxfaWYoZGVjb2RlZCwgInJldHVybmVkIHBvaW50ZXIgc2hvdWxkIGJlIE5VTEwiKTsKIApAQCAtMTQyLDcgKzE0NCw4IEBACiBzaXplID0gMTsgLyogbm90IHplcm8gKi8KIGRlY29kZWQgPSAmYW55Y2hhcjsgLyogbm90IE5VTEwgKi8KIHJjID0gQ3VybF9iYXNlNjRfZGVjb2RlKCJhPVE9IiwgJmRlY29kZWQsICZzaXplKTsKLWZhaWxfdW5sZXNzKHJjID09IENVUkxFX0JBRF9DT05URU5UX0VOQ09ESU5HLCAicmV0dXJuIGNvZGUgc2hvdWxkIGJlIENVUkxFX0JBRF9DT05URU5UX0VOQ09ESU5HIik7CitmYWlsX3VubGVzcyhyYyA9PSBDVVJMRV9CQURfQ09OVEVOVF9FTkNPRElORywKKyAgICAgICAgICAgICJyZXR1cm4gY29kZSBzaG91bGQgYmUgQ1VSTEVfQkFEX0NPTlRFTlRfRU5DT0RJTkciKTsKIGZhaWxfdW5sZXNzKHNpemUgPT0gMCwgInNpemUgc2hvdWxkIGJlIDAiKTsKIGZhaWxfaWYoZGVjb2RlZCwgInJldHVybmVkIHBvaW50ZXIgc2hvdWxkIGJlIE5VTEwiKTsKIApAQCAtMTUwLDcgKzE1Myw4IEBACiBzaXplID0gMTsgLyogbm90IHplcm8gKi8KIGRlY29kZWQgPSAmYW55Y2hhcjsgLyogbm90IE5VTEwgKi8KIHJjID0gQ3VybF9iYXNlNjRfZGVjb2RlKCJhXHgxZj09IiwgJmRlY29kZWQsICZzaXplKTsKLWZhaWxfdW5sZXNzKHJjID09IENVUkxFX0JBRF9DT05URU5UX0VOQ09ESU5HLCAicmV0dXJuIGNvZGUgc2hvdWxkIGJlIENVUkxFX0JBRF9DT05URU5UX0VOQ09ESU5HIik7CitmYWlsX3VubGVzcyhyYyA9PSBDVVJMRV9CQURfQ09OVEVOVF9FTkNPRElORywKKyAgICAgICAgICAgICJyZXR1cm4gY29kZSBzaG91bGQgYmUgQ1VSTEVfQkFEX0NPTlRFTlRfRU5DT0RJTkciKTsKIGZhaWxfdW5sZXNzKHNpemUgPT0gMCwgInNpemUgc2hvdWxkIGJlIDAiKTsKIGZhaWxfaWYoZGVjb2RlZCwgInJldHVybmVkIHBvaW50ZXIgc2hvdWxkIGJlIE5VTEwiKTsKIApkaWZmIC0tZ2l0IGEvdGVzdHMvdW5pdC91bml0MTMwMy5jIGIvdGVzdHMvdW5pdC91bml0MTMwMy5jCmluZGV4IGI0OGE2MjUuLjdjMDczMWEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL3VuaXQvdW5pdDEzMDMuYworKysgYi90ZXN0cy91bml0L3VuaXQxMzAzLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yNywxNSArMjcsMTUgQEAKIAogc3RhdGljIHN0cnVjdCBTZXNzaW9uSGFuZGxlICpkYXRhOwogCi1zdGF0aWMgQ1VSTGNvZGUgdW5pdF9zZXR1cCggdm9pZCApCitzdGF0aWMgQ1VSTGNvZGUgdW5pdF9zZXR1cCh2b2lkKQogewogICBkYXRhID0gY3VybF9lYXN5X2luaXQoKTsKLSAgaWYgKCFkYXRhKQorICBpZighZGF0YSkKICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKICAgcmV0dXJuIENVUkxFX09LOwogfQogCi1zdGF0aWMgdm9pZCB1bml0X3N0b3AoIHZvaWQgKQorc3RhdGljIHZvaWQgdW5pdF9zdG9wKHZvaWQpCiB7CiAgIGN1cmxfZWFzeV9jbGVhbnVwKGRhdGEpOwogfQpkaWZmIC0tZ2l0IGEvdGVzdHMvdW5pdC91bml0MTMwNC5jIGIvdGVzdHMvdW5pdC91bml0MTMwNC5jCmluZGV4IDEyYjAyNzMuLjExYmJhMzkgMTAwNjQ0Ci0tLSBhL3Rlc3RzL3VuaXQvdW5pdDEzMDQuYworKysgYi90ZXN0cy91bml0L3VuaXQxMzA0LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDEzLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zMSwxMCArMzEsMTAgQEAKIHsKICAgcGFzc3dvcmQgPSBzdHJkdXAoIiIpOwogICBsb2dpbiA9IHN0cmR1cCgiIik7Ci0gIGlmICghcGFzc3dvcmQgfHwgIWxvZ2luKSB7Ci0JICBDdXJsX3NhZmVmcmVlKHBhc3N3b3JkKTsKLQkgIEN1cmxfc2FmZWZyZWUobG9naW4pOwotCSAgcmV0dXJuIENVUkxFX09VVF9PRl9NRU1PUlk7CisgIGlmKCFwYXNzd29yZCB8fCAhbG9naW4pIHsKKyAgICBDdXJsX3NhZmVmcmVlKHBhc3N3b3JkKTsKKyAgICBDdXJsX3NhZmVmcmVlKGxvZ2luKTsKKyAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKICAgfQogICByZXR1cm4gQ1VSTEVfT0s7CiB9CkBAIC03Miw3ICs3Miw4IEBACiAgIGFib3J0X3VubGVzcyhwYXNzd29yZCAhPSBOVUxMLCAicmV0dXJuZWQgTlVMTCEiKTsKICAgZmFpbF91bmxlc3MocGFzc3dvcmRbMF0gPT0gMCwgInBhc3N3b3JkIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNoYW5nZWQiKTsKICAgYWJvcnRfdW5sZXNzKGxvZ2luICE9IE5VTEwsICJyZXR1cm5lZCBOVUxMISIpOwotICBmYWlsX3VubGVzcyhzdHJuY21wKGxvZ2luLCAibWUiLCAyKSA9PSAwLCAibG9naW4gc2hvdWxkIG5vdCBoYXZlIGJlZW4gY2hhbmdlZCIpOworICBmYWlsX3VubGVzcyhzdHJuY21wKGxvZ2luLCAibWUiLCAyKSA9PSAwLAorICAgICAgICAgICAgICAibG9naW4gc2hvdWxkIG5vdCBoYXZlIGJlZW4gY2hhbmdlZCIpOwogCiAgIC8qCiAgICAqIFRlc3QgYSBub24gZXhpc3RlbnQgbG9naW4gYW5kIGhvc3QgaW4gb3VyIG5ldHJjIGZpbGUuCkBAIC04NSw3ICs4Niw4IEBACiAgIGFib3J0X3VubGVzcyhwYXNzd29yZCAhPSBOVUxMLCAicmV0dXJuZWQgTlVMTCEiKTsKICAgZmFpbF91bmxlc3MocGFzc3dvcmRbMF0gPT0gMCwgInBhc3N3b3JkIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNoYW5nZWQiKTsKICAgYWJvcnRfdW5sZXNzKGxvZ2luICE9IE5VTEwsICJyZXR1cm5lZCBOVUxMISIpOwotICBmYWlsX3VubGVzcyhzdHJuY21wKGxvZ2luLCAibWUiLCAyKSA9PSAwLCAibG9naW4gc2hvdWxkIG5vdCBoYXZlIGJlZW4gY2hhbmdlZCIpOworICBmYWlsX3VubGVzcyhzdHJuY21wKGxvZ2luLCAibWUiLCAyKSA9PSAwLAorICAgICAgICAgICAgICAibG9naW4gc2hvdWxkIG5vdCBoYXZlIGJlZW4gY2hhbmdlZCIpOwogCiAgIC8qCiAgICAqIFRlc3QgYSBub24gZXhpc3RlbnQgbG9naW4gKHN1YnN0cmluZyBvZiBhbiBleGlzdGluZyBvbmUpIGluIG91cgpAQCAtOTksNyArMTAxLDggQEAKICAgYWJvcnRfdW5sZXNzKHBhc3N3b3JkICE9IE5VTEwsICJyZXR1cm5lZCBOVUxMISIpOwogICBmYWlsX3VubGVzcyhwYXNzd29yZFswXSA9PSAwLCAicGFzc3dvcmQgc2hvdWxkIG5vdCBoYXZlIGJlZW4gY2hhbmdlZCIpOwogICBhYm9ydF91bmxlc3MobG9naW4gIT0gTlVMTCwgInJldHVybmVkIE5VTEwhIik7Ci0gIGZhaWxfdW5sZXNzKHN0cm5jbXAobG9naW4sICJhZG1pIiwgNCkgPT0gMCwgImxvZ2luIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNoYW5nZWQiKTsKKyAgZmFpbF91bmxlc3Moc3RybmNtcChsb2dpbiwgImFkbWkiLCA0KSA9PSAwLAorICAgICAgICAgICAgICAibG9naW4gc2hvdWxkIG5vdCBoYXZlIGJlZW4gY2hhbmdlZCIpOwogCiAgIC8qCiAgICAqIFRlc3QgYSBub24gZXhpc3RlbnQgbG9naW4gKHN1cGVyc3RyaW5nIG9mIGFuIGV4aXN0aW5nIG9uZSkKQEAgLTExMyw3ICsxMTYsOCBAQAogICBhYm9ydF91bmxlc3MocGFzc3dvcmQgIT0gTlVMTCwgInJldHVybmVkIE5VTEwhIik7CiAgIGZhaWxfdW5sZXNzKHBhc3N3b3JkWzBdID09IDAsICJwYXNzd29yZCBzaG91bGQgbm90IGhhdmUgYmVlbiBjaGFuZ2VkIik7CiAgIGFib3J0X3VubGVzcyhsb2dpbiAhPSBOVUxMLCAicmV0dXJuZWQgTlVMTCEiKTsKLSAgZmFpbF91bmxlc3Moc3RybmNtcChsb2dpbiwgImFkbWlubiIsIDYpID09IDAsICJsb2dpbiBzaG91bGQgbm90IGhhdmUgYmVlbiBjaGFuZ2VkIik7CisgIGZhaWxfdW5sZXNzKHN0cm5jbXAobG9naW4sICJhZG1pbm4iLCA2KSA9PSAwLAorICAgICAgICAgICAgICAibG9naW4gc2hvdWxkIG5vdCBoYXZlIGJlZW4gY2hhbmdlZCIpOwogCiAgIC8qCiAgICAqIFRlc3QgZm9yIHRoZSBmaXJzdCBleGlzdGluZyBob3N0IGluIG91ciBuZXRyYyBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy91bml0L3VuaXQxMzA1LmMgYi90ZXN0cy91bml0L3VuaXQxMzA1LmMKaW5kZXggOTY5MTNmMS4uOTVjZmUyYiAxMDA2NDQKLS0tIGEvdGVzdHMvdW5pdC91bml0MTMwNS5jCisrKyBiL3Rlc3RzL3VuaXQvdW5pdDEzMDUuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTUsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTQ0LDExICs0NCwxMSBAQAogc3RhdGljIGNoYXIgKmRhdGFfa2V5Owogc3RhdGljIHN0cnVjdCBDdXJsX2Ruc19lbnRyeSAqZGF0YV9ub2RlOwogCi1zdGF0aWMgQ1VSTGNvZGUgdW5pdF9zZXR1cCggdm9pZCApCitzdGF0aWMgQ1VSTGNvZGUgdW5pdF9zZXR1cCh2b2lkKQogewogICBpbnQgcmM7CiAgIGRhdGEgPSBjdXJsX2Vhc3lfaW5pdCgpOwotICBpZiAoIWRhdGEpCisgIGlmKCFkYXRhKQogICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwogCiAgIHJjID0gQ3VybF9ta19kbnNjYWNoZSgmaHApOwpAQCAtNjAsOSArNjAsOSBAQAogICByZXR1cm4gQ1VSTEVfT0s7CiB9CiAKLXN0YXRpYyB2b2lkIHVuaXRfc3RvcCggdm9pZCApCitzdGF0aWMgdm9pZCB1bml0X3N0b3Aodm9pZCkKIHsKLSAgaWYgKGRhdGFfbm9kZSkgeworICBpZihkYXRhX25vZGUpIHsKICAgICBDdXJsX2ZyZWVhZGRyaW5mbyhkYXRhX25vZGUtPmFkZHIpOwogICAgIGZyZWUoZGF0YV9ub2RlKTsKICAgfQpAQCAtMTAzLDE1ICsxMDMsMTUgQEAKIHN0YXRpYyBDVVJMY29kZSBjcmVhdGVfbm9kZSh2b2lkKQogewogICBkYXRhX2tleSA9IGFwcmludGYoIiVzOiVkIiwgImR1bW15IiwgMCk7Ci0gIGlmICghZGF0YV9rZXkpCisgIGlmKCFkYXRhX2tleSkKICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKIAogICBkYXRhX25vZGUgPSBjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBDdXJsX2Ruc19lbnRyeSkpOwotICBpZiAoIWRhdGFfbm9kZSkKKyAgaWYoIWRhdGFfbm9kZSkKICAgICByZXR1cm4gQ1VSTEVfT1VUX09GX01FTU9SWTsKIAogICBkYXRhX25vZGUtPmFkZHIgPSBmYWtlX2FpKCk7Ci0gIGlmICghZGF0YV9ub2RlLT5hZGRyKQorICBpZighZGF0YV9ub2RlLT5hZGRyKQogICAgIHJldHVybiBDVVJMRV9PVVRfT0ZfTUVNT1JZOwogCiAgIHJldHVybiBDVVJMRV9PSzsKQEAgLTEyNCw3ICsxMjQsNyBAQAogICBzaXplX3Qga2V5X2xlbjsKIAogICAvKiBUZXN0IDEzMDUgZXhpdHMgd2l0aG91dCBhZGRpbmcgYW55dGhpbmcgdG8gdGhlIGhhc2ggKi8KLSAgaWYgKHN0cmNtcChhcmcsICIxMzA1IikgIT0gMCkgeworICBpZihzdHJjbXAoYXJnLCAiMTMwNSIpICE9IDApIHsKICAgICBDVVJMY29kZSByYyA9IGNyZWF0ZV9ub2RlKCk7CiAgICAgYWJvcnRfdW5sZXNzKHJjID09IENVUkxFX09LLCAiZGF0YSBub2RlIGNyZWF0aW9uIGZhaWxlZCIpOwogICAgIGtleV9sZW4gPSBzdHJsZW4oZGF0YV9rZXkpOwpAQCAtMTM0LDggKzEzNCw2IEBACiAgICAgYWJvcnRfdW5sZXNzKG5vZGVwLCAiaW5zZXJ0aW9uIGludG8gaGFzaCBmYWlsZWQiKTsKICAgICAvKiBGcmVlaW5nIHdpbGwgbm93IGJlIGRvbmUgYnkgQ3VybF9oYXNoX2Rlc3Ryb3kgKi8KICAgICBkYXRhX25vZGUgPSBOVUxMOwotCi0gICAgLyogVG8gZG86IHRlc3QgcmV0cmlldmFsLCBkZWxldGlvbiwgZWRnZSBjb25kaXRpb25zICovCiAgIH0KIAogVU5JVFRFU1RfU1RPUApkaWZmIC0tZ2l0IGEvdGVzdHMvdW5pdC91bml0MTMwNy5jIGIvdGVzdHMvdW5pdC91bml0MTMwNy5jCmluZGV4IGMyNmU4MGMuLjU3NjQ2MjIgMTAwNjQ0Ci0tLSBhL3Rlc3RzL3VuaXQvdW5pdDEzMDcuYworKysgYi90ZXN0cy91bml0L3VuaXQxMzA3LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDExLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0xNjAsNyArMTYwLDcgQEAKICAgeyAiKioqKi50eHQiLCAgICAgICAgICAgICAgICAgIi50eHQiLCAgICAgICAgICAgICAgICAgICBNQVRDSCB9LAogCiAgIC8qIGVtcHR5IHN0cmluZyBvciBwYXR0ZXJuICovCi0gIHsgIiIsICAgICAgICAgICAgICAgICAgICAgICAgICIiLCAgICAgICAgICAgICAgICAgICAgICAgTUFUQ0ggfSAsCisgIHsgIiIsICAgICAgICAgICAgICAgICAgICAgICAgICIiLCAgICAgICAgICAgICAgICAgICAgICAgTUFUQ0ggfSwKICAgeyAiIiwgICAgICAgICAgICAgICAgICAgICAgICAgImhlbGxvIiwgICAgICAgICAgICAgICAgICBOT01BVENIIH0sCiAgIHsgImZpbGUiLCAgICAgICAgICAgICAgICAgICAgICIiLCAgICAgICAgICAgICAgICAgICAgICAgTk9NQVRDSCAgfSwKICAgeyAiPyIsICAgICAgICAgICAgICAgICAgICAgICAgIiIsICAgICAgICAgICAgICAgICAgICAgICBOT01BVENIIH0sCkBAIC0yMDgsMTIgKzIwOCwxMiBAQAogICB7ICIiLCAgICAgICAgICAgICAgICAgICAgICAgICAiIiwgICAgICAgICAgICAgICAgICAgICAgIE1BVENIIH0KIH07CiAKLXN0YXRpYyBDVVJMY29kZSB1bml0X3NldHVwKCB2b2lkICkKK3N0YXRpYyBDVVJMY29kZSB1bml0X3NldHVwKHZvaWQpCiB7CiAgIHJldHVybiBDVVJMRV9PSzsKIH0KIAotc3RhdGljIHZvaWQgdW5pdF9zdG9wKCB2b2lkICkKK3N0YXRpYyB2b2lkIHVuaXRfc3RvcCh2b2lkKQogewogfQogCmRpZmYgLS1naXQgYS90ZXN0cy91bml0L3VuaXQxMzA4LmMgYi90ZXN0cy91bml0L3VuaXQxMzA4LmMKaW5kZXggODBlNmM1Ny4uOTY4YmNmZiAxMDA2NDQKLS0tIGEvdGVzdHMvdW5pdC91bml0MTMwOC5jCisrKyBiL3Rlc3RzL3VuaXQvdW5pdDEzMDguYwpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS90ZXN0cy91bml0L3VuaXQxMzA5LmMgYi90ZXN0cy91bml0L3VuaXQxMzA5LmMKaW5kZXggMTMwNGJhMS4uM2NmNmVlZiAxMDA2NDQKLS0tIGEvdGVzdHMvdW5pdC91bml0MTMwOS5jCisrKyBiL3Rlc3RzL3VuaXQvdW5pdDEzMDkuYwpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS90ZXN0cy91bml0L3VuaXQxMzMwLmMgYi90ZXN0cy91bml0L3VuaXQxMzMwLmMKaW5kZXggMzFjYWYzMC4uZTY0MzFiYiAxMDA2NDQKLS0tIGEvdGVzdHMvdW5pdC91bml0MTMzMC5jCisrKyBiL3Rlc3RzL3VuaXQvdW5pdDEzMzAuYwpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmRpZmYgLS1naXQgYS90ZXN0cy91bml0L3VuaXQxMzk0LmMgYi90ZXN0cy91bml0L3VuaXQxMzk0LmMKaW5kZXggYTNlZjhmYS4uNjY3OTkxZCAxMDA2NDQKLS0tIGEvdGVzdHMvdW5pdC91bml0MTM5NC5jCisrKyBiL3Rlc3RzL3VuaXQvdW5pdDEzOTQuYwpAQCAtNSwxMSArNSwxMSBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAogICoKLSAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTMsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE2LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgogICoKICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi0gKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgorICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAgKgogICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCiAgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKQEAgLTg0LDEyICs4NCwxNCBAQAogICAgICAgICAgICAgICAiZm9yIC1FIHBhcmFtICclcydcbiIsIHBbMV0sIGNlcnRuYW1lLCBwWzBdKTsKICAgICAgICAgICBmYWlsKCJhc3NlcnRpb24gZmFpbHVyZSIpOwogICAgICAgICB9Ci0gICAgICB9IGVsc2UgeworICAgICAgfQorICAgICAgZWxzZSB7CiAgICAgICAgIHByaW50ZigiZXhwZWN0ZWQgY2VydG5hbWUgJyVzJyBidXQgZ290IE5VTEwgIgogICAgICAgICAgICAgImZvciAtRSBwYXJhbSAnJXMnXG4iLCBwWzFdLCBwWzBdKTsKICAgICAgICAgZmFpbCgiYXNzZXJ0aW9uIGZhaWx1cmUiKTsKICAgICAgIH0KLSAgICB9IGVsc2UgeworICAgIH0KKyAgICBlbHNlIHsKICAgICAgIGlmKGNlcnRuYW1lKSB7CiAgICAgICAgIHByaW50ZigiZXhwZWN0ZWQgY2VydG5hbWUgTlVMTCBidXQgZ290ICclcycgIgogICAgICAgICAgICAgImZvciAtRSBwYXJhbSAnJXMnXG4iLCBjZXJ0bmFtZSwgcFswXSk7CkBAIC0xMDMsMTIgKzEwNSwxNCBAQAogICAgICAgICAgICAgICAiZm9yIC1FIHBhcmFtICclcydcbiIsIHBbMl0sIHBhc3NwaHJhc2UsIHBbMF0pOwogICAgICAgICAgIGZhaWwoImFzc2VydGlvbiBmYWlsdXJlIik7CiAgICAgICAgIH0KLSAgICAgIH0gZWxzZSB7CisgICAgICB9CisgICAgICBlbHNlIHsKICAgICAgICAgcHJpbnRmKCJleHBlY3RlZCBwYXNzcGhyYXNlICclcycgYnV0IGdvdCBOVUxMICIKICAgICAgICAgICAgICJmb3IgLUUgcGFyYW0gJyVzJ1xuIiwgcFsyXSwgcFswXSk7CiAgICAgICAgIGZhaWwoImFzc2VydGlvbiBmYWlsdXJlIik7CiAgICAgICB9Ci0gICAgfSBlbHNlIHsKKyAgICB9CisgICAgZWxzZSB7CiAgICAgICBpZihwYXNzcGhyYXNlKSB7CiAgICAgICAgIHByaW50ZigiZXhwZWN0ZWQgcGFzc3BocmFzZSBOVUxMIGJ1dCBnb3QgJyVzJyAiCiAgICAgICAgICAgICAiZm9yIC1FIHBhcmFtICclcydcbiIsIHBhc3NwaHJhc2UsIHBbMF0pOwpkaWZmIC0tZ2l0IGEvdGVzdHMvdW5pdC91bml0MTM5NS5jIGIvdGVzdHMvdW5pdC91bml0MTM5NS5jCmluZGV4IDZmOWZjOGMuLjEzZjQ2NDEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL3VuaXQvdW5pdDEzOTUuYworKysgYi90ZXN0cy91bml0L3VuaXQxMzk1LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE0LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC02Miw2ICs2Miw5IEBACiAgICAgeyAiLy4uLy4uL21vbz9hbmRub3QvLi4veWF5IiwgIi9tb28/YW5kbm90Ly4uL3lheSJ9LAogICAgIHsgIi8xMjM/Zm9vPS8uLyZiYXI9Ly4uLyIsICIvMTIzP2Zvbz0vLi8mYmFyPS8uLi8ifSwKICAgICB7ICIvLi4vbW9vLy4uP3doYXQiLCAiLz93aGF0IiB9LAorICAgIHsgIi8iLCAiLyIgfSwKKyAgICB7ICIiLCAiIiB9LAorICAgIHsgIi8uLi4vIiwgIi8uLi4vIiB9LAogICB9OwogCiAgIGZvcihpPTA7IGkgPCBzaXplb2YocGFpcnMpL3NpemVvZihwYWlyc1swXSk7IGkrKykgewpkaWZmIC0tZ2l0IGEvdGVzdHMvdW5pdC91bml0MTM5Ni5jIGIvdGVzdHMvdW5pdC91bml0MTM5Ni5jCmluZGV4IGIxOGQ3YTguLjg0YTUxNjIgMTAwNjQ0Ci0tLSBhL3Rlc3RzL3VuaXQvdW5pdDEzOTYuYworKysgYi90ZXN0cy91bml0L3VuaXQxMzk2LmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDEzLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0zMCw3ICszMCw3IEBACiAKIHN0YXRpYyB2b2lkIHVuaXRfc3RvcCh2b2lkKQogewotICBpZiAoaG5kKQorICBpZihobmQpCiAgICAgY3VybF9lYXN5X2NsZWFudXAoaG5kKTsKIH0KIApkaWZmIC0tZ2l0IGEvdGVzdHMvdW5pdC91bml0MTM5Ny5jIGIvdGVzdHMvdW5pdC91bml0MTM5Ny5jCmluZGV4IGMwNWMxMTkuLjUzOTQzM2MgMTAwNjQ0Ci0tLSBhL3Rlc3RzL3VuaXQvdW5pdDEzOTcuYworKysgYi90ZXN0cy91bml0L3VuaXQxMzk3LmMKQEAgLTEsMyArMSwyNCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisgKgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAorICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcworICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKgorICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCisgKgorICogVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogI2luY2x1ZGUgImN1cmxjaGVjay5oIgogCiAjaW5jbHVkZSAiaG9zdGNoZWNrLmgiIC8qIGZyb20gdGhlIGxpYiBkaXIgKi8KQEAgLTcsNyArMjgsNyBAQAogICByZXR1cm4gQ1VSTEVfT0s7CiB9CiAKLXN0YXRpYyB2b2lkIHVuaXRfc3RvcCggdm9pZCApCitzdGF0aWMgdm9pZCB1bml0X3N0b3Aodm9pZCkKIHsKICAgLyogZG9uZSBiZWZvcmUgc2h1dHRpbmcgZG93biBhbmQgZXhpdGluZyAqLwogfQpAQCAtMTksMjkgKzQwLDM2IEBACiAKICAgLyogaGVyZSB5b3Ugc3RhcnQgZG9pbmcgdGhpbmdzIGFuZCBjaGVja2luZyB0aGF0IHRoZSByZXN1bHRzIGFyZSBnb29kICovCiAKLWZhaWxfdW5sZXNzKCBDdXJsX2NlcnRfaG9zdGNoZWNrKCJ3d3cuZXhhbXBsZS5jb20iLCAid3d3LmV4YW1wbGUuY29tIiksICJnb29kIDEiICk7Ci1mYWlsX3VubGVzcyggQ3VybF9jZXJ0X2hvc3RjaGVjaygiKi5leGFtcGxlLmNvbSIsICJ3d3cuZXhhbXBsZS5jb20iKSwgImdvb2QgMiIgKTsKLWZhaWxfdW5sZXNzKCBDdXJsX2NlcnRfaG9zdGNoZWNrKCJ4eHgqLmV4YW1wbGUuY29tIiwgInh4eHd3dy5leGFtcGxlLmNvbSIpLCAiZ29vZCAzIiApOwotZmFpbF91bmxlc3MoIEN1cmxfY2VydF9ob3N0Y2hlY2soImYqLmV4YW1wbGUuY29tIiwgImZvby5leGFtcGxlLmNvbSIpLCAiZ29vZCA0IiApOwotZmFpbF91bmxlc3MoIEN1cmxfY2VydF9ob3N0Y2hlY2soIjE5Mi4xNjguMC4wIiwgIjE5Mi4xNjguMC4wIiksICJnb29kIDUiICk7CitmYWlsX3VubGVzcyhDdXJsX2NlcnRfaG9zdGNoZWNrKCJ3d3cuZXhhbXBsZS5jb20iLCAid3d3LmV4YW1wbGUuY29tIiksCisgICAgICAgICAgICAiZ29vZCAxIik7CitmYWlsX3VubGVzcyhDdXJsX2NlcnRfaG9zdGNoZWNrKCIqLmV4YW1wbGUuY29tIiwgInd3dy5leGFtcGxlLmNvbSIpLAorICAgICAgICAgICAgImdvb2QgMiIpOworZmFpbF91bmxlc3MoQ3VybF9jZXJ0X2hvc3RjaGVjaygieHh4Ki5leGFtcGxlLmNvbSIsICJ4eHh3d3cuZXhhbXBsZS5jb20iKSwKKyAgICAgICAgICAgICJnb29kIDMiKTsKK2ZhaWxfdW5sZXNzKEN1cmxfY2VydF9ob3N0Y2hlY2soImYqLmV4YW1wbGUuY29tIiwgImZvby5leGFtcGxlLmNvbSIpLAorICAgICAgICAgICAgImdvb2QgNCIpOworZmFpbF91bmxlc3MoQ3VybF9jZXJ0X2hvc3RjaGVjaygiMTkyLjE2OC4wLjAiLCAiMTkyLjE2OC4wLjAiKSwKKyAgICAgICAgICAgICJnb29kIDUiKTsKIAotZmFpbF9pZiggQ3VybF9jZXJ0X2hvc3RjaGVjaygieHh4LmV4YW1wbGUuY29tIiwgInd3dy5leGFtcGxlLmNvbSIpLCAiYmFkIDEiICk7Ci1mYWlsX2lmKCBDdXJsX2NlcnRfaG9zdGNoZWNrKCIqIiwgInd3dy5leGFtcGxlLmNvbSIpLCAiYmFkIDIiICk7Ci1mYWlsX2lmKCBDdXJsX2NlcnRfaG9zdGNoZWNrKCIqLiouY29tIiwgInd3dy5leGFtcGxlLmNvbSIpLCAiYmFkIDMiICk7Ci1mYWlsX2lmKCBDdXJsX2NlcnRfaG9zdGNoZWNrKCIqLmV4YW1wbGUuY29tIiwgImJhYS5mb28uZXhhbXBsZS5jb20iKSwgImJhZCA0IiApOwotZmFpbF9pZiggQ3VybF9jZXJ0X2hvc3RjaGVjaygiZiouZXhhbXBsZS5jb20iLCAiYmFhLmV4YW1wbGUuY29tIiksICJiYWQgNSIgKTsKLWZhaWxfaWYoIEN1cmxfY2VydF9ob3N0Y2hlY2soIiouY29tIiwgImV4YW1wbGUuY29tIiksICJiYWQgNiIgKTsKLWZhaWxfaWYoIEN1cmxfY2VydF9ob3N0Y2hlY2soIipmYWlsLmNvbSIsICJleGFtcGxlLmNvbSIpLCAiYmFkIDciICk7Ci1mYWlsX2lmKCBDdXJsX2NlcnRfaG9zdGNoZWNrKCIqLmV4YW1wbGUuIiwgInd3dy5leGFtcGxlLiIpLCAiYmFkIDgiICk7Ci1mYWlsX2lmKCBDdXJsX2NlcnRfaG9zdGNoZWNrKCIqLmV4YW1wbGUuIiwgInd3dy5leGFtcGxlIiksICJiYWQgOSIgKTsKLWZhaWxfaWYoIEN1cmxfY2VydF9ob3N0Y2hlY2soIiIsICJ3d3ciKSwgImJhZCAxMCIgKTsKLWZhaWxfaWYoIEN1cmxfY2VydF9ob3N0Y2hlY2soIioiLCAid3d3IiksICJiYWQgMTEiICk7Ci1mYWlsX2lmKCBDdXJsX2NlcnRfaG9zdGNoZWNrKCIqLjE2OC4wLjAiLCAiMTkyLjE2OC4wLjAiKSwgImJhZCAxMiIgKTsKLWZhaWxfaWYoIEN1cmxfY2VydF9ob3N0Y2hlY2soInd3dy5leGFtcGxlLmNvbSIsICIxOTIuMTY4LjAuMCIpLCAiYmFkIDEzIiApOworZmFpbF9pZihDdXJsX2NlcnRfaG9zdGNoZWNrKCJ4eHguZXhhbXBsZS5jb20iLCAid3d3LmV4YW1wbGUuY29tIiksICJiYWQgMSIpOworZmFpbF9pZihDdXJsX2NlcnRfaG9zdGNoZWNrKCIqIiwgInd3dy5leGFtcGxlLmNvbSIpLCAiYmFkIDIiKTsKK2ZhaWxfaWYoQ3VybF9jZXJ0X2hvc3RjaGVjaygiKi4qLmNvbSIsICJ3d3cuZXhhbXBsZS5jb20iKSwgImJhZCAzIik7CitmYWlsX2lmKEN1cmxfY2VydF9ob3N0Y2hlY2soIiouZXhhbXBsZS5jb20iLCAiYmFhLmZvby5leGFtcGxlLmNvbSIpLCAiYmFkIDQiKTsKK2ZhaWxfaWYoQ3VybF9jZXJ0X2hvc3RjaGVjaygiZiouZXhhbXBsZS5jb20iLCAiYmFhLmV4YW1wbGUuY29tIiksICJiYWQgNSIpOworZmFpbF9pZihDdXJsX2NlcnRfaG9zdGNoZWNrKCIqLmNvbSIsICJleGFtcGxlLmNvbSIpLCAiYmFkIDYiKTsKK2ZhaWxfaWYoQ3VybF9jZXJ0X2hvc3RjaGVjaygiKmZhaWwuY29tIiwgImV4YW1wbGUuY29tIiksICJiYWQgNyIpOworZmFpbF9pZihDdXJsX2NlcnRfaG9zdGNoZWNrKCIqLmV4YW1wbGUuIiwgInd3dy5leGFtcGxlLiIpLCAiYmFkIDgiKTsKK2ZhaWxfaWYoQ3VybF9jZXJ0X2hvc3RjaGVjaygiKi5leGFtcGxlLiIsICJ3d3cuZXhhbXBsZSIpLCAiYmFkIDkiKTsKK2ZhaWxfaWYoQ3VybF9jZXJ0X2hvc3RjaGVjaygiIiwgInd3dyIpLCAiYmFkIDEwIik7CitmYWlsX2lmKEN1cmxfY2VydF9ob3N0Y2hlY2soIioiLCAid3d3IiksICJiYWQgMTEiKTsKK2ZhaWxfaWYoQ3VybF9jZXJ0X2hvc3RjaGVjaygiKi4xNjguMC4wIiwgIjE5Mi4xNjguMC4wIiksICJiYWQgMTIiKTsKK2ZhaWxfaWYoQ3VybF9jZXJ0X2hvc3RjaGVjaygid3d3LmV4YW1wbGUuY29tIiwgIjE5Mi4xNjguMC4wIiksICJiYWQgMTMiKTsKIAogI2lmZGVmIEVOQUJMRV9JUFY2Ci1mYWlsX2lmKCBDdXJsX2NlcnRfaG9zdGNoZWNrKCIqOjozMjg1OmE5ZmY6ZmU0NjpiNjE5IiwgImZlODA6OjMyODU6YTlmZjpmZTQ2OmI2MTkiKSwgImJhZCAxNCIgKTsKLWZhaWxfdW5sZXNzKCBDdXJsX2NlcnRfaG9zdGNoZWNrKCJmZTgwOjozMjg1OmE5ZmY6ZmU0NjpiNjE5IiwgImZlODA6OjMyODU6YTlmZjpmZTQ2OmI2MTkiKSwgImdvb2QgNiIgKTsKK2ZhaWxfaWYoQ3VybF9jZXJ0X2hvc3RjaGVjaygiKjo6MzI4NTphOWZmOmZlNDY6YjYxOSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZlODA6OjMyODU6YTlmZjpmZTQ2OmI2MTkiKSwgImJhZCAxNCIpOworZmFpbF91bmxlc3MoQ3VybF9jZXJ0X2hvc3RjaGVjaygiZmU4MDo6MzI4NTphOWZmOmZlNDY6YjYxOSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmZTgwOjozMjg1OmE5ZmY6ZmU0NjpiNjE5IiksICJnb29kIDYiKTsKICNlbmRpZgogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL3Rlc3RzL3VuaXQvdW5pdDEzOTguYyBiL3Rlc3RzL3VuaXQvdW5pdDEzOTguYwppbmRleCBlNTc5YTYyLi45NDkxYzQ2IDEwMDY0NAotLS0gYS90ZXN0cy91bml0L3VuaXQxMzk4LmMKKysrIGIvdGVzdHMvdW5pdC91bml0MTM5OC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNCwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMjMsOCArMjMsOCBAQAogCiAjaW5jbHVkZSAiY3VybC9tcHJpbnRmLmgiCiAKLXN0YXRpYyBDVVJMY29kZSB1bml0X3NldHVwKCB2b2lkICkge3JldHVybiBDVVJMRV9PSzt9Ci1zdGF0aWMgdm9pZCB1bml0X3N0b3AoIHZvaWQgKSB7fQorc3RhdGljIENVUkxjb2RlIHVuaXRfc2V0dXAodm9pZCkge3JldHVybiBDVVJMRV9PSzt9CitzdGF0aWMgdm9pZCB1bml0X3N0b3Aodm9pZCkge30KIAogVU5JVFRFU1RfU1RBUlQKIApAQCAtMzgsNTQgKzM4LDU0IEBACiAKIC8qIHdpdGhvdXQgYSB0cmFpbGluZyB6ZXJvICovCiByYyA9IGN1cmxfbXNucHJpbnRmKG91dHB1dCwgNCwgIiUuKnMiLCB3aWR0aCwgYnVmKTsKLWZhaWxfdW5sZXNzKCByYyA9PSAzICwgInJldHVybiBjb2RlIHNob3VsZCBiZSAzIiApOworZmFpbF91bmxlc3MocmMgPT0gMywgInJldHVybiBjb2RlIHNob3VsZCBiZSAzIik7CiBmYWlsX3VubGVzcyghc3RyY21wKG91dHB1dCwgImJ1ZyIpLCAid3Jvbmcgb3V0cHV0Iik7CiAKIC8qIHdpdGggYSB0cmFpbGluZyB6ZXJvICovCiByYyA9IGN1cmxfbXNucHJpbnRmKG91dHB1dCwgNCwgIiUuKnMiLCB3aWR0aCwgc3RyKTsKLWZhaWxfdW5sZXNzKCByYyA9PSAzICwgInJldHVybiBjb2RlIHNob3VsZCBiZSAzIiApOworZmFpbF91bmxlc3MocmMgPT0gMywgInJldHVybiBjb2RlIHNob3VsZCBiZSAzIik7CiBmYWlsX3VubGVzcyghc3RyY21wKG91dHB1dCwgImJ1ZyIpLCAid3Jvbmcgb3V0cHV0Iik7CiAKIHdpZHRoID0gMjsKIC8qIG9uZSBieXRlIGxlc3MgKi8KIHJjID0gY3VybF9tc25wcmludGYob3V0cHV0LCA0LCAiJS4qcyIsIHdpZHRoLCBidWYpOwotZmFpbF91bmxlc3MoIHJjID09IDIgLCAicmV0dXJuIGNvZGUgc2hvdWxkIGJlIDIiICk7CitmYWlsX3VubGVzcyhyYyA9PSAyLCAicmV0dXJuIGNvZGUgc2hvdWxkIGJlIDIiKTsKIGZhaWxfdW5sZXNzKCFzdHJjbXAob3V0cHV0LCAiYnUiKSwgIndyb25nIG91dHB1dCIpOwogCiAvKiBzdHJpbmcgd2l0aCBsYXJnZXIgcHJlY2lzaW9uICovCiByYyA9IGN1cmxfbXNucHJpbnRmKG91dHB1dCwgOCwgIiUuOHMiLCBzdHIpOwotZmFpbF91bmxlc3MoIHJjID09IDMgLCAicmV0dXJuIGNvZGUgc2hvdWxkIGJlIDMiICk7CitmYWlsX3VubGVzcyhyYyA9PSAzLCAicmV0dXJuIGNvZGUgc2hvdWxkIGJlIDMiKTsKIGZhaWxfdW5sZXNzKCFzdHJjbXAob3V0cHV0LCAiYnVnIiksICJ3cm9uZyBvdXRwdXQiKTsKIAogLyogbG9uZ2VyIHN0cmluZyB3aXRoIHByZWNpc2lvbiAqLwogcmMgPSBjdXJsX21zbnByaW50ZihvdXRwdXQsIDgsICIlLjNzIiwgIjAxMjM0NTY3ODkiKTsKLWZhaWxfdW5sZXNzKCByYyA9PSAzICwgInJldHVybiBjb2RlIHNob3VsZCBiZSAzIiApOworZmFpbF91bmxlc3MocmMgPT0gMywgInJldHVybiBjb2RlIHNob3VsZCBiZSAzIik7CiBmYWlsX3VubGVzcyghc3RyY21wKG91dHB1dCwgIjAxMiIpLCAid3Jvbmcgb3V0cHV0Iik7CiAKIC8qIG5lZ2F0aXZlIHdpZHRoICovCiByYyA9IGN1cmxfbXNucHJpbnRmKG91dHB1dCwgOCwgIiUtOHMiLCBzdHIpOwotZmFpbF91bmxlc3MoIHJjID09IDggLCAicmV0dXJuIGNvZGUgc2hvdWxkIGJlIDgiICk7CitmYWlsX3VubGVzcyhyYyA9PSA4LCAicmV0dXJuIGNvZGUgc2hvdWxkIGJlIDgiKTsKIGZhaWxfdW5sZXNzKCFzdHJjbXAob3V0cHV0LCAiYnVnICAgICIpLCAid3Jvbmcgb3V0cHV0Iik7CiAKIC8qIGxhcmdlciB3aWR0aCB0aGF0IHN0cmluZyBsZW5ndGggKi8KIHJjID0gY3VybF9tc25wcmludGYob3V0cHV0LCA4LCAiJThzIiwgc3RyKTsKLWZhaWxfdW5sZXNzKCByYyA9PSA4ICwgInJldHVybiBjb2RlIHNob3VsZCBiZSA4IiApOworZmFpbF91bmxlc3MocmMgPT0gOCwgInJldHVybiBjb2RlIHNob3VsZCBiZSA4Iik7CiBmYWlsX3VubGVzcyghc3RyY21wKG91dHB1dCwgIiAgICAgYnUiKSwgIndyb25nIG91dHB1dCIpOwogCiAvKiBvdXRwdXQgYSBudW1iZXIgaW4gYSBsaW1pdGVkIG91dHB1dCAqLwogcmMgPSBjdXJsX21zbnByaW50ZihvdXRwdXQsIDQsICIlZCIsIDEwMjQwKTsKIC8qIFRPRE86IHRoaXMgc2hvdWxkIHJldHVybiA1IHRvIGJlIFBPU0lYL3NucHJpbnRmIGNvbXBsaWFudCEgKi8KLWZhaWxfdW5sZXNzKCByYyA9PSA0ICwgInJldHVybiBjb2RlIHNob3VsZCBiZSA0IiApOworZmFpbF91bmxlc3MocmMgPT0gNCwgInJldHVybiBjb2RlIHNob3VsZCBiZSA0Iik7CiBmYWlsX3VubGVzcyghc3RyY21wKG91dHB1dCwgIjEwMiIpLCAid3Jvbmcgb3V0cHV0Iik7CiAKIC8qIHBhZGRlZCBzdHJpbmdzICovCiByYyA9IGN1cmxfbXNucHJpbnRmKG91dHB1dCwgMTYsICIlOHMlOHMiLCBzdHIsIHN0cik7Ci1mYWlsX3VubGVzcyggcmMgPT0gMTYgLCAicmV0dXJuIGNvZGUgc2hvdWxkIGJlIDE2IiApOworZmFpbF91bmxlc3MocmMgPT0gMTYsICJyZXR1cm4gY29kZSBzaG91bGQgYmUgMTYiKTsKIGZhaWxfdW5sZXNzKCFzdHJjbXAob3V0cHV0LCAiICAgICBidWcgICAgIGJ1IiksICJ3cm9uZyBvdXRwdXQiKTsKIAogLyogcGFkZGVkIG51bWJlcnMgKi8KIHJjID0gY3VybF9tc25wcmludGYob3V0cHV0LCAxNiwgIiU4ZCU4ZCIsIDEyMzQsIDU2NzgpOwotZmFpbF91bmxlc3MoIHJjID09IDE2ICwgInJldHVybiBjb2RlIHNob3VsZCBiZSAxNiIgKTsKK2ZhaWxfdW5sZXNzKHJjID09IDE2LCAicmV0dXJuIGNvZGUgc2hvdWxkIGJlIDE2Iik7CiBmYWlsX3VubGVzcyghc3RyY21wKG91dHB1dCwgIiAgICAxMjM0ICAgIDU2NyIpLCAid3Jvbmcgb3V0cHV0Iik7CiAKIFVOSVRURVNUX1NUT1AKZGlmZiAtLWdpdCBhL3Rlc3RzL3VuaXQvdW5pdDE2MDAuYyBiL3Rlc3RzL3VuaXQvdW5pdDE2MDAuYwppbmRleCA2ODAzY2YzLi5mMGY5Y2MxIDEwMDY0NAotLS0gYS90ZXN0cy91bml0L3VuaXQxNjAwLmMKKysrIGIvdGVzdHMvdW5pdC91bml0MTYwMC5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzksNyArMzksOCBAQAogCiBVTklUVEVTVF9TVEFSVAogCi0jaWYgZGVmaW5lZChVU0VfTlRMTSkgJiYgKCFkZWZpbmVkKFVTRV9XSU5ET1dTX1NTUEkpIHx8IGRlZmluZWQoVVNFX1dJTjMyX0NSWVBUTykpCisjaWYgZGVmaW5lZChVU0VfTlRMTSkgJiYgKCFkZWZpbmVkKFVTRV9XSU5ET1dTX1NTUEkpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lZChVU0VfV0lOMzJfQ1JZUFRPKSkKICAgdW5zaWduZWQgY2hhciBvdXRwdXRbMjFdOwogICB1bnNpZ25lZCBjaGFyICp0ZXN0cCA9IG91dHB1dDsKICAgQ3VybF9udGxtX2NvcmVfbWtfbnRfaGFzaChlYXN5LCAiMSIsIG91dHB1dCk7CkBAIC01NCw2ICs1NSw3IEBACiAgICAgICAgICAgICAgICJceDM5XHhhZlx4ODdceGE2XHg3NVx4MGFceDdhXHgwMFx4YmFceGEwIgogICAgICAgICAgICAgICAiXHhkM1x4NGZceDA0XHg5ZVx4YzFceGQwXHgwMFx4MDBceDAwXHgwMFx4MDAiLCAyMSk7CiAKKy8qICFjaGVja3NyYyEgZGlzYWJsZSBMT05HTElORSAyICovCiAgIEN1cmxfbnRsbV9jb3JlX21rX250X2hhc2goZWFzeSwgIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIsIG91dHB1dCk7CiAKICAgdmVyaWZ5X21lbW9yeSh0ZXN0cCwKZGlmZiAtLWdpdCBhL3Rlc3RzL3VuaXQvdW5pdDE2MDEuYyBiL3Rlc3RzL3VuaXQvdW5pdDE2MDEuYwppbmRleCAxN2FiYTA1Li5hNjEyMGUxIDEwMDY0NAotLS0gYS90ZXN0cy91bml0L3VuaXQxNjAxLmMKKysrIGIvdGVzdHMvdW5pdC91bml0MTYwMS5jCkBAIC01LDExICs1LDExIEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CiAgKgotICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNSwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCiAgKgogICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKICAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKiBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KICAqCiAgKiBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwKICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpAQCAtMzUsMTAgKzM1LDEyIEBACiAKIFVOSVRURVNUX1NUQVJUCiAKKyNpZm5kZWYgQ1VSTF9ESVNBQkxFX0NSWVBUT19BVVRICiAgIHVuc2lnbmVkIGNoYXIgb3V0cHV0WzE2XTsKICAgdW5zaWduZWQgY2hhciAqdGVzdHAgPSBvdXRwdXQ7CiAgIEN1cmxfbWQ1aXQob3V0cHV0LCAoY29uc3QgdW5zaWduZWQgY2hhciAqKSIxIik7CiAKKy8qICFjaGVja3NyYyEgZGlzYWJsZSBMT05HTElORSAyICovCiAgIHZlcmlmeV9tZW1vcnkodGVzdHAsCiAgICAgICAgICAgICAgICAgIlx4YzRceGNhXHg0Mlx4MzhceGEwXHhiOVx4MjNceDgyXHgwZFx4Y2NceDUwXHg5YVx4NmZceDc1XHg4NFx4OWIiLCAxNik7CiAKQEAgLTQ2LDYgKzQ4LDcgQEAKIAogICB2ZXJpZnlfbWVtb3J5KHRlc3RwLAogICAgICAgICAgICAgICAgICJceDg4XHg2N1x4MGJceDZkXHg1ZFx4NzRceDJmXHhhZFx4YTVceGNkXHhmOVx4YjZceDgyXHg4N1x4NWZceDIyIiwgMTYpOworI2VuZGlmCiAKIAogVU5JVFRFU1RfU1RPUApkaWZmIC0tZ2l0IGEvdGVzdHMvdW5pdC91bml0MTYwMi5jIGIvdGVzdHMvdW5pdC91bml0MTYwMi5jCmluZGV4IDNiMjU1NTYuLmM2N2MwYTUgMTAwNjQ0Ci0tLSBhL3Rlc3RzL3VuaXQvdW5pdDE2MDIuYworKysgYi90ZXN0cy91bml0L3VuaXQxNjAyLmMKQEAgLTUsMTEgKzUsMTEgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKICAqCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDExLCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgorICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KICAqCiAgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAogICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLgogICoKICAqIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCkBAIC0yOCwxNSArMjgsNyBAQAogCiAjaW5jbHVkZSAibWVtZGVidWcuaCIgLyogTEFTVCBpbmNsdWRlIGZpbGUgKi8KIAotIHN0YXRpYyBDVVJMY29kZSB1bml0X3NldHVwKCB2b2lkICkKLXsKLSAgcmV0dXJuIENVUkxFX09LOwotfQotCi1zdGF0aWMgdm9pZCB1bml0X3N0b3AoIHZvaWQgKQotewotCi19CitzdGF0aWMgc3RydWN0IGN1cmxfaGFzaCBoYXNoX3N0YXRpYzsKIAogc3RhdGljIHZvaWQgbXlkdG9yKHZvaWQgKnApCiB7CkBAIC00NCwzNyArMzYsNDMgQEAKICAgZnJlZShwdHIpOwogfQogCitzdGF0aWMgQ1VSTGNvZGUgdW5pdF9zZXR1cCh2b2lkKQoreworICByZXR1cm4gQ3VybF9oYXNoX2luaXQoJmhhc2hfc3RhdGljLCA3LCBDdXJsX2hhc2hfc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgQ3VybF9zdHJfa2V5X2NvbXBhcmUsIG15ZHRvcik7Cit9CisKK3N0YXRpYyB2b2lkIHVuaXRfc3RvcCh2b2lkKQoreworICBDdXJsX2hhc2hfZGVzdHJveSgmaGFzaF9zdGF0aWMpOworfQorCiBVTklUVEVTVF9TVEFSVAogICBpbnQgKnZhbHVlOwogICBpbnQgKnZhbHVlMjsKKyAgaW50ICpub2RlcDsKICAgc2l6ZV90IGtsZW4gPSBzaXplb2YoaW50KTsKIAotICBzdHJ1Y3QgY3VybF9oYXNoIGhhc2hfc3RhdGljOwogICBpbnQga2V5ID0gMjA7CiAgIGludCBrZXkyID0gMjU7Ci0gIGludCByYyA9IDA7CiAKLSAgcmMgPSBDdXJsX2hhc2hfaW5pdCgmaGFzaF9zdGF0aWMsIDcsIEN1cmxfaGFzaF9zdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICBDdXJsX3N0cl9rZXlfY29tcGFyZSwgbXlkdG9yKTsKLQotICBpZihyYykKLSAgewotICAgIGZhaWwoIkN1cmxfaGFzaF9pbml0IGZhaWxlZCB0byBpbml0aWFsaXplIHN0YXRpYyBoYXNoISIpOwotICAgIGdvdG8gdW5pdF90ZXN0X2Fib3J0OwotICB9CiAKICAgdmFsdWUgPSBtYWxsb2Moc2l6ZW9mKGludCkpOwotICB2YWx1ZTIgPSBtYWxsb2Moc2l6ZW9mKGludCkpOwotCisgIGFib3J0X3VubGVzcyh2YWx1ZSAhPSBOVUxMLCAiT3V0IG9mIG1lbW9yeSIpOwogICAqdmFsdWUgPSAxOTk7Ci0gICp2YWx1ZTIgPSAyMDQ7Ci0gIEN1cmxfaGFzaF9hZGQoJmhhc2hfc3RhdGljLCAma2V5LCBrbGVuLCB2YWx1ZSk7Ci0gIAorICBub2RlcCA9IEN1cmxfaGFzaF9hZGQoJmhhc2hfc3RhdGljLCAma2V5LCBrbGVuLCB2YWx1ZSk7CisgIGlmKCFub2RlcCkKKyAgICBmcmVlKHZhbHVlKTsKKyAgYWJvcnRfdW5sZXNzKG5vZGVwLCAiaW5zZXJ0aW9uIGludG8gaGFzaCBmYWlsZWQiKTsKICAgQ3VybF9oYXNoX2NsZWFuKCZoYXNoX3N0YXRpYyk7CiAKICAgLyogQXR0ZW1wdCB0byBhZGQgYW5vdGhlciBrZXkvdmFsdWUgcGFpciAqLwotICBDdXJsX2hhc2hfYWRkKCZoYXNoX3N0YXRpYywgJmtleTIsIGtsZW4sIHZhbHVlMik7CisgIHZhbHVlMiA9IG1hbGxvYyhzaXplb2YoaW50KSk7CisgIGFib3J0X3VubGVzcyh2YWx1ZTIgIT0gTlVMTCwgIk91dCBvZiBtZW1vcnkiKTsKKyAgKnZhbHVlMiA9IDIwNDsKKyAgbm9kZXAgPSBDdXJsX2hhc2hfYWRkKCZoYXNoX3N0YXRpYywgJmtleTIsIGtsZW4sIHZhbHVlMik7CisgIGlmKCFub2RlcCkKKyAgICBmcmVlKHZhbHVlMik7CisgIGFib3J0X3VubGVzcyhub2RlcCwgImluc2VydGlvbiBpbnRvIGhhc2ggZmFpbGVkIik7CiAKLSAgQ3VybF9oYXNoX2Rlc3Ryb3koJmhhc2hfc3RhdGljKTsKLSAgCiBVTklUVEVTVF9TVE9QCmRpZmYgLS1naXQgYS90ZXN0cy91bml0L3VuaXQxNjAzLmMgYi90ZXN0cy91bml0L3VuaXQxNjAzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzIwYjIwYgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL3VuaXQvdW5pdDE2MDMuYwpAQCAtMCwwICsxLDE1MCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisgKgorICogQ29weXJpZ2h0IChDKSAyMDE1IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBDT1BZSU5HLCB3aGljaAorICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcworICogYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKgorICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCisgKgorICogVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworI2luY2x1ZGUgImN1cmxjaGVjay5oIgorCisjZGVmaW5lIEVOQUJMRV9DVVJMWF9QUklOVEYKKyNpbmNsdWRlICJjdXJseC5oIgorCisjaW5jbHVkZSAiaGFzaC5oIgorCisjaW5jbHVkZSAibWVtZGVidWcuaCIgLyogTEFTVCBpbmNsdWRlIGZpbGUgKi8KKworc3RhdGljIHN0cnVjdCBjdXJsX2hhc2ggaGFzaF9zdGF0aWM7CitzdGF0aWMgY29uc3QgaW50IHNsb3RzID0gMzsKKworc3RhdGljIHZvaWQgbXlkdG9yKHZvaWQgKnApCit7CisgIC8qIERhdGEgYXJlIHN0YXRpY2FsbHkgYWxsb2NhdGVkICovCisgKHZvaWQpcDsgLyogdW51c2VkICovCit9CisKK3N0YXRpYyBDVVJMY29kZSB1bml0X3NldHVwKHZvaWQpCit7CisgIHJldHVybiBDdXJsX2hhc2hfaW5pdCgmaGFzaF9zdGF0aWMsIHNsb3RzLCBDdXJsX2hhc2hfc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgQ3VybF9zdHJfa2V5X2NvbXBhcmUsIG15ZHRvcik7Cit9CisKK3N0YXRpYyB2b2lkIHVuaXRfc3RvcCh2b2lkKQoreworICBDdXJsX2hhc2hfZGVzdHJveSgmaGFzaF9zdGF0aWMpOworfQorCitVTklUVEVTVF9TVEFSVAorICBjaGFyIGtleTFbXSA9ICJrZXkxIjsKKyAgY2hhciBrZXkyW10gPSAia2V5MmIiOworICBjaGFyIGtleTNbXSA9ICJrZXkzIjsKKyAgY2hhciBrZXk0W10gPSAia2V5NCI7CisgIGNoYXIgbm90YWtleVtdID0gIm5vdGFrZXkiOworICBjaGFyICpub2RlcDsKKyAgaW50IHJjOworCisgIC8qIEVuc3VyZSB0aGUga2V5IGhhc2hlcyBhcmUgYXMgZXhwZWN0ZWQgaW4gb3JkZXIgdG8gdGVzdCBib3RoIGhhc2gKKyAgICAgY29sbGlzaW9ucyBhbmQgYSBmdWxsIHRhYmxlLiBVbmZvcnR1bmF0ZWx5LCB0aGUgaGFzaGVzIGNhbiB2YXJ5CisgICAgIGJldHdlZW4gYXJjaGl0ZWN0dXJlcy4gKi8KKyAgaWYoQ3VybF9oYXNoX3N0cihrZXkxLCBzdHJsZW4oa2V5MSksIHNsb3RzKSAhPSAxIHx8CisgICAgIEN1cmxfaGFzaF9zdHIoa2V5Miwgc3RybGVuKGtleTIpLCBzbG90cykgIT0gMCB8fAorICAgICBDdXJsX2hhc2hfc3RyKGtleTMsIHN0cmxlbihrZXkzKSwgc2xvdHMpICE9IDIgfHwKKyAgICAgQ3VybF9oYXNoX3N0cihrZXk0LCBzdHJsZW4oa2V5NCksIHNsb3RzKSAhPSAxKQorICAgIGZwcmludGYoc3RkZXJyLCAiV2FybmluZzogaGFzaGVzIGFyZSBub3QgY29tcHV0ZWQgYXMgZXhwZWN0ZWQgb24gdGhpcyAiCisgICAgICAgICAgICAiYXJjaGl0ZWN0dXJlOyB0ZXN0IGNvdmVyYWdlIHdpbGwgYmUgbGVzcyBjb21wcmVoZW5zaXZlXG4iKTsKKworICBub2RlcCA9IEN1cmxfaGFzaF9hZGQoJmhhc2hfc3RhdGljLCAma2V5MSwgc3RybGVuKGtleTEpLCAma2V5MSk7CisgIGZhaWxfdW5sZXNzKG5vZGVwLCAiaW5zZXJ0aW9uIGludG8gaGFzaCBmYWlsZWQiKTsKKyAgbm9kZXAgPSBDdXJsX2hhc2hfcGljaygmaGFzaF9zdGF0aWMsICZrZXkxLCBzdHJsZW4oa2V5MSkpOworICBmYWlsX3VubGVzcyhub2RlcCA9PSBrZXkxLCAiaGFzaCByZXRyaWV2YWwgZmFpbGVkIik7CisKKyAgbm9kZXAgPSBDdXJsX2hhc2hfYWRkKCZoYXNoX3N0YXRpYywgJmtleTIsIHN0cmxlbihrZXkyKSwgJmtleTIpOworICBmYWlsX3VubGVzcyhub2RlcCwgImluc2VydGlvbiBpbnRvIGhhc2ggZmFpbGVkIik7CisgIG5vZGVwID0gQ3VybF9oYXNoX3BpY2soJmhhc2hfc3RhdGljLCAma2V5Miwgc3RybGVuKGtleTIpKTsKKyAgZmFpbF91bmxlc3Mobm9kZXAgPT0ga2V5MiwgImhhc2ggcmV0cmlldmFsIGZhaWxlZCIpOworCisgIG5vZGVwID0gQ3VybF9oYXNoX2FkZCgmaGFzaF9zdGF0aWMsICZrZXkzLCBzdHJsZW4oa2V5MyksICZrZXkzKTsKKyAgZmFpbF91bmxlc3Mobm9kZXAsICJpbnNlcnRpb24gaW50byBoYXNoIGZhaWxlZCIpOworICBub2RlcCA9IEN1cmxfaGFzaF9waWNrKCZoYXNoX3N0YXRpYywgJmtleTMsIHN0cmxlbihrZXkzKSk7CisgIGZhaWxfdW5sZXNzKG5vZGVwID09IGtleTMsICJoYXNoIHJldHJpZXZhbCBmYWlsZWQiKTsKKworICAvKiBUaGUgZm91cnRoIGVsZW1lbnQgZXhjZWVkcyB0aGUgbnVtYmVyIG9mIHNsb3RzICYgY29sbGlkZXMgKi8KKyAgbm9kZXAgPSBDdXJsX2hhc2hfYWRkKCZoYXNoX3N0YXRpYywgJmtleTQsIHN0cmxlbihrZXk0KSwgJmtleTQpOworICBmYWlsX3VubGVzcyhub2RlcCwgImluc2VydGlvbiBpbnRvIGhhc2ggZmFpbGVkIik7CisgIG5vZGVwID0gQ3VybF9oYXNoX3BpY2soJmhhc2hfc3RhdGljLCAma2V5NCwgc3RybGVuKGtleTQpKTsKKyAgZmFpbF91bmxlc3Mobm9kZXAgPT0ga2V5NCwgImhhc2ggcmV0cmlldmFsIGZhaWxlZCIpOworCisgIC8qIE1ha2Ugc3VyZSBhbGwgZWxlbWVudHMgYXJlIHN0aWxsIGFjY2Vzc2libGUgKi8KKyAgbm9kZXAgPSBDdXJsX2hhc2hfcGljaygmaGFzaF9zdGF0aWMsICZrZXkxLCBzdHJsZW4oa2V5MSkpOworICBmYWlsX3VubGVzcyhub2RlcCA9PSBrZXkxLCAiaGFzaCByZXRyaWV2YWwgZmFpbGVkIik7CisgIG5vZGVwID0gQ3VybF9oYXNoX3BpY2soJmhhc2hfc3RhdGljLCAma2V5Miwgc3RybGVuKGtleTIpKTsKKyAgZmFpbF91bmxlc3Mobm9kZXAgPT0ga2V5MiwgImhhc2ggcmV0cmlldmFsIGZhaWxlZCIpOworICBub2RlcCA9IEN1cmxfaGFzaF9waWNrKCZoYXNoX3N0YXRpYywgJmtleTMsIHN0cmxlbihrZXkzKSk7CisgIGZhaWxfdW5sZXNzKG5vZGVwID09IGtleTMsICJoYXNoIHJldHJpZXZhbCBmYWlsZWQiKTsKKyAgbm9kZXAgPSBDdXJsX2hhc2hfcGljaygmaGFzaF9zdGF0aWMsICZrZXk0LCBzdHJsZW4oa2V5NCkpOworICBmYWlsX3VubGVzcyhub2RlcCA9PSBrZXk0LCAiaGFzaCByZXRyaWV2YWwgZmFpbGVkIik7CisKKyAgLyogRGVsZXRlIHRoZSBzZWNvbmQgb2YgdHdvIGVudHJpZXMgaW4gYSBidWNrZXQgKi8KKyAgcmMgPSBDdXJsX2hhc2hfZGVsZXRlKCZoYXNoX3N0YXRpYywgJmtleTQsIHN0cmxlbihrZXk0KSk7CisgIGZhaWxfdW5sZXNzKHJjID09IDAsICJoYXNoIGRlbGV0ZSBmYWlsZWQiKTsKKyAgbm9kZXAgPSBDdXJsX2hhc2hfcGljaygmaGFzaF9zdGF0aWMsICZrZXkxLCBzdHJsZW4oa2V5MSkpOworICBmYWlsX3VubGVzcyhub2RlcCA9PSBrZXkxLCAiaGFzaCByZXRyaWV2YWwgZmFpbGVkIik7CisgIG5vZGVwID0gQ3VybF9oYXNoX3BpY2soJmhhc2hfc3RhdGljLCAma2V5NCwgc3RybGVuKGtleTQpKTsKKyAgZmFpbF91bmxlc3MoIW5vZGVwLCAiaGFzaCByZXRyaWV2YWwgc2hvdWxkIGhhdmUgZmFpbGVkIik7CisKKyAgLyogSW5zZXJ0IHRoYXQgZGVsZXRlZCBub2RlIGFnYWluICovCisgIG5vZGVwID0gQ3VybF9oYXNoX2FkZCgmaGFzaF9zdGF0aWMsICZrZXk0LCBzdHJsZW4oa2V5NCksICZrZXk0KTsKKyAgZmFpbF91bmxlc3Mobm9kZXAsICJpbnNlcnRpb24gaW50byBoYXNoIGZhaWxlZCIpOworICBub2RlcCA9IEN1cmxfaGFzaF9waWNrKCZoYXNoX3N0YXRpYywgJmtleTQsIHN0cmxlbihrZXk0KSk7CisgIGZhaWxfdW5sZXNzKG5vZGVwID09IGtleTQsICJoYXNoIHJldHJpZXZhbCBmYWlsZWQiKTsKKworICAvKiBEZWxldGUgdGhlIGZpcnN0IG9mIHR3byBlbnRyaWVzIGluIGEgYnVja2V0ICovCisgIHJjID0gQ3VybF9oYXNoX2RlbGV0ZSgmaGFzaF9zdGF0aWMsICZrZXkxLCBzdHJsZW4oa2V5MSkpOworICBmYWlsX3VubGVzcyhyYyA9PSAwLCAiaGFzaCBkZWxldGUgZmFpbGVkIik7CisgIG5vZGVwID0gQ3VybF9oYXNoX3BpY2soJmhhc2hfc3RhdGljLCAma2V5MSwgc3RybGVuKGtleTEpKTsKKyAgZmFpbF91bmxlc3MoIW5vZGVwLCAiaGFzaCByZXRyaWV2YWwgc2hvdWxkIGhhdmUgZmFpbGVkIik7CisgIG5vZGVwID0gQ3VybF9oYXNoX3BpY2soJmhhc2hfc3RhdGljLCAma2V5NCwgc3RybGVuKGtleTQpKTsKKyAgZmFpbF91bmxlc3Mobm9kZXAgPT0ga2V5NCwgImhhc2ggcmV0cmlldmFsIGZhaWxlZCIpOworCisgIC8qIERlbGV0ZSB0aGUgcmVtYWluaW5nIG9uZSBvZiB0d28gZW50cmllcyBpbiBhIGJ1Y2tldCAqLworICByYyA9IEN1cmxfaGFzaF9kZWxldGUoJmhhc2hfc3RhdGljLCAma2V5NCwgc3RybGVuKGtleTQpKTsKKyAgZmFpbF91bmxlc3MocmMgPT0gMCwgImhhc2ggZGVsZXRlIGZhaWxlZCIpOworICBub2RlcCA9IEN1cmxfaGFzaF9waWNrKCZoYXNoX3N0YXRpYywgJmtleTEsIHN0cmxlbihrZXkxKSk7CisgIGZhaWxfdW5sZXNzKCFub2RlcCwgImhhc2ggcmV0cmlldmFsIHNob3VsZCBoYXZlIGZhaWxlZCIpOworICBub2RlcCA9IEN1cmxfaGFzaF9waWNrKCZoYXNoX3N0YXRpYywgJmtleTQsIHN0cmxlbihrZXk0KSk7CisgIGZhaWxfdW5sZXNzKCFub2RlcCwgImhhc2ggcmV0cmlldmFsIHNob3VsZCBoYXZlIGZhaWxlZCIpOworCisgIC8qIERlbGV0ZSBhbiBhbHJlYWR5IGRlbGV0ZWQgbm9kZSAqLworICByYyA9IEN1cmxfaGFzaF9kZWxldGUoJmhhc2hfc3RhdGljLCAma2V5NCwgc3RybGVuKGtleTQpKTsKKyAgZmFpbF91bmxlc3MocmMsICJoYXNoIGRlbGV0ZSBzaG91bGQgaGF2ZSBmYWlsZWQiKTsKKworICAvKiBSZXBsYWNlIGFuIGV4aXN0aW5nIG5vZGUgKi8KKyAgbm9kZXAgPSBDdXJsX2hhc2hfYWRkKCZoYXNoX3N0YXRpYywgJmtleTEsIHN0cmxlbihrZXkxKSwgJm5vdGFrZXkpOworICBmYWlsX3VubGVzcyhub2RlcCwgImluc2VydGlvbiBpbnRvIGhhc2ggZmFpbGVkIik7CisgIG5vZGVwID0gQ3VybF9oYXNoX3BpY2soJmhhc2hfc3RhdGljLCAma2V5MSwgc3RybGVuKGtleTEpKTsKKyAgZmFpbF91bmxlc3Mobm9kZXAgPT0gbm90YWtleSwgImhhc2ggcmV0cmlldmFsIGZhaWxlZCIpOworCisgIC8qIE1ha2Ugc3VyZSBhbGwgcmVtYWluaW5nIGVsZW1lbnRzIGFyZSBzdGlsbCBhY2Nlc3NpYmxlICovCisgIG5vZGVwID0gQ3VybF9oYXNoX3BpY2soJmhhc2hfc3RhdGljLCAma2V5Miwgc3RybGVuKGtleTIpKTsKKyAgZmFpbF91bmxlc3Mobm9kZXAgPT0ga2V5MiwgImhhc2ggcmV0cmlldmFsIGZhaWxlZCIpOworICBub2RlcCA9IEN1cmxfaGFzaF9waWNrKCZoYXNoX3N0YXRpYywgJmtleTMsIHN0cmxlbihrZXkzKSk7CisgIGZhaWxfdW5sZXNzKG5vZGVwID09IGtleTMsICJoYXNoIHJldHJpZXZhbCBmYWlsZWQiKTsKKworICAvKiBDbGVhbiB1cCAqLworICBDdXJsX2hhc2hfY2xlYW4oJmhhc2hfc3RhdGljKTsKKworVU5JVFRFU1RfU1RPUApkaWZmIC0tZ2l0IGEvdGVzdHMvdW5pdC91bml0MTYwNC5jIGIvdGVzdHMvdW5pdC91bml0MTYwNC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0MmJlMDAKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy91bml0L3VuaXQxNjA0LmMKQEAgLTAsMCArMSwzNDYgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8KKyAqICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcfCB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAorICoKKyAqIENvcHlyaWdodCAoQykgMTk5OCAtIDIwMTYsIERhbmllbCBTdGVuYmVyZywgPGRhbmllbEBoYXh4LnNlPiwgZXQgYWwuCisgKgorICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKKyAqIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKKyAqIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCisgKgorICogWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsCisgKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDT1BZSU5HIGZpbGUuCisgKgorICogVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworI2luY2x1ZGUgImN1cmxjaGVjay5oIgorCisjaW5jbHVkZSAidG9vbF9jZmdhYmxlLmgiCisjaW5jbHVkZSAidG9vbF9kb3N3aW4uaCIKKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKyNpbmNsdWRlICJtZW1kZWJ1Zy5oIiAvKiBMQVNUIGluY2x1ZGUgZmlsZSAqLworCitzdGF0aWMgQ1VSTGNvZGUgdW5pdF9zZXR1cCh2b2lkKQoreworICByZXR1cm4gQ1VSTEVfT0s7Cit9CisKK3N0YXRpYyB2b2lkIHVuaXRfc3RvcCh2b2lkKQoreworCit9CisKKyNpZiBkZWZpbmVkKE1TRE9TKSB8fCBkZWZpbmVkKFdJTjMyKQorCitzdGF0aWMgY2hhciAqZ2V0ZmxhZ3N0cihpbnQgZmxhZ3MpIHsKKyAgY2hhciAqYnVmID0gbWFsbG9jKDI1Nik7CisgIGZhaWxfdW5sZXNzKGJ1ZiwgIm91dCBvZiBtZW1vcnkiKTsKKyAgc25wcmludGYoYnVmLCAyNTYsICIlcywlcywlcywlcyIsCisgICAgKChmbGFncyAmIFNBTklUSVpFX0FMTE9XX0NPTE9OUykgPyAiU0FOSVRJWkVfQUxMT1dfQ09MT05TIiA6ICIiKSwKKyAgICAoKGZsYWdzICYgU0FOSVRJWkVfQUxMT1dfUEFUSCkgPyAiU0FOSVRJWkVfQUxMT1dfUEFUSCIgOiAiIiksCisgICAgKChmbGFncyAmIFNBTklUSVpFX0FMTE9XX1JFU0VSVkVEKSA/ICJTQU5JVElaRV9BTExPV19SRVNFUlZFRCIgOiAiIiksCisgICAgKChmbGFncyAmIFNBTklUSVpFX0FMTE9XX1RSVU5DQVRFKSA/ICJTQU5JVElaRV9BTExPV19UUlVOQ0FURSIgOiAiIikpOworICByZXR1cm4gYnVmOworfQorCitzdGF0aWMgY2hhciAqZ2V0Y3VybGNvZGVzdHIoaW50IGNjKSB7CisgIGNoYXIgKmJ1ZiA9IG1hbGxvYygyNTYpOworICBmYWlsX3VubGVzcyhidWYsICJvdXQgb2YgbWVtb3J5Iik7CisgIHNucHJpbnRmKGJ1ZiwgMjU2LCAiJXMgKCVkKSIsCisgICAgKGNjID09IFNBTklUSVpFX0VSUl9PSyA/ICJTQU5JVElaRV9FUlJfT0siIDoKKyAgICAgY2MgPT0gU0FOSVRJWkVfRVJSX0JBRF9BUkdVTUVOVCA/ICJTQU5JVElaRV9FUlJfQkFEX0FSR1VNRU5UIiA6CisgICAgIGNjID09IFNBTklUSVpFX0VSUl9JTlZBTElEX1BBVEggPyAiU0FOSVRJWkVfRVJSX0lOVkFMSURfUEFUSCIgOgorICAgICBjYyA9PSBTQU5JVElaRV9FUlJfT1VUX09GX01FTU9SWSA/ICJTQU5JVElaRV9FUlJfT1VUX09GX01FTU9SWSIgOgorICAgICAidW5leHBlY3RlZCBlcnJvciBjb2RlIC0gYWRkIG5hbWUiKSwKKyAgICBjYyk7CisgIHJldHVybiBidWY7Cit9CisKK3N0cnVjdCBkYXRhIHsKKyAgY29uc3QgY2hhciAqaW5wdXQ7CisgIGludCBmbGFnczsKKyAgY29uc3QgY2hhciAqZXhwZWN0ZWRfb3V0cHV0OworICBDVVJMY29kZSBleHBlY3RlZF9yZXN1bHQ7Cit9OworCitVTklUVEVTVF9TVEFSVAorCit7IC8qIFNUQVJUIHNhbml0aXplX2ZpbGVfbmFtZSAqLworICBzdHJ1Y3QgZGF0YSBkYXRhW10gPSB7CisgICAgeyAiIiwgMCwKKyAgICAgICIiLCBTQU5JVElaRV9FUlJfT0sKKyAgICB9LAorICAgIHsgIm5vcm1hbCBmaWxlbmFtZSIsIDAsCisgICAgICAibm9ybWFsIGZpbGVuYW1lIiwgU0FOSVRJWkVfRVJSX09LCisgICAgfSwKKyAgICB7ICJjb250cm9sXHRjaGFyIiwgMCwKKyAgICAgICJjb250cm9sX2NoYXIiLCBTQU5JVElaRV9FUlJfT0sKKyAgICB9LAorICAgIHsgImJhbm5lZCpjaGFyIiwgMCwKKyAgICAgICJiYW5uZWRfY2hhciIsIFNBTklUSVpFX0VSUl9PSworICAgIH0sCisgICAgeyAiZjpmb28iLCAwLAorICAgICAgImZfZm9vIiwgU0FOSVRJWkVfRVJSX09LCisgICAgfSwKKyAgICB7ICJmOmZvbyIsIFNBTklUSVpFX0FMTE9XX0NPTE9OUywKKyAgICAgICJmOmZvbyIsIFNBTklUSVpFX0VSUl9PSworICAgIH0sCisgICAgeyAiZjpmb28iLCBTQU5JVElaRV9BTExPV19QQVRILAorICAgICAgImY6Zm9vIiwgU0FOSVRJWkVfRVJSX09LCisgICAgfSwKKyAgICB7ICJmOlxcZm9vIiwgMCwKKyAgICAgICJmX19mb28iLCBTQU5JVElaRV9FUlJfT0sKKyAgICB9LAorICAgIHsgImY6XFxmb28iLCBTQU5JVElaRV9BTExPV19QQVRILAorICAgICAgImY6XFxmb28iLCBTQU5JVElaRV9FUlJfT0sKKyAgICB9LAorICAgIHsgImY6L2ZvbyIsIDAsCisgICAgICAiZl9fZm9vIiwgU0FOSVRJWkVfRVJSX09LCisgICAgfSwKKyAgICB7ICJmOi9mb28iLCBTQU5JVElaRV9BTExPV19QQVRILAorICAgICAgImY6L2ZvbyIsIFNBTklUSVpFX0VSUl9PSworICAgIH0sCisjaWZuZGVmIE1TRE9TCisgICAgeyAiXFxcXD9cXEM6XFxmb28iLCBTQU5JVElaRV9BTExPV19QQVRILAorICAgICAgIlxcXFw/XFxDOlxcZm9vIiwgU0FOSVRJWkVfRVJSX09LCisgICAgfSwKKyAgICB7ICJcXFxcP1xcQzpcXGZvbyIsIDAsCisgICAgICAiX19fX0NfX2ZvbyIsIFNBTklUSVpFX0VSUl9PSworICAgIH0sCisjZW5kaWYKKyAgICB7ICJmb286YmFyIiwgMCwKKyAgICAgICJmb29fYmFyIiwgU0FOSVRJWkVfRVJSX09LCisgICAgfSwKKyAgICB7ICJmb298PD4vYmFyXFxcIjo/KmJheiIsIDAsCisgICAgICAiZm9vX19fX2Jhcl9fX19fYmF6IiwgU0FOSVRJWkVfRVJSX09LCisgICAgfSwKKyAgICB7ICJmOmZvbzo6JERBVEEiLCAwLAorICAgICAgImZfZm9vX18kREFUQSIsIFNBTklUSVpFX0VSUl9PSworICAgIH0sCisgICAgeyAiY29uIC4gYWlyIiwgMCwKKyAgICAgICJjb24gXyBhaXIiLCBTQU5JVElaRV9FUlJfT0sKKyAgICB9LAorICAgIHsgImNvbi5haXIiLCAwLAorICAgICAgImNvbl9haXIiLCBTQU5JVElaRV9FUlJfT0sKKyAgICB9LAorICAgIHsgImNvbjoveCIsIDAsCisgICAgICAiY29uX194IiwgU0FOSVRJWkVfRVJSX09LCisgICAgfSwKKyAgICB7ICJmaWxlIC4gLiAuIC4gIC4uICAuIiwgMCwKKyAgICAgICJmaWxlIiwgU0FOSVRJWkVfRVJSX09LCisgICAgfSwKKyAgICB7ICJmb28gLiAuID8gLiAuICIsIDAsCisgICAgICAiZm9vIC4gLiBfIiwgU0FOSVRJWkVfRVJSX09LCisgICAgfSwKKyAgICB7ICJjb20xIiwgMCwKKyAgICAgICJfY29tMSIsIFNBTklUSVpFX0VSUl9PSworICAgIH0sCisgICAgeyAiY29tMSIsIFNBTklUSVpFX0FMTE9XX1JFU0VSVkVELAorICAgICAgImNvbTEiLCBTQU5JVElaRV9FUlJfT0sKKyAgICB9LAorICAgIHsgImY6XFxjb20xIiwgMCwKKyAgICAgICJmX19jb20xIiwgU0FOSVRJWkVfRVJSX09LCisgICAgfSwKKyAgICB7ICJmOlxcY29tMSIsIFNBTklUSVpFX0FMTE9XX1BBVEgsCisgICAgICAiZjpcXF9jb20xIiwgU0FOSVRJWkVfRVJSX09LCisgICAgfSwKKyAgICB7ICJmOlxcY29tMSIsIFNBTklUSVpFX0FMTE9XX1JFU0VSVkVELAorICAgICAgImZfX2NvbTEiLCBTQU5JVElaRV9FUlJfT0sKKyAgICB9LAorICAgIHsgImY6XFxjb20xIiwgU0FOSVRJWkVfQUxMT1dfUkVTRVJWRUQgfCBTQU5JVElaRV9BTExPV19DT0xPTlMsCisgICAgICAiZjpfY29tMSIsIFNBTklUSVpFX0VSUl9PSworICAgIH0sCisgICAgeyAiZjpcXGNvbTEiLCBTQU5JVElaRV9BTExPV19SRVNFUlZFRCB8IFNBTklUSVpFX0FMTE9XX1BBVEgsCisgICAgICAiZjpcXGNvbTEiLCBTQU5JVElaRV9FUlJfT0sKKyAgICB9LAorICAgIHsgImNvbTE6XFxjb20xIiwgU0FOSVRJWkVfQUxMT1dfUEFUSCwKKyAgICAgICJfY29tMTpcXF9jb20xIiwgU0FOSVRJWkVfRVJSX09LCisgICAgfSwKKyAgICB7ICJjb20xOlxcY29tMSIsIFNBTklUSVpFX0FMTE9XX1JFU0VSVkVEIHwgU0FOSVRJWkVfQUxMT1dfUEFUSCwKKyAgICAgICJjb20xOlxcY29tMSIsIFNBTklUSVpFX0VSUl9PSworICAgIH0sCisgICAgeyAiY29tMTpcXGNvbTEiLCBTQU5JVElaRV9BTExPV19SRVNFUlZFRCwKKyAgICAgICJjb20xX19jb20xIiwgU0FOSVRJWkVfRVJSX09LCisgICAgfSwKKyNpZm5kZWYgTVNET1MKKyAgICB7ICJcXGNvbTEiLCBTQU5JVElaRV9BTExPV19QQVRILAorICAgICAgIlxcX2NvbTEiLCBTQU5JVElaRV9FUlJfT0sKKyAgICB9LAorICAgIHsgIlxcXFxjb20xIiwgU0FOSVRJWkVfQUxMT1dfUEFUSCwKKyAgICAgICJcXFxcY29tMSIsIFNBTklUSVpFX0VSUl9PSworICAgIH0sCisgICAgeyAiXFxcXD9cXEM6XFxjb20xIiwgU0FOSVRJWkVfQUxMT1dfUEFUSCwKKyAgICAgICJcXFxcP1xcQzpcXGNvbTEiLCBTQU5JVElaRV9FUlJfT0sKKyAgICB9LAorI2VuZGlmCisgICAgeyAiQ29NMSIsIDAsCisgICAgICAiX0NvTTEiLCBTQU5JVElaRV9FUlJfT0sKKyAgICB9LAorICAgIHsgIkNvTTEiLCBTQU5JVElaRV9BTExPV19SRVNFUlZFRCwKKyAgICAgICJDb00xIiwgU0FOSVRJWkVfRVJSX09LCisgICAgfSwKKyAgICB7ICJDT001NiIsIDAsCisgICAgICAiQ09NNTYiLCBTQU5JVElaRV9FUlJfT0sKKyAgICB9LAorICAgIC8qIEF0IHRoZSBtb21lbnQgd2UgZXhwZWN0IGEgbWF4aW11bSBwYXRoIGxlbmd0aCBvZiAyNTkuIEkgYXNzdW1lIE1TRE9TCisgICAgICAgaGFzIHZhcmlhYmxlIG1heCBwYXRoIGxlbmd0aHMgZGVwZW5kaW5nIG9uIGNvbXBpbGVyIHRoYXQgYXJlIHNob3J0ZXIKKyAgICAgICBzbyBjdXJyZW50bHkgdGhlc2UgImdvb2QiIHRydW5jYXRlIHRlc3RzIHdvbid0IHJ1biBvbiBNU0RPUyAqLworI2lmbmRlZiBNU0RPUworICAgIHsgIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIgorICAgICAgIkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCIgorICAgICAgIkNDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDIgorICAgICAgIkREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREIgorICAgICAgIkVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFIgorICAgICAgIkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGIiwKKyAgICAgICAgU0FOSVRJWkVfQUxMT1dfVFJVTkNBVEUsCisgICAgICAiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiCisgICAgICAiQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkIiCisgICAgICAiQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0MiCisgICAgICAiREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREQiCisgICAgICAiRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUUiCisgICAgICAiRkZGRkYiLCBTQU5JVElaRV9FUlJfT0sKKyAgICB9LAorICAgIHsgIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIgorICAgICAgIkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCIgorICAgICAgIkNDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDIgorICAgICAgIkREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREIgorICAgICAgIkVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFIgorICAgICAgIkZGRlxcRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRiIsCisgICAgICAgIFNBTklUSVpFX0FMTE9XX1RSVU5DQVRFIHwgU0FOSVRJWkVfQUxMT1dfUEFUSCwKKyAgICAgICJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIKKyAgICAgICJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQiIKKyAgICAgICJDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQyIKKyAgICAgICJERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERCIKKyAgICAgICJFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRSIKKyAgICAgICJGRkZcXEZGRkZGIiwgU0FOSVRJWkVfRVJSX09LCisgICAgfSwKKyAgICB7ICJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIKKyAgICAgICJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQiIKKyAgICAgICJDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQyIKKyAgICAgICJERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERCIKKyAgICAgICJFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRSIKKyAgICAgICJGRkZcXEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYiLAorICAgICAgICBTQU5JVElaRV9BTExPV19UUlVOQ0FURSwKKyAgICAgICJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIKKyAgICAgICJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQiIKKyAgICAgICJDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQyIKKyAgICAgICJERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERCIKKyAgICAgICJFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRSIKKyAgICAgICJGRkZfRiIsIFNBTklUSVpFX0VSUl9PSworICAgIH0sCisjZW5kaWYgLyogIU1TRE9TICovCisgICAgeyAiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiCisgICAgICAiQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkIiCisgICAgICAiQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0MiCisgICAgICAiREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREQiCisgICAgICAiRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUUiCisgICAgICAiRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYiLAorICAgICAgICAwLAorICAgICAgTlVMTCwgU0FOSVRJWkVfRVJSX0lOVkFMSURfUEFUSAorICAgIH0sCisgICAgeyAiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiCisgICAgICAiQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkIiCisgICAgICAiQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0MiCisgICAgICAiREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREQiCisgICAgICAiRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUUiCisgICAgICAiRkZGRlxcRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGIiwKKyAgICAgICAgU0FOSVRJWkVfQUxMT1dfVFJVTkNBVEUsCisgICAgICBOVUxMLCBTQU5JVElaRV9FUlJfSU5WQUxJRF9QQVRICisgICAgfSwKKyAgICB7ICJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIKKyAgICAgICJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQiIKKyAgICAgICJDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQyIKKyAgICAgICJERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERCIKKyAgICAgICJFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRSIKKyAgICAgICJGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGXFxGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYiLAorICAgICAgICBTQU5JVElaRV9BTExPV19UUlVOQ0FURSB8IFNBTklUSVpFX0FMTE9XX1BBVEgsCisgICAgICBOVUxMLCBTQU5JVElaRV9FUlJfSU5WQUxJRF9QQVRICisgICAgfSwKKyAgICB7ICJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIKKyAgICAgICJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQiIKKyAgICAgICJDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQyIKKyAgICAgICJERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERCIKKyAgICAgICJFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRSIKKyAgICAgICJGRkZcXEZGRkZGRkZGRkZGRkZGRkZGRkZGRjpGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYiLAorICAgICAgICBTQU5JVElaRV9BTExPV19UUlVOQ0FURSB8IFNBTklUSVpFX0FMTE9XX1BBVEgsCisgICAgICBOVUxMLCBTQU5JVElaRV9FUlJfSU5WQUxJRF9QQVRICisgICAgfSwKKyAgICB7ICJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIKKyAgICAgICJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQiIKKyAgICAgICJDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQyIKKyAgICAgICJERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERCIKKyAgICAgICJFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRSIKKyAgICAgICJGRlxcRjpGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYiLAorICAgICAgICBTQU5JVElaRV9BTExPV19UUlVOQ0FURSB8IFNBTklUSVpFX0FMTE9XX1BBVEgsCisgICAgICBOVUxMLCBTQU5JVElaRV9FUlJfSU5WQUxJRF9QQVRICisgICAgfSwKKyAgICB7IE5VTEwsIDAsCisgICAgICBOVUxMLCBTQU5JVElaRV9FUlJfQkFEX0FSR1VNRU5UCisgICAgfSwKKyAgfTsKKworICBzaXplX3QgaTsKKworICBmb3IoaSA9IDA7IGkgPCBzaXplb2YgZGF0YSAvIHNpemVvZiBkYXRhWzBdOyArK2kpIHsKKyAgICBjaGFyICpvdXRwdXQgPSBOVUxMOworICAgIGNoYXIgKmZsYWdzdHIgPSBOVUxMOworICAgIGNoYXIgKnJlY2VpdmVkX2Njc3RyID0gTlVMTDsKKyAgICBjaGFyICpleHBlY3RlZF9jY3N0ciA9IE5VTEw7CisKKyAgICBDVVJMY29kZSByZXMgPSBzYW5pdGl6ZV9maWxlX25hbWUoJm91dHB1dCwgZGF0YVtpXS5pbnB1dCwgZGF0YVtpXS5mbGFncyk7CisKKyAgICBpZihyZXMgPT0gZGF0YVtpXS5leHBlY3RlZF9yZXN1bHQgJiYKKyAgICAgICAoKCFvdXRwdXQgJiYgIWRhdGFbaV0uZXhwZWN0ZWRfb3V0cHV0KSB8fAorICAgICAgICAob3V0cHV0ICYmIGRhdGFbaV0uZXhwZWN0ZWRfb3V0cHV0ICYmCisgICAgICAgICAhc3RyY21wKG91dHB1dCwgZGF0YVtpXS5leHBlY3RlZF9vdXRwdXQpKSkpIHsgLyogT0sgKi8KKyAgICAgIGZyZWUob3V0cHV0KTsKKyAgICAgIGNvbnRpbnVlOworICAgIH0KKworICAgIGZsYWdzdHIgPSBnZXRmbGFnc3RyKGRhdGFbaV0uZmxhZ3MpOworICAgIHJlY2VpdmVkX2Njc3RyID0gZ2V0Y3VybGNvZGVzdHIocmVzKTsKKyAgICBleHBlY3RlZF9jY3N0ciA9IGdldGN1cmxjb2Rlc3RyKGRhdGFbaV0uZXhwZWN0ZWRfcmVzdWx0KTsKKworICAgIHVuaXRmYWlsKys7CisgICAgZnByaW50ZihzdGRlcnIsICJcbiIKKyAgICAgICAgICAgICIlczolZCBzYW5pdGl6ZV9maWxlX25hbWUgZmFpbGVkLlxuIgorICAgICAgICAgICAgImlucHV0OiAlc1xuIgorICAgICAgICAgICAgImZsYWdzOiAlc1xuIgorICAgICAgICAgICAgIm91dHB1dDogJXNcbiIKKyAgICAgICAgICAgICJyZXN1bHQ6ICVzXG4iCisgICAgICAgICAgICAiZXhwZWN0ZWQgb3V0cHV0OiAlc1xuIgorICAgICAgICAgICAgImV4cGVjdGVkIHJlc3VsdDogJXNcbiIsCisgICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18sCisgICAgICAgICAgICBkYXRhW2ldLmlucHV0LAorICAgICAgICAgICAgZmxhZ3N0ciwKKyAgICAgICAgICAgIChvdXRwdXQgPyBvdXRwdXQgOiAiKG51bGwpIiksCisgICAgICAgICAgICByZWNlaXZlZF9jY3N0ciwKKyAgICAgICAgICAgIChkYXRhW2ldLmV4cGVjdGVkX291dHB1dCA/IGRhdGFbaV0uZXhwZWN0ZWRfb3V0cHV0IDogIihudWxsKSIpLAorICAgICAgICAgICAgZXhwZWN0ZWRfY2NzdHIpOworCisgICAgZnJlZShvdXRwdXQpOworICAgIGZyZWUoZmxhZ3N0cik7CisgICAgZnJlZShyZWNlaXZlZF9jY3N0cik7CisgICAgZnJlZShleHBlY3RlZF9jY3N0cik7CisgIH0KK30gLyogRU5EIHNhbml0aXplX2ZpbGVfbmFtZSAqLworCisjZWxzZQorVU5JVFRFU1RfU1RBUlQKKworeworICBmcHJpbnRmKHN0ZGVyciwgIlNraXBwZWQgdGVzdCBub3QgZm9yIHRoaXMgcGxhdGZvcm1cbiIpOworfQorI2VuZGlmIC8qIE1TRE9TIHx8IFdJTjMyICovCisKK1VOSVRURVNUX1NUT1AKZGlmZiAtLWdpdCBhL3Rlc3RzL3ZhbGdyaW5kLnBtIGIvdGVzdHMvdmFsZ3JpbmQucG0KaW5kZXggZjgxMTk5My4uODM4MTgzYiAxMDA2NDQKLS0tIGEvdGVzdHMvdmFsZ3JpbmQucG0KKysrIGIvdGVzdHMvdmFsZ3JpbmQucG0KQEAgLTksNyArOSw3IEBACiAjCiAjIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMKLSMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4KKyMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuCiAjCiAjIFlvdSBtYXkgb3B0IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSBhbmQvb3Igc2VsbAogIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZGlmZiAtLWdpdCBhL3dpbmJ1aWxkL0JVSUxELldJTkRPV1MudHh0IGIvd2luYnVpbGQvQlVJTEQuV0lORE9XUy50eHQKaW5kZXggNjAwZjczNy4uMGQ2MGI5NiAxMDA2NDQKLS0tIGEvd2luYnVpbGQvQlVJTEQuV0lORE9XUy50eHQKKysrIGIvd2luYnVpbGQvQlVJTEQuV0lORE9XUy50eHQKQEAgLTEsNSArMSw1IEBACi1CdWlsZGluZyB3aXRoIFZpc3VhbCBDKyssIHByZXJlcXVpc2VzDQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KK0J1aWxkaW5nIHdpdGggVmlzdWFsIEMrKywgcHJlcmVxdWlzaXRlcw0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KIA0KICAgIFRoaXMgZG9jdW1lbnQgZGVzY3JpYmVzIGhvdyB0byBjb21waWxlLCBidWlsZCBhbmQgaW5zdGFsbCBjdXJsIGFuZCBsaWJjdXJsDQogICAgZnJvbSBzb3VyY2VzIHVzaW5nIHRoZSBWaXN1YWwgQysrIGJ1aWxkIHRvb2wuIFRvIGJ1aWxkIHdpdGggVkMrKywgeW91IHdpbGwNCkBAIC0xMiwxMiArMTIsMTIgQEAKIA0KICAgIFRoZSBsYXRlc3QgUGxhdGZvcm0gU0RLIGNhbiBiZSBkb3dubG9hZGVkIGZyZWVseSBmcm9tOg0KIA0KLSAgICBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL3dpbmRvd3MvYmI5ODA5MjQNCisgICAgaHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG93cy9iYjk4MDkyNA0KIA0KICAgIElmIHlvdSBhcmUgYnVpbGRpbmcgd2l0aCBWQzYgdGhlbiB5b3Ugd2lsbCBhbHNvIG5lZWQgdGhlIEZlYnJ1YXJ5IDIwMDMNCiAgICBFZGl0aW9uIG9mIHRoZSBQbGF0Zm9ybSBTREsgd2hpY2ggY2FuIGJlIGRvd25sb2FkZWQgZnJvbToNCiANCi0gICAgaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL2VuLXVzL2Rvd25sb2FkL2RldGFpbHMuYXNweD9pZD0xMjI2MQ0KKyAgICBodHRwczovL3d3dy5taWNyb3NvZnQuY29tL2VuLXVzL2Rvd25sb2FkL2RldGFpbHMuYXNweD9pZD0xMjI2MQ0KIA0KICAgIElmIHlvdSB3aXNoIHRvIHN1cHBvcnQgemxpYiwgb3BlbnNzbCwgYy1hcmVzLCBzc2gyLCB5b3Ugd2lsbCBoYXZlIHRvIGRvd25sb2FkDQogICAgdGhlbSBzZXBhcmF0ZWx5IGFuZCBjb3B5IHRoZW0gdG8gdGhlIGRlcHMgZGlyZWN0b3J5IGFzIHNob3duIGJlbG93Og0KQEAgLTU4LDcgKzU4LDcgQEAKIG5tYWtlIC9mIE1ha2VmaWxlLnZjIG1vZGU9PHN0YXRpYyBvciBkbGw+IDxvcHRpb25zPg0KIA0KIHdoZXJlIDxvcHRpb25zPiBpcyBvbmUgb3IgbWFueSBvZjoNCi0gIFZDPTw2LDcsOCw5LDEwLDExLDEyPiAgICAgICAgLSBWQyB2ZXJzaW9ucw0KKyAgVkM9PDYsNyw4LDksMTAsMTEsMTIsMTQ+ICAgICAtIFZDIHZlcnNpb25zDQogICBXSVRIX0RFVkVMPTxwYXRoPiAgICAgICAgICAgIC0gUGF0aHMgZm9yIHRoZSBkZXZlbG9wbWVudCBmaWxlcyAoU1NMLCB6bGliLCBldGMuKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHRzIHRvIHNpYmJsaW5nIGRpcmVjdG9yeSBkZXBzOiAuLi9kZXBzDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlicmFyaWVzIGNhbiBiZSBmZXRjaGVkIGF0IGh0dHA6Ly93aW5kb3dzLnBocC5uZXQvZG93bmxvYWRzL3BocC1zZGsvZGVwcy8NCkBAIC03MSw3ICs3MSw3IEBACiAgIEVOQUJMRV9JUFY2PTx5ZXMgb3Igbm8+ICAgICAgLSBFbmFibGUgSVB2NiwgZGVmYXVsdHMgdG8geWVzDQogICBFTkFCTEVfSUROPTx5ZXMgb3Igbm8+ICAgICAgIC0gRW5hYmxlIHVzZSBvZiBXaW5kb3dzIElETiBBUElzLCBkZWZhdWx0cyB0byB5ZXMNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlcyBXaW5kb3dzIFZpc3RhIG9yIGxhdGVyLCBvciBpbnN0YWxsYXRpb24gZnJvbToNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vZG93bmxvYWRzL2RldGFpbHMuYXNweD9GYW1pbHlJRD1BRDYxNThENy1EREJBLTQxNkEtOTEwOS0wNzYwNzQyNUE4MTUNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodHRwczovL3d3dy5taWNyb3NvZnQuY29tL2Rvd25sb2Fkcy9kZXRhaWxzLmFzcHg/RmFtaWx5SUQ9QUQ2MTU4RDctRERCQS00MTZBLTkxMDktMDc2MDc0MjVBODE1DQogICBFTkFCTEVfV0lOU1NMPTx5ZXMgb3Igbm8+ICAgIC0gRW5hYmxlIG5hdGl2ZSBXaW5kb3dzIFNTTCBzdXBwb3J0LCBkZWZhdWx0cyB0byB5ZXMNCiAgIEdFTl9QREI9PHllcyBvciBubz4gICAgICAgICAgLSBHZW5lcmF0ZSBQcm9ncmFtIERhdGFiYXNlIChkZWJ1ZyBzeW1ib2xzIGZvciByZWxlYXNlIGJ1aWxkKQ0KICAgREVCVUc9PHllcyBvciBubz4gICAgICAgICAgICAtIERlYnVnIGJ1aWxkcw0KQEAgLTg3LDMgKzg3LDEyIEBACiBhbHJlYWR5IGJ1aWx0IGJ1dCBub3Qgd2l0aCB0aGF0IG9wdGlvbiwgb3IgaWYgdGhlIG9wdGlvbiB3YXMgc3BlY2lmaWVkDQogZGlmZmVyZW50bHksIHlvdSBtdXN0IGRlc3Ryb3kgdGhlIGJ1aWxkIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBjb25maWd1cmF0aW9uDQogc28gdGhhdCBubWFrZSBjYW4gYnVpbGQgaXQgZnJvbSBzY3JhdGNoLg0KKw0KK0xlZ2FjeSBXaW5kb3dzIGFuZCBTU0wNCis9PT09PT09PT09PT09PT09PT09PT09DQorV2hlbiB5b3UgYnVpbGQgY3VybCB1c2luZyB0aGUgYnVpbGQgZmlsZXMgaW4gdGhpcyBkaXJlY3RvcnkgdGhlIGRlZmF1bHQgU1NMDQorYmFja2VuZCB3aWxsIGJlIFdpblNTTCAoV2luZG93cyBTU1BJLCBtb3JlIHNwZWNpZmljYWxseSBTY2hhbm5lbCksIHRoZSBuYXRpdmUNCitTU0wgbGlicmFyeSB0aGF0IGNvbWVzIHdpdGggdGhlIFdpbmRvd3MgT1MuIFdpblNTTCBpbiBXaW5kb3dzIDw9IFhQIGlzIG5vdCBhYmxlDQordG8gY29ubmVjdCB0byBzZXJ2ZXJzIHRoYXQgbm8gbG9uZ2VyIHN1cHBvcnQgdGhlIGxlZ2FjeSBoYW5kc2hha2VzIGFuZA0KK2FsZ29yaXRobXMgdXNlZCBieSB0aG9zZSB2ZXJzaW9ucy4gSWYgeW91IHdpbGwgYmUgdXNpbmcgY3VybCBpbiBvbmUgb2YgdGhvc2UNCitlYXJsaWVyIHZlcnNpb25zIG9mIFdpbmRvd3MgeW91IHNob3VsZCBjaG9vc2UgYW5vdGhlciBTU0wgYmFja2VuZCBsaWtlIE9wZW5TU0wuDQpkaWZmIC0tZ2l0IGEvd2luYnVpbGQvTWFrZWZpbGUubXN2Yy5uYW1lcyBiL3dpbmJ1aWxkL01ha2VmaWxlLm1zdmMubmFtZXMKaW5kZXggNTZjODFhZC4uMTNlYWZhYyAxMDA2NDQKLS0tIGEvd2luYnVpbGQvTWFrZWZpbGUubXN2Yy5uYW1lcworKysgYi93aW5idWlsZC9NYWtlZmlsZS5tc3ZjLm5hbWVzCkBAIC05LDcgKzksNyBAQAogIw0KICMgVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gNCiAjIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgdGVybXMNCi0jIGFyZSBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuDQorIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9jb3B5cmlnaHQuaHRtbC4NCiAjDQogIyBZb3UgbWF5IG9wdCB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUgYW5kL29yIHNlbGwNCiAjIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcw0KZGlmZiAtLWdpdCBhL3dpbmJ1aWxkL01ha2VmaWxlLnZjIGIvd2luYnVpbGQvTWFrZWZpbGUudmMKaW5kZXggMjFlMTYxNC4uNGY5MGU0YSAxMDA2NDQKLS0tIGEvd2luYnVpbGQvTWFrZWZpbGUudmMKKysrIGIvd2luYnVpbGQvTWFrZWZpbGUudmMKQEAgLTEsMjA1ICsxLDIwOCBAQAotIUlGICIkKE1PREUpIj09InN0YXRpYyINCi1UQVJHRVQgPSAkKExJQl9OQU1FX1NUQVRJQykNCi1BU19ETEwgPSBmYWxzZQ0KLUNGR1NFVD10cnVlDQotIUVMU0VJRiAiJChNT0RFKSI9PSJkbGwiDQotVEFSR0VUID0gJChMSUJfTkFNRV9ETEwpDQotQVNfRExMID0gdHJ1ZQ0KLUNGR1NFVD10cnVlDQotIUVMU0UNCi0hTUVTU0FHRSBJbnZhbGlkIG1vZGU6ICQoTU9ERSkNCi0NCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KLSMgVXNhZ2UNCi0jDQotDQotIU1FU1NBR0UgVXNhZ2U6IG5tYWtlIC9mIE1ha2VmaWxlLnZjIG1vZGU9PHN0YXRpYyBvciBkbGw+IDxvcHRpb25zPg0KLSFNRVNTQUdFIHdoZXJlIDxvcHRpb25zPiBpcyBvbmUgb3IgbWFueSBvZjoNCi0hTUVTU0FHRSAgIFZDPTw2LDcsOCw5LDEwLDExLDEyPiAgICAgICAgLSBWQyB2ZXJzaW9ucw0KLSFNRVNTQUdFICAgV0lUSF9ERVZFTD08cGF0aD4gICAgICAgICAgICAtIFBhdGhzIGZvciB0aGUgZGV2ZWxvcG1lbnQgZmlsZXMgKFNTTCwgemxpYiwgZXRjLikNCi0hTUVTU0FHRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0cyB0byBzaWJibGluZyBkaXJlY3RvcnkgZGVwczogLi4vZGVwcw0KLSFNRVNTQUdFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpYnJhcmllcyBjYW4gYmUgZmV0Y2hlZCBhdCBodHRwOi8vcGVjbDIucGhwLm5ldC9kb3dubG9hZHMvcGhwLXdpbmRvd3MtYnVpbGRzLw0KLSFNRVNTQUdFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuY29tcHJlc3MgdGhlbSBpbnRvIHRoZSBkZXBzIGZvbGRlci4NCi0hTUVTU0FHRSAgIFdJVEhfU1NMPTxkbGwgb3Igc3RhdGljPiAgICAgLSBFbmFibGUgT3BlblNTTCBzdXBwb3J0LCBETEwgb3Igc3RhdGljDQotIU1FU1NBR0UgICBXSVRIX0NBUkVTPTxkbGwgb3Igc3RhdGljPiAgIC0gRW5hYmxlIGMtYXJlcyBzdXBwb3J0LCBETEwgb3Igc3RhdGljDQotIU1FU1NBR0UgICBXSVRIX1pMSUI9PGRsbCBvciBzdGF0aWM+ICAgIC0gRW5hYmxlIHpsaWIgc3VwcG9ydCwgRExMIG9yIHN0YXRpYw0KLSFNRVNTQUdFICAgV0lUSF9TU0gyPTxkbGwgb3Igc3RhdGljPiAgICAtIEVuYWJsZSBsaWJTU0gyIHN1cHBvcnQsIERMTCBvciBzdGF0aWMNCi0hTUVTU0FHRSAgIEVOQUJMRV9JRE49PHllcyBvciBubz4gICAgICAgLSBFbmFibGUgdXNlIG9mIFdpbmRvd3MgSUROIEFQSXMsIGRlZmF1bHRzIHRvIHllcw0KLSFNRVNTQUdFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVzIFdpbmRvd3MgVmlzdGEgb3IgbGF0ZXIsIG9yIGluc3RhbGxhdGlvbiBmcm9tOg0KLSFNRVNTQUdFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9kb3dubG9hZHMvZGV0YWlscy5hc3B4P0ZhbWlseUlEPUFENjE1OEQ3LUREQkEtNDE2QS05MTA5LTA3NjA3NDI1QTgxNQ0KLSFNRVNTQUdFICAgRU5BQkxFX0lQVjY9PHllcyBvciBubz4gICAgICAtIEVuYWJsZSBJUHY2LCBkZWZhdWx0cyB0byB5ZXMNCi0hTUVTU0FHRSAgIEVOQUJMRV9TU1BJPTx5ZXMgb3Igbm8+ICAgICAgLSBFbmFibGUgU1NQSSBzdXBwb3J0LCBkZWZhdWx0cyB0byB5ZXMNCi0hTUVTU0FHRSAgIEVOQUJMRV9XSU5TU0w9PHllcyBvciBubz4gICAgLSBFbmFibGUgbmF0aXZlIFdpbmRvd3MgU1NMIHN1cHBvcnQsIGRlZmF1bHRzIHRvIHllcw0KLSFNRVNTQUdFICAgR0VOX1BEQj08eWVzIG9yIG5vPiAgICAgICAgICAtIEdlbmVyYXRlIFByb2dyYW0gRGF0YWJhc2UgKGRlYnVnIHN5bWJvbHMgZm9yIHJlbGVhc2UgYnVpbGQpDQotIU1FU1NBR0UgICBERUJVRz08eWVzIG9yIG5vPiAgICAgICAgICAgIC0gRGVidWcgYnVpbGRzDQotIU1FU1NBR0UgICBNQUNISU5FPTx4ODYgb3IgeDY0PiAgICAgICAgIC0gVGFyZ2V0IGFyY2hpdGVjdHVyZSAoZGVmYXVsdCB4NjQgb24gQU1ENjQsIHg4NiBvbiBvdGhlcnMpDQotIUVSUk9SIHBsZWFzZSBjaG9vc2UgYSB2YWxpZCBtb2RlDQotDQotIUVORElGDQotDQotIUlOQ0xVREUgIi4uL2xpYi9NYWtlZmlsZS5pbmMiDQotTElCQ1VSTF9PQkpTPSQoQ1NPVVJDRVM6LmM9Lm9iaikNCi0NCi0hSU5DTFVERSAiLi4vc3JjL01ha2VmaWxlLmluYyINCi0NCi0jIHRvb2xfaHVnZWhlbHAgaGFzIGEgc3BlY2lhbCBydWxlDQotQ1VSTF9PQkpTPSQoQ1VSTF9DRklMRVM6dG9vbF9odWdlaGVscC5jPSkNCi0NCi1DVVJMX09CSlM9JChDVVJMX09CSlM6LmM9Lm9iaikNCi0NCi0NCi0jIGJhY2t3YXJkcyBjb21wYXRpYmxlIGNoZWNrIGZvciBVU0VfU1NQSQ0KLSFJRkRFRiBVU0VfU1NQSQ0KLUVOQUJMRV9TU1BJID0gJChVU0VfU1NQSSkNCi0hRU5ESUYNCi0NCi0jIGRlZmF1bHQgb3B0aW9ucw0KLSFJRk5ERUYgTUFDSElORQ0KLSFJRiAiJChQUk9DRVNTT1JfQVJDSElURUNUVVJFKSI9PSJBTUQ2NCINCi1NQUNISU5FID0geDY0DQotIUVMU0UNCi1NQUNISU5FID0geDg2DQotIUVORElGDQotIUVORElGDQotDQotIUlGTkRFRiBFTkFCTEVfSURODQotVVNFX0lETiA9IHRydWUNCi0hRUxTRUlGICIkKEVOQUJMRV9JRE4pIj09InllcyINCi1VU0VfSUROID0gdHJ1ZQ0KLSFFTFNFSUYgIiQoRU5BQkxFX0lETikiPT0ibm8iDQotVVNFX0lETiA9IGZhbHNlDQotIUVORElGDQotDQotIUlGTkRFRiBFTkFCTEVfSVBWNg0KLVVTRV9JUFY2ID0gdHJ1ZQ0KLSFFTFNFSUYgIiQoRU5BQkxFX0lQVjYpIj09InllcyINCi1VU0VfSVBWNiA9IHRydWUNCi0hRUxTRUlGICIkKEVOQUJMRV9JUFY2KSI9PSJubyINCi1VU0VfSVBWNiA9IGZhbHNlDQotIUVORElGDQotDQotIUlGTkRFRiBFTkFCTEVfU1NQSQ0KLVVTRV9TU1BJID0gdHJ1ZQ0KLSFFTFNFSUYgIiQoRU5BQkxFX1NTUEkpIj09InllcyINCi1VU0VfU1NQSSA9IHRydWUNCi0hRUxTRUlGICIkKEVOQUJMRV9TU1BJKSI9PSJubyINCi1VU0VfU1NQSSA9IGZhbHNlDQotIUVORElGDQotDQotIUlGTkRFRiBFTkFCTEVfV0lOU1NMDQotIUlGREVGIFdJVEhfU1NMDQotVVNFX1dJTlNTTCA9IGZhbHNlDQotIUVMU0UNCi1VU0VfV0lOU1NMID0gJChVU0VfU1NQSSkNCi0hRU5ESUYNCi0hRUxTRUlGICIkKEVOQUJMRV9XSU5TU0wpIj09InllcyINCi1VU0VfV0lOU1NMID0gdHJ1ZQ0KLSFFTFNFSUYgIiQoRU5BQkxFX1dJTlNTTCkiPT0ibm8iDQotVVNFX1dJTlNTTCA9IGZhbHNlDQotIUVORElGDQotDQotQ09ORklHX05BTUVfTElCID0gbGliY3VybA0KLQ0KLSFJRiAiJChXSVRIX1NTTCkiPT0iZGxsIg0KLVVTRV9TU0wgPSB0cnVlDQotU1NMICAgICA9IGRsbA0KLSFFTFNFSUYgIiQoV0lUSF9TU0wpIj09InN0YXRpYyINCi1VU0VfU1NMID0gdHJ1ZQ0KLVNTTCAgICAgPSBzdGF0aWMNCi0hRU5ESUYNCi0NCi0hSUYgIiQoV0lUSF9DQVJFUykiPT0iZGxsIg0KLVVTRV9DQVJFUyA9IHRydWUNCi1DQVJFUyAgICAgPSBkbGwNCi0hRUxTRUlGICIkKFdJVEhfQ0FSRVMpIj09InN0YXRpYyINCi1VU0VfQ0FSRVMgPSB0cnVlDQotQ0FSRVMgICAgID0gc3RhdGljDQotIUVORElGDQotDQotIUlGICIkKFdJVEhfWkxJQikiPT0iZGxsIg0KLVVTRV9aTElCID0gdHJ1ZQ0KLVpMSUIgICAgID0gZGxsDQotIUVMU0VJRiAiJChXSVRIX1pMSUIpIj09InN0YXRpYyINCi1VU0VfWkxJQiA9IHRydWUNCi1aTElCICAgICA9IHN0YXRpYw0KLSFFTkRJRg0KLQ0KLSFJRiAiJChXSVRIX1NTSDIpIj09ImRsbCINCi1VU0VfU1NIMiA9IHRydWUNCi1TU0gyICAgICA9IGRsbA0KLSFFTFNFSUYgIiQoV0lUSF9TU0gyKSI9PSJzdGF0aWMiDQotVVNFX1NTSDIgPSB0cnVlDQotU1NIMiAgICAgPSBzdGF0aWMNCi0hRU5ESUYNCi0NCi1DT05GSUdfTkFNRV9MSUIgPSAkKENPTkZJR19OQU1FX0xJQiktdmMkKFZDKS0kKE1BQ0hJTkUpDQotDQotIUlGICIkKERFQlVHKSI9PSJ5ZXMiDQotQ09ORklHX05BTUVfTElCID0gJChDT05GSUdfTkFNRV9MSUIpLWRlYnVnDQotIUVMU0UNCi1DT05GSUdfTkFNRV9MSUIgPSAkKENPTkZJR19OQU1FX0xJQiktcmVsZWFzZQ0KLSFFTkRJRg0KLQ0KLSFJRiAiJChBU19ETEwpIj09InRydWUiDQotQ09ORklHX05BTUVfTElCID0gJChDT05GSUdfTkFNRV9MSUIpLWRsbA0KLSFFTFNFDQotQ09ORklHX05BTUVfTElCID0gJChDT05GSUdfTkFNRV9MSUIpLXN0YXRpYw0KLSFFTkRJRg0KLQ0KLSFJRiAiJChVU0VfU1NMKSI9PSJ0cnVlIg0KLUNPTkZJR19OQU1FX0xJQiA9ICQoQ09ORklHX05BTUVfTElCKS1zc2wtJChTU0wpDQotIUVORElGDQotDQotIUlGICIkKFVTRV9DQVJFUykiPT0idHJ1ZSINCi1DT05GSUdfTkFNRV9MSUIgPSAkKENPTkZJR19OQU1FX0xJQiktY2FyZXMtJChDQVJFUykNCi0hRU5ESUYNCi0NCi0hSUYgIiQoVVNFX1pMSUIpIj09InRydWUiDQotQ09ORklHX05BTUVfTElCID0gJChDT05GSUdfTkFNRV9MSUIpLXpsaWItJChaTElCKQ0KLSFFTkRJRg0KLQ0KLSFJRiAiJChVU0VfU1NIMikiPT0idHJ1ZSINCi1DT05GSUdfTkFNRV9MSUIgPSAkKENPTkZJR19OQU1FX0xJQiktc3NoMi0kKFNTSDIpDQotIUVORElGDQotDQotIUlGICIkKFVTRV9JUFY2KSI9PSJ0cnVlIg0KLUNPTkZJR19OQU1FX0xJQiA9ICQoQ09ORklHX05BTUVfTElCKS1pcHY2DQotIUVORElGDQotDQotIUlGICIkKFVTRV9TU1BJKSI9PSJ0cnVlIg0KLUNPTkZJR19OQU1FX0xJQiA9ICQoQ09ORklHX05BTUVfTElCKS1zc3BpDQotIUVORElGDQotDQotIUlGICIkKFVTRV9XSU5TU0wpIj09InRydWUiDQotQ09ORklHX05BTUVfTElCID0gJChDT05GSUdfTkFNRV9MSUIpLXdpbnNzbA0KLSFFTkRJRg0KLQ0KLSFNRVNTQUdFIGNvbmZpZ3VyYXRpb24gbmFtZTogJChDT05GSUdfTkFNRV9MSUIpDQotDQotQlVJTERfRElSPS4uL2J1aWxkcy8kKENPTkZJR19OQU1FX0xJQikNCi1MSUJDVVJMX0RJUk9CSiA9IC4uXGJ1aWxkc1wkKENPTkZJR19OQU1FX0xJQiktb2JqLWxpYg0KLUNVUkxfRElST0JKID0gLi5cYnVpbGRzXCQoQ09ORklHX05BTUVfTElCKS1vYmotY3VybA0KLURJUkRJU1QgPSAuLlxidWlsZHNcJChDT05GSUdfTkFNRV9MSUIpXA0KLQ0KLSQoTU9ERSk6DQotCUBTRVQgRElST0JKPSQoTElCQ1VSTF9ESVJPQkopDQotCUBTRVQgTUFDUk9fTkFNRT1MSUJDVVJMX09CSlMNCi0JQFNFVCBPVVRGSUxFPUxJQkNVUkxfT0JKUy5pbmMNCi0JQGdlbl9yZXNwX2ZpbGUuYmF0ICQoTElCQ1VSTF9PQkpTKQ0KLQ0KLQlAU0VUIERJUk9CSj0kKENVUkxfRElST0JKKQ0KLQlAU0VUIE1BQ1JPX05BTUU9Q1VSTF9PQkpTDQotCUBTRVQgT1VURklMRT1DVVJMX09CSlMuaW5jDQotCUBnZW5fcmVzcF9maWxlLmJhdCAkKENVUkxfT0JKUykNCi0NCi0JQFNFVCBDT05GSUdfTkFNRV9MSUI9JChDT05GSUdfTkFNRV9MSUIpDQotCUBTRVQgTUFDSElORT0kKE1BQ0hJTkUpDQotCUBTRVQgVVNFX0lETj0kKFVTRV9JRE4pDQotCUBTRVQgVVNFX0lQVjY9JChVU0VfSVBWNikNCi0JQFNFVCBVU0VfU1NQST0kKFVTRV9TU1BJKQ0KLQlAU0VUIFVTRV9XSU5TU0w9JChVU0VfV0lOU1NMKQ0KLQlAJChNQUtFKSAvTk9MT0dPIC9GIE1ha2VmaWxlQnVpbGQudmMNCi0NCi1jb3B5X2Zyb21fbGliOg0KLQllY2hvIGNvcHlpbmcgLmMuLi4NCi0JRk9SICUlaSBJTiAoJChDVVJMWF9DRklMRVM6Lz1cKSkgRE8gY29weSAlJWkgLi5cc3JjXA0KKyFJRiAiJChNT0RFKSI9PSJzdGF0aWMiCitUQVJHRVQgPSAkKExJQl9OQU1FX1NUQVRJQykKK0FTX0RMTCA9IGZhbHNlCitDRkdTRVQ9dHJ1ZQorIUVMU0VJRiAiJChNT0RFKSI9PSJkbGwiCitUQVJHRVQgPSAkKExJQl9OQU1FX0RMTCkKK0FTX0RMTCA9IHRydWUKK0NGR1NFVD10cnVlCishRUxTRQorIU1FU1NBR0UgSW52YWxpZCBtb2RlOiAkKE1PREUpCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFVzYWdlCisjCisKKyFNRVNTQUdFIFVzYWdlOiBubWFrZSAvZiBNYWtlZmlsZS52YyBtb2RlPTxzdGF0aWMgb3IgZGxsPiA8b3B0aW9ucz4KKyFNRVNTQUdFIHdoZXJlIDxvcHRpb25zPiBpcyBvbmUgb3IgbWFueSBvZjoKKyFNRVNTQUdFICAgVkM9PDYsNyw4LDksMTAsMTEsMTIsMTQ+ICAgICAtIFZDIHZlcnNpb25zCishTUVTU0FHRSAgIFdJVEhfREVWRUw9PHBhdGg+ICAgICAgICAgICAgLSBQYXRocyBmb3IgdGhlIGRldmVsb3BtZW50IGZpbGVzIChTU0wsIHpsaWIsIGV0Yy4pCishTUVTU0FHRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0cyB0byBzaWJibGluZyBkaXJlY3RvcnkgZGVwczogLi4vZGVwcworIU1FU1NBR0UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlicmFyaWVzIGNhbiBiZSBmZXRjaGVkIGF0IGh0dHA6Ly9wZWNsMi5waHAubmV0L2Rvd25sb2Fkcy9waHAtd2luZG93cy1idWlsZHMvCishTUVTU0FHRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmNvbXByZXNzIHRoZW0gaW50byB0aGUgZGVwcyBmb2xkZXIuCishTUVTU0FHRSAgIFdJVEhfU1NMPTxkbGwgb3Igc3RhdGljPiAgICAgLSBFbmFibGUgT3BlblNTTCBzdXBwb3J0LCBETEwgb3Igc3RhdGljCishTUVTU0FHRSAgIFdJVEhfQ0FSRVM9PGRsbCBvciBzdGF0aWM+ICAgLSBFbmFibGUgYy1hcmVzIHN1cHBvcnQsIERMTCBvciBzdGF0aWMKKyFNRVNTQUdFICAgV0lUSF9aTElCPTxkbGwgb3Igc3RhdGljPiAgICAtIEVuYWJsZSB6bGliIHN1cHBvcnQsIERMTCBvciBzdGF0aWMKKyFNRVNTQUdFICAgV0lUSF9TU0gyPTxkbGwgb3Igc3RhdGljPiAgICAtIEVuYWJsZSBsaWJTU0gyIHN1cHBvcnQsIERMTCBvciBzdGF0aWMKKyFNRVNTQUdFICAgRU5BQkxFX0lETj08eWVzIG9yIG5vPiAgICAgICAtIEVuYWJsZSB1c2Ugb2YgV2luZG93cyBJRE4gQVBJcywgZGVmYXVsdHMgdG8geWVzCishTUVTU0FHRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlcyBXaW5kb3dzIFZpc3RhIG9yIGxhdGVyLCBvciBpbnN0YWxsYXRpb24gZnJvbToKKyFNRVNTQUdFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0dHBzOi8vd3d3Lm1pY3Jvc29mdC5jb20vZW4tdXMvZG93bmxvYWQvZGV0YWlscy5hc3B4P2lkPTczNAorIU1FU1NBR0UgICBFTkFCTEVfSVBWNj08eWVzIG9yIG5vPiAgICAgIC0gRW5hYmxlIElQdjYsIGRlZmF1bHRzIHRvIHllcworIU1FU1NBR0UgICBFTkFCTEVfU1NQST08eWVzIG9yIG5vPiAgICAgIC0gRW5hYmxlIFNTUEkgc3VwcG9ydCwgZGVmYXVsdHMgdG8geWVzCishTUVTU0FHRSAgIEVOQUJMRV9XSU5TU0w9PHllcyBvciBubz4gICAgLSBFbmFibGUgbmF0aXZlIFdpbmRvd3MgU1NMIHN1cHBvcnQsIGRlZmF1bHRzIHRvIHllcworIU1FU1NBR0UgICBHRU5fUERCPTx5ZXMgb3Igbm8+ICAgICAgICAgIC0gR2VuZXJhdGUgUHJvZ3JhbSBEYXRhYmFzZSAoZGVidWcgc3ltYm9scyBmb3IgcmVsZWFzZSBidWlsZCkKKyFNRVNTQUdFICAgREVCVUc9PHllcyBvciBubz4gICAgICAgICAgICAtIERlYnVnIGJ1aWxkcworIU1FU1NBR0UgICBNQUNISU5FPTx4ODYgb3IgeDY0PiAgICAgICAgIC0gVGFyZ2V0IGFyY2hpdGVjdHVyZSAoZGVmYXVsdCB4NjQgb24gQU1ENjQsIHg4NiBvbiBvdGhlcnMpCishRVJST1IgcGxlYXNlIGNob29zZSBhIHZhbGlkIG1vZGUKKworIUVORElGCisKKyFJTkNMVURFICIuLi9saWIvTWFrZWZpbGUuaW5jIgorTElCQ1VSTF9PQkpTPSQoQ1NPVVJDRVM6LmM9Lm9iaikKKworIUlOQ0xVREUgIi4uL3NyYy9NYWtlZmlsZS5pbmMiCisKKyMgdG9vbF9odWdlaGVscCBoYXMgYSBzcGVjaWFsIHJ1bGUKK0NVUkxfT0JKUz0kKENVUkxfQ0ZJTEVTOnRvb2xfaHVnZWhlbHAuYz0pCisKK0NVUkxfT0JKUz0kKENVUkxfT0JKUzouYz0ub2JqKQorCisKKyMgYmFja3dhcmRzIGNvbXBhdGlibGUgY2hlY2sgZm9yIFVTRV9TU1BJCishSUZERUYgVVNFX1NTUEkKK0VOQUJMRV9TU1BJID0gJChVU0VfU1NQSSkKKyFFTkRJRgorCisjIGRlZmF1bHQgb3B0aW9ucworIUlGTkRFRiBNQUNISU5FCishSUYgIiQoUFJPQ0VTU09SX0FSQ0hJVEVDVFVSRSkiPT0iQU1ENjQiCitNQUNISU5FID0geDY0CishRUxTRQorTUFDSElORSA9IHg4NgorIUVORElGCishRU5ESUYKKworIUlGTkRFRiBFTkFCTEVfSUROCitVU0VfSUROID0gdHJ1ZQorIUVMU0VJRiAiJChFTkFCTEVfSUROKSI9PSJ5ZXMiCitVU0VfSUROID0gdHJ1ZQorIUVMU0VJRiAiJChFTkFCTEVfSUROKSI9PSJubyIKK1VTRV9JRE4gPSBmYWxzZQorIUVORElGCisKKyFJRk5ERUYgRU5BQkxFX0lQVjYKK1VTRV9JUFY2ID0gdHJ1ZQorIUVMU0VJRiAiJChFTkFCTEVfSVBWNikiPT0ieWVzIgorVVNFX0lQVjYgPSB0cnVlCishRUxTRUlGICIkKEVOQUJMRV9JUFY2KSI9PSJubyIKK1VTRV9JUFY2ID0gZmFsc2UKKyFFTkRJRgorCishSUZOREVGIEVOQUJMRV9TU1BJCitVU0VfU1NQSSA9IHRydWUKKyFFTFNFSUYgIiQoRU5BQkxFX1NTUEkpIj09InllcyIKK1VTRV9TU1BJID0gdHJ1ZQorIUVMU0VJRiAiJChFTkFCTEVfU1NQSSkiPT0ibm8iCitVU0VfU1NQSSA9IGZhbHNlCishRU5ESUYKKworIUlGTkRFRiBFTkFCTEVfV0lOU1NMCishSUZERUYgV0lUSF9TU0wKK1VTRV9XSU5TU0wgPSBmYWxzZQorIUVMU0UKK1VTRV9XSU5TU0wgPSAkKFVTRV9TU1BJKQorIUVORElGCishRUxTRUlGICIkKEVOQUJMRV9XSU5TU0wpIj09InllcyIKK1VTRV9XSU5TU0wgPSB0cnVlCishRUxTRUlGICIkKEVOQUJMRV9XSU5TU0wpIj09Im5vIgorVVNFX1dJTlNTTCA9IGZhbHNlCishRU5ESUYKKworQ09ORklHX05BTUVfTElCID0gbGliY3VybAorCishSUYgIiQoV0lUSF9TU0wpIj09ImRsbCIKK1VTRV9TU0wgPSB0cnVlCitTU0wgICAgID0gZGxsCishRUxTRUlGICIkKFdJVEhfU1NMKSI9PSJzdGF0aWMiCitVU0VfU1NMID0gdHJ1ZQorU1NMICAgICA9IHN0YXRpYworIUVORElGCisKKyFJRiAiJChXSVRIX0NBUkVTKSI9PSJkbGwiCitVU0VfQ0FSRVMgPSB0cnVlCitDQVJFUyAgICAgPSBkbGwKKyFFTFNFSUYgIiQoV0lUSF9DQVJFUykiPT0ic3RhdGljIgorVVNFX0NBUkVTID0gdHJ1ZQorQ0FSRVMgICAgID0gc3RhdGljCishRU5ESUYKKworIUlGICIkKFdJVEhfWkxJQikiPT0iZGxsIgorVVNFX1pMSUIgPSB0cnVlCitaTElCICAgICA9IGRsbAorIUVMU0VJRiAiJChXSVRIX1pMSUIpIj09InN0YXRpYyIKK1VTRV9aTElCID0gdHJ1ZQorWkxJQiAgICAgPSBzdGF0aWMKKyFFTkRJRgorCishSUYgIiQoV0lUSF9TU0gyKSI9PSJkbGwiCitVU0VfU1NIMiA9IHRydWUKK1NTSDIgICAgID0gZGxsCishRUxTRUlGICIkKFdJVEhfU1NIMikiPT0ic3RhdGljIgorVVNFX1NTSDIgPSB0cnVlCitTU0gyICAgICA9IHN0YXRpYworIUVORElGCisKK0NPTkZJR19OQU1FX0xJQiA9ICQoQ09ORklHX05BTUVfTElCKS12YyQoVkMpLSQoTUFDSElORSkKKworIUlGICIkKERFQlVHKSI9PSJ5ZXMiCitDT05GSUdfTkFNRV9MSUIgPSAkKENPTkZJR19OQU1FX0xJQiktZGVidWcKKyFFTFNFCitDT05GSUdfTkFNRV9MSUIgPSAkKENPTkZJR19OQU1FX0xJQiktcmVsZWFzZQorIUVORElGCisKKyFJRiAiJChBU19ETEwpIj09InRydWUiCitDT05GSUdfTkFNRV9MSUIgPSAkKENPTkZJR19OQU1FX0xJQiktZGxsCishRUxTRQorQ09ORklHX05BTUVfTElCID0gJChDT05GSUdfTkFNRV9MSUIpLXN0YXRpYworIUVORElGCisKKyFJRiAiJChVU0VfU1NMKSI9PSJ0cnVlIgorQ09ORklHX05BTUVfTElCID0gJChDT05GSUdfTkFNRV9MSUIpLXNzbC0kKFNTTCkKKyFFTkRJRgorCishSUYgIiQoVVNFX0NBUkVTKSI9PSJ0cnVlIgorQ09ORklHX05BTUVfTElCID0gJChDT05GSUdfTkFNRV9MSUIpLWNhcmVzLSQoQ0FSRVMpCishRU5ESUYKKworIUlGICIkKFVTRV9aTElCKSI9PSJ0cnVlIgorQ09ORklHX05BTUVfTElCID0gJChDT05GSUdfTkFNRV9MSUIpLXpsaWItJChaTElCKQorIUVORElGCisKKyFJRiAiJChVU0VfU1NIMikiPT0idHJ1ZSIKK0NPTkZJR19OQU1FX0xJQiA9ICQoQ09ORklHX05BTUVfTElCKS1zc2gyLSQoU1NIMikKKyFFTkRJRgorCishSUYgIiQoVVNFX0lQVjYpIj09InRydWUiCitDT05GSUdfTkFNRV9MSUIgPSAkKENPTkZJR19OQU1FX0xJQiktaXB2NgorIUVORElGCisKKyFJRiAiJChVU0VfU1NQSSkiPT0idHJ1ZSIKK0NPTkZJR19OQU1FX0xJQiA9ICQoQ09ORklHX05BTUVfTElCKS1zc3BpCishRU5ESUYKKworIUlGICIkKFVTRV9XSU5TU0wpIj09InRydWUiCitDT05GSUdfTkFNRV9MSUIgPSAkKENPTkZJR19OQU1FX0xJQiktd2luc3NsCishRU5ESUYKKworIU1FU1NBR0UgY29uZmlndXJhdGlvbiBuYW1lOiAkKENPTkZJR19OQU1FX0xJQikKKworQlVJTERfRElSPS4uL2J1aWxkcy8kKENPTkZJR19OQU1FX0xJQikKK0xJQkNVUkxfRElST0JKID0gLi5cYnVpbGRzXCQoQ09ORklHX05BTUVfTElCKS1vYmotbGliCitDVVJMX0RJUk9CSiA9IC4uXGJ1aWxkc1wkKENPTkZJR19OQU1FX0xJQiktb2JqLWN1cmwKK0RJUkRJU1QgPSAuLlxidWlsZHNcJChDT05GSUdfTkFNRV9MSUIpXAorCiskKE1PREUpOgorCUBJRiBOT1QgRVhJU1QgLi5caW5jbHVkZVxjdXJsXGN1cmxidWlsZC5oICggXAorCSAgIENBTEwgLi5cYnVpbGRjb25mLmJhdCBcCisJKQorCUBTRVQgRElST0JKPSQoTElCQ1VSTF9ESVJPQkopCisJQFNFVCBNQUNST19OQU1FPUxJQkNVUkxfT0JKUworCUBTRVQgT1VURklMRT1MSUJDVVJMX09CSlMuaW5jCisJQGdlbl9yZXNwX2ZpbGUuYmF0ICQoTElCQ1VSTF9PQkpTKQorCisJQFNFVCBESVJPQko9JChDVVJMX0RJUk9CSikKKwlAU0VUIE1BQ1JPX05BTUU9Q1VSTF9PQkpTCisJQFNFVCBPVVRGSUxFPUNVUkxfT0JKUy5pbmMKKwlAZ2VuX3Jlc3BfZmlsZS5iYXQgJChDVVJMX09CSlMpCisKKwlAU0VUIENPTkZJR19OQU1FX0xJQj0kKENPTkZJR19OQU1FX0xJQikKKwlAU0VUIE1BQ0hJTkU9JChNQUNISU5FKQorCUBTRVQgVVNFX0lETj0kKFVTRV9JRE4pCisJQFNFVCBVU0VfSVBWNj0kKFVTRV9JUFY2KQorCUBTRVQgVVNFX1NTUEk9JChVU0VfU1NQSSkKKwlAU0VUIFVTRV9XSU5TU0w9JChVU0VfV0lOU1NMKQorCUAkKE1BS0UpIC9OT0xPR08gL0YgTWFrZWZpbGVCdWlsZC52YworCitjb3B5X2Zyb21fbGliOgorCWVjaG8gY29weWluZyAuYy4uLgorCUZPUiAlJWkgSU4gKCQoQ1VSTFhfQ0ZJTEVTOi89XCkpIERPIGNvcHkgJSVpIC4uXHNyY1wKZGlmZiAtLWdpdCBhL3dpbmJ1aWxkL01ha2VmaWxlQnVpbGQudmMgYi93aW5idWlsZC9NYWtlZmlsZUJ1aWxkLnZjCmluZGV4IDJjYWQxNWMuLmQ2MzEyMDQgMTAwNjQ0Ci0tLSBhL3dpbmJ1aWxkL01ha2VmaWxlQnVpbGQudmMKKysrIGIvd2luYnVpbGQvTWFrZWZpbGVCdWlsZC52YwpAQCAtOSw3ICs5LDcgQEAKICMNCiAjIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoDQogIyB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zDQotIyBhcmUgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL2N1cmwuaGF4eC5zZS9kb2NzL2NvcHlyaWdodC5odG1sLg0KKyMgYXJlIGFsc28gYXZhaWxhYmxlIGF0IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvY29weXJpZ2h0Lmh0bWwuDQogIw0KICMgWW91IG1heSBvcHQgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlIGFuZC9vciBzZWxsDQogIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMNCkBAIC0yMiw3ICsyMiw3IEBACiANCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAjDQotIyBNYWtlZmlsZSBmb3IgYnVpbGRpbmcgbGliY3VybCB3aXRoIE1TVkMgNiwgNywgOCwgOSwgMTAsIDExIGFuZCAxMg0KKyMgTWFrZWZpbGUgZm9yIGJ1aWxkaW5nIGxpYmN1cmwgd2l0aCBNU1ZDIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIgYW5kIDE0DQogIw0KICMgVXNhZ2U6IHNlZSB1c2FnZSBtZXNzYWdlIGJlbG93DQogIyAgICAgICAgU2hvdWxkIGJlIGludm9rZWQgZnJvbSB3aW5idWlsZCBkaXJlY3RvcnkNCkBAIC00MzYsNiArNDM2LDcgQEAKIA0KICQoTElCX0RJUk9CSik6DQogCUBpZiBub3QgZXhpc3QgIiQoTElCX0RJUk9CSikiIG1rZGlyICQoTElCX0RJUk9CSikNCisJQGlmIG5vdCBleGlzdCAiJChMSUJfRElST0JKKVx2YXV0aCIgbWtkaXIgJChMSUJfRElST0JKKVx2YXV0aA0KIAlAaWYgbm90IGV4aXN0ICIkKExJQl9ESVJPQkopXHZ0bHMiIG1rZGlyICQoTElCX0RJUk9CSilcdnRscw0KIA0KICQoQ1VSTF9ESVJPQkopOg0KQEAgLTQ0OSw2ICs0NTAsOSBAQAogeyQoTElCQ1VSTF9TUkNfRElSKVx9LmN7JChMSUJfRElST0JKKVx9Lm9iajoNCiAJJChDQykgJChDRkxBR1MpIC9GbyIkQCIgICQ8DQogDQoreyQoTElCQ1VSTF9TUkNfRElSKVx2YXV0aFx9LmN7JChMSUJfRElST0JKKVx2YXV0aFx9Lm9iajoNCisJJChDQykgJChDRkxBR1MpIC9GbyIkQCIgICQ8DQorDQogeyQoTElCQ1VSTF9TUkNfRElSKVx2dGxzXH0uY3skKExJQl9ESVJPQkopXHZ0bHNcfS5vYmo6DQogCSQoQ0MpICQoQ0ZMQUdTKSAvRm8iJEAiICAkPA0KIA0K