From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: =?utf-8?q?Ville_Skytt=C3=A4_=3Cscop=40fedoraproject=2Eorg=3E?= To: git-commits@fedoraproject.org Subject: =?utf-8?q?=5Brpms/xine-lib=5D_epel9-next=3A_*_Wed_Apr_16_2008_Ville_Skytt=C3=A4_=3Cville=2Eskytta_at_iki=2Efi=3E_-_1=2E1=2E12-1?= Date: Mon, 20 Jul 2026 20:00:33 GMT Message-ID: <178457763348.1.17040028325805411197.rpms-xine-lib-93d0f06ea4a3@fedoraproject.org> List-ID: X-Git-Repo: rpms/xine-lib X-Git-Branch: epel9-next X-Git-Rev: 93d0f06ea4a38fc9a391838d0e66c0621bd5b0e8 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMveGluZS1saWIKICAgICAgICAgICAgQnJhbmNoIDogZXBlbDktbmV4dAogICAg ICAgICAgICBDb21taXQgOiA5M2QwZjA2ZWE0YTM4ZmM5YTM5MTgzOGQwZTY2YzA2MjFiZDViMGU4 CiAgICAgICAgICAgIEF1dGhvciA6IFZpbGxlIFNreXR0w6QgPHNjb3BAZmVkb3JhcHJvamVjdC5v cmc+CiAgICAgICAgICAgIERhdGUgICA6IDIwMDgtMDQtMTZUMjE6MDU6NDArMDA6MDAKICAgICAg ICAgICAgU3RhdHMgIDogKzEzLy0xMTAwIGluIDYgZmlsZShzKQogICAgICAgICAgICBVUkwgICAg OiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL3hpbmUtbGliL2MvOTNkMGYwNmVh NGEzOGZjOWEzOTE4MzhkMGU2NmMwNjIxYmQ1YjBlOD9icmFuY2g9ZXBlbDktbmV4dAoKICAgICAg ICAgICAgTG9nOgogICAgICAgICAgICAqIFdlZCBBcHIgMTYgMjAwOCBWaWxsZSBTa3l0dMOkIDx2 aWxsZS5za3l0dGEgYXQgaWtpLmZpPiAtIDEuMS4xMi0xCi0gMS4xLjEyIChwbHVnaW4gQUJJIDEu MjEpOyBxdCwgbWt2LCBhbmQgcHVsc2VhdWRpbyBwYXRjaGVzIGFwcGxpZWQgdXBzdHJlYW0uCgot LS0KZGlmZiAtLWdpdCBhLy5jdnNpZ25vcmUgYi8uY3ZzaWdub3JlCmluZGV4IDkwN2NjOTkuLmU2 ODg3M2QgMTAwNjQ0Ci0tLSBhLy5jdnNpZ25vcmUKKysrIGIvLmN2c2lnbm9yZQpAQCAtMSwyICsx LDIgQEAKLXhpbmUtbGliLTEuMS4xMS4xLXBydW5lZC50YXIuYnoyCi14aW5lLWxpYi0xLjEuMTEu MS1hdXRvdG9vbHMucGF0Y2guYnoyCit4aW5lLWxpYi0xLjEuMTItcHJ1bmVkLnRhci5iejIKK3hp bmUtbGliLTEuMS4xMi1hdXRvdG9vbHMucGF0Y2guYnoyCgpkaWZmIC0tZ2l0IGEvc291cmNlcyBi L3NvdXJjZXMKaW5kZXggN2M4ZjlkOS4uNGEwMjMzMyAxMDA2NDQKLS0tIGEvc291cmNlcworKysg Yi9zb3VyY2VzCkBAIC0xLDIgKzEsMiBAQAotYjZhNGZlOWRkMmVjODA0NTI4NzBhOGJmYmIzOTc0 ZjAgIHhpbmUtbGliLTEuMS4xMS4xLXBydW5lZC50YXIuYnoyCi1jMjU3YmYwYjk2NGQyNTU5MmYx YzYxMjE0OWFlMmM3YSAgeGluZS1saWItMS4xLjExLjEtYXV0b3Rvb2xzLnBhdGNoLmJ6MgorM2Y5 MThhZjkzZjUyZTQ4NmZiOGZkNGRmZWMwNGY5OGYgIHhpbmUtbGliLTEuMS4xMi1wcnVuZWQudGFy LmJ6MgorNzcxNTY1NjI4ZTRkZmNmYzg2NTdiMTI1NmI5ZjQxZWYgIHhpbmUtbGliLTEuMS4xMi1h dXRvdG9vbHMucGF0Y2guYnoyCgpkaWZmIC0tZ2l0IGEveGluZS1saWItMS4xLjExLjEtbWt2LnBh dGNoIGIveGluZS1saWItMS4xLjExLjEtbWt2LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCBjODM1ZGIxLi4wMDAwMDAwCi0tLSBhL3hpbmUtbGliLTEuMS4xMS4xLW1rdi5wYXRj aAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLQotIyBIRyBjaGFuZ2VzZXQgcGF0Y2gK LSMgVXNlciBEYXJyZW4gU2FsdCA8bGludXhAeW91bXVzdGJlam9raW5nLmRlbW9uLmNvLnVrPgot IyBEYXRlIDEyMDczNTMyMDUgLTM2MDAKLSMgTm9kZSBJRCBmZjIwYjhkYjc0ZWFiYzc0YjdiOTVk YTRjMWI0NGZjNWQ3ZjJlYzhjCi0jIFBhcmVudCAwNWViYzg4NmZkMzAxNThiNTlhMjZlMDNjZjJm NmYzYTUyMTE0YjI0Ci1GaXggYSByZWdyZXNzaW9uIGluIHRoZSBNYXRyb3NrYSBkZW11eGVyLgot T25lICcmJy4uLgotCi0tLS0gYS9zcmMvZGVtdXhlcnMvZWJtbC5jCUZyaSBBcHIgMDQgMTg6MzU6 MzMgMjAwOCArMDEwMAotKysrIGIvc3JjL2RlbXV4ZXJzL2VibWwuYwlTYXQgQXByIDA1IDAwOjUz OjI1IDIwMDggKzAxMDAKLUBAIC0zMjcsNyArMzI3LDcgQEAgY2hhciAqZWJtbF9hbGxvY19yZWFk X2FzY2lpIChlYm1sX3BhcnNlcgotICAgaWYgKHRleHQpCi0gICB7Ci0gICAgIHRleHRbZWxlbS0+ bGVuXSA9ICdcMCc7Ci0tICAgIGlmIChlYm1sX3JlYWRfYXNjaWkgKGVibWwsICZlbGVtLCB0ZXh0 KSkKLSsgICAgaWYgKGVibWxfcmVhZF9hc2NpaSAoZWJtbCwgZWxlbSwgdGV4dCkpCi0gICAgICAg cmV0dXJuIHRleHQ7Ci0gICAgIGZyZWUgKHRleHQpOwotICAgfQotCgpkaWZmIC0tZ2l0IGEveGlu ZS1saWItMS4xLjExLjEtcXQucGF0Y2ggYi94aW5lLWxpYi0xLjEuMTEuMS1xdC5wYXRjaApkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTRhOWM2Ny4uMDAwMDAwMAotLS0gYS94aW5lLWxp Yi0xLjEuMTEuMS1xdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLQotIyBI RyBjaGFuZ2VzZXQgcGF0Y2gKLSMgVXNlciBEYXJyZW4gU2FsdCA8bGludXhAeW91bXVzdGJlam9r aW5nLmRlbW9uLmNvLnVrPgotIyBEYXRlIDEyMDY5NzYxMDMgLTM2MDAKLSMgTm9kZSBJRCBkOGUx MzA1YzEzODIwYjgyZDg5NmY3YmM3N2QxOTZiOWM5NjQ1ZGQ2Ci0jIFBhcmVudCAyY2M1ODNiZGM0 OThmZDZjOTViOGEyMWMxMGU4MWEwY2VmNGQ2M2M2Ci1SZXZlcnQgYSBjaGFuZ2Ugd2hpY2ggYnJv a2UgUXVpY2t0aW1lIGF0b20gcGFyc2luZy4KLQotLS0tIGEvc3JjL2RlbXV4ZXJzL2RlbXV4X3F0 LmMJU3VuIE1hciAzMCAxOTo0ODo1OCAyMDA4ICswMTAwCi0rKysgYi9zcmMvZGVtdXhlcnMvZGVt dXhfcXQuYwlNb24gTWFyIDMxIDE2OjA4OjIzIDIwMDggKzAxMDAKLUBAIC04OTUsMTEgKzg5NSw2 IEBAIHN0YXRpYyBxdF9lcnJvciBwYXJzZV90cmFrX2F0b20gKHF0X3RyYWsKLSAgIGZvciAoaSA9 IEFUT01fUFJFQU1CTEVfU0laRTsgaSA8IHRyYWtfYXRvbV9zaXplIC0gNDsgaSsrKSB7Ci0gICAg IGN1cnJlbnRfYXRvbV9zaXplID0gX1hfQkVfMzIoJnRyYWtfYXRvbVtpIC0gNF0pOwkKLSAgICAg Y3VycmVudF9hdG9tID0gX1hfQkVfMzIoJnRyYWtfYXRvbVtpXSk7Ci0tCi0tICAgIGlmIChjdXJy ZW50X2F0b21fc2l6ZSA+IHRyYWtfYXRvbV9zaXplIC0gaSkgewotLSAgICAgIGxhc3RfZXJyb3Ig PSBRVF9OT1RfQV9WQUxJRF9GSUxFOwotLSAgICAgIGdvdG8gZnJlZV90cmFrOwotLSAgICB9Ci0g Ci0gICAgIGlmIChjdXJyZW50X2F0b20gPT0gVEtIRF9BVE9NKSB7Ci0gICAgICAgdHJhay0+Zmxh Z3MgPSBfWF9CRV8xNigmdHJha19hdG9tW2kgKyA2XSk7Ci0KCmRpZmYgLS1naXQgYS94aW5lLWxp Yi5zcGVjIGIveGluZS1saWIuc3BlYwppbmRleCBlYjQxYjc4Li5hMWExMWM4IDEwMDY0NAotLS0g YS94aW5lLWxpYi5zcGVjCisrKyBiL3hpbmUtbGliLnNwZWMKQEAgLTgsNyArOCw3IEBACiAjICAg IGh0dHA6Ly93d3cucmVkaGF0LmNvbS9hcmNoaXZlcy9mZWRvcmEtZGV2ZWwtbGlzdC8yMDA3LUF1 Z3VzdC9tc2cwMTQxMS5odG1sCiAjIC0gZXh0ZXJuYWwgZHZkbmF2IC0gbm90IGNvbXBhdGlibGUg YXMgb2YgMS4xLjExIGFuZCA0LjEuMQogCi0lZGVmaW5lICAgICAgICAgYWJpdmVyICAgICAgMS4y MAorJWRlZmluZSAgICAgICAgIGFiaXZlciAgICAgIDEuMjEKICVkZWZpbmUgICAgICAgICBjb2Rl Y2RpciAgICAle19saWJkaXJ9L2NvZGVjcwogCiAlaWZhcmNoICV7aXg4Nn0KQEAgLTMxLDggKzMx LDggQEAKIAogU3VtbWFyeTogICAgICAgIFhpbmUgbGlicmFyeQogTmFtZTogICAgICAgICAgIHhp bmUtbGliCi1WZXJzaW9uOiAgICAgICAgMS4xLjExLjEKLVJlbGVhc2U6ICAgICAgICAzJXs/ZGlz dH0KK1ZlcnNpb246ICAgICAgICAxLjEuMTIKK1JlbGVhc2U6ICAgICAgICAxJXs/ZGlzdH0KIExp Y2Vuc2U6ICAgICAgICBHUEx2MisKIEdyb3VwOiAgICAgICAgICBTeXN0ZW0gRW52aXJvbm1lbnQv TGlicmFyaWVzCiBVUkw6ICAgICAgICAgICAgaHR0cDovL3hpbmVocS5kZS8KQEAgLTQ4LDEyICs0 OCw2IEBAIFBhdGNoMTogICAgICAgICAle25hbWV9LTEuMS40LW9wdGZsYWdzLnBhdGNoCiBQYXRj aDY6ICAgICAgICAgJXtuYW1lfS0xLjEuMS1kZWVwYmluZC05MzkucGF0Y2gKIEJ1aWxkUm9vdDog ICAgICAle190bXBwYXRofS8le25hbWV9LSV7dmVyc2lvbn0tJXtyZWxlYXNlfS1yb290LSUoJXtf X2lkX3V9IC1uKQogCi0jIHVwc3RyZWFtIHBhdGNoZXMKLSMgbGVubmFydCBzYWlkIHRoaXMgd2Fz IHVwc3RyZWFtZWQgYWxyZWFkeS4gIDopCi1QYXRjaDEwMDogICAgICAgaHR0cDovLzBwb2ludGVy LmRlL3B1YmxpYy94aW5lLXB1bHNlLXJld29yazIucGF0Y2gKLVBhdGNoMTAxOiAgICAgICAle25h bWV9LTEuMS4xMS4xLW1rdi5wYXRjaAotUGF0Y2gxMDI6ICAgICAgICV7bmFtZX0tMS4xLjExLjEt cXQucGF0Y2gKLQogUHJvdmlkZXM6ICAgICAgIHhpbmUtbGliKHBsdWdpbi1hYmkpID0gJXthYml2 ZXJ9CiAjIFgxMQogQnVpbGRSZXF1aXJlczogIGxpYlgxMS1kZXZlbApAQCAtMTgzLDEwICsxNzcs NiBAQCB0b3VjaCAtciBtNC9vcHRpbWl6YXRpb25zLm00LnN0YW1wIG00L29wdGltaXphdGlvbnMu bTQKICMgUGF0Y2g2IG5lZWRlZCBhdCBsZWFzdCB3aGVuIGNvbXBpbGluZyB3aXRoIGV4dGVybmFs IGZmbXBlZywgIzkzOS4KICVwYXRjaDYgLXAxIC1iIC5kZWVwYmluZAogCi0lcGF0Y2gxMDAgLXAx IC1iIC5wdWxzZS1yZXdvcmsyCi0lcGF0Y2gxMDEgLXAxIC1iIC5ta3YKLSVwYXRjaDEwMiAtcDEg LWIgLnF0Ci0KICMgQXZvaWQgc3RhbmRhcmQgcnBhdGhzIG9uIGxpYjY0IGFyY2hzOgogc2VkIC1p IC1lICdzfCIvbGliIC91c3IvbGliXGJ8Ii8le19saWJ9ICV7X2xpYmRpcn18JyBjb25maWd1cmUK IApAQCAtMzQ4LDYgKzMzOCw3IEBAIHJtIC1yZiAkUlBNX0JVSUxEX1JPT1QKICV7X2xpYmRpcn0v eGluZS9wbHVnaW5zLyV7YWJpdmVyfS94aW5lcGx1Z192b19vdXRfZmIuc28KICV7X2xpYmRpcn0v eGluZS9wbHVnaW5zLyV7YWJpdmVyfS94aW5lcGx1Z192b19vdXRfbm9uZS5zbwogJXtfbGliZGly fS94aW5lL3BsdWdpbnMvJXthYml2ZXJ9L3hpbmVwbHVnX3ZvX291dF9vcGVuZ2wuc28KKyV7X2xp YmRpcn0veGluZS9wbHVnaW5zLyV7YWJpdmVyfS94aW5lcGx1Z192b19vdXRfcmF3LnNvCiAle19s aWJkaXJ9L3hpbmUvcGx1Z2lucy8le2FiaXZlcn0veGluZXBsdWdfdm9fb3V0X3N5bmNmYi5zbwog JWlmICV7aGF2ZV92aWRpeH0KICV7X2xpYmRpcn0veGluZS9wbHVnaW5zLyV7YWJpdmVyfS94aW5l cGx1Z192b19vdXRfdmlkaXguc28KQEAgLTM5OCwxNSArMzg5LDIwIEBAIHJtIC1yZiAkUlBNX0JV SUxEX1JPT1QKICVkZWZhdHRyKC0scm9vdCxyb290LC0pCiAlZG9jIF9fZG9jcy9oYWNrZXJzZ3Vp ZGUvKgogJXtfYmluZGlyfS94aW5lLWNvbmZpZworJXtfYmluZGlyfS94aW5lLWxpc3QqCiAle19k YXRhZGlyfS9hY2xvY2FsL3hpbmUubTQKICV7X2luY2x1ZGVkaXJ9L3hpbmUuaAogJXtfaW5jbHVk ZWRpcn0veGluZS8KICV7X2xpYmRpcn0vbGlieGluZS5zbwogJXtfbGliZGlyfS9wa2djb25maWcv bGlieGluZS5wYwogJXtfbWFuZGlyfS9tYW4xL3hpbmUtY29uZmlnLjEqCisle19tYW5kaXJ9L21h bjEveGluZS1saXN0Ki4xKgogCiAKICVjaGFuZ2Vsb2cKKyogV2VkIEFwciAxNiAyMDA4IFZpbGxl IFNreXR0w6QgPHZpbGxlLnNreXR0YSBhdCBpa2kuZmk+IC0gMS4xLjEyLTEKKy0gMS4xLjEyIChw bHVnaW4gQUJJIDEuMjEpOyBxdCwgbWt2LCBhbmQgcHVsc2VhdWRpbyBwYXRjaGVzIGFwcGxpZWQg dXBzdHJlYW0uCisKICogV2VkIEFwciAgOSAyMDA4IFZpbGxlIFNreXR0w6QgPHZpbGxlLnNreXR0 YSBhdCBpa2kuZmk+IC0gMS4xLjExLjEtMwogLSBBcHBseSB1cHN0cmVhbSBmaXhlcyBmb3IgUXVp Y2t0aW1lICgjNDQxNzA1KSBhbmQgTWF0cm9za2EgcmVncmVzc2lvbnMKICAgaW50cm9kdWNlZCBp biAxLjEuMTEuMS4KCmRpZmYgLS1naXQgYS94aW5lLXB1bHNlLXJld29yazIucGF0Y2ggYi94aW5l LXB1bHNlLXJld29yazIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdmMjll ZmIuLjAwMDAwMDAKLS0tIGEveGluZS1wdWxzZS1yZXdvcmsyLnBhdGNoCisrKyAvZGV2L251bGwK QEAgLTEsMTAzOSArMCwwIEBACi0tLS0geGluZS1saWItMS4xLjExLjEvc3JjL2F1ZGlvX291dC9h dWRpb19wdWxzZV9vdXQuYwkyMDA4LTAzLTI4IDE1OjI0OjQ5LjAwMDAwMDAwMCArMDEwMAotKysr IHhpbmUtbGliLTEuMS4xMS4xLmxlbm5hcnQvc3JjL2F1ZGlvX291dC9hdWRpb19wdWxzZV9vdXQu YwkyMDA4LTA0LTAyIDIyOjU1OjQ5LjAwMDAwMDAwMCArMDIwMAotQEAgLTEsMjggKzEsMjggQEAK LS0vKiAKLS0gKiBDb3B5cmlnaHQgKEMpIDIwMDAtMjAwNyB0aGUgeGluZSBwcm9qZWN0Ci0tICog Ci0rLyogLSotIE1vZGU6IEM7IGMtYmFzaWMtb2Zmc2V0OiAyOyBpbmRlbnQtdGFicy1tb2RlOiBu aWwgLSotICovCi0rCi0rLyoKLSsgKiBDb3B5cmlnaHQgKEMpIDIwMDAtMjAwOCB0aGUgeGluZSBw cm9qZWN0Ci0rICoKLSAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB4aW5lLCBhIGZyZWUgdmlkZW8g cGxheWVyLgotLSAqIAotKyAqCi0gICogeGluZSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0gICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSAgKiB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv cgotICAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0tICogCi0rICoKLSAg KiB4aW5lIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws Ci0gICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKLSAgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCi0gICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KLS0gKiAKLSsgKgotICAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICogYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAgKiBGb3Vu ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1B IDAyMTEwLCBVU0EKLSAgKgotLSAqIGFvIHBsdWdpbiBmb3IgcHVsc2VhdWRpbyAocmVuYW1lIG9m IHBvbHlwYXVkaW8pOgotKyAqIGFvIHBsdWdpbiBmb3IgUHVsc2VBdWRpbzoKLSAgKiBodHRwOi8v MHBvaW50ZXIuZGUvbGVubmFydC9wcm9qZWN0cy9wdWxzYXVkaW8vCi0gICoKLS0gKiBvcmlnaW5h bGx5IHdyaXR0ZW4gZm9yIHBvbHlwYXVkaW8gc2ltcGxlIGFwaS4gTGVubmFydCB0aGVuIHN1Z2dl c3RlZAotLSAqIHVzaW5nIHRoZSBhc3luYyBhcGkgZm9yIGJldHRlciBjb250cm9sIChzdWNoIGFz IHZvbHVtZSksIHRoZXJlZm9yZSwgYSBsb3QKLS0gKiBvZiB0aGlzIGNvZGUgY29tZXMgZnJvbSBM ZW5uYXJ0J3MgcGF0Y2ggdG8gbXBsYXllci4KLSsgKiBEaWVnbyBQZXR0ZW5vLCBMZW5uYXJ0IFBv ZXR0ZXJpbmcKLSAgKi8KLSAKLSAjaWZkZWYgSEFWRV9DT05GSUdfSAotQEAgLTQ4LDE1ICs0OCw5 IEBACi0gCi0gI2RlZmluZSBHQVBfVE9MRVJBTkNFICAgICAgICBBT19NQVhfR0FQCi0gCi0tLyog Q0hFQ0tNRTogc2hvdWxkIHRoaXMgYmUgY29uZGl0aW9uYWwgb24gYXV0b3Rvb2xzPyAqLwotLWV4 dGVybiBjb25zdCBjaGFyICpfX3Byb2duYW1lOwotLQotIHR5cGVkZWYgc3RydWN0IHsKLSAgIGF1 ZGlvX2RyaXZlcl9jbGFzc190ICBkcml2ZXJfY2xhc3M7Ci0gICB4aW5lX3QgICAgICAgICAgICAg ICAgICAgICAgKnhpbmU7Ci0tCi0tICBzdHJ1Y3QgcGFfY29udGV4dCAgICAgICAgICAgKmNvbnRl eHQ7ICAgLyo8IFB1bHNlYXVkaW8gY29ubmVjdGlvbiBjb250ZXh0ICovCi0tICBzdHJ1Y3QgcGFf dGhyZWFkZWRfbWFpbmxvb3AgKm1haW5sb29wOyAgLyo8IE1haW4gZXZlbnQgbG9vcCBvYmplY3Qg Ki8KLSB9IHB1bHNlX2NsYXNzX3Q7Ci0gCi0gdHlwZWRlZiBzdHJ1Y3QgcHVsc2VfZHJpdmVyX3Mg ewotQEAgLTY3LDExICs2MSwxMyBAQCB0eXBlZGVmIHN0cnVjdCBwdWxzZV9kcml2ZXJfcyB7Ci0g Ci0gICBjaGFyICAgICAgICAgICAgICpob3N0OyAgICAvKjwgVGhlIGhvc3QgdG8gY29ubmVjdCB0 byAqLwotICAgY2hhciAgICAgICAgICAgICAqc2luazsgICAgLyo8IFRoZSBzaW5rIHRvIGNvbm5l Y3QgdG8gKi8KLS0gIHN0cnVjdCBwYV9zdHJlYW0gKnN0cmVhbTsgIC8qPCBQdWxzZWF1ZGlvIHBs YXliYWNrIHN0cmVhbSBvYmplY3QgKi8KLSAKLS0gIHB0aHJlYWRfbXV0ZXhfdCAgIGluZm9fbXV0 ZXg7IC8qKjwgTXV0ZXggZm9yIGluZm8gY2FsbGJhY2sgc2lnbmFsaW5nICovCi0rICBwYV90aHJl YWRlZF9tYWlubG9vcCAqbWFpbmxvb3A7ICAvKjwgTWFpbiBldmVudCBsb29wIG9iamVjdCAqLwot KyAgcGFfY29udGV4dCAqY29udGV4dDsgICAgICAgICAgICAgLyo8IFB1bHNlYXVkaW8gY29ubmVj dGlvbiBjb250ZXh0ICovCi0rICBwYV9zdHJlYW0gICpzdHJlYW07ICAgICAgICAgICAgICAvKjwg UHVsc2VhdWRpbyBwbGF5YmFjayBzdHJlYW0gb2JqZWN0ICovCi0gCi0gICBwYV92b2x1bWVfdCAg ICAgICBzd3ZvbHVtZTsKLSsgIGludCBtdXRlZDsKLSAgIHBhX2N2b2x1bWUgICAgICAgIGN2b2x1 bWU7Ci0gCi0gICBpbnQgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXM7Ci1AQCAtODIsNjcgKzc4 LDExNyBAQCB0eXBlZGVmIHN0cnVjdCBwdWxzZV9kcml2ZXJfcyB7Ci0gICB1aW50MzJfdCAgICAg ICAgICBiaXRzX3Blcl9zYW1wbGU7Ci0gICB1aW50MzJfdCAgICAgICAgICBieXRlc19wZXJfZnJh bWU7Ci0gCi0tICB1aW50MzJfdCAgICAgICAgICBmcmFtZXNfd3JpdHRlbjsKLS0KLSB9IHB1bHNl X2RyaXZlcl90OwotIAotIAotIC8qKgotLSAqIEBicmllZiBDYWxsYmFjayBmdW5jdGlvbiBjYWxs ZWQgd2hlbiBhIHN0cmVhbSBvcGVyYXRpb24gc3VjY2VlZAotLSAqIEBwYXJhbSBzdHJlYW0gU3Ry ZWFtIHdoaWNoIG9wZXJhdGlvbiBoYXMgc3VjY2VlZGVkCi0tICogQHBhcmFtIHN1Y2Nlc3MgVGhl IHN1Y2Nlc3MgdmFsdWUgZm9yIHRoZSBvcGVyYXRpb24gKGlnbm9yZWQpCi0tICogQHBhcmFtIHRo aXNfR2VuIHB1bHNlX2RyaXZlcl90IHBvaW50ZXIgZm9yIHRoZSBQdWxzZUF1ZGlvIG91dHB1dAot LSAqICAgICAgICBpbnN0YW5jZS4KLSsgKiBAYnJpZWYgQ2FsbGJhY2sgZnVuY3Rpb24gY2FsbGVk IHdoZW4gdGhlIHN0YXRlIG9mIHRoZSBjb250ZXh0IGlzIGNoYW5nZWQKLSsgKiBAcGFyYW0gYyBD b250ZXh0IHdoaWNoIGNoYW5nZWQgc3RhdHVzCi0rICogQHBhcmFtIHRoaXNfZ2VuIHB1bHNlX2Ns YXNzX3QgcG9pbnRlciBmb3IgdGhlIFB1bHNlQXVkaW8gb3V0cHV0IGNsYXNzCi0gICovCi0tc3Rh dGljIHZvaWQgX194aW5lX3BhX3N0cmVhbV9zdWNjZXNzX2NhbGxiYWNrKHBhX3N0cmVhbSAqY29u c3Qgc3RyZWFtLCBjb25zdCBpbnQgc3VjY2VzcywKLS0JCQkJCSAgICAgIHZvaWQgKmNvbnN0IG11 dGV4X2dlbikKLStzdGF0aWMgdm9pZCBfX3hpbmVfcGFfY29udGV4dF9zdGF0ZV9jYWxsYmFjayhw YV9jb250ZXh0ICpjLCB2b2lkICp0aGlzX2dlbikKLSB7Ci0tICBwdGhyZWFkX211dGV4X3QgKmNv bnN0IGNvbXBsZXRpb25fbXV0ZXggPSAocHRocmVhZF9tdXRleF90KiltdXRleF9nZW47Ci0rICBw dWxzZV9kcml2ZXJfdCAqIHRoaXMgPSAocHVsc2VfZHJpdmVyX3QqKSB0aGlzX2dlbjsKLSsKLSsg IHN3aXRjaCAocGFfY29udGV4dF9nZXRfc3RhdGUoYykpIHsKLSsKLSsgICAgY2FzZSBQQV9DT05U RVhUX1JFQURZOgotKyAgICBjYXNlIFBBX0NPTlRFWFRfVEVSTUlOQVRFRDoKLSsgICAgY2FzZSBQ QV9DT05URVhUX0ZBSUxFRDoKLSsgICAgICBwYV90aHJlYWRlZF9tYWlubG9vcF9zaWduYWwodGhp cy0+bWFpbmxvb3AsIDApOwotKyAgICAgIGJyZWFrOwotIAotLSAgcHRocmVhZF9tdXRleF91bmxv Y2soY29tcGxldGlvbl9tdXRleCk7Ci0rICAgIGNhc2UgUEFfQ09OVEVYVF9DT05ORUNUSU5HOgot KyAgICBjYXNlIFBBX0NPTlRFWFRfVU5DT05ORUNURUQ6Ci0rICAgIGNhc2UgUEFfQ09OVEVYVF9B VVRIT1JJWklORzoKLSsgICAgY2FzZSBQQV9DT05URVhUX1NFVFRJTkdfTkFNRToKLSsgICAgICBi cmVhazsKLSsgIH0KLSB9Ci0gCi0gLyoqCi0tICogQGJyaWVmIENhbGxiYWNrIGZ1bmN0aW9uIGNh bGxlZCB3aGVuIHRoZSBzdGF0ZSBvZiB0aGUgY29udGV4dCBpcyBjaGFuZ2VkCi0tICogQHBhcmFt IGN0eCBDb250ZXh0IHdoaWNoIG9wZXJhdGlvbiBoYXMgc3VjY2VlZGVkCi0rICogQGJyaWVmIENh bGxiYWNrIGZ1bmN0aW9uIGNhbGxlZCB3aGVuIHRoZSBzdGF0ZSBvZiB0aGUgc3RyZWFtIGlzIGNo YW5nZWQKLSsgKiBAcGFyYW0gcyBTdHJlYW0gdGhhdCBjaGFuZ2VkIHN0YXR1cwotICAqIEBwYXJh bSB0aGlzX2dlbiBwdWxzZV9kcml2ZXJfdCBwb2ludGVyIGZvciB0aGUgUHVsc2VBdWRpbyBvdXRw dXQKLSAgKiAgICAgICAgaW5zdGFuY2UuCi0gICovCi0tc3RhdGljIHZvaWQgX194aW5lX3BhX2Nv bnRleHRfc3RhdHVzX2NhbGxiYWNrKHBhX2NvbnRleHQgKmNvbnN0IGN0eCwgdm9pZCAqY29uc3Qg dGhpc19nZW4pCi0rc3RhdGljIHZvaWQgX194aW5lX3BhX3N0cmVhbV9zdGF0ZV9jYWxsYmFjayhw YV9zdHJlYW0gKnMsIHZvaWQgKnRoaXNfZ2VuKQotIHsKLS0gIHB1bHNlX2RyaXZlcl90ICpjb25z dCB0aGlzID0gKHB1bHNlX2RyaXZlcl90Kil0aGlzX2dlbjsKLSsgIHB1bHNlX2RyaXZlcl90ICog dGhpcyA9IChwdWxzZV9kcml2ZXJfdCopIHRoaXNfZ2VuOwotKwotKyAgc3dpdGNoIChwYV9zdHJl YW1fZ2V0X3N0YXRlKHMpKSB7Ci0rCi0rICAgIGNhc2UgUEFfU1RSRUFNX1JFQURZOgotKyAgICBj YXNlIFBBX1NUUkVBTV9URVJNSU5BVEVEOgotKyAgICBjYXNlIFBBX1NUUkVBTV9GQUlMRUQ6Ci0r ICAgICAgcGFfdGhyZWFkZWRfbWFpbmxvb3Bfc2lnbmFsKHRoaXMtPm1haW5sb29wLCAwKTsKLSsg ICAgICBicmVhazsKLSAKLS0gIHN3aXRjaCAocGFfY29udGV4dF9nZXRfc3RhdGUoY3R4KSkgewot LSAgY2FzZSBQQV9DT05URVhUX1JFQURZOgotLSAgY2FzZSBQQV9DT05URVhUX1RFUk1JTkFURUQ6 Ci0tICBjYXNlIFBBX0NPTlRFWFRfRkFJTEVEOgotLSAgICBwYV90aHJlYWRlZF9tYWlubG9vcF9z aWduYWwodGhpcy0+cGFfY2xhc3MtPm1haW5sb29wLCAwKTsKLS0gICAgYnJlYWs7Ci0tCi0tICBj YXNlIFBBX0NPTlRFWFRfQ09OTkVDVElORzoKLS0gIGNhc2UgUEFfQ09OVEVYVF9VTkNPTk5FQ1RF RDoKLS0gIGNhc2UgUEFfQ09OVEVYVF9BVVRIT1JJWklORzoKLS0gIGNhc2UgUEFfQ09OVEVYVF9T RVRUSU5HX05BTUU6Ci0tICAgIGJyZWFrOwotKyAgICBjYXNlIFBBX1NUUkVBTV9VTkNPTk5FQ1RF RDoKLSsgICAgY2FzZSBQQV9TVFJFQU1fQ1JFQVRJTkc6Ci0rICAgICAgYnJlYWs7Ci0gICB9Ci0g fQotIAotIC8qKgotLSAqIEBicmllZiBDYWxsYmFjayBmdW5jdGlvbiBjYWxsZWQgd2hlbiBhIGNv bnRleHQgb3BlcmF0aW9uIHN1Y2NlZWQKLSsgKiBAYnJpZWYgQ2FsbGJhY2sgZnVuY3Rpb24gY2Fs bGVkIHdoZW4gUEEgYXNrcyBmb3IgbW9yZSBhdWRpbyBkYXRhLgotKyAqIEBwYXJhbSBzIFN0cmVh bSBvbiB3aGljaCBkYXRhIGlzIHJlcXVlc3RlZAotKyAqIEBwYXJhbSBuYnl0ZXMgdGhlIG51bWJl ciBvZiBieXRlcyBQQSByZXF1ZXN0ZWQKLSsgKiBAcGFyYW0gdGhpc19nZW4gcHVsc2VfZHJpdmVy X3QgcG9pbnRlciBmb3IgdGhlIFB1bHNlQXVkaW8gb3V0cHV0Ci0rICogICAgICAgIGluc3RhbmNl LgotKyAqLwotK3N0YXRpYyB2b2lkIF9feGluZV9wYV9zdHJlYW1fcmVxdWVzdF9jYWxsYmFjayhw YV9zdHJlYW0gKnMsIHNpemVfdCBuYnl0ZXMsIHZvaWQgKnRoaXNfZ2VuKQotK3sKLSsgIHB1bHNl X2RyaXZlcl90ICogdGhpcyA9IChwdWxzZV9kcml2ZXJfdCopIHRoaXNfZ2VuOwotKwotKyAgcGFf dGhyZWFkZWRfbWFpbmxvb3Bfc2lnbmFsKHRoaXMtPm1haW5sb29wLCAwKTsKLSt9Ci0rCi0rLyoq Ci0rICogQGJyaWVmIENhbGxiYWNrIGZ1bmN0aW9uIGNhbGxlZCB3aGVuIFBBIG5vdGlmaWVzIGFi b3V0IHNvbWV0aGluZwotKyAqIEBwYXJhbSBzIFN0cmVhbSBvbiB3aGljaCB0aGUgbm90aWZpY2F0 aW9uIGhhcHBlbmVkCi0rICogQHBhcmFtIHRoaXNfZ2VuIHB1bHNlX2RyaXZlcl90IHBvaW50ZXIg Zm9yIHRoZSBQdWxzZUF1ZGlvIG91dHB1dAotKyAqICAgICAgICBpbnN0YW5jZS4KLSsgKi8KLStz dGF0aWMgdm9pZCBfX3hpbmVfcGFfc3RyZWFtX25vdGlmeV9jYWxsYmFjayhwYV9zdHJlYW0gKnMs IHZvaWQgKnRoaXNfZ2VuKQotK3sKLSsgIHB1bHNlX2RyaXZlcl90ICogdGhpcyA9IChwdWxzZV9k cml2ZXJfdCopIHRoaXNfZ2VuOwotKwotKyAgcGFfdGhyZWFkZWRfbWFpbmxvb3Bfc2lnbmFsKHRo aXMtPm1haW5sb29wLCAwKTsKLSt9Ci0rCi0rLyoqCi0rICogQGJyaWVmIENhbGxiYWNrIGZ1bmN0 aW9uIGNhbGxlZCB3aGVuIFBBIGNvbXBsZXRlZCBhbiBvcGVyYXRpb24KLSAgKiBAcGFyYW0gY3R4 IENvbnRleHQgd2hpY2ggb3BlcmF0aW9uIGhhcyBzdWNjZWVkZWQKLS0gKiBAcGFyYW0gc3VjY2Vz cyBUaGUgc3VjY2VzcyB2YWx1ZSBmb3IgdGhlIG9wZXJhdGlvbiAoaWdub3JlZCkKLSsgKiBAcGFy YW0gbmJ5dGVzIHRoZSBudW1iZXIgb2YgYnl0ZXMgUEEgcmVxdWVzdGVkCi0gICogQHBhcmFtIHRo aXNfZ2VuIHB1bHNlX2RyaXZlcl90IHBvaW50ZXIgZm9yIHRoZSBQdWxzZUF1ZGlvIG91dHB1dAot ICAqICAgICAgICBpbnN0YW5jZS4KLSAgKi8KLS1zdGF0aWMgdm9pZCBfX3hpbmVfcGFfY29udGV4 dF9zdWNjZXNzX2NhbGxiYWNrKHBhX2NvbnRleHQgKmNvbnN0IGN0eCwgY29uc3QgaW50IHN1Y2Nl c3MsCi0tCQkJCQkgICAgICB2b2lkICpjb25zdCB0aGlzX2dlbikKLStzdGF0aWMgdm9pZCBfX3hp bmVfcGFfc3RyZWFtX3N1Y2Nlc3NfY2FsbGJhY2socGFfc3RyZWFtICpzLCBpbnQgc3VjY2Vzcywg dm9pZCAqdGhpc19nZW4pCi0gewotLSAgcHVsc2VfZHJpdmVyX3QgKmNvbnN0IHRoaXMgPSAocHVs c2VfZHJpdmVyX3QqKXRoaXNfZ2VuOwotKyAgcHVsc2VfZHJpdmVyX3QgKiB0aGlzID0gKHB1bHNl X2RyaXZlcl90KikgdGhpc19nZW47Ci0gCi0tICBfeF9hc3NlcnQoY3R4KTsgX3hfYXNzZXJ0KHRo aXMpOwotLSAgX3hfYXNzZXJ0KGN0eCA9PSB0aGlzLT5wYV9jbGFzcy0+Y29udGV4dCk7Ci0rICBp ZiAoIXN1Y2Nlc3MpCi0rICAgIHhwcmludGYgKHRoaXMtPnhpbmUsIFhJTkVfVkVSQk9TSVRZX0RF QlVHLCAiYXVkaW9fcHVsc2Vfb3V0OiBzdHJlYW0gb3BlcmF0aW9uIGZhaWxlZDogJXNcbiIsIHBh X3N0cmVycm9yKHBhX2NvbnRleHRfZXJybm8odGhpcy0+Y29udGV4dCkpKTsKLSAKLS0gIHBhX3Ro cmVhZGVkX21haW5sb29wX3NpZ25hbCh0aGlzLT5wYV9jbGFzcy0+bWFpbmxvb3AsIDApOwotKyAg cGFfdGhyZWFkZWRfbWFpbmxvb3Bfc2lnbmFsKHRoaXMtPm1haW5sb29wLCAwKTsKLSt9Ci0rCi0r LyoqCi0rICogQGJyaWVmIENhbGxiYWNrIGZ1bmN0aW9uIGNhbGxlZCB3aGVuIFBBIGNvbXBsZXRl ZCBhbiBvcGVyYXRpb24KLSsgKiBAcGFyYW0gYyBDb250ZXh0IG9uIHdoaWNoIG9wZXJhdGlvbiBo YXMgc3VjY2VlZGVkCi0rICogQHBhcmFtIG5ieXRlcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIFBBIHJl cXVlc3RlZAotKyAqIEBwYXJhbSB0aGlzX2dlbiBwdWxzZV9kcml2ZXJfdCBwb2ludGVyIGZvciB0 aGUgUHVsc2VBdWRpbyBvdXRwdXQKLSsgKiAgICAgICAgaW5zdGFuY2UuCi0rICovCi0rc3RhdGlj IHZvaWQgX194aW5lX3BhX2NvbnRleHRfc3VjY2Vzc19jYWxsYmFjayhwYV9jb250ZXh0ICpjLCBp bnQgc3VjY2Vzcywgdm9pZCAqdGhpc19nZW4pCi0rewotKyAgcHVsc2VfZHJpdmVyX3QgKnRoaXMg PSAocHVsc2VfZHJpdmVyX3QqKSB0aGlzX2dlbjsKLSsKLSsgIGlmICghc3VjY2VzcykKLSsgICAg eHByaW50ZiAodGhpcy0+eGluZSwgWElORV9WRVJCT1NJVFlfREVCVUcsICJhdWRpb19wdWxzZV9v dXQ6IGNvbnRleHQgb3BlcmF0aW9uIGZhaWxlZDogJXNcbiIsIHBhX3N0cmVycm9yKHBhX2NvbnRl eHRfZXJybm8odGhpcy0+Y29udGV4dCkpKTsKLSsKLSsgIHBhX3RocmVhZGVkX21haW5sb29wX3Np Z25hbCh0aGlzLT5tYWlubG9vcCwgMCk7Ci0gfQotIAotIC8qKgotQEAgLTE1NiwxNCArMjAyLDE0 IEBAIHN0YXRpYyB2b2lkIF9feGluZV9wYV9jb250ZXh0X3N1Y2Nlc3NfY2EKLSAgKiBUaGlzIGZ1 bmN0aW9uIHNhdmVzIHRoZSB2b2x1bWUgZmllbGQgb2YgdGhlIHBhc3NlZCBzdHJ1Y3R1cmUgdG8g dGhlCi0gICogQGMgY3ZvbHVtZSB2YXJpYWJsZSBvZiB0aGUgb3V0cHV0IGluc3RhbmNlLgotICAq LwotLXN0YXRpYyB2b2lkIF9feGluZV9wYV9zaW5rX2luZm9fY2FsbGJhY2socGFfY29udGV4dCAq Y29uc3QgY3R4LCBjb25zdCBwYV9zaW5rX2lucHV0X2luZm8gKmNvbnN0IGluZm8sCi0tCQkJCQkg Y29uc3QgaW50IGlzX2xhc3QsIHZvaWQgKmNvbnN0IHVzZXJkYXRhKSB7Ci0rc3RhdGljIHZvaWQg X194aW5lX3BhX3NpbmtfaW5mb19jYWxsYmFjayhwYV9jb250ZXh0ICpjLCBjb25zdCBwYV9zaW5r X2lucHV0X2luZm8gKmluZm8sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpbnQgaXNfbGFzdCwgdm9pZCAqdXNlcmRhdGEpIHsKLSAKLSAgIHB1bHNlX2RyaXZlcl90 ICpjb25zdCB0aGlzID0gKHB1bHNlX2RyaXZlcl90ICopIHVzZXJkYXRhOwotIAotICAgaWYgKGlz X2xhc3QgPCAwKSB7Ci0gICAgIHhwcmludGYgKHRoaXMtPnhpbmUsIFhJTkVfVkVSQk9TSVRZX0RF QlVHLCAiYXVkaW9fcHVsc2Vfb3V0OiBGYWlsZWQgdG8gZ2V0IHNpbmsgaW5wdXQgaW5mbzogJXNc biIsCi0tICAgICAgICAgICAgIHBhX3N0cmVycm9yKHBhX2NvbnRleHRfZXJybm8odGhpcy0+cGFf Y2xhc3MtPmNvbnRleHQpKSk7Ci0rICAgICAgICAgICAgIHBhX3N0cmVycm9yKHBhX2NvbnRleHRf ZXJybm8odGhpcy0+Y29udGV4dCkpKTsKLSAgICAgcmV0dXJuOwotICAgfQotIAotQEAgLTE3MSwz NiArMjE3LDkwIEBAIHN0YXRpYyB2b2lkIF9feGluZV9wYV9zaW5rX2luZm9fY2FsbGJhY2sKLSAg ICAgICByZXR1cm47Ci0gCi0gICB0aGlzLT5jdm9sdW1lID0gaW5mby0+dm9sdW1lOwotKyAgdGhp cy0+c3d2b2x1bWUgPSBwYV9zd192b2x1bWVfdG9fbGluZWFyKHBhX2N2b2x1bWVfYXZnKCZpbmZv LT52b2x1bWUpKTsKLSsgIHRoaXMtPm11dGVkID0gaW5mby0+bXV0ZTsKLSt9Ci0rCi0rc3RhdGlj IGludCBjb25uZWN0X2NvbnRleHQocHVsc2VfZHJpdmVyX3QgKnRoaXMpIHsKLSsKLSsgIGlmICh0 aGlzLT5jb250ZXh0ICYmIChwYV9jb250ZXh0X2dldF9zdGF0ZSh0aGlzLT5jb250ZXh0KSA9PSBQ QV9DT05URVhUX0ZBSUxFRCB8fAotKyAgICAgICAgICAgICAgICAgICAgICAgIHBhX2NvbnRleHRf Z2V0X3N0YXRlKHRoaXMtPmNvbnRleHQpID09IFBBX0NPTlRFWFRfVEVSTUlOQVRFRCkpIHsKLSsg ICAgcGFfY29udGV4dF91bnJlZih0aGlzLT5jb250ZXh0KTsKLSsgICAgdGhpcy0+Y29udGV4dCA9 IE5VTEw7Ci0rICB9Ci0rCi0rICBpZiAoIXRoaXMtPmNvbnRleHQpIHsKLSsgICAgY2hhciBmbltQ QVRIX01BWF0sICpwOwotKwotKyAgICBpZiAocGFfZ2V0X2JpbmFyeV9uYW1lKGZuLCBzaXplb2Yo Zm4pKSkKLSsgICAgICBwID0gcGFfcGF0aF9nZXRfZmlsZW5hbWUoZm4pOwotKyAgICBlbHNlCi0r ICAgICAgcCA9ICJYaW5lIjsKLSAKLS0gIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZ0aGlzLT5pbmZv X211dGV4KTsKLSsgICAgdGhpcy0+Y29udGV4dCA9IHBhX2NvbnRleHRfbmV3KHBhX3RocmVhZGVk X21haW5sb29wX2dldF9hcGkodGhpcy0+bWFpbmxvb3ApLCBwKTsKLSsgICAgX3hfYXNzZXJ0KHRo aXMtPmNvbnRleHQpOwotKwotKyAgICBwYV9jb250ZXh0X3NldF9zdGF0ZV9jYWxsYmFjayh0aGlz LT5jb250ZXh0LCBfX3hpbmVfcGFfY29udGV4dF9zdGF0ZV9jYWxsYmFjaywgdGhpcyk7Ci0rICB9 Ci0rCi0rICBpZiAocGFfY29udGV4dF9nZXRfc3RhdGUodGhpcy0+Y29udGV4dCkgPT0gUEFfQ09O VEVYVF9VTkNPTk5FQ1RFRCkgewotKwotKyAgICBpZiAocGFfY29udGV4dF9jb25uZWN0KHRoaXMt PmNvbnRleHQsIHRoaXMtPmhvc3QsIDAsIE5VTEwpIDwgMCkgewotKyAgICAgIHhwcmludGYgKHRo aXMtPnhpbmUsIFhJTkVfVkVSQk9TSVRZX0RFQlVHLCAiYXVkaW9fcHVsc2Vfb3V0OiBmYWlsZWQg dG8gY29ubmVjdCBjb250ZXh0IG9iamVjdCAlc1xuIiwgcGFfc3RyZXJyb3IocGFfY29udGV4dF9l cnJubyh0aGlzLT5jb250ZXh0KSkpOwotKyAgICAgIHJldHVybiAtMTsKLSsgICAgfQotKyAgfQot KwotKyAgZm9yICg7OykgewotKyAgICBwYV9jb250ZXh0X3N0YXRlX3Qgc3RhdGUgPSBwYV9jb250 ZXh0X2dldF9zdGF0ZSh0aGlzLT5jb250ZXh0KTsKLSsKLSsgICAgaWYgKHN0YXRlID09IFBBX0NP TlRFWFRfRkFJTEVEIHx8IHN0YXRlID09IFBBX0NPTlRFWFRfVEVSTUlOQVRFRCkgewotKyAgICAg IHhwcmludGYgKHRoaXMtPnhpbmUsIFhJTkVfVkVSQk9TSVRZX0RFQlVHLCAiYXVkaW9fcHVsc2Vf b3V0OiBmYWlsZWQgdG8gY29ubmVjdCBjb250ZXh0IG9iamVjdDogJXNcbiIsIHBhX3N0cmVycm9y KHBhX2NvbnRleHRfZXJybm8odGhpcy0+Y29udGV4dCkpKTsKLSsgICAgICByZXR1cm4gLTE7Ci0r ICAgIH0KLSsKLSsgICAgaWYgKHN0YXRlID09IFBBX0NPTlRFWFRfUkVBRFkpCi0rICAgICAgYnJl YWs7Ci0rCi0rICAgIHBhX3RocmVhZGVkX21haW5sb29wX3dhaXQodGhpcy0+bWFpbmxvb3ApOwot KyAgfQotKwotKyAgcmV0dXJuIDA7Ci0gfQotIAotIC8qCi0gICogb3BlbiB0aGUgYXVkaW8gZGV2 aWNlIGZvciB3cml0aW5nIHRvCi0gICovCi0gc3RhdGljIGludCBhb19wdWxzZV9vcGVuKGFvX2Ry aXZlcl90ICp0aGlzX2dlbiwKLS0JCSAgIHVpbnQzMl90IGJpdHMsIHVpbnQzMl90IHJhdGUsIGlu dCBtb2RlKQotKyAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBiaXRzLCB1aW50MzJf dCByYXRlLCBpbnQgbW9kZSkKLSB7Ci0gICBwdWxzZV9kcml2ZXJfdCAqdGhpcyA9IChwdWxzZV9k cml2ZXJfdCAqKSB0aGlzX2dlbjsKLS0gIHN0cnVjdCBwYV9zYW1wbGVfc3BlYyBzczsKLS0gIHN0 cnVjdCBwYV9idWZmZXJfYXR0ciBhOwotLSAgcGFfc3RyZWFtX3N0YXRlX3Qgc3RyZWFtc3RhdGU7 Ci0rICBwYV9zYW1wbGVfc3BlYyBzczsKLSsgIHBhX2NoYW5uZWxfbWFwIGNtOwotKyAgaW50IHI7 Ci0gCi0gICB4cHJpbnRmICh0aGlzLT54aW5lLCBYSU5FX1ZFUkJPU0lUWV9ERUJVRywKLS0JICAg ImF1ZGlvX3B1bHNlX291dDogYW9fb3BlbiBiaXRzPSVkIHJhdGU9JWQsIG1vZGU9JWRcbiIsIGJp dHMsIHJhdGUsIG1vZGUpOwotKyAgICAgICAgICAgImF1ZGlvX3B1bHNlX291dDogYW9fb3BlbiBi aXRzPSVkIHJhdGU9JWQsIG1vZGU9JWRcbiIsIGJpdHMsIHJhdGUsIG1vZGUpOwotIAotICAgaWYg KCAobW9kZSAmIHRoaXMtPmNhcGFiaWxpdGllcykgPT0gMCApIHsKLSAgICAgeHByaW50ZiAodGhp cy0+eGluZSwgWElORV9WRVJCT1NJVFlfREVCVUcsICJhdWRpb19wdWxzZV9vdXQ6IHVuc3VwcG9y dGVkIG1vZGUgJTA4eFxuIiwgbW9kZSk7Ci0gICAgIHJldHVybiAwOwotICAgfQotIAotKyAgcGFf dGhyZWFkZWRfbWFpbmxvb3BfbG9jayh0aGlzLT5tYWlubG9vcCk7Ci0rCi0gICBpZiAodGhpcy0+ c3RyZWFtKSB7Ci0gCi0tICAgIGlmICggbW9kZSA9PSB0aGlzLT5tb2RlICYmIHJhdGUgPT0gdGhp cy0+c2FtcGxlX3JhdGUgJiYKLS0gICAgICAgICBiaXRzID09IHRoaXMtPmJpdHNfcGVyX3NhbXBs ZSApCi0rICAgIGlmIChtb2RlID09IHRoaXMtPm1vZGUgJiYgcmF0ZSA9PSB0aGlzLT5zYW1wbGVf cmF0ZSAmJgotKyAgICAgICAgYml0cyA9PSB0aGlzLT5iaXRzX3Blcl9zYW1wbGUpIHsKLSsKLSsg ICAgICBwYV90aHJlYWRlZF9tYWlubG9vcF91bmxvY2sodGhpcy0+bWFpbmxvb3ApOwotICAgICAg IHJldHVybiB0aGlzLT5zYW1wbGVfcmF0ZTsKLSsgICAgfQotIAotLSAgICB0aGlzX2dlbi0+Y2xv c2UodGhpc19nZW4pOwotKyAgICBwYV9zdHJlYW1fZGlzY29ubmVjdCh0aGlzLT5zdHJlYW0pOwot KyAgICBwYV9zdHJlYW1fdW5yZWYodGhpcy0+c3RyZWFtKTsKLSsgICAgdGhpcy0+c3RyZWFtID0g TlVMTDsKLSAgIH0KLSAKLSAgIHRoaXMtPm1vZGUgICAgICAgICAgICAgICAgICAgPSBtb2RlOwot QEAgLTIyMSw2ICszMjEsOCBAQCBzdGF0aWMgaW50IGFvX3B1bHNlX29wZW4oYW9fZHJpdmVyX3Qg KnRoCi0gICAgIGNhc2UgMzI6Ci0gICAgICAgc3MuZm9ybWF0ID0gUEFfU0FNUExFX0ZMT0FUMzJO RTsKLSAgICAgICBicmVhazsKLSsgICAgZGVmYXVsdDoKLSsgICAgICBfeF9hc3NlcnQoISJTaG91 bGQgbm90IGJlIHJlYWNoZWQiKTsKLSAgIH0KLSAKLSAgIGlmICghcGFfc2FtcGxlX3NwZWNfdmFs aWQoJnNzKSkgewotQEAgLTIyOCw3MCArMzMwLDg2IEBAIHN0YXRpYyBpbnQgYW9fcHVsc2Vfb3Bl bihhb19kcml2ZXJfdCAqdGgKLSAgICAgZ290byBmYWlsOwotICAgfQotIAotLSAgaWYgKCB0aGlz LT5wYV9jbGFzcy0+Y29udGV4dCAmJiBwYV9jb250ZXh0X2dldF9zdGF0ZSh0aGlzLT5wYV9jbGFz cy0+Y29udGV4dCkgPiBQQV9DT05URVhUX1JFQURZICkgewotLSAgICBwYV9jb250ZXh0X3VucmVm KHRoaXMtPnBhX2NsYXNzLT5jb250ZXh0KTsKLS0gICAgdGhpcy0+cGFfY2xhc3MtPmNvbnRleHQg PSBOVUxMOwotLSAgfQotLQotLSAgaWYgKCB0aGlzLT5wYV9jbGFzcy0+Y29udGV4dCA9PSBOVUxM ICkgewotLSAgICB0aGlzLT5wYV9jbGFzcy0+Y29udGV4dCA9IHBhX2NvbnRleHRfbmV3KHBhX3Ro cmVhZGVkX21haW5sb29wX2dldF9hcGkodGhpcy0+cGFfY2xhc3MtPm1haW5sb29wKSwKLS0JCQkJ CSAgICAgX19wcm9nbmFtZSk7Ci0tICB9Ci0tCi0tICBwYV9jb250ZXh0X3JlZih0aGlzLT5wYV9j bGFzcy0+Y29udGV4dCk7Ci0rICBjbS5jaGFubmVscyA9IHNzLmNoYW5uZWxzOwotIAotLSAgaWYg KCBwYV9jb250ZXh0X2dldF9zdGF0ZSh0aGlzLT5wYV9jbGFzcy0+Y29udGV4dCkgPT0gUEFfQ09O VEVYVF9VTkNPTk5FQ1RFRCApIHsKLS0gICAgaW50IHJldDsKLSsgIHN3aXRjaCAobW9kZSkgewot KyAgICBjYXNlIEFPX0NBUF9NT0RFX01PTk86Ci0rICAgICAgY20ubWFwWzBdID0gUEFfQ0hBTk5F TF9QT1NJVElPTl9NT05POwotKyAgICAgIF94X2Fzc2VydChjbS5jaGFubmVscyA9PSAxKTsKLSsg ICAgICBicmVhazsKLSAKLS0gICAgcGFfdGhyZWFkZWRfbWFpbmxvb3BfbG9jayh0aGlzLT5wYV9j bGFzcy0+bWFpbmxvb3ApOwotLSAgICByZXQgPSBwYV9jb250ZXh0X2Nvbm5lY3QodGhpcy0+cGFf Y2xhc3MtPmNvbnRleHQsIHRoaXMtPmhvc3QsIDEsIE5VTEwpOwotLSAgICBpZiAoIHJldCA8IDAg KQotLSAgICAgIGdvdG8gZmFpbF91bmxvY2s7Ci0rICAgIGNhc2UgQU9fQ0FQX01PREVfU1RFUkVP OgotKyAgICAgIGNtLm1hcFswXSA9IFBBX0NIQU5ORUxfUE9TSVRJT05fRlJPTlRfTEVGVDsKLSsg ICAgICBjbS5tYXBbMV0gPSBQQV9DSEFOTkVMX1BPU0lUSU9OX0ZST05UX1JJR0hUOwotKyAgICAg IF94X2Fzc2VydChjbS5jaGFubmVscyA9PSAyKTsKLSsgICAgICBicmVhazsKLSAKLS0gICAgcGFf Y29udGV4dF9zZXRfc3RhdGVfY2FsbGJhY2sodGhpcy0+cGFfY2xhc3MtPmNvbnRleHQsIF9feGlu ZV9wYV9jb250ZXh0X3N0YXR1c19jYWxsYmFjaywgdGhpcyk7Ci0rICAgIGNhc2UgQU9fQ0FQX01P REVfNENIQU5ORUw6Ci0rICAgICAgY20ubWFwWzBdID0gUEFfQ0hBTk5FTF9QT1NJVElPTl9GUk9O VF9MRUZUOwotKyAgICAgIGNtLm1hcFsxXSA9IFBBX0NIQU5ORUxfUE9TSVRJT05fRlJPTlRfUklH SFQ7Ci0rICAgICAgY20ubWFwWzJdID0gUEFfQ0hBTk5FTF9QT1NJVElPTl9SRUFSX0xFRlQ7Ci0r ICAgICAgY20ubWFwWzNdID0gUEFfQ0hBTk5FTF9QT1NJVElPTl9SRUFSX1JJR0hUOwotKyAgICAg IF94X2Fzc2VydChjbS5jaGFubmVscyA9PSA0KTsKLSsgICAgICBicmVhazsKLSAKLS0gICAgcGFf dGhyZWFkZWRfbWFpbmxvb3Bfd2FpdCh0aGlzLT5wYV9jbGFzcy0+bWFpbmxvb3ApOwotLSAgICBw YV90aHJlYWRlZF9tYWlubG9vcF91bmxvY2sodGhpcy0+cGFfY2xhc3MtPm1haW5sb29wKTsKLSsg ICAgY2FzZSBBT19DQVBfTU9ERV80XzFDSEFOTkVMOgotKyAgICBjYXNlIEFPX0NBUF9NT0RFXzVD SEFOTkVMOgotKyAgICBjYXNlIEFPX0NBUF9NT0RFXzVfMUNIQU5ORUw6Ci0rICAgICAgY20ubWFw WzBdID0gUEFfQ0hBTk5FTF9QT1NJVElPTl9GUk9OVF9MRUZUOwotKyAgICAgIGNtLm1hcFsxXSA9 IFBBX0NIQU5ORUxfUE9TSVRJT05fRlJPTlRfUklHSFQ7Ci0rICAgICAgY20ubWFwWzJdID0gUEFf Q0hBTk5FTF9QT1NJVElPTl9SRUFSX0xFRlQ7Ci0rICAgICAgY20ubWFwWzNdID0gUEFfQ0hBTk5F TF9QT1NJVElPTl9SRUFSX1JJR0hUOwotKyAgICAgIGNtLm1hcFs0XSA9IFBBX0NIQU5ORUxfUE9T SVRJT05fRlJPTlRfQ0VOVEVSOwotKyAgICAgIGNtLm1hcFs1XSA9IFBBX0NIQU5ORUxfUE9TSVRJ T05fTEZFOwotKyAgICAgIGNtLmNoYW5uZWxzID0gNjsKLSsgICAgICBicmVhazsKLSsgICAgZGVm YXVsdDoKLSsgICAgICBfeF9hc3NlcnQoISJTaG91bGQgbm90IGJlIHJlYWNoZWQiKTsKLSAgIH0K LSAKLS0gIGlmIChwYV9jb250ZXh0X2dldF9zdGF0ZSh0aGlzLT5wYV9jbGFzcy0+Y29udGV4dCkg IT0gUEFfQ09OVEVYVF9SRUFEWSkgewotLSAgICB4cHJpbnRmICh0aGlzLT54aW5lLCBYSU5FX1ZF UkJPU0lUWV9ERUJVRywgImF1ZGlvX3B1bHNlX291dDogRmFpbGVkIHRvIGNvbm5lY3QgdG8gc2Vy dmVyOiAlc1xuIiwKLS0JICAgICBwYV9zdHJlcnJvcihwYV9jb250ZXh0X2Vycm5vKHRoaXMtPnBh X2NsYXNzLT5jb250ZXh0KSkpOwotKyAgaWYgKCFwYV9jaGFubmVsX21hcF92YWxpZCgmY20pKSB7 Ci0rICAgIHhwcmludGYgKHRoaXMtPnhpbmUsIFhJTkVfVkVSQk9TSVRZX0RFQlVHLCAiYXVkaW9f cHVsc2Vfb3V0OiBJbnZhbGlkIGNoYW5uZWwgbWFwXG4iKTsKLSAgICAgZ290byBmYWlsOwotICAg fQotIAotLSAgdGhpcy0+c3RyZWFtID0gcGFfc3RyZWFtX25ldyh0aGlzLT5wYV9jbGFzcy0+Y29u dGV4dCwgImF1ZGlvIHN0cmVhbSIsICZzcywgTlVMTCk7Ci0rICBpZiAoY29ubmVjdF9jb250ZXh0 KHRoaXMpIDwgMCkKLSsgICAgZ290byBmYWlsOwotKwotKyAgX3hfYXNzZXJ0KCF0aGlzLT5zdHJl YW0pOwotKyAgdGhpcy0+c3RyZWFtID0gcGFfc3RyZWFtX25ldyh0aGlzLT5jb250ZXh0LCAiQXVk aW8gU3RyZWFtIiwgJnNzLCAmY20pOwotICAgX3hfYXNzZXJ0KHRoaXMtPnN0cmVhbSk7Ci0gCi0t ICBhLm1heGxlbmd0aCA9IHBhX2J5dGVzX3Blcl9zZWNvbmQoJnNzKSoxOwotLSAgYS50bGVuZ3Ro ID0gYS5tYXhsZW5ndGgqOS8xMDsKLS0gIGEucHJlYnVmID0gYS50bGVuZ3RoLzI7Ci0tICBhLm1p bnJlcSA9IGEudGxlbmd0aC8xMDsKLSsgIHBhX3N0cmVhbV9zZXRfc3RhdGVfY2FsbGJhY2sodGhp cy0+c3RyZWFtLCBfX3hpbmVfcGFfc3RyZWFtX3N0YXRlX2NhbGxiYWNrLCB0aGlzKTsKLSsgIHBh X3N0cmVhbV9zZXRfd3JpdGVfY2FsbGJhY2sodGhpcy0+c3RyZWFtLCBfX3hpbmVfcGFfc3RyZWFt X3JlcXVlc3RfY2FsbGJhY2ssIHRoaXMpOwotKyAgcGFfc3RyZWFtX3NldF9sYXRlbmN5X3VwZGF0 ZV9jYWxsYmFjayh0aGlzLT5zdHJlYW0sIF9feGluZV9wYV9zdHJlYW1fbm90aWZ5X2NhbGxiYWNr LCB0aGlzKTsKLSAKLS0gIHBhX3N0cmVhbV9jb25uZWN0X3BsYXliYWNrKHRoaXMtPnN0cmVhbSwg dGhpcy0+c2luaywgJmEsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQV9TVFJFQU1f SU5URVJQT0xBVEVfVElNSU5HfFBBX1NUUkVBTV9BVVRPX1RJTUlOR19VUERBVEUsIAotKyAgciA9 IHBhX3N0cmVhbV9jb25uZWN0X3BsYXliYWNrKHRoaXMtPnN0cmVhbSwgdGhpcy0+c2luaywgTlVM TCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBX1NUUkVBTV9JTlRFUlBPTEFURV9U SU1JTkd8UEFfU1RSRUFNX0FVVE9fVElNSU5HX1VQREFURSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE5VTEwsIE5VTEwpOwotIAotLSAgZG8gewotLSAgICB4aW5lX3VzZWNfc2xlZXAg KDEwMCk7Ci0rICBmb3IgKDs7KSB7Ci0rICAgIHBhX2NvbnRleHRfc3RhdGVfdCBjc3RhdGUgPSBw YV9jb250ZXh0X2dldF9zdGF0ZSh0aGlzLT5jb250ZXh0KTsKLSsgICAgcGFfc3RyZWFtX3N0YXRl X3Qgc3N0YXRlID0gcGFfc3RyZWFtX2dldF9zdGF0ZSh0aGlzLT5zdHJlYW0pOwotKwotKyAgICBp ZiAoY3N0YXRlID09IFBBX0NPTlRFWFRfRkFJTEVEIHx8IGNzdGF0ZSA9PSBQQV9DT05URVhUX1RF Uk1JTkFURUQgfHwKLSsgICAgICAgIHNzdGF0ZSA9PSBQQV9TVFJFQU1fRkFJTEVEIHx8IHNzdGF0 ZSA9PSBQQV9TVFJFQU1fVEVSTUlOQVRFRCkgewotKyAgICAgIHhwcmludGYgKHRoaXMtPnhpbmUs IFhJTkVfVkVSQk9TSVRZX0RFQlVHLCAiYXVkaW9fcHVsc2Vfb3V0OiBmYWlsZWQgdG8gY29ubmVj dCBjb250ZXh0IG9iamVjdDogJXNcbiIsIHBhX3N0cmVycm9yKHBhX2NvbnRleHRfZXJybm8odGhp cy0+Y29udGV4dCkpKTsKLSsgICAgICBnb3RvIGZhaWw7Ci0rICAgIH0KLSAKLS0gICAgc3RyZWFt c3RhdGUgPSBwYV9zdHJlYW1fZ2V0X3N0YXRlKHRoaXMtPnN0cmVhbSk7Ci0tICB9IHdoaWxlIChz dHJlYW1zdGF0ZSA8IFBBX1NUUkVBTV9SRUFEWSk7Ci0tICAgICAKLS0gIGlmIChzdHJlYW1zdGF0 ZSAhPSBQQV9TVFJFQU1fUkVBRFkpIHsKLS0gICAgeHByaW50ZiAodGhpcy0+eGluZSwgWElORV9W RVJCT1NJVFlfTE9HLCAiYXVkaW9fcHVsc2Vfb3V0OiBGYWlsZWQgdG8gY29ubmVjdCB0byBzZXJ2 ZXI6ICVzXG4iLAotLSAgICAgICAgICAgICBwYV9zdHJlcnJvcihwYV9jb250ZXh0X2Vycm5vKHRo aXMtPnBhX2NsYXNzLT5jb250ZXh0KSkpOwotLSAgICBnb3RvIGZhaWw7Ci0rICAgIGlmIChzc3Rh dGUgPT0gUEFfU1RSRUFNX1JFQURZKQotKyAgICAgIGJyZWFrOwotKwotKyAgICBwYV90aHJlYWRl ZF9tYWlubG9vcF93YWl0KHRoaXMtPm1haW5sb29wKTsKLSAgIH0KLS0gIHRoaXMtPmZyYW1lc193 cml0dGVuID0gMDsKLSAKLS0gIHRoaXMtPmFvX2RyaXZlci5zZXRfcHJvcGVydHkodGhpcywgQU9f UFJPUF9QQ01fVk9MLCAxMDApOwotKyAgcGFfdGhyZWFkZWRfbWFpbmxvb3BfdW5sb2NrKHRoaXMt Pm1haW5sb29wKTsKLSAKLSAgIHJldHVybiB0aGlzLT5zYW1wbGVfcmF0ZTsKLSAKLS0gZmFpbF91 bmxvY2s6Ci0tICBwYV90aHJlYWRlZF9tYWlubG9vcF91bmxvY2sodGhpcy0+cGFfY2xhc3MtPm1h aW5sb29wKTsKLSAgZmFpbDoKLSsKLSsgIHBhX3RocmVhZGVkX21haW5sb29wX3VubG9jayh0aGlz LT5tYWlubG9vcCk7Ci0gICB0aGlzX2dlbi0+Y2xvc2UodGhpc19nZW4pOwotICAgcmV0dXJuIDA7 Ci0gfQotQEAgLTMxOSwyMTcgKzQzNywzNDggQEAgc3RhdGljIGludCBhb19wdWxzZV93cml0ZShh b19kcml2ZXJfdCAqdAotIHsKLSAgIHB1bHNlX2RyaXZlcl90ICp0aGlzID0gKHB1bHNlX2RyaXZl cl90ICopIHRoaXNfZ2VuOwotICAgc2l6ZV90IHNpemUgPSBudW1fZnJhbWVzICogdGhpcy0+Ynl0 ZXNfcGVyX2ZyYW1lOwotLSAgaW50IHJldCA9IDA7Ci0tICAKLS0gIGlmICggIXRoaXMtPnN0cmVh bSB8fCAhdGhpcy0+cGFfY2xhc3MtPmNvbnRleHQpCi0tICAgIHJldHVybiAtMTsKLS0KLS0gIHN3 aXRjaCggcGFfc3RyZWFtX2dldF9zdGF0ZSh0aGlzLT5zdHJlYW0pICkgewotLSAgY2FzZSBQQV9T VFJFQU1fUkVBRFk6Ci0tICAgIHdoaWxlIChzaXplID4gMCkgewotLSAgICAgIHNpemVfdCBsOwot KyAgaW50IHJldCA9IC0xOwotKyAgc2l6ZV90IGRvbmUgPSAwOwotIAotLSAgICAgIHdoaWxlICgh KGwgPSBwYV9zdHJlYW1fd3JpdGFibGVfc2l6ZSh0aGlzLT5zdHJlYW0pKSkgewotLSAgICAgICAg eGluZV91c2VjX3NsZWVwICgxMDAwMCk7Ci0tICAgICAgfQotKyAgcGFfdGhyZWFkZWRfbWFpbmxv b3BfbG9jayh0aGlzLT5tYWlubG9vcCk7Ci0gCi0tICAgICAgaWYgKGwgPiBzaXplKQotLSAgICAg ICAgbCA9IHNpemU7Ci0tICAgICAgICAKLS0gICAgICBwYV9zdHJlYW1fd3JpdGUodGhpcy0+c3Ry ZWFtLCBkYXRhLCBsLCBOVUxMLCAwLCBQQV9TRUVLX1JFTEFUSVZFKTsKLS0gICAgICBkYXRhID0g KGludDE2X3QgKikgKCh1aW50OF90KikgZGF0YSArIGwpOwotLSAgICAgIHNpemUgLT0gbDsKLS0g ICAgfQotKyAgd2hpbGUgKHNpemUgPiAwKSB7Ci0rICAgIHNpemVfdCBsOwotIAotLSAgICB0aGlz LT5mcmFtZXNfd3JpdHRlbiArPSBudW1fZnJhbWVzOwotKyAgICBmb3IgKDs7KSB7Ci0gCi0tICAg IGlmIChwYV9zdHJlYW1fZ2V0X3N0YXRlKHRoaXMtPnN0cmVhbSkgPT0gUEFfU1RSRUFNX1JFQURZ KQotLSAgICAgIHJldCA9IDE7Ci0rICAgICAgaWYgKCF0aGlzLT5zdHJlYW0gfHwKLSsgICAgICAg ICAgIXRoaXMtPmNvbnRleHQgfHwKLSsgICAgICAgICAgcGFfY29udGV4dF9nZXRfc3RhdGUodGhp cy0+Y29udGV4dCkgIT0gUEFfQ09OVEVYVF9SRUFEWSB8fAotKyAgICAgICAgICBwYV9zdHJlYW1f Z2V0X3N0YXRlKHRoaXMtPnN0cmVhbSkgIT0gUEFfU1RSRUFNX1JFQURZKQotKyAgICAgICAgZ290 byBmaW5pc2g7Ci0gCi0tICAgIGJyZWFrOwotKyAgICAgIGlmICgobCA9IHBhX3N0cmVhbV93cml0 YWJsZV9zaXplKHRoaXMtPnN0cmVhbSkpID09IChzaXplX3QpIC0xKQotKyAgICAgICAgZ290byBm aW5pc2g7Ci0rCi0rICAgICAgaWYgKGwgPiAwKQotKyAgICAgICAgYnJlYWs7Ci0rCi0rICAgICAg cGFfdGhyZWFkZWRfbWFpbmxvb3Bfd2FpdCh0aGlzLT5tYWlubG9vcCk7Ci0rICAgIH0KLSsKLSsg ICAgaWYgKGwgPiBzaXplKQotKyAgICAgIGwgPSBzaXplOwotKwotKyAgICBwYV9zdHJlYW1fd3Jp dGUodGhpcy0+c3RyZWFtLCBkYXRhLCBsLCBOVUxMLCAwLCBQQV9TRUVLX1JFTEFUSVZFKTsKLSsg ICAgZGF0YSA9IChpbnQxNl90ICopICgodWludDhfdCopIGRhdGEgKyBsKTsKLSsgICAgc2l6ZSAt PSBsOwotKyAgICBkb25lICs9IGw7Ci0gICB9Ci0gCi0rICByZXQgPSBkb25lOwotKwotK2Zpbmlz aDoKLSsKLSsgIHBhX3RocmVhZGVkX21haW5sb29wX3VubG9jayh0aGlzLT5tYWlubG9vcCk7Ci0r Ci0rLyogICBmcHJpbnRmKHN0ZGVyciwgIndyaXRlLW91dFxuIik7ICovCi0rCi0gICByZXR1cm4g cmV0OwotLX0KLSAKLSt9Ci0gCi0gc3RhdGljIGludCBhb19wdWxzZV9kZWxheSAoYW9fZHJpdmVy X3QgKnRoaXNfZ2VuKQotIHsKLSAgIHB1bHNlX2RyaXZlcl90ICp0aGlzID0gKHB1bHNlX2RyaXZl cl90ICopIHRoaXNfZ2VuOwotLSAgcGFfdXNlY190IGxhdGVuY3kgPSAwOwotLSAgdW5zaWduZWQg aW50IGRlbGF5X2ZyYW1lczsKLSsgIGludCByZXQgPSAwOwotIAotLSAgaWYgKCAhIHRoaXMtPnN0 cmVhbSApIHJldHVybiB0aGlzLT5mcmFtZXNfd3JpdHRlbjsKLSsvKiAgIGZwcmludGYoc3RkZXJy LCAiZGVsYXktaW5cbiIpOyAqLwotIAotLSAgaWYgKHBhX3N0cmVhbV9nZXRfbGF0ZW5jeSh0aGlz LT5zdHJlYW0sICZsYXRlbmN5LCBOVUxMKSA8IDApIHsKLS0gICAgcGFfY29udGV4dF91bnJlZih0 aGlzLT5wYV9jbGFzcy0+Y29udGV4dCk7Ci0tICAgIHRoaXMtPnBhX2NsYXNzLT5jb250ZXh0ID0g TlVMTDsKLSsgIHBhX3RocmVhZGVkX21haW5sb29wX2xvY2sodGhpcy0+bWFpbmxvb3ApOwotIAot LSAgICBwYV9zdHJlYW1fZGlzY29ubmVjdCh0aGlzLT5zdHJlYW0pOwotLSAgICBwYV9zdHJlYW1f dW5yZWYodGhpcy0+c3RyZWFtKTsKLS0gICAgdGhpcy0+c3RyZWFtID0gTlVMTDsKLSsgIGZvciAo OzspIHsKLSsgICAgcGFfdXNlY190IGxhdGVuY3kgPSAwOwotIAotLSAgICByZXR1cm4gMDsKLSsg ICAgaWYgKCF0aGlzLT5zdHJlYW0gfHwKLSsgICAgICAgICF0aGlzLT5jb250ZXh0IHx8Ci0rICAg ICAgICBwYV9jb250ZXh0X2dldF9zdGF0ZSh0aGlzLT5jb250ZXh0KSAhPSBQQV9DT05URVhUX1JF QURZIHx8Ci0rICAgICAgICBwYV9zdHJlYW1fZ2V0X3N0YXRlKHRoaXMtPnN0cmVhbSkgIT0gUEFf U1RSRUFNX1JFQURZKQotKyAgICAgIGdvdG8gZmluaXNoOwotKwotKyAgICBpZiAocGFfc3RyZWFt X2dldF9sYXRlbmN5KHRoaXMtPnN0cmVhbSwgJmxhdGVuY3ksIE5VTEwpID49IDApIHsKLSsgICAg ICByZXQgPSAoaW50KSAoKGxhdGVuY3kgKiB0aGlzLT5zYW1wbGVfcmF0ZSkgLyAxMDAwMDAwKTsK LSsgICAgICBnb3RvIGZpbmlzaDsKLSsgICAgfQotKwotKyAgICBpZiAocGFfY29udGV4dF9lcnJu byh0aGlzLT5jb250ZXh0KSAhPSBQQV9FUlJfTk9EQVRBKSB7Ci0rICAgICAgeHByaW50ZiAodGhp cy0+eGluZSwgWElORV9WRVJCT1NJVFlfREVCVUcsICJhdWRpb19wdWxzZV9vdXQ6IGZhaWxlZCB0 byBxdWVyeSBsYXRlbmN5OiAlc1xuIiwgcGFfc3RyZXJyb3IocGFfY29udGV4dF9lcnJubyh0aGlz LT5jb250ZXh0KSkpOwotKyAgICAgIGdvdG8gZmluaXNoOwotKyAgICB9Ci0rCi0rICAgIHBhX3Ro cmVhZGVkX21haW5sb29wX3dhaXQodGhpcy0+bWFpbmxvb3ApOwotICAgfQotIAotLSAgLyogY29u dmVydCBsYXRlbmN5ICh1cykgdG8gZnJhbWUgdW5pdHMuICovCi0tICBkZWxheV9mcmFtZXMgPSAo aW50KShsYXRlbmN5ICogdGhpcy0+c2FtcGxlX3JhdGUgLyAxMDAwMDAwKTsKLStmaW5pc2g6Ci0g Ci0tICBpZiggZGVsYXlfZnJhbWVzID4gdGhpcy0+ZnJhbWVzX3dyaXR0ZW4gKQotLSAgICByZXR1 cm4gdGhpcy0+ZnJhbWVzX3dyaXR0ZW47Ci0tICBlbHNlCi0tICAgIHJldHVybiBkZWxheV9mcmFt ZXM7Ci0rICBwYV90aHJlYWRlZF9tYWlubG9vcF91bmxvY2sodGhpcy0+bWFpbmxvb3ApOwotKwot KyAgcmV0dXJuIHJldDsKLSB9Ci0gCi0gc3RhdGljIHZvaWQgYW9fcHVsc2VfY2xvc2UoYW9fZHJp dmVyX3QgKnRoaXNfZ2VuKQotIHsKLSAgIHB1bHNlX2RyaXZlcl90ICp0aGlzID0gKHB1bHNlX2Ry aXZlcl90ICopIHRoaXNfZ2VuOwotLSAgCi0tICBpZiAodGhpcy0+c3RyZWFtKSB7Ci0tICAgIGlm IChwYV9zdHJlYW1fZ2V0X3N0YXRlKHRoaXMtPnN0cmVhbSkgPT0gUEFfU1RSRUFNX1JFQURZKSB7 Ci0tICAgICAgcHRocmVhZF9tdXRleF90IGNvbXBsZXRpb25fY2FsbGJhY2sgPSBQVEhSRUFEX01V VEVYX0lOSVRJQUxJWkVSOyBwdGhyZWFkX211dGV4X2xvY2soJmNvbXBsZXRpb25fY2FsbGJhY2sp OwotLSAgICAgIHBhX3N0cmVhbV9kcmFpbih0aGlzLT5zdHJlYW0sIF9feGluZV9wYV9zdHJlYW1f c3VjY2Vzc19jYWxsYmFjaywgJmNvbXBsZXRpb25fY2FsbGJhY2spOwotIAotLSAgICAgIHB0aHJl YWRfbXV0ZXhfbG9jaygmY29tcGxldGlvbl9jYWxsYmFjayk7Ci0tICAgICAgcHRocmVhZF9tdXRl eF9kZXN0cm95KCZjb21wbGV0aW9uX2NhbGxiYWNrKTsKLS0gICAgfQotKyAgcGFfdGhyZWFkZWRf bWFpbmxvb3BfbG9jayh0aGlzLT5tYWlubG9vcCk7Ci0gCi0rICBpZiAodGhpcy0+c3RyZWFtKSB7 Ci0gICAgIHBhX3N0cmVhbV9kaXNjb25uZWN0KHRoaXMtPnN0cmVhbSk7Ci0gICAgIHBhX3N0cmVh bV91bnJlZih0aGlzLT5zdHJlYW0pOwotICAgICB0aGlzLT5zdHJlYW0gPSBOVUxMOwotLQotLSAg ICBwYV9jb250ZXh0X3VucmVmKHRoaXMtPnBhX2NsYXNzLT5jb250ZXh0KTsKLSAgIH0KLSsKLSsg IHBhX3RocmVhZGVkX21haW5sb29wX3VubG9jayh0aGlzLT5tYWlubG9vcCk7Ci0gfQotIAotIHN0 YXRpYyB1aW50MzJfdCBhb19wdWxzZV9nZXRfY2FwYWJpbGl0aWVzIChhb19kcml2ZXJfdCAqdGhp c19nZW4pIHsKLSAgIHB1bHNlX2RyaXZlcl90ICp0aGlzID0gKHB1bHNlX2RyaXZlcl90ICopIHRo aXNfZ2VuOwotKwotICAgcmV0dXJuIHRoaXMtPmNhcGFiaWxpdGllczsKLSB9Ci0gCi0tc3RhdGlj IHZvaWQgYW9fcHVsc2VfZXhpdChhb19kcml2ZXJfdCAqdGhpc19nZW4pCi0tewotK3N0YXRpYyB2 b2lkIGFvX3B1bHNlX2V4aXQoYW9fZHJpdmVyX3QgKnRoaXNfZ2VuKSB7Ci0gICBwdWxzZV9kcml2 ZXJfdCAqdGhpcyA9IChwdWxzZV9kcml2ZXJfdCAqKSB0aGlzX2dlbjsKLSAKLS0gIGZyZWUgKHRo aXMpOwotKyAgYW9fcHVsc2VfY2xvc2UodGhpc19nZW4pOwotKwotKyAgcGFfdGhyZWFkZWRfbWFp bmxvb3BfbG9jayh0aGlzLT5tYWlubG9vcCk7Ci0rCi0rICBpZiAodGhpcy0+Y29udGV4dCkgewot KyAgICBwYV9jb250ZXh0X2Rpc2Nvbm5lY3QodGhpcy0+Y29udGV4dCk7Ci0rICAgIHBhX2NvbnRl eHRfdW5yZWYodGhpcy0+Y29udGV4dCk7Ci0rICB9Ci0rCi0rICBwYV90aHJlYWRlZF9tYWlubG9v cF91bmxvY2sodGhpcy0+bWFpbmxvb3ApOwotKwotKyAgcGFfdGhyZWFkZWRfbWFpbmxvb3BfZnJl ZSh0aGlzLT5tYWlubG9vcCk7Ci0rCi0rICBmcmVlKHRoaXMtPmhvc3QpOwotKyAgZnJlZSh0aGlz LT5zaW5rKTsKLSsgIGZyZWUodGhpcyk7Ci0rfQotKwotK3N0YXRpYyBpbnQgd2FpdF9mb3Jfb3Bl cmF0aW9uKHB1bHNlX2RyaXZlcl90ICp0aGlzLCBwYV9vcGVyYXRpb24gKm8pIHsKLSsKLSsgIGZv ciAoOzspIHsKLSsKLSsgICAgaWYgKCF0aGlzLT5zdHJlYW0gfHwKLSsgICAgICAgICF0aGlzLT5j b250ZXh0IHx8Ci0rICAgICAgICBwYV9jb250ZXh0X2dldF9zdGF0ZSh0aGlzLT5jb250ZXh0KSAh PSBQQV9DT05URVhUX1JFQURZIHx8Ci0rICAgICAgICBwYV9zdHJlYW1fZ2V0X3N0YXRlKHRoaXMt PnN0cmVhbSkgIT0gUEFfU1RSRUFNX1JFQURZKQotKyAgICAgIHJldHVybiAtMTsKLSsKLSsgICAg aWYgKHBhX29wZXJhdGlvbl9nZXRfc3RhdGUobykgIT0gUEFfT1BFUkFUSU9OX1JVTk5JTkcpCi0r ICAgICAgcmV0dXJuIDA7Ci0rCi0rICAgIHBhX3RocmVhZGVkX21haW5sb29wX3dhaXQodGhpcy0+ bWFpbmxvb3ApOwotKyAgfQotIH0KLSAKLSBzdGF0aWMgaW50IGFvX3B1bHNlX2dldF9wcm9wZXJ0 eSAoYW9fZHJpdmVyX3QgKnRoaXNfZ2VuLCBpbnQgcHJvcGVydHkpIHsKLSAgIHB1bHNlX2RyaXZl cl90ICp0aGlzID0gKHB1bHNlX2RyaXZlcl90ICopIHRoaXNfZ2VuOwotICAgaW50IHJlc3VsdCA9 IDA7Ci0rICBwYV9vcGVyYXRpb24gKm8gPSBOVUxMOwotIAotLSAgaWYgKCAhIHRoaXMtPnN0cmVh bSB8fCAhIHRoaXMtPnBhX2NsYXNzLT5jb250ZXh0ICkKLSsgIHBhX3RocmVhZGVkX21haW5sb29w X2xvY2sodGhpcy0+bWFpbmxvb3ApOwotKwotKyAgaWYgKCF0aGlzLT5zdHJlYW0gfHwKLSsgICAg ICAhdGhpcy0+Y29udGV4dCB8fAotKyAgICAgIHBhX2NvbnRleHRfZ2V0X3N0YXRlKHRoaXMtPmNv bnRleHQpICE9IFBBX0NPTlRFWFRfUkVBRFkgfHwKLSsgICAgICBwYV9zdHJlYW1fZ2V0X3N0YXRl KHRoaXMtPnN0cmVhbSkgIT0gUEFfU1RSRUFNX1JFQURZKSB7Ci0rICAgIHBhX3RocmVhZGVkX21h aW5sb29wX3VubG9jayh0aGlzLT5tYWlubG9vcCk7Ci0gICAgIHJldHVybiAwOwotKyAgfQotIAot ICAgc3dpdGNoKHByb3BlcnR5KSB7Ci0tICBjYXNlIEFPX1BST1BfUENNX1ZPTDoKLS0gIGNhc2Ug QU9fUFJPUF9NSVhFUl9WT0w6Ci0tICAgIHsKLS0gICAgICBwdGhyZWFkX211dGV4X2xvY2soJnRo aXMtPmluZm9fbXV0ZXgpOwotLSAgICAgIHBhX29wZXJhdGlvbiAqbyA9IHBhX2NvbnRleHRfZ2V0 X3NpbmtfaW5wdXRfaW5mbyh0aGlzLT5wYV9jbGFzcy0+Y29udGV4dCwKLS0JCQkJCQkgICAgICAg cGFfc3RyZWFtX2dldF9pbmRleCh0aGlzLT5zdHJlYW0pLAotLQkJCQkJCSAgICAgICBfX3hpbmVf cGFfc2lua19pbmZvX2NhbGxiYWNrLCB0aGlzKTsKLS0gICAgICBpZiAoICEgbyApIHJldHVybiAw OwotLSAgICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmdGhpcy0+aW5mb19tdXRleCk7IHB0aHJlYWRf bXV0ZXhfdW5sb2NrKCZ0aGlzLT5pbmZvX211dGV4KTsKLS0JCQkgCi0tICAgICAgcmVzdWx0ID0g KHBhX3N3X3ZvbHVtZV90b19saW5lYXIodGhpcy0+c3d2b2x1bWUpKjEwMCk7Ci0tICAgIH0KLS0g ICAgYnJlYWs7Ci0gCi0tICBjYXNlIEFPX1BST1BfTVVURV9WT0w6Ci0tICAgIHJlc3VsdCA9IHBh X2N2b2x1bWVfaXNfbXV0ZWQoJnRoaXMtPmN2b2x1bWUpOwotLSAgICBicmVhazsKLSsgICAgY2Fz ZSBBT19QUk9QX01VVEVfVk9MOgotKyAgICBjYXNlIEFPX1BST1BfUENNX1ZPTDoKLSsgICAgY2Fz ZSBBT19QUk9QX01JWEVSX1ZPTDoKLSsKLSsgICAgICBvID0gcGFfY29udGV4dF9nZXRfc2lua19p bnB1dF9pbmZvKHRoaXMtPmNvbnRleHQsIHBhX3N0cmVhbV9nZXRfaW5kZXgodGhpcy0+c3RyZWFt KSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9feGluZV9wYV9z aW5rX2luZm9fY2FsbGJhY2ssIHRoaXMpOwotKwotKyAgICAgIGJyZWFrOwotKyAgfQotKwotKyAg aWYgKG8pIHsKLSsgICAgd2FpdF9mb3Jfb3BlcmF0aW9uKHRoaXMsIG8pOwotKyAgICBwYV9vcGVy YXRpb25fdW5yZWYobyk7Ci0gICB9Ci0tICAKLSsKLSsgIHN3aXRjaChwcm9wZXJ0eSkgewotKwot KyAgICBjYXNlIEFPX1BST1BfTVVURV9WT0w6Ci0rICAgICAgcmVzdWx0ID0gdGhpcy0+bXV0ZWQ7 Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgQU9fUFJPUF9QQ01fVk9MOgotKyAgICBjYXNl IEFPX1BST1BfTUlYRVJfVk9MOgotKyAgICAgIHJlc3VsdCA9IChpbnQpIChwYV9zd192b2x1bWVf dG9fbGluZWFyKHRoaXMtPnN3dm9sdW1lKSoxMDApOwotKyAgICAgIGJyZWFrOwotKyAgfQotKwot KyAgcGFfdGhyZWFkZWRfbWFpbmxvb3BfdW5sb2NrKHRoaXMtPm1haW5sb29wKTsKLSsKLSAgIHJl dHVybiByZXN1bHQ7Ci0gfQotIAotIHN0YXRpYyBpbnQgYW9fcHVsc2Vfc2V0X3Byb3BlcnR5IChh b19kcml2ZXJfdCAqdGhpc19nZW4sIGludCBwcm9wZXJ0eSwgaW50IHZhbHVlKSB7Ci0gICBwdWxz ZV9kcml2ZXJfdCAqdGhpcyA9IChwdWxzZV9kcml2ZXJfdCAqKSB0aGlzX2dlbjsKLSAgIGludCBy ZXN1bHQgPSB+dmFsdWU7Ci0rICBwYV9vcGVyYXRpb24gKm8gPSBOVUxMOwotIAotLSAgaWYgKCAh IHRoaXMtPnN0cmVhbSB8fCAhIHRoaXMtPnBhX2NsYXNzLT5jb250ZXh0ICkKLS0gICAgcmV0dXJu IHJlc3VsdDsKLSsgIHBhX3RocmVhZGVkX21haW5sb29wX2xvY2sodGhpcy0+bWFpbmxvb3ApOwot KwotKyAgaWYgKCF0aGlzLT5zdHJlYW0gfHwKLSsgICAgICAhdGhpcy0+Y29udGV4dCB8fAotKyAg ICAgIHBhX2NvbnRleHRfZ2V0X3N0YXRlKHRoaXMtPmNvbnRleHQpICE9IFBBX0NPTlRFWFRfUkVB RFkgfHwKLSsgICAgICBwYV9zdHJlYW1fZ2V0X3N0YXRlKHRoaXMtPnN0cmVhbSkgIT0gUEFfU1RS RUFNX1JFQURZKSB7Ci0rICAgIHBhX3RocmVhZGVkX21haW5sb29wX3VubG9jayh0aGlzLT5tYWlu bG9vcCk7Ci0rICAgIHJldHVybiAwOwotKyAgfQotIAotICAgc3dpdGNoKHByb3BlcnR5KSB7Ci0t ICBjYXNlIEFPX1BST1BfUENNX1ZPTDoKLS0gIGNhc2UgQU9fUFJPUF9NSVhFUl9WT0w6Ci0tICAg IHRoaXMtPnN3dm9sdW1lID0gcGFfc3dfdm9sdW1lX2Zyb21fbGluZWFyKChkb3VibGUpdmFsdWUv MTAwLjApOwotLSAgICBwYV9jdm9sdW1lX3NldCgmdGhpcy0+Y3ZvbHVtZSwgcGFfc3RyZWFtX2dl dF9zYW1wbGVfc3BlYyh0aGlzLT5zdHJlYW0pLT5jaGFubmVscywgdGhpcy0+c3d2b2x1bWUpOwot LQotLSAgICBwYV9jb250ZXh0X3NldF9zaW5rX2lucHV0X3ZvbHVtZSh0aGlzLT5wYV9jbGFzcy0+ Y29udGV4dCwgcGFfc3RyZWFtX2dldF9pbmRleCh0aGlzLT5zdHJlYW0pLAotLQkJCQkgICAgICZ0 aGlzLT5jdm9sdW1lLCBfX3hpbmVfcGFfY29udGV4dF9zdWNjZXNzX2NhbGxiYWNrLCB0aGlzKTsK LS0KLS0gICAgcmVzdWx0ID0gdmFsdWU7Ci0tICAgIGJyZWFrOwotLQotLSAgY2FzZSBBT19QUk9Q X01VVEVfVk9MOgotLSAgICBpZiAoIHZhbHVlICkKLS0gICAgICBwYV9jdm9sdW1lX211dGUoJnRo aXMtPmN2b2x1bWUsIHBhX3N0cmVhbV9nZXRfc2FtcGxlX3NwZWModGhpcy0+c3RyZWFtKS0+Y2hh bm5lbHMpOwotLSAgICBlbHNlCi0rICAgIGNhc2UgQU9fUFJPUF9QQ01fVk9MOgotKyAgICBjYXNl IEFPX1BST1BfTUlYRVJfVk9MOgotKwotKyAgICAgIHRoaXMtPnN3dm9sdW1lID0gcGFfc3dfdm9s dW1lX2Zyb21fbGluZWFyKChkb3VibGUpdmFsdWUvMTAwLjApOwotICAgICAgIHBhX2N2b2x1bWVf c2V0KCZ0aGlzLT5jdm9sdW1lLCBwYV9zdHJlYW1fZ2V0X3NhbXBsZV9zcGVjKHRoaXMtPnN0cmVh bSktPmNoYW5uZWxzLCB0aGlzLT5zd3ZvbHVtZSk7Ci0gCi0tICAgIHBhX2NvbnRleHRfc2V0X3Np bmtfaW5wdXRfdm9sdW1lKHRoaXMtPnBhX2NsYXNzLT5jb250ZXh0LCBwYV9zdHJlYW1fZ2V0X2lu ZGV4KHRoaXMtPnN0cmVhbSksCi0tCQkJCSAgICAgJnRoaXMtPmN2b2x1bWUsIF9feGluZV9wYV9j b250ZXh0X3N1Y2Nlc3NfY2FsbGJhY2ssIHRoaXMpOwotLSAgICAKLS0gICAgcmVzdWx0ID0gdmFs dWU7Ci0tICAgIGJyZWFrOwotKyAgICAgIG8gPSBwYV9jb250ZXh0X3NldF9zaW5rX2lucHV0X3Zv bHVtZSh0aGlzLT5jb250ZXh0LCBwYV9zdHJlYW1fZ2V0X2luZGV4KHRoaXMtPnN0cmVhbSksCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0aGlzLT5jdm9sdW1l LCBfX3hpbmVfcGFfY29udGV4dF9zdWNjZXNzX2NhbGxiYWNrLCB0aGlzKTsKLSsKLSsgICAgICBy ZXN1bHQgPSB2YWx1ZTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBBT19QUk9QX01VVEVf Vk9MOgotKwotKyAgICAgIHRoaXMtPm11dGVkID0gdmFsdWU7Ci0rCi0rICAgICAgbyA9IHBhX2Nv bnRleHRfc2V0X3NpbmtfaW5wdXRfbXV0ZSh0aGlzLT5jb250ZXh0LCBwYV9zdHJlYW1fZ2V0X2lu ZGV4KHRoaXMtPnN0cmVhbSksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHZhbHVlLCBfX3hpbmVfcGFfY29udGV4dF9zdWNjZXNzX2NhbGxiYWNrLCB0aGlzKTsK LSsKLSsgICAgICByZXN1bHQgPSB2YWx1ZTsKLSsgIH0KLSsKLSsgIGlmIChvKSB7Ci0rICAgIHdh aXRfZm9yX29wZXJhdGlvbih0aGlzLCBvKTsKLSsgICAgcGFfb3BlcmF0aW9uX3VucmVmKG8pOwot ICAgfQotLSAgCi0rCi0rICBwYV90aHJlYWRlZF9tYWlubG9vcF91bmxvY2sodGhpcy0+bWFpbmxv b3ApOwotKwotICAgcmV0dXJuIHJlc3VsdDsKLSB9Ci0gCi0gc3RhdGljIGludCBhb19wdWxzZV9j dHJsKGFvX2RyaXZlcl90ICp0aGlzX2dlbiwgaW50IGNtZCwgLi4uKSB7Ci0gICBwdWxzZV9kcml2 ZXJfdCAqdGhpcyA9IChwdWxzZV9kcml2ZXJfdCAqKSB0aGlzX2dlbjsKLSsgIHBhX29wZXJhdGlv biAqbyA9IE5VTEw7Ci0rCi0rICBwYV90aHJlYWRlZF9tYWlubG9vcF9sb2NrKHRoaXMtPm1haW5s b29wKTsKLSAKLS0gIGlmICggISB0aGlzLT5zdHJlYW0gKSByZXR1cm4gMDsKLSsgIGlmICghdGhp cy0+c3RyZWFtIHx8Ci0rICAgICAgIXRoaXMtPmNvbnRleHQgfHwKLSsgICAgICBwYV9jb250ZXh0 X2dldF9zdGF0ZSh0aGlzLT5jb250ZXh0KSAhPSBQQV9DT05URVhUX1JFQURZIHx8Ci0rICAgICAg cGFfc3RyZWFtX2dldF9zdGF0ZSh0aGlzLT5zdHJlYW0pICE9IFBBX1NUUkVBTV9SRUFEWSkgewot KyAgICBwYV90aHJlYWRlZF9tYWlubG9vcF91bmxvY2sodGhpcy0+bWFpbmxvb3ApOwotKyAgICBy ZXR1cm4gMDsKLSsgIH0KLSAKLSAgIHN3aXRjaCAoY21kKSB7Ci0gCi0tICBjYXNlIEFPX0NUUkxf RkxVU0hfQlVGRkVSUzoKLS0gICAgX3hfYXNzZXJ0KHRoaXMtPnN0cmVhbSAmJiB0aGlzLT5wYV9j bGFzcy0+Y29udGV4dCk7Ci0rICAgIGNhc2UgQU9fQ1RSTF9GTFVTSF9CVUZGRVJTOgotIAotLSAg ICBpZihwYV9zdHJlYW1fZ2V0X3N0YXRlKHRoaXMtPnN0cmVhbSkgPT0gUEFfU1RSRUFNX1JFQURZ KSB7Ci0tICAgICAgcHRocmVhZF9tdXRleF90IGNvbXBsZXRpb25fY2FsbGJhY2sgPSBQVEhSRUFE X01VVEVYX0lOSVRJQUxJWkVSOyBwdGhyZWFkX211dGV4X2xvY2soJmNvbXBsZXRpb25fY2FsbGJh Y2spOwotLSAgICAgIHBhX3N0cmVhbV9mbHVzaCh0aGlzLT5zdHJlYW0sIF9feGluZV9wYV9zdHJl YW1fc3VjY2Vzc19jYWxsYmFjaywgJmNvbXBsZXRpb25fY2FsbGJhY2spOwotKyAgICAgIG8gPSBw YV9zdHJlYW1fZmx1c2godGhpcy0+c3RyZWFtLCBfX3hpbmVfcGFfc3RyZWFtX3N1Y2Nlc3NfY2Fs bGJhY2ssIHRoaXMpOwotKyAgICAgIGJyZWFrOwotIAotLSAgICAgIHB0aHJlYWRfbXV0ZXhfbG9j aygmY29tcGxldGlvbl9jYWxsYmFjayk7Ci0tICAgICAgcHRocmVhZF9tdXRleF9kZXN0cm95KCZj b21wbGV0aW9uX2NhbGxiYWNrKTsKLS0gICAgfQotKyAgICBjYXNlIEFPX0NUUkxfUExBWV9SRVNV TUU6Ci0rICAgIGNhc2UgQU9fQ1RSTF9QTEFZX1BBVVNFOgotIAotLSAgICB0aGlzLT5mcmFtZXNf d3JpdHRlbiA9IDA7Ci0rICAgICAgbyA9IHBhX3N0cmVhbV9jb3JrKHRoaXMtPnN0cmVhbSwgY21k ID09IEFPX0NUUkxfUExBWV9QQVVTRSwgX194aW5lX3BhX3N0cmVhbV9zdWNjZXNzX2NhbGxiYWNr LCB0aGlzKTsKLSsgICAgICBicmVhazsKLSsgIH0KLSAKLS0gICAgYnJlYWs7Ci0rICBpZiAobykg ewotKyAgICB3YWl0X2Zvcl9vcGVyYXRpb24odGhpcywgbyk7Ci0rICAgIHBhX29wZXJhdGlvbl91 bnJlZihvKTsKLSAgIH0KLSAKLSsgIHBhX3RocmVhZGVkX21haW5sb29wX3VubG9jayh0aGlzLT5t YWlubG9vcCk7Ci0rCi0gICByZXR1cm4gMDsKLSB9Ci0gCi0gc3RhdGljIGFvX2RyaXZlcl90ICpv cGVuX3BsdWdpbiAoYXVkaW9fZHJpdmVyX2NsYXNzX3QgKmNsYXNzX2dlbiwgY29uc3Qgdm9pZCAq ZGF0YSkgewotICAgcHVsc2VfY2xhc3NfdCAgICpjbGFzcyA9IChwdWxzZV9jbGFzc190ICopIGNs YXNzX2dlbjsKLSAgIHB1bHNlX2RyaXZlcl90ICAqdGhpczsKLS0gIGNoYXIgKmRldmljZTsKLSsg IGNvbnN0IGNoYXIqIGRldmljZTsKLSsgIGludCByOwotIAotICAgbHByaW50ZiAoImF1ZGlvX3B1 bHNlX291dDogb3Blbl9wbHVnaW4gY2FsbGVkXG4iKTsKLSAKLSAgIHRoaXMgPSAocHVsc2VfZHJp dmVyX3QgKikgeGluZV94bWFsbG9jIChzaXplb2YgKHB1bHNlX2RyaXZlcl90KSk7Ci0gICBpZiAo IXRoaXMpCi0gICAgIHJldHVybiBOVUxMOwotKwotICAgdGhpcy0+eGluZSA9IGNsYXNzLT54aW5l OwotKyAgdGhpcy0+aG9zdCA9IE5VTEw7Ci0rICB0aGlzLT5zaW5rID0gTlVMTDsKLSsgIHRoaXMt PmNvbnRleHQgPSBOVUxMOwotKyAgdGhpcy0+bWFpbmxvb3AgPSBOVUxMOwotKwotKyAgZGV2aWNl ID0gY2xhc3MtPnhpbmUtPmNvbmZpZy0+cmVnaXN0ZXJfc3RyaW5nKGNsYXNzLT54aW5lLT5jb25m aWcsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXVkaW8ucHVs c2VhdWRpb19kZXZpY2UiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIiIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJkZXZp Y2UgdXNlZCBmb3IgcHVsc2VhdWRpbyIpLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXygidXNlICdzZXJ2ZXJbOnNpbmtdJyBmb3Igc2V0dGluZyB0aGUgIgotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHVsc2VhdWRpbyBzaW5r IGRldmljZS4iKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEw LCBOVUxMLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7 Ci0rCi0rICBpZiAoZGV2aWNlICYmICpkZXZpY2UpIHsKLSsgICAgY2hhciAqc2VwID0gc3RycmNo cihkZXZpY2UsICc6Jyk7Ci0rICAgIGlmICggc2VwICkgewotKyAgICAgIGlmICghKHRoaXMtPmhv c3QgPSBzdHJuZHVwKGRldmljZSwgc2VwLWRldmljZSkpKSB7Ci0rICAgICAgICBmcmVlKHRoaXMp OwotKyAgICAgICAgcmV0dXJuIE5VTEw7Ci0rICAgICAgfQotKwotKyAgICAgIGlmICghKHRoaXMt PnNpbmsgPSBzdHJkdXAoc2VwKzEpKSkgewotKyAgICAgICAgZnJlZSh0aGlzLT5ob3N0KTsKLSsg ICAgICAgIGZyZWUodGhpcyk7Ci0rICAgICAgICByZXR1cm4gTlVMTDsKLSsgICAgICB9Ci0rICAg IH0gZWxzZSB7Ci0rCi0rICAgICAgaWYgKCEodGhpcy0+aG9zdCA9IHN0cmR1cChkZXZpY2UpKSkg ewotKyAgICAgICAgZnJlZSh0aGlzKTsKLSsgICAgICAgIHJldHVybiBOVUxMOwotKyAgICAgIH0K LSsgICAgfQotKyAgfQotKwotKyAgdGhpcy0+bWFpbmxvb3AgPSBwYV90aHJlYWRlZF9tYWlubG9v cF9uZXcoKTsKLSsgIF94X2Fzc2VydCh0aGlzLT5tYWlubG9vcCk7Ci0rICBwYV90aHJlYWRlZF9t YWlubG9vcF9zdGFydCh0aGlzLT5tYWlubG9vcCk7Ci0gCi0gICAvKgotICAgICogc2V0IGNhcGFi aWxpdGllcwotICAgICovCi0tICB0aGlzLT5jYXBhYmlsaXRpZXMgPSBBT19DQVBfTU9ERV9NT05P IHwgQU9fQ0FQX01PREVfU1RFUkVPIHwgQU9fQ0FQX01PREVfNENIQU5ORUwgfAotLSAgICAgICAg ICAgICAgICAgICAgICAgQU9fQ0FQX01PREVfNF8xQ0hBTk5FTCB8IEFPX0NBUF9NT0RFXzVDSEFO TkVMIHwKLS0gICAgICAgICAgICAgICAgICAgICAgIEFPX0NBUF9NT0RFXzVfMUNIQU5ORUwgfCBB T19DQVBfTUlYRVJfVk9MIHwKLS0gICAgICAgICAgICAgICAgICAgICAgIEFPX0NBUF9QQ01fVk9M IHwgQU9fQ0FQX01VVEVfVk9MIHwgQU9fQ0FQXzhCSVRTIHwKLS0gICAgICAgICAgICAgICAgICAg ICAgIEFPX0NBUF8xNkJJVFMgfCBBT19DQVBfRkxPQVQzMjsKLSsgIHRoaXMtPmNhcGFiaWxpdGll cyA9Ci0rICAgIEFPX0NBUF9NT0RFX01PTk8gfCBBT19DQVBfTU9ERV9TVEVSRU8gfCBBT19DQVBf TU9ERV80Q0hBTk5FTCB8Ci0rICAgIEFPX0NBUF9NT0RFXzRfMUNIQU5ORUwgfCBBT19DQVBfTU9E RV81Q0hBTk5FTCB8IEFPX0NBUF9NT0RFXzVfMUNIQU5ORUwgfAotKyAgICBBT19DQVBfTUlYRVJf Vk9MIHwgQU9fQ0FQX1BDTV9WT0wgfCBBT19DQVBfTVVURV9WT0wgfAotKyAgICBBT19DQVBfOEJJ VFMgfCBBT19DQVBfMTZCSVRTIHwgQU9fQ0FQX0ZMT0FUMzI7Ci0gCi0gICB0aGlzLT5zYW1wbGVf cmF0ZSAgPSAwOwotLSAgdGhpcy0+aG9zdCAgICAgICAgID0gTlVMTDsKLS0gIHRoaXMtPnNpbmsg ICAgICAgICA9IE5VTEw7Ci0tICAKLSsKLSAgIHRoaXMtPmFvX2RyaXZlci5nZXRfY2FwYWJpbGl0 aWVzICAgID0gYW9fcHVsc2VfZ2V0X2NhcGFiaWxpdGllczsKLSAgIHRoaXMtPmFvX2RyaXZlci5n ZXRfcHJvcGVydHkgICAgICAgID0gYW9fcHVsc2VfZ2V0X3Byb3BlcnR5OwotICAgdGhpcy0+YW9f ZHJpdmVyLnNldF9wcm9wZXJ0eSAgICAgICAgPSBhb19wdWxzZV9zZXRfcHJvcGVydHk7Ci1AQCAt NTQxLDMzICs3OTAsMjIgQEAgc3RhdGljIGFvX2RyaXZlcl90ICpvcGVuX3BsdWdpbiAoYXVkaW9f ZAotICAgdGhpcy0+YW9fZHJpdmVyLmNsb3NlICAgICAgICAgICAgICAgPSBhb19wdWxzZV9jbG9z ZTsKLSAgIHRoaXMtPmFvX2RyaXZlci5leGl0ICAgICAgICAgICAgICAgID0gYW9fcHVsc2VfZXhp dDsKLSAgIHRoaXMtPmFvX2RyaXZlci5nZXRfZ2FwX3RvbGVyYW5jZSAgID0gYW9fcHVsc2VfZ2V0 X2dhcF90b2xlcmFuY2U7Ci0tICB0aGlzLT5hb19kcml2ZXIuY29udHJvbAkgICAgICA9IGFvX3B1 bHNlX2N0cmw7Ci0tCi0tICBkZXZpY2UgPSB0aGlzLT54aW5lLT5jb25maWctPnJlZ2lzdGVyX3N0 cmluZyh0aGlzLT54aW5lLT5jb25maWcsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAiYXVkaW8ucHVsc2VhdWRpb19kZXZpY2UiLAotLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIsCi0tICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJkZXZpY2UgdXNlZCBmb3IgcHVsc2Vh dWRpbyIpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XygidXNlICdzZXJ2ZXJbOnNpbmtdJyBmb3Igc2V0dGluZyB0aGUgIgotLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHVsc2VhdWRpbyBzaW5rIGRldmlj ZS4iKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEw LCBOVUxMLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TlVMTCk7Ci0tCi0tICBpZiAoZGV2aWNlICYmICpkZXZpY2UpIHsKLS0gICAgY2hhciAqc2VwID0g c3RyY2hyKGRldmljZSwgJzonKTsKLS0gICAgaWYgKCBzZXAgKSB7Ci0tICAgICAgdGhpcy0+aG9z dCA9IHN0cm5kdXAoZGV2aWNlLCBzZXAtZGV2aWNlKTsKLS0gICAgICB0aGlzLT5zaW5rID0gc3Ry ZHVwKCZzZXBbMV0pOwotLSAgICB9IGVsc2UKLS0gICAgICB0aGlzLT5ob3N0ID0gc3RyZHVwKGRl dmljZSk7Ci0tICB9Ci0tCi0tICBwdGhyZWFkX211dGV4X2luaXQoJnRoaXMtPmluZm9fbXV0ZXgs IE5VTEwpOwotKyAgdGhpcy0+YW9fZHJpdmVyLmNvbnRyb2wgICAgICAgICAgICAgPSBhb19wdWxz ZV9jdHJsOwotIAotICAgeHByaW50ZiAoY2xhc3MtPnhpbmUsIFhJTkVfVkVSQk9TSVRZX0RFQlVH LCAiYXVkaW9fcHVsc2Vfb3V0OiBob3N0ICVzIHNpbmsgJXNcbiIsCi0gICAgICAgICAgICB0aGlz LT5ob3N0ID8gdGhpcy0+aG9zdCA6ICIobnVsbCkiLCB0aGlzLT5zaW5rID8gdGhpcy0+c2luayA6 ICIobnVsbCkiKTsKLSAKLSAgIHRoaXMtPnBhX2NsYXNzID0gY2xhc3M7Ci0gCi0rICBwYV90aHJl YWRlZF9tYWlubG9vcF9sb2NrKHRoaXMtPm1haW5sb29wKTsKLSsgIHIgPSBjb25uZWN0X2NvbnRl eHQodGhpcyk7Ci0rICBwYV90aHJlYWRlZF9tYWlubG9vcF91bmxvY2sodGhpcy0+bWFpbmxvb3Ap OwotKwotKyAgaWYgKHIgPCAwKSB7Ci0rICAgIGFvX3B1bHNlX2V4aXQoKGFvX2RyaXZlcl90ICop IHRoaXMpOwotKyAgICByZXR1cm4gTlVMTDsKLSsgIH0KLSsKLSAgIHJldHVybiAmdGhpcy0+YW9f ZHJpdmVyOwotIH0KLSAKLUBAIC01ODcsMTMgKzgyNSw3IEBAIHN0YXRpYyB2b2lkIGRpc3Bvc2Vf Y2xhc3MgKGF1ZGlvX2RyaXZlcl8KLSAKLSAgIHB1bHNlX2NsYXNzX3QgKnRoaXMgPSAocHVsc2Vf Y2xhc3NfdCAqKSB0aGlzX2dlbjsKLSAKLS0gIGlmICggdGhpcy0+Y29udGV4dCApCi0tICAgIHBh X2NvbnRleHRfdW5yZWYodGhpcy0+Y29udGV4dCk7Ci0tCi0tICBwYV90aHJlYWRlZF9tYWlubG9v cF9zdG9wKHRoaXMtPm1haW5sb29wKTsKLS0gIHBhX3RocmVhZGVkX21haW5sb29wX2ZyZWUodGhp cy0+bWFpbmxvb3ApOwotLQotLSAgZnJlZSAodGhpcyk7Ci0rICBmcmVlKHRoaXMpOwotIH0KLSAK LSBzdGF0aWMgdm9pZCAqaW5pdF9jbGFzcyAoeGluZV90ICp4aW5lLCB2b2lkICpkYXRhKSB7Ci1A QCAtNjA2LDI1ICs4MzgsMTcgQEAgc3RhdGljIHZvaWQgKmluaXRfY2xhc3MgKHhpbmVfdCAqeGlu ZSwgdgotICAgaWYgKCF0aGlzKQotICAgICByZXR1cm4gTlVMTDsKLSAKLSsgIHRoaXMtPnhpbmUg PSB4aW5lOwotICAgdGhpcy0+ZHJpdmVyX2NsYXNzLm9wZW5fcGx1Z2luICAgICA9IG9wZW5fcGx1 Z2luOwotICAgdGhpcy0+ZHJpdmVyX2NsYXNzLmdldF9pZGVudGlmaWVyICA9IGdldF9pZGVudGlm aWVyOwotICAgdGhpcy0+ZHJpdmVyX2NsYXNzLmdldF9kZXNjcmlwdGlvbiA9IGdldF9kZXNjcmlw dGlvbjsKLSAgIHRoaXMtPmRyaXZlcl9jbGFzcy5kaXNwb3NlICAgICAgICAgPSBkaXNwb3NlX2Ns YXNzOwotIAotLSAgdGhpcy0+eGluZSAgICAgICAgICAgICAgICAgICAgICAgICA9IHhpbmU7Ci0t Ci0tICB0aGlzLT5tYWlubG9vcCA9IHBhX3RocmVhZGVkX21haW5sb29wX25ldygpOwotLSAgX3hf YXNzZXJ0KHRoaXMtPm1haW5sb29wKTsKLS0KLS0gIHBhX3RocmVhZGVkX21haW5sb29wX3N0YXJ0 KHRoaXMtPm1haW5sb29wKTsKLS0gIAotLSAgdGhpcy0+Y29udGV4dCA9IE5VTEw7Ci0tCi0gICBy ZXR1cm4gdGhpczsKLSB9Ci0gCi0gc3RhdGljIGNvbnN0IGFvX2luZm9fdCBhb19pbmZvX3B1bHNl ID0gewotLSAgNgotKyAgMTIKLSB9OwotIAotIC8qCi1AQCAtNjM2LDUgKzg2MCwzIEBAIGNvbnN0 IHBsdWdpbl9pbmZvX3QgeGluZV9wbHVnaW5faW5mb1tdIEUKLSAgIHsgUExVR0lOX0FVRElPX09V VCwgOCwgInB1bHNlYXVkaW8iLCBYSU5FX1ZFUlNJT05fQ09ERSwgJmFvX2luZm9fcHVsc2UsIGlu aXRfY2xhc3MgfSwKLSAgIHsgUExVR0lOX05PTkUsIDAsICIiLCAwLCBOVUxMLCBOVUxMIH0KLSB9 OwotLQotLQo=