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: Michal Ruprich To: git-commits@fedoraproject.org Subject: [rpms/rsync] f45: Fixing a path traversal regression Date: Tue, 08 Sep 2026 12:10:32 GMT Message-ID: <178886943251.1.7716793365508360237.rpms-rsync-35d46fc340e2@fedoraproject.org> List-ID: X-Git-Repo: rpms/rsync X-Git-Branch: f45 X-Git-Rev: 35d46fc340e2ee395308c91d6673b5a3955caebc QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvcnN5bmMKQnJhbmNo IDogZjQ1CkNvbW1pdCA6IDM1ZDQ2ZmMzNDBlMmVlMzk1MzA4YzkxZDY2NzNiNWEzOTU1Y2FlYmMK QXV0aG9yIDogTWljaGFsIFJ1cHJpY2ggPG1ydXByaWNoQHJlZGhhdC5jb20+CkRhdGUgICA6IDIw MjYtMDktMDhUMTE6NTU6MjcrMDI6MDAKU3RhdHMgIDogKzk0Mi8tMSBpbiAyIGZpbGUocykKVVJM ICAgIDogaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9yc3luYy9jLzM1ZDQ2ZmMz NDBlMmVlMzk1MzA4YzkxZDY2NzNiNWEzOTU1Y2FlYmM/YnJhbmNoPWY0NQoKTG9nOgpGaXhpbmcg YSBwYXRoIHRyYXZlcnNhbCByZWdyZXNzaW9uCgotLS0KZGlmZiAtLWdpdCBhL3JzeW5jLTMuNS4w LW9fcGF0aC1kaXItdHJhdmVyc2FsLnBhdGNoIGIvcnN5bmMtMy41LjAtb19wYXRoLWRpci10cmF2 ZXJzYWwucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmUwZjNkNQot LS0gL2Rldi9udWxsCisrKyBiL3JzeW5jLTMuNS4wLW9fcGF0aC1kaXItdHJhdmVyc2FsLnBhdGNo CkBAIC0wLDAgKzEsOTMyIEBACitkaWZmIC0tZ2l0IGEvU0VDVVJJVFkubWQgYi9TRUNVUklUWS5t ZAoraW5kZXggMjMyM2JiZi4uYmNjODQ5MSAxMDA2NDQKKy0tLSBhL1NFQ1VSSVRZLm1kCisrKysg Yi9TRUNVUklUWS5tZAorQEAgLTE0NiwyOCArMTQ2LDI5IEBAIGZvbGxvd2luZyBzeW1saW5rcyBi eSBkZXNpZ24uCisgCisgIyMjIFRoZSBtZWNoYW5pc20KKyAKKy1SZXNvbHV0aW9uIG9mIGF0dGFj a2VyLWluZmx1ZW5jZWFibGUgcGF0aHMgZ29lcyB0aHJvdWdoIGBzZWN1cmVfcmVsYXRpdmVfb3Bl bigpYAorLWFuZCB0aGUgYGRvXypfYXQoKWAgd3JhcHBlcnMgaW4gYHN5c2NhbGwuY2AsIG5ldmVy IGEgcmF3IGBvcGVuKClgL2ByZW5hbWUoKWAvCistYGNobW9kKClgIG9uIGEgZnVsbCBwYXRoIHN0 cmluZy4gVGhlIHByaW5jaXBsZSBpczogKip0cnVzdCB0aGUgb3BlcmF0b3ItbmFtZWQKKy10cmFu c2ZlciByb290LCBhbmQgY29uZmluZSBhbGwgcmVzb2x1dGlvbiBiZW5lYXRoIGl0KiosIHJlamVj dGluZyBlc2NhcGVzIHZpYQorLWAuLmAgYWJvdmUgdGhlIGFuY2hvciwgYWJzb2x1dGUgc3ltbGlu a3MsIG9yIG91dC1vZi10cmVlIHN5bWxpbmtzLgorLWBzZWN1cmVfcmVsYXRpdmVfb3BlbigpYCBy ZXNvbHZlcyB0aGUgcGFyZW50IGRpcmVjdG9yeSBieSB3YWxraW5nIGl0IG9uZQorLWNvbXBvbmVu dCBhdCBhIHRpbWUgb24gYSBzdGFjayBvZiBoZWxkIGRpcmVjdG9yeSBmZHMsIHRoZW4gb3BlcmF0 ZXMgb24gdGhlIGZpbmFsCistY29tcG9uZW50IHdpdGggYW4gYXQtc3R5bGUgY2FsbCBvbiB0aGUg cmVzdWx0aW5nIGRpcmVjdG9yeSBmZC4KKytSZXNvbHV0aW9uIG9mIGF0dGFja2VyLWluZmx1ZW5j ZWFibGUgcGF0aHMgZ29lcyB0aHJvdWdoIGBzZWN1cmVfcmVsYXRpdmVfb3BlbigpYCwKKytgc2Vj dXJlX3JlbGF0aXZlX2RpcmZkKClgLCBhbmQgdGhlIGBkb18qX2F0KClgIHdyYXBwZXJzIGluIGBz eXNjYWxsLmNgLCBuZXZlciBhCisrcmF3IGBvcGVuKClgL2ByZW5hbWUoKWAvYGNobW9kKClgIG9u IGEgZnVsbCBwYXRoIHN0cmluZy4gVGhlIHByaW5jaXBsZSBpczoKKysqKnRydXN0IHRoZSBvcGVy YXRvci1uYW1lZCB0cmFuc2ZlciByb290LCBhbmQgY29uZmluZSBhbGwgcmVzb2x1dGlvbiBiZW5l YXRoCisraXQqKiwgcmVqZWN0aW5nIGVzY2FwZXMgdmlhIGAuLmAgYWJvdmUgdGhlIGFuY2hvciwg YWJzb2x1dGUgc3ltbGlua3MsIG9yCisrb3V0LW9mLXRyZWUgc3ltbGlua3MuIGBzZWN1cmVfcmVs YXRpdmVfb3BlbigpYCBvcGVucyB0aGUgcmVzb2x2ZWQgZW5kcG9pbnQgd2l0aAorK3RoZSBjYWxs ZXIncyByZXF1ZXN0ZWQgYWNjZXNzLiBgc2VjdXJlX3JlbGF0aXZlX2RpcmZkKClgIGluc3RlYWQg cmV0dXJucworK3RyYXZlcnNhbCBhdXRob3JpdHkgZm9yIGBmY2hkaXIoKWAgb3IgYW4gYXQtc3R5 bGUgb3BlcmF0aW9uIG9uIGEga25vd24gY2hpbGQ7CisraXQgZG9lcyBub3QgaW1wbHkgcGVybWlz c2lvbiB0byBlbnVtZXJhdGUgdGhlIGRpcmVjdG9yeS4KKyAKKyBGb3IgcGVyLWVudHJ5IHdvcmsg dGhlIHJlY2VpdmVyIGFuZCBnZW5lcmF0b3IgZ28gb25lIHN0ZXAgZnVydGhlciBhbmQgaG9sZCB0 aGUKKyBwYXJlbnQgZGlyZWN0b3J5IG9wZW46IGBvcGVuX2Rpcl9zZWN1cmUoKWAgcmVzb2x2ZXMg YW4gZW50cnkncyBkaXJlY3Rvcnkgb25jZQorLSh2aWEgYHNlY3VyZV9yZWxhdGl2ZV9vcGVuKClg KSwgYGhlbGRfZGZkX2ZvcigpYCBjYWNoZXMgdGhhdCBkZXNjcmlwdG9yIGZvciB0aGUKKy1kdXJh dGlvbiBvZiB0aGUgZW50cnksIGFuZCBldmVyeSBvcGVyYXRpb24gb24gdGhlIGVudHJ5IOKAlCBg bHN0YXRgLCB0aGUgdGVtcC1maWxlCistYG1rc3RlbXBgLCB0aGUgdGVtcC0+ZmluYWwgYHJlbmFt ZWAsIGBjaG1vZGAvYGNob3duYC9gdXRpbWVzYCwgYG1rZGlyYCwgc3BlY2lhbC0KKy1maWxlIGFu ZCBzeW1saW5rIGNyZWF0aW9uLCB0aGUgZGVsdGEtYmFzaXMgb3BlbiwgYW5kIHRoZSByZWN1cnNp dmUgZGVsZXRlIOKAlCBydW5zCistdGhyb3VnaCB0aGF0IG9uZSBoZWxkIGZkIHZpYSBhbiBgKmF0 KClgIGNhbGwgKGBkb18qX2F0ZmQoKWApLiBCZWNhdXNlIHRoZQorLWRlc2NyaXB0b3IgaXMgcGlu bmVkIHRvIHRoZSBkaXJlY3RvcnkgaW5vZGUsIGEgcGFyZW50IGNvbXBvbmVudCBmbGlwcGVkIHRv IGEKKy1zeW1saW5rICphZnRlciogdGhlIG9wZW4gY2Fubm90IHJlZGlyZWN0IGFueSBvZiB0aG9z ZSBvcGVyYXRpb25zLiBUaGUgYWx0ZXJuYXRlLQorLWRlc3RpbmF0aW9uIGxvb2t1cHMgYXJlIGNv bmZpbmVkIHRoZSBzYW1lIHdheSAoYGJhc2lzX2xpbmtfc3RhdCgpYCBpbgorLWBnZW5lcmF0b3Iu Y2AgYW5kIGBzZWN1cmVfYmFzaXNfb3BlbigpYCBpbiBgcmVjZWl2ZXIuY2ApLCBzbyBhIHBlZXIt Y2hvc2VuCistYC0tbGluay1kZXN0YC9gLS1jb21wYXJlLWRlc3RgL2AtLWNvcHktZGVzdGAgYmFz aXMgaW5kZXggY2Fubm90IHJlYWNoIGFuCistb3V0LW9mLW1vZHVsZSBmaWxlIHRocm91Z2ggYSBz eW1saW5rZWQgcGFyZW50LgorK2FzIHRyYXZlcnNhbCBhdXRob3JpdHksIGBoZWxkX2RmZF9mb3Io KWAgY2FjaGVzIHRoYXQgZGVzY3JpcHRvciBmb3IgdGhlCisrZHVyYXRpb24gb2YgdGhlIGVudHJ5 LCBhbmQgZXZlcnkgb3BlcmF0aW9uIG9uIHRoZSBlbnRyeSDigJQgYGxzdGF0YCwgdGhlCisrdGVt cC1maWxlIGBta3N0ZW1wYCwgdGhlIHRlbXAtPmZpbmFsIGByZW5hbWVgLCBgY2htb2RgL2BjaG93 bmAvYHV0aW1lc2AsCisrYG1rZGlyYCwgc3BlY2lhbC1maWxlIGFuZCBzeW1saW5rIGNyZWF0aW9u LCB0aGUgZGVsdGEtYmFzaXMgb3BlbiwgYW5kIHRoZQorK3JlY3Vyc2l2ZSBkZWxldGUg4oCUIHJ1 bnMgdGhyb3VnaCB0aGF0IG9uZSBoZWxkIGZkIHZpYSBhbiBgKmF0KClgIGNhbGwKKysoYGRvXypf YXRmZCgpYCkuIEJlY2F1c2UgdGhlIGRlc2NyaXB0b3IgaXMgcGlubmVkIHRvIHRoZSBkaXJlY3Rv cnkgaW5vZGUsIGEKKytwYXJlbnQgY29tcG9uZW50IGZsaXBwZWQgdG8gYSBzeW1saW5rICphZnRl ciogdGhlIG9wZW4gY2Fubm90IHJlZGlyZWN0IGFueSBvZgorK3Rob3NlIG9wZXJhdGlvbnMuIFRo ZSBhbHRlcm5hdGUtZGVzdGluYXRpb24gbG9va3VwcyBhcmUgY29uZmluZWQgdGhlIHNhbWUgd2F5 CisrKGBiYXNpc19saW5rX3N0YXQoKWAgaW4gYGdlbmVyYXRvci5jYCBhbmQgYHNlY3VyZV9iYXNp c19vcGVuKClgIGluCisrYHJlY2VpdmVyLmNgKSwgc28gYSBwZWVyLWNob3NlbiBgLS1saW5rLWRl c3RgL2AtLWNvbXBhcmUtZGVzdGAvYC0tY29weS1kZXN0YAorK2Jhc2lzIGluZGV4IGNhbm5vdCBy ZWFjaCBhbiBvdXQtb2YtbW9kdWxlIGZpbGUgdGhyb3VnaCBhIHN5bWxpbmtlZCBwYXJlbnQuCisg CisgVGhlIHNlbmRlcidzIHNvdXJjZS1kaXJlY3RvcnkgKmVudW1lcmF0aW9uKiBpcyBjb25maW5l ZCB0aGUgc2FtZSB3YXkgYXMgaXRzCisgY29udGVudCBvcGVuLiBgc2VuZF9kaXJlY3RvcnkoKWAg b3BlbnMgZWFjaCBzY2FubmVkIGRpcmVjdG9yeSB0aHJvdWdoCitAQCAtMTkwLDEzICsxOTEsMTcg QEAgc3ltbGluayB3b3VsZCBvdGhlcndpc2UgaW50cm9kdWNlLgorICMjIyBQYXRoIHJlc29sdXRp b24KKyAKKyBgc2VjdXJlX3JlbGF0aXZlX29wZW4oKWAgcmVzb2x2ZXMgYSBwYXRoIHdpdGggYSBz aW5nbGUgcG9ydGFibGUgbWVjaGFuaXNtIG9uCistZXZlcnkgcGxhdGZvcm06IGEgcGVyLWNvbXBv bmVudCB3YWxrIG9uIGEgc3RhY2sgb2YgaGVsZCBkaXJlY3RvcnkgZmRzLiBFYWNoCistY29tcG9u ZW50IGlzIG9wZW5lZCByZWxhdGl2ZSB0byB0aGUgaGVsZCBwYXJlbnQgd2l0aCBgb3BlbmF0KHBh cmVudF9mZCwKKy0iY29tcG9uZW50IiwgT19OT0ZPTExPVylgOyBkZXNjZW5kaW5nIGludG8gYSBy ZWFsIHN1YmRpcmVjdG9yeSBwdXNoZXMgaXRzIGZkLCBhCistYC4uYCBwb3BzIGJhY2sgdG8gdGhl IGFscmVhZHktaGVsZCBwYXJlbnQgKGEgcG9wIGF0IHRoZSBhbmNob3IgaXMgcmVmdXNlZCksIGFu ZCBhbgorLWluLXRyZWUgZGlyZWN0b3J5IHN5bWxpbmsgaXMgZm9sbG93ZWQgYnkgcmVhZGluZyBp dHMgdGFyZ2V0IGFuZCB3YWxraW5nIHRoYXQgb2ZmCistdGhlIHNhbWUgc3RhY2sgKGFic29sdXRl IHRhcmdldHMgcmVmdXNlZCwgc3ltbGluayBob3BzIGJvdW5kZWQpLiBUaGUgZmluYWwKKy1jb21w b25lbnQgaXMgb3BlbmVkIGBPX05PRk9MTE9XYC4KKytldmVyeSBwbGF0Zm9ybTogYSBwZXItY29t cG9uZW50IHdhbGsgb24gYSBzdGFjayBvZiBoZWxkIGRpcmVjdG9yeSBmZHMuIE9uCisrTGludXgs IGFuY2hvcnMgYW5kIHRyYXZlcnNhbCBjb21wb25lbnRzIHVzZQorK2BPX1BBVEh8T19ESVJFQ1RP Ull8T19OT0ZPTExPV2A7IG90aGVyIHBsYXRmb3JtcyByZXRhaW4gdGhlCisrYE9fUkRPTkxZfE9f RElSRUNUT1JZYCBmYWxsYmFjay4gRGVzY2VuZGluZyBpbnRvIGEgcmVhbCBzdWJkaXJlY3Rvcnkg cHVzaGVzCisraXRzIGZkLCBhIGAuLmAgcG9wcyBiYWNrIHRvIHRoZSBhbHJlYWR5LWhlbGQgcGFy ZW50IChhIHBvcCBhdCB0aGUgYW5jaG9yIGlzCisrcmVmdXNlZCksIGFuZCBhbiBpbi10cmVlIGRp cmVjdG9yeSBzeW1saW5rIGlzIGZvbGxvd2VkIGJ5IHJlYWRpbmcgaXRzIHRhcmdldAorK2FuZCB3 YWxraW5nIHRoYXQgb2ZmIHRoZSBzYW1lIHN0YWNrIChhYnNvbHV0ZSB0YXJnZXRzIHJlZnVzZWQs IHN5bWxpbmsgaG9wcworK2JvdW5kZWQpLiBBIGZpbmFsIGRpcmVjdG9yeSBlbmRwb2ludCBpcyBy ZW9wZW5lZCB3aXRoIHRoZSBjYWxsZXIncyByZXF1ZXN0ZWQKKytmbGFncy4gVGh1cyBgc2VjdXJl X29wZW5kaXIoKWAgc3RpbGwgcmVjZWl2ZXMgYSByZWFkYWJsZSBmZCwgd2hpbGUga25vd24tbmFt ZQorK29wZXJhdGlvbnMgYmVuZWF0aCBhIHNlYXJjaGFibGUgYnV0IHVucmVhZGFibGUgZGlyZWN0 b3J5IGRvIG5vdCByZXF1aXJlCisrcGVybWlzc2lvbiB0byBsaXN0IGl0LgorIAorIEJlY2F1c2Ug ZXZlcnkgY29tcG9uZW50IGlzIG9wZW5lZCByZWxhdGl2ZSB0byBhICpwaW5uZWQqIGZkIHVuZGVy IGBPX05PRk9MTE9XYCwKKyBhbmQgYC4uYCBpcyByZXNvbHZlZCBieSB0aGUgaGVsZC1mZCBzdGFj ayByYXRoZXIgdGhhbiBieSB0aGUga2VybmVsLCB0aGUgd2FsayBpcworQEAgLTIzNSw4ICsyNDAs OSBAQCBjaG1vZC1pbmcgdGhyb3VnaCBhIHJhY2VkIGxlYWYgc3ltbGluay4KKyAgIGluZmx1ZW5j ZWQgYnkgdGhlIHJlbW90ZSBwZWVyIG9yIGJ5IGFub3RoZXIgbG9jYWwgdXNlciwgdXNlIGEgYGRv XypfYXQoKWAKKyAgIHdyYXBwZXIgKG9yIGBzZWN1cmVfcmVsYXRpdmVfb3BlbigpYCksIG5vdCBh IHJhdyBmdWxsLXBhdGggc3lzY2FsbC4KKyAqIFdoZW4gaW50cm9kdWNpbmcgYSBuZXcgb3BlcmF0 aW9uLCBhZGQgYSBtYXRjaGluZyBgZG9fPG9wPl9hdCgpYCB3cmFwcGVyIHRoYXQKKy0gIHJlc29s dmVzIHRoZSBwYXJlbnQgd2l0aCBgc2VjdXJlX3JlbGF0aXZlX29wZW4oKWAgYW5kIGFjdHMgdmlh IGFuIGF0LXN0eWxlIGNhbGwKKy0gIG9uIHRoZSByZXR1cm5lZCBkaXJmZC4KKysgIHJlc29sdmVz IGEgcGFyZW50IHVzZWQgb25seSBhcyBhdC1zdHlsZSBhdXRob3JpdHkgd2l0aAorKyAgYHNlY3Vy ZV9yZWxhdGl2ZV9kaXJmZCgpYC4gVXNlIGBzZWN1cmVfcmVsYXRpdmVfb3BlbigpYCB3aGVuIHRo ZSByZXR1cm5lZCBmZAorKyAgaXRzZWxmIG11c3QgYmUgcmVhZGFibGUgb3Igb3RoZXJ3aXNlIHN1 cHBvcnQgdGhlIGNhbGxlcidzIHJlcXVlc3RlZCBhY2Nlc3MuCisgKiBEbyBub3QgYXNzdW1lIGEg bm9uLWRhZW1vbiB0cmFuc2ZlciBpcyBzYWZlOyB0aGUgcXVlc3Rpb24gaXMgd2hldGhlciByc3lu YyBoYXMKKyAgIG1vcmUgYXV0aG9yaXR5IHRoYW4gd2hvZXZlciBjb250cm9scyB0aGUgcGF0aCBj b21wb25lbnRzLgorICogT24gcGxhdGZvcm1zIHdob3NlIEFQSSBsYWNrcyBhbiBhdC1zdHlsZSBl cXVpdmFsZW50IChlLmcuIGBzZXRhdHRybGlzdCgpYCksCitkaWZmIC0tZ2l0IGEvZ2VuZXJhdG9y LmMgYi9nZW5lcmF0b3IuYworaW5kZXggN2U1YWQ2MC4uNmYyODE4OCAxMDA2NDQKKy0tLSBhL2dl bmVyYXRvci5jCisrKysgYi9nZW5lcmF0b3IuYworQEAgLTEwNTIsNyArMTA1Miw3IEBAIHN0YXRp YyBpbnQgYmFzaXNfbGlua19zdGF0KGNvbnN0IGNoYXIgKnBhdGgsIFNUUlVDVF9TVEFUICpzdHAp CisgCQkJaWYgKGRsZW4gPj0gc2l6ZW9mIGRpcikgeyBlcnJubyA9IEVOQU1FVE9PTE9ORzsgcmV0 dXJuIC0xOyB9CisgCQkJbWVtY3B5KGRpciwgcGF0aCwgZGxlbik7CisgCQkJZGlyW2RsZW5dID0g J1wwJzsKKy0JCQlpZiAoKGRmZCA9IHNlY3VyZV9yZWxhdGl2ZV9vcGVuKE5VTEwsIGRpciwgT19S RE9OTFkgfCBPX0RJUkVDVE9SWSwgMCkpIDwgMCkKKysJCQlpZiAoKGRmZCA9IHNlY3VyZV9yZWxh dGl2ZV9kaXJmZChOVUxMLCBkaXIpKSA8IDApCisgCQkJCXJldHVybiAtMTsKKyAJCQlyID0gbGlu a19zdGF0X2F0KGRmZCwgc2xhc2ggKyAxLCBzdHAsIDApOworIAkJCWUgPSBlcnJubzsKK2RpZmYg LS1naXQgYS9zZW5kZXIuYyBiL3NlbmRlci5jCitpbmRleCBiYjFiMTM3Li5iYTQwYjk0IDEwMDY0 NAorLS0tIGEvc2VuZGVyLmMKKysrKyBiL3NlbmRlci5jCitAQCAtMTI3LDggKzEyNyw3IEBAIHN0 YXRpYyBpbnQgc2VjdXJlX3NlbmRlcl9wYXJlbnRfZmQoc3RydWN0IGZpbGVfc3RydWN0ICpmaWxl LCBjb25zdCBjaGFyICpmbmFtZSwKKyAjZW5kaWYKKyAJCQkJd2hpbGUgKCpyZWwgPT0gJy8nKQor IAkJCQkJcmVsKys7CistCQkJCXJldHVybiBzZWN1cmVfcmVsYXRpdmVfb3BlbigiLyIsIHJlbCwK Ky0JCQkJCU9fUkRPTkxZIHwgT19ESVJFQ1RPUlksIDApOworKwkJCQlyZXR1cm4gc2VjdXJlX3Jl bGF0aXZlX2RpcmZkKCIvIiwgcmVsKTsKKyAJCQl9CisgCQkJLyogaGVsZF9kaXJfcGF0aF9mZCBy ZXR1cm5zIGEgY2FjaGUtT1dORUQgZmQ7IHRoZSBjYWxsZXIgY2xvc2VzCisgCQkJICogd2hhdCB3 ZSByZXR1cm4sIHNvIGhhbmQgYmFjayBhbiBvd25lZCBkdXAgYW5kIGxlYXZlIHRoZSBjYWNoZSdz CitAQCAtMTQxLDcgKzE0MCw3IEBAIHN0YXRpYyBpbnQgc2VjdXJlX3NlbmRlcl9wYXJlbnRfZmQo c3RydWN0IGZpbGVfc3RydWN0ICpmaWxlLCBjb25zdCBjaGFyICpmbmFtZSwKKyAJCQkJcmV0dXJu IGR1cChkZmQpOworIAkJCWlmIChlcnJubyAhPSAwKQorIAkJCQlyZXR1cm4gLTE7CistCQkJcmV0 dXJuIHNlY3VyZV9yZWxhdGl2ZV9vcGVuKE5VTEwsIGRpciwgT19SRE9OTFkgfCBPX0RJUkVDVE9S WSwgMCk7CisrCQkJcmV0dXJuIHNlY3VyZV9yZWxhdGl2ZV9kaXJmZChOVUxMLCBkaXIpOworIAkJ fQorIAkJZXJybm8gPSAwOwkvKiB0b3AtbGV2ZWwgZmlsZTogbm8gcGFyZW50IGNvbXBvbmVudCB0 byBjb25maW5lICovCisgCQlyZXR1cm4gLTE7CitAQCAtMTc2LDkgKzE3NSw5IEBAIHN0YXRpYyBp bnQgc2VjdXJlX3NlbmRlcl9wYXJlbnRfZmQoc3RydWN0IGZpbGVfc3RydWN0ICpmaWxlLCBjb25z dCBjaGFyICpmbmFtZSwKKyAJCX0KKyAJCW1lbWNweShkaXIsIHJlbHAsIGRsZW4pOworIAkJZGly W2RsZW5dID0gJ1wwJzsKKy0JCWRmZCA9IHNlY3VyZV9yZWxhdGl2ZV9vcGVuKG1vZHVsZV9kaXIs IGRpciwgT19SRE9OTFkgfCBPX0RJUkVDVE9SWSwgMCk7CisrCQlkZmQgPSBzZWN1cmVfcmVsYXRp dmVfZGlyZmQobW9kdWxlX2RpciwgZGlyKTsKKyAJfSBlbHNlCistCQlkZmQgPSBzZWN1cmVfcmVs YXRpdmVfb3Blbihtb2R1bGVfZGlyLCAiIiwgT19SRE9OTFkgfCBPX0RJUkVDVE9SWSwgMCk7Cisr CQlkZmQgPSBzZWN1cmVfcmVsYXRpdmVfZGlyZmQobW9kdWxlX2RpciwgIiIpOworIAorIAkvKiBU aGUgbGVhZiBpcyB0aGUgc2FtZSBsYXN0IGNvbXBvbmVudCBlaXRoZXIgd2F5OyB0YWtlIGl0IGZy b20gdGhlIGNhbGxlcidzCisgCSAqIHBlcnNpc3RlbnQgZm5hbWUgYnVmZmVyLCBub3QgdGhlIGxv Y2FsIHNlY3VyZV9wYXRoLiAqLworQEAgLTI5MiwxMSArMjkxLDkgQEAgc3RhdGljIGludCBzZW5k ZXJfb3Blbl9jb3B5bGlua3NfY29uZmluZWQoY29uc3QgY2hhciAqYW5jaG9yLCBjb25zdCBjaGFy ICpyZWxwYXQKKyAJCSAqIG9ubHkgdGhpcyBicmFuY2ggd291bGQgaGFuZCBpdCB0byBzdHJjbXAo KS4gKi8KKyAJCWlmIChhbV9kYWVtb24gJiYgbW9kdWxlX2RpcmZkID49IDAgJiYgbW9kdWxlX2Rp ciAmJiBhbmNob3IKKyAJCSAmJiBzdHJjbXAoYW5jaG9yLCBtb2R1bGVfZGlyKSA9PSAwKQorLQkJ CXBkZmQgPSBzZWN1cmVfcmVsYXRpdmVfb3Blbl9hdF9iZW5lYXRoKG1vZHVsZV9kaXJmZCwgZGly LAorLQkJCQkJT19SRE9OTFkgfCBPX0RJUkVDVE9SWSwgMCk7CisrCQkJcGRmZCA9IHNlY3VyZV9y ZWxhdGl2ZV9kaXJmZF9hdF9iZW5lYXRoKG1vZHVsZV9kaXJmZCwgZGlyKTsKKyAJCWVsc2UKKy0J CQlwZGZkID0gc2VjdXJlX3JlbGF0aXZlX29wZW4oYW5jaG9yLCBkaXIsCistCQkJCQlPX1JET05M WSB8IE9fRElSRUNUT1JZLCAwKTsKKysJCQlwZGZkID0gc2VjdXJlX3JlbGF0aXZlX2RpcmZkKGFu Y2hvciwgZGlyKTsKKyAJCWlmIChwZGZkIDwgMCkKKyAJCQlyZXR1cm4gLTE7CisgCQluID0gZG9f cmVhZGxpbmtfYXRmZChwZGZkLCBibmFtZSwgdGd0LCBzaXplb2YgdGd0IC0gMSk7CitkaWZmIC0t Z2l0IGEvc3lzY2FsbC5jIGIvc3lzY2FsbC5jCitpbmRleCA1ZTkyZWRjLi5kODA0ZjQyIDEwMDY0 NAorLS0tIGEvc3lzY2FsbC5jCisrKysgYi9zeXNjYWxsLmMKK0BAIC03NCw2ICs3NCwyMCBAQCBl eHRlcm4gdW5zaWduZWQgaW50IGNvbmZpbmVfcm9vdGxlbjsKKyBleHRlcm4gY2hhciBjdXJyX2Rp cltNQVhQQVRITEVOXTsJLyogZGVmaW5lZCBiZWxvdzsgZndkLWRlY2xhcmVkIGZvciB0aGUgc2Vl ZCAqLworIGV4dGVybiBpbnQgb3BlcmF0b3JfcGF0aF9yZXNvbHZlOwkvKiBkZWZpbmVkIGJlbG93 OyBmd2QtZGVjbGFyZWQgZm9yIHRoZSBleGNsdWRlIGNoZWNrICovCisgCisrLyogQSBkaXJlY3Rv cnkgZmQgdXNlZCBvbmx5IGZvciBwYXRobmFtZSB0cmF2ZXJzYWwsIGZjaGRpcigpLCBvciBhcyAq YXQoKQorKyAqIGF1dGhvcml0eSBkb2VzIG5vdCBuZWVkIHJlYWQgcGVybWlzc2lvbiBvbiBMaW51 eC4gIEtlZXAgdGhlIHBvcnRhYmxlCisrICogT19SRE9OTFkgZmFsbGJhY2sgZm9yIHN5c3RlbXMg d2l0aG91dCBPX1BBVEguICovCisrc3RhdGljIGludCBkaXJlY3RvcnlfdHJhdmVyc2VfZmxhZ3Mo dm9pZCkKKyt7CisrI2lmIGRlZmluZWQgT19QQVRIICYmIGRlZmluZWQgT19ESVJFQ1RPUlkKKysJ cmV0dXJuIE9fUEFUSCB8IE9fRElSRUNUT1JZOworKyNlbGlmIGRlZmluZWQgT19ESVJFQ1RPUlkK KysJcmV0dXJuIE9fUkRPTkxZIHwgT19ESVJFQ1RPUlk7CisrI2Vsc2UKKysJcmV0dXJuIE9fUkRP TkxZOworKyNlbmRpZgorK30KKysKKyAjaWYgZGVmaW5lZCBBVF9GRENXRCAmJiBkZWZpbmVkIE9f Tk9GT0xMT1cgJiYgZGVmaW5lZCBPX0RJUkVDVE9SWQorIC8qIE9wZW4gYSB0cnVzdGVkIGFic29s dXRlIGFuY2hvciBkaXJlY3RvcnkgYXMgYW4gb3duZWQgZGlyZmQuICBXaGVuIHRoZSBhbmNob3Ig aXMKKyAgKiB0aGUgc2VydmVkIG1vZHVsZSByb290IGFuZCB0aGUgZGFlbW9uIHBpbm5lZCBpdCBi eSBpZGVudGl0eSAobW9kdWxlX2RpcmZkKSwgZHVwCitAQCAtODYsNyArMTAwLDcgQEAgc3RhdGlj IGludCBvcGVuX2FuY2hvcl9kaXJmZChjb25zdCBjaGFyICpwYXRoKQorIHsKKyAJaWYgKG1vZHVs ZV9kaXJmZCA+PSAwICYmIGFtX2RhZW1vbiAmJiBtb2R1bGVfZGlyICYmIHN0cmNtcChwYXRoLCBt b2R1bGVfZGlyKSA9PSAwKQorIAkJcmV0dXJuIGR1cChtb2R1bGVfZGlyZmQpOworLQlyZXR1cm4g b3BlbmF0KEFUX0ZEQ1dELCBwYXRoLCBPX1JET05MWSB8IE9fRElSRUNUT1JZKTsKKysJcmV0dXJu IG9wZW5hdChBVF9GRENXRCwgcGF0aCwgZGlyZWN0b3J5X3RyYXZlcnNlX2ZsYWdzKCkpOworIH0K KyAjZW5kaWYKKyAKK0BAIC0yODUsMTIgKzI5OSwxMyBAQCBzdGF0aWMgaW50IGFic3BhdGhfc3Rl cChjaGFyICphYnNwYXRoLCBzaXplX3QgY2FwLCBjb25zdCBjaGFyICpjb21wLCBzaXplX3QgY29t cAorICAqIHVzZXMgaXQgdG8gZmlsdGVyLWNoZWNrIHRoZSAob3RoZXJ3aXNlIHVuY2hlY2tlZCkg bGVhZiBiYXNlbmFtZS4gKi8KKyBzdGF0aWMgaW50IG9uYV9vcGVuKGNvbnN0IGNoYXIgKnBhdGgs IGludCBmbGFncywgbW9kZV90IG1vZGUsIGNoYXIgKm91dF9hYnMsIHNpemVfdCBvdXRfY2FwKQor IHsKKy0jaWYgZGVmaW5lZCBBVF9GRENXRCAmJiBkZWZpbmVkIE9fTk9GT0xMT1cKKysjaWYgZGVm aW5lZCBBVF9GRENXRCAmJiBkZWZpbmVkIE9fTk9GT0xMT1cgJiYgZGVmaW5lZCBPX0RJUkVDVE9S WQorIAkvKiBPX0NMT0VYRUMgcHJlZGF0ZXMgc29tZSBzdGlsbC1zdXBwb3J0ZWQgdGFyZ2V0czsg bWlycm9yIHJhbmRfYnl0ZXMoKSdzCisgCSAqIGZhbGxiYWNrIGluIHN5c2NhbGwuYyBzbyBhIGJ1 aWxkIHdpdGhvdXQgaXQgc3RpbGwgY29tcGlsZXMuICovCisgI2lmbmRlZiBPX0NMT0VYRUMKKyAj ZGVmaW5lIE9fQ0xPRVhFQyAwCisgI2VuZGlmCisrCWNvbnN0IGludCBkaXJfdHJhdmVyc2VfZmxh Z3MgPSBkaXJlY3RvcnlfdHJhdmVyc2VfZmxhZ3MoKSB8IE9fQ0xPRVhFQzsKKyAJaWYgKCFwYXRo IHx8ICEqcGF0aCkgeworIAkJZXJybm8gPSBFSU5WQUw7CisgCQlyZXR1cm4gLTE7CitAQCAtMzQ4 LDcgKzM2Myw3IEBAIHN0YXRpYyBpbnQgb25hX29wZW4oY29uc3QgY2hhciAqcGF0aCwgaW50IGZs YWdzLCBtb2RlX3QgbW9kZSwgY2hhciAqb3V0X2Ficywgc2l6CisgCisgCS8qIEFic29sdXRlIHBh dGg6IHBpbiAiLyIgYXMgdGhlIHN0YXJ0aW5nIGRmZC4gKi8KKyAJaWYgKHJlbWFpbmluZ1swXSA9 PSAnLycpIHsKKy0JCWRmZCA9IG9wZW4oIi8iLCBPX1JET05MWSB8IE9fRElSRUNUT1JZIHwgT19D TE9FWEVDKTsKKysJCWRmZCA9IG9wZW4oIi8iLCBkaXJfdHJhdmVyc2VfZmxhZ3MpOworIAkJaWYg KGRmZCA8IDApCisgCQkJcmV0dXJuIC0xOworIAkJZGZkX293bnMgPSAxOworQEAgLTQzNSw3ICs0 NTAsNyBAQCBzdGF0aWMgaW50IG9uYV9vcGVuKGNvbnN0IGNoYXIgKnBhdGgsIGludCBmbGFncywg bW9kZV90IG1vZGUsIGNoYXIgKm91dF9hYnMsIHNpegorIAorIAkJCWlmICh0YXJnZXRbMF0gPT0g Jy8nKSB7CisgCQkJCWlmIChkZmRfb3ducykgY2xvc2UoZGZkKTsKKy0JCQkJZGZkID0gb3Blbigi LyIsIE9fUkRPTkxZIHwgT19ESVJFQ1RPUlkgfCBPX0NMT0VYRUMpOworKwkJCQlkZmQgPSBvcGVu KCIvIiwgZGlyX3RyYXZlcnNlX2ZsYWdzKTsKKyAJCQkJaWYgKGRmZCA8IDApIHsKKyAJCQkJCXNh dmVkX2Vycm5vID0gZXJybm87CisgCQkJCQlkZmRfb3ducyA9IDA7CitAQCAtNDkwLDcgKzUwNSw3 IEBAIHN0YXRpYyBpbnQgb25hX29wZW4oY29uc3QgY2hhciAqcGF0aCwgaW50IGZsYWdzLCBtb2Rl X3QgbW9kZSwgY2hhciAqb3V0X2Ficywgc2l6CisgCQkJc2F2ZWRfZXJybm8gPSBFTE9PUDsKKyAJ CQlnb3RvIG91dDsKKyAJCX0KKy0JCWludCBuZXh0ID0gb3BlbmF0KGRmZCwgY29tcCwgT19SRE9O TFkgfCBPX0RJUkVDVE9SWSB8IE9fTk9GT0xMT1cgfCBPX0NMT0VYRUMpOworKwkJaW50IG5leHQg PSBvcGVuYXQoZGZkLCBjb21wLCBkaXJfdHJhdmVyc2VfZmxhZ3MgfCBPX05PRk9MTE9XKTsKKyAJ CWlmIChuZXh0IDwgMCkgeworIAkJCXNhdmVkX2Vycm5vID0gZXJybm87CisgCQkJZ290byBvdXQ7 CitAQCAtNTEwLDEyICs1MjUsMTIgQEAgc3RhdGljIGludCBvbmFfb3Blbihjb25zdCBjaGFyICpw YXRoLCBpbnQgZmxhZ3MsIG1vZGVfdCBtb2RlLCBjaGFyICpvdXRfYWJzLCBzaXoKKyAJfQorIAor IAkvKiBQYXRoIHJlc29sdmVkIGVudGlyZWx5IHRvIGEgZGlyZWN0b3J5IChubyBsZWFmIGNvbXBv bmVudCBsZWZ0KS4KKy0JICogSWYgdGhlIGNhbGxlciB3YW50ZWQgT19ESVJFQ1RPUlkgd2UgYWxy ZWFkeSBob2xkIHRoZSBkaXJmZCB3ZQorLQkgKiBidWlsdCB1cDsgb3RoZXJ3aXNlIGl0J3MgYW4g RUlTRElSLiAqLworKwkgKiBSZW9wZW4gdGhlIGhlbGQgdHJhdmVyc2FsIGZkIHdpdGggdGhlIGNh bGxlcidzIHJlcXVlc3RlZCBhY2Nlc3MgbW9kZTsKKysJICogYW4gT19QQVRIIGZkIGlzIHN1ZmZp Y2llbnQgZm9yIHRyYXZlcnNhbCBhbmQgZmNoZGlyIGJ1dCBub3Qgb3BlcmF0aW9ucworKwkgKiBz dWNoIGFzIGZjaG1vZC4gKi8KKyAJaWYgKGZsYWdzICYgT19ESVJFQ1RPUlkpIHsKKy0JCXJldGZk ID0gZGZkOworLQkJZGZkX293bnMgPSAwOwkvKiBjYWxsZXIgbm93IG93bnMgaXQgKi8KKy0JCXNh dmVkX2Vycm5vID0gMDsKKysJCXJldGZkID0gb3BlbmF0KGRmZCwgIi4iLCBmbGFncyB8IE9fTk9G T0xMT1csIG1vZGUpOworKwkJc2F2ZWRfZXJybm8gPSByZXRmZCA8IDAgPyBlcnJubyA6IDA7Cisg CQlpZiAob3V0X2FicyAmJiBvdXRfY2FwKQorIAkJCS8qIFJvb3QtcmVzb2x2ZWQgKCIuLiIgcG9w cGVkIGFic3BhdGggZW1wdHkpIHRyYWNrZWQgZGFlbW9uIHdhbGs6CisgCQkJICogaGFuZCBiYWNr ICIvIiBzbyBvd25lcl93YWxrX3BhcmVudCBzdGlsbCBsZWFmLWNoZWNrcyAocGF0aD0vIGJ5cGFz cykuICovCitAQCAtNTQwLDYgKzU1NSwxNCBAQCBpbnQgb3Blbl9ub19hdHRhY2tlcl9zeW1saW5r cyhjb25zdCBjaGFyICpwYXRoLCBpbnQgZmxhZ3MsIG1vZGVfdCBtb2RlKQorIAlyZXR1cm4gb25h X29wZW4ocGF0aCwgZmxhZ3MsIG1vZGUsIE5VTEwsIDApOworIH0KKyAKKysvKiBPcGVuIGEgZGly ZWN0b3J5IGZvciB0cmF2ZXJzYWwgb3IgYXMgKmF0KCkvZmNoZGlyKCkgYXV0aG9yaXR5LiAgVW5s aWtlIGFuCisrICogT19SRE9OTFkgZGlyZWN0b3J5IGVuZHBvaW50LCB0aGlzIGFjY2VwdHMgYSBz ZWFyY2hhYmxlIGJ1dCB1bnJlYWRhYmxlCisrICogZGlyZWN0b3J5IG9uIExpbnV4LiAqLworK2lu dCBvcGVuX25vX2F0dGFja2VyX3N5bWxpbmtzX2RpcmZkKGNvbnN0IGNoYXIgKnBhdGgpCisrewor KwlyZXR1cm4gb25hX29wZW4ocGF0aCwgZGlyZWN0b3J5X3RyYXZlcnNlX2ZsYWdzKCksIDAsIE5V TEwsIDApOworK30KKysKKyAvKiBXaGVuIHNldCwgdGhlIGRvXypfYXQoKSB3cmFwcGVycyByZXNv bHZlIHRoZWlyIHBhdGggYXMgYW4gT1BFUkFUT1Itc3VwcGxpZWQKKyAgKiBkaXJlY3RvcnkgcGF0 aCAoYW4gYWJzb2x1dGUgb3IgcmVsYXRpdmUgLS1iYWNrdXAtZGlyLy0tdGVtcC1kaXIvLS0qLWRl c3QpCisgICogdXNpbmcgdGhlIG93bmVyc2hpcCB3YWxrIC0tIGZvbGxvdyBhIHN5bWxpbmsgb3du ZWQgYnkgdWlkIDAgb3Igb3VyIGV1aWQsCitAQCAtNTY1LDcgKzU4OCw3IEBAIGludCBvd25lcl93 YWxrX3BhcmVudChjb25zdCBjaGFyICpwYXRoLCBjb25zdCBjaGFyICoqYm5hbWUpCisgCSpibmFt ZSA9IHNsYXNoID8gc2xhc2ggKyAxIDogcGF0aDsKKyAJcGFic1swXSA9ICdcMCc7CisgCWlmICgh c2xhc2gpCistCQlkZmQgPSBvbmFfb3BlbigiLiIsIE9fUkRPTkxZIHwgT19ESVJFQ1RPUlksIDAs IHBhYnMsIHNpemVvZiBwYWJzKTsKKysJCWRmZCA9IG9uYV9vcGVuKCIuIiwgZGlyZWN0b3J5X3Ry YXZlcnNlX2ZsYWdzKCksIDAsIHBhYnMsIHNpemVvZiBwYWJzKTsKKyAJZWxzZSB7CisgCQlkbGVu ID0gc2xhc2ggPT0gcGF0aCA/IDEgOiAoc2l6ZV90KShzbGFzaCAtIHBhdGgpOyAvKiAiL3giIC0+ IHBhcmVudCAiLyIgKi8KKyAJCWlmIChkbGVuID49IHNpemVvZiBkaXIpIHsKK0BAIC01NzQsNyAr NTk3LDcgQEAgaW50IG93bmVyX3dhbGtfcGFyZW50KGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNo YXIgKipibmFtZSkKKyAJCX0KKyAJCW1lbWNweShkaXIsIHBhdGgsIGRsZW4pOworIAkJZGlyW2Rs ZW5dID0gJ1wwJzsKKy0JCWRmZCA9IG9uYV9vcGVuKGRpciwgT19SRE9OTFkgfCBPX0RJUkVDVE9S WSwgMCwgcGFicywgc2l6ZW9mIHBhYnMpOworKwkJZGZkID0gb25hX29wZW4oZGlyLCBkaXJlY3Rv cnlfdHJhdmVyc2VfZmxhZ3MoKSwgMCwgcGFicywgc2l6ZW9mIHBhYnMpOworIAl9CisgCWlmIChk ZmQgPCAwKQorIAkJcmV0dXJuIC0xOworQEAgLTcwMyw3ICs3MjYsNyBAQCBpbnQgZG9fdW5saW5r X2F0KGNvbnN0IGNoYXIgKnBhdGgpCisgCWRpcnBhdGhbZGxlbl0gPSAnXDAnOworIAlibmFtZSA9 IHNsYXNoICsgMTsKKyAKKy0JZGZkID0gc2VjdXJlX3JlbGF0aXZlX29wZW4oTlVMTCwgZGlycGF0 aCwgT19SRE9OTFkgfCBPX0RJUkVDVE9SWSwgMCk7CisrCWRmZCA9IHNlY3VyZV9yZWxhdGl2ZV9k aXJmZChOVUxMLCBkaXJwYXRoKTsKKyAJaWYgKGRmZCA8IDApCisgCQlyZXR1cm4gLTE7CisgCitA QCAtODEwLDcgKzgzMyw3IEBAIGludCBkb19zeW1saW5rX2F0KGNvbnN0IGNoYXIgKmxuaywgY29u c3QgY2hhciAqcGF0aCkKKyAJCQltZW1jcHkoZGlycGF0aCwgcGF0aCwgZGxlbik7CisgCQkJZGly cGF0aFtkbGVuXSA9ICdcMCc7CisgCQkJYm5hbWUgPSBzbGFzaCArIDE7CistCQkJZGZkID0gc2Vj dXJlX3JlbGF0aXZlX29wZW4oTlVMTCwgZGlycGF0aCwgT19SRE9OTFkgfCBPX0RJUkVDVE9SWSwg MCk7CisrCQkJZGZkID0gc2VjdXJlX3JlbGF0aXZlX2RpcmZkKE5VTEwsIGRpcnBhdGgpOworIAkJ CWlmIChkZmQgPCAwKQorIAkJCQlyZXR1cm4gLTE7CisgCQkJb3ducyA9IFRydWU7CitAQCAtMTAx Miw3ICsxMDM1LDcgQEAgaW50IGRvX2xpbmtfYXQoY29uc3QgY2hhciAqb2xkX3BhdGgsIGNvbnN0 IGNoYXIgKm5ld19wYXRoKQorIAkJbWVtY3B5KG9sZF9kaXJwYXRoLCBvbGRfcGF0aCwgb2xkX2Rs ZW4pOworIAkJb2xkX2RpcnBhdGhbb2xkX2RsZW5dID0gJ1wwJzsKKyAJCW9sZF9ibmFtZSA9IG9s ZF9zbGFzaCArIDE7CistCQlvbGRfZGZkID0gc2VjdXJlX3JlbGF0aXZlX29wZW4oTlVMTCwgb2xk X2RpcnBhdGgsIE9fUkRPTkxZIHwgT19ESVJFQ1RPUlksIDApOworKwkJb2xkX2RmZCA9IHNlY3Vy ZV9yZWxhdGl2ZV9kaXJmZChOVUxMLCBvbGRfZGlycGF0aCk7CisgCQlpZiAob2xkX2RmZCA8IDAp CisgCQkJcmV0dXJuIC0xOworIAkJb2xkX293bnMgPSBUcnVlOworQEAgLTEwNTEsNyArMTA3NCw3 IEBAIGludCBkb19saW5rX2F0KGNvbnN0IGNoYXIgKm9sZF9wYXRoLCBjb25zdCBjaGFyICpuZXdf cGF0aCkKKyAJCSAmJiBtZW1jbXAob2xkX2RpcnBhdGgsIG5ld19kaXJwYXRoLCBvbGRfZGxlbikg PT0gMCkgeworIAkJCW5ld19kZmQgPSBvbGRfZGZkOworIAkJfSBlbHNlIHsKKy0JCQluZXdfZGZk ID0gc2VjdXJlX3JlbGF0aXZlX29wZW4oTlVMTCwgbmV3X2RpcnBhdGgsIE9fUkRPTkxZIHwgT19E SVJFQ1RPUlksIDApOworKwkJCW5ld19kZmQgPSBzZWN1cmVfcmVsYXRpdmVfZGlyZmQoTlVMTCwg bmV3X2RpcnBhdGgpOworIAkJCWlmIChuZXdfZGZkIDwgMCkgeworIAkJCQllID0gZXJybm87Cisg CQkJCWlmIChvbGRfb3ducykgY2xvc2Uob2xkX2RmZCk7CitAQCAtMTE1NCw3ICsxMTc3LDcgQEAg aW50IGRvX2xjaG93bl9hdChjb25zdCBjaGFyICpmbmFtZSwgdWlkX3Qgb3duZXIsIGdpZF90IGdy b3VwKQorIAlkaXJwYXRoW2RsZW5dID0gJ1wwJzsKKyAJYm5hbWUgPSBzbGFzaCArIDE7CisgCist CWRmZCA9IHNlY3VyZV9yZWxhdGl2ZV9vcGVuKE5VTEwsIGRpcnBhdGgsIE9fUkRPTkxZIHwgT19E SVJFQ1RPUlksIDApOworKwlkZmQgPSBzZWN1cmVfcmVsYXRpdmVfZGlyZmQoTlVMTCwgZGlycGF0 aCk7CisgCWlmIChkZmQgPCAwKQorIAkJcmV0dXJuIC0xOworIAorQEAgLTEzMjUsNyArMTM0OCw3 IEBAIGludCBkb19ta25vZF9hdChjb25zdCBjaGFyICpwYXRobmFtZSwgbW9kZV90IG1vZGUsIGRl dl90IGRldikKKyAJCW1lbWNweShkaXJwYXRoLCBwYXRobmFtZSwgZGxlbik7CisgCQlkaXJwYXRo W2RsZW5dID0gJ1wwJzsKKyAJCWJuYW1lID0gc2xhc2ggKyAxOworLQkJZGZkID0gc2VjdXJlX3Jl bGF0aXZlX29wZW4oTlVMTCwgZGlycGF0aCwgT19SRE9OTFkgfCBPX0RJUkVDVE9SWSwgMCk7Cisr CQlkZmQgPSBzZWN1cmVfcmVsYXRpdmVfZGlyZmQoTlVMTCwgZGlycGF0aCk7CisgCQlpZiAoZGZk IDwgMCkKKyAJCQlyZXR1cm4gLTE7CisgCQlvd25zID0gVHJ1ZTsKK0BAIC0xNDQ3LDcgKzE0NzAs NyBAQCBpbnQgZG9fcm1kaXJfYXQoY29uc3QgY2hhciAqcGF0aG5hbWUpCisgCWRpcnBhdGhbZGxl bl0gPSAnXDAnOworIAlibmFtZSA9IHNsYXNoICsgMTsKKyAKKy0JZGZkID0gc2VjdXJlX3JlbGF0 aXZlX29wZW4oTlVMTCwgZGlycGF0aCwgT19SRE9OTFkgfCBPX0RJUkVDVE9SWSwgMCk7CisrCWRm ZCA9IHNlY3VyZV9yZWxhdGl2ZV9kaXJmZChOVUxMLCBkaXJwYXRoKTsKKyAJaWYgKGRmZCA8IDAp CisgCQlyZXR1cm4gLTE7CisgCitAQCAtMTU0Myw3ICsxNTY2LDcgQEAgaW50IGRvX29wZW5fYXQo Y29uc3QgY2hhciAqcGF0aG5hbWUsIGludCBmbGFncywgbW9kZV90IG1vZGUpCisgCWRpcnBhdGhb ZGxlbl0gPSAnXDAnOworIAlibmFtZSA9IHNsYXNoICsgMTsKKyAKKy0JZGZkID0gc2VjdXJlX3Jl bGF0aXZlX29wZW4oTlVMTCwgZGlycGF0aCwgT19SRE9OTFkgfCBPX0RJUkVDVE9SWSwgMCk7Cisr CWRmZCA9IHNlY3VyZV9yZWxhdGl2ZV9kaXJmZChOVUxMLCBkaXJwYXRoKTsKKyAJaWYgKGRmZCA8 IDApCisgCQlyZXR1cm4gLTE7CisgCitAQCAtMTgyNSw3ICsxODQ4LDcgQEAgaW50IGRvX2NobW9k X2F0KGNvbnN0IGNoYXIgKmZuYW1lLCBtb2RlX3QgbW9kZSkKKyAJZGlycGF0aFtkbGVuXSA9ICdc MCc7CisgCWJuYW1lID0gc2xhc2ggKyAxOworIAorLQlkZmQgPSBzZWN1cmVfcmVsYXRpdmVfb3Bl bihOVUxMLCBkaXJwYXRoLCBPX1JET05MWSB8IE9fRElSRUNUT1JZLCAwKTsKKysJZGZkID0gc2Vj dXJlX3JlbGF0aXZlX2RpcmZkKE5VTEwsIGRpcnBhdGgpOworIAlpZiAoZGZkIDwgMCkKKyAJCXJl dHVybiAtMTsKKyAKK0BAIC0xOTQyLDcgKzE5NjUsNyBAQCBpbnQgZG9fcmVuYW1lX2F0KGNvbnN0 IGNoYXIgKm9sZF9wYXRoLCBjb25zdCBjaGFyICpuZXdfcGF0aCkKKyAJCW1lbWNweShvbGRfZGly cGF0aCwgb2xkX3BhdGgsIG9sZF9kbGVuKTsKKyAJCW9sZF9kaXJwYXRoW29sZF9kbGVuXSA9ICdc MCc7CisgCQlvbGRfYm5hbWUgPSBvbGRfc2xhc2ggKyAxOworLQkJb2xkX2RmZCA9IHNlY3VyZV9y ZWxhdGl2ZV9vcGVuKE5VTEwsIG9sZF9kaXJwYXRoLCBPX1JET05MWSB8IE9fRElSRUNUT1JZLCAw KTsKKysJCW9sZF9kZmQgPSBzZWN1cmVfcmVsYXRpdmVfZGlyZmQoTlVMTCwgb2xkX2RpcnBhdGgp OworIAkJaWYgKG9sZF9kZmQgPCAwKQorIAkJCXJldHVybiAtMTsKKyAJCW9sZF9vd25zID0gVHJ1 ZTsKK0BAIC0xOTgxLDcgKzIwMDQsNyBAQCBpbnQgZG9fcmVuYW1lX2F0KGNvbnN0IGNoYXIgKm9s ZF9wYXRoLCBjb25zdCBjaGFyICpuZXdfcGF0aCkKKyAJCSAmJiBtZW1jbXAob2xkX2RpcnBhdGgs IG5ld19kaXJwYXRoLCBvbGRfZGxlbikgPT0gMCkgeworIAkJCW5ld19kZmQgPSBvbGRfZGZkOwor IAkJfSBlbHNlIHsKKy0JCQluZXdfZGZkID0gc2VjdXJlX3JlbGF0aXZlX29wZW4oTlVMTCwgbmV3 X2RpcnBhdGgsIE9fUkRPTkxZIHwgT19ESVJFQ1RPUlksIDApOworKwkJCW5ld19kZmQgPSBzZWN1 cmVfcmVsYXRpdmVfZGlyZmQoTlVMTCwgbmV3X2RpcnBhdGgpOworIAkJCWlmIChuZXdfZGZkIDwg MCkgeworIAkJCQllID0gZXJybm87CisgCQkJCWlmIChvbGRfb3ducykgY2xvc2Uob2xkX2RmZCk7 CitAQCAtMjExMiw3ICsyMTM1LDcgQEAgaW50IGRvX21rZGlyX2F0KGNoYXIgKnBhdGgsIG1vZGVf dCBtb2RlKQorIAlkaXJwYXRoW2RsZW5dID0gJ1wwJzsKKyAJYm5hbWUgPSBzbGFzaCArIDE7Cisg CistCWRmZCA9IHNlY3VyZV9yZWxhdGl2ZV9vcGVuKE5VTEwsIGRpcnBhdGgsIE9fUkRPTkxZIHwg T19ESVJFQ1RPUlksIDApOworKwlkZmQgPSBzZWN1cmVfcmVsYXRpdmVfZGlyZmQoTlVMTCwgZGly cGF0aCk7CisgCWlmIChkZmQgPCAwKQorIAkJcmV0dXJuIC0xOworIAorQEAgLTIyMzgsNyArMjI2 MSw3IEBAIHN0YXRpYyBpbnQgZG9feHN0YXRfYXQoY29uc3QgY2hhciAqcGF0aCwgU1RSVUNUX1NU QVQgKnN0LCBpbnQgYXRfZmxhZ3MsIGludCAoKmZhCisgCWRpcnBhdGhbZGxlbl0gPSAnXDAnOwor IAlibmFtZSA9IHNsYXNoICsgMTsKKyAKKy0JZGZkID0gc2VjdXJlX3JlbGF0aXZlX29wZW4oTlVM TCwgZGlycGF0aCwgT19SRE9OTFkgfCBPX0RJUkVDVE9SWSwgMCk7CisrCWRmZCA9IHNlY3VyZV9y ZWxhdGl2ZV9kaXJmZChOVUxMLCBkaXJwYXRoKTsKKyAJaWYgKGRmZCA8IDApCisgCQlyZXR1cm4g LTE7CisgCitAQCAtMjQ5MCw3ICsyNTEzLDcgQEAgaW50IGRvX3V0aW1lbnNhdF9hdChjb25zdCBj aGFyICpwYXRoLCBTVFJVQ1RfU1RBVCAqc3RwKQorIAl0WzFdLnR2X25zZWMgPSAwOworICNlbmRp ZgorIAorLQlkZmQgPSBzZWN1cmVfcmVsYXRpdmVfb3BlbihOVUxMLCBkaXJwYXRoLCBPX1JET05M WSB8IE9fRElSRUNUT1JZLCAwKTsKKysJZGZkID0gc2VjdXJlX3JlbGF0aXZlX2RpcmZkKE5VTEws IGRpcnBhdGgpOworIAlpZiAoZGZkIDwgMCkKKyAJCXJldHVybiAtMTsKKyAKK0BAIC0yODcxLDEz ICsyODk0LDEzIEBAIHN0YXRpYyBpbnQgZHNfcHVzaChzdHJ1Y3QgZGlyc3RhY2sgKmRzLCBpbnQg ZmQpCisgCXJldHVybiAwOworIH0KKyAKKy0vKiBEZXRhY2ggdGhlIGN1cnJlbnQgZGlyIGFzIGFu IG93bmVkIGZkIHRoZSBjYWxsZXIgbXVzdCBjbG9zZS4gIEF0IHRoZSBhbmNob3IKKy0gKiAodG9w IDApIHRoZSBhbmNob3IgaXMgYm9ycm93ZWQsIHNvIHJldHVybiBhIGZyZXNoIGR1cCBvZiBpdCBp bnN0ZWFkLiAqLworKy8qIERldGFjaCB0aGUgY3VycmVudCB0cmF2ZXJzYWwgZGlyZmQgYXMgYW4g b3duZWQgZmQgdGhlIGNhbGxlciBtdXN0IGNsb3NlLiAgQXQKKysgKiB0aGUgYW5jaG9yICh0b3Ag MCkgdGhlIGFuY2hvciBpcyBib3Jyb3dlZCwgc28gb3BlbiBhIGZyZXNoIHRyYXZlcnNhbCBmZC4g Ki8KKyBzdGF0aWMgaW50IGRzX3Rha2Uoc3RydWN0IGRpcnN0YWNrICpkcykKKyB7CisgCWlmIChk cy0+dG9wID4gMCkKKyAJCXJldHVybiBkcy0+ZmRzW2RzLT50b3AtLV07CistCXJldHVybiBvcGVu YXQoZHMtPmZkc1swXSwgIi4iLCBPX1JET05MWSB8IE9fRElSRUNUT1JZKTsKKysJcmV0dXJuIG9w ZW5hdChkcy0+ZmRzWzBdLCAiLiIsIGRpcmVjdG9yeV90cmF2ZXJzZV9mbGFncygpKTsKKyB9Cisg Cisgc3RhdGljIGludCBkc193YWxrX3BhdGgoc3RydWN0IGRpcnN0YWNrICpkcywgY2hhciAqcGF0 aCwgaW50ICpob3BzKTsKK0BAIC0yOTAyLDcgKzI5MjUsNyBAQCBzdGF0aWMgaW50IGRzX2Rlc2Nl bmQoc3RydWN0IGRpcnN0YWNrICpkcywgY29uc3QgY2hhciAqcGFydCwgaW50ICpob3BzKQorIAkJ cmV0dXJuIDA7CisgCX0KKyAKKy0JaW50IGZkID0gb3BlbmF0KGRzX2N1cihkcyksIHBhcnQsIE9f UkRPTkxZIHwgT19ESVJFQ1RPUlkgfCBPX05PRk9MTE9XKTsKKysJaW50IGZkID0gb3BlbmF0KGRz X2N1cihkcyksIHBhcnQsIGRpcmVjdG9yeV90cmF2ZXJzZV9mbGFncygpIHwgT19OT0ZPTExPVyk7 CisgCWlmIChmZCAhPSAtMSkgewkJCQkJLyogYSByZWFsIHN1YmRpcmVjdG9yeSAqLworIAkJaWYg KGRzX3B1c2goZHMsIGZkKSA8IDApCisgCQkJcmV0dXJuIC0xOworQEAgLTMwMjUsNyArMzA0OCw3 IEBAIHN0YXRpYyBpbnQgc2VjdXJlX3dhbGtfYXQoaW50IGFuY2hvcl9mZCwgY29uc3QgY2hhciAq YW5jaG9yX2Fic3BhdGgsCisgCQkJCWdvdG8gY2xlYW51cDsKKyAJCQlpZiAoaXNfbGFzdCkgewor IAkJCQlpZiAoZmxhZ3MgJiBPX0RJUkVDVE9SWSkKKy0JCQkJCXJldGZkID0gZHNfdGFrZSgmZHMp OworKwkJCQkJcmV0ZmQgPSBvcGVuYXQoZHNfY3VyKCZkcyksICIuIiwgZmxhZ3MgfCBPX05PRk9M TE9XLCBtb2RlKTsKKyAJCQkJZWxzZQorIAkJCQkJZXJybm8gPSBFSVNESVI7CisgCQkJCWdvdG8g Y2xlYW51cDsKK0BAIC0zMDQ1LDcgKzMwNjgsOCBAQCBzdGF0aWMgaW50IHNlY3VyZV93YWxrX2F0 KGludCBhbmNob3JfZmQsIGNvbnN0IGNoYXIgKmFuY2hvcl9hYnNwYXRoLAorIAkJCQkJZ290byBj bGVhbnVwOworIAkJCQl9CisgCQkJfQorLQkJCWludCBuZXh0X2ZkID0gb3BlbmF0KGRzX2N1cigm ZHMpLCBwYXJ0LCBPX1JET05MWSB8IE9fRElSRUNUT1JZIHwgT19OT0ZPTExPVyk7CisrCQkJaW50 IG5leHRfZmQgPSBvcGVuYXQoZHNfY3VyKCZkcyksIHBhcnQsCisrCQkJCQkgICAgIGRpcmVjdG9y eV90cmF2ZXJzZV9mbGFncygpIHwgT19OT0ZPTExPVyk7CisgCQkJaWYgKG5leHRfZmQgPT0gLTEg JiYgKGVycm5vID09IEVOT1RESVIgfHwgZXJybm8gPT0gRU5PRU5UKSkgeworIAkJCQlyZXRmZCA9 IG9wZW5hdChkc19jdXIoJmRzKSwgcGFydCwgZmxhZ3MgfCBPX05PRk9MTE9XLCBtb2RlKTsKKyAJ CQkJZ290byBjbGVhbnVwOworQEAgLTMwNTksNyArMzA4Myw3IEBAIHN0YXRpYyBpbnQgc2VjdXJl X3dhbGtfYXQoaW50IGFuY2hvcl9mZCwgY29uc3QgY2hhciAqYW5jaG9yX2Fic3BhdGgsCisgCisg CQkvKiBPX0RJUkVDVE9SWXxPX05PRk9MTE9XIGxlYWY6IHRoZSBjYWxsZXIncyBPX05PRk9MTE9X IGdvdmVybnMgdGhlIGxlYWYuICovCisgCQlpZiAoaXNfbGFzdCAmJiAoZmxhZ3MgJiBPX05PRk9M TE9XKSkgeworLQkJCXJldGZkID0gb3BlbmF0KGRzX2N1cigmZHMpLCBwYXJ0LCBPX1JET05MWSB8 IE9fRElSRUNUT1JZIHwgT19OT0ZPTExPVyk7CisrCQkJcmV0ZmQgPSBvcGVuYXQoZHNfY3VyKCZk cyksIHBhcnQsIGZsYWdzIHwgT19OT0ZPTExPVywgbW9kZSk7CisgCQkJZ290byBjbGVhbnVwOwor IAkJfQorIAorQEAgLTMwNzEsMTcgKzMwOTUsMTcgQEAgc3RhdGljIGludCBzZWN1cmVfd2Fsa19h dChpbnQgYW5jaG9yX2ZkLCBjb25zdCBjaGFyICphbmNob3JfYWJzcGF0aCwKKyAJCQlnb3RvIGNs ZWFudXA7CisgCQl9CisgCQlpZiAoaXNfbGFzdCkgeworLQkJCXJldGZkID0gZHNfdGFrZSgmZHMp OworKwkJCXJldGZkID0gb3BlbmF0KGRzX2N1cigmZHMpLCAiLiIsIGZsYWdzIHwgT19OT0ZPTExP VywgbW9kZSk7CisgCQkJZ290byBjbGVhbnVwOworIAkJfQorIAl9CisgCistCS8qIEVtcHR5IHJl bHBhdGg6IGhhbmQgYmFjayBhIHJlYWwgYW5jaG9yIGZvciBhbiBPX0RJUkVDVE9SWSBjYWxsZXIg KGRzX3Rha2UKKy0JICogZHVwcyB0aGUgYm9ycm93ZWQgYW5jaG9yKSwgZWxzZSBFSVNESVIuICBB biBBVF9GRENXRCBhbmNob3IgaXMgbm90IGEKKy0JICogcmVzb2x2YWJsZSB0YXJnZXQsIHNvIGl0 IGZhaWxzIHJhdGhlciB0aGFuIHNpbGVudGx5IHJldHVybmluZyB0aGUgY3dkLiAqLworKwkvKiBF bXB0eSByZWxwYXRoOiByZW9wZW4gdGhlIGFuY2hvciB3aXRoIHRoZSBjYWxsZXIncyByZXF1ZXN0 ZWQgZGlyZWN0b3J5CisrCSAqIGFjY2VzcywgZWxzZSBFSVNESVIuICBBbiBBVF9GRENXRCBhbmNo b3IgaXMgbm90IGEgcmVzb2x2YWJsZSB0YXJnZXQsIHNvIGl0CisrCSAqIGZhaWxzIHJhdGhlciB0 aGFuIHNpbGVudGx5IHJldHVybmluZyB0aGUgY3dkLiAqLworIAlpZiAoIXNhd19jb21wb25lbnQp IHsKKyAJCWlmICgoZmxhZ3MgJiBPX0RJUkVDVE9SWSkgJiYgYW5jaG9yX2ZkICE9IEFUX0ZEQ1dE KQorLQkJCXJldGZkID0gZHNfdGFrZSgmZHMpOworKwkJCXJldGZkID0gb3BlbmF0KGFuY2hvcl9m ZCwgIi4iLCBmbGFncyB8IE9fTk9GT0xMT1csIG1vZGUpOworIAkJZWxzZQorIAkJCWVycm5vID0g RUlTRElSOworIAl9CitAQCAtMzIzNCw2ICszMjU4LDE0IEBAIGludCBzZWN1cmVfcmVsYXRpdmVf b3Blbihjb25zdCBjaGFyICpiYXNlZGlyLCBjb25zdCBjaGFyICpyZWxwYXRoLCBpbnQgZmxhZ3Ms IG1vCisgI2VuZGlmIC8vIE9fTk9GT0xMT1csIE9fRElSRUNUT1JZCisgfQorIAorKy8qIFJlc29s dmUgYSBkaXJlY3RvcnkgZm9yIHRyYXZlcnNhbCBvciBhcyAqYXQoKS9mY2hkaXIoKSBhdXRob3Jp dHkuICBDYWxsZXJzCisrICogdGhhdCByZWFkIGRpcmVjdG9yeSBlbnRyaWVzIG9yIG5lZWQgYSBy ZWFkLWNhcGFibGUgZmQgbXVzdCBjb250aW51ZSB0byB1c2UKKysgKiBzZWN1cmVfcmVsYXRpdmVf b3BlbiguLi4sIE9fUkRPTkxZIHwgT19ESVJFQ1RPUlksIC4uLikuICovCisraW50IHNlY3VyZV9y ZWxhdGl2ZV9kaXJmZChjb25zdCBjaGFyICpiYXNlZGlyLCBjb25zdCBjaGFyICpyZWxwYXRoKQor K3sKKysJcmV0dXJuIHNlY3VyZV9yZWxhdGl2ZV9vcGVuKGJhc2VkaXIsIHJlbHBhdGgsIGRpcmVj dG9yeV90cmF2ZXJzZV9mbGFncygpLCAwKTsKKyt9CisrCisgLyogQ29tbW9uIGZkLWFuY2hvcmVk IHJlc29sdmVyLiAgQSBjYWxsZXIgbWF5IGV4cGxpY2l0bHkgYWxsb3cgbGl0ZXJhbCAiLi4iCisg ICogY29tcG9uZW50cyB3aGVuIHRoZSBmZCBpdHNlbGYgaXMgdGhlIGNvbmZpbmVtZW50IGJvdW5k YXJ5OiBzZWN1cmVfd2Fsa19hdCgpCisgICogcmVzb2x2ZXMgZWFjaCBvbmUgYnkgcG9wcGluZyBp dHMgaGVsZC1kaXJmZCBzdGFjayBhbmQgcmVmdXNlcyBhIHBvcCBhYm92ZSB0aGUKK0BAIC0zMjg4 LDYgKzMzMjAsMTIgQEAgaW50IHNlY3VyZV9yZWxhdGl2ZV9vcGVuX2F0X2JlbmVhdGgoaW50IGFu Y2hvcl9mZCwgY29uc3QgY2hhciAqcmVscGF0aCwKKyAJcmV0dXJuIHNlY3VyZV9yZWxhdGl2ZV9v cGVuX2F0X2ludGVybmFsKGFuY2hvcl9mZCwgcmVscGF0aCwgZmxhZ3MsIG1vZGUsIDEpOworIH0K KyAKKytpbnQgc2VjdXJlX3JlbGF0aXZlX2RpcmZkX2F0X2JlbmVhdGgoaW50IGFuY2hvcl9mZCwg Y29uc3QgY2hhciAqcmVscGF0aCkKKyt7CisrCXJldHVybiBzZWN1cmVfcmVsYXRpdmVfb3Blbl9h dF9pbnRlcm5hbChhbmNob3JfZmQsIHJlbHBhdGgsCisrCQkJCQkJZGlyZWN0b3J5X3RyYXZlcnNl X2ZsYWdzKCksIDAsIDEpOworK30KKysKKyAjaWYgZGVmaW5lZCBPX05PRk9MTE9XICYmIGRlZmlu ZWQgT19ESVJFQ1RPUlkgJiYgZGVmaW5lZCBBVF9GRENXRAorIC8qIEZpbGwgYnVmIHdpdGggbGVu IHJhbmRvbSBieXRlcy4gIFByZWZlcnMgL2Rldi91cmFuZG9tIGZvciBjcnlwdG9ncmFwaGljCisg ICogcXVhbGl0eTsgZmFsbHMgYmFjayB0byByYW5kKCkgaWYgL2Rldi91cmFuZG9tIGNhbm5vdCBi ZSBvcGVuZWQgb3IgcmVhZAorQEAgLTM0MjQsOCArMzQ2Miw4IEBAIGludCBzZWN1cmVfbWtzdGVt cChjaGFyICp0ZW1wbGF0ZSwgbW9kZV90IHBlcm1zLCBpbnQgb3BlcmF0b3JfcGF0aCkKKyAJCQlk aXIgPSBkaXJidWY7CisgCQl9CisgCQlkaXJmZCA9IG9wZXJhdG9yX3BhdGgKKy0JCSAgICAgID8g b3Blbl9ub19hdHRhY2tlcl9zeW1saW5rcyhkaXIsIE9fUkRPTkxZIHwgT19ESVJFQ1RPUlksIDAp CistCQkgICAgICA6IHNlY3VyZV9yZWxhdGl2ZV9vcGVuKGRpciwgIi4iLCBPX1JET05MWSB8IE9f RElSRUNUT1JZLCAwKTsKKysJCSAgICAgID8gb3Blbl9ub19hdHRhY2tlcl9zeW1saW5rc19kaXJm ZChkaXIpCisrCQkgICAgICA6IHNlY3VyZV9yZWxhdGl2ZV9kaXJmZChkaXIsICIuIik7CisgCQlp ZiAoZGlyZmQgPCAwKQorIAkJCXJldHVybiAtMTsKKyAJfQorQEAgLTM0OTQsMTQgKzM1MzIsMTQg QEAgaW50IG9wZW5fZGlyX3NlY3VyZShjb25zdCBjaGFyICpkaXJuYW1lKQorIAorIAlpZiAoIWRp cm5hbWUgfHwgISpkaXJuYW1lKSB7CisgCQkvKiBUaGUgdHJhbnNmZXIgcm9vdCBpdHNlbGYgKGZp bGUtPmRpcm5hbWUgPT0gTlVMTCk6IHRoZSBjd2QuICovCistCQlkZmQgPSBvcGVuYXQoQVRfRkRD V0QsICIuIiwgT19SRE9OTFkgfCBPX0RJUkVDVE9SWSk7CisrCQlkZmQgPSBvcGVuYXQoQVRfRkRD V0QsICIuIiwgZGlyZWN0b3J5X3RyYXZlcnNlX2ZsYWdzKCkpOworIAl9IGVsc2UgaWYgKGRpcm5h bWVbMF0gPT0gJy8nKSB7CisgCQkvKiBBbiBhYnNvbHV0ZSBkaXJuYW1lIGlzIG5vdCBleHBlY3Rl ZCBmb3IgYW4gaW4tdHJhbnNmZXIgZW50cnk7CisgCQkgKiBsZWF2ZSBpdCB0byB0aGUgbGVnYWN5 IHBhdGguICovCisgCQllcnJubyA9IDA7CisgCQlyZXR1cm4gLTE7CisgCX0gZWxzZSB7CistCQlk ZmQgPSBzZWN1cmVfcmVsYXRpdmVfb3BlbihOVUxMLCBkaXJuYW1lLCBPX1JET05MWSB8IE9fRElS RUNUT1JZLCAwKTsKKysJCWRmZCA9IHNlY3VyZV9yZWxhdGl2ZV9kaXJmZChOVUxMLCBkaXJuYW1l KTsKKyAJfQorIAorIAlpZiAoZGZkID49IDApIHsKK2RpZmYgLS1naXQgYS90ZXN0c3VpdGUvc2tp cGxpc3QvY3lnd2luLnR4dCBiL3Rlc3RzdWl0ZS9za2lwbGlzdC9jeWd3aW4udHh0CitpbmRleCBi YTQ5OWNjLi4zNDdiNjliIDEwMDY0NAorLS0tIGEvdGVzdHN1aXRlL3NraXBsaXN0L2N5Z3dpbi50 eHQKKysrKyBiL3Rlc3RzdWl0ZS9za2lwbGlzdC9jeWd3aW4udHh0CitAQCAtNTYsNiArNTYsNyBA QCByZW5hbWUtbWl4ZWQtcGFyZW50LXRyYW5zZmVyCisgcnJzeW5jLXNlbmRlci1sZWFmLWZsaXAK KyBycnN5bmMtc2VuZGVyLXBhcmVudC1waW4KKyBycnN5bmMtc3ltbGluaworK3NlYXJjaC1vbmx5 LWRlc3RpbmF0aW9uCisgc2VuZGVyLXJlbW92ZS1zb3VyY2Utcm9vdC1hbmNob3IKKyBzaW1kLWNo ZWNrc3VtCisgc291cmNlLWNoYW5nZS1zaXplLWNvbnRpbnVlcworZGlmZiAtLWdpdCBhL3Rlc3Rz dWl0ZS9za2lwbGlzdC9tYWNvcy50eHQgYi90ZXN0c3VpdGUvc2tpcGxpc3QvbWFjb3MudHh0Citp bmRleCAzZTc2NTNjLi5jZTQxNWJlIDEwMDY0NAorLS0tIGEvdGVzdHN1aXRlL3NraXBsaXN0L21h Y29zLnR4dAorKysrIGIvdGVzdHN1aXRlL3NraXBsaXN0L21hY29zLnR4dAorQEAgLTI2LDYgKzI2 LDcgQEAgcmVhZG9ubHktcGFydGlhbC1hYm9ydC1tb2RlLXJlZ3Jlc3Npb24gICMKKyBycnN5bmMt c2VuZGVyLWxlYWYtZmxpcAorIHJyc3luYy1zZW5kZXItcGFyZW50LXBpbgorIHJyc3luYy1zeW1s aW5rCisrc2VhcmNoLW9ubHktZGVzdGluYXRpb24KKyBzZW5kZXItcmVtb3ZlLXNvdXJjZS1yb290 LWFuY2hvcgorIHNpbWQtY2hlY2tzdW0KKyBzb3VyY2UtY2hhbmdlLXNpemUtY29udGludWVzCitk aWZmIC0tZ2l0IGEvdXRpbDEuYyBiL3V0aWwxLmMKK2luZGV4IDg3ZmYyMjUuLjk1NWQyMDQgMTAw NjQ0CistLS0gYS91dGlsMS5jCisrKysgYi91dGlsMS5jCitAQCAtMTI1Miw3ICsxMjUyLDcgQEAg aW50IGNoYW5nZV9kaXIoY29uc3QgY2hhciAqZGlyLCBpbnQgc2V0X3BhdGhfb25seSkKKyAJCQkg KiBub24tZGFlbW9uIHJlY2VpdmVyIGNhbiBvcHQgYmFjayBpbnRvIHRoZSBsZWdhY3kgcGxhaW4g Y2hkaXIgd2l0aAorIAkJCSAqIC0taW5zZWN1cmUtbGlua3MuICovCisgCQkJaWYgKGFtX2RhZW1v biAmJiAhYW1fY2hyb290ZWQpIHsKKy0JCQkJaW50IGRmZCA9IG9wZW5fbm9fYXR0YWNrZXJfc3lt bGlua3MoZGlyLCBPX1JET05MWSB8IE9fRElSRUNUT1JZLCAwKTsKKysJCQkJaW50IGRmZCA9IG9w ZW5fbm9fYXR0YWNrZXJfc3ltbGlua3NfZGlyZmQoZGlyKTsKKyAJCQkJaWYgKGRmZCA8IDApCisg CQkJCQlyZXR1cm4gMDsKKyAJCQkJaWYgKGZjaGRpcihkZmQpICE9IDApIHsKK0BAIC0xMjgzLDcg KzEyODMsNyBAQCBpbnQgY2hhbmdlX2Rpcihjb25zdCBjaGFyICpkaXIsIGludCBzZXRfcGF0aF9v bmx5KQorIAkJCQkgKiBhbm90aGVyIHVpZC4gIEEgcmVhbCBkaXIgaXMgb3BlbmVkIGRpcmVjdGx5 LiAgVGhpcyBjbG9zZXMgdGhlCisgCQkJCSAqIGRlc3RpbmF0aW9uIGNoZGlyIFRPQ1RPVTsgLS1p bnNlY3VyZS1saW5rcyBrZWVwcyB0aGUgcGxhaW4KKyAJCQkJICogY2hkaXIgZm9yIGFuIG9wZXJh dG9yIHdob3NlIGRlc3QgaXMgYSBmb3JlaWduLW93bmVkIHN5bWxpbmsuICovCistCQkJCWRmZCA9 IG9wZW5fbm9fYXR0YWNrZXJfc3ltbGlua3MobmYsIE9fUkRPTkxZIHwgT19ESVJFQ1RPUlksIDAp OworKwkJCQlkZmQgPSBvcGVuX25vX2F0dGFja2VyX3N5bWxpbmtzX2RpcmZkKG5mKTsKKyAJCQkJ aWYgKGRmZCA8IDApCisgCQkJCQlyZXR1cm4gMDsKKyAJCQkJaWYgKGZjaGRpcihkZmQpICE9IDAp IHsKK0BAIC0xMzQ0LDggKzEzNDQsNyBAQCBpbnQgY2hhbmdlX2Rpcihjb25zdCBjaGFyICpkaXIs IGludCBzZXRfcGF0aF9vbmx5KQorIAkJCQkJcHJlZml4W3NhdmVfZGlyX2xlbl0gPSAnXDAnOwor IAkJCQkJYmFzZWRpciA9IHByZWZpeDsKKyAJCQkJfQorLQkJCQlkZmQgPSBzZWN1cmVfcmVsYXRp dmVfb3BlbihiYXNlZGlyLCBkaXIsCistCQkJCQlPX1JET05MWSB8IE9fRElSRUNUT1JZLCAwKTsK KysJCQkJZGZkID0gc2VjdXJlX3JlbGF0aXZlX2RpcmZkKGJhc2VkaXIsIGRpcik7CisgCQkJCWlm IChkZmQgPCAwKSB7CisgCQkJCQljaGRpcl9mYWlsZWQgPSAxOworIAkJCQl9IGVsc2UgeworQEAg LTEzNjMsOCArMTM2Miw3IEBAIGludCBjaGFuZ2VfZGlyKGNvbnN0IGNoYXIgKmRpciwgaW50IHNl dF9wYXRoX29ubHkpCisgCQkJCSAqIHN5bWxpbmsgbm90IG93bmVkIGJ5IHVpZCAwIG9yIG91ciBl dWlkLCBjbG9zaW5nIHRoZQorIAkJCQkgKiByZWxhdGl2ZS1kZXN0IGNoZGlyIFRPQ1RPVSB3aGls ZSBzdGlsbCBmb2xsb3dpbmcgdGhlIG9wZXJhdG9yJ3MKKyAJCQkJICogb3duIHN5bWxpbmtzLiAg LS1pbnNlY3VyZS1saW5rcyBrZWVwcyB0aGUgcGxhaW4gY2hkaXIuICovCistCQkJCWludCBkZmQg PSBvcGVuX25vX2F0dGFja2VyX3N5bWxpbmtzKGN1cnJfZGlyLAorLQkJCQkJT19SRE9OTFkgfCBP X0RJUkVDVE9SWSwgMCk7CisrCQkJCWludCBkZmQgPSBvcGVuX25vX2F0dGFja2VyX3N5bWxpbmtz X2RpcmZkKGN1cnJfZGlyKTsKKyAJCQkJaWYgKGRmZCA8IDApCisgCQkJCQljaGRpcl9mYWlsZWQg PSAxOworIAkJCQllbHNlIHsKK2RpZmYgLS1naXQgYS90ZXN0c3VpdGUvc2tpcGxpc3QvY3lnd2lu LnR4dCBiL3Rlc3RzdWl0ZS9za2lwbGlzdC9jeWd3aW4udHh0CitpbmRleCAzNDdiNjliLi41YTVm YzA2IDEwMDY0NAorLS0tIGEvdGVzdHN1aXRlL3NraXBsaXN0L2N5Z3dpbi50eHQKKysrKyBiL3Rl c3RzdWl0ZS9za2lwbGlzdC9jeWd3aW4udHh0CitAQCAtNTcsNiArNTcsNyBAQCBycnN5bmMtc2Vu ZGVyLWxlYWYtZmxpcAorIHJyc3luYy1zZW5kZXItcGFyZW50LXBpbgorIHJyc3luYy1zeW1saW5r Cisgc2VhcmNoLW9ubHktZGVzdGluYXRpb24KKytzZWFyY2gtb25seS1oZWxkLWRpcmZkCisgc2Vu ZGVyLXJlbW92ZS1zb3VyY2Utcm9vdC1hbmNob3IKKyBzaW1kLWNoZWNrc3VtCisgc291cmNlLWNo YW5nZS1zaXplLWNvbnRpbnVlcworZGlmZiAtLWdpdCBhL3Rlc3RzdWl0ZS9za2lwbGlzdC9tYWNv cy50eHQgYi90ZXN0c3VpdGUvc2tpcGxpc3QvbWFjb3MudHh0CitpbmRleCBjZTQxNWJlLi5iMTcy NWM0IDEwMDY0NAorLS0tIGEvdGVzdHN1aXRlL3NraXBsaXN0L21hY29zLnR4dAorKysrIGIvdGVz dHN1aXRlL3NraXBsaXN0L21hY29zLnR4dAorQEAgLTI3LDYgKzI3LDcgQEAgcnJzeW5jLXNlbmRl ci1sZWFmLWZsaXAKKyBycnN5bmMtc2VuZGVyLXBhcmVudC1waW4KKyBycnN5bmMtc3ltbGluawor IHNlYXJjaC1vbmx5LWRlc3RpbmF0aW9uCisrc2VhcmNoLW9ubHktaGVsZC1kaXJmZAorIHNlbmRl ci1yZW1vdmUtc291cmNlLXJvb3QtYW5jaG9yCisgc2ltZC1jaGVja3N1bQorIHNvdXJjZS1jaGFu Z2Utc2l6ZS1jb250aW51ZXMKK2RpZmYgLS1naXQgYS90ZXN0c3VpdGUvc2VhcmNoLW9ubHktZGVz dGluYXRpb25fdGVzdC5weSBiL3Rlc3RzdWl0ZS9zZWFyY2gtb25seS1kZXN0aW5hdGlvbl90ZXN0 LnB5CituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwLi40NjEwOGUyZjUKKy0t LSAvZGV2L251bGwKKysrKyBiL3Rlc3RzdWl0ZS9zZWFyY2gtb25seS1kZXN0aW5hdGlvbl90ZXN0 LnB5CitAQCAtMCwwICsxLDc3IEBACisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworKyIiIlRoZSBy ZWNlaXZlciBtdXN0IHRyYXZlcnNlIGEgc2VhcmNoYWJsZSBidXQgdW5yZWFkYWJsZSBkZXN0aW5h dGlvbiBwYXJlbnQuCisrCisrQW5kcm9pZCBleHBvc2VzIC9zZGNhcmQgdGhyb3VnaCBzdWNoIGEg cGF0aCwgc28gdGhlIHJhY2Utc2FmZSBkZXN0aW5hdGlvbiB3YWxrCisrbXVzdCB1c2UgZGlyZWN0 b3J5IGRlc2NyaXB0b3JzIHRoYXQgcmVxdWlyZSBzZWFyY2ggcGVybWlzc2lvbiBvbmx5LgorKyIi IgorKworK2ltcG9ydCBvcworK2ltcG9ydCBzaHV0aWwKKytpbXBvcnQgc3VicHJvY2VzcworK2lt cG9ydCBzeXMKKytpbXBvcnQgdGVtcGZpbGUKKytmcm9tIHBhdGhsaWIgaW1wb3J0IFBhdGgKKysK Kytmcm9tIHJzeW5jZm5zIGltcG9ydCBTQ1JBVENIRElSLCBybXRyZWUsIHJzeW5jX2FyZ3YsIHRl c3RfZmFpbCwgdGVzdF9za2lwcGVkCisrCisraWYgbm90IHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRo KCdsaW51eCcpOgorKyAgICB0ZXN0X3NraXBwZWQoJ3NlYXJjaC1vbmx5LWRlc3RpbmF0aW9uIGlz IExpbnV4LXNwZWNpZmljJykKKysKKytsYXVuY2hlciA9IFtdCisraWYgb3MuZ2V0ZXVpZCgpID09 IDA6CisrICAgIHNldHByaXYgPSBzaHV0aWwud2hpY2goJ3NldHByaXYnKQorKyAgICBpZiBzZXRw cml2IGlzIE5vbmU6CisrICAgICAgICB0ZXN0X3NraXBwZWQoJ3NldHByaXYgaXMgdW5hdmFpbGFi bGUgZm9yIHRoZSByb290LXJ1biB0ZXN0c3VpdGUnKQorKyAgICBsYXVuY2hlciA9IFtzZXRwcml2 LCAnLS1yZXVpZD02NTUzNCcsICctLXJlZ2lkPTY1NTM0JywgJy0tY2xlYXItZ3JvdXBzJ10KKysK KytleHRlcm5hbF9iYXNlID0gb3MuZ2V0ZXVpZCgpID09IDAKKytpZiBleHRlcm5hbF9iYXNlOgor KyAgICBiYXNlID0gUGF0aCh0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0ncnN5bmMtc2VhcmNoLW9u bHktJykpCisrICAgIGJhc2UuY2htb2QoMG83NTUpCisrZWxzZToKKysgICAgYmFzZSA9IFNDUkFU Q0hESVIgLyAnc2VhcmNoLW9ubHktZGVzdGluYXRpb24nCisrc3JjID0gYmFzZSAvICdzcmMnCisr cGFyZW50ID0gYmFzZSAvICdzZWFyY2gtb25seScKKytkZXN0ID0gcGFyZW50IC8gJ2Rlc3QnCisr cm10cmVlKGJhc2UpCisrc3JjLm1rZGlyKHBhcmVudHM9VHJ1ZSkKKytkZXN0Lm1rZGlyKHBhcmVu dHM9VHJ1ZSkKKysoc3JjIC8gJ3Byb2JlJykud3JpdGVfdGV4dCgnc2VhcmNoLW9ubHkgZGVzdGlu YXRpb25cbicpCisrCisraWYgb3MuZ2V0ZXVpZCgpID09IDA6CisrICAgIGZvciBwYXRoIGluIChz cmMsIHNyYyAvICdwcm9iZScsIGRlc3QpOgorKyAgICAgICAgb3MuY2hvd24ocGF0aCwgNjU1MzQs IDY1NTM0KQorKworK3RyeToKKysgICAgcGFyZW50LmNobW9kKDBvMTExKQorKyAgICB0cnk6Cisr ICAgICAgICBwcm9iZSA9IHN1YnByb2Nlc3MucnVuKAorKyAgICAgICAgICAgIGxhdW5jaGVyICsg Wyd0ZXN0JywgJy1yJywgc3RyKHBhcmVudCldLAorKyAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9j ZXNzLkRFVk5VTEwsCisrICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuREVWTlVMTCwKKysg ICAgICAgICkKKysgICAgICAgIGlmIHByb2JlLnJldHVybmNvZGUgPT0gMDoKKysgICAgICAgICAg ICB0ZXN0X3NraXBwZWQoJ2ZpbGVzeXN0ZW0gZG9lcyBub3QgZW5mb3JjZSB0aGUgc2VhcmNoLW9u bHkgdGVzdCBtb2RlJykKKysgICAgICAgIGlmIHByb2JlLnJldHVybmNvZGUgIT0gMToKKysgICAg ICAgICAgICB0ZXN0X2ZhaWwoZidzZWFyY2gtb25seSBwZXJtaXNzaW9uIHByb2JlIGZhaWxlZCB3 aXRoIGV4aXQge3Byb2JlLnJldHVybmNvZGV9JykKKysKKysgICAgICAgIHByb2MgPSBzdWJwcm9j ZXNzLnJ1bigKKysgICAgICAgICAgICBsYXVuY2hlciArIHJzeW5jX2FyZ3YoJy1hJywgZid7c3Jj fS8nLCBmJ3tkZXN0fS8nKSwKKysgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAor KyAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUsCisrICAgICAgICAgICAgdGV4dD1U cnVlLAorKyAgICAgICAgKQorKyAgICBmaW5hbGx5OgorKyAgICAgICAgcGFyZW50LmNobW9kKDBv NzU1KQorKyAgICBjb3BpZWQgPSAoZGVzdCAvICdwcm9iZScpLnJlYWRfdGV4dCgpIGlmIChkZXN0 IC8gJ3Byb2JlJykuaXNfZmlsZSgpIGVsc2UgTm9uZQorK2ZpbmFsbHk6CisrICAgIGlmIGV4dGVy bmFsX2Jhc2U6CisrICAgICAgICBybXRyZWUoYmFzZSkKKysKKytpZiBwcm9jLnJldHVybmNvZGUg IT0gMDoKKysgICAgdGVzdF9mYWlsKAorKyAgICAgICAgJ3JlY2VpdmVyIGNvdWxkIG5vdCBlbnRl ciBhIGRlc3RpbmF0aW9uIGJlbG93IGEgc2VhcmNoYWJsZSwgdW5yZWFkYWJsZSAnCisrICAgICAg ICBmJ3BhcmVudCAoZXhpdCB7cHJvYy5yZXR1cm5jb2RlfSk6IHtwcm9jLnN0ZGVyci5zdHJpcCgp fScKKysgICAgKQorK2lmIGNvcGllZCAhPSAnc2VhcmNoLW9ubHkgZGVzdGluYXRpb25cbic6Cisr ICAgIHRlc3RfZmFpbCgncmVjZWl2ZXIgZGlkIG5vdCBjb3B5IGludG8gdGhlIHNlYXJjaC1vbmx5 IGRlc3RpbmF0aW9uJykKK2RpZmYgLS1naXQgYS90ZXN0c3VpdGUvc2VhcmNoLW9ubHktaGVsZC1k aXJmZF90ZXN0LnB5IGIvdGVzdHN1aXRlL3NlYXJjaC1vbmx5LWhlbGQtZGlyZmRfdGVzdC5weQor bmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMC4uZTRkYTQ2ZmJmCistLS0gL2Rl di9udWxsCisrKysgYi90ZXN0c3VpdGUvc2VhcmNoLW9ubHktaGVsZC1kaXJmZF90ZXN0LnB5CitA QCAtMCwwICsxLDIxNSBAQAorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKysiIiJLbm93bi1uYW1l IG9wZXJhdGlvbnMgbXVzdCBub3QgcmVxdWlyZSBwZXJtaXNzaW9uIHRvIGxpc3QgcGFyZW50IGRp cnMuCisrCisrVGhlIGNvbmZpbmVkIHJlc29sdmVyIGhvbGRzIGRpcmVjdG9yeSBkZXNjcmlwdG9y cyB0byBwcmV2ZW50IHN5bWxpbmsgcmFjZXMuCisrT24gTGludXgsIHRob3NlIHRyYXZlcnNhbCBh bmQgKmF0KCkgYW5jaG9yIGRlc2NyaXB0b3JzIGNhbiB1c2UgT19QQVRIOiBvcGVuaW5nCisrYSBr bm93biBmaWxlIGJlbmVhdGggYSBzZWFyY2hhYmxlIGRpcmVjdG9yeSwgb3IgY3JlYXRpbmcgb25l IGJlbmVhdGggYQorK3dyaXRhYmxlL3NlYXJjaGFibGUgZGlyZWN0b3J5LCBkb2VzIG5vdCByZXF1 aXJlIGRpcmVjdG9yeSByZWFkIHBlcm1pc3Npb24uCisrIiIiCisrCisraW1wb3J0IG9zCisraW1w b3J0IHNodXRpbAorK2ltcG9ydCBzdWJwcm9jZXNzCisraW1wb3J0IHN5cworK2ltcG9ydCB0ZW1w ZmlsZQorK2Zyb20gcGF0aGxpYiBpbXBvcnQgUGF0aAorKworK2Zyb20gcnN5bmNmbnMgaW1wb3J0 ICgKKysgICAgU0NSQVRDSERJUiwgZm9yY2VkX3Byb3RvY29sLCBybXRyZWUsIHJzeW5jX2FyZ3Ys IHRlc3RfZmFpbCwgdGVzdF9za2lwcGVkLAorKykKKysKKytpZiBub3Qgc3lzLnBsYXRmb3JtLnN0 YXJ0c3dpdGgoJ2xpbnV4Jyk6CisrICAgIHRlc3Rfc2tpcHBlZCgnc2VhcmNoLW9ubHkgaGVsZC1k aXJmZCBjb3ZlcmFnZSBpcyBMaW51eC1zcGVjaWZpYycpCisrCisrbGF1bmNoZXIgPSBbXQorK2lm IG9zLmdldGV1aWQoKSA9PSAwOgorKyAgICBzZXRwcml2ID0gc2h1dGlsLndoaWNoKCdzZXRwcml2 JykKKysgICAgaWYgc2V0cHJpdiBpcyBOb25lOgorKyAgICAgICAgdGVzdF9za2lwcGVkKCdzZXRw cml2IGlzIHVuYXZhaWxhYmxlIGZvciB0aGUgcm9vdC1ydW4gdGVzdHN1aXRlJykKKysgICAgbGF1 bmNoZXIgPSBbc2V0cHJpdiwgJy0tcmV1aWQ9NjU1MzQnLCAnLS1yZWdpZD02NTUzNCcsICctLWNs ZWFyLWdyb3VwcyddCisrCisrZXh0ZXJuYWxfYmFzZSA9IG9zLmdldGV1aWQoKSA9PSAwCisrYmFz ZSA9ICgKKysgICAgUGF0aCh0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0ncnN5bmMtc2VhcmNoLW9u bHktaGVsZC1kaXJmZC0nKSkKKysgICAgaWYgZXh0ZXJuYWxfYmFzZQorKyAgICBlbHNlIFNDUkFU Q0hESVIgLyAnc2VhcmNoLW9ubHktaGVsZC1kaXJmZCcKKyspCisrcm10cmVlKGJhc2UpCisrCisr c3JjID0gYmFzZSAvICdzcmMnCisreG9ubHkgPSBzcmMgLyAneG9ubHknCisrcmVhZGFibGUgPSB4 b25seSAvICdyZWFkYWJsZScKKytuZXN0ZWRfc3JjID0gc3JjIC8gJ25lc3RlZCcKKytleGFjdF9k ZXN0ID0gYmFzZSAvICdleGFjdC1kZXN0JworK3RyZWVfZGVzdCA9IGJhc2UgLyAndHJlZS1kZXN0 JworK3VucmVhZGFibGVfZGVzdCA9IGJhc2UgLyAndW5yZWFkYWJsZS1kZXN0JworK3dyaXRlX29u bHlfZGVzdCA9IGJhc2UgLyAnd3JpdGUtb25seS1kZXN0JworK25lc3RlZF9kZXN0ID0gYmFzZSAv ICduZXN0ZWQtZGVzdCcKKytuZXN0ZWRfcGFyZW50ID0gbmVzdGVkX2Rlc3QgLyAnbmVzdGVkJwor K2ZvciBwYXRoIGluICgKKysgICAgcmVhZGFibGUsCisrICAgIG5lc3RlZF9zcmMsCisrICAgIGV4 YWN0X2Rlc3QsCisrICAgIHRyZWVfZGVzdCwKKysgICAgdW5yZWFkYWJsZV9kZXN0LAorKyAgICB3 cml0ZV9vbmx5X2Rlc3QsCisrICAgIG5lc3RlZF9wYXJlbnQsCisrKToKKysgICAgcGF0aC5ta2Rp cihwYXJlbnRzPVRydWUsIGV4aXN0X29rPVRydWUpCisrCisrKHhvbmx5IC8gJ2V4YWN0Jykud3Jp dGVfdGV4dCgna25vd24gZmlsZSBiZW5lYXRoIHNlYXJjaC1vbmx5IHBhcmVudFxuJykKKysocmVh ZGFibGUgLyAnbmVzdGVkJykud3JpdGVfdGV4dCgnZW51bWVyYXRlZCBiZWxvdyBzZWFyY2gtb25s eSBhbmNlc3RvclxuJykKKytpbmNvbWluZyA9IHNyYyAvICdpbmNvbWluZycKKytpbmNvbWluZy53 cml0ZV90ZXh0KCdjcmVhdGVkIGJlbmVhdGggd3JpdGUtc2VhcmNoLW9ubHkgZGVzdGluYXRpb25c bicpCisrKG5lc3RlZF9zcmMgLyAna25vd24nKS53cml0ZV90ZXh0KAorKyAgICAnY3JlYXRlZCBi ZW5lYXRoIG5lc3RlZCB3cml0ZS1zZWFyY2gtb25seSBwYXJlbnRcbicKKyspCisrCisraWYgb3Mu Z2V0ZXVpZCgpID09IDA6CisrICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKGJh c2UpOgorKyAgICAgICAgb3MuY2hvd24ocm9vdCwgNjU1MzQsIDY1NTM0KQorKyAgICAgICAgZm9y IG5hbWUgaW4gZGlycyArIGZpbGVzOgorKyAgICAgICAgICAgIG9zLmNob3duKFBhdGgocm9vdCkg LyBuYW1lLCA2NTUzNCwgNjU1MzQpCisrCisrCisrZGVmIHBlcm1pc3Npb25fcHJvYmUocGF0aCwg ZmxhZywgZXhwZWN0ZWQsIGxhYmVsKToKKysgICAgcHJvYyA9IHN1YnByb2Nlc3MucnVuKAorKyAg ICAgICAgbGF1bmNoZXIgKyBbJ3Rlc3QnLCBmbGFnLCBzdHIocGF0aCldLAorKyAgICAgICAgc3Rk b3V0PXN1YnByb2Nlc3MuREVWTlVMTCwKKysgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLkRFVk5V TEwsCisrICAgICkKKysgICAgaWYgcHJvYy5yZXR1cm5jb2RlICE9IGV4cGVjdGVkOgorKyAgICAg ICAgdGVzdF9za2lwcGVkKAorKyAgICAgICAgICAgIGYnZmlsZXN5c3RlbSBkb2VzIG5vdCBlbmZv cmNlIHtsYWJlbH06IHRlc3Qge2ZsYWd9IHJldHVybmVkICcKKysgICAgICAgICAgICBmJ3twcm9j LnJldHVybmNvZGV9LCBleHBlY3RlZCB7ZXhwZWN0ZWR9JworKyAgICAgICAgKQorKworKworK2Zh aWx1cmVzID0gW10KKyt0cnk6CisrICAgIHhvbmx5LmNobW9kKDBvMTExKQorKyAgICB3cml0ZV9v bmx5X2Rlc3QuY2htb2QoMG8zMzMpCisrICAgIG5lc3RlZF9wYXJlbnQuY2htb2QoMG8zMzMpCisr CisrICAgIHBlcm1pc3Npb25fcHJvYmUoeG9ubHksICctcicsIDEsICdzZWFyY2gtb25seSBtb2Rl JykKKysgICAgcGVybWlzc2lvbl9wcm9iZSh4b25seSwgJy14JywgMCwgJ3NlYXJjaC1vbmx5IG1v ZGUnKQorKyAgICBwZXJtaXNzaW9uX3Byb2JlKHdyaXRlX29ubHlfZGVzdCwgJy1yJywgMSwgJ3dy aXRlLXNlYXJjaC1vbmx5IG1vZGUnKQorKyAgICBwZXJtaXNzaW9uX3Byb2JlKHdyaXRlX29ubHlf ZGVzdCwgJy13JywgMCwgJ3dyaXRlLXNlYXJjaC1vbmx5IG1vZGUnKQorKyAgICBwZXJtaXNzaW9u X3Byb2JlKHdyaXRlX29ubHlfZGVzdCwgJy14JywgMCwgJ3dyaXRlLXNlYXJjaC1vbmx5IG1vZGUn KQorKyAgICBwZXJtaXNzaW9uX3Byb2JlKG5lc3RlZF9wYXJlbnQsICctcicsIDEsICduZXN0ZWQg d3JpdGUtc2VhcmNoLW9ubHkgbW9kZScpCisrICAgIHBlcm1pc3Npb25fcHJvYmUobmVzdGVkX3Bh cmVudCwgJy13JywgMCwgJ25lc3RlZCB3cml0ZS1zZWFyY2gtb25seSBtb2RlJykKKysgICAgcGVy bWlzc2lvbl9wcm9iZShuZXN0ZWRfcGFyZW50LCAnLXgnLCAwLCAnbmVzdGVkIHdyaXRlLXNlYXJj aC1vbmx5IG1vZGUnKQorKworKyAgICAjIEtlZXAgcmVjZWl2ZWQgaW1wbGllZCBkaXJzIHVzYWJs ZSBvbiBzeXN0ZW1zIHdpdGhvdXQgYSBzYWZlIGZjaG1vZGF0Mi4KKysgICAgIyBUaGUgc291cmNl IHJlbWFpbnMgbW9kZSAwMTExLCBzbyBzZW5kZXIgdHJhdmVyc2FsIGNvdmVyYWdlIGlzIHVuY2hh bmdlZC4KKysgICAgZXhhY3QgPSBzdWJwcm9jZXNzLnJ1bigKKysgICAgICAgIGxhdW5jaGVyICsg cnN5bmNfYXJndigKKysgICAgICAgICAgICAnLWFSJywgJy0tY2htb2Q9RHUrcncnLCAneG9ubHkv ZXhhY3QnLCBmJ3tleGFjdF9kZXN0fS8nLAorKyAgICAgICAgKSwKKysgICAgICAgIGN3ZD1zcmMs CisrICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAorKyAgICAgICAgc3RkZXJyPXN1YnBy b2Nlc3MuUElQRSwKKysgICAgICAgIHRleHQ9VHJ1ZSwKKysgICAgKQorKyAgICBleGFjdF9wYXRo ID0gZXhhY3RfZGVzdCAvICd4b25seScgLyAnZXhhY3QnCisrICAgIGV4YWN0X2NvbnRlbnQgPSBl eGFjdF9wYXRoLnJlYWRfdGV4dCgpIGlmIGV4YWN0X3BhdGguaXNfZmlsZSgpIGVsc2UgTm9uZQor KyAgICBpZiBleGFjdC5yZXR1cm5jb2RlICE9IDAgb3IgZXhhY3RfY29udGVudCAhPSAoCisrICAg ICAgICAna25vd24gZmlsZSBiZW5lYXRoIHNlYXJjaC1vbmx5IHBhcmVudFxuJworKyAgICApOgor KyAgICAgICAgZmFpbHVyZXMuYXBwZW5kKAorKyAgICAgICAgICAgICdleGFjdCAtUiBzb3VyY2Ug YmVuZWF0aCBtb2RlIDAxMTEgZmFpbGVkOiAnCisrICAgICAgICAgICAgZidyYz17ZXhhY3QucmV0 dXJuY29kZX0sIHN0ZGVycj17ZXhhY3Quc3RkZXJyLnN0cmlwKCkhcn0sICcKKysgICAgICAgICAg ICBmJ2NvbnRlbnQ9e2V4YWN0X2NvbnRlbnQhcn0nCisrICAgICAgICApCisrCisrICAgIHRyZWUg PSBzdWJwcm9jZXNzLnJ1bigKKysgICAgICAgIGxhdW5jaGVyICsgcnN5bmNfYXJndigKKysgICAg ICAgICAgICAnLWFSJywgJy0tY2htb2Q9RHUrcncnLCAneG9ubHkvcmVhZGFibGUvJywgZid7dHJl ZV9kZXN0fS8nLAorKyAgICAgICAgKSwKKysgICAgICAgIGN3ZD1zcmMsCisrICAgICAgICBzdGRv dXQ9c3VicHJvY2Vzcy5QSVBFLAorKyAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSwKKysg ICAgICAgIHRleHQ9VHJ1ZSwKKysgICAgKQorKyAgICB0cmVlX3BhdGggPSB0cmVlX2Rlc3QgLyAn eG9ubHknIC8gJ3JlYWRhYmxlJyAvICduZXN0ZWQnCisrICAgIHRyZWVfY29udGVudCA9IHRyZWVf cGF0aC5yZWFkX3RleHQoKSBpZiB0cmVlX3BhdGguaXNfZmlsZSgpIGVsc2UgTm9uZQorKyAgICBp ZiB0cmVlLnJldHVybmNvZGUgIT0gMCBvciB0cmVlX2NvbnRlbnQgIT0gKAorKyAgICAgICAgJ2Vu dW1lcmF0ZWQgYmVsb3cgc2VhcmNoLW9ubHkgYW5jZXN0b3JcbicKKysgICAgKToKKysgICAgICAg IGZhaWx1cmVzLmFwcGVuZCgKKysgICAgICAgICAgICAncmVhZGFibGUgZGlyZWN0b3J5IGJlbmVh dGggbW9kZSAwMTExIGFuY2VzdG9yIGZhaWxlZDogJworKyAgICAgICAgICAgIGYncmM9e3RyZWUu cmV0dXJuY29kZX0sIHN0ZGVycj17dHJlZS5zdGRlcnIuc3RyaXAoKSFyfSwgJworKyAgICAgICAg ICAgIGYnY29udGVudD17dHJlZV9jb250ZW50IXJ9JworKyAgICAgICAgKQorKworKyAgICB1bnJl YWRhYmxlID0gc3VicHJvY2Vzcy5ydW4oCisrICAgICAgICBsYXVuY2hlciArIHJzeW5jX2FyZ3Yo CisrICAgICAgICAgICAgJy1hJywgJ3hvbmx5LycsIGYne3VucmVhZGFibGVfZGVzdH0vJywKKysg ICAgICAgICksCisrICAgICAgICBjd2Q9c3JjLAorKyAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3Mu UElQRSwKKysgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUsCisrICAgICAgICB0ZXh0PVRy dWUsCisrICAgICkKKysgICAgaWYgdW5yZWFkYWJsZS5yZXR1cm5jb2RlID09IDA6CisrICAgICAg ICBmYWlsdXJlcy5hcHBlbmQoCisrICAgICAgICAgICAgJ21vZGUgMDExMSBzb3VyY2UgZGlyZWN0 b3J5IHdhcyBlbnVtZXJhYmxlIHdpdGhvdXQgcmVhZCBwZXJtaXNzaW9uJworKyAgICAgICAgKQor KworKyAgICByZWNlaXZlciA9IHN1YnByb2Nlc3MucnVuKAorKyAgICAgICAgbGF1bmNoZXIgKyBy c3luY19hcmd2KAorKyAgICAgICAgICAgICctdCcsIHN0cihpbmNvbWluZyksIGYne3dyaXRlX29u bHlfZGVzdH0vJywKKysgICAgICAgICksCisrICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBF LAorKyAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSwKKysgICAgICAgIHRleHQ9VHJ1ZSwK KysgICAgKQorKyAgICByZWNlaXZlZCA9IHdyaXRlX29ubHlfZGVzdCAvICdpbmNvbWluZycKKysg ICAgcmVjZWl2ZWRfY29udGVudCA9IHJlY2VpdmVkLnJlYWRfdGV4dCgpIGlmIHJlY2VpdmVkLmlz X2ZpbGUoKSBlbHNlIE5vbmUKKysgICAgaWYgcmVjZWl2ZXIucmV0dXJuY29kZSAhPSAwIG9yIHJl Y2VpdmVkX2NvbnRlbnQgIT0gKAorKyAgICAgICAgJ2NyZWF0ZWQgYmVuZWF0aCB3cml0ZS1zZWFy Y2gtb25seSBkZXN0aW5hdGlvblxuJworKyAgICApOgorKyAgICAgICAgZmFpbHVyZXMuYXBwZW5k KAorKyAgICAgICAgICAgICdrbm93bi1maWxlIGNyZWF0aW9uIGJlbmVhdGggbW9kZSAwMzMzIGRl c3RpbmF0aW9uIGZhaWxlZDogJworKyAgICAgICAgICAgIGYncmM9e3JlY2VpdmVyLnJldHVybmNv ZGV9LCBzdGRlcnI9e3JlY2VpdmVyLnN0ZGVyci5zdHJpcCgpIXJ9LCAnCisrICAgICAgICAgICAg Zidjb250ZW50PXtyZWNlaXZlZF9jb250ZW50IXJ9JworKyAgICAgICAgKQorKworKyAgICAjIFBy b3RvY29sIDI5IHJlamVjdHMgdGhpcyBuZXN0ZWQgLVIgc2hhcGUgYmVmb3JlIHRoZSByZXNvbHZl ciBpcyByZWFjaGVkLgorKyAgICBwcm90byA9IGZvcmNlZF9wcm90b2NvbCgpCisrICAgIGlmIHBy b3RvIGlzIE5vbmUgb3IgcHJvdG8gPj0gMzA6CisrICAgICAgICBuZXN0ZWRfcmVjZWl2ZXIgPSBz dWJwcm9jZXNzLnJ1bigKKysgICAgICAgICAgICBsYXVuY2hlciArIHJzeW5jX2FyZ3YoCisrICAg ICAgICAgICAgICAgICctdFInLCAnLS1uby1pbXBsaWVkLWRpcnMnLCAnbmVzdGVkL2tub3duJywg Zid7bmVzdGVkX2Rlc3R9LycsCisrICAgICAgICAgICAgKSwKKysgICAgICAgICAgICBjd2Q9c3Jj LAorKyAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisrICAgICAgICAgICAgc3Rk ZXJyPXN1YnByb2Nlc3MuUElQRSwKKysgICAgICAgICAgICB0ZXh0PVRydWUsCisrICAgICAgICAp CisrICAgICAgICBuZXN0ZWRfcmVjZWl2ZWQgPSBuZXN0ZWRfcGFyZW50IC8gJ2tub3duJworKyAg ICAgICAgbmVzdGVkX2NvbnRlbnQgPSAoCisrICAgICAgICAgICAgbmVzdGVkX3JlY2VpdmVkLnJl YWRfdGV4dCgpIGlmIG5lc3RlZF9yZWNlaXZlZC5pc19maWxlKCkgZWxzZSBOb25lCisrICAgICAg ICApCisrICAgICAgICBpZiBuZXN0ZWRfcmVjZWl2ZXIucmV0dXJuY29kZSAhPSAwIG9yIG5lc3Rl ZF9jb250ZW50ICE9ICgKKysgICAgICAgICAgICAnY3JlYXRlZCBiZW5lYXRoIG5lc3RlZCB3cml0 ZS1zZWFyY2gtb25seSBwYXJlbnRcbicKKysgICAgICAgICk6CisrICAgICAgICAgICAgZmFpbHVy ZXMuYXBwZW5kKAorKyAgICAgICAgICAgICAgICAna25vd24tZmlsZSBjcmVhdGlvbiBiZW5lYXRo IG5lc3RlZCBtb2RlIDAzMzMgZGVzdGluYXRpb24gJworKyAgICAgICAgICAgICAgICBmJ2ZhaWxl ZDogcmM9e25lc3RlZF9yZWNlaXZlci5yZXR1cm5jb2RlfSwgJworKyAgICAgICAgICAgICAgICBm J3N0ZGVycj17bmVzdGVkX3JlY2VpdmVyLnN0ZGVyci5zdHJpcCgpIXJ9LCAnCisrICAgICAgICAg ICAgICAgIGYnY29udGVudD17bmVzdGVkX2NvbnRlbnQhcn0nCisrICAgICAgICAgICAgKQorK2Zp bmFsbHk6CisrICAgIHhvbmx5LmNobW9kKDBvNzU1KQorKyAgICB3cml0ZV9vbmx5X2Rlc3QuY2ht b2QoMG83NTUpCisrICAgIG5lc3RlZF9wYXJlbnQuY2htb2QoMG83NTUpCisrICAgIGZvciBkZXN0 IGluIChleGFjdF9kZXN0LCB0cmVlX2Rlc3QpOgorKyAgICAgICAgY29waWVkX3hvbmx5ID0gZGVz dCAvICd4b25seScKKysgICAgICAgIGlmIGNvcGllZF94b25seS5pc19kaXIoKToKKysgICAgICAg ICAgICBjb3BpZWRfeG9ubHkuY2htb2QoMG83NTUpCisrICAgIGlmIGV4dGVybmFsX2Jhc2U6Cisr ICAgICAgICBybXRyZWUoYmFzZSkKKysKKytpZiBmYWlsdXJlczoKKysgICAgdGVzdF9mYWlsKCdc bicuam9pbihmYWlsdXJlcykpCgpkaWZmIC0tZ2l0IGEvcnN5bmMuc3BlYyBiL3JzeW5jLnNwZWMK aW5kZXggYTAzYjM2Yy4uOTg4MWEwYSAxMDA2NDQKLS0tIGEvcnN5bmMuc3BlYworKysgYi9yc3lu Yy5zcGVjCkBAIC0zLDcgKzMsNyBAQAogU3VtbWFyeTogQSBwcm9ncmFtIGZvciBzeW5jaHJvbml6 aW5nIGZpbGVzIG92ZXIgYSBuZXR3b3JrCiBOYW1lOiByc3luYwogVmVyc2lvbjogMy41LjAKLVJl bGVhc2U6IDElez9kaXN0fQorUmVsZWFzZTogMiV7P2Rpc3R9CiBVUkw6IGh0dHBzOi8vcnN5bmMu c2FtYmEub3JnLwogCiBTb3VyY2UwOiBodHRwczovL2Rvd25sb2FkLnNhbWJhLm9yZy9wdWIvcnN5 bmMvc3JjL3JzeW5jLSV7dmVyc2lvbn0lez9wcmVyZWxlYXNlfS50YXIuZ3oKQEAgLTM4LDYgKzM4 LDEyIEBAIFByb3ZpZGVzOiBidW5kbGVkKHpsaWIpID0gMS4yLjgKICNtZW50aW9uZWQgaGVyZSBh cyB3ZWxsLgogTGljZW5zZTogR1BMLTMuMC1vci1sYXRlcgogCisjIFRoaXMgaXMgYSByZWdyZXNz aW9uIHRoYXQgZGVuaWVzIHJzeW5jIHVzZXIgYWNjZXNzIHRvIGxlZ2l0IHBhdGhzIGxpa2UKKyMg L3Zhci9ydW4vIG9yIC92YXIvbG9nLworIyBodHRwczovL2dpdGh1Yi5jb20vc3lzZmNlMi9yc3lu Yy9jb21taXQvM2IxZWI4ZGQKKyMgaHR0cHM6Ly9naXRodWIuY29tL3N5c2ZjZTIvcnN5bmMvY29t bWl0LzI0MGJkOWRmCitQYXRjaDE6IHJzeW5jLTMuNS4wLW9fcGF0aC1kaXItdHJhdmVyc2FsLnBh dGNoCisKICVkZXNjcmlwdGlvbgogUnN5bmMgdXNlcyBhIHJlbGlhYmxlIGFsZ29yaXRobSB0byBi cmluZyByZW1vdGUgYW5kIGhvc3QgZmlsZXMgaW50bwogc3luYyB2ZXJ5IHF1aWNrbHkuIFJzeW5j IGlzIGZhc3QgYmVjYXVzZSBpdCBqdXN0IHNlbmRzIHRoZSBkaWZmZXJlbmNlcwpAQCAtMTI5LDYg KzEzNSw5IEBAIGluc3RhbGwgLUQgLW02NDQgJXtTT1VSQ0U2fSAkUlBNX0JVSUxEX1JPT1QvJXtf dW5pdGRpcn0vcnN5bmNkQC5zZXJ2aWNlCiAlc3lzdGVtZF9wb3N0dW5fd2l0aF9yZXN0YXJ0IHJz eW5jZC5zZXJ2aWNlCiAKICVjaGFuZ2Vsb2cKKyogVHVlIFNlcCAwOCAyMDI2IE1pY2hhbCBSdXBy aWNoIDxtcnVwcmljaEByZWRoYXQuY29tPiAtIDMuNS4wLTIKKy0gRml4aW5nIGEgcGF0aCB0cmF2 ZXJzYWwgcmVncmVzc2lvbgorCiAqIFR1ZSBBdWcgMTggMjAyNiBNaWNoYWwgUnVwcmljaCA8bXJ1 cHJpY2hAcmVkaGF0LmNvbT4gLSAzLjUuMC0xCiAtIE5ldyB2ZXJzaW9uIDMuNS4wCiAK