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: Rex Dieter To: git-commits@fedoraproject.org Subject: [rpms/xine-lib] epel9-next: * Mon Apr 07 2008 Rex Dieter - 1.1.11.1-2 Date: Mon, 20 Jul 2026 20:00:32 GMT Message-ID: <178457763250.1.7826659586122832563.rpms-xine-lib-269c125c0d93@fedoraproject.org> List-ID: X-Git-Repo: rpms/xine-lib X-Git-Branch: epel9-next X-Git-Rev: 269c125c0d939eb7c7fbff61cc22d7e5a663210c ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMveGluZS1saWIKICAgICAgICAgICAgQnJhbmNoIDogZXBlbDktbmV4dAogICAg ICAgICAgICBDb21taXQgOiAyNjljMTI1YzBkOTM5ZWI3YzdmYmZmNjFjYzIyZDdlNWE2NjMyMTBj CiAgICAgICAgICAgIEF1dGhvciA6IFJleCBEaWV0ZXIgPHJkaWV0ZXJAZmVkb3JhcHJvamVjdC5v cmc+CiAgICAgICAgICAgIERhdGUgICA6IDIwMDgtMDQtMDdUMTM6MDk6NTUrMDA6MDAKICAgICAg ICAgICAgU3RhdHMgIDogKzEwNjcvLTcgaW4gMiBmaWxlKHMpCiAgICAgICAgICAgIFVSTCAgICA6 IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMveGluZS1saWIvYy8yNjljMTI1YzBk OTM5ZWI3YzdmYmZmNjFjYzIyZDdlNWE2NjMyMTBjP2JyYW5jaD1lcGVsOS1uZXh0CgogICAgICAg ICAgICBMb2c6CiAgICAgICAgICAgICogTW9uIEFwciAwNyAyMDA4IFJleCBEaWV0ZXIgPHJkaWV0 ZXJAZmVkb3JhcHJvamVjdC5vcmc+IC0gMS4xLjExLjEtMgotIHB1bHNlLXJld29yazIgcGF0Y2gg KCM0Mzk3MzEpCi0gLXB1bHNlYXVkaW8gc3VicGtnICgjNDM5NzMxKQoKLS0tCmRpZmYgLS1naXQg YS94aW5lLWxpYi5zcGVjIGIveGluZS1saWIuc3BlYwppbmRleCAzODM4ODJkLi5hMTZiMTUyIDEw MDY0NAotLS0gYS94aW5lLWxpYi5zcGVjCisrKyBiL3hpbmUtbGliLnNwZWMKQEAgLTMyLDcgKzMy LDcgQEAKIFN1bW1hcnk6ICAgICAgICBYaW5lIGxpYnJhcnkKIE5hbWU6ICAgICAgICAgICB4aW5l LWxpYgogVmVyc2lvbjogICAgICAgIDEuMS4xMS4xCi1SZWxlYXNlOiAgICAgICAgMSV7P2Rpc3R9 CitSZWxlYXNlOiAgICAgICAgMiV7P2Rpc3R9CiBMaWNlbnNlOiAgICAgICAgR1BMdjIrCiBHcm91 cDogICAgICAgICAgU3lzdGVtIEVudmlyb25tZW50L0xpYnJhcmllcwogVVJMOiAgICAgICAgICAg IGh0dHA6Ly94aW5laHEuZGUvCkBAIC00OCw2ICs0OCwxMCBAQCBQYXRjaDE6ICAgICAgICAgJXtu YW1lfS0xLjEuNC1vcHRmbGFncy5wYXRjaAogUGF0Y2g2OiAgICAgICAgICV7bmFtZX0tMS4xLjEt ZGVlcGJpbmQtOTM5LnBhdGNoCiBCdWlsZFJvb3Q6ICAgICAgJXtfdG1wcGF0aH0vJXtuYW1lfS0l e3ZlcnNpb259LSV7cmVsZWFzZX0tcm9vdC0lKCV7X19pZF91fSAtbikKIAorIyB1cHN0cmVhbSBw YXRjaGVzCisjIGxlbm5hcnQgc2FpZCB0aGlzIHdhcyB1cHN0cmVhbWVkIGFscmVhZHkuICA6KQor UGF0Y2gxMDA6IGh0dHA6Ly8wcG9pbnRlci5kZS9wdWJsaWMveGluZS1wdWxzZS1yZXdvcmsyLnBh dGNoCisKIFByb3ZpZGVzOiAgICAgICB4aW5lLWxpYihwbHVnaW4tYWJpKSA9ICV7YWJpdmVyfQog IyBYMTEKIEJ1aWxkUmVxdWlyZXM6ICBsaWJYMTEtZGV2ZWwKQEAgLTExOSw2ICsxMjMsNyBAQCBS ZXF1aXJlczogICAgICAgemxpYi1kZXZlbAogJWRlc2NyaXB0aW9uICAgIGRldmVsCiBUaGlzIHBh Y2thZ2UgY29udGFpbnMgZGV2ZWxvcG1lbnQgZmlsZXMgZm9yIHhpbmUtbGliLgogCisjIFRPRE86 IGNvbnNpZGVyIHJlbW92aW5nIGFuZC9vciBtYXJraW5nIGFzIGRlcHJlY2F0ZWQgZm9yIEY5KyAt LSBSZXgKICVwYWNrYWdlICAgICAgICBhcnRzCiBTdW1tYXJ5OiAgICAgICAgYVJ0cyBwbHVnaW4g Zm9yIHhpbmUtbGliCiBHcm91cDogICAgICAgICAgU3lzdGVtIEVudmlyb25tZW50L0xpYnJhcmll cwpAQCAtMTI5LDYgKzEzNCwxNiBAQCBPYnNvbGV0ZXM6ICAgICAgeGluZS1saWItZXh0cmFzIDwg MS4xLjctMwogJWRlc2NyaXB0aW9uICAgIGFydHMKIFRoaXMgcGFja2FnZSBjb250YWlucyB0aGUg YVJ0cyBleHRyYSBwbHVnaW4gZm9yIHhpbmUtbGliLgogCislcGFja2FnZSAgICAgICAgcHVsc2Vh dWRpbworU3VtbWFyeTogICAgICAgIFB1bHNlYXVkaW8gcGx1Z2luIGZvciB4aW5lLWxpYgorR3Jv dXA6ICAgICAgICAgIFN5c3RlbSBFbnZpcm9ubWVudC9MaWJyYXJpZXMKK1JlcXVpcmVzOiAgICAg ICAle25hbWV9ID0gJXt2ZXJzaW9ufS0le3JlbGVhc2V9CisjIC1wdWxzZWF1ZGlvIHdhcyBzcGxp dCBvZmYgLWV4dHJhcyBhdCAxLjEuMTEuMS0yCisjT2Jzb2xldGVzOiAgICAgeGluZS1saWItZXh0 cmFzIDwgMS4xLjExLjEtMgorCislZGVzY3JpcHRpb24gICAgcHVsc2VhdWRpbworVGhpcyBwYWNr YWdlIGNvbnRhaW5zIHRoZSBwdWxzZWF1ZGlvIHBsdWdpbiBmb3IgeGluZS1saWIuCisKICVwYWNr YWdlICAgICAgICBleHRyYXMKIFN1bW1hcnk6ICAgICAgICBBZGRpdGlvbmFsIHBsdWdpbnMgZm9y IHhpbmUtbGliCiBHcm91cDogICAgICAgICAgU3lzdGVtIEVudmlyb25tZW50L0xpYnJhcmllcwpA QCAtMTM4LDkgKzE1Myw2IEBAIFJlcXVpcmVzOiAgICAgICAle25hbWV9ID0gJXt2ZXJzaW9ufS0l e3JlbGVhc2V9CiBUaGlzIHBhY2thZ2UgY29udGFpbnMgZXh0cmEgcGx1Z2lucyBmb3IgeGluZS1s aWI6CiAgIC0gRXNvdW5ECiAgIC0gSkFDSwotJWlmICV7d2l0aF9wYX0KLSAgLSBQdWxzZWF1ZGlv Ci0lZW5kaWYgIyBwYQogICAtIEdESy1QaXhidWYKICAgLSBHTk9NRSBWRlMKICAgLSBTTUIKQEAg LTE2OSw2ICsxODEsOCBAQCB0b3VjaCAtciBtNC9vcHRpbWl6YXRpb25zLm00LnN0YW1wIG00L29w dGltaXphdGlvbnMubTQKICMgUGF0Y2g2IG5lZWRlZCBhdCBsZWFzdCB3aGVuIGNvbXBpbGluZyB3 aXRoIGV4dGVybmFsIGZmbXBlZywgIzkzOS4KICVwYXRjaDYgLXAxIC1iIC5kZWVwYmluZAogCisl cGF0Y2gxMDAgLXAxIC1iIC5wdWxzZS1yZXdvcmsyCisKICMgQXZvaWQgc3RhbmRhcmQgcnBhdGhz IG9uIGxpYjY0IGFyY2hzOgogc2VkIC1pIC1lICdzfCIvbGliIC91c3IvbGliXGJ8Ii8le19saWJ9 ICV7X2xpYmRpcn18JyBjb25maWd1cmUKIApAQCAtMzQ4LDEzICszNjIsMTYgQEAgcm0gLXJmICRS UE1fQlVJTERfUk9PVAogJWRlZmF0dHIoLSxyb290LHJvb3QsLSkKICV7X2xpYmRpcn0veGluZS9w bHVnaW5zLyV7YWJpdmVyfS94aW5lcGx1Z19hb19vdXRfYXJ0cy5zbwogCislaWYgJXt3aXRoX3Bh fQorJWZpbGVzIHB1bHNlYXVkaW8KKyVkZWZhdHRyKC0scm9vdCxyb290LC0pCisle19saWJkaXJ9 L3hpbmUvcGx1Z2lucy8le2FiaXZlcn0veGluZXBsdWdfYW9fb3V0X3B1bHNlYXVkaW8uc28KKyVl bmRpZiAKKwogJWZpbGVzIGV4dHJhcwogJWRlZmF0dHIoLSxyb290LHJvb3QsLSkKICV7X2xpYmRp cn0veGluZS9wbHVnaW5zLyV7YWJpdmVyfS94aW5lcGx1Z19hb19vdXRfZXNkLnNvCiAle19saWJk aXJ9L3hpbmUvcGx1Z2lucy8le2FiaXZlcn0veGluZXBsdWdfYW9fb3V0X2phY2suc28KLSVpZiAl e3dpdGhfcGF9Ci0le19saWJkaXJ9L3hpbmUvcGx1Z2lucy8le2FiaXZlcn0veGluZXBsdWdfYW9f b3V0X3B1bHNlYXVkaW8uc28KLSVlbmRpZiAjIHBhCiAle19saWJkaXJ9L3hpbmUvcGx1Z2lucy8l e2FiaXZlcn0veGluZXBsdWdfZGVjb2RlX2dka19waXhidWYuc28KICVpZiAwJXshP193aXRob3V0 X2ltYWdlbWFnaWNrOjF9CiAle19saWJkaXJ9L3hpbmUvcGx1Z2lucy8le2FiaXZlcn0veGluZXBs dWdfZGVjb2RlX2ltYWdlLnNvCkBAIC0zODYsNiArNDAzLDEwIEBAIHJtIC1yZiAkUlBNX0JVSUxE X1JPT1QKIAogCiAlY2hhbmdlbG9nCisqIE1vbiBBcHIgMDcgMjAwOCBSZXggRGlldGVyIDxyZGll dGVyQGZlZG9yYXByb2plY3Qub3JnPiAtIDEuMS4xMS4xLTIKKy0gcHVsc2UtcmV3b3JrMiBwYXRj aCAoIzQzOTczMSkKKy0gLXB1bHNlYXVkaW8gc3VicGtnICgjNDM5NzMxKQorCiAqIFN1biBNYXIg MzAgMjAwOCBWaWxsZSBTa3l0dMOkIDx2aWxsZS5za3l0dGEgYXQgaWtpLmZpPiAtIDEuMS4xMS4x LTEKIC0gMS4xLjExLjEgKHNlY3VyaXR5IHVwZGF0ZSwgIzQzODY2MywgQ1ZFLTIwMDgtMTQ4Miku CiAtIFByb3ZpZGUgdmVyc2lvbmVkIHhpbmUtbGliKHBsdWdpbi1hYmkpIHNvIDNyZCBwYXJ0eSBw YWNrYWdlcyBpbnN0YWxsaW5nCgpkaWZmIC0tZ2l0IGEveGluZS1wdWxzZS1yZXdvcmsyLnBhdGNo IGIveGluZS1wdWxzZS1yZXdvcmsyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLjdmMjllZmIKLS0tIC9kZXYvbnVsbAorKysgYi94aW5lLXB1bHNlLXJld29yazIucGF0 Y2gKQEAgLTAsMCArMSwxMDM5IEBACistLS0geGluZS1saWItMS4xLjExLjEvc3JjL2F1ZGlvX291 dC9hdWRpb19wdWxzZV9vdXQuYwkyMDA4LTAzLTI4IDE1OjI0OjQ5LjAwMDAwMDAwMCArMDEwMAor KysrIHhpbmUtbGliLTEuMS4xMS4xLmxlbm5hcnQvc3JjL2F1ZGlvX291dC9hdWRpb19wdWxzZV9v dXQuYwkyMDA4LTA0LTAyIDIyOjU1OjQ5LjAwMDAwMDAwMCArMDIwMAorQEAgLTEsMjggKzEsMjgg QEAKKy0vKiAKKy0gKiBDb3B5cmlnaHQgKEMpIDIwMDAtMjAwNyB0aGUgeGluZSBwcm9qZWN0Cist ICogCisrLyogLSotIE1vZGU6IEM7IGMtYmFzaWMtb2Zmc2V0OiAyOyBpbmRlbnQtdGFicy1tb2Rl OiBuaWwgLSotICovCisrCisrLyoKKysgKiBDb3B5cmlnaHQgKEMpIDIwMDAtMjAwOCB0aGUgeGlu ZSBwcm9qZWN0CisrICoKKyAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB4aW5lLCBhIGZyZWUgdmlk ZW8gcGxheWVyLgorLSAqIAorKyAqCisgICogeGluZSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgICogaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgKiB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl LCBvcgorICAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCistICogCisrICoK KyAgKiB4aW5lIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCisgICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKKyAgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KKy0gKiAKKysgKgorICAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICogYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAgKiBG b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24s IE1BIDAyMTEwLCBVU0EKKyAgKgorLSAqIGFvIHBsdWdpbiBmb3IgcHVsc2VhdWRpbyAocmVuYW1l IG9mIHBvbHlwYXVkaW8pOgorKyAqIGFvIHBsdWdpbiBmb3IgUHVsc2VBdWRpbzoKKyAgKiBodHRw Oi8vMHBvaW50ZXIuZGUvbGVubmFydC9wcm9qZWN0cy9wdWxzYXVkaW8vCisgICoKKy0gKiBvcmln aW5hbGx5IHdyaXR0ZW4gZm9yIHBvbHlwYXVkaW8gc2ltcGxlIGFwaS4gTGVubmFydCB0aGVuIHN1 Z2dlc3RlZAorLSAqIHVzaW5nIHRoZSBhc3luYyBhcGkgZm9yIGJldHRlciBjb250cm9sIChzdWNo IGFzIHZvbHVtZSksIHRoZXJlZm9yZSwgYSBsb3QKKy0gKiBvZiB0aGlzIGNvZGUgY29tZXMgZnJv bSBMZW5uYXJ0J3MgcGF0Y2ggdG8gbXBsYXllci4KKysgKiBEaWVnbyBQZXR0ZW5vLCBMZW5uYXJ0 IFBvZXR0ZXJpbmcKKyAgKi8KKyAKKyAjaWZkZWYgSEFWRV9DT05GSUdfSAorQEAgLTQ4LDE1ICs0 OCw5IEBACisgCisgI2RlZmluZSBHQVBfVE9MRVJBTkNFICAgICAgICBBT19NQVhfR0FQCisgCist LyogQ0hFQ0tNRTogc2hvdWxkIHRoaXMgYmUgY29uZGl0aW9uYWwgb24gYXV0b3Rvb2xzPyAqLwor LWV4dGVybiBjb25zdCBjaGFyICpfX3Byb2duYW1lOworLQorIHR5cGVkZWYgc3RydWN0IHsKKyAg IGF1ZGlvX2RyaXZlcl9jbGFzc190ICBkcml2ZXJfY2xhc3M7CisgICB4aW5lX3QgICAgICAgICAg ICAgICAgICAgICAgKnhpbmU7CistCistICBzdHJ1Y3QgcGFfY29udGV4dCAgICAgICAgICAgKmNv bnRleHQ7ICAgLyo8IFB1bHNlYXVkaW8gY29ubmVjdGlvbiBjb250ZXh0ICovCistICBzdHJ1Y3Qg cGFfdGhyZWFkZWRfbWFpbmxvb3AgKm1haW5sb29wOyAgLyo8IE1haW4gZXZlbnQgbG9vcCBvYmpl Y3QgKi8KKyB9IHB1bHNlX2NsYXNzX3Q7CisgCisgdHlwZWRlZiBzdHJ1Y3QgcHVsc2VfZHJpdmVy X3MgeworQEAgLTY3LDExICs2MSwxMyBAQCB0eXBlZGVmIHN0cnVjdCBwdWxzZV9kcml2ZXJfcyB7 CisgCisgICBjaGFyICAgICAgICAgICAgICpob3N0OyAgICAvKjwgVGhlIGhvc3QgdG8gY29ubmVj dCB0byAqLworICAgY2hhciAgICAgICAgICAgICAqc2luazsgICAgLyo8IFRoZSBzaW5rIHRvIGNv bm5lY3QgdG8gKi8KKy0gIHN0cnVjdCBwYV9zdHJlYW0gKnN0cmVhbTsgIC8qPCBQdWxzZWF1ZGlv IHBsYXliYWNrIHN0cmVhbSBvYmplY3QgKi8KKyAKKy0gIHB0aHJlYWRfbXV0ZXhfdCAgIGluZm9f bXV0ZXg7IC8qKjwgTXV0ZXggZm9yIGluZm8gY2FsbGJhY2sgc2lnbmFsaW5nICovCisrICBwYV90 aHJlYWRlZF9tYWlubG9vcCAqbWFpbmxvb3A7ICAvKjwgTWFpbiBldmVudCBsb29wIG9iamVjdCAq LworKyAgcGFfY29udGV4dCAqY29udGV4dDsgICAgICAgICAgICAgLyo8IFB1bHNlYXVkaW8gY29u bmVjdGlvbiBjb250ZXh0ICovCisrICBwYV9zdHJlYW0gICpzdHJlYW07ICAgICAgICAgICAgICAv KjwgUHVsc2VhdWRpbyBwbGF5YmFjayBzdHJlYW0gb2JqZWN0ICovCisgCisgICBwYV92b2x1bWVf dCAgICAgICBzd3ZvbHVtZTsKKysgIGludCBtdXRlZDsKKyAgIHBhX2N2b2x1bWUgICAgICAgIGN2 b2x1bWU7CisgCisgICBpbnQgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXM7CitAQCAtODIsNjcg Kzc4LDExNyBAQCB0eXBlZGVmIHN0cnVjdCBwdWxzZV9kcml2ZXJfcyB7CisgICB1aW50MzJfdCAg ICAgICAgICBiaXRzX3Blcl9zYW1wbGU7CisgICB1aW50MzJfdCAgICAgICAgICBieXRlc19wZXJf ZnJhbWU7CisgCistICB1aW50MzJfdCAgICAgICAgICBmcmFtZXNfd3JpdHRlbjsKKy0KKyB9IHB1 bHNlX2RyaXZlcl90OworIAorIAorIC8qKgorLSAqIEBicmllZiBDYWxsYmFjayBmdW5jdGlvbiBj YWxsZWQgd2hlbiBhIHN0cmVhbSBvcGVyYXRpb24gc3VjY2VlZAorLSAqIEBwYXJhbSBzdHJlYW0g U3RyZWFtIHdoaWNoIG9wZXJhdGlvbiBoYXMgc3VjY2VlZGVkCistICogQHBhcmFtIHN1Y2Nlc3Mg VGhlIHN1Y2Nlc3MgdmFsdWUgZm9yIHRoZSBvcGVyYXRpb24gKGlnbm9yZWQpCistICogQHBhcmFt IHRoaXNfR2VuIHB1bHNlX2RyaXZlcl90IHBvaW50ZXIgZm9yIHRoZSBQdWxzZUF1ZGlvIG91dHB1 dAorLSAqICAgICAgICBpbnN0YW5jZS4KKysgKiBAYnJpZWYgQ2FsbGJhY2sgZnVuY3Rpb24gY2Fs bGVkIHdoZW4gdGhlIHN0YXRlIG9mIHRoZSBjb250ZXh0IGlzIGNoYW5nZWQKKysgKiBAcGFyYW0g YyBDb250ZXh0IHdoaWNoIGNoYW5nZWQgc3RhdHVzCisrICogQHBhcmFtIHRoaXNfZ2VuIHB1bHNl X2NsYXNzX3QgcG9pbnRlciBmb3IgdGhlIFB1bHNlQXVkaW8gb3V0cHV0IGNsYXNzCisgICovCist c3RhdGljIHZvaWQgX194aW5lX3BhX3N0cmVhbV9zdWNjZXNzX2NhbGxiYWNrKHBhX3N0cmVhbSAq Y29uc3Qgc3RyZWFtLCBjb25zdCBpbnQgc3VjY2VzcywKKy0JCQkJCSAgICAgIHZvaWQgKmNvbnN0 IG11dGV4X2dlbikKKytzdGF0aWMgdm9pZCBfX3hpbmVfcGFfY29udGV4dF9zdGF0ZV9jYWxsYmFj ayhwYV9jb250ZXh0ICpjLCB2b2lkICp0aGlzX2dlbikKKyB7CistICBwdGhyZWFkX211dGV4X3Qg KmNvbnN0IGNvbXBsZXRpb25fbXV0ZXggPSAocHRocmVhZF9tdXRleF90KiltdXRleF9nZW47Cisr ICBwdWxzZV9kcml2ZXJfdCAqIHRoaXMgPSAocHVsc2VfZHJpdmVyX3QqKSB0aGlzX2dlbjsKKysK KysgIHN3aXRjaCAocGFfY29udGV4dF9nZXRfc3RhdGUoYykpIHsKKysKKysgICAgY2FzZSBQQV9D T05URVhUX1JFQURZOgorKyAgICBjYXNlIFBBX0NPTlRFWFRfVEVSTUlOQVRFRDoKKysgICAgY2Fz ZSBQQV9DT05URVhUX0ZBSUxFRDoKKysgICAgICBwYV90aHJlYWRlZF9tYWlubG9vcF9zaWduYWwo dGhpcy0+bWFpbmxvb3AsIDApOworKyAgICAgIGJyZWFrOworIAorLSAgcHRocmVhZF9tdXRleF91 bmxvY2soY29tcGxldGlvbl9tdXRleCk7CisrICAgIGNhc2UgUEFfQ09OVEVYVF9DT05ORUNUSU5H OgorKyAgICBjYXNlIFBBX0NPTlRFWFRfVU5DT05ORUNURUQ6CisrICAgIGNhc2UgUEFfQ09OVEVY VF9BVVRIT1JJWklORzoKKysgICAgY2FzZSBQQV9DT05URVhUX1NFVFRJTkdfTkFNRToKKysgICAg ICBicmVhazsKKysgIH0KKyB9CisgCisgLyoqCistICogQGJyaWVmIENhbGxiYWNrIGZ1bmN0aW9u IGNhbGxlZCB3aGVuIHRoZSBzdGF0ZSBvZiB0aGUgY29udGV4dCBpcyBjaGFuZ2VkCistICogQHBh cmFtIGN0eCBDb250ZXh0IHdoaWNoIG9wZXJhdGlvbiBoYXMgc3VjY2VlZGVkCisrICogQGJyaWVm IENhbGxiYWNrIGZ1bmN0aW9uIGNhbGxlZCB3aGVuIHRoZSBzdGF0ZSBvZiB0aGUgc3RyZWFtIGlz IGNoYW5nZWQKKysgKiBAcGFyYW0gcyBTdHJlYW0gdGhhdCBjaGFuZ2VkIHN0YXR1cworICAqIEBw YXJhbSB0aGlzX2dlbiBwdWxzZV9kcml2ZXJfdCBwb2ludGVyIGZvciB0aGUgUHVsc2VBdWRpbyBv dXRwdXQKKyAgKiAgICAgICAgaW5zdGFuY2UuCisgICovCistc3RhdGljIHZvaWQgX194aW5lX3Bh X2NvbnRleHRfc3RhdHVzX2NhbGxiYWNrKHBhX2NvbnRleHQgKmNvbnN0IGN0eCwgdm9pZCAqY29u c3QgdGhpc19nZW4pCisrc3RhdGljIHZvaWQgX194aW5lX3BhX3N0cmVhbV9zdGF0ZV9jYWxsYmFj ayhwYV9zdHJlYW0gKnMsIHZvaWQgKnRoaXNfZ2VuKQorIHsKKy0gIHB1bHNlX2RyaXZlcl90ICpj b25zdCB0aGlzID0gKHB1bHNlX2RyaXZlcl90Kil0aGlzX2dlbjsKKysgIHB1bHNlX2RyaXZlcl90 ICogdGhpcyA9IChwdWxzZV9kcml2ZXJfdCopIHRoaXNfZ2VuOworKworKyAgc3dpdGNoIChwYV9z dHJlYW1fZ2V0X3N0YXRlKHMpKSB7CisrCisrICAgIGNhc2UgUEFfU1RSRUFNX1JFQURZOgorKyAg ICBjYXNlIFBBX1NUUkVBTV9URVJNSU5BVEVEOgorKyAgICBjYXNlIFBBX1NUUkVBTV9GQUlMRUQ6 CisrICAgICAgcGFfdGhyZWFkZWRfbWFpbmxvb3Bfc2lnbmFsKHRoaXMtPm1haW5sb29wLCAwKTsK KysgICAgICBicmVhazsKKyAKKy0gIHN3aXRjaCAocGFfY29udGV4dF9nZXRfc3RhdGUoY3R4KSkg eworLSAgY2FzZSBQQV9DT05URVhUX1JFQURZOgorLSAgY2FzZSBQQV9DT05URVhUX1RFUk1JTkFU RUQ6CistICBjYXNlIFBBX0NPTlRFWFRfRkFJTEVEOgorLSAgICBwYV90aHJlYWRlZF9tYWlubG9v cF9zaWduYWwodGhpcy0+cGFfY2xhc3MtPm1haW5sb29wLCAwKTsKKy0gICAgYnJlYWs7CistCist ICBjYXNlIFBBX0NPTlRFWFRfQ09OTkVDVElORzoKKy0gIGNhc2UgUEFfQ09OVEVYVF9VTkNPTk5F Q1RFRDoKKy0gIGNhc2UgUEFfQ09OVEVYVF9BVVRIT1JJWklORzoKKy0gIGNhc2UgUEFfQ09OVEVY VF9TRVRUSU5HX05BTUU6CistICAgIGJyZWFrOworKyAgICBjYXNlIFBBX1NUUkVBTV9VTkNPTk5F Q1RFRDoKKysgICAgY2FzZSBQQV9TVFJFQU1fQ1JFQVRJTkc6CisrICAgICAgYnJlYWs7CisgICB9 CisgfQorIAorIC8qKgorLSAqIEBicmllZiBDYWxsYmFjayBmdW5jdGlvbiBjYWxsZWQgd2hlbiBh IGNvbnRleHQgb3BlcmF0aW9uIHN1Y2NlZWQKKysgKiBAYnJpZWYgQ2FsbGJhY2sgZnVuY3Rpb24g Y2FsbGVkIHdoZW4gUEEgYXNrcyBmb3IgbW9yZSBhdWRpbyBkYXRhLgorKyAqIEBwYXJhbSBzIFN0 cmVhbSBvbiB3aGljaCBkYXRhIGlzIHJlcXVlc3RlZAorKyAqIEBwYXJhbSBuYnl0ZXMgdGhlIG51 bWJlciBvZiBieXRlcyBQQSByZXF1ZXN0ZWQKKysgKiBAcGFyYW0gdGhpc19nZW4gcHVsc2VfZHJp dmVyX3QgcG9pbnRlciBmb3IgdGhlIFB1bHNlQXVkaW8gb3V0cHV0CisrICogICAgICAgIGluc3Rh bmNlLgorKyAqLworK3N0YXRpYyB2b2lkIF9feGluZV9wYV9zdHJlYW1fcmVxdWVzdF9jYWxsYmFj ayhwYV9zdHJlYW0gKnMsIHNpemVfdCBuYnl0ZXMsIHZvaWQgKnRoaXNfZ2VuKQorK3sKKysgIHB1 bHNlX2RyaXZlcl90ICogdGhpcyA9IChwdWxzZV9kcml2ZXJfdCopIHRoaXNfZ2VuOworKworKyAg cGFfdGhyZWFkZWRfbWFpbmxvb3Bfc2lnbmFsKHRoaXMtPm1haW5sb29wLCAwKTsKKyt9CisrCisr LyoqCisrICogQGJyaWVmIENhbGxiYWNrIGZ1bmN0aW9uIGNhbGxlZCB3aGVuIFBBIG5vdGlmaWVz IGFib3V0IHNvbWV0aGluZworKyAqIEBwYXJhbSBzIFN0cmVhbSBvbiB3aGljaCB0aGUgbm90aWZp Y2F0aW9uIGhhcHBlbmVkCisrICogQHBhcmFtIHRoaXNfZ2VuIHB1bHNlX2RyaXZlcl90IHBvaW50 ZXIgZm9yIHRoZSBQdWxzZUF1ZGlvIG91dHB1dAorKyAqICAgICAgICBpbnN0YW5jZS4KKysgKi8K KytzdGF0aWMgdm9pZCBfX3hpbmVfcGFfc3RyZWFtX25vdGlmeV9jYWxsYmFjayhwYV9zdHJlYW0g KnMsIHZvaWQgKnRoaXNfZ2VuKQorK3sKKysgIHB1bHNlX2RyaXZlcl90ICogdGhpcyA9IChwdWxz ZV9kcml2ZXJfdCopIHRoaXNfZ2VuOworKworKyAgcGFfdGhyZWFkZWRfbWFpbmxvb3Bfc2lnbmFs KHRoaXMtPm1haW5sb29wLCAwKTsKKyt9CisrCisrLyoqCisrICogQGJyaWVmIENhbGxiYWNrIGZ1 bmN0aW9uIGNhbGxlZCB3aGVuIFBBIGNvbXBsZXRlZCBhbiBvcGVyYXRpb24KKyAgKiBAcGFyYW0g Y3R4IENvbnRleHQgd2hpY2ggb3BlcmF0aW9uIGhhcyBzdWNjZWVkZWQKKy0gKiBAcGFyYW0gc3Vj Y2VzcyBUaGUgc3VjY2VzcyB2YWx1ZSBmb3IgdGhlIG9wZXJhdGlvbiAoaWdub3JlZCkKKysgKiBA cGFyYW0gbmJ5dGVzIHRoZSBudW1iZXIgb2YgYnl0ZXMgUEEgcmVxdWVzdGVkCisgICogQHBhcmFt IHRoaXNfZ2VuIHB1bHNlX2RyaXZlcl90IHBvaW50ZXIgZm9yIHRoZSBQdWxzZUF1ZGlvIG91dHB1 dAorICAqICAgICAgICBpbnN0YW5jZS4KKyAgKi8KKy1zdGF0aWMgdm9pZCBfX3hpbmVfcGFfY29u dGV4dF9zdWNjZXNzX2NhbGxiYWNrKHBhX2NvbnRleHQgKmNvbnN0IGN0eCwgY29uc3QgaW50IHN1 Y2Nlc3MsCistCQkJCQkgICAgICB2b2lkICpjb25zdCB0aGlzX2dlbikKKytzdGF0aWMgdm9pZCBf X3hpbmVfcGFfc3RyZWFtX3N1Y2Nlc3NfY2FsbGJhY2socGFfc3RyZWFtICpzLCBpbnQgc3VjY2Vz cywgdm9pZCAqdGhpc19nZW4pCisgeworLSAgcHVsc2VfZHJpdmVyX3QgKmNvbnN0IHRoaXMgPSAo cHVsc2VfZHJpdmVyX3QqKXRoaXNfZ2VuOworKyAgcHVsc2VfZHJpdmVyX3QgKiB0aGlzID0gKHB1 bHNlX2RyaXZlcl90KikgdGhpc19nZW47CisgCistICBfeF9hc3NlcnQoY3R4KTsgX3hfYXNzZXJ0 KHRoaXMpOworLSAgX3hfYXNzZXJ0KGN0eCA9PSB0aGlzLT5wYV9jbGFzcy0+Y29udGV4dCk7Cisr ICBpZiAoIXN1Y2Nlc3MpCisrICAgIHhwcmludGYgKHRoaXMtPnhpbmUsIFhJTkVfVkVSQk9TSVRZ X0RFQlVHLCAiYXVkaW9fcHVsc2Vfb3V0OiBzdHJlYW0gb3BlcmF0aW9uIGZhaWxlZDogJXNcbiIs IHBhX3N0cmVycm9yKHBhX2NvbnRleHRfZXJybm8odGhpcy0+Y29udGV4dCkpKTsKKyAKKy0gIHBh X3RocmVhZGVkX21haW5sb29wX3NpZ25hbCh0aGlzLT5wYV9jbGFzcy0+bWFpbmxvb3AsIDApOwor KyAgcGFfdGhyZWFkZWRfbWFpbmxvb3Bfc2lnbmFsKHRoaXMtPm1haW5sb29wLCAwKTsKKyt9Cisr CisrLyoqCisrICogQGJyaWVmIENhbGxiYWNrIGZ1bmN0aW9uIGNhbGxlZCB3aGVuIFBBIGNvbXBs ZXRlZCBhbiBvcGVyYXRpb24KKysgKiBAcGFyYW0gYyBDb250ZXh0IG9uIHdoaWNoIG9wZXJhdGlv biBoYXMgc3VjY2VlZGVkCisrICogQHBhcmFtIG5ieXRlcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIFBB IHJlcXVlc3RlZAorKyAqIEBwYXJhbSB0aGlzX2dlbiBwdWxzZV9kcml2ZXJfdCBwb2ludGVyIGZv ciB0aGUgUHVsc2VBdWRpbyBvdXRwdXQKKysgKiAgICAgICAgaW5zdGFuY2UuCisrICovCisrc3Rh dGljIHZvaWQgX194aW5lX3BhX2NvbnRleHRfc3VjY2Vzc19jYWxsYmFjayhwYV9jb250ZXh0ICpj LCBpbnQgc3VjY2Vzcywgdm9pZCAqdGhpc19nZW4pCisreworKyAgcHVsc2VfZHJpdmVyX3QgKnRo aXMgPSAocHVsc2VfZHJpdmVyX3QqKSB0aGlzX2dlbjsKKysKKysgIGlmICghc3VjY2VzcykKKysg ICAgeHByaW50ZiAodGhpcy0+eGluZSwgWElORV9WRVJCT1NJVFlfREVCVUcsICJhdWRpb19wdWxz ZV9vdXQ6IGNvbnRleHQgb3BlcmF0aW9uIGZhaWxlZDogJXNcbiIsIHBhX3N0cmVycm9yKHBhX2Nv bnRleHRfZXJybm8odGhpcy0+Y29udGV4dCkpKTsKKysKKysgIHBhX3RocmVhZGVkX21haW5sb29w X3NpZ25hbCh0aGlzLT5tYWlubG9vcCwgMCk7CisgfQorIAorIC8qKgorQEAgLTE1NiwxNCArMjAy LDE0IEBAIHN0YXRpYyB2b2lkIF9feGluZV9wYV9jb250ZXh0X3N1Y2Nlc3NfY2EKKyAgKiBUaGlz IGZ1bmN0aW9uIHNhdmVzIHRoZSB2b2x1bWUgZmllbGQgb2YgdGhlIHBhc3NlZCBzdHJ1Y3R1cmUg dG8gdGhlCisgICogQGMgY3ZvbHVtZSB2YXJpYWJsZSBvZiB0aGUgb3V0cHV0IGluc3RhbmNlLgor ICAqLworLXN0YXRpYyB2b2lkIF9feGluZV9wYV9zaW5rX2luZm9fY2FsbGJhY2socGFfY29udGV4 dCAqY29uc3QgY3R4LCBjb25zdCBwYV9zaW5rX2lucHV0X2luZm8gKmNvbnN0IGluZm8sCistCQkJ CQkgY29uc3QgaW50IGlzX2xhc3QsIHZvaWQgKmNvbnN0IHVzZXJkYXRhKSB7Cisrc3RhdGljIHZv aWQgX194aW5lX3BhX3NpbmtfaW5mb19jYWxsYmFjayhwYV9jb250ZXh0ICpjLCBjb25zdCBwYV9z aW5rX2lucHV0X2luZm8gKmluZm8sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpbnQgaXNfbGFzdCwgdm9pZCAqdXNlcmRhdGEpIHsKKyAKKyAgIHB1bHNlX2RyaXZl cl90ICpjb25zdCB0aGlzID0gKHB1bHNlX2RyaXZlcl90ICopIHVzZXJkYXRhOworIAorICAgaWYg KGlzX2xhc3QgPCAwKSB7CisgICAgIHhwcmludGYgKHRoaXMtPnhpbmUsIFhJTkVfVkVSQk9TSVRZ X0RFQlVHLCAiYXVkaW9fcHVsc2Vfb3V0OiBGYWlsZWQgdG8gZ2V0IHNpbmsgaW5wdXQgaW5mbzog JXNcbiIsCistICAgICAgICAgICAgIHBhX3N0cmVycm9yKHBhX2NvbnRleHRfZXJybm8odGhpcy0+ cGFfY2xhc3MtPmNvbnRleHQpKSk7CisrICAgICAgICAgICAgIHBhX3N0cmVycm9yKHBhX2NvbnRl eHRfZXJybm8odGhpcy0+Y29udGV4dCkpKTsKKyAgICAgcmV0dXJuOworICAgfQorIAorQEAgLTE3 MSwzNiArMjE3LDkwIEBAIHN0YXRpYyB2b2lkIF9feGluZV9wYV9zaW5rX2luZm9fY2FsbGJhY2sK KyAgICAgICByZXR1cm47CisgCisgICB0aGlzLT5jdm9sdW1lID0gaW5mby0+dm9sdW1lOworKyAg dGhpcy0+c3d2b2x1bWUgPSBwYV9zd192b2x1bWVfdG9fbGluZWFyKHBhX2N2b2x1bWVfYXZnKCZp bmZvLT52b2x1bWUpKTsKKysgIHRoaXMtPm11dGVkID0gaW5mby0+bXV0ZTsKKyt9CisrCisrc3Rh dGljIGludCBjb25uZWN0X2NvbnRleHQocHVsc2VfZHJpdmVyX3QgKnRoaXMpIHsKKysKKysgIGlm ICh0aGlzLT5jb250ZXh0ICYmIChwYV9jb250ZXh0X2dldF9zdGF0ZSh0aGlzLT5jb250ZXh0KSA9 PSBQQV9DT05URVhUX0ZBSUxFRCB8fAorKyAgICAgICAgICAgICAgICAgICAgICAgIHBhX2NvbnRl eHRfZ2V0X3N0YXRlKHRoaXMtPmNvbnRleHQpID09IFBBX0NPTlRFWFRfVEVSTUlOQVRFRCkpIHsK KysgICAgcGFfY29udGV4dF91bnJlZih0aGlzLT5jb250ZXh0KTsKKysgICAgdGhpcy0+Y29udGV4 dCA9IE5VTEw7CisrICB9CisrCisrICBpZiAoIXRoaXMtPmNvbnRleHQpIHsKKysgICAgY2hhciBm bltQQVRIX01BWF0sICpwOworKworKyAgICBpZiAocGFfZ2V0X2JpbmFyeV9uYW1lKGZuLCBzaXpl b2YoZm4pKSkKKysgICAgICBwID0gcGFfcGF0aF9nZXRfZmlsZW5hbWUoZm4pOworKyAgICBlbHNl CisrICAgICAgcCA9ICJYaW5lIjsKKyAKKy0gIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZ0aGlzLT5p bmZvX211dGV4KTsKKysgICAgdGhpcy0+Y29udGV4dCA9IHBhX2NvbnRleHRfbmV3KHBhX3RocmVh ZGVkX21haW5sb29wX2dldF9hcGkodGhpcy0+bWFpbmxvb3ApLCBwKTsKKysgICAgX3hfYXNzZXJ0 KHRoaXMtPmNvbnRleHQpOworKworKyAgICBwYV9jb250ZXh0X3NldF9zdGF0ZV9jYWxsYmFjayh0 aGlzLT5jb250ZXh0LCBfX3hpbmVfcGFfY29udGV4dF9zdGF0ZV9jYWxsYmFjaywgdGhpcyk7Cisr ICB9CisrCisrICBpZiAocGFfY29udGV4dF9nZXRfc3RhdGUodGhpcy0+Y29udGV4dCkgPT0gUEFf Q09OVEVYVF9VTkNPTk5FQ1RFRCkgeworKworKyAgICBpZiAocGFfY29udGV4dF9jb25uZWN0KHRo aXMtPmNvbnRleHQsIHRoaXMtPmhvc3QsIDAsIE5VTEwpIDwgMCkgeworKyAgICAgIHhwcmludGYg KHRoaXMtPnhpbmUsIFhJTkVfVkVSQk9TSVRZX0RFQlVHLCAiYXVkaW9fcHVsc2Vfb3V0OiBmYWls ZWQgdG8gY29ubmVjdCBjb250ZXh0IG9iamVjdCAlc1xuIiwgcGFfc3RyZXJyb3IocGFfY29udGV4 dF9lcnJubyh0aGlzLT5jb250ZXh0KSkpOworKyAgICAgIHJldHVybiAtMTsKKysgICAgfQorKyAg fQorKworKyAgZm9yICg7OykgeworKyAgICBwYV9jb250ZXh0X3N0YXRlX3Qgc3RhdGUgPSBwYV9j b250ZXh0X2dldF9zdGF0ZSh0aGlzLT5jb250ZXh0KTsKKysKKysgICAgaWYgKHN0YXRlID09IFBB X0NPTlRFWFRfRkFJTEVEIHx8IHN0YXRlID09IFBBX0NPTlRFWFRfVEVSTUlOQVRFRCkgeworKyAg ICAgIHhwcmludGYgKHRoaXMtPnhpbmUsIFhJTkVfVkVSQk9TSVRZX0RFQlVHLCAiYXVkaW9fcHVs c2Vfb3V0OiBmYWlsZWQgdG8gY29ubmVjdCBjb250ZXh0IG9iamVjdDogJXNcbiIsIHBhX3N0cmVy cm9yKHBhX2NvbnRleHRfZXJybm8odGhpcy0+Y29udGV4dCkpKTsKKysgICAgICByZXR1cm4gLTE7 CisrICAgIH0KKysKKysgICAgaWYgKHN0YXRlID09IFBBX0NPTlRFWFRfUkVBRFkpCisrICAgICAg YnJlYWs7CisrCisrICAgIHBhX3RocmVhZGVkX21haW5sb29wX3dhaXQodGhpcy0+bWFpbmxvb3Ap OworKyAgfQorKworKyAgcmV0dXJuIDA7CisgfQorIAorIC8qCisgICogb3BlbiB0aGUgYXVkaW8g ZGV2aWNlIGZvciB3cml0aW5nIHRvCisgICovCisgc3RhdGljIGludCBhb19wdWxzZV9vcGVuKGFv X2RyaXZlcl90ICp0aGlzX2dlbiwKKy0JCSAgIHVpbnQzMl90IGJpdHMsIHVpbnQzMl90IHJhdGUs IGludCBtb2RlKQorKyAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBiaXRzLCB1aW50 MzJfdCByYXRlLCBpbnQgbW9kZSkKKyB7CisgICBwdWxzZV9kcml2ZXJfdCAqdGhpcyA9IChwdWxz ZV9kcml2ZXJfdCAqKSB0aGlzX2dlbjsKKy0gIHN0cnVjdCBwYV9zYW1wbGVfc3BlYyBzczsKKy0g IHN0cnVjdCBwYV9idWZmZXJfYXR0ciBhOworLSAgcGFfc3RyZWFtX3N0YXRlX3Qgc3RyZWFtc3Rh dGU7CisrICBwYV9zYW1wbGVfc3BlYyBzczsKKysgIHBhX2NoYW5uZWxfbWFwIGNtOworKyAgaW50 IHI7CisgCisgICB4cHJpbnRmICh0aGlzLT54aW5lLCBYSU5FX1ZFUkJPU0lUWV9ERUJVRywKKy0J ICAgImF1ZGlvX3B1bHNlX291dDogYW9fb3BlbiBiaXRzPSVkIHJhdGU9JWQsIG1vZGU9JWRcbiIs IGJpdHMsIHJhdGUsIG1vZGUpOworKyAgICAgICAgICAgImF1ZGlvX3B1bHNlX291dDogYW9fb3Bl biBiaXRzPSVkIHJhdGU9JWQsIG1vZGU9JWRcbiIsIGJpdHMsIHJhdGUsIG1vZGUpOworIAorICAg aWYgKCAobW9kZSAmIHRoaXMtPmNhcGFiaWxpdGllcykgPT0gMCApIHsKKyAgICAgeHByaW50ZiAo dGhpcy0+eGluZSwgWElORV9WRVJCT1NJVFlfREVCVUcsICJhdWRpb19wdWxzZV9vdXQ6IHVuc3Vw cG9ydGVkIG1vZGUgJTA4eFxuIiwgbW9kZSk7CisgICAgIHJldHVybiAwOworICAgfQorIAorKyAg cGFfdGhyZWFkZWRfbWFpbmxvb3BfbG9jayh0aGlzLT5tYWlubG9vcCk7CisrCisgICBpZiAodGhp cy0+c3RyZWFtKSB7CisgCistICAgIGlmICggbW9kZSA9PSB0aGlzLT5tb2RlICYmIHJhdGUgPT0g dGhpcy0+c2FtcGxlX3JhdGUgJiYKKy0gICAgICAgICBiaXRzID09IHRoaXMtPmJpdHNfcGVyX3Nh bXBsZSApCisrICAgIGlmIChtb2RlID09IHRoaXMtPm1vZGUgJiYgcmF0ZSA9PSB0aGlzLT5zYW1w bGVfcmF0ZSAmJgorKyAgICAgICAgYml0cyA9PSB0aGlzLT5iaXRzX3Blcl9zYW1wbGUpIHsKKysK KysgICAgICBwYV90aHJlYWRlZF9tYWlubG9vcF91bmxvY2sodGhpcy0+bWFpbmxvb3ApOworICAg ICAgIHJldHVybiB0aGlzLT5zYW1wbGVfcmF0ZTsKKysgICAgfQorIAorLSAgICB0aGlzX2dlbi0+ Y2xvc2UodGhpc19nZW4pOworKyAgICBwYV9zdHJlYW1fZGlzY29ubmVjdCh0aGlzLT5zdHJlYW0p OworKyAgICBwYV9zdHJlYW1fdW5yZWYodGhpcy0+c3RyZWFtKTsKKysgICAgdGhpcy0+c3RyZWFt ID0gTlVMTDsKKyAgIH0KKyAKKyAgIHRoaXMtPm1vZGUgICAgICAgICAgICAgICAgICAgPSBtb2Rl OworQEAgLTIyMSw2ICszMjEsOCBAQCBzdGF0aWMgaW50IGFvX3B1bHNlX29wZW4oYW9fZHJpdmVy X3QgKnRoCisgICAgIGNhc2UgMzI6CisgICAgICAgc3MuZm9ybWF0ID0gUEFfU0FNUExFX0ZMT0FU MzJORTsKKyAgICAgICBicmVhazsKKysgICAgZGVmYXVsdDoKKysgICAgICBfeF9hc3NlcnQoISJT aG91bGQgbm90IGJlIHJlYWNoZWQiKTsKKyAgIH0KKyAKKyAgIGlmICghcGFfc2FtcGxlX3NwZWNf dmFsaWQoJnNzKSkgeworQEAgLTIyOCw3MCArMzMwLDg2IEBAIHN0YXRpYyBpbnQgYW9fcHVsc2Vf b3Blbihhb19kcml2ZXJfdCAqdGgKKyAgICAgZ290byBmYWlsOworICAgfQorIAorLSAgaWYgKCB0 aGlzLT5wYV9jbGFzcy0+Y29udGV4dCAmJiBwYV9jb250ZXh0X2dldF9zdGF0ZSh0aGlzLT5wYV9j bGFzcy0+Y29udGV4dCkgPiBQQV9DT05URVhUX1JFQURZICkgeworLSAgICBwYV9jb250ZXh0X3Vu cmVmKHRoaXMtPnBhX2NsYXNzLT5jb250ZXh0KTsKKy0gICAgdGhpcy0+cGFfY2xhc3MtPmNvbnRl eHQgPSBOVUxMOworLSAgfQorLQorLSAgaWYgKCB0aGlzLT5wYV9jbGFzcy0+Y29udGV4dCA9PSBO VUxMICkgeworLSAgICB0aGlzLT5wYV9jbGFzcy0+Y29udGV4dCA9IHBhX2NvbnRleHRfbmV3KHBh X3RocmVhZGVkX21haW5sb29wX2dldF9hcGkodGhpcy0+cGFfY2xhc3MtPm1haW5sb29wKSwKKy0J CQkJCSAgICAgX19wcm9nbmFtZSk7CistICB9CistCistICBwYV9jb250ZXh0X3JlZih0aGlzLT5w YV9jbGFzcy0+Y29udGV4dCk7CisrICBjbS5jaGFubmVscyA9IHNzLmNoYW5uZWxzOworIAorLSAg aWYgKCBwYV9jb250ZXh0X2dldF9zdGF0ZSh0aGlzLT5wYV9jbGFzcy0+Y29udGV4dCkgPT0gUEFf Q09OVEVYVF9VTkNPTk5FQ1RFRCApIHsKKy0gICAgaW50IHJldDsKKysgIHN3aXRjaCAobW9kZSkg eworKyAgICBjYXNlIEFPX0NBUF9NT0RFX01PTk86CisrICAgICAgY20ubWFwWzBdID0gUEFfQ0hB Tk5FTF9QT1NJVElPTl9NT05POworKyAgICAgIF94X2Fzc2VydChjbS5jaGFubmVscyA9PSAxKTsK KysgICAgICBicmVhazsKKyAKKy0gICAgcGFfdGhyZWFkZWRfbWFpbmxvb3BfbG9jayh0aGlzLT5w YV9jbGFzcy0+bWFpbmxvb3ApOworLSAgICByZXQgPSBwYV9jb250ZXh0X2Nvbm5lY3QodGhpcy0+ cGFfY2xhc3MtPmNvbnRleHQsIHRoaXMtPmhvc3QsIDEsIE5VTEwpOworLSAgICBpZiAoIHJldCA8 IDAgKQorLSAgICAgIGdvdG8gZmFpbF91bmxvY2s7CisrICAgIGNhc2UgQU9fQ0FQX01PREVfU1RF UkVPOgorKyAgICAgIGNtLm1hcFswXSA9IFBBX0NIQU5ORUxfUE9TSVRJT05fRlJPTlRfTEVGVDsK KysgICAgICBjbS5tYXBbMV0gPSBQQV9DSEFOTkVMX1BPU0lUSU9OX0ZST05UX1JJR0hUOworKyAg ICAgIF94X2Fzc2VydChjbS5jaGFubmVscyA9PSAyKTsKKysgICAgICBicmVhazsKKyAKKy0gICAg cGFfY29udGV4dF9zZXRfc3RhdGVfY2FsbGJhY2sodGhpcy0+cGFfY2xhc3MtPmNvbnRleHQsIF9f eGluZV9wYV9jb250ZXh0X3N0YXR1c19jYWxsYmFjaywgdGhpcyk7CisrICAgIGNhc2UgQU9fQ0FQ X01PREVfNENIQU5ORUw6CisrICAgICAgY20ubWFwWzBdID0gUEFfQ0hBTk5FTF9QT1NJVElPTl9G Uk9OVF9MRUZUOworKyAgICAgIGNtLm1hcFsxXSA9IFBBX0NIQU5ORUxfUE9TSVRJT05fRlJPTlRf UklHSFQ7CisrICAgICAgY20ubWFwWzJdID0gUEFfQ0hBTk5FTF9QT1NJVElPTl9SRUFSX0xFRlQ7 CisrICAgICAgY20ubWFwWzNdID0gUEFfQ0hBTk5FTF9QT1NJVElPTl9SRUFSX1JJR0hUOworKyAg ICAgIF94X2Fzc2VydChjbS5jaGFubmVscyA9PSA0KTsKKysgICAgICBicmVhazsKKyAKKy0gICAg cGFfdGhyZWFkZWRfbWFpbmxvb3Bfd2FpdCh0aGlzLT5wYV9jbGFzcy0+bWFpbmxvb3ApOworLSAg ICBwYV90aHJlYWRlZF9tYWlubG9vcF91bmxvY2sodGhpcy0+cGFfY2xhc3MtPm1haW5sb29wKTsK KysgICAgY2FzZSBBT19DQVBfTU9ERV80XzFDSEFOTkVMOgorKyAgICBjYXNlIEFPX0NBUF9NT0RF XzVDSEFOTkVMOgorKyAgICBjYXNlIEFPX0NBUF9NT0RFXzVfMUNIQU5ORUw6CisrICAgICAgY20u bWFwWzBdID0gUEFfQ0hBTk5FTF9QT1NJVElPTl9GUk9OVF9MRUZUOworKyAgICAgIGNtLm1hcFsx XSA9IFBBX0NIQU5ORUxfUE9TSVRJT05fRlJPTlRfUklHSFQ7CisrICAgICAgY20ubWFwWzJdID0g UEFfQ0hBTk5FTF9QT1NJVElPTl9SRUFSX0xFRlQ7CisrICAgICAgY20ubWFwWzNdID0gUEFfQ0hB Tk5FTF9QT1NJVElPTl9SRUFSX1JJR0hUOworKyAgICAgIGNtLm1hcFs0XSA9IFBBX0NIQU5ORUxf UE9TSVRJT05fRlJPTlRfQ0VOVEVSOworKyAgICAgIGNtLm1hcFs1XSA9IFBBX0NIQU5ORUxfUE9T SVRJT05fTEZFOworKyAgICAgIGNtLmNoYW5uZWxzID0gNjsKKysgICAgICBicmVhazsKKysgICAg ZGVmYXVsdDoKKysgICAgICBfeF9hc3NlcnQoISJTaG91bGQgbm90IGJlIHJlYWNoZWQiKTsKKyAg IH0KKyAKKy0gIGlmIChwYV9jb250ZXh0X2dldF9zdGF0ZSh0aGlzLT5wYV9jbGFzcy0+Y29udGV4 dCkgIT0gUEFfQ09OVEVYVF9SRUFEWSkgeworLSAgICB4cHJpbnRmICh0aGlzLT54aW5lLCBYSU5F X1ZFUkJPU0lUWV9ERUJVRywgImF1ZGlvX3B1bHNlX291dDogRmFpbGVkIHRvIGNvbm5lY3QgdG8g c2VydmVyOiAlc1xuIiwKKy0JICAgICBwYV9zdHJlcnJvcihwYV9jb250ZXh0X2Vycm5vKHRoaXMt PnBhX2NsYXNzLT5jb250ZXh0KSkpOworKyAgaWYgKCFwYV9jaGFubmVsX21hcF92YWxpZCgmY20p KSB7CisrICAgIHhwcmludGYgKHRoaXMtPnhpbmUsIFhJTkVfVkVSQk9TSVRZX0RFQlVHLCAiYXVk aW9fcHVsc2Vfb3V0OiBJbnZhbGlkIGNoYW5uZWwgbWFwXG4iKTsKKyAgICAgZ290byBmYWlsOwor ICAgfQorIAorLSAgdGhpcy0+c3RyZWFtID0gcGFfc3RyZWFtX25ldyh0aGlzLT5wYV9jbGFzcy0+ Y29udGV4dCwgImF1ZGlvIHN0cmVhbSIsICZzcywgTlVMTCk7CisrICBpZiAoY29ubmVjdF9jb250 ZXh0KHRoaXMpIDwgMCkKKysgICAgZ290byBmYWlsOworKworKyAgX3hfYXNzZXJ0KCF0aGlzLT5z dHJlYW0pOworKyAgdGhpcy0+c3RyZWFtID0gcGFfc3RyZWFtX25ldyh0aGlzLT5jb250ZXh0LCAi QXVkaW8gU3RyZWFtIiwgJnNzLCAmY20pOworICAgX3hfYXNzZXJ0KHRoaXMtPnN0cmVhbSk7Cisg CistICBhLm1heGxlbmd0aCA9IHBhX2J5dGVzX3Blcl9zZWNvbmQoJnNzKSoxOworLSAgYS50bGVu Z3RoID0gYS5tYXhsZW5ndGgqOS8xMDsKKy0gIGEucHJlYnVmID0gYS50bGVuZ3RoLzI7CistICBh Lm1pbnJlcSA9IGEudGxlbmd0aC8xMDsKKysgIHBhX3N0cmVhbV9zZXRfc3RhdGVfY2FsbGJhY2so dGhpcy0+c3RyZWFtLCBfX3hpbmVfcGFfc3RyZWFtX3N0YXRlX2NhbGxiYWNrLCB0aGlzKTsKKysg IHBhX3N0cmVhbV9zZXRfd3JpdGVfY2FsbGJhY2sodGhpcy0+c3RyZWFtLCBfX3hpbmVfcGFfc3Ry ZWFtX3JlcXVlc3RfY2FsbGJhY2ssIHRoaXMpOworKyAgcGFfc3RyZWFtX3NldF9sYXRlbmN5X3Vw ZGF0ZV9jYWxsYmFjayh0aGlzLT5zdHJlYW0sIF9feGluZV9wYV9zdHJlYW1fbm90aWZ5X2NhbGxi YWNrLCB0aGlzKTsKKyAKKy0gIHBhX3N0cmVhbV9jb25uZWN0X3BsYXliYWNrKHRoaXMtPnN0cmVh bSwgdGhpcy0+c2luaywgJmEsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQV9TVFJF QU1fSU5URVJQT0xBVEVfVElNSU5HfFBBX1NUUkVBTV9BVVRPX1RJTUlOR19VUERBVEUsIAorKyAg ciA9IHBhX3N0cmVhbV9jb25uZWN0X3BsYXliYWNrKHRoaXMtPnN0cmVhbSwgdGhpcy0+c2luaywg TlVMTCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBX1NUUkVBTV9JTlRFUlBPTEFU RV9USU1JTkd8UEFfU1RSRUFNX0FVVE9fVElNSU5HX1VQREFURSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE5VTEwsIE5VTEwpOworIAorLSAgZG8geworLSAgICB4aW5lX3VzZWNfc2xl ZXAgKDEwMCk7CisrICBmb3IgKDs7KSB7CisrICAgIHBhX2NvbnRleHRfc3RhdGVfdCBjc3RhdGUg PSBwYV9jb250ZXh0X2dldF9zdGF0ZSh0aGlzLT5jb250ZXh0KTsKKysgICAgcGFfc3RyZWFtX3N0 YXRlX3Qgc3N0YXRlID0gcGFfc3RyZWFtX2dldF9zdGF0ZSh0aGlzLT5zdHJlYW0pOworKworKyAg ICBpZiAoY3N0YXRlID09IFBBX0NPTlRFWFRfRkFJTEVEIHx8IGNzdGF0ZSA9PSBQQV9DT05URVhU X1RFUk1JTkFURUQgfHwKKysgICAgICAgIHNzdGF0ZSA9PSBQQV9TVFJFQU1fRkFJTEVEIHx8IHNz dGF0ZSA9PSBQQV9TVFJFQU1fVEVSTUlOQVRFRCkgeworKyAgICAgIHhwcmludGYgKHRoaXMtPnhp bmUsIFhJTkVfVkVSQk9TSVRZX0RFQlVHLCAiYXVkaW9fcHVsc2Vfb3V0OiBmYWlsZWQgdG8gY29u bmVjdCBjb250ZXh0IG9iamVjdDogJXNcbiIsIHBhX3N0cmVycm9yKHBhX2NvbnRleHRfZXJybm8o dGhpcy0+Y29udGV4dCkpKTsKKysgICAgICBnb3RvIGZhaWw7CisrICAgIH0KKyAKKy0gICAgc3Ry ZWFtc3RhdGUgPSBwYV9zdHJlYW1fZ2V0X3N0YXRlKHRoaXMtPnN0cmVhbSk7CistICB9IHdoaWxl IChzdHJlYW1zdGF0ZSA8IFBBX1NUUkVBTV9SRUFEWSk7CistICAgICAKKy0gIGlmIChzdHJlYW1z dGF0ZSAhPSBQQV9TVFJFQU1fUkVBRFkpIHsKKy0gICAgeHByaW50ZiAodGhpcy0+eGluZSwgWElO RV9WRVJCT1NJVFlfTE9HLCAiYXVkaW9fcHVsc2Vfb3V0OiBGYWlsZWQgdG8gY29ubmVjdCB0byBz ZXJ2ZXI6ICVzXG4iLAorLSAgICAgICAgICAgICBwYV9zdHJlcnJvcihwYV9jb250ZXh0X2Vycm5v KHRoaXMtPnBhX2NsYXNzLT5jb250ZXh0KSkpOworLSAgICBnb3RvIGZhaWw7CisrICAgIGlmIChz c3RhdGUgPT0gUEFfU1RSRUFNX1JFQURZKQorKyAgICAgIGJyZWFrOworKworKyAgICBwYV90aHJl YWRlZF9tYWlubG9vcF93YWl0KHRoaXMtPm1haW5sb29wKTsKKyAgIH0KKy0gIHRoaXMtPmZyYW1l c193cml0dGVuID0gMDsKKyAKKy0gIHRoaXMtPmFvX2RyaXZlci5zZXRfcHJvcGVydHkodGhpcywg QU9fUFJPUF9QQ01fVk9MLCAxMDApOworKyAgcGFfdGhyZWFkZWRfbWFpbmxvb3BfdW5sb2NrKHRo aXMtPm1haW5sb29wKTsKKyAKKyAgIHJldHVybiB0aGlzLT5zYW1wbGVfcmF0ZTsKKyAKKy0gZmFp bF91bmxvY2s6CistICBwYV90aHJlYWRlZF9tYWlubG9vcF91bmxvY2sodGhpcy0+cGFfY2xhc3Mt Pm1haW5sb29wKTsKKyAgZmFpbDoKKysKKysgIHBhX3RocmVhZGVkX21haW5sb29wX3VubG9jayh0 aGlzLT5tYWlubG9vcCk7CisgICB0aGlzX2dlbi0+Y2xvc2UodGhpc19nZW4pOworICAgcmV0dXJu IDA7CisgfQorQEAgLTMxOSwyMTcgKzQzNywzNDggQEAgc3RhdGljIGludCBhb19wdWxzZV93cml0 ZShhb19kcml2ZXJfdCAqdAorIHsKKyAgIHB1bHNlX2RyaXZlcl90ICp0aGlzID0gKHB1bHNlX2Ry aXZlcl90ICopIHRoaXNfZ2VuOworICAgc2l6ZV90IHNpemUgPSBudW1fZnJhbWVzICogdGhpcy0+ Ynl0ZXNfcGVyX2ZyYW1lOworLSAgaW50IHJldCA9IDA7CistICAKKy0gIGlmICggIXRoaXMtPnN0 cmVhbSB8fCAhdGhpcy0+cGFfY2xhc3MtPmNvbnRleHQpCistICAgIHJldHVybiAtMTsKKy0KKy0g IHN3aXRjaCggcGFfc3RyZWFtX2dldF9zdGF0ZSh0aGlzLT5zdHJlYW0pICkgeworLSAgY2FzZSBQ QV9TVFJFQU1fUkVBRFk6CistICAgIHdoaWxlIChzaXplID4gMCkgeworLSAgICAgIHNpemVfdCBs OworKyAgaW50IHJldCA9IC0xOworKyAgc2l6ZV90IGRvbmUgPSAwOworIAorLSAgICAgIHdoaWxl ICghKGwgPSBwYV9zdHJlYW1fd3JpdGFibGVfc2l6ZSh0aGlzLT5zdHJlYW0pKSkgeworLSAgICAg ICAgeGluZV91c2VjX3NsZWVwICgxMDAwMCk7CistICAgICAgfQorKyAgcGFfdGhyZWFkZWRfbWFp bmxvb3BfbG9jayh0aGlzLT5tYWlubG9vcCk7CisgCistICAgICAgaWYgKGwgPiBzaXplKQorLSAg ICAgICAgbCA9IHNpemU7CistICAgICAgICAKKy0gICAgICBwYV9zdHJlYW1fd3JpdGUodGhpcy0+ c3RyZWFtLCBkYXRhLCBsLCBOVUxMLCAwLCBQQV9TRUVLX1JFTEFUSVZFKTsKKy0gICAgICBkYXRh ID0gKGludDE2X3QgKikgKCh1aW50OF90KikgZGF0YSArIGwpOworLSAgICAgIHNpemUgLT0gbDsK Ky0gICAgfQorKyAgd2hpbGUgKHNpemUgPiAwKSB7CisrICAgIHNpemVfdCBsOworIAorLSAgICB0 aGlzLT5mcmFtZXNfd3JpdHRlbiArPSBudW1fZnJhbWVzOworKyAgICBmb3IgKDs7KSB7CisgCist ICAgIGlmIChwYV9zdHJlYW1fZ2V0X3N0YXRlKHRoaXMtPnN0cmVhbSkgPT0gUEFfU1RSRUFNX1JF QURZKQorLSAgICAgIHJldCA9IDE7CisrICAgICAgaWYgKCF0aGlzLT5zdHJlYW0gfHwKKysgICAg ICAgICAgIXRoaXMtPmNvbnRleHQgfHwKKysgICAgICAgICAgcGFfY29udGV4dF9nZXRfc3RhdGUo dGhpcy0+Y29udGV4dCkgIT0gUEFfQ09OVEVYVF9SRUFEWSB8fAorKyAgICAgICAgICBwYV9zdHJl YW1fZ2V0X3N0YXRlKHRoaXMtPnN0cmVhbSkgIT0gUEFfU1RSRUFNX1JFQURZKQorKyAgICAgICAg Z290byBmaW5pc2g7CisgCistICAgIGJyZWFrOworKyAgICAgIGlmICgobCA9IHBhX3N0cmVhbV93 cml0YWJsZV9zaXplKHRoaXMtPnN0cmVhbSkpID09IChzaXplX3QpIC0xKQorKyAgICAgICAgZ290 byBmaW5pc2g7CisrCisrICAgICAgaWYgKGwgPiAwKQorKyAgICAgICAgYnJlYWs7CisrCisrICAg ICAgcGFfdGhyZWFkZWRfbWFpbmxvb3Bfd2FpdCh0aGlzLT5tYWlubG9vcCk7CisrICAgIH0KKysK KysgICAgaWYgKGwgPiBzaXplKQorKyAgICAgIGwgPSBzaXplOworKworKyAgICBwYV9zdHJlYW1f d3JpdGUodGhpcy0+c3RyZWFtLCBkYXRhLCBsLCBOVUxMLCAwLCBQQV9TRUVLX1JFTEFUSVZFKTsK KysgICAgZGF0YSA9IChpbnQxNl90ICopICgodWludDhfdCopIGRhdGEgKyBsKTsKKysgICAgc2l6 ZSAtPSBsOworKyAgICBkb25lICs9IGw7CisgICB9CisgCisrICByZXQgPSBkb25lOworKworK2Zp bmlzaDoKKysKKysgIHBhX3RocmVhZGVkX21haW5sb29wX3VubG9jayh0aGlzLT5tYWlubG9vcCk7 CisrCisrLyogICBmcHJpbnRmKHN0ZGVyciwgIndyaXRlLW91dFxuIik7ICovCisrCisgICByZXR1 cm4gcmV0OworLX0KKyAKKyt9CisgCisgc3RhdGljIGludCBhb19wdWxzZV9kZWxheSAoYW9fZHJp dmVyX3QgKnRoaXNfZ2VuKQorIHsKKyAgIHB1bHNlX2RyaXZlcl90ICp0aGlzID0gKHB1bHNlX2Ry aXZlcl90ICopIHRoaXNfZ2VuOworLSAgcGFfdXNlY190IGxhdGVuY3kgPSAwOworLSAgdW5zaWdu ZWQgaW50IGRlbGF5X2ZyYW1lczsKKysgIGludCByZXQgPSAwOworIAorLSAgaWYgKCAhIHRoaXMt PnN0cmVhbSApIHJldHVybiB0aGlzLT5mcmFtZXNfd3JpdHRlbjsKKysvKiAgIGZwcmludGYoc3Rk ZXJyLCAiZGVsYXktaW5cbiIpOyAqLworIAorLSAgaWYgKHBhX3N0cmVhbV9nZXRfbGF0ZW5jeSh0 aGlzLT5zdHJlYW0sICZsYXRlbmN5LCBOVUxMKSA8IDApIHsKKy0gICAgcGFfY29udGV4dF91bnJl Zih0aGlzLT5wYV9jbGFzcy0+Y29udGV4dCk7CistICAgIHRoaXMtPnBhX2NsYXNzLT5jb250ZXh0 ID0gTlVMTDsKKysgIHBhX3RocmVhZGVkX21haW5sb29wX2xvY2sodGhpcy0+bWFpbmxvb3ApOwor IAorLSAgICBwYV9zdHJlYW1fZGlzY29ubmVjdCh0aGlzLT5zdHJlYW0pOworLSAgICBwYV9zdHJl YW1fdW5yZWYodGhpcy0+c3RyZWFtKTsKKy0gICAgdGhpcy0+c3RyZWFtID0gTlVMTDsKKysgIGZv ciAoOzspIHsKKysgICAgcGFfdXNlY190IGxhdGVuY3kgPSAwOworIAorLSAgICByZXR1cm4gMDsK KysgICAgaWYgKCF0aGlzLT5zdHJlYW0gfHwKKysgICAgICAgICF0aGlzLT5jb250ZXh0IHx8Cisr ICAgICAgICBwYV9jb250ZXh0X2dldF9zdGF0ZSh0aGlzLT5jb250ZXh0KSAhPSBQQV9DT05URVhU X1JFQURZIHx8CisrICAgICAgICBwYV9zdHJlYW1fZ2V0X3N0YXRlKHRoaXMtPnN0cmVhbSkgIT0g UEFfU1RSRUFNX1JFQURZKQorKyAgICAgIGdvdG8gZmluaXNoOworKworKyAgICBpZiAocGFfc3Ry ZWFtX2dldF9sYXRlbmN5KHRoaXMtPnN0cmVhbSwgJmxhdGVuY3ksIE5VTEwpID49IDApIHsKKysg ICAgICByZXQgPSAoaW50KSAoKGxhdGVuY3kgKiB0aGlzLT5zYW1wbGVfcmF0ZSkgLyAxMDAwMDAw KTsKKysgICAgICBnb3RvIGZpbmlzaDsKKysgICAgfQorKworKyAgICBpZiAocGFfY29udGV4dF9l cnJubyh0aGlzLT5jb250ZXh0KSAhPSBQQV9FUlJfTk9EQVRBKSB7CisrICAgICAgeHByaW50ZiAo dGhpcy0+eGluZSwgWElORV9WRVJCT1NJVFlfREVCVUcsICJhdWRpb19wdWxzZV9vdXQ6IGZhaWxl ZCB0byBxdWVyeSBsYXRlbmN5OiAlc1xuIiwgcGFfc3RyZXJyb3IocGFfY29udGV4dF9lcnJubyh0 aGlzLT5jb250ZXh0KSkpOworKyAgICAgIGdvdG8gZmluaXNoOworKyAgICB9CisrCisrICAgIHBh X3RocmVhZGVkX21haW5sb29wX3dhaXQodGhpcy0+bWFpbmxvb3ApOworICAgfQorIAorLSAgLyog Y29udmVydCBsYXRlbmN5ICh1cykgdG8gZnJhbWUgdW5pdHMuICovCistICBkZWxheV9mcmFtZXMg PSAoaW50KShsYXRlbmN5ICogdGhpcy0+c2FtcGxlX3JhdGUgLyAxMDAwMDAwKTsKKytmaW5pc2g6 CisgCistICBpZiggZGVsYXlfZnJhbWVzID4gdGhpcy0+ZnJhbWVzX3dyaXR0ZW4gKQorLSAgICBy ZXR1cm4gdGhpcy0+ZnJhbWVzX3dyaXR0ZW47CistICBlbHNlCistICAgIHJldHVybiBkZWxheV9m cmFtZXM7CisrICBwYV90aHJlYWRlZF9tYWlubG9vcF91bmxvY2sodGhpcy0+bWFpbmxvb3ApOwor KworKyAgcmV0dXJuIHJldDsKKyB9CisgCisgc3RhdGljIHZvaWQgYW9fcHVsc2VfY2xvc2UoYW9f ZHJpdmVyX3QgKnRoaXNfZ2VuKQorIHsKKyAgIHB1bHNlX2RyaXZlcl90ICp0aGlzID0gKHB1bHNl X2RyaXZlcl90ICopIHRoaXNfZ2VuOworLSAgCistICBpZiAodGhpcy0+c3RyZWFtKSB7CistICAg IGlmIChwYV9zdHJlYW1fZ2V0X3N0YXRlKHRoaXMtPnN0cmVhbSkgPT0gUEFfU1RSRUFNX1JFQURZ KSB7CistICAgICAgcHRocmVhZF9tdXRleF90IGNvbXBsZXRpb25fY2FsbGJhY2sgPSBQVEhSRUFE X01VVEVYX0lOSVRJQUxJWkVSOyBwdGhyZWFkX211dGV4X2xvY2soJmNvbXBsZXRpb25fY2FsbGJh Y2spOworLSAgICAgIHBhX3N0cmVhbV9kcmFpbih0aGlzLT5zdHJlYW0sIF9feGluZV9wYV9zdHJl YW1fc3VjY2Vzc19jYWxsYmFjaywgJmNvbXBsZXRpb25fY2FsbGJhY2spOworIAorLSAgICAgIHB0 aHJlYWRfbXV0ZXhfbG9jaygmY29tcGxldGlvbl9jYWxsYmFjayk7CistICAgICAgcHRocmVhZF9t dXRleF9kZXN0cm95KCZjb21wbGV0aW9uX2NhbGxiYWNrKTsKKy0gICAgfQorKyAgcGFfdGhyZWFk ZWRfbWFpbmxvb3BfbG9jayh0aGlzLT5tYWlubG9vcCk7CisgCisrICBpZiAodGhpcy0+c3RyZWFt KSB7CisgICAgIHBhX3N0cmVhbV9kaXNjb25uZWN0KHRoaXMtPnN0cmVhbSk7CisgICAgIHBhX3N0 cmVhbV91bnJlZih0aGlzLT5zdHJlYW0pOworICAgICB0aGlzLT5zdHJlYW0gPSBOVUxMOworLQor LSAgICBwYV9jb250ZXh0X3VucmVmKHRoaXMtPnBhX2NsYXNzLT5jb250ZXh0KTsKKyAgIH0KKysK KysgIHBhX3RocmVhZGVkX21haW5sb29wX3VubG9jayh0aGlzLT5tYWlubG9vcCk7CisgfQorIAor IHN0YXRpYyB1aW50MzJfdCBhb19wdWxzZV9nZXRfY2FwYWJpbGl0aWVzIChhb19kcml2ZXJfdCAq dGhpc19nZW4pIHsKKyAgIHB1bHNlX2RyaXZlcl90ICp0aGlzID0gKHB1bHNlX2RyaXZlcl90ICop IHRoaXNfZ2VuOworKworICAgcmV0dXJuIHRoaXMtPmNhcGFiaWxpdGllczsKKyB9CisgCistc3Rh dGljIHZvaWQgYW9fcHVsc2VfZXhpdChhb19kcml2ZXJfdCAqdGhpc19nZW4pCisteworK3N0YXRp YyB2b2lkIGFvX3B1bHNlX2V4aXQoYW9fZHJpdmVyX3QgKnRoaXNfZ2VuKSB7CisgICBwdWxzZV9k cml2ZXJfdCAqdGhpcyA9IChwdWxzZV9kcml2ZXJfdCAqKSB0aGlzX2dlbjsKKyAKKy0gIGZyZWUg KHRoaXMpOworKyAgYW9fcHVsc2VfY2xvc2UodGhpc19nZW4pOworKworKyAgcGFfdGhyZWFkZWRf bWFpbmxvb3BfbG9jayh0aGlzLT5tYWlubG9vcCk7CisrCisrICBpZiAodGhpcy0+Y29udGV4dCkg eworKyAgICBwYV9jb250ZXh0X2Rpc2Nvbm5lY3QodGhpcy0+Y29udGV4dCk7CisrICAgIHBhX2Nv bnRleHRfdW5yZWYodGhpcy0+Y29udGV4dCk7CisrICB9CisrCisrICBwYV90aHJlYWRlZF9tYWlu bG9vcF91bmxvY2sodGhpcy0+bWFpbmxvb3ApOworKworKyAgcGFfdGhyZWFkZWRfbWFpbmxvb3Bf ZnJlZSh0aGlzLT5tYWlubG9vcCk7CisrCisrICBmcmVlKHRoaXMtPmhvc3QpOworKyAgZnJlZSh0 aGlzLT5zaW5rKTsKKysgIGZyZWUodGhpcyk7CisrfQorKworK3N0YXRpYyBpbnQgd2FpdF9mb3Jf b3BlcmF0aW9uKHB1bHNlX2RyaXZlcl90ICp0aGlzLCBwYV9vcGVyYXRpb24gKm8pIHsKKysKKysg IGZvciAoOzspIHsKKysKKysgICAgaWYgKCF0aGlzLT5zdHJlYW0gfHwKKysgICAgICAgICF0aGlz LT5jb250ZXh0IHx8CisrICAgICAgICBwYV9jb250ZXh0X2dldF9zdGF0ZSh0aGlzLT5jb250ZXh0 KSAhPSBQQV9DT05URVhUX1JFQURZIHx8CisrICAgICAgICBwYV9zdHJlYW1fZ2V0X3N0YXRlKHRo aXMtPnN0cmVhbSkgIT0gUEFfU1RSRUFNX1JFQURZKQorKyAgICAgIHJldHVybiAtMTsKKysKKysg ICAgaWYgKHBhX29wZXJhdGlvbl9nZXRfc3RhdGUobykgIT0gUEFfT1BFUkFUSU9OX1JVTk5JTkcp CisrICAgICAgcmV0dXJuIDA7CisrCisrICAgIHBhX3RocmVhZGVkX21haW5sb29wX3dhaXQodGhp cy0+bWFpbmxvb3ApOworKyAgfQorIH0KKyAKKyBzdGF0aWMgaW50IGFvX3B1bHNlX2dldF9wcm9w ZXJ0eSAoYW9fZHJpdmVyX3QgKnRoaXNfZ2VuLCBpbnQgcHJvcGVydHkpIHsKKyAgIHB1bHNlX2Ry aXZlcl90ICp0aGlzID0gKHB1bHNlX2RyaXZlcl90ICopIHRoaXNfZ2VuOworICAgaW50IHJlc3Vs dCA9IDA7CisrICBwYV9vcGVyYXRpb24gKm8gPSBOVUxMOworIAorLSAgaWYgKCAhIHRoaXMtPnN0 cmVhbSB8fCAhIHRoaXMtPnBhX2NsYXNzLT5jb250ZXh0ICkKKysgIHBhX3RocmVhZGVkX21haW5s b29wX2xvY2sodGhpcy0+bWFpbmxvb3ApOworKworKyAgaWYgKCF0aGlzLT5zdHJlYW0gfHwKKysg ICAgICAhdGhpcy0+Y29udGV4dCB8fAorKyAgICAgIHBhX2NvbnRleHRfZ2V0X3N0YXRlKHRoaXMt PmNvbnRleHQpICE9IFBBX0NPTlRFWFRfUkVBRFkgfHwKKysgICAgICBwYV9zdHJlYW1fZ2V0X3N0 YXRlKHRoaXMtPnN0cmVhbSkgIT0gUEFfU1RSRUFNX1JFQURZKSB7CisrICAgIHBhX3RocmVhZGVk X21haW5sb29wX3VubG9jayh0aGlzLT5tYWlubG9vcCk7CisgICAgIHJldHVybiAwOworKyAgfQor IAorICAgc3dpdGNoKHByb3BlcnR5KSB7CistICBjYXNlIEFPX1BST1BfUENNX1ZPTDoKKy0gIGNh c2UgQU9fUFJPUF9NSVhFUl9WT0w6CistICAgIHsKKy0gICAgICBwdGhyZWFkX211dGV4X2xvY2so JnRoaXMtPmluZm9fbXV0ZXgpOworLSAgICAgIHBhX29wZXJhdGlvbiAqbyA9IHBhX2NvbnRleHRf Z2V0X3NpbmtfaW5wdXRfaW5mbyh0aGlzLT5wYV9jbGFzcy0+Y29udGV4dCwKKy0JCQkJCQkgICAg ICAgcGFfc3RyZWFtX2dldF9pbmRleCh0aGlzLT5zdHJlYW0pLAorLQkJCQkJCSAgICAgICBfX3hp bmVfcGFfc2lua19pbmZvX2NhbGxiYWNrLCB0aGlzKTsKKy0gICAgICBpZiAoICEgbyApIHJldHVy biAwOworLSAgICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmdGhpcy0+aW5mb19tdXRleCk7IHB0aHJl YWRfbXV0ZXhfdW5sb2NrKCZ0aGlzLT5pbmZvX211dGV4KTsKKy0JCQkgCistICAgICAgcmVzdWx0 ID0gKHBhX3N3X3ZvbHVtZV90b19saW5lYXIodGhpcy0+c3d2b2x1bWUpKjEwMCk7CistICAgIH0K Ky0gICAgYnJlYWs7CisgCistICBjYXNlIEFPX1BST1BfTVVURV9WT0w6CistICAgIHJlc3VsdCA9 IHBhX2N2b2x1bWVfaXNfbXV0ZWQoJnRoaXMtPmN2b2x1bWUpOworLSAgICBicmVhazsKKysgICAg Y2FzZSBBT19QUk9QX01VVEVfVk9MOgorKyAgICBjYXNlIEFPX1BST1BfUENNX1ZPTDoKKysgICAg Y2FzZSBBT19QUk9QX01JWEVSX1ZPTDoKKysKKysgICAgICBvID0gcGFfY29udGV4dF9nZXRfc2lu a19pbnB1dF9pbmZvKHRoaXMtPmNvbnRleHQsIHBhX3N0cmVhbV9nZXRfaW5kZXgodGhpcy0+c3Ry ZWFtKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9feGluZV9w YV9zaW5rX2luZm9fY2FsbGJhY2ssIHRoaXMpOworKworKyAgICAgIGJyZWFrOworKyAgfQorKwor KyAgaWYgKG8pIHsKKysgICAgd2FpdF9mb3Jfb3BlcmF0aW9uKHRoaXMsIG8pOworKyAgICBwYV9v cGVyYXRpb25fdW5yZWYobyk7CisgICB9CistICAKKysKKysgIHN3aXRjaChwcm9wZXJ0eSkgewor KworKyAgICBjYXNlIEFPX1BST1BfTVVURV9WT0w6CisrICAgICAgcmVzdWx0ID0gdGhpcy0+bXV0 ZWQ7CisrICAgICAgYnJlYWs7CisrCisrICAgIGNhc2UgQU9fUFJPUF9QQ01fVk9MOgorKyAgICBj YXNlIEFPX1BST1BfTUlYRVJfVk9MOgorKyAgICAgIHJlc3VsdCA9IChpbnQpIChwYV9zd192b2x1 bWVfdG9fbGluZWFyKHRoaXMtPnN3dm9sdW1lKSoxMDApOworKyAgICAgIGJyZWFrOworKyAgfQor KworKyAgcGFfdGhyZWFkZWRfbWFpbmxvb3BfdW5sb2NrKHRoaXMtPm1haW5sb29wKTsKKysKKyAg IHJldHVybiByZXN1bHQ7CisgfQorIAorIHN0YXRpYyBpbnQgYW9fcHVsc2Vfc2V0X3Byb3BlcnR5 IChhb19kcml2ZXJfdCAqdGhpc19nZW4sIGludCBwcm9wZXJ0eSwgaW50IHZhbHVlKSB7CisgICBw dWxzZV9kcml2ZXJfdCAqdGhpcyA9IChwdWxzZV9kcml2ZXJfdCAqKSB0aGlzX2dlbjsKKyAgIGlu dCByZXN1bHQgPSB+dmFsdWU7CisrICBwYV9vcGVyYXRpb24gKm8gPSBOVUxMOworIAorLSAgaWYg KCAhIHRoaXMtPnN0cmVhbSB8fCAhIHRoaXMtPnBhX2NsYXNzLT5jb250ZXh0ICkKKy0gICAgcmV0 dXJuIHJlc3VsdDsKKysgIHBhX3RocmVhZGVkX21haW5sb29wX2xvY2sodGhpcy0+bWFpbmxvb3Ap OworKworKyAgaWYgKCF0aGlzLT5zdHJlYW0gfHwKKysgICAgICAhdGhpcy0+Y29udGV4dCB8fAor KyAgICAgIHBhX2NvbnRleHRfZ2V0X3N0YXRlKHRoaXMtPmNvbnRleHQpICE9IFBBX0NPTlRFWFRf UkVBRFkgfHwKKysgICAgICBwYV9zdHJlYW1fZ2V0X3N0YXRlKHRoaXMtPnN0cmVhbSkgIT0gUEFf U1RSRUFNX1JFQURZKSB7CisrICAgIHBhX3RocmVhZGVkX21haW5sb29wX3VubG9jayh0aGlzLT5t YWlubG9vcCk7CisrICAgIHJldHVybiAwOworKyAgfQorIAorICAgc3dpdGNoKHByb3BlcnR5KSB7 CistICBjYXNlIEFPX1BST1BfUENNX1ZPTDoKKy0gIGNhc2UgQU9fUFJPUF9NSVhFUl9WT0w6Cist ICAgIHRoaXMtPnN3dm9sdW1lID0gcGFfc3dfdm9sdW1lX2Zyb21fbGluZWFyKChkb3VibGUpdmFs dWUvMTAwLjApOworLSAgICBwYV9jdm9sdW1lX3NldCgmdGhpcy0+Y3ZvbHVtZSwgcGFfc3RyZWFt X2dldF9zYW1wbGVfc3BlYyh0aGlzLT5zdHJlYW0pLT5jaGFubmVscywgdGhpcy0+c3d2b2x1bWUp OworLQorLSAgICBwYV9jb250ZXh0X3NldF9zaW5rX2lucHV0X3ZvbHVtZSh0aGlzLT5wYV9jbGFz cy0+Y29udGV4dCwgcGFfc3RyZWFtX2dldF9pbmRleCh0aGlzLT5zdHJlYW0pLAorLQkJCQkgICAg ICZ0aGlzLT5jdm9sdW1lLCBfX3hpbmVfcGFfY29udGV4dF9zdWNjZXNzX2NhbGxiYWNrLCB0aGlz KTsKKy0KKy0gICAgcmVzdWx0ID0gdmFsdWU7CistICAgIGJyZWFrOworLQorLSAgY2FzZSBBT19Q Uk9QX01VVEVfVk9MOgorLSAgICBpZiAoIHZhbHVlICkKKy0gICAgICBwYV9jdm9sdW1lX211dGUo JnRoaXMtPmN2b2x1bWUsIHBhX3N0cmVhbV9nZXRfc2FtcGxlX3NwZWModGhpcy0+c3RyZWFtKS0+ Y2hhbm5lbHMpOworLSAgICBlbHNlCisrICAgIGNhc2UgQU9fUFJPUF9QQ01fVk9MOgorKyAgICBj YXNlIEFPX1BST1BfTUlYRVJfVk9MOgorKworKyAgICAgIHRoaXMtPnN3dm9sdW1lID0gcGFfc3df dm9sdW1lX2Zyb21fbGluZWFyKChkb3VibGUpdmFsdWUvMTAwLjApOworICAgICAgIHBhX2N2b2x1 bWVfc2V0KCZ0aGlzLT5jdm9sdW1lLCBwYV9zdHJlYW1fZ2V0X3NhbXBsZV9zcGVjKHRoaXMtPnN0 cmVhbSktPmNoYW5uZWxzLCB0aGlzLT5zd3ZvbHVtZSk7CisgCistICAgIHBhX2NvbnRleHRfc2V0 X3NpbmtfaW5wdXRfdm9sdW1lKHRoaXMtPnBhX2NsYXNzLT5jb250ZXh0LCBwYV9zdHJlYW1fZ2V0 X2luZGV4KHRoaXMtPnN0cmVhbSksCistCQkJCSAgICAgJnRoaXMtPmN2b2x1bWUsIF9feGluZV9w YV9jb250ZXh0X3N1Y2Nlc3NfY2FsbGJhY2ssIHRoaXMpOworLSAgICAKKy0gICAgcmVzdWx0ID0g dmFsdWU7CistICAgIGJyZWFrOworKyAgICAgIG8gPSBwYV9jb250ZXh0X3NldF9zaW5rX2lucHV0 X3ZvbHVtZSh0aGlzLT5jb250ZXh0LCBwYV9zdHJlYW1fZ2V0X2luZGV4KHRoaXMtPnN0cmVhbSks CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0aGlzLT5jdm9s dW1lLCBfX3hpbmVfcGFfY29udGV4dF9zdWNjZXNzX2NhbGxiYWNrLCB0aGlzKTsKKysKKysgICAg ICByZXN1bHQgPSB2YWx1ZTsKKysgICAgICBicmVhazsKKysKKysgICAgY2FzZSBBT19QUk9QX01V VEVfVk9MOgorKworKyAgICAgIHRoaXMtPm11dGVkID0gdmFsdWU7CisrCisrICAgICAgbyA9IHBh X2NvbnRleHRfc2V0X3NpbmtfaW5wdXRfbXV0ZSh0aGlzLT5jb250ZXh0LCBwYV9zdHJlYW1fZ2V0 X2luZGV4KHRoaXMtPnN0cmVhbSksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHZhbHVlLCBfX3hpbmVfcGFfY29udGV4dF9zdWNjZXNzX2NhbGxiYWNrLCB0aGlz KTsKKysKKysgICAgICByZXN1bHQgPSB2YWx1ZTsKKysgIH0KKysKKysgIGlmIChvKSB7CisrICAg IHdhaXRfZm9yX29wZXJhdGlvbih0aGlzLCBvKTsKKysgICAgcGFfb3BlcmF0aW9uX3VucmVmKG8p OworICAgfQorLSAgCisrCisrICBwYV90aHJlYWRlZF9tYWlubG9vcF91bmxvY2sodGhpcy0+bWFp bmxvb3ApOworKworICAgcmV0dXJuIHJlc3VsdDsKKyB9CisgCisgc3RhdGljIGludCBhb19wdWxz ZV9jdHJsKGFvX2RyaXZlcl90ICp0aGlzX2dlbiwgaW50IGNtZCwgLi4uKSB7CisgICBwdWxzZV9k cml2ZXJfdCAqdGhpcyA9IChwdWxzZV9kcml2ZXJfdCAqKSB0aGlzX2dlbjsKKysgIHBhX29wZXJh dGlvbiAqbyA9IE5VTEw7CisrCisrICBwYV90aHJlYWRlZF9tYWlubG9vcF9sb2NrKHRoaXMtPm1h aW5sb29wKTsKKyAKKy0gIGlmICggISB0aGlzLT5zdHJlYW0gKSByZXR1cm4gMDsKKysgIGlmICgh dGhpcy0+c3RyZWFtIHx8CisrICAgICAgIXRoaXMtPmNvbnRleHQgfHwKKysgICAgICBwYV9jb250 ZXh0X2dldF9zdGF0ZSh0aGlzLT5jb250ZXh0KSAhPSBQQV9DT05URVhUX1JFQURZIHx8CisrICAg ICAgcGFfc3RyZWFtX2dldF9zdGF0ZSh0aGlzLT5zdHJlYW0pICE9IFBBX1NUUkVBTV9SRUFEWSkg eworKyAgICBwYV90aHJlYWRlZF9tYWlubG9vcF91bmxvY2sodGhpcy0+bWFpbmxvb3ApOworKyAg ICByZXR1cm4gMDsKKysgIH0KKyAKKyAgIHN3aXRjaCAoY21kKSB7CisgCistICBjYXNlIEFPX0NU UkxfRkxVU0hfQlVGRkVSUzoKKy0gICAgX3hfYXNzZXJ0KHRoaXMtPnN0cmVhbSAmJiB0aGlzLT5w YV9jbGFzcy0+Y29udGV4dCk7CisrICAgIGNhc2UgQU9fQ1RSTF9GTFVTSF9CVUZGRVJTOgorIAor LSAgICBpZihwYV9zdHJlYW1fZ2V0X3N0YXRlKHRoaXMtPnN0cmVhbSkgPT0gUEFfU1RSRUFNX1JF QURZKSB7CistICAgICAgcHRocmVhZF9tdXRleF90IGNvbXBsZXRpb25fY2FsbGJhY2sgPSBQVEhS RUFEX01VVEVYX0lOSVRJQUxJWkVSOyBwdGhyZWFkX211dGV4X2xvY2soJmNvbXBsZXRpb25fY2Fs bGJhY2spOworLSAgICAgIHBhX3N0cmVhbV9mbHVzaCh0aGlzLT5zdHJlYW0sIF9feGluZV9wYV9z dHJlYW1fc3VjY2Vzc19jYWxsYmFjaywgJmNvbXBsZXRpb25fY2FsbGJhY2spOworKyAgICAgIG8g PSBwYV9zdHJlYW1fZmx1c2godGhpcy0+c3RyZWFtLCBfX3hpbmVfcGFfc3RyZWFtX3N1Y2Nlc3Nf Y2FsbGJhY2ssIHRoaXMpOworKyAgICAgIGJyZWFrOworIAorLSAgICAgIHB0aHJlYWRfbXV0ZXhf bG9jaygmY29tcGxldGlvbl9jYWxsYmFjayk7CistICAgICAgcHRocmVhZF9tdXRleF9kZXN0cm95 KCZjb21wbGV0aW9uX2NhbGxiYWNrKTsKKy0gICAgfQorKyAgICBjYXNlIEFPX0NUUkxfUExBWV9S RVNVTUU6CisrICAgIGNhc2UgQU9fQ1RSTF9QTEFZX1BBVVNFOgorIAorLSAgICB0aGlzLT5mcmFt ZXNfd3JpdHRlbiA9IDA7CisrICAgICAgbyA9IHBhX3N0cmVhbV9jb3JrKHRoaXMtPnN0cmVhbSwg Y21kID09IEFPX0NUUkxfUExBWV9QQVVTRSwgX194aW5lX3BhX3N0cmVhbV9zdWNjZXNzX2NhbGxi YWNrLCB0aGlzKTsKKysgICAgICBicmVhazsKKysgIH0KKyAKKy0gICAgYnJlYWs7CisrICBpZiAo bykgeworKyAgICB3YWl0X2Zvcl9vcGVyYXRpb24odGhpcywgbyk7CisrICAgIHBhX29wZXJhdGlv bl91bnJlZihvKTsKKyAgIH0KKyAKKysgIHBhX3RocmVhZGVkX21haW5sb29wX3VubG9jayh0aGlz LT5tYWlubG9vcCk7CisrCisgICByZXR1cm4gMDsKKyB9CisgCisgc3RhdGljIGFvX2RyaXZlcl90 ICpvcGVuX3BsdWdpbiAoYXVkaW9fZHJpdmVyX2NsYXNzX3QgKmNsYXNzX2dlbiwgY29uc3Qgdm9p ZCAqZGF0YSkgeworICAgcHVsc2VfY2xhc3NfdCAgICpjbGFzcyA9IChwdWxzZV9jbGFzc190ICop IGNsYXNzX2dlbjsKKyAgIHB1bHNlX2RyaXZlcl90ICAqdGhpczsKKy0gIGNoYXIgKmRldmljZTsK KysgIGNvbnN0IGNoYXIqIGRldmljZTsKKysgIGludCByOworIAorICAgbHByaW50ZiAoImF1ZGlv X3B1bHNlX291dDogb3Blbl9wbHVnaW4gY2FsbGVkXG4iKTsKKyAKKyAgIHRoaXMgPSAocHVsc2Vf ZHJpdmVyX3QgKikgeGluZV94bWFsbG9jIChzaXplb2YgKHB1bHNlX2RyaXZlcl90KSk7CisgICBp ZiAoIXRoaXMpCisgICAgIHJldHVybiBOVUxMOworKworICAgdGhpcy0+eGluZSA9IGNsYXNzLT54 aW5lOworKyAgdGhpcy0+aG9zdCA9IE5VTEw7CisrICB0aGlzLT5zaW5rID0gTlVMTDsKKysgIHRo aXMtPmNvbnRleHQgPSBOVUxMOworKyAgdGhpcy0+bWFpbmxvb3AgPSBOVUxMOworKworKyAgZGV2 aWNlID0gY2xhc3MtPnhpbmUtPmNvbmZpZy0+cmVnaXN0ZXJfc3RyaW5nKGNsYXNzLT54aW5lLT5j b25maWcsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXVkaW8u cHVsc2VhdWRpb19kZXZpY2UiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIiIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJk ZXZpY2UgdXNlZCBmb3IgcHVsc2VhdWRpbyIpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXygidXNlICdzZXJ2ZXJbOnNpbmtdJyBmb3Igc2V0dGluZyB0aGUgIgor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHVsc2VhdWRpbyBz aW5rIGRldmljZS4iKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDEwLCBOVUxMLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVM TCk7CisrCisrICBpZiAoZGV2aWNlICYmICpkZXZpY2UpIHsKKysgICAgY2hhciAqc2VwID0gc3Ry cmNocihkZXZpY2UsICc6Jyk7CisrICAgIGlmICggc2VwICkgeworKyAgICAgIGlmICghKHRoaXMt Pmhvc3QgPSBzdHJuZHVwKGRldmljZSwgc2VwLWRldmljZSkpKSB7CisrICAgICAgICBmcmVlKHRo aXMpOworKyAgICAgICAgcmV0dXJuIE5VTEw7CisrICAgICAgfQorKworKyAgICAgIGlmICghKHRo aXMtPnNpbmsgPSBzdHJkdXAoc2VwKzEpKSkgeworKyAgICAgICAgZnJlZSh0aGlzLT5ob3N0KTsK KysgICAgICAgIGZyZWUodGhpcyk7CisrICAgICAgICByZXR1cm4gTlVMTDsKKysgICAgICB9Cisr ICAgIH0gZWxzZSB7CisrCisrICAgICAgaWYgKCEodGhpcy0+aG9zdCA9IHN0cmR1cChkZXZpY2Up KSkgeworKyAgICAgICAgZnJlZSh0aGlzKTsKKysgICAgICAgIHJldHVybiBOVUxMOworKyAgICAg IH0KKysgICAgfQorKyAgfQorKworKyAgdGhpcy0+bWFpbmxvb3AgPSBwYV90aHJlYWRlZF9tYWlu bG9vcF9uZXcoKTsKKysgIF94X2Fzc2VydCh0aGlzLT5tYWlubG9vcCk7CisrICBwYV90aHJlYWRl ZF9tYWlubG9vcF9zdGFydCh0aGlzLT5tYWlubG9vcCk7CisgCisgICAvKgorICAgICogc2V0IGNh cGFiaWxpdGllcworICAgICovCistICB0aGlzLT5jYXBhYmlsaXRpZXMgPSBBT19DQVBfTU9ERV9N T05PIHwgQU9fQ0FQX01PREVfU1RFUkVPIHwgQU9fQ0FQX01PREVfNENIQU5ORUwgfAorLSAgICAg ICAgICAgICAgICAgICAgICAgQU9fQ0FQX01PREVfNF8xQ0hBTk5FTCB8IEFPX0NBUF9NT0RFXzVD SEFOTkVMIHwKKy0gICAgICAgICAgICAgICAgICAgICAgIEFPX0NBUF9NT0RFXzVfMUNIQU5ORUwg fCBBT19DQVBfTUlYRVJfVk9MIHwKKy0gICAgICAgICAgICAgICAgICAgICAgIEFPX0NBUF9QQ01f Vk9MIHwgQU9fQ0FQX01VVEVfVk9MIHwgQU9fQ0FQXzhCSVRTIHwKKy0gICAgICAgICAgICAgICAg ICAgICAgIEFPX0NBUF8xNkJJVFMgfCBBT19DQVBfRkxPQVQzMjsKKysgIHRoaXMtPmNhcGFiaWxp dGllcyA9CisrICAgIEFPX0NBUF9NT0RFX01PTk8gfCBBT19DQVBfTU9ERV9TVEVSRU8gfCBBT19D QVBfTU9ERV80Q0hBTk5FTCB8CisrICAgIEFPX0NBUF9NT0RFXzRfMUNIQU5ORUwgfCBBT19DQVBf TU9ERV81Q0hBTk5FTCB8IEFPX0NBUF9NT0RFXzVfMUNIQU5ORUwgfAorKyAgICBBT19DQVBfTUlY RVJfVk9MIHwgQU9fQ0FQX1BDTV9WT0wgfCBBT19DQVBfTVVURV9WT0wgfAorKyAgICBBT19DQVBf OEJJVFMgfCBBT19DQVBfMTZCSVRTIHwgQU9fQ0FQX0ZMT0FUMzI7CisgCisgICB0aGlzLT5zYW1w bGVfcmF0ZSAgPSAwOworLSAgdGhpcy0+aG9zdCAgICAgICAgID0gTlVMTDsKKy0gIHRoaXMtPnNp bmsgICAgICAgICA9IE5VTEw7CistICAKKysKKyAgIHRoaXMtPmFvX2RyaXZlci5nZXRfY2FwYWJp bGl0aWVzICAgID0gYW9fcHVsc2VfZ2V0X2NhcGFiaWxpdGllczsKKyAgIHRoaXMtPmFvX2RyaXZl ci5nZXRfcHJvcGVydHkgICAgICAgID0gYW9fcHVsc2VfZ2V0X3Byb3BlcnR5OworICAgdGhpcy0+ YW9fZHJpdmVyLnNldF9wcm9wZXJ0eSAgICAgICAgPSBhb19wdWxzZV9zZXRfcHJvcGVydHk7CitA QCAtNTQxLDMzICs3OTAsMjIgQEAgc3RhdGljIGFvX2RyaXZlcl90ICpvcGVuX3BsdWdpbiAoYXVk aW9fZAorICAgdGhpcy0+YW9fZHJpdmVyLmNsb3NlICAgICAgICAgICAgICAgPSBhb19wdWxzZV9j bG9zZTsKKyAgIHRoaXMtPmFvX2RyaXZlci5leGl0ICAgICAgICAgICAgICAgID0gYW9fcHVsc2Vf ZXhpdDsKKyAgIHRoaXMtPmFvX2RyaXZlci5nZXRfZ2FwX3RvbGVyYW5jZSAgID0gYW9fcHVsc2Vf Z2V0X2dhcF90b2xlcmFuY2U7CistICB0aGlzLT5hb19kcml2ZXIuY29udHJvbAkgICAgICA9IGFv X3B1bHNlX2N0cmw7CistCistICBkZXZpY2UgPSB0aGlzLT54aW5lLT5jb25maWctPnJlZ2lzdGVy X3N0cmluZyh0aGlzLT54aW5lLT5jb25maWcsCistICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiYXVkaW8ucHVsc2VhdWRpb19kZXZpY2UiLAorLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIsCistICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJkZXZpY2UgdXNlZCBmb3IgcHVs c2VhdWRpbyIpLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXygidXNlICdzZXJ2ZXJbOnNpbmtdJyBmb3Igc2V0dGluZyB0aGUgIgorLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHVsc2VhdWRpbyBzaW5rIGRl dmljZS4iKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDEwLCBOVUxMLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTlVMTCk7CistCistICBpZiAoZGV2aWNlICYmICpkZXZpY2UpIHsKKy0gICAgY2hhciAqc2Vw ID0gc3RyY2hyKGRldmljZSwgJzonKTsKKy0gICAgaWYgKCBzZXAgKSB7CistICAgICAgdGhpcy0+ aG9zdCA9IHN0cm5kdXAoZGV2aWNlLCBzZXAtZGV2aWNlKTsKKy0gICAgICB0aGlzLT5zaW5rID0g c3RyZHVwKCZzZXBbMV0pOworLSAgICB9IGVsc2UKKy0gICAgICB0aGlzLT5ob3N0ID0gc3RyZHVw KGRldmljZSk7CistICB9CistCistICBwdGhyZWFkX211dGV4X2luaXQoJnRoaXMtPmluZm9fbXV0 ZXgsIE5VTEwpOworKyAgdGhpcy0+YW9fZHJpdmVyLmNvbnRyb2wgICAgICAgICAgICAgPSBhb19w dWxzZV9jdHJsOworIAorICAgeHByaW50ZiAoY2xhc3MtPnhpbmUsIFhJTkVfVkVSQk9TSVRZX0RF QlVHLCAiYXVkaW9fcHVsc2Vfb3V0OiBob3N0ICVzIHNpbmsgJXNcbiIsCisgICAgICAgICAgICB0 aGlzLT5ob3N0ID8gdGhpcy0+aG9zdCA6ICIobnVsbCkiLCB0aGlzLT5zaW5rID8gdGhpcy0+c2lu ayA6ICIobnVsbCkiKTsKKyAKKyAgIHRoaXMtPnBhX2NsYXNzID0gY2xhc3M7CisgCisrICBwYV90 aHJlYWRlZF9tYWlubG9vcF9sb2NrKHRoaXMtPm1haW5sb29wKTsKKysgIHIgPSBjb25uZWN0X2Nv bnRleHQodGhpcyk7CisrICBwYV90aHJlYWRlZF9tYWlubG9vcF91bmxvY2sodGhpcy0+bWFpbmxv b3ApOworKworKyAgaWYgKHIgPCAwKSB7CisrICAgIGFvX3B1bHNlX2V4aXQoKGFvX2RyaXZlcl90 ICopIHRoaXMpOworKyAgICByZXR1cm4gTlVMTDsKKysgIH0KKysKKyAgIHJldHVybiAmdGhpcy0+ YW9fZHJpdmVyOworIH0KKyAKK0BAIC01ODcsMTMgKzgyNSw3IEBAIHN0YXRpYyB2b2lkIGRpc3Bv c2VfY2xhc3MgKGF1ZGlvX2RyaXZlcl8KKyAKKyAgIHB1bHNlX2NsYXNzX3QgKnRoaXMgPSAocHVs c2VfY2xhc3NfdCAqKSB0aGlzX2dlbjsKKyAKKy0gIGlmICggdGhpcy0+Y29udGV4dCApCistICAg IHBhX2NvbnRleHRfdW5yZWYodGhpcy0+Y29udGV4dCk7CistCistICBwYV90aHJlYWRlZF9tYWlu bG9vcF9zdG9wKHRoaXMtPm1haW5sb29wKTsKKy0gIHBhX3RocmVhZGVkX21haW5sb29wX2ZyZWUo dGhpcy0+bWFpbmxvb3ApOworLQorLSAgZnJlZSAodGhpcyk7CisrICBmcmVlKHRoaXMpOworIH0K KyAKKyBzdGF0aWMgdm9pZCAqaW5pdF9jbGFzcyAoeGluZV90ICp4aW5lLCB2b2lkICpkYXRhKSB7 CitAQCAtNjA2LDI1ICs4MzgsMTcgQEAgc3RhdGljIHZvaWQgKmluaXRfY2xhc3MgKHhpbmVfdCAq eGluZSwgdgorICAgaWYgKCF0aGlzKQorICAgICByZXR1cm4gTlVMTDsKKyAKKysgIHRoaXMtPnhp bmUgPSB4aW5lOworICAgdGhpcy0+ZHJpdmVyX2NsYXNzLm9wZW5fcGx1Z2luICAgICA9IG9wZW5f cGx1Z2luOworICAgdGhpcy0+ZHJpdmVyX2NsYXNzLmdldF9pZGVudGlmaWVyICA9IGdldF9pZGVu dGlmaWVyOworICAgdGhpcy0+ZHJpdmVyX2NsYXNzLmdldF9kZXNjcmlwdGlvbiA9IGdldF9kZXNj cmlwdGlvbjsKKyAgIHRoaXMtPmRyaXZlcl9jbGFzcy5kaXNwb3NlICAgICAgICAgPSBkaXNwb3Nl X2NsYXNzOworIAorLSAgdGhpcy0+eGluZSAgICAgICAgICAgICAgICAgICAgICAgICA9IHhpbmU7 CistCistICB0aGlzLT5tYWlubG9vcCA9IHBhX3RocmVhZGVkX21haW5sb29wX25ldygpOworLSAg X3hfYXNzZXJ0KHRoaXMtPm1haW5sb29wKTsKKy0KKy0gIHBhX3RocmVhZGVkX21haW5sb29wX3N0 YXJ0KHRoaXMtPm1haW5sb29wKTsKKy0gIAorLSAgdGhpcy0+Y29udGV4dCA9IE5VTEw7CistCisg ICByZXR1cm4gdGhpczsKKyB9CisgCisgc3RhdGljIGNvbnN0IGFvX2luZm9fdCBhb19pbmZvX3B1 bHNlID0geworLSAgNgorKyAgMTIKKyB9OworIAorIC8qCitAQCAtNjM2LDUgKzg2MCwzIEBAIGNv bnN0IHBsdWdpbl9pbmZvX3QgeGluZV9wbHVnaW5faW5mb1tdIEUKKyAgIHsgUExVR0lOX0FVRElP X09VVCwgOCwgInB1bHNlYXVkaW8iLCBYSU5FX1ZFUlNJT05fQ09ERSwgJmFvX2luZm9fcHVsc2Us IGluaXRfY2xhc3MgfSwKKyAgIHsgUExVR0lOX05PTkUsIDAsICIiLCAwLCBOVUxMLCBOVUxMIH0K KyB9OworLQorLQo=